commit:     62c46990c64099e750d9339d7e0971fbd2f55d3f
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 23 20:47:56 2024 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sat Mar 23 20:49:46 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=62c46990

www-client/firefox: add 115.9.1

 - 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.

Bug: https://bugs.gentoo.org/916405
Bug: https://bugs.gentoo.org/927559
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 www-client/firefox/Manifest               |  100 +++
 www-client/firefox/firefox-115.9.1.ebuild | 1394 +++++++++++++++++++++++++++++
 2 files changed, 1494 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index de0921df84b5..fc8051b1e729 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -198,6 +198,106 @@ DIST firefox-115.9.0esr-xh.xpi 413329 BLAKE2B 
0a07a12260f35c91cdc976875171c28d02
 DIST firefox-115.9.0esr-zh-CN.xpi 634774 BLAKE2B 
82b21c67d2fe654f58e4e56e9a1208177056f048860f26a54a672a2a40d787c68848cf854bd20730173fbe53a6b6b273b0e0c6b9b7cbc23d550e93955168da42
 SHA512 
dde1d995f284be84f265d2e66a83c1d014f477dde3d77dbba1f6c1ee75148fe991f8f7042b265d73cb02a33e28e0ae3b1a34bdcbbfe44c251946a68f65c5552a
 DIST firefox-115.9.0esr-zh-TW.xpi 639157 BLAKE2B 
84bfce66f25afdf9cd4efc3964eeba1725753c158ddaf53b3417df18d946a75a54f4e69d4f8b9a19437acce7255476543163d6d21d11fa4b9a838d7e73eed9a0
 SHA512 
922b32875756dc36dce4ca79c659425266fe227e41daaaa6abb0cbbc7f7db6c8d762654bc70973ae5488bbedc1cf0733a1740b78e36805e9f782ea4feb2cf055
 DIST firefox-115.9.0esr.source.tar.xz 507156076 BLAKE2B 
2b70c0396763ef6662450c1001b847adfc7c8cbf6e4e2ffd3120473aebcc4ff9e25091e2d8e3f9462c2094de9211d658776746a0d8ce9ed73efa824b4e25b508
 SHA512 
2828931e79f6f2476a699afdac02133f2f04d478c5a8ed288339701387d57354f73df50d1d2a08e6afdddc9a2b95b1820c9ca1bfdce3e0772cb0ba71e12aab88
+DIST firefox-115.9.1esr-ach.xpi 456933 BLAKE2B 
e405a3ccd8b5bdb34d45af640897862471e0f5de5e8ac62d8e35832aa910a1faf75b12584e60ec7b492f77e628e2dff97d935f78c77ee48c5ceaacdd471b2071
 SHA512 
b5b73c34355a29846ff6278bdd7b3b71df28310a474ab71c08db7947d5a558b2a09a8abbfdbbe19c83db4777e454d81b73c66811488e5d04e1545da13fbd35a7
+DIST firefox-115.9.1esr-af.xpi 413575 BLAKE2B 
c88223bf7ae30f06cccd9b792c71da70d34fcada7dc4c09221bca1d090d04c96218d2e9cc5ee969f142e15c0c357731992a871108f5a3218b24ee07c46c88307
 SHA512 
8f3b0c9166f663a8342a7208c8b797b90359cb6b52024e1c145e0c42d7ff649a9dc2a8e6540ceb4079e98ee677590d75cf9c4515285d98841116b68bf5a2831b
+DIST firefox-115.9.1esr-an.xpi 497254 BLAKE2B 
44eef76df85e115b358d5731a26149db2e19a562c46b825eae2aeaf91eb2b7c6eb1f481ce41b7942c9a22431688f26a18a7d60cdc8610d0124ed4f4157cd3689
 SHA512 
6e2b9647bf63fc07ac6f12cfdd1b928bfc401c968ac440f3ecbb76eafe2f91b0e48134ecefb0cde4f0473e896562ce93ba0eb90f88a8c02eb4fb72520c2ce02a
+DIST firefox-115.9.1esr-ar.xpi 590968 BLAKE2B 
9ec7333fd9858b0429c420c3791884301a2010add10395f5f36fb183a563e7d4d0a0bb588100bfda64d39e9c5290c125231d2725a7b2e0103d6d205a7dc5eb63
 SHA512 
344cf25d4217b1bbe56f06af70dbbc82c3227d8d01017d33fbe31eb19c2d86bc15939099941a83a6b03da3f2d33ad272cd5b5b333bf2363ceca1ef32fe58ce2b
+DIST firefox-115.9.1esr-ast.xpi 489194 BLAKE2B 
b10b39e7c4ec3e249f7b650382dd890500e85ff5a6dcdb15145483b0737592bdfab4dc8d46401d2feb30642b5e63d2da40a468f40eb23db5ae9e5aaead9c2302
 SHA512 
20dd0bc191a19b168e911e9d5592a0136eb95dfeb5e40744596b1fc05f6586301dcc3557b8bf29c27be7f6aaad543156f2294feb4cddc99347ce6fa33b7c24b4
+DIST firefox-115.9.1esr-az.xpi 483834 BLAKE2B 
4c98d521617c5a3d44913b55037ad9798d786e576b7f7aa1c4617f25524a765672109748873453cda62d63cee92444090da469701e64a65acaec30c49e7c2562
 SHA512 
ea34d899a66109731838c833611541c1d83481b769f600b203ebebdf97081afb312fcaaf16e2efdd9a88edc2e22c597560d96b4be37e4a9e321c802d43c1309b
+DIST firefox-115.9.1esr-be.xpi 691066 BLAKE2B 
61d2df118aa9525eb83008d4bf9242d51ef8249114c1a7407080772c58625129345a9ace0444db91d5269f0aceef0e3022a0a4a3f14776097fdef54e6c978b64
 SHA512 
638e2c8a697fd0313d167dca026257b3e70a75818f00e3f5197feebffe1c4ded17e261905193b95e991b46413d0110fbcc49c5fc538b78bf669a781f17626eeb
+DIST firefox-115.9.1esr-bg.xpi 588690 BLAKE2B 
6187abd3c970c988f3d0c9aaecfc7facffcf2a069556b0410ea6c6b9ff936f125f038215a7ecd2d666975d623eff240b6079a7cbb5364ef33d6cce251909b750
 SHA512 
79579ffcdfb8ce03b6948e8974a375381bbb73e43ac6fc04dffa93415b00d00071e236937bbef0093a483ed5483dcb2cfc1f4e69cdcf9cc53caa6a3138e62a64
+DIST firefox-115.9.1esr-bn.xpi 573620 BLAKE2B 
fcd3e3f5ed75ce080d01cfff498f0cde450a9b604fb813625b0c8793ee62b32750a4130c8cb91c659f7ec0bc3f52f8b3a5fe935a7586c17683adffbdf922df01
 SHA512 
f3c54ab0b37ede0d0e996134dea4fef5035caaa554ef6e2e6e1ed909222780c6401c2d1e1a3ab635f805a1d237aee2b60ae6a52d3b9032f9121c7e35917f18cf
+DIST firefox-115.9.1esr-br.xpi 573718 BLAKE2B 
5c967a8f337ab7b60c147624812a85b5594f93c01520eb3c10430b0ad34acd7d0598843baf8be5d16741a499660d943559a793008b934777ba7c61b7b7aba023
 SHA512 
