From: Michael Schroeder Date: Fri, 18 Dec 2015 16:42:24 +0000 (+0100) Subject: Do not create dup rules for orphaned packages X-Git-Tag: 0.6.16~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fed3dde57d64ab930859dabdf9163fd90b08dcd;p=thirdparty%2Flibsolv.git Do not create dup rules for orphaned packages This was deleted with commit 98352a506ba091a62bccc29d044e60e64d07f338 by accident. --- diff --git a/src/rules.c b/src/rules.c index 248b1cdd..70d6b073 100644 --- a/src/rules.c +++ b/src/rules.c @@ -1325,7 +1325,7 @@ solver_addupdaterule(Solver *solv, Solvable *s, int allow_all) } } } - if (!isorphaned && p == -SYSTEMSOLVABLE && solv->dupmap.size) + if (!isorphaned && p == -SYSTEMSOLVABLE && qs.count && solv->dupmap.size) p = s - pool->solvables; /* let the dup rules sort it out */ if (qs.count && p == -SYSTEMSOLVABLE) p = queue_shift(&qs); @@ -1864,6 +1864,12 @@ solver_addduprules(Solver *solv, Map *addedmap) solver_addrule(solv, -p, 0, solv->specialupdaters[p - installed->start]); continue; } + if (!r->p || (r->p == p && !r->d && !r->w2)) + { + /* this is an orphan */ + MAPSET(&solv->dupmap, p); /* for best rules processing */ + continue; + } solver_addrule(solv, -p, 0, 0); /* no match, sorry */ } }