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