commit:     12f00f86649803e49d3111363289239e44c02cf7
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 24 12:05:57 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Jun 24 12:06:36 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=12f00f86

www-client/firefox: add 128.12.0

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

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

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 89be666501c0..3f316f63a33a 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -99,6 +99,107 @@ DIST firefox-128.11.0esr-xh.xpi 452429 BLAKE2B 
483463ca6f9138c350d6ecc1a3884f1ad
 DIST firefox-128.11.0esr-zh-CN.xpi 686330 BLAKE2B 
33e93f2bc66b2f9098d32284f74e91bc5c668c4ea333d7c2bee8e36077ac0af6248c54212ae2f0e5bb3134d5ae15d6c1009c8fec03401636bc156b5aa43ff1d0
 SHA512 
70848eac6b137938528544d8cb866f53ddd22e80495bb9d00908342fdb1f84efc383e2346891f532b04c33d89230ccbd40128e78a8cb9e7c4100bd28c7a3fa1b
 DIST firefox-128.11.0esr-zh-TW.xpi 689140 BLAKE2B 
92c6c66db406c6805b88902b4f22a8d4346c403818e74e72143f393992eecbb129fde3bc44825380bedf2b48d1e9c66c5fd28910f55579be0e03999caee65a28
 SHA512 
78b1be4c75947426ce20d82f3dd22cbd6b34bb1c6436dcd58ac2e8ce39a54dff8fe42ddc13c215e4c77dc6fb04a97e8a1191e423d5c53e4b710d97d54a461b50
 DIST firefox-128.11.0esr.source.tar.xz 558920388 BLAKE2B 
698828743acb046589b5eadaf7699d39b170c8e9491585e9704599e3a7a2519a3e5c516a10b8af9ffe425319b6c386cfbcd6694c8feb309c702eb7e44a9a2c8e
 SHA512 
80af64c1dce6d7a25111480567a3251cc2d1edce00acc4d85bbaa44590f5bbf4c0716f9490c3ab8ef1e6fc2bbabb2379029c2dee51ce477933c7a5935092d279
+DIST firefox-128.12.0esr-ach.xpi 482233 BLAKE2B 
7d365f676629560c0ffc1b335fd83e93431327ba610c106529d5645b9600a2d6a6a27ca1c656ba4bb582aa097708e42cb4246a679a5967e84ccade312a07257b
 SHA512 
fe533e259dda3c1a79b1b637b17e0dde8d662bad0a9bb18e89cc0a912717e003ed399a8edbb149999d3afd03081cae4576deb3a87570230a00a1e47e1567baa3
+DIST firefox-128.12.0esr-af.xpi 446588 BLAKE2B 
2403f87a3dd87cab40bebf7e7493ce31a65cc17b4aec48d3d6a7160201eb3a91595b772267b7fabb8c9c797510d5b687104ef7e60924a996e74ecbfd16fc7e63
 SHA512 
f7fdc86b8df628a90cb9b260a555aa0e112047064ff9f5770822d5516b866eca5ceab5aacbaffde526c2b194964511bfddbbfd53b2f670b7ecbca568f66bef79
+DIST firefox-128.12.0esr-an.xpi 526056 BLAKE2B 
0ef11312ed28f04047dadaa84fc375a2bd2a44e9857cb058d9cb2fb3ffa2db8e6c531932cb0b3275657ec7e69ea365e8c9ca05be1131c685e5d66f6d37bed001
 SHA512 
56afdb828452bacd5817a3dfb5d36af727c249ddce069834beb09e3852ecf7247fe5649670553d45b9f26b9f601e34d2d2d636caf20ad996d101695c751215a4
+DIST firefox-128.12.0esr-ar.xpi 650466 BLAKE2B 
2671c8df121ee76fb834d5dc8d90ac435246ced3ebce36630387f0a788fe9a945687718427bec831c84bfd1970cf01dc4130cc064b24220af621cf6d0c0a0147
 SHA512 
3f1e3c58c103ffd9a9f149d63b57980b905884fd75df097c36ced098bdf62394098ba1a983bef0bac4b11cc21eeb86fb6fd8c968c8b39b3bc84b2865047ced4b
+DIST firefox-128.12.0esr-ast.xpi 508557 BLAKE2B 
62bcf0cc4c3b2e9196ae99a521de775d5e20285242ad2dbcfabb0646eaf5cb419e58eab98b3d91d7b9250b7a2e01e876ecdb0d050fa4ba339a296f80e2d571e7
 SHA512 
919f3d2a0c0c8c9f52aa5a77762f35f833b1b120b67a20089e9296ab54f97e404d7974ad4822d578161d75bbec2c1ee354a2f4aa098be4f87d6256a3f0fb57ff
+DIST firefox-128.12.0esr-az.xpi 509841 BLAKE2B 
a58bd46f570aebcac1c972fe350d63e6d7455a04f945b827403e0f3e38e02323d898e1be857b262334fff3a9ccb4d4aa66a888cc901108c9e87a5845dbae5f7b
 SHA512 
0acd16489d970028e71e60bffda584defccf5b7e38ece833d6ef7a9b68392daf0f89bf498f2429f1ceccf6fabd75d3bee5ae9de6edf8a22981755e6192b588cc
+DIST firefox-128.12.0esr-be.xpi 748084 BLAKE2B 
a90cff0c01c6e2dd6638454d5bab94261732749a4dcd47c6c6102cfc59af40e630285cfdf66ee7e0a3b28f0240a74045cfc45336f4a9e533b0881c5aa59c0394
 SHA512 
b6c30ead72c5cd1a21753b08dc1ab8b71439737a0154f5551ef3249071248a0ce689a8c41692ecf434e24a65302163bbf3815f29ccedc20ea040a1bbcfc71daa
+DIST firefox-128.12.0esr-bg.xpi 672057 BLAKE2B 
fc29734e56318a24c839db51de555909ba47628dc6a1b4faf6af4dec66bbda6173ba59ee2108f3a2c3038f469d2ef5a1b13abdce54dd2a115ba78cb217748be3
 SHA512 
381d4de6291bbd2d5934cf8ab66b9ec361bfc614e6e3f00407f49389fa89029e8733e5ca3370197da8fca76f796d8be518a8590b95e0b2ebd20c2ed1964fc26e
+DIST firefox-128.12.0esr-bn.xpi 624737 BLAKE2B 
4c56717987441f8e2b723c21d5bf3942fffb233d388faef428b2709cb80f94b8eab7071d830fb794eac4eafb87b986c2f8049fe06aa91186963c192fe1c16cf2
 SHA512 
2592ac331dfd2a84b99b5c004d47ce7624aab65269252571cfcca5504adea348e6bd1d1776277f05aa9203a2e82576ad8387122aca1a6fd6a1efb6b34ffb6b78
+DIST firefox-128.12.0esr-br.xpi 598746 BLAKE2B 
9aa38a915e05004e2ad206b3626b8894ebb22657c7ed4494ee6ebe24b6fd21a56e18379689b6c6c9f86a2595fa9b1b7c2e88efd63789f6d993e9a325de8fa989
 SHA512 
