[OE-core] [PATCH 1/4] base.bbclass: Remove invalid ccache related code

Yang, Liezhi Liezhi.Yang at windriver.com
Tue Dec 11 10:59:21 UTC 2018



Sent from mobile phone

> 在 2018年12月11日,18:43,"richard.purdie at linuxfoundation.org" <richard.purdie at linuxfoundation.org> 写道:
> 
>> On Tue, 2018-12-11 at 18:12 +0800, Robert Yang wrote:
>>> On 12/11/18 5:44 PM, richard.purdie at linuxfoundation.org wrote:
>>>> On Tue, 2018-12-11 at 17:24 +0800, Robert Yang wrote:
>>>> On 12/10/18 6:29 PM, Richard Purdie wrote:
>>> No, that isn't correct :(
>>> 
>>> The problem is that "gcc" can be linked directly to ccache by the
>>> host
>>> distro. This means you end up using the host ccache just by calling
>>> "gcc". This code is still needed if we want to control ccache and
>>> be
>>> able to disable it and use ccache-native for determinism.
>> 
>> I did a test:
>> 
>> $ ln -s /usr/bin/ccache /folk/lyang1/bin/gcc
>> I got errors with/without the code:
>> 
>> $ bitbake -p
>> bb.BBHandledException
>> ERROR: Error running gcc  --version:
>> 
>> $ ls -l tmp/hosttools/gcc
>> tmp/hosttools/gcc -> /folk/lyang1/bin/gcc
>> 
>> $ ls -l /folk/lyang1/bin/gcc
>> /folk/lyang1/bin/gcc -> /usr/bin/ccache
>> 
>> It worked well if I run gcc --version manually:
>> $ gcc --version
>> gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
>> Copyright (C) 2015 Free Software Foundation, Inc.
>> $ echo $?
>> 0
>> 
>> There must be something wrong in such a case. I will fix this later.
>> 
>> Let's get back to he code:
>> 
>>             srctool = bb.utils.which(path, tool, executable=True)
>>             if "ccache" in srctool:
>>                 srctool = bb.utils.which(path, tool,
>> executable=True, direction=1)
>>             if srctool:
>>                 os.symlink(srctool, desttool)
>> 
>> 
>> * If tool == "gcc", then srctool would be gcc, too.
>> * If tool == "ccache", then srctool would be ccache, too.
>> 
>> So I think that the code doesn't help when gcc links to ccache ?
> 
> https://www.unix.com/man-page/suse/1/ccache/
> 
> When the distros we tested on did this they placed it in something like
> bin/ccache/ so the code detects the "ccache" element of the path
> returned by which() (something like /usr/bin/ccache/gcc but I don't
> remember exactly).
> 
> Try using /folk/lyang1/ccache/ or /folk/lyang1/bin/ccache/ in your
> example.

Thanks, I will try it tomorrow.

// Robert

> 
> Cheers,
> 
> Richard
> 
> 
> 
> 


More information about the Openembedded-core mailing list