On 03/27/2013 02:34 PM, Reshetova, Elena wrote:

After far too much pondering... I went ahead and added the prepare hook
+ some related bits and pieces. And actually ripped out SELinux support
from rpm core while at it, replaced by a simple SELinux plugin. Wohoo.

Looks cool :) Hope it works ;)

The basics seem to be working fine :)

The plugin configuration mechanism probably wants a bit more thinking + work though: for some things you'd want to be able to enable a plugin by merely installing the relevant (sub)package. For example I would want the SELinux plugin to get enabled whenever its present, without having to hunt where __transaction_plugins is defined and override it,
which is annoying and error-prone.

In other words, I think there should be a drop-in directory for the plugin configuration where the plugin sub-packages can drop their default configuration as separate files, including whether they should be enabled by default or not. There was something else in this direction too ... but I can't remember it right now.

I think I'll leave the commit-hooks to you though :)

Ok, I think I will be able to send you a version for review today, but I have
got one question. I was under impression that we at some point agreed to pass
to hooks the whole stat structure as opposite for just mode_t. This would
allow plugins to make checks on things like st_nlink and other useful info
about the file. Do I remember this wrongly?

No, you are right, but I chickened out :) See

http://rpm.org/gitweb?p=rpm.git;a=commitdiff;h=354c00ba7558e2dd78dd6f5906d3ba3e4c41e74a

http://rpm.org/gitweb?p=rpm.git;a=commitdiff;h=3ae4e4087e48e0bbfbafe5c9948bdcbc5fe1c63e

The trouble starts with the special case of fsmMkdirs(): there's a struct stat handy, but the directories only get created if the stat() fails, in which case the struct stat contents are undefined. Sure, it'd be possible to hack up a struct stat that resembles a directory for that case, but that rang a "proceed with caution" alarm bell in my head. If, or rather when, we need to fake up stuff the semantics get fuzzy real quick. For example the st_nlink thing: the adjusted count is currently actually only available in fsmCommit() so different hooks would see different values for the same file. Etc.

I still actually think we'll eventually want to pass the whole stat struct (or roughly equivalent amount of data in some other means) to plugins, being able to sanely do so requires further hacking of the FSM.

        - Panu -
_______________________________________________
Rpm-maint mailing list
[email protected]
http://lists.rpm.org/mailman/listinfo/rpm-maint

Reply via email to