commit:     4e48d17524300f7e990d1460b48a8d935cd73972
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Apr  1 12:35:32 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Apr  1 12:36:42 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4e48d175

www-client/firefox: add 128.9.0

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

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

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 7f374733d6ed..7a772dbe12c6 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -99,6 +99,107 @@ DIST firefox-128.8.0esr-xh.xpi 452426 BLAKE2B 
3d8c84612c104b1b80cc3a9e0b9a2a389e
 DIST firefox-128.8.0esr-zh-CN.xpi 686333 BLAKE2B 
952d19bf74421178b545221024d4f018edac4c9680f90b30ddbb417803c633dafffc0401c7654f3df0149337feb352105b0da2f96df50de1e8b3075e1fd78d0c
 SHA512 
fa3755d2ff811200afab42c1d6b8f14fab2b0a1b33fa85d2090f1707587e38fbbd7ca28cb9c7b3d4bc59019acba838039e41d30f76c5e1af089f6ec442d25bba
 DIST firefox-128.8.0esr-zh-TW.xpi 689142 BLAKE2B 
e537479b577f127348538593adfa6efc92fe2298b57ddc867b0f4cfdbf6cd18f46b1e62abe08e0b8e6d120f4ecb7e5485d9feefc82c08a4bd93e7f3339ed6e37
 SHA512 
197e2a3217d90f38347daedffe7f6a070f4da38c5540587f49b7892ec4ef944cfcde3e61881e3b3011f64e40628c7e7cf609bd81cf570c6fc9cf03f02b1f1138
 DIST firefox-128.8.0esr.source.tar.xz 563554116 BLAKE2B 
3fdfa2539b42a6a659d05ef9ad60d3dd7a0097abf3c5038150316d775e3eb864056a56edc58ae4e49ca36b3ccf2f05d68a07f8493a7649388e340cd81640e584
 SHA512 
7c0ef22bc14d4fa248cbae14d629174c9c967f891f4525f609760595f5a108aedf7dd804d1b63b97ec268613fa98378f4742a9b6ab562454351cf21175fdb802
+DIST firefox-128.9.0esr-ach.xpi 482233 BLAKE2B 
de820fcad4cb94ada5be9abbee203379cd299ae739e0fca00ac3a9593b906639aeebd7dcd783ea44f9bfcba25a8fa69d9c6f252693d12c8d4448d95aacf62472
 SHA512 
bd57885d8b5123adcc3c00f486a695604319e8741623e8fb9fd59d2ec2d734283d04ef2bf606a591d8a9d1b492aac6df33732996bad366126fd629d229b93324
+DIST firefox-128.9.0esr-af.xpi 446591 BLAKE2B 
c3e423119747c01e68bfc5ff09050191d07d192b43ea1bdea6643bb71bd565821b545d9cb5b7d85595a0859c557797eb6599a1af467d812dbd8ce5a6cb384276
 SHA512 
ca9626db10d7ddcf9163fe13a5e690f3d1bb9aaf3453d391f4d41cad36a06ad080bc2dae2fce6e0b9748170b2fd6ca9068d28a457f5e655dcef44b6cb5d91af5
+DIST firefox-128.9.0esr-an.xpi 526053 BLAKE2B 
f4262addd499702ea6f7fc4f1562e05287f7b10ae487c3435dcab00c912410f3e36c5fab2b7a1630d9e158c48e9fde8777920b9fd3a62ad603495c8508243746
 SHA512 
440a2fa1f2890316ebfbfeb25c5b903bbc743121374561671d0915e20ad8d3817a60ad673f251ba7d73605b8a47af36174e37f4c97d7715ddb2b551eb5564ae9
+DIST firefox-128.9.0esr-ar.xpi 650461 BLAKE2B 
e4f8188045f6fa0a03add36c19ddaf58830bf996d11fbf121d2068748393c73ae86cc8fb038b74d69a6c6a4c88ec7b24acc45888fd71c035265fb17b6be7eaa3
 SHA512 
bb8e6edad4fb8f7ef2da29d57a27a65a26933246d875fa00bdf69cd3eeefd2df7e43a906e3bd49f67edd92f4911565d6444ad2f61f9fea130bfb88e6858056df
+DIST firefox-128.9.0esr-ast.xpi 508562 BLAKE2B 
1114f3bd994e20ec82d3bb552ab7084fa5f31fc2467cad4ca0c6e92d59e10f8ba09eb05ca738161556bccaf373536d5cb4821d526a018a56793c58fbbfcea11a
 SHA512 
d457a9db6d6478cf7c66b146e9fa115ab9c209666bcf450bc8d2d7a53eae896ca56d67ed0605b6680ef5aae297e8ef99f960ffee5a36947ac4a82feed02b0faa
+DIST firefox-128.9.0esr-az.xpi 509835 BLAKE2B 
9c62e6a5d27c4c847f579252ba3a3d5002fafc6fa7e91ff7202b63d701dd6d7fb91365845473f060d5592afcdad933f656a759afa08c2cdf54430be1ba0809ab
 SHA512 
b4242306554295315e2b112648a733c974cb749e9a043a370d5ac7359f0dcbc400799145e7dba819b3c54ca450c76dbc6c55d29a5c8a6b4f0f07ded38d7e8c3d
+DIST firefox-128.9.0esr-be.xpi 748090 BLAKE2B 
de24d9655f97be5e8d5c11608877fd1b45c2eb7c9199c807c9003e9e0bee9e33a8f45061b92a5b2d5ce89d4b4e9afd3ad4996f7634d72f00ec6ac459d86f4fe1
 SHA512 
705d9d9191b41422431a8d5f3cc7298dd2f789b994affc9985b3a71658f62e49aedcd2aa30f2d621b393a0c535aee753f20f8724bd6efd43ce04e8f853a4e9d7
+DIST firefox-128.9.0esr-bg.xpi 672052 BLAKE2B 
4b146c1de45ae7eca50d024c0b0e778b6ceef4736168adc8d3bb99cb6dc0cad583fd656577c1ae1cfba2645de11fb59a6f688a2d85f3414ea408eb47af7a3193
 SHA512 
4399eb5e0e47a1f1238bfe16d8a87af948431523517a1ae1c8d8738f60eb7d1a2046f049edc635eb37f0b54464d5e44a9d42d39c41f8084721981c2652944964
+DIST firefox-128.9.0esr-bn.xpi 624735 BLAKE2B 
490ec1bdac1921cec65e84801cd492c15cb55c1b9e92e2f798b72f0530a8e0addc09eb37385ccf258112010e8ff386a6b8d77356743f128457361aeb0868f1dc
 SHA512 
9a77433efa5d3714531ae8c01548c53ac58b437e04c4c85af8363e89c868b788efa106301c8b4dbce12ede4aefd88b1efc6912d0fcdd5ea8a1ca2963ebc6fd91
+DIST firefox-128.9.0esr-br.xpi 598756 BLAKE2B 
54ba19243b46e6d206cbb9825b891141dba1e63ce1619484040e87276b028446b40ed25f864642cdd3a159dd44ec0b2c5a08a2317327b02ae3ec6453d287bc32
 SHA512 
