summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2016-10-27 14:57:05 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2016-10-27 14:57:05 +0900
commit19032dd0c1d2167793399473a1b490be1b635d17 (patch)
tree49a7c1e5c3cb09f75987bd3dda022e678562f29a /src
parent2903497e256388eff53b408875c0f2239c3566cb (diff)
downloadlibsolv-19032dd0c1d2167793399473a1b490be1b635d17.tar.gz
libsolv-19032dd0c1d2167793399473a1b490be1b635d17.tar.bz2
libsolv-19032dd0c1d2167793399473a1b490be1b635d17.zip
Imported Upstream version 0.6.16upstream/0.6.16
Change-Id: Ie9a7a7345406dc0b4a9637e42502e2d98d601a46 Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'src')
-rw-r--r--src/rules.c8
-rw-r--r--src/solver.c2
2 files changed, 8 insertions, 2 deletions
diff --git a/src/rules.c b/src/rules.c
index 248b1cd..70d6b07 100644
--- a/src/rules.c
+++ b/src/rules.c
@@ -1325,7 +1325,7 @@ solver_addupdaterule(Solver *solv, Solvable *s, int allow_all)
}
}
}
- if (!isorphaned && p == -SYSTEMSOLVABLE && solv->dupmap.size)
+ if (!isorphaned && p == -SYSTEMSOLVABLE && qs.count && solv->dupmap.size)
p = s - pool->solvables; /* let the dup rules sort it out */
if (qs.count && p == -SYSTEMSOLVABLE)
p = queue_shift(&qs);
@@ -1864,6 +1864,12 @@ solver_addduprules(Solver *solv, Map *addedmap)
solver_addrule(solv, -p, 0, solv->specialupdaters[p - installed->start]);
continue;
}
+ if (!r->p || (r->p == p && !r->d && !r->w2))
+ {
+ /* this is an orphan */
+ MAPSET(&solv->dupmap, p); /* for best rules processing */
+ continue;
+ }
solver_addrule(solv, -p, 0, 0); /* no match, sorry */
}
}
diff --git a/src/solver.c b/src/solver.c
index 2e28b7d..261f367 100644
--- a/src/solver.c
+++ b/src/solver.c
@@ -228,7 +228,7 @@ autouninstall(Solver *solv, Id *problem)
if (solv->keep_orphans)
{
r = solv->rules + v;
- if (!r->d && r->p == (solv->installed->start + (v - solv->updaterules)))
+ if (!r->d && !r->w2 && r->p == (solv->installed->start + (v - solv->updaterules)))
{
lastfeature = v;
lastupdate = 0;