aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-12-29 18:04:02 -0500
committerXavier Claessens <xclaesse@gmail.com>2019-01-16 11:16:46 -0500
commit1cd393c6e2c5a6a96c9ca83294342d790ef64616 (patch)
treeec092323aa49c8cc1c01bdb228633921771d5bcd
parent2867371f1ae85d58ab661ca80bb406213d11a50c (diff)
downloadmeson-1cd393c6e2c5a6a96c9ca83294342d790ef64616.zip
meson-1cd393c6e2c5a6a96c9ca83294342d790ef64616.tar.gz
meson-1cd393c6e2c5a6a96c9ca83294342d790ef64616.tar.bz2
dependency_fallback: Set 'required' in subproject's kwargs
This makes error clearer because it stops exactly where the error occurs during the subproject configuration.
-rw-r--r--mesonbuild/interpreter.py27
1 files changed, 11 insertions, 16 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 28f627f..dda1514 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2994,7 +2994,6 @@ external dependencies (including libraries) must go to "dependencies".''')
return self.get_subproject_dep(display_name, dirname, varname, kwargs)
# We need to actually search for this dep
- exception = None
dep = NotFoundDependency(self.environment)
# Unless a fallback exists and is forced ...
@@ -3005,25 +3004,18 @@ external dependencies (including libraries) must go to "dependencies".''')
self._handle_featurenew_dependencies(name)
try:
dep = dependencies.find_external_dependency(name, self.environment, kwargs)
- except DependencyException as e:
- exception = e
+ except DependencyException:
+ pass
# 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(display_name, kwargs)
- if fallback_dep:
- # Never add fallback deps to self.coredata.deps since we
- # cannot cache them. They must always be evaluated else
- # we won't actually read all the build files.
- return fallback_dep
- if required:
- assert(exception is not None)
- raise exception
+ return self.dependency_fallback(display_name, kwargs)
# Only store found-deps in the cache
+ # Never add fallback deps to self.coredata.deps since we
+ # cannot cache them. They must always be evaluated else
+ # we won't actually read all the build files.
if dep.found():
self.coredata.deps[identifier] = dep
return DependencyHolder(dep, self.subproject)
@@ -3063,7 +3055,7 @@ external dependencies (including libraries) must go to "dependencies".''')
mlog.log('Not looking for a fallback subproject for the dependency',
mlog.bold(display_name), 'because:\nUse of fallback'
'dependencies is disabled.')
- return None
+ return self.notfound_dependency()
elif self.coredata.get_builtin_option('wrap_mode') == WrapMode.forcefallback:
mlog.log('Looking for a fallback subproject for the dependency',
mlog.bold(display_name), 'because:\nUse of fallback dependencies is forced.')
@@ -3071,7 +3063,10 @@ external dependencies (including libraries) must go to "dependencies".''')
mlog.log('Looking for a fallback subproject for the dependency',
mlog.bold(display_name))
dirname, varname = self.get_subproject_infos(kwargs)
- sp_kwargs = {'default_options': kwargs.get('default_options', [])}
+ sp_kwargs = {
+ 'default_options': kwargs.get('default_options', []),
+ 'required': kwargs.get('required', True),
+ }
self.do_subproject(dirname, sp_kwargs)
return self.get_subproject_dep(display_name, dirname, varname, kwargs)