From: Michael Vogt Date: Thu, 6 Feb 2014 06:10:38 +0000 (+0100) Subject: Merge remote-tracking branch 'mvo/bugfix/multiarch-upgrade' into debian/sid X-Git-Tag: 0.9.15.1~2 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/ea9e09ef91f688a85d3e04d31163cfe0ef09c59c?ds=sidebyside;hp=-c Merge remote-tracking branch 'mvo/bugfix/multiarch-upgrade' into debian/sid --- ea9e09ef91f688a85d3e04d31163cfe0ef09c59c diff --combined apt-pkg/depcache.cc index 7e75a6fe3,a3bb4fd3d..c39e8c628 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@@ -1134,13 -1134,8 +1134,13 @@@ bool pkgDepCache::MarkInstall(PkgIterat std::clog << OutputInDepth(Depth) << Start << " can't be satisfied!" << std::endl; if (Start.IsCritical() == false) continue; - // if the dependency was critical, we can't install it, so remove it again - MarkDelete(Pkg,false,Depth + 1, false); + // if the dependency was critical, we have absolutely no chance to install it, + // so if it wasn't installed remove it again. If it was, discard the candidate + // as the problemresolver will trip over it otherwise trying to install it (#735967) + if (Pkg->CurrentVer == 0) + MarkDelete(Pkg,false,Depth + 1, false); + else + SetCandidateVersion(Pkg.CurrentVer()); return false; } @@@ -1258,6 -1253,11 +1258,11 @@@ if (PkgState[Pkg->ID].InstallVer == 0) continue; + /* Ignore negative dependencies that we are not going to + get installed */ + if (PkgState[Pkg->ID].InstallVer != *I) + continue; + if ((Start->Version != 0 || TrgPkg != Pkg) && PkgState[Pkg->ID].CandidateVer != PkgState[Pkg->ID].InstallVer && PkgState[Pkg->ID].CandidateVer != *I &&