diff options
| author | Marco Rebhan <me@dblsaiko.net> | 2025-01-11 23:41:32 +0100 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2025-01-27 13:39:03 +0200 |
| commit | 9afc6980eafa5c422816a4b260925d69dbcf54d8 (patch) | |
| tree | 35cb0b6b3fa0686b363724b9507a3657dd836d0d /mesonbuild/interpreter | |
| parent | 6ee583e119b432fee03f908547729d5da030397e (diff) | |
| download | meson-9afc6980eafa5c422816a4b260925d69dbcf54d8.tar.gz | |
Show real error if module exists but import failed
Diffstat (limited to 'mesonbuild/interpreter')
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 02a59e398..806a737ea 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -5,6 +5,7 @@ from __future__ import annotations import hashlib +import traceback from .. import mparser from .. import environment @@ -622,8 +623,18 @@ class Interpreter(InterpreterBase, HoldableObject): if real_modname in self.modules: return self.modules[real_modname] try: - module = importlib.import_module(f'mesonbuild.modules.{real_modname}') - except ImportError: + full_module_path = f'mesonbuild.modules.{real_modname}' + module = importlib.import_module(full_module_path) + except ImportError as e: + if e.name != full_module_path: + if required: + raise e + + mlog.warning(f'Module "{modname}" exists but failed to import.') + + for line in traceback.format_exception(e): + mlog.debug(line) + if required: raise InvalidArguments(f'Module "{modname}" does not exist') ext_module = NotFoundExtensionModule(real_modname) |
