- added source tarball decompression
diff --git a/devtools/tarball.py b/devtools/tarball.py
index 2ce261a..182602e 100644
--- a/devtools/tarball.py
+++ b/devtools/tarball.py
@@ -29,13 +29,25 @@
path_in_tar = archive_name(path)
tar.add(path, path_in_tar )
compression = TARGZ_DEFAULT_COMPRESSION_LEVEL
- fileobj = gzip.GzipFile( tarball_path, 'wb', compression )
- tar = tarfile.TarFile(os.path.splitext(tarball_path)[0], 'w', fileobj)
- for source in sources:
- source_path = source
- if os.path.isdir( source ):
- os.path.walk(source_path, visit, tar)
- else:
- path_in_tar = archive_name(source_path)
- tar.add(source_path, path_in_tar ) # filename, arcname
- tar.close()
+ tar = tarfile.TarFile.gzopen( tarball_path, 'w', compresslevel=compression )
+ try:
+ for source in sources:
+ source_path = source
+ if os.path.isdir( source ):
+ os.path.walk(source_path, visit, tar)
+ else:
+ path_in_tar = archive_name(source_path)
+ tar.add(source_path, path_in_tar ) # filename, arcname
+ finally:
+ tar.close()
+
+def decompress( tarball_path, base_dir ):
+ """Decompress the gzipped tarball into directory base_dir.
+ """
+ # !!! This class method is not documented in the online doc
+ # nor is bz2open!
+ tar = tarfile.TarFile.gzopen(tarball_path, mode='r')
+ try:
+ tar.extractall( base_dir )
+ finally:
+ tar.close()