diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index f0e71061f..c469ec60d 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2841,7 +2841,7 @@ external dependencies (including libraries) must go to "dependencies".''') # Unless a fallback exists and is forced ... if self.coredata.wrap_mode == WrapMode.forcefallback and 'fallback' in kwargs: - exception = DependencyException("fallback for %s not found" % name) + pass # ... search for it outside the project elif name != '': try: @@ -2852,6 +2852,8 @@ external dependencies (including libraries) must go to "dependencies".''') # Search inside the projects list if not dep.found(): if 'fallback' in kwargs: + if not exception: + exception = DependencyException("fallback for %s not found" % display_name) fallback_dep = self.dependency_fallback(name, kwargs) if fallback_dep: # Never add fallback deps to self.coredata.deps since we diff --git a/test cases/common/171 not-found dependency/meson.build b/test cases/common/171 not-found dependency/meson.build index c1e3a9a99..02072b6a0 100644 --- a/test cases/common/171 not-found dependency/meson.build +++ b/test cases/common/171 not-found dependency/meson.build @@ -11,3 +11,4 @@ library('testlib', 'testlib.c', dependencies: [dep]) subdir('sub', if_found: dep) subdep = dependency('', fallback: ['trivial', 'trivial_dep']) +missing = dependency('', fallback: ['missing', 'missing_dep'], required: false) diff --git a/test cases/failing/80 subproj dependency not-found and required/meson.build b/test cases/failing/80 subproj dependency not-found and required/meson.build new file mode 100644 index 000000000..c5a296104 --- /dev/null +++ b/test cases/failing/80 subproj dependency not-found and required/meson.build @@ -0,0 +1,2 @@ +project('dep-test') +missing = dependency('', fallback: ['missing', 'missing_dep'], required: true)