aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorHemmo Nieminen <hemmo.nieminen@iki.fi>2018-01-17 23:53:56 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2018-02-13 21:29:32 +0200
commitd0f620364f3470e2030606f280d5724e5ef8bdb1 (patch)
treeb81e3fdbcd2ed51fac7b79f6683ae749d8645b15 /mesonbuild/interpreter.py
parentca4cbab004b9ce5ad10a2f73583de040368859bb (diff)
downloadmeson-d0f620364f3470e2030606f280d5724e5ef8bdb1.zip
meson-d0f620364f3470e2030606f280d5724e5ef8bdb1.tar.gz
meson-d0f620364f3470e2030606f280d5724e5ef8bdb1.tar.bz2
Fix a stack trace caused by subproject.get_variable('non-existing').
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index b838f28..38aca75 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -683,6 +683,8 @@ class SubprojectHolder(InterpreterObject, ObjectHolder):
varname = args[0]
if not isinstance(varname, str):
raise InterpreterException('Get_variable takes a string argument.')
+ if varname not in self.held_object.variables:
+ raise InvalidArguments('Requested variable "{0}" not found.'.format(varname))
return self.held_object.variables[varname]
class CompilerHolder(InterpreterObject):
@@ -1579,6 +1581,8 @@ class Interpreter(InterpreterBase):
self.build.cross_stdlibs[l] = subproj.get_variable_method([depname], {})
except KeyError:
pass
+ except InvalidArguments:
+ pass
@stringArgs
@noKwargs
@@ -2198,10 +2202,10 @@ to directly access options of other subprojects.''')
def get_subproject_dep(self, name, dirname, varname, required):
try:
dep = self.subprojects[dirname].get_variable_method([varname], {})
- except KeyError:
+ except InvalidArguments as e:
if required:
- raise DependencyException('Could not find dependency {} in subproject {}'
- ''.format(varname, dirname))
+ raise DependencyException('Could not find dependency {} in subproject {}; {}'
+ ''.format(varname, dirname, str(e)))
# If the dependency is not required, don't raise an exception
subproj_path = os.path.join(self.subproject_dir, dirname)
mlog.log('Dependency', mlog.bold(name), 'from subproject',