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: Thu, 15 Aug 2019 07:20:51
Message-Id: 1565853645.4b1e5b0b840eeae42f1b1d1f709244f28c47a9c5.jer@gentoo
1 commit: 4b1e5b0b840eeae42f1b1d1f709244f28c47a9c5
2 Author: Jeroen Roovers <jer <AT> gentoo <DOT> org>
3 AuthorDate: Thu Aug 15 07:16:34 2019 +0000
4 Commit: Jeroen Roovers <jer <AT> gentoo <DOT> org>
5 CommitDate: Thu Aug 15 07:20:45 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4b1e5b0b
7
8 x11-drivers/nvidia-drivers: Version 435.17
9
10 Package-Manager: Portage-2.3.71, Repoman-2.3.17
11 Signed-off-by: Jeroen Roovers <jer <AT> gentoo.org>
12
13 x11-drivers/nvidia-drivers/Manifest | 3 +
14 .../nvidia-drivers/nvidia-drivers-435.17.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 f9243792e41..5fd9b028c81 100644
19 --- a/x11-drivers/nvidia-drivers/Manifest
20 +++ b/x11-drivers/nvidia-drivers/Manifest
21 @@ -6,6 +6,7 @@ DIST NVIDIA-FreeBSD-x86_64-410.104.tar.gz 61995820 BLAKE2B 281b7567fcba6e7457bca
22 DIST NVIDIA-FreeBSD-x86_64-415.27.tar.gz 62389955 BLAKE2B 39ac5970ef1a6ffbb03abe8b758a6f5d7eaca787231845fa4b4bff5f26aa770fb7c695bbd5585d919c934c65b9ed0cfe42f9674bcaabd796c9bd8b89cea87ee6 SHA512 857d1523bad2fca21c75b45c29066be0f530afa8ca124806bcaa36509ac5135df1c4037e6b09e5718c701f085b3608925e2b1fea45d0681e69a99ef709c307d0
23 DIST NVIDIA-FreeBSD-x86_64-418.88.tar.gz 62076023 BLAKE2B 10f9fc4073c926d170a57e165454171c31624824d44a67f78bad68843b87f965361db509a5b86989a1224a347ca0550015ffd8e137ad17974708e802604b397b SHA512 d3a0f029f3d8c78a7419dbf7fd3af1b22ab01cf8d6d770572e44f2b61635e05f17d3262b611a7760b66bdc3ad4283a558c393f0f8c0e64d87eacbc929bb657bc
24 DIST NVIDIA-FreeBSD-x86_64-430.40.tar.gz 62712042 BLAKE2B 6791f5931c715888dc76a0e4d2d28deecce24fc7ab989eba6def0369c3f30ccb680dbc792a0a9c3df9194c21286612c9a02f3130e0db53e06a2071f7b3662097 SHA512 a8fd481bafaff2a5aa68a4b1bc57bed80eb794c2d2a35d26546e113610276d0aec79116fb31bd34283da9fae559eef6357e5639baf8a5ced63eb8af6c26fc7bc
25 +DIST NVIDIA-FreeBSD-x86_64-435.17.tar.gz 64151018 BLAKE2B 22e18998d2b169de759e8f2951f6ffd4bfea643985d45895b267d1a36e211565b30d3937f75c17fe9a0cc3368902b9968eb817767053e691a15eaecc6b5d7412 SHA512 203727be00e8dd2a3df140058c111527bcb2b2689559cccbfd4557b45f832898cd89f04fda810262d4d91a8629c4c85b3a360f10b77a57dbf5c123549a5da0c0
26 DIST NVIDIA-Linux-armv7l-gnueabihf-390.129.run 29102893 BLAKE2B 19f73b7ac4df7d0584f180492676eba65a42c527566175308ebb78bd10e0a43c3f300f013193cafc9eccf1cb32a58f8d6dc574073d4197d2d71d90f224e6a5c4 SHA512 9e7a10e0bbd856a7a630fb8d1660a3e5cd224a04243989dbd24f3cc2e869a817a1fabe98b4257e9e5870a96f8d6dbcf51312c960a4a185457cb011ac9a0246fc
27 DIST NVIDIA-Linux-x86-340.107.run 39016798 BLAKE2B 2632c8f257d0cf7c5b9294eb2c0b763eee6feb60eacc316024655971e4d067c4af6548aab3b7b2b295792b064f3f3ac3e6403a2ecfa096761d308dfb6b2569b8 SHA512 0add713942bcdb639d19b5c36f5e0cea14f9e07490191d46dfeba0515ede7700fd8e9467ec531d38329fe1e76bf45905e70e0d440e7bc2dc79c1d767eab03338
28 DIST NVIDIA-Linux-x86-390.129.run 47560033 BLAKE2B e9b34c51d63dada2714c74cdb4ab199a141b1f5dd9f0d3222b1f5eec6a6a07dd2fdc2a609b9d0683b99c26078f4426082ea25b663c47f33fff4bb84599ac41e2 SHA512 b31d8f6b663fa7da1291fc25b4b08e17019476da521baea41201410a1d8a803b8ac9bad18485ff53589cea281ae4ece749118fa23a63e2c0720aafc60367255f
29 @@ -15,9 +16,11 @@ DIST NVIDIA-Linux-x86_64-410.104.run 106042115 BLAKE2B 2f977d6afd5484fb630e2eeec
30 DIST NVIDIA-Linux-x86_64-415.27.run 108399659 BLAKE2B 05fb81a4ab8626d0170a30b70ed114c639ba7f0e5ac260d2f38cb5042a4d6052e40ada51cf2feff6bae0f394781d77cb70014f390873a715b7d9495b86918bf1 SHA512 5919333136042a227ff36c850d0c57898fb428a77d88633d205a269db4b844356a87f5b1e5c3042f40feaf083d4f82d32df5366820375b601f9d69d98cada0b6
31 DIST NVIDIA-Linux-x86_64-418.88.run 109217245 BLAKE2B fd7e4aee2306cda92e99a3adeb74ada4ac64f81f0ffbc72bac6eb5f0f9815e4f71452e7fdbf49c749b0a7dd0e147e12c44282c2d8be6747b8504b1621b982844 SHA512 c4ee1eae30e8158007c3bbcff941bc8ee0bef9bba216b8a57c42305bc338d2d98d5fc56ec90b0809216a7eba8d7a67fe5be298943f2688daccf5c78efc0dd119
32 DIST NVIDIA-Linux-x86_64-430.40.run 111258448 BLAKE2B 9782181d5044430b374305fc868dd753d0f27c3b2f1f6b4bd34b3a49226730c4cf34b1ea4f3ba2c4fce5739c0408c64cc79f1a2c5a312ff3e09a5d20a79ce625 SHA512 68e6187fe74b43e92de6159589463db5f74eba09652b0f55d5fcc790c315405df6cd27129185f4dbe18790abdbb61e79b52977d47c6407e74d3372b5511a4e1b
33 +DIST NVIDIA-Linux-x86_64-435.17.run 142539690 BLAKE2B 0e196128496fce634dfe8eceb873af5beebe1ac6c1c040c449e24bf00336b16716d065b622ab2a0f26c41c570db156afd5f3b36f2145d96988e9dff1e2a6dff6 SHA512 28f1d82f00d4c46431ec8ce6e2357b94c2eb68516e650ca941ab04e202b0aa15ee6573eb692b43a3eff6afc974a5702b2873a864c43b9f2b0e5b2feb8fe00923
34 DIST nvidia-settings-340.107.tar.bz2 1549413 BLAKE2B 127442ee2c35ceec47ab4f103bdd2d0278c621fcb9be47051111f6f8728ef5699bdc95fe33a3812a807c38c4868b04c2176e2ed218a422171d2a88ac0c00de96 SHA512 593e7e83aa350a3a7beaaa32aca8660d7e203f6f2e460a6e6eabcdc092087f9917ee4e6d141e37ad4e3b0a1b9908c085e4a71d2f579e481a03bbd1c6f75ca776
35 DIST nvidia-settings-390.129.tar.bz2 1109456 BLAKE2B cdce0bba52697e214ea26514467ea6f61fa06429f0a58ca549b74d8da1f7b07cbc52b1c9de6a13aed77545c2ba8c98b212a7865fdc5026dcd74f5565b73c4e1e SHA512 bf004608fbee6a12521fbcd9ab4e3d0333896b320c943ed9f2dc5373d8ffb2eb9cb4c6873a263acac87a9ab67a5f4589344d2bbd70bce36cf14242f4d57e1b87
36 DIST nvidia-settings-410.104.tar.bz2 1120639 BLAKE2B 75554b0cca7c022a0f1cc02091f81ccd930e30e1dd5f674cf35b0cfed83c5e235c360b0f28701d39d42017b35b816f975ff177398eb9f59280851c0b8bfd57d3 SHA512 08d938117fca4d471bdff451219e6772fdd1e9c37c0ed623be8506c1cb5ce7ccde4d073848ade9f5bfca14b1a3cf9eb90b4b4bf44375bff43d023815b622b424
37 DIST nvidia-settings-415.27.tar.bz2 1128013 BLAKE2B 36513252ff3d5f2036c80250e012d79bebfc14daff56fdaabb032856f5f78ce77cf4ce32d6eaee5fe4c1a18db63d5c69d6848517f025c711f133e28b3e509396 SHA512 5ac3b673c41194a1952ec10cd3c961aefd281bb044ecae5c9d11cb55d4555fed44e6056b5a2e97b5b87687743cd7f702f33ce7e0f841f04c8175d63693a24594
38 DIST nvidia-settings-418.88.tar.bz2 1127894 BLAKE2B 04b7c888e006f49e1745ede6eb8db35563c248b3c6be0c15539af1f9224c13ac7273037827e20294b03db0d5a56a62da8544ec605c40fcc0a2a15c741d76af9d SHA512 fbd46aaf41da4f04e8cdb3c484c9170633921673adfc878588f1e5464cc690b8a9fcb37b3c3cb8f0fdb496ed1abafcf0694039543c1354f7b481a46418309099
39 DIST nvidia-settings-430.40.tar.bz2 1131627 BLAKE2B da55a08d3a4d096afe5aec5fc7faf36b10d814cf135a444f06a115b225d94fe20046a266e6afee3660b588561c4fadb1581e6f9ab9196fe19eb171140f05ba9c SHA512 9273887c2487476fc004839320b66726a766b0378dfd81d030386918d67e6a25ec6b26bed1db5c07634347e8cd6782f826c75e9ba8977b06e37880e4b55a1b9f
40 +DIST nvidia-settings-435.17.tar.bz2 1131069 BLAKE2B 9c0b13b5a023b819a4ce88cb238efe8b5b6eb7a7b72d0affe947e84629b55e42ee1f6eddb2c874fb2856918fe7bfb9ea2e844ffdfd6bc298d95ba23ca8b86947 SHA512 30e683f0ad0b663946cdc5bd8aa9eb4e52774f378e1499536b0f7e37c32960ba2a6901cd4dec3eb0ffd874cf0225c5e95f4d69e78ca99d44a93a2de054251344
41
42 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-435.17.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-435.17.ebuild
43 new file mode 100644
44 index 00000000000..0d4aa594934
45 --- /dev/null
46 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-435.17.ebuild
47 @@ -0,0 +1,585 @@
48 +# Copyright 1999-2019 Gentoo Authors
49 +# Distributed under the terms of the GNU General Public License v2
50 +
51 +EAPI=6
52 +inherit eutils flag-o-matic linux-info linux-mod multilib-minimal nvidia-driver \
53 + portability toolchain-funcs unpacker user udev
54 +
55 +DESCRIPTION="NVIDIA Accelerated Graphics Driver"
56 +HOMEPAGE="https://www.nvidia.com/"
57 +
58 +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}"
59 +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
60 +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}"
61 +
62 +NV_URI="https://us.download.nvidia.com/XFree86/"
63 +SRC_URI="
64 + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz )
65 + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
66 + tools? (
67 + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2
68 + )
69 +"
70 +
71 +LICENSE="GPL-2 NVIDIA-r2"
72 +SLOT="0/${PV%.*}"
73 +KEYWORDS="-* ~amd64 ~amd64-fbsd"
74 +RESTRICT="bindist mirror"
75 +EMULTILIB_PKG="true"
76 +
77 +IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X"
78 +REQUIRED_USE="
79 + tools? ( X )
80 + static-libs? ( tools )
81 +"
82 +RESTRICT="test"
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 3; 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.3"
141 + ewarn "<sys-kernel/vanilla-sources-5.3"
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_configure() {
221 + tc-export AR CC LD
222 +
223 + default
224 +}
225 +
226 +src_prepare() {
227 + local man_file
228 + for man_file in "${NV_MAN}"/*1.gz; do
229 + gunzip $man_file || die
230 + done
231 +
232 + if use tools; then
233 + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die
234 + sed -i \
235 + -e "s:@PV@:${PV}:g" \
236 + "${WORKDIR}"/nvidia-settings-linker.patch || die
237 + eapply "${WORKDIR}"/nvidia-settings-linker.patch
238 + fi
239 +
240 + default
241 +
242 + if ! [ -f nvidia_icd.json ]; then
243 + cp nvidia_icd.json.template nvidia_icd.json || die
244 + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die
245 + fi
246 +}
247 +
248 +src_compile() {
249 + cd "${NV_SRC}"
250 + if use kernel_FreeBSD; then
251 + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
252 + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
253 + elif use driver && use kernel_linux; then
254 + BUILD_TARGETS=module linux-mod_src_compile \
255 + KERNELRELEASE="${KV_FULL}" \
256 + src="${KERNEL_DIR}"
257 + fi
258 +
259 + if use tools; then
260 + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \
261 + DO_STRIP= \
262 + LIBDIR="$(get_libdir)" \
263 + NVLD="$(tc-getLD)" \
264 + NV_VERBOSE=1 \
265 + OUTPUTDIR=. \
266 + RANLIB="$(tc-getRANLIB)"
267 +
268 + emake -C "${S}"/nvidia-settings-${PV}/src \
269 + DO_STRIP= \
270 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
271 + LIBDIR="$(get_libdir)" \
272 + NVLD="$(tc-getLD)" \
273 + NVML_ENABLED=0 \
274 + NV_USE_BUNDLED_LIBJANSSON=0 \
275 + NV_VERBOSE=1 \
276 + OUTPUTDIR=.
277 + fi
278 +}
279 +
280 +# Install nvidia library:
281 +# the first parameter is the library to install
282 +# the second parameter is the provided soversion
283 +# the third parameter is the target directory if it is not /usr/lib
284 +donvidia() {
285 + # Full path to library
286 + nv_LIB="${1}"
287 +
288 + # SOVER to use
289 + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
290 +
291 + # Where to install
292 + nv_DEST="${2}"
293 +
294 + # Get just the library name
295 + nv_LIBNAME=$(basename "${nv_LIB}")
296 +
297 + if [[ "${nv_DEST}" ]]; then
298 + exeinto ${nv_DEST}
299 + action="doexe"
300 + else
301 + nv_DEST="/usr/$(get_libdir)"
302 + action="dolib.so"
303 + fi
304 +
305 + # Install the library
306 + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
307 +
308 + # If the library has a SONAME and SONAME does not match the library name,
309 + # then we need to create a symlink
310 + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
311 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
312 + || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
313 + fi
314 +
315 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
316 + || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
317 +}
318 +
319 +src_install() {
320 + if use driver && use kernel_linux; then
321 + linux-mod_src_install
322 +
323 + # Add the aliases
324 + # This file is tweaked with the appropriate video group in
325 + # pkg_preinst, see bug #491414
326 + insinto /etc/modprobe.d
327 + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
328 + if use uvm; then
329 + doins "${FILESDIR}"/nvidia-rmmod.conf
330 + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules
331 + else
332 + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \
333 + > "${T}"/nvidia-rmmod.conf || die
334 + doins "${T}"/nvidia-rmmod.conf
335 + fi
336 +
337 + # Ensures that our device nodes are created when not using X
338 + exeinto "$(get_udevdir)"
339 + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh
340 + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules
341 + elif use kernel_FreeBSD; then
342 + if use x86-fbsd; then
343 + insinto /boot/modules
344 + doins "${S}/src/nvidia.kld"
345 + fi
346 +
347 + exeinto /boot/modules
348 + doexe "${S}/src/nvidia.ko"
349 + fi
350 +
351 + # NVIDIA kernel <-> userspace driver config lib
352 + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
353 +
354 + # NVIDIA framebuffer capture library
355 + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
356 +
357 + # NVIDIA video encode/decode <-> CUDA
358 + if use kernel_linux; then
359 + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
360 + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
361 + fi
362 +
363 + if use X; then
364 + # Xorg DDX driver
365 + insinto /usr/$(get_libdir)/xorg/modules/drivers
366 + doins ${NV_X11}/nvidia_drv.so
367 +
368 + # Xorg GLX driver
369 + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \
370 + /usr/$(get_libdir)/xorg/modules/extensions
371 +
372 + # Xorg nvidia.conf
373 + if has_version '>=x11-base/xorg-server-1.16'; then
374 + insinto /usr/share/X11/xorg.conf.d
375 + newins {,50-}nvidia-drm-outputclass.conf
376 + fi
377 +
378 + insinto /usr/share/glvnd/egl_vendor.d
379 + doins ${NV_X11}/10_nvidia.json
380 + fi
381 +
382 + if use wayland; then
383 + insinto /usr/share/egl/egl_external_platform.d
384 + doins ${NV_X11}/10_nvidia_wayland.json
385 + fi
386 +
387 + # OpenCL ICD for NVIDIA
388 + if use kernel_linux; then
389 + insinto /etc/OpenCL/vendors
390 + doins ${NV_OBJ}/nvidia.icd
391 + fi
392 +
393 + # Helper Apps
394 + exeinto /opt/bin/
395 +
396 + if use X; then
397 + doexe ${NV_OBJ}/nvidia-xconfig
398 +
399 + insinto /etc/vulkan/icd.d
400 + doins nvidia_icd.json
401 + fi
402 +
403 + if use kernel_linux; then
404 + doexe ${NV_OBJ}/nvidia-cuda-mps-control
405 + doexe ${NV_OBJ}/nvidia-cuda-mps-server
406 + doexe ${NV_OBJ}/nvidia-debugdump
407 + doexe ${NV_OBJ}/nvidia-persistenced
408 + doexe ${NV_OBJ}/nvidia-smi
409 +
410 + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092)
411 + doexe ${NV_OBJ}/nvidia-modprobe
412 + fowners root:video /opt/bin/nvidia-modprobe
413 + fperms 4710 /opt/bin/nvidia-modprobe
414 + dosym /{opt,usr}/bin/nvidia-modprobe
415 +
416 + doman nvidia-cuda-mps-control.1
417 + doman nvidia-modprobe.1
418 + doman nvidia-persistenced.1
419 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
420 + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
421 + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
422 + fi
423 +
424 + if use tools; then
425 + emake -C "${S}"/nvidia-settings-${PV}/src/ \
426 + DESTDIR="${D}" \
427 + DO_STRIP= \
428 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
429 + LIBDIR="${D}/usr/$(get_libdir)" \
430 + NV_USE_BUNDLED_LIBJANSSON=0 \
431 + NV_VERBOSE=1 \
432 + OUTPUTDIR=. \
433 + PREFIX=/usr \
434 + install
435 +
436 + if use static-libs; then
437 + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a
438 +
439 + insinto /usr/include/NVCtrl
440 + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h
441 + fi
442 +
443 + insinto /usr/share/nvidia/
444 + doins nvidia-application-profiles-${PV}-key-documentation
445 +
446 + insinto /etc/nvidia
447 + newins \
448 + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc
449 +
450 + # There is no icon in the FreeBSD tarball.
451 + use kernel_FreeBSD || \
452 + doicon ${NV_OBJ}/nvidia-settings.png
453 +
454 + domenu "${FILESDIR}"/nvidia-settings.desktop
455 +
456 + exeinto /etc/X11/xinit/xinitrc.d
457 + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
458 + fi
459 +
460 + dobin ${NV_OBJ}/nvidia-bug-report.sh
461 +
462 + if has_multilib_profile && use multilib; then
463 + local OABI=${ABI}
464 + for ABI in $(get_install_abis); do
465 + src_install-libs
466 + done
467 + ABI=${OABI}
468 + unset OABI
469 + else
470 + src_install-libs
471 + fi
472 +
473 + is_final_abi || die "failed to iterate through all ABIs"
474 +
475 + # Documentation
476 + if use kernel_FreeBSD; then
477 + dodoc "${NV_DOC}/README"
478 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
479 + use tools && doman "${NV_MAN}"/nvidia-settings.1
480 + else
481 + # Docs
482 + newdoc "${NV_DOC}/README.txt" README
483 + dodoc "${NV_DOC}/NVIDIA_Changelog"
484 + doman "${NV_MAN}"/nvidia-smi.1
485 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
486 + use tools && doman "${NV_MAN}"/nvidia-settings.1
487 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1
488 + fi
489 +
490 + readme.gentoo_create_doc
491 +
492 + docinto html
493 + dodoc -r ${NV_DOC}/html/*
494 +}
495 +
496 +src_install-libs() {
497 + local inslibdir=$(get_libdir)
498 + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib"
499 + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
500 + local nv_libdir="${NV_OBJ}"
501 +
502 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then
503 + nv_libdir="${NV_OBJ}"/32
504 + fi
505 +
506 + if use X; then
507 + NV_GLX_LIBRARIES=(
508 + "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}"
509 + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
510 + "libGL.so.1.7.0 ${GL_ROOT}"
511 + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}"
512 + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
513 + "libGLESv2.so.2.1.0 ${GL_ROOT}"
514 + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
515 + "libGLX.so.0 ${GL_ROOT}"
516 + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
517 + "libGLdispatch.so.0 ${GL_ROOT}"
518 + "libOpenCL.so.1.0.0 ${CL_ROOT}"
519 + "libOpenGL.so.0 ${GL_ROOT}"
520 + "libcuda.so.${NV_SOVER}"
521 + "libnvcuvid.so.${NV_SOVER}"
522 + "libnvidia-compiler.so.${NV_SOVER}"
523 + "libnvidia-eglcore.so.${NV_SOVER}"
524 + "libnvidia-encode.so.${NV_SOVER}"
525 + "libnvidia-fatbinaryloader.so.${NV_SOVER}"
526 + "libnvidia-fbc.so.${NV_SOVER}"
527 + "libnvidia-glcore.so.${NV_SOVER}"
528 + "libnvidia-glsi.so.${NV_SOVER}"
529 + "libnvidia-glvkspirv.so.${NV_SOVER}"
530 + "libnvidia-ifr.so.${NV_SOVER}"
531 + "libnvidia-opencl.so.${NV_SOVER}"
532 + "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
533 + "libvdpau_nvidia.so.${NV_SOVER}"
534 + )
535 +
536 + if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]];
537 + then
538 + NV_GLX_LIBRARIES+=(
539 + "libnvidia-egl-wayland.so.1.1.3"
540 + )
541 + fi
542 +
543 + if use kernel_FreeBSD; then
544 + NV_GLX_LIBRARIES+=(
545 + "libnvidia-tls.so.${NV_SOVER}"
546 + )
547 + fi
548 +
549 + if use kernel_linux; then
550 + NV_GLX_LIBRARIES+=(
551 + "libnvidia-ml.so.${NV_SOVER}"
552 + "libnvidia-tls.so.${NV_SOVER}"
553 + )
554 + fi
555 +
556 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
557 + then
558 + NV_GLX_LIBRARIES+=(
559 + "libnvidia-cbl.so.${NV_SOVER}"
560 + "libnvidia-rtcore.so.${NV_SOVER}"
561 + "libnvoptix.so.${NV_SOVER}"
562 + )
563 + fi
564 +
565 + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
566 + donvidia "${nv_libdir}"/${NV_LIB}
567 + done
568 + fi
569 +}
570 +
571 +pkg_preinst() {
572 + if use driver && use kernel_linux; then
573 + linux-mod_pkg_preinst
574 +
575 + local videogroup="$(egetent group video | cut -d ':' -f 3)"
576 + if [ -z "${videogroup}" ]; then
577 + eerror "Failed to determine the video group gid"
578 + die "Failed to determine the video group gid"
579 + else
580 + sed -i \
581 + -e "s:PACKAGE:${PF}:g" \
582 + -e "s:VIDEOGID:${videogroup}:" \
583 + "${D}"/etc/modprobe.d/nvidia.conf || die
584 + fi
585 + fi
586 +
587 + # Clean the dynamic libGL stuff's home to ensure
588 + # we dont have stale libs floating around
589 + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
590 + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
591 + fi
592 + # Make sure we nuke the old nvidia-glx's env.d file
593 + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then
594 + rm -f "${ROOT}"/etc/env.d/09nvidia
595 + fi
596 +}
597 +
598 +pkg_postinst() {
599 + use driver && use kernel_linux && linux-mod_pkg_postinst
600 +
601 + # Switch to the nvidia implementation
602 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia
603 + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia
604 +
605 + readme.gentoo_print_elog
606 +
607 + if ! use X; then
608 + elog "You have elected to not install the X.org driver. Along with"
609 + elog "this the OpenGL libraries and VDPAU libraries were not"
610 + elog "installed. Additionally, once the driver is loaded your card"
611 + elog "and fan will run at max speed which may not be desirable."
612 + elog "Use the 'nvidia-smi' init script to have your card and fan"
613 + elog "speed scale appropriately."
614 + elog
615 + fi
616 + if ! use tools; then
617 + elog "USE=tools controls whether the nvidia-settings application"
618 + elog "is installed. If you would like to use it, enable that"
619 + elog "flag and re-emerge this ebuild. Optionally you can install"
620 + elog "media-video/nvidia-settings"
621 + elog
622 + fi
623 +}
624 +
625 +pkg_prerm() {
626 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
627 +}
628 +
629 +pkg_postrm() {
630 + use driver && use kernel_linux && linux-mod_pkg_postrm
631 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
632 +}