From: Michael Schroeder Date: Mon, 12 Oct 2015 12:03:55 +0000 (+0200) Subject: Check keep_orphans flag in solver_addduprules X-Git-Tag: 0.6.15~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5af25c0ef8fb01e5b0d377a2d7223281991b960;p=thirdparty%2Flibsolv.git Check keep_orphans flag in solver_addduprules solver_addduprules is called if allowuninstall is set --- diff --git a/src/rules.c b/src/rules.c index b941986b..ead78d60 100644 --- a/src/rules.c +++ b/src/rules.c @@ -1835,6 +1835,15 @@ solver_addduprules(Solver *solv, Map *addedmap) if (is->evr == ps->evr && solvable_identical(ps, is)) break; } + if (!ip && solv->dupmap_all && solv->keep_orphans) + { + /* is this an orphan we should keep? */ + Rule *r = solv->rules + solv->featurerules + (p - solv->installed->start); + if (!r->p) + r = solv->rules + solv->updaterules + (p - solv->installed->start); + if (r->p == p && !r->d) + ip = p; + } if (!ip) solver_addrule(solv, -p, 0, 0); /* no match, sorry */ else