diff options
| author | Christian Heimes <christian@python.org> | 2021-12-13 21:48:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-13 20:48:46 +0100 |
| commit | eb483c46d62707bdf705491f76cf1fa9642fb47e (patch) | |
| tree | 27c95eb873672fd8433962ddad5503c3e193924a /Tools/scripts | |
| parent | a62be77266b1beadd42d4952186332bc0847b7d6 (diff) | |
| download | cpython-git-eb483c46d62707bdf705491f76cf1fa9642fb47e.tar.gz | |
bpo-45949: Pure Python freeze module for cross builds (GH-29899)
Diffstat (limited to 'Tools/scripts')
| -rw-r--r-- | Tools/scripts/deepfreeze.py | 5 | ||||
| -rw-r--r-- | Tools/scripts/freeze_modules.py | 19 |
2 files changed, 18 insertions, 6 deletions
diff --git a/Tools/scripts/deepfreeze.py b/Tools/scripts/deepfreeze.py index 30ca7bb0b6..002d680e10 100644 --- a/Tools/scripts/deepfreeze.py +++ b/Tools/scripts/deepfreeze.py @@ -393,13 +393,14 @@ _Py_get_%%NAME%%_toplevel(void) } """ -FROZEN_COMMENT = "/* Auto-generated by Programs/_freeze_module.c */" +FROZEN_COMMENT_C = "/* Auto-generated by Programs/_freeze_module.c */" +FROZEN_COMMENT_PY = "/* Auto-generated by Programs/_freeze_module.py */" FROZEN_DATA_LINE = r"\s*(\d+,\s*)+\s*" def is_frozen_header(source: str) -> bool: - return source.startswith(FROZEN_COMMENT) + return source.startswith((FROZEN_COMMENT_C, FROZEN_COMMENT_PY)) def decode_frozen_data(source: str) -> types.CodeType: diff --git a/Tools/scripts/freeze_modules.py b/Tools/scripts/freeze_modules.py index 58d1398560..cbe8bf1ce6 100644 --- a/Tools/scripts/freeze_modules.py +++ b/Tools/scripts/freeze_modules.py @@ -264,6 +264,10 @@ class FrozenSource(namedtuple('FrozenSource', 'id pyfile frozenfile deepfreezefi else: return os.path.basename(self.pyfile) == '__init__.py' + @property + def isbootstrap(self): + return self.id in BOOTSTRAP + def resolve_frozen_file(frozenid, destdir): """Return the filename corresponding to the given frozen ID. @@ -476,7 +480,7 @@ def regen_frozen(modules): indent = ' ' lastsection = None for mod in modules: - if mod.frozenid in BOOTSTRAP: + if mod.isbootstrap: lines = bootstraplines elif mod.section == TESTS_SECTION: lines = testlines @@ -585,10 +589,17 @@ def regen_makefile(modules): pyfile = relpath_for_posix_display(src.pyfile, ROOT_DIR) pyfiles.append(f'\t\t{pyfile} \\') - freeze = (f'$(FREEZE_MODULE) {src.frozenid} ' - f'$(srcdir)/{pyfile} {frozen_header}') + if src.isbootstrap: + freezecmd = '$(FREEZE_MODULE_BOOTSTRAP)' + freezedep = '$(FREEZE_MODULE_BOOTSTRAP_DEPS)' + else: + freezecmd = '$(FREEZE_MODULE)' + freezedep = '$(FREEZE_MODULE_DEPS)' + + freeze = (f'{freezecmd} {src.frozenid} ' + f'$(srcdir)/{pyfile} {frozen_header}') rules.extend([ - f'{frozen_header}: $(FREEZE_MODULE) {pyfile}', + f'{frozen_header}: {pyfile} {freezedep}', f'\t{freeze}', '', ]) |
