commit:     c28fe11ba09cda4e045bbb7d9d1b027dd7a66d70
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 24 12:40:47 2026 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Feb 24 12:40:47 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c28fe11b

www-client/firefox: add 140.8.0

 - bump nss requirement to 3.112.3,
 - include a patch for +system-pipewire when pipewire-1.6.0 is installed,
 - include a patch for glibc-2.43.

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

 www-client/firefox/Manifest               |  102 +++
 www-client/firefox/firefox-140.8.0.ebuild | 1393 +++++++++++++++++++++++++++++
 2 files changed, 1495 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index f6fc575ab138..229c99da01b6 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -302,8 +302,110 @@ DIST firefox-140.7.1esr-xh.xpi 272785 BLAKE2B 
5acef7ca961284fdbba06598188a06d8e5
 DIST firefox-140.7.1esr-zh-CN.xpi 460698 BLAKE2B 
cd5387a47a820d774815527e0ba8fe8f7b6fb210b12f8b399fb9cc36d31392797f89b45729b61cbc329e9536823d0dcff010904f43e09038e1a1e1ce0e9287bd
 SHA512 
42f2658a7b130dcb917ae887673019d438fc59d0ee7dd273853fbd846bfdb47fa872d07bac16b4b8d512c2f411d149782131e8f32a8883593e9b6cbd7cd66469
 DIST firefox-140.7.1esr-zh-TW.xpi 463741 BLAKE2B 
18aa719aa26d660d0ced096aea783e5318b411633bbc9635ee9218015d8e4cfe6db7c1c57f3a8e2ce275d11e4b5eab5459f915b0bdfc6c4be792b3feeaad5ea0
 SHA512 
8b4683a7a1518293bebff1ee1a4648dd828152569535d2a82f815ee0a0379bd7e485785c690633889ca03827c15b5ca59c0cc9779af138c8a06e9d57c333e10d
 DIST firefox-140.7.1esr.source.tar.xz 635535480 BLAKE2B 
89699f1200a913205ef93aac5ce24aeed1be41f2befa7d5fcb4d5a7a0124ad8b42fb7075243ee09efb0de7e793df1e753bb8b275515d5b3efa690d49be28b249
 SHA512 
7d867fa3c9c94903f6583be75ad4aa8d918f98f74c99c6615a0e40caf21c545a30149115214876693ef1758a320ebdccef017c484365c195e55998cce088663c
+DIST firefox-140.8.0esr-ach.xpi 294361 BLAKE2B 
d062b9c2f1c9cf242001ef07d5e15a293827e9e868e7589a4824426eebc44d829e4cc4c0509fd8b1baeaca7efc0e172544e12e582f97746e0f0d4eb5469e8768
 SHA512 
a8335db2d65d9bd76302732cd2c255a204d6f3880d5ea4841d1cb25dcb88a4c881d8e141b41e0e3cd4c1496e582e29a7cfcd7a159ed638467fb609bee542b9c0
+DIST firefox-140.8.0esr-af.xpi 266633 BLAKE2B 
355f0d66e5a0222af7ab18f6a9b436e8abb3b0a8fadd0fdc262e1f0878dd8cd606583b41c460d7c12fcc118253108bb00264c0995f4377b8a5a402611737fcae
 SHA512 
40f869d7698a0ab6b3ec613987a50e34de9abc5515c49f85d65e4196f9b3756bb06cad6a70a22a718dcbf13c0cc147217727101366553a505f047809d5a60ece
+DIST firefox-140.8.0esr-an.xpi 332291 BLAKE2B 
7d86c9d00527617e1d55098145b05390fd4200f3cc7bad1df86979e6996ec4f476543e6241dbd168d9c8fbc8176e1e283e3eb6141885422d58d20ce032bc5ab3
 SHA512 
de61a15083f162a7a49ec86d66aa31c2ac150e0b63d55e41939f6569858303f63699fc177b74e1fa300effe753ed890ec47c4ca57e2df4bb9942154bf526b122
+DIST firefox-140.8.0esr-ar.xpi 445288 BLAKE2B 
c32b043bb6080e3f81883f2cf44bc66b503589ef9b7878cd66c7151a263921c496063bf8b9fc8cd697d0ad1464d4f3fa1856f4a6b8b5d872253f80c120dd3c5c
 SHA512 
56f17b2e17472c366578c42588e3105ca4af6ddff680021b683fbccc24cf4ccbe2c3c1be34af0d18d3b1f32a0ccb31e30274e1acb35cb11d233260c3799431ca
+DIST firefox-140.8.0esr-ast.xpi 312217 BLAKE2B 
162bd6e75613f91d2775744a75904b2e26589b12a971704c86de8a73f621040f55db69b14a076edc9e3b12754521a26bd0e4dde0f6409892750d797d4e2a4b75
 SHA512 
f91425ece35da1dc644d7f5eae632a7d517d43a325114b860a52dd3759fd3127fe79833638e889151991ecb251fdfab65a79da00c342e0b097c3118f0616fe4d
+DIST firefox-140.8.0esr-az.xpi 318415 BLAKE2B 
46e3fca26302de23e92d9e954d54176948cdd9711f5397723365b814d0b36c8d0b3696f3992f827c079f66453a3e490459d922c32fe0810f4ecc2b1164b2525b
 SHA512 
2eb2be8dc2f04e16989aefb2be20f1490d051e11ac16af2a244a14e3a90b7e575cd1a258800a844f8b00ac76e629b315acb8c8dcf8a62dba294eb73a9c7d4f9d
+DIST firefox-140.8.0esr-be.xpi 521202 BLAKE2B 
9e0e0ab0bdc46937c0f0d67e35e3b86dee52c869df29d072c25d7af5cb47ee8175d7cc47cd6d088d641133953723db4a74c616ec036b1c870558c9fafaa313b4
 SHA512 
1702967115e1df19b2a3644ee5cf84d6ec1da982dbeefeaddd23fabab130a016c7c60d32e4581f401b84fb1d2a67e24fccfa80951899b4ccf13ede02d592ddf0
+DIST firefox-140.8.0esr-bg.xpi 457550 BLAKE2B 
7886e94c312ede6a2831b68a4ef2cceb16141acff8d156d566c2646aa5de012ae33378bf95a5c09cc6072382c103ffa9474ce7ffac2efce08cb88cf5d7f05d40
 SHA512 
44000d6475ba524eed7d541ee3ebc7ef2c4734213a5b887534b528aa00efc826595763e94c670726657cb421ca785aa47d07c17cc121187ead884af533dcc15f
+DIST firefox-140.8.0esr-bn.xpi 413371 BLAKE2B 
b4f9f50a7c29149562ab1cde2fbe4f810b028cb9ebfe4c939e9736405c3a976256f9bab09ece7f1ac1524712d3095cd259a72c50a936af2a367c439d3c7bdc3d
 SHA512 
aa837999cdac1676881eca05baaadd8c61526761730440ec3cb2db8f2badf41b4f533604a0d2257bfbc8423a7db4ed4e633a07b2052a6bf75bd5cf6905c2903e
+DIST firefox-140.8.0esr-br.xpi 395314 BLAKE2B 
c5f312301a372510f34fa381c59ba68bb077ac40950e7e4e7055f7b89fa52e1800c8ba5d2dfedbd62ec470d198a2ee092514719aa75ff7f9fdc123c7cd68b52c
 SHA512 
0621cab1c06215caefeec6aef75dbeb9a8bfa4f5141f93546ea43b56e35ebb4bb448e84fd3735dd12822ee16941deec1abb0874aefdcdce9bf073b0684d24336
+DIST firefox-140.8.0esr-bs.xpi 447169 BLAKE2B 
f47110510e10cfbe3cfb3cdcfad9619ad6906e2ee83fa8f466dbbedb07d07c588ae07d773982a8874e9a179bc3903418b78bb5e4002397e69c3e379ef9010f2d
 SHA512 
f8d24701eb437e162c2228821967b51735c94213be05ae5a177b5bc8a481937c251eb91d3d0b6b5eac0ac8d20b21db9e8adf2cdcf1f46b331b294ef08c04b054
+DIST firefox-140.8.0esr-ca-valencia.xpi 357929 BLAKE2B 
5586472a853865e9a034ecb18af2c03c8bbd8e8de106ba357c0803cc5b6eaee6df622f9b83a0fcf1d05381600bc161e907b727d9eab89224870ba2d9c4e7dcc2
 SHA512 
c5b7943be1f38cdcf11e7be1e4e2803317b49374b146130c0baaeccd6023c922803a03589de4cf16bb80499958125d0a40bc3cac112dcde565850d9a27e84809
+DIST firefox-140.8.0esr-ca.xpi 404816 BLAKE2B 
b9e46573854672fc2d673e307f1fed0dce844f3ffbe9115c4ded6055c788f57c45385632d8562cc3f30f218b80db90c56da7baf516eedcaa7a92b1441d12483d
 SHA512 
abd7aef35e933231dab2079c46a7b86952d3da95111c8774af491b059efbe432a47d055a8ec00df00762d62df35ac7a30166ee3008add1c24d0493e4b39f357f
+DIST firefox-140.8.0esr-cak.xpi 390831 BLAKE2B 
f2742f538346e0b64ae11b26d61831f636e4e856717e87e6d7f9a3bf334924f8047b7bddb9abf152898cebc50c619507061e9b2ffef5a8d4a9bfe5c9d31ea138
 SHA512 
a42ecbbc87cb99c907605bb04114f202e956f56895c51324d5d49d232f87601f39d5db706738cba0dde425f412ba05a2aac8e5b9e32203e19a2788c57e49f882
+DIST firefox-140.8.0esr-cs.xpi 475918 BLAKE2B 
8961b774b23e955d6954c1de2b82e5582e9accd6a796c770d70cdaeb2246ed5fc8e78aa5d92fd604b4043ff4d9de1e1a85b6bd723807266521e92bf603c31b1e
 SHA512 
a86fb4e74ad726ce9cfae0de2d6eb8878e12e13519451038a8fc12fa615fbfad1e6562ad30728ca4613d052e4f709b99f87ca41d9f6990bd141ebc2d0567a4d9
+DIST firefox-140.8.0esr-cy.xpi 441960 BLAKE2B 
79cdf3ea5ac7d4ac360a28d1d52fd0fa939598fc4ac87d7f9c5f8ae051fd13c6be6e54b4e60053b7597998b05a16cc72e256b617f44f70b108fddb440aea50ec
 SHA512 
76c30c0ef14796e75691e87fdbb3f16d75ec5fb0d3df703761d4ee23db3af04302dc02cacaf44f54aee4d9e704be8aacad9596b785c25e863404d4f2f8aee7ca
+DIST firefox-140.8.0esr-da.xpi 431125 BLAKE2B 
62ac1460b0a07e90cdb02e610323466821e7c8323ccffbd445ac050ed7729834ed0ca50566575491ebf62164781911423845e3b0e6a45a0ddcb9ad12c81e70ba
 SHA512 
1d22e4fe44f73f89fdb07571dff646bc00b4daa28f48eddb5192a14f0c807a3dd0a0766c976d3153e7250c41a8a006216c2434d0a58181afef6e37e88e30da3a
+DIST firefox-140.8.0esr-de.xpi 452701 BLAKE2B 
7c2595970fe620408583720a2e5ec7081c18f456c6c964d00fc6dd7295a073b507d21613a22e72bf00ee2c4a6127d24372463ea109f544d1f8b09e5759da0f63
 SHA512 
0e36521e68423657ae42f70c3b1165dbd92151dfd99caa90d7824f702536307cf181fe71d2685b5c0d4250eb46cb82058f43c7de8e8248f60d44235a1a2338e3
+DIST firefox-140.8.0esr-dsb.xpi 466063 BLAKE2B 
7a85bbeb333bbf169b6136e55a7109bfcd9cee0db9a3c32ff747d2ed5f724824526d7a53a3962982d11d1fe140a2c662c31250082b06aff2a971831e02589f0a
 SHA512 
a2f5136eaf53509baff062f9cfae82e84d64f921375eb7f5d092553716545b7b7827df3c2ca220ba4b74c5579da2eeb0001e9f5e2685243ffcf9cda8dd3b65d9
+DIST firefox-140.8.0esr-el.xpi 536814 BLAKE2B 
fa7602891b995fb431fe7a33dde43d9c858b1227cbd185ba0a4efcc65459bf1a381f70475c4f2c9ba355df6cfab9c6a2b82b9f249416b8c14be862bcf0e87c11
 SHA512 
330afbd26a7ed10959611124b2644f7dde01b650076bb6b60b527e4d907c59c18076a41c0ab0442a3bacdb4eb340a62e84ea525ff4af9d957f4ae78f1db42135
+DIST firefox-140.8.0esr-en-CA.xpi 411059 BLAKE2B 
82851ff1edadfb664867a3c0d163614033cfb7462f49f3027e2133cff132fa19be66fd64a1e1934069aaded9ad361f385362acdf8e1ef69a58adf5cc8a01a2ea
 SHA512 
3b4c7b30c482246f490c90334ae64ae82b0fdacec89f22c8cc6ca6f564159ea66b22299416d038eca8039292fa81aff8bfc461313c6e7d0ec20144d57b613a99
+DIST firefox-140.8.0esr-en-GB.xpi 411404 BLAKE2B 
a6484aa9c9b0702deadd3c3cbdd1396840569cf72e91b0f4f6ccab898b0fcc939485b7545caeae73a38d874f303c8460a3193d779e3643422ccc07c0c01c9b47
 SHA512 
8b070d4c892d9a992a4d01176fe2d6bc89ebceda5f76fe135eb5a752565fdfabae8d4f8a01df40952134c0b00871cd691071efb7b4f7811f7bea82cfd379d864
+DIST firefox-140.8.0esr-eo.xpi 433467 BLAKE2B 
bd5469133f7b765e0b400e503a15551aeb0bf0a8c47dbc103545a714f05efd22bf2b4005c6202fb2640b8340135c6453d724ba6bc018dcc74c74089400e2c9ed
 SHA512 