af7253d9b687fdc5f05090dd96abeb104261dfe9130ad5ad03d7b1d0ce15b5a08abe9a33abbaed7c9cb16f57a019cca9d083e65aafe5e58a546d6a1c49fe7063
+DIST firefox-115.9.1esr-bs.xpi 463560 BLAKE2B 
571685ee96d611ade29b49acfe8fcb930d92f0c01ec0a2a0d21ecedb9bf1ef631b0547dc2994e5efb805c5754744d3fd93e2641019c55dd443e1101a1dfda143
 SHA512 
a8c47fb87e347d2d5a3dce7fb762ecd158de70b9f05305d96b9149984d9b90b26b9fd19c9fdb8253fdeadb4893a6a6829be42197bcbba8617310f328609d70ae
+DIST firefox-115.9.1esr-ca-valencia.xpi 536872 BLAKE2B 
35e95ae613bee25ea9a11f5f05921458022dfb84c07b34d99494db12ac40113b13ee756db27b678f225ed14d52954a50d1a26bcc13ffc6fe699a326c733c23e6
 SHA512 
cc066186702a7ae7f62bebb2454202330aa5efc96038ec6dd2d4c1ba52934bc06574dd7b955029e40aaccfd8c1db50e549dc89466690d5abab97efb56d8002c4
+DIST firefox-115.9.1esr-ca.xpi 575774 BLAKE2B 
3cd4c225c868b8045ae471987593462bdc70161017855bd2a588c84e71b367750eac168a5214ae5519d96d72b7d190cf30097687c3f3cda79486f4ddb33248a5
 SHA512 
e55fa05b54aad2e9f1b8b1e843c8c4dccfc718d100eb2a151193624c0f4614649aa1f92543a7201e11a569bd588c19be4b4a138e519f2ff2fe2d771058e933fd
+DIST firefox-115.9.1esr-cak.xpi 581675 BLAKE2B 
6c9a0fa7521ff4ee1fff22c2260b03ba955ee31295f9d06d4ec489bf17a724881748bdedd7897a5261ae74880bca984d4c54db2e008fa4a9b8290a3267d18050
 SHA512 
ea5eb3af74dcae5e9519ad106fcd439819563817f061b51c19ea464208519bed92dcd03ba63a3008b9a1df0076585cc29dfd1d381748e35687f2def71be89a76
+DIST firefox-115.9.1esr-cs.xpi 636796 BLAKE2B 
974f09f10a24d9564e9eba937244c71113f2981eba88607a0fbff315d30d4063e518749fe64f170750c06e8c8c2c9b6b2f2a9712112567afe0bde1eddda3e63d
 SHA512 
5ab124adced31b637c221c9a7f1e646e8040fc95d2ffefd0e11fc649620189468f61cba134ed14ec935269a3dd4aed55f269055179972719398fa0170cd7572c
+DIST firefox-115.9.1esr-cy.xpi 604773 BLAKE2B 
1c91810dbba1bc9ae5c3309e033ed9b1cb3f87e9aa828425ece4721bb023612b654c4a1c7529f7c61e1d70f21d0987490148bf4f905d3b8455aa8a3a2db05817
 SHA512 
2b11ad2c240325ec60f7123473fdfef81947e4048ac3c97720d90857079667c27b3bc001d733c3c603b8cdd237b8f8ea8252644dec282733207d2a07c688c338
+DIST firefox-115.9.1esr-da.xpi 589845 BLAKE2B 
2f0708c57eec2be5a984f1e4e9e737ad2daa621cf51137daaa810ae53055572d3738f5cc824aeadbbf2b984b3f98a650f5dcca5c26fc5a2c1538b98e95a07108
 SHA512 
44f83faeffad1f60f472180f4de8b909ca4643b9bc8b76e3c159ac7ae6639f5b93f99fa991d06a108d937a296d0d379ff37d842fc4f6e37e3f045fbbfed9759c
+DIST firefox-115.9.1esr-de.xpi 612042 BLAKE2B 
cd2b731c4aa395587982e298a2c513c649159280676414386c7094e6318f318c9f9efce717df1fbba54097956a4f463a314f236c316e51f5111470165066cdc1
 SHA512 
7150f5b0d2a993ff17c29a9fd0e1bfa8057482457c4c10a7d49e5418b28a87e895a310366e6eb669a5b392fda5f3409e04217436b6ae7a71b6b2f76ab8327c09
+DIST firefox-115.9.1esr-dsb.xpi 629497 BLAKE2B 
a44b8299d721997cdb63d0a794cf9a3857cfdd9a48033c4733d8d57b423b4c2757f25abec1a289dfb98a4200e44abe1aa78a9da10dd1f2efd9b101bc0575d516
 SHA512 
9b24411fc63b5e9501a61fe26022f38dd33a721359053eea2ef653d866db06c454c17c2e66da0a26506b4db63e66b0917c1f1d140e5952a3c77073758ea97de6
+DIST firefox-115.9.1esr-el.xpi 710468 BLAKE2B 
91d3bc2aa207440b06632ed6de3db7981f500059678d8e634cf5ead30b3e91a506624beb7d0362604472b998b96e8f029b3be7cf51e7f0d7e796ecdb44dc63e8
 SHA512 
8e9b50970e8464d18329234e268e19d3691960b821a3cdbdb757f1e1d8986f56b6d16565381bc6ff8c5028a1e200a868f05cc4b0099fe47c55707278884fd5f5
+DIST firefox-115.9.1esr-en-CA.xpi 551677 BLAKE2B 
326c1a97c08c019670e07e03c4f93373510db65894cf3f561552f639cfb9d0388125cbf5b7c361c28b42ba1159f8086ac1f039d6912c0480913a4525fc4363de
 SHA512 
d8e367167c60b6cb1c36e55bfda8373a2a0c8d10c64f65063b8b0b88893f4ca78d06a5a2fdf3351336c6657527dc989b70145c6cf0a6d20f558bbeaff08c98a0
+DIST firefox-115.9.1esr-en-GB.xpi 567048 BLAKE2B 
e2161f41e4441fc036c2c66005101f0dcfef114624b6dd5cb910cde2f37eb41b3f29b7ad97c842d275a78f6555787556e21397a6dff6caa80373728130538c0b
 SHA512 
9919b4f5d46f6f4e696df39d99d456a489bad2964ece66f7ec09b6bf91419c18d2b8ecc12304c0dffdd6d72fb5526521025f41d7f921cafde829ebc26a7ce47b
+DIST firefox-115.9.1esr-eo.xpi 585338 BLAKE2B 
f1c0f93d01d1b7081556537300398a871b2f0bd1e16b1f91391e06e76ad369d9c9482f161485a0e86eb6c8ee6af4d513d84cdde89b2ab5d46d1eff27c92ca129
 SHA512 
49a731e801008139089ba053cb2635bafe22826fcb6dcb4655a4848889d09113646d361a4bd07e07e89d0ef65ec0dfef130ae7f171172e3ec62558e67291603d
+DIST firefox-115.9.1esr-es-AR.xpi 608551 BLAKE2B 
0162ed8d7554296e01d1523d8a33f07330e6c4f8cd38b6c7ad97717c57a1e9cbb1a7b69de2bca6eb89d83d5d861af0700deaa984147aa37d3bbde8c967b5f2c6
 SHA512 
