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: Sat, 23 Feb 2019 14:56:29
Message-Id: 1550933778.5d35b944f7d98634d84623831ba7a525b3fbacad.jer@gentoo
1 commit: 5d35b944f7d98634d84623831ba7a525b3fbacad
2 Author: Jeroen Roovers <jer <AT> gentoo <DOT> org>
3 AuthorDate: Sat Feb 23 14:53:07 2019 +0000
4 Commit: Jeroen Roovers <jer <AT> gentoo <DOT> org>
5 CommitDate: Sat Feb 23 14:56:18 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5d35b944
7
8 x11-drivers/nvidia-drivers: Versions 390.116 410.104 418.43
9
10 Package-Manager: Portage-2.3.62, Repoman-2.3.12
11 Fixes: https://bugs.gentoo.org/show_bug.cgi?id=675310
12 Signed-off-by: Jeroen Roovers <jer <AT> gentoo.org>
13
14 x11-drivers/nvidia-drivers/Manifest | 12 +
15 .../nvidia-drivers/nvidia-drivers-390.116.ebuild | 582 ++++++++++++++++++++
16 .../nvidia-drivers/nvidia-drivers-410.104.ebuild | 585 +++++++++++++++++++++
17 .../nvidia-drivers/nvidia-drivers-418.43.ebuild | 578 ++++++++++++++++++++
18 4 files changed, 1757 insertions(+)
19
20 diff --git a/x11-drivers/nvidia-drivers/Manifest b/x11-drivers/nvidia-drivers/Manifest
21 index 2be28a02a4c..5976a883c49 100644
22 --- a/x11-drivers/nvidia-drivers/Manifest
23 +++ b/x11-drivers/nvidia-drivers/Manifest
24 @@ -1,20 +1,32 @@
25 DIST NVIDIA-FreeBSD-x86-340.107.tar.gz 60305952 BLAKE2B b634bfd610653f1c546b68e87d934c5d0e25a2e5be6df15e0cb6016793274b4cf08577669e61c35976f3482da2221b05797459b2814965bcfdbf519c8a6d2681 SHA512 fe09e1b3dd870a07b4edd163d302e2d98f00e139d05a8fa627c292182b61d2bd9b37eb746d639ba592dcf90fecedc57430cf1ef76b6522785ffcb3fd46fe9ba0
26 +DIST NVIDIA-FreeBSD-x86-390.116.tar.gz 64325348 BLAKE2B 67312ba0f5b1e94a540a90e3787c339b023e36ef3da0deb6ddd2e0aaa22610b1a399be8ee5bdb35f6ca7cc5d1927b6f1e4d8c2e19353af863826f031cd0ab7bc SHA512 8494efa8c2e2dbc2295bb0fd150e72ca851504172da2456c2ed6c311ed952f62e9b2352817e6afdb94012d0881728f9320b056da8876076490076e07c3f7f6a1
27 DIST NVIDIA-FreeBSD-x86-390.87.tar.gz 64326801 BLAKE2B 91cf9e77040d8c710a0fef58f9bae685a86962f8460a5d55e2c0733dc7bd2050c910bbd0732bb89efb8550d501b08c02e0587118ea767ba768dcf1c356e0e872 SHA512 b7ff9f4e61de08c0626e5e55c1f51e3451640043066944d791f79f4c0b57f39211c0648a2551c0b5ed1622809d7c9579e24b8ee9a46a7988319e25ab709c1400
28 DIST NVIDIA-FreeBSD-x86_64-340.107.tar.gz 61179967 BLAKE2B c12c7c07c090fd7bca78a30082890d0b0330dde07ce9beacdb94fad97d40e9ff9e1413fc36fd94116821137e74076d99a82ab85ecd0a8e16d52b47abeb747802 SHA512 661a4cc79a0adc9a1abebfb3567c26e69628266794b5b539c112112a0989760ea1ea2d8c35a5fe7539b579d4e9cef2685e3e1d12fc7031cd6d1b743c23eadc52
29 +DIST NVIDIA-FreeBSD-x86_64-390.116.tar.gz 63651658 BLAKE2B ae1714b5b279dd6f552ed11b8dee0b4ac322903a7c9f4b7b7906dea8c5847e34950d9c4c6f616337408b42100b84c1aaaf66ee445db2d1795ccdb8762d2088fb SHA512 022fa558cd2a8014bc67ba86deba603505000cca3f99d91a664db81cfe93ae88b667af74989b40b04cb8cd086c5dcb8bf0858170f92e464bbe13fc4c7fb307aa
30 DIST NVIDIA-FreeBSD-x86_64-390.87.tar.gz 63648591 BLAKE2B 88aa38b11b64b2ad91f723ec84a2adb6829571136aabb1441a9119418395d5f143736487902f0c60b49ebc1284f3100fbd089e4c941cdd3519ab8511cc1d3261 SHA512 0865fef8b8a3be8f6d9fc81908b162fd6062ba0ea81fd00200e7b2a1e3149ef62408b46bc4ccb7a77f1ac943557a22b13a10cfdde084f0b76cf2b23432e57540
31 +DIST NVIDIA-FreeBSD-x86_64-410.104.tar.gz 61995820 BLAKE2B 281b7567fcba6e7457bcaf5a91759670ca6f5f041efbd407237852a31dbd6d13f1df18d54cede17b0f8acd4a66fdded123de91691938dee03be077f1cf50e29d SHA512 77097ec2bc446a18f98a8da93964033054cab2e79759d296f12d1392fd65aec51c279c2823e3bebf0ccb3bb1130c5f03998f71ea1d6b245af1daf890ec8f3304
32 DIST NVIDIA-FreeBSD-x86_64-410.93.tar.gz 61977979 BLAKE2B a662fa13866cfb36ef61a0b9dd459519e26ea93a6ad6ae7bf34075fae8e7622a91707d88cec8de0660513cb959c3596e8b6169357891c83e847870ecffd72928 SHA512 ecdd5270f9d5f32117d83cd3e3cf0376f0b37c748fe164e702c4230d225c6b28bdbbea4334555b6928d05f1a7cfaf87caf20dd2e7e06e1259c526f6bd50e4d0e
33 DIST NVIDIA-FreeBSD-x86_64-415.27.tar.gz 62389955 BLAKE2B 39ac5970ef1a6ffbb03abe8b758a6f5d7eaca787231845fa4b4bff5f26aa770fb7c695bbd5585d919c934c65b9ed0cfe42f9674bcaabd796c9bd8b89cea87ee6 SHA512 857d1523bad2fca21c75b45c29066be0f530afa8ca124806bcaa36509ac5135df1c4037e6b09e5718c701f085b3608925e2b1fea45d0681e69a99ef709c307d0
34 DIST NVIDIA-FreeBSD-x86_64-418.30.tar.gz 61657913 BLAKE2B b6e5219dbdacf889a55a9c411f16d1b5a0ccb3a7e8e97b013df5b57ddaa5a89a9079a6fa55d69b4fcdb667dfbd7d1313590af5e24813510c8d411af7744cac7d SHA512 7cd95299fe5244c359bd2ae90a5dc30b014ae4ebc6a08e9f616b0c6c8d015b2832f174c68dc1ac1d905eab355092dd5c6ff1de2f7f2d24cb184ac49fb7ef6777
35 +DIST NVIDIA-FreeBSD-x86_64-418.43.tar.gz 61479168 BLAKE2B 7ed91e8ba7c93ab69f45a916fb200c40b6d4ee66018d11f1216fc64828a5c402bdf45cc34a44444a19abd2af59d6844c7a9e0d1b858e9c0c3cdd49b3abbbb3e7 SHA512 1ceed9548be7a0ef9b5f4094e60a7c0c9f707d152f5f7d41d161e5e008b0266b0e178c4c9252b073e2cc440fdb6b0952ccce87dcbf4d5d13a86b4dcd790589f5
36 +DIST NVIDIA-Linux-armv7l-gnueabihf-390.116.run 28852021 BLAKE2B 82eb44ea1bd50610218c9ffe4f7e586d2541cb7d0ca6692feeb7a26ea323d7304e2d09e77a20e02fb529b19d2ca75f0819df07c3cd27d72a5b6d9ceac6984fa8 SHA512 7aa93f42a36aa910388f901879659e0b03ec8a272cee3caac553b960603417e5b23f1bd88d9dd5892f3509d7a029a29c067200c8ed577ed98aa24f034dd66475
37 DIST NVIDIA-Linux-armv7l-gnueabihf-390.87.run 29078256 BLAKE2B a7ce24bcaf82e6c2c95cd11a0d9e0e2aa69c717b8455d4ce0a79a9c03c92f5f6b84107dea6347dedc5c4f8fe076e616fc7a36053c6a5f571af9d794bada6cb1f SHA512 3f8ef4eabc7275685bd5d887c6b7dc20786baab1f4a89bfb23ae6c8d837188d93369c777915d3ea010b08e578c4fb7318d9428811971470e31a8b8b4f51e240f
38 DIST NVIDIA-Linux-x86-340.107.run 39016798 BLAKE2B 2632c8f257d0cf7c5b9294eb2c0b763eee6feb60eacc316024655971e4d067c4af6548aab3b7b2b295792b064f3f3ac3e6403a2ecfa096761d308dfb6b2569b8 SHA512 0add713942bcdb639d19b5c36f5e0cea14f9e07490191d46dfeba0515ede7700fd8e9467ec531d38329fe1e76bf45905e70e0d440e7bc2dc79c1d767eab03338
39 +DIST NVIDIA-Linux-x86-390.116.run 47707973 BLAKE2B 33b58fb600df83d7e132b428de952f583f1d300af45ff00c4302b48625af370baddab0ef34974dbe26e284cd907e27c024c80f9453abdfc6296bd2575c6481df SHA512 be9aa735d2d0a3e14b4a7dddcbe74ef156740365e93eefe853a03ecae392af6875add41307b889e59d62516f7efe292b12c0a9a29916e8b4ce144b817eed2c39
40 DIST NVIDIA-Linux-x86-390.87.run 47959124 BLAKE2B bb799a53b6d25ecd0e6013cea544402c25332efcedf0db5c490dc7ebfa064f97a31427d529f0453092e0f6495a996acb8ffcdd29dc1fed5fc8af31514d959c80 SHA512 18c5ef058098c0f055bada06888ee07da4d1455d90d393357483c289eab27969d49a593318d28e535941e7ebacde33e349f3a1cb2f7c627366ba5c6b7835ccbd
41 DIST NVIDIA-Linux-x86_64-340.107.run 70233686 BLAKE2B 821a2672dcc3b546fbb3f826230fb06741503d75b06f72cb407dd3c9de4f2cbd150bff34e554dca8aa86e7f6bf64ce4f7f9b52976799a477c6c2659aaa5bb4d3 SHA512 51df9370526732db099a8a925d35cdf1317ae2b0ab2c130eaf82373f25186165b4af7d44f71e51e2a68f7d07c7ae3f441a6c6c4be8467003b15dc770c4f4e89b
42 +DIST NVIDIA-Linux-x86_64-390.116.run 82282245 BLAKE2B 4dc5a1455eca985be5831e8670f461a11af28a31b07a266b633e5547751871da2cbe5753bc5f11f8a109bda50387b422984d2afff2d7284d8564edb4405421b6 SHA512 6afad9db6c56d475e34f6f4ee7a8a8351e132aab69fd3ad467a5f559a70cebda09dbd3ecfddd699b59c50903b81450b00c9197d05e149c759c2bb5d0a72d6fe8
43 DIST NVIDIA-Linux-x86_64-390.87.run 82690871 BLAKE2B b43a45a7d48160a72185417360a4ff4238922f6d77c7b58c0562f0e01c8aa33e89057e8a5d354e8d3c8e6fa86acf8908a6c2eab81e06158a92908eec18a9b02e SHA512 f4883744f5e07150677918669eed03c7b87774f752112aabd52d903a09ae16351b34105075da2ff0fcb7a847cf66ec17e9797826859fcaecc44fdcd464a61805
44 +DIST NVIDIA-Linux-x86_64-410.104.run 106042115 BLAKE2B 2f977d6afd5484fb630e2eeeca3c7394f9e4c65e471ad426ee450cfb61eeed149938735107f166e10acae320fd71c020fcb74662fb350fa6f9dc384fe68744dc SHA512 fe21a4d89f4ed74fb597c529d45964b9b5aca6ac58729a0a5bb8d6a3a00eb8f44a20807d12ad778989a7cb120943c8ee537dcfaa63881d121d96df110cc3b419
45 DIST NVIDIA-Linux-x86_64-410.93.run 107257681 BLAKE2B 56e9b6a17ab4d2fe2f18d90b4e209fe048c53dc43846ee9c8bd0960999a06ef9d9b6ba7e4c242f77cc35cfc5b9a0e2ae24aa5f07f68cb7662bd5010de41a9b36 SHA512 1132884210e447d20768c4ae84ff572c9f6886fb9a082da4d229a03c13932a5c6ccc518cad3311a9302b6a0d9e9675e3a53199e7183e07c81282d46883d26105
46 DIST NVIDIA-Linux-x86_64-415.27.run 108399659 BLAKE2B 05fb81a4ab8626d0170a30b70ed114c639ba7f0e5ac260d2f38cb5042a4d6052e40ada51cf2feff6bae0f394781d77cb70014f390873a715b7d9495b86918bf1 SHA512 5919333136042a227ff36c850d0c57898fb428a77d88633d205a269db4b844356a87f5b1e5c3042f40feaf083d4f82d32df5366820375b601f9d69d98cada0b6
47 DIST NVIDIA-Linux-x86_64-418.30.run 107191408 BLAKE2B 2d6d2b6da26e7d17f568f65a91ee5a339b54d023595dd381da20df4d27ccf0cce190dda5241290db8c3c231654f36276dfd07628d00d13c8960d63a68337fa4f SHA512 f227923528d54e66d9f79bfaf7239a0e7dd6d59cfa7a7766b36c9a91be091ac0702874f9ed460d4171fb6b67d88adbe2415c70e4f82ff87c8baebd045a493831
48 +DIST NVIDIA-Linux-x86_64-418.43.run 106650554 BLAKE2B 296516f37857dbb13490dfa14b94a2dfe7b1becadb9668422879f0d271ecf5d755716dc79f0e647d2ea860436a5bac6e520ffa93a9d8c57aec2307667a1b029e SHA512 bfd43bec59de7523e879354224f2a678b6bcce53136f10d139882d9ea5d100c034fce2a15100607cb4622a3d158dbbfb41aacc528b04307c989c915b78298045
49 DIST nvidia-settings-340.107.tar.bz2 1549413 BLAKE2B 127442ee2c35ceec47ab4f103bdd2d0278c621fcb9be47051111f6f8728ef5699bdc95fe33a3812a807c38c4868b04c2176e2ed218a422171d2a88ac0c00de96 SHA512 593e7e83aa350a3a7beaaa32aca8660d7e203f6f2e460a6e6eabcdc092087f9917ee4e6d141e37ad4e3b0a1b9908c085e4a71d2f579e481a03bbd1c6f75ca776
50 +DIST nvidia-settings-390.116.tar.bz2 1109033 BLAKE2B ddcb74c9ecd2134ae39b6d08a81f0d6e454e00274a28d85cc7946961ab361a97cb1e7f94c1771cdab4b2d1b20f0da070ab4ae6acb906d407aa6fb22e9e5de1db SHA512 7ae0d326b4704986b17a53c5278219e3496c11ad0ee38a50bffbb56c70412f68c135354fc13d390737131a9df4c0fbeeb3bea7effcceac1f3b71016c60d760c5
51 DIST nvidia-settings-390.87.tar.bz2 1109274 BLAKE2B 20eb809ceeade932e89592ac91071e6d3311f4a075812225d68342806b7ab1f9f8ed0399ea7a47241b7974311794852fd932fd8e824065589de6c124a3c81ef3 SHA512 cafdf2bfefac187409dfcffd593ff23eaba5ab7ab8dd85a9f14a4b6a47ffb3649af770bd2615887af9d30de3ef8fedaad7afc2ebe9f60a8ba7355a9004702959
52 +DIST nvidia-settings-410.104.tar.bz2 1120639 BLAKE2B 75554b0cca7c022a0f1cc02091f81ccd930e30e1dd5f674cf35b0cfed83c5e235c360b0f28701d39d42017b35b816f975ff177398eb9f59280851c0b8bfd57d3 SHA512 08d938117fca4d471bdff451219e6772fdd1e9c37c0ed623be8506c1cb5ce7ccde4d073848ade9f5bfca14b1a3cf9eb90b4b4bf44375bff43d023815b622b424
53 DIST nvidia-settings-410.93.tar.bz2 1115704 BLAKE2B 1119181feb2704711593c19a43dce5feb58778d0251cb2dcb8647de7bfb1abe3a7f374bddd62e4c983b07a207bca7c1d99a7ac51cba3ae41f78fb97c4d1e9666 SHA512 4e5a5babae382dbe9f6899e51d3b1081fd7123f9ba5e147f7d5cc1899904892ea8d953983e43643ea4355d06348db40005755a02c7c0ff6ba104eac4a9d450f2
54 DIST nvidia-settings-415.27.tar.bz2 1128013 BLAKE2B 36513252ff3d5f2036c80250e012d79bebfc14daff56fdaabb032856f5f78ce77cf4ce32d6eaee5fe4c1a18db63d5c69d6848517f025c711f133e28b3e509396 SHA512 5ac3b673c41194a1952ec10cd3c961aefd281bb044ecae5c9d11cb55d4555fed44e6056b5a2e97b5b87687743cd7f702f33ce7e0f841f04c8175d63693a24594
55 DIST nvidia-settings-418.30.tar.bz2 1127071 BLAKE2B 2ff35de4d05a8d1a5f5528a7bc65cb8dfc0a7c67a555b20df5be95e2bb5378018a90007f220db12956ab7b108b77b67bca2e03640613287af5afca927cf303e2 SHA512 4c8de5bc7452083c8999c44a6fd4278d3915eaf1fb2146e05805e141a472c5e13fc6de46c28d28a21ee6215ba21de76d2ab21233a3d220409483f4b36442cfa9
56 +DIST nvidia-settings-418.43.tar.bz2 1127336 BLAKE2B 622507f841da051a14bbbbb44b1364310d4224d54b5b00f09a9a2706fdf5900b0a2ccd9be4c94d8d4793158f3ed9cff40706795f29c314312470f0b420dc5104 SHA512 f2750684ad261b820414b78b20f9bcfe2a68f95283a646c75bf488c2dc4b78f3e3732df2839c8bdb45619a53df3712bc6dc575a22fbdcb8edff3c8aacf570a3f
57
58 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.116.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.116.ebuild
59 new file mode 100644
60 index 00000000000..63de2c49644
61 --- /dev/null
62 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-390.116.ebuild
63 @@ -0,0 +1,582 @@
64 +# Copyright 1999-2019 Gentoo Authors
65 +# Distributed under the terms of the GNU General Public License v2
66 +
67 +EAPI=6
68 +inherit eutils flag-o-matic linux-info linux-mod multilib-minimal nvidia-driver \
69 + portability toolchain-funcs unpacker user udev
70 +
71 +DESCRIPTION="NVIDIA Accelerated Graphics Driver"
72 +HOMEPAGE="http://www.nvidia.com/"
73 +
74 +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}"
75 +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
76 +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}"
77 +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}"
78 +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}"
79 +
80 +NV_URI="https://us.download.nvidia.com/XFree86/"
81 +SRC_URI="
82 + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz )
83 + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
84 + arm? ( ${NV_URI}Linux-x86-ARM/${PV}/${ARM_NV_PACKAGE}.run )
85 + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )
86 + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run )
87 + tools? (
88 + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2
89 + )
90 +"
91 +
92 +LICENSE="GPL-2 NVIDIA-r2"
93 +SLOT="0/${PV%.*}"
94 +KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd"
95 +RESTRICT="bindist mirror"
96 +EMULTILIB_PKG="true"
97 +
98 +IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X"
99 +REQUIRED_USE="
100 + tools? ( X )
101 + static-libs? ( tools )
102 +"
103 +
104 +COMMON="
105 + app-eselect/eselect-opencl
106 + kernel_linux? ( >=sys-libs/glibc-2.6.1 )
107 + tools? (
108 + dev-libs/atk
109 + dev-libs/glib:2
110 + dev-libs/jansson
111 + gtk3? (
112 + x11-libs/gtk+:3
113 + )
114 + x11-libs/cairo
115 + x11-libs/gdk-pixbuf[X]
116 + x11-libs/gtk+:2
117 + x11-libs/libX11
118 + x11-libs/libXext
119 + x11-libs/libXrandr
120 + x11-libs/libXv
121 + x11-libs/libXxf86vm
122 + x11-libs/pango[X]
123 + )
124 + X? (
125 + >=app-eselect/eselect-opengl-1.0.9
126 + app-misc/pax-utils
127 + )
128 +"
129 +DEPEND="
130 + ${COMMON}
131 + kernel_linux? ( virtual/linux-sources )
132 + tools? ( sys-apps/dbus )
133 +"
134 +RDEPEND="
135 + ${COMMON}
136 + acpi? ( sys-power/acpid )
137 + tools? ( !media-video/nvidia-settings )
138 + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] )
139 + X? (
140 + <x11-base/xorg-server-1.20.99:=
141 + >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
142 + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
143 + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
144 + sys-libs/zlib[${MULTILIB_USEDEP}]
145 + )
146 +"
147 +QA_PREBUILT="opt/* usr/lib*"
148 +S=${WORKDIR}/
149 +
150 +nvidia_drivers_versions_check() {
151 + if use amd64 && has_multilib_profile && \
152 + [ "${DEFAULT_ABI}" != "amd64" ]; then
153 + eerror "This ebuild doesn't currently support changing your default ABI"
154 + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
155 + fi
156 +
157 + if use kernel_linux && kernel_is ge 5 1; then
158 + ewarn "Gentoo supports kernels which are supported by NVIDIA"
159 + ewarn "which are limited to the following kernels:"
160 + ewarn "<sys-kernel/gentoo-sources-5.1"
161 + ewarn "<sys-kernel/vanilla-sources-5.1"
162 + ewarn ""
163 + ewarn "You are free to utilize epatch_user to provide whatever"
164 + ewarn "support you feel is appropriate, but will not receive"
165 + ewarn "support as a result of those changes."
166 + ewarn ""
167 + ewarn "Do not file a bug report about this."
168 + ewarn ""
169 + fi
170 +
171 + # Since Nvidia ships many different series of drivers, we need to give the user
172 + # some kind of guidance as to what version they should install. This tries
173 + # to point the user in the right direction but can't be perfect. check
174 + # nvidia-driver.eclass
175 + nvidia-driver-check-warning
176 +
177 + # Kernel features/options to check for
178 + CONFIG_CHECK="!DEBUG_MUTEXES ~!LOCKDEP ~MTRR ~SYSVIPC ~ZONE_DMA"
179 + use x86 && CONFIG_CHECK+=" ~HIGHMEM"
180 +
181 + # Now do the above checks
182 + use kernel_linux && check_extra_config
183 +}
184 +
185 +pkg_pretend() {
186 + nvidia_drivers_versions_check
187 +}
188 +
189 +pkg_setup() {
190 + nvidia_drivers_versions_check
191 +
192 + # try to turn off distcc and ccache for people that have a problem with it
193 + export DISTCC_DISABLE=1
194 + export CCACHE_DISABLE=1
195 +
196 + if use driver && use kernel_linux; then
197 + MODULE_NAMES="nvidia(video:${S}/kernel)"
198 + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
199 + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)"
200 +
201 + # This needs to run after MODULE_NAMES (so that the eclass checks
202 + # whether the kernel supports loadable modules) but before BUILD_PARAMS
203 + # is set (so that KV_DIR is populated).
204 + linux-mod_pkg_setup
205 +
206 + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
207 + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
208 +
209 + # linux-mod_src_compile calls set_arch_to_kernel, which
210 + # sets the ARCH to x86 but NVIDIA's wrapping Makefile
211 + # expects x86_64 or i386 and then converts it to x86
212 + # later on in the build process
213 + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
214 + fi
215 +
216 + if use kernel_linux && kernel_is lt 2 6 9; then
217 + eerror "You must build this against 2.6.9 or higher kernels."
218 + fi
219 +
220 + # set variables to where files are in the package structure
221 + if use kernel_FreeBSD; then
222 + use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}"
223 + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}"
224 + NV_DOC="${S}/doc"
225 + NV_OBJ="${S}/obj"
226 + NV_SRC="${S}/src"
227 + NV_MAN="${S}/x11/man"
228 + NV_X11="${S}/obj"
229 + NV_SOVER=1
230 + elif use kernel_linux; then
231 + NV_DOC="${S}"
232 + NV_OBJ="${S}"
233 + NV_SRC="${S}/kernel"
234 + NV_MAN="${S}"
235 + NV_X11="${S}"
236 + NV_SOVER=${PV}
237 + else
238 + die "Could not determine proper NVIDIA package"
239 + fi
240 +}
241 +
242 +src_prepare() {
243 + local man_file
244 + for man_file in "${NV_MAN}"/*1.gz; do
245 + gunzip $man_file || die
246 + done
247 +
248 + if use tools; then
249 + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die
250 + sed -i \
251 + -e "s:@PV@:${PV}:g" \
252 + "${WORKDIR}"/nvidia-settings-linker.patch || die
253 + eapply "${WORKDIR}"/nvidia-settings-linker.patch
254 + fi
255 +
256 + default
257 +
258 + if ! [ -f nvidia_icd.json ]; then
259 + cp nvidia_icd.json.template nvidia_icd.json || die
260 + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die
261 + fi
262 +}
263 +
264 +src_compile() {
265 + # This is already the default on Linux, as there's no toplevel Makefile, but
266 + # on FreeBSD there's one and triggers the kernel module build, as we install
267 + # it by itself, pass this.
268 +
269 + cd "${NV_SRC}"
270 + if use kernel_FreeBSD; then
271 + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
272 + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
273 + elif use driver && use kernel_linux; then
274 + BUILD_TARGETS=module linux-mod_src_compile \
275 + KERNELRELEASE="${KV_FULL}" \
276 + src="${KERNEL_DIR}"
277 + fi
278 +
279 + if use tools; then
280 + emake -C "${S}"/nvidia-settings-${PV}/src \
281 + AR="$(tc-getAR)" \
282 + CC="$(tc-getCC)" \
283 + DO_STRIP= \
284 + LD="$(tc-getCC)" \
285 + LIBDIR="$(get_libdir)" \
286 + NVLD="$(tc-getLD)" \
287 + NV_VERBOSE=1 \
288 + RANLIB="$(tc-getRANLIB)" \
289 + build-xnvctrl
290 +
291 + emake -C "${S}"/nvidia-settings-${PV}/src \
292 + CC="$(tc-getCC)" \
293 + DO_STRIP= \
294 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
295 + LD="$(tc-getCC)" \
296 + LIBDIR="$(get_libdir)" \
297 + NVLD="$(tc-getLD)" \
298 + NVML_ENABLED=0 \
299 + NV_USE_BUNDLED_LIBJANSSON=0 \
300 + NV_VERBOSE=1
301 + fi
302 +}
303 +
304 +# Install nvidia library:
305 +# the first parameter is the library to install
306 +# the second parameter is the provided soversion
307 +# the third parameter is the target directory if it is not /usr/lib
308 +donvidia() {
309 + # Full path to library
310 + nv_LIB="${1}"
311 +
312 + # SOVER to use
313 + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
314 +
315 + # Where to install
316 + nv_DEST="${2}"
317 +
318 + # Get just the library name
319 + nv_LIBNAME=$(basename "${nv_LIB}")
320 +
321 + if [[ "${nv_DEST}" ]]; then
322 + exeinto ${nv_DEST}
323 + action="doexe"
324 + else
325 + nv_DEST="/usr/$(get_libdir)"
326 + action="dolib.so"
327 + fi
328 +
329 + # Install the library
330 + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
331 +
332 + # If the library has a SONAME and SONAME does not match the library name,
333 + # then we need to create a symlink
334 + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
335 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
336 + || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
337 + fi
338 +
339 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
340 + || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
341 +}
342 +
343 +src_install() {
344 + if use driver && use kernel_linux; then
345 + linux-mod_src_install
346 +
347 + # Add the aliases
348 + # This file is tweaked with the appropriate video group in
349 + # pkg_preinst, see bug #491414
350 + insinto /etc/modprobe.d
351 + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
352 + doins "${FILESDIR}"/nvidia-rmmod.conf
353 +
354 + # Ensures that our device nodes are created when not using X
355 + exeinto "$(get_udevdir)"
356 + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh
357 + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules
358 + elif use kernel_FreeBSD; then
359 + if use x86-fbsd; then
360 + insinto /boot/modules
361 + doins "${S}/src/nvidia.kld"
362 + fi
363 +
364 + exeinto /boot/modules
365 + doexe "${S}/src/nvidia.ko"
366 + fi
367 +
368 + # NVIDIA kernel <-> userspace driver config lib
369 + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
370 +
371 + # NVIDIA framebuffer capture library
372 + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
373 +
374 + # NVIDIA video encode/decode <-> CUDA
375 + if use kernel_linux; then
376 + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
377 + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
378 + fi
379 +
380 + if use X; then
381 + # Xorg DDX driver
382 + insinto /usr/$(get_libdir)/xorg/modules/drivers
383 + doins ${NV_X11}/nvidia_drv.so
384 +
385 + # Xorg GLX driver
386 + donvidia ${NV_X11}/libglx.so.${NV_SOVER} \
387 + /usr/$(get_libdir)/opengl/nvidia/extensions
388 +
389 + # Xorg nvidia.conf
390 + if has_version '>=x11-base/xorg-server-1.16'; then
391 + insinto /usr/share/X11/xorg.conf.d
392 + newins {,50-}nvidia-drm-outputclass.conf
393 + fi
394 +
395 + insinto /usr/share/glvnd/egl_vendor.d
396 + doins ${NV_X11}/10_nvidia.json
397 + fi
398 +
399 + if use wayland; then
400 + insinto /usr/share/egl/egl_external_platform.d
401 + doins ${NV_X11}/10_nvidia_wayland.json
402 + fi
403 +
404 + # OpenCL ICD for NVIDIA
405 + if use kernel_linux; then
406 + insinto /etc/OpenCL/vendors
407 + doins ${NV_OBJ}/nvidia.icd
408 + fi
409 +
410 + # Documentation
411 + if use kernel_FreeBSD; then
412 + dodoc "${NV_DOC}/README"
413 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
414 + use tools && doman "${NV_MAN}"/nvidia-settings.1
415 + else
416 + # Docs
417 + newdoc "${NV_DOC}/README.txt" README
418 + dodoc "${NV_DOC}/NVIDIA_Changelog"
419 + doman "${NV_MAN}"/nvidia-smi.1
420 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
421 + use tools && doman "${NV_MAN}"/nvidia-settings.1
422 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1
423 + fi
424 +
425 + docinto html
426 + dodoc -r ${NV_DOC}/html/*
427 +
428 + # Helper Apps
429 + exeinto /opt/bin/
430 +
431 + if use X; then
432 + doexe ${NV_OBJ}/nvidia-xconfig
433 +
434 + insinto /etc/vulkan/icd.d
435 + doins nvidia_icd.json
436 + fi
437 +
438 + if use kernel_linux; then
439 + doexe ${NV_OBJ}/nvidia-cuda-mps-control
440 + doexe ${NV_OBJ}/nvidia-cuda-mps-server
441 + doexe ${NV_OBJ}/nvidia-debugdump
442 + doexe ${NV_OBJ}/nvidia-persistenced
443 + doexe ${NV_OBJ}/nvidia-smi
444 +
445 + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092)
446 + doexe ${NV_OBJ}/nvidia-modprobe
447 + fowners root:video /opt/bin/nvidia-modprobe
448 + fperms 4710 /opt/bin/nvidia-modprobe
449 + dosym /{opt,usr}/bin/nvidia-modprobe
450 +
451 + doman nvidia-cuda-mps-control.1
452 + doman nvidia-modprobe.1
453 + doman nvidia-persistenced.1
454 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
455 + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
456 + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
457 + fi
458 +
459 + if use tools; then
460 + emake -C "${S}"/nvidia-settings-${PV}/src/ \
461 + DESTDIR="${D}" \
462 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
463 + LIBDIR="${D}/usr/$(get_libdir)" \
464 + NV_USE_BUNDLED_LIBJANSSON=0 \
465 + NV_VERBOSE=1 \
466 + PREFIX=/usr \
467 + DO_STRIP= \
468 + install
469 +
470 + if use static-libs; then
471 + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a
472 +
473 + insinto /usr/include/NVCtrl
474 + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h
475 + fi
476 +
477 + insinto /usr/share/nvidia/
478 + doins nvidia-application-profiles-${PV}-key-documentation
479 +
480 + insinto /etc/nvidia
481 + newins \
482 + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc
483 +
484 + # There is no icon in the FreeBSD tarball.
485 + use kernel_FreeBSD || \
486 + doicon ${NV_OBJ}/nvidia-settings.png
487 +
488 + domenu "${FILESDIR}"/nvidia-settings.desktop
489 +
490 + exeinto /etc/X11/xinit/xinitrc.d
491 + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
492 + fi
493 +
494 + dobin ${NV_OBJ}/nvidia-bug-report.sh
495 +
496 + if has_multilib_profile && use multilib; then
497 + local OABI=${ABI}
498 + for ABI in $(get_install_abis); do
499 + src_install-libs
500 + done
501 + ABI=${OABI}
502 + unset OABI
503 + else
504 + src_install-libs
505 + fi
506 +
507 + is_final_abi || die "failed to iterate through all ABIs"
508 +
509 + readme.gentoo_create_doc
510 +}
511 +
512 +src_install-libs() {
513 + local inslibdir=$(get_libdir)
514 + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib"
515 + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
516 + local nv_libdir="${NV_OBJ}"
517 +
518 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then
519 + nv_libdir="${NV_OBJ}"/32
520 + fi
521 +
522 + if use X; then
523 + NV_GLX_LIBRARIES=(
524 + "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}"
525 + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
526 + "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}"
527 + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}"
528 + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
529 + "libGLESv2.so.2.1.0 ${GL_ROOT}"
530 + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
531 + "libGLX.so.0 ${GL_ROOT}"
532 + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
533 + "libGLdispatch.so.0 ${GL_ROOT}"
534 + "libOpenCL.so.1.0.0 ${CL_ROOT}"
535 + "libOpenGL.so.0 ${GL_ROOT}"
536 + "libcuda.so.${NV_SOVER}"
537 + "libnvcuvid.so.${NV_SOVER}"
538 + "libnvidia-compiler.so.${NV_SOVER}"
539 + "libnvidia-eglcore.so.${NV_SOVER}"
540 + "libnvidia-encode.so.${NV_SOVER}"
541 + "libnvidia-fatbinaryloader.so.${NV_SOVER}"
542 + "libnvidia-fbc.so.${NV_SOVER}"
543 + "libnvidia-glcore.so.${NV_SOVER}"
544 + "libnvidia-glsi.so.${NV_SOVER}"
545 + "libnvidia-ifr.so.${NV_SOVER}"
546 + "libnvidia-opencl.so.${NV_SOVER}"
547 + "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
548 + "libvdpau_nvidia.so.${NV_SOVER}"
549 + )
550 +
551 + if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]];
552 + then
553 + NV_GLX_LIBRARIES+=(
554 + "libnvidia-egl-wayland.so.1.0.2"
555 + )
556 + fi
557 +
558 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
559 + then
560 + NV_GLX_LIBRARIES+=(
561 + "libnvidia-wfb.so.${NV_SOVER}"
562 + )
563 + fi
564 +
565 + if use kernel_FreeBSD; then
566 + NV_GLX_LIBRARIES+=(
567 + "libnvidia-tls.so.${NV_SOVER}"
568 + )
569 + fi
570 +
571 + if use kernel_linux; then
572 + NV_GLX_LIBRARIES+=(
573 + "libnvidia-ml.so.${NV_SOVER}"
574 + "tls/libnvidia-tls.so.${NV_SOVER}"
575 + )
576 + fi
577 +
578 + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
579 + donvidia "${nv_libdir}"/${NV_LIB}
580 + done
581 + fi
582 +}
583 +
584 +pkg_preinst() {
585 + if use driver && use kernel_linux; then
586 + linux-mod_pkg_preinst
587 +
588 + local videogroup="$(egetent group video | cut -d ':' -f 3)"
589 + if [ -z "${videogroup}" ]; then
590 + eerror "Failed to determine the video group gid"
591 + die "Failed to determine the video group gid"
592 + else
593 + sed -i \
594 + -e "s:PACKAGE:${PF}:g" \
595 + -e "s:VIDEOGID:${videogroup}:" \
596 + "${D}"/etc/modprobe.d/nvidia.conf || die
597 + fi
598 + fi
599 +
600 + # Clean the dynamic libGL stuff's home to ensure
601 + # we dont have stale libs floating around
602 + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
603 + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
604 + fi
605 + # Make sure we nuke the old nvidia-glx's env.d file
606 + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then
607 + rm -f "${ROOT}"/etc/env.d/09nvidia
608 + fi
609 +}
610 +
611 +pkg_postinst() {
612 + use driver && use kernel_linux && linux-mod_pkg_postinst
613 +
614 + # Switch to the nvidia implementation
615 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia
616 + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia
617 +
618 + readme.gentoo_print_elog
619 +
620 + if ! use X; then
621 + elog "You have elected to not install the X.org driver. Along with"
622 + elog "this the OpenGL libraries and VDPAU libraries were not"
623 + elog "installed. Additionally, once the driver is loaded your card"
624 + elog "and fan will run at max speed which may not be desirable."
625 + elog "Use the 'nvidia-smi' init script to have your card and fan"
626 + elog "speed scale appropriately."
627 + elog
628 + fi
629 + if ! use tools; then
630 + elog "USE=tools controls whether the nvidia-settings application"
631 + elog "is installed. If you would like to use it, enable that"
632 + elog "flag and re-emerge this ebuild. Optionally you can install"
633 + elog "media-video/nvidia-settings"
634 + elog
635 + fi
636 +}
637 +
638 +pkg_prerm() {
639 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
640 +}
641 +
642 +pkg_postrm() {
643 + use driver && use kernel_linux && linux-mod_pkg_postrm
644 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
645 +}
646
647 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-410.104.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-410.104.ebuild
648 new file mode 100644
649 index 00000000000..7378c29b686
650 --- /dev/null
651 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-410.104.ebuild
652 @@ -0,0 +1,585 @@
653 +# Copyright 1999-2019 Gentoo Authors
654 +# Distributed under the terms of the GNU General Public License v2
655 +
656 +EAPI=6
657 +inherit eutils flag-o-matic linux-info linux-mod multilib-minimal nvidia-driver \
658 + portability toolchain-funcs unpacker user udev
659 +
660 +DESCRIPTION="NVIDIA Accelerated Graphics Driver"
661 +HOMEPAGE="http://www.nvidia.com/"
662 +
663 +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}"
664 +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
665 +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}"
666 +
667 +NV_URI="https://us.download.nvidia.com/XFree86/"
668 +SRC_URI="
669 + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz )
670 + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
671 + tools? (
672 + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2
673 + )
674 +"
675 +
676 +LICENSE="GPL-2 NVIDIA-r2"
677 +SLOT="0/${PV%.*}"
678 +KEYWORDS="-* ~amd64 ~amd64-fbsd"
679 +RESTRICT="bindist mirror"
680 +EMULTILIB_PKG="true"
681 +
682 +IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X"
683 +REQUIRED_USE="
684 + tools? ( X )
685 + static-libs? ( tools )
686 +"
687 +
688 +COMMON="
689 + app-eselect/eselect-opencl
690 + kernel_linux? ( >=sys-libs/glibc-2.6.1 )
691 + tools? (
692 + dev-libs/atk
693 + dev-libs/glib:2
694 + dev-libs/jansson
695 + gtk3? (
696 + x11-libs/gtk+:3
697 + )
698 + x11-libs/cairo
699 + x11-libs/gdk-pixbuf[X]
700 + x11-libs/gtk+:2
701 + x11-libs/libX11
702 + x11-libs/libXext
703 + x11-libs/libXrandr
704 + x11-libs/libXv
705 + x11-libs/libXxf86vm
706 + x11-libs/pango[X]
707 + )
708 + X? (
709 + >=app-eselect/eselect-opengl-1.0.9
710 + app-misc/pax-utils
711 + )
712 +"
713 +DEPEND="
714 + ${COMMON}
715 + kernel_linux? ( virtual/linux-sources )
716 + tools? ( sys-apps/dbus )
717 +"
718 +RDEPEND="
719 + ${COMMON}
720 + acpi? ( sys-power/acpid )
721 + tools? ( !media-video/nvidia-settings )
722 + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] )
723 + X? (
724 + <x11-base/xorg-server-1.20.99:=
725 + >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
726 + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
727 + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
728 + sys-libs/zlib[${MULTILIB_USEDEP}]
729 + )
730 +"
731 +QA_PREBUILT="opt/* usr/lib*"
732 +S=${WORKDIR}/
733 +
734 +nvidia_drivers_versions_check() {
735 + if use amd64 && has_multilib_profile && \
736 + [ "${DEFAULT_ABI}" != "amd64" ]; then
737 + eerror "This ebuild doesn't currently support changing your default ABI"
738 + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
739 + fi
740 +
741 + if use kernel_linux && kernel_is ge 5 1; then
742 + ewarn "Gentoo supports kernels which are supported by NVIDIA"
743 + ewarn "which are limited to the following kernels:"
744 + ewarn "<sys-kernel/gentoo-sources-5.1"
745 + ewarn "<sys-kernel/vanilla-sources-5.1"
746 + ewarn ""
747 + ewarn "You are free to utilize epatch_user to provide whatever"
748 + ewarn "support you feel is appropriate, but will not receive"
749 + ewarn "support as a result of those changes."
750 + ewarn ""
751 + ewarn "Do not file a bug report about this."
752 + ewarn ""
753 + fi
754 +
755 + # Since Nvidia ships many different series of drivers, we need to give the user
756 + # some kind of guidance as to what version they should install. This tries
757 + # to point the user in the right direction but can't be perfect. check
758 + # nvidia-driver.eclass
759 + nvidia-driver-check-warning
760 +
761 + # Kernel features/options to check for
762 + CONFIG_CHECK="!DEBUG_MUTEXES ~!LOCKDEP ~MTRR ~PM ~SYSVIPC ~ZONE_DMA"
763 +
764 + # Now do the above checks
765 + use kernel_linux && check_extra_config
766 +}
767 +
768 +pkg_pretend() {
769 + nvidia_drivers_versions_check
770 +}
771 +
772 +pkg_setup() {
773 + nvidia_drivers_versions_check
774 +
775 + # try to turn off distcc and ccache for people that have a problem with it
776 + export DISTCC_DISABLE=1
777 + export CCACHE_DISABLE=1
778 +
779 + if use driver && use kernel_linux; then
780 + MODULE_NAMES="nvidia(video:${S}/kernel)"
781 + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
782 + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)"
783 +
784 + # This needs to run after MODULE_NAMES (so that the eclass checks
785 + # whether the kernel supports loadable modules) but before BUILD_PARAMS
786 + # is set (so that KV_DIR is populated).
787 + linux-mod_pkg_setup
788 +
789 + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
790 + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
791 +
792 + # linux-mod_src_compile calls set_arch_to_kernel, which
793 + # sets the ARCH to x86 but NVIDIA's wrapping Makefile
794 + # expects x86_64 or i386 and then converts it to x86
795 + # later on in the build process
796 + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
797 + fi
798 +
799 + if use kernel_linux && kernel_is lt 2 6 9; then
800 + eerror "You must build this against 2.6.9 or higher kernels."
801 + fi
802 +
803 + # set variables to where files are in the package structure
804 + if use kernel_FreeBSD; then
805 + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}"
806 + NV_DOC="${S}/doc"
807 + NV_OBJ="${S}/obj"
808 + NV_SRC="${S}/src"
809 + NV_MAN="${S}/x11/man"
810 + NV_X11="${S}/obj"
811 + NV_SOVER=1
812 + elif use kernel_linux; then
813 + NV_DOC="${S}"
814 + NV_OBJ="${S}"
815 + NV_SRC="${S}/kernel"
816 + NV_MAN="${S}"
817 + NV_X11="${S}"
818 + NV_SOVER=${PV}
819 + else
820 + die "Could not determine proper NVIDIA package"
821 + fi
822 +}
823 +
824 +src_prepare() {
825 + local man_file
826 + for man_file in "${NV_MAN}"/*1.gz; do
827 + gunzip $man_file || die
828 + done
829 +
830 + if use tools; then
831 + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die
832 + sed -i \
833 + -e "s:@PV@:${PV}:g" \
834 + "${WORKDIR}"/nvidia-settings-linker.patch || die
835 + eapply "${WORKDIR}"/nvidia-settings-linker.patch
836 + fi
837 +
838 + default
839 +
840 + if ! [ -f nvidia_icd.json ]; then
841 + cp nvidia_icd.json.template nvidia_icd.json || die
842 + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die
843 + fi
844 +}
845 +
846 +src_compile() {
847 + # This is already the default on Linux, as there's no toplevel Makefile, but
848 + # on FreeBSD there's one and triggers the kernel module build, as we install
849 + # it by itself, pass this.
850 +
851 + cd "${NV_SRC}"
852 + if use kernel_FreeBSD; then
853 + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
854 + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
855 + elif use driver && use kernel_linux; then
856 + BUILD_TARGETS=module linux-mod_src_compile \
857 + KERNELRELEASE="${KV_FULL}" \
858 + src="${KERNEL_DIR}"
859 + fi
860 +
861 + if use tools; then
862 + emake -C "${S}"/nvidia-settings-${PV}/src \
863 + AR="$(tc-getAR)" \
864 + CC="$(tc-getCC)" \
865 + DO_STRIP= \
866 + LD="$(tc-getCC)" \
867 + LIBDIR="$(get_libdir)" \
868 + NVLD="$(tc-getLD)" \
869 + NV_VERBOSE=1 \
870 + RANLIB="$(tc-getRANLIB)" \
871 + build-xnvctrl
872 +
873 + emake -C "${S}"/nvidia-settings-${PV}/src \
874 + CC="$(tc-getCC)" \
875 + DO_STRIP= \
876 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
877 + LD="$(tc-getCC)" \
878 + LIBDIR="$(get_libdir)" \
879 + NVLD="$(tc-getLD)" \
880 + NVML_ENABLED=0 \
881 + NV_USE_BUNDLED_LIBJANSSON=0 \
882 + NV_VERBOSE=1
883 + fi
884 +}
885 +
886 +# Install nvidia library:
887 +# the first parameter is the library to install
888 +# the second parameter is the provided soversion
889 +# the third parameter is the target directory if it is not /usr/lib
890 +donvidia() {
891 + # Full path to library
892 + nv_LIB="${1}"
893 +
894 + # SOVER to use
895 + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
896 +
897 + # Where to install
898 + nv_DEST="${2}"
899 +
900 + # Get just the library name
901 + nv_LIBNAME=$(basename "${nv_LIB}")
902 +
903 + if [[ "${nv_DEST}" ]]; then
904 + exeinto ${nv_DEST}
905 + action="doexe"
906 + else
907 + nv_DEST="/usr/$(get_libdir)"
908 + action="dolib.so"
909 + fi
910 +
911 + # Install the library
912 + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
913 +
914 + # If the library has a SONAME and SONAME does not match the library name,
915 + # then we need to create a symlink
916 + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
917 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
918 + || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
919 + fi
920 +
921 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
922 + || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
923 +}
924 +
925 +src_install() {
926 + if use driver && use kernel_linux; then
927 + linux-mod_src_install
928 +
929 + # Add the aliases
930 + # This file is tweaked with the appropriate video group in
931 + # pkg_preinst, see bug #491414
932 + insinto /etc/modprobe.d
933 + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
934 + doins "${FILESDIR}"/nvidia-rmmod.conf
935 +
936 + # Ensures that our device nodes are created when not using X
937 + exeinto "$(get_udevdir)"
938 + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh
939 + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules
940 + elif use kernel_FreeBSD; then
941 + if use x86-fbsd; then
942 + insinto /boot/modules
943 + doins "${S}/src/nvidia.kld"
944 + fi
945 +
946 + exeinto /boot/modules
947 + doexe "${S}/src/nvidia.ko"
948 + fi
949 +
950 + # NVIDIA kernel <-> userspace driver config lib
951 + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
952 +
953 + # NVIDIA framebuffer capture library
954 + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
955 +
956 + # NVIDIA video encode/decode <-> CUDA
957 + if use kernel_linux; then
958 + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
959 + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
960 + fi
961 +
962 + if use X; then
963 + # Xorg DDX driver
964 + insinto /usr/$(get_libdir)/xorg/modules/drivers
965 + doins ${NV_X11}/nvidia_drv.so
966 +
967 + # Xorg GLX driver
968 + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \
969 + /usr/$(get_libdir)/xorg/modules/extensions
970 +
971 + # Xorg nvidia.conf
972 + if has_version '>=x11-base/xorg-server-1.16'; then
973 + insinto /usr/share/X11/xorg.conf.d
974 + newins {,50-}nvidia-drm-outputclass.conf
975 + fi
976 +
977 + insinto /usr/share/glvnd/egl_vendor.d
978 + doins ${NV_X11}/10_nvidia.json
979 + fi
980 +
981 + if use wayland; then
982 + insinto /usr/share/egl/egl_external_platform.d
983 + doins ${NV_X11}/10_nvidia_wayland.json
984 + fi
985 +
986 + # OpenCL ICD for NVIDIA
987 + if use kernel_linux; then
988 + insinto /etc/OpenCL/vendors
989 + doins ${NV_OBJ}/nvidia.icd
990 + fi
991 +
992 + # Documentation
993 + if use kernel_FreeBSD; then
994 + dodoc "${NV_DOC}/README"
995 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
996 + use tools && doman "${NV_MAN}"/nvidia-settings.1
997 + else
998 + # Docs
999 + newdoc "${NV_DOC}/README.txt" README
1000 + dodoc "${NV_DOC}/NVIDIA_Changelog"
1001 + doman "${NV_MAN}"/nvidia-smi.1
1002 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
1003 + use tools && doman "${NV_MAN}"/nvidia-settings.1
1004 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1
1005 + fi
1006 +
1007 + docinto html
1008 + dodoc -r ${NV_DOC}/html/*
1009 +
1010 + # Helper Apps
1011 + exeinto /opt/bin/
1012 +
1013 + if use X; then
1014 + doexe ${NV_OBJ}/nvidia-xconfig
1015 +
1016 + insinto /etc/vulkan/icd.d
1017 + doins nvidia_icd.json
1018 + fi
1019 +
1020 + if use kernel_linux; then
1021 + doexe ${NV_OBJ}/nvidia-cuda-mps-control
1022 + doexe ${NV_OBJ}/nvidia-cuda-mps-server
1023 + doexe ${NV_OBJ}/nvidia-debugdump
1024 + doexe ${NV_OBJ}/nvidia-persistenced
1025 + doexe ${NV_OBJ}/nvidia-smi
1026 +
1027 + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092)
1028 + doexe ${NV_OBJ}/nvidia-modprobe
1029 + fowners root:video /opt/bin/nvidia-modprobe
1030 + fperms 4710 /opt/bin/nvidia-modprobe
1031 + dosym /{opt,usr}/bin/nvidia-modprobe
1032 +
1033 + doman nvidia-cuda-mps-control.1
1034 + doman nvidia-modprobe.1
1035 + doman nvidia-persistenced.1
1036 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
1037 + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
1038 + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
1039 + fi
1040 +
1041 + if use tools; then
1042 + emake -C "${S}"/nvidia-settings-${PV}/src/ \
1043 + DESTDIR="${D}" \
1044 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
1045 + LIBDIR="${D}/usr/$(get_libdir)" \
1046 + NV_USE_BUNDLED_LIBJANSSON=0 \
1047 + NV_VERBOSE=1 \
1048 + PREFIX=/usr \
1049 + DO_STRIP= \
1050 + install
1051 +
1052 + if use static-libs; then
1053 + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a
1054 +
1055 + insinto /usr/include/NVCtrl
1056 + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h
1057 + fi
1058 +
1059 + insinto /usr/share/nvidia/
1060 + doins nvidia-application-profiles-${PV}-key-documentation
1061 +
1062 + insinto /etc/nvidia
1063 + newins \
1064 + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc
1065 +
1066 + # There is no icon in the FreeBSD tarball.
1067 + use kernel_FreeBSD || \
1068 + doicon ${NV_OBJ}/nvidia-settings.png
1069 +
1070 + domenu "${FILESDIR}"/nvidia-settings.desktop
1071 +
1072 + exeinto /etc/X11/xinit/xinitrc.d
1073 + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
1074 + fi
1075 +
1076 + dobin ${NV_OBJ}/nvidia-bug-report.sh
1077 +
1078 + if has_multilib_profile && use multilib; then
1079 + local OABI=${ABI}
1080 + for ABI in $(get_install_abis); do
1081 + src_install-libs
1082 + done
1083 + ABI=${OABI}
1084 + unset OABI
1085 + else
1086 + src_install-libs
1087 + fi
1088 +
1089 + is_final_abi || die "failed to iterate through all ABIs"
1090 +
1091 + readme.gentoo_create_doc
1092 +}
1093 +
1094 +src_install-libs() {
1095 + local inslibdir=$(get_libdir)
1096 + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib"
1097 + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
1098 + local nv_libdir="${NV_OBJ}"
1099 +
1100 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then
1101 + nv_libdir="${NV_OBJ}"/32
1102 + fi
1103 +
1104 + if use X; then
1105 + NV_GLX_LIBRARIES=(
1106 + "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}"
1107 + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1108 + "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}"
1109 + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}"
1110 + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1111 + "libGLESv2.so.2.1.0 ${GL_ROOT}"
1112 + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1113 + "libGLX.so.0 ${GL_ROOT}"
1114 + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1115 + "libGLdispatch.so.0 ${GL_ROOT}"
1116 + "libOpenCL.so.1.0.0 ${CL_ROOT}"
1117 + "libOpenGL.so.0 ${GL_ROOT}"
1118 + "libcuda.so.${NV_SOVER}"
1119 + "libnvcuvid.so.${NV_SOVER}"
1120 + "libnvidia-compiler.so.${NV_SOVER}"
1121 + "libnvidia-eglcore.so.${NV_SOVER}"
1122 + "libnvidia-encode.so.${NV_SOVER}"
1123 + "libnvidia-fatbinaryloader.so.${NV_SOVER}"
1124 + "libnvidia-fbc.so.${NV_SOVER}"
1125 + "libnvidia-glcore.so.${NV_SOVER}"
1126 + "libnvidia-glsi.so.${NV_SOVER}"
1127 + "libnvidia-glvkspirv.so.${NV_SOVER}"
1128 + "libnvidia-ifr.so.${NV_SOVER}"
1129 + "libnvidia-opencl.so.${NV_SOVER}"
1130 + "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
1131 + "libvdpau_nvidia.so.${NV_SOVER}"
1132 + )
1133 +
1134 + if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]];
1135 + then
1136 + NV_GLX_LIBRARIES+=(
1137 + "libnvidia-egl-wayland.so.1.1.0"
1138 + )
1139 + fi
1140 +
1141 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
1142 + then
1143 + NV_GLX_LIBRARIES+=(
1144 + "libnvidia-wfb.so.${NV_SOVER}"
1145 + )
1146 + fi
1147 +
1148 + if use kernel_FreeBSD; then
1149 + NV_GLX_LIBRARIES+=(
1150 + "libnvidia-tls.so.${NV_SOVER}"
1151 + )
1152 + fi
1153 +
1154 + if use kernel_linux; then
1155 + NV_GLX_LIBRARIES+=(
1156 + "libnvidia-ml.so.${NV_SOVER}"
1157 + "tls/libnvidia-tls.so.${NV_SOVER}"
1158 + )
1159 + fi
1160 +
1161 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
1162 + then
1163 + NV_GLX_LIBRARIES+=(
1164 + "libnvidia-cbl.so.${NV_SOVER}"
1165 + "libnvidia-rtcore.so.${NV_SOVER}"
1166 + "libnvoptix.so.${NV_SOVER}"
1167 + )
1168 + fi
1169 +
1170 + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
1171 + donvidia "${nv_libdir}"/${NV_LIB}
1172 + done
1173 + fi
1174 +}
1175 +
1176 +pkg_preinst() {
1177 + if use driver && use kernel_linux; then
1178 + linux-mod_pkg_preinst
1179 +
1180 + local videogroup="$(egetent group video | cut -d ':' -f 3)"
1181 + if [ -z "${videogroup}" ]; then
1182 + eerror "Failed to determine the video group gid"
1183 + die "Failed to determine the video group gid"
1184 + else
1185 + sed -i \
1186 + -e "s:PACKAGE:${PF}:g" \
1187 + -e "s:VIDEOGID:${videogroup}:" \
1188 + "${D}"/etc/modprobe.d/nvidia.conf || die
1189 + fi
1190 + fi
1191 +
1192 + # Clean the dynamic libGL stuff's home to ensure
1193 + # we dont have stale libs floating around
1194 + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
1195 + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
1196 + fi
1197 + # Make sure we nuke the old nvidia-glx's env.d file
1198 + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then
1199 + rm -f "${ROOT}"/etc/env.d/09nvidia
1200 + fi
1201 +}
1202 +
1203 +pkg_postinst() {
1204 + use driver && use kernel_linux && linux-mod_pkg_postinst
1205 +
1206 + # Switch to the nvidia implementation
1207 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia
1208 + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia
1209 +
1210 + readme.gentoo_print_elog
1211 +
1212 + if ! use X; then
1213 + elog "You have elected to not install the X.org driver. Along with"
1214 + elog "this the OpenGL libraries and VDPAU libraries were not"
1215 + elog "installed. Additionally, once the driver is loaded your card"
1216 + elog "and fan will run at max speed which may not be desirable."
1217 + elog "Use the 'nvidia-smi' init script to have your card and fan"
1218 + elog "speed scale appropriately."
1219 + elog
1220 + fi
1221 + if ! use tools; then
1222 + elog "USE=tools controls whether the nvidia-settings application"
1223 + elog "is installed. If you would like to use it, enable that"
1224 + elog "flag and re-emerge this ebuild. Optionally you can install"
1225 + elog "media-video/nvidia-settings"
1226 + elog
1227 + fi
1228 +}
1229 +
1230 +pkg_prerm() {
1231 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
1232 +}
1233 +
1234 +pkg_postrm() {
1235 + use driver && use kernel_linux && linux-mod_pkg_postrm
1236 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
1237 +}
1238
1239 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-418.43.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-418.43.ebuild
1240 new file mode 100644
1241 index 00000000000..7725171010c
1242 --- /dev/null
1243 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-418.43.ebuild
1244 @@ -0,0 +1,578 @@
1245 +# Copyright 1999-2019 Gentoo Authors
1246 +# Distributed under the terms of the GNU General Public License v2
1247 +
1248 +EAPI=6
1249 +inherit eutils flag-o-matic linux-info linux-mod multilib-minimal nvidia-driver \
1250 + portability toolchain-funcs unpacker user udev
1251 +
1252 +DESCRIPTION="NVIDIA Accelerated Graphics Driver"
1253 +HOMEPAGE="http://www.nvidia.com/"
1254 +
1255 +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}"
1256 +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}"
1257 +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}"
1258 +
1259 +NV_URI="https://us.download.nvidia.com/XFree86/"
1260 +SRC_URI="
1261 + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz )
1262 + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )
1263 + tools? (
1264 + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2
1265 + )
1266 +"
1267 +
1268 +LICENSE="GPL-2 NVIDIA-r2"
1269 +SLOT="0/${PV%.*}"
1270 +KEYWORDS="-* ~amd64 ~amd64-fbsd"
1271 +RESTRICT="bindist mirror"
1272 +EMULTILIB_PKG="true"
1273 +
1274 +IUSE="acpi compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X"
1275 +REQUIRED_USE="
1276 + tools? ( X )
1277 + static-libs? ( tools )
1278 +"
1279 +
1280 +COMMON="
1281 + app-eselect/eselect-opencl
1282 + kernel_linux? ( >=sys-libs/glibc-2.6.1 )
1283 + tools? (
1284 + dev-libs/atk
1285 + dev-libs/glib:2
1286 + dev-libs/jansson
1287 + gtk3? (
1288 + x11-libs/gtk+:3
1289 + )
1290 + x11-libs/cairo
1291 + x11-libs/gdk-pixbuf[X]
1292 + x11-libs/gtk+:2
1293 + x11-libs/libX11
1294 + x11-libs/libXext
1295 + x11-libs/libXrandr
1296 + x11-libs/libXv
1297 + x11-libs/libXxf86vm
1298 + x11-libs/pango[X]
1299 + )
1300 + X? (
1301 + >=app-eselect/eselect-opengl-1.0.9
1302 + app-misc/pax-utils
1303 + )
1304 +"
1305 +DEPEND="
1306 + ${COMMON}
1307 + kernel_linux? ( virtual/linux-sources )
1308 + tools? ( sys-apps/dbus )
1309 +"
1310 +RDEPEND="
1311 + ${COMMON}
1312 + acpi? ( sys-power/acpid )
1313 + tools? ( !media-video/nvidia-settings )
1314 + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] )
1315 + X? (
1316 + <x11-base/xorg-server-1.20.99:=
1317 + >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
1318 + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
1319 + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
1320 + sys-libs/zlib[${MULTILIB_USEDEP}]
1321 + )
1322 +"
1323 +QA_PREBUILT="opt/* usr/lib*"
1324 +S=${WORKDIR}/
1325 +
1326 +nvidia_drivers_versions_check() {
1327 + if use amd64 && has_multilib_profile && \
1328 + [ "${DEFAULT_ABI}" != "amd64" ]; then
1329 + eerror "This ebuild doesn't currently support changing your default ABI"
1330 + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
1331 + fi
1332 +
1333 + if use kernel_linux && kernel_is ge 5 1; then
1334 + ewarn "Gentoo supports kernels which are supported by NVIDIA"
1335 + ewarn "which are limited to the following kernels:"
1336 + ewarn "<sys-kernel/gentoo-sources-5.1"
1337 + ewarn "<sys-kernel/vanilla-sources-5.1"
1338 + ewarn ""
1339 + ewarn "You are free to utilize epatch_user to provide whatever"
1340 + ewarn "support you feel is appropriate, but will not receive"
1341 + ewarn "support as a result of those changes."
1342 + ewarn ""
1343 + ewarn "Do not file a bug report about this."
1344 + ewarn ""
1345 + fi
1346 +
1347 + # Since Nvidia ships many different series of drivers, we need to give the user
1348 + # some kind of guidance as to what version they should install. This tries
1349 + # to point the user in the right direction but can't be perfect. check
1350 + # nvidia-driver.eclass
1351 + nvidia-driver-check-warning
1352 +
1353 + # Kernel features/options to check for
1354 + CONFIG_CHECK="!DEBUG_MUTEXES !I2C_NVIDIA_GPU ~!LOCKDEP ~MTRR ~SYSVIPC ~ZONE_DMA"
1355 +
1356 + # Now do the above checks
1357 + use kernel_linux && check_extra_config
1358 +}
1359 +
1360 +pkg_pretend() {
1361 + nvidia_drivers_versions_check
1362 +}
1363 +
1364 +pkg_setup() {
1365 + nvidia_drivers_versions_check
1366 +
1367 + # try to turn off distcc and ccache for people that have a problem with it
1368 + export DISTCC_DISABLE=1
1369 + export CCACHE_DISABLE=1
1370 +
1371 + if use driver && use kernel_linux; then
1372 + MODULE_NAMES="nvidia(video:${S}/kernel)"
1373 + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
1374 + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)"
1375 +
1376 + # This needs to run after MODULE_NAMES (so that the eclass checks
1377 + # whether the kernel supports loadable modules) but before BUILD_PARAMS
1378 + # is set (so that KV_DIR is populated).
1379 + linux-mod_pkg_setup
1380 +
1381 + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
1382 + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
1383 +
1384 + # linux-mod_src_compile calls set_arch_to_kernel, which
1385 + # sets the ARCH to x86 but NVIDIA's wrapping Makefile
1386 + # expects x86_64 or i386 and then converts it to x86
1387 + # later on in the build process
1388 + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
1389 + fi
1390 +
1391 + if use kernel_linux && kernel_is lt 2 6 9; then
1392 + eerror "You must build this against 2.6.9 or higher kernels."
1393 + fi
1394 +
1395 + # set variables to where files are in the package structure
1396 + if use kernel_FreeBSD; then
1397 + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}"
1398 + NV_DOC="${S}/doc"
1399 + NV_OBJ="${S}/obj"
1400 + NV_SRC="${S}/src"
1401 + NV_MAN="${S}/x11/man"
1402 + NV_X11="${S}/obj"
1403 + NV_SOVER=1
1404 + elif use kernel_linux; then
1405 + NV_DOC="${S}"
1406 + NV_OBJ="${S}"
1407 + NV_SRC="${S}/kernel"
1408 + NV_MAN="${S}"
1409 + NV_X11="${S}"
1410 + NV_SOVER=${PV}
1411 + else
1412 + die "Could not determine proper NVIDIA package"
1413 + fi
1414 +}
1415 +
1416 +src_prepare() {
1417 + local man_file
1418 + for man_file in "${NV_MAN}"/*1.gz; do
1419 + gunzip $man_file || die
1420 + done
1421 +
1422 + if use tools; then
1423 + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die
1424 + sed -i \
1425 + -e "s:@PV@:${PV}:g" \
1426 + "${WORKDIR}"/nvidia-settings-linker.patch || die
1427 + eapply "${WORKDIR}"/nvidia-settings-linker.patch
1428 + fi
1429 +
1430 + default
1431 +
1432 + if ! [ -f nvidia_icd.json ]; then
1433 + cp nvidia_icd.json.template nvidia_icd.json || die
1434 + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die
1435 + fi
1436 +}
1437 +
1438 +src_compile() {
1439 + # This is already the default on Linux, as there's no toplevel Makefile, but
1440 + # on FreeBSD there's one and triggers the kernel module build, as we install
1441 + # it by itself, pass this.
1442 +
1443 + cd "${NV_SRC}"
1444 + if use kernel_FreeBSD; then
1445 + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
1446 + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
1447 + elif use driver && use kernel_linux; then
1448 + BUILD_TARGETS=module linux-mod_src_compile \
1449 + KERNELRELEASE="${KV_FULL}" \
1450 + src="${KERNEL_DIR}"
1451 + fi
1452 +
1453 + if use tools; then
1454 + emake -C "${S}"/nvidia-settings-${PV}/src \
1455 + AR="$(tc-getAR)" \
1456 + CC="$(tc-getCC)" \
1457 + DO_STRIP= \
1458 + LD="$(tc-getCC)" \
1459 + LIBDIR="$(get_libdir)" \
1460 + NVLD="$(tc-getLD)" \
1461 + NV_VERBOSE=1 \
1462 + RANLIB="$(tc-getRANLIB)" \
1463 + build-xnvctrl
1464 +
1465 + emake -C "${S}"/nvidia-settings-${PV}/src \
1466 + CC="$(tc-getCC)" \
1467 + DO_STRIP= \
1468 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
1469 + LD="$(tc-getCC)" \
1470 + LIBDIR="$(get_libdir)" \
1471 + NVLD="$(tc-getLD)" \
1472 + NVML_ENABLED=0 \
1473 + NV_USE_BUNDLED_LIBJANSSON=0 \
1474 + NV_VERBOSE=1
1475 + fi
1476 +}
1477 +
1478 +# Install nvidia library:
1479 +# the first parameter is the library to install
1480 +# the second parameter is the provided soversion
1481 +# the third parameter is the target directory if it is not /usr/lib
1482 +donvidia() {
1483 + # Full path to library
1484 + nv_LIB="${1}"
1485 +
1486 + # SOVER to use
1487 + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
1488 +
1489 + # Where to install
1490 + nv_DEST="${2}"
1491 +
1492 + # Get just the library name
1493 + nv_LIBNAME=$(basename "${nv_LIB}")
1494 +
1495 + if [[ "${nv_DEST}" ]]; then
1496 + exeinto ${nv_DEST}
1497 + action="doexe"
1498 + else
1499 + nv_DEST="/usr/$(get_libdir)"
1500 + action="dolib.so"
1501 + fi
1502 +
1503 + # Install the library
1504 + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
1505 +
1506 + # If the library has a SONAME and SONAME does not match the library name,
1507 + # then we need to create a symlink
1508 + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
1509 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
1510 + || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
1511 + fi
1512 +
1513 + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
1514 + || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
1515 +}
1516 +
1517 +src_install() {
1518 + if use driver && use kernel_linux; then
1519 + linux-mod_src_install
1520 +
1521 + # Add the aliases
1522 + # This file is tweaked with the appropriate video group in
1523 + # pkg_preinst, see bug #491414
1524 + insinto /etc/modprobe.d
1525 + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
1526 + doins "${FILESDIR}"/nvidia-rmmod.conf
1527 +
1528 + # Ensures that our device nodes are created when not using X
1529 + exeinto "$(get_udevdir)"
1530 + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh
1531 + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules
1532 + elif use kernel_FreeBSD; then
1533 + if use x86-fbsd; then
1534 + insinto /boot/modules
1535 + doins "${S}/src/nvidia.kld"
1536 + fi
1537 +
1538 + exeinto /boot/modules
1539 + doexe "${S}/src/nvidia.ko"
1540 + fi
1541 +
1542 + # NVIDIA kernel <-> userspace driver config lib
1543 + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
1544 +
1545 + # NVIDIA framebuffer capture library
1546 + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
1547 +
1548 + # NVIDIA video encode/decode <-> CUDA
1549 + if use kernel_linux; then
1550 + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
1551 + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
1552 + fi
1553 +
1554 + if use X; then
1555 + # Xorg DDX driver
1556 + insinto /usr/$(get_libdir)/xorg/modules/drivers
1557 + doins ${NV_X11}/nvidia_drv.so
1558 +
1559 + # Xorg GLX driver
1560 + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \
1561 + /usr/$(get_libdir)/xorg/modules/extensions
1562 +
1563 + # Xorg nvidia.conf
1564 + if has_version '>=x11-base/xorg-server-1.16'; then
1565 + insinto /usr/share/X11/xorg.conf.d
1566 + newins {,50-}nvidia-drm-outputclass.conf
1567 + fi
1568 +
1569 + insinto /usr/share/glvnd/egl_vendor.d
1570 + doins ${NV_X11}/10_nvidia.json
1571 + fi
1572 +
1573 + if use wayland; then
1574 + insinto /usr/share/egl/egl_external_platform.d
1575 + doins ${NV_X11}/10_nvidia_wayland.json
1576 + fi
1577 +
1578 + # OpenCL ICD for NVIDIA
1579 + if use kernel_linux; then
1580 + insinto /etc/OpenCL/vendors
1581 + doins ${NV_OBJ}/nvidia.icd
1582 + fi
1583 +
1584 + # Documentation
1585 + if use kernel_FreeBSD; then
1586 + dodoc "${NV_DOC}/README"
1587 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
1588 + use tools && doman "${NV_MAN}"/nvidia-settings.1
1589 + else
1590 + # Docs
1591 + newdoc "${NV_DOC}/README.txt" README
1592 + dodoc "${NV_DOC}/NVIDIA_Changelog"
1593 + doman "${NV_MAN}"/nvidia-smi.1
1594 + use X && doman "${NV_MAN}"/nvidia-xconfig.1
1595 + use tools && doman "${NV_MAN}"/nvidia-settings.1
1596 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1
1597 + fi
1598 +
1599 + docinto html
1600 + dodoc -r ${NV_DOC}/html/*
1601 +
1602 + # Helper Apps
1603 + exeinto /opt/bin/
1604 +
1605 + if use X; then
1606 + doexe ${NV_OBJ}/nvidia-xconfig
1607 +
1608 + insinto /etc/vulkan/icd.d
1609 + doins nvidia_icd.json
1610 + fi
1611 +
1612 + if use kernel_linux; then
1613 + doexe ${NV_OBJ}/nvidia-cuda-mps-control
1614 + doexe ${NV_OBJ}/nvidia-cuda-mps-server
1615 + doexe ${NV_OBJ}/nvidia-debugdump
1616 + doexe ${NV_OBJ}/nvidia-persistenced
1617 + doexe ${NV_OBJ}/nvidia-smi
1618 +
1619 + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092)
1620 + doexe ${NV_OBJ}/nvidia-modprobe
1621 + fowners root:video /opt/bin/nvidia-modprobe
1622 + fperms 4710 /opt/bin/nvidia-modprobe
1623 + dosym /{opt,usr}/bin/nvidia-modprobe
1624 +
1625 + doman nvidia-cuda-mps-control.1
1626 + doman nvidia-modprobe.1
1627 + doman nvidia-persistenced.1
1628 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
1629 + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
1630 + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
1631 + fi
1632 +
1633 + if use tools; then
1634 + emake -C "${S}"/nvidia-settings-${PV}/src/ \
1635 + DESTDIR="${D}" \
1636 + GTK3_AVAILABLE=$(usex gtk3 1 0) \
1637 + LIBDIR="${D}/usr/$(get_libdir)" \
1638 + NV_USE_BUNDLED_LIBJANSSON=0 \
1639 + NV_VERBOSE=1 \
1640 + PREFIX=/usr \
1641 + DO_STRIP= \
1642 + install
1643 +
1644 + if use static-libs; then
1645 + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a
1646 +
1647 + insinto /usr/include/NVCtrl
1648 + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h
1649 + fi
1650 +
1651 + insinto /usr/share/nvidia/
1652 + doins nvidia-application-profiles-${PV}-key-documentation
1653 +
1654 + insinto /etc/nvidia
1655 + newins \
1656 + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc
1657 +
1658 + # There is no icon in the FreeBSD tarball.
1659 + use kernel_FreeBSD || \
1660 + doicon ${NV_OBJ}/nvidia-settings.png
1661 +
1662 + domenu "${FILESDIR}"/nvidia-settings.desktop
1663 +
1664 + exeinto /etc/X11/xinit/xinitrc.d
1665 + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
1666 + fi
1667 +
1668 + dobin ${NV_OBJ}/nvidia-bug-report.sh
1669 +
1670 + if has_multilib_profile && use multilib; then
1671 + local OABI=${ABI}
1672 + for ABI in $(get_install_abis); do
1673 + src_install-libs
1674 + done
1675 + ABI=${OABI}
1676 + unset OABI
1677 + else
1678 + src_install-libs
1679 + fi
1680 +
1681 + is_final_abi || die "failed to iterate through all ABIs"
1682 +
1683 + readme.gentoo_create_doc
1684 +}
1685 +
1686 +src_install-libs() {
1687 + local inslibdir=$(get_libdir)
1688 + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib"
1689 + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
1690 + local nv_libdir="${NV_OBJ}"
1691 +
1692 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then
1693 + nv_libdir="${NV_OBJ}"/32
1694 + fi
1695 +
1696 + if use X; then
1697 + NV_GLX_LIBRARIES=(
1698 + "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}"
1699 + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1700 + "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}"
1701 + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}"
1702 + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1703 + "libGLESv2.so.2.1.0 ${GL_ROOT}"
1704 + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1705 + "libGLX.so.0 ${GL_ROOT}"
1706 + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
1707 + "libGLdispatch.so.0 ${GL_ROOT}"
1708 + "libOpenCL.so.1.0.0 ${CL_ROOT}"
1709 + "libOpenGL.so.0 ${GL_ROOT}"
1710 + "libcuda.so.${NV_SOVER}"
1711 + "libnvcuvid.so.${NV_SOVER}"
1712 + "libnvidia-compiler.so.${NV_SOVER}"
1713 + "libnvidia-eglcore.so.${NV_SOVER}"
1714 + "libnvidia-encode.so.${NV_SOVER}"
1715 + "libnvidia-fatbinaryloader.so.${NV_SOVER}"
1716 + "libnvidia-fbc.so.${NV_SOVER}"
1717 + "libnvidia-glcore.so.${NV_SOVER}"
1718 + "libnvidia-glsi.so.${NV_SOVER}"
1719 + "libnvidia-glvkspirv.so.${NV_SOVER}"
1720 + "libnvidia-ifr.so.${NV_SOVER}"
1721 + "libnvidia-opencl.so.${NV_SOVER}"
1722 + "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
1723 + "libvdpau_nvidia.so.${NV_SOVER}"
1724 + )
1725 +
1726 + if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]];
1727 + then
1728 + NV_GLX_LIBRARIES+=(
1729 + "libnvidia-egl-wayland.so.1.1.2"
1730 + )
1731 + fi
1732 +
1733 + if use kernel_FreeBSD; then
1734 + NV_GLX_LIBRARIES+=(
1735 + "libnvidia-tls.so.${NV_SOVER}"
1736 + )
1737 + fi
1738 +
1739 + if use kernel_linux; then
1740 + NV_GLX_LIBRARIES+=(
1741 + "libnvidia-ml.so.${NV_SOVER}"
1742 + "libnvidia-tls.so.${NV_SOVER}"
1743 + )
1744 + fi
1745 +
1746 + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
1747 + then
1748 + NV_GLX_LIBRARIES+=(
1749 + "libnvidia-cbl.so.${NV_SOVER}"
1750 + "libnvidia-rtcore.so.${NV_SOVER}"
1751 + "libnvoptix.so.${NV_SOVER}"
1752 + )
1753 + fi
1754 +
1755 + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
1756 + donvidia "${nv_libdir}"/${NV_LIB}
1757 + done
1758 + fi
1759 +}
1760 +
1761 +pkg_preinst() {
1762 + if use driver && use kernel_linux; then
1763 + linux-mod_pkg_preinst
1764 +
1765 + local videogroup="$(egetent group video | cut -d ':' -f 3)"
1766 + if [ -z "${videogroup}" ]; then
1767 + eerror "Failed to determine the video group gid"
1768 + die "Failed to determine the video group gid"
1769 + else
1770 + sed -i \
1771 + -e "s:PACKAGE:${PF}:g" \
1772 + -e "s:VIDEOGID:${videogroup}:" \
1773 + "${D}"/etc/modprobe.d/nvidia.conf || die
1774 + fi
1775 + fi
1776 +
1777 + # Clean the dynamic libGL stuff's home to ensure
1778 + # we dont have stale libs floating around
1779 + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
1780 + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
1781 + fi
1782 + # Make sure we nuke the old nvidia-glx's env.d file
1783 + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then
1784 + rm -f "${ROOT}"/etc/env.d/09nvidia
1785 + fi
1786 +}
1787 +
1788 +pkg_postinst() {
1789 + use driver && use kernel_linux && linux-mod_pkg_postinst
1790 +
1791 + # Switch to the nvidia implementation
1792 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia
1793 + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia
1794 +
1795 + readme.gentoo_print_elog
1796 +
1797 + if ! use X; then
1798 + elog "You have elected to not install the X.org driver. Along with"
1799 + elog "this the OpenGL libraries and VDPAU libraries were not"
1800 + elog "installed. Additionally, once the driver is loaded your card"
1801 + elog "and fan will run at max speed which may not be desirable."
1802 + elog "Use the 'nvidia-smi' init script to have your card and fan"
1803 + elog "speed scale appropriately."
1804 + elog
1805 + fi
1806 + if ! use tools; then
1807 + elog "USE=tools controls whether the nvidia-settings application"
1808 + elog "is installed. If you would like to use it, enable that"
1809 + elog "flag and re-emerge this ebuild. Optionally you can install"
1810 + elog "media-video/nvidia-settings"
1811 + elog
1812 + fi
1813 +}
1814 +
1815 +pkg_prerm() {
1816 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
1817 +}
1818 +
1819 +pkg_postrm() {
1820 + use driver && use kernel_linux && linux-mod_pkg_postrm
1821 + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
1822 +}