From 0096c51035aeeb53e02bca288de0797a790c4d48 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Mon, 30 May 2016 03:27:29 +0530 Subject: 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. --- mesonbuild/interpreter.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 2a3d846f3..a45c767cd 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) -- cgit v1.2.3