summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2021-05-19 16:29:55 +0300
committerTimo Teräs <timo.teras@iki.fi>2021-05-20 11:42:32 +0300
commit3cce27e83d068d274235995c03fed1e0f8a808fb (patch)
treec17115fadd4e3be4869ebd7c3f5466c2788ecf57
parente8da6c4d299ec348b9964ff4eab7736f2b7ed66a (diff)
downloadapk-tools-3cce27e83d068d274235995c03fed1e0f8a808fb.tar.gz
apk-tools-3cce27e83d068d274235995c03fed1e0f8a808fb.tar.bz2
apk-tools-3cce27e83d068d274235995c03fed1e0f8a808fb.tar.xz
apk-tools-3cce27e83d068d274235995c03fed1e0f8a808fb.zip
solver: don't consider requirer count for preference
The original intent was to choose packages to which there is most dependencies. However, since the code has evolved this is has been mostly obsolete. And in fact now interferes with the provides and provides priority mechanism. Remove this as obsolete. Fixes #10742
-rw-r--r--src/solver.c18
-rw-r--r--test/provides.repo22
-rw-r--r--test/provides13.test7
3 files changed, 29 insertions, 18 deletions
diff --git a/src/solver.c b/src/solver.c
index df63060..810c9ce 100644
--- a/src/solver.c
+++ b/src/solver.c
@@ -493,17 +493,6 @@ static void reconsider_name(struct apk_solver_state *ss, struct apk_name *name)
name->name, name->ss.has_options, name->ss.reverse_deps_done);
}
-static int count_requirers(const struct apk_package *pkg)
-{
- int cnt = pkg->name->ss.requirers;
- struct apk_dependency *p;
-
- foreach_array_item(p, pkg->provides)
- cnt += p->name->ss.requirers;
-
- return cnt;
-}
-
static int compare_providers(struct apk_solver_state *ss,
struct apk_provider *pA, struct apk_provider *pB)
{
@@ -597,13 +586,6 @@ static int compare_providers(struct apk_solver_state *ss,
return r;
}
- /* Prefer highest requirer count. */
- r = count_requirers(pkgA) - count_requirers(pkgB);
- if (r) {
- dbg_printf(" prefer highest requirer count\n");
- return r;
- }
-
/* Prefer installed */
if (!(solver_flags & APK_SOLVERF_UPGRADE)) {
r = (pkgA->ipkg != NULL) - (pkgB->ipkg != NULL);
diff --git a/test/provides.repo b/test/provides.repo
index 358151e..ed72f72 100644
--- a/test/provides.repo
+++ b/test/provides.repo
@@ -111,3 +111,25 @@ V:0.1
S:1
I:1
D:conflicted-provider-2
+
+C:Q1inqy40xXhjHaXUlG+qIshN+TIvA=
+P:pulseaudio-alsa
+V:1
+S:1
+I:1
+k:10
+
+c:a79b3f751d72fd4bdb6729139660d0b4f5b87a33
+P:pulseaudio
+V:1
+S:1
+I:1
+k:10
+
+C:Q1FAFBeAhWPV1XXEdoW+TSjrUghxU=
+P:pipewire-pulse
+V:1
+S:1
+I:1
+k:1
+p:pulseaudio=1 pulseaudio-alsa=1
diff --git a/test/provides13.test b/test/provides13.test
new file mode 100644
index 0000000..5d6482d
--- /dev/null
+++ b/test/provides13.test
@@ -0,0 +1,7 @@
+@ARGS
+--test-repo provides.repo
+add pulseaudio pulseaudio-alsa
+@EXPECT
+(1/2) Installing pulseaudio (1)
+(2/2) Installing pulseaudio-alsa (1)
+OK: 0 MiB in 0 packages