summaryrefslogtreecommitdiff
path: root/setuptools/build_meta.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2020-09-04 10:22:54 -0400
committerJason R. Coombs <jaraco@jaraco.com>2020-09-04 10:22:54 -0400
commitfc4d9828768ceebd2f9337481450c88376c013e9 (patch)
tree6dff622c50739ca19fdfbecf1008a42589d37b57 /setuptools/build_meta.py
parent7bb73a477de24069002516eb6eb1d755bed9d65b (diff)
parent03d36b9edb53e266a0b4b836e1e3178f989a0781 (diff)
downloadpython-setuptools-git-feature/implicit-bootstrap.tar.gz
Merge branch 'master' into feature/implicit-bootstrapfeature/implicit-bootstrap
Diffstat (limited to 'setuptools/build_meta.py')
-rw-r--r--setuptools/build_meta.py40
1 files changed, 22 insertions, 18 deletions
diff --git a/setuptools/build_meta.py b/setuptools/build_meta.py
index a1c951cf..b9e8a2b3 100644
--- a/setuptools/build_meta.py
+++ b/setuptools/build_meta.py
@@ -32,13 +32,12 @@ import sys
import tokenize
import shutil
import contextlib
+import tempfile
import setuptools
import distutils
-from setuptools.py31compat import TemporaryDirectory
from pkg_resources import parse_requirements
-from pkg_resources.py31compat import makedirs
__all__ = ['get_requires_for_build_sdist',
'get_requires_for_build_wheel',
@@ -76,17 +75,20 @@ class Distribution(setuptools.dist.Distribution):
distutils.core.Distribution = orig
-def _to_str(s):
- """
- Convert a filename to a string (on Python 2, explicitly
- a byte string, not Unicode) as distutils checks for the
- exact type str.
+@contextlib.contextmanager
+def no_install_setup_requires():
+ """Temporarily disable installing setup_requires
+
+ Under PEP 517, the backend reports build dependencies to the frontend,
+ and the frontend is responsible for ensuring they're installed.
+ So setuptools (acting as a backend) should not try to install them.
"""
- if sys.version_info[0] == 2 and not isinstance(s, str):
- # Assume it's Unicode, as that's what the PEP says
- # should be provided.
- return s.encode(sys.getfilesystemencoding())
- return s
+ orig = setuptools._install_setup_requires
+ setuptools._install_setup_requires = lambda attrs: None
+ try:
+ yield
+ finally:
+ setuptools._install_setup_requires = orig
def _get_immediate_subdirectories(a_dir):
@@ -153,9 +155,10 @@ class _BuildMetaBackend(object):
def prepare_metadata_for_build_wheel(self, metadata_directory,
config_settings=None):
- sys.argv = sys.argv[:1] + ['dist_info', '--egg-base',
- _to_str(metadata_directory)]
- self.run_setup()
+ sys.argv = sys.argv[:1] + [
+ 'dist_info', '--egg-base', metadata_directory]
+ with no_install_setup_requires():
+ self.run_setup()
dist_info_directory = metadata_directory
while True:
@@ -190,12 +193,13 @@ class _BuildMetaBackend(object):
result_directory = os.path.abspath(result_directory)
# Build in a temporary directory, then copy to the target.
- makedirs(result_directory, exist_ok=True)
- with TemporaryDirectory(dir=result_directory) as tmp_dist_dir:
+ os.makedirs(result_directory, exist_ok=True)
+ with tempfile.TemporaryDirectory(dir=result_directory) as tmp_dist_dir:
sys.argv = (sys.argv[:1] + setup_command +
['--dist-dir', tmp_dist_dir] +
config_settings["--global-option"])
- self.run_setup()
+ with no_install_setup_requires():
+ self.run_setup()
result_basename = _file_with_extension(
tmp_dist_dir, result_extension)