add supported tarball format
authorZhang Qiang <qiang.z.zhang@intel.com>
Thu, 22 Mar 2012 06:17:25 +0000 (14:17 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Thu, 22 Mar 2012 06:17:25 +0000 (14:17 +0800)
gitbuildsys/cmd_import.py
gitbuildsys/cmd_import_orig.py
gitbuildsys/errors.py
gitbuildsys/utils.py

index 5e58ce4bffd9ea4837e19cd9c8f3781afcf996f1..60151711fd5d92d75aad528dc255d120dbb0b110 100644 (file)
@@ -91,7 +91,9 @@ def do(opts, args):
     try:
         upstream.unpack(tardir)
     except errors.UnpackError:
-        msger.error('Unpacking %s fail' % tarball)
+        msger.error('Unpacking %s failed' % tarball)
+    except errors.FormatError, e:
+        msger.error(e.msg)
 
     tag = repo.version_to_tag("%(version)s", pkgversion)
     msg = "Upstream version %s" % (pkgversion)
index f4c2912526d0ac12d52693e607d9374b2dc7072c..c31fb7110c5441c4efd6f00484c1b0db602b1c73 100644 (file)
@@ -1,4 +1,4 @@
-/!/usr/bin/python -tt
+#!/usr/bin/python -tt
 # vim: ai ts=4 sts=4 et sw=4
 #
 # Copyright (c) 2012 Intel, Inc.
@@ -53,14 +53,16 @@ def do(opts, args):
         msger.error("No git repository found.")
 
     tardir = tempfile.mkdtemp(prefix='%s/' % (tmpdir))
-    msger.info('unpack upstream tar ball ...')
     upstream = utils.UpstreamTarball(tarball)
     (pkgname, pkgversion) = upstream.guess_version() or ('', '')
 
     try:
+        msger.info('unpack upstream tar ball ...')
         upstream.unpack(tardir)
     except errors.UnpackError:
-        msger.error('Unpacking %s fail' % tarball)
+        msger.error('Unpacking %s failed' % tarball)
+    except errors.FormatError, e:
+        msger.error(e.msg)
 
     tag = repo.version_to_tag("%(version)s", pkgversion)
     msg = "Upstream version %s" % (pkgversion)
index 6dab015ae57f4176c96cbaf27d890b33f253f56b..047372e0e37bd31146a0de5be9e1f69379ab30fb 100644 (file)
@@ -49,5 +49,8 @@ class ObsError(CmdError):
 class UnpackError(CmdError):
     keyword = '<unpack>'
 
+class FormatError(CmdError):
+    keyword = '<format>'
+
 class Abort(CmdError):
     keyword = ''
index ad18bb6258c53259731094f709b0ea4133ff9557..d1812e7d67a6ef20891ec1490ae08c89fbe5e2c1 100644 (file)
@@ -154,6 +154,17 @@ def get_hostarch():
         hostarch = 'i586'
     return hostarch
 
+def get_ext(file, level = 1):
+    """ get ext of specified file
+    """
+    ext = ''
+    for i in range(level):
+        (file, curext) = os.path.splitext(file)
+        if curext == '':
+           return ext
+        ext = curext+ext
+    return ext
+
 class UnpackTarArchive(object):
     """Wrap tar to unpack a compressed tar archive"""
     def __init__(self, archive, dir, filters=[], compression=None):
@@ -208,11 +219,19 @@ class UpstreamTarball(object):
         """
         Unpack packed upstream sources into a given directory.
         """
-        ext = os.path.splitext(self.path)[1]
-        if ext in [ ".zip", ".xpi" ]:
+        tarfmt = ['.tar.gz', '.tar.bz2', '.tar.xz', '.tar.lzma']
+        zipfmt = ['.zip', '.xpi']
+        ext = get_ext(self.path)
+        ext2= get_ext(self.path, level = 2)
+        if ext in zipfmt:
             self._unpack_zip(dir)
-        else:
+        elif ext in ['.tgz'] or ext2 in tarfmt:
             self._unpack_tar(dir, filters)
+        else:
+            raise errors.FormatError('%s format tar ball not support. '
+                                     'Supported format: %s' %
+                                    (ext if ext == ext2 else ext2,
+                                     ','.join(tarfmt + zipfmt)))
 
     def _unpack_zip(self, dir):
         UnpackZipArchive(self.path, dir)