diff --git a/srcpkgs/nvidia/files/dkms.conf b/srcpkgs/nvidia/files/dkms.conf new file mode 100644 index 0000000000..b2547eaebc --- /dev/null +++ b/srcpkgs/nvidia/files/dkms.conf @@ -0,0 +1,17 @@ +PACKAGE_NAME="nvidia" +PACKAGE_VERSION="__PKGVER" +AUTOINSTALL="yes" + +# By default, DKMS will add KERNELRELEASE to the make command line; however, +# this will cause the kernel module build to infer that it was invoked via +# Kbuild directly instead of DKMS. The dkms(8) manual page recommends quoting +# the 'make' command name to suppress this behavior. +MAKE[0]="'make' __MAKEJOBS NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=${kernelver} modules" + +# The list of kernel modules was generated by nvidia-installer at runtime. +BUILT_MODULE_NAME[0]="nvidia" +DEST_MODULE_LOCATION[0]="/kernel/drivers/video" +BUILT_MODULE_NAME[1]="nvidia-uvm" +DEST_MODULE_LOCATION[1]="/kernel/drivers/video" +BUILT_MODULE_NAME[2]="nvidia-modeset" +DEST_MODULE_LOCATION[2]="/kernel/drivers/video" diff --git a/srcpkgs/nvidia/template b/srcpkgs/nvidia/template index 0cfd45a6f9..6691c46a74 100644 --- a/srcpkgs/nvidia/template +++ b/srcpkgs/nvidia/template @@ -3,8 +3,8 @@ _desc="NVIDIA drivers for linux (long-lived series)" pkgname=nvidia -version=352.79 -revision=2 +version=361.42 +revision=1 maintainer="Juan RP " license="Proprietary NVIDIA license" homepage="http://www.nvidia.com" @@ -16,14 +16,18 @@ short_desc="${_desc} - Libraries and Utilities" depends="nvidia-gtklibs-${version}_${revision} nvidia-dkms-${version}_${revision} pkg-config" conflicts="catalyst>=0 xserver-abi-video>21_1" +build_options="glvnd" +desc_option_glvnd="Add support for NVIDIA's GL Vendor Neutral Dispatch implementation" +build_options_default="glvnd" + if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then _pkg="NVIDIA-Linux-x86-${version}" - distfiles="http://us.download.nvidia.com/XFree86/Linux-x86/${version}/${_pkg}.run" - checksum=2929d6e509ed4502312c1b7384f6d12cb63bd4af03fc847a281d3ccdd4db4f69 + distfiles="http://uk.download.nvidia.com/XFree86/Linux-x86/${version}/${_pkg}.run" + checksum=e32d047f62da3aaabe718a5b835e6efa2c0265e76dd0f4e6b9af35266b6e4e82 else _pkg="NVIDIA-Linux-x86_64-${version}-no-compat32" - distfiles="http://us.download.nvidia.com/XFree86/Linux-x86_64/${version}/${_pkg}.run" - checksum=8be6c64dddc2c2c5a0512bdacc71a77734de469ca11dfa435ca728fba57ccb9a + distfiles="http://uk.download.nvidia.com/XFree86/Linux-x86_64/${version}/${_pkg}.run" + checksum=04cfc16efde964e0b1c62585ea82dc9445dcc8e3aeb76ad08801ff4ee6cfde13 fi subpackages="nvidia-gtklibs nvidia-dkms nvidia-opencl nvidia-libs" @@ -47,31 +51,74 @@ do_install() { # GLX extension module for X vinstall libglx.so.${version} 755 usr/lib/xorg/modules/extensions ln -sf libglx.so.${version} ${DESTDIR}/usr/lib/xorg/modules/extensions/libglx.so - ln -sf libglx.so.${version} ${DESTDIR}/usr/lib/xorg/modules/extensions/libglx.so.1 - # OpenGL library - vinstall libGL.so.${version} 755 usr/lib - ln -sf libGL.so.${version} ${DESTDIR}/usr/lib/libGL.so - ln -sf libGL.so.${version} ${DESTDIR}/usr/lib/libGL.so.1 + # GLX client libs + if [ "${build_option_glvnd}" ]; then + # ----- Also provided by the libglvnd package (todo) + vinstall libGL.so.1.0.0 755 usr/lib + ln -sf libGL.so.1.0.0 ${DESTDIR}/usr/lib/libGL.so + ln -sf libGL.so.1.0.0 ${DESTDIR}/usr/lib/libGL.so.1 - # EGL library - vinstall libEGL.so.${version} 755 usr/lib - ln -sf libEGL.so.${version} ${DESTDIR}/usr/lib/libEGL.so - ln -sf libEGL.so.${version} ${DESTDIR}/usr/lib/libEGL.so.1 + vinstall libGLX.so.0 755 usr/lib + ln -sf libGLX.so.0 ${DESTDIR}/usr/lib/libGLX.so + # -------------------------------------------------- + + # Required for GLVND option + vinstall libGLX_nvidia.so.${version} 755 usr/lib + ln -sf libGLX_nvidia.so.${version} ${DESTDIR}/usr/lib/libGLX_nvidia.so.0 + ln -sf libGLX_nvidia.so.${version} ${DESTDIR}/usr/lib/libGLX_indirect.so.0 + else + vinstall libGL.so.${version} 755 usr/lib + ln -sf libGL.so.${version} ${DESTDIR}/usr/lib/libGL.so + ln -sf libGL.so.${version} ${DESTDIR}/usr/lib/libGL.so.1 + + # Not required for non-GLVND option but recommended + # more info: https://devtalk.nvidia.com/default/topic/915640/multiple-glx-client-libraries-in-the-nvidia-linux-driver-installer-package/ + vinstall libGLX_nvidia.so.${version} 755 usr/lib + ln -sf libGLX_nvidia.so.${version} ${DESTDIR}/usr/lib/libGLX_nvidia.so.0 + ln -sf libGLX_nvidia.so.${version} ${DESTDIR}/usr/lib/libGLX_indirect.so.0 + + fi # OpenGL core library vinstall libnvidia-glcore.so.${version} 755 usr/lib - ln -sf libnvidia-glcore.so.${version} ${DESTDIR}/usr/lib/libnvidia-glcore.so + vinstall libnvidia-eglcore.so.${version} 755 usr/lib + vinstall libnvidia-glsi.so.${version} 755 usr/lib + + # EGL + # ----- Also provided by the libglvnd package (todo) + vinstall libOpenGL.so.0 755 usr/lib + ln -sf libOpenGL.so.0 ${DESTDIR}/usr/lib/libOpenGL.so + + vinstall libGLdispatch.so.0 755 usr/lib + + vinstall libGLESv1_CM.so.1 755 usr/lib + ln -sf libGLESv1_CM.so.1 ${DESTDIR}/usr/lib/libGLESv1_CM.so + + vinstall libGLESv2.so.2 755 usr/lib + ln -sf libGLESv2.so.2 ${DESTDIR}/usr/lib/libGLESv2.so + # -------------------------------------------------- + + vinstall libEGL.so.1 755 usr/lib + ln -sf libEGL.so.1 ${DESTDIR}/usr/lib/libEGL.so + + vinstall libEGL_nvidia.so.${version} 755 usr/lib + ln -sf libEGL_nvidia.so.${version} ${DESTDIR}/usr/lib/libEGL_nvidia.so.0 + + vinstall libGLESv1_CM_nvidia.so.${version} 755 usr/lib + ln -sf libGLESv1_CM_nvidia.so.${version} ${DESTDIR}/usr/lib/libGLESv1_CM_nvidia.so.1 + + vinstall libGLESv2_nvidia.so.${version} 755 usr/lib + ln -sf libGLESv2_nvidia.so.${version} ${DESTDIR}/usr/lib/libGLESv2_nvidia.so.2 + + # Thread Local Storage + vinstall tls/libnvidia-tls.so.${version} 755 usr/lib # VDPAU vinstall libvdpau_nvidia.so.${version} 755 usr/lib/vdpau - ln -sf libvdpau_nvidia.so.${version} ${DESTDIR}/usr/lib/vdpau/libvdpau_nvidia.so ln -sf libvdpau_nvidia.so.${version} ${DESTDIR}/usr/lib/vdpau/libvdpau_nvidia.so.1 # misc libraries - vinstall tls/libnvidia-tls.so.${version} 755 usr/lib - ln -sf libnvidia-tls.so.${version} ${DESTDIR}/usr/lib/libnvidia-tls.so - vinstall libnvidia-cfg.so.${version} 755 usr/lib ln -sf libnvidia-cfg.so.${version} ${DESTDIR}/usr/lib/libnvidia-cfg.so ln -sf libnvidia-cfg.so.${version} ${DESTDIR}/usr/lib/libnvidia-cfg.so.1 @@ -92,9 +139,7 @@ do_install() { ln -sf libnvidia-fbc.so.${version} ${DESTDIR}/usr/lib/libnvidia-fbc.so ln -sf libnvidia-fbc.so.${version} ${DESTDIR}/usr/lib/libnvidia-fbc.so.1 - vinstall libnvidia-glsi.so.${version} 755 usr/lib - ln -sf libnvidia-glsi.so.${version} ${DESTDIR}/usr/lib/libnvidia-glsi.so - ln -sf libnvidia-glsi.so.${version} ${DESTDIR}/usr/lib/libnvidia-glsi.so.1 + vinstall libnvidia-fatbinaryloader.so.${version} 755 usr/lib # CUDA vbin nvidia-cuda-mps-control @@ -110,6 +155,8 @@ do_install() { ln -sf libnvcuvid.so.${version} ${DESTDIR}/usr/lib/libnvcuvid.so ln -sf libnvcuvid.so.${version} ${DESTDIR}/usr/lib/libnvcuvid.so.1 + vinstall libnvidia-ptxjitcompiler.so.${version} 755 usr/lib + # nvidia-xconfig vbin nvidia-xconfig gzip -d nvidia-xconfig.1.gz @@ -126,11 +173,7 @@ do_install() { -i ${DESTDIR}/usr/share/applications/nvidia-settings.desktop vinstall libnvidia-gtk3.so.${version} 755 usr/lib - ln -sf libnvidia-gtk3.so.${version} ${DESTDIR}/usr/lib/libnvidia-gtk3.so - ln -sf libnvidia-gtk3.so.${version} ${DESTDIR}/usr/lib/libnvidia-gtk3.so.1 vinstall libnvidia-gtk2.so.${version} 755 usr/lib - ln -sf libnvidia-gtk2.so.${version} ${DESTDIR}/usr/lib/libnvidia-gtk2.so - ln -sf libnvidia-gtk2.so.${version} ${DESTDIR}/usr/lib/libnvidia-gtk2.so.1 # application profiles (needed by nvidia-settings) vinstall nvidia-application-profiles-${version}-key-documentation 644 usr/share/nvidia @@ -159,10 +202,6 @@ do_install() { vinstall nvidia.icd 644 etc/OpenCL/vendors vinstall libnvidia-compiler.so.${version} 755 usr/lib - ln -sf libnvidia-compiler.so.${version} \ - ${DESTDIR}/usr/lib/libnvidia-compiler.so - ln -sf libnvidia-compiler.so.${version} \ - ${DESTDIR}/usr/lib/libnvidia-compiler.so.1 vinstall libnvidia-opencl.so.${version} 755 usr/lib ln -sf libnvidia-opencl.so.${version} \ @@ -172,29 +211,23 @@ do_install() { # dkms pkg vmkdir usr/src/nvidia-${version} - # add nvidia-uvm dkms submodule too. - if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then - cat kernel/uvm/dkms.conf.fragment >> kernel/dkms.conf - fi vcopy "kernel/*" usr/src/nvidia-${version} + vcopy ${FILESDIR}/dkms.conf usr/src/nvidia-${version} + sed -e "s/__PKGVER/${version}/g" \ + -e "s/__MAKEJOBS/-j$(nproc)/g" \ + -i ${DESTDIR}/usr/src/nvidia-${version}/dkms.conf - # systemd modules-load.d(5) file. - vmkdir usr/lib/modules-load.d - echo "nvidia" > ${DESTDIR}/usr/lib/modules-load.d/nvidia.conf - chmod 644 ${DESTDIR}/usr/lib/modules-load.d/nvidia.conf - if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then - echo "nvidia-uvm" > ${DESTDIR}/usr/lib/modules-load.d/nvidia-uvm.conf - chmod 644 ${DESTDIR}/usr/lib/modules-load.d/nvidia-uvm.conf - fi - - # Blacklist nouveau. + # Blacklist nouveau vmkdir usr/lib/modprobe.d echo "blacklist nouveau" > ${DESTDIR}/usr/lib/modprobe.d/nvidia.conf chmod 644 ${DESTDIR}/usr/lib/modprobe.d/nvidia.conf - # Omit drm dracut module too. + # Omit drm dracut module too vmkdir usr/lib/dracut/dracut.conf.d echo "omit_dracutmodules+=\" drm \"" > ${DESTDIR}/usr/lib/dracut/dracut.conf.d/99-nvidia.conf + + vmkdir /usr/share/X11/xorg.conf.d/ + vinstall nvidia-drm-outputclass.conf 644 /usr/share/X11/xorg.conf.d 30-nvidia-drm-outputclass.conf } nvidia-gtklibs_package() { @@ -205,8 +238,8 @@ nvidia-gtklibs_package() { } nvidia-libs_package() { short_desc="${_desc} - common libraries" - provides="libEGL-${version}_${revision} libGL-${version}_${revision}" - replaces="libEGL>=0 libGL>=0" + provides="libEGL-${version}_${revision} libGL-${version}_${revision} libGLES-${version}_${revision}" + replaces="libEGL>=0 libGL>=0 libGLES>=0" pkg_install() { vmove usr/lib } @@ -218,7 +251,6 @@ nvidia-dkms_package() { depends="dkms" pkg_install() { vmove usr/src - vmove usr/lib/modules-load.d vmove usr/lib/modprobe.d vmove usr/lib/dracut }