• Jose Ignacio Tornos Martinez's avatar
    kbuild: rpm-pkg: simplify installkernel %post · 358de8b4
    Jose Ignacio Tornos Martinez authored
    The new installkernel application that is now included in systemd-udev
    package allows installation although destination files are already present
    in the boot directory of the kernel package, but is failing with the
    implemented workaround for the old installkernel application from grubby
    package.
    
    For the new installkernel application, as Davide says:
    <<The %post currently does a shuffling dance before calling installkernel.
    This isn't actually necessary afaict, and the current implementation
    ends up triggering downstream issues such as
    https://github.com/systemd/systemd/issues/29568
    This commit simplifies the logic to remove the shuffling. For reference,
    the original logic was added in commit 3c9c7a14("rpm-pkg: add %post
    section to create initramfs and grub hooks").>>
    
    But we need to keep the old behavior as well, because the old installkernel
    application from grubby package, does not allow this simplification and
    we need to be backward compatible to avoid issues with the different
    packages.
    
    Mimic Fedora shipping process and store vmlinuz, config amd System.map
    in the module directory instead of the boot directory. In this way, we will
    avoid the commented problem for all the cases, because the new destination
    files are not going to exist in the boot directory of the kernel package.
    
    Replace installkernel tool with kernel-install tool, because the latter is
    more complete.
    
    Besides, after installkernel tool execution, check to complete if the
    correct package files vmlinuz, System.map and config files are present
    in /boot directory, and if necessary, copy manually for install operation.
    In this way, take into account if  files were not previously copied from
    /usr/lib/kernel/install.d/* scripts and if the suitable files for the
    requested package are present (it could be others if the rpm files were
    replace with a new pacakge with the same release and a different build).
    
    Tested with Fedora 38, Fedora 39, RHEL 9, Oracle Linux 9.3,
    openSUSE Tumbleweed and openMandrive ROME, using dnf/zypper and rpm tools.
    
    cc: stable@vger.kernel.org
    Co-Developed-by: default avatarDavide Cavalca <dcavalca@meta.com>
    Signed-off-by: default avatarJose Ignacio Tornos Martinez <jtornosm@redhat.com>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    358de8b4
kernel.spec 3.38 KB