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