summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/algorithms.cc16
-rw-r--r--debian/changelog3
2 files changed, 11 insertions, 8 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 1b0161ffd..b611df172 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -287,13 +287,13 @@ bool pkgApplyStatus(pkgDepCache &Cache)
Cache[I].CandidateVerIter(Cache).Downloadable() == true)
Cache.MarkInstall(I, true, 0, false);
else
- Cache.MarkDelete(I);
+ Cache.MarkDelete(I, false, 0, false);
}
break;
// This means removal failed
case pkgCache::State::HalfInstalled:
- Cache.MarkDelete(I);
+ Cache.MarkDelete(I, false, 0, false);
break;
default:
@@ -774,7 +774,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
if (WasKept == true)
Cache.MarkKeep(Pkg, false, false);
else
- Cache.MarkDelete(Pkg);
+ Cache.MarkDelete(Pkg, false, 0, false);
return false;
}
@@ -903,7 +903,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
OldBreaks < Cache.BrokenCount())
{
if (OldVer == 0)
- Cache.MarkDelete(I);
+ Cache.MarkDelete(I, false, 0, false);
else
Cache.MarkKeep(I, false, false);
}
@@ -942,7 +942,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
{
if (Debug == true)
clog << " Or group remove for " << I.FullName(false) << endl;
- Cache.MarkDelete(I);
+ Cache.MarkDelete(I, false, 0, false);
Change = true;
}
}
@@ -1077,7 +1077,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
{
if (Debug == true)
clog << " Removing " << I.FullName(false) << " rather than change " << Start.TargetPkg().FullName(false) << endl;
- Cache.MarkDelete(I);
+ Cache.MarkDelete(I, false, 0, false);
if (Counter > 1 && Scores[Pkg->ID] > Scores[I->ID])
Scores[I->ID] = Scores[Pkg->ID];
}
@@ -1166,7 +1166,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
if (Debug == true)
clog << " Removing " << I.FullName(false) << " because I can't find " << Start.TargetPkg().FullName(false) << endl;
if (InOr == false)
- Cache.MarkDelete(I);
+ Cache.MarkDelete(I, false, 0, false);
}
Change = true;
@@ -1193,7 +1193,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
{
if (Debug == true)
clog << " Fixing " << I.FullName(false) << " via remove of " << J->Pkg.FullName(false) << endl;
- Cache.MarkDelete(J->Pkg);
+ Cache.MarkDelete(J->Pkg, false, 0, false);
}
}
else
diff --git a/debian/changelog b/debian/changelog
index b12e076d5..ddbc8de89 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -17,6 +17,9 @@ apt (0.9.7.7) UNRELEASED; urgency=low
* cmdline/apt-get.cc:
- do not call Mark{Install,Delete} from the autoremove code with
the FromUser bit set to avoid modifying the auto-installed bit
+ * apt-pkg/algorithms.cc:
+ - ensure pkgProblemResolver calls MarkDelete without FromUser set
+ so that it can't overrule holds and the protection flag
-- Jordi Mallach <jordi@debian.org> Thu, 18 Oct 2012 23:30:46 +0200