#! /usr/bin/python import sys, os.path #from debian_bundle import deb822 import apt_pkg def check_source(ok, f, fw): ret=[] pkg = apt_pkg.ParseTagFile(f) while pkg.Step(): if not pkg.Section.get('Package'): continue if pkg.Section.get('Section','').startswith('non-free'): if pkg.Section.get('Autobuild') != 'yes': continue if pkg.Section['Package'] not in ok: continue ret += [pkg.Section['Package']] fw.write(str(pkg.Section)) fw.write("\n") return ret f.close() fw.close() def check_binary(ok, f, fw): pkg = apt_pkg.ParseTagFile(f) while pkg.Step(): if pkg.Section.get('Source', pkg.Section.get('Package')).split(" ")[0] not in ok: continue fw.write(str(pkg.Section)) fw.write("\n") f.close() fw.close() def outfile(name, file): #return open(dir + "/" + os.path.basename(file), "w") #return open(file + name, "w") if file.endswith(name): return open(file[:-len(name)], "w") def main(): if len(sys.argv) <= 4: print "Error - too few args" return name = sys.argv[1] oklist = [ x[:-1].split(' ')[0] for x in open(sys.argv[2]) ] okpkgs = check_source(oklist, open(sys.argv[3]), outfile(name, sys.argv[3])) for file in sys.argv[4:]: check_binary(okpkgs, open(file), outfile(name, file)) if __name__ == '__main__': main()