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
+}