127503d2c4d0871377a0de23adb6bd475233f4173c2009a868b85011e3a6e8cefc663a479e42b96e975082294a7cc0f766fc6f85a7ac08d9521279bdbab7a653
+DIST firefox-128.9.0esr-bs.xpi 565990 BLAKE2B 
cd75f0ca8952bd71b9fc0db41af488c62e3327159247468d3002c01b6418ee7608962efb4a81f1e477bc50a7c795cfad543b6f352c8bb8d2751623edc40b066b
 SHA512 
e82c7812547c8eadc2ac8e6caa97c161204d81ebdbf6779fcc5fa8823d9858b0f0be8bf1453ba6d735a28f78226755a0dad40852073838c4cfaf20437c26ceef
+DIST firefox-128.9.0esr-ca-valencia.xpi 561145 BLAKE2B 
d481be5078b1f86fdd1ed7dbcb84e641043ab3b75a243a4c8cf6b2367bcc57ced531ca4b75dba6d0dadc824a4693955a7cab6f0a3fdc8ef11721b0ab5f0e774d
 SHA512 
9d2a7311e523b99e45fc62949fc0e688daec2d5f6e89d350f897948f9e1c630dddf0a1eba88c2a13b4330e3fba75830ddaf960249113a427a419c72ab92a5586
+DIST firefox-128.9.0esr-ca.xpi 609959 BLAKE2B 
2082df2b69d981de89045ffc26c6c84f36f311a88be3c7da7b34dec2f81465d729eb8da3189a68eb918d30aa80301768bcdfb6b863980fb0d81dc26177784ada
 SHA512 
95257eb2abf51afc32c52b2d13c3ee87f6d51526842fdece8e6ff9431e634fbbaf7c4ae633a65605fad66010c6e6e9465441fec28d2e0b11c738ad5822c4e442
+DIST firefox-128.9.0esr-cak.xpi 601483 BLAKE2B 
ad69daeea47730ef03a9f6deac5d2b81e3492ad5eed9d010d03c0ef912ccb5f7c15f4e3cde50d8dfa2ad11acc7eb386ce6407aadf88fa6154f69550098ebc7cb
 SHA512 
22104a718e926cd3f61d8020016a7b92781362d58c09be74487419dfdf6cd9e48fa097384e1f094365675ec6f61f1c7e32b37bd6333036700a65858ba1c2deb5
+DIST firefox-128.9.0esr-cs.xpi 690630 BLAKE2B 
2885edb13f91b482e3f4f972f7d0cbe7cffbe15d9aae74570ec33033c8281572524b746022e52496b498fed977546d30a2cf365b43a4ef48696d25f30219c0bf
 SHA512 
18593f4b2b42176d7031ea18731e0a2ab090af69695289d4f296be914de041265a8f2fbb2429d07c88f77e2ce3ee58e6c41b690ed1e665cd3551058c3972c81d
+DIST firefox-128.9.0esr-cy.xpi 650601 BLAKE2B 
48c131e3a5f0d228ca7c3d71f799a10f0288ae305448854a50e27331fdf6402f5a5834775c24d73e6e5c39a4cd917bdcc1dcd07d606a31485fdd2f58f66d72dc
 SHA512 
ac12fbe433e37aafe44b9e4c8437b50934026345d2c9a62b97b7af0ef7d5e292e18f698f5f5aae2966182c95cecb17c408f6fd7793ae6d47debf732a645d9bb4
+DIST firefox-128.9.0esr-da.xpi 638629 BLAKE2B 
85fa3a40ccf77b1b063e9507237effd5bd9c3c898e81206c6a89a1db49bc871a572ea00bae3e526200855e8b3ef81ad4e29930539e5322983b88dfedef21bb42
 SHA512 
5e43cc09e18de017bf97d518d17b9a6294273749aefbcbe0634eec0a1191efa6bc7f690ce4f68004e3581a2ca9d3ca601e0d67a9535daf70c75a7f64179c6573
+DIST firefox-128.9.0esr-de.xpi 663124 BLAKE2B 
4d08767590350f41235b3714eefc2d68181d8765e2fbb56723773a8bba31c448f6b2e0beca4c4df970f471c46f51de4019f0e1da8a700fb89dd96314ade7831b
 SHA512 
ebc625e067c24192f925805656fb04efbdad5b6e6eee638ea4b60a9918258db4e3de2c3c4054e122593c84172d843ae9d45789667b07dd8216f0eaca44418727
+DIST firefox-128.9.0esr-dsb.xpi 679863 BLAKE2B 
33be6510de718ddf6f49c39cc34139297aa4297d030e8ae93e67312207d6ef620a031520f31abf4c1a157eac25ea8203961128fe6213c75518d6e589d2e5db6e
 SHA512 
8912433a9aa1b04773904502232a9f398ad30ab5b760702e0be81b7dfecb80d1d9ca326fd6191b474a04259c3e898cacfe4d4c69956de5037619aa4dda3d6e94
+DIST firefox-128.9.0esr-el.xpi 764545 BLAKE2B 
0ce6b5852617700ce6ac21cfa04891ef496c8939e2c3880ea342761ee2ca9ce76298a145874c865b42e34acd18854aa88583709be770e68fc0823d0f987d855b
 SHA512 
0a0a54aa8a6f0ce9f2d00582a4837f34fd1c93ab45035b07508a2bd4941250bdecf96f62da19c5e9c7082c0d306dfec858fc28e59776befc906dcf9649a8e7ba
+DIST firefox-128.9.0esr-en-CA.xpi 610418 BLAKE2B 
ad92e2622db61aeeee14bdd76e04df0b3ca52f9c04d420e14a5fe95fc909cea35a08eec2164819b19b29850a2f1b9fec622195a6af6ea76766e95aa27e7a2dc5
 SHA512 
81f7ce9d568446e123c21d51ade9e860228eab058b16be6ce4b76389d70b606257515490372398e7e6233dbf107b6cc679a7f2d2d32c0b2a16f4c559bd34a0f2
+DIST firefox-128.9.0esr-en-GB.xpi 610785 BLAKE2B 
87051894d09bef02066a1ce6261d7ed61ca985f684f43020d9325310e85e7796f84783e1640dbf6799a9be84fc5474c5f9ad2776bcbd0db6ede9c38a905fe23a
 SHA512 
8063cae9c01986003bce3a9f2cf4b59d3631674a75e5e5897ce15fa1f0cc837102c1ec8e933ca2e272665efa4f2e208727f865f241200d5729350e1078d862ef
+DIST firefox-128.9.0esr-eo.xpi 643525 BLAKE2B 
15814bf287ace7508da0eb5598d4383cca0d2346af5c6aeb38bbf56379f8119300a24a219aa486e96dd810cfef80c9e91eac6db448d8c37ae1bf6ca8e3fb18ab
 SHA512 
5469e508f6fdbe1b6139b7788732a804a6d103414d590f669a901b2f1bd97a5c007735edd5806090f921e88671c581575df72e2549da5546e17d9897c82d8688
+DIST firefox-128.9.0esr-es-AR.xpi 655620 BLAKE2B 
91cd3da3c9b4ac66dc28bc391972b9c2f39277d65c577563460aa0dc17965e37b62735240f40cb1d1fef021a52eb8cffe7656c6fe3cbf70e09b2b86dfc9db9dc
 SHA512 
