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