QT Application Bitbake

Hi guys,

I’m trying to add my QT Application on my Yocto project. I followed the tutorialCreate a Recipe. But I keep getting this error:

ERROR: qt-noveldx-0.1-r0 do_package: QA Issue: qt-noveldx: Files/directories were installed but not shipped in any package:
  /home/root/NovelDX
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
qt-noveldx: 1 installed and not shipped files. [installed-vs-shipped]
ERROR: qt-noveldx-0.1-r0 do_package: Fatal QA errors found, failing task.
ERROR: Logfile of failure stored in: /home/ruben/oe-core/build/tmp/work/aarch64-tdx-linux/qt-noveldx/0.1-r0/temp/log.do_package.3753357
ERROR: Task (/home/ruben/oe-core/build/../layers/meta-noveldx/recipes-project/qt-noveldx_0.1.bb:do_package) failed with exit code '1'

Does anyone got to fix this issue before? I’m attaching my qt .bb recipe.

qt-noveldx_0.1.bb (927 Bytes)

Thanks a lot,
Ruben

Hi @rubencz ,

You need to set the FILES variable to package your application:

FILES_${PN} += " \
   /home/root/NovelDX
"

I checked your recipe and it is installing your binary on ${bindir}, can you confirm that the binary is there? If yes, you can just rm /home/root/NovelDX on your do_install task.

Best regards,
Daniel Morais

Hi @daniel_m.tx ,

Thanks for you answer. After I did what you said, it start working. But when I tried to execute it on my Verdin Dev Board it gives me this error message:

qt.qpa.plugin: Could not load the Qt platform plugin "wayland-egl" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.

Do you have any idea what this is? Because I install the wayland, qtwayland on my image (I’m using the multimedia-image).

Thanks,
Ruben

Hi @rubencz ,

How are you starting your application?

Can you try to run your application in the same way as the wayland-app-launch? You can find more information about this checking the files on /layers/meta-toradex-demos/recipes-graphics/wayland-app-launch/wayland-app-launch.

Best regards,
Daniel Morais

Hi @daniel_m.tx,

Thanks for the reply. I just did what you said to me, tried to run my application in the same way as the wayland-app-launch:

wayland-qt-noveldx-launch_1.0.bb (327 Bytes)
noveldx-image.bb (1.0 KB)

Its compiles fine, but in my Toradex Verdin dev Board connected to my regular HDMI monitor I get this error message:

Failed to process Wayland connection: broken pipe
failed to create display: Broken pipe

On the TeraTerm terminal I get this output:

U-Boot 2020.04-5.6.0-devel+git.7d1febd4af77 (Feb 16 2022 - 09:00:30 +0000)


