X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dak%2Fdakdb%2Fupdate18.py;h=bdf241084262522f86a95029b810ae17126c87ee;hb=36d3848729493bb72e4d672154a0c63e0256caf5;hp=50767d888d02ceb64501360321b91af50cf2e8d5;hpb=5045c92e8456268ba60686aaa5d106fae61c3027;p=dak.git diff --git a/dak/dakdb/update18.py b/dak/dakdb/update18.py old mode 100755 new mode 100644 index 50767d88..bdf24108 --- a/dak/dakdb/update18.py +++ b/dak/dakdb/update18.py @@ -34,6 +34,7 @@ import os import datetime from daklib.dak_exceptions import DBUpdateError, InvalidDscError, ChangesUnicodeError from daklib.config import Config +from daklib.changes import Changes from daklib.utils import parse_changes, warn, gpgv_get_status_output, process_gpgv_output ################################################################################ @@ -41,7 +42,6 @@ from daklib.utils import parse_changes, warn, gpgv_get_status_output, process_gp def check_signature (sig_filename, data_filename=""): keyrings = [ "/home/joerg/keyring/keyrings/debian-keyring.gpg", - "/home/joerg/keyring/keyrings/debian-keyring.pgp", "/home/joerg/keyring/keyrings/debian-maintainers.gpg", "/home/joerg/keyring/keyrings/debian-role-keys.gpg", "/home/joerg/keyring/keyrings/emeritus-keyring.pgp", @@ -117,6 +117,12 @@ def do_update(self): c.execute("CREATE INDEX changesdistribution_ind ON known_changes(distribution)") c.execute("CREATE INDEX changesurgency_ind ON known_changes(urgency)") + c.execute("GRANT ALL ON known_changes TO ftpmaster;") + c.execute("GRANT SELECT ON known_changes TO public;") + + c.execute("UPDATE config SET value = '18' WHERE name = 'db_revision'") + self.db.commit() + print "Done. Now looking for old changes files" count = 0 failure = 0 @@ -125,37 +131,26 @@ def do_update(self): checkdir = cnf["Dir::Queue::%s" % (directory) ] if os.path.exists(checkdir): print "Looking into %s" % (checkdir) - for dirpath, dirnames, filenames in os.walk(checkdir, topdown=False): - if not filenames: - # Empty directory (or only subdirectories), next + for filename in os.listdir(checkdir): + if not filename.endswith(".changes"): + # Only interested in changes files. continue - for changesfile in filenames: - if not changesfile.endswith(".changes"): - # Only interested in changes files. - continue - try: - count += 1 - print "Directory %s, file %7d, failures %3d. (%s)" % (dirpath[-10:], count, failure, changesfile) - changes = Changes() - changes.changes_file = changesfile - changesfile = os.path.join(dirpath, changesfile) - changes.changes = parse_changes(changesfile, signing_rules=-1) - changes.changes["fingerprint"], = check_signature(changesfile) - changes.add_known_changes(directory) - except InvalidDscError, line: - warn("syntax error in .dsc file '%s', line %s." % (f, line)) - failure += 1 - except ChangesUnicodeError: - warn("found invalid changes file, not properly utf-8 encoded") - failure += 1 - - - c.execute("GRANT ALL ON known_changes TO ftpmaster;") - c.execute("GRANT SELECT ON known_changes TO public;") - - c.execute("UPDATE config SET value = '18' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError, msg: + try: + count += 1 + print "Directory %s, file %7d, failures %3d. (%s)" % (directory, count, failure, filename) + changes = Changes() + changes.changes_file = filename + changesfile = os.path.join(checkdir, filename) + changes.changes = parse_changes(changesfile, signing_rules=-1) + changes.changes["fingerprint"] = check_signature(changesfile) + changes.add_known_changes(directory) + except InvalidDscError as line: + warn("syntax error in .dsc file '%s', line %s." % (f, line)) + failure += 1 + except ChangesUnicodeError: + warn("found invalid changes file, not properly utf-8 encoded") + failure += 1 + + except psycopg2.ProgrammingError as msg: self.db.rollback() - raise DBUpdateError, "Unable to apply known_changes update 18, rollback issued. Error message + raise DBUpdateError("Unable to apply knownchanges update 18, rollback issued. Error message : %s" % (str(msg)))