diff options
author | Thibault Saunier <thibault.saunier@osg.samsung.com> | 2016-10-04 09:45:41 -0300 |
---|---|---|
committer | Thibault Saunier <thibault.saunier@osg.samsung.com> | 2016-10-14 11:25:15 +0200 |
commit | 7e2390f3558d05b3168dc57f2c2fe923b8ed12af (patch) | |
tree | 25acfbcc33da8afa60654b433c1fd04d13fcbec7 /mesonbuild/interpreter.py | |
parent | b6b8d561b84eb950d1503e682ca2eab3b656efa9 (diff) | |
download | meson-7e2390f3558d05b3168dc57f2c2fe923b8ed12af.zip meson-7e2390f3558d05b3168dc57f2c2fe923b8ed12af.tar.gz meson-7e2390f3558d05b3168dc57f2c2fe923b8ed12af.tar.bz2 |
interpreter: Add a type_name method to DependencyHolder
And remove the InternalDependencyHolder class.
In some cases we need to know the type of dependency we are
dealing with. For example in GStreamer if the dependency
is not an internal one, then we need to get some env var
from pkg-config to know where to find some plugins necessary
to run some tests.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index e486ee9..2a7ad6e 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -278,27 +278,21 @@ class DependencyHolder(InterpreterObject): InterpreterObject.__init__(self) self.held_object = dep self.methods.update({'found' : self.found_method, + 'type_name': self.type_name_method, 'version': self.version_method}) + def type_name_method(self, args, kwargs): + return self.held_object.type_name + def found_method(self, args, kwargs): + if self.held_object.type_name == 'internal': + return True + return self.held_object.found() def version_method(self, args, kwargs): return self.held_object.get_version() -class InternalDependencyHolder(InterpreterObject): - def __init__(self, dep): - InterpreterObject.__init__(self) - self.held_object = dep - self.methods.update({'found' : self.found_method, - 'version': self.version_method, - }) - - def found_method(self, args, kwargs): - return True - - def version_method(self, args, kwargs): - return self.held_object.get_version() class ExternalProgramHolder(InterpreterObject): def __init__(self, ep): @@ -1394,7 +1388,7 @@ class Interpreter(): raise InterpreterException('Dependencies must be external deps') final_deps.append(d) dep = dependencies.InternalDependency(version, incs, compile_args, link_args, libs, sources, final_deps) - return InternalDependencyHolder(dep) + return DependencyHolder(dep) @noKwargs def func_assert(self, node, args, kwargs): @@ -1873,7 +1867,7 @@ class Interpreter(): dep = self.subprojects[dirname].get_variable_method([varname], {}) except KeyError: raise InterpreterException('Fallback variable {!r} in the subproject {!r} does not exist'.format(varname, dirname)) - if not isinstance(dep, (DependencyHolder, InternalDependencyHolder)): + if not isinstance(dep, DependencyHolder): raise InterpreterException('Fallback variable {!r} in the subproject {!r} is not a dependency object.'.format(varname, dirname)) # Check if the version of the declared dependency matches what we want if 'version' in kwargs: |