diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-09-07 21:25:34 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-09-07 21:25:34 +0300 |
commit | 165f8a913d25cd0cc35639811235f19e15ad08ec (patch) | |
tree | f9bdd007a1f873576f558a85e5f40b46f09b7fd5 | |
parent | 69433025ca8523838dbe55d0c20ea28cbc51cc23 (diff) | |
download | meson-165f8a913d25cd0cc35639811235f19e15ad08ec.zip meson-165f8a913d25cd0cc35639811235f19e15ad08ec.tar.gz meson-165f8a913d25cd0cc35639811235f19e15ad08ec.tar.bz2 |
Better error message when trying to use subprojects as dependencies.
-rw-r--r-- | mesonbuild/build.py | 9 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 4 |
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): |