errors: detect self-conflicts properly
and add the provided version information to the conflicts. fixes the final test case that was broken. hooray.cute-signatures
parent
56b623b9e2
commit
ac0c7457c2
10
src/commit.c
10
src/commit.c
|
@ -430,6 +430,7 @@ static void print_conflicts(struct print_state *ps, struct apk_package *pkg)
|
||||||
{
|
{
|
||||||
struct apk_provider *p;
|
struct apk_provider *p;
|
||||||
struct apk_dependency *d;
|
struct apk_dependency *d;
|
||||||
|
char tmp[256];
|
||||||
|
|
||||||
foreach_array_item(p, pkg->name->providers) {
|
foreach_array_item(p, pkg->name->providers) {
|
||||||
if (p->pkg == pkg || !p->pkg->marked)
|
if (p->pkg == pkg || !p->pkg->marked)
|
||||||
|
@ -439,14 +440,15 @@ static void print_conflicts(struct print_state *ps, struct apk_package *pkg)
|
||||||
}
|
}
|
||||||
foreach_array_item(d, pkg->provides) {
|
foreach_array_item(d, pkg->provides) {
|
||||||
foreach_array_item(p, d->name->providers) {
|
foreach_array_item(p, d->name->providers) {
|
||||||
if (p->pkg == pkg || !p->pkg->marked)
|
if (!p->pkg->marked)
|
||||||
|
continue;
|
||||||
|
if (p->pkg == pkg && p->version == d->version)
|
||||||
continue;
|
continue;
|
||||||
label_start(ps, "conflicts:");
|
label_start(ps, "conflicts:");
|
||||||
apk_print_indented_fmt(
|
apk_print_indented_fmt(
|
||||||
&ps->i,
|
&ps->i, PKG_VER_FMT "[%s]",
|
||||||
PKG_VER_FMT "[%s]",
|
|
||||||
PKG_VER_PRINTF(p->pkg),
|
PKG_VER_PRINTF(p->pkg),
|
||||||
d->name->name);
|
apk_dep_snprintf(tmp, sizeof(tmp), d));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
label_end(ps);
|
label_end(ps);
|
||||||
|
|
|
@ -4,8 +4,8 @@ add server-a server-b
|
||||||
@EXPECT
|
@EXPECT
|
||||||
ERROR: unsatisfiable constraints:
|
ERROR: unsatisfiable constraints:
|
||||||
server-a-1:
|
server-a-1:
|
||||||
conflicts: server-b-1[theservice]
|
conflicts: server-b-1[theservice=1]
|
||||||
satisfies: world[server-a]
|
satisfies: world[server-a]
|
||||||
server-b-1:
|
server-b-1:
|
||||||
conflicts: server-a-1[theservice]
|
conflicts: server-a-1[theservice=2]
|
||||||
satisfies: world[server-b]
|
satisfies: world[server-b]
|
||||||
|
|
|
@ -2,3 +2,8 @@
|
||||||
--test-repo provides.repo
|
--test-repo provides.repo
|
||||||
add selfconflicting
|
add selfconflicting
|
||||||
@EXPECT
|
@EXPECT
|
||||||
|
ERROR: unsatisfiable constraints:
|
||||||
|
selfconflicting-1:
|
||||||
|
conflicts: selfconflicting-1[selfprovided=2]
|
||||||
|
selfconflicting-1[selfprovided=3]
|
||||||
|
satisfies: world[selfconflicting]
|
||||||
|
|
Loading…
Reference in New Issue