diff options
author | Timo Teräs <timo.teras@iki.fi> | 2021-05-20 11:43:57 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2021-05-20 11:43:57 +0300 |
commit | 79f91a34f3ee0f9e2b868cf5f1d999ac10d32233 (patch) | |
tree | 0257a00ebf8692c070910f96ed7ada0905564f9b | |
parent | 0ce7c75095536a0d58e90acb3e7c13b750b9879c (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.patch | 100 | ||||
-rw-r--r-- | main/apk-tools/APKBUILD | 10 |
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 +" |