- 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()