[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