From e1899cbc64c6b634107f09c3a3e8152c63078636 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 19 Sep 2011 13:18:42 -0500 Subject: Be smarter about running ldconfig during removal transactions 1. Don't run it if something failed in package removal- this mirrors what we already do in sync transactions. 2. Don't run it if we are invoking it for the replaces removal bit of a sync transaction- it doesn't make sense to run ldconfig halfway through a sync install; we should only run it once at the end. Signed-off-by: Dan McGee --- lib/libalpm/remove.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'lib/libalpm/remove.c') diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index c6a3efcb..e998763f 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -475,7 +475,7 @@ db: return 0; } -int _alpm_remove_packages(alpm_handle_t *handle) +int _alpm_remove_packages(alpm_handle_t *handle, int run_ldconfig) { alpm_list_t *targ; size_t pkg_count, targ_count; @@ -489,23 +489,25 @@ int _alpm_remove_packages(alpm_handle_t *handle) alpm_pkg_t *pkg = targ->data; if(trans->state == STATE_INTERRUPTED) { - return 0; + return ret; } if(_alpm_remove_single_package(handle, pkg, NULL, targ_count, pkg_count) == -1) { handle->pm_errno = ALPM_ERR_TRANS_ABORT; + /* running ldconfig at this point could possibly screw system */ + run_ldconfig = 0; ret = -1; - goto cleanup; } targ_count++; } - /* run ldconfig if it exists */ - _alpm_ldconfig(handle); + if(run_ldconfig) { + /* run ldconfig if it exists */ + _alpm_ldconfig(handle); + } -cleanup: return ret; } -- cgit v1.2.3-24-g4f1b