Followup-For: Bug #699759 Control: tag -1 patch Hi,
I'm attaching a patch that just skips regative scores from rdeps. I thought I sent this long ago ... It has gotten a lot of testing for doing piuparts squeeze->wheezy upgrades with apt/wheezy+patch (backported to squeeze). Compared to apt/wheezy (backported to squeeze, too) this solves the score issue for a few upgrade paths and does not introduce new problems. This has mainly an effect on "leaf" packages with scores <= 2. "Skewing" the score by +/- 1 makes a big difference here. I'd like to see if this issue could be solved in an early point release for wheezy, too, to have a more sane scoring at work for wheezy->jessie upgrades. Andreas
diffstat for apt-0.9.7.8 apt-0.9.7.8+nmu0 apt-pkg/algorithms.cc | 5 autom4te.cache/output.0 | 9173 ------------------------------------------------ autom4te.cache/output.1 | 9173 ------------------------------------------------ autom4te.cache/requests | 198 - autom4te.cache/traces.0 | 3482 ------------------ autom4te.cache/traces.1 | 629 --- debian/changelog | 10 7 files changed, 14 insertions(+), 22656 deletions(-) diff -Nru apt-0.9.7.8/apt-pkg/algorithms.cc apt-0.9.7.8+nmu0/apt-pkg/algorithms.cc --- apt-0.9.7.8/apt-pkg/algorithms.cc 2013-03-01 11:51:21.000000000 +0100 +++ apt-0.9.7.8+nmu0/apt-pkg/algorithms.cc 2013-04-13 22:00:51.000000000 +0200 @@ -645,7 +645,10 @@ D->Type != pkgCache::Dep::Recommends)) continue; - Scores[I->ID] += abs(OldScores[D.ParentPkg()->ID]); + // Do not propagate negative scores otherwise + // an extra (-2) package might score better than an optional (-1) + if (OldScores[D.ParentPkg()->ID] > 0) + Scores[I->ID] += OldScores[D.ParentPkg()->ID]; } } diff -Nru apt-0.9.7.8/autom4te.cache/output.0 apt-0.9.7.8+nmu0/autom4te.cache/output.0 diff -Nru apt-0.9.7.8/autom4te.cache/output.1 apt-0.9.7.8+nmu0/autom4te.cache/output.1 diff -Nru apt-0.9.7.8/autom4te.cache/requests apt-0.9.7.8+nmu0/autom4te.cache/requests diff -Nru apt-0.9.7.8/autom4te.cache/traces.0 apt-0.9.7.8+nmu0/autom4te.cache/traces.0 diff -Nru apt-0.9.7.8/autom4te.cache/traces.1 apt-0.9.7.8+nmu0/autom4te.cache/traces.1 diff -Nru apt-0.9.7.8/debian/changelog apt-0.9.7.8+nmu0/debian/changelog --- apt-0.9.7.8/debian/changelog 2013-03-14 08:14:09.000000000 +0100 +++ apt-0.9.7.8+nmu0/debian/changelog 2013-05-04 09:55:52.000000000 +0200 @@ -1,3 +1,13 @@ +apt (0.9.7.8+nmu0) UNRELEASED; urgency=low + + * Non-maintainer upload. + * apt-pkg/algorithms.cc: + - Do not propagate negative scores from rdepends. Propagating the absolute + value of a negative score may boost obsolete packages and keep them + installed instead of installing their successors. (Closes: #699759) + + -- Andreas Beckmann <a...@debian.org> Fri, 15 Feb 2013 19:52:29 +0100 + apt (0.9.7.8) unstable; urgency=criticial * SECURITY UPDATE: InRelease verification bypass