e5cba05d6450642017b9eb6584d5361f2370057798d5c1a1f2546c05bd75ad48c6326eec90bbf0700fc57070ac52ec583806306f74c6f58e11520c7f37f540dd
+DIST firefox-128.9.0esr-es-CL.xpi 656061 BLAKE2B 
b83de10b03f5fe805dfa4db260c6f0a31af61b113a3011f7cd905893ef4461262e9a5946f55e16f4296d31d35be51bab8098cce790a2764af62ad3d7303b3991
 SHA512 
119c104fc983bea12633d73f3a0279fb866efaa5d4943e84dec59e5422fc14f3915a0225763e52cfee10335b1506d46de6013527f6d7af3f4d4e59579fdcae7b
+DIST firefox-128.9.0esr-es-ES.xpi 655178 BLAKE2B 
d53bdffbebc09d46f8cd7d53e9932d3a4159c434f31c131a23a9a49421a74c8774ab38fe8a675f6663ddd2c41759bc6ab1cf8f82b3a3c096e69c31e5601b1f9f
 SHA512 
e6941c24a9e5bbca27dcf7539902c22160084d324f77bd2fe99452c7e7fa6aee18a2fe5ce281ea90c8baa7efe71a146918390b66b25c335b1d12f022c969234d
+DIST firefox-128.9.0esr-es-MX.xpi 657394 BLAKE2B 
5515387733af34bf5190bda2382d9f7fe2b785da5fcec4f160e95d36bcad7567c708e57d8fa831d8c68b7e3e54f291b086cc5de436652a27314557e049eebf70
 SHA512 
e11fec736518ad5cac7ca2306cc428379f58b4f47b2d73f3be79651d9c03f732475f4c5e265ab319f6fd347f6c67f69955a4799bcca54578dd6a19d7d3972403
+DIST firefox-128.9.0esr-et.xpi 556256 BLAKE2B 
78f75dd5cfc5c061d71a2697019f4593568344aedd735be3a86daaefa684d48be724819a95cbe0950c0f1043245a5e3d603ea9111c01f746230f4ce9fcafe185
 SHA512 
6312a488db6461c522e6109957eaa94a8e798fb6734c07f487e7aa9d7c9df409456a72fcfa292ef958323fbddf52abe7cdb81d2f05a456419380b1b7be416bf2
+DIST firefox-128.9.0esr-eu.xpi 623939 BLAKE2B 
10417029f41b2f3d0de88777a9d0e3b2bdd49b6b637d857681364720e86802c99fda6a4ed2a072dd073b6f08f680e6ac0397a4e6fcad9cc4c158e57e272da24e
 SHA512 
125dad5f212d8427be049101299ca674fafcaaca185adc3e198b7389c64e5586dbd2d2629acffb200dbc22275a529d9bedb165c01406824e84ed3884377821df
+DIST firefox-128.9.0esr-fa.xpi 631016 BLAKE2B 
733b4d6d094f59e341506ee215f7ccb010a03d40257d4f22883b36747eeabf7f0bf75c3334ac0147a505c912448710d93d7bec9212f6d09940776c91aef22cf3
 SHA512 
f7a72fc1b9ace00f3e8aa7f05b02032e1d852a67863770741fb9cabef8a32f2295341b5f276c5e42277bfe3a2f71e4170ff115e2e351ebe868a1900157e78085
+DIST firefox-128.9.0esr-ff.xpi 497848 BLAKE2B 
93eeca1b21a65f3c15d44d46029d5b095878179c6796739cfb5c7fde69d188fc23b33a82f1b4074a33140918821ae1d7ac1f0ba5dead99057e41951ac22046bd
 SHA512 
6ce45aa584548adb412ea14c194c4a4760411f9ce6852951a70d74c49f9c3246c2181c66d02aabadf31f6e728d5feedaab04b43a5bdebf325799faf09c76bf0d
+DIST firefox-128.9.0esr-fi.xpi 633877 BLAKE2B 
586e66829a8ee338c4ae34ee1a65c295a9e9d8c7b609e7adab14f364263384a3471308ceca920239e44b290a42e7cb5bf2a7db745643a545872a8fc42f05e257
 SHA512 
6214a5b4ea31ce49a36a81e0737cefe2fb77cad19960ee13d404ee1ba07a33d6c69a7159e75cf0867594b8244ca6155a713a76d708c6c7b2f7a7003400a8c267
+DIST firefox-128.9.0esr-fr.xpi 669617 BLAKE2B 
8c4c0eec9ea947fa4727a54b0647a3cf1d81d492f5b567ff1dcc81b3a474c5385128224891adbbf7e1724a98dd21dfd0605b08b82665d0879dd4aac58f83869b
 SHA512 
24a48f5385fdb595d0b101285db861afc4f5820a80412711f2df262ff114651ef8188b4fbbc249c5fa8724398569aca3bf6f386aa355897f7f8a5be31d7b501d
+DIST firefox-128.9.0esr-fur.xpi 651571 BLAKE2B 
201a41e507b7c8d6c38329184e2199585bc20b5e2a31f18d443bbd80841fe1c2615d769ba7052e7bee5b74c5457f5a6792a7da559d525fcad6ed49b5a50d5a8b
 SHA512 
8a921616e92c4854a128802120dc52a5073946ccf0522d6fb33ad49e133c0c7b1ed15c25c905e2c36f7cd0786d71697bc18f7c693dce62bacfefb9c8c67756c8
+DIST firefox-128.9.0esr-fy-NL.xpi 652081 BLAKE2B 
0444f5e98a1e8d4f9c467d349665baeb60c844e16f36c5ecd8691b6706388ab766ad1762e014367b57fbdd6263838ec8198009cd608d2226c3da18b02e5ab1d5
 SHA512 
d0a64483a9a0d072c5391311ae9e14a4cd650a5ebd47da204aa1d51729874ca891d020833f810f2009f1e57c620114a87e9a22d3ef4055f1192d2c8183b96f84
+DIST firefox-128.9.0esr-ga-IE.xpi 490829 BLAKE2B 
a15846c3173aae1add6d2cb2a8ae547955aff1ae9b0b57ce3e0853fb7ce396a37489acf3f7ff55028709c4028c308602175ef5c5f665e56940aae96696159c20
 SHA512 
5fa25b7b74f20863e34433ea09c8371026aa65b823729b833629c458d4256a8ee1b020f6bf19c923d6410402f4f6f3ec9a8bb89265ec0c5bfc071c165dfdfa40
+DIST firefox-128.9.0esr-gd.xpi 609624 BLAKE2B 
796f55de232fe137dc837ee779f6e3cd855884d87da0c5c8151bb26112ee149afe818611d33f6f661a0b58a3d78bef5c63380a4ca074a44073eb54895df1ac38
 SHA512 
