X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=jeri;h=2542f43491079d71946d29150ef197e78fd83fdd;hb=d0a891d7eb8d79b747f031392dd29de3acd68d84;hp=616c26729bfb13067b12980f91b12171097e3dc8;hpb=c1c7681bf43c58dd5cf34d1c1814a75ae594688b;p=dak.git diff --git a/jeri b/jeri index 616c2672..2542f434 100755 --- a/jeri +++ b/jeri @@ -1,8 +1,8 @@ #!/usr/bin/env python # Dependency check proposed-updates -# Copyright (C) 2001 James Troup -# $Id: jeri,v 1.2 2001-11-04 22:28:44 troup Exp $ +# Copyright (C) 2001, 2002 James Troup +# $Id: jeri,v 1.9 2002-06-08 00:17:59 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 @@ -38,12 +38,26 @@ import apt_pkg, apt_inst; Cnf = None; projectB = None; +Options = None; stable = {}; stable_virtual = {}; architectures = None; ################################################################################ +def usage (exit_code=0): + print """Usage: jeri [OPTION] [...] +Remove obsolete changes files from proposed-updates. + + -q, --quiet be quieter about what is being done + -v, --verbose be more verbose about what is being done + -h, --help show this help and exit + +Need either changes files, deb files or an admin.txt file with a '.joey' suffix.""" + sys.exit(exit_code) + +################################################################################ + def pp_dep (deps): pp_deps = []; for atom in deps: @@ -140,7 +154,7 @@ def check_package(filename, files): return 1; Depends = control.Find("Depends"); Pre_Depends = control.Find("Pre-Depends"); - Recommends = control.Find("Recommends"); + #Recommends = control.Find("Recommends"); pkg_arch = control.Find("Architecture"); base_file = os.path.basename(filename); if pkg_arch == "all": @@ -173,8 +187,8 @@ def pass_fail (filename, result): def check_changes (filename): try: - changes = utils.parse_changes(filename, 0) - files = utils.build_file_list(changes, ""); + changes = utils.parse_changes(filename); + files = utils.build_file_list(changes); except: utils.warn("Error parsing changes file '%s'" % (filename)); return; @@ -184,7 +198,7 @@ def check_changes (filename): # Move to the pool directory cwd = os.getcwd(); file = files.keys()[0]; - pool_dir = Cnf["Dir::PoolDir"] + '/' + utils.poolify(changes["source"], files[file]["component"]); + pool_dir = Cnf["Dir::Pool"] + '/' + utils.poolify(changes["source"], files[file]["component"]); os.chdir(pool_dir); changes_result = 0; @@ -213,21 +227,22 @@ def check_joey (filename): file = utils.open_file(filename); cwd = os.getcwd(); - os.chdir("%s/dists/proposed-updates" % (Cnf["Dir::RootDir"])); + os.chdir("%s/dists/proposed-updates" % (Cnf["Dir::Root"])); for line in file.readlines(): - line = line[:-1]; + line = string.rstrip(line); if string.find(line, 'install') != -1: split_line = string.split(line); + if len(split_line) != 2: + utils.fubar("Parse error (not exactly 2 elements): %s" % (line)); install_type = split_line[0]; if [ "install", "install-u", "sync-install" ].count(install_type) == 0: utils.fubar("Unknown install type ('%s') from: %s" % (install_type, line)); changes_filename = split_line[1] - if len(split_line) != 2: - utils.fubar("Parse error (more than 2 elements): %s" % (line)); if Options["debug"]: print "Processing %s..." % (changes_filename); check_changes(changes_filename); + file.close(); os.chdir(cwd); @@ -239,14 +254,11 @@ def parse_packages(): # Parse the Packages files (since it's a sub-second operation on auric) suite = "stable"; stable = {}; - components = Cnf.SubTree("Suite::%s::Components" % (suite)).List(); - architectures = Cnf.SubTree("Suite::%s::Architectures" % (suite)).List(); - for arch in [ "source", "all" ]: - if architectures.count(arch): - architectures.remove(arch); + components = Cnf.ValueList("Suite::%s::Components" % (suite)); + architectures = filter(utils.real_arch, Cnf.ValueList("Suite::%s::Architectures" % (suite))); for component in components: for architecture in architectures: - filename = "%s/dists/%s/%s/binary-%s/Packages" % (Cnf["Dir::RootDir"], suite, component, architecture); + filename = "%s/dists/%s/%s/binary-%s/Packages" % (Cnf["Dir::Root"], suite, component, architecture); packages = utils.open_file(filename, 'r'); Packages = apt_pkg.ParseTagFile(packages); while Packages.Step(): @@ -262,24 +274,22 @@ def parse_packages(): if not stable_virtual.has_key(virtual_pkg): stable_virtual[virtual_pkg] = {}; stable_virtual[virtual_pkg][architecture] = "NA"; + packages.close() ################################################################################ def main (): global Cnf, projectB, Options; - apt_pkg.init(); - - Cnf = apt_pkg.newConfiguration(); - apt_pkg.ReadConfigFileISC(Cnf,utils.which_conf_file()); + Cnf = utils.get_conf() - Arguments = [('q',"quiet","Jeri::Options::Quiet"), + Arguments = [('d', "debug", "Jeri::Options::Debug"), + ('q',"quiet","Jeri::Options::Quiet"), ('v',"verbose","Jeri::Options::Verbose"), - ('D',"debug","Jeri::Options::Debug"), - ('h',"help","Jeri::Options::Help"), - ('V',"version","Jeri::Options::Version")]; - for i in [ "quiet", "verbose", "help", "debug" ]: - Cnf["Jeri::Options::%s" % (i)] = ""; + ('h',"help","Jeri::Options::Help")]; + for i in [ "debug", "quiet", "verbose", "help" ]: + if not Cnf.has_key("Jeri::Options::%s" % (i)): + Cnf["Jeri::Options::%s" % (i)] = ""; arguments = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); Options = Cnf.SubTree("Jeri::Options")