solver: only select a default if there is at least one provider with a declared provider_priority
parent
9165aa3894
commit
0a17a648db
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
Loading…
Reference in New Issue