aboutsummaryrefslogtreecommitdiff
path: root/test cases/failing
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-10-08 12:05:51 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2020-10-08 12:24:07 +0200
commit726b82205492a9e1f2dfd0fba96b237b51eeb428 (patch)
treedf49508fe8547d69b232e90fa2cf6fc17dcc8b2b /test cases/failing
parent1eec5cf41f905c988af4be003a03d29fca7baef4 (diff)
downloadmeson-726b82205492a9e1f2dfd0fba96b237b51eeb428.zip
meson-726b82205492a9e1f2dfd0fba96b237b51eeb428.tar.gz
meson-726b82205492a9e1f2dfd0fba96b237b51eeb428.tar.bz2
dependency: support boolean argument "allow_fallback"
Sometimes, distros want to configure a project so that it does not use any bundled library. In this case, meson.build might want to do something like this, where slirp is a combo option with values auto/system/internal: slirp = dependency('', required: false) if get_option('slirp') != 'internal' slirp = dependency('slirp', required: get_option('slirp') == 'system') endif if not slirp.found() slirp = subproject('libslirp', ...) .variable('...') endif and we cannot use "fallback" because the "system" value should never look for a subproject. This worked until 0.54.x, but in 0.55.x this breaks because of the automatic subproject search. Note that the desired effect here is backwards compared to the policy of doing an automatic search on "required: true"; we only want to do the search if "required" is false! It would be possible to look for the dependency with `required: false` and issue the error manually, but it's ugly and it may produce an error message that looks "different" from Meson's. Instead, with this change it is possible to achieve this effect in an even simpler way: slirp = dependency('slirp', required: get_option('slirp') != 'auto', allow_fallback: get_option('slirp') == 'system' ? false : ['slirp', 'libslirp_dep']) The patch also adds support for "allow_fallback: true", which is simple and enables automatic fallback to a wrap even for non-required dependencies.
Diffstat (limited to 'test cases/failing')
-rw-r--r--test cases/failing/110 no fallback/meson.build2
-rw-r--r--test cases/failing/110 no fallback/subprojects/foob/meson.build2
-rw-r--r--test cases/failing/110 no fallback/test.json8
3 files changed, 12 insertions, 0 deletions
diff --git a/test cases/failing/110 no fallback/meson.build b/test cases/failing/110 no fallback/meson.build
new file mode 100644
index 0000000..0101bb8
--- /dev/null
+++ b/test cases/failing/110 no fallback/meson.build
@@ -0,0 +1,2 @@
+project('no fallback', 'c')
+foob_dep = dependency('foob', allow_fallback: false, required: true)
diff --git a/test cases/failing/110 no fallback/subprojects/foob/meson.build b/test cases/failing/110 no fallback/subprojects/foob/meson.build
new file mode 100644
index 0000000..b2c4814
--- /dev/null
+++ b/test cases/failing/110 no fallback/subprojects/foob/meson.build
@@ -0,0 +1,2 @@
+project('foob', 'c')
+meson.override_dependency('foob', declare_dependency())
diff --git a/test cases/failing/110 no fallback/test.json b/test cases/failing/110 no fallback/test.json
new file mode 100644
index 0000000..e034061
--- /dev/null
+++ b/test cases/failing/110 no fallback/test.json
@@ -0,0 +1,8 @@
+{
+ "stdout": [
+ {
+ "match": "re",
+ "line": ".*/meson\\.build:2:0: ERROR: (Pkg-config binary for machine MachineChoice\\.HOST not found\\. Giving up\\.|Dependency \"foob\" not found, tried .*)"
+ }
+ ]
+}