[kernel] r4814 - in people/waldi/linux-2.6/debian: bin
lib/python/debian_linux
Bastian Blank
waldi at costa.debian.org
Sun Nov 13 17:38:52 UTC 2005
Author: waldi
Date: Sun Nov 13 17:38:50 2005
New Revision: 4814
Modified:
people/waldi/linux-2.6/debian/bin/gencontrol.py
people/waldi/linux-2.6/debian/lib/python/debian_linux/debian.py
people/waldi/linux-2.6/debian/lib/python/debian_linux/gencontrol.py
people/waldi/linux-2.6/debian/lib/python/debian_linux/utils.py
Log:
* debian/bin/gencontrol.py, debian/lib/python/debian_linux/gencontrol.py,
debian/lib/python/debian_linux/utils.py: Teach package object how to
work with list attributes.
* debian/lib/python/debian_linux/debian.py: Don't use utils.entry.
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 17:38:50 2005
@@ -21,9 +21,9 @@
name = package_headers_arch['Package']
if packages.has_key(name):
package_headers_arch = packages.get(name)
- package_headers_arch['Architecture'][1].append(arch)
+ package_headers_arch['Architecture'].append(arch)
else:
- package_headers_arch['Architecture'] = (' ', [arch])
+ package_headers_arch['Architecture'] = [arch]
packages.append(package_headers_arch)
makeflags_string = ' '.join(["%s='%s'" % i for i in makeflags.iteritems()])
@@ -55,9 +55,9 @@
name = package_headers['Package']
if packages.has_key(name):
package_headers = packages.get(name)
- package_headers['Architecture'][1].append(arch)
+ package_headers['Architecture'].append(arch)
else:
- package_headers['Architecture'] = (' ', [arch])
+ package_headers['Architecture'] = [arch]
packages.append(package_headers)
makeflags_string = ' '.join(["%s='%s'" % i for i in makeflags.iteritems()])
@@ -99,9 +99,9 @@
name = package['Package']
if packages.has_key(name):
package = packages.get(name)
- package['Architecture'][1].append(arch)
+ package['Architecture'].append(arch)
else:
- package['Architecture'] = (' ', [arch])
+ package['Architecture'] = [arch]
packages.append(package)
extra['headers_arch_depends'].append(packages_own[1]['Package'])
@@ -125,16 +125,11 @@
in_entry['Description'] += "\n.\n" + vars['desc']
entry = self.process_package(in_entry, vars)
for field in (('Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts')):
- value = []
- tmp = entry.get(field, None)
- if tmp:
- tmp = tmp.split(',')
- for t in tmp:
- value.append(t.strip())
+ value = entry.get(field, None)
t = vars.get(field.lower(), None)
if t is not None:
- value.append(t)
- entry[field] = ', '.join(value)
+ value.extend(t)
+ entry[field] = value
return entry
def process_real_tree(self, in_entry, vars):
Modified: people/waldi/linux-2.6/debian/lib/python/debian_linux/debian.py
==============================================================================
--- people/waldi/linux-2.6/debian/lib/python/debian_linux/debian.py (original)
+++ people/waldi/linux-2.6/debian/lib/python/debian_linux/debian.py Sun Nov 13 17:38:50 2005
@@ -34,7 +34,7 @@
if not match:
continue
if match.group('header'):
- e = utils.entry()
+ e = {}
e['Distribution'] = match.group('header_distribution')
e['Source'] = match.group('header_source')
version = parse_version(match.group('header_version'))
Modified: people/waldi/linux-2.6/debian/lib/python/debian_linux/gencontrol.py
==============================================================================
--- people/waldi/linux-2.6/debian/lib/python/debian_linux/gencontrol.py (original)
+++ people/waldi/linux-2.6/debian/lib/python/debian_linux/gencontrol.py Sun Nov 13 17:38:50 2005
@@ -68,7 +68,7 @@
packages.extend(self.process_packages(templates_extra, {}))
extra_arches = {}
for package in templates_extra:
- arches = package['Architecture'].split(' ')
+ arches = package['Architecture']
for arch in arches:
i = extra_arches.get(arch, [])
i.append(package)
@@ -186,17 +186,14 @@
ret[3] = vars
return ret
- def process_depends(self, key, e, in_e, vars):
- in_dep = in_e[key].split(',')
- dep = []
+ def process_relation(self, key, e, in_e, vars):
+ in_dep = in_e[key]
+ dep = type(in_dep)()
for d in in_dep:
- d = d.strip()
d = self.substitute(d, vars)
if d:
dep.append(d)
- if dep:
- t = ', '.join(dep)
- e[key] = t
+ e[key] = dep
def process_description(self, e, in_e, vars):
desc = in_e['Description']
@@ -212,7 +209,7 @@
e = entry()
for i in in_entry.iterkeys():
if i in (('Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts')):
- self.process_depends(i, e, in_entry, vars)
+ self.process_relation(i, e, in_entry, vars)
elif i == 'Description':
self.process_description(e, in_entry, vars)
elif i[:2] == 'X-':
@@ -228,6 +225,10 @@
return entries
def substitute(self, s, vars):
+ if isinstance(s, (list, tuple)):
+ for i in xrange(len(s)):
+ s[i] = self.substitute(s[i], vars)
+ return s
def subst(match):
return vars[match.group(1)]
return re.sub(r'@([a-z_]+)@', subst, s)
@@ -252,10 +253,8 @@
for entry in list:
for key, value in entry.iteritems():
f.write("%s:" % key)
- if isinstance(value, tuple):
- value = value[0].join(value[1])
- for k in value.split('\n'):
- f.write(" %s\n" % k)
+ print key, type(value), repr(value)
+ f.write(" %s\n" % value)
f.write('\n')
Modified: people/waldi/linux-2.6/debian/lib/python/debian_linux/utils.py
==============================================================================
--- people/waldi/linux-2.6/debian/lib/python/debian_linux/utils.py (original)
+++ people/waldi/linux-2.6/debian/lib/python/debian_linux/utils.py Sun Nov 13 17:38:50 2005
@@ -3,9 +3,12 @@
class _sorted_dict(dict):
__slots__ = ('_list')
- def __init__(self):
+ def __init__(self, entries = None):
super(_sorted_dict, self).__init__()
self._list = []
+ if entries is not None:
+ for key, value in entries:
+ self[key] = value
def __delitem__(self, key):
super(_sorted_dict, self).__delitem__(key)
@@ -31,16 +34,92 @@
if key not in self._list:
self._list.append(key)
-class entry(_sorted_dict):
- __slots__ = ()
+class field_list(list):
+ TYPE_WHITESPACE = object()
+ TYPE_COMMATA = object()
+
+ def __init__(self, value = None, type = TYPE_WHITESPACE):
+ self.type = type
+ if isinstance(value, field_list):
+ self.type = value.type
+ self.extend(value)
+ elif isinstance(value, (list, tuple)):
+ self.extend(value)
+ else:
+ self._extend(value)
+
+ def __str__(self):
+ if self.type is self.TYPE_WHITESPACE:
+ type = ' '
+ elif self.type is self.TYPE_COMMATA:
+ type = ', '
+ return type.join(self)
+
+ def _extend(self, value):
+ if self.type is self.TYPE_WHITESPACE:
+ type = '\s'
+ elif self.type is self.TYPE_COMMATA:
+ type = ','
+ if value is not None:
+ self.extend([j.strip() for j in re.split(type, value.strip())])
+
+ def extend(self, value):
+ if isinstance(value, str):
+ self._extend(value)
+ else:
+ super(field_list, self).extend(value)
+
+class field_list_commata(field_list):
+ def __init__(self, value = None):
+ super(field_list_commata, self).__init__(value, field_list.TYPE_COMMATA)
+
+class field_string(str):
+ def __str__(self):
+ return '\n '.join(self.split('\n'))
+
+class package(dict):
+ _fields = sorted_dict((
+ ('Package', str),
+ ('Source', str),
+ ('Architecture', field_list),
+ ('Section', str),
+ ('Priority', str),
+ ('Maintainer', str),
+ ('Uploaders', str),
+ ('Standards-Version', str),
+ ('Build-Depends', str),
+ ('Build-Depends-Indep', str),
+ ('Provides', field_list_commata),
+ ('Depends', field_list_commata),
+ ('Recommends', field_list_commata),
+ ('Suggests', field_list_commata),
+ ('Replaces', field_list_commata),
+ ('Conflicts', field_list_commata),
+ ('Description', field_string),
+ ))
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)
+ try:
+ value = self._fields[key](value)
+ except KeyError: pass
+ super(package, self).__setitem__(key, value)
+
+ def iterkeys(self):
+ for i in self._fields.iterkeys():
+ if self.has_key(i):
+ yield i
+
+ def iteritems(self):
+ for i in self._fields.iterkeys():
+ if self.has_key(i):
+ yield (i, self[i])
+
+ def itervalues(self):
+ for i in self._fields.iterkeys():
+ if self.has_key(i):
+ yield self[i]
+
+entry = package
class templates(dict):
def __init__(self, dir = None):
More information about the Kernel-svn-changes
mailing list