aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2017-03-25 01:59:24 +0530
committerJussi Pakkanen <jpakkane@gmail.com>2017-03-27 22:02:06 +0300
commit98e71e1e65ed2992c06dfa41169a73f0b44df2cf (patch)
treeed50733055c2e90d2e6014fedb9d42d316cc7341
parent905dbd5cd2204621e4b8e422d8351538151f2e2c (diff)
downloadmeson-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.py10
-rw-r--r--test cases/common/95 dep fallback/meson.build4
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')