]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Rename bestrules_pkg to bestrules_info, choicerules_ref to choicerules_info
authorMichael Schroeder <mls@suse.de>
Wed, 19 Dec 2018 13:25:01 +0000 (14:25 +0100)
committerMichael Schroeder <mls@suse.de>
Wed, 19 Dec 2018 13:25:01 +0000 (14:25 +0100)
src/cleandeps.c
src/problems.c
src/rules.c
src/solver.c
src/solver.h

index b2fde31734d4cb0558443bad3958b3b3f4942336..8ef6fd3bf9e85202db3db222a9591298b48b26f9 100644 (file)
@@ -1367,11 +1367,11 @@ solver_check_cleandeps_mistakes(Solver *solv)
          if (!r->p || r == fr || cleandeps_rule_is_true(solv, r))
            {
              /* update rule is true, check best rules */
-             if (!solv->bestrules_pkg)
+             if (!solv->bestrules_info)
                continue;
              nj = solv->bestrules_end - solv->bestrules;
-             for (j = 0; j < nj; j++)
-               if (solv->bestrules_pkg[j] == i)
+             for (j = solv->bestrules_up - solv->bestrules; j < nj; j++)
+               if (solv->bestrules_info[j] == i)
                  {
                    r = solv->rules + solv->bestrules + j;
                    if (!cleandeps_rule_is_true(solv, r))
index 2b5cefda3ca00956ec7057eeebd1f73b51632bd4..6f2ad4b1629054ecf549f165a639a70c6312d9ad 100644 (file)
@@ -64,12 +64,12 @@ solver_disableproblem(Solver *solv, Id v)
     }
   v = -(v + 1);
   jp = solv->ruletojob.elements;
-  if (solv->bestrules_pkg)
+  if (solv->bestrules_info)
     {
       int ni = solv->bestrules_up - solv->bestrules;
       for (i = 0; i < ni; i++)
        {
-         int j = solv->bestrules_pkg[i];
+         int j = solv->bestrules_info[i];
          if (j < 0 && jp[-j - solv->jobrules] == v)
            solver_disablerule(solv, solv->rules + solv->bestrules + i);
        }
@@ -131,12 +131,12 @@ solver_enableproblem(Solver *solv, Id v)
     }
   v = -(v + 1);
   jp = solv->ruletojob.elements;
-  if (solv->bestrules_pkg)
+  if (solv->bestrules_info)
     {
       int ni = solv->bestrules_up - solv->bestrules;
       for (i = 0; i < ni; i++)
        {
-         int j = solv->bestrules_pkg[i];
+         int j = solv->bestrules_info[i];
          if (j < 0 && jp[-j - solv->jobrules] == v)
            solver_enablerule(solv, solv->rules + solv->bestrules + i);
        }
@@ -155,8 +155,8 @@ solver_ruletoproblem(Solver *solv, Id rid)
 {
   if (rid >= solv->jobrules && rid < solv->jobrules_end)
     rid = -(solv->ruletojob.elements[rid - solv->jobrules] + 1);
-  else if (rid >= solv->bestrules && rid < solv->bestrules_up && solv->bestrules_pkg[rid - solv->bestrules] < 0)
-    rid = -(solv->ruletojob.elements[-solv->bestrules_pkg[rid - solv->bestrules] - solv->jobrules] + 1);
+  else if (rid >= solv->bestrules && rid < solv->bestrules_up && solv->bestrules_info[rid - solv->bestrules] < 0)
+    rid = -(solv->ruletojob.elements[-solv->bestrules_info[rid - solv->bestrules] - solv->jobrules] + 1);
   else if (rid > solv->infarchrules && rid < solv->infarchrules_end)
     {
       Pool *pool = solv->pool;
@@ -252,13 +252,13 @@ solver_autouninstall(Solver *solv, int start)
            continue;
          if (pool->considered && !MAPTST(pool->considered, p))
            continue;   /* do not uninstalled disabled packages */
-         if (solv->bestrules_pkg && solv->bestrules_end > solv->bestrules)
+         if (solv->bestrules_info && solv->bestrules_end > solv->bestrules)
            {
              int j;
              for (j = start + 1; j < solv->problems.count - 1; j++)
                {
                  Id vv = solv->problems.elements[j];
-                 if (vv >= solv->bestrules && vv < solv->bestrules_end && solv->bestrules_pkg[vv - solv->bestrules] == p)
+                 if (vv >= solv->bestrules && vv < solv->bestrules_end && solv->bestrules_info[vv - solv->bestrules] == p)
                    break;
                }
              if (j < solv->problems.count - 1)
@@ -678,7 +678,7 @@ convertsolution(Solver *solv, Id why, Queue *solutionq)
        if (p > 0 && solv->decisionmap[p] > 0)
          return;       /* false alarm */
       /* check update/feature rule */
-      p = solv->bestrules_pkg[why - solv->bestrules];
+      p = solv->bestrules_info[why - solv->bestrules];
       if (p < 0)
        {
          /* install job */
index 1c11151a8a71cf67eceb53652c1cb62f92d963ae..2087b35c7bccbd0ec1ffb4c336db543d6195bb76 100644 (file)
@@ -1463,12 +1463,12 @@ disableupdaterule(Solver *solv, Id p)
   r = solv->rules + solv->featurerules + (p - solv->installed->start);
   if (r->p && r->d >= 0)
     solver_disablerule(solv, r);
-  if (solv->bestrules_pkg)
+  if (solv->bestrules_info)
     {
       int i, ni;
       ni = solv->bestrules_end - solv->bestrules;
       for (i = solv->bestrules_up - solv->bestrules; i < ni; i++)
-       if (solv->bestrules_pkg[i] == p)
+       if (solv->bestrules_info[i] == p)
          solver_disablerule(solv, solv->rules + solv->bestrules + i);
     }
 }
@@ -1506,12 +1506,12 @@ reenableupdaterule(Solver *solv, Id p)
            }
        }
     }
-  if (solv->bestrules_pkg)
+  if (solv->bestrules_info)
     {
       int i, ni;
       ni = solv->bestrules_end - solv->bestrules;
       for (i = solv->bestrules_up - solv->bestrules; i < ni; i++)
-       if (solv->bestrules_pkg[i] == p)
+       if (solv->bestrules_info[i] == p)
          solver_enablerule(solv, solv->rules + solv->bestrules + i);
     }
 }
@@ -2719,8 +2719,8 @@ solver_ruleinfo(Solver *solv, Id rid, Id *fromp, Id *top, Id *depp)
     }
   if (rid >= solv->bestrules && rid < solv->bestrules_end)
     {
-      if (fromp && solv->bestrules_pkg[rid - solv->bestrules] > 0)
-       *fromp = solv->bestrules_pkg[rid - solv->bestrules];
+      if (fromp && solv->bestrules_info[rid - solv->bestrules] > 0)
+       *fromp = solv->bestrules_info[rid - solv->bestrules];
       return SOLVER_RULE_BEST;
     }
   if (rid >= solv->yumobsrules && rid < solv->yumobsrules_end)
@@ -2834,7 +2834,7 @@ Id
 solver_rule2pkgrule(Solver *solv, Id rid)
 {
   if (rid >= solv->choicerules && rid < solv->choicerules_end)
-    return solv->choicerules_ref[rid - solv->choicerules];
+    return solv->choicerules_info[rid - solv->choicerules];
   if (rid >= solv->recommendsrules && rid < solv->recommendsrules_end)
     return solv->recommendsrules_info[rid - solv->recommendsrules];
   return 0;
@@ -2952,7 +2952,7 @@ solver_addchoicerules(Solver *solv)
   Pool *pool = solv->pool;
   Map m, mneg;
   Rule *r;
-  Queue q, qi, qcheck;
+  Queue q, qi, qcheck, infoq;
   int i, j, rid, havechoice;
   Id p, d, pp;
   Id p2, pp2;
@@ -2968,10 +2968,11 @@ solver_addchoicerules(Solver *solv)
       return;
     }
   now = solv_timems(0);
-  solv->choicerules_ref = solv_calloc(solv->pkgrules_end, sizeof(Id));
+  solv->choicerules_info = solv_calloc(solv->pkgrules_end, sizeof(Id));
   queue_init(&q);
   queue_init(&qi);
   queue_init(&qcheck);
+  queue_init(&infoq);
   map_init(&m, pool->nsolvables);
   map_init(&mneg, pool->nsolvables);
   /* set up negative assertion map from infarch and dup rules */
