From 2e7f0ce55736bdb0079e4e386a1a8b041f9da9f7 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Wed, 25 Sep 2019 12:40:55 -0400 Subject: [PATCH] Print user defined options in meson-log.txt It can be useful to know what options have been passed to the command line, excluding default values. Closes: #5956 --- mesonbuild/coredata.py | 14 ++++++++++++++ mesonbuild/msetup.py | 1 + 2 files changed, 15 insertions(+) diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 579637779..0a541ccd3 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -31,6 +31,7 @@ from typing import ( ) import typing import enum +import shlex if typing.TYPE_CHECKING: from . import dependencies @@ -776,6 +777,9 @@ def get_cmd_line_file(build_dir): def read_cmd_line_file(build_dir, options): filename = get_cmd_line_file(build_dir) + if not os.path.isfile(filename): + return + config = CmdLineFileParser() config.read(filename) @@ -816,6 +820,16 @@ def update_cmd_line_file(build_dir, options): with open(filename, 'w') as f: config.write(f) +def get_cmd_line_options(build_dir, options): + copy = argparse.Namespace(**vars(options)) + read_cmd_line_file(build_dir, copy) + cmdline = ['-D{}={}'.format(k, v) for k, v in copy.cmd_line_options.items()] + if options.cross_file: + cmdline += ['--cross-file {}'.format(f) for f in options.cross_file] + if options.native_file: + cmdline += ['--native-file {}'.format(f) for f in options.native_file] + return ' '.join([shlex.quote(x) for x in cmdline]) + def major_versions_differ(v1, v2): return v1.split('.')[0:2] != v2.split('.')[0:2] diff --git a/mesonbuild/msetup.py b/mesonbuild/msetup.py index 13df6ea6d..e06a803b2 100644 --- a/mesonbuild/msetup.py +++ b/mesonbuild/msetup.py @@ -161,6 +161,7 @@ class MesonApp: def _generate(self, env): mlog.debug('Build started at', datetime.datetime.now().isoformat()) mlog.debug('Main binary:', sys.executable) + mlog.debug('Build Options:', coredata.get_cmd_line_options(self.build_dir, self.options)) mlog.debug('Python system:', platform.system()) mlog.log(mlog.bold('The Meson build system')) mlog.log('Version:', coredata.version)