]> git.saurik.com Git - apt.git/commitdiff
fix priority sorting by prefering higher in MarkInstall
authorDavid Kalnischkies <kalnischkies@gmail.com>
Tue, 21 May 2013 16:06:17 +0000 (18:06 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sun, 9 Jun 2013 13:11:01 +0000 (15:11 +0200)
Used to work until a certain (here unnamed) person came along and used
the wrong operator causing low-priority packages to be sorted above
high-priority packages while choosing a provider in commit
 2b5c35c7bb915dbd46fefd7c79f05364ba22f93b from Nov 2011

apt-pkg/depcache.cc
debian/changelog
test/integration/test-prefer-higher-priority-providers [new file with mode: 0755]

index 6a3e9bfc42a3d3c7ee23034785609b20633c85d8..5ca0c2ea5cb957f2ef98bb263198604767f0a572 100644 (file)
@@ -1004,7 +1004,7 @@ struct CompareProviders {
       }
       // higher priority seems like a good idea
       if (AV->Priority != BV->Priority)
-        return AV->Priority < BV->Priority;
+        return AV->Priority > BV->Priority;
       // prefer native architecture
       if (strcmp(A.Arch(), B.Arch()) != 0)
       {
index f57a8334f26d7b627e5e4cda0609dee4bb510865..af606453dc5a2479053c1a6268cc9b069214eb3e 100644 (file)
@@ -6,6 +6,7 @@ apt (0.9.8.3) UNRELEASED; urgency=low
   * rewrite pkgOrderList::DepRemove to stop incorrect immediate setting
     (Closes: 645713)
   * prefer Essentials over Removals in ordering score
+  * fix priority sorting by prefering higher in MarkInstall
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 09 Jun 2013 15:06:24 +0200
 
diff --git a/test/integration/test-prefer-higher-priority-providers b/test/integration/test-prefer-higher-priority-providers
new file mode 100755 (executable)
index 0000000..66458be
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'native'
+
+insertpackage 'unstable' 'foo' 'all' '1' 'Provides: stuff' 'important'
+insertpackage 'unstable' 'bar' 'all' '1' 'Provides: stuff' 'optional'
+insertpackage 'unstable' 'baz' 'all' '1' 'Provides: stuff' 'extra'
+insertpackage 'unstable' 'awesome' 'all' '1' 'Depends: stuff'
+
+setupaptarchive
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following extra packages will be installed:
+  foo
+The following NEW packages will be installed:
+  awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])' aptget install awesome -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+  awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])' aptget install awesome foo -s