diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2010-09-03 17:03:52 +0200 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2010-09-03 17:03:52 +0200 |
commit | 2ba99db8bcde716d7dc2bafc4f9c3a0ba1d70ea9 (patch) | |
tree | 4369667b3daca1f5ba0ef2539f6a1ca0bda00877 /apt-pkg/algorithms.cc | |
parent | 24e936625600312682a34872a2425f3382f3df2f (diff) |
remove duplicated test, move test for conflicts higher up, better debug output
Diffstat (limited to 'apt-pkg/algorithms.cc')
-rw-r--r-- | apt-pkg/algorithms.cc | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index bd9a9df62..a298be493 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -987,22 +987,21 @@ 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) + /* This is a conflicts, and the version we are looking + at is not the currently selected version of the + package, which means it is not necessary to + remove/keep */ + if (Cache[Pkg].InstallVer != Ver && + (Start->Type == pkgCache::Dep::Conflicts || + Start->Type == pkgCache::Dep::DpkgBreaks || + Start->Type == pkgCache::Dep::Obsoletes)) { - if (Debug) - clog << " Version " << Ver.VerStr() << " for " - << Pkg.Name() << " is not a candidate, ignoring" + if (Debug) + clog << " Conflicts//Breaks against version " + << Ver.VerStr() << " for " << Pkg.Name() + << " but that is not InstVer, ignoring" << endl; - continue; + continue; } if (Debug == true) @@ -1087,22 +1086,14 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) } else { - /* This is a conflicts, and the version we are looking - at is not the currently selected version of the - package, which means it is not necessary to - remove/keep */ - if (Cache[Pkg].InstallVer != Ver && - (Start->Type == pkgCache::Dep::Conflicts || - Start->Type == pkgCache::Dep::Obsoletes)) - continue; - if (Start->Type == pkgCache::Dep::DpkgBreaks) { // first, try upgrading the package, if that // does not help, the breaks goes onto the // kill list + // // FIXME: use DoUpgrade(Pkg) instead? - if (Cache[End] & pkgDepCache::DepGCVer) + if (Cache[End] & pkgDepCache::DepGCVer) { if (Debug) clog << " Upgrading " << Pkg.FullName(false) << " due to Breaks field in " << I.FullName(false) << endl; |