mirror of
https://github.com/Snigdha-OS/snigdhaos-pkgbuilds.git
synced 2025-09-22 04:25:02 +02:00

Some checks are pending
Check Conventional Commit / check-commit-message (push) Waiting to run
139 lines
3.4 KiB
Bash
139 lines
3.4 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
package-exists-fast(){
|
|
if compgen -G "/var/lib/pacman/local/$1-*" >/dev/null; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
update_keyrings(){
|
|
local packages=("snigdhaos-keyring" "archlinux-keyring" "chaotic-keyring")
|
|
if $PACMAN -Qq blackarch-keyring &> /dev/null; then
|
|
packages+=("blackarch-keyring")
|
|
fi
|
|
if [ -n "$(PACMAN -Qu "${packages[@]}" 2>&1)" ]; then
|
|
echo -e "Updating Keyrings..."
|
|
# shellcheck disable=SC1007
|
|
SNAPA_PAC_SKIP=y SKIP_AUTOSNAP= $PACMAN -S --needed --noconfirm "${packages[@]}" || return 0
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
install_expect(){
|
|
if [ -x /usr/bin/tclsh ] && [ ! -x /usr/bin/expect ]; then
|
|
SKIP_AUTOSNAP=1 SNAPA_PAC_SKIP=y $PACMAN -U https://mirror.osbeck.com/archlinux/extra/os/x86_64/expect-5.45.4-4-x86_64.pkg.tar.zst --noconfirm -asdeps
|
|
fi
|
|
}
|
|
|
|
pre-update-routines(){
|
|
local exit_code=0
|
|
update_keyrings || exit_code=2
|
|
install_expect
|
|
return $exit_code
|
|
}
|
|
|
|
migrate-snigdhaos-repo() {
|
|
|
|
gawk -i inplace 'BEGIN {
|
|
err=1
|
|
}
|
|
{
|
|
if (rm)
|
|
{
|
|
if ($0 ~ /^ *(Include|Server) *=/)
|
|
{
|
|
next
|
|
}
|
|
# Check for empty line
|
|
else if ($0 ~ /^ *$/)
|
|
{
|
|
next
|
|
}
|
|
else
|
|
{
|
|
rm=0
|
|
}
|
|
}
|
|
if ($0 == "[options]")
|
|
{
|
|
print
|
|
next
|
|
}
|
|
else if ($0 == "[snigdhaos-core]")
|
|
{
|
|
if (set) {
|
|
rm=1
|
|
next
|
|
}
|
|
set=1
|
|
}
|
|
else if ($0 == "[core-testing]")
|
|
{
|
|
print "[testing]"
|
|
err=0
|
|
next
|
|
}
|
|
else if ($0 == "[community-testing]")
|
|
{
|
|
print "[extra-testing]"
|
|
err=0
|
|
next
|
|
}
|
|
else if ($0 == "[community]")
|
|
{
|
|
rm=1
|
|
err=0
|
|
next
|
|
}
|
|
}
|
|
/^\[[^ \[\]]+\]/ {
|
|
if (!set) {
|
|
print "[snigdhaos-core]"
|
|
print "Server = https://snigdha-os.github.io/snigdhaos-core/x86_64"
|
|
print ""
|
|
set=1
|
|
err=0
|
|
}
|
|
}
|
|
END {exit err}
|
|
1' /etc/pacman.conf
|
|
}
|
|
|
|
verify-core(){
|
|
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
|
|
}
|
|
|
|
"$@" exit "$?"
|