]> code.ossystems Code Review - meta-freescale.git/commitdiff
imx-gpu-viv: fix build with libvulkan
authorMax Krummenacher <max.krummenacher@toradex.com>
Wed, 2 Oct 2019 07:11:56 +0000 (09:11 +0200)
committerOtavio Salvador <otavio@ossystems.com.br>
Wed, 9 Oct 2019 19:35:20 +0000 (16:35 -0300)
vulkan-loader and imx-gpu-viv both provide a libvulkan.so with the same soname.
(The vulkan-loader provides the vulkan-loader while imx-gpu-viv provides the
instalable client driver for the Vivante GPU).

  readelf -a .../recipe-sysroot/usr/lib/libvulkan.so | grep soname
    0x000000000000000e (SONAME)             Library soname: [libvulkan.so.1]
  readelf -a .../recipe-sysroot/usr/lib/vulkan/libvulkan_VSI.so | grep soname
    0x000000000000000e (SONAME)             Library soname: [libvulkan.so.1]

This leads to the following build error.

| # ERROR: gstreamer1.0-plugins-bad-1.14.imx-r0 do_package: gstreamer1.0-plugins-bad-vulkan: Multiple shlib providers for libvulkan.so.1: libvulkan-imx, vulkan-loader (used by files: ...libgstvulkan.so)
| # ERROR: gstreamer1.0-plugins-bad-1.14.imx-r0 do_package_qa: QA Issue: /usr/lib/gstreamer-1.0/libgstvulkan.so contained in package gstreamer1.0-plugins-bad-vulkan requires libvulkan.so.1()(64bit), but no providers found in RDEPENDS_gstreamer1.0-plugins-bad-vulkan? [filed]

Fix this by changing the soname of the Vivante provided libvulkan.
With this change we can drop the /usr/lib/vulkan install directory and
install directly in /usr/lib/.
This additionally allows to reenable QA warnings for the libvulkan-imx package.

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc

index ef10c9613944fae6b66fa48357441fbd58c0ff1f..2c61c101d06141f0822618e789e63e6a9edb7fd3 100644 (file)
@@ -18,6 +18,7 @@ DEPENDS += " \
                                                        '', d)} \
 "
 DEPENDS_append_imxdrm = " libdrm wayland"
+DEPENDS_append_mx8 = " patchelf-native"
 
 # imx-gpu-viv does not provide everything it needs to for virtual/libgl
 # on x11 backend or on Wayland backend with XWayland support.
@@ -233,12 +234,10 @@ do_install () {
     ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so
 
     if [ "${IS_MX8}" = "1" ]; then
-        # Install the vulkan driver in a sub-folder. When installed in the same
-        # folder as the vulkan loader layer library, an incorrect linkage is
-        # created from libvulkan.so.1 to our library instead of the loader
-        # layer library.
-        install -d ${D}${libdir}/vulkan
-        mv ${D}${libdir}/libvulkan-${backend}.so ${D}${libdir}/vulkan/libvulkan_VSI.so
+        # Change libvulkon.so driver soname, so that it does not clash with the
+        # vulkan-loader libvulkan.so
+        patchelf --set-soname libvulkan_VSI.so.1 ${D}${libdir}/libvulkan-${backend}.so
+        mv ${D}${libdir}/libvulkan-${backend}.so ${D}${libdir}/libvulkan_VSI.so
     fi
     for header in ${GLES3_HEADER_REMOVALS}; do
         rm -f ${D}${includedir}/GLES3/${header}
@@ -307,9 +306,8 @@ FILES_libgbm-imx_mx8           = "${libdir}/libgbm${SOLIBS} ${libdir}/gbm_viv${S
 FILES_libgbm-imx-dev_mx8       = "${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${libdir}/libgbm${SOLIBSDEV}"
 RDEPENDS_libgbm-imx_append_mx8 = " libdrm"
 
-FILES_libvulkan-imx = "${libdir}/vulkan/libvulkan_VSI${SOLIBS} ${libdir}/libSPIRV_viv${SOLIBS}"
-FILES_libvulkan-imx-dev = "${includedir}/vulkan ${libdir}/vulkan/libvulkan_VSI${SOLIBSDEV}"
-INSANE_SKIP_libvulkan-imx += "dev-deps dev-so"
+FILES_libvulkan-imx = "${libdir}/libvulkan_VSI${SOLIBS} ${libdir}/libSPIRV_viv${SOLIBS}"
+FILES_libvulkan-imx-dev = "${includedir}/vulkan ${libdir}/libvulkan_VSI${SOLIBSDEV}"
 
 FILES_libopenvx-imx = "${libdir}/libOpenVX${SOLIBS} ${libdir}/libOpenVXC${SOLIBS} ${libdir}/libOpenVXU${SOLIBS}"
 FILES_libopenvx-imx-dev = "${includedir}/VX ${libdir}/libopenVX${SOLIBSDEV}"