#!/usr/bin/env python
-# Check for obsolete binary packages
+""" Check for obsolete binary packages """
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 James Troup <james@nocrew.org>
# This program is free software; you can redistribute it and/or modify
import apt_pkg
from daklib import database
from daklib import utils
+from daklib.regexes import re_extract_src_version
################################################################################
f.close()
else:
- utils.warn("No wanna-build dump file for architecture %s", architecture)
+ utils.warn("No wanna-build dump file for architecture %s" % architecture)
return ret
################################################################################
output = "Not Built from Source\n"
output += "---------------------\n\n"
- nbs_to_remove = []
+ cmd_output = ""
nbs_keys = real_nbs.keys()
nbs_keys.sort()
for source in nbs_keys:
output += " but no longer builds:\n"
versions = real_nbs[source].keys()
versions.sort(apt_pkg.VersionCompare)
+ all_packages = []
for version in versions:
packages = real_nbs[source][version].keys()
packages.sort()
- for pkg in packages:
- nbs_to_remove.append(pkg)
+ all_packages.extend(packages)
output += " o %s: %s\n" % (version, ", ".join(packages))
+ if all_packages:
+ all_packages.sort()
+ cmd_output += " dak rm -m \"[auto-cruft] NBS (was built by %s)\" -s %s -b %s\n\n" % (source, suite, " ".join(all_packages))
output += "\n"
- if nbs_to_remove:
+ if len(cmd_output):
print output
-
- print "Suggested command:"
- print " dak rm -m \"[auto-cruft] NBS\" -s %s -b %s" % (suite, " ".join(nbs_to_remove))
- print
+ print "Suggested commands:\n"
+ print cmd_output
################################################################################
if suite != "experimental":
check_components.append('main/debian-installer');
for component in check_components:
- architectures = filter(utils.real_arch, Cnf.ValueList("Suite::%s::Architectures" % (suite)))
+ architectures = filter(utils.real_arch, database.get_suite_architectures(suite))
for architecture in architectures:
+ if component == 'main/debian-installer' and re.match("kfreebsd", architecture):
+ continue
filename = "%s/dists/%s/%s/binary-%s/Packages.gz" % (Cnf["Dir::Root"], suite, component, architecture)
# apt_pkg.ParseTagFile needs a real file handle
(fd, temp_filename) = utils.temp_filename()
bin2source[package]["version"] = version
bin2source[package]["source"] = source
if source.find("(") != -1:
- m = utils.re_extract_src_version.match(source)
+ m = re_extract_src_version.match(source)
source = m.group(1)
version = m.group(2)
if not bin_pkgs.has_key(package):