diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2022-03-06 18:57:40 -0500 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2022-03-06 19:41:21 -0500 |
commit | 0f2f87a003477bd79487a47d5f60f67751e2f44e (patch) | |
tree | 6ab93b568a66d25cffa9a6ae51e3b505d75a7001 /mesonbuild/interpreter/interpreterobjects.py | |
parent | 8b573d7dc65bf20fcb0377ce4c56841496ad0c69 (diff) | |
download | meson-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.py | 12 |
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() |