From a2ceeb816dbaf631c20a3290ee78777a8c909636 Mon Sep 17 00:00:00 2001 From: Ansgar Burchardt Date: Thu, 31 Jul 2014 23:23:35 +0200 Subject: [PATCH] The Binary field of source packages is comma-seperated. --- daklib/packagelist.py | 24 +++++++++++++----------- tests/test_packagelist.py | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/daklib/packagelist.py b/daklib/packagelist.py index f98a0c47..ddb5c818 100644 --- a/daklib/packagelist.py +++ b/daklib/packagelist.py @@ -62,23 +62,25 @@ class PackageListEntry(object): class PackageList(object): def __init__(self, source): - self._source = source - if 'Package-List' in self._source: - self._parse() - elif 'Binary' in self._source: - self._parse_fallback() + if 'Package-List' in source: + self._parse(source) + elif 'Binary' in source: + self._parse_fallback(source) else: raise InvalidSource('Source package has neither Package-List nor Binary field.') self.fallback = any(entry.architectures is None for entry in self.package_list) - def _parse(self): + def _binaries(self, source): + return set(name.strip() for name in source['Binary'].split(",")) + + def _parse(self, source): self.package_list = [] - binaries_binary = set(self._source['Binary'].split()) + binaries_binary = self._binaries(source) binaries_package_list = set() - for line in self._source['Package-List'].split("\n"): + for line in source['Package-List'].split("\n"): if not line: continue fields = line.split() @@ -95,7 +97,7 @@ class PackageList(object): if name in binaries_package_list: raise InvalidSource("Package-List has two entries for '{0}'.".format(name)) if name not in binaries_binary: - raise InvalidSource("Package-List lists {0} which is not listed in Binaries.".format(name)) + raise InvalidSource("Package-List lists {0} which is not listed in Binary.".format(name)) binaries_package_list.add(name) entry = PackageListEntry(name, package_type, section, component, priority, **other) @@ -104,10 +106,10 @@ class PackageList(object): if len(binaries_binary) != len(binaries_package_list): raise InvalidSource("Package-List and Binaries fields have a different number of entries.") - def _parse_fallback(self): + def _parse_fallback(self, source): self.package_list = [] - for binary in self._source['Binary'].split(): + for binary in self._binaries(source): name = binary package_type = None component = None diff --git a/tests/test_packagelist.py b/tests/test_packagelist.py index 7f3629ab..9259e739 100644 --- a/tests/test_packagelist.py +++ b/tests/test_packagelist.py @@ -40,7 +40,7 @@ source_any = { source_all_any = { 'Package-List': '\n libdune-common-dev deb libdevel optional arch=any\nlibdune-common-doc deb doc optional arch=all\n', - 'Binary': 'libdune-common-dev libdune-common-doc\n', + 'Binary': 'libdune-common-dev, libdune-common-doc\n', } source_amd64 = { -- 2.39.5