c3c6161f33aba7769ddf266a8d02d20b823a4927a93b5d93e5cdb7f24970c8c172bad2beae954a45daee222edd83fcf7e5c08f50aa514f85b7deccd13232d630
+DIST firefox-128.12.0esr-bs.xpi 565998 BLAKE2B 
372ca2f3bcfc1ae4ea7ea3386f1452f6658991bf42080ef3bd0bc0be9123aee023260fc20194a28903be7b31d86256832f6a24ebbbf2359f49172b35507365b0
 SHA512 
986fe4a388d8f25d714317487efcee7938a6677dd335b985014ffcf9b866be319e7e3c138cf717b8eac9e052e76a2371c7cd2ed5e3caf4e48fb24073a8f776ca
+DIST firefox-128.12.0esr-ca-valencia.xpi 561145 BLAKE2B 
2a6ebe4390f2dd86c87c967fb8c85126d88acfe0c65a25905540b0a89333120a4a9ed430911b0d53a9bbec104640ef26a72ab56c8baf1e92c6b0e91ffdf77283
 SHA512 
a736c9cd89d0fc136697287dd02453987a3dc3e1df42ead6e912ab6ab24bc742b51f6854b46bcb114b84d348d13cfa96a7982e36eeefef84c187d743a9d8dd1a
+DIST firefox-128.12.0esr-ca.xpi 609963 BLAKE2B 
9efd3fc4fb62d651b7f3bcb510d4746fa10544bd7309fbe196d4ebe8d4e203dc199c599a8a7bdef87b2e15a7268ce6aafc1a276efc11dbbead3c581bf71d27c7
 SHA512 
bc9aff5787b34492d4d01a9352cdec1b20ec681534a441249fb1335f78c83877bfe07678b6a75ec11f00d50eef3394f9e7ad55e904cc4ce158fc04a0ea1a2fbf
+DIST firefox-128.12.0esr-cak.xpi 601484 BLAKE2B 
2c24e775e953dbcd86e820882348d35b9807e3f0256c7822e263682728c1dd237198cdb0fe0c181e283147d50ea0d6ef25603bd205e0c103371bb72ca1cf6a45
 SHA512 
26da9882514e33dfa32d65cac884d18f125100e54d150f3cc6c079961109236e51aa7832a87e4df1e803eec47eaf4f4de7d424047daa276f1371254659ae331e
+DIST firefox-128.12.0esr-cs.xpi 690636 BLAKE2B 
2c685a75e95793bf23e2c97c7c4f50764318b4a560b9b0f1870c71f853b4c8ca6328e1aa2ee8623bba3b22089f38dac1ad18e029a3cc376fe4e59c54faab97c2
 SHA512 
694580a98d50b72388ef7aa748cff84f6b437d4d6d1bd67269cb8ed609d74521d3e1fe6818c4b116e0dfc1ebf37a096f268d061ebd10704bb0a99730039a762e
+DIST firefox-128.12.0esr-cy.xpi 650601 BLAKE2B 
0e601fe2b4562eb6ef2a417e76e8f77d659d53a9e9f23ab0ed934ad6033823a4abab9cd8cb3a626cbbcc62ddce43fab5688d4324de051a0c05385999f5ce379e
 SHA512 
e3bbf8dece6724e3489924cfc958ac6a97b7e92f668f86b587c0fafd1f7056b08bfd9982f0e3588b3015b9f05ea3d126a401377c9174b0fcd22b41dde3fa9574
+DIST firefox-128.12.0esr-da.xpi 638622 BLAKE2B 
c0001012d0642ce4f5bcec2623521cf2866802083d8df561c4b90c77f02f53d99c924adf455428e72736afd98be76d4e5a815204771c21f534f49aabde3b4c2a
 SHA512 
de0aab3ff813e4c5949657e67e3fb86b3908a4953923f91bcc75c855e12245175b22cc0d2302e75d04416a5f30d2514c9e2d954ea49a38b3b901c15484dcf4ae
+DIST firefox-128.12.0esr-de.xpi 663127 BLAKE2B 
83ade44c9d7f0ee751cec729df44f8f3656462c05a7ddecb043a2b9e5da2d0ec55ef64e87ef238bc377d513ee4a0c1eaea68e81bd30679e3bebe46dbc3397651
 SHA512 
1b4c8ac74c84766aa2a205a89fed2170a3d2f501f9015144ff856782304d395cced06727936dc2409fcb41cc164ba181c0d9bc6693bd27ef39d93a68608e5703
+DIST firefox-128.12.0esr-dsb.xpi 679873 BLAKE2B 
0e12d0aef118ca926aa2363af6a8d60e09a067d70736efbb6cd10639b190f8dac36a7b98f7e1ddf6103761c057dcc7e20d7a43aa22c9eedfb1c5916d8c46e763
 SHA512 
0f138a955961b369b29ea7d9c9484fa7d301960f499d8bf25669e5b5fbe89108973492c5fd7bd43bb90c0f50d9ce4fe523d54ebe955c597b2b2c8131fddabeec
+DIST firefox-128.12.0esr-el.xpi 764548 BLAKE2B 
7556c5f1516ef40086cd3427d8cb60b40dfb7f7d172631f8ee7a7086bbec4a0da222906990b90cbb6b67634dd30c8f2dd4b71772591d67a3d9aa15c01c11280e
 SHA512 
82b777620a8a925d92ec1905cfb9abfa1cd375453ab774e06f9264c402e5b982b001b1adcd684f02e3b9e956326ced16b467ab10e62b64b3cd2b40ee3a881efa
+DIST firefox-128.12.0esr-en-CA.xpi 610418 BLAKE2B 
8b238b43149e8e972a1539b58b4969ae9e88976e4b36a4ce1875902dc616ece59e127c2bf76132d409fff2258b2cd110d610047ce448870d6dff625771f4fd84
 SHA512 
1200d46fc764e698103b2ce6ef4ab4ad941ff8c80ef38d35ad5bb2ea93bd62943919cddd497e794f6d58135f9da2fba543b19fab9206e774180ed4c9b3f4643c
+DIST firefox-128.12.0esr-en-GB.xpi 610785 BLAKE2B 
8a65f7f88f56241cf796393224261559b6d9a83b2d17f589653e943cab77560ef66e410cab2a618e395c50d258bbd4e2b6cb361d6a16e8611f718100cc7bdeab
 SHA512 
3086e43ce2c0164b4a8cac31b4dead0807f88cb1df559f64699cf69a13d2021072d143e249a9429129c5e6b2b264390db8322188ba36583570e561248e847dc3
+DIST firefox-128.12.0esr-eo.xpi 643529 BLAKE2B 
ee9c52a64dcc1c7b67c9897e223dab0d2460051fea093bda1779ada53c6d7c3ba45df6da1f64b932f6ea8d75be3cb10d0843deccd0fdb3bffa632e409ec66b12
 SHA512 
