commit: c363ecf994da39ea039cd5f1840818c7a37ff5d2 Author: Joonas Niilola <juippis <AT> gentoo <DOT> org> AuthorDate: Tue Oct 14 12:16:03 2025 +0000 Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org> CommitDate: Tue Oct 14 12:20:45 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c363ecf9
www-client/firefox: add 140.4.0 - bump nss requirement to 3.112.2, - restrict ffmpeg dependency to <8.0 due to 8.0 not working properly yet - there is a patch available in bgo#962454, but I'll wait for (upstream) feedback before making it widely available. Bug: https://bugs.gentoo.org/962454 Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org> www-client/firefox/Manifest | 101 +++ www-client/firefox/firefox-140.4.0.ebuild | 1387 +++++++++++++++++++++++++++++ 2 files changed, 1488 insertions(+) diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index bfa5bbea0df3..48e564fb156f 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -100,6 +100,107 @@ DIST firefox-140.3.1esr-xh.xpi 272592 BLAKE2B ee164a3a014638719bf756cbc7d7a42729 DIST firefox-140.3.1esr-zh-CN.xpi 460319 BLAKE2B fc796b2423d40d93dd59812c359b2326b595c98686c1b228fe42fdee66fb2557f894c983cdf4c0bf9fb3de7e6f2ff8fdfb5c58064f8c0ca29f56d4844a189741 SHA512 0d9f1879b8edb8a871d011d89a6f0aeb7e900fca1d53ac9262f68facdc030f535edb5a297cae4234f70a794cbd4c95f43cccf7a03d4bc680cfeccad55d7f4a9b DIST firefox-140.3.1esr-zh-TW.xpi 463325 BLAKE2B 67468c6d1b30b7f1a1379c9315d63909ed2e28a98842c55cb8d02ddb9d337155a38508fd2b3b7a34746cbf3110cfb66054c6fae56cd2ee776c837c5cf7ba0770 SHA512 ef47196b8fa9f92bfd609823e41f95e207b6dd29963d9733276fead5b597698c1f9127d5c96cdc1d3333dfa7f1a845b0b6693e2cc8be349a8fbf13a9daeb301d DIST firefox-140.3.1esr.source.tar.xz 634713368 BLAKE2B 20879e302ec685b782b49356543b4edaf96ad41ae5f62d33deccd43d80789487f8de9922a095672c312c98f279f2c06d45d6ed55c3c22ee583c936d1d172b3b9 SHA512 a9302d99d7f07f4b250aa214635814964dd083204268e05fe877a3d8330b9c0caa6c29ed19da71bd88979b7cf39ed52f17698968b0da5b0d7430b6764b43b6cc +DIST firefox-140.4.0esr-ach.xpi 294147 BLAKE2B 0e99e684f831d0c8d2806868c9ca2b2abc2e3364305eecffac10d51f40645214ba99bf86f1faf7f1f3148f473964090473407942d68d246c5c95af0ece83c123 SHA512 e3d0b037eca64b9527ad3936787a8ae44664f497e893f262132fbfcb789ed917cbbe56651face5025cdbb064cdb9e9216ed7679ca6662ef1cfb0a2d2ad6901f2 +DIST firefox-140.4.0esr-af.xpi 266430 BLAKE2B 932e5861ec12c0624e948f4fea8f09b2b53240b503c93a2e9e92dece7a548efd69bf286e583eb9a147861de11fd8d3c73be224256f849c2b8fb5718d49e7adc6 SHA512 1e95d16d59df4bbb1e263b271df65e56e6d720271e5b33fa93b0d101ad6c937b6d729af35c99bb101c29dc587b9bb6eccb2e74daf152b71cb39fbe098f6d549e +DIST firefox-140.4.0esr-an.xpi 332083 BLAKE2B f7bee9ac97d0ce8308f9bb1d203e6bedc6351bd079de37626e5d1226f6bf9c56b4530c175c607b5c022dbd6417de261763eda495e1f9252d86df9018aea4a941 SHA512 f205a978664af11cdd778d3e3b4f3ea205ea7503523a47bd9d4e6d170e776aab94c46562cd83f2919d3d685062cf3673935ebe35315a8ecfdb18674e582cbd84 +DIST firefox-140.4.0esr-ar.xpi 444587 BLAKE2B bd7524fb5c3fa38b342585f96998ed6ff89573f539eaa6af3d9697b27bddb22535cb5498e7b12c734fc1fc0067a2f44b9683547a6ee7581bd02ef45e4f909be5 SHA512 2b9c3f2e65ad8b8977244b4af38be4c9b284fc84a3e7f22fe467a4e5af0c9eee7c7ca6df3c8923c6fdc38d0b2b11d359af03f44864f02e4a9e28c15217dd4453 +DIST firefox-140.4.0esr-ast.xpi 312010 BLAKE2B 4f2efdc14be2deb8cbf4d84f4bd5778978ce05e5412980eec71bd22feb21a19b782e68eec11608915bb42bddb12390a0ba59b2051fce7d4eca38c5f04d0c8a39 SHA512 f5e7a8698eede85b4ef8cdf239728efda2addfe8c17e3341be6489b559bf09c1ade0dc3b8f296be44427cc1aaf6bf0c6229a8a356ac4267fd7a84d5ec9c80230 +DIST firefox-140.4.0esr-az.xpi 318199 BLAKE2B a60f0a44ec96ee6a6184de5ea31a0f90d7df63a15ab97148368bbe4092d911a2b402cdb83513099296c17ed992a2eabcc69391e57ac4ef54d703e220b19da091 SHA512 95e60d69079db6929f2dd8ace4748248c213b71cfc02dfbb9f8c53ab469e911aa9280562079ae518491e31cf432e33c7933b566aa38765c719afe06db74a0edb +DIST firefox-140.4.0esr-be.xpi 520747 BLAKE2B 25fae58c88b93cb6d36909a2ce47481cfec84600396992c3633d17cc7df8beaf87957e307597d9954c591a06ce45f7c54bc73d3988c5602a24ac3ec7bc19afb5 SHA512 69a7afe79ef9dbef0554ee1d89ec4f6d6bd7e68a82331017c6b0ef5f9d5c6e37df050b27d16b4cfaf00f5fc62ca10640d31846294fffe4bfb69e6f643592c2ec +DIST firefox-140.4.0esr-bg.xpi 454663 BLAKE2B e1eaf6bd552b977e0f934f5a2dcd11e0bdc4b1b3015673ccc1348a079ee553a4f64d466d2548764306b3da80b45d7d10b296e7bc2ddaa8bae71a13646420e962 SHA512 f920ac93f7145666f92ef9d04fb31d9f1028b87b8e23c2e64c8e56812375814c1de4809ef5594b71d0f9272840358592174dea9c5cb9e009653a4df7fc7e42b7 +DIST firefox-140.4.0esr-bn.xpi 413162 BLAKE2B 0b34ce135630bdc792edcea7079940bd21c525b1d770c69cf8f01f12fff210c5ee86bfb976cc41be7afbcf7df6259baac4a5aebef43745f73dbacea2eef15804 SHA512 0a44522eb5926ac24fe6d6967e723e598dada73a8f76591fb7bfdd6b801045f5ead54ba84a4db9c0ba68f37fd8a271ef768f0de34064787a3a0db32dfc0383ce +DIST firefox-140.4.0esr-br.xpi 395185 BLAKE2B 0a417f68ed596ad1e76b45f396767dd654edecea7b424e3a24cd76df2bc9ec45cc4f52ca2f330a902375b0b7d44ce2a57048b72c379c2d752edd0c1194f641a5 SHA512 0d496a619b37c8db427e4a2cfdc956fc72b74306efc2d5777b57123a9c43a6a42fcc76f97736da597c1fb87242f5a8613b73791787a920193063a749c8b25e8a +DIST firefox-140.4.0esr-bs.xpi 446848 BLAKE2B 46d631bac25329dca8feb1bccfc69960302aa6c5ff6b59e4532e81afd33dca05e8b28f30a1f5f7a0616a50b54736cd913137b38ddf3b2eda3d773ec212124c42 SHA512 8c78e159ccabd02342488168c76c98c24483b619d04abbb50fe112976f6425c0d35909477435490611a77946a36f5602258e5c789afe08754f6f6f3bc0819c68 +DIST firefox-140.4.0esr-ca-valencia.xpi 357676 BLAKE2B f0c870dd581a07ea5393c943b0e99c18c2987f03e877aab4b8e7e80222a719ec836aa4fc9783ef3dc6b39cdfc5c0100130ccbf9d4bc8c3252d076f44f0b231bc SHA512 c7a68fab699d338609748cf54556e3f04ddbf760c4f1d7667f2fe397c13500378fee2df6b11afeedcbdf19965269c8050b3419191d5f70ed90b3df489db9b9d5 +DIST firefox-140.4.0esr-ca.xpi 401492 BLAKE2B eb11ace299e35b36d34e836aee8badff975a465e44631f5e611a963509455465b7afb1d8b0c018b610efd6ba8d16dad94e320f1c02bde663b8d28e056842ea78 SHA512 d7f105ed5b3de377c47fb0f936d617453bd2e8f74e194bb7a410f5bdac0e58f5451d04d07e5f79697271c709efeacce61e2c8e06c39e9532441fde0825a481a5 +DIST firefox-140.4.0esr-cak.xpi 390629 BLAKE2B 13436f87a9b2e8dc528a72adb8cd19c2c7752e29d68ce6a3577ae1722673a757a23bb11d913953c6d337e7d1fee1f987dd06b70aee23f698edec7188e981d9ef SHA512 23976d6dace1b0d83b881ec5c743f13d80a36633233317fbd6bcbb2f079dfa9426351138c9cce0fb982bc3efbe35916679024c1e6d6f70800773f0ec7856da2f +DIST firefox-140.4.0esr-cs.xpi 475502 BLAKE2B 8af544ebc3083570d45b5b76d8e5461b375700ecf956c9ba36c01325f7a7790cd34ae5bf23d2014f4babc08929e2dd952194ed1e6f084a86fcc170b2e1b84c59 SHA512 011702fa227d29304cd620fee2ac0b5ec1aed776aa4a2339ccfc367f50e8cd35d41a0cd790a2d89da5676a3ba6a2b44fea35256f77557fecdef4ee94b28f0517 +DIST firefox-140.4.0esr-cy.xpi 441560 BLAKE2B e6428418288ca85dc25e9eec408f37e5f0cce110020c443b6d89bc0ad0fa83a360150e289fdc285c3bb80e2b50876d2b8eb4d5e051aeb6d060026f8d693cf6d9 SHA512 577342d62198d653a3c76fe3b16468ad360f40d8d6eaedc5565abbcf94e01250bc04c9a279e076ea36b7381903562bc77e535efadf699784f361fd68d1f866ba +DIST firefox-140.4.0esr-da.xpi 430733 BLAKE2B f2bbace8c4d5dea058474a028c12a6cac46d7882fbfad8ba6d2212cac373047377d81e3ba0df22a0417a08ea13b32147c203b23b3e00138da416730dfd981ba5 SHA512 418a9e624d067d57936d60f3e5dabd1ba599c4e0edf14f68297a8dca48845fe3b80c6df32813860cda6ee23e9c1626bd5be6274b336c2cafb94551a0c9d4a1f0 +DIST firefox-140.4.0esr-de.xpi 452239 BLAKE2B 0069a233ed5c7216a521ac85538b5c611ca57456530c1b4b49b8c6cdf567e3e85d41ea13d9228c6467f8c383786b9d3e9b5be6a89fc571b76063480d586dfe1a SHA512 0e053a7d0250234b3bba834515b15c3fb991c66de36c71eec2ec39e91728e3bad72b5d7272bf503b844121f84d77d5e2adafef72c915f62cfd97b3561461318f +DIST firefox-140.4.0esr-dsb.xpi 465655 BLAKE2B 78e8a192403c102c805c04c3e3550f426d65ad5e080c96a83beef1efc2e9479add9b721a783d46dd80345461cc0f5057cf36896d6f19f215ec4edc0b9bfc700b SHA512 d29321911515335179e5e470b06ef30d017277a59061ffb3e9610c935035d79545206e29d48f5e0c2c5f254dc2812896d86345ba1e77d239312040fb826d2f34 +DIST firefox-140.4.0esr-el.xpi 536372 BLAKE2B 2bf0525ca9b14709b715afea64780f1726adfd91a9b2879df8a60d3da4a2e74c3706063f88391bfd90532a89ec092aa0cfbdbb1b6fcfe1e0820691bbed112414 SHA512 93020fda08370b388d010db4902192f9af674b2007df2eb1bfb8bec64f4733a28078d67157091fdf3085d84b1c55673b719a0286d27c19ccc3c32d93702bf64f +DIST firefox-140.4.0esr-en-CA.xpi 410698 BLAKE2B 432f2aceb8986b9b26f32bc4d63be958c69f890fc85f9a0d13d783e1e7da8eeae896c356436cd7c467a9228a0080c7ba42b1ad1239fd86d5fcc1afd43cd87454 SHA512 9219eff2f9dd5c30fea752b80c93c0b8474522d788c56f1ef1d38d2b4851154f1661207016417e46766fcaea67c4053ba51c61e6e26f0e227c641236807b48fb +DIST firefox-140.4.0esr-en-GB.xpi 411003 BLAKE2B 9aec8c81d2a5decd20703df1006df66555155f9f7ab4882b77f72c99db507f2898c5858027a8889c8c0ced0927def5f4f00c9ddfbdbb122b66e5f0037e95821c SHA512 12b48064e57ce63fbfd5debb52a3129147c4b4d7ac8699c01e9638687954ad0ca8eaa8da68f0df49fb496fed2cf62c85e1bf5772bd9a80598d5929401cbcee7f +DIST firefox-140.4.0esr-eo.xpi 433060 BLAKE2B 4d2804566f7d81fe9638f200f53acb77642eb20aab2eaa234cbe60c59af1f68fa7402944e31a34e1e3c596eeee386923b34922ca393a3dd51630b8190eb65ba8 SHA512 38ae3d401306d2bcfbd93cd7064518814ee337a8794378fff3ab8bf052ca62728282375958e87f94dae692f507cc97be884c71525b112c76231faab3e5f15c6e +DIST firefox-140.4.0esr-es-AR.xpi 445124 BLAKE2B 9df6b25a012d4bc6243cf24156143bb36fb571cd673b9da2ec2b7f4c5bed97b94e3a25b2d4dce6b8ce8f7a244187af71f1d855b71d95b0cf2af3caaffcab7a90 SHA512 f4e8cb9448aa3998f0cf64248539b0a289dd031253c12615f275134dd2467a77996ec8e1430e2ef76e2fb4c79da44a8408539cc8f7aa4ec6c225aa4517c01fb1 +DIST firefox-140.4.0esr-es-CL.xpi 445898 BLAKE2B bc584f03a292e2d38bfc3e9ab4ce9543bb69066bae2ad8a13c34455ca5f66f98e0a7b160619394a79bb37cf73f6037e1f48993c35b00896235c9a673e860fc34 SHA512 595b305237ce35470599df4daba70a0abc885df0b915fa79751239ba734b8f842f75f5beea6462a8dc1ae30699d68dd6c46f49e2202bb60e34d24bb083a6ddab +DIST firefox-140.4.0esr-es-ES.xpi 446606 BLAKE2B 8bf4d69f5793cd6f1de4b37aa36ee582454de4811cfda0d1bd79a552d8204e06f68f3054a13b3f991fe058569b09ac7bd4b367f9482110899dfe1a03a5cd44d6 SHA512 41f6c7c6e5fba44860a5466baeb3b16c15024f741519284bf81ce97c6bac9ba14fbe2325f026c5a80b3a5fe687d5a4d0a59c6ca80e8bbf84d8468b32be4d611c +DIST firefox-140.4.0esr-es-MX.xpi 436931 BLAKE2B 133467d85cddf68481b74434517df846f41c5ac3d7742d2e29f3c5324953ec4555ffd868facb5d39231f6495e1bccfac16bff98bbbd5fea9bc1106ab16d4810e SHA512 d2d606731a5cde75c51a22d414f3062778636c7f8958c8b3f5cc9b129945b08fb8aa8fe39df3c15903da8fbcdc3ac2a427978b715ccc62e9d3ada0da77825336 +DIST firefox-140.4.0esr-et.xpi 359112 BLAKE2B c21476f7362a0aee02cc2b81783939e741e6c25a53dd8c4b19e7153d7f8030abe6452d7dc6e108b2f0c69fdae695e0ab7ce86c523f495807481879f5ed679372 SHA512 06c2319fc558edd81d3bc112f45d400c3c2c10906582626d3e5e11c0dd90de651dea26f39a3a575148d1065daec2f7cd85b3ce407abd55886ef2136270267eb3 +DIST firefox-140.4.0esr-eu.xpi 416439 BLAKE2B b7c2f5aea4442b7d9cdf321cefaeb4c706c88c0fbe860b91e775abbbd0b25ea840fbab609b5fcf2fd54d0538e8d234ed08b8db7789a1e2c5644eaa083387cc45 SHA512 b67d9aad31a797ae4a5a746739da105de25342f6aade9f1fd68e7f03fffd48c40c72f776770bb2292ad5a9a185d252810529651cd00d014c672ecf9e341e56fb +DIST firefox-140.4.0esr-fa.xpi 421318 BLAKE2B e752638880f62586b56b2352c36d2a5e06fa36c99706376b4586cf398b2d002543e3416cf6222a0dca1b0e45757439ed0cf32777e05134bd5992b5ecdac3e907 SHA512 49ce192bcd6aaa0ba9da142700117a7a885fe240de449287434fce48e52fde63aabdf7a843b9b8e26c18ff6bf33b66c0f75056c86c2098f2a9046b827b7b7750 +DIST firefox-140.4.0esr-ff.xpi 309979 BLAKE2B 767902c268cfb783e32af2d669d1a610412c916eb5018adcaa26a26102525d83cb7566163a6735e717bb967cd75a74d5251d4f38b526fa7a6fd5833d17c7a9b3 SHA512 6dc70404317adbe4fd08f6fb2a22bb03a492b69d1f4b81b14999056999a2d2de1b8c5970e07fa7207d25f95afb90f4af15e4b176af9561f5e000c8ba556ea35a +DIST firefox-140.4.0esr-fi.xpi 429724 BLAKE2B bef03e30cc47398ad1bba3296575198064022d889069cd749ef3fee2c3a59a08156d5cdad486818b8151c8c3b59df136314da561f4200fa5af6bc0855683620e SHA512 e51acee31eb240e879b063a66339b57a3adfcc583003ddf3a4d1f095e18a8964ab9e0d64cf1df8e0d7a91609d7fa70e5bdf5b5e8a83b719325eff588c0ba81cf +DIST firefox-140.4.0esr-fr.xpi 458062 BLAKE2B 0a253858dd0ea8c4e78768625ebd4f101e8682cd9b52f1ed93b4adc20949818c8473578f03c2cb2ef032057e5d0ab55377c68aef92565e4664c4aaf6e3b43a5b SHA512 151e1545241dc99946b989c0c852aa71b6374a067cafce597ed03d33a1e3001ac1bd3161f7adc31dc6911eec08a8b3af09bcce82705b8b0cf03bb7b74f2e7a3c +DIST firefox-140.4.0esr-fur.xpi 451402 BLAKE2B 5d8f31e0a0c39305740f971556e28adba5ee533ddb5bc159991f04f08cdd8d56b9918fbfcc56d5cba7700a4766481c2dda8e5b4e42c54ade37b8fd0af4b96a2d SHA512 66cef70344bc30d1e5714b990f32f90a6c51bec0bf18502ed221a62139c75ea4f3d8a6932f307a62c42fd718a886dd648e6e48fa236e4b9351207652a9117ea2 +DIST firefox-140.4.0esr-fy-NL.xpi 441750 BLAKE2B 42e3a224a4efa4f128d51af9497857abd0425f8cb0e07e2f518ed92b78cf8f10dbcebf649c0b5e7a7448bfd20c8e7e69c873460f64dec20a172fcdcde6c5379c SHA512 9e7f2f24e3bbef810ce65a219ee94cac0ca5075188f0ef84540902bdc8f4e6bf11476e879d55e14dfa4caa237249f40dca8c5afefb9fd7c18e9ced5703085433 +DIST firefox-140.4.0esr-ga-IE.xpi 315053 BLAKE2B f7b14504f89c61fa5c021759b03c3d04249803987bb352f480335cab5035b9e0c33fbd9cb513390742df2b228abebb2746ffce5d38e3071e0aa2eb23b20ca70a SHA512 01fcb4bb5fc1ddd115e54a881ef836c08c9f38e12bf32ca4bddebf429ccc0e4d32edc5663d44b130b15aa6c28c4ddcb7e4814eaf27d5ad3a9781217b7e16fabe +DIST firefox-140.4.0esr-gd.xpi 399211 BLAKE2B 084079dec80ac0ff5ca34694646a577438f66ce55145daa78140387fae2b2aeb9bf09d655198a0683212c2f1fe44ebea200efb870a74b47e297a502f555d2316 SHA512 e47760dd44727c97159fe672ca9e3392ab2659ea33834b8e22c068a7537a18d4aa3ba2a1b142e688a67c7fa7b3b7b149b0ee23b753efde00b1d51badd8ea3ddb +DIST firefox-140.4.0esr-gl.xpi 442551 BLAKE2B 7421c0b3565ad60c907a2c88c4575a0e4605780930eb6dde5278fc8fd0cac127f41d4d8217abdec135b56fec54623fb490e2c265f859aa7e88d6fc8b68c64b84 SHA512 304569906a0c16b07ecd22baa4fb11d232349904b8f5a0de8dc90cb7cca6fa6e7d15682ca4d0260f3019cc5e8485bc70c76e925d4ed9ce07337788fe7990c4ff +DIST firefox-140.4.0esr-gn.xpi 450639 BLAKE2B a12d9b6d048d274ef00c200e2adb19d24fcd385db524377c749e4f797b9da504730fe63bbb855b86023bd42d2d981e3c37b829b07e384147e8ee992b4ac4f4fd SHA512 6519125c61bffe7cc93a1d44a00b4aeb279c7efbffba7a8731c6b738e00d7fe9f2c0e940b18cb93b699daf089b9295734aa20955705b2384f02f41cfcff590ed +DIST firefox-140.4.0esr-gu-IN.xpi 358753 BLAKE2B 6ea93ba685c42307276af030d0ee400aad15e9579e8cfc01027bd7a5cc814361dc038c949b055d7366ecf0b59eccde15b8da648ee11c97da086fdec92aff4364 SHA512 c163a7982d99911c1c85ef7d46b67957e10409c9a66b65c96e47808a327efcdad644d0e8748d5e9cd761a1db28274dc7c241c704b74ae1f2dd4267c1a27e347d +DIST firefox-140.4.0esr-he.xpi 444489 BLAKE2B 4873909fcbcd7666bdfb625dead9158e35a6ecb44ec72bb98d555444fa3d62a355c8778c99f2330b5a43e9510c13729956221333c71ba1db0df6716fd8ad1efb SHA512 dbf6b401b87fc0154ccd4bc06ce5fd2217c2ce22ad167b55cd57642a23af46dce7639e340e14f21fed35c666046eb61ad7a06d0ba2e1ab77f4f308a51b180c5b +DIST firefox-140.4.0esr-hi-IN.xpi 377244 BLAKE2B 1b0b5b54b13bff703279376c8570e3017f70b67f47e33b123029c7d4b5f979e0e04a37eab99337dec7ecfcf13db8bae092274b4a4799cc3493523f12d6bc9af0 SHA512 09e673d9df3e42db6d51832ff324a88c2bb51848e8248312fd8b917de2a322a8ddfa9ca85433773635afcee6148d8e17a86d5f97341471ac1b70ad6a00c34659 +DIST firefox-140.4.0esr-hr.xpi 437460 BLAKE2B 9e3f5eaf1d3b8b8711f648af9862ca2e97edaf104ed7963a5857e15d6f2a6377c56ef9b399dbf4a26b4efdf4e8949483793cd7dd0b6ce2f476a260e67b3df54d SHA512 f2e59d7f160a8bb72b087588ef34714f44cd8e2f650ac5ebf30b1c80b9bade23468624add2c4240fbe910a452621653c5d0d452ec811ff59e5556dcd19c0e35a +DIST firefox-140.4.0esr-hsb.xpi 462273 BLAKE2B 7cd45b0d0d18c92991241bdfd3f356e4be1e3624343aed350fd8ca5307da4cfeba081f5a4695f1456ea4cbd1dc813a133fd6f52ccba3d46850f3064c96821ca2 SHA512 8bfe2d2caf2962317ec11eb44ac74ba23111a576e231441daf1fe60d5c331445cc7bd644ef15466d8b65822c12f6fa65d0309ffaa91f080aadb127b71e6f6c73 +DIST firefox-140.4.0esr-hu.xpi 465767 BLAKE2B 4eb238241c39af1f3474d6c4086a79bb40cd798d69dbcbe50797ee8018da78029d4a68e4379384103b0d2e6ec800910c6cb7a54b99d0529b0c906b4adffe0ef9 SHA512 ac7a972ca6b3f7ee95ffb9055a443099b31fadb45eda57be64b9b98c17be5346c2d4f78818cdb24eda108d1360236334e5a697cd5c7bc4038670137346f7ca41 +DIST firefox-140.4.0esr-hy-AM.xpi 458372 BLAKE2B efb373711588eb5eee5bf0ba689f38a01f0b46a6cb315cd9bf13e280b73d01c0676afa5fed41efad7e8cdd80ecb70c0f71bb224415242170494a8f3e46bc6fde SHA512 320d12790cdc078d9d9a4d112887c5901f5d1c1cec93e546c21a343fe4c9be7fa39ef43cfbefc6af2c8013eb659d41e95d4c3d5fd04903e9e0d21ce5d1761ac7 +DIST firefox-140.4.0esr-ia.xpi 429685 BLAKE2B f4ae83a71519be23cf4099e096e44770edb228034b1bb1c8eed2589c614fd1f0cb15ab53f2849ba303aba8727ab99b1ffb7bffe0fa6706aa88d602302d5e9711 SHA512 bbf446e6116c5692d7be918bc10024eeb36e9e16112ffd2985d6cfdf1e9c043c2a432b40b23f856c8204a22b0fe22fe33dfc9706420b5d470f6d827194e357e9 +DIST firefox-140.4.0esr-id.xpi 419339 BLAKE2B 3dbe7f082fc318dec3acfa8bde4168b465183c4452c1ac1e793b2982d242bfcedfbd3508624d0b9143298f833b93477049c28a399804720900886eae73966a60 SHA512 2b5f3e57d8ff09f2d48acb3f8ee3849e12d7c99e312bead122bed1024e6c2df4c83cc9bdae84056cae1eb88c1aa5d43da822b19fdc2e79bac6969378d736625a +DIST firefox-140.4.0esr-is.xpi 432243 BLAKE2B f0a37dc4be8274ed841278758eb7e0d11491342365cf84c2d8a9b90327f50e49e4e54b072ae9f247a5e59d32cee69ad42b337e068d80c8a3e6d4173972af122e SHA512 e520950c8cd69f7059d24c1f22d8cfb7db50dfe63c601711ff56950ac6469f12437cc9c5b6653bc8805ca8ae0077daaccc72442e2cbfeebf12ca2bf2cdd9bb21 +DIST firefox-140.4.0esr-it.xpi 440508 BLAKE2B 804f9171c2b7f9532b9c1ad9a4650052925335d59aa542669b93393b09b01177fdbe4ab24733acf3110c90095f20f92a8dcec2fe8a9674177920f9dd7cf57c97 SHA512 9d80f45137169ed4bd7da4bae363aa8eeb19e585093705ecfd2c60c8fe9dfd38f9ed74299fee07d9194f0e3d2bba1331534684bc93fa685c6d0860306421950e +DIST firefox-140.4.0esr-ja.xpi 480915 BLAKE2B a0233359d6eefeb98b2ca92c4bf737d29294376cb5a3be0b8294e984f5514e1eebe3c08308aec9baa7021765e15e79a46776d9dd6262a75d0b63486e28d324ab SHA512 658e666734c2bd807011ffaf32c07614ab1fb5ff4daecd31861fb56463cba7088f83cf2a3aaa9695d1ddef22bef45d39108bc84dc37c1ec0b3f4c290c09cacab +DIST firefox-140.4.0esr-ka.xpi 494449 BLAKE2B 32c7875496c92473525c13f15fa51fb997b5f3cc13f7998101fb22c0503710e28861fd82905cc4d767d88bee472b8441e02ed2b047dccf1c961b848e615cce1f SHA512 6df7ff34b3b70495d1deb611a145ded9769ff84e65160d43d4cffaf0419d4c01ef1b60d02c485d7181ca6192380a2cc11541b4bcfd8b90efa63e45e08fdc7e44 +DIST firefox-140.4.0esr-kab.xpi 421081 BLAKE2B 6a86f290e94ec494016c73b301119a59e28f2e450a6070d39c7279fda8e81bddd51e6f7a954ad4c39dc3c11d9ad745b108624ec464236f339790bb69444887a3 SHA512 d5e6d80840c0366b25e19d54f4b94feac08ae423a5e8dfe277a726e64714204383f0cf1a24b030cb742513c190905920ac5f83c3dc19562ee1569c08dd861e13 +DIST firefox-140.4.0esr-kk.xpi 505983 BLAKE2B cd9cebce9654f06ad9f7a087dc6eeb9c7f92285612b191cd2c8899e3fbf2434f3f4df80dc8228160c3076906f49898d063c80fe3c23d6f5ce8e58da24b4a89b1 SHA512 f5b5b1f0f4746d55d4860f539642baab562f67d271141cbc9bfb8eec0151974bcb98b115ae8285feaa3693443874ab86bc69f539a61d54af5234681b838c4612 +DIST firefox-140.4.0esr-km.xpi 348559 BLAKE2B fc195fcc62153fb764f21d3dd6a476138bc50b8d8dc48136e1a66b8c1a6c57dfdb5df9e02bcc49329cb8c54260b1aff162eca16904ec40aaaf766b577414f828 SHA512 1ba698a21eb5bebaa7ffc666acfddb05152225227c23c36caac1f9209f243c2179a120d7d114d08edab5db3920f8c4bc39263f4ece29b4107c68f723afe5476e +DIST firefox-140.4.0esr-kn.xpi 331571 BLAKE2B db8e948e7d984af3549312cfa08abdd6d4b0deba019ec832bff6a0fb47382b63835779201d0eef2738a48746b43c17fb2fae2eb4c67ef29027535e41139cab8f SHA512 48d53a34ec4b533244cdb6c003ddd1a2f3dacd5852e642631c714a1efbcf3d2aa35b75e83e1884a1c43048c0170604143fecbd9a253565c224624f432b1097a7 +DIST firefox-140.4.0esr-ko.xpi 467165 BLAKE2B b22174f617c8c464f9578293e9987d2a12fe05acb809bd9f95113010e51713175b11bcaf49738214530ed51f5b5a372b36e00fd8db2e3354780cb3bb9fab6e85 SHA512 3aa6ebc7fc1e07919b0c0de5af1fa7f30bc8f5a0b0d737dc2b4d60f8ffe9e0b8438e1845aec007b03083fed431ad2de876085641b646e842acd920a77ed4180a +DIST firefox-140.4.0esr-lij.xpi 319066 BLAKE2B 45ae6f8506e611e41f4665fab41202a41f9d6489c0a681d911c3553b7d340d3fb02aa8219b51075553cd951e5b9496e1371cda20e51d72c6d9861be0caa2ef38 SHA512 acf49b931f5bca17eaf56e56fd9bcd5d963bfa7baef5fae1259d09e3b20807bbe31528665ff7cf69242f4b44097935b7a6a248eda7e018e378b57ebfa91c01d4 +DIST firefox-140.4.0esr-lt.xpi 379745 BLAKE2B 6c0a8475800c74ee6d2d417609d6b9df3329f769820f8d985e08fe348e83ffe429b40d2ac01729fa05a586c6ca0a30352f1054e420bb41616549588cbb2ef793 SHA512 6cda4e5a09b59a883cae4ba30458913183f346eebb0b614e9dd47524ea6b151ba16f7136722e8549a39aadd4faaf0bef92caaf1e5f7fe28b15a265469d095c40 +DIST firefox-140.4.0esr-lv.xpi 386112 BLAKE2B f555ce5b623e734f77953e21e25604927872365000d25ae7c838be2fdacce34800f291f52c6e672d4329618ee22986e67683863ada63e95cf85dc8279192a1ea SHA512 2dabb58462c9444dbad6445a9c536a7bb6aa3a9099537083bd5b6e831cc9754f37202fb535b78c641ae0c02ce9ed1ab52ba9bfc8a1c875f181cdfcb9ea482711 +DIST firefox-140.4.0esr-mk.xpi 316623 BLAKE2B ec3fb8964ff63ab2983698434fc2947e6a37d395866b634dbb13ad492d972477fbfa152d3e07334f210288cb3da8a883f90dfbf05dd9a52ecf3b0d95f69c1ec2 SHA512 7193b206604ab6f4df3b8244562ba75d8a2105b5a8a5754eaa8a0e83dc668d3f1f16b538ea63bb6dc3e047451cfdd3d480b7b152fd61d0e7d7747a243cc4a561 +DIST firefox-140.4.0esr-mr.xpi 356037 BLAKE2B ca0dd0d19bfe2cf04c3bb2e41580a9becb7c80b498c769f7c41de1581c463fcd706bb1c7b5e2ba81300d04de15f08fbe8bc2faa693db485e54b8f8d5c339c315 SHA512 0ac1a7d5ed2997c74c2c3aa3a8694d56c8dee20aa0907f9dcac7cd71fedd705effc2371c7d471442c2a6b72c74b203d35965a95637984cee984e1bdf8030b0c7 +DIST firefox-140.4.0esr-ms.xpi 295180 BLAKE2B cd4adae725fda6b6e2f5651ac523ad5699b4459d9d50d326cff117a940c42fae6adba8ce7e87427ce6b1af9009c971b4a034e2dffeacdda001c3c374e7f07fb7 SHA512 ad6b58a0fa9a08656311de703d8c61e15b60b8e51a95f484eea84c22d1c6dee81c0796d3e6104ad66eeec6b11aa291f417c4d81e6f85f6b81d140553b4b07a8c +DIST firefox-140.4.0esr-my.xpi 342814 BLAKE2B 8431c61ad9b39e5755bef5a4e05a72e9608bf0f0427ab0c2e16c1b4a9b7ca988b88c353e7ec8630029e223ba2880d4d497106d032bd39cdc0b8d89ec15cd9054 SHA512 bc26311cc89a8e8f3526b90761c572ea4228ca19f366e05d72cf1c784609c7c2e97469d7ad13c70c543987d0fd273b34d421726288da5e184af2d4ee30998201 +DIST firefox-140.4.0esr-nb-NO.xpi 428918 BLAKE2B 2db575535393337d8d1efbb93eb5acc0b9e9077b7ca946a0dd42fcb4fc093c7abe83db6843aab94954aa797dd12d65aa17ed143b5f77fdf5f2b42c98979efb60 SHA512 e2f3116f4d1f1fe6768d962b21640668685a9d822b2bc9bb24b72c8d45de77c8df883414cc7be3002e8b94954d4fbf68102a3c5b1818ac0820218184ece75217 +DIST firefox-140.4.0esr-ne-NP.xpi 348801 BLAKE2B 4a6da7eaa1e2d8569f788b07a7079904be12a55d14bf6077ddd2369f68216e6a77f2a9d6b0e97e20a5da44c046e4d0d3bffd58fe0f438d1d6be25e7e196f2544 SHA512 d3a7ef43d0074fdec01ee4d938e46dc586b3b1352e6943e6e95965c44ea9453fc91093f8f55218331f56aa5994ca65a5473f1324991319155d8fe714b93f952c +DIST firefox-140.4.0esr-nl.xpi 435787 BLAKE2B 66a7b9abe0156b3164603d6e20ffc97012f7cdc329d4f42295dfb7024ab51975b5ae1b77b2b7ef5e13f59bd36fa6afaf152cefc57d2a9ca2388cd1634850ca42 SHA512 e15b21e50f8049c0bf31d504e04714df6b3352000e9742db3a024eae8f260e81173a735e3e957857deb4a6416609297d070d4a132c31a7103f71a76293da8b13 +DIST firefox-140.4.0esr-nn-NO.xpi 431812 BLAKE2B 6c6b99dbe7d84dd7ebffb733794cceb5d0ca321fe0b0ed758d24a942fd2694bd7865952323df76b603038e16f210de3fb40c1d1223f2a6060c3702a3600b0dce SHA512 7b617ae099a953f9da8f899067402686e0acf5aeab72bd5c97f2f2963fd0f18d55a315a16e1fe1d169b6466935883549c17ecc600a924c71d4335f42c78b0e17 +DIST firefox-140.4.0esr-oc.xpi 410729 BLAKE2B fb646daeac2bc7e42d0527fd062bd5f5470ae72a0dc9eadc9b5d19c7f8b836940768375b392dbd9c5651b72e997e2a00807a78517855e0080c807f694ca01a14 SHA512 d7e5c3dec2c561b37d545f8af5a9e4f19578a92e8c886815a45a4ed030f7a42ac644aa6a3c0b544bbb0a39fc04a91ec6895dd950f3e289c238b023153586da8a +DIST firefox-140.4.0esr-pa-IN.xpi 493395 BLAKE2B 0e7c7e01133ab561d9d62aa61ac87f3524df0a0eb552ecb338f3fd33e1b0f588508794038d610b0f0336099ae8f371d89e2202264e3f07aa6e2fb1f1b13ff1ca SHA512 0f4b78092a126edb71fd6e4caab4fd9a39d8012f7ab1c5d0c29394da7188de04ba573a145b900eb949d5fbd748083a7813e8385c5530ff901dfe5b1e758e2b58 +DIST firefox-140.4.0esr-pl.xpi 460172 BLAKE2B 38a025a8d571ccba5240815f06130c8dd56bcf93f9df78e4d4124f1eafeb42fe209e2a5aa0559a68b712dc10e72141bb298918141054cbc34821eed467cb5450 SHA512 ab03458058fe7ecde328119b0e0917a3cab3adbfe9b37fea72c312ef79114c9e632758cffdaa1c505c8af5eb34a15b5ef19885bf24a4aa96e3ffc13359aa368f +DIST firefox-140.4.0esr-pt-BR.xpi 440307 BLAKE2B a7bff79366797bb0c487ef791bb3b3e0057b882fb2ef9bf64d9d52665a7ebf7608e8d1df9309db81ecc977db57b3fe58e1adf3d3058b2676819a6bb50368a758 SHA512 0aa650b39d859e7f9ec5e6b6c1b5af5d3a35b4a2f6f10f49f18b7ec5475cdf6af5a31b926bd1b2211283a38e2d39226476d0d6acf4954d9ccb9400770c9b8f13 +DIST firefox-140.4.0esr-pt-PT.xpi 446025 BLAKE2B 0412e2923bbda04722311abd17e1376e386170e0a25cc7690c74825772f3eba8ec1042f09157adc9cffb338f03972a28462568e2296f508a8b58bc494a84f350 SHA512 fc2aa82446226f22a76cb94d6c0ce7efd370ede9d63b24d7b95d6fa395d52c4342067eb34f6cacc6fef52180535412dbe386af0b04030dc32e35f0c773c548d6 +DIST firefox-140.4.0esr-rm.xpi 436307 BLAKE2B e1b81f577d245ac3a61d3e8f664db7ec88f90ea510f84bdfb4126045297c73c0ea6332a1d2387897bed0e94317143423537a85289587d0484aaf052cf1ff18ac SHA512 e11cf7074e28b36e6f48584272a2d35f7fcf0399b867136762de78780b0742a5b947e65785d98efcffc9381e0043146c44e0456f2d051baa32c31912d2ee64c7 +DIST firefox-140.4.0esr-ro.xpi 452382 BLAKE2B 260e4f42b66278bb8d3afe13cd36cef35e6cef3de889d2dde0f3148b3c2b0212ea156f2fe1323db289154bb15ac73805c3aee9686b9a0c8000d7492407a7a9f0 SHA512 9ba76512e47c0b35f28eb747c14c5c3062ac38938b79a42c0a30f1bf8613f804d358ddd4ea66b8f735d7309f2ab8593be632778f38257583b99123b107b09724 +DIST firefox-140.4.0esr-ru.xpi 524707 BLAKE2B 34f8c01f7d88eb70d582afb9ba6968af9374b6839bc92e67cce6de6a56cc09094438f11f824d8b7bcff89e05d1db492314bdfe34df9f0a6408c2666e1372b61d SHA512 f9ebe2a41b115e043e4df88f18ff7752088ed8c5e1b99a7a8fabf401661a64ce58bd93bb805f7243f2cc3e7d1b657a8b9372336316588d4aba17f8b7e9abc811 +DIST firefox-140.4.0esr-sc.xpi 408012 BLAKE2B e4ef0a2af2ec5900d9c223560b9ba39849f44f7808998699e142a69921c86edbab4c97f712f1f1d5954c485bf5bf2fb3c0fba3d27ff10dfd18edd81aa4601ca6 SHA512 38101ac55a8e7032f7cf1c85b3ed8429bdfc1e8fb0f0b6727454483853b3828f11377755d07de7e1afbc4c4a23bc43a7b713eef0bc6dcb98e6619b4e22994a4a +DIST firefox-140.4.0esr-sco.xpi 322427 BLAKE2B 3e8bf381d531fdb732a7b6ce2c6c20469b2d8ac7132dd37b7d00e2156edebe2f08926c786e31b3dd396d157a21a0e824dee08c7f552df0fd6f47864e2a125b0b SHA512 3092417d30b2764575d63c9b0fd80ea79a8d3d8645feb6a5faa0a75bef8cc0d416e201aeb7be12793770fe89150f246de3f21c554735db497d9897dc603cfd7c +DIST firefox-140.4.0esr-si.xpi 411383 BLAKE2B 194a2bfb43cca2e78beeeea94ba6b5e50a71ce575e1503e7417d1aaa6e24cbffeb732483366bea59ab4933fe2194c72c6374327d252d76e8a7f4adc935f2109d SHA512 c4a4076bda77850963bed4006cae3399f21fb3a56b969db770658f1e86c4a8f52a1adb5680b538d2c3c648f826059cae15d5732b993de90cdc9b98a5a47541f2 +DIST firefox-140.4.0esr-sk.xpi 467561 BLAKE2B 0e957ef4f2d9dd4dd681d15c8de392562aad1c0f6b2c7a18947c6b51a8b4ab8f98a436e5e7d7a6a941c9e80b80b37629515b9b8761e3ba1d50ff0f5aeaad9c23 SHA512 78807b473649231aae0e34f257daa37d93e29833b4ebd2db5e4b75171cc794a67c65a6a1010820a2127dc071630be551eaf4af1b301322ddf22ec5354343c7ba +DIST firefox-140.4.0esr-skr.xpi 485668 BLAKE2B 3a40de1d6612c26047c30f52dcc0e5ec1fceedb8299d031d5a997bc9468e4bef04f72a5727914c030d9ff2c42a1d48bdc4a63b99e73944820b2f0280914ceb26 SHA512 20d999e346a418a5a17fa1fd3f853fbf41ccb58854ce08535a99514ae9a1b5879357a2502d5e7eba566009c98223e6dbc58d2a037918dfd4bafd263ba18ac76c +DIST firefox-140.4.0esr-sl.xpi 440780 BLAKE2B 45535bfbc3448be9497f9532552caf0cd4534b684ae9a5866801aeef6e034d50fce19c0959c606de405e60a030705ae5d4e5b7099cdeea74164ccd2ef991108c SHA512 5708451fcb1a5f88e77283e7bd920cdaabe854151924a155f8ee1adb735ad5257da3377dcc96c13cd4d0df077187d43934ef23cd0f5eee44bda57a86e4ff29b3 +DIST firefox-140.4.0esr-son.xpi 272914 BLAKE2B a614674a04dd538b54d51be049c170616b5e89c368136beda8499e0eb9698322b3c53416a0d08d270507c395cf7ca8cc2838ad8fb52dddb11824d8dbd714520c SHA512 51d0c77c45cca328da96f4aca06e2ab8c05cd7272870b9b5239704b52caaffbd45ff2eee4ad8856c7c2f65eedf7c831b99d27b52235f61a500e7725dded5b31a +DIST firefox-140.4.0esr-sq.xpi 452868 BLAKE2B c3ba7ea46c913fb1369c361a972e8c619929b1ffbd88c2b93c6f1241befe22b263f9b435b76460c02e77d81417efb2c697c7e22c8af805ad840e614523f62921 SHA512 4ee2e70eff6ba2c5f8060765257157ea06d38b780f3882c449cb4e4339e76850a0b84eb6ee384e9c3f5c801a45317ba76d4e6f90a005945e7e208b4cd5a500df +DIST firefox-140.4.0esr-sr.xpi 453162 BLAKE2B 0adb4a3695bd72442a82d08aa6777619ea8cefcab225bfc6a310d09427991e8d939b626144ee319914af7841dd23d56717161863fe659c42efeb159660fa62ba SHA512 a549621e77a1e03b0a6b20d143d657bd2b31bc68e5ad633393e662f054b09e31ad556742c7705462dd0e9a7fb7215d2282d1b2a63bbdd914bdae515d12304c1c +DIST firefox-140.4.0esr-sv-SE.xpi 435740 BLAKE2B b9d17f9cbf4b39a8d61185af28262647d805e7b8e10de88f9a889acb603ed904006c038e598da61da0e70203cc2bb998e6762b66577c8a7f949beb04e7760bc6 SHA512 f8f171a3591b5ea4c35c52d54031ecebe02433fe13f941c55624ecc52690b328f9dee72561a22a5bd4ae02eeb56f1673f9a47d7e4a8b6439a46b55fca2527737 +DIST firefox-140.4.0esr-szl.xpi 341470 BLAKE2B 67819bab32c5399ca43141ec40e05f7c422ddafb73178c27866935eb31e4130b90ff7853bcc54c452a44c019e41c5c423f43b7a3f3516160db2f3934d243dd7e SHA512 94dcd2b4eca250241c4497c9d9a8622d724c0fb68ab375f0c525ee61e08d0268bb970ada3141c6eb8388b60f2b755662f236a747740e61380358b65fa516b49e +DIST firefox-140.4.0esr-ta.xpi 337936 BLAKE2B 65a441b8a49e7930ccbea79845f1c20b223d35967e9070e4f154709759f3b09b7428698f1c5e938e04bd529f53de31e3f9be76f3453e97a97514294efcf3adce SHA512 86402dd9f72332ab12306fde5aeb90abb40ff750bef328065e327fd9285f2cdea8808b7dcfc0c26e9da982b816843d2f821798b1518fd2ac7746e626118dd1ec +DIST firefox-140.4.0esr-te.xpi 381990 BLAKE2B 21cf57eaa01f7666071408aa218402e9459fac2b83a5cc7c435e97a2f0ff1acf3972a59026d7e6082aa8fbdc564ee50dd2354018d487547aa21003430d34509f SHA512 07e872200e112844c6d6b828c7f15fab0b719f6da3a26f2915686be32dc1d782d9d1e35bdb033d224abb6eb6500a04371bfc6165a16a375b380261e8262aedb0 +DIST firefox-140.4.0esr-th.xpi 505277 BLAKE2B ac347df7c72411f747a4cb69cdf46adf3e58ed524ce44c15cb635c33e0d4aeaf03b4012e076c8545cfa9c8edf68c4b98d7b283b1d50654577e328a70aefd0c96 SHA512 3073c24ec36b22c07df6dd17c02cde264fd4e41fae10ad419bf007adb76899a4b0d467610f2d63ac8c8e8a300165a32ec9ac352823747ebb575309d70383d0ec +DIST firefox-140.4.0esr-tl.xpi 356447 BLAKE2B df142963a5709923c04b705cdc8568e5360772a8180cd307bc83d3431d5e494663b09e4e0df87dab45dab1ba6e25948ee606a7aece89b787f29947cdf22e8428 SHA512 36233775121b2dab23231fdb1ef83664bb377a11585a1e641ef2ad775c97e70f31e7aaa947fbe4e8b54b0aed55ae38d9f78408366929327bee60d519860d28ac +DIST firefox-140.4.0esr-tr.xpi 448864 BLAKE2B a1f9896127f168a9a06b0c7f2732469b2b0dc3c7faa4a3f1c6ea654bff73348bae88d1659416de767a1a5c2a877930e5006ec3c6aa7d97e45a1470390a469265 SHA512 390b3c44a76d1fb47a9dd17666dd9425b0407737a7c5342584a324db53b47748bdf48dcb2d97015a6ec962df8bfdf59bfeb46c481e453ae7fabd8b8151417abc +DIST firefox-140.4.0esr-trs.xpi 323792 BLAKE2B f66b88c5e4ceac582cd09698f97429363d082533937032e789a3ae95c9a78436a755d0555544b43f0625c5e2bcdc6e0821abf1ee7135cccb15485f31b7c028a3 SHA512 21f2e9f5bb9f3745f0664d9f7d2e47434ceabda645e5f7331e442ef31bfbc05ae256d11d393c607fc2c13a8765f6fa246e16372717c61029d2504889515c10c8 +DIST firefox-140.4.0esr-uk.xpi 516287 BLAKE2B 308ba9786a48d800ecbcfcec695029a7c697ca4cc0a8d1c4adcb999262ac9a30b75083e03a910a482fdb76a19b477382f8f6122eac49f46ab5d5c1278c8cb5bf SHA512 8068749061c8f55ba3c62f0844b76570c30b0850fdd01c9b9cff961d82a016c266168c9da6745f8c7f94c93cf9d302c2dda107d0da619f6230f3eed707bbb2f3 +DIST firefox-140.4.0esr-ur.xpi 369967 BLAKE2B 6e7a722fcf5705153b49a7a1c94f50d85e36d85d2a965f92dc654ed7054e48c7af07974ddd415fe064dd0843ccd3c736d3f22dd3ba2f002835f21b50a3d5dec7 SHA512 8ce6eeaffd7e315e71a30ba06f603a6e82b95f969bc79a36f68310e33c8dcddc964dd4571ef7b4e4e08647c7cecb1f52816c54e54ca1328cd69b0f6b41a6cd86 +DIST firefox-140.4.0esr-uz.xpi 303273 BLAKE2B 1e29d61fee2d3fbeb82cac5339b16568ca05172ae8c656b44c81905db46fc79159c439fde0902a43467abbd882f7d826579e8670765018b710ad7270f9635021 SHA512 b63c1c28235abec4af483f7957142d6972c1ada932ddc5cb5ed1489614de938957d41015a40320a091abaa913b85d0952664e242ce579e53ef6f32b3587db81a +DIST firefox-140.4.0esr-vi.xpi 468689 BLAKE2B bf24be032afe7a84838294fdbd0a201d57f67cfc0d6da1107e6cc82ac20ae3696fa1396c3d6acd1b73ddae95e798d3dd96117c25c1af101c92889d08ff52dfc3 SHA512 85f734fb0fdebd810325c754d5e1316cf1e834ba5374cd82e9295a4e3205cda21910fdffefa57e3be1cf5d9605e763b72b89231708e5cb4f63a529ae2edfd94d +DIST firefox-140.4.0esr-xh.xpi 272579 BLAKE2B 672dc72fff8b52d558d86101adebb1d8e985f015bf530c6fc18ffa84e1056ed984239ee2b82bad472d5b55ae82faf806a22a45158561e31eca52cc487f77ea15 SHA512 5dfd4c13cd7b770ce434e1bea676c20717372d82b94d89222d00243fc23f46218ccd9c4ae63e3e40b2fa9adbb08d3be15d1e30bff9e64d9362a4f89868449c1b +DIST firefox-140.4.0esr-zh-CN.xpi 460317 BLAKE2B 1e2250c84c42b5cc48bfde84096e36288448bc03ad9c910de8a910b35630c9b33702a311c35aba11d677215c358d8c86b66433f46215239d7e750cc9330c5595 SHA512 74791ad7dc92cf1ff3803b0e08918a341fa5763502847e99dced949031c86221af3fbbc8b7865d5e736ee8944a234f3e0589048f7cf2b7f665df9ac761546f63 +DIST firefox-140.4.0esr-zh-TW.xpi 463323 BLAKE2B e78ceec28b02d7cda0911729e22cdacd171cf53ad1a844bb0d29c3e7e861868f2b8847612e66c365f84be3ddbe69015c372465ba83c936cb9d1ee0276c3a3f4b SHA512 33116c70803669c7cb0bcdb9ec12d9ae1347c6ed0b846dd2a0f64f3542b6def11b80e4b03cc34d5b6eb79ffcd00804a8b818c99a72959d1e78acfea60a6a2bb0 +DIST firefox-140.4.0esr.source.tar.xz 639276460 BLAKE2B 4b4851f65e16363225b5ce8f43a41b9acb930832ce935b20c728e77603c5fb64ca6a292db03ee0ae186968d5514409f1011ccc5972184550b3eab7bef0cd0bf3 SHA512 cfce0bdcf6d4599c7b96bccd9fd1390bfb3645db9276a369a30760ce6819850aaa4251869e6bd3c5d8582ea3728b920762c5f16f7ce12ce151c3e74327b8c811 DIST firefox-140esr-patches-03.tar.xz 13452 BLAKE2B f1e5da9400ae5d15dec852f0d68d470f40cff11764813bb7429f320d82cbf838e4e6cc7097f42d154a4a67061a66ad31c0749020067fd2a7f891c9003d163b80 SHA512 966aa2d0b8472bd4c002676572b0755cbf0ecce8709776d07fa2cfec512d942ebc735c6ac20c5a5a19af8e00d762e8967c7d43325987c3b331c8c86183eec044 DIST firefox-143-patches-02.tar.xz 13704 BLAKE2B 72376ddcc74f97b448e86d464f74bfdb9dbabdf973bf2da6424ab9c78eacf69167114d54867ac3c1c0e39a2bc2efc2e66f2995b3200e3ab72f6f7f795257a03b SHA512 d05a04bebe67a465f43c26492d34bb98ac473b4bdaf98831ed75483842a745fd34ba678e783e7708443f358eb8b0520f263b2a0710c264cef9fffcab30646708 DIST firefox-143.0-ach.xpi 293829 BLAKE2B 465d4e8b99eaa790014f87844e8d65d6b20a629023a14447c959ab97d4c19dc2020f6582b80e4e213db28d415179a9bc5b3d2aacb29a0908654c9bbabac97f8c SHA512 f1beacab86215f12dc3884aa07950f788e5836105cbd1f3edcf87ae858060642620d5615bf72d123233c669ec7f3a92a35d67a3d9f2d807d2d326e32ffc01c75 diff --git a/www-client/firefox/firefox-140.4.0.ebuild b/www-client/firefox/firefox-140.4.0.ebuild new file mode 100644 index 000000000000..e984a990cd39 --- /dev/null +++ b/www-client/firefox/firefox-140.4.0.ebuild @@ -0,0 +1,1387 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-140esr-patches-03.tar.xz" +FIREFOX_LOONG_PATCHSET="firefox-139-loong-patches-02.tar.xz" + +LLVM_COMPAT=( 19 20 ) + +# This will also filter rust versions that don't match LLVM_COMPAT in the non-clang path; this is fine. +RUST_NEEDS_LLVM=1 + +# If not building with clang we need at least rust 1.76 +RUST_MIN_VER=1.82.0 + +PYTHON_COMPAT=( python3_{11..14} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +VIRTUALX_REQUIRED="manual" + +# Information about the bundled wasi toolchain from +# https://github.com/WebAssembly/wasi-sdk/ +WASI_SDK_VER=27.0 +WASI_SDK_LLVM_VER=20 + +MOZ_ESR=yes + +MOZ_PV=${PV} +MOZ_PV_SUFFIX= +if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then + MOZ_PV_SUFFIX=${BASH_REMATCH[1]} + + # Convert the ebuild version to the upstream Mozilla version + MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI + MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI + MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI +fi + +if [[ -n ${MOZ_ESR} ]] ; then + # ESR releases have slightly different version numbers + MOZ_PV="${MOZ_PV}esr" + HOMEPAGE="https://www.firefox.com https://www.firefox.com/enterprise/" + SLOT="esr" +else + HOMEPAGE="https://www.firefox.com" + SLOT="rapid" +fi + +MOZ_PN="${PN%-bin}" +MOZ_P="${MOZ_PN}-${MOZ_PV}" +MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" +MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" + +inherit check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 multiprocessing \ + optfeature pax-utils python-any-r1 readme.gentoo-r1 rust toolchain-funcs virtualx xdg + +MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" + +if [[ ${PV} == *_rc* ]] ; then + MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" +fi + +PATCH_URIS=( + https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +DESCRIPTION="Firefox Web Browser" +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]} + loong? ( + https://dev.gentoo.org/~xen0n/distfiles/www-client/${MOZ_PN}/${FIREFOX_LOONG_PATCHSET} + ) + wasm-sandbox? ( + amd64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz ) + arm64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz ) + )" + +S="${WORKDIR}/${PN}-${PV%_*}" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" + +IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio selinux sndio" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx" +IUSE+=" system-pipewire system-png +system-webp test wayland wifi +X" + +# Firefox-only IUSE +IUSE+=" +gmp-autoupdate gnome-shell +jumbo-build openh264 +telemetry wasm-sandbox" + +REQUIRED_USE="|| ( X wayland ) + debug? ( !system-av1 ) + pgo? ( jumbo-build ) + wayland? ( dbus ) + wifi? ( dbus ) +" + +RESTRICT="!test? ( test )" + +FF_ONLY_DEPEND="!www-client/firefox:0 + selinux? ( sec-policy/selinux-mozilla )" +BDEPEND="${PYTHON_DEPS} + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + clang? ( + llvm-core/lld:${LLVM_SLOT} + pgo? ( llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[profile] ) + ) + wasm-sandbox? ( llvm-core/lld:${LLVM_SLOT} ) + ') + app-alternatives/awk + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.27.0 + net-libs/nodejs + virtual/pkgconfig + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 ) + pgo? ( + X? ( + sys-devel/gettext + x11-base/xorg-server[xvfb] + x11-apps/xhost + ) + !X? ( + gui-wm/tinywl + x11-misc/xkeyboard-config + ) + )" +COMMON_DEPEND="${FF_ONLY_DEPEND} + >=app-accessibility/at-spi2-core-2.46.0:2 + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.112.2 + >=dev-libs/nspr-4.35 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + <media-video/ffmpeg-8.0 + sys-libs/zlib + virtual/freedesktop-icon-theme + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/libdrm + x11-libs/pango + x11-libs/pixman + dbus? ( + sys-apps/dbus + ) + jack? ( virtual/jack ) + pulseaudio? ( + || ( + media-libs/libpulse + >=media-sound/apulse-0.1.12-r4[sdk] + ) + ) + libproxy? ( net-libs/libproxy ) + selinux? ( sec-policy/selinux-mozilla ) + sndio? ( >=media-sound/sndio-1.8.0-r1 ) + system-av1? ( + >=media-libs/dav1d-1.0.0:= + >=media-libs/libaom-3.10.0:= + ) + system-harfbuzz? ( + >=media-libs/harfbuzz-2.8.1:0= + !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 ) + ) + system-icu? ( >=dev-libs/icu-76.1:= ) + system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1:= ) + system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] ) + system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) + system-pipewire? ( >=media-video/pipewire-1.4.7-r2:= ) + system-png? ( >=media-libs/libpng-1.6.45:0=[apng] ) + system-webp? ( >=media-libs/libwebp-1.1.0:0= ) + wayland? ( + >=media-libs/libepoxy-1.5.10-r1 + x11-libs/gtk+:3[wayland] + ) + wifi? ( + kernel_linux? ( + || ( + net-misc/networkmanager + net-misc/connman[networkmanager] + ) + sys-apps/dbus + ) + ) + X? ( + virtual/opengl + x11-libs/cairo[X] + x11-libs/gtk+:3[X] + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrandr + x11-libs/libxcb:= + )" +RDEPEND="${COMMON_DEPEND} + hwaccel? ( + media-video/libva-utils + sys-apps/pciutils + ) + jack? ( virtual/jack ) + openh264? ( media-libs/openh264:*[plugin] )" +DEPEND="${COMMON_DEPEND} + X? ( + x11-base/xorg-proto + x11-libs/libICE + x11-libs/libSM + )" + +# ESR and rapid dependencies. +if [[ -n ${MOZ_ESR} ]] ; then + RDEPEND+=" !www-client/firefox:rapid" +else + RDEPEND+=" !www-client/firefox:esr" +fi + +# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or +# overridden in the enviromnent (advanced hackers only) +if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then + MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) +fi + +llvm_check_deps() { + if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then + einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use clang && ! tc-ld-is-mold ; then + if ! has_version -b "llvm-core/lld:${LLVM_SLOT}" ; then + einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + fi + + if use pgo ; then + if ! has_version -b "=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then + einfo "=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!" >&2 + einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + fi + + einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 +} + +MOZ_LANGS=( + af ar ast be bg br ca cak cs cy da de dsb + el en-CA en-GB en-US es-AR es-ES et eu + fi fr fy-NL ga-IE gd gl he hr hsb hu + id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO + pa-IN pl pt-BR pt-PT rm ro ru + sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW +) + +# Firefox-only LANGS +MOZ_LANGS+=( ach ) +MOZ_LANGS+=( an ) +MOZ_LANGS+=( az ) +MOZ_LANGS+=( bn ) +MOZ_LANGS+=( bs ) +MOZ_LANGS+=( ca-valencia ) +MOZ_LANGS+=( eo ) +MOZ_LANGS+=( es-CL ) +MOZ_LANGS+=( es-MX ) +MOZ_LANGS+=( fa ) +MOZ_LANGS+=( ff ) +MOZ_LANGS+=( fur ) +MOZ_LANGS+=( gn ) +MOZ_LANGS+=( gu-IN ) +MOZ_LANGS+=( hi-IN ) +MOZ_LANGS+=( hy-AM ) +MOZ_LANGS+=( ia ) +MOZ_LANGS+=( km ) +MOZ_LANGS+=( kn ) +MOZ_LANGS+=( lij ) +MOZ_LANGS+=( mk ) +MOZ_LANGS+=( mr ) +MOZ_LANGS+=( my ) +MOZ_LANGS+=( ne-NP ) +MOZ_LANGS+=( oc ) +MOZ_LANGS+=( sc ) +MOZ_LANGS+=( sco ) +MOZ_LANGS+=( si ) +MOZ_LANGS+=( skr ) +MOZ_LANGS+=( son ) +MOZ_LANGS+=( szl ) +MOZ_LANGS+=( ta ) +MOZ_LANGS+=( te ) +MOZ_LANGS+=( tl ) +MOZ_LANGS+=( trs ) +MOZ_LANGS+=( ur ) +MOZ_LANGS+=( xh ) + +mozilla_set_globals() { + # https://bugs.gentoo.org/587334 + local MOZ_TOO_REGIONALIZED_FOR_L10N=( + fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE + ) + + local lang xflag + for lang in "${MOZ_LANGS[@]}" ; do + # en and en_US are handled internally + if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then + continue + fi + + # strip region subtag if $lang is in the list + if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then + xflag=${lang%%-*} + else + xflag=${lang} + fi + + SRC_URI+=" l10n_${xflag/[_@]/-}? (" + SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> ${MOZ_P_DISTFILES}-${lang}.xpi" + SRC_URI+=" )" + IUSE+=" l10n_${xflag/[_@]/-}" + done +} +mozilla_set_globals + +moz_clear_vendor_checksums() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -ne 1 ]] ; then + die "${FUNCNAME} requires exact one argument" + fi + + einfo "Clearing cargo checksums for ${1} ..." + + sed -i \ + -e 's/\("files":{\)[^}]*/\1/' \ + "${S}"/third_party/rust/${1}/.cargo-checksum.json || die +} + +moz_install_xpi() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local DESTDIR=${1} + shift + + insinto "${DESTDIR}" + + local emid xpi_file xpi_tmp_dir + for xpi_file in "${@}" ; do + emid= + xpi_tmp_dir=$(mktemp -d --tmpdir="${T}") + + # Unpack XPI + unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die + + # Determine extension ID + if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then + emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf") + [[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf" + elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then + emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json") + [[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json" + else + die "failed to determine extension id" + fi + + einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..." + newins "${xpi_file}" "${emid}.xpi" + done +} + +mozconfig_add_options_ac() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_add_options_mk() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_use_enable() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 1 ]] ; then + die "${FUNCNAME} requires at least one arguments" + fi + + local flag=$(use_enable "${@}") + mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" +} + +mozconfig_use_with() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 1 ]] ; then + die "${FUNCNAME} requires at least one arguments" + fi + + local flag=$(use_with "${@}") + mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" +} + +virtwl() { + debug-print-function ${FUNCNAME} "$@" + + [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument" + [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset" + tinywl -h >/dev/null || die 'tinywl -h failed' + + local VIRTWL VIRTWL_PID + coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; } + local -x WAYLAND_DISPLAY + read WAYLAND_DISPLAY <&${VIRTWL[0]} + + debug-print "${FUNCNAME}: $@" + "$@" + local r=$? + + [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly" + exec {VIRTWL[0]}<&- {VIRTWL[1]}>&- + return $r +} + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]] ; then + # Ensure we have enough disk space to compile + if use pgo || use debug ; then + CHECKREQS_DISK_BUILD="14300M" + elif tc-is-lto ; then + CHECKREQS_DISK_BUILD="10600M" + else + CHECKREQS_DISK_BUILD="7400M" + fi + + check-reqs_pkg_pretend + fi +} + +pkg_setup() { + + # Get LTO from environment; export after this phase for use in src_configure (etc) + use_lto=no + + if [[ ${MERGE_TYPE} != binary ]] ; then + + if tc-is-lto; then + use_lto=yes + # LTO is handled via configure + filter-lto + fi + + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + fi + + if [[ ${use_lto} = yes ]]; then + # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC, + # bmo#1516758, bgo#942288 + filter-flags -Werror=lto-type-mismatch -Werror=odr + fi + + # Ensure we have enough disk space to compile + if use pgo || use debug ; then + CHECKREQS_DISK_BUILD="14300M" + elif [[ ${use_lto} == "yes" ]] ; then + CHECKREQS_DISK_BUILD="10600M" + else + CHECKREQS_DISK_BUILD="7400M" + fi + + check-reqs_pkg_setup + llvm-r1_pkg_setup + rust_pkg_setup + python-any-r1_pkg_setup + + # Avoid PGO profiling problems due to enviroment leakage + # These should *always* be cleaned up anyway + unset \ + DBUS_SESSION_BUS_ADDRESS \ + DISPLAY \ + ORBIT_SOCKETDIR \ + SESSION_MANAGER \ + XAUTHORITY \ + XDG_CACHE_HOME \ + XDG_SESSION_COOKIE + + # Build system is using /proc/self/oom_score_adj, bug #604394 + addpredict /proc/self/oom_score_adj + + if use pgo ; then + # Update 105.0: "/proc/self/oom_score_adj" isn't enough anymore with pgo, but not sure + # whether that's due to better OOM handling by Firefox (bmo#1771712), or portage + # (PORTAGE_SCHEDULING_POLICY) update... + addpredict /proc + + # Clear tons of conditions, since PGO is hardware-dependant. + addpredict /dev + fi + + if ! mountpoint -q /dev/shm ; then + # If /dev/shm is not available, configure is known to fail with + # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py + ewarn "/dev/shm is not mounted -- expect build failures!" + fi + + # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then + MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc" + fi + + if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then + MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ" + fi + + # Mozilla API keys (see https://location.services.mozilla.com/api) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then + MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005" + fi + + # Ensure we use C locale when building, bug #746215 + export LC_ALL=C + fi + + export use_lto + + CONFIG_CHECK="~SECCOMP" + WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to play DRM-protected content." + linux-info_pkg_setup +} + +src_unpack() { + local _lp_dir="${WORKDIR}/language_packs" + local _src_file + + if [[ ! -d "${_lp_dir}" ]] ; then + mkdir "${_lp_dir}" || die + fi + + for _src_file in ${A} ; do + if [[ ${_src_file} == *.xpi ]]; then + cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die "Failed to copy '${_src_file}' to '${_lp_dir}'!" + else + unpack ${_src_file} + fi + done +} + +src_prepare() { + if [[ ${use_lto} == "yes" ]]; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die + fi + + # Workaround for bgo#915651 on musl + if use elibc_glibc ; then + rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die + fi + + eapply "${WORKDIR}/firefox-patches" + use loong && eapply "${WORKDIR}/firefox-loong-patches" + + # Allow user to apply any additional patches without modifing ebuild + eapply_user + + # Make cargo respect MAKEOPTS + export CARGO_BUILD_JOBS="$(makeopts_jobs)" + + # Workaround for bgo#915651 + if ! use elibc_glibc ; then + if use amd64 ; then + export RUST_TARGET="x86_64-unknown-linux-musl" + elif use x86 ; then + export RUST_TARGET="i686-unknown-linux-musl" + elif use arm64 ; then + export RUST_TARGET="aarch64-unknown-linux-musl" + elif use loong; then + # Only the LP64D ABI of LoongArch64 is actively supported among + # the wider Linux ecosystem, so the assumption is safe. + export RUST_TARGET="loongarch64-unknown-linux-musl" + elif use ppc64 ; then + export RUST_TARGET="powerpc64le-unknown-linux-musl" + elif use riscv ; then + # We can pretty safely rule out any 32-bit riscvs, but 64-bit riscvs also have tons of + # different ABIs available. riscv64gc-unknown-linux-musl seems to be the best working + # guess right now though. + elog "riscv detected, forcing a riscv64 target for now." + export RUST_TARGET="riscv64gc-unknown-linux-musl" + else + die "Unknown musl chost, please post a new bug with your rustc -vV along with emerge --info" + fi + fi + + # Pre-built wasm-sandbox path manipulation. + if use wasm-sandbox ; then + if use amd64 ; then + export wasi_arch="x86_64" + elif use arm64 ; then + export wasi_arch="arm64" + else + die "wasm-sandbox enabled on unknown/unsupported arch!" + fi + + sed -i \ + -e "s:%%PORTAGE_WORKDIR%%:${WORKDIR}:" \ + -e "s:%%WASI_ARCH%%:${wasi_arch}:" \ + -e "s:%%WASI_SDK_VER%%:${WASI_SDK_VER}:" \ + -e "s:%%WASI_SDK_LLVM_VER%%:${WASI_SDK_LLVM_VER}:" \ + toolkit/moz.configure || die "Failed to update wasi-related paths." + fi + + # Make LTO respect MAKEOPTS + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/chromium/build/toolchain/get_cpu_count.py || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed sedding multiprocessing.cpu_count" + + # sed-in toolchain prefix + sed -i \ + -e "s/objdump/${CHOST}-objdump/" \ + "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py || die "sed failed to set toolchain prefix" + + sed -i \ + -e 's/ccache_stats = None/return None/' \ + "${S}"/python/mozbuild/mozbuild/controller/building.py || die "sed failed to disable ccache stats call" + + einfo "Removing pre-built binaries ..." + + find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die + + # Clear checksums from cargo crates we've manually patched. + # moz_clear_vendor_checksums xyz + + # Respect choice for "jumbo-build" + # Changing the value for FILES_PER_UNIFIED_FILE may not work, see #905431 + if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then + local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16} + elog "" + elog "jumbo-build defaults modified to ${my_files_per_unified_file}." + elog "if you get a build failure, try undefining FILES_PER_UNIFIED_FILE," + elog "if that fails try -jumbo-build before opening a bug report." + elog "" + + sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \ + python/mozbuild/mozbuild/frontend/data.py || + die "Failed to adjust FILES_PER_UNIFIED_FILE in python/mozbuild/mozbuild/frontend/data.py" + sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE = "${my_files_per_unified_file}"/" \ + js/src/moz.build || + die "Failed to adjust FILES_PER_UNIFIED_FILE in js/src/moz.build" + fi + + # Create build dir + BUILD_DIR="${WORKDIR}/${PN}_build" + mkdir -p "${BUILD_DIR}" || die + + # Write API keys to disk + echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die + echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die + echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die + + xdg_environment_reset +} + +src_configure() { + # Show flags set at the beginning + einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}" + einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}" + einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}" + einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" + + local have_switched_compiler= + if use clang; then + # Force clang + einfo "Enforcing the use of clang due to USE=clang ..." + + local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }') + [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}") + [[ -z ${version_clang} ]] && die "Failed to read clang version!" + + if tc-is-gcc; then + have_switched_compiler=yes + fi + + AR=llvm-ar + CC=${CHOST}-clang-${version_clang} + CXX=${CHOST}-clang++-${version_clang} + NM=llvm-nm + RANLIB=llvm-ranlib + elif ! use clang && ! tc-is-gcc ; then + # Force gcc + have_switched_compiler=yes + einfo "Enforcing the use of gcc due to USE=-clang ..." + AR=gcc-ar + CC=${CHOST}-gcc + CXX=${CHOST}-g++ + NM=gcc-nm + RANLIB=gcc-ranlib + fi + + if [[ -n "${have_switched_compiler}" ]] ; then + # Because we switched active compiler we have to ensure + # that no unsupported flags are set + strip-unsupported-flags + fi + + # Ensure we use correct toolchain, + # AS is used in a non-standard way by upstream, #bmo1654031 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + export AS="$(tc-getCC) -c" + + # Configuration tests expect llvm-readelf output, bug 913130 + READELF="llvm-readelf" + + tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG + + # Pass the correct toolchain paths through cbindgen + if tc-is-cross-compiler ; then + export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}" + fi + + # Set MOZILLA_FIVE_HOME + export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" + + # python/mach/mach/mixin/process.py fails to detect SHELL + export SHELL="${EPREFIX}/bin/bash" + + # Set state path + export MOZBUILD_STATE_PATH="${BUILD_DIR}" + + # Set MOZCONFIG + export MOZCONFIG="${S}/.mozconfig" + + # Initialize MOZCONFIG + mozconfig_add_options_ac '' --enable-application=browser + mozconfig_add_options_ac '' --enable-project=browser + + # Set Gentoo defaults + if use telemetry; then + export MOZILLA_OFFICIAL=1 + fi + + mozconfig_add_options_ac 'Gentoo default' \ + --allow-addon-sideload \ + --disable-cargo-incremental \ + --disable-crashreporter \ + --disable-disk-remnant-avoidance \ + --disable-geckodriver \ + --disable-install-strip \ + --disable-legacy-profile-creation \ + --disable-parental-controls \ + --disable-strip \ + --disable-updater \ + --disable-wmf \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-packed-relative-relocs \ + --enable-release \ + --enable-system-policies \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --with-system-ffi \ + --with-system-gbm \ + --with-system-libdrm \ + --with-system-nspr \ + --with-system-nss \ + --with-system-pixman \ + --with-system-zlib \ + --with-toolchain-prefix="${CHOST}-" \ + --with-unsigned-addon-scopes=app,system + + # Set update channel + local update_channel=release + [[ -n ${MOZ_ESR} ]] && update_channel=esr + mozconfig_add_options_ac '' --enable-update-channel=${update_channel} + + # Whitelist to allow unkeyworded arches to build with "--disable-rust-simd" by default. + if use amd64 || use arm64 || use ppc64 || use loong || use riscv ; then + mozconfig_add_options_ac '' --enable-rust-simd + fi + + # For future keywording: This is currently (97.0) only supported on: + # amd64, arm, arm64 & x86. + # Might want to flip the logic around if Firefox is to support more arches. + # bug 833001, bug 903411#c8 + if use loong || use ppc64 || use riscv; then + mozconfig_add_options_ac '' --disable-sandbox + else + mozconfig_add_options_ac '' --enable-sandbox + fi + + # riscv-related options, bgo#947337, bgo#947338 + if use riscv ; then + mozconfig_add_options_ac 'Disable JIT for RISC-V 64' --disable-jit + mozconfig_add_options_ac 'Disable webrtc for RISC-V' --disable-webrtc + fi + + if [[ -s "${S}/api-google.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-google-safebrowsing-api-keyfile="${S}/api-google.key" + else + einfo "Building without Google API key ..." + fi + + if [[ -s "${S}/api-location.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-google-location-service-api-keyfile="${S}/api-location.key" + else + einfo "Building without Location API key ..." + fi + + if [[ -s "${S}/api-mozilla.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-mozilla-api-keyfile="${S}/api-mozilla.key" + else + einfo "Building without Mozilla API key ..." + fi + + mozconfig_use_with system-av1 + mozconfig_use_with system-harfbuzz + mozconfig_use_with system-icu + mozconfig_use_with system-jpeg + mozconfig_use_with system-libevent + mozconfig_use_with system-libvpx + mozconfig_use_with system-pipewire + mozconfig_use_with system-png + mozconfig_use_with system-webp + + mozconfig_use_enable dbus + mozconfig_use_enable libproxy + + use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme + + if use hardened ; then + mozconfig_add_options_ac "+hardened" --enable-hardening + append-ldflags "-Wl,-z,relro -Wl,-z,now" + + # Increase the FORTIFY_SOURCE value, #910071. + sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' "${S}"/build/moz.configure/toolchain.configure || die + fi + + local myaudiobackends="" + use jack && myaudiobackends+="jack," + use sndio && myaudiobackends+="sndio," + use pulseaudio && myaudiobackends+="pulseaudio," + ! use pulseaudio && myaudiobackends+="alsa," + + mozconfig_add_options_ac '--enable-audio-backends' --enable-audio-backends="${myaudiobackends::-1}" + + mozconfig_use_enable wifi necko-wifi + + ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' --disable-unified-build + + if use X && use wayland ; then + mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland + elif ! use X && use wayland ; then + mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland-only + else + mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only + fi + + # wasm-sandbox + # Since graphite2 is one of the sandboxed libraries, system-graphite2 obviously can't work with +wasm-sandbox. + if use wasm-sandbox ; then + mozconfig_add_options_ac '+wasm-sandbox' --with-wasi-sysroot="${WORKDIR}/wasi-sdk-${WASI_SDK_VER}-${wasi_arch}-linux/share/wasi-sysroot/" + else + mozconfig_add_options_ac 'no wasm-sandbox' --without-wasm-sandboxed-libraries + mozconfig_use_with system-harfbuzz system-graphite2 + fi + + if [[ ${use_lto} == "yes" ]] ; then + if use clang ; then + # Upstream only supports lld or mold when using clang. + if tc-ld-is-mold ; then + # mold expects the -flto line from *FLAGS configuration, bgo#923119 + append-ldflags "-flto=thin" + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld + fi + + mozconfig_add_options_ac '+lto' --enable-lto=cross + + else + # ThinLTO is currently broken, see bmo#1644409. + # mold does not support gcc+lto combination. + mozconfig_add_options_ac '+lto' --enable-lto=full + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + + else + # Avoid auto-magic on linker + if use clang ; then + # lld is upstream's default + if tc-ld-is-mold ; then + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld + fi + + else + if tc-ld-is-mold ; then + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "linker is set to bfd due to USE=-clang" --enable-linker=bfd + fi + fi + fi + + # PGO was moved outside lto block to allow building pgo without lto. + if use pgo ; then + mozconfig_add_options_ac '+pgo' MOZ_PGO=1 + + # Avoid compressing just-built instrumented Firefox with + # high levels of compression. Just use tar as a container + # to save >=10 minutes. + export MOZ_PKG_FORMAT=tar + + if use clang ; then + # Used in build/pgo/profileserver.py + export LLVM_PROFDATA="llvm-profdata" + fi + fi + + mozconfig_use_enable debug + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + mozconfig_add_options_ac '+debug' --enable-jemalloc + mozconfig_add_options_ac '+debug' --enable-real-time-tracing + else + mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing + + if is-flag '-g*' ; then + if use clang ; then + mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*') + else + mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols + fi + else + mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols + fi + + if is-flag '-O0' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0 + elif is-flag '-O4' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4 + elif is-flag '-O3' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3 + elif is-flag '-O1' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1 + elif is-flag '-Os' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os + else + mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2 + fi + fi + + # Debug flag was handled via configure + filter-flags '-g*' + + # Optimization flag was handled via configure + filter-flags '-O*' + + # elf-hack + # Filter "-z,pack-relative-relocs" and let the build system handle it instead. + if use amd64 || use x86 ; then + filter-flags "-z,pack-relative-relocs" + + if tc-ld-is-mold ; then + # relr-elf-hack is currently broken with mold, bgo#916259 + mozconfig_add_options_ac 'disable elf-hack with mold linker' --disable-elf-hack + else + mozconfig_add_options_ac 'relr elf-hack' --enable-elf-hack=relr + fi + elif use loong || use ppc64 || use riscv ; then + # '--disable-elf-hack' is not recognized on loong/ppc64/riscv, + # see bgo #917049, #930046 + :; + else + mozconfig_add_options_ac 'disable elf-hack on non-supported arches' --disable-elf-hack + fi + + if ! use elibc_glibc; then + mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc + fi + + # System-av1 fix + use system-av1 && append-ldflags "-Wl,--undefined-version" + + # Make revdep-rebuild.sh happy; Also required for musl + append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags + + # Pass $MAKEOPTS to build system + export MOZ_MAKE_FLAGS="${MAKEOPTS}" + + # Use system's Python environment + export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach + + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" + + if ! use telemetry; then + mozconfig_add_options_mk '-telemetry setting' "MOZ_CRASHREPORTER=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_DATA_REPORTING=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_SERVICES_HEALTHREPORT=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_TELEMETRY_REPORTING=0" + fi + + mozconfig_use_enable test tests + + # Disable notification when build system has finished + export MOZ_NOSPAM=1 + + # Portage sets XARGS environment variable to "xargs -r" by default which + # breaks build system's check_prog() function which doesn't support arguments + mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs" + + # Set build dir + mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}" + + # Show flags we will use + einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}" + einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}" + einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}" + einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" + + # Handle EXTRA_CONF and show summary + local ac opt hash reason + + # Apply EXTRA_ECONF entries to $MOZCONFIG + if [[ -n ${EXTRA_ECONF} ]] ; then + IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!} + for opt in "${ac[@]}"; do + mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--} + done + fi + + echo + echo "==========================================================" + echo "Building ${PF} with the following configuration" + grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do + [[ -z ${hash} || ${hash} == \# ]] \ + || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}" + printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}" + done + echo "==========================================================" + echo + + ./mach configure || die +} + +src_compile() { + local virtx_cmd= + + if [[ ${use_lto} == "yes" ]] && tc-ld-is-mold ; then + # increase ulimit with mold+lto, bugs #892641, #907485 + if ! ulimit -n 16384 1>/dev/null 2>&1 ; then + ewarn "Unable to modify ulimits - building with mold+lto might fail due to low ulimit -n resources." + ewarn "Please see bugs #892641 & #907485." + else + ulimit -n 16384 + fi + fi + + if use pgo; then + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + addpredict /root + + if ! use X; then + virtx_cmd=virtwl + else + virtx_cmd=virtx + fi + fi + + if ! use X; then + local -x GDK_BACKEND=wayland + else + local -x GDK_BACKEND=x11 + fi + + ${virtx_cmd} ./mach build --verbose || die +} + +src_test() { + # https://firefox-source-docs.mozilla.org/testing/automated-testing/index.html + local -a failures=() + + # Some tests respect this + local -x MOZ_HEADLESS=1 + + # Check testing/mach_commands.py + einfo "Testing with cppunittest ..." + ./mach cppunittest + local ret=$? + if [[ ${ret} -ne 0 ]]; then + eerror "Test suite cppunittest failed with error code ${ret}" + failures+=( cppunittest ) + fi + + if [[ ${#failures} -eq 0 ]]; then + einfo "Test suites succeeded" + else + die "Test suites failed: ${failures[@]}" + fi +} + +src_install() { + # xpcshell is getting called during install + pax-mark m \ + "${BUILD_DIR}"/dist/bin/xpcshell \ + "${BUILD_DIR}"/dist/bin/${PN} \ + "${BUILD_DIR}"/dist/bin/plugin-container + + DESTDIR="${D}" ./mach install || die + + # Upstream cannot ship symlink but we can (bmo#658850) + rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die + dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin + + # Don't install llvm-symbolizer from llvm-core/llvm package + if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then + rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die + fi + + # Install policy (currently only used to disable application updates) + insinto "${MOZILLA_FIVE_HOME}/distribution" + newins "${FILESDIR}"/distribution.ini distribution.ini + newins "${FILESDIR}"/disable-auto-update.policy.json policies.json + + # Install system-wide preferences + local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences" + insinto "${PREFS_DIR}" + newins "${FILESDIR}"/gentoo-default-prefs.js gentoo-prefs.js + + local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js" + + # Set dictionary path to use system hunspell + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set spellchecker.dictionary_path pref" + pref("spellchecker.dictionary_path", "${EPREFIX}/usr/share/myspell"); + EOF + + # Force hwaccel prefs if USE=hwaccel is enabled + if use hwaccel ; then + cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-r2 \ + >>"${GENTOO_PREFS}" \ + || die "failed to add prefs to force hardware-accelerated rendering to all-gentoo.js" + + if use wayland; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel wayland prefs" + pref("gfx.x11-egl.force-enabled", false); + EOF + else + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel x11 prefs" + pref("gfx.x11-egl.force-enabled", true); + EOF + fi + + # Install the vaapitest binary on supported arches (122.0 supports all platforms, bmo#1865969) + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/vaapitest + + # Install the v4l2test on supported arches (+ arm, + riscv64 when keyworded) + if use arm64 ; then + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/v4l2test + fi + fi + + if ! use gmp-autoupdate ; then + local plugin + for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do + einfo "Disabling auto-update for ${plugin} plugin ..." + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin" + pref("media.${plugin}.autoupdate", false); + EOF + done + fi + + # Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it + if use system-harfbuzz ; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref" + sticky_pref("gfx.font_rendering.graphite.enabled", true); + EOF + fi + + # Add telemetry config prefs, just in case something happens in future and telemetry build + # options stop working. + if ! use telemetry ; then + cat "${FILESDIR}"/gentoo-telemetry-prefs.js >>"${GENTOO_PREFS}" || die "failed to set telemetry prefs" + fi + + # Install language packs + local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name '*.xpi') ) + if [[ -n "${langpacks}" ]] ; then + moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" "${langpacks[@]}" + fi + + # Install icons + local icon_srcdir="${S}/browser/branding/official" + + # Prefer the upstream svg file they use when packaging flatpak so it's always up-to-date. + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${S}"/browser/installer/linux/app/flatpak/files/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg firefox-symbolic.svg + dosym -r /usr/share/icons/hicolor/symbolic/apps/firefox-symbolic.svg /usr/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg + + local icon size + for icon in "${icon_srcdir}"/default*.png ; do + size=${icon%.png} + size=${size##*/default} + + if [[ ${size} -eq 48 ]] ; then + newicon "${icon}" ${PN}.png + fi + + newicon -s ${size} "${icon}" ${PN}.png + done + + # Install menu + local app_name="Mozilla ${MOZ_PN^}" + local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + if [[ -n ${MOZ_ESR} ]] ; then + local desktop_filename="${PN}-esr.desktop" + else + local desktop_filename="${PN}.desktop" + fi + + if use wayland ; then + use_wayland="true" + fi + + cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die + + sed -i \ + -e "s:@NAME@:${app_name}:" \ + -e "s:@EXEC@:${exec_command}:" \ + -e "s:@ICON@:${icon}:" \ + "${WORKDIR}/${PN}.desktop-template" || die + + newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}" + + rm "${WORKDIR}/${PN}.desktop-template" || die + + if use gnome-shell ; then + # Install search provider for Gnome + insinto /usr/share/gnome-shell/search-providers/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini + + insinto /usr/share/dbus-1/services/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service + + # Toggle between rapid and esr desktop file names + if [[ -n ${MOZ_ESR} ]] ; then + sed -e "s/firefox.desktop/${desktop_filename}/g" \ + -i "${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini" || + die "Failed to sed org.mozilla.firefox.search-provider.ini file." + fi + + # Make the dbus service aware of a previous session, bgo#939196 + sed -e \ + "s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox --dbus-service \/usr\/bin\/firefox/g" \ + -i "${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" || + die "Failed to sed org.mozilla.firefox.SearchProvider.service dbus file" + + # Update prefs to enable Gnome search provider + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable gnome-search-provider via prefs" + pref("browser.gnome-search-provider.enabled", true); + EOF + fi + + # Install wrapper script + [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}" + newbin "${FILESDIR}/${PN}-r1.sh" ${PN} + + # Update wrapper + sed -i \ + -e "s:@PREFIX@:${EPREFIX}/usr:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" || die + + readme.gentoo_create_doc +} + +pkg_postinst() { + xdg_pkg_postinst + + if ! use gmp-autoupdate ; then + elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or" + elog "installing into new profiles:" + local plugin + for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do + elog "\t ${plugin}" + done + elog + fi + + # bug 835078 + if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then + ewarn "You have nouveau drivers installed in your system and 'hwaccel' " + ewarn "enabled for Firefox. Nouveau / your GPU might not support the " + ewarn "required EGL, so either disable 'hwaccel' or try the workaround " + ewarn "explained in https://bugs.gentoo.org/835078#c5 if Firefox crashes." + fi + + readme.gentoo_print_elog + + optfeature_header "Optional programs for extra features:" + optfeature "desktop notifications" x11-libs/libnotify + optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas + optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal + if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then + optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver + fi + + if ! has_version "sys-libs/glibc"; then + elog + elog "glibc not found! You won't be able to play DRM content." + elog "See Gentoo bug #910309 or upstream bug #1843683." + elog + fi +}
