diff --git a/mesonbuild/options.py b/mesonbuild/options.py index 0ada8432c842..3ed0c7eb659f 100644 --- a/mesonbuild/options.py +++ b/mesonbuild/options.py @@ -909,12 +909,10 @@ def add_system_option_internal(self, key: OptionKey, valobj: AnyOptionType) -> N if key.subproject: proj_key = key.evolve(subproject=None) self.add_system_option_internal(proj_key, valobj) - if pval is not None: - self.augments[key] = pval else: self.options[key] = valobj - if pval is not None: - self.set_option(key, pval) + if pval is not None: + self.set_option(key, pval) def add_compiler_option(self, language: str, key: T.Union[OptionKey, str], valobj: AnyOptionType) -> None: key = self.ensure_and_validate_key(key) diff --git a/unittests/optiontests.py b/unittests/optiontests.py index 8f49a804e59d..7273ecf47f04 100644 --- a/unittests/optiontests.py +++ b/unittests/optiontests.py @@ -474,3 +474,21 @@ def test_deprecated_nonstring_value(self): optstore.set_option(OptionKey(name), True) value = optstore.get_value(name) self.assertEqual(value, '1') + + def test_pending_augment_validation(self): + name = 'b_lto' + subproject = 'mysubproject' + + optstore = OptionStore(False) + prefix = UserStringOption('prefix', 'This is needed by OptionStore', '/usr') + optstore.add_system_option('prefix', prefix) + + optstore.initialize_from_top_level_project_call({}, {}, {}) + optstore.initialize_from_subproject_call(subproject, {}, {OptionKey(name): 'true'}, {}, {}) + + bo = UserBooleanOption(name, 'LTO', False) + key = OptionKey(name, subproject=subproject) + optstore.add_system_option(key, bo) + stored_value = optstore.get_value_for(key) + self.assertIsInstance(stored_value, bool) + self.assertTrue(stored_value)