commit:     80d23ea81558af7b75ebef473320cc34988b88a2
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 13 13:48:27 2026 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Jan 13 13:48:27 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=80d23ea8

www-client/firefox: add 140.7.0

 - apply icu-78.1 patch if system-icu and icu>78 is detected,
 - apply rebased patch set from tt_1 to remove patch fuzzings.

Closes: https://bugs.gentoo.org/968710
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 www-client/firefox/Manifest               |  102 +++
 www-client/firefox/firefox-140.7.0.ebuild | 1391 +++++++++++++++++++++++++++++
 2 files changed, 1493 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index c5a7d680ad25..52ba869666f8 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -100,7 +100,109 @@ DIST firefox-140.6.0esr-xh.xpi 272800 BLAKE2B 
1ce6d989565a7dca641e271cfd3a6a1c8e
 DIST firefox-140.6.0esr-zh-CN.xpi 460706 BLAKE2B 
d979874915bb90b0fe73144705a73771f3c37294f7e7080a58ccd9b6c37b4a36e71484c3b0a4171ca28b41af644b3f31b666ac8988d190e6c428f90406c59604
 SHA512 
e4ae028b1eb5a7400f512bfd053cb6cd55f6fdc79e5da5ea6f9f12e4078278579faee8bc9d359ce267bab460639443d0fe1d8c9a4f86cddb1de48ebb8fb20597
 DIST firefox-140.6.0esr-zh-TW.xpi 463740 BLAKE2B 
8de0c2679b3b733a5bf7829a51015c4142d0a96ade0137e3910d573291d4e166c25ffd83c4615c28452fba5cf4bfeb900fd58887d1bfec34f801c896e84a84f2
 SHA512 
b444ae7db7c1853653367ddf885e739cbfcc4beeb39745b0c5175d9daf14f3e892ae2e86fa0f0a54a4729cbd8139d37161173abdb7335d76c729c97a65f776f7
 DIST firefox-140.6.0esr.source.tar.xz 643086844 BLAKE2B 
1613e232f6d423c2758122148eb0575496002dc8bb8ae82ed850275621904f9a50581fc1b82395e57fb4f6ca221d32672c33956a09b87ba4c094aae408a11c0c
 SHA512 
ed66657bd4b2d94791892261d7c0c0d950b4f630d12ab28a777d93393427451a9aa125e5a01ee15f2ac0ff378d0be074a08583dcffd35609112ba4e6f9ada798
+DIST firefox-140.7.0esr-ach.xpi 294361 BLAKE2B 
1e283a93994a17a90a66c6f47701e6b405244823e4acc5ddf516233aff240d0d6f0f222522c0d6b990fedd4c789b0175fefca62cee9c73c5a1e4a93343cf0952
 SHA512 
cb68683eef11ae6bbc375bfc53e57fa1f9953c459d2ab79685f0a47fe29c8fb3fe7792ebbb439521d00017a161be529dec92dd08f9535b71cc5e943fd507df09
+DIST firefox-140.7.0esr-af.xpi 266632 BLAKE2B 
1a6b62c811f2bbaad21f175b29668fdca537fd03b0d6a0c9302fb2f3961c71bc4fcffc4b5e33fab20d4111d6e3feeda2517a688212798a85671bbbe8692fc375
 SHA512 
c90f612f3a57a955329d29b8ab55f4852b6b4e657e73befae8ce5e39eb572f0f81f48e04cfacb194b62ecfa7f1d6f92c24c7ad0923b526eb537ad9735d13929f
+DIST firefox-140.7.0esr-an.xpi 332298 BLAKE2B 
9edb0da67543adf4ed045a9c1b99ab67480bb36a636349f7446a6ab429558addbe7f8184c30c71e1aaea269d0d9331fc6097f338bbfbdc732e9d8e52bc71bb03
 SHA512 
754ecb771cae60f4efa67ff38dc1348b689d62b07f3a2d26d2bc0898cafd402e1de4ec63703e9ee4da0febd95c1cd659a0d4483ceee9d8f0e0710cfa07b4d195
+DIST firefox-140.7.0esr-ar.xpi 445280 BLAKE2B 
9ca118841b44c250e09406bc72657eb83da086360fff7e602a2ecac635438471bc681a3811130f439082c4b3d51421d42523d3a1e252d39337a33a217e8f2725
 SHA512 
61cc9ae8629fcea4710975d66efd24c9b86a27fcdd1dbd583f506ef549135b53a2121594a0ec4d4635bb1cb547bdd9082e6da0d8579048a7ff8400d9c4342f1e
+DIST firefox-140.7.0esr-ast.xpi 312214 BLAKE2B 
97af98e5fb8972f6b5b768e4fd47201bd56208099da98de97c884de8c99378ef1850284e8288343ec309bc6bbf25090c8353d76020a11b394f2bcf4736f9e974
 SHA512 
c2849d6b0f89c779ea85ecf523c31f5cc59b337134de07be2f72767e0d11d416285d176bfe34cf6d3e835ba281253bcadff66524825ec27afe4740065b176683
+DIST firefox-140.7.0esr-az.xpi 318400 BLAKE2B 
9a0ec6af4de060e2335965c8a8258590e5ad8ec757f2d10d96f107def587674f9770360cf3e506a827e028063a38fe37d7b014ce419a106bedf29a157e090d6f
 SHA512 
60b0abddf4c949289757649453fad6e837ba868aba233f0566b4369fbfa13f099f4d163c1dd546caebb84c961e8d2955970b0f95dd3b14c77b2a3812813362bb
+DIST firefox-140.7.0esr-be.xpi 521198 BLAKE2B 
ff94d59824b6568ed509a5feb7e300f87c171ca999c566c1d2321db9015d17077750082cb723429129e179cd6d6b03d82f4e28ee96d83e4c2bf567059b3a8a59
 SHA512 
a4ef547603e595678b8c0a132dbb1fae1ba00313ad42be0a5a4f8f2c5d55683153b0c3cb3bbf02058f7f92b5b8ccbe71dd1e95c3a4ee3f58827b1cab94a8df8f
+DIST firefox-140.7.0esr-bg.xpi 457553 BLAKE2B 
1bdba6a9e5ecd45676fe4a2104d4c1c4511fd6bfd910a4282be11f99357d1794fa755e0178d64821b5b5fc10c42e8188ff63cac7571899bfe68b8e041c8fd7f0
 SHA512 
b4a0d41caec68dc79459db7fc90bded736de443b5d7b3dbf33b994bd66bc6a2c6a7537633978e3bf35fa2d2046eda0d4ea5f41fb544137b28614dddef80434b5
+DIST firefox-140.7.0esr-bn.xpi 413380 BLAKE2B 
dae13a5c6c80a186704439d9997338e8f537acdf581430451a3ee96fc8cd40222f6f49d7e948c3066f88fe1b27d668702a50caf9edd4713c7f780cdc47e463eb
 SHA512 
b91de2ac2e5fe1321b1cb19d2aaac2a4e06931518c9fecc1de45520f2f3d05eefd0520f2986329ea7495cfd756caa0f10193cc2be242280d81c8b58660683571
+DIST firefox-140.7.0esr-br.xpi 395317 BLAKE2B 
0fd8b4d40e1947970c0eb289518d26b0637b2f11ec202cdc33a1fba828a7c546da29dac1eb9754d0772d1c4f97869e35d425648615445e9b602daab4d60433f2
 SHA512 
3c97ff0ee2db8002625c276bc09b2c255f5f4d7c88f260a0311734029ee26d41686d1b2b0e60e4e94c66a62cf752fd3c6d7d8ba4f58dbd136d9e64355674f525
+DIST firefox-140.7.0esr-bs.xpi 447177 BLAKE2B 
bb4a1b798d192a253712a3e113cba7662b6956e31a4f76bb511243f250c3904126dbcbf6ca51989a1976cf99e837767702803d58b5db08cdec7492bf688199ff
 SHA512 
