diff --git a/common/shlibs b/common/shlibs index ad657d95caf..9181e1bcf89 100644 --- a/common/shlibs +++ b/common/shlibs @@ -129,13 +129,15 @@ libGL.so.1 libGL-7.11_1 libnvidia-ml.so.1 nvidia-libs-346.47_1 ignore libnvidia-ml.so.1 nvidia304-libs-304.00_1 ignore libnvidia-ml.so.1 nvidia340-libs-340.46_1 ignore +libnvidia-ml.so.1 nvidia390-libs-390.87_1 ignore libnvidia-tls.so.346.47 nvidia-libs-346.47_1 ignore libnvidia-glcore.so.346.47 nvidia-libs-346.47_1 ignore libnvidia-gtk2.so.346.47 nvidia-gtklibs-346.47_1 ignore libnvidia-gtk3.so.346.47 nvidia-gtklibs-346.47_1 ignore libnvidia-glcore.so.346.47 nvidia340-libs-340.46_1 ignore +libnvidia-glcore.so.390.87 nvidia390-libs-390.87_1 ignore libnvidia-glsi.so.346.72 nvidia-libs-346.72_1 ignore -libnvidia-fatbinaryloader.so.390.87 nvidia-libs-390.87_1 ignore +libnvidia-fatbinaryloader.so.390.87 nvidia390-libs-390.87_1 ignore libglapi.so.0 libglapi-7.11_1 libgbm.so.1 libgbm-9.0_1 librsvg-2.so.2 librsvg-2.26.0_1 diff --git a/srcpkgs/nvidia390-dkms b/srcpkgs/nvidia390-dkms new file mode 120000 index 00000000000..b2f011472a3 --- /dev/null +++ b/srcpkgs/nvidia390-dkms @@ -0,0 +1 @@ +nvidia390 \ No newline at end of file diff --git a/srcpkgs/nvidia390-gtklibs b/srcpkgs/nvidia390-gtklibs new file mode 120000 index 00000000000..b2f011472a3 --- /dev/null +++ b/srcpkgs/nvidia390-gtklibs @@ -0,0 +1 @@ +nvidia390 \ No newline at end of file diff --git a/srcpkgs/nvidia390-libs b/srcpkgs/nvidia390-libs new file mode 120000 index 00000000000..b2f011472a3 --- /dev/null +++ b/srcpkgs/nvidia390-libs @@ -0,0 +1 @@ +nvidia390 \ No newline at end of file diff --git a/srcpkgs/nvidia390-opencl b/srcpkgs/nvidia390-opencl new file mode 120000 index 00000000000..b2f011472a3 --- /dev/null +++ b/srcpkgs/nvidia390-opencl @@ -0,0 +1 @@ +nvidia390 \ No newline at end of file diff --git a/srcpkgs/nvidia390/INSTALL b/srcpkgs/nvidia390/INSTALL new file mode 100644 index 00000000000..6b065bedb4a --- /dev/null +++ b/srcpkgs/nvidia390/INSTALL @@ -0,0 +1,7 @@ +# Regenerate initramfs. +case ${ACTION} in +post) + echo "Regenerating initramfs, please wait..." + dracut -f -q --regenerate-all + ;; +esac diff --git a/srcpkgs/nvidia390/REMOVE b/srcpkgs/nvidia390/REMOVE new file mode 100644 index 00000000000..e4d494ca015 --- /dev/null +++ b/srcpkgs/nvidia390/REMOVE @@ -0,0 +1,7 @@ +# Regenerate initramfs. +case ${ACTION} in +purge) + echo "Regenerating initramfs, please wait..." + dracut -f -q --regenerate-all + ;; +esac diff --git a/srcpkgs/nvidia390/files/dkms.conf b/srcpkgs/nvidia390/files/dkms.conf new file mode 100644 index 00000000000..88c29ff8404 --- /dev/null +++ b/srcpkgs/nvidia390/files/dkms.conf @@ -0,0 +1,19 @@ +PACKAGE_NAME="nvidia390" +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" +BUILT_MODULE_NAME[3]="nvidia-drm" +DEST_MODULE_LOCATION[3]="/kernel/drivers/video" diff --git a/srcpkgs/nvidia390/template b/srcpkgs/nvidia390/template new file mode 100644 index 00000000000..7c830f1252f --- /dev/null +++ b/srcpkgs/nvidia390/template @@ -0,0 +1,293 @@ +# Template file for 'nvidia390' + +_desc="NVIDIA drivers (GeForce 400, 500 series)" + +pkgname=nvidia390 +version=390.87 +revision=1 +maintainer="Juan RP " +license="Proprietary NVIDIA license" +homepage="http://www.nvidia.com" + +only_for_archs="i686 x86_64" +nopie=yes +repository="nonfree" +create_wrksrc=yes +short_desc="${_desc} - Libraries and Utilities" +depends="nvidia390-gtklibs-${version}_${revision} nvidia390-dkms-${version}_${revision} pkg-config" +conflicts="catalyst>=0 xserver-abi-video>24_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://uk.download.nvidia.com/XFree86/Linux-x86/${version}/${_pkg}.run" + checksum=5c29c5f9d80a07ea71219c6323fe5fc9b7577847b970f23161685d4b890b9966 +else + _pkg="NVIDIA-Linux-x86_64-${version}-no-compat32" + distfiles="http://uk.download.nvidia.com/XFree86/Linux-x86_64/${version}/${_pkg}.run" + checksum=c7c07151e17f610af11f7870560d96c3a3ee9bb91ba1bb82fcc7b5d473d40b66 +fi + +subpackages="nvidia390-gtklibs nvidia390-dkms nvidia390-opencl nvidia390-libs" + +do_extract() { + install -m755 ${XBPS_SRCDISTDIR}/${pkgname}-${version}/${_pkg}.run ${wrksrc} + cd ${wrksrc} + ./${_pkg}.run --extract-only + rm -f ${_pkg}.run +} + +pre_install() { + cd ${_pkg} + cp nvidia_icd.json.template nvidia_icd.json + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json +} + +do_install() { + cd ${_pkg} + + # X driver + vinstall nvidia_drv.so 755 usr/lib/xorg/modules/drivers + + # 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 + + # GLX client libs + if [ "${build_option_glvnd}" ]; then + # ----- Also provided by the libglvnd package (todo) + vinstall libGL.so.1.7.0 755 usr/lib + ln -sf libGL.so.1.7.0 ${DESTDIR}/usr/lib/libGL.so + ln -sf libGL.so.1.7.0 ${DESTDIR}/usr/lib/libGL.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 + 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.2.0 755 usr/lib + ln -sf libGLESv1_CM.so.1.2.0 ${DESTDIR}/usr/lib/libGLESv1_CM.so + ln -sf libGLESv1_CM.so.1.2.0 ${DESTDIR}/usr/lib/libGLESv1_CM.so.1 + + vinstall libGLESv2.so.2.1.0 755 usr/lib + ln -sf libGLESv2.so.2.1.0 ${DESTDIR}/usr/lib/libGLESv2.so + ln -sf libGLESv2.so.2.1.0 ${DESTDIR}/usr/lib/libGLESv2.so.2 + + vinstall libnvidia-egl-wayland.so.1.0.2 755 usr/lib + ln -sf libnvidia-egl-wayland.so.1.0.2 ${DESTDIR}/usr/lib/libnvidia-egl-wayland.so.1 + + vinstall 10_nvidia.json 755 usr/share/glvnd/egl_vendor.d + vinstall 10_nvidia_wayland.json 755 usr/share/egl/egl_external_platform.d + # -------------------------------------------------- + + vinstall libEGL.so.1.1.0 755 usr/lib + ln -sf libEGL.so.1.1.0 ${DESTDIR}/usr/lib/libEGL.so + ln -sf libEGL.so.1.1.0 ${DESTDIR}/usr/lib/libEGL.so.1 + + 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.1 + + # misc libraries + 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 + + vinstall libnvidia-ml.so.${version} 755 usr/lib + ln -sf libnvidia-ml.so.${version} ${DESTDIR}/usr/lib/libnvidia-ml.so + ln -sf libnvidia-ml.so.${version} ${DESTDIR}/usr/lib/libnvidia-ml.so.1 + + vinstall libnvidia-encode.so.${version} 755 usr/lib + ln -sf libnvidia-encode.so.${version} ${DESTDIR}/usr/lib/libnvidia-encode.so + ln -sf libnvidia-encode.so.${version} ${DESTDIR}/usr/lib/libnvidia-encode.so.1 + + vinstall libnvidia-ifr.so.${version} 755 usr/lib + ln -sf libnvidia-ifr.so.${version} ${DESTDIR}/usr/lib/libnvidia-ifr.so + ln -sf libnvidia-ifr.so.${version} ${DESTDIR}/usr/lib/libnvidia-ifr.so.1 + + vinstall libnvidia-fbc.so.${version} 755 usr/lib + 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-fatbinaryloader.so.${version} 755 usr/lib + ln -sf libnvidia-fatbinaryloader.so.${version} ${DESTDIR}/usr/lib/libnvidia-fatbinaryloader.so.1 + ln -sf libnvidia-fatbinaryloader.so.1 ${DESTDIR}/usr/lib/libnvidia-fatbinaryloader.so + + # CUDA + vbin nvidia-cuda-mps-control + vbin nvidia-cuda-mps-server + gzip -d nvidia-cuda-mps-control.1.gz + vman nvidia-cuda-mps-control.1 + + vinstall libcuda.so.${version} 755 usr/lib + ln -sf libcuda.so.${version} ${DESTDIR}/usr/lib/libcuda.so + ln -sf libcuda.so.${version} ${DESTDIR}/usr/lib/libcuda.so.1 + + vinstall libnvcuvid.so.${version} 755 usr/lib + 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 + ln -sf libnvidia-ptxjitcompiler.so.${version} ${DESTDIR}/usr/lib/libnvidia-ptxjitcompiler.so.1 + ln -sf libnvidia-ptxjitcompiler.so.1 ${DESTDIR}/usr/lib/libnvidia-ptxjitcompiler.so + + # nvidia-xconfig + vbin nvidia-xconfig + gzip -d nvidia-xconfig.1.gz + vman nvidia-xconfig.1 + + # nvidia-settings + vbin nvidia-settings + gzip -d nvidia-settings.1.gz + vman nvidia-settings.1 + vinstall nvidia-settings.desktop 644 usr/share/applications + vinstall nvidia-settings.png 644 usr/share/pixmaps + sed -e 's:__UTILS_PATH__:/usr/bin:' \ + -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' \ + -i ${DESTDIR}/usr/share/applications/nvidia-settings.desktop + + vinstall libnvidia-gtk3.so.${version} 755 usr/lib + vinstall libnvidia-gtk2.so.${version} 755 usr/lib + + # application profiles (needed by nvidia-settings) + vinstall nvidia-application-profiles-${version}-key-documentation 644 usr/share/nvidia + vinstall nvidia-application-profiles-${version}-rc 644 usr/share/nvidia + + # nvidia-bug-report + vbin nvidia-bug-report.sh nvidia-bug-report + vbin nvidia-debugdump + + # nvidia-smi + vbin nvidia-smi + gzip -d nvidia-smi.1.gz + vman nvidia-smi.1 + + # nvidia-modprobe + vinstall nvidia-modprobe 4755 usr/bin + gzip -d nvidia-modprobe.1.gz + vman nvidia-modprobe.1 + + # License and documentation + vlicense LICENSE + vdoc README.txt README + vdoc NVIDIA_Changelog + + # opencl pkg + vinstall nvidia.icd 644 etc/OpenCL/vendors + + vinstall libnvidia-compiler.so.${version} 755 usr/lib + + vinstall libnvidia-opencl.so.${version} 755 usr/lib + ln -sf libnvidia-opencl.so.${version} \ + ${DESTDIR}/usr/lib/libnvidia-opencl.so + ln -sf libnvidia-opencl.so.${version} \ + ${DESTDIR}/usr/lib/libnvidia-opencl.so.1 + + # vulkan icd + vinstall nvidia_icd.json 644 usr/share/vulkan/icd.d + + # dkms pkg + vmkdir usr/src/nvidia-${version} + 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 + if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then + # nvidia no longer builds "uvm" submodule for 32-bit + # Remove 2 lines for "nvidia-uvm" and repair consecutive enumeration following. + sed -e '/nvidia-uvm/,+1d' \ + -e 's/\[2\]/[1]/g' \ + -e 's/\[3\]/[2]/g' \ + -i ${DESTDIR}/usr/src/nvidia-${version}/dkms.conf + fi + + # 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 + 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 +} + +nvidia390-gtklibs_package() { + short_desc="${_desc} - GTK+ libraries" + pkg_install() { + vmove usr/lib/lib*gtk*.so* + } +} +nvidia390-libs_package() { + short_desc="${_desc} - common libraries" + provides="libEGL-${version}_${revision} libGL-${version}_${revision} libGLES-${version}_${revision}" + replaces="libEGL>=0 libGL>=0 libGLES>=0" + pkg_install() { + vmove usr/lib + } +} +nvidia390-dkms_package() { + short_desc="${_desc} - DKMS kernel module" + dkms_modules="nvidia ${version}" + depends="dkms" + pkg_install() { + vmove usr/src + vmove usr/lib/modprobe.d + vmove usr/lib/dracut + } +} +nvidia390-opencl_package() { + short_desc="${_desc} - OpenCL implementation" + depends="libOpenCL" + pkg_install() { + vmove "usr/lib/libnvidia-compiler*" + vmove "usr/lib/libnvidia-opencl*" + vmove etc/OpenCL + } +} diff --git a/srcpkgs/nvidia390/update b/srcpkgs/nvidia390/update new file mode 100644 index 00000000000..b74fe6d69aa --- /dev/null +++ b/srcpkgs/nvidia390/update @@ -0,0 +1,2 @@ +site="http://www.nvidia.com/object/unix.html" +pattern='390.+>\K[\d.]+(?=)'