[Python-checkins] bpo-47146: Eliminate a race between make regen-deepfreeze and make regen-global-objects. (gh-32162)

ericsnowcurrently webhook-mailer at python.org
Mon Mar 28 16:56:16 EDT 2022


https://github.com/python/cpython/commit/4c116f716bd1c174d6530b9a7a5ed3863927a109
commit: 4c116f716bd1c174d6530b9a7a5ed3863927a109
branch: main
author: Eric Snow <ericsnowcurrently at gmail.com>
committer: ericsnowcurrently <ericsnowcurrently at gmail.com>
date: 2022-03-28T14:56:05-06:00
summary:

bpo-47146: Eliminate a race between make regen-deepfreeze and make regen-global-objects. (gh-32162)

The race likely originated with gh-32061.

https://bugs.python.org/issue47146

files:
M Makefile.pre.in

diff --git a/Makefile.pre.in b/Makefile.pre.in
index fb5dd6a066c7d..e6c6a6ba53a6d 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1136,7 +1136,10 @@ regen-frozen: Tools/scripts/freeze_modules.py $(FROZEN_FILES_IN)
 # Deepfreeze targets
 
 .PHONY: regen-deepfreeze
-regen-deepfreeze: $(DEEPFREEZE_OBJS)
+regen-deepfreeze:
+	@# Possibly generate globals first, to make sure _bootstrap_python builds.
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
+	$(MAKE) $(DEEPFREEZE_OBJS)
 
 DEEPFREEZE_DEPS=$(srcdir)/Tools/scripts/deepfreeze.py $(FREEZE_MODULE_DEPS) $(FROZEN_FILES_OUT)
 
@@ -1178,12 +1181,10 @@ regen-importlib: regen-frozen
 # Global objects
 
 .PHONY: regen-global-objects
-regen-global-objects: $(srcdir)/Tools/scripts/generate_global_objects.py
-	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
-	@# Run one more time after deepfreezing, to catch any globals added
-	@# there.  This is necessary because the deep-frozen code isn't
-	@# commited to the repo.
-	$(MAKE) regen-deepfreeze
+regen-global-objects: regen-deepfreeze
+	@# We already ran in once, before deepfreezing, to make sure
+	@# _bootstrap_python builds.  Now we run it again to catch any
+	@# remaining globals, including those added by deepfreeze.
 	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
 
 ############################################################################



More information about the Python-checkins mailing list