55 lines
1.1 KiB
Bash
Executable file
55 lines
1.1 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
|
|
${_file_} ${PKGNAME} ${kernel_hooks_version}
|
|
else
|
|
${_file_} ${PKGNAME} ${VERSION}
|
|
fi
|
|
done
|
|
;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|