diff options
author | Omer Pereg <duckflyer@gmail.com> | 2022-07-26 22:09:29 +0300 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2022-08-08 19:10:32 +0530 |
commit | 21796bdb9ff1bca40a93e875254c2ca42cba5104 (patch) | |
tree | 714168a0c9c5ffbdc55d353a7d7f68ea7752ff44 | |
parent | c6d0cb648503bd4d644fa795e079d301d19a32e5 (diff) | |
download | meson-21796bdb9ff1bca40a93e875254c2ca42cba5104.zip meson-21796bdb9ff1bca40a93e875254c2ca42cba5104.tar.gz meson-21796bdb9ff1bca40a93e875254c2ca42cba5104.tar.bz2 |
handle OSError exception in run function
-rw-r--r-- | mesonbuild/mesonmain.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py index 7589b6c..ec4bfff 100644 --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -13,6 +13,7 @@ # limitations under the License. # Work around some pathlib bugs... + from . import _pathlib import sys sys.modules['pathlib'] = _pathlib @@ -158,6 +159,18 @@ class CommandLineParser: if os.environ.get('MESON_FORCE_BACKTRACE'): raise return 1 + except OSError as e: + if os.environ.get('MESON_FORCE_BACKTRACE'): + raise + traceback.print_exc() + error_msg = os.linesep.join([ + "Unhandled python exception", + f"{e.strerror} - {e.args}", + "this is probably not a Meson bug."]) + + mlog.exception(error_msg) + return e.errno + except Exception as e: if os.environ.get('MESON_FORCE_BACKTRACE'): raise @@ -168,7 +181,7 @@ class CommandLineParser: # - PermissionError is always a problem in the user environment # - runpython doesn't run Meson's own code, even though it is # dispatched by our run() - if command != 'runpython' and not isinstance(e, PermissionError): + if command != 'runpython': msg = 'Unhandled python exception' if all(getattr(e, a, None) is not None for a in ['file', 'lineno', 'colno']): e = MesonBugException(msg, e.file, e.lineno, e.colno) # type: ignore |