@@ -3160,7 +3161,7 @@ solver_addchoicerules(Solver *solv)
 
       solver_addrule(solv, r->p, 0, d);
       queue_push(&solv->weakruleq, solv->nrules - 1);
-      solv->choicerules_ref[solv->nrules - 1 - solv->choicerules] = rid;
+      queue_push(&infoq, rid);
 #if 0
       printf("OLD ");
       solver_printrule(solv, SOLV_DEBUG_RESULT, solv->rules + rid);
@@ -3168,14 +3169,15 @@ solver_addchoicerules(Solver *solv)
       solver_printrule(solv, SOLV_DEBUG_RESULT, solv->rules + solv->nrules - 1);
 #endif
     }
+  if (infoq.count)
+    solv->choicerules_info = solv_memdup2(infoq.elements, infoq.count, sizeof(Id));
   queue_free(&q);
   queue_free(&qi);
   queue_free(&qcheck);
+  queue_free(&infoq);
   map_free(&m);
   map_free(&mneg);
   solv->choicerules_end = solv->nrules;
-  /* shrink choicerules_ref */
-  solv->choicerules_ref = solv_realloc2(solv->choicerules_ref, solv->choicerules_end - solv->choicerules, sizeof(Id));
   POOL_DEBUG(SOLV_DEBUG_STATS, "choice rule creation took %d ms\n", solv_timems(now));
 }
 
@@ -3191,7 +3193,7 @@ solver_disablechoicerules(Solver *solv, Rule *r)
   Rule *or;
 
   solver_disablerule(solv, r);
-  or = solv->rules + solv->choicerules_ref[(r - solv->rules) - solv->choicerules];
+  or = solv->rules + solv->choicerules_info[(r - solv->rules) - solv->choicerules];
   map_init(&m, pool->nsolvables);
   FOR_RULELITERALS(p, pp, or)
     if (p > 0)
@@ -3204,7 +3206,7 @@ solver_disablechoicerules(Solver *solv, Rule *r)
       r = solv->rules + rid;
       if (r->d < 0)
        continue;
-      or = solv->rules + solv->choicerules_ref[rid - solv->choicerules];
+      or = solv->rules + solv->choicerules_info[rid - solv->choicerules];
       FOR_RULELITERALS(p, pp, or)
         if (p > 0 && MAPTST(&m, p))
          break;
@@ -3253,13 +3255,13 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs)
   Repo *installed = solv->installed;
   Queue q, q2;
   Rule *r;
-  Queue r2pkg;
+  Queue infoq;
   int i, oldcnt;
 
   solv->bestrules = solv->nrules;
   queue_init(&q);
   queue_init(&q2);
-  queue_init(&r2pkg);
+  queue_init(&infoq);
 
   if (havebestinstalljobs)
     {
@@ -3300,7 +3302,7 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs)
                    solver_addrule(solv, p2, 0, pool_queuetowhatprovides(pool, &q));
                  if ((how & SOLVER_WEAK) != 0)
                    queue_push(&solv->weakruleq, solv->nrules - 1);
-                 queue_push(&r2pkg, -(solv->jobrules + j));
+                 queue_push(&infoq, -(solv->jobrules + j));
                }
            }
        }
@@ -3390,7 +3392,7 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs)
                    solver_addrule(solv, -p2, d, 0);
                  else
                    solver_addrule(solv, -p2, 0, -d);
-                 queue_push(&r2pkg, p);
+                 queue_push(&infoq, p);
                }
              for (i = 0; i < q.count; i++)
                MAPCLR(&m, q.elements[i]);
@@ -3401,16 +3403,16 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs)
            solver_addrule(solv, p2, q.count ? q.elements[0] : 0, 0);
          else
            solver_addrule(solv, p2, 0, pool_queuetowhatprovides(pool, &q));
-         queue_push(&r2pkg, p);
+         queue_push(&infoq, p);
        }
       map_free(&m);
     }
-  if (r2pkg.count)
-    solv->bestrules_pkg = solv_memdup2(r2pkg.elements, r2pkg.count, sizeof(Id));
+  if (infoq.count)
+    solv->bestrules_info = solv_memdup2(infoq.elements, infoq.count, sizeof(Id));
   solv->bestrules_end = solv->nrules;
   queue_free(&q);
   queue_free(&q2);