619fef42f9fb114096ef0768999a7c6d598e77b76fc309265135b017cce4687b22e63d54cadf6e1f7c9752c23916b240b213d88c448d970c94a1f0bf39105bf1
+DIST firefox-128.9.0esr-gl.xpi 615542 BLAKE2B 
3f9be0560cbe4d613b983cc524e1b43f7fad9697c8c69155b6a96a2342b40e096991466a0ff06f57fe92dbed25fbf701369291323c6308a0807c1b98778ca9ac
 SHA512 
ad9ea6e3545c87bdb25a6ceba18f9c6a0027065d0ed23fd7bddaa918bcde5f3286f3658d689f578889133e5516c0a46f3c28d0e8c6414d2193a683ab67fcd0fc
+DIST firefox-128.9.0esr-gn.xpi 659903 BLAKE2B 
334c3770751649184a81abd05def3f9d8ebb026f1acb6184e23b55c42c4925bfc6cb81e9b70bd0a60fa0193d36d3ecc0384f67c2d480faf0ba7a4418ae087e26
 SHA512 
39b235e08250c80da36ac1de4698ea49fb7d5e15228244374d13a99d66037a24064f544d5b9a374b120c0525cdd336b8e9e09d4e919e7677399ad72d276c43fa
+DIST firefox-128.9.0esr-gu-IN.xpi 552339 BLAKE2B 
07b1e8ef9c22460b8f217242cef311c889917737825d905eaa705348b52aeb6a2c3ce5e7f9792f230fc2525cd417a0a04d60759d022f62aea8d95a6368c27e86
 SHA512 
00e9ea2642f0831d8d8b4470e3bc143152774c238bf83f5e81257ba8271ac626876dd029eb048a7a8a022200727380e3399ecbde6b5402d2b4e195ab5245c8dd
+DIST firefox-128.9.0esr-he.xpi 659480 BLAKE2B 
f0df21a1329207302339f9903b015401717d46ae2b8759cb4bfc7b6edddb91449a05637350541d759d951327722a0d4550c042ba464cf2601451eaa7797ed47c
 SHA512 
c90b2a624b90cb671c7b256cd29d7d6c1a16bae06cd1a2807aff5d7d1ebecaff2db57dc18b27a8cf9c865e09b6110977a2ca3e437921defda60e5e85f5df0a9f
+DIST firefox-128.9.0esr-hi-IN.xpi 578981 BLAKE2B 
1e0881718c7c51ea85528a32dfd3f452b88b422fae27e1fb26ca647bf4b4227db00dd5f453dce786fdf570720eb57b7ba3a051bd2214e70f8af9444769fc4ff8
 SHA512 
bad6fa4da6cacf12c20ffacf7293a37045eb8cb045e785fa2f6f64144ca64add003d7047e393a4474fab8d9416d8c05738ccbcc759c16f35c49c0e36f9079c62
+DIST firefox-128.9.0esr-hr.xpi 645448 BLAKE2B 
fc1974587f157fb0261845ffb2080ec571a670e51d9b94c34dda4ddcdf47dbf510d68526bd621cd3c5bf1c31647f128753f3cd524e38463d804d9a1e93fa5d05
 SHA512 
10f4605c31d6dfc5a685d529607a4458bf9bed8c4a5800ad2e994e6cd9cd46cf7b965e14a25cf05c5a4a8b092007283b6f03c895c1b133570cefcb698e1ca93c
+DIST firefox-128.9.0esr-hsb.xpi 675858 BLAKE2B 
93e3c63f9071487bec4812489414cbefc4c052b1fa95d0e96d8af984f113e352bd2c19880c362c3d61e7843389c3ee965d38df74c11e3ec9493580aa7aa03959
 SHA512 
4dceb363bbd77d09e8fd190ba591caa33e25d79b0b6ddaa47b9b415e3cbdb655907acbc4533dc63ae5a83a563414375f8f666b3f3d6745f894fd0b5304bebfdd
+DIST firefox-128.9.0esr-hu.xpi 679676 BLAKE2B 
e66292dc1fe415836f6e073640ea82330b14945ec6dec18dab43ee6423812bee67da835bd03be4af274918e9cfcbebf1ea4ef049eae710e719a645c7caf36992
 SHA512 
3c1c0c8a9764968375c9fc749c7a73c5945369ea34791c11e0fa61148a74a2cb52acbedfb8f3b0c77df27ab0b4740d3e67f7acf24db1d3db66fbc7ba5d3cdf38
+DIST firefox-128.9.0esr-hy-AM.xpi 664461 BLAKE2B 
a5463d1938e3e5987d4232160f41eecaeccdf77ee44e3cfab04e1656b3d0def3be86aa638a459afcda80b72e53e93577772fa6b8cc90fe5900a8845134fe2944
 SHA512 
7d269e8b978a953b05b51c7344de73ef70f90069edb312f072570bdb551cc644ea338ba208a43976586d8be5ce1777a2f4faa1eb373b9e6afebe5ef3d12f8f07
+DIST firefox-128.9.0esr-ia.xpi 637945 BLAKE2B 
9040e9e59684354889a19113b2e8054258aab79d16e6f6f51ca87c4a19f26731ca5115634bf7166ec860091b51ed1bdb9d4b937a0520d09c418df974c6135e4c
 SHA512 
b72c7cee5a34445e41c03f1df8a05f3edff49926fc18935072aa3d391e6e398eeae018c6da30e95fc4eea3f475dfbe82690126176d2e80eac012aad640aaccac
+DIST firefox-128.9.0esr-id.xpi 625998 BLAKE2B 
940d4dbae339fa43a12bbc96ee3dea201df7e122e3bfe982c512c5b6a145d7301c5a58dd07e3d2bc82ca908cd5e8b35961a5f7bad86644f075f1bf2c2611d80c
 SHA512 
5001a9b9a9467462da3ebd735b74ad9506ea30eb6ccb1f9b5fe1b62a9524256e35c2e35d5135d947bd386eaebaa4a71077c2b60db2a6dbed4b49bf9b2554f344
+DIST firefox-128.9.0esr-is.xpi 646726 BLAKE2B 
2a6fd78f67e9b76ec4d4f72deaf5d0bb9728a2c34872dcd7e99de469033265e30eb0bdb72a10c7af62e8565855050e0fc50cec05896cee01aa587b4b9e8695b8
 SHA512 
d74e4845d947f2d4054ad949616340c08429eee43a12aa9d5e69c2249e4fb273e9bcfdac5ae18798a4097059e3e3033750100ed5a7d30f126990d7519169887d
+DIST firefox-128.9.0esr-it.xpi 648853 BLAKE2B 
5632edcb794b8d2f85aff7cf12c0dab10e4267dae4c960847016c1ca26b674256a19f52c23b8ba2c891e4977e10e62b42d4e6c8fc5e7ab61bb0d71b9a48cb06c
 SHA512 
0901ae1da63889acb5f115cf1e6f4ece049bf5050a4ca83e7166a3ad294aa6843c7710fbb082003cf2c3a2227d9a719dc2999cc0d099b9df27ef4be3994a8434
+DIST firefox-128.9.0esr-ja.xpi 704121 BLAKE2B 
2b497029f73aba6eee9ac9330cd3f2bea61cd811ab6f2de48b59c0af5c054140f0fe2551f03858ad160697bbfbdfd71767b5d5025ab85ea97b99491e798764f8
 SHA512 
