From: Michael Schroeder Date: Thu, 1 Aug 2019 14:28:00 +0000 (+0200) Subject: Special updaters handling: put identical to installed also on the list X-Git-Tag: 0.7.6~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=927d72598ace6108b55dccd7ec452438b5bcfd2c;p=thirdparty%2Flibsolv.git Special updaters handling: put identical to installed also on the list We need to do this so that repo priority pruning does the right thing. Fixes issue #343 --- diff --git a/src/solver.c b/src/solver.c index a79d4e34..532748cc 100644 --- a/src/solver.c +++ b/src/solver.c @@ -1724,8 +1724,12 @@ resolve_installed(Solver *solv, int level, int disablerules, Queue *dq) if (rr->p == i && solv->decisionmap[i] >= 0) queue_push(dq, i); while ((p = pool->whatprovidesdata[d++]) != 0) - if (solv->decisionmap[p] >= 0) - queue_push(dq, p); + { + if (solv->decisionmap[p] >= 0) + queue_push(dq, p); + else if (solvable_identical(pool->solvables + p, pool->solvables + i) && rr->p == i && solv->decisionmap[i] >= 0) + queue_push(dq, p); /* identical to installed, put it on the list so we have a repo prio */ + } if (dq->count && solv->update_targets && solv->update_targets->elements[i - installed->start]) prune_to_update_targets(solv, solv->update_targets->elements + solv->update_targets->elements[i - installed->start], dq); if (dq->count)