-#!/usr/bin/env python
-
-import pg, string, os, shutil
-import utils
-import apt_pkg
-
-def move(src, dest):
- if os.path.exists(dest):
- print 'overwrite `'+dest+'\'? ',
- yn = utils.our_raw_input()
- if yn != 'Y' and yn != 'y':
- return
- print src + ' -> ' + dest
- shutil.copyfile (src, dest)
- os.unlink (src)
-
-def main():
- projectB = pg.connect('projectb', 'localhost')
-
- apt_pkg.init();
-
- suite = "unstable";
- architecture = "i386";
-
-# too slow to run every time
-# "select b.package from binaries b, architecture a where a.arch_string = 'all' and b.architecture = a.id INTERSECT select b.package from binaries b, architecture a where a.arch_string = 'i386' and b.architecture = a.id;"
-
- borked = utils.open_file('broken', 'r')
- for line in borked.readlines():
- package = string.strip(line[:-1])
-
- #print "========="
- #print package
- q = projectB.query("SELECT b.version, a.arch_string, l.path, b.filename FROM bin_associations ba, binaries b, architecture a, suite s, location l WHERE b.package = '%s' AND (a.arch_string = '%s' OR a.arch_string = 'all') AND s.suite_name = '%s' AND ba.bin = b.id AND ba.suite = s.id AND b.architecture = a.id AND l.id = b .location" % (package, architecture, suite))
- entries = q.getresult()
- version = {}
- filename = ""
- for entry in entries:
- version[entry[1]] = entry[0]
- if entry[1] == "all":
- filename = entry[2] + entry[3]
- if not version.has_key(architecture) or not version.has_key("all"):
- #print "SKIPPING"
- continue
- if apt_pkg.VersionCompare(version[architecture], version["all"]) != 1:
- #print architecture+" too new... SKIPPING"
- continue
- #print " "+repr(version)
- if os.path.exists(filename):
- if os.path.islink(filename):
- print "FIXING: unlinking %s" % (filename);
- os.unlink(filename);
- else:
- print "FIXING: moving %s to /home/troup/removed-from-ftp/foad/" % (filename);
- move(filename, "/home/troup/removed-from-ftp/foad/%s" % (os.path.basename(filename)));
-
-if __name__ == '__main__':
- main()
-