*
*/
+static inline Id dep2name(Pool *pool, Id dep)
+{
+ while (ISRELDEP(dep))
+ {
+ Reldep *rd = rd = GETRELDEP(pool, dep);
+ dep = rd->name;
+ }
+ return dep;
+}
+
int
solver_splitprovides(Solver *solv, Id dep)
{
obsp = s->repo->idarraydata + s->obsoletes;
while ((obs = *obsp++) != 0)
{
+ Id obsname = dep2name(pool, obs);
FOR_PROVIDES(p, pp, obs)
{
- if (!solv->obsoleteusesprovides && s->name != pool->solvables[p].name)
+ if (!solv->obsoleteusesprovides && obsname != pool->solvables[p].name)
continue;
addrule(solv, -n, -p);
}
obsp = s->repo->idarraydata + s->obsoletes;
while ((obs = *obsp++) != 0)
{
+ Id obsname = dep2name(pool, obs);
FOR_PROVIDES(p, pp, obs)
{
if (p != -r->w2)
continue;
- if (!solv->obsoleteusesprovides && s->name != pool->solvables[p].name)
+ if (!solv->obsoleteusesprovides && obsname != pool->solvables[p].name)
continue;
*depp = obs;
*sourcep = -r->p;
obsp = s2->repo->idarraydata + s2->obsoletes;
while ((obs = *obsp++) != 0)
{
+ Id obsname = dep2name(pool, obs);
FOR_PROVIDES(p, pp, obs)
{
if (p != -r->p)
continue;
- if (!solv->obsoleteusesprovides && s2->name != pool->solvables[p].name)
+ if (!solv->obsoleteusesprovides && obsname != pool->solvables[p].name)
continue;
*depp = obs;
*sourcep = -r->w2;
addupdaterule(solv, s, 1);
r = solv->rules + solv->nrules - 1;
sr = r - (installed->end - installed->start);
+ unifyrules_sortcmp_data = pool;
if (!unifyrules_sortcmp(r, sr))
{
/* identical rule, kill feature rule */
*
*/
+static inline Id dep2name(Pool *pool, Id dep)
+{
+ while (ISRELDEP(dep))
+ {
+ Reldep *rd = rd = GETRELDEP(pool, dep);
+ dep = rd->name;
+ }
+ return dep;
+}
+
Id *
solver_create_decisions_obsoletesmap(Solver *solv)
{
continue;
obsp = s->repo->idarraydata + s->obsoletes;
while ((obs = *obsp++) != 0)
- FOR_PROVIDES(p, pp, obs)
- {
- if (!solv->obsoleteusesprovides && s->name != pool->solvables[p].name)
- continue;
- if (pool->solvables[p].repo == installed && !obsoletesmap[p])
- {
- obsoletesmap[p] = n;
- obsoletesmap[n]++;
- }
- }
+ {
+ Id obsname = dep2name(pool, obs);
+ FOR_PROVIDES(p, pp, obs)
+ {
+ if (!solv->obsoleteusesprovides && obsname != pool->solvables[p].name)
+ continue;
+ if (pool->solvables[p].repo == installed && !obsoletesmap[p])
+ {
+ obsoletesmap[p] = n;
+ obsoletesmap[n]++;
+ }
+ }
+ }
}
}
return obsoletesmap;