← recipes

Commit 471c603c

0
files
+0
added
-0
deleted
@@ -1,107 +1,202 @@
1 -pkgname: nvidia-dkms
2 -pkgver: '610.57.04'
3 -pkgrel: '5'
4 -pkgdesc: NVIDIA kernel modules (DKMS), Xorg config and udev rules
5 -url: https://www.nvidia.com/en-us/drivers/unix/
6 -arch: x86_64
7 -license:
8 -- custom
9 -
10 -depends:
11 -- kernel
12 -- dkms
13 -- nvidia-utils # FIX: spójność z rozbiciem na dwa pakiety
14 -
15 -makedepends:
16 -- grep
17 -
18 -source:
19 -- https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}.run
20 -sha256sums:
21 -- SKIP
22 -
23 -build: |
24 - sh NVIDIA-Linux-x86_64-${pkgver}.run --extract-only
25 - cd NVIDIA-Linux-x86_64-${pkgver}
26 -
27 - # --- 1. Źródła DKMS ---
28 - _srcdir="${PKGDIR}/usr/src/nvidia-${pkgver}"
29 - install -dm0755 "${_srcdir}"
30 - cp -r kernel/* "${_srcdir}/"
31 -
32 - cat > "${_srcdir}/dkms.conf" << EOF
33 - PACKAGE_NAME="nvidia"
34 - PACKAGE_VERSION="${pkgver}"
35 - AUTOINSTALL="yes"
36 -
37 - BUILT_MODULE_NAME[0]="nvidia"
38 - BUILT_MODULE_LOCATION[0]="."
39 - DEST_MODULE_LOCATION[0]="/kernel/drivers/video/nvidia"
40 -
41 - BUILT_MODULE_NAME[1]="nvidia-modeset"
42 - BUILT_MODULE_LOCATION[1]="."
43 - DEST_MODULE_LOCATION[1]="/kernel/drivers/video/nvidia"
44 -
45 - BUILT_MODULE_NAME[2]="nvidia-uvm"
46 - BUILT_MODULE_LOCATION[2]="."
47 - DEST_MODULE_LOCATION[2]="/kernel/drivers/video/nvidia"
48 -
49 - BUILT_MODULE_NAME[3]="nvidia-drm"
50 - BUILT_MODULE_LOCATION[3]="."
51 - DEST_MODULE_LOCATION[3]="/kernel/drivers/video/nvidia"
52 - EOF
53 -
54 - # --- 2. Konfiguracja systemowa ---
55 - install -dm0755 ${PKGDIR}/usr/lib/udev/rules.d
56 - install -dm0755 ${PKGDIR}/etc/modprobe.d
57 - install -dm0755 ${PKGDIR}/etc/X11/xorg.conf.d
58 -
59 - # Xorg OutputClass
60 - cat > ${PKGDIR}/etc/X11/xorg.conf.d/10-nvidia-drm.conf << "EOF"
61 - Section "OutputClass"
62 - Identifier "nvidia"
63 - MatchDriver "nvidia-drm"
64 - Driver "nvidia"
65 - Option "AllowEmptyInitialConfiguration"
66 - EndSection
67 - EOF
68 -
69 - # FIX: parametr modeset=1 w modprobe (stosuje się przy każdym ładowaniu modułu)
70 - cat > ${PKGDIR}/etc/modprobe.d/nvidia-drm.conf << "EOF"
71 - options nvidia-drm modeset=1
72 - EOF
73 -
74 - # Autoload nvidia-drm (KMS) przy hot-plug
75 - cat > ${PKGDIR}/usr/lib/udev/rules.d/99-pagan-nvidia-autoload.rules << "EOF"
76 - ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", RUN+="/usr/sbin/modprobe nvidia-drm"
77 - ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", RUN+="/usr/sbin/modprobe nvidia-drm"
78 - EOF
79 -
80 - # Blacklist nouveau
81 - cat > ${PKGDIR}/etc/modprobe.d/nouveau.conf << "EOF"
82 - blacklist nouveau
83 - options nouveau modeset=0
84 - EOF
85 -
86 -hooks:
87 - post-install: |
88 - # Sprawdź ścieżkę nagłówków specyficzną dla PaganLinux
89 - if [ ! -d "/lib/modules/$(uname -r)/build" ] && [ ! -d "/usr/src/kernel" ]; then
90 - echo "BŁĄD: Brak nagłówków jądra dla $(uname -r)."
91 - echo "Zainstaluj pakiet kernel (lub kernel-headers) i uruchom: dkms autoinstall"
92 - exit 0
93 - fi
94 - dkms add -m nvidia -v ${pkgver} || true
95 - dkms build -m nvidia -v ${pkgver} || true
96 - dkms install -m nvidia -v ${pkgver} || true
97 - ldconfig
98 - udevadm control --reload-rules || true
99 - pre-remove: |
100 - dkms remove -m nvidia -v ${pkgver} --all || true
101 - post-upgrade: |
102 - # FIX: przy aktualizacji przebuduj moduły dla nowego jądra
103 - dkms autoinstall || true
104 - depmod -a || true
105 -
106 -package: |
107 - true
1 +pkgname: nvidia-dkms
2 +pkgver: '610.57.04'
3 +pkgrel: '6'
4 +pkgdesc: NVIDIA userspace drivers (libGLX, libEGL, Vulkan ICD, nvidia-smi) + DKMS kernel module sources, Xorg config and udev rules
5 +url: https://www.nvidia.com/en-us/drivers/unix/
6 +arch: x86_64
7 +license:
8 +- custom
9 +
10 +# UWAGA: `kernel` (nie `linux-headers`) daje /usr/src/kernel + symlink
11 +# build/source w /usr/lib/modules/<ver> – to jest SYSSRC, którego używa DKMS.
12 +# Zależności NIE zawierają `nvidia-kernel` (to był cykl): pakiet dostarcza
13 +# userspace + źródła DKMS, a gotowe moduły wnosi osobny `nvidia-kernel`.
14 +depends:
15 +- kernel
16 +- dkms
17 +
18 +makedepends:
19 +- grep
20 +- binutils # readelf – pętla SONAME przy instalacji bibliotek userspace
21 +
22 +source:
23 +- https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}.run
24 +sha256sums:
25 +- SKIP
26 +
27 +build: |
28 + sh NVIDIA-Linux-x86_64-${pkgver}.run --extract-only
29 + cd NVIDIA-Linux-x86_64-${pkgver}
30 + _nvdir="${PWD}"
31 +
32 + # ═══ CZĘŚĆ 1/3: USERSPACE (biblioteki GL/EGL/Vulkan, binarki, DDX) ═══
33 + install -dm0755 ${PKGDIR}/usr/lib
34 + install -dm0755 ${PKGDIR}/usr/bin
35 + install -dm0755 ${PKGDIR}/usr/share/{applications,pixmaps,man/man1,doc/nvidia}
36 + install -dm0755 ${PKGDIR}/usr/share/glvnd/egl_vendor.d
37 + install -dm0755 ${PKGDIR}/usr/share/vulkan/icd.d
38 + install -dm0755 ${PKGDIR}/usr/lib/xorg/modules/{drivers,extensions}
39 +
40 + # Wszystkie biblioteki .so.${pkgver}
41 + for _lib in *.so.${pkgver} *.so.${pkgver%.*.*}; do
42 + [ -f "$_lib" ] && install -m 0755 "$_lib" ${PKGDIR}/usr/lib/
43 + done
44 +
45 + # nvidia-smi, nvidia-settings, nvidia-xconfig, nvidia-modprobe
46 + for _bin in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
47 + [ -f "$_bin" ] && install -m 0755 "$_bin" ${PKGDIR}/usr/bin/
48 + done
49 +
50 + # Man pages
51 + for _man in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
52 + [ -f "${_man}.1.gz" ] && install -m 0644 "${_man}.1.gz" ${PKGDIR}/usr/share/man/man1/
53 + done
54 +
55 + # Desktop entry + ikona
56 + if [ -f nvidia-settings.desktop ]; then
57 + sed -e "s@__UTILS_PATH__/@/usr/bin/@g" -e "s@__PIXMAP_PATH__/@/usr/share/pixmaps/@g" \
58 + nvidia-settings.desktop > ${PKGDIR}/usr/share/applications/nvidia-settings.desktop
59 + fi
60 + [ -f nvidia-settings.png ] && install -m 0644 nvidia-settings.png ${PKGDIR}/usr/share/pixmaps/
61 +
62 + # Xorg DDX + rozszerzenie GLX
63 + [ -f nvidia_drv.so ] && install -m 0755 nvidia_drv.so ${PKGDIR}/usr/lib/xorg/modules/drivers/
64 + if [ -f libglxserver_nvidia.so.${pkgver} ]; then
65 + install -m 0755 libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/
66 + ln -sf libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
67 + fi
68 +
69 + # EGL vendor (GLVND)
70 + if [ -f 10_nvidia.json ]; then
71 + install -m 0644 10_nvidia.json ${PKGDIR}/usr/share/glvnd/egl_vendor.d/
72 + fi
73 +
74 + # Vulkan ICD do icd.d, NIE implicit_layer.d
75 + if [ -f nvidia_icd.json ]; then
76 + install -m 0644 nvidia_icd.json ${PKGDIR}/usr/share/vulkan/icd.d/
77 + fi
78 + if [ -f nvidia_layers.json ]; then
79 + install -dm0755 ${PKGDIR}/usr/share/vulkan/explicit_layer.d
80 + install -m 0644 nvidia_layers.json ${PKGDIR}/usr/share/vulkan/explicit_layer.d/
81 + fi
82 +
83 + # Dokumentacja (przed `cd`, bo niżej zmieniamy katalog roboczy)
84 + if [ -d "${_nvdir}/html" ]; then
85 + cp -r "${_nvdir}"/html/* ${PKGDIR}/usr/share/doc/nvidia/ 2>/dev/null || true
86 + fi
87 +
88 + # --- Symlinki SONAME ---
89 + cd ${PKGDIR}/usr/lib
90 + for _lib in *.so.${pkgver}; do
91 + [ -f "$_lib" ] || continue
92 + _soname=$(readelf -d "$_lib" 2>/dev/null | awk -F'[][]' '/SONAME/{print $2}')
93 + if [ -n "$_soname" ] && [ ! -e "$_soname" ]; then
94 + ln -sf "$_lib" "$_soname"
95 + fi
96 + _base=$(echo "$_lib" | sed -E 's/\.so\.[0-9.]+$/.so/')
97 + if [ ! -e "$_base" ]; then
98 + ln -sf "$_lib" "$_base"
99 + fi
100 + done
101 +
102 + # Ręczne symlinki dla kluczowych bibliotek (na wypadek gdyby readelf zawiódł)
103 + for _pair in \
104 + "libGLX_nvidia.so.${pkgver}:libGLX_nvidia.so.0" \
105 + "libEGL_nvidia.so.${pkgver}:libEGL_nvidia.so.0" \
106 + "libGLESv2_nvidia.so.${pkgver}:libGLESv2_nvidia.so.0" \
107 + "libGLESv1_CM_nvidia.so.${pkgver}:libGLESv1_CM_nvidia.so.0" \
108 + "libnvidia-glcore.so.${pkgver}:libnvidia-glcore.so.${pkgver%.*.*}" \
109 + "libnvidia-eglcore.so.${pkgver}:libnvidia-eglcore.so.${pkgver%.*.*}" \
110 + "libnvidia-glsi.so.${pkgver}:libnvidia-glsi.so.${pkgver%.*.*}" \
111 + "libnvidia-rtcore.so.${pkgver}:libnvidia-rtcore.so.${pkgver%.*.*}" \
112 + "libnvidia-allocator.so.${pkgver}:libnvidia-allocator.so.1" \
113 + "libnvidia-egl-gbm.so.${pkgver}:libnvidia-egl-gbm.so.1" \
114 + "libnvidia-egl-wayland.so.${pkgver}:libnvidia-egl-wayland.so.1" \
115 + "libnvidia-vulkan-producer.so.${pkgver}:libnvidia-vulkan-producer.so" \
116 + "libnvidia-api.so.${pkgver}:libnvidia-api.so.1" \
117 + ; do
118 + _src="${_pair%%:*}"; _dst="${_pair##*:}"
119 + [ -f "${_src}" ] && [ ! -e "${_dst}" ] && ln -sf "${_src}" "${_dst}"
120 + done
121 +
122 + # ═══ CZĘŚĆ 2/3: ŹRÓDŁA DKMS (przebudowa modułów po aktualizacji jądra) ═══
123 + _srcdir="${PKGDIR}/usr/src/nvidia-${pkgver}"
124 + install -dm0755 "${_srcdir}"
125 + cp -r "${_nvdir}"/kernel/* "${_srcdir}/"
126 +
127 + cat > "${_srcdir}/dkms.conf" << EOF
128 + PACKAGE_NAME="nvidia"
129 + PACKAGE_VERSION="${pkgver}"
130 + AUTOINSTALL="yes"
131 +
132 + BUILT_MODULE_NAME[0]="nvidia"
133 + BUILT_MODULE_LOCATION[0]="."
134 + DEST_MODULE_LOCATION[0]="/kernel/drivers/video/nvidia"
135 +
136 + BUILT_MODULE_NAME[1]="nvidia-modeset"
137 + BUILT_MODULE_LOCATION[1]="."
138 + DEST_MODULE_LOCATION[1]="/kernel/drivers/video/nvidia"
139 +
140 + BUILT_MODULE_NAME[2]="nvidia-uvm"
141 + BUILT_MODULE_LOCATION[2]="."
142 + DEST_MODULE_LOCATION[2]="/kernel/drivers/video/nvidia"
143 +
144 + BUILT_MODULE_NAME[3]="nvidia-drm"
145 + BUILT_MODULE_LOCATION[3]="."
146 + DEST_MODULE_LOCATION[3]="/kernel/drivers/video/nvidia"
147 + EOF
148 +
149 + # ═══ CZĘŚĆ 3/3: KONFIGURACJA SYSTEMOWA ═══
150 + install -dm0755 ${PKGDIR}/usr/lib/udev/rules.d
151 + install -dm0755 ${PKGDIR}/etc/modprobe.d
152 + install -dm0755 ${PKGDIR}/etc/X11/xorg.conf.d
153 +
154 + # Xorg OutputClass
155 + cat > ${PKGDIR}/etc/X11/xorg.conf.d/10-nvidia-drm.conf << "EOF"
156 + Section "OutputClass"
157 + Identifier "nvidia"
158 + MatchDriver "nvidia-drm"
159 + Driver "nvidia"
160 + Option "AllowEmptyInitialConfiguration"
161 + EndSection
162 + EOF
163 +
164 + # parametr modeset=1 w modprobe (stosuje się przy każdym ładowaniu modułu)
165 + cat > ${PKGDIR}/etc/modprobe.d/nvidia-drm.conf << "EOF"
166 + options nvidia-drm modeset=1
167 + EOF
168 +
169 + # Autoload nvidia-drm (KMS) przy hot-plug
170 + cat > ${PKGDIR}/usr/lib/udev/rules.d/99-pagan-nvidia-autoload.rules << "EOF"
171 + ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", RUN+="/usr/sbin/modprobe nvidia-drm"
172 + ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", RUN+="/usr/sbin/modprobe nvidia-drm"
173 + EOF
174 +
175 + # Blacklist nouveau
176 + cat > ${PKGDIR}/etc/modprobe.d/nouveau.conf << "EOF"
177 + blacklist nouveau
178 + options nouveau modeset=0
179 + EOF
180 +
181 +hooks:
182 + post-install: |
183 + # Sprawdź ścieżkę źródeł/nagłówków jądra (SYSSRC dla DKMS).
184 + if [ ! -d "/lib/modules/$(uname -r)/build" ] && [ ! -d "/usr/src/kernel" ]; then
185 + echo "BŁĄD: Brak nagłówków jądra dla $(uname -r)."
186 + echo "Zainstaluj pakiet kernel i uruchom: dkms autoinstall"
187 + exit 0
188 + fi
189 + dkms add -m nvidia -v ${pkgver} || true
190 + dkms build -m nvidia -v ${pkgver} || true
191 + dkms install -m nvidia -v ${pkgver} || true
192 + ldconfig
193 + udevadm control --reload-rules || true
194 + pre-remove: |
195 + dkms remove -m nvidia -v ${pkgver} --all || true
196 + post-upgrade: |
197 + # przy aktualizacji przebuduj moduły dla nowego jądra
198 + dkms autoinstall || true
199 + depmod -a || true
200 +
201 +package: |
202 + true