Signed-off-by: Maik Freudenberg --- --- /usr/portage/x11-drivers/nvidia-drivers/nvidia-drivers-435.17.ebuild 2019-08-15 09:39:41.000000000 +0200 +++ /usr/local/portage/x11-drivers/nvidia-drivers/nvidia-drivers-435.17.ebuild 2019-08-15 22:23:05.115330853 +0200 @@ -27,7 +27,7 @@ RESTRICT="bindist mirror" EMULTILIB_PKG="true" -IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X" +IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms libglvnd multilib static-libs +tools uvm wayland +X" REQUIRED_USE=" tools? ( X ) static-libs? ( tools ) @@ -55,7 +55,11 @@ x11-libs/pango[X] ) X? ( - >=app-eselect/eselect-opengl-1.0.9 + !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) + libglvnd? ( + media-libs/libglvnd[${MULTILIB_USEDEP}] + !app-eselect/eselect-opengl + ) app-misc/pax-utils ) " @@ -448,7 +452,11 @@ src_install-libs() { local inslibdir=$(get_libdir) - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + if use libglvnd; then + local GL_ROOT="/usr/$(get_libdir)" + else + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + fi local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" local nv_libdir="${NV_OBJ}" @@ -458,18 +466,11 @@ if use X; then NV_GLX_LIBRARIES=( - "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGL.so.1.7.0 ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" "libcuda.so.${NV_SOVER}" "libnvcuvid.so.${NV_SOVER}" "libnvidia-compiler.so.${NV_SOVER}" @@ -485,6 +486,17 @@ "libnvidia-ptxjitcompiler.so.${NV_SOVER}" "libvdpau_nvidia.so.${NV_SOVER}" ) + if ! use libglvnd; then + NV_GLX_LIBRARIES+=( + "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" + "libGL.so.1.7.0 ${GL_ROOT}" + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" + "libGLESv2.so.2.1.0 ${GL_ROOT}" + "libGLX.so.0 ${GL_ROOT}" + "libGLdispatch.so.0 ${GL_ROOT}" + "libOpenGL.so.0 ${GL_ROOT}" + ) + fi if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; then @@ -552,7 +564,9 @@ use driver && use kernel_linux && linux-mod_pkg_postinst # Switch to the nvidia implementation - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + fi "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia readme.gentoo_print_elog @@ -576,10 +590,14 @@ } pkg_prerm() { - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi } pkg_postrm() { use driver && use kernel_linux && linux-mod_pkg_postrm - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi }