]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Special updaters handling: put identical to installed also on the list
authorMichael Schroeder <mls@suse.de>
Thu, 1 Aug 2019 14:28:00 +0000 (16:28 +0200)
committerMichael Schroeder <mls@suse.de>
Thu, 1 Aug 2019 14:29:30 +0000 (16:29 +0200)
We need to do this so that repo priority pruning does the right thing.
Fixes issue #343

src/solver.c

index a79d4e346dd6b266ac9a7654161dfc989b3d6ba2..532748cc6560484b67d1a29fde2ca9eee6f6148c 100644 (file)
@@ -1724,8 +1724,12 @@ resolve_installed(Solver *solv, int level, int disablerules, Queue *dq)
                  if (rr->p == i && solv->decisionmap[i] >= 0)
                    queue_push(dq, i);
                  while ((p = pool->whatprovidesdata[d++]) != 0)
-                   if (solv->decisionmap[p] >= 0)
-                     queue_push(dq, p);
+                   {
+                     if (solv->decisionmap[p] >= 0)
+                       queue_push(dq, p);
+                     else if (solvable_identical(pool->solvables + p, pool->solvables + i) && rr->p == i && solv->decisionmap[i] >= 0)
+                       queue_push(dq, p);      /* identical to installed, put it on the list so we have a repo prio */
+                   }
                  if (dq->count && solv->update_targets && solv->update_targets->elements[i - installed->start])
                    prune_to_update_targets(solv, solv->update_targets->elements + solv->update_targets->elements[i - installed->start], dq);
                  if (dq->count)