commit:     d52ab402f1dfc92f397c9eb375ef332148b80b38
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Oct  1 16:08:16 2024 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Oct  1 16:08:45 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d52ab402

www-client/firefox: add 115.16.0

Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 www-client/firefox/Manifest                |  100 ++
 www-client/firefox/firefox-115.16.0.ebuild | 1393 ++++++++++++++++++++++++++++
 2 files changed, 1493 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 467c26035646..f249ac884932 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -98,6 +98,106 @@ DIST firefox-115.15.0esr-xh.xpi 414955 BLAKE2B 
fcbe5f7b559c90382d4d45b808ba35242
 DIST firefox-115.15.0esr-zh-CN.xpi 657103 BLAKE2B 
a7927017d440780ee1ab7a4f2a9075bb071db4ca38f9bd05499606d8a3a28d9daa3bdfa1895bce263e9a81dcf984042e1447bbbd96d4b3e34249045a6567ac28
 SHA512 
af3399e9eafd53a9644bbc7c8e714e4b497f0ef64f98b3b4e2bd0d28949031aa3f23f78e973baa4286622673ddc5f55c03906bc6059ba6a10448fe0da68f4996
 DIST firefox-115.15.0esr-zh-TW.xpi 659312 BLAKE2B 
a73185e11f1b6db6def7ebf6ac1bc54aedb459822cb97768c7699a2fcc0ed74ee4dc96c2cc9a7a9952d3dd3c58da9340042e6a75f4fa0f9b52dcf98a88066a46
 SHA512 
ae7d6d80e645e5a69d8d0fb9a245e7ba0cce82ebcb7a167cf0a4d5a5e306dd58130bd550c66aa814bc0b30a2d57282dcbd44acea47370a6137ff4404eb124034
 DIST firefox-115.15.0esr.source.tar.xz 507920832 BLAKE2B 
997a3148b7019fbec95e1e003561a1135c27a769ff92a675debff540b20213a21cf96f9f2e9cb1db4e8c81702b7fcf7e1ba35045dc7dfd705957d099350ea9f3
 SHA512 
0df4c498c99cce08903004d2e0f9e977a19f7de86240aa82dba179b60f1d67ca3021eb474f56bddc38035e773eeb5d99bb3e1b0756d9f7583dc8e1f747f477ba
+DIST firefox-115.16.0esr-ach.xpi 459029 BLAKE2B 
65cb136e1560f939bcaaf4d28c0cfc69422f72ec05b276d466cb7c6a5a0dfc7c22c722b95668e8fe6188aee39d5bfd60f8601184f8bc264c4db6a3753ed7f575
 SHA512 
c7fdf0f438c9edc4766008e4b117c2deb799166105f7f9dcf275ea643840ab12e27e997713ba760e6feb8b86758e2cd020c55aeb3402f07575e3c73ca647bba4
+DIST firefox-115.16.0esr-af.xpi 415177 BLAKE2B 
fdb9e4460a9421f4ab9356adbd3b70a85b36b296424ee71420d26b70f9805decfb465d86fd3c174ec0b2497353994d65d36e75c0f7bd3a3c70bacd14b409c236
 SHA512 
252891eb3c12e3ba33c9c40633af42f2b8e1baf32facda51188f56213dd2ea0d8033c8a8dff87e31844190ed9ff7b0464da34fe1c521c047f842ac0d164e854a
+DIST firefox-115.16.0esr-an.xpi 499570 BLAKE2B 
3c99f14d9d97e4c03a7e8574b599ae28db6f63b9d01fd3f333b5be4c291aedec493e8ea9aa8d44e6ed8da0d0a6f226ed863aa74ebca4752259e330095d7a5596
 SHA512 
b69973467a6234b96a3baabc6b74196ffd2cca3ec5cbffc665094b413e8d15471334e2dbc2cb264e14027a40a8f3340c4c720ef52ac1ed714c1b322cac9c1fe7
+DIST firefox-115.16.0esr-ar.xpi 606285 BLAKE2B 
3d966801b4d600fd9aadbc43229c62e54a684d731a290a358f748302b944199f4f726abd7251e21ead09d9f8b7b9151b11e4f2e66ad976bc6b537464712b1e11
 SHA512 
99de40fce0ee625253c54541b77b96132b9a4bd636c7fefd6b921bcd0e785bfde2d56fa2664dcc7701825c777cc5c83bc3b2d13f0b2f1e0e05bc5f418ea81643
+DIST firefox-115.16.0esr-ast.xpi 491337 BLAKE2B 
2f0a96c92a0b9af0dc27da7d6773dc99ef035e7c24f52fb76a7934f8e92ae0d040beb4b495a3a65c50c45ef3ad49ec43a8c5aea02d8fdb820fda13352f085fdb
 SHA512 
7e8cbcead5298f8315a5cdf38dbafe87f31bef1a64816566c90bad42eb649b1e1a7e6784e66146e8b73ba99693802918dab55a68ebe5d788ba457b83a614a676
+DIST firefox-115.16.0esr-az.xpi 486090 BLAKE2B 
c692d683458e52c6e0bba34a3b356c91477fe9e52d88ce11bce5e6972dd5e7f3cf76e055ebf911e92c2c181696fd0b93230e875e4fdff9d2095606c5473665ad
 SHA512 
6834939981eadedd6c565af6e82004a589942f1f275ca3504e282ea689380f8e3d582a69930dcd689e1b6bc5847a56141c94558ff41afc7c97f8fafcdb6dd766
+DIST firefox-115.16.0esr-be.xpi 715661 BLAKE2B 
813ec9b51eb940616bd785bd7186ba85c9c253c789404f7e01b0c9d4f40f3079fa8a7edef9607f3ced73f5c25fa88421efc4c05f8e4b8f3a87a3bd24b9b66347
 SHA512 
00b0dd0e55a1e3d1a36e8dc6be6e71490b2c4c4886211a0d078e9904179504a415359c4b9bc380df3e7e8283465c9a257b25e6a388a0a928d08a2ff4dbe1bf4b
+DIST firefox-115.16.0esr-bg.xpi 600397 BLAKE2B 
c46c78f0632d51c7fc2b4dcf5e2d0140c3bd7095d2fc56c088c328e8590a527abfb7f3f9b4ee8517eac2fec779bbfe5f9c0a8926c0cee203fbe5c7c090f4ae64
 SHA512 
c7f8efed4dd111a842091e60d8d57434bb362d909454c72f1381afe6dd195a5d4c03012d8b92a1ebd49e77d997fbf97343a06831cd90824d3ddec66b6a29ca99
+DIST firefox-115.16.0esr-bn.xpi 576344 BLAKE2B 
fd11642f18af552844ab33d7646632719b3c9b199b247cef59fe32bb0e98b21415da0d8bcc1d269329fed5e824626e97ecf28a954417973478206f0f1f138cfe
 SHA512 
925ce29218851554923a05e652ce9b6fa3f8d520bb722de61e6ad34caa9b1b9d766142058e137c50ff2358d343df22b2a40514c96baead0310c08bf222135cbf
+DIST firefox-115.16.0esr-br.xpi 584991 BLAKE2B 
745ca4092473b6b59b6e8bba42f5f9b84c79bf93b6ecb5f9151e20a977e9df95a75d77e7fc2b2dfe55081cd6b01d8195a23b0833c930217b3370becf97600e02
 SHA512 
93b2cfcefae329fc1190c7a64ad65ae420aacdb8be32baed2960d35dda866efa436e0fa117ff52b47909701484ac4412a5b3dd93865b7291223c18f391fcbca3
+DIST firefox-115.16.0esr-bs.xpi 496779 BLAKE2B 
755099fec8e1b930980a5a419f87170cdc7376c3b332dcf0db745b8ed7355933ef3900dee98c67d02a4b99425eb86100583596bc3c026bbd64cee083640779d0
 SHA512 
e6de1c9327b71919f352ee51d87c0483ca87455528a565268eadcefac38f3f8e7b41e5dde59d100271732b68e7e0e41a0bc514d0b4b6affb5c4a3518c979f0c7
+DIST firefox-115.16.0esr-ca-valencia.xpi 539265 BLAKE2B 
c2f89eaadd20f13017f936bdb2a9843148aefe8310178c4f9f711a3537aa9d1c3b89ef9dc307ef3a1bad7359a886b5c379402195d2f8395fb5d9472ee5a8436e
 SHA512 
792d6dbdad1bee6c1ace53d73440069c64fff614697830f8a70cef86688dab99796127a0d1a92093b86865d9f44b7936430db06d94525efeb866f72e773a5d68
+DIST firefox-115.16.0esr-ca.xpi 591045 BLAKE2B 
af3853aefcd84c8013841f42d9fa3b1fe49e00192771523a73aca46efc1676945e1aab66b1b149ecce4ba49e9901cb1fd5201cbc7c66f97631deb91885ffbe74
 SHA512 
