]> code.ossystems Code Review - openembedded-core.git/commit
ccache.bbclass: Refactor it to make it more reliable
authorRobert Yang <liezhi.yang@windriver.com>
Fri, 7 Dec 2018 02:55:29 +0000 (18:55 -0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 14 Jan 2019 11:21:57 +0000 (11:21 +0000)
commitb25271b65262f70d849a4861da216c9be6c54d53
tree59f3c6c949433da9117b687d3e8a2891f86b51d5
parentae600d77a33e15737672120c2c1fe1074940f1fb
ccache.bbclass: Refactor it to make it more reliable

The previous ccache.bbclass has the following problems:
- It uses host's ccache for native recipes, but this may not work on some
  hosts, for example, it nerver works on my Ubuntu 14.04.4, there are always
  build failures (m4-native failed at do_configure, and others will also be
  failed if I disable CCACHE for m4-native)

- native/nativesdk/cross/crosssdk recipes use host's ccache, but target uses
  ccache-native, this may confuse user.

- The target recipes may use both host's ccache and ccache-native, this may
  cause unexpected problems and be hard to debug. This is because ccache-native is
  in SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS, so ccache-native may not be present when
  rebuild target recipes, and then it would use hosttools/ccache, but the
  previous ccache files were generated by ccache-native.

- Target recipes can't use ccache when no ccache is installed on the host:
  CCACHE = "${@bb.utils.which(d.getVar('PATH'), 'ccache') and 'ccache '}"

After refactored:
All types recipes (native, target and others) will use ccache-native except
ccache-native itself, host's cache won't be used any more. It is more
reliable now, which will work everywhere when ccache-native can be built.

And now we need use "CCACHE_DISABLE = '1'" to disable ccache for the recipe
rather than "CCACHE = ''" since we set CCACHE in anonymous function, and
d.getVar('CCACHE') works after "CCACHE ??=" which is set in bitbake.conf, so we
can't check whether CCACHE is set or not in anonymous function since it is
always set. Use CCACHE_DISABLE to disable it would be more clear.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
meta/classes/ccache.bbclass
meta/conf/bitbake.conf
meta/conf/layer.conf
meta/lib/oe/utils.py