--- matplotlib-2.2.4/setupext.py.orig 2019-02-26 05:07:47.000000000 +0300 +++ matplotlib-2.2.4/setupext.py 2019-02-28 11:16:25.082326600 +0300 @@ -57,6 +57,8 @@ PY3min = (sys.version_info[0] >= 3) +MSYS = "MSYSTEM" in os.environ + def _get_xdg_cache_dir(): """ @@ -186,9 +188,17 @@ LOCAL_FREETYPE_VERSION = '2.6.1' LOCAL_FREETYPE_HASH = _freetype_hashes.get(LOCAL_FREETYPE_VERSION, 'unknown') -if sys.platform != 'win32': +if sys.platform != 'win32' or MSYS: if not PY3min: from commands import getstatusoutput + def getstatusoutput(cmd): + """Return (status, output) of executing cmd in a shell.""" + pipe = os.popen(cmd, 'r') + text = pipe.read() + sts = pipe.close() + if sts is None: sts = 0 + if text[-1:] == '\n': text = text[:-1] + return sts, text else: from subprocess import getstatusoutput @@ -266,10 +276,11 @@ Returns `True` if `filename` can be found in one of the directories in `include_dirs`. """ - if sys.platform == 'win32': + if sys.platform == 'win32' and not MSYS: include_dirs = list(include_dirs) # copy before modify include_dirs += os.environ.get('INCLUDE', '.').split(os.pathsep) for dir in include_dirs: + dir = os.popen(' '.join(['cygpath', '-w', dir])).readline().strip() if os.path.exists(os.path.join(dir, filename)): return True return False @@ -396,6 +407,7 @@ """ ext = DelayedExtension(name, files, *args, **kwargs) for dir in get_base_dirs(): + dir = os.popen(' '.join(['cygpath', '-w', dir])).readline().strip() include_dir = os.path.join(dir, 'include') if os.path.exists(include_dir): ext.include_dirs.append(include_dir) @@ -427,7 +439,7 @@ """ Determines whether pkg-config exists on this machine. """ - if sys.platform == 'win32': + if sys.platform == 'win32' and not MSYS: self.has_pkgconfig = False else: try: @@ -436,7 +448,7 @@ self.pkg_config = 'pkg-config' self.set_pkgconfig_path() - status, output = getstatusoutput(self.pkg_config + " --help") + status, output = getstatusoutput('sh -c "' + self.pkg_config + ' --help"') self.has_pkgconfig = (status == 0) if not self.has_pkgconfig: print("IMPORTANT WARNING:") @@ -477,7 +489,7 @@ command = "{0} --libs --cflags ".format(executable) try: - output = check_output(command, shell=True, + output = check_output('sh -c "%s"' % command, shell=True, stderr=subprocess.STDOUT) except subprocess.CalledProcessError: pass @@ -487,11 +499,16 @@ for token in output.split(): attr = flag_map.get(token[:2]) if attr is not None: - getattr(ext, attr).insert(0, token[2:]) + if attr.endswith('dirs'): + dir = os.popen(' '.join(['cygpath', '-w', token[2:]])).readline().strip() + getattr(ext, attr).insert(0, dir) + else: + getattr(ext, attr).insert(0, token[2:]) if use_defaults: basedirs = get_base_dirs() for base in basedirs: + base = os.popen(' '.join(['cygpath', '-w', base])).readline().strip() for include in default_include_dirs: dir = os.path.join(base, include) if os.path.exists(dir): @@ -513,7 +530,7 @@ return None status, output = getstatusoutput( - self.pkg_config + " %s --modversion" % (package)) + 'sh -c "' + self.pkg_config + ' %s --modversion"' % (package)) if status == 0: return output return None @@ -1165,14 +1182,14 @@ if options.get('local_freetype'): return "Using local version for testing" - if sys.platform == 'win32': + if sys.platform == 'win32' and not MSYS: try: check_include_file(get_include_dirs(), 'ft2build.h', 'freetype') except CheckFailed: check_include_file(get_include_dirs(), os.path.join('freetype2', 'ft2build.h'), 'freetype') return 'Using unknown version found on system.' - status, output = getstatusoutput("freetype-config --ftversion") + status, output = getstatusoutput('sh -c "freetype-config --ftversion"') if status == 0: version = output else: @@ -1197,6 +1214,8 @@ return version # Return the first version found in the include dirs. for include_dir in ext.include_dirs: + include_dir = os.popen(' '.join(['cygpath', '-w', include_dir])).readline().st + rip() header_fname = os.path.join(include_dir, 'freetype.h') if os.path.exists(header_fname): major, minor, patch = 0, 0, 0 @@ -1369,11 +1388,11 @@ } def check(self): - if sys.platform == 'win32': + if sys.platform == 'win32' and not MSYS: check_include_file(get_include_dirs(), 'png.h', 'png') return 'Using unknown version found on system.' - status, output = getstatusoutput("libpng-config --version") + status, output = getstatusoutput('sh -c "libpng-config --version"') if status == 0: version = output else: @@ -1631,7 +1650,7 @@ return ext def add_flags(self, ext): - if sys.platform == 'win32': + if sys.platform == 'win32' and not MSYS: def getoutput(s): ret = os.popen(s).read().strip() return ret @@ -1686,7 +1705,7 @@ 'm' in ext.libraries): ext.libraries.remove('m') - elif sys.platform != 'win32': + elif sys.platform != 'win32' or MSYS: pkg_config.setup_extension(ext, 'pygtk-2.0') pkg_config.setup_extension(ext, 'gtk+-2.0') @@ -2101,7 +2120,7 @@ def check(self): try: - output = check_output('dvipng -version', shell=True, + output = check_output('sh -c "dvipng -version"', shell=True, stderr=subprocess.STDOUT) return "version %s" % output.splitlines()[1].decode().split()[-1] except (IndexError, ValueError, subprocess.CalledProcessError): @@ -2113,14 +2132,14 @@ optional = True def check(self): - if sys.platform == 'win32': + if sys.platform == 'win32' and not MSYS: # mgs is the name in miktex gs_execs = ['gswin32c', 'gswin64c', 'mgs', 'gs'] else: gs_execs = ['gs'] for gs_exec in gs_execs: try: - command = gs_exec + ' --version' + command = 'sh -c "%s --version"' % gs_exec output = check_output(command, shell=True, stderr=subprocess.STDOUT) return "version %s" % output.decode()[:-1] @@ -2136,7 +2155,7 @@ def check(self): try: - output = check_output('latex -version', shell=True, + output = check_output('sh -c "latex -version"', shell=True, stderr=subprocess.STDOUT) line = output.splitlines()[0].decode() pattern = r'(3\.1\d+)|(MiKTeX \d+.\d+)' @@ -2152,7 +2171,7 @@ def check(self): try: - output = check_output('pdftops -v', shell=True, + output = check_output('sh -c "pdftops -v"', shell=True, stderr=subprocess.STDOUT) for line in output.splitlines(): line = line.decode()