diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2018-06-22 13:51:53 +0100 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-06-30 13:28:15 +0000 |
commit | 9efdcfbb8d49286e08b7bbb50afd59f7f3d93f4a (patch) | |
tree | 7ebac4dc62700da6a533ad22264fbd7edabcd508 /mesonbuild/interpreter.py | |
parent | af546b52ca0281a595f4395425905c68ff0d21c2 (diff) | |
download | meson-9efdcfbb8d49286e08b7bbb50afd59f7f3d93f4a.zip meson-9efdcfbb8d49286e08b7bbb50afd59f7f3d93f4a.tar.gz meson-9efdcfbb8d49286e08b7bbb50afd59f7f3d93f4a.tar.bz2 |
Fix handling of dependency('', fallback: ['subproject', 'dep'])
Also extend a test case to cover this.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index bf4a1e6..f0e7106 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2811,10 +2811,9 @@ external dependencies (including libraries) must go to "dependencies".''') mlog.log('Dependency', mlog.bold(name), 'skipped: feature', mlog.bold(feature), 'disabled') return DependencyHolder(NotFoundDependency(self.environment)) - if name == '': - if required: - raise InvalidArguments('Dependency is both required and not-found') - return DependencyHolder(NotFoundDependency(self.environment)) + # writing just "dependency('')" is an error, because it can only fail + if name == '' and required and 'fallback' not in kwargs: + raise InvalidArguments('Dependency is both required and not-found') if '<' in name or '>' in name or '=' in name: raise InvalidArguments('Characters <, > and = are forbidden in dependency names. To specify' @@ -2840,14 +2839,15 @@ external dependencies (including libraries) must go to "dependencies".''') exception = None dep = NotFoundDependency(self.environment) - # Search for it outside the project - if self.coredata.wrap_mode != WrapMode.forcefallback or 'fallback' not in kwargs: + # 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) + # ... search for it outside the project + elif name != '': try: dep = dependencies.find_external_dependency(name, self.environment, kwargs) except DependencyException as e: exception = e - else: - exception = DependencyException("fallback for %s not found" % name) # Search inside the projects list if not dep.found(): |