← recipes

Commit e68362e5

0
files
+0
added
-0
deleted
@@ -1,7 +1,7 @@
1 1 pkgname: nvidia-dkms
2 2 pkgver: '610.57.04'
3 3 pkgrel: '7'
4 -pkgdesc: NVIDIA userspace drivers + DKMS kernel module sources, Xorg config and udev rules
4 +pkgdesc: NVIDIA userspace drivers (libGLX, libEGL, Vulkan ICD, nvidia-smi) + DKMS kernel module sources, Xorg config and udev rules
5 5 url: https://www.nvidia.com/en-us/drivers/unix/
6 6 arch: x86_64
7 7 license:
@@ -24,7 +24,7 @@ build: |
24 24 cd NVIDIA-Linux-x86_64-${pkgver}
25 25 _nvdir="${PWD}"
26 26
27 - # ═══ CZĘŚĆ 1/3: USERSPACE ═══
27 + # ═══ CZĘŚĆ 1/3: USERSPACE (biblioteki GL/EGL/Vulkan, binarki, DDX) ═══
28 28 install -dm0755 ${PKGDIR}/usr/lib
29 29 install -dm0755 ${PKGDIR}/usr/bin
30 30 install -dm0755 ${PKGDIR}/usr/share/{applications,pixmaps,man/man1,doc/nvidia}
@@ -32,12 +32,12 @@ build: |
32 32 install -dm0755 ${PKGDIR}/usr/share/vulkan/icd.d
33 33 install -dm0755 ${PKGDIR}/usr/lib/xorg/modules/{drivers,extensions}
34 34
35 - # Biblioteki .so
35 + # Wszystkie biblioteki .so.${pkgver}
36 36 for _lib in *.so.${pkgver} *.so.${pkgver%.*.*}; do
37 37 [ -f "$_lib" ] && install -m 0755 "$_lib" ${PKGDIR}/usr/lib/
38 38 done
39 39
40 - # Binaria
40 + # nvidia-smi, nvidia-settings, nvidia-xconfig, nvidia-modprobe, nvidia-persistenced
41 41 for _bin in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
42 42 [ -f "$_bin" ] && install -m 0755 "$_bin" ${PKGDIR}/usr/bin/
43 43 done
@@ -54,25 +54,64 @@ build: |
54 54 fi
55 55 [ -f nvidia-settings.png ] && install -m 0644 nvidia-settings.png ${PKGDIR}/usr/share/pixmaps/
56 56
57 - # Xorg DDX + GLX
57 + # Xorg DDX + rozszerzenie GLX
58 58 [ -f nvidia_drv.so ] && install -m 0755 nvidia_drv.so ${PKGDIR}/usr/lib/xorg/modules/drivers/
59 59 if [ -f libglxserver_nvidia.so.${pkgver} ]; then
60 60 install -m 0755 libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/
61 61 ln -sf libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
62 62 fi
63 63
64 - # EGL Vendor & Vulkan ICD
65 - [ -f 10_nvidia.json ] && install -m 0644 10_nvidia.json ${PKGDIR}/usr/share/glvnd/egl_vendor.d/
66 - [ -f nvidia_icd.json ] && install -m 0644 nvidia_icd.json ${PKGDIR}/usr/share/vulkan/icd.d/
64 + # EGL vendor (GLVND)
65 + if [ -f 10_nvidia.json ]; then
66 + install -m 0644 10_nvidia.json ${PKGDIR}/usr/share/glvnd/egl_vendor.d/
67 + fi
68 +
69 + # Vulkan ICD do icd.d
70 + if [ -f nvidia_icd.json ]; then
71 + install -m 0644 nvidia_icd.json ${PKGDIR}/usr/share/vulkan/icd.d/
72 + fi
73 + if [ -f nvidia_layers.json ]; then
74 + install -dm0755 ${PKGDIR}/usr/share/vulkan/explicit_layer.d
75 + install -m 0644 nvidia_layers.json ${PKGDIR}/usr/share/vulkan/explicit_layer.d/
76 + fi
77 +
78 + # Dokumentacja
79 + if [ -d "${_nvdir}/html" ]; then
80 + cp -r "${_nvdir}"/html/* ${PKGDIR}/usr/share/doc/nvidia/ 2>/dev/null || true
81 + fi
67 82
68 - # SONAME Symlinki
83 + # Symlinki SONAME
69 84 cd ${PKGDIR}/usr/lib
70 85 for _lib in *.so.${pkgver}; do
71 86 [ -f "$_lib" ] || continue
72 87 _soname=$(readelf -d "$_lib" 2>/dev/null | awk -F'[][]' '/SONAME/{print $2}')
73 - [ -n "$_soname" ] && [ ! -e "$_soname" ] && ln -sf "$_lib" "$_soname"
88 + if [ -n "$_soname" ] && [ ! -e "$_soname" ]; then
89 + ln -sf "$_lib" "$_soname"
90 + fi
74 91 _base=$(echo "$_lib" | sed -E 's/\.so\.[0-9.]+$/.so/')
75 - [ ! -e "$_base" ] && ln -sf "$_lib" "$_base"
92 + if [ ! -e "$_base" ]; then
93 + ln -sf "$_lib" "$_base"
94 + fi
95 + done
96 +
97 + # Ręczne symlinki dla kluczowych bibliotek
98 + for _pair in \
99 + "libGLX_nvidia.so.${pkgver}:libGLX_nvidia.so.0" \
100 + "libEGL_nvidia.so.${pkgver}:libEGL_nvidia.so.0" \
101 + "libGLESv2_nvidia.so.${pkgver}:libGLESv2_nvidia.so.0" \
102 + "libGLESv1_CM_nvidia.so.${pkgver}:libGLESv1_CM_nvidia.so.0" \
103 + "libnvidia-glcore.so.${pkgver}:libnvidia-glcore.so.${pkgver%.*.*}" \
104 + "libnvidia-eglcore.so.${pkgver}:libnvidia-eglcore.so.${pkgver%.*.*}" \
105 + "libnvidia-glsi.so.${pkgver}:libnvidia-glsi.so.${pkgver%.*.*}" \
106 + "libnvidia-rtcore.so.${pkgver}:libnvidia-rtcore.so.${pkgver%.*.*}" \
107 + "libnvidia-allocator.so.${pkgver}:libnvidia-allocator.so.1" \
108 + "libnvidia-egl-gbm.so.${pkgver}:libnvidia-egl-gbm.so.1" \
109 + "libnvidia-egl-wayland.so.${pkgver}:libnvidia-egl-wayland.so.1" \
110 + "libnvidia-vulkan-producer.so.${pkgver}:libnvidia-vulkan-producer.so" \
111 + "libnvidia-api.so.${pkgver}:libnvidia-api.so.1" \
112 + ; do
113 + _src="${_pair%%:*}"; _dst="${_pair##*:}"
114 + [ -f "${_src}" ] && [ ! -e "${_dst}" ] && ln -sf "${_src}" "${_dst}"
76 115 done
77 116
78 117 # ═══ CZĘŚĆ 2/3: ŹRÓDŁA DKMS ═══
@@ -80,9 +119,9 @@ build: |
80 119 install -dm0755 "${_srcdir}"
81 120 cp -r "${_nvdir}"/kernel/* "${_srcdir}/"
82 121
83 - cat > "${_srcdir}/dkms.conf" << EOF
122 + cat > "${_srcdir}/dkms.conf" << 'EOF'
84 123 PACKAGE_NAME="nvidia"
85 -PACKAGE_VERSION="${pkgver}"
124 +PACKAGE_VERSION="610.57.04"
86 125 AUTOINSTALL="yes"
87 126
88 127 BUILT_MODULE_NAME[0]="nvidia"
@@ -107,7 +146,8 @@ EOF
107 146 install -dm0755 ${PKGDIR}/etc/modprobe.d
108 147 install -dm0755 ${PKGDIR}/etc/X11/xorg.conf.d
109 148
110 - cat > ${PKGDIR}/etc/X11/xorg.conf.d/10-nvidia-drm.conf << "EOF"
149 + # Xorg OutputClass
150 + cat > ${PKGDIR}/etc/X11/xorg.conf.d/10-nvidia-drm.conf << 'EOF'
111 151 Section "OutputClass"
112 152 Identifier "nvidia"
113 153 MatchDriver "nvidia-drm"
@@ -116,17 +156,30 @@ Section "OutputClass"
116 156 EndSection
117 157 EOF
118 158
119 - cat > ${PKGDIR}/etc/modprobe.d/nvidia-drm.conf << "EOF"
159 + # Modprobe config
160 + cat > ${PKGDIR}/etc/modprobe.d/nvidia-drm.conf << 'EOF'
120 161 options nvidia-drm modeset=1
121 162 EOF
122 163
123 - cat > ${PKGDIR}/etc/modprobe.d/nouveau.conf << "EOF"
164 + # Autoload nvidia-drm przy PCI hot-plug
165 + cat > ${PKGDIR}/usr/lib/udev/rules.d/99-pagan-nvidia-autoload.rules << 'EOF'
166 +ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", RUN+="/usr/sbin/modprobe nvidia-drm"
167 +ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", RUN+="/usr/sbin/modprobe nvidia-drm"
168 +EOF
169 +
170 + # Blacklist nouveau
171 + cat > ${PKGDIR}/etc/modprobe.d/nouveau.conf << 'EOF'
124 172 blacklist nouveau
125 173 options nouveau modeset=0
126 174 EOF
127 175
128 176 hooks:
129 177 post-install: |
178 + if [ ! -d "/lib/modules/$(uname -r)/build" ]; then
179 + echo "BŁĄD: Brak nagłówków jądra dla $(uname -r) w /lib/modules/$(uname -r)/build."
180 + echo "Zainstaluj pakiet linux-headers i uruchom: dkms autoinstall"
181 + exit 0
182 + fi
130 183 dkms add -m nvidia -v ${pkgver} || true
131 184 dkms build -m nvidia -v ${pkgver} || true
132 185 dkms install -m nvidia -v ${pkgver} || true