X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdbconn.py;h=84d5b1c2c059fd586793bdbe54d1b0f0468a95d6;hb=881011792a47f49d6fe2354a7efb86eee6bb572b;hp=5e9f547809b0aaccf3e0613904ff56b9a49af824;hpb=778a43949404746c81124850725b022947750d5c;p=dak.git diff --git a/daklib/dbconn.py b/daklib/dbconn.py index 5e9f5478..84d5b1c2 100644 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -503,7 +503,7 @@ class BuildQueue(object): (ac_fd, ac_name) = mkstemp() os.write(ac_fd, MINIMAL_APT_CONF % {'archivepath': self.path, 'filelist': fl_name}) - os.close() + os.close(ac_fd) # Run apt-ftparchive generate os.chdir(os.path.dirname(ac_name)) @@ -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="${archs}" 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,23 +565,23 @@ 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) - if self.generate_metadata: + if self.generate_metadata and not dryrun: self.write_metadata(starttime) # Grab files older than our execution time - older = session.query(BuildQueueFile).filter_by(build_queue_id = self.queue_id).filter(BuildQueueFile.lastused + timedelta(seconds=self.stay_of_execution) <= starttime).all() + older = session.query(BuildQueueFile).filter_by(build_queue_id = self.queue_id).filter(BuildQueueFile.lastused + timedelta(seconds=self.stay_of_execution) <= starttime).all() for o in older: killdb = False try: if dryrun: - print "I: Would have removed %s from the queue" + Logger.log(["I: Would have removed %s from the queue" % o.fullpath]) else: - print "I: Removing %s from the queue" + 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