X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Foverride_disparity.py;h=fd3bc503e72124ccd055b607359bba12a8a77914;hb=ec257c02a5d62fd27844c70814acd9616b24b4c8;hp=7a3b290656d1202edfd94db62857b2776fd6e7aa;hpb=a6b3f550d4281fcd392ee027e9ee330b850dbcc3;p=dak.git diff --git a/dak/override_disparity.py b/dak/override_disparity.py index 7a3b2906..fd3bc503 100755 --- a/dak/override_disparity.py +++ b/dak/override_disparity.py @@ -37,7 +37,7 @@ Generate a list of override disparities import os import sys import apt_pkg -import commands +import yaml from daklib.config import Config from daklib.dbconn import * @@ -49,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)""" @@ -62,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')] @@ -85,18 +87,7 @@ def main(): arches -= set(['source', 'all']) for arch in arches: for component in components: - filename = '%s/dists/%s/%s/binary-%s/Packages.gz' % (cnf['Dir::Root'], suite, component, arch) - (fd, temp_filename) = utils.temp_filename() - (result, output) = commands.getstatusoutput('gunzip -c %s > %s' % (filename, temp_filename)) - if (result != 0): - utils.fubar('Gunzip invocation failed!\n%s\n' % (output), result) - filename = '%s/dists/%s/%s/debian-installer/binary-%s/Packages.gz' % (cnf['Dir::Root'], suite, component, arch) - if os.path.exists(filename): - (result, output) = commands.getstatusoutput('gunzip -c %s >> %s' % (filename, temp_filename)) - if (result != 0): - utils.fubar('Gunzip invocation failed!\n%s\n' % (output), result) - 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') @@ -108,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 @@ -122,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()): @@ -131,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()