a40f5d2d714c1fefdf389a9829752709323730dcef8794c6be8138fb5ed687fd0c5d618f66606b3d81cb2630eec55d468287b599ce5a96d6f28dc09c499d9f06
+DIST firefox-128.12.0esr-es-AR.xpi 655633 BLAKE2B 
a5ae9c78daffaf6b4e5ae32dfd1cc3744e10ae0bcadff839947b19f367f764f78c457bbd3201fa50fd3ef2cc674b77eb9a3a35462f8cb7289ed3dbf60f9a4498
 SHA512 
877d36dee260e6f5b28394c840913aacfe04363ab9e1d416f7afdb0b3cc2bba92c571c29b2e228a927be2fb8746d084da02d47f91558a4441392efaaacf59bc1
+DIST firefox-128.12.0esr-es-CL.xpi 656055 BLAKE2B 
982d1ea26a383157cbbbd450c207eb40b6493b1e30c06ef6508f3eb0ddf76424b4229acc267181a43ab42aedc0c655b62e03c3e8bbb43a1dc2e7a1dd242d3cdb
 SHA512 
cede01768cf1be1f2affe98191fc9c2e1645b9ead232f7c72f6a51e591ed8003eacaf95a9f1c105345f4acd7ac80bd5673f5a73f663ca73242ef688e0e11468f
+DIST firefox-128.12.0esr-es-ES.xpi 655185 BLAKE2B 
0bdac9db7592614711c6741521b4e02a04d198866569d2e351fc1a4d5b7333576b834a05b427fc7f60f19c224bc3e70fdeb311315e063928b42a33fc6562e3a8
 SHA512 
ba9c016263d665242a76aeb6e1d45377f6dc26ef9e13e14d260647606e7df178dcdc5071e0d868b8d953c42ee3737e324c1dc91e425559067655f9afbc0f7246
+DIST firefox-128.12.0esr-es-MX.xpi 657398 BLAKE2B 
61cca6a0f51bd1eb7abf71aae653f1694a185b4bc37a95498687fb352e5ca941ffa486ff7dabb4502517f271a1111d33148cfaa2a62d27377012ea75c0d6736d
 SHA512 
eb090e139417e685c0bf169da644e8b30824e6881d0012801a1eb56d6213bd845fb72a78cb5ec51e030a7e8c0fbc4e7a1a41257cceecff27f2e02acb353c7e1a
+DIST firefox-128.12.0esr-et.xpi 556260 BLAKE2B 
18f2d0942bc3073e18565aafd64707027a80011f8d9312820aa845de76fbb0faaed8083195d9d89a4f9c5502058de748851f1d72b4e29e561a7c03406691d5f5
 SHA512 
fc50c6dcbfef10bd92ea0d7e7374079f90a395e28b3748caf62b8eb409cde72366486c70ab3ec9c03876dfbba89b60f78307f972b06cbc33bff1e07a716a2887
+DIST firefox-128.12.0esr-eu.xpi 623941 BLAKE2B 
2df30b1ebef640d2c103d2968ac84d76bc708b9b89f1a61d9ac4b3869eb23dde541c5b116e0804d9607a72041bef1335d64a5dc8cda03d4c0b27d0fff8861d5a
 SHA512 
46528a0cb770ca5f3db222fde8f713fc39b6569e300a353106ba39e14517fb049ad9609fbe94c29bc59124174be3a8f1b5f32152f3546053f13b130f7c6652f1
+DIST firefox-128.12.0esr-fa.xpi 631012 BLAKE2B 
5bf90acc07daa23b64748b095458c9e74d005729c1fb920fa0526a72807866b3895680d39023dcf7d60e1240b1356d3686091de33afb0e38d055f9dff9002b9e
 SHA512 
8570d90631817209c5c2ea4aad784b5e94912b57acd4c15eb6bbc8ed656eef56b60a7777dba43bc3839323a47c41ffa5dba2fa31b3d68d5764fb6b742a31f6a5
+DIST firefox-128.12.0esr-ff.xpi 497853 BLAKE2B 
2a5cd945fbb4089d9dc32e3777bb47c09527a04ea700982495c50e3b0016313209498fe4fa4c22cfe34572dbab9265fd00bbd46dbfcb2bd58b9b2e2fcd0eed04
 SHA512 
dbf26159e6eec2c550946cac74ae9188f7e1d51b02c194d1439e9dc8d8fd5f993d9cefecaa97e29849165f1e519e088c8844b3fdc7e388ad0de70e6910a709b5
+DIST firefox-128.12.0esr-fi.xpi 633882 BLAKE2B 
da305a2d3531762bad509e5b6f0ad63710f50629d1bfbbd0f3bcc55e1acb949438d64452b9a067b45cb284379d07ba1a5a3e81e5041cc798a8bea06a8faf03b7
 SHA512 
7023360990cf18270f18bf193ef3fab1e85640c8b038e876f40bdabb8dbb3ed292daa8a0de4e740d2ad7f895bce5104cc5851e4151257b525f7201758669912c
+DIST firefox-128.12.0esr-fr.xpi 669623 BLAKE2B 
0e4dcb9e3af7e660343851aec12cf1e1d636705d19cbd6de7832031267deb1998fe057cafb9b40e24d3b9f5f4cf3689cb2ff626bfbd4112bc56694c5e908dc08
 SHA512 
7ac3871922daf3e4ce7d34a9d7cb8ed9e0e47f3025cb1f3b092e65dc4e676f22b513741734bd1470db292e425387522048a27b8c37bac311aca054daabc08555
+DIST firefox-128.12.0esr-fur.xpi 651570 BLAKE2B 
42993bb99b9838dd7cd87389eaa2c80aa74e6da039a70d6ee52affe1d6694afae6add9ca170df5082a855b6179ae0ccb39cb2b0fc36c66e962363a2ff89e9f3f
 SHA512 
e9a4deb94eb6e23accd4c4e63906db29c6055d0ce3eb97621031d2293c6f8dda35f2e739f5299b09fc0ccb4263c03edc8e59ddc7e1672cb32fbd98a54e54d51c
+DIST firefox-128.12.0esr-fy-NL.xpi 652081 BLAKE2B 
6a851d77670b5efbecf6129e55c2f0d6bb13c173636e6e8f54ada8a837c3ddeb5863e62238c1b78f96bf355adf6781a8803a9e2b10dfbdf27c28499a03062004
 SHA512 
c93828c6030ff99ea00af537281c5348ecc5808ae6e7ade488c3fe34dd21e6295c27218197f9d5c9f0ad307cedf51ef7d14d38682df40b04ebb721c90b5724d0
+DIST firefox-128.12.0esr-ga-IE.xpi 490832 BLAKE2B 
6d2dd1cbbb58a703e48b66eb7062ed08ed0e411210994106b169e10b1d0cd8a286fbd3a651257286e2fed62a91531b9ff2a78bc66860c47b5056d0d41a3ac08e
 SHA512 
