#!/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