From: Niels Thykier Date: Thu, 11 Jun 2015 11:36:04 +0000 (+0200) Subject: Merge branch 'master' into auto-decruft-passive X-Git-Url: https://git.decadent.org.uk/gitweb/?p=dak.git;a=commitdiff_plain;h=321e39b64490fb825769f7ed9f6534cebeedd923;hp=7d548bdf9a43db4d42bf5623f2acc6a7c2cc727d Merge branch 'master' into auto-decruft-passive Conflicts: dak/generate_filelist.py --- diff --git a/config/debian-security/cron.unchecked b/config/debian-security/cron.unchecked index fc0f5b5c..7e2bb29a 100755 --- a/config/debian-security/cron.unchecked +++ b/config/debian-security/cron.unchecked @@ -85,7 +85,6 @@ ${scriptsdir}/update-buildd-archive ${base}/build-queues ${incoming}/debian-secu if [ "x${dopolicy}x" = "xtruex" ]; then # We had something approved from a policy queue, push out new archive dak dominate - #dak generate-filelist cd $configdir $configdir/map.sh dak generate-packages-sources2 -a security diff --git a/config/debian-security/dak.conf b/config/debian-security/dak.conf index 901f9ac5..e1869d3b 100644 --- a/config/debian-security/dak.conf +++ b/config/debian-security/dak.conf @@ -154,7 +154,6 @@ Dir Override "/srv/security-master.debian.org/scripts/override/"; Upload "/srv/queued/ftpmaster/"; TempPath "/srv/security-master.debian.org/tmp"; - Holding "/srv/security-master.debian.org/queue/holding/"; Done "/srv/security-master.debian.org/queue/done/"; Reject "/srv/security-master.debian.org/queue/reject/"; diff --git a/config/debian/cron.dinstall b/config/debian/cron.dinstall index 701754ca..311207af 100755 --- a/config/debian/cron.dinstall +++ b/config/debian/cron.dinstall @@ -251,14 +251,6 @@ GO=( ) stage $GO -GO=( - FUNC="filelist" - TIME="generate-filelist" - ARGS="" - ERR="" -) -#stage $GO - GO=( FUNC="fingerprints" TIME="import-keyring" diff --git a/config/debian/dak.conf b/config/debian/dak.conf index cf0ef40d..e5b696ac 100644 --- a/config/debian/dak.conf +++ b/config/debian/dak.conf @@ -221,7 +221,6 @@ Dir UrgencyLog "/srv/release.debian.org/britney/input/urgencies/"; TempPath "/srv/ftp-master.debian.org/tmp/"; BTSVersionTrack "/srv/ftp-master.debian.org/queue/bts_version_track/"; - Holding "/srv/ftp-master.debian.org/queue/holding/"; Done "/srv/ftp-master.debian.org/queue/done/"; Reject "/srv/ftp-master.debian.org/queue/reject/"; }; diff --git a/config/debian/dinstall.functions b/config/debian/dinstall.functions index 51ac4b97..f1693a32 100644 --- a/config/debian/dinstall.functions +++ b/config/debian/dinstall.functions @@ -107,11 +107,6 @@ function dominate() { dak dominate } -function filelist() { - log "Generating file lists for apt-ftparchive" - dak generate-filelist -} - function fingerprints() { log "Updating fingerprints" dak import-keyring -L /srv/keyring.debian.org/keyrings/debian-keyring.gpg diff --git a/dak/dak.py b/dak/dak.py index 18be3cef..c6c979a7 100755 --- a/dak/dak.py +++ b/dak/dak.py @@ -84,14 +84,10 @@ def init(): "export a suite to a flat directory structure"), ("make-pkg-file-mapping", "Generate package <-> file mapping"), - ("generate-filelist", - "Generate file lists for apt-ftparchive"), ("generate-releases", "Generate Release files"), - ("generate-packages-sources", - "Generate Packages/Sources files"), ("generate-packages-sources2", - "Generate Packages/Sources files [directly from database]"), + "Generate Packages/Sources files"), ("contents", "Generate content files"), ("metadata", 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))) diff --git a/dak/generate_packages_sources.py b/dak/generate_packages_sources.py deleted file mode 100755 index 3e01da23..00000000 --- a/dak/generate_packages_sources.py +++ /dev/null @@ -1,272 +0,0 @@ -#!/usr/bin/env python - -""" Generate Packages/Sources files - -@contact: Debian FTPMaster -@copyright: 2000, 2001, 2002, 2006 James Troup -@copyright: 2009 Mark Hymers -@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 os -import os.path -import sys -import apt_pkg -from tempfile import mkstemp, mkdtemp -import commands -from multiprocessing import Pool, TimeoutError - -from daklib import daklog -from daklib.dbconn import * -from daklib.config import Config - -################################################################################ - -Options = None #: Commandline arguments parsed into this -Logger = None #: Our logging object -results = [] #: Results of the subprocesses - -################################################################################ - -def usage (exit_code=0): - print """Usage: dak generate-packages-sources [OPTIONS] -Generate the Packages/Sources files - - -s, --suite=SUITE(s) process this suite - Default: All suites not marked 'untouchable' - -f, --force Allow processing of untouchable suites - CAREFUL: Only to be used at point release time! - -h, --help show this help and exit - -SUITE can be a space seperated list, e.g. - --suite=unstable testing - """ - - sys.exit(exit_code) - -################################################################################ - -def generate_packages_sources(arch, suite, tmppath): - """ - Generate Packages/Sources files with apt-ftparchive for the given suite/arch - - @type suite: string - @param suite: Suite name - - @type arch: string - @param arch: Architecture name - - @type tmppath: string - @param tmppath: The temporary path to work ing - """ - - DAILY_APT_CONF=""" -Dir -{ - ArchiveDir "/srv/ftp-master.debian.org/ftp/"; - OverrideDir "/srv/ftp-master.debian.org/scripts/override/"; - CacheDir "/srv/ftp-master.debian.org/database/"; -}; - -Default -{ - Packages::Compress "bzip2 gzip"; - Sources::Compress "bzip2 gzip"; - Contents::Compress "gzip"; - DeLinkLimit 0; - MaxContentsChange 25000; - FileMode 0664; -} - -TreeDefault -{ - Contents::Header "/srv/ftp-master.debian.org/dak/config/debian/Contents.top"; -}; - -""" - - apt_trees={} - apt_trees["di"]={} - - apt_trees["oldstable"]=""" -tree "dists/oldstable" -{ - FileList "/srv/ftp-master.debian.org/database/dists/oldstable_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp-master.debian.org/database/dists/oldstable_$(SECTION)_source.list"; - Sections "main contrib non-free"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.$(SECTION)"; - ExtraOverride "override.squeeze.extra.$(SECTION)"; - SrcOverride "override.squeeze.$(SECTION).src"; -}; -""" - - apt_trees["di"]["oldstable"]=""" -tree "dists/oldstable/main" -{ - FileList "/srv/ftp-master.debian.org/database/dists/oldstable_main_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; - -tree "dists/oldstable/non-free" -{ - FileList "/srv/ftp-master.debian.org/database/dists/oldstable_non-free_$(SECTION)_binary-$(ARCH).list"; - Sections "debian-installer"; - Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; - BinCacheDB "packages-debian-installer-$(ARCH).db"; - Packages::Extensions ".udeb"; - %(contentsline)s -}; -""" - - - cnf = Config() - try: - # Write apt.conf - (ac_fd, ac_name) = mkstemp(dir=tmppath, suffix=suite, prefix=arch) - os.write(ac_fd, DAILY_APT_CONF) - # here we want to generate the tree entries - os.write(ac_fd, apt_trees[suite] % {'arch': arch}) - # this special casing needs to go away, but this whole thing may just want an - # aptconfig class anyways - if arch != 'source': - if arch == 'hurd-i386' and suite == 'experimental': - pass - elif apt_trees["di"].has_key(suite): - if arch == "amd64": - os.write(ac_fd, apt_trees["di"][suite] % - {'arch': arch, 'contentsline': 'Contents "$(DIST)/../Contents-udeb";'}) - else: - os.write(ac_fd, apt_trees["di"][suite] % {'arch': arch, 'contentsline': ''}) - os.close(ac_fd) - - print "Going to run apt-ftparchive for %s/%s" % (arch, suite) - # Run apt-ftparchive generate - # We dont want to add a -q or -qq here, this output should go into our logs, sometimes - # it has errormessages we like to see - os.environ['GZIP'] = '--rsyncable' - os.chdir(tmppath) - (result, output) = commands.getstatusoutput('apt-ftparchive -o APT::FTPArchive::Contents=off -o APT::FTPArchive::SHA512=off generate %s' % os.path.basename(ac_name)) - sn="a-f %s,%s: " % (suite, arch) - print sn + output.replace('\n', '\n%s' % (sn)) - return result - - # Clean up any left behind files - finally: - if ac_fd: - try: - os.close(ac_fd) - except OSError: - pass - - if ac_name: - try: - os.unlink(ac_name) - except OSError: - pass - -def sname(arch): - return arch.arch_string - -def get_result(arg): - global results - if arg: - results.append(arg) - -######################################################################## -######################################################################## - -def main (): - global Options, Logger, results - - cnf = Config() - - for i in ["Help", "Suite", "Force"]: - if not cnf.has_key("Generate-Packages-Sources::Options::%s" % (i)): - cnf["Generate-Packages-Sources::Options::%s" % (i)] = "" - - Arguments = [('h',"help","Generate-Packages-Sources::Options::Help"), - ('s',"suite","Generate-Packages-Sources::Options::Suite"), - ('f',"force","Generate-Packages-Sources::Options::Force")] - - suite_names = apt_pkg.parse_commandline(cnf.Cnf, Arguments, sys.argv) - Options = cnf.subtree("Generate-Packages-Sources::Options") - - if Options["Help"]: - usage() - - Logger = daklog.Logger('generate-packages-sources') - - session = DBConn().session() - - if Options["Suite"]: - # Something here - suites = [] - for s in suite_names: - suite = get_suite(s.lower(), session) - if suite: - suites.append(suite) - else: - print "cannot find suite %s" % s - Logger.log(['cannot find suite %s' % s]) - else: - suites=session.query(Suite).filter(Suite.untouchable == False).all() - - startdir = os.getcwd() - os.chdir(cnf["Dir::TempPath"]) - - broken=[] - # For each given suite, each architecture, run one apt-ftparchive - for s in suites: - results=[] - # Setup a multiprocessing Pool. As many workers as we have CPU cores. - pool = Pool() - arch_list=get_suite_architectures(s.suite_name, skipsrc=False, skipall=False, session=session) - Logger.log(['generating output for Suite %s, Architectures %s' % (s.suite_name, map(sname, arch_list))]) - for a in arch_list: - pool.apply_async(generate_packages_sources, (a.arch_string, s.suite_name, cnf["Dir::TempPath"]), callback=get_result) - - # No more work will be added to our pool, close it and then wait for all to finish - pool.close() - pool.join() - - if len(results) > 0: - Logger.log(['Trouble, something with a-f broke, resultcodes: %s' % (results)]) - print "Trouble, something with a-f broke, resultcodes: %s" % (results) - sys.exit(1) - - os.chdir(startdir) - # this script doesn't change the database - session.close() - Logger.close() - -####################################################################################### - -if __name__ == '__main__': - main() diff --git a/dak/new_security_install.py b/dak/new_security_install.py index aa2928db..7d4603d5 100755 --- a/dak/new_security_install.py +++ b/dak/new_security_install.py @@ -99,8 +99,6 @@ def _do_Approve(): # 3. Run all the steps that are needed to publish the changed archive print "Domination" spawn("dak dominate") - # print "Generating filelist for apt-ftparchive" - # spawn("dak generate-filelist") print "Updating Packages and Sources files... This may take a while, be patient" spawn("/srv/security-master.debian.org/dak/config/debian-security/map.sh") spawn("dak generate-packages-sources2 -a security") diff --git a/daklib/holding.py b/daklib/holding.py deleted file mode 100644 index 6c9ce570..00000000 --- a/daklib/holding.py +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env python -# vim:set et sw=4: - -""" -Simple singleton class for storing info about Holding directory - -@contact: Debian FTP Master -@copyright: 2001 - 2006 James Troup -@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 os -from errno import ENOENT, EEXIST, EACCES -import shutil - -from config import Config -from utils import fubar - -############################################################################### - -class Holding(object): - __shared_state = {} - - def __init__(self, *args, **kwargs): - self.__dict__ = self.__shared_state - - if not getattr(self, 'initialised', False): - self.initialised = True - - self.in_holding = {} - self.holding_dir = Config()["Dir::Holding"] - # ftptrainees haven't access to holding, use a temp directory instead - if not os.access(self.holding_dir, os.W_OK): - self.holding_dir = Config()["Dir::TempPath"] - - def chdir_to_holding(self): - os.chdir(self.holding_dir) - - def copy_to_holding(self, filename): - base_filename = os.path.basename(filename) - - dest = os.path.join(self.holding_dir, base_filename) - try: - fd = os.open(dest, os.O_RDWR | os.O_CREAT | os.O_EXCL, 0o640) - os.close(fd) - except OSError as e: - # Shouldn't happen, but will if, for example, someone lists a - # file twice in the .changes. - if e.errno == EEXIST: - return "%s: already exists in holding area; can not overwrite." % (base_filename) - - try: - shutil.copy(filename, dest) - except IOError as e: - # In either case (ENOENT or EACCES) we want to remove the - # O_CREAT | O_EXCLed ghost file, so add the file to the list - # of 'in holding' even if it's not the real file. - if e.errno == ENOENT: - os.unlink(dest) - return "%s: can not copy to holding area: file not found." % (base_filename) - - elif e.errno == EACCES: - os.unlink(dest) - return "%s: can not copy to holding area: read permission denied." % (base_filename) - - self.in_holding[base_filename] = "" - - return None - - def clean(self): - cwd = os.getcwd() - os.chdir(self.holding_dir) - for f in self.in_holding.keys(): - # TODO: Sanitize path in a much better manner... - if os.path.exists(f): - if f.find('/') != -1: - fubar("WTF? clean_holding() got a file ('%s') with / in it!" % (f)) - else: - os.unlink(f) - self.in_holding = {} - os.chdir(cwd) - diff --git a/daklib/lists.py b/daklib/lists.py deleted file mode 100644 index 5766371c..00000000 --- a/daklib/lists.py +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/python - -""" -Helper functions for list generating commands (Packages, Sources). - -@contact: Debian FTP Master -@copyright: 2009-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 - -################################################################################ - -from dbconn import get_architecture - -def fetch(query, args, session): - for (id, path, filename) in session.execute(query, args).fetchall(): - yield (id, path + filename) - -def getSources(suite, component, session, timestamp = None): - ''' - Calculates the sources in suite and component optionally limited by - sources newer than timestamp. Returns a generator that yields a - tuple of source id and full pathname to the dsc file. See function - writeSourceList() in dak/generate_filelist.py for an example that - uses this function. - ''' - extra_cond = "" - if timestamp: - extra_cond = "AND extract(epoch from sa.created) > %d" % timestamp - query = """ - SELECT s.id, archive.path || 'pool/', c.name || '/' || f.filename - FROM source s - JOIN src_associations sa - ON s.id = sa.source AND sa.suite = :suite %s - JOIN suite - ON sa.suite = suite.id - JOIN archive - ON suite.archive_id = archive.id - JOIN files f - ON s.file = f.id - JOIN files_archive_map fam - ON fam.file_id = f.id AND fam.component_id = :component - JOIN component c - ON fam.component_id = c.id - ORDER BY filename - """ % extra_cond - args = { 'suite': suite.suite_id, - 'component': component.component_id } - return fetch(query, args, session) - -def getArchAll(suite, component, architecture, type, session, timestamp = None): - ''' - Calculates all binaries in suite and component of architecture 'all' (and - only 'all') and type 'deb' or 'udeb' optionally limited to binaries newer - than timestamp. Returns a generator that yields a tuple of binary id and - full pathname to the u(deb) file. See function writeAllList() in - dak/generate_filelist.py for an example that uses this function. - ''' - query = suite.clone(session).binaries. \ - filter_by(architecture = architecture, binarytype = type) - if timestamp is not None: - extra_cond = 'extract(epoch from bin_associations.created) > %d' % timestamp - query = query.filter(extra_cond) - for binary in query: - yield (binary.binary_id, binary.poolfile.fullpath) - -def getBinaries(suite, component, architecture, type, session, timestamp = None): - ''' - Calculates the binaries in suite and component of architecture and - type 'deb' or 'udeb' optionally limited to binaries newer than - timestamp. Returns a generator that yields a tuple of binary id and - full pathname to the u(deb) file. See function writeBinaryList() in - dak/generate_filelist.py for an example that uses this function. - ''' - extra_cond = "" - if timestamp: - extra_cond = "AND extract(epoch from ba.created) > %d" % timestamp - query = """ -CREATE TEMP TABLE b_candidates ( - id integer, - source integer, - file integer, - architecture integer); - -INSERT INTO b_candidates (id, source, file, architecture) - SELECT b.id, b.source, b.file, b.architecture - FROM binaries b - JOIN bin_associations ba ON b.id = ba.bin - WHERE b.type = :type AND ba.suite = :suite AND - b.architecture IN (:arch_all, :architecture) %s; - -CREATE TEMP TABLE gf_candidates ( - id integer, - filename text, - path text, - architecture integer, - src integer, - source text); - -INSERT INTO gf_candidates (id, filename, path, architecture, src, source) - SELECT bc.id, c.name || '/' || f.filename, archive.path || 'pool/' , bc.architecture, bc.source as src, s.source - FROM b_candidates bc - JOIN source s ON bc.source = s.id - JOIN files f ON bc.file = f.id - JOIN files_archive_map fam ON f.id = fam.file_id - JOIN component c ON fam.component_id = c.id - JOIN archive ON fam.archive_id = archive.id - JOIN suite ON suite.archive_id = archive.id - - WHERE c.id = :component AND suite.id = :suite; - -WITH arch_any AS - - (SELECT id, path, filename FROM gf_candidates - WHERE architecture <> :arch_all), - - arch_all_with_any AS - (SELECT id, path, filename FROM gf_candidates - WHERE architecture = :arch_all AND - src IN (SELECT src FROM gf_candidates WHERE architecture <> :arch_all)), - - arch_all_without_any AS - (SELECT id, path, filename FROM gf_candidates - WHERE architecture = :arch_all AND - source NOT IN (SELECT DISTINCT source FROM gf_candidates WHERE architecture <> :arch_all)), - - filelist AS - (SELECT * FROM arch_any - UNION - SELECT * FROM arch_all_with_any - UNION - SELECT * FROM arch_all_without_any) - - SELECT * FROM filelist ORDER BY filename - """ % extra_cond - args = { 'suite': suite.suite_id, - 'component': component.component_id, - 'architecture': architecture.arch_id, - 'arch_all': get_architecture('all', session).arch_id, - 'type': type } - return fetch(query, args, session) - diff --git a/daklib/queue.py b/daklib/queue.py index b0ce511c..14dc3148 100644 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -26,33 +26,15 @@ Queue utility functions for dak ############################################################################### -import errno import os -import stat -import sys -import time -import apt_inst -import apt_pkg import utils -import commands -import shutil -import textwrap from types import * -from sqlalchemy.sql.expression import desc -from sqlalchemy.orm.exc import NoResultFound from dak_exceptions import * from changes import * from regexes import * from config import Config -from holding import Holding -from urgencylog import UrgencyLog from dbconn import * -from summarystats import SummaryStats -from utils import parse_changes, check_dsc_files -from textutils import fix_maintainer -from lintian import parse_lintian_output, generate_reject_messages -from contents import UnpackedSource ################################################################################ diff --git a/docs/README.config b/docs/README.config index 0e9dbd33..5fad734c 100644 --- a/docs/README.config +++ b/docs/README.config @@ -200,10 +200,6 @@ Dir //// is mainly used for britney (the testing script). // UrgencyLog "/srv/dak/testing/urgencies/"; - //// Holding (required): Directory to use for temporary storage during - //// process-upload - Holding "/srv/dak/queue/holding/"; - //// Done (required): Directory in which to store processed .changes files Done "/srv/dak/queue/done/"; diff --git a/docs/README.stable-point-release b/docs/README.stable-point-release index e395adf9..3b98f2dd 100644 --- a/docs/README.stable-point-release +++ b/docs/README.stable-point-release @@ -4,10 +4,10 @@ Rough Guide to doing Stable Point Releases in Debian - sudo to dak - bash: suite=stable -suitename=wheezy +suitename=jessie pusuite=proposed-updates -oldrev=7.6 -newrev=7.7 +oldrev=8.0 +newrev=8.1 export SCRIPTVARS=/srv/ftp-master.debian.org/dak/config/debian/vars . $SCRIPTVARS . "${configdir}/common" @@ -51,9 +51,9 @@ dak control-suite --force --add testing