diff -r ec81edc30221 Tools/freeze/bkfile.py --- a/Tools/freeze/bkfile.py Sat Nov 08 22:41:00 2014 +0200 +++ b/Tools/freeze/bkfile.py Sun Nov 09 15:42:46 2014 +0200 @@ -33,6 +33,12 @@ class _BkFile: self.write = self.__file.write self.writelines = self.__file.writelines + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + def close(self): self.__file.close() if self.__backup is None: diff -r ec81edc30221 Tools/freeze/freeze.py --- a/Tools/freeze/freeze.py Sat Nov 08 22:41:00 2014 +0200 +++ b/Tools/freeze/freeze.py Sun Nov 09 15:42:46 2014 +0200 @@ -451,13 +451,9 @@ def main(): # generate config.c and Makefile builtins.sort() - infp = open(config_c_in) - outfp = bkfile.open(config_c, 'w') - try: + with open(config_c_in) as infp, \ + bkfile.open(config_c, 'w') as outfp: makeconfig.makeconfig(infp, outfp, builtins) - finally: - outfp.close() - infp.close() cflags = ['$(OPT)'] cppflags = defines + includes @@ -475,11 +471,8 @@ def main(): files + supp_sources + addfiles + libs + \ ['$(MODLIBS)', '$(LIBS)', '$(SYSLIBS)'] - outfp = bkfile.open(makefile, 'w') - try: + with bkfile.open(makefile, 'w') as outfp: makemakefile.makemakefile(outfp, somevars, files, base_target) - finally: - outfp.close() # Done! diff -r ec81edc30221 Tools/freeze/makefreeze.py --- a/Tools/freeze/makefreeze.py Sat Nov 08 22:41:00 2014 +0200 +++ b/Tools/freeze/makefreeze.py Sun Nov 09 15:42:46 2014 +0200 @@ -39,36 +39,34 @@ def makefreeze(base, dict, debug=0, entr mangled = "__".join(mod.split(".")) if m.__code__: file = 'M_' + mangled + '.c' - outfp = bkfile.open(base + file, 'w') - files.append(file) - if debug: - print("freezing", mod, "...") - str = marshal.dumps(m.__code__) - size = len(str) - if m.__path__: - # Indicate package by negative size - size = -size - done.append((mod, mangled, size)) - writecode(outfp, mangled, str) - outfp.close() + with bkfile.open(base + file, 'w') as outfp: + files.append(file) + if debug: + print("freezing", mod, "...") + str = marshal.dumps(m.__code__) + size = len(str) + if m.__path__: + # Indicate package by negative size + size = -size + done.append((mod, mangled, size)) + writecode(outfp, mangled, str) if debug: print("generating table of frozen modules") - outfp = bkfile.open(base + 'frozen.c', 'w') - for mod, mangled, size in done: - outfp.write('extern unsigned char M_%s[];\n' % mangled) - outfp.write(header) - for mod, mangled, size in done: - outfp.write('\t{"%s", M_%s, %d},\n' % (mod, mangled, size)) - outfp.write('\n') - # The following modules have a NULL code pointer, indicating - # that the frozen program should not search for them on the host - # system. Importing them will *always* raise an ImportError. - # The zero value size is never used. - for mod in fail_import: - outfp.write('\t{"%s", NULL, 0},\n' % (mod,)) - outfp.write(trailer) - outfp.write(entry_point) - outfp.close() + with bkfile.open(base + 'frozen.c', 'w') as outfp: + for mod, mangled, size in done: + outfp.write('extern unsigned char M_%s[];\n' % mangled) + outfp.write(header) + for mod, mangled, size in done: + outfp.write('\t{"%s", M_%s, %d},\n' % (mod, mangled, size)) + outfp.write('\n') + # The following modules have a NULL code pointer, indicating + # that the frozen program should not search for them on the host + # system. Importing them will *always* raise an ImportError. + # The zero value size is never used. + for mod in fail_import: + outfp.write('\t{"%s", NULL, 0},\n' % (mod,)) + outfp.write(trailer) + outfp.write(entry_point) return files