diff options
Diffstat (limited to 'apt-pkg/algorithms.cc')
-rw-r--r-- | apt-pkg/algorithms.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 3c8711b74..a46dce2db 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -987,6 +987,23 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) pkgCache::VerIterator Ver(Cache,*V); pkgCache::PkgIterator Pkg = Ver.ParentPkg(); + /* Ignore a target that is not a candidate + This can happen if: + installed package provides video-6 + candidate provides video-8 + now if a package Start breaks/conflicts video-6 + Start.AllTargets() will return the now-installed + versions even though these are not candidates + we can ignore them + */ + if (Cache[Pkg].CandidateVerIter(Cache) != Ver) + { + clog << " Version " << Ver.VerStr() << " for " + << Pkg.Name() << " is not a candidate, ignoring" + << endl; + continue; + } + if (Debug == true) clog << " Considering " << Pkg.FullName(false) << ' ' << (int)Scores[Pkg->ID] << " as a solution to " << I.FullName(false) << ' ' << (int)Scores[I->ID] << endl; |