84d125c621f45306e0cdf2e68432bcce62d7044082dae18fc489e836d4493840842e84609a99aedf919664bf8eaef43165aa7f4d3c47b24842d6f4a92d3a71a0
+DIST firefox-128.12.0esr-gd.xpi 609622 BLAKE2B 
a5ead2238c6fa347aec5a918b1ed38ee3abda7902b3abdecb1dde422c6ec3421ea92439d7262de908be561326aa2b6637803c639306571a4da50a18cdb5bbcfb
 SHA512 
2de39e1d9d547b88a5087450aefbc17aebe86936b981d050c216848a4cc6d99bf10f009a0692e75ca30da77f22fcbea5e30f93cd66449608437bc1d9a0d58852
+DIST firefox-128.12.0esr-gl.xpi 615556 BLAKE2B 
c9504b058f2864cf3ddfe14f82f362b8b6fb38ed2fd1381da02dc62c1b45823bdd2c8a42b605dfcb0c7c2e0410af0fc8ea5208d9f1e448784555f7694dd8cc5d
 SHA512 
d01fff5028cda8e2b60ac7a3953e71634bebdc6fb8da6d6c04f27da4c1694a09b5d97bc2dfa2585c8d8150c072bd5319d0991cddf82b355257ea9a346cc5dfa4
+DIST firefox-128.12.0esr-gn.xpi 659903 BLAKE2B 
1c22dc7e1dce3e5c32c204d34c2cdaeb3bb1958334df568375360bf9f2616f4b91a4fcb3fa6569fcd2ea59c2327b3511b3639e00db992444317e7d8b2a47e95a
 SHA512 
5cfb6da81c8ca4735d9f7fc9ea94ddb3289d0fe7ca1e3fe639e1311d240d37e46415df1944798f1ae6640d9d6c49d5f0b88fbf40ccd0747914ffbe905ac665c2
+DIST firefox-128.12.0esr-gu-IN.xpi 552327 BLAKE2B 
c0d45844a6f1f973d049242f71baa1ade17a27046dae2ecf910b855021e68872cc7599a4e661504558863d037edcc44220cce2e4447ba8abf38f1bd80b129598
 SHA512 
2cbb32415906b5e090e3845fb1cee3436e46ffb7419f9b8c4f93d844fc0994789bb3a1761d890feb1343454ee904e86c23077058e72b9196eb8222f1e53e2a95
+DIST firefox-128.12.0esr-he.xpi 659478 BLAKE2B 
1b23168ba95345176bedc48ddfe915d0ac50763ad1a9e3a5891376edc735862e44cd79cb6fd8be27c9247809fc6471e6addfb6964a0ffac77b843021a9ab892e
 SHA512 
0ed5322cee4216ff2c0daa3dbd12247b5b031c5fecaf7db3a8283496fe7066ae6d73b6edadae8f57785c35cf71e176cff88faa06632c5e70298b4cb020133d6f
+DIST firefox-128.12.0esr-hi-IN.xpi 578979 BLAKE2B 
c2c9b7e5ffb41bb2099f97320232490220a17908a88186723cd1969ba0ec90517135a0e07a8991576eeb229784d5097fd6c41580aeed47e50135480a9b5240e5
 SHA512 
7fe9f8c3bb45b977f94bc87d553104c962f3c310e81cad5617ae2a613aaddf8d76be1d49607fdf7cbfab755895379174656a7ad831d3193cb8e6385af56c6f84
+DIST firefox-128.12.0esr-hr.xpi 645458 BLAKE2B 
62d80ca08f2feb56bc1f66dae4301c51db8f19c7b1be94254f208b691b8ba1dd856e2135de311f4efb6b22e0dbc2b9e0bdcefffb10db17e201d762374bdfebb2
 SHA512 
9c3d055317c81cbd8c2d78b6397979ca854a641b5406144f7902d74bdd6df23fe45d725ea87d13e095c6f20fb40ddcca9b92a4c7aef87ee53450daa784ff000d
+DIST firefox-128.12.0esr-hsb.xpi 675854 BLAKE2B 
e5f47aa8c229fe238c65c5b94b6cdd4c77568b0d6bfb9f252ce83ca7bcdbe67310106fe8d5c5e4cdca2ffcfec5d71a249dd75dc3e03ec7ddb8ca8601ef11118a
 SHA512 
01888c2a81f7d84532f8f1218ed7500074a531e41b27401fe2ad0de87da8945a4abce04aba3c5a9171dbf904b9c92cb1c92534755483871fb576449e1ea325e8
+DIST firefox-128.12.0esr-hu.xpi 679679 BLAKE2B 
3260a779c8775a4ef5485d02e4b50a0c259b78d95d96b21d91968034dddf7c5d539256cbeb7b5e534fab1203b7a6f994033df49e2bb438a1a35e51c90aae8abf
 SHA512 
dc41e876146d35ea066102025904482f18ccced64c39e856a28278095cb6b90184b384abde3a53b6c61cb428d2263052b261efb73ab939f400b22be28ae46cbe
+DIST firefox-128.12.0esr-hy-AM.xpi 664448 BLAKE2B 
81690ae4bf930260b506ce36187c7f7c8a690793b46b5abbef3b684580fe454779b9f4c143f9c0805d85e26927136c91fce0989ff787822f63180688c493b3ad
 SHA512 
8ca543de36c30afe7121a1d5af75f343d9ef0c103c99e28eea72db5cda6e48ca5b329c7e1f36cfb72586864cfcb95f873e738e0ee213caa62276eab5b027c33e
+DIST firefox-128.12.0esr-ia.xpi 637957 BLAKE2B 
bd3660a2228e4c72d47f172001e56a08eed5b876bc17c56288424f680e1a4274c80d3a27031b25ba183aff1a447b54bdb747ee65e74cbd5874b3e65f91ec1829
 SHA512 
44ff12ed855fcdf5278271d418f11b8298110e5b56b0970530d3676ba95bc47f5e5e8c5c868b88d543b69d4bd69b7f6f045292d2132a9efe3ff018b842056c46
+DIST firefox-128.12.0esr-id.xpi 625991 BLAKE2B 
564f35744c9a3c9f6e7d90316515baae42911923b1ce46fd381f3782676f286f431ef55c87e6a96fb22acf9a8a4279c0550dbf113df58e9ea4edcb24f2c52f5e
 SHA512 
c375c83969e835fa3b55929c60d98c6e94c6508030166fe9e4aa61635e192bac2a321c65e2dc397dd5418fa8bf2ffe7f08d7d5dd00d980b8072d73737bb852cc
+DIST firefox-128.12.0esr-is.xpi 646732 BLAKE2B 
6863b15ba202010ef2dfe654a6eb799715b7cfbd4c4836cfc91024278e6510f8e49b41443a35ee2e2c7f8a1c4bcae8beb0d2c9c0720eb401e1f70fc84e59a62e
 SHA512 
abf8fbc573079dae514c1713025d3b9ce3f117021cb4034fdb2b754527b21d946ace22971cdd37d2761c7f67da87d34f4b4c10438634d5e462d5fbfa549aae92
+DIST firefox-128.12.0esr-it.xpi 648858 BLAKE2B 
ab39e884e152d8a828fb798a216bf023adc2c32e8a86c53f61f58671264725e6c37b3fe7eb48636c116741c8f67c38918d7cd07d88a30a924a557b6881a8f1ab
 SHA512 
