8000 bpo-47146: Avoid Using make Recursively (gh-32206) · python/cpython@db4dada · GitHub
[go: up one dir, main page]

Skip to content

Commit db4dada

Browse files
bpo-47146: Avoid Using make Recursively (gh-32206)
https://bugs.python.org/issue47146
1 parent f3d5715 commit db4dada

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

Makefile.pre.in

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1136,10 +1136,7 @@ regen-frozen: Tools/scripts/freeze_modules.py $(FROZEN_FILES_IN)
11361136
# Deepfreeze targets
11371137

11381138
.PHONY: regen-deepfreeze
1139-
regen-deepfreeze:
1140-
@# Possibly generate globals first, to make sure _bootstrap_python builds.
1141-
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
1142-
$(MAKE) $(DEEPFREEZE_OBJS)
1139+
regen-deepfreeze: $(DEEPFREEZE_OBJS)
11431140

11441141
DEEPFREEZE_DEPS=$(srcdir)/Tools/scripts/deepfreeze.py $(FREEZE_MODULE_DEPS) $(FROZEN_FILES_OUT)
11451142

@@ -1180,13 +1177,25 @@ regen-importlib: regen-frozen
11801177
############################################################################
11811178
# Global objects
11821179

1183-
.PHONY: regen-global-objects
1184-
regen-global-objects: regen-deepfreeze
1185-
@# We already ran in once, before deepfreezing, to make sure
1186-
@# _bootstrap_python builds. Now we run it again to catch any
1187-
@# remaining globals, including those added by deepfreeze.
1180+
GLOBAL_OBJECTS_TARGETS = \
1181+
$(srcdir)/Include/internal/pycore_global_objects.h \
1182+
$(srcdir)/Include/internal/pycore_global_strings.h
1183+
1184+
# The global objects will get regenerated as soon these files
1185+
# are required, including as a prerequisite for regen-deepfreeze.
1186+
$(GLOBAL_OBJECTS_TARGETS): generate-global-objects
1187+
1188+
.PHONY: generate-global-objects
1189+
generate-global-objects: $(srcdir)/Tools/scripts/generate_global_objects.py
11881190
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
11891191

1192+
.PHONY: generate-global-objects-after-deepfreeze
1193+
generate-global-objects-after-deepfreeze: regen-deepfreeze $(srcdir)/Tools/scripts/generate_global_objects.py
1194+
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
1195+
1196+
.PHONY: regen-global-objects
1197+
regen-global-objects: regen-deepfreeze generate-global-objects-after-deepfreeze
1198+
11901199
############################################################################
11911200
# ABI
11921201

Tools/scripts/generate_global_objects.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,12 @@ def iter_global_strings():
115115
id_regex = re.compile(r'\b_Py_ID\((\w+)\)')
116116
str_regex = re.compile(r'\b_Py_DECLARE_STR\((\w+), "(.*?)"\)')
117117
for filename in iter_files():
118-
with open(filename, encoding='utf-8') as infile:
118+
try:
119+
infile = open(filename, encoding='utf-8')
120+
except FileNotFoundError:
121+
# The file must have been a temporary file.
122+
continue
123+
with infile:
119124
for lno, line in enumerate(infile, 1):
120125
for m in id_regex.finditer(line):
121126
identifier, = m.groups()

0 commit comments

Comments
 (0)
0