diff options
author | Bastian Blank <waldi@debian.org> | 2006-04-16 23:53:58 +0000 |
---|---|---|
committer | Bastian Blank <waldi@debian.org> | 2006-04-16 23:53:58 +0000 |
commit | 8e7fde74f4ee99ebdf8dd31d81e441d4c006b117 (patch) | |
tree | baba0eacaf603509c3baac11cb3ef33b054c0c58 /debian/lib/python/debian_linux/debian.py | |
parent | b2b25ed7c8188ea4c047c8d7250a8d68aa7f06ad (diff) | |
download | kernel_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.py | 88 |
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), |