a7b0c418fb2ffe8b7060d393fdb19418c908abff88d1fb1abef89f1a6468ffe8d11b97af7591d0e65a46734aec9318f04b6c4099dc7ee24dbe9349c933f9c035
+DIST firefox-128.12.0esr-ja.xpi 704120 BLAKE2B 
b4b1da2eeb897212d60c097f52c42a24bb09ff8cbd8e9c867958b9792e8252e40441679737a2fa54dd23ab75ac8ed7ab719de086c8eea4055c83c0158fd7a2a4
 SHA512 
d46c7c55f70048b3cc571cf30d273132b13d450dee40b4e30a864e9b018c34d77d78a238964db23f6f26be50df8b582b8fc15c1c15a5334ceb5924113c55ac2a
+DIST firefox-128.12.0esr-ka.xpi 714503 BLAKE2B 
68cc187deaa7677fcc3e3cc6d7061db567140f9dfafe445e128c9cd779f205f490be634d2f74ed4b44012687d8b95843a18d9dc4f3621066276ed479ebd2628e
 SHA512 
c89dfc551bed1da0019475ccbb8f6635acadaf996c51ac8fe89c10a320c8a2023a7335fcfaf21a8db4da89f1a0e624fab242a7b6a898b9867ca99d50aeaa76da
+DIST firefox-128.12.0esr-kab.xpi 626280 BLAKE2B 
202b7d3db5fe433ffc40eb63628e4cde968c81018a0b77e010f7584305f89412a756f121a4a8fc413482178f549fbaf660127c80009c4328fc8c35089fe44b6b
 SHA512 
25d32dfc81c1961e28502cf4487b6b96c4ba4d061fb9bd397ad520da528515a2c37b88ee7b50463b6464eafba64055c6afa63052eb7f3e3c969e08c0263c5b0d
+DIST firefox-128.12.0esr-kk.xpi 734539 BLAKE2B 
fb561601765393612ac615c35049d1eff82c159565e9ca75c186b3091fdb9e26b9df7ee5787683712befb7e613e1d88cebad4333b4419e59645506969cff48ad
 SHA512 
0b1c5d5671a6fab84d3a822fb7ba57f4b524c8a47cd774dddc2067a507ac6e9c4506a47bf85753e623ce365d47a8ce7e30e432ae88dc45f09f23de96ca845b87
+DIST firefox-128.12.0esr-km.xpi 543169 BLAKE2B 
eedf6b42655a0f94793bc62270e3c1e6367d97bda47f8266159fc3e01a42a85b00a8d30476f947cdf889888aaa7d5af17915b3fe7ce7ef59a32c46b37930228a
 SHA512 
07bb56116d4d612b4cb9ddacdb44a5edaff6ed40a5c6160d97162ef37c7aef76d913e55b4d0efb305664cdd68c51aca73ce3588d0fd6c88ebb90c9af972a6317
+DIST firefox-128.12.0esr-kn.xpi 520324 BLAKE2B 
159d27f03fb412b165c0d2b21c13c410e3fb7393f9ccdd9582d00e8a8daabd5b58b8f4a0dd15e86ee65ce03fe193fd32ce7ea29ebb6bf2d62979818d9639edff
 SHA512 
b83fada7aaab6f3d636f971f530b8c16a0696d171f48a29b1119bd0883592e12fcd265ed72df1eecc7555f3597e91250970aae0d7d569cb5cb23fad51b651fe9
+DIST firefox-128.12.0esr-ko.xpi 690562 BLAKE2B 
2ab3dce4df0dbfc4fe7d73f88f839d4d2cb773f60c679e95a9c8192250ff3546307151721692fd9741ec9ae42aeb7247c9a9902ce7ea9c1343d61abcd9e5fcf9
 SHA512 
e5658528f1f76c5773be30d0dd7433308e5f3a1fef6f244460bf000aa9c0040a06805c53a8049e47301601eb6d26ea70e1239d6dac14c14f724f35dd05fc2630
+DIST firefox-128.12.0esr-lij.xpi 506296 BLAKE2B 
04a508bf25d56a58d6833c371769da3fe018be71d45c7df0b6c43c9351df3f832c90cf2b857b8ec0c1c93313be31d6ed1189bee478e6d5f0d2cd41e4a134a153
 SHA512 
51e807e89f6e4718fbd96e8235303abfb3dd8e268d62244e18a3eb625e798cad5568b30c43cf36fc67a342fae5d5ae0b23816dcffe136f383f53753a07f41d50
+DIST firefox-128.12.0esr-lt.xpi 585991 BLAKE2B 
c2c099b403d1ff2917f7117c3ae8cea1e704f0d800f9b3d0bd1c62a1944246d6f6c9f7d0c5ea13948a664588c41bfb4b8e1fa167c676582ba725aaaff3271472
 SHA512 
3316cb425510609911bf7e80c47715fa8b9661b92465ed0a4051a5ffdfda026d715e5feeb71ceadf4abab79da5c50d0d0c8515bbb7341cad7c2a4a528b460f5a
+DIST firefox-128.12.0esr-lv.xpi 595102 BLAKE2B 
0e9f8593798f47d7ae066d5e3402301dcc1a4443659b642ac7dfd196b7e9d31302322a10ffbb503e8c855a4f389c7589a6f2352776909ebf78f246e7be9ea05c
 SHA512 
beeabd64632d0e0239128b9534b1f9f6b6f2305d9d637549d12021d1890847a8193a21307cda2b0d814035e9b3e7ec3e9ff5b04e436411018a4380c7da38262c
+DIST firefox-128.12.0esr-mk.xpi 511067 BLAKE2B 
26a565191e653b1d4b9f0a5b4d63dfd91b76377265170044b768ba96b0ebfa795495eb911d5b47a9bc738f9342da785bc44f699addc09c7d73565f86a7177c4d
 SHA512 
e82545db1ebf4cd314308a64c86d6cca9aab6eb64075074b58feee5a75777280b087c31b752de1cbf1c5c79252bc255c401e1c10c7184a24d2bb9578a3858197
+DIST firefox-128.12.0esr-mr.xpi 552809 BLAKE2B 
d100dc1d6eee0605c53af807b38fabc77b38a4a00e8c912abb94260e5fdb62c7cc4684ab8d88dd942c6a0b665481532872fd53afab3a13db770c98f83ca3054a
 SHA512 
f652e7ead07d940fdbde9488dba3499b5b160d334be7488a8a8b43f4d9ad2d7feaed1781ed513b5d2f574522d2c0d3d8bbbbac2f602eb741fd2a8e284c43d477
+DIST firefox-128.12.0esr-ms.xpi 477961 BLAKE2B 
f3c1b353cf9ae62e5efef4c8247e82c44df7308a4f6bcbdc290e17f8f5d39fc0e7d89f889e6e0bb6585ee11bdfa67126462bbdbcca0d1a5753db915ebc617404
 SHA512 