d820751f24ccb6d12a79d1d132cb442bc5de83fe9744ee80fe702d0beca051662b2a87f4e077654db6402cbb2c642faeb32624b0d74c7f3d1c760b49e586c3ec
+DIST firefox-140.8.0esr-es-AR.xpi 445513 BLAKE2B 
6ffded6429f7056b4170392cbab5c21fbce0cb0f922124a3493cbc96702c7eecd45b65b8726865ddc3da4d64953513f22d20a44808bdb4512f91ab07d15712ef
 SHA512 
1adbb344d7bb3e9305d596007097c7b6c1714442f84cf3842af2606a739e8c04576812ea7aa76979df9913817e7e8b88426692c2c17e530058a45f424846d7da
+DIST firefox-140.8.0esr-es-CL.xpi 446298 BLAKE2B 
d9cc4d96d359e76db9914a849d55179fcf99822bfa99571a7413776749a7c289f4260d4b37eb8b36aa3578bef72afb27d2bc9c85f5122f6e3b16405eb4833cb8
 SHA512 
a8154a01632793143a8b3aefb2015c6241a7fb308645ee99f926c56dc1f8f16bb25d30f0df5b13992663a8fd310a4e86e3892a098e0484facf2484f589683424
+DIST firefox-140.8.0esr-es-ES.xpi 447018 BLAKE2B 
deb099dc990e123b70ab6ee79c65edeb2483d141a15b8abcca1c580ea2dd5d4638d74066b6d6c9e7b88057b5b0c8099667160af17fae8e5feb4ca36128b77e7e
 SHA512 
58e888cafec87a9ab28e3c26fdb0db9b5e2d2bdd6f3d8c43da1575f5bc8d21bffa05bcdcb6aa6ad2ab17592556452126b9324a667e3884d018b07457da366e99
+DIST firefox-140.8.0esr-es-MX.xpi 446241 BLAKE2B 
72d7749a292c6ef9bd5425e36c3ec94227f00ea325681c05a849c16779855733ef257b49bd00746a0348ae5d76ee0a2e719741a91b297e0bdab552e6f09efbd2
 SHA512 
b63362b65afbd437aa614a0ac5877f5f254b2fc8f1420f516d7e548ecd5fb596441d0d9445e433e801ef226ccb485fd848d0941440c93647edac7bb505a455d1
+DIST firefox-140.8.0esr-et.xpi 359324 BLAKE2B 
57c4d465a64af90098fe348e21be8740d0c19351ce63d5beb871a765b426172b07f3fc19e5a4fdc6303b7933c178fef39e341c543a713ed549871cf9556f26df
 SHA512 
f48cb2410b48c029aef2f047cf1fce688e748f841e17752596e65148ce439f81daeefd6aa304c5bea75f44480cbdb62fb534e4a9e83c9735a1388bb7a2431a3b
+DIST firefox-140.8.0esr-eu.xpi 417295 BLAKE2B 
ad607b2664110db37d2e461bdfd82df3ada9ab51bd14f71f2c86f06ef5370fc8239ad7f6c6d309b8de651fe297fc1b5df4c2542ba8623071c594335d7564c433
 SHA512 
f92e34db8898344cd38f1eb603fbe5f2efc83bc9120cb60cf2c80a497ad20c553bdb79bce76b16972bb15362c4c8a11925e3f66553e4b57b9cb578084897c336
+DIST firefox-140.8.0esr-fa.xpi 421640 BLAKE2B 
50cbadeb07ef8d310d57fffd77d4209fbf00162d4a8c3e622ed5e8f8a82e282c0a7d0f829f3d783a0d37a198808d431b9e7e4866a507b463254284f773214fc9
 SHA512 
6baf0b584379f90cc95c035adeaaafd83912b6005aea8c6a5523bcc400b5a81f16570a495aea2e40c12fdc2c8332e2cbd4f3280257ae04f2578d02721390bf30
+DIST firefox-140.8.0esr-ff.xpi 310180 BLAKE2B 
4a4be5ff09276f39b5a1fefc7e5f73790e64d1a8cda6702ddc542fb545d6372cd88cf14feae829d643a8289f48d054f650a9e03bac45eb0a1efe0eb7fe3c0422
 SHA512 
28b3ef5b3bf1a9a67c2e54f1251cc72f2a6fc7a638813354e5b04a92ac7bde0d85dc7e60983f89d0ceb0bebcf12c0f5ef2a182541db2e135371b81a4a4fcb603
+DIST firefox-140.8.0esr-fi.xpi 430166 BLAKE2B 
4e28f2686d42fc6424dde6227dc32675c11eb808a47fef1a65e75ce9b5a1c4accf60b5f4321fe1f8ee4f8cafdb6d7432868bee848fa5e1ea2282065681f2d9d2
 SHA512 
c49b2e7eea39ac2f4f08c9038bd3ef7f4bf7ab6ae113ea16f86a3d2e7452329bb8f265583e310078e10b4f6434ea129009607f294d9a0476753fe8a0da248d13
+DIST firefox-140.8.0esr-fr.xpi 458439 BLAKE2B 
8d217ba917f4c6e466fbbc91cb652ee9b803e38b49638583e62e7dd47b9a3229b6770093236078966554e18550d60dfa4502c7cddc6c5a984195973e01c4a1d8
 SHA512 
49047ee0b2d73985496ad0889bc6ebeeee960dd36150a268f680bc0f524c7d37ff56eccf153a314020a24c6724a194e47465f84117f7d1f9b75991267d0028d7
+DIST firefox-140.8.0esr-fur.xpi 451826 BLAKE2B 
9b53ed2c78051168179941bac67181f87b90d44aac742bf055e4d9401a41ea26bd8f89228694e0d08190ba96a294f9dfab8767d783ac68ea8ca1beebc79bd496
 SHA512 
a84f682061c4ca66f67a70be75242c215aa6629ab143990fb98bb36e9bdc942ece42b7b086c952f4cadb6c31355fbb47d01f806ca6ed16ddeb5b51b344a5cb0f
+DIST firefox-140.8.0esr-fy-NL.xpi 442163 BLAKE2B 
d5e109b8ba86b6ec14e0f8da0771bd4924f490608a99efed6c07a789038cf75b39e22d439a17bb00ec058f23a0ace0bbc89bc9332b89cec5d5f6e5d5b119bb1e
 SHA512 
8e86021bbb5fd7452039f1c5cdc39af5a871f114a64165a073a91e6cf267b57f7522d63fe25e353549cbb8da4147a2aeaabab3cfa8538dad478f884c1942d978
+DIST firefox-140.8.0esr-ga-IE.xpi 315281 BLAKE2B 
e14f3efc2975981b677e75534f3ed792feb2d63c399d61450af2f218ad1d092104589cbd7aa8d8b466564e61429f0366a51cd64db9ae3fc7be32d4b72205ba2e
 SHA512 
