[pacman-dev] Hooks for pacman
Allan McRae
allan at archlinux.org
Thu Jan 22 19:29:52 EST 2009
Aaron Griffin wrote:
> On Thu, Jan 22, 2009 at 9:15 AM, Allan McRae <allan at archlinux.org> wrote:
>
>> Hi all,
>>
>> A new feature I am ever so slightly obsessed about at the moment is the
>> possibility of having hooks in pacman for doing common tasks in install
>> files. e.g. adding info pages to directory, updating font/icon/.desktop
>> cache, gconf stuff...
>> So, how would this be implemented? Here is my outline:
>>
>> Two types of hooks would be needed for both install and remove. One type
>> that is run for every matching file (e.g. info install) and one type that is
>> run once per transaction (e.g. font cache update). These could be stored in
>> /etc/pacman.d/hooks/ with an index of hooks in /etc/pacman.d/hooks.conf.
>> The .conf file could look something like:
>>
>> [add]
>> PerFile = infopage /usr/share/info/
>> PerTrans = fontcache /usr/share/fonts/
>>
>> [remove]
>> ...
>>
>> That needs improvement, but that covers the information that needs presented
>> - whether the hook is run per file or per transaction, the name of the hook
>> and the directory whose files set off this hook. Maybe the conditions that
>> set the hook off should be in the actual hook file.
>>
>> I guess the actual hook would look look just like:
>>
>> hook()
>> {
>> do stuff here...
>> }
>>
>> I figure we must already generate a list of all the files being
>> added/removed during conflict checks, so we would "just" need to scan that
>> list for what hooks need to be run and actually run them.
>>
>> Anyway, I thought I would post this idea here so I could get more feedback
>> on the implementation and maybe convince someone to code it...
>>
>
> This is much better than the ideas Dan and I fleshed out last time we
> talked about this. One or two nitpicks, though:
>
> a) [add] and [remove] seem to simple. How about [AddHooks] and [RemoveHooks]?
> b) It'd be nice to use fnmatch patterns (globs) for the file paths.
> c) Instead of a function, it makes more sense to just make a script
> that takes the files as args, and only run it if it is executable
> (assume -x is disable)
> Other than that, I really like the PerFile and PerTrans distinction.
>
All good suggestions. I went for the function idea so I could reused
code for running install scripts. I have never look at that code so I
don't know whether that would be a good or bad idea.
Thinking about this some more, per transaction hooks really only need
ran per transaction... I.e. there is probably no need for the
distinction within [AddHooks] of PerFile and PerTrans. All the examples
I used for run once hook will look the same for both add and remove.
Instead, we could have [AddHooks], [RemoveHooks] and [TransHooks].
> Questions:
> Where will these hooks reside? /etc/pacman.d/hooks/ ?
>
Sure.
> When modifying the config parsing, can you ensure 'Include' works
> here? That would allow us to ship some stock hooks for info files and
> the like, and users would simply include them.
>
Can you provide an example of what you think the config would look
like. I have a fair guess at what you mean but clarification would be
good.
I will make a wiki page with config mock-ups and a few example hooks
given this is probably the most important part to get right of the whole
proposal.
Allan
More information about the pacman-dev
mailing list