01019884fb
We now trigger on files in /usr/share/postmarketos-mkinitfs-triggers. This can be used by other packages like osk-sdl for which an updated version would otherwise never be used in the initramfs
60 lines
1.4 KiB
Bash
60 lines
1.4 KiB
Bash
#!/bin/sh -e
|
|
|
|
# $1: kernel flavor
|
|
rebuild_initfs_flavor()
|
|
{
|
|
abi_release=$(cat /usr/share/kernel/"$1"/kernel.release)
|
|
mkinitfs -o /boot/initramfs-"$1" "$abi_release"
|
|
}
|
|
|
|
# Each argument to this shell script is a path, that caused the trigger to
|
|
# execute. When a hook was changed, rebuild all flavors. When only one flavor
|
|
# was changed, find out if it has been installed or uninstalled, and rebuild
|
|
# it or delete the left-overs.
|
|
rebuild_all="false"
|
|
for i in "$@"; do
|
|
case "$i" in
|
|
# Hook change
|
|
/etc/postmarketos-mkinitfs/hooks*)
|
|
rebuild_all="true"
|
|
break ;;
|
|
|
|
# osk-sdl change
|
|
/usr/share/postmarketos-mkinitfs-triggers)
|
|
rebuild_all="true"
|
|
break ;;
|
|
|
|
# Kernel flavor change
|
|
/usr/share/kernel/*)
|
|
flavor=${i##*/}
|
|
if [ -f "$i"/kernel.release ]; then
|
|
# installed
|
|
[ "$rebuild_all" = "true" ] || rebuild_initfs_flavor "$flavor"
|
|
else
|
|
# uninstalled
|
|
rm -f "$( readlink -f /boot/initramfs-"$flavor" )" \
|
|
/boot/initramfs-"$flavor" /boot/vmlinuz-"$flavor" \
|
|
/boot/"$flavor" /boot/"$flavor".gz /"$flavor" /"$flavor".gz
|
|
fi
|
|
|
|
break ;;
|
|
esac
|
|
done
|
|
|
|
# Rebuild all flavors, if necessary
|
|
if [ "$rebuild_all" = "true" ]; then
|
|
for i in /usr/share/kernel/*; do
|
|
[ -d "$i" ] && rebuild_initfs_flavor "${i##*/}"
|
|
done
|
|
fi
|
|
|
|
# Cleanup unused initramfs
|
|
for i in /boot/initramfs-[0-9]*; do
|
|
[ -f "$i" ] || continue
|
|
if ! [ -f /boot/vmlinuz-"${i#/boot/initramfs-}" ]; then
|
|
rm "$i"
|
|
fi
|
|
done
|
|
|
|
sync
|
|
exit 0
|