commit:     5426bc9c9486e9c8cfa028da7e8da7aa3c68a95e
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 19 19:08:15 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Aug 19 19:09:23 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5426bc9c

www-client/firefox: add 128.14.0

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

 www-client/firefox/Manifest                |  101 ++
 www-client/firefox/firefox-128.14.0.ebuild | 1380 ++++++++++++++++++++++++++++
 2 files changed, 1481 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 90afb8cb50b4..42adf94fa61b 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -99,6 +99,107 @@ DIST firefox-128.13.0esr-xh.xpi 452433 BLAKE2B 
c330ad76a270e7c94a9e37d3f3d6e6cdf
 DIST firefox-128.13.0esr-zh-CN.xpi 686325 BLAKE2B 
de94a7da3f1cf245ec7f1863573a57f46530dc38feced9cafd647871baacc481ff479452adc8baf5a47d7d663a7e1f0e503484c0e3afd5b31fcc5c62567e9f4a
 SHA512 
5af6435f6d5fe2cef242410fceb72c7a0047f0bdeac550d0f473a69756f9cc4050ace096e8a52964e645f1b8c15c0dcf7c1db081861975a63f2711b712b997c5
 DIST firefox-128.13.0esr-zh-TW.xpi 689138 BLAKE2B 
213acc88fe7813b792999815157c07fef91f73c1592b7025aa745e0c848c85d7bdedee7bff0870cdaeff217123b355b45be46ca66cf1dbe1410f288b6efa3bb9
 SHA512 
cf0db4539410ee101f853ea6e4eca48c8304506c0168846b29ee630538b2c628b03693a3738b24e9bafe5a3203ceff487830a8fa2138542811a337996aaa0024
 DIST firefox-128.13.0esr.source.tar.xz 560782432 BLAKE2B 
1be2fb1e76167f83061fa805dc09b2f32dc7c813655cde72eea4b0ccc44a02570a78e2f177c909f2faed96eed6f47d08b783cae3f19c1d8e44dc8e531eb1ecc2
 SHA512 
9e6f3af535e0904219bcac947d458789cc43cbfaf476ac287328323662391eaaadeff57b244599acf3626a2fadc0bc41b70d07e33ca6af4412006ad01ceff034
+DIST firefox-128.14.0esr-ach.xpi 482242 BLAKE2B 
30635f4251440d12bf07b704856bbaf78fca6b4dfea7a28c05e8be1abb1026a526ef98c51f0c2ec3382d381b42d401aa6714404e4591756d91c403a365c63011
 SHA512 
b0836eeb7ecaf61ac85b60ff35bf439d0b130b24076684b6d79ddb6c4a47be0eb822da42a5ddbbd5c61ef302701c2e0310158e0033ebe17431a4b20f9ee2c535
+DIST firefox-128.14.0esr-af.xpi 446594 BLAKE2B 
a066b5af3944ebb9853b4009fffb1208ad04eb01bf8ffbb39b4887fe520f04bff6298453bb4e93e38f40ff54242dba7d5e83535780e935e6407f451e0d3f332c
 SHA512 
ccc3c484181b88ccf61fcadd74bddb84af116f27c094b2a18ce9697534e6d1e90c1d290260386deba7d9f0a3f6e3261df83c7e4f15965931f9203bd2b6312b6e
+DIST firefox-128.14.0esr-an.xpi 526057 BLAKE2B 
740cfae51375c564bff7e0ffccc28919d4119e0761e98ecd198b4171beead9247649c013fbf8c90680c6dfa264d45accdc03b6b55aeb0bae05567a2c349b38d7
 SHA512 
cdc7858dd510fe8d920413e3c317da138a808f9ff2864a802fa412ee8eec980827f00baa6b53f4f455df3aaeabd74c4fd74dd25030eeafcabaef4ace9de60af0
+DIST firefox-128.14.0esr-ar.xpi 650457 BLAKE2B 
a0c2e0dbdb0eb66f9e90283a363834f8b574f464381dbc649c5a6a1b77a2f161df7214857166ba4eeb1cfbb66769281e9b5dd334aa0001748e2f06e98ffed7e9
 SHA512 
cd7f6f57ef660eaac8697758d483303543de6cf95ceac2d436b50336501e3fc947964a1434ecce32e0df03db931a17eb5d79a8d7829c3d96f18dac428e9ef11e
+DIST firefox-128.14.0esr-ast.xpi 508564 BLAKE2B 
8b0265ef8de71016caf88943638fb6ee98389178e4c516d8d47a05d159f1cc431e1d9be341116b51e44fd7e954fafb98778ecb8915424f7f5bc62a19894fc7ef
 SHA512 
b87d5f42824867ee4861f4543247e2896d969503b903f668489df6b6a8fb658b980e4b3e8a1856ef1cd0d023df1b2549602d11a5182c291e82542407209dba94
+DIST firefox-128.14.0esr-az.xpi 509838 BLAKE2B 
23bca7684db3d25f01c21c111bd5bbea8d9ac52d8f65c2f9caea7cccbd165ad6e73a6b7d3b7d0e65bbf7c990c28937555fda09fce545d0786ceda4807494fad1
 SHA512 
acb630eaa7059b1eec744d35f5adb7a44fbf058edbfedf56099bb8a7fad9e7c753f3f8eb215834cc1f15cb12e4ef47ec974266c5ea4a5c5a59ab677b162f89ff
+DIST firefox-128.14.0esr-be.xpi 748087 BLAKE2B 
cac216e90d166f81a290f31b779c1b9dfdb57d15ca11875f23192b95aae202bca20921367c8d3a4d08e2f4052f217b3d1a894179becebe103a1cbf83b0f07977
 SHA512 
337085fd96d59a44e4ac1ef21cbda76672f50f14706b1505487c1989412fc62db7429082beb27a3dfb326f2a7e428dd573c26f5573cd8df67fbd4da50211c310
+DIST firefox-128.14.0esr-bg.xpi 672062 BLAKE2B 
1fbc0a9ef5497607927552d6761c12fe0688629267ca5415064e94e9dcc0516fda7ff2163e74a738ed65dcbfc4457a14efc36aeb489ac6728c95ceb0b686981c
 SHA512 
4606f4ec4f206fdf1e135b9d9d1b5b83c5b409e1631b30705f8162f2159bdba86026d7b88fb347efcf6259bb2f2fac4ed13456310f5526ac74b568724ead0874
+DIST firefox-128.14.0esr-bn.xpi 624740 BLAKE2B 
5c3711111365eb95400c8baac912ad57cc2ef0657c3a7567064317f08f840fd0340bad95204ae7886b43afb7e9c555ae79e8f0ef6f09629b47d12463ef38146b
 SHA512 
3a8c06587b38d0f1f6b5b78de42f43a54cd8c15de5bd6ac0db5da38586d82766311e6906c892369bcba9e80b52e61e71e45cba003d65440913bdd45e38fe8bf5
+DIST firefox-128.14.0esr-br.xpi 598755 BLAKE2B 
43baebfefc2458cf9a76808c81c06902a2ea56f2f15865a30a0746ffa5f128bf383a0aec0783adfb09530433a449d1e2098ea64abe2d0be7fc2711ac170ca59d
 SHA512 
71ce7b6879d15fbbbb9fc39a91bed51c02b038d27ad6e3789a6bc3d3883733a4b251613ab4d844c89a9da095b9b8d7190b628da3212a4c9a084d23b3f53a6358
+DIST firefox-128.14.0esr-bs.xpi 566004 BLAKE2B 
38c3e50edc457827b19e244b85156d1f55bd8f9cfa1b9fa4a31ccb01ccfc54da841be841db956e29f0836631a002d91c9bdc2cff420d34efb2cb69c0cd305d14
 SHA512 
2dab54be041fc8c690b41f424438931f41bc9e10c2700d46d92e86b71e8b277f28b26835023bddcd36943e9fad41021c7d01c68ea5eaaf48d4cebe7c39493410
+DIST firefox-128.14.0esr-ca-valencia.xpi 561150 BLAKE2B 
2ee2c208e07caf01ccf001bbfc0e056dcf8f94623a09d2182cfa8e41464f8a391911df7b7b8fec77ea92d074853e43f46fd07b27b3e3966e6a44f7b4c648f111
 SHA512 
c340ba18423f31c0a7b12685cb068f788b1cd408b8da0bb5e667d464f2b932c4903148442bfed38e46d55bb54076f9ceb7aafd468a816f1cdfe568e407d400de
+DIST firefox-128.14.0esr-ca.xpi 609974 BLAKE2B 
5c28f8bc6289ba283dd51b7fd3cfe2a46e0723cc2700e6b3499cb3fe41c81537da235c7e167404c7c8517b3a8395f2c67b0db86649efef4aec60fb77435ccb53
 SHA512 
4edb7299c9202a124ca1fcef756ed8bd3d399a29a7a895e3dd3771a84d3d56a4d2f94ce13dfc94d876e6ad8402cb3353d168ecbe2a0c82d8558f1f32724c461e
+DIST firefox-128.14.0esr-cak.xpi 601493 BLAKE2B 
49e9ed8ed05768707caa055ee831d81b0c4b6f198d47dbf2bb663788582ba32795a8e4937e59a2882710a2e63b5c40aef4a39cd5e45e3707d1b98ed64b4fadca
 SHA512 
69f4c72387860804d008f1bea6d03337b47e6d6252d5c9bb3ab336da3db32377a6b64c1046adda8c5bf38d2914289a492167f087d8c5e3a88c4ad199be94b726
+DIST firefox-128.14.0esr-cs.xpi 690643 BLAKE2B 
a5c9f79b70aafd3778ba9d59902d1077b7ed90639a56458f401c8da85265958bd6d169c0574f0372c454fa39c0e93d9b7d76e0945955d4a6ef696bec77b168d6
 SHA512 
1e211a4c2bc9bda87f8ddc278cbaf2021b2eb30439bc15e79c37db1515cd4cf7387b040e84db8b3a6694a98dc5c954879a2d002fd7fc4c7c7f5e90797bf42f9b
+DIST firefox-128.14.0esr-cy.xpi 650604 BLAKE2B 
bf462422f29cbcf48f22926264a259861da3467b4e662eb5acb965f87bb27cbbd5493a0b0394edc73b0fb23e34bc75a21c0ca201a4a53592f469e3dc8331629d
 SHA512 
c002a7f58e466396e4c191f227b94a020e91416d402c75ca4c2845b2c6afb6348fc914d5cb90a23e54af31dcc02517431bc555c59c9932fad3369d5a5c9e3377
+DIST firefox-128.14.0esr-da.xpi 638632 BLAKE2B 
ad3469029d5c109a805e3bdfaa234eaf2f1df658552363a17ef61216bcbb99c44e0b4af7b22b80893c0f9879f690aa3c2fd7d84b8856162b9c68bd51a4ee43b9
 SHA512 
4c53c0191c464d077ab4fd146842012667373013280e0a06207c0e050659cae9fc24dc9ed3b6ed6ef899d17d0e12d5456cdf0e429cd77c843d043ef04d86129d
+DIST firefox-128.14.0esr-de.xpi 663134 BLAKE2B 
7fbffa65f30946f1c78b66fed713d4b7d1f74845ef53aa770bec9d15b086426cd5e4a4690b2b35261091ef3ecae6b97ac8d287ebb3610a90f5662b9b3b343213
 SHA512 
