Blame SOURCES/0001-Fix-supplements-handling-when-implicitobsoleteusesco.patch

662e5a
From b1014a431541444bcd39c6ec83c1ec935c7f0aae Mon Sep 17 00:00:00 2001
662e5a
From: Michael Schroeder <mls@suse.de>
662e5a
Date: Tue, 17 May 2016 13:31:58 +0200
662e5a
Subject: [PATCH] Fix supplements handling when implicitobsoleteusescolors is
662e5a
 set
662e5a
662e5a
This currently relys on the infarch lockstep handling a bit. Let's
662e5a
see if this is enough or we need some better filtering code.
662e5a
---
662e5a
 src/solver.c                                         | 20 ++++++++++++++++++++
662e5a
 .../supplements_implicitobsoleteusescolors.t         | 20 ++++++++++++++++++++
662e5a
 2 files changed, 40 insertions(+)
662e5a
 create mode 100644 test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t
662e5a
662e5a
diff --git a/src/solver.c b/src/solver.c
662e5a
index 5da8529..4f849ec 100644
662e5a
--- a/src/solver.c
662e5a
+++ b/src/solver.c
662e5a
@@ -2636,6 +2636,26 @@ solver_run_sat(Solver *solv, int disablerules, int doweak)
662e5a
 	      dqs.count = j;
662e5a
 	    }
662e5a
 
662e5a
+	  /* implicitobsoleteusescolors doesn't mix well with supplements.
662e5a
+	   * filter supplemented packages where we already decided
662e5a
+	   * to install a different architecture */
662e5a
+          if (dqs.count && pool->implicitobsoleteusescolors)
662e5a
+	    {
662e5a
+	      for (i = j = 0; i < dqs.count; i++)
662e5a
+		{
662e5a
+		  Id p2, pp2;
662e5a
+		  p = dqs.elements[i];
662e5a
+		  s = pool->solvables + p;
662e5a
+		  FOR_PROVIDES(p2, pp2, s->name)
662e5a
+		    if (solv->decisionmap[p2] > 0 && pool->solvables[p2].name == s->name && pool->solvables[p2].arch != s->arch)
662e5a
+		      break;
662e5a
+		  if (p2)
662e5a
+		    continue;	/* ignore this package */
662e5a
+		  dqs.elements[j++] = p;
662e5a
+		}
662e5a
+	      dqs.count = j;
662e5a
+	    }
662e5a
+
662e5a
           /* make dq contain both recommended and supplemented pkgs */
662e5a
 	  if (dqs.count)
662e5a
 	    {
662e5a
diff --git a/test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t b/test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t
662e5a
new file mode 100644
662e5a
index 0000000..6de4544
662e5a
--- /dev/null
662e5a
+++ b/test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t
662e5a
@@ -0,0 +1,20 @@
662e5a
+repo system 0 empty
662e5a
+repo test 0 testtags <inline>
662e5a
+#>=Ver: 2.0
662e5a
+#>=Pkg: A 1 1 noarch
662e5a
+#>=Pkg: B 1 1 x86_64
662e5a
+#>=Sup: A
662e5a
+#>=Pkg: B 1 1 i686
662e5a
+#>=Sup: A
662e5a
+#>=Pkg: A2 1 1 noarch
662e5a
+#>=Pkg: B2 1 1 x86_64
662e5a
+#>=Sup: A2
662e5a
+#>=Req: XX
662e5a
+#>=Pkg: B2 1 1 i686
662e5a
+#>=Sup: A2
662e5a
+system x86_64 * system
662e5a
+poolflags implicitobsoleteusescolors
662e5a
+job install name A
662e5a
+
662e5a
+nextjob
662e5a
+job install name A2
662e5a
-- 
662e5a
2.7.4
662e5a