# $Id$ # Maintainer: jcstryker # Contributor: Sven-Hendrik Haase # Contributor: Felix Yan # Contributor: Thomas Baechler # Contributor: James Rayner # Contributor: Alex Luberg pkgbase=nvidia-vulkan pkgname=('nvidia-vulkan' 'nvidia-vulkan-dkms' 'nvidia-vulkan-utils' 'opencl-nvidia-vulkan' 'lib32-nvidia-vulkan-utils' 'lib32-opencl-nvidia-vulkan') pkgver=535.43.09 pkgrel=1 pkgdesc="NVIDIA drivers for linux (vulkan developer branch)" arch=('x86_64') url="https://developer.nvidia.com/vulkan-driver" makedepends=('libglvnd' 'linux' 'linux-headers') license=('custom') options=('!strip') _pkg="NVIDIA-Linux-x86_64-${pkgver}" source=("${_pkg}.run::https://developer.nvidia.com/downloads/vulkan-beta-${pkgver//.}-linux" 'nvidia-drm-outputclass.conf' 'nvidia-vulkan-utils.sysusers' 'nvidia.rules') sha512sums=('790ad0f39f5f34ba28ee028601d60e28d1e17a8cc0ef64e06e5b3570d661d15404bce7a835e75464023e3b8a8154a9f22de592518016bfc5e137b6d09215f7ba' 'de7116c09f282a27920a1382df84aa86f559e537664bb30689605177ce37dc5067748acf9afd66a3269a6e323461356592fdfc624c86523bf105ff8fe47d3770' '4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499' '68c9ac6444cdb3c637eee4135cf1a5a137a233ab12e682e3dbe5b3db6e704907b2759567e99f13026f1e33d8ccc78f3dad12d471cc2ddf9c3d4370697dc169e9') create_links() { # create soname links find "$pkgdir" -type f -name '*.so*' ! -path '*xorg/*' -print0 | while read -d $'\0' _lib; do _soname=$(dirname "${_lib}")/$(readelf -d "${_lib}" | grep -Po 'SONAME.*: \[\K[^]]*' || true) _base=$(echo ${_soname} | sed -r 's/(.*).so.*/\1.so/') [[ -e "${_soname}" ]] || ln -s $(basename "${_lib}") "${_soname}" [[ -e "${_base}" ]] || ln -s $(basename "${_soname}") "${_base}" done } prepare() { sh "${_pkg}.run" --extract-only cd "${_pkg}" bsdtar -xf nvidia-persistenced-init.tar.bz2 # Thanks frogs - https://github.com/Frogging-Family/nvidia-all/blob/master/patches #patch -Np1 -i ../kernel-5.16-std.diff #patch -Np1 -i ../kernel-5.17.patch # Fixing regex pattern for Module.symvers sed -i "s/${TAB}vmlinux/${TAB}*vmlinux/g" kernel/conftest.sh sed -i "s/TAB=' '/TAB='\\\t'/g" kernel/conftest.sh sed -i "s/static int nv_drm_vma_fault(struct vm_fault \*vmf)/#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)\nstatic int nv_drm_vma_fault(struct vm_fault \*vmf)\n#else\nstatic vm_fault_t nv_drm_vma_fault(struct vm_fault \*vmf)\n#endif/g" kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c cp -a kernel kernel-dkms cd kernel-dkms sed -i "s/__VERSION_STRING/${pkgver}/" dkms.conf sed -i 's/__JOBS/`nproc`/' dkms.conf sed -i 's/__DKMS_MODULES//' dkms.conf sed -i '$iBUILT_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"' dkms.conf # Gift for linux-rt guys sed -i 's/NV_EXCLUDE_BUILD_MODULES/IGNORE_PREEMPT_RT_PRESENCE=1 NV_EXCLUDE_BUILD_MODULES/' dkms.conf } build() { cd "${_pkg}"/kernel make SYSSRC=/usr/src/linux module } package_nvidia-vulkan() { pkgdesc="NVIDIA drivers for linux (vulkan developer branch)" depends=('linux' "nvidia-vulkan-utils=${pkgver}" 'libglvnd') provides=("NVIDIA-MODULE" "nvidia=$pkgver") conflicts+=('nvidia') _extradir="/usr/lib/modules/$(