summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2019-09-29 22:30:42 +0200
committerMax Krummenacher <max.krummenacher@toradex.com>2019-09-29 23:08:21 +0200
commit8263c26d4eedaf903d8f47e583c025aba50de2de (patch)
treed190c8a6004671dc1dcb4519e374c65d9f2d97c8
parente48613aece9a1bef83888028aab75b8c36cda0ed (diff)
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 <max.krummenacher@toradex.com>
-rw-r--r--conf/machine/apalis-tk1.conf5
-rwxr-xr-xrecipes-bsp/binary-drivers/linux-driver-package_21.7.0.bb47
-rw-r--r--recipes-graphics/mesa/mesa/0001-pkg-config-files-add-tegra-paths.patch81
-rw-r--r--recipes-graphics/mesa/mesa_%.bbappend14
4 files changed, 46 insertions, 101 deletions
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 <max.krummenacher@toradex.com>
-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 <max.krummenacher@toradex.com>
----
- 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