Commit ac0c7457 authored by Timo Teräs's avatar Timo Teräs

errors: detect self-conflicts properly

and add the provided version information to the conflicts.
fixes the final test case that was broken. hooray.
parent 56b623b9
...@@ -430,6 +430,7 @@ static void print_conflicts(struct print_state *ps, struct apk_package *pkg) ...@@ -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) ...@@ -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 ...@@ -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 @@ ...@@ -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]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment