aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--interpreter.py9
-rw-r--r--test cases/common/49 subproject/meson.build2
-rw-r--r--test cases/failing/21 subver/meson.build3
-rw-r--r--test cases/failing/21 subver/subprojects/foo/meson.build1
4 files changed, 12 insertions, 3 deletions
diff --git a/interpreter.py b/interpreter.py
index 7e67711..9e494f0 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1196,7 +1196,6 @@ class Interpreter():
self.build.pkgconfig_gens.append(p)
@stringArgs
- @noKwargs
def func_subproject(self, nodes, args, kwargs):
if len(args) != 1:
raise InterpreterException('Subproject takes exactly one argument')
@@ -1225,6 +1224,11 @@ class Interpreter():
subi.subproject_stack = self.subproject_stack + [dirname]
current_active = self.active_projectname
subi.run()
+ if 'version' in kwargs:
+ pv = subi.project_version
+ wanted = kwargs['version']
+ if not mesonlib.version_compare(pv, wanted):
+ raise InterpreterException('Subproject %s version is %s but %s required.' % (dirname, pv, wanted))
self.active_projectname = current_active
mlog.log('\nSubproject', mlog.bold(dirname), 'finished.')
self.build.subprojects[dirname] = True
@@ -1268,7 +1272,8 @@ class Interpreter():
if not self.is_subproject():
self.build.project_name = args[0]
self.active_projectname = args[0]
- self.build.dep_manifest[args[0]] = kwargs.get('version', 'undefined')
+ self.project_version = kwargs.get('version', 'undefined')
+ self.build.dep_manifest[args[0]] = self.project_version
if self.subproject in self.build.projects:
raise InvalidCode('Second call to project().')
if not self.is_subproject() and 'subproject_dir' in kwargs:
diff --git a/test cases/common/49 subproject/meson.build b/test cases/common/49 subproject/meson.build
index 9b5171b..2616853 100644
--- a/test cases/common/49 subproject/meson.build
+++ b/test cases/common/49 subproject/meson.build
@@ -1,6 +1,6 @@
project('subproj user', 'c', version : '2.3.4')
-sub = subproject('sublib')
+sub = subproject('sublib', version : '1.0.0')
if meson.project_version() != '2.3.4'
error('Incorrect master project version string:' + meson.project_version())
diff --git a/test cases/failing/21 subver/meson.build b/test cases/failing/21 subver/meson.build
new file mode 100644
index 0000000..854f13c
--- /dev/null
+++ b/test cases/failing/21 subver/meson.build
@@ -0,0 +1,3 @@
+project('master', 'c')
+
+x = subproject('foo', version : '>1.0.0')
diff --git a/test cases/failing/21 subver/subprojects/foo/meson.build b/test cases/failing/21 subver/subprojects/foo/meson.build
new file mode 100644
index 0000000..f4ff535
--- /dev/null
+++ b/test cases/failing/21 subver/subprojects/foo/meson.build
@@ -0,0 +1 @@
+project('foo', 'c', version : '1.0.0')