debian/patches/features/all/xen/gen-patch: Add.
svn path=/dists/trunk/linux-2.6/; revision=8363
This commit is contained in:
parent
74c58e7213
commit
6f136690de
|
@ -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)()
|
Loading…
Reference in New Issue