From: Michael Schroeder Date: Wed, 20 Sep 2017 14:16:04 +0000 (+0200) Subject: solver_get_cleandeps: filter packages that just got updated X-Git-Tag: 0.6.30~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db9368b34a0bf654ca5ceba6bfd951f5c4988bcd;p=thirdparty%2Flibsolv.git solver_get_cleandeps: filter packages that just got updated Those don't count as erase. --- diff --git a/src/solver.c b/src/solver.c index 6edc66f9..4775e31a 100644 --- a/src/solver.c +++ b/src/solver.c @@ -4437,9 +4437,11 @@ void solver_get_orphaned(Solver *solv, Queue *orphanedq) void solver_get_cleandeps(Solver *solv, Queue *cleandepsq) { + Pool *pool = solv->pool; Repo *installed = solv->installed; Solvable *s; - Id p; + Rule *r; + Id p, pp, pr; queue_empty(cleandepsq); if (!installed || !solv->cleandepsmap.size) @@ -4448,6 +4450,16 @@ void solver_get_cleandeps(Solver *solv, Queue *cleandepsq) { if (!MAPTST(&solv->cleandepsmap, p - installed->start) || solv->decisionmap[p] >= 0) continue; + /* now check the update rule */ + r = solv->rules + solv->updaterules + (p - solv->installed->start); + if (r->p) + { + FOR_RULELITERALS(pr, pp, r) + if (solv->decisionmap[pr] > 0) + break; + if (pr) + continue; + } queue_push(cleandepsq, p); } }