[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