diff options
author | Mark Hatle <mark.hatle@xilinx.com> | 2020-01-21 18:27:02 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-02-02 16:54:33 +0000 |
commit | ef28e5a74d939acc98d6e8e9a0efbeb143b8025f (patch) | |
tree | 20f1812d5abb0480da1eda2c9a0c47138949fd77 /meta/recipes-devtools/gcc | |
parent | c7329b17cbbef64984196e2b79a81988db1d2bf3 (diff) | |
download | openembedded-core-contrib-ef28e5a74d939acc98d6e8e9a0efbeb143b8025f.tar.gz |
libgcc.inc: Fix an issue w/ a recursive symlink
If the OS is not Linux, the code could end up generating a recursive symlink.
This can happen because the same symlink can be created twice in a row. If this
happenes, the second symlink becomes a link to itself within the directory
pointed to by the original link.
In order to prevent this, verify that the destination does not already exist.
Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/gcc')
-rw-r--r-- | meta/recipes-devtools/gcc/libgcc.inc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-devtools/gcc/libgcc.inc index e008d14f36..6d48ec9809 100644 --- a/meta/recipes-devtools/gcc/libgcc.inc +++ b/meta/recipes-devtools/gcc/libgcc.inc @@ -9,14 +9,18 @@ do_install_append_class-target () { "linux-musleabi") extra_target_os="linux-gnueabi";; *) extra_target_os="linux";; esac - ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os + if [ ! -e ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os ]; then + ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os + fi fi if [ -n "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}" ]; then case "${TARGET_OS}" in "linux-musleabi") extra_target_os="linux-musleabihf";; "linux-gnueabi") extra_target_os="linux-gnueabihf";; esac - ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os + if [ ! -e ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os ]; then + ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os + fi fi } |