5bda67d2ddb392cad85efc96ec6d3aaf6b9632e0a8b47e475e84419116bed2392f8513383b2eab24d6675fc3b4fbce742c8ea442a5f8c849dbf1011b9e176699
+DIST firefox-115.9.1esr-es-CL.xpi 606527 BLAKE2B 
d47e01eaacf2a0dfc4df6df3a8a224236b2ada570c942f43ea0c4f566907276dace17c54aca16600e444d34bfb620e6c00eaca7a1e32563d55374aa57250fff8
 SHA512 
e40c5bc89e8efdff470ffd73acba673def11d219f3ad85b9d47c91b471c4c2ea4102bb979836f1bcd6c611aaf0a0ffe6d66f65aed94490f76c91b364c31667c1
+DIST firefox-115.9.1esr-es-ES.xpi 600509 BLAKE2B 
ea83ea3551b86cfd955b7a75d0ccecce16c82586723a36492f7f76402013fba2b79b778baee0b594f27ec74bde31699f9f78bf7057f6e3cc96b960dc697d8d16
 SHA512 
ea30d92deeac378fb0c287304a2c5beae40290f9e0b3afb5da5fe5187a9f4064be7704bc817b1f8c7625c54ee5ef5a794f95951abbac34a54ae6e00b09b4eb12
+DIST firefox-115.9.1esr-es-MX.xpi 580261 BLAKE2B 
96010d941f18883aa93a79b41d70091770c5bcd62f45b312481455bf79d18e8f8f87d46a50d7afbf0250ac73944e26602e0085a77c6cd33e967095028af18018
 SHA512 
5d6038b5b931136476ce5a8a192e321d284331fe859e0303ef09b93a00c625ee9abcf8d62542d1d6285c2e3eb4a357085ecee50f83501cf38d870449b2071c3e
+DIST firefox-115.9.1esr-et.xpi 530478 BLAKE2B 
cbed606ae0078c5a05ec06530a5bffb410280e0fd621084c628c8678f1c55c6bf41919eb44136cd289cd0fb9ce73b632e041eb48996bd73b1be0ee8af1310593
 SHA512 
6be042890b5627e6d97d18bec888f380532d47578bf01e0c489279caf589abcf2b3804a8f51df2a6f6e6f523298842ec8369d6fc96d7a7460d09e5f4c4dba2a4
+DIST firefox-115.9.1esr-eu.xpi 581884 BLAKE2B 
eb0760f298031c3574f10e4037dfe555894ea917981048dbb49e6eab01542f3b56143c14af165eab2b039e323f59cff822250f36a3c8672135018eed88fbf4a8
 SHA512 
7e27b4fd95a463cf51c50f705154a84598742db3f9af08b2cec5735cdd7c47307b7bbe1146eaf06423c007352726568c7ff9d4671e265826cd66062aa77c2cfe
+DIST firefox-115.9.1esr-fa.xpi 581584 BLAKE2B 
ba9dc266ef4b8fd263cd1d12fcd923e6033c0ce83366ba0aeef63cea1ed4e9c3bbef4dc4fd62a7ebf2070c76115dcac75c05165345e6b1f21417b2f534a7dfbb
 SHA512 
9381279cf31e4dea7a1694cc090041129abf3f1db804b2f37884e4c3fcfca2920c6fe3c325758299c674b7a52b6968d501878f5cc0b4109f854dd9b65421c571
+DIST firefox-115.9.1esr-ff.xpi 469368 BLAKE2B 
37b86e89d5d415aa6f579cadfa09839a14a403bd2af99736982790e6a13b82dd7da97fa84bf2679d62a8a406c05912125151671cc01918fb805cc602eae6dce1
 SHA512 
dd75c3433f50e7422a346cb9dbd9cebb7fe60244a60725814ba7c52d2c8c2bdac303af9cd54a7ed7181abfdd99af74c80c04249f7c7a2d0940d8529396590ba5
+DIST firefox-115.9.1esr-fi.xpi 587621 BLAKE2B 
8d12a9606a820d7ade4cb8a26ab45700ee9c87ef31be8dcb43b785ca50d947de8f770e90bbe677cd6483fab52d48daf099e0f63c0131c1e66ea6e203b7352622
 SHA512 
902188f6793cc2d69faff81f6ae4509873fff5d6f75d727de7f3de18c50e151fafa5152d719f4abb0d432f8f4963c331d8c6c055bf74a28a5d4894b416f53d1a
+DIST firefox-115.9.1esr-fr.xpi 619225 BLAKE2B 
fc698c0fb656031cf76192733d4214d075450e60144bdabf36ccb07ddbe40a63e7f940e6e0f53b5a8ab024545fe9ef56f866d766260f5a031f96fe8809ae3a86
 SHA512 
4999e722353991613cdfbf18c88415b2939a80f501e1feda5ff70950443933245667bc15b99a987937ed9d4611d3c4a6ee063e053c80556e04431f9e1851a4a7
+DIST firefox-115.9.1esr-fur.xpi 611586 BLAKE2B 
2e276092c47fbbc857b195c8562c47cc9384f54ef921df1ecff644b8039fee7cff5fdfb7249f47d6a2ef18821597e9f7a4b80c1c8d866711c82b22f2e9412527
 SHA512 
99bb5065739eff8dae0eb74e44732f9de0bd97da9aff339a0faddefa50af39c68d464c3dedd43f552a5e9ed8b51e22511fb487841ff30e84600d3b992e28b40d
+DIST firefox-115.9.1esr-fy-NL.xpi 602853 BLAKE2B 
8620e31a9e11f9678a268e163c03488a20374ca7111a9bdb7c3f82d95f0e9e1e82dd853a73b64600712d90a5d91a6f808ea0875720839fa833991b9dca4a6550
 SHA512 
cd62da432c163d66f05c1009fdc4b750d62967e588bc208c43e4a560679d301623b46eff3800b29ed5be95558884910c2427724aec313ac3c1d0fe7f738af226
+DIST firefox-115.9.1esr-ga-IE.xpi 465838 BLAKE2B 
df74c51d1180f3c24d15cd61ae6ef10791581d1c670c9631371c1da46947ed08a56bafa7ccdbb058eadd209511477d0905ef22b1ded9cb255407a5ac40dfe66d
 SHA512 
8f054372293c564b0bba96c8e471eaadfe73f002b20362ca203b30b93dc4efe67f734b4ee4f69ba9f3a1a550a55b49f82778e0029d56d8e6b78d3d1a1f4553a2
+DIST firefox-115.9.1esr-gd.xpi 582159 BLAKE2B 
5658f57109b2bcdff49fe278c15a2cd203a08fd4974fd949dc746a6fc8bb826933d92edda1e5ac8dda9b69d16d0a682418b0900e90ec6261a44bca2e5cc18509
 SHA512 
0000914b086840f707fa5a18b9c907373e9ad50efa85869d849f2865aa697da9a9b05608d24e003fa6ab6091d90fd772cf0683c6012ec207959e5de2dab7f376
+DIST firefox-115.9.1esr-gl.xpi 589969 BLAKE2B 
b913d42110a2ce7a95eaaa4338c1d5620e13ed8b32d1cf2c26a7f40a1e0c9ba96c6436a0a9025653ef85affb76e6a78e3ac22aa69aa35ac53e5caa58eb76575f
 SHA512 
