aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2018-01-06 15:33:07 -0800
committerJussi Pakkanen <jpakkane@gmail.com>2018-04-17 23:33:31 +0300
commit92487ea33db9d882929d755308853d2ed82abd0d (patch)
tree0272fa81d53e2f08b72e70e906bdc4d0df65f23e /mesonbuild/interpreter.py
parent1952ef5ae13376084dc277de38ff3a6dafb8e595 (diff)
downloadmeson-92487ea33db9d882929d755308853d2ed82abd0d.zip
meson-92487ea33db9d882929d755308853d2ed82abd0d.tar.gz
meson-92487ea33db9d882929d755308853d2ed82abd0d.tar.bz2
Add partial_dependency method to dependencies
This adds a new method, partial_dependency to all dependencies. These sub dependencies are copies of the original dependency, but with one or more of the attributes replaced with an empty list. This allows creating a sub dependency that has only cflags or drops link_arguments, for example.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 4e4ba5c..c7841a8 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -275,6 +275,7 @@ class DependencyHolder(InterpreterObject, ObjectHolder):
'version': self.version_method,
'get_pkgconfig_variable': self.pkgconfig_method,
'get_configtool_variable': self.configtool_method,
+ 'partial_dependency': self.partial_dependency_method,
})
def type_name_method(self, args, kwargs):
@@ -306,12 +307,18 @@ class DependencyHolder(InterpreterObject, ObjectHolder):
raise InterpreterException('Variable name must be a string.')
return self.held_object.get_configtool_variable(varname)
+ def partial_dependency_method(self, args, kwargs):
+ if args:
+ raise InterpreterException('partial_dependency takes no positional arguments')
+ return DependencyHolder(self.held_object.get_partial_dependency(**kwargs))
+
class InternalDependencyHolder(InterpreterObject, ObjectHolder):
def __init__(self, dep):
InterpreterObject.__init__(self)
ObjectHolder.__init__(self, dep)
self.methods.update({'found': self.found_method,
'version': self.version_method,
+ 'partial_dependency': self.partial_dependency_method,
})
def found_method(self, args, kwargs):
@@ -320,6 +327,11 @@ class InternalDependencyHolder(InterpreterObject, ObjectHolder):
def version_method(self, args, kwargs):
return self.held_object.get_version()
+ def partial_dependency_method(self, args, kwargs):
+ if args:
+ raise InterpreterException('get_partial_dependency takes no positional arguments')
+ return DependencyHolder(self.held_object.get_partial_dependency(**kwargs))
+
class ExternalProgramHolder(InterpreterObject, ObjectHolder):
def __init__(self, ep):
InterpreterObject.__init__(self)
@@ -346,7 +358,9 @@ class ExternalLibraryHolder(InterpreterObject, ObjectHolder):
def __init__(self, el):
InterpreterObject.__init__(self)
ObjectHolder.__init__(self, el)
- self.methods.update({'found': self.found_method})
+ self.methods.update({'found': self.found_method,
+ 'partial_dependency': self.partial_dependency_method,
+ })
def found(self):
return self.held_object.found()
@@ -366,6 +380,11 @@ class ExternalLibraryHolder(InterpreterObject, ObjectHolder):
def get_exe_args(self):
return self.held_object.get_exe_args()
+ def partial_dependency_method(self, args, kwargs):
+ if args:
+ raise InterpreterException('partial_dependency takes no positional arguments')
+ return DependencyHolder(self.held_object.get_partial_dependency(**kwargs))
+
class GeneratorHolder(InterpreterObject, ObjectHolder):
def __init__(self, interpreter, args, kwargs):
InterpreterObject.__init__(self)