diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2021-06-17 14:41:55 -0400 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2021-06-18 12:47:41 -0400 |
commit | 5f3b73beb594b837e7b817b570c0a722c9cc2f63 (patch) | |
tree | 72714cbc8ad9c4562b85e695a8681c57a5a7165d | |
parent | d729ea3f6936dd7ea68a41cf178ee6a9afcf0ddd (diff) | |
download | meson-5f3b73beb594b837e7b817b570c0a722c9cc2f63.zip meson-5f3b73beb594b837e7b817b570c0a722c9cc2f63.tar.gz meson-5f3b73beb594b837e7b817b570c0a722c9cc2f63.tar.bz2 |
dependency: Empty fallback is the same as allow_fallback: false
5 files changed, 22 insertions, 0 deletions
diff --git a/docs/markdown/Reference-manual.md b/docs/markdown/Reference-manual.md index 18f30b3..fec4e74 100644 --- a/docs/markdown/Reference-manual.md +++ b/docs/markdown/Reference-manual.md @@ -515,6 +515,8 @@ This function supports the following keyword arguments: in this case the subproject must use `meson.override_dependency('dependency_name', subproj_dep)` to specify the dependency object used in the superproject. + If the value is an empty list, it has the same effect as + `allow_fallback: false`. - `language` *(since 0.42.0)*: defines what language-specific dependency to find if it's available for multiple languages. - `method`: defines the way the dependency is detected, the default is diff --git a/mesonbuild/interpreter/dependencyfallbacks.py b/mesonbuild/interpreter/dependencyfallbacks.py index 6edb129..5b78d20 100644 --- a/mesonbuild/interpreter/dependencyfallbacks.py +++ b/mesonbuild/interpreter/dependencyfallbacks.py @@ -47,6 +47,10 @@ class DependencyFallbacksHolder(InterpreterObject): location=self.interpreter.current_node) return fbinfo = stringlistify(fbinfo) + if len(fbinfo) == 0: + # dependency('foo', fallback: []) is the same as dependency('foo', allow_fallback: false) + self.allow_fallback = False + return if len(fbinfo) == 1: FeatureNew.single_use('Fallback without variable name', '0.53.0', self.subproject) subp_name, varname = fbinfo[0], None diff --git a/test cases/failing/115 empty fallback/meson.build b/test cases/failing/115 empty fallback/meson.build new file mode 100644 index 0000000..f4eb5fe --- /dev/null +++ b/test cases/failing/115 empty fallback/meson.build @@ -0,0 +1,6 @@ +project('empty fallback') + +# There is a subproject named 'foo' that overrides that dependency, +# but `fallback: []` should not allow to use it. Same behaviour than with +# `allow_fallback: false` +dependency('foo', fallback: []) diff --git a/test cases/failing/115 empty fallback/subprojects/foo/meson.build b/test cases/failing/115 empty fallback/subprojects/foo/meson.build new file mode 100644 index 0000000..c9e134b --- /dev/null +++ b/test cases/failing/115 empty fallback/subprojects/foo/meson.build @@ -0,0 +1,3 @@ +project('foo') + +meson.override_dependency('foo', declare_dependency()) diff --git a/test cases/failing/115 empty fallback/test.json b/test cases/failing/115 empty fallback/test.json new file mode 100644 index 0000000..dcfde45 --- /dev/null +++ b/test cases/failing/115 empty fallback/test.json @@ -0,0 +1,7 @@ +{ + "stdout": [ + { + "line": "test cases/failing/115 empty fallback/meson.build:6:0: ERROR: Dependency \"foo\" not found, tried pkgconfig and cmake" + } + ] +} |