+++ /dev/null
-#!/usr/bin/env python
-
-# Fix testing
-# Copyright (C) 2000, 2001 James Troup <james@nocrew.org>
-# $Id: hack.6,v 1.1 2001-06-05 22:31:33 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
-
-################################################################################
-
-# 'Too afraid to touch; too afraid you'll like too much'
-
-################################################################################
-
-import pg, sys, os, string
-import utils, db_access
-import apt_inst, 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(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]));
- christina = pg.connect('christina', Cnf["DB::Host"], int(Cnf["DB::Port"]));
- db_access.init(Cnf, projectB);
-
- total = 0; found = 0;
- morgue = Cnf["Dir::Morgue"] + '/' + Cnf["Rhona::MorgueSubDir"];
-
- xxx = utils.open_file ("xxx", 'r');
- for line in xxx.readlines():
- (package, version, arch) = string.split(line);
- eversion = utils.re_no_epoch.sub('', version);
- total = total + 1;
- if arch != "source":
- #filename = "%s/%s_%s_%s.deb" % (morgue, package, eversion, arch);
- filename = "%s/%s_%s.deb" % (morgue, package, eversion);
- else:
- continue
- if os.access(filename, os.R_OK) == 0:
- continue;
-
- control = apt_pkg.ParseSection(apt_inst.debExtractControl(utils.open_file(filename,"r")));
- deb_arch = control.Find("Architecture");
- if arch != deb_arch:
- continue;
-
- arch_id = db_access.get_architecture_id (arch);
- q = christina.query("SELECT f.*, l.path, b.* FROM binaries b, files f, location l WHERE b.package = '%s' AND b.architecture = %s AND b.version = '%s' AND b.file = f.id AND l.id = f.location" % (package, arch_id, version));
- ql = q.getresult();
- if len(ql) != 1:
- print "YOU LOSE: "+package+"~"+version+"~"+arch+"~"+repr(ql)
- continue;
- ql = ql[0];
-
- x = projectB.query("SELECT * FROM source WHERE id = %s" % (ql[11]));
- xl = x.getresult();
- if len(xl) != 1:
- old_filename = filename;
- z = christina.query("SELECT f.*, l.path, s.*, df.* FROM source s, files f, location l, dsc_files df WHERE s.id = %s AND df.source = s.id AND df.file = f.id AND l.id = f.location" % (ql[11]));
- zl = z.getresult();
- if len(zl) < 1:
- print old_filename
- print repr(ql);
- print "SELECT f.*, l.path, s.*, df.* FROM source s, files f, location l, dsc_files df WHERE s.id = %s AND df.source = s.id AND df.file = f.id AND l.id = f.location" % (ql[11]);
- print " ==> "+repr(zl);
- #sys.exit(3);
- else:
- projectB.query("BEGIN WORK");
- gack = [];
- for i in zl:
- new_filename = i[6] + i[1];
- filename = morgue + '/' + os.path.basename(new_filename);
- if os.access(filename, os.R_OK):
- print filename + " -> " + new_filename;
- if os.path.exists(new_filename):
- sys.exit(3);
- #utils.move(filename, new_filename);
- print "INSERT INTO files (id, filename, size, md5sum, location) VALUES (%s, '%s', %s, '%s', %s)" % (i[:5]);
- #projectB.query("INSERT INTO files (id, filename, size, md5sum, location) VALUES (%s, '%s', %s, '%s', %s)" % (i[:5]));
- gack.append("INSERT INTO dsc_files (id, source, file) VALUES (%s, %s, %s)" % (i[12:]));
- if new_filename[-4:] == ".dsc":
- print "INSERT INTO source (id, source, version, maintainer, file) VALUES (%s, '%s', '%s', %s, %s)" % (i[7:12]);
- #projectB.query("INSERT INTO source (id, source, version, maintainer, file) VALUES (%s, '%s', '%s', %s, %s)" % (i[7:12]));
- for i in gack:
- print i;
- #projectB.query(i);
- projectB.query("COMMIT WORK");
- filename = old_filename;
-
- projectB.query("BEGIN WORK");
- new_filename = ql[6] + ql[1];
- print filename + " -> " + new_filename;
- if os.path.exists(new_filename):
- sys.exit(3);
- utils.move(filename, new_filename);
- print "INSERT INTO files (id, filename, size, md5sum, location) VALUES (%s, '%s', %s, '%s', %s)" % (ql[:5]);
- projectB.query("INSERT INTO files (id, filename, size, md5sum, location) VALUES (%s, '%s', %s, '%s', %s)" % (ql[:5]));
- if ql[11] == 0:
- print "INSERT INTO binaries (id, package, version, maintainer, architecture, file, type) VALUES (%s, '%s', '%s', %s, %s, %s, '%s')" % (ql[7], ql[8], ql[9], ql[10], ql[12], ql[13], ql[14]);
- projectB.query("INSERT INTO binaries (id, package, version, maintainer, architecture, file, type) VALUES (%s, '%s', '%s', %s, %s, %s, '%s')" % (ql[7], ql[8], ql[9], ql[10], ql[12], ql[13], ql[14]));
- else:
- print "INSERT INTO binaries (id, package, version, maintainer, source, architecture, file, type) VALUES (%s, '%s', '%s', %s, %s, %s, %s, '%s')" % (ql[7:]);
- projectB.query("INSERT INTO binaries (id, package, version, maintainer, source, architecture, file, type) VALUES (%s, '%s', '%s', %s, %s, %s, %s, '%s')" % (ql[7:]));
- print "INSERT INTO bin_associations (suite, bin) VALUES (%s, %s)" % (4, ql[7]);
- projectB.query("INSERT INTO bin_associations (suite, bin) VALUES (%s, %s)" % (4, ql[7]));
-
- projectB.query("COMMIT WORK");
-
-#######################################################################################
-
-if __name__ == '__main__':
- main()
-
-#######################################################################################
-
-# xxx = utils.open_file ("xxx", 'r');
-# for line in xxx.readlines():
-# (package, version, arch) = string.split(line);
-# eversion = utils.re_no_epoch.sub('', version);
-# total = total + 1;
-# if arch == "source":
-# filename = "%s/%s_%s.dsc" % (morgue, package, eversion);
-# else:
-# continue
-# if os.access(filename, os.R_OK) == 0:
-# continue;
-
-# arch_id = db_access.get_architecture_id (arch);
-# q = christina.query("SELECT f.*, l.path, s.*, df.* FROM source s, files f, location l, dsc_files df WHERE s.source = '%s' AND s.version = '%s' AND df.source = s.id AND df.file = f.id AND l.id = f.location" % (package, version));
-# ql = q.getresult();
-# if len(ql) < 1:
-# print "YOU LOSE: "+package+"~"+version+"~"+arch+"~"+repr(ql)
-# continue;
-# projectB.query("BEGIN WORK");
-# gack = [];
-# for i in ql:
-# new_filename = i[6] + i[1];
-# filename = morgue + '/' + os.path.basename(new_filename);
-# if os.access(filename, os.R_OK) == 0:
-# continue;
-# print filename + " -> " + new_filename;
-# if os.path.exists(new_filename):
-# sys.exit(3);
-# utils.move(filename, new_filename);
-# print "INSERT INTO files (id, filename, size, md5sum, location) VALUES (%s, '%s', %s, '%s', %s)" % (i[:5]);
-# projectB.query("INSERT INTO files (id, filename, size, md5sum, location) VALUES (%s, '%s', %s, '%s', %s)" % (i[:5]));
-# gack.append("INSERT INTO dsc_files (id, source, file) VALUES (%s, %s, %s)" % (i[12:]));
-# if new_filename[-4:] == ".dsc":
-# print "INSERT INTO source (id, source, version, maintainer, file) VALUES (%s, '%s', '%s', %s, %s)" % (i[7:12]);
-# projectB.query("INSERT INTO source (id, source, version, maintainer, file) VALUES (%s, '%s', '%s', %s, %s)" % (i[7:12]));
-# print "INSERT INTO src_associations (suite, source) VALUES (%s, %s)" % (4, i[7]);
-# projectB.query("INSERT INTO src_associations (suite, source) VALUES (%s, %s)" % (4, i[7]));
-# #print repr(i)
-# for i in gack:
-# print i;
-# projectB.query(i);
-# projectB.query("COMMIT WORK");
-
-#######################################################################################
-
-#######################################################################################
-
-# bad = {};
-# xxx = utils.open_file ("xxx", 'r');
-# for line in xxx.readlines():
-# (package, version, arch) = string.split(line);
-# version = utils.re_no_epoch.sub('', version);
-# total = total + 1;
-# if arch != "source":
-# filename = "%s/%s_%s_%s.deb" % (morgue, package, version, arch);
-# else:
-# filename = "%s/%s_%s.dsc" % (morgue, package, version);
-# if os.access(filename, os.R_OK):
-# found = found + 1;
-# else:
-# if arch != "source":
-# filename = "%s/%s_%s.deb" % (morgue, package, version);
-# if os.access(filename, os.R_OK):
-# control = apt_pkg.ParseSection(apt_inst.debExtractControl(utils.open_file(filename,"r")));
-# deb_arch = control.Find("Architecture");
-# if arch == deb_arch:
-# found = found + 1;
-# continue;
-# if arch != "source":
-# xf = 0;
-# arch_id = db_access.get_architecture_id (arch);
-# q = projectB.query("SELECT version FROM binaries b, bin_associations ba WHERE b.package = '%s' AND b.architecture = %s AND ba.bin = b.id AND ba.suite = 5" % (package, arch_id));
-# ql = q.getresult();
-# if len(ql) != 1:
-# q = projectB.query("SELECT version FROM binaries b, bin_associations ba WHERE b.package = '%s' AND b.architecture = %s AND ba.bin = b.id AND ba.suite = 2" % (package, arch_id));
-# ql = q.getresult();
-# if len(ql) != 1:
-# #print "YOU LOSE: "+package+"~"+version+"~"+arch+"~"+repr(ql)
-# continue;
-
-# unstable_version = ql[0][0];
-# print package+" "+unstable_version+" "+arch;
-# found = found + 1;
-# else:
-# q = projectB.query("SELECT version FROM source s, src_associations sa WHERE s.source = '%s' AND sa.source = s.id AND sa.suite = 5" % (package));
-# ql = q.getresult();
-# if len(ql) != 1:
-# q = projectB.query("SELECT version FROM source s, src_associations sa WHERE s.source = '%s' AND sa.source = s.id AND sa.suite = 2" % (package));
-# ql = q.getresult();
-# if len(ql) != 1:
-# #print "YOU LOSE: "+package+"~"+version+"~"+arch+"~"+repr(ql)
-# continue;
-
-# unstable_version = ql[0][0];
-# print package+" "+unstable_version+" "+arch;
-# found = found + 1;
-
-# #print "Good: %d / %d (%.2f%%)" % (found, total, (float(found)/total*100));
-# #not_found = total - found;
-# #print "Bad: %d / %d (%.2f%%)" % (not_found, total, (float(not_found)/total*100));
-
-#######################################################################################
-
-# Pretty print bad stuff code
-
-# key = package+'~'+version;
-# if not bad.has_key(key):
-# bad[key] = [];
-# bad[key].append(arch);
-
-# keys = bad.keys();
-# keys.sort();
-# for i in keys:
-# print i+": "+repr(bad[i]);
-
-
-
-# Check if is in DB code
-
-# arch_id = db_access.get_architecture_id (arch);
-# q = projectB.query("SELECT id FROM binaries WHERE package = '%s' AND version = '%s' AND architecture = %s" % (package, version, arch_id));
-# ql = q.getresult();
-# if ql != []:
-# found = found + 1;
-
-# q = projectB.query("SELECT id FROM source WHERE source = '%s' AND version = '%s'" % (package, version));
-# ql = q.getresult();
-# if ql != []:
-# found = found + 1;