Blame 0002-Fix-handling-of-disabled-installed-packages-in-distupgrade.patch

60f4ec4
From 954862319e32e97b20afd0f598cd461ece320e4f Mon Sep 17 00:00:00 2001
60f4ec4
From: Michael Schroeder <mls@suse.de>
60f4ec4
Date: Tue, 8 Oct 2019 13:40:45 +0200
60f4ec4
Subject: [PATCH] Fix handling of disabled installed packages in distupgrade
60f4ec4
60f4ec4
Such packages must not be touched, i.e. they must stay installed.
60f4ec4
---
60f4ec4
 src/pool.c  |  1 -
60f4ec4
 src/rules.c | 10 ++++++++++
60f4ec4
 2 files changed, 10 insertions(+), 1 deletion(-)
60f4ec4
60f4ec4
diff --git a/src/pool.c b/src/pool.c
60f4ec4
index d2053b9..76636a7 100644
60f4ec4
--- a/src/pool.c
60f4ec4
+++ b/src/pool.c
60f4ec4
@@ -455,7 +455,6 @@ pool_createwhatprovides(Pool *pool)
60f4ec4
   Offset *whatprovides;
60f4ec4
   Id *whatprovidesdata, *dp, *whatprovidesauxdata;
60f4ec4
   Offset *whatprovidesaux;
60f4ec4
-  Repo *installed = pool->installed;
60f4ec4
   unsigned int now;
60f4ec4
 
60f4ec4
   now = solv_timems(0);
60f4ec4
diff --git a/src/rules.c b/src/rules.c
60f4ec4
index 4075b9d..57895c0 100644
60f4ec4
--- a/src/rules.c
60f4ec4
+++ b/src/rules.c
60f4ec4
@@ -1373,6 +1373,14 @@ solver_addupdaterule(Solver *solv, Solvable *s)
60f4ec4
   int dupinvolved = 0;
60f4ec4
 
60f4ec4
   p = s - pool->solvables;
60f4ec4
+
60f4ec4
+  if (pool->considered && pool_disabled_solvable(pool, s))
60f4ec4
+    {
60f4ec4
+      /* disabled installed solvables must stay installed */
60f4ec4
+      solver_addrule(solv, p, 0, 0);
60f4ec4
+      return;
60f4ec4
+    }
60f4ec4
+
60f4ec4
   /* Orphan detection. We cheat by looking at the feature rule, which
60f4ec4
    * we already calculated */
60f4ec4
   r = solv->rules + solv->featurerules + (p - solv->installed->start);
60f4ec4
@@ -2003,6 +2011,8 @@ solver_addduprules(Solver *solv, Map *addedmap)
60f4ec4
 	    continue;
60f4ec4
 	  if (installed && ps->repo == installed)
60f4ec4
 	    {
60f4ec4
+	      if (pool->considered && pool_disabled_solvable(pool, ps))
60f4ec4
+		continue;		/* always keep disabled installed packages */
60f4ec4
 	      if (!MAPTST(&solv->dupmap, p))
60f4ec4
 		{
60f4ec4
 		  Id ip, ipp;
60f4ec4
--
60f4ec4
libgit2 0.28.2
60f4ec4