58730e0ec87c8eadabde327694cf77bf2e6c5ecc54f83a562acc85ca23efc0a8df8b4d78d87c16f9bc502b67236b16c8c5c8628f6073a7eeea5800de6f2a2ea2
+DIST firefox-140.8.0esr-gd.xpi 399420 BLAKE2B 
d9c9b28098a0ee50da32e6c8578a3c6d731f0e06116b09e6a0112419017744abf7a590a4efadb0468501f5c8435eff0c8b5b20ad4b397ef679033631ea71de2c
 SHA512 
6562f2935f4d059e6dce29cf7d9d43de8d33cdcf2ca2abbf837ba86280778b738c06e6b312a134b8f17f58f47a6e190560079ab18e107c79d6f4be083eb856be
+DIST firefox-140.8.0esr-gl.xpi 442901 BLAKE2B 
ed27a2ff6f7e9ce35ddc9dda0ed645c7e0e2650fb39c22a505ddf3e81940c8cab0d8045ee0ecceb18fdcdff09d82f67504b014d57a0214557794607a49cc57b0
 SHA512 
e3cd6b40e8e50193424b694fa44163f8113537377ce3e213475b91fdbeb99c10a8a3c637242252945f8136861f471928c00bd3c162536582a604caa684a5888d
+DIST firefox-140.8.0esr-gn.xpi 451079 BLAKE2B 
901259f1c4b1a963ac7da6de7d11f61c757b7bf7e093ff0e1362db08eddf526e8b9d4bc8aeb62da60a8076c0f1be71b6e74e68f58eabb586147af67079058985
 SHA512 
a9051afcf5d996d3519cb673922266f0a6d2506067e5da67ced850998b38656218f10db78ba59d9814048a981b4b669a5ba0ce58ad8a15428876c38fe04f15f8
+DIST firefox-140.8.0esr-gu-IN.xpi 358970 BLAKE2B 
98e2a21d82f9162df5fd6a6c2e1ed3c6e24bb833be1c6da4702bbae77d072acbecc8277fd6cca823e3b74c0d26a5028159aba15a6bf42b3df204e3fa9d0050ae
 SHA512 
7a9cd174a69638467bf7a231873d3852bf85d608602b8ca29e2dd6046e3c9e8f30810dc74d0bc6b2f7b78aa262da6940f8a0f4722d04bd3368a3a98314a3a2e9
+DIST firefox-140.8.0esr-he.xpi 444983 BLAKE2B 
f13dd8575e72ea73d38d37d0b09d7da47bf33d0a19661d5f4a0c076a5a7224cd80912f8f09a3724e67579dccff960f483bac67cc00393731d0723f10a1c14785
 SHA512 
28ae46db45d138f81fce33a7dfd4976d3d2cb996cd5a67d3a290b73ffaee738bbf2b66a72ead8d69ce756c50676bf0475312e06fd98d09b7a7fd5abb4787f49b
+DIST firefox-140.8.0esr-hi-IN.xpi 377458 BLAKE2B 
5a09778fd8ca51da5b12b75de399af5a4cb5769c31bcae11a0ab2f81dc9cb29675ffde7ff9dff249b56ccfa053618e16f09cee890f6ad17d1306ac095a6481ee
 SHA512 
f5191aca424160623ed5b3e934164b5495a2bb2df0849484cef8aff9edba25100a0727c97a3a6a2dadae9d2e57197fa6b2b140eb450073d6d403646df7e98f1e
+DIST firefox-140.8.0esr-hr.xpi 437690 BLAKE2B 
09cc3c26445827f2ecc2acd5d5b4f04d71bd8b9dc18674712915b9555f0e70d5cebec3a8e60ad6afe3ed554bc3a71a6c5d375a1e67bb7f281030f253c74f0fcf
 SHA512 
725414c87a2a20093ea6d65427c679a0740f223631b91b1655ba5ef9b865ce3e09fca0a5b26898049864589742dfe0e693a29b636e60a3dafe71920aef2e2895
+DIST firefox-140.8.0esr-hsb.xpi 462704 BLAKE2B 
99d0375a68821a7896667cae060f1b4f30018e4b196c49080b4959e6a2b9408b5331d4460d437b58abf5a1ad645acc69671987d98d4dc3bff267eeafb38bef01
 SHA512 
bfc9ec703bdaa29eb64309a962175a480e70a129089ff808320fb19912da941f42a0c86458e9dfd76194d88b25ed537aff2295a598c668615d0835087946e2c6
+DIST firefox-140.8.0esr-hu.xpi 466176 BLAKE2B 
ab1fb8406861ba31a39a1861c8e3b083eec51b643bac1412e9c3a045ad1db599cad9ef9efa1cd238d7fbf57dc24b57d57d40d5d6d73666d1cf805d0f0acba162
 SHA512 
196c044211c6e30c76e66f0675f9c54f0f3b707e4c7adddd8634c2887daf08c323f46b178b5e5096c3da3ffdbc43d0f070048515d67fb5cfa8373462da961f3a
+DIST firefox-140.8.0esr-hy-AM.xpi 461612 BLAKE2B 
3d4e791d064447ab5f2a9e9466fa44eb4024bfb7736ee95d9f5599559517e4866e62ee1047b6153a1e281726dd8e63edc7ce5a3517805370c1ab449770c8c26d
 SHA512 
1b54bf8b2e9ae42d6c5c62eb09fc3194e15553f579325efb3ddcbd62f1d0990e6567a06816ab8031ef3df0704924aea666e04a25fdde231bbc65fa5e0da8f230
+DIST firefox-140.8.0esr-ia.xpi 430109 BLAKE2B 
8e20186ab62ac20e6d0b96109b85242828e859bc1c3d42a59a6b1d89959ef8106c39bf2d7ef8e375d7f36222c5b2fb02128fd9dd841cf15009cb3bb7764a59b7
 SHA512 
eef92991047cb9cce61087ed30cf4caad5d43bddbb1856cc4865289a14a5c938a727c83ddee5fbd27e530ffc23f160df6dc95d54ea996ef3bfaf885a4a40507a
+DIST firefox-140.8.0esr-id.xpi 422741 BLAKE2B 
83fec717b8d32a1bf95a74d5087af3b90619da1851a9d62189de959b24b468eb63fe1372ea9fe718a06224854a0fc002263f55c9b2783c83c2f8469ee3c98ada
 SHA512 
6f0b3ac37b01b2f34907afbde41316330854e4c7879aceffda6c86cfd85573bd9977180a70544e7c9c639f4a8999d206cbb55debd8844e4a87eccb4c99426594
+DIST firefox-140.8.0esr-is.xpi 432677 BLAKE2B 
e1d150a561cd7f3925f5493387f53b6a0ad4d36530aca28cb07cd916510c45b34b7e47dc955f261268fefb89ceb5c1f1f99dbb0e995a5cef87acf97825bf62f8
 SHA512 
642910bb481920a3a7e1ce1bcf4a6591d9740e4e5dc5491832661fb21869a2def62eff10d110e70d7f5d87efcb2224517d791ac0e70b15e04a8f143080f87264
+DIST firefox-140.8.0esr-it.xpi 440900 BLAKE2B 
d243e08edd3aa1612b4fc6ac524804276914cbc728d6e84c89058cd2aec50d675cb3b402974d6b4252e84fd37c38c0aa9853d6aaf40efefb979ce468a061cd62
 SHA512 
