[Buildroot] 答复: 答复: patch: fix wrong sysroot path when given rsdk toolchain

陈小刚 shawn_chen at realsil.com.cn
Mon Jul 23 06:54:18 UTC 2018


Hi Arnout,

Thanks for confirming the problem.
I pasted the patch with a refurbished commit msg as below.

From f884cb3ed9f920f8516fef0b3246b29751c25704 Mon Sep 17 00:00:00 2001
From: Shawn Chen <shawn_chen at realsil.com.cn>
Date: Mon, 23 Jul 2018 14:30:24 +0800
Subject: [PATCH 1/1] toolchain: avoid unexpected regex substitution

Anchor the regex in toolchain_find_sysroot macro with a / to avoid
unexpected substitution for Realtek mips toolchain, for which the libc.a
path ends with 'mips-linux-uclibc/lib/libc.a'.

Signed-off-by: Shawn Chen <shawn_chen at realsil.com.cn>
---
 toolchain/toolchain-external/pkg-toolchain-external.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk
index 8b2c283654..1ae099fd33 100644
--- a/toolchain/toolchain-external/pkg-toolchain-external.mk
+++ b/toolchain/toolchain-external/pkg-toolchain-external.mk
@@ -339,7 +339,7 @@ endef
 #
 # And variations on these.
 define toolchain_find_sysroot
-$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::')
+$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:/(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::')
 endef
 
 # Returns the lib subdirectory for the given compiler + flags (i.e
-- 
2.16.2.windows.1

Regards
Shawn Chen

-----邮件原件-----
发件人: buildroot [mailto:buildroot-bounces at busybox.net] 代表 Arnout Vandecappelle
发送时间: 2018年7月23日 5:24
收件人: 陈小刚; Thomas Petazzoni
抄送: Thomas De Schampheleire; buildroot at buildroot.org
主题: Re: [Buildroot] 答复: patch: fix wrong sysroot path when given rsdk toolchain



On 20-07-18 10:21, 陈小刚 wrote:
> Hi Thomas,
> 
> Thanks for reminding, I'm tweaking my work environment to use git-send-email, it takes a while.
> I uploaded the toolchain to Google drive for your test, here is the link:
> https://drive.google.com/open?id=1vkrGPUWbzIGMWMZb8DypyK1VIynnbqnn
> And a defconfig for your reference:
> https://drive.google.com/open?id=1J8ksyWcyXEBfEy0EKrMuH1Zyiif25HrR
> 
> In shell you can mimic the buildroot find toolchain sysroot as this:
> 
> $ readlink -f $(LANG=C ..../rsdk-6.4.1-5281-EL-4.9-u1.0-m32fut-180611/bin/rsdk-linux-gcc -print-file-name=libc.a)|sed -r -e 's:(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::'

 libc.a is in mips-linux-uclibc/lib/libc.a. The problem is that the libc.a is
allowed to reside in a subdirectory of lib (the ([^/]*/)? part of the regex).
Since the regex is greedy, it will match the 'libc/' part for the lib* bit, and
'lib/' for the additional subdirectory.

 Anchoring with a / sounds like a good idea to me. Especially since just below,
the toolchain_find_libdir macro *does* anchor at a /.

 Regards,
 Arnout

> 
> Regards
> Shawn Chen
> 
> -----邮件原件-----
> 发件人: Thomas Petazzoni [mailto:thomas.petazzoni at bootlin.com] 
> 发送时间: 2018年7月19日 21:33
> 收件人: 陈小刚
> 抄送: buildroot at buildroot.org; Thomas De Schampheleire
> 主题: Re: [Buildroot] patch: fix wrong sysroot path when given rsdk toolchain
> 
> Hello Shawn,
> 
> Thanks for your patch, and for contributing to Buildroot!
> 
> On Thu, 19 Jul 2018 09:10:03 +0000, 陈小刚 wrote:
> 
>> The attachment is a patch that fixes a Realtek toolchain that has a
>> sysroot path of ‘mips-linux-uclibc’, this causes the buildroot
>> recognizes the sysroot as ‘mips-linux-uc’ by the sed operation, and
>> then the external toolchain setup is failed. Adding a ‘/’ in the sed
>> re expression avoids the wrong substitution, other toolchains like
>> linaro arm toolchain are tested ok to ensure no side effect is
>> induced, please help review and apply this patch, thanks.
> 
> Would it be possible to get access to this Realtek toolchain? I'd like
> to check the behavior, and understand a bit more the issue, because it
> looks a bit suspicious/strange.
> 
> The sed expression is supposed to replace:
> 
>   /path/to/sysroot/usr/lib/libc.a
> 
> by:
> 
>   /path/to/sysroot/
> 
> So I don't quite see how the ending "libc" in mips-linux-uclibc can
> affect this.
> 
> Also, for your next patches, could you send them with the patch
> description in the commit log (currently your commit log is just
> "IPCSDK-6460", which is not very useful) ? Also, they should be sent
> with "git send-email", so that the patch is inline.
> 
> Thanks a lot!
> 
> Thomas
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

------Please consider the environment before printing this e-mail.


More information about the buildroot mailing list