From d38589a12173f00b2849a1aa1290f47388a99b00 Mon Sep 17 00:00:00 2001 From: Clayton Craft Date: Wed, 22 Nov 2023 00:06:01 -0800 Subject: [PATCH] parse.depends: consider selected providers when resolving providers If a package had _pmb_select set and an appropriate provider configured in pmb's cfg, it was not being used when providers were being resolved. With this change, those are now being considered. The order is also important, we want a selected provider to be chosen before it tries to make a decision based on provider_priority later in step #6. Reviewed-by: Oliver Smith Link: https://lists.sr.ht/~postmarketos/pmbootstrap-devel/%3C20231122081214.11872-2-clayton@craftyguy.net%3E --- pmb/parse/depends.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pmb/parse/depends.py b/pmb/parse/depends.py index 0920202a..cb487ca1 100644 --- a/pmb/parse/depends.py +++ b/pmb/parse/depends.py @@ -72,13 +72,20 @@ def package_provider(args, pkgname, pkgnames_install, suffix="native"): "chroot already") return provider - # 5. Pick the provider(s) with the highest priority + # 5. Pick an explicitly selected provider + provider_pkgname = args.selected_providers.get(pkgname, "") + if provider_pkgname in providers: + logging.verbose(f"{pkgname}: choosing provider '{provider_pkgname}', " + "because it was explicitly selected.") + return providers[provider_pkgname] + + # 6. Pick the provider(s) with the highest priority providers = pmb.parse.apkindex.provider_highest_priority( providers, pkgname) if len(providers) == 1: return list(providers.values())[0] - # 6. Pick the shortest provider. (Note: Normally apk would fail here!) + # 7. Pick the shortest provider. (Note: Normally apk would fail here!) return pmb.parse.apkindex.provider_shortest(providers, pkgname)