#!/usr/bin/env python # Whee! Fix testing fubarity # Copyright (C) 2000, 2001 James Troup # $Id: hack.4,v 1.1 2001-03-14 20:32:05 troup Exp $ # 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 ################################################################################ # Computer games don't affect kids. I mean if Pacman affected our generation as # kids, we'd all run around in a darkened room munching pills and listening to # repetitive music. # -- Unknown ################################################################################ import pg, sys, os, string, stat import utils, db_access import apt_pkg; ################################################################################ Cnf = None; projectB = None; ################################################################################ def main (): global Cnf, projectB, db_files, waste, excluded; apt_pkg.init(); Cnf = apt_pkg.newConfiguration(); apt_pkg.ReadConfigFileISC(Cnf,utils.which_conf_file()); Arguments = [('d',"debug","Christina::Options::Debug", "IntVal"), ('h',"help","Christina::Options::Help"), ('v',"version","Christina::Options::Version")]; apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); projectB = pg.connect('projectb', 'localhost'); christina = pg.connect('christina', 'localhost'); db_access.init(Cnf, projectB); # Source without dsc_file entries q = projectB.query("SELECT s.id, f.id, l.path, f.filename FROM source s, files f, location l WHERE NOT EXISTS (SELECT df.* FROM dsc_files df WHERE df.source = s.id) and f.id = s.file and l.id = f.location;"); ql = q.getresult(); projectB.query("BEGIN WORK;") for i in ql: source_id = i[0]; dsc_file_id = i[1]; dsc_filename = i[2] + i[3]; dsc_dir = os.path.dirname(i[3]); # We get the .dsc for free print "INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, dsc_file_id); projectB.query("INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, dsc_file_id)); # Then work out the files.id of the other files dsc = utils.parse_changes(dsc_filename, 0); dsc_files = utils.build_file_list(dsc, 1); for dsc_file in dsc_files.keys(): if dsc_file[-4:] != ".dsc": filename = dsc_dir + '/' + dsc_file; x = projectB.query("SELECT id FROM files WHERE filename = '%s'" % (filename)); xl = x.getresult(); if len(xl) != 1: # No? probably s/woody/potato/ BS.. try again with ~ and only the filename x = projectB.query("SELECT id FROM files WHERE filename ~ '%s$'" % (utils.regex_safe(dsc_file))); xl = x.getresult(); if len(xl) != 1: print filename print xl sys.exit(9); print "INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, xl[0][0]); projectB.query("INSERT INTO dsc_files (source, file) VALUES (%s, %s)" % (source_id, xl[0][0])); projectB.query("COMMIT WORK;"); sys.exit(0); ####################################################################################### if __name__ == '__main__': main() # source_id = i[0]; # source_name = i[1]; # source_version = i[2]; # print "SELECT df.file FROM dsc_files df, source s WHERE s.source = '%s' AND s.version = '%s' AND df.source = s.id;" % (source_name, source_version); # x = christina.query("SELECT df.file FROM dsc_files df, source s WHERE s.source = '%s' AND s.version = '%s' AND df.source = s.id;" % (source_name, source_version)); # xl = x.getresult(); # if len(xl) < 2 or len(xl) > 3: # print xl # continue; # #sys.exit(9); # for j in xl: # df_source = source_id; # print "SELECT filename, location FROM files WHERE id = %s;" % (j[0]); # x1 = christina.query("SELECT filename, location FROM files WHERE id = %s;" % (j[0])); # x1l = x1.getresult(); # if len(x1l) != 1: # print x1l # sys.exit(9); # filename = x1l[0][0]; # location = x1l[0][1]; # print "SELECT id FROM files WHERE filename = '%s' AND location = %s;" % (filename, location); # x2 = projectB.query("SELECT id FROM files WHERE filename = '%s' AND location = %s;" % (filename, location)); # x2l = x2.getresult(); # if len(x2l) != 1: # print x2l # sys.exit(9); # df_file = x2l[0][0]; # projectB.query("INSERT INTO dsc_files (source, file) VALUES (%s, %s);" % (df_source, df_file)); # print "INSERT INTO dsc_files (source, file) VALUES (%s, %s);" % (df_source, df_file);