Search code examples
yoctobitbake

Mutually Exclusive Bitbake Recipes/Tasks


I have several recipes who's do_compile task uses a lot of memory (lots of C++ templates). If I build the recipes at the same time, they exhaust the host machine of memory and the out-of-memory killer starts killing.

I've modified BB_NUMBER_PARSE_THREADS, BB_NUMBER_THREADS, PARALLEL_MAKE, and PARALLEL_MAKEINST numerous times, but it is not feasible to pick numbers for these variables that'll work well in all situations. For example, if I set BB_NUMBER_THREADS to 1 in order to get only one of these recipes to build at a time, I end up increasing the build time a lot when there are no changes (everything can be pulled from the cache). I don't feel like those are the right solution to my problem.

Is there any way to tell bitbake to only build one of these recipe's do_compile tasks at a time, but let other recipe's tasks build normally?


Solution

  • It isn't quite the answer you're looking for but you could have something like:

    do_compile[lockfiles] = "${WORKDIR}/mylock"
    

    which would require the task to take and hold the lock to execute, then you can be sure only one would run at a time.