]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
fix solver_addpkgrulesforweak missing some splitprovide packages
authorMichael Schroeder <mls@suse.de>
Wed, 21 Jan 2015 12:28:21 +0000 (13:28 +0100)
committerMichael Schroeder <mls@suse.de>
Wed, 21 Jan 2015 12:28:21 +0000 (13:28 +0100)
This was because the updatemap gets extended when the dup rules
are created, but the map already gets used in solver_splitprovides.
So temporarily set updatemap_all in that case.

src/solver.c

index 14fe78d7789b4348d2f44332392523f717fb5f9c..e6996a2fd509383f43cf5a941ce076174e7afa8e 100644 (file)
@@ -3644,7 +3644,16 @@ solver_solve(Solver *solv, Queue *job)
    * add rules for suggests, enhances
    */
   oldnrules = solv->nrules;
-  solver_addpkgrulesforweak(solv, &addedmap);
+  if (hasdupjob && !solv->updatemap_all && solv->dosplitprovides && solv->installed)
+    {
+      /* solver_splitprovides checks if the package is in the update map, but the update
+       * map is extended for dup jobs. So temporarily set updatemap_all */
+      solv->updatemap_all = 1;
+      solver_addpkgrulesforweak(solv, &addedmap);
+      solv->updatemap_all = 0;
+    }
+  else
+    solver_addpkgrulesforweak(solv, &addedmap);
   POOL_DEBUG(SOLV_DEBUG_STATS, "added %d pkg rules because of weak dependencies\n", solv->nrules - oldnrules);
 
 #ifdef ENABLE_LINKED_PKGS