Gentoo Archives: gentoo-commits

From: David Seifert <soap@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: x11-drivers/nvidia-drivers/
Date: Sat, 03 Apr 2021 19:03:14
Message-Id: 1617476559.ed58cc9d7da5c91cd53dffd633926a5468cc3184.soap@gentoo
1 commit: ed58cc9d7da5c91cd53dffd633926a5468cc3184
2 Author: Ionen Wolkens <sudinave <AT> gmail <DOT> com>
3 AuthorDate: Sat Apr 3 19:02:39 2021 +0000
4 Commit: David Seifert <soap <AT> gentoo <DOT> org>
5 CommitDate: Sat Apr 3 19:02:39 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ed58cc9d
7
8 x11-drivers/nvidia-drivers: style re-arrangement and nitpicks
9
10 - Moved CONFIG_CHECK variables to pkg_setup. Will need conditional
11 checks and would rather have everything in one place if going to
12 modify. Not using pkg_pretend as don't want it to fail with a
13 yet-to-be-installed dist-kernel.
14
15 - Normalized kernel_is use to match docs rather than nvidia.eclass.
16
17 - Split nvidia-drivers_make() with _make_install(). ${ED} being wrong
18 or unset during src_compile() would be a no-op but is nonetheless
19 incorrect usage.
20
21 - Moved function declarations to respective phases, no longer shared.
22 Partly to allow pkgcheck and friends to detect variables misuse.
23
24 - Removed some unnecessary globs and quotes.
25
26 - Removed no longer relevant '!= lib' check, was formerly used for
27 egl-wayland but is now in its own package.
28
29 Signed-off-by: Ionen Wolkens <sudinave <AT> gmail.com>
30 Signed-off-by: David Seifert <soap <AT> gentoo.org>
31
32 .../nvidia-drivers-390.141-r1.ebuild | 161 ++++++++++---------
33 .../nvidia-drivers-450.102.04-r1.ebuild | 172 +++++++++++----------
34 .../nvidia-drivers/nvidia-drivers-460.67.ebuild | 172 +++++++++++----------
35 3 files changed, 273 insertions(+), 232 deletions(-)
36
37 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.141-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.141-r1.ebuild
38 index c639458a22d..bff5e56f68c 100644
39 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-390.141-r1.ebuild
40 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-390.141-r1.ebuild
41 @@ -72,18 +72,6 @@ BDEPEND="
42
43 QA_PREBUILT="opt/* usr/lib*"
44
45 -CONFIG_CHECK="
46 - ~DRM_KMS_HELPER
47 - ~SYSVIPC
48 - ~!AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
49 - ~!LOCKDEP
50 - !DEBUG_MUTEXES"
51 -ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
52 - of drivers (no custom config), and optional nvidia-drm.modeset=1.
53 - Cannot be directly selected in the kernel's menuconfig, so enable
54 - options such as CONFIG_DRM_FBDEV_EMULATION instead.
55 - 390.xx branch: also used by a GLX workaround needed for OpenGL."
56 -
57 PATCHES=(
58 "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
59 "${FILESDIR}"/nvidia-settings-390.141-fno-common.patch
60 @@ -96,6 +84,19 @@ HTML_DOCS=( html/. )
61
62 pkg_setup() {
63 use driver || return
64 +
65 + local CONFIG_CHECK="
66 + ~DRM_KMS_HELPER
67 + ~SYSVIPC
68 + ~!AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
69 + ~!LOCKDEP
70 + !DEBUG_MUTEXES"
71 + local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
72 + of drivers (no custom config), and optional nvidia-drm.modeset=1.
73 + Cannot be directly selected in the kernel's menuconfig, so enable
74 + options such as CONFIG_DRM_FBDEV_EMULATION instead.
75 + 390.xx branch: also used by a GLX workaround needed for OpenGL."
76 +
77 BUILD_PARAMS='NV_VERBOSE=1 IGNORE_CC_MISMATCH=yes SYSSRC="${KV_DIR}" SYSOUT="${KV_OUT_DIR}"'
78 use x86 && BUILD_PARAMS+=' ARCH=i386' # needed for recognition
79 BUILD_TARGETS="modules" # defaults' clean sometimes deletes modules
80 @@ -104,9 +105,10 @@ pkg_setup() {
81 nvidia-drm(video:kernel)
82 nvidia-modeset(video:kernel)"
83 use amd64 && MODULE_NAMES+=" nvidia-uvm(video:kernel)" # no x86 support
84 +
85 linux-mod_pkg_setup
86
87 - if [[ ${MERGE_TYPE} != binary ]] && kernel_is gt ${NV_KERNEL_MAX/./ }; then
88 + if [[ ${MERGE_TYPE} != binary ]] && kernel_is -gt ${NV_KERNEL_MAX/./ }; then
89 ewarn "Kernel ${KV_MAJOR}.${KV_MINOR} is either known to break this version of nvidia-drivers"
90 ewarn "or was not tested with it. It is recommended to use one of:"
91 ewarn " <=sys-kernel/gentoo-kernel-${NV_KERNEL_MAX}"
92 @@ -153,16 +155,18 @@ src_prepare() {
93 gzip -d nvidia-{cuda-mps-control,smi}.1.gz || die
94 }
95
96 -nvidia-drivers_make() {
97 - emake -C nvidia-${1} ${2} \
98 - DESTDIR="${ED}" PREFIX=/usr LIBDIR="${ED}/usr/$(get_libdir)" \
99 - HOST_CC="$(tc-getBUILD_CC)" HOST_LD="$(tc-getBUILD_LD)" \
100 - DO_STRIP= MANPAGE_GZIP= \
101 - NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 OUTPUTDIR=out
102 -}
103 -
104 src_compile() {
105 + nvidia-drivers_make() {
106 + emake -C nvidia-${1} ${2} \
107 + PREFIX="${EPREFIX}/usr" \
108 + HOST_CC="$(tc-getBUILD_CC)" \
109 + HOST_LD="$(tc-getBUILD_LD)" \
110 + NV_USE_BUNDLED_LIBJANSSON=0 \
111 + NV_VERBOSE=1 DO_STRIP= OUTPUTDIR=out
112 + }
113 +
114 tc-export AR CC LD OBJCOPY
115 +
116 # may no longer be relevant but kept as a safety
117 export DISTCC_DISABLE=1 CCACHE_DISABLE=1
118
119 @@ -183,60 +187,69 @@ src_compile() {
120 fi
121 }
122
123 -nvidia-drivers_libs_install() {
124 - local libs=(
125 - EGL_nvidia
126 - GLESv1_CM_nvidia
127 - GLESv2_nvidia
128 - cuda
129 - nvcuvid
130 - nvidia-compiler
131 - nvidia-eglcore
132 - nvidia-encode
133 - nvidia-fatbinaryloader
134 - nvidia-glcore
135 - nvidia-glsi
136 - nvidia-ml
137 - nvidia-opencl
138 - nvidia-ptxjitcompiler
139 - nvidia-tls
140 - )
141 -
142 - if use X; then
143 - libs+=(
144 - GLX_nvidia
145 - nvidia-fbc
146 - nvidia-ifr
147 - vdpau_nvidia
148 - )
149 - fi
150 -
151 - local libdir=.
152 - if multilib_is_native_abi; then
153 - libs+=(
154 - nvidia-cfg
155 - nvidia-wfb
156 +src_install() {
157 + nvidia-drivers_make_install() {
158 + emake -C nvidia-${1} install \
159 + DESTDIR="${D}" \
160 + PREFIX="${EPREFIX}/usr" \
161 + LIBDIR="${ED}/usr/$(get_libdir)" \
162 + NV_USE_BUNDLED_LIBJANSSON=0 \
163 + NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
164 + }
165 +
166 + nvidia-drivers_libs_install() {
167 + local libs=(
168 + EGL_nvidia
169 + GLESv1_CM_nvidia
170 + GLESv2_nvidia
171 + cuda
172 + nvcuvid
173 + nvidia-compiler
174 + nvidia-eglcore
175 + nvidia-encode
176 + nvidia-fatbinaryloader
177 + nvidia-glcore
178 + nvidia-glsi
179 + nvidia-ml
180 + nvidia-opencl
181 + nvidia-ptxjitcompiler
182 + nvidia-tls
183 )
184 - else
185 - libdir+=/32
186 - fi
187
188 - local lib soname
189 - for lib in "${libs[@]}"; do
190 - [[ ${lib:0:3} != lib ]] && lib=lib${lib}.so.${PV}
191 + if use X; then
192 + libs+=(
193 + GLX_nvidia
194 + nvidia-fbc
195 + nvidia-ifr
196 + vdpau_nvidia
197 + )
198 + fi
199
200 - # auto-detect soname and create appropriate symlinks
201 - soname=$(scanelf -qF'%S#F' "${lib}") || die "Scanning ${lib} failed"
202 - if [[ ${soname} && ${soname} != ${lib} ]]; then
203 - ln -s ${lib} ${libdir}/${soname} || die
204 + local libdir=.
205 + if multilib_is_native_abi; then
206 + libs+=(
207 + nvidia-cfg
208 + nvidia-wfb
209 + )
210 + else
211 + libdir+=/32
212 fi
213 - ln -s ${lib} ${libdir}/${lib%.so*}.so || die
214
215 - dolib.so ${libdir}/${lib%.so*}*
216 - done
217 -}
218 + local lib soname
219 + for lib in "${libs[@]}"; do
220 + lib=lib${lib}.so.${PV}
221 +
222 + # auto-detect soname and create appropriate symlinks
223 + soname=$(scanelf -qF'%S#F' ${lib}) || die "Scanning ${lib} failed"
224 + if [[ ${soname} && ${soname} != ${lib} ]]; then
225 + ln -s ${lib} ${libdir}/${soname} || die
226 + fi
227 + ln -s ${lib} ${libdir}/${lib%.so*}.so || die
228 +
229 + dolib.so ${libdir}/${lib%.so*}*
230 + done
231 + }
232
233 -src_install() {
234 if use driver; then
235 linux-mod_src_install
236
237 @@ -271,20 +284,20 @@ src_install() {
238 newins nvidia-application-profiles{-${PV},}-rc
239
240 # install built helpers
241 - nvidia-drivers_make modprobe install
242 + nvidia-drivers_make_install modprobe
243 # allow video group to load mods and create devs (bug #505092)
244 fowners root:video /usr/bin/nvidia-modprobe
245 fperms 4710 /usr/bin/nvidia-modprobe
246
247 - nvidia-drivers_make persistenced install
248 + nvidia-drivers_make_install persistenced
249 newconfd "${FILESDIR}/nvidia-persistenced.confd" nvidia-persistenced
250 newinitd "${FILESDIR}/nvidia-persistenced.initd" nvidia-persistenced
251 systemd_dounit nvidia-persistenced.service
252
253 - use X && nvidia-drivers_make xconfig install
254 + use X && nvidia-drivers_make_install xconfig
255
256 if use tools; then
257 - nvidia-drivers_make settings install
258 + nvidia-drivers_make_install settings
259 doicon nvidia-settings/doc/nvidia-settings.png
260 domenu nvidia-settings/doc/nvidia-settings.desktop
261
262 @@ -316,7 +329,7 @@ src_install() {
263 doman nvidia-smi.1
264
265 # install prebuilt-only libraries
266 - mv tls/* . || die # alternate tls lib needed for libglx.so
267 + mv tls/libnvidia-tls.so.${PV} . || die # alt tls lib needed by libglx.so
268 multilib_foreach_abi nvidia-drivers_libs_install
269
270 einstalldocs
271
272 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-450.102.04-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-450.102.04-r1.ebuild
273 index d28ef6effc7..a425556ec3c 100644
274 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-450.102.04-r1.ebuild
275 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-450.102.04-r1.ebuild
276 @@ -72,17 +72,6 @@ BDEPEND="
277
278 QA_PREBUILT="opt/* usr/lib*"
279
280 -CONFIG_CHECK="
281 - ~DRM_KMS_HELPER
282 - ~SYSVIPC
283 - ~!AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
284 - ~!LOCKDEP
285 - !DEBUG_MUTEXES"
286 -ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
287 - of drivers (no custom config), and optional nvidia-drm.modeset=1.
288 - Cannot be directly selected in the kernel's menuconfig, so enable
289 - options such as CONFIG_DRM_FBDEV_EMULATION instead."
290 -
291 PATCHES=(
292 "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
293 )
294 @@ -94,6 +83,18 @@ HTML_DOCS=( html/. )
295
296 pkg_setup() {
297 use driver || return
298 +
299 + local CONFIG_CHECK="
300 + ~DRM_KMS_HELPER
301 + ~SYSVIPC
302 + ~!AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
303 + ~!LOCKDEP
304 + !DEBUG_MUTEXES"
305 + local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
306 + of drivers (no custom config), and optional nvidia-drm.modeset=1.
307 + Cannot be directly selected in the kernel's menuconfig, so enable
308 + options such as CONFIG_DRM_FBDEV_EMULATION instead."
309 +
310 BUILD_PARAMS='NV_VERBOSE=1 IGNORE_CC_MISMATCH=yes SYSSRC="${KV_DIR}" SYSOUT="${KV_OUT_DIR}"'
311 BUILD_TARGETS="modules" # defaults' clean sometimes deletes modules
312 MODULE_NAMES="
313 @@ -101,9 +102,10 @@ pkg_setup() {
314 nvidia-drm(video:kernel)
315 nvidia-modeset(video:kernel)
316 nvidia-uvm(video:kernel)"
317 +
318 linux-mod_pkg_setup
319
320 - if [[ ${MERGE_TYPE} != binary ]] && kernel_is gt ${NV_KERNEL_MAX/./ }; then
321 + if [[ ${MERGE_TYPE} != binary ]] && kernel_is -gt ${NV_KERNEL_MAX/./ }; then
322 ewarn "Kernel ${KV_MAJOR}.${KV_MINOR} is either known to break this version of nvidia-drivers"
323 ewarn "or was not tested with it. It is recommended to use one of:"
324 ewarn " <=sys-kernel/gentoo-kernel-${NV_KERNEL_MAX}"
325 @@ -144,16 +146,18 @@ src_prepare() {
326 gzip -d nvidia-{cuda-mps-control,smi}.1.gz || die
327 }
328
329 -nvidia-drivers_make() {
330 - emake -C nvidia-${1} ${2} \
331 - DESTDIR="${ED}" PREFIX=/usr LIBDIR="${ED}/usr/$(get_libdir)" \
332 - HOST_CC="$(tc-getBUILD_CC)" HOST_LD="$(tc-getBUILD_LD)" \
333 - DO_STRIP= MANPAGE_GZIP= \
334 - NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 OUTPUTDIR=out
335 -}
336 -
337 src_compile() {
338 + nvidia-drivers_make() {
339 + emake -C nvidia-${1} ${2} \
340 + PREFIX="${EPREFIX}/usr" \
341 + HOST_CC="$(tc-getBUILD_CC)" \
342 + HOST_LD="$(tc-getBUILD_LD)" \
343 + NV_USE_BUNDLED_LIBJANSSON=0 \
344 + NV_VERBOSE=1 DO_STRIP= OUTPUTDIR=out
345 + }
346 +
347 tc-export AR CC LD OBJCOPY
348 +
349 # may no longer be relevant but kept as a safety
350 export DISTCC_DISABLE=1 CCACHE_DISABLE=1
351
352 @@ -170,69 +174,78 @@ src_compile() {
353 fi
354 }
355
356 -nvidia-drivers_libs_install() {
357 - local libs=(
358 - EGL_nvidia
359 - GLESv1_CM_nvidia
360 - GLESv2_nvidia
361 - cuda
362 - nvcuvid
363 - nvidia-allocator
364 - nvidia-eglcore
365 - nvidia-encode
366 - nvidia-glcore
367 - nvidia-glsi
368 - nvidia-glvkspirv
369 - nvidia-ml
370 - nvidia-opencl
371 - nvidia-opticalflow
372 - nvidia-ptxjitcompiler
373 - nvidia-tls
374 - )
375 - use amd64 && libs+=( nvidia-compiler )
376 -
377 - if use X; then
378 - libs+=(
379 - GLX_nvidia
380 - vdpau_nvidia
381 +src_install() {
382 + nvidia-drivers_make_install() {
383 + emake -C nvidia-${1} install \
384 + DESTDIR="${D}" \
385 + PREFIX="${EPREFIX}/usr" \
386 + LIBDIR="${ED}/usr/$(get_libdir)" \
387 + NV_USE_BUNDLED_LIBJANSSON=0 \
388 + NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
389 + }
390 +
391 + nvidia-drivers_libs_install() {
392 + local libs=(
393 + EGL_nvidia
394 + GLESv1_CM_nvidia
395 + GLESv2_nvidia
396 + cuda
397 + nvcuvid
398 + nvidia-allocator
399 + nvidia-eglcore
400 + nvidia-encode
401 + nvidia-glcore
402 + nvidia-glsi
403 + nvidia-glvkspirv
404 + nvidia-ml
405 + nvidia-opencl
406 + nvidia-opticalflow
407 + nvidia-ptxjitcompiler
408 + nvidia-tls
409 )
410 - if use amd64; then
411 + use amd64 && libs+=( nvidia-compiler )
412 +
413 + if use X; then
414 libs+=(
415 - nvidia-fbc
416 - nvidia-ifr
417 + GLX_nvidia
418 + vdpau_nvidia
419 )
420 + if use amd64; then
421 + libs+=(
422 + nvidia-fbc
423 + nvidia-ifr
424 + )
425 + fi
426 fi
427 - fi
428
429 - local libdir=.
430 - if multilib_is_native_abi; then
431 - libs+=(
432 - nvidia-cbl
433 - nvidia-cfg
434 - nvidia-rtcore
435 - nvoptix
436 - )
437 - use amd64 && libs+=( nvidia-ngx )
438 - else
439 - libdir+=/32
440 - fi
441 + local libdir=.
442 + if multilib_is_native_abi; then
443 + libs+=(
444 + nvidia-cbl
445 + nvidia-cfg
446 + nvidia-rtcore
447 + nvoptix
448 + )
449 + use amd64 && libs+=( nvidia-ngx )
450 + else
451 + libdir+=/32
452 + fi
453
454 - local lib soname
455 - for lib in "${libs[@]}"; do
456 - [[ ${lib:0:3} != lib ]] && lib=lib${lib}.so.${PV}
457 + local lib soname
458 + for lib in "${libs[@]}"; do
459 + lib=lib${lib}.so.${PV}
460
461 - # auto-detect soname and create appropriate symlinks
462 - soname=$(scanelf -qF'%S#F' "${lib}") || die "Scanning ${lib} failed"
463 - if [[ ${soname} && ${soname} != ${lib} ]]; then
464 - ln -s ${lib} ${libdir}/${soname} || die
465 - fi
466 - ln -s ${lib} ${libdir}/${lib%.so*}.so || die
467 + # auto-detect soname and create appropriate symlinks
468 + soname=$(scanelf -qF'%S#F' ${lib}) || die "Scanning ${lib} failed"
469 + if [[ ${soname} && ${soname} != ${lib} ]]; then
470 + ln -s ${lib} ${libdir}/${soname} || die
471 + fi
472 + ln -s ${lib} ${libdir}/${lib%.so*}.so || die
473
474 - dolib.so ${libdir}/${lib%.so*}*
475 - done
476 -}
477 + dolib.so ${libdir}/${lib%.so*}*
478 + done
479 + }
480
481 -src_install() {
482 if use driver; then
483 linux-mod_src_install
484
485 @@ -273,20 +286,20 @@ src_install() {
486 newins nvidia-application-profiles{-${PV},}-rc
487
488 # install built helpers
489 - nvidia-drivers_make modprobe install
490 + nvidia-drivers_make_install modprobe
491 # allow video group to load mods and create devs (bug #505092)
492 fowners root:video /usr/bin/nvidia-modprobe
493 fperms 4710 /usr/bin/nvidia-modprobe
494
495 - nvidia-drivers_make persistenced install
496 + nvidia-drivers_make_install persistenced
497 newconfd "${FILESDIR}/nvidia-persistenced.confd" nvidia-persistenced
498 newinitd "${FILESDIR}/nvidia-persistenced.initd" nvidia-persistenced
499 systemd_dounit nvidia-persistenced.service
500
501 - use X && nvidia-drivers_make xconfig install
502 + use X && nvidia-drivers_make_install xconfig
503
504 if use tools; then
505 - nvidia-drivers_make settings install
506 + nvidia-drivers_make_install settings
507 doicon nvidia-settings/doc/nvidia-settings.png
508 domenu nvidia-settings/doc/nvidia-settings.desktop
509
510 @@ -320,10 +333,11 @@ src_install() {
511 # install prebuilt-only libraries
512 multilib_foreach_abi nvidia-drivers_libs_install
513
514 + # install systemd sleep services
515 exeinto /lib/systemd/system-sleep
516 doexe nvidia
517 dobin nvidia-sleep.sh
518 - systemd_dounit *.service
519 + systemd_dounit nvidia-{hibernate,resume,suspend}.service
520
521 einstalldocs
522 }
523
524 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-460.67.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-460.67.ebuild
525 index e6d9570a271..b160a613192 100644
526 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-460.67.ebuild
527 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-460.67.ebuild
528 @@ -72,17 +72,6 @@ BDEPEND="
529
530 QA_PREBUILT="opt/* usr/lib*"
531
532 -CONFIG_CHECK="
533 - ~DRM_KMS_HELPER
534 - ~SYSVIPC
535 - ~!AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
536 - ~!LOCKDEP
537 - !DEBUG_MUTEXES"
538 -ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
539 - of drivers (no custom config), and optional nvidia-drm.modeset=1.
540 - Cannot be directly selected in the kernel's menuconfig, so enable
541 - options such as CONFIG_DRM_FBDEV_EMULATION instead."
542 -
543 PATCHES=(
544 "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
545 )
546 @@ -94,6 +83,18 @@ HTML_DOCS=( html/. )
547
548 pkg_setup() {
549 use driver || return
550 +
551 + local CONFIG_CHECK="
552 + ~DRM_KMS_HELPER
553 + ~SYSVIPC
554 + ~!AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
555 + ~!LOCKDEP
556 + !DEBUG_MUTEXES"
557 + local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
558 + of drivers (no custom config), and optional nvidia-drm.modeset=1.
559 + Cannot be directly selected in the kernel's menuconfig, so enable
560 + options such as CONFIG_DRM_FBDEV_EMULATION instead."
561 +
562 BUILD_PARAMS='NV_VERBOSE=1 IGNORE_CC_MISMATCH=yes SYSSRC="${KV_DIR}" SYSOUT="${KV_OUT_DIR}"'
563 BUILD_TARGETS="modules" # defaults' clean sometimes deletes modules
564 MODULE_NAMES="
565 @@ -101,9 +102,10 @@ pkg_setup() {
566 nvidia-drm(video:kernel)
567 nvidia-modeset(video:kernel)
568 nvidia-uvm(video:kernel)"
569 +
570 linux-mod_pkg_setup
571
572 - if [[ ${MERGE_TYPE} != binary ]] && kernel_is gt ${NV_KERNEL_MAX/./ }; then
573 + if [[ ${MERGE_TYPE} != binary ]] && kernel_is -gt ${NV_KERNEL_MAX/./ }; then
574 ewarn "Kernel ${KV_MAJOR}.${KV_MINOR} is either known to break this version of nvidia-drivers"
575 ewarn "or was not tested with it. It is recommended to use one of:"
576 ewarn " <=sys-kernel/gentoo-kernel-${NV_KERNEL_MAX}"
577 @@ -144,16 +146,18 @@ src_prepare() {
578 gzip -d nvidia-{cuda-mps-control,smi}.1.gz || die
579 }
580
581 -nvidia-drivers_make() {
582 - emake -C nvidia-${1} ${2} \
583 - DESTDIR="${ED}" PREFIX=/usr LIBDIR="${ED}/usr/$(get_libdir)" \
584 - HOST_CC="$(tc-getBUILD_CC)" HOST_LD="$(tc-getBUILD_LD)" \
585 - DO_STRIP= MANPAGE_GZIP= \
586 - NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 OUTPUTDIR=out
587 -}
588 -
589 src_compile() {
590 + nvidia-drivers_make() {
591 + emake -C nvidia-${1} ${2} \
592 + PREFIX="${EPREFIX}/usr" \
593 + HOST_CC="$(tc-getBUILD_CC)" \
594 + HOST_LD="$(tc-getBUILD_LD)" \
595 + NV_USE_BUNDLED_LIBJANSSON=0 \
596 + NV_VERBOSE=1 DO_STRIP= OUTPUTDIR=out
597 + }
598 +
599 tc-export AR CC LD OBJCOPY
600 +
601 # may no longer be relevant but kept as a safety
602 export DISTCC_DISABLE=1 CCACHE_DISABLE=1
603
604 @@ -170,69 +174,78 @@ src_compile() {
605 fi
606 }
607
608 -nvidia-drivers_libs_install() {
609 - local libs=(
610 - EGL_nvidia
611 - GLESv1_CM_nvidia
612 - GLESv2_nvidia
613 - cuda
614 - nvcuvid
615 - nvidia-allocator
616 - nvidia-eglcore
617 - nvidia-encode
618 - nvidia-glcore
619 - nvidia-glsi
620 - nvidia-glvkspirv
621 - nvidia-ml
622 - nvidia-opencl
623 - nvidia-opticalflow
624 - nvidia-ptxjitcompiler
625 - nvidia-tls
626 - )
627 - use amd64 && libs+=( nvidia-compiler )
628 -
629 - if use X; then
630 - libs+=(
631 - GLX_nvidia
632 - vdpau_nvidia
633 +src_install() {
634 + nvidia-drivers_make_install() {
635 + emake -C nvidia-${1} install \
636 + DESTDIR="${D}" \
637 + PREFIX="${EPREFIX}/usr" \
638 + LIBDIR="${ED}/usr/$(get_libdir)" \
639 + NV_USE_BUNDLED_LIBJANSSON=0 \
640 + NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
641 + }
642 +
643 + nvidia-drivers_libs_install() {
644 + local libs=(
645 + EGL_nvidia
646 + GLESv1_CM_nvidia
647 + GLESv2_nvidia
648 + cuda
649 + nvcuvid
650 + nvidia-allocator
651 + nvidia-eglcore
652 + nvidia-encode
653 + nvidia-glcore
654 + nvidia-glsi
655 + nvidia-glvkspirv
656 + nvidia-ml
657 + nvidia-opencl
658 + nvidia-opticalflow
659 + nvidia-ptxjitcompiler
660 + nvidia-tls
661 )
662 - if use amd64; then
663 + use amd64 && libs+=( nvidia-compiler )
664 +
665 + if use X; then
666 libs+=(
667 - nvidia-fbc
668 - nvidia-ifr
669 + GLX_nvidia
670 + vdpau_nvidia
671 )
672 + if use amd64; then
673 + libs+=(
674 + nvidia-fbc
675 + nvidia-ifr
676 + )
677 + fi
678 fi
679 - fi
680
681 - local libdir=.
682 - if multilib_is_native_abi; then
683 - libs+=(
684 - nvidia-cbl
685 - nvidia-cfg
686 - nvidia-rtcore
687 - nvoptix
688 - )
689 - use amd64 && libs+=( nvidia-ngx )
690 - else
691 - libdir+=/32
692 - fi
693 + local libdir=.
694 + if multilib_is_native_abi; then
695 + libs+=(
696 + nvidia-cbl
697 + nvidia-cfg
698 + nvidia-rtcore
699 + nvoptix
700 + )
701 + use amd64 && libs+=( nvidia-ngx )
702 + else
703 + libdir+=/32
704 + fi
705
706 - local lib soname
707 - for lib in "${libs[@]}"; do
708 - [[ ${lib:0:3} != lib ]] && lib=lib${lib}.so.${PV}
709 + local lib soname
710 + for lib in "${libs[@]}"; do
711 + lib=lib${lib}.so.${PV}
712
713 - # auto-detect soname and create appropriate symlinks
714 - soname=$(scanelf -qF'%S#F' "${lib}") || die "Scanning ${lib} failed"
715 - if [[ ${soname} && ${soname} != ${lib} ]]; then
716 - ln -s ${lib} ${libdir}/${soname} || die
717 - fi
718 - ln -s ${lib} ${libdir}/${lib%.so*}.so || die
719 + # auto-detect soname and create appropriate symlinks
720 + soname=$(scanelf -qF'%S#F' ${lib}) || die "Scanning ${lib} failed"
721 + if [[ ${soname} && ${soname} != ${lib} ]]; then
722 + ln -s ${lib} ${libdir}/${soname} || die
723 + fi
724 + ln -s ${lib} ${libdir}/${lib%.so*}.so || die
725
726 - dolib.so ${libdir}/${lib%.so*}*
727 - done
728 -}
729 + dolib.so ${libdir}/${lib%.so*}*
730 + done
731 + }
732
733 -src_install() {
734 if use driver; then
735 linux-mod_src_install
736
737 @@ -273,20 +286,20 @@ src_install() {
738 newins nvidia-application-profiles{-${PV},}-rc
739
740 # install built helpers
741 - nvidia-drivers_make modprobe install
742 + nvidia-drivers_make_install modprobe
743 # allow video group to load mods and create devs (bug #505092)
744 fowners root:video /usr/bin/nvidia-modprobe
745 fperms 4710 /usr/bin/nvidia-modprobe
746
747 - nvidia-drivers_make persistenced install
748 + nvidia-drivers_make_install persistenced
749 newconfd "${FILESDIR}/nvidia-persistenced.confd" nvidia-persistenced
750 newinitd "${FILESDIR}/nvidia-persistenced.initd" nvidia-persistenced
751 systemd_dounit nvidia-persistenced.service
752
753 - use X && nvidia-drivers_make xconfig install
754 + use X && nvidia-drivers_make_install xconfig
755
756 if use tools; then
757 - nvidia-drivers_make settings install
758 + nvidia-drivers_make_install settings
759 doicon nvidia-settings/doc/nvidia-settings.png
760 domenu nvidia-settings/doc/nvidia-settings.desktop
761
762 @@ -320,10 +333,11 @@ src_install() {
763 # install prebuilt-only libraries
764 multilib_foreach_abi nvidia-drivers_libs_install
765
766 + # install systemd sleep services
767 exeinto /lib/systemd/system-sleep
768 doexe nvidia
769 dobin nvidia-sleep.sh
770 - systemd_dounit *.service
771 + systemd_dounit nvidia-{hibernate,resume,suspend}.service
772
773 einstalldocs
774 }