@@ -39,36 +39,34 @@ def makefreeze(base, dict, debug=0, entry_point=None, fail_import=()):
3939 mangled = "__" .join (mod .split ("." ))
4040 if m .__code__ :
4141 file = 'M_' + mangled + '.c'
42- outfp = bkfile .open (base + file , 'w' )
43- files .append (file )
44- if debug :
45- print ("freezing" , mod , "..." )
46- str = marshal .dumps (m .__code__ )
47- size = len (str )
48- if m .__path__ :
49- # Indicate package by negative size
50- size = - size
51- done .append ((mod , mangled , size ))
52- writecode (outfp , mangled , str )
53- outfp .close ()
42+ with bkfile .open (base + file , 'w' ) as outfp :
43+ files .append (file )
44+ if debug :
45+ print ("freezing" , mod , "..." )
46+ str = marshal .dumps (m .__code__ )
47+ size = len (str )
48+ if m .__path__ :
49+ # Indicate package by negative size
50+ size = - size
51+ done .append ((mod , mangled , size ))
52+ writecode (outfp , mangled , str )
5453 if debug :
5554 print ("generating table of frozen modules" )
56- outfp = bkfile .open (base + 'frozen.c' , 'w' )
57- for mod , mangled , size in done :
58- outfp .write ('extern unsigned char M_%s[];\n ' % mangled )
59- outfp .write (header )
60- for mod , mangled , size in done :
61- outfp .write ('\t {"%s", M_%s, %d},\n ' % (mod , mangled , size ))
62- outfp .write ('\n ' )
63- # The following modules have a NULL code pointer, indicating
64- # that the frozen program should not search for them on the host
65- # system. Importing them will *always* raise an ImportError.
66- # The zero value size is never used.
67- for mod in fail_import :
68- outfp .write ('\t {"%s", NULL, 0},\n ' % (mod ,))
69- outfp .write (trailer )
70- outfp .write (entry_point )
71- outfp .close ()
55+ with bkfile .open (base + 'frozen.c' , 'w' ) as outfp :
56+ for mod , mangled , size in done :
57+ outfp .write ('extern unsigned char M_%s[];\n ' % mangled )
58+ outfp .write (header )
59+ for mod , mangled , size in done :
60+ outfp .write ('\t {"%s", M_%s, %d},\n ' % (mod , mangled , size ))
61+ outfp .write ('\n ' )
62+ # The following modules have a NULL code pointer, indicating
63+ # that the frozen program should not search for them on the host
64+ # system. Importing them will *always* raise an ImportError.
65+ # The zero value size is never used.
66+ for mod in fail_import :
67+ outfp .write ('\t {"%s", NULL, 0},\n ' % (mod ,))
68+ outfp .write (trailer )
69+ outfp .write (entry_point )
7270 return files
7371
7472
0 commit comments