4d367884387ab6cdab5f5a2dc701272f0a803c2c323a680567a310abbd75e0bb4dcab45ce9e7703c2067fd4325c0d2c2e9129cbc55774730dbe91bbc84526d55
+DIST firefox-140.7.0esr-ca-valencia.xpi 357934 BLAKE2B 
ee094b7be8b1024787c1cb49cf8ca63e7fa2f9d6e921f55b0b2ffc2b83464016b9a83b77e4e9f6565908a3782a9a52210120fc76cd99d1cda077103d2806ff3c
 SHA512 
52501b4e9783fa51e3eafb2d9ad71861ee147411db80e14e86864ad6332a5dee2c7ab0c6b593ee2e1496f826d732205aecd4718526004a16a2ffbbe7cbc8e509
+DIST firefox-140.7.0esr-ca.xpi 404825 BLAKE2B 
69831a0e1c028dd0ed167a40354d86b0a07091b9df897366174ff61d8381f2edc025aa93006a7d6e4355809a50dcc55dd0aa6ae773bbce420f8322e237ed9b3c
 SHA512 
968f5ec69ca56bc24e9947c6212fccf18427c4ebdad7362bb1a4aeeb4b40dc3cb93c87b1191a01d0633154e78b50aa9c6ad94ddcbbbbb2c3c8e52b7a150242e6
+DIST firefox-140.7.0esr-cak.xpi 390833 BLAKE2B 
8c12a73285cd7a33f6b59103e185a1166becca91905b258ce2db488b29c27f74a07a16de96cfaae80a0297d61bb4c60872e62114a2c687ace544e518abe6eead
 SHA512 
be06a27a59fa24fc4a5e59a3cdfeef5204415444d5ce8cfbcc1eed1482c325ac74be4e85889170e91bfdc0935ea382c3b221c5ac1cc4bc2d9af6bc16f634ef3b
+DIST firefox-140.7.0esr-cs.xpi 475921 BLAKE2B 
9aa3eead20eccbbec0225ad7981501877cc1dfe9676468d5b37af51fc2e35eeda8429d02e3452e649359a9d1afe359feb5b906c5146894ba8a335fea9dda4256
 SHA512 
a30f349cb9971928315cf210bd383a155af16656274248e5c2ce31bce99c4602af1b4fd3502aa5b193816f04a2d2a13cea7cfef8cbc00f6aa09f1f092b113ba9
+DIST firefox-140.7.0esr-cy.xpi 441967 BLAKE2B 
002f91b9e25cc8e9e7f3032947a0671f83b3d3a67287ee8cced7882b34f8be59213d09fd9041b135a594398a702f8eb58bb24a9ee57e90b767d4f8b741f62507
 SHA512 
dd9cf3ff4268ceb3d4eb1e70f03e069226613281fad743f5a548f69a3ccd4ab85fde4adadf430f7e640512ef0f5b6c5d79e9da9a81f4bf7b63f2858b29ffbe38
+DIST firefox-140.7.0esr-da.xpi 431116 BLAKE2B 
c20ba44b287e7cde64ab04ed3180979e249d2908a39606afffbde6d47b1c5c3d31111aa393dc8650a6f8e9648ea98aead895c7b25c375374b468ae843b0c6489
 SHA512 
19c2c3e453670ffc48fdac22c6147f685d7b42689e6d3a0021d63662311acfd92157c0b08bac299900eab0624e4cf88d2dcec24db6d979a743ecd30c82cf730d
+DIST firefox-140.7.0esr-de.xpi 452698 BLAKE2B 
91973d5a3c2751bf926498dfb40d15640a3f1128062b483c06c0bb608330baacf70e4d8f8960f98ea66aedddc84578bee6c8906073657102b2a78de13a895b68
 SHA512 
8e2154f024cc495bf08d972bfb7ba7c2778f5061204d62f82812f0f66183cbe9314af7e04dc497d25011594af845e1bed8cd614671cfe0d075150c279c0116b7
+DIST firefox-140.7.0esr-dsb.xpi 466063 BLAKE2B 
68345effac99e2788db712ca49f212aca478c76be14498ba2d166c41c2ee0485b73a7b07a36f71e07cca36098048e01df536c5a885b97d1cf18dee903f14d851
 SHA512 
50aed965d8ad8004027ec76c8aeb665ab2bc87ec0e113154dd3157a9e42f664b4e42e96087e0776d7a14a6054368fe1c342e7fc28a1c182b750f1e78f6f5636f
+DIST firefox-140.7.0esr-el.xpi 536816 BLAKE2B 
089063f856a7c62416829b083d93fe6cdca41acd460ae7b60a8cabfb1864e4e8966a735c7b7d22eec6810f05668fcd520811a2ab1fde26a73b460a2f0b9c886a
 SHA512 
90cf11e2ce18833437a8dd31549ba2772b401ea6bd86dbf9b55ec4e22de075f729f129db42f629580f3c5e5452c8ce3dc6a02435d30f50744136727fa4512a25
+DIST firefox-140.7.0esr-en-CA.xpi 411047 BLAKE2B 
b3ddcf76f5e4750e519f2919688b8543974289f110b5fa7eafda8d21a3502f4c7e27f55c9239a1f3b16e84d2513ffff6b637d8cb9ed533c3d125be311c3ec818
 SHA512 
040f3c07ae267e7acaff9707dc657934e1da38724c5eda766ddba2939022781a5143751f273cef35170b767d36c675a605a73012ae2c608f497d66dc8e2e54d8
+DIST firefox-140.7.0esr-en-GB.xpi 411394 BLAKE2B 
72dd95643506467748a56299857ff9ec0adaea3157081270382c66fcdfa33b7c212b74ea9610713fa23a94baf0364b9ccd7076e49fd66b75195e4260abad6d60
 SHA512 
9667b18a8a59154958a5baa8ba057b5045973da3aee87bc8a46220c87870c407a4a2e5a59af095434d3c86dcb3c2f587d011716ca1c2bd2130a92f8559375819
+DIST firefox-140.7.0esr-eo.xpi 433470 BLAKE2B 
79407f265c19ce5fba32aec78c3d56219d29e18d8ff1921e9db3095e7884cc8b921377aa53a088d0b7fa2803ed2f284ac95da1beb9bce441425b709bba340447
 SHA512 
97fc7bc855f529fbde25e88554323c7c4556aa003a2bb76b968dc6c26585b599072370bf3997f63b5c502015fdec96862016c127200034dae4a6f76d738c29ad
+DIST firefox-140.7.0esr-es-AR.xpi 445516 BLAKE2B 
c7180a1f8b3ded0f65d71273bb50ed45cd24952c16f72abc0b6872d83026671d5621a83f2867cbe6b836cf1f628b62a6cffed88399b7a3b0e7dd99aa78f897ae
 SHA512 
5d2de8ed0b0b1b3987a8de144c43336d1d075b2536cba2c220e3279a37bfbcaf06f2466fb77362461ea8baace33546c4c5bb9c1bd7891ca2eb254e813ab6e0fa
+DIST firefox-140.7.0esr-es-CL.xpi 446304 BLAKE2B 
85a7c42bcf16a0c0fe17089bc76b0e5119b71108185d90285ef537eb8c9827a3d21501e029c4068d556e3677970bbafea4bfbb2e3db495ed600399931f6bb0ea
 SHA512 
2223a468d26b05ed5f6eab51d6e4c6efd019cd5aa454366190643aecbd60f20c02814e5a77208828174080f81fd7985b88be7a83a3542e6285cba6651ff18992
+DIST firefox-140.7.0esr-es-ES.xpi 447013 BLAKE2B 
7782f023f3500c45c8c9be35a4605411c443756e357c636cb653ea5d6f49086526edf7e78a1218902a3a1f7aaf712b32c9e0b8d17ce4e13e703e1ee9bb96b6ab
 SHA512 