20b6458fdd5c7dbc4d31c08351ecd578ac60926a2c3f6fa5b081f47d5f8bcb620a21c6f8a99427c8adfcd8db94c98898c13af5ada8f7cdd2d3d739179356b935
+DIST firefox-115.9.1esr-gn.xpi 618632 BLAKE2B 
0c2b747d9b8fd15bbad4acf3f39609a0ec798d12552fa4e0aa6f968bc5c59350f1a2f08995c31905b65fa8af61f0622b86b6ac462c189554745a3ea7bc3dfdb5
 SHA512 
3759eb3d5603e6f626330e623b06dbcf429f922df8a8114d0e35d8f1507c4ea2ba70062c776a41c8fb60d8da7fec691618ae654167328db41e7b961581151a86
+DIST firefox-115.9.1esr-gu-IN.xpi 520699 BLAKE2B 
b14001bd2430b19f91984b34059bb84fe5c2fa0ad819308c1fb445a899da1bd0355e58434d5204ae5705405fff8f5a8a417f10585b477fd2ab3b128853156f7a
 SHA512 
27c4983de51b43a247f95cf0824fcef242f9008e65c8aae0df8883ca3918f3cb928163a744f137ae27a81fca270e9ad563a996c6e743e96071cd1158d8508419
+DIST firefox-115.9.1esr-he.xpi 611039 BLAKE2B 
bb569702cee27e1ba3d1050520e6449ec0dc6bdaf88f7cd86a80f382486b785ea85738778127be99eb0b2c1ba3882bd6fcbefe63de5bacf08f7a7405bee5f23c
 SHA512 
9ab4da7b76f4ff89edd1c9daf74362ad3d99427f7928f663002f86583a527945ab77bf2df2f492585a5eb3103607fc8948780e24f583856f793dad2fc3f649ef
+DIST firefox-115.9.1esr-hi-IN.xpi 557474 BLAKE2B 
2b8c8212b04ae67af8c4b41d0b0e31dbf1621d6869b39913f2c1e43cf6071c298e89f89d248bbc2d94aa00f5329aca007beeb1aadcb536e2298a4daecedf8ff5
 SHA512 
1a2be6602eec4c6802d223257ece1110643f0ee6d3ee5bccd89ec9f814174e15aa18f71e80627d4f00ea7c96a931354cbe5a5a084faf628596fdabbf61dce988
+DIST firefox-115.9.1esr-hr.xpi 547610 BLAKE2B 
cbfd8cbc5b1f122bed31cfe7dbfc355f1f55fc212c0bfc29891f1089d0ef3a0b550ef104822ebc8b74c5e839e7e9c574def289d12899ae08de4e8a0d16184d50
 SHA512 
f5e6c124937f17690f70a2735cd1ab588cf4308495e980bb9e099a06105fc458abfe844e708f045ebb4babc02e8cccbac96a5c5b0820432afd433f92aa254059
+DIST firefox-115.9.1esr-hsb.xpi 626662 BLAKE2B 
4f9bf098e166bb9420ac66b759265a949961c573a570e39019e917f9f378e58789e8297d909b7af48b8994812979cf449d5ac715fa136d18e354bc648bab3048
 SHA512 
ce7a30486846a041f56a5d3c29ae19843541fef03b6f2f4db66dd2a97ee9962982c7617ca97e81c9c5fdff18f4ac671b328c2a109e92f99d17197e5216e7e341
+DIST firefox-115.9.1esr-hu.xpi 628670 BLAKE2B 
8f38e5dd2f19c61da0429c01d5a251fc983144cb0161bd7ef589008d28ddb8ffdd044cedb651b56fcea79137d298cfc45655c544372f68d8205732671a7e29d1
 SHA512 
dd190d68f9ddd2e5768658813e2ed27d27e5c827fd1a04ba97a3aac5d68c306194f8e8a1333e2b86443e1b1fcad1235a24376d966e07a4463a3aa8f74bb372ef
+DIST firefox-115.9.1esr-hy-AM.xpi 598326 BLAKE2B 
302ba60844e7de8ac50babf8ab464c27aa58e824a3e9f811a0c04f438d9386e53188a4298f23572d4e5e7ee18fa790368923f70423fb94875b9789cb70dfa72a
 SHA512 
b2593ae44213021b8fcc7ee16881f35bae67b216c71a7fc8da461bd20757741a020cc4a4e46efdb3527ea93188d1e6667522f8d3cdeeee836d81be792e18868e
+DIST firefox-115.9.1esr-ia.xpi 591849 BLAKE2B 
1b5b43ffb6d465d9f688bac4038ffd883d897e55815e5baf29f2ba0dcd2591cd7bb757b42a6c0599d0ffbcbe6f71bdd46f49318cf16981bf39cb9f93af623916
 SHA512 
11a83d5945c24fe1e38c397939de2331934ba37f71169318f0a79fab9f0e2b5b302c8bfec7e9d77a0733cbda0524ed412760d588d304341bdd9f5e3f4ff5c932
+DIST firefox-115.9.1esr-id.xpi 556355 BLAKE2B 
9f50cdbef129ffbaf1c33259eba898ca3f77995f8078e3375cc2783ae7bf1200d3982f9ea6d054748a52d0580a9f1212d043c54e8b16a168eed01d59e7eee367
 SHA512 
6db1c445f57541dd3696583d33cfb91b235f93bde47374b85d5417ef721efc0fb6e757d08a5165aca90207c0158aab1319fc7e5445bdd3ea0b60735950b9c166
+DIST firefox-115.9.1esr-is.xpi 595868 BLAKE2B 
9e9820ee807f7b68c48b96be3970cb7cc3aeaef6c75e757812755584488e558e954f6b33912111be628af3751df906addfd7c997dbb601bcb08db13e4b90f06e
 SHA512 
54bf217e9fdae93130a39bd3e56ce05df80aca734a0ed158b877e34661b777497b8011924f999a21d1e3bb2b7a8b914c1345ef45873d995a4d6302f209d1f89e
+DIST firefox-115.9.1esr-it.xpi 548749 BLAKE2B 
08f7497ee370652c90f44d5b1b7dbd09d1a25a01bfc0ff8acd4aa94e7efbf1c16c6471c4ee0529396fc5df214dd31c81e9703b86cb9eddf158624c8822b2e4de
 SHA512 
c9c817a6f0039a06d3cf113769a70beb8fd5f3ceb659ab4f9809beff68ce5199152316ab30e7ea47d45cb13320da946d06e13fdc25605984ab802cb81e1e232b
+DIST firefox-115.9.1esr-ja.xpi 655148 BLAKE2B 
ecd3e5db13e38c46e483ddc96cee4356cbe9297c307be756d6001221f3bad8f9928c221289f7517d2dc8e086902257b92e58af7d189cad2ec65ea5f67ecae8a3
 SHA512 
473a0ad6c806f4471edd110af81dd831d07558987151f01a0ba61b728d8ca1da50bff82444e656d49a74835e480ef8ab8ddd411e634b09e1df74389f71e7d728
+DIST firefox-115.9.1esr-ka.xpi 651915 BLAKE2B 
ec56969d0c25d7487bbc0cc3ef13cba7fe42d2c576520bce7785194e892201dc03ce7228c4733c4bc5013dc7a220dadef6c87d0b8f3f8a8f5850590b012edd5f
 SHA512 
