UpstreamSource/guess_version: detect more compression formats
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Thu, 27 Sep 2012 07:24:28 +0000 (10:24 +0300)
committerGuido Günther <agx@sigxcpu.org>
Thu, 24 Jul 2014 17:52:00 +0000 (19:52 +0200)
By utilizing the parse_archive_filename() function that detects e.g.
"alias suffixes" such as 'tgz'.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
gbp/pkg/__init__.py

index 52d346919f45f5ae6159a434317031870cbf22b1..18ca81256fb9fc8b8c9062dbc54a1cb40389317d 100644 (file)
@@ -352,6 +352,10 @@ class UpstreamSource(object):
         ('foo-bar', '0.2')
         >>> UpstreamSource('foo-bar_0.2.orig.tar.lzma').guess_version()
         ('foo-bar', '0.2')
+        >>> UpstreamSource('foo-bar-0.2.zip').guess_version()
+        ('foo-bar', '0.2')
+        >>> UpstreamSource('foo-bar-0.2.tlz').guess_version()
+        ('foo-bar', '0.2')
 
         @param extra_regex: additional regex to apply, needs a 'package' and a
                             'version' group
@@ -360,20 +364,20 @@ class UpstreamSource(object):
         """
         version_chars = r'[a-zA-Z\d\.\~\-\:\+]'
         if self.is_dir():
-            extensions = ''
+            basename = os.path.basename(self.path)
         else:
-            extensions = r'\.tar\.(%s)' % "|".join(self.known_compressions())
+            basename = parse_archive_filename(os.path.basename(self.path))[0]
 
-        version_filters = map ( lambda x: x % (version_chars, extensions),
+        version_filters = map ( lambda x: x % version_chars,
                            ( # Debian upstream tarball: package_'<version>.orig.tar.gz'
-                             r'^(?P<package>[a-z\d\.\+\-]+)_(?P<version>%s+)\.orig%s',
+                             r'^(?P<package>[a-z\d\.\+\-]+)_(?P<version>%s+)\.orig',
                              # Upstream 'package-<version>.tar.gz'
                              # or directory 'package-<version>':
-                             r'^(?P<package>[a-zA-Z\d\.\+\-]+)-(?P<version>[0-9]%s*)%s'))
+                             r'^(?P<package>[a-zA-Z\d\.\+\-]+)-(?P<version>[0-9]%s*)'))
         if extra_regex:
             version_filters = extra_regex + version_filters
 
         for filter in version_filters:
-            m = re.match(filter, os.path.basename(self.path))
+            m = re.match(filter, basename)
             if m:
                 return (m.group('package'), m.group('version'))