]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/contents.py
Add workaround for duplicate filenames in contents.
[dak.git] / daklib / contents.py
index 09308c9c914143e6fbd757e425d092bd45b714b9..65e7e3f1c31dedd1f0fc660550d0b0ed3f077268 100755 (executable)
@@ -31,6 +31,7 @@ from daklib.threadpool import ThreadPool
 from multiprocessing import Pool
 
 from sqlalchemy import desc, or_
+from sqlalchemy.exc import IntegrityError
 from subprocess import Popen, PIPE, call
 
 import os.path
@@ -57,10 +58,10 @@ class ContentsWriter(object):
         '''
         overridesuite = self.suite
         if self.suite.overridesuite is not None:
-            overridesuite = self.suite.overridesuite
+            overridesuite = get_suite(self.suite.overridesuite, self.session)
         params = {
             'suite':         self.suite.suite_id,
-            'overridesuite': overridesuite.suite_id
+            'overridesuite': overridesuite.suite_id,
             'arch_all':      get_architecture('all', self.session).arch_id,
             'arch':          self.architecture.arch_id,
             'type_id':       self.overridetype.overridetype_id,
@@ -253,7 +254,12 @@ class ContentsScanner(object):
         binary = session.query(DBBinary).get(self.binary_id)
         for filename in binary.scan_contents():
             binary.contents.append(BinContents(file = filename))
-        session.commit()
+        try:
+            session.commit()
+        except IntegrityError:
+            session.rollback()
+            binary.contents.append(BinContents(file = 'DUPLICATE_FILENAMES'))
+            session.commit()
         session.close()
 
     @classmethod