aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--setuptools/build_meta_legacy.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/setuptools/build_meta_legacy.py b/setuptools/build_meta_legacy.py
index 7eed41f1..03492da9 100644
--- a/setuptools/build_meta_legacy.py
+++ b/setuptools/build_meta_legacy.py
@@ -6,6 +6,7 @@ bridge between the old packaging mechanism and the new packaging mechanism,
and will eventually be removed.
"""
+import os
import sys
from setuptools.build_meta import _BuildMetaBackend
@@ -25,14 +26,21 @@ class _BuildMetaLegacyBackend(_BuildMetaBackend):
# In order to maintain compatibility with scripts assuming that
# the setup.py script is in a directory on the PYTHONPATH, inject
# '' into sys.path. (pypa/setuptools#1642)
- sys_path = list(sys.path) # Save the old path
- if '' not in sys.path:
- sys.path.insert(0, '')
-
- super(_BuildMetaLegacyBackend,
- self).run_setup(setup_script=setup_script)
-
- sys.path = sys_path # Restore the old path
+ sys_path = list(sys.path) # Save the original path
+
+ try:
+ if '' not in sys.path:
+ sys.path.insert(0, '')
+
+ super(_BuildMetaLegacyBackend,
+ self).run_setup(setup_script=setup_script)
+ finally:
+ # While PEP 517 frontends should be calling each hook in a fresh
+ # subprocess according to the standard (and thus it should not be
+ # strictly necessary to restore the old sys.path), we'll restore
+ # the original path so that the path manipulation does not persist
+ # within the hook after run_setup is called.
+ sys.path[:] = sys_path
_BACKEND = _BuildMetaLegacyBackend()