aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorThibault Saunier <thibault.saunier@osg.samsung.com>2016-10-04 09:45:41 -0300
committerThibault Saunier <thibault.saunier@osg.samsung.com>2016-10-14 11:25:15 +0200
commit7e2390f3558d05b3168dc57f2c2fe923b8ed12af (patch)
tree25acfbcc33da8afa60654b433c1fd04d13fcbec7 /mesonbuild/interpreter.py
parentb6b8d561b84eb950d1503e682ca2eab3b656efa9 (diff)
downloadmeson-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.py24
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: