11 add_patchjobs(Pool *pool, Queue *job)
15 Map installedmap, multiversionmap;
18 map_init(&multiversionmap, 0);
19 map_init(&installedmap, pool->nsolvables);
20 solver_calculate_multiversionmap(pool, job, &multiversionmap);
22 FOR_REPO_SOLVABLES(pool->installed, p, s)
23 MAPSET(&installedmap, p);
25 /* install all patches */
26 for (p = 1; p < pool->nsolvables; p++)
32 s = pool->solvables + p;
33 if (strncmp(pool_id2str(pool, s->name), "patch:", 6) != 0)
35 FOR_PROVIDES(p2, pp, s->name)
37 Solvable *s2 = pool->solvables + p2;
38 if (s2->name != s->name)
40 r = pool_evrcmp(pool, s->evr, s2->evr, EVRCMP_COMPARE);
41 if (r < 0 || (r == 0 && p > p2))
46 type = solvable_lookup_str(s, SOLVABLE_PATCHCATEGORY);
47 if (type && !strcmp(type, "optional"))
49 r = solvable_trivial_installable_map(s, &installedmap, 0, &multiversionmap);
52 if (solvable_lookup_bool(s, UPDATE_RESTART) && r == 0)
59 queue_push2(job, SOLVER_SOLVABLE, p);
61 map_free(&installedmap);
62 map_free(&multiversionmap);