From f20dc417de9226c0084b2f108b65642cb4406aed Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Thu, 29 Nov 2012 13:51:10 +0100 Subject: [PATCH] fix targeted dup, we also have to add the obsoleters to the involved map --- src/rules.c | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/src/rules.c b/src/rules.c index a6940df0..7764bdf9 100644 --- a/src/rules.c +++ b/src/rules.c @@ -1241,22 +1241,20 @@ solver_createdupmaps(Solver *solv) if (!targeted && ps->repo != installed) MAPSET(&solv->dupmap, pi); } - if (!targeted) + if (s->repo == installed && solv->obsoletes && solv->obsoletes[p - installed->start]) { - if (solv->obsoletes && solv->obsoletes[p - installed->start]) + Id *opp; + for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;) { - Id *opp; - for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;) - { - ps = pool->solvables + pi; - if (ps->repo == installed) - continue; - MAPSET(&solv->dupinvolvedmap, pi); - MAPSET(&solv->dupmap, pi); - } + ps = pool->solvables + pi; + if (ps->repo == installed) + continue; + MAPSET(&solv->dupinvolvedmap, pi); + if (!targeted) + MAPSET(&solv->dupmap, pi); } } - else if (s->obsoletes) + if (targeted && s->obsoletes) { /* XXX: check obsoletes/provides combination */ obsp = s->repo->idarraydata + s->obsoletes; @@ -1312,22 +1310,20 @@ solver_createdupmaps(Solver *solv) if (!targeted && ps->repo != installed) MAPSET(&solv->dupmap, pi); } - if (!targeted) + if (s->repo == installed && solv->obsoletes && solv->obsoletes[p - installed->start]) { - if (repo == installed && solv->obsoletes && solv->obsoletes[p - installed->start]) + Id *opp; + for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;) { - Id *opp; - for (opp = solv->obsoletes_data + solv->obsoletes[p - installed->start]; (pi = *opp++) != 0;) - { - ps = pool->solvables + pi; - if (ps->repo == installed) - continue; - MAPSET(&solv->dupinvolvedmap, pi); - MAPSET(&solv->dupmap, pi); - } + ps = pool->solvables + pi; + if (ps->repo == installed) + continue; + MAPSET(&solv->dupinvolvedmap, pi); + if (!targeted) + MAPSET(&solv->dupmap, pi); } } - else if (s->obsoletes) + if (targeted && s->obsoletes) { /* XXX: check obsoletes/provides combination */ obsp = s->repo->idarraydata + s->obsoletes; -- 2.47.2