d6f2d526226544d466aa6dd6ddeaf76cb00482def3f0fc43baada35ca6a51d4c937242f2c6c6699c8c8145d063af63cc4386b4d12edeedc2a4ab388782dcc2c7
+DIST firefox-115.16.0esr-cak.xpi 586729 BLAKE2B 
a7fa0e199c850bdd322e081ac84137898031a3ad9fb18281f283f21bb45c5b329737639558570a174fe1923166366a26e50ff80e2f910ee03c8c9c374b5c6d32
 SHA512 
037f464d56c5181de4b97f686cfc2ff6a7fd9113f071792f63de9d1749c30bd73243c844a5c9df565b68b93c2a77f28375bd96f3ac1c38b361ace7d87e43f106
+DIST firefox-115.16.0esr-cs.xpi 659582 BLAKE2B 
3b4bda260f590635f8f0ea5f8d2cf9dc23fb48ead8d2002fac07578a9b2f5127f973fc0a89a9bfed0b476689fb45b754ba3280b13b5c6474dbb3fda2f3e26be6
 SHA512 
acf81cafc4ed752aad01298e8965f192ca1137d08bf6ce20c2671add233a07e986da7d86a80ace0234f45bda70ef54b766d88bcc82758f3894323351cb41ffd9
+DIST firefox-115.16.0esr-cy.xpi 622578 BLAKE2B 
aa063d83ace8af604089125ccee500e71c47697edb00e01a73409b4e6dcc14bb9d0ffa30b452aed2673b97688b968ad4f902494c505fa1f4ccfca61bce883e5f
 SHA512 
7e1dcc45f9c04140d14cc9a38d86a06a341a6bbafbaa9827b13d3b6012388ca0a161025c60617640e033d8da8e475cc5309a6fa2bc75e16c86917c65fd0e7536
+DIST firefox-115.16.0esr-da.xpi 611176 BLAKE2B 
a52f244f8dec674eddd70cf3ae2d5f09b53249c9eb0403712d838090a9af7a1168b1f54b76656c8cfbcff5f2a1faecc889f418b9602ff37496a400eb824153a6
 SHA512 
b9c8a88eb9f380e2dd56580aa88b652163f2d99529cc63fc650ce6372780f4f488fda0af12f38e678034651bf2e31410680d76f73ce93ba6ec783a6ba3455ecf
+DIST firefox-115.16.0esr-de.xpi 632366 BLAKE2B 
2a1fb1a123f7d88b959f98ddece9d3f18337daa93362ab632bc5cf9940966a0ce509af15093aeb757c808e738553229661cf09bbc330a3c8cb67d0450b16f93e
 SHA512 
2de58d4b4041700c2591246fd1320cd5179b5997613114e6c2a50faa097fdad064b445ed98b117ec3bb21690559710725523423d181541934acb33edd0be6211
+DIST firefox-115.16.0esr-dsb.xpi 651481 BLAKE2B 
0d7e7f667e35dbe4639963f52f73b1a2e22657aa6f26d3714c6ca7933eca81c19cfc91470abdb986b8d375b137a7f66ea0ea306eb4648f74827b8a86c97e1f66
 SHA512 
2e6c25b556ae7d079b53d7863c1643f7c6b9a207b504f502c835e7c93f710f4d50e08b1d5ef36b839114e0e030c6a2b04386a1f1ebe624fb483d7316bf5798da
+DIST firefox-115.16.0esr-el.xpi 734625 BLAKE2B 
14df77c5bd1eb33d636161e52c535f863da0ad5ca5db022714c15d89a66756ff3c1036ee2c61790582dc9c460e62cddd0288e1c55f7ffcf80f586b2d0ea87135
 SHA512 
fbb400c9fcfe31b961b3270c1a4b572c648000a6608c3885e6a5345cbc06c09ffc74d007120645b9871faef7255d202a572fc72bf2c25fda6b4529c0d35306aa
+DIST firefox-115.16.0esr-en-CA.xpi 584140 BLAKE2B 
dc56bc189b6698af646d475ca28ba1975bd8bb35b08b8056a74c6fc59b327844a8e39caf6dd5daa052346cfad9c89b0b96af6d79ef14a5a6f8ba855861d61c8c
 SHA512 
0ec267a5f31d5486e8ff1a419f5565e4cb58f12c9e011641bb7d40f44725d6b35c2ada2fa9e730d55e8bb06e81e8b42bc95d1f3a858435f7c155f75d4d46321f
+DIST firefox-115.16.0esr-en-GB.xpi 585206 BLAKE2B 
bfecea46b35aec3b8babcefd03a9623485a3485e3b58386e5d0a3d3093489bff52753ddef79ef1ba6192bedb81c006f8d51cdd07b7f3ace6b2bfc336e09fc42b
 SHA512 
7528bbf45370d66edb704f23f41ab8344eab6fa80dce66c439d97ff23da367a3cea90c4cd2f5b05cc5243e900b67e5081841f95ea7eecce06531f3119d4424ed
+DIST firefox-115.16.0esr-eo.xpi 613418 BLAKE2B 
e3c81ecb34a072e248c2be34229c522fa9135197e63100e47c9c348de3860306bf4183771abbfa5183da1089eab107831acc8021f584f32ba0441b909eaa5755
 SHA512 
9248145401c45e7b33fe7fac7cf851c8f8613a9d7a8ceb255129b9200462cf9399205d7dc9511d0bb8e1a557d0c813a67834a40b72fd761ad456b38185a0b639
+DIST firefox-115.16.0esr-es-AR.xpi 628383 BLAKE2B 
102ab1a9a77ec8a2595505ffd5a4acc95d1910fed5c58b9c8eb88888628340cbc22e0a7ed822908da2b4af4df338dd73453e61d19a6d79473b2d65fbfe1208b4
 SHA512 
8ab7beb39d7b3847f2335ae5aaa087f7238775900828efa0fdd28d8de15e94a76360fd6b1ceb9d1c484322a416e00c2d51b16a3ff08a83e21148462049a70706
+DIST firefox-115.16.0esr-es-CL.xpi 627709 BLAKE2B 
c6b2a8d24f63e22838635c56fb65d42340b0dfafa4c397ea5c0d74e0773b56dceb0c6a5c5e982d364f7b218f2ebdd76fa5eb2578613ba001642dc54867653b7d
 SHA512 
464abc3d760a08c81db70c69fc09080d2e4a11eb09fbe2ac1abf59989bbf1797ca6ea6d4b767173b0474db922bbb23eca06108f8dc0fb0f6e9852aa8cd91bdd5
+DIST firefox-115.16.0esr-es-ES.xpi 621485 BLAKE2B 
1e948318edaa54373de36e2a64dbdcdd6857a7a2955a43d673fecb199bf3ddf61a53031e0e0ee341ed950dd0002dc7c5c7ec90fa41e312b3afa909220d8e06a7
 SHA512 
ea93b0de35b337a692bf1b957aee7a814142486ece0d6bd95c203edeafac6fe9d35e6353adb77dcc43dcbb3c289ce36f232ba0859905d8069c12c158321d1647
+DIST firefox-115.16.0esr-es-MX.xpi 597934 BLAKE2B 
48f9125910715771674d10b2d141a031072165c244410301b21c784f6e400446f32feb383af69fd95c85b2f8736d83ed7639551992d72ac9e00dec90cca1561f
 SHA512 
af0537f4a087419f6ee5e2d5be572cef0e863ae8ae0548b82eb093a1ceedb2b1354503cbaadefc869f45993f956db0b812fc051d45cc12a43bd4cdbab87fc8ed
+DIST firefox-115.16.0esr-et.xpi 533027 BLAKE2B 
4a1eb6c0f515c042f421c20f43c327c5d2c0c29f88ce3f8235784aa98713f1ce10fcd6ed22f9fc82b723bbc17dc53fbbbc7e39cbc8409625ba8168b78777bca3
 SHA512 
b149673b1fd6a1953f3c3f4a83aa0bfde0877b015f9762f4cbc261a299c26ec3ff01631c2141bb770aa9774a66839d2108f7fb2bf7db0831a26a2a835e0ad3ce
+DIST firefox-115.16.0esr-eu.xpi 594639 BLAKE2B 
2cbba6b6faa6ae1e30bc782d84966fc161d41012e261d24d06d2f954e6ff351493ee9a6ca3bb905d1a0bb0f8e18d0507c327eb8d28c1cbc1548b774a7dd62c3e
 SHA512 
1741c9dec8c62b446dd73c47cede6f315fee6b29a2dfc4951452d88baa0edbdd847692c751b5063827ab0be2d6754821a8f61e23cc0f8911e4381cac414d93b0
+DIST firefox-115.16.0esr-fa.xpi 584363 BLAKE2B 
016ead584cff3c8ad25e00cdfecfadbe974bf8da711e92eb886fca9363c2e8f627a874a018abad739c5666440301d60d9981df86b510322f32b7856ced6a3cd8
 SHA512 
da88cd407d8c690181058f5d7a02a7e49edfb6b24b3ab91c8605eebfad899a0603feee369543f6105ef7460de3a7a200fb982ead4c378c15867de9d500896bef
+DIST firefox-115.16.0esr-ff.xpi 471726 BLAKE2B 
5c9a8a662d64b22207a9dc7d85b02d1d0f09c9f677425b15dd652bde91cbd038d5e9c8c9ac4eff37d3e1a13e378b80eb9e8b14100345d9cd37f33a825c895423
 SHA512 
23a52121eaaf1c11e5b9a13854e170c4d2d3b141836eed0206571f70a83759890434483d6a0b92a3d0bc76d50ffa4e3ca5d6d8f23d592716ceb089b9852c5aec
+DIST firefox-115.16.0esr-fi.xpi 604626 BLAKE2B 
806d271935fb426f3638a174c28d37b1a88dd0bd49c38fee0f36a4f61408077f45b806cbec4d453d17c17c3c0f97d95206cf61022fba4bb91fc6b1de2ebc3e26
 SHA512 
18b637257860b0341677b08c5d79605bcffc4d4d5ff45ba5fbe421104b8da81e8397cd0067c3664bd8756d6076824274fae301674ba8676a1626abf4e3e1438a
+DIST firefox-115.16.0esr-fr.xpi 640838 BLAKE2B 
190341adb7d2d18db697ab605b6455677e2e17b99478c5b03400eb94ad399f135098e568df52d6dd9d3a38d3112bd3e50887199b9821516070a7e514b4128f2d
 SHA512 
9b249f372d96ab38e4ac03012f74f2cbde0fa8cef51723d5b88afe4f49f322848462b4aa7798a70b2dde166bbf9360e5a9ef89381711f0bd18c029a549fc2337
+DIST firefox-115.16.0esr-fur.xpi 634493 BLAKE2B 
6ff95def15fc612f381a6540334ebe211166e066b2d4ae3864f9e276ff7ecd2c4e125790912196d2dc732a5dd71ee9db3ef0daaa2846ab8d2cc32fd497508987
 SHA512 
529c55b8f980542eb8f198d6b41c76555c12209570ba6b0f186f1a08efaa6b03445e66cb4f4381ca94153775f033d5577abedaeaa17cc54e01f26e42dd9e7a9a
+DIST firefox-115.16.0esr-fy-NL.xpi 624078 BLAKE2B 
5fcbeb43271c1d08c1760cc8790ddea8ae7081391a39540669db0534c9f1f8a92b1448d66419c98c9e00c50785aca01ff0fbc4e82e79433267c06e2c1a6988cb
 SHA512 
b957bb70d8ff6e553e365e406509fd12bf15512351919db5b7eb390045671e4d6582a4438c61e11e5d81c5a2d1215369f8602382510195d9300cd84013d91cff
+DIST firefox-115.16.0esr-ga-IE.xpi 467639 BLAKE2B 
a60dd612ebc98680f934dca91b7d26c82ae2afc76bffa6c25615687c1da6f33e983cf22e04bea415ca8e6d54f9b3a4d81732746a523bb40ba749aa94c592789f
 SHA512 
6d08a024d267f60de39b4c3a435133c10bb972a89f38d95241a67f2766f80f4e025d726ac0b0e83f9f8c676c7d642c4559b4eee9fd0ecc73a50099c8c0827514
+DIST firefox-115.16.0esr-gd.xpi 589975 BLAKE2B 
34b0c9582c5180db1718e32c485ca66f01666f1f797569554fafecd6ae6dd973df509ac3442bdc9d9584c87bd093faa03b6bbb7d4e0431ac390c5a8b86be36cd
 SHA512 
26ebd23dd5e09c8f4b2427d547d288d73c206a2656d7dc87d8148b1159c1cb8bab79be955acedf1f172386fff5dcc6294229090be12ac9fd695a8a6a2d0b4896
+DIST firefox-115.16.0esr-gl.xpi 599983 BLAKE2B 
e4b2e71efaa579fe7703121d234e12eab7ada1114d2b93d775cc75ef6e7f2aa7b8e341826a64cf9ccbd53aaf4594d81e1cf0a2daf01c2ffb2bdc17cf37ae1a22
 SHA512 
ec56d80450f00505f537dc0213954d5bb8994cdaea625b98376693d359954ceaeb3b0b310993c00d4c198118b6e5dbbf1c88b9f6ced0bc25d9aa3a8e308adb87
+DIST firefox-115.16.0esr-gn.xpi 637898 BLAKE2B 
795e1c44547576efa2fd21e2bf8a063610e4329f455fc6e8539962b272b8daab61880502e749a7f0882b5fb7e34dfb8ba38ad7069f853bc2f138824f8b51dfbf
 SHA512 
b95f69b513e0bbb9568239219473c6969cb923db188ebf6fbb482b6af8e1e538e0b3c3f11810f0fa9c9b7ef0989866128d6fbc198d23ae67d86ced36a9c2a9a5
+DIST firefox-115.16.0esr-gu-IN.xpi 523387 BLAKE2B 
3afc05e91151029c2389f6bb1f61305453115cc7af41812ff5272f94cc77347eeb429fc307791e7ab531bb991a5b243e135541635e2bd7344ecb9ed7fa4485da
 SHA512 
f0e8b23bf58f9dcc644d9106dc83778f405b68fa3a2fa240bf69a120dc5cb48376550eb263ae80569b66c6c320444dec3afd7590441c4150810acac5ddc37cab
+DIST firefox-115.16.0esr-he.xpi 629103 BLAKE2B 
4051e378e0f7931f24d6f5a76b86a7e6b9658590d592faf3d77e2bbc441fc5d8f2e6c64e1ae4d4ccfe902564e480040187c26c2a69fc0b2b47e65c136e4d277a
 SHA512 
c2f294a62aca9e189825f9b20f95ac12428791a8aeef27b28961f103b484301f4465ebd27d98dac130f093120a1e2093b2428106fd8519c9ca7921e554105490
+DIST firefox-115.16.0esr-hi-IN.xpi 561259 BLAKE2B 
e897885157793f368cbf3512a68ded48094224d597c4915e89a48663d4d17b556ba85f65af9c3892d5f112a76afc7a31f5a92fb6731bc9234ca774cda893d2a6
 SHA512 
5578d448f4f352d64287fafad2efd455494f3fc127eb85ba7ddbb63d75f2642f1bacfedaaf4fb68d6f7363faa14059765b498855ef21e1984d2922cca8a5174c
+DIST firefox-115.16.0esr-hr.xpi 554547 BLAKE2B 
cd8f5be9cd2380b7dac7b064d6c7b9264f2df06555ff617a6b1994f21fc0563aacbb7f729ae165fb1c24456ddf4224cc695bfa3730a916cddfc660ddc60f1de3
 SHA512 
e277149940e54c926f67b131575a00b09fa021bba2147a8f32fe3ea21d00a51b91d2a42823a08397f16ce9fad4a6a6d0833df7c0dd7397c02a56cc3d7a745db2
+DIST firefox-115.16.0esr-hsb.xpi 647500 BLAKE2B 
46e8130a18772f87d539650c88155bf32f35282cec1aac584ccac5efed74cfb9e2bef71cec79cf603aa60b84967184296effb40892b2fef40cc8fd28cba9032e
 SHA512 
05a2e52a9a8c902a0dda60a2ea958cc85c114433d8044c3ccea7f628cdbc9f863cbb9614026ac5d604a3b4244bc0f1f07cac80a68066ba84820d9875a65c3225
+DIST firefox-115.16.0esr-hu.xpi 649859 BLAKE2B 
5be250e28add2b14160191fd0081be0cf7e2e3b95fba1d14ce68123d2765356a60e237ef6be95634671b08dd520f4133303c1d0f4a3af0d465c950b10f24a87f
 SHA512 
7bd31ba3f6a518462eba791050743d79bb92fb530ea00770d1bb79c9723cb50ae4ba395290073f571fe66de1cc9f66f04ba9dcfa9e61bbd1df75dc3043ad1b84
+DIST firefox-115.16.0esr-hy-AM.xpi 647646 BLAKE2B 
b77e4ae642c71e11554d459e67a1756a3a84b85f98205ade09a9f0c36caeafd4e77c5b778855d7b9481b8e6105aa16a89710596284471683397f8055c6b71a21
 SHA512 
a49ad35cad7b2c2aa0608038c9598084c5e1620c2f5f8649ef4d10bc2102a89cc3f6b5fd119475271e7172391ec684e74ddc46c357b204ce9f4d6f216886c06e
+DIST firefox-115.16.0esr-ia.xpi 610840 BLAKE2B 
cadb9622774264b3fb890c9d082e78110f1abb286003c1f99f91ac8aa572c474bd1dc967fdae33f3b4bc19ac40a54418d27817d0ad7577bd17a11e20a9bd1d1b
 SHA512 
38ee4041447374f9da3e47af3278b73e54aeada595162d221ca9e956292c2a623dd546cdbece470f3700235443198c52c0370aa08a7995c9d1b6409171887072
+DIST firefox-115.16.0esr-id.xpi 573420 BLAKE2B 
9fa806a478a08443116a6391305cf635e5260043f5654ce727d5a30ff7c3fe84a21640189bb47c2885a6c8887764f9d808cde76a02d21a655ac60045cac2cc28
 SHA512 
45bcc770e69a195b50b7b6b144ae7ee9ee1e1e97873ec3743f1d749cce3c9b0fca26ba597e5761f76ccfbd4c303dd2b68883bf42ca50e00fa550f2fe5c67c8c6
+DIST firefox-115.16.0esr-is.xpi 611651 BLAKE2B 
106d3f16d4bd610c25270ff8182d3e19abe6056c96c812359e6606f3d2bff864d2f0574aff59f5602459fcab124f08984703b83324af6811d74cc0031e13e9fc
 SHA512 
590dd304fe5f4a5f4985c7d6288cf34544b1a684475dad07443ee30e647ceeb35239e3297cb834bb37f882a96b0667aa2bd4733f0fa901d469cf253a05febd11
+DIST firefox-115.16.0esr-it.xpi 567125 BLAKE2B 
e3be50a505df11de24333ee772d95781524515f5dcb03bde692e55dd5e72b8b45c44f1e1e932b67930b42d72fbbffbf1b51d0e8b479fcd2c49551eb6cde2344e
 SHA512 
1d87fe5c7266cff6d6fd3896c36e210ceabdf6bc3c31d512bc8a6623c71c8ecbfe80641154ca78a1a185e115451ab8bcc6a1de6242d3dc01d304bd8777d37ebf
+DIST firefox-115.16.0esr-ja.xpi 676020 BLAKE2B 
344fef71f4973fb7f4778a32b9ad2fe1c9ea85b03b20ca235ca37e8f66a9d29190e8ad82607ad306cda860e4ba1a8e5d2199fcfa3063dfe624aec23301d2169d
 SHA512 
42a2a54985c724344c4ffabedda92815a1b88ff591faf88eb7d48ae8136338a2f371fe6f8e5fd52b8114b3f9d9d94924a418c2a8850d8a2184abc9d20bc5c748
+DIST firefox-115.16.0esr-ka.xpi 657982 BLAKE2B 
9460ed674a372162f954c590dd5c9b936961dea37cb9c44d73bcd2a99956ee8d0f4627a81ba575dd22ce4d8f78b9ca0e1f30cba5279cc423c22dd007eb8cf7f5
 SHA512 
05b88a6056211ef084a01c3f9ce4d9abc229916d6ee853804969f4a04e9416e41a6cb2e8ed06d9719cb4dbc7bdf696e0e9c7283cde4d8821570fb01fe16da661
+DIST firefox-115.16.0esr-kab.xpi 604028 BLAKE2B 
6058b0112f5914a55a997f34a9e529927271f15d7c7cac6eea3df2e08fdaae133332f9a32334398c273da7f7aacde94980226a77e9527569c472a647bfed6692
 SHA512 
0362d8599d2e7d398ec26d4285e2857ea731438d22a986eb213a2db0afbe2a9da1bd38a2a310bec6b64ffc336f580005a2bfad609308f691981cf1cb2d576d3e
+DIST firefox-115.16.0esr-kk.xpi 709069 BLAKE2B 
0e97c4f5dec753ea48d99333e55a881c780ac467a94724055cee35454ce7126d0ecee622451b7427d2366d0acf12b0731aff1e8fd948a6e101c98ed30d2b4e11
 SHA512 
c16793aed0434f18d0ce6b11ce0f6cdc0d2911c337d3635a280f5bf1b83fcf13d0997f57835d52f1937097c09f582a71df193d9999f80a3d4d08e40d1840d3f6
+DIST firefox-115.16.0esr-km.xpi 522327 BLAKE2B 
0ab24aaf841f930809f2589c77e84fc4bfb98078223d16f520205bf13a5ad2795721ac942bd5b3f4ae51cad69a90188d23816a9ce213b0a5fbba9492f0f26385
 SHA512 
3dbf33cd1e2f4adf5dfe6edaa732b4e41cfd6e3430254b014ba2a03c31ae6a63c41e4854583131d0066ddda2a1726db66fa35908f5dec4476816e2eb29851ffc
+DIST firefox-115.16.0esr-kn.xpi 488200 BLAKE2B 
1e36d1e90d20b127de591e66692024cc39eff1185ec2956f68947d8a0f3174c77f9986c48336b9b2eea52700a47d500e10dae270ba1ad0a803d748296215e49a
 SHA512 
dd2ed7016e5135f74d60ef40e6642e013979c218d4f002598ab590ac80d8a647380d888c715a0f059702e3b0ef6bdad6948f263cb48417d98d59d80393aa779c
+DIST firefox-115.16.0esr-ko.xpi 662485 BLAKE2B 
6f22d72504fd9c5e4f70d05f9f85b939f5ad4b80e459d706be8539b0082a9f2d7ff757c0af18e5a733c623fafb3e6afc931d3fa14371076d2db35ee83f01da54
 SHA512 
0a5dfad2dfae1608b82995d6462103317e0d34ddef0c86b55852a251e2252b6a59e3746285a5fcd1cd60ff47fe1dfe976ff0a7f558e322384805c39e6604617b
+DIST firefox-115.16.0esr-lij.xpi 479116 BLAKE2B 
6027f75e7a352cede3addcd184277d69a510f1f882371fbfeea53bf1d40fcfecfa9c56fd5524ed538a4963a333248b1134a7f67d77897b6548c0684667f26237
 SHA512 
fa369bd94fe785e04df5e92914be52e0af57de6d76343ab4cc85c608c9edfc64c577aa89c0f93b0fe65b35c615661cf30c2e2925a108f5c6b928fc1ad322440e
+DIST firefox-115.16.0esr-lt.xpi 566215 BLAKE2B 
97b63a4857ed756cd416e52386a8fef791df711cac3b799dd4ede6538f7d6483db463fa0a9f02227f3ec472e790191bb405a4229eb2ee66abdd1828d548592d5
 SHA512 
a526cddd9ff530449b75f85f251a74e54bd3d3037cefd3388213f562be4906514a93c4fd9cb2a3249f77c28444a2c2803844dcb0cc4200b75982af6780c5053d
+DIST firefox-115.16.0esr-lv.xpi 568816 BLAKE2B 
31c5a79e585f71608da5ab93415d54bcd59255031a55a4cf802d39ad256c39ed5d3022364406866a998f3ab18adb34ef0e595435469a788b6278653348d028c6
 SHA512 
aad666d44ce892b02df937e8c0f9f186c525fd37f4d13f628548ba6c6811f73b55081ec6369469fccd8f83e3bbd29a18c5bc3b2a0a17824d7da0f164c4ed0b52
+DIST firefox-115.16.0esr-mk.xpi 490535 BLAKE2B 
7afbb5ca285c3f4d048a8169949db771d814638b7ac00f8a5fabb8851e8298ac73e4e14d7733731ceecc74a1e6b3206d5892bbadff9c6aa0f75a12885ed69bf2
 SHA512 
fbe5746f3dfc8fd916d60810103f8c1c17488add34587df0f9883ce12b7b2efc12535925225a89311e0726743fe8bf1d5c2faf879b23a95352112a6ea72a43be
+DIST firefox-115.16.0esr-mr.xpi 526889 BLAKE2B 
d0d71942413334a173a2a192aa0e0082139e2908a9f1070fdfefea6d85f3bc31246b531e2f448d1c71931152403d9cabe77e4587b5366c705554923e56e12705
 SHA512 
681f1294d5dd988e51a4799a554fb8ef5403e92fa5726848bcbe858dc43b70acec6a803242abca4d3c2ee8bb9e21c05a80948eac59ed3f5dd9a5e969be322a4c
+DIST firefox-115.16.0esr-ms.xpi 445505 BLAKE2B 
6849faccc435364973fa705a26216128b3abc3af01fe60f987311d96d1cffa36707500ba09bb872ff7b558995fb7328f81a2c1b7578a1061685132608401e2d3
 SHA512 
d1954e2b8d218ded5e362bae3111095ad06392c6a430e7a15b6de9fcf841883bcc2c4103955acc3f20f2b1718d5cc478454cf0076ddcee44a3b20bdb78e28383
+DIST firefox-115.16.0esr-my.xpi 514927 BLAKE2B 
b985c4915f0197963a75746039f2c623c8280474be502a389afb1e09bbc1063e6fa15763dd04b93f9a1e23f8b29a73dbf5e63fa6bc72042250084da80345d06e
 SHA512 
b9813b9df3724b57c167fb377cc3fd748c390e72a9d84c59f3408d55b437b0db93bcd04d026b084cca3253c757b5d70b983004c3e3c711e47963def50f8b00bc
+DIST firefox-115.16.0esr-nb-NO.xpi 607318 BLAKE2B 
c37ab6c83553d4186e38238e7f663fcd591a4106ae1ec3bcdd87d24b5136a41951bf0f86a2a1be8a79d071a6ac528a62b6bcc5234ad9fcfb122c5b5a7cc13043
 SHA512 