f05eded3f9bb1373abbddac65807325b91a6e29e6b57669aee5f063d2442c8b3622c611839ed78aad9fcb3594b09f807c883b316f008cfe7abfcc8b008699038
+DIST firefox-128.14.0esr-dsb.xpi 679871 BLAKE2B 
5321be197585f111a9234fe35f729f4473919c60bff2b2fac172ac2d2d7ae35828bcb41ceb54fdc339de3e885c21eefbef822adcfcdf905fa5a667bdf74dc925
 SHA512 
cb1e34d9f72bbbb297e71644e04aeaed13c8625407e0519dc6ec681700a75d85cfbc9afc554cdf4f53cb370c8bbb968eea71de3f4aa5c3ec595cd8a9e01a32b0
+DIST firefox-128.14.0esr-el.xpi 764541 BLAKE2B 
27e32d7ee3cf8dc6ce16818d1dae5d66e9c1006b6e701b46228d723a91c253d34cf08677a0dcf32c1fe153da1bba039a3617308569b9dc725becb3eebdf12703
 SHA512 
3d1f8b645a3072ed1f334a4df997081e7b585eb3b10526a8089cdd3649794150ce3bc6edf894335c221070b7ee4dd56eec986db769c55becc2670652a9de2954
+DIST firefox-128.14.0esr-en-CA.xpi 610420 BLAKE2B 
1f7da07356a18e97a702349f8f944e8d132c5283164bec40d348d9a485b6131d582f6c3b3d8c101a6e0fde345bf121e0fac7b8e192163be7cf5489e70abd48a8
 SHA512 
83e202f6539305831b3fb007775def6814e2bb6d2e708a4f26766051bdd6b8332d1da7cb255cbdda76c1a2a9f43e507fb2d110cb475b5a5aa2625d94453440b5
+DIST firefox-128.14.0esr-en-GB.xpi 610788 BLAKE2B 
f7967cf491e7c36a040e010b6014a37e36424619d4f3515a127c3d1c3abf9f8eeacbfed5e705e895b2c613ded192b67ad63edcd5c278ee0c3be182b0f6ad1782
 SHA512 
67a05cdeb3444ca8e659766454c69e879e198ad926b113250ce436426f75e3e0fe07e7ff11c1a749ae92a1c3e9ad0cb3781e172a7a298041767be47d0cd3b189
+DIST firefox-128.14.0esr-eo.xpi 643526 BLAKE2B 
f19e7755f224106bb86c5b784e2bb16fb28860c471c17ca39f778357c45c32de28a625bc80a7f201126baf88673bb79125b8bcd14295024fb376e23a4efc9ab4
 SHA512 
96a2b47f4dd469251274af9b55137e34f13bee8a938068492aa4752e6c1231b1bddf01cf75e081ec3b1228cd16cb95b09c2cf0f752a5598a9decf56fafc017ca
+DIST firefox-128.14.0esr-es-AR.xpi 655632 BLAKE2B 
3ba8c951203b574bf3594cfb681fb12dd8124da7efcb30ef6d59feccbbeda0092b5d89627b6a420830fb32817ba06dfab89ef709fdb3147a3d3b59a5b28df8a8
 SHA512 
7bc7416ff77aa8a27aeb5134ade38cf07790519b39e22df453a1a9ba476c8d93793fc81716567192d06f3c79a1a68d53e8ba1ee89716d3354e7902db56a8efee
+DIST firefox-128.14.0esr-es-CL.xpi 656071 BLAKE2B 
8090d82da53a8671a9108f671a864a6a9d71d32ebee09236351058e5d27a6aa9015a21862e0936dd9882707444dba3d79c8376bacd231d48c884f8b9faa1753f
 SHA512 
d88b0bd7c2a62abc3668149859ef1bf99a19d04ee298aa608181cc6f663b5032d3e907f8f82f0196b2427c8148176f5bac4c6dfecb50bfdb14c1e384897ba16e
+DIST firefox-128.14.0esr-es-ES.xpi 655186 BLAKE2B 
6db65d480271f2aa52ec1609d4a999c211ce5cdd79bf91abdada60cf138eed3073f6729d0debe26aff4abe79dfc1da15b84c806fd33715ccad755b3808f2a48f
 SHA512 
cff516ea0a371e4d3185ce4c6a1d6d2cab45f08954478a22d6c3b77fa294d3954e3cc8f7909918dc552dea14f6836478ea85684cd20c7a852ab84e389b1bd840
+DIST firefox-128.14.0esr-es-MX.xpi 657402 BLAKE2B 
fe995a34e2996bb0d1b393215e3e5b474ad858ec008e08ba32dd35fc8afae27b28761ae7c3b9470b2124e942fd9f250c4e15712a95e099e66d4e4912221bfeac
 SHA512 
7b2ebaf2a586fb585452532709733a8d374fa42289455e9528ada74eba836709a4be3de236d3af16cf183e050bcea04b067ed345fb66459888d091faafe64802
+DIST firefox-128.14.0esr-et.xpi 556260 BLAKE2B 
bae38d25b3000d637ea44c80bb07f879188b95416ad9951c105120e4a790178a6d0559d08bbb6892dd40347d89394443afb72288f7ba19b547788e576e2b24a1
 SHA512 
25d73811d6f8a533dd97b0bffcc0410eedd28ea5fa8acf769a1d3174eee8e82b0aa9dbf757fa67d4593e3e098990f8ca42269a2ff9b967e65a1a939e2a614fe5
+DIST firefox-128.14.0esr-eu.xpi 623950 BLAKE2B 
b4958415df2a9a533cc497d85e0a6b2e0e3098264d0c143ae7a011958781a50fb86c4fd503f95d5b083a346d751d20d70d346b151d6c01576e0c835e3e5396ea
 SHA512 
f0cd2b93c8eb658ea9a2797716994e353ab1d5845cd37cb1496b4599e6adb30fb72b9642f17949975bc1e986c9ce4572379574ff170a0d7a180381ce320e77c7
+DIST firefox-128.14.0esr-fa.xpi 631012 BLAKE2B 
bdf9a65bbe71eff9e9af95295a97a9fc0f7b4424128aea1952faa41822047280680f5b3cf06a0820e0971088a5226cb90bf41cc12843cfd5861d17eeeba1cd70
 SHA512 
e99ea8a3792941733323e01acff339caf8e2912e1ce5ced8163ac7882087782ca1d88e1a234f6dc7f1a2687e19a5fd3122ac0612483b1173adca56c76497e78a
+DIST firefox-128.14.0esr-ff.xpi 497849 BLAKE2B 
82cc385de6aa372bd7b91e6b1086c7805566e7d219e3e3a1920bed8bfe0894915e7aa031bd0ef031836937ed1dfdaac78ad4841a65528f5bfecb81b1c1f9056c
 SHA512 
64ad8152d343b2d3e4ebb4a2fca624c410478580a9f1a68c068f76d15214166c972c1230ea10ee27d0f8db23251a45bf50bf60b63d9e5ade588a539709901321
+DIST firefox-128.14.0esr-fi.xpi 633882 BLAKE2B 
97d2b2c66084b5bf961e2ed9db9dabae260b69d5e4d4ebb06255d883a43cbc6c8ff21d8bfad78447dd1e3f9f4bd4bbb0dd9a723f73f726a3273d39155e08b766
 SHA512 
b04620de5d9198089768a433a26ae3e216a153d8c1dfae689aa941b50118b1facdfbb90e1cfc9c2cc12694f884a334930ba1c24488884d62e488a81f16592c83
+DIST firefox-128.14.0esr-fr.xpi 669628 BLAKE2B 
89d38637b3c2521fc94ef1bdcadf53d3fa289b1bac13d0afd0978757dc87621c106747dde3ee3e4d9104f429da5e5ed34b3d1cddbcc3fb23af97252e4f20155e
 SHA512 
5f0b63582fba04a68c8c15c8b995527e094346e067f9d70519a14ed9dbdddcfe62c46c06f71e11102c224aa04b2744daff865ee047c87f5d25771f74e1db54db
+DIST firefox-128.14.0esr-fur.xpi 651569 BLAKE2B 
efcbd00e84ac1c59ef2addea861d27292d222bae4039384251b9a52dbf18263ac430e850098ae368376375bbcfb6511cc008c59ecfc91c1e876deaae21ba8217
 SHA512 
a59d69221f44f77b01ac28be3a23e573c3cc05d4635b773aeefbe20c29e0b69f1d074612c229e4ef0abe160b3707e0ebb24cae6284f7875d3b292c7bb768e1e4
+DIST firefox-128.14.0esr-fy-NL.xpi 652082 BLAKE2B 
09b9dd2c39b475d20d72fdae5f3201845ca2b633a1761d3d3872e7aabcd8ded7015c9bb6aa518189d815c834dbe957ceed8a886f3891c5920e190005d2b674bc
 SHA512 
93d44838baa83525b5d6236de7ddbab777b64f766852778c296940c417be41c1668c496325669a6713e806810c36d0cafad0bea2bce14a675bc62d2b4b15cf34
+DIST firefox-128.14.0esr-ga-IE.xpi 490831 BLAKE2B 
81cd1fef26425ed11994cae2aba6304c51b594b0707a18f4dde3f5218ecc64016249fc9ab8e383975e435474c15d50098bb379a59cf1b0260dda56fdf61b6c5d
 SHA512 
95d6e330fb196553f5890716da707afb92ba38d12b93e03e7fb79dcd8ce58f5a4215dc3aa7e1be717f0d9d26cc3f19c57ba3374310fc966ec94d5fd7c2d745fc
+DIST firefox-128.14.0esr-gd.xpi 609627 BLAKE2B 
4429c0fda187e31ff2e185506d7eb57cd3f7b8d75ea0ae4ebb0eb57f0e8b170cd6638e2da771afefd9851a976828a8ca6415d52df2d866ad1dbc37001d1a883e
 SHA512 
858de8ee8ca1bf0281090d159646237f7f54955d288fa84990d0bc64a4b75f82474b45ca31d991373921b6e77441284c1d3aeabc1533303111aeba80ee369751
+DIST firefox-128.14.0esr-gl.xpi 615552 BLAKE2B 
016106f3f25bfb494c0a5589c611336ad58feb99f560b2dad67a7d8f1efcbed49ef3d78f603f9e2006891a2928985743d45c74716a450f0c78c83615581b28fb
 SHA512 
b7bb15dbfbdaab8102a06c378874b1adf4e1f98a2016172a138bb99d97d3d7764dabd3c54cec374650791988a63a3f240ee0ce57d805c11181ab91c35180b2a1
+DIST firefox-128.14.0esr-gn.xpi 659912 BLAKE2B 
e3aedfe89c3d2804eed8173b80d46389dc8ff728082a151fe420669f61f01662ca28557a500788e849e561aa81f7a883cbc3556f03ed56708c6aa04875434528
 SHA512 
c249b8756f850c07f85051bc887bfbb6cce3d8d306524a28ff9a47123657a663a04b09899d736233edc9b3c1b7a1d9620b136bdc7e7c9800f56f40e9343dea99
+DIST firefox-128.14.0esr-gu-IN.xpi 552338 BLAKE2B 
8e5ab3db7d66e917c5a03d5e79344985c8093a5894074f980987220d67a2beaf82b494af10fe4f307c0da2644cdcf09d9b3cf75c6add496c5930853fe51a74e2
 SHA512 
ab93d9676d48ed031da2c020da8278750463c9b47277ccf23d7fa2605a2803105988585aa6f5a3f3e5245f2c559807a9a3e2d690b02a93db20d9c30e104f5ca4
+DIST firefox-128.14.0esr-he.xpi 659483 BLAKE2B 
4ff796526c3ec5e99e6a1fb4cf0d00ed22fb866f2ea31738af0207e49439429c30ac43af092cddfe15ab05227cbbda779b1fb9f53f73a0798df00bff454ded03
 SHA512 
