diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2017-07-10 18:37:25 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2017-07-11 17:26:32 +0200 |
commit | 438dcbfe74a6da1a8949d8fb785092d934499b60 (patch) | |
tree | 0f455ad4fd7d82cbe7c037afd27d9e9ca9537d12 /package/base-files/files/lib/upgrade/common.sh | |
parent | f464da623db1a53231e5f7d54a51e355c0d32dff (diff) | |
download | upstream-438dcbfe74a6da1a8949d8fb785092d934499b60.tar.gz upstream-438dcbfe74a6da1a8949d8fb785092d934499b60.tar.bz2 upstream-438dcbfe74a6da1a8949d8fb785092d934499b60.zip |
base-files: automatically handle paths and symlinks for RAMFS_COPY_BIN
Depending on busybox applet selection, paths of basic utiilties may differ,
and may not work as symlinks to busybox. Simply using whatever binary is
found in PATH and detecting symlinks automatically is more robust and
easier to maintain.
The list of binaries is also slightly cleaned up and duplicates are
removed.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Diffstat (limited to 'package/base-files/files/lib/upgrade/common.sh')
-rw-r--r-- | package/base-files/files/lib/upgrade/common.sh | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index c8b71015c2..428ec735d6 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -6,28 +6,33 @@ RAM_ROOT=/tmp/root libs() { ldd $* 2>/dev/null | sed -r 's/(.* => )?(.*) .*/\2/'; } install_file() { # <file> [ <file> ... ] + local target dest dir for file in "$@"; do + if [ -L "$file" ]; then + target="$(readlink -f "$file")" + dest="$RAM_ROOT/$file" + [ ! -f "$dest" ] && { + dir="$(dirname "$dest")" + mkdir -p "$dir" + ln -s "$target" "$dest" + } + file="$target" + fi dest="$RAM_ROOT/$file" - [ -f $file -a ! -f $dest ] && { - dir="$(dirname $dest)" + [ -f "$file" -a ! -f "$dest" ] && { + dir="$(dirname "$dest")" mkdir -p "$dir" - cp $file $dest + cp "$file" "$dest" } done } -install_bin() { # <file> [ <symlink> ... ] +install_bin() { + local src files src=$1 files=$1 [ -x "$src" ] && files="$src $(libs $src)" install_file $files - shift - for link in "$@"; do { - dest="$RAM_ROOT/$link" - dir="$(dirname $dest)" - mkdir -p "$dir" - [ -f "$dest" ] || ln -s $src $dest - }; done } run_hooks() { |