6c14e0d575fbc9dfb2f7788c218e29e4a0594fbef4b98d18f12e83513b0971ded43d8de0e187b2cc0d548bd89e96b7b4a259b765fbee78eec9665b4eef630ff5
+DIST firefox-140.7.0esr-es-MX.xpi 446234 BLAKE2B 
cad54d018ebb67802c877e88fd32e7927187d5c894cfecb1bd63750e51af3d96bf0292bf136e3f9f5f8299b59259652f37008fa9eb75650d97aec7cfebe709a6
 SHA512 
5995944de6932ed3f27edf094e3ce7d3fd80bab8c55af55365d8d110a910e29db62fde712fcba6d931518f5208472406cd4143f80ab982039cb94e63efb37e7b
+DIST firefox-140.7.0esr-et.xpi 359318 BLAKE2B 
175b1a7edcc19f01da5ffc7bb5cb1780f964d65fcda221a8a428550ae33e271ead72cd79524b93a1c2ecc50193081130b58a3275036d659e01a784c1b536e720
 SHA512 
fe84c82032473c7d75de960a924244b866f1a48f509f15008654b6692bb990d34f9dc6daf305c1f284a1e29b227749f4510653bff16f4b537f6d5d5cf5b7fe43
+DIST firefox-140.7.0esr-eu.xpi 417286 BLAKE2B 
df559dcac0f0879b06ace6d0462dbdc03a11d0d8c0ff7550d8dbe025429297c5a5fa495e193092a2875a80b12c5de8abc8335fdb810822cc0f48ba14d51f945e
 SHA512 
eedc1856b445491a565119ecd374017248bf653e5bae4a43f3667203bdd16de5101e72ea686fe3a5e9dd8e42a36e1e1015767a5b1b6086a1541eeaedc01bbc16
+DIST firefox-140.7.0esr-fa.xpi 421642 BLAKE2B 
4ab1f8f2598633e193697dfce3ff23265dd0ebbb834cee704d1364c33d78d822af5a5c8173ab1bb6d116b68413b4e767a66b4032c847a0896e1c7662a6beef07
 SHA512 
cc811eb5490d0d652b0717cbb2cab8b4c03167de395b0cf06dcf6adbea4b4fec11cd1a86ad4129236751cb830347521c18d3561129cf4f1a55ad6e9473013ee5
+DIST firefox-140.7.0esr-ff.xpi 310183 BLAKE2B 
98c3656cc2fc3a2d65bdd15b698940a9348b7ef6fbff23c4860b39b888464931aef56ac4429b4792eed8c4ded487dd27db291de9ef4a37d680a5dca81a2d1377
 SHA512 
b60497abd7ac84a64ecc16f6bfefde4f23d021debe182be25c88e887813a5ac603da2abc637145784b0c8a814ba5dc6404aa5e5efe4b0e251302ca22918de4b6
+DIST firefox-140.7.0esr-fi.xpi 430164 BLAKE2B 
9c5a1712380b54386aab954a13a389f54f8412908c71e71c97977275a975a27c0520d626f33e4c0cd8fec796e934c9827f18e2f235dcaff2cd2c4c088c35a1c4
 SHA512 
2a789c8fc0fa2ecca05a3dcab8cf4eddad9129f191483e61b675a603aa97629701d2144acf7632fddae425326309cbae8625d89ad5d2ece47e37b67a2e7b136f
+DIST firefox-140.7.0esr-fr.xpi 458451 BLAKE2B 
39cf2bc38408922d7487c88b6aa8d62cb5a2a4838ba8ff115deba256b02338cf390b0f9c32f3cbac8ecb5cec22c320d15c873353ff4549a2f8e382f0d97bc3a0
 SHA512 
e14428c5756a70d19f7d4da6d0c4af86e14330b86cfaea30bf4453f49f89ca3a981ffcda975951f704f24c57941fafe8e1565c2807365d095ef106d168d7aba7
+DIST firefox-140.7.0esr-fur.xpi 451829 BLAKE2B 
d72e965187a8982de8474f5368ab238345ef048b8d00c9efb42d8446924b15f807e6bbde96e78e0951329440ac61f525369966043b84ce43ebf8dbd8029347e3
 SHA512 
d3dcdde3e2b8944e7230aef234bd3f7684890a8abf71b68ac991a2cccf6fe2ce8ca1ae0a7ec9a19359daa8f3a08ec6602e7c28cd813ca8a2d19ce4093a778a7c
+DIST firefox-140.7.0esr-fy-NL.xpi 442165 BLAKE2B 
f0731a8bbd298cce0fe4aeac928ed5f2426a27277a4078e75e671056688145a4bcb30f9a46309582a2da7cc63f95a2d8255c970f124eef25dce1e79dc848775e
 SHA512 
2e17621c4e101535bd70507296587eae2c4515938b419495a412ed13405e9955d846c2216b1acf89064c4c99d575b1cf8d621f701df80ba53b468cf2ea1126d8
+DIST firefox-140.7.0esr-ga-IE.xpi 315280 BLAKE2B 
edc15fbd0237f8db93ad602bb34364e86a8e865230b1c2b53e7b98754ab8ec0fb2066a7f3894a0d4964b96a65b6083a9eed95f923a7f94686cf1a6ca9fdb859a
 SHA512 
f9a7b4e5d3171c29bae2982ae4cda439c8fb2f6627aace4fd01194ccf46e4100e4a9bf84409898d342832769bbae69e84aad415ce9bf0e4160f0ce05212d06d7
+DIST firefox-140.7.0esr-gd.xpi 399432 BLAKE2B 
2d00eda010b897105abfd390f3c47995e49699f2e2cf030713b981f4f07d655a83e395ece73f1707b7a454ad41a851c7f5934d99a9c92a7b52d3fb2c21b74920
 SHA512 
4ee2990bc25214907be3597b19c3f3b9090980472f69d7c6e1e7e4cd2057c4cc3a2704245e4473c61e2b62e9da7ec8d93af9ca9008448dead746224a4bd027e6
+DIST firefox-140.7.0esr-gl.xpi 442904 BLAKE2B 
ebfc717ef56fec64275c8596300d8a0c6e9506d59ed4af95197f659740d824a754b314b82ce14b9cf4c50c39a9e46cfb7bda4e5defd7c6a47eaf74aba6d66fe8
 SHA512 
812059d14e53f2b8f61032dd0f9bf23cdf69cbf0bd7bf1376e0d73e9199dcca28ab47423d64f0e3567e2e8d1f483a11f21d07270caaff1403f0ebca04f1e6d5c
+DIST firefox-140.7.0esr-gn.xpi 451076 BLAKE2B 
21be2c2125e37ff6a59bac16699d998d8d4303971b1b9c7779aac64e623313c9a2778777e55f14cdc8c21fe6da2e420f716923dbef904cca2487e3ddc87aae12
 SHA512 
4d535454b7016736e626097482ebeb64faaefcb75de377055a890156d545aeaa7ac13ae9d55acb217939156dd19fcbfb2e18511a12af4f1b1cbeb07865de6a5e
+DIST firefox-140.7.0esr-gu-IN.xpi 358976 BLAKE2B 
10a67f60bd449f3b350f4fcf43d3a4ba8d459c1853e3aaa047ee0a0bf9095c3f0a72e866dee15e755d5747aa8bccb9f25e13e3ab459f8f3858139cda8f8c8858
 SHA512 
0d66b0072916e80bf2a3833763ea0dce690be7ee5107710574831c84467dd68332d89cba6ff21699c34bf1c1d4dbc6b78cf3fa3bad48710df57f18f74cfc9641
+DIST firefox-140.7.0esr-he.xpi 444978 BLAKE2B 
947e5abf3caa3ed678ade4649309b04fe950ba6a70a0502b7c68d9011b2e83c34b8ea900c6fe88c72a7babd92aa48f0e14106d53274f4ca29565f7298753f640
 SHA512 
