Commit 49d17725 authored by Paul Ganssle's avatar Paul Ganssle

Set sys.path in try/finally block with comment

Per Nick Coghlan's suggestion on PR #1652, a try/finally block ensures
that the path is restored even in the event of an error.
parent 90a8701a
......@@ -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()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment