From: Harald Hoyer Date: Wed, 30 Sep 2009 13:35:33 +0000 (+0200) Subject: dracut-functions: let inst*() honor and handle symlinks correctly X-Git-Tag: 003~148 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d46c2e8b0acb7dc8e41fe7b5b5fff07e6dacc084;p=thirdparty%2Fdracut.git dracut-functions: let inst*() honor and handle symlinks correctly --- diff --git a/dracut-functions b/dracut-functions index ddfe26cc6..201e5635c 100755 --- a/dracut-functions +++ b/dracut-functions @@ -169,7 +169,7 @@ inst_simple() { local src target [[ -f $1 ]] || return 1 src=$1 target="${2:-$1}" - [[ -f ${initdir}$target ]] && return 0 + [[ -e ${initdir}$target ]] && return 0 inst_dir "${target%/*}" dinfo "Installing $src" cp -pfL "$src" "${initdir}$target" @@ -180,7 +180,7 @@ inst_simple() { # is referenced. inst_library() { local src=$1 dest=${2:-$1} - [[ -f $initdir$dest ]] && return 0 + [[ -e $initdir$dest ]] && return 0 if [[ -L $src ]]; then reallib=$(readlink -f "$src") lib=${src##*/} @@ -209,8 +209,9 @@ inst_binary() { local bin target bin=$(find_binary "$1") || return 1 target=${2:-$bin} + inst_symlink $bin $target && return 0 local LDSO NAME IO FILE ADDR I1 n f TLIBDIR - [[ -f $initdir$target ]] && return 0 + [[ -e $initdir$target ]] && return 0 # I love bash! ldd $bin 2>/dev/null | while read line; do [[ $line = 'not a dynamic executable' ]] && return 1 @@ -223,7 +224,7 @@ inst_binary() { so_regex='([^ ]*/lib[^/]*/[^ ]*\.so[^ ]*)' [[ $line =~ $so_regex ]] || continue FILE=${BASH_REMATCH[1]} - [[ -f ${initdir}$FILE ]] && continue + [[ -e ${initdir}$FILE ]] && continue # see if we are loading an optimized version of a shared lib. lib_regex='^(/lib[^/]*).*' if [[ $FILE =~ $lib_regex ]]; then @@ -231,7 +232,7 @@ inst_binary() { BASE=${FILE##*/} # prefer nosegneg libs, then unoptimized ones. for f in "$TLIBDIR/i686/nosegneg" "$TLIBDIR"; do - [[ -f $f/$BASE ]] || continue + [[ -e $f/$BASE ]] || continue FILE=$f/$BASE break done