install.sh: don't clobber dangling symlinks
authorBaruch Siach <baruch@tkos.co.il>
Tue, 17 Jul 2018 10:40:45 +0000 (13:40 +0300)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 31 Jul 2018 13:49:19 +0000 (15:49 +0200)
Symlinks in a subdirectory that is to become target rootfs are sometimes
dangling because they link to canonical file names that are not present
on the host, but are present relative to the target rootfs root. Don't
copy over dangling symlinks when noclobber is enabled

The -e test treats dangling symlinks as non-existent files. Add -h test
that returns true for all symlinks.

Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
applets/install.sh

index 9aede0f530e277f7abe3e646f45bb31623361bf7..415896893e8626ec26f6790bdffdf5adc7581331 100755 (executable)
@@ -83,7 +83,7 @@ install -m 755 busybox "$prefix/bin/busybox" || exit 1
 for i in $h; do
        appdir=`dirname "$i"`
        app=`basename "$i"`
-       if [ x"$noclobber" = x"1" ] && [ -e "$prefix/$i" ]; then
+       if [ x"$noclobber" = x"1" ] && ([ -e "$prefix/$i" ] || [ -h "$prefix/$i" ]); then
                echo "  $prefix/$i already exists"
                continue
        fi