[OE-core] [PATCH 0/9] icecc.bbclass: Fix some issues

Tobias Henkel tobias.henkel at oss.bmw-carit.de
Tue Nov 12 08:33:54 UTC 2013


From: Tobias Henkel <tobias.henkel at bmw-carit.de>

Hello,

while trying to get icecc work I faced some issues which are addressed
in this patch series.

First it was difficult to find out the reason why some packages don't
use icecc because the relevant information was missing in the
logs. There were also some messages which were disturbing the normal
log message flow during the build.

I also noticed that changing the ICECC blacklist variables always
caused a full rebuild because the sstate checksums didn't match. So
adding these blacklist variables to BB_HASHBASE_WHITELIST speeds up
working with incremental changes to these variables a lot.

Further I encountered some packages calling the compiler in the
install step. This caused either icecc not being used in this step or
even build failures. For this to work the icecc environment must also
be set in do_install. For this change also a dummy python version of
set_icecc_env was needed because there was at least one package which
provided its own python version of do_install where set_icecc_env
didn't exist.

I also had trouble with our own kernel recipe which caused an error
during recipe parsing. This recipe uses shell expansion in
KERNEL_CC. This causes a syntax error when this variable gets expanded
in get_cross_kernel_cc. This function now shell expands KERNEL_CC if
necessary before expanding it.

Further for some recipes (e.g. icedtea7 in meta-java) it was needed to
add a whitelist to be able to force icecc even if the recipe sets
PARALLEL_MAKE to "" but supports parallel building in a different way.

In some cases I had race conditions when creating the toolchain
package which gets distributed to the icecc nodes. This mostly
happened after the cross toolchain is ready because then several tasks
using the cross toolchain start in parallel. The result was in many
cases a broken toolchain package resulting in build failures.


1..3 : Logging changes
4    : Improve sstate interaction
5..6 : Enable icecc also in install step
7    : Improve KERNEL_CC handling
8    : Add package whitelist
9    : Fix race condition when packaging toolchain

Best regards
Tobias Henkel

Tobias Henkel (9):
  icecc: Log reason in error cases
  icecc: Remove output on stderr when calling which
  icecc: Reduce verbosity with empty PARALLEL_MAKE
  icecc: Add blacklist vars to BB_HASHBASE_WHITELIST
  icecc: Add dummy python version of set_icecc_env
  icecc: Enable icecc also for install step
  icecc: Support shell evaluation of KERNEL_CC
  icecc: Add package whitelist
  icecc: Fix race condition when packaging toolchain

 meta/classes/icecc.bbclass | 75 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 62 insertions(+), 13 deletions(-)

-- 
1.8.3.1



More information about the Openembedded-core mailing list