bpo-43372: Use _freeze_importlib for regen-frozen. (GH-24759)

This approach ensures the code matches the interpreter version.
Previously, PYTHON_FOR_REGEN was used to generate the code, which might
be wrong. The marshal format for code objects has changed with
bpo-42246, commit 877df851. Update the code and the expected code sizes
in ctypes test_frozentable.
This commit is contained in:
Neil Schemenauer 2021-03-06 13:34:03 -08:00 committed by GitHub
parent 5eb7796b7f
commit 87ec26b812
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 23 deletions

View File

@ -80,9 +80,9 @@ class PythonValuesTestCase(unittest.TestCase):
continue continue
items.append((entry.name.decode("ascii"), entry.size)) items.append((entry.name.decode("ascii"), entry.size))
expected = [("__hello__", 125), expected = [("__hello__", 139),
("__phello__", -125), ("__phello__", -139),
("__phello__.spam", 125), ("__phello__.spam", 139),
] ]
self.assertEqual(items, expected, "PyImport_FrozenModules example " self.assertEqual(items, expected, "PyImport_FrozenModules example "
"in Doc/library/ctypes.rst may be out of date") "in Doc/library/ctypes.rst may be out of date")

View File

@ -871,9 +871,13 @@ regen-opcode:
$(UPDATE_FILE) $(srcdir)/Include/opcode.h $(srcdir)/Include/opcode.h.new $(UPDATE_FILE) $(srcdir)/Include/opcode.h $(srcdir)/Include/opcode.h.new
.PHONY: regen-frozen .PHONY: regen-frozen
regen-frozen: regen-frozen: Programs/_freeze_importlib
# Regenerate code for frozen module "__hello__". # Regenerate code for frozen module "__hello__".
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/freeze/regen_frozen.py $(srcdir)/Python/frozen_hello.h ./Programs/_freeze_importlib hello \
$(srcdir)/Tools/freeze/flag.py \
$(srcdir)/Python/frozen_hello.h.new
$(UPDATE_FILE) $(srcdir)/Python/frozen_hello.h \
$(srcdir)/Python/frozen_hello.h.new
.PHONY: regen-token .PHONY: regen-token
regen-token: regen-token:

View File

@ -0,0 +1,5 @@
Use ``_freeze_importlib`` to generate code for the ``__hello__`` module.
This approach ensures the code matches the interpreter version. Previously,
PYTHON_FOR_REGEN was used to generate the code, which might be wrong. The
marshal format for code objects has changed with bpo-42246, commit 877df851.
Update the code and the expected code sizes in ctypes test_frozentable.

View File

@ -11,12 +11,11 @@
some famous words... */ some famous words... */
/* Run "make regen-frozen" to regen the file below (e.g. after a bytecode /* Run "make regen-frozen" to regen the file below (e.g. after a bytecode
* format change). The file is created by Tools/frozen/regen_frozen.py. The * format change). The include file defines _Py_M__hello as an array of bytes.
* include file defines M___hello__ as an array of bytes.
*/ */
#include "frozen_hello.h" #include "frozen_hello.h"
#define SIZE (int)sizeof(M___hello__) #define SIZE (int)sizeof(_Py_M__hello)
static const struct _frozen _PyImport_FrozenModules[] = { static const struct _frozen _PyImport_FrozenModules[] = {
/* importlib */ /* importlib */
@ -27,10 +26,10 @@ static const struct _frozen _PyImport_FrozenModules[] = {
{"zipimport", _Py_M__zipimport, {"zipimport", _Py_M__zipimport,
(int)sizeof(_Py_M__zipimport)}, (int)sizeof(_Py_M__zipimport)},
/* Test module */ /* Test module */
{"__hello__", M___hello__, SIZE}, {"__hello__", _Py_M__hello, SIZE},
/* Test package (negative size indicates package-ness) */ /* Test package (negative size indicates package-ness) */
{"__phello__", M___hello__, -SIZE}, {"__phello__", _Py_M__hello, -SIZE},
{"__phello__.spam", M___hello__, SIZE}, {"__phello__.spam", _Py_M__hello, SIZE},
{0, 0, 0} /* sentinel */ {0, 0, 0} /* sentinel */
}; };

View File

@ -1,13 +1,12 @@
/* Generated with Tools/freeze/regen_frozen.py */ /* Auto-generated by Programs/_freeze_importlib.c */
static unsigned char M___hello__[] = { const unsigned char _Py_M__hello[] = {
227,0,0,0,0,0,0,0,0,0,0,0,0, 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,2,0,0,0,64,0,0,0,115, 0,2,0,0,0,64,0,0,0,115,16,0,0,0,100,0,
16,0,0,0,100,0,90,0,101,1,100,1,131, 90,0,101,1,100,1,131,1,1,0,100,2,83,0,41,3,
1,1,0,100,2,83,0,41,3,84,122,12,72, 84,122,12,72,101,108,108,111,32,119,111,114,108,100,33,78,
101,108,108,111,32,119,111,114,108,100,33,78,41, 41,2,90,11,105,110,105,116,105,97,108,105,122,101,100,218,
2,90,11,105,110,105,116,105,97,108,105,122,101, 5,112,114,105,110,116,169,0,114,1,0,0,0,114,1,0,
100,218,5,112,114,105,110,116,169,0,114,2,0, 0,0,122,14,60,102,114,111,122,101,110,32,104,101,108,108,
0,0,114,2,0,0,0,218,4,110,111,110,101, 111,62,218,8,60,109,111,100,117,108,101,62,1,0,0,0,
218,8,60,109,111,100,117,108,101,62,1,0,0, 115,6,0,0,0,4,0,12,1,255,128,
0,115,2,0,0,0,4,1,
}; };