Преглед изворни кода

* 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 пре 15 година
родитељ
комит
32d9baeab0

+ 2 - 1
apt-pkg/packagemanager.cc

@@ -598,7 +598,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate)
    
    
    for (PrvIterator P = instVer.ProvidesList();
    for (PrvIterator P = instVer.ProvidesList();
 	P.end() == false; ++P)
 	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);
    List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States);
 
 

+ 1 - 1
apt-pkg/pkgcache.cc

@@ -632,7 +632,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
 	    continue;
 	    continue;
 	 
 	 
 	 if (IsNegative() == true &&
 	 if (IsNegative() == true &&
-	     ParentPkg() == I.OwnerPkg())
+	     ParentPkg()->Group == I.OwnerPkg()->Group)
 	    continue;
 	    continue;
 	 
 	 
 	 Size++;
 	 Size++;

+ 10 - 0
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
 apt (0.8.15.5.6) UNRELEASED; urgency=low
 
 
   [ Michael Vogt ]
   [ Michael Vogt ]

+ 24 - 0
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