-  queue_free(&r2pkg);
+  queue_free(&infoq);
 }
 
 
@@ -3527,7 +3529,7 @@ solver_addyumobsrules(Solver *solv)
   Repo *installed = solv->installed;
   Id p, op, *opp;
   Solvable *s;
-  Queue qo, qq, yumobsinfoq;
+  Queue qo, qq, infoq;
   int i, j, k;
   unsigned int now;
 
@@ -3573,7 +3575,7 @@ printf("checking yumobs for %s\n", pool_solvable2str(pool, s));
       queue_free(&qo);
       return;
     }
-  queue_init(&yumobsinfoq);
+  queue_init(&infoq);
   queue_init(&qq);
   for (i = 0; i < qo.count; i++)
     {
@@ -3620,16 +3622,16 @@ for (j = 0; j < qq.count; j++)
                    solver_addrule(solv, -p, qq.elements[groupstart], 0);
                  else
                    solver_addrule(solv, -p, 0, pool_ids2whatprovides(pool, qq.elements + groupstart, k - groupstart));
-                 queue_push(&yumobsinfoq, qo.elements[i]);
+                 queue_push(&infoq, qo.elements[i]);
                }
              groupstart = k + 1;
              groupk++;
            }
        }
     }
-  if (yumobsinfoq.count)
-    solv->yumobsrules_info = solv_memdup2(yumobsinfoq.elements, yumobsinfoq.count, sizeof(Id));
-  queue_free(&yumobsinfoq);
+  if (infoq.count)
+    solv->yumobsrules_info = solv_memdup2(infoq.elements, infoq.count, sizeof(Id));
+  queue_free(&infoq);
   queue_free(&qq);
   queue_free(&qo);
   solv->yumobsrules_end = solv->nrules;
index 9d987759471ce7f6af2e6761df1f6585f196ea20..ca7712a4b13dead53615c688e2e4728edcfd581d 100644 (file)
@@ -1407,8 +1407,8 @@ solver_free(Solver *solv)
   solv_free(solv->obsoletes);
   solv_free(solv->obsoletes_data);
   solv_free(solv->specialupdaters);
-  solv_free(solv->choicerules_ref);
-  solv_free(solv->bestrules_pkg);
+  solv_free(solv->choicerules_info);
+  solv_free(solv->bestrules_info);
   solv_free(solv->yumobsrules_info);
   solv_free(solv->recommendsrules_info);
   solv_free(solv->instbuddy);
@@ -3292,10 +3292,10 @@ solver_solve(Solver *solv, Queue *job)
   queuep_free(&solv->update_targets);
   queuep_free(&solv->cleandeps_updatepkgs);
   queue_empty(&solv->ruleassertions);
-  solv->bestrules_pkg = solv_free(solv->bestrules_pkg);
+  solv->bestrules_info = solv_free(solv->bestrules_info);
   solv->yumobsrules_info = solv_free(solv->yumobsrules_info);
   solv->recommendsrules_info = solv_free(solv->recommendsrules_info);
-  solv->choicerules_ref = solv_free(solv->choicerules_ref);
+  solv->choicerules_info = solv_free(solv->choicerules_info);
   if (solv->noupdate.size)
     map_empty(&solv->noupdate);
   map_zerosize(&solv->multiversion);
index e372794c683652b49b30b88af10685de18a2b963..93baa343b720cf6ef90bfab8f443fa352acc12e8 100644 (file)
@@ -70,7 +70,7 @@ struct s_Solver {
   Id bestrules;                                /* rules from SOLVER_FORCEBEST */
   Id bestrules_up;                     /* update rule part starts here*/
   Id bestrules_end;
-  Id *bestrules_pkg;
+  Id *bestrules_info;                  /* < 0 : install rule, > 0 : pkg that needs to be updated */
 
   Id yumobsrules;                      /* rules from yum obsoletes handling */
   Id yumobsrules_end;
@@ -78,7 +78,7 @@ struct s_Solver {
 
   Id choicerules;                      /* choice rules (always weak) */
   Id choicerules_end;
-  Id *choicerules_ref;
+  Id *choicerules_info;                        /* the rule we used to generate the choice rule */
 
   Id recommendsrules;                  /* rules from recommends pkg rules with disfavored literals */
   Id recommendsrules_end;