aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2016-06-30 10:57:43 +0200
committerGuido Günther <agx@sigxcpu.org>2016-06-30 11:17:55 +0200
commit7a6641a7b417abeca9cad41538103cbd0f251db8 (patch)
tree3c28a77b04544843490ae862d76b109bdea27d1c
parent4e9479d508a69cef1c3ac3313c0a2239b3e1f835 (diff)
import-dsc: Don't fail on 1.0 non-native packages without a Debian version
Closes: #829070
-rw-r--r--gbp/deb/dscfile.py14
-rw-r--r--tests/12_test_deb.py55
2 files changed, 60 insertions, 9 deletions
diff --git a/gbp/deb/dscfile.py b/gbp/deb/dscfile.py
index 16133b4..e64cf56 100644
--- a/gbp/deb/dscfile.py
+++ b/gbp/deb/dscfile.py
@@ -97,14 +97,19 @@ class DscFile(object):
continue
f.close()
+ # Source format 1.0 can have non-native packages without a Debian revision:
+ # e.g. http://snapshot.debian.org/archive/debian/20090801T192339Z/pool/main/l/latencytop/latencytop_0.5.dsc
+ if self.pkgformat == "1.0" and self.diff:
+ self.native = False
+ elif not self.native and not self.debian_version:
+ raise GbpError("Cannot parse Debian version number from '%s'" % self.dscfile)
+
if not self.pkg:
raise GbpError("Cannot parse package name from '%s'" % self.dscfile)
elif not self.tgz:
raise GbpError("Cannot parse archive name from '%s'" % self.dscfile)
if not self.upstream_version:
raise GbpError("Cannot parse version number from '%s'" % self.dscfile)
- if not self.native and not self.debian_version:
- raise GbpError("Cannot parse Debian version number from '%s'" % self.dscfile)
self.additional_tarballs = dict(add_tars)
def _get_version(self):
@@ -112,7 +117,10 @@ class DscFile(object):
if self.native:
version += self.upstream_version
else:
- version += "%s-%s" % (self.upstream_version, self.debian_version)
+ if self.debian_version != '':
+ version += "%s-%s" % (self.upstream_version, self.debian_version)
+ else: # possible in 1.0
+ version += "%s" % self.upstream_version
return version
version = property(_get_version)
diff --git a/tests/12_test_deb.py b/tests/12_test_deb.py
index 50955bd..aa5d473 100644
--- a/tests/12_test_deb.py
+++ b/tests/12_test_deb.py
@@ -11,7 +11,8 @@ import gbp.deb
from gbp.deb.dscfile import DscFile
from gbp.command_wrappers import CommandExecFailed
-class TestDscFile(unittest.TestCase):
+
+class Test30DscFile(unittest.TestCase):
"""Test L{gbp.deb.DscFile}"""
content = """Format: 3.0 (quilt)
@@ -28,24 +29,24 @@ Vcs-Browser: http://git.debian.org/?p=pkg-libvirt/libvirt.git
Vcs-Git: git://git.debian.org/git/pkg-libvirt/libvirt.git
Build-Depends: cdbs (>= 0.4.90~), debhelper (>= 7), libxml2-dev, libncurses5-dev, libreadline-dev, zlib1g-dev, libgcrypt11-dev, libgnutls-dev, python-all-dev (>= 2.6.6-3~), libavahi-client-dev, libsasl2-dev, libxen-dev [i386 amd64], lvm2 [linux-any], open-iscsi [linux-any], libparted0-dev (>= 2.2), parted (>= 2.2), libdevmapper-dev [linux-any], uuid-dev, libudev-dev [linux-any], libhal-dev [!linux-any], libpciaccess-dev, module-init-tools [linux-any], policykit-1, libcap-ng-dev [linux-any], libnl-dev [linux-any], libyajl-dev, libpcap0.8-dev, libnuma-dev [amd64 i386 ia64 mips mipsel powerpc], radvd [linux-any], libnetcf-dev [linux-any], dwarves, libxml2-utils, dnsmasq-base, openssh-client, netcat-openbsd
Build-Conflicts: dpkg-dev (= 1.15.3)
-Package-List:
+Package-List:
libvirt-bin deb admin optional
libvirt-dev deb libdevel optional
libvirt-doc deb doc optional
libvirt0 deb libs optional
libvirt0-dbg deb debug extra
python-libvirt deb python optional
-Checksums-Sha1:
+Checksums-Sha1:
3743dc4f3e58d5912a98f568c3e854d97d81f216 20054618 libvirt_0.9.12.orig.tar.gz
3743dc4f3e58d5912a98f568c3e854d97d81f123 20054618 libvirt_0.9.12.orig-foo.tar.gz
3743dc4f3e58d5912a98f568c3e854d97d81f123 20054618 libvirt_0.9.12.orig-bar.tar.gz
a7ffa64c18a5ee448c98b1dc894a0a27e1670357 35935 libvirt_0.9.12-4.debian.tar.gz
-Checksums-Sha256:
+Checksums-Sha256:
298ffc7f2a6d6e78aae46f11a0980f4bc17fa2928f5de6cd9e8abaf5990336e7 20054618 libvirt_0.9.12.orig.tar.gz
298ffc7f2a6d6e78aae46f11a0980f4bc17fa2928f5de6cd9e8abaf599033123 20054618 libvirt_0.9.12.orig-foo.tar.gz
298ffc7f2a6d6e78aae46f11a0980f4bc17fa2928f5de6cd9e8abaf599033123 20054618 libvirt_0.9.12.orig-bar.tar.gz
e75110c493995ba5366e751f20f3842f30674c3918357fa6eb83175d0afbec31 35935 libvirt_0.9.12-4.debian.tar.gz
-Files:
+Files:
5e842bc55733ceba60c64767580ff3e4 20054618 libvirt_0.9.12.orig.tar.gz
5e842bc55733ceba60c64767580ff123 20054618 libvirt_0.9.12.orig-foo.tar.gz
5e842bc55733ceba60c64767580ff123 20054618 libvirt_0.9.12.orig-bar.tar.gz
@@ -72,6 +73,49 @@ Files:
'libvirt_0.9.12.orig-%s.tar.gz' % s)
+class Test10DscNonNativeFile(unittest.TestCase):
+ """Test L{gbp.deb.DscFile}"""
+
+ content = """Format: 1.0
+Source: latencytop
+Binary: latencytop
+Architecture: any
+Version: 0.5
+Maintainer: Giacomo Catenazzi <cate@debian.org>
+Homepage: http://www.latencytop.org/
+Standards-Version: 3.8.2
+Build-Depends: cdbs, debhelper (>= 5), pkg-config, libncursesw5-dev, libglib2.0-dev, libgtk2.0-dev
+Package-List:
+ latencytop deb utils extra arch=any
+Checksums-Sha1:
+ cfd8a83fa40e630cf680d96a186ff4fdbf6f22c8 25374 latencytop_0.5.orig.tar.gz
+ 1fa907254c61c73679fd173c828327e9a2273c31 1978 latencytop_0.5.diff.gz
+Checksums-Sha256:
+ 9e7f72fbea7bd918e71212a1eabaad8488d2c602205d2e3c95d62cd57e9203ef 25374 latencytop_0.5.orig.tar.gz
+ 66342c4d55ae31e529bdcdf88d41a7d114b355f438b0d10efb107f3aef1a0db6 1978 latencytop_0.5.diff.gz
+Files:
+ 73bb3371c6ee0b0e68e25289027e865c 25374 latencytop_0.5.orig.tar.gz
+ bf7afb3e0d68b0e33e5abf4f1542af71 1978 latencytop_0.5.diff.gz
+"""
+
+ def setUp(self):
+ with tempfile.NamedTemporaryFile(delete=False) as self.dscfile:
+ self.dscfile.write(self.content)
+
+ def tearDown(self):
+ os.unlink(self.dscfile.name)
+
+ def test_dscfile_parse(self):
+ """Test parsing a a 1.0 non-native dsc file without debian revision"""
+ dsc = DscFile.parse(self.dscfile.name)
+ self.assertEqual(dsc.version, '0.5')
+ self.assertEqual(dsc.native, False)
+ self.assertEqual(os.path.basename(dsc.tgz), 'latencytop_0.5.orig.tar.gz')
+ self.assertEqual(os.path.basename(dsc.deb_tgz), '')
+ self.assertEqual(os.path.basename(dsc.diff), 'latencytop_0.5.diff.gz')
+ self.assertEqual(dsc.additional_tarballs, {}),
+
+
@unittest.skipIf(not os.path.exists('/usr/bin/dpkg'), 'Dpkg not found')
class TestDpkgCompareVersions(unittest.TestCase):
"""Test L{gbp.deb.DpkgCompareVersions}"""
@@ -93,4 +137,3 @@ class TestDpkgCompareVersions(unittest.TestCase):
def testBadVersion(self):
self.assertRaises(CommandExecFailed, self.cmp, '_', '_ _')
-