diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2021-04-19 13:47:32 -0400 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-04-26 17:04:57 +0100 |
commit | 3af39a463b6d6314136bc944022a99c22bd31b04 (patch) | |
tree | 8c6902f7c39404aa913bf317280a3d8680c2375e /mesonbuild/interpreter/interpreter.py | |
parent | b6d277c140c7cbec3349bf5bd5986fc79f804e42 (diff) | |
download | meson-3af39a463b6d6314136bc944022a99c22bd31b04.zip meson-3af39a463b6d6314136bc944022a99c22bd31b04.tar.gz meson-3af39a463b6d6314136bc944022a99c22bd31b04.tar.bz2 |
Interpreter: Fallback when required is false but forcefallback is true
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index d17d7f0..143147d 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1598,6 +1598,11 @@ external dependencies (including libraries) must go to "dependencies".''') if not isinstance(allow_fallback, bool): raise InvalidArguments('"allow_fallback" argument must be boolean') + wrap_mode = self.coredata.get_option(OptionKey('wrap_mode')) + force_fallback_for = self.coredata.get_option(OptionKey('force_fallback_for')) + force_fallback |= (wrap_mode == WrapMode.forcefallback or + name in force_fallback_for) + # If "fallback" is absent, look for an implicit fallback. if name and fallback is None and allow_fallback is not False: # Add an implicit fallback if we have a wrap file or a directory with the same name, @@ -1609,7 +1614,8 @@ external dependencies (including libraries) must go to "dependencies".''') if not provider and allow_fallback is True: raise InvalidArguments('Fallback wrap or subproject not found for dependency \'%s\'' % name) subp_name = mesonlib.listify(provider)[0] - if provider and (allow_fallback is True or required or self.get_subproject(subp_name)): + force_fallback |= subp_name in force_fallback_for + if provider and (allow_fallback is True or required or self.get_subproject(subp_name) or force_fallback): fallback = provider if 'default_options' in kwargs and not fallback: @@ -1640,13 +1646,7 @@ external dependencies (including libraries) must go to "dependencies".''') subp_name, varname = self.get_subproject_infos(fallback) if self.get_subproject(subp_name): return self.get_subproject_dep(name, display_name, subp_name, varname, kwargs) - - wrap_mode = self.coredata.get_option(OptionKey('wrap_mode')) - force_fallback_for = self.coredata.get_option(OptionKey('force_fallback_for')) - force_fallback = (force_fallback or - wrap_mode == WrapMode.forcefallback or - name in force_fallback_for or - subp_name in force_fallback_for) + force_fallback |= subp_name in force_fallback_for if name != '' and (not fallback or not force_fallback): self._handle_featurenew_dependencies(name) |