a53dc0b51769377326c6adc48d831c96e69ada214a8c7757ab19e10d1e5b9dff155394ca2d4e09855553b14c615b0c780d227379c392b4377e1a506b739a6c1e
+DIST firefox-115.9.1esr-kab.xpi 593086 BLAKE2B 
c75244ef7f34dbcabead58dc33b43af63fe580dbbe8aac8804eb755535f9ee7e1ec8d05b5f36be090aebfe8ca8184f9e205b6ecefdf2045e30acd4436db51e5b
 SHA512 
4280c7e46754cb52cd43edbd4ad99b93d3571162445376b2ae40da0e5c61ce973527dc3d9c9cf448d6abfb65f9572eff8eedeeb6b054ba56a3887e7139714427
+DIST firefox-115.9.1esr-kk.xpi 686576 BLAKE2B 
244bcadadea9b7c7fc63b001945e2dc2286957d3535cd739a0848558f26a4d76f96d5842347cd887ae31d9f66cbd1810df6f63f027fe64e42eaae9f070d9a643
 SHA512 
88dba31e9b97a0a08b25eb23dabeff03461ad7370b4c1e03ab9164e75563ab1ef56b441be2393e93dba1aa8def83606ec02df348deac522752419943cdc13653
+DIST firefox-115.9.1esr-km.xpi 519953 BLAKE2B 
169750c7fb4f2d756659df94a6f5bedf3637ea9cc6675e703e487f62c54efa2dac2eea67a6ecc6ee304fdef37c98ad8f9b274501882a69f42ff678e9a347b42e
 SHA512 
3592bd27185da919b7058c4610bf52d96bea27df0b834df47a14780929757dd06b57d5722b5275b51ad94873ce1d7e509b76e0057dd836b712cf2a5aef2de16d
+DIST firefox-115.9.1esr-kn.xpi 485814 BLAKE2B 
b8d70abe97e5ed7867f296ce0f29c2f99dea91d8dfe551533df7cf02e984666669713db76440e8b083307b1d409588decad9c3b46e07bf607bdbcccc9af17061
 SHA512 
7a2b1330a3b2a2341b66472404630bd785c8f0cb7f2efebe0c79a46d1f9ef7b3a7374e3e2daab03f41ddf74b30cd2fe0836afd2bd21a118f7466878577f1f0e2
+DIST firefox-115.9.1esr-ko.xpi 641343 BLAKE2B 
58d3f245f41e900f758b8e773e238c69fa489cf6700df262939ff69f195f02db20a22744a0cc6d5f241bae8fe3688d6c257245160129c5d40ecb3d66ba375f06
 SHA512 
6643055511d3c447423d112784dd882ec1ce95c1c5dee332aec14059b3653280f75cf4c44ce8c02b351ca284d8ab8562134e006c7233b1b1edc13376f4df69ee
+DIST firefox-115.9.1esr-lij.xpi 476793 BLAKE2B 
34c79248ffc3f69d9d3e6e4dd417764a3960832381812ceb75a00dbfaf2a56c65f7a09ce08c012d1bcafccc974be890ba8b97a1331f321be3c2cb2e43a84644c
 SHA512 
b73d979a71bd165c6682481112ec6527ed55790c800a62bba680b11ebfaad2bcc88beb4e236a2d76c019216261d384d4ddcf5e90021979f0025aa76c176ece14
+DIST firefox-115.9.1esr-lt.xpi 563119 BLAKE2B 
8391f33e06c97a6a4cb2433bf2f9276d11f7da185f630149e8d5548b40f38724a16dfd95d2794ea0d72e1d95bc2dc4b02786fe95ab6911bfb07a9be5215b6a89
 SHA512 
8d6e8b5f1187de2d757d3731e59dbab6fd2508b683ff56e54bb649ecfb8ee7f49259d099ba0caf61e47cd4c0efb4a6b2d45d2051b07530d339bd44f1084cef6f
+DIST firefox-115.9.1esr-lv.xpi 462793 BLAKE2B 
21982ad460790bd61bf4859fde53ca76099b5c8f83b9ebe3cc2113fb8976e39cb2c7ba2f1cd5d1ece9a4124a671e328f75e7fd8ce6e1dfca1179822fb0bc3295
 SHA512 
6658ada6661c08fa866f84d21b5e7fce3458f73e1852e3ed4a3fb3c2df2ce5f6a851631b4012608b8e96e80c2e4cf011640a198bfacdf20a95ae258e3ae889a5
+DIST firefox-115.9.1esr-mk.xpi 487300 BLAKE2B 
547fdc0ea767dba5ed750cbb0db3ab876209915800268c3d7539ee48c37f85452db3e0cecf4d5109abac12964da75f1fd80c6b4560bdf5c57856c33d4b83b8ee
 SHA512 
1d3afa83c66cdc21452af795acd2b939cf01c618e9f546568dbe23b46b6d12d2efb13391a2d345dbe5ebc21873ff4761261076d33c6cb403db55f5c0a12a0f58
+DIST firefox-115.9.1esr-mr.xpi 524686 BLAKE2B 
e9ac8b39ace72d210937ed7ff44491470e0b641f4ea5c30d9704712a2d8ad275022069e5306864d5116d661379d301fc4ee9a29307f8ab52ab1b64a2c0178a4a
 SHA512 
2881464e5ed8162c85437f694ec34d24cc5f71050e8bdfcee015a67baf0fd6b021834bdda7431ee5b70abac83483c4abdc3035e3a37e1efa62de6a3603fe42ca
+DIST firefox-115.9.1esr-ms.xpi 443387 BLAKE2B 
7c2a8e78fa501852b43c519035c96178ec05b86f034335c240899d7c8806755024893a5b130db396da0274e8c885f53816733daa2669f373b2c049c1a7490659
 SHA512 
cb125cb4d1fb50aca7d74a021324d7cd7af58d208c697035d818b37957759e7aa4e8d51ea5a0ec6d97db5a79f79a8bc7a63ba9e68caa38c1bdff715fd51024b5
+DIST firefox-115.9.1esr-my.xpi 510872 BLAKE2B 
c2f3a4a50b1939d193713456c66dcfba7fcefe8a3b8fc6e9ef9c2f51dc1180201baf829a41a8b41931333576ea86ec78b1e7b48b6e569db6ca092dd70071c791
 SHA512 
496f72274cfd75f0397286b05b72a3494e7adcdbc8ab1a25825d10423b72bc4390b39397e23c284835768bf1027def66721f1f2990c3819cc4de92e815400457
+DIST firefox-115.9.1esr-nb-NO.xpi 587908 BLAKE2B 
f653768ccd79e24b5384aaca13d94e2de6fb8b9b6e233cc380ef732c39c1e09a806a6cb660d8311943e564397a2d76db07ed5c3ace010d41890d8a26466f85c6
 SHA512 
ea0b3b5049b99fbb6ab55496aac3e763ea437457f86a7adad733624f32e358d15cd3eac2544b66505febfabe6803407652e1755e81b7240ec89a1f054567109b
+DIST firefox-115.9.1esr-ne-NP.xpi 482015 BLAKE2B 
ec7b6065a5b0c3c9cb00181b71570ffa2e2ca77b1731750181fec213cfa268cfec14e72f5cdce0f784c28dbd1c7a24dbe3e7b7d9aef65228e0c07d49af4c5d86
 SHA512 
