toolchain-external: fix rebuild/reinstall for Linaro toolchains
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 29 Apr 2015 10:28:19 +0000 (12:28 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 1 May 2015 14:30:13 +0000 (16:30 +0200)
For Linaro toolchains, a special post install staging hook is used to
create two symlinks needed for the dynamic loader to find the
libraries. However, the way the link is created prevents a 'make
toolchain-external-reinstall' from succeeding, because the symlink
already exists and points to a directory:

ln -sf . /home/thomas/projets/outputs/training/target/lib/arm-linux-gnueabihf
ln: '/home/thomas/projets/outputs/training/target/lib/arm-linux-gnueabihf/.': cannot overwrite directory

This commit adjust the hook to pass the '-n' option so that the link
name is treated as a normal file if it is a symbolic link to a
directory.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
toolchain/toolchain-external/toolchain-external.mk

index fd796a05b15e1c99639f3f7bd076edf1c3c8223e..35bba310b20f8035de3b1569ac07a960719bb6bf 100644 (file)
@@ -239,18 +239,18 @@ endif
 # {/usr,}/lib/arm-linux-gnueabihf, but Buildroot copies them to
 # {/usr,}/lib, so we need to create a symbolic link.
 define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
-       ln -sf . $(TARGET_DIR)/lib/arm-linux-gnueabihf
-       ln -sf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
+       ln -snf . $(TARGET_DIR)/lib/arm-linux-gnueabihf
+       ln -snf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
 endef
 
 define TOOLCHAIN_EXTERNAL_LINARO_ARMEBHF_SYMLINK
-       ln -sf . $(TARGET_DIR)/lib/armeb-linux-gnueabihf
-       ln -sf . $(TARGET_DIR)/usr/lib/armeb-linux-gnueabihf
+       ln -snf . $(TARGET_DIR)/lib/armeb-linux-gnueabihf
+       ln -snf . $(TARGET_DIR)/usr/lib/armeb-linux-gnueabihf
 endef
 
 define TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SYMLINK
-       ln -sf . $(TARGET_DIR)/lib/aarch64-linux-gnu
-       ln -sf . $(TARGET_DIR)/usr/lib/aarch64-linux-gnu
+       ln -snf . $(TARGET_DIR)/lib/aarch64-linux-gnu
+       ln -snf . $(TARGET_DIR)/usr/lib/aarch64-linux-gnu
 endef
 
 ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201305),y)