Blob Blame History Raw
From 668e2495d942e888403f47cd5ce140703a6bb3e1 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
Date: Wed, 22 Mar 2017 11:17:54 +0100
Subject: [PATCH 3/3] Add missing part from last commit

---
 src/rules.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/rules.c b/src/rules.c
index 3413c49..26b93ea 100644
--- a/src/rules.c
+++ b/src/rules.c
@@ -3552,6 +3552,7 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs)
 	  if (solv->allowuninstall || solv->allowuninstall_all || (solv->allowuninstallmap.size && MAPTST(&solv->allowuninstallmap, p - installed->start)))
 	    {
 	      /* package is flagged both for allowuninstall and best, add negative rules */
+	      d = q.count == 1 ? q.elements[0] : -pool_queuetowhatprovides(pool, &q);
 	      for (i = 0; i < q.count; i++)
 		MAPSET(&m, q.elements[i]);
 	      r = solv->rules + solv->featurerules + (p - installed->start);
@@ -3561,7 +3562,10 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs)
 		{
 		  if (MAPTST(&m, p2))
 		    continue;
-		  solver_addrule(solv, -p2, 0, 0);
+		  if (d >= 0)
+		    solver_addrule(solv, -p2, d, 0);
+		  else
+		    solver_addrule(solv, -p2, 0, -d);
 		  queue_push(&r2pkg, p);
 		}
 	      for (i = 0; i < q.count; i++)
-- 
2.12.1