From: Joerg Jaspert Date: Fri, 30 Oct 2009 09:10:17 +0000 (+0100) Subject: Merge commit 'stew/contents' into merge X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=6c695061a5552aad04f8959efa510e05588fd063;p=dak.git Merge commit 'stew/contents' into merge * commit 'stew/contents': bootstrap_bin working merge from master with sqla Signed-off-by: Joerg Jaspert --- 6c695061a5552aad04f8959efa510e05588fd063 diff --cc dak/dakdb/update17.py index 00000000,0d7efa9e..c4e0f245 mode 000000,100644..100755 --- a/dak/dakdb/update17.py +++ b/dak/dakdb/update17.py @@@ -1,0 -1,62 +1,63 @@@ + #!/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);""" ) + - self.db.commit() ++ c.execute("UPDATE config SET value = '17' WHERE name = 'db_revision'") ++ self.db.commit() + + except psycopg2.ProgrammingError, msg: + self.db.rollback() + raise DBUpdateError, "Unable to apply process-new update 17, rollback issued. Error message : %s" % (str(msg)) + + + diff --cc daklib/config.py index 09df17bb,b98a6fc9..c2d2fe55 --- a/daklib/config.py +++ b/daklib/config.py @@@ -35,7 -35,8 +35,7 @@@ from singleton import Singleto ################################################################################ - default_config = "/etc/dak/dak.conf" -#default_config = "/etc/dak/dak.conf" -default_config = "/home/stew/etc/dak/dak.conf" #: default dak config, defines host properties ++default_config = "/etc/dak/dak.conf" #: default dak config, defines host properties def which_conf_file(Cnf): res = socket.gethostbyaddr(socket.gethostname()) diff --cc daklib/dbconn.py index 9b37af70,1a1902d5..49468a75 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@@ -633,28 -635,14 +635,14 @@@ def insert_content_paths(binary_id, ful # Insert paths pathcache = {} for fullpath in fullpaths: - # Get the necessary IDs ... - (path, file) = os.path.split(fullpath) - - filepath_id = get_or_set_contents_path_id(path, session) - filename_id = get_or_set_contents_file_id(file, session) - - pathcache[fullpath] = (filepath_id, filename_id) + if fullpath.startswith( './' ): + fullpath = fullpath[2:] - + - for fullpath, dat in pathcache.items(): - ca = ContentAssociation() - ca.binary_id = binary_id - ca.filepath_id = dat[0] - ca.filename_id = dat[1] - session.add(ca) + session.execute( "INSERT INTO bin_contents ( file, binary_id ) VALUES ( :filename, :id )", { 'filename': fullpath, 'id': binary_id} ) - # Only commit if we set up the session ourself + session.commit() if privatetrans: - session.commit() session.close() - else: - session.flush() - return True except: diff --cc daklib/utils.py index a6660ae1,21446fbe..b0e9a0d7 --- a/daklib/utils.py +++ b/daklib/utils.py @@@ -304,13 -305,13 +305,13 @@@ def check_hash(where, files, hashname, try: try: file_handle = open_file(f) -- ++ # Check for the hash entry, to not trigger a KeyError. if not files[f].has_key(hash_key(hashname)): rejmsg.append("%s: misses %s checksum in %s" % (f, hashname, where)) continue -- ++ # Actually check the hash for correctness. if hashfunc(file_handle) != files[f][hash_key(hashname)]: rejmsg.append("%s: %s check failed in %s" % (f, hashname,