Blame SOURCES/0004-Do-not-disable-infarch-rules-when-they-dont-conflict-with-the-job.patch

5aaecf
From 5323eb7e5c0c8dcdf339113f091317afaed810cc Mon Sep 17 00:00:00 2001
5aaecf
From: Michael Schroeder <mls@suse.de>
5aaecf
Date: Tue, 15 Jan 2019 14:06:08 +0100
5aaecf
Subject: [PATCH] Do not disable infarch rules when they don't conflict with the job
5aaecf
5aaecf
---
5aaecf
 src/rules.c | 16 +++++++++++++---
5aaecf
 1 file changed, 13 insertions(+), 3 deletions(-)
5aaecf
5aaecf
diff --git a/src/rules.c b/src/rules.c
5aaecf
index 2087b35..175cb8d 100644
5aaecf
--- a/src/rules.c
5aaecf
+++ b/src/rules.c
5aaecf
@@ -2126,7 +2126,13 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q)
5aaecf
       if ((set & SOLVER_SETARCH) != 0 && solv->infarchrules != solv->infarchrules_end)
5aaecf
 	{
5aaecf
 	  if (select == SOLVER_SOLVABLE)
5aaecf
-	    queue_push2(q, DISABLE_INFARCH, pool->solvables[what].name);
5aaecf
+	    {
5aaecf
+	      for (i = solv->infarchrules; i < solv->infarchrules_end; i++)
5aaecf
+		if (solv->rules[i].p == -what)
5aaecf
+		  break;
5aaecf
+	      if (i < solv->infarchrules_end)
5aaecf
+	        queue_push2(q, DISABLE_INFARCH, pool->solvables[what].name);
5aaecf
+	    }
5aaecf
 	  else
5aaecf
 	    {
5aaecf
 	      int qcnt = q->count;
5aaecf
@@ -2140,8 +2146,12 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q)
5aaecf
 		    if (q->elements[i + 1] == s->name)
5aaecf
 		      break;
5aaecf
 		  if (i < q->count)
5aaecf
-		    continue;
5aaecf
-		  queue_push2(q, DISABLE_INFARCH, s->name);
5aaecf
+		    continue;		/* already have that DISABLE_INFARCH element */
5aaecf
+		  for (i = solv->infarchrules; i < solv->infarchrules_end; i++)
5aaecf
+		    if (solv->rules[i].p == -p)
5aaecf
+		      break;
5aaecf
+		  if (i < solv->infarchrules_end)
5aaecf
+		    queue_push2(q, DISABLE_INFARCH, s->name);
5aaecf
 		}
5aaecf
 	    }
5aaecf
 	}
5aaecf
--
5aaecf
libgit2 0.27.7
5aaecf