Proton sometimes errors out with: The NVIDIA driver was unable to open 'libnvidia-glvkspirv.so.470.57.02'. This library is required at run time. This is caused by an out of date glibc cache, so we now run ldconfig in INSTALL. This solution was pointed out by mvf. Unfortunately, this isn't the entirely correct solution: ldconfig should always be run after package installations that touch /usr/lib, to avoid similar issues. Until there's a simple solution for it (maybe general purpose XBPS hooks), this is the best we can do. Fixes: #32222
316 lines
9.6 KiB
Bash
316 lines
9.6 KiB
Bash
# Template file for 'nvidia'
|
|
|
|
_desc="NVIDIA drivers for linux"
|
|
|
|
pkgname=nvidia
|
|
version=470.57.02
|
|
revision=2
|
|
maintainer="Andrew Benson <abenson+void@gmail.com>"
|
|
license="custom:NVIDIA Proprietary"
|
|
homepage="https://www.nvidia.com"
|
|
|
|
archs="x86_64"
|
|
nopie=yes
|
|
repository="nonfree"
|
|
create_wrksrc=yes
|
|
short_desc="${_desc} - Libraries and Utilities"
|
|
hostmakedepends="tar"
|
|
conflicts="xserver-abi-video>24_1"
|
|
|
|
_pkg="NVIDIA-Linux-x86_64-${version}"
|
|
distfiles="http://uk.download.nvidia.com/XFree86/Linux-x86_64/${version}/${_pkg}.run"
|
|
checksum=55d7ae104827faa79e975321fe2b60f9dd42fbff65642053443c0e56fdb4c47d
|
|
# subpackages need to be processed in this specific order
|
|
subpackages="nvidia-gtklibs nvidia-dkms nvidia-opencl nvidia-libs nvidia-libs-32bit"
|
|
depends="nvidia-libs-${version}_${revision}
|
|
nvidia-gtklibs-${version}_${revision}
|
|
nvidia-dkms-${version}_${revision}"
|
|
|
|
_install_libs() {
|
|
local libdir=$1
|
|
|
|
# GLX client libs
|
|
# Required for GLVND option
|
|
vinstall libGLX_nvidia.so.${version} 755 ${libdir}
|
|
ln -sf libGLX_nvidia.so.${version} ${DESTDIR}/${libdir}/libGLX_nvidia.so.0
|
|
ln -sf libGLX_nvidia.so.${version} ${DESTDIR}/${libdir}/libGLX_indirect.so.0
|
|
|
|
# OpenGL core library
|
|
vinstall libnvidia-glcore.so.${version} 755 ${libdir}
|
|
vinstall libnvidia-eglcore.so.${version} 755 ${libdir}
|
|
vinstall libnvidia-glsi.so.${version} 755 ${libdir}
|
|
|
|
# Vulkan core library
|
|
vinstall libnvidia-glvkspirv.so.${version} 755 ${libdir}
|
|
|
|
vinstall libEGL_nvidia.so.${version} 755 ${libdir}
|
|
ln -sf libEGL_nvidia.so.${version} ${DESTDIR}/${libdir}/libEGL_nvidia.so.0
|
|
|
|
vinstall libGLESv1_CM_nvidia.so.${version} 755 ${libdir}
|
|
ln -sf libGLESv1_CM_nvidia.so.${version} \
|
|
${DESTDIR}/${libdir}/libGLESv1_CM_nvidia.so.1
|
|
|
|
vinstall libGLESv2_nvidia.so.${version} 755 ${libdir}
|
|
ln -sf libGLESv2_nvidia.so.${version} ${DESTDIR}/${libdir}/libGLESv2_nvidia.so.2
|
|
|
|
# Thread Local Storage
|
|
vinstall libnvidia-tls.so.${version} 755 ${libdir}
|
|
|
|
# VDPAU
|
|
vinstall libvdpau_nvidia.so.${version} 755 ${libdir}/vdpau
|
|
ln -sf libvdpau_nvidia.so.${version} \
|
|
${DESTDIR}/${libdir}/vdpau/libvdpau_nvidia.so.1
|
|
|
|
vinstall libnvidia-ml.so.${version} 755 ${libdir}
|
|
ln -sf libnvidia-ml.so.${version} ${DESTDIR}/${libdir}/libnvidia-ml.so
|
|
ln -sf libnvidia-ml.so.${version} ${DESTDIR}/${libdir}/libnvidia-ml.so.1
|
|
|
|
vinstall libnvidia-encode.so.${version} 755 ${libdir}
|
|
ln -sf libnvidia-encode.so.${version} ${DESTDIR}/${libdir}/libnvidia-encode.so
|
|
ln -sf libnvidia-encode.so.${version} ${DESTDIR}/${libdir}/libnvidia-encode.so.1
|
|
|
|
vinstall libnvidia-ifr.so.${version} 755 ${libdir}
|
|
ln -sf libnvidia-ifr.so.${version} ${DESTDIR}/${libdir}/libnvidia-ifr.so
|
|
ln -sf libnvidia-ifr.so.${version} ${DESTDIR}/${libdir}/libnvidia-ifr.so.1
|
|
|
|
vinstall libnvidia-fbc.so.${version} 755 ${libdir}
|
|
ln -sf libnvidia-fbc.so.${version} ${DESTDIR}/${libdir}/libnvidia-fbc.so
|
|
ln -sf libnvidia-fbc.so.${version} ${DESTDIR}/${libdir}/libnvidia-fbc.so.1
|
|
|
|
# CUDA
|
|
vinstall libcuda.so.${version} 755 ${libdir}
|
|
ln -sf libcuda.so.${version} ${DESTDIR}/${libdir}/libcuda.so
|
|
ln -sf libcuda.so.${version} ${DESTDIR}/${libdir}/libcuda.so.1
|
|
|
|
vinstall libnvcuvid.so.${version} 755 ${libdir}
|
|
ln -sf libnvcuvid.so.${version} ${DESTDIR}/${libdir}/libnvcuvid.so
|
|
ln -sf libnvcuvid.so.${version} ${DESTDIR}/${libdir}/libnvcuvid.so.1
|
|
|
|
vinstall libnvidia-opticalflow.so.${version} 755 ${libdir}
|
|
ln -sf libnvidia-opticalflow.so.${version} \
|
|
${DESTDIR}/${libdir}/libnvidia-opticalflow.so
|
|
ln -sf libnvidia-opticalflow.so.${version} \
|
|
${DESTDIR}/${libdir}/libnvidia-opticalflow.so.1
|
|
|
|
vinstall libnvidia-ptxjitcompiler.so.${version} 755 ${libdir}
|
|
ln -sf libnvidia-ptxjitcompiler.so.${version} \
|
|
${DESTDIR}/${libdir}/libnvidia-ptxjitcompiler.so.1
|
|
ln -sf libnvidia-ptxjitcompiler.so.1 \
|
|
${DESTDIR}/${libdir}/libnvidia-ptxjitcompiler.so
|
|
|
|
vinstall libnvidia-allocator.so.${version} 755 ${libdir}
|
|
ln -sf libnvidia-allocator.so.${version} \
|
|
${DESTDIR}/${libdir}/libnvidia-allocator.so.1
|
|
ln -sf libnvidia-allocator.so.1 \
|
|
${DESTDIR}/${libdir}/libnvidia-allocator.so
|
|
|
|
# helper libs for approved partners' GRID remote apps
|
|
vinstall libnvidia-ifr.so.${version} 755 usr/lib
|
|
vinstall libnvidia-fbc.so.${version} 755 usr/lib
|
|
}
|
|
|
|
do_extract() {
|
|
install -m755 ${XBPS_SRCDISTDIR}/${pkgname}-${version}/${_pkg}.run ${wrksrc}
|
|
cd ${wrksrc}
|
|
./${_pkg}.run --extract-only
|
|
rm -f ${_pkg}.run
|
|
}
|
|
|
|
do_install() {
|
|
cd ${_pkg}
|
|
|
|
# X driver
|
|
vinstall nvidia_drv.so 755 usr/lib/xorg/modules/drivers
|
|
|
|
# firmware
|
|
vinstall firmware/gsp.bin 644 usr/lib/firmware/nvidia/${version}
|
|
|
|
# GLX extension module for X
|
|
vinstall libglxserver_nvidia.so.${version} 755 usr/lib/nvidia/xorg
|
|
ln -sf libglxserver_nvidia.so.${version} \
|
|
${DESTDIR}/usr/lib/nvidia/xorg/libglxserver_nvidia.so
|
|
ln -sf libglxserver_nvidia.so.${version} \
|
|
${DESTDIR}/usr/lib/nvidia/xorg/libglxserver_nvidia.so.1
|
|
|
|
vinstall libnvidia-egl-wayland.so.1.1.7 755 usr/lib
|
|
ln -sf libnvidia-egl-wayland.so.1.1.7 \
|
|
${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 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
|
|
|
|
vbin nvidia-cuda-mps-control
|
|
vbin nvidia-cuda-mps-server
|
|
gzip -d nvidia-cuda-mps-control.1.gz
|
|
vman nvidia-cuda-mps-control.1
|
|
|
|
# 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
|
|
|
|
# nvidia-persistenced
|
|
vinstall nvidia-persistenced 4755 usr/bin
|
|
gzip -d nvidia-persistenced.1.gz
|
|
vman nvidia-persistenced.1
|
|
|
|
# opencl pkg
|
|
vinstall nvidia.icd 644 etc/OpenCL/vendors
|
|
vinstall nvidia_layers.json 644 usr/share/vulkan/implicit_layer.d
|
|
|
|
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
|
|
|
|
# vulkan real-time ray tracing extensions
|
|
vinstall libnvidia-rtcore.so.${version} 755 usr/lib
|
|
vinstall libnvidia-cbl.so.${version} 755 usr/lib
|
|
|
|
# ngx
|
|
vbin nvidia-ngx-updater
|
|
vinstall libnvidia-ngx.so.${version} 755 usr/lib
|
|
ln -sf libnvidia-ngx.so.${version} \
|
|
${DESTDIR}/usr/lib/libnvidia-ngx.so.1
|
|
ln -sf libnvidia-ngx.so.1 \
|
|
${DESTDIR}/usr/lib/libnvidia-ngx.so
|
|
|
|
vinstall _nvngx.dll 755 usr/lib/nvidia/wine
|
|
vinstall nvngx.dll 755 usr/lib/nvidia/wine
|
|
|
|
# optix ray racing engine
|
|
vinstall libnvoptix.so.${version} 755 usr/lib
|
|
ln -sf libnvoptix.so.${version} /usr/lib/libnvoptix.so
|
|
ln -sf libnvoptix.so.${version} /usr/lib/libnvoptix.so.1
|
|
|
|
# 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
|
|
|
|
# Xorg conf for PRIME
|
|
vmkdir /usr/share/X11/xorg.conf.d/
|
|
vinstall ${FILESDIR}/nvidia-drm-outputclass.conf 644 \
|
|
/usr/share/X11/xorg.conf.d 10-nvidia-drm-outputclass.conf
|
|
|
|
vbin ${FILESDIR}/prime-run
|
|
|
|
# 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
|
|
|
|
# License and documentation
|
|
vlicense LICENSE
|
|
vdoc README.txt README
|
|
vdoc NVIDIA_Changelog
|
|
|
|
# nvvm compiler
|
|
vinstall libnvidia-nvvm.so.4.0.0 755 usr/lib
|
|
ln -sf libnvidia-nvvm.so.4.0.0 \
|
|
${DESTDIR}/usr/lib/libnvidia-nvvm.so.4
|
|
ln -sf libnvidia-nvvm.so.4 \
|
|
${DESTDIR}/usr/lib/libnvidia-nvvm.so
|
|
|
|
# Libraries (64bit)
|
|
_install_libs usr/lib
|
|
cd 32
|
|
# Libraries (32bit)
|
|
_install_libs usr/lib32
|
|
}
|
|
|
|
nvidia-gtklibs_package() {
|
|
short_desc="${_desc} - GTK+ libraries"
|
|
pkg_install() {
|
|
vmove "usr/lib/lib*gtk*.so*"
|
|
}
|
|
}
|
|
|
|
nvidia-libs-32bit_package() {
|
|
short_desc="${_desc} - common libraries (32bit)"
|
|
# manually set 32bit depends for libglvnd
|
|
depends="glibc-32bit>=0 libX11-32bit>=0 libXext-32bit>=0 libglvnd-32bit>=0"
|
|
repository="multilib/nonfree"
|
|
pkg_install() {
|
|
vmove usr/lib32
|
|
}
|
|
}
|
|
|
|
nvidia-libs_package() {
|
|
short_desc="${_desc} - common libraries"
|
|
depends="libglvnd"
|
|
nostrip_files="gsp.bin"
|
|
pkg_install() {
|
|
vmove usr/lib
|
|
}
|
|
}
|
|
|
|
nvidia-dkms_package() {
|
|
short_desc="${_desc} - DKMS kernel module"
|
|
depends="dkms xbps-triggers>=0.121_1"
|
|
dkms_modules="nvidia ${version}"
|
|
# dkms must be before initramfs-regenerate to build modules before images
|
|
triggers="dkms initramfs-regenerate"
|
|
|
|
pkg_install() {
|
|
vmove usr/src
|
|
vmove usr/lib/modprobe.d
|
|
}
|
|
}
|
|
|
|
nvidia-opencl_package() {
|
|
short_desc="${_desc} - OpenCL implementation"
|
|
depends="ocl-icd"
|
|
pkg_install() {
|
|
vmove "usr/lib/libnvidia-compiler*"
|
|
vmove "usr/lib/libnvidia-opencl*"
|
|
vmove etc/OpenCL
|
|
}
|
|
}
|