From ad368cfc07b1bac1aa00e51038e749040cc2dea0 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Wed, 11 Sep 2019 11:42:24 +0100 Subject: modules/python: improve log when probing Python binary If the Python binary that we find doesn't return valid JSON when asked to run a small script, show the command being ran and stdout/stderr in meson-log.txt. Fixes: #5914 --- mesonbuild/modules/python.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'mesonbuild/modules/python.py') diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py index 3a221f8a4..fc9ec9b85 100644 --- a/mesonbuild/modules/python.py +++ b/mesonbuild/modules/python.py @@ -41,14 +41,6 @@ mod_kwargs = set(['subdir']) mod_kwargs.update(known_shmod_kwargs) mod_kwargs -= set(['name_prefix', 'name_suffix']) - -def run_command(python, command): - cmd = python.get_command() + ['-c', command] - _, stdout, _ = mesonlib.Popen_safe(cmd) - - return stdout.strip() - - class PythonDependency(ExternalDependency): def __init__(self, python_holder, environment, kwargs): @@ -568,9 +560,16 @@ class PythonModule(ExtensionModule): else: # Sanity check, we expect to have something that at least quacks in tune try: - info = json.loads(run_command(python, INTROSPECT_COMMAND)) + cmd = python.get_command() + ['-c', INTROSPECT_COMMAND] + p, stdout, stderr = mesonlib.Popen_safe(cmd) + info = json.loads(stdout) except json.JSONDecodeError: info = None + mlog.debug('Could not introspect Python (%s): exit code %d' % (str(p.args), p.returncode)) + mlog.debug('Program stdout:\n') + mlog.debug(stdout) + mlog.debug('Program stderr:\n') + mlog.debug(stderr) if isinstance(info, dict) and 'version' in info and self._check_version(name_or_path, info['version']): res = PythonInstallation(interpreter, python, info) -- cgit v1.2.3