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
+}

Reply via email to