977f664b4794d4c23d2c44ea3356c8b1d2c91b0c85e634eeef602052edf2a0081b72633ecb8bc1ad6c9e5b89d7dba75c1333f5c009bc466e45153a7aff7bdc2f
+DIST firefox-128.12.0esr-my.xpi 540057 BLAKE2B 
02fb28b6948663d2f6fdd68f3b9ec00adf0b50dbbd4e591e00cfd4bf6289da53aee95a7ad1c274da85c63c2037cc3c995af70e261717ae926e820ff13b38c706
 SHA512 
4a381dc4ec243437198cb254e953cfb025b275835f52596a7e397038800d5fdedf6eca428ba4e929a1fcfc2e036b6b76a3d9e0381e2c04f0c59033dfb501a4e0
+DIST firefox-128.12.0esr-nb-NO.xpi 627687 BLAKE2B 
1db97674c2759514e9cabdb6c3897ffe3fcbcea3b2e2f5ff4b8d493dfe1629696d90812f3b9d9aa7639340c814b292224bdc37cd0e070e4945e26e1c47093164
 SHA512 
132429e24964433fc099e878ac256f3b2116ffc9105ec30f43ac641abd6abef5c77adac08caa407039e1fd7726ea79fb192d141c959b2a08e70726645675d7f0
+DIST firefox-128.12.0esr-ne-NP.xpi 543832 BLAKE2B 
de5920680d938006a64cc7520c5659b58c0caf0e8809f75dd6df41bc48e2294b1464f4122cecfc6b1a2cf0b27c172e72f5552387373c4f3373103182e825ef55
 SHA512 
9606c4ce95f7175d1dadf076defc4e01ffa5d24809d48fee3ae2d5e25d5e246546f03d607aad342e09da635404edbca756680981927a3dca8e2abb53cd2c7bb1
+DIST firefox-128.12.0esr-nl.xpi 645179 BLAKE2B 
a4af1fa6fa95b0331cecffaeae06c09885d3acc06ef6cdc5a874628849f7d5b4025d7b6392bcc2ccba67ebc6b9ef9232f3d138c3de8e081dbc2a5769000329cf
 SHA512 
421811f29d0b222546344c91cdc6c3c57f99128d7ef705a2943ec297fb726beb9cedad34bf891122ea6670ef6ca7f56955ddb9ae10fa69d4c48df5374b7713ce
+DIST firefox-128.12.0esr-nn-NO.xpi 630282 BLAKE2B 
45411b51c33b809186de7c38e0eb3b391b5c6549aefcb99c208a287b6e3ddfb6cc67fb386e435c5e79fabd1f89e4005640cd6198b25ccc17903ebeadd0495864
 SHA512 
12fd72426f31d7dea917f770b06e44ce8cabecf03e62c9865e82f5187cbd6871e7cb9d47cc2be13d7d030a87dc448018fcd4ab7851685871cf65b760e9b57cb8
+DIST firefox-128.12.0esr-oc.xpi 626817 BLAKE2B 
0bfd55843f5ffafa05492eee62ebb6a6d0608414babf6d257af260b34abf001e83fc74c84789fb3175e3e7b781be1c83a1dd818770d4793db6c80d8402b51432
 SHA512 
f2a4f72c56f814486dbd750ece439f328e7db9f8c2b06757ba0b37226c323bd845b47d393068f71e5fb82dcdaf8f39844d57d90eb11e8ba0853c6090d4755d22
+DIST firefox-128.12.0esr-pa-IN.xpi 726729 BLAKE2B 
a0af6df6fca4599c99e15529144f0eafd54ab8cdf1f0a4fda4c642d6bbd54b72842e08d6c9fe1ad029aa51b5b414139d61756a221d4332ac6967b1d6c7478677
 SHA512 
1820182f48e2feb84aef8ee48e026b7010c376c306b2372eed639e0e80611a8683f66f88293dc9c945cfc719884019dcbb54b4973d9838d2e1ddfd9d4838ffa4
+DIST firefox-128.12.0esr-pl.xpi 669250 BLAKE2B 
dc0289c4c814a99e9fb03af671bdf25969db79dc62b736e76a4d065dbb0086770dd4afaad73a5e0b089f337b2899f154d76af7849ca0b60adcbd4ccc00270f67
 SHA512 
84d63901a70c2bb58dbbe8eceb318ae7cc7fed52845e04f3eeec8399182cdf3dff7fc187f4b172b39cdd2cbcb2be619fbc5a4240341eb5e4da7fcb0300c3ea8b
+DIST firefox-128.12.0esr-pt-BR.xpi 650219 BLAKE2B 
c1e73361a1e3b57d24ef7032477711a49400619edd4457df4e4f3d389065ad45c5601eb8c6d2f2dced69d2806f4d731fc987ba3eafa7265765bebd5b0246b713
 SHA512 
51ee07cbb49a357744eb78d121aca8832ac51c0193b458e97420373baca77f905aa3ce20a06eaccb6b0119a2b00300d9c32654ef73823c34cc9279d2a4afe3dd
+DIST firefox-128.12.0esr-pt-PT.xpi 654867 BLAKE2B 
f7aab6782652c446cba72acd6a128851a595da930be9948c9cab3f4751c49c0e21bedb8e419f56c6b521a011304d47f88b0305755cd4a8abf0e7ea9e9df16838
 SHA512 
94c7ab1fd0d9f6c7db5804392794df8cb6b08aca01df33d813c903fb712eae661d154be8d21a77a21d37bd532ad9d70806100e7f87ce555662efb022bc419c4c
+DIST firefox-128.12.0esr-rm.xpi 646706 BLAKE2B 
ced63c7b14dfe4df8ac3e397a4b8e818f883f36e5657ebc6350fdfadda380982842b4e245999f7259a33b369252ae9fede38a018f3dc57e110baaa8c5ddde08b
 SHA512 
39826dd463de7035ebcd5ff0fb424a49f71a19efc133079fad21c521037fee9c8562b2e8e4881fb51894ba49ddbd1be1320aae9a3467d4a214526f9b04fe4268
+DIST firefox-128.12.0esr-ro.xpi 562847 BLAKE2B 
9ae34dda03f08b5758bad47d3d3adeb252255d17fe63b65bac667a648a58392202f90014d1fdf307aa53c79a91a1e3b9df13bf77639cbf35b4b48d73e91de328
 SHA512 
0ce441de32f1bc84066864928a615fa0dbed1ee6932e3d5531eb1edcb5a1d7a7196775503e7f8768d1d199c3216dd4972c42bab552a554575aeb8cdbef017403
+DIST firefox-128.12.0esr-ru.xpi 753069 BLAKE2B 
ddb0dcec13d26b57287095933fb9f9e0d398321710d55e758ba5e20ee9927e9e17a219366cbbf28be78c2bf5a33016136c913a2e98e7658b8c149948ed24e5a8
 SHA512 
