diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-08-05 10:54:10 -0700 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-10-20 15:15:53 -0700 |
| commit | 8981317fdb765c58cbda079d3f3b2bd090ae7845 (patch) | |
| tree | 3979f3a19bc2309fe7a12a4f67c99637354ebe6a /mesonbuild | |
| parent | e005e9a459f3847a9d30861ec0a5f5653b4df0e4 (diff) | |
| download | meson-8981317fdb765c58cbda079d3f3b2bd090ae7845.tar.gz | |
dependencyfallbacks: move required/disabled check to interpreter
The lookup code only has two callers. One of them is an internal caller
that never sets the `required` key, and the other is the interpreter.
Moving this code to the interpreter allows us to simplify the common
code, especially the types.
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/interpreter/dependencyfallbacks.py | 8 | ||||
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 14 |
2 files changed, 15 insertions, 7 deletions
diff --git a/mesonbuild/interpreter/dependencyfallbacks.py b/mesonbuild/interpreter/dependencyfallbacks.py index c9b762b0c..4d9721ea2 100644 --- a/mesonbuild/interpreter/dependencyfallbacks.py +++ b/mesonbuild/interpreter/dependencyfallbacks.py @@ -4,7 +4,6 @@ from __future__ import annotations -from .interpreterobjects import extract_required_kwarg from .. import mlog from .. import dependencies from .. import build @@ -311,14 +310,11 @@ class DependencyFallbacksHolder(MesonInterpreterObject): return candidates def lookup(self, kwargs: TYPE_nkwargs, force_fallback: bool = False) -> Dependency: - mods = T.cast('T.List[str]', kwargs.get('modules', [])) + mods = kwargs.get('modules', []) if mods: self._display_name += ' (modules: {})'.format(', '.join(str(i) for i in mods)) - disabled, required, feature = extract_required_kwarg(kwargs, self.subproject) - if disabled: - mlog.log('Dependency', mlog.bold(self._display_name), 'skipped: feature', mlog.bold(feature), 'disabled') - return self._notfound_dependency() + required = kwargs.get('required', True) # Check if usage of the subproject fallback is forced wrap_mode = WrapMode.from_string(self.coredata.optstore.get_value_for(OptionKey('wrap_mode'))) diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 43433d591..2c21a1720 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1774,8 +1774,20 @@ class Interpreter(InterpreterBase, HoldableObject): df = DependencyFallbacksHolder(self, names, kwargs['allow_fallback'], default_options) df.set_fallback(kwargs['fallback']) not_found_message = kwargs['not_found_message'] + + disabled, required, feature = extract_required_kwarg(kwargs, self.subproject) + if disabled: + name = names[0] + if kwargs['modules']: + name = name + '(modules: {})'.format(', '.join(kwargs['modules'])) + mlog.log('Dependency', mlog.bold(name), 'skipped: feature', mlog.bold(feature), 'disabled') + return dependencies.NotFoundDependency(names[0], self.environment) + + nkwargs = T.cast('dependencies.base.DependencyObjectKWs', kwargs.copy()) + nkwargs['required'] = required # to replace a possible UserFeatureOption with a bool + try: - d = df.lookup(kwargs) + d = df.lookup(nkwargs) except Exception: if not_found_message: self.message_impl([not_found_message]) |
