# $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=440.66.12 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/vulkan-beta-${pkgver//.}-linux" 'nvidia-drm-outputclass.conf' 'nvidia-vulkan-utils.sysusers' 'kernel-5.6.patch') sha512sums=('5c62d482369d935af4d76e03315522b1422a32b51a5db908fbe335a028a363a1c5143066e756621bd51f1c0cb411a1affafd056ab763e7b589d6b20280fa08c1' 'de7116c09f282a27920a1382df84aa86f559e537664bb30689605177ce37dc5067748acf9afd66a3269a6e323461356592fdfc624c86523bf105ff8fe47d3770' '4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499' 'a622f4d784103d58f30c584976060ba499f794a0852c469da202314842495bdfbbcae8a510b534eec4477590a1181cae1b98d239a54a60ef2bd752b6ca8ebd1b') 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 # https://gitlab.com/snippets/1945940 (Thanks to https://gitlab.com/EULA) patch -Np1 -i ../kernel-5.6.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=$pkgver") conflicts+=('nvidia') _extradir="/usr/lib/modules/$(