From c831ead63c5fdb4d1e75c264084576cfefe581e6 Mon Sep 17 00:00:00 2001 From: Timo Teras Date: Tue, 13 Jan 2009 15:21:20 +0200 Subject: state: fix generation of change-set to honour dependencies --- src/state.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/state.c b/src/state.c index a07d10b..3dc2b9b 100644 --- a/src/state.c +++ b/src/state.c @@ -253,13 +253,17 @@ int apk_state_satisfy_name(struct apk_state *state, } apk_state_set(state, preferred->id, APK_STATE_INSTALL); + r = apk_state_satisfy_deps(state, preferred->depends); + if (r != 0) + return r; + if (preferred != installed) { r = apk_state_add_change(state, installed, preferred); if (r != 0) return r; } - return apk_state_satisfy_deps(state, preferred->depends); + return 0; } int apk_state_satisfy_deps(struct apk_state *state, @@ -271,7 +275,7 @@ int apk_state_satisfy_deps(struct apk_state *state, if (deps == NULL) return 0; - for (i = 0; i < deps->num; i++) { + for (i = deps->num - 1; i >= 0; i--) { name = deps->item[i].name; if (name->pkgs == NULL) { apk_error("No providers for '%s'", name->name); -- cgit v1.2.3