aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-10-20 11:55:32 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-10-20 12:04:15 +0200
commit892c8ebe652938c196eeb635143fa5617126ef06 (patch)
treec5cabf581c049d6714cd7510940158a73ec002d5
parent66e1e1747e00ec060cfb6fff2adf3d3257102541 (diff)
downloadmeson-892c8ebe652938c196eeb635143fa5617126ef06.zip
meson-892c8ebe652938c196eeb635143fa5617126ef06.tar.gz
meson-892c8ebe652938c196eeb635143fa5617126ef06.tar.bz2
run_project_tests: Added print_tool_versions()
-rwxr-xr-xrun_project_tests.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/run_project_tests.py b/run_project_tests.py
index 4bfab0c0..ca0779c 100755
--- a/run_project_tests.py
+++ b/run_project_tests.py
@@ -867,6 +867,38 @@ def detect_system_compiler():
raise RuntimeError("Could not find C compiler.")
print()
+def print_tool_versions():
+ tools = [
+ {
+ 'tool': 'cmake',
+ 'args': ['--version'],
+ 'regex': re.compile(r'^cmake version ([0-9]+(\.[0-9]+)*)$'),
+ 'match_group': 1,
+ },
+ ]
+
+ def get_version(t: dict) -> str:
+ exe = shutil.which(t['tool'])
+ if not exe:
+ return 'not found'
+
+ args = [t['tool']] + t['args']
+ pc, o, e = Popen_safe(args)
+ if pc.returncode != 0:
+ return '{} (invalid {} executable)'.format(exe, t['tool'])
+ for i in o.split('\n'):
+ i = i.strip('\n\r\t ')
+ m = t['regex'].match(i)
+ if m is not None:
+ return '{} ({})'.format(exe, m.group(t['match_group']))
+
+ return '{} (unknown)'.format(exe)
+
+ max_width = max([len(x['tool']) for x in tools] + [7])
+ for tool in tools:
+ print('{0:<{2}}: {1}'.format(tool['tool'], get_version(tool), max_width))
+ print()
+
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Run the test suite of Meson.")
parser.add_argument('extra_args', nargs='*',
@@ -882,6 +914,7 @@ if __name__ == '__main__':
setup_commands(options.backend)
detect_system_compiler()
+ print_tool_versions()
script_dir = os.path.split(__file__)[0]
if script_dir != '':
os.chdir(script_dir)