summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2010-09-03 17:03:52 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2010-09-03 17:03:52 +0200
commit2ba99db8bcde716d7dc2bafc4f9c3a0ba1d70ea9 (patch)
tree4369667b3daca1f5ba0ef2539f6a1ca0bda00877
parent24e936625600312682a34872a2425f3382f3df2f (diff)
remove duplicated test, move test for conflicts higher up, better debug output
-rw-r--r--apt-pkg/algorithms.cc39
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;