Imported Upstream version 60.0.5 upstream/60.0.5
authorJinWang An <jinwang.an@samsung.com>
Mon, 27 Mar 2023 08:02:41 +0000 (17:02 +0900)
committerJinWang An <jinwang.an@samsung.com>
Mon, 27 Mar 2023 08:02:41 +0000 (17:02 +0900)
.bumpversion.cfg
CHANGES.rst
setup.cfg
setuptools/_distutils/command/install.py

index ce25a8c90ecd4564789a2d665d55c3453d5a17d5..65eec0b030f7a363cfb8043b077ae03c337b5bae 100644 (file)
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 60.0.4
+current_version = 60.0.5
 commit = True
 tag = True
 
index 9145ac94b27e3cca57eb2cbe1c593f620a305776..998dda4e581e677ec1ab2ca3aa30f67b2d63e74d 100644 (file)
@@ -1,3 +1,12 @@
+v60.0.5
+-------
+
+
+Misc
+^^^^
+* #2960: Install schemes fall back to default scheme for headers.
+
+
 v60.0.4
 -------
 
index 08eefc49b2a0cfec3e2b5c31f95b6fbad4385e52..f1a6fc5278da73a587fa1c1dda16e38f23dd126f 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,6 @@
 [metadata]
 name = setuptools
-version = 60.0.4
+version = 60.0.5
 author = Python Packaging Authority
 author_email = distutils-sig@python.org
 description = Easily download, build, install, upgrade, and uninstall Python packages
index 4f9447257f78481bd7b2eb6b1791f56d1b3dde94..65844927f6be65f7f9d1fe4d33ff8d4ea8fff3bf 100644 (file)
@@ -81,11 +81,6 @@ if HAS_USER_SITE:
         'data'   : '{userbase}',
         }
 
-    INSTALL_SCHEMES['osx_framework_user'] = {
-        'headers':
-            '{userbase}/include/{implementation_lower}{py_version_short}{abiflags}/{dist_name}',
-    }
-
 # The keys to an installation scheme; if any new types of files are to be
 # installed, be sure to add an entry to every installation scheme above,
 # and to SCHEME_KEYS here.
@@ -124,7 +119,8 @@ def _get_implementation():
 
 
 def _select_scheme(ob, name):
-    vars(ob).update(_remove_set(ob, _scheme_attrs(_resolve_scheme(name))))
+    scheme = _inject_headers(name, _load_scheme(_resolve_scheme(name)))
+    vars(ob).update(_remove_set(ob, _scheme_attrs(scheme)))
 
 
 def _remove_set(ob, attrs):
@@ -147,9 +143,26 @@ def _resolve_scheme(name):
     return resolved
 
 
-def _scheme_attrs(name):
+def _load_scheme(name):
+    return _load_schemes()[name]
+
+
+def _inject_headers(name, scheme):
+    """
+    Given a scheme name and the resolved scheme,
+    if the scheme does not include headers, resolve
+    the fallback scheme for the name and use headers
+    from it. pypa/distutils#88
+    """
+    # Bypass the preferred scheme, which may not
+    # have defined headers.
+    fallback = _load_scheme(_pypy_hack(name))
+    scheme.setdefault('headers', fallback['headers'])
+    return scheme
+
+
+def _scheme_attrs(scheme):
     """Resolve install directories by applying the install schemes."""
-    scheme = _load_schemes()[name]
     return {
         f'install_{key}': scheme[key]
         for key in SCHEME_KEYS
@@ -395,7 +408,8 @@ class install(Command):
                             'platlibdir': getattr(sys, 'platlibdir', 'lib'),
                             'implementation_lower': _get_implementation().lower(),
                             'implementation': _get_implementation(),
-                            'platsubdir': sysconfig.get_config_var('platsubdir'),
+                            # all values must be str; see #86
+                            'platsubdir': str(sysconfig.get_config_var('platsubdir')),
                            }
 
         if HAS_USER_SITE: