summaryrefslogtreecommitdiff
path: root/setuptools/build_meta.py
diff options
context:
space:
mode:
authorPaul Ganssle <paul@ganssle.io>2019-02-03 12:17:46 -0500
committerPaul Ganssle <paul@ganssle.io>2019-02-03 12:25:06 -0500
commit11fb3f38d23ff1e0d81e64ba3b68b3de2d2b990a (patch)
treecef2559edceb178cb8484974c1f149f9d58cfab6 /setuptools/build_meta.py
parentdb590baf81ebcb23605da54118905437412228ce (diff)
downloadpython-setuptools-git-11fb3f38d23ff1e0d81e64ba3b68b3de2d2b990a.tar.gz
Move build_meta_legacy to build_meta:legacy
Rather than exposing a top-level module for the legacy backend, we will move the legacy backend into the `setuptools.build_meta` module and specify it using the module:object syntax.
Diffstat (limited to 'setuptools/build_meta.py')
-rw-r--r--setuptools/build_meta.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/setuptools/build_meta.py b/setuptools/build_meta.py
index 8e31a04d..e16f319e 100644
--- a/setuptools/build_meta.py
+++ b/setuptools/build_meta.py
@@ -40,6 +40,7 @@ __all__ = ['get_requires_for_build_sdist',
'prepare_metadata_for_build_wheel',
'build_wheel',
'build_sdist',
+ 'legacy',
'SetupRequirementsError']
class SetupRequirementsError(BaseException):
@@ -187,6 +188,36 @@ class _BuildMetaBackend(object):
return _file_with_extension(sdist_directory, '.tar.gz')
+class _BuildMetaLegacyBackend(_BuildMetaBackend):
+ """Compatibility backend for setuptools
+
+ This is a version of setuptools.build_meta that endeavors to maintain backwards
+ compatibility with pre-PEP 517 modes of invocation. It exists as a temporary
+ bridge between the old packaging mechanism and the new packaging mechanism,
+ and will eventually be removed.
+ """
+ def run_setup(self, setup_script='setup.py'):
+ # 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 original path
+
+ script_dir = os.path.dirname(os.path.abspath(setup_script))
+ if script_dir not in sys.path:
+ sys.path.insert(0, script_dir)
+
+ try:
+ 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
+
+# The primary backend
_BACKEND = _BuildMetaBackend()
get_requires_for_build_wheel = _BACKEND.get_requires_for_build_wheel
@@ -194,3 +225,7 @@ get_requires_for_build_sdist = _BACKEND.get_requires_for_build_sdist
prepare_metadata_for_build_wheel = _BACKEND.prepare_metadata_for_build_wheel
build_wheel = _BACKEND.build_wheel
build_sdist = _BACKEND.build_sdist
+
+
+# The legacy backend
+legacy = _BuildMetaLegacyBackend()