From 20ae27c1daec1e6efd19d74a2116c6a1f65e02ec Mon Sep 17 00:00:00 2001
From: William Pitcock <nenolod@dereferenced.org>
Date: Thu, 2 Nov 2017 17:15:00 +0000
Subject: 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 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'src')

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)
-- 
cgit v1.2.3-70-g09d2