On Mon, Feb 18, 2019 at 06:46:01PM -0600, Jason L Tibbitts III wrote:
"LA" == Laura Abbott labbott@redhat.com writes:
LA> The kernel uses a few scriptlets at the moment which will need to be LA> cleaned up, most likely replaced with file triggers.
I have some experience converting things to file triggers had a quick look. It seems we have the following:
The main kernel package messes with /etc/sysconfig/kernel to change DEFAULTKERNEL in %post and has a %posttrans package to call /sbin/kernel-install.
The devel packages do some magic with hardlink calls (set up by %kernel_devel_post).
The modules and modules-extra packages have scriptlets to call depmod (set up by %kernel_modules_post and %kernel_modules_extra_post).
These are all buried in multiple layers of macros, so getting rid of any of this is probably a nice thing regardless of any other reasons scriptlets are problematic.
One fun thing is that I have no idea how file triggers interact with packages which are installed multiple times. If it works like I think it does, each kernel package (or maybe kernel-core package) would have something like:
%transfiletriggerin -n kernel-core -- /lib/modules/%{KVERREL}/ /sbin/depmod -a %{KVERREL}
%transfiletriggerpostun -n kernel-core -- /lib/modules/%{KVERREL}/ /sbin/depmod -a %{KVERREL}
kernel-install already calls depmod (from /usr/lib/kernel/install.d/50-depmod.install). As long as kernel-install is called for the kernel, those scriptlets/transfiletriggers are not necessary.
The modules packages could then drop their scriptlets. These might need the variant magic or whatnot.
I don't really know about the hardlink calls; it would be trivial for something to call hardlink on /usr/src/kernels but optimizing that is more difficult.
I would think that the bootloader package or systemd-udev would be the proper place to put a trigger that calls kernel-install.
systemd-udev contains kernel-install, so any transfiletriggers that calls it should live there.
I don't really understand the modification of /etc/sysconfig/kernel.
/etc/sysconfig/kernel is used by grubby's new-kernel-pkg for something, I think. Javier Canillas and Peter Jones in CC.
In any case, it does seem that there's plenty of opportunity for useful cleanup here.
Totally agreed. This doesn't have to happen at at once, it'd probably be even better to chip at it away a piece at a time.
Zbyszek