From: Joerg Jaspert Date: Thu, 19 Feb 2009 20:53:26 +0000 (+0100) Subject: suite_architectures X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=8d5c033bb1cc903c5ce7dc87b4122ea441fa28a3;p=dak.git suite_architectures lets put the architectures into the database. Signed-off-by: Joerg Jaspert --- diff --git a/dak/dakdb/update4.py b/dak/dakdb/update4.py new file mode 100755 index 00000000..487b4792 --- /dev/null +++ b/dak/dakdb/update4.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +""" +Database Update Script - 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 + +################################################################################ + +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" + + 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).ValueList("Architectures") + suite = suite.lower() + for arch in architectures: + c.execute(query, suites[suite], archs[arch]) + + self.db.commit() + + except psycopg2.ProgrammingError, 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/update_db.py b/dak/update_db.py index 5d5fef47..92a02f72 100755 --- a/dak/update_db.py +++ b/dak/update_db.py @@ -1,7 +1,11 @@ #!/usr/bin/env python -""" Database Update Main Script """ +""" Database Update Main Script + +@contact: Debian FTP Master # Copyright (C) 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 @@ -26,7 +30,10 @@ ################################################################################ -import psycopg2, sys, fcntl, os +import psycopg2 +import sys +import fcntl +import os import apt_pkg import time import errno @@ -37,7 +44,7 @@ from daklib import utils Cnf = None projectB = None -required_database_schema = 3 +required_database_schema = 4 ################################################################################