+solver_add_exclude_from_weak(Solver *solv)
+{
+ Queue *job = &solv->job;
+ Pool *pool = solv->pool;
+ int i;
+ Id p, pp, how, what, select;
+for (i = 0; i < job->count; i += 2)
+ {
+ how = job->elements[i];
+ if ((how & SOLVER_JOBMASK) != SOLVER_EXCLUDEFROMWEAK)
+ continue;
+ if (!solv->excludefromweakmap.size)
+ map_grow(&solv->excludefromweakmap, pool->nsolvables);
+ what = job->elements[i + 1];
+ select = how & SOLVER_SELECTMASK;
+ if (select == SOLVER_SOLVABLE_REPO)
+ {
+ Repo *repo = pool_id2repo(pool, what);
+ if (repo)
+ {
+ Solvable *s;
+ FOR_REPO_SOLVABLES(repo, p, s)
+ MAPSET(&solv->excludefromweakmap, p);
+ }
+ }
+ FOR_JOB_SELECT(p, pp, select, what)
+ MAPSET(&solv->excludefromweakmap, p);
+ }
+}
+
+static void