]> code.ossystems Code Review - openembedded-core.git/commitdiff
libgcc.inc: Fix an issue w/ a recursive symlink
authorMark Hatle <mark.hatle@xilinx.com>
Wed, 22 Jan 2020 00:27:02 +0000 (18:27 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 2 Feb 2020 16:54:33 +0000 (16:54 +0000)
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>
meta/recipes-devtools/gcc/libgcc.inc

index e008d14f361d60f3eeecef52404b798515c86791..6d48ec980925dbe4d13d58b5e071a7fee7fe787a 100644 (file)
@@ -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
 }