b03624b99b56b0b998c14765c417ae89f48c460c74320c562a9e00f608a5cb617664a86e5385c4170feadd31653add351ca9caa4f540aa8575aaf941e34b9d13
+DIST firefox-115.16.0esr-ne-NP.xpi 506997 BLAKE2B 
acafc388605edd9f550bdf094e5accfa74713d09ce728f34dc5870ccd9af385c47386887b1e0ae80bb6eb8eeeae84a6407f78e0af8430abe481a63295f0777a8
 SHA512 
721fde27a0baffc5b8af5cd756f3df7417be418b9fc032e8730ff35ccd17ab2fdf40772830af67e856d41f2ba4a6d5784306004d4cc7a3d06a45dc22cc983fca
+DIST firefox-115.16.0esr-nl.xpi 617756 BLAKE2B 
d16370f47ee9c528d6b8ec0eacd74337c03993d31bbe30c1efeac7a6f278878f6c296cbe2fd658368f2e175a9dcaeda972fddab278481e76ba9ed81c97847eed
 SHA512 
28f2c7d0183520f618ec39278ecca7165182b08835730f9a583ac2b4cc6b728cffec2b79840221efe07495e04633fda637f9978718f83c7660ba91eef36d8cd9
+DIST firefox-115.16.0esr-nn-NO.xpi 609734 BLAKE2B 
d062212c635ab1a7078511fae31049ea7ab666e9eb4909e123b9c7e83b148a1df07ba714835246567a5fcd14ea8acc73dd19e425a434c6b85d705f7b188a17e6
 SHA512 
539b99de97c549580e79e638c5d287794e66a2b250d3ed2e9545483186ce8adcd978308e510df0b99dbe49c0c8c703084721d49abea37e82c9b9d9a7e851f419
+DIST firefox-115.16.0esr-oc.xpi 607913 BLAKE2B 
73758255a4de2f8b1479b2fa7b15f11c4122c390546c37881696bfec4533058e15ac8004cbc0c6e8f94e47bf6cb8cccc1e3fe67fa61b2ea7bd2cfccd13dbc35c
 SHA512 
32b7f0ca0075522c2be574db0474f813b82e84ecc4059aafe4c5b1159801eb3cf3ee8fca2b44508935a6d8fca3551c6be06d0d8f8b370e6346dbb58a9ce22051
+DIST firefox-115.16.0esr-pa-IN.xpi 687700 BLAKE2B 
ce14060ac69b3ecb1b6ddde49ca7e0d9112ba99fb2e5e27f63c9fb1cb217a4f9eafa1335fcbed3f5fe986119db0488d064b155f59570f95d4c5154661a3f80a2
 SHA512 
1ce517994163c2b94629e854c748dd46a9c7e8023334edd6d85230443a500ecdf6ed241ae03b3b3d35e0b8b9b6a9357d0c3d52a33290a4a186911c7430442a5b
+DIST firefox-115.16.0esr-pl.xpi 636468 BLAKE2B 
6d57b7dfb7475ff3afe2e46791c2f23f1f8ddc3f6a5253dfa8e627fd41ae161392098cfc633e292de858d1d707a04079f9e3fc7dcaf058bc204209f6ab707064
 SHA512 
6afa67de2764554c882c9dbbf9409fe4e6977fe068a40d5f93d4363e09c9d42bb117cdc0231e6bf64b453d06ff8d14cf08f24851d35e5e54f61c5e272729024c
+DIST firefox-115.16.0esr-pt-BR.xpi 622534 BLAKE2B 
c0910cf65dd7825216ded706eeb9fd49a582fc8a2d4770885d9a0bb51c9f99d93bca60b94242507ee552516bc226bae1b621143bb2c47a311acf89771f83bfe8
 SHA512 
d7cc39b37cb5844fa633444be600ab765280b7b6dff4d946aa972bea4fa129776a38c8037b030a70c7b1aca34e211c47cdbb27f380efd5b296a47a1032972adc
+DIST firefox-115.16.0esr-pt-PT.xpi 626580 BLAKE2B 
3ea957746013bef5d92598a5853441b86560b2e02228cbf4704db55138dbbf0696fd2270057277a3ee0660866e16f0dd62afa511e9b85ce8f3ad7a4dc4618b41
 SHA512 
f3b9b86117e2bc972340f2fa1795b608d1a80bd018290ff140bb53779f7eab36dc32df3a0e6dd31e752afc033a8b554f771bc441efbf14a2c33f34aa40a88c91
+DIST firefox-115.16.0esr-rm.xpi 617337 BLAKE2B 
1de9b0c86820e5fdcbf76fccd149373d50e949e30f912c7a43a453dcb5ac740f73350a20fa4845372ab0a86e7f2b3224b499da06785ddedb3323459743d8c143
 SHA512 
99ee6f5fae451df2a7ec13ad27ffc1a07b242f6b45bdb0b685b13f62e4f954ba2c049f392d398c852b6c6f3369562b3213c07bd560475b8bdc44521609a6b709
+DIST firefox-115.16.0esr-ro.xpi 543551 BLAKE2B 
03d35b6e563783a2dd102c0be8f1f45596b2cfcd16272cdab03c9f5a416118bec3049a77672a2cd329841843de7ac1830c51549b277d502dc31a4c12b0111898
 SHA512 
4baec787bc842e5df7c667d96072a8a761854bb22db9a0679b0d4284dd35187de8b51e0a28edfb9e3c572223bb2be76dbe596359cd4931c5150bf0dac356d3a5
+DIST firefox-115.16.0esr-ru.xpi 721764 BLAKE2B 
1aacaa675240a4fbaef8423960b1afcbff460586be2b4b1c9eccc11bf955e17a39d04d0a0b0a4b320c90b121ad150a0f0e78104fdf5dd33f6dff2ae0f9c974c6
 SHA512 
f24928f2c9e28c9085242bbfe5a2d3239c265ab560e8ebe3991cefc185cdc9e144cae4b59664a12bf67adc851d177f2720ba4884507ce09bcbe3bb20940a27d7
+DIST firefox-115.16.0esr-sc.xpi 582737 BLAKE2B 
d21a131b28cc6c20ee094ea7f80760ab9ddcc90735c465a8e09fbf47d5b5b84437cef22ba9a07954fc11669f66983ad42dc35565350a1d0146b0d577872a5ee9
 SHA512 
1d70624b43de1090ced64ae4f3b2062dbb8629f45b94903658c7402ae468ee4c5f99b425f61baaf3e87fe2cabac168c1c9bddcca96567aca4d42d68e77f21b22
+DIST firefox-115.16.0esr-sco.xpi 505666 BLAKE2B 
cee7f7a836d4ac83c38bc07dbd7646e438b8a904ff48a8d47984e653ec57d6b206c31ac799d32712be158d9fd6790cd305fa8a15d93a7a03c4c091fab2d4eb33
 SHA512 
c943be11da35b35f01ad0c47b3cf170c1c4154ffa58069cdef59e9dada39651cf2f89b8edca4d62d8bf7317c45f76eaa6c5185f4e26617003105d603fe0fabf2
+DIST firefox-115.16.0esr-si.xpi 606455 BLAKE2B 
644ba7b68ddbaff05894221912cb5a40c1f24ea2affb20d55b9ccfba0744ba9caa1a6be1d595b6f6d3dad1b604da817c04227594a967cc886f83f3bacc309464
 SHA512 
57209350ea656798137b699279620e8da48fd51eca5892b4a66eb35f4a26afc2f43275d320df2954f10fbfcb3de9d0bb5fbd83121772ecf67f3d02dfd0f66d06
+DIST firefox-115.16.0esr-sk.xpi 652369 BLAKE2B 
cc05bf6a040f0af397c132b0d2da9a416147b66e2252fbe37585994bf5e4da78793a8dfae6e393dc25163c5b5eee3536fb2060546832cf0d85d2b9a29c33fc3f
 SHA512 
e0df20ad2214ac38a603a1088bb56c79c4d7b628f31bbf257fc1f55c0b36b016f148c57ce49e5bd5d4348ef97d4e65d527bd8246fd044db63ee2777f6ecf620b
+DIST firefox-115.16.0esr-sl.xpi 615214 BLAKE2B 
add85188762ccb9cf439180a2b3fde00ad962809b7127b7e45daa2840d62df47b9c6c97f48ec45ecad8b25488aa609da689395d1d7d09c15e352748983df17fe
 SHA512 
0ed9839422d3851312bf76639a0f59a99937ba26e6772654cc5039d98827a4e1db2bbb6ab34d97dd6d6aa6009003c8a6d02dfb9a2b6cc24eb0bf309273e35f58
+DIST firefox-115.16.0esr-son.xpi 413687 BLAKE2B 
73465e1b37f27aa69e27c476f98481929f42fb33669862382ba1b32f63c0358e71cbb12e89e72df164e1b26adb045f0e02a8cd31d8bd6bf5dc65a4af02423962
 SHA512 
