X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Foverride_disparity.py;h=fd3bc503e72124ccd055b607359bba12a8a77914;hb=ec257c02a5d62fd27844c70814acd9616b24b4c8;hp=94e1e9e8b0222863fe0db36d6f6436eff2931b75;hpb=26fd1f178ce88c250744d85d6bc15765d9ccf203;p=dak.git diff --git a/dak/override_disparity.py b/dak/override_disparity.py index 94e1e9e8..fd3bc503 100755 --- a/dak/override_disparity.py +++ b/dak/override_disparity.py @@ -37,6 +37,7 @@ Generate a list of override disparities import os import sys import apt_pkg +import yaml from daklib.config import Config from daklib.dbconn import * @@ -48,11 +49,12 @@ def usage (exit_code=0): print """Generate a list of override disparities Usage: - dak override-disparity [ -p ] [ -s ] + dak override-disparity [-f ] [ -p ] [ -s ] Options: -h, --help show this help and exit + -f, --file store output into given file -p, --package limit check on given package only -s, --suite choose suite to look for (default: unstable)""" @@ -61,6 +63,7 @@ Options: def main(): cnf = Config() Arguments = [('h','help','Override-Disparity::Options::Help'), + ('f','file','Override-Disparity::Options::File','HasArg'), ('s','suite','Override-Disparity::Options::Suite','HasArg'), ('p','package','Override-Disparity::Options::Package','HasArg')] @@ -84,9 +87,7 @@ def main(): arches -= set(['source', 'all']) for arch in arches: for component in components: - temp_filename = utils.get_packages_from_ftp(cnf['Dir::Root'], suite, component, arch) - packages_file = utils.open_file(temp_filename) - Packages = apt_pkg.ParseTagFile(packages_file) + Packages = utils.get_packages_from_ftp(cnf['Dir::Root'], suite, component, arch) while Packages.Step(): package = Packages.Section.Find('Package') dep_list = Packages.Section.Find('Depends') @@ -98,7 +99,6 @@ def main(): if not depends.has_key(package): depends[package] = set() depends[package].add(i[0]) - os.unlink(temp_filename) priorities = {} query = """SELECT DISTINCT o.package, p.level, p.priority, m.name @@ -112,8 +112,12 @@ def main(): AND ba.suite = s.id AND p.level <> 0""" % suite packages = session.execute(query) - session.commit() + out = {} + if Options.has_key('file'): + outfile = file(os.path.expanduser(Options['file']), 'w') + else: + outfile = sys.stdout for p in packages: priorities[p[0]] = [p[1], p[2], p[3], True] for d in sorted(depends.keys()): @@ -121,13 +125,18 @@ def main(): if priorities.has_key(d) and priorities.has_key(p): if priorities[d][0] < priorities[p][0]: if priorities[d][3]: - print 'Package: ' + d - print ' Priority: ' + priorities[d][1] - print ' Maintainer: ' + priorities[d][2] + if not out.has_key(d): + out[d] = {} + out[d]['priority'] = priorities[d][1] + out[d]['maintainer'] = priorities[d][2] + out[d]['priority'] = priorities[d][1] priorities[d][3] = False - print ' Dependency: ' + p - print ' Priority: ' + priorities[p][1] - print ' Maintainer: ' + priorities[p][2] + if not out[d].has_key('dependency'): + out[d]['dependency'] = {} + out[d]['dependency'][p] = priorities[p][1] + yaml.dump(out, outfile, default_flow_style=False) + if Options.has_key('file'): + outfile.close() if __name__ == '__main__': main()