diff options
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | 0001-nvidia-beta-dkms-change-dkms-conf.patch | 27 | ||||
-rw-r--r-- | 0002-nvidia-beta-dkms-linux-rt-gift.patch | 12 | ||||
-rw-r--r-- | FS62142.patch | 12 | ||||
-rw-r--r-- | PKGBUILD | 53 |
5 files changed, 81 insertions, 31 deletions
@@ -1,7 +1,7 @@ pkgbase = nvidia-beta-dkms pkgdesc = NVIDIA driver sources for linux (beta version) pkgver = 430.14 - pkgrel = 1 + pkgrel = 2 url = https://www.nvidia.com/ arch = x86_64 license = custom @@ -16,7 +16,13 @@ pkgbase = nvidia-beta-dkms provides = nvidia-beta=430.14 conflicts = nvidia source = https://us.download.nvidia.com/XFree86/Linux-x86_64/430.14/NVIDIA-Linux-x86_64-430.14-no-compat32.run + source = FS62142.patch + source = 0001-nvidia-beta-dkms-change-dkms-conf.patch + source = 0002-nvidia-beta-dkms-linux-rt-gift.patch sha256sums = 0f583a277b1731cb8327510b75dba9cf7adf5c781247e4f48bcc9f358253278f + sha256sums = c961006882afb691410c017c239e2c2ef61badb88f15735d37112b513ef0a99d + sha256sums = 066045f1e5bd25f5488ab37c2ad13e12c7827d2439569ef5c26826c92dfa4250 + sha256sums = 25e29ee166552523366278d94ba69a7895cd50321cf402a9f69598b16a9e2827 pkgname = nvidia-beta-dkms diff --git a/0001-nvidia-beta-dkms-change-dkms-conf.patch b/0001-nvidia-beta-dkms-change-dkms-conf.patch new file mode 100644 index 000000000000..17174bdebbcf --- /dev/null +++ b/0001-nvidia-beta-dkms-change-dkms-conf.patch @@ -0,0 +1,27 @@ +diff -Naurp a/kernel/dkms.conf b/kernel/dkms.conf +--- a/kernel/dkms.conf 2019-04-02 04:06:42.000000000 +0000 ++++ b/kernel/dkms.conf 2019-06-08 20:12:02.000000000 +0000 +@@ -1,12 +1,20 @@ + PACKAGE_NAME="nvidia" +-PACKAGE_VERSION="__VERSION_STRING" ++PACKAGE_VERSION="430.14" + 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' -j__JOBS NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} IGNORE_CC_MISMATCH='__IGNORE_CC_MISMATCH' modules" ++MAKE[0]="'make' -j`nproc` NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} IGNORE_CC_MISMATCH='__IGNORE_CC_MISMATCH' modules" + + # The list of kernel modules will be generated by nvidia-installer at runtime. +-__DKMS_MODULES ++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/0002-nvidia-beta-dkms-linux-rt-gift.patch b/0002-nvidia-beta-dkms-linux-rt-gift.patch new file mode 100644 index 000000000000..55cca8a03665 --- /dev/null +++ b/0002-nvidia-beta-dkms-linux-rt-gift.patch @@ -0,0 +1,12 @@ +diff -Naurp a/kernel/dkms.conf b/kernel/dkms.conf +--- a/kernel/dkms.conf 2019-06-08 20:12:02.000000000 +0000 ++++ b/kernel/dkms.conf 2019-06-08 20:14:45.000000000 +0000 +@@ -6,7 +6,7 @@ AUTOINSTALL="yes" + # 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' -j`nproc` NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} IGNORE_CC_MISMATCH='__IGNORE_CC_MISMATCH' modules" ++MAKE[0]="'make' -j`nproc` IGNORE_PREEMPT_RT_PRESENCE=1 NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} IGNORE_CC_MISMATCH='__IGNORE_CC_MISMATCH' modules" + + # The list of kernel modules will be generated by nvidia-installer at runtime. + BUILT_MODULE_NAME[0]="nvidia" diff --git a/FS62142.patch b/FS62142.patch new file mode 100644 index 000000000000..887f3366723e --- /dev/null +++ b/FS62142.patch @@ -0,0 +1,12 @@ +diff -Naurp a/kernel/nvidia/nv-dma.c b/kernel/nvidia/nv-dma.c +--- a/kernel/nvidia/nv-dma.c 2019-05-08 01:37:30.000000000 +0000 ++++ b/kernel/nvidia/nv-dma.c 2019-06-08 18:33:00.000000000 +0000 +@@ -613,7 +613,7 @@ static NvBool nv_dma_is_map_resource_imp + #endif + } + +- return (ops->map_resource != NULL); ++ return (ops && ops->map_resource); + #else + return NV_FALSE; + #endif @@ -10,7 +10,7 @@ pkgname=nvidia-beta-dkms pkgver=430.14 -pkgrel=1 +pkgrel=2 pkgdesc='NVIDIA driver sources for linux (beta version)' arch=('x86_64') url='https://www.nvidia.com/' @@ -21,48 +21,41 @@ optdepends=('linux-headers: build the module for Arch kernel' 'linux-lts-headers: build the module for LTS Arch kernel') provides=("nvidia=${pkgver}" "nvidia-dkms=${pkgver}" "nvidia-beta=${pkgver}") conflicts=('nvidia') -_srcname="NVIDIA-Linux-${CARCH}-${pkgver}-no-compat32" -source=("https://us.download.nvidia.com/XFree86/Linux-${CARCH}/${pkgver}/${_srcname}.run") -sha256sums=('0f583a277b1731cb8327510b75dba9cf7adf5c781247e4f48bcc9f358253278f') +_pkg="NVIDIA-Linux-${CARCH}-${pkgver}-no-compat32" +source=("https://us.download.nvidia.com/XFree86/Linux-${CARCH}/${pkgver}/${_pkg}.run" + 'FS62142.patch' + '0001-nvidia-beta-dkms-change-dkms-conf.patch' + '0002-nvidia-beta-dkms-linux-rt-gift.patch') +sha256sums=('0f583a277b1731cb8327510b75dba9cf7adf5c781247e4f48bcc9f358253278f' + 'c961006882afb691410c017c239e2c2ef61badb88f15735d37112b513ef0a99d' + '066045f1e5bd25f5488ab37c2ad13e12c7827d2439569ef5c26826c92dfa4250' + '25e29ee166552523366278d94ba69a7895cd50321cf402a9f69598b16a9e2827') prepare() { # extract the source file - [ -d "$_srcname" ] && rm -rf "$_srcname" - printf '%s\n' " -> Self-Extracting ${_srcname}.run..." - sh "${_srcname}.run" --extract-only + [ -d "$_pkg" ] && rm -rf "$_pkg" + printf '%s\n' " -> Self-Extracting ${_pkg}.run..." + sh "${_pkg}.run" --extract-only - # update dkms.conf - cd "${_srcname}/kernel" - 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 + cd "$_pkg" + patch -Np1 -i "${srcdir}/0001-nvidia-beta-dkms-change-dkms-conf.patch" + patch -Np1 -i "${srcdir}/0002-nvidia-beta-dkms-linux-rt-gift.patch" + + # fix https://bugs.archlinux.org/task/62142 + patch -Np1 -i "${srcdir}/FS62142.patch" } package() { - cd "${_srcname}/kernel" + cd "$_pkg" - # directories creation - install -d "${pkgdir}/usr/lib/modprobe.d/" - install -d "${pkgdir}/usr/src/nvidia-${pkgver}/" + mkdir -p "${pkgdir}/usr/src" # install - cp -dr --no-preserve='ownership' * "${pkgdir}/usr/src/nvidia-${pkgver}/" + cp -dr --no-preserve='ownership' kernel "${pkgdir}/usr/src/nvidia-${pkgver}" # blacklist nouveau driver printf '%s\n' 'blacklist nouveau' | install -D -m644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/nvidia.conf" # license - cd "${srcdir}/${_srcname}" - install -D -m644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}" + install -D -m644 "${srcdir}/${_pkg}/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}" } |