X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Farchive.py;h=ca58da87a2858917fda4387173f54fde3796d396;hb=1274df1d98f7004042768c9e2650f5ae9dd79e41;hp=dd4a22ca3c376a6a890ad344e87823e13ea108ac;hpb=a4e40115e7b82033b5fcbf9482b95811bc823eec;p=dak.git diff --git a/daklib/archive.py b/daklib/archive.py index dd4a22ca..ca58da87 100644 --- a/daklib/archive.py +++ b/daklib/archive.py @@ -33,6 +33,7 @@ import os import shutil import subprocess from sqlalchemy.orm.exc import NoResultFound +import sqlalchemy.exc import tempfile import traceback @@ -85,7 +86,7 @@ class ArchiveTransaction(object): Will not give an error when the file is already present. @rtype: L{daklib.dbconn.PoolFile} - @return: batabase object for the new file + @return: database object for the new file """ session = self.session @@ -335,6 +336,8 @@ class ArchiveTransaction(object): db_source.suites.append(suite) if not created: + for f in db_source.srcfiles: + self._copy_file(f.poolfile, archive, component, allow_tainted=allow_tainted) return db_source ### Now add remaining files and copy them to the archive. @@ -752,7 +755,7 @@ class ArchiveUpload(object): if self.changes.source is not None: override = self._source_override(suite, self.changes.source) if override is None: - self.warnings.append('source:{0} is NEW.'.format(self.changes.source.control['Source'])) + self.warnings.append('source:{0} is NEW.'.format(self.changes.source.dsc['Source'])) new = True # Check if we reference a file only in a tainted archive @@ -803,8 +806,12 @@ class ArchiveUpload(object): if suite.overridesuite is not None: suite = self.session.query(Suite).filter_by(suite_name=suite.overridesuite).one() + mapped_component = get_mapped_component(binary.component) + if mapped_component is None: + return None + query = self.session.query(Override).filter_by(suite=suite, package=binary.control['Package']) \ - .join(Component).filter(Component.component_name == binary.component) \ + .join(Component).filter(Component.component_name == mapped_component.component_name) \ .join(OverrideType).filter(OverrideType.overridetype == binary.type) try: @@ -998,8 +1005,11 @@ class ArchiveUpload(object): db_changes.changelog_id = changelog_id db_changes.closes = self.changes.closed_bugs - self.transaction.session.add(db_changes) - self.transaction.session.flush() + try: + self.transaction.session.add(db_changes) + self.transaction.session.flush() + except sqlalchemy.exc.IntegrityError: + raise ArchiveException('{0} is already known.'.format(self.changes.filename)) return db_changes