Skip to content

Commit 8185d17

Browse files
committed
Implement color filtering when adding update targets
The old code created update jobs spanning multiple architectures even if "implicitobsoleteusescolors" was set. Also add color filtering in replaces_installed_package, where it seems to be also missing Fixes issue #583.
1 parent f31e3d3 commit 8185d17

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/solver.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,8 +1148,11 @@ replaces_installed_package(Pool *pool, Id p, Map *noupdate)
11481148
FOR_PROVIDES(p2, pp2, s->name)
11491149
{
11501150
s2 = pool->solvables + p2;
1151-
if (s2->repo == installed && s2->name == s->name && !(noupdate && MAPTST(noupdate, p2 - installed->start)))
1152-
return 1;
1151+
if (s2->name != s->name || s2->repo != installed || (noupdate && MAPTST(noupdate, p2 - installed->start)))
1152+
continue;
1153+
if (pool->implicitobsoleteusescolors && !pool_colormatch(pool, s, s2))
1154+
continue;
1155+
return 1;
11531156
}
11541157
if (!s->obsoletes)
11551158
return 0;
@@ -1159,7 +1162,7 @@ replaces_installed_package(Pool *pool, Id p, Map *noupdate)
11591162
FOR_PROVIDES(p2, pp2, obs)
11601163
{
11611164
s2 = pool->solvables + p2;
1162-
if (s2->repo != pool->installed || (noupdate && MAPTST(noupdate, p2 - installed->start)))
1165+
if (s2->repo != installed || (noupdate && MAPTST(noupdate, p2 - installed->start)))
11631166
continue;
11641167
if (!pool->obsoleteusesprovides && !pool_match_nevr(pool, s2, obs))
11651168
continue;
@@ -3354,8 +3357,11 @@ add_update_target(Solver *solv, Id p, Id how)
33543357
FOR_PROVIDES(pi, pip, s->name)
33553358
{
33563359
Solvable *si = pool->solvables + pi;
3357-
if (si->repo == installed && si->name == s->name && pi != p)
3358-
queue_push2(solv->update_targets, pi, p);
3360+
if (si->repo != installed || si->name != s->name || pi == p)
3361+
continue;
3362+
if (pool->implicitobsoleteusescolors && !pool_colormatch(pool, s, si))
3363+
continue;
3364+
queue_push2(solv->update_targets, pi, p);
33593365
}
33603366
return;
33613367
}
@@ -3366,6 +3372,8 @@ add_update_target(Solver *solv, Id p, Id how)
33663372
Solvable *si = pool->solvables + pi;
33673373
if (si->repo != installed || si->name != s->name)
33683374
continue;
3375+
if (pool->implicitobsoleteusescolors && !pool_colormatch(pool, s, si))
3376+
continue;
33693377
if (how & SOLVER_FORCEBEST)
33703378
{
33713379
if (!solv->bestupdatemap.size)

0 commit comments

Comments
 (0)