From: Michael Schroeder Date: Thu, 29 Nov 2012 12:51:10 +0000 (+0100) Subject: fix targeted dup, we also have to add the obsoleters to the involved map X-Git-Tag: BASE-SuSE-Code-12_3-Branch~140 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f20dc417de9226c0084b2f108b65642cb4406aed;p=thirdparty%2Flibsolv.git fix targeted dup, we also have to add the obsoleters to the involved map --- 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;