From: Joerg Jaspert Date: Sun, 12 Aug 2012 11:21:00 +0000 (+0200) Subject: Merge remote-tracking branch 'ansgar/pu/multiarchive-2' X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;ds=sidebyside;h=5a7eb60006644e5ec089f3c71c25a0404f0659fe;hp=-c;p=dak.git Merge remote-tracking branch 'ansgar/pu/multiarchive-2' * ansgar/pu/multiarchive-2: dak/dakdb/update78.py: alter permissions for new tables and set default permissions daklib/dbconn.py: DBBinary.get_component_name is gone, use PoolFile.component instead Signed-off-by: Joerg Jaspert --- 5a7eb60006644e5ec089f3c71c25a0404f0659fe diff --combined daklib/dbconn.py index e994a52b,9b5072e4..293f4dcb --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@@ -42,6 -42,8 +42,6 @@@ import tracebac import commands import signal -from daklib.gpg import SignedFile - try: # python >= 2.6 import json @@@ -636,7 -638,7 +636,7 @@@ def get_component_by_package_suite(pack if binary is None: return None else: - return binary.get_component_name() + return binary.poolfile.component.component_name __all__.append('get_component_by_package_suite') @@@ -1881,60 -1883,6 +1881,60 @@@ __all__.append('SrcContents' ################################################################################ +from debian.debfile import Deb822 + +# Temporary Deb822 subclass to fix bugs with : handling; see #597249 +class Dak822(Deb822): + def _internal_parser(self, sequence, fields=None): + # The key is non-whitespace, non-colon characters before any colon. + key_part = r"^(?P[^: \t\n\r\f\v]+)\s*:\s*" + single = re.compile(key_part + r"(?P\S.*?)\s*$") + multi = re.compile(key_part + r"$") + multidata = re.compile(r"^\s(?P.+?)\s*$") + + wanted_field = lambda f: fields is None or f in fields + + if isinstance(sequence, basestring): + sequence = sequence.splitlines() + + curkey = None + content = "" + for line in self.gpg_stripped_paragraph(sequence): + m = single.match(line) + if m: + if curkey: + self[curkey] = content + + if not wanted_field(m.group('key')): + curkey = None + continue + + curkey = m.group('key') + content = m.group('data') + continue + + m = multi.match(line) + if m: + if curkey: + self[curkey] = content + + if not wanted_field(m.group('key')): + curkey = None + continue + + curkey = m.group('key') + content = "" + continue + + m = multidata.match(line) + if m: + content += '\n' + line # XXX not m.group('data')? + continue + + if curkey: + self[curkey] = content + + class DBSource(ORMObject): def __init__(self, source = None, version = None, maintainer = None, \ changedby = None, poolfile = None, install_date = None, fingerprint = None): @@@ -1967,7 -1915,9 +1967,7 @@@ @return: fields is the dsc information in a dictionary form ''' fullpath = self.poolfile.fullpath - contents = open(fullpath, 'r').read() - signed_file = SignedFile(contents, keyrings=[], require_signature=False) - fields = apt_pkg.TagSection(signed_file.contents) + fields = Dak822(open(self.poolfile.fullpath, 'r')) return fields metadata = association_proxy('key', 'value')