7b6755cabe8338eb31d1bc0ab83697a82cd8fce5c475356eccb045e20da355e430cfb8cce2cd04aa6de0907fba913c83d229433a1cb115e2d77d855a5521c0de
+DIST firefox-140.8.0esr-ja.xpi 481304 BLAKE2B 
8d6f028e87eb8e325ba212602681b4acc9edcfb9d8c51b1f18996498dca0c9f6b3e6dcbd1a30e243469813b51121a682c1cec1d98daf215f30f793d57d3e7106
 SHA512 
463028876ff3b48f84e39fb736714368efc020f1a143843a8aa09a19d47d73fc495b1777f7074e42757d42de65b35e3e5e063d3b5b2b81cc8aa4806562298130
+DIST firefox-140.8.0esr-ka.xpi 494868 BLAKE2B 
651908162e8081a8211e514e05e477eefe12a537a0d0589b23bdbcce8bbbda800b303c2cde07fc7d343776108a4765c9b15351a35476d95ff1dede43ab9736fe
 SHA512 
16bb707b84a65064bb1c9e407b5f6c42f3b2230cee1eb8244eaef51880d5945b6780d676391eb2caf855a3863ea26646b04e83e3b663ae759b2a66320ed447cb
+DIST firefox-140.8.0esr-kab.xpi 422844 BLAKE2B 
d2e9fd37ac87872df71f6f8a502c70f59eb4b3a214fd03de981699ea03ceabc3450a489b1ddc766b6dbd0b6dda743ada35819a6cc5a5f3ab1ffef7ed18ea0a36
 SHA512 
a5dd42cd6189062d411185ee9d45092bfc8fee7c67dd2e14a458dab41f7636bf3f9916bb8dc8650ce9f27ba917c7850a6a824f282505ae702be570b2f46b688b
+DIST firefox-140.8.0esr-kk.xpi 506682 BLAKE2B 
c487a7a7edb59f7afbf36f9fab5e2a17de1869ac8e5ada2a2640cbd23678f826e150a599f631e191619f84ce4213eeda6d7257bb75d6e3f4323116ac75ff74d0
 SHA512 
54a7d749341edda44a4ca344d156f4364454bbf8392b4d7a2fbe5812238cd135511e191c1a819d296fa6855ae0def6a44c381e82cf1125b8490bc8f6fbc0a542
+DIST firefox-140.8.0esr-km.xpi 348768 BLAKE2B 
2dfdae9df7ba4b2894a03ef208c40aef6dfe483c98bcbbd6c6ee8fb26160ea25ac9045dad937f9f324ed52a5d9846491d3bb25cf7163d4eebe40c233533747b6
 SHA512 
d66bb2da7ba03fce859d24ca922add5a82775140fae31142c1647aef3eecbe00efd85d44daa405d3476928a9ef455ba5ee541713588c2fa8562c430345474a7e
+DIST firefox-140.8.0esr-kn.xpi 331777 BLAKE2B 
b9c345f570f3dbf3d0438f0b1ecab67b8e5ab659066fa51190759d36767c3a90a295e18b3d91e0749e92aef5d75e7bc0abcfa8721bf8b02b61381d23d09cd5d3
 SHA512 
8d9570cbf4194e763e36ec44e49b18538c9a8545cf27a43327201378c9e652dbca51797e353d1c0bc30bc1cbfffc6d1533ba235c0882b55411d362941410ed15
+DIST firefox-140.8.0esr-ko.xpi 467542 BLAKE2B 
ab6b22534fd27ba61561b30a4e4b64ca880944d43c29e8dc420c9cef02d8b88b7ef651f10cfe3a2a16f014e909a1415d942930d20ac8b8adcd79943386dc04bd
 SHA512 
5843128167aa92e36a2deebbaf25175e2070accee4c1d2a4874e5dc8bb184aa816797395629d106e1957f1455cccce90a0769d8f8b6b300f43f5712f51e7cbbf
+DIST firefox-140.8.0esr-lij.xpi 319282 BLAKE2B 
f22bdc00792d2723b39720ccc44f3216a12c1a8af0df046836d9709d46fad5228cac4a464cd95be94afbdbe510fd020c28ec3191faac5ec32f97f77b659106cb
 SHA512 
43ac4082b0ca300b4d034af5c152f07fd8d8d127f4b6f9867e6e13b8ca8bef9f19d74d9a1de5aa18c90fec4d5f275cf38509228099ff37426818ab0d1829b657
+DIST firefox-140.8.0esr-lt.xpi 379954 BLAKE2B 
98041fd66a15594e23a43cc44f8a6ce110903fb49bbeb0d0679db5c8481b286a5f18f12ae8b3af8e5738404f1cecd290ded3da8319c831a03aa62f9dfd2f3c33
 SHA512 
1c4d575836a4e8ac81bece8b214e959e58bd17a45b1790b9bc25e71c16f09a362ffafb5e2e896bfbb551a8a12a61027a94a4a65a0c32288b4e4af5d53330828e
+DIST firefox-140.8.0esr-lv.xpi 389080 BLAKE2B 
12179b0581b9a95538b8f56bc898b23f063046901787e3b86452346b00d1150d97ac32fdf1816930826744f4dc0107f7edb1e56c980cf6bcbef9c96333d6d59c
 SHA512 
b3ac6b69dd3f33c0bf402639c34dfc720865538149e0d23df37bf539b2275c5523d79072f543751adc10ddb05325ec95b39eada6d838d11390ec171075f9dc1f
+DIST firefox-140.8.0esr-mk.xpi 316826 BLAKE2B 
86947b26593394dc2cb6f5e074849c99725ec205fa258d3866ff031c7b16fa3e8dcf8a35a8745d720b0169a59bc2f1f281648f3d4cf7b8bdcf1a8e2bffdc15e9
 SHA512 
a614f9c228f78261fc18e66a7a3458a05b07068e3e692545835bdc195c66e7f89cdc80d0beef51d6c3b7ee73c31ad44c7dc275a362d80f76c711ff68c326fd7a
+DIST firefox-140.8.0esr-mr.xpi 356258 BLAKE2B 
24ce64526fad91425e83ddde8f26d0998ff6aa33b601b89be23b3b45c3da26f578e23e19730bd6ef790f662d5572d742378378069ac22529dbbca92a60bbb1e7
 SHA512 
6de54242742aba6886b40ab29ac3a7d13153cdc9fa8b671fef74130401413fab87687c188f823006acb1b08a529a9ae6f22a98f9b100521a8f6ab5436a19324f
+DIST firefox-140.8.0esr-ms.xpi 295393 BLAKE2B 
06bb96ecc440db3f4c6dd3fdb14be3c60b62c21640c5609532b97539cb19938a203406ff069fa8e18a41c5ef1342b2845aef964bef15afea07d2f78251033f72
 SHA512 
