diff options
author | Dave Reisner <dreisner@archlinux.org> | 2012-05-02 19:26:29 +0200 |
---|---|---|
committer | Dave Reisner <dreisner@archlinux.org> | 2012-05-02 19:26:29 +0200 |
commit | 25e8e2078610025ce52d90b55997d413f0b88bd4 (patch) | |
tree | 4e02a466b312c2e023281165aa3a16495cd03cf8 /mkinitcpio | |
parent | bd858a51e41cbcbbff67430508494553aeffdd27 (diff) | |
download | mkinitcpio-25e8e2078610025ce52d90b55997d413f0b88bd4.tar.gz mkinitcpio-25e8e2078610025ce52d90b55997d413f0b88bd4.tar.xz |
ensure that cmdline added hooks are run properly in early init
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Diffstat (limited to 'mkinitcpio')
-rwxr-xr-x | mkinitcpio | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -104,6 +104,13 @@ get_kernver() { return 1 } +compute_hookset() { + for h in $HOOKS "${ADDHOOKS[@]}"; do + in_array "$h" "${SKIPHOOKS[@]}" && continue + hooks+=("$h") + done +} + . "$FUNCTIONS" trap 'cleanup 130' INT @@ -312,7 +319,11 @@ if [[ ! -f "$CONFIG" ]]; then fi . "$CONFIG" -if [[ -z ${HOOKS//[[:space:]]} && -z ${ADDHOOKS[@]} ]]; then +# after returning, hooks are populated into the array 'hooks' +# HOOKS should not be referenced from here on +compute_hookset + +if (( ${#hooks[*]} == 0 )); then die "Invalid config: No hooks found" fi @@ -352,8 +363,7 @@ for var in MODULES BINARIES FILES; do declare "cfg_$var=${!var}" done -for hook in ${HOOKS} "${ADDHOOKS[@]}"; do - in_array "$hook" "${SKIPHOOKS[@]}" && continue +for hook in "${hooks[@]}"; do unset MODULES BINARIES FILES SCRIPT build() { error "$hook: no build function..."; return 1; } |