- improve infarch/dup rule problem handling
authorMichael Schroeder <mls@suse.de>
Thu, 22 Jan 2009 14:59:32 +0000 (15:59 +0100)
committerMichael Schroeder <mls@suse.de>
Thu, 22 Jan 2009 14:59:32 +0000 (15:59 +0100)
src/solver.c
src/solverdebug.c
tools/installcheck.c

index 5021484..33edbe4 100644 (file)
@@ -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;
     }
index cdd783e..6a49729 100644 (file)
@@ -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);
index e70a828..1545212 100644 (file)
@@ -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;
-                   }   
+                   }
                }
            }
        }