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