summaryrefslogtreecommitdiff
path: root/src/solver.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/solver.c')
-rw-r--r--src/solver.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/solver.c b/src/solver.c
index c759746..fb1554a 100644
--- a/src/solver.c
+++ b/src/solver.c
@@ -3528,7 +3528,7 @@ solver_solve(Solver *solv, Queue *job)
Map installcandidatemap;
Id how, what, select, name, weak, p, pp, d;
Queue q;
- Solvable *s;
+ Solvable *s, *name_s;
Rule *r;
int now, solve_start;
int needduprules = 0;
@@ -4020,6 +4020,7 @@ solver_solve(Solver *solv, Queue *job)
map_grow(&solv->cleandepsmap, installed->end - installed->start);
/* specific solvable: by id or by nevra */
name = (select == SOLVER_SOLVABLE || (select == SOLVER_SOLVABLE_NAME && ISRELDEP(what))) ? 0 : -1;
+ name_s = 0;
if (select == SOLVER_SOLVABLE_ALL) /* hmmm ;) */
{
FOR_POOL_SOLVABLES(p)
@@ -4046,7 +4047,10 @@ solver_solve(Solver *solv, Queue *job)
{
s = pool->solvables + p;
if (installed && s->repo == installed)
- name = !name ? s->name : -1;
+ {
+ name = !name ? s->name : -1;
+ name_s = s;
+ }
solver_addjobrule(solv, -p, 0, 0, i, weak);
}
/* special case for "erase a specific solvable": we also
@@ -4070,6 +4074,8 @@ solver_solve(Solver *solv, Queue *job)
/* keep installcandidates of other jobs */
if (MAPTST(&installcandidatemap, p))
continue;
+ if (pool->implicitobsoleteusescolors && !pool_colormatch(pool, name_s, s))
+ continue;
/* don't add the same rule twice */
for (j = oldnrules; j < k; j++)
if (solv->rules[j].p == -p)