From 8263c26d4eedaf903d8f47e583c025aba50de2de Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Sun, 29 Sep 2019 22:30:42 +0200 Subject: linux-driver-package, mesa: rework the recipe Recent OE adds additional shared object checks which errors out on the way the binary Tegra drivers are injected. Rework the recipes, so that - mesa no longer PROVIDE any OpenGL shared objects and the binaries. - linux-driver-package now depends on mesa to install development headers - linux-driver-package PROVIDE and RPROVIDE the OpenGL shared objects. - linux-driver-package drops the additional arm-linux-gnueabihf/tegra path to the *.so* files. - the apalis-tk1 machine PREFERS linux-driver-package as the OpenGL provider. Signed-off-by: Max Krummenacher --- conf/machine/apalis-tk1.conf | 5 +- .../binary-drivers/linux-driver-package_21.7.0.bb | 47 +++++++++---- .../0001-pkg-config-files-add-tegra-paths.patch | 81 ---------------------- recipes-graphics/mesa/mesa_%.bbappend | 14 ++-- 4 files changed, 46 insertions(+), 101 deletions(-) delete mode 100644 recipes-graphics/mesa/mesa/0001-pkg-config-files-add-tegra-paths.patch diff --git a/conf/machine/apalis-tk1.conf b/conf/machine/apalis-tk1.conf index 1a17720..4df80e1 100644 --- a/conf/machine/apalis-tk1.conf +++ b/conf/machine/apalis-tk1.conf @@ -59,7 +59,10 @@ PREFERRED_PROVIDER_lxsession-lite_apalis-tk1 = "lxsession" PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" PREFERRED_PROVIDER_virtual/mesa ?= "mesa" -PREFERRED_PROVIDER_virtual/libgl ?= "mesa" +PREFERRED_PROVIDER_virtual/egl ?= "linux-driver-package" +PREFERRED_PROVIDER_virtual/libgl ?= "linux-driver-package" +PREFERRED_PROVIDER_virtual/libgles1 ?= "linux-driver-package" +PREFERRED_PROVIDER_virtual/libgles2 ?= "linux-driver-package" #xf86-video-nouveau #our fs-init may conflict with linux-driver-package-firstboot diff --git a/recipes-bsp/binary-drivers/linux-driver-package_21.7.0.bb b/recipes-bsp/binary-drivers/linux-driver-package_21.7.0.bb index 5067cb9..2570388 100755 --- a/recipes-bsp/binary-drivers/linux-driver-package_21.7.0.bb +++ b/recipes-bsp/binary-drivers/linux-driver-package_21.7.0.bb @@ -30,7 +30,7 @@ INITSCRIPT_PARAMS_${PN}-boot = "start 41 S . " INITSCRIPT_NAME_${PN}-firstboot = "nvfb" INITSCRIPT_PARAMS_${PN}-firstboot = "start 40 S . " -DEPENDS = "virtual/libx11 alsa-lib libxext" +DEPENDS = "virtual/libx11 alsa-lib libxext mesa" INSANE_SKIP_${PN} = "ldflags" @@ -38,11 +38,32 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" S = "${WORKDIR}/Linux_for_Tegra" +PROVIDES += " \ + virtual/egl \ + virtual/libgl \ + virtual/libgles1 \ + virtual/libgles2 \ +" +RPROVIDES_${PN} = " \ + libegl \ + libgl \ + libgles1 \ + libgles2 \ +" + PACKAGES =+ "${PN}-firmware ${PN}-boot ${PN}-firstboot" INSANE_SKIP_${PN}-dev = "ldflags" +# We have unversioned shared object, deploy them in the regular packages, +# but deploy the *.so files which are symlinks in the -dev package. +FILES_SOLIBSDEV = "" FILES_${PN} = "${bindir}/* ${libdir}/* ${sysconfdir}/* ${sysconfdir}/*/*" +FILES_${PN}-dev += " \ + ${libdir}/libcuda.so ${libdir}/libEGL.so ${libdir}/libGLESv1_CM.so \ + ${libdir}/libGLESv2.so ${libdir}/libGL.so \ +" + RRECOMMENDS_${PN} = "xserver-xorg-module-libwfb" RDEPENDS_${PN} = "xserver-xorg bash" @@ -61,10 +82,18 @@ do_patch () { do_install () { tar xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nvidia_drivers.tbz2 -C ${D} mv ${D}/lib/firmware/tegra12x ${D}/lib/firmware/gk20a + mv ${D}/usr/lib/arm-linux-gnueabihf/tegra/lib* ${D}/usr/lib/ + mv ${D}/usr/lib/arm-linux-gnueabihf/tegra-egl/lib* ${D}/usr/lib/ + rm -rf ${D}/usr/lib/arm-linux-gnueabihf/tegra ${D}/usr/lib/arm-linux-gnueabihf/tegra-egl + rm -f ${D}/usr/lib/xorg/modules/extensions/libglx.so + rm -f ${D}/usr/lib/libglx.so + cp -r ${WORKDIR}/tegra_xusb_firmware ${D}/lib/firmware/ - ln -sf ./libcuda.so.1.1 ${D}/usr/lib/arm-linux-gnueabihf/tegra/libcuda.so - ln -sf ./arm-linux-gnueabihf/tegra/libcuda.so ${D}/usr/lib/libcuda.so - ln -sf ./arm-linux-gnueabihf/tegra/libGL.so.1 ${D}/usr/lib/libGL.so + ln -sf ./libcuda.so.1.1 ${D}/usr/lib/libcuda.so + ln -sf ./libGL.so.1 ${D}/usr/lib/libGL.so + ln -sf ./libEGL.so.1 ${D}/usr/lib/libEGL.so + ln -sf ./libGLESv1_CM.so.1 ${D}/usr/lib/libGLESv1_CM.so + ln -sf ./libGLESv2.so.2 ${D}/usr/lib/libGLESv2.so cp ${WORKDIR}/l4tdrv/etc/asound* ${D}/etc/ cp -r ${WORKDIR}/l4tdrv/etc/udev ${D}/etc/ mkdir ${D}/etc/X11/ @@ -78,9 +107,6 @@ do_install () { install -d ${D}${sysconfdir}/nv touch ${D}${sysconfdir}/nv/nvfirstboot - rm ${D}/usr/lib/libGL.so - ln -sf libGL.so.1 ${D}/usr/lib/arm-linux-gnueabihf/tegra/libGL.so - cp ${WORKDIR}/xorg.conf ${D}/etc/X11/ install -d ${D}${systemd_unitdir}/system/ install -m 0755 ${WORKDIR}/nvfb.service ${D}${systemd_unitdir}/system @@ -101,13 +127,6 @@ do_install () { install -m 0755 ${NV_SAMPLE}/usr/lib/arm-linux-gnueabihf/gstreamer-1.0/libnvgstjpeg.so ${D}${libdir}/gstreamer-1.0 } -do_populate_sysroot () { - tar xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nvidia_drivers.tbz2 -C ${WORKDIR}/sysroot-destdir/ - rm ${WORKDIR}/sysroot-destdir/usr/lib/xorg/modules/extensions/libglx.so - mkdir ${WORKDIR}/sysroot-destdir/sysroot-providers - touch ${WORKDIR}/sysroot-destdir/sysroot-providers/${PN} -} - # Function to add the relevant ABI dependency to drivers, which should be called# from a PACKAGEFUNC. python add_xorg_abi_depends() { mlprefix = d.getVar('MLPREFIX', True) or '' diff --git a/recipes-graphics/mesa/mesa/0001-pkg-config-files-add-tegra-paths.patch b/recipes-graphics/mesa/mesa/0001-pkg-config-files-add-tegra-paths.patch deleted file mode 100644 index b657b3e..0000000 --- a/recipes-graphics/mesa/mesa/0001-pkg-config-files-add-tegra-paths.patch +++ /dev/null @@ -1,81 +0,0 @@ -From e0e65da315173902b909627ac3067463ab5c8710 Mon Sep 17 00:00:00 2001 -From: Max Krummenacher -Date: Sat, 7 Sep 2019 13:17:21 +0000 -Subject: [PATCH] pkg config files: add tegra paths - -Add the paths to the tegra specific libraries. - -Signed-off-by: Max Krummenacher ---- - src/egl/meson.build | 1 + - src/mapi/es1api/meson.build | 3 +- - src/mapi/es2api/meson.build | 3 +- - src/meson.build | 2 +- - 4 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/egl/meson.build b/src/egl/meson.build -index 3a0fd01..48e0b2a 100644 ---- a/src/egl/meson.build -+++ b/src/egl/meson.build -@@ -181,6 +181,7 @@ if with_glvnd - else - _egl = libegl - endif -+_egl = ' -L=${libdir}/arm-linux-gnueabihf/tegra-egl -L${libdir} -lEGL' - - pkg.generate( - name : 'egl', -diff --git a/src/mapi/es1api/meson.build b/src/mapi/es1api/meson.build -index 53bdc16..c042fe2 100644 ---- a/src/mapi/es1api/meson.build -+++ b/src/mapi/es1api/meson.build -@@ -43,12 +43,13 @@ libglesv1_cm = shared_library( - install : true, - ) - -+_lib_tegra_gl1 = '-L=${libdir}/arm-linux-gnueabihf/tegra-egl -L${libdir} -lGLESv1_CM' - pkg.generate( - name : 'glesv1_cm', - filebase : 'glesv1_cm', - description : 'Mesa OpenGL ES 1.1 CM library', - version : meson.project_version(), -- libraries : libglesv1_cm, -+ libraries : _lib_tegra_gl1, - libraries_private : gl_priv_libs, - ) - -diff --git a/src/mapi/es2api/meson.build b/src/mapi/es2api/meson.build -index d374bd8..9c56933 100644 ---- a/src/mapi/es2api/meson.build -+++ b/src/mapi/es2api/meson.build -@@ -43,12 +43,13 @@ libgles2 = shared_library( - install : true, - ) - -+_lib_tegra_gl2 = '-L=${libdir}/arm-linux-gnueabihf/tegra-egl -L${libdir} -lGLESv2' - pkg.generate( - name : 'glesv2', - filebase : 'glesv2', - description : 'Mesa OpenGL ES 2.0 library', - version : meson.project_version(), -- libraries : libgles2, -+ libraries : _lib_tegra_gl2, - libraries_private : gl_priv_libs, - ) - -diff --git a/src/meson.build b/src/meson.build -index 6d04b5f..691811d 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -107,7 +107,7 @@ if with_glx != 'disabled' - else - _gl = libgl - endif -- -+ _gl = '-L=${libdir}/arm-linux-gnueabihf/tegra -L${libdir} -lGL' - pkg.generate( - name : 'gl', - description : 'Mesa OpenGL Library', --- -2.20.1 - diff --git a/recipes-graphics/mesa/mesa_%.bbappend b/recipes-graphics/mesa/mesa_%.bbappend index c34c789..b3f960f 100644 --- a/recipes-graphics/mesa/mesa_%.bbappend +++ b/recipes-graphics/mesa/mesa_%.bbappend @@ -1,13 +1,17 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - ##### # tegra tk1 -DEPENDS_append_tegra124= " linux-driver-package" -SRC_URI_append_tegra124 = " file://0001-pkg-config-files-add-tegra-paths.patch" - PACKAGE_ARCH_tegra124 = "${MACHINE_ARCH}" +PROVIDES_remove_tegra124 = "virtual/egl virtual/libgl virtual/libgles1 virtual/libgles2" + +do_install_append_tegra124 () { + rm ${D}${libdir}/libEGL.so* + rm ${D}${libdir}/libGL.so* + rm ${D}${libdir}/libGLESv1*.so* + rm ${D}${libdir}/libGLESv2.so* +} + ##### ## Tegra TK1 mainline kernel -- cgit v1.2.3