612e506397f7a68460336040f611c20b803151aeeedca478bb50a8ad6f4bc885a42f4bb718659967335e2472618871b7b72b19dbfd1c976177d529a49d88c328
+DIST firefox-128.9.0esr-ka.xpi 714511 BLAKE2B 
57d687adca2f8d603f946b3e970d02cdd4cec7de82a529bfc54778c1e30ef9bbcb1733a52cf43cc85d9ab0ddf06aac21cfdeb7e62d4be5bf8f6d1a9fb4088933
 SHA512 
1c19f9da83a015fba008fa8e36d7aa98418beafe05d898d6b0fb261d71536e85225ce43d91b0639d6b125c5a1cbe63e58af1f9db2de3c71937caccbf90c5afdb
+DIST firefox-128.9.0esr-kab.xpi 626278 BLAKE2B 
0973030f805d01217e06eb1f6b48533297361ae688c4df9748cd9ceae53a30fdacd8c8a15772be6c90a59f0901f94bd9fe1eaa01674e91f832d0aed4163ca295
 SHA512 
9226114080cca6cd8f5fda21a677c0fa8267f7c1da0f180a8c7df3686d23a5405e845de171414b6b9f7968fb984c143a123df41f6db95556f0f89e0ac01f5bbb
+DIST firefox-128.9.0esr-kk.xpi 734548 BLAKE2B 
4c7ab97dfa97cd558a82edf2012b48272158a190a0e674a17b81f40093aa4d502209e41878051e3a4b528338761a3a11f4344ef503b826b9d83e152de9182ee9
 SHA512 
17dda8d71a2ebb531ad31d4e48633e2c9d177bf4ec877ff41fc3a9cd2bd18978083663b67c258402d6c253cd10f79594a40bd7ccdcfef8761d294e8e1251f184
+DIST firefox-128.9.0esr-km.xpi 543156 BLAKE2B 
7fc73a8e9dc9d4b0d2e181f4ebc1b3cbc2f684d94bee720bdfbe162c8dafcfc00b5b0311d026170465ac93621daf2552be28b841db799b77c25b080479b12340
 SHA512 
4d1a99bce1a5bc004fa850587f0ae7ef230492ac01e518ada34fede9eaeb2ee8c985a7f06c3d6139ec9fe6a852aa8666bd890ce504ec60f8a69a991242b00af9
+DIST firefox-128.9.0esr-kn.xpi 520320 BLAKE2B 
5a27169dcc147e737f08d047598437290d64b07c0e9f87bbadcd86c508da574b73804c5a8ad34da165e34cda0780525f8ecbf0c2dbdd7b5ae9249200a4d5540a
 SHA512 
57a6d07f14327a22c4ba5b27e3d71d965a122faf91e6a82e572d90fcf8a72728e3f3814294bb56dd0c5cd3a9348e6a408ebfa147d4aadcce2608492993da78ee
+DIST firefox-128.9.0esr-ko.xpi 690556 BLAKE2B 
bb23c9e9f4e01774a434107e9bc25526ddefa624b2e33098c1ac74b62330b793005074e0dddd8fc1bfc4c6ad0fb737de506a568d8025f65e4761235858647317
 SHA512 
870107571b81aa58ae68e6f817590795f2432615eecd074c02e61a98199c7312fbbeb283ebfae8505e9fd4e9746bc3915b967b34a393612d47c45bab75225a5d
+DIST firefox-128.9.0esr-lij.xpi 506287 BLAKE2B 
1bb98bb0e7019a28d8e1f41df0b77c2b4634f2d99e81ca7203e2054da5ae0e8b8b4e55b3710483f3b4718e673caba4b168c48c32723628f289e627bf03aa57e5
 SHA512 
84d0c7cdc7aa952f9f35fbb4c13be79913e24a8d4c9f65464fa2eddff81fcd390c229303cd41c1a3b50e5d92c62cf2311a99d33dfbefee89d444d6d12dc7f0b0
+DIST firefox-128.9.0esr-lt.xpi 585989 BLAKE2B 
6e9b52ddf0450f7e6be93263ce6770e90e54be9c521a53e932749cc7c9ca6a53e06b5e1d8edc2bf623a693077829f6d233d248a7b04de099fc8a8809acdba5b7
 SHA512 
d24f938d17aee234fe297d1fde5da21ba220a1605da52682f4cd100c66f33954be5222236c87de700b037c107964f03fd9089bb70cbe6c0bc6c0444de43c2a18
+DIST firefox-128.9.0esr-lv.xpi 595099 BLAKE2B 
7af676dbb13362dec9ce36244cc82178296f1a9bc039c9a669faf1bc30b4856b82a3d4b3b9b248a710850fdb5bdd66d9600e893cf1d217ff59c94b9ab61b578e
 SHA512 
707a18ba623b26b13c7310abacf00080341e0b0eb119d29ba80fff356eccc1da43bdb3ff3dc471f5366d22bc303b25672211ca4e1750ddcc95b80341f3b148b7
+DIST firefox-128.9.0esr-mk.xpi 511079 BLAKE2B 
e59ccbc56701bdbd231e47339d8d5fb956cc9cf347a83cb5f98d0e2a9403ec92d0ac88bde13d00555f48b2b163f64caa2e5bc72989fecfdf9c6d541a57fbb0fd
 SHA512 
86be06e3aa69d11ecaa350da145f0989c4716a416fc9d840fdf70aa59dfd969c0014c917fc88c3b847594a0d06ca9f1ed843548a19ffe72cf4b674ecbca083e4
+DIST firefox-128.9.0esr-mr.xpi 552805 BLAKE2B 
843421824af2f15179a106da57b73c1f9d574f520033802b107411cc5b91ba01ff4be07598eec9e4d903695d0f5bf2d6862113424b895823fbe6fa882edf05d1
 SHA512 
5af691c8ee4ee3325414ee6b0405d13e0749868dacf06a6bccc3fc90b0e750b2e80111edf89af7548e1e95ffa5a40104f3eb5e37e6af40ac20528b3a2974178b
+DIST firefox-128.9.0esr-ms.xpi 477965 BLAKE2B 
d4cd237760780a195443aad35264ad5b36aaaa60525ad37e1ab78de698ac3f9f62c5495250a6c0c414199a66c33a4ede32356fe833d9b993c2c254eb91aa54f1
 SHA512 
8d20a9661b443950567cca35f09b257901732abc7857588c9071d40f189523187c6e27b90cd61d062041452179db71d28f5fcfe7109dd29d09c0574aeb0e0259
+DIST firefox-128.9.0esr-my.xpi 540061 BLAKE2B 
5a069dc41543c6cef6dd2fd14a3d46e4179cda43f163138228be3516cae0ae01109b4bba04f0f5070828b8ad4d80d515ee58fc86f4f4883521836ed9201fe0e9
 SHA512 
