solver: only select a default if there is at least one provider with a declared provider_priority

cute-signatures
William Pitcock 2017-11-02 16:31:50 +00:00
parent 9165aa3894
commit 0a17a648db
3 changed files with 31 additions and 1 deletions

View File

@ -668,6 +668,12 @@ static void select_package(struct apk_solver_state *ss, struct apk_name *name)
(!p->pkg->ss.iif_triggered ||
!p->pkg->ss.tag_ok))
continue;
/* Virtual packages without provider_priority cannot be autoselected */
if (p->version == &apk_null_blob &&
p->pkg->name->auto_select_virtual == 0 &&
p->pkg->name->ss.requirers == 0 &&
p->pkg->provider_priority == 0)
continue;
if (compare_providers(ss, p, &chosen) > 0)
chosen = *p;
}

View File

@ -38,6 +38,7 @@ V:1
S:1
I:1
p:mail-reader
k:1
C:Q1eVpkasfqZAukAXFYbgwt4xAEEEe=
P:mailreadplus
@ -45,7 +46,7 @@ V:1
S:1
I:1
p:mail-reader
k:1
k:2
C:Q1EyN5AdpAOBJWKMR89pp/C77FFFF=
P:server-a
@ -68,3 +69,17 @@ S:1
I:1
p:selfprovided=2
p:selfprovided=3
C:Q1EyN5AdpAOBJWKMR89ppC66aaaaj=
P:conflicted-provider-a
V:0.1
S:1
I:1
p:conflicted-provider
C:Q1EyN5AdpAOBJWKMR89ppC66bbbbj=
P:conflicted-provider-b
V:0.1
S:1
I:1
p:conflicted-provider

9
test/provides9.test Normal file
View File

@ -0,0 +1,9 @@
@ARGS
--test-repo provides.repo
add conflicted-provider
@EXPECT
ERROR: unsatisfiable constraints:
conflicted-provider (virtual):
provided by: conflicted-provider-a
conflicted-provider-b
required by: world[conflicted-provider]