r3971 - in people/waldi/kernel/source/linux-2.6/debian: arch arch/alpha arch/amd64 arch/arm arch/hppa arch/i386 arch/ia64 arch/m68k arch/powerpc arch/s390 arch/sparc bin

Bastian Blank waldi at costa.debian.org
Thu Aug 18 18:02:09 UTC 2005


Author: waldi
Date: 2005-08-18 18:02:08 +0000 (Thu, 18 Aug 2005)
New Revision: 3971

Modified:
   people/waldi/kernel/source/linux-2.6/debian/arch/alpha/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/amd64/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/arm/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/hppa/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/i386/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/ia64/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/m68k/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/powerpc/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/s390/defines
   people/waldi/kernel/source/linux-2.6/debian/arch/sparc/defines
   people/waldi/kernel/source/linux-2.6/debian/bin/gencontrol.py
Log:
Use own config to define arches, subarches and flavours.

* debian/arch/defines: Include architecture definitions.
* debian/arch/alpha/defines, debian/arch/amd64/defines, debian/arch/arm/defines,
  debian/arch/hppa/defines, debian/arch/i386/defines, debian/arch/ia64/defines,
  debian/arch/m68k/defines, debian/arch/powerpc/defines, debian/arch/s390/defines,
  debian/arch/sparc/defines: Include flavour definitions.
* debian/bin/gencontrol.py
  - Read all configs at once.
  - Use config definitions for arch, subarch and flavour detection.


Modified: people/waldi/kernel/source/linux-2.6/debian/arch/alpha/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/alpha/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/alpha/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,4 +1,5 @@
-[DEFAULT]
+[base]
+flavours: alpha-generic alpha-smp
 suggests: aboot, fdutils
 
 [alpha-generic]

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/amd64/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/amd64/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/amd64/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,3 +1,9 @@
-[DEFAULT]
+[base]
 depends: e2fsprogs (>= 1.35-7)
+flavours:
+ amd64-generic
+ amd64-k8
+ amd64-k8-smp
+ em64t-p4
+ em64t-p4-smp
 suggests: lilo (>= 19.1) | grub, fdutils

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/arm/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/arm/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/arm/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,2 +1,7 @@
-[DEFAULT]
+[base]
+flavours:
+ footbridge
+ ixp4xx
+ rpc
+ s3c2410
 suggests: fdutils

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,2 +1,24 @@
-[DEFAULT]
+[base]
 abiname: 1
+arches:
+ alpha
+ amd64
+ arm
+ hppa
+ i386
+ ia64
+ m68k
+ mips
+ mipsel
+ powerpc
+ s390
+ sparc
+
+[alpha]
+#enabled: False
+
+[mips]
+available: False
+
+[mipsel]
+available: False

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/hppa/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/hppa/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/hppa/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,4 +1,9 @@
-[DEFAULT]
+[base]
+flavours:
+ 32
+ 32-smp
+ 64
+ 64-smp
 suggests: palo
 
 [32]

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/i386/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/i386/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/i386/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,4 +1,10 @@
-[DEFAULT]
+[base]
+flavours:
+ 386
+ 686
+ 686-smp
+ k7
+ k7-smp
 suggests: lilo (>= 19.1) | grub, fdutils
 
 [686]
@@ -13,7 +19,6 @@
 class: AMD K7
 longclass: 32bit AMD Duron/Athlon/AthlonXP
 
-
 [k7-smp]
 class: AMD K7 SMP
 longclass: 32-bit multi-processor AMD Duron/Athlon/AthlonXP

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/ia64/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/ia64/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/ia64/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,4 +1,9 @@
-[DEFAULT]
+[base]
+flavours:
+ itanium
+ itanium-smp
+ mckinley
+ mckinley-smp
 suggests: elilo, fdutils
 
 [itanium]

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/m68k/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/m68k/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/m68k/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,4 +1,14 @@
-[DEFAULT]
+[base]
+flavours:
+ amiga
+ atari
+ bvme6000
+ hp
+ mac
+ mvme147
+ mvme16x
+ q40
+ sun3
 suggests: vmelilo, fdutils
 
 [amiga]

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/powerpc/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/powerpc/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/powerpc/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,4 +1,8 @@
-[DEFAULT]
+[base]
+flavours:
+ powerpc
+ powerpc-smp
+ powerpc64
 kpkg-subarch: powerpc
 
 [powerpc]

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/s390/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/s390/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/s390/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,5 +1,6 @@
-[DEFAULT]
+[base]
 desc: This kernel has support to IPL (boot) from a VM reader or DASD device.