a21c1d5b6436fce65818bc7ca5cb34e320226c03279541522c3f5c2819954cf4cdc0c45b3773bc2e3406b84b9f0a7bd94bd4327f9306afa9a76f2925d2abc848
+DIST firefox-140.8.0esr-my.xpi 343030 BLAKE2B 
6b808ddcb82da5e3b6584894f55004c2187dcf443f475066cb4c8442ce3d5de990731a75ab1e1f5a230ddc678c94a0c924bbdbdd7c075f169f0f0c9d1e351c72
 SHA512 
46ecb9c232881647258f2e8f8de4328960aeb21228f83fce20d7d39214e285700720e3a86ffb2926d584d5b8961fdece77119213deeb58be099a19ea24120d9a
+DIST firefox-140.8.0esr-nb-NO.xpi 429331 BLAKE2B 
c0c2556f353079abbf8f0b2200a70663d67f889af3c13cfb962dc361b1637b8137b9583752a5cbab97695f0e347bf086bcd1ab0a75796ed0c41e3b36cb0e5e62
 SHA512 
dc119a660cfacd26628f2ecbe63baa3e7e52f8dd104733af344262e39a12d67a31270b337e8f37b5aa43bb26a50c4382165605ce32011e3653c5b7765cba9950
+DIST firefox-140.8.0esr-ne-NP.xpi 349014 BLAKE2B 
574b0b1ce9bdd80f3665ebe072f465c10c7c9940afe982a87b27ac36fea59eb3775364623d2644446793e265b5c4bd5fdffb6427e8201dea32021c18fe5f44fe
 SHA512 
7f78810d1e54d212294c9329788c7549541cda0efdc4921cf23a302c1e06b8ce56cfac389a5abf58d6823333daa713efbaa6630e0f2ef35905251d3d5e4441db
+DIST firefox-140.8.0esr-nl.xpi 436182 BLAKE2B 
5e691c129e842d6890bdd452561c90febed5b63aa052936fa6cadafc57ff31eea23636360f58a63cf348d20c7793d3672f73d14dba6642bae7b1ac0ffcea0f29
 SHA512 
764460a90f03d86589fb98097ec72cc8830b8c0f88b14c73d05cc6fc7b67848e74b403dfaf5fd4874f979e8fca3452df942020e8c4ad010b1130c55db594e8c8
+DIST firefox-140.8.0esr-nn-NO.xpi 432230 BLAKE2B 
40717de6658f9942dbc24c89123598e43b2ef204f854a740e99100539db8176a384819d097f1b9295ffaa6f2f4830d87c6a19f172eb31cc750494d8137df718e
 SHA512 
357787925b350a2504a3b3bbe42ce308c525ffcb8f8ebbf7472de69a6a0556b13f59586a7b044c24356689685244ab14bc88ba8235a6a17f08c67fad44a401c1
+DIST firefox-140.8.0esr-oc.xpi 410939 BLAKE2B 
073c3df3bf55e5ca358b84bb571a7a3520d8127a0e64d208fd4ace351d68440ab959079d7fb50ddfedc7985734b92fbd5ebd16dbf965b3d2517345a744792bef
 SHA512 
18621bf715dae8ddbf9d946e4588ffc36f422c247ab7a69437587d8648a1a0a8d902dd5c3fa9580baa99ad98434bbda8fe274b9d3e9f7656a3e8b40fbc840601
+DIST firefox-140.8.0esr-pa-IN.xpi 494406 BLAKE2B 
c1a71478dc7c7768171fc7ccbcba260989ebe3f41cffdd2539f9af026117f8a320dd50d2893b6cd098ddd533f23d8430530dc7766cfcbde7e8b1d1d35d558c41
 SHA512 
bfa87046f26b1a0c994f6045f71f1b3d41de2bae1089fd65e43ea926a1697fd21c778ca71bec8884ad7fa96a24774e137ef49f3e64cd884434df29673f1c5101
+DIST firefox-140.8.0esr-pl.xpi 460934 BLAKE2B 
ae54909f9e2ba6ff120fe53e7bfdcb34afa75fb6d6b2d4fea862b4583846a183d2d85f06b8f363cd3bfadaead791152f429b4319f839bba3408878c8e369ee32
 SHA512 
4990ef4eeb9ff505a4e2c67146b355f878d0b83a5b214ce2f4d1d5d86d3c667336293df461725f684810ea8d5ba2bf33923b73f9cbc75e4833c6a6f461781d69
+DIST firefox-140.8.0esr-pt-BR.xpi 440752 BLAKE2B 
94535b82c0294882819f3072dbe347c05f8d67db1e193715e0575f88fc4a3cb7f3274e7b0842e553b0418ca416d027bca439726e48d1e785d7a72f1ef9b8f4f0
 SHA512 
54e0b5e70e9744ad9730436e10302d1b6dfcfd35a136a41f0c36dcaf81707fa25515924a73baa2290b15b02aea467c9f879feedede973bcd05c1ed97df35a2ee
+DIST firefox-140.8.0esr-pt-PT.xpi 446405 BLAKE2B 
2aa99b69f2377e9f890f0fbb49105ce548af42ec027245397705d6d5cac6ad6b5aab7b8983373be8aa0e7f53a88a86b19b65e78fde52288be19f9f8609bdf191
 SHA512 
79a5a3334d4d5be6c19c4ef3e52a5da6b470a44dacab8b2e16a4dd73c652912bbb47e2ac2879b52d7460b4745d40d13c23f2da7f3c178c5d951cda2066c6545b
+DIST firefox-140.8.0esr-rm.xpi 438019 BLAKE2B 
0ca613273fdcd9d54326b4d5a92daa357b21516723975a1bed64e2575096522a38f6ca512e06ed84bcb1f7ca08c912cd7a6b36b8db367d770a4c35f8bd575dbc
 SHA512 
2b18e426959ba7161eb7a8a4407681ba35b2ab53cdc3d7a82341e64531374cd2f7b6eb381192538e7d1504b7dc467066d02a8b600d65505c877924777ade4e2c
+DIST firefox-140.8.0esr-ro.xpi 452828 BLAKE2B 
4547fb3379eb909b2f139085ff11c0a2be0e4e9e377c67157a621ae329628748839a4600c8861ef8bcd8e574019fb8812a92e018affc81d44f8684ca88a50573
 SHA512 
ba2682a73089a33d6a6ccb8ac70d2f795f60d9e7d6a363e33e9aae45147a0944f33c15d3ff7d216179ab492b22d06b807a6d236bf0f81362a2ebbaf26f64cf6a
+DIST firefox-140.8.0esr-ru.xpi 525187 BLAKE2B 
0ea9740bf1785c991d9dbdf6301cf67f034b56d716a167ad41c204d1efa9b1a093a4eb802735d3ef5ebc41048ab095bb9e5a9740446b344a57abd57334fa00fb
 SHA512 