674dfdabd8fb72785970d64e54d9eae9472495e15897a8336617eaf6138870bddf59188c331a87275925328d00ea6389966cad83d4a571ebb95f05589329145e
+DIST firefox-115.16.0esr-sq.xpi 636144 BLAKE2B 
902af855b0a5cb25f2e2fc5296dfcdada67e3e9c882ef25554774f12433d6e03acad2d22f04625d125e6728bb2903bd9e568ba3de81e010d70b4f4ebb6dfcf21
 SHA512 
3746566693671c113616ce0f46ac11d27611abab5e9e8a0f516b83e4205bee8234bc527c47d13f9307834236296a6e6c6ae98f985e0fc7869735aea5caeba3c3
+DIST firefox-115.16.0esr-sr.xpi 633255 BLAKE2B 
3c5066c13efc9ca5b1a8ffb4c89acb82bae3bbbf35799923a1717e0e9c8b569b7e5a4fc52cefee0aeeec72021ec4ced9f64da709b7621001918b944d08779835
 SHA512 
66a723d499b45a1ba801c43d43bbfcfdbe41197d7ac33f5d4f40dc382478e124cde446ceed5ef271f3aace9fe3d165167d775131c536c3d46c21580829414d31
+DIST firefox-115.16.0esr-sv-SE.xpi 619433 BLAKE2B 
f259f7455fff9a5d13673aa512420d22238cc531107b8f743ae86152ffbbc62fe7bdbbe8ea8004af1bd0973f706fe65f0de4dca8af4f7456a85bb2e2fccecf9c
 SHA512 
28efd04e377f6a843a6003bc4bb68c50f501f398e08d0ed7c357ae7bbe0bef759403dadbebeeb13547994e3c314551504bfab3a2657341b7f2510add7e86bd8e
+DIST firefox-115.16.0esr-szl.xpi 521044 BLAKE2B 
44d9f39287885dbf809a969de9ecde41ac3322bfffb37bec729ca9282ba42ac9ca51b4f359f0875c89ac73b733d9cd0c171c03b7585a3e241711d3ebfae7da08
 SHA512 
9d026d2da85460f7ca7367db34e7304da0d88cfc4d9cb546ad8ad0a097f0c7b3a35f067da4d7bd8a1058a4d73465bf721bfcaf3cc209340af7063b8e39aafd2f
+DIST firefox-115.16.0esr-ta.xpi 503645 BLAKE2B 
ab980e91ca127aeb88e214831ef84234f793e225848b0a594c2c907523218a3cc10f793d548c016c59151ba6b95143168c105bb7f4ce224f326c30afe31c93f2
 SHA512 
1988d0642d364669a5beb0ecdf95dc1bf222279e9560a9138569ee58f8e5ff264ee396dc38bde90c5b0f741e105467236c49c59aea7fd2342870e73d2db66dfa
+DIST firefox-115.16.0esr-te.xpi 556760 BLAKE2B 
80838fcc8dda0b983072057618c1c8e6e72d4fb09574dc3e8db915636ff2730d7c435ed84aba69579c611c5f9b74bca8286eed9e201d14fbf8686031dcc582e1
 SHA512 
0f8b86e931a7bc418fce3895d3b2f4ea173225ce51e55acb2bb4aca01ed9980545f35c8b49c051183aba06f5e85601286053490610d99967fc0fca4c8df7d6c0
+DIST firefox-115.16.0esr-th.xpi 693431 BLAKE2B 
1c833d90a1b84ccd9c12177d6d6e370dd6f5d3269152bd38ca7d6ff9ab8a9ea959468716f15e3e757434b005c291293dbd548d56f37fa3b2902424be8d4eb494
 SHA512 
02633ce4f89a286da5e08734d6cc4aef8baf68d42c9b597971974391d506139c8b5b2e30e0056c15c3c48c6f13faddbd331d0018ebab3b441e58ce93f19f8f4d
+DIST firefox-115.16.0esr-tl.xpi 527809 BLAKE2B 
263aa6f54fb1e8ce4dc35a9b8d2ec5605b30363f6f3acec58a83f4df24a1ea56d336c365b5748a17f074c2aa8ff13b611974cf986e01245881b49ed07d47b6c3
 SHA512 
cae485160e3b7b145e2422b133839e2a643118ad75795830715ee56349111f4b15daf708fecfc529362f9f34da2f6d6942be77d6b307755dd0fa92c008004da7
+DIST firefox-115.16.0esr-tr.xpi 631873 BLAKE2B 
a498e23af990a49b75944ea18cd6b013c4423ac2791295f3766dfef5974ae49c3e80f2362ea8cda3282d26fbeee6cda34d02a1d42040425501145804ba8fc66f
 SHA512 
67f3b2103d27b3e5cd4276b147c7e025a1f26e21a087c6582de25fad820008be20dd8c73f761e6637092f08112c3f2f48256667bfd7d98e4261347a125614a91
+DIST firefox-115.16.0esr-trs.xpi 498678 BLAKE2B 
ac667dac80c2f45d30d3ea2f89a6f194bb1158d26678e919cb7bf780d7fb53d5d61f21302d2dd74fdb52032b0c671196738c9444924dd390d8f2973972625b7f
 SHA512 
8e4ef36b39f48d8264eaa590f4cf5e036e07ffeadd3486750dd0264895ff4abf3acc5710478e7a5b7969619fc08db00189c9278debcff923da8b9b0562dab6e3
+DIST firefox-115.16.0esr-uk.xpi 707293 BLAKE2B 
b5be6d13597e5797152099b1021c7ff4aa2150e7bc8ac468d56c7d9cf85487c9b3b1494af4a79c6cb8b883145c99f89c96f7f57a6660ae653c90ce9199b1ddf4
 SHA512 
655e82ae2cc16471d3aa23258a1b16f74c0782ddc54e115d8ce228d8edd84132e72a96ee24cf59ff4bcc5c9d8aadbc7d9a19704962b105d11f569e8a5fada032
+DIST firefox-115.16.0esr-ur.xpi 554813 BLAKE2B 
814a25bb08cafcd68ec48159ed36af438382408f1f6022649125e0a1130c3513127cad0bc781fa157e953085d009e7f256ce166480c6f421a1ca3a373948e9d4
 SHA512 
7f9ff915c0db049d607247ed41bdb460a25a51a31e53590bfe0790043d8742c2a97c09283136349e9514e53f66d2d3c7ccacf2de0cd9be31c0adcc283a02eb98
+DIST firefox-115.16.0esr-uz.xpi 474686 BLAKE2B 
cffa1fbd1b8b1dc67e7d215fe4f70682718e8385a39c10e21806d026cfae01666e6be07d533b9bb216a3f0193e284951019542e183c5e227d692b941a293e750
 SHA512 
3372a421bd478c4e5133a00b72f267d6ccdd22db5d3543809425110bbdce8c03cedddbc4e5699fc089a194709753a8d148c794532d41578ce3b4b661735df654
+DIST firefox-115.16.0esr-vi.xpi 654026 BLAKE2B 
2346fa9e2299bf406ca7325b52efb6eb9f950eda10b9a0a1827f8f460bbe36c48db09c542581e6dc294ccc9b2d614060ab84af4fd2f48310855c8bde237dff5c
 SHA512 
eadba43c5f8c400d5e698a2528f47951127bff770b8dfae6773a69fad9b2a0c088d3555cf51e2057dffef7b415b7b37a2e552b9b561f2c0e93e99571a254d965
+DIST firefox-115.16.0esr-xh.xpi 414950 BLAKE2B 
152db7e63f9b4882ced06824dd97752e2467422353968c90cc71809e29bb8581c4f6fce97031bcc13aed1f6059984170a3cbdf85a77f13b76ab9af7c815b5d45
 SHA512 
af7b9a6da6ecaa7d168801ce966ccdc208238b8ad8df053b1230ce50be7a6d86e6e7be6ed30f933a51c9c9d2b591dd7939c5b3d37b3008230dfc6bdbb949fa91
+DIST firefox-115.16.0esr-zh-CN.xpi 657110 BLAKE2B 
25bf61a14ed6c9722d1258e7ec00a6923a5f1c3968769440e1ebd6a7784576495da5ba5bd0012026281d51c561ddd9d199ef9b4864be72c2ebba90b3aa546154
 SHA512 
1a39f0b4ff5f7795b277ea3b1691162db9bcd26dd8d3da260a50349687245ecb1e5486afb17ce7508e66dfb5b5dd67a50b56f97b4196911f42b8549aad86ed91
+DIST firefox-115.16.0esr-zh-TW.xpi 659312 BLAKE2B 
7f1c0266bced59f5252e6b3d6c56e4d0554065c9729073db87c9a6fdfd4d14c80e9945b2d760b6c64329e92f0aeeff20fa9b0e4c9e0ccae96b8308c0d07567b2
 SHA512 
