summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-11-29 21:43:07 +0100
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-11-29 21:43:07 +0100
commitc427b1e218e61bd1aacbddf9013e58b8aa445a7c (patch)
tree968669a06e487a9146038f1a975011edc2729acb
parent0957a13baf7c6d9a4093bfd6c7316fa018cb717b (diff)
* apt-pkg/algorithms.cc:
- mark all installed packages first without auto installation in a dist-upgrade to prefer upgrading packages instead of installing new packages in versioned or-groups (Closes: #605394)
-rw-r--r--apt-pkg/algorithms.cc7
-rw-r--r--debian/changelog8
-rw-r--r--test/integration/Packages-bug-605394-versioned-or-groups71
-rw-r--r--test/integration/status-bug-605394-versioned-or-groups34
-rwxr-xr-xtest/integration/test-bug-605394-versioned-or-groups25
5 files changed, 144 insertions, 1 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 9abb7a947..0fbce3c2a 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -374,6 +374,13 @@ bool pkgDistUpgrade(pkgDepCache &Cache)
{
pkgDepCache::ActionGroup group(Cache);
+ /* Upgrade all installed packages first without autoinst to help the resolver
+ in versioned or-groups to upgrade the old solver instead of installing
+ a new one (if the old solver is not the first one [anymore]) */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if (I->CurrentVer != 0)
+ Cache.MarkInstall(I, false, 0, false);
+
/* Auto upgrade all installed packages, this provides the basis
for the installation */
for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
diff --git a/debian/changelog b/debian/changelog
index 1aac5ec7e..bc3af9251 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,7 +6,13 @@ apt (0.8.10) UNRELEASED; urgency=low
will actually test uncompressed indexes regardless of the internal
default value of Acquire::GzipIndexes.
- -- Michael Vogt <mvo@debian.org> Thu, 25 Nov 2010 16:08:01 +0100
+ [ David Kalnischkies ]
+ * apt-pkg/algorithms.cc:
+ - mark all installed packages first without auto installation in
+ a dist-upgrade to prefer upgrading packages instead of installing
+ new packages in versioned or-groups (Closes: #605394)
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Mon, 29 Nov 2010 21:41:56 +0100
apt (0.8.9) unstable; urgency=low
diff --git a/test/integration/Packages-bug-605394-versioned-or-groups b/test/integration/Packages-bug-605394-versioned-or-groups
new file mode 100644
index 000000000..60327364b
--- /dev/null
+++ b/test/integration/Packages-bug-605394-versioned-or-groups
@@ -0,0 +1,71 @@
+Package: apache2-mpm-prefork
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Filename: pool/main/a/apache2/apache2-mpm-prefork_2.2.16-4_i386.deb
+Size: 2276
+MD5Sum: c0db3e637052e59dbdb2fa08f4cdcea4
+Description: Apache HTTP Server - traditional non-threaded model
+Task: web-server
+
+Package: apache2-mpm-worker
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Filename: pool/main/a/apache2/apache2-mpm-worker_2.2.16-4_i386.deb
+Size: 2220
+MD5Sum: 71bccda875aa0afac700410b951370ba
+Description: Apache HTTP Server - high speed threaded model
+
+Package: libapache2-mod-php5
+Priority: optional
+Section: httpd
+Installed-Size: 7588
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-4
+Depends: apache2-mpm-prefork (>> 2.0.52)
+Filename: pool/main/p/php5/libapache2-mod-php5_5.3.3-4_i386.deb
+Size: 2886980
+MD5Sum: b41ec4b98aa08966288570e07cd864ab
+Description: server-side, HTML-embedded scripting language (Apache 2 module)
+Task: web-server
+
+Package: php5-cgi
+Priority: optional
+Section: php
+Installed-Size: 14672
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-4
+Filename: pool/main/p/php5/php5-cgi_5.3.3-4_i386.deb
+Size: 5713726
+MD5Sum: 9e579982032c7bb98508e16e314f45e9
+Description: server-side, HTML-embedded scripting language (CGI binary)
+
+Package: php5
+Priority: optional
+Section: php
+Installed-Size: 20
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: all
+Version: 5.3.3-4
+Depends: libapache2-mod-php5 (>= 5.3.3-4) | php5-cgi (>= 5.3.3-4)
+Filename: pool/main/p/php5/php5_5.3.3-4_all.deb
+Size: 1050
+MD5Sum: cbedd95ed5b868ba1ffd10747abc0ee3
+Description: server-side, HTML-embedded scripting language (metapackage)
diff --git a/test/integration/status-bug-605394-versioned-or-groups b/test/integration/status-bug-605394-versioned-or-groups
new file mode 100644
index 000000000..3ac9c3054
--- /dev/null
+++ b/test/integration/status-bug-605394-versioned-or-groups
@@ -0,0 +1,34 @@
+Package: apache2-mpm-worker
+Status: install ok installed
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Description: Apache HTTP Server - high speed threaded model
+
+Package: php5-cgi
+Status: install ok installed
+Priority: optional
+Section: php
+Installed-Size: 14672
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-3
+Description: server-side, HTML-embedded scripting language (CGI binary)
+
+Package: php5
+Status: install ok installed
+Priority: optional
+Section: php
+Installed-Size: 20
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: all
+Version: 5.3.3-3
+Depends: libapache2-mod-php5 (>= 5.3.3-3) | libapache2-mod-php5filter (>= 5.3.3-3) | php5-cgi (>= 5.3.3-3)
+Description: server-side, HTML-embedded scripting language (metapackage)
diff --git a/test/integration/test-bug-605394-versioned-or-groups b/test/integration/test-bug-605394-versioned-or-groups
new file mode 100755
index 000000000..0d7ad77f6
--- /dev/null
+++ b/test/integration/test-bug-605394-versioned-or-groups
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+local TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testequal "Reading package lists...
+Building dependency tree...
+The following packages will be upgraded:
+ php5 php5-cgi
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/5715 kB of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget dist-upgrade --trivial-only
+
+msgtest "Solution process doesn't involve" 'apache2-mpm-prefork'
+
+if aptget dist-upgrade --trivial-only -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 2>&1 | grep apache2-mpm-prefork > /dev/null; then
+ msgfail
+else
+ msgpass
+fi