bpo-41282: Fix broken make install (GH-26329) · python/cpython@1c454eb (original) (raw)

Original file line number Diff line number Diff line change
@@ -37,12 +37,19 @@
37 37
38 38 # Copy from sysconfig._INSTALL_SCHEMES
39 39 for key in SCHEME_KEYS:
40 -sys_key = key
41 -if key == "headers":
42 -sys_key = "include"
43 -INSTALL_SCHEMES["unix_prefix"][key] = sysconfig._INSTALL_SCHEMES["posix_prefix"][sys_key]
44 -INSTALL_SCHEMES["unix_home"][key] = sysconfig._INSTALL_SCHEMES["posix_home"][sys_key]
45 -INSTALL_SCHEMES["nt"][key] = sysconfig._INSTALL_SCHEMES["nt"][sys_key]
40 +for distutils_scheme_name, sys_scheme_name in (
41 + ("unix_prefix", "posix_prefix"), ("unix_home", "posix_home"),
42 + ("nt", "nt")):
43 +sys_key = key
44 +sys_scheme = sysconfig._INSTALL_SCHEMES[sys_scheme_name]
45 +if key == "headers" and key not in sys_scheme:
46 +# On POSIX-y platofrms, Python will:
47 +# - Build from .h files in 'headers' (only there when
48 +# building CPython)
49 +# - Install .h files to 'include'
50 +# When 'headers' is missing, fall back to 'include'
51 +sys_key = 'include'
52 +INSTALL_SCHEMES[distutils_scheme_name][key] = sys_scheme[sys_key]
46 53
47 54 # Transformation to different template format
48 55 for main_key in INSTALL_SCHEMES:
@@ -316,6 +323,9 @@ def finalize_options(self):
316 323 self.config_vars['userbase'] = self.install_userbase
317 324 self.config_vars['usersite'] = self.install_usersite
318 325
326 +if sysconfig.is_python_build(True):
327 +self.config_vars['srcdir'] = sysconfig.get_config_var('srcdir')
328 +
319 329 self.expand_basedirs()
320 330
321 331 self.dump_dirs("post-expand_basedirs()")