mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
x11-drivers/nvidia-drivers: drop multiple vulnerable versions
Also includes the last of the 575.x branch which is dead and no longer getting security fixes, please either upgrade to 580.x or downgrade to (still supported) 570.x. Bug: https://bugs.gentoo.org/963978 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
This commit is contained in:
parent
cc6eada013
commit
c07a5625c2
@ -1,71 +1,39 @@
|
||||
DIST NVIDIA-Linux-aarch64-535.261.03.run 269926298 BLAKE2B 78b696ed9ef01fdc4bec8b955c7f7acb7475f743c7483b5ab799d63f5917e12e97ea522865c1b4e2fa03586977ccefdc4518339c705ff9e8165ac9bd4af32e30 SHA512 3bc4a141fc159e88a3cda19519d325ddfc03fdcd328a50b5a0c6c9f06089ff2a97edb03dbfd1d23ec0e60a4fc549a8f0143e0c4d6beb98771ad8c243ef699faf
|
||||
DIST NVIDIA-Linux-aarch64-535.274.02.run 269962412 BLAKE2B e4026c6ebf72ce7220a4dca688a349b27bdea518dd5eaeb3ecf153a246a8155775668cf3b2593b02abde747299cbae438e45af5c73c19627a93b6528051128e6 SHA512 a5d6187844c43bc56878d20b147ba36663db2c3b5f6ea31c2e84c364b88cac115417e1f2e073c9bf03ec698880921b6f98c1129b952d3156cf88c89156bdb046
|
||||
DIST NVIDIA-Linux-aarch64-570.190.run 290921873 BLAKE2B 08cbe8fef636a9457a3fe041f474f3cd2c6e38fbe1d184176b7eaf84a6e85a63c97a84b9a78003804f935b90bc8ddc293542efc7cfb706282862d81745c2b0e9 SHA512 f2fb3392cdf22bd709d057dc34e4b84f6136318e6ac7f347944f1e47139336512696cf6142d14f0d76531902f11d3636e2ce9c95c3a75ebfec396ea274f5aebb
|
||||
DIST NVIDIA-Linux-aarch64-570.195.03.run 293703412 BLAKE2B 7c843496a403fa3a2eed2b40c9734a6061ad3db3d2de768f70ed1020ad61388fd23a67517efdaa70ba37ad5e97906b8157fea664f46847a096ddd576343ec402 SHA512 4ed4c4863dce0ec53a9fa1a7e3cdc7ce3e915db4ec014b2c5030e8a6c961d4e58c99c42b6c6b17020d8c31acf95e14254bca446c2a56ce29b10067730910e2a0
|
||||
DIST NVIDIA-Linux-aarch64-575.64.05.run 304943447 BLAKE2B 277aed01ab2be1cbbfe7780c4cb9dcbfaebc69824ba4b5a620113829f713d5407829769c7fab224f183656408944d9d6c4dcf6400a333c1116a89d072eb79223 SHA512 0b9b9c6b3316723fba4549fcd346215e5315a7b4c80196f0cd9ada9ecd6a23e8fc1691ae8bda5b246a3c44519cc7f503116023ff5427718fbffb67fe49a12a75
|
||||
DIST NVIDIA-Linux-aarch64-580.82.09.run 316429333 BLAKE2B 8f7ab4d3924f474e381f136ef1d9e7eb8af48c0d98859995aef1e8c24b2eb4eb72a2dfb8541b1044c5bda1ad23e998739ba532103ac56f69a293dcb83be0c154 SHA512 9782947d177c652dd0f425534261ab7529361e4f1e57c41b91208bb096a1992908cdbc174184be6f8943a9d1d131a40e3ca2a03d85c50a9f3644061a8823e6d8
|
||||
DIST NVIDIA-Linux-aarch64-580.95.05.run 313379170 BLAKE2B 70431f394ce9d112afcf0742539289e399286ecefbdd86ad71c750acee21c3b965b435d77d54b290866a6c60c7601da5c8bbc2d6edce0b8e4dcd43d21ee2ec35 SHA512 e07b31824f7e6dd485df5c73e3a58f85962239ea20a92f18d82b9c55564d69309fe5bb279f39ed8ef152ccdbffc6d0fdf7bccfa3c794e4ecd9fac83bcfbb91a9
|
||||
DIST NVIDIA-Linux-x86-390.157.run 49417041 BLAKE2B 435b5e0e60468cc74b41cc5d9b5bb0105d29c11a2d408457835212a96519c9334ecf19278b36749d3ff7f498f5b0ae45a2efae2d428703dac21245c62f1efebe SHA512 dae9ac2c12f9ad90f7441e00e01a984147c577892421911d7f67f6a31e616ac1cb7d434bc9c7f58fbd9b8ae909521b5bece607a63c79588c0bb9d99c6bad5fb0
|
||||
DIST NVIDIA-Linux-x86_64-390.157.run 85835541 BLAKE2B 44b855cd11f3b2f231f9fb90492ae2e67a67ea3ea83c413e7c90956d38c9730a8bd0321281ae03c6afce633d102f5b499aed25622b9bfd31bdd2c98f0717e95b SHA512 4780503a4cff0180b1b1f37d20a6ba3438dd78b51fa7f69b98d35521835e5d61099129746929d51d63afa2d47b672b3e145e1e1897584dc3799e7f822c5b3a0a
|
||||
DIST NVIDIA-Linux-x86_64-470.256.02.run 272850014 BLAKE2B 0fdc867f92b82b2a60810c3b43751cad7ac2c39928c92c6c343c0c6044f4d7d923d93b8599db3f7c999c0ee7d16940e65d991a61cbb30e1d9e49c5639ac6bdc8 SHA512 a837946dd24d7945c1962a695f1f31965f3ceb6927f52cd08fd51b8db138b7a888bbeab69243f5c8468a7bd7ccd47f5dbdb48a1ca81264866c1ebb7d88628f88
|
||||
DIST NVIDIA-Linux-x86_64-535.261.03.run 341775057 BLAKE2B d72ed6d4d442c204721667302d300e8e8ec9b8288a0945ba090aa4e4666fb7fbd6bffe8a242c134e6ce8a7947954d7771ec142cf6b6cf1a32b773edf9119e71e SHA512 52ac6db0a057977652f56a279c6e5482fd602d1c637b22e7bb8ae5e5f5a9fbddb8492196371c2bdcacfbd9e7c1bf3954c22254e842f413cb6af1b3c79a6e7ec2
|
||||
DIST NVIDIA-Linux-x86_64-535.274.02.run 341804470 BLAKE2B 0d848295d8f0f8fe3b4ab6c0204bfc3ac26f75df253b6595137e99177e4ccd490e0c8d4330f6789137d906fdec317033e59b5f22213a38ef3c9daae2968f71b8 SHA512 cc89f84c4f8d76d8d1532e67630426b3988e778bc7474059231971333cd81d6a552d8f5ca329f9e3c540229bbc247b665d2276298e3c302975ab0f0562ddaafb
|
||||
DIST NVIDIA-Linux-x86_64-570.190.run 376111303 BLAKE2B ce3a3e78b2b7afe63873f083c8c93c7777e720340d5c93fea547b7d11522ac7e21e29404e559c31a9b1b5841f9ab8368c0483f4425ec1cef788ff9d1d72cabcd SHA512 cab71238bcfa6c0ab3f960b55cdb9a033c7bdb9e4bcc0383ff4569d3f27370a5b0c21e0d37727319b64657c61122f8022af1ecc478db3b49ebd5f6054d544773
|
||||
DIST NVIDIA-Linux-x86_64-570.195.03.run 376136266 BLAKE2B 1bf90b173a389aaf5542631f1f6dcefe955e98a650917246f14a3e3a5b96fb6e88a2232712c8f0db97131e43761008679e063a01fce34f11081555d72ebc1fb7 SHA512 77041ef60bd4c637a53750b6ef5c5121e3eb299c5b2859d65fd0a3683c4fb32b5fd34ae419cfdb982588992706264c839338d1ff02850cae2c88fd67f7cda27d
|
||||
DIST NVIDIA-Linux-x86_64-575.64.05.run 386961985 BLAKE2B d8b5e5cdff3d2166c4fdf8328ae22bc4419509144ad0427b17636696e7398240a3601ded850893412198fc0d4ba76e72a64ed31d6ceaf58149d83a741ad62a05 SHA512 1f5ea98478c913b044cccb25934e12d58561643b83074e5967d84126baac9a5ddc092a6ea017956957abae174520718d747415d09c6fb2da110de51629df98a2
|
||||
DIST NVIDIA-Linux-x86_64-580.82.09.run 396357884 BLAKE2B d3893763dfd38e243aa3fa17bf090758bd33ab6e9d5c94af9b83f95b982d3a349bf8b2c629deb798239999e59f5018158dfeff4a1916f4bc9fcaeee0679c1f8d SHA512 bc78007f9444324a808d1325ad55fcb57cda5cc4d8f6660e1b4a0cb9c411d8820194436d4295c29bd7f93880a15ec0cd9722c7b16eee9f17317b6dfa06869204
|
||||
DIST NVIDIA-Linux-x86_64-580.94.02.run 397992168 BLAKE2B 4a260ede08573656eabef19785700d96e7d1b2a6af00f6288f8bb29da996fe5a1aca65fed42baf03b55ad0f19fd62420f7e74cc9d11ee58d84bb7a0709d6833c SHA512 5787a23700481fd7ae6c042d05c3dbb069e421da1694318980dd949b5f31a3022562fcfbd2733a2da996cad9d00a24e2716c103c97c8d086b739709511a567a9
|
||||
DIST NVIDIA-Linux-x86_64-580.95.05.run 396658958 BLAKE2B 7e23e5243023de357329f8f57b65a386306fd898a78c68b01d67a9572ac0d64b2d87c0cf3265c23fc4c13192d92060196ee173c34cb485a693035478cb3fc82e SHA512 21e8076f593ce255c8e96dd456524f700e76b230130659ed73a279432dd9f2aa60735411c6fc906e9f60882e905cc1c5b91aaf80d5d5e64d317b1dd27f6e4c13
|
||||
DIST NVIDIA-kernel-module-source-535.261.03.tar.xz 12521372 BLAKE2B 214f52874a3cac43ad135e57577f8879b605d67d4cec1756ee2a5ee3986568ce621bae603637fdb9ff0be9295e262a1f14f9dee6d871737bce02ea163aff7505 SHA512 346b12fdcd1a7b5b8067e6cee6567f4ab2a89e8d246ebec4ad0eeb6dc91782c701b9b4d7ef4903c2492726fc8c242572a63a3cb8a06a9fb4a6039b65ce11b8ec
|
||||
DIST NVIDIA-kernel-module-source-535.274.02.tar.xz 12513068 BLAKE2B e9f9fbdc70ee634dd26d626b0d5252e01c748fa8fc5b50af02a18f0dc75e2a40ced2fbaf24c4389dd207936849f6d614f18ef06ed35111ed26f3f6fce9017592 SHA512 4a660e08c03840de0b8d5bee079ff203a864131ed3eb4805e80da6c071b6953a6acee6d81788c4ea076399db6270e34844d5ac3898914195f530d2e0ef1c96ab
|
||||
DIST NVIDIA-kernel-module-source-570.190.tar.xz 17928652 BLAKE2B 66bf70d7c68676f06e616def02d64fdb22d9aadeb0ab2992e228b3a41b828a97e473f7b402b05128c0dcbffc8a8ff6555c3fe093fefe41fe4ab2f29d732ba140 SHA512 462a193f5e9ee74d70dca5885996c4e451c9fc71506eb635d07ce3f2c548c0a577298818cacd8d341616f93d3371703da8b05ff4a18b6ddf4b89e35b83f3759a
|
||||
DIST NVIDIA-kernel-module-source-570.195.03.tar.xz 17937740 BLAKE2B b6610c713740b55da783f5954ed537b74c8e42152a24f4063288f04c00d863e06d524b5eded1c13fe561138f46248824fbab3c631829a476061026e70484f55d SHA512 09fe04c6746f2cf942f5d861153dfbf4aa83640e60dfb8911b90ba6d9ccdbe2214be010c67b674b04da731e2e8847c56fa17ba8fa9ad91a0d95d64b9b54d566d
|
||||
DIST NVIDIA-kernel-module-source-575.64.05.tar.xz 18198316 BLAKE2B 622781dfa93ab11993a4cabf14e2104ae7fffa0a16ca504a1257ab9eedd832128dfe73a0b9567a4401bbcf83416305794861cd18c393797ab8d43af0c26cbcc7 SHA512 4cbe2e2d78eab84a8a0153f68ab6b1fefa75225c145b3bd9db4fab9d0cb212a4202a89d0e6d0f2d0dedb5663389f7c9ed6cadb6a656eb32dbde0cf0f806652e2
|
||||
DIST NVIDIA-kernel-module-source-580.82.09.tar.xz 22193052 BLAKE2B 5780039714e1295f567d822ba99572ed47a100f7b7149452757a96f6f9e4737aa476a10a73703c83a748399aab689691a2fd274ca270e3041f4da7488caba826 SHA512 9dc72d54d9ee406cfa4a629cf495a4a7617edd17c0bef2933cde49ade7000067221300d35369a77832bbc8a0eff3abfa1cbd17e7787a7ce859cbb5166c377dc4
|
||||
DIST NVIDIA-kernel-module-source-580.95.05.tar.xz 22215620 BLAKE2B 179e2e1f820840273e54b55cd45233c6b5e26c1eb80e8e4fc7099a1704820cfe761c17839befcb9ddca2fe7e85b7ddf62e9a51b912e1f300b02ee8941d6467db SHA512 183e35afc583748f5d5fc60970be7e1e0b99de40bf0e9428d3acfd56f913724cc8aa242a276c327ad11e09290818883c8045ab3319dc0e919201687359f7cdc6
|
||||
DIST nvidia-installer-390.157.tar.bz2 150323 BLAKE2B 8058ca87a6dea956d564af9f7eab9b1fc82b1f2382bd5cb2f6d97cbe2e19292533522d5f8f2eacbeb16520372715fcb72f8f9b0998962af5d4e75522c8d74524 SHA512 93a7ece648602157496c8e27a88864ede341a100f5328a4c1a25faf8f0b94d252060e5e2f71d0c302fd0566c10773c30b76b3b5f431d8039b71c90a7969f7d7e
|
||||
DIST nvidia-installer-470.256.02.tar.bz2 146269 BLAKE2B 4402e725c8fd0157eb84d4ec140a33f97e873014577487ef1e32fb8921cabe79c60ff46532e5bfaabb2b6ac894f7c80086dbab19e61906e2e27346fb85f98829 SHA512 c962dc17d9696256d1ebedcaeb3010994f2ce3895aedc47987599ebfec132a9b9a249d2ece6502b15bd4a93f9b0106aa13487a7da5f64199c274ce11eba27cfd
|
||||
DIST nvidia-installer-535.261.03.tar.bz2 148694 BLAKE2B e113e3a548f5cb562b064f97f3f81dad952dbf8acc9158a79caf14d0868bbc673ed2b5038f51361243547792a044f8d7306c69f5ccaa36717fe6de0ae39a89d8 SHA512 4f899eec7ef869bf9b89732bc29a1198792a4b984d308908d3b17917d4824425640ac988bc04f0eb539ad4eace38e7462f204bdb9cc6a6ac583c2e8b6e06f8e5
|
||||
DIST nvidia-installer-535.274.02.tar.bz2 148772 BLAKE2B 7a70926628e137a0687acdc613a3afcd9fafab300e6c3ab467f9fef65c66911795a326cd08d49190870939576f358760b44949ba20df6060936f98e1385a2435 SHA512 c2a61bb9637d7fe9de89d7e3945fe84c6f672c8f16c4c12d513ba0b0679146321f4565be1266fcd5145ed7a0610cb59ae9f6fd7f7cf565f24e028272688899ee
|
||||
DIST nvidia-installer-570.190.tar.bz2 169534 BLAKE2B 3f187cea398c0dab45c3eb8d727d2ab00344b9adb4d4b8334b5314658f29ac2554be8b0be7407be34544c59fb4dde7a95e824cff39aff8c51275e9c4bb374af2 SHA512 be8218cf4d90d541fc9e0db4fadc33e836189ca919c9e8f6b631763c09b7b51d7e9df8d2f64f413df8cfbffadadd1cbbabfaffff654d91bdd6669e1d7c5b3ae6
|
||||
DIST nvidia-installer-570.195.03.tar.bz2 169609 BLAKE2B 5b40805276f6da3653e16cc75cf9a4c03ae94e9a5430447b66f960f6103897e7a1369ea2c4c395fabb2f6c24a643086657c78d3587a86ca0f64e04af9ac15765 SHA512 96e41320228ed59931832ec25bffed554a9cdb2cffcdd21714bae580e0d019a632f5c5060c10aa9986ed2ccab057dee55d846277c10e97f8070a2ad246052351
|
||||
DIST nvidia-installer-575.64.05.tar.bz2 169369 BLAKE2B ccff48e41296d6682c72f3d25eb7d7816dc83b4c6f279a4f5213db141353772d78d8ff3e23f2fb21ff8ce81a326443d12c3f05792fe1971b1fb54da764140065 SHA512 5033e40762b499e9b04a080942656a0c9b49e8f56c4a8236da38a587f8e13b3935f75e8c8dbdffbd0ef895c537a69f51ce6df7e6beca7be583aab09ed62faf09
|
||||
DIST nvidia-installer-580.82.09.tar.bz2 169462 BLAKE2B d18e3638a0abc91c0c9a407228a3ab11cfdfd986f6d5ac54e398ea52ab074d12e103aaa5abd851787f56e96dd823359cc0efc6f7215dd7150a8269703014e787 SHA512 c2f85162b1b4c3a3a92477e210a82fe3c7e4770e17bca1345b10d15014efa574aeecd2495a289daeedf9ba7749046681d53498b664d2f90e0512461b87a0b505
|
||||
DIST nvidia-installer-580.95.05.tar.bz2 169558 BLAKE2B 5e52aca8950b83b2a0366fc39dba5b89d22248ced974807f33dababfc06b41b5c40ff238552e61fec54625a6b2bceb8401ebb4fb69b47e33e565058d1796cb9e SHA512 1f20838f4e20d77c9596aa886f53bc4abedfc5e5634665d3bd571fb920013b2dfdf7dcd082b0cfebdf4d104e87203965cff6a04863f9b0bd43f9e25264217578
|
||||
DIST nvidia-modprobe-390.157.tar.bz2 35306 BLAKE2B 80d202b39c2f95ec0f909712c2e101483af50124092c32efb33bd98ff58ddfb97b737ff07f1ddc941f688c1b4c26a15f392566d522e18506771f10422fcd571c SHA512 109bbe24a3758b568ea65fe1e9d78f69fae6108ec0497b796c885a3912825fe04ffd7389a3e22987f1a10a2926bf6eaa384faabc59478aa3ee244dd3ac91c6d3
|
||||
DIST nvidia-modprobe-470.256.02.tar.bz2 38769 BLAKE2B 0db444b09b0b6d24c04877fae95249e781d82b3141f90eb05d869b64d2b6e65ad00bf44c4e427c64dbd4765fa99a8699f80a1d95b00c66137a54dc878d7ea298 SHA512 c1cbfa6c8e188e5a5eb5d390b9a903406cbff103d212fc30e611e4023be3fde896ad84e8bb45b030beb5d1bcd8155c9e55a8f9636c45ce1e2a5c03f672989a31
|
||||
DIST nvidia-modprobe-535.261.03.tar.bz2 40757 BLAKE2B 96ecb65511ff1ca033768f1f86e10e553bf686ff42c7f995a43c0e111ad5ddf97bd7b6fe439e5fb207f9b765e2200807703489815dba76599adaa24e4fd1bebc SHA512 755ec96dcdad34472f884383d104aa015ac5b964cded12046316f4dbd033ca723d225026866b59d0637294ebc185706204f889403db37552dd7d716467aea37e
|
||||
DIST nvidia-modprobe-535.274.02.tar.bz2 40749 BLAKE2B 85cab6efd924d6a10a1336334ef2b3dd7005da9315518b59a865feffd889aaebfe428d142dee4cdc03eb4f77850c314abc1ba1b60083d0339c2466ed3c30b220 SHA512 cad7dd263ac430457fcb2a1e8659f53d436e2c46330ded165698c5b8ff0a52795edc837f724178f5c929e25aebf6c6094d14eb08e9469a17bd1673195cbc849b
|
||||
DIST nvidia-modprobe-570.190.tar.bz2 41637 BLAKE2B 502eaea265dc75c777ac908c2b8d9c052e992eea54eb832417dae5d34e3903a433bb962e27714cfe559ef90a03523f4812b671e4c2d2048a6a376b1a70a1f944 SHA512 bc377bfa4813b3187ca4a2f2d896708c720c66732bc2a3bd8c093c6098af899e8b5f4b774d2c75029be915c32a91c6f4e344d59ae57188961dc289b7af81aec5
|
||||
DIST nvidia-modprobe-570.195.03.tar.bz2 41605 BLAKE2B e61623d3249911b0d0c8f6d66f6bb4436eab50dfb2cdb43208391f58e7621a86e4a14631261518548480a600c2d14bd0dd87365115408aac82f46f4154d4c801 SHA512 83ee9062371430c3cd25632cce5b46e135d8e85bc690a70c25e6fd872d9df13aedc890d9ccde79629bdc2753babd3aabd8b052e047d2d0c6a47675897b082624
|
||||
DIST nvidia-modprobe-575.64.05.tar.bz2 41721 BLAKE2B 9b8a6dda556389abe0c2bd81ed3edfa8142f773832b7d955385119b5fd525cbcfd3c01401f471ccf5dc7ce61100ba6a3c4504b8eaf86ea5b378d20a6046ff7ce SHA512 221a0469a974c7db3f3c489f2637b6eef68e614c5ccd3e94c8cbe1b8841a6e9a4f0e2f05642b6c9f7113efe3c211076ac31578e9587df26b76148a198d21cd49
|
||||
DIST nvidia-modprobe-580.82.09.tar.bz2 41686 BLAKE2B fe705974e57859e4409645370d45012035e9b093edd42092ac69d46cb28f7d96a26ea9f2a2947b2da92f44e2c8a85e69f82910183e64c11b2fb9dec325b0bd3f SHA512 8a4052cc1de3be2a646402b5507c9acbf5d95d44893ce2af086adef0293bd421fd7424c16169d6ea1c32b9c3daa6f73b34f6c0dbb47c289d1c376b88fb09d4b1
|
||||
DIST nvidia-modprobe-580.95.05.tar.bz2 41708 BLAKE2B 17988280c9c54fdc86dcf757903f18f83d1eb44b25a1386f8cc9bf098aec87b77c52bd3da9ea77511716c678e4354e8a40bee1561a953ed56eda350ab4a3e464 SHA512 67faabda2388515fcad71ffc965c7506156116f4e020837da33b0f17bd30aa05cd2d28a54711990684110133ad1a58a8db5473f58f2e5e587bc8edf5253a9351
|
||||
DIST nvidia-persistenced-390.157.tar.bz2 48654 BLAKE2B 2cf6c92da90acff55e8c180a06b0c6a29d48be9fd8ca3c541202fd14f0697220fba6b66452942aa7ae7cc8821f5c5eb9fa8f7a31d2248624e5f9141d83a176b8 SHA512 70f0707ed6f2b877e69ef90cf782f66cbc9d2071db53ca09ceb7b89427b0fe176708517340621fa251539b7d481b238adeeb60261674eed74de1f62db6dbb72e
|
||||
DIST nvidia-persistenced-470.256.02.tar.bz2 46567 BLAKE2B 8f837322a3b88412fd2f6acf38721b49a6cb444fbd842d652519e5596f2e545d8f06bbdf017f46a22301ce87455f96147fab2829ca5fbf26131ec3e4a772e282 SHA512 4fd19258649b7d39945fb5c8578bf11ab118617dd14f3d11cdf15cb3fe77daf7b4719e4ae57af59031b1b809d02f4e8e8afed0ec60b9d0aed4d2488bd3013cd9
|
||||
DIST nvidia-persistenced-535.261.03.tar.bz2 48574 BLAKE2B 71e6be9fd37da2532219a025293a286d87efa31c7fb1d2827b859688f0ed433ffda848a8964980f08d61e74b888b81e694ef8622231642e46e800a346890eb9b SHA512 56d079434e18397516ecf7c398f242f5a3a48781f0ed8fcea30bf844c7bbf5b2618c5817f2df7032670a99cee4f93fe0e7798ef6bff7545e9824fb34919e38d5
|
||||
DIST nvidia-persistenced-535.274.02.tar.bz2 48596 BLAKE2B 1f87652351ebdca97b1b145e421abdb2381fe9d824ebde12eb60983cf8480f60dc530337fd2a47d5120f3c77a6fbd895fca2497dacb31ed234a9e5cb357703c4 SHA512 2e8e3929039af7f468a4d43ea5a6452aba86fd715d229883212b9223603d0ecb7417380354e70c85366b173905708947f3bb1919e09382f69a62f502f7c6ae7a
|
||||
DIST nvidia-persistenced-570.190.tar.bz2 61789 BLAKE2B 6e99fff2b5dfee49ab124126981a024bf8ac63f9e79dc6e6d7a9b7a4904b224e5eac252d1cad27e632697df92af052c4a79806bae3b37817e1950ef48feb3414 SHA512 17c526b417c20c3fb576508ccc16e8acecac71d967d720ea6665a3e75bd435c57a6f97cb47a372aa304a0b95892a52c2525381775a75440c64f94f3eca035a21
|
||||
DIST nvidia-persistenced-570.195.03.tar.bz2 61806 BLAKE2B 6dc878a1febffaa1faad53e31abbc8aafebf759cc2d079e8d24b28872a8ce62a6d22e7ac973c1f8bafa7f54f4d2543d082ab57528f3cc578ba854aff02607af6 SHA512 37ea7c685ccb49d593b5651244cbb237830ed6e3af891742e5e4e851b68e60ec031b3d05de6feabcc3da6770373af667878452eaeb02596cdde5ee34199b66ed
|
||||
DIST nvidia-persistenced-575.64.05.tar.bz2 61961 BLAKE2B fa40aea873a30e7c500c2abe85a0ed7e278e4e1cceb2be9fe370752b3e44bccfd94e15e42df2f10237bc02015545b5b31ecdfbfd84b4f0400d56484a69ed96b8 SHA512 77a6fe5665bee6225433e383fe3016a667241e0772223d978ad42df40c8bc77207185c47961859ca9d334bebc7422d1a825ddf58e77d4caa630fcee1ecc5fa54
|
||||
DIST nvidia-persistenced-580.82.09.tar.bz2 62150 BLAKE2B fdd8dbc72ca8ea5e962e9de13e06e4c9934045d3164e32a3fda412ee9b665f1cf387653b8d701f8fed4747f36a8d80e8688ecef5648afd3dfcbc358056b2739c SHA512 c90d1f1787a4279e3967e9154754800340d5d46f588cfd71e28435ce131b8e4db787e07f77a895d8be81b82443e7077535f75a2ef5002e52dc8d2dbfbf41c9df
|
||||
DIST nvidia-persistenced-580.95.05.tar.bz2 62343 BLAKE2B ad5a8b185accac6e8488f7b6d138e71db783590ca3b9890a1034771977b2f598c4f920bc48e65dc254b925e71d7f59e935cf1e43c90982e81b48266ac5da4171 SHA512 624c052fd7e7aab74e86c07ab281448415f9900cade11c255f7b6907e7de26180513e83d7374b4a823ab431a0ce2c5a74ae51f8de3889bddeb959ec73c373605
|
||||
DIST nvidia-settings-390.157.tar.bz2 1108938 BLAKE2B d9ec1ab5d7f157d74627272adf752a671dd17e2ede02069437b6180b927fe315b15cc6416d584ab2f038b76fe01e5b64514a834f24d88ac16676e55205fdecdd SHA512 b16699009bf56a1ff3b623a528c58061c4f5a2c5c4a373756a07bcd667743a1df7c733a572d2d0baa835a904ac2fda8a5c85890dcc00c3a0f223e0467aea902d
|
||||
DIST nvidia-settings-470.256.02.tar.bz2 1062273 BLAKE2B 8e66201e7861469b12932595ef8f9fd29d4cfd570c2576ae7fbb7383f61c55ac71fe721cc431e79d6d69f86d998b5b4c3cafe531b573f439e6b499b0fc047a19 SHA512 626e66118ae2e62eacfdf44e37529c409b945a6f33637b9690d74abd87a2afb581aaca5f90328d280da99ceb659959d0e5dc5c22ef8013b2205b2b1c72e08007
|
||||
DIST nvidia-settings-535.261.03.tar.bz2 1094587 BLAKE2B 3be599e733be97e0a23182d9bfc2862a2ff1d386a8339a34f369ac3e7a29b951ef7c900424502b31d8a50b8a5571c440ba6fd1314874a5ca594657742ef0aca1 SHA512 418f078caed68e9d1feef10a3a772fb9a265fac5a74822e2637c0b8bdbdc43629a8ced83549ee1c237b327490783d7da59e749f3c284a17edea2bbab62462f68
|
||||
DIST nvidia-settings-535.274.02.tar.bz2 1094628 BLAKE2B 065eab7e3a6d2a38e437b133eeebddd647467ecfb110f1f356a37df2309e738372902bd8ad7cccb0643da0ef0a310536bc336e8583bf2a9058d580f4795a4b92 SHA512 bcaff79ebf66197a4228c6cda17995f6f0d1a6e8f1f156b907f5e7d7f06bdbf318b4fe084591e3f767ba4efc3a0986d2506fb4775ee09613d2c8f438762db1dd
|
||||
DIST nvidia-settings-570.190.tar.bz2 1124446 BLAKE2B 788f6716df879c949cde999180de2fc4066611b001295679e97bc02b1f706d8d7e8f2fb1834798042ed8e516aad2c54d582dc026a968886ae8c6c37e883102c8 SHA512 02d31ceed435cb9721d372cee265dc5360e22f86ba3e12c29b19d0bb5ffff272a37a1ce128ee43ec1b0a3b894664c0593043565b70009220b83551191a97bc20
|
||||
DIST nvidia-settings-570.195.03.tar.bz2 1124511 BLAKE2B 64f404f9659aeb97cf4c498e7857384ce6de5df7f6a0b21d2507e896524c1d9e0a570a5afefc67cd7ecb011b74f513891ef45592398a4b7ca9e971efabb84653 SHA512 68274d9b2622310b729e73bbd96777e5c7f36501d397b9156039b24cef4933f91757414353f70216b4264c858a24ec34ab996db23ad2dc4cfe1bd70bd77052f9
|
||||
DIST nvidia-settings-575.64.05.tar.bz2 1127714 BLAKE2B 935649b61361ff9b05f34ba9770704eb945134199edbb17d2581f74188f8b122009b6d4309b225c375fcb80f26fb6a82c9528bf22e5658c5856d1752bee309bb SHA512 3e3df016f1f6b34a802d872c67a9f1c0db6d38c8265343eb607c71c59bf5597c7378800641b1152af404ebc0515f8f79eff1ee0e81b87b84ff7a237c176526f6
|
||||
DIST nvidia-settings-580.82.09.tar.bz2 1131127 BLAKE2B fbe5405c64d2cbeb8b739664ef2ec72ef601bde4a3d32eb033ce924090ce8e52d2c1347d7189cbc76c5e4a53a86a43c0cde6b427cfaf8b41c6aee3931772b11f SHA512 a04b381caf5963fa76090cf183eb587d10e9f56fef50268096a5808b752f1a9de995d02086945319596af9013fdb7c0b5edac7eeccbe7baf95d5da90f227414d
|
||||
DIST nvidia-settings-580.95.05.tar.bz2 1131496 BLAKE2B 5eb45787d743319593ca36c6d95fc9e93a020615935211c627dbebccecf92b8dd7d28c6d63a95a07c8cad1a70a65b0ddcc0040564ece0bf3383478ae59bd3aa2 SHA512 8c60d4df230e253d5fdeda972f0a8a9285ee419fe9be34aa3d25c06d4954bb9b6fc6db789f3a621813fb817f6de6fbdec6d79f70d519f1ddcb6b25b8378d6480
|
||||
DIST nvidia-xconfig-390.157.tar.bz2 107399 BLAKE2B 0cbb3b1ba508ddc3ba4a161c290b31bf7a67f67880bdbd01171a962c5fa97ca945b1ef17932403f8589309380743f1da632c728d8accb6d4e56dbd895e7486bb SHA512 50b390811c9bf091b14add41f886925b17496b41006b7d3981d2398caa65cf5db8a579c8cebed78278384bf3acc629befb07b54339c61abcc75852c0dcb8b8ca
|
||||
DIST nvidia-xconfig-470.256.02.tar.bz2 108698 BLAKE2B e468574e4bc57e7279d4120e2b08a201671b50d408be0c530eabe5da7d45daaf21cbf5c7fa31410d0d732fe8ea1551cbfb21d1ae193c1b3f5b5c50c764c9e236 SHA512 9dcec1e0c2b56b4d38a5f2c76086302f8bc0860cc15012cce29c3a5062f801a48b6a2bb78344361b07a2717b58502783441a2daf402d9973a17526175b1f15ca
|
||||
DIST nvidia-xconfig-535.261.03.tar.bz2 110637 BLAKE2B aafefde5e5079401951432072f27f6500bf3a4390e01b83e46b7230c75b05cd5806fffbde98f8bd8a39afe1a27bec0f52e13920fa1fd156d083b6ef81e482edb SHA512 4c0ee56495dedb08d6ea0e452cadf02ebcfffb86e8649c9b7904285d5dd8959879a1e00396d1560253c755c9490643458e737afcc0613c0c36dcd37411c76607
|
||||
DIST nvidia-xconfig-535.274.02.tar.bz2 111008 BLAKE2B 4311cf01a7224a0fdf2d8730b2a88931d53916cd627740e6e8e73dbbd29641dfc32721c9886094799953464a69b80aa1fae1d6cf4b203c512ad65d2ae7f5356a SHA512 6c2d5e068f1e6d1c37041b179203608144797893e31c99133e1189a31e219176b3e032222d935679f4c30a79cb960741cecdaca0b552feb75eb10366aa9d66fa
|
||||
DIST nvidia-xconfig-570.190.tar.bz2 111236 BLAKE2B c72587d43d6383bb21eb5c8a289dcdf6af1967163c425d3390b77daa8d3ff94b6ffbab799d57233d4f4fe64162cd132ed8aed26e66f91ead16411afde634e876 SHA512 7c2ccd49056a6ef4ef3649d37b3e5bdcd37b0b68d495e3230e32d1d6c756103858df5daf77c7f38da13497413b473dcd24e17e6ba471e35c2a30890a0057c7a2
|
||||
DIST nvidia-xconfig-570.195.03.tar.bz2 111245 BLAKE2B 2718b5d16804bfbbddf54e100404b16691d56596c365db401a0e6168114b423e826a1ab13e6fff7d3efbc0ea3922340c8b13951c36dac5e767b2c753aebdcf9e SHA512 f51e61d4647d0bc8892fec90863d602bce5edf8857d4fbf24fa2f2a1fce4f608d7b37928e021600cebd37a130f1f354d8a14f80356d8d60585756f544f5f6666
|
||||
DIST nvidia-xconfig-575.64.05.tar.bz2 111165 BLAKE2B 87b272e12b63e6d4a393b76e4ec4c47d1433caee1e73ab50c3da8b1b3cb4ece0d0adad3e6496df4a81c0efd8aff67f8afa5de192df24cbe4ae7f8a4b86d674ac SHA512 00dfe0cbf0fb1131391a38b2d1bd95e52ac90b77cf19b76cb6cd6d0a3ef83c5020ff5dd8e08f8d424a7b32338e7752675e1f700392df7efd2d9b96bbc8072541
|
||||
DIST nvidia-xconfig-580.82.09.tar.bz2 111494 BLAKE2B 7a2966d8d3a29cc07ff58caa9fd234f3dac857819d451e1bb246878c38043fddbdff61738df7ed74115417484f29c7220ee46510978cff2b2c6707dca6af0010 SHA512 983d1c87ecec6d74f136cd8f1561060199826361620bbf5af2c12a218cf9e4ca19b6d14fe4f9ae578332da51a1d5769f9c7412276bfe2be278aa3264ff0e57a7
|
||||
DIST nvidia-xconfig-580.95.05.tar.bz2 111488 BLAKE2B abaf3fa63c19129df539a1e0eb4466ff7b8ccf81527c69b6bcfb16df2abf0950541791ecca130ff59ec0028a5a92c1a0912bc1d35a48efbd331a58f224699db6 SHA512 4fa0d411e8c41ee5f24443ef9f88a261c006b5b487f6745d54eac27805a8a810ef5ffba1da3952a39978e1ccfe39114399722e392d282791a648c69a88b7777e
|
||||
DIST open-gpu-kernel-modules-580.94.02.tar.gz 23272464 BLAKE2B 85e0e950d83375e7fbbf01e168366e5e7ddef6bcf647fe598a1e6111be90cc62f90c9967e7529d4d6b8bdfbe83af41cf305ebfe6428d1495cffbc99be792c945 SHA512 c5b428b9abbf80fb16f03130f5885f8ab2a2fc3502a4b46d1e9362f859fe9b16dafe256d41e2b40683303a22f68191d6071bbac4b4c3822e86dee62e07d717b0
|
||||
|
||||
@ -1,575 +0,0 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
MODULES_OPTIONAL_IUSE=+modules
|
||||
inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1 multilib
|
||||
inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
|
||||
|
||||
MODULES_KERNEL_MAX=6.16
|
||||
NV_URI="https://download.nvidia.com/XFree86/"
|
||||
|
||||
DESCRIPTION="NVIDIA Accelerated Graphics Driver"
|
||||
HOMEPAGE="https://www.nvidia.com/"
|
||||
SRC_URI="
|
||||
amd64? ( ${NV_URI}Linux-x86_64/${PV}/NVIDIA-Linux-x86_64-${PV}.run )
|
||||
arm64? ( ${NV_URI}Linux-aarch64/${PV}/NVIDIA-Linux-aarch64-${PV}.run )
|
||||
$(printf "${NV_URI}%s/%s-${PV}.tar.bz2 " \
|
||||
nvidia-{installer,modprobe,persistenced,settings,xconfig}{,})
|
||||
${NV_URI}NVIDIA-kernel-module-source/NVIDIA-kernel-module-source-${PV}.tar.xz
|
||||
"
|
||||
# nvidia-installer is unused but here for GPL-2's "distribute sources"
|
||||
S=${WORKDIR}
|
||||
|
||||
LICENSE="NVIDIA-2023 Apache-2.0 BSD BSD-2 GPL-2 MIT ZLIB curl openssl"
|
||||
SLOT="0/${PV%%.*}"
|
||||
KEYWORDS="-* amd64 ~arm64"
|
||||
IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland"
|
||||
REQUIRED_USE="kernel-open? ( modules )"
|
||||
|
||||
COMMON_DEPEND="
|
||||
acct-group/video
|
||||
X? ( x11-libs/libpciaccess )
|
||||
persistenced? (
|
||||
acct-user/nvpd
|
||||
net-libs/libtirpc:=
|
||||
)
|
||||
tools? (
|
||||
>=app-accessibility/at-spi2-core-2.46:2
|
||||
dev-libs/glib:2
|
||||
dev-libs/jansson:=
|
||||
media-libs/harfbuzz:=
|
||||
x11-libs/cairo
|
||||
x11-libs/gdk-pixbuf:2
|
||||
x11-libs/gtk+:3[X]
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
x11-libs/libXxf86vm
|
||||
x11-libs/pango
|
||||
)
|
||||
"
|
||||
RDEPEND="
|
||||
${COMMON_DEPEND}
|
||||
dev-libs/openssl:0/3
|
||||
sys-libs/glibc
|
||||
X? (
|
||||
media-libs/libglvnd[X,abi_x86_32(-)?]
|
||||
x11-libs/libX11[abi_x86_32(-)?]
|
||||
x11-libs/libXext[abi_x86_32(-)?]
|
||||
)
|
||||
powerd? ( sys-apps/dbus[abi_x86_32(-)?] )
|
||||
wayland? (
|
||||
gui-libs/egl-gbm
|
||||
>=gui-libs/egl-wayland-1.1.10
|
||||
media-libs/libglvnd
|
||||
)
|
||||
"
|
||||
DEPEND="
|
||||
${COMMON_DEPEND}
|
||||
static-libs? (
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
)
|
||||
tools? (
|
||||
media-libs/libglvnd
|
||||
sys-apps/dbus
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libXrandr
|
||||
x11-libs/libXv
|
||||
x11-libs/libvdpau
|
||||
)
|
||||
"
|
||||
BDEPEND="
|
||||
sys-devel/m4
|
||||
virtual/pkgconfig
|
||||
"
|
||||
|
||||
# there is some non-prebuilt exceptions but rather not maintain a list
|
||||
QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/nvidia-kernel-module-source-515.86.01-raw-ldflags.patch
|
||||
"${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
|
||||
"${FILESDIR}"/nvidia-settings-390.144-raw-ldflags.patch
|
||||
"${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use modules && [[ ${MERGE_TYPE} != binary ]] || return
|
||||
|
||||
local CONFIG_CHECK="
|
||||
PROC_FS
|
||||
~DRM_KMS_HELPER
|
||||
~SYSVIPC
|
||||
~!LOCKDEP
|
||||
~!PREEMPT_RT
|
||||
~!SLUB_DEBUG_ON
|
||||
!DEBUG_MUTEXES
|
||||
$(usev powerd '~CPU_FREQ')
|
||||
"
|
||||
|
||||
local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
|
||||
of drivers (no custom config), and for wayland / nvidia-drm.modeset=1.
|
||||
Cannot be directly selected in the kernel's menuconfig, and may need
|
||||
selection of a DRM device even if unused, e.g. CONFIG_DRM_AMDGPU=m or
|
||||
DRM_I915=y, DRM_NOUVEAU=m also acceptable if a module and not built-in."
|
||||
|
||||
local ERROR_X86_KERNEL_IBT="CONFIG_X86_KERNEL_IBT: is set and, if the CPU supports the feature,
|
||||
this *could* lead to modules load failure with ENDBR errors, or to
|
||||
broken CUDA/NVENC. Please ignore if not having issues, but otherwise
|
||||
try to unset or pass ibt=off to the kernel's command line." #911142
|
||||
use kernel-open || CONFIG_CHECK+=" ~!X86_KERNEL_IBT"
|
||||
|
||||
use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764
|
||||
|
||||
use kernel-open && CONFIG_CHECK+=" MMU_NOTIFIER" #843827
|
||||
local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open.
|
||||
Cannot be directly selected in the kernel's menuconfig, and may need
|
||||
selection of another option that requires it such as CONFIG_KVM."
|
||||
|
||||
local ERROR_PREEMPT_RT="CONFIG_PREEMPT_RT: is set but is unsupported by NVIDIA upstream and
|
||||
will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is
|
||||
set. Please do not report issues if run into e.g. kernel panics while
|
||||
ignoring this."
|
||||
|
||||
linux-mod-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# make patches usable across versions
|
||||
rm nvidia-modprobe && mv nvidia-modprobe{-${PV},} || die
|
||||
rm nvidia-persistenced && mv nvidia-persistenced{-${PV},} || die
|
||||
rm nvidia-settings && mv nvidia-settings{-${PV},} || die
|
||||
rm nvidia-xconfig && mv nvidia-xconfig{-${PV},} || die
|
||||
mv NVIDIA-kernel-module-source-${PV} kernel-module-source || die
|
||||
|
||||
default
|
||||
|
||||
# prevent detection of incomplete kernel DRM support (bug #603818)
|
||||
sed 's/defined(CONFIG_DRM/defined(CONFIG_DRM_KMS_HELPER/g' \
|
||||
-i kernel{,-module-source/kernel-open}/conftest.sh || die
|
||||
|
||||
sed 's/__USER__/nvpd/' \
|
||||
nvidia-persistenced/init/systemd/nvidia-persistenced.service.template \
|
||||
> "${T}"/nvidia-persistenced.service || die
|
||||
|
||||
# use alternative vulkan icd option if USE=-X (bug #909181)
|
||||
use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die
|
||||
|
||||
# enable nvidia-drm.modeset=1 by default with USE=wayland
|
||||
cp "${FILESDIR}"/nvidia-470.conf "${T}"/nvidia.conf || die
|
||||
use !wayland || sed -i '/^#.*modeset=1$/s/^#//' "${T}"/nvidia.conf || die
|
||||
|
||||
# makefile attempts to install wayland library even if not built
|
||||
use wayland || sed -i 's/ WAYLAND_LIB_install$//' \
|
||||
nvidia-settings/src/Makefile || die
|
||||
|
||||
# temporary option, nvidia will remove in the future
|
||||
use !kernel-open ||
|
||||
sed -i '/blacklist/a\
|
||||
\
|
||||
# Enable using kernel-open with workstation GPUs (experimental)\
|
||||
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1' "${T}"/nvidia.conf || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG
|
||||
local -x RAW_LDFLAGS="$(get_abi_LDFLAGS) $(raw-ldflags)" # raw-ldflags.patch
|
||||
|
||||
# extra flags for the libXNVCtrl.a static library
|
||||
local xnvflags=-fPIC #840389
|
||||
tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)"
|
||||
|
||||
NV_ARGS=(
|
||||
PREFIX="${EPREFIX}"/usr
|
||||
HOST_CC="$(tc-getBUILD_CC)"
|
||||
HOST_LD="$(tc-getBUILD_LD)"
|
||||
BUILD_GTK2LIB=
|
||||
NV_USE_BUNDLED_LIBJANSSON=0
|
||||
NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
|
||||
WAYLAND_AVAILABLE=$(usex wayland 1 0)
|
||||
XNVCTRL_CFLAGS="${xnvflags}"
|
||||
)
|
||||
|
||||
if use modules; then
|
||||
local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} o_ldflags=${LDFLAGS}
|
||||
|
||||
# conftest.sh is broken with c23 due to func() changing meaning,
|
||||
# and then fails later due to ealier misdetections
|
||||
# TODO: try without now and then + drop modargs' CC= (bug #944092)
|
||||
KERNEL_CC+=" -std=gnu17"
|
||||
|
||||
local modlistargs=video:kernel
|
||||
if use kernel-open; then
|
||||
modlistargs+=-module-source:kernel-module-source/kernel-open
|
||||
|
||||
# environment flags are normally unused for modules, but nvidia
|
||||
# uses it for building the "blob" and it is a bit fragile
|
||||
filter-flags -fno-plt #912949
|
||||
filter-lto
|
||||
CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags
|
||||
fi
|
||||
|
||||
local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
|
||||
local modargs=(
|
||||
CC="${KERNEL_CC}" # needed for above gnu17 workaround
|
||||
IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
|
||||
SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
|
||||
|
||||
# kernel takes "x86" and "x86_64" as meaning the same, but nvidia
|
||||
# makes the distinction (since 550.135) and is not happy with "x86"
|
||||
# TODO?: it should be ok/better for tc-arch-kernel to do x86_64
|
||||
$(usev amd64 ARCH=x86_64)
|
||||
)
|
||||
|
||||
# temporary workaround for bug #914468
|
||||
addpredict "${KV_OUT_DIR}"
|
||||
|
||||
linux-mod-r1_src_compile
|
||||
CFLAGS=${o_cflags} CXXFLAGS=${o_cxxflags} LDFLAGS=${o_ldflags}
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe
|
||||
use persistenced && emake "${NV_ARGS[@]}" -C nvidia-persistenced
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig
|
||||
|
||||
if use tools; then
|
||||
# avoid noisy *very* noisy logs with deprecation warnings
|
||||
CFLAGS="-Wno-deprecated-declarations ${CFLAGS}" \
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings
|
||||
elif use static-libs; then
|
||||
# pretend GTK+3 is available, not actually used (bug #880879)
|
||||
emake "${NV_ARGS[@]}" BUILD_GTK3LIB=1 \
|
||||
-C nvidia-settings/src out/libXNVCtrl.a
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=$(get_libdir) libdir32=$(ABI=x86 get_libdir)
|
||||
|
||||
NV_ARGS+=( DESTDIR="${D}" LIBDIR="${ED}"/usr/${libdir} )
|
||||
|
||||
local -A paths=(
|
||||
[APPLICATION_PROFILE]=/usr/share/nvidia
|
||||
[CUDA_ICD]=/etc/OpenCL/vendors
|
||||
[EGL_EXTERNAL_PLATFORM_JSON]=/usr/share/egl/egl_external_platform.d
|
||||
[FIRMWARE]=/lib/firmware/nvidia/${PV}
|
||||
[GBM_BACKEND_LIB_SYMLINK]=/usr/${libdir}/gbm
|
||||
[GLVND_EGL_ICD_JSON]=/usr/share/glvnd/egl_vendor.d
|
||||
[OPENGL_DATA]=/usr/share/nvidia
|
||||
[VULKAN_ICD_JSON]=/usr/share/vulkan
|
||||
[WINE_LIB]=/usr/${libdir}/nvidia/wine
|
||||
[XORG_OUTPUTCLASS_CONFIG]=/usr/share/X11/xorg.conf.d
|
||||
|
||||
[GLX_MODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules/extensions
|
||||
[GLX_MODULE_SYMLINK]=/usr/${libdir}/xorg/modules
|
||||
[XMODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules
|
||||
)
|
||||
|
||||
local skip_files=(
|
||||
$(usev !X "libGLX_nvidia libglxserver_nvidia")
|
||||
$(usev !wayland libnvidia-vulkan-producer)
|
||||
libGLX_indirect # non-glvnd unused fallback
|
||||
libnvidia-{gtk,wayland-client} nvidia-{settings,xconfig} # from source
|
||||
libnvidia-egl-gbm 15_nvidia_gbm # gui-libs/egl-gbm
|
||||
libnvidia-egl-wayland 10_nvidia_wayland # gui-libs/egl-wayland
|
||||
libnvidia-pkcs11.so # using the openssl3 version instead
|
||||
)
|
||||
local skip_modules=(
|
||||
$(usev !X "nvfbc vdpau xdriver")
|
||||
$(usev !modules gsp)
|
||||
$(usev !powerd powerd)
|
||||
installer nvpd # handled separately / built from source
|
||||
)
|
||||
local skip_types=(
|
||||
GLVND_LIB GLVND_SYMLINK EGL_CLIENT.\* GLX_CLIENT.\* # media-libs/libglvnd
|
||||
OPENCL_WRAPPER.\* # virtual/opencl
|
||||
DOCUMENTATION DOT_DESKTOP .\*_SRC DKMS_CONF SYSTEMD_UNIT # handled separately / unused
|
||||
)
|
||||
|
||||
local DOCS=(
|
||||
README.txt NVIDIA_Changelog supported-gpus/supported-gpus.json
|
||||
nvidia-settings/doc/{FRAMELOCK,NV-CONTROL-API}.txt
|
||||
)
|
||||
local HTML_DOCS=( html/. )
|
||||
einstalldocs
|
||||
|
||||
local DISABLE_AUTOFORMATTING=yes
|
||||
local DOC_CONTENTS="\
|
||||
Trusted users should be in the 'video' group to use NVIDIA devices.
|
||||
You can add yourself by using: gpasswd -a my-user video\
|
||||
$(usev modules "
|
||||
|
||||
Like all out-of-tree kernel modules, it is necessary to rebuild
|
||||
${PN} after upgrading or rebuilding the Linux kernel
|
||||
by for example running \`emerge @module-rebuild\`. Alternatively,
|
||||
if using a distribution kernel (sys-kernel/gentoo-kernel{,-bin}),
|
||||
this can be automated by setting USE=dist-kernel globally.
|
||||
|
||||
Loaded kernel modules also must not mismatch with the installed
|
||||
${PN} version (excluding -r revision), meaning should
|
||||
ensure \`eselect kernel list\` points to the kernel that will be
|
||||
booted before building and preferably reboot after upgrading
|
||||
${PN} (the ebuild will emit a warning if mismatching).
|
||||
|
||||
See '${EPREFIX}/etc/modprobe.d/nvidia.conf' for modules options.")\
|
||||
$(use amd64 && usev !abi_x86_32 "
|
||||
|
||||
Note that without USE=abi_x86_32 on ${PN}, 32bit applications
|
||||
(typically using wine / steam) will not be able to use GPU acceleration.")
|
||||
|
||||
For additional information or for troubleshooting issues, please see
|
||||
https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers and NVIDIA's own
|
||||
documentation that is installed alongside this README."
|
||||
readme.gentoo_create_doc
|
||||
|
||||
if use modules; then
|
||||
linux-mod-r1_src_install
|
||||
|
||||
insinto /etc/modprobe.d
|
||||
doins "${T}"/nvidia.conf
|
||||
|
||||
# used for gpu verification with binpkgs (not kept, see pkg_preinst)
|
||||
insinto /usr/share/nvidia
|
||||
doins supported-gpus/supported-gpus.json
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe install
|
||||
fowners :video /usr/bin/nvidia-modprobe #505092
|
||||
fperms 4710 /usr/bin/nvidia-modprobe
|
||||
|
||||
if use persistenced; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-persistenced install
|
||||
newconfd "${FILESDIR}"/nvidia-persistenced.confd nvidia-persistenced
|
||||
newinitd "${FILESDIR}"/nvidia-persistenced.initd nvidia-persistenced
|
||||
systemd_dounit "${T}"/nvidia-persistenced.service
|
||||
fi
|
||||
|
||||
if use tools; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings install
|
||||
|
||||
doicon nvidia-settings/doc/nvidia-settings.png
|
||||
domenu nvidia-settings/doc/nvidia-settings.desktop
|
||||
|
||||
exeinto /etc/X11/xinit/xinitrc.d
|
||||
newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
|
||||
fi
|
||||
|
||||
if use static-libs; then
|
||||
dolib.a nvidia-settings/src/out/libXNVCtrl.a
|
||||
strip-lto-bytecode
|
||||
|
||||
insinto /usr/include/NVCtrl
|
||||
doins nvidia-settings/src/libXNVCtrl/NVCtrl{Lib,}.h
|
||||
fi
|
||||
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig install
|
||||
|
||||
# mimic nvidia-installer by reading .manifest to install files
|
||||
# 0:file 1:perms 2:type 3+:subtype/arguments -:module
|
||||
local m into
|
||||
while IFS=' ' read -ra m; do
|
||||
! [[ ${#m[@]} -ge 2 && ${m[-1]} =~ MODULE: ]] ||
|
||||
[[ " ${m[0]##*/}" =~ ^(\ ${skip_files[*]/%/.*|\\} )$ ]] ||
|
||||
[[ " ${m[2]}" =~ ^(\ ${skip_types[*]/%/|\\} )$ ]] ||
|
||||
has ${m[-1]#MODULE:} "${skip_modules[@]}" && continue
|
||||
|
||||
case ${m[2]} in
|
||||
MANPAGE)
|
||||
gzip -dc ${m[0]} | newman - ${m[0]%.gz}
|
||||
pipestatus || die
|
||||
continue
|
||||
;;
|
||||
GBM_BACKEND_LIB_SYMLINK) m[4]=../${m[4]};; # missing ../
|
||||
VDPAU_SYMLINK) m[4]=vdpau/; m[5]=${m[5]#vdpau/};; # .so to vdpau/
|
||||
esac
|
||||
|
||||
if [[ -v 'paths[${m[2]}]' ]]; then
|
||||
into=${paths[${m[2]}]}
|
||||
elif [[ ${m[2]} == EXPLICIT_PATH ]]; then
|
||||
into=${m[3]}
|
||||
elif [[ ${m[2]} == *_BINARY ]]; then
|
||||
into=/usr/bin
|
||||
elif [[ ${m[3]} == COMPAT32 ]]; then
|
||||
use abi_x86_32 || continue
|
||||
into=/usr/${libdir32}
|
||||
elif [[ ${m[2]} == *_@(LIB|SYMLINK) ]]; then
|
||||
into=/usr/${libdir}
|
||||
else
|
||||
die "No known installation path for ${m[0]}"
|
||||
fi
|
||||
[[ ${m[3]: -2} == ?/ ]] && into+=/${m[3]%/}
|
||||
[[ ${m[4]: -2} == ?/ ]] && into+=/${m[4]%/}
|
||||
|
||||
if [[ ${m[2]} =~ _SYMLINK$ ]]; then
|
||||
[[ ${m[4]: -1} == / ]] && m[4]=${m[5]}
|
||||
dosym ${m[4]} ${into}/${m[0]}
|
||||
continue
|
||||
fi
|
||||
[[ ${m[0]} =~ ^libnvidia-ngx.so|^libnvidia-egl-gbm.so ]] &&
|
||||
dosym ${m[0]} ${into}/${m[0]%.so*}.so.1 # soname not in .manifest
|
||||
|
||||
printf -v m[1] %o $((m[1] | 0200)) # 444->644
|
||||
insopts -m${m[1]}
|
||||
insinto ${into}
|
||||
doins ${m[0]}
|
||||
done < .manifest || die
|
||||
insopts -m0644 # reset
|
||||
|
||||
# MODULE:installer non-skipped extras
|
||||
: "$(systemd_get_sleepdir)"
|
||||
exeinto "${_#"${EPREFIX}"}"
|
||||
doexe systemd/system-sleep/nvidia
|
||||
dobin systemd/nvidia-sleep.sh
|
||||
systemd_dounit systemd/system/nvidia-{hibernate,resume,suspend}.service
|
||||
|
||||
dobin nvidia-bug-report.sh
|
||||
|
||||
# MODULE:powerd extras
|
||||
if use powerd; then
|
||||
newinitd "${FILESDIR}"/nvidia-powerd.initd nvidia-powerd #923117
|
||||
systemd_dounit systemd/system/nvidia-powerd.service
|
||||
|
||||
insinto /usr/share/dbus-1/system.d
|
||||
doins nvidia-dbus.conf
|
||||
fi
|
||||
|
||||
# enabling is needed for sleep to work properly and little reason not to do
|
||||
# it unconditionally for a better user experience
|
||||
: "$(systemd_get_systemunitdir)"
|
||||
local unitdir=${_#"${EPREFIX}"}
|
||||
# not using relative symlinks to match systemd's own links
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-hibernate.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-resume.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-suspend.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-resume.service
|
||||
# also add a custom elogind hook to do the equivalent of the above
|
||||
exeinto /usr/lib/elogind/system-sleep
|
||||
newexe "${FILESDIR}"/system-sleep.elogind nvidia
|
||||
# <elogind-255.5 used a different path (bug #939216), keep a compat symlink
|
||||
# TODO: cleanup after 255.5 been stable for a few months
|
||||
dosym {/usr/lib,/"${libdir}"}/elogind/system-sleep/nvidia
|
||||
|
||||
# needed with >=systemd-256 or may fail to resume with some setups
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072722
|
||||
insinto "${unitdir}"/systemd-homed.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_HOME_LOCK_FREEZE_SESSION=false
|
||||
EOF
|
||||
insinto "${unitdir}"/systemd-suspend.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false
|
||||
EOF
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hibernate}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hybrid-sleep}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,suspend-then-hibernate}.service.d/10-nvidia.conf
|
||||
|
||||
# symlink non-versioned so nvidia-settings can use it even if misdetected
|
||||
dosym nvidia-application-profiles-${PV}-key-documentation \
|
||||
${paths[APPLICATION_PROFILE]}/nvidia-application-profiles-key-documentation
|
||||
|
||||
# don't attempt to strip firmware files (silences errors)
|
||||
dostrip -x ${paths[FIRMWARE]}
|
||||
|
||||
# sandbox issues with /dev/nvidiactl (and /dev/char wrt bug #904292)
|
||||
# are widespread and sometime affect revdeps of packages built with
|
||||
# USE=opencl/cuda making it hard to manage in ebuilds (minimal set,
|
||||
# ebuilds should handle manually if need others or addwrite)
|
||||
insinto /etc/sandbox.d
|
||||
newins - 20nvidia <<<'SANDBOX_PREDICT="/dev/nvidiactl:/dev/char"'
|
||||
|
||||
# dracut does not use /etc/modprobe.d if hostonly=no, but want to make sure
|
||||
# our settings are used for bug 932781#c8 and nouveau blacklist if either
|
||||
# modules are included (however, just best-effort without initramfs regen)
|
||||
if use modules; then
|
||||
echo "install_items+=\" ${EPREFIX}/etc/modprobe.d/nvidia.conf \"" >> \
|
||||
"${ED}"/usr/lib/dracut/dracut.conf.d/10-${PN}.conf || die
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
has_version "${CATEGORY}/${PN}[wayland]" && NV_HAD_WAYLAND=
|
||||
|
||||
use modules || return
|
||||
|
||||
# set video group id based on live system (bug #491414)
|
||||
local g=$(egetent group video | cut -d: -f3)
|
||||
[[ ${g} =~ ^[0-9]+$ ]] || die "Failed to determine video group id (got '${g}')"
|
||||
sed -i "s/@VIDEOGID@/${g}/" "${ED}"/etc/modprobe.d/nvidia.conf || die
|
||||
|
||||
# try to find driver mismatches using temporary supported-gpus.json
|
||||
for g in $(grep -l 0x10de /sys/bus/pci/devices/*/vendor 2>/dev/null); do
|
||||
g=$(grep -io "\"devid\":\"$(<${g%vendor}device)\"[^}]*branch\":\"[0-9]*" \
|
||||
"${ED}"/usr/share/nvidia/supported-gpus.json 2>/dev/null)
|
||||
if [[ ${g} ]]; then
|
||||
g=$((${g##*\"}+1))
|
||||
if ver_test -ge ${g}; then
|
||||
NV_LEGACY_MASK=">=${CATEGORY}/${PN}-${g}"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm "${ED}"/usr/share/nvidia/supported-gpus.json || die
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
linux-mod-r1_pkg_postinst
|
||||
|
||||
readme.gentoo_print_elog
|
||||
|
||||
if [[ -r /proc/driver/nvidia/version &&
|
||||
$(</proc/driver/nvidia/version) != *" ${PV} "* ]]; then
|
||||
ewarn "Currently loaded NVIDIA modules do not match the newly installed"
|
||||
ewarn "libraries and may prevent launching GPU-accelerated applications."
|
||||
if use modules; then
|
||||
ewarn "Easiest way to fix this is normally to reboot. If still run into issues"
|
||||
ewarn "(e.g. API mismatch messages in the \`dmesg\` output), please verify"
|
||||
ewarn "that the running kernel is ${KV_FULL} and that (if used) the"
|
||||
ewarn "initramfs does not include NVIDIA modules (or at least, not old ones)."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $(</proc/cmdline) == *slub_debug=[!-]* ]]; then
|
||||
ewarn "Detected that the current kernel command line is using 'slub_debug=',"
|
||||
ewarn "this may lead to system instability/freezes with this version of"
|
||||
ewarn "${PN}. Bug: https://bugs.gentoo.org/796329"
|
||||
fi
|
||||
|
||||
if [[ -v NV_LEGACY_MASK ]]; then
|
||||
ewarn
|
||||
ewarn "***WARNING***"
|
||||
ewarn
|
||||
ewarn "You are installing a version of ${PN} known not to work"
|
||||
ewarn "with a GPU of the current system. If unwanted, add the mask:"
|
||||
if [[ -d ${EROOT}/etc/portage/package.mask ]]; then
|
||||
ewarn " echo '${NV_LEGACY_MASK}' > ${EROOT}/etc/portage/package.mask/${PN}"
|
||||
else
|
||||
ewarn " echo '${NV_LEGACY_MASK}' >> ${EROOT}/etc/portage/package.mask"
|
||||
fi
|
||||
ewarn "...then downgrade to a legacy[1] branch if possible (not all old versions"
|
||||
ewarn "are available or fully functional, may need to consider nouveau[2])."
|
||||
ewarn "[1] https://www.nvidia.com/object/IO_32667.html"
|
||||
ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau"
|
||||
fi
|
||||
|
||||
if use kernel-open; then
|
||||
ewarn
|
||||
ewarn "Open source variant of ${PN} was selected, be warned it is experimental"
|
||||
ewarn "and only for modern GPUs (e.g. GTX 1650+). Try to disable if run into issues."
|
||||
ewarn "Please also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html"
|
||||
fi
|
||||
|
||||
if use wayland && use modules && [[ ! -v NV_HAD_WAYLAND ]]; then
|
||||
elog
|
||||
elog "With USE=wayland, this version of ${PN} sets nvidia-drm.modeset=1"
|
||||
elog "in '${EROOT}/etc/modprobe.d/nvidia.conf'. This feature is considered"
|
||||
elog "experimental but is required for wayland."
|
||||
elog
|
||||
elog "If you experience issues, either disable wayland or edit nvidia.conf."
|
||||
elog "Of note, may possibly cause issues with SLI and Reverse PRIME."
|
||||
fi
|
||||
}
|
||||
@ -1,583 +0,0 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
MODULES_OPTIONAL_IUSE=+modules
|
||||
inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1
|
||||
inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
|
||||
|
||||
MODULES_KERNEL_MAX=6.17
|
||||
NV_URI="https://download.nvidia.com/XFree86/"
|
||||
|
||||
DESCRIPTION="NVIDIA Accelerated Graphics Driver"
|
||||
HOMEPAGE="https://www.nvidia.com/"
|
||||
SRC_URI="
|
||||
amd64? ( ${NV_URI}Linux-x86_64/${PV}/NVIDIA-Linux-x86_64-${PV}.run )
|
||||
arm64? ( ${NV_URI}Linux-aarch64/${PV}/NVIDIA-Linux-aarch64-${PV}.run )
|
||||
$(printf "${NV_URI}%s/%s-${PV}.tar.bz2 " \
|
||||
nvidia-{installer,modprobe,persistenced,settings,xconfig}{,})
|
||||
${NV_URI}NVIDIA-kernel-module-source/NVIDIA-kernel-module-source-${PV}.tar.xz
|
||||
"
|
||||
# nvidia-installer is unused but here for GPL-2's "distribute sources"
|
||||
S=${WORKDIR}
|
||||
|
||||
LICENSE="NVIDIA-2025 Apache-2.0 BSD BSD-2 GPL-2 MIT ZLIB curl openssl"
|
||||
SLOT="0/${PV%%.*}"
|
||||
KEYWORDS="-* amd64 ~arm64"
|
||||
IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland"
|
||||
REQUIRED_USE="kernel-open? ( modules )"
|
||||
|
||||
COMMON_DEPEND="
|
||||
acct-group/video
|
||||
X? ( x11-libs/libpciaccess )
|
||||
persistenced? (
|
||||
acct-user/nvpd
|
||||
net-libs/libtirpc:=
|
||||
)
|
||||
tools? (
|
||||
>=app-accessibility/at-spi2-core-2.46:2
|
||||
dev-libs/glib:2
|
||||
dev-libs/jansson:=
|
||||
media-libs/harfbuzz:=
|
||||
x11-libs/cairo
|
||||
x11-libs/gdk-pixbuf:2
|
||||
x11-libs/gtk+:3[X]
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
x11-libs/libXxf86vm
|
||||
x11-libs/pango
|
||||
)
|
||||
"
|
||||
RDEPEND="
|
||||
${COMMON_DEPEND}
|
||||
dev-libs/openssl:0/3
|
||||
sys-libs/glibc
|
||||
X? (
|
||||
media-libs/libglvnd[X,abi_x86_32(-)?]
|
||||
x11-libs/libX11[abi_x86_32(-)?]
|
||||
x11-libs/libXext[abi_x86_32(-)?]
|
||||
)
|
||||
powerd? ( sys-apps/dbus[abi_x86_32(-)?] )
|
||||
wayland? (
|
||||
>=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?]
|
||||
>=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?]
|
||||
X? ( gui-libs/egl-x11[abi_x86_32(-)?] )
|
||||
)
|
||||
"
|
||||
DEPEND="
|
||||
${COMMON_DEPEND}
|
||||
static-libs? (
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
)
|
||||
tools? (
|
||||
dev-util/vulkan-headers
|
||||
media-libs/libglvnd
|
||||
sys-apps/dbus
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libXrandr
|
||||
x11-libs/libXv
|
||||
x11-libs/libvdpau
|
||||
)
|
||||
"
|
||||
BDEPEND="
|
||||
sys-devel/m4
|
||||
virtual/pkgconfig
|
||||
"
|
||||
|
||||
# there is some non-prebuilt exceptions but rather not maintain a list
|
||||
QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
|
||||
"${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use modules && [[ ${MERGE_TYPE} != binary ]] || return
|
||||
|
||||
# do early before linux-mod-r1 so can use chkconfig to setup CONFIG_CHECK
|
||||
get_version
|
||||
require_configured_kernel
|
||||
|
||||
local CONFIG_CHECK="
|
||||
PROC_FS
|
||||
~DRM_KMS_HELPER
|
||||
~DRM_FBDEV_EMULATION
|
||||
~SYSVIPC
|
||||
~!LOCKDEP
|
||||
~!PREEMPT_RT
|
||||
~!SLUB_DEBUG_ON
|
||||
!DEBUG_MUTEXES
|
||||
$(usev powerd '~CPU_FREQ')
|
||||
"
|
||||
|
||||
kernel_is -ge 6 11 && linux_chkconfig_present DRM_FBDEV_EMULATION &&
|
||||
CONFIG_CHECK+=" DRM_TTM_HELPER"
|
||||
|
||||
use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764
|
||||
|
||||
use kernel-open && CONFIG_CHECK+=" MMU_NOTIFIER" #843827
|
||||
|
||||
local drm_helper_msg="Cannot be directly selected in the kernel's config menus, and may need
|
||||
selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or
|
||||
DRM_AMDGPU=m (among others, consult the kernel config's help), can
|
||||
also use DRM_NOUVEAU=m as long as built as module *not* built-in."
|
||||
local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
|
||||
of drivers (no custom config), and for wayland / nvidia-drm.modeset=1.
|
||||
${drm_helper_msg}"
|
||||
local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is needed to compile when using
|
||||
kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set.
|
||||
${drm_helper_msg}"
|
||||
local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for
|
||||
nvidia-drm.fbdev=1 support, currently off-by-default and it could
|
||||
be ignored, but note that is due to change in the future."
|
||||
local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open.
|
||||
Cannot be directly selected in the kernel's menuconfig, and may need
|
||||
selection of another option that requires it such as CONFIG_KVM."
|
||||
local ERROR_PREEMPT_RT="CONFIG_PREEMPT_RT: is set but is unsupported by NVIDIA upstream and
|
||||
will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is
|
||||
set. Please do not report issues if run into e.g. kernel panics while
|
||||
ignoring this."
|
||||
|
||||
linux-mod-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# make patches usable across versions
|
||||
rm nvidia-modprobe && mv nvidia-modprobe{-${PV},} || die
|
||||
rm nvidia-persistenced && mv nvidia-persistenced{-${PV},} || die
|
||||
rm nvidia-settings && mv nvidia-settings{-${PV},} || die
|
||||
rm nvidia-xconfig && mv nvidia-xconfig{-${PV},} || die
|
||||
mv NVIDIA-kernel-module-source-${PV} kernel-module-source || die
|
||||
|
||||
default
|
||||
|
||||
# prevent detection of incomplete kernel DRM support (bug #603818)
|
||||
sed 's/defined(CONFIG_DRM/defined(CONFIG_DRM_KMS_HELPER/g' \
|
||||
-i kernel{,-module-source/kernel-open}/conftest.sh || die
|
||||
|
||||
sed 's/__USER__/nvpd/' \
|
||||
nvidia-persistenced/init/systemd/nvidia-persistenced.service.template \
|
||||
> "${T}"/nvidia-persistenced.service || die
|
||||
|
||||
# use alternative vulkan icd option if USE=-X (bug #909181)
|
||||
use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die
|
||||
|
||||
# enable nvidia-drm.modeset=1 by default with USE=wayland
|
||||
cp "${FILESDIR}"/nvidia-570.conf "${T}"/nvidia.conf || die
|
||||
use !wayland || sed -i '/^#.*modeset=1$/s/^#//' "${T}"/nvidia.conf || die
|
||||
|
||||
# makefile attempts to install wayland library even if not built
|
||||
use wayland || sed -i 's/ WAYLAND_LIB_install$//' \
|
||||
nvidia-settings/src/Makefile || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG
|
||||
|
||||
# extra flags for the libXNVCtrl.a static library
|
||||
local xnvflags=-fPIC #840389
|
||||
tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)"
|
||||
|
||||
NV_ARGS=(
|
||||
PREFIX="${EPREFIX}"/usr
|
||||
HOST_CC="$(tc-getBUILD_CC)"
|
||||
HOST_LD="$(tc-getBUILD_LD)"
|
||||
BUILD_GTK2LIB=
|
||||
NV_USE_BUNDLED_LIBJANSSON=0
|
||||
NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
|
||||
WAYLAND_AVAILABLE=$(usex wayland 1 0)
|
||||
XNVCTRL_CFLAGS="${xnvflags}"
|
||||
)
|
||||
|
||||
if use modules; then
|
||||
local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} o_ldflags=${LDFLAGS}
|
||||
|
||||
local modlistargs=video:kernel
|
||||
if use kernel-open; then
|
||||
modlistargs+=-module-source:kernel-module-source/kernel-open
|
||||
|
||||
# environment flags are normally unused for modules, but nvidia
|
||||
# uses it for building the "blob" and it is a bit fragile
|
||||
filter-flags -fno-plt #912949
|
||||
filter-lto
|
||||
CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags
|
||||
|
||||
LDFLAGS=$(raw-ldflags)
|
||||
fi
|
||||
|
||||
local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
|
||||
local modargs=(
|
||||
IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
|
||||
SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
|
||||
|
||||
# kernel takes "x86" and "x86_64" as meaning the same, but nvidia
|
||||
# makes the distinction (since 550.135) and is not happy with "x86"
|
||||
# TODO?: it should be ok/better for tc-arch-kernel to do x86_64
|
||||
$(usev amd64 ARCH=x86_64)
|
||||
)
|
||||
|
||||
# temporary workaround for bug #914468
|
||||
addpredict "${KV_OUT_DIR}"
|
||||
|
||||
linux-mod-r1_src_compile
|
||||
CFLAGS=${o_cflags} CXXFLAGS=${o_cxxflags} LDFLAGS=${o_ldflags}
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe
|
||||
use persistenced && emake "${NV_ARGS[@]}" -C nvidia-persistenced
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig
|
||||
|
||||
if use tools; then
|
||||
# avoid noisy *very* noisy logs with deprecation warnings
|
||||
CFLAGS="-Wno-deprecated-declarations ${CFLAGS}" \
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings
|
||||
elif use static-libs; then
|
||||
# pretend GTK+3 is available, not actually used (bug #880879)
|
||||
emake "${NV_ARGS[@]}" BUILD_GTK3LIB=1 \
|
||||
-C nvidia-settings/src out/libXNVCtrl.a
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=$(get_libdir) libdir32=$(ABI=x86 get_libdir)
|
||||
|
||||
NV_ARGS+=( DESTDIR="${D}" LIBDIR="${ED}"/usr/${libdir} )
|
||||
|
||||
local -A paths=(
|
||||
[APPLICATION_PROFILE]=/usr/share/nvidia
|
||||
[CUDA_ICD]=/etc/OpenCL/vendors
|
||||
[EGL_EXTERNAL_PLATFORM_JSON]=/usr/share/egl/egl_external_platform.d
|
||||
[FIRMWARE]=/lib/firmware/nvidia/${PV}
|
||||
[GBM_BACKEND_LIB_SYMLINK]=/usr/${libdir}/gbm
|
||||
[GLVND_EGL_ICD_JSON]=/usr/share/glvnd/egl_vendor.d
|
||||
[OPENGL_DATA]=/usr/share/nvidia
|
||||
[VULKANSC_ICD_JSON]=/usr/share/vulkansc
|
||||
[VULKAN_ICD_JSON]=/usr/share/vulkan
|
||||
[WINE_LIB]=/usr/${libdir}/nvidia/wine
|
||||
[XORG_OUTPUTCLASS_CONFIG]=/usr/share/X11/xorg.conf.d
|
||||
|
||||
[GLX_MODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules/extensions
|
||||
[GLX_MODULE_SYMLINK]=/usr/${libdir}/xorg/modules
|
||||
[XMODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules
|
||||
)
|
||||
|
||||
local skip_files=(
|
||||
$(usev !X "libGLX_nvidia libglxserver_nvidia")
|
||||
libGLX_indirect # non-glvnd unused fallback
|
||||
libnvidia-{gtk,wayland-client} nvidia-{settings,xconfig} # from source
|
||||
libnvidia-egl-gbm 15_nvidia_gbm # gui-libs/egl-gbm
|
||||
libnvidia-egl-wayland 10_nvidia_wayland # gui-libs/egl-wayland
|
||||
libnvidia-egl-xcb 20_nvidia_xcb.json # gui-libs/egl-x11
|
||||
libnvidia-egl-xlib 20_nvidia_xlib.json # gui-libs/egl-x11
|
||||
libnvidia-pkcs11.so # using the openssl3 version instead
|
||||
)
|
||||
local skip_modules=(
|
||||
$(usev !X "nvfbc vdpau xdriver")
|
||||
$(usev !modules gsp)
|
||||
$(usev !powerd powerd)
|
||||
installer nvpd # handled separately / built from source
|
||||
)
|
||||
local skip_types=(
|
||||
GLVND_LIB GLVND_SYMLINK EGL_CLIENT.\* GLX_CLIENT.\* # media-libs/libglvnd
|
||||
OPENCL_WRAPPER.\* # virtual/opencl
|
||||
DOCUMENTATION DOT_DESKTOP .\*_SRC DKMS_CONF SYSTEMD_UNIT # handled separately / unused
|
||||
)
|
||||
|
||||
local DOCS=(
|
||||
README.txt NVIDIA_Changelog supported-gpus/supported-gpus.json
|
||||
nvidia-settings/doc/{FRAMELOCK,NV-CONTROL-API}.txt
|
||||
)
|
||||
local HTML_DOCS=( html/. )
|
||||
einstalldocs
|
||||
|
||||
local DISABLE_AUTOFORMATTING=yes
|
||||
local DOC_CONTENTS="\
|
||||
Trusted users should be in the 'video' group to use NVIDIA devices.
|
||||
You can add yourself by using: gpasswd -a my-user video\
|
||||
$(usev modules "
|
||||
|
||||
Like all out-of-tree kernel modules, it is necessary to rebuild
|
||||
${PN} after upgrading or rebuilding the Linux kernel
|
||||
by for example running \`emerge @module-rebuild\`. Alternatively,
|
||||
if using a distribution kernel (sys-kernel/gentoo-kernel{,-bin}),
|
||||
this can be automated by setting USE=dist-kernel globally.
|
||||
|
||||
Loaded kernel modules also must not mismatch with the installed
|
||||
${PN} version (excluding -r revision), meaning should
|
||||
ensure \`eselect kernel list\` points to the kernel that will be
|
||||
booted before building and preferably reboot after upgrading
|
||||
${PN} (the ebuild will emit a warning if mismatching).
|
||||
|
||||
See '${EPREFIX}/etc/modprobe.d/nvidia.conf' for modules options.")\
|
||||
$(use amd64 && usev !abi_x86_32 "
|
||||
|
||||
Note that without USE=abi_x86_32 on ${PN}, 32bit applications
|
||||
(typically using wine / steam) will not be able to use GPU acceleration.")
|
||||
|
||||
Be warned that USE=kernel-open may need to be either enabled or
|
||||
disabled for certain cards to function:
|
||||
- GTX 50xx (blackwell) and higher require it to be enabled
|
||||
- GTX 1650 and higher (pre-blackwell) should work either way
|
||||
- Older cards require it to be disabled
|
||||
|
||||
For additional information or for troubleshooting issues, please see
|
||||
https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers and NVIDIA's own
|
||||
documentation that is installed alongside this README."
|
||||
readme.gentoo_create_doc
|
||||
|
||||
if use modules; then
|
||||
linux-mod-r1_src_install
|
||||
|
||||
insinto /etc/modprobe.d
|
||||
doins "${T}"/nvidia.conf
|
||||
|
||||
# used for gpu verification with binpkgs (not kept, see pkg_preinst)
|
||||
insinto /usr/share/nvidia
|
||||
doins supported-gpus/supported-gpus.json
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe install
|
||||
fowners :video /usr/bin/nvidia-modprobe #505092
|
||||
fperms 4710 /usr/bin/nvidia-modprobe
|
||||
|
||||
if use persistenced; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-persistenced install
|
||||
newconfd "${FILESDIR}"/nvidia-persistenced.confd nvidia-persistenced
|
||||
newinitd "${FILESDIR}"/nvidia-persistenced.initd nvidia-persistenced
|
||||
systemd_dounit "${T}"/nvidia-persistenced.service
|
||||
fi
|
||||
|
||||
if use tools; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings install
|
||||
|
||||
doicon nvidia-settings/doc/nvidia-settings.png
|
||||
domenu nvidia-settings/doc/nvidia-settings.desktop
|
||||
|
||||
exeinto /etc/X11/xinit/xinitrc.d
|
||||
newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
|
||||
fi
|
||||
|
||||
if use static-libs; then
|
||||
dolib.a nvidia-settings/src/out/libXNVCtrl.a
|
||||
strip-lto-bytecode
|
||||
|
||||
insinto /usr/include/NVCtrl
|
||||
doins nvidia-settings/src/libXNVCtrl/NVCtrl{Lib,}.h
|
||||
fi
|
||||
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig install
|
||||
|
||||
# mimic nvidia-installer by reading .manifest to install files
|
||||
# 0:file 1:perms 2:type 3+:subtype/arguments -:module
|
||||
local m into
|
||||
while IFS=' ' read -ra m; do
|
||||
! [[ ${#m[@]} -ge 2 && ${m[-1]} =~ MODULE: ]] ||
|
||||
[[ " ${m[0]##*/}" =~ ^(\ ${skip_files[*]/%/.*|\\} )$ ]] ||
|
||||
[[ " ${m[2]}" =~ ^(\ ${skip_types[*]/%/|\\} )$ ]] ||
|
||||
has ${m[-1]#MODULE:} "${skip_modules[@]}" && continue
|
||||
|
||||
case ${m[2]} in
|
||||
MANPAGE)
|
||||
gzip -dc ${m[0]} | newman - ${m[0]%.gz}
|
||||
pipestatus || die
|
||||
continue
|
||||
;;
|
||||
GBM_BACKEND_LIB_SYMLINK) m[4]=../${m[4]};; # missing ../
|
||||
VDPAU_SYMLINK) m[4]=vdpau/; m[5]=${m[5]#vdpau/};; # .so to vdpau/
|
||||
esac
|
||||
|
||||
if [[ -v 'paths[${m[2]}]' ]]; then
|
||||
into=${paths[${m[2]}]}
|
||||
elif [[ ${m[2]} == EXPLICIT_PATH ]]; then
|
||||
into=${m[3]}
|
||||
elif [[ ${m[2]} == *_BINARY ]]; then
|
||||
into=/usr/bin
|
||||
elif [[ ${m[3]} == COMPAT32 ]]; then
|
||||
use abi_x86_32 || continue
|
||||
into=/usr/${libdir32}
|
||||
elif [[ ${m[2]} == *_@(LIB|SYMLINK) ]]; then
|
||||
into=/usr/${libdir}
|
||||
else
|
||||
die "No known installation path for ${m[0]}"
|
||||
fi
|
||||
[[ ${m[3]: -2} == ?/ ]] && into+=/${m[3]%/}
|
||||
[[ ${m[4]: -2} == ?/ ]] && into+=/${m[4]%/}
|
||||
|
||||
if [[ ${m[2]} =~ _SYMLINK$ ]]; then
|
||||
[[ ${m[4]: -1} == / ]] && m[4]=${m[5]}
|
||||
dosym ${m[4]} ${into}/${m[0]}
|
||||
continue
|
||||
fi
|
||||
# avoid portage warning due to missing soname links in manifest
|
||||
[[ ${m[0]} =~ ^libnvidia-ngx.so ]] &&
|
||||
dosym ${m[0]} ${into}/${m[0]%.so*}.so.1
|
||||
|
||||
printf -v m[1] %o $((m[1] | 0200)) # 444->644
|
||||
insopts -m${m[1]}
|
||||
insinto ${into}
|
||||
doins ${m[0]}
|
||||
done < .manifest || die
|
||||
insopts -m0644 # reset
|
||||
|
||||
# MODULE:installer non-skipped extras
|
||||
: "$(systemd_get_sleepdir)"
|
||||
exeinto "${_#"${EPREFIX}"}"
|
||||
doexe systemd/system-sleep/nvidia
|
||||
dobin systemd/nvidia-sleep.sh
|
||||
systemd_dounit systemd/system/nvidia-{hibernate,resume,suspend,suspend-then-hibernate}.service
|
||||
|
||||
dobin nvidia-bug-report.sh
|
||||
|
||||
insinto /usr/share/nvidia/files.d
|
||||
doins sandboxutils-filelist.json
|
||||
|
||||
# MODULE:powerd extras
|
||||
if use powerd; then
|
||||
newinitd "${FILESDIR}"/nvidia-powerd.initd nvidia-powerd #923117
|
||||
systemd_dounit systemd/system/nvidia-powerd.service
|
||||
|
||||
insinto /usr/share/dbus-1/system.d
|
||||
doins nvidia-dbus.conf
|
||||
fi
|
||||
|
||||
# enabling is needed for sleep to work properly and little reason not to do
|
||||
# it unconditionally for a better user experience
|
||||
: "$(systemd_get_systemunitdir)"
|
||||
local unitdir=${_#"${EPREFIX}"}
|
||||
# not using relative symlinks to match systemd's own links
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-hibernate.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-resume.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-suspend.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-resume.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-suspend-then-hibernate.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-resume.service
|
||||
# also add a custom elogind hook to do the equivalent of the above
|
||||
exeinto /usr/lib/elogind/system-sleep
|
||||
newexe "${FILESDIR}"/system-sleep.elogind nvidia
|
||||
# <elogind-255.5 used a different path (bug #939216), keep a compat symlink
|
||||
# TODO: cleanup after 255.5 been stable for a few months
|
||||
dosym {/usr/lib,/"${libdir}"}/elogind/system-sleep/nvidia
|
||||
|
||||
# needed with >=systemd-256 or may fail to resume with some setups
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072722
|
||||
insinto "${unitdir}"/systemd-homed.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_HOME_LOCK_FREEZE_SESSION=false
|
||||
EOF
|
||||
insinto "${unitdir}"/systemd-suspend.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false
|
||||
EOF
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hibernate}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hybrid-sleep}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,suspend-then-hibernate}.service.d/10-nvidia.conf
|
||||
|
||||
# symlink non-versioned so nvidia-settings can use it even if misdetected
|
||||
dosym nvidia-application-profiles-${PV}-key-documentation \
|
||||
${paths[APPLICATION_PROFILE]}/nvidia-application-profiles-key-documentation
|
||||
|
||||
# don't attempt to strip firmware files (silences errors)
|
||||
dostrip -x ${paths[FIRMWARE]}
|
||||
|
||||
# sandbox issues with /dev/nvidiactl and others (bug #904292,#921578)
|
||||
# are widespread and sometime affect revdeps of packages built with
|
||||
# USE=opencl/cuda making it hard to manage in ebuilds (minimal set,
|
||||
# ebuilds should handle manually if need others or addwrite)
|
||||
insinto /etc/sandbox.d
|
||||
newins - 20nvidia <<<'SANDBOX_PREDICT="/dev/nvidiactl:/dev/nvidia-caps:/dev/char"'
|
||||
|
||||
# dracut does not use /etc/modprobe.d if hostonly=no, but want to make sure
|
||||
# our settings are used for bug 932781#c8 and nouveau blacklist if either
|
||||
# modules are included (however, just best-effort without initramfs regen)
|
||||
if use modules; then
|
||||
echo "install_items+=\" ${EPREFIX}/etc/modprobe.d/nvidia.conf \"" >> \
|
||||
"${ED}"/usr/lib/dracut/dracut.conf.d/10-${PN}.conf || die
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
has_version "${CATEGORY}/${PN}[kernel-open]" && NV_HAD_KERNEL_OPEN=
|
||||
has_version "${CATEGORY}/${PN}[wayland]" && NV_HAD_WAYLAND=
|
||||
|
||||
use modules || return
|
||||
|
||||
# set video group id based on live system (bug #491414)
|
||||
local g=$(egetent group video | cut -d: -f3)
|
||||
[[ ${g} =~ ^[0-9]+$ ]] || die "Failed to determine video group id (got '${g}')"
|
||||
sed -i "s/@VIDEOGID@/${g}/" "${ED}"/etc/modprobe.d/nvidia.conf || die
|
||||
|
||||
# try to find driver mismatches using temporary supported-gpus.json
|
||||
for g in $(grep -l 0x10de /sys/bus/pci/devices/*/vendor 2>/dev/null); do
|
||||
g=$(grep -io "\"devid\":\"$(<${g%vendor}device)\"[^}]*branch\":\"[0-9]*" \
|
||||
"${ED}"/usr/share/nvidia/supported-gpus.json 2>/dev/null)
|
||||
if [[ ${g} ]]; then
|
||||
g=$((${g##*\"}+1))
|
||||
if ver_test -ge ${g}; then
|
||||
NV_LEGACY_MASK=">=${CATEGORY}/${PN}-${g}"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm "${ED}"/usr/share/nvidia/supported-gpus.json || die
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
linux-mod-r1_pkg_postinst
|
||||
|
||||
readme.gentoo_print_elog
|
||||
|
||||
if [[ -r /proc/driver/nvidia/version &&
|
||||
$(</proc/driver/nvidia/version) != *" ${PV} "* ]]; then
|
||||
ewarn "Currently loaded NVIDIA modules do not match the newly installed"
|
||||
ewarn "libraries and may prevent launching GPU-accelerated applications."
|
||||
if use modules; then
|
||||
ewarn "Easiest way to fix this is normally to reboot. If still run into issues"
|
||||
ewarn "(e.g. API mismatch messages in the \`dmesg\` output), please verify"
|
||||
ewarn "that the running kernel is ${KV_FULL} and that (if used) the"
|
||||
ewarn "initramfs does not include NVIDIA modules (or at least, not old ones)."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $(</proc/cmdline) == *slub_debug=[!-]* ]]; then
|
||||
ewarn "Detected that the current kernel command line is using 'slub_debug=',"
|
||||
ewarn "this may lead to system instability/freezes with this version of"
|
||||
ewarn "${PN}. Bug: https://bugs.gentoo.org/796329"
|
||||
fi
|
||||
|
||||
if [[ -v NV_LEGACY_MASK ]]; then
|
||||
ewarn
|
||||
ewarn "***WARNING***"
|
||||
ewarn
|
||||
ewarn "You are installing a version of ${PN} known not to work"
|
||||
ewarn "with a GPU of the current system. If unwanted, add the mask:"
|
||||
if [[ -d ${EROOT}/etc/portage/package.mask ]]; then
|
||||
ewarn " echo '${NV_LEGACY_MASK}' > ${EROOT}/etc/portage/package.mask/${PN}"
|
||||
else
|
||||
ewarn " echo '${NV_LEGACY_MASK}' >> ${EROOT}/etc/portage/package.mask"
|
||||
fi
|
||||
ewarn "...then downgrade to a legacy[1] branch if possible (not all old versions"
|
||||
ewarn "are available or fully functional, may need to consider nouveau[2])."
|
||||
ewarn "[1] https://www.nvidia.com/object/IO_32667.html"
|
||||
ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau"
|
||||
fi
|
||||
|
||||
if use kernel-open && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then
|
||||
ewarn
|
||||
ewarn "Open source variant of ${PN} was selected, note that it requires"
|
||||
ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues."
|
||||
ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html"
|
||||
fi
|
||||
|
||||
if use wayland && use modules && [[ ! -v NV_HAD_WAYLAND ]]; then
|
||||
elog
|
||||
elog "Note that with USE=wayland, nvidia-drm.modeset=1 will be enabled"
|
||||
elog "in '${EROOT}/etc/modprobe.d/nvidia.conf'. *If* experience issues,"
|
||||
elog "either disable wayland or edit nvidia.conf."
|
||||
fi
|
||||
}
|
||||
@ -1,587 +0,0 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
MODULES_OPTIONAL_IUSE=+modules
|
||||
inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1
|
||||
inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
|
||||
|
||||
MODULES_KERNEL_MAX=6.16
|
||||
NV_URI="https://download.nvidia.com/XFree86/"
|
||||
|
||||
DESCRIPTION="NVIDIA Accelerated Graphics Driver"
|
||||
HOMEPAGE="https://www.nvidia.com/"
|
||||
SRC_URI="
|
||||
amd64? ( ${NV_URI}Linux-x86_64/${PV}/NVIDIA-Linux-x86_64-${PV}.run )
|
||||
arm64? ( ${NV_URI}Linux-aarch64/${PV}/NVIDIA-Linux-aarch64-${PV}.run )
|
||||
$(printf "${NV_URI}%s/%s-${PV}.tar.bz2 " \
|
||||
nvidia-{installer,modprobe,persistenced,settings,xconfig}{,})
|
||||
${NV_URI}NVIDIA-kernel-module-source/NVIDIA-kernel-module-source-${PV}.tar.xz
|
||||
"
|
||||
# nvidia-installer is unused but here for GPL-2's "distribute sources"
|
||||
S=${WORKDIR}
|
||||
|
||||
LICENSE="
|
||||
NVIDIA-2025 Apache-2.0 Boost-1.0 BSD BSD-2 GPL-2 MIT ZLIB
|
||||
curl openssl public-domain
|
||||
"
|
||||
SLOT="0/${PV%%.*}"
|
||||
KEYWORDS="-* ~amd64 ~arm64"
|
||||
IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland"
|
||||
REQUIRED_USE="kernel-open? ( modules )"
|
||||
|
||||
COMMON_DEPEND="
|
||||
acct-group/video
|
||||
X? ( x11-libs/libpciaccess )
|
||||
persistenced? (
|
||||
acct-user/nvpd
|
||||
net-libs/libtirpc:=
|
||||
)
|
||||
tools? (
|
||||
>=app-accessibility/at-spi2-core-2.46:2
|
||||
dev-libs/glib:2
|
||||
dev-libs/jansson:=
|
||||
media-libs/harfbuzz:=
|
||||
x11-libs/cairo
|
||||
x11-libs/gdk-pixbuf:2
|
||||
x11-libs/gtk+:3[X]
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
x11-libs/libXxf86vm
|
||||
x11-libs/pango
|
||||
)
|
||||
"
|
||||
RDEPEND="
|
||||
${COMMON_DEPEND}
|
||||
dev-libs/openssl:0/3
|
||||
sys-libs/glibc
|
||||
X? (
|
||||
media-libs/libglvnd[X,abi_x86_32(-)?]
|
||||
x11-libs/libX11[abi_x86_32(-)?]
|
||||
x11-libs/libXext[abi_x86_32(-)?]
|
||||
)
|
||||
powerd? ( sys-apps/dbus[abi_x86_32(-)?] )
|
||||
wayland? (
|
||||
>=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?]
|
||||
>=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?]
|
||||
X? ( gui-libs/egl-x11[abi_x86_32(-)?] )
|
||||
)
|
||||
"
|
||||
DEPEND="
|
||||
${COMMON_DEPEND}
|
||||
static-libs? (
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
)
|
||||
tools? (
|
||||
dev-util/vulkan-headers
|
||||
media-libs/libglvnd
|
||||
sys-apps/dbus
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libXrandr
|
||||
x11-libs/libXv
|
||||
x11-libs/libvdpau
|
||||
)
|
||||
"
|
||||
BDEPEND="
|
||||
app-alternatives/awk
|
||||
sys-devel/m4
|
||||
virtual/pkgconfig
|
||||
"
|
||||
|
||||
# there is some non-prebuilt exceptions but rather not maintain a list
|
||||
QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
|
||||
"${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use modules && [[ ${MERGE_TYPE} != binary ]] || return
|
||||
|
||||
# do early before linux-mod-r1 so can use chkconfig to setup CONFIG_CHECK
|
||||
get_version
|
||||
require_configured_kernel
|
||||
|
||||
local CONFIG_CHECK="
|
||||
PROC_FS
|
||||
~DRM_KMS_HELPER
|
||||
~DRM_FBDEV_EMULATION
|
||||
~SYSVIPC
|
||||
~!LOCKDEP
|
||||
~!PREEMPT_RT
|
||||
~!SLUB_DEBUG_ON
|
||||
!DEBUG_MUTEXES
|
||||
$(usev powerd '~CPU_FREQ')
|
||||
"
|
||||
|
||||
kernel_is -ge 6 11 && linux_chkconfig_present DRM_FBDEV_EMULATION &&
|
||||
CONFIG_CHECK+=" DRM_TTM_HELPER"
|
||||
|
||||
use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764
|
||||
|
||||
use kernel-open && CONFIG_CHECK+=" MMU_NOTIFIER" #843827
|
||||
|
||||
local drm_helper_msg="Cannot be directly selected in the kernel's config menus, and may need
|
||||
selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or
|
||||
DRM_AMDGPU=m (among others, consult the kernel config's help), can
|
||||
also use DRM_NOUVEAU=m as long as built as module *not* built-in."
|
||||
local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
|
||||
of drivers (no custom config), and for wayland / nvidia-drm.modeset=1.
|
||||
${drm_helper_msg}"
|
||||
local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is needed to compile when using
|
||||
kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set.
|
||||
${drm_helper_msg}"
|
||||
local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for
|
||||
nvidia-drm.fbdev=1 support, currently off-by-default and it could
|
||||
be ignored, but note that is due to change in the future."
|
||||
local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open.
|
||||
Cannot be directly selected in the kernel's menuconfig, and may need
|
||||
selection of another option that requires it such as CONFIG_KVM."
|
||||
local ERROR_PREEMPT_RT="CONFIG_PREEMPT_RT: is set but is unsupported by NVIDIA upstream and
|
||||
will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is
|
||||
set. Please do not report issues if run into e.g. kernel panics while
|
||||
ignoring this."
|
||||
|
||||
linux-mod-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# make patches usable across versions
|
||||
rm nvidia-modprobe && mv nvidia-modprobe{-${PV},} || die
|
||||
rm nvidia-persistenced && mv nvidia-persistenced{-${PV},} || die
|
||||
rm nvidia-settings && mv nvidia-settings{-${PV},} || die
|
||||
rm nvidia-xconfig && mv nvidia-xconfig{-${PV},} || die
|
||||
mv NVIDIA-kernel-module-source-${PV} kernel-module-source || die
|
||||
|
||||
default
|
||||
|
||||
# prevent detection of incomplete kernel DRM support (bug #603818)
|
||||
sed 's/defined(CONFIG_DRM/defined(CONFIG_DRM_KMS_HELPER/g' \
|
||||
-i kernel{,-module-source/kernel-open}/conftest.sh || die
|
||||
|
||||
sed 's/__USER__/nvpd/' \
|
||||
nvidia-persistenced/init/systemd/nvidia-persistenced.service.template \
|
||||
> "${T}"/nvidia-persistenced.service || die
|
||||
|
||||
# use alternative vulkan icd option if USE=-X (bug #909181)
|
||||
use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die
|
||||
|
||||
# enable nvidia-drm.modeset=1 by default with USE=wayland
|
||||
cp "${FILESDIR}"/nvidia-570.conf "${T}"/nvidia.conf || die
|
||||
use !wayland || sed -i '/^#.*modeset=1$/s/^#//' "${T}"/nvidia.conf || die
|
||||
|
||||
# makefile attempts to install wayland library even if not built
|
||||
use wayland || sed -i 's/ WAYLAND_LIB_install$//' \
|
||||
nvidia-settings/src/Makefile || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG
|
||||
|
||||
# extra flags for the libXNVCtrl.a static library
|
||||
local xnvflags=-fPIC #840389
|
||||
tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)"
|
||||
|
||||
NV_ARGS=(
|
||||
PREFIX="${EPREFIX}"/usr
|
||||
HOST_CC="$(tc-getBUILD_CC)"
|
||||
HOST_LD="$(tc-getBUILD_LD)"
|
||||
BUILD_GTK2LIB=
|
||||
NV_USE_BUNDLED_LIBJANSSON=0
|
||||
NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
|
||||
WAYLAND_AVAILABLE=$(usex wayland 1 0)
|
||||
XNVCTRL_CFLAGS="${xnvflags}"
|
||||
)
|
||||
|
||||
if use modules; then
|
||||
local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} o_ldflags=${LDFLAGS}
|
||||
|
||||
local modlistargs=video:kernel
|
||||
if use kernel-open; then
|
||||
modlistargs+=-module-source:kernel-module-source/kernel-open
|
||||
|
||||
# environment flags are normally unused for modules, but nvidia
|
||||
# uses it for building the "blob" and it is a bit fragile
|
||||
filter-flags -fno-plt #912949
|
||||
filter-lto
|
||||
CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags
|
||||
|
||||
LDFLAGS=$(raw-ldflags)
|
||||
fi
|
||||
|
||||
local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
|
||||
local modargs=(
|
||||
IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
|
||||
SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
|
||||
|
||||
# kernel takes "x86" and "x86_64" as meaning the same, but nvidia
|
||||
# makes the distinction (since 550.135) and is not happy with "x86"
|
||||
# TODO?: it should be ok/better for tc-arch-kernel to do x86_64
|
||||
$(usev amd64 ARCH=x86_64)
|
||||
)
|
||||
|
||||
# temporary workaround for bug #914468
|
||||
addpredict "${KV_OUT_DIR}"
|
||||
|
||||
linux-mod-r1_src_compile
|
||||
CFLAGS=${o_cflags} CXXFLAGS=${o_cxxflags} LDFLAGS=${o_ldflags}
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe
|
||||
use persistenced && emake "${NV_ARGS[@]}" -C nvidia-persistenced
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig
|
||||
|
||||
if use tools; then
|
||||
# avoid noisy *very* noisy logs with deprecation warnings
|
||||
CFLAGS="-Wno-deprecated-declarations ${CFLAGS}" \
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings
|
||||
elif use static-libs; then
|
||||
# pretend GTK+3 is available, not actually used (bug #880879)
|
||||
emake "${NV_ARGS[@]}" BUILD_GTK3LIB=1 \
|
||||
-C nvidia-settings/src out/libXNVCtrl.a
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=$(get_libdir) libdir32=$(ABI=x86 get_libdir)
|
||||
|
||||
NV_ARGS+=( DESTDIR="${D}" LIBDIR="${ED}"/usr/${libdir} )
|
||||
|
||||
local -A paths=(
|
||||
[APPLICATION_PROFILE]=/usr/share/nvidia
|
||||
[CUDA_ICD]=/etc/OpenCL/vendors
|
||||
[EGL_EXTERNAL_PLATFORM_JSON]=/usr/share/egl/egl_external_platform.d
|
||||
[FIRMWARE]=/lib/firmware/nvidia/${PV}
|
||||
[GBM_BACKEND_LIB_SYMLINK]=/usr/${libdir}/gbm
|
||||
[GLVND_EGL_ICD_JSON]=/usr/share/glvnd/egl_vendor.d
|
||||
[OPENGL_DATA]=/usr/share/nvidia
|
||||
[VULKANSC_ICD_JSON]=/usr/share/vulkansc
|
||||
[VULKAN_ICD_JSON]=/usr/share/vulkan
|
||||
[WINE_LIB]=/usr/${libdir}/nvidia/wine
|
||||
[XORG_OUTPUTCLASS_CONFIG]=/usr/share/X11/xorg.conf.d
|
||||
|
||||
[GLX_MODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules/extensions
|
||||
[GLX_MODULE_SYMLINK]=/usr/${libdir}/xorg/modules
|
||||
[XMODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules
|
||||
)
|
||||
|
||||
local skip_files=(
|
||||
$(usev !X "libGLX_nvidia libglxserver_nvidia")
|
||||
libGLX_indirect # non-glvnd unused fallback
|
||||
libnvidia-{gtk,wayland-client} nvidia-{settings,xconfig} # from source
|
||||
libnvidia-egl-gbm 15_nvidia_gbm # gui-libs/egl-gbm
|
||||
libnvidia-egl-wayland 10_nvidia_wayland # gui-libs/egl-wayland
|
||||
libnvidia-egl-xcb 20_nvidia_xcb.json # gui-libs/egl-x11
|
||||
libnvidia-egl-xlib 20_nvidia_xlib.json # gui-libs/egl-x11
|
||||
libnvidia-pkcs11.so # using the openssl3 version instead
|
||||
)
|
||||
local skip_modules=(
|
||||
$(usev !X "nvfbc vdpau xdriver")
|
||||
$(usev !modules gsp)
|
||||
$(usev !powerd nvtopps)
|
||||
installer nvpd # handled separately / built from source
|
||||
)
|
||||
local skip_types=(
|
||||
GLVND_LIB GLVND_SYMLINK EGL_CLIENT.\* GLX_CLIENT.\* # media-libs/libglvnd
|
||||
OPENCL_WRAPPER.\* # virtual/opencl
|
||||
DOCUMENTATION DOT_DESKTOP .\*_SRC DKMS_CONF SYSTEMD_UNIT # handled separately / unused
|
||||
)
|
||||
|
||||
local DOCS=(
|
||||
README.txt NVIDIA_Changelog supported-gpus/supported-gpus.json
|
||||
nvidia-settings/doc/{FRAMELOCK,NV-CONTROL-API}.txt
|
||||
)
|
||||
local HTML_DOCS=( html/. )
|
||||
einstalldocs
|
||||
|
||||
local DISABLE_AUTOFORMATTING=yes
|
||||
local DOC_CONTENTS="\
|
||||
Trusted users should be in the 'video' group to use NVIDIA devices.
|
||||
You can add yourself by using: gpasswd -a my-user video\
|
||||
$(usev modules "
|
||||
|
||||
Like all out-of-tree kernel modules, it is necessary to rebuild
|
||||
${PN} after upgrading or rebuilding the Linux kernel
|
||||
by for example running \`emerge @module-rebuild\`. Alternatively,
|
||||
if using a distribution kernel (sys-kernel/gentoo-kernel{,-bin}),
|
||||
this can be automated by setting USE=dist-kernel globally.
|
||||
|
||||
Loaded kernel modules also must not mismatch with the installed
|
||||
${PN} version (excluding -r revision), meaning should
|
||||
ensure \`eselect kernel list\` points to the kernel that will be
|
||||
booted before building and preferably reboot after upgrading
|
||||
${PN} (the ebuild will emit a warning if mismatching).
|
||||
|
||||
See '${EPREFIX}/etc/modprobe.d/nvidia.conf' for modules options.")\
|
||||
$(use amd64 && usev !abi_x86_32 "
|
||||
|
||||
Note that without USE=abi_x86_32 on ${PN}, 32bit applications
|
||||
(typically using wine / steam) will not be able to use GPU acceleration.")
|
||||
|
||||
Be warned that USE=kernel-open may need to be either enabled or
|
||||
disabled for certain cards to function:
|
||||
- GTX 50xx (blackwell) and higher require it to be enabled
|
||||
- GTX 1650 and higher (pre-blackwell) should work either way
|
||||
- Older cards require it to be disabled
|
||||
|
||||
For additional information or for troubleshooting issues, please see
|
||||
https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers and NVIDIA's own
|
||||
documentation that is installed alongside this README."
|
||||
readme.gentoo_create_doc
|
||||
|
||||
if use modules; then
|
||||
linux-mod-r1_src_install
|
||||
|
||||
insinto /etc/modprobe.d
|
||||
doins "${T}"/nvidia.conf
|
||||
|
||||
# used for gpu verification with binpkgs (not kept, see pkg_preinst)
|
||||
insinto /usr/share/nvidia
|
||||
doins supported-gpus/supported-gpus.json
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe install
|
||||
fowners :video /usr/bin/nvidia-modprobe #505092
|
||||
fperms 4710 /usr/bin/nvidia-modprobe
|
||||
|
||||
if use persistenced; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-persistenced install
|
||||
newconfd "${FILESDIR}"/nvidia-persistenced.confd nvidia-persistenced
|
||||
newinitd "${FILESDIR}"/nvidia-persistenced.initd nvidia-persistenced
|
||||
systemd_dounit "${T}"/nvidia-persistenced.service
|
||||
fi
|
||||
|
||||
if use tools; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings install
|
||||
|
||||
doicon nvidia-settings/doc/nvidia-settings.png
|
||||
domenu nvidia-settings/doc/nvidia-settings.desktop
|
||||
|
||||
exeinto /etc/X11/xinit/xinitrc.d
|
||||
newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
|
||||
fi
|
||||
|
||||
if use static-libs; then
|
||||
dolib.a nvidia-settings/src/out/libXNVCtrl.a
|
||||
strip-lto-bytecode
|
||||
|
||||
insinto /usr/include/NVCtrl
|
||||
doins nvidia-settings/src/libXNVCtrl/NVCtrl{Lib,}.h
|
||||
fi
|
||||
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig install
|
||||
|
||||
# mimic nvidia-installer by reading .manifest to install files
|
||||
# 0:file 1:perms 2:type 3+:subtype/arguments -:module
|
||||
local m into
|
||||
while IFS=' ' read -ra m; do
|
||||
! [[ ${#m[@]} -ge 2 && ${m[-1]} =~ MODULE: ]] ||
|
||||
[[ " ${m[0]##*/}" =~ ^(\ ${skip_files[*]/%/.*|\\} )$ ]] ||
|
||||
[[ " ${m[2]}" =~ ^(\ ${skip_types[*]/%/|\\} )$ ]] ||
|
||||
has ${m[-1]#MODULE:} "${skip_modules[@]}" && continue
|
||||
|
||||
case ${m[2]} in
|
||||
MANPAGE)
|
||||
gzip -dc ${m[0]} | newman - ${m[0]%.gz}
|
||||
pipestatus || die
|
||||
continue
|
||||
;;
|
||||
GBM_BACKEND_LIB_SYMLINK) m[4]=../${m[4]};; # missing ../
|
||||
VDPAU_SYMLINK) m[4]=vdpau/; m[5]=${m[5]#vdpau/};; # .so to vdpau/
|
||||
esac
|
||||
|
||||
if [[ -v 'paths[${m[2]}]' ]]; then
|
||||
into=${paths[${m[2]}]}
|
||||
elif [[ ${m[2]} == EXPLICIT_PATH ]]; then
|
||||
into=${m[3]}
|
||||
elif [[ ${m[2]} == *_BINARY ]]; then
|
||||
into=/usr/bin
|
||||
elif [[ ${m[3]} == COMPAT32 ]]; then
|
||||
use abi_x86_32 || continue
|
||||
into=/usr/${libdir32}
|
||||
elif [[ ${m[2]} == *_@(LIB|SYMLINK) ]]; then
|
||||
into=/usr/${libdir}
|
||||
else
|
||||
die "No known installation path for ${m[0]}"
|
||||
fi
|
||||
[[ ${m[3]: -2} == ?/ ]] && into+=/${m[3]%/}
|
||||
[[ ${m[4]: -2} == ?/ ]] && into+=/${m[4]%/}
|
||||
|
||||
if [[ ${m[2]} =~ _SYMLINK$ ]]; then
|
||||
[[ ${m[4]: -1} == / ]] && m[4]=${m[5]}
|
||||
dosym ${m[4]} ${into}/${m[0]}
|
||||
continue
|
||||
fi
|
||||
# avoid portage warning due to missing soname links in manifest
|
||||
[[ ${m[0]} =~ ^libnvidia-ngx.so ]] &&
|
||||
dosym ${m[0]} ${into}/${m[0]%.so*}.so.1
|
||||
|
||||
printf -v m[1] %o $((m[1] | 0200)) # 444->644
|
||||
insopts -m${m[1]}
|
||||
insinto ${into}
|
||||
doins ${m[0]}
|
||||
done < .manifest || die
|
||||
insopts -m0644 # reset
|
||||
|
||||
# MODULE:installer non-skipped extras
|
||||
: "$(systemd_get_sleepdir)"
|
||||
exeinto "${_#"${EPREFIX}"}"
|
||||
doexe systemd/system-sleep/nvidia
|
||||
dobin systemd/nvidia-sleep.sh
|
||||
systemd_dounit systemd/system/nvidia-{hibernate,resume,suspend,suspend-then-hibernate}.service
|
||||
|
||||
dobin nvidia-bug-report.sh
|
||||
|
||||
insinto /usr/share/nvidia/files.d
|
||||
doins sandboxutils-filelist.json
|
||||
|
||||
# MODULE:powerd extras
|
||||
if use powerd; then
|
||||
newinitd "${FILESDIR}"/nvidia-powerd.initd nvidia-powerd #923117
|
||||
systemd_dounit systemd/system/nvidia-powerd.service
|
||||
|
||||
insinto /usr/share/dbus-1/system.d
|
||||
doins nvidia-dbus.conf
|
||||
fi
|
||||
|
||||
# enabling is needed for sleep to work properly and little reason not to do
|
||||
# it unconditionally for a better user experience
|
||||
: "$(systemd_get_systemunitdir)"
|
||||
local unitdir=${_#"${EPREFIX}"}
|
||||
# not using relative symlinks to match systemd's own links
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-hibernate.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-resume.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-suspend.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-resume.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-suspend-then-hibernate.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-resume.service
|
||||
# also add a custom elogind hook to do the equivalent of the above
|
||||
exeinto /usr/lib/elogind/system-sleep
|
||||
newexe "${FILESDIR}"/system-sleep.elogind nvidia
|
||||
# <elogind-255.5 used a different path (bug #939216), keep a compat symlink
|
||||
# TODO: cleanup after 255.5 been stable for a few months
|
||||
dosym {/usr/lib,/"${libdir}"}/elogind/system-sleep/nvidia
|
||||
|
||||
# needed with >=systemd-256 or may fail to resume with some setups
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072722
|
||||
insinto "${unitdir}"/systemd-homed.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_HOME_LOCK_FREEZE_SESSION=false
|
||||
EOF
|
||||
insinto "${unitdir}"/systemd-suspend.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false
|
||||
EOF
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hibernate}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hybrid-sleep}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,suspend-then-hibernate}.service.d/10-nvidia.conf
|
||||
|
||||
# symlink non-versioned so nvidia-settings can use it even if misdetected
|
||||
dosym nvidia-application-profiles-${PV}-key-documentation \
|
||||
${paths[APPLICATION_PROFILE]}/nvidia-application-profiles-key-documentation
|
||||
|
||||
# don't attempt to strip firmware files (silences errors)
|
||||
dostrip -x ${paths[FIRMWARE]}
|
||||
|
||||
# sandbox issues with /dev/nvidiactl and others (bug #904292,#921578)
|
||||
# are widespread and sometime affect revdeps of packages built with
|
||||
# USE=opencl/cuda making it hard to manage in ebuilds (minimal set,
|
||||
# ebuilds should handle manually if need others or addwrite)
|
||||
insinto /etc/sandbox.d
|
||||
newins - 20nvidia <<<'SANDBOX_PREDICT="/dev/nvidiactl:/dev/nvidia-caps:/dev/char"'
|
||||
|
||||
# dracut does not use /etc/modprobe.d if hostonly=no, but want to make sure
|
||||
# our settings are used for bug 932781#c8 and nouveau blacklist if either
|
||||
# modules are included (however, just best-effort without initramfs regen)
|
||||
if use modules; then
|
||||
echo "install_items+=\" ${EPREFIX}/etc/modprobe.d/nvidia.conf \"" >> \
|
||||
"${ED}"/usr/lib/dracut/dracut.conf.d/10-${PN}.conf || die
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
has_version "${CATEGORY}/${PN}[kernel-open]" && NV_HAD_KERNEL_OPEN=
|
||||
has_version "${CATEGORY}/${PN}[wayland]" && NV_HAD_WAYLAND=
|
||||
|
||||
use modules || return
|
||||
|
||||
# set video group id based on live system (bug #491414)
|
||||
local g=$(egetent group video | cut -d: -f3)
|
||||
[[ ${g} =~ ^[0-9]+$ ]] || die "Failed to determine video group id (got '${g}')"
|
||||
sed -i "s/@VIDEOGID@/${g}/" "${ED}"/etc/modprobe.d/nvidia.conf || die
|
||||
|
||||
# try to find driver mismatches using temporary supported-gpus.json
|
||||
for g in $(grep -l 0x10de /sys/bus/pci/devices/*/vendor 2>/dev/null); do
|
||||
g=$(grep -io "\"devid\":\"$(<${g%vendor}device)\"[^}]*branch\":\"[0-9]*" \
|
||||
"${ED}"/usr/share/nvidia/supported-gpus.json 2>/dev/null)
|
||||
if [[ ${g} ]]; then
|
||||
g=$((${g##*\"}+1))
|
||||
if ver_test -ge ${g}; then
|
||||
NV_LEGACY_MASK=">=${CATEGORY}/${PN}-${g}"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm "${ED}"/usr/share/nvidia/supported-gpus.json || die
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
linux-mod-r1_pkg_postinst
|
||||
|
||||
readme.gentoo_print_elog
|
||||
|
||||
if [[ -r /proc/driver/nvidia/version &&
|
||||
$(</proc/driver/nvidia/version) != *" ${PV} "* ]]; then
|
||||
ewarn "Currently loaded NVIDIA modules do not match the newly installed"
|
||||
ewarn "libraries and may prevent launching GPU-accelerated applications."
|
||||
if use modules; then
|
||||
ewarn "Easiest way to fix this is normally to reboot. If still run into issues"
|
||||
ewarn "(e.g. API mismatch messages in the \`dmesg\` output), please verify"
|
||||
ewarn "that the running kernel is ${KV_FULL} and that (if used) the"
|
||||
ewarn "initramfs does not include NVIDIA modules (or at least, not old ones)."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $(</proc/cmdline) == *slub_debug=[!-]* ]]; then
|
||||
ewarn "Detected that the current kernel command line is using 'slub_debug=',"
|
||||
ewarn "this may lead to system instability/freezes with this version of"
|
||||
ewarn "${PN}. Bug: https://bugs.gentoo.org/796329"
|
||||
fi
|
||||
|
||||
if [[ -v NV_LEGACY_MASK ]]; then
|
||||
ewarn
|
||||
ewarn "***WARNING***"
|
||||
ewarn
|
||||
ewarn "You are installing a version of ${PN} known not to work"
|
||||
ewarn "with a GPU of the current system. If unwanted, add the mask:"
|
||||
if [[ -d ${EROOT}/etc/portage/package.mask ]]; then
|
||||
ewarn " echo '${NV_LEGACY_MASK}' > ${EROOT}/etc/portage/package.mask/${PN}"
|
||||
else
|
||||
ewarn " echo '${NV_LEGACY_MASK}' >> ${EROOT}/etc/portage/package.mask"
|
||||
fi
|
||||
ewarn "...then downgrade to a legacy[1] branch if possible (not all old versions"
|
||||
ewarn "are available or fully functional, may need to consider nouveau[2])."
|
||||
ewarn "[1] https://www.nvidia.com/object/IO_32667.html"
|
||||
ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau"
|
||||
fi
|
||||
|
||||
if use kernel-open && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then
|
||||
ewarn
|
||||
ewarn "Open source variant of ${PN} was selected, note that it requires"
|
||||
ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues."
|
||||
ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html"
|
||||
fi
|
||||
|
||||
if use wayland && use modules && [[ ! -v NV_HAD_WAYLAND ]]; then
|
||||
elog
|
||||
elog "Note that with USE=wayland, nvidia-drm.modeset=1 will be enabled"
|
||||
elog "in '${EROOT}/etc/modprobe.d/nvidia.conf'. *If* experience issues,"
|
||||
elog "either disable wayland or edit nvidia.conf."
|
||||
fi
|
||||
}
|
||||
@ -1,587 +0,0 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
MODULES_OPTIONAL_IUSE=+modules
|
||||
inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1
|
||||
inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
|
||||
|
||||
MODULES_KERNEL_MAX=6.17
|
||||
NV_URI="https://download.nvidia.com/XFree86/"
|
||||
|
||||
DESCRIPTION="NVIDIA Accelerated Graphics Driver"
|
||||
HOMEPAGE="https://www.nvidia.com/"
|
||||
SRC_URI="
|
||||
amd64? ( ${NV_URI}Linux-x86_64/${PV}/NVIDIA-Linux-x86_64-${PV}.run )
|
||||
arm64? ( ${NV_URI}Linux-aarch64/${PV}/NVIDIA-Linux-aarch64-${PV}.run )
|
||||
$(printf "${NV_URI}%s/%s-${PV}.tar.bz2 " \
|
||||
nvidia-{installer,modprobe,persistenced,settings,xconfig}{,})
|
||||
${NV_URI}NVIDIA-kernel-module-source/NVIDIA-kernel-module-source-${PV}.tar.xz
|
||||
"
|
||||
# nvidia-installer is unused but here for GPL-2's "distribute sources"
|
||||
S=${WORKDIR}
|
||||
|
||||
LICENSE="
|
||||
NVIDIA-2025 Apache-2.0 Boost-1.0 BSD BSD-2 GPL-2 MIT ZLIB
|
||||
curl openssl public-domain
|
||||
"
|
||||
SLOT="0/${PV%%.*}"
|
||||
KEYWORDS="-* ~amd64 ~arm64"
|
||||
IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland"
|
||||
REQUIRED_USE="kernel-open? ( modules )"
|
||||
|
||||
COMMON_DEPEND="
|
||||
acct-group/video
|
||||
X? ( x11-libs/libpciaccess )
|
||||
persistenced? (
|
||||
acct-user/nvpd
|
||||
net-libs/libtirpc:=
|
||||
)
|
||||
tools? (
|
||||
>=app-accessibility/at-spi2-core-2.46:2
|
||||
dev-libs/glib:2
|
||||
dev-libs/jansson:=
|
||||
media-libs/harfbuzz:=
|
||||
x11-libs/cairo
|
||||
x11-libs/gdk-pixbuf:2
|
||||
x11-libs/gtk+:3[X]
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
x11-libs/libXxf86vm
|
||||
x11-libs/pango
|
||||
)
|
||||
"
|
||||
RDEPEND="
|
||||
${COMMON_DEPEND}
|
||||
dev-libs/openssl:0/3
|
||||
sys-libs/glibc
|
||||
X? (
|
||||
media-libs/libglvnd[X,abi_x86_32(-)?]
|
||||
x11-libs/libX11[abi_x86_32(-)?]
|
||||
x11-libs/libXext[abi_x86_32(-)?]
|
||||
)
|
||||
powerd? ( sys-apps/dbus[abi_x86_32(-)?] )
|
||||
wayland? (
|
||||
>=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?]
|
||||
>=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?]
|
||||
X? ( gui-libs/egl-x11[abi_x86_32(-)?] )
|
||||
)
|
||||
"
|
||||
DEPEND="
|
||||
${COMMON_DEPEND}
|
||||
static-libs? (
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libX11
|
||||
x11-libs/libXext
|
||||
)
|
||||
tools? (
|
||||
dev-util/vulkan-headers
|
||||
media-libs/libglvnd
|
||||
sys-apps/dbus
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libXrandr
|
||||
x11-libs/libXv
|
||||
x11-libs/libvdpau
|
||||
)
|
||||
"
|
||||
BDEPEND="
|
||||
app-alternatives/awk
|
||||
sys-devel/m4
|
||||
virtual/pkgconfig
|
||||
"
|
||||
|
||||
# there is some non-prebuilt exceptions but rather not maintain a list
|
||||
QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
|
||||
"${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use modules && [[ ${MERGE_TYPE} != binary ]] || return
|
||||
|
||||
# do early before linux-mod-r1 so can use chkconfig to setup CONFIG_CHECK
|
||||
get_version
|
||||
require_configured_kernel
|
||||
|
||||
local CONFIG_CHECK="
|
||||
PROC_FS
|
||||
~DRM_KMS_HELPER
|
||||
~DRM_FBDEV_EMULATION
|
||||
~SYSVIPC
|
||||
~!LOCKDEP
|
||||
~!PREEMPT_RT
|
||||
~!SLUB_DEBUG_ON
|
||||
!DEBUG_MUTEXES
|
||||
$(usev powerd '~CPU_FREQ')
|
||||
"
|
||||
|
||||
kernel_is -ge 6 11 && linux_chkconfig_present DRM_FBDEV_EMULATION &&
|
||||
CONFIG_CHECK+=" DRM_TTM_HELPER"
|
||||
|
||||
use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764
|
||||
|
||||
use kernel-open && CONFIG_CHECK+=" MMU_NOTIFIER" #843827
|
||||
|
||||
local drm_helper_msg="Cannot be directly selected in the kernel's config menus, and may need
|
||||
selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or
|
||||
DRM_AMDGPU=m (among others, consult the kernel config's help), can
|
||||
also use DRM_NOUVEAU=m as long as built as module *not* built-in."
|
||||
local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection
|
||||
of drivers (no custom config), and for wayland / nvidia-drm.modeset=1.
|
||||
${drm_helper_msg}"
|
||||
local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is needed to compile when using
|
||||
kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set.
|
||||
${drm_helper_msg}"
|
||||
local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for
|
||||
nvidia-drm.fbdev=1 support, currently off-by-default and it could
|
||||
be ignored, but note that is due to change in the future."
|
||||
local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open.
|
||||
Cannot be directly selected in the kernel's menuconfig, and may need
|
||||
selection of another option that requires it such as CONFIG_KVM."
|
||||
local ERROR_PREEMPT_RT="CONFIG_PREEMPT_RT: is set but is unsupported by NVIDIA upstream and
|
||||
will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is
|
||||
set. Please do not report issues if run into e.g. kernel panics while
|
||||
ignoring this."
|
||||
|
||||
linux-mod-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# make patches usable across versions
|
||||
rm nvidia-modprobe && mv nvidia-modprobe{-${PV},} || die
|
||||
rm nvidia-persistenced && mv nvidia-persistenced{-${PV},} || die
|
||||
rm nvidia-settings && mv nvidia-settings{-${PV},} || die
|
||||
rm nvidia-xconfig && mv nvidia-xconfig{-${PV},} || die
|
||||
mv NVIDIA-kernel-module-source-${PV} kernel-module-source || die
|
||||
|
||||
default
|
||||
|
||||
# prevent detection of incomplete kernel DRM support (bug #603818)
|
||||
sed 's/defined(CONFIG_DRM/defined(CONFIG_DRM_KMS_HELPER/g' \
|
||||
-i kernel{,-module-source/kernel-open}/conftest.sh || die
|
||||
|
||||
sed 's/__USER__/nvpd/' \
|
||||
nvidia-persistenced/init/systemd/nvidia-persistenced.service.template \
|
||||
> "${T}"/nvidia-persistenced.service || die
|
||||
|
||||
# use alternative vulkan icd option if USE=-X (bug #909181)
|
||||
use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die
|
||||
|
||||
# enable nvidia-drm.modeset=1 by default with USE=wayland
|
||||
cp "${FILESDIR}"/nvidia-570.conf "${T}"/nvidia.conf || die
|
||||
use !wayland || sed -i '/^#.*modeset=1$/s/^#//' "${T}"/nvidia.conf || die
|
||||
|
||||
# makefile attempts to install wayland library even if not built
|
||||
use wayland || sed -i 's/ WAYLAND_LIB_install$//' \
|
||||
nvidia-settings/src/Makefile || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG
|
||||
|
||||
# extra flags for the libXNVCtrl.a static library
|
||||
local xnvflags=-fPIC #840389
|
||||
tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)"
|
||||
|
||||
NV_ARGS=(
|
||||
PREFIX="${EPREFIX}"/usr
|
||||
HOST_CC="$(tc-getBUILD_CC)"
|
||||
HOST_LD="$(tc-getBUILD_LD)"
|
||||
BUILD_GTK2LIB=
|
||||
NV_USE_BUNDLED_LIBJANSSON=0
|
||||
NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out
|
||||
WAYLAND_AVAILABLE=$(usex wayland 1 0)
|
||||
XNVCTRL_CFLAGS="${xnvflags}"
|
||||
)
|
||||
|
||||
if use modules; then
|
||||
local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} o_ldflags=${LDFLAGS}
|
||||
|
||||
local modlistargs=video:kernel
|
||||
if use kernel-open; then
|
||||
modlistargs+=-module-source:kernel-module-source/kernel-open
|
||||
|
||||
# environment flags are normally unused for modules, but nvidia
|
||||
# uses it for building the "blob" and it is a bit fragile
|
||||
filter-flags -fno-plt #912949
|
||||
filter-lto
|
||||
CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags
|
||||
|
||||
LDFLAGS=$(raw-ldflags)
|
||||
fi
|
||||
|
||||
local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
|
||||
local modargs=(
|
||||
IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
|
||||
SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
|
||||
|
||||
# kernel takes "x86" and "x86_64" as meaning the same, but nvidia
|
||||
# makes the distinction (since 550.135) and is not happy with "x86"
|
||||
# TODO?: it should be ok/better for tc-arch-kernel to do x86_64
|
||||
$(usev amd64 ARCH=x86_64)
|
||||
)
|
||||
|
||||
# temporary workaround for bug #914468
|
||||
addpredict "${KV_OUT_DIR}"
|
||||
|
||||
linux-mod-r1_src_compile
|
||||
CFLAGS=${o_cflags} CXXFLAGS=${o_cxxflags} LDFLAGS=${o_ldflags}
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe
|
||||
use persistenced && emake "${NV_ARGS[@]}" -C nvidia-persistenced
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig
|
||||
|
||||
if use tools; then
|
||||
# avoid noisy *very* noisy logs with deprecation warnings
|
||||
CFLAGS="-Wno-deprecated-declarations ${CFLAGS}" \
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings
|
||||
elif use static-libs; then
|
||||
# pretend GTK+3 is available, not actually used (bug #880879)
|
||||
emake "${NV_ARGS[@]}" BUILD_GTK3LIB=1 \
|
||||
-C nvidia-settings/src out/libXNVCtrl.a
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=$(get_libdir) libdir32=$(ABI=x86 get_libdir)
|
||||
|
||||
NV_ARGS+=( DESTDIR="${D}" LIBDIR="${ED}"/usr/${libdir} )
|
||||
|
||||
local -A paths=(
|
||||
[APPLICATION_PROFILE]=/usr/share/nvidia
|
||||
[CUDA_ICD]=/etc/OpenCL/vendors
|
||||
[EGL_EXTERNAL_PLATFORM_JSON]=/usr/share/egl/egl_external_platform.d
|
||||
[FIRMWARE]=/lib/firmware/nvidia/${PV}
|
||||
[GBM_BACKEND_LIB_SYMLINK]=/usr/${libdir}/gbm
|
||||
[GLVND_EGL_ICD_JSON]=/usr/share/glvnd/egl_vendor.d
|
||||
[OPENGL_DATA]=/usr/share/nvidia
|
||||
[VULKANSC_ICD_JSON]=/usr/share/vulkansc
|
||||
[VULKAN_ICD_JSON]=/usr/share/vulkan
|
||||
[WINE_LIB]=/usr/${libdir}/nvidia/wine
|
||||
[XORG_OUTPUTCLASS_CONFIG]=/usr/share/X11/xorg.conf.d
|
||||
|
||||
[GLX_MODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules/extensions
|
||||
[GLX_MODULE_SYMLINK]=/usr/${libdir}/xorg/modules
|
||||
[XMODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules
|
||||
)
|
||||
|
||||
local skip_files=(
|
||||
$(usev !X "libGLX_nvidia libglxserver_nvidia")
|
||||
libGLX_indirect # non-glvnd unused fallback
|
||||
libnvidia-{gtk,wayland-client} nvidia-{settings,xconfig} # from source
|
||||
libnvidia-egl-gbm 15_nvidia_gbm # gui-libs/egl-gbm
|
||||
libnvidia-egl-wayland 10_nvidia_wayland # gui-libs/egl-wayland
|
||||
libnvidia-egl-xcb 20_nvidia_xcb.json # gui-libs/egl-x11
|
||||
libnvidia-egl-xlib 20_nvidia_xlib.json # gui-libs/egl-x11
|
||||
libnvidia-pkcs11.so # using the openssl3 version instead
|
||||
)
|
||||
local skip_modules=(
|
||||
$(usev !X "nvfbc vdpau xdriver")
|
||||
$(usev !modules gsp)
|
||||
$(usev !powerd nvtopps)
|
||||
installer nvpd # handled separately / built from source
|
||||
)
|
||||
local skip_types=(
|
||||
GLVND_LIB GLVND_SYMLINK EGL_CLIENT.\* GLX_CLIENT.\* # media-libs/libglvnd
|
||||
OPENCL_WRAPPER.\* # virtual/opencl
|
||||
DOCUMENTATION DOT_DESKTOP .\*_SRC DKMS_CONF SYSTEMD_UNIT # handled separately / unused
|
||||
)
|
||||
|
||||
local DOCS=(
|
||||
README.txt NVIDIA_Changelog supported-gpus/supported-gpus.json
|
||||
nvidia-settings/doc/{FRAMELOCK,NV-CONTROL-API}.txt
|
||||
)
|
||||
local HTML_DOCS=( html/. )
|
||||
einstalldocs
|
||||
|
||||
local DISABLE_AUTOFORMATTING=yes
|
||||
local DOC_CONTENTS="\
|
||||
Trusted users should be in the 'video' group to use NVIDIA devices.
|
||||
You can add yourself by using: gpasswd -a my-user video\
|
||||
$(usev modules "
|
||||
|
||||
Like all out-of-tree kernel modules, it is necessary to rebuild
|
||||
${PN} after upgrading or rebuilding the Linux kernel
|
||||
by for example running \`emerge @module-rebuild\`. Alternatively,
|
||||
if using a distribution kernel (sys-kernel/gentoo-kernel{,-bin}),
|
||||
this can be automated by setting USE=dist-kernel globally.
|
||||
|
||||
Loaded kernel modules also must not mismatch with the installed
|
||||
${PN} version (excluding -r revision), meaning should
|
||||
ensure \`eselect kernel list\` points to the kernel that will be
|
||||
booted before building and preferably reboot after upgrading
|
||||
${PN} (the ebuild will emit a warning if mismatching).
|
||||
|
||||
See '${EPREFIX}/etc/modprobe.d/nvidia.conf' for modules options.")\
|
||||
$(use amd64 && usev !abi_x86_32 "
|
||||
|
||||
Note that without USE=abi_x86_32 on ${PN}, 32bit applications
|
||||
(typically using wine / steam) will not be able to use GPU acceleration.")
|
||||
|
||||
Be warned that USE=kernel-open may need to be either enabled or
|
||||
disabled for certain cards to function:
|
||||
- GTX 50xx (blackwell) and higher require it to be enabled
|
||||
- GTX 1650 and higher (pre-blackwell) should work either way
|
||||
- Older cards require it to be disabled
|
||||
|
||||
For additional information or for troubleshooting issues, please see
|
||||
https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers and NVIDIA's own
|
||||
documentation that is installed alongside this README."
|
||||
readme.gentoo_create_doc
|
||||
|
||||
if use modules; then
|
||||
linux-mod-r1_src_install
|
||||
|
||||
insinto /etc/modprobe.d
|
||||
doins "${T}"/nvidia.conf
|
||||
|
||||
# used for gpu verification with binpkgs (not kept, see pkg_preinst)
|
||||
insinto /usr/share/nvidia
|
||||
doins supported-gpus/supported-gpus.json
|
||||
fi
|
||||
|
||||
emake "${NV_ARGS[@]}" -C nvidia-modprobe install
|
||||
fowners :video /usr/bin/nvidia-modprobe #505092
|
||||
fperms 4710 /usr/bin/nvidia-modprobe
|
||||
|
||||
if use persistenced; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-persistenced install
|
||||
newconfd "${FILESDIR}"/nvidia-persistenced.confd nvidia-persistenced
|
||||
newinitd "${FILESDIR}"/nvidia-persistenced.initd nvidia-persistenced
|
||||
systemd_dounit "${T}"/nvidia-persistenced.service
|
||||
fi
|
||||
|
||||
if use tools; then
|
||||
emake "${NV_ARGS[@]}" -C nvidia-settings install
|
||||
|
||||
doicon nvidia-settings/doc/nvidia-settings.png
|
||||
domenu nvidia-settings/doc/nvidia-settings.desktop
|
||||
|
||||
exeinto /etc/X11/xinit/xinitrc.d
|
||||
newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings
|
||||
fi
|
||||
|
||||
if use static-libs; then
|
||||
dolib.a nvidia-settings/src/out/libXNVCtrl.a
|
||||
strip-lto-bytecode
|
||||
|
||||
insinto /usr/include/NVCtrl
|
||||
doins nvidia-settings/src/libXNVCtrl/NVCtrl{Lib,}.h
|
||||
fi
|
||||
|
||||
use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig install
|
||||
|
||||
# mimic nvidia-installer by reading .manifest to install files
|
||||
# 0:file 1:perms 2:type 3+:subtype/arguments -:module
|
||||
local m into
|
||||
while IFS=' ' read -ra m; do
|
||||
! [[ ${#m[@]} -ge 2 && ${m[-1]} =~ MODULE: ]] ||
|
||||
[[ " ${m[0]##*/}" =~ ^(\ ${skip_files[*]/%/.*|\\} )$ ]] ||
|
||||
[[ " ${m[2]}" =~ ^(\ ${skip_types[*]/%/|\\} )$ ]] ||
|
||||
has ${m[-1]#MODULE:} "${skip_modules[@]}" && continue
|
||||
|
||||
case ${m[2]} in
|
||||
MANPAGE)
|
||||
gzip -dc ${m[0]} | newman - ${m[0]%.gz}
|
||||
pipestatus || die
|
||||
continue
|
||||
;;
|
||||
GBM_BACKEND_LIB_SYMLINK) m[4]=../${m[4]};; # missing ../
|
||||
VDPAU_SYMLINK) m[4]=vdpau/; m[5]=${m[5]#vdpau/};; # .so to vdpau/
|
||||
esac
|
||||
|
||||
if [[ -v 'paths[${m[2]}]' ]]; then
|
||||
into=${paths[${m[2]}]}
|
||||
elif [[ ${m[2]} == EXPLICIT_PATH ]]; then
|
||||
into=${m[3]}
|
||||
elif [[ ${m[2]} == *_BINARY ]]; then
|
||||
into=/usr/bin
|
||||
elif [[ ${m[3]} == COMPAT32 ]]; then
|
||||
use abi_x86_32 || continue
|
||||
into=/usr/${libdir32}
|
||||
elif [[ ${m[2]} == *_@(LIB|SYMLINK) ]]; then
|
||||
into=/usr/${libdir}
|
||||
else
|
||||
die "No known installation path for ${m[0]}"
|
||||
fi
|
||||
[[ ${m[3]: -2} == ?/ ]] && into+=/${m[3]%/}
|
||||
[[ ${m[4]: -2} == ?/ ]] && into+=/${m[4]%/}
|
||||
|
||||
if [[ ${m[2]} =~ _SYMLINK$ ]]; then
|
||||
[[ ${m[4]: -1} == / ]] && m[4]=${m[5]}
|
||||
dosym ${m[4]} ${into}/${m[0]}
|
||||
continue
|
||||
fi
|
||||
# avoid portage warning due to missing soname links in manifest
|
||||
[[ ${m[0]} =~ ^libnvidia-ngx.so ]] &&
|
||||
dosym ${m[0]} ${into}/${m[0]%.so*}.so.1
|
||||
|
||||
printf -v m[1] %o $((m[1] | 0200)) # 444->644
|
||||
insopts -m${m[1]}
|
||||
insinto ${into}
|
||||
doins ${m[0]}
|
||||
done < .manifest || die
|
||||
insopts -m0644 # reset
|
||||
|
||||
# MODULE:installer non-skipped extras
|
||||
: "$(systemd_get_sleepdir)"
|
||||
exeinto "${_#"${EPREFIX}"}"
|
||||
doexe systemd/system-sleep/nvidia
|
||||
dobin systemd/nvidia-sleep.sh
|
||||
systemd_dounit systemd/system/nvidia-{hibernate,resume,suspend,suspend-then-hibernate}.service
|
||||
|
||||
dobin nvidia-bug-report.sh
|
||||
|
||||
insinto /usr/share/nvidia/files.d
|
||||
doins sandboxutils-filelist.json
|
||||
|
||||
# MODULE:powerd extras
|
||||
if use powerd; then
|
||||
newinitd "${FILESDIR}"/nvidia-powerd.initd nvidia-powerd #923117
|
||||
systemd_dounit systemd/system/nvidia-powerd.service
|
||||
|
||||
insinto /usr/share/dbus-1/system.d
|
||||
doins nvidia-dbus.conf
|
||||
fi
|
||||
|
||||
# enabling is needed for sleep to work properly and little reason not to do
|
||||
# it unconditionally for a better user experience
|
||||
: "$(systemd_get_systemunitdir)"
|
||||
local unitdir=${_#"${EPREFIX}"}
|
||||
# not using relative symlinks to match systemd's own links
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-hibernate.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-resume.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-suspend.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-resume.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-suspend-then-hibernate.service
|
||||
dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-resume.service
|
||||
# also add a custom elogind hook to do the equivalent of the above
|
||||
exeinto /usr/lib/elogind/system-sleep
|
||||
newexe "${FILESDIR}"/system-sleep.elogind nvidia
|
||||
# <elogind-255.5 used a different path (bug #939216), keep a compat symlink
|
||||
# TODO: cleanup after 255.5 been stable for a few months
|
||||
dosym {/usr/lib,/"${libdir}"}/elogind/system-sleep/nvidia
|
||||
|
||||
# needed with >=systemd-256 or may fail to resume with some setups
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072722
|
||||
insinto "${unitdir}"/systemd-homed.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_HOME_LOCK_FREEZE_SESSION=false
|
||||
EOF
|
||||
insinto "${unitdir}"/systemd-suspend.service.d
|
||||
newins - 10-nvidia.conf <<-EOF
|
||||
[Service]
|
||||
Environment=SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false
|
||||
EOF
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hibernate}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,hybrid-sleep}.service.d/10-nvidia.conf
|
||||
dosym -r "${unitdir}"/systemd-{suspend,suspend-then-hibernate}.service.d/10-nvidia.conf
|
||||
|
||||
# symlink non-versioned so nvidia-settings can use it even if misdetected
|
||||
dosym nvidia-application-profiles-${PV}-key-documentation \
|
||||
${paths[APPLICATION_PROFILE]}/nvidia-application-profiles-key-documentation
|
||||
|
||||
# don't attempt to strip firmware files (silences errors)
|
||||
dostrip -x ${paths[FIRMWARE]}
|
||||
|
||||
# sandbox issues with /dev/nvidiactl and others (bug #904292,#921578)
|
||||
# are widespread and sometime affect revdeps of packages built with
|
||||
# USE=opencl/cuda making it hard to manage in ebuilds (minimal set,
|
||||
# ebuilds should handle manually if need others or addwrite)
|
||||
insinto /etc/sandbox.d
|
||||
newins - 20nvidia <<<'SANDBOX_PREDICT="/dev/nvidiactl:/dev/nvidia-caps:/dev/char"'
|
||||
|
||||
# dracut does not use /etc/modprobe.d if hostonly=no, but want to make sure
|
||||
# our settings are used for bug 932781#c8 and nouveau blacklist if either
|
||||
# modules are included (however, just best-effort without initramfs regen)
|
||||
if use modules; then
|
||||
echo "install_items+=\" ${EPREFIX}/etc/modprobe.d/nvidia.conf \"" >> \
|
||||
"${ED}"/usr/lib/dracut/dracut.conf.d/10-${PN}.conf || die
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
has_version "${CATEGORY}/${PN}[kernel-open]" && NV_HAD_KERNEL_OPEN=
|
||||
has_version "${CATEGORY}/${PN}[wayland]" && NV_HAD_WAYLAND=
|
||||
|
||||
use modules || return
|
||||
|
||||
# set video group id based on live system (bug #491414)
|
||||
local g=$(egetent group video | cut -d: -f3)
|
||||
[[ ${g} =~ ^[0-9]+$ ]] || die "Failed to determine video group id (got '${g}')"
|
||||
sed -i "s/@VIDEOGID@/${g}/" "${ED}"/etc/modprobe.d/nvidia.conf || die
|
||||
|
||||
# try to find driver mismatches using temporary supported-gpus.json
|
||||
for g in $(grep -l 0x10de /sys/bus/pci/devices/*/vendor 2>/dev/null); do
|
||||
g=$(grep -io "\"devid\":\"$(<${g%vendor}device)\"[^}]*branch\":\"[0-9]*" \
|
||||
"${ED}"/usr/share/nvidia/supported-gpus.json 2>/dev/null)
|
||||
if [[ ${g} ]]; then
|
||||
g=$((${g##*\"}+1))
|
||||
if ver_test -ge ${g}; then
|
||||
NV_LEGACY_MASK=">=${CATEGORY}/${PN}-${g}"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm "${ED}"/usr/share/nvidia/supported-gpus.json || die
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
linux-mod-r1_pkg_postinst
|
||||
|
||||
readme.gentoo_print_elog
|
||||
|
||||
if [[ -r /proc/driver/nvidia/version &&
|
||||
$(</proc/driver/nvidia/version) != *" ${PV} "* ]]; then
|
||||
ewarn "Currently loaded NVIDIA modules do not match the newly installed"
|
||||
ewarn "libraries and may prevent launching GPU-accelerated applications."
|
||||
if use modules; then
|
||||
ewarn "Easiest way to fix this is normally to reboot. If still run into issues"
|
||||
ewarn "(e.g. API mismatch messages in the \`dmesg\` output), please verify"
|
||||
ewarn "that the running kernel is ${KV_FULL} and that (if used) the"
|
||||
ewarn "initramfs does not include NVIDIA modules (or at least, not old ones)."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $(</proc/cmdline) == *slub_debug=[!-]* ]]; then
|
||||
ewarn "Detected that the current kernel command line is using 'slub_debug=',"
|
||||
ewarn "this may lead to system instability/freezes with this version of"
|
||||
ewarn "${PN}. Bug: https://bugs.gentoo.org/796329"
|
||||
fi
|
||||
|
||||
if [[ -v NV_LEGACY_MASK ]]; then
|
||||
ewarn
|
||||
ewarn "***WARNING***"
|
||||
ewarn
|
||||
ewarn "You are installing a version of ${PN} known not to work"
|
||||
ewarn "with a GPU of the current system. If unwanted, add the mask:"
|
||||
if [[ -d ${EROOT}/etc/portage/package.mask ]]; then
|
||||
ewarn " echo '${NV_LEGACY_MASK}' > ${EROOT}/etc/portage/package.mask/${PN}"
|
||||
else
|
||||
ewarn " echo '${NV_LEGACY_MASK}' >> ${EROOT}/etc/portage/package.mask"
|
||||
fi
|
||||
ewarn "...then downgrade to a legacy[1] branch if possible (not all old versions"
|
||||
ewarn "are available or fully functional, may need to consider nouveau[2])."
|
||||
ewarn "[1] https://www.nvidia.com/object/IO_32667.html"
|
||||
ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau"
|
||||
fi
|
||||
|
||||
if use kernel-open && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then
|
||||
ewarn
|
||||
ewarn "Open source variant of ${PN} was selected, note that it requires"
|
||||
ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues."
|
||||
ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html"
|
||||
fi
|
||||
|
||||
if use wayland && use modules && [[ ! -v NV_HAD_WAYLAND ]]; then
|
||||
elog
|
||||
elog "Note that with USE=wayland, nvidia-drm.modeset=1 will be enabled"
|
||||
elog "in '${EROOT}/etc/modprobe.d/nvidia.conf'. *If* experience issues,"
|
||||
elog "either disable wayland or edit nvidia.conf."
|
||||
fi
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user