6535df0475bc83be5a25ff7bfa144d1679f64ed9ed93b41037f321e48de4fcc3a1a446a71aa5641a3ea6af5853b08137f83236d788cd2e268bbf5b627a760356
+DIST firefox-128.14.0esr-hi-IN.xpi 578986 BLAKE2B 
cdf7c3edef78f1f2733d676b0925a46d0fba15587e6785d770684463df37ff1cf50848c172db5cab710ea5a262c1f9eb2fe54c2900c12ff41e9e29de0e148eea
 SHA512 
8ea4765fc562c5c6b8ec46da5914bd44eab026640b68299d061267a54d68b491e4f365c170b373b6a0bc7bcfb11900fec1db5a28b4fae21a93062ac6fc87ed36
+DIST firefox-128.14.0esr-hr.xpi 645457 BLAKE2B 
dbd2b6dca13ca101c41025fdc2bab1d98cde989451c70b6fbeab9dfe2a3b648353efb9f2986812119afc1b839033cb617c4eac577917ed7862790330d79a8549
 SHA512 
f44c02e020972559e357c4b5a5a72ce6e8a88452d07f984572f5f9d514c3e9f08fc4f1321b2a42cb984058f74038f03bd88975b812b09894b0227ebaf81101ed
+DIST firefox-128.14.0esr-hsb.xpi 675866 BLAKE2B 
2ab8f53ce283545ebeec002d85502dd69d30e353c1d914a8a933f1c271acb57e31d57ee3e8517e9cc96bcc0085b1907d68cfc2842e0cc83d02792148366e0327
 SHA512 
eec7eb24923e6e2f41f30e1de49dd14e2977f0f62078181d360ec1a82dda4c480bc7ec95ce64cb77ccbd7a82643a3369042431fb00d15bbb2198e9ac0e5a39d9
+DIST firefox-128.14.0esr-hu.xpi 679679 BLAKE2B 
71a6c3feb908fd3c86869a27bfacea39b98f276c8a8ae6a5473174f890a64de8012075e45ce8e80435997688b2e60deffb9d83f7d25c3a26ae376f26f37fe79e
 SHA512 
77fed5000653ecdb3ef0f385530929622c1fb901501ab201412299558187c72ffa46a88c4370a2a45b367d38ba4d268e3c0d4132645f8d4f56d56f4d28001b90
+DIST firefox-128.14.0esr-hy-AM.xpi 664455 BLAKE2B 
7162b9d454096c1d1341c2512f492c3fed8796c3da6051752fbc55d9fbe664a17aa168a3d428050dae577f55ad5820e7a45d29219c56035bbde31fbba8a52d60
 SHA512 
a91f4a745d3a99435b8c31a5636dc677a8947dc8cd36e6ac8326e6bea1c5d3da460306ffbfb103e934a152a0a8d6cb9f5f7011b45590f7dc7ce772259e1297d0
+DIST firefox-128.14.0esr-ia.xpi 637955 BLAKE2B 
062f23a492b91916d69d070d2cdebf725ee7960b6adf50bd4a25f28f50b645c5da4c1e66bba91f775d6f83a0e5fd732edbb0fb1747616761f26caacfaac89b69
 SHA512 
806ed9c6bf1ee4a9b763da9a682d3676d17658c090a796129272812beb6cbcd1e5ee979970e1fef86612ac5a3491a9449e817890650acf13707932263b191c28
+DIST firefox-128.14.0esr-id.xpi 625997 BLAKE2B 
600e939f3173ce052defd2bf285f9e0d06dc75e52620db9e206b2a8e06dfb77f7394b086999b63b0c04be6baea0c7f7a64b83899c2c93aa3f836b56cfc9155e8
 SHA512 
4671f0eefb2de7d163b9c5c1578be6764d0bae1162b3f96b910029bb73dce4e48ad82dd14399e545dd34f828552360d1d3863c155fad0b54dd4b165b9a822500
+DIST firefox-128.14.0esr-is.xpi 646733 BLAKE2B 
26f2eadefa364767c95011dfb0a7c26d24e5fcb0f60277ca9c6ea1d1e6e2afc0ed1013ac28884730c2228c376eb329aab17b1421bf31c1a7fdd572507ba72dba
 SHA512 
cc9dcffc21bfa2a0393a2a07984754b9609337d2502057d464e929aa89367b0c765c266dac012999193201e05e14c8a39f77d8a41bd7fa7824ba11b74968e936
+DIST firefox-128.14.0esr-it.xpi 648861 BLAKE2B 
a87cf55c916a652934441100fc8ce3c4bc85d26a6ee6bfa7cfba6023d083c903058c32cdb7f381c8ef3a445e6a86606a5d3fc983b0d09170a2da550c16ccc9b4
 SHA512 
b9f3fd8105d98c335b807982989313f07a71f879523d971234a6d4c5a063d099c1f597e5a7a744c168dec74ef8b7c943bbcbb27dbb645309cbaec4c86fd91f12
+DIST firefox-128.14.0esr-ja.xpi 704125 BLAKE2B 
2c30827be7576ec63820b4cb2f6eafe14f71eb3e855005d704da0a9206919fc1f71505208fe8a014fefb27cdd9880ee7fbf1c53c0a6e1ea12d519b55fde2edb7
 SHA512 
a4f616d6212b7187f348a5d5993689cba2d5ffa5c59af6c84a82f14ea4531aa73c5dbf8596a53c1c6645687d753b2d5756fa1d7a7c281e233cce31211982d02d
+DIST firefox-128.14.0esr-ka.xpi 714514 BLAKE2B 
cac962dc16ca27324c10344a8da7a27f7b4c239c5c0d7297b9d59ac76a2f27e6ebf21f99f86db971ca4781e87828f922e2a080655d930afe0d2ca844d4a0f71d
 SHA512 
514597adea7c0a9e5b3c870f30617b9c6ed3a5db7296ef65bea6a5c69d31db088acd4f09e116af3b362447a3ab5e8e02d133526d117d1d226229d98bd9713cb5
+DIST firefox-128.14.0esr-kab.xpi 626276 BLAKE2B 
cc9c93e15b10631b6ae406ce333b2993b2ae95d29aff358668b344499faaf07a0c81a40f46a2ef5a752ca084caaee6532c6851a75ea18ff1ecf37e70836b1ccf
 SHA512 
52915391fc33baaf0acb72a7780c4eae96f546409d7ffd612915d763c36761fd397bc1523baf7562a203b8b579ca4cf1b5f8b189001471200129dbed792fe192
+DIST firefox-128.14.0esr-kk.xpi 734549 BLAKE2B 
9cc6bfb66986cffcc5fa0c6448f902fceb3530058a5d633ff5f549e20fc1757165014bb4fb69c81b855a9f6f914d673c2caf78b55a68b2465abd3831e5bc8f1b
 SHA512 
76a5476df87a6a85910ab22d2f25c27ef1d190c5ccb490df9bf78feb7cb33cf9a3ea4054f96b3068629a0dd35a0cf7f6b124b076d37ddd1fb99d72fcaef34c3d
+DIST firefox-128.14.0esr-km.xpi 543174 BLAKE2B 
854ee493a1e0bf16635ca31851015ecd8faacf1028914f4430fd5894ade0ea39e1a2c59e363776d632df1c2790112b1fb3cc0d9dafee21122883b25fec0f063d
 SHA512 
7c7058c03a290a371c06f5461e774944b0c0d8599d62923ebb70f672140ba31694d729a97fc8f1f95e7bfb3fe160b93918c7c43224765ecad6b0d3753862e344
+DIST firefox-128.14.0esr-kn.xpi 520332 BLAKE2B 
d3938d93e8bea92cd1be2dbbba6d91e5fba5238d4b2c3c8ad3727063083f34da253cfe103e49b59ed6631300ec7a4dc0cdef483a11b0aa481703f616414b8e8c
 SHA512 
c841f1794e088c89a3869018c304ddb9dbc494eb77058584009408c210bb9a15fb9ebb22c0922a699ec9ebf3f9e0ddf97c5943d66e769695ce2a884e797ac38a
+DIST firefox-128.14.0esr-ko.xpi 690557 BLAKE2B 
edcf351ef22c01632d71f8f5e5673c779b2cffb62a25c2af062ebb8974df46e03d303a5ab8f40d748f7bc34255fe4061272d3bd5330a4a7b5d14ff2b6d9a8b90
 SHA512 
c981723151086ae3563a274c60c91a727b2b6fcbb349b81349afdc9291ede145f23e90d991af35435089fd32e672038c0b997b4f3adf01f5388ddd616a65c17e
+DIST firefox-128.14.0esr-lij.xpi 506299 BLAKE2B 
ea05bb1941b6ad141609d4bed36a96ba156fe711a3edc9e1e6911def483172107e54a77b1017c19e2bb342bdbd324b6e56afbac47875594846384622010340c7
 SHA512 
3e903879edb792e3dbe178a6d93ab05ea0ea7aac092192ecbe5344948e233bd4661976e8bf6a25d194259cd6e4f4fb2597bc49612c5754d59254294e7facd77b
+DIST firefox-128.14.0esr-lt.xpi 585999 BLAKE2B 
6f24c1bd11269679f75dd441ca8491360b1f623b5b08743ca4185eb6d6b19b9348d165e10a13f6986733bb076ca9cb12a9ba1e16ec7e2c14f1eb045ea1f09f8c
 SHA512 
9aac27217b31b16dd3ff381bb8fbd9ad852257e656ce22b3afb4961f72148589998374f95dad914135f5d1fbbfc432eab17f38629d1f7c15e3611dab336e219a
+DIST firefox-128.14.0esr-lv.xpi 595101 BLAKE2B 
6f63fa845919ac9edaf3a155b748708677cfd7a5c19878c012123eaa448141d78cbc6b4c5e90cc67a4077a83eba2a790205663f45825446ef02d5c76f56a798c
 SHA512 
6619eb8241c1cdf21eabae62b4751562a0e5d165807f06955e1f166c41900db1126bf7a35dbba5482d62d300589c563e432bcdb1fbe1c719e3f209c78ccc2f5c
+DIST firefox-128.14.0esr-mk.xpi 511083 BLAKE2B 
2302b90ee98bd71d8a905012aa7fe936d1576dfca51e5920adb11af8baee821da2ed0ddaec99a694565cbb644545b3809bbf3c48d6b0d1cdf5211d5f90baa327
 SHA512 
49148ed9fc329f58b00d2bb98b908ece9d8f390a05c855dccaf1c555aaa76fd469fef9f4f0187a9042b603f5d448de0815f4c80b378a9491adc151b0e51ff547
+DIST firefox-128.14.0esr-mr.xpi 552813 BLAKE2B 
8304c63b947e667604f50674c1e80797fc04748d5b6ea6f2c0e72c17bedfbccbda2b8c80de09ce04d12baf4fdd3e573a96d8ce1157013288c17cbf9d4ac4ff88
 SHA512 
3a3b34054e191039f66aa99ddd29a21ab5ca3dcf8c9138bf3e5548299623a73eac1a0a973983ae34b6dcfe8aff804c1e7463b3412d441e95d000ca8a2e5c264f
+DIST firefox-128.14.0esr-ms.xpi 477965 BLAKE2B 
5853296f98663280cd2b5a6226cbd9d44742fb43f75e7af3fcb90e6f3696ac3deddff9984f8d2924d5ed6c5ce4fec948dff35d35cb2551d0d500fe2e100caeb6
 SHA512 
