[kernel] r18496 - dists/trunk/linux-2.6/debian/lib/python/debian_linux
Bastian Blank
waldi at alioth.debian.org
Wed Jan 11 20:19:24 UTC 2012
Author: waldi
Date: Wed Jan 11 20:19:22 2012
New Revision: 18496
Log:
debian/lib/python/debian_linux/config.py: Return base object for config.
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 Wed Jan 11 20:01:55 2012 (r18495)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py Wed Jan 11 20:19:22 2012 (r18496)
@@ -107,9 +107,7 @@
self[section_real] = data
-class ConfigCoreHierarchy(ConfigCore):
- config_name = "defines"
-
+class ConfigCoreHierarchy(object):
schemas = {
'abi': {
'ignore-changes': SchemaItemList(),
@@ -142,83 +140,92 @@
}
}
- def __init__(self, dirs=[]):
- super(ConfigCoreHierarchy, self).__init__()
- self._dirs = dirs
- self._read_base()
-
- def _read_arch(self, arch):
- config = ConfigParser(self.schemas)
- config.read(self.get_files("%s/%s" % (arch, self.config_name)))
-
- featuresets = config['base', ].get('featuresets', [])
- flavours = config['base', ].get('flavours', [])
-
- for section in iter(config):
- if section[0] in featuresets:
- real = (section[-1], arch, section[0])
- elif len(section) > 1:
- real = (section[-1], arch, None) + section[:-1]
- else:
- real = (section[-1], arch) + section[:-1]
- s = self.get(real, {})
- s.update(config[section])
- self[tuple(real)] = s
-
- for featureset in featuresets:
- self._read_arch_featureset(arch, featureset)
-
- if flavours:
- base = self['base', arch]
- featuresets.insert(0, 'none')
- base['featuresets'] = featuresets
- del base['flavours']
- self['base', arch] = base
- self['base', arch, 'none'] = {'flavours': flavours, 'implicit-flavour': True}
-
- def _read_arch_featureset(self, arch, featureset):
- config = ConfigParser(self.schemas)
- config.read(self.get_files("%s/%s/%s" % (arch, featureset, self.config_name)))
-
- flavours = config['base', ].get('flavours', [])
-
- for section in iter(config):
- real = (section[-1], arch, featureset) + section[:-1]
- s = self.get(real, {})
- s.update(config[section])
- self[tuple(real)] = s
-
- def _read_base(self):
- config = ConfigParser(self.schemas)
- config.read(self.get_files(self.config_name))
-
- arches = config['base', ]['arches']
- featuresets = config['base', ].get('featuresets', [])
-
- for section in iter(config):
- if section[0].startswith('featureset-'):
- real = (section[-1], None, section[0].lstrip('featureset-'))
- else:
- 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 = (section[-1], None, featureset)
- s = self.get(real, {})
- s.update(config[section])
- self[real] = s
+ def __new__(cls, dirs=[]):
+ return cls.Reader(dirs, cls.schemas)()
+
+ class Reader(object):
+ config_name = "defines"
+
+ def __init__(self, dirs, schema):
+ self.dirs, self.schema = dirs, schema
- def get_files(self, name):
- return [os.path.join(i, name) for i in self._dirs if i]
+ def __call__(self):
+ ret = ConfigCore()
+ self.read(ret)
+ return ret
+
+ def get_files(self, name):
+ return [os.path.join(i, name) for i in self.dirs if i]
+
+ def read_arch(self, ret, arch):
+ config = ConfigParser(self.schema)
+ config.read(self.get_files("%s/%s" % (arch, self.config_name)))
+
+ featuresets = config['base', ].get('featuresets', [])
+ flavours = config['base', ].get('flavours', [])
+
+ for section in iter(config):
+ if section[0] in featuresets:
+ real = (section[-1], arch, section[0])
+ elif len(section) > 1:
+ real = (section[-1], arch, None) + section[:-1]
+ else:
+ real = (section[-1], arch) + section[:-1]
+ s = ret.get(real, {})
+ s.update(config[section])
+ ret[tuple(real)] = s
+
+ for featureset in featuresets:
+ self.read_arch_featureset(ret, arch, featureset)
+
+ if flavours:
+ base = ret['base', arch]
+ featuresets.insert(0, 'none')
+ base['featuresets'] = featuresets
+ del base['flavours']
+ ret['base', arch] = base
+ ret['base', arch, 'none'] = {'flavours': flavours, 'implicit-flavour': True}
+
+ def read_arch_featureset(self, ret, arch, featureset):
+ config = ConfigParser(self.schema)
+ config.read(self.get_files("%s/%s/%s" % (arch, featureset, self.config_name)))
+
+ flavours = config['base', ].get('flavours', [])
+
+ for section in iter(config):
+ real = (section[-1], arch, featureset) + section[:-1]
+ s = ret.get(real, {})
+ s.update(config[section])
+ ret[tuple(real)] = s
+
+ def read(self, ret):
+ config = ConfigParser(self.schema)
+ config.read(self.get_files(self.config_name))
+
+ arches = config['base', ]['arches']
+ featuresets = config['base', ].get('featuresets', [])
+
+ for section in iter(config):
+ if section[0].startswith('featureset-'):
+ real = (section[-1], None, section[0].lstrip('featureset-'))
+ else:
+ real = (section[-1],) + section[1:]
+ ret[real] = config[section]
+
+ for arch in arches:
+ self.read_arch(ret, arch)
+ for featureset in featuresets:
+ self.read_featureset(ret, featureset)
+
+ def read_featureset(self, ret, featureset):
+ config = ConfigParser(self.schema)
+ config.read(self.get_files("featureset-%s/%s" % (featureset, self.config_name)))
+
+ for section in iter(config):
+ real = (section[-1], None, featureset)
+ s = ret.get(real, {})
+ s.update(config[section])
+ ret[real] = s
class ConfigParser(object):
More information about the Kernel-svn-changes
mailing list