31b3885dfee6275446a9cf0023af1b9d215516ee6c75c21b2081c0511f41ad08b7044e153b9650fbf3c25c8aa38ee6d50cd3aae0aeede2e5b853c8303abd5c82
+DIST firefox-140.8.0esr-sc.xpi 410464 BLAKE2B 
fc5cc46150d58783197831c6d4da81e263cb83b57f303458a59e5c4dec1a5dfcd3225b103cdda72f1e9805ceaee60ade62f609b4d9e5774ef121582f93ef324c
 SHA512 
51fa1a0b5280dfe6e7c880943aaaa7790ec8a3a626f5fc05087999c073cabd6accd291c93e2f8efdd3f51a05bab473927c01cc99ab5fd6911884968d380facc6
+DIST firefox-140.8.0esr-sco.xpi 322649 BLAKE2B 
465d286d33840b68f36772bebb40b269ef9e180587bf0a256be0e7d916864b02aa23a63d170b9282a3dccacc93d4ed7141295106565381a669752bf34e9d66df
 SHA512 
d3c60af07350ad4a84b2e266e6613dfe791efeaf1e6f3124d6709c403038a7d33ef3ec47ef4b15dfb6e78f59722a26990ef905b45fd2c37b80d4e0a77acdbf60
+DIST firefox-140.8.0esr-si.xpi 411612 BLAKE2B 
3dd89dc14e1fdbc13543e9da1c81852bf36437d79b7639a3d58341bd3eb44544565322c23cbc426899885b1eb08b5b5345663926860122643c193087a8ef5ca1
 SHA512 
b33bbbd26e4cb9b1ad4b30916a495f889b8788333f8182cd4f9f915d7bc1a5c8cc051abf0cf7b7ef0af6e4433eefd024249fa0c56ac4adb09241161e22d05bb5
+DIST firefox-140.8.0esr-sk.xpi 468224 BLAKE2B 
89e8244138302e6bee5274f7799bdb07f0d94ae74129748b4a7ede4e5fc2e392fa34a491e90c1cbd533e3d8ee538d3e5d76918f51b5fded370a503e82d0768d0
 SHA512 
522c2e4a8daf3efc41b7d52d672a0042c29558a3ce74fbc50e7637d05c6d96302092e799f353294aaad9f45909ece2d5c542dcbe1bee98a54602021a7a648aa6
+DIST firefox-140.8.0esr-skr.xpi 485875 BLAKE2B 
c27bb0466132d8475441ad7dbea0a9862adf4b79eb3df1e01dd72e963fe20fe602e81a8621f37067978d2412030f0f5eef51a700a8181bab9afb6e0bb6f46555
 SHA512 
85a9298e4d493b629410534075093a5a96e923f97fecd116f42a31b5a36e8a61e095e6d997bda3808270163de0b960f214be09de101cc8a63f75b8567c05858b
+DIST firefox-140.8.0esr-sl.xpi 441206 BLAKE2B 
1f1bb63125ae3f037a2c947c71767a88401a67e17a6fc50154c373bf1cb6acf75d69ed274a3e544775e0524e6ab6e4da7727ffdc95e28b07fb7658ea9e8bc04f
 SHA512 
fb90408bde050b5eb3cfa190bf8f3fc4712d3a5931b362080bad67735455e7efc4af633a10b9b1380ce1f6461e127ab48b98ff048cbdc766c14e67810ee12bdf
+DIST firefox-140.8.0esr-son.xpi 273128 BLAKE2B 
72e19717e509dc41ea176c0833c22d09214006c7ec57d81bd665173b2e80a7b3762347589abe26189bc7596483dff6382aae88ffcac7319ed25bb8163f243edf
 SHA512 
593b4a40dbdc584d192951f36aff191010822aae08bf649ab37632d78ac51a37a9b011e71b7b13bcdd12713e160a6a3931b7cdcfbcf8d400d2a391ce22300420
+DIST firefox-140.8.0esr-sq.xpi 456010 BLAKE2B 
f301032f1be4bf7ff13478c79b2c7a7862b83807f6487badaf21efcca63c5fba3f6ebaaf11a780d4de4824fc30311113159fda5e3dc4f9aa6304110e1c67daf6
 SHA512 
768650233627307073df800d30669468e6a7ce2f400addfd8b9e68b6cf15337caecb6365a94aba7650cbde1e902315f572549624ca2a052551a5ee5bce8598a5
+DIST firefox-140.8.0esr-sr.xpi 453367 BLAKE2B 
d5e647054c96c6082e66b36e0b70f2f40f81966e0457bba7c606c0952c15dd0e3c589f96e1e2865ead439f9aa45dd4ae412b77874243c516e2fafc3e90c3660d
 SHA512 
31ee81d767b112faa59c93aa05bd8ea36d97df979af13d3b5d18a4e03245c621062e58ad268d0f7fe67b42fb5e817473723e13b46a34529cd2babfd31d4a2295
+DIST firefox-140.8.0esr-sv-SE.xpi 436150 BLAKE2B 
13769f5971cffbbdac096a8e81351520ac1e5fdde3b6427e018c88d53db6b40dd1f5f861ff7fbaa9e3f344d779b98c076c74501044b428d7f4c601eea9596c67
 SHA512 
70e5568b975d6c9852ae869ba06ba9a1a73ec52a64547d8e8b32e2fc231b343eccde171b984ed61f3d1d25bb9581e658065bdd5cfffbebbf2d08087dddf56363
+DIST firefox-140.8.0esr-szl.xpi 341674 BLAKE2B 
b7992252c485f2750253faf4e6f0675966f3113c8f93640f811a623051dcfbe16e0a6c14c4d07508e5029abb140334e9f025e9415a7f8437b994c4b8f0e071c0
 SHA512 
37b3b84c92f1299ba73612db852029de03f9361ceeec9611263ea86d53eb4d6b6053f98c2c468071397d03f7fa604b309f7b3429ab2fea931b55d0bc1e9bc8e4
+DIST firefox-140.8.0esr-ta.xpi 338145 BLAKE2B 
e789324820a62bcf34d442fd49d5059ac1db410e79d39b3688d163d9d4624a1e07b7fc0f5095768af1ace6c2aaec56fa8c1683eecd9287b24597dac18ed929fc
 SHA512 
a4f91fedde9855013d35b0c8ea21e752415f137076597920304612405c71e603ec7729d2d46f162496e58c62d8bdf12ffd52349ba24012fd948f3312d22896f4
+DIST firefox-140.8.0esr-te.xpi 382196 BLAKE2B 
156512dc31df142bd1ebda866d07ba79ec91831aa8414a9b1ab1e2ea8671ff8f34384191434c96cb8f576f4803712ab73194bcf355dd582b9036e809fa4d1543
 SHA512 
b291df537f2f043c60714d381218074bf67c6696f8faf6d5621aa9294845d6f4cbc509137f19c29d55547f46162d0120a1c524bda5b6002782fa3bca92ff2d31
+DIST firefox-140.8.0esr-th.xpi 505490 BLAKE2B 
4dc2b9005b6343e799ef0e6a0acba7ed6eca39988c9bf23ade12e6a70383c5638047e2cf96e496e1acea3e44864d95cbf21a32092e9285d535da1a6144bef96c
 SHA512 
