summaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
diff options
context:
space:
mode:
authorMarco Rebhan <me@dblsaiko.net>2025-01-11 23:41:32 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2025-01-27 13:39:03 +0200
commit9afc6980eafa5c422816a4b260925d69dbcf54d8 (patch)
tree35cb0b6b3fa0686b363724b9507a3657dd836d0d /mesonbuild/interpreter
parent6ee583e119b432fee03f908547729d5da030397e (diff)
downloadmeson-9afc6980eafa5c422816a4b260925d69dbcf54d8.tar.gz
Show real error if module exists but import failed
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r--mesonbuild/interpreter/interpreter.py15
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)