X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdbconn.py;h=fa9431b23b2d1c696752b5faa443553b5cc695bd;hb=9b06f7936bbcc196752d3e217a2a5eef5cbe4ea8;hp=2f8dc23b79f92f261991141596f6eb572765af0d;hpb=df06208e84b3fa32fe7306fe4d569bb611a21015;p=dak.git diff --git a/daklib/dbconn.py b/daklib/dbconn.py index 2f8dc23b..fa9431b2 100644 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -377,16 +377,16 @@ def get_binary_from_name_suite(package, suitename, session=None): sql = """SELECT DISTINCT(b.package), b.version, c.name, su.suite_name FROM binaries b, files fi, location l, component c, bin_associations ba, suite su - WHERE b.package=:package + WHERE b.package='%(package)s' AND b.file = fi.id AND fi.location = l.id AND l.component = c.id AND ba.bin=b.id AND ba.suite = su.id - AND su.suite_name=:suitename + AND su.suite_name=%(suitename)s ORDER BY b.version DESC""" - return session.execute(sql, {'package': package, 'suitename': suitename}) + return session.execute(sql % {'package': package, 'suitename': suitename}) __all__.append('get_binary_from_name_suite') @@ -514,7 +514,15 @@ class BuildQueue(object): bname = os.path.basename(self.path) os.chdir(self.path) os.chdir('..') - os.system("""apt-ftparchive -qq -o APT::FTPArchive::Release::Origin="%s" -o APT::FTPArchive::Release::Label="%s" -o -o APT::FTPArchive::Release::Description="%s" -o APT::FTPArchive::Release::Architectures="%s" release %s > Release""" % [self.origin, self.label, self.releasedescription, arches, bname]) + + # We have to remove the Release file otherwise it'll be included in the + # new one + try: + os.unlink(os.path.join(bname, 'Release')) + except OSError: + pass + + os.system("""apt-ftparchive -qq -o APT::FTPArchive::Release::Origin="%s" -o APT::FTPArchive::Release::Label="%s" -o APT::FTPArchive::Release::Description="%s" -o APT::FTPArchive::Release::Architectures="%s" release %s > Release""" % (self.origin, self.label, self.releasedescription, arches, bname)) # Sign if necessary if self.signingkey: @@ -557,7 +565,7 @@ class BuildQueue(object): except OSError: pass - def clean_and_update(self, starttime, dryrun=False): + def clean_and_update(self, starttime, Logger, dryrun=False): """WARNING: This routine commits for you""" session = DBConn().session().object_session(self) @@ -571,9 +579,9 @@ class BuildQueue(object): killdb = False try: if dryrun: - print "I: Would have removed %s from the queue" % o.fullpath + Logger.log(["I: Would have removed %s from the queue" % o.fullpath]) else: - print "I: Removing %s from the queue" % o.fullpath + Logger.log(["I: Removing %s from the queue" % o.fullpath]) os.unlink(o.fullpath) killdb = True except OSError, e: @@ -582,7 +590,7 @@ class BuildQueue(object): killdb = True else: # TODO: Replace with proper logging call - print "E: Could not remove %s" % o.fullpath + Logger.log(["E: Could not remove %s" % o.fullpath]) if killdb: session.delete(o) @@ -598,13 +606,13 @@ class BuildQueue(object): except NoResultFound: fp = os.path.join(self.path, f) if dryrun: - print "I: Would remove unused link %s" % fp + Logger.log(["I: Would remove unused link %s" % fp]) else: - print "I: Removing unused link %s" % fp + Logger.log(["I: Removing unused link %s" % fp]) try: os.unlink(fp) except OSError: - print "E: Failed to unlink unreferenced file %s" % r.fullpath + Logger.log(["E: Failed to unlink unreferenced file %s" % r.fullpath]) def add_file_from_pool(self, poolfile): """Copies a file into the pool. Assumes that the PoolFile object is @@ -1144,7 +1152,7 @@ def get_poolfile_like_name(filename, session=None): """ # TODO: There must be a way of properly using bind parameters with %FOO% - q = session.query(PoolFile).filter(PoolFile.filename.like('%%%s%%' % filename)) + q = session.query(PoolFile).filter(PoolFile.filename.like('%%/%s' % filename)) return q.all() @@ -1429,6 +1437,19 @@ class DBChange(object): def __repr__(self): return '' % self.changesname + def clean_from_queue(self): + session = DBConn().session().object_session(self) + + # Remove changes_pool_files entries + self.poolfiles = [] + + # Remove changes_pending_files references + self.files = [] + + # Clear out of queue + self.in_queue = None + self.approved_for_id = None + __all__.append('DBChange') @session_wrapper @@ -2270,7 +2291,7 @@ def add_dsc_to_db(u, filename, session=None): session.flush() - return dsc_component, dsc_location_id, pfs + return source, dsc_component, dsc_location_id, pfs __all__.append('add_dsc_to_db') @@ -2835,6 +2856,16 @@ class DBConn(object): poolfiles = relation(PoolFile, secondary=self.tbl_changes_pool_files, backref="changeslinks"), + seen = self.tbl_changes.c.seen, + source = self.tbl_changes.c.source, + binaries = self.tbl_changes.c.binaries, + architecture = self.tbl_changes.c.architecture, + distribution = self.tbl_changes.c.distribution, + urgency = self.tbl_changes.c.urgency, + maintainer = self.tbl_changes.c.maintainer, + changedby = self.tbl_changes.c.changedby, + date = self.tbl_changes.c.date, + version = self.tbl_changes.c.version, files = relation(ChangePendingFile, secondary=self.tbl_changes_pending_files_map, backref="changesfile"), @@ -2847,7 +2878,12 @@ class DBConn(object): properties = dict(change_pending_binary_id = self.tbl_changes_pending_binaries.c.id)) mapper(ChangePendingFile, self.tbl_changes_pending_files, - properties = dict(change_pending_file_id = self.tbl_changes_pending_files.c.id)) + properties = dict(change_pending_file_id = self.tbl_changes_pending_files.c.id, + filename = self.tbl_changes_pending_files.c.filename, + size = self.tbl_changes_pending_files.c.size, + md5sum = self.tbl_changes_pending_files.c.md5sum, + sha1sum = self.tbl_changes_pending_files.c.sha1sum, + sha256sum = self.tbl_changes_pending_files.c.sha256sum)) mapper(ChangePendingSource, self.tbl_changes_pending_source, properties = dict(change_pending_source_id = self.tbl_changes_pending_source.c.id,