From e34d2ed5fdec628936711517612a0fe643ed6d33 Mon Sep 17 00:00:00 2001 From: Timo Teräs Date: Wed, 14 Sep 2011 11:30:02 +0300 Subject: solver, db: run triggers in dependency order fixes #738 --- src/database.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'src/database.c') diff --git a/src/database.c b/src/database.c index 2b5b687..135f6b4 100644 --- a/src/database.c +++ b/src/database.c @@ -1458,23 +1458,20 @@ static int fire_triggers(apk_hash_item item, void *ctx) return 0; } -int apk_db_run_triggers(struct apk_database *db) +struct apk_package_array *apk_db_get_pending_triggers(struct apk_database *db) { struct apk_installed_package *ipkg; + struct apk_package_array *pkgs = NULL; + apk_package_array_init(&pkgs); apk_hash_foreach(&db->installed.dirs, fire_triggers, db); - list_for_each_entry(ipkg, &db->installed.triggers, trigger_pkgs_list) { if (ipkg->pending_triggers->num == 0) continue; - - *apk_string_array_add(&ipkg->pending_triggers) = NULL; - apk_ipkg_run_script(ipkg, db, APK_SCRIPT_TRIGGER, - ipkg->pending_triggers->item); - apk_string_array_free(&ipkg->pending_triggers); + *apk_package_array_add(&pkgs) = ipkg->pkg; } - return 0; + return pkgs; } int apk_db_cache_active(struct apk_database *db) -- cgit v1.2.3-70-g09d2