void-packages/srcpkgs/xbps-triggers/files/kernel-hooks

55 lines
1.2 KiB
Bash
Executable file

#!/bin/sh -e
#
# Run scripts found in /etc/kernel.d/ directories.
#
# Arguments: $ACTION = [run/targets]
# $TARGET = [post-install/post-remove]
# $PKGNAME
# $VERSION
# $UPDATE = [yes/no]
#
ACTION="$1"
TARGET="$2"
PKGNAME="$3"
VERSION="$4"
UPDATE="$5"
export PATH="$PATH:/usr/local/bin"
RUN_TARGETS="pre-install post-install pre-remove post-remove"
case "$ACTION" in
targets)
echo "${RUN_TARGETS}"
;;
run)
# Ignore pre-remove when updating a package.
if [ "${TARGET}" = "pre-remove" ]; then
[ "${UPDATE}" = "yes" ] && exit 0
fi
# Create required dirs when necessary.
for _dir_ in ${RUN_TARGETS}; do
[ ! -d etc/kernel.d/${_dir_} ] && mkdir -p etc/kernel.d/${_dir_}
done
# Execute kernel hooks for the specified target.
for _file_ in etc/kernel.d/${TARGET}/*; do
[ ! -x "${_file_}" ] && continue
echo "Executing ${TARGET} kernel hook: $(basename ${_file_}) ..."
# A package may export "kernel_hooks_version" as a hint
# to pass this version to the hooks.
if [ -n "${kernel_hooks_version}" ]; then
env ROOTDIR="." ${_file_} ${PKGNAME} ${kernel_hooks_version}
else
env ROOTDIR="." ${_file_} ${PKGNAME} ${VERSION}
fi
done
;;
*)
exit 1
;;
esac
exit 0