summaryrefslogtreecommitdiff
path: root/mesonbuild/options.py
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-05-15 19:14:44 +0200
committerEli Schwartz <eschwartz93@gmail.com>2025-05-23 13:55:44 -0400
commit82fca502e131007f21d849f6a51064a92ac5b9ba (patch)
tree8e0e02ca377194546a2adfbea11870da16a25e98 /mesonbuild/options.py
parentcf3e5fe4c389d5ea7b8448b94f009157404c192c (diff)
downloadmeson-82fca502e131007f21d849f6a51064a92ac5b9ba.tar.gz
options: process project options before machine options
Restore the behavior from before commit d37d649b0 ("Make all Meson level options overridable per subproject.", 2025-02-13). The old code was: options: T.MutableMapping[OptionKey, T.Any] = OrderedDict() # process project default options for k, v in default_options.items(): if not subproject or k.subproject == subproject: options[k] = v # override them with machine default and command line options options.update(env.options) env.options = options Fixes: #14608 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/options.py')
-rw-r--r--mesonbuild/options.py30
1 files changed, 15 insertions, 15 deletions
diff --git a/mesonbuild/options.py b/mesonbuild/options.py
index ac90b2292..cd7d2eb6d 100644
--- a/mesonbuild/options.py
+++ b/mesonbuild/options.py
@@ -1289,21 +1289,6 @@ class OptionStore:
(project_default_options, cmd_line_options, machine_file_options) = self.first_handle_prefix(project_default_options_in,
cmd_line_options_in,
machine_file_options_in)
- for key, valstr in machine_file_options.items():
- # Due to backwards compatibility we ignore all build-machine options
- # when building natively.
- if not self.is_cross and key.is_for_build():
- continue
- if key.subproject:
- self.augments[key] = valstr
- elif key in self.options:
- self.set_option(key, valstr, first_invocation)
- else:
- proj_key = key.as_root()
- if proj_key in self.options:
- self.set_option(proj_key, valstr, first_invocation)
- else:
- self.pending_options[key] = valstr
for keystr, valstr in project_default_options.items():
# Ths is complicated by the fact that a string can have two meanings:
#
@@ -1338,6 +1323,21 @@ class OptionStore:
self.set_option(proj_key, valstr)
else:
self.pending_options[key] = valstr
+ for key, valstr in machine_file_options.items():
+ # Due to backwards compatibility we ignore all build-machine options
+ # when building natively.
+ if not self.is_cross and key.is_for_build():
+ continue
+ if key.subproject:
+ self.augments[key] = valstr
+ elif key in self.options:
+ self.set_option(key, valstr, first_invocation)
+ else:
+ proj_key = key.as_root()
+ if proj_key in self.options:
+ self.set_option(proj_key, valstr, first_invocation)
+ else:
+ self.pending_options[key] = valstr
for keystr, valstr in cmd_line_options.items():
if isinstance(keystr, str):
key = OptionKey.from_string(keystr)