[OE-core] [PATCH 2/2] libgcc.inc: Fix an issue w/ a recursive symlink

Khem Raj raj.khem at gmail.com
Wed Jan 22 06:48:54 UTC 2020


On Tue, Jan 21, 2020 at 4:43 PM Mark Hatle
<mark.hatle at kernel.crashing.org> wrote:
>
> From: Mark Hatle <mark.hatle at xilinx.com>
>
> 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.
>

does this happen with ln -sf too ? if not then perhaps that will be simpler

> Signed-off-by: Mark Hatle <mark.hatle at xilinx.com>
> Signed-off-by: Mark Hatle <mark.hatle at kernel.crashing.org>
> ---
>  meta/recipes-devtools/gcc/libgcc.inc | 8 ++++++--
>  1 file 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
>  }
>
> --
> 2.17.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


More information about the Openembedded-core mailing list