8f9a790bb7542501eaa4803cb096e99f18fa4d8da9924568e8c222dda1ca9066393f8c6ff2fdc1a15418adfc79a275f4699216624514135b9a54bd63c2561f80
+DIST firefox-115.9.1esr-nl.xpi 596846 BLAKE2B 
789548e7c6fbdfeba1a403665f8d006ee47fffb191f31e86d04745d0e2dbdcce38367310ae2106b47aebc82752e17cd18fdd6d9101f44547fdb28c00d32df2f6
 SHA512 
dc054927be9f8c06fd0068585e86116b72b962e2a6968c8560c46dff07ce5cbd04d7e9e19ed9b5303aac2e3d3a638f6cb82262ef7aafba66cbf27b9d9321da28
+DIST firefox-115.9.1esr-nn-NO.xpi 584082 BLAKE2B 
362b28434f63b532177fc2836406fe7016f41e7fdd7f38c238c34cdf9e6b7202a1b4e14b1e914990e0d83f7561a1c27285024e820225c84ee8b7363b9e986881
 SHA512 
08c0e52833a3dbd216fb1eb8c75b8b7f11ccfc056d7fdbd0143c910fcab25d58369d409df310e56e46cb849a57e9e7adde49e5956ba346067997d153445b8e89
+DIST firefox-115.9.1esr-oc.xpi 596882 BLAKE2B 
c34a77418ef8406f34cf074340c25d523cbf49afba386ffc4f17840a57d2f7a32dc099055b31045409699e85401bd62c59ab2025512a35af6ed0e13519590184
 SHA512 
5aca8e603932691e972e962eabec7e02dd37465b1dbaa1b9e6298a06d51384b4ffcb7a800356501b419c3382cb29a809f59c7920bd93c2e6e5785d73e5d27739
+DIST firefox-115.9.1esr-pa-IN.xpi 670640 BLAKE2B 
b50d4a628b8f4870a7555854e768c4d67b561fce0835a776da0903723eeea5c698920688696471b258f669711fbb219ad731c772bbb8378086887546a95a3cdf
 SHA512 
774e2460dfb8f95e2e9aa91f00647ea13403be5e936cbb102d77e23aeef3f153b5f5911edf825b2b0d9658e62500d8aef3b3c328720c7fd82cce29e2806c245f
+DIST firefox-115.9.1esr-pl.xpi 615682 BLAKE2B 
7fa73eb38e3713f7aa5272864dfd8cc8b6f20de3ef6ee6e0778aaf6128ff91db4f5604f229e6aa3faa4ca5bbd569d3b63d7a738c81e872ff0dfae57aad38747c
 SHA512 
b6c75cce3207c0ccdd43a8235dd3f0d974d84ef094a9e876c373a9ea5ee4d8d95707770f6f76c0eb0bf049b0b262e7f0e52e9464e64bdca718af03fc46164362
+DIST firefox-115.9.1esr-pt-BR.xpi 602113 BLAKE2B 
0574a949b891c53eb6229cccd17f39479f591d0e00c138a52eabbc1a98c98b2aa38a3f7fa2b6b22c040f69ac6e3435cee37321b5dca713f1fe9496f12bdaaaff
 SHA512 
b12980e6d000d2da7ce5fcc4824bdb93e42aa32e9c9c45a45f303257be37b4a3b3f690f2715194fec60c129ff1b36a21ab0b2b14f2093b9e63254fe59a3bb9b5
+DIST firefox-115.9.1esr-pt-PT.xpi 598019 BLAKE2B 
816a6b331bedd5a37b4dcc712eafb04949639427a161b7fdb7dcd9defab7f1083eae5406e5888cdeb55b36ca7318e667f6bc3f8c94b69a3aeff28b543a00cdc7
 SHA512 
4e5c4907412ae981e23958b0e6ef70f449ade93acfe3f224115d96eacf73a2c15f35e9ae6e7634a4377ad61b7a551ec72f19080cb68f340779afd62ad561da11
+DIST firefox-115.9.1esr-rm.xpi 595716 BLAKE2B 
4ab21d7ae0e65f3b3ecd451f480841023fac781c40626faf04eab26335f1be1e4ece1b1d24b5e26cd47d4c857b8a372ed905803dfdf8c71e120bfb093546a0d8
 SHA512 
172897824011b1ba19fb9fa3ca8b0c0b81c5719d1239fea9d38effdfe83fb629eae783aee54b2c8605fde0f64d593c17e14702829ff4cada327c84db36bbc20d
+DIST firefox-115.9.1esr-ro.xpi 540138 BLAKE2B 
c66d793ad931661347eb5561eeb5b817f2e10b53e5a0af6c2324d49fc8997ba0b0f3b0de44b5df916973d70862059f63952159499d918dca1fea5cda0294e97f
 SHA512 
01c108d7327f8f4c1d91abb7c8b6a24058dedf1faa5e563950baa82a1441dedfc8dc625204485f0c70a92d5b89fccb2c18874b3308d8e85c9bb655615513bb78
+DIST firefox-115.9.1esr-ru.xpi 698646 BLAKE2B 
976b3f69d764c2b00d83042e41ec1ed1be52a3b2c763188f407f4ce059cc443b7fa59f751268533596db52e30e4f53c8f0e7d8cb80e7e6d81fe08f33e69f7049
 SHA512 
e4296e037d22dc1aad7428a15a666cb379d49bb0b70a11ae0aa781207b9042ec829658526ada9606450bda8c0de9c66754ba0c14284996d5f1340969dcebbcbb
+DIST firefox-115.9.1esr-sc.xpi 559170 BLAKE2B 
51fa1880d447dcd8515d5de554dda10d003e7ac022bd354e869a95b032154ce82286ecdbd69b56498204d486dcaecc11db3d265cccecb95c6ae0f0fdd61b6034
 SHA512 
1599e136ab2bf87337917edd753066f27c910c0b241d841e40f810d8d02f58931be0b6d48cd253be9f2021f8c2156ce07701e7491dcfb190bf31053488575546
+DIST firefox-115.9.1esr-sco.xpi 503575 BLAKE2B 
62ed6a83a2aa5eb3873ea3cbc157bbaa944baa00f9355a84afe738a729c3e80e084677a1b944efd06bc53432b8ef0f70f90eef5388d3750ce3702e81fa65f2d3
 SHA512 
a145359e563116c918901507ad9b0b24f60e99c4a3710f193c0e388b130b982002704314091b26ffaed1d7c5fbc3a27fd3a44ab9853a7b1af8a1289cc1411be1
+DIST firefox-115.9.1esr-si.xpi 597890 BLAKE2B 
95bf0f6fbf699fde68834488474ddae83127a015dfa8d94490fcba5cef6c497b2bac6f22b653d44b710cc9bc97cf7a3a6b003bff7240e32dc7e958d296176acf
 SHA512 
0bfff1c614c6b42beef6786e324b09671085496678e2aa9256a7c1756dd54f891414fb0ca50e286bfa785f47fccada295e65e6d7e8e95243dceea413d43e12a7
+DIST firefox-115.9.1esr-sk.xpi 630372 BLAKE2B 
432cf44086af8d2e369bab347035be97c0180adf7a613a626d828a2c3bc007040a40eb5ba153965e1d178b5bafb8e1026172b30c79b4cab7f630fe369b87d006
 SHA512 
