From 086558b6fad3f40f91d948ce2131f1bb316f1214 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 20 Apr 2024 22:23:19 -0400 Subject: [PATCH] Extract function to inject macos version. --- distutils/spawn.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/distutils/spawn.py b/distutils/spawn.py index f0328902..a70f54e1 100644 --- a/distutils/spawn.py +++ b/distutils/spawn.py @@ -12,9 +12,8 @@ import pathlib import platform import subprocess -import sys -from typing import Iterable +from typing import Iterable, Mapping from ._log import log from .debug import DEBUG @@ -28,6 +27,21 @@ def _debug(cmd): return cmd if DEBUG else cmd[0] +def _inject_macos_ver(env: Mapping[str:str] | None) -> Mapping[str:str] | None: + if platform.system() != 'Darwin': + return env + + from distutils.util import MACOSX_VERSION_VAR, get_macosx_target_ver + + target_ver = get_macosx_target_ver() + update = {MACOSX_VERSION_VAR: target_ver} if target_ver else {} + return {**_resolve(env), **update} + + +def _resolve(env: Mapping[str:str] | None) -> Mapping[str:str]: + return os.environ if env is None else env + + def spawn(cmd, search_path=True, verbose=False, dry_run=False, env=None): """Run another program, specified as a command list 'cmd', in a new process. @@ -53,17 +67,8 @@ def spawn(cmd, search_path=True, verbose=False, dry_run=False, env=None): if executable is not None: cmd[0] = executable - env = env if env is not None else dict(os.environ) - - if sys.platform == 'darwin': - from distutils.util import MACOSX_VERSION_VAR, get_macosx_target_ver - - macosx_target_ver = get_macosx_target_ver() - if macosx_target_ver: - env[MACOSX_VERSION_VAR] = macosx_target_ver - try: - subprocess.check_call(cmd, env=env) + subprocess.check_call(cmd, env=_inject_macos_ver(env)) except OSError as exc: raise DistutilsExecError( f"command {_debug(cmd)!r} failed: {exc.args[-1]}"