From d1e903af472f97cfce637a55699368aeacc7d8f6 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Fri, 18 Dec 2009 18:08:49 +0100 Subject: [PATCH] - disable update rule in noobsoletes case if installed package is to be kept, fixes #564239 --- src/rules.c | 21 +++++++++++++++------ src/solverdebug.c | 2 ++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/rules.c b/src/rules.c index 4629c06..897ed19 100644 --- a/src/rules.c +++ b/src/rules.c @@ -928,11 +928,6 @@ solver_addupdaterule(Solver *solv, Solvable *s, int allow_all) } qs.elements[j++] = qs.elements[i]; } - if (j == 0 && p == -SYSTEMSOLVABLE && solv->distupgrade) - { - queue_push(&solv->orphaned, s - pool->solvables); /* treat as orphaned */ - j = qs.count; - } if (j < qs.count) { if (d && solv->updatesystem && solv->installed && s->repo == solv->installed) @@ -941,6 +936,11 @@ solver_addupdaterule(Solver *solv, Solvable *s, int allow_all) solv->multiversionupdaters = sat_calloc(solv->installed->end - solv->installed->start, sizeof(Id)); solv->multiversionupdaters[s - pool->solvables - solv->installed->start] = d; } + if (j == 0 && p == -SYSTEMSOLVABLE && solv->distupgrade) + { + queue_push(&solv->orphaned, s - pool->solvables); /* treat as orphaned */ + j = qs.count; + } qs.count = j; } } @@ -1358,7 +1358,16 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) if (!installed) return; if (solv->noobsoletes.size && MAPTST(&solv->noobsoletes, what)) - return; + { + /* XXX: remove if we always do distupgrade with DUP rules */ + if (solv->distupgrade && s->repo == installed) + { + queue_push(q, DISABLE_UPDATE); + queue_push(q, what); + return; + } + return; + } if (s->repo == installed) { queue_push(q, DISABLE_UPDATE); diff --git a/src/solverdebug.c b/src/solverdebug.c index 1f1f9c6..c3dfd9b 100644 --- a/src/solverdebug.c +++ b/src/solverdebug.c @@ -355,6 +355,8 @@ solver_printdecisions(Solver *solv) { case SOLVER_TRANSACTION_INSTALL: case SOLVER_TRANSACTION_ERASE: + case SOLVER_TRANSACTION_MULTIINSTALL: + case SOLVER_TRANSACTION_MULTIREINSTALL: POOL_DEBUG(SAT_DEBUG_RESULT, "\n"); break; case SOLVER_TRANSACTION_REINSTALL: -- 2.7.4