commit:     34bb198cf68e26ca2c9f38a77226eae5390eee28
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Sun May 18 14:03:45 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sun May 18 14:03:45 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=34bb198c

www-client/firefox: add 138.0.4

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

 www-client/firefox/Manifest               |  101 +++
 www-client/firefox/firefox-138.0.4.ebuild | 1399 +++++++++++++++++++++++++++++
 2 files changed, 1500 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 79e8239a52dc..d66419cfaab8 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -711,6 +711,107 @@ DIST firefox-138.0.3-xh.xpi 273644 BLAKE2B 
f16aaf398bf34c4da1afa207b4cacbd127010
 DIST firefox-138.0.3-zh-CN.xpi 460401 BLAKE2B 
39a7a7fd91fb772459f235e31f6f43a87f65c236a5f15bbe97405b9d8b587af3c0df4d746f387f43b829f60a701c7edeaf412af0d0a1056bbcc5b4e8d4fabdff
 SHA512 
4cce498786dee0e16a559494d5196f6d9e8849b35804be82748aeba3291769a105303a34ff2ff32df82b3e0e9b6027deb4174702e85ee98ed20e3bf1ebd767c5
 DIST firefox-138.0.3-zh-TW.xpi 463417 BLAKE2B 
6d59f5c8bf6d1c9dd4fe6eb01447f5afeb2f577ef4c747772aa0e4e3db2688153858e4479e66622177cdbdb30143f6e5d0a54c92f8d2d43f90d699a22378da3c
 SHA512 
8112ebc4e5a1f146e732e8a428131f78859e4f108bc575efd377d7493d747ec76e632dacd5b9ae504ccc52d1660181502fd7b6a6fa262c12bfb38df92df9e7f6
 DIST firefox-138.0.3.source.tar.xz 632959048 BLAKE2B 
3357a02fda9bd4d8cc08687ffc96b609ff6567a2892347a71b627c6aa140e653f168989a96c652b18905e414b961093bdd9e02fddf69c3cde613ac9bea6148b1
 SHA512 
0f1c8ee05bec465b55429c18d788856574c5b2e31d911f15f76d31c00de84d8b8681961799c4101cd1540bd228afd201a4b59fd7c9a88918695040965b9dc0f1
+DIST firefox-138.0.4-ach.xpi 295294 BLAKE2B 
187cbe1582eff2a7f08351f54993cca272f149724da4e7b6b8fa132cf981ee9d39503c8871f2fd52ca3e8a86312f0787148591dee71e1bd10faf9ff8f59e16ea
 SHA512 
7fe8f88df302506406112ed811712af7a05d48a566d6799a8062f967524f2052170aed82d28f9cc258ed048c10425c161fab9aac27568a6eda6dcc421de7f318
+DIST firefox-138.0.4-af.xpi 267279 BLAKE2B 
7d3bce907c61b17718001a52b54bc8d94b41256c31da85278a91a8bc4a6c1e762417057371609060e259d7fc95b5a142569ee2d572329e974189943a7e848e0d
 SHA512 
f0053026e683a71f2dcc45bd0ec0d8e0b154a785b515abf093e7e3d0fd3dda14a0bed2a1bad12493ae1595bbd092d59d16008e1086586a01796a0a27ba954815
+DIST firefox-138.0.4-an.xpi 333081 BLAKE2B 
a6d2b90f473ecf8911178f8267871f9fba368a9df26083455d69c80595243da52cf7bd3c16403b58c6a8a56078a86ca9a44b118d8fed38bf0b04281aa69a3dc2
 SHA512 
32fc0546fee24c9835dee91907da6f7c850c9e8ea65ee73a31b8444534607bc77d32fadff676a73fa9d98f6e381c6269fc50842e8dde6f7c6f80da588d8b4baa
+DIST firefox-138.0.4-ar.xpi 437191 BLAKE2B 
178149d062c7076d549e51058297af7eb65972e169184aacca626b97bdeb947e8e1544f919cf6cb1bcde2b0c6dc25c3b8f73da7898783c082b84626d00026457
 SHA512 
6c85cb962d0b921b0a2d04aeb65906d16c61d4c46e753580c2496d34db74d18ca8c99f84387ef77f2fb7613a20b2016cb6296f1cc78437ae251068f36297e498
+DIST firefox-138.0.4-ast.xpi 313955 BLAKE2B 
5d5a6aa96b5b7a1154c0bc427aed9c66ee4830a4c35a6eff3d4a938a1d6455fb084cd91337525917a0c43b54253ebc1db1e43c6b51e12818a0755af3f20e890e
 SHA512 
c5250aa6d7d964a329958ea4d83f7788f8866f58976edf49bd42d3436f888aacebf5da8a462a732519b4f204676481f4ca20b9785ce2c7fc9ec0a8baea6f726c
+DIST firefox-138.0.4-az.xpi 319121 BLAKE2B 
255912d033eebb672e8ef4bcc602c86c5e9255147eb16c02caa026525fd67084cd4c5669cf557c05c1ed71585eb5ce9f5cb98065705236dae041142c30969f97
 SHA512 
088765aaeeffe2c67be9b3629fbcaaa3391cd2ffc79e1af5c2a8d5d7fbb3cab26547289c47884014d6dd4ff4b3088b929cd8fa50cc71b14533158d91d10476ad
+DIST firefox-138.0.4-be.xpi 515963 BLAKE2B 
9436aa429ff4ef24fe38ea66a02a5074b23b345727201700b7e785456e44eb95fe19fd612bde3ba32a602ebefa5804b28eefec33580d52b43bf8b6bb9ed1fcaa
 SHA512 
9f395077051c264a88c59325db38abac0889a54ed7a40440571240a1cd05950a94b10e66e652753f8b90a477b53d6a831b7b0c1ee32b9123d93ee6aef862db3b
+DIST firefox-138.0.4-bg.xpi 448972 BLAKE2B 
e7d391cd99866631c82cae50be86d84dc7a24768440bbca0db4d5a694ace1af0bbe299c5f8fcf544e1956e04702de0ccd283b2d0b44842ac5339a64e1c3de15e
 SHA512 
83c6295d9a295fb3d05987d10997dd62e1df9481a660af766683918c0bd57f3af7bf98af15fc0b6ef73505a8dc9cf6ec6d999de84c12bb55dcdc880f65fb2412
+DIST firefox-138.0.4-bn.xpi 413601 BLAKE2B 
60f686089f8fff48c69390c9c2b0b3d16fe3430d810d008f2936863a6f4c2ba1d4b64f3d46bc2ea73e7fb8819dac218072972d9d329c6ea3684c3e184920e319
 SHA512 
4a3959f5bd7e84f9ae9b4accc8a6dd2ff770e1500d3e7a239bec02be8953c4c308e6bfd368ca33edcc2fbcda95a65e5391929a863e2de706e96c65ef1ca2d5b0
+DIST firefox-138.0.4-br.xpi 394173 BLAKE2B 
aca77527cddabb2a91d939645a950b3db23724e195d0e9a5dd383dd14ab73bfd4a2cd20982ba4e7f28027479add1e5d0765ec83dc772a4d68524a1d92c408344
 SHA512 
3daefd36ec44cdb2240d9dea4a9cd67949833ced2204c53fb32fbd0816aa00fe6c0a61e24a90f553e20928e3b211ef6ac9d575d0ffc2165af37cb9fb907557c7
+DIST firefox-138.0.4-bs.xpi 364823 BLAKE2B 
80abc4305ef580c939f7903a9877753d810abb2829c6e9083db5e70670905f7cf6fa40cd1bc0edb546cb4fcb20edfd791e53f2963ad7929e2b352e36ea118fd1
 SHA512 
877c439794c6653708450e6b1225dd23bc06b16d85762f856d4e917057fd29bbba5191ee714e4804703af023691ad358b05f0d3b3354d21e0613831b1f00558b
+DIST firefox-138.0.4-ca-valencia.xpi 359037 BLAKE2B 
dc8727736889fc4f539bd0dc51236e6983f6ab0e701162a8a6060a77dd90208c40dcc3033e668b5abc0462ee4fcd6cb91dc9c31648231737125933e424823532
 SHA512 
408f69e13f7350dd4afb59f5397ea0a6b6cd044a66462de426214da1eebac9dda6bdce7a1a84b89f716641a6c762ef3f03583252015f1a6e27caef9c428ae86d
+DIST firefox-138.0.4-ca.xpi 402155 BLAKE2B 
1ba959ab306058971b631a581366e4951846d57a585172a3034f84eae584bdf983c65c7b809df90ed922095c3b3b76e98a0146d676310ae7d5dbe71965bafe08
 SHA512 
