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