← recipes

Commit 3b3c648e

0
files
+0
added
-0
deleted
@@ -1,121 +1,56 @@
1 -pkgname: nvidia-utils
1 +pkgname: 'nvidia-kernel'
2 2 pkgver: '610.57.04'
3 3 pkgrel: '1'
4 -pkgdesc: NVIDIA userspace drivers: libGLX, libEGL, Vulkan ICD, nvidia-smi
5 -url: https://www.nvidia.com/en-us/drivers/unix/
4 +pkgdesc: 'NVIDIA kernel modules (nvidia, nvidia-modeset, nvidia-uvm, nvidia-drm) prebuilt against the Pagan rolling `kernel` package.'
5 +url: 'https://www.nvidia.com/en-us/drivers/unix/'
6 6 arch: x86_64
7 7 license:
8 8 - custom
9 9
10 +# Moduły budowane POD źródła pakietu `kernel` (/usr/src/kernel), więc jądro musi
11 +# być obecne także w chrootcie buildera – dlatego `kernel` jest i w depends
12 +# (dla systemu docelowego), i w makedepends (żeby pagbuild je doinstalował).
10 13 depends:
11 -- nvidia-dkms
12 -- linux-headers
14 +- 'kernel'
15 +
16 +makedepends:
17 +- 'kernel'
13 18
14 19 source:
15 -- https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}.run
20 +- 'https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}.run'
21 +
16 22 sha256sums:
17 23 - SKIP
18 24
25 +hooks:
26 + # Po instalacji modułów trzeba przeliczyć modules.dep/aliases, żeby
27 + # `modprobe nvidia-drm` (reguła udev autoload) znalazł moduł.
28 + 'post-install': |
29 + for _m in /usr/lib/modules/*; do
30 + [ -d "$_m" ] || continue
31 + _krel=$(basename "$_m")
32 + if [ -e "$_m/kernel/drivers/video/nvidia.ko" ] || [ -e "$_m/kernel/drivers/video/nvidia.ko.zst" ]; then
33 + depmod -a "$_krel" 2>/dev/null || true
34 + fi
35 + done
36 + 'pre-remove': |
37 + depmod -a 2>/dev/null || true
38 +
19 39 build: |
20 40 sh NVIDIA-Linux-x86_64-${pkgver}.run --extract-only
21 - cd NVIDIA-Linux-x86_64-${pkgver}
22 -
23 - # --- Biblioteki ---
24 - install -dm0755 ${PKGDIR}/usr/lib
25 - install -dm0755 ${PKGDIR}/usr/bin
26 - install -dm0755 ${PKGDIR}/usr/share/{applications,pixmaps,man/man1,doc/nvidia}
27 - install -dm0755 ${PKGDIR}/usr/share/glvnd/egl_vendor.d
28 - install -dm0755 ${PKGDIR}/usr/share/vulkan/icd.d
29 - install -dm0755 ${PKGDIR}/usr/lib/xorg/modules/{drivers,extensions}
30 -
31 - # Wszystkie biblioteki .so.${pkgver}
32 - for _lib in *.so.${pkgver} *.so.${pkgver%.*.*}; do
33 - [ -f "$_lib" ] && install -m 0755 "$_lib" ${PKGDIR}/usr/lib/
34 - done
35 -
36 - # nvidia-smi, nvidia-settings, nvidia-xconfig, nvidia-modprobe
37 - for _bin in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
38 - [ -f "$_bin" ] && install -m 0755 "$_bin" ${PKGDIR}/usr/bin/
39 - done
41 + cd NVIDIA-Linux-x86_64-${pkgver}/kernel
40 42
41 - # Man pages
42 - for _man in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
43 - [ -f "${_man}.1.gz" ] && install -m 0644 "${_man}.1.gz" ${PKGDIR}/usr/share/man/man1/
44 - done
43 + # Wersja jądra docelowego (vermagic) bierzemy z DRZEWA ŹRÓDEŁ pakietu `kernel`,
44 + # a NIE z jądra buildera – inaczej `modprobe` odrzuciłby moduł (vermagic).
45 + _krel=$(cat /usr/src/kernel/include/config/kernel.release 2>/dev/null || true)
46 + [ -n "$_krel" ] || _krel=$(make -s -C /usr/src/kernel kernelrelease)
47 + [ -n "$_krel" ] || { echo "BŁĄD: nie ustalono wersji jądra z /usr/src/kernel" >&2; exit 1; }
45 48
46 - # Desktop entry + ikona
47 - if [ -f nvidia-settings.desktop ]; then
48 - sed -e "s@__UTILS_PATH__/@/usr/bin/@g" -e "s@__PIXMAP_PATH__/@/usr/share/pixmaps/@g" \
49 - nvidia-settings.desktop > ${PKGDIR}/usr/share/applications/nvidia-settings.desktop
50 - fi
51 - [ -f nvidia-settings.png ] && install -m 0644 nvidia-settings.png ${PKGDIR}/usr/share/pixmaps/
49 + SYSSRC=/usr/src/kernel make modules
52 50
53 - # Xorg DDX + rozszerzenie GLX
54 - [ -f nvidia_drv.so ] && install -m 0755 nvidia_drv.so ${PKGDIR}/usr/lib/xorg/modules/drivers/
55 - if [ -f libglxserver_nvidia.so.${pkgver} ]; then
56 - install -m 0755 libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/
57 - ln -sf libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
58 - fi
59 -
60 - # EGL vendor (GLVND)
61 - if [ -f 10_nvidia.json ]; then
62 - install -m 0644 10_nvidia.json ${PKGDIR}/usr/share/glvnd/egl_vendor.d/
63 - fi
64 -
65 - # --- KLUCZOWE: Vulkan ICD do icd.d, NIE implicit_layer.d ---
66 - if [ -f nvidia_icd.json ]; then
67 - install -m 0644 nvidia_icd.json ${PKGDIR}/usr/share/vulkan/icd.d/
68 - fi
69 - # Warstwa pośrednia (jeśli jest)
70 - if [ -f nvidia_layers.json ]; then
71 - install -dm0755 ${PKGDIR}/usr/share/vulkan/explicit_layer.d
72 - install -m 0644 nvidia_layers.json ${PKGDIR}/usr/share/vulkan/explicit_layer.d/
73 - fi
74 -
75 - # --- Symlinki SONAME ---
76 - cd ${PKGDIR}/usr/lib
77 - for _lib in *.so.${pkgver}; do
78 - [ -f "$_lib" ] || continue
79 - _soname=$(readelf -d "$_lib" 2>/dev/null | awk -F'[][]' '/SONAME/{print $2}')
80 - if [ -n "$_soname" ] && [ ! -e "$_soname" ]; then
81 - ln -sf "$_lib" "$_soname"
82 - fi
83 - _base=$(echo "$_lib" | sed -E 's/\.so\.[0-9.]+$/.so/')
84 - if [ ! -e "$_base" ]; then
85 - ln -sf "$_lib" "$_base"
86 - fi
87 - done
88 -
89 - # Ręczne symlinki dla kluczowych bibliotek (na wypadek gdyby readelf zawiódł)
90 - for _pair in \
91 - "libGLX_nvidia.so.${pkgver}:libGLX_nvidia.so.0" \
92 - "libEGL_nvidia.so.${pkgver}:libEGL_nvidia.so.0" \
93 - "libGLESv2_nvidia.so.${pkgver}:libGLESv2_nvidia.so.0" \
94 - "libGLESv1_CM_nvidia.so.${pkgver}:libGLESv1_CM_nvidia.so.0" \
95 - "libnvidia-glcore.so.${pkgver}:libnvidia-glcore.so.${pkgver%.*.*}" \
96 - "libnvidia-eglcore.so.${pkgver}:libnvidia-eglcore.so.${pkgver%.*.*}" \
97 - "libnvidia-glsi.so.${pkgver}:libnvidia-glsi.so.${pkgver%.*.*}" \
98 - "libnvidia-rtcore.so.${pkgver}:libnvidia-rtcore.so.${pkgver%.*.*}" \
99 - "libnvidia-allocator.so.${pkgver}:libnvidia-allocator.so.1" \
100 - "libnvidia-egl-gbm.so.${pkgver}:libnvidia-egl-gbm.so.1" \
101 - "libnvidia-egl-wayland.so.${pkgver}:libnvidia-egl-wayland.so.1" \
102 - "libnvidia-vulkan-producer.so.${pkgver}:libnvidia-vulkan-producer.so" \
103 - "libnvidia-api.so.${pkgver}:libnvidia-api.so.1" \
104 - ; do
105 - _src="${_pair%%:*}"; _dst="${_pair##*:}"
106 - [ -f "${_src}" ] && [ ! -e "${_dst}" ] && ln -sf "${_src}" "${_dst}"
107 - done
108 -
109 - # Dokumentacja
110 - if [ -d html ]; then
111 - cp -r html/* ${PKGDIR}/usr/share/doc/nvidia/
112 - fi
51 + _dest="${PKGDIR}/usr/lib/modules/${_krel}/kernel/drivers/video"
52 + install -dm0755 "$_dest"
53 + install -m0644 *.ko "$_dest"/
113 54
114 55 package: |
115 56 true
116 -
117 -hooks:
118 - post-install: |
119 - ldconfig
120 - # Zarejestruj EGL Wayland/GBM jeśli używasz Waylanda
121 - udevadm control --reload-rules || true