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, 07 Nov 2019 12:53:31
Message-Id: 1573131202.6d07611b93f855d2c4a17c16275fe499ed997029.jer@gentoo
1 commit: 6d07611b93f855d2c4a17c16275fe499ed997029
2 Author: Jeroen Roovers <jer <AT> gentoo <DOT> org>
3 AuthorDate: Thu Nov 7 12:53:06 2019 +0000
4 Commit: Jeroen Roovers <jer <AT> gentoo <DOT> org>
5 CommitDate: Thu Nov 7 12:53:22 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6d07611b
7
8 x11-drivers/nvidia-drivers: Version 430.64
9
10 Package-Manager: Portage-2.3.78, 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-430.64.ebuild | 583 +++++++++++++++++++++
15 2 files changed, 586 insertions(+)
16
17 diff --git a/x11-drivers/nvidia-drivers/Manifest b/x11-drivers/nvidia-drivers/Manifest
18 index 8bcccd9533e..58e1b09961e 100644
19 --- a/x11-drivers/nvidia-drivers/Manifest
20 +++ b/x11-drivers/nvidia-drivers/Manifest
21 @@ -3,6 +3,7 @@ DIST NVIDIA-FreeBSD-x86-390.129.tar.gz 64565178 BLAKE2B d21aed3fffec9c0ed8618021
22 DIST NVIDIA-FreeBSD-x86_64-340.107.tar.gz 61179967 BLAKE2B c12c7c07c090fd7bca78a30082890d0b0330dde07ce9beacdb94fad97d40e9ff9e1413fc36fd94116821137e74076d99a82ab85ecd0a8e16d52b47abeb747802 SHA512 661a4cc79a0adc9a1abebfb3567c26e69628266794b5b539c112112a0989760ea1ea2d8c35a5fe7539b579d4e9cef2685e3e1d12fc7031cd6d1b743c23eadc52
23 DIST NVIDIA-FreeBSD-x86_64-390.129.tar.gz 63905694 BLAKE2B 7cde21e5b4a63dcf91b103c209222a9715de02e032501ace2bc9897230178a750d523eca4798041f4813b174ab3c7700818a09bdbafe62f217495ce6b4c465e5 SHA512 7485c9807e7d1684e3394a88f1129726fd1c97920e5a033b0c428f8f72daa87c6d210c17fdec0947f786ccaa633e14c8f6b2cc39083087e9989df8621b66918d
24 DIST NVIDIA-FreeBSD-x86_64-430.50.tar.gz 62715888 BLAKE2B 8bb22ccf23054f5dae16f63775492a141ea69c540018a9f4dee358d6cb022d2ab8b7c32acc03f9632d9797b6eeeb6b5e76240b857906db28835240bcf8cede19 SHA512 c028262d67e3962ecce616d68e6d45c0ce8e3d1b38695c18b9b1d08506f848954a59831d99fa414fc09408134d0730e40766d74ac462cf322006b22c14a2124a
25 +DIST NVIDIA-FreeBSD-x86_64-430.64.tar.gz 62723909 BLAKE2B f3e48bc38a3ec051a75c08845b45c0ba6b80bca31d7efd85f115e6244f9cdff70c68466f9139f69c645207d4cf61103432d75c943d3f3508811d405fba55d1b6 SHA512 498a3007c065d8b17f94024f6ca80ffbe3dca253fdb73c4a08babede821e52f8466523b402af350e961f153c5f732eb04160937fabef1f1be3846a0a4743b310
26 DIST NVIDIA-FreeBSD-x86_64-435.21.tar.gz 64153630 BLAKE2B fee655cc843c004ac0c1ec85b9417292016a013136e04ad047d2513edbdc7c732561d6bcc4603c658905972dce6618de49d4d6ac583e84fdf212cf45397b48c1 SHA512 2c160c06ca58e3009deb1ba4a4a28d39419e251ced3bfa9a442942f9cce17003d67e8a8bfa23036d3916cc0e66f4bff0fbedaae73db6f10b995235a56d7eba7c
27 DIST NVIDIA-FreeBSD-x86_64-440.26.tar.gz 64976109 BLAKE2B e5bdd272e4c52ce6fd5cd14d3bce4127ba628b88589b3c8e19427137fc787d2243d1672afd74dbe62c458f0c9b95ce9ec73085140de78513bc3141e597776fe4 SHA512 09dd66a6d47b8cac898b17bb5090e7b8acf3b39ea73e5256325f6dcc299558c29587c834c538e5523b334d97d0fcec31c139e1fba396e2e817c6776d510cdcc3
28 DIST NVIDIA-FreeBSD-x86_64-440.31.tar.gz 65011247 BLAKE2B 9c2b482419868d27e5e45a519c321fd0b5613b670b42e6c1ecd28b2f9e789469b6d947574d0540055b6526bc90623ec2672dd763299da55a6d4780cc58d5aa7f SHA512 40a169b3f63b4cb0a5573f9c34f9ba170c3f5e1b3026e6641c8018cfaf70d37574de25985c59159482c7b4946eaf1029a13754ba5036515a4eedd369d42a768d
29 @@ -12,12 +13,14 @@ DIST NVIDIA-Linux-x86-390.129.run 47560033 BLAKE2B e9b34c51d63dada2714c74cdb4ab1
30 DIST NVIDIA-Linux-x86_64-340.107.run 70233686 BLAKE2B 821a2672dcc3b546fbb3f826230fb06741503d75b06f72cb407dd3c9de4f2cbd150bff34e554dca8aa86e7f6bf64ce4f7f9b52976799a477c6c2659aaa5bb4d3 SHA512 51df9370526732db099a8a925d35cdf1317ae2b0ab2c130eaf82373f25186165b4af7d44f71e51e2a68f7d07c7ae3f441a6c6c4be8467003b15dc770c4f4e89b
31 DIST NVIDIA-Linux-x86_64-390.129.run 82314424 BLAKE2B 46e648f413ac2b62dfa02ef63d4fafd87cf71e3c6035435a727a9079a545277efd57865f0a42cd6ea29f74b29955985f0f32e8ade4d5bb0a9cd5de663f2e3f2a SHA512 79e53177f8feb9480215e0bcc6a30896f70e39f55f81879eeb4539492c01ce55471d27ccb9af49040b96946836d387ff8c71d25d06f6b13bdb626b44ac7d4777
32 DIST NVIDIA-Linux-x86_64-430.50.run 110545029 BLAKE2B 01c87f7b1b71146e04d1310431227d125904e0475c7e9656fa2aea598b95952fed083024277607a5a06c6c6bf93df4e0a89051cf887f28c902c3d409c98fa807 SHA512 ccc70fc717e53365e340bc210d8817939eb2d798608190144a9a1d690d04eb140f0d01a85a427bf2223b6d12848177e2ab94cdb3902f5117950638dc1ef28fa2
33 +DIST NVIDIA-Linux-x86_64-430.64.run 111331457 BLAKE2B 59d8b739bc472810eb896ef620735b6f21ccfde653e08f248797720d21d75580dcea2448f17a5d1c32be393595d9dfedc48c81e96a8ea422c7f0d9eadf36ae1c SHA512 552bf1e8c4725258c07cbb0e000d0e407fba1b51207903f2b77c0d9fd8b15b629f791b20239f75a1aec85aa03cbcca90a1cb633090919cf0599054231f715250
34 DIST NVIDIA-Linux-x86_64-435.21.run 144387574 BLAKE2B e9afd6335182a28f5136dbef55195a2f2d8f768376ebc148190a0a82470a34d008ce04170ffc1aab36585605910c1300567a90443b5f58cb46ec3bff6ab9409c SHA512 e83b6dff80434971c0b254815945d485a45c978b8a19994244f50a463658863948b2eac8bc62d667bb10c23f41cf1c3521c409d23ac2ab6a0c0cd094a6e20270
35 DIST NVIDIA-Linux-x86_64-440.26.run 140895086 BLAKE2B 1266c103e2cdd57fd768c62ce4f008da713829eb7647f0c3a36bc26fab1fc40aae3f4227ab75c1e0c20c2ab43d1423b27ae18dfe4962295628da779ea89a272b SHA512 9a73637db881f7c011a0a4b4ebc3d47b979e0922b901d77fe95bed02a86d74e66731fa0085785024746d329da3b4506a24a245869c89c38ba53809aa339d9abf
36 DIST NVIDIA-Linux-x86_64-440.31.run 141511198 BLAKE2B 10dade6dddca6c3fcb0d20929d237d70eb19b8e6ce6c59ce814cf723e0a25d1e1e3749d013174e3683c9d002b9a61fbc1ff014ba17fee51bf1900e1eecb64181 SHA512 5598d362f21fb4e75a07d77167e24411b5a550e3f1329b39fe004987e2bcb191c9bbf1b3d1a43a8754a9ba00faef57a943c7778999a4e3121c13c30f912fae38
37 DIST nvidia-settings-340.107.tar.bz2 1549413 BLAKE2B 127442ee2c35ceec47ab4f103bdd2d0278c621fcb9be47051111f6f8728ef5699bdc95fe33a3812a807c38c4868b04c2176e2ed218a422171d2a88ac0c00de96 SHA512 593e7e83aa350a3a7beaaa32aca8660d7e203f6f2e460a6e6eabcdc092087f9917ee4e6d141e37ad4e3b0a1b9908c085e4a71d2f579e481a03bbd1c6f75ca776
38 DIST nvidia-settings-390.129.tar.bz2 1109456 BLAKE2B cdce0bba52697e214ea26514467ea6f61fa06429f0a58ca549b74d8da1f7b07cbc52b1c9de6a13aed77545c2ba8c98b212a7865fdc5026dcd74f5565b73c4e1e SHA512 bf004608fbee6a12521fbcd9ab4e3d0333896b320c943ed9f2dc5373d8ffb2eb9cb4c6873a263acac87a9ab67a5f4589344d2bbd70bce36cf14242f4d57e1b87
39 DIST nvidia-settings-430.50.tar.bz2 1132111 BLAKE2B 3b95957f8737ebefb14d01db03929835dc0b58ba4c539f153a5d0278bf11f3b10b189cd529f7e65fac339a2660c2aac1df16e79b61bd13749ffdd0a17db6792f SHA512 02dd870021333825da8eff3b27c3414a8c4f6e0af14a07ffe1616466e80338daf33d6085d23690d71898b2219ca0f83ebbabbe176b40909ac7556b8a0184eaf1
40 +DIST nvidia-settings-430.64.tar.bz2 1130931 BLAKE2B 032bbe8cdb7ec3b353e8f8ef33d0e86f4b4f3ef24b38de669e09173519149efe0aa55d5d30d0a0c6d2b8398d5ce38bbe4176df735501725475df4137d533e57d SHA512 fa82699610aa0f4709101e1a4e9e8147b133c85afb20ecb4506bfccf233e4f42dac26e53e2966f2137eb29190b5e4173b267167f5341b516fa1169785946e240
41 DIST nvidia-settings-435.21.tar.bz2 1131222 BLAKE2B 855f5c7667f4a5ec0f917fbb017d70ec6ee5e768f7087e77e54a66dea852c471bd1810a2163fb33204e5f381998a27a4254e0a5d2c73e2b6b624813ff8294f24 SHA512 8b408cc70118df3a138a99fe7fc14f6370d500b8ae26888b27b07de22f6fc6eebd65bd437d83ee82e18a1d8ee4cceec601c414b1947302ca808fff48165f31bb
42 DIST nvidia-settings-440.26.tar.bz2 1128259 BLAKE2B 7578bbe7159f1d72d56fdd5d42fdb6609ab6cbb67075661e1eaf7784cbffbc4353726940fb86b4446c875df1fac4d28fbccb2b435e3eb36c6d4f4894a6200ea3 SHA512 a336d7737523f48c99fea7712fa84c3f280f9cc80757004f09c33263971d0af2b2fa155e6245ce94cc8db07a65db4be68c7c81e39e845075b4111453fe65701c
43 DIST nvidia-settings-440.31.tar.bz2 1128258 BLAKE2B 46976f763e9aba85d92720d38adeda859a10078c24b778c3e9b170f8b5472477ad377486574827156844b7133811e57ea524e6a246c2f0528b45fc1bae5e36ec SHA512 10199915e9b2245d908016058e15a3f6569705d0c27d7d6aab83b3229aa9e66a0b1da4803b3a0c377de18cc205e1011eebb7fd2121022d638061f661036f8cb9
44
45 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-430.64.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-430.64.ebuild
46 new file mode 100644
47 index 00000000000..366b95599b5
48 --- /dev/null
49 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-430.64.ebuild
50 @@ -0,0 +1,583 @@
51 +# Copyright 1999-2019 Gentoo Authors
52 +# Distributed under the terms of the GNU General Public License v2
53 +
54 +EAPI=6
55 +inherit eutils flag-o-matic linux-info linux-mod multilib-minimal nvidia-driver \
56 + portability toolchain-funcs unpacker user udev
57 +
58 +DESCRIPTION="NVIDIA Accelerated Graphics Driver"
59 +HOMEPAGE="https://www.nvidia.com/"
60 +
61 +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}"
62 +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
63 +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}"
64 +
65 +NV_URI="https://us.download.nvidia.com/XFree86/"
66 +SRC_URI="
67 + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz )
68 + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
69 + tools? (
70 + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2
71 + )
72 +"
73 +
74 +EMULTILIB_PKG="true"
75 +KEYWORDS="-* ~amd64"
76 +LICENSE="GPL-2 NVIDIA-r2"
77 +SLOT="0/${PV%.*}"
78 +
79 +IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X"
80 +REQUIRED_USE="
81 + tools? ( X )
82 + static-libs? ( tools )
83 +"
84 +
85 +COMMON="
86 + app-eselect/eselect-opencl
87 + kernel_linux? ( >=sys-libs/glibc-2.6.1 )
88 + tools? (
89 + dev-libs/atk
90 + dev-libs/glib:2
91 + dev-libs/jansson
92 + gtk3? (
93 + x11-libs/gtk+:3
94 + )
95 + x11-libs/cairo
96 + x11-libs/gdk-pixbuf[X]
97 + x11-libs/gtk+:2
98 + x11-libs/libX11
99 + x11-libs/libXext
100 + x11-libs/libXrandr
101 + x11-libs/libXv
102 + x11-libs/libXxf86vm
103 + x11-libs/pango[X]
104 + )
105 + X? (
106 + >=app-eselect/eselect-opengl-1.0.9
107 + app-misc/pax-utils
108 + )
109 +"
110 +DEPEND="
111 + ${COMMON}
112 + kernel_linux? ( virtual/linux-sources )
113 + tools? ( sys-apps/dbus )
114 +"
115 +RDEPEND="
116 + ${COMMON}
117 + acpi? ( sys-power/acpid )
118 + tools? ( !media-video/nvidia-settings )
119 + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] )
120 + X? (
121 + <x11-base/xorg-server-1.20.99:=
122 + >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
123 + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
124 + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
125 + sys-libs/zlib[${MULTILIB_USEDEP}]
126 + )
127 +"
128 +QA_PREBUILT="opt/* usr/lib*"
129 +S=${WORKDIR}/
130 +
131 +nvidia_drivers_versions_check() {
132 + if use amd64 && has_multilib_profile && \
133 + [ "${DEFAULT_ABI}" != "amd64" ]; then
134 + eerror "This ebuild doesn't currently support changing your default ABI"
135 + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
136 + fi
137 +
138 + if use kernel_linux && kernel_is ge 5 4; then
139 + ewarn "Gentoo supports kernels which are supported by NVIDIA"
140 + ewarn "which are limited to the following kernels:"
141 + ewarn "<sys-kernel/gentoo-sources-5.4"
142 + ewarn "<sys-kernel/vanilla-sources-5.4"
143 + ewarn ""
144 + ewarn "You are free to utilize epatch_user to provide whatever"
145 + ewarn "support you feel is appropriate, but will not receive"
146 + ewarn "support as a result of those changes."
147 + ewarn ""
148 + ewarn "Do not file a bug report about this."
149 + ewarn ""
150 + fi
151 +
152 + # Since Nvidia ships many different series of drivers, we need to give the user
153 + # some kind of guidance as to what version they should install. This tries
154 + # to point the user in the right direction but can't be perfect. check
155 + # nvidia-driver.eclass
156 + nvidia-driver-check-warning
157 +
158 + # Kernel features/options to check for
159 + CONFIG_CHECK="!DEBUG_MUTEXES !I2C_NVIDIA_GPU ~!LOCKDEP ~MTRR ~SYSVIPC ~ZONE_DMA"
160 +
161 + # Now do the above checks
162 + use kernel_linux && check_extra_config
163 +}
164 +
165 +pkg_pretend() {
166 + nvidia_drivers_versions_check
167 +}
168 +
169 +pkg_setup() {
170 + nvidia_drivers_versions_check
171 +
172 + # try to turn off distcc and ccache for people that have a problem with it
173 + export DISTCC_DISABLE=1
174 + export CCACHE_DISABLE=1
175 +
176 + if use driver && use kernel_linux; then
177 + MODULE_NAMES="nvidia(video:${S}/kernel)"
178 + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
179 + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)"
180 +
181 + # This needs to run after MODULE_NAMES (so that the eclass checks
182 + # whether the kernel supports loadable modules) but before BUILD_PARAMS
183 + # is set (so that KV_DIR is populated).
184 + linux-mod_pkg_setup
185 +
186 + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
187 + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
188 +
189 + # linux-mod_src_compile calls set_arch_to_kernel, which
190 + # sets the ARCH to x86 but NVIDIA's wrapping Makefile
191 + # expects x86_64 or i386 and then converts it to x86
192 + # later on in the build process
193 + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
194 + fi
195 +
196 + if use kernel_linux && kernel_is lt 2 6 9; then
197 + eerror "You must build this against 2.6.9 or higher kernels."
198 + fi
199 +
200 + # set variables to where files are in the package structure
201 + if use kernel_FreeBSD; then
202 + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}"
203 + NV_DOC="${S}/doc"
204 + NV_OBJ="${S}/obj"
205 + NV_SRC="${S}/src"
206 + NV_MAN="${S}/x11/man"
207 + NV_X11="${S}/obj"
208 + NV_SOVER=1
209 + elif use kernel_linux; then
210 + NV_DOC="${S}"
211 + NV_OBJ="${S}"
212 + NV_SRC="${S}/kernel"
213 + NV_MAN="${S}"
214 + NV_X11="${S}"
215 + NV_SOVER=${PV}
216 + else
217 + die "Could not determine proper NVIDIA package"
218 + fi
219 +}
220 +
221 +src_configure() {
222 + tc-export AR CC LD
223 +
224 + default
225 +}
226 +
227 +src_prepare() {
228 + local man_file
229 + for man_file in "${NV_MAN}"/*1.gz; do
230 + gunzip $man_file || die
231 + done
232 +
233 + if use tools; then
234 + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die
235 + sed -i \
236 + -e "s:@PV@:${PV}:g" \
237 + "${WORKDIR}"/nvidia-settings-linker.patch || die
238 + eapply "${WORKDIR}"/nvidia-settings-linker.patch
239 + fi
240 +
241 + default
242 +
243 + if ! [ -f nvidia_icd.json ]; then
244 + cp nvidia_icd.json.template nvidia_icd.json || die
245 + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die
246 + fi
247 +}
248 +
249 +src_compile() {
250 + cd "${NV_SRC}"
251 + if use kernel_FreeBSD; then
252 + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
253 + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
254 + elif use driver && use kernel_linux; then
255 + BUILD_TARGETS=module linux-mod_src_compile \
256 + KERNELRELEASE="${KV_FULL}" \
257 + src="${KERNEL_DIR}"
258 + fi
259 +
260 + if use tools; then
261 + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \
262 + DO_STRIP= \
263 + LIBDIR="$(get_libdir)" \
264 + NVLD="$(tc-getLD)" \
265 + NV_VERBOSE=1 \
266 + OUTPUTDIR=. \
267 + RANLIB="$(tc-getRANLIB)"
268 +
269 + emake -C "${S}"/nvidia-settings-${PV}/src \
270 + DO_STRIP= \
271 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
272 + LIBDIR="$(get_libdir)" \
273 + NVLD="$(tc-getLD)" \
274 + NVML_ENABLED=0 \
275 + NV_USE_BUNDLED_LIBJANSSON=0 \
276 + NV_VERBOSE=1 \
277 + OUTPUTDIR=.
278 + fi
279 +}
280 +
281 +# Install nvidia library:
282 +# the first parameter is the library to install
283 +# the second parameter is the provided soversion
284 +# the third parameter is the target directory if it is not /usr/lib
285 +donvidia() {
286 + # Full path to library
287 + nv_LIB="${1}"
288 +
289 + # SOVER to use
290 + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
291 +
292 + # Where to install
293 + nv_DEST="${2}"
294 +
295 + # Get just the library name
296 + nv_LIBNAME=$(basename "${nv_LIB}")
297 +
298 + if [[ "${nv_DEST}" ]]; then
299 + exeinto ${nv_DEST}
300 + action="doexe"
301 + else
302 + nv_DEST="/usr/$(get_libdir)"
303 + action="dolib.so"
304 + fi
305 +
306 + # Install the library
307 + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
308 +
309 + # If the library has a SONAME and SONAME does not match the library name,
310 + # then we need to create a symlink
311 + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
312 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
313 + || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
314 + fi
315 +
316 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
317 + || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
318 +}
319 +
320 +src_install() {
321 + if use driver && use kernel_linux; then
322 + linux-mod_src_install
323 +
324 + # Add the aliases
325 + # This file is tweaked with the appropriate video group in
326 + # pkg_preinst, see bug #491414
327 + insinto /etc/modprobe.d
328 + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
329 + if use uvm; then
330 + doins "${FILESDIR}"/nvidia-rmmod.conf
331 + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules
332 + else
333 + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \
334 + > "${T}"/nvidia-rmmod.conf || die
335 + doins "${T}"/nvidia-rmmod.conf
336 + fi
337 +
338 + # Ensures that our device nodes are created when not using X
339 + exeinto "$(get_udevdir)"
340 + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh
341 + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules
342 + elif use kernel_FreeBSD; then
343 + if use x86-fbsd; then
344 + insinto /boot/modules
345 + doins "${S}/src/nvidia.kld"
346 + fi
347 +
348 + exeinto /boot/modules
349 + doexe "${S}/src/nvidia.ko"
350 + fi
351 +
352 + # NVIDIA kernel <-> userspace driver config lib
353 + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
354 +
355 + # NVIDIA framebuffer capture library
356 + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
357 +
358 + # NVIDIA video encode/decode <-> CUDA
359 + if use kernel_linux; then
360 + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
361 + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
362 + fi
363 +
364 + if use X; then
365 + # Xorg DDX driver
366 + insinto /usr/$(get_libdir)/xorg/modules/drivers
367 + doins ${NV_X11}/nvidia_drv.so
368 +
369 + # Xorg GLX driver
370 + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \
371 + /usr/$(get_libdir)/xorg/modules/extensions
372 +
373 + # Xorg nvidia.conf
374 + if has_version '>=x11-base/xorg-server-1.16'; then
375 + insinto /usr/share/X11/xorg.conf.d
376 + newins {,50-}nvidia-drm-outputclass.conf
377 + fi
378 +
379 + insinto /usr/share/glvnd/egl_vendor.d
380 + doins ${NV_X11}/10_nvidia.json
381 + fi
382 +
383 + if use wayland; then
384 + insinto /usr/share/egl/egl_external_platform.d
385 + doins ${NV_X11}/10_nvidia_wayland.json
386 + fi
387 +
388 + # OpenCL ICD for NVIDIA
389 + if use kernel_linux; then
390 + insinto /etc/OpenCL/vendors
391 + doins ${NV_OBJ}/nvidia.icd
392 + fi
393 +
394 + # Helper Apps
395 + exeinto /opt/bin/
396 +
397 + if use X; then
398 + doexe ${NV_OBJ}/nvidia-xconfig
399 +
400 + insinto /etc/vulkan/icd.d
401 + doins nvidia_icd.json
402 + fi
403 +
404 + if use kernel_linux; then
405 + doexe ${NV_OBJ}/nvidia-cuda-mps-control
406 + doexe ${NV_OBJ}/nvidia-cuda-mps-server
407 + doexe ${NV_OBJ}/nvidia-debugdump
408 + doexe ${NV_OBJ}/nvidia-persistenced
409 + doexe ${NV_OBJ}/nvidia-smi
410 +
411 + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092)
412 + doexe ${NV_OBJ}/nvidia-modprobe
413 + fowners root:video /opt/bin/nvidia-modprobe
414 + fperms 4710 /opt/bin/nvidia-modprobe
415 + dosym /{opt,usr}/bin/nvidia-modprobe
416 +
417 + doman nvidia-cuda-mps-control.1
418 + doman nvidia-modprobe.1
419 + doman nvidia-persistenced.1
420 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
421 + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
422 + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
423 + fi
424 +
425 + if use tools; then
426 + emake -C "${S}"/nvidia-settings-${PV}/src/ \
427 + DESTDIR="${D}" \
428 + DO_STRIP= \
429 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
430 + LIBDIR="${D}/usr/$(get_libdir)" \
431 + NV_USE_BUNDLED_LIBJANSSON=0 \
432 + NV_VERBOSE=1 \
433 + OUTPUTDIR=. \
434 + PREFIX=/usr \
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 +}