From 5553e7e4610bfb3d27a1d9b5f906313a611ce141 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Thu, 7 Nov 2024 11:08:17 -0500 Subject: [PATCH] fix: replace process on UNIX Signed-off-by: Henry Schreiner --- src/cmake/__init__.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/cmake/__init__.py b/src/cmake/__init__.py index 84df7e0d1..03086c9a2 100644 --- a/src/cmake/__init__.py +++ b/src/cmake/__init__.py @@ -46,14 +46,19 @@ def __dir__() -> list[str]: def _program(name: str, args: Iterable[str]) -> int: return subprocess.call([os.path.join(CMAKE_BIN_DIR, name), *args], close_fds=False) +def _program_exit(name: str, *args: str) -> NoReturn: + if sys.platform.startswith("win"): + raise SystemExit(_program(name, args)) + os.execl(os.path.join(CMAKE_BIN_DIR, name), name, *args) + def cmake() -> NoReturn: - raise SystemExit(_program('cmake', sys.argv[1:])) + _program_exit('cmake', *sys.argv[1:]) def cpack() -> NoReturn: - raise SystemExit(_program('cpack', sys.argv[1:])) + _program_exit('cpack', *sys.argv[1:]) def ctest() -> NoReturn: - raise SystemExit(_program('ctest', sys.argv[1:])) + _program_exit('ctest', *sys.argv[1:])