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

Robert Yang liezhi.yang at windriver.com
Wed Dec 12 02:59:04 UTC 2018



On 12/11/18 6:42 PM, richard.purdie at linuxfoundation.org wrote:
> 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.

Ah, sorry, I mixed 'ccache in srctool' with 'ccache == srctool', yes, we do
need it. I will keep the original code, and add comments for it.

// Robert

> 
> Cheers,
> 
> Richard
> 
> 
> 
> 
> 


More information about the Openembedded-core mailing list