aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreter.py24
-rw-r--r--test cases/keyval/1 basic/meson.build2
-rw-r--r--test cases/keyval/1 basic/test.json7
3 files changed, 26 insertions, 7 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 11dac38..24c2cc8 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2559,6 +2559,15 @@ class Interpreter(InterpreterBase):
except InvalidArguments:
pass
+ def import_module(self, modname):
+ if modname in self.modules:
+ return
+ try:
+ module = importlib.import_module('mesonbuild.modules.' + modname)
+ except ImportError:
+ raise InvalidArguments('Module "%s" does not exist' % (modname, ))
+ self.modules[modname] = module.initialize(self)
+
@stringArgs
@noKwargs
def func_import(self, node, args, kwargs):
@@ -2567,14 +2576,15 @@ class Interpreter(InterpreterBase):
modname = args[0]
if modname.startswith('unstable-'):
plainname = modname.split('-', 1)[1]
- mlog.warning('Module %s has no backwards or forwards compatibility and might not exist in future releases.' % modname, location=node)
- modname = 'unstable_' + plainname
- if modname not in self.modules:
try:
- module = importlib.import_module('mesonbuild.modules.' + modname)
- except ImportError:
- raise InvalidArguments('Module "%s" does not exist' % (modname, ))
- self.modules[modname] = module.initialize(self)
+ # check if stable module exists
+ self.import_module(plainname)
+ mlog.warning('Module %s is now stable, please use the %s module instead.' % (modname, plainname))
+ modname = plainname
+ except InvalidArguments:
+ mlog.warning('Module %s has no backwards or forwards compatibility and might not exist in future releases.' % modname, location=node)
+ modname = 'unstable_' + plainname
+ self.import_module(modname)
return ModuleHolder(modname, self.modules[modname], self)
@stringArgs
diff --git a/test cases/keyval/1 basic/meson.build b/test cases/keyval/1 basic/meson.build
index c3e4466..4207b8e 100644
--- a/test cases/keyval/1 basic/meson.build
+++ b/test cases/keyval/1 basic/meson.build
@@ -14,3 +14,5 @@ endif
if conf.get('CONFIG_VAL_VAL').to_int() != 4
error('Expected CONFIG_VAL_VAL to be 4')
endif
+
+k = import('unstable-keyval')
diff --git a/test cases/keyval/1 basic/test.json b/test cases/keyval/1 basic/test.json
new file mode 100644
index 0000000..dbdc5af
--- /dev/null
+++ b/test cases/keyval/1 basic/test.json
@@ -0,0 +1,7 @@
+{
+ "stdout": [
+ {
+ "line": "WARNING: Module unstable-keyval is now stable, please use the keyval module instead."
+ }
+ ]
+}