From 9c1e0f3dd01151b79e9b557ea8510605616c1369 Mon Sep 17 00:00:00 2001 From: Giancarlo Razzolini Date: Thu, 10 Oct 2019 18:40:23 -0300 Subject: Rework the install script a bit more Added comments to make the flow more understandable. We now actively bail when we encounter a kernel with no pkgbase. Also, if the preset does not exist yet, and there is a .pacsave, we move that instead of copying from the template. Move the preset check alongside the check if all was passed and finally, check if the args array is not empty, before trying to run mkinitcpio. --- libalpm/scripts/mkinitcpio-install | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/libalpm/scripts/mkinitcpio-install b/libalpm/scripts/mkinitcpio-install index ab952a7..d2e5041 100644 --- a/libalpm/scripts/mkinitcpio-install +++ b/libalpm/scripts/mkinitcpio-install @@ -5,29 +5,40 @@ all=0 while read -r line; do if [[ $line != */vmlinuz ]]; then + # triggers when it's a change to usr/lib/initcpio/* all=1 continue fi - pkgbase=$(<"${line%/vmlinuz}/pkgbase") - [[ -n ${pkgbase} ]] + if ! read -r pkgbase > /dev/null 2>&1 < "${line%/vmlinuz}/pkgbase"; then + # if the kernel has no pkgbase, we skip it + continue + fi preset="/etc/mkinitcpio.d/${pkgbase}.preset" if [[ ! -e $preset ]]; then - sed "s|%PKGBASE%|${pkgbase}|g" /usr/share/mkinitcpio/hook.preset \ - | install -Dm644 /dev/stdin "$preset" + if [[ -e $preset.pacsave ]]; then + # move the pacsave to the template + mv "${preset}.pacsave" "$preset" + else + # create the preset from the template + sed "s|%PKGBASE%|${pkgbase}|g" /usr/share/mkinitcpio/hook.preset \ + | install -Dm644 /dev/stdin "$preset" + fi fi + # always install the kernel install -Dm644 "${line}" "/boot/vmlinuz-${pkgbase}" + + # compound args for each kernel args+=(-p "${pkgbase}") done -if (( all )); then +if (( all )) && compgen -G /etc/mkinitcpio.d/"*.preset" > /dev/null; then + # change to use all presets args=(-P) fi -if ! compgen -G /etc/mkinitcpio.d/"*.preset" > /dev/null; then - exit 0 +if (( ${#args[@]} )); then + mkinitcpio "${args[@]}" fi - -mkinitcpio "${args[@]}" -- cgit v1.2.3-24-g4f1b