diff options
author | Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> | 2017-02-07 22:56:49 +0100 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2017-04-05 21:33:43 +0200 |
commit | 38b51739da7fa7b950bbc46c059fbbab465ba4cb (patch) | |
tree | d64adb687749a9bbe0cb9a7b97446b4056224303 | |
parent | 9e4fb2019b116da3f606eeae976752d1a64d5fc5 (diff) | |
download | buildroot-38b51739da7fa7b950bbc46c059fbbab465ba4cb.tar.gz buildroot-38b51739da7fa7b950bbc46c059fbbab465ba4cb.zip |
toolchain: copy_toolchain_lib_root: copy symlinks instead of recreating them
copy_toolchain_lib_root handles symlinks by recreating them, disregarding
the original destination and assuming the destination is in the same
directory as the link itself.
When a library link points to the real library file in another directory,
for example:
usr/lib/octeon2/libcrypt.so -> ../../../lib32/octeon2/libcrypt.so.1
then the link created by copy_toolchain_lib_root is broken.
It is more robust to copy the symlink to keep the destination intact. The
destination path should be present, possibly through other symbolic links.
Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-rw-r--r-- | toolchain/helpers.mk | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index e83bf272e7..5af38c6421 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -19,8 +19,7 @@ copy_toolchain_lib_root = \ LIBNAME=`basename $${LIBPATH}`; \ rm -fr $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ if test -h $${LIBPATH} ; then \ - LINKTARGET=`readlink $${LIBPATH}` ; \ - ln -sf `basename $${LINKTARGET}` $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME} ; \ + cp -d $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ LIBPATH="`readlink -f $${LIBPATH}`"; \ elif test -f $${LIBPATH}; then \ $(INSTALL) -D -m0755 $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ |