Bitbake build consumes more space

In order of effectiveness and how easy the fix is:

  • Buy more disk space: Putting $TMPDIR on an SSD of its own helps a lot and removes the need to micromanage.
  • Delete $TMPDIR (build/tmp): old images, old packages and workdirectories/sysroots for MACHINEs you aren't currently building for accumulate and can take quite a lot of space. You can normally just delete the whole $TMPDIR once in a while: as long as you're using sstate-cache the next build should still be pretty fast.
  • Delete $SSTATE_DIR (build/sstate-cache): If you do a lot of builds sstate itself accumulates over time. Deleting the directory is safe but the next build will take a long time as everything will be rebuilt.
  • Delete $DL_DIR (build/downloads): If you use a build directory for a long time (while pulling updates from master or changing to newer branch) the obsolete downloads keep taking disk space. Keep in mind that deleting the directory will mean re-downloading everything. Looking at just the largest files and deleting the old versions may be a useful compromise here.

There are some official ways instead of deleting.

By deliberately deleting you could be forcing unnecessary builds & downloads. Some elements of the build could be not controlled by bitbake, and you can find yourself in a situation that you cannot rebuild these items in an easy way.

With these recommendations, you can beat the non written 50GB per build yocto rule:

Check your IMAGE_FSTYPES variable. My experience says it is safe to delete all images of these files that are not symlinks, or symlinks targets. Avoid the last one generated to avoid breaking the last build link, and any related with bootloaders and configuration files, as they could be rarely regenerated.

If you are keeping more than one build with the same set of layers, then you can use a common download folder for builds.

DL_DIR ?= "common_dir_across_all_builds/downloads/"

And afterwards:

To keep your /deploy clean:

RM_OLD_IMAGE: Reclaims disk space by removing previously built versions of the same image from the images directory pointed to by the DEPLOY_DIR variable.Set this variable to "1" in your local.conf file to remove these images:

RM_OLD_IMAGE = "1"

IMAGE_FSTYPES Remove the image types that you do not plan to use, you can always enable a particular one when you need it:

IMAGE_FSTYPES_remove = "tar.bz2"

IMAGE_FSTYPES_remove = "rpi-sdimg"

IMAGE_FSTYPES_remove = "ext3"

For /tmp/work, do not need all the workfiles of all recipes. You can specify which ones you are interested in your development.

RM_WORK_EXCLUDE: With rm_work enabled, this variable specifies a list of recipes whose work directories should not be removed. See the "rm_work.bbclass" section for more details.

INHERIT += "rm_work"

RM_WORK_EXCLUDE += "home-assistant widde"