extern void solver_calculate_noobsmap(Pool *pool, Queue *job, Map *multiversionmap); /* obsolete */
extern void solver_create_state_maps(Solver *solv, Map *installedmap, Map *conflictsmap);
-/* XXX: why is this not static? */
-extern Id *solver_create_decisions_obsoletesmap(Solver *solv);
-
extern void solver_calc_duchanges(Solver *solv, DUChanges *mps, int nmps);
extern int solver_calc_installsizechange(Solver *solv);
extern void solver_trivial_installable(Solver *solv, Queue *pkgs, Queue *res);
#include "policy.h"
-/*
- * create obsoletesmap from solver decisions
- *
- * for solvables in installed repo:
- * 0 - not obsoleted
- * p - one of the packages that obsolete us
- * for all others:
- * n - number of packages this package obsoletes
- *
- */
-
-/* OBSOLETE: use transaction code instead! */
-
-Id *
-solver_create_decisions_obsoletesmap(Solver *solv)
-{
- Pool *pool = solv->pool;
- Repo *installed = solv->installed;
- Id p, *obsoletesmap = NULL;
- int i;
- Solvable *s;
-
- obsoletesmap = (Id *)solv_calloc(pool->nsolvables, sizeof(Id));
- if (installed)
- {
- for (i = 0; i < solv->decisionq.count; i++)
- {
- Id pp, n;
- int multi;
-
- n = solv->decisionq.elements[i];
- if (n < 0)
- continue;
- if (n == SYSTEMSOLVABLE)
- continue;
- s = pool->solvables + n;
- if (s->repo == installed) /* obsoletes don't count for already installed packages */
- continue;
- multi = solv->multiversion.size && MAPTST(&solv->multiversion, n);
- FOR_PROVIDES(p, pp, s->name)
- {
- Solvable *ps = pool->solvables + p;
- if (multi && (s->name != ps->name || s->evr != ps->evr || s->arch != ps->arch))
- continue;
- if (!pool->implicitobsoleteusesprovides && s->name != ps->name)
- continue;
- if (pool->obsoleteusescolors && !pool_colormatch(pool, s, ps))
- continue;
- if (ps->repo == installed && !obsoletesmap[p])
- {
- obsoletesmap[p] = n;
- obsoletesmap[n]++;
- }
- }
- }
- for (i = 0; i < solv->decisionq.count; i++)
- {
- Id obs, *obsp;
- Id pp, n;
-
- n = solv->decisionq.elements[i];
- if (n < 0)
- continue;
- if (n == SYSTEMSOLVABLE)
- continue;
- s = pool->solvables + n;
- if (s->repo == installed) /* obsoletes don't count for already installed packages */
- continue;
- if (!s->obsoletes)
- continue;
- if (solv->multiversion.size && MAPTST(&solv->multiversion, n))
- continue;
- obsp = s->repo->idarraydata + s->obsoletes;
- while ((obs = *obsp++) != 0)
- {
- FOR_PROVIDES(p, pp, obs)
- {
- Solvable *ps = pool->solvables + p;
- if (!pool->obsoleteusesprovides && !pool_match_nevr(pool, ps, obs))
- continue;
- if (pool->obsoleteusescolors && !pool_colormatch(pool, s, ps))
- continue;
- if (pool->solvables[p].repo == installed && !obsoletesmap[p])
- {
- obsoletesmap[p] = n;
- obsoletesmap[n]++;
- }
- }
- }
- }
- }
- return obsoletesmap;
-}
-
void
solver_printruleelement(Solver *solv, int type, Rule *r, Id v)
{