93f82591d31efa4274da882d9824a7c6994f38768d822fce4bf7003fc136d2a2258d4aed33a26d52aeeff80773105519dc6b78b8e9d0025f4e79012edbbbc100
+DIST firefox-140.7.0esr-hi-IN.xpi 377460 BLAKE2B 
08bebbf1ff8daeb6c03a9c61188e84cfea7b1852b843b54334fad94a4fd95410fbcedfb48299100b32fbfbcefcc33391ef8efb645e99f4fbadcfeb537ae41cbb
 SHA512 
45a164ad4249d65018de56016a52e028296fb9273aab6a458be6d335c9e6e24cb9155cb803da788eb0abc2a59d4824dcd888747c219c470dfa7586e3e27a4301
+DIST firefox-140.7.0esr-hr.xpi 437684 BLAKE2B 
a050e30ded176947a5c9672cb3d1a273b781bbcb7e0c36e6d83335a152e959d3651f5eeb47e862dc9dd98efddd51feca6ad72f859e61216d5766fdd27c6a425f
 SHA512 
97ae30b463eec86b19556a94132d95ec0edba42a4e0dbf3925db5335b259553b9484cedf7be6d0bd6fbc8df53e349aefbf0ca1edb57182aeca8d711bc42fd463
+DIST firefox-140.7.0esr-hsb.xpi 462697 BLAKE2B 
d35d47421ee02e6f03e8a83109992f9ba0bfea102ac5eefe82cb3b1f0f29778fd77ca1f551191f82e9ecdc70885d9e1590cd07dc12e39bf8be11baded6a2f3c5
 SHA512 
dc2df9f2d4b5ae5fd8ea3ec4e3b46be2bbc396ed7093371b87e022fb78c0ca5b41eb50e02c51a99d7cb9773610af509af6e8cc700e258033a9343a4e44d721b4
+DIST firefox-140.7.0esr-hu.xpi 466173 BLAKE2B 
a9abc007b50ba6e88ce3b17bf7ce97ea5714e99823f89eb76f6da1f826bd146e301d46f8f44eb09450807b8e9a1ee554af09930409554bf91a33df14ae08de14
 SHA512 
34da8be96a698f3a389a4465716b1e8361a22f23433918c5518342d636aefdfe856fb20249b53b11c1418511e8fc6fa59ac7965dd43252768a6af485735c2c5e
+DIST firefox-140.7.0esr-hy-AM.xpi 461611 BLAKE2B 
e1f30c3edfa8a7c41f91b7e5393bde45a1f599336d009bfa5228d786c90c51934ef81fc29df05975c7c24740561cf85236a6987fc154de781472a0ed896e68ec
 SHA512 
7dff36b7c9e729ea050f929977599bc569a179bfa71db27c2de0a8482c4bb403dd93ad12e6fc96b789ed8887c1985664802e355daed2eda3227e23fe43cedfb8
+DIST firefox-140.7.0esr-ia.xpi 430114 BLAKE2B 
bd7dac67d613bddf97db57de96845fb3e92f6e202af5fea6226f053059ac327a40e2a346b26d8e9b92ac8d6fba8828b47881aad5e424e14b0d9e21fa01e999d3
 SHA512 
e8e6919f73568e5eb16dfceffa8597e3c852f168fa8c30e6aafef5b05d8ede97026b1cc2db902a1fe2f5013de9d268dbddf984595fbc58c8c68593c5565d33d4
+DIST firefox-140.7.0esr-id.xpi 422743 BLAKE2B 
9ae3be9d6abc5e1a9cc7d4e22002efdedc883336e6a516cc850bed73b0784e368da95632d131803d6b8e2233e532d8b95661a638c4202c07a57469f4d7126f2c
 SHA512 
ad07685bcfc29f65b9d067957803b11a161e2f86f5248a5de73afccc39f6a0911c74421e6c1c07c8ff7c36da71111f91e9f2dc290ab759ac69fe5184c5b73c78
+DIST firefox-140.7.0esr-is.xpi 432679 BLAKE2B 
ae36e37795eb64fda8fcf59a2ab194a6e8dceb719a2b63084967f963fc184f2f15e79a4c969b0345ff396c62451e4f21ffd63dd7b0e9c4d6b715c69b35f926ed
 SHA512 
d0996501370270148ed152bca1fc06cac0fa9d9e2c388554337c643d775d77684556218f413dbca36ce9631a1feadf47190a85ebff8741985c9d802a8926593f
+DIST firefox-140.7.0esr-it.xpi 440896 BLAKE2B 
d0cf33792138d1502b96b3ce6fbb76882139c96999f74c0e62a2962859b9be64e3bbdfd97f6dfd3b2559e3f97ad1a5a44e7ae634af59cbe01ff16c80e0f79d4f
 SHA512 
fe3889efb69ddb821c6f8a77afc0327a0fdc6459daa16348dc03bcafc31c820a959c6ad8835be735bcd5bd16ecc1886d5d91bc8ade9e1d1dfaefcf6fc8254e2f
+DIST firefox-140.7.0esr-ja.xpi 481320 BLAKE2B 
b894d07864bd7e4ff61325c2b75a42a1d3be1aa79112577ee076f875ebc5cc4a5c773eee63450046910a9b677d6f74ab368414d58f026f6cce5a0e66fe8ef98e
 SHA512 
c783e4a2148520ca4fd6b9d13c64807e0786f4d10ae78a86f3c7d00ba4f16759027d8843537ac60da2bdb5dca52eaf8789c57b735caae505fe28d757fefadb9a
+DIST firefox-140.7.0esr-ka.xpi 494877 BLAKE2B 
378e4cc886d105c2b9c307bedd1cd03bfb1f84ccdaae6ff9651e03cb73a6fcf92dafa8afbc998715fa8612468b9d93b5e1381cddc3a691fbace52816c075d955
 SHA512 
ae0a8a24b92969c44e8fb96ca0e2b59f43e0d4175dba1b38ae8002a0a869840151db0db195f9de2172a61f93d9729c074536f8b922c0ea6b19c819aeffd0be20
+DIST firefox-140.7.0esr-kab.xpi 422844 BLAKE2B 
7364d1e3581a35a3a569de6f92ba253b8488a6d19a806d70c825e2a2f3b2163497b556a820f410c8c7fd1a893d8afa381102974f2562d5c0c926ebdd166f0f8c
 SHA512 
5b495ba0affffd6ac94943c3464a17fb42b3c397d2c7e4aba37fee41bcd5f7c2ca41c975c493443f13e761db981dfa7a829fd95fc5fd7f763d4061b7513c5d3f
+DIST firefox-140.7.0esr-kk.xpi 506682 BLAKE2B 
87c7009f01b3fc27686f641a24211f99297641ca1cb094567bc1a31a291230daa54e3b199cfd570c1c2bc67fad176282e9769d6c5ac9c948dea31d308784b89c
 SHA512 
d0f4e5da9dde96ec270af6feb35b9a0178f3364ae9713de13839d6dcd56d85b12359b9884fdebaa4a734162d068df074274010a21db5eb0bdef6790e407caf12
+DIST firefox-140.7.0esr-km.xpi 348769 BLAKE2B 
48bb331f5a3455b5e1470bf136d25ccfde19993e5ad999f5198401defb692bb28f91f95b44318aafacef39b4fa091ba24f445d4e3006f3727dab244fd33afa35
 SHA512 
26e68e65f33564390e6174c112fd5e9826bb2802aad9b7969e32be833a15cf1f6c12368bd0fe6c791a8837067f8757e60bf2521d73175f2f0e7f8932394fa0a4
+DIST firefox-140.7.0esr-kn.xpi 331775 BLAKE2B 
9580ea03240ef32ea077b585fda77ab06a15026aa3f7401d426e96819907c886e026f9acd1a71019d8cfcf7a168e7cc5940bdda599ecb0c4572714a09d2d2343
 SHA512 
