r4029 - in people/waldi/kernel/linux-2.6/debian: bin lib/python
Bastian Blank
waldi at costa.debian.org
Tue Aug 23 17:02:42 UTC 2005
Author: waldi
Date: 2005-08-23 17:02:41 +0000 (Tue, 23 Aug 2005)
New Revision: 4029
Modified:
people/waldi/kernel/linux-2.6/debian/bin/gencontrol.py
people/waldi/kernel/linux-2.6/debian/lib/python/debian_linux.py
Log:
* debian/bin/gencontrol.py: Move the logic into functions.
* debian/lib/python/debian_linux.py
(sorted_dict): Add.
(entry): Implement via sorted_dict.
Modified: people/waldi/kernel/linux-2.6/debian/bin/gencontrol.py
===================================================================
--- people/waldi/kernel/linux-2.6/debian/bin/gencontrol.py 2005-08-23 16:04:56 UTC (rev 4028)
+++ people/waldi/kernel/linux-2.6/debian/bin/gencontrol.py 2005-08-23 17:02:41 UTC (rev 4029)
@@ -3,27 +3,35 @@
sys.path.append("debian/lib/python")
from debian_linux import *
+class packages_list(sorted_dict):
+ def append(self, package):
+ self[package['Package']] = package
+
+ def extend(self, packages):
+ for package in packages:
+ self[package['Package']] = package
+
def read_changelog():
r = re.compile(r"""
^
(
- (?P<header>
- (?P<header_source>
- \w[-+0-9a-z.]+
- )
- \
- \(
- (?P<header_version>
- [^\(\)\ \t]+
- )
- \)
- \s+
- (?P<header_distribution>
- [-0-9a-zA-Z]+
- )
- \;
+(?P<header>
+ (?P<header_source>
+ \w[-+0-9a-z.]+
)
+ \
+ \(
+ (?P<header_version>
+ [^\(\)\ \t]+
+ )
+ \)
+ \s+
+ (?P<header_distribution>
+ [-0-9a-zA-Z]+
+ )
+ \;
)
+)
""", re.VERBOSE)
f = file("debian/changelog")
entries = []
@@ -234,44 +242,69 @@
f.write(" %s\n" % k)
f.write('\n')
-def main():
- changelog = read_changelog()
+def process_real_arch(packages, makefile, config, version, abiname, kpkg_abiname, arch, vars, makeflags):
+ config_entry = config[arch]
- c = config()
+ vars['arch'] = arch
- vars = {}
+ if not config_entry.get('available', True):
+ for i in ('binary-arch', 'build', 'setup'):
+ makefile.append(("%s-%s:" % (i, arch), ["@echo Architecture %s is not available!" % arch, "@exit 1"]))
+ return
- vars.update(c['base'])
+ for i in (('setup',)):
+ makefile.append(("%s-%s:: %s-%s-real" % (i, arch, i, arch), None))
- version, abiname, kpkg_abiname, vars = process_changelog(vars, changelog)
+ makeflags.append("ARCH='%s'" % arch)
+ cmds_setup = []
+ cmds_setup.append(("$(MAKE) -f debian/rules.real setup-arch %s" % ' '.join(makeflags),))
+ makefile.append(("setup-%s-real:" % arch, cmds_setup))
- arches = {}
- subarches_architecture = {}
- for arch in c['base']['arches']:
- if not c[arch].get('available', True):
- arches[arch] = None
- continue
- t1 = {}
- for subarch in c[arch].get('subarches', []):
- t2 = {}
- if subarch != 'none':
- for flavour in c["%s-%s" % (arch, subarch)].get('flavours', []):
- t2[flavour] = True
- else:
- for flavour in c[arch].get('flavours', []):
- t2[flavour] = True
- subarch = None
- t1[subarch] = t2
- t3 = subarches_architecture.get(subarch, {})
- t3[arch] = True
- subarches_architecture[subarch] = t3
- arches[arch] = t1
+ for subarch in config_entry['subarches']:
+ process_real_subarch(packages, makefile, config, version, abiname, kpkg_abiname, arch, subarch, vars.copy(), makeflags[:])
- packages = []
- makefile = []
+def process_real_flavour(packages, makefile, config, version, abiname, kpkg_abiname, arch, subarch, flavour, vars, makeflags):
+ config_entry = config['-'.join((arch, subarch, flavour))]
+ vars['flavour'] = flavour
+ if not vars.has_key('class'):
+ vars['class'] = '%s-class' % flavour
+ if not vars.has_key('longclass'):
+ vars['longclass'] = vars['class']
+
+ image = read_template("image")
+ headers = read_template("headers")
+ image_latest = read_template("image.latest")
+ headers_latest = read_template("headers.latest")
+
+ dummy_packages = []
+ packages.append(process_real_image(image[0], vars))
+ packages.append(process_package(headers[0], vars))
+ dummy_packages.extend(process_packages(image_latest, vars))
+ dummy_packages.append(process_package(headers_latest[0], vars))
+ packages.extend(dummy_packages)
+
+ for i in ('binary-arch', 'build', 'setup'):
+ makefile.append(("%s-%s-%s:: %s-%s-%s-%s" % (i, arch, subarch, i, arch, subarch, flavour), None))
+ makefile.append(("%s-%s-%s-%s:: %s-%s-%s-%s-real" % (i, arch, subarch, flavour, i, arch, subarch, flavour), None))
+
+ makeflags.append("FLAVOUR='%s'" % flavour)
+ if config_entry.has_key('kpkg-subarch'):
+ makeflags.append("KPKG_SUBARCH='%s'" % config_entry['kpkg-subarch'])
+ cmds_binary_arch = []
+ cmds_binary_arch.append(("$(MAKE) -f debian/rules.real binary-arch-flavour %s" % ' '.join(makeflags),))
+ cmds_binary_arch.append(("$(MAKE) -f debian/rules.real install-dummy DH_OPTIONS='%s'" % ' '.join(["-p%s" % i['Package'] for i in dummy_packages]),))
+ cmds_build = []
+ cmds_build.append(("$(MAKE) -f debian/rules.real build %s" % ' '.join(makeflags),))
+ cmds_setup = []
+ cmds_setup.append(("$(MAKE) -f debian/rules.real setup-flavour %s" % ' '.join(makeflags),))
+ makefile.append(("binary-arch-%s-%s-%s-real:" % (arch, subarch, flavour), cmds_binary_arch))
+ makefile.append(("build-%s-%s-%s-real:" % (arch, subarch, flavour), cmds_build))
+ makefile.append(("setup-%s-%s-%s-real:" % (arch, subarch, flavour), cmds_setup))
+
+def process_real_main(packages, makefile, config, version, abiname, kpkg_abiname, changelog, vars):
source = read_template("source")
- packages.append(process_package(source[0], vars))
+ packages['source'] = process_package(source[0], vars)
main = read_template("main")
packages.extend(process_packages(main, vars))
@@ -279,27 +312,6 @@
tree = read_template("tree")
packages.append(process_real_tree(tree[0], changelog, vars))
- headers_subarch = read_template("headers.subarch")
-
- subarch_list = subarches_architecture.keys()
- subarch_list.sort()
- for subarch in subarch_list:
- subarch_vars = vars.copy()
- if subarch is not None:
- subarch_vars['subarch'] = '%s-' % subarch
- else:
- subarch_vars['subarch'] = ''
-
- a = subarches_architecture[subarch].keys()
- a.sort()
- subarch_vars['arch'] = ' '.join(a)
- packages.extend(process_packages(headers_subarch, subarch_vars))
-
- headers = read_template("headers")
- headers_latest = read_template("headers.latest")
- image = read_template("image")
- image_latest = read_template("image.latest")
-
makeflags = [
"VERSION='%s'" % version['version'],
"SOURCE_VERSION='%s'" % version['source'],
@@ -309,103 +321,9 @@
cmds_binary_indep.append(("$(MAKE) -f debian/rules.real binary-indep %s" % ' '.join(makeflags),))
makefile.append(("binary-indep:", cmds_binary_indep))
- arch_list = arches.keys()
- arch_list.sort()
- for arch in arch_list:
- arch_vars = vars.copy()
- arch_vars['arch'] = arch
- arch_vars.update(c[arch])
+ for arch in iter(config['base']['arches']):
+ process_real_arch(packages, makefile, config, version, abiname, kpkg_abiname, arch, vars.copy(), makeflags[:])
- if arches[arch] is None:
- for i in ('binary-arch', 'build', 'setup'):
- makefile.append(("%s-%s:" % (i, arch), ["@echo Architecture %s is not available!" % arch, "@exit 1"]))
- continue
-
- for i in (('setup',)):
- makefile.append(("%s-%s:: %s-%s-real" % (i, arch, i, arch), None))
-
- arch_makeflags = makeflags[:]
- arch_makeflags.append("ARCH='%s'" % arch)
- cmds_setup = []
- cmds_setup.append(("$(MAKE) -f debian/rules.real setup-arch %s" % ' '.join(arch_makeflags),))
- makefile.append(("setup-%s-real:" % arch, cmds_setup))
-
- subarch_list = arches[arch].keys()
- subarch_list.sort()
- for subarch in subarch_list:
- subarch_vars = arch_vars.copy()
-
- if subarch is not None:
- subarch_text = subarch
- subarch_vars['subarch'] = '%s-' % subarch
- subarch_vars.update(c['%s-%s' % (arch, subarch)])
- else:
- subarch_text = 'none'
- subarch_vars['subarch'] = ''
-
- for i in ('binary-arch', 'build', 'setup'):
- makefile.append(("%s-%s:: %s-%s-%s" % (i, arch, i, arch, subarch_text), None))
- makefile.append(("%s-%s-%s::" % (i, arch, subarch_text), None))
- for i in ('binary-arch', 'setup'):
- makefile.append(("%s-%s-%s:: %s-%s-%s-real" % (i, arch, subarch_text, i, arch, subarch_text), None))
-
- subarch_makeflags = arch_makeflags[:]
- subarch_makeflags.extend([
- "SUBARCH='%s'" % subarch_text,
- "ABINAME='%s'" % abiname,
- "KPKG_ABINAME='%s'" % kpkg_abiname,
- ])
- subarch_makeflags_clean = subarch_makeflags[:]
- if subarch_vars.has_key('kpkg-subarch'):
- subarch_makeflags.append("KPKG_SUBARCH='%s'" % subarch_vars['kpkg-subarch'])
-
- cmds_binary_arch = []
- cmds_binary_arch.append(("$(MAKE) -f debian/rules.real binary-arch-subarch %s" % ' '.join(subarch_makeflags),))
- cmds_setup = []
- cmds_setup.append(("$(MAKE) -f debian/rules.real setup-subarch %s" % ' '.join(subarch_makeflags),))
- makefile.append(("binary-arch-%s-%s-real:" % (arch, subarch_text), cmds_binary_arch))
- makefile.append(("setup-%s-%s-real:" % (arch, subarch_text), cmds_setup))
-
- flavour_list = arches[arch][subarch].keys()
- flavour_list.sort()
- for flavour in flavour_list:
- flavour_vars = subarch_vars.copy()
- flavour_vars['flavour'] = flavour
-
- try:
- flavour_vars.update(c['%s-%s-%s' % (arch, subarch_text, flavour)])
- except ConfigParser.NoSectionError: pass
- if not flavour_vars.has_key('class'):
- flavour_vars['class'] = '%s-class' % flavour
- if not flavour_vars.has_key('longclass'):
- flavour_vars['longclass'] = flavour_vars['class']
-
- dummy_packages = []
- dummy_packages.extend(process_packages(image_latest, flavour_vars))
- packages.append(process_real_image(image[0], flavour_vars))
- dummy_packages.append(process_package(headers_latest[0], flavour_vars))
- packages.append(process_package(headers[0], flavour_vars))
- packages.extend(dummy_packages)
-
- for i in ('binary-arch', 'build', 'setup'):
- makefile.append(("%s-%s-%s:: %s-%s-%s-%s" % (i, arch, subarch_text, i, arch, subarch_text, flavour), None))
- makefile.append(("%s-%s-%s-%s:: %s-%s-%s-%s-real" % (i, arch, subarch_text, flavour, i, arch, subarch_text, flavour), None))
-
- flavour_makeflags = subarch_makeflags_clean[:]
- flavour_makeflags.append("FLAVOUR='%s'" % flavour)
- if flavour_vars.has_key('kpkg-subarch'):
- flavour_makeflags.append("KPKG_SUBARCH='%s'" % flavour_vars['kpkg-subarch'])
- cmds_binary_arch = []
- cmds_binary_arch.append(("$(MAKE) -f debian/rules.real binary-arch-flavour %s" % ' '.join(flavour_makeflags),))
- cmds_binary_arch.append(("$(MAKE) -f debian/rules.real install-dummy DH_OPTIONS='%s'" % ' '.join(["-p%s" % i['Package'] for i in dummy_packages]),))
- cmds_build = []
- cmds_build.append(("$(MAKE) -f debian/rules.real build %s" % ' '.join(flavour_makeflags),))
- cmds_setup = []
- cmds_setup.append(("$(MAKE) -f debian/rules.real setup-flavour %s" % ' '.join(flavour_makeflags),))
- makefile.append(("binary-arch-%s-%s-%s-real:" % (arch, subarch_text, flavour), cmds_binary_arch))
- makefile.append(("build-%s-%s-%s-real:" % (arch, subarch_text, flavour), cmds_build))
- makefile.append(("setup-%s-%s-%s-real:" % (arch, subarch_text, flavour), cmds_setup))
-
extra = read_template("extra")
packages.extend(process_packages(extra, vars))
extra_pn = {}
@@ -418,7 +336,7 @@
archs.sort()
for arch in archs:
arch_vars = vars.copy()
- arch_vars.update(c[arch])
+ arch_vars.update(config[arch])
cmds = []
for i in extra_pn[arch]:
@@ -429,7 +347,52 @@
makefile.append(("binary-arch-%s:: binary-arch-%s-extra" % (arch, arch), None))
makefile.append(("binary-arch-%s-extra:" % arch, cmds))
- write_control(packages)
+def process_real_subarch(packages, makefile, config, version, abiname, kpkg_abiname, arch, subarch, vars, makeflags):
+ if subarch == 'none':
+ vars['subarch'] = ''
+ config_entry = config[arch]
+ else:
+ vars['subarch'] = '%s-' % subarch
+ config_entry = config['%s-%s' % (arch, subarch)]
+
+ for i in ('binary-arch', 'build', 'setup'):
+ makefile.append(("%s-%s:: %s-%s-%s" % (i, arch, i, arch, subarch), None))
+ makefile.append(("%s-%s-%s::" % (i, arch, subarch), None))
+ for i in ('binary-arch', 'setup'):
+ makefile.append(("%s-%s-%s:: %s-%s-%s-real" % (i, arch, subarch, i, arch, subarch), None))
+
+ makeflags.extend([
+ "SUBARCH='%s'" % subarch,
+ "ABINAME='%s'" % abiname,
+ "KPKG_ABINAME='%s'" % kpkg_abiname,
+ ])
+ makeflags_clean = makeflags[:]
+ if config_entry.has_key('kpkg-subarch'):
+ makeflags.append("KPKG_SUBARCH='%s'" % config_entry['kpkg-subarch'])
+
+ cmds_binary_arch = []
+ cmds_binary_arch.append(("$(MAKE) -f debian/rules.real binary-arch-subarch %s" % ' '.join(makeflags),))
+ cmds_setup = []
+ cmds_setup.append(("$(MAKE) -f debian/rules.real setup-subarch %s" % ' '.join(makeflags),))
+ makefile.append(("binary-arch-%s-%s-real:" % (arch, subarch), cmds_binary_arch))
+ makefile.append(("setup-%s-%s-real:" % (arch, subarch), cmds_setup))
+
+ for flavour in config_entry['flavours']:
+ process_real_flavour(packages, makefile, config, version, abiname, kpkg_abiname, arch, subarch, flavour, vars.copy(), makeflags[:])
+
+def main():
+ changelog = read_changelog()
+
+ c = config()
+
+ version, abiname, kpkg_abiname, vars = process_changelog({}, changelog)
+
+ packages = packages_list()
+ makefile = []
+
+ process_real_main(packages, makefile, c, version, abiname, kpkg_abiname, changelog, vars)
+
+ write_control(packages.itervalues())
write_makefile(makefile)
Modified: people/waldi/kernel/linux-2.6/debian/lib/python/debian_linux.py
===================================================================
--- people/waldi/kernel/linux-2.6/debian/lib/python/debian_linux.py 2005-08-23 16:04:56 UTC (rev 4028)
+++ people/waldi/kernel/linux-2.6/debian/lib/python/debian_linux.py 2005-08-23 17:02:41 UTC (rev 4029)
@@ -100,35 +100,48 @@
ret[key] = convert(value)
return ret
-class entry(dict):
+class _sorted_dict(dict):
__slots__ = ('_list')
def __init__(self):
- super(entry, self).__init__()
+ super(_sorted_dict, self).__init__()
self._list = []
def __delitem__(self, key):
- super(entry, self).__delitem__(key)
+ super(_sorted_dict, self).__delitem__(key)
self._list.remove(key)
+ def iterkeys(self):
+ for i in iter(self._list):
+ yield i
+
+ def iteritems(self):
+ for i in iter(self._list):
+ yield (i, self[i])
+
+ def itervalues(self):
+ for i in iter(self._list):
+ yield self[i]
+
+class sorted_dict(_sorted_dict):
+ __slots__ = ()
+
def __setitem__(self, key, value):
+ super(sorted_dict, self).__setitem__(key, value)
+ if key not in self._list:
+ self._list.append(key)
+
+class entry(_sorted_dict):
+ __slots__ = ()
+
+ def __setitem__(self, key, value):
super(entry, self).__setitem__(key, value)
- if key.startswith('_'):
- return
if key not in self._list:
if 'Description' in self._list:
self._list.insert(len(self._list)-1, key)
else:
self._list.append(key)
- def iterkeys(self):
- for i in self._list:
- yield i
-
- def iteritems(self):
- for i in self._list:
- yield (i, self[i])
-
class wrap(textwrap.TextWrapper):
wordsep_re = re.compile(
r'(\s+|' # any whitespace
More information about the Kernel-svn-changes
mailing list