From: Ansgar Burchardt Date: Mon, 8 Jun 2015 22:31:07 +0000 (+0200) Subject: Remove old database schema update scripts X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=e6c38ef348d128d72673c3fc5ff9ac9be63493d1;p=dak.git Remove old database schema update scripts Some very old schema update scripts make use of obsolete code and would need to be updated to keep working. Just remove them instead. --- diff --git a/dak/dakdb/update1.py b/dak/dakdb/update1.py deleted file mode 100644 index 21942765..00000000 --- a/dak/dakdb/update1.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python - -""" -Saner DM db schema - -@contact: Debian FTP Master -@copyright: 2008 Michael Casadevall -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -# really, if we want to screw ourselves, let's find a better way. -# rm -rf /srv/ftp.debian.org - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding DM fields to database" - - try: - c = self.db.cursor() - c.execute("ALTER TABLE source ADD COLUMN dm_upload_allowed BOOLEAN DEFAULT 'no' NOT NULL;") - c.execute("ALTER TABLE keyrings ADD COLUMN debian_maintainer BOOLEAN DEFAULT 'false' NOT NULL;") - - print "Migrating DM data to source table. This might take some time ..." - - c.execute("UPDATE source SET dm_upload_allowed = 't' WHERE id IN (SELECT source FROM src_uploaders);") - c.execute("UPDATE config SET value = '1' WHERE name = 'db_revision'") - - print "Migrating DM uids to normal uids" - c.execute("SELECT uid FROM uid WHERE uid LIKE 'dm:%'") - rows = c.fetchall() - for r in rows: - uid = r[0] - c.execute("UPDATE uid SET uid = '%s' WHERE uid = '%s'" % (uid[3:], uid)) - - self.db.commit() - - print "IMPORTANT: Set the debian_maintainer flag in the config file for keyrings that are DMs!" - print " Failure to do so will result in DM's having full upload abilities!" - print "REMINDER: Remember to run the updated byhand-dm crontab to update Debian Maintainer information" - print "" - print "Pausing for five seconds ..." - time.sleep (5) - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to appy DM table updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update10.py b/dak/dakdb/update10.py deleted file mode 100644 index 31c70d37..00000000 --- a/dak/dakdb/update10.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add constraints to src_uploaders - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -# oh no, Ganneff has just corrected my english - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError -from daklib.utils import get_conf - -################################################################################ - -def do_update(self): - print "Add constraints to src_uploaders" - Cnf = get_conf() - - try: - c = self.db.cursor() - # Deal with out-of-date src_uploaders entries - c.execute("DELETE FROM src_uploaders WHERE source NOT IN (SELECT id FROM source)") - c.execute("DELETE FROM src_uploaders WHERE maintainer NOT IN (SELECT id FROM maintainer)") - # Add constraints - c.execute("ALTER TABLE src_uploaders ADD CONSTRAINT src_uploaders_maintainer FOREIGN KEY (maintainer) REFERENCES maintainer(id) ON DELETE CASCADE") - c.execute("ALTER TABLE src_uploaders ADD CONSTRAINT src_uploaders_source FOREIGN KEY (source) REFERENCES source(id) ON DELETE CASCADE") - c.execute("UPDATE config SET value = '10' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply suite config updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update11.py b/dak/dakdb/update11.py deleted file mode 100644 index 17001d39..00000000 --- a/dak/dakdb/update11.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding process-new comments to the DB - -@contact: Debian FTP Master -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding process-new comments to the DB" - - try: - c = self.db.cursor() - c.execute("""CREATE TABLE new_comments ( - id SERIAL PRIMARY KEY NOT NULL, - package TEXT NOT NULL, - version TEXT NOT NULL, - comment TEXT NOT NULL, - author TEXT NOT NULL - )""") - - c.execute("GRANT SELECT ON new_comments TO ftptrainee;") - c.execute("GRANT INSERT ON new_comments TO ftptrainee;") - c.execute("GRANT UPDATE ON new_comments TO ftptrainee;") - c.execute("GRANT SELECT ON new_comments TO ftpteam;") - c.execute("GRANT INSERT ON new_comments TO ftpteam;") - c.execute("GRANT UPDATE ON new_comments TO ftpteam;") - c.execute("GRANT ALL ON new_comments TO ftpmaster;") - - c.execute("UPDATE config SET value = '11' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply process-new comments update, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update12.py b/dak/dakdb/update12.py deleted file mode 100644 index 21d44a45..00000000 --- a/dak/dakdb/update12.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding a date field to the process-new notes - -@contact: Debian FTP Master -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding a date field to the process-new notes" - - try: - c = self.db.cursor() - c.execute("ALTER TABLE new_comments ADD COLUMN notedate TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()") - - c.execute("UPDATE config SET value = '12' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply process-new update 12, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update13.py b/dak/dakdb/update13.py deleted file mode 100644 index 1696e759..00000000 --- a/dak/dakdb/update13.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding a trainee field to the process-new notes - -@contact: Debian FTP Master -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding a trainee field to the process-new notes" - - try: - c = self.db.cursor() - c.execute("ALTER TABLE new_comments ADD COLUMN trainee BOOLEAN NOT NULL DEFAULT false") - - c.execute("UPDATE config SET value = '13' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply process-new update 13, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update14.py b/dak/dakdb/update14.py deleted file mode 100644 index 575e5d23..00000000 --- a/dak/dakdb/update14.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Make sure we always have primary keys - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding primary keys to various tables" - - try: - c = self.db.cursor() - c.execute("ALTER TABLE content_associations ADD PRIMARY KEY (id)") - c.execute("ALTER TABLE override ADD PRIMARY KEY (suite, component, package, type)") - c.execute("ALTER TABLE pending_content_associations ADD PRIMARY KEY (id)") - c.execute("ALTER TABLE queue_build ADD PRIMARY KEY (suite, queue, filename)") - c.execute("ALTER TABLE suite_architectures ADD PRIMARY KEY (suite, architecture)") - - c.execute("UPDATE config SET value = '14' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply process-new update 14, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update15.py b/dak/dakdb/update15.py deleted file mode 100644 index 7d6b52e7..00000000 --- a/dak/dakdb/update15.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding table for allowed source formats - -@contact: Debian FTP Master -@copyright: 2009 Raphael Hertzog -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding tables listing allowed source formats" - - try: - c = self.db.cursor() - c.execute(""" - CREATE TABLE src_format ( - id SERIAL PRIMARY KEY, - format_name TEXT NOT NULL, - UNIQUE (format_name) - ) - """) - c.execute("INSERT INTO src_format (format_name) VALUES('1.0')") - c.execute("INSERT INTO src_format (format_name) VALUES('3.0 (quilt)')") - c.execute("INSERT INTO src_format (format_name) VALUES('3.0 (native)')") - - c.execute(""" - CREATE TABLE suite_src_formats ( - suite INT4 NOT NULL REFERENCES suite(id), - src_format INT4 NOT NULL REFERENCES src_format(id), - PRIMARY KEY (suite, src_format) - ) - """) - - print "Authorize format 1.0 on all suites by default" - c.execute("SELECT id FROM suite") - suites = c.fetchall() - c.execute("SELECT id FROM src_format WHERE format_name = '1.0'") - formats = c.fetchall() - for s in suites: - for f in formats: - c.execute("INSERT INTO suite_src_formats (suite, src_format) VALUES(%s, %s)", (s[0], f[0])) - - print "Authorize all other formats on tpu, unstable & experimental by default" - c.execute("SELECT id FROM suite WHERE suite_name IN ('testing-proposed-updates', 'unstable', 'experimental')") - suites = c.fetchall() - c.execute("SELECT id FROM src_format WHERE format_name != '1.0'") - formats = c.fetchall() - for s in suites: - for f in formats: - c.execute("INSERT INTO suite_src_formats (suite, src_format) VALUES(%s, %s)", (s[0], f[0])) - - c.execute("UPDATE config SET value = '15' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply source format update 15, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update16.py b/dak/dakdb/update16.py deleted file mode 100644 index 6cd6dc4b..00000000 --- a/dak/dakdb/update16.py +++ /dev/null @@ -1,178 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding tables for key-based ACLs and blocks - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding tables for handling key-based ACLs and upload blocks" - - try: - c = self.db.cursor() - - # Fix up some older table permissions - c.execute("GRANT SELECT ON src_format TO public") - c.execute("GRANT ALL ON src_format TO ftpmaster") - c.execute("GRANT USAGE ON src_format_id_seq TO ftpmaster") - - c.execute("GRANT SELECT ON suite_src_formats TO public") - c.execute("GRANT ALL ON suite_src_formats TO ftpmaster") - - # Source ACLs table - print "Source ACLs table" - c.execute(""" - CREATE TABLE source_acl ( - id SERIAL PRIMARY KEY, - access_level TEXT UNIQUE NOT NULL - ) - """) - - ## Can upload all packages - c.execute("INSERT INTO source_acl (access_level) VALUES ('full')") - ## Can upload only packages marked as DM upload allowed - c.execute("INSERT INTO source_acl (access_level) VALUES ('dm')") - - c.execute("GRANT SELECT ON source_acl TO public") - c.execute("GRANT ALL ON source_acl TO ftpmaster") - c.execute("GRANT USAGE ON source_acl_id_seq TO ftpmaster") - - # Binary ACLs table - print "Binary ACLs table" - c.execute(""" - CREATE TABLE binary_acl ( - id SERIAL PRIMARY KEY, - access_level TEXT UNIQUE NOT NULL - ) - """) - - ## Can upload any architectures of binary packages - c.execute("INSERT INTO binary_acl (access_level) VALUES ('full')") - ## Can upload debs where architectures are based on the map table binary_acl_map - c.execute("INSERT INTO binary_acl (access_level) VALUES ('map')") - - c.execute("GRANT SELECT ON binary_acl TO public") - c.execute("GRANT ALL ON binary_acl TO ftpmaster") - c.execute("GRANT USAGE ON binary_acl_id_seq TO ftpmaster") - - # This is only used if binary_acl is 2 for the fingerprint concerned - c.execute(""" - CREATE TABLE binary_acl_map ( - id SERIAL PRIMARY KEY, - fingerprint_id INT4 REFERENCES fingerprint (id) NOT NULL, - architecture_id INT4 REFERENCES architecture (id) NOT NULL, - - UNIQUE (fingerprint_id, architecture_id) - )""") - - c.execute("GRANT SELECT ON binary_acl_map TO public") - c.execute("GRANT ALL ON binary_acl_map TO ftpmaster") - c.execute("GRANT USAGE ON binary_acl_map_id_seq TO ftpmaster") - - ## NULL means no source upload access (i.e. any upload containing source - ## will be rejected) - c.execute("ALTER TABLE fingerprint ADD COLUMN source_acl_id INT4 REFERENCES source_acl(id) DEFAULT NULL") - - ## NULL means no binary upload access - c.execute("ALTER TABLE fingerprint ADD COLUMN binary_acl_id INT4 REFERENCES binary_acl(id) DEFAULT NULL") - - ## TRUE here means that if the person doesn't have binary upload permissions for - ## an architecture, we'll reject the .changes. FALSE means that we'll simply - ## dispose of those particular binaries - c.execute("ALTER TABLE fingerprint ADD COLUMN binary_reject BOOLEAN NOT NULL DEFAULT TRUE") - - # Blockage table (replaces the hard coded stuff we used to have in extensions) - print "Adding blockage table" - c.execute(""" - CREATE TABLE upload_blocks ( - id SERIAL PRIMARY KEY, - source TEXT NOT NULL, - version TEXT DEFAULT NULL, - fingerprint_id INT4 REFERENCES fingerprint (id), - uid_id INT4 REFERENCES uid (id), - reason TEXT NOT NULL, - - CHECK (fingerprint_id IS NOT NULL OR uid_id IS NOT NULL) - )""") - - c.execute("GRANT SELECT ON upload_blocks TO public") - c.execute("GRANT ALL ON upload_blocks TO ftpmaster") - c.execute("GRANT USAGE ON upload_blocks_id_seq TO ftpmaster") - - c.execute("ALTER TABLE keyrings ADD COLUMN default_source_acl_id INT4 REFERENCES source_acl (id) DEFAULT NULL") - c.execute("ALTER TABLE keyrings ADD COLUMN default_binary_acl_id INT4 REFERENCES binary_acl (id) DEFAULT NULL") - c.execute("ALTER TABLE keyrings ADD COLUMN default_binary_reject BOOLEAN NOT NULL DEFAULT TRUE") - # Set up keyring priorities - c.execute("ALTER TABLE keyrings ADD COLUMN priority INT4 NOT NULL DEFAULT 100") - # And then we don't need the DM stuff any more - c.execute("ALTER TABLE keyrings DROP COLUMN debian_maintainer") - - # Default ACLs for keyrings - c.execute(""" - CREATE TABLE keyring_acl_map ( - id SERIAL PRIMARY KEY, - keyring_id INT4 REFERENCES keyrings (id) NOT NULL, - architecture_id INT4 REFERENCES architecture (id) NOT NULL, - - UNIQUE (keyring_id, architecture_id) - )""") - - c.execute("GRANT SELECT ON keyring_acl_map TO public") - c.execute("GRANT ALL ON keyring_acl_map TO ftpmaster") - c.execute("GRANT USAGE ON keyring_acl_map_id_seq TO ftpmaster") - - # Set up some default stuff; default to old behaviour - print "Setting up some defaults" - - c.execute("""UPDATE keyrings SET default_source_acl_id = (SELECT id FROM source_acl WHERE access_level = 'full'), - default_binary_acl_id = (SELECT id FROM binary_acl WHERE access_level = 'full')""") - - c.execute("""UPDATE keyrings SET default_source_acl_id = (SELECT id FROM source_acl WHERE access_level = 'dm'), - default_binary_acl_id = (SELECT id FROM binary_acl WHERE access_level = 'full') - WHERE name = 'debian-maintainers.gpg'""") - - c.execute("""UPDATE keyrings SET priority = 90 WHERE name = 'debian-maintainers.gpg'""") - - # Initialize the existing keys - c.execute("""UPDATE fingerprint SET binary_acl_id = (SELECT default_binary_acl_id FROM keyrings - WHERE keyrings.id = fingerprint.keyring)""") - - c.execute("""UPDATE fingerprint SET source_acl_id = (SELECT default_source_acl_id FROM keyrings - WHERE keyrings.id = fingerprint.keyring)""") - - print "Updating config version" - c.execute("UPDATE config SET value = '16' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply ACLs update (16), rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update17.py b/dak/dakdb/update17.py deleted file mode 100644 index 493640eb..00000000 --- a/dak/dakdb/update17.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -adding a bin_contents table to hold lists of files contained in .debs and .udebs - -@contact: Debian FTP Master -@copyright: 2009 Mike O'Connor -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - - print "adding a bin_contents table to hold lists of files contained in .debs and .udebs" - - try: - c = self.db.cursor() - c.execute("""CREATE TABLE bin_contents ( - file text, - binary_id integer, - UNIQUE(file,binary_id))""" ) - - c.execute("""ALTER TABLE ONLY bin_contents - ADD CONSTRAINT bin_contents_bin_fkey - FOREIGN KEY (binary_id) REFERENCES binaries(id) - ON DELETE CASCADE;""") - - c.execute("""CREATE INDEX ind_bin_contents_binary ON bin_contents(binary_id);""" ) - - c.execute("GRANT ALL ON bin_contents TO ftpmaster;") - c.execute("GRANT SELECT ON bin_contents TO public;") - c.execute("UPDATE config SET value = '17' WHERE name = 'db_revision'") - - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply process-new update 17, rollback issued. Error message : %s" % (str(msg))) - - - diff --git a/dak/dakdb/update18.py b/dak/dakdb/update18.py deleted file mode 100644 index bdf24108..00000000 --- a/dak/dakdb/update18.py +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding table to get rid of queue/done checks - -@contact: Debian FTP Master -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -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 - -################################################################################ - -def check_signature (sig_filename, data_filename=""): - keyrings = [ - "/home/joerg/keyring/keyrings/debian-keyring.gpg", - "/home/joerg/keyring/keyrings/debian-maintainers.gpg", - "/home/joerg/keyring/keyrings/debian-role-keys.gpg", - "/home/joerg/keyring/keyrings/emeritus-keyring.pgp", - "/home/joerg/keyring/keyrings/emeritus-keyring.gpg", - "/home/joerg/keyring/keyrings/removed-keys.gpg", - "/home/joerg/keyring/keyrings/removed-keys.pgp" - ] - - keyringargs = " ".join(["--keyring %s" % x for x in keyrings ]) - - # Build the command line - status_read, status_write = os.pipe() - cmd = "gpgv --status-fd %s %s %s" % (status_write, keyringargs, sig_filename) - - # Invoke gpgv on the file - (output, status, exit_status) = gpgv_get_status_output(cmd, status_read, status_write) - - # Process the status-fd output - (keywords, internal_error) = process_gpgv_output(status) - - # If we failed to parse the status-fd output, let's just whine and bail now - if internal_error: - warn("Couldn't parse signature") - return None - - # usually one would check for bad things here. We, however, do not care. - - # Next check gpgv exited with a zero return code - if exit_status: - warn("Couldn't parse signature") - return None - - # Sanity check the good stuff we expect - if not keywords.has_key("VALIDSIG"): - warn("Couldn't parse signature") - else: - args = keywords["VALIDSIG"] - if len(args) < 1: - warn("Couldn't parse signature") - else: - fingerprint = args[0] - - return fingerprint - -################################################################################ - -def do_update(self): - print "Adding known_changes table" - - try: - c = self.db.cursor() - c.execute(""" - CREATE TABLE known_changes ( - id SERIAL PRIMARY KEY, - changesname TEXT NOT NULL, - seen TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), - source TEXT NOT NULL, - binaries TEXT NOT NULL, - architecture TEXT NOT NULL, - version TEXT NOT NULL, - distribution TEXT NOT NULL, - urgency TEXT NOT NULL, - maintainer TEXT NOT NULL, - fingerprint TEXT NOT NULL, - changedby TEXT NOT NULL, - date TEXT NOT NULL, - UNIQUE (changesname) - ) - """) - c.execute("CREATE INDEX changesname_ind ON known_changes(changesname)") - c.execute("CREATE INDEX changestimestamp_ind ON known_changes(seen)") - c.execute("CREATE INDEX changessource_ind ON known_changes(source)") - 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 - cnf = Config() - for directory in [ "Accepted", "Byhand", "Done", "New", "ProposedUpdates", "OldProposedUpdates" ]: - checkdir = cnf["Dir::Queue::%s" % (directory) ] - if os.path.exists(checkdir): - print "Looking into %s" % (checkdir) - for filename in os.listdir(checkdir): - if not filename.endswith(".changes"): - # Only interested in changes files. - continue - 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 knownchanges update 18, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update19.py b/dak/dakdb/update19.py deleted file mode 100644 index 61e60703..00000000 --- a/dak/dakdb/update19.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Move to using the C version of debversion - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -import os -import datetime -import traceback - -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ - -def do_update(self): - print "Converting database to use new C based debversion type" - - try: - c = self.db.cursor() - - print "Temporarily converting columns to TEXT" - c.execute("ALTER TABLE binaries ALTER COLUMN version TYPE TEXT") - c.execute("ALTER TABLE source ALTER COLUMN version TYPE TEXT") - c.execute("ALTER TABLE upload_blocks ALTER COLUMN version TYPE TEXT") - c.execute("ALTER TABLE pending_content_associations ALTER COLUMN version TYPE TEXT") - - print "Dropping old debversion type" - c.execute("DROP OPERATOR >(debversion, debversion)") - c.execute("DROP OPERATOR <(debversion, debversion)") - c.execute("DROP OPERATOR <=(debversion, debversion)") - c.execute("DROP OPERATOR >=(debversion, debversion)") - c.execute("DROP OPERATOR =(debversion, debversion)") - c.execute("DROP OPERATOR <>(debversion, debversion)") - c.execute("DROP FUNCTION debversion_eq(debversion,debversion)") - c.execute("DROP FUNCTION debversion_ge(debversion,debversion)") - c.execute("DROP FUNCTION debversion_gt(debversion,debversion)") - c.execute("DROP FUNCTION debversion_le(debversion,debversion)") - c.execute("DROP FUNCTION debversion_lt(debversion,debversion)") - c.execute("DROP FUNCTION debversion_ne(debversion,debversion)") - c.execute("DROP FUNCTION debversion_compare(debversion,debversion)") - c.execute("DROP FUNCTION debversion_revision(debversion)") - c.execute("DROP FUNCTION debversion_version(debversion)") - c.execute("DROP FUNCTION debversion_epoch(debversion)") - c.execute("DROP FUNCTION debversion_split(debversion)") - c.execute("DROP TYPE debversion") - - # URGH - kill me now - print "Importing new debversion type" - f = open('/usr/share/postgresql/8.4/contrib/debversion.sql', 'r') - cmds = [] - curcmd = '' - for j in f.readlines(): - j = j.replace('\t', '').replace('\n', '').split('--')[0] - if not j.startswith('--'): - jj = j.split(';') - curcmd += " " + jj[0] - if len(jj) > 1: - for jjj in jj[1:]: - if jjj.strip() == '': - cmds.append(curcmd) - curcmd = '' - else: - curcmd += " " + jjj - - for cm in cmds: - c.execute(cm) - - print "Converting columns to new debversion type" - c.execute("ALTER TABLE binaries ALTER COLUMN version TYPE debversion") - c.execute("ALTER TABLE source ALTER COLUMN version TYPE debversion") - c.execute("ALTER TABLE upload_blocks ALTER COLUMN version TYPE debversion") - c.execute("ALTER TABLE pending_content_associations ALTER COLUMN version TYPE debversion") - - print "Committing" - c.execute("UPDATE config SET value = '19' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply debversion update 19, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update2.py b/dak/dakdb/update2.py deleted file mode 100644 index 0d9d3871..00000000 --- a/dak/dakdb/update2.py +++ /dev/null @@ -1,401 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -debversion - -@contact: Debian FTP Master -@copyright: 2008 Michael Casadevall -@copyright: 2008 Roger Leigh -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Note: to be able to enable the the PL/Perl (plperl) procedural language, we do" - print "need postgresql-plperl-$postgres-version installed. Make sure that this is the" - print "case before you continue. Interrupt if it isn't, sleeping 5 seconds now." - print "(We need to be database superuser for this to work!)" - time.sleep (5) - - try: - c = self.db.cursor() - - print "Enabling PL/Perl language" - c.execute("CREATE LANGUAGE plperl;") - c.execute("CREATE LANGUAGE plpgsql;") - - print "Adding debversion type to database." - -# Not present in all databases, maybe PL/Perl version-dependent? -# c.execute("SET SESSION plperl.use_strict TO 't';") - - c.execute("CREATE DOMAIN debversion AS TEXT;") - c.execute("COMMENT ON DOMAIN debversion IS 'Debian package version number';") - - c.execute("""ALTER DOMAIN debversion - ADD CONSTRAINT debversion_syntax - CHECK (VALUE !~ '[^-+:.0-9a-zA-Z~]');""") - - # From Dpkg::Version::parseversion - c.execute("""CREATE OR REPLACE FUNCTION debversion_split (debversion) - RETURNS text[] AS $$ - my $ver = shift; - my %verhash; - if ($ver =~ /:/) - { - $ver =~ /^(\d+):(.+)/ or die "bad version number '$ver'"; - $verhash{epoch} = $1; - $ver = $2; - } - else - { - $verhash{epoch} = 0; - } - if ($ver =~ /(.+)-(.*)$/) - { - $verhash{version} = $1; - $verhash{revision} = $2; - } - else - { - $verhash{version} = $ver; - $verhash{revision} = 0; - } - - return [$verhash{'epoch'}, $verhash{'version'}, $verhash{'revision'}]; -$$ - LANGUAGE plperl - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_split (debversion) - IS 'Split debian version into epoch, upstream version and revision';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_epoch (version debversion) - RETURNS text AS $$ -DECLARE - split text[]; -BEGIN - split := debversion_split(version); - RETURN split[1]; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT; -COMMENT ON FUNCTION debversion_epoch (debversion) - IS 'Get debian version epoch'; - -CREATE OR REPLACE FUNCTION debversion_version (version debversion) - RETURNS text AS $$ -DECLARE - split text[]; -BEGIN - split := debversion_split(version); - RETURN split[2]; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_version (debversion) - IS 'Get debian version upstream version';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_revision (version debversion) - RETURNS text AS $$ -DECLARE - split text[]; -BEGIN - split := debversion_split(version); - RETURN split[3]; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_revision (debversion) - IS 'Get debian version revision';""") - -# From Dpkg::Version::parseversion - c.execute("""CREATE OR REPLACE FUNCTION debversion_compare_single (version1 text, version2 text) - RETURNS integer AS $$ - sub order{ - my ($x) = @_; - ##define order(x) ((x) == '~' ? -1 \ - # : cisdigit((x)) ? 0 \ - # : !(x) ? 0 \ - # : cisalpha((x)) ? (x) \ - # : (x) + 256) - # This comparison is out of dpkg's order to avoid - # comparing things to undef and triggering warnings. - if (not defined $x or not length $x) { - return 0; - } - elsif ($x eq '~') { - return -1; - } - elsif ($x =~ /^\d$/) { - return 0; - } - elsif ($x =~ /^[A-Z]$/i) { - return ord($x); - } - else { - return ord($x) + 256; - } - } - - sub next_elem(\@){ - my $a = shift; - return @{$a} ? shift @{$a} : undef; - } - my ($val, $ref) = @_; - $val = "" if not defined $val; - $ref = "" if not defined $ref; - my @val = split //,$val; - my @ref = split //,$ref; - my $vc = next_elem @val; - my $rc = next_elem @ref; - while (defined $vc or defined $rc) { - my $first_diff = 0; - while ((defined $vc and $vc !~ /^\d$/) or - (defined $rc and $rc !~ /^\d$/)) { - my $vo = order($vc); my $ro = order($rc); - # Unlike dpkg's verrevcmp, we only return 1 or -1 here. - return (($vo - $ro > 0) ? 1 : -1) if $vo != $ro; - $vc = next_elem @val; $rc = next_elem @ref; - } - while (defined $vc and $vc eq '0') { - $vc = next_elem @val; - } - while (defined $rc and $rc eq '0') { - $rc = next_elem @ref; - } - while (defined $vc and $vc =~ /^\d$/ and - defined $rc and $rc =~ /^\d$/) { - $first_diff = ord($vc) - ord($rc) if !$first_diff; - $vc = next_elem @val; $rc = next_elem @ref; - } - return 1 if defined $vc and $vc =~ /^\d$/; - return -1 if defined $rc and $rc =~ /^\d$/; - return (($first_diff > 0) ? 1 : -1) if $first_diff; - } - return 0; -$$ - LANGUAGE plperl - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_compare_single (text, text) - IS 'Compare upstream or revision parts of Debian versions';""") - -# Logic only derived from Dpkg::Version::parseversion - c.execute("""CREATE OR REPLACE FUNCTION debversion_compare (version1 debversion, version2 debversion) - RETURNS integer AS $$ -DECLARE - split1 text[]; - split2 text[]; - result integer; -BEGIN - result := 0; - split1 := debversion_split(version1); - split2 := debversion_split(version2); - - -- RAISE NOTICE 'Version 1: %', version1; - -- RAISE NOTICE 'Version 2: %', version2; - -- RAISE NOTICE 'Split 1: %', split1; - -- RAISE NOTICE 'Split 2: %', split2; - - IF split1[1] > split2[1] THEN - result := 1; - ELSIF split1[1] < split2[1] THEN - result := -1; - ELSE - result := debversion_compare_single(split1[2], split2[2]); - IF result = 0 THEN - result := debversion_compare_single(split1[3], split2[3]); - END IF; - END IF; - - RETURN result; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_compare (debversion, debversion) - IS 'Compare Debian versions';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_eq (version1 debversion, version2 debversion) - RETURNS boolean AS $$ -DECLARE - comp integer; - result boolean; -BEGIN - comp := debversion_compare(version1, version2); - result := comp = 0; - RETURN result; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_eq (debversion, debversion) - IS 'debversion equal';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_ne (version1 debversion, version2 debversion) - RETURNS boolean AS $$ -DECLARE - comp integer; - result boolean; -BEGIN - comp := debversion_compare(version1, version2); - result := comp <> 0; - RETURN result; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_ne (debversion, debversion) - IS 'debversion not equal';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_lt (version1 debversion, version2 debversion) - RETURNS boolean AS $$ -DECLARE - comp integer; - result boolean; -BEGIN - comp := debversion_compare(version1, version2); - result := comp < 0; - RETURN result; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_lt (debversion, debversion) - IS 'debversion less-than';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_gt (version1 debversion, version2 debversion) RETURNS boolean AS $$ -DECLARE - comp integer; - result boolean; -BEGIN - comp := debversion_compare(version1, version2); - result := comp > 0; - RETURN result; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_gt (debversion, debversion) - IS 'debversion greater-than';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_le (version1 debversion, version2 debversion) - RETURNS boolean AS $$ -DECLARE - comp integer; - result boolean; -BEGIN - comp := debversion_compare(version1, version2); - result := comp <= 0; - RETURN result; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_le (debversion, debversion) - IS 'debversion less-than-or-equal';""") - - c.execute("""CREATE OR REPLACE FUNCTION debversion_ge (version1 debversion, version2 debversion) - RETURNS boolean AS $$ -DECLARE - comp integer; - result boolean; -BEGIN - comp := debversion_compare(version1, version2); - result := comp >= 0; - RETURN result; -END; -$$ - LANGUAGE plpgsql - IMMUTABLE STRICT;""") - c.execute("""COMMENT ON FUNCTION debversion_ge (debversion, debversion) - IS 'debversion greater-than-or-equal';""") - - c.execute("""CREATE OPERATOR = ( - PROCEDURE = debversion_eq, - LEFTARG = debversion, - RIGHTARG = debversion, - COMMUTATOR = =, - NEGATOR = !=);""") - c.execute("""COMMENT ON OPERATOR = (debversion, debversion) - IS 'debversion equal';""") - - c.execute("""CREATE OPERATOR != ( - PROCEDURE = debversion_eq, - LEFTARG = debversion, - RIGHTARG = debversion, - COMMUTATOR = !=, - NEGATOR = =);""") - c.execute("""COMMENT ON OPERATOR != (debversion, debversion) - IS 'debversion not equal';""") - - c.execute("""CREATE OPERATOR < ( - PROCEDURE = debversion_lt, - LEFTARG = debversion, - RIGHTARG = debversion, - COMMUTATOR = >, - NEGATOR = >=);""") - c.execute("""COMMENT ON OPERATOR < (debversion, debversion) - IS 'debversion less-than';""") - - c.execute("""CREATE OPERATOR > ( - PROCEDURE = debversion_gt, - LEFTARG = debversion, - RIGHTARG = debversion, - COMMUTATOR = <, - NEGATOR = >=);""") - c.execute("""COMMENT ON OPERATOR > (debversion, debversion) - IS 'debversion greater-than';""") - - c.execute("""CREATE OPERATOR <= ( - PROCEDURE = debversion_le, - LEFTARG = debversion, - RIGHTARG = debversion, - COMMUTATOR = >=, - NEGATOR = >);""") - c.execute("""COMMENT ON OPERATOR <= (debversion, debversion) - IS 'debversion less-than-or-equal';""") - - c.execute("""CREATE OPERATOR >= ( - PROCEDURE = debversion_ge, - LEFTARG = debversion, - RIGHTARG = debversion, - COMMUTATOR = <=, - NEGATOR = <);""") - c.execute("""COMMENT ON OPERATOR >= (debversion, debversion) - IS 'debversion greater-than-or-equal';""") - - c.execute("ALTER TABLE source ALTER COLUMN version TYPE debversion;") - c.execute("ALTER TABLE binaries ALTER COLUMN version TYPE debversion;") - - c.execute("UPDATE config SET value = '2' WHERE name = 'db_revision'") - - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to appy debversion updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update20.py b/dak/dakdb/update20.py deleted file mode 100644 index 0e8ac9d8..00000000 --- a/dak/dakdb/update20.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add policy queue handling support - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -import os -import datetime -import traceback - -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ - -def do_update(self): - print "Updating use of queue table" - - try: - c = self.db.cursor() - - cnf = Config() - - print "Adding path to queue table" - c.execute("ALTER TABLE queue ADD COLUMN path TEXT") - c.execute("SELECT * FROM queue") - rows = c.fetchall() - seenqueues = {} - for row in rows: - dir = cnf["Dir::Queue::%s" % row[1]].rstrip('/') - seenqueues[row[1].lower()] = 1 - print "Setting %s queue to use path %s" % (row[1], dir) - c.execute("UPDATE queue SET path = %s WHERE id = %s", (dir, row[0])) - - print "Adding missing queues to the queue table" - for q in cnf.subtree("Dir::Queue").keys(): - qname = q.lower() - if qname in seenqueues.keys(): - continue - if qname in ["done", "holding", "reject", "newstage", "btsversiontrack"]: - print "Skipping queue %s" % qname - continue - pth = cnf["Dir::Queue::%s" % qname].rstrip('/') - if not os.path.exists(pth): - print "Skipping %s as %s does not exist" % (qname, pth) - continue - - print "Adding %s queue with path %s" % (qname, pth) - c.execute("INSERT INTO queue (queue_name, path) VALUES (%s, %s)", (qname, pth)) - seenqueues[qname] = 1 - - print "Adding queue and approved_for columns to known_changes" - c.execute("ALTER TABLE known_changes ADD COLUMN in_queue INT4 REFERENCES queue(id) DEFAULT NULL") - c.execute("ALTER TABLE known_changes ADD COLUMN approved_for INT4 REFERENCES queue(id) DEFAULT NULL") - - print "Adding policy queue column to suite table" - c.execute("ALTER TABLE suite DROP COLUMN policy_engine") - c.execute("ALTER TABLE suite ADD COLUMN policy_queue_id INT4 REFERENCES queue(id) DEFAULT NULL") - # Handle some of our common cases automatically - if seenqueues.has_key('proposedupdates'): - c.execute("""UPDATE suite SET policy_queue_id = (SELECT id FROM queue WHERE queue_name = 'proposedupdates') - WHERE suite_name = 'proposed-updates'""") - - if seenqueues.has_key('oldproposedupdates'): - c.execute("""UPDATE suite SET policy_queue_id = (SELECT id FROM queue WHERE queue_name = 'oldproposedupdates') - WHERE suite_name = 'oldstable-proposed-updates'""") - - print "Committing" - c.execute("UPDATE config SET value = '20' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply debversion update 20, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update21.py b/dak/dakdb/update21.py deleted file mode 100644 index 41cef6dc..00000000 --- a/dak/dakdb/update21.py +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Modify queue autobuild support - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -import os -import datetime -import traceback - -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ - -def do_update(self): - print "Updating queue_build table" - - try: - c = self.db.cursor() - - cnf = Config() - - print "Adding copy_files field to queue table" - c.execute("ALTER TABLE queue ADD copy_pool_files BOOL NOT NULL DEFAULT FALSE") - - print "Adding queue_files table" - - c.execute("""CREATE TABLE queue_files ( - id SERIAL PRIMARY KEY, - queueid INT4 NOT NULL REFERENCES queue(id) ON DELETE RESTRICT, - insertdate TIMESTAMP NOT NULL DEFAULT now(), - lastused TIMESTAMP DEFAULT NULL, - filename TEXT NOT NULL, - fileid INT4 REFERENCES files(id) ON DELETE CASCADE)""") - - c.execute("""SELECT queue_build.filename, queue_build.last_used, queue_build.queue - FROM queue_build""") - - for r in c.fetchall(): - print r[0] - filename = r[0] - last_used = r[1] - queue = r[2] - try: - endlink = os.readlink(filename) - c.execute("SELECT files.id FROM files WHERE filename LIKE '%%%s'" % endlink[endlink.rindex('/')+1:]) - f = c.fetchone() - c.execute("""INSERT INTO queue_files (queueid, lastused, filename, fileid) VALUES - (%s, now(), %s, %s)""", (queue, filename[filename.rindex('/')+1:], f[0])) - except OSError as e: - print "Can't find file %s (%s)" % (filename, e) - - print "Dropping old queue_build table" - c.execute("DROP TABLE queue_build") - - print "Adding changes_pending_files table" - c.execute("""CREATE TABLE changes_pending_files ( - id SERIAL PRIMARY KEY, - changeid INT4 NOT NULL REFERENCES known_changes(id) ON DELETE CASCADE, - filename TEXT NOT NULL, - source BOOL NOT NULL DEFAULT FALSE, - filesize BIGINT NOT NULL, - md5sum TEXT NOT NULL, - sha1sum TEXT NOT NULL, - sha256sum TEXT NOT NULL)""") - - - print "Adding changes_pool_files table" - c.execute("""CREATE TABLE changes_pool_files ( - changeid INT4 NOT NULL REFERENCES known_changes(id) ON DELETE CASCADE, - fileid INT4 NOT NULL REFERENCES files(id) ON DELETE RESTRICT, - - PRIMARY KEY (changeid, fileid))""") - - print "Adding suite_queue_copy table" - c.execute("""CREATE TABLE suite_queue_copy ( - suite INT4 NOT NULL REFERENCES suite(id), - queue INT4 NOT NULL REFERENCES queue(id), - - PRIMARY KEY (suite, queue))""") - - # Link all suites from accepted - c.execute("""SELECT suite.id FROM suite""") - for s in c.fetchall(): - c.execute("""INSERT INTO suite_queue_copy (suite, queue) VALUES (%s, (SELECT id FROM queue WHERE queue_name = 'accepted'))""", s) - - # Parse the config and add any buildd stuff - cnf = Config() - c.execute("""INSERT INTO queue (queue_name, path) VALUES ('buildd', '%s')""" % cnf["Dir::QueueBuild"].rstrip('/')) - - for s in cnf.value_list("Dinstall::QueueBuildSuites"): - c.execute("""INSERT INTO suite_queue_copy (suite, queue) - VALUES ( (SELECT id FROM suite WHERE suite_name = '%s'), - (SELECT id FROM queue WHERE queue_name = 'buildd'))""" % s.lower()) - - print "Committing" - c.execute("UPDATE config SET value = '21' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply queue_build 21, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update22.py b/dak/dakdb/update22.py deleted file mode 100644 index 5c852c67..00000000 --- a/dak/dakdb/update22.py +++ /dev/null @@ -1,240 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Clean up queue SQL - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -import os -import datetime -import traceback - -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ - -def do_update(self): - print "Splitting up queues and fixing general design mistakes" - - try: - c = self.db.cursor() - - cnf = Config() - - print "Adding build_queue table" - c.execute("""CREATE TABLE build_queue ( - id SERIAL PRIMARY KEY, - queue_name TEXT NOT NULL UNIQUE, - path TEXT NOT NULL, - copy_files BOOL DEFAULT FALSE NOT NULL)""") - - print "Adding policy_queue table" - c.execute("""CREATE TABLE policy_queue ( - id SERIAL PRIMARY KEY, - queue_name TEXT NOT NULL UNIQUE, - path TEXT NOT NULL, - perms CHAR(4) NOT NULL DEFAULT '0660' CHECK (perms SIMILAR TO '^[0-7][0-7][0-7][0-7]$'), - change_perms CHAR(4) NOT NULL DEFAULT '0660' CHECK (change_perms SIMILAR TO '^[0-7][0-7][0-7][0-7]$') - )""") - - print "Copying queues" - queues = {} - c.execute("""SELECT queue.id, queue.queue_name, queue.path, queue.copy_pool_files FROM queue""") - - for q in c.fetchall(): - queues[q[0]] = q[1] - if q[1] in ['accepted', 'buildd', 'embargoed', 'unembargoed']: - # Move to build_queue_table - c.execute("""INSERT INTO build_queue (queue_name, path, copy_files) - VALUES ('%s', '%s', '%s')""" % (q[1], q[2], q[3])) - - else: - # Move to policy_queue_table - c.execute("""INSERT INTO policy_queue (queue_name, path) - VALUES ('%s', '%s')""" % (q[1], q[2])) - - - print "Fixing up build_queue_files" - c.execute("""ALTER TABLE queue_files DROP CONSTRAINT queue_files_queueid_fkey""") - c.execute("""ALTER TABLE queue_files RENAME TO build_queue_files""") - c.execute("""ALTER TABLE build_queue_files RENAME COLUMN queueid TO build_queue_id""") - - c.execute("""UPDATE build_queue_files - SET build_queue_id = (SELECT build_queue.id FROM build_queue - WHERE build_queue.queue_name = - (SELECT queue.queue_name FROM queue - WHERE queue.id = build_queue_files.build_queue_id))""") - - c.execute("""ALTER TABLE build_queue_files - ADD CONSTRAINT build_queue_files_build_queue_id_fkey - FOREIGN KEY (build_queue_id) - REFERENCES build_queue(id) - ON DELETE CASCADE""") - - - c.execute("""ALTER TABLE suite DROP CONSTRAINT suite_policy_queue_id_fkey""") - - c.execute("""UPDATE suite - SET policy_queue_id = (SELECT policy_queue.id FROM policy_queue - WHERE policy_queue.queue_name = - (SELECT queue.queue_name FROM queue - WHERE queue.id = suite.policy_queue_id))""") - - c.execute("""ALTER TABLE suite - ADD CONSTRAINT suite_policy_queue_fkey - FOREIGN KEY (policy_queue_id) - REFERENCES policy_queue (id) - ON DELETE RESTRICT""") - - c.execute("""ALTER TABLE known_changes DROP CONSTRAINT known_changes_approved_for_fkey""") - c.execute("""ALTER TABLE known_changes DROP CONSTRAINT known_changes_in_queue_fkey""") - - c.execute("""UPDATE known_changes - SET in_queue = (SELECT policy_queue.id FROM policy_queue - WHERE policy_queue.queue_name = - (SELECT queue.queue_name FROM queue - WHERE queue.id = known_changes.in_queue))""") - - c.execute("""ALTER TABLE known_changes - ADD CONSTRAINT known_changes_in_queue_fkey - FOREIGN KEY (in_queue) - REFERENCES policy_queue (id) - ON DELETE RESTRICT""") - - - - c.execute("""UPDATE known_changes - SET approved_for = (SELECT policy_queue.id FROM policy_queue - WHERE policy_queue.queue_name = - (SELECT queue.queue_name FROM queue - WHERE queue.id = known_changes.approved_for))""") - - c.execute("""ALTER TABLE known_changes - ADD CONSTRAINT known_changes_approved_for_fkey - FOREIGN KEY (in_queue) - REFERENCES policy_queue (id) - ON DELETE RESTRICT""") - - c.execute("""ALTER TABLE suite_queue_copy RENAME TO suite_build_queue_copy""") - - c.execute("""ALTER TABLE suite_build_queue_copy DROP CONSTRAINT suite_queue_copy_queue_fkey""") - - c.execute("""ALTER TABLE suite_build_queue_copy RENAME COLUMN queue TO build_queue_id""") - - c.execute("""UPDATE suite_build_queue_copy - SET build_queue_id = (SELECT build_queue.id FROM build_queue - WHERE build_queue.queue_name = - (SELECT queue.queue_name FROM queue - WHERE queue.id = suite_build_queue_copy.build_queue_id))""") - - c.execute("""ALTER TABLE suite_build_queue_copy - ADD CONSTRAINT suite_build_queue_copy_build_queue_id_fkey - FOREIGN KEY (build_queue_id) - REFERENCES build_queue (id) - ON DELETE RESTRICT""") - - c.execute("""DROP TABLE changes_pending_files""") - - c.execute("""CREATE TABLE changes_pending_files ( - id SERIAL PRIMARY KEY, - filename TEXT NOT NULL UNIQUE, - size BIGINT NOT NULL, - md5sum TEXT NOT NULL, - sha1sum TEXT NOT NULL, - sha256sum TEXT NOT NULL )""") - - c.execute("""CREATE TABLE changes_pending_files_map ( - file_id INT4 NOT NULL REFERENCES changes_pending_files (id), - change_id INT4 NOT NULL REFERENCES known_changes (id), - - PRIMARY KEY (file_id, change_id))""") - - c.execute("""CREATE TABLE changes_pending_source ( - id SERIAL PRIMARY KEY, - change_id INT4 NOT NULL REFERENCES known_changes (id), - source TEXT NOT NULL, - version DEBVERSION NOT NULL, - maintainer_id INT4 NOT NULL REFERENCES maintainer (id), - changedby_id INT4 NOT NULL REFERENCES maintainer (id), - sig_fpr INT4 NOT NULL REFERENCES fingerprint (id), - dm_upload_allowed BOOL NOT NULL DEFAULT FALSE )""") - - c.execute("""CREATE TABLE changes_pending_source_files ( - pending_source_id INT4 REFERENCES changes_pending_source (id) NOT NULL, - pending_file_id INT4 REFERENCES changes_pending_files (id) NOT NULL, - - PRIMARY KEY (pending_source_id, pending_file_id) )""") - - c.execute("""CREATE TABLE changes_pending_binaries ( - id SERIAL PRIMARY KEY, - change_id INT4 NOT NULL REFERENCES known_changes (id), - package TEXT NOT NULL, - version DEBVERSION NOT NULL, - architecture_id INT4 REFERENCES architecture (id) NOT NULL, - source_id INT4 REFERENCES source (id), - pending_source_id INT4 REFERENCES changes_pending_source (id), - pending_file_id INT4 REFERENCES changes_pending_files (id), - - UNIQUE (package, version, architecture_id), - CHECK (source_id IS NOT NULL or pending_source_id IS NOT NULL ) )""") - - print "Getting rid of old queue table" - c.execute("""DROP TABLE queue""") - - print "Sorting out permission columns" - c.execute("""UPDATE policy_queue SET perms = '0664' WHERE queue_name IN ('proposedupdates', 'oldproposedupdates')""") - - print "Moving known_changes table" - c.execute("""ALTER TABLE known_changes RENAME TO changes""") - - print "Sorting out permissions" - - for t in ['build_queue', 'policy_queue', 'build_queue_files', - 'changes_pending_binaries', 'changes_pending_source_files', - 'changes_pending_source', 'changes_pending_files', - 'changes_pool_files', 'suite_build_queue_copy']: - c.execute("GRANT SELECT ON %s TO public" % t) - c.execute("GRANT ALL ON %s TO ftpmaster" % t) - - for s in ['queue_files_id_seq', 'build_queue_id_seq', - 'changes_pending_source_id_seq', - 'changes_pending_binaries_id_seq', - 'changes_pending_files_id_seq', - 'changes_pending_source_id_seq', - 'known_changes_id_seq', - 'policy_queue_id_seq']: - c.execute("GRANT USAGE ON %s TO ftpmaster" % s) - - print "Committing" - c.execute("UPDATE config SET value = '22' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply queue_build 21, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update23.py b/dak/dakdb/update23.py deleted file mode 100644 index 4750c153..00000000 --- a/dak/dakdb/update23.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python - -""" -Add view for new generate_filelist command. - -@contact: Debian FTP Master -@copyright: 2009 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import psycopg2 - -def do_update(self): - print "Add views for generate_filelist to database." - - try: - c = self.db.cursor() - - print "Drop old views." - c.execute("DROP VIEW IF EXISTS binfiles_suite_component_arch CASCADE") - c.execute("DROP VIEW IF EXISTS srcfiles_suite_component CASCADE") - - print "Create new views." - c.execute(""" -CREATE VIEW binfiles_suite_component_arch AS - SELECT files.filename, binaries.type, location.path, location.component, - bin_associations.suite, binaries.architecture - FROM binaries - JOIN bin_associations ON binaries.id = bin_associations.bin - JOIN files ON binaries.file = files.id - JOIN location ON files.location = location.id; - """) - c.execute(""" -CREATE VIEW srcfiles_suite_component AS - SELECT files.filename, location.path, location.component, - src_associations.suite - FROM source - JOIN src_associations ON source.id = src_associations.source - JOIN files ON source.file = files.id - JOIN location ON files.location = location.id; - """) - - print "Committing" - c.execute("UPDATE config SET value = '23' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Database error, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update24.py b/dak/dakdb/update24.py deleted file mode 100644 index 64deb96e..00000000 --- a/dak/dakdb/update24.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python - -""" -Add some meta info to queues - -@contact: Debian FTP Master -@copyright: 2009 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import psycopg2 - -def do_update(self): - print "Add meta info columns to queues." - - try: - c = self.db.cursor() - - c.execute("ALTER TABLE policy_queue ADD COLUMN generate_metadata BOOL DEFAULT FALSE NOT NULL") - c.execute("ALTER TABLE policy_queue ADD COLUMN origin TEXT DEFAULT NULL") - c.execute("ALTER TABLE policy_queue ADD COLUMN label TEXT DEFAULT NULL") - c.execute("ALTER TABLE policy_queue ADD COLUMN releasedescription TEXT DEFAULT NULL") - c.execute("ALTER TABLE policy_queue ADD COLUMN signingkey TEXT DEFAULT NULL") - c.execute("ALTER TABLE policy_queue ADD COLUMN stay_of_execution INT4 NOT NULL DEFAULT 86400 CHECK (stay_of_execution >= 0)") - c.execute("""ALTER TABLE policy_queue - ADD CONSTRAINT policy_queue_meta_sanity_check - CHECK ( (generate_metadata IS FALSE) - OR (origin IS NOT NULL AND label IS NOT NULL AND releasedescription IS NOT NULL) )""") - - c.execute("ALTER TABLE build_queue ADD COLUMN generate_metadata BOOL DEFAULT FALSE NOT NULL") - c.execute("ALTER TABLE build_queue ADD COLUMN origin TEXT DEFAULT NULL") - c.execute("ALTER TABLE build_queue ADD COLUMN label TEXT DEFAULT NULL") - c.execute("ALTER TABLE build_queue ADD COLUMN releasedescription TEXT DEFAULT NULL") - c.execute("ALTER TABLE build_queue ADD COLUMN signingkey TEXT DEFAULT NULL") - c.execute("ALTER TABLE build_queue ADD COLUMN stay_of_execution INT4 NOT NULL DEFAULT 86400 CHECK (stay_of_execution >= 0)") - c.execute("""ALTER TABLE build_queue - ADD CONSTRAINT build_queue_meta_sanity_check - CHECK ( (generate_metadata IS FALSE) - OR (origin IS NOT NULL AND label IS NOT NULL AND releasedescription IS NOT NULL) )""") - - print "Committing" - c.execute("UPDATE config SET value = '24' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Database error, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update25.py b/dak/dakdb/update25.py deleted file mode 100644 index 0ce8ab6e..00000000 --- a/dak/dakdb/update25.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/env python - -""" -Add views for new dominate command. - -@contact: Debian FTP Master -@copyright: 2009 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import psycopg2 - -def do_update(self): - print "Add views for generate_filelist to database." - - try: - c = self.db.cursor() - - print "Drop old views." - c.execute("DROP VIEW IF EXISTS binaries_suite_arch CASCADE") - c.execute("DROP VIEW IF EXISTS newest_all_associations CASCADE") - c.execute("DROP VIEW IF EXISTS obsolete_any_by_all_associations CASCADE") - c.execute("DROP VIEW IF EXISTS newest_any_associations CASCADE") - c.execute("DROP VIEW IF EXISTS obsolete_any_associations CASCADE") - c.execute("DROP VIEW IF EXISTS source_suite CASCADE") - c.execute("DROP VIEW IF EXISTS newest_source CASCADE") - c.execute("DROP VIEW IF EXISTS newest_src_association CASCADE") - c.execute("DROP VIEW IF EXISTS any_associations_source CASCADE") - c.execute("DROP VIEW IF EXISTS src_associations_src CASCADE") - c.execute("DROP VIEW IF EXISTS almost_obsolete_src_associations CASCADE") - c.execute("DROP VIEW IF EXISTS obsolete_src_associations CASCADE") - c.execute("DROP VIEW IF EXISTS bin_associations_binaries CASCADE") - c.execute("DROP VIEW IF EXISTS src_associations_bin CASCADE") - c.execute("DROP VIEW IF EXISTS almost_obsolete_all_associations CASCADE") - c.execute("DROP VIEW IF EXISTS obsolete_all_associations CASCADE") - - print "Create new views." - c.execute(""" -CREATE VIEW binaries_suite_arch AS - SELECT bin_associations.id, binaries.id AS bin, binaries.package, - binaries.version, binaries.source, bin_associations.suite, - suite.suite_name, binaries.architecture, architecture.arch_string - FROM binaries JOIN bin_associations ON binaries.id = bin_associations.bin - JOIN suite ON suite.id = bin_associations.suite - JOIN architecture ON binaries.architecture = architecture.id; - """) - c.execute(""" -CREATE VIEW newest_all_associations AS - SELECT package, max(version) AS version, suite, architecture - FROM binaries_suite_arch - WHERE architecture = 2 GROUP BY package, suite, architecture; - """) - c.execute(""" -CREATE VIEW obsolete_any_by_all_associations AS - SELECT binaries_suite_arch.id, binaries_suite_arch.package, - binaries_suite_arch.version, binaries_suite_arch.suite, - binaries_suite_arch.architecture - FROM binaries_suite_arch - JOIN newest_all_associations - ON (binaries_suite_arch.package = newest_all_associations.package AND - binaries_suite_arch.version < newest_all_associations.version AND - binaries_suite_arch.suite = newest_all_associations.suite AND - binaries_suite_arch.architecture > 2); - """) - c.execute(""" -CREATE VIEW newest_any_associations AS - SELECT package, max(version) AS version, suite, architecture - FROM binaries_suite_arch - WHERE architecture > 2 GROUP BY package, suite, architecture; - """) - c.execute(""" -CREATE VIEW obsolete_any_associations AS - SELECT id, binaries_suite_arch.architecture, binaries_suite_arch.version, - binaries_suite_arch.package, binaries_suite_arch.suite - FROM binaries_suite_arch - JOIN newest_any_associations - ON binaries_suite_arch.architecture = newest_any_associations.architecture AND - binaries_suite_arch.package = newest_any_associations.package AND - binaries_suite_arch.suite = newest_any_associations.suite AND - binaries_suite_arch.version != newest_any_associations.version; - """) - c.execute(""" -CREATE VIEW source_suite AS - SELECT src_associations.id, source.id AS src , source.source, source.version, - src_associations.suite, suite.suite_name - FROM source - JOIN src_associations ON source.id = src_associations.source - JOIN suite ON suite.id = src_associations.suite; - """) - c.execute(""" -CREATE VIEW newest_source AS - SELECT source, max(version) AS version, suite - FROM source_suite - GROUP BY source, suite; - """) - c.execute(""" -CREATE VIEW newest_src_association AS - SELECT id, src, source, version, suite - FROM source_suite - JOIN newest_source USING (source, version, suite); - """) - c.execute(""" -CREATE VIEW any_associations_source AS - SELECT bin_associations.id, bin_associations.suite, binaries.id AS bin, - binaries.package, binaries.version AS binver, binaries.architecture, - source.id AS src, source.source, source.version AS srcver - FROM bin_associations - JOIN binaries ON bin_associations.bin = binaries.id AND architecture != 2 - JOIN source ON binaries.source = source.id; - """) - c.execute(""" -CREATE VIEW src_associations_src AS - SELECT src_associations.id, src_associations.suite, source.id AS src, - source.source, source.version - FROM src_associations - JOIN source ON src_associations.source = source.id; - """) - c.execute(""" -CREATE VIEW almost_obsolete_src_associations AS - SELECT src_associations_src.id, src_associations_src.src, - src_associations_src.source, src_associations_src.version, suite - FROM src_associations_src - LEFT JOIN any_associations_source USING (src, suite) - WHERE bin IS NULL; - """) - c.execute(""" -CREATE VIEW obsolete_src_associations AS - SELECT almost.id, almost.src, almost.source, almost.version, almost.suite - FROM almost_obsolete_src_associations as almost - JOIN newest_src_association AS newest - ON almost.source = newest.source AND - almost.version < newest.version AND - almost.suite = newest.suite; - """) - c.execute(""" -CREATE VIEW bin_associations_binaries AS - SELECT bin_associations.id, bin_associations.bin, binaries.package, - binaries.version, bin_associations.suite, binaries.architecture - FROM bin_associations - JOIN binaries ON bin_associations.bin = binaries.id; - """) - c.execute(""" -CREATE VIEW src_associations_bin AS - SELECT src_associations.id, src_associations.source, src_associations.suite, - binaries.id AS bin, binaries.architecture - FROM src_associations - JOIN source ON src_associations.source = source.id - JOIN binaries ON source.id = binaries.source; - """) - c.execute(""" -CREATE VIEW almost_obsolete_all_associations AS - SELECT bin_associations_binaries.id AS id, bin, bin_associations_binaries.package, - bin_associations_binaries.version, suite - FROM bin_associations_binaries - LEFT JOIN src_associations_bin USING (bin, suite, architecture) - WHERE source IS NULL AND architecture = 2; - """) - c.execute(""" -CREATE VIEW obsolete_all_associations AS - SELECT almost.id, almost.bin, almost.package, almost.version, almost.suite - FROM almost_obsolete_all_associations AS almost - JOIN newest_all_associations AS newest - ON almost.package = newest.package AND - almost.version < newest.version AND - almost.suite = newest.suite; - """) - - print "Committing" - c.execute("UPDATE config SET value = '25' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Database error, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update26.py b/dak/dakdb/update26.py deleted file mode 100644 index 358f2ae4..00000000 --- a/dak/dakdb/update26.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python - -""" -Add created,modified columns for all tables. - -@contact: Debian FTP Master -@copyright: 2009 Barry deFreese -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import psycopg2 - -def do_update(self): - print "Add created, modified fields for all tables." - - updatetables = ['architecture', 'archive', 'bin_associations', 'bin_contents', - 'binaries', 'binary_acl', 'binary_acl_map', 'build_queue', 'build_queue_files', - 'changes', 'changes_pending_binaries', 'changes_pending_files', - 'changes_pending_files_map', 'changes_pending_source', 'changes_pending_source_files', - 'changes_pool_files', 'component', 'config', 'dsc_files', 'files', 'fingerprint', - 'keyring_acl_map', 'keyrings', 'location', 'maintainer', 'new_comments', 'override', - 'override_type', 'policy_queue', 'priority', 'section', 'source', 'source_acl', - 'src_associations', 'src_format', 'src_uploaders', 'suite', 'suite_architectures', - 'suite_build_queue_copy', 'suite_src_formats', 'uid', 'upload_blocks'] - - c = self.db.cursor() - - print "Create trigger function." - c.execute("""CREATE OR REPLACE FUNCTION tfunc_set_modified() RETURNS trigger AS $$ - BEGIN NEW.modified = now(); return NEW; END; - $$ LANGUAGE 'plpgsql'""") - - try: - for updatetable in updatetables: - - print "Add created field to %s." % updatetable - c.execute("ALTER TABLE %s ADD COLUMN created TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()" % updatetable) - - print "Add modified field to %s." % updatetable - c.execute("ALTER TABLE %s ADD COLUMN modified TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()" % updatetable) - - print "Create modified trigger." - c.execute("""CREATE TRIGGER modified_%s BEFORE UPDATE ON %s - FOR EACH ROW EXECUTE PROCEDURE tfunc_set_modified()""" % (updatetable, updatetable)) - - print "Committing" - c.execute("UPDATE config SET value = '26' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Database error, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update27.py b/dak/dakdb/update27.py deleted file mode 100644 index 814e6015..00000000 --- a/dak/dakdb/update27.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python - -""" -Add views for new obsolete source detection. - -@contact: Debian FTP Master -@copyright: 2009 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import psycopg2 - -def do_update(self): - print "Add/modify views for obsolete source detection." - - try: - c = self.db.cursor() - - print "Replace old views." - # joins src_associations and source - c.execute(""" -CREATE OR REPLACE VIEW source_suite AS - SELECT src_associations.id, source.id AS src, source.source, source.version, - src_associations.suite, suite.suite_name, source.install_date - FROM source - JOIN src_associations ON source.id = src_associations.source - JOIN suite ON suite.id = src_associations.suite; - """) - # joins bin_associations and binaries - c.execute(""" -CREATE OR REPLACE VIEW bin_associations_binaries AS - SELECT bin_associations.id, bin_associations.bin, binaries.package, - binaries.version, bin_associations.suite, binaries.architecture, - binaries.source - FROM bin_associations - JOIN binaries ON bin_associations.bin = binaries.id; - """) - - print "Grant permissions to views." - c.execute("GRANT SELECT ON binfiles_suite_component_arch TO PUBLIC;"); - c.execute("GRANT SELECT ON srcfiles_suite_component TO PUBLIC;"); - c.execute("GRANT SELECT ON binaries_suite_arch TO PUBLIC;"); - c.execute("GRANT SELECT ON newest_all_associations TO PUBLIC;"); - c.execute("GRANT SELECT ON obsolete_any_by_all_associations TO PUBLIC;"); - c.execute("GRANT SELECT ON newest_any_associations TO PUBLIC;"); - c.execute("GRANT SELECT ON obsolete_any_associations TO PUBLIC;"); - c.execute("GRANT SELECT ON source_suite TO PUBLIC;"); - c.execute("GRANT SELECT ON newest_source TO PUBLIC;"); - c.execute("GRANT SELECT ON newest_src_association TO PUBLIC;"); - c.execute("GRANT SELECT ON any_associations_source TO PUBLIC;"); - c.execute("GRANT SELECT ON src_associations_src TO PUBLIC;"); - c.execute("GRANT SELECT ON almost_obsolete_src_associations TO PUBLIC;"); - c.execute("GRANT SELECT ON obsolete_src_associations TO PUBLIC;"); - c.execute("GRANT SELECT ON bin_associations_binaries TO PUBLIC;"); - c.execute("GRANT SELECT ON src_associations_bin TO PUBLIC;"); - c.execute("GRANT SELECT ON almost_obsolete_all_associations TO PUBLIC;"); - c.execute("GRANT SELECT ON obsolete_all_associations TO PUBLIC;"); - - print "Committing" - c.execute("UPDATE config SET value = '27' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.InternalError as msg: - self.db.rollback() - raise DBUpdateError("Database error, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update28.py b/dak/dakdb/update28.py deleted file mode 100644 index f0c62e0e..00000000 --- a/dak/dakdb/update28.py +++ /dev/null @@ -1,271 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -keep contents of binary packages in tables so we can generate contents.gz files from dak - -@contact: Debian FTP Master -@copyright: 2009 Mike O'Connor -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config -import string - -################################################################################ - -def _suites(): - """ - return a list of suites to operate on - """ - suites = Config().subtree("Suite").list() - return suites - -def arches(cursor, suite): - """ - return a list of archs to operate on - """ - arch_list = [] - cursor.execute("""SELECT s.architecture, a.arch_string - FROM suite_architectures s - JOIN architecture a ON (s.architecture=a.id) - WHERE suite = '%s'""" % suite) - - while True: - r = cursor.fetchone() - if not r: - break - - if r[1] != "source" and r[1] != "all": - arch_list.append((r[0], r[1])) - - return arch_list - -def do_update(self): - """ - Adding contents table as first step to maybe, finally getting rid - of apt-ftparchive - """ - - print __doc__ - - try: - c = self.db.cursor() - - c.execute("""CREATE TABLE pending_bin_contents ( - id serial NOT NULL, - package text NOT NULL, - version debversion NOT NULL, - arch int NOT NULL, - filename text NOT NULL, - type int NOT NULL, - PRIMARY KEY(id))""" ); - - c.execute("""CREATE TABLE deb_contents ( - filename text, - section text, - package text, - binary_id integer, - arch integer, - suite integer)""" ) - - c.execute("""CREATE TABLE udeb_contents ( - filename text, - section text, - package text, - binary_id integer, - suite integer, - arch integer)""" ) - - c.execute("""ALTER TABLE ONLY deb_contents - ADD CONSTRAINT deb_contents_arch_fkey - FOREIGN KEY (arch) REFERENCES architecture(id) - ON DELETE CASCADE;""") - - c.execute("""ALTER TABLE ONLY udeb_contents - ADD CONSTRAINT udeb_contents_arch_fkey - FOREIGN KEY (arch) REFERENCES architecture(id) - ON DELETE CASCADE;""") - - c.execute("""ALTER TABLE ONLY deb_contents - ADD CONSTRAINT deb_contents_pkey - PRIMARY KEY (filename,package,arch,suite);""") - - c.execute("""ALTER TABLE ONLY udeb_contents - ADD CONSTRAINT udeb_contents_pkey - PRIMARY KEY (filename,package,arch,suite);""") - - c.execute("""ALTER TABLE ONLY deb_contents - ADD CONSTRAINT deb_contents_suite_fkey - FOREIGN KEY (suite) REFERENCES suite(id) - ON DELETE CASCADE;""") - - c.execute("""ALTER TABLE ONLY udeb_contents - ADD CONSTRAINT udeb_contents_suite_fkey - FOREIGN KEY (suite) REFERENCES suite(id) - ON DELETE CASCADE;""") - - c.execute("""ALTER TABLE ONLY deb_contents - ADD CONSTRAINT deb_contents_binary_fkey - FOREIGN KEY (binary_id) REFERENCES binaries(id) - ON DELETE CASCADE;""") - - c.execute("""ALTER TABLE ONLY udeb_contents - ADD CONSTRAINT udeb_contents_binary_fkey - FOREIGN KEY (binary_id) REFERENCES binaries(id) - ON DELETE CASCADE;""") - - c.execute("""CREATE INDEX ind_deb_contents_binary ON deb_contents(binary_id);""" ) - - suites = _suites() - - for suite in [i.lower() for i in suites]: - - c.execute("SELECT id FROM suite WHERE suite_name ='%s'" % suite ) - suiterow = c.fetchone() - suite_id = suiterow[0] - arch_list = arches(c, suite_id) - arch_list = arches(c, suite_id) - suitestr=string.replace(suite,'-','_'); - - for (arch_id,arch_str) in arch_list: - arch_str = string.replace(arch_str,"-", "_") - c.execute( "CREATE INDEX ind_deb_contents_%s_%s ON deb_contents (arch,suite) WHERE (arch=2 OR arch=%s) AND suite='%s'"%(arch_str,suitestr,arch_id,suite_id) ) - - for section, sname in [("debian-installer","main"), - ("non-free/debian-installer", "nonfree")]: - c.execute( "CREATE INDEX ind_udeb_contents_%s_%s ON udeb_contents (section,suite) WHERE section='%s' AND suite='%s'"%(sname,suitestr,section,suite_id) ) - - - c.execute( """CREATE OR REPLACE FUNCTION update_contents_for_bin_a() RETURNS trigger AS $$ - event = TD["event"] - if event == "DELETE" or event == "UPDATE": - - plpy.execute(plpy.prepare("DELETE FROM deb_contents WHERE binary_id=$1 and suite=$2", - ["int","int"]), - [TD["old"]["bin"], TD["old"]["suite"]]) - - if event == "INSERT" or event == "UPDATE": - - content_data = plpy.execute(plpy.prepare( - \"\"\"SELECT s.section, b.package, b.architecture, ot.type - FROM override o - JOIN override_type ot on o.type=ot.id - JOIN binaries b on b.package=o.package - JOIN files f on b.file=f.id - JOIN location l on l.id=f.location - JOIN section s on s.id=o.section - WHERE b.id=$1 - AND o.suite=$2 - \"\"\", - ["int", "int"]), - [TD["new"]["bin"], TD["new"]["suite"]])[0] - - tablename="%s_contents" % content_data['type'] - - plpy.execute(plpy.prepare(\"\"\"DELETE FROM %s - WHERE package=$1 and arch=$2 and suite=$3\"\"\" % tablename, - ['text','int','int']), - [content_data['package'], - content_data['architecture'], - TD["new"]["suite"]]) - - filenames = plpy.execute(plpy.prepare( - "SELECT bc.file FROM bin_contents bc where bc.binary_id=$1", - ["int"]), - [TD["new"]["bin"]]) - - for filename in filenames: - plpy.execute(plpy.prepare( - \"\"\"INSERT INTO %s - (filename,section,package,binary_id,arch,suite) - VALUES($1,$2,$3,$4,$5,$6)\"\"\" % tablename, - ["text","text","text","int","int","int"]), - [filename["file"], - content_data["section"], - content_data["package"], - TD["new"]["bin"], - content_data["architecture"], - TD["new"]["suite"]] ) -$$ LANGUAGE plpythonu VOLATILE SECURITY DEFINER; -""") - - - c.execute( """CREATE OR REPLACE FUNCTION update_contents_for_override() RETURNS trigger AS $$ - event = TD["event"] - if event == "UPDATE": - - otype = plpy.execute(plpy.prepare("SELECT type from override_type where id=$1",["int"]),[TD["new"]["type"]] )[0]; - if otype["type"].endswith("deb"): - section = plpy.execute(plpy.prepare("SELECT section from section where id=$1",["int"]),[TD["new"]["section"]] )[0]; - - table_name = "%s_contents" % otype["type"] - plpy.execute(plpy.prepare("UPDATE %s set section=$1 where package=$2 and suite=$3" % table_name, - ["text","text","int"]), - [section["section"], - TD["new"]["package"], - TD["new"]["suite"]]) - -$$ LANGUAGE plpythonu VOLATILE SECURITY DEFINER; -""") - - c.execute("""CREATE OR REPLACE FUNCTION update_contents_for_override() - RETURNS trigger AS $$ - event = TD["event"] - if event == "UPDATE" or event == "INSERT": - row = TD["new"] - r = plpy.execute(plpy.prepare( \"\"\"SELECT 1 from suite_architectures sa - JOIN binaries b ON b.architecture = sa.architecture - WHERE b.id = $1 and sa.suite = $2\"\"\", - ["int", "int"]), - [row["bin"], row["suite"]]) - if not len(r): - plpy.error("Illegal architecture for this suite") - -$$ LANGUAGE plpythonu VOLATILE;""") - - c.execute( """CREATE TRIGGER illegal_suite_arch_bin_associations_trigger - BEFORE INSERT OR UPDATE ON bin_associations - FOR EACH ROW EXECUTE PROCEDURE update_contents_for_override();""") - - c.execute( """CREATE TRIGGER bin_associations_contents_trigger - AFTER INSERT OR UPDATE OR DELETE ON bin_associations - FOR EACH ROW EXECUTE PROCEDURE update_contents_for_bin_a();""") - c.execute("""CREATE TRIGGER override_contents_trigger - AFTER UPDATE ON override - FOR EACH ROW EXECUTE PROCEDURE update_contents_for_override();""") - - - c.execute( "CREATE INDEX ind_deb_contents_name ON deb_contents(package);"); - c.execute( "CREATE INDEX ind_udeb_contents_name ON udeb_contents(package);"); - - c.execute("UPDATE config SET value = '28' WHERE name = 'db_revision'") - - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply process-new update 28, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update29.py b/dak/dakdb/update29.py deleted file mode 100644 index c77d99da..00000000 --- a/dak/dakdb/update29.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding content fields - -@contact: Debian FTP Master -@copyright: 2010 Mike O'Connor -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "revert update6 since we have a new scheme for contents" - - try: - c = self.db.cursor() - c.execute("""DROP FUNCTION comma_concat(text, text) CASCADE;""" ); - c.execute("""DROP TABLE pending_content_associations;""") - c.execute("""DROP TABLE content_associations;""") - c.execute("""DROP TABLE content_file_names;""") - c.execute("""DROP TABLE content_file_paths;""") - - c.execute("UPDATE config SET value = '29' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to appy debversion updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update3.py b/dak/dakdb/update3.py deleted file mode 100644 index f7a4e502..00000000 --- a/dak/dakdb/update3.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python - -""" -Remove unused versioncmp - -@contact: Debian FTP Master -@copyright: 2008 Michael Casadevall -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Removing no longer used function versioncmp" - - try: - c = self.db.cursor() - # The reason we try and check to see if it exists is that - # psycopg2 might leave the cursor invalid if the drop fails - c.execute("SELECT proname from pg_catalog.pg_proc WHERE proname = 'versioncmp'") - rows = c.fetchall() - if rows: - c.execute("DROP FUNCTION versioncmp(text, text);") - else: - print "function already does not exist" - - c.execute("UPDATE config SET value = '3' WHERE name = 'db_revision'") - - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to appy versioncmp removal, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update30.py b/dak/dakdb/update30.py deleted file mode 100644 index f68c74a3..00000000 --- a/dak/dakdb/update30.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding content fields - -@contact: Debian FTP Master -@copyright: 2010 Mike O'Connor -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "fix trigger for bin_contents so that it ignores non deb,udeb" - - try: - c = self.db.cursor() - c.execute( """CREATE OR REPLACE FUNCTION update_contents_for_bin_a() RETURNS trigger AS $$ - event = TD["event"] - if event == "DELETE" or event == "UPDATE": - - plpy.execute(plpy.prepare("DELETE FROM deb_contents WHERE binary_id=$1 and suite=$2", - ["int","int"]), - [TD["old"]["bin"], TD["old"]["suite"]]) - - if event == "INSERT" or event == "UPDATE": - - content_data = plpy.execute(plpy.prepare( - \"\"\"SELECT s.section, b.package, b.architecture, ot.type - FROM override o - JOIN override_type ot on o.type=ot.id - JOIN binaries b on b.package=o.package - JOIN files f on b.file=f.id - JOIN location l on l.id=f.location - JOIN section s on s.id=o.section - WHERE b.id=$1 - AND o.suite=$2 - AND ot.type in ('deb','udeb') - \"\"\", - ["int", "int"]), - [TD["new"]["bin"], TD["new"]["suite"]])[0] - - tablename="%s_contents" % content_data['type'] - - plpy.execute(plpy.prepare(\"\"\"DELETE FROM %s - WHERE package=$1 and arch=$2 and suite=$3\"\"\" % tablename, - ['text','int','int']), - [content_data['package'], - content_data['architecture'], - TD["new"]["suite"]]) - - filenames = plpy.execute(plpy.prepare( - "SELECT bc.file FROM bin_contents bc where bc.binary_id=$1", - ["int"]), - [TD["new"]["bin"]]) - - for filename in filenames: - plpy.execute(plpy.prepare( - \"\"\"INSERT INTO %s - (filename,section,package,binary_id,arch,suite) - VALUES($1,$2,$3,$4,$5,$6)\"\"\" % tablename, - ["text","text","text","int","int","int"]), - [filename["file"], - content_data["section"], - content_data["package"], - TD["new"]["bin"], - content_data["architecture"], - TD["new"]["suite"]] ) -$$ LANGUAGE plpythonu VOLATILE SECURITY DEFINER; -""") - - c.execute("UPDATE config SET value = '30' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to appy debversion updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update31.py b/dak/dakdb/update31.py deleted file mode 100644 index 7209178b..00000000 --- a/dak/dakdb/update31.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -keep contents of binary packages in tables so we can generate contents.gz files from dak - -@contact: Debian FTP Master -@copyright: 2009 Mike O'Connor -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - add trigger to verify that bin_associations aren't added for an - illegal suite,arch combination. Fix override trigger, re-add all - 3 triggers - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("""CREATE OR REPLACE FUNCTION check_illegal_suite_arch() - RETURNS trigger AS $$ - event = TD["event"] - if event == "UPDATE" or event == "INSERT": - row = TD["new"] - r = plpy.execute(plpy.prepare( \"\"\"SELECT 1 from suite_architectures sa - JOIN binaries b ON b.architecture = sa.architecture - WHERE b.id = $1 and sa.suite = $2\"\"\", - ["int", "int"]), - [row["bin"], row["suite"]]) - if not len(r): - plpy.error("Illegal architecture for this suite") - -$$ LANGUAGE plpythonu VOLATILE;""") - - c.execute( """CREATE OR REPLACE FUNCTION update_contents_for_override() RETURNS trigger AS $$ - event = TD["event"] - if event == "UPDATE": - - otype = plpy.execute(plpy.prepare("SELECT type from override_type where id=$1",["int"]),[TD["new"]["type"]] )[0]; - if otype["type"].endswith("deb"): - section = plpy.execute(plpy.prepare("SELECT section from section where id=$1",["int"]),[TD["new"]["section"]] )[0]; - - table_name = "%s_contents" % otype["type"] - plpy.execute(plpy.prepare("UPDATE %s set section=$1 where package=$2 and suite=$3" % table_name, - ["text","text","int"]), - [section["section"], - TD["new"]["package"], - TD["new"]["suite"]]) - -$$ LANGUAGE plpythonu VOLATILE SECURITY DEFINER; -""") - c.execute( "DROP TRIGGER IF EXISTS illegal_suite_arch_bin_associations_trigger on bin_associations;" ) - - c.execute( "DROP TRIGGER IF EXISTS bin_associations_contents_trigger ON bin_associations;" ) - c.execute( "DROP TRIGGER IF EXISTS override_contents_trigger ON override;" ) - - c.execute( """CREATE TRIGGER bin_associations_contents_trigger - AFTER INSERT OR UPDATE OR DELETE ON bin_associations - FOR EACH ROW EXECUTE PROCEDURE update_contents_for_bin_a();""") - - c.execute("""CREATE TRIGGER override_contents_trigger - AFTER UPDATE ON override - FOR EACH ROW EXECUTE PROCEDURE update_contents_for_override();""") - - c.execute( """CREATE TRIGGER illegal_suite_arch_bin_associations_trigger - BEFORE INSERT OR UPDATE ON bin_associations - FOR EACH ROW EXECUTE PROCEDURE check_illegal_suite_arch();""") - - c.execute("UPDATE config SET value = '31' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply process-new update 31, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update32.py b/dak/dakdb/update32.py deleted file mode 100644 index 59355c91..00000000 --- a/dak/dakdb/update32.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add notautomatic field to build_queue - -@contact: Debian FTP Master -@copyright: 2010 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add the notautomatic field - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE build_queue ADD COLUMN notautomatic BOOLEAN NOT NULL DEFAULT false") - c.execute("UPDATE config SET value = '32' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply build_queue update 32, rollback issued. Error message : %s" % (str(msg))) - diff --git a/dak/dakdb/update33.py b/dak/dakdb/update33.py deleted file mode 100644 index 5b0fe110..00000000 --- a/dak/dakdb/update33.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Implement changelogs related tables - -@contact: Debian FTP Master -@copyright: 2010 Luca Falavigna -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Implement changelogs table - """ - print __doc__ - try: - c = self.db.cursor() - c.execute('ALTER TABLE changes ADD COLUMN changelog_id integer') - c.execute('CREATE TABLE changelogs_text (id serial PRIMARY KEY NOT NULL, changelog text)') - c.execute("GRANT SELECT ON changelogs_text TO public") - c.execute("GRANT ALL ON changelogs_text TO ftpmaster") - c.execute('CREATE VIEW changelogs AS SELECT cl.id, source, CAST(version AS debversion), architecture, changelog \ - FROM changes c JOIN changelogs_text cl ON cl.id = c.changelog_id') - c.execute("GRANT SELECT ON changelogs TO public") - c.execute("GRANT ALL ON changelogs TO ftpmaster") - c.execute("UPDATE config SET value = '33' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply build_queue update 33, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update34.py b/dak/dakdb/update34.py deleted file mode 100644 index 03f15739..00000000 --- a/dak/dakdb/update34.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Drop an obsolete view. - -@contact: Debian FTP Master -@copyright: 2010 Luca Falavigna -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Drop view srcfiles_suite_component - """ - print __doc__ - try: - c = self.db.cursor() - c.execute('DROP VIEW srcfiles_suite_component') - c.execute("UPDATE config SET value = '34' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply build_queue update 34, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update35.py b/dak/dakdb/update35.py deleted file mode 100644 index 41d56674..00000000 --- a/dak/dakdb/update35.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add distribution to changelogs view - -@contact: Debian FTP Master -@copyright: 2010 Luca Falavigna -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add distribution to changelogs view - """ - print __doc__ - try: - c = self.db.cursor() - c.execute('CREATE OR REPLACE VIEW changelogs AS SELECT cl.id, source, CAST(version AS debversion), architecture, \ - changelog, distribution FROM changes c JOIN changelogs_text cl ON cl.id = c.changelog_id') - c.execute("GRANT SELECT ON changelogs TO public") - c.execute("UPDATE config SET value = '35' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply build_queue update 35, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update36.py b/dak/dakdb/update36.py deleted file mode 100644 index 432e09f3..00000000 --- a/dak/dakdb/update36.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add processed field to changes_pending_files - -@contact: Debian FTP Master -@copyright: 2010 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add processed field to changes_pending_files - """ - print __doc__ - try: - c = self.db.cursor() - c.execute('ALTER TABLE changes_pending_files ADD COLUMN processed BOOL DEFAULT FALSE') - c.execute("UPDATE config SET value = '36' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply build_queue update 36, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update37.py b/dak/dakdb/update37.py deleted file mode 100644 index 7ab52e04..00000000 --- a/dak/dakdb/update37.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Remove unused table columns - -@contact: Debian FTP Master -@copyright: 2010 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -# everyone - send your condolences to twerner, a new ftpmaster -# twerner: you poor, poor bastard -# twerner: look what it's done to me and Ganneff -# he used to be only 1.3m tall and I used to be female -# twerner: Congratulations... Uhm... Thorsta? -# Thorstine? -# Thorstine seems the name of a candy we eat in Italy - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Remove unused table columns - """ - print __doc__ - try: - c = self.db.cursor() - c.execute('ALTER TABLE suite DROP COLUMN copydotdak') - c.execute('ALTER TABLE suite DROP COLUMN changelogbase') - c.execute("UPDATE config SET value = '37' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply table-colum update 37, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update38.py b/dak/dakdb/update38.py deleted file mode 100644 index da3a1d65..00000000 --- a/dak/dakdb/update38.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Remove more unused table columns - -@contact: Debian FTP Master -@copyright: 2010 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - - -# everyone - send your condolences to twerner, a new ftpmaster -# twerner: you poor, poor bastard -# twerner: look what it's done to me and Ganneff -# he used to be only 1.3m tall and I used to be female -# twerner: Congratulations... Uhm... Thorsta? -# Thorstine? -# Thorstine seems the name of a candy we eat in Italy - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Remove unused table columns - """ - print __doc__ - try: - c = self.db.cursor() - c.execute('ALTER TABLE suite DROP COLUMN commentsdir') - c.execute("UPDATE config SET value = '38' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply table-column update 38, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update39.py b/dak/dakdb/update39.py deleted file mode 100644 index c02b9629..00000000 --- a/dak/dakdb/update39.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Move changelogs related config values into projectb - -@contact: Debian FTP Master -@copyright: 2010 Luca Falavigna -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Move changelogs related config values into projectb - """ - print __doc__ - try: - c = self.db.cursor() - c.execute("INSERT INTO config(name, value) VALUES ('exportpath', 'changelogs')") - c.execute("ALTER TABLE suite ADD COLUMN changelog text NULL") - c.execute("UPDATE suite SET changelog = 'dists/testing/ChangeLog' WHERE suite_name = 'testing'") - c.execute("UPDATE config SET value = '39' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply table-column update 39, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update4.py b/dak/dakdb/update4.py deleted file mode 100644 index a6456bea..00000000 --- a/dak/dakdb/update4.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python -""" -Get suite_architectures table use sane values - -@contact: Debian FTP Master -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.utils import get_conf - -################################################################################ - -suites = {} #: Cache of existing suites -archs = {} #: Cache of existing architectures - -def do_update(self): - """ Execute the DB update """ - - print "Lets make suite_architecture table use sane values" - Cnf = get_conf() - - query = "INSERT into suite_architectures (suite, architecture) VALUES (%s, %s)" #: Update query - try: - c = self.db.cursor() - c.execute("DELETE FROM suite_architectures;") - - c.execute("SELECT id, arch_string FROM architecture;") - a=c.fetchall() - for arch in a: - archs[arch[1]]=arch[0] - - c.execute("SELECT id,suite_name FROM suite") - s=c.fetchall() - for suite in s: - suites[suite[1]]=suite[0] - - for suite in Cnf.subtree("Suite").list(): - print "Processing suite %s" % (suite) - architectures = Cnf.subtree("Suite::" + suite).value_list("Architectures") - suite = suite.lower() - for arch in architectures: - c.execute(query, [suites[suite], archs[arch]]) - - c.execute("UPDATE config SET value = '4' WHERE name = 'db_revision'") - - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply sanity to suite_architecture table, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update40.py b/dak/dakdb/update40.py deleted file mode 100644 index e3bb89e0..00000000 --- a/dak/dakdb/update40.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Rename squeeze-volatile to squeeze-updates to get more confused users - -@contact: Debian FTP Master -@copyright: 2010 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Rename squeeze-volatile to squeeze-updates to get more confused users - """ - print __doc__ - try: - c = self.db.cursor() - if gethostname() == 'franck': - c.execute("UPDATE suite SET suite_name='squeeze-updates', description='Updated packages for Debian x.y', codename='squeeze-updates' WHERE suite_name='squeeze-volatile'") - c.execute("UPDATE build_queue SET queue_name='buildd-squeeze-updates', path='/srv/incoming.debian.org/dists/squeeze-updates/buildd', releasedescription='buildd squeeze updates incoming' WHERE queue_name='buildd-squeeze-volatile'") - c.execute("UPDATE policy_queue SET queue_name='squeeze-updates-proposed-updates', path='/srv/ftp-master.debian.org/queue/updates/squeeze-updates-p-u-new' WHERE queue_name='squeeze-volatile-proposed-updates'") - c.execute("UPDATE config SET value = '40' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 40, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update41.py b/dak/dakdb/update41.py deleted file mode 100644 index 65661d3c..00000000 --- a/dak/dakdb/update41.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Remove useless type casts from primary keys to support sqlalchemy's reflection -mechanism for all tables. Rename 2 sequences and add 1 primary key. - -@contact: Debian FTP Master -@copyright: 2011 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Remove useless type casts from primary keys, fix 2 sequences, and add 1 - primary key. - """ - print __doc__ - try: - c = self.db.cursor() - - # remove useless type casts - for table in ('architecture', 'archive', 'bin_associations', \ - 'binaries', 'component', 'dsc_files', 'files', \ - 'fingerprint', 'location', 'maintainer', 'override_type', \ - 'pending_bin_contents', 'priority', 'section', 'source', \ - 'src_associations', 'suite', 'uid'): - c.execute("ALTER TABLE %s ALTER id SET DEFAULT nextval('%s_id_seq'::regclass)" % \ - (table, table)) - - # rename sequences - c.execute("ALTER SEQUENCE known_changes_id_seq RENAME TO changes_id_seq") - c.execute("ALTER SEQUENCE queue_files_id_seq RENAME TO build_queue_files_id_seq") - - # replace unique contraint by primary key - c.execute( \ - "ALTER TABLE bin_contents DROP CONSTRAINT bin_contents_file_key"); - c.execute("ALTER TABLE bin_contents ADD PRIMARY KEY (file, binary_id)"); - - c.execute("UPDATE config SET value = '41' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 41, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update42.py b/dak/dakdb/update42.py deleted file mode 100644 index 3c51232c..00000000 --- a/dak/dakdb/update42.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add "ButAutomaticUpgrades" field to the suite table - -@contact: Debian FTP Master -@copyright: 2011 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Add "ButAutomaticUpgrades" field to the suite table - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE suite ADD COLUMN butautomaticupgrades BOOLEAN NOT NULL DEFAULT FALSE;") - c.execute("ALTER TABLE suite ADD CONSTRAINT bau_needs_na_set CHECK (not butautomaticupgrades or notautomatic);") - - c.execute("UPDATE config SET value = '42' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply update 42, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update43.py b/dak/dakdb/update43.py deleted file mode 100644 index 430cc358..00000000 --- a/dak/dakdb/update43.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Fix up constraints for pg 9.0 - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Fix up constraints for pg 9.0 - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE policy_queue DROP constraint policy_queue_perms_check") - c.execute("ALTER TABLE policy_queue DROP constraint policy_queue_change_perms_check") - c.execute("ALTER TABLE policy_queue ADD CONSTRAINT policy_queue_perms_check CHECK (perms SIMILAR TO '[0-7][0-7][0-7][0-7]')") - c.execute("ALTER TABLE policy_queue ADD CONSTRAINT policy_queue_change_perms_check CHECK (change_perms SIMILAR TO '[0-7][0-7][0-7][0-7]')") - - c.execute("UPDATE config SET value = '43' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply update 43, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update44.py b/dak/dakdb/update44.py deleted file mode 100644 index bce1fe7d..00000000 --- a/dak/dakdb/update44.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Remove old contents tables that are no longer needed by the current -implementation. - -@contact: Debian FTP Master -@copyright: 2011 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Remove old contents tables that are no longer needed by the current - implementation. - """ - print __doc__ - try: - c = self.db.cursor() - - # remove useless type casts - for table in ('pending_bin_contents', 'deb_contents', 'udeb_contents'): - c.execute("DROP TABLE %s" % table) - - c.execute("UPDATE config SET value = '44' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 44, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update45.py b/dak/dakdb/update45.py deleted file mode 100644 index fe84c9be..00000000 --- a/dak/dakdb/update45.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add tables for extra_src handling - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add tables for extra_src handling - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" -CREATE TABLE extra_src_references ( - bin_id INT4 NOT NULL REFERENCES binaries(id) ON DELETE CASCADE, - src_id INT4 NOT NULL REFERENCES source(id) ON DELETE RESTRICT, - - PRIMARY KEY (bin_id, src_id) -)""") - - c.execute("UPDATE config SET value = '45' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply update 45, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update46.py b/dak/dakdb/update46.py deleted file mode 100644 index 109a887a..00000000 --- a/dak/dakdb/update46.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add columns and tables for Packages/Sources work - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add columns and tables for Packages/Sources work - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("""ALTER TABLE binaries ADD COLUMN stanza TEXT""") - c.execute("""ALTER TABLE source ADD COLUMN stanza TEXT""") - - c.execute(""" -CREATE TABLE metadata_keys ( - key_id SERIAL NOT NULL UNIQUE, - key TEXT NOT NULL UNIQUE, - - PRIMARY KEY (key_id) -) -""") - - c.execute(""" -CREATE TABLE binaries_metadata ( - bin_id INT4 NOT NULL REFERENCES binaries(id) ON DELETE CASCADE, - key_id INT4 NOT NULL REFERENCES metadata_keys(key_id), - value TEXT NOT NULL, - - PRIMARY KEY (bin_id, key_id) -) -""") - - c.execute(""" -CREATE TABLE source_metadata ( - src_id INT4 NOT NULL REFERENCES source(id) ON DELETE CASCADE, - key_id INT4 NOT NULL REFERENCES metadata_keys(key_id), - value TEXT NOT NULL, - - PRIMARY KEY (src_id, key_id) -) -""") - - c.execute("UPDATE config SET value = '46' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply update 46, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update47.py b/dak/dakdb/update47.py deleted file mode 100644 index a6626594..00000000 --- a/dak/dakdb/update47.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add table for source contents. - -@contact: Debian FTP Master -@copyright: 2011 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Add table for source contents. - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" - CREATE TABLE src_contents ( - file TEXT, - source_id INTEGER REFERENCES source(id) ON DELETE CASCADE, - PRIMARY KEY (file, source_id))""") - - c.execute("UPDATE config SET value = '47' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 47, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update48.py b/dak/dakdb/update48.py deleted file mode 100644 index 63a8a0e6..00000000 --- a/dak/dakdb/update48.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Suite.version can be null - -@contact: Debian FTP Master -@copyright: 2011 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Add table for source contents. - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE suite ALTER COLUMN version DROP NOT NULL") - c.execute("UPDATE suite SET version=NULL WHERE version='-'") - - c.execute("UPDATE config SET value = '48' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 48, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update49.py b/dak/dakdb/update49.py deleted file mode 100644 index 720f8cf3..00000000 --- a/dak/dakdb/update49.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Permission fixups - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Fix up permissions - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("GRANT SELECT, UPDATE, INSERT ON binaries_metadata TO ftpmaster") - c.execute("GRANT SELECT ON binaries_metadata TO public") - c.execute("GRANT USAGE ON metadata_keys_key_id_seq TO ftpmaster") - c.execute("GRANT SELECT, UPDATE, INSERT ON source_metadata TO ftpmaster") - c.execute("GRANT SELECT ON source_metadata TO public") - c.execute("GRANT SELECT, UPDATE, INSERT ON metadata_keys TO ftpmaster") - c.execute("GRANT SELECT ON metadata_keys TO public") - c.execute("GRANT SELECT, UPDATE, INSERT ON extra_src_references TO ftpmaster") - c.execute("GRANT SELECT ON extra_src_references TO public") - c.execute("GRANT SELECT, UPDATE, INSERT ON src_contents TO ftpmaster") - c.execute("GRANT SELECT ON src_contents TO public") - c.execute("GRANT USAGE ON changelogs_text_id_seq TO ftpmaster") - c.execute("GRANT SELECT ON changes_pending_files_map TO public") - c.execute("GRANT SELECT ON config TO public") - - c.execute("UPDATE config SET value = '49' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 49, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update5.py b/dak/dakdb/update5.py deleted file mode 100644 index a42e540c..00000000 --- a/dak/dakdb/update5.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python - -""" -Fix bin_assoc_by_arch view - -@contact: Debian FTP Master -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later - -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - """ Execute the DB update """ - - print "Fixing bin_assoc_by_arch view" - try: - c = self.db.cursor() - - c.execute("""CREATE OR REPLACE VIEW bin_assoc_by_arch AS - SELECT ba.suite, ba.bin, a.id AS arch - FROM bin_associations ba - JOIN binaries b ON ba.bin = b.id, architecture a - WHERE a.id > 2 AND (b.architecture = 2 OR b.architecture = a.id) """) - c.execute("UPDATE config SET value = '5' WHERE name = 'db_revision'") - - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to recreate bin_assoc_by_arch view, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update50.py b/dak/dakdb/update50.py deleted file mode 100644 index 09499877..00000000 --- a/dak/dakdb/update50.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Allow us to mark keyrings as no longer in use - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Allow us to mark keyrings as no longer in use - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE keyrings ADD COLUMN active BOOL DEFAULT TRUE") - c.execute("UPDATE config SET value = '50' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 50, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update51.py b/dak/dakdb/update51.py deleted file mode 100644 index 2d4c1a2c..00000000 --- a/dak/dakdb/update51.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Fix table for source contents. - -@contact: Debian FTP Master -@copyright: 2011 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Fix table for source contents. - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" - CREATE INDEX ON src_contents (source_id)""") - c.execute(""" - ALTER TABLE src_contents ADD COLUMN created TIMESTAMP WITH TIME ZONE - NOT NULL DEFAULT now()""") - c.execute(""" - ALTER TABLE src_contents ADD COLUMN modified TIMESTAMP WITH TIME ZONE - NOT NULL DEFAULT now()""") - c.execute(""" - CREATE TRIGGER modified_src_contents BEFORE UPDATE ON src_contents - FOR EACH ROW EXECUTE PROCEDURE tfunc_set_modified()""") - - c.execute("UPDATE config SET value = '51' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 51, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update52.py b/dak/dakdb/update52.py deleted file mode 100644 index 8bfaba30..00000000 --- a/dak/dakdb/update52.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add table for version checks. - -@contact: Debian FTP Master -@copyright: 2011 Ansgar Burchardt -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ -def do_update(self): - """ - Add table for version checks. - """ - print __doc__ - try: - cnf = Config() - c = self.db.cursor() - - c.execute(""" - CREATE TABLE version_check ( - suite INTEGER NOT NULL REFERENCES suite(id), - "check" TEXT NOT NULL CHECK ("check" IN ('Enhances', 'MustBeNewerThan', 'MustBeOlderThan')), - reference INTEGER NOT NULL REFERENCES suite(id), - PRIMARY KEY(suite, "check", reference) - )""") - - c.execute("SELECT suite_name, id FROM suite") - suites = c.fetchall() - suite_id_map = {} - for suite_name, suite_id in suites: - suite_id_map[suite_name] = suite_id - - for check in ["Enhances", "MustBeNewerThan", "MustBeOlderThan"]: - for suite_name in suite_id_map.keys(): - for reference_name in [ s.lower() for s in cnf.value_list("Suite::%s::VersionChecks::%s" % (suite_name, check)) ]: - c.execute("""INSERT INTO version_check (suite, "check", reference) VALUES (%s, %s, %s)""", (suite_id_map[suite_name], check, suite_id_map[reference_name])) - - c.execute("UPDATE config SET value = '52' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 52, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update53.py b/dak/dakdb/update53.py deleted file mode 100644 index 92508257..00000000 --- a/dak/dakdb/update53.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add table for build queue files from policy queues. - -@contact: Debian FTP Master -@copyright: 2011 Ansgar Burchardt -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add table for build queue files from policy queues. - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" - CREATE TABLE build_queue_policy_files ( - build_queue_id INTEGER NOT NULL REFERENCES build_queue(id) ON DELETE CASCADE, - file_id INTEGER NOT NULL REFERENCES changes_pending_files(id) ON DELETE CASCADE, - filename TEXT NOT NULL, - created TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), - lastused TIMESTAMP WITHOUT TIME ZONE, - PRIMARY KEY (build_queue_id, file_id) - )""") - - c.execute("UPDATE config SET value = '53' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 53, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update54.py b/dak/dakdb/update54.py deleted file mode 100644 index c218cc67..00000000 --- a/dak/dakdb/update54.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add send_to_build_queues to policy_queue table - -@contact: Debian FTP Master -@copyright: 2011 Ansgar Burchardt -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add send_to_build_queues to policy_queue table - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" - ALTER TABLE policy_queue ADD COLUMN send_to_build_queues BOOLEAN NOT NULL DEFAULT 'f' - """) - c.execute(""" - UPDATE policy_queue SET send_to_build_queues='t' WHERE queue_name IN ('embargo', 'disembargo') - """) - - c.execute("UPDATE config SET value = '54' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 54, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update55.py b/dak/dakdb/update55.py deleted file mode 100644 index 9e152227..00000000 --- a/dak/dakdb/update55.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Drop unused view bin_assoc_by_arch. - -@contact: Debian FTP Master -@copyright: 2011 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from socket import gethostname; - -################################################################################ -def do_update(self): - """ - Drop unused view bin_assoc_by_arch. - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" - DROP VIEW bin_assoc_by_arch""") - - c.execute("UPDATE config SET value = '55' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 55, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update56.py b/dak/dakdb/update56.py deleted file mode 100644 index 647f8c79..00000000 --- a/dak/dakdb/update56.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add order column to metadata_keys - -@contact: Debian FTP Master -@copyright: 2011 Ansgar Burchardt -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add order column to metadata_keys - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE metadata_keys ADD COLUMN ordering INTEGER NOT NULL DEFAULT 0") - - initial_order = { - 'Package': -2600, - 'Source': -2500, - 'Binary': -2400, - 'Version': -2300, - 'Essential': -2250, - 'Installed-Size': -2200, - 'Maintainer': -2100, - 'Uploaders': -2090, - 'Original-Maintainer': -2080, - 'Build-Depends': -2000, - 'Build-Depends-Indep': -1990, - 'Build-Conflicts': -1980, - 'Build-Conflicts-Indep': -1970, - 'Architecture': -1800, - 'Standards-Version': -1700, - 'Format': -1600, - 'Files': -1500, - 'DM-Upload-Allowed': -1400, - 'Vcs-%': -1300, - 'Checksums-%': -1200, - 'Replaces': -1100, - 'Provides': -1000, - 'Depends': -900, - 'Pre-Depends': -850, - 'Recommends': -800, - 'Suggests': -700, - 'Enhances': -650, - 'Conflicts': -600, - 'Breaks': -500, - 'Description': -400, - 'Origin': -300, - 'Bugs': -200, - 'Multi-Arch': -150, - 'Homepage': -100, - 'Tag': 300, - 'Package-Type': 400, - 'Installer-Menu-Item': 500, - } - - for key, order in initial_order.items(): - c.execute("""UPDATE metadata_keys SET ordering = '%s' WHERE key ILIKE '%s'""" % (order, key)) - - c.execute("UPDATE config SET value = '56' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 56, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update57.py b/dak/dakdb/update57.py deleted file mode 100644 index db49db43..00000000 --- a/dak/dakdb/update57.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Allow per-suite signing keys - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Allow per-suite signing keys - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("""ALTER TABLE suite ADD COLUMN signingkeys TEXT[]""") - c.execute("""UPDATE suite SET signingkeys = signingkeys || (SELECT value FROM config WHERE name = 'signingkeyids')""") - c.execute("""DELETE FROM config WHERE name = 'signingkeyids'""") - - c.execute("UPDATE config SET value = '57' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 57, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update58.py b/dak/dakdb/update58.py deleted file mode 100644 index 9f10d31b..00000000 --- a/dak/dakdb/update58.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Fix permissions again - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Fix up permissions (again) - """ - print __doc__ - try: - c = self.db.cursor() - - for table in ['build_queue_policy_files', - 'version_check']: - c.execute("""GRANT SELECT, UPDATE, INSERT ON %s TO ftpmaster""" % table) - c.execute("""GRANT SELECT ON %s TO public""" % table) - - # Make sure all sequences are fixed up - for seq in ['architecture_id_seq', - 'archive_id_seq', - 'bin_associations_id_seq', - 'binaries_id_seq', - 'binary_acl_id_seq', - 'binary_acl_map_id_seq', - 'build_queue_files_id_seq', - 'build_queue_id_seq', - 'changelogs_text_id_seq', - 'changes_id_seq', - 'changes_pending_binaries_id_seq', - 'changes_pending_files_id_seq', - 'changes_pending_source_id_seq', - 'component_id_seq', - 'config_id_seq', - 'dsc_files_id_seq', - 'files_id_seq', - 'fingerprint_id_seq', - 'keyring_acl_map_id_seq', - 'keyrings_id_seq', - 'location_id_seq', - 'maintainer_id_seq', - 'metadata_keys_key_id_seq', - 'new_comments_id_seq', - 'override_type_id_seq', - 'policy_queue_id_seq', - 'priority_id_seq', - 'section_id_seq', - 'source_acl_id_seq', - 'source_id_seq', - 'src_associations_id_seq', - 'src_format_id_seq', - 'src_uploaders_id_seq', - 'suite_id_seq', - 'uid_id_seq', - 'upload_blocks_id_seq']: - c.execute("""GRANT SELECT, UPDATE, USAGE ON %s TO ftpmaster""" % seq) - c.execute("""GRANT SELECT ON %s TO public""" % seq) - - c.execute("UPDATE config SET value = '58' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 58, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update59.py b/dak/dakdb/update59.py deleted file mode 100644 index fd6fea55..00000000 --- a/dak/dakdb/update59.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add external_overrides - -@contact: Debian FTP Master -@copyright: 2011 Ansgar Burchardt -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Add external_overrides - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" - CREATE TABLE external_overrides ( - package TEXT NOT NULL, - key TEXT NOT NULL, - value TEXT NOT NULL, - PRIMARY KEY (package, key) - )"""); - - c.execute("GRANT SELECT, UPDATE, INSERT, DELETE ON external_overrides TO ftpmaster"); - c.execute("GRANT SELECT ON external_overrides TO public"); - - c.execute("UPDATE config SET value = '59' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 59, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update6.py b/dak/dakdb/update6.py deleted file mode 100644 index f3d11bbc..00000000 --- a/dak/dakdb/update6.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Adding content fields - -@contact: Debian FTP Master -@copyright: 2008 Michael Casadevall -@copyright: 2008 Roger Leigh -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -# really, if we want to screw ourselves, let's find a better way. -# rm -rf /srv/ftp.debian.org - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError - -################################################################################ - -def do_update(self): - print "Adding content fields to database" - - try: - c = self.db.cursor() - c.execute("""CREATE TABLE content_file_paths ( - id serial primary key not null, - path text unique not null - )""") - - c.execute("""CREATE TABLE content_file_names ( - id serial primary key not null, - file text unique not null - )""") - - c.execute("""CREATE TABLE content_associations ( - id serial not null, - binary_pkg int4 not null references binaries(id) on delete cascade, - filepath int4 not null references content_file_paths(id) on delete cascade, - filename int4 not null references content_file_names(id) on delete cascade - );""") - - c.execute("""CREATE TABLE pending_content_associations ( - id serial not null, - package text not null, - version debversion not null, - filepath int4 not null references content_file_paths(id) on delete cascade, - filename int4 not null references content_file_names(id) on delete cascade - );""") - - c.execute("""CREATE FUNCTION comma_concat(text, text) RETURNS text - AS $_$select case - WHEN $2 is null or $2 = '' THEN $1 - WHEN $1 is null or $1 = '' THEN $2 - ELSE $1 || ',' || $2 - END$_$ - LANGUAGE sql""") - - c.execute("""CREATE AGGREGATE comma_separated_list ( - BASETYPE = text, - SFUNC = comma_concat, - STYPE = text, - INITCOND = '' - );""") - - c.execute( "CREATE INDEX content_assocaitions_binary ON content_associations(binary_pkg)" ) - - c.execute("UPDATE config SET value = '6' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to appy debversion updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update60.py b/dak/dakdb/update60.py deleted file mode 100644 index 01735296..00000000 --- a/dak/dakdb/update60.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Make external overrides specific for (suite, component) - -@contact: Debian FTP Master -@copyright: 2011 Ansgar Burchardt -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Make external overrides specific for (suite, component) - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("DELETE FROM external_overrides") - print "NOTE: Please reimport the external overrides." - - c.execute(""" - ALTER TABLE external_overrides - DROP CONSTRAINT external_overrides_pkey, - ADD COLUMN suite INTEGER NOT NULL REFERENCES suite(id), - ADD COLUMN component INTEGER NOT NULL REFERENCES component(id), - ADD PRIMARY KEY (suite, component, package, key) - """) - - c.execute("UPDATE config SET value = '60' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 60, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update61.py b/dak/dakdb/update61.py deleted file mode 100644 index 3b18e0b3..00000000 --- a/dak/dakdb/update61.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Just a view for version checks - -@contact: Debian FTP Master -@copyright: 2011 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Just a view for version checks - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute(""" - CREATE OR REPLACE VIEW version_checks AS - SELECT s.suite_name AS source_suite, v.check as condition, t.suite_name AS target_suite - FROM suite s - JOIN version_check v ON (s.id = v.suite) - JOIN suite t ON (v.reference = t.id) - ORDER BY source_suite, condition, target_suite; - """) - - c.execute("GRANT SELECT on version_checks TO PUBLIC;") - c.execute("UPDATE config SET value = '61' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 61, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update62.py b/dak/dakdb/update62.py deleted file mode 100644 index 7a47dca8..00000000 --- a/dak/dakdb/update62.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Ensure that suite_name is unique! - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError - -################################################################################ -def do_update(self): - """ - Ensure that suite_name is unique - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE suite ADD CONSTRAINT suite_name_unique UNIQUE (suite_name)") - - c.execute("UPDATE config SET value = '62' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 62, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update63.py b/dak/dakdb/update63.py deleted file mode 100644 index e9e5c0f1..00000000 --- a/dak/dakdb/update63.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add missing PrimaryMirror field to archive table - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ -def do_update(self): - """ - Add missing PrimaryMirror field to archive table - """ - print __doc__ - try: - cnf = Config() - - c = self.db.cursor() - - c.execute("ALTER TABLE archive ADD COLUMN primary_mirror TEXT") - - c.execute("SELECT id, name FROM archive") - - query = "UPDATE archive SET primary_mirror = %s WHERE id = %s" - for a_id, a_name in c.fetchall(): - if cnf.has_key('Archive::%s::PrimaryMirror' % a_name): - primloc = cnf['Archive::%s::PrimaryMirror' % a_name] - print "Setting archive %s PrimaryMirror to %s" % (a_name, primloc) - c.execute(query, [primloc, a_id]) - - c.execute("UPDATE config SET value = '63' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 63, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update64.py b/dak/dakdb/update64.py deleted file mode 100644 index 49ca75a8..00000000 --- a/dak/dakdb/update64.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Fix up permissions on changes_pool_files - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ -def do_update(self): - """ - Fix up permissions on changes_pool_files - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("REVOKE INSERT ON changes_pool_files FROM ftpteam") - c.execute("GRANT DELETE ON changes_pool_files TO ftpteam") - - c.execute("UPDATE config SET value = '64' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 64, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update65.py b/dak/dakdb/update65.py deleted file mode 100644 index 46730b5f..00000000 --- a/dak/dakdb/update65.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Make announce field an array - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ -def do_update(self): - """ - Make announce field an array - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("ALTER TABLE suite RENAME COLUMN announce TO announce_temp") - c.execute("ALTER TABLE suite ADD COLUMN announce TEXT[]") - c.execute("UPDATE suite SET announce = ARRAY[announce_temp] WHERE announce_temp IS NOT NULL") - c.execute("ALTER TABLE suite DROP COLUMN announce_temp") - - c.execute("UPDATE config SET value = '65' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 65, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update66.py b/dak/dakdb/update66.py deleted file mode 100644 index d59306fa..00000000 --- a/dak/dakdb/update66.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add 2 partial indexes to speed up dak rm. - -@contact: Debian FTP Master -@copyright: 2011 Torsten Werner -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ -def do_update(self): - """ - Add 2 partial indexes to speed up dak rm. - """ - print __doc__ - try: - cnf = Config() - - c = self.db.cursor() - - # partial index for Depends - c.execute("SELECT key_id FROM metadata_keys WHERE key = 'Depends'") - key = c.fetchone()[0] - c.execute("""CREATE INDEX binaries_metadata_depends - ON binaries_metadata (bin_id) WHERE key_id = %d""" % key) - - # partial index for Provides - c.execute("SELECT key_id FROM metadata_keys WHERE key = 'Provides'") - key = c.fetchone()[0] - c.execute("""CREATE INDEX binaries_metadata_provides - ON binaries_metadata (bin_id) WHERE key_id = %d""" % key) - - c.execute("UPDATE config SET value = '66' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 66, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update67.py b/dak/dakdb/update67.py deleted file mode 100644 index 18c51d49..00000000 --- a/dak/dakdb/update67.py +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Add audit schema and initial package table and triggers - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@copyright: 2011 Ansgar Burchardt -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ -def do_update(self): - """ - Add audit schema and initial package table and triggers - """ - print __doc__ - try: - c = self.db.cursor() - - c.execute("CREATE SCHEMA audit"); - c.execute("GRANT USAGE on SCHEMA audit TO public") - c.execute("GRANT USAGE on SCHEMA audit TO ftpteam") - c.execute("GRANT USAGE on SCHEMA audit TO ftpmaster") - - c.execute("""CREATE TABLE audit.package_changes ( - changedate TIMESTAMP NOT NULL DEFAULT now(), - package TEXT NOT NULL, - version DEBVERSION NOT NULL, - architecture TEXT NOT NULL, - suite TEXT NOT NULL, - event TEXT NOT NULL, - priority TEXT, - component TEXT, - section TEXT -)""") - - c.execute("GRANT INSERT ON audit.package_changes TO dak") - c.execute("GRANT SELECT ON audit.package_changes TO PUBLIC") - - c.execute("""CREATE OR REPLACE FUNCTION trigger_binsrc_assoc_update() RETURNS TRIGGER AS $$ -DECLARE - v_data RECORD; - - v_package audit.package_changes.package%TYPE; - v_version audit.package_changes.version%TYPE; - v_architecture audit.package_changes.architecture%TYPE; - v_suite audit.package_changes.suite%TYPE; - v_event audit.package_changes.event%TYPE; - v_priority audit.package_changes.priority%TYPE; - v_component audit.package_changes.component%TYPE; - v_section audit.package_changes.section%TYPE; -BEGIN - CASE TG_OP - WHEN 'INSERT' THEN v_event := 'I'; v_data := NEW; - WHEN 'DELETE' THEN v_event := 'D'; v_data := OLD; - ELSE RAISE EXCEPTION 'trigger called for invalid operation (%)', TG_OP; - END CASE; - - SELECT suite_name INTO STRICT v_suite FROM suite WHERE id = v_data.suite; - - CASE TG_TABLE_NAME - WHEN 'bin_associations' THEN - SELECT package, version, arch_string - INTO STRICT v_package, v_version, v_architecture - FROM binaries LEFT JOIN architecture ON (architecture.id = binaries.architecture) - WHERE binaries.id = v_data.bin; - - SELECT component.name, priority.priority, section.section - INTO v_component, v_priority, v_section - FROM override - JOIN override_type ON (override.type = override_type.id) - JOIN priority ON (priority.id = override.priority) - JOIN section ON (section.id = override.section) - JOIN component ON (override.component = component.id) - JOIN suite ON (suite.id = override.suite) - WHERE override_type.type != 'dsc' - AND override.package = v_package AND suite.id = v_data.suite; - - WHEN 'src_associations' THEN - SELECT source, version - INTO STRICT v_package, v_version - FROM source WHERE source.id = v_data.source; - v_architecture := 'source'; - - SELECT component.name, priority.priority, section.section - INTO v_component, v_priority, v_section - FROM override - JOIN override_type ON (override.type = override_type.id) - JOIN priority ON (priority.id = override.priority) - JOIN section ON (section.id = override.section) - JOIN component ON (override.component = component.id) - JOIN suite ON (suite.id = override.suite) - WHERE override_type.type = 'dsc' - AND override.package = v_package AND suite.id = v_data.suite; - - ELSE RAISE EXCEPTION 'trigger called for invalid table (%)', TG_TABLE_NAME; - END CASE; - - INSERT INTO audit.package_changes - (package, version, architecture, suite, event, priority, component, section) - VALUES (v_package, v_version, v_architecture, v_suite, v_event, v_priority, v_component, v_section); - - RETURN NEW; -END; -$$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER -SET search_path = public, pg_temp"""); - - c.execute("""CREATE OR REPLACE FUNCTION trigger_override_update() RETURNS TRIGGER AS $$ -DECLARE - v_src_override_id override_type.id%TYPE; - - v_priority audit.package_changes.priority%TYPE := NULL; - v_component audit.package_changes.component%TYPE := NULL; - v_section audit.package_changes.section%TYPE := NULL; -BEGIN - - IF TG_TABLE_NAME != 'override' THEN - RAISE EXCEPTION 'trigger called for invalid table (%)', TG_TABLE_NAME; - END IF; - IF TG_OP != 'UPDATE' THEN - RAISE EXCEPTION 'trigger called for invalid event (%)', TG_OP; - END IF; - - IF OLD.package != NEW.package OR OLD.type != NEW.type OR OLD.suite != NEW.suite THEN - RETURN NEW; - END IF; - - IF OLD.priority != NEW.priority THEN - SELECT priority INTO STRICT v_priority FROM priority WHERE id = NEW.priority; - END IF; - - IF OLD.component != NEW.component THEN - SELECT name INTO STRICT v_component FROM component WHERE id = NEW.component; - END IF; - - IF OLD.section != NEW.section THEN - SELECT section INTO STRICT v_section FROM section WHERE id = NEW.section; - END IF; - - -- Find out if we're doing src or binary overrides - SELECT id INTO STRICT v_src_override_id FROM override_type WHERE type = 'dsc'; - IF OLD.type = v_src_override_id THEN - -- Doing a src_association link - INSERT INTO audit.package_changes - (package, version, architecture, suite, event, priority, component, section) - SELECT NEW.package, source.version, 'source', suite.suite_name, 'U', v_priority, v_component, v_section - FROM source - JOIN src_associations ON (source.id = src_associations.source) - JOIN suite ON (suite.id = src_associations.suite) - WHERE source.source = NEW.package AND src_associations.suite = NEW.suite; - ELSE - -- Doing a bin_association link - INSERT INTO audit.package_changes - (package, version, architecture, suite, event, priority, component, section) - SELECT NEW.package, binaries.version, architecture.arch_string, suite.suite_name, 'U', v_priority, v_component, v_section - FROM binaries - JOIN bin_associations ON (binaries.id = bin_associations.bin) - JOIN architecture ON (architecture.id = binaries.architecture) - JOIN suite ON (suite.id = bin_associations.suite) - WHERE binaries.package = NEW.package AND bin_associations.suite = NEW.suite; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER -SET search_path = public, pg_temp"""); - - c.execute("CREATE TRIGGER trigger_bin_associations_audit AFTER INSERT OR DELETE ON bin_associations FOR EACH ROW EXECUTE PROCEDURE trigger_binsrc_assoc_update()") - c.execute("CREATE TRIGGER trigger_src_associations_audit AFTER INSERT OR DELETE ON src_associations FOR EACH ROW EXECUTE PROCEDURE trigger_binsrc_assoc_update()") - c.execute("CREATE TRIGGER trigger_override_audit AFTER UPDATE ON override FOR EACH ROW EXECUTE PROCEDURE trigger_override_update()") - - c.execute("UPDATE config SET value = '67' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError, msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 67, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update68.py b/dak/dakdb/update68.py deleted file mode 100644 index ec5b43d0..00000000 --- a/dak/dakdb/update68.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Drop unused plperl routine and language and plpythonu language - -@contact: Debian FTP Master -@copyright: 2011 Mark Hymers -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -import psycopg2 -from daklib.dak_exceptions import DBUpdateError -from daklib.config import Config - -################################################################################ -def do_update(self): - """ - Drop unused plperl routine and language and plpythonu language - """ - print __doc__ - try: - cnf = Config() - - c = self.db.cursor() - - c.execute("DROP FUNCTION debversion_compare_single(text,text)") - c.execute("DROP LANGUAGE plperl"); - c.execute("DROP LANGUAGE plpythonu"); - - c.execute("UPDATE config SET value = '68' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError('Unable to apply sick update 68, rollback issued. Error message : %s' % (str(msg))) diff --git a/dak/dakdb/update7.py b/dak/dakdb/update7.py deleted file mode 100644 index bfd88670..00000000 --- a/dak/dakdb/update7.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Moving suite config into DB - -@contact: Debian FTP Master -@copyright: 2008 Michael Casadevall -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later - -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -# * Ganneff ponders how to best write the text to -devel. (need to tell em in -# case they find more bugs). "We fixed the fucking idiotic broken implementation -# to be less so" is probably not the nicest, even if perfect valid, way to say so - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError -from daklib.utils import get_conf - -################################################################################ - -def do_update(self): - print "Moving some of the suite config into the DB" - Cnf = get_conf() - - try: - c = self.db.cursor() - - c.execute("ALTER TABLE suite ADD COLUMN untouchable BOOLEAN NOT NULL DEFAULT FALSE;") - query = "UPDATE suite SET untouchable = TRUE WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - untouchable = Cnf.find("Suite::%s::Untouchable" % (suite)) - if not untouchable: - continue - print "[Untouchable] Processing suite %s" % (suite) - suite = suite.lower() - c.execute(query, [suite]) - - - c.execute("ALTER TABLE suite ADD COLUMN announce text NOT NULL DEFAULT 'debian-devel-changes@lists.debian.org';") - query = "UPDATE suite SET announce = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - announce_list = Cnf.find("Suite::%s::Announce" % (suite)) - print "[Announce] Processing suite %s" % (suite) - suite = suite.lower() - c.execute(query, [announce_list, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN codename text;") - query = "UPDATE suite SET codename = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - codename = Cnf.find("Suite::%s::CodeName" % (suite)) - print "[Codename] Processing suite %s" % (suite) - suite = suite.lower() - c.execute(query, [codename, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN overridecodename text;") - query = "UPDATE suite SET overridecodename = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - codename = Cnf.find("Suite::%s::OverrideCodeName" % (suite)) - print "[OverrideCodeName] Processing suite %s" % (suite) - suite = suite.lower() - c.execute(query, [codename, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN validtime integer NOT NULL DEFAULT 604800;") - query = "UPDATE suite SET validtime = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - validtime = Cnf.find("Suite::%s::ValidTime" % (suite)) - print "[ValidTime] Processing suite %s" % (suite) - if not validtime: - validtime = 0 - suite = suite.lower() - c.execute(query, [validtime, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN priority integer NOT NULL DEFAULT 0;") - query = "UPDATE suite SET priority = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - priority = Cnf.find("Suite::%s::Priority" % (suite)) - print "[Priority] Processing suite %s" % (suite) - if not priority: - priority = 0 - suite = suite.lower() - c.execute(query, [priority, suite]) - - - c.execute("ALTER TABLE suite ADD COLUMN notautomatic BOOLEAN NOT NULL DEFAULT FALSE;") - query = "UPDATE suite SET notautomatic = TRUE WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - notautomatic = Cnf.find("Suite::%s::NotAutomatic" % (suite)) - print "[NotAutomatic] Processing suite %s" % (suite) - if not notautomatic: - continue - suite = suite.lower() - c.execute(query, [suite]) - - c.execute("UPDATE config SET value = '7' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to appy suite config updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update8.py b/dak/dakdb/update8.py deleted file mode 100644 index 6bacd4ed..00000000 --- a/dak/dakdb/update8.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -More suite config into the DB - -@contact: Debian FTP Master -@copyright: 2008 Michael Casadevall -@copyright: 2009 Joerg Jaspert -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -# * Ganneff ponders how to best write the text to -devel. (need to tell em in -# case they find more bugs). "We fixed the fucking idiotic broken implementation -# to be less so" is probably not the nicest, even if perfect valid, way to say so - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError -from daklib.utils import get_conf - -################################################################################ - -def do_update(self): - print "Moving some more of the suite config into the DB" - Cnf = get_conf() - - try: - c = self.db.cursor() - - c.execute("ALTER TABLE suite ADD COLUMN copychanges TEXT;") - query = "UPDATE suite SET copychanges = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - copychanges = Cnf.find("Suite::%s::CopyChanges" % (suite)) - print "[CopyChanges] Processing suite %s" % (suite) - if not copychanges: - continue - suite = suite.lower() - c.execute(query, [copychanges, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN copydotdak TEXT;") - query = "UPDATE suite SET copydotdak = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - copydotdak = Cnf.find("Suite::%s::CopyDotDak" % (suite)) - print "[CopyDotDak] Processing suite %s" % (suite) - if not copydotdak: - continue - suite = suite.lower() - c.execute(query, [copydotdak, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN commentsdir TEXT;") - query = "UPDATE suite SET commentsdir = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - commentsdir = Cnf.find("Suite::%s::CommentsDir" % (suite)) - print "[CommentsDir] Processing suite %s" % (suite) - if not commentsdir: - continue - suite = suite.lower() - c.execute(query, [commentsdir, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN overridesuite TEXT;") - query = "UPDATE suite SET overridesuite = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - overridesuite = Cnf.find("Suite::%s::OverrideSuite" % (suite)) - print "[OverrideSuite] Processing suite %s" % (suite) - if not overridesuite: - continue - suite = suite.lower() - c.execute(query, [overridesuite, suite]) - - c.execute("ALTER TABLE suite ADD COLUMN changelogbase TEXT;") - query = "UPDATE suite SET changelogbase = %s WHERE suite_name = %s" #: Update query - for suite in Cnf.subtree("Suite").list(): - changelogbase = Cnf.find("Suite::%s::ChangeLogBase" % (suite)) - print "[ChangeLogBase] Processing suite %s" % (suite) - if not changelogbase: - continue - suite = suite.lower() - c.execute(query, [changelogbase, suite]) - - c.execute("UPDATE config SET value = '8' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply suite config updates, rollback issued. Error message : %s" % (str(msg))) diff --git a/dak/dakdb/update9.py b/dak/dakdb/update9.py deleted file mode 100644 index bbdd2122..00000000 --- a/dak/dakdb/update9.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python -# coding=utf8 - -""" -Pending contents disinguished by arch - -@contact: Debian FTP Master -@copyright: 2008 Michael Casadevall -@copyright: 2009 Mike O'Connor -@license: GNU General Public License version 2 or later -""" - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -################################################################################ - -# * Ganneff ponders how to best write the text to -devel. (need to tell em in -# case they find more bugs). "We fixed the fucking idiotic broken implementation -# to be less so" is probably not the nicest, even if perfect valid, way to say so - -################################################################################ - -import psycopg2 -import time -from daklib.dak_exceptions import DBUpdateError -from daklib.utils import get_conf - -################################################################################ - -def do_update(self): - print "pending_contents should distinguish by arch" - Cnf = get_conf() - - try: - c = self.db.cursor() - - c.execute("DELETE FROM pending_content_associations") - c.execute("""ALTER TABLE pending_content_associations - ADD COLUMN architecture integer NOT NULL""") - c.execute("""ALTER TABLE ONLY pending_content_associations - ADD CONSTRAINT pending_content_assiciations_arch - FOREIGN KEY (architecture) - REFERENCES architecture(id) - ON DELETE CASCADE""") - c.execute("UPDATE config SET value = '9' WHERE name = 'db_revision'") - self.db.commit() - - except psycopg2.ProgrammingError as msg: - self.db.rollback() - raise DBUpdateError("Unable to apply suite config updates, rollback issued. Error message : %s" % (str(msg)))