Skip to content

Instantly share code, notes, and snippets.

@apprehensions
Created August 4, 2022 22:57
Show Gist options
  • Save apprehensions/54bc3adc22bd6ea000f043b6ffe46655 to your computer and use it in GitHub Desktop.
Save apprehensions/54bc3adc22bd6ea000f043b6ffe46655 to your computer and use it in GitHub Desktop.
diff --git a/nvidia/nvidia/build b/nvidia/nvidia/build
index b2dff51..508ca8b 100755
--- a/nvidia/nvidia/build
+++ b/nvidia/nvidia/build
@@ -14,6 +14,7 @@ mkdir -p \
"$1/usr/share/egl/egl_external_platform.d" \
"$1/usr/share/glvnd/egl_vendor.d" \
"$1/usr/share/vulkan/icd.d" \
+ "$1/usr/lib/firmware/nvidia/$2" \
"$1/usr/share/vulkan/implicit_layer.d" \
"$1/usr/lib/modules/${KERNEL_UNAME:-$(uname -r)}/extra"
@@ -24,41 +25,35 @@ smi persistenced modprobe
libs="
libEGL_nvidia libGLESv1_CM_nvidia libGLESv2_nvidia
libnvidia-eglcore libnvidia-allocator libnvidia-glsi
-libnvidia-ml
+libnvidia-fbc libnvidia-encode libnvidia-ml
+libnvidia-cfg libnvoptix libnvidia-rtcore
+libcuda libnvcuvid libnvidia-opticalflow
+libnvidia-vulkan-producer libnvidia-ptxjitcompiler
"
-xorg=
-wayland=
-kiss list xorg-server && xorg=true
-kiss list wayland && wayland=true
-
-if [ "$xorg" ]; then
+kiss list xorg-server && {
bins="$bins xconfig settings"
- libs="
- $libs libGLX_nvidia libnvidia-glcore libnvidia-tls libnvidia-glvkspirv
- libnvidia-gtk3
- "
+ libs="$libs libGLX_nvidia libnvidia-glcore libnvidia-tls libnvidia-glvkspirv libnvidia-gtk3"
mkdir -p "$1/usr/lib/xorg/modules/drivers" \
"$1/usr/lib/xorg/modules/extensions" \
"$1/usr/lib/vdpau"
cp nvidia_drv.so "$1/usr/lib/xorg/modules/drivers/nvidia_drv.so"
- cp "libglxserver_nvidia.so.$2" \
- "$1/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.$2"
- ln -s "libglxserver_nvidia.so.$2" \
- "$1/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.1"
- ln -s "libglxserver_nvidia.so.$2" \
- "$1/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so"
+ cp "libglxserver_nvidia.so.$2" "$1/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.$2"
+ ln -s "libglxserver_nvidia.so.$2" "$1/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.1"
+ ln -s "libglxserver_nvidia.so.$2" "$1/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so"
cp "libvdpau_nvidia.so.$2" "$1/usr/lib/vdpau/libvdpau_nvidia.so.$2"
-
ln -s "libvdpau_nvidia.so.$2" "$1/usr/lib/vdpau/libvdpau_nvidia.so.1"
ln -s "libvdpau_nvidia.so.$2" "$1/usr/lib/vdpau/libvdpau_nvidia.so"
-fi
-if [ ! "$xorg" ] || [ "$wayland" ]; then
+ cp "nvidia_icd.json" "$1/usr/share/vulkan/icd.d/"
+ cp "nvidia_layers.json" "$1/usr/share/vulkan/implicit_layer.d/"
+}
+
+kiss list wayland && {
for lib in libnvidia-egl-gbm.so.1.1.0 libnvidia-egl-wayland.so.1.1.9; do
cp "$lib" "$1/usr/lib/"
done
@@ -76,7 +71,7 @@ if [ ! "$xorg" ] || [ "$wayland" ]; then
> "$1/usr/share/vulkan/icd.d/nvidia_icd.json"
sed 's|libGLX_nvidia.so.0|libEGL_nvidia.so.0|' nvidia_layers.json \
> "$1/usr/share/vulkan/implicit_layer.d/nvidia_layers.json"
-fi
+}
cp 10_nvidia.json "$1/usr/share/glvnd/egl_vendor.d/"
@@ -92,14 +87,17 @@ for lib in $libs; do
done
# soname links
-for lib in "$1/usr/lib/"*.so*; do
- soname=$(dirname "$lib")/$(readelf -d "$lib" | awk '/SONAME/ {print $5}' | tr -d '[]')
- base=$(printf "%s" "$soname" | sed -r 's/(.*).so.*/\1.so/')
- [ -e "$soname" ] || ln -sf "$(basename "$lib")" "$soname"
- [ -e "$base" ] || ln -sf "$(basename "$soname")" "$base"
+for lib in "$1"/usr/lib/*.so*; do
+ soname="${lib%/*}/$(readelf -d $lib | awk -F'[][]' '/SONAME/ {print $2}')"
+ base=${soname%%.so*}
+ [ -e "$soname" ] || ln -sf "${lib##*/}" "${soname}"
+ [ -e "$base" ] || ln -sf "${soname##*/}" "${base}.so"
done
-mkdir -p "$1/usr/lib/firmware/nvidia/$2"
+# no SONAME set, nvidia plz fix
+ln -s "libnvidia-vulkan-producer.so.$2" "$1/usr/lib/libnvidia-vulkan-producer.so.1"
+ln -s "libnvidia-vulkan-producer.so.$2" "$1/usr/lib/libnvidia-vulkan-producer.so"
+
cp firmware/gsp.bin "$1/usr/lib/firmware/nvidia/$2/"
# kernel modules
diff --git a/nvidia/nvidia/checksums b/nvidia/nvidia/checksums
index be7bcc0..93ca0e4 100644
--- a/nvidia/nvidia/checksums
+++ b/nvidia/nvidia/checksums
@@ -1,2 +1 @@
f05d782baca1ba681f8e417768338176875fb8bc0b687ce576daa4dc1f437f64
-e717b8b948dd6863a10a845957b033467a22a535417362245001c220b2dbf056
diff --git a/nvidia/nvidia/sources b/nvidia/nvidia/sources
index e6cc919..38e7008 100644
--- a/nvidia/nvidia/sources
+++ b/nvidia/nvidia/sources
@@ -1,2 +1 @@
-https://us.download.nvidia.com/XFree86/Linux-x86_64/515.57/NVIDIA-Linux-x86_64-515.57-no-compat32.run
-https://github.com/NVIDIA/open-gpu-kernel-modules/archive/refs/tags/515.57.tar.gz nvidia-open
+https://us.download.nvidia.com/XFree86/Linux-x86_64/VERSION/NVIDIA-Linux-x86_64-VERSION-no-compat32.run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment