Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Mike Westerhof <mike@mwester.net>
To: Patches and discussions about the oe-core layer
	<openembedded-core@lists.openembedded.org>
Cc: "Purdie, Richard" <richard.purdie@intel.com>,
	wenzong fan <wenzong.fan@windriver.com>,
	"Wold, Saul" <saul.wold@intel.com>
Subject: Re: The design document for ccache-native
Date: Fri, 10 Jun 2011 08:09:44 -0500	[thread overview]
Message-ID: <4DF21798.3080006@mwester.net> (raw)
In-Reply-To: <4DF1B022.2010506@windriver.com>

On 6/10/2011 12:48 AM, Robert Yang wrote:
> 
> On 06/10/2011 11:26 AM, wenzong fan wrote:
>>
>>
>> -------- Original Message --------
>>
>> On Thu, 2011-06-09 at 15:40 -0700, Saul Wold wrote:
>>> On 06/02/2011 08:11 PM, wenzong fan wrote:
>>> > Hi Folks,
>>> >
>>> > Please help me to review the design document for ccache-native, and
>>> > I also have two questions about it, any answers or suggestions are
>>> > appreciated.
>>> >
>>> > * Feature name: ccache-native
>>> > Priority: P3; M2
>>> > Owner: Wenzong Fan
>>> > Summary: Integrate ccache-native to yocto
>>> >
>>> > * Description:
>>> > Bitbake supports the 'CCACHE Mechanism', but 'ccache' hasn't been
>>> > included by poky/yocto, just add it as a native tool.
>>> >
>>> > * Usage:
>>> > Build ccache as a native tool by default and enable it for speeding
>>> > target packages build.
>>> >
>>> > * Implementation:
>>> > 1) Copy bb file from OE upstream to:
>>> > meta/recipes-devtools/ccache/
>>> >
>>> > 2) Update bb file to get the latest ccache_3.1.5 and split the single
>>> > bb file to:
>>> > 'ccache_3.1.5.bb', 'ccache.inc'
>>> >
>>> > 3) Enable ccache in the native tools building.
>>> >
>>> You will need to have it be a dependency pretty early on in the build.
>>> Additionally, this is a bit a new part to this task, we want to have the
>>> default CCACHE_DIR for the build default to a directory in TMPDIR
>>> instead of the user's home directory. This will mean setting an
>>> environment variable somewhere early also.
>>
>> There is a little more detail on:
>>
>> https://wiki.yoctoproject.org/wiki/Yocto_1.1_Schedule
>>
>> Specifically, "c) Set CCACHE on a per recipe basis. need to figure out
>> whether ccache data can be shared and under what circumstances."
>>
>> so something like adding:
>>
>> export CCACHE_DIR = "${TMPDIR}/ccache/${TARGET_SYS}/${PN}"
>>
> 
> I think that set CCACHE_DIR on per recipe basis would degrade hit
> efficiency,
> the following ccache data can be shared if they they use the same
> CCACHE_DIR,
> but if we set CACHE_DIR on a per recipe basis, then they can't be shared:
> 
> 1) Most pkg's configure will run "gcc foo.c" for checking the C  compiler,
>    these compiling are the same between different pkgs at most time.
> 
> 2) Some recipes' compiling are similar, for example: gcc-cross,
>    gcc-corss-initial and gcc-cross-intermediate.
> 
> I think that:
> 
> export CCACHE_DIR = "${TMPDIR}/ccache/${TARGET_SYS}/"
> 
> would be better.

I fear that the use of ccache is inherently risky with OE.  Given the
(relatively common) case where the user blows away their TMPDIR in order
to get a full, clean rebuild after an update to the toolchain is make,
it is possible that ccache will erroneously re-use an object created by
the earlier version of the toolchain.

While imperfect, I would suggest that we would do better if we would
somehow embed the PV (or something like that) for the toolchain into the
CCACHE_DIR, thus ensuring that we don't risk the re-use of old objects
when the toolchain is updated.

(Frankly, given my experiences with it, I'd prefer we just disable
ccache entirely with OE.)

-Mike (mwester)

> // Robert
> 
>> to bitbake.conf with a bit more thought into working out the right
>> components to add to the variable.
>>
>> Cheers,
>>
>> Richard
>>
>>
>>
>>
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
> 
> 




  reply	other threads:[~2011-06-10 13:19 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4DF18EF7.8000207@windriver.com>
2011-06-10  5:48 ` The design document for ccache-native Robert Yang
2011-06-10 13:09   ` Mike Westerhof [this message]
2011-06-10 13:21     ` Mike Westerhof
2011-06-10 13:25     ` Phil Blundell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DF21798.3080006@mwester.net \
    --to=mike@mwester.net \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=richard.purdie@intel.com \
    --cc=saul.wold@intel.com \
    --cc=wenzong.fan@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox