diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-03-25 01:59:24 +0530 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-03-27 22:02:06 +0300 |
commit | 98e71e1e65ed2992c06dfa41169a73f0b44df2cf (patch) | |
tree | ed50733055c2e90d2e6014fedb9d42d316cc7341 | |
parent | 905dbd5cd2204621e4b8e422d8351538151f2e2c (diff) | |
download | meson-98e71e1e65ed2992c06dfa41169a73f0b44df2cf.zip meson-98e71e1e65ed2992c06dfa41169a73f0b44df2cf.tar.gz meson-98e71e1e65ed2992c06dfa41169a73f0b44df2cf.tar.bz2 |
Allow not-required not-found dependencies in subprojects
Closes https://github.com/mesonbuild/meson/issues/1474
-rw-r--r-- | mesonbuild/interpreter.py | 10 | ||||
-rw-r--r-- | test cases/common/95 dep fallback/meson.build | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index cd5db62..4ee0485 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1938,8 +1938,14 @@ class Interpreter(InterpreterBase): try: dep = self.subprojects[dirname].get_variable_method([varname], {}) except KeyError: - raise InvalidCode('Fallback variable {!r} in the subproject ' - '{!r} does not exist'.format(varname, dirname)) + if kwargs.get('required', True): + m = 'Fallback variable {!r} in the subproject {!r} does not exist' + raise DependencyException(m.format(varname, dirname)) + # If the dependency is not required, don't raise an exception + mlog.log('Also couldn\'t find the dependency', mlog.bold(name), + 'in the fallback subproject', + mlog.bold(os.path.join(self.subproject_dir, dirname))) + return None if not isinstance(dep, DependencyHolder): raise InvalidCode('Fallback variable {!r} in the subproject {!r} is ' 'not a dependency object.'.format(varname, dirname)) diff --git a/test cases/common/95 dep fallback/meson.build b/test cases/common/95 dep fallback/meson.build index 9358d29..a96520e 100644 --- a/test cases/common/95 dep fallback/meson.build +++ b/test cases/common/95 dep fallback/meson.build @@ -5,7 +5,11 @@ bob = dependency('boblib', fallback : ['boblib', 'bob_dep'], required: false, if not bob.found() error('Bob is actually needed') endif +# boblib subproject exists, but sita_dep doesn't exist +sita = dependency('sitalib', fallback : ['boblib', 'sita_dep'], required: false) +# jimmylib subproject doesn't exist jimmy = dependency('jimmylib', fallback : ['jimmylib', 'jimmy_dep'], required: false) +# dummylib subproject fails to configure dummy = dependency('dummylib', fallback : ['dummylib', 'dummy_dep'], required: false) gensrc_py = find_program('gensrc.py') |