From: Michael Schroeder Date: Thu, 19 Oct 2017 07:49:28 +0000 (+0200) Subject: Get rid of dupmap_all X-Git-Tag: 0.6.30~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=30fc1a2515f292933d08451055a2c901d6ccb634;p=thirdparty%2Flibsolv.git Get rid of dupmap_all --- diff --git a/src/policy.c b/src/policy.c index 20bd3d54..6f06101f 100644 --- a/src/policy.c +++ b/src/policy.c @@ -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) diff --git a/src/problems.c b/src/problems.c index a9bbdce1..2ffb6f9d 100644 --- a/src/problems.c +++ b/src/problems.c @@ -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); diff --git a/src/solver.c b/src/solver.c index 71b6ae00..037b33d5 100644 --- a/src/solver.c +++ b/src/solver.c @@ -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); /* diff --git a/src/solver.h b/src/solver.h index 9d2a7d54..1b85fb34 100644 --- a/src/solver.h +++ b/src/solver.h @@ -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 */