From: Michael Schroeder Date: Mon, 2 May 2011 13:19:51 +0000 (+0200) Subject: - fix comments X-Git-Tag: BASE-SuSE-Code-12_1-Branch~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8e6473a7818b90fa00f5e6f192003cfc4ddc7db9;p=thirdparty%2Flibsolv.git - fix comments --- diff --git a/src/rules.c b/src/rules.c index 7843231d..8543d44b 100644 --- a/src/rules.c +++ b/src/rules.c @@ -35,6 +35,7 @@ static void solver_createcleandepsmap(Solver *solv); * Check if dependency is possible * * mirrors solver_dep_fulfilled but uses map m instead of the decisionmap + * used in solver_addrpmrulesforweak and solver_createcleandepsmap */ static inline int @@ -46,16 +47,19 @@ dep_possible(Solver *solv, Id dep, Map *m) if (ISRELDEP(dep)) { Reldep *rd = GETRELDEP(pool, dep); - if (rd->flags == REL_AND) + if (rd->flags >= 8) { - if (!dep_possible(solv, rd->name, m)) - return 0; - return dep_possible(solv, rd->evr, m); + if (rd->flags == REL_AND) + { + if (!dep_possible(solv, rd->name, m)) + return 0; + return dep_possible(solv, rd->evr, m); + } + if (rd->flags == REL_NAMESPACE && rd->name == NAMESPACE_SPLITPROVIDES) + return solver_splitprovides(solv, rd->evr); + if (rd->flags == REL_NAMESPACE && rd->name == NAMESPACE_INSTALLED) + return solver_dep_installed(solv, rd->evr); } - if (rd->flags == REL_NAMESPACE && rd->name == NAMESPACE_SPLITPROVIDES) - return solver_splitprovides(solv, rd->evr); - if (rd->flags == REL_NAMESPACE && rd->name == NAMESPACE_INSTALLED) - return solver_dep_installed(solv, rd->evr); } FOR_PROVIDES(p, pp, dep) { @@ -136,7 +140,7 @@ solver_unifyrules(Solver *solv) int i, j; Rule *ir, *jr; - if (solv->nrules <= 1) /* nothing to unify */ + if (solv->nrules <= 2) /* nothing to unify */ return; POOL_DEBUG(SAT_DEBUG_SCHUBI, "----- unifyrules -----\n"); @@ -247,7 +251,7 @@ hashrule(Solver *solv, Id p, Id d, int n) * * resulting watches: * ------------------ - * Direct assertion (no watch needed)( if d <0 ) --> d = 0, w1 = p, w2 = 0 + * Direct assertion (no watch needed) --> d = 0, w1 = p, w2 = 0 * Binary rule: p = first literal, d = 0, w2 = second literal, w1 = p * every other : w1 = p, w2 = whatprovidesdata[d]; * Disabled rule: w1 = 0 @@ -272,11 +276,10 @@ solver_addrule(Solver *solv, Id p, Id d) * multiple times, so we prune those duplicates right away to make * the work for unifyrules a bit easier */ - if (solv->nrules /* we already have rules */ - && !solv->rpmrules_end) /* but are not done with rpm rules */ + if (!solv->rpmrules_end) /* we add rpm rules */ { - r = solv->rules + solv->nrules - 1; /* get the last added rule */ - if (r->p == p && r->d == d && d != 0) /* identical and not user requested */ + r = solv->rules + solv->nrules - 1; /* get the last added rule */ + if (r->p == p && r->d == d && (d != 0 || !r->w2)) return r; } @@ -297,8 +300,8 @@ solver_addrule(Solver *solv, Id p, Id d) if (*dp == -p) return 0; /* rule is self-fulfilling */ - if (n == 1) /* have single provider */ - d = dp[-1]; /* take single literal */ + if (n == 1) /* convert to binary rule */ + d = dp[-1]; } if (n == 1 && p > d && !solv->rpmrules_end) @@ -753,9 +756,9 @@ solver_addrpmrulesforsolvable(Solver *solv, Solvable *s, Map *m) /*------------------------------------------------------------------- * - * Add package rules for weak rules + * Add rules for packages possibly selected in by weak dependencies * - * m: visited solvables + * m: already added solvables */ void @@ -767,12 +770,12 @@ solver_addrpmrulesforweak(Solver *solv, Map *m) int i, n; POOL_DEBUG(SAT_DEBUG_SCHUBI, "----- addrpmrulesforweak -----\n"); - /* foreach solvable in pool */ + /* foreach solvable in pool */ for (i = n = 1; n < pool->nsolvables; i++, n++) { if (i == pool->nsolvables) /* wrap i */ i = 1; - if (MAPTST(m, i)) /* been there */ + if (MAPTST(m, i)) /* already added that one */ continue; s = pool->solvables + i; @@ -784,7 +787,7 @@ solver_addrpmrulesforweak(Solver *solv, Map *m) { /* find possible supplements */ supp = s->repo->idarraydata + s->supplements; - while ((sup = *supp++) != ID_NULL) + while ((sup = *supp++) != 0) if (dep_possible(solv, sup, m)) break; } @@ -793,7 +796,7 @@ solver_addrpmrulesforweak(Solver *solv, Map *m) if (!sup && s->enhances) { supp = s->repo->idarraydata + s->enhances; - while ((sup = *supp++) != ID_NULL) + while ((sup = *supp++) != 0) if (dep_possible(solv, sup, m)) break; } @@ -801,7 +804,7 @@ solver_addrpmrulesforweak(Solver *solv, Map *m) if (!sup) continue; solver_addrpmrulesforsolvable(solv, s, m); - n = 0; /* check all solvables again */ + n = 0; /* check all solvables again because we added solvables to m */ } POOL_DEBUG(SAT_DEBUG_SCHUBI, "----- addrpmrulesforweak end -----\n"); }