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)
class VersionXen(Version):
_version_xen_rules = r"""
^
- (?P<version>\d+\.\d+)
+ (?P<major>\d+)\.(?P<minor>\d+)(?:\.(?P<patch>\d+))?
(?:
- \.\d+(?:~pre(?:\+\d+\.(?P<pre_commit>[0-9a-f]{10})))?
+ ~pre(?:\+\d+\.(?P<pre_commit>[0-9a-f]{10}))
|
- ~rc\d+(?:\+\d+\.(?P<rc_commit>[0-9a-f]{10}))?
- )
+ ~rc(?P<rc>\d+)(?:\+\d+\.(?P<rc_commit>[0-9a-f]{10}))?
+ )?
-
- (?:[^-]+)
+ (?P<debian_revision>[^-]+)
$
"""
_version_xen_re = re.compile(_version_xen_rules, re.X)
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)