697c6f5dba41bb96ef2fe26f97b5d710508d79dbd3a08ec5c063d53f2e5dee8bec79a179c7abc6e2500daeafaeb102ff526d88f10bb5131ced612e771be7835a
+DIST firefox-128.14.0esr-my.xpi 540060 BLAKE2B 
dad888b48b99fed310611883ba3a01e3c81b120ef8704c795ba22e44f3a0ab6b6a967a07e3239ed93bc931fc8133e1e0b8b3bf35e9636f97f32d16329957394d
 SHA512 
0eafac9d8eeb974bd619e692872c5d05fe910a7ab1272cd6f2fcc838ce9ce8cf06e57c63ecb998a28a75de97f04c3dc7794be134b4eb592e1098cc791714fe5a
+DIST firefox-128.14.0esr-nb-NO.xpi 627685 BLAKE2B 
940314d3052a79493e902fdc5b886107d0286cdd1f10b49cdbd6ea8217d653bf5c8945f92d5f118160d27dadd575466d6099c067ead7355e9e665cef667e3a91
 SHA512 
20868b653f869cfa3434d34b9e9a108b612fbdeabbb9b62956074a6897bbdaa302e75148bf02df8e32b4f62dc46affb1873a31b0873377b1567340b41cdba299
+DIST firefox-128.14.0esr-ne-NP.xpi 543838 BLAKE2B 
b19b160f77747fe750380b749d8e8f6cc3449ffddceb3cfbe29b9785a3e486c7914c043e3a6917f6159d2e7c3aa0c5a06087cb01b915892c36df835bcd60aa40
 SHA512 
0996d6df93d5e91882caf4423a149f6a51a9f37ecfefb9343ea851e13ba10491906a5eb16921b642159d1bb444b4390fcc6493711bfe0c5f60f6b71532cc9d21
+DIST firefox-128.14.0esr-nl.xpi 645186 BLAKE2B 
644e4cd196207b6a309916505dbf01608d54f392f35d6e9d5f67ab20d7eb5ce83aa3d83561f13ad22e140aeff76aaa1d9b84b667957fe80766336c421bb5a8f0
 SHA512 
3e9e1281899f2ded276b725195b17670146982bb1179b49c027199d09d18202dd3aa373c54c305bd9cd144c975c1318f322db62ba92c65e880a2b3a94af2516e
+DIST firefox-128.14.0esr-nn-NO.xpi 630297 BLAKE2B 
5ecd8508ec06338ef5d9d1d9ab5957ffae1aee8cb7636e01dedf56c53e39145d6d55326b2a82e4b1a2308434d8e3649b246b6c28fb12a273f10d1f848075f838
 SHA512 
74c5fdab5e77d62becffa53624718cb9900af9c98e3311c247eacb09ecbdd96d3ec8bf34b1489cf4e114d2f8fb553807f490e83051fa5e70b3c614d8c6edcbda
+DIST firefox-128.14.0esr-oc.xpi 626833 BLAKE2B 
32c787996fd3ec35b9ca0fa9f70fbe52bccac3f130478d2f2461f5030d66e8d82f80dbed932381a49d22eaa25c6560cb2a04063134fc564f23387fd3801d90f6
 SHA512 
fad47ff1b29acf285a5ecdba0a39f1b408175a7e3377de12fe2aae9cc1baa49abd7787e87124bcb920ad8a827b5079512ac142095bfd814fa0011d492f857a56
+DIST firefox-128.14.0esr-pa-IN.xpi 726725 BLAKE2B 
7c1127719142dd05b46ce6de03fcbb3ce262ba2b62c712f428e1e3f3f282d8a16d0c45d60792d8de711be60981f88ed8c74339adf037c301fc940af86e26a7ad
 SHA512 
f9217a68c9a75b574415161ff0b35dca091f5081c219b792b300d36bc371506cc720cf38f06db15c9999da4ebe970aeaa5fb1ab2f0095ef5be4a5a2315a56db3
+DIST firefox-128.14.0esr-pl.xpi 669249 BLAKE2B 
82e8ffe7b9903a0de3ebe72af8a8cb276ad1ec7d002975e5b68d7745008923563c524006d50c7a2584df366f2948e1f89fa240186cf6a143eaa58dee847ecb92
 SHA512 
c5231aec3caf86a40c9e42a1a3bbefc67423d96fafc3c91c11a70f6a5e75cc01c99333647d21e39d4762fe3d93e7413da67027e62550cfeb5f2c949a2f9a46bb
+DIST firefox-128.14.0esr-pt-BR.xpi 650222 BLAKE2B 
520f0b6512f02780eea7d121a88b674ca535db7ddd692724fc3d5e39689ca61193e94e68529ba8b8a0a109193bf9fb19d3863395a9ca49fad7e4b8f2cbc6376a
 SHA512 
897b9eaedf6b798b81c2f50354d2fa8c408b0457c1c302e64c6ea9d252862d1f59c1e2791ea605ddea56b19e39d5af552cdf00031c81194f19450364704b9c4b
+DIST firefox-128.14.0esr-pt-PT.xpi 654883 BLAKE2B 
d557a73a86467d2bcdb98c56dea8038d9002f914816282dc6407fb7b9a3792416a80c9a29274c1d3af38e4b6eb0755ce030b3cc09eab06e66fa4d6d0fbd9c73e
 SHA512 
8b2df76bd1917070c49371101dbf4b6839ca1c735fad83e6d3d43f0a59e32819bd642217020c8b5ff550b203fbe04b73ed0d88487f8359c4eca4eca721d64d3b
+DIST firefox-128.14.0esr-rm.xpi 646693 BLAKE2B 
58f535d761ecadbe647d975680750173678e5f57c1f8547250629be4d1aed3dec3b081a00cc0789730303afb19c63b8d3b7dd65824b4146f25fec1e094497502
 SHA512 
8359a8df781cb9aa6212efd168f216e2fd8c37c739e5332fbf27055550ce47a1a51d1638d3a67a34bc21aebce8de93e3361bc409a685effe8bb938e3b78dc0a3
+DIST firefox-128.14.0esr-ro.xpi 562850 BLAKE2B 
cff43f880a344bb64cc28247198ea78048848c582ac41b2379edfb35b0c7c5f62c9d05c23fbe6a17378309d46733010e27d0b95e8b2c6a893390918fa19a071d
 SHA512 
b1c8d26d426b039a8d948b0138eaf6149f80da570a2e7e2cc48b57ff390c0bcec3fbfecc9a197e2fcf0dfc54ce5a3f62d273c0cfe4e734e5e0792ccba85ba9b1
+DIST firefox-128.14.0esr-ru.xpi 753065 BLAKE2B 
12dd7711ec52fafa30aec794f255c2e859f54fe582a80113d9e63d09df31fe0ffe87d56c737c4f5aaf5aced72421d6de712f4a4f7ced67ee5edf956f63ba952c
 SHA512 
bd47ddf3aacda48875024ab9e0ce15182cde6b7fe0f70ca9a2ec7ca845d54f004bb2903220a4760edabb57106012a0bfa39a8e0d678bf054bf58b195425b65a5
+DIST firefox-128.14.0esr-sc.xpi 604292 BLAKE2B 
6c566be22efeaf2caf9109a8247ee6768b6f4f1d0018fd22562440ae64c9bfc60beddbd056d914980ab40f2da183512e47bf961754df2ac29256d1881701ff46
 SHA512 
8117f98a686450938a1994c191fab6e6b3e71cb96cc7ee460a5e44b18cbcc9ba340e096e1f561b8b6b40beaa85c1c397155aea83d3a97b6ad28a8c64aaaf6854
+DIST firefox-128.14.0esr-sco.xpi 524663 BLAKE2B 
997bbec85eb8a3de9610343f84ca7bdf27ef84eb4ab8c1d5f3ad1a6384d9f266fa28283c93e4db710a885e77d318b3bea2c7b2f2a576f584941311d850e4479e
 SHA512 
4f962174621d7f3e2048b1cb34decaad0103558d7be0168892e96e0d70c51070a06fb985d6bb7158058f4dcac601c5a4e2a4c2eb21fb88314a3d0571f7b9dbc1
+DIST firefox-128.14.0esr-si.xpi 628193 BLAKE2B 
c86eb53b5d91707abdc98030a1ed8f2d1d31330167d859e1a51b42662d60444d6b72fb5d309393ff1adb147aa175822fce5e785893a9b8d57560d467abc552c9
 SHA512 
348dd2df46aed72dce935ca046919835192c86600b24aa60677d2d9724a7668a05676990308be94c6d04174c19276a5045dc308ef43fa9ec06e11cc8367a2866
+DIST firefox-128.14.0esr-sk.xpi 682226 BLAKE2B 
17ab3084de0c8be5ec3caacadacac84604cc68b2625e2cbf1af813c60a1fc966b8d05f9d546185442b14e3a07a5b76d8ee7c1a44da859dd4d276f1b7bdc7d402
 SHA512 
17472b56d867aad708f8da830677290c8ba8483e9140ab574e104296d10426e119c1378b9d8e9ff1b8843ee11d728352e44299ab597bc6d98be7dd3aa6defe57
+DIST firefox-128.14.0esr-skr.xpi 726685 BLAKE2B 
9ed7e1f589f53929903118581a3dd6fa05747c525136956f46ff46a90e2031e92bb22bae9641d196ea3d7ea8cb81b1d14d84568fa85ae31f4f6ab6848fc159e0
 SHA512 
723890c530631347a8fb4af341d31f213b8410189c5254d44e634559b28ff61d6561c784430227943197945b411050430ccf302b07533afba86a2a34009b2560
+DIST firefox-128.14.0esr-sl.xpi 649033 BLAKE2B 
4a07fce7fb1be7e8f0cd169f26b566e706b0d65675f6568b665429f5a555146d5e9e6dfe2a659a7ea603ac1d217b27788f32448a2a757985a2d049f36484520a
 SHA512 
e9cc3679b47d036d43562d6b068ad2ba9422c9138e9ceec4801d7e9eeb244929084ab8fd2f6243fcdc5d54509bdbe56b711849f3d5bfaabaefbc3467e7af999f
+DIST firefox-128.14.0esr-son.xpi 451699 BLAKE2B 
3f0c222825025024bf452403c2eb7892dc4f18e3ad534c0860f46d0a96ebf9a9eb5667c4e9b77ef32da2199859d146be811b56625fbc749e5536f5a9b1d00ce9
 SHA512 
0be3d61ab2cdaf91c67e7eed8212bf760947e9bab6142bc530eef125952c39968abed9c690724820c63c7af48c0b85d2083b4135aa0ebfd3a23d7d984c6ccf48
+DIST firefox-128.14.0esr-sq.xpi 665749 BLAKE2B 
a8f6d9bf039eb3d54e4adbe045f9d6c98e6c5e3c23a749187e2ae5146a8ed20fbb8cd2fd9fa669a7baec756db95b6099b53d37b228338c9ecc9a3f62882182a6
 SHA512 
67585095be57f30b4ed6a3f0dd718b47321fba296bf495e940bfa33838afd99e4020eafa7105967abbaee60cc9aa7ff649dc214745c90c94a99f5d2dd85fd034
+DIST firefox-128.14.0esr-sr.xpi 678444 BLAKE2B 
90dde6a0a42595b9c5ecafbdfe0bbcb3fd1892bf41188785adfd2a4d1e09d55db10398300ef7e81109007b4233b7187a272d0ead50bf074654e1f531b4d3f650
 SHA512 
