X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=contrib%2Fhack.4;fp=contrib%2Fhack.4;h=a1e40ea91327256e2019b029dd78cffc0dfb7624;hb=15046787dd73ccc528fbae8a89bdec63507f2bb9;hp=0000000000000000000000000000000000000000;hpb=6d853443b6287c87e2c31e3fe7de6c22c4c06109;p=dak.git diff --git a/contrib/hack.4 b/contrib/hack.4 new file mode 100755 index 00000000..a1e40ea9 --- /dev/null +++ b/contrib/hack.4 @@ -0,0 +1,126 @@ +#!/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);