From beed32a5260b72ee696a32641da074ca27be2540 Mon Sep 17 00:00:00 2001 From: "Eshan Roy (Eshanized)" Date: Sat, 9 Mar 2024 16:58:52 +0530 Subject: [PATCH] =?UTF-8?q?@eshanized=20pushed=20another=20commit=20via=20?= =?UTF-8?q?script=20=F0=9F=94=A5=F0=9F=94=A5=F0=9F=94=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/snigdhaos-updater/aux-script | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/common/snigdhaos-updater/aux-script b/common/snigdhaos-updater/aux-script index 348cf66a..60660ac7 100644 --- a/common/snigdhaos-updater/aux-script +++ b/common/snigdhaos-updater/aux-script @@ -37,8 +37,35 @@ pre-update-routines(){ } verify-core(){ - local invaild_nvidia=() + local invalid_nvidia=() + if [ -f "/usr/lib/modprobe.d/nvidia-utils.conf" ] && [ -f "/usr/share/licenses/nvidia-dkms/LICENSE" ]; then + for i in /usr/lib/modules/[0-9]*; do + if pacman -Qo "${i}" &>/dev/null; then + local nvidia + nvidia="$(grep -ohP '^.*/nvidia.ko[^/]*(?=:)' "${i}/modules.dep" 2>/dev/null || true)" + if [ -z "$nvidia" ] || [[ "$(modinfo "${i}/${nvidia}" -F vermagic 2>/dev/null | cut -d' ' -f1)" != "${i##*/}" ]]; then + invalid_nvidia+=("${i##*/}") + fi + fi + done + fi + # Oops, at least one is invalid! + if [ ${#invalid_nvidia[@]} -ne 0 ]; then + dkms_version="$(pacman -Rddp --print-format %v nvidia-dkms 2>/dev/null)" + if [ -n "${dkms_version}" ]; then + echo -e "\n\033[1;33m-->\033[1;34m A problem with the NVIDIA drivers has been detected\033[0m" + fi + for i in "${invalid_nvidia[@]}"; do + if [ -n "${dkms_version}" ]; then + echo -e "\n\033[1;33m--->\033[1;34m Building NVIDIA DKMS module for kernel $i\033[0m" + dkms remove -m nvidia -v "${dkms_version%-*}" -k "$i" || true + dkms install -m nvidia -v "${dkms_version%-*}" -k "$i" && depmod "$i" && echo -e "\033[1;33m--->\033[1;32m NVIDIA DKMS module for kernel $i built successfully\033[0m" || echo -e "\033[1;33m--->\033[1;31m Failed to build NVIDIA DKMS module for kernel $i\033[0m" + elif command -v dkms >/dev/null; then + dkms autoinstall -k "$i" && depmod "$i" + fi + done + fi } "$@"