cd22fc7706e2776f58afceb66a1c8a84658e471286631e718de8354aa6ecfbc306dcc36df7d731e86bca2cb0b72b51559bb625c24d95cbb893ce9c741f2a259f
+DIST firefox-138.0.4-cak.xpi 392706 BLAKE2B 
7b6656d91ad51103024ee7e74e569e77ce55f7f0eae99cf3ff4a3c768c15a420c9502a5131ae43183b579b622a1044021589cd2c812b96fa53e8b7fae93a0438
 SHA512 
47387ab8ef5d0a7f13b742ae98a12379142e24d29a9664b87b746fbe4d63260ad52d0b9512352c6c0db0239595edc383a5052ef01626166160940ff1dd2a3ce8
+DIST firefox-138.0.4-cs.xpi 475090 BLAKE2B 
4d8785871d596d79be0b3d889baf2fcecdbc6db50f4a57e40a807a6d2fde6f5d4cf7e80c0b68557c1eaea7003621b82fc23c178ba2d9efe81883209d71fe28bc
 SHA512 
07780b452a1658c59bdc88a8226e5a3b2dd5614902d4b6cb932470485558c324736489d9818ee92a24d8c33c02214af094fe40810df5e057505d81aad9da756d
+DIST firefox-138.0.4-cy.xpi 441393 BLAKE2B 
f3a280928b65536f4e939019dd5513d912456eea7092f507cd7dd3ca19132149ae2e545479340f00fda442c0a2d3ce7de1ba580d25dce639cd94f9fe023a7798
 SHA512 
17254cda04447389775069cdf0fdd32253d50193312e1f56bac63ee63d82a1cfe6861aca0fb100cb858f927c46aaf317202c29fa2059cd324806b2372b73a3a9
+DIST firefox-138.0.4-da.xpi 430738 BLAKE2B 
a27051f892f0a53fd3671b01a8af983b5a3575f4caca0e2f15b8c34e359343e158afcfc32e1acd0522edb24115630ece7cf880df34a279ea1b2eaa70dbc3ad8c
 SHA512 
34ca36e9af93f9cbc231d9a54d20e25cd230aa58fa66b87501428e7c788676dcf10f652ef4f39fa11f26335194609e01d9f6211e4eb403887b909e26f308924c
+DIST firefox-138.0.4-de.xpi 452223 BLAKE2B 
fb8c1f1d1222e2dd85c05e8c87399926f982e9e78e70b2a4ff447b654a9abb39fdf7d346e182072bdd2f9eb1f0ef7566e4e23977ecdc19a04ca4625b10c83d7f
 SHA512 
72b048adfaa5ae6886a4ef5a1b8f735b519bd2adc65b66eea9c3137b3417a059b1068cbc8db9bb9c5f3c9bc77c4702dd729134ed7e03d64059658571bf4b0175
+DIST firefox-138.0.4-dsb.xpi 465484 BLAKE2B 
2319a6c741981e581f4bd22bec45fc71051d801be82d16f67869aeb17dac64b41e260a46807f83224e207dff70275dd24db877de831ed7c8a9bf7e59842db222
 SHA512 
50e714a6822524ebd1a49be5fc4c424593477ce83a5f5487d8946da4eba1f8470c10d636aa031c380f76c1312f68667a2dd8e32487e9536df87e0f058c096185
+DIST firefox-138.0.4-el.xpi 536321 BLAKE2B 
75f8c1998925d78c90ca75eb8707fb005e2ac6be2c56019ca09470fe4efd421f6131ca24a65f94d04715916368b8ee506544c283002aa4f545c96763fc5387e1
 SHA512 
09a37d18c359e041f0765d4567a225c66f7b039a10e8e50367066b2f2e301f2b767cc3a341a9f502d2c7f3b00847d0e118a9e0b4588486bdb199e0e6508ffffc
+DIST firefox-138.0.4-en-CA.xpi 407810 BLAKE2B 
23a0a85a34f9dbec2e370924f359c65e924ca7dddfb2e6c8d5aa51e8764ada6ed26dbc7c7587e52029deb28af185c74021af684f54d4fc0b629ad87ddef70eb8
 SHA512 
23cfd394af52ce1348a10b4b83ee9e703ad37a767ef7b4ffc33f2e01a3cf05cba3e1e130f6f5fa7a6ec02a21dda1482d6784d9885fb4f8301827a5cecbb4e0a4
+DIST firefox-138.0.4-en-GB.xpi 411219 BLAKE2B 
8d8a085936ecdabd3fc5c05fdca35d8bb6d74ddf107a31ed98255f9420c398b9c45036186e8185e3ab408e8c8e712aedab531e7edb6999480b91234c36901d49
 SHA512 
8d2e6d9180be74d19079e6ff2ddd150b00c28007fd57c06f1ae0190fa139c794037ee9182c3b847229fa6686d0cf75e86e27d6c42faa33750be5d39d9704913f
+DIST firefox-138.0.4-eo.xpi 433077 BLAKE2B 
967384a19cb068386e758c3cca3cbae8203b7722211f6250c7f8394331568b219b3dea41dda0710870afbc1162b561a228884dc87d9aa7ad429346caf72f2a15
 SHA512 
0b2b5276ab07b26e9af48184b1cd6cf3992d978d93d6bfc8498c1bf153847c0ae54fb42196e4431d1a06ce65aefc02e2e338f093f12081446a719eb5c7690490
+DIST firefox-138.0.4-es-AR.xpi 445142 BLAKE2B 
9b943c7565fe3a45f0a5d17d7e7cfd65a5b3c59ac989815ac2ad6528a2cc9f2dbfe2c9038fa3814e4a6e3ae37c80c10ccf5e3aaa33bb1c6e61f08590766ebdc1
 SHA512 
1a00fd7faee3f952ef1235ffc55351a9e6777baae0548bf25d69314645b2351a93c5505e59ff2374d6715209f466da64689c7bcec9231b3731ac7a5b1addc5f7
+DIST firefox-138.0.4-es-CL.xpi 445851 BLAKE2B 
852f9ab8f318bafeffbef688c7c8f5b092fb1dda77cba2e5012d2cfbe7028d84ee9e85759cefc4cf6e1463cac0ccd94954e11190b93f34e71073a12185f870f9
 SHA512 
f61aa67f19b4a2e129e03252c42359050b7e2c1e0ee98e725b40945a6ac1e8077b9c314f692e78733a5dfdfdfaec644d9485106311392fcb841cf2bcbac8448e
+DIST firefox-138.0.4-es-ES.xpi 446613 BLAKE2B 
cded7062363a3ae225b7305ab1a0fa87aea2a3787eea3ed1f1264ffc619884fb107f85cf6d48a48e5fc3a433b23b2cb6a8ac19b0e2450602775221d6aaf38543
 SHA512 
f7a0e076a95dea08d31a81db1b829b81fe0c4806e0076b14245529c1af9837c06e84d996e53533f940f67a40bf40837a2baf9bf3e3c0686dcd96aefdafca6063
+DIST firefox-138.0.4-es-MX.xpi 442562 BLAKE2B 
61068f6fa778fd74d387adc066bd1415e131059d141232c23b06409f4ad9e19c8eab56b1f469535d98fbfbde3033fc85cae72823ded009795d35e62d3b9a91af
 SHA512 
ce125152345ccfb69d7c9649a5e9b6311f4a3769d0196d072bfb6cbe88db9af3e8cb67bd411dad3a098266194048a3706bb9eccb68821ad5e78ea17c0ae99377
+DIST firefox-138.0.4-et.xpi 359640 BLAKE2B 
ec69f6d5981a0f739c0ad61d2911105f43b95e4cfebecd219c3a794678605f868fecd2e263eb497fd2e1d5c45b7a0cf84f8ff6e1e5e185fe9985488d209fdfe6
 SHA512 
baa39127dea95506495261d5b84531ce41ae391ae08a295f6ac2b7c3be31e1afde156ee7b6e72f25238afe6cf8a2b9170a5a9f37d3c3240cc28c7616bad456cb
+DIST firefox-138.0.4-eu.xpi 413922 BLAKE2B 
3eb2d59dd198417008d920c1d0ac541b4a5677f7bc49b817274f74c5b7764048a8cab3adde6796d0684a5936ce3455c80677a3f7ce8be8dc6bc19881b7942d88
 SHA512 
