# Contributor: Stefan Reimer <stefan@zero-downtime.net>
# Maintainer: Stefan Reimer <stefan@zero-downtime.net>

# Issues:
# - https://github.com/NVIDIA/open-gpu-kernel-modules/issues/468
#   https://github.com/NVIDIA/open-gpu-kernel-modules/pull/609/files
#   remove coreutils from makedepends

pkgname=nvidia-open-gpu
pkgver=555.58.02
pkgrel=0
pkgdesc="NVIDIA Linux open GPU kernel modules"
url="https://github.com/NVIDIA/open-gpu-kernel-modules"
arch="x86_64"
license="MIT OR GPL-2.0"
makedepends="bash linux-headers linux-virt-dev coreutils"
options="!check"

source="nvidia-$pkgver.tar.gz::https://github.com/NVIDIA/open-gpu-kernel-modules/archive/refs/tags/$pkgver.tar.gz
        91-nvidia.rules
        create-nvidia-uvm-dev-node.sh"

builddir="$srcdir/open-gpu-kernel-modules-$pkgver"

build() {
  # Hack running the build inside a container other uname -r returns host kernel
  KERNEL_VERSION=$(basename $(ls -d /lib/modules/*-virt))

  unset CFLAGS CPPFLAGS CXXFLAGS
  unset LDFLAGS

  make KERNEL_UNAME=$KERNEL_VERSION
}

package() {
  KERNEL_VERSION=$(basename $(ls -d /lib/modules/*-virt))
  depends="linux-virt~$(echo $KERNEL_VERSION | sed -e 's/-.*$//')"

  modules="nvidia.ko \
	nvidia-drm.ko \
	nvidia-modeset.ko \
	nvidia-uvm.ko \
	nvidia-peermem.ko"

  mkdir -p "$pkgdir"/lib/modules/$KERNEL_VERSION/kernel
  for m in $modules; do
    gzip -9 -c kernel-open/$m > "$pkgdir"/lib/modules/$KERNEL_VERSION/kernel/$m.gz
  done

  # Add some udev rules to automate node handling
  install -Dm644 "$srcdir"/91-nvidia.rules "$pkgdir"/lib/udev/rules.d/91-nvidia.rules
  install -Dm755 "$srcdir"/create-nvidia-uvm-dev-node.sh "$pkgdir"/usr/sbin/create-nvidia-uvm-dev-node.sh
}

sha512sums="
5cc927d994ba5ec79333b21534dbc60904b5e1ce746d231d29764648d6f6ffd8e7646b69f32b3d28f9ef8c407df5a04e5a94ff26d503201ec8fd17028bf3ccc9  nvidia-555.58.02.tar.gz
b16b86ded8601ff802477e2b191c5728290014f90bb85ad6ec0e5b7e84f8004c467f5b6c66b80dc5d205fb70a3900ac286764a3829ca3ad3b8a3a5fd0b73a702  91-nvidia.rules
8335bd69c482da1f67b5cddd31a0b40d01b5c627aeca137b40ac7776cb3e7475767bec808a972ed739c26914207aca264324c41496f6fb579d910c8477f7cc1c  create-nvidia-uvm-dev-node.sh
"