ff3f962c0014bbb744e1dbefc6db65c73131d4ac8b1f314f7a82a5a775eb09caeca24f1c08180c5cb1a9e9995c8110df384a0c07a933d1a6f14842233eb02598
+DIST firefox-140.8.0esr-tl.xpi 356654 BLAKE2B 
edf4140886c8fe2eece95f9683cff310304d22f22bf8d19c1b54487baf6d0ea0d915af4fd7bc309ad50590c04d5a6916f94f04d318f7de517d5a8a34ca5da84f
 SHA512 
e33b7a0023b460504c1327927d45c7115a4a98cd04d5cbfa38ecd1eb9dfbc263b6395ce9b9bf295954aed528433e7df73561f0a6b48a6fc11a27b79e60201d90
+DIST firefox-140.8.0esr-tr.xpi 449311 BLAKE2B 
4e42a3e60bd456a82ff6d99852946c7d6c1a2e38dca5592a1d29f9c77b330ae525b95081403eb2fb5896dfda72f8f6786770df3b3c683d5dc64edac570fb2b51
 SHA512 
c0376b1c3adf18cf93da0d9303c92e1952cb0c374b0b3a1b21a895541a3d1e9d9c969f6f4e5f7412404bbd9b85262a3df0b373f96d1fe4806bac2532000013b3
+DIST firefox-140.8.0esr-trs.xpi 324521 BLAKE2B 
c0e351196030380a1a3acc5a09c7130dcce5bd39a726b9ba307816e1dc19f1531c4aa793e5d18905d25d984f9ea471d822f5625e08d05da0010f7bc80a3bc9cb
 SHA512 
072c7d3ebb171bd9be82b70232aceeb5cd8ad80c000c9c5bf44df97e8a70b04dade9a516e5bf8047d209c401400b9d60a290deb6c4ae0f24aa8bad7f6fb7e5e7
+DIST firefox-140.8.0esr-uk.xpi 516731 BLAKE2B 
cc042d6b52c55e4310a4c96b6e191c9049cccb69833e12e8ed4a2aa8c5f1ce26ef8ef87ad17ab02af75130e9935710ef4f1c8feee2b3aad88294c390750f83e8
 SHA512 
cb63a2ad57d819ac17ded9dbe65cbb73009fe149dd131d6ed5a9f2a9d513bc121e9267d1e308af9e79fe9d51385519472a183bf7425cbf6537c72b71dcb2e0c6
+DIST firefox-140.8.0esr-ur.xpi 370173 BLAKE2B 
62f910aa9ccf417edad93fc02353a29f206437fd82856fdf67bad923e4d5ae5b5bed9de419992134a2ebc0eea9a3292b546dca675350825c12f6df16387e46f8
 SHA512 
e3dd70bb4dfbe3915a5357a0b716292042a8d0cf01f18f9b50bfc60ee21a420baf78e49d4cf168450c89776d2ec98caf9ea72e6cd6d04a48a80f86bab91e1a98
+DIST firefox-140.8.0esr-uz.xpi 303486 BLAKE2B 
1d7325a577b957cdd0b06079af1c7c9676aa23a4fbd710ca056af9f383173cd6c3990210929c12e16e56787aab9454ff89c36cf3a6097d03035ec66b95b0d51e
 SHA512 
d2053ab4ebec388bca8f22009636520f85539499ef13299dddf1ca32278ed5f7bdf9b6b0b67621d6a0219aa073fad37820a0916545aaeec2f49e507edacccb52
+DIST firefox-140.8.0esr-vi.xpi 469141 BLAKE2B 
aa0171731101ecdb55fefe7a5f71392e9af61a3e1445d01ab6a1bd2351a8ec65b87c2a3065eda80e38efe3f4b2e1d16cbfe56d3440519cc7b9e0aef441a063e9
 SHA512 
0c2d5b8121fee3e30a11e0ce9beca3bf4e36d06dfbcb18e59c585fb38eec233c951107ddad0ea2508f6714d81c3a812540dd104ce385ec49d197b3448c174a8a
+DIST firefox-140.8.0esr-xh.xpi 272795 BLAKE2B 
d2d1fd48616e85c0489935a203592dfa2dd81a9465b0381dac5ff96878b6b289c3250ee10116edb4dfaf6756174cf74cff271e73ccafb91e77327e7439c524ff
 SHA512 
bb0ac20b97b8272a8ef041c1a3f7fbbac510886163115d4981f29dbf1cfedfef8abdc96d381a2dbf9675c823fe5f1285b8dfbecd7a5fd0a614918323974ab1f5
+DIST firefox-140.8.0esr-zh-CN.xpi 460699 BLAKE2B 
3976260e1335824a5b93c619e46e9bdcf29eb580ecebf68295f771cca04a577919e72d7603002a421adc840091172dfd8449c45fa6a0c2a4e8e94b6bcd565314
 SHA512 
f8ac0773fcd77b6daec1016d50589a6139261db3fc32eb45baf0097e2276fc414ca783c52f816468ab514363da4b90e0f33ac7b4f847fbd48c410942894424ae
+DIST firefox-140.8.0esr-zh-TW.xpi 463741 BLAKE2B 
7c2b0ed8a7f7c1ae9ebe448ee4925e25de7916398e259a07fbed1e812920980719162fa4ae15356f5dbac8b82f6ad334ae87f45861bd409c2e2208571059227a
 SHA512 
a6cf29d586170508031ba18f0b7a8cd4c0d931b29ad819b371c08534528d4d7346a0c142dc397a6469d65ea38ada7d84bbb9c041002ba687ad4d80decf9bec25
+DIST firefox-140.8.0esr.source.tar.xz 633564864 BLAKE2B 
dbbf560ae20c6eb384cce577d49fc71152dc3c72dde64efadfa12d975dda2e13aa1c6da7517e435d3e72b0501f440a5cb3a35a75796a42256627620572bf85f3
 SHA512 
3baca73c5c264884afa4b1d76ded4417119640e1161b8fed4ca406f0ec44e7f685258f5085f473dc9eff9057a6548a9b59cec3c696358dd1032503aa75f91d05
 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-140esr-patches-07.tar.xz 125712 BLAKE2B 
df8cb80104d816966723de33c79aa56f2a0ff54bf1a8a0668b76c4bb1bf3a7fa181011850c3030c04c2b8abcd69bec2dc23d500cfb6a624704b0797b76af8062
 SHA512 
6735b7f00048a24f313f2a09a17c785d045b3ebc0e640c9b7932fd1e65b84284344adee73d058855aff6bf93384933323031799565838a6339b9d20684e162d4
 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.8.0.ebuild 
b/www-client/firefox/firefox-140.8.0.ebuild
new file mode 100644
index 000000000000..3b75e965d0b6
--- /dev/null
+++ b/www-client/firefox/firefox-140.8.0.ebuild
@@ -0,0 +1,1393 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-140esr-patches-07.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=30.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.3
+       >=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
+       # glslopt: bgo#969412
+       moz_clear_vendor_checksums glslopt
+
+       # 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