]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Check keep_orphans flag in solver_addduprules
authorMichael Schroeder <mls@suse.de>
Mon, 12 Oct 2015 12:03:55 +0000 (14:03 +0200)
committerMichael Schroeder <mls@suse.de>
Mon, 12 Oct 2015 12:03:55 +0000 (14:03 +0200)
solver_addduprules is called if allowuninstall is set

src/rules.c

index b941986b7064afe6738582691deb1d0990fb3fad..ead78d600c5913dffa61d308dd6c504850ea6bfe 100644 (file)
@@ -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