From 3cf7c3ef441822c889356fd1812ebf2944a59851 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Tue, 25 Aug 2020 10:45:55 +0100 Subject: gentoo resync : 25.08.2020 --- x11-drivers/nvidia-drivers/Manifest | 27 +- .../nvidia-drivers-340.108-r1.ebuild | 500 +++++++++++++++++ .../nvidia-drivers/nvidia-drivers-340.108.ebuild | 501 ----------------- .../nvidia-drivers-390.132-r1.ebuild | 563 ------------------- .../nvidia-drivers-390.132-r2.ebuild | 585 -------------------- .../nvidia-drivers-390.132-r4.ebuild | 585 ++++++++++++++++++++ .../nvidia-drivers-390.138-r1.ebuild | 586 ++++++++++++++++++++ .../nvidia-drivers/nvidia-drivers-390.138.ebuild | 586 -------------------- .../nvidia-drivers/nvidia-drivers-430.64-r5.ebuild | 571 -------------------- .../nvidia-drivers/nvidia-drivers-435.21-r5.ebuild | 589 -------------------- .../nvidia-drivers/nvidia-drivers-435.21-r6.ebuild | 589 ++++++++++++++++++++ .../nvidia-drivers-440.100-r1.ebuild | 592 -------------------- .../nvidia-drivers-440.100-r2.ebuild | 592 ++++++++++++++++++++ .../nvidia-drivers/nvidia-drivers-450.51-r1.ebuild | 593 -------------------- .../nvidia-drivers/nvidia-drivers-450.57-r1.ebuild | 595 +++++++++++++++++++++ .../nvidia-drivers/nvidia-drivers-450.66.ebuild | 595 +++++++++++++++++++++ 16 files changed, 4055 insertions(+), 4594 deletions(-) create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-340.108-r1.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-340.108.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r1.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r2.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r4.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-390.138-r1.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-390.138.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-430.64-r5.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r5.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r6.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r2.ebuild delete mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-450.51-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-450.57-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-450.66.ebuild (limited to 'x11-drivers/nvidia-drivers') diff --git a/x11-drivers/nvidia-drivers/Manifest b/x11-drivers/nvidia-drivers/Manifest index 9231e7a6f894..fb505cf5a6e5 100644 --- a/x11-drivers/nvidia-drivers/Manifest +++ b/x11-drivers/nvidia-drivers/Manifest @@ -21,10 +21,10 @@ DIST NVIDIA-FreeBSD-x86-390.138.tar.gz 65940848 BLAKE2B ea40a0289012425ee1fa1c74 DIST NVIDIA-FreeBSD-x86_64-340.108.tar.gz 61500286 BLAKE2B 6997395199b5105249c93c8b6b36d1f29cc7663f21d3a2ad4479f7a46822524c8a00bd2b310d7ee830208cf36f911c5f090d899de34801d5d2487a61370bb7da SHA512 70d5ae62fa0a018d4bb84f285c0850a0b9f760212d5468feac312c575cc018fac8c2686e70c3ef594337b6afaada3d4392126b63a517b6032d54d9af8b7533f3 DIST NVIDIA-FreeBSD-x86_64-390.132.tar.gz 64206643 BLAKE2B a95bc5bbb99c89b817692167946deddff1c131c54165e5958e0600432c59fa7ce06cfc6037f4bcf090232c8c25ae36e370e77594ca9a057565adc8e8ac231e72 SHA512 120bf1c5784ef2c74047780383ce5ba8997dc588bab7a5178afeca99fb3829f7b99651238348c9098d023eee1c7f94b5321e6fb4c6e542ece2af705fe33da863 DIST NVIDIA-FreeBSD-x86_64-390.138.tar.gz 65280213 BLAKE2B 36d5651ceaf90cefcf9e844f8f5810ac42bebca2ca47318b27606c1401d8f343fc7b2619a5405dee9d5d64ec98379b0582f6d5fe5dd4df1269ba48332a6a5ec2 SHA512 fb61e19010826e5c2e403ecc12e19ee28517682599100804d74be92a9e3c6688b51dafa6c6703a5a0d080b0ca16495792fec3badf9cab959321cc401e72520a3 -DIST NVIDIA-FreeBSD-x86_64-430.64.tar.gz 62723909 BLAKE2B f3e48bc38a3ec051a75c08845b45c0ba6b80bca31d7efd85f115e6244f9cdff70c68466f9139f69c645207d4cf61103432d75c943d3f3508811d405fba55d1b6 SHA512 498a3007c065d8b17f94024f6ca80ffbe3dca253fdb73c4a08babede821e52f8466523b402af350e961f153c5f732eb04160937fabef1f1be3846a0a4743b310 DIST NVIDIA-FreeBSD-x86_64-435.21.tar.gz 64153630 BLAKE2B fee655cc843c004ac0c1ec85b9417292016a013136e04ad047d2513edbdc7c732561d6bcc4603c658905972dce6618de49d4d6ac583e84fdf212cf45397b48c1 SHA512 2c160c06ca58e3009deb1ba4a4a28d39419e251ced3bfa9a442942f9cce17003d67e8a8bfa23036d3916cc0e66f4bff0fbedaae73db6f10b995235a56d7eba7c DIST NVIDIA-FreeBSD-x86_64-440.100.tar.gz 82523267 BLAKE2B 9d8eddcf3a58787a03fab207c197d722ff047f8bc840ea41e8d38815fbfab9e54759b9fbeaa26e3d147f54cb4a510eec421708d3bbb21197922f4dc175ed6df5 SHA512 96f57e1f308f0e5f00ef09a128e91a68ac55033893000e84cf4ff1a910a88798743c911b3effcc26c3f27ae224b733d8c2f87e9ec0596149f65ad7bcd71edbc5 -DIST NVIDIA-FreeBSD-x86_64-450.51.tar.gz 82784766 BLAKE2B fbd0e71919b16db5957539c5b44a9d974e01d6ab42d5c292aaa4a4e06125d982e37607e28124ae63436eb1d3fcb1b7eb9e1e258b1644310d00d4eebf9fe17ae7 SHA512 0cba373609787e2cb341232a619b3d95bc6c4da8db27633f717ba5654e7717005089d6c2ef4801ff117e6f35f8fa522b600864cf440578cad9397b7f839e16fe +DIST NVIDIA-FreeBSD-x86_64-450.57.tar.gz 82770857 BLAKE2B 1e43f98bac3cc7bbb3a2a7cb45ace7914497840a24ae541f0c2a180aae3c4d97238505fbe29b1605e0ba7e95ba7ff88a60a5c74cd73718b6496ac4be52df5643 SHA512 f0f23b03617b2a33562dadb6e0ae57b1156413a89d5a93b1269397fbb0ab91b6a181ff366515611230d04a4152a685e0bc68cde4b1d95f1d3b6b71b16a6a4146 +DIST NVIDIA-FreeBSD-x86_64-450.66.tar.gz 82963662 BLAKE2B 8b0e0993600b4b9b5fa1648444f677c5a9f27523cdd8e3edbd67d7cecf67a7bcc2b975dface68dfa16e7d31f2219b0283f9313f4bd37023344bb8c4515a85c0f SHA512 744e912d7433a8db2af27f91854361054cc0085067951c03278a0ca1c6daacc7f9e34ed6db5bd87d78932c0836b28e77a79f306d6b5d3b43c2d21288774fb9fe DIST NVIDIA-Linux-armv7l-gnueabihf-390.132.run 29084574 BLAKE2B 4727627de610928f0808c0213c9d359c5566900972ab9fbd3d0c58b36c0a1331799ceea22b4defdcfb81c3132f6124d8a6357de8124921eef608938afdc1380d SHA512 2f78a722ec31ceda86afc1831cb42d0eab8f8698b94c7fbc8569a6d34693b50e74453d5aaf3c0180f1fc2511b8c237ac635aceb24bcbea468f2a092cb44f98ee DIST NVIDIA-Linux-armv7l-gnueabihf-390.138.run 28540622 BLAKE2B 342852dd6fa371f86d19547d73edef582fe3f04cf4f6e9ec247767951180671ba46f3ed2ee7bab11b0cf2f8bb1eb846b1d7481d318789c14ce79b54fefe0f830 SHA512 e04b8aca202c1df305f7b67ec372322494fa7b77f27cbf04f240527dcac0ce3ffa5e0e9df36b52045ac13fbc2f84b5033784040884ed19072f66f41385d11b97 DIST NVIDIA-Linux-x86-340.108.run 38902892 BLAKE2B 67e3c336a1f3e953e0fbccf96177bef7e0674c32243856660e9203e7c5fd4ada12a5fa784cebc2150d2133bdb16c19109f9fc5c04d4a138bd519def80c43164c SHA512 cf122c4cf724737cc647bc3d115e853bfe17027d5070c5ed68caf78e0dab718e7345bf824d0e8b33489bf299957dab8ff249cb0f837c3d17b2bb60887afe2818 @@ -33,23 +33,22 @@ DIST NVIDIA-Linux-x86-390.138.run 49091672 BLAKE2B 465f025041aafdb03699babdb9738 DIST NVIDIA-Linux-x86_64-340.108.run 70165522 BLAKE2B 890d00ff2d1d1a602d7ce65e62d5c3fdb5d9096b61dbfa41e3348260e0c0cc068f92b32ee28a48404376e7a311e12ad1535c68d89e76a956ecabc4e452030f15 SHA512 7941b5496b2c17b06320d676a51ec2866c08a3d3dce9d7cf20464bc35ccb4616c398eb247d1f1e5039386aa73bb610a36937252ce4ad47959437938db8cf3c29 DIST NVIDIA-Linux-x86_64-390.132.run 82900057 BLAKE2B e94cc2493701e34c4dd2f0fc4f89501d6b1d3e44abf80af2eff20c19a22c1160ce322c25d2b5b13e212bf48fb41f94d3c1bb6f9251302e6c8facb687d807a3dc SHA512 bad3453472e8af9ef0681b82db75f9c53816a7d57ff2bf1facd2ea010e757bf7fd4fb907317471934a0cb56510eaf2a90503a3a86ec80b76afdacfa2b9ee6c13 DIST NVIDIA-Linux-x86_64-390.138.run 83780873 BLAKE2B 5e6a9d77dd2b9de17d923198105a9227ffe2adbc1ed7c9dd5ef3cc810358f71ae47ce9615cbe04f36090f052082a2066772505fd763cbfdbce272f0fb7c25dc7 SHA512 2984fb8f5de598fd3031ebd928942ceb09fd26ae9e61b40b2d348e3174e172a932a1b2a5c2e5534f299b883ade323932be4fdcd26d6f7235a17f6f5a04fa792c -DIST NVIDIA-Linux-x86_64-430.64.run 111331457 BLAKE2B 59d8b739bc472810eb896ef620735b6f21ccfde653e08f248797720d21d75580dcea2448f17a5d1c32be393595d9dfedc48c81e96a8ea422c7f0d9eadf36ae1c SHA512 552bf1e8c4725258c07cbb0e000d0e407fba1b51207903f2b77c0d9fd8b15b629f791b20239f75a1aec85aa03cbcca90a1cb633090919cf0599054231f715250 DIST NVIDIA-Linux-x86_64-435.21.run 144387574 BLAKE2B e9afd6335182a28f5136dbef55195a2f2d8f768376ebc148190a0a82470a34d008ce04170ffc1aab36585605910c1300567a90443b5f58cb46ec3bff6ab9409c SHA512 e83b6dff80434971c0b254815945d485a45c978b8a19994244f50a463658863948b2eac8bc62d667bb10c23f41cf1c3521c409d23ac2ab6a0c0cd094a6e20270 DIST NVIDIA-Linux-x86_64-440.100.run 144653408 BLAKE2B a62e6324f5ac6033c1c4b59486c86a6d4f81b240e5a7ddf9f861f9cfec4daedbe08ef3af6556c1cd4260a5a6fcd1b8bfed886ae617677d87c3a900d0e313267b SHA512 274b3a8e4c801b67a3f71f11da93134bc1a16a48bc85a6bf63265c00bb3fd8caf935dd23c85c40285a162e83c146bd5e34bb0b1d74fc34e7122bfc4c3a8c81e7 -DIST NVIDIA-Linux-x86_64-450.51.run 140812490 BLAKE2B 927820fb30e0aac7d022acc82c969503e63be66045d7f10eee0af02b065251ecc4a0c95caef30cf0c2bb2e94de02f59b4469b26eaa801e67d6340184139b82ed SHA512 ddb63f28ddbfa9e5c1bacbd3a5e8d529072c98b09a54c745467ed3ce87e8d5ffef80e41848bb473104147554dbac7dd1d1283821ceef6de05d3a2f8538e2ca33 +DIST NVIDIA-Linux-x86_64-450.57.run 142648373 BLAKE2B fedc6d8a87a990be6485f5180efa2e0654025ff6048d9e7cbeb84b56675d11b5acaa65385d1f17d23b10b9cb8e336822fa0110747ead86b0b784366e5b41e421 SHA512 2c57f4752239a028f04a7bdc62e363600b67c8d83b5bfeb2649b41d2f5776c56780a46ced93ee9c22f22a0d820372d2ab0bfdde5044131eafe7f5f2df489fa81 +DIST NVIDIA-Linux-x86_64-450.66.run 141068918 BLAKE2B de8f76eade30bcd040d4a022edb96ab00be00190ed2a86b96584a4b147a2da935f8e83411f01d03f747c875a652f8e6f843bf273f905f1e8fa334e263bd941f3 SHA512 d4408cf2274602b7ee28f1056b8875468e8b9dae9f9e2dd8fe2dc505cbcdbb76eff2e2182252b8d5182008046ed5ca33c2fdc15d46e4c854b7ca46325724bc67 DIST nvidia-settings-340.108.tar.bz2 1550018 BLAKE2B 1acdfbcb0e7c02af33f5e86b9b140e356057efd9825fbc130971884ae76dd23765c2a0dbd00e1ac47bbff882f6d004e0a10c0195e6c6dce1408c72a00e0e6322 SHA512 d8b6dcbd3803af4da22cfffc039e1c050313f90b7ee86106a784863f7c203de9137ac2fee12aa800498cc56081dbe7e3aaa943c162037477ce97a07a237db41a DIST nvidia-settings-390.132.tar.bz2 1109373 BLAKE2B cec60b7409f6d352afe3845a2ec65db96183d1fe009340fa3601166718f21b43bb08b63c5eaaaf4c266c7b16e7d374f6ecc00691763d5ae1b6902c8002da5bea SHA512 12553edc1a1ba9c3f578e0e921b25ec7114cbc80a55621cbd612a1bd85c9a518e221b30809058e4df5da6ae75ea7a1cd5c3d9c8f02a0898bc8c08ac9c22ccee3 DIST nvidia-settings-390.138.tar.bz2 1109175 BLAKE2B 4171c12de0a6fb97b655567d4cc8b4e6fb92e340aae6d65f0a0583db159478fb11f8d5c4cf0fa5ef87098ec1582ccb896fec9f2bf81e4c748b8ff5ee5d73af6b SHA512 6c54ff039840098c23f2091b4c33ab2b712ff90c16829c568bc39c9375cb2f4fb677bb5ab90efcf2034b15a1d93d13f1fbb40dde1d90092073af7d9f3c16de97 -DIST nvidia-settings-430.64.tar.bz2 1130931 BLAKE2B 032bbe8cdb7ec3b353e8f8ef33d0e86f4b4f3ef24b38de669e09173519149efe0aa55d5d30d0a0c6d2b8398d5ce38bbe4176df735501725475df4137d533e57d SHA512 fa82699610aa0f4709101e1a4e9e8147b133c85afb20ecb4506bfccf233e4f42dac26e53e2966f2137eb29190b5e4173b267167f5341b516fa1169785946e240 DIST nvidia-settings-435.21.tar.bz2 1131222 BLAKE2B 855f5c7667f4a5ec0f917fbb017d70ec6ee5e768f7087e77e54a66dea852c471bd1810a2163fb33204e5f381998a27a4254e0a5d2c73e2b6b624813ff8294f24 SHA512 8b408cc70118df3a138a99fe7fc14f6370d500b8ae26888b27b07de22f6fc6eebd65bd437d83ee82e18a1d8ee4cceec601c414b1947302ca808fff48165f31bb DIST nvidia-settings-440.100.tar.bz2 1129171 BLAKE2B bc8b28ae5743df50177c51a9269ef2b5d11c69dd9f30441179d81e42e7f77c54f327c87a7a5c6a410540bed35eb1ba0cc289b5b98a046deda376dccb29a8206b SHA512 4fe8fbbca1f805652235d898e8451ba89263c81f53e78da471b13ba0668d0d528d04d098b276df6fd2bf7ea7a219a3aa3c4d0bada0a483767c00c0654a5a8818 -DIST nvidia-settings-450.51.tar.bz2 1056993 BLAKE2B a410593a3217023103c2c783c7a2ca0dee1c6a2af8dec1f0398159aa8192b307e4d27690b9987e879e863e7667b2d046f6128ca1634750863b58d4727b4d2a12 SHA512 6fd455c1910a3ff6105facc06ef65e29f88a0133794f27bf36b999cd513f5639a2c24c53bd5bca308730e6c66f10eda25d191bb815eee53d39b5632a1ce466e1 -EBUILD nvidia-drivers-340.108.ebuild 13329 BLAKE2B 2a26ddac00f654738256aa8acdeac27cd5978adbf168f15cc4711b43ee206e684feb84ab09bab258e32f1a2117ea6b29834d48dc236403774c43d981305a91d6 SHA512 3e1e4f0795fbd20b887cbc3a641aa32456293160ff8056f1c63598d3a1e5321931d64ba02550bae2350aa3ccb84c1471b4e0ede2504ec945995b5e0ab9df14f0 -EBUILD nvidia-drivers-390.132-r1.ebuild 15145 BLAKE2B 25873b68d43b5d1c050ffb236615b85a6a79856ddb00c479a31dc3ed0974cf29f8a85102ad2a1e9045481c2216c6406e0621494898ee9264ac30938c0fe9fb6b SHA512 c3ba6d63fa1b439073539aa71ebd5a58deb4c0a43aa4f7bfb5b08fb83842d9ea27e764ff70f90ebed268a78d62bcbfbd773b546878b7a04c685c841202b11525 -EBUILD nvidia-drivers-390.132-r2.ebuild 15583 BLAKE2B f4a4834993024371a6851b14bb2b2e86e2792dd27bfdd709fd2407ae8a2ad0364e6381c3970bb61fd2f0dd3573d9558c496ae4a33f332a344edf1f90b55feb9d SHA512 640cc2fb46fbf8dcd149d10bec95d487533a38fa3f86e6f46477f98fac7b49c7385029f9561c22efbad579568a0d4684b4dd8fdc03f43140714bc5f8cfba309b -EBUILD nvidia-drivers-390.138.ebuild 15599 BLAKE2B f62d4d5fd9187dd74dc99199fc1f2e59ab9879fe1dd77e2a63cae12421eb6f384238c6debf362d8ae7eb550ce76f83d5da3941fe5c4365b4b6032388e5c39147 SHA512 2fc61ef9865e29d0ddcbaf9b3c2714a8ae6d254e432ba6aa85f766131367f31521a7fe934113e953e47791a76a0845bcd2ea745022ab7943f18ac3561476cc49 -EBUILD nvidia-drivers-430.64-r5.ebuild 15158 BLAKE2B 87140ae4cfdf096ea83453b79ece53a8ff93981f498c4bf0f22aa3da84058464e28a2e42fa3782abca1d849286994c2fccef4741c46cc90448d46e860528191f SHA512 d0928d336c2407f65aab299062cc173a9b9e9cf13d1843d316266da5013d6465018e751735b83a1e5c58617c72d5ef18663e1d064b632ab1e8581555c899eb87 -EBUILD nvidia-drivers-435.21-r5.ebuild 15517 BLAKE2B 944fba0f0be2e781bf90c1a9cdfe9459c9d2e453505f2a7ea1fa2ea463fb2e492c6386fdcc11d079bd1e35ab05445dbc87f15ccebe22df3324201c111daf28aa SHA512 a2fc558c2cdfae2559740cc185760a74d5864348ed2a90acb8bbb92a19f90637ab9af3d353ce42f7dff11d883d03a15f233b67cf3e7f841c9d0196125a6e7a63 -EBUILD nvidia-drivers-440.100-r1.ebuild 15459 BLAKE2B da60a629b5c22765f17576e9ffa734ae603dd564ca14c140bd6778223b2be8571167930bed4732881075e1abe5ed60775f50b22de756557ec946a6e321627c5c SHA512 646efdea5d2e081dfecb69bdc4f8e429ed7ba22b919dab39fcdaca69e50ee739ed39f1be557a69ebfb125cd339b9050648e5fd431f31207328523f44bd01d12a -EBUILD nvidia-drivers-450.51-r1.ebuild 15486 BLAKE2B 6325777d1d7e693f4041ea8157c74408c431c5fac5b42d75254559f9fe50171ded929846e32310ae4a4382bd2a32e7a26dd15c85f80055ba5d61f19481f5b114 SHA512 e6ebae64c8d6d50d01da14bc0d8c329a35261c567fdc730375a3a2ff67486689ae756ff4221e3df6352d96bba3e0c540affa72b90d3380a1d7dacd14c50ca07e +DIST nvidia-settings-450.57.tar.bz2 1057133 BLAKE2B 123b804b988e758a2ab4afd476b4baffd1cbc43893c9df535f93a933f63ad43dbb450e1aacf70bee565b2e223362ac17aafa48ad012053f999b6d45547a9f0b8 SHA512 996c7759ce900984447956f08b17f979ae434a65ec21be382d08c63a227e3f7da600d906cff3370b7a0e41f6fb0b88e54b43a26faed264a3e804fd7721b4491d +DIST nvidia-settings-450.66.tar.bz2 1057263 BLAKE2B 8ec77f96bafec823b1e668cb695dfbe84ec31aa86310b0584bb416299dcf378324c97c4924112a89015bbbdeefb3c8556fc6fb5d76f973c29ce80766241af4db SHA512 82d20b479e5d11862b304dfa0b15e724b1f63692765237cb3d0fc4e5cd6f6d954a36f2c6872d0ccb2d29cfcd31b0c207f1172112a623b79a0e49b276223c7785 +EBUILD nvidia-drivers-340.108-r1.ebuild 13442 BLAKE2B 6ea453241a1c819d7d4896d0b311c6a387cd92660240199253129ccacef3f2c79c23bed3098ab118cc5c4e9945d1efc44edb064731e0995a394fa9d58b100feb SHA512 2267b7142cf295a9f2b2bfccf92635944a929184b1f22ff3706e9836c4fce9312a8b8fd71e3a38b2c91662aa7bb36b1e445ffa0b3cac4a1718a95531964571c0 +EBUILD nvidia-drivers-390.132-r4.ebuild 15527 BLAKE2B e9ff9f103be3f0c2837afe9e9348246f7b6c52b1e0b00e0569bf07389ae174783610c7441da3a13421fc25e0111c0249852b705be5533bb6d2d728e514cb7dc2 SHA512 6c37c8858958c7497c679ee50c1e400fedc2506a215e9976580a67cb006bbd3c37f011f856480fa47a81b75dcee59da026567b9a827fe18f6e49a89c7789c6ff +EBUILD nvidia-drivers-390.138-r1.ebuild 15543 BLAKE2B 6c2459cd9777ce82ed37e07a5ffbb68101aebf19d306789535b28127d19a47d657192915973f29bc8e997ca2dbca5fb2e483e7fa5d0c3e7651d2ff0b54d7864a SHA512 054e447a9279e2ae0f3e9c1cc2f1e0553c9c1b749673476ce2bbf0f4a1b4f4d4d99c8e0ff4feabf97d8c1107f2e3758561494a344afd43d3ea9fead7c2d30344 +EBUILD nvidia-drivers-435.21-r6.ebuild 15461 BLAKE2B 05fc31038a6fb533807874b3ff2ad4bd34099fce41b646efd6bf6b21d33f8234523306ff1e5b424383d9f991ce4631959424a1d7f4981f315da488f4ba5f066a SHA512 7655a457a4e66d5a73ec2151a8d661d09fb34f1bc65dc12966d63934fcee53c7a6e4747f079a59742ec5aa2fb66b93acd92c621e6943072a4757f90547c56cfb +EBUILD nvidia-drivers-440.100-r2.ebuild 15403 BLAKE2B 8a749bc5a03af22d598e85b2e157ff632e225755b8a68cf24bc165bf7d10c2797b157a6322be2084a238f702fba2080235e1647da1fbef230c2684f099f9777f SHA512 7cf465b7af173eb6ce9c6c0c4ba122d3f0b3e3382e40b5b6eaf7f54d91c09bf5a3a2cedd58827ce0680f23c36293778d3e65b1836d75cd7d642a0daba66d7b36 +EBUILD nvidia-drivers-450.57-r1.ebuild 15453 BLAKE2B a2f77e986e6525636c5c9c6ff7303e4e9b770ec94cb090c4fedb99fea55f599d8729f575604e3e1e39a76cd28e621ee6431f8cc6f1120de26b858e4422747799 SHA512 aab46e2a56934becc8cff487f4ad795dc72b5b523387820a70db48ee166f04b351094c5630c835e00019afee99ec36664e80ecb8d5789699f01074019a5c4fd9 +EBUILD nvidia-drivers-450.66.ebuild 15454 BLAKE2B 66b0b9416f8556ed5bf0bc1cd3e808bd9e64600100957fc2aaec7e09360bf6f8e7781b39518f8db894daa5a8a6bfffe38b64946a2377961b686d1f1d23c34a6a SHA512 f64216059a2916a2570f126e4877e8317c95c81f0e2f8cbec2cfa8031394545d4e21c8d8646b73184f04347c79fc92f5637ba2ecdcdca6a0cd8c701818ffcde7 MISC metadata.xml 1284 BLAKE2B 0e13b2eae77fee75a4757da7ae80540093962b6e8ccc3b0950caa3a0957ff79c6b08c80ceeec8ffcde47b293c258159f8722a13334fe06868589a18802ec0434 SHA512 0a3c6679f7fc23bf87340145f3a97945c9e8c7fc9c8721fa4643fb662347af312b4b927635901e95acb9349a7b191ef088ff0e51bbbc0cbd333603bb60984020 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-340.108-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-340.108-r1.ebuild new file mode 100644 index 000000000000..dc1b42d6f305 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-340.108-r1.ebuild @@ -0,0 +1,500 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ + nvidia-driver portability toolchain-funcs unpacker udev + +NV_URI="https://us.download.nvidia.com/XFree86/" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" + +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) + tools? ( + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 + ) +" + +EMULTILIB_PKG="true" +IUSE="driver multilib kernel_FreeBSD kernel_linux static-libs +tools +X" +KEYWORDS="-* amd64 x86" +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/${PV%.*}" + +COMMON=" + app-eselect/eselect-opencl + kernel_linux? ( + >=sys-libs/glibc-2.6.1 + acct-group/video + ) + tools? ( + >=x11-libs/gtk+-2.4:2 + dev-libs/atk + dev-libs/glib:2 + dev-libs/jansson + x11-libs/gdk-pixbuf[X] + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXv + x11-libs/pango[X] + ) + X? ( + >=app-eselect/eselect-opengl-1.0.9 + ) +" +DEPEND=" + ${COMMON} + app-arch/xz-utils + kernel_linux? ( virtual/linux-sources ) +" +RDEPEND=" + ${COMMON} + tools? ( !media-video/nvidia-settings ) + X? ( + =x11-libs/libvdpau-0.3-r1 + sys-libs/zlib[${MULTILIB_USEDEP}] + multilib? ( + >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + ) + ) +" +REQUIRED_USE="tools? ( X )" +QA_PREBUILT="opt/* usr/lib*" +S=${WORKDIR}/ +NV_KV_MAX_PLUS="5.5" +CONFIG_CHECK=" + !DEBUG_MUTEXES + ~!LOCKDEP + ~DRM + ~DRM_KMS_HELPER + ~SYSVIPC +" + +pkg_pretend() { + use x86 && CONFIG_CHECK+=" ~HIGHMEM" + nvidia-driver_check +} + +pkg_setup() { + use x86 && CONFIG_CHECK+=" ~HIGHMEM" + nvidia-driver_check + + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use driver && use kernel_linux; then + MODULE_NAMES="nvidia(video:${S}/kernel)" + + # This needs to run after MODULE_NAMES (so that the eclass checks + # whether the kernel supports loadable modules) but before BUILD_PARAMS + # is set (so that KV_DIR is populated). + linux-mod_pkg_setup + + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)" + + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + fi + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}" + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" + NV_DOC="${S}/doc" + NV_OBJ="${S}/obj" + NV_SRC="${S}/src" + NV_MAN="${S}/x11/man" + NV_X11="${S}/obj" + NV_SOVER=1 + elif use kernel_linux; then + NV_DOC="${S}" + NV_OBJ="${S}" + NV_SRC="${S}/kernel" + NV_MAN="${S}" + NV_X11="${S}" + NV_SOVER=${PV} + else + die "Could not determine proper NVIDIA package" + fi +} + +src_prepare() { + # Please add a brief description for every added patch + + if use driver && use kernel_linux; then + if kernel_is lt 2 6 9 ; then + eerror "You must build this against 2.6.9 or higher kernels." + fi + + # If greater than 2.6.5 use M= instead of SUBDIR= +# convert_to_m "${NV_SRC}"/Makefile.kbuild + fi + + local man_file + for man_file in "${NV_MAN}"/*1.gz; do + gunzip $man_file || die + done + + if use tools; then + cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die + sed -i \ + -e "s:@PV@:${PV}:g" \ + "${WORKDIR}"/nvidia-settings-fno-common.patch \ + || die + eapply "${WORKDIR}"/nvidia-settings-fno-common.patch + fi + + # Allow user patches so they can support RC kernels and whatever else + eapply_user +} + +src_compile() { + # This is already the default on Linux, as there's no toplevel Makefile, but + # on FreeBSD there's one and triggers the kernel module build, as we install + # it by itself, pass this. + + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use driver && use kernel_linux; then + BUILD_TARGETS=module linux-mod_src_compile + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl clean + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ + AR="$(tc-getAR)" \ + CC="$(tc-getCC)" \ + RANLIB="$(tc-getRANLIB)" \ + libXNVCtrl.a + emake -C "${S}"/nvidia-settings-${PV}/src \ + AR="$(tc-getAR)" \ + CC="$(tc-getCC)" \ + LD="$(tc-getCC)" \ + LIBDIR="$(get_libdir)" \ + NVML_ENABLED=0 \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + RANLIB="$(tc-getRANLIB)" \ + STRIP_CMD=true + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if its not /usr/lib +donvidia() { + # Full path to library minus SOVER + MY_LIB="$1" + + # SOVER to use + MY_SOVER="$2" + + # Where to install + MY_DEST="$3" + + if [[ -z "${MY_DEST}" ]]; then + MY_DEST="/usr/$(get_libdir)" + action="dolib.so" + else + exeinto ${MY_DEST} + action="doexe" + fi + + # Get just the library name + libname=$(basename $1) + + # Install the library with the correct SOVER + ${action} ${MY_LIB}.${MY_SOVER} || \ + die "failed to install ${libname}" + + # If SOVER wasn't 1, then we need to create a .1 symlink + if [[ "${MY_SOVER}" != "1" ]]; then + dosym ${libname}.${MY_SOVER} \ + ${MY_DEST}/${libname}.1 || \ + die "failed to create ${libname} symlink" + fi + + # Always create the symlink from the raw lib to the .1 + dosym ${libname}.1 \ + ${MY_DEST}/${libname} || \ + die "failed to create ${libname} symlink" +} + +src_install() { + if use driver && use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia "${NV_OBJ}"/libnvidia-cfg.so ${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia "${NV_OBJ}"/libnvidia-fbc.so ${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia "${NV_OBJ}"/libnvcuvid.so ${NV_SOVER} + donvidia "${NV_OBJ}"/libnvidia-encode.so ${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins "${NV_X11}"/nvidia_drv.so + + # Xorg GLX driver + donvidia "${NV_X11}"/libglx.so ${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins "${NV_OBJ}"/nvidia.icd + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe "${NV_OBJ}"/nvidia-xconfig + fi + + if use kernel_linux ; then + doexe "${NV_OBJ}"/nvidia-cuda-mps-control + doexe "${NV_OBJ}"/nvidia-cuda-mps-server + doexe "${NV_OBJ}"/nvidia-debugdump + doexe "${NV_OBJ}"/nvidia-persistenced + doexe "${NV_OBJ}"/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe "${NV_OBJ}"/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1 + doman nvidia-modprobe.1 + doman nvidia-persistenced.1 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/ \ + DESTDIR="${D}" \ + LIBDIR="${D}/usr/$(get_libdir)" \ + PREFIX=/usr \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + install + + if use static-libs; then + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a + + insinto /usr/include/NVCtrl + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h + fi + + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + + insinto /etc/nvidia + newins \ + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || \ + doicon "${NV_OBJ}"/nvidia-settings.png + + domenu "${FILESDIR}"/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + + fi + + dobin "${NV_OBJ}"/nvidia-bug-report.sh + + #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist + + if has_multilib_profile && use multilib ; then + local OABI=${ABI} + for ABI in $(multilib_get_enabled_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + # Documentation + if use kernel_FreeBSD; then + dodoc "${NV_DOC}"/README + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + else + # Docs + newdoc "${NV_DOC}"/README.txt README + dodoc "${NV_DOC}"/NVIDIA_Changelog + doman "${NV_MAN}"/nvidia-smi.1 + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1 + fi + + readme.gentoo_create_doc + + docinto html + dodoc -r "${NV_DOC}"/html/* +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local nv_libdir="${NV_OBJ}" + + if use kernel_linux && has_multilib_profile && \ + [[ ${ABI} == "x86" ]] ; then + nv_libdir="${NV_OBJ}"/32 + fi + + if use X; then + # The GLX libraries + donvidia "${nv_libdir}"/libEGL.so ${NV_SOVER} ${GL_ROOT} + donvidia "${nv_libdir}"/libGL.so ${NV_SOVER} ${GL_ROOT} + donvidia "${nv_libdir}"/libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT} + donvidia "${nv_libdir}"/libnvidia-eglcore.so ${NV_SOVER} + donvidia "${nv_libdir}"/libnvidia-glcore.so ${NV_SOVER} + donvidia "${nv_libdir}"/libnvidia-glsi.so ${NV_SOVER} + donvidia "${nv_libdir}"/libnvidia-ifr.so ${NV_SOVER} + if use kernel_FreeBSD; then + donvidia "${nv_libdir}"/libnvidia-tls.so ${NV_SOVER} + else + donvidia "${nv_libdir}"/tls/libnvidia-tls.so ${NV_SOVER} + fi + + # VDPAU + donvidia "${nv_libdir}"/libvdpau_nvidia.so ${NV_SOVER} + + # GLES v2 libraries + insinto ${GL_ROOT} + doexe "${nv_libdir}"/libGLESv2.so.${PV} + dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2 + dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so + fi + + # NVIDIA monitoring library + if use kernel_linux ; then + donvidia "${nv_libdir}"/libnvidia-ml.so ${NV_SOVER} + fi + + # CUDA & OpenCL + if use kernel_linux; then + donvidia "${nv_libdir}"/libcuda.so ${NV_SOVER} + donvidia "${nv_libdir}"/libnvidia-compiler.so ${NV_SOVER} + donvidia "${nv_libdir}"/libOpenCL.so 1.0.0 ${CL_ROOT} + donvidia "${nv_libdir}"/libnvidia-opencl.so ${NV_SOVER} + fi +} + +pkg_preinst() { + if use driver && use kernel_linux; then + linux-mod_pkg_preinst + local videogroup="$(getent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use driver && use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} + +pkg_postrm() { + use driver && use kernel_linux && linux-mod_pkg_postrm + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-340.108.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-340.108.ebuild deleted file mode 100644 index 7ab4dac5757f..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-340.108.ebuild +++ /dev/null @@ -1,501 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability toolchain-funcs unpacker udev - -NV_URI="https://us.download.nvidia.com/XFree86/" -X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" - -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) - x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -IUSE="multilib kernel_FreeBSD kernel_linux static-libs +tools +X" -KEYWORDS="-* amd64 x86" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -COMMON=" - app-eselect/eselect-opencl - kernel_linux? ( - >=sys-libs/glibc-2.6.1 - acct-group/video - ) - tools? ( - >=x11-libs/gtk+-2.4:2 - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - x11-libs/gdk-pixbuf[X] - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXv - x11-libs/pango[X] - ) - X? ( - >=app-eselect/eselect-opengl-1.0.9 - ) -" -DEPEND=" - ${COMMON} - app-arch/xz-utils - kernel_linux? ( virtual/linux-sources ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - X? ( - =x11-libs/libvdpau-0.3-r1 - sys-libs/zlib[${MULTILIB_USEDEP}] - multilib? ( - >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - ) - ) -" -REQUIRED_USE="tools? ( X )" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -NV_KV_MAX_PLUS="5.5" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check -} - -pkg_setup() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}" - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_prepare() { - # Please add a brief description for every added patch - - if use kernel_linux; then - if kernel_is lt 2 6 9 ; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # If greater than 2.6.5 use M= instead of SUBDIR= -# convert_to_m "${NV_SRC}"/Makefile.kbuild - fi - - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-fno-common.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-fno-common.patch - fi - - # Allow user patches so they can support RC kernels and whatever else - eapply_user -} - -src_compile() { - # This is already the default on Linux, as there's no toplevel Makefile, but - # on FreeBSD there's one and triggers the kernel module build, as we install - # it by itself, pass this. - - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl clean - emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ - AR="$(tc-getAR)" \ - CC="$(tc-getCC)" \ - RANLIB="$(tc-getRANLIB)" \ - libXNVCtrl.a - emake -C "${S}"/nvidia-settings-${PV}/src \ - AR="$(tc-getAR)" \ - CC="$(tc-getCC)" \ - LD="$(tc-getCC)" \ - LIBDIR="$(get_libdir)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - RANLIB="$(tc-getRANLIB)" \ - STRIP_CMD=true - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if its not /usr/lib -donvidia() { - # Full path to library minus SOVER - MY_LIB="$1" - - # SOVER to use - MY_SOVER="$2" - - # Where to install - MY_DEST="$3" - - if [[ -z "${MY_DEST}" ]]; then - MY_DEST="/usr/$(get_libdir)" - action="dolib.so" - else - exeinto ${MY_DEST} - action="doexe" - fi - - # Get just the library name - libname=$(basename $1) - - # Install the library with the correct SOVER - ${action} ${MY_LIB}.${MY_SOVER} || \ - die "failed to install ${libname}" - - # If SOVER wasn't 1, then we need to create a .1 symlink - if [[ "${MY_SOVER}" != "1" ]]; then - dosym ${libname}.${MY_SOVER} \ - ${MY_DEST}/${libname}.1 || \ - die "failed to create ${libname} symlink" - fi - - # Always create the symlink from the raw lib to the .1 - dosym ${libname}.1 \ - ${MY_DEST}/${libname} || \ - die "failed to create ${libname} symlink" -} - -src_install() { - if use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-169.07 nvidia.conf - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia "${NV_OBJ}"/libnvidia-cfg.so ${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia "${NV_OBJ}"/libnvidia-fbc.so ${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia "${NV_OBJ}"/libnvcuvid.so ${NV_SOVER} - donvidia "${NV_OBJ}"/libnvidia-encode.so ${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins "${NV_X11}"/nvidia_drv.so - - # Xorg GLX driver - donvidia "${NV_X11}"/libglx.so ${NV_SOVER} \ - /usr/$(get_libdir)/opengl/nvidia/extensions - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins "${NV_OBJ}"/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe "${NV_OBJ}"/nvidia-xconfig - fi - - if use kernel_linux ; then - doexe "${NV_OBJ}"/nvidia-cuda-mps-control - doexe "${NV_OBJ}"/nvidia-cuda-mps-server - doexe "${NV_OBJ}"/nvidia-debugdump - doexe "${NV_OBJ}"/nvidia-persistenced - doexe "${NV_OBJ}"/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe "${NV_OBJ}"/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - LIBDIR="${D}/usr/$(get_libdir)" \ - PREFIX=/usr \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon "${NV_OBJ}"/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - - fi - - dobin "${NV_OBJ}"/nvidia-bug-report.sh - - #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist - - if has_multilib_profile && use multilib ; then - local OABI=${ABI} - for ABI in $(get_install_abis) ; do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}"/README - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}"/README.txt README - dodoc "${NV_DOC}"/NVIDIA_Changelog - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r "${NV_DOC}"/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && \ - [[ ${ABI} == "x86" ]] ; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - # The GLX libraries - donvidia "${nv_libdir}"/libEGL.so ${NV_SOVER} ${GL_ROOT} - donvidia "${nv_libdir}"/libGL.so ${NV_SOVER} ${GL_ROOT} - donvidia "${nv_libdir}"/libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT} - donvidia "${nv_libdir}"/libnvidia-eglcore.so ${NV_SOVER} - donvidia "${nv_libdir}"/libnvidia-glcore.so ${NV_SOVER} - donvidia "${nv_libdir}"/libnvidia-glsi.so ${NV_SOVER} - donvidia "${nv_libdir}"/libnvidia-ifr.so ${NV_SOVER} - if use kernel_FreeBSD; then - donvidia "${nv_libdir}"/libnvidia-tls.so ${NV_SOVER} - else - donvidia "${nv_libdir}"/tls/libnvidia-tls.so ${NV_SOVER} - fi - - # VDPAU - donvidia "${nv_libdir}"/libvdpau_nvidia.so ${NV_SOVER} - - # GLES v2 libraries - insinto ${GL_ROOT} - doexe "${nv_libdir}"/libGLESv2.so.${PV} - dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2 - dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so - fi - - # NVIDIA monitoring library - if use kernel_linux ; then - donvidia "${nv_libdir}"/libnvidia-ml.so ${NV_SOVER} - fi - - # CUDA & OpenCL - if use kernel_linux; then - donvidia "${nv_libdir}"/libcuda.so ${NV_SOVER} - donvidia "${nv_libdir}"/libnvidia-compiler.so ${NV_SOVER} - donvidia "${nv_libdir}"/libOpenCL.so 1.0.0 ${CL_ROOT} - donvidia "${nv_libdir}"/libnvidia-opencl.so ${NV_SOVER} - fi -} - -pkg_preinst() { - if use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi -} - -pkg_prerm() { - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 -} - -pkg_postrm() { - use kernel_linux && linux-mod_pkg_postrm - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r1.ebuild deleted file mode 100644 index 211c4615cefe..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r1.ebuild +++ /dev/null @@ -1,563 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability toolchain-funcs unpacker udev - -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" -X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" -X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" - -NV_URI="https://us.download.nvidia.com/XFree86/" -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - arm? ( ${NV_URI}Linux-x86-ARM/${PV}/${ARM_NV_PACKAGE}.run ) - x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) - x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -KEYWORDS="-* amd64 x86" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X" -REQUIRED_USE=" - tools? ( X ) - static-libs? ( tools ) -" - -COMMON=" - app-eselect/eselect-opencl - driver? ( kernel_linux? ( acct-group/video ) ) - kernel_linux? ( >=sys-libs/glibc-2.6.1 ) - tools? ( - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - gtk3? ( - x11-libs/gtk+:3 - ) - x11-libs/cairo - x11-libs/gdk-pixbuf[X] - x11-libs/gtk+:2 - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libXxf86vm - x11-libs/pango[X] - ) - X? ( - >=app-eselect/eselect-opengl-1.0.9 - app-misc/pax-utils - ) -" -DEPEND=" - ${COMMON} - kernel_linux? ( virtual/linux-sources ) - tools? ( sys-apps/dbus ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) - X? ( - =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] - sys-libs/zlib[${MULTILIB_USEDEP}] - ) -" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -NV_KV_MAX_PLUS="5.5" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check -} - -pkg_setup() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use driver && use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - if use kernel_linux && kernel_is lt 2 6 9; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}" - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_prepare() { - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die - cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-fno-common.patch \ - "${WORKDIR}"/nvidia-settings-linker.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-fno-common.patch - eapply "${WORKDIR}"/nvidia-settings-linker.patch - fi - - default - - if ! [ -f nvidia_icd.json ]; then - cp nvidia_icd.json.template nvidia_icd.json || die - sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die - fi -} - -src_compile() { - # This is already the default on Linux, as there's no toplevel Makefile, but - # on FreeBSD there's one and triggers the kernel module build, as we install - # it by itself, pass this. - - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use driver && use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile \ - KERNELRELEASE="${KV_FULL}" \ - src="${KERNEL_DIR}" - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src \ - AR="$(tc-getAR)" \ - CC="$(tc-getCC)" \ - DO_STRIP= \ - LD="$(tc-getCC)" \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NV_VERBOSE=1 \ - RANLIB="$(tc-getRANLIB)" \ - build-xnvctrl - - emake -C "${S}"/nvidia-settings-${PV}/src \ - CC="$(tc-getCC)" \ - OBJCOPY="$(tc-getOBJCOPY)" \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LD="$(tc-getCC)" \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if it is not /usr/lib -donvidia() { - # Full path to library - nv_LIB="${1}" - - # SOVER to use - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" - - # Where to install - nv_DEST="${2}" - - # Get just the library name - nv_LIBNAME=$(basename "${nv_LIB}") - - if [[ "${nv_DEST}" ]]; then - exeinto ${nv_DEST} - action="doexe" - else - nv_DEST="/usr/$(get_libdir)" - action="dolib.so" - fi - - # Install the library - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" - - # If the library has a SONAME and SONAME does not match the library name, - # then we need to create a symlink - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} - fi - - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} -} - -src_install() { - if use driver && use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-169.07 nvidia.conf - if use uvm; then - doins "${FILESDIR}"/nvidia-rmmod.conf - udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules - else - sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ - > "${T}"/nvidia-rmmod.conf || die - doins "${T}"/nvidia-rmmod.conf - fi - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins ${NV_X11}/nvidia_drv.so - - # Xorg GLX driver - donvidia ${NV_X11}/libglx.so.${NV_SOVER} \ - /usr/$(get_libdir)/opengl/nvidia/extensions - - # Xorg nvidia.conf - if has_version '>=x11-base/xorg-server-1.16'; then - insinto /usr/share/X11/xorg.conf.d - newins {,50-}nvidia-drm-outputclass.conf - fi - - insinto /usr/share/glvnd/egl_vendor.d - doins ${NV_X11}/10_nvidia.json - fi - - if use wayland; then - insinto /usr/share/egl/egl_external_platform.d - doins ${NV_X11}/10_nvidia_wayland.json - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins ${NV_OBJ}/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe ${NV_OBJ}/nvidia-xconfig - - insinto /etc/vulkan/icd.d - doins nvidia_icd.json - fi - - if use kernel_linux; then - doexe ${NV_OBJ}/nvidia-cuda-mps-control - doexe ${NV_OBJ}/nvidia-cuda-mps-server - doexe ${NV_OBJ}/nvidia-debugdump - doexe ${NV_OBJ}/nvidia-persistenced - doexe ${NV_OBJ}/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe ${NV_OBJ}/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="${D}/usr/$(get_libdir)" \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - PREFIX=/usr \ - DO_STRIP= \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon ${NV_OBJ}/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - dobin ${NV_OBJ}/nvidia-bug-report.sh - - if has_multilib_profile && use multilib; then - local OABI=${ABI} - for ABI in $(get_install_abis); do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}/README" - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}/README.txt" README - dodoc "${NV_DOC}/NVIDIA_Changelog" - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r ${NV_DOC}/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - NV_GLX_LIBRARIES=( - "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}" - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" - "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" - "libcuda.so.${NV_SOVER}" - "libnvcuvid.so.${NV_SOVER}" - "libnvidia-compiler.so.${NV_SOVER}" - "libnvidia-eglcore.so.${NV_SOVER}" - "libnvidia-encode.so.${NV_SOVER}" - "libnvidia-fatbinaryloader.so.${NV_SOVER}" - "libnvidia-fbc.so.${NV_SOVER}" - "libnvidia-glcore.so.${NV_SOVER}" - "libnvidia-glsi.so.${NV_SOVER}" - "libnvidia-ifr.so.${NV_SOVER}" - "libnvidia-opencl.so.${NV_SOVER}" - "libnvidia-ptxjitcompiler.so.${NV_SOVER}" - "libvdpau_nvidia.so.${NV_SOVER}" - ) - - if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-egl-wayland.so.1.0.2" - ) - fi - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-wfb.so.${NV_SOVER}" - ) - fi - - if use kernel_FreeBSD; then - NV_GLX_LIBRARIES+=( - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux; then - NV_GLX_LIBRARIES+=( - "libnvidia-ml.so.${NV_SOVER}" - "tls/libnvidia-tls.so.${NV_SOVER}" - ) - fi - - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do - donvidia "${nv_libdir}"/${NV_LIB} - done - fi -} - -pkg_preinst() { - if use driver && use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use driver && use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi -} - -pkg_prerm() { - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 -} - -pkg_postrm() { - use driver && use kernel_linux && linux-mod_pkg_postrm - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r2.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r2.ebuild deleted file mode 100644 index 9956c57d17b5..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r2.ebuild +++ /dev/null @@ -1,585 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability toolchain-funcs unpacker udev - -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" -X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" -X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" - -NV_URI="https://us.download.nvidia.com/XFree86/" -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - arm? ( ${NV_URI}Linux-x86-ARM/${PV}/${ARM_NV_PACKAGE}.run ) - x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) - x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -KEYWORDS="-* ~amd64 ~x86" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" -REQUIRED_USE=" - tools? ( X ) - static-libs? ( tools ) -" - -COMMON=" - driver? ( kernel_linux? ( acct-group/video ) ) - kernel_linux? ( >=sys-libs/glibc-2.6.1 ) - tools? ( - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - gtk3? ( - x11-libs/gtk+:3 - ) - x11-libs/cairo - x11-libs/gdk-pixbuf[X] - x11-libs/gtk+:2 - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libXxf86vm - x11-libs/pango[X] - ) - X? ( - !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) - libglvnd? ( - media-libs/libglvnd[${MULTILIB_USEDEP}] - !app-eselect/eselect-opengl - ) - app-misc/pax-utils - ) -" -DEPEND=" - ${COMMON} - kernel_linux? ( virtual/linux-sources ) - tools? ( sys-apps/dbus ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - uvm? ( >=virtual/opencl-3 ) - wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) - X? ( - =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] - sys-libs/zlib[${MULTILIB_USEDEP}] - ) -" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -NV_KV_MAX_PLUS="5.5" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check -} - -pkg_setup() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use driver && use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - if use kernel_linux && kernel_is lt 2 6 9; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}" - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_prepare() { - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die - cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-fno-common.patch \ - "${WORKDIR}"/nvidia-settings-linker.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-fno-common.patch - eapply "${WORKDIR}"/nvidia-settings-linker.patch - fi - - default - - if ! [ -f nvidia_icd.json ]; then - cp nvidia_icd.json.template nvidia_icd.json || die - sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die - fi -} - -src_compile() { - # This is already the default on Linux, as there's no toplevel Makefile, but - # on FreeBSD there's one and triggers the kernel module build, as we install - # it by itself, pass this. - - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use driver && use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile \ - KERNELRELEASE="${KV_FULL}" \ - src="${KERNEL_DIR}" - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src \ - AR="$(tc-getAR)" \ - CC="$(tc-getCC)" \ - DO_STRIP= \ - LD="$(tc-getCC)" \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NV_VERBOSE=1 \ - RANLIB="$(tc-getRANLIB)" \ - build-xnvctrl - - emake -C "${S}"/nvidia-settings-${PV}/src \ - CC="$(tc-getCC)" \ - OBJCOPY="$(tc-getOBJCOPY)" \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LD="$(tc-getCC)" \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if it is not /usr/lib -donvidia() { - # Full path to library - nv_LIB="${1}" - - # SOVER to use - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" - - # Where to install - nv_DEST="${2}" - - # Get just the library name - nv_LIBNAME=$(basename "${nv_LIB}") - - if [[ "${nv_DEST}" ]]; then - exeinto ${nv_DEST} - action="doexe" - else - nv_DEST="/usr/$(get_libdir)" - action="dolib.so" - fi - - # Install the library - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" - - # If the library has a SONAME and SONAME does not match the library name, - # then we need to create a symlink - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} - fi - - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} -} - -src_install() { - if use driver && use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-169.07 nvidia.conf - if use uvm; then - doins "${FILESDIR}"/nvidia-rmmod.conf - udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules - else - sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ - > "${T}"/nvidia-rmmod.conf || die - doins "${T}"/nvidia-rmmod.conf - fi - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins ${NV_X11}/nvidia_drv.so - - # Xorg GLX driver - if use libglvnd; then - local extensions_dir="/usr/$(get_libdir)/extensions/nvidia" - else - local extensions_dir="/usr/$(get_libdir)/opengl/nvidia/extensions/" - fi - donvidia ${NV_X11}/libglx.so.${NV_SOVER} \ - "${extensions_dir}" - - # Xorg nvidia.conf - if has_version '>=x11-base/xorg-server-1.16'; then - insinto /usr/share/X11/xorg.conf.d - newins {,50-}nvidia-drm-outputclass.conf - fi - - insinto /usr/share/glvnd/egl_vendor.d - doins ${NV_X11}/10_nvidia.json - fi - - if use wayland; then - insinto /usr/share/egl/egl_external_platform.d - doins ${NV_X11}/10_nvidia_wayland.json - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins ${NV_OBJ}/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe ${NV_OBJ}/nvidia-xconfig - - insinto /etc/vulkan/icd.d - doins nvidia_icd.json - fi - - if use kernel_linux; then - doexe ${NV_OBJ}/nvidia-cuda-mps-control - doexe ${NV_OBJ}/nvidia-cuda-mps-server - doexe ${NV_OBJ}/nvidia-debugdump - doexe ${NV_OBJ}/nvidia-persistenced - doexe ${NV_OBJ}/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe ${NV_OBJ}/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="${D}/usr/$(get_libdir)" \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - PREFIX=/usr \ - DO_STRIP= \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon ${NV_OBJ}/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - dobin ${NV_OBJ}/nvidia-bug-report.sh - - if has_multilib_profile && use multilib; then - local OABI=${ABI} - for ABI in $(get_install_abis); do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}/README" - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}/README.txt" README - dodoc "${NV_DOC}/NVIDIA_Changelog" - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r ${NV_DOC}/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - if use libglvnd; then - local GL_ROOT="/usr/$(get_libdir)" - else - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - fi - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - NV_GLX_LIBRARIES=( - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libcuda.so.${NV_SOVER}" - "libnvcuvid.so.${NV_SOVER}" - "libnvidia-compiler.so.${NV_SOVER}" - "libnvidia-eglcore.so.${NV_SOVER}" - "libnvidia-encode.so.${NV_SOVER}" - "libnvidia-fatbinaryloader.so.${NV_SOVER}" - "libnvidia-fbc.so.${NV_SOVER}" - "libnvidia-glcore.so.${NV_SOVER}" - "libnvidia-glsi.so.${NV_SOVER}" - "libnvidia-ifr.so.${NV_SOVER}" - "libnvidia-opencl.so.${NV_SOVER}" - "libnvidia-ptxjitcompiler.so.${NV_SOVER}" - "libvdpau_nvidia.so.${NV_SOVER}" - ) - if ! use libglvnd; then - NV_GLX_LIBRARIES+=( - "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}" - "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" - ) - fi - - if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-egl-wayland.so.1.0.2" - ) - fi - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-wfb.so.${NV_SOVER}" - ) - fi - - if use kernel_FreeBSD; then - NV_GLX_LIBRARIES+=( - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux; then - NV_GLX_LIBRARIES+=( - "libnvidia-ml.so.${NV_SOVER}" - "tls/libnvidia-tls.so.${NV_SOVER}" - ) - fi - - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do - donvidia "${nv_libdir}"/${NV_LIB} - done - fi -} - -pkg_preinst() { - if use driver && use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use driver && use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - fi - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi -} - -pkg_prerm() { - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} - -pkg_postrm() { - use driver && use kernel_linux && linux-mod_pkg_postrm - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r4.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r4.ebuild new file mode 100644 index 000000000000..4ae7ac3a591c --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-390.132-r4.ebuild @@ -0,0 +1,585 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ + nvidia-driver portability toolchain-funcs unpacker udev + +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" + +NV_URI="https://us.download.nvidia.com/XFree86/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + arm? ( ${NV_URI}Linux-x86-ARM/${PV}/${ARM_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) + tools? ( + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 + ) +" + +EMULTILIB_PKG="true" +KEYWORDS="-* ~amd64 ~x86" +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/${PV%.*}" + +IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" +REQUIRED_USE=" + tools? ( X ) + static-libs? ( tools ) +" + +COMMON=" + driver? ( kernel_linux? ( acct-group/video ) ) + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + dev-libs/jansson + gtk3? ( + x11-libs/gtk+:3 + ) + x11-libs/cairo + x11-libs/gdk-pixbuf[X] + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libXxf86vm + x11-libs/pango[X] + ) + X? ( + !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) + libglvnd? ( + media-libs/libglvnd[${MULTILIB_USEDEP}] + !app-eselect/eselect-opengl + ) + app-misc/pax-utils + ) +" +DEPEND=" + ${COMMON} + kernel_linux? ( virtual/linux-sources ) + tools? ( sys-apps/dbus ) +" +RDEPEND=" + ${COMMON} + tools? ( !media-video/nvidia-settings ) + uvm? ( >=virtual/opencl-3 ) + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) + X? ( + =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + ) +" +QA_PREBUILT="opt/* usr/lib*" +S=${WORKDIR}/ +NV_KV_MAX_PLUS="5.5" +CONFIG_CHECK=" + !DEBUG_MUTEXES + ~!LOCKDEP + ~DRM + ~DRM_KMS_HELPER + ~SYSVIPC +" + +pkg_pretend() { + use x86 && CONFIG_CHECK+=" ~HIGHMEM" + nvidia-driver_check +} + +pkg_setup() { + use x86 && CONFIG_CHECK+=" ~HIGHMEM" + nvidia-driver_check + + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use driver && use kernel_linux; then + MODULE_NAMES="nvidia(video:${S}/kernel)" + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" + + # This needs to run after MODULE_NAMES (so that the eclass checks + # whether the kernel supports loadable modules) but before BUILD_PARAMS + # is set (so that KV_DIR is populated). + linux-mod_pkg_setup + + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" + + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + + if kernel_is lt 2 6 9; then + eerror "You must build this against 2.6.9 or higher kernels." + fi + fi + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}" + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" + NV_DOC="${S}/doc" + NV_OBJ="${S}/obj" + NV_SRC="${S}/src" + NV_MAN="${S}/x11/man" + NV_X11="${S}/obj" + NV_SOVER=1 + elif use kernel_linux; then + NV_DOC="${S}" + NV_OBJ="${S}" + NV_SRC="${S}/kernel" + NV_MAN="${S}" + NV_X11="${S}" + NV_SOVER=${PV} + else + die "Could not determine proper NVIDIA package" + fi +} + +src_prepare() { + local man_file + for man_file in "${NV_MAN}"/*1.gz; do + gunzip $man_file || die + done + + if use tools; then + cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die + sed -i \ + -e "s:@PV@:${PV}:g" \ + "${WORKDIR}"/nvidia-settings-fno-common.patch \ + "${WORKDIR}"/nvidia-settings-linker.patch \ + || die + eapply "${WORKDIR}"/nvidia-settings-fno-common.patch + eapply "${WORKDIR}"/nvidia-settings-linker.patch + fi + + default + + if ! [ -f nvidia_icd.json ]; then + cp nvidia_icd.json.template nvidia_icd.json || die + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die + fi +} + +src_compile() { + # This is already the default on Linux, as there's no toplevel Makefile, but + # on FreeBSD there's one and triggers the kernel module build, as we install + # it by itself, pass this. + + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use driver && use kernel_linux; then + BUILD_TARGETS=module linux-mod_src_compile \ + KERNELRELEASE="${KV_FULL}" \ + src="${KERNEL_DIR}" + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src \ + AR="$(tc-getAR)" \ + CC="$(tc-getCC)" \ + DO_STRIP= \ + LD="$(tc-getCC)" \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NV_VERBOSE=1 \ + RANLIB="$(tc-getRANLIB)" \ + build-xnvctrl + + emake -C "${S}"/nvidia-settings-${PV}/src \ + CC="$(tc-getCC)" \ + OBJCOPY="$(tc-getOBJCOPY)" \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LD="$(tc-getCC)" \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NVML_ENABLED=0 \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if it is not /usr/lib +donvidia() { + # Full path to library + nv_LIB="${1}" + + # SOVER to use + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" + + # Where to install + nv_DEST="${2}" + + # Get just the library name + nv_LIBNAME=$(basename "${nv_LIB}") + + if [[ "${nv_DEST}" ]]; then + exeinto ${nv_DEST} + action="doexe" + else + nv_DEST="/usr/$(get_libdir)" + action="dolib.so" + fi + + # Install the library + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" + + # If the library has a SONAME and SONAME does not match the library name, + # then we need to create a symlink + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} + fi + + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} +} + +src_install() { + if use driver && use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf + if use uvm; then + doins "${FILESDIR}"/nvidia-rmmod.conf + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules + else + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ + > "${T}"/nvidia-rmmod.conf || die + doins "${T}"/nvidia-rmmod.conf + fi + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + if use libglvnd; then + local extensions_dir="/usr/$(get_libdir)/extensions/nvidia" + else + local extensions_dir="/usr/$(get_libdir)/opengl/nvidia/extensions/" + fi + donvidia ${NV_X11}/libglx.so.${NV_SOVER} \ + "${extensions_dir}" + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + + insinto /usr/share/glvnd/egl_vendor.d + doins ${NV_X11}/10_nvidia.json + fi + + if use wayland; then + insinto /usr/share/egl/egl_external_platform.d + doins ${NV_X11}/10_nvidia_wayland.json + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + + insinto /etc/vulkan/icd.d + doins nvidia_icd.json + fi + + if use kernel_linux; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1 + doman nvidia-modprobe.1 + doman nvidia-persistenced.1 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/ \ + DESTDIR="${D}" \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="${D}/usr/$(get_libdir)" \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + PREFIX=/usr \ + DO_STRIP= \ + install + + if use static-libs; then + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a + + insinto /usr/include/NVCtrl + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h + fi + + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + + insinto /etc/nvidia + newins \ + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || \ + doicon ${NV_OBJ}/nvidia-settings.png + + domenu "${FILESDIR}"/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + if has_multilib_profile && use multilib; then + local OABI=${ABI} + for ABI in $(multilib_get_enabled_abis); do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + # Documentation + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}"/nvidia-smi.1 + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1 + fi + + readme.gentoo_create_doc + + docinto html + dodoc -r ${NV_DOC}/html/* +} + +src_install-libs() { + local inslibdir=$(get_libdir) + if use libglvnd; then + local GL_ROOT="/usr/$(get_libdir)" + else + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + fi + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local nv_libdir="${NV_OBJ}" + + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then + nv_libdir="${NV_OBJ}"/32 + fi + + if use X; then + NV_GLX_LIBRARIES=( + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libOpenCL.so.1.0.0 ${CL_ROOT}" + "libcuda.so.${NV_SOVER}" + "libnvcuvid.so.${NV_SOVER}" + "libnvidia-compiler.so.${NV_SOVER}" + "libnvidia-eglcore.so.${NV_SOVER}" + "libnvidia-encode.so.${NV_SOVER}" + "libnvidia-fatbinaryloader.so.${NV_SOVER}" + "libnvidia-fbc.so.${NV_SOVER}" + "libnvidia-glcore.so.${NV_SOVER}" + "libnvidia-glsi.so.${NV_SOVER}" + "libnvidia-ifr.so.${NV_SOVER}" + "libnvidia-opencl.so.${NV_SOVER}" + "libnvidia-ptxjitcompiler.so.${NV_SOVER}" + "libvdpau_nvidia.so.${NV_SOVER}" + ) + if ! use libglvnd; then + NV_GLX_LIBRARIES+=( + "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}" + "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}" + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" + "libGLESv2.so.2.1.0 ${GL_ROOT}" + "libGLX.so.0 ${GL_ROOT}" + "libGLdispatch.so.0 ${GL_ROOT}" + "libOpenGL.so.0 ${GL_ROOT}" + ) + fi + + if use wayland && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-egl-wayland.so.1.0.2" + ) + fi + + if use kernel_linux && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-wfb.so.${NV_SOVER}" + ) + fi + + if use kernel_FreeBSD; then + NV_GLX_LIBRARIES+=( + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux; then + NV_GLX_LIBRARIES+=( + "libnvidia-ml.so.${NV_SOVER}" + "tls/libnvidia-tls.so.${NV_SOVER}" + ) + fi + + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do + donvidia "${nv_libdir}"/${NV_LIB} + done + fi +} + +pkg_preinst() { + if use driver && use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(getent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use driver && use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + fi + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} + +pkg_postrm() { + use driver && use kernel_linux && linux-mod_pkg_postrm + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.138-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.138-r1.ebuild new file mode 100644 index 000000000000..783dd93a4d22 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-390.138-r1.ebuild @@ -0,0 +1,586 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ + nvidia-driver portability toolchain-funcs unpacker udev + +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" + +NV_URI="https://us.download.nvidia.com/XFree86/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + arm? ( ${NV_URI}Linux-x86-ARM/${PV}/${ARM_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) + tools? ( + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 + ) +" + +EMULTILIB_PKG="true" +KEYWORDS="-* amd64 x86" +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/${PV%.*}" + +IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" +REQUIRED_USE=" + tools? ( X ) + static-libs? ( tools ) +" + +COMMON=" + driver? ( kernel_linux? ( acct-group/video ) ) + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + dev-libs/jansson + gtk3? ( + x11-libs/gtk+:3 + ) + x11-libs/cairo + x11-libs/gdk-pixbuf[X] + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libXxf86vm + x11-libs/pango[X] + ) + X? ( + !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) + libglvnd? ( + media-libs/libglvnd[${MULTILIB_USEDEP}] + !app-eselect/eselect-opengl + ) + app-misc/pax-utils + ) +" +DEPEND=" + ${COMMON} + kernel_linux? ( virtual/linux-sources ) + tools? ( sys-apps/dbus ) +" +RDEPEND=" + ${COMMON} + tools? ( !media-video/nvidia-settings ) + uvm? ( >=virtual/opencl-3 ) + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) + X? ( + =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + ) +" +QA_PREBUILT="opt/* usr/lib*" +S=${WORKDIR}/ +NV_KV_MAX_PLUS="5.8" +CONFIG_CHECK=" + !DEBUG_MUTEXES + ~!I2C_NVIDIA_GPU + ~!LOCKDEP + ~DRM + ~DRM_KMS_HELPER + ~SYSVIPC +" + +pkg_pretend() { + use x86 && CONFIG_CHECK+=" ~HIGHMEM" + nvidia-driver_check +} + +pkg_setup() { + use x86 && CONFIG_CHECK+=" ~HIGHMEM" + nvidia-driver_check + + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use driver && use kernel_linux; then + MODULE_NAMES="nvidia(video:${S}/kernel)" + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" + + # This needs to run after MODULE_NAMES (so that the eclass checks + # whether the kernel supports loadable modules) but before BUILD_PARAMS + # is set (so that KV_DIR is populated). + linux-mod_pkg_setup + + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" + + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + + if kernel_is lt 2 6 9; then + eerror "You must build this against 2.6.9 or higher kernels." + fi + fi + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}" + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" + NV_DOC="${S}/doc" + NV_OBJ="${S}/obj" + NV_SRC="${S}/src" + NV_MAN="${S}/x11/man" + NV_X11="${S}/obj" + NV_SOVER=1 + elif use kernel_linux; then + NV_DOC="${S}" + NV_OBJ="${S}" + NV_SRC="${S}/kernel" + NV_MAN="${S}" + NV_X11="${S}" + NV_SOVER=${PV} + else + die "Could not determine proper NVIDIA package" + fi +} + +src_prepare() { + local man_file + for man_file in "${NV_MAN}"/*1.gz; do + gunzip $man_file || die + done + + if use tools; then + cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die + sed -i \ + -e "s:@PV@:${PV}:g" \ + "${WORKDIR}"/nvidia-settings-fno-common.patch \ + "${WORKDIR}"/nvidia-settings-linker.patch \ + || die + eapply "${WORKDIR}"/nvidia-settings-fno-common.patch + eapply "${WORKDIR}"/nvidia-settings-linker.patch + fi + + default + + if ! [ -f nvidia_icd.json ]; then + cp nvidia_icd.json.template nvidia_icd.json || die + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die + fi +} + +src_compile() { + # This is already the default on Linux, as there's no toplevel Makefile, but + # on FreeBSD there's one and triggers the kernel module build, as we install + # it by itself, pass this. + + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use driver && use kernel_linux; then + BUILD_TARGETS=module linux-mod_src_compile \ + KERNELRELEASE="${KV_FULL}" \ + src="${KERNEL_DIR}" + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src \ + AR="$(tc-getAR)" \ + CC="$(tc-getCC)" \ + DO_STRIP= \ + LD="$(tc-getCC)" \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NV_VERBOSE=1 \ + RANLIB="$(tc-getRANLIB)" \ + build-xnvctrl + + emake -C "${S}"/nvidia-settings-${PV}/src \ + CC="$(tc-getCC)" \ + OBJCOPY="$(tc-getOBJCOPY)" \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LD="$(tc-getCC)" \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NVML_ENABLED=0 \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if it is not /usr/lib +donvidia() { + # Full path to library + nv_LIB="${1}" + + # SOVER to use + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" + + # Where to install + nv_DEST="${2}" + + # Get just the library name + nv_LIBNAME=$(basename "${nv_LIB}") + + if [[ "${nv_DEST}" ]]; then + exeinto ${nv_DEST} + action="doexe" + else + nv_DEST="/usr/$(get_libdir)" + action="dolib.so" + fi + + # Install the library + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" + + # If the library has a SONAME and SONAME does not match the library name, + # then we need to create a symlink + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} + fi + + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} +} + +src_install() { + if use driver && use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf + if use uvm; then + doins "${FILESDIR}"/nvidia-rmmod.conf + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules + else + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ + > "${T}"/nvidia-rmmod.conf || die + doins "${T}"/nvidia-rmmod.conf + fi + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + if use libglvnd; then + local extensions_dir="/usr/$(get_libdir)/extensions/nvidia" + else + local extensions_dir="/usr/$(get_libdir)/opengl/nvidia/extensions/" + fi + donvidia ${NV_X11}/libglx.so.${NV_SOVER} \ + "${extensions_dir}" + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + + insinto /usr/share/glvnd/egl_vendor.d + doins ${NV_X11}/10_nvidia.json + fi + + if use wayland; then + insinto /usr/share/egl/egl_external_platform.d + doins ${NV_X11}/10_nvidia_wayland.json + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + + insinto /etc/vulkan/icd.d + doins nvidia_icd.json + fi + + if use kernel_linux; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1 + doman nvidia-modprobe.1 + doman nvidia-persistenced.1 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/ \ + DESTDIR="${D}" \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="${D}/usr/$(get_libdir)" \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + PREFIX=/usr \ + DO_STRIP= \ + install + + if use static-libs; then + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a + + insinto /usr/include/NVCtrl + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h + fi + + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + + insinto /etc/nvidia + newins \ + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || \ + doicon ${NV_OBJ}/nvidia-settings.png + + domenu "${FILESDIR}"/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + if has_multilib_profile && use multilib; then + local OABI=${ABI} + for ABI in $(multilib_get_enabled_abis); do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + # Documentation + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}"/nvidia-smi.1 + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1 + fi + + readme.gentoo_create_doc + + docinto html + dodoc -r ${NV_DOC}/html/* +} + +src_install-libs() { + local inslibdir=$(get_libdir) + if use libglvnd; then + local GL_ROOT="/usr/$(get_libdir)" + else + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + fi + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local nv_libdir="${NV_OBJ}" + + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then + nv_libdir="${NV_OBJ}"/32 + fi + + if use X; then + NV_GLX_LIBRARIES=( + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libOpenCL.so.1.0.0 ${CL_ROOT}" + "libcuda.so.${NV_SOVER}" + "libnvcuvid.so.${NV_SOVER}" + "libnvidia-compiler.so.${NV_SOVER}" + "libnvidia-eglcore.so.${NV_SOVER}" + "libnvidia-encode.so.${NV_SOVER}" + "libnvidia-fatbinaryloader.so.${NV_SOVER}" + "libnvidia-fbc.so.${NV_SOVER}" + "libnvidia-glcore.so.${NV_SOVER}" + "libnvidia-glsi.so.${NV_SOVER}" + "libnvidia-ifr.so.${NV_SOVER}" + "libnvidia-opencl.so.${NV_SOVER}" + "libnvidia-ptxjitcompiler.so.${NV_SOVER}" + "libvdpau_nvidia.so.${NV_SOVER}" + ) + if ! use libglvnd; then + NV_GLX_LIBRARIES+=( + "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}" + "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}" + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" + "libGLESv2.so.2.1.0 ${GL_ROOT}" + "libGLX.so.0 ${GL_ROOT}" + "libGLdispatch.so.0 ${GL_ROOT}" + "libOpenGL.so.0 ${GL_ROOT}" + ) + fi + + if use wayland && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-egl-wayland.so.1.0.2" + ) + fi + + if use kernel_linux && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-wfb.so.${NV_SOVER}" + ) + fi + + if use kernel_FreeBSD; then + NV_GLX_LIBRARIES+=( + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux; then + NV_GLX_LIBRARIES+=( + "libnvidia-ml.so.${NV_SOVER}" + "tls/libnvidia-tls.so.${NV_SOVER}" + ) + fi + + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do + donvidia "${nv_libdir}"/${NV_LIB} + done + fi +} + +pkg_preinst() { + if use driver && use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(getent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use driver && use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + fi + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} + +pkg_postrm() { + use driver && use kernel_linux && linux-mod_pkg_postrm + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.138.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.138.ebuild deleted file mode 100644 index b100ce189184..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-390.138.ebuild +++ /dev/null @@ -1,586 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability toolchain-funcs unpacker udev - -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" -X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" -X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" - -NV_URI="https://us.download.nvidia.com/XFree86/" -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - arm? ( ${NV_URI}Linux-x86-ARM/${PV}/${ARM_NV_PACKAGE}.run ) - x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) - x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -KEYWORDS="-* amd64 x86" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" -REQUIRED_USE=" - tools? ( X ) - static-libs? ( tools ) -" - -COMMON=" - driver? ( kernel_linux? ( acct-group/video ) ) - kernel_linux? ( >=sys-libs/glibc-2.6.1 ) - tools? ( - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - gtk3? ( - x11-libs/gtk+:3 - ) - x11-libs/cairo - x11-libs/gdk-pixbuf[X] - x11-libs/gtk+:2 - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libXxf86vm - x11-libs/pango[X] - ) - X? ( - !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) - libglvnd? ( - media-libs/libglvnd[${MULTILIB_USEDEP}] - !app-eselect/eselect-opengl - ) - app-misc/pax-utils - ) -" -DEPEND=" - ${COMMON} - kernel_linux? ( virtual/linux-sources ) - tools? ( sys-apps/dbus ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - uvm? ( >=virtual/opencl-3 ) - wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) - X? ( - =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] - sys-libs/zlib[${MULTILIB_USEDEP}] - ) -" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -NV_KV_MAX_PLUS="5.8" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!I2C_NVIDIA_GPU - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check -} - -pkg_setup() { - use x86 && CONFIG_CHECK+=" ~HIGHMEM" - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use driver && use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - if use kernel_linux && kernel_is lt 2 6 9; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}" - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_prepare() { - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die - cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-fno-common.patch \ - "${WORKDIR}"/nvidia-settings-linker.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-fno-common.patch - eapply "${WORKDIR}"/nvidia-settings-linker.patch - fi - - default - - if ! [ -f nvidia_icd.json ]; then - cp nvidia_icd.json.template nvidia_icd.json || die - sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die - fi -} - -src_compile() { - # This is already the default on Linux, as there's no toplevel Makefile, but - # on FreeBSD there's one and triggers the kernel module build, as we install - # it by itself, pass this. - - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use driver && use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile \ - KERNELRELEASE="${KV_FULL}" \ - src="${KERNEL_DIR}" - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src \ - AR="$(tc-getAR)" \ - CC="$(tc-getCC)" \ - DO_STRIP= \ - LD="$(tc-getCC)" \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NV_VERBOSE=1 \ - RANLIB="$(tc-getRANLIB)" \ - build-xnvctrl - - emake -C "${S}"/nvidia-settings-${PV}/src \ - CC="$(tc-getCC)" \ - OBJCOPY="$(tc-getOBJCOPY)" \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LD="$(tc-getCC)" \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if it is not /usr/lib -donvidia() { - # Full path to library - nv_LIB="${1}" - - # SOVER to use - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" - - # Where to install - nv_DEST="${2}" - - # Get just the library name - nv_LIBNAME=$(basename "${nv_LIB}") - - if [[ "${nv_DEST}" ]]; then - exeinto ${nv_DEST} - action="doexe" - else - nv_DEST="/usr/$(get_libdir)" - action="dolib.so" - fi - - # Install the library - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" - - # If the library has a SONAME and SONAME does not match the library name, - # then we need to create a symlink - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} - fi - - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} -} - -src_install() { - if use driver && use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-169.07 nvidia.conf - if use uvm; then - doins "${FILESDIR}"/nvidia-rmmod.conf - udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules - else - sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ - > "${T}"/nvidia-rmmod.conf || die - doins "${T}"/nvidia-rmmod.conf - fi - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins ${NV_X11}/nvidia_drv.so - - # Xorg GLX driver - if use libglvnd; then - local extensions_dir="/usr/$(get_libdir)/extensions/nvidia" - else - local extensions_dir="/usr/$(get_libdir)/opengl/nvidia/extensions/" - fi - donvidia ${NV_X11}/libglx.so.${NV_SOVER} \ - "${extensions_dir}" - - # Xorg nvidia.conf - if has_version '>=x11-base/xorg-server-1.16'; then - insinto /usr/share/X11/xorg.conf.d - newins {,50-}nvidia-drm-outputclass.conf - fi - - insinto /usr/share/glvnd/egl_vendor.d - doins ${NV_X11}/10_nvidia.json - fi - - if use wayland; then - insinto /usr/share/egl/egl_external_platform.d - doins ${NV_X11}/10_nvidia_wayland.json - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins ${NV_OBJ}/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe ${NV_OBJ}/nvidia-xconfig - - insinto /etc/vulkan/icd.d - doins nvidia_icd.json - fi - - if use kernel_linux; then - doexe ${NV_OBJ}/nvidia-cuda-mps-control - doexe ${NV_OBJ}/nvidia-cuda-mps-server - doexe ${NV_OBJ}/nvidia-debugdump - doexe ${NV_OBJ}/nvidia-persistenced - doexe ${NV_OBJ}/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe ${NV_OBJ}/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="${D}/usr/$(get_libdir)" \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - PREFIX=/usr \ - DO_STRIP= \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon ${NV_OBJ}/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - dobin ${NV_OBJ}/nvidia-bug-report.sh - - if has_multilib_profile && use multilib; then - local OABI=${ABI} - for ABI in $(get_install_abis); do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}/README" - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}/README.txt" README - dodoc "${NV_DOC}/NVIDIA_Changelog" - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r ${NV_DOC}/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - if use libglvnd; then - local GL_ROOT="/usr/$(get_libdir)" - else - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - fi - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - NV_GLX_LIBRARIES=( - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libcuda.so.${NV_SOVER}" - "libnvcuvid.so.${NV_SOVER}" - "libnvidia-compiler.so.${NV_SOVER}" - "libnvidia-eglcore.so.${NV_SOVER}" - "libnvidia-encode.so.${NV_SOVER}" - "libnvidia-fatbinaryloader.so.${NV_SOVER}" - "libnvidia-fbc.so.${NV_SOVER}" - "libnvidia-glcore.so.${NV_SOVER}" - "libnvidia-glsi.so.${NV_SOVER}" - "libnvidia-ifr.so.${NV_SOVER}" - "libnvidia-opencl.so.${NV_SOVER}" - "libnvidia-ptxjitcompiler.so.${NV_SOVER}" - "libvdpau_nvidia.so.${NV_SOVER}" - ) - if ! use libglvnd; then - NV_GLX_LIBRARIES+=( - "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}" - "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" - ) - fi - - if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-egl-wayland.so.1.0.2" - ) - fi - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-wfb.so.${NV_SOVER}" - ) - fi - - if use kernel_FreeBSD; then - NV_GLX_LIBRARIES+=( - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux; then - NV_GLX_LIBRARIES+=( - "libnvidia-ml.so.${NV_SOVER}" - "tls/libnvidia-tls.so.${NV_SOVER}" - ) - fi - - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do - donvidia "${nv_libdir}"/${NV_LIB} - done - fi -} - -pkg_preinst() { - if use driver && use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use driver && use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - fi - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi -} - -pkg_prerm() { - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} - -pkg_postrm() { - use driver && use kernel_linux && linux-mod_pkg_postrm - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-430.64-r5.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-430.64-r5.ebuild deleted file mode 100644 index 9da083cdec9d..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-430.64-r5.ebuild +++ /dev/null @@ -1,571 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability systemd toolchain-funcs unpacker udev - -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" - -NV_URI="https://us.download.nvidia.com/XFree86/" -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -KEYWORDS="-* amd64" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms multilib static-libs +tools uvm wayland +X" -REQUIRED_USE=" - tools? ( X ) - static-libs? ( tools ) -" - -COMMON=" - driver? ( kernel_linux? ( acct-group/video ) ) - kernel_linux? ( >=sys-libs/glibc-2.6.1 ) - tools? ( - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - gtk3? ( - x11-libs/gtk+:3 - ) - x11-libs/cairo - x11-libs/gdk-pixbuf[X] - x11-libs/gtk+:2 - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libXxf86vm - x11-libs/pango[X] - ) - X? ( - >=app-eselect/eselect-opengl-1.0.9 - app-misc/pax-utils - ) -" -DEPEND=" - ${COMMON} - kernel_linux? ( virtual/linux-sources ) - tools? ( sys-apps/dbus ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - uvm? ( >=virtual/opencl-3 ) - wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) - X? ( - =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] - sys-libs/zlib[${MULTILIB_USEDEP}] - ) -" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -NV_KV_MAX_PLUS="5.5" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!I2C_NVIDIA_GPU - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - nvidia-driver_check -} - -pkg_setup() { - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use driver && use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - if use kernel_linux && kernel_is lt 2 6 9; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_configure() { - tc-export AR CC LD OBJCOPY - - default -} - -src_prepare() { - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die - cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-fno-common.patch \ - "${WORKDIR}"/nvidia-settings-linker.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-fno-common.patch - eapply "${WORKDIR}"/nvidia-settings-linker.patch - fi - - default - - if ! [ -f nvidia_icd.json ]; then - cp nvidia_icd.json.template nvidia_icd.json || die - sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die - fi -} - -src_compile() { - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use driver && use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile \ - KERNELRELEASE="${KV_FULL}" \ - src="${KERNEL_DIR}" - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ - DO_STRIP= \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - RANLIB="$(tc-getRANLIB)" - - emake -C "${S}"/nvidia-settings-${PV}/src \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if it is not /usr/lib -donvidia() { - # Full path to library - nv_LIB="${1}" - - # SOVER to use - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" - - # Where to install - nv_DEST="${2}" - - # Get just the library name - nv_LIBNAME=$(basename "${nv_LIB}") - - if [[ "${nv_DEST}" ]]; then - exeinto ${nv_DEST} - action="doexe" - else - nv_DEST="/usr/$(get_libdir)" - action="dolib.so" - fi - - # Install the library - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" - - # If the library has a SONAME and SONAME does not match the library name, - # then we need to create a symlink - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} - fi - - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} -} - -src_install() { - if use driver && use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-430.conf nvidia.conf - - if use uvm; then - doins "${FILESDIR}"/nvidia-rmmod.conf - udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules - else - sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ - > "${T}"/nvidia-rmmod.conf || die - doins "${T}"/nvidia-rmmod.conf - fi - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins ${NV_X11}/nvidia_drv.so - - # Xorg GLX driver - donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ - /usr/$(get_libdir)/xorg/modules/extensions - - # Xorg nvidia.conf - if has_version '>=x11-base/xorg-server-1.16'; then - insinto /usr/share/X11/xorg.conf.d - newins {,50-}nvidia-drm-outputclass.conf - fi - - insinto /usr/share/glvnd/egl_vendor.d - doins ${NV_X11}/10_nvidia.json - fi - - if use wayland; then - insinto /usr/share/egl/egl_external_platform.d - doins ${NV_X11}/10_nvidia_wayland.json - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins ${NV_OBJ}/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe ${NV_OBJ}/nvidia-xconfig - - insinto /etc/vulkan/icd.d - doins nvidia_icd.json - fi - - if use kernel_linux; then - doexe ${NV_OBJ}/nvidia-cuda-mps-control - doexe ${NV_OBJ}/nvidia-cuda-mps-server - doexe ${NV_OBJ}/nvidia-debugdump - doexe ${NV_OBJ}/nvidia-persistenced - doexe ${NV_OBJ}/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe ${NV_OBJ}/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="${D}/usr/$(get_libdir)" \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - PREFIX=/usr \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon ${NV_OBJ}/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - dobin ${NV_OBJ}/nvidia-bug-report.sh - - systemd_dounit *.service - dobin nvidia-sleep.sh - exeinto /lib/systemd/system-sleep - doexe nvidia - - if has_multilib_profile && use multilib; then - local OABI=${ABI} - for ABI in $(get_install_abis); do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}/README" - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}/README.txt" README - dodoc "${NV_DOC}/NVIDIA_Changelog" - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r ${NV_DOC}/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - NV_GLX_LIBRARIES=( - "libEGL.so.$(usex compat ${NV_SOVER} 1.1.0) ${GL_ROOT}" - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGL.so.$(usex compat ${NV_SOVER} 1.7.0) ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" - "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" - "libcuda.so.${NV_SOVER}" - "libnvcuvid.so.${NV_SOVER}" - "libnvidia-compiler.so.${NV_SOVER}" - "libnvidia-eglcore.so.${NV_SOVER}" - "libnvidia-encode.so.${NV_SOVER}" - "libnvidia-fatbinaryloader.so.${NV_SOVER}" - "libnvidia-fbc.so.${NV_SOVER}" - "libnvidia-glcore.so.${NV_SOVER}" - "libnvidia-glsi.so.${NV_SOVER}" - "libnvidia-glvkspirv.so.${NV_SOVER}" - "libnvidia-ifr.so.${NV_SOVER}" - "libnvidia-opencl.so.${NV_SOVER}" - "libnvidia-ptxjitcompiler.so.${NV_SOVER}" - "libvdpau_nvidia.so.${NV_SOVER}" - ) - - if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-egl-wayland.so.1.1.2" - ) - fi - - if use kernel_FreeBSD; then - NV_GLX_LIBRARIES+=( - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux; then - NV_GLX_LIBRARIES+=( - "libnvidia-ml.so.${NV_SOVER}" - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-cbl.so.${NV_SOVER}" - "libnvidia-rtcore.so.${NV_SOVER}" - "libnvoptix.so.${NV_SOVER}" - ) - fi - - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do - donvidia "${nv_libdir}"/${NV_LIB} - done - fi -} - -pkg_preinst() { - if use driver && use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use driver && use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi - - elog "To enable nvidia sleep services under systemd, run these commands:" - elog " systemctl enable nvidia-suspend.service" - elog " systemctl enable nvidia-hibernate.service" - elog " systemctl enable nvidia-resume.service" - elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" - elog "suitable path in case the default of /tmp does not work for you" - elog "For more information see:" - elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" -} - -pkg_prerm() { - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 -} - -pkg_postrm() { - use driver && use kernel_linux && linux-mod_pkg_postrm - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r5.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r5.ebuild deleted file mode 100644 index 6a7a82433171..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r5.ebuild +++ /dev/null @@ -1,589 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability systemd toolchain-funcs unpacker udev - -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" - -NV_URI="https://us.download.nvidia.com/XFree86/" -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -KEYWORDS="-* amd64" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" -REQUIRED_USE=" - tools? ( X ) - static-libs? ( tools ) -" - -COMMON=" - driver? ( kernel_linux? ( acct-group/video ) ) - kernel_linux? ( >=sys-libs/glibc-2.6.1 ) - tools? ( - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - gtk3? ( - x11-libs/gtk+:3 - ) - x11-libs/cairo - x11-libs/gdk-pixbuf[X] - x11-libs/gtk+:2 - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libXxf86vm - x11-libs/pango[X] - ) - X? ( - !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) - libglvnd? ( - media-libs/libglvnd[${MULTILIB_USEDEP}] - !app-eselect/eselect-opengl - ) - app-misc/pax-utils - ) -" -DEPEND=" - ${COMMON} - kernel_linux? ( virtual/linux-sources ) - tools? ( sys-apps/dbus ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - uvm? ( >=virtual/opencl-3 ) - wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) - X? ( - =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] - sys-libs/zlib[${MULTILIB_USEDEP}] - ) -" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -NV_KV_MAX_PLUS="5.4" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!I2C_NVIDIA_GPU - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - nvidia-driver_check -} - -pkg_setup() { - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use driver && use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - if use kernel_linux && kernel_is lt 2 6 9; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_configure() { - tc-export AR CC LD OBJCOPY - - default -} - -src_prepare() { - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die - cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-fno-common.patch \ - "${WORKDIR}"/nvidia-settings-linker.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-fno-common.patch - eapply "${WORKDIR}"/nvidia-settings-linker.patch - fi - - default - - if ! [ -f nvidia_icd.json ]; then - cp nvidia_icd.json.template nvidia_icd.json || die - sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die - fi -} - -src_compile() { - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use driver && use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile \ - KERNELRELEASE="${KV_FULL}" \ - src="${KERNEL_DIR}" - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ - DO_STRIP= \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - RANLIB="$(tc-getRANLIB)" - - emake -C "${S}"/nvidia-settings-${PV}/src \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if it is not /usr/lib -donvidia() { - # Full path to library - nv_LIB="${1}" - - # SOVER to use - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" - - # Where to install - nv_DEST="${2}" - - # Get just the library name - nv_LIBNAME=$(basename "${nv_LIB}") - - if [[ "${nv_DEST}" ]]; then - exeinto ${nv_DEST} - action="doexe" - else - nv_DEST="/usr/$(get_libdir)" - action="dolib.so" - fi - - # Install the library - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" - - # If the library has a SONAME and SONAME does not match the library name, - # then we need to create a symlink - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} - fi - - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} -} - -src_install() { - if use driver && use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-430.conf nvidia.conf - - if use uvm; then - doins "${FILESDIR}"/nvidia-rmmod.conf - udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules - else - sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ - > "${T}"/nvidia-rmmod.conf || die - doins "${T}"/nvidia-rmmod.conf - fi - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins ${NV_X11}/nvidia_drv.so - - # Xorg GLX driver - donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ - /usr/$(get_libdir)/xorg/modules/extensions - - # Xorg nvidia.conf - if has_version '>=x11-base/xorg-server-1.16'; then - insinto /usr/share/X11/xorg.conf.d - newins {,50-}nvidia-drm-outputclass.conf - fi - - insinto /usr/share/glvnd/egl_vendor.d - doins ${NV_X11}/10_nvidia.json - fi - - if use wayland; then - insinto /usr/share/egl/egl_external_platform.d - doins ${NV_X11}/10_nvidia_wayland.json - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins ${NV_OBJ}/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe ${NV_OBJ}/nvidia-xconfig - - insinto /etc/vulkan/icd.d - doins nvidia_icd.json - fi - - if use kernel_linux; then - doexe ${NV_OBJ}/nvidia-cuda-mps-control - doexe ${NV_OBJ}/nvidia-cuda-mps-server - doexe ${NV_OBJ}/nvidia-debugdump - doexe ${NV_OBJ}/nvidia-persistenced - doexe ${NV_OBJ}/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe ${NV_OBJ}/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="${D}/usr/$(get_libdir)" \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - PREFIX=/usr \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon ${NV_OBJ}/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - dobin ${NV_OBJ}/nvidia-bug-report.sh - - systemd_dounit *.service - dobin nvidia-sleep.sh - exeinto /lib/systemd/system-sleep - doexe nvidia - - if has_multilib_profile && use multilib; then - local OABI=${ABI} - for ABI in $(get_install_abis); do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}/README" - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}/README.txt" README - dodoc "${NV_DOC}/NVIDIA_Changelog" - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r ${NV_DOC}/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - if use libglvnd; then - local GL_ROOT="/usr/$(get_libdir)" - else - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - fi - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - NV_GLX_LIBRARIES=( - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libcuda.so.${NV_SOVER}" - "libnvcuvid.so.${NV_SOVER}" - "libnvidia-compiler.so.${NV_SOVER}" - "libnvidia-eglcore.so.${NV_SOVER}" - "libnvidia-encode.so.${NV_SOVER}" - "libnvidia-fatbinaryloader.so.${NV_SOVER}" - "libnvidia-fbc.so.${NV_SOVER}" - "libnvidia-glcore.so.${NV_SOVER}" - "libnvidia-glsi.so.${NV_SOVER}" - "libnvidia-glvkspirv.so.${NV_SOVER}" - "libnvidia-ifr.so.${NV_SOVER}" - "libnvidia-opencl.so.${NV_SOVER}" - "libnvidia-ptxjitcompiler.so.${NV_SOVER}" - "libvdpau_nvidia.so.${NV_SOVER}" - ) - if ! use libglvnd; then - NV_GLX_LIBRARIES+=( - "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" - "libGL.so.1.7.0 ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" - ) - fi - - if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-egl-wayland.so.1.1.3" - ) - fi - - if use kernel_FreeBSD; then - NV_GLX_LIBRARIES+=( - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux; then - NV_GLX_LIBRARIES+=( - "libnvidia-ml.so.${NV_SOVER}" - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-cbl.so.${NV_SOVER}" - "libnvidia-rtcore.so.${NV_SOVER}" - "libnvoptix.so.${NV_SOVER}" - ) - fi - - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do - donvidia "${nv_libdir}"/${NV_LIB} - done - fi -} - -pkg_preinst() { - if use driver && use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use driver && use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - fi - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi - - elog "To enable nvidia sleep services under systemd, run these commands:" - elog " systemctl enable nvidia-suspend.service" - elog " systemctl enable nvidia-hibernate.service" - elog " systemctl enable nvidia-resume.service" - elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" - elog "suitable path in case the default of /tmp does not work for you" - elog "For more information see:" - elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" -} - -pkg_prerm() { - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} - -pkg_postrm() { - use driver && use kernel_linux && linux-mod_pkg_postrm - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r6.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r6.ebuild new file mode 100644 index 000000000000..904301e291d3 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-435.21-r6.ebuild @@ -0,0 +1,589 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ + nvidia-driver portability systemd toolchain-funcs unpacker udev + +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" + +NV_URI="https://us.download.nvidia.com/XFree86/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + tools? ( + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 + ) +" + +EMULTILIB_PKG="true" +KEYWORDS="-* amd64" +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/${PV%.*}" + +IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" +REQUIRED_USE=" + tools? ( X ) + static-libs? ( tools ) +" + +COMMON=" + driver? ( kernel_linux? ( acct-group/video ) ) + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + dev-libs/jansson + gtk3? ( + x11-libs/gtk+:3 + ) + x11-libs/cairo + x11-libs/gdk-pixbuf[X] + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libXxf86vm + x11-libs/pango[X] + ) + X? ( + !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) + libglvnd? ( + media-libs/libglvnd[${MULTILIB_USEDEP}] + !app-eselect/eselect-opengl + ) + app-misc/pax-utils + ) +" +DEPEND=" + ${COMMON} + kernel_linux? ( virtual/linux-sources ) + tools? ( sys-apps/dbus ) +" +RDEPEND=" + ${COMMON} + tools? ( !media-video/nvidia-settings ) + uvm? ( >=virtual/opencl-3 ) + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) + X? ( + =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + ) +" +QA_PREBUILT="opt/* usr/lib*" +S=${WORKDIR}/ +NV_KV_MAX_PLUS="5.4" +CONFIG_CHECK=" + !DEBUG_MUTEXES + ~!I2C_NVIDIA_GPU + ~!LOCKDEP + ~DRM + ~DRM_KMS_HELPER + ~SYSVIPC +" + +pkg_pretend() { + nvidia-driver_check +} + +pkg_setup() { + nvidia-driver_check + + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use driver && use kernel_linux; then + MODULE_NAMES="nvidia(video:${S}/kernel)" + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" + + # This needs to run after MODULE_NAMES (so that the eclass checks + # whether the kernel supports loadable modules) but before BUILD_PARAMS + # is set (so that KV_DIR is populated). + linux-mod_pkg_setup + + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" + + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + + if kernel_is lt 2 6 9; then + eerror "You must build this against 2.6.9 or higher kernels." + fi + fi + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" + NV_DOC="${S}/doc" + NV_OBJ="${S}/obj" + NV_SRC="${S}/src" + NV_MAN="${S}/x11/man" + NV_X11="${S}/obj" + NV_SOVER=1 + elif use kernel_linux; then + NV_DOC="${S}" + NV_OBJ="${S}" + NV_SRC="${S}/kernel" + NV_MAN="${S}" + NV_X11="${S}" + NV_SOVER=${PV} + else + die "Could not determine proper NVIDIA package" + fi +} + +src_configure() { + tc-export AR CC LD OBJCOPY + + default +} + +src_prepare() { + local man_file + for man_file in "${NV_MAN}"/*1.gz; do + gunzip $man_file || die + done + + if use tools; then + cp "${FILESDIR}"/nvidia-settings-fno-common.patch "${WORKDIR}" || die + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die + sed -i \ + -e "s:@PV@:${PV}:g" \ + "${WORKDIR}"/nvidia-settings-fno-common.patch \ + "${WORKDIR}"/nvidia-settings-linker.patch \ + || die + eapply "${WORKDIR}"/nvidia-settings-fno-common.patch + eapply "${WORKDIR}"/nvidia-settings-linker.patch + fi + + default + + if ! [ -f nvidia_icd.json ]; then + cp nvidia_icd.json.template nvidia_icd.json || die + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die + fi +} + +src_compile() { + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use driver && use kernel_linux; then + BUILD_TARGETS=module linux-mod_src_compile \ + KERNELRELEASE="${KV_FULL}" \ + src="${KERNEL_DIR}" + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ + DO_STRIP= \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + RANLIB="$(tc-getRANLIB)" + + emake -C "${S}"/nvidia-settings-${PV}/src \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NVML_ENABLED=0 \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if it is not /usr/lib +donvidia() { + # Full path to library + nv_LIB="${1}" + + # SOVER to use + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" + + # Where to install + nv_DEST="${2}" + + # Get just the library name + nv_LIBNAME=$(basename "${nv_LIB}") + + if [[ "${nv_DEST}" ]]; then + exeinto ${nv_DEST} + action="doexe" + else + nv_DEST="/usr/$(get_libdir)" + action="dolib.so" + fi + + # Install the library + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" + + # If the library has a SONAME and SONAME does not match the library name, + # then we need to create a symlink + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} + fi + + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} +} + +src_install() { + if use driver && use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-430.conf nvidia.conf + + if use uvm; then + doins "${FILESDIR}"/nvidia-rmmod.conf + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules + else + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ + > "${T}"/nvidia-rmmod.conf || die + doins "${T}"/nvidia-rmmod.conf + fi + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ + /usr/$(get_libdir)/xorg/modules/extensions + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + + insinto /usr/share/glvnd/egl_vendor.d + doins ${NV_X11}/10_nvidia.json + fi + + if use wayland; then + insinto /usr/share/egl/egl_external_platform.d + doins ${NV_X11}/10_nvidia_wayland.json + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + + insinto /etc/vulkan/icd.d + doins nvidia_icd.json + fi + + if use kernel_linux; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1 + doman nvidia-modprobe.1 + doman nvidia-persistenced.1 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/ \ + DESTDIR="${D}" \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="${D}/usr/$(get_libdir)" \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + PREFIX=/usr \ + install + + if use static-libs; then + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a + + insinto /usr/include/NVCtrl + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h + fi + + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + + insinto /etc/nvidia + newins \ + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || \ + doicon ${NV_OBJ}/nvidia-settings.png + + domenu "${FILESDIR}"/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + systemd_dounit *.service + dobin nvidia-sleep.sh + exeinto /lib/systemd/system-sleep + doexe nvidia + + if has_multilib_profile && use multilib; then + local OABI=${ABI} + for ABI in $(multilib_get_enabled_abis); do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + # Documentation + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}"/nvidia-smi.1 + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1 + fi + + readme.gentoo_create_doc + + docinto html + dodoc -r ${NV_DOC}/html/* +} + +src_install-libs() { + local inslibdir=$(get_libdir) + if use libglvnd; then + local GL_ROOT="/usr/$(get_libdir)" + else + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + fi + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local nv_libdir="${NV_OBJ}" + + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then + nv_libdir="${NV_OBJ}"/32 + fi + + if use X; then + NV_GLX_LIBRARIES=( + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libOpenCL.so.1.0.0 ${CL_ROOT}" + "libcuda.so.${NV_SOVER}" + "libnvcuvid.so.${NV_SOVER}" + "libnvidia-compiler.so.${NV_SOVER}" + "libnvidia-eglcore.so.${NV_SOVER}" + "libnvidia-encode.so.${NV_SOVER}" + "libnvidia-fatbinaryloader.so.${NV_SOVER}" + "libnvidia-fbc.so.${NV_SOVER}" + "libnvidia-glcore.so.${NV_SOVER}" + "libnvidia-glsi.so.${NV_SOVER}" + "libnvidia-glvkspirv.so.${NV_SOVER}" + "libnvidia-ifr.so.${NV_SOVER}" + "libnvidia-opencl.so.${NV_SOVER}" + "libnvidia-ptxjitcompiler.so.${NV_SOVER}" + "libvdpau_nvidia.so.${NV_SOVER}" + ) + if ! use libglvnd; then + NV_GLX_LIBRARIES+=( + "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" + "libGL.so.1.7.0 ${GL_ROOT}" + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" + "libGLESv2.so.2.1.0 ${GL_ROOT}" + "libGLX.so.0 ${GL_ROOT}" + "libGLdispatch.so.0 ${GL_ROOT}" + "libOpenGL.so.0 ${GL_ROOT}" + ) + fi + + if use wayland && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-egl-wayland.so.1.1.3" + ) + fi + + if use kernel_FreeBSD; then + NV_GLX_LIBRARIES+=( + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux; then + NV_GLX_LIBRARIES+=( + "libnvidia-ml.so.${NV_SOVER}" + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-cbl.so.${NV_SOVER}" + "libnvidia-rtcore.so.${NV_SOVER}" + "libnvoptix.so.${NV_SOVER}" + ) + fi + + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do + donvidia "${nv_libdir}"/${NV_LIB} + done + fi +} + +pkg_preinst() { + if use driver && use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(getent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use driver && use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + fi + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi + + elog "To enable nvidia sleep services under systemd, run these commands:" + elog " systemctl enable nvidia-suspend.service" + elog " systemctl enable nvidia-hibernate.service" + elog " systemctl enable nvidia-resume.service" + elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" + elog "suitable path in case the default of /tmp does not work for you" + elog "For more information see:" + elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" +} + +pkg_prerm() { + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} + +pkg_postrm() { + use driver && use kernel_linux && linux-mod_pkg_postrm + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r1.ebuild deleted file mode 100644 index 22a311dd0d17..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r1.ebuild +++ /dev/null @@ -1,592 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability systemd toolchain-funcs unpacker udev - -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" - -NV_URI="https://us.download.nvidia.com/XFree86/" -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -KEYWORDS="-* amd64" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" -REQUIRED_USE=" - tools? ( X ) - static-libs? ( tools ) -" - -COMMON=" - driver? ( kernel_linux? ( acct-group/video ) ) - kernel_linux? ( >=sys-libs/glibc-2.6.1 ) - tools? ( - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - gtk3? ( - x11-libs/gtk+:3 - ) - x11-libs/cairo - x11-libs/gdk-pixbuf[X] - x11-libs/gtk+:2 - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libXxf86vm - x11-libs/pango[X] - ) - X? ( - !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) - libglvnd? ( - media-libs/libglvnd[${MULTILIB_USEDEP}] - !app-eselect/eselect-opengl - ) - app-misc/pax-utils - ) -" -DEPEND=" - ${COMMON} - kernel_linux? ( virtual/linux-sources ) - tools? ( sys-apps/dbus ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - uvm? ( >=virtual/opencl-3 ) - wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) - X? ( - =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] - sys-libs/zlib[${MULTILIB_USEDEP}] - ) -" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -PATCHES=( - "${FILESDIR}"/${PN}-440.26-locale.patch -) -NV_KV_MAX_PLUS="5.8" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!I2C_NVIDIA_GPU - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - nvidia-driver_check -} - -pkg_setup() { - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use driver && use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - if use kernel_linux && kernel_is lt 2 6 9; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_configure() { - tc-export AR CC LD OBJCOPY - - default -} - -src_prepare() { - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-linker.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-linker.patch - fi - - default - - if ! [ -f nvidia_icd.json ]; then - cp nvidia_icd.json.template nvidia_icd.json || die - sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die - fi -} - -src_compile() { - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use driver && use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile \ - KERNELRELEASE="${KV_FULL}" \ - src="${KERNEL_DIR}" - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ - DO_STRIP= \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - RANLIB="$(tc-getRANLIB)" - - emake -C "${S}"/nvidia-settings-${PV}/src \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if it is not /usr/lib -donvidia() { - # Full path to library - nv_LIB="${1}" - - # SOVER to use - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" - - # Where to install - nv_DEST="${2}" - - # Get just the library name - nv_LIBNAME=$(basename "${nv_LIB}") - - if [[ "${nv_DEST}" ]]; then - exeinto ${nv_DEST} - action="doexe" - else - nv_DEST="/usr/$(get_libdir)" - action="dolib.so" - fi - - # Install the library - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" - - # If the library has a SONAME and SONAME does not match the library name, - # then we need to create a symlink - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} - fi - - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} -} - -src_install() { - if use driver && use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-430.conf nvidia.conf - - if use uvm; then - doins "${FILESDIR}"/nvidia-rmmod.conf - udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules - else - sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ - > "${T}"/nvidia-rmmod.conf || die - doins "${T}"/nvidia-rmmod.conf - fi - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins ${NV_X11}/nvidia_drv.so - - # Xorg GLX driver - donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ - /usr/$(get_libdir)/xorg/modules/extensions - - # Xorg nvidia.conf - if has_version '>=x11-base/xorg-server-1.16'; then - insinto /usr/share/X11/xorg.conf.d - newins {,50-}nvidia-drm-outputclass.conf - fi - - insinto /usr/share/glvnd/egl_vendor.d - doins ${NV_X11}/10_nvidia.json - fi - - if use wayland; then - insinto /usr/share/egl/egl_external_platform.d - doins ${NV_X11}/10_nvidia_wayland.json - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins ${NV_OBJ}/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe ${NV_OBJ}/nvidia-xconfig - - insinto /etc/vulkan/icd.d - doins nvidia_icd.json - - insinto /etc/vulkan/implicit_layer.d - doins nvidia_layers.json - fi - - if use kernel_linux; then - doexe ${NV_OBJ}/nvidia-cuda-mps-control - doexe ${NV_OBJ}/nvidia-cuda-mps-server - doexe ${NV_OBJ}/nvidia-debugdump - doexe ${NV_OBJ}/nvidia-persistenced - doexe ${NV_OBJ}/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe ${NV_OBJ}/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="${D}/usr/$(get_libdir)" \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - PREFIX=/usr \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon ${NV_OBJ}/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - dobin ${NV_OBJ}/nvidia-bug-report.sh - - systemd_dounit *.service - dobin nvidia-sleep.sh - exeinto /lib/systemd/system-sleep - doexe nvidia - - if has_multilib_profile && use multilib; then - local OABI=${ABI} - for ABI in $(get_install_abis); do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}/README" - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}/README.txt" README - dodoc "${NV_DOC}/NVIDIA_Changelog" - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r ${NV_DOC}/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - if use libglvnd; then - local GL_ROOT="/usr/$(get_libdir)" - else - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - fi - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - NV_GLX_LIBRARIES=( - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libcuda.so.${NV_SOVER}" - "libnvcuvid.so.${NV_SOVER}" - "libnvidia-compiler.so.${NV_SOVER}" - "libnvidia-eglcore.so.${NV_SOVER}" - "libnvidia-encode.so.${NV_SOVER}" - "libnvidia-fatbinaryloader.so.${NV_SOVER}" - "libnvidia-fbc.so.${NV_SOVER}" - "libnvidia-glcore.so.${NV_SOVER}" - "libnvidia-glsi.so.${NV_SOVER}" - "libnvidia-glvkspirv.so.${NV_SOVER}" - "libnvidia-ifr.so.${NV_SOVER}" - "libnvidia-opencl.so.${NV_SOVER}" - "libnvidia-ptxjitcompiler.so.${NV_SOVER}" - "libvdpau_nvidia.so.${NV_SOVER}" - ) - if ! use libglvnd; then - NV_GLX_LIBRARIES+=( - "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" - "libGL.so.1.7.0 ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" - ) - fi - - if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-egl-wayland.so.1.1.4" - ) - fi - - if use kernel_FreeBSD; then - NV_GLX_LIBRARIES+=( - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux; then - NV_GLX_LIBRARIES+=( - "libnvidia-ml.so.${NV_SOVER}" - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-cbl.so.${NV_SOVER}" - "libnvidia-rtcore.so.${NV_SOVER}" - "libnvoptix.so.${NV_SOVER}" - ) - fi - - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do - donvidia "${nv_libdir}"/${NV_LIB} - done - fi -} - -pkg_preinst() { - if use driver && use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use driver && use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - fi - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi - - elog "To enable nvidia sleep services under systemd, run these commands:" - elog " systemctl enable nvidia-suspend.service" - elog " systemctl enable nvidia-hibernate.service" - elog " systemctl enable nvidia-resume.service" - elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" - elog "suitable path in case the default of /tmp does not work for you" - elog "For more information see:" - elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" -} - -pkg_prerm() { - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} - -pkg_postrm() { - use driver && use kernel_linux && linux-mod_pkg_postrm - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r2.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r2.ebuild new file mode 100644 index 000000000000..f0e33105985a --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-440.100-r2.ebuild @@ -0,0 +1,592 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ + nvidia-driver portability systemd toolchain-funcs unpacker udev + +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" + +NV_URI="https://us.download.nvidia.com/XFree86/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + tools? ( + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 + ) +" + +EMULTILIB_PKG="true" +KEYWORDS="-* amd64" +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/${PV%.*}" + +IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" +REQUIRED_USE=" + tools? ( X ) + static-libs? ( tools ) +" + +COMMON=" + driver? ( kernel_linux? ( acct-group/video ) ) + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + dev-libs/jansson + gtk3? ( + x11-libs/gtk+:3 + ) + x11-libs/cairo + x11-libs/gdk-pixbuf[X] + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libXxf86vm + x11-libs/pango[X] + ) + X? ( + !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) + libglvnd? ( + media-libs/libglvnd[${MULTILIB_USEDEP}] + !app-eselect/eselect-opengl + ) + app-misc/pax-utils + ) +" +DEPEND=" + ${COMMON} + kernel_linux? ( virtual/linux-sources ) + tools? ( sys-apps/dbus ) +" +RDEPEND=" + ${COMMON} + tools? ( !media-video/nvidia-settings ) + uvm? ( >=virtual/opencl-3 ) + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) + X? ( + =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + ) +" +QA_PREBUILT="opt/* usr/lib*" +S=${WORKDIR}/ +PATCHES=( + "${FILESDIR}"/${PN}-440.26-locale.patch +) +NV_KV_MAX_PLUS="5.8" +CONFIG_CHECK=" + !DEBUG_MUTEXES + ~!I2C_NVIDIA_GPU + ~!LOCKDEP + ~DRM + ~DRM_KMS_HELPER + ~SYSVIPC +" + +pkg_pretend() { + nvidia-driver_check +} + +pkg_setup() { + nvidia-driver_check + + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use driver && use kernel_linux; then + MODULE_NAMES="nvidia(video:${S}/kernel)" + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" + + # This needs to run after MODULE_NAMES (so that the eclass checks + # whether the kernel supports loadable modules) but before BUILD_PARAMS + # is set (so that KV_DIR is populated). + linux-mod_pkg_setup + + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" + + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + + if kernel_is lt 2 6 9; then + eerror "You must build this against 2.6.9 or higher kernels." + fi + fi + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" + NV_DOC="${S}/doc" + NV_OBJ="${S}/obj" + NV_SRC="${S}/src" + NV_MAN="${S}/x11/man" + NV_X11="${S}/obj" + NV_SOVER=1 + elif use kernel_linux; then + NV_DOC="${S}" + NV_OBJ="${S}" + NV_SRC="${S}/kernel" + NV_MAN="${S}" + NV_X11="${S}" + NV_SOVER=${PV} + else + die "Could not determine proper NVIDIA package" + fi +} + +src_configure() { + tc-export AR CC LD OBJCOPY + + default +} + +src_prepare() { + local man_file + for man_file in "${NV_MAN}"/*1.gz; do + gunzip $man_file || die + done + + if use tools; then + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die + sed -i \ + -e "s:@PV@:${PV}:g" \ + "${WORKDIR}"/nvidia-settings-linker.patch \ + || die + eapply "${WORKDIR}"/nvidia-settings-linker.patch + fi + + default + + if ! [ -f nvidia_icd.json ]; then + cp nvidia_icd.json.template nvidia_icd.json || die + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die + fi +} + +src_compile() { + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use driver && use kernel_linux; then + BUILD_TARGETS=module linux-mod_src_compile \ + KERNELRELEASE="${KV_FULL}" \ + src="${KERNEL_DIR}" + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ + DO_STRIP= \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + RANLIB="$(tc-getRANLIB)" + + emake -C "${S}"/nvidia-settings-${PV}/src \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NVML_ENABLED=0 \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if it is not /usr/lib +donvidia() { + # Full path to library + nv_LIB="${1}" + + # SOVER to use + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" + + # Where to install + nv_DEST="${2}" + + # Get just the library name + nv_LIBNAME=$(basename "${nv_LIB}") + + if [[ "${nv_DEST}" ]]; then + exeinto ${nv_DEST} + action="doexe" + else + nv_DEST="/usr/$(get_libdir)" + action="dolib.so" + fi + + # Install the library + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" + + # If the library has a SONAME and SONAME does not match the library name, + # then we need to create a symlink + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} + fi + + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} +} + +src_install() { + if use driver && use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-430.conf nvidia.conf + + if use uvm; then + doins "${FILESDIR}"/nvidia-rmmod.conf + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules + else + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ + > "${T}"/nvidia-rmmod.conf || die + doins "${T}"/nvidia-rmmod.conf + fi + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ + /usr/$(get_libdir)/xorg/modules/extensions + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + + insinto /usr/share/glvnd/egl_vendor.d + doins ${NV_X11}/10_nvidia.json + fi + + if use wayland; then + insinto /usr/share/egl/egl_external_platform.d + doins ${NV_X11}/10_nvidia_wayland.json + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + + insinto /etc/vulkan/icd.d + doins nvidia_icd.json + + insinto /etc/vulkan/implicit_layer.d + doins nvidia_layers.json + fi + + if use kernel_linux; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1 + doman nvidia-modprobe.1 + doman nvidia-persistenced.1 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/ \ + DESTDIR="${D}" \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="${D}/usr/$(get_libdir)" \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + PREFIX=/usr \ + install + + if use static-libs; then + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a + + insinto /usr/include/NVCtrl + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h + fi + + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + + insinto /etc/nvidia + newins \ + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || \ + doicon ${NV_OBJ}/nvidia-settings.png + + domenu "${FILESDIR}"/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + systemd_dounit *.service + dobin nvidia-sleep.sh + exeinto /lib/systemd/system-sleep + doexe nvidia + + if has_multilib_profile && use multilib; then + local OABI=${ABI} + for ABI in $(multilib_get_enabled_abis); do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + # Documentation + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}"/nvidia-smi.1 + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1 + fi + + readme.gentoo_create_doc + + docinto html + dodoc -r ${NV_DOC}/html/* +} + +src_install-libs() { + local inslibdir=$(get_libdir) + if use libglvnd; then + local GL_ROOT="/usr/$(get_libdir)" + else + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + fi + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local nv_libdir="${NV_OBJ}" + + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then + nv_libdir="${NV_OBJ}"/32 + fi + + if use X; then + NV_GLX_LIBRARIES=( + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libOpenCL.so.1.0.0 ${CL_ROOT}" + "libcuda.so.${NV_SOVER}" + "libnvcuvid.so.${NV_SOVER}" + "libnvidia-compiler.so.${NV_SOVER}" + "libnvidia-eglcore.so.${NV_SOVER}" + "libnvidia-encode.so.${NV_SOVER}" + "libnvidia-fatbinaryloader.so.${NV_SOVER}" + "libnvidia-fbc.so.${NV_SOVER}" + "libnvidia-glcore.so.${NV_SOVER}" + "libnvidia-glsi.so.${NV_SOVER}" + "libnvidia-glvkspirv.so.${NV_SOVER}" + "libnvidia-ifr.so.${NV_SOVER}" + "libnvidia-opencl.so.${NV_SOVER}" + "libnvidia-ptxjitcompiler.so.${NV_SOVER}" + "libvdpau_nvidia.so.${NV_SOVER}" + ) + if ! use libglvnd; then + NV_GLX_LIBRARIES+=( + "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" + "libGL.so.1.7.0 ${GL_ROOT}" + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" + "libGLESv2.so.2.1.0 ${GL_ROOT}" + "libGLX.so.0 ${GL_ROOT}" + "libGLdispatch.so.0 ${GL_ROOT}" + "libOpenGL.so.0 ${GL_ROOT}" + ) + fi + + if use wayland && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-egl-wayland.so.1.1.4" + ) + fi + + if use kernel_FreeBSD; then + NV_GLX_LIBRARIES+=( + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux; then + NV_GLX_LIBRARIES+=( + "libnvidia-ml.so.${NV_SOVER}" + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-cbl.so.${NV_SOVER}" + "libnvidia-rtcore.so.${NV_SOVER}" + "libnvoptix.so.${NV_SOVER}" + ) + fi + + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do + donvidia "${nv_libdir}"/${NV_LIB} + done + fi +} + +pkg_preinst() { + if use driver && use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(getent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use driver && use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + fi + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi + + elog "To enable nvidia sleep services under systemd, run these commands:" + elog " systemctl enable nvidia-suspend.service" + elog " systemctl enable nvidia-hibernate.service" + elog " systemctl enable nvidia-resume.service" + elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" + elog "suitable path in case the default of /tmp does not work for you" + elog "For more information see:" + elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" +} + +pkg_prerm() { + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} + +pkg_postrm() { + use driver && use kernel_linux && linux-mod_pkg_postrm + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-450.51-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-450.51-r1.ebuild deleted file mode 100644 index d4a8209c5213..000000000000 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-450.51-r1.ebuild +++ /dev/null @@ -1,593 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ - nvidia-driver portability systemd toolchain-funcs unpacker udev - -AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" -ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" - -NV_URI="https://us.download.nvidia.com/XFree86/" -SRC_URI=" - amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) - amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) - tools? ( - https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 - ) -" - -EMULTILIB_PKG="true" -KEYWORDS="-* ~amd64" -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0/${PV%.*}" - -IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" -REQUIRED_USE=" - tools? ( X ) - static-libs? ( tools ) -" - -COMMON=" - driver? ( kernel_linux? ( acct-group/video ) ) - kernel_linux? ( >=sys-libs/glibc-2.6.1 ) - tools? ( - dev-libs/atk - dev-libs/glib:2 - dev-libs/jansson - gtk3? ( - x11-libs/gtk+:3 - ) - x11-libs/cairo - x11-libs/gdk-pixbuf[X] - x11-libs/gtk+:2 - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libXxf86vm - x11-libs/pango[X] - ) - X? ( - !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) - libglvnd? ( - media-libs/libglvnd[${MULTILIB_USEDEP}] - !app-eselect/eselect-opengl - ) - app-misc/pax-utils - ) -" -DEPEND=" - ${COMMON} - kernel_linux? ( virtual/linux-sources ) - tools? ( sys-apps/dbus ) -" -RDEPEND=" - ${COMMON} - tools? ( !media-video/nvidia-settings ) - uvm? ( >=virtual/opencl-3 ) - wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) - X? ( - =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] - >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] - >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] - sys-libs/zlib[${MULTILIB_USEDEP}] - ) - kernel_linux? ( net-libs/libtirpc ) -" -QA_PREBUILT="opt/* usr/lib*" -S=${WORKDIR}/ -PATCHES=( - "${FILESDIR}"/${PN}-440.26-locale.patch -) -NV_KV_MAX_PLUS="5.8" -CONFIG_CHECK=" - !DEBUG_MUTEXES - ~!I2C_NVIDIA_GPU - ~!LOCKDEP - ~DRM - ~DRM_KMS_HELPER - ~SYSVIPC -" - -pkg_pretend() { - nvidia-driver_check -} - -pkg_setup() { - nvidia-driver_check - - # try to turn off distcc and ccache for people that have a problem with it - export DISTCC_DISABLE=1 - export CCACHE_DISABLE=1 - - if use driver && use kernel_linux; then - MODULE_NAMES="nvidia(video:${S}/kernel)" - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" - - # This needs to run after MODULE_NAMES (so that the eclass checks - # whether the kernel supports loadable modules) but before BUILD_PARAMS - # is set (so that KV_DIR is populated). - linux-mod_pkg_setup - - BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" - - # linux-mod_src_compile calls set_arch_to_kernel, which - # sets the ARCH to x86 but NVIDIA's wrapping Makefile - # expects x86_64 or i386 and then converts it to x86 - # later on in the build process - BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" - fi - - if use kernel_linux && kernel_is lt 2 6 9; then - eerror "You must build this against 2.6.9 or higher kernels." - fi - - # set variables to where files are in the package structure - if use kernel_FreeBSD; then - use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" - NV_DOC="${S}/doc" - NV_OBJ="${S}/obj" - NV_SRC="${S}/src" - NV_MAN="${S}/x11/man" - NV_X11="${S}/obj" - NV_SOVER=1 - elif use kernel_linux; then - NV_DOC="${S}" - NV_OBJ="${S}" - NV_SRC="${S}/kernel" - NV_MAN="${S}" - NV_X11="${S}" - NV_SOVER=${PV} - else - die "Could not determine proper NVIDIA package" - fi -} - -src_configure() { - tc-export AR CC LD OBJCOPY - - default -} - -src_prepare() { - local man_file - for man_file in "${NV_MAN}"/*1.gz; do - gunzip $man_file || die - done - - if use tools; then - cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die - sed -i \ - -e "s:@PV@:${PV}:g" \ - "${WORKDIR}"/nvidia-settings-linker.patch \ - || die - eapply "${WORKDIR}"/nvidia-settings-linker.patch - fi - - default - - if ! [ -f nvidia_icd.json ]; then - cp nvidia_icd.json.template nvidia_icd.json || die - sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die - fi -} - -src_compile() { - cd "${NV_SRC}" - if use kernel_FreeBSD; then - MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ - LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die - elif use driver && use kernel_linux; then - BUILD_TARGETS=module linux-mod_src_compile \ - KERNELRELEASE="${KV_FULL}" \ - src="${KERNEL_DIR}" - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ - DO_STRIP= \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - RANLIB="$(tc-getRANLIB)" - - emake -C "${S}"/nvidia-settings-${PV}/src \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="$(get_libdir)" \ - NVLD="$(tc-getLD)" \ - NVML_ENABLED=0 \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. - fi -} - -# Install nvidia library: -# the first parameter is the library to install -# the second parameter is the provided soversion -# the third parameter is the target directory if it is not /usr/lib -donvidia() { - # Full path to library - nv_LIB="${1}" - - # SOVER to use - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" - - # Where to install - nv_DEST="${2}" - - # Get just the library name - nv_LIBNAME=$(basename "${nv_LIB}") - - if [[ "${nv_DEST}" ]]; then - exeinto ${nv_DEST} - action="doexe" - else - nv_DEST="/usr/$(get_libdir)" - action="dolib.so" - fi - - # Install the library - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" - - # If the library has a SONAME and SONAME does not match the library name, - # then we need to create a symlink - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} - fi - - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} -} - -src_install() { - if use driver && use kernel_linux; then - linux-mod_src_install - - # Add the aliases - # This file is tweaked with the appropriate video group in - # pkg_preinst, see bug #491414 - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-430.conf nvidia.conf - - if use uvm; then - doins "${FILESDIR}"/nvidia-rmmod.conf - udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules - else - sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ - > "${T}"/nvidia-rmmod.conf || die - doins "${T}"/nvidia-rmmod.conf - fi - - # Ensures that our device nodes are created when not using X - exeinto "$(get_udevdir)" - newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh - udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules - elif use kernel_FreeBSD; then - if use x86-fbsd; then - insinto /boot/modules - doins "${S}/src/nvidia.kld" - fi - - exeinto /boot/modules - doexe "${S}/src/nvidia.ko" - fi - - # NVIDIA kernel <-> userspace driver config lib - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} - - # NVIDIA framebuffer capture library - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} - - # NVIDIA video encode/decode <-> CUDA - if use kernel_linux; then - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} - fi - - if use X; then - # Xorg DDX driver - insinto /usr/$(get_libdir)/xorg/modules/drivers - doins ${NV_X11}/nvidia_drv.so - - # Xorg GLX driver - donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ - /usr/$(get_libdir)/xorg/modules/extensions - - # Xorg nvidia.conf - if has_version '>=x11-base/xorg-server-1.16'; then - insinto /usr/share/X11/xorg.conf.d - newins {,50-}nvidia-drm-outputclass.conf - fi - - insinto /usr/share/glvnd/egl_vendor.d - doins ${NV_X11}/10_nvidia.json - fi - - if use wayland; then - insinto /usr/share/egl/egl_external_platform.d - doins ${NV_X11}/10_nvidia_wayland.json - fi - - # OpenCL ICD for NVIDIA - if use kernel_linux; then - insinto /etc/OpenCL/vendors - doins ${NV_OBJ}/nvidia.icd - fi - - # Helper Apps - exeinto /opt/bin/ - - if use X; then - doexe ${NV_OBJ}/nvidia-xconfig - - insinto /etc/vulkan/icd.d - doins nvidia_icd.json - - insinto /etc/vulkan/implicit_layer.d - doins nvidia_layers.json - fi - - if use kernel_linux; then - doexe ${NV_OBJ}/nvidia-cuda-mps-control - doexe ${NV_OBJ}/nvidia-cuda-mps-server - doexe ${NV_OBJ}/nvidia-debugdump - doexe ${NV_OBJ}/nvidia-persistenced - doexe ${NV_OBJ}/nvidia-smi - - # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) - doexe ${NV_OBJ}/nvidia-modprobe - fowners root:video /opt/bin/nvidia-modprobe - fperms 4710 /opt/bin/nvidia-modprobe - dosym /{opt,usr}/bin/nvidia-modprobe - - doman nvidia-cuda-mps-control.1 - doman nvidia-modprobe.1 - doman nvidia-persistenced.1 - newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi - newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced - newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced - fi - - if use tools; then - emake -C "${S}"/nvidia-settings-${PV}/src/ \ - DESTDIR="${D}" \ - DO_STRIP= \ - GTK3_AVAILABLE=$(usex gtk3 1 0) \ - LIBDIR="${D}/usr/$(get_libdir)" \ - NV_USE_BUNDLED_LIBJANSSON=0 \ - NV_VERBOSE=1 \ - OUTPUTDIR=. \ - PREFIX=/usr \ - install - - if use static-libs; then - dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a - - insinto /usr/include/NVCtrl - doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h - fi - - insinto /usr/share/nvidia/ - doins nvidia-application-profiles-${PV}-key-documentation - - insinto /etc/nvidia - newins \ - nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc - - # There is no icon in the FreeBSD tarball. - use kernel_FreeBSD || \ - doicon ${NV_OBJ}/nvidia-settings.png - - domenu "${FILESDIR}"/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - dobin ${NV_OBJ}/nvidia-bug-report.sh - - systemd_dounit *.service - dobin nvidia-sleep.sh - exeinto /lib/systemd/system-sleep - doexe nvidia - - if has_multilib_profile && use multilib; then - local OABI=${ABI} - for ABI in $(get_install_abis); do - src_install-libs - done - ABI=${OABI} - unset OABI - else - src_install-libs - fi - - is_final_abi || die "failed to iterate through all ABIs" - - # Documentation - if use kernel_FreeBSD; then - dodoc "${NV_DOC}/README" - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - else - # Docs - newdoc "${NV_DOC}/README.txt" README - dodoc "${NV_DOC}/NVIDIA_Changelog" - doman "${NV_MAN}"/nvidia-smi.1 - use X && doman "${NV_MAN}"/nvidia-xconfig.1 - use tools && doman "${NV_MAN}"/nvidia-settings.1 - doman "${NV_MAN}"/nvidia-cuda-mps-control.1 - fi - - readme.gentoo_create_doc - - docinto html - dodoc -r ${NV_DOC}/html/* -} - -src_install-libs() { - local inslibdir=$(get_libdir) - if use libglvnd; then - local GL_ROOT="/usr/$(get_libdir)" - else - local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" - fi - local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" - local nv_libdir="${NV_OBJ}" - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then - nv_libdir="${NV_OBJ}"/32 - fi - - if use X; then - NV_GLX_LIBRARIES=( - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" - "libOpenCL.so.1.0.0 ${CL_ROOT}" - "libcuda.so.${NV_SOVER}" - "libnvcuvid.so.${NV_SOVER}" - "libnvidia-compiler.so.${NV_SOVER}" - "libnvidia-eglcore.so.${NV_SOVER}" - "libnvidia-encode.so.${NV_SOVER}" - "libnvidia-fbc.so.${NV_SOVER}" - "libnvidia-glcore.so.${NV_SOVER}" - "libnvidia-glsi.so.${NV_SOVER}" - "libnvidia-glvkspirv.so.${NV_SOVER}" - "libnvidia-ifr.so.${NV_SOVER}" - "libnvidia-opencl.so.${NV_SOVER}" - "libnvidia-ptxjitcompiler.so.${NV_SOVER}" - "libvdpau_nvidia.so.${NV_SOVER}" - ) - if ! use libglvnd; then - NV_GLX_LIBRARIES+=( - "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" - "libGL.so.1.7.0 ${GL_ROOT}" - "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" - "libGLESv2.so.2.1.0 ${GL_ROOT}" - "libGLX.so.0 ${GL_ROOT}" - "libGLdispatch.so.0 ${GL_ROOT}" - "libOpenGL.so.0 ${GL_ROOT}" - ) - fi - - if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-egl-wayland.so.1.1.4" - ) - fi - - if use kernel_FreeBSD; then - NV_GLX_LIBRARIES+=( - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux; then - NV_GLX_LIBRARIES+=( - "libnvidia-ml.so.${NV_SOVER}" - "libnvidia-tls.so.${NV_SOVER}" - ) - fi - - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; - then - NV_GLX_LIBRARIES+=( - "libnvidia-cbl.so.${NV_SOVER}" - "libnvidia-ngx.so.${NV_SOVER}" - "libnvidia-rtcore.so.${NV_SOVER}" - "libnvoptix.so.${NV_SOVER}" - ) - fi - - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do - donvidia "${nv_libdir}"/${NV_LIB} - done - fi -} - -pkg_preinst() { - if use driver && use kernel_linux; then - linux-mod_pkg_preinst - - local videogroup="$(getent group video | cut -d ':' -f 3)" - if [ -z "${videogroup}" ]; then - eerror "Failed to determine the video group gid" - die "Failed to determine the video group gid" - else - sed -i \ - -e "s:PACKAGE:${PF}:g" \ - -e "s:VIDEOGID:${videogroup}:" \ - "${D}"/etc/modprobe.d/nvidia.conf || die - fi - fi - - # Clean the dynamic libGL stuff's home to ensure - # we dont have stale libs floating around - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then - rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* - fi - # Make sure we nuke the old nvidia-glx's env.d file - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then - rm -f "${ROOT}"/etc/env.d/09nvidia - fi -} - -pkg_postinst() { - use driver && use kernel_linux && linux-mod_pkg_postinst - - # Switch to the nvidia implementation - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia - fi - - readme.gentoo_print_elog - - if ! use X; then - elog "You have elected to not install the X.org driver. Along with" - elog "this the OpenGL libraries and VDPAU libraries were not" - elog "installed. Additionally, once the driver is loaded your card" - elog "and fan will run at max speed which may not be desirable." - elog "Use the 'nvidia-smi' init script to have your card and fan" - elog "speed scale appropriately." - elog - fi - if ! use tools; then - elog "USE=tools controls whether the nvidia-settings application" - elog "is installed. If you would like to use it, enable that" - elog "flag and re-emerge this ebuild. Optionally you can install" - elog "media-video/nvidia-settings" - elog - fi - - elog "To enable nvidia sleep services under systemd, run these commands:" - elog " systemctl enable nvidia-suspend.service" - elog " systemctl enable nvidia-hibernate.service" - elog " systemctl enable nvidia-resume.service" - elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" - elog "suitable path in case the default of /tmp does not work for you" - elog "For more information see:" - elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" -} - -pkg_prerm() { - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} - -pkg_postrm() { - use driver && use kernel_linux && linux-mod_pkg_postrm - if ! use libglvnd; then - use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 - fi -} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-450.57-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-450.57-r1.ebuild new file mode 100644 index 000000000000..8c40fd807ccf --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-450.57-r1.ebuild @@ -0,0 +1,595 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ + nvidia-driver portability systemd toolchain-funcs unpacker udev + +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" + +NV_URI="https://us.download.nvidia.com/XFree86/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + tools? ( + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 + ) +" + +EMULTILIB_PKG="true" +KEYWORDS="-* amd64" +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/${PV%.*}" + +IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" +REQUIRED_USE=" + tools? ( X ) + static-libs? ( tools ) +" + +COMMON=" + driver? ( kernel_linux? ( acct-group/video ) ) + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + dev-libs/jansson + gtk3? ( + x11-libs/gtk+:3 + ) + x11-libs/cairo + x11-libs/gdk-pixbuf[X] + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libXxf86vm + x11-libs/pango[X] + ) + X? ( + !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) + libglvnd? ( + media-libs/libglvnd[${MULTILIB_USEDEP}] + !app-eselect/eselect-opengl + ) + app-misc/pax-utils + ) +" +DEPEND=" + ${COMMON} + kernel_linux? ( virtual/linux-sources ) + tools? ( sys-apps/dbus ) +" +RDEPEND=" + ${COMMON} + tools? ( !media-video/nvidia-settings ) + uvm? ( >=virtual/opencl-3 ) + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) + X? ( + =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + ) + kernel_linux? ( net-libs/libtirpc ) +" +QA_PREBUILT="opt/* usr/lib*" +S=${WORKDIR}/ +PATCHES=( + "${FILESDIR}"/${PN}-440.26-locale.patch +) +NV_KV_MAX_PLUS="5.9" +CONFIG_CHECK=" + !DEBUG_MUTEXES + ~!I2C_NVIDIA_GPU + ~!LOCKDEP + ~DRM + ~DRM_KMS_HELPER + ~SYSVIPC +" + +pkg_pretend() { + nvidia-driver_check +} + +pkg_setup() { + nvidia-driver_check + + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use driver && use kernel_linux; then + MODULE_NAMES="nvidia(video:${S}/kernel)" + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" + + # This needs to run after MODULE_NAMES (so that the eclass checks + # whether the kernel supports loadable modules) but before BUILD_PARAMS + # is set (so that KV_DIR is populated). + linux-mod_pkg_setup + + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" + + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + + if kernel_is lt 2 6 9; then + eerror "You must build this against 2.6.9 or higher kernels." + fi + fi + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" + NV_DOC="${S}/doc" + NV_OBJ="${S}/obj" + NV_SRC="${S}/src" + NV_MAN="${S}/x11/man" + NV_X11="${S}/obj" + NV_SOVER=1 + elif use kernel_linux; then + NV_DOC="${S}" + NV_OBJ="${S}" + NV_SRC="${S}/kernel" + NV_MAN="${S}" + NV_X11="${S}" + NV_SOVER=${PV} + else + die "Could not determine proper NVIDIA package" + fi +} + +src_configure() { + tc-export AR CC LD OBJCOPY + + default +} + +src_prepare() { + local man_file + for man_file in "${NV_MAN}"/*1.gz; do + gunzip $man_file || die + done + + if use tools; then + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die + sed -i \ + -e "s:@PV@:${PV}:g" \ + "${WORKDIR}"/nvidia-settings-linker.patch \ + || die + eapply "${WORKDIR}"/nvidia-settings-linker.patch + fi + + default + + if ! [ -f nvidia_icd.json ]; then + cp nvidia_icd.json.template nvidia_icd.json || die + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die + fi +} + +src_compile() { + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use driver && use kernel_linux; then + BUILD_TARGETS=module linux-mod_src_compile \ + KERNELRELEASE="${KV_FULL}" \ + src="${KERNEL_DIR}" + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ + DO_STRIP= \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + RANLIB="$(tc-getRANLIB)" + + emake -C "${S}"/nvidia-settings-${PV}/src \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NVML_ENABLED=0 \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if it is not /usr/lib +donvidia() { + # Full path to library + nv_LIB="${1}" + + # SOVER to use + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" + + # Where to install + nv_DEST="${2}" + + # Get just the library name + nv_LIBNAME=$(basename "${nv_LIB}") + + if [[ "${nv_DEST}" ]]; then + exeinto ${nv_DEST} + action="doexe" + else + nv_DEST="/usr/$(get_libdir)" + action="dolib.so" + fi + + # Install the library + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" + + # If the library has a SONAME and SONAME does not match the library name, + # then we need to create a symlink + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} + fi + + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} +} + +src_install() { + if use driver && use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-430.conf nvidia.conf + + if use uvm; then + doins "${FILESDIR}"/nvidia-rmmod.conf + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules + else + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ + > "${T}"/nvidia-rmmod.conf || die + doins "${T}"/nvidia-rmmod.conf + fi + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ + /usr/$(get_libdir)/xorg/modules/extensions + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + + insinto /usr/share/glvnd/egl_vendor.d + doins ${NV_X11}/10_nvidia.json + fi + + if use wayland; then + insinto /usr/share/egl/egl_external_platform.d + doins ${NV_X11}/10_nvidia_wayland.json + fi + + insinto /etc/vulkan/icd.d + doins nvidia_icd.json + + insinto /etc/vulkan/implicit_layer.d + doins nvidia_layers.json + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + fi + + if use kernel_linux; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1 + doman nvidia-modprobe.1 + doman nvidia-persistenced.1 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/ \ + DESTDIR="${D}" \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="${D}/usr/$(get_libdir)" \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + PREFIX=/usr \ + install + + if use static-libs; then + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a + + insinto /usr/include/NVCtrl + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h + fi + + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + + insinto /etc/nvidia + newins \ + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || \ + doicon ${NV_OBJ}/nvidia-settings.png + + domenu "${FILESDIR}"/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + systemd_dounit *.service + dobin nvidia-sleep.sh + exeinto /lib/systemd/system-sleep + doexe nvidia + + if has_multilib_profile && use multilib; then + local OABI=${ABI} + for ABI in $(multilib_get_enabled_abis); do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + # Documentation + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}"/nvidia-smi.1 + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1 + fi + + readme.gentoo_create_doc + + dodoc supported-gpus.json + + docinto html + dodoc -r ${NV_DOC}/html/* +} + +src_install-libs() { + local inslibdir=$(get_libdir) + if use libglvnd; then + local GL_ROOT="/usr/$(get_libdir)" + else + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + fi + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local nv_libdir="${NV_OBJ}" + + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then + nv_libdir="${NV_OBJ}"/32 + fi + + if use X; then + NV_GLX_LIBRARIES=( + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libOpenCL.so.1.0.0 ${CL_ROOT}" + "libcuda.so.${NV_SOVER}" + "libnvcuvid.so.${NV_SOVER}" + "libnvidia-compiler.so.${NV_SOVER}" + "libnvidia-eglcore.so.${NV_SOVER}" + "libnvidia-encode.so.${NV_SOVER}" + "libnvidia-fbc.so.${NV_SOVER}" + "libnvidia-glcore.so.${NV_SOVER}" + "libnvidia-glsi.so.${NV_SOVER}" + "libnvidia-glvkspirv.so.${NV_SOVER}" + "libnvidia-ifr.so.${NV_SOVER}" + "libnvidia-opencl.so.${NV_SOVER}" + "libnvidia-ptxjitcompiler.so.${NV_SOVER}" + "libvdpau_nvidia.so.${NV_SOVER}" + ) + if ! use libglvnd; then + NV_GLX_LIBRARIES+=( + "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" + "libGL.so.1.7.0 ${GL_ROOT}" + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" + "libGLESv2.so.2.1.0 ${GL_ROOT}" + "libGLX.so.0 ${GL_ROOT}" + "libGLdispatch.so.0 ${GL_ROOT}" + "libOpenGL.so.0 ${GL_ROOT}" + ) + fi + + if use wayland && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-egl-wayland.so.1.1.4" + ) + fi + + if use kernel_FreeBSD; then + NV_GLX_LIBRARIES+=( + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux; then + NV_GLX_LIBRARIES+=( + "libnvidia-ml.so.${NV_SOVER}" + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-cbl.so.${NV_SOVER}" + "libnvidia-ngx.so.${NV_SOVER}" + "libnvidia-rtcore.so.${NV_SOVER}" + "libnvoptix.so.${NV_SOVER}" + ) + fi + + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do + donvidia "${nv_libdir}"/${NV_LIB} + done + fi +} + +pkg_preinst() { + if use driver && use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(getent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use driver && use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + fi + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi + + elog "To enable nvidia sleep services under systemd, run these commands:" + elog " systemctl enable nvidia-suspend.service" + elog " systemctl enable nvidia-hibernate.service" + elog " systemctl enable nvidia-resume.service" + elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" + elog "suitable path in case the default of /tmp does not work for you" + elog "For more information see:" + elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" +} + +pkg_prerm() { + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} + +pkg_postrm() { + use driver && use kernel_linux && linux-mod_pkg_postrm + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-450.66.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-450.66.ebuild new file mode 100644 index 000000000000..d3c8c382f635 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-450.66.ebuild @@ -0,0 +1,595 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic linux-info linux-mod multilib-minimal \ + nvidia-driver portability systemd toolchain-funcs unpacker udev + +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +ARM_NV_PACKAGE="NVIDIA-Linux-armv7l-gnueabihf-${PV}" + +NV_URI="https://us.download.nvidia.com/XFree86/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + tools? ( + https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${PV}.tar.bz2 + ) +" + +EMULTILIB_PKG="true" +KEYWORDS="-* ~amd64" +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/${PV%.*}" + +IUSE="compat +driver gtk3 kernel_FreeBSD kernel_linux +kms +libglvnd multilib static-libs +tools uvm wayland +X" +REQUIRED_USE=" + tools? ( X ) + static-libs? ( tools ) +" + +COMMON=" + driver? ( kernel_linux? ( acct-group/video ) ) + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + dev-libs/jansson + gtk3? ( + x11-libs/gtk+:3 + ) + x11-libs/cairo + x11-libs/gdk-pixbuf[X] + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libXxf86vm + x11-libs/pango[X] + ) + X? ( + !libglvnd? ( >=app-eselect/eselect-opengl-1.0.9 ) + libglvnd? ( + media-libs/libglvnd[${MULTILIB_USEDEP}] + !app-eselect/eselect-opengl + ) + app-misc/pax-utils + ) +" +DEPEND=" + ${COMMON} + kernel_linux? ( virtual/linux-sources ) + tools? ( sys-apps/dbus ) +" +RDEPEND=" + ${COMMON} + tools? ( !media-video/nvidia-settings ) + uvm? ( >=virtual/opencl-3 ) + wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] ) + X? ( + =x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + ) + kernel_linux? ( net-libs/libtirpc ) +" +QA_PREBUILT="opt/* usr/lib*" +S=${WORKDIR}/ +PATCHES=( + "${FILESDIR}"/${PN}-440.26-locale.patch +) +NV_KV_MAX_PLUS="5.9" +CONFIG_CHECK=" + !DEBUG_MUTEXES + ~!I2C_NVIDIA_GPU + ~!LOCKDEP + ~DRM + ~DRM_KMS_HELPER + ~SYSVIPC +" + +pkg_pretend() { + nvidia-driver_check +} + +pkg_setup() { + nvidia-driver_check + + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use driver && use kernel_linux; then + MODULE_NAMES="nvidia(video:${S}/kernel)" + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)" + use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel) nvidia-drm(video:${S}/kernel)" + + # This needs to run after MODULE_NAMES (so that the eclass checks + # whether the kernel supports loadable modules) but before BUILD_PARAMS + # is set (so that KV_DIR is populated). + linux-mod_pkg_setup + + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1" + + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + + if kernel_is lt 2 6 9; then + eerror "You must build this against 2.6.9 or higher kernels." + fi + fi + + # set variables to where files are in the package structure + if use kernel_FreeBSD; then + use amd64-fbsd && S="${WORKDIR}/${AMD64_FBSD_NV_PACKAGE}" + NV_DOC="${S}/doc" + NV_OBJ="${S}/obj" + NV_SRC="${S}/src" + NV_MAN="${S}/x11/man" + NV_X11="${S}/obj" + NV_SOVER=1 + elif use kernel_linux; then + NV_DOC="${S}" + NV_OBJ="${S}" + NV_SRC="${S}/kernel" + NV_MAN="${S}" + NV_X11="${S}" + NV_SOVER=${PV} + else + die "Could not determine proper NVIDIA package" + fi +} + +src_configure() { + tc-export AR CC LD OBJCOPY + + default +} + +src_prepare() { + local man_file + for man_file in "${NV_MAN}"/*1.gz; do + gunzip $man_file || die + done + + if use tools; then + cp "${FILESDIR}"/nvidia-settings-linker.patch "${WORKDIR}" || die + sed -i \ + -e "s:@PV@:${PV}:g" \ + "${WORKDIR}"/nvidia-settings-linker.patch \ + || die + eapply "${WORKDIR}"/nvidia-settings-linker.patch + fi + + default + + if ! [ -f nvidia_icd.json ]; then + cp nvidia_icd.json.template nvidia_icd.json || die + sed -i -e 's:__NV_VK_ICD__:libGLX_nvidia.so.0:g' nvidia_icd.json || die + fi +} + +src_compile() { + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use driver && use kernel_linux; then + BUILD_TARGETS=module linux-mod_src_compile \ + KERNELRELEASE="${KV_FULL}" \ + src="${KERNEL_DIR}" + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/libXNVCtrl \ + DO_STRIP= \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + RANLIB="$(tc-getRANLIB)" + + emake -C "${S}"/nvidia-settings-${PV}/src \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="$(get_libdir)" \ + NVLD="$(tc-getLD)" \ + NVML_ENABLED=0 \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if it is not /usr/lib +donvidia() { + # Full path to library + nv_LIB="${1}" + + # SOVER to use + nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})" + + # Where to install + nv_DEST="${2}" + + # Get just the library name + nv_LIBNAME=$(basename "${nv_LIB}") + + if [[ "${nv_DEST}" ]]; then + exeinto ${nv_DEST} + action="doexe" + else + nv_DEST="/usr/$(get_libdir)" + action="dolib.so" + fi + + # Install the library + ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}" + + # If the library has a SONAME and SONAME does not match the library name, + # then we need to create a symlink + if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} + fi + + dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} +} + +src_install() { + if use driver && use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-430.conf nvidia.conf + + if use uvm; then + doins "${FILESDIR}"/nvidia-rmmod.conf + udev_newrules "${FILESDIR}"/nvidia-uvm.udev-rule 99-nvidia-uvm.rules + else + sed -e 's|nvidia-uvm ||g' "${FILESDIR}"/nvidia-rmmod.conf \ + > "${T}"/nvidia-rmmod.conf || die + doins "${T}"/nvidia-rmmod.conf + fi + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglxserver_nvidia.so.${NV_SOVER} \ + /usr/$(get_libdir)/xorg/modules/extensions + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + + insinto /usr/share/glvnd/egl_vendor.d + doins ${NV_X11}/10_nvidia.json + fi + + if use wayland; then + insinto /usr/share/egl/egl_external_platform.d + doins ${NV_X11}/10_nvidia_wayland.json + fi + + insinto /etc/vulkan/icd.d + doins nvidia_icd.json + + insinto /etc/vulkan/implicit_layer.d + doins nvidia_layers.json + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + fi + + if use kernel_linux; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1 + doman nvidia-modprobe.1 + doman nvidia-persistenced.1 + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + emake -C "${S}"/nvidia-settings-${PV}/src/ \ + DESTDIR="${D}" \ + DO_STRIP= \ + GTK3_AVAILABLE=$(usex gtk3 1 0) \ + LIBDIR="${D}/usr/$(get_libdir)" \ + NV_USE_BUNDLED_LIBJANSSON=0 \ + NV_VERBOSE=1 \ + OUTPUTDIR=. \ + PREFIX=/usr \ + install + + if use static-libs; then + dolib.a "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/libXNVCtrl.a + + insinto /usr/include/NVCtrl + doins "${S}"/nvidia-settings-${PV}/src/libXNVCtrl/*.h + fi + + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + + insinto /etc/nvidia + newins \ + nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || \ + doicon ${NV_OBJ}/nvidia-settings.png + + domenu "${FILESDIR}"/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + systemd_dounit *.service + dobin nvidia-sleep.sh + exeinto /lib/systemd/system-sleep + doexe nvidia + + if has_multilib_profile && use multilib; then + local OABI=${ABI} + for ABI in $(multilib_get_enabled_abis); do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + # Documentation + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}"/nvidia-smi.1 + use X && doman "${NV_MAN}"/nvidia-xconfig.1 + use tools && doman "${NV_MAN}"/nvidia-settings.1 + doman "${NV_MAN}"/nvidia-cuda-mps-control.1 + fi + + readme.gentoo_create_doc + + dodoc supported-gpus.json + + docinto html + dodoc -r ${NV_DOC}/html/* +} + +src_install-libs() { + local inslibdir=$(get_libdir) + if use libglvnd; then + local GL_ROOT="/usr/$(get_libdir)" + else + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + fi + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local nv_libdir="${NV_OBJ}" + + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then + nv_libdir="${NV_OBJ}"/32 + fi + + if use X; then + NV_GLX_LIBRARIES=( + "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}" + "libOpenCL.so.1.0.0 ${CL_ROOT}" + "libcuda.so.${NV_SOVER}" + "libnvcuvid.so.${NV_SOVER}" + "libnvidia-compiler.so.${NV_SOVER}" + "libnvidia-eglcore.so.${NV_SOVER}" + "libnvidia-encode.so.${NV_SOVER}" + "libnvidia-fbc.so.${NV_SOVER}" + "libnvidia-glcore.so.${NV_SOVER}" + "libnvidia-glsi.so.${NV_SOVER}" + "libnvidia-glvkspirv.so.${NV_SOVER}" + "libnvidia-ifr.so.${NV_SOVER}" + "libnvidia-opencl.so.${NV_SOVER}" + "libnvidia-ptxjitcompiler.so.${NV_SOVER}" + "libvdpau_nvidia.so.${NV_SOVER}" + ) + if ! use libglvnd; then + NV_GLX_LIBRARIES+=( + "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}" + "libGL.so.1.7.0 ${GL_ROOT}" + "libGLESv1_CM.so.1.2.0 ${GL_ROOT}" + "libGLESv2.so.2.1.0 ${GL_ROOT}" + "libGLX.so.0 ${GL_ROOT}" + "libGLdispatch.so.0 ${GL_ROOT}" + "libOpenGL.so.0 ${GL_ROOT}" + ) + fi + + if use wayland && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-egl-wayland.so.1.1.4" + ) + fi + + if use kernel_FreeBSD; then + NV_GLX_LIBRARIES+=( + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux; then + NV_GLX_LIBRARIES+=( + "libnvidia-ml.so.${NV_SOVER}" + "libnvidia-tls.so.${NV_SOVER}" + ) + fi + + if use kernel_linux && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( + "libnvidia-cbl.so.${NV_SOVER}" + "libnvidia-ngx.so.${NV_SOVER}" + "libnvidia-rtcore.so.${NV_SOVER}" + "libnvoptix.so.${NV_SOVER}" + ) + fi + + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do + donvidia "${nv_libdir}"/${NV_LIB} + done + fi +} + +pkg_preinst() { + if use driver && use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(getent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use driver && use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + fi + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi + + elog "To enable nvidia sleep services under systemd, run these commands:" + elog " systemctl enable nvidia-suspend.service" + elog " systemctl enable nvidia-hibernate.service" + elog " systemctl enable nvidia-resume.service" + elog "Set the NVreg_TemporaryFilePath kernel module parameter to a" + elog "suitable path in case the default of /tmp does not work for you" + elog "For more information see:" + elog "${ROOT}/usr/share/doc/${PF}/html/powermanagement.html" +} + +pkg_prerm() { + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} + +pkg_postrm() { + use driver && use kernel_linux && linux-mod_pkg_postrm + if ! use libglvnd; then + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 + fi +} -- cgit v1.2.3