I want to build an image with Yocto, to run a simple Qt6 widget application on a Raspberry Pi 4B. I built an image using bitbake core-image-minimal
, but it seems to be to stripped down to run weston and my Qt app (which was successfully baked into the image). It did not boot into a GUI, and I could not run my Qt app, nor start weston.
(I am using VirtualBox and a VM running Linux Mint. I know, it is not tested with Yocto, therefore, maybe I should change to Ubuntu...)
My first attempt now, is to build an image with bitbake core-image-weston
. I have added the following lines to conf/local.conf
file
IMAGE_INSTALL += "qtexample"
DISTRO_FEATURES:append = "wayland"
IMAGE_INSTALL:append = "qtbase qtwayland"
CORE_IMAGE_EXTRA_INSTALL += "wayland weston"
where IMAGE_INSTALL += "qtexample"
is supposed to bake my Qt6 app into the image. The Qt6 layer, meta-openembedded/meta-oe
and meta-openembedded/meta-python
, and the RasPi BSP are included into the conf/bblayers.conf
.
However, when I run bitbake core-image-weston
, I get the error:
ERROR: Nothing RPROVIDES 'matchbox-terminalqtexampleqtbase' (but /home/bkeohane/Projekte/yocto/poky/meta/recipes-graphics/images/core-image-weston.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'matchbox-terminalqtexampleqtbase' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['matchbox-terminalqtexampleqtbase']
ERROR: Required build target 'core-image-weston' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-weston', 'matchbox-terminalqtexampleqtbase']
I figured out, that a directory matchbox-terminal
where a matchbox-terminal_0.2.bb
recipe lives, exists, and copied it from poky/meta/recipes-sato
to poky/meta/recipes-graphics
, because I assumed, it shall be located there, in order to be included into the build process.
After re-running the build, the error changed a bit:
ERROR: Nothing RPROVIDES 'qtexampleqtbase' (but /home/bkeohane/Projekte/yocto/poky/meta/recipes-graphics/images/core-image-weston.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'qtexampleqtbase' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['qtexampleqtbase']
ERROR: Required build target 'core-image-weston' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-weston', 'qtexampleqtbase']
The error does not include the matchbox-terminal
anymore. However, a dependency error still exists, and I do not know why.
In poky/meta/recipes-graphics/images/core-image-weston.bb
, I cannot identify the missing dependency:
SUMMARY = "A very basic Wayland image with a terminal"
IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs weston"
LICENSE = "MIT"
inherit core-image
CORE_IMAGE_BASE_INSTALL += "gtk+3-demo"
CORE_IMAGE_BASE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'weston-xwayland matchbox-terminal', '', d)}"
QB_MEM = "-m 512"
I am thankful for any tips or hints. Cheers.
The answer of my issue in the original post can be solved by adding a space on front of qtexample
, hence:
IMAGE_INSTALL += " qtexample"
DISTRO_FEATURES:append = "wayland"
IMAGE_INSTALL:append = "qtbase qtwayland"
CORE_IMAGE_EXTRA_INSTALL += "wayland weston"
I am now more aware of how the recipes in yocto are being parsed, i.e., by using the commands as plain strings.