f832d892c9149011d661ac74705354110a194f74cdb1ad0f016dfe4d167d39ec101e22830f496341011772c52e70fb53e20e21ba6eb9b477e315640b9c3ef490
+DIST firefox-138.0.4-fa.xpi 412986 BLAKE2B 
9bd7af741eadf36a1099314ea7165c16233d58baa4f2adc4d396ad3421ec61afe6a3a7b4b3ce96f9723fb05fe3923963bde0b2da5f20a7db0a82ed99cdf656e0
 SHA512 
8d2d0341c8b3bac1033dd9b548c862ba8578d64936515bf27defcdd7f6ff53e9ae61c42394a2f078dc6b19ed77e90b4efd6597f1c6ae641481fe284670648c33
+DIST firefox-138.0.4-ff.xpi 311302 BLAKE2B 
bb45ea16cb5e3f68d8eab9828d42306809fb8ee715231f4d703d7b08512175b09257fa4d1fabec8a506e78d0d0157dd4f2597531f640ea132ae49b88c5d6d84c
 SHA512 
fdebdc7f88f9c4543354f2d4988e256d8e4a589e20127e7ba1dd4cfe458f4b839ca0d01e346e1825ffe3193f93fb999b6db1386a30915466e58b4e68181ac685
+DIST firefox-138.0.4-fi.xpi 427747 BLAKE2B 
f79803c3c61437e305ba461573e33fabe78c676ecca1fcccfd8badb7cad0824a209617ffc4e966041b4564de1b26d70a9446567e92cbf56327d1467ec216fd38
 SHA512 
b252a9331cf1d3889425d2bf383fa6f0d9e4eac8659a102be94b89ba3f43396a003ae07dc447dd227bc999f5e37bca1b1d145856e63b42edc4b0f14adbede01f
+DIST firefox-138.0.4-fr.xpi 457844 BLAKE2B 
00d19dd590ac6202297bdf4869d58288a2c452c6beb44715474e3bc9d08509c307d9fde356128110537f912b325c1c8b7ffff1f5e299113b82fe0a9bee668899
 SHA512 
5ee8d3d867d0ae10cb0dce9a9f91617d3e91d5732b9dbc674e352f9551ef637c915a8cc2d7ee84c302f3ee21b3b7cefa9ac88df8867cab0a16b24dcd741affba
+DIST firefox-138.0.4-fur.xpi 451288 BLAKE2B 
2c060c4d671713a3796551bc01a65e5275dfc5f9831248bd7b5cf0d3631f4409cedbfc162f753df76eb2c878aab42c886e9462804d9783906ff91077ab53c620
 SHA512 
7e750bfeca12275138225d096e3cf5bea6b44c8ebf03a9619ba83922c0dc8e6ed65a89af11889f6f81fd11db313e00224bc4358afb7176e0eb6b9dc7ef22b648
+DIST firefox-138.0.4-fy-NL.xpi 441763 BLAKE2B 
c0b136982f2f3e69ac560b6bdcc29a35ff825e8306110795c549d71c37abcb5bf303b9b35c9efbde448fa9a6e7b3af3f6fe1fd203c3389ffe668820a6c74e8a5
 SHA512 
f9b4ecd2d789aff657a2dcaf95bd72fe106d944677de3d037dca202fb8afa662710b1df5242bc01a6648724c613a4a2525c42c4194c8001293e09b08737d49c9
+DIST firefox-138.0.4-ga-IE.xpi 316390 BLAKE2B 
bcccfd37620eeffe3d06553fe8a155612510208e13aba54995d173e6b0ae489909b9f81ece561d1ac170976b5b4c33819a89744cf632be28d911009a612982e3
 SHA512 
c04d5867fcbd852275a9c68e7407aa70de1f3f0e02aaeba4c0738d446071cc4d89e40c94b752212b0c4212966737b1d0d6d9ecf53b9eacc387a0d072e4e33f92
+DIST firefox-138.0.4-gd.xpi 401177 BLAKE2B 
0fe925457b51d2e9708da0e42d3256356e19a318abe3bca976780cba9641c8354edc9df6ec3a4996291f55221c5bb941ff609cb3e621922c22d5d07b5fa077f6
 SHA512 
5e93ac3f3aa8b6e166a6edd61b6c0211884f6485b27a41a429e52fb13fd99f65909c13e1178d94e4bd4d6728fe6033827bffe618920856c3b911e2da20023dcb
+DIST firefox-138.0.4-gl.xpi 405197 BLAKE2B 
e3604349ccff666bc408bfddb55a6021303f6374a6dbcfbacfa6674513e51c78efc97f6bcf9e1fbc0ae672fa85fc261d9f2a7c183d1be32aa6f53c5b59d46cfe
 SHA512 
a2875c56aa3f5344a2088349980ae733900b6d709f3d3c3a7793b68d657a2c1d2da2d7f601fac5b021e8a48d5a65961a982feb289831019b31d9cfd74e3dfce8
+DIST firefox-138.0.4-gn.xpi 448250 BLAKE2B 
2e7d80f18b795b7d7feefdc66898a7e783bcb0f7ba910f8f808d1b6d828a80075e20d330d2da59ceba5c9e5b8a92937c8db2a72b4eac3a5eb8af4b4703adf486
 SHA512 
5ef9cd6a3309b87873948559f4c55a047ceb768fd1eb0c9f6fce17e4339d47e57f0896e809f120514450e7dde65ccd41f34e9103245622227c7d5af92848266d
+DIST firefox-138.0.4-gu-IN.xpi 359744 BLAKE2B 
8cfb5ee99d27347d37061d3477860633d1eab249743c70770369b005eaa85ebaa6fbeb0244e294b85701b54f4ba0c2ce5b08c6353f20970ebc6f42a771b4966b
 SHA512 
a5e44216a3a22fc0b64eea1037d8b314c29a7fdbfd87f8ee0b96e106dfa67aa15710ff4d5ca7e66e7f66eaa74b4b2e92fc9c4eda12cbcbd081305093a4a6d03e
+DIST firefox-138.0.4-he.xpi 443178 BLAKE2B 
f79a652c75d077923ce865941cd82715aa8c852055ba8e863709f5cf76e54e1836b239d1528247260c26c91315617f6dabfe3207b56cacbe3e9a54425f43db66
 SHA512 
8ed33ee0db4d0a41744a05a957f6bcc0f4085eed2c62b303f7fc957b61b1bd729a34e9bd58ef6aedcad210ee843942c37c1e0174e2a01ab75fbf720e35b4e406
+DIST firefox-138.0.4-hi-IN.xpi 378231 BLAKE2B 
ec144575a8e5590968ce33a1367a97bce6323078b42acdca0394cd0e8690836b3190220a99cfe117b12c8c9c56d604a9e05f1846d18bdae38fc49b536276223f
 SHA512 
4473dd47c1e35cf2529d1fb9387d140fe2a8ec51335428ca7f829018a5e4319a1ced1eff2f81de37cdfe6965b8d57a4429864ac16273587c05e4fd53aab8ece2
+DIST firefox-138.0.4-hr.xpi 429592 BLAKE2B 
cdac0a300e32e5a67b3d835e45e3dca44aa161814e492d3c3ea22634c75baf022d19e82927afbdd9eefbe27d5e9ba7a896f277be41724f6c761db878a2fbd96d
 SHA512 
e4325a269215b04b3447cc0bc80f3b75ba3ebf9577dd43d06fe960a32c2f475fd0ad538ea7de8ffafb29c0796317e4651ac7742e59fa13ed802707b299f209ce
+DIST firefox-138.0.4-hsb.xpi 462121 BLAKE2B 
80c67ca5bacc911dc5a4c29660983ac14d6b9a5411e6663360850410f1118e1ed997a32ef40af2fc051c34e02988acc4ec475e57542cdda2add50bef6bbe4ddb
 SHA512 
2fdffebd9603a328734cb503558b79830e94b6c24da299b4071683887481137884a11c6831e4a33d6d2cf8964a80090899044778a848a2f61ad6e1a3ab362fc1
+DIST firefox-138.0.4-hu.xpi 465935 BLAKE2B 
19bbad4797b6acb70911aadba1931820af1326e93ffff05f8019890321c5034af1f8c60e76d16b9a1166e9518ae7bcc9128e01f856e31fb4aa31e59552bcf612
 SHA512 
