diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2022-07-14 12:59:48 -0700 |
---|---|---|
committer | Eli Schwartz <eschwartz93@gmail.com> | 2022-08-17 16:25:36 -0400 |
commit | 6843f56f6b8e71e75c287de31686913eea5e4a44 (patch) | |
tree | a92e933d88d48dd2bfd4a1fc2bb652296f053332 /mesonbuild/interpreter/interpreter.py | |
parent | 2801ead6d3a144f3cf7ae03f61bb463c7aeac0a9 (diff) | |
download | meson-6843f56f6b8e71e75c287de31686913eea5e4a44.zip meson-6843f56f6b8e71e75c287de31686913eea5e4a44.tar.gz meson-6843f56f6b8e71e75c287de31686913eea5e4a44.tar.bz2 |
modules: use module level information about new and deprecation
Instead of using FeatureNew/FeatureDeprecated in the module.
The goal here is to be able to handle information about modules in a
single place, instead of having to handle it separately. Each module
simply defines some metadata, and then the interpreter handles the rest.
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index c897494..fef8f4b 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -599,7 +599,7 @@ class Interpreter(InterpreterBase, HoldableObject): dep = df.lookup(kwargs, force_fallback=True) self.build.stdlibs[for_machine][l] = dep - def _import_module(self, modname: str, required: bool) -> NewExtensionModule: + def _import_module(self, modname: str, required: bool, node: mparser.BaseNode) -> NewExtensionModule: if modname in self.modules: return self.modules[modname] try: @@ -607,11 +607,15 @@ class Interpreter(InterpreterBase, HoldableObject): except ImportError: if required: raise InvalidArguments(f'Module "{modname}" does not exist') - ext_module = NotFoundExtensionModule() + ext_module = NotFoundExtensionModule(modname) else: ext_module = module.initialize(self) assert isinstance(ext_module, (ExtensionModule, NewExtensionModule)) self.build.modules.append(modname) + if ext_module.INFO.added: + FeatureNew.single_use(f'module {ext_module.INFO.name}', ext_module.INFO.added, self.subproject, location=node) + if ext_module.INFO.deprecated: + FeatureDeprecated.single_use(f'module {ext_module.INFO.name}', ext_module.INFO.deprecated, self.subproject, location=node) self.modules[modname] = ext_module return ext_module @@ -627,20 +631,19 @@ class Interpreter(InterpreterBase, HoldableObject): modname = args[0] disabled, required, _ = extract_required_kwarg(kwargs, self.subproject) if disabled: - return NotFoundExtensionModule() + return NotFoundExtensionModule(modname) if modname.startswith('unstable-'): plainname = modname.split('-', 1)[1] try: # check if stable module exists - mod = self._import_module(plainname, required) - # XXX: this is actually not helpful, since it doesn't do a version check + mod = self._import_module(plainname, required, node) mlog.warning(f'Module {modname} is now stable, please use the {plainname} module instead.') return mod except InvalidArguments: mlog.warning(f'Module {modname} has no backwards or forwards compatibility and might not exist in future releases.', location=node) modname = 'unstable_' + plainname - return self._import_module(modname, required) + return self._import_module(modname, required, node) @typed_pos_args('files', varargs=str) @noKwargs |