be61d7c2563744ca9d7615996ba3e8df37bae3d75b6a659784fcf0f6e7e6f160beeece2959c6e989369344dec2469e16a4d63a93aacd52cc1df9b850b6512e69
+DIST firefox-140.7.0esr-ko.xpi 467543 BLAKE2B 
4176441fe7f11496c2a9743fe65bd3d0b11f76dafb0c096e971ae07418853977dd4ac56a3d3d5d70c69c7097e0109a65bb799c800c0c92e57faf322793a75120
 SHA512 
f7b946f9e4578c31eb7d6e235f0f9d60bd4116c64ead1873d0596efd0ce3d738a5df26317f8a6f963273355cdad96376817158e95d63a05a9ec661c10d10edb4
+DIST firefox-140.7.0esr-lij.xpi 319294 BLAKE2B 
495e6a55d770df2b5febbb90748369643ed609fd636b1568c5f3abcb0b304c933c090a78f74c1c881531399570b7c2afebaf56ed76e3f91a4390ecedeffa81b6
 SHA512 
4b153df63a585b0a1cdbf84aa99699b83310668e40c6f1b0426d0bc746933a21cf23009af7b1b21423e014d4ba18bf225c5b1a7925c41e13a1386a48e271f91e
+DIST firefox-140.7.0esr-lt.xpi 379949 BLAKE2B 
67be0d18d731c0aac559962447fc0b6bf832c0c99fb4a5ae9b29380309faa174624e0c112100d635aba57b16a10e524a96cb99b556d71a26dc8c993de5420e64
 SHA512 
6200db4a78172a5ce1d0d7bdd06e2f6c294b0c31b7eaad6bed26abb171bcc7db93af7d99ddf1801e3f052010354adbdfb962743aea21481c28353ccbe231dda8
+DIST firefox-140.7.0esr-lv.xpi 389077 BLAKE2B 
8b6343dedb06282f690a0b79ee80f44e4c676abe7ee5cf033877af8333baed1faaade84ae3d29e1ff1f396f2d1ea3d7e47e0d7e8e19c2e581eae4797d384463e
 SHA512 
00a65c7858ff5161377125b0cf14ad30227c8b0091aee8e3046c7e5ae9f8e81651701bd0bd7d7c724dacb15898099e3895641675210d2cf66f1f689af273b3a6
+DIST firefox-140.7.0esr-mk.xpi 316834 BLAKE2B 
90e22fd38e9ed872ec397c10a8787e2e12a7ddf358e508db521dd662baf7eb36e976b2ec081549cd7b942c15d260c698da3abf43955b35866e4f7660e2023975
 SHA512 
9999f106196225a561b1f53778419eb238e7e9ddcfe43bb80d9a529b50fbd270646df7b249eff98864d15a94eeeaee5052deb2e36191b4d06dc7eadd17c8ca14
+DIST firefox-140.7.0esr-mr.xpi 356255 BLAKE2B 
e032874f8114f07a214a50eac8f55d8cf65ceafbaef1a089a0a5f4af08d9741a1e20a2d3acfff2a1f4a42cdb0e287bc02cb19397b9f605ea7b9ce74122afdd50
 SHA512 
2b02eb3bc354eaad490b640e1f2b97bd7bd8140d3988c73ab531e73b69b867ec288b151f296d263d056d34020601eead29334cfd77c575d425e0bf305387c250
+DIST firefox-140.7.0esr-ms.xpi 295388 BLAKE2B 
a490725a94532778b6ecfb96a16eb8fb401e08b184f69aa4a90689aac47884c94dd98da1ec3fc40a6c936b74cdd58856fbc2f5a82f3b5b18ee9eed357b8fb279
 SHA512 
760e2367836f3f1678d528925556c04b69ab57e30c0f4cecd439e7efeb9b9d7ef6eacee7976ed584daa0b4149513c7b10c9a405c11ad1d771d4db639dc08cf5d
+DIST firefox-140.7.0esr-my.xpi 343033 BLAKE2B 
058e65b56e2b27c5e30e035349146f2902e68a33cf5380d265afa4e1b794e98c6df2d0766c622b1432181b348164d3734ebc50be6c189440c7e8e03bc8358ad9
 SHA512 
5245f02005ee0ce19c2812655e16879f7d12034cde1507c89da63ea1b00d7302ca322ac01d9d28ee832b7f02b72e8547056c3ee71fb457895d6a7abf47c7c164
+DIST firefox-140.7.0esr-nb-NO.xpi 429331 BLAKE2B 
9991558b812a61de58cb1277a3cf3b887b670fb0f7ef9f7ed33d796dc586877bb693f81bbe3abb7cfea50edc5f05fd148941230477cd6e230b1c3446ab56e98e
 SHA512 
3dc84fb47f93df1ff73842ab7cfae11e4a677516dc9a04b40851e5efc3505d2cf3c9c3d6b55e904e793b89a0f30261ca3e6092080affcff80ae897312462b877
+DIST firefox-140.7.0esr-ne-NP.xpi 349018 BLAKE2B 
186fbb8ab301700418d57355f27cd61c58ceb0b2a87e0011c4af0936ff3d6ad9c377052a2f0dbeb4a360d4ab765e7d1d17a7df6c6f583a3b6435ede5e125b690
 SHA512 
d615f001d33db2606584eb4b01a68b42ece02e750b3e8641090ad20f2206fbb44712b099a3544461e4b80e78a20d582f97cee970c3e64ae1f014a96a7934d01d
+DIST firefox-140.7.0esr-nl.xpi 436180 BLAKE2B 
d4eea314f7fcdb547c281049e7ce002a9dd961e46827156c2bc830cf2a72f4340933474a60e0c6a82c6ec6b53589f7b45f1fb8bf9b39f80b8e7e9da4d3b40a49
 SHA512 
ddb31b764d9279f6dc113c9b8d8a82b770744b5458d98b6e824b18133f91bda0f392d578e5cc52a0c9431e960bd0ddda35b2460a924ae9dc156615783665691d
+DIST firefox-140.7.0esr-nn-NO.xpi 432215 BLAKE2B 
192cb3efafa0617e4023e706efe094e2ec4a6ed979eadf49a6db5f870ea9c83bfb8916215d62df6cfee6643300e2b267126174e6b0770a84511ee16be910a5db
 SHA512 
2a771ce4a11dcd37891383122b43f2fb4731ef30a807c600b09a8528f8a922963ea74df651412e5e9a1e37309208a446dce2b2fe220b11e149ca136790f6bf88
+DIST firefox-140.7.0esr-oc.xpi 410931 BLAKE2B 
2e9c105f693956621f0bc6803be7d65f6203b8945a9b226a1a6a0f6bf9405ba21a15d31af258fb99d098513f755568de6689e057bda9ea906fc0f03df34bb9d9
 SHA512 
3481022dea1a263b34c8707f2efd5fc5683f736e9d074c8e67656d7536960dc23e674c66d8bd1706eaca50c2fa067f3f53f44a9097741a820a5170a2769a95c6
+DIST firefox-140.7.0esr-pa-IN.xpi 494400 BLAKE2B 
f10bb6174df5c6931f1dfd0da7ee3d5bc934d7713da020ae6b15052c40657aa79383a799eaebf5da84a3d29232b15ed18283181da937f506ec1014e5e4fd617b
 SHA512 
1d38eed6b7aa5b6f3155048461779102bd89f864922fe779e3997377b782e5aee9ff943dc190c227c800664bece884fcf3f25facb6634a86ba504c39f7b34d4c
+DIST firefox-140.7.0esr-pl.xpi 460925 BLAKE2B 
2ee61cb03f7ef2e5d85d8cfc7ffa55f032a1e7a1c4455e2fe11ba513f475746315fd2e84fb3f16f2892cf7b51f860bb366d4e4117f923c69d91a83e689775fb9
 SHA512 