c1e8a5ec655fd42a51a3f8645838d1a890fab68aa02ed171477660cf4bac0466f19ae2739521490e0c60f0e1bcc87ca2f93e8c9df735b8fc3fa0f9c08965ed37
+DIST firefox-138.0.4-hy-AM.xpi 453824 BLAKE2B 
eb9616875c092b465c6dfc3a91d6fc0d62912275e4499cc3c044d162b3facb1d4b6d45710c3cd6628ec0a0d4e1cbd095bf266c7ad9da07bae3a8c700a5018f17
 SHA512 
f37542e84d61429e29fbfc19c5cb7309f621651a5a20dea160c02fee37651ce1a5c36246e4c418b27fd871463e955f7d1ccc84a893723ecc8e6578c00f185fdb
+DIST firefox-138.0.4-ia.xpi 429680 BLAKE2B 
a8e28ef2d4e2b85c8ad01b0dd34a64c6952d16cd87c2ac5a149555412b9318782858c8067011de7267c21bb66487ebb6c3f1746719504028640e45804d52b8a9
 SHA512 
764ea03906658a0ef84650b7e2bb83b0c7a556638c5889b4ef6e9729fd38866a6527db2b8885492fc5bfe00fdfa8ba0bb44f2b3b7ab90a0915dd9c9b70a47905
+DIST firefox-138.0.4-id.xpi 424276 BLAKE2B 
0583e498dc8042f6bc5b049a3eb98dc31d15785bea09bbeac7ab8f8aa8d7676da73c75538d66cbe854f36134eb2fe635a5e2b72efb35b82b591d21f67c081447
 SHA512 
f6efa0b95012416ecf42a3b024d2057fa3924e96ff2e32fa273875c588d9d08169daa50aac40c0f7a47721fe200d4390c3e3880c441f211ac43c16d4ed2f1d05
+DIST firefox-138.0.4-is.xpi 431993 BLAKE2B 
1d9540e78fcb0e0957b56014b6d90269ae8cd5c92434551eef8d8b7cfcaae6d7fac53fc320768af346191b8c22fa033a48307606d0280c1435337088a9f474f4
 SHA512 
e7f2ca005bc3584daf0615673bb97c50e5fb8a0f3aeb5c7ade99e4738e1a1d695fb5b2006fde964fd4326718f93941a6f9e1686f2ebbaeacb069a8ff8988ecfc
+DIST firefox-138.0.4-it.xpi 440398 BLAKE2B 
90a7165592337e530168e0002ca29263d6ed802a0a4f5554489f8aad91b344d5db9e4e309359125c0ee50e5b720c995d304fe27b7ac1fb146a3b8465ec0c9ca9
 SHA512 
01020c72c882898ff7fdfe6d1977d5ba8310d69e389f6ec663c7257340bf40680576511c5f740185a1b95f22fbab722fd5a6605c619fc06cd816e6094b441299
+DIST firefox-138.0.4-ja.xpi 480871 BLAKE2B 
318c9fbb16e92dabe168c918549257fe0a4ba3353bbc055721facd7df83a90ddae7117c1e9e824f8896d14ceb9926106624d64b203672d8e383ef0278750d23d
 SHA512 
6236bda1379c90e59a1584881e0a4a5b9f02c0f280f041810ee1b3ce8ec47688074b9418a55ebcecca9ff6f7272f7ebddd03cdb008d71d8e1e3f6c76eef73421
+DIST firefox-138.0.4-ka.xpi 494239 BLAKE2B 
2b5920f9a0a5c1de514bd37842846345d3039c14f28ca62e620086d76c063c29201f34cc41f24cc9d812727d42a9746559f465e37a29cbb8f12b2b5562b4a224
 SHA512 
dc6ce8f94edbeba773c7986009aa97084f137c5beae48ff6ed25429e412a5016650c7362ce849ff01f4c3f329fb2f93676d6dfb3e080c21ffbb0a06ca916b081
+DIST firefox-138.0.4-kab.xpi 413558 BLAKE2B 
70ab01307e6b29dca52a4be5329f102baba6809240beeda47237185a4b749867c7851bf3411adb9884162c31495d70a262d3d639438d8952050b952b5cc1441e
 SHA512 
d2f580a0fb38f455675f75af0649729e04d57bcc927ba574f8a56efa1c9f861383135d571f8d31069df6ff1223a82cc4ea74fee3a491e08c47cd8ca6ae7658de
+DIST firefox-138.0.4-kk.xpi 501973 BLAKE2B 
863b30ab04940b02850452e795b45227a4bfb1c55cab68e72b9285809fdd4356b539b96526480378ffcdda00b61adee099a6cca7620021fd0f050b0221dd8037
 SHA512 
b0f8f4653c7708092f02fd34d475c755b31cb02b85f973414e5ca7d687b2cbb80324d50293245bfbce10f402e2291ff496c9ace6dcd0aa7f118d4adcd77eb454
+DIST firefox-138.0.4-km.xpi 349526 BLAKE2B 
01500f6e69df4a98e551a57a835d4bca49ac29a3360371e5e65e3ac9be1d9a9464c77aae8e8cf4f65ebca7980a3a99512c9964b0c3df96b2158039744fa4040c
 SHA512 
0a3507c14f61eb88f97979e2213b3cfa39bc57816fc3cb1ba772105f9d90ba37c0076746a44370e046b264ccdc4a9077d7cae729f686e42212eacca72505df44
+DIST firefox-138.0.4-kn.xpi 332435 BLAKE2B 
436e12712efce577eecd136ec9dbfb923554c407d1ade6beae081da993488d32d4fd148b8a9880b679b539279a831536de8e7b3d4eee1f8a9ecb1d3eefec98c2
 SHA512 
f7405c25a09e5d23b1500ad471109976cbfc9bb5e1ee6a49d064ec75cb6c5c1c30f565fdfe9d1fa6b85efdaf64823a646f8f1233ff91ec996bdb62a620997332
+DIST firefox-138.0.4-ko.xpi 467010 BLAKE2B 
45c7630013576fbfd5da28852c2e09b1968e7a87f9e0d3b7ca306f7ce7829f1cff31d6a079c7f452caed7335a66f9f45dadccbf02227c90c876340fcb4635657
 SHA512 
ba8a49671c741b7eff6425ada7305b897c651c524c24dba2c6ee173b07e3373b0c445b1e45a8e688f4b627854b183bffc73651f001915407b7237b484453fce1
+DIST firefox-138.0.4-lij.xpi 319035 BLAKE2B 
5b6d47cfc3b9785809fa6403f08920fdb170fb7d59e1757727305bb27ce1e8427a232b789ded7cfa5b9762144bf7e01afc5bfdeb7a05c3d4da1fd5b52dbd42a7
 SHA512 
b9eb818c0fe865600fbb5ff31b496d421ad58ef0c82bcc78ad5b86fdea5f94bff75cdef4946af7339cd53bd408ce8adcf34113423853449193bc5336febf629f
+DIST firefox-138.0.4-lt.xpi 380932 BLAKE2B 
c8e1b6c9f61e867b734de36ee23146b4a89dad1e21c39510862fd9d8dda44f2f84302199682e33ed4a294d57a77b8cbb61318b61d88ff69e43a30becc2590ee1
 SHA512 
f8a504469cfed7b2466f402c09690927490e982aeb5f1a339edacfefdea13ed9507f821d88931499ec0b0f4a4f199e0610596cdbb42f94acc68e35653af0ee44
+DIST firefox-138.0.4-lv.xpi 389499 BLAKE2B 
2ae8b3176f7da3fa15d5d48b731ce3c0e18441e5799c5b3e5ef42af5a3a752c1e013a823e25e4a6362b756bbafb05e03a83f5aceeaa96ca308d7a3806c6c7ae9
 SHA512 
0bc9cbddd504fe32b7b52e558d67632c450cf1d69eb27bba7cd9ac1559d65773230c0d7e9e88d805f0de659d3becd022f4e530d2261cb7b78ae7ad279d9894cb
+DIST firefox-138.0.4-mk.xpi 317499 BLAKE2B 
21c677e8ba8b4e70f7c839876d2f4d2096be8b9e71673ba508a4fbc142dec931a36193199f518d9057a61423aee42428046c4cd89de854b651e4a9fe96c1f188
 SHA512 
