diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2018-01-06 15:33:07 -0800 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-04-17 23:33:31 +0300 |
commit | 92487ea33db9d882929d755308853d2ed82abd0d (patch) | |
tree | 0272fa81d53e2f08b72e70e906bdc4d0df65f23e /mesonbuild/interpreter.py | |
parent | 1952ef5ae13376084dc277de38ff3a6dafb8e595 (diff) | |
download | meson-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.py | 21 |
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) |