c5d165b36c86d3f0334c461c7af9a53eea8394890a6ec067bf03b4708d04d5360a6e69d5542bd51a3678a1c44bef12a927d4f0abce22fa6736396d6624c2de63
+DIST firefox-115.16.0esr.source.tar.xz 515133700 BLAKE2B 
9501b617b346d56f6de975f88974be6fdc3d4a901b2a1b952b6bbf6cc46384084260078d23c52bedff83a65bec4ea5ec78c3bcaac86c78d0b44e796317534840
 SHA512 
b6f93ec3d6acac5df177253c65b833c017e65ed6e78e96ff029098443928d291f6f67164aedb83d80aa28ee9dee305086597798238d3330e35183030e53e3550
 DIST firefox-115esr-patches-13.tar.xz 51360 BLAKE2B 
a048bfadba989ebbd4c6e3df97d303d6853844e66ed92f5f5f322acf18866218b91d52dbbece63827de283eef855c932d67e329c8d93200aa83f11268a5d1b2f
 SHA512 
186ec72323e621362dcef1bc67c476716aff97dfad701faa9220a7302e798d3cb4ed90d5ea59e3e92f016be29875bb5219787635db99a8848b7c76e4e2e09e90
 DIST firefox-128.2.0esr-ach.xpi 465016 BLAKE2B 
70b8839a5028d7b87218116dd44fa724fdc1aee91c371bd5e84112a9153568d7186ef4237f707e08b9e22f0208affd03141b49fa4b842cc82faa5ebe7f19004f
 SHA512 
688b8fdb84a6bf069650a65218615d605cd9cbd52435261f3f4fcae749cd67373fb1ce34c24bd3d0712c5e9416a2c111e2bd245050130423c944b64ca9092c1b
 DIST firefox-128.2.0esr-af.xpi 418343 BLAKE2B 
6b52d8b28d7e1095257927e2e894276cacf131fbd8827bb321729787d4f2b9d35418c5b834a87c30fe035f31f03c003d3691d2350ffa6972d1ef8de15952fe6a
 SHA512 
70bfdc67a3f2ad213de61387f611bd9f6231eabc7012f190b84020ee3c75d70579d88db5cc1995f86fe1eeae72c31438f64019824c4ea28ed589b39cc12b9dd9