+flavours: s390 s390x
 suggests: s390-tools
 
 [s390]

Modified: people/waldi/kernel/source/linux-2.6/debian/arch/sparc/defines
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/arch/sparc/defines	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/arch/sparc/defines	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,4 +1,5 @@
-[DEFAULT]
+[base]
+flavours: sparc64 sparc64-smp
 suggests: silo, fdutils
 
 [sparc64]

Modified: people/waldi/kernel/source/linux-2.6/debian/bin/gencontrol.py
===================================================================
--- people/waldi/kernel/source/linux-2.6/debian/bin/gencontrol.py	2005-08-18 17:58:13 UTC (rev 3970)
+++ people/waldi/kernel/source/linux-2.6/debian/bin/gencontrol.py	2005-08-18 18:02:08 UTC (rev 3971)
@@ -1,6 +1,108 @@
 #!/usr/bin/env python
 import os, os.path, re, sys, textwrap, ConfigParser
 
+config_name = "defines"
+
+class schema_item_boolean(object):
+    def __call__(self, i):
+        i = i.strip().lower()
+        if i in ("true", "1"):
+            return True
+        if i in ("false", "0"):
+            return False
+        raise Error
+
+class schema_item_integer(object):
+    def __call__(self, i):
+        return int(i)
+
+class schema_item_list(object):
+    def __call__(self, i):
+        return re.split("\s+", i.strip())
+
+class schema_item_string(object):
+    def __call__(self, i):
+        return str(i)
+
+class config(dict):
+    schema = {
+        'abiname': schema_item_string,
+        'arches': schema_item_list,
+        'available': schema_item_boolean,
+        'class': schema_item_string,
+        'depends': schema_item_string,
+        'desc': schema_item_string,
+        'flavours': schema_item_list,
+        'kpkg-subarch': schema_item_string,
+        'longclass': schema_item_string,
+        'subarches': schema_item_list,
+        'suggests': schema_item_string,
+    }
+
+    def __init__(self):
+        self._read_base()
+#        import pprint
+#        pprint.pprint(dict(self))
+
+    def _read_arch(self, arch, base):
+        file = "debian/arch/%s/%s" % (arch, config_name)
+        c = config_parser(self.schema)
+        c.read(file)
+        t = c.items_convert('base')
+        base.update(t)
+        self[arch] = t
+        subarches = t.get('subarches', [])
+        for subarch in subarches:
+            raise RuntimeError
+        flavours = t.get('flavours', None)
+        if flavours:
+            for flavour in flavours:
+                self._read_flavour(arch, 'none', flavour, c)
+            subarches.append('none')
+        t['subarches'] = subarches
+
+    def _read_base(self):
+        file = "debian/arch/%s" % config_name
+        c = config_parser(self.schema)
+        c.read(file)
+        t1 = c.items_convert('base')
+        self['base'] = t1
+        for arch in t1['arches']:
+            try:
+                t2 = c.items_convert(arch)
+                avail = t2.get('available', True)
+            except ConfigParser.NoSectionError:
+                t2 = {}
+                avail = True
+            if avail:
+                self._read_arch(arch, t2)
+            else:
+                self[arch] = t2
+
+    def _read_flavour(self, arch, subarch, flavour, c):
+        try:
+            t = c.items_convert(flavour)
+        except ConfigParser.NoSectionError:
+            try:
+                t = c.items_convert("%s-none-%s" % (arch, flavour))
+            except ConfigParser.NoSectionError:
+                #raise RuntimeError("Don't find config for %s-none-%s!" % (arch, flavour))
+                t = {}
+        self["%s-%s-%s" % (arch, subarch, flavour)] = t
+
+class config_parser(object, ConfigParser.ConfigParser):
+    def __init__(self, schema):
+        ConfigParser.ConfigParser.__init__(self)
+        self.schema = schema
+
+    def items_convert(self, section):
+        items = self.items(section)
+        ret = {}
+        for key, value in items:
+            convert = self.schema[key]()
+            ret[key] = convert(value)
+        return ret
+
 class entry(dict):
     __slots__ = ('_list')
 