6472e145354e272c55f38b27eccc1941f236a30e6bb4ba00861331f3ed523e26ff1e7d9e624788cc659c0fd79efbe933a627baa4cbf21e09b38ccdba07e000d6
+DIST firefox-115.9.1esr-sl.xpi 597703 BLAKE2B 
58cac54e12889558c77c9b036be8d3002b6682191578e5e3f9c62ddc395d5a5995da28cd9c1742efc53f9911b2ddb23dc12248a12d06eb333442214d99675b4c
 SHA512 
29c497da7b3e257afabdd0f3ae603cfb22278b28953c3047820a69cafe556e737aa1cac2a018c6e6420a47ea437b747b9ca8fe1a7db4ea92bf4fb36956bcd11d
+DIST firefox-115.9.1esr-son.xpi 412099 BLAKE2B 
fb2d943c6470c0b212f181b77f9841be810cb30dc0f7727f579fde63aad807c5d2522e1134821e9061037cd27d7bae0c411fc2cadf87f10f65f72e970ee7d3c2
 SHA512 
e138a6efe1418d5716c916965d33591f51bdaf300ed275ec3be645c5a4226a4d7d39f6af23198f0604d47cf8f50699be32d3d17c1037d9b63589491cf4e5da9f
+DIST firefox-115.9.1esr-sq.xpi 615538 BLAKE2B 
df0325cc4d8551fbc0b62175442207a0369e7437c5db5d00bd908dc8920fb925e7f912c7e924be07dba0ca9bdcaeef8ad66cfe04f362a0b178e847b8fe444b1a
 SHA512 
3b7ee840d0d3dd58682a2718f04c8c8b720c7929fb71e23f595f5cc758a01fa39832b3b98d3ccb2e99dc8096d8dbd6f463a1bd9cbab8aab924b5f6be469b1ecb
+DIST firefox-115.9.1esr-sr.xpi 630496 BLAKE2B 
666d58d494ef3ea5bd1e2e18384606cd9db61f5aa18bb9507ff62312562744c8e3beaf09f6653314ceac9b9259430d83affa617ac579a9d3e8b5b23d1c13f0a5
 SHA512 
6280f35b6fb70b80470ac689eb04e640286c34e1bdf2e7944c8df3d9c5f447099a6dc808c436085ed81684efc14109a1fd7b49f7b4ae38bf883e748cba6c5fd2
+DIST firefox-115.9.1esr-sv-SE.xpi 599907 BLAKE2B 
143a6d66d3fc32cbbe79cbda93e09a79ead39d1ad100f441748f4bf08d55aebf3c94fd964218b05910f197b5fdf17c1e05ec17da73213542c1f174948270e6f5
 SHA512 
5c2a17110321e1ed8f0d53efd4b76ae29a81a678a163cb2d8747e5eb13a08ef39d51ec9835488e293f49d2651f8fe4d8a733a46609cd42d362b2aa945d6a9fe7
+DIST firefox-115.9.1esr-szl.xpi 518595 BLAKE2B 
b80830a486785045cd9bfb5ea61e4251da29f539b17598cd325f8ba9a5bf6eba0896b0c06dd25a34ee9f6e7e26bc67d4aa950dc49528a7c7dc9cc0cd90624ee5
 SHA512 
0882baa1d7daa44ea8ed3699569676187ece82e0a0f56bd3954106b9ec1177af7d75f74a78c891bac06558766e86760868e49031a88a32c159254b4f72c2945d
+DIST firefox-115.9.1esr-ta.xpi 501443 BLAKE2B 
621210291500b8a88e8b980b1393aec3013a1eb663e5fc2e695a20264dcd8887818e537fa26b69dffbd756b7206f4cf104163840be80c6af462821c9ea11595b
 SHA512 
b15fdc750416ae9a3de5dadbd9a0148b82a37cc8168f8c9b585d5102fa7a148dd3ea65fb1a6b78d7dc31eff57b4c41718c8b8f5901409ff8d739c798a7688bdf
+DIST firefox-115.9.1esr-te.xpi 551798 BLAKE2B 
e8ed6d376db0602e52d12657db37ff916fdaaedf6086c32b26b8d261b80942fb540e9c662d205a4f2b0fad18ed42d9f4b09b87e0d9ce29258da341626c8e16a6
 SHA512 
c7171b5d895adb73dcb1f36d3a72473ff5c670707bc58468be93955657c625cfd761e2ec9fa3ccc834b804ccaeabd0a7a2c1ca3b69d883f6a209fc4fdc178f6c
+DIST firefox-115.9.1esr-th.xpi 671607 BLAKE2B 
ef63755313e06f18f28d32e951bdb076d2748c020d98905b02dbd48c7a3d9ad3392fa4da73f8130c526781cf8bc872b2460e2345fca9abf995ac7f13c07829bc
 SHA512 
bff17ec2cf68d5adaddaf0919b071a59c94033cc1fa237663fbeb9d40a7e46a1bbf4eedb0f34afe0d5f8b12aec7b7fd28dca3421947822d7b057d43d352970c1
+DIST firefox-115.9.1esr-tl.xpi 525549 BLAKE2B 
9806063301e0e57b5a3b4a9d6825c3a5481ac904d2709f12ae34b1257ae8075146c7cb42cd2c79c9ed87c3a151c98d18fc62ac72961f8f9fba08032cc2e258fb
 SHA512 
4d04e092b6d846e514012348d19d71a9551599348a7f7cd06f01c9cbf980b2fe451fc2d05b04fc76cc0f4b69a8e827cce6b184cf5657e1cebb8f4694ed5c11f1
+DIST firefox-115.9.1esr-tr.xpi 611471 BLAKE2B 
b4ab4794bf2f2d019d71519af29b05a3edbe571c1eaa45c7341a93e3fc32022ad75caa74df891330e1b94aa92869f3a8a471f8dbec58ae6e91faeb156b92fca7
 SHA512 
0ea7aad7884b1a9e00e73e9fb128d6263e0d495d4954f5df630853cf20e3f90e2d59ab1f2d71da3acf0be3eee7985c22328e965cd7e1dbe9876fe1b53157de30
+DIST firefox-115.9.1esr-trs.xpi 496294 BLAKE2B 
ce68a01568c116c2854c2c80f182fe776495d2d05b8c806c1ed62b809f934ee953d6983d67607c9639ed0f835a329d6aa61bbfba25cb27134c6875cff77a7779
 SHA512 
c2f629760ef77e57d8149bfb5ee10555f33461637473b93dde58f859c1bd7d2aab4e6dacee0fc75cc621c9304418ddb00eca6f40b11014d864db1f7ef991ffce
+DIST firefox-115.9.1esr-uk.xpi 691152 BLAKE2B 
0e852aec5bd448e23b3e46b305a2f9f1eea45135f26f4bb894761934939c93dd81106a6db0e4ff88d3442b2b7ce3cb5cf841c82d0a6598cad66a789bf1bda134
 SHA512 
bc8dbf28cd134dbe68da3370524477621eeb5af70ff9938b2c396c12e4379fbd119198bf7c9140fe8301b6afcbd15c7a73674de722aa874270d8de30ddc2e9f0
+DIST firefox-115.9.1esr-ur.xpi 552292 BLAKE2B 
27e9f095c13844888c1f99eee9c5211edb015b5c760cc8488bffc09488bada8c3258e85a775bc80450eaf04b6bffb24d6702e293866b906d761df141fad767f5
 SHA512 
