Mercurial > bitten > bitten-test
changeset 235:b8b0b0765237
* Close snapshot archive files after unpacking, so that they can be deleted after the build on win32.
* Fix logging of failures in `shtools`.
author | cmlenz |
---|---|
date | Fri, 30 Sep 2005 17:00:29 +0000 |
parents | 7297fdb90255 |
children | 34202d89f57d |
files | bitten/build/shtools.py bitten/util/archive.py |
diffstat | 2 files changed, 30 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/build/shtools.py +++ b/bitten/build/shtools.py @@ -56,7 +56,8 @@ output_file.close() if cmdline.returncode != 0: - ctxt.error('Executing %s failed (%s)' % (file_, cmdline.returncode)) + ctxt.error('Executing %s failed (%s)' % (executable, + cmdline.returncode)) def pipe(ctxt, executable=None, file_=None, input_=None, output=None, args=None): @@ -107,5 +108,5 @@ output_file.close() if cmdline.returncode != 0: - ctxt.error('Piping through %s failed (%s)' % (file_, + ctxt.error('Piping through %s failed (%s)' % (executable, cmdline.returncode))
--- a/bitten/util/archive.py +++ b/bitten/util/archive.py @@ -98,9 +98,10 @@ archive.writestr(info, node.get_content().read()) except zipfile.error, e: raise Error, e - _add_entry(root) - - archive.close() + try: + _add_entry(root) + finally: + archive.close() return filename @@ -119,24 +120,34 @@ if format in ('bzip2', 'gzip'): try: tar_file = tarfile.open(filename) - for tarinfo in tar_file: - names.append(tarinfo.name) - tar_file.extract(tarinfo, dest_path) + try: + for tarinfo in tar_file: + names.append(tarinfo.name) + tar_file.extract(tarinfo, dest_path) + finally: + tar_file.close() except tarfile.TarError, e: raise Error, e elif format == 'zip': try: zip_file = zipfile.ZipFile(filename, 'r') - for name in zip_file.namelist(): - names.append(name) - path = os.path.join(dest_path, name) - if name.endswith('/'): - os.makedirs(path) - else: - dirname = os.path.dirname(path) - if not os.path.isdir(dirname): - os.makedirs(dirname) - file(path, 'wb').write(zip_file.read(name)) + try: + for name in zip_file.namelist(): + names.append(name) + path = os.path.join(dest_path, name) + if name.endswith('/'): + os.makedirs(path) + else: + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + dest_file = file(path, 'wb') + try: + dest_file.write(zip_file.read(name)) + finally: + dest_file.close() + finally: + zip_file.close() except (IOError, zipfile.error), e: raise Error, e return os.path.commonprefix(names)