aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreterobjects.py
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2022-03-06 18:57:40 -0500
committerEli Schwartz <eschwartz@archlinux.org>2022-03-06 19:41:21 -0500
commit0f2f87a003477bd79487a47d5f60f67751e2f44e (patch)
tree6ab93b568a66d25cffa9a6ae51e3b505d75a7001 /mesonbuild/interpreter/interpreterobjects.py
parent8b573d7dc65bf20fcb0377ce4c56841496ad0c69 (diff)
downloadmeson-0f2f87a003477bd79487a47d5f60f67751e2f44e.zip
meson-0f2f87a003477bd79487a47d5f60f67751e2f44e.tar.gz
meson-0f2f87a003477bd79487a47d5f60f67751e2f44e.tar.bz2
find_program: add a version() method to match the one for dependencies
It is often useful to check the found version of a program without checking whether you can successfully find `find_program('foo', required: false, version: '>=XXX')`
Diffstat (limited to 'mesonbuild/interpreter/interpreterobjects.py')
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index c7ddb38..90607ee 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -516,6 +516,7 @@ class ExternalProgramHolder(ObjectHolder[ExternalProgram]):
super().__init__(ep, interpreter)
self.methods.update({'found': self.found_method,
'path': self.path_method,
+ 'version': self.version_method,
'full_path': self.full_path_method})
@noPosargs
@@ -543,6 +544,17 @@ class ExternalProgramHolder(ObjectHolder[ExternalProgram]):
assert path is not None
return path
+ @noPosargs
+ @noKwargs
+ @FeatureNew('ExternalProgram.version', '0.62.0')
+ def version_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
+ if not self.found():
+ raise InterpreterException('Unable to get the version of a not-found external program')
+ try:
+ return self.held_object.get_version(self.interpreter)
+ except MesonException:
+ return 'unknown'
+
def found(self) -> bool:
return self.held_object.found()