libsolv/0006-Make-keep_orphans-also-keep-multiversion-orphans-ins.patch

42 lines
1.5 KiB
Diff
Raw Normal View History

2015-10-14 13:18:51 +00:00
From 8542225bad5c1616b4ebe1ab78a6bf320726afd9 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
Date: Wed, 14 Oct 2015 14:30:46 +0200
Subject: [PATCH 6/6] Make keep_orphans also keep multiversion orphans
installed
Also make keep_orphanse add multiversion orphans to the
update rule, thus enforcing that they stay installed.
---
src/rules.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/rules.c b/src/rules.c
index 97ccc6e..381cb22 100644
--- a/src/rules.c
+++ b/src/rules.c
@@ -1302,6 +1302,8 @@ solver_addupdaterule(Solver *solv, Solvable *s, int allow_all)
if (j == 0 && p == -SYSTEMSOLVABLE && solv->dupmap_all)
{
queue_push(&solv->orphaned, s - pool->solvables); /* also treat as orphaned */
+ if (solv->keep_orphans && !(solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, s - pool->solvables - solv->installed->start))))
+ p = s - pool->solvables; /* keep this orphaned package installed */
j = qs.count;
}
qs.count = j;
@@ -1844,6 +1846,12 @@ solver_addduprules(Solver *solv, Map *addedmap)
r += solv->updaterules - solv->featurerules;
if (r->p == p && !r->d)
ip = p;
+ else if (solv->dupmap_all && solv->multiversion.size)
+ {
+ r = solv->rules + solv->updaterules + (p - solv->installed->start);
+ if (r->p == p)
+ ip = p;
+ }
}
if (!ip)
solver_addrule(solv, -p, 0, 0); /* no match, sorry */
--
2.4.3