]> git.decadent.org.uk Git - dak.git/commitdiff
Merge remote-tracking branch 'ansgar/pu/multiarchive-2'
authorJoerg Jaspert <joerg@debian.org>
Sun, 12 Aug 2012 11:21:00 +0000 (13:21 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sun, 12 Aug 2012 11:21:00 +0000 (13:21 +0200)
* 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 <joerg@debian.org>
1  2 
daklib/dbconn.py

diff --combined daklib/dbconn.py
index e994a52b2ff2c26072445262b6b7eedec94d01e9,9b5072e4abecf0f71f7aa63a671f7f4513336d9c..293f4dcb799e7abcf0587194dfa593925e1df58d
@@@ -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<key>[^: \t\n\r\f\v]+)\s*:\s*"
 +        single = re.compile(key_part + r"(?P<data>\S.*?)\s*$")
 +        multi = re.compile(key_part + r"$")
 +        multidata = re.compile(r"^\s(?P<data>.+?)\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):
          @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')