Bastian Blank
2011-Jun-24 18:02 UTC
[Pkg-xen-changes] r899 - in trunk/xen-common/debian: bin lib/python/debian_xen
Author: waldi Date: Fri Jun 24 18:02:08 2011 New Revision: 899 Log: * debian/bin/genorig.py: Adopt changes from xen package. * debian/lib/python/debian_xen/debian.py: Update allowed version types. Modified: trunk/xen-common/debian/bin/genorig.py trunk/xen-common/debian/lib/python/debian_xen/debian.py Modified: trunk/xen-common/debian/bin/genorig.py =============================================================================--- trunk/xen-common/debian/bin/genorig.py Fri Jun 24 17:44:58 2011 (r898) +++ trunk/xen-common/debian/bin/genorig.py Fri Jun 24 18:02:08 2011 (r899) @@ -10,6 +10,32 @@ from debian_xen.debian import VersionXen, Changelog + +class RepoHg(object): + def __init__(self, repo, options): + self.repo = repo + self.tag = options.tag or ''tip'' + + def do_archive(self, info): + orig_dir = os.path.join(info.temp_dir, info.orig_dir) + args = [''hg'', ''archive'', ''-r'', self.tag, os.path.realpath(orig_dir)] + if info.files: + args.extend(itertools.chain(*((''-I'', i) for i in info.files))) + subprocess.check_call(args, cwd=self.repo) + + +class RepoGit(object): + def __init__(self, repo, options): + self.repo = repo + self.tag = options.tag or ''HEAD'' + + def do_archive(self, info): + temp_tar = os.path.join(info.temp_dir, ''orig.tar'') + args = (''git'', ''archive'', ''--prefix'', ''%s/'' % info.orig_dir, ''-o'', os.path.realpath(temp_tar), self.tag) + subprocess.check_call(args, cwd=self.repo) + subprocess.check_call((''tar'', ''-C'', info.temp_dir, ''-xf'', temp_tar)) + + class Main(object): log = sys.stdout.write @@ -18,65 +44,61 @@ ''tools/Rules.mk'', ''tools/cross-install'', ''tools/examples'', ''tools/hotplug'') def __init__(self, options, repo): - self.options, self.repo = options, repo + self.options = options self.changelog_entry = Changelog(version=VersionXen)[0] self.source = self.changelog_entry.source + if options.version: + self.version = options.version + else: + raise NotImplementedError + + if os.path.exists(os.path.join(repo, ''.hg'')): + self.repo = RepoHg(repo, options) + elif os.path.exists(os.path.join(repo, ''.git'')): + self.repo = RepoGit(repo, options) + else: + raise NotImplementedError + + if options.component: + self.orig_dir = options.component + self.orig_tar = ''%s_%s.orig-%s.tar.gz'' % (self.source, self.version, options.component) + else: + self.orig_dir = ''%s-%s'' % (self.source, self.version) + self.orig_tar = ''%s_%s.orig.tar.gz'' % (self.source, self.version) + def __call__(self): import tempfile - self.dir = tempfile.mkdtemp(prefix=''genorig'', dir=''debian'') + self.temp_dir = tempfile.mkdtemp(prefix=''genorig'', dir=''debian'') try: - self.do_version() - - self.orig_dir = "%s-%s" % (self.source, self.version) - self.orig_tar = "%s_%s.orig.tar.gz" % (self.source, self.version) - self.do_archive() - self.do_changelog() self.do_tar() finally: - shutil.rmtree(self.dir) - - def do_version(self): - if self.options.version: - self.version = self.options.version - return - raise NotImplementedError + shutil.rmtree(self.temp_dir) def do_archive(self): self.log("Create archive.\n") - - arg_dir = os.path.join(os.path.realpath(self.dir), self.orig_dir) - args = (''hg'', ''archive'', ''-r'', self.options.tag, arg_dir) + tuple(itertools.chain(*((''-I'', i) for i in self.files))) - p = subprocess.Popen(args, cwd=self.repo) - if p.wait(): - raise RuntimeError - - def do_changelog(self): - self.log("Exporting changelog.\n") - - log = open("%s/%s/Changelog" % (self.dir, self.orig_dir), ''w'') - args = (''hg'', ''log'', ''-r'', ''%s:0'' % self.options.tag) + tuple(self.files) - p = subprocess.Popen(args, cwd=self.repo, stdout=log) - if p.wait(): - raise RuntimeError - - log.close() + self.repo.do_archive(self) def do_tar(self): out = "../orig/%s" % self.orig_tar self.log("Generate tarball %s\n" % out) - p = subprocess.Popen((''tar'', ''-C'', self.dir, ''-czf'', out, self.orig_dir)) - if p.wait(): - raise RuntimeError + try: + os.stat(out) + raise RuntimeError("Destination already exists") + except OSError: pass + + subprocess.check_call((''tar'', ''-C'', self.temp_dir, ''-czf'', out, self.orig_dir)) + if __name__ == ''__main__'': from optparse import OptionParser p = OptionParser(prog=sys.argv[0], usage=''%prog [OPTION]... DIR'') - p.add_option("-t", "--tag", dest="tag", default=''tip'') - p.add_option("-v", "--version", dest="version") + p.add_option(''-c'', ''--component'', dest=''component'') + p.add_option(''-t'', ''--tag'', dest=''tag'') + p.add_option(''-v'', ''--version'', dest=''version'') options, args = p.parse_args() if len(args) != 1: raise RuntimeError Modified: trunk/xen-common/debian/lib/python/debian_xen/debian.py =============================================================================--- trunk/xen-common/debian/lib/python/debian_xen/debian.py Fri Jun 24 17:44:58 2011 (r898) +++ trunk/xen-common/debian/lib/python/debian_xen/debian.py Fri Jun 24 18:02:08 2011 (r899) @@ -94,15 +94,13 @@ _version_xen_rules = ur""" ^ (?P<version> - (?P<major>\d+) - \.\d+ + \d+\.\d+ ) \.\d+ (?: - \+hg - (?P<hg_rev> - \d+ - ) + \+hg\d+ + | + ~rc\d+ )? - (?:[^-]+) @@ -116,8 +114,4 @@ if match is None: raise ValueError("Invalid debian xen version") d = match.groupdict() - self.xen_major = d[''major''] self.xen_version = d[''version''] - -if __name__ == ''__main__'': - gencontrol()()