From d0f620364f3470e2030606f280d5724e5ef8bdb1 Mon Sep 17 00:00:00 2001 From: Hemmo Nieminen Date: Wed, 17 Jan 2018 23:53:56 +0200 Subject: Fix a stack trace caused by subproject.get_variable('non-existing'). --- mesonbuild/interpreter.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'mesonbuild/interpreter.py') 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', -- cgit v1.1