aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/build.py9
-rw-r--r--mesonbuild/interpreter.py4
2 files changed, 10 insertions, 3 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 4123195..50abd52 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -533,7 +533,14 @@ class BuildTarget():
self.external_deps.append(dep)
self.process_sourcelist(dep.get_sources())
else:
- raise InvalidArguments('Argument is not an external dependency')
+ # This is a bit of a hack. We do not want Build to know anything
+ # about the interpreter so we can't import it and use isinstance.
+ # This should be reliable enough.
+ if hasattr(dep, 'subproject'):
+ raise InvalidArguments('''Tried to use subproject object as a dependency.
+You probably wanted to use a dependency declared in it instead. Access it
+by calling get_variable() on the subproject object.''')
+ raise InvalidArguments('Argument is not an external dependency.')
def get_external_deps(self):
return self.external_deps
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index ad381b6..a1ff257 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -567,7 +567,7 @@ class SubprojectHolder(InterpreterObject):
def __init__(self, subinterpreter):
super().__init__()
- self.subinterpreter = subinterpreter
+ self.held_object = subinterpreter
self.methods.update({'get_variable' : self.get_variable_method,
})
@@ -577,7 +577,7 @@ class SubprojectHolder(InterpreterObject):
varname = args[0]
if not isinstance(varname, str):
raise InterpreterException('Get_variable takes a string argument.')
- return self.subinterpreter.variables[varname]
+ return self.held_object.variables[varname]
class CompilerHolder(InterpreterObject):
def __init__(self, compiler, env):