1e55006925c7fc7d65f1f160cbc0b10b01f9b3815723e699491055308f4489e144f5527d8a8345a8494efef33cb23b738d409de7179e24fe0721ad27085b6c33
+DIST firefox-140.7.0esr-pt-BR.xpi 440755 BLAKE2B 
f9f9c8cb418149db32eaf22afd14a1a46ee1f0ed7a17d3fe13bff56402d4ed2d2b5237ed36160b976311db4e96c8b36697d2f9a5c1a8a34e5745c9a6fc587519
 SHA512 
9df67697180ed1b0d116a7e77015544847f80783ad3fede637c86d07e407a03572a8f8b639ae1c854550fd671aa8e3d56329e816c1efab30ccc4c1da4b4b31c6
+DIST firefox-140.7.0esr-pt-PT.xpi 446412 BLAKE2B 
d0c4be57e259683505ef738041785c92f560cf8293bff7a77d76b96d2aa9e5cd672188b382325f7c12dce96a4708f8a5c6bed9f9203dacc6799b541ebac1a2e5
 SHA512 
299ca9891484ad85b6380ae833fd0666aadec7e72f70d98597e444b7319565156ab5af4d8ebb4815d0e4f19962dae5c04c09bd383eb7e1664b3619459c83106b
+DIST firefox-140.7.0esr-rm.xpi 438020 BLAKE2B 
f1d886a35d8f8405913c52678977de1b6bda493e8b48c8072b259be626c8ada0fa82eb5e2a4c1549b1a345426461f2dce22d97e6c1270ca3b8f4ecdb42aa816a
 SHA512 
aa1f604616de6018aa2cc791e4a61ea0f771f3a99d8ca54fe597ca741e3a5922704c274398bd14e7d5fb397d87cbc7fc767c5e1b99a7be7e680b3d2344485ccb
+DIST firefox-140.7.0esr-ro.xpi 452842 BLAKE2B 
172c713e128cabaf3f84b1b3e63214129c2826a7f7626d059e9f1809889cca67a5ba927a1b47856c121852b424148c335727f519e9c18c2cc93c94eac5057a3f
 SHA512 
e4ba99738b70534cb73213a521d4406f400ab81df7234b80eac47734a5e8c967ec3304a6befb88ff66a7b0edefc0bb84a567ab3511d216f5bf8b3924c0b1aa8a
+DIST firefox-140.7.0esr-ru.xpi 525178 BLAKE2B 
8621be3365b37b0e11ce688799fe3a32c296aa2ca7488452259c7addc3336268752b510377ea68605025306d300ecdd33875b133b2a42b771acf2d44d2a0d99a
 SHA512 
848e6422fb128fa326684dda05b0e10100578b6b611350551ecd36dedec186f5e96f198b22d8e5d813122514905b51e02c10565786a22d9016a47eee5c141c94
+DIST firefox-140.7.0esr-sc.xpi 410464 BLAKE2B 
4a2f3d8f8747f2a0e457a6ea93c6a8e8dc091fb326579832462d468a1d540b83d169eb299e960bc4c2fa7e40f13c3a823d3ed4b2ea315fb672212923b0ad20f1
 SHA512 
631267cf41b494720297fa38fa6812bf99cee663b034e4fab5fd22a9c6c3adbaa8637ebf610a7b180b0df26c3b6ebdd73c93af69d14168d0382015b6f8b2b0dc
+DIST firefox-140.7.0esr-sco.xpi 322651 BLAKE2B 
a5def68636b4e40d396c91aec20e2d30296dd7d46178dfd902ab8eb66cf3fb5e7ae0c8f73d21a1822ff51f18fcfce621e33bca90263004325605e18b45716680
 SHA512 
5b44ff3fdd6f35e67adca1512efc3c56c0d4d1c708783d8847564e32517ce5402772488d6326df71a539041f9f28ac4dc0400a8f7a0b5cf87726557de6c55ee5
+DIST firefox-140.7.0esr-si.xpi 411607 BLAKE2B 
61fe3b983624e2f037f00011b45c02e40c2bc5044659859c28aa27aae6daae4ba2c8834732074aa843a4df34f204e2e7ba9ebc6575b04b244939f431585fdf88
 SHA512 
0a3e635ad7fa076f7aebe66b6c9f22136e133fbfed05ec10a2117d022574db0d5b505c75c28d6ac5de3cf1d37114871932587bc08fba9bf3140f946887bfa498
+DIST firefox-140.7.0esr-sk.xpi 468228 BLAKE2B 
e70baa059b89f46819ea187e7c8037326440ba07b5114729ac64a632347f912b283821aaf1b9520d5d6a2565182a9766dfd87858585fd934592b45369e40f592
 SHA512 
f56e66ec4da2ceac23c7baca298a0bb9f23be5fe99dda2ddde5a9ffe4c1aaa8525afa0c043ba1fea4024997a82e14f6d14545e3f96d7b4b3e78040f8a8ed6648
+DIST firefox-140.7.0esr-skr.xpi 485864 BLAKE2B 
2b46e9c5d5edc8e384f0a7d9c3606d47939bc5731d35da97f4adabc1c7a1ceb2119c10d8dd7fc0fc8b3f4b6a4ed4c687dcb408f38395acf8c953dd8126e059ae
 SHA512 
b97324d40934636d56380a8532fef157710c08b086569c6111c9f18ec5602090e7e246439e947eaff3eebd2a0d5d8c32af1a0c63ff59a70c3441c6744cbee50d
+DIST firefox-140.7.0esr-sl.xpi 441197 BLAKE2B 
2ee95d11d1f587e0e82e6915b3ddfd98af3875c1aa6daeb102691b17825311d1cd248f681d45eb83f821ce59b2b5caa1130022adda298abbec91b20971bf08ea
 SHA512 
9a65fef122e1791c88fa3743dde2b65a4dabb1574edde694c604d8ef354299a6ae0668ea0c07d61719de43c2e3ff4f52adb013c048e86a4e388493856a688671
+DIST firefox-140.7.0esr-son.xpi 273120 BLAKE2B 
4ce549611120ee3eb79d47636c6044ac2443fa0e4e4d013bd546588c572aaa2cfc7b165f4aaecced9164dcbb9d90e70b445b4531a6ca39cf2e597e43ffb4fd3b
 SHA512 
bbff16ace695b3923a9ebb7966eee71a1f571366ea9904ffc196f15e58d878c38409ffd7c2c20dd69a7c50835f583119dd3146bb5b8ffa912baec47be7d9d27d
+DIST firefox-140.7.0esr-sq.xpi 456015 BLAKE2B 
d520488dc7d8ec885885fad4031e132a42b3e3d0f2785d414dacff58b40979e5296b152ff42e362e76f3eefba2b799f874d2a60ba41efc4cb5f2c1a80d7ea320
 SHA512 
ba4894ca993711f1877ff59f7f724decb47f6cb6f5d51dbb9f6c1130bb3980df35db0e13f3a6328f93724c2229712e24839adb6e6d58101824cd7055c8585f96
+DIST firefox-140.7.0esr-sr.xpi 453364 BLAKE2B 
a87e02817d4c845038fb5f99fffb8537cd09191ce760b64469d6242876500b793e0241d8106cbb7dbd7ed36fdb57193ab4494a88903ec0ecc9acfd936ccc6296
 SHA512 
7f90030a7d74e7108ace5dcfff3c6b2da5b330fd9c71b20f1af168affc3806c2e20960d9b19230e6365ee76869e1cb5c357c665a7e9d609dc217faa492be5240
+DIST firefox-140.7.0esr-sv-SE.xpi 436151 BLAKE2B 
db5aca356b8d19a30ec35bc132a6201e8eefd46691bcad4d36803d4ff9652569d4d2973ff57c3c0e3f0dd69be5495b1100c55f25f39c5f82098e01a60a764234
 SHA512 