CPU: i.MX8MMQ rev1.0 1600 MHz (running at 1200 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 46C
Reset cause: POR
DRAM: 2 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
Fail to setup video link
In: serial
Out: serial
Err: serial
Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.1D, Serial# 07092049
Carrier: Toradex Verdin Development Board V1.1B, Serial# 10893474


BuildInfo:
- ATF 835a8f6
- U-Boot 2020.04-5.6.0-devel+git.7d1febd4af77


Setting variant to wifi
flash target is MMC:0
Net: eth0: ethernet@30be0000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
MMC: no card present
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
5754 bytes read in 26 ms (215.8 KiB/s)
## Executing script at 47000000
Loading DeviceTree: imx8mm-verdin-wifi-dev.dtb
66179 bytes read in 17 ms (3.7 MiB/s)
47 bytes read in 11 ms (3.9 KiB/s)
Applying Overlay: verdin-imx8mm_lt8912_overlay.dtbo
1620 bytes read in 22 ms (71.3 KiB/s)
10786435 bytes read in 333 ms (30.9 MiB/s)
Uncompressed size: 26044928 = 0x18D6A00
Bootargs: root=PARTUUID=278d87dd-02 ro rootwait vt.global_cursor_default=0 no_console_suspend=1 consoleblank=0 quiet console=ttymxc0,115200 console=tty1 earlycon
## Flattened Device Tree blob at 44000000
Booting using the fdt blob at 0x44000000
Loading Device Tree to 00000000bd6d8000, end 00000000bd70bfff ... OK


Starting kernel ...


[ 0.078753] No BMan portals available!
[ 0.079321] No QMan portals available!
[ 0.145740] imx_sec_dsim_drv 32e10000.mipi_dsi: Failed to attach bridge: 32e10000.mipi_dsi
[ 0.154033] imx_sec_dsim_drv 32e10000.mipi_dsi: failed to bind sec dsim bridge: -517, retry 0
[ 0.193496] mxc_mipi-csi 32e30000.mipi_csi: No port/endpoint 1 sensor node at mipi_csi@32e30000
[ 1.873531] imx6q-pcie 33800000.pcie: failed to initialize host
[ 1.879586] imx6q-pcie 33800000.pcie: unable to add pcie port.
[ 3.123511] ov5640_mipi 2-003c: Read reg error: reg=300a
[ 3.151556] debugfs: Directory '30020000.sai' with parent 'imx8mm-nau8822' already present!


TDX Wayland with XWayland 5.6.0-devel-20220413204429+build.0 (dunfell) verdin-imx8mm-07092049 ttymxc0
Verdin-iMX8MM_NovelDx-Verdin-Image


verdin-imx8mm-07092049 login:

Regards,
Ruben

Hi @rubencz ,

It seems that the weston isn’t coming up, can you confirm that it’s being executed?

Since you are executing the application the same way as the recipe you shouldn’t face this problem, does the same problem happens with the standard application?

Best regards,
Daniel Morais

Hi @daniel_m.tx ,

The output of the services is:

wayland-app-launch.service loaded activating start start Start a wayland applicati
* weston@root.service loaded failed failed Weston Wayland Compositor

With both applications it happens the same thing. The standard application starts when I add this line of code to my image recipe:

APP_LAUNCH_X11 ?= "x-window-qtcinematicexperience"

IMAGE_INSTALL += " \
    ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', \
                         'weston-xwayland xterm', \
       bb.utils.contains('DISTRO_FEATURES', 'x11', '${APP_LAUNCH_X11}', '', d), d)} \
\

Instead of just using the wayland.

Regards,
Ruben

Hi @rubencz ,

Thanks for sharing this information.

Are you doing any changes to the DISTRO_FEATURES variable? The bb.utils.contains works as a if on the code, so in the first line if there is X11/Wayland on the DISTRO_FEATURES, then the packages weston-xwayland and xterm would be installed.

Can you please check if all packages for Wayland are being installed? It seems that some packages are missing and because of this the Wayland can’t be loaded.

Best regards,
Daniel Morais

Hi @daniel_m.tx ,

If I do the same change to my custom app ( adding the X11 lines) I’m able to start my application. But the wayland desktop environment its on the background. Is there any way to start the application without the desktop environment?

Regards,
Ruben

Also added the contents of DISTRO_FEATURES variables:

ruben@ruben-VirtualBox:~/oe-core/build$ bitbake -e noveldx-image | grep "^DISTRO_FEATURES"
DISTRO_FEATURES="acl alsa argp bluetooth ext2 ipv4 ipv6 largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 vfat largefile opengl  multiarch wayland vulkan  wayland  bluez5 pam systemd opengl wayland x11 polkit pulseaudio  gobject-introspection-data ldconfig"
DISTRO_FEATURES_BACKFILL="pulseaudio sysvinit gobject-introspection-data ldconfig"
DISTRO_FEATURES_DEFAULT="acl alsa argp bluetooth ext2 ipv4 ipv6 largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 vfat"
DISTRO_FEATURES_FILTER_NATIVE="api-documentation"
DISTRO_FEATURES_FILTER_NATIVESDK="api-documentation"
DISTRO_FEATURES_NATIVE="x11 ipv6 xattr"
DISTRO_FEATURES_NATIVESDK="x11"

and the wayland packages installed:

ruben@ruben-VirtualBox:~/oe-core/build$ bitbake -e wayland >wayland.env
ruben@ruben-VirtualBox:~/oe-core/build$ grep ^PACKAGES= wayland.env
PACKAGES=" wayland-src wayland-dbg wayland-staticdev wayland-dev wayland-doc wayland-locale  wayland"

Also going to add mu local.conf file, I added DISTRO_FEATURES_append += " wayland " to it:

local.conf (11.7 KB)

Hi @rubencz ,

Thanks a lot for the detailed information.

I checked your environment and there aren’t any changes that might cause this issue.

Since the standard application started fine, can you please deploy the image with both the standard application and your application and then try to change the binary started by the wayland-app-launch service?

Best regards,
Daniel Morais

Hi @daniel_m.tx ,

After I do the exact same thing that the standard application does, my application started, I had to add:

IMAGE_FEATURES += " \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \
        bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \
                            '', d), d)} \
"

APP_LAUNCH_WAYLAND ?= "wayland-qt-noveldx-launch"
APP_LAUNCH_X11 ?= "x-window-qtnoveldx"

IMAGE_INSTALL += " \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', \
                         'weston weston-init weston-examples ${APP_LAUNCH_WAYLAND}', '', d)} \    
    ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', \
                         'weston-xwayland xterm', \
        bb.utils.contains('DISTRO_FEATURES', 'x11', '${APP_LAUNCH_X11}', '', d), d)} \
    \

The question is: My app runs over a desktop environment how do I remove this desktop environment and just run my app?

Regards,
Ruben

Hi @rubencz ,

If by the desktop environment you mean the top bar that appears on the screen, you can refer to this article to run the application on kiosk mode.

Best regards.
Daniel Morais

1 Like