aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2018-09-03 21:49:58 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2018-09-05 11:22:00 +0530
commit1fb631bf8f21d084006bdeb31858b94d514da933 (patch)
tree55c9f6d4f3a5b11fd0ae1bf932d90c73dbaaf1d3
parenta08a80d83a9dbcc50d2927ba63ccca4c926933a9 (diff)
downloadmeson-0.47.zip
meson-0.47.tar.gz
meson-0.47.tar.bz2
Test + fix for not-found dependency fallback version comparison0.47
Fixes: meson.build:6:0: ERROR: Uncomparable version string 'unknown'. This was previously partially fixed in a8694f4b, which only fixed it for cached fallback dependencies.
-rw-r--r--mesonbuild/interpreter.py9
-rw-r--r--test cases/common/53 subproject subproject/meson.build6
-rw-r--r--test cases/common/53 subproject subproject/subprojects/c/meson.build3
3 files changed, 16 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 6af9c04..87f5695 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2990,7 +2990,8 @@ root and issuing %s.
msg.append(traceback.format_exc())
mlog.log(*msg)
return None
- dep = self.get_subproject_dep(name, dirname, varname, kwargs.get('required', True))
+ required = kwargs.get('required', True)
+ dep = self.get_subproject_dep(name, dirname, varname, required)
if not dep:
return None
subproj_path = os.path.join(self.subproject_dir, dirname)
@@ -2998,6 +2999,12 @@ root and issuing %s.
if 'version' in kwargs:
wanted = kwargs['version']
found = dep.version_method([], {})
+ # Don't do a version check if the dependency is not found and not required
+ if not dep.found_method([], {}) and not required:
+ subproj_path = os.path.join(self.subproject_dir, dirname)
+ mlog.log('Dependency', mlog.bold(display_name), 'from subproject',
+ mlog.bold(subproj_path), 'found:', mlog.red('NO'))
+ return dep
if not self.check_subproject_version(wanted, found):
mlog.log('Subproject', mlog.bold(subproj_path), 'dependency',
mlog.bold(display_name), 'version is', mlog.bold(found),
diff --git a/test cases/common/53 subproject subproject/meson.build b/test cases/common/53 subproject subproject/meson.build
index f7df361..d8735a1 100644
--- a/test cases/common/53 subproject subproject/meson.build
+++ b/test cases/common/53 subproject subproject/meson.build
@@ -3,5 +3,9 @@ project('sub sub', 'c')
a = subproject('a')
lib = a.get_variable('l')
+dependency('not-found-dep', required : false,
+ version : '>=1',
+ fallback : ['c', 'notfound_dep'])
+
exe = executable('prog', 'prog.c', link_with : lib)
-test('basic', exe) \ No newline at end of file
+test('basic', exe)
diff --git a/test cases/common/53 subproject subproject/subprojects/c/meson.build b/test cases/common/53 subproject subproject/subprojects/c/meson.build
new file mode 100644
index 0000000..97a5be1
--- /dev/null
+++ b/test cases/common/53 subproject subproject/subprojects/c/meson.build
@@ -0,0 +1,3 @@
+project('not-found-dep-subproj', 'c', version : '1.0')
+
+notfound_dep = dependency('', required : false)