summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Stryker2018-07-09 12:00:48 -0400
committerJason Stryker2018-07-09 12:00:48 -0400
commit1a52dbe16e0dc3fd262a7ba1e2f73e10aa5dc873 (patch)
treed732e73290623d89b18fc4bc44aa1538870b74ab
parent8193ae229a8feaf95122e20eb0388642a9ca6298 (diff)
downloadaur-1a52dbe16e0dc3fd262a7ba1e2f73e10aa5dc873.tar.gz
major rewrite based on official Arch PKGBUILDs
-rw-r--r--.SRCINFO128
-rw-r--r--10-nvidia-drm-outputclass.conf6
-rw-r--r--20-nvidia.conf4
-rw-r--r--PKGBUILD706
-rw-r--r--kernel-4.16.patch33
-rw-r--r--nvidia-drm-outputclass.conf15
-rw-r--r--nvidia-utils-vulkan.install10
-rw-r--r--nvidia-vulkan-utils.install7
-rw-r--r--nvidia-vulkan-utils.sysusers1
-rw-r--r--nvidia-vulkan.install46
10 files changed, 379 insertions, 577 deletions
diff --git a/.SRCINFO b/.SRCINFO
index b96c67e3fe2..fcee5e48894 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,107 +1,83 @@
pkgbase = nvidia-vulkan
+ pkgdesc = NVIDIA drivers for linux (vulkan developer branch)
pkgver = 396.24.02
- pkgrel = 2
+ pkgrel = 3
url = https://developer.nvidia.com/vulkan-driver
arch = x86_64
- license = custom:NVIDIA
- makedepends = linux-headers
+ license = custom
+ makedepends = libglvnd
+ makedepends = linux
+ makedepends = linux-headers>=4.17
+ makedepends = linux-headers<4.18
options = !strip
source = NVIDIA-Linux-x86_64-396.24.02.run::https://developer.nvidia.com/linux-3962402
- source = 10-nvidia-drm-outputclass.conf
- source = 20-nvidia.conf
- md5sums = 2beac36fcc0e5ad7138a980395ab2f4e
- md5sums = 4f5562ee8f3171769e4638b35396c55d
- md5sums = 2640eac092c220073f0668a7aaff61f7
+ source = nvidia-drm-outputclass.conf
+ source = nvidia-vulkan-utils.sysusers
+ source = kernel-4.16.patch
+ sha512sums = 433c3afdf58da579ae24600fd3ecd08c409a165e9bdd71aaecd1c06f3a507cf3dc162e9d17c06391fea421eb456cc170b2c1bbda2395d8cdc72b2bb88a68bf26
+ sha512sums = c49d246a519731bfab9d22afa5c2dd2d366db06d80182738b84881e93cd697c783f16ee04819275c05597bb063451a5d6102fbc562cd078d2a374533a23cea48
+ sha512sums = 4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499
+ sha512sums = ad1185d998adbf89abf7aea300e5b3bbabe2296016f42592fbc232a6c3983f233df1103d37f35a041f12cc1c722d3edce813a4a1b215784a49c7f0e3e652b5af
pkgname = nvidia-vulkan
- pkgdesc = NVIDIA driver package for Arch's official 'linux' package (driver, utilities, and libraries) (vulkan developer branch)
- install = nvidia-vulkan.install
- depends = linux
- depends = nvidia-utils-vulkan>=396.24.02
- depends = libgl
- provides = nvidia=396.24.02
- conflicts = nvidia-96xx
- conflicts = nvidia-173xx
+ pkgdesc = NVIDIA drivers for linux (vulkan developer branch)
+ depends = linux>=4.17
+ depends = linux<4.18
+ depends = nvidia-vulkan-utils=396.24.02
+ depends = libglvnd
+ provides = nvidia-vulkan=396.24.02
+ conflicts =
conflicts = nvidia
-pkgname = nvidia-utils-vulkan
- pkgdesc = NVIDIA driver utilities and libraries for 'nvidia-vulkan'
- install = nvidia-utils-vulkan.install
+pkgname = nvidia-vulkan-dkms
+ pkgdesc = NVIDIA driver sources for linux (vulkan developer branch)
+ depends = dkms
+ depends = nvidia-vulkan-utils=396.24.02
+ depends = libglvnd
+ optdepends = linux-headers: Build the module for Arch kernel
+ optdepends = linux-lts-headers: Build the module for LTS Arch kernel
+ provides = nvidia-vulkan=396.24.02
+ conflicts =
+ conflicts = nvidia
+
+pkgname = nvidia-vulkan-utils
+ pkgdesc = NVIDIA drivers utilities
+ install = nvidia-vulkan-utils.install
depends = xorg-server
- depends = mesa>=17.0.2-2
- optdepends = gtk2: nvidia-settings (GTK+ v2)
- optdepends = gtk3: nvidia-settings (GTK+ v3)
- optdepends = opencl-nvidia-vulkan: OpenCL support
+ depends = libglvnd
+ depends = egl-wayland
+ optdepends = nvidia-settings: configuration tool
optdepends = xorg-server-devel: nvidia-xconfig
- optdepends = egl-wayland-git: for alternative, more advanced Wayland library (libnvidia-egl-wayland.so.1.0.3)
- provides = nvidia-utils=396.24.02
- provides = nvidia-settings=396.24.02
- provides = libglvnd
+ optdepends = opencl-nvidia-vulkan: OpenCL support
provides = vulkan-driver
- conflicts = nvidia-utils
- conflicts = nvidia-settings
- conflicts = libglvnd
- backup = etc/X11/xorg.conf.d/20-nvidia.conf
-
-pkgname = nvidia-egl-wayland-vulkan
- pkgdesc = NVIDIA EGL Wayland library (libnvidia-egl-wayland.so.1.0.3) for 'nvidia-utils-vulkan'
- depends = nvidia-utils-vulkan
- provides = egl-wayland
- conflicts = egl-wayland
-
-pkgname = nvidia-libgl-vulkan
- pkgdesc = NVIDIA driver library symlinks for 'nvidia-utils-vulkan'
- depends = nvidia-utils-vulkan
- provides = nvidia-libgl=396.24.02
- provides = libgl
- provides = libegl
- provides = libgles
+ provides = opengl-driver
+ provides = nvidia-libgl
conflicts = nvidia-libgl
- conflicts = libgl
- conflicts = libegl
- conflicts = libgles
+ replaces = nvidia-libgl
pkgname = opencl-nvidia-vulkan
- pkgdesc = NVIDIA's OpenCL implemention for 'nvidia-utils-vulkan'
+ pkgdesc = OpenCL implemention for NVIDIA
depends = zlib
optdepends = opencl-headers: headers necessary for OpenCL development
- provides = opencl-nvidia=396.24.02
provides = opencl-driver
- conflicts = opencl-nvidia
-pkgname = lib32-nvidia-utils-vulkan
- pkgdesc = NVIDIA driver utilities and libraries for 'nvidia-vulkan' (32-bit)
+pkgname = lib32-nvidia-vulkan-utils
+ pkgdesc = NVIDIA drivers utilities (32-bit)
depends = lib32-zlib
depends = lib32-gcc-libs
- depends = nvidia-utils-vulkan
- depends = lib32-mesa>=17.0.2-1
- optdepends = lib32-opencl-nvidia-vulkan: OpenCL support
- provides = lib32-nvidia-utils=396.24.02
- provides = lib32-libglvnd
+ depends = lib32-libglvnd
+ depends = nvidia-vulkan-utils
+ optdepends = lib32-opencl-nvidia-vulkan
provides = lib32-vulkan-driver
- conflicts = lib32-nvidia-utils
- conflicts = lib32-libglvnd
-
-pkgname = lib32-nvidia-libgl-vulkan
- pkgdesc = NVIDIA driver library symlinks for 'lib32-nvidia-utils-vulkan'
- depends = lib32-nvidia-utils-vulkan
- depends = nvidia-libgl-vulkan
- provides = lib32-nvidia-libgl=396.24.02
- provides = lib32-libgl
- provides = lib32-libegl
- provides = lib32-libgles
+ provides = lib32-opengl-driver
+ provides = lib32-nvidia-libgl
conflicts = lib32-nvidia-libgl
- conflicts = lib32-libgl
- conflicts = lib32-libegl
- conflicts = lib32-libgles
- replaces = lib32-nvidia-utils<=313.26-1
+ replaces = lib32-nvidia-libgl
pkgname = lib32-opencl-nvidia-vulkan
- pkgdesc = NVIDIA's OpenCL implemention for 'lib32-nvidia-utils-vulkan'
+ pkgdesc = OpenCL implemention for NVIDIA (32-bit)
depends = lib32-zlib
depends = lib32-gcc-libs
optdepends = opencl-headers: headers necessary for OpenCL development
- provides = lib32-opencl-nvidia=396.24.02
provides = lib32-opencl-driver
- conflicts = lib32-opencl-nvidia
diff --git a/10-nvidia-drm-outputclass.conf b/10-nvidia-drm-outputclass.conf
deleted file mode 100644
index 6a01fba8cfc..00000000000
--- a/10-nvidia-drm-outputclass.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-Section "OutputClass"
- Identifier "nvidia"
- MatchDriver "nvidia-drm"
- Driver "nvidia"
- ModulePath "/usr/lib/nvidia/xorg"
-EndSection
diff --git a/20-nvidia.conf b/20-nvidia.conf
deleted file mode 100644
index 8b8e26863c9..00000000000
--- a/20-nvidia.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-Section "Device"
- Identifier "Default Nvidia Device"
- Option "NoLogo" "True"
-EndSection
diff --git a/PKGBUILD b/PKGBUILD
index 02fb1deaf3a..bb3baefe289 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,475 +1,311 @@
+# $Id$
# Maintainer: jcstryker <inbox at jasonstryker dot com>
-# Contributor: Det <nimetonmaili g-mail>
+# Contributor: Sven-Hendrik Haase <sh@lutzhaase.com>
+# Contributor: Felix Yan <felixonmars@archlinux.org>
+# Contributor: Thomas Baechler <thomas@archlinux.org>
+# Contributor: James Rayner <iphitus@gmail.com>
-pkgname=('nvidia-vulkan' 'nvidia-utils-vulkan' 'nvidia-egl-wayland-vulkan' 'nvidia-libgl-vulkan' 'opencl-nvidia-vulkan'
- 'lib32-nvidia-utils-vulkan' 'lib32-nvidia-libgl-vulkan' 'lib32-opencl-nvidia-vulkan')
+pkgbase=nvidia-vulkan
+pkgname=('nvidia-vulkan' 'nvidia-vulkan-dkms' 'nvidia-vulkan-utils' 'opencl-nvidia-vulkan' 'lib32-nvidia-vulkan-utils' 'lib32-opencl-nvidia-vulkan')
pkgver=396.24.02
-pkgrel=2
+_extramodules=extramodules-4.17-ARCH
+pkgrel=3
+pkgdesc="NVIDIA drivers for linux (vulkan developer branch)"
arch=('x86_64')
url="https://developer.nvidia.com/vulkan-driver"
-license=('custom:NVIDIA')
-makedepends=('linux-headers')
+makedepends=('libglvnd' 'linux' 'linux-headers>=4.17' 'linux-headers<4.18')
+license=('custom')
options=('!strip')
-
-# Installer name
-_pkg="NVIDIA-Linux-x86_64-$pkgver"
-
-# Source
-source=("NVIDIA-Linux-x86_64-$pkgver.run::https://developer.nvidia.com/linux-3962402"
- '10-nvidia-drm-outputclass.conf'
- '20-nvidia.conf')
-md5sums=('2beac36fcc0e5ad7138a980395ab2f4e'
- '4f5562ee8f3171769e4638b35396c55d'
- '2640eac092c220073f0668a7aaff61f7')
-
-# Patch
-#source+=('linux-4.11.patch')
-#md5sums+=('cc8941b6898d9daa0fb67371f57a56b6')
-
-# Auto-add *.patch files from $startdir to source=()
-for _patch in $(find "$startdir" -maxdepth 1 -name '*.patch' -printf "%f\n"); do
- # Don't duplicate already listed ones
- if [[ ! " ${source[@]} " =~ " $_patch " ]]; then # https://stackoverflow.com/a/15394738/1821548
- source+=("$_patch")
- md5sums+=('SKIP')
- fi
-done
-
-_create_links() {
- # create missing soname links
- for _lib in $(find "$pkgdir" -name '*.so*' | grep -v 'xorg/'); do
- # Get soname/base name
- _soname=$(dirname "$_lib")/$(readelf -d "$_lib" | grep -Po 'SONAME.*: \[\K[^]]*' || true)
- _base=$(echo "$_soname" | sed -r 's/(.*).so.*/\1.so/')
-
- # Create missing links
- [[ -e $_soname ]] || ln -s $(basename "$_lib") "$_soname"
- [[ -e $_base ]] || ln -s $(basename "$_soname") "$_base"
- done
+_pkg="NVIDIA-Linux-x86_64-${pkgver}"
+source=("NVIDIA-Linux-x86_64-${pkgver}.run::https://developer.nvidia.com/linux-3962402"
+ 'nvidia-drm-outputclass.conf'
+ 'nvidia-vulkan-utils.sysusers'
+ 'kernel-4.16.patch')
+sha512sums=('433c3afdf58da579ae24600fd3ecd08c409a165e9bdd71aaecd1c06f3a507cf3dc162e9d17c06391fea421eb456cc170b2c1bbda2395d8cdc72b2bb88a68bf26'
+ 'c49d246a519731bfab9d22afa5c2dd2d366db06d80182738b84881e93cd697c783f16ee04819275c05597bb063451a5d6102fbc562cd078d2a374533a23cea48'
+ '4b3ad73f5076ba90fe0b3a2e712ac9cde76f469cd8070280f960c3ce7dc502d1927f525ae18d008075c8f08ea432f7be0a6c3a7a6b49c361126dcf42f97ec499'
+ 'ad1185d998adbf89abf7aea300e5b3bbabe2296016f42592fbc232a6c3983f233df1103d37f35a041f12cc1c722d3edce813a4a1b215784a49c7f0e3e652b5af')
+
+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() {
- # Remove previous builds
- [[ -d $_pkg ]] && rm -rf $_pkg
-
- # Extract
- msg2 "Self-Extracting $_pkg.run..."
- sh $_pkg.run -x
- cd $_pkg
- bsdtar -xf nvidia-persistenced-init.tar.bz2
-
- # Kernel version (e.g. 4.15.0-1-ARCH)
- _kernel=$(cat /usr/lib/modules/extramodules-*-ARCH/version)
-
- # Loop patches (linux-4.15.patch, lol.patch, ...)
- for _p in $(printf -- '%s\n' ${source[@]} | grep .patch); do # https://stackoverflow.com/a/21058239/1821548
- # Patch version (4.15, "", ...)
- _patch=$(echo $_p | grep -Po "\d+\.\d+")
-
- # Compare versions
- if (( $(vercmp "$_kernel" "$_patch") >= 0 )); then
- msg2 "Applying $_p..."
- patch -p1 -i "$srcdir"/$_p
- else
- msg2 "Skipping $_p..." # List these, instead of ignoring silently
- fi
- done
+ sh "${_pkg}.run" --extract-only
+ cd "${_pkg}"
+
+ # Restore phys_to_dma support (still needed for 396.18)
+ # https://bugs.archlinux.org/task/58074
+ patch -Np1 -i ../kernel-4.16.patch
+
+ bsdtar -xf nvidia-persistenced-init.tar.bz2
+
+ sed -i 's/__NV_VK_ICD__/libGLX_nvidia.so.0/' nvidia_icd.json.template
+
+ 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() {
- # Version of 'linux'
- _kernel=$(cat /usr/lib/modules/extramodules-*-ARCH/version)
-
- # Build module
- cd $_pkg/kernel
- msg2 "Building Nvidia module for $_kernel..."
- make SYSSRC=/usr/lib/modules/$_kernel/build module
+ _kernver="$(cat /usr/lib/modules/${_extramodules}/version)"
+ cd "${_pkg}"/kernel
+ make SYSSRC=/usr/lib/modules/"${_kernver}/build" module
}
-package_opencl-nvidia-vulkan() {
- pkgdesc="NVIDIA's OpenCL implemention for 'nvidia-utils-vulkan'"
- depends=('zlib')
- optdepends=('opencl-headers: headers necessary for OpenCL development')
- provides=("opencl-nvidia=$pkgver" 'opencl-driver')
- conflicts=('opencl-nvidia')
- cd $_pkg
-
- # OpenCL
- install -Dm644 nvidia.icd "$pkgdir"/etc/OpenCL/vendors/nvidia.icd
- install -Dm755 libnvidia-compiler.so.$pkgver "$pkgdir"/usr/lib/libnvidia-compiler.so.$pkgver
- install -Dm755 libnvidia-opencl.so.$pkgver "$pkgdir"/usr/lib/libnvidia-opencl.so.$pkgver
-
- # create missing soname links
- _create_links
-
- # License (link)
- install -d "$pkgdir"/usr/share/licenses/
- ln -s nvidia/ "$pkgdir"/usr/share/licenses/opencl-nvidia
-}
+package_nvidia-vulkan() {
+ pkgdesc="NVIDIA drivers for linux (vulkan developer branch)"
+ depends=('linux>=4.17' 'linux<4.18' "nvidia-vulkan-utils=${pkgver}" 'libglvnd')
+ provides=("nvidia-vulkan=$pkgver")
+ conflicts+=('nvidia')
+
+ install -Dt "${pkgdir}/usr/lib/modules/${_extramodules}" -m644 \
+ "${srcdir}/${_pkg}/kernel"/nvidia{,-modeset,-drm,-uvm}.ko
-package_nvidia-libgl-vulkan() {
- pkgdesc="NVIDIA driver library symlinks for 'nvidia-utils-vulkan'"
- depends=('nvidia-utils-vulkan')
- provides=("nvidia-libgl=$pkgver" 'libgl' 'libegl' 'libgles')
- conflicts=('nvidia-libgl' 'libgl' 'libegl' 'libgles')
- cd $_pkg
+ find "${pkgdir}" -name '*.ko' -exec gzip -n {} +
- mkdir -p "${pkgdir}/usr/lib/"
+ echo "blacklist nouveau" |
+ install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/${pkgname}.conf"
- # libGL (link)
- ln -s /usr/lib/nvidia/libGL.so.1.7.0 "$pkgdir"/usr/lib/libGL.so.1
- ln -s libGL.so.1 "$pkgdir"/usr/lib/libGL.so
+ install -Dt "${pkgdir}/usr/share/licenses/${pkgname}" -m644 "${srcdir}/${_pkg}/LICENSE"
+}
+
+package_nvidia-vulkan-dkms() {
+ pkgdesc="NVIDIA driver sources for linux (vulkan developer branch)"
+ depends=('dkms' "nvidia-vulkan-utils=${pkgver}" 'libglvnd')
+ optdepends=('linux-headers: Build the module for Arch kernel'
+ 'linux-lts-headers: Build the module for LTS Arch kernel')
+ provides=("nvidia-vulkan=$pkgver")
+ conflicts+=('nvidia')
- # EGL (link)
- ln -s /usr/lib/nvidia/libEGL.so.1.1.0 "$pkgdir"/usr/lib/libEGL.so.1
- ln -s libEGL.so.1 "$pkgdir"/usr/lib/libEGL.so
+ cd ${_pkg}
- # OpenGL ES 1 (link)
- ln -s /usr/lib/nvidia/libGLESv1_CM.so.1.2.0 "$pkgdir"/usr/lib/libGLESv1_CM.so.1
- ln -s libGLESv1_CM.so.1 "$pkgdir"/usr/lib/libGLESv1_CM.so
+ install -dm 755 "${pkgdir}"/usr/src
+ cp -dr --no-preserve='ownership' kernel-dkms "${pkgdir}/usr/src/nvidia-${pkgver}"
- # OpenGL ES 2 (link)
- ln -s /usr/lib/nvidia/libGLESv2.so.2.1.0 "$pkgdir"/usr/lib/libGLESv2.so.2
- ln -s libGLESv2.so.2 "$pkgdir"/usr/lib/libGLESv2.so
+ echo "blacklist nouveau" |
+ install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/${pkgname}.conf"
- # License (link)
- install -d "$pkgdir"/usr/share/licenses/
- ln -s nvidia/ "$pkgdir"/usr/share/licenses/nvidia-libgl
+ install -Dt "${pkgdir}/usr/share/licenses/${pkgname}" -m644 "${srcdir}/${_pkg}/LICENSE"
}
-package_nvidia-egl-wayland-vulkan() {
- pkgdesc="NVIDIA EGL Wayland library (libnvidia-egl-wayland.so.1.0.3) for 'nvidia-utils-vulkan'"
- depends=('nvidia-utils-vulkan')
- provides=('egl-wayland')
- conflicts=('egl-wayland')
- cd $_pkg
+package_opencl-nvidia-vulkan() {
+ pkgdesc="OpenCL implemention for NVIDIA"
+ depends=('zlib')
+ optdepends=('opencl-headers: headers necessary for OpenCL development')
+ provides=('opencl-driver')
+ cd "${_pkg}"
+
+ # OpenCL
+ install -D -m644 nvidia.icd "${pkgdir}/etc/OpenCL/vendors/nvidia.icd"
+ install -D -m755 "libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-compiler.so.${pkgver}"
+ install -D -m755 "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-opencl.so.${pkgver}"
- install -Dm755 libnvidia-egl-wayland.so.1.0.3 "$pkgdir"/usr/lib/libnvidia-egl-wayland.so.1.0.3
- ln -s libnvidia-egl-wayland.so.1.0.3 "$pkgdir"/usr/lib/libnvidia-egl-wayland.so.1
-}
+ create_links
-package_nvidia-utils-vulkan() {
- pkgdesc="NVIDIA driver utilities and libraries for 'nvidia-vulkan'"
- depends=('xorg-server' 'mesa>=17.0.2-2')
- optdepends=('gtk2: nvidia-settings (GTK+ v2)'
- 'gtk3: nvidia-settings (GTK+ v3)'
- 'opencl-nvidia-vulkan: OpenCL support'
- 'xorg-server-devel: nvidia-xconfig'
- 'egl-wayland-git: for alternative, more advanced Wayland library (libnvidia-egl-wayland.so.1.0.3)')
- provides=("nvidia-utils=$pkgver" "nvidia-settings=$pkgver" 'libglvnd' 'vulkan-driver')
- conflicts=('nvidia-utils' 'nvidia-settings' 'libglvnd')
- backup=('etc/X11/xorg.conf.d/20-nvidia.conf')
- install=$pkgname.install
- cd $_pkg
-
- # X driver
- install -Dm755 nvidia_drv.so "$pkgdir"/usr/lib/xorg/modules/drivers/nvidia_drv.so
-
- # GLX extension for X
- install -Dm755 libglx.so.$pkgver "$pkgdir"/usr/lib/nvidia/xorg/libglx.so.$pkgver
- ln -s libglx.so.$pkgver "$pkgdir"/usr/lib/nvidia/xorg/libglx.so.1 # X doesn't find glx otherwise
- ln -s libglx.so.$pkgver "$pkgdir"/usr/lib/nvidia/xorg/libglx.so # X doesn't find glx otherwise
-
- # libGL & OpenGL
- install -Dm755 libGL.so.1.7.0 "$pkgdir"/usr/lib/nvidia/libGL.so.1.7.0
- install -Dm755 libGLdispatch.so.0 "$pkgdir"/usr/lib/libGLdispatch.so.0
- install -Dm755 libnvidia-glcore.so.$pkgver "$pkgdir"/usr/lib/libnvidia-glcore.so.$pkgver
- install -Dm755 libOpenGL.so.0 "$pkgdir"/usr/lib/libOpenGL.so.0
- install -Dm755 libnvidia-glvkspirv.so.$pkgver "$pkgdir"/usr/lib/libnvidia-glvkspirv.so.$pkgver
-
- # GLX
- install -Dm755 libGLX.so.0 "$pkgdir"/usr/lib/libGLX.so.0
- install -Dm755 libGLX_nvidia.so.$pkgver "$pkgdir"/usr/lib/libGLX_nvidia.so.$pkgver
- # now in mesa driver
- #ln -s libGLX_nvidia.so.$pkgver "$pkgdir"/usr/lib/libGLX_indirect.so.0
-
- # EGL
- install -Dm755 libEGL.so.1.1.0 "$pkgdir"/usr/lib/nvidia/libEGL.so.1.1.0
- install -Dm755 libEGL_nvidia.so.$pkgver "$pkgdir"/usr/lib/libEGL_nvidia.so.$pkgver
- install -Dm755 libnvidia-eglcore.so.$pkgver "$pkgdir"/usr/lib/libnvidia-eglcore.so.$pkgver
- install -Dm644 10_nvidia.json "$pkgdir"/usr/share/glvnd/egl_vendor.d/10_nvidia.json
- install -Dm644 10_nvidia_wayland.json "$pkgdir"/usr/share/egl/egl_external_platform.d/10_nvidia_wayland.json
-
- # OpenGL ES
- install -Dm755 libGLESv1_CM.so.1.2.0 "$pkgdir"/usr/lib/nvidia/libGLESv1_CM.so.1.2.0
- install -Dm755 libGLESv1_CM_nvidia.so.$pkgver "$pkgdir"/usr/lib/libGLESv1_CM_nvidia.so.$pkgver
- install -Dm755 libGLESv2.so.2.1.0 "$pkgdir"/usr/lib/nvidia/libGLESv2.so.2.1.0
- install -Dm755 libGLESv2_nvidia.so.$pkgver "$pkgdir"/usr/lib/libGLESv2_nvidia.so.$pkgver
- install -Dm755 libnvidia-glsi.so.$pkgver "$pkgdir"/usr/lib/libnvidia-glsi.so.$pkgver
-
- # VDPAU (Video Decode and Presentation API for Unix)
- install -Dm755 libvdpau_nvidia.so.$pkgver "$pkgdir"/usr/lib/vdpau/libvdpau_nvidia.so.$pkgver
-
- # GPU-accelerated video encoding
- install -Dm755 libnvidia-encode.so.$pkgver "$pkgdir"/usr/lib/libnvidia-encode.so.$pkgver
-
- # GTK+ for nvidia-settings
- install -Dm755 libnvidia-gtk2.so.$pkgver "$pkgdir"/usr/lib/libnvidia-gtk2.so.$pkgver
- install -Dm755 libnvidia-gtk3.so.$pkgver "$pkgdir"/usr/lib/libnvidia-gtk3.so.$pkgver
-
- # Component of nvidia-xconfig
- install -Dm755 libnvidia-cfg.so.$pkgver "$pkgdir"/usr/lib/libnvidia-cfg.so.$pkgver
-
- # CUDA (Compute Unified Device Architecture) (perform traditional CPU calculations with the GPU)
- install -Dm755 libcuda.so.$pkgver "$pkgdir"/usr/lib/libcuda.so.$pkgver
- install -Dm755 libnvcuvid.so.$pkgver "$pkgdir"/usr/lib/libnvcuvid.so.$pkgver
-
- # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
- install -Dm755 libnvidia-ptxjitcompiler.so.$pkgver "$pkgdir"/usr/lib/libnvidia-ptxjitcompiler.so.$pkgver
-
- # Fat (multiarchitecture) binary loader
- install -Dm755 libnvidia-fatbinaryloader.so.$pkgver "$pkgdir"/usr/lib/libnvidia-fatbinaryloader.so.$pkgver
-
- # TLS (Thread local storage) support for OpenGL libs
- install -Dm755 libnvidia-tls.so.$pkgver "$pkgdir"/usr/lib/libnvidia-tls.so.$pkgver # Classic
- install -Dm755 tls/libnvidia-tls.so.$pkgver "$pkgdir"/usr/lib/tls/libnvidia-tls.so.$pkgver # New
-
- # GPU monitoring and management (1/2)
- install -Dm755 libnvidia-ml.so.$pkgver "$pkgdir"/usr/lib/libnvidia-ml.so.$pkgver
-
- # Vulkan icd
- install -Dm644 nvidia_icd.json.template "$pkgdir"/usr/share/vulkan/icd.d/nvidia_icd.json
- sed -i 's/__NV_VK_ICD__/libGLX_nvidia.so.0/' "$pkgdir"/usr/share/vulkan/icd.d/nvidia_icd.json
-
- # Helper libs for approved partners' GRID remote apps
- install -Dm755 libnvidia-ifr.so.$pkgver "$pkgdir"/usr/lib/libnvidia-ifr.so.$pkgver
- install -Dm755 libnvidia-fbc.so.$pkgver "$pkgdir"/usr/lib/libnvidia-fbc.so.$pkgver
-
- # Not required (https://bugs.archlinux.org/task/38604):
- # - libnvidia-wfb.so.$pkgver (provided by xorg-server: https://www.archlinux.org/packages/extra/x86_64/xorg-server/)
-
- # create missing soname links
- _create_links
-
-##### BINARIES AND MANPAGES #####
-
- # CUDA MPS (Multi Process Service)
- install -Dm755 nvidia-cuda-mps-control "$pkgdir"/usr/bin/nvidia-cuda-mps-control
- install -Dm644 nvidia-cuda-mps-control.1.gz "$pkgdir"/usr/share/man/man1/nvidia-cuda-mps-control.1.gz
- install -Dm755 nvidia-cuda-mps-server "$pkgdir"/usr/bin/nvidia-cuda-mps-server
-
- # For loading the kernel module and creating the character device files
- install -Dm4755 nvidia-modprobe "$pkgdir"/usr/bin/nvidia-modprobe
- install -Dm644 nvidia-modprobe.1.gz "$pkgdir"/usr/share/man/man1/nvidia-modprobe.1.gz
-
- # Daemon for maintaining persistent software state in the driver
- install -Dm755 nvidia-persistenced "$pkgdir"/usr/bin/nvidia-persistenced
- install -Dm644 nvidia-persistenced.1.gz "$pkgdir"/usr/share/man/man1/nvidia-persistenced.1.gz
- install -Dm644 nvidia-persistenced-init/systemd/nvidia-persistenced.service.template \
- "$pkgdir"/usr/lib/systemd/system/nvidia-persistenced.service
- sed -i 's/__USER__/nvidia-persistenced/' "$pkgdir"/usr/lib/systemd/system/nvidia-persistenced.service
-
- # GUI for configuring the driver
- install -Dm755 nvidia-settings "$pkgdir"/usr/bin/nvidia-settings
- install -Dm644 nvidia-settings.1.gz "$pkgdir"/usr/share/man/man1/nvidia-settings.1.gz
- install -Dm644 nvidia-settings.png "$pkgdir"/usr/share/pixmaps/nvidia-settings.png
- install -Dm644 nvidia-settings.desktop "$pkgdir"/usr/share/applications/nvidia-settings.desktop
- sed -e 's:__UTILS_PATH__:/usr/bin:' \
- -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' \
- -i "$pkgdir"/usr/share/applications/nvidia-settings.desktop
-
- # GPU monitoring and management (2/2)
- install -Dm755 nvidia-smi "$pkgdir"/usr/bin/nvidia-smi
- install -Dm644 nvidia-smi.1.gz "$pkgdir"/usr/share/man/man1/nvidia-smi.1.gz
-
- # Basic control over configuration options in the driver
- install -Dm755 nvidia-xconfig "$pkgdir"/usr/bin/nvidia-xconfig
- install -Dm644 nvidia-xconfig.1.gz "$pkgdir"/usr/share/man/man1/nvidia-xconfig.1.gz
-
- # Debugging and bug reporting
- install -Dm755 nvidia-bug-report.sh "$pkgdir"/usr/bin/nvidia-bug-report.sh
- install -Dm755 nvidia-debugdump "$pkgdir"/usr/bin/nvidia-debugdump
-
-##### MISCELLANEOUS #####
-
- # Vendor profiles
- install -Dm644 nvidia-application-profiles-$pkgver-rc \
- "$pkgdir"/usr/share/nvidia/nvidia-application-profiles-$pkgver-rc
- install -Dm644 nvidia-application-profiles-$pkgver-key-documentation \
- "$pkgdir"/usr/share/nvidia/nvidia-application-profiles-$pkgver-key-documentation
-
- # Documentation
- install -Dm644 README.txt "$pkgdir"/usr/share/doc/nvidia/README
- install -Dm644 NVIDIA_Changelog "$pkgdir"/usr/share/doc/nvidia/NVIDIA_Changelog
- cp -r html "$pkgdir"/usr/share/doc/nvidia/
- ln -s nvidia/ "$pkgdir"/usr/share/doc/nvidia-utils
-
- # Licenses
- install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/nvidia/LICENSE
- ln -s nvidia/ "$pkgdir"/usr/share/licenses/nvidia-utils
-
- # Disable logo splash
- install -Dm644 "$srcdir"/20-nvidia.conf "$pkgdir"/etc/X11/xorg.conf.d/20-nvidia.conf
-
- # Distro-specific files must be installed in /usr/share/X11/xorg.conf.d
- install -Dm644 "$srcdir"/10-nvidia-drm-outputclass.conf "$pkgdir"/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
+ mkdir -p "${pkgdir}/usr/share/licenses"
+ ln -s nvidia "${pkgdir}/usr/share/licenses/opencl-nvidia-vulkan"
}
-package_nvidia-vulkan() {
- pkgdesc="NVIDIA driver package for Arch's official 'linux' package (driver, utilities, and libraries) (vulkan developer branch)"
- depends=('linux' "nvidia-utils-vulkan>=$pkgver" 'libgl')
- provides=("nvidia=$pkgver")
- conflicts=('nvidia-96xx' 'nvidia-173xx' 'nvidia')
- install=$pkgname.install
-
- # Version of 'linux'
- _major=$(pacman -Q linux | grep -Po "\d+\.\d+")
- _extramodules=extramodules-$_major-ARCH
-
- # Nvidia kernel module; provides low-level access to your NVIDIA hardware for the other components. Generally
- # loaded into the kernel when the X server is started, to be used by the X driver and OpenGL. Consists of two
- # pieces: the binary-only core, and a kernel interface that must be compiled specifically for your kernel version,
- # because the Linux kernel doesn't have a consistent binary interface like the X server.
- install -Dm644 $_pkg/kernel/nvidia.ko \
- "$pkgdir"/usr/lib/modules/$_extramodules/nvidia.ko
-
- # NVIDIA Unified Memory kernel module; provides functionality for sharing memory between the CPU and GPU in
- # CUDA programs. Generally loaded into the kernel when a CUDA program is started, and used by the CUDA
- # driver on supported platforms: http://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6/
- install -Dm644 $_pkg/kernel/nvidia-uvm.ko \
- "$pkgdir"/usr/lib/modules/$_extramodules/nvidia-uvm.ko
-
- # Kernel module responsible for programming the display engine of the GPU. User-mode NVIDIA driver components
- # such as the NVIDIA X driver, OpenGL driver, and VDPAU driver communicate with nvidia-modeset.ko through the
- # /dev/nvidia-modeset device file.
- install -Dm644 $_pkg/kernel/nvidia-modeset.ko \
- "$pkgdir"/usr/lib/modules/$_extramodules/nvidia-modeset.ko
-
- # NVIDIA DRM kernel module; registers as a DRM driver to provide GEM and PRIME DRM capabilities
- # for atomic DRM KMS and graphics display offload on Optimus notebooks:
- # https://devtalk.nvidia.com/default/topic/925605/linux/nvidia-364-12-release-vulkan-glvnd-drm-kms-and-eglstreams/
- install -Dm644 $_pkg/kernel/nvidia-drm.ko \
- "$pkgdir"/usr/lib/modules/$_extramodules/nvidia-drm.ko
-
- # Compress
- gzip "$pkgdir"/usr/lib/modules/$_extramodules/nvidia*.ko
-
- # Write _extramodules to .install
- sed -i "s/_extramodules='.*'/_extramodules='$_extramodules'/" "$startdir"/$install
-
- # Blacklist Nouveau
- install -d "$pkgdir"/usr/lib/modprobe.d/
- echo "blacklist nouveau" >> "$pkgdir"/usr/lib/modprobe.d/nvidia.conf
+package_nvidia-vulkan-utils() {
+ pkgdesc="NVIDIA drivers utilities"
+ depends=('xorg-server' 'libglvnd' 'egl-wayland')
+ optdepends=('nvidia-settings: configuration tool'
+ 'xorg-server-devel: nvidia-xconfig'
+ 'opencl-nvidia-vulkan: OpenCL support')
+ conflicts=('nvidia-libgl')
+ provides=('vulkan-driver' 'opengl-driver' 'nvidia-libgl')
+ replaces=('nvidia-libgl')
+ install="nvidia-vulkan-utils.install"
+
+ cd "${_pkg}"
+
+ # X driver
+ install -D -m755 nvidia_drv.so "${pkgdir}/usr/lib/xorg/modules/drivers/nvidia_drv.so"
+
+ # GLX extension module for X
+ install -D -m755 "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so.${pkgver}"
+ ln -s "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so.1" # X doesn't find glx otherwise
+ ln -s "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglx.so" # X doesn't find glx otherwise
+
+ install -D -m755 "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_nvidia.so.${pkgver}"
+ # now in mesa driver
+ #ln -s "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_indirect.so.0"
+
+ # OpenGL libraries
+ install -D -m755 "libEGL_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libEGL_nvidia.so.${pkgver}"
+ install -D -m755 "libGLESv1_CM_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLESv1_CM_nvidia.so.${pkgver}"
+ install -D -m755 "libGLESv2_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLESv2_nvidia.so.${pkgver}"
+ install -D -m644 "10_nvidia.json" "${pkgdir}/usr/share/glvnd/egl_vendor.d/10_nvidia.json"
+
+ # OpenGL core library
+ install -D -m755 "libnvidia-glcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glcore.so.${pkgver}"
+ install -D -m755 "libnvidia-eglcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-eglcore.so.${pkgver}"
+ install -D -m755 "libnvidia-glsi.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glsi.so.${pkgver}"
+
+ # misc
+ install -D -m755 "libnvidia-ifr.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ifr.so.${pkgver}"
+ install -D -m755 "libnvidia-fbc.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-fbc.so.${pkgver}"
+ install -D -m755 "libnvidia-encode.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-encode.so.${pkgver}"
+ install -D -m755 "libnvidia-cfg.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-cfg.so.${pkgver}"
+ install -D -m755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ml.so.${pkgver}"
+ install -D -m755 "libnvidia-wfb.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-wfb.so.${pkgver}"
+ install -D -m755 "libnvidia-glvkspirv.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glvkspirv.so.${pkgver}"
+
+ # Vulkan ICD
+ install -D -m644 "nvidia_icd.json.template" "${pkgdir}/usr/share/vulkan/icd.d/nvidia_icd.json"
+
+ # VDPAU
+ install -D -m755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/vdpau/libvdpau_nvidia.so.${pkgver}"
+
+ # nvidia-tls library
+ install -D -m755 "libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-tls.so.${pkgver}"
+ install -D -m755 "tls/libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/tls/libnvidia-tls.so.${pkgver}"
+
+ # CUDA
+ install -D -m755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib/libcuda.so.${pkgver}"
+ install -D -m755 "libnvcuvid.so.${pkgver}" "${pkgdir}/usr/lib/libnvcuvid.so.${pkgver}"
+
+ # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
+ install -D -m755 "libnvidia-ptxjitcompiler.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ptxjitcompiler.so.${pkgver}"
+
+ # Fat (multiarchitecture) binary loader
+ install -D -m755 "libnvidia-fatbinaryloader.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-fatbinaryloader.so.${pkgver}"
+
+ # DEBUG
+ install -D -m755 nvidia-debugdump "${pkgdir}/usr/bin/nvidia-debugdump"
+
+ # nvidia-xconfig
+ install -D -m755 nvidia-xconfig "${pkgdir}/usr/bin/nvidia-xconfig"
+ install -D -m644 nvidia-xconfig.1.gz "${pkgdir}/usr/share/man/man1/nvidia-xconfig.1.gz"
+
+ # nvidia-bug-report
+ install -D -m755 nvidia-bug-report.sh "${pkgdir}/usr/bin/nvidia-bug-report.sh"
+
+ # nvidia-smi
+ install -D -m755 nvidia-smi "${pkgdir}/usr/bin/nvidia-smi"
+ install -D -m644 nvidia-smi.1.gz "${pkgdir}/usr/share/man/man1/nvidia-smi.1.gz"
+
+ # nvidia-cuda-mps
+ install -D -m755 nvidia-cuda-mps-server "${pkgdir}/usr/bin/nvidia-cuda-mps-server"
+ install -D -m755 nvidia-cuda-mps-control "${pkgdir}/usr/bin/nvidia-cuda-mps-control"
+ install -D -m644 nvidia-cuda-mps-control.1.gz "${pkgdir}/usr/share/man/man1/nvidia-cuda-mps-control.1.gz"
+
+ # nvidia-modprobe
+ # This should be removed if nvidia fixed their uvm module!
+ install -D -m4755 nvidia-modprobe "${pkgdir}/usr/bin/nvidia-modprobe"
+ install -D -m644 nvidia-modprobe.1.gz "${pkgdir}/usr/share/man/man1/nvidia-modprobe.1.gz"
+
+ # nvidia-persistenced
+ install -D -m755 nvidia-persistenced "${pkgdir}/usr/bin/nvidia-persistenced"
+ install -D -m644 nvidia-persistenced.1.gz "${pkgdir}/usr/share/man/man1/nvidia-persistenced.1.gz"
+ install -D -m644 nvidia-persistenced-init/systemd/nvidia-persistenced.service.template "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
+ sed -i 's/__USER__/nvidia-persistenced/' "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
+
+ # application profiles
+ install -D -m644 nvidia-application-profiles-${pkgver}-rc "${pkgdir}/usr/share/nvidia/nvidia-application-profiles-${pkgver}-rc"
+ install -D -m644 nvidia-application-profiles-${pkgver}-key-documentation "${pkgdir}/usr/share/nvidia/nvidia-application-profiles-${pkgver}-key-documentation"
+
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/nvidia-vulkan-utils/LICENSE"
+ install -D -m644 README.txt "${pkgdir}/usr/share/doc/nvidia/README"
+ install -D -m644 NVIDIA_Changelog "${pkgdir}/usr/share/doc/nvidia/NVIDIA_Changelog"
+ cp -r html "${pkgdir}/usr/share/doc/nvidia/"
+ ln -s nvidia "${pkgdir}/usr/share/doc/nvidia-vulkan-utils"
+
+ # distro specific files must be installed in /usr/share/X11/xorg.conf.d
+ install -D -m644 "${srcdir}/nvidia-drm-outputclass.conf" "${pkgdir}/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf"
+
+ install -Dm644 "${srcdir}/nvidia-vulkan-utils.sysusers" "${pkgdir}/usr/lib/sysusers.d/$pkgname.conf"
+
+ create_links
}
package_lib32-opencl-nvidia-vulkan() {
- pkgdesc="NVIDIA's OpenCL implemention for 'lib32-nvidia-utils-vulkan' "
- depends=('lib32-zlib' 'lib32-gcc-libs')
- optdepends=('opencl-headers: headers necessary for OpenCL development')
- provides=("lib32-opencl-nvidia=$pkgver" 'lib32-opencl-driver')
- conflicts=('lib32-opencl-nvidia')
- cd $_pkg
-
- # OpenCL
- install -Dm755 32/libnvidia-compiler.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-compiler.so.$pkgver
- install -Dm755 32/libnvidia-opencl.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-opencl.so.$pkgver
-
- # create missing soname links
- _create_links
-
- # License (link)
- install -d "$pkgdir"/usr/share/licenses/
- ln -s nvidia-utils/ "$pkgdir"/usr/share/licenses/lib32-opencl-nvidia
+ pkgdesc="OpenCL implemention for NVIDIA (32-bit)"
+ depends=('lib32-zlib' 'lib32-gcc-libs')
+ optdepends=('opencl-headers: headers necessary for OpenCL development')
+ provides=('lib32-opencl-driver')
+
+ cd "${_pkg}"/32
+
+ # OpenCL
+ install -D -m755 "libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-compiler.so.${pkgver}"
+ install -D -m755 "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-opencl.so.${pkgver}"
+
+ create_links
+
+ mkdir -p "${pkgdir}/usr/share/licenses"
+ ln -s lib32-nvidia-utils "${pkgdir}/usr/share/licenses/lib32-opencl-nvidia-vulkan"
}
-package_lib32-nvidia-libgl-vulkan() {
- pkgdesc="NVIDIA driver library symlinks for 'lib32-nvidia-utils-vulkan'"
- depends=('lib32-nvidia-utils-vulkan' 'nvidia-libgl-vulkan')
- provides=("lib32-nvidia-libgl=$pkgver" 'lib32-libgl' 'lib32-libegl' 'lib32-libgles')
- conflicts=('lib32-nvidia-libgl' 'lib32-libgl' 'lib32-libegl' 'lib32-libgles')
- replaces=('lib32-nvidia-utils<=313.26-1')
- cd $_pkg
+package_lib32-nvidia-vulkan-utils() {
+ pkgdesc="NVIDIA drivers utilities (32-bit)"
+ depends=('lib32-zlib' 'lib32-gcc-libs' 'lib32-libglvnd' 'nvidia-vulkan-utils')
+ optdepends=('lib32-opencl-nvidia-vulkan')
+ conflicts=('lib32-nvidia-libgl')
+ provides=('lib32-vulkan-driver' 'lib32-opengl-driver' 'lib32-nvidia-libgl')
+ replaces=('lib32-nvidia-libgl')
- mkdir -p "${pkgdir}/usr/lib32/"
+ cd "${_pkg}"/32
- # libGL (link)
- ln -s /usr/lib32/nvidia/libGL.so.1.7.0 "$pkgdir"/usr/lib32/libGL.so.1
- ln -s libGL.so.1 "$pkgdir"/usr/lib32/libGL.so
+ install -D -m755 "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libGLX_nvidia.so.${pkgver}"
- # EGL (link)
- ln -s /usr/lib32/nvidia/libEGL.so.1.1.0 "$pkgdir"/usr/lib32/libEGL.so.1
- ln -s libEGL.so.1 "$pkgdir"/usr/lib32/libEGL.so
+ # OpenGL libraries
+ install -D -m755 "libEGL_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libEGL_nvidia.so.${pkgver}"
+ install -D -m755 "libGLESv1_CM_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libGLESv1_CM_nvidia.so.${pkgver}"
+ install -D -m755 "libGLESv2_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libGLESv2_nvidia.so.${pkgver}"
- # OpenGL ES 1 (link)
- ln -s /usr/lib32/nvidia/libGLESv1_CM.so.1.2.0 "$pkgdir"/usr/lib32/libGLESv1_CM.so.1
- ln -s libGLESv1_CM.so.1 "$pkgdir"/usr/lib32/libGLESv1_CM.so
+ # OpenGL core library
+ install -D -m755 "libnvidia-glcore.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-glcore.so.${pkgver}"
+ install -D -m755 "libnvidia-eglcore.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-eglcore.so.${pkgver}"
+ install -D -m755 "libnvidia-glsi.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-glsi.so.${pkgver}"
- # OpenGL ES 2 (link)
- ln -s /usr/lib32/nvidia/libGLESv2.so.2.1.0 "$pkgdir"/usr/lib32/libGLESv2.so.2
- ln -s libGLESv2.so.2 "$pkgdir"/usr/lib32/libGLESv2.so
+ # misc
+ install -D -m755 "libnvidia-ifr.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-ifr.so.${pkgver}"
+ install -D -m755 "libnvidia-fbc.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-fbc.so.${pkgver}"
+ install -D -m755 "libnvidia-encode.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-encode.so.${pkgver}"
+ install -D -m755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-ml.so.${pkgver}"
+ install -D -m755 "libnvidia-glvkspirv.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-glvkspirv.so.${pkgver}"
- # License (link)
- install -d "$pkgdir"/usr/share/licenses/
- ln -s nvidia-utils/ "$pkgdir"/usr/share/licenses/lib32-nvidia-libgl
-}
+ # VDPAU
+ install -D -m755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/vdpau/libvdpau_nvidia.so.${pkgver}"
+
+ # nvidia-tls library
+ install -D -m755 "libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-tls.so.${pkgver}"
+ install -D -m755 "tls/libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib32/tls/libnvidia-tls.so.${pkgver}"
+
+ # CUDA
+ install -D -m755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib32/libcuda.so.${pkgver}"
+ install -D -m755 "libnvcuvid.so.${pkgver}" "${pkgdir}/usr/lib32/libnvcuvid.so.${pkgver}"
+
+ # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
+ install -D -m755 "libnvidia-ptxjitcompiler.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-ptxjitcompiler.so.${pkgver}"
+
+ # Fat (multiarchitecture) binary loader
+ install -D -m755 "libnvidia-fatbinaryloader.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-fatbinaryloader.so.${pkgver}"
+
+ create_links
-package_lib32-nvidia-utils-vulkan() {
- pkgdesc="NVIDIA driver utilities and libraries for 'nvidia-vulkan' (32-bit)"
- depends=('lib32-zlib' 'lib32-gcc-libs' 'nvidia-utils-vulkan' 'lib32-mesa>=17.0.2-1')
- optdepends=('lib32-opencl-nvidia-vulkan: OpenCL support')
- provides=("lib32-nvidia-utils=$pkgver" 'lib32-libglvnd' 'lib32-vulkan-driver')
- conflicts=('lib32-nvidia-utils' 'lib32-libglvnd')
- cd $_pkg
-
- # libGL & OpenGL
- install -Dm755 32/libGL.so.1.7.0 "$pkgdir"/usr/lib32/nvidia/libGL.so.1.7.0
- install -Dm755 32/libGLdispatch.so.0 "$pkgdir"/usr/lib32/libGLdispatch.so.0
- install -Dm755 32/libnvidia-glcore.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-glcore.so.$pkgver
- install -Dm755 32/libOpenGL.so.0 "$pkgdir"/usr/lib32/libOpenGL.so.0
- install -Dm755 32/libnvidia-glvkspirv.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-glvkspirv.so.$pkgver
-
- # GLX
- install -Dm755 32/libGLX.so.0 "$pkgdir"/usr/lib32/libGLX.so.0
- install -Dm755 32/libGLX_nvidia.so.$pkgver "$pkgdir"/usr/lib32/libGLX_nvidia.so.$pkgver
- # now in lib32-mesa driver
- #ln -s libGLX_nvidia.so.$pkgver "$pkgdir"/usr/lib32/libGLX_indirect.so.0
-
- # EGL
- install -Dm755 32/libEGL.so.1.1.0 "$pkgdir"/usr/lib32/nvidia/libEGL.so.1.1.0
- install -Dm755 32/libEGL_nvidia.so.$pkgver "$pkgdir"/usr/lib32/libEGL_nvidia.so.$pkgver
- install -Dm755 32/libnvidia-eglcore.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-eglcore.so.$pkgver
-
- # OpenGL ES
- install -Dm755 32/libGLESv1_CM.so.1.2.0 "$pkgdir"/usr/lib32/nvidia/libGLESv1_CM.so.1.2.0
- install -Dm755 32/libGLESv1_CM_nvidia.so.$pkgver "$pkgdir"/usr/lib32/libGLESv1_CM_nvidia.so.$pkgver
- install -Dm755 32/libGLESv2.so.2.1.0 "$pkgdir"/usr/lib32/nvidia/libGLESv2.so.2.1.0
- install -Dm755 32/libGLESv2_nvidia.so.$pkgver "$pkgdir"/usr/lib32/libGLESv2_nvidia.so.$pkgver
- install -Dm755 32/libnvidia-glsi.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-glsi.so.$pkgver
-
- # VDPAU (Video Decode and Presentation API for Unix)
- install -Dm755 32/libvdpau_nvidia.so.$pkgver "$pkgdir"/usr/lib32/vdpau/libvdpau_nvidia.so.$pkgver
-
- # GPU-accelerated video encoding
- install -Dm755 32/libnvidia-encode.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-encode.so.$pkgver
-
- # CUDA (Compute Unified Device Architecture)
- install -Dm755 32/libcuda.so.$pkgver "$pkgdir"/usr/lib32/libcuda.so.$pkgver
- install -Dm755 32/libnvcuvid.so.$pkgver "$pkgdir"/usr/lib32/libnvcuvid.so.$pkgver
-
- # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
- install -Dm755 32/libnvidia-ptxjitcompiler.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-ptxjitcompiler.so.$pkgver
-
- # Fat (multiarchitecture) binary loader
- install -Dm755 32/libnvidia-fatbinaryloader.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-fatbinaryloader.so.$pkgver
-
- # TLS (Thread local storage) support for OpenGL libs
- install -Dm755 32/libnvidia-tls.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-tls.so.$pkgver # Classic
- install -Dm755 32/tls/libnvidia-tls.so.$pkgver "$pkgdir"/usr/lib32/tls/libnvidia-tls.so.$pkgver # New
-
- # GPU monitoring and management
- install -Dm755 32/libnvidia-ml.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-ml.so.$pkgver
-
- # Helper libs for approved partners' GRID remote apps
- install -Dm755 32/libnvidia-ifr.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-ifr.so.$pkgver
- install -Dm755 32/libnvidia-fbc.so.$pkgver "$pkgdir"/usr/lib32/libnvidia-fbc.so.$pkgver
-
- # Not required (https://bugs.archlinux.org/task/38604):
- # - libnvidia-wfb.so.$pkgver (provided by xorg-server: https://www.archlinux.org/packages/extra/x86_64/xorg-server/)
-
- # create missing soname links
- _create_links
-
- # License (link)
- install -d "$pkgdir"/usr/share/licenses/
- ln -s nvidia-utils/ "$pkgdir"/usr/share/licenses/lib32-nvidia-utils
+ rm -rf "${pkgdir}"/usr/{include,share,bin}
+ mkdir -p "${pkgdir}/usr/share/licenses"
+ ln -s lib32-nvidia-utils "${pkgdir}/usr/share/licenses/${pkgname}"
}
diff --git a/kernel-4.16.patch b/kernel-4.16.patch
new file mode 100644
index 00000000000..67172815ff6
--- /dev/null
+++ b/kernel-4.16.patch
@@ -0,0 +1,33 @@
+diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h
+index 10fc418..22ef968 100644
+--- a/kernel/common/inc/nv-linux.h
++++ b/kernel/common/inc/nv-linux.h
+@@ -175,7 +175,11 @@ static inline uid_t __kuid_val(kuid_t uid)
+
+ #if defined(NV_VM_INSERT_PAGE_PRESENT)
+ #include <linux/pagemap.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)
+ #include <linux/dma-mapping.h>
++#else
++#include <linux/dma-direct.h>
++#endif
+ #endif
+
+ #if defined(CONFIG_SWIOTLB) && defined(NVCPU_AARCH64)
+diff --git a/kernel/conftest.sh b/kernel/conftest.sh
+index b23dbb4..42dc576 100755
+--- a/kernel/conftest.sh
++++ b/kernel/conftest.sh
+@@ -1906,7 +1906,12 @@ compile_test() {
+ # Determine if the phys_to_dma function is present.
+ #
+ CODE="
++ #include <linux/version.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)
+ #include <linux/dma-mapping.h>
++#else
++ #include <linux/dma-direct.h>
++#endif
+ void conftest_phys_to_dma(void) {
+ phys_to_dma();
+ }"
diff --git a/nvidia-drm-outputclass.conf b/nvidia-drm-outputclass.conf
new file mode 100644
index 00000000000..dd2936cb5eb
--- /dev/null
+++ b/nvidia-drm-outputclass.conf
@@ -0,0 +1,15 @@
+Section "OutputClass"
+ Identifier "intel"
+ MatchDriver "i915"
+ Driver "modesetting"
+EndSection
+
+Section "OutputClass"
+ Identifier "nvidia"
+ MatchDriver "nvidia-drm"
+ Driver "nvidia"
+ Option "AllowEmptyInitialConfiguration"
+ Option "PrimaryGPU" "yes"
+ ModulePath "/usr/lib/nvidia/xorg"
+ ModulePath "/usr/lib/xorg/modules"
+EndSection
diff --git a/nvidia-utils-vulkan.install b/nvidia-utils-vulkan.install
deleted file mode 100644
index 5c4c1cfa36d..00000000000
--- a/nvidia-utils-vulkan.install
+++ /dev/null
@@ -1,10 +0,0 @@
-post_upgrade() {
- echo ":: If CUDA is unavailable, run 'nvidia-modprobe'."
-}
-
-post_install() {
- getent group nvidia-persistenced &>/dev/null || groupadd -g 143 nvidia-persistenced
- getent passwd nvidia-persistenced &>/dev/null || useradd -c 'NVIDIA Persistence Daemon' -u 143 -g nvidia-persistenced -d '/' -s /sbin/nologin nvidia-persistenced
-
- post_upgrade
-}
diff --git a/nvidia-vulkan-utils.install b/nvidia-vulkan-utils.install
new file mode 100644
index 00000000000..ed0b51f7e57
--- /dev/null
+++ b/nvidia-vulkan-utils.install
@@ -0,0 +1,7 @@
+post_upgrade() {
+ echo "If you run into trouble with CUDA not being available, run nvidia-modprobe first."
+}
+
+post_install() {
+ post_upgrade
+} \ No newline at end of file
diff --git a/nvidia-vulkan-utils.sysusers b/nvidia-vulkan-utils.sysusers
new file mode 100644
index 00000000000..71c0608911c
--- /dev/null
+++ b/nvidia-vulkan-utils.sysusers
@@ -0,0 +1 @@
+u nvidia-persistenced 143 'NVIDIA Persistence Daemon'
diff --git a/nvidia-vulkan.install b/nvidia-vulkan.install
deleted file mode 100644
index 7ae1086c5e7..00000000000
--- a/nvidia-vulkan.install
+++ /dev/null
@@ -1,46 +0,0 @@
-_depmod() {
- # This gets auto-updated during build
- _extramodules='extramodules-4.17-ARCH'
-
- # Update module dependencies
- depmod $(cat /usr/lib/modules/$_extramodules/version)
-}
-
-_rmmod() {
- # Try unloading
- if lsmod | grep -q nvidia; then
- rmmod nvidia
- fi
-
- # What?
- if [[ $? != 0 ]]; then
- # X running?
- if pidof Xorg >/dev/null; then
- echo ":: Please reboot or exit X first."
- fi
- fi
-}
-
-post_install() {
- _depmod
-
- # X running?
- if pidof Xorg >/dev/null; then
- echo ":: Please reboot or exit X to unload the current module."
- fi
-}
-
-post_upgrade() {
- _depmod
-
- # Not rebuilding?
- if (( $(vercmp $1 $2) != 0 )); then
- _rmmod
- fi
-}
-
-post_remove() {
- _depmod
-
- _rmmod
-}