aboutsummaryrefslogtreecommitdiffstats
path: root/debian/lib/python/debian_linux/debian.py
diff options
context:
space:
mode:
authorBastian Blank <waldi@debian.org>2006-04-16 23:53:58 +0000
committerBastian Blank <waldi@debian.org>2006-04-16 23:53:58 +0000
commit8e7fde74f4ee99ebdf8dd31d81e441d4c006b117 (patch)
treebaba0eacaf603509c3baac11cb3ef33b054c0c58 /debian/lib/python/debian_linux/debian.py
parentb2b25ed7c8188ea4c047c8d7250a8d68aa7f06ad (diff)
downloadkernel_replicant_linux-8e7fde74f4ee99ebdf8dd31d81e441d4c006b117.tar.gz
kernel_replicant_linux-8e7fde74f4ee99ebdf8dd31d81e441d4c006b117.tar.bz2
kernel_replicant_linux-8e7fde74f4ee99ebdf8dd31d81e441d4c006b117.zip
* debian/arch/amd64/vserver/defines, debian/arch/i386/vserver/defines,
debian/arch/powerpc/vserver/defines: Add util-vserver to Recommends. * debian/bin/gencontrol.py: Fix dependency generation of image packages. * debian/lib/python/debian_linux/debian.py - Make type checks in relation classes more strict. - Support checking of each entry against the config. svn path=/dists/trunk/linux-2.6/; revision=6434
Diffstat (limited to 'debian/lib/python/debian_linux/debian.py')
-rw-r--r--debian/lib/python/debian_linux/debian.py88
1 files changed, 61 insertions, 27 deletions
diff --git a/debian/lib/python/debian_linux/debian.py b/debian/lib/python/debian_linux/debian.py
index 9e41e0c83d3d..ce1e287b90d0 100644
--- a/debian/lib/python/debian_linux/debian.py
+++ b/debian/lib/python/debian_linux/debian.py
@@ -107,16 +107,7 @@ class package_relation(object):
def __init__(self, value = None):
if value is not None:
- match = self._re.match(value)
- if match is None:
- raise RuntimeError, "Can't parse dependency %s" % value
- match = match.groups()
- self.name = match[0]
- self.version = match[1]
- if match[2] is not None:
- self.arches = re.split('\s+', match[2])
- else:
- self.arches = []
+ self.parse(value)
else:
self.name = None
self.version = None
@@ -130,11 +121,29 @@ class package_relation(object):
ret.extend([' [', ' '.join(self.arches), ']'])
return ''.join(ret)
+ def config(self, entry):
+ if self.version is not None or self.arches:
+ return
+ value = entry.get(self.name, None)
+ if value is None:
+ return
+ self.parse(value)
+
+ def parse(self, value):
+ match = self._re.match(value)
+ if match is None:
+ raise RuntimeError, "Can't parse dependency %s" % value
+ match = match.groups()
+ self.name = match[0]
+ self.version = match[1]
+ if match[2] is not None:
+ self.arches = re.split('\s+', match[2])
+ else:
+ self.arches = []
+
class package_relation_list(list):
def __init__(self, value = None):
- if isinstance(value, (list, tuple)):
- self.extend(value)
- elif value is not None:
+ if value is not None:
self.extend(value)
def __str__(self):
@@ -146,31 +155,37 @@ class package_relation_list(list):
return i
return None
+ def append(self, value):
+ if isinstance(value, basestring):
+ value = package_relation_group(value)
+ elif not isinstance(value, package_relation_group):
+ raise ValueError, "got %s" % type(value)
+ j = self._match(value)
+ if j:
+ j._update_arches(value)
+ else:
+ super(package_relation_list, self).append(value)
+
+ def config(self, entry):
+ for i in self:
+ i.config(entry)
+
def extend(self, value):
if isinstance(value, basestring):
- value = [package_relation_group(j.strip()) for j in re.split(',', value.strip())]
+ value = [j.strip() for j in re.split(',', value.strip())]
+ elif not isinstance(value, (list, tuple)):
+ raise ValueError, "got %s" % type(value)
for i in value:
- if isinstance(i, basestring):
- i = package_relation_group(i)
- j = self._match(i)
- if j:
- j._update_arches(i)
- else:
- self.append(i)
+ self.append(i)
class package_relation_group(list):
def __init__(self, value = None):
- if isinstance(value, package_relation_list):
+ if value is not None:
self.extend(value)
- elif value is not None:
- self._extend(value)
def __str__(self):
return ' | '.join([str(i) for i in self])
- def _extend(self, value):
- self.extend([package_relation(j.strip()) for j in re.split('\|', value.strip())])
-
def _match(self, value):
for i, j in itertools.izip(self, value):
if i.name != j.name or i.version != j.version:
@@ -184,6 +199,25 @@ class package_relation_group(list):
if arch not in i.arches:
i.arches.append(arch)
+ def append(self, value):
+ if isinstance(value, basestring):
+ value = package_relation(value)
+ elif not isinstance(value, package_relation):
+ raise ValueError
+ super(package_relation_group, self).append(value)
+
+ def config(self, entry):
+ for i in self:
+ i.config(entry)
+
+ def extend(self, value):
+ if isinstance(value, basestring):
+ value = [j.strip() for j in re.split('\|', value.strip())]
+ elif not isinstance(value, (list, tuple)):
+ raise ValueError
+ for i in value:
+ self.append(i)
+
class package(dict):
_fields = utils.sorted_dict((
('Package', str),