summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-07-16 08:19:56 +0000
committerTimo Teräs <timo.teras@iki.fi>2013-07-17 08:31:40 +0300
commited06091189daaf87d1feee3ed282d1d0f1682e0e (patch)
tree30e2ff77ff95f2807b789f0e638325642a43dc4d
parent21d4e9243ae7445d9a797a169177501022d6e2fa (diff)
downloadapk-tools-ed06091189daaf87d1feee3ed282d1d0f1682e0e.tar.gz
apk-tools-ed06091189daaf87d1feee3ed282d1d0f1682e0e.tar.bz2
apk-tools-ed06091189daaf87d1feee3ed282d1d0f1682e0e.tar.xz
apk-tools-ed06091189daaf87d1feee3ed282d1d0f1682e0e.zip
solver: do not disqualify already disqualified packages
We should not disqualify non-selectable packages as it would mark it as dirty, forcing it to reconsider the name again, which could end up in an endless loop. fixes #2135
-rw-r--r--src/solver.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/solver.c b/src/solver.c
index bf57380..5383d0b 100644
--- a/src/solver.c
+++ b/src/solver.c
@@ -313,7 +313,7 @@ static void exclude_non_providers(struct apk_solver_state *ss, struct apk_name *
dbg_printf("%s must provide %s\n", name->name, must_provide->name);
foreach_array_item(p, name->providers) {
- if (p->pkg->name == must_provide)
+ if (p->pkg->name == must_provide || !p->pkg->ss.pkg_selectable)
goto next;
foreach_array_item(d, p->pkg->provides)
if (d->name == must_provide)