#!/usr/bin/env python import os, sys if len(sys.argv) != 3: print "%s: " % sys.argv[0] sys.exit() indexfile = sys.argv[1] pkgdir = sys.argv[2] if not pkgdir.endswith("/All"): pkgdir = pkgdir + "/All" packages = [pkg for (pkg, ext) in map(os.path.splitext, os.listdir(pkgdir)) if ext == ".tbz"] index=[] pkgs=[] for i in file(indexfile): out = i.rstrip().split("|") out[7] = out[7].split(" ") # build dep out[8] = out[8].split(" ") # run dep index.append(out) # Keep track of all the packages we have seen in the index. In # principle there is no need to track the build/run deps since # they will also be listed in field 0. We could add a sanity # check for this. pkgs.append(out[0]) pkgs.extend(out[7]) pkgs.extend(out[8]) used=set(pkgs) notfound=used.difference(set(packages)) # Write out the new index, stripping out the entries for missing # packages as well as dependencies from existing packages on the # missing ones. # # This is slightly dubious since it will intentionally list packages # that are present but missing dependencies on non-redistributable # things like jdk that were successfully built but removed already, so # the dependency lists will not be complete. It matches the old # chopindex.sh behaviour though. # # I think it would be better to just prune those incomplete packages # from the INDEX altogether, but I don't know if anyone is relying on # this historical behaviour. for data in index: if data[0] not in notfound: print "%s|%s|%s|%s" % ("|".join(data[:7]), " ".join([j for j in data[7] if j not in notfound]), " ".join([j for j in data[8] if j not in notfound]), "|".join(data[9:]))