← recipes

Commit bc504e38

0
files
+0
added
-0
deleted
@@ -1,44 +1,120 @@
1 -pkgname: 'nvidia-kernel'
1 +pkgname: nvidia-utils
2 2 pkgver: '610.57.04'
3 -pkgrel: '3'
4 -pkgdesc: 'NVIDIA 610 modules for the rolling kernel (package kernel).'
5 -url: 'https://www.nvidia.com/en-us/drivers/unix/'
3 +pkgrel: '1'
4 +pkgdesc: NVIDIA userspace drivers: libGLX, libEGL, Vulkan ICD, nvidia-smi
5 +url: https://www.nvidia.com/en-us/drivers/unix/
6 6 arch: x86_64
7 7 license:
8 8 - custom
9 9
10 10 depends:
11 -- 'kernel'
11 +- nvidia-dkms
12 12
13 -makedepends: []
14 13 source:
15 -- 'https://download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}.run'
16 -
14 +- https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}.run
17 15 sha256sums:
18 16 - SKIP
19 17
20 -hooks:
21 - 'post-install': |
22 - # depmod przebudowuje zależności modułów (nvidia → nvidia-drm/modeset/uvm).
23 - # Bez tego jądro nie załaduje nvidia-drm przy starcie.
24 - depmod -a
25 -
26 18 build: |
27 19 sh NVIDIA-Linux-x86_64-${pkgver}.run --extract-only
28 - cd NVIDIA-Linux-x86_64-${pkgver}/kernel
20 + cd NVIDIA-Linux-x86_64-${pkgver}
21 +
22 + # --- Biblioteki ---
23 + install -dm0755 ${PKGDIR}/usr/lib
24 + install -dm0755 ${PKGDIR}/usr/bin
25 + install -dm0755 ${PKGDIR}/usr/share/{applications,pixmaps,man/man1,doc/nvidia}
26 + install -dm0755 ${PKGDIR}/usr/share/glvnd/egl_vendor.d
27 + install -dm0755 ${PKGDIR}/usr/share/vulkan/icd.d
28 + install -dm0755 ${PKGDIR}/usr/lib/xorg/modules/{drivers,extensions}
29 +
30 + # Wszystkie biblioteki .so.${pkgver}
31 + for _lib in *.so.${pkgver} *.so.${pkgver%.*.*}; do
32 + [ -f "$_lib" ] && install -m 0755 "$_lib" ${PKGDIR}/usr/lib/
33 + done
34 +
35 + # nvidia-smi, nvidia-settings, nvidia-xconfig, nvidia-modprobe
36 + for _bin in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
37 + [ -f "$_bin" ] && install -m 0755 "$_bin" ${PKGDIR}/usr/bin/
38 + done
39 +
40 + # Man pages
41 + for _man in nvidia-smi nvidia-settings nvidia-xconfig nvidia-modprobe nvidia-persistenced; do
42 + [ -f "${_man}.1.gz" ] && install -m 0644 "${_man}.1.gz" ${PKGDIR}/usr/share/man/man1/
43 + done
29 44
30 - # Jądro z pakietu `kernel` dostarcza pełne drzewo źródeł w /usr/src/kernel.
31 - SYSSRC="/usr/src/kernel" make modules
45 + # Desktop entry + ikona
46 + if [ -f nvidia-settings.desktop ]; then
47 + sed -e "s@__UTILS_PATH__/@/usr/bin/@g" -e "s@__PIXMAP_PATH__/@/usr/share/pixmaps/@g" \
48 + nvidia-settings.desktop > ${PKGDIR}/usr/share/applications/nvidia-settings.desktop
49 + fi
50 + [ -f nvidia-settings.png ] && install -m 0644 nvidia-settings.png ${PKGDIR}/usr/share/pixmaps/
32 51
33 - # Katalog modułów jest nazwany od wydania jądra (np. 7.2.5-pagan), a NIE
34 - # „kernel” – tak samo jak w obrazie ISO. Dzięki temu moduły leżą dokładnie
35 - # tam, gdzie jądro ich szuka (i gdzie `pag upgrade` podmienia jądro).
36 - KVER="$(make -s -C /usr/src/kernel kernelrelease 2>/dev/null || true)"
37 - [ -n "$KVER" ] || KVER="$(ls /usr/lib/modules | grep -- '-pagan' | head -1)"
38 - [ -n "$KVER" ] || { echo "Nie mogę ustalić wersji jądra (KVER) – brak /usr/src/kernel lub modułów"; exit 1; }
52 + # Xorg DDX + rozszerzenie GLX
53 + [ -f nvidia_drv.so ] && install -m 0755 nvidia_drv.so ${PKGDIR}/usr/lib/xorg/modules/drivers/
54 + if [ -f libglxserver_nvidia.so.${pkgver} ]; then
55 + install -m 0755 libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/
56 + ln -sf libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
57 + fi
39 58
40 - install -dm0755 ${PKGDIR}/usr/lib/modules/${KVER}/kernel/drivers/video
41 - install -m0644 *.ko ${PKGDIR}/usr/lib/modules/${KVER}/kernel/drivers/video
59 + # EGL vendor (GLVND)
60 + if [ -f 10_nvidia.json ]; then
61 + install -m 0644 10_nvidia.json ${PKGDIR}/usr/share/glvnd/egl_vendor.d/
62 + fi
63 +
64 + # --- KLUCZOWE: Vulkan ICD do icd.d, NIE implicit_layer.d ---
65 + if [ -f nvidia_icd.json ]; then
66 + install -m 0644 nvidia_icd.json ${PKGDIR}/usr/share/vulkan/icd.d/
67 + fi
68 + # Warstwa pośrednia (jeśli jest)
69 + if [ -f nvidia_layers.json ]; then
70 + install -dm0755 ${PKGDIR}/usr/share/vulkan/explicit_layer.d
71 + install -m 0644 nvidia_layers.json ${PKGDIR}/usr/share/vulkan/explicit_layer.d/
72 + fi
73 +
74 + # --- Symlinki SONAME ---
75 + cd ${PKGDIR}/usr/lib
76 + for _lib in *.so.${pkgver}; do
77 + [ -f "$_lib" ] || continue
78 + _soname=$(readelf -d "$_lib" 2>/dev/null | awk -F'[][]' '/SONAME/{print $2}')
79 + if [ -n "$_soname" ] && [ ! -e "$_soname" ]; then
80 + ln -sf "$_lib" "$_soname"
81 + fi
82 + _base=$(echo "$_lib" | sed -E 's/\.so\.[0-9.]+$/.so/')
83 + if [ ! -e "$_base" ]; then
84 + ln -sf "$_lib" "$_base"
85 + fi
86 + done
87 +
88 + # Ręczne symlinki dla kluczowych bibliotek (na wypadek gdyby readelf zawiódł)
89 + for _pair in \
90 + "libGLX_nvidia.so.${pkgver}:libGLX_nvidia.so.0" \
91 + "libEGL_nvidia.so.${pkgver}:libEGL_nvidia.so.0" \
92 + "libGLESv2_nvidia.so.${pkgver}:libGLESv2_nvidia.so.0" \
93 + "libGLESv1_CM_nvidia.so.${pkgver}:libGLESv1_CM_nvidia.so.0" \
94 + "libnvidia-glcore.so.${pkgver}:libnvidia-glcore.so.${pkgver%.*.*}" \
95 + "libnvidia-eglcore.so.${pkgver}:libnvidia-eglcore.so.${pkgver%.*.*}" \
96 + "libnvidia-glsi.so.${pkgver}:libnvidia-glsi.so.${pkgver%.*.*}" \
97 + "libnvidia-rtcore.so.${pkgver}:libnvidia-rtcore.so.${pkgver%.*.*}" \
98 + "libnvidia-allocator.so.${pkgver}:libnvidia-allocator.so.1" \
99 + "libnvidia-egl-gbm.so.${pkgver}:libnvidia-egl-gbm.so.1" \
100 + "libnvidia-egl-wayland.so.${pkgver}:libnvidia-egl-wayland.so.1" \
101 + "libnvidia-vulkan-producer.so.${pkgver}:libnvidia-vulkan-producer.so" \
102 + "libnvidia-api.so.${pkgver}:libnvidia-api.so.1" \
103 + ; do
104 + _src="${_pair%%:*}"; _dst="${_pair##*:}"
105 + [ -f "${_src}" ] && [ ! -e "${_dst}" ] && ln -sf "${_src}" "${_dst}"
106 + done
107 +
108 + # Dokumentacja
109 + if [ -d html ]; then
110 + cp -r html/* ${PKGDIR}/usr/share/doc/nvidia/
111 + fi
42 112
43 113 package: |
44 114 true
115 +
116 +hooks:
117 + post-install: |
118 + ldconfig
119 + # Zarejestruj EGL Wayland/GBM jeśli używasz Waylanda
120 + udevadm control --reload-rules || true