# Maintainer: Sven-Hendrik Haase <svenstaro@archlinux.org>
# Maintainer: Peter Jung <ptr1337@archlinux.org>
# Contributor: James Rayner <iphitus@gmail.com>
# Contributor: Vasiliy Stelmachenok <ventureo@yandex.ru>
# Contributor: Thomas Baechler <thomas@archlinux.org>

# ARM-only carry of NVIDIA/open-gpu-kernel-modules#1359 by Martin Stark.
# Remove this overlay after a fixed Arch Linux ARM driver is validated.
pkgname=nvidia-open-dkms
pkgver=615.71.09
pkgrel=1.2
pkgdesc="NVIDIA open kernel modules - module sources"
arch=('aarch64')
url="https://www.nvidia.com/"
license=('MIT AND GPL-2.0-only')
depends=('dkms' "nvidia-utils=$pkgver")
conflicts=('nvidia-open' 'NVIDIA-MODULE')
provides=('nvidia-open' 'NVIDIA-MODULE' 'nvidia-dkms')
replaces=('nvidia-dkms')
options=('!strip')
_pkg_open="NVIDIA-kernel-module-source-${pkgver}"
source=("https://download.nvidia.com/XFree86/NVIDIA-kernel-module-source/${_pkg_open}.tar.xz"
        '0001-allow-unplugged-dp-detach.patch'
        '0002-clarify-unplugged-dp-detach.patch')
sha512sums=('0b32c1aaa5ed261bdee7232d5e5d293e53c42ac9896f49c4be4e6b9b6bce1370cb69a7f7fde5531a7537d5e925d651c36bcb512a2f827c2d2cb26ede33f7c057'
            '48f802423399ce84a430b7accf10ea50847ea3fafcfe251e3bad2f741af9ca2162408a3109eb3c9fcdbe35ec35154a3dbcc8fe457ed617487c009abf2c9fc89a'
            'a3ff65cb58d72815b272726c38d45148dfba73ea2a0d88672960d8f706c74e7c2b40ec599783acec46ba18433af45f38547a09b2caa985bd71895a64780c00da')

prepare() {
    # Attempt to make builds reproducible
    sed -i "s/^  HOSTNAME.*/  HOSTNAME = echo archlinux/" "${srcdir}/${_pkg_open}/utils.mk"
    sed -i "s/^WHOAMI.*/WHOAMI = echo archlinux-builder/" "${srcdir}/${_pkg_open}/utils.mk"
    sed -i "s/^DATE.*/DATE = date -r version.mk/" "${srcdir}/${_pkg_open}/utils.mk"

    for conf in "${srcdir}/${_pkg_open}/kernel-open/dkms.conf"; do
        sed -i "s/__VERSION_STRING/${pkgver}/" "$conf"
        sed -i 's/__JOBS/`nproc`/' "$conf"
        sed -i 's/__EXCLUDE_MODULES//' "$conf"
        sed -i 's/__DKMS_MODULES//' "$conf"
        sed -i 's/NV_EXCLUDE_BUILD_MODULES/IGNORE_PREEMPT_RT_PRESENCE=1 NV_EXCLUDE_BUILD_MODULES/' "$conf"
        sed -i '$i\
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"\
BUILT_MODULE_NAME[4]="nvidia-peermem"\
DEST_MODULE_LOCATION[4]="/kernel/drivers/video"' "$conf"
    done

    # Additional parameters for open kernel modules
    cat <<EOF >>"${srcdir}/${_pkg_open}/kernel-open/dkms.conf"
BUILT_MODULE_LOCATION[0]="kernel-open"
BUILT_MODULE_LOCATION[1]="kernel-open"
BUILT_MODULE_LOCATION[2]="kernel-open"
BUILT_MODULE_LOCATION[3]="kernel-open"
BUILT_MODULE_LOCATION[4]="kernel-open"
EOF

    # Exact PR head a2e8b26b20dfb6f2fa3cb8985e3f1126cba38aae.
    cd "${srcdir}/${_pkg_open}"
    patch --batch --fuzz=0 -p1 < "$srcdir/0001-allow-unplugged-dp-detach.patch"
    patch --batch --fuzz=0 -p1 < "$srcdir/0002-clarify-unplugged-dp-detach.patch"
}

package() {
    install -dm755 "$pkgdir/usr/src"
    cp -dr --no-preserve=ownership "$srcdir/$_pkg_open" "$pkgdir/usr/src/nvidia-$pkgver"
    mv "$pkgdir/usr/src/nvidia-$pkgver/kernel-open/dkms.conf" "$pkgdir/usr/src/nvidia-$pkgver/dkms.conf"
    install -Dm644 "$srcdir/$_pkg_open/COPYING" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