584d38264b0d60305db8eedfcb2bd53651881b6aec5bd7d317cdca10214cefe86e7b13eee2679a26265f333bc3f79f52cb20ff653e1871928e005067e1aa2fef
+DIST firefox-128.9.0esr-nb-NO.xpi 627683 BLAKE2B 
e3160f3324d2d202123eaf7309e873f01daec2574eca8625bf3d8b0136180c83358e697615bbff5c470c053cb652397d2589800ac1d06f114acf2539e991e697
 SHA512 
a7e9563bfc2a8ee1f7009e17fc409671959585126d9ecb6f6b36eab393aad4ec6a1298bdff232e18be677112253420e7d04dffdea0fcaa9abb83fb7bdb450925
+DIST firefox-128.9.0esr-ne-NP.xpi 543834 BLAKE2B 
3245ddd93ca481addefeefce76068f4bb28445909f259308b7165bfa4a5322027bb052a0b787837f72ce8c7bbbcef71c042eb23940dd75411c66e35a8733f301
 SHA512 
09780e24f788d1809d3ac6e52559db5c04006161807d345d774c7069d027a5f0c7c8eeb7ffc5702c908563204ec374b4867bf804aca138464256b3a190cc5dd8
+DIST firefox-128.9.0esr-nl.xpi 645183 BLAKE2B 
5182c350e0db8ae98e4105575ebb9e7d84e50290ba9ede23e44294032d84070bdc3f66f4f8fd4edf175b9411fab83769aeb8fae56110022b77057bb918d891ec
 SHA512 
91329c3e28cf0baabef30b50e79fccc907e6e348913cfa2428a7f1d5c5b38b9e4afd3cce3c9c625c17a319c64c501c6e923da11a71a615a10df87ae5813de7cb
+DIST firefox-128.9.0esr-nn-NO.xpi 630290 BLAKE2B 
9fa5b27cff7c26d46142bf5019dd764ccde6be7b7169dec714e35f0a07bd2c1c247c0e7fd56e71f310a915c5ba31f7b60c815c1ac1faeb4ce8feffb8d7864be1
 SHA512 
e27ceaf937a38c8563a7a768d8b8f60e46d31f32fc7688c0e786349e468d7e5cbc337ff8f459ca3230eb5979c6022a0572e46bc791fcb23d39bcee40a40ca4da
+DIST firefox-128.9.0esr-oc.xpi 626819 BLAKE2B 
0539a473b34330c09545b6777bcce64107df696954091e733bc14f34c5fb4b8f84f539799d902fd1dcd3158a9e4647af7dfd62be9990baa5d9659fe851e6d8ce
 SHA512 
cb9b24fb091c45580322617c20db99eb51fd3e7914e83febc59aa995198e8071d571223212a3b747015a053ae5511875deb914e8630a134d3a4030fe8f968f1c
+DIST firefox-128.9.0esr-pa-IN.xpi 726719 BLAKE2B 
54c96c09c6f822158f666fb02c45ebac170def19f7c160fb9c75cf560a84ed24832f3d66c42ec64f4b1b03aae319f85dcbbd3e06413aafe92f5f67774bd28df8
 SHA512 
b5a314379e4cea258b078ed90fdef21484ddf905860cb7cb8f6057b54a74a3a91f4c0d70d73f4c0add8c271c88db6aacdf06c1d977cdd1bd72b521d5cc41f600
+DIST firefox-128.9.0esr-pl.xpi 669244 BLAKE2B 
ac3cf2a517f54b1fb9a01aaee1fcf0610078abd4ea8704f82b57880e98b5f55c65bf5aa4fdb36bd2ab07747a76bc4e1bce8f90d70c1992ab04dd85194a7759d3
 SHA512 
dafedc6f1052d8612322af21eeaec12d9dd231997191f75c33ce097c68110e51ee28b2e8a626731cc388d7c0a3242bba13136996e562ce2ac9348842215497e9
+DIST firefox-128.9.0esr-pt-BR.xpi 650224 BLAKE2B 
51560c0e77c4c11de542fd0c4d3ec594efefac1258211dc50b5eb41d7726d9f3e400f236cae891f1935c8779ff02146dc469fad8f21db9b30a602d9da838492b
 SHA512 
a5cacc84678381d4eafdc95debc7abe254a3132a317b0ee30f4d497ee772a4a09ca8019422976f04414290fba7e378591b7b50868640df3b81b6e4766eec426a
+DIST firefox-128.9.0esr-pt-PT.xpi 654869 BLAKE2B 
caf72d68afa1947413e3266ce889bc5e492288f04aa5a719f1cac7342b2175df6312af7e446da2271ec083a75a747d71bfefd041ff06efa38bedd523002fd2a1
 SHA512 
b96bb464ddef5f2717a0056a86c5402054287490a59c904c9b18d1004e4bca826af66e184b5fd73dc72079f6e573e1a2d1e271d14d9910c3e28eb99a440d2c74
+DIST firefox-128.9.0esr-rm.xpi 646690 BLAKE2B 
3fea1c1f16104748725faec46366101ffedea8aebc4ca914f7b9b291736f50107aa0c4f907de90811c934f0e055ad13c59e4ebfad9f92deba24c50670178f223
 SHA512 
f53d795fa2ab088258ad6a517a3be485e348adfd0708f894443b6698394d8a5515a083b8437e11828737f7701e6a2680ecf1bc27f84021af8cadc40909f8730e
+DIST firefox-128.9.0esr-ro.xpi 562846 BLAKE2B 
b9a43ab0e25148c3b20ad9a01f83a522ccae3f24355a1faf516be1cc1cf14c99a2c18028c36d4891b623206f88d07cc8b529ff14a8f56f23bd3431f207b89557
 SHA512 
59dd09f4b7911e8a6a7a66180f4f5e4034b3376c927dc4694607fd38344ff82a0731fc1b41171fbb52e45425233958b31574165434bbc7ec33f3e521b3e95df0
+DIST firefox-128.9.0esr-ru.xpi 753058 BLAKE2B 
6fab19dfdce46f97b5393620bf28ff8725afc1aca15b6828088608d16f7d6729b20d5b6256ef43e3bbe0e116ec031e251b53662101d7a6f79db4e596993a5804
 SHA512 
184cfee1f7d76195b1242e1618d10082521ae0f42d77aa3311291b1529cbcca26c75893f1ae4338aaccfd7a0d013e647b051a8b571aa52c418e0a688ac879f88
+DIST firefox-128.9.0esr-sc.xpi 604293 BLAKE2B 
fbea01e65c3d1282e4817068343b49987740418767c8929c81220c9ebe01a4588353b4960ebc0fd1a63194275bc586df90c84fe6cad18f8be966e51a9c259c9a
 SHA512 
ee22070a55298717f993d982d60a005107b62528b40e9f1617cee671ef029977b7ae7681a655d11aa5f156b2ad04b6df1f3452af5136a4bcd1a389f95bb904e8
+DIST firefox-128.9.0esr-sco.xpi 524649 BLAKE2B 
87b29ee6d6c7b756f4f1c0e579ec8556b3a2e3468d0f3be738fc32d37d31a419291127dda6f196eddc5ffa13e2dbf3cacd01f0c75ac4d73c5a429b455261c566
 SHA512 
