When Bitbake is called with multiple cores (-j 4
), it fails with exit code '1' with the following error message:
| WARNING: Backtrace (BB generated script): | #1: do_image_wic, /yocto/tmp/work/intel_corei7_64-poky-linux/weston-dev-image/1.0-r0/temp/run.do_image_wic.69326, line 163 | #2: main, /yocto/tmp/work/intel_corei7_64-poky-linux/weston-dev-image/1.0-r0/temp/run.do_image_wic.69326, line 179 ERROR: Task (/yocto/poky/build-weston-64/weston-self-installer/../../../meta-test/meta-builds/recipes-images/images/weston-dev-image.bb:do_image_wic) failed with exit code '1' NOTE: Tasks Summary: Attempted 6603 tasks of which 6593 didn't need to be rerun and 1 failed.
The following local.conf was used:
WKS_FILE = "image-installer.wks.in"
IMAGE_FSTYPES:append = " ext4"
IMAGE_TYPEDEP_wic = "ext4"
INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
do_rootfs[depends] += "virtual/kernel:do_deploy"
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
If you run the bitbake building again, it works and we have a successful build.
It might be incorrect, but what I saw was that 2 jobs were running, do_image_wic
and do_image_ext4
. However, do_image_wic
finishes before do_image_ext4
, but has do_image_ext4
as a dependancy.
Is there a way to run bitbake to build Yocto with multiple cores and make do_image_wic
wait for do_image_ext4
to finish?
If we change the yocto building configuration to -j 1
, it build without errors.
What is the solution to this build order problem?
The following local.conf was used to fix:
WKS_FILE = "image-installer.wks.in"
IMAGE_FSTYPES:append = " ext4"
IMAGE_TYPEDEP_wic = "ext4"
INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
do_rootfs[depends] += "virtual/kernel:do_deploy"
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
do_image_wic[depends] += "${IMAGE_BASENAME}:do_image_ext4"
It was missing do_image_wic[depends] += "${IMAGE_BASENAME}:do_image_ext4" to wait for the image ext4 completion before initializing do_image_wic()