6f84a51318f973a3954b4655a2dfbd1c12e7cef91d69d623843e5a4037b3eb8ed841b56ac8551a07e1a6bd31cf2f6f87c20f2a1ff3ce117182116ed4dc3f1d89
+DIST firefox-115.9.1esr-uz.xpi 472954 BLAKE2B 
e49ede157d46100043fa93e21483501977951029cc703ddf4b823439453e08e5799bcc5aa76731faf31c1afd077ec19c14e0efdf3e9cc34c6cc635dfc2cd437d
 SHA512 
6fa8b20c6caa15513c53fc0890c8074ae5e4e313f2ca4c55f70dc3d0c6f72d55a9c1c6a8fcee793b7516b222676ebe67ab5c6865e760322411a490291978bed5
+DIST firefox-115.9.1esr-vi.xpi 635924 BLAKE2B 
f45987b4514c766bf8a047c90a09088fdfbf6847df6e9649c9385a24738adfb4ec08d414783dcd21bf93ca561077af59225c87b5d9c7d4ddcc8c442fc534c258
 SHA512 
94872f3b954fa99743bfc6f8c4814b75830a7e1eae7070b4f890d87ec77d64ee223417d45f17e3ea8def1bf08ca89b0a7f6a7e75e22c704e87ee82a8e38903c2
+DIST firefox-115.9.1esr-xh.xpi 413330 BLAKE2B 
fe5ac404da3a649d44b9a9b027e26b3c89da50bee309491a8b6a36053d87b0d2ffec87797c2a0f8e3582843d7f6611f0da7057b61c8f9df810990c593c1af043
 SHA512 
6d3e09544361db0dc25810e15c5106f51ddc8cdf75749c0aa3d8661196944615240b1454a418328a667dfeb223be59978ab10030b672efaa02be9d48bee7ca26
+DIST firefox-115.9.1esr-zh-CN.xpi 634780 BLAKE2B 
88d18c488a76102951e57ce0f1eb31801eeb60bd62f0072a206dc1c88c470fd547bb265017a1a21a353e221522ceda0249b2bfe67062f890a1c31dd61485b81d
 SHA512 
d49fff9b47d0f70efd499a51d7f77713e5229ac00b95711e653a0ee059df0df1983aac5b43f2716b267ed2efe64bef688d81583d8d22eeff98124845a3fcf387
+DIST firefox-115.9.1esr-zh-TW.xpi 639164 BLAKE2B 
13c9b46b00f9abfcf47aff0eb33af8ed5c5bc496782cc69101aa86faa0eb2ccfd37f300bd29223ece95722e49c4eb693b1a94530cfcb56e0a5db88258fab7ef3
 SHA512 
03ed70c173531b51243037fd6483e5d1cfc13c913922bf904089a7723143f62805ace58024bfcbc6cc3fe761c5dc7be75fda615f8f9274a9b8713b88891643b6
+DIST firefox-115.9.1esr.source.tar.xz 508070816 BLAKE2B 
5182972f45edfb9ec6b23cc2e869fe86237bd51bd23fd31058d03d9dc98f0ea2dcf57215d61d724e08f98d0e0771b86b5e5ce78ed03c3ac08fac60ed4377f890
 SHA512 
9ccaede2fcda13a07f98a2110bb8f99c7324601d66bff311f3070a669576a1598fe1d7de2d005d725d1f44dbe3934a9c0fd0b7950f60686047d4ce8d9d812310
 DIST firefox-115esr-patches-09.tar.xz 16660 BLAKE2B 
1dcdf62f35013b82dd70bf00c0505394b9277affcd1b1cbde92421778f4fcc146f536a546c2db8d6a70f92d40e4b1c96927fedec54383e6bb80bd9806d9b4461
 SHA512 
e003d0a2a5304dcdd0851b57ceb11993333326c8221d5d99555cd0c64090d5eda1bdb2a2a52e605f6094a3214ffa2238e43d57ff64eb7d424ff54b8125c16f5c
 DIST firefox-122-patches-02.tar.xz 23168 BLAKE2B 
bcb29800555dd5c919d10338ecaadb2e9591d2dcc8c07e06c4722bb95a053e5581b77212c963783d605894c6bbef4a88e44081c85340703ca57a1d567628cd96
 SHA512 
c1e995b937150a9e68a6c1c3ae5986aa9386382175cc1bf128c0daaf5009c684f5774fe4baaf7878fb7048fffe265aaa5179865a4d82095e609132258e83dd93
 DIST firefox-122.0.1-ach.xpi 455275 BLAKE2B 
e06da7ea5fc1ac1448b059ec7eac339338289a262a25fe108ede97c2d31e5a5fae138b2301c9e42a2be93a6a1bdc865590bfdefed06315a1dd4c825a808625f3
 SHA512 
fbcd98e8bc9d07581ea952bde18091718c3d1f4f203150f1abd87707be380f9a9f1523c57c7840c451b4fb8dc8c23a7cca8477fd93a1347e7e0cc27494307bf8

diff --git a/www-client/firefox/firefox-115.9.1.ebuild 
b/www-client/firefox/firefox-115.9.1.ebuild
new file mode 100644
index 000000000000..32073b9d61b7
--- /dev/null
+++ b/www-client/firefox/firefox-115.9.1.ebuild
@@ -0,0 +1,1394 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-115esr-patches-09.tar.xz"
+
+LLVM_MAX_SLOT=17
+
+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}
+)
+
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}"
+
+DESCRIPTION="Firefox Web Browser"
+HOMEPAGE="https://www.mozilla.com/firefox";
+
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+
+SLOT="esr"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+
+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: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-1.65 )
+       !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-libs/wlroots-0.15.1-r1[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
+       )"
+
+S="${WORKDIR}/${PN}-${PV%_*}"
+
+# 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! 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'
+
+       # TODO: don't run addpredict in utility function. WLR_RENDERER=pixman 
doesn't work
+       addpredict /dev/dri
+       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
+
+                       # May need a wider addpredict when using wayland+pgo.
+                       addpredict /dev/dri
+
+                       # Allow access to GPU during PGO run
+                       local ati_cards mesa_cards nvidia_cards render_cards
+                       shopt -s nullglob
+
+                       ati_cards=$(echo -n /dev/ati/card* | sed 's/ /:/g')
+                       if [[ -n "${ati_cards}" ]] ; then
+                               addpredict "${ati_cards}"
+                       fi
+
+                       mesa_cards=$(echo -n /dev/dri/card* | sed 's/ /:/g')
+                       if [[ -n "${mesa_cards}" ]] ; then
+                               addpredict "${mesa_cards}"
+                       fi
+
+                       nvidia_cards=$(echo -n /dev/nvidia* | sed 's/ /:/g')
+                       if [[ -n "${nvidia_cards}" ]] ; then
+                               addpredict "${nvidia_cards}"
+                       fi
+
+                       render_cards=$(echo -n /dev/dri/renderD128* | sed 's/ 
/:/g')
+                       if [[ -n "${render_cards}" ]] ; then
+                               addpredict "${render_cards}"
+                       fi
+
+                       shopt -u nullglob
+               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"
+               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
+
+       # 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.
+       mozconfig_add_options_ac 'elf-hack disabled' --disable-elf-hack
+
+       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
+}

Reply via email to