summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2011-08-17 11:13:50 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2011-08-17 11:13:50 +0200
commit32d9baeab02d2399eb8bd2dfa53bb4f679eebd88 (patch)
tree08b5d70c4582c2669a14260b6418c6ccf4460ebb
parent213b88053da331adf07b89ce35c8eb9cff914be4 (diff)
* apt-pkg/packagemanager.cc, apt-pkg/pkgcache.cc:
- ignore "self"-conflicts for all architectures of a package instead of just for the architecture of the package locked at in the ordering of installations too (Closes: #802901)
-rw-r--r--apt-pkg/packagemanager.cc3
-rw-r--r--apt-pkg/pkgcache.cc2
-rw-r--r--debian/changelog10
-rwxr-xr-xtest/integration/test-ubuntu-bug-802901-multiarch-early-remove24
4 files changed, 37 insertions, 2 deletions
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
index 060cd3248..6601d9f6b 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -598,7 +598,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate)
for (PrvIterator P = instVer.ProvidesList();
P.end() == false; ++P)
- CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
+ if (Pkg->Group != P.OwnerPkg()->Group)
+ CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States);
diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc
index ed24d9ea8..6db025bd0 100644
--- a/apt-pkg/pkgcache.cc
+++ b/apt-pkg/pkgcache.cc
@@ -632,7 +632,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
continue;
if (IsNegative() == true &&
- ParentPkg() == I.OwnerPkg())
+ ParentPkg()->Group == I.OwnerPkg()->Group)
continue;
Size++;
diff --git a/debian/changelog b/debian/changelog
index d44d0aaa2..de8f64de4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+apt (0.8.15.5.6+nmu1) UNRELEASED; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/packagemanager.cc, apt-pkg/pkgcache.cc:
+ - ignore "self"-conflicts for all architectures of a package
+ instead of just for the architecture of the package locked at
+ in the ordering of installations too (Closes: #802901)
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Wed, 17 Aug 2011 11:08:02 +0200
+
apt (0.8.15.5.6) UNRELEASED; urgency=low
[ Michael Vogt ]
diff --git a/test/integration/test-ubuntu-bug-802901-multiarch-early-remove b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
new file mode 100755
index 000000000..bdb4e5e4f
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libgl1-mesa-glx' 'amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+insertpackage 'unstable' 'libgl1-mesa-glx' 'i386,amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+
+setupaptarchive
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libgl1-mesa-glx:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-mesa-glx:i386 (2.0 unstable [i386])
+Conf libgl1-mesa-glx:i386 (2.0 unstable [i386])' aptget install libgl1-mesa-glx:i386 -s