3fa82c543ed911f126d9a90b44f62179be8aae3bd7ec9bbb467b2a89ba7614d146f58c00b4241abab64c13fd3716cba9851324479ce57fd1d546adb01b833f10
+DIST firefox-128.9.0esr-si.xpi 628196 BLAKE2B 
cc1118e2a04afade63946cf7010a905d8ee2fe650b65c9d259d2ea139b055a70f71442751ddbae36debb5eb91ea866340ed4b327d0366985e5d290f8511eea20
 SHA512 
2f0e621c55d37ce348a5ee80b8d7a7dd99bc0c29cd536a79a14e0fddb44a9fa98e1a31f0711cf508e7a8dc5b63fdaea45a28e8a47f07f257b3d2cfc62198aa70
+DIST firefox-128.9.0esr-sk.xpi 682233 BLAKE2B 
e66d185638d74d27be89ac1fbf2e2ee80eac57d47c4c06764e3594e0e05b3a801cba8bab13ce98332af046663931205d87dcf8531389a41c25a9078e8381f28b
 SHA512 
c9f387c22ebe99f6f82e414919919ec0e365fa8a2bcdf4d6a2f687d5c4d6d624522d640668d3e6686865dcd3436ce361d98f54def6fdcd596e9f0d3e9316ea63
+DIST firefox-128.9.0esr-skr.xpi 726694 BLAKE2B 
a50869644b5ef4823876073132930b38762b9ae59780cfa9980f924b464884e3078e37edaa505827388a44ab2edbbe52fd99f3631f6b6a74d1f8846c50ff3c12
 SHA512 
14051c4ce2ff6d1da3f103694b528d9cbefa2165413f1e234c799dccf2d68ebf638ee1c16218218fef6d583a4b9debb9ca54f988466839a58941ea0dfa59d4bb
+DIST firefox-128.9.0esr-sl.xpi 649037 BLAKE2B 
1015299fad981e5e5efaad05610026c1cbd0b29703c81052845b10f01919c28956605edec203393bfe7ca5d538e6b36cc047a9d4cf30967aeca18e0103d73a99
 SHA512 
2bcfdcf547fac53140ece9e5147e80c6dd64577221f890899e858e7fc79cde1df2b24ea36a0ef78fe4c1ff731aed330606c1301dfee2feb07b296cf97ea6dc36
+DIST firefox-128.9.0esr-son.xpi 451701 BLAKE2B 
9b409f116556e657508bd9887eeb9c05937b9c0c3379c0303ef812bd5b554975959c2c4792c38b8eca3acfb4c22b4fef561241786aeec5bd4b1899ea01b37b5d
 SHA512 
4141005ee57b469e1b9301c957a6cd7c9d5c49bec56d3679e376a773a4a3b9a77adbe5fc9feb6e05770de4e070d41538e7fcf3ed58a3dd8211fc55197f501926
+DIST firefox-128.9.0esr-sq.xpi 665741 BLAKE2B 
f1dcf1eb5c76bc1819c901be4e9e446fe99cda358535a12a06e1cfb2aad3856edac3de99b33e669037dc93e99d9a6e99f9470537fb3dacee0341970676e3187c
 SHA512 
43a075af1f08ce61eb55243d3df90b75d47f7bb470af6af1be6d42cebf39f189aa2801db148aeda7b1a586e3a622f8aa4c8901c1232b7c74e52e5fccfcdbb50f
+DIST firefox-128.9.0esr-sr.xpi 678442 BLAKE2B 
089f87add5b379235d87e36a102d524a4cb7aecfd67e483b73761e56870634905a8ad2a6e85a3152bb86926bc563eebe05f8f8ff382449fd705f855c3d3710bb
 SHA512 
a6748e473d82651b632586a8623b47db8ffc7abe887a4d6819ed9f8f14953cde36f119899716102f8e6e51e6cf921e4a4d582ce2fb443920a944e604cc9481f3
+DIST firefox-128.9.0esr-sv-SE.xpi 646489 BLAKE2B 
5a0373eb3ec03cdfd14536c8dfd41f6d73d711eaf12a4a5db10e70926f0f5aac8aec66a29cd19d234a44e62d8cf0874cea9d61ebb4c22730c9dd7963b71732f6
 SHA512 
317bef0fa52f7a51bd6ffcb1517b2d58f3deffc6f930e4335046ba8416a4d53e3e7314ec9e5b581c924e3ebff53b7900943c22393f5238ead505f96b69b748d1
+DIST firefox-128.9.0esr-szl.xpi 541733 BLAKE2B 
82dc35ff0ac2e683b6de563bd171bd828f6eed27d412f4e72d224ca619552a38b1b94d731f0ac96205ea4136f0dbd1178160e4c80bf85c414086d665f094a074
 SHA512 
0e469ee8aca3eb5b63eeeae9f2f69b0931a9c12cc38c177e49a8b5422dbda377cfab13374209c55158684cf26610a6c116e252ce5895e38de40e1776eac625d8
+DIST firefox-128.9.0esr-ta.xpi 530541 BLAKE2B 
871ecadcea225a4755650ab69a7df7ebda4364d8b6d6a86d89c283f1d8d5311f04de11bc44834457ca44ba2531e4ddf8b21089ad3ad508da1b14357ba40ff4e7
 SHA512 
b2d48d06e788d68a4ff7544b03bfed2b350af5aef34203a53fce782a725748c066fd99753b291631410f0190596113729b880bb13242c6558ad1df881017255a
+DIST firefox-128.9.0esr-te.xpi 583145 BLAKE2B 
68ed4dccda0f5a93748452bbdd48aba9ddc442ce692edabaa328749cd3b68b59ae51d9ccf215b34e5aee7bbe7ea1a26eca7b63980b4ee65090b9864b022121ba
 SHA512 
4b1dadea77eb7256e527b96e9ff8e67a406f395e26730059e44f33fa3dc0d5a8c5e0321a308d20f554de957eb3d64c5ce91e8ff2a470a8d2c84b9a871f4f52c4
+DIST firefox-128.9.0esr-th.xpi 728452 BLAKE2B 
6ced3c4e7fc8569949b88578348f234b8e7bf03ed1822447b1fd2435bcfb5f9c4e0267ffad87759fd1f7f6a8655bafdee8cf221324a8fb6c98607b7dfe824309
 SHA512 
a23b34f9e3619ad58987a820f419698c8fe05da32e39c5cb85393c547035e3a55ab11f5f997f8d36f27c31d1f7497191ddd519c907a8a44df95df17bcc65f3c5
+DIST firefox-128.9.0esr-tl.xpi 546950 BLAKE2B 
b64a7b22578b110957dcd28af575634a7ba5ac2d4b8b150592e2cb74abbf81a012b6a2ee849aec317a7c9b3cc51963f9b3a8e8d4ac541fe76864a6d79db0d31e
 SHA512 
bd6681b92e70b8e16f1c55ce674a6f3d42a4ec1135e09b44e39eab8472caa39a03d53c87616ff8217c5a07fc7a6d46e0244296e177139d91eef6cfcb760c7c5d
+DIST firefox-128.9.0esr-tr.xpi 659453 BLAKE2B 
80905fe0ecce69ac20c4e8495e7c4813b82e0e763f59e53c6a3b882c1250ca90d5f1fac48ea949c40dd770a1708e3a3275cd71e3b424d41bad020a72d7d96884
 SHA512 
