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()()