summaryrefslogtreecommitdiff
path: root/gbp/pkg/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'gbp/pkg/__init__.py')
-rw-r--r--gbp/pkg/__init__.py39
1 files changed, 27 insertions, 12 deletions
diff --git a/gbp/pkg/__init__.py b/gbp/pkg/__init__.py
index f02caf01..8162286b 100644
--- a/gbp/pkg/__init__.py
+++ b/gbp/pkg/__init__.py
@@ -38,9 +38,9 @@ compressor_aliases = { 'bz2' : 'bzip2',
'gz' : 'gzip', }
# Supported archive formats
-arhive_formats = [ 'tar', 'zip' ]
+archive_formats = [ 'tar', 'zip' ]
-# Map combined file extensions to arhive and compression format
+# Map combined file extensions to archive and compression format
archive_ext_aliases = { 'tgz' : ('tar', 'gzip'),
'tbz2' : ('tar', 'bzip2'),
'tlz' : ('tar', 'lzma'),
@@ -82,7 +82,7 @@ def parse_archive_filename(filename):
if split[-1] in archive_ext_aliases:
base_name = ".".join(split[:-1])
(archive_fmt, compression) = archive_ext_aliases[split[-1]]
- elif split[-1] in arhive_formats:
+ elif split[-1] in archive_formats:
base_name = ".".join(split[:-1])
(archive_fmt, compression) = (split[-1], None)
else:
@@ -90,7 +90,7 @@ def parse_archive_filename(filename):
if o[1] == split[-1]:
base_name = ".".join(split[:-1])
compression = c
- if len(split) > 2 and split[-2] in arhive_formats:
+ if len(split) > 2 and split[-2] in archive_formats:
base_name = ".".join(split[:-2])
archive_fmt = split[-2]
@@ -142,8 +142,8 @@ class PkgPolicy(object):
return True
return False
- @classmethod
- def guess_upstream_src_version(cls, filename, extra_regex=r''):
+ @staticmethod
+ def guess_upstream_src_version(filename, extra_regex=r''):
"""
Guess the package name and version from the filename of an upstream
archive.
@@ -158,7 +158,7 @@ class PkgPolicy(object):
>>> PkgPolicy.guess_upstream_src_version('foo-bar_0.2.orig.tar.gz')
('foo-bar', '0.2')
>>> PkgPolicy.guess_upstream_src_version('foo-Bar_0.2.orig.tar.gz')
- ('foo-Bar', '0.2.orig')
+ ('', '')
>>> PkgPolicy.guess_upstream_src_version('git-bar-0.2.tar.gz')
('git-bar', '0.2')
>>> PkgPolicy.guess_upstream_src_version('git-bar-0.2-rc1.tar.gz')
@@ -175,14 +175,14 @@ class PkgPolicy(object):
('', '')
>>> PkgPolicy.guess_upstream_src_version('foo-bar_0.2.orig.tar.xz')
('foo-bar', '0.2')
- >>> PkgPolicy.guess_upstream_src_version('foo-bar_0.2.tar.gz')
- ('foo-bar', '0.2')
>>> PkgPolicy.guess_upstream_src_version('foo-bar_0.2.orig.tar.lzma')
('foo-bar', '0.2')
>>> PkgPolicy.guess_upstream_src_version('foo-bar-0.2.zip')
('foo-bar', '0.2')
>>> PkgPolicy.guess_upstream_src_version('foo-bar-0.2.tlz')
('foo-bar', '0.2')
+ >>> PkgPolicy.guess_upstream_src_version('foo-bar_0.2.tar.gz')
+ ('foo-bar', '0.2')
"""
version_chars = r'[a-zA-Z\d\.\~\-\:\+]'
basename = parse_archive_filename(os.path.basename(filename))[0]
@@ -190,10 +190,11 @@ class PkgPolicy(object):
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',
+ # Debian native: 'package_<version>.tar.gz'
+ r'^(?P<package>[a-z\d\.\+\-]+)_(?P<version>%s+)',
# Upstream 'package-<version>.tar.gz'
- # or Debian native 'package_<version>.tar.gz'
# or directory 'package-<version>':
- r'^(?P<package>[a-zA-Z\d\.\+\-]+)(-|_)(?P<version>[0-9]%s*)'))
+ r'^(?P<package>[a-zA-Z\d\.\+\-]+)(-)(?P<version>[0-9]%s*)'))
if extra_regex:
version_filters = extra_regex + version_filters
@@ -358,7 +359,7 @@ class UpstreamSource(object):
files.append((typ, info.filename))
elif self._archive_fmt == 'tar':
popen = subprocess.Popen(['tar', '-t', '-v', '-f', self.path],
- stdout=subprocess.PIPE)
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, _err = popen.communicate()
if popen.returncode:
raise GbpError("Listing tar archive content failed")
@@ -379,11 +380,25 @@ class UpstreamSource(object):
@property
def archive_fmt(self):
"""Archive format of the sources, e.g. 'tar'"""
+ """
+ >>> UpstreamSource('foo/bar.tar.gz').archive_fmt
+ 'tar'
+ >>> UpstreamSource('foo.bar.zip').archive_fmt
+ 'zip'
+ >>> UpstreamSource('foo.bar.baz').archive_fmt
+ """
return self._archive_fmt
@property
def compression(self):
"""Compression format of the sources, e.g. 'gzip'"""
+ """
+ >>> UpstreamSource('foo/bar.tar.gz').compression
+ 'gzip'
+ >>> UpstreamSource('foo.bar.zip').compression
+ >>> UpstreamSource('foo.bz2').compression
+ 'bzip2'
+ """
return self._compression
@property