19 lines
831 B
Python
19 lines
831 B
Python
|
|
# PyInstaller runtime hook — see build.sh.
|
||
|
|
#
|
||
|
|
# `exit()`/`quit()` aren't part of the language; they're `site.Quitter`
|
||
|
|
# instances the interactive interpreter injects into builtins at startup
|
||
|
|
# (site.py). A frozen PyInstaller app never runs that interactive-mode
|
||
|
|
# init, so any bundled script that calls bare `exit()` (RNS's own
|
||
|
|
# rnodeconf.py does, in its graceful_exit() cleanup path) hits
|
||
|
|
# `NameError: name 'exit' is not defined` right as it tries to quit
|
||
|
|
# cleanly — the real work above it already completed, but the process
|
||
|
|
# still exits 1, which is a foot-gun for anything scripting off the exit
|
||
|
|
# code. Pre-define both as sys.exit so that path is a no-op crash-wise.
|
||
|
|
import builtins
|
||
|
|
import sys
|
||
|
|
|
||
|
|
if not hasattr(builtins, "exit"):
|
||
|
|
builtins.exit = sys.exit
|
||
|
|
if not hasattr(builtins, "quit"):
|
||
|
|
builtins.quit = sys.exit
|