From: Michael Schroeder Date: Fri, 2 Oct 2015 12:03:52 +0000 (+0200) Subject: Update obsoletes pruning in weak deps handling X-Git-Tag: 0.6.14~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e810d2f44efab6f2fd598f0c2643a5a3741edae2;p=thirdparty%2Flibsolv.git Update obsoletes pruning in weak deps handling This still implemented the old "obsoletes uses provides" handling. Sync with the rest of the code, so that keepexplicitobsoletes, obsoleteusesprovides and obsoleteusescolors are obeyed. --- diff --git a/src/solver.c b/src/solver.c index 3358b6b0..c6cad6b5 100644 --- a/src/solver.c +++ b/src/solver.c @@ -2544,13 +2544,20 @@ solver_run_sat(Solver *solv, int disablerules, int doweak) continue; if (solv->decisionmap[p] <= 0) continue; - if (solv->multiversion.size && MAPTST(&solv->multiversion, p)) + if (!solv->keepexplicitobsoletes && solv->multiversion.size && MAPTST(&solv->multiversion, p)) continue; obsp = s->repo->idarraydata + s->obsoletes; /* foreach obsoletes */ while ((obs = *obsp++) != 0) FOR_PROVIDES(po, ppo, obs) - MAPSET(&obsmap, po); + { + Solvable *pos = pool->solvables + po; + if (!pool->obsoleteusesprovides && !pool_match_nevr(pool, pos, obs)) + continue; + if (pool->obsoleteusescolors && !pool_colormatch(pool, s, pos)) + continue; + MAPSET(&obsmap, po); + } } for (i = j = 0; i < dqs.count; i++) if (!MAPTST(&obsmap, dqs.elements[i]))