busybox: don't clobber dangling symlinks
We sometimes create dangling symlinks in the target directory. That is because we need canonical targets, as relative targets don't work well with BR2_ROOTFS_MERGED_USR. For example, the vim package installs the /bin/vi symlink to /usr/bin/vim. This symlink might be dangling when the build host has no vim installed there. Patch the busybox install.sh script to avoid clobber of dangling symlinks. Fixes: http://autobuild.buildroot.net/results/796/796107430db6545401d9926e84f19eaf2040b756/ Cc: Adam Duskett <aduskett@gmail.com> Cc: Carlos Santos <casantos@datacom.com.br> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
994a47649b
commit
b1db9038dd
@ -0,0 +1,38 @@
|
||||
From c9f1a877f1b9e2602913600d769edb17ee41d15d Mon Sep 17 00:00:00 2001
|
||||
From: Baruch Siach <baruch@tkos.co.il>
|
||||
Date: Tue, 17 Jul 2018 13:18:09 +0300
|
||||
Subject: [PATCH] install.sh: don't clobber dangling symlinks
|
||||
|
||||
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>
|
||||
---
|
||||
Upstream status:
|
||||
http://lists.busybox.net/pipermail/busybox/2018-July/086555.html
|
||||
|
||||
applets/install.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/applets/install.sh b/applets/install.sh
|
||||
index 9aede0f530e2..415896893e86 100755
|
||||
--- a/applets/install.sh
|
||||
+++ b/applets/install.sh
|
||||
@@ -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
|
||||
--
|
||||
2.18.0
|
||||
|
Loading…
Reference in New Issue
Block a user