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

richard.purdie at linuxfoundation.org richard.purdie at linuxfoundation.org
Tue Dec 11 10:42:49 UTC 2018


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.

Cheers,

Richard






More information about the Openembedded-core mailing list