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

Robert Yang liezhi.yang at windriver.com
Tue Dec 11 10:12:18 UTC 2018


Hi RP,

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:
>>> On Sun, 2018-12-09 at 18:24 -0800, Robert Yang wrote:
>>>> The code is in setup_hosttools_dir(), it searches ccache in PATH
>>>> in
>>>> reverse order, I can't figure out what it is used for, maybe it
>>>> is
>>>> aimed to use host's ccache rather than recipe-sysroot-
>>>> native/usr/bin/ccache, but the later one isn't in original PATH,
>>>> so
>>>> remove the code.
>>>>
>>>> Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
>>>> ---
>>>>    meta/classes/base.bbclass | 2 --
>>>>    1 file changed, 2 deletions(-)
>>>
>>> We should document it and I think its still needed.
>>>
>>> Some distros have a "gcc" which automatically wraps ccache behind
>>> the
>>> scenes. This code lets us find the real gcc and bypass ccache.
>>
>> Ah, thanks for the explanations, I got it now. I think that we don't
>> need the
>> code any more since we don't use host's ccache, and I have removed
>> ccache from
>> HOSTTOOLS.
>>
>> I will update commit message and send a V2.
> 
> 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 ?

// Robert

> 
> Cheers,
> 
> Richard
> 
> 
> 
> 


More information about the Openembedded-core mailing list