Add lzma support to tar extraction function.
authorStefan Westerfeld <stefan@space.twc.de>
Tue, 19 Jan 2010 16:41:56 +0000 (17:41 +0100)
committerStefan Westerfeld <stefan@space.twc.de>
Tue, 19 Jan 2010 16:41:56 +0000 (17:41 +0100)
utils.py

index 1f12587..1306bbd 100644 (file)
--- a/utils.py
+++ b/utils.py
@@ -24,7 +24,7 @@ import __builtin__
 import imp
 from Path import Path
 from config import config
-from buildutils import platform_is_win32, platform_is_unix
+from buildutils import platform_is_win32, platform_is_unix, call_log
 
 ### fetch functions
 
@@ -153,7 +153,7 @@ def unpackFile( downloaddir, filename, workdir ):
         return unZip (os.path.join (downloaddir.native(), filename), workdir)
     elif ( ext == ".tgz" ):
        return unTar (downloaddir.join (Path (filename)), workdir)
-    elif ( ext == ".gz" or ext == ".bz2" ):
+    elif ( ext == ".gz" or ext == ".bz2" or ext == ".lzma" ):
         ( myshortname, myext ) = os.path.splitext( shortname )
         if ( myext == ".tar" ):
             return unTar (downloaddir.join (Path (filename)), workdir)
@@ -176,6 +176,11 @@ def unTar( file, destdir ):
     elif (ext == ".bz2"):
         mode = "r:bz2"
 
+    if (ext == ".lzma"):
+        cmd="xz -dc %s | tar xCf %s -" % (file.msys(), destdir.msys())
+        call_log ([ "sh", "-c", cmd ])
+        return True
+
     tar = tarfile.open (file.native(), mode)
 
     # FIXME how to handle errors here ?