+ dubious_nbs = {};
+ real_nbs = {};
+ for source in nbs.keys():
+ for package in nbs[source].keys():
+ versions = nbs[source][package].keys();
+ versions.sort(apt_pkg.VersionCompare);
+ latest_version = versions.pop();
+ source_version = source_versions.get(source,"0");
+ if apt_pkg.VersionCompare(latest_version, source_version) == 0:
+ add_nbs(dubious_nbs, source, latest_version, package);
+ else:
+ add_nbs(real_nbs, source, latest_version, package);
+
+ # Check for packages in experimental obsoleted by versions in unstable
+ suite_id = db_access.get_suite_id("unstable");
+ q = projectB.query("""
+SELECT s.source, s.version AS experimental, s2.version AS unstable
+ FROM src_associations sa, source s, source s2, src_associations sa2
+ WHERE sa.suite = 1 AND sa2.suite = %d AND sa.source = s.id
+ AND sa2.source = s2.id AND s.source = s2.source
+ AND versioncmp(s.version, s2.version) < 0""" % (suite_id));
+ ql = q.getresult();
+ if ql:
+ nviu_to_remove = [];
+ print "Newer version in unstable";
+ print "-------------------------";
+ print ;
+ for i in ql:
+ (source, experimental_version, unstable_version) = i;
+ print " o %s (%s, %s)" % (source, experimental_version, unstable_version);
+ nviu_to_remove.append(source);
+ print
+ print "Suggested command:"
+ print " melanie -m \"[rene] NVIU\" -s experimental %s" % (" ".join(nviu_to_remove));
+ print
+
+ print "Not Built from Source";
+ print "---------------------";
+ print ;
+
+ nbs_to_remove = [];
+ nbs_keys = real_nbs.keys();
+ nbs_keys.sort();
+ for source in nbs_keys:
+ binaries = source_binaries.get(source, "(source does not exist)")
+ print " * %s_%s builds: %s" % (source,
+ source_versions.get(source, "??"),
+ source_binaries.get(source, "(source does not exist)"));
+ print " but no longer builds:"
+ versions = real_nbs[source].keys();
+ versions.sort(apt_pkg.VersionCompare);
+ for version in versions:
+ packages = real_nbs[source][version].keys();
+ packages.sort();
+ for pkg in packages:
+ # *cough* FIXME
+ if pkg.find("pcmcia") == -1:
+ nbs_to_remove.append(pkg);
+ print " o %s: %s" % (version, ", ".join(packages));
+
+ print ;
+
+ if nbs_to_remove:
+ print "Suggested command:"
+ print " melanie -m \"[rene] NBS\" -b %s" % (" ".join(nbs_to_remove));
+ print