summaryrefslogtreecommitdiff
path: root/giscanner/dumper.py
diff options
context:
space:
mode:
authorРуслан Ижбулатов <lrn1986@gmail.com>2014-02-21 11:16:35 +0000
committerColin Walters <walters@verbum.org>2014-02-22 18:21:03 -0500
commitc82933bb6622eb816d87c2a1b2ab0ba273ee419c (patch)
tree9259b6b9dc55c74eb620590221c217b560eb89fc /giscanner/dumper.py
parent798712445a121ec409da67b10aff3fcc99698aec (diff)
downloadgobject-introspection-c82933bb6622eb816d87c2a1b2ab0ba273ee419c.tar.gz
scanner: Support running under MSYS
https://bugzilla.gnome.org/show_bug.cgi?id=724880
Diffstat (limited to 'giscanner/dumper.py')
-rw-r--r--giscanner/dumper.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/giscanner/dumper.py b/giscanner/dumper.py
index b415dd13..a63440e3 100644
--- a/giscanner/dumper.py
+++ b/giscanner/dumper.py
@@ -295,10 +295,25 @@ class DumpCompiler(object):
print "g-ir-scanner: link: %s" % (
subprocess.list2cmdline(args), )
sys.stdout.flush()
+ msys = os.environ.get('MSYSTEM', None)
+ if msys:
+ shell = os.environ.get('SHELL', 'sh.exe')
+ # Create a temporary script file that
+ # runs the command we want
+ tf, tf_name = tempfile.mkstemp()
+ f = os.fdopen(tf, 'wb')
+ fcontents = '#!/bin/sh\nunset PWD\n{}\n'.format(' '.join ([x.replace ('\\','/') for x in args]))
+ f.write(fcontents)
+ f.close()
+ shell = utils.which(shell)
+ args = [shell, tf_name.replace('\\','/')]
try:
subprocess.check_call(args)
except subprocess.CalledProcessError as e:
raise LinkerError(e)
+ finally:
+ if msys:
+ os.remove(tf_name)
def _add_link_internal_args(self, args, libtool):
# An "internal" link is where the library to be introspected