Blame SOURCES/0001-Not-considered-excluded-packages-as-a-best-candidate.patch

6e36fb
From 5ab0d7ab942d97cb6992c8b73b29b2a896e9fe7a Mon Sep 17 00:00:00 2001
6e36fb
From: Jaroslav Mracek <jmracek@redhat.com>
6e36fb
Date: Fri, 22 Feb 2019 18:32:02 +0100
6e36fb
Subject: [PATCH] Not considered excluded packages as a best candidate
6e36fb
6e36fb
---
6e36fb
 src/policy.c | 28 ++++++++++++++++++++++++++++
6e36fb
 1 file changed, 28 insertions(+)
6e36fb
6e36fb
diff --git a/src/policy.c b/src/policy.c
6e36fb
index 5f61115..d51fa6f 100644
6e36fb
--- a/src/policy.c
6e36fb
+++ b/src/policy.c
6e36fb
@@ -831,6 +831,33 @@ move_installed_to_front(Pool *pool, Queue *plist)
6e36fb
     }
6e36fb
 }
6e36fb
 
6e36fb
+
6e36fb
+/*
6e36fb
+ * prune_to_considered
6e36fb
+ *
6e36fb
+ * Keep only considered (pool->considered) solvables in plist. If pool->considered is NULL, it keeps
6e36fb
+ * all solvable in plist. If non of solvables in plist is in considered map, it returns empty plist.
6e36fb
+ */
6e36fb
+static void
6e36fb
+prune_to_considered(Pool *pool, Queue *plist)
6e36fb
+{
6e36fb
+  if (plist->count == 0)		/* no need to prune if plist is empty */
6e36fb
+    return;
6e36fb
+  if (!pool->considered)        /* no need to prune if no considered map */
6e36fb
+    return;
6e36fb
+  int i, j;
6e36fb
+  Id id;
6e36fb
+  for (i = j = 0; i < plist->count; i++)
6e36fb
+    {
6e36fb
+      id = plist->elements[i];
6e36fb
+      if (MAPTST(pool->considered, id))
6e36fb
+        {
6e36fb
+          plist->elements[j++] = id;
6e36fb
+        }
6e36fb
+    }
6e36fb
+  plist->count = j;
6e36fb
+}
6e36fb
+
6e36fb
 /*
6e36fb
  * prune_to_best_version
6e36fb
  *
6e36fb
@@ -1299,6 +1326,7 @@ policy_filter_unwanted(Solver *solv, Queue *plist, int mode)
6e36fb
 	  return;
6e36fb
 	}
6e36fb
     }
6e36fb
+  prune_to_considered(pool, plist);
6e36fb
   if (plist->count > 1)
6e36fb
     {
6e36fb
       if (mode != POLICY_MODE_SUGGEST)
6e36fb
--
6e36fb
libgit2 0.27.7
6e36fb