debian/patches/features/all/xen/gen-patch: Add.

svn path=/dists/trunk/linux-2.6/; revision=8363
This commit is contained in:
Bastian Blank 2007-03-16 18:22:34 +00:00
parent 74c58e7213
commit 6f136690de
1 changed files with 76 additions and 0 deletions

76
debian/patches/features/all/xen/gen-patch vendored Executable file
View File

@ -0,0 +1,76 @@
#!/usr/bin/env python
import os.path, re, sys
class Version(object):
_rules = ur"^(\d+\.\d+\.\d+)(\.(\d+))$"
_re = re.compile(_rules)
def __init__(self, version):
self.complete = version
match = self._re.match(version)
if match is None:
raise RuntimeError
self.release = match.group(1)
if match.group(3) is not None:
self.patch = int(match.group(3))
else:
self.patch = None
class GenPatch(object):
def __init__(self, path, identifier, repo_linux, repo_xen, version):
self.path = path
self.identifier = identifier
self.repo_linux = repo_linux
self.repo_xen = repo_xen
self.version = version
def __call__(self):
f = os.popen("cd '%s'; hg id" % self.repo_xen)
hg_id = f.readline().split(" ", 1)[0]
if f.close() is not None:
raise RuntimeError
f = os.popen("cd '%s'; hg log -r '%s'" % (self.repo_xen, hg_id))
hg_changeset = f.readline().strip().split(" ")[-1].split(':')[0]
if f.close() is not None:
raise RuntimeError
f = os.popen("cd '%s'; git checkout -q 'v%s'" % (self.repo_linux, self.version.complete))
if f.close() is not None:
raise RuntimeError
base = "%s-%s-%s" % (self.identifier.lower(), version.release, hg_changeset)
patch = "%s.patch" % base
log = "%s.log" % base
series = "%s.series" % base
import tempfile
tmpdir = tempfile.mkdtemp(prefix = 'gen-patch')
try:
tmpdir_linux = os.path.join(tmpdir, "a")
tmpdir_xen = os.path.join(tmpdir, "b")
os.symlink(self.repo_linux, tmpdir_linux)
os.symlink(self.repo_xen, tmpdir_xen)
f = os.popen("cd '%s'; diff -x '.hg*' -x '.git*' -urN a b > '%s.in'" % (tmpdir, os.path.join(self.path, patch)))
if f.close() >> 8 != 1:
raise RuntimeError
finally:
import shutil
shutil.rmtree(tmpdir)
out = file(os.path.join(self.path, log), 'w')
out.write(" * Update xen patch to changeset %s from %s %s branch.\n" % (hg_changeset, self.identifier, self.version.release))
out.close()
out = file(os.path.join(self.path, series), 'w')
out.write("+ features/all/xen/%s *_xen *_xen-vserver\n" % patch)
out.close()
if __name__ == '__main__':
path = os.path.realpath(os.path.dirname(sys.argv[0]))
identifier = sys.argv[1]
repo_linux = sys.argv[2]
repo_xen = sys.argv[3]
version = Version(sys.argv[4])
GenPatch(path, identifier, repo_linux, repo_xen, version)()