From df18c1ac98580a554ccc7652e6d19aab35ae9891 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sat, 16 Sep 2017 18:05:49 +0300 Subject: Do not use universal newlines on old Python versions. --- mesonbuild/mesonlib.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index d03e5a2..81708fc 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -14,6 +14,7 @@ """A library of random helper functionality.""" +import sys import stat import time import platform, subprocess, operator, os, shutil, re @@ -509,6 +510,8 @@ def expand_arguments(args): return expended_args def Popen_safe(args, write=None, stderr=subprocess.PIPE, **kwargs): + if sys.version_info < (3, 6) or not sys.stdout.encoding: + return Popen_safe_legacy(args, write=write, stderr=stderr, **kwargs) p = subprocess.Popen(args, universal_newlines=True, close_fds=False, stdout=subprocess.PIPE, @@ -516,6 +519,25 @@ def Popen_safe(args, write=None, stderr=subprocess.PIPE, **kwargs): o, e = p.communicate(write) return p, o, e +def Popen_safe_legacy(args, write=None, stderr=subprocess.PIPE, **kwargs): + p = subprocess.Popen(args, universal_newlines=False, + stdout=subprocess.PIPE, + stderr=stderr, **kwargs) + if write is not None: + write = write.encode('utf-8') + o, e = p.communicate(write) + if o is not None: + if sys.stdout.encoding: + o = o.decode(encoding=sys.stdout.encoding, errors='replace').replace('\r\n', '\n') + else: + o = o.decode(errors='replace').replace('\r\n', '\n') + if e is not None: + if sys.stderr.encoding: + e = e.decode(encoding=sys.stderr.encoding, errors='replace').replace('\r\n', '\n') + else: + e = e.decode(errors='replace').replace('\r\n', '\n') + return p, o, e + def commonpath(paths): ''' For use on Python 3.4 where os.path.commonpath is not available. -- cgit v1.1 From 288ccb2c5812c091ae49833aacaddeb1278e291e Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sun, 17 Sep 2017 21:24:22 +0300 Subject: Run VS2010 tests in a German locale to catch codepage errors. --- .appveyor.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.appveyor.yml b/.appveyor.yml index ac69dd4..60a6fd3 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -49,6 +49,14 @@ branches: only: - master +init: + - ps: | + If($Env:compiler -like 'msvc2010') { + Set-WinSystemLocale de-DE + Start-Sleep -s 5 + Restart-Computer + } + install: - cmd: set "ORIG_PATH=%PATH%" # Boost 1.56.0: https://www.appveyor.com/docs/build-environment/#boost -- cgit v1.1