From: Michael Schroeder Date: Mon, 11 Sep 2017 14:39:23 +0000 (+0200) Subject: Add solver_get_cleandeps() method X-Git-Tag: 0.6.30~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03fb95e65dbefb4c8e0d8ebfdaecfa54763f3531;p=thirdparty%2Flibsolv.git Add solver_get_cleandeps() method See https://github.com/openSUSE/libsolv/pull/226 --- diff --git a/src/libsolv.ver b/src/libsolv.ver index d65c0d66..337cd19c 100644 --- a/src/libsolv.ver +++ b/src/libsolv.ver @@ -425,4 +425,5 @@ SOLV_1.0 { SOLV_1.1 { pool_best_solvables; + solver_get_cleandeps; } SOLV_1.0; diff --git a/src/solver.c b/src/solver.c index 5d1052d2..6edc66f9 100644 --- a/src/solver.c +++ b/src/solver.c @@ -4435,6 +4435,23 @@ void solver_get_orphaned(Solver *solv, Queue *orphanedq) queue_init_clone(orphanedq, &solv->orphaned); } +void solver_get_cleandeps(Solver *solv, Queue *cleandepsq) +{ + Repo *installed = solv->installed; + Solvable *s; + Id p; + + queue_empty(cleandepsq); + if (!installed || !solv->cleandepsmap.size) + return; + FOR_REPO_SOLVABLES(installed, p, s) + { + if (!MAPTST(&solv->cleandepsmap, p - installed->start) || solv->decisionmap[p] >= 0) + continue; + queue_push(cleandepsq, p); + } +} + void solver_get_recommendations(Solver *solv, Queue *recommendationsq, Queue *suggestionsq, int noselected) { Pool *pool = solv->pool; diff --git a/src/solver.h b/src/solver.h index 15fdf3f2..464d7e6c 100644 --- a/src/solver.h +++ b/src/solver.h @@ -341,6 +341,7 @@ extern void solver_get_recommendations(Solver *solv, Queue *recommendationsq, Qu extern void solver_get_unneeded(Solver *solv, Queue *unneededq, int filtered); extern void solver_get_userinstalled(Solver *solv, Queue *q, int flags); extern void pool_add_userinstalled_jobs(Pool *pool, Queue *q, Queue *job, int flags); +extern void solver_get_cleandeps(Solver *solv, Queue *cleandepsq); extern int solver_describe_decision(Solver *solv, Id p, Id *infop); extern void solver_describe_weakdep_decision(Solver *solv, Id p, Queue *whyq);