@@ -35,55 +137,6 @@
         r'(\s+|'                                  # any whitespace
         r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))')   # em-dash
 
-def config():
-    c = ConfigParser.ConfigParser()
-    c.read("debian/arch/defines")
-    return c
-
-def config_arch(arch):
-    c = config()
-    c.read("debian/arch/%s/defines" % arch)
-    return c
-
-def config_subarch(arch, subarch):
-    c = config_arch(arch)
-    if subarch is not None:
-        c.read("debian/arch/%s/%s/defines" % (arch, subarch))
-    return c
-
-def list_dirs(dir):
-    ret = []
-    for i in os.listdir(dir):
-        if i not in ('.svn',) and os.path.isdir(os.path.join(dir, i)):
-            ret.append(i)
-    return ret
-
-def list_files(dir):
-    ret = []
-    for i in os.listdir(dir):
-        if os.path.isfile(os.path.join(dir, i)):
-            ret.append(i)
-    return ret
-
-def list_arches():
-    return list_dirs("debian/arch")
-
-def list_subarches(arch):
-    ret = [None]
-    ret.extend(list_dirs("debian/arch/%s" % arch))
-    return ret
-
-def list_flavours(arch, subarch):
-    dir = "debian/arch/%s" % arch
-    if subarch is not None:
-        dir += "/%s" % subarch
-    tmp = list_files(dir)
-    ret = []
-    for i in tmp:
-        if i[:7] == 'config.':
-            ret.append(i[7:])
-    return ret
-
 def read_changelog():
     r = re.compile(r"""
 ^
@@ -268,7 +321,7 @@
               f.write(" %s\n" % k)
         f.write('\n')
 
-if __name__ == '__main__':
+def main():
     changelog = read_changelog()
 
     vars = {}
@@ -277,16 +330,23 @@
     version = vars['version']
     source_version = vars['srcver']
 
-    vars.update(config().defaults())
+    c = config()
 
+    vars.update(c['base'])
+
     arches = {}
     subarches_architecture = {}
-    for arch in list_arches():
+    for arch in c['base']['arches']:
         t1 = {}
-        for subarch in list_subarches(arch):
+        for subarch in c[arch].get('subarches', []):
             t2 = {}
-            for flavour in list_flavours(arch, subarch):
-                t2[flavour] = True
+            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
@@ -327,7 +387,7 @@
     for arch in arch_list:
         arch_vars = vars.copy()
         arch_vars['arch'] = arch
-        arch_vars.update(config_arch(arch).defaults())
+        arch_vars.update(c[arch])
 
         for i in (('setup',)):
             makefile.append(("%s-%s:: %s-%s-real" % (i, arch, i, arch), None))
@@ -341,13 +401,12 @@
         subarch_list = arches[arch].keys()
         subarch_list.sort()
         for subarch in subarch_list:
-            subarch_config = config_subarch(arch, subarch)
             subarch_vars = arch_vars.copy()
-            subarch_vars.update(subarch_config.defaults())
 
             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'] = ''
@@ -372,8 +431,9 @@
             for flavour in flavour_list:
                 flavour_vars = subarch_vars.copy()
                 flavour_vars['flavour'] = flavour
+
                 try:
-                    flavour_vars.update(dict(subarch_config.items(flavour)))
+                    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
@@ -418,7 +478,7 @@
     archs.sort()
     for arch in archs:
         arch_vars = vars.copy()
-        arch_vars.update(config_arch(arch).defaults())
+        arch_vars.update(c[arch])
 
         cmds = []
         for i in extra_pn[arch]:
@@ -433,3 +493,5 @@
     write_makefile(makefile)
 
 
+if __name__ == '__main__':
+    main()




More information about the Kernel-svn-changes mailing list