X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=da7f5a2148acfd52c27a5fd79215833d5a6be541;hb=6929479f75234f9a4c88ce6f297d6a7b070753f6;hp=5f9fccb4073dfc8e5854c552ddd262ca7c791ec6;hpb=83ed0494aa655664d574a718e051f757f137130b;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index 5f9fccb4..da7f5a21 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -54,6 +54,7 @@ from summarystats import SummaryStats from utils import parse_changes, check_dsc_files from textutils import fix_maintainer from binary import Binary +from lintian import parse_lintian_output ############################################################################### @@ -1317,18 +1318,7 @@ class Upload(object): if self.logger: self.logger.log([self.pkg.changes_file, "check_lintian"] + list(txt)) - # We have output of lintian, this package isn't clean. Lets parse it and see if we - # are having a victim for a reject. - # W: tzdata: binary-without-manpage usr/sbin/tzconfig - for line in output.split('\n'): - m = re_parse_lintian.match(line) - if m is None: - continue - - etype = m.group(1) - epackage = m.group(2) - etag = m.group(3) - etext = m.group(4) + for etype, epackage, etag, etext in parse_lintian_output(output): # So lets check if we know the tag at all. if etag not in tags: @@ -1336,11 +1326,11 @@ class Upload(object): if etype == 'O': # We know it and it is overriden. Check that override is allowed. - if etag in lintiantags['warning']: + if etag in lintiantags['nonfatal']: # The tag is overriden, and it is allowed to be overriden. # Don't add a reject message. pass - elif etag in lintiantags['error']: + elif etag in lintiantags['fatal']: # The tag is overriden - but is not allowed to be self.rejects.append("%s: Overriden tag %s found, but this tag may not be overwritten." % (epackage, etag)) log("ftpmaster does not allow tag to be overridable", etag) @@ -1348,7 +1338,7 @@ class Upload(object): # Tag is known, it is not overriden, direct reject. self.rejects.append("%s: Found lintian output: '%s %s', automatically rejected package." % (epackage, etag, etext)) # Now tell if they *might* override it. - if etag in lintiantags['warning']: + if etag in lintiantags['nonfatal']: log("auto rejecting", "overridable", etag) self.rejects.append("%s: If you have a good reason, you may override this lintian tag." % (epackage)) else: @@ -1842,15 +1832,19 @@ distribution.""" print "Installing." self.logger.log(["installing changes", self.pkg.changes_file]) + poolfiles = [] + # Add the .dsc file to the DB first for newfile, entry in self.pkg.files.items(): if entry["type"] == "dsc": - dsc_component, dsc_location_id = add_dsc_to_db(self, newfile, session) + dsc_component, dsc_location_id, pfs = add_dsc_to_db(self, newfile, session) + for j in pfs: + poolfiles.append(j) # Add .deb / .udeb files to the DB (type is always deb, dbtype is udeb/deb) for newfile, entry in self.pkg.files.items(): if entry["type"] == "deb": - add_deb_to_db(self, newfile, session) + poolfiles.append(add_deb_to_db(self, newfile, session)) # If this is a sourceful diff only upload that is moving # cross-component we need to copy the .orig files into the new @@ -1885,6 +1879,8 @@ distribution.""" session.add(dscf) session.flush() + poolfiles.append(newf) + # Install the files into the pool for newfile, entry in self.pkg.files.items(): destination = os.path.join(cnf["Dir::Pool"], entry["pool name"], newfile) @@ -1958,12 +1954,14 @@ distribution.""" os.rename(temp_filename, filename) os.chmod(filename, 0644) - # This routine returns None on success or an error on failure - # TODO: Replace queue copying using the new queue.add_file_from_pool routine - # and by looking up which queues in suite.copy_queues - #res = get_queue('accepted').autobuild_upload(self.pkg, cnf["Dir::Queue::Accepted"]) - #if res: - # utils.fubar(res) + session.commit() + + # Set up our copy queues (e.g. buildd queues) + for suite_name in self.pkg.changes["distribution"].keys(): + suite = get_suite(suite_name, session) + for q in suite.copy_queues: + for f in poolfiles: + q.add_file_from_pool(f) session.commit() @@ -2025,15 +2023,15 @@ distribution.""" ########################################################################### - def move_to_dir (self, dest, perms=0660, changesperms=0664): + def move_to_queue (self, queue): """ - Move files to dest with certain perms/changesperms + Move files to a destination queue using the permissions in the table """ h = Holding() utils.move(os.path.join(h.holding_dir, self.pkg.changes_file), - dest, perms=changesperms) + queue.path, perms=int(queue.change_perms, 8)) for f in self.pkg.files.keys(): - utils.move(os.path.join(h.holding_dir, f), dest, perms=perms) + utils.move(os.path.join(h.holding_dir, f), queue.path, perms=int(queue.perms, 8)) ###########################################################################