From 8d59e6a1d7ef3e68b6ed3f17a7a0c20873055592 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 1 Oct 2017 13:57:54 -0400 Subject: Avoid erroneous deprecation warnings Consistently handle hooks as symlinks by relying on the exit status of readlink instead of an lstat and always, additionally, examine the hooks basenames to ensure that we aren't warning about foo deprecating foo (because the hook is a symlink to somewhere else that the hook is actually stored on disk. ref: https://bugs.archlinux.org/task/55323 --- functions | 9 ++++----- mkinitcpio | 12 ++---------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/functions b/functions index 941312f..53557e7 100644 --- a/functions +++ b/functions @@ -695,7 +695,7 @@ initialize_buildroot() { } run_build_hook() { - local hook=$1 script= realscript= + local hook=$1 script= resolved= local MODULES=() BINARIES=() FILES=() SCRIPT= # find script in install dirs @@ -705,11 +705,10 @@ run_build_hook() { fi # check for deprecation - if [[ -L $script ]]; then - realscript=$(readlink -e "$script") + if resolved=$(readlink "$script") && [[ ${script##*/} != "${resolved##*/}" ]]; then warning "Hook '%s' is deprecated. Replace it with '%s' in your config" \ - "${script##*/}" "${realscript##*/}" - script=$realscript + "${script##*/}" "${resolved##*/}" + script=$resolved fi # source diff --git a/mkinitcpio b/mkinitcpio index ad96a4f..42b8290 100755 --- a/mkinitcpio +++ b/mkinitcpio @@ -125,8 +125,7 @@ hook_help() { return 1 fi - if [[ -L $script ]]; then - resolved=$(readlink -e "$script") + if resolved=$(readlink "$script") && [[ ${script##*/} != "${resolved##*/}" ]]; then msg "This hook is deprecated. See the '%s' hook" "${resolved##*/}" return 0 fi @@ -155,14 +154,7 @@ hook_list() { [[ -e $hook || -L $hook ]] || continue # handle deprecated hooks and point to replacement - if [[ -L $hook ]]; then - resolved=$(readlink -e "$hook") - - if [[ -z $resolved ]]; then - error "found broken symlink '%s'" "$hook" - continue - fi - + if resolved=$(readlink "$hook") && [[ ${hook##*/} != "${resolved##*/}" ]]; then resolved=${resolved##*/} if ! index_of "$resolved" "${depr[@]}"; then -- cgit v1.2.3-24-g4f1b