]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
solver_get_cleandeps: filter packages that just got updated
authorMichael Schroeder <mls@suse.de>
Wed, 20 Sep 2017 14:16:04 +0000 (16:16 +0200)
committerMichael Schroeder <mls@suse.de>
Wed, 20 Sep 2017 14:16:04 +0000 (16:16 +0200)
Those don't count as erase.

src/solver.c

index 6edc66f9aed256b9670af015c4df09452608175a..4775e31a9692cd94e4b1549ddd046f9d5bb5d442 100644 (file)
@@ -4437,9 +4437,11 @@ void solver_get_orphaned(Solver *solv, Queue *orphanedq)
 
 void solver_get_cleandeps(Solver *solv, Queue *cleandepsq)
 {
+  Pool *pool = solv->pool;
   Repo *installed = solv->installed;
   Solvable *s;
-  Id p;
+  Rule *r;
+  Id p, pp, pr;
 
   queue_empty(cleandepsq);
   if (!installed || !solv->cleandepsmap.size)
@@ -4448,6 +4450,16 @@ void solver_get_cleandeps(Solver *solv, Queue *cleandepsq)
     {
       if (!MAPTST(&solv->cleandepsmap, p - installed->start) || solv->decisionmap[p] >= 0)
        continue;
+      /* now check the update rule */
+      r = solv->rules + solv->updaterules + (p - solv->installed->start);
+      if (r->p)
+       {
+         FOR_RULELITERALS(pr, pp, r)
+           if (solv->decisionmap[pr] > 0)
+             break;
+         if (pr)
+           continue;
+       }
       queue_push(cleandepsq, p);
     }
 }