aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2016-05-30 03:27:29 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2016-05-30 03:40:18 +0530
commit0096c51035aeeb53e02bca288de0797a790c4d48 (patch)
treed5e78f6f055cd68502577d7e5d107a0b0c18ee06 /mesonbuild/interpreter.py
parentacdd4bd523412bf28ded5ca84cf946cc0ce58c42 (diff)
downloadmeson-0096c51035aeeb53e02bca288de0797a790c4d48.zip
meson-0096c51035aeeb53e02bca288de0797a790c4d48.tar.gz
meson-0096c51035aeeb53e02bca288de0797a790c4d48.tar.bz2
interpretor: Correctly check the version of a fallback dependency
Previously the check was always done with the project version--which is wrong. It should always check against the version of the dependency requested.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 2a3d846..a45c767 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1639,8 +1639,16 @@ class Interpreter():
if len(fbinfo) != 2:
raise InterpreterException('Fallback info must have exactly two items.')
dirname, varname = fbinfo
- self.do_subproject(dirname, kwargs)
- return self.subprojects[dirname].get_variable_method([varname], {})
+ self.do_subproject(dirname, {})
+ dep = self.subprojects[dirname].get_variable_method([varname], {})
+ # Check if the version of the declared dependency matches what we want
+ if 'version' in kwargs:
+ wanted = kwargs['version']
+ found = dep.version_method([], {})
+ if found == 'undefined' or not mesonlib.version_compare(found, wanted):
+ m = 'Subproject "{0}" dependency "{1}" version is "{2}" but "{3}" is required.'
+ raise InterpreterException(m.format(dirname, varname, found, wanted))
+ return dep
def func_executable(self, node, args, kwargs):
return self.build_target(node, args, kwargs, ExecutableHolder)