summaryrefslogtreecommitdiff
path: root/mesonbuild/optinterpreter.py
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz93@gmail.com>2024-04-28 12:14:06 -0400
committerJussi Pakkanen <jpakkane@gmail.com>2024-04-28 22:51:08 +0300
commite5f32b74144b9f4a43304fa167899e202c5912b5 (patch)
treecd3991e1fa1e5daae50cbe7915b58b62dc7c172e /mesonbuild/optinterpreter.py
parent4f3a3e2efeb415fe83f9e858b010a36baf72b455 (diff)
downloadmeson-e5f32b74144b9f4a43304fa167899e202c5912b5.tar.gz
catch build files that cannot be opened in utf8 mode and emit useful error
Previously, if a junked meson.build or native.ini was used we got a lengthy traceback ending in UnicodeDecodeError. Fixes: #13154 Fixes: #13156
Diffstat (limited to 'mesonbuild/optinterpreter.py')
-rw-r--r--mesonbuild/optinterpreter.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py
index 980dadd09..599da65d3 100644
--- a/mesonbuild/optinterpreter.py
+++ b/mesonbuild/optinterpreter.py
@@ -78,7 +78,11 @@ class OptionInterpreter:
def process(self, option_file: str) -> None:
try:
with open(option_file, encoding='utf-8') as f:
- ast = mparser.Parser(f.read(), option_file).parse()
+ code = f.read()
+ except UnicodeDecodeError as e:
+ raise mesonlib.MesonException(f'Malformed option file {option_file!r} failed to parse as unicode: {e}')
+ try:
+ ast = mparser.Parser(code, option_file).parse()
except mesonlib.MesonException as me:
me.file = option_file
raise me