diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2020-10-08 12:05:51 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2020-10-08 12:24:07 +0200 |
commit | 726b82205492a9e1f2dfd0fba96b237b51eeb428 (patch) | |
tree | df49508fe8547d69b232e90fa2cf6fc17dcc8b2b /test cases/failing | |
parent | 1eec5cf41f905c988af4be003a03d29fca7baef4 (diff) | |
download | meson-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.build | 2 | ||||
-rw-r--r-- | test cases/failing/110 no fallback/subprojects/foob/meson.build | 2 | ||||
-rw-r--r-- | test cases/failing/110 no fallback/test.json | 8 |
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 .*)" + } + ] +} |