X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=contrib%2Fhack.3;fp=contrib%2Fhack.3;h=0000000000000000000000000000000000000000;hb=0b523c435c01ba9f4c2fd258baabb792546b7836;hp=7e572ee77ffee2301f585504e354b6d2233805ba;hpb=8d194d3676a27055a8a5f35a53a162334a090d26;p=dak.git diff --git a/contrib/hack.3 b/contrib/hack.3 deleted file mode 100755 index 7e572ee7..00000000 --- a/contrib/hack.3 +++ /dev/null @@ -1,340 +0,0 @@ -#!/usr/bin/env python - -# Whee! Fix testing fubarity -# Copyright (C) 2000, 2001 James Troup -# $Id: hack.3,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); - - q = christina.query(""" -SELECT l.path, f.filename, b.package, b.version, b.architecture, a.arch_string - FROM bin_associations ba, binaries b, files f, location l, architecture a - WHERE ba.suite = 4 AND ba.bin = b.id AND f.id = b.file - AND f.location = l.id AND a.id = b.architecture;"""); - ql = q.getresult(); - - for i in ql: - filename = i[0] + i[1] - if not os.path.exists(filename): - package = i[2]; - testing_version = i[3]; - architecture_id = i[4]; - architecture = i[5]; - x = projectB.query("SELECT b.id, b.version FROM bin_associations ba, binaries b WHERE ba.suite = 5 AND ba.bin = b.id AND b.package = '%s' AND b.architecture = %s" % (package, architecture_id)); - xl = x.getresult(); - new_id = xl[0][0]; - unstable_version = xl[0][1]; - #print "%s [%s]: %s ==> %s" % (package, architecture, testing_version, unstable_version); - print "%s %s %s" % (package, unstable_version, architecture); - - sys.exit(0); - -####################################################################################### - -if __name__ == '__main__': - main() - - -# # And yes, I'm all too well aware of how appaling this code is; -# # I'm so not caring right now. - -# # Basic plan: From a known-good backup, get a list of what should -# # be in testing and search for every file. If it's not in the -# # pool, check in the morgue and double check the md5sum + size. - -# # Binaries - -# q = christina.query(""" -# SELECT l.path, f.filename, f.md5sum, f.size, b.id -# FROM bin_associations ba, binaries b, files f, location l -# WHERE ba.suite = 4 AND ba.bin = b.id AND f.id = b.file -# AND f.location = l.id;"""); -# ql = q.getresult(); - -# # q = christina.query(""" -# # SELECT l.path, f.filename, f.md5sum, f.size, s.id -# # FROM src_associations sa, source s, files f, location l, dsc_files df -# # WHERE sa.suite = 4 AND sa.source = s.id AND f.id = df.file AND f.location = l.id -# # AND df.source = s.id;"""); -# # ql = q.getresult(); - -# bad_ids = {}; -# count_total = 0; -# count_good = 0; -# count_recoverable = 0; -# for i in ql: -# filename = i[0] + i[1] -# count_total = count_total + 1; -# if not os.path.exists(filename): -# basename = os.path.basename(filename) -# morgue_filename = string.join([Cnf["Dir::Morgue"],Cnf["Rhona::MorgueSubDir"],basename],'/'); -# if os.path.exists(morgue_filename): -# db_md5sum = i[2]; -# db_size = int(i[3]); -# try: -# file = utils.open_file(morgue_filename, 'r'); -# except: -# sys.stderr.write("E: can't open '%s'.\n" % (morgue_filename)); -# continue; -# md5sum = apt_pkg.md5sum(file); -# size = os.stat(morgue_filename)[stat.ST_SIZE]; -# if md5sum != db_md5sum: -# #print "E: %s" % (filename); -# #sys.stderr.write("E: **WARNING** md5sum mismatch for '%s' ('%s' [current] vs. '%s' [db]).\n" % (morgue_filename, md5sum, db_md5sum)); -# continue; -# if size != db_size: -# #print "E: %s" % (filename); -# #sys.stderr.write("E: **WARNING** size mismatch for '%s' ('%s' [current] vs. '%s' [db]).\n" % (morgue_filename, size, db_size)); -# continue; -# bad_ids[i[4]] = ""; -# print "R: %s [%s]" % (filename, morgue_filename); -# ###utils.copy(morgue_filename, filename); -# count_recoverable = count_recoverable + 1; -# else: -# #print "E: %s" % (filename); -# baz = 0; -# else: -# #print "G: %s" % (filename); -# count_good = count_good + 1; - -# print "Good: %d / %d (%.2f%%)" % (count_good, count_total, (float(count_good)/count_total*100)); -# print "Recoverable: %d / %d (%.2f%%)" % (count_recoverable, count_total, (float(count_recoverable)/count_total*100)); -# count_bad = count_total - count_good - count_recoverable; -# print "Bad: %d / %d (%.2f%%)" % (count_bad, count_total, (float(count_bad)/count_total*100)); - -# sys.exit(0); -# projectB.query("BEGIN WORK;"); - -# for id in bad_ids.keys(): -# q = christina.query("SELECT f.filename, f.size, f.md5sum, f.location FROM files f, binaries b WHERE b.id = %d and b.file = f.id;" % (id)); -# ql = q.getresult(); -# if len(ql) != 1: -# sys.exit(9); -# for i in ql: -# filename = i[0]; -# size = i[1]; -# md5sum = i[2]; -# location_id = i[3]; -# files_id = db_access.get_files_id(filename, size, md5sum, location_id); -# if files_id == -1: -# sys.stderr.write("Rejected: INTERNAL ERROR, get_files_id() returned multiple matches for %s.\n" % (filename)); -# sys.exit(8); -# elif files_id == -2: -# sys.stderr.write("Rejected: md5sum and/or size mismatch on existing copy of %s.\n" % (filename)); -# sys.exit(8); -# if not files_id: -# #files_id = 42; -# files_id = db_access.set_files_id(filename, size, md5sum, location_id); -# print "INSERT(ed) INTO files (filename, size, md5sum, location) VALUES ('%s', %d, '%s', %d)" % (filename, long(size), md5sum, location_id); - -# else: -# print "%s already exists; skipping." % (filename) -# baz = 0; - -# q = christina.query(""" -# SELECT b.package, b.version, s.source, s.version, b.architecture, m.name -# FROM binaries b, source s, maintainer m -# WHERE b.id = %s AND s.id = b.source AND m.id = b.maintainer -# UNION SELECT b.package, b.version, null, null, b.architecture, m.name -# FROM binaries b, maintainer m -# WHERE b.id = %s AND b.source is null AND b.maintainer = m.id;""" % (id, id)); -# ql = q.getresult(); -# if len(ql) != 1: -# sys.exit(9); -# for i in ql: -# package = i[0]; -# version = i[1]; -# source_name = i[2]; -# source_version = i[3]; -# source_id = None; -# architecture_id = i[4]; -# maintainer = i[5]; -# maintainer = string.replace(maintainer, "'", "\\'"); -# maintainer_id = db_access.get_or_set_maintainer_id(maintainer); -# if source_name: -# source_id = db_access.get_source_id (source_name, source_version); -# if not source_id: -# print "Say what?"; -# sys.exit(3); -# if source_id: -# print "INSERT INTO binaries (package, version, maintainer, source, architecture, file, type) VALUES ('%s', '%s', %d, %d, %d, %s, '%s')" % (package, version, maintainer_id, source_id, architecture_id, files_id, "deb"); -# projectB.query("INSERT INTO binaries (package, version, maintainer, source, architecture, file, type) VALUES ('%s', '%s', %d, %d, %d, %s, '%s')" % (package, version, maintainer_id, source_id, architecture_id, files_id, "deb")); -# else: -# print "INSERT INTO binaries (package, version, maintainer, architecture, file, type) VALUES ('%s', '%s', %d, %d, %s, '%s')" % (package, version, maintainer_id, architecture_id, files_id, "deb"); -# projectB.query("INSERT INTO binaries (package, version, maintainer, architecture, file, type) VALUES ('%s', '%s', %d, %d, %s, '%s')" % (package, version, maintainer_id, architecture_id, files_id, "deb")); - -# projectB.query("COMMIT WORK;"); - -# sys.exit(0); - - - - -# ## source .. already done -# projectB.query("BEGIN WORK;"); - -# for id in bad_ids.keys(): -# q = christina.query("SELECT f.filename, f.md5sum, f.size, f.location FROM files f, dsc_files df WHERE df.source = %s and f.id = df.file;""" % (id)); -# ql = q.getresult(); -# for i in ql: -# filename = i[0]; -# md5sum = i[1]; -# size = i[2]; -# location_id = i[3]; -# files_id = db_access.get_files_id(filename, size, md5sum, location_id); -# if files_id == -1: -# sys.stderr.write("Rejected: INTERNAL ERROR, get_files_id() returned multiple matches for %s.\n" % (filename)); -# sys.exit(8); -# elif files_id == -2: -# sys.stderr.write("Rejected: md5sum and/or size mismatch on existing copy of %s.\n" % (filename)); -# sys.exit(8); -# if not files_id: -# #files_id = 42; -# files_id = db_access.set_files_id(filename, size, md5sum, location_id); -# print "INSERT(ed) INTO files (filename, size, md5sum, location) VALUES ('%s', %d, '%s', %d)" % (filename, long(size), md5sum, location_id); - -# else: -# print "%s already exists; skipping." % (filename) -# if filename[-4:] == '.dsc': -# dsc_files_id = files_id; -# print "--" - -# q = christina.query("SELECT s.source, s.version, m.name FROM source s, maintainer m WHERE s.id = %s and s.maintainer = m.id;""" % (id)); -# ql = q.getresult(); -# if len(ql) != 1: -# sys.exit(9); -# for i in ql: -# source = i[0] -# version = i[1]; -# maintainer = i[2]; -# maintainer_id = db_access.get_or_set_maintainer_id(maintainer); -# print "INSERT INTO source (source, version, maintainer, file) VALUES ('%s', '%s', %d, %d)" % (source, version, maintainer_id, dsc_files_id); -# projectB.query("INSERT INTO source (source, version, maintainer, file) VALUES ('%s', '%s', %d, %d)" % (source, version, maintainer_id, dsc_files_id)); - -# projectB.query("COMMIT WORK;"); - - - - - -# def nevermind(): -# new_bad_ids = {}; -# qx = christina.query("SELECT l.path, f.filename, f.md5sum, f.size, s.id FROM source s, files f, location l, dsc_files df WHERE f.id = df.file AND f.location = l.id AND df.source = s.id AND s.source = '%s' AND s.version = '%s';" % (source_name, source_version)); -# qxl = qx.getresult(); -# for ix in qxl: -# filename = ix[0] + ix[1] -# if os.path.exists(filename): -# continue; -# basename = os.path.basename(filename) -# morgue_filename = string.join([Cnf["Dir::Morgue"],Cnf["Rhona::MorgueSubDir"],basename],'/'); -# if os.path.exists(morgue_filename): -# db_md5sum = ix[2]; -# db_size = int(ix[3]); -# try: -# file = utils.open_file(morgue_filename, 'r'); -# except: -# sys.stderr.write("E: can't open '%s'.\n" % (morgue_filename)); -# continue; -# md5sum = apt_pkg.md5sum(file); -# size = os.stat(morgue_filename)[stat.ST_SIZE]; -# if md5sum != db_md5sum: -# sys.stderr.write("E: **WARNING** md5sum mismatch for '%s' ('%s' [current] vs. '%s' [db]).\n" % (morgue_filename, md5sum, db_md5sum)); -# continue; -# if size != db_size: -# sys.stderr.write("E: **WARNING** size mismatch for '%s' ('%s' [current] vs. '%s' [db]).\n" % (morgue_filename, size, db_size)); -# continue; -# new_bad_ids[ix[4]] = ""; -# print "R: %s [%s]" % (filename, morgue_filename); -# utils.copy(morgue_filename, filename); -# else: -# print "E: %s" % (filename); - -# projectB.query("BEGIN WORK;"); - -# for new_id in new_bad_ids.keys(): -# qx = christina.query("SELECT f.filename, f.md5sum, f.size, f.location FROM files f, dsc_files df WHERE df.source = %s and f.id = df.file;""" % (new_id)); -# qlx = qx.getresult(); -# for ix in qlx: -# filename = ix[0]; -# md5sum = ix[1]; -# size = ix[2]; -# location_id = ix[3]; -# files_id = db_access.get_files_id(filename, size, md5sum, location_id); -# if files_id == -1: -# sys.stderr.write("Rejected: INTERNAL ERROR, get_files_id() returned multiple matches for %s.\n" % (filename)); -# sys.exit(8); -# elif files_id == -2: -# sys.stderr.write("Rejected: md5sum and/or size mismatch on existing copy of %s.\n" % (filename)); -# sys.exit(8); -# if not files_id: -# #files_id = 42; -# files_id = db_access.set_files_id(filename, size, md5sum, location_id); -# print "INSERT(ed) INTO files (filename, size, md5sum, location) VALUES ('%s', %d, '%s', %d)" % (filename, long(size), md5sum, location_id); -# else: -# print "%s already exists; skipping." % (filename) -# if filename[-4:] == '.dsc': -# dsc_files_id = files_id; -# print "--" - -# qx = christina.query("SELECT s.source, s.version, m.name FROM source s, maintainer m WHERE s.id = %s and s.maintainer = m.id;""" % (new_id)); -# qlx = qx.getresult(); -# if len(qlx) != 1: -# sys.exit(9); -# for ix in qlx: -# source = ix[0]; -# version = ix[1]; -# maintainer = ix[2]; -# maintainer = string.replace(maintainer, "'", "\\'"); -# maintainer_id = db_access.get_or_set_maintainer_id(maintainer); -# print "INSERT INTO source (source, version, maintainer, file) VALUES ('%s', '%s', %d, %d)" % (source, version, maintainer_id, dsc_files_id); -# projectB.query("INSERT INTO source (source, version, maintainer, file) VALUES ('%s', '%s', %d, %d)" % (source, version, maintainer_id, dsc_files_id)); -# projectB.query("COMMIT WORK;");