From 83a0b5f289fd9461b68b1afab525c0f4ca6015b1 Mon Sep 17 00:00:00 2001 From: Jaroslav Mracek Date: Mon, 15 Oct 2018 21:27:15 +0200 Subject: [PATCH] Modify solver_describe_decision to report cleaned (RhBug:1486749) --- libdnf/goal/Goal.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libdnf/goal/Goal.cpp b/libdnf/goal/Goal.cpp index 50fef5c..7d17a49 100644 --- a/libdnf/goal/Goal.cpp +++ b/libdnf/goal/Goal.cpp @@ -647,7 +647,8 @@ Goal::getReason(DnfPackage *pkg) if (!pImpl->solv) return HY_REASON_USER; Id info; - int reason = solver_describe_decision(pImpl->solv, dnf_package_get_id(pkg), &info); + const Id pkgID = dnf_package_get_id(pkg); + int reason = solver_describe_decision(pImpl->solv, pkgID, &info); if ((reason == SOLVER_REASON_UNIT_RULE || reason == SOLVER_REASON_RESOLVE_JOB) && @@ -658,6 +659,13 @@ Goal::getReason(DnfPackage *pkg) return HY_REASON_CLEAN; if (reason == SOLVER_REASON_WEAKDEP) return HY_REASON_WEAKDEP; + IdQueue cleanDepsQueue; + solver_get_cleandeps(pImpl->solv, cleanDepsQueue.getQueue()); + for (int i = 0; i < cleanDepsQueue.size(); ++i) { + if (cleanDepsQueue[i] == pkgID) { + return HY_REASON_CLEAN; + } + } return HY_REASON_DEP; } -- libgit2 0.26.6