74b3bc761ca7ef6a016b0c53f2e6ac9be730ffe241d4210b95f70b95056a000dfedbc37dcd9cbfcdf351f073d4f6504cb3607058da5b9ac7a5a3ec59ca1264ba
+DIST firefox-140.7.0esr-szl.xpi 341668 BLAKE2B 
e1da69c9b1d61fb4faf11726c7decbc3be0b30763f81d487d6e42d4eb3149ddddcfec1f700d0abfe98c89d85e470f5c2b3fe202a7a1a3c380673d91be4a70d61
 SHA512 
43dc3b72d115b9f0b9719fe782758f50c8f2399ded761eef921fcf79ef0050b704e08af9cdf4fb66e843de688695d180010baf4df7c2c29f4d850fc821bddc4c
+DIST firefox-140.7.0esr-ta.xpi 338143 BLAKE2B 
294c2b821087d8c5ed2c7c98c5f4d885bfcdf77b7f74c9f338d23037091b1e95bcd20bf55f9a5ff2cb8ba3c97dd306c570d7462a13850dc726a0b72732d1e556
 SHA512 
3b04c0b1f04264b4448991767ea66bcde73f002e1a5fb1027fde6afe6557ae4f9729806abd54ae59b5052cbb8631d8ce3cb3e6e7a7724c0644178b52fd04302b
+DIST firefox-140.7.0esr-te.xpi 382193 BLAKE2B 
4b30ce15f67d2adfd0661cea6a1b0fea74591a3815a541ef83316563e9c57c927c586c7cd9bdbfe8cfeaf34709f2e245771ee5cc2b52bbbd4d07cd05416a41ec
 SHA512 
1ffd5eae1930626c513d39a669f7751ada65e9e0c95e3ca3911eb018c01806bbc2f1dc536fa7ef01d96fe8d0548d8f8317b23ce8e612e1459041f4c2535edaae
+DIST firefox-140.7.0esr-th.xpi 505505 BLAKE2B 
daeb4749ba299de715ea357eff666b086d248d2af53c25254450f6c4e9c329c97f73e95841948b938d3d0bdbbb13ea55a404cbf9444a8033f1cfa9dfba81d443
 SHA512 
00dbb25f6614e3f938e03f5b39116a704243a710d285cee3e2e9393437a60ba52c5ad367de00beb4f96eba6db4a2860948c761829d91c88a20266a5d4322f790
+DIST firefox-140.7.0esr-tl.xpi 356645 BLAKE2B 
af15da6a5552d3ea3626c6e507cdf3e6b57f1507223a3ac425a73ebcba926a216be07e4f1e2dbffc5e4c1b6031235a3ddab0ae0656a8e54445d68e27e2b007f2
 SHA512 
c5f5c09b536e87071a82e91b609036357da6e87dcdf8a80ce2ba1b677c9864752920341ff9dafc714678c3e6c1a75f20fc99bfee28434f0192d71e9391915dbb
+DIST firefox-140.7.0esr-tr.xpi 449313 BLAKE2B 
1476ba57a61061575f28f2b4acb69e5d51886e1f19f7a9a38908c70586d753b946b6c04bb4968041f19def73ca306ee66422416bc8cd6995375ec6c1a18c3e6e
 SHA512 
8bbb5ce2532f97e5732e873f348ba273b5654a5177e22bc882e91d490c82ed9058f0a181390546126f29869b721b59a0f7da6e01e8cec7588302e39e037eae68
+DIST firefox-140.7.0esr-trs.xpi 324521 BLAKE2B 
c486b2956706aa95d88f92159ef903c9e438188f7f0bed0013acfecbfc552213b9b9ebe97aceeb08ac41033b89cdaf63af7c43951af56863e904239af8576c73
 SHA512 
82b53455a1a4300c83da7cfee0c5692a63b06c9b05c5294345dfea651f013534221c1b254c1f7ce0053ebf590c83e50319491b26a4d35a32fbc8534c887a3fa7
+DIST firefox-140.7.0esr-uk.xpi 516720 BLAKE2B 
f9fb5b46e635cdb12bfb944ee66309c6361b849f36d6b2cdc4190970816394e21a09bad85c6b644ca7429b1582e9f06fe98bcd19b98593d6b78a0d893f23aef0
 SHA512 
a4c42261541713625b29291ae752f838182d0bf72dadf98953286dd53c7d9c44254fb81f6797d512cea20b8cfee15e3ff9891d57509c74ea22623e62e8b17b41
+DIST firefox-140.7.0esr-ur.xpi 370177 BLAKE2B 
7574ae5f8d94fa1c9403cc877dffb3c5ccc068abb85e1cefd424004179691e4d1ad8fc3592201486e17bd70661dfc7f11a6c1fe147635c4e263297ff9d60cfba
 SHA512 
d94042e0c7a845cbfccf6a030e84f162c6037d7e2f6dda46c38c62058eea9895338243b1d62af4e3c82b89fc230d00b32a42531689fc28da3372304399e2f273
+DIST firefox-140.7.0esr-uz.xpi 303489 BLAKE2B 
5aa317a21cf49a5b989e678d73154bcd2aeca993c138094c1192411a6ee59e4254fa3f23149a429bbd021d38512187958c5d2e91d26838cfa2d3490ff154f84c
 SHA512 
53d2f77ebb06505feada90405a50f15ffb4b2331cbc93e181b0966e2de48c360daa2dbd55024bb0459f8fc8f7109d4d2a99be50fa94e999ae9acf4bb51c9fbba
+DIST firefox-140.7.0esr-vi.xpi 469136 BLAKE2B 
427a82f8921d69a2b2b7e94fba4038283748171eef6c6e35aeca6b943542169222756447cae5fd16ee4d2ac5db289a5782446bf5372b3e3dc97fcf3bd34a73e2
 SHA512 
280550c83af3753e27b241c98e2337798f13e2348018ef0e12be805592d86af93ea0a8373f15eb44bbe68120dd421bae409f2b77364d1d922bb2bd78262921d3
+DIST firefox-140.7.0esr-xh.xpi 272794 BLAKE2B 
555ac6256ec1971c35596ce62b44b4c81622a66d14e1aaa98f451be118d08e769395424302375d3c879a63b624163808ac6dcf426998be5385cd148a804df859
 SHA512 
3e22a84eb5cc70bfa07cd99f92319047357604dd46ef04aa57e143da72a5839af2bba03ec4aa99ef34f0edb80b58edd437bd75cfb8601aeadc16f1cdacdf0ef3
+DIST firefox-140.7.0esr-zh-CN.xpi 460696 BLAKE2B 
6045a642088c942e00b46a67c7b897057df63f6890ad12f3ab7556807afe27e7e340e22069b9931f5ad8a0f9dfb17358f103704262ad08ff8ed9e7065acc19c1
 SHA512 
2c6bfb8ab3bba19e2bbb5c48c48ce2632e07d6f8f2cc11a163d5a4217bb3980650897d05cad6a71816a795ec62cba7e6526f848b50e06f4d2e7e9ced766fc803
+DIST firefox-140.7.0esr-zh-TW.xpi 463737 BLAKE2B 
e094e8d61ad12b90cb0226f73119a7b6af81a5ce965a8c0a56c1492eb42fff6ba221e6f82f7dc367a902f714724b82ee5a0ace5fcd1db35ac7f8a107484734eb
 SHA512 
16cbfb24cd05139d7691374560b5dbe8efcfb65cf9497a536326dfcaa5199eb1977849b19063aa17034327ab63b9d2062248320fa7b5d917445c117627737ea0
+DIST firefox-140.7.0esr.source.tar.xz 641146512 BLAKE2B 
cd5723595d1fdc0e52ab98fec5205bdc3228d367d2ca512a44a1ae98e1581bc961533a0a0fc57d468a0a10d9a1c480f28baab69def12f834eb51dd98c44cf6fe
 SHA512 
7781b1e203130c1cdf2a0c2ecb05a9cfa824c75d467e7faca78b66bd5568c821324112aecb774883d9f447af7fa4ade36488ff1017255af5510c8f641990e472
 DIST firefox-140esr-patches-04.tar.xz 124424 BLAKE2B 
