On 12/13/15 at 10:38pm, Allan McRae wrote:
On 07/12/15 03:35, Olivier Brunel wrote:
Add events to let frontends know when hooks are being processed (and when it's done), as that might be useful to update the UI.
It can also be useful to know when ALPM_EVENT_SCRIPTLET_INFO might be happening in that regard (There's no specific event for running scriptlets, but they do happen at specific times after/before ALPM_EVENT_PACKAGE_OPERATION_{START,DONE}).
Signed-off-by: Olivier Brunel <jjk@jjacky.com> --- On a not-quite-related topic, I wonder whether a flag should be added to skip hook processing, much like ALPM_TRANS_FLAG_NOSCRIPTLET ? I guess it might not be necessary, since frontends can simply set the hookdirs to NULL to disable them. Thoughts?
I also wondered about the same in the POV of pacman, i.e. an option --nohooks, because it seems currently one can only add hookdirs, and therefore only replace the pacman default (/etc/pacman.d/hooks) (I assume setting it to /dev/null might work to disable things?) but not the system/ALPM one (/usr/share/libalpm/hooks)?
Also unless I missed it, the documentation doesn't mention that last directory anywhere?
Agreed - we need: - document --hookdir in pacman.8. It should be mentioned that this is what HookDir is overriding in pacman-conf.8 too. - add a --nohooks option
And now, onto patch review.
I think _alpm_hook_run needs to exit after reading the hooks directories if there is no hooks. Only if there are hooks should ALPM_EVENT_HOOK_START be called. It would be even better if it was called if there were hooks for pre or post transaction.
That would require _alpm_hook_run to first loop over the hooks doing: if(hook && hook->when == when && _alpm_hook_triggered(handle, hook)) { then if any hooks matched, do ALPM_EVENT_HOOK_START and run the hooks. I think that check is fast enough that we do no need a callback until we know some hooks will be run. Andrew: would you agree?
Agreed. It has been plenty fast in all of my tests so far. apg