0ab3b6afaaf51c68f86c7a325df0cbfb4e30071bd0a208af129667aeb629de7f47313c4402aeaf1687dee149f0379cbca1db697ff93ba5c8f4aaaf90b21e2e5f
+DIST firefox-138.0.4-mr.xpi 356929 BLAKE2B 
b3fcb9041ba7c182386b734ec52df22977875f63f3339f10edb7ec36766d669fd4f3c32cdc329525e89801fea548d152fbb9f85ffe9e76db1e7070c04e7b1d15
 SHA512 
f53d527e656f724a4f0a780c491ddd2d2a25fc5042161b80c9f973efe9c5aa3f5b3c4eba60b4f47b45f1816a223884f210d4ea9c1c468053b210ff7e60cdda2b
+DIST firefox-138.0.4-ms.xpi 296037 BLAKE2B 
5c6f6f8f8682b6e33e9a37d27e8d187d9a946efc2265c52513ef55a9eec61e0e38a6085542819d00ebab5daff74c3734424860e27b56f16a5325af8f53b2ecf5
 SHA512 
926a54a1b8dffbf127dd8a5abcef4646311ebc07cf73aeb3e5d500d839bf7764c16cc10689cfea26c0d2251381a31a04da72e411676ee9c2c5cdd7132038af51
+DIST firefox-138.0.4-my.xpi 343223 BLAKE2B 
519976709451fdf224aaaba978986c9f853f52d8e6ce5f38da1796c299202add7bb0113d63140d575f08a364e96888b1ea75ae914cb30a81c5bfdf9dd5841976
 SHA512 
9f1c40ec455e9a5a24ca4504eea0904c921334edd92aacfc9450df46e5d23c4dbbad6bb83608ef04e0b20631352b69cf0811c4fe7864f95a9111fe80a6b2f1fa
+DIST firefox-138.0.4-nb-NO.xpi 422068 BLAKE2B 
9f2883a33129f4e783c1fb8842116acd461656359591b4df9d03cab649ccb33473941bf30395d2348d8a4390ac83b1f50139f2099c8cba2f185bb727248419a8
 SHA512 
2e6321e4d20557934c1b269a67b76b6329fe608c5b7f472cd7e3b59dddaf369346995174a1fcd947e26fd84a76c37517e50c580a445fe8c5647fd74146a3040a
+DIST firefox-138.0.4-ne-NP.xpi 350319 BLAKE2B 
fb55588e51d0674537be18b26acb2bdafe3bc1a21e0660de9cd898e90d199eabfe1d0ab3236a5857e3705d09e00fe51c0f354496b81d3252fe1bd9a38c64c31f
 SHA512 
8b9ded2e5376bd9264a2af51d8a5bc2222a1899457a11c7d3010e17cf5a6487a25edeca64d20398b688093b59477c0e640c3bdc19d87a6034fadc7a7eb6bafa0
+DIST firefox-138.0.4-nl.xpi 435787 BLAKE2B 
db62a0a294d303bd4644992577f73dd829728665e174411dac5b73a725d106134bdee7cab300fcd985e62fa0690319b874d59b08562a08001228dad8d4e0deef
 SHA512 
3a8a03ca9d810c67a35ac95e02bc328532995c62e78e7ede7c1c6f7ba930df0d3b18d2d4af87c6e1ec472a5cae7580f7a28dad95a19a4eafbec8c520880318c9
+DIST firefox-138.0.4-nn-NO.xpi 428373 BLAKE2B 
7391e4ce48670f14feb962f80ed45bd0a22d685bf2ee7dfee3478f8412ed03cb28d68ee25c034955066f13b0cc5d7b1cadb0fa5c8b887cb9e6de807c284c5dbd
 SHA512 
4650619a3fed2e80e9b81798dce243a0981c1f1f07d0b69f971e5bf9fbb0eae52ccc226fb0a8b0c9c3ebcf86aef8bf65f9669906d0ef99a2190c44a7d1df7efe
+DIST firefox-138.0.4-oc.xpi 414223 BLAKE2B 
cc2959cddee9b44a873561a87faf2fe43a550ef9efd60a1f5126ffeb24d96adb80fcd5d2daa4713cbf2bb476bae895c62fd17e617497ba3701727592cf7913b6
 SHA512 
2f4a62d9e1b07e448ce38148093bd9afa8cdacb770ee7e0ccbfaddd1195da04a84284b6e279749e283bd106c4ca84f93db7ae587215db00e6fbfd520a50bb0c0
+DIST firefox-138.0.4-pa-IN.xpi 493687 BLAKE2B 
27c11ffc687c19835d3cfac2d32319f3cc3dd85bd0f27cbc2a270fe2845eb970a2fb4d136d2cc533c1485fc4c0a8b9911b2e6c04a6487cfe427d236e3d22503d
 SHA512 
5b6bfbc147c03ec2909431be04ca30f8a33a64565cd39890ed4e1df0e5187c74c12f98c2f83fe44e5875e5a60279191e8934072fce296691228910045764e6d5
+DIST firefox-138.0.4-pl.xpi 452925 BLAKE2B 
1d56b042c99ee23fcec6055f118e68877d54a9a4cae7072e8b154335c40d6912f825f21971c59e3eaf0f4e5051ddf941fc550786ac1e516cda36dfca90f63e2f
 SHA512 
e1d6a8541e17832912eb7fe778f3709137766dc9cb84e4d81f24355d9dfd751e05fce7dfd4d3df65ef029733162b67b99ea25bc8c875e655b9c99e688aa541f4
+DIST firefox-138.0.4-pt-BR.xpi 440316 BLAKE2B 
4d8e2946fb4cedfa103aebe3a03d7aeb1c4721f7d757c7d5ed7f3c9cc8452e4b328798c07b147d42b882d7428b06d66c00cbec8677c8b11a30ea47e0ae23f37e
 SHA512 
c7dac79c7f25dff09e7f81d9547bdde8e18f3b241eaba06f9dd7f84728f4cb04771aec13c6cbce032cc9bb23c78ee6940fe168fbbdcb902c5a937080fc5f7efe
+DIST firefox-138.0.4-pt-PT.xpi 446055 BLAKE2B 
3874bc0dac7801d72934f37476aa15a62ed764da42bdc5e056e20df986d7e84aa4b990e420b0642092f2032b6c9a83fe8a81002699cf87a11b66c4a5bce5b9ce
 SHA512 
7ba496ffd4f39b2881a16d512f138d6c0bef6d5b6fb834287243200a79a9bca14c0564a675cef0335652e46a0e91948f3ea8bea474e5f5fad3f83ed446495927
+DIST firefox-138.0.4-rm.xpi 439689 BLAKE2B 
fd82b0fa0b7bdf9749fcab23690b9eb49e912059cfd5a110e9eb40c10258ecb8d4e35ff738892dbfaa11e41254fca987eba6df303f57bb241422f9d298bb23b0
 SHA512 
b5112dd2411c199a357417cd5acde5f0fda39fbc192de52a249c0e798f8651e04095137b150e7047d0e374356063e901c8250fc16cf98633d530ccfc79b3d8e9
+DIST firefox-138.0.4-ro.xpi 366328 BLAKE2B 
a28448fcdf47d468c9bade7ccd485e5be63c30e381efbdb26f1cd7a6946d1f58aa87eea726b49cecf8be33c558ea92fa66bf3b457160f201a1f0368344987672
 SHA512 
7eaef90213fde81b19f6e43d8706476c3b1e2fa73a944db7904f96300c0bafbf704431d7148fcb2e050ad2b487fb2f7ecf29e58789f3da7da6ccdc18ed30d52b
+DIST firefox-138.0.4-ru.xpi 524408 BLAKE2B 
d292101fc5aefcfd600bc710eb2e863ae52acef62e23f3c7deb0a2570acddcf0ee8246e7fb9a9c1087207960fd35d7ba21be796acf9dc08a59edec35fd72ef08
 SHA512 
5854118aee69794de6f90a8dba743af15a5585fc940e3a3ed07b1f040df95fa84442d64cfa44b7733122db6f5fd4c225a450a2c7682a09586ab83972a3478de0
+DIST firefox-138.0.4-sc.xpi 406153 BLAKE2B 
16297005337e51062210e21d50eb15873771eb5a89f37ac6573cad115ffd32ac44c35b2f48a3cc0d0e718389d4019408abb89e68bc1c1238d72ac8aa0859e139
 SHA512 
c12d33bff161191b98a412029ab96172eabf5fe8998185aee7aa0e9c759289d6021b66cb77bd754e1de1306b07b6e507ce47b69e74ead24240717621b1ba5729
+DIST firefox-138.0.4-sco.xpi 324596 BLAKE2B 
8bc5abb15466f2657c1f050e5b96ce58a4d5f6126e26b2ac24ee45ebc0d55cdde0803b4714d12c1c51ac1d019eb2641955ab08f17cd3b4e4b3f1734eae01e614
 SHA512 
60be5ca0f3f33bb49fa95384ba5b64fd2671b27efbad6a8139866b0d84224f356d7fbcaf78a86c24456254b8af14f36013d7c54ef05f7f5a4f0f9ea57b59b758
+DIST firefox-138.0.4-si.xpi 414456 BLAKE2B 
ab0f5e7a3ae550c89d077f70a9d3cdf77bd47fe50861f60f098f85b1e7ab3dc18970ab75c84e29adfbcf901c88586c2efec666eb955f3594e8e4dead461db0de
 SHA512 
c47c8fe02fd2e2970101f03473594b415308793e6549424aad7a045c867ba7166806a892a31ccc92fb1b55f10654814fff971208df884bfe150a25f18ae9e2d4
+DIST firefox-138.0.4-sk.xpi 467389 BLAKE2B 
4c4235cf2dc2157b789878d1cb4167f12d95743c58bf54cf0ceb3e9be288062b228bd59798a3038ebf1dc7430f561294f31639757e14828bd2c5711815729417
 SHA512 
00ed8f4250a20cb1e36fbeb7cea1cb6698c2070cffc6f688ba5a8a1fd4cf8c870925a149945a5681356722c37450c3c54b6809b6375acc72b2146aadeea6d5e6
+DIST firefox-138.0.4-skr.xpi 492082 BLAKE2B 
ff37e74012798d3bc1015b90a5d4530449a03eb83b43ac09a1c452410f1082d955d37d67e08f41e262e2617190a7c2246666060bfceff0af9fdb147e91186821
 SHA512 
2d38611ec557d1101cf165b995f0223a2437645ad4356e5c9045f4bddbcaf151a1ff826f308ea527fe5036e9dde4a90b88f22caeab32a2bd5959618112b272a9
+DIST firefox-138.0.4-sl.xpi 439512 BLAKE2B 
8ed144b6c3537ea4580c62057c110143069ab7988a120c5e34819d88633cbcba0caaa2d54e19619ddd7261b5d8efa5cff1b5dbba5c01ffe2e1b5cd733af5f48a
 SHA512 
44ff9da6fce5aaf729ac9238d2378930333699d692f4dac112d2a18a5f61b3625c409c3f1288546d7d565b5489357abdb770a6f1507f19f42c8e79a03fc40713
+DIST firefox-138.0.4-son.xpi 273749 BLAKE2B 
abdad425e1b313aceafc76edaa4a591b05b874d348cb8bb868344cd25db82da8ddb6a323a7b5137b77554ffdd1c815a14b1d447af6edb6eff86b54976afd7bde
 SHA512 
9909e249396b2d363b11b42f99169b42801f13373907774b1b466ac48928d4f28e52eaba63df51d87717984c4921d847c6221fa7194f554013640261532c26e1
+DIST firefox-138.0.4-sq.xpi 454747 BLAKE2B 
84634b7ee2f699a8cfc742e2ef9fd09cb5c4d74eb3fc9ea63ea801cfc091e52e688ca21b004bc3b8fa016e2d44932f09c4fa565dea56528d99d1d97cc9436262
 SHA512 
b5831d4c30ee8b6135d3045ca802d643c3f391cd30aa441a80316de1ddb9db5b22c3ed53e18ca266ebf36a01bf387ddb84987360d2226af622763a87e571d5a8
+DIST firefox-138.0.4-sr.xpi 454254 BLAKE2B 
2758102a5ee3aa972663ff658362cb695297f44da622cac4a0268bd4e9872d55629c19227705893bbef836eb00a3123268cc41f1301dc174bb34d25c09e9ec05
 SHA512 
e7cb2ecd39c9c38bf0fdda796885ccd0091bf331dd69fcdb0ef43074796bab80edbcbd259eaa55a063e6dca6437704ac14a45ba6f15d669d1e742e40571c53b7
+DIST firefox-138.0.4-sv-SE.xpi 435748 BLAKE2B 
d404f0e8f8f6de16da7688bb0f038e895b7da3cf11d1af748ed7fce9f3d86f598106446c3001057736c4b125ff6e42339ef9785766c823a71027b0d1763c0b55
 SHA512 
8fb855fd9ad2414a103a063c953eec838d82deeec59a9932c51b80557a6b563fdee29fd21e642aa7ab06065c6297a2b6113da110d93bbf37b051fc7ff58e082f
+DIST firefox-138.0.4-szl.xpi 343651 BLAKE2B 
88f3bc0319ec7d2854cb7f593126eabaf739176256983e85e7b6e441a876c4ce26b60659e4332457a50e674a43405830499fcd9f62b66c2a8c685317b9e8f786
 SHA512 
ae0a33e6f90c601f148ad608769030351b60086d8a1555867ca32669dbcb01691fa0035935944d12415a22d4be674e8d49e524013a0ba0c5b5abc62906dd4a00
+DIST firefox-138.0.4-ta.xpi 338602 BLAKE2B 
d48d1ce289f05e84597412d54ee172b296b6c3ac59403f02f16f3d7ec1bf03e441024d8360139e57ad20bf64100247b9d35458315204525653fd9b22b78cb2db
 SHA512 
08cefe18e79002873cb4ba9a536a2f9dcf5ecb82dcc320f4a3114c9497d4016bd2b458eb8166dc5e8f9a37ed8c735080e331cd6927be673ab07f0f67e87fa238
+DIST firefox-138.0.4-te.xpi 383669 BLAKE2B 
3c25c8ab0ab7af5c15d1a0f1d6baaabc989bccb5357c2d85762124d8b79bce4e0fbe6d8002ff7e9b56c82e365ed3037aba0d124f5a2ce103020573ee2f42cb19
 SHA512 
77e36a49d646b4e6bdf5725365abcae822da92ae8403c9d0a9267d91ba01cb3b42431ba048f7db0cf72c51e27e53a4256e43e241fa434ae0020b6b34cef121b1
+DIST firefox-138.0.4-th.xpi 501185 BLAKE2B 
93291488369adf2de11cb918bd08797c66edc8a86490f1690b65de14de51d52095ee5301dd46b1ad804d92105ba4676c61bb4398091b0a97d3e9abd541afa542
 SHA512 
3a1cf1f5f6098667ad4300abcc2ecfd25c399b4fd402dd225e89b7e2e84aa6f95d15f4531d726d0955d9e0a50943fbe38e8a809e5170b179b7b62d9f9ef631f0
+DIST firefox-138.0.4-tl.xpi 352247 BLAKE2B 
f62187a1cb8bda72d121613ae23dbe168c7db5571ca45b34f5127a7d1878590b5baeec4ae6f34f74685500ab009d3059e702c51af8eb2010430dd1f47ebb222f
 SHA512 
aaf58bb9da05a7527b2b8ec03e7ff12f60b42fbcd8392000958895387ebe8eb1fa73517fc868b7228117e10c925c19961f52e99633d91670b134f45a08d8c5a4
+DIST firefox-138.0.4-tr.xpi 448015 BLAKE2B 
d44c373616aef90eacec8c3538ec25f209889d554b3adb74df4904efe41a323f708875273e15527f36e47308a0f3d0150a7d978df1cf2b6b2ab1013c322c6964
 SHA512 
99de2e9f6488c6c44c8a4120a8009454377f63b6850a5e567970f7cfc798d81655722125f5099ee94e0f3fb27e8d4258f20d2af9c0e64331ab364b04c7b05635
+DIST firefox-138.0.4-trs.xpi 324158 BLAKE2B 
cdba1dca0b961192cce75ee085484e8eaecfc9ba15e575a99c3624806fe7d78c33c7d2594fd10dfe3a97ed8737d794a825e42e8603699f6f303d563116c3af44
 SHA512 
b25b516c13ddf2c5cc49b50b277b5d6edd0d397ace7728ad13c35ab8595ff2739c9aced65ced00d6bde65713203f25a0e005c8d3562f82674c8178c19cc9558a
+DIST firefox-138.0.4-uk.xpi 515442 BLAKE2B 
9f7d161e68404a097a31a9e61b4525ad80bf7cd476ca214bcaa80aa0926432f35f1a15749884b10aba97595e290a4aec4f874d2c807850bb4d3574e96270301b
 SHA512 
