[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