prepare_binding_Python: print readable errors if SWIG fails

When swig fails, all the errors are squished onto one line with \n
quoting. It's very hard to read. This will print them out in a more
reasonable format.

Patch by: Lawrence D'Anna

Differential revision: https://reviews.llvm.org/D67790

llvm-svn: 372442
This commit is contained in:
Jonas Devlieghere 2019-09-20 23:41:32 +00:00
parent e021d69094
commit 7d6a95cf83
1 changed files with 6 additions and 4 deletions

View File

@ -231,11 +231,13 @@ def do_swig_rebuild(options, dependency_file, config_build_dir, settings):
swig_stdout, swig_stderr = process.communicate()
return_code = process.returncode
if return_code != 0:
swig_stdout = swig_stdout.decode('utf8', errors='replace').rstrip()
swig_stderr = swig_stderr.decode('utf8', errors='replace').rstrip()
swig_stdout = re.sub(r'^(?=.)', 'stdout: ', swig_stdout, flags=re.MULTILINE)
swig_stderr = re.sub(r'^(?=.)', 'stderr: ', swig_stderr, flags=re.MULTILINE)
logging.error(
"swig failed with error code %d: stdout=%s, stderr=%s",
return_code,
swig_stdout,
swig_stderr)
"swig failed with error code %d\n%s%s",
return_code, swig_stdout, swig_stderr)
logging.error(
"command line:\n%s", ' '.join(command))
sys.exit(return_code)