aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-01-08 23:35:59 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-01-09 21:23:18 +0200
commit6ac9a8e738dae97c64308da83949931fb726bbe7 (patch)
tree17d4a5db37d2df3c3748ec767701f74882fa912e /mesonbuild/interpreter.py
parentfbabe8ad85725762e46b7c4c2f2c680c3351ec80 (diff)
downloadmeson-6ac9a8e738dae97c64308da83949931fb726bbe7.zip
meson-6ac9a8e738dae97c64308da83949931fb726bbe7.tar.gz
meson-6ac9a8e738dae97c64308da83949931fb726bbe7.tar.bz2
Add .find_python() method. Supersedes #777.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 29a5772..c736cd0 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1013,11 +1013,12 @@ class ModuleHolder(InterpreterObject):
state.target_machine = self.interpreter.builtin['target_machine'].held_object
if self.held_object.is_snippet(method_name):
value = fn(self.interpreter, state, args, kwargs)
+ return self.interpreter.holderify(value)
else:
value = fn(state, args, kwargs)
if num_targets != len(self.interpreter.build.targets):
raise InterpreterException('Extension module altered internal state illegally.')
- return self.interpreter.module_method_callback(value)
+ return self.interpreter.module_method_callback(value)
class MesonMain(InterpreterObject):
def __init__(self, build, interpreter):
@@ -1275,8 +1276,11 @@ class Interpreter(InterpreterBase):
return DataHolder(item)
elif isinstance(item, dependencies.InternalDependency):
return InternalDependencyHolder(item)
+ elif isinstance(item, dependencies.ExternalProgram):
+ return ExternalProgramHolder(item)
+ elif hasattr(item, 'held_object'):
+ return item
else:
- print(item)
raise InterpreterException('Module returned a value of unknown type.')
def process_new_values(self, invalues):
@@ -1293,6 +1297,8 @@ class Interpreter(InterpreterBase):
self.build.install_scripts.append(v)
elif isinstance(v, build.Data):
self.build.data.append(v)
+ elif isinstance(v, dependencies.ExternalProgram):
+ return ExternalProgramHolder(v)
elif isinstance(v, dependencies.InternalDependency):
# FIXME: This is special cased and not ideal:
# The first source is our new VapiTarget, the rest are deps
@@ -1304,7 +1310,6 @@ class Interpreter(InterpreterBase):
def module_method_callback(self, return_object):
if not isinstance(return_object, ModuleReturnValue):
- print(return_object)
assert(False)
raise InterpreterException('Bug in module, it returned an invalid object')
invalues = return_object.new_objects