← recipes

Commit 01323597

0
files
+0
added
-0
deleted
@@ -1,202 +1,145 @@
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
1 +pkgname: nvidia-dkms
2 +pkgver: '610.57.04'
3 +pkgrel: '7'
4 +pkgdesc: NVIDIA userspace drivers + 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 +depends:
11 +- dkms
12 +
13 +makedepends:
14 +- grep
15 +- binutils
16 +
17 +source:
18 +- https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}.run
19 +sha256sums:
20 +- SKIP
21 +
22 +build: |
23 + sh NVIDIA-Linux-x86_64-${pkgver}.run --extract-only
24 + cd NVIDIA-Linux-x86_64-${pkgver}
25 + _nvdir="${PWD}"
26 +
27 + # ═══ CZĘŚĆ 1/3: USERSPACE ═══
28 + install -dm0755 ${PKGDIR}/usr/lib
29 + install -dm0755 ${PKGDIR}/usr/bin
30 + install -dm0755 ${PKGDIR}/usr/share/{applications,pixmaps,man/man1,doc/nvidia}
31 + install -dm0755 ${PKGDIR}/usr/share/glvnd/egl_vendor.d
32 + install -dm0755 ${PKGDIR}/usr/share/vulkan/icd.d
33 + install -dm0755 ${PKGDIR}/usr/lib/xorg/modules/{drivers,extensions}
34 +
35 + # Biblioteki .so
36 + for _lib in *.so.${pkgver} *.so.${pkgver%.*.*}; do
37 + [ -f "$_lib" ] && install -m 0755 "$_lib" ${PKGDIR}/usr/lib/
38 + done
39 +
40 + # Binaria
41 + for _bin in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
42 + [ -f "$_bin" ] && install -m 0755 "$_bin" ${PKGDIR}/usr/bin/
43 + done
44 +
45 + # Man pages
46 + for _man in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
47 + [ -f "${_man}.1.gz" ] && install -m 0644 "${_man}.1.gz" ${PKGDIR}/usr/share/man/man1/
48 + done
49 +
50 + # Desktop entry + ikona
51 + if [ -f nvidia-settings.desktop ]; then
52 + sed -e "s@__UTILS_PATH__/@/usr/bin/@g" -e "s@__PIXMAP_PATH__/@/usr/share/pixmaps/@g" \
53 + nvidia-settings.desktop > ${PKGDIR}/usr/share/applications/nvidia-settings.desktop
54 + fi
55 + [ -f nvidia-settings.png ] && install -m 0644 nvidia-settings.png ${PKGDIR}/usr/share/pixmaps/
56 +
57 + # Xorg DDX + GLX
58 + [ -f nvidia_drv.so ] && install -m 0755 nvidia_drv.so ${PKGDIR}/usr/lib/xorg/modules/drivers/
59 + if [ -f libglxserver_nvidia.so.${pkgver} ]; then
60 + install -m 0755 libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/
61 + ln -sf libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
62 + fi
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/
67 +
68 + # SONAME Symlinki
69 + cd ${PKGDIR}/usr/lib
70 + for _lib in *.so.${pkgver}; do
71 + [ -f "$_lib" ] || continue
72 + _soname=$(readelf -d "$_lib" 2>/dev/null | awk -F'[][]' '/SONAME/{print $2}')
73 + [ -n "$_soname" ] && [ ! -e "$_soname" ] && ln -sf "$_lib" "$_soname"
74 + _base=$(echo "$_lib" | sed -E 's/\.so\.[0-9.]+$/.so/')
75 + [ ! -e "$_base" ] && ln -sf "$_lib" "$_base"
76 + done
77 +
78 + # ═══ CZĘŚĆ 2/3: ŹRÓDŁA DKMS ═══
79 + _srcdir="${PKGDIR}/usr/src/nvidia-${pkgver}"
80 + install -dm0755 "${_srcdir}"
81 + cp -r "${_nvdir}"/kernel/* "${_srcdir}/"
82 +
83 + cat > "${_srcdir}/dkms.conf" << EOF
84 +PACKAGE_NAME="nvidia"
85 +PACKAGE_VERSION="${pkgver}"
86 +AUTOINSTALL="yes"
87 +
88 +BUILT_MODULE_NAME[0]="nvidia"
89 +BUILT_MODULE_LOCATION[0]="kernel"
90 +DEST_MODULE_LOCATION[0]="/extra"
91 +
92 +BUILT_MODULE_NAME[1]="nvidia-modeset"
93 +BUILT_MODULE_LOCATION[1]="kernel-modeset"
94 +DEST_MODULE_LOCATION[1]="/extra"
95 +
96 +BUILT_MODULE_NAME[2]="nvidia-uvm"
97 +BUILT_MODULE_LOCATION[2]="kernel-uvm"
98 +DEST_MODULE_LOCATION[2]="/extra"
99 +
100 +BUILT_MODULE_NAME[3]="nvidia-drm"
101 +BUILT_MODULE_LOCATION[3]="kernel-drm"
102 +DEST_MODULE_LOCATION[3]="/extra"
103 +EOF
104 +
105 + # ═══ CZĘŚĆ 3/3: KONFIGURACJA SYSTEMOWA ═══
106 + install -dm0755 ${PKGDIR}/usr/lib/udev/rules.d
107 + install -dm0755 ${PKGDIR}/etc/modprobe.d
108 + install -dm0755 ${PKGDIR}/etc/X11/xorg.conf.d
109 +
110 + cat > ${PKGDIR}/etc/X11/xorg.conf.d/10-nvidia-drm.conf << "EOF"
111 +Section "OutputClass"
112 + Identifier "nvidia"
113 + MatchDriver "nvidia-drm"
114 + Driver "nvidia"
115 + Option "AllowEmptyInitialConfiguration"
116 +EndSection
117 +EOF
118 +
119 + cat > ${PKGDIR}/etc/modprobe.d/nvidia-drm.conf << "EOF"
120 +options nvidia-drm modeset=1
121 +EOF
122 +
123 + cat > ${PKGDIR}/etc/modprobe.d/nouveau.conf << "EOF"
124 +blacklist nouveau
125 +options nouveau modeset=0
126 +EOF
127 +
128 +hooks:
129 + post-install: |
130 + dkms add -m nvidia -v ${pkgver} || true
131 + dkms build -m nvidia -v ${pkgver} || true
132 + dkms install -m nvidia -v ${pkgver} || true
133 + depmod -a || true
134 + dracut --regenerate-all --force || true
135 + ldconfig
136 + udevadm control --reload-rules || true
137 + pre-remove: |
138 + dkms remove -m nvidia -v ${pkgver} --all || true
139 + post-upgrade: |
140 + dkms autoinstall || true
141 + depmod -a || true
142 + dracut --regenerate-all --force || true
143 +
144 +package: |
145 + true