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: Sun, 27 Dec 2020 10:58:20
Message-Id: 1609066689.da9731dc7621b6749ef9629067b26dcbe61f8a78.soap@gentoo
1 commit: da9731dc7621b6749ef9629067b26dcbe61f8a78
2 Author: David Seifert <soap <AT> gentoo <DOT> org>
3 AuthorDate: Sun Dec 27 10:58:09 2020 +0000
4 Commit: David Seifert <soap <AT> gentoo <DOT> org>
5 CommitDate: Sun Dec 27 10:58:09 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=da9731dc
7
8 x11-drivers/nvidia-drivers: Version bump to 460.27.04
9
10 Closes: https://bugs.gentoo.org/760078
11 Package-Manager: Portage-3.0.12, Repoman-3.0.2
12 Suggested-by: Ionen Wolkens <sudinave <AT> gmail.com>
13 Signed-off-by: David Seifert <soap <AT> gentoo.org>
14
15 x11-drivers/nvidia-drivers/Manifest | 3 +
16 .../nvidia-drivers/nvidia-drivers-460.27.04.ebuild | 578 +++++++++++++++++++++
17 2 files changed, 581 insertions(+)
18
19 diff --git a/x11-drivers/nvidia-drivers/Manifest b/x11-drivers/nvidia-drivers/Manifest
20 index 5a904b184a6..81b6713f693 100644
21 --- a/x11-drivers/nvidia-drivers/Manifest
22 +++ b/x11-drivers/nvidia-drivers/Manifest
23 @@ -6,6 +6,7 @@ DIST NVIDIA-FreeBSD-x86_64-435.21.tar.gz 64153630 BLAKE2B fee655cc843c004ac0c1ec
24 DIST NVIDIA-FreeBSD-x86_64-440.100.tar.gz 82523267 BLAKE2B 9d8eddcf3a58787a03fab207c197d722ff047f8bc840ea41e8d38815fbfab9e54759b9fbeaa26e3d147f54cb4a510eec421708d3bbb21197922f4dc175ed6df5 SHA512 96f57e1f308f0e5f00ef09a128e91a68ac55033893000e84cf4ff1a910a88798743c911b3effcc26c3f27ae224b733d8c2f87e9ec0596149f65ad7bcd71edbc5
25 DIST NVIDIA-FreeBSD-x86_64-450.80.02.tar.gz 83040706 BLAKE2B d97bae80f6fdcec12fd12af0296f9ba44487cc83c86c14bc9f17d52e0e81107e1eaddd411d06d1bfd27c73bcf71300f7f49218d2a031540c0b42cd62998ef9aa SHA512 6dca92f20102a0432c6b92b7897a2ff5ec3da234af72907539026e18b1da55fc3ae01dc875be07ce9cae808ae4f9c08d2a2af1171db038c37bbba6ca9d03cf3a
26 DIST NVIDIA-FreeBSD-x86_64-455.45.01.tar.gz 116070033 BLAKE2B 4a724ce58fb7164d12b50d1388a2a471903f4aa834cf606adf572e667ef7c1fec7bc291310fdca2d271709fed017b8f361a39bc495d616e6056a4c0afa2443b5 SHA512 4999911944f76fa759126308ac48d0a770e57966c7783e02370f45d9451a50d6015642b385465d4fc800df8c35655b78d90f7c9a8df82bdf81db8be12eacbe87
27 +DIST NVIDIA-FreeBSD-x86_64-460.27.04.tar.gz 103234112 BLAKE2B a631425c00240dabdd1bd4dcc18945c4216352667cdd0c01b465486024cea215ee2423773ead2e22246337a2387b54ae2e16775b0727d57304b53f7ce6648ad7 SHA512 1308f14ae1100471a5aabece85403772cdd1abac44a725c53d33d9f0ee27a83dbd2088c60662f44a6f7d1fe91b43311b767790dcc5787c50546ffbabb62ded1a
28 DIST NVIDIA-Linux-armv7l-gnueabihf-390.132.run 29084574 BLAKE2B 4727627de610928f0808c0213c9d359c5566900972ab9fbd3d0c58b36c0a1331799ceea22b4defdcfb81c3132f6124d8a6357de8124921eef608938afdc1380d SHA512 2f78a722ec31ceda86afc1831cb42d0eab8f8698b94c7fbc8569a6d34693b50e74453d5aaf3c0180f1fc2511b8c237ac635aceb24bcbea468f2a092cb44f98ee
29 DIST NVIDIA-Linux-armv7l-gnueabihf-390.138.run 28540622 BLAKE2B 342852dd6fa371f86d19547d73edef582fe3f04cf4f6e9ec247767951180671ba46f3ed2ee7bab11b0cf2f8bb1eb846b1d7481d318789c14ce79b54fefe0f830 SHA512 e04b8aca202c1df305f7b67ec372322494fa7b77f27cbf04f240527dcac0ce3ffa5e0e9df36b52045ac13fbc2f84b5033784040884ed19072f66f41385d11b97
30 DIST NVIDIA-Linux-x86-390.132.run 48152101 BLAKE2B f1e76c2796d12476a35701607226483a34ee3b50a0c7dc03e3626e8cab4250b07c0f5aa238a0d5d5b65b79dc504963f2723089108281668b2f4fae03f4bf25c5 SHA512 12b0f80b4bbaebc984c7dbacd365795646c7697606242b05095ac61d69d89ab89fded47d583b4b99793ebcea9e38ec1e7b63dda1c2fdce53ab697cafcdbb3a85
31 @@ -16,9 +17,11 @@ DIST NVIDIA-Linux-x86_64-435.21.run 144387574 BLAKE2B e9afd6335182a28f5136dbef55
32 DIST NVIDIA-Linux-x86_64-440.100.run 144653408 BLAKE2B a62e6324f5ac6033c1c4b59486c86a6d4f81b240e5a7ddf9f861f9cfec4daedbe08ef3af6556c1cd4260a5a6fcd1b8bfed886ae617677d87c3a900d0e313267b SHA512 274b3a8e4c801b67a3f71f11da93134bc1a16a48bc85a6bf63265c00bb3fd8caf935dd23c85c40285a162e83c146bd5e34bb0b1d74fc34e7122bfc4c3a8c81e7
33 DIST NVIDIA-Linux-x86_64-450.80.02.run 141055124 BLAKE2B bc4440bb65e4980863f4eb8aa2875a883cbe67f142c8afabe6023956ca2cb765666a5c8a308175c32162194ed821618d2595ad6e45188caf8813d8c8582dc6ea SHA512 ec5c57ed9ac897c671e4b29e0ef4f6a0c233fd4a04d1947a21c3646ddfce38322864cbc607e94e6a74506d99e7b9088cb497b562874a5837d94c000348c97823
34 DIST NVIDIA-Linux-x86_64-455.45.01.run 183481072 BLAKE2B 5756c788cff136692f0d6de4b33d74ad698fcc75cf2fb6f0adc6381a0377bea18eae0f728151ac8b2efb5508c7420c2df3be3fd7d0035b4477e3e3c97e85ab5c SHA512 dd2743cd2304d7f3afc0c3761cf6c848561bcaabcbdc27157d091a89974aff81bcd28aa3e204d33d406abdbafd14e9162f3cbabc950309e06e6cad7b6fa8df69
35 +DIST NVIDIA-Linux-x86_64-460.27.04.run 171853284 BLAKE2B b94adebde82329ff29c5844821feb2f669805669b8a0bd0fa5dbc51b7c315615b63a171a03334a5f7a581e108b18c09e920e7384bbdf5c3d512fe8e5a580168f SHA512 8548649f363d7127b73dc04f8e039d21f39e604aa71a296153203e6c39e1d24b3e39a25c618e05e175d2c9b90bfc88766f7f4150d88d08016ce0f6fef34e51c2
36 DIST nvidia-settings-390.132.tar.bz2 1109373 BLAKE2B cec60b7409f6d352afe3845a2ec65db96183d1fe009340fa3601166718f21b43bb08b63c5eaaaf4c266c7b16e7d374f6ecc00691763d5ae1b6902c8002da5bea SHA512 12553edc1a1ba9c3f578e0e921b25ec7114cbc80a55621cbd612a1bd85c9a518e221b30809058e4df5da6ae75ea7a1cd5c3d9c8f02a0898bc8c08ac9c22ccee3
37 DIST nvidia-settings-390.138.tar.bz2 1109175 BLAKE2B 4171c12de0a6fb97b655567d4cc8b4e6fb92e340aae6d65f0a0583db159478fb11f8d5c4cf0fa5ef87098ec1582ccb896fec9f2bf81e4c748b8ff5ee5d73af6b SHA512 6c54ff039840098c23f2091b4c33ab2b712ff90c16829c568bc39c9375cb2f4fb677bb5ab90efcf2034b15a1d93d13f1fbb40dde1d90092073af7d9f3c16de97
38 DIST nvidia-settings-435.21.tar.bz2 1131222 BLAKE2B 855f5c7667f4a5ec0f917fbb017d70ec6ee5e768f7087e77e54a66dea852c471bd1810a2163fb33204e5f381998a27a4254e0a5d2c73e2b6b624813ff8294f24 SHA512 8b408cc70118df3a138a99fe7fc14f6370d500b8ae26888b27b07de22f6fc6eebd65bd437d83ee82e18a1d8ee4cceec601c414b1947302ca808fff48165f31bb
39 DIST nvidia-settings-440.100.tar.bz2 1129171 BLAKE2B bc8b28ae5743df50177c51a9269ef2b5d11c69dd9f30441179d81e42e7f77c54f327c87a7a5c6a410540bed35eb1ba0cc289b5b98a046deda376dccb29a8206b SHA512 4fe8fbbca1f805652235d898e8451ba89263c81f53e78da471b13ba0668d0d528d04d098b276df6fd2bf7ea7a219a3aa3c4d0bada0a483767c00c0654a5a8818
40 DIST nvidia-settings-450.80.02.tar.bz2 1057306 BLAKE2B 8bd5e3b75c2941c49a6ae3d4e6c1eacd22fe63cf56aae2cc83d58e5be6d72ef58b5abbee757265e799c075d907e37f7d1bba389b8b912c53994c60eed2e71623 SHA512 1724bd5171eaa54d82c12e35890a4289e301b1a6c11c1a6c05ec0a6f0275cbf532011235d8121d7b5882a640cf42c32b3be3eb22ae036dd5a2b8a372c7b5b7f7
41 DIST nvidia-settings-455.45.01.tar.bz2 1057571 BLAKE2B d5a92a920421b19213547269788ccd8c52b59e058ff19acc3b32b188be8648f0152d2cdfa5facf3a601530975350986ea9d188a5a2adf00d49155f8ab7d688a9 SHA512 9199e75475c6c1aaed444676cf5bd12a9818fe5e23e81e06c556229a44a07353cdbc0f3fbb4f818c21d5f6cc4aa62a37e96b5af6689b0d98d01a3709bc045ce3
42 +DIST nvidia-settings-460.27.04.tar.bz2 1060365 BLAKE2B c0b804c770fc7201fc3fba61c47812fb324acee708857e209f2473054fa6b518b5187f08687b67909dbe7c4bb3989f39a88a5ad1c879da73b591f42fec34fa29 SHA512 32e3e954cbdfabfbd6dd635d3b6b807f93ff7da70579cbca248b2b058719c8e0c216f181e58f6d98d1d9911f488caf1e9364bf218985f812d7941070e7ca5269
43
44 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-460.27.04.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-460.27.04.ebuild
45 new file mode 100644
46 index 00000000000..995e03c7a44
47 --- /dev/null
48 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-460.27.04.ebuild
49 @@ -0,0 +1,578 @@
50 +# Copyright 1999-2020 Gentoo Authors
51 +# Distributed under the terms of the GNU General Public License v2
52 +
53 +EAPI=7
54 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \
55 + nvidia-driver portability systemd toolchain-funcs unpacker udev
56 +
57 +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}"
58 +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
59 +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}"
60 +
61 +NV_URI="https://us.download.nvidia.com/XFree86/"
62 +SRC_URI="
63 + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz )
64 + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
65 + tools? (
66 + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2
67 + )
68 +"
69 +
70 +EMULTILIB_PKG="true"
71 +KEYWORDS="-* ~amd64"
72 +LICENSE="GPL-2 NVIDIA-r2"
73 +SLOT="0/${PV%%.*}"
74 +
75 +IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X"
76 +REQUIRED_USE="
77 + tools? ( X )
78 + static-libs? ( tools )
79 +"
80 +
81 +COMMON="
82 + driver? ( kernel_linux? ( acct-group/video ) )
83 + kernel_linux? ( >=sys-libs/glibc-2.6.1 )
84 + tools? (
85 + dev-libs/atk
86 + dev-libs/glib:2
87 + dev-libs/jansson
88 + gtk3? (
89 + x11-libs/gtk+:3
90 + )
91 + x11-libs/cairo
92 + x11-libs/gdk-pixbuf
93 + x11-libs/gtk+:2
94 + x11-libs/libX11
95 + x11-libs/libXext
96 + x11-libs/libXrandr
97 + x11-libs/libXv
98 + x11-libs/libXxf86vm
99 + x11-libs/pango[X]
100 + )
101 + X? (
102 + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
103 + app-misc/pax-utils
104 + libglvnd? (
105 + media-libs/libglvnd[X,${MULTILIB_USEDEP}]
106 + )
107 + )
108 +"
109 +DEPEND="
110 + ${COMMON}
111 + kernel_linux? ( virtual/linux-sources )
112 + tools? ( sys-apps/dbus )
113 +"
114 +RDEPEND="
115 + ${COMMON}
116 + uvm? ( >=virtual/opencl-3 )
117 + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] )
118 + X? (
119 + <x11-base/xorg-server-1.20.99:=
120 + >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
121 + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
122 + sys-libs/zlib[${MULTILIB_USEDEP}]
123 + )
124 + kernel_linux? ( net-libs/libtirpc )
125 +"
126 +QA_PREBUILT="opt/* usr/lib*"
127 +S=${WORKDIR}/
128 +PATCHES=(
129 + "${FILESDIR}"/${PN}-440.26-locale.patch
130 +)
131 +NV_KV_MAX_PLUS="5.11"
132 +CONFIG_CHECK="
133 + !DEBUG_MUTEXES
134 + ~!I2C_NVIDIA_GPU
135 + ~!LOCKDEP
136 + ~DRM
137 + ~DRM_KMS_HELPER
138 + ~SYSVIPC
139 +"
140 +
141 +pkg_pretend() {
142 + nvidia-driver_check
143 +}
144 +
145 +pkg_setup() {
146 + nvidia-driver_check
147 +
148 + # try to turn off distcc and ccache for people that have a problem with it
149 + export DISTCC_DISABLE=1
150 + export CCACHE_DISABLE=1
151 +
152 + if use driver && use kernel_linux; then
153 + MODULE_NAMES="nvidia(video:${S}/kernel)"
154 + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
155 + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)"
156 +
157 + # This needs to run after MODULE_NAMES (so that the eclass checks
158 + # whether the kernel supports loadable modules) but before BUILD_PARAMS
159 + # is set (so that KV_DIR is populated).
160 + linux-mod_pkg_setup
161 +
162 + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
163 + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
164 +
165 + # linux-mod_src_compile calls set_arch_to_kernel, which
166 + # sets the ARCH to x86 but NVIDIA's wrapping Makefile
167 + # expects x86_64 or i386 and then converts it to x86
168 + # later on in the build process
169 + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
170 +
171 + if kernel_is lt 2 6 9; then
172 + eerror "You must build this against 2.6.9 or higher kernels."
173 + fi
174 + fi
175 +
176 + # set variables to where files are in the package structure
177 + if use kernel_FreeBSD; then
178 + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}"
179 + NV_DOC="${S}/doc"
180 + NV_OBJ="${S}/obj"
181 + NV_SRC="${S}/src"
182 + NV_MAN="${S}/x11/man"
183 + NV_X11="${S}/obj"
184 + NV_SOVER=1
185 + elif use kernel_linux; then
186 + NV_DOC="${S}"
187 + NV_OBJ="${S}"
188 + NV_SRC="${S}/kernel"
189 + NV_MAN="${S}"
190 + NV_X11="${S}"
191 + NV_SOVER=${PV}
192 + else
193 + die "Could not determine proper NVIDIA package"
194 + fi
195 +}
196 +
197 +src_configure() {
198 + tc-export AR CC LD OBJCOPY
199 +
200 + default
201 +}
202 +
203 +src_prepare() {
204 + local man_file
205 + for man_file in "${NV_MAN}"/*1.gz; do
206 + gunzip $man_file || die
207 + done
208 +
209 + if use tools; then
210 + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die
211 + sed -i \
212 + -e "s:@PV@:${PV}:g" \
213 + "${WORKDIR}"/nvidia-settings-linker.patch \
214 + || die
215 + eapply "${WORKDIR}"/nvidia-settings-linker.patch
216 + fi
217 +
218 + default
219 +
220 + if ! [ -f nvidia_icd.json ]; then
221 + cp nvidia_icd.json.template nvidia_icd.json || die
222 + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die
223 + fi
224 +}
225 +
226 +src_compile() {
227 + cd "${NV_SRC}"
228 + if use kernel_FreeBSD; then
229 + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
230 + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
231 + elif use driver && use kernel_linux; then
232 + BUILD_TARGETS=module linux-mod_src_compile \
233 + KERNELRELEASE="${KV_FULL}" \
234 + src="${KERNEL_DIR}"
235 + fi
236 +
237 + if use tools; then
238 + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \
239 + DO_STRIP= \
240 + LIBDIR="$(get_libdir)" \
241 + NVLD="$(tc-getLD)" \
242 + NV_VERBOSE=1 \
243 + OUTPUTDIR=. \
244 + RANLIB="$(tc-getRANLIB)"
245 +
246 + emake -C "${S}"/nvidia-settings-${PV}/src \
247 + DO_STRIP= \
248 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
249 + LIBDIR="$(get_libdir)" \
250 + NVLD="$(tc-getLD)" \
251 + NVML_ENABLED=0 \
252 + NV_USE_BUNDLED_LIBJANSSON=0 \
253 + NV_VERBOSE=1 \
254 + OUTPUTDIR=.
255 + fi
256 +}
257 +
258 +# Install nvidia library:
259 +# the first parameter is the library to install
260 +# the second parameter is the provided soversion
261 +# the third parameter is the target directory if it is not /usr/lib
262 +donvidia() {
263 + # Full path to library
264 + nv_LIB="${1}"
265 +
266 + # SOVER to use
267 + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
268 +
269 + # Where to install
270 + nv_DEST="${2}"
271 +
272 + # Get just the library name
273 + nv_LIBNAME=$(basename "${nv_LIB}")
274 +
275 + if [[ "${nv_DEST}" ]]; then
276 + exeinto ${nv_DEST}
277 + action="doexe"
278 + else
279 + nv_DEST="/usr/$(get_libdir)"
280 + action="dolib.so"
281 + fi
282 +
283 + # Install the library
284 + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
285 +
286 + # If the library has a SONAME and SONAME does not match the library name,
287 + # then we need to create a symlink
288 + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
289 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER}
290 + fi
291 +
292 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so}
293 +}
294 +
295 +src_install() {
296 + if use driver && use kernel_linux; then
297 + linux-mod_src_install
298 +
299 + # Add the aliases
300 + # This file is tweaked with the appropriate video group in
301 + # pkg_preinst, see bug #491414
302 + insinto /etc/modprobe.d
303 + newins "${FILESDIR}"/nvidia-430.conf nvidia.conf
304 +
305 + if use uvm; then
306 + doins "${FILESDIR}"/nvidia-rmmod.conf
307 + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules
308 + else
309 + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \
310 + > "${T}"/nvidia-rmmod.conf || die
311 + doins "${T}"/nvidia-rmmod.conf
312 + fi
313 +
314 + # Ensures that our device nodes are created when not using X
315 + exeinto "$(get_udevdir)"
316 + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh
317 + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules
318 + elif use kernel_FreeBSD; then
319 + if use x86-fbsd; then
320 + insinto /boot/modules
321 + doins "${S}/src/nvidia.kld"
322 + fi
323 +
324 + exeinto /boot/modules
325 + doexe "${S}/src/nvidia.ko"
326 + fi
327 +
328 + # NVIDIA kernel <-> userspace driver config lib
329 + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
330 +
331 + # NVIDIA framebuffer capture library
332 + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
333 +
334 + # NVIDIA video encode/decode <-> CUDA
335 + if use kernel_linux; then
336 + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
337 + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
338 + fi
339 +
340 + if use X; then
341 + # Xorg DDX driver
342 + insinto /usr/$(get_libdir)/xorg/modules/drivers
343 + doins ${NV_X11}/nvidia_drv.so
344 +
345 + # Xorg GLX driver
346 + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \
347 + /usr/$(get_libdir)/xorg/modules/extensions
348 +
349 + # Xorg nvidia.conf
350 + if has_version '>=x11-base/xorg-server-1.16'; then
351 + insinto /usr/share/X11/xorg.conf.d
352 + newins {,50-}nvidia-drm-outputclass.conf
353 + fi
354 +
355 + insinto /usr/share/glvnd/egl_vendor.d
356 + doins ${NV_X11}/10_nvidia.json
357 + fi
358 +
359 + if use wayland; then
360 + insinto /usr/share/egl/egl_external_platform.d
361 + doins ${NV_X11}/10_nvidia_wayland.json
362 + fi
363 +
364 + insinto /etc/vulkan/icd.d
365 + doins nvidia_icd.json
366 +
367 + insinto /etc/vulkan/implicit_layer.d
368 + doins nvidia_layers.json
369 +
370 + # OpenCL ICD for NVIDIA
371 + if use kernel_linux; then
372 + insinto /etc/OpenCL/vendors
373 + doins ${NV_OBJ}/nvidia.icd
374 + fi
375 +
376 + # Helper Apps
377 + exeinto /opt/bin/
378 +
379 + if use X; then
380 + doexe ${NV_OBJ}/nvidia-xconfig
381 + fi
382 +
383 + if use kernel_linux; then
384 + doexe ${NV_OBJ}/nvidia-cuda-mps-control
385 + doexe ${NV_OBJ}/nvidia-cuda-mps-server
386 + doexe ${NV_OBJ}/nvidia-debugdump
387 + doexe ${NV_OBJ}/nvidia-persistenced
388 + doexe ${NV_OBJ}/nvidia-smi
389 +
390 + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092)
391 + doexe ${NV_OBJ}/nvidia-modprobe
392 + fowners root:video /opt/bin/nvidia-modprobe
393 + fperms 4710 /opt/bin/nvidia-modprobe
394 + dosym /{opt,usr}/bin/nvidia-modprobe
395 +
396 + doman nvidia-cuda-mps-control.1
397 + doman nvidia-modprobe.1
398 + doman nvidia-persistenced.1
399 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
400 + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
401 + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
402 + fi
403 +
404 + if use tools; then
405 + emake -C "${S}"/nvidia-settings-${PV}/src/ \
406 + DESTDIR="${D}" \
407 + DO_STRIP= \
408 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
409 + LIBDIR="${D}/usr/$(get_libdir)" \
410 + NV_USE_BUNDLED_LIBJANSSON=0 \
411 + NV_VERBOSE=1 \
412 + OUTPUTDIR=. \
413 + PREFIX=/usr \
414 + install
415 +
416 + if use static-libs; then
417 + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a
418 +
419 + insinto /usr/include/NVCtrl
420 + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h
421 + fi
422 +
423 + insinto /usr/share/nvidia/
424 + doins nvidia-application-profiles-${PV}-key-documentation
425 +
426 + insinto /etc/nvidia
427 + newins \
428 + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc
429 +
430 + # There is no icon in the FreeBSD tarball.
431 + use kernel_FreeBSD || \
432 + doicon ${NV_OBJ}/nvidia-settings.png
433 +
434 + domenu "${FILESDIR}"/nvidia-settings.desktop
435 +
436 + exeinto /etc/X11/xinit/xinitrc.d
437 + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
438 + fi
439 +
440 + dobin ${NV_OBJ}/nvidia-bug-report.sh
441 +
442 + systemd_dounit *.service
443 + dobin nvidia-sleep.sh
444 + exeinto /lib/systemd/system-sleep
445 + doexe nvidia
446 +
447 + if has_multilib_profile && use multilib; then
448 + local OABI=${ABI}
449 + for ABI in $(multilib_get_enabled_abis); do
450 + src_install-libs
451 + done
452 + ABI=${OABI}
453 + unset OABI
454 + else
455 + src_install-libs
456 + fi
457 +
458 + is_final_abi || die "failed to iterate through all ABIs"
459 +
460 + # Documentation
461 + if use kernel_FreeBSD; then
462 + dodoc "${NV_DOC}/README"
463 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
464 + use tools && doman "${NV_MAN}"/nvidia-settings.1
465 + else
466 + # Docs
467 + newdoc "${NV_DOC}/README.txt" README
468 + dodoc "${NV_DOC}/NVIDIA_Changelog"
469 + doman "${NV_MAN}"/nvidia-smi.1
470 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
471 + use tools && doman "${NV_MAN}"/nvidia-settings.1
472 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1
473 + fi
474 +
475 + readme.gentoo_create_doc
476 +
477 + dodoc -r supported-gpus
478 +
479 + docinto html
480 + dodoc -r ${NV_DOC}/html/*
481 +}
482 +
483 +src_install-libs() {
484 + local inslibdir=$(get_libdir)
485 + if use libglvnd; then
486 + local GL_ROOT="/usr/$(get_libdir)"
487 + else
488 + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib"
489 + fi
490 + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
491 + local nv_libdir="${NV_OBJ}"
492 +
493 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then
494 + nv_libdir="${NV_OBJ}"/32
495 + fi
496 +
497 + if use X; then
498 + NV_GLX_LIBRARIES=(
499 + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
500 + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
501 + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
502 + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
503 + "libOpenCL.so.1.0.0 ${CL_ROOT}"
504 + "libcuda.so.${NV_SOVER}"
505 + "libnvcuvid.so.${NV_SOVER}"
506 + "libnvidia-compiler.so.${NV_SOVER}"
507 + "libnvidia-eglcore.so.${NV_SOVER}"
508 + "libnvidia-encode.so.${NV_SOVER}"
509 + "libnvidia-fbc.so.${NV_SOVER}"
510 + "libnvidia-glcore.so.${NV_SOVER}"
511 + "libnvidia-glsi.so.${NV_SOVER}"
512 + "libnvidia-glvkspirv.so.${NV_SOVER}"
513 + "libnvidia-ifr.so.${NV_SOVER}"
514 + "libnvidia-opencl.so.${NV_SOVER}"
515 + "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
516 + "libvdpau_nvidia.so.${NV_SOVER}"
517 + )
518 + if ! use libglvnd; then
519 + NV_GLX_LIBRARIES+=(
520 + "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}"
521 + "libGL.so.1.7.0 ${GL_ROOT}"
522 + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}"
523 + "libGLESv2.so.2.1.0 ${GL_ROOT}"
524 + "libGLX.so.0 ${GL_ROOT}"
525 + "libGLdispatch.so.0 ${GL_ROOT}"
526 + "libOpenGL.so.0 ${GL_ROOT}"
527 + )
528 + fi
529 +
530 + if use wayland && [[ ${ABI} == "amd64" ]];
531 + then
532 + NV_GLX_LIBRARIES+=(
533 + "libnvidia-egl-wayland.so.1.1.5"
534 + )
535 + fi
536 +
537 + if use kernel_FreeBSD; then
538 + NV_GLX_LIBRARIES+=(
539 + "libnvidia-tls.so.${NV_SOVER}"
540 + )
541 + fi
542 +
543 + if use kernel_linux; then
544 + NV_GLX_LIBRARIES+=(
545 + "libnvidia-ml.so.${NV_SOVER}"
546 + "libnvidia-tls.so.${NV_SOVER}"
547 + )
548 + fi
549 +
550 + if use kernel_linux && [[ ${ABI} == "amd64" ]];
551 + then
552 + NV_GLX_LIBRARIES+=(
553 + "libnvidia-cbl.so.${NV_SOVER}"
554 + "libnvidia-ngx.so.${NV_SOVER}"
555 + "libnvidia-rtcore.so.${NV_SOVER}"
556 + "libnvoptix.so.${NV_SOVER}"
557 + )
558 + fi
559 +
560 + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
561 + donvidia "${nv_libdir}"/${NV_LIB}
562 + done
563 + fi
564 +}
565 +
566 +pkg_preinst() {
567 + if use driver && use kernel_linux; then
568 + linux-mod_pkg_preinst
569 +
570 + local videogroup="$(getent group video | cut -d ':' -f 3)"
571 + if [ -z "${videogroup}" ]; then
572 + eerror "Failed to determine the video group gid"
573 + die "Failed to determine the video group gid"
574 + else
575 + sed -i \
576 + -e "s:PACKAGE:${PF}:g" \
577 + -e "s:VIDEOGID:${videogroup}:" \
578 + "${D}"/etc/modprobe.d/nvidia.conf || die
579 + fi
580 + fi
581 +
582 + # Clean the dynamic libGL stuff's home to ensure
583 + # we dont have stale libs floating around
584 + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
585 + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
586 + fi
587 + # Make sure we nuke the old nvidia-glx's env.d file
588 + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then
589 + rm -f "${ROOT}"/etc/env.d/09nvidia
590 + fi
591 +}
592 +
593 +pkg_postinst() {
594 + use driver && use kernel_linux && linux-mod_pkg_postinst
595 +
596 + readme.gentoo_print_elog
597 +
598 + if ! use X; then
599 + elog "You have elected to not install the X.org driver. Along with"
600 + elog "this the OpenGL libraries and VDPAU libraries were not"
601 + elog "installed. Additionally, once the driver is loaded your card"
602 + elog "and fan will run at max speed which may not be desirable."
603 + elog "Use the 'nvidia-smi' init script to have your card and fan"
604 + elog "speed scale appropriately."
605 + elog
606 + fi
607 + if ! use tools; then
608 + elog "USE=tools controls whether the nvidia-settings application"
609 + elog "is installed. If you would like to use it, enable that"
610 + elog "flag and re-emerge this ebuild. Optionally you can install"
611 + elog "media-video/nvidia-settings"
612 + elog
613 + fi
614 +
615 + elog "To enable nvidia sleep services under systemd, run these commands:"
616 + elog " systemctl enable nvidia-suspend.service"
617 + elog " systemctl enable nvidia-hibernate.service"
618 + elog " systemctl enable nvidia-resume.service"
619 + elog "Set the NVreg_TemporaryFilePath kernel module parameter to a"
620 + elog "suitable path in case the default of /tmp does not work for you"
621 + elog "For more information see:"
622 + elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html"
623 +}
624 +
625 +pkg_postrm() {
626 + use driver && use kernel_linux && linux-mod_pkg_postrm
627 +}