]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Update obsoletes pruning in weak deps handling
authorMichael Schroeder <mls@suse.de>
Fri, 2 Oct 2015 12:03:52 +0000 (14:03 +0200)
committerMichael Schroeder <mls@suse.de>
Fri, 2 Oct 2015 12:06:22 +0000 (14:06 +0200)
This still implemented the old "obsoletes uses provides" handling.
Sync with the rest of the code, so that keepexplicitobsoletes,
obsoleteusesprovides and obsoleteusescolors are obeyed.

src/solver.c

index 3358b6b07f55063b74cb4180e4b80b2da0cea80b..c6cad6b51da28a49baae47a052362c56eef1b200 100644 (file)
@@ -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]))