From 20ae27c1daec1e6efd19d74a2116c6a1f65e02ec Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Thu, 2 Nov 2017 17:15:00 +0000 Subject: [PATCH] solver: prefer highest requirer count above installed status This ensures a swap is emitted when replacing a virtual with apk add. --- src/solver.c | 10 +++++----- test/provides-swap.installed | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/solver.c b/src/solver.c index 5d73af6..5698215 100644 --- a/src/solver.c +++ b/src/solver.c @@ -567,6 +567,11 @@ static int compare_providers(struct apk_solver_state *ss, if (r) return r; + /* Prefer highest requirer count. */ + r = count_requirers(pkgA) - count_requirers(pkgB); + if (r) + return r; + /* Prefer installed */ if (!(solver_flags & APK_SOLVERF_UPGRADE)) { r = (pkgA->ipkg != NULL) - (pkgB->ipkg != NULL); @@ -598,11 +603,6 @@ static int compare_providers(struct apk_solver_state *ss, if (r) return r; - /* Prefer highest requirer count. */ - r = count_requirers(pkgA) - count_requirers(pkgB); - if (r) - return r; - /* Prefer highest declared provider priority. */ r = pkgA->provider_priority - pkgB->provider_priority; if (r) diff --git a/test/provides-swap.installed b/test/provides-swap.installed index 480def8..259783d 100644 --- a/test/provides-swap.installed +++ b/test/provides-swap.installed @@ -1,6 +1,7 @@ -C:Q1EyN5AdpAOBJWKMR89pp/C66o+OE= +C:Q1eVpkasfqZAukAXFYbgwt4xAEEEe= P:mailreadplus V:1 S:1 I:1 - +p:mail-reader +k:2