70d972de0c225166308283f58903fd42507b300a289bf1ead2ebc1f0deb9fd50cffcc6b7d8db8822c8295faa91478246b6a6653850ec2121638161b302c577d3
+DIST firefox-138.0.4-ur.xpi 371103 BLAKE2B 
c6a688291fdcf0260b91c4127e5ecf000a009511da4eb3d01928ca594441ef1d1f71034362637f977fb280553d40af671ef0a449b31df5c6263687bf3059c739
 SHA512 
039fbb4fb1242645f1f68d1d10e412d01ad4b1c8cd2e1ecd9db4b871dcfc876fa66a62d60d9f42f51c69275b98da222a7daa11aa5ef24ce9cbe32d917f3dec27
+DIST firefox-138.0.4-uz.xpi 304265 BLAKE2B 
3f810c894229d0537732ea9393acdea85a10734aa88da24f92ca545ba2ccd1d0412991f656dc8e9f2c0a0ce44d0e861c418918675aaf5782e6246a03319b1236
 SHA512 
dbd15d8014feb181c280152e1f838f0e21e2c96cc786544c0825dbe0847feb61349c66789c00948865be54f8f5dafd8cf0aa62f6f4aee1a20a2a91b095d45c08
+DIST firefox-138.0.4-vi.xpi 468823 BLAKE2B 
8d8ec67eea5604a9a3e8b2e24f1f4dc921f9db331d883e38033ec6724bf7ae9252c13f54e5793b6199b0ccea32a191ac84d110bbf72d629d3a1aaf1e783823a2
 SHA512 
fd8e2879e3e3d55a7ebe6084f30cc5c3b7ce3436b6493439b0362adcad94e89fb0c81841f9c67481789f389eac42429a933a7dbc8964b4a4cb1cc2b8db6d0eda
+DIST firefox-138.0.4-xh.xpi 273647 BLAKE2B 
74a84022bec54543a88ea0b1433d3c5dbe4bac7ff064ab9b1bb9f32561cb06ec8f356d8c135f1b7d4e04e039b633fd07a164629ea09127afa988d9eefb8aed9b
 SHA512 
b55d37bb86fdfcce16b2a0eac90fe2476614f7cb0e09462caa269c4c7c0293eb71a506399b162019e4be08368e865b1a9dfbec0aad18805330c1a242885ff17a
+DIST firefox-138.0.4-zh-CN.xpi 460392 BLAKE2B 
6b2cfb027e1affdc8e35b57a55147aefc3a429261031f12ec52f07cfd4e6e73bfc81626311e3ccb3c445a766df4c09e8f0e652c6709e4905e42b52bd981dbf1e
 SHA512 
f5ddd024b0298e6c734c148dfd01da6dbee8c172c93b9d30c1b820eeb860214ea89d90391c9c3c6e9521470860638f3c5bab10d75dfc832136ecf0853cb4ee2b
+DIST firefox-138.0.4-zh-TW.xpi 463422 BLAKE2B 
d502bb8689b40878236347064d9e2eebc257aef4cc0f9bb7c84248fc5e412c7bb4234fe6d7e73539bdb0755be2dd1f6e3e94f656e507f7a14696ff88021fbc00
 SHA512 
0cb8c41dbaea4833fbda8fda9aecfd6dcaf7f9ab24b2e4eb2033b7cefaec45c628f7c4aac6a1366f1153800ce8112188689f1316975deb9f79cf8acd34236e42
+DIST firefox-138.0.4.source.tar.xz 623414956 BLAKE2B 
1e65a896e0c3188510ecb1fe0cb7f181c6977e04a5b50079b04323c4b508297945ac8865a2273a0cfe038e841cc2972d930d627f8d39db3ce9288fc5fe5a1ed7
 SHA512 
64d80456da8df27d7eeed7eb20c35fcf213bc948eb48739b6101e2c476ea9a9133da928477a79683c96c160f8d53bed52be487f01a8d29e38d39071f12676806
 DIST firefox-138.0.source.tar.xz 630343992 BLAKE2B 
9bd4fb552a4e853fac2c74ddfea5ffeae8ba22d3a22d0c92fbd38a44b124a1c9b3e260bee347d476c5cf5e35a88978ee6b6e66d41a05064aa50eb08b3de2488c
 SHA512 
265eef505216f70d50ebb95a6b23983d0b70430320e7e2dcf497127890d7bbdff1c49c64790010c85b8e3fe0da5c90e95b2d44fb1adca64b1755428ccb2b91a2
 DIST wasi-sdk-25.0-arm64-linux.tar.gz 115160800 BLAKE2B 
1ce22aaea87d0720d40d46ebdd96508c8fb0593b53c4489022fd5a1a9afb043a26a6e162a992d73454f612f2b6ab01e17a99c189c0c8b8c2d2d68fd96fabee1b
 SHA512 
ef4eff22c1efec4dc5ab199d09d93ee0004f9fa67b32cac0030f8b6a40def10f714391cec8e803c200995dd8bfad3ebad9ec79b4195aa6b2ea61ea47a8b9e61f
 DIST wasi-sdk-25.0-x86_64-linux.tar.gz 114450290 BLAKE2B 
07618828d4c25d67421aa72d38fc49bbff9052b8ecfe0fa9f4207e71880e9c650f458567cfa5bd389d5f830fcfee89142a77d33c29e7bccd1da7ddba2bc47b95
 SHA512 
716acc4b737ad6f51c6b32c3423612c03df9a3165bde3d6e24df5c86779b8be9463f5a79e620f2fc49707275563a6c9710242caca27e1ad9dd2c69e8fce8a766

