]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-47146: Eliminate a race between make regen-deepfreeze and make regen-global-objec...
authorEric Snow <ericsnowcurrently@gmail.com>
Mon, 28 Mar 2022 20:56:05 +0000 (14:56 -0600)
committerGitHub <noreply@github.com>
Mon, 28 Mar 2022 20:56:05 +0000 (14:56 -0600)
The race likely originated with gh-32061.

https://bugs.python.org/issue47146

Makefile.pre.in

index fb5dd6a066c7df919246c420010fea340a5ac3d7..e6c6a6ba53a6d41d2e1a403fd0a2e745872b3d73 100644 (file)
@@ -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
 
 ############################################################################