1
0
mirror of https://github.com/moparisthebest/pacman synced 2025-02-28 09:21:53 -05:00

Add ALPM_EVENT_TRANSACTION_{START,DONE} events

This provides a way to detect when the processing of package changes starts,
allowing pacman to delineate hook output and package installation/removal
output.

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2015-12-14 13:39:58 +10:00
parent 132ec4c3b9
commit 8d3bd4ec13
3 changed files with 13 additions and 0 deletions

View File

@ -384,6 +384,10 @@ typedef enum _alpm_event_type_t {
ALPM_EVENT_INTERCONFLICTS_START,
/** Inter-conflicts were checked for target package. */
ALPM_EVENT_INTERCONFLICTS_DONE,
/** Processing the package transaction is starting. */
ALPM_EVENT_TRANSACTION_START,
/** Processing the package transaction is finished. */
ALPM_EVENT_TRANSACTION_DONE,
/** Package will be installed/upgraded/downgraded/re-installed/removed; See
* alpm_event_package_operation_t for arguments. */
ALPM_EVENT_PACKAGE_OPERATION_START,

View File

@ -160,6 +160,7 @@ int SYMEXPORT alpm_trans_prepare(alpm_handle_t *handle, alpm_list_t **data)
int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
{
alpm_trans_t *trans;
alpm_event_any_t event;
/* Sanity checks */
CHECK_HANDLE(handle, return -1);
@ -197,6 +198,8 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
trans->state = STATE_COMMITING;
alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction started\n");
event.type = ALPM_EVENT_TRANSACTION_START;
EVENT(handle, &event);
if(trans->add == NULL) {
if(_alpm_remove_packages(handle, 1) == -1) {
@ -219,6 +222,8 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
if(trans->state == STATE_INTERRUPTED) {
alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction interrupted\n");
} else {
event.type = ALPM_EVENT_TRANSACTION_DONE;
EVENT(handle, &event);
alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction completed\n");
_alpm_hook_run(handle, ALPM_HOOK_POST_TRANSACTION);
}

View File

@ -188,6 +188,9 @@ void cb_event(alpm_event_t *event)
case ALPM_EVENT_INTERCONFLICTS_START:
printf(_("looking for conflicting packages...\n"));
break;
case ALPM_EVENT_TRANSACTION_START:
colon_printf(_("Processing package changes...\n"));
break;
case ALPM_EVENT_PACKAGE_OPERATION_START:
if(config->noprogressbar) {
alpm_event_package_operation_t *e = &event->package_operation;
@ -327,6 +330,7 @@ void cb_event(alpm_event_t *event)
case ALPM_EVENT_CHECKDEPS_DONE:
case ALPM_EVENT_RESOLVEDEPS_DONE:
case ALPM_EVENT_INTERCONFLICTS_DONE:
case ALPM_EVENT_TRANSACTION_DONE:
case ALPM_EVENT_INTEGRITY_DONE:
case ALPM_EVENT_KEYRING_DONE:
case ALPM_EVENT_KEY_DOWNLOAD_DONE: