Changeset View
Changeset View
Standalone View
Standalone View
ext/python/Tools/freeze/makefreeze.py
Show All 37 Lines | def makefreeze(base, dict, debug=0, entry_point=None, fail_import=()): | ||||
for mod in mods: | for mod in mods: | ||||
m = dict[mod] | m = dict[mod] | ||||
mangled = "__".join(mod.split(".")) | mangled = "__".join(mod.split(".")) | ||||
if m.__code__: | if m.__code__: | ||||
file = 'M_' + mangled + '.c' | file = 'M_' + mangled + '.c' | ||||
outfp = bkfile.open(base + file, 'w') | outfp = bkfile.open(base + file, 'w') | ||||
files.append(file) | files.append(file) | ||||
if debug: | if debug: | ||||
print "freezing", mod, "..." | print("freezing", mod, "...") | ||||
str = marshal.dumps(m.__code__) | str = marshal.dumps(m.__code__) | ||||
size = len(str) | size = len(str) | ||||
if m.__path__: | if m.__path__: | ||||
# Indicate package by negative size | # Indicate package by negative size | ||||
size = -size | size = -size | ||||
done.append((mod, mangled, size)) | done.append((mod, mangled, size)) | ||||
writecode(outfp, mangled, str) | writecode(outfp, mangled, str) | ||||
outfp.close() | outfp.close() | ||||
if debug: | if debug: | ||||
print "generating table of frozen modules" | print("generating table of frozen modules") | ||||
outfp = bkfile.open(base + 'frozen.c', 'w') | outfp = bkfile.open(base + 'frozen.c', 'w') | ||||
for mod, mangled, size in done: | for mod, mangled, size in done: | ||||
outfp.write('extern unsigned char M_%s[];\n' % mangled) | outfp.write('extern unsigned char M_%s[];\n' % mangled) | ||||
outfp.write(header) | outfp.write(header) | ||||
for mod, mangled, size in done: | for mod, mangled, size in done: | ||||
outfp.write('\t{"%s", M_%s, %d},\n' % (mod, mangled, size)) | outfp.write('\t{"%s", M_%s, %d},\n' % (mod, mangled, size)) | ||||
outfp.write('\n') | outfp.write('\n') | ||||
# The following modules have a NULL code pointer, indicating | # The following modules have a NULL code pointer, indicating | ||||
Show All 26 Lines |