Custom OE Colibri-iMX6 rootfs

I need some additional libraries included in the rootfs for Embedded Linux on the Colibri-iMX6 module. I added the additional packages to the IMAGE_INSTALL_append in my local.conf. I did a “bitbake console-tdx-image -c populate_sdk” and then a “bitbake console-tdx-image”.

The oe-core/build/tmp-glibc/sysroots/colibri-imx6/usr/lib has the additional libraries.

When I install the SDK from oe-core/deploy/sdk/ the oecore-x86_64/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi/usr/lib/ also has the additional libraries.

The problem is that the oe-core/deploy/images/Colibri-iMX6_Console-Image.rootfs.tar.xz does not have the additional libraries. The Colibri-iMX6_Console-Image.rootfs.manifest does not list the additional libraries.

I do not understand why the SDK would have the libraries but not the image rootfs. I tried running “bitbake -c clean console-tdx-image” and did a bitbake console-tdx-image again but had the same results. I feel that I missing something in the Open Embedded recipes.

@ChrisP Can you share which recipes you are appending to the image?

The reason I want to add these packages is that we have a existing Qt application built using Qt 4.7.3 for embedded Linux. In the future it will be moved to Qt5 but for the moment we need to stay with 4.7.3. I am attempting to add Phonon support. Phonon in Qt 4.7.3 requires gstreamer-0.10 instead of gstreamer-1.0. In my local.conf I added “gstreamer gst-plugins-base and gst-plugins-base-alsa” to IMAGE_INSTALL_append.

When I run the Qt application on the Colibri-iMX6 it is unable to load two shared libraries, though they do not appear to be related to gstreamer. The libraries are libpulse-mainloop-glib.so.0 and libpanel.so.5. These libraries are in the oe-core/build/tmp-glibc/sysroots/colibri-imx6/usr/lib and in the SDK oecore-x86_64/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi/usr/lib/ but not in the rootfs of the generated image in deploy/images/colibri-imx6/. If I manually copy these libraries to the rootfs on the module the Qt application is able to start.

So the question is why do some of the libraries in tmp-glibc/sysroots/colibri-imx6/usr/lib/ not get included in the deploy/images/colibri-imx6/ rootfs?

I tried looking at the console-tdx-image.bb and the tdx-image-fstype.inc for clues but maybe I am missing something.

Thank you.

Hi

So the question is why do some of the libraries in tmp-glibc/sysroots/colibri-imx6/usr/lib/ not get included in the deploy/images/colibri-imx6/ rootfs?

I guess that you did not add the packages containing these libraries to IMAGE_INSTALL and none of the packages you install RDEPEND on them.

My guess is that these libraries get built as part of a recipe but they get split into packages that do not get installed. That way the libraries end up in the sysroot for your build and possibly the SDK, but not in the image.

One way out of this is to find the packages which provide the libraries and add the package explicitly to IMAGE_INSTALL. Finding that package can be done by searching buildhistory.

$ find build/buildhistory/packages/ -name files-in-package.txt -exec grep -H libpulse-mainloop-glib.so {} \;
...
build/buildhistory/packages/armv7at2hf-neon-angstrom-linux-gnueabi/pulseaudio/libpulse-mainloop-glib/files-in-package.txt:-rwxr-xr-x root       root            14120 ./usr/lib/libpulse-mainloop-glib.so.0.0.5
...

libpulse-mainloop-glib.so is build for the recipe pulseaudio and packaged into libpulse-mainloop-glib. Similarly you should find the package which provides libpanel.so.

Max