Can specify version requirements to subprojects.

pull/282/head
Jussi Pakkanen 9 years ago
parent 172fa2f8dd
commit e4ff4b7c8c
  1. 9
      interpreter.py
  2. 2
      test cases/common/49 subproject/meson.build
  3. 3
      test cases/failing/21 subver/meson.build
  4. 1
      test cases/failing/21 subver/subprojects/foo/meson.build

@ -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:

@ -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())

@ -0,0 +1,3 @@
project('master', 'c')
x = subproject('foo', version : '>1.0.0')

@ -0,0 +1 @@
project('foo', 'c', version : '1.0.0')
Loading…
Cancel
Save