75974d4d79f17ca65b40f14ac2d162ba749285866d6089d01fcb918edfebe45a8d8509075bf87b69efb1cf90047bb611a8939ca341a777a269842ac771bb54df
+DIST firefox-128.14.0esr-sv-SE.xpi 646491 BLAKE2B 
579148df07a5ac9764f7f62002c65f65712fab6e8d0d924bdb071ed0e59950bc892ccc454b18e35e775873fef85b7211385b7d43577d97392633496ff225a367
 SHA512 
91b1f627109e5c971f3bcc6dd7acaf647db1203bc6ade1339b7a96837f5956e185fc7aeef17f1ac6d3c69f3fd38aadd1448faac59e8a2ee3e8e70c007c054541
+DIST firefox-128.14.0esr-szl.xpi 541726 BLAKE2B 
71a5afad054794a537146a03a46ce601b0a2260f19bf8d2c12895d82eee75390faf0f0cc71da130e2585b74e1169b6462019936f37e03167e39e35a401916572
 SHA512 
803d4144b030b1a19bb09ed7bcec011d322fdd85a2d65a04fa62d1979fdabd75710a8cd1a883a106a9cd831896fed2180aeab9e2906b77808dda2df450ffeb52
+DIST firefox-128.14.0esr-ta.xpi 530547 BLAKE2B 
b77f3af4c841f188370a0bc20645768ac49c01338b692db3eb0ca5b3d99a03e8e8999612ffb3e2a4b0e0fed8356da847fe789843e92994460c5cfc9b3ca199f2
 SHA512 
910b01f62e51c55cffb9e263d85b4ff38fd70f0bf4ffe27b05319420c338bf5b231e0ed5da4f02bf8e1104041c0e731634a54ebb2146bb7fbcf358b32a1d7c16
+DIST firefox-128.14.0esr-te.xpi 583153 BLAKE2B 
ba8501210b27321bc538cdc0a4ddff1404c7df092e1a1154ff6106829d852a148b4369c089553823d2a365ff9381573455c13498a510e8898a389cbb45f4380b
 SHA512 
e931319bc3d33429ac1602fa5e6be502cbf414861b09a35b95233824e6a098f9e9b59317a0a0b5e1500bc3e5f6822dff40cb9c24afff3a5ff544e64694012265
+DIST firefox-128.14.0esr-th.xpi 728443 BLAKE2B 
c1159cc737becd7539720a8ab47cbe26ffe2ebf1d1a5eb0c41c39e0d2a873365977ffa463daee5174d3c877400ff82918183163fbb81b7713a01931026837bd5
 SHA512 
e16b9ba861448f8e7c23802f5ff85c2f35c8f480d69524c176a67132667f5267feea08329cd626f680e442f38472c01e1184ace126f940a97284af7cff7d60d9
+DIST firefox-128.14.0esr-tl.xpi 546941 BLAKE2B 
84f0c941263eed78632e513329c8e4750730c3b476ca26eb16d317c40c66e08e5a53514b630ec6ccc4c9bdfd081598850998ebc059ef1082b16ba4fd6e72a34a
 SHA512 
4d9bb2ffc520bd78b235053b04e5456b62b926ea5e231909102ed63c22ddd0b60f78a199219cbc9c40bbabbaa1aad8f254c6b8f2595ab7cd18a57bac7e7c8384
+DIST firefox-128.14.0esr-tr.xpi 659458 BLAKE2B 
84b658bf1f02a57158431e74da452f31961d99536ba0dee9e2206c4f1a433aee83f3954d360e3a5ab4ecf3045529df2b67521e1577ca107f8560f524daacedde
 SHA512 
c298f688cbc139dfbbc566336d1213cfd61007e11fe976b55a4165dd96f4c15c4ddec10d9369b6a38adc1fa6efe9cb73f50f5a075cb8123a20ef357aa8765151
+DIST firefox-128.14.0esr-trs.xpi 522156 BLAKE2B 
0b8240cc64bf15e8489140fce0eea51e81176965c2331baf316f84ddcf6f579e63a37e0fcaf3301e6defa1e6d79674d30d578ef121e72296ca5cd4575f297dbf
 SHA512 
b5061fbbbb5c97c5e0dabd11b62299b3a4b22fc7847d95c354490baa01987d71219bd121f6cb25eeb54fefc1b37daa143190f3a9e8d7b21739b07f291eaf31de
+DIST firefox-128.14.0esr-uk.xpi 744002 BLAKE2B 
b4be732550fed792e25bdecba5a892de2dd8d400a19d5253e4cdf85922d5bde3fa8a4b566585586abe3b846c9445a3d3a72c80a03efd7ba3082360a0cbc62c0b
 SHA512 
ba7aa73123dacc7387454aa08f77df1e23041335beaa7e4ea22a0dfecf4516205452dce3a67f4395cdc0e327892a9b8d65a97b7abd5c8d727f4cb13eb873abec
+DIST firefox-128.14.0esr-ur.xpi 574507 BLAKE2B 
641bb41103543fe80ced4347b7774c1fd0a7fc7b9afc9c6d88a10ca8716ab4257cc13bc99a34fdbcf78f58b699e074d6060e7b90ecc0cc975c91ef02a32f6e1f
 SHA512 
aa0a20b76bb0b6e78b5f74a182b65f36f7f21c425fa5e42e88262f4dd37ecb78fe95371403f80ea45276884855eed4b1462b9f2667e922227078ea52bb457c91
+DIST firefox-128.14.0esr-uz.xpi 495302 BLAKE2B 
929a21a9423fcb5bf6ed9b68f8d6848ecb68b69843c5026b3bd5540cde43522da8c640577b68ba2b7582033f2ec930a9f0b736f93f6ae0243541bd13c3239f62
 SHA512 
6b589d6b77e2eb82f46e794b5483fe82b5d47bf457d55260b68e74f469923ba86c4ee4424479c902a6ac2a19bb8de655057355c8a4a1c3857c393fe4ceeb553b
+DIST firefox-128.14.0esr-vi.xpi 683673 BLAKE2B 
4f244f6ec930dcb6a8b4220e477005b177a98e65f0ecf9d895656087a534ddc23cf2d811623643393c88bf59ad67d435183ee33894f5a0ff028ec51a91c594ff
 SHA512 
de6675f106bd66fc25162ecfd63503bf2f2992be0fa1c2ebf0a59c54bf79c989c6ff632062f393f79fe05c5d8490216c3f31556c782660b030d9566ca28223c8
+DIST firefox-128.14.0esr-xh.xpi 452423 BLAKE2B 
aeaf0872edcfdf9f8d2ca95089d8269754dd444afc99fb7abf5fe0e5e4b53ee11ab73a6fc69520d7e4a018ae09b4b2e8c12bf0ef74adf76bbe6bed04a5f73113
 SHA512 
73ff1fbc108334698806172f9825515edd25595a246e3234651d660a38d29b0174c7a5e80c05e7be48bcb7e4d4791482ba742742c8850a2fcc4fcb1d002b3bb0
+DIST firefox-128.14.0esr-zh-CN.xpi 686341 BLAKE2B 
1cbf1d1ec15cb1b53f54e96fa20e9657b9c67fd4392090f60e19077fb2e4e1e731964693ca44eba2b59291cc607f29b6d8987d7000f06bc8c68f74c9805c0384
 SHA512 
989e4bb12efa131bc70b38398a6d2ff6a92b7d7363652c68be77583c02b204dd0495c4d5ed5fad65fb636039fd21cfcf0466c14f60cfc2f7a6f8f714917c0ed7
+DIST firefox-128.14.0esr-zh-TW.xpi 689145 BLAKE2B 
716f24a5f02a226da2d9dada5c21ad3bb1f5ea755f1ed4058c5c690990e178ce1271c07cf1122695c5a9e2fa54311effd614bc6ba40899037e7fa455d8ee8d4e
 SHA512 
f0127a050fbd4e559c8ac7aa3eb4d581206084880f725e1a91767ae4aad05ff50eb5ff686bff2eeef3de7a2ab4226be1e9ee728a67768d6c841ddb7fa4f91993
+DIST firefox-128.14.0esr.source.tar.xz 562714012 BLAKE2B 
16420f803f5fe9cd1879d7f3fa24a42baa78a2e048212696cb0986dca3e3c07c52ab411e98ee2c71047f52fc5f644ef1a2a223e2ee4c69aed41fde66b9a63749
 SHA512 
a3cf267e82b6f5ab8b6497a62b12f85afb78fcaef6b12c43ef79564ce8270d3327a873368ce48fc018e46fef5e07339c07b9a494a5ff6c22a84099f939f6a9de
 DIST firefox-128esr-patches-12.tar.xz 19024 BLAKE2B 
e6e1cd56548cb429590cac156de6e5ea003e9db30e3486ef3c822dea063f22bed08685a52036c0ee749b50a803c84fd998470d049145bdd70936068e9fb9568f
 SHA512 
0af68f23777038cbd02c9991a5c5d59cc407295b21065c144428869f3a2ce21e8fe4ed80983950b75809a7c6d530cbf629510c5a18f5ec0439e1a0daf852999a
 DIST firefox-139-loong-patches-02.tar.xz 3096 BLAKE2B 
2e9c0f3dac780c808a13f70fe3808df9976898360b55113def97bf3594893166e0647c70ebc389b2d14fa2c2453fc1dd68aba20d92178670ef97d70c34205e1c
 SHA512 
e1244007290e2e15d14cf519e3ade6a4da06abe41c416de60569a11396609661cb62fb5b592e763cc079406699dc33d6a34851f71068f4d09bdf34021b035a59
 DIST firefox-139-patches-03.tar.xz 11536 BLAKE2B 
a7610d1348a2a4d02305c8d694a1648997040c69cb1445b901fe456045d0b1a73f28b0102ed03d34f70d8cc1ea9ab0245599a104b0063c7fb0dcb5a8fdd6f60b
 SHA512 
4733d34a842d525824fbcf6ef5d8f33e26b4f37a16aa87043427eaaf1e0665aa257cb8487bd692e4fd095c2a78553ab3f0213208124c3455e534394576fb5614

diff --git a/www-client/firefox/firefox-128.14.0.ebuild 
b/www-client/firefox/firefox-128.14.0.ebuild
new file mode 100644
index 000000000000..796d59c1056b
--- /dev/null
+++ b/www-client/firefox/firefox-128.14.0.ebuild
@@ -0,0 +1,1380 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-128esr-patches-12.tar.xz"
+
+LLVM_COMPAT=( 17 18 19 )
+
+PYTHON_COMPAT=( python3_{11..12} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.77.1
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+# Information about the bundled wasi toolchain from
+# https://github.com/WebAssembly/wasi-sdk/
+WASI_SDK_VER=25.0
+WASI_SDK_LLVM_VER=19
+
+MOZ_ESR=yes
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+       MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+       # Convert the ebuild version to the upstream Mozilla version
+       MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+       MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+       MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+       # ESR releases have slightly different version numbers
+       MOZ_PV="${MOZ_PV}esr"
+       HOMEPAGE="https://www.firefox.com https://www.firefox.com/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.firefox.com";
+       SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info 
llvm-r1 multiprocessing \
+       optfeature pax-utils python-any-r1 readme.gentoo-r1 rust 
toolchain-funcs virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}";
+
+if [[ ${PV} == *_rc* ]] ; then
+       
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}";
+fi
+
+PATCH_URIS=(
+       https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+DESCRIPTION="Firefox Web Browser"
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}
+       wasm-sandbox? (
+               amd64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz
 )
+               arm64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz
 )
