From 588cbf49df0550aa6de5ab5ea23487acf3d05c13 Mon Sep 17 00:00:00 2001 From: Hans van Kranenburg Date: Sun, 8 Jul 2018 23:54:35 +0200 Subject: [PATCH] debian/lib/python: Again fix recognizing versions In commit 55129e390c I changed this code to recognize a few patterns, but it turns out the code was not fully functioning. Also move determining the treeish to the same place with the version regex. See the numbered comments when determining the treeish for valid patterns: 1. pre version in between stable releases with explicit commit e.g. 4.10.2~pre+1.25e0657ed4-1 -> use commit 25e0657ed4 2. explicit commit while in rc e.g. 4.11.0~rc6+1.35fcb982ea-1~exp1 -> use commit 35fcb982ea 3. release candidate e.g. 4.11.0~rc7-1~exp1 -> use tag 4.11.0-rc7 4. regular release, like 4.10.2 -> use tag RELEASE-4.10.2 Signed-off-by: Hans van Kranenburg --- debian/bin/genorig.py | 10 +++----- debian/lib/python/debian_xen/debian.py | 35 +++++++++++++++++++++----- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/debian/bin/genorig.py b/debian/bin/genorig.py index 6800421877..1d3c5a158b 100755 --- a/debian/bin/genorig.py +++ b/debian/bin/genorig.py @@ -35,17 +35,13 @@ class Main(object): def __call__(self): out = "../orig/%s" % self.orig_tar - self.log("Generate tarball %s\n" % out) if self.options.tag: treeish = self.options.tag else: - if self.changelog_entry.version.pre_commit: - treeish = self.changelog_entry.version.pre_commit - elif self.changelog_entry.version.rc_commit: - treeish = self.changelog_entry.version.rc_commit - else: - treeish = 'RELEASE-%s' % self.version.upstream + treeish = self.changelog_entry.version.treeish + + self.log("Generate tarball %s from treeish %s\n" % (out, treeish)) try: os.stat(out) diff --git a/debian/lib/python/debian_xen/debian.py b/debian/lib/python/debian_xen/debian.py index 8dfef71b51..6c0f9dafb3 100644 --- a/debian/lib/python/debian_xen/debian.py +++ b/debian/lib/python/debian_xen/debian.py @@ -5,14 +5,14 @@ from debian_linux.debian import Version class VersionXen(Version): _version_xen_rules = r""" ^ - (?P\d+\.\d+) + (?P\d+)\.(?P\d+)(?:\.(?P\d+))? (?: - \.\d+(?:~pre(?:\+\d+\.(?P[0-9a-f]{10})))? + ~pre(?:\+\d+\.(?P[0-9a-f]{10})) | - ~rc\d+(?:\+\d+\.(?P[0-9a-f]{10}))? - ) + ~rc(?P\d+)(?:\+\d+\.(?P[0-9a-f]{10}))? + )? - - (?:[^-]+) + (?P[^-]+) $ """ _version_xen_re = re.compile(_version_xen_rules, re.X) @@ -23,6 +23,29 @@ class VersionXen(Version): if match is None: raise ValueError("Invalid debian xen version") d = match.groupdict() - self.xen_version = d['version'] + self.major = d['major'] + self.minor = d['minor'] + self.patch = d['patch'] self.pre_commit = d['pre_commit'] self.rc_commit = d['rc_commit'] + self.rc = d['rc'] + self.debian_revision = d['debian_revision'] + + # Now find out which treeish in the upstream source we need to build + # the orig tar from. + + # 1. pre version in between stable releases with explicit commit + # e.g. 4.10.2~pre+1.25e0657ed4-1 + if self.pre_commit is not None: + self.treeish = self.pre_commit + # 2. explicit commit while in rc + # e.g. 4.11.0~rc6+1.35fcb982ea-1~exp1 + elif self.rc_commit is not None: + self.treeish = self.rc_commit + # 3. release candidate + # e.g. 4.11.0~rc7-1~exp1 + elif self.rc is not None: + self.treeish = '%s.%s.%s-rc%s' % (self.major, self.minor, self.patch, self.rc) + # 4. regular release, like 4.10.2 -> tag RELEASE-4.10.2 + else: + self.treeish = 'RELEASE-%s.%s.%s' % (self.major, self.minor, self.patch) -- 2.30.2