]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-41282: Fix broken `make install` (GH-26329)
authorPetr Viktorin <encukou@gmail.com>
Mon, 24 May 2021 22:48:44 +0000 (00:48 +0200)
committerGitHub <noreply@github.com>
Mon, 24 May 2021 22:48:44 +0000 (18:48 -0400)
commit563bd5a4dcc6a26e47966cb66db64859902bce76
treedc3fd08c08b22a95be0f0c2033a3e2d68a60b629
parent7148293d96843ca868961313b00361504ec0c242
bpo-41282: Fix broken `make install` (GH-26329)

A previous commit broke a check in sysconfig when building cpython itself.
This caused builds of the standard library modules to search a wrong
location (the installed location rather than the source directory) for
header files with the net effect that a ``make install``
incorrectly caused all extension modules to be rebuilt again and
with incorrect include file paths.

When building Python, we need two distinct "include" directories:
- source .h files
- install target for .h files

Note that this doesn't matter except when building Python from source.

Historically:
- source .h files were in the distutils scheme under 'include'
- the install directory was in the distutils.command.install scheme
    under 'headers'

GH-24549 merged these; sysconfig is now the single source of truth and
distutils is derived from it.

This commit introduces a "secret" scheme path, 'headers', which contains
the install target. It is only present when building Python.
The distutils code uses it if present, and falls back to 'include'.

Co-authored-by: Ned Deily <nad@python.org>
Lib/distutils/command/install.py
Lib/sysconfig.py
Misc/NEWS.d/next/Build/2021-05-24-03-31-17.bpo-41282.L8nP44.rst [new file with mode: 0644]