[Python-checkins] bpo-45886: Fix OOT build when srcdir has frozen module headers (GH-29793)

tiran webhook-mailer at python.org
Fri Nov 26 11:05:25 EST 2021

commit: 765b2a3ad2e8abf9a06d5e9b3802b575ec115d76
branch: main
author: Christian Heimes <christian at python.org>
committer: tiran <christian at python.org>
date: 2021-11-26T17:05:16+01:00

bpo-45886: Fix OOT build when srcdir has frozen module headers (GH-29793)

The presence of frozen module headers in srcdir interfers with OOT
build. Make considers headers in srcdir up to date, but later builds do
not use VPATH to locate files. make clean now removes the headers, too.

Also remove stale ``_bootstrap_python`` from .gitignore.

M .gitignore
M Makefile.pre.in

diff --git a/.gitignore b/.gitignore
index cfd3163cd1818..0363244bdaf63 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,7 +60,6 @@ Lib/distutils/command/*.pdb
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 75d3bce946f42..fc8ab99babcdb 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -587,7 +587,10 @@ build_all:	check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \
 # Check that the source is clean when building out of source.
-	@if test -n "$(VPATH)" -a -f "$(srcdir)/Programs/python.o"; then \
+	@if test -n "$(VPATH)" -a \( \
+	    -f "$(srcdir)/Programs/python.o" \
+	    -o -f "$(srcdir)\Python/frozen_modules/importlib._bootstrap.h" \
+	\); then \
 		echo "Error: The source directory ($(srcdir)) is not clean" ; \
 		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
 		echo "Try to run: make -C \"$(srcdir)\" clean" ; \
@@ -2293,6 +2296,8 @@ clean-retain-profile: pycremoval
 	-rm -f Lib/lib2to3/*Grammar*.pickle
 	-rm -f Programs/_testembed Programs/_freeze_module
 	-rm -f Python/deepfreeze/*.[co]
+	-rm -f Python/frozen_modules/*.h
+	-rm -f Python/frozen_modules/MANIFEST
 	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
 	-rm -f Include/pydtrace_probes.h
 	-rm -f profile-gen-stamp
@@ -2330,8 +2335,6 @@ distclean: clobber
 		Modules/Setup.stdlib Modules/ld_so_aix Modules/python.exp Misc/python.pc \
 		Misc/python-embed.pc Misc/python-config.sh
 	-rm -f python*-gdb.py
-	-rm -f Python/frozen_modules/*.h
-	-rm -f Python/frozen_modules/MANIFEST
 	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
 	# Expansion is performed here by shell (spawned by make) itself before
 	# arguments are passed to find. So LC_ALL=C must be set as a separate

More information about the Python-checkins mailing list