aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-06-17 14:41:55 -0400
committerXavier Claessens <xclaesse@gmail.com>2021-06-18 12:47:41 -0400
commit5f3b73beb594b837e7b817b570c0a722c9cc2f63 (patch)
tree72714cbc8ad9c4562b85e695a8681c57a5a7165d
parentd729ea3f6936dd7ea68a41cf178ee6a9afcf0ddd (diff)
downloadmeson-5f3b73beb594b837e7b817b570c0a722c9cc2f63.zip
meson-5f3b73beb594b837e7b817b570c0a722c9cc2f63.tar.gz
meson-5f3b73beb594b837e7b817b570c0a722c9cc2f63.tar.bz2
dependency: Empty fallback is the same as allow_fallback: false
-rw-r--r--docs/markdown/Reference-manual.md2
-rw-r--r--mesonbuild/interpreter/dependencyfallbacks.py4
-rw-r--r--test cases/failing/115 empty fallback/meson.build6
-rw-r--r--test cases/failing/115 empty fallback/subprojects/foo/meson.build3
-rw-r--r--test cases/failing/115 empty fallback/test.json7
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"
+ }
+ ]
+}