From be76f8bf0600e5d5d4745e8a3d32089998a91585 Mon Sep 17 00:00:00 2001 From: morganamilo Date: Sun, 13 Jun 2021 13:28:15 +0100 Subject: [PATCH] libalpm: add ALPM_TRANS_FLAG_NOHOOKS Signed-off-by: Allan McRae --- lib/libalpm/alpm.h | 3 ++- lib/libalpm/trans.c | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 54814de2..8d8fe243 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -2715,7 +2715,8 @@ typedef enum _alpm_transflag_t { ALPM_TRANS_FLAG_RECURSE = (1 << 5), /** Modify database but do not commit changes to the filesystem. */ ALPM_TRANS_FLAG_DBONLY = (1 << 6), - /* (1 << 7) flag can go here */ + /** Do not run hooks during a transaction */ + ALPM_TRANS_FLAG_NOHOOKS = (1 << 7), /** Use ALPM_PKG_REASON_DEPEND when installing packages. */ ALPM_TRANS_FLAG_ALLDEPS = (1 << 8), /** Only download packages and do not actually install. */ diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c index f22f9bf9..ae5c72ae 100644 --- a/lib/libalpm/trans.c +++ b/lib/libalpm/trans.c @@ -198,7 +198,8 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data) } } - if(_alpm_hook_run(handle, ALPM_HOOK_PRE_TRANSACTION) != 0) { + if(!(trans->flags & ALPM_TRANS_FLAG_NOHOOKS) && + _alpm_hook_run(handle, ALPM_HOOK_PRE_TRANSACTION) != 0) { RET_ERR(handle, ALPM_ERR_TRANS_HOOK_FAILED, -1); } @@ -232,7 +233,10 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data) event.type = ALPM_EVENT_TRANSACTION_DONE; EVENT(handle, (void *)&event); alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction completed\n"); - _alpm_hook_run(handle, ALPM_HOOK_POST_TRANSACTION); + + if(!(trans->flags & ALPM_TRANS_FLAG_NOHOOKS)) { + _alpm_hook_run(handle, ALPM_HOOK_POST_TRANSACTION); + } } trans->state = STATE_COMMITED;