aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmer Pereg <duckflyer@gmail.com>2022-07-26 22:09:29 +0300
committerNirbheek Chauhan <nirbheek@centricular.com>2022-08-08 19:10:32 +0530
commit21796bdb9ff1bca40a93e875254c2ca42cba5104 (patch)
tree714168a0c9c5ffbdc55d353a7d7f68ea7752ff44
parentc6d0cb648503bd4d644fa795e079d301d19a32e5 (diff)
downloadmeson-21796bdb9ff1bca40a93e875254c2ca42cba5104.zip
meson-21796bdb9ff1bca40a93e875254c2ca42cba5104.tar.gz
meson-21796bdb9ff1bca40a93e875254c2ca42cba5104.tar.bz2
handle OSError exception in run function
-rw-r--r--mesonbuild/mesonmain.py15
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