I have observed that on the STM32MP25 series running OpenSTLinux, the GPU OpenVX packages are correctly built and the *.so files are present in the rootfs. However, after the do_image step, these libraries are removed and are missing in the resulting ext4 image. Consequently, if I flash the image, the OpenVX shared libraries are absent.
Here are the debugging details:
The GCNANO_PACKAGECONFIG is correctly set to "egl gbm glesv1 glesv2 vg vx cl vulkan", and this has been verified.
Other libraries are installed correctly. For example, in the rootfs:
root@stm32mp25:/vendor/lib# ls libCLC.so libGLESv2.so.2.0.0 libSPIRV_viv.so libvulkan_VSI.so.1.3.3 libEGL.so.1.5.0 libGLSLC.so libVSC.so libGAL.so libOpenCL_VSI.so.3.0.0 libgbm.so.1.0.0 libGLESv1_CM.so.1.1.0 libOpenVG.so.1.1.0 libgbm_viv.so
During the build, the OpenVX libraries are correctly generated in the rootfs. For example, I confirmed that libArchModelSw.so exists at:
tmp-glibc/work/stm32mp25x-ostl-linux/st-image-weston/1.0/rootfs/vendor/lib/libArchModelSw.so
The installation section in the recipe responsible for OpenVX is as follows:
"vx") # Install libraries find ${gcnano_libdir}/* -type f -name libOpenVX*.so* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \; install -m 0555 ${gcnano_libdir}/libArchModelSw.so ${gcnano_libdir_install}/ install -m 0555 ${gcnano_libdir}/libNNArchPerf.so ${gcnano_libdir_install}/ install -m 0555 ${gcnano_libdir}/libovxlib.so ${gcnano_libdir_install}/ install -m 0555 ${gcnano_libdir}/libNNGPUBinary.so ${gcnano_libdir_install}/ install -m 0555 ${gcnano_libdir}/libNNVXCBinary.so ${gcnano_libdir_install}/ install -m 0555 ${gcnano_libdir}/libOvx12VXCBinary.so ${gcnano_libdir_install}/ install -m 0555 ${gcnano_libdir}/libOvxGPUVXCBinary.so ${gcnano_libdir_install}/ # Install includes install -m 0755 -d ${gcnano_incdir_install}/VX install -m 0644 ${gcnano_incdir}/VX/* ${gcnano_incdir_install}/VX # Request CLC needs_clc="true" # To allow building OpenVX kernel program from OpenCL kernel source code, # cl_viv_vx_ext.h must be installed at runtime install -m 0755 -d ${gcnano_incdir_install}/CL install -m 644 ${gcnano_incdir}/CL/cl_viv_vx_ext.h ${gcnano_incdir_install}/CL ;
The above confirms that the installation commands are correct and the libraries are present in the rootfs during the build, yet they disappear from the final image.
If you want, I can also draft a possible explanation and solution for why the *.so files disappear in the do_image step and how to ensure they persist in /vendor/lib and /usr/lib. Do you want me to do that?