Gentoo Archives: gentoo-commits

From: Jeroen Roovers <jer@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: x11-drivers/nvidia-drivers/
Date: Sat, 02 Feb 2019 14:00:30
Message-Id: 1549116023.336965d3de498397d9d4b8f218ffdcea377f1665.jer@gentoo
1 commit: 336965d3de498397d9d4b8f218ffdcea377f1665
2 Author: Jeroen Roovers <jer <AT> gentoo <DOT> org>
3 AuthorDate: Sat Feb 2 13:56:56 2019 +0000
4 Commit: Jeroen Roovers <jer <AT> gentoo <DOT> org>
5 CommitDate: Sat Feb 2 14:00:23 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=336965d3
7
8 x11-drivers/nvidia-drivers: Version 418.30
9
10 Package-Manager: Portage-2.3.59, Repoman-2.3.12
11 Signed-off-by: Jeroen Roovers <jer <AT> gentoo.org>
12
13 x11-drivers/nvidia-drivers/Manifest | 3 +
14 .../nvidia-drivers/nvidia-drivers-418.30.ebuild | 578 +++++++++++++++++++++
15 2 files changed, 581 insertions(+)
16
17 diff --git a/x11-drivers/nvidia-drivers/Manifest b/x11-drivers/nvidia-drivers/Manifest
18 index 0e3368b7777..2be28a02a4c 100644
19 --- a/x11-drivers/nvidia-drivers/Manifest
20 +++ b/x11-drivers/nvidia-drivers/Manifest
21 @@ -4,6 +4,7 @@ DIST NVIDIA-FreeBSD-x86_64-340.107.tar.gz 61179967 BLAKE2B c12c7c07c090fd7bca78a
22 DIST NVIDIA-FreeBSD-x86_64-390.87.tar.gz 63648591 BLAKE2B 88aa38b11b64b2ad91f723ec84a2adb6829571136aabb1441a9119418395d5f143736487902f0c60b49ebc1284f3100fbd089e4c941cdd3519ab8511cc1d3261 SHA512 0865fef8b8a3be8f6d9fc81908b162fd6062ba0ea81fd00200e7b2a1e3149ef62408b46bc4ccb7a77f1ac943557a22b13a10cfdde084f0b76cf2b23432e57540
23 DIST NVIDIA-FreeBSD-x86_64-410.93.tar.gz 61977979 BLAKE2B a662fa13866cfb36ef61a0b9dd459519e26ea93a6ad6ae7bf34075fae8e7622a91707d88cec8de0660513cb959c3596e8b6169357891c83e847870ecffd72928 SHA512 ecdd5270f9d5f32117d83cd3e3cf0376f0b37c748fe164e702c4230d225c6b28bdbbea4334555b6928d05f1a7cfaf87caf20dd2e7e06e1259c526f6bd50e4d0e
24 DIST NVIDIA-FreeBSD-x86_64-415.27.tar.gz 62389955 BLAKE2B 39ac5970ef1a6ffbb03abe8b758a6f5d7eaca787231845fa4b4bff5f26aa770fb7c695bbd5585d919c934c65b9ed0cfe42f9674bcaabd796c9bd8b89cea87ee6 SHA512 857d1523bad2fca21c75b45c29066be0f530afa8ca124806bcaa36509ac5135df1c4037e6b09e5718c701f085b3608925e2b1fea45d0681e69a99ef709c307d0
25 +DIST NVIDIA-FreeBSD-x86_64-418.30.tar.gz 61657913 BLAKE2B b6e5219dbdacf889a55a9c411f16d1b5a0ccb3a7e8e97b013df5b57ddaa5a89a9079a6fa55d69b4fcdb667dfbd7d1313590af5e24813510c8d411af7744cac7d SHA512 7cd95299fe5244c359bd2ae90a5dc30b014ae4ebc6a08e9f616b0c6c8d015b2832f174c68dc1ac1d905eab355092dd5c6ff1de2f7f2d24cb184ac49fb7ef6777
26 DIST NVIDIA-Linux-armv7l-gnueabihf-390.87.run 29078256 BLAKE2B a7ce24bcaf82e6c2c95cd11a0d9e0e2aa69c717b8455d4ce0a79a9c03c92f5f6b84107dea6347dedc5c4f8fe076e616fc7a36053c6a5f571af9d794bada6cb1f SHA512 3f8ef4eabc7275685bd5d887c6b7dc20786baab1f4a89bfb23ae6c8d837188d93369c777915d3ea010b08e578c4fb7318d9428811971470e31a8b8b4f51e240f
27 DIST NVIDIA-Linux-x86-340.107.run 39016798 BLAKE2B 2632c8f257d0cf7c5b9294eb2c0b763eee6feb60eacc316024655971e4d067c4af6548aab3b7b2b295792b064f3f3ac3e6403a2ecfa096761d308dfb6b2569b8 SHA512 0add713942bcdb639d19b5c36f5e0cea14f9e07490191d46dfeba0515ede7700fd8e9467ec531d38329fe1e76bf45905e70e0d440e7bc2dc79c1d767eab03338
28 DIST NVIDIA-Linux-x86-390.87.run 47959124 BLAKE2B bb799a53b6d25ecd0e6013cea544402c25332efcedf0db5c490dc7ebfa064f97a31427d529f0453092e0f6495a996acb8ffcdd29dc1fed5fc8af31514d959c80 SHA512 18c5ef058098c0f055bada06888ee07da4d1455d90d393357483c289eab27969d49a593318d28e535941e7ebacde33e349f3a1cb2f7c627366ba5c6b7835ccbd
29 @@ -11,7 +12,9 @@ DIST NVIDIA-Linux-x86_64-340.107.run 70233686 BLAKE2B 821a2672dcc3b546fbb3f82623
30 DIST NVIDIA-Linux-x86_64-390.87.run 82690871 BLAKE2B b43a45a7d48160a72185417360a4ff4238922f6d77c7b58c0562f0e01c8aa33e89057e8a5d354e8d3c8e6fa86acf8908a6c2eab81e06158a92908eec18a9b02e SHA512 f4883744f5e07150677918669eed03c7b87774f752112aabd52d903a09ae16351b34105075da2ff0fcb7a847cf66ec17e9797826859fcaecc44fdcd464a61805
31 DIST NVIDIA-Linux-x86_64-410.93.run 107257681 BLAKE2B 56e9b6a17ab4d2fe2f18d90b4e209fe048c53dc43846ee9c8bd0960999a06ef9d9b6ba7e4c242f77cc35cfc5b9a0e2ae24aa5f07f68cb7662bd5010de41a9b36 SHA512 1132884210e447d20768c4ae84ff572c9f6886fb9a082da4d229a03c13932a5c6ccc518cad3311a9302b6a0d9e9675e3a53199e7183e07c81282d46883d26105
32 DIST NVIDIA-Linux-x86_64-415.27.run 108399659 BLAKE2B 05fb81a4ab8626d0170a30b70ed114c639ba7f0e5ac260d2f38cb5042a4d6052e40ada51cf2feff6bae0f394781d77cb70014f390873a715b7d9495b86918bf1 SHA512 5919333136042a227ff36c850d0c57898fb428a77d88633d205a269db4b844356a87f5b1e5c3042f40feaf083d4f82d32df5366820375b601f9d69d98cada0b6
33 +DIST NVIDIA-Linux-x86_64-418.30.run 107191408 BLAKE2B 2d6d2b6da26e7d17f568f65a91ee5a339b54d023595dd381da20df4d27ccf0cce190dda5241290db8c3c231654f36276dfd07628d00d13c8960d63a68337fa4f SHA512 f227923528d54e66d9f79bfaf7239a0e7dd6d59cfa7a7766b36c9a91be091ac0702874f9ed460d4171fb6b67d88adbe2415c70e4f82ff87c8baebd045a493831
34 DIST nvidia-settings-340.107.tar.bz2 1549413 BLAKE2B 127442ee2c35ceec47ab4f103bdd2d0278c621fcb9be47051111f6f8728ef5699bdc95fe33a3812a807c38c4868b04c2176e2ed218a422171d2a88ac0c00de96 SHA512 593e7e83aa350a3a7beaaa32aca8660d7e203f6f2e460a6e6eabcdc092087f9917ee4e6d141e37ad4e3b0a1b9908c085e4a71d2f579e481a03bbd1c6f75ca776
35 DIST nvidia-settings-390.87.tar.bz2 1109274 BLAKE2B 20eb809ceeade932e89592ac91071e6d3311f4a075812225d68342806b7ab1f9f8ed0399ea7a47241b7974311794852fd932fd8e824065589de6c124a3c81ef3 SHA512 cafdf2bfefac187409dfcffd593ff23eaba5ab7ab8dd85a9f14a4b6a47ffb3649af770bd2615887af9d30de3ef8fedaad7afc2ebe9f60a8ba7355a9004702959
36 DIST nvidia-settings-410.93.tar.bz2 1115704 BLAKE2B 1119181feb2704711593c19a43dce5feb58778d0251cb2dcb8647de7bfb1abe3a7f374bddd62e4c983b07a207bca7c1d99a7ac51cba3ae41f78fb97c4d1e9666 SHA512 4e5a5babae382dbe9f6899e51d3b1081fd7123f9ba5e147f7d5cc1899904892ea8d953983e43643ea4355d06348db40005755a02c7c0ff6ba104eac4a9d450f2
37 DIST nvidia-settings-415.27.tar.bz2 1128013 BLAKE2B 36513252ff3d5f2036c80250e012d79bebfc14daff56fdaabb032856f5f78ce77cf4ce32d6eaee5fe4c1a18db63d5c69d6848517f025c711f133e28b3e509396 SHA512 5ac3b673c41194a1952ec10cd3c961aefd281bb044ecae5c9d11cb55d4555fed44e6056b5a2e97b5b87687743cd7f702f33ce7e0f841f04c8175d63693a24594
38 +DIST nvidia-settings-418.30.tar.bz2 1127071 BLAKE2B 2ff35de4d05a8d1a5f5528a7bc65cb8dfc0a7c67a555b20df5be95e2bb5378018a90007f220db12956ab7b108b77b67bca2e03640613287af5afca927cf303e2 SHA512 4c8de5bc7452083c8999c44a6fd4278d3915eaf1fb2146e05805e141a472c5e13fc6de46c28d28a21ee6215ba21de76d2ab21233a3d220409483f4b36442cfa9
39
40 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-418.30.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-418.30.ebuild
41 new file mode 100644
42 index 00000000000..d4ed1c7cf4d
43 --- /dev/null
44 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-418.30.ebuild
45 @@ -0,0 +1,578 @@
46 +# Copyright 1999-2019 Gentoo Authors
47 +# Distributed under the terms of the GNU General Public License v2
48 +
49 +EAPI=6
50 +inherit eutils flag-o-matic linux-info linux-mod multilib-minimal nvidia-driver \
51 + portability toolchain-funcs unpacker user udev
52 +
53 +DESCRIPTION="NVIDIA Accelerated Graphics Driver"
54 +HOMEPAGE="http://www.nvidia.com/"
55 +
56 +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}"
57 +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
58 +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}"
59 +
60 +NV_URI="https://us.download.nvidia.com/XFree86/"
61 +SRC_URI="
62 + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz )
63 + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
64 + tools? (
65 + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2
66 + )
67 +"
68 +
69 +LICENSE="GPL-2 NVIDIA-r2"
70 +SLOT="0/${PV%.*}"
71 +KEYWORDS="-* ~amd64 ~amd64-fbsd"
72 +RESTRICT="bindist mirror"
73 +EMULTILIB_PKG="true"
74 +
75 +IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X"
76 +REQUIRED_USE="
77 + tools? ( X )
78 + static-libs? ( tools )
79 +"
80 +
81 +COMMON="
82 + app-eselect/eselect-opencl
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[X]
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 + >=app-eselect/eselect-opengl-1.0.9
103 + app-misc/pax-utils
104 + )
105 +"
106 +DEPEND="
107 + ${COMMON}
108 + kernel_linux? ( virtual/linux-sources )
109 + tools? ( sys-apps/dbus )
110 +"
111 +RDEPEND="
112 + ${COMMON}
113 + acpi? ( sys-power/acpid )
114 + tools? ( !media-video/nvidia-settings )
115 + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] )
116 + X? (
117 + <x11-base/xorg-server-1.20.99:=
118 + >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
119 + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
120 + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
121 + sys-libs/zlib[${MULTILIB_USEDEP}]
122 + )
123 +"
124 +QA_PREBUILT="opt/* usr/lib*"
125 +S=${WORKDIR}/
126 +
127 +nvidia_drivers_versions_check() {
128 + if use amd64 && has_multilib_profile && \
129 + [ "${DEFAULT_ABI}" != "amd64" ]; then
130 + eerror "This ebuild doesn't currently support changing your default ABI"
131 + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
132 + fi
133 +
134 + if use kernel_linux && kernel_is ge 4 21; then
135 + ewarn "Gentoo supports kernels which are supported by NVIDIA"
136 + ewarn "which are limited to the following kernels:"
137 + ewarn "<sys-kernel/gentoo-sources-4.21"
138 + ewarn "<sys-kernel/vanilla-sources-4.21"
139 + ewarn ""
140 + ewarn "You are free to utilize epatch_user to provide whatever"
141 + ewarn "support you feel is appropriate, but will not receive"
142 + ewarn "support as a result of those changes."
143 + ewarn ""
144 + ewarn "Do not file a bug report about this."
145 + ewarn ""
146 + fi
147 +
148 + # Since Nvidia ships many different series of drivers, we need to give the user
149 + # some kind of guidance as to what version they should install. This tries
150 + # to point the user in the right direction but can't be perfect. check
151 + # nvidia-driver.eclass
152 + nvidia-driver-check-warning
153 +
154 + # Kernel features/options to check for
155 + CONFIG_CHECK="!DEBUG_MUTEXES !I2C_NVIDIA_GPU ~!LOCKDEP ~MTRR ~SYSVIPC ~ZONE_DMA"
156 +
157 + # Now do the above checks
158 + use kernel_linux && check_extra_config
159 +}
160 +
161 +pkg_pretend() {
162 + nvidia_drivers_versions_check
163 +}
164 +
165 +pkg_setup() {
166 + nvidia_drivers_versions_check
167 +
168 + # try to turn off distcc and ccache for people that have a problem with it
169 + export DISTCC_DISABLE=1
170 + export CCACHE_DISABLE=1
171 +
172 + if use driver && use kernel_linux; then
173 + MODULE_NAMES="nvidia(video:${S}/kernel)"
174 + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
175 + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)"
176 +
177 + # This needs to run after MODULE_NAMES (so that the eclass checks
178 + # whether the kernel supports loadable modules) but before BUILD_PARAMS
179 + # is set (so that KV_DIR is populated).
180 + linux-mod_pkg_setup
181 +
182 + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
183 + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
184 +
185 + # linux-mod_src_compile calls set_arch_to_kernel, which
186 + # sets the ARCH to x86 but NVIDIA's wrapping Makefile
187 + # expects x86_64 or i386 and then converts it to x86
188 + # later on in the build process
189 + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
190 + fi
191 +
192 + if use kernel_linux && kernel_is lt 2 6 9; then
193 + eerror "You must build this against 2.6.9 or higher kernels."
194 + fi
195 +
196 + # set variables to where files are in the package structure
197 + if use kernel_FreeBSD; then
198 + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}"
199 + NV_DOC="${S}/doc"
200 + NV_OBJ="${S}/obj"
201 + NV_SRC="${S}/src"
202 + NV_MAN="${S}/x11/man"
203 + NV_X11="${S}/obj"
204 + NV_SOVER=1
205 + elif use kernel_linux; then
206 + NV_DOC="${S}"
207 + NV_OBJ="${S}"
208 + NV_SRC="${S}/kernel"
209 + NV_MAN="${S}"
210 + NV_X11="${S}"
211 + NV_SOVER=${PV}
212 + else
213 + die "Could not determine proper NVIDIA package"
214 + fi
215 +}
216 +
217 +src_prepare() {
218 + local man_file
219 + for man_file in "${NV_MAN}"/*1.gz; do
220 + gunzip $man_file || die
221 + done
222 +
223 + if use tools; then
224 + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die
225 + sed -i \
226 + -e "s:@PV@:${PV}:g" \
227 + "${WORKDIR}"/nvidia-settings-linker.patch || die
228 + eapply "${WORKDIR}"/nvidia-settings-linker.patch
229 + fi
230 +
231 + default
232 +
233 + if ! [ -f nvidia_icd.json ]; then
234 + cp nvidia_icd.json.template nvidia_icd.json || die
235 + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die
236 + fi
237 +}
238 +
239 +src_compile() {
240 + # This is already the default on Linux, as there's no toplevel Makefile, but
241 + # on FreeBSD there's one and triggers the kernel module build, as we install
242 + # it by itself, pass this.
243 +
244 + cd "${NV_SRC}"
245 + if use kernel_FreeBSD; then
246 + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
247 + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
248 + elif use driver && use kernel_linux; then
249 + BUILD_TARGETS=module linux-mod_src_compile \
250 + KERNELRELEASE="${KV_FULL}" \
251 + src="${KERNEL_DIR}"
252 + fi
253 +
254 + if use tools; then
255 + emake -C "${S}"/nvidia-settings-${PV}/src \
256 + AR="$(tc-getAR)" \
257 + CC="$(tc-getCC)" \
258 + DO_STRIP= \
259 + LD="$(tc-getCC)" \
260 + LIBDIR="$(get_libdir)" \
261 + NVLD="$(tc-getLD)" \
262 + NV_VERBOSE=1 \
263 + RANLIB="$(tc-getRANLIB)" \
264 + build-xnvctrl
265 +
266 + emake -C "${S}"/nvidia-settings-${PV}/src \
267 + CC="$(tc-getCC)" \
268 + DO_STRIP= \
269 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
270 + LD="$(tc-getCC)" \
271 + LIBDIR="$(get_libdir)" \
272 + NVLD="$(tc-getLD)" \
273 + NVML_ENABLED=0 \
274 + NV_USE_BUNDLED_LIBJANSSON=0 \
275 + NV_VERBOSE=1
276 + fi
277 +}
278 +
279 +# Install nvidia library:
280 +# the first parameter is the library to install
281 +# the second parameter is the provided soversion
282 +# the third parameter is the target directory if it is not /usr/lib
283 +donvidia() {
284 + # Full path to library
285 + nv_LIB="${1}"
286 +
287 + # SOVER to use
288 + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
289 +
290 + # Where to install
291 + nv_DEST="${2}"
292 +
293 + # Get just the library name
294 + nv_LIBNAME=$(basename "${nv_LIB}")
295 +
296 + if [[ "${nv_DEST}" ]]; then
297 + exeinto ${nv_DEST}
298 + action="doexe"
299 + else
300 + nv_DEST="/usr/$(get_libdir)"
301 + action="dolib.so"
302 + fi
303 +
304 + # Install the library
305 + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
306 +
307 + # If the library has a SONAME and SONAME does not match the library name,
308 + # then we need to create a symlink
309 + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
310 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
311 + || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
312 + fi
313 +
314 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
315 + || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
316 +}
317 +
318 +src_install() {
319 + if use driver && use kernel_linux; then
320 + linux-mod_src_install
321 +
322 + # Add the aliases
323 + # This file is tweaked with the appropriate video group in
324 + # pkg_preinst, see bug #491414
325 + insinto /etc/modprobe.d
326 + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
327 + doins "${FILESDIR}"/nvidia-rmmod.conf
328 +
329 + # Ensures that our device nodes are created when not using X
330 + exeinto "$(get_udevdir)"
331 + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh
332 + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules
333 + elif use kernel_FreeBSD; then
334 + if use x86-fbsd; then
335 + insinto /boot/modules
336 + doins "${S}/src/nvidia.kld"
337 + fi
338 +
339 + exeinto /boot/modules
340 + doexe "${S}/src/nvidia.ko"
341 + fi
342 +
343 + # NVIDIA kernel <-> userspace driver config lib
344 + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
345 +
346 + # NVIDIA framebuffer capture library
347 + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
348 +
349 + # NVIDIA video encode/decode <-> CUDA
350 + if use kernel_linux; then
351 + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
352 + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
353 + fi
354 +
355 + if use X; then
356 + # Xorg DDX driver
357 + insinto /usr/$(get_libdir)/xorg/modules/drivers
358 + doins ${NV_X11}/nvidia_drv.so
359 +
360 + # Xorg GLX driver
361 + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \
362 + /usr/$(get_libdir)/xorg/modules/extensions
363 +
364 + # Xorg nvidia.conf
365 + if has_version '>=x11-base/xorg-server-1.16'; then
366 + insinto /usr/share/X11/xorg.conf.d
367 + newins {,50-}nvidia-drm-outputclass.conf
368 + fi
369 +
370 + insinto /usr/share/glvnd/egl_vendor.d
371 + doins ${NV_X11}/10_nvidia.json
372 + fi
373 +
374 + if use wayland; then
375 + insinto /usr/share/egl/egl_external_platform.d
376 + doins ${NV_X11}/10_nvidia_wayland.json
377 + fi
378 +
379 + # OpenCL ICD for NVIDIA
380 + if use kernel_linux; then
381 + insinto /etc/OpenCL/vendors
382 + doins ${NV_OBJ}/nvidia.icd
383 + fi
384 +
385 + # Documentation
386 + if use kernel_FreeBSD; then
387 + dodoc "${NV_DOC}/README"
388 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
389 + use tools && doman "${NV_MAN}"/nvidia-settings.1
390 + else
391 + # Docs
392 + newdoc "${NV_DOC}/README.txt" README
393 + dodoc "${NV_DOC}/NVIDIA_Changelog"
394 + doman "${NV_MAN}"/nvidia-smi.1
395 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
396 + use tools && doman "${NV_MAN}"/nvidia-settings.1
397 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1
398 + fi
399 +
400 + docinto html
401 + dodoc -r ${NV_DOC}/html/*
402 +
403 + # Helper Apps
404 + exeinto /opt/bin/
405 +
406 + if use X; then
407 + doexe ${NV_OBJ}/nvidia-xconfig
408 +
409 + insinto /etc/vulkan/icd.d
410 + doins nvidia_icd.json
411 + fi
412 +
413 + if use kernel_linux; then
414 + doexe ${NV_OBJ}/nvidia-cuda-mps-control
415 + doexe ${NV_OBJ}/nvidia-cuda-mps-server
416 + doexe ${NV_OBJ}/nvidia-debugdump
417 + doexe ${NV_OBJ}/nvidia-persistenced
418 + doexe ${NV_OBJ}/nvidia-smi
419 +
420 + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092)
421 + doexe ${NV_OBJ}/nvidia-modprobe
422 + fowners root:video /opt/bin/nvidia-modprobe
423 + fperms 4710 /opt/bin/nvidia-modprobe
424 + dosym /{opt,usr}/bin/nvidia-modprobe
425 +
426 + doman nvidia-cuda-mps-control.1
427 + doman nvidia-modprobe.1
428 + doman nvidia-persistenced.1
429 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
430 + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
431 + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
432 + fi
433 +
434 + if use tools; then
435 + emake -C "${S}"/nvidia-settings-${PV}/src/ \
436 + DESTDIR="${D}" \
437 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
438 + LIBDIR="${D}/usr/$(get_libdir)" \
439 + NV_USE_BUNDLED_LIBJANSSON=0 \
440 + NV_VERBOSE=1 \
441 + PREFIX=/usr \
442 + DO_STRIP= \
443 + install
444 +
445 + if use static-libs; then
446 + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a
447 +
448 + insinto /usr/include/NVCtrl
449 + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h
450 + fi
451 +
452 + insinto /usr/share/nvidia/
453 + doins nvidia-application-profiles-${PV}-key-documentation
454 +
455 + insinto /etc/nvidia
456 + newins \
457 + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc
458 +
459 + # There is no icon in the FreeBSD tarball.
460 + use kernel_FreeBSD || \
461 + doicon ${NV_OBJ}/nvidia-settings.png
462 +
463 + domenu "${FILESDIR}"/nvidia-settings.desktop
464 +
465 + exeinto /etc/X11/xinit/xinitrc.d
466 + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
467 + fi
468 +
469 + dobin ${NV_OBJ}/nvidia-bug-report.sh
470 +
471 + if has_multilib_profile && use multilib; then
472 + local OABI=${ABI}
473 + for ABI in $(get_install_abis); do
474 + src_install-libs
475 + done
476 + ABI=${OABI}
477 + unset OABI
478 + else
479 + src_install-libs
480 + fi
481 +
482 + is_final_abi || die "failed to iterate through all ABIs"
483 +
484 + readme.gentoo_create_doc
485 +}
486 +
487 +src_install-libs() {
488 + local inslibdir=$(get_libdir)
489 + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib"
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.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}"
500 + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
501 + "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}"
502 + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}"
503 + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
504 + "libGLESv2.so.2.1.0 ${GL_ROOT}"
505 + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
506 + "libGLX.so.0 ${GL_ROOT}"
507 + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
508 + "libGLdispatch.so.0 ${GL_ROOT}"
509 + "libOpenCL.so.1.0.0 ${CL_ROOT}"
510 + "libOpenGL.so.0 ${GL_ROOT}"
511 + "libcuda.so.${NV_SOVER}"
512 + "libnvcuvid.so.${NV_SOVER}"
513 + "libnvidia-compiler.so.${NV_SOVER}"
514 + "libnvidia-eglcore.so.${NV_SOVER}"
515 + "libnvidia-encode.so.${NV_SOVER}"
516 + "libnvidia-fatbinaryloader.so.${NV_SOVER}"
517 + "libnvidia-fbc.so.${NV_SOVER}"
518 + "libnvidia-glcore.so.${NV_SOVER}"
519 + "libnvidia-glsi.so.${NV_SOVER}"
520 + "libnvidia-glvkspirv.so.${NV_SOVER}"
521 + "libnvidia-ifr.so.${NV_SOVER}"
522 + "libnvidia-opencl.so.${NV_SOVER}"
523 + "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
524 + "libvdpau_nvidia.so.${NV_SOVER}"
525 + )
526 +
527 + if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]];
528 + then
529 + NV_GLX_LIBRARIES+=(
530 + "libnvidia-egl-wayland.so.1.1.2"
531 + )
532 + fi
533 +
534 + if use kernel_FreeBSD; then
535 + NV_GLX_LIBRARIES+=(
536 + "libnvidia-tls.so.${NV_SOVER}"
537 + )
538 + fi
539 +
540 + if use kernel_linux; then
541 + NV_GLX_LIBRARIES+=(
542 + "libnvidia-ml.so.${NV_SOVER}"
543 + "libnvidia-tls.so.${NV_SOVER}"
544 + )
545 + fi
546 +
547 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
548 + then
549 + NV_GLX_LIBRARIES+=(
550 + "libnvidia-cbl.so.${NV_SOVER}"
551 + "libnvidia-rtcore.so.${NV_SOVER}"
552 + "libnvoptix.so.${NV_SOVER}"
553 + )
554 + fi
555 +
556 + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
557 + donvidia "${nv_libdir}"/${NV_LIB}
558 + done
559 + fi
560 +}
561 +
562 +pkg_preinst() {
563 + if use driver && use kernel_linux; then
564 + linux-mod_pkg_preinst
565 +
566 + local videogroup="$(egetent group video | cut -d ':' -f 3)"
567 + if [ -z "${videogroup}" ]; then
568 + eerror "Failed to determine the video group gid"
569 + die "Failed to determine the video group gid"
570 + else
571 + sed -i \
572 + -e "s:PACKAGE:${PF}:g" \
573 + -e "s:VIDEOGID:${videogroup}:" \
574 + "${D}"/etc/modprobe.d/nvidia.conf || die
575 + fi
576 + fi
577 +
578 + # Clean the dynamic libGL stuff's home to ensure
579 + # we dont have stale libs floating around
580 + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
581 + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
582 + fi
583 + # Make sure we nuke the old nvidia-glx's env.d file
584 + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then
585 + rm -f "${ROOT}"/etc/env.d/09nvidia
586 + fi
587 +}
588 +
589 +pkg_postinst() {
590 + use driver && use kernel_linux && linux-mod_pkg_postinst
591 +
592 + # Switch to the nvidia implementation
593 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia
594 + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia
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 +
616 +pkg_prerm() {
617 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
618 +}
619 +
620 +pkg_postrm() {
621 + use driver && use kernel_linux && linux-mod_pkg_postrm
622 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
623 +}