[kernel] r8363 -
dists/trunk/linux-2.6/debian/patches/features/all/xen
Bastian Blank
waldi at alioth.debian.org
Fri Mar 16 19:22:34 UTC 2007
Author: waldi
Date: Fri Mar 16 18:22:34 2007
New Revision: 8363
Added:
dists/trunk/linux-2.6/debian/patches/features/all/xen/gen-patch (contents, props changed)
Log:
debian/patches/features/all/xen/gen-patch: Add.
Added: dists/trunk/linux-2.6/debian/patches/features/all/xen/gen-patch
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/features/all/xen/gen-patch Fri Mar 16 18:22:34 2007
@@ -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)()
More information about the Kernel-svn-changes
mailing list