aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2021-05-20 11:43:57 +0300
committerTimo Teräs <timo.teras@iki.fi>2021-05-20 11:43:57 +0300
commit79f91a34f3ee0f9e2b868cf5f1d999ac10d32233 (patch)
tree0257a00ebf8692c070910f96ed7ada0905564f9b
parent0ce7c75095536a0d58e90acb3e7c13b750b9879c (diff)
main/apk-tools: cherry-pick fix for provides preference handling
-rw-r--r--main/apk-tools/0001-solver-don-t-consider-requirer-count-for-preference.patch100
-rw-r--r--main/apk-tools/APKBUILD10
2 files changed, 107 insertions, 3 deletions
diff --git a/main/apk-tools/0001-solver-don-t-consider-requirer-count-for-preference.patch b/main/apk-tools/0001-solver-don-t-consider-requirer-count-for-preference.patch
new file mode 100644
index 00000000000..6634e2d3dcd
--- /dev/null
+++ b/main/apk-tools/0001-solver-don-t-consider-requirer-count-for-preference.patch
@@ -0,0 +1,100 @@
+From 3cce27e83d068d274235995c03fed1e0f8a808fb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Wed, 19 May 2021 16:29:55 +0300
+Subject: [PATCH] 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
+---
+ src/solver.c | 18 ------------------
+ test/provides.repo | 22 ++++++++++++++++++++++
+ test/provides13.test | 7 +++++++
+ 3 files changed, 29 insertions(+), 18 deletions(-)
+ create mode 100644 test/provides13.test
+
+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
+--
+2.31.1
+
diff --git a/main/apk-tools/APKBUILD b/main/apk-tools/APKBUILD
index ce30a3424da..c819b368ccc 100644
--- a/main/apk-tools/APKBUILD
+++ b/main/apk-tools/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=apk-tools
pkgver=2.12.5
-pkgrel=0
+pkgrel=1
pkgdesc="Alpine Package Keeper - package manager for alpine"
arch="all"
url="https://gitlab.alpinelinux.org/alpine/apk-tools"
@@ -20,6 +20,7 @@ if [ "$CBUILD" = "$CHOST" ]; then
makedepends="$makedepends $_lua-dev"
fi
source="https://gitlab.alpinelinux.org/alpine/$pkgname/-/archive/v$pkgver/$pkgname-v$pkgver.tar.gz
+ 0001-solver-don-t-consider-requirer-count-for-preference.patch
_apk
"
builddir="$srcdir/$pkgname-v$pkgver"
@@ -80,5 +81,8 @@ luaapk() {
mv "$pkgdir"/usr/lib "$subpkgdir"/usr/lib/
}
-sha512sums="478137f14617e97bdf79cd431812116b94270107d1473313fa94d5c258ed55c11234ad80cb6ba74e0134b0de0f25356d60f77966ecc5dbe5175415768718d1d8 apk-tools-v2.12.5.tar.gz
-102e6d01a984fb7a84c9432f797e4d8d2c90e9570dd26208b8485569ab471ea88a2cc81eabd3b3f7e4c9685a37afc458dec172a65b03c19c78a7efb598c54f45 _apk"
+sha512sums="
+478137f14617e97bdf79cd431812116b94270107d1473313fa94d5c258ed55c11234ad80cb6ba74e0134b0de0f25356d60f77966ecc5dbe5175415768718d1d8 apk-tools-v2.12.5.tar.gz
+d7ef6721eab357ff6d8329c56443da472099d3d5e4764cce7101b55c0d1a0653bae6103ab25c2a5e0800a283cf950d890c8b2f2aea3ccf288b1521c014e31b13 0001-solver-don-t-consider-requirer-count-for-preference.patch
+102e6d01a984fb7a84c9432f797e4d8d2c90e9570dd26208b8485569ab471ea88a2cc81eabd3b3f7e4c9685a37afc458dec172a65b03c19c78a7efb598c54f45 _apk
+"