summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlo Vanini <silhusk@gmail.com>2016-04-15 17:30:25 (GMT)
committerCarlo Vanini <silhusk@gmail.com>2016-04-15 17:30:25 (GMT)
commit6db42277651409eeb92fa4f67c64f85434db387e (patch)
treeea231a74ed4bc072e491f3fea1fbd8a6132fad98
parente63d3239a7846eb968151ebdd4f12e0921e0f13a (diff)
Fix "ReInstall" action not being enabled.
Fix mark/Unmark for ReInstall of a package. Testing Done: * select an installed package * mark for re-install * mark for keep or click Undo BUG: 342389 BUG: 342390 REVIEW: 127545
-rw-r--r--src/backend.cpp6
-rw-r--r--src/package.cpp5
2 files changed, 9 insertions, 2 deletions
diff --git a/src/backend.cpp b/src/backend.cpp
index 4fbd382..e01c141 100644
--- a/src/backend.cpp
+++ b/src/backend.cpp
@@ -830,9 +830,13 @@ void Backend::restoreCacheState(const CacheState &state)
if (oldflags == flags)
continue;
+ if ((flags & Package::ToReInstall) && !(oldflags & Package::ToReInstall)) {
+ deps->SetReInstall(pkg->packageIterator(), false);
+ }
+
if (oldflags & Package::ToReInstall) {
deps->MarkInstall(pkg->packageIterator(), true);
- deps->SetReInstall(pkg->packageIterator(), false);
+ deps->SetReInstall(pkg->packageIterator(), true);
} else if (oldflags & Package::ToInstall) {
deps->MarkInstall(pkg->packageIterator(), true);
} else if (oldflags & Package::ToRemove) {
diff --git a/src/package.cpp b/src/package.cpp
index d8305a5..1e43a28 100644
--- a/src/package.cpp
+++ b/src/package.cpp
@@ -200,7 +200,7 @@ void PackagePrivate::initStaticState(const pkgCache::VerIterator &ver, pkgDepCac
// and the cache is reloaded.
bool downloadable = true;
if (!stateCache.CandidateVer ||
- stateCache.CandidateVerIter(*backend->cache()->depCache()).Downloadable())
+ !stateCache.CandidateVerIter(*backend->cache()->depCache()).Downloadable())
downloadable = false;
if (!downloadable)
@@ -1300,6 +1300,9 @@ void Package::setAuto(bool flag)
void Package::setKeep()
{
d->backend->cache()->depCache()->MarkKeep(d->packageIter, false);
+ if (state() & ToReInstall) {
+ d->backend->cache()->depCache()->SetReInstall(d->packageIter, false);
+ }
if (d->backend->cache()->depCache()->BrokenCount() > 0) {
pkgProblemResolver Fix(d->backend->cache()->depCache());
Fix.ResolveByKeep();