From: Michael Schroeder Date: Thu, 22 Jan 2009 14:59:32 +0000 (+0100) Subject: - improve infarch/dup rule problem handling X-Git-Tag: BASE-SuSE-Code-12_1-Branch~308^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=756bb5ca2010781f4ac336672c844394f374f03f;p=thirdparty%2Flibsolv.git - improve infarch/dup rule problem handling --- diff --git a/src/solver.c b/src/solver.c index 5021484a..33edbe4d 100644 --- a/src/solver.c +++ b/src/solver.c @@ -3821,7 +3821,7 @@ solver_problemruleinfo(Solver *solv, Queue *job, Id rid, Id *depp, Id *sourcep, { r = solv->rules + rid; *depp = r->p < 0 ? pool->solvables[-r->p].name : 0; - *sourcep = 0; + *sourcep = r->p < 0 ? -r->p : 0; *targetp = 0; return SOLVER_PROBLEM_INFARCH_RULE; } @@ -3829,7 +3829,7 @@ solver_problemruleinfo(Solver *solv, Queue *job, Id rid, Id *depp, Id *sourcep, { r = solv->rules + rid; *depp = r->p < 0 ? pool->solvables[-r->p].name : 0; - *sourcep = 0; + *sourcep = r->p < 0 ? -r->p : 0; *targetp = 0; return SOLVER_PROBLEM_DISTUPGRADE_RULE; } diff --git a/src/solverdebug.c b/src/solverdebug.c index cdd783ef..6a49729d 100644 --- a/src/solverdebug.c +++ b/src/solverdebug.c @@ -394,10 +394,12 @@ solver_printprobleminfo(Solver *solv, Queue *job, Id problem) switch (solver_problemruleinfo(solv, job, probr, &dep, &source, &target)) { case SOLVER_PROBLEM_DISTUPGRADE_RULE: - POOL_DEBUG(SAT_DEBUG_RESULT, "install %s from distupgrade repositories\n", dep2str(pool, dep)); + s = pool_id2solvable(pool, source); + POOL_DEBUG(SAT_DEBUG_RESULT, "%s does not belong to a distupgrade repository\n", solvable2str(pool, s)); return; case SOLVER_PROBLEM_INFARCH_RULE: - POOL_DEBUG(SAT_DEBUG_RESULT, "do not install %s because of inferior architecture\n", dep2str(pool, dep)); + s = pool_id2solvable(pool, source); + POOL_DEBUG(SAT_DEBUG_RESULT, "%s has inferior architecture\n", solvable2str(pool, s)); return; case SOLVER_PROBLEM_UPDATE_RULE: s = pool_id2solvable(pool, source); diff --git a/tools/installcheck.c b/tools/installcheck.c index e70a8286..15452125 100644 --- a/tools/installcheck.c +++ b/tools/installcheck.c @@ -244,6 +244,12 @@ main(int argc, char **argv) Id dep, source, target; switch (solver_problemruleinfo(solv, &job, probr, &dep, &source, &target)) { + case SOLVER_PROBLEM_DISTUPGRADE_RULE: + break; + case SOLVER_PROBLEM_INFARCH_RULE: + s = pool_id2solvable(pool, source); + printf(" %s has inferior architecture\n", solvable2str(pool, s)); + break; case SOLVER_PROBLEM_UPDATE_RULE: break; case SOLVER_PROBLEM_JOB_RULE: @@ -295,7 +301,7 @@ main(int argc, char **argv) s = pool_id2solvable(pool, source); printf(" package %s conflicts with %s provided by itself\n", solvable2str(pool, s), dep2str(pool, dep)); break; - } + } } } }