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

Mark Hatle mark.hatle at kernel.crashing.org
Tue Jan 28 18:08:34 UTC 2020



On 1/22/20 12:48 AM, Khem Raj wrote:
> 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

Yes, because the path being listed is assumed to be a directory path instead of
a file path.

--Mark

>> 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