+       )"
+S="${WORKDIR}/${PN}-${PV%_*}"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+
+IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio 
selinux sndio"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent 
+system-libvpx"
+IUSE+=" system-png +system-webp wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell +jumbo-build openh264 +telemetry 
wasm-sandbox"
+
+# "wasm-sandbox? ( llvm_slot_19 )" - most likely due to wasi-sdk-25.0 being 
llvm-19 based, and
+# llvm/clang-19 turning on reference types for wasm targets. Luckily clang-19 
is already stable in
+# Gentoo so it should be widely adopted already - however, it might be 
possible to workaround
+# the constraint simply by modifying CFLAGS when using clang-17/18. Will need 
to investigate (bmo#1905251)
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( jumbo-build )
+       wasm-sandbox? ( llvm_slot_19 )
+       wayland? ( dbus )
+       wifi? ( dbus )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+       selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+       $(llvm_gen_dep '
+               llvm-core/clang:${LLVM_SLOT}
+               llvm-core/llvm:${LLVM_SLOT}
+               clang? (
+                       llvm-core/lld:${LLVM_SLOT}
+                       pgo? ( 
llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[profile] )
+               )
+               wasm-sandbox? ( llvm-core/lld:${LLVM_SLOT} )
+       ')
+       app-alternatives/awk
+       app-arch/unzip
+       app-arch/zip
+       >=dev-util/cbindgen-0.26.0
+       net-libs/nodejs
+       virtual/pkgconfig
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               !X? (
+                       || (
+                               gui-wm/tinywl
+                               <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.101
+       >=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:2
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-1.0.0:=
+       )
+       system-harfbuzz? (
+               >=media-libs/harfbuzz-2.8.1:0=
+               !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 )
+       )
+       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]
+       )
+       wifi? (
+               kernel_linux? (
+                       || (
+                               net-misc/networkmanager
+                               net-misc/connman[networkmanager]
+                       )
+                       sys-apps/dbus
+               )
+       )
+       X? (
+               virtual/opengl
+               x11-libs/cairo[X]
+               x11-libs/gtk+:3[X]
+               x11-libs/libX11
+               x11-libs/libXcomposite
+               x11-libs/libXdamage
+               x11-libs/libXext
+               x11-libs/libXfixes
+               x11-libs/libXrandr
+               x11-libs/libxcb:=
+       )"
+RDEPEND="${COMMON_DEPEND}
+       hwaccel? (
+               media-video/libva-utils
+               sys-apps/pciutils
+       )
+       jack? ( virtual/jack )
+       openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+       X? (
+               x11-base/xorg-proto
+               x11-libs/libICE
+               x11-libs/libSM
+       )"
+
+# ESR and rapid dependencies.
+if [[ -n ${MOZ_ESR} ]] ; then
+       RDEPEND+=" !www-client/firefox:rapid"
+else
+       RDEPEND+=" !www-client/firefox:esr"
+fi
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+       MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+       if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then
+               einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM 
slot ${LLVM_SLOT} ..." >&2
+               return 1
+       fi
+
+       if use clang && ! tc-ld-is-mold ; then
+               if ! has_version -b "llvm-core/lld:${LLVM_SLOT}" ; then
+                       einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot 
use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+       fi
+
+       if use pgo ; then
+               if ! has_version -b 
"=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then
+                       einfo 
"=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!" >&2
+                       einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+       fi
+
+       einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+MOZ_LANGS=(
+       af ar ast be bg br ca cak cs cy da de dsb
+       el en-CA en-GB en-US es-AR es-ES et eu
+       fi fr fy-NL ga-IE gd gl he hr hsb hu
+       id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO
+       pa-IN pl pt-BR pt-PT rm ro ru
+       sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW
+)
+
+# Firefox-only LANGS
+MOZ_LANGS+=( ach )
+MOZ_LANGS+=( an )
+MOZ_LANGS+=( az )
+MOZ_LANGS+=( bn )
+MOZ_LANGS+=( bs )
+MOZ_LANGS+=( ca-valencia )
+MOZ_LANGS+=( eo )
+MOZ_LANGS+=( es-CL )
+MOZ_LANGS+=( es-MX )
+MOZ_LANGS+=( fa )
+MOZ_LANGS+=( ff )
+MOZ_LANGS+=( fur )
+MOZ_LANGS+=( gn )
+MOZ_LANGS+=( gu-IN )
+MOZ_LANGS+=( hi-IN )
+MOZ_LANGS+=( hy-AM )
+MOZ_LANGS+=( ia )
+MOZ_LANGS+=( km )
+MOZ_LANGS+=( kn )
+MOZ_LANGS+=( lij )
+MOZ_LANGS+=( mk )
+MOZ_LANGS+=( mr )
+MOZ_LANGS+=( my )
+MOZ_LANGS+=( ne-NP )
+MOZ_LANGS+=( oc )
+MOZ_LANGS+=( sc )
+MOZ_LANGS+=( sco )
+MOZ_LANGS+=( si )
+MOZ_LANGS+=( skr )
+MOZ_LANGS+=( son )
+MOZ_LANGS+=( szl )
+MOZ_LANGS+=( ta )
+MOZ_LANGS+=( te )
+MOZ_LANGS+=( tl )
+MOZ_LANGS+=( trs )
+MOZ_LANGS+=( ur )
+MOZ_LANGS+=( xh )
+
+mozilla_set_globals() {
+       # https://bugs.gentoo.org/587334
+       local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+               fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+       )
+
+       local lang xflag
+       for lang in "${MOZ_LANGS[@]}" ; do
+               # en and en_US are handled internally
+               if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+                       continue
+               fi
+
+               # strip region subtag if $lang is in the list
+               if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+                       xflag=${lang%%-*}
+               else
+                       xflag=${lang}
+               fi
+
+               SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+               SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> 
${MOZ_P_DISTFILES}-${lang}.xpi"
+               SRC_URI+=" )"
+               IUSE+=" l10n_${xflag/[_@]/-}"
+       done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -ne 1 ]] ; then
+               die "${FUNCNAME} requires exact one argument"
+       fi
+
+       einfo "Clearing cargo checksums for ${1} ..."
+
+       sed -i \
+               -e 's/\("files":{\)[^}]*/\1/' \
+               "${S}"/third_party/rust/${1}/.cargo-checksum.json || die
+}
+
+moz_install_xpi() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local DESTDIR=${1}
+       shift
+
+       insinto "${DESTDIR}"
+
+       local emid xpi_file xpi_tmp_dir
+       for xpi_file in "${@}" ; do
+               emid=
+               xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+               # Unpack XPI
+               unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+               # Determine extension ID
+               if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+                       emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; 
s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from install.rdf"
+               elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+                       emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' 
"${xpi_tmp_dir}/manifest.json")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from manifest.json"
+               else
+                       die "failed to determine extension id"
+               fi
+
+               einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+               newins "${xpi_file}" "${emid}.xpi"
+       done
+}
+
+mozconfig_add_options_ac() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_add_options_mk() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_use_enable() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_enable "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+mozconfig_use_with() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_with "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+virtwl() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+       [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to 
be set; try xdg_environment_reset"
+       tinywl -h >/dev/null || die 'tinywl -h failed'
+
+       local VIRTWL VIRTWL_PID
+       coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo 
$WAYLAND_DISPLAY; read _; kill $PPID'; }
+       local -x WAYLAND_DISPLAY
+       read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+       debug-print "${FUNCNAME}: $@"
+       "$@"
+       local r=$?
+
+       [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+       exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+       return $r
+}
+
+pkg_pretend() {
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+               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 || tc-is-lto || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6600M"
+               fi
+
+               check-reqs_pkg_pretend
+       fi
+}
+
+pkg_setup() {
+
+       # Get LTO from environment; export after this phase for use in 
src_configure (etc)
+       use_lto=no
+
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+
+               if tc-is-lto; then
+                       use_lto=yes
+                       # LTO is handled via configure
+                       filter-lto
+               fi
+
+               if use pgo ; then
+                       if ! has userpriv ${FEATURES} ; then
+                               eerror "Building ${PN} with USE=pgo and 
FEATURES=-userpriv is not supported!"
+                       fi
+               fi
+
+               if [[ ${use_lto} = yes ]]; then
+                       # -Werror=lto-type-mismatch -Werror=odr are going to 
fail with GCC,
+                       # bmo#1516758, bgo#942288
+                       filter-flags -Werror=lto-type-mismatch -Werror=odr
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || [[ ${use_lto} == "yes" ]] || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6400M"
+               fi
+
+               check-reqs_pkg_setup
+               llvm-r1_pkg_setup
+               rust_pkg_setup
+               python-any-r1_pkg_setup
+
+               # Avoid PGO profiling problems due to enviroment leakage
+               # These should *always* be cleaned up anyway
+               unset \
+                       DBUS_SESSION_BUS_ADDRESS \
+                       DISPLAY \
+                       ORBIT_SOCKETDIR \
+                       SESSION_MANAGER \
+                       XAUTHORITY \
+                       XDG_CACHE_HOME \
+                       XDG_SESSION_COOKIE
+
+               # Build system is using /proc/self/oom_score_adj, bug #604394
+               addpredict /proc/self/oom_score_adj
+
+               if use pgo ; then
+                       # Update 105.0: "/proc/self/oom_score_adj" isn't enough 
anymore with pgo, but not sure
+                       # whether that's due to better OOM handling by Firefox 
(bmo#1771712), or portage
+                       # (PORTAGE_SCHEDULING_POLICY) update...
+                       addpredict /proc
+
+                       # Clear tons of conditions, since PGO is 
hardware-dependant.
+                       addpredict /dev
+               fi
+
+               if ! mountpoint -q /dev/shm ; then
+                       # If /dev/shm is not available, configure is known to 
fail with
+                       # a traceback report referencing 
/usr/lib/pythonN.N/multiprocessing/synchronize.py
+                       ewarn "/dev/shm is not mounted -- expect build 
failures!"
+               fi
+
+               # Google API keys (see 
http://www.chromium.org/developers/how-tos/api-keys)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+                       
MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+               fi
+
+               if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+                       
MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+               fi
+
+               # Mozilla API keys (see 
https://location.services.mozilla.com/api)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+                       
MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+               fi
+
+               # Ensure we use C locale when building, bug #746215
+               export LC_ALL=C
+       fi
+
+       export use_lto
+
+       CONFIG_CHECK="~SECCOMP"
+       WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to 
play DRM-protected content."
+       linux-info_pkg_setup
+}
+
+src_unpack() {
+       local _lp_dir="${WORKDIR}/language_packs"
+       local _src_file
+
+       if [[ ! -d "${_lp_dir}" ]] ; then
+               mkdir "${_lp_dir}" || die
+       fi
+
+       for _src_file in ${A} ; do
+               if [[ ${_src_file} == *.xpi ]]; then
+                       cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die 
"Failed to copy '${_src_file}' to '${_lp_dir}'!"
+               else
+                       unpack ${_src_file}
+               fi
+       done
+}
+
+src_prepare() {
+       if [[ ${use_lto} == "yes" ]]; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
+       fi
+
+       # Workaround for bgo#917599
+       if has_version ">=dev-libs/icu-74.1" && use system-icu ; then
+               eapply 
"${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch
+       fi
+       rm -v "${WORKDIR}"/firefox-patches/*-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"
+               elif use loong; then
+                       # Only the LP64D ABI of LoongArch64 is actively 
supported among
+                       # the wider Linux ecosystem, so the assumption is safe.
+                       export RUST_TARGET="loongarch64-unknown-linux-musl"
+               elif use ppc64 ; then
+                       export RUST_TARGET="powerpc64le-unknown-linux-musl"
+               elif use riscv ; then
+                       # We can pretty safely rule out any 32-bit riscvs, but 
64-bit riscvs also have tons of
+                       # different ABIs available. 
riscv64gc-unknown-linux-musl seems to be the best working
+                       # guess right now though.
+                       elog "riscv detected, forcing a riscv64 target for now."
+                       export RUST_TARGET="riscv64gc-unknown-linux-musl"
+               else
+                       die "Unknown musl chost, please post a new bug with 
your rustc -vV along with emerge --info"
+               fi
+       fi
+
+       # Pre-built wasm-sandbox path manipulation.
+       if use wasm-sandbox ; then
+               if use amd64 ; then
+                       export wasi_arch="x86_64"
+               elif use arm64 ; then
+                       export wasi_arch="arm64"
+               else
+                       die "wasm-sandbox enabled on unknown/unsupported arch!"
+               fi
+
+               sed -i \
+                       -e "s:%%PORTAGE_WORKDIR%%:${WORKDIR}:" \
+                       -e "s:%%WASI_ARCH%%:${wasi_arch}:" \
+                       -e "s:%%WASI_SDK_VER%%:${WASI_SDK_VER}:" \
+                       -e "s:%%WASI_SDK_LLVM_VER%%:${WASI_SDK_LLVM_VER}:" \
+                       toolkit/moz.configure || die "Failed to update 
wasi-related paths."
+       fi
+
+       # Make LTO respect MAKEOPTS
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/build/moz.configure/lto-pgo.configure || die "Failed 
sedding multiprocessing.cpu_count"
+
+       # Make ICU respect MAKEOPTS
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/intl/icu_sources_data.py || die "Failed sedding 
multiprocessing.cpu_count"
+
+       # Respect MAKEOPTS all around (maybe some find+sed is better)
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/python/mozbuild/mozbuild/base.py || die "Failed sedding 
multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/libwebrtc/build/toolchain/get_cpu_count.py 
|| die "Failed sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               
"${S}"/third_party/libwebrtc/build/toolchain/get_concurrent_links.py ||
+                       die "Failed sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed 
sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/python/mozbuild/mozbuild/code_analysis/mach_commands.py 
|| die "Failed sedding multiprocessing.cpu_count"
+
+       # sed-in toolchain prefix
+       sed -i \
+               -e "s/objdump/${CHOST}-objdump/" \
+               "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py 
|| die "sed failed to set toolchain prefix"
+
+       sed -i \
+               -e 's/ccache_stats = None/return None/' \
+               "${S}"/python/mozbuild/mozbuild/controller/building.py || die 
"sed failed to disable ccache stats call"
+
+       einfo "Removing pre-built binaries ..."
+
+       find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) 
-print -delete || die
+
+       # Clear checksums from cargo crates we've manually patched.
+       # moz_clear_vendor_checksums xyz
+
+       # Respect choice for "jumbo-build"
+       # Changing the value for FILES_PER_UNIFIED_FILE may not work, see 
#905431
+       if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then
+               local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16}
+               elog ""
+               elog "jumbo-build defaults modified to 
${my_files_per_unified_file}."
+               elog "if you get a build failure, try undefining 
FILES_PER_UNIFIED_FILE,"
+               elog "if that fails try -jumbo-build before opening a bug 
report."
+               elog ""
+
+               sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 
16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \
+                       python/mozbuild/mozbuild/frontend/data.py ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
python/mozbuild/mozbuild/frontend/data.py"
+               sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE 
= "${my_files_per_unified_file}"/" \
+                       js/src/moz.build ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
js/src/moz.build"
+       fi
+
+       # Create build dir
+       BUILD_DIR="${WORKDIR}/${PN}_build"
+       mkdir -p "${BUILD_DIR}" || die
+
+       # Write API keys to disk
+       echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+       echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || 
die
+       echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+       xdg_environment_reset
+}
+
+src_configure() {
+       # Show flags set at the beginning
+       einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       local have_switched_compiler=
+       if use clang; then
+               # Force clang
+               einfo "Enforcing the use of clang due to USE=clang ..."
+
+               local version_clang=$(clang --version 2>/dev/null | grep -F -- 
'clang version' | awk '{ print $3 }')
+               [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 
"${version_clang}")
+               [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+               if tc-is-gcc; then
+                       have_switched_compiler=yes
+               fi
+
+               AR=llvm-ar
+               CC=${CHOST}-clang-${version_clang}
+               CXX=${CHOST}-clang++-${version_clang}
+               NM=llvm-nm
+               RANLIB=llvm-ranlib
+       elif ! use clang && ! tc-is-gcc ; then
+               # Force gcc
+               have_switched_compiler=yes
+               einfo "Enforcing the use of gcc due to USE=-clang ..."
+               AR=gcc-ar
+               CC=${CHOST}-gcc
+               CXX=${CHOST}-g++
+               NM=gcc-nm
+               RANLIB=gcc-ranlib
+       fi
+
+       if [[ -n "${have_switched_compiler}" ]] ; then
+               # Because we switched active compiler we have to ensure
+               # that no unsupported flags are set
+               strip-unsupported-flags
+       fi
+
+       # Ensure we use correct toolchain,
+       # AS is used in a non-standard way by upstream, #bmo1654031
+       export HOST_CC="$(tc-getBUILD_CC)"
+       export HOST_CXX="$(tc-getBUILD_CXX)"
+       export AS="$(tc-getCC) -c"
+
+       # Configuration tests expect llvm-readelf output, bug 913130
+       READELF="llvm-readelf"
+
+       tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
+
+       # Pass the correct toolchain paths through cbindgen
+       if tc-is-cross-compiler ; then
+               export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} 
--target=${CHOST} ${BINDGEN_CFLAGS-}"
+       fi
+
+       # Set MOZILLA_FIVE_HOME
+       export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+       # python/mach/mach/mixin/process.py fails to detect SHELL
+       export SHELL="${EPREFIX}/bin/bash"
+
+       # Set state path
+       export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+       # Set MOZCONFIG
+       export MOZCONFIG="${S}/.mozconfig"
+
+       # Initialize MOZCONFIG
+       mozconfig_add_options_ac '' --enable-application=browser
+       mozconfig_add_options_ac '' --enable-project=browser
+
+       # Set Gentoo defaults
+       if use telemetry; then
+               export MOZILLA_OFFICIAL=1
+       fi
+
+       mozconfig_add_options_ac 'Gentoo default' \
+               --allow-addon-sideload \
+               --disable-cargo-incremental \
+               --disable-crashreporter \
+               --disable-disk-remnant-avoidance \
+               --disable-geckodriver \
+               --disable-gpsd \
+               --disable-install-strip \
+               --disable-legacy-profile-creation \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-tests \
+               --disable-updater \
+               --disable-valgrind \
+               --disable-wmf \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-release \
+               --enable-system-pixman \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-ffi \
+               --with-system-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 '' --enable-update-channel=${update_channel}
+
+       if use amd64 || use arm64 || use ppc64 || use riscv ; then
+               mozconfig_add_options_ac '' --enable-rust-simd
+       fi
+
+       # For future keywording: This is currently (97.0) only supported on:
+       # amd64, arm, arm64 & x86.
+       # Might want to flip the logic around if Firefox is to support more 
arches.
+       # bug 833001, bug 903411#c8
+       if use loong || use ppc64 || use riscv; then
+               mozconfig_add_options_ac '' --disable-sandbox
+       else
+               mozconfig_add_options_ac '' --enable-sandbox
+       fi
+
+       # Enable JIT on riscv64 explicitly, since it's not activated 
automatically via "known arches" list.
+       # Update 128.1.0: Disable jit on riscv (this line can be blanked to 
disable by default),
+       # bgo#937867.
+       use riscv && mozconfig_add_options_ac 'Disable JIT for RISC-V 64' 
--disable-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-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
+
+       if use hardened ; then
+               mozconfig_add_options_ac "+hardened" --enable-hardening
+               append-ldflags "-Wl,-z,relro -Wl,-z,now"
+
+               # Increase the FORTIFY_SOURCE value, #910071.
+               sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' 
"${S}"/build/moz.configure/toolchain.configure || die
+       fi
+
+       local myaudiobackends=""
+       use jack && myaudiobackends+="jack,"
+       use sndio && myaudiobackends+="sndio,"
+       use pulseaudio && myaudiobackends+="pulseaudio,"
+       ! use pulseaudio && myaudiobackends+="alsa,"
+
+       mozconfig_add_options_ac '--enable-audio-backends' 
--enable-audio-backends="${myaudiobackends::-1}"
+
+       mozconfig_use_enable wifi necko-wifi
+
+       ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' 
--disable-unified-build
+
+       if use X && use wayland ; then
+               mozconfig_add_options_ac '+x11+wayland' 
--enable-default-toolkit=cairo-gtk3-x11-wayland
+       elif ! use X && use wayland ; then
+               mozconfig_add_options_ac '+wayland' 
--enable-default-toolkit=cairo-gtk3-wayland-only
+       else
+               mozconfig_add_options_ac '+x11' 
--enable-default-toolkit=cairo-gtk3-x11-only
+       fi
+
+       # wasm-sandbox
+       # Since graphite2 is one of the sandboxed libraries, system-graphite2 
obviously can't work with +wasm-sandbox.
+       if use wasm-sandbox ; then
+               mozconfig_add_options_ac '+wasm-sandbox' 
--with-wasi-sysroot="${WORKDIR}/wasi-sdk-${WASI_SDK_VER}-${wasi_arch}-linux/share/wasi-sysroot/"
+       else
+               mozconfig_add_options_ac 'no wasm-sandbox' 
--without-wasm-sandboxed-libraries
+               mozconfig_use_with system-harfbuzz system-graphite2
+       fi
+
+       if [[ ${use_lto} == "yes" ]] ; then
+               if use clang ; then
+                       # Upstream only supports lld or mold when using clang.
+                       if tc-ld-is-mold ; then
+                               # mold expects the -flto line from *FLAGS 
configuration, bgo#923119
+                               append-ldflags "-flto=thin"
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang and USE=lto" --enable-linker=lld
+                       fi
+
+                       mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+               else
+                       # ThinLTO is currently broken, see bmo#1644409.
+                       # mold does not support gcc+lto combination.
+                       mozconfig_add_options_ac '+lto' --enable-lto=full
+                       mozconfig_add_options_ac "linker is set to bfd" 
--enable-linker=bfd
+               fi
+
+       else
+               # Avoid auto-magic on linker
+               if use clang ; then
+                       # lld is upstream's default
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang" --enable-linker=lld
+                       fi
+
+               else
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "linker is set to bfd 
due to USE=-clang" --enable-linker=bfd
+                       fi
+               fi
+       fi
+
+       # PGO was moved outside lto block to allow building pgo without lto.
+       if use pgo ; then
+               mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+               if use clang ; then
+                       # Used in build/pgo/profileserver.py
+                       export LLVM_PROFDATA="llvm-profdata"
+               fi
+       fi
+
+       mozconfig_use_enable debug
+       if use debug ; then
+               mozconfig_add_options_ac '+debug' --disable-optimize
+               mozconfig_add_options_ac '+debug' --enable-jemalloc
+               mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+       else
+               mozconfig_add_options_ac 'Gentoo defaults' 
--disable-real-time-tracing
+
+               if is-flag '-g*' ; then
+                       if use clang ; then
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols=$(get-flag '-g*')
+                       else
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols
+                       fi
+               else
+                       mozconfig_add_options_ac 'Gentoo default' 
--disable-debug-symbols
+               fi
+
+               if is-flag '-O0' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O0
+               elif is-flag '-O4' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O4
+               elif is-flag '-O3' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O3
+               elif is-flag '-O1' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O1
+               elif is-flag '-Os' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-Os
+               else
+                       mozconfig_add_options_ac "Gentoo default" 
--enable-optimize=-O2
+               fi
+       fi
+
+       # Debug flag was handled via configure
+       filter-flags '-g*'
+
+       # Optimization flag was handled via configure
+       filter-flags '-O*'
+
+       # elf-hack
+       # Filter "-z,pack-relative-relocs" and let the build system handle it 
instead.
+       if use amd64 || use x86 ; then
+               filter-flags "-z,pack-relative-relocs"
+
+               if tc-ld-is-mold ; then
+                       # relr-elf-hack is currently broken with mold, 
bgo#916259
+                       mozconfig_add_options_ac 'disable elf-hack with mold 
linker' --disable-elf-hack
+               else
+                       mozconfig_add_options_ac 'relr elf-hack' 
--enable-elf-hack=relr
+               fi
+       elif use loong || use ppc64 || use riscv ; then
+               # '--disable-elf-hack' is not recognized on loong/ppc64/riscv,
+               # see bgo #917049, #930046
+               :;
+       else
+               mozconfig_add_options_ac 'disable elf-hack on non-supported 
arches' --disable-elf-hack
+       fi
+
+       if ! use elibc_glibc; then
+               mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+       fi
+
+       # System-av1 fix
+       use system-av1 && append-ldflags "-Wl,--undefined-version"
+
+       # Make revdep-rebuild.sh happy; Also required for musl
+       append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
+
+       # Pass $MAKEOPTS to build system
+       export MOZ_MAKE_FLAGS="${MAKEOPTS}"
+
+       # Use system's Python environment
+       export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach
+
+       export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
+
+       if ! use telemetry; then
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_CRASHREPORTER=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_DATA_REPORTING=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_SERVICES_HEALTHREPORT=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_TELEMETRY_REPORTING=0"
+       fi
+
+       # Disable notification when build system has finished
+       export MOZ_NOSPAM=1
+
+       # Portage sets XARGS environment variable to "xargs -r" by default which
+       # breaks build system's check_prog() function which doesn't support 
arguments
+       mozconfig_add_options_ac 'Gentoo default' 
"XARGS=${EPREFIX}/usr/bin/xargs"
+
+       # Set build dir
+       mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+       # Show flags we will use
+       einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       # Handle EXTRA_CONF and show summary
+       local ac opt hash reason
+
+       # Apply EXTRA_ECONF entries to $MOZCONFIG
+       if [[ -n ${EXTRA_ECONF} ]] ; then
+               IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+               for opt in "${ac[@]}"; do
+                       mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+               done
+       fi
+
+       echo
+       echo "=========================================================="
+       echo "Building ${PF} with the following configuration"
+       grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+               [[ -z ${hash} || ${hash} == \# ]] \
+                       || die "error reading mozconfig: ${ac} ${opt} ${hash} 
${reason}"
+               printf "    %-30s  %s\n" "${opt}" "${reason:-mozilla.org 
default}"
+       done
+       echo "=========================================================="
+       echo
+
+       ./mach configure || die
+}
+
+src_compile() {
+       local virtx_cmd=
+
+       if [[ ${use_lto} == "yes" ]] && tc-ld-is-mold ; then
+               # increase ulimit with mold+lto, bugs #892641, #907485
+               if ! ulimit -n 16384 1>/dev/null 2>&1 ; then
+                       ewarn "Unable to modify ulimits - building with 
mold+lto might fail due to low ulimit -n resources."
+                       ewarn "Please see bugs #892641 & #907485."
+               else
+                       ulimit -n 16384
+               fi
+       fi
+
+       if use pgo; then
+               # Reset and cleanup environment variables used by GNOME/XDG
+               gnome2_environment_reset
+
+               addpredict /root
+
+               if ! use X; then
+                       virtx_cmd=virtwl
+               else
+                       virtx_cmd=virtx
+               fi
+       fi
+
+       if ! use X; then
+               local -x GDK_BACKEND=wayland
+       else
+               local -x GDK_BACKEND=x11
+       fi
+
+       ${virtx_cmd} ./mach build --verbose || die
+}
+
+src_install() {
+       # xpcshell is getting called during install
+       pax-mark m \
+               "${BUILD_DIR}"/dist/bin/xpcshell \
+               "${BUILD_DIR}"/dist/bin/${PN} \
+               "${BUILD_DIR}"/dist/bin/plugin-container
+
+       DESTDIR="${D}" ./mach install || die
+
+       # Upstream cannot ship symlink but we can (bmo#658850)
+       rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+       dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+       # Don't install llvm-symbolizer from llvm-core/llvm package
+       if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then
+               rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die
+       fi
+
+       # Install policy (currently only used to disable application updates)
+       insinto "${MOZILLA_FIVE_HOME}/distribution"
+       newins "${FILESDIR}"/distribution.ini distribution.ini
+       newins "${FILESDIR}"/disable-auto-update.policy.json policies.json
+
+       # Install system-wide preferences
+       local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences"
+       insinto "${PREFS_DIR}"
+       newins "${FILESDIR}"/gentoo-default-prefs.js gentoo-prefs.js
+
+       local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js"
+
+       # Set dictionary path to use system hunspell
+       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
spellchecker.dictionary_path pref"
+       pref("spellchecker.dictionary_path", "${EPREFIX}/usr/share/myspell");
+       EOF
+
+       # Force hwaccel prefs if USE=hwaccel is enabled
+       if use hwaccel ; then
+               cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-r2 \
+               >>"${GENTOO_PREFS}" \
+               || die "failed to add prefs to force hardware-accelerated 
rendering to all-gentoo.js"
+
+               if use wayland; then
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
hwaccel wayland prefs"
+                       pref("gfx.x11-egl.force-enabled", false);
+                       EOF
+               else
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
hwaccel x11 prefs"
+                       pref("gfx.x11-egl.force-enabled", true);
+                       EOF
+               fi
+
+               # Install the vaapitest binary on supported arches (122.0 
supports all platforms, bmo#1865969)
+               exeinto "${MOZILLA_FIVE_HOME}"
+               doexe "${BUILD_DIR}"/dist/bin/vaapitest
+
+               # Install the v4l2test on supported arches (+ arm, + riscv64 
when keyworded)
+               if use arm64 ; then
+                       exeinto "${MOZILLA_FIVE_HOME}"
+                       doexe "${BUILD_DIR}"/dist/bin/v4l2test
+               fi
+       fi
+
+       if ! use gmp-autoupdate ; then
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       einfo "Disabling auto-update for ${plugin} plugin ..."
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to 
disable autoupdate for ${plugin} media plugin"
+                       pref("media.${plugin}.autoupdate", false);
+                       EOF
+               done
+       fi
+
+       # Force the graphite pref if USE=system-harfbuzz is enabled, since the 
pref cannot disable it
+       if use system-harfbuzz ; then
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
gfx.font_rendering.graphite.enabled pref"
+               sticky_pref("gfx.font_rendering.graphite.enabled", true);
+               EOF
+       fi
+
+       # Add telemetry config prefs, just in case something happens in future 
and telemetry build
+       # options stop working.
+       if ! use telemetry ; then
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set telemetry 
prefs"
+               sticky_pref("toolkit.telemetry.dap_enabled", false);
+               pref("toolkit.telemetry.dap_helper", "");
+               pref("toolkit.telemetry.dap_leader", "");
+               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 icons
+       local icon_srcdir="${S}/browser/branding/official"
+
+       # Prefer the upstream svg file they use when packaging flatpak so it's 
always up-to-date.
+       insinto /usr/share/icons/hicolor/symbolic/apps
+       newins "${S}"/taskcluster/docker/firefox-flatpak/firefox-symbolic.svg 
firefox-symbolic.svg
+
+       local icon size
+       for icon in "${icon_srcdir}"/default*.png ; do
+               size=${icon%.png}
+               size=${size##*/default}
+
+               if [[ ${size} -eq 48 ]] ; then
+                       newicon "${icon}" ${PN}.png
+               fi
+
+               newicon -s ${size} "${icon}" ${PN}.png
+       done
+
+       # Install menu
+       local app_name="Mozilla ${MOZ_PN^}"
+       local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop"
+       local exec_command="${PN}"
+       local icon="${PN}"
+       local use_wayland="false"
+
+       if [[ -n ${MOZ_ESR} ]] ; then
+               local desktop_filename="${PN}-esr.desktop"
+       else
+               local desktop_filename="${PN}.desktop"
+       fi
+
+       if use wayland ; then
+               use_wayland="true"
+       fi
+
+       cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+       sed -i \
+               -e "s:@NAME@:${app_name}:" \
+               -e "s:@EXEC@:${exec_command}:" \
+               -e "s:@ICON@:${icon}:" \
+               "${WORKDIR}/${PN}.desktop-template" || die
+
+       newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+       rm "${WORKDIR}/${PN}.desktop-template" || die
+
+       if use gnome-shell ; then
+               # Install search provider for Gnome
+               insinto /usr/share/gnome-shell/search-providers/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini
+
+               insinto /usr/share/dbus-1/services/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service
+
+               # Toggle between rapid and esr desktop file names
+               if [[ -n ${MOZ_ESR} ]] ; then
+                       sed -e "s/firefox.desktop/${desktop_filename}/g" \
+                               -i 
"${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini"
 ||
+                                       die "Failed to sed 
org.mozilla.firefox.search-provider.ini file."
+               fi
+
+               # Make the dbus service aware of a previous session, bgo#939196
+               sed -e \
+                       
"s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox 
--dbus-service \/usr\/bin\/firefox/g" \
+                       -i 
"${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" ||
+                               die "Failed to sed 
org.mozilla.firefox.SearchProvider.service dbus file"
+
+               # Update prefs to enable Gnome search provider
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable 
gnome-search-provider via prefs"
+               pref("browser.gnome-search-provider.enabled", true);
+               EOF
+       fi
+
+       # Install wrapper script
+       [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+       newbin "${FILESDIR}/${PN}-r1.sh" ${PN}
+
+       # Update wrapper
+       sed -i \
+               -e "s:@PREFIX@:${EPREFIX}/usr:" \
+               -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+               "${ED}/usr/bin/${PN}" || die
+
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       if ! use gmp-autoupdate ; then
+               elog "USE='-gmp-autoupdate' has disabled the following plugins 
from updating or"
+               elog "installing into new profiles:"
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       elog "\t ${plugin}"
+               done
+               elog
+       fi
+
+       # bug 835078
+       if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+               ewarn "You have nouveau drivers installed in your system and 
'hwaccel' "
+               ewarn "enabled for Firefox. Nouveau / your GPU might not 
support the "
+               ewarn "required EGL, so either disable 'hwaccel' or try the 
workaround "
+               ewarn "explained in https://bugs.gentoo.org/835078#c5 if 
Firefox crashes."
+       fi
+
+       readme.gentoo_print_elog
+
+       optfeature_header "Optional programs for extra features:"
+       optfeature "desktop notifications" x11-libs/libnotify
+       optfeature "fallback mouse cursor theme e.g. on WMs" 
gnome-base/gsettings-desktop-schemas
+       optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal
+       if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+               optfeature "hardware acceleration with NVIDIA cards" 
media-libs/nvidia-vaapi-driver
+       fi
+
+       if ! has_version "sys-libs/glibc"; then
+               elog
+               elog "glibc not found! You won't be able to play DRM content."
+               elog "See Gentoo bug #910309 or upstream bug #1843683."
+               elog
+       fi
+}

Reply via email to