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