diff options
author | Ilia Mirkin <imirkin@alum.mit.edu> | 2018-01-13 13:23:05 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-01-14 14:07:55 +0200 |
commit | d8967054d14efad045a9f2ea26b2fe77acab7e5b (patch) | |
tree | 4d3cee9a02311e5f7f124fe0152b4cc646f38a71 | |
parent | a5b2b90309ec765ea5a2cd50ee6f12361f2d25f5 (diff) | |
download | meson-d8967054d14efad045a9f2ea26b2fe77acab7e5b.zip meson-d8967054d14efad045a9f2ea26b2fe77acab7e5b.tar.gz meson-d8967054d14efad045a9f2ea26b2fe77acab7e5b.tar.bz2 |
Avoid worrying about encodings when capturing child program output
The output may be a binary data stream, not subject to any locale
encoding. This avoids any encoding errors that might arise as a result.
Also fixes github issue #2868.
-rw-r--r-- | mesonbuild/scripts/meson_exe.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/mesonbuild/scripts/meson_exe.py b/mesonbuild/scripts/meson_exe.py index 643e1af..c43702e 100644 --- a/mesonbuild/scripts/meson_exe.py +++ b/mesonbuild/scripts/meson_exe.py @@ -17,8 +17,7 @@ import sys import argparse import pickle import platform - -from ..mesonlib import Popen_safe +import subprocess options = None @@ -56,12 +55,17 @@ def run_exe(exe): if len(exe.extra_paths) > 0: child_env['PATH'] = (os.pathsep.join(exe.extra_paths + ['']) + child_env['PATH']) - p, stdout, stderr = Popen_safe(cmd + exe.cmd_args, env=child_env, cwd=exe.workdir) + + p = subprocess.Popen(cmd + exe.cmd_args, env=child_env, cwd=exe.workdir, + close_fds=False, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + stdout, stderr = p.communicate() if exe.capture and p.returncode == 0: - with open(exe.capture, 'w') as output: + with open(exe.capture, 'wb') as output: output.write(stdout) if stderr: - sys.stderr.write(stderr) + sys.stderr.buffer.write(stderr) return p.returncode def run(args): |