diff options
Diffstat (limited to 'apt-pkg/algorithms.cc')
-rw-r--r-- | apt-pkg/algorithms.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 503a928ac..158564baf 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -985,17 +985,17 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) if (Start->Type == pkgCache::Dep::DpkgBreaks) { - /* Would it help if we upgraded? */ - if (Cache[End] & pkgDepCache::DepGCVer) { + // first, try upgradring 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 (Debug) clog << " Upgrading " << Pkg.Name() << " due to Breaks field in " << I.Name() << endl; Cache.MarkInstall(Pkg, false, 0, false); continue; } - if (Debug) - clog << " Will not break " << Pkg.Name() << " as stated in Breaks field in " << I.Name() <<endl; - Cache.MarkKeep(I, false, false); - continue; } // Skip adding to the kill list if it is protected @@ -1066,6 +1066,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) if ((Cache[J->Dep] & pkgDepCache::DepGNow) == 0) { if (J->Dep->Type == pkgCache::Dep::Conflicts || + J->Dep->Type == pkgCache::Dep::DpkgBreaks || J->Dep->Type == pkgCache::Dep::Obsoletes) { if (Debug == true) @@ -1107,8 +1108,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) return _error->Error(_("Unable to correct problems, you have held broken packages.")); } - // set the auto-flags (mvo: I'm not sure if we _really_ need this, but - // I didn't managed + // set the auto-flags (mvo: I'm not sure if we _really_ need this) pkgCache::PkgIterator I = Cache.PkgBegin(); for (;I.end() != true; I++) { if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) { |