aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2016-07-28 21:45:45 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2016-07-28 21:45:47 +0530
commit1459d186432e88e96d4fc959fa2ac36b756d82c9 (patch)
tree575c35f1e2da00b81ee8ea988aec92ae4d7d0b2c
parentbaf8481c4f8835b9c9bdaa6e82946ee123127394 (diff)
downloadmeson-1459d186432e88e96d4fc959fa2ac36b756d82c9.zip
meson-1459d186432e88e96d4fc959fa2ac36b756d82c9.tar.gz
meson-1459d186432e88e96d4fc959fa2ac36b756d82c9.tar.bz2
dependency: Better errors when fallbacks are not found
Otherwise the message is very cryptic and no one can figure out what Meson actually wants
-rw-r--r--mesonbuild/interpreter.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 51c40c9..72eebe7 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1683,20 +1683,26 @@ class Interpreter():
dep = dependencies.find_external_dependency(name, self.environment, kwargs)
except dependencies.DependencyException:
if 'fallback' in kwargs:
- dep = self.dependency_fallback(kwargs)
+ dep = self.dependency_fallback(name, kwargs)
self.coredata.deps[identifier] = dep.held_object
return dep
raise
self.coredata.deps[identifier] = dep
return DependencyHolder(dep)
- def dependency_fallback(self, kwargs):
+ def dependency_fallback(self, name, kwargs):
fbinfo = kwargs['fallback']
check_stringlist(fbinfo)
if len(fbinfo) != 2:
raise InterpreterException('Fallback info must have exactly two items.')
dirname, varname = fbinfo
- self.do_subproject(dirname, {})
+ try:
+ self.do_subproject(dirname, {})
+ except:
+ mlog.log('Also couldn\'t find a fallback subproject in',
+ mlog.bold(os.path.join(self.subproject_dir, dirname)),
+ 'for the dependency', mlog.bold(name))
+ raise
dep = self.subprojects[dirname].get_variable_method([varname], {})
# Check if the version of the declared dependency matches what we want
if 'version' in kwargs:
@@ -1705,6 +1711,9 @@ class Interpreter():
if found == 'undefined' or not mesonlib.version_compare(found, wanted):
m = 'Subproject "{0}" dependency "{1}" version is "{2}" but "{3}" is required.'
raise InterpreterException(m.format(dirname, varname, found, wanted))
+ mlog.log('Found a', mlog.green('fallback'), 'subproject',
+ mlog.bold(os.path.join(self.subproject_dir, dirname)), 'for',
+ mlog.bold(name))
return dep
def func_executable(self, node, args, kwargs):