89fd2cedb67a9d82c339fed01b79c9c4b3f58051b68764121f982d4eba04d979c9d16238a7599fbab4f9d3965253f3ec4886f2da590b05116bc6ea0ee027e935
 SHA512 
b8c268fd5118007490edb7ef99f90148af4fa88ec7cdec03d028630476c85862e896b1ad3a6964215835f6f442aa71df96d6dd9aab632802773792bced8dc17b
+DIST firefox-140esr-patches-05.tar.xz 124432 BLAKE2B 
9281214dcf3da5d2e288112a99dc1fbee44ee93c4b83e30d73e8383805bd9c8ad9b1918d11351398cd963fdc30ec3cb50d7f6b5c9905d7c1303d21fdef440fbe
 SHA512 
70551bb7eea2a50bbd30418438a78a8ace07467fe852b7655c24373c651f816df89fceeb98b6fa6c7d95944b0c5deef76b89b3e742795a8ac04259f02bd25c10
 DIST firefox-146-patches-01.tar.xz 10568 BLAKE2B 
643ed4298d7ab2251ae1f813473a7b461aa386dfb72984e46201b22b6cb0f69f28e92b44a4783dda32a81b4b0dacbe8b47a25b9232481ecd79a19550e74e4812
 SHA512 
9e2474eedda1c2644ddcb0f9fd2d90ede764469337eab1267d3d4dbe8e3487bb519106449acf1da9798050d61a51e96a882f365e4587f88747161f6418203e4e
 DIST firefox-146-patches-03.tar.xz 11228 BLAKE2B 
4c016627aeaf68f36ae4bb7d8e3dbd4dcf75ec616dedbf9931bd5f11fdb1ff15b93c7e3dcaa9fc0025279de4d3d503c38dddc6e6fa74d546f1c04322073ae91c
 SHA512 
0e117abd73062baa58d004368b84a3a541a521c0097e11735d3cd4e61772cd57d2482dbef8aeeeff085d51c35cde5a8253288803150aa501678392c057a7a9d3
 DIST firefox-146.0-ach.xpi 293906 BLAKE2B 
805c65104451b5736880d3f2e04784f8824fd96ba4ae9274304222dfa7965e65a7617b9579c4529577f8ebcd638a3d054ae83b22ff55e23456f546a2528f5b17
 SHA512 
ff2d360795e20bce2aa924a68bc7f07637a8565de5f7268641562a319ba78e1d499e62c07bcebd2e01e4fbe941830b11a21b7630067ddc7417d5da49f78010f2

diff --git a/www-client/firefox/firefox-140.7.0.ebuild 
b/www-client/firefox/firefox-140.7.0.ebuild
new file mode 100644
index 000000000000..dd8bb3d058e6
--- /dev/null
+++ b/www-client/firefox/firefox-140.7.0.ebuild
@@ -0,0 +1,1391 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-140esr-patches-05.tar.xz"
+FIREFOX_LOONG_PATCHSET="firefox-139-loong-patches-02.tar.xz"
+
+LLVM_COMPAT=( 19 20 21 )
+
+# 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.82.0
+
+PYTHON_COMPAT=( python3_{11..14} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+VIRTUALX_REQUIRED="manual"
+
+# Information about the bundled wasi toolchain from
+# https://github.com/WebAssembly/wasi-sdk/
+WASI_SDK_VER=28.0
+WASI_SDK_LLVM_VER=21
+
+MOZ_ESR=yes
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+       MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+       # Convert the ebuild version to the upstream Mozilla version
+       MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+       MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+       MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+       # ESR releases have slightly different version numbers
+       MOZ_PV="${MOZ_PV}esr"
+       HOMEPAGE="https://www.firefox.com https://www.firefox.com/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.firefox.com";
+       SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit 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[@]}
+       loong? (
+               
https://dev.gentoo.org/~xen0n/distfiles/www-client/${MOZ_PN}/${FIREFOX_LOONG_PATCHSET}
+       )
+       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 ~loong ~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-pipewire system-png +system-webp test wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell +jumbo-build openh264 +telemetry 
wasm-sandbox"
+
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( jumbo-build )
+       wayland? ( dbus )
+       wifi? ( dbus )
+"
+
+RESTRICT="!test? ( test )"
+
+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.27.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
+                       x11-misc/xkeyboard-config
+               )
+       )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       dev-libs/glib:2
+       dev-libs/libffi:=
+       >=dev-libs/nss-3.112.2
+       >=dev-libs/nspr-4.36
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       media-video/ffmpeg
+       virtual/zlib:=
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       x11-libs/libdrm
+       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-3.10.0:=
+       )
+       system-harfbuzz? (
+               >=media-libs/harfbuzz-2.8.1:0=
+               !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 )
+       )
+       system-icu? ( >=dev-libs/icu-76.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-pipewire? ( >=media-video/pipewire-1.4.7-r2:= )
+       system-png? ( >=media-libs/libpng-1.6.45: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
+               # Ensure we have enough disk space to compile
+               if use pgo || use debug ; then
+                       CHECKREQS_DISK_BUILD="14300M"
+               elif tc-is-lto ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               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 debug ; then
+                       CHECKREQS_DISK_BUILD="14300M"
+               elif [[ ${use_lto} == "yes" ]] ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               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#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"
+       use loong && eapply "${WORKDIR}/firefox-loong-patches"
+
+       # ICU's subslot change should trigger rebuild on Firefox if it is 
updated 77->78.
+       if use system-icu && has_version ">=dev-libs/icu-78.1" ; then
+               eapply "${FILESDIR}/firefox-146.0.1-icu78.patch" # bgo#967261
+       fi
+
+       # 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"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/chromium/build/toolchain/get_cpu_count.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-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-install-strip \
+               --disable-legacy-profile-creation \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-updater \
+               --disable-wmf \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-packed-relative-relocs \
+               --enable-release \
+               --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-gbm \
+               --with-system-libdrm \
+               --with-system-nspr \
+               --with-system-nss \
+               --with-system-pixman \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --enable-update-channel=${update_channel}
+
+       # Whitelist to allow unkeyworded arches to build with 
"--disable-rust-simd" by default.
+       if use amd64 || use arm64 || use ppc64 || use loong || 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
+
+       # riscv-related options, bgo#947337, bgo#947338
+       if use riscv ; then
+               mozconfig_add_options_ac 'Disable JIT for RISC-V 64' 
--disable-jit
+               mozconfig_add_options_ac 'Disable webrtc for RISC-V' 
--disable-webrtc
+       fi
+
+       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-pipewire
+       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
+
+               # Avoid compressing just-built instrumented Firefox with
+               # high levels of compression. Just use tar as a container
+               # to save >=10 minutes.
+               export MOZ_PKG_FORMAT=tar
+
+               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
+
+       mozconfig_use_enable test tests
+
+       # 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_test() {
+       # 
https://firefox-source-docs.mozilla.org/testing/automated-testing/index.html
+       local -a failures=()
+
+       # Some tests respect this
+       local -x MOZ_HEADLESS=1
+
+       # Check testing/mach_commands.py
+       einfo "Testing with cppunittest ..."
+       ./mach cppunittest
+       local ret=$?
+       if [[ ${ret} -ne 0 ]]; then
+               eerror "Test suite cppunittest failed with error code ${ret}"
+               failures+=( cppunittest )
+       fi
+
+       if [[ ${#failures} -eq 0 ]]; then
+               einfo "Test suites succeeded"
+       else
+               die "Test suites failed: ${failures[@]}"
+       fi
+}
+
+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 "${FILESDIR}"/gentoo-telemetry-prefs.js >>"${GENTOO_PREFS}" 
|| die "failed to set telemetry prefs"
+       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}"/browser/installer/linux/app/flatpak/files/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg
 firefox-symbolic.svg
+       dosym -r /usr/share/icons/hicolor/symbolic/apps/firefox-symbolic.svg 
/usr/share/icons/hicolor/symbolic/apps/org.mozilla.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