diff --git a/www-client/firefox/firefox-138.0.4.ebuild 
b/www-client/firefox/firefox-138.0.4.ebuild
new file mode 100644
index 000000000000..e36b6e703867
--- /dev/null
+++ b/www-client/firefox/firefox-138.0.4.ebuild
@@ -0,0 +1,1399 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-138-patches-03.tar.xz"
+FIREFOX_LOONG_PATCHSET="firefox-138-loong-patches-01.tar.xz"
+
+LLVM_COMPAT=( 19 )
+
+# 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_{10..13} )
+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=25.0
+WASI_SDK_LLVM_VER=19
+
+MOZ_ESR=
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+       MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+       # Convert the ebuild version to the upstream Mozilla version
+       MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+       MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+       MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+       # ESR releases have slightly different version numbers
+       MOZ_PV="${MOZ_PV}esr"
+       HOMEPAGE="https://www.mozilla.org/firefox 
https://www.mozilla.org/firefox/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.mozilla.org/firefox";
+       SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info 
llvm-r1 multiprocessing \
+       optfeature pax-utils python-any-r1 readme.gentoo-r1 rust 
toolchain-funcs virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}";
+
+if [[ ${PV} == *_rc* ]] ; then
+       
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}";
+fi
+
+PATCH_URIS=(
+       https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+DESCRIPTION="Firefox Web Browser"
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}
+       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 
sndio selinux"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-jpeg 
+system-libevent"
+IUSE+=" +system-libvpx system-png +system-webp test valgrind wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell jpegxl +jumbo-build openh264 +telemetry 
wasm-sandbox"
+
+# "wasm-sandbox? ( llvm_slot_19 )" - most likely due to wasi-sdk-25.0 being 
llvm-19 based, and
+# llvm/clang-19 turning on reference types for wasm targets. Luckily clang-19 
is already stable in
+# Gentoo so it should be widely adopted already - however, it might be 
possible to workaround
+# the constraint simply by modifying CFLAGS when using clang-17/18. Will need 
to investigate (bmo#1905251)
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( jumbo-build )
+       wasm-sandbox? ( llvm_slot_19 )
+       wayland? ( dbus )
+       wifi? ( dbus )
+"
+
+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.28.0
+       net-libs/nodejs
+       virtual/pkgconfig
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               !X? (
+                       || (
+                               gui-wm/tinywl
+                               <gui-libs/wlroots-0.17.3[tinywl(-)]
+                       )
+                       x11-misc/xkeyboard-config
+               )
+       )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       dev-libs/expat
+       dev-libs/glib:2
+       dev-libs/libffi:=
+       >=dev-libs/nss-3.110
+       >=dev-libs/nspr-4.35
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       media-video/ffmpeg
+       sys-libs/zlib
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-1.0.0:=
+       )
+       system-harfbuzz? (
+               >=media-libs/harfbuzz-2.8.1:0=
+               !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 )
+       )
+       system-icu? ( >=dev-libs/icu-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-png? ( >=media-libs/libpng-1.6.45:0=[apng] )
+       system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+       valgrind? ( dev-debug/valgrind )
+       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"
+
+       # 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-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-nspr \
+               --with-system-nss \
+               --with-system-pixman \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system \
+               --x-includes="${ESYSROOT}/usr/include" \
+               --x-libraries="${ESYSROOT}/usr/$(get_libdir)"
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --enable-update-channel=${update_channel}
+
+       # 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
+       elif use valgrind; then
+               mozconfig_add_options_ac 'valgrind requirement' 
--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-png
+       mozconfig_use_with system-webp
+
+       mozconfig_use_enable dbus
+       mozconfig_use_enable libproxy
+       mozconfig_use_enable valgrind
+
+       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
+
+       ! use jpegxl && mozconfig_add_options_ac '-jpegxl' --disable-jxl
+
+       if [[ ${use_lto} == "yes" ]] ; then
+               if use clang ; then
+                       # Upstream only supports lld or mold when using clang.
+                       if tc-ld-is-mold ; then
+                               # mold expects the -flto line from *FLAGS 
configuration, bgo#923119
+                               append-ldflags "-flto=thin"
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang and USE=lto" --enable-linker=lld
+                       fi
+
+                       mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+               else
+                       # ThinLTO is currently broken, see bmo#1644409.
+                       # mold does not support gcc+lto combination.
+                       mozconfig_add_options_ac '+lto' --enable-lto=full
+                       mozconfig_add_options_ac "linker is set to bfd" 
--enable-linker=bfd
+               fi
+
+       else
+               # Avoid auto-magic on linker
+               if use clang ; then
+                       # lld is upstream's default
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang" --enable-linker=lld
+                       fi
+
+               else
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "linker is set to bfd 
due to USE=-clang" --enable-linker=bfd
+                       fi
+               fi
+       fi
+
+       # PGO was moved outside lto block to allow building pgo without lto.
+       if use pgo ; then
+               mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+               if use clang ; then
+                       # Used in build/pgo/profileserver.py
+                       export LLVM_PROFDATA="llvm-profdata"
+               fi
+       fi
+
+       mozconfig_use_enable debug
+       if use debug ; then
+               mozconfig_add_options_ac '+debug' --disable-optimize
+               mozconfig_add_options_ac '+debug' --enable-jemalloc
+               mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+       else
+               mozconfig_add_options_ac 'Gentoo defaults' 
--disable-real-time-tracing
+
+               if is-flag '-g*' ; then
+                       if use clang ; then
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols=$(get-flag '-g*')
+                       else
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols
+                       fi
+               else
+                       mozconfig_add_options_ac 'Gentoo default' 
--disable-debug-symbols
+               fi
+
+               if is-flag '-O0' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O0
+               elif is-flag '-O4' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O4
+               elif is-flag '-O3' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O3
+               elif is-flag '-O1' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O1
+               elif is-flag '-Os' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-Os
+               else
+                       mozconfig_add_options_ac "Gentoo default" 
--enable-optimize=-O2
+               fi
+       fi
+
+       # Debug flag was handled via configure
+       filter-flags '-g*'
+
+       # Optimization flag was handled via configure
+       filter-flags '-O*'
+
+       # elf-hack
+       # Filter "-z,pack-relative-relocs" and let the build system handle it 
instead.
+       if use amd64 || use x86 ; then
+               filter-flags "-z,pack-relative-relocs"
+
+               if tc-ld-is-mold ; then
+                       # relr-elf-hack is currently broken with mold, 
bgo#916259
+                       mozconfig_add_options_ac 'disable elf-hack with mold 
linker' --disable-elf-hack
+               else
+                       mozconfig_add_options_ac 'relr elf-hack' 
--enable-elf-hack=relr
+               fi
+       elif use loong || use ppc64 || use riscv ; then
+               # '--disable-elf-hack' is not recognized on loong/ppc64/riscv,
+               # see bgo #917049, #930046
+               :;
+       else
+               mozconfig_add_options_ac 'disable elf-hack on non-supported 
arches' --disable-elf-hack
+       fi
+
+       if ! use elibc_glibc; then
+               mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+       fi
+
+       if use valgrind; then
+               mozconfig_add_options_ac 'valgrind requirement' 
--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
+
+       if use valgrind; then
+               sed -i -e 's/--enable-optimize=-O[0-9s]/--enable-optimize="-g 
-O2"/' .mozconfig || die
+       fi
+
+       ./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}"/taskcluster/docker/firefox-flatpak/firefox-symbolic.svg 
firefox-symbolic.svg
+
+       local icon size
+       for icon in "${icon_srcdir}"/default*.png ; do
+               size=${icon%.png}
+               size=${size##*/default}
+
+               if [[ ${size} -eq 48 ]] ; then
+                       newicon "${icon}" ${PN}.png
+               fi
+
+               newicon -s ${size} "${icon}" ${PN}.png
+       done
+
+       # Install menu
+       local app_name="Mozilla ${MOZ_PN^}"
+       local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop"
+       local exec_command="${PN}"
+       local icon="${PN}"
+       local use_wayland="false"
+
+       if [[ -n ${MOZ_ESR} ]] ; then
+               local desktop_filename="${PN}-esr.desktop"
+       else
+               local desktop_filename="${PN}.desktop"
+       fi
+
+       if use wayland ; then
+               use_wayland="true"
+       fi
+
+       cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+       sed -i \
+               -e "s:@NAME@:${app_name}:" \
+               -e "s:@EXEC@:${exec_command}:" \
+               -e "s:@ICON@:${icon}:" \
+               "${WORKDIR}/${PN}.desktop-template" || die
+
+       newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+       rm "${WORKDIR}/${PN}.desktop-template" || die
+
+       if use gnome-shell ; then
+               # Install search provider for Gnome
+               insinto /usr/share/gnome-shell/search-providers/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini
+
+               insinto /usr/share/dbus-1/services/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service
+
+               # Toggle between rapid and esr desktop file names
+               if [[ -n ${MOZ_ESR} ]] ; then
+                       sed -e "s/firefox.desktop/${desktop_filename}/g" \
+                               -i 
"${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini"
 ||
+                                       die "Failed to sed 
org.mozilla.firefox.search-provider.ini file."
+               fi
+
+               # Make the dbus service aware of a previous session, bgo#939196
+               sed -e \
+                       
"s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox 
--dbus-service \/usr\/bin\/firefox/g" \
+                       -i 
"${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" ||
+                               die "Failed to sed 
org.mozilla.firefox.SearchProvider.service dbus file"
+
+               # Update prefs to enable Gnome search provider
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable 
gnome-search-provider via prefs"
+               pref("browser.gnome-search-provider.enabled", true);
+               EOF
+       fi
+
+       # Install wrapper script
+       [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+       newbin "${FILESDIR}/${PN}-r1.sh" ${PN}
+
+       # Update wrapper
+       sed -i \
+               -e "s:@PREFIX@:${EPREFIX}/usr:" \
+               -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+               "${ED}/usr/bin/${PN}" || die
+
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       if ! use gmp-autoupdate ; then
+               elog "USE='-gmp-autoupdate' has disabled the following plugins 
from updating or"
+               elog "installing into new profiles:"
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       elog "\t ${plugin}"
+               done
+               elog
+       fi
+
+       # bug 835078
+       if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+               ewarn "You have nouveau drivers installed in your system and 
'hwaccel' "
+               ewarn "enabled for Firefox. Nouveau / your GPU might not 
support the "
+               ewarn "required EGL, so either disable 'hwaccel' or try the 
workaround "
+               ewarn "explained in https://bugs.gentoo.org/835078#c5 if 
Firefox crashes."
+       fi
+
+       readme.gentoo_print_elog
+
+       optfeature_header "Optional programs for extra features:"
+       optfeature "desktop notifications" x11-libs/libnotify
+       optfeature "fallback mouse cursor theme e.g. on WMs" 
gnome-base/gsettings-desktop-schemas
+       optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal
+       if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+               optfeature "hardware acceleration with NVIDIA cards" 
media-libs/nvidia-vaapi-driver
+       fi
+
+       if ! has_version "sys-libs/glibc"; then
+               elog
+               elog "glibc not found! You won't be able to play DRM content."
+               elog "See Gentoo bug #910309 or upstream bug #1843683."
+               elog
+       fi
+}

Reply via email to