]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-47146: Stop Depending On regen-deepfreeze For regen-global-objects (gh-32218)
authorEric Snow <ericsnowcurrently@gmail.com>
Thu, 31 Mar 2022 20:29:52 +0000 (14:29 -0600)
committerGitHub <noreply@github.com>
Thu, 31 Mar 2022 20:29:52 +0000 (14:29 -0600)
This effectively reverts the Makefile change in gh-31637. I've added some notes so it is more clear what is going on.

We also update the "Check if generated files are up to date" job to run "make regen-deepfreeze" to ensure "make regen-global-objects" catches deepfreeze.c.

https://bugs.python.org/issue47146

.github/workflows/build.yml
Makefile.pre.in
Tools/scripts/freeze_modules.py

index bda6dde37d1851cdf2ced42716bf0a3f7d41ee43..0ca8d3910814a83a73ca0273cfb64ca576906247 100644 (file)
@@ -82,6 +82,9 @@ jobs:
         run: make regen-configure
       - name: Build CPython
         run: |
+          # Deepfreeze will usually cause global objects to be added or removed,
+          # so we run it before regen-global-objects gets rum (in regen-all).
+          make regen-deepfreeze
           make -j4 regen-all
           make regen-stdlib-module-names
       - name: Check for changes
index e784b43d0362d45bd43c41fd74e3a62faeeb5cda..6dda71bc49cffd7aa3665599d187c613d217df5b 100644 (file)
@@ -1161,8 +1161,9 @@ Python/deepfreeze/deepfreeze.c: $(DEEPFREEZE_DEPS)
        Python/frozen_modules/__phello__.spam.h:__phello__.spam \
        Python/frozen_modules/frozen_only.h:frozen_only \
        -o Python/deepfreeze/deepfreeze.c
-
 # END: deepfreeze modules
+       @echo "Note: Deepfreeze may have added some global objects,"
+       @echo "      so run 'make regen-global-objects' if necessary."
 
 # We keep this renamed target around for folks with muscle memory.
 .PHONY: regen-importlib
@@ -1171,24 +1172,11 @@ regen-importlib: regen-frozen
 ############################################################################
 # Global objects
 
-GLOBAL_OBJECTS_TARGETS = \
-               $(srcdir)/Include/internal/pycore_global_objects.h \
-               $(srcdir)/Include/internal/pycore_global_strings.h
-
-# The global objects will get regenerated as soon these files
-# are required, including as a prerequisite for regen-deepfreeze.
-$(GLOBAL_OBJECTS_TARGETS): generate-global-objects
-
-.PHONY: generate-global-objects
-generate-global-objects: $(srcdir)/Tools/scripts/generate_global_objects.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
-
-.PHONY: generate-global-objects-after-deepfreeze
-generate-global-objects-after-deepfreeze: regen-deepfreeze $(srcdir)/Tools/scripts/generate_global_objects.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
-
 .PHONY: regen-global-objects
-regen-global-objects: regen-deepfreeze generate-global-objects-after-deepfreeze
+regen-global-objects: $(srcdir)/Tools/scripts/generate_global_objects.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
+       @echo "Note: Global objects can be added or removed by other tools (e.g. deepfreeze), "
+       @echo "      so be sure to re-run regen-global-objects after those tools."
 
 ############################################################################
 # ABI
index c8d8a7dd1fbab72daf607f9a62929ea313b89219..dd208c7847194381092606587f1a66c3ae2c3cdb 100644 (file)
@@ -606,7 +606,6 @@ def regen_makefile(modules):
         ])
         deepfreezerules.append(f"\t{frozen_header}:{src.frozenid} \\")
     deepfreezerules.append('\t-o Python/deepfreeze/deepfreeze.c')
-    deepfreezerules.append('')
     pyfiles[-1] = pyfiles[-1].rstrip(" \\")
     frozenfiles[-1] = frozenfiles[-1].rstrip(" \\")