diff options
author | Mathieu Duponchelle <mathieu@centricular.com> | 2020-06-02 23:29:33 +0200 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2020-06-16 13:45:40 -0400 |
commit | 20709af4d2a2f7f4ece3ecd3a9c65da3075be891 (patch) | |
tree | 6049dc6e0d08d558330885dbb2d773cc7a27fd83 /mesonbuild/interpreter.py | |
parent | f40e1567f5b38000b47bfbdf307f843c07645f19 (diff) | |
download | meson-20709af4d2a2f7f4ece3ecd3a9c65da3075be891.zip meson-20709af4d2a2f7f4ece3ecd3a9c65da3075be891.tar.gz meson-20709af4d2a2f7f4ece3ecd3a9c65da3075be891.tar.bz2 |
interpreter: add support for --force-fallback-for
This new command line option allows specifying dependencies for
which to force fallback.
See the documentation for more information
Fixes: #7218
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 76dbebd..bfbb189 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -3568,7 +3568,8 @@ external dependencies (including libraries) must go to "dependencies".''') return self.get_subproject_dep(name, display_name, dirname, varname, kwargs) wrap_mode = self.coredata.get_builtin_option('wrap_mode') - forcefallback = wrap_mode == WrapMode.forcefallback and has_fallback + force_fallback_for = self.coredata.get_builtin_option('force_fallback_for') + forcefallback = (wrap_mode == WrapMode.forcefallback or name in force_fallback_for) and has_fallback if name != '' and not forcefallback: self._handle_featurenew_dependencies(name) kwargs['required'] = required and not has_fallback @@ -3622,7 +3623,13 @@ external dependencies (including libraries) must go to "dependencies".''') def dependency_fallback(self, name, display_name, kwargs): required = kwargs.get('required', True) - if self.coredata.get_builtin_option('wrap_mode') == WrapMode.nofallback: + + # Explicitly listed fallback preferences for specific subprojects + # take precedence over wrap-mode + if name in self.coredata.get_builtin_option('force_fallback_for'): + mlog.log('Looking for a fallback subproject for the dependency', + mlog.bold(display_name), 'because:\nUse of fallback was forced for that specific subproject') + elif self.coredata.get_builtin_option('wrap_mode') == WrapMode.nofallback: mlog.log('Not looking for a fallback subproject for the dependency', mlog.bold(display_name), 'because:\nUse of fallback ' 'dependencies is disabled.') |