8882262d95ed0639b29ff340f97b0a77518d52a61d9cd09a2084aeae9fd2de24b516c5dee4551c5c62a5cffe96bcd141fe8211b6a3f0f2cca737d341546ef1a8
+DIST firefox-128.12.0esr-sc.xpi 604282 BLAKE2B 
a69536d29ff4f679c0a2982ad2765719f86a546347daa2eb1c41a2b359a6d0283be4334b2664bf3c5d7ba469b0a1e421faa4c171f7a8ff075a3eea3d06f0c259
 SHA512 
f61e56cf42d902841047f65d1c704d348f920d1794654966b08f71a2c6f00b8b3e4cfca20cf91650344925fe6df09bc1b3c4673a821e7074f8935855688394c8
+DIST firefox-128.12.0esr-sco.xpi 524653 BLAKE2B 
b8ad208bd1bd1f970c1fad7fdf78860dba61bef7d1792ca0cf3774ae7c072ab3e222b54b51246a0a8bd4d1e01633d9f4ee606f583e3e7be876b588991585dee1
 SHA512 
137d3cb24c23c3d6688e3e4c51c35424d7af7b3310e2875040b3cebfeecb7f302ded06fa11736c28929177f7049d4c806d3d862eb03d4ef7e3a5f4fa4894ced8
+DIST firefox-128.12.0esr-si.xpi 628205 BLAKE2B 
74ade61f57d8d3d3f307a181946160b12d3d2867e87bb5a8c135d285113c5471f0f33ab823f9197b45a6bb3b25c5f91af9cbb8a5f0a9394991a0daeb358ef5ab
 SHA512 
4f6698e0a45e8ea5aeb317be1195623373b73255b75ddcc8ecc397746a4da372133067899fff41def99f407eda3a9039c42373f099d8cd7136c9a8fd8517f4d6
+DIST firefox-128.12.0esr-sk.xpi 682220 BLAKE2B 
d5d6f1f6afccbe2d3664fa6c74ad601ae172090e67306017b56dabc3453d9d670f08320207e42211bfd5f31ac7f5a3761cfd4f54dadde78160528223d2ebea17
 SHA512 
8b711aa094e9f52ff34152ce9c3b1b8f021952db137e84ec78c0f11ba168ae59461908a916f3b9df4c9ad56ff5df200cc2885d27674137c8a9438252c473970c
+DIST firefox-128.12.0esr-skr.xpi 726682 BLAKE2B 
1f305338d7b0a08105449478b078a89da20cdf08b23e6d781bd5f7cd97c01c25a128870bad9de1223ce222fec480dfc0343b9e9a8e4336887149b001b02cff3f
 SHA512 
f33fb6ad48e60c8eb057d2d1b2a91112b976048f6e7e15c8967aaebd3841c032ca9510822ea7e3a4bc40e3b581758fdcd549359b3d700fa240f0e7a48ac9e317
+DIST firefox-128.12.0esr-sl.xpi 649028 BLAKE2B 
46d9b510838f8d5665be7f243245cad6dff773a6c1aea8ca5217b02f58cd2baf11c413c9f1c2c877503600cf9e2dc617c2fc774c47f6d45f109e1f97a2e0b83d
 SHA512 
5380654537fe53e125e0e775c63974c7712bc0dffe31b902a20b05adfcac0350871e92f245ad5cd7e913a6682fca38f64f9e78b30f5f01308f0e3b50a70482e8
+DIST firefox-128.12.0esr-son.xpi 451682 BLAKE2B 
ade2c1dfe06758fbbd6ed711bf5331d45f8de57d01345350b13fc6cbece1b5514064ffa697e62d422f2a81cde613b7ebb22fc3645068ab5d10af031d4ad44c1d
 SHA512 
208d9d4d5ef014817521a58bfb73fe4ca1d286af92b224106606568fafd9085bbc3f85d8bfd2f253c61cb2ccefe1deacd46fa06f58b9063353a90eb9eae7f648
+DIST firefox-128.12.0esr-sq.xpi 665755 BLAKE2B 
b918edf4ba9f67df6fac33f9a7556fba7cfcd67942e2c8ec755d3345d32019872720362a8b163d570026f86f68635a753eed8a6724ad20a64573ac09ea13b2cd
 SHA512 
fa1b4636f04bb9e9562e55e0a4f2db6047fb7de341a393bcb3f2ce23849e75962daa9ed8eb21a2c1ba552a8532cb2f47ca5155ece5bcc59ef867a2ee69ad759c
+DIST firefox-128.12.0esr-sr.xpi 678437 BLAKE2B 
99a33aa51ff4a28f5dff48b534f54b01c07fd071f11db1b03c93f570b5aa8e9873f7733da25d607eb08ab19407ece58a38950237ddeb74d847ce0d80d221a3f5
 SHA512 
51bbde189544a3f4a9a9756b2d048f7a7ef4171c81d16e01a4667132f73bf9e852bab46c0ef006a455e6ca4c51ab5228088f6167d95bd6794f60e3354a16a805
+DIST firefox-128.12.0esr-sv-SE.xpi 646486 BLAKE2B 
ad9767ce2ef4eb4e1d435eac24f8d6b186f8709d66b1f5c01f598cdd70cabfb21ce724e227e8e50eff01c9c03443f94b482dfe598ff141ccd24cca2d3bf74043
 SHA512 
494537cf9560301b97a62745546f02fabb161f6cda20a43543b844f2feb9317878b7d029a1d5cfefb316f1417540e60df2de0910492d7762359da398da924786
+DIST firefox-128.12.0esr-szl.xpi 541733 BLAKE2B 
30c4f4c57f313924a08c5695d99a965c4c3bdf34ebbecec5a2c7cb8e7e204cc8838a03161c114bbe3699bf2bc1aee902d5cdf9c50c1dd5660aa7eef66d077d38
 SHA512 
8aad9fa85507e3c600c4534055da1e58180353e617958ea6316c7ce155c5cda1251f14b1f2909a1d5f0f0e4a102b462d893e05b68cee30b6f4f1fb878d1a6c45
+DIST firefox-128.12.0esr-ta.xpi 530547 BLAKE2B 
d86a5e253caa398f95d974cdf1442e253e854606b99940751185b46b20d44a0a8beb27e8049846ebfa57aeee3b847f91ce2727f46cc53237c3a0a105827785da
 SHA512 
05380e199bea952d488b479ca1aea74fb7562be4ede53d88a57d1da5fc0f8cc904b804a817414309c251b57c9952da4aa9cf288f7c434dee85a04b2bfef6510c
+DIST firefox-128.12.0esr-te.xpi 583148 BLAKE2B 
66d5c82a611f67f9810d5daa51aff1197ea7bcce02cd80289d523ad597035a922041df9da4772b2c8e31842e77391fafc16228504fb34d20c6f856553739624f
 SHA512 
