From 965e27650a52c64019ea8eed2bfcc39bc8e8b768 Mon Sep 17 00:00:00 2001 From: Romuald JEANNE Date: Thu, 23 Jun 2022 11:53:41 +0200 Subject: [PATCH] GCNANO-USERLAND: add symlinks to shared libs in /usr/lib for SDK usage When gcnano-userland libs are installed on /vendor/lib folder, we are not able to link them under SDK. Add additional symlinks to these shared libs into /usr/lib to fix linking issue under SDK. Signed-off-by: Romuald JEANNE Change-Id: Ibac80cd9924487d917cd4bab44c98edd3db3f7ed --- .../gcnano-userland/gcnano-userland.inc | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/recipes-graphics/gcnano-userland/gcnano-userland.inc b/recipes-graphics/gcnano-userland/gcnano-userland.inc index b5bf14d..c55c284 100644 --- a/recipes-graphics/gcnano-userland/gcnano-userland.inc +++ b/recipes-graphics/gcnano-userland/gcnano-userland.inc @@ -155,6 +155,29 @@ do_install() { "${B}/${GCNANO_FLAVOUR}/include" "${D}${includedir}" \ "${B}/pkgconfig" "${D}${libdir}/pkgconfig" + # Manage creation of additional symlinks to solve missing libs issue on SDK side + # when GCNANO_USERLAND_OUTPUT_LIBDIR differs from libdir + if [ "${GCNANO_USERLAND_OUTPUT_LIBDIR}" != "${libdir}" ]; then + bbnote "Create symlinks to shared libs in ${libdir} folder (mandatory for SDK)" + # Init relative path for symlinks + relative_path=$(realpath -m --relative-to=${D}/${libdir} ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}) + # Move to libdir for symlinks + cwd=${PWD} + cd "${D}${libdir}" + for sharelib in $(find ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/* -type f -name "*.so*"); do + # Get SONAME + link_name=$(objdump -x ${sharelib} 2>/dev/null | grep SONAME | awk -F' ' '{print $NF}') + sharelib_name=$(basename ${sharelib}) + # Create symlink + if [ -e "${relative_path}/${sharelib_name}" ]; then + ln -sf ${relative_path}/${sharelib_name} ${link_name} + else + bbnote "Not able to find share lib: ${relative_path}/${sharelib_name}. No symlink created in ${libdir}." + fi + done + cd "${PWD}" + fi + if [ -s "${B}/${GCNANO_USERLAND_LDCONF}" ]; then install -d ${D}${sysconfdir}/ld.so.conf.d/ install -m 0644 "${B}/${GCNANO_USERLAND_LDCONF}" ${D}${sysconfdir}/ld.so.conf.d/ @@ -164,6 +187,8 @@ do_install() { # Manage install for gcnano-userland libs into specific folder for sysroot as well gcnano_sysroot() { if [ "${GCNANO_USERLAND_OUTPUT_LIBDIR}" != "${libdir}" ]; then + # Cleanup targeted folder from unexpected symlinks + rm -f $(find ${SYSROOT_DESTDIR}${libdir}/* -type l -name "*.so*") install -d ${SYSROOT_DESTDIR}${libdir} cp -aR ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/* ${SYSROOT_DESTDIR}${libdir}/ fi @@ -214,11 +239,23 @@ FILES:libgles2-gcnano += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLSLC.so" FILES:libopenvg-gcnano = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libOpenVG*.so*" FILES:${PN}-dev = "" +FILES:libgal-gcnano-dev = "" FILES:libegl-gcnano-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc" FILES:libgbm-gcnano-dev = "${includedir}/gbm.h ${libdir}/pkgconfig/gbm.pc" FILES:libgles1-gcnano-dev = "${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc" FILES:libgles2-gcnano-dev = "${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc" FILES:libopenvg-gcnano-dev = "${includedir}/VG ${libdir}/pkgconfig/vg.pc" +# Append additional symlinks to *-dev packages for delivered shared libs +# when GCNANO_USERLAND_OUTPUT_LIBDIR differs from libdir +FILES:libgal-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGAL.so', d)}" +FILES:libgal-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libVSC.so', d)}" +FILES:libegl-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libEGL.so*', d)}" +FILES:libgbm-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libgbm.so*', d)}" +FILES:libgbm-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libgbm_viv.so', d)}" +FILES:libgles1-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGLESv1*.so', d)}" +FILES:libgles2-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGLESv2.so', d)}" +FILES:libgles2-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGLSLC.so', d)}" +FILES:libopenvg-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libOpenVG*.so*', d)}" # Set gcnano-userland package with runtime dependencies on all packages RDEPENDS:${PN} += "\