[kernel] r9226 - dists/trunk/linux-2.6/debian/lib/python/debian_linux

Bastian Blank waldi at alioth.debian.org
Mon Jul 30 10:24:46 UTC 2007


Author: waldi
Date: Mon Jul 30 10:24:45 2007
New Revision: 9226

Log:
debian/lib/python/debian_linux/config.py
- Redo section reading.
- Drop support for implicit base.


Modified:
   dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py

Modified: dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py
==============================================================================
--- dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py	(original)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py	Mon Jul 30 10:24:45 2007
@@ -61,19 +61,12 @@
         flavours = config['base',].get('flavours', [])
 
         for section in iter(config):
-            real = list(section)
-            # TODO
-            if real[-1] in featuresets:
-                real[0:0] = ['base', arch]
-            elif real[-1] in flavours:
-                real[0:0] = ['base', arch, 'none']
+            if section[0] in featuresets:
+                real = (section[-1], arch, section[0])
+            elif len(section) > 1:
+                real = (section[-1], arch, None) + section[:-1]
             else:
-                real[0:0] = [real.pop()]
-                if real[-1] in flavours:
-                    real[1:1] = [arch, 'none']
-                else:
-                    real[1:1] = [arch]
-            real = tuple(real)
+                real = (section[-1], arch) + section[:-1]
             s = self.get(real, {})
             s.update(config[section])
             self[tuple(real)] = s
@@ -88,8 +81,6 @@
             del base['flavours']
             self['base', arch] = base
             self['base', arch, 'none'] = {'flavours': flavours, 'implicit-flavour': True}
-            for flavour in flavours:
-                self._read_flavour(arch, 'none', flavour)
 
     def _read_arch_featureset(self, arch, featureset):
         config = ConfigParser(self.schemas)
@@ -98,54 +89,41 @@
         flavours = config['base',].get('flavours', [])
 
         for section in iter(config):
-            real = list(section)
-            if real[-1] in flavours:
-                real[0:0] = ['base', arch, featureset]
-            else:
-                real[0:0] = [real.pop(), arch, featureset]
-            real = tuple(real)
+            real = (section[-1], arch, featureset) + section[:-1]
             s = self.get(real, {})
             s.update(config[section])
             self[tuple(real)] = s
 
-        for flavour in flavours:
-            self._read_flavour(arch, featureset, flavour)
-
     def _read_base(self):
         config = ConfigParser(self.schemas)
         config.read(self.get_files(self.config_name))
 
         arches = config['base',]['arches']
+        featuresets = config['base',]['featuresets']
 
         for section in iter(config):
-            real = list(section)
-            if real[-1] in arches:
-                real.insert(0, 'base')
+            if section[0] in featuresets:
+                real = (section[-1], None, section[0])
+            elif section[0].startswith('featureset-'):
+                real = (section[-1], None, section[0].lstrip('featureset-'))
             else:
-                real.insert(0, real.pop())
-            self[tuple(real)] = config[section]
+                real = (section[-1],) + section[1:]
+            self[real] = config[section]
 
         for arch in arches:
             self._read_arch(arch)
+        for featureset in featuresets:
+            self._read_featureset(featureset)
 
     def _read_featureset(self, featureset):
         config = ConfigParser(self.schemas)
         config.read(self.get_files("featureset-%s/%s" % (featureset, self.config_name)))
 
         for section in iter(config):
-            real = list(section)
-            real[0:0] = [real.pop(), "featureset-" + featureset]
-            real = tuple(real)
+            real = (section[-1], None, featureset)
             s = self.get(real, {})
             s.update(config[section])
-            self[tuple(real)] = s
-
-    def _read_flavour(self, arch, featureset, flavour):
-        if not self.has_key(('base', arch, featureset, flavour)):
-            if featureset == 'none':
-                import warnings
-                warnings.warn('No config entry for flavour %s, featureset none, arch %s' % (flavour, arch), DeprecationWarning)
-            self['base', arch, featureset, flavour] = {}
+            self[real] = s
 
     def get_files(self, name):
         return [os.path.join(i, name) for i in self._dirs if i]
@@ -153,13 +131,14 @@
     def merge(self, section, arch = None, featureset = None, flavour = None):
         ret = {}
         ret.update(self.get((section,), {}))
+        if featureset:
+            ret.update(self.get((section, None, featureset), {}))
         if arch:
             ret.update(self.get((section, arch), {}))
-        if flavour and featureset and featureset != 'none':
-            ret.update(self.get((section, arch, 'none', flavour), {}))
-        if featureset:
+        if arch and featureset:
             ret.update(self.get((section, arch, featureset), {}))
-        if flavour:
+        if arch and featureset and flavour:
+            ret.update(self.get((section, arch, None, flavour), {}))
             ret.update(self.get((section, arch, featureset, flavour), {}))
         return ret
 
@@ -190,12 +169,8 @@
             s1 = section.split('_')
             if s1[-1] in self.schemas:
                 ret[tuple(s1)] = self.SectionSchema(data, self.schemas[s1[-1]])
-            elif 'base' in self.schemas:
-                import warnings
-                warnings.warn('Implicit base definition: %s' % section, DeprecationWarning)
-                ret[tuple(s1)] = self.SectionSchema(data, self.schemas['base'])
             else:
-                ret[section] = self.Section(data)
+                ret[(section,)] = self.Section(data)
         return ret
 
     def keys(self):



More information about the Kernel-svn-changes mailing list