[kernel] r4796 - in people/waldi/linux-2.6/debian: bin lib/python
lib/python/debian_linux
Bastian Blank
waldi at costa.debian.org
Sun Nov 13 14:09:40 UTC 2005
Author: waldi
Date: Sun Nov 13 14:09:40 2005
New Revision: 4796
Added:
people/waldi/linux-2.6/debian/lib/python/debian_linux/
people/waldi/linux-2.6/debian/lib/python/debian_linux/__init__.py
- copied, changed from r4733, people/waldi/linux-2.6/debian/lib/python/debian_linux.py
people/waldi/linux-2.6/debian/lib/python/debian_linux/config.py
Removed:
people/waldi/linux-2.6/debian/lib/python/debian_linux.py
Modified:
people/waldi/linux-2.6/debian/bin/gencontrol.py
Log:
* debian/bin/gencontrol.py: Use config_reader.
* debian/lib/python/debian_linux: Add directory.
* debian/lib/python/debian_linux/__init__.py: Move from debian/lib/python/python/debian_linux.py.
* debian/lib/python/debian_linux/config.py: Add config_reader and config_parser.
Modified: people/waldi/linux-2.6/debian/bin/gencontrol.py
==============================================================================
--- people/waldi/linux-2.6/debian/bin/gencontrol.py (original)
+++ people/waldi/linux-2.6/debian/bin/gencontrol.py Sun Nov 13 14:09:40 2005
@@ -428,7 +428,7 @@
def main():
changelog = read_changelog()
- c = config()
+ c = config_reader()
t = templates()
version, abiname, kpkg_abiname, vars = process_changelog({}, c, changelog)
Copied: people/waldi/linux-2.6/debian/lib/python/debian_linux/__init__.py (from r4733, people/waldi/linux-2.6/debian/lib/python/debian_linux.py)
==============================================================================
--- people/waldi/linux-2.6/debian/lib/python/debian_linux.py (original)
+++ people/waldi/linux-2.6/debian/lib/python/debian_linux/__init__.py Sun Nov 13 14:09:40 2005
@@ -1,141 +1,6 @@
import os, os.path, re, sys, textwrap, ConfigParser
-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_list(object):
- def __call__(self, i):
- return re.split("\s+", i.strip())
-
-class config(dict):
- schema = {
- 'arches': schema_item_list,
- 'available': schema_item_boolean,
- 'flavours': schema_item_list,
- 'subarches': schema_item_list,
- }
-
- config_name = "defines"
-
- def __init__(self, overlay_dir = None):
- self._overlay_dir = overlay_dir
- self._read_base()
-
- def __getitem__(self, key):
- if isinstance(key, basestring):
- return super(config, self).__getitem__(key)
- if isinstance(key, tuple):
- ret = {}
- ret.update(super(config, self).__getitem__('base'))
- if len(key) >= 1:
- # XXX: workaround
- del ret['abiname']
- del ret['arches']
- ret.update(super(config, self).__getitem__(key[0]))
- if len(key) >= 2:
- del ret['subarches']
- ret.update(super(config, self).__getitem__('-'.join(key[0:2])))
- if len(key) >= 3:
- del ret['flavours']
- ret.update(super(config, self).__getitem__('-'.join(key[0:3])))
- return ret
- raise NotImplemented
-
- def _get_files(self, name):
- ret = []
- if self._overlay_dir is not None:
- ret.append(os.path.join(self._overlay_dir, name))
- ret.append(name)
- return ret
-
- def _read_arch(self, arch, base):
- files = self._get_files("debian/arch/%s/%s" % (arch, self.config_name))
- c = config_parser(self.schema)
- c.read(files)
- t = c.items_convert('base')
- base.update(t)
- self[arch] = t
- subarches = t.get('subarches', [])
- for subarch in subarches:
- try:
- t2 = c.items_convert(subarch)
- avail = t2.get('available', True)
- except ConfigParser.NoSectionError:
- t2 = {}
- avail = True
- if avail:
- self._read_subarch(arch, subarch, t2)
- else:
- self['-'.join((arch, subarch))] = t2
- flavours = t.get('flavours', None)
- if flavours:
- for flavour in flavours:
- self._read_flavour(arch, 'none', flavour, c)
- self['-'.join((arch, 'none'))] = {}
- subarches.insert(0, 'none')
- t['subarches'] = subarches
-
- def _read_base(self):
- files = self._get_files("debian/arch/%s" % self.config_name)
- c = config_parser(self.schema)
- c.read(files)
- 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
-
- def _read_subarch(self, arch, subarch, base):
- files = self._get_files("debian/arch/%s/%s/%s" % (arch, subarch, self.config_name))
- c = config_parser(self.schema)
- c.read(files)
- t = c.items_convert('base')
- base.update(t)
- self['-'.join((arch, subarch))] = t
- flavours = t.get('flavours', None)
- for flavour in flavours:
- self._read_flavour(arch, subarch, flavour, c)
-
-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:
- try:
- convert = self.schema[key]()
- value = convert(value)
- except KeyError: pass
- ret[key] = value
- return ret
+from config import config_reader
class _sorted_dict(dict):
__slots__ = ('_list')
Added: people/waldi/linux-2.6/debian/lib/python/debian_linux/config.py
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/lib/python/debian_linux/config.py Sun Nov 13 14:09:40 2005
@@ -0,0 +1,241 @@
+import os, os.path, re, sys, textwrap, ConfigParser
+
+class config_reader(dict):
+ 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_list(object):
+ def __init__(self, type = "\s+"):
+ self.type = type
+
+ def __call__(self, i):
+ return [j.strip() for j in re.split(self.type, i.strip())]
+
+ schema = {
+ 'arches': schema_item_list(),
+ 'available': schema_item_boolean(),
+ 'flavours': schema_item_list(),
+ 'subarches': schema_item_list(),
+ }
+
+ config_name = "defines"
+
+ def __init__(self, overlay_dir = None):
+ self._overlay_dir = overlay_dir
+ self._read_base()
+
+ def __getitem__(self, key):
+ if isinstance(key, basestring):
+ return super(config_reader, self).__getitem__(key)
+ if isinstance(key, tuple):
+ ret = {}
+ self.update(ret, 'base')
+ if len(key) >= 1:
+ # XXX: workaround
+ del ret['abiname']
+ del ret['arches']
+ self.update(ret, key[0])
+ if len(key) >= 2:
+ del ret['subarches']
+ self.update(ret, '-'.join(key[0:2]))
+ if len(key) >= 3:
+ del ret['flavours']
+ self.update(ret, '-'.join(key[0:3]))
+ return ret
+ raise NotImplemented
+
+ def _get_files(self, name):
+ ret = []
+ if self._overlay_dir is not None:
+ ret.append(os.path.join(self._overlay_dir, name))
+ ret.append(name)
+ return ret
+
+ def _read_arch(self, arch, base):
+ files = self._get_files("debian/arch/%s/%s" % (arch, self.config_name))
+ c = config_parser(self.schema)
+ c.read(files)
+ t = c.items_convert('base')
+ base.update(t)
+ self[arch] = t
+ subarches = t.get('subarches', [])
+ for subarch in subarches:
+ try:
+ t2 = c.items_convert(subarch)
+ avail = t2.get('available', True)
+ except ConfigParser.NoSectionError:
+ t2 = {}
+ avail = True
+ if avail:
+ self._read_subarch(arch, subarch, t2)
+ else:
+ self['-'.join((arch, subarch))] = t2
+ flavours = t.get('flavours', None)
+ if flavours:
+ for flavour in flavours:
+ self._read_flavour(arch, 'none', flavour, c)
+ self['-'.join((arch, 'none'))] = {}
+ subarches.insert(0, 'none')
+ t['subarches'] = subarches
+
+ def _read_base(self):
+ files = self._get_files("debian/arch/%s" % self.config_name)
+ c = config_parser(self.schema)
+ c.read(files)
+ 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
+
+ def _read_subarch(self, arch, subarch, base):
+ files = self._get_files("debian/arch/%s/%s/%s" % (arch, subarch, self.config_name))
+ c = config_parser(self.schema)
+ c.read(files)
+ t = c.items_convert('base')
+ base.update(t)
+ self['-'.join((arch, subarch))] = t
+ flavours = t.get('flavours', None)
+ for flavour in flavours:
+ self._read_flavour(arch, subarch, flavour, c)
+
+ def update(self, ret, inputkey):
+ for key, value in super(config_reader, self).__getitem__(inputkey).iteritems():
+ ret[key] = value
+
+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:
+ try:
+ value = self.schema[key](value)
+ except KeyError: pass
+ ret[key] = value
+ return ret
+
+class _sorted_dict(dict):
+ __slots__ = ('_list')
+
+ def __init__(self):
+ super(_sorted_dict, self).__init__()
+ self._list = []
+
+ def __delitem__(self, 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 not in self._list:
+ if 'Description' in self._list:
+ self._list.insert(len(self._list)-1, key)
+ else:
+ self._list.append(key)
+
+class templates(dict):
+ def __init__(self, dir = None):
+ if dir is None:
+ self.dir = "debian/templates"
+ else:
+ self.dir = dir
+
+ def __getitem__(self, key):
+ try:
+ return dict.__getitem__(self, key)
+ except KeyError: pass
+ ret = self._read(key)
+ dict.__setitem__(self, key, ret)
+ return ret
+
+ def __setitem__(self, key, value):
+ raise NotImplemented()
+
+ def _read(self, filename):
+ entries = []
+
+ f = file("%s/%s.in" % (self.dir, filename))
+
+ while True:
+ e = entry()
+ while True:
+ line = f.readline()
+ if not line:
+ break
+ line = line.strip('\n')
+ if not line:
+ break
+ if line[0] in ' \t':
+ if not last:
+ raise ValueError('Continuation line seen before first header')
+ e[last] += '\n' + line.lstrip()
+ continue
+ i = line.find(':')
+ if i < 0:
+ raise ValueError("Not a header, not a continuation: ``%s''" % line)
+ last = line[:i]
+ e[last] = line[i+1:].lstrip()
+ if not e:
+ break
+
+ entries.append(e)
+
+ return entries
+
+class wrap(textwrap.TextWrapper):
+ wordsep_re = re.compile(
+ r'(\s+|' # any whitespace
+ r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash
+
More information about the Kernel-svn-changes
mailing list