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