diff --git a/www-client/firefox/firefox-115.16.0.ebuild 
b/www-client/firefox/firefox-115.16.0.ebuild
new file mode 100644
index 000000000000..31b6c0937aff
--- /dev/null
+++ b/www-client/firefox/firefox-115.16.0.ebuild
@@ -0,0 +1,1393 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-115esr-patches-13.tar.xz"
+
+LLVM_MAX_SLOT=18
+
+PYTHON_COMPAT=( python3_{10..11} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+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"
+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 autotools check-reqs desktop flag-o-matic gnome2-utils linux-info llvm 
multiprocessing \
+       optfeature pax-utils python-any-r1 readme.gentoo-r1 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"
+HOMEPAGE="https://www.mozilla.com/firefox";
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}"
+S="${WORKDIR}/${PN}-${PV%_*}"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+SLOT="esr"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+
+IUSE="+clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel"
+IUSE+=" jack libproxy lto openh264 pgo pulseaudio sndio selinux"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent 
+system-libvpx system-png system-python-libs +system-webp"
+IUSE+=" wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" geckodriver +gmp-autoupdate screencast"
+
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( lto )
+       wifi? ( dbus )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+       !www-client/firefox:rapid
+       screencast? ( media-video/pipewire:= )
+       selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+       || (
+               (
+                       sys-devel/clang:18
+                       sys-devel/llvm:18
+                       clang? (
+                               sys-devel/lld:18
+                               virtual/rust:0/llvm-18
+                               pgo? ( 
=sys-libs/compiler-rt-sanitizers-18*[profile] )
+                       )
+               )
+               (
+                       sys-devel/clang:17
+                       sys-devel/llvm:17
+                       clang? (
+                               sys-devel/lld:17
+                               virtual/rust:0/llvm-17
+                               pgo? ( 
=sys-libs/compiler-rt-sanitizers-17*[profile] )
+                       )
+               )
+               (
+                       sys-devel/clang:16
+                       sys-devel/llvm:16
+                       clang? (
+                               sys-devel/lld:16
+                               virtual/rust:0/llvm-16
+                               pgo? ( 
=sys-libs/compiler-rt-sanitizers-16*[profile] )
+                       )
+               )
+               (
+                       sys-devel/clang:15
+                       sys-devel/llvm:15
+                       clang? (
+                               sys-devel/lld:15
+                               virtual/rust:0/llvm-15
+                               pgo? ( 
=sys-libs/compiler-rt-sanitizers-15*[profile] )
+                       )
+               )
+       )
+       app-alternatives/awk
+       app-arch/unzip
+       app-arch/zip
+       >=dev-util/cbindgen-0.24.3
+       net-libs/nodejs
+       virtual/pkgconfig
+       !clang? ( virtual/rust )
+       !elibc_glibc? (
+               || (
+                       dev-lang/rust
+                       <dev-lang/rust-bin-1.73
+               )
+       )
+       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
+                               <gui-libs/wlroots-0.17.3[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.90
+       >=dev-libs/nspr-4.35
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       media-video/ffmpeg
+       sys-libs/zlib
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               dev-libs/dbus-glib
+               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 )
+       screencast? ( media-video/pipewire:= )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-1.0.0:=
+       )
+       system-harfbuzz? (
+               >=media-gfx/graphite2-1.3.13
+               >=media-libs/harfbuzz-2.8.1:0=
+       )
+       system-icu? ( >=dev-libs/icu-73.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-png? ( >=media-libs/libpng-1.6.35:0=[apng] )
+       system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+       wayland? (
+               >=media-libs/libepoxy-1.5.10-r1
+               x11-libs/gtk+:3[wayland]
+               x11-libs/libxkbcommon[wayland]
+       )
+       wifi? (
+               kernel_linux? (
+                       dev-libs/dbus-glib
+                       net-misc/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/libxkbcommon[X]
+               x11-libs/libXrandr
+               x11-libs/libXtst
+               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
+       )"
+
+# 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 "sys-devel/clang:${LLVM_SLOT}" ; then
+               einfo "sys-devel/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 "sys-devel/lld:${LLVM_SLOT}" ; then
+                       einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot 
use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+
+               if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then
+                       einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! 
Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+
+               if use pgo ; then
+                       if ! has_version -b 
"=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then
+                               einfo 
"=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!"
+                               einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." 
>&2
+                               return 1
+                       fi
+               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+=( 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}"
+}
+
+# This is a straight copypaste from toolchain-funcs.eclass's 'tc-ld-is-lld', 
and is temporarily
+# placed here until toolchain-funcs.eclass gets an official support for mold 
linker.
+# Please see:
+# https://github.com/gentoo/gentoo/pull/28366 ||
+# https://github.com/gentoo/gentoo/pull/28355
+tc-ld-is-mold() {
+       local out
+
+       # Ensure ld output is in English.
+       local -x LC_ALL=C
+
+       # First check the linker directly.
+       out=$($(tc-getLD "$@") --version 2>&1)
+       if [[ ${out} == *"mold"* ]] ; then
+               return 0
+       fi
+
+       # Then see if they're selecting mold via compiler flags.
+       # Note: We're assuming they're using LDFLAGS to hold the
+       # options and not CFLAGS/CXXFLAGS.
+       local base="${T}/test-tc-linker"
+       cat <<-EOF > "${base}.c"
+       int main() { return 0; }
+       EOF
+       out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version 
"${base}.c" -o "${base}" 2>&1)
+       rm -f "${base}"*
+       if [[ ${out} == *"mold"* ]] ; then
+               return 0
+       fi
+
+       # No mold here!
+       return 1
+}
+
+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
+               if use pgo ; then
+                       if ! has usersandbox $FEATURES ; then
+                               die "You must enable usersandbox as X server 
can not run as root!"
+                       fi
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || use lto || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6600M"
+               fi
+
+               check-reqs_pkg_pretend
+       fi
+}
+
+pkg_setup() {
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+               if use pgo ; then
+                       if ! has userpriv ${FEATURES} ; then
+                               eerror "Building ${PN} with USE=pgo and 
FEATURES=-userpriv is not supported!"
+                       fi
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || use lto || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6400M"
+               fi
+
+               check-reqs_pkg_setup
+
+               llvm_pkg_setup
+
+               if use clang && use lto && tc-ld-is-lld ; then
+                       local version_lld=$(ld.lld --version 2>/dev/null | awk 
'{ print $2 }')
+                       [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 
"${version_lld}")
+                       [[ -z ${version_lld} ]] && die "Failed to read ld.lld 
version!"
+
+                       local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep 
-F -- 'LLVM version:' | awk '{ print $3 }')
+                       [[ -n ${version_llvm_rust} ]] && 
version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}")
+                       [[ -z ${version_llvm_rust} ]] && die "Failed to read 
used LLVM version from rustc!"
+
+                       if ver_test "${version_lld}" -ne "${version_llvm_rust}" 
; then
+                               eerror "Rust is using LLVM version 
${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}."
+                               eerror "You will be unable to link 
${CATEGORY}/${PN}. To proceed you have the following options:"
+                               eerror "  - Manually switch rust version using 
'eselect rust' to match used LLVM version"
+                               eerror "  - Switch to 
dev-lang/rust[system-llvm] which will guarantee matching version"
+                               eerror "  - Build ${CATEGORY}/${PN} without 
USE=lto"
+                               eerror "  - Rebuild lld with llvm that was used 
to build rust (may need to rebuild the whole "
+                               eerror "    llvm/clang/lld/rust chain depending 
on your @world updates)"
+                               die "LLVM version used by Rust 
(${version_llvm_rust}) does not match with ld.lld version (${version_lld})!"
+                       fi
+               fi
+
+               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
+
+       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; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
+       fi
+
+       if ! use ppc64; then
+               rm -v "${WORKDIR}"/firefox-patches/*ppc64*.patch || die
+       fi
+
+       if use x86 && use elibc_glibc ; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-musl-non-lfs64-api-on-audio_thread_priority-crate.patch
 || die
+       fi
+
+       # Workaround for bgo#917599
+       if has_version ">=dev-libs/icu-74.1" && use system-icu ; then
+               eapply 
"${WORKDIR}"/firefox-patches/0029-bmo-1862601-system-icu-74.patch
+       fi
+       rm -v "${WORKDIR}"/firefox-patches/0029-bmo-1862601-system-icu-74.patch 
|| die
+
+       # 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"
+
+       # 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"
+               else
+                       die "Unknown musl chost, please post your rustc -vV 
along with emerge --info on Gentoo's bug #915651"
+               fi
+       fi
+
+       # Make LTO respect MAKEOPTS
+       sed -i \
+               -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/build/moz.configure/lto-pgo.configure \
+               || die "sed failed to set num_cores"
+
+       # Make ICU respect MAKEOPTS
+       sed -i \
+               -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/intl/icu_sources_data.py \
+               || die "sed failed to set num_cores"
+
+       # 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 cargo checksums from crates we have patched
+       # moz_clear_vendor_checksums crate
+       moz_clear_vendor_checksums audio_thread_priority
+       moz_clear_vendor_checksums bindgen
+       moz_clear_vendor_checksums encoding_rs
+       moz_clear_vendor_checksums any_all_workaround
+       moz_clear_vendor_checksums packed_simd
+
+       # 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"
+       tc-export CC CXX LD AR AS NM OBJDUMP RANLIB 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
+       mozconfig_add_options_ac 'Gentoo default' \
+               --allow-addon-sideload \
+               --disable-cargo-incremental \
+               --disable-crashreporter \
+               --disable-gpsd \
+               --disable-install-strip \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-tests \
+               --disable-updater \
+               --disable-wmf \
+               --enable-legacy-profile-creation \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-release \
+               --enable-system-ffi \
+               --enable-system-pixman \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --without-wasm-sandboxed-libraries \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-nspr \
+               --with-system-nss \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system \
+               --x-includes="${ESYSROOT}/usr/include" \
+               --x-libraries="${ESYSROOT}/usr/$(get_libdir)"
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --update-channel=${update_channel}
+
+       if ! use x86 && [[ ${CHOST} != armv*h* ]] ; 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 ppc64 || use riscv; then
+               mozconfig_add_options_ac '' --disable-sandbox
+       else
+               mozconfig_add_options_ac '' --enable-sandbox
+       fi
+
+       # Enable JIT on riscv64 explicitly
+       # Can be removed once upstream enable it by default in the future.
+       use riscv && mozconfig_add_options_ac 'Enable JIT for RISC-V 64' 
--enable-jit
+
+       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-harfbuzz system-graphite2
+       mozconfig_use_with system-icu
+       mozconfig_use_with system-jpeg
+       mozconfig_use_with system-libevent
+       mozconfig_use_with system-libvpx
+       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
+
+       mozconfig_use_enable geckodriver
+
+       if use hardened ; then
+               mozconfig_add_options_ac "+hardened" --enable-hardening
+               append-ldflags "-Wl,-z,relro -Wl,-z,now"
+       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
+
+       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
+       fi
+
+       if use lto ; then
+               if use clang ; then
+                       # Upstream only supports lld or mold when using clang.
+                       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 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
+
+               if use pgo ; then
+                       mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+                       if use clang ; then
+                               # Used in build/pgo/profileserver.py
+                               export LLVM_PROFDATA="llvm-profdata"
+                       fi
+               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
+
+       # LTO flag was handled via configure
+       filter-lto
+
+       mozconfig_use_enable debug
+       if use debug ; then
+               mozconfig_add_options_ac '+debug' --disable-optimize
+               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*'
+
+       # Modifications to better support ARM, bug #553364
+       if use cpu_flags_arm_neon ; then
+               mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon
+
+               if ! tc-is-clang ; then
+                       # thumb options aren't supported when using clang, bug 
666966
+                       mozconfig_add_options_ac '+cpu_flags_arm_neon' \
+                               --with-thumb=yes \
+                               --with-thumb-interwork=no
+               fi
+       fi
+
+       if [[ ${CHOST} == armv*h* ]] ; then
+               mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard
+
+               if ! use system-libvpx ; then
+                       sed -i \
+                               -e "s|softfp|hard|" \
+                               "${S}"/media/libvpx/moz.build \
+                               || die
+               fi
+       fi
+
+       # With profile 23.0 elf-hack=legacy is broken with gcc.
+       # With Firefox-115esr elf-hack=relr isn't available (only in rapid).
+       # Solution: Disable build system's elf-hack completely, and add 
"-z,pack-relative-relocs"
+       #  manually with gcc.
+       #
+       # elf-hack configure option isn't available on ppc64/riscv, #916259, 
#929244, #930046.
+       if use ppc64 || use riscv ; then
+               :;
+       else
+               mozconfig_add_options_ac 'elf-hack disabled' --disable-elf-hack
+       fi
+
+       if use amd64 || use x86 ; then
+               ! use clang && append-ldflags "-z,pack-relative-relocs"
+       fi
+
+       # Additional ARCH support
+       case "${ARCH}" in
+               arm)
+                       # Reduce the memory requirements for linking
+                       if use clang ; then
+                               # Nothing to do
+                               :;
+                       elif use lto ; then
+                               append-ldflags -Wl,--no-keep-memory
+                       else
+                               append-ldflags -Wl,--no-keep-memory 
-Wl,--reduce-memory-overheads
+                       fi
+                       ;;
+       esac
+
+       if ! use elibc_glibc; then
+               mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+       fi
+
+       # Allow elfhack to work in combination with unstripped binaries
+       # when they would normally be larger than 2GiB.
+       append-ldflags "-Wl,--compress-debug-sections=zlib"
+
+       # 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
+
+       if use system-python-libs; then
+               export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="system"
+       else
+               export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
+       fi
+
+       # 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 tc-ld-is-mold && use lto; 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_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 sys-devel/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
+       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
+
+       # 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 geckodriver
+       if use geckodriver ; then
+               einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} 
..."
+               pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver
+               exeinto "${MOZILLA_FIVE_HOME}"
+               doexe "${BUILD_DIR}"/dist/bin/geckodriver
+
+               dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver
+       fi
+
+       # Install icons
+       local icon_srcdir="${S}/browser/branding/official"
+       local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg"
+
+       insinto /usr/share/icons/hicolor/symbolic/apps
+       newins "${icon_symbolic_file}" ${PN}-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 desktop_filename="${PN}-esr.desktop"
+       local exec_command="${PN}"
+       local icon="${PN}"
+       local use_wayland="false"
+
+       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
+
+       # 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:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \
+               -e "s:@APULSELIB_DIR@:${apulselib}:" \
+               -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+               "${ED}/usr/bin/${PN}" \
+               || die
+
+       readme.gentoo_create_doc
+}
+
+pkg_preinst() {
+       xdg_pkg_preinst
+
+       # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse
+       # does not need to be forced into the LD_LIBRARY_PATH
+       if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+               einfo "APULSE found; Generating library symlinks for sound 
support ..."
+               local lib
+               pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die
+               for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do
+                       # A quickpkg rolled by hand will grab symlinks as part 
of the package,
+                       # so we need to avoid creating them if they already 
exist.
+                       if [[ ! -L ${lib##*/} ]] ; then
+                               ln -s "${lib}" ${lib##*/} || die
+                       fi
+               done
+               popd &>/dev/null || die
+       fi
+}
+
+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
+
+       if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+               elog "Apulse was detected at merge time on this system and so 
it will always be"
+               elog "used for sound.  If you wish to use pulseaudio instead 
please unmerge"
+               elog "media-sound/apulse."
+               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
+
+       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
+
+       if use geckodriver ; then
+               ewarn "You have enabled the 'geckodriver' USE flag. Geckodriver 
is now"
+               ewarn "packaged separately as net-misc/geckodriver and the use 
flag will be"
+               ewarn "dropped from main Firefox package by Firefox 128.0 
release."
+       fi
+}

Reply via email to