diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2017-10-19 15:20:41 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2017-11-23 20:06:23 -0800 |
commit | f818e9df582e27d73a36c0b7a94dc897a6e6dc62 (patch) | |
tree | bb92803d6f33266aca794000da77a642e09cbdd7 /mesonbuild | |
parent | df3c0064564760315eb69e78b7c298bf26ad1b59 (diff) | |
download | meson-f818e9df582e27d73a36c0b7a94dc897a6e6dc62.zip meson-f818e9df582e27d73a36c0b7a94dc897a6e6dc62.tar.gz meson-f818e9df582e27d73a36c0b7a94dc897a6e6dc62.tar.bz2 |
Add a configtool_variable method to dependency
This mirrors the get_pkgconfig_variable but for config tool based
dependencies.
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/dependencies/base.py | 14 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 10 |
2 files changed, 24 insertions, 0 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 84b20e7..682182c 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -132,6 +132,9 @@ class Dependency: def get_pkgconfig_variable(self, variable_name): raise NotImplementedError('{!r} is not a pkgconfig dependency'.format(self.name)) + def get_configtool_variable(self, variable_name): + raise NotImplementedError('{!r} is not a config-tool dependency'.format(self.name)) + class InternalDependency(Dependency): def __init__(self, version, incdirs, compile_args, link_args, libraries, sources, ext_deps): @@ -288,6 +291,17 @@ class ConfigToolDependency(ExternalDependency): def get_methods(self): return [DependencyMethods.AUTO, DependencyMethods.CONFIG_TOOL] + def get_configtool_variable(self, variable_name): + p, out, _ = Popen_safe([self.config, '--{}'.format(variable_name)]) + if p.returncode != 0: + if self.required: + raise DependencyException( + 'Could not get variable "{}" for dependency {}'.format( + variable_name, self.name)) + variable = out.strip() + mlog.debug('Got config-tool variable {} : {}'.format(variable_name, variable)) + return variable + class PkgConfigDependency(ExternalDependency): # The class's copy of the pkg-config path. Avoids having to search for it diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index fbf9a21..dd0e0e6 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -274,6 +274,7 @@ class DependencyHolder(InterpreterObject, ObjectHolder): 'type_name': self.type_name_method, 'version': self.version_method, 'get_pkgconfig_variable': self.pkgconfig_method, + 'get_configtool_variable': self.configtool_method, }) def type_name_method(self, args, kwargs): @@ -296,6 +297,15 @@ class DependencyHolder(InterpreterObject, ObjectHolder): raise InterpreterException('Variable name must be a string.') return self.held_object.get_pkgconfig_variable(varname) + def configtool_method(self, args, kwargs): + args = listify(args) + if len(args) != 1: + raise InterpreterException('get_configtool_variable takes exactly one argument.') + varname = args[0] + if not isinstance(varname, str): + raise InterpreterException('Variable name must be a string.') + return self.held_object.get_configtool_variable(varname) + class InternalDependencyHolder(InterpreterObject, ObjectHolder): def __init__(self, dep): InterpreterObject.__init__(self) |