ref: 66fff6c1150bc6ab4b5175b68ee12e376db11286
parent: f55630c5e9397c94d3f0e683c6eeb2c89fd6d490
author: Paul Brossier <piem@piem.org>
date: Mon May 6 18:36:51 EDT 2019
[py] use universal_newlines=True to prevent decoding errors (see gh-247 gh-248)
--- a/python/lib/gen_external.py
+++ b/python/lib/gen_external.py
@@ -120,23 +120,24 @@
print("Running command: {:s}".format(" ".join(cpp_cmd)))
proc = subprocess.Popen(cpp_cmd,
stderr=subprocess.PIPE,
- stdout=subprocess.PIPE)
+ stdout=subprocess.PIPE,
+ universal_newlines=True)
assert proc, 'Proc was none'
cpp_output = proc.stdout.read()
err_output = proc.stderr.read()
if err_output:
print("Warning: preprocessor produced errors or warnings:\n%s" \
- % err_output.decode('utf8'))
+ % err_output)
if not cpp_output:
raise_msg = "preprocessor output is empty! Running command " \
+ "\"%s\" failed" % " ".join(cpp_cmd)
if err_output:
- raise_msg += " with stderr: \"%s\"" % err_output.decode('utf8')
+ raise_msg += " with stderr: \"%s\"" % err_output
else:
raise_msg += " with no stdout or stderr"
raise Exception(raise_msg)
if not isinstance(cpp_output, list):
- cpp_output = [l.strip() for l in cpp_output.decode('utf8').split('\n')]
+ cpp_output = [l.strip() for l in cpp_output.split('\n')]
return cpp_output