]> git.decadent.org.uk Git - dak.git/commitdiff
Merge remote-tracking branch 'origin/master' into p-s-from-db
authorAnsgar Burchardt <ansgar@debian.org>
Fri, 8 Apr 2011 19:31:26 +0000 (21:31 +0200)
committerAnsgar Burchardt <ansgar@debian.org>
Fri, 8 Apr 2011 19:31:26 +0000 (21:31 +0200)
1  2 
daklib/dbconn.py

diff --combined daklib/dbconn.py
index 551515279e027a2c6743ce5e0ed959633be028ce,7af4a7bd3ebd5471485bcfbfbf67318c490b1048..5028b7cdd3015818eea5fe866325e71bd5587205
@@@ -39,6 -39,7 +39,7 @@@ import r
  import psycopg2
  import traceback
  import commands
+ import signal
  
  try:
      # python >= 2.6
@@@ -487,6 -488,11 +488,11 @@@ __all__.append('BinContents'
  
  ################################################################################
  
+ def subprocess_setup():
+     # Python installs a SIGPIPE handler by default. This is usually not what
+     # non-Python subprocesses expect.
+     signal.signal(signal.SIGPIPE, signal.SIG_DFL)
  class DBBinary(ORMObject):
      def __init__(self, package = None, source = None, version = None, \
          maintainer = None, architecture = None, poolfile = None, \
          package does not contain any regular file.
          '''
          fullpath = self.poolfile.fullpath
-         dpkg = Popen(['dpkg-deb', '--fsys-tarfile', fullpath], stdout = PIPE)
+         dpkg = Popen(['dpkg-deb', '--fsys-tarfile', fullpath], stdout = PIPE,
+             preexec_fn = subprocess_setup)
          tar = TarFile.open(fileobj = dpkg.stdout, mode = 'r|')
          for member in tar.getmembers():
              if not member.isdir():
@@@ -2674,6 -2681,8 +2681,8 @@@ def add_dsc_to_db(u, filename, session=
          session.add(df)
  
      # Add the src_uploaders to the DB
+     session.flush()
+     session.refresh(source)
      source.uploaders = [source.maintainer]
      if u.pkg.dsc.has_key("uploaders"):
          for up in u.pkg.dsc["uploaders"].replace(">, ", ">\t").split("\t"):
@@@ -3338,12 -3347,7 +3347,12 @@@ class DBConn(object)
                                   poolfile_id = self.tbl_dsc_files.c.file,
                                   poolfile = relation(PoolFile)))
  
 -        mapper(ExternalOverride, self.tbl_external_overrides)
 +        mapper(ExternalOverride, self.tbl_external_overrides,
 +                properties = dict(
 +                    suite_id = self.tbl_external_overrides.c.suite,
 +                    suite = relation(Suite),
 +                    component_id = self.tbl_external_overrides.c.component,
 +                    component = relation(Component)))
  
          mapper(PoolFile, self.tbl_files,
                 properties = dict(file_id = self.tbl_files.c.id,