]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Get rid of dupmap_all
authorMichael Schroeder <mls@suse.de>
Thu, 19 Oct 2017 07:49:28 +0000 (09:49 +0200)
committerMichael Schroeder <mls@suse.de>
Thu, 19 Oct 2017 07:49:28 +0000 (09:49 +0200)
src/policy.c
src/problems.c
src/solver.c
src/solver.h

index 20bd3d54e4fed12448f0a4dc74d5eb8f2fbf8d36..6f06101ff6c4b63fe8e6ac88ad28049fd9919c35 100644 (file)
@@ -1424,7 +1424,7 @@ policy_is_illegal(Solver *solv, Solvable *is, Solvable *s, int ignore)
 {
   Pool *pool = solv->pool;
   int ret = 0;
-  int duppkg = solv->dupmap_all ? 1 : 0;
+  int duppkg = solv->dupinvolvedmap_all || (solv->dupinvolvedmap.size && MAPTST(&solv->dupinvolvedmap, is - pool->solvables));
   if (!(ignore & POLICY_ILLEGAL_DOWNGRADE) && !(duppkg ? solv->dup_allowdowngrade : solv->allowdowngrade))
     {
       if (is->name == s->name && pool_evrcmp(pool, is->evr, s->evr, EVRCMP_COMPARE) > 0)
index a9bbdce1735086260093e2e5ad93e5e5109360cc..2ffb6f9d41dfba1a4246eabd5dcc686536073e3d 100644 (file)
@@ -454,13 +454,6 @@ convertsolution(Solver *solv, Id why, Queue *solutionq)
          return;       /* false alarm */
 
       p = solv->installed->start + (why - solv->updaterules);
-      if (solv->dupmap_all && solv->rules[why].p != p && solv->decisionmap[p] > 0)
-       {
-         /* distupgrade case, allow to keep old package */
-         queue_push(solutionq, SOLVER_SOLUTION_DISTUPGRADE);
-         queue_push(solutionq, p);
-         return;
-       }
       if (solv->decisionmap[p] > 0)
        return;         /* false alarm, turned out we can keep the package */
       rr = solv->rules + solv->featurerules + (why - solv->updaterules);
index 71b6ae00fee36311c860d4b1490eede11873de2f..037b33d5ff2a53947d7f0600ad332f51e0cf42c2 100644 (file)
@@ -2118,7 +2118,7 @@ add_complex_recommends(Solver *solv, Id rec, Queue *dq, Map *dqmap)
            {
              if (solv->decisionmap[p] < 0)
                continue;
-             if (solv->dupmap_all && solv->installed && pool->solvables[p].repo == solv->installed && (solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, p - solv->installed->start))))
+             if (solv->process_orphans && solv->installed && pool->solvables[p].repo == solv->installed && (solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, p - solv->installed->start))))
                continue;
            }
          queue_push(dq, p);
@@ -2273,7 +2273,7 @@ resolve_weak(Solver *solv, int level, int disablerules, Queue *dq, Queue *dqs, i
                        }
                      else if (solv->decisionmap[p] == 0)
                        {
-                         if (solv->dupmap_all && solv->installed && pool->solvables[p].repo == solv->installed && (solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, p - solv->installed->start))))
+                         if (solv->process_orphans && solv->installed && pool->solvables[p].repo == solv->installed && (solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, p - solv->installed->start))))
                            continue;
                          queue_pushunique(dq, p);
                        }
@@ -2290,7 +2290,7 @@ resolve_weak(Solver *solv, int level, int disablerules, Queue *dq, Queue *dqs, i
            continue;
          if (!solver_is_supplementing(solv, s))
            continue;
-         if (solv->dupmap_all && solv->installed && s->repo == solv->installed && (solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, i - solv->installed->start))))
+         if (solv->process_orphans && solv->installed && s->repo == solv->installed && (solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, i - solv->installed->start))))
            continue;
          if (solv->isdisfavormap.size && MAPTST(&solv->isdisfavormap, i))
            continue;   /* disfavored supplements, do not install */
@@ -3414,7 +3414,7 @@ solver_solve(Solver *solv, Queue *job)
     queue_insertn(&solv->job, 0, pool->pooljobs.count, pool->pooljobs.elements);
   job = &solv->job;
 
-  /* free old stuff in jase we re-run a solver */
+  /* free old stuff in case we re-run a solver */
   queuep_free(&solv->update_targets);
   queuep_free(&solv->cleandeps_updatepkgs);
   queue_empty(&solv->ruleassertions);
@@ -3430,9 +3430,9 @@ solver_solve(Solver *solv, Queue *job)
   map_zerosize(&solv->bestupdatemap);
   solv->fixmap_all = 0;
   map_zerosize(&solv->fixmap);
-  solv->dupmap_all = 0;
   map_zerosize(&solv->dupmap);
   map_zerosize(&solv->dupinvolvedmap);
+  solv->process_orphans = 0;
   solv->droporphanedmap_all = 0;
   map_zerosize(&solv->droporphanedmap);
   solv->allowuninstall_all = 0;
@@ -3654,7 +3654,8 @@ solver_solve(Solver *solv, Queue *job)
          break;
        case SOLVER_DISTUPGRADE:
          needduprules = 1;
-         solv->dupmap_all = 1;
+         if (select == SOLVER_SOLVABLE_ALL)
+           solv->process_orphans = 1;
          break;
        default:
          break;
@@ -3777,7 +3778,7 @@ solver_solve(Solver *solv, Queue *job)
              continue;
            }
          /* it's also orphaned if the feature rule consists just of the installed package */
-         if (!solv->dupmap_all && sr->p == i && !sr->d && !sr->w2)
+         if (!solv->process_orphans && sr->p == i && !sr->d && !sr->w2)
            queue_push(&solv->orphaned, i);
 
          if (!solver_rulecmp(solv, r, sr))
@@ -4126,7 +4127,7 @@ solver_solve(Solver *solv, Queue *job)
   solver_disablepolicyrules(solv);
 
   /* break orphans if requested */
-  if (solv->dupmap_all && solv->orphaned.count && solv->break_orphans)
+  if (solv->process_orphans && solv->orphaned.count && solv->break_orphans)
     solver_breakorphans(solv);
 
   /*
index 9d2a7d5450fbd3a44cb79bf1f9fe0c9e5b780ba9..1b85fb34fd21de992d7922645e9f84be642604fd 100644 (file)
@@ -167,8 +167,8 @@ struct _Solver {
   int strongrecommends;                        /* true: create weak rules for recommends */
   int install_also_updates;            /* true: do not prune install job rules to installed packages */
 
+  int process_orphans;                 /* true: do special orphan processing */
   Map dupmap;                          /* dup to those packages */
-  int dupmap_all;                      /* dup to all repo packages */
   Map dupinvolvedmap;                  /* packages involved in dup process */
   int dupinvolvedmap_all;              /* all packages are involved */
   int dup_allowdowngrade;              /* dup mode: allow to downgrade installed solvable */