diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2020-07-11 15:31:18 -0400 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2020-07-12 04:55:37 -0400 |
| commit | 360aadc4c2a9941a68a3f3f63375ce5380fef6a0 (patch) | |
| tree | 72beda474fbcae21ddbf7f5700589689477ba156 | |
| parent | bbe8e80bcbafff8cf3d135d17a8526c8ac5f4b27 (diff) | |
| download | external_python_setuptools-360aadc4c2a9941a68a3f3f63375ce5380fef6a0.tar.gz external_python_setuptools-360aadc4c2a9941a68a3f3f63375ce5380fef6a0.tar.bz2 external_python_setuptools-360aadc4c2a9941a68a3f3f63375ce5380fef6a0.zip | |
Allow spawn to accept environment. Avoid monkey-patching global state. Closes pypa/setuptools#2212 and closes pypa/distutils#5.
| -rw-r--r-- | distutils/_msvccompiler.py | 8 | ||||
| -rw-r--r-- | distutils/spawn.py | 8 |
2 files changed, 6 insertions, 10 deletions
diff --git a/distutils/_msvccompiler.py b/distutils/_msvccompiler.py index af8099a4..0e98692e 100644 --- a/distutils/_msvccompiler.py +++ b/distutils/_msvccompiler.py @@ -501,12 +501,8 @@ class MSVCCompiler(CCompiler) : log.debug("skipping %s (up-to-date)", output_filename) def spawn(self, cmd): - old_path = os.getenv('path') - try: - os.environ['path'] = self._paths - return super().spawn(cmd) - finally: - os.environ['path'] = old_path + env = dict(os.environ, path=self._paths) + return super().spawn(cmd, env=env) # -- Miscellaneous methods ----------------------------------------- # These are all used by the 'gen_lib_options() function, in diff --git a/distutils/spawn.py b/distutils/spawn.py index 0d1bd039..fc592d4a 100644 --- a/distutils/spawn.py +++ b/distutils/spawn.py @@ -20,7 +20,7 @@ if sys.platform == 'darwin': _cfg_target_split = None -def spawn(cmd, search_path=1, verbose=0, dry_run=0): +def spawn(cmd, search_path=1, verbose=0, dry_run=0, env=None): """Run another program, specified as a command list 'cmd', in a new process. 'cmd' is just the argument list for the new process, ie. @@ -49,7 +49,8 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0): if executable is not None: cmd[0] = executable - env = None + env = env if env is not None else dict(os.environ) + if sys.platform == 'darwin': global _cfg_target, _cfg_target_split if _cfg_target is None: @@ -68,8 +69,7 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0): 'now "%s" but "%s" during configure' % (cur_target, _cfg_target)) raise DistutilsPlatformError(my_msg) - env = dict(os.environ, - MACOSX_DEPLOYMENT_TARGET=cur_target) + env.update(MACOSX_DEPLOYMENT_TARGET=cur_target) try: proc = subprocess.Popen(cmd, env=env) |