01dba4e64838c993cee7fedd99f4b67099026798a2f8fa4a93b2287b68e0014dbdba6dcf2262f43ba0a6ba53a5eeea0f734df690de9d6f98966993e6a28e9961
+DIST firefox-128.12.0esr-th.xpi 728449 BLAKE2B 
3889748beb571c838737c49791ebae87ec96d98573cb5fb548a488d5fe5de62aa2f5a90b1b4233e93a42a6c07c620dd32de635ad90c716d44e961ed54643c700
 SHA512 
3f75bba07eaed84075a682557f873719eede02568e3c68ce8043f30369dd97c91663e8ee3b981e4a5297bdf4c8c4d8d808602858458c68601d8b2a5a5cea0ea0
+DIST firefox-128.12.0esr-tl.xpi 546949 BLAKE2B 
1ea2168b634c4053a1db554adffb4a19bf58703677cadd033e56b9cfdc84d9e776c9cb89a694faaad4cba3bd1828561dac98632d27b876e3494f379a4a5ce133
 SHA512 
c35b1a7f1cfcc1f6dd7cf57fe3155b6cec37dd156fa25fea42fdc8d92a963d062313a36435a518388c0f4f33fc25317722b6f607864d0846b2534b0750f21b06
+DIST firefox-128.12.0esr-tr.xpi 659457 BLAKE2B 
c3e3f99029c8f79e167d032cd37e690505e054a886dc3a3765c444d4be0d68180fdd3a7f5c4f8fb84c34da6ff207657a126cde918d35fcf540e44235da4bcf94
 SHA512 
8129df3585d18d848befe79bfbf201e83b1f0aace320242f6ef0f4e4c2f7105fa36b26ae1652d41f2dd3598beb622967f5a7cadaea0ebe42a71e8903b8d1941f
+DIST firefox-128.12.0esr-trs.xpi 522146 BLAKE2B 
fea366085d63673536b0d13c685d7a42e9f2cf792eb3593ac97c8e3e0ea6ea13cb992ef1e6297e31dedf2f80980546e7f5fd56db5877679871bb05762bec7d79
 SHA512 
a6d46591af59c4c0b896994963be2382ff592650e34ddad8be2e9523820c417d254abc0e0336af0243cb4e7eb338ea451fd2cf9180dbaa668e0627ece03e8252
+DIST firefox-128.12.0esr-uk.xpi 743999 BLAKE2B 
35e61b855728edae87c06cef6ef0bb9f3949f211fb1ab501de78ef596f1cb9245b9fcfcd1763473884dfadf5ea59a73e3b39947681ec283b322112e8529b9d25
 SHA512 
edaad7233553f03eeeadd20d1c669f51e251b83d46bc5f778c57651d6365c011f1b46aa3c15d0be35752a310138bbbc029e4fed6f753819b87c218437248d7a6
+DIST firefox-128.12.0esr-ur.xpi 574509 BLAKE2B 
27390997481ad15ddef9eddc60bb67dd72fe25cfaa5b435396affac6d135fa193a91e6bf1ec55316271dfa49614ab6b332a23d563b0f93727af2b20b92bf0657
 SHA512 
3e35508df3ab9b41ddf723fc6d99c990ec310e764c2b5e49e1d76882d61677cefeee22113ef912e1ec9cf1921d5b243cb061b57f4d4e4f4b3830f7f4d98f7438
+DIST firefox-128.12.0esr-uz.xpi 495293 BLAKE2B 
3f5f962688d1361c83defeab814cf92dcb161740879572bffb01b7b0f506704c803eac07803a880077e983afa1fced6590da41813e1f29ad6c9e3f50771d1dee
 SHA512 
7a7bd36c46c6618e04211a70d7005d7607b04e193487d62931f9fa791c9c5967a64378ece02804797111707c8b4f47c8fd150ba9196106c2ae06d0957b494323
+DIST firefox-128.12.0esr-vi.xpi 683661 BLAKE2B 
7343c9cf274e8e6273d1de6644cf19da1c92f3f99f55356cab2742e8455ac24c9bf68803b06ad0eab1f644a4ec69f9a836b5b66faae7b1e39de152eae1a21361
 SHA512 
69d3161080a9712af5fe5642b1e2fa3ff234e1edce44c25a0814296f3bdc9eefc4cc53ef795d13e9e95d54f996dfcff1bb15fdbb34a0a8c5ebc276aa83f23d52
+DIST firefox-128.12.0esr-xh.xpi 452428 BLAKE2B 
799bd465a3d9cdc02f57d36962382c7e3187a391cda964bc4b5e59ca6c9195c06ddde8026243c55fbbd871b24d179a9fe32c71c87705e627fd9d94316aad2dd1
 SHA512 
a994e57a3f8f219be35b288418549c6d1736a71399d34f004fa1a50efc1375a98ddf3ee53443e05307591e8ce877e0e3282f3f403f4ac77fa3f1320ba2eb5dfe
+DIST firefox-128.12.0esr-zh-CN.xpi 686326 BLAKE2B 
c9d0f1991b784534e236239e7dba5edbdaf34eb0a4c8c55fc334c204e4ce1ff88d6791fdd261b656c4e0e90b31f6340a506b3fbee2ca105529bef61f26be11b5
 SHA512 
db3177d09a62ea93f7621d7c223a0fcffc12188fe8417d451d56687b05125641010af41492de73421579d8e1709b4f629b031f88277f04e0289e848264664ed4
+DIST firefox-128.12.0esr-zh-TW.xpi 689137 BLAKE2B 
bf9a6c880fa9e9b7de2ee869c0eaa0ad51aef313f1878f316bb4deb0163e528b7d39de73441b79c0a04e1692a01da2e446a06e141ca4696913462ea0cf4565a7
 SHA512 
d5800e39b17acd8bf110c42939162577e98afdb486103b4332770ee27ee62ea62dbbaa0cde514a47ccae06fef07b1890a2eb461dbed036728b5175354b12868c
+DIST firefox-128.12.0esr.source.tar.xz 560934320 BLAKE2B 
ba87d758e9f0d6803db2090fec27a24d8eece75226401190d76d11163424ad24d9db4882876bb88c872a84205265fac4a7b11b5e2826ce667466452b062f4807
 SHA512 
442d0b2b6ce02adcd878975f01e86548ca8fe93840185d77a1acb41ec99440c7abfdc8757e6f30d60593dcf2c7f50563b6ea6ccd4d239beea01305615b73c359
 DIST firefox-128esr-patches-11.tar.xz 18696 BLAKE2B 
0f35eaa29f1daf9beb09c7303b3e92676eea84337683b8f7393e8b52e36ec1f37683a050e1e8d7939ebb1bdc190acaac887bebe88812c1b64785e38980f18be3
 SHA512 
04bf8bbf3c4e7901a6681fec66f179f797615613be838cf35a4b03cd9a347656b1264524ac7355f0c3978a5e740ddc5dc438610e5cae6ffcad73a8988cf0e572
 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.12.0.ebuild 
b/www-client/firefox/firefox-128.12.0.ebuild
new file mode 100644
index 000000000000..26646b3a89c2
--- /dev/null
+++ b/www-client/firefox/firefox-128.12.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-11.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