summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2022-12-22 14:41:47 +0200
committerTimo Teräs <timo.teras@iki.fi>2022-12-22 15:07:31 +0200
commitc1ad6763769be298ac9b4e7fa7c1bbad9e6cca1b (patch)
tree13db1c775c8d2db78e2d46c6f22a7fa8ef2ff8b4
parent5234fc4b57610283f9b08b6eecac2549a5f8576a (diff)
downloadapk-tools-c1ad6763769be298ac9b4e7fa7c1bbad9e6cca1b.tar.gz
apk-tools-c1ad6763769be298ac9b4e7fa7c1bbad9e6cca1b.tar.bz2
apk-tools-c1ad6763769be298ac9b4e7fa7c1bbad9e6cca1b.tar.xz
apk-tools-c1ad6763769be298ac9b4e7fa7c1bbad9e6cca1b.zip
solver: move install if discovery after all dependencies are done
-rw-r--r--src/solver.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/solver.c b/src/solver.c
index a591818..13dd8c6 100644
--- a/src/solver.c
+++ b/src/solver.c
@@ -231,13 +231,6 @@ static void discover_name(struct apk_solver_state *ss, struct apk_name *name)
pkg->ss.max_dep_chain = max(pkg->ss.max_dep_chain,
dep->name->ss.max_dep_chain+1);
}
- foreach_array_item(pname0, pkg->name->rinstall_if)
- discover_name(ss, *pname0);
- foreach_array_item(dep, pkg->provides) {
- if (dep->name->ss.seen) continue;
- foreach_array_item(pname0, dep->name->rinstall_if)
- discover_name(ss, *pname0);
- }
dbg_printf("discover " PKG_VER_FMT ": tag_ok=%d, tag_pref=%d max_dep_chain=%d selectable=%d\n",
PKG_VER_PRINTF(pkg),
@@ -253,6 +246,16 @@ static void discover_name(struct apk_solver_state *ss, struct apk_name *name)
dbg_printf("discover %s: max_dep_chain=%d no_iif=%d\n",
name->name, name->ss.max_dep_chain, name->ss.no_iif);
}
+ foreach_array_item(p, name->providers) {
+ struct apk_package *pkg = p->pkg;
+ foreach_array_item(pname0, pkg->name->rinstall_if)
+ discover_name(ss, *pname0);
+ foreach_array_item(dep, pkg->provides) {
+ if (dep->name->ss.seen) continue;
+ foreach_array_item(pname0, dep->name->rinstall_if)
+ discover_name(ss, *pname0);
+ }
+ }
}
static void name_requirers_changed(struct apk_solver_state *ss, struct apk_name *name)