diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-05-30 03:27:29 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-05-30 03:40:18 +0530 |
commit | 0096c51035aeeb53e02bca288de0797a790c4d48 (patch) | |
tree | d5e78f6f055cd68502577d7e5d107a0b0c18ee06 | |
parent | acdd4bd523412bf28ded5ca84cf946cc0ce58c42 (diff) | |
download | meson-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.
-rw-r--r-- | mesonbuild/interpreter.py | 12 |
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) |