6abed12f46bb42af601685e42160f78e146e80df9d274108f7cec59a1604c846854cd9b03ea8e99421547ab3871e8f9fc6ef4cda2fb10d3517c81e736c652e53
+DIST firefox-128.9.0esr-trs.xpi 522149 BLAKE2B 
da180ea3961acb73c67d28c427d3a9dda77b65205a04b4bb0625fbf597437c10b9708c4c989b1114410acfa9b30bb271844b551d91d7fac6fa02bf3232e17ea9
 SHA512 
885ed32260bf933f547590cc2297a8a229edd472c7e8314fe112b318a85481ecc1e4593669e4c8f55660a19d6890e0919546353d2a025c280e350dd6ca2a58b2
+DIST firefox-128.9.0esr-uk.xpi 743993 BLAKE2B 
b9729271f70a048b8aa683ec19440ce6754cfb7a0d1d5e08f5d16b247a4563c57d28132d1127f120b2999b62d87edad07c35a588f2acf872fc6690aa3d3048a5
 SHA512 
91cfd38469f62fd7aeab5ba35d4603cbeda9b2a36516af29b76e2db25d26a00a311ef2d872ff8110b2153faf0c537ba4a1a04e0ef01d6b7d79bab1d55a10962f
+DIST firefox-128.9.0esr-ur.xpi 574502 BLAKE2B 
8ba09408fe8863a8017bebaebe048c083c599bacdb7e4362ac380bcfd96b381bec96ebeefcb6c0320778cf0fea4db49c7b954d97f6740721aa1f56f4ed57e8a1
 SHA512 
b31c720e0fb053b2d2b600d78a9b31f78980b3870209fe9c66f276a31c99cd79fccf855647d6b9b5d9862c865f0c8acb96eee208bba6f684d84b57cfc2459c95
+DIST firefox-128.9.0esr-uz.xpi 495295 BLAKE2B 
d1ff5a9724d86b5771006df2343ca1c95897ae061578b3bcc55f9a37ad3f92fe26e7ab569a5ec8ff3fbda2ff83071788b3e4a2386e99d8cda12a11e276e6ab96
 SHA512 
d46b494df34ef42d3ae6123d05c767321d2338a134bd71281f089eca9c28f4bb5feb6f01816009ed3b19a694bd7f76ff8c970df1f956a372cf9383bbee81a911
+DIST firefox-128.9.0esr-vi.xpi 683666 BLAKE2B 
03a1d030ce3f5a8f54c8dffd2566ee9e190bda78404a6db898c58baaf163c3939c307637a21a213ac5dee2ef239310fee8a500eb2f2cc42b9daaf209c2fa9d78
 SHA512 
235b2c12421db95504aed1cc5b01701ce3126dd82fc5be9cb87e6610e3d22f23056eafc0736b611696aef344cca4573c19f842e59fc370c2757a61e2936fc913
+DIST firefox-128.9.0esr-xh.xpi 452430 BLAKE2B 
d4b0506c562fa83d1fc1ce1286017fe41b977e164681c48969bb1809b2b52401fe9795adda5288c9bf53eda8dc21b70b17b01455f94fef20e5abbe8fc541f252
 SHA512 
770d6eb279738e45bc2c97fc45e99add8ceb5c3c3caa404aba44f565ef527d53f28fbd463e46293aa45846f0233309f37f41e1005d62d1497e99687ead03f4c6
+DIST firefox-128.9.0esr-zh-CN.xpi 686332 BLAKE2B 
e9130871e826721e58a3bd850f63a73ec200be89b30ecf9a74076e53247f8450b8d24c04d5ca198f071edf80627af987901172534763c819fdb455d9167df5ac
 SHA512 
079b780b125457ca3bcd3e4ed2ae9a9ddaafbfd6652c1b5f508557d304087aabd26ddc55d8aec4c60d47e9d58a70ee842a9c91b369578fd5bb34f0cd747c5ba9
+DIST firefox-128.9.0esr-zh-TW.xpi 689135 BLAKE2B 
ed751b14944a1c8227b1e37d816a2f8a057745e807067debcde6be490cb73af1924347451c1c9993845a7a6983a6b82aa52bb9008fd3b2bd4ed5507bd46eb1a5
 SHA512 
de655a1ded9c7aff05602b78b9fe8a2532b6c0381986d7175ce26b08a981371f4daa7c97347de94cf30cc553237cc867fe030440e96952f464c104f80a8ac78b
+DIST firefox-128.9.0esr.source.tar.xz 562959584 BLAKE2B 
e49ac096a68cc450be909d3e5d325ae5d45acdad5a37afd6567f960d585d30f6ea3a03e9f9e976b430a60180ccd2baaa1679050f46e0a736a46c0cc6694f3797
 SHA512 
c0c8ac8374291cc93279064c73c17786c6f4fba7505ebc2cbd7a4ce7c82710620abdae7be15f60c43f9d10c3614fc9fd31f094e787105d528031c6f0510f7339
 DIST firefox-128esr-patches-09.tar.xz 17976 BLAKE2B 
78f64f5086951f7bf2b304c1148154647aef5c4e699257cba5e94a83d8d8c159a591d0b2a7a5f8bc0f8ec28d5eae66a0783b45f94b4ef713282a6f88e46c75be
 SHA512 
159d8c94af0f90c10baf7446e573a37397b3be7103e7001fb6b38845a28a41793c21ad24c23e0b3cfc4daa2c3a6040ef701f612693c9f4dfff8534f82e7b18a1
 DIST firefox-136-loong-patches-01.tar.xz 38508 BLAKE2B 
2508fdb9de68bb90edfb3f4a15f79579cd8865cb87ef0a9073c3b740152d857b791cb53c4520a2bdc466f083e7aa6e028a90d44b61b3eea46395f62115b7272a
 SHA512 
e4f83d6a98eb25335de80bf396bfb2d0a362e7509efa898291f524d6fbf20754a278a930d61b3b9727e6b08d8e4959b001c75c2e3f648ce70444b39950307157
 DIST firefox-136-patches-03.tar.xz 13356 BLAKE2B 
b69e64235b2ef72839055a91e9ffc881685675b46884171dedcb13f68710b083318e15ecfe8667652255074ed45fe722c91fa4f54ba457f33774af33a7ebb33b
 SHA512 
b7301a60ccee7b8e870ac57200cd7242e5e2b8fbe8110d539a038f6b74d6fef86a96fc9f3dc2aeb387e636cacc875828d2b02287b8f5f7dbc6c333a900ca75de

diff --git a/www-client/firefox/firefox-128.9.0.ebuild 
b/www-client/firefox/firefox-128.9.0.ebuild
new file mode 100644
index 000000000000..6273f0695124
--- /dev/null
+++ b/www-client/firefox/firefox-128.9.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-09.tar.xz"
+
+LLVM_COMPAT=( 17 18 19 )
+
+PYTHON_COMPAT=( python3_{10..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.mozilla.org/firefox 
https://www.mozilla.org/firefox/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.mozilla.org/firefox";
+       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