commit:     6e71c8fc9ffc73cd4c585018c2ab67a3337e1ae8
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Wed Jul  9 11:00:36 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Wed Jul  9 11:01:04 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6e71c8fc

www-client/firefox: add 140.0.4

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

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

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 528b1d492f71..864ca0278391 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -506,6 +506,107 @@ DIST firefox-140.0.1-xh.xpi 272287 BLAKE2B 
5c4cbccb2b0f8c0ce69f84adb70c24acec731
 DIST firefox-140.0.1-zh-CN.xpi 460048 BLAKE2B 
2d3bc33d7b266a70406c1780c2b9f3ca72733a52adef831dcaff3b04442222e0cb3e7660bf8e196a2789d0fa04a5972cb75e085ec4fc8ecb6fc1f4b84a028e3d
 SHA512 
734fdc9560886ec944f804bb7f1bea786d1444c7e4aa34770fb6897aa8639156edac30af33f7ff4ce3044479d4b0cdf5d69c76d28a0128555f771e931074000d
 DIST firefox-140.0.1-zh-TW.xpi 462993 BLAKE2B 
dabdd791aa484cb9fdb22dc35b670a18211d62227333e742e1607f510167a71210e2268ea9dd184795e6d882cde82a8a510f252094b9e38c02b749336ec6c1b9
 SHA512 
d373466c233da9493f98dacba2af1d3f884fdeb430368123b8098a809b1436ae12f18f5e44868db86f43259b52cd6d693d20a6390a2411adfc763705012b137f
 DIST firefox-140.0.1.source.tar.xz 633875268 BLAKE2B 
5be32e347d2084aca99afa44bb50587b1085c3efb82021a06471dabcf07f18f7bd967aa740b69f2b0ab93bafbaafc13e7eac23c028f899a78217da5c78b07eda
 SHA512 
d521405f49a38b8449a24f90e5ea14d4337085918779d93d282cec80b2627f381648529d6f69930eb6e90e37302797b0049fec5846d25dc40f556bbd86d55ef1
+DIST firefox-140.0.4-ach.xpi 293874 BLAKE2B 
ea354d7067ed049cee3b0f6a67d1fd8df476e721040a7677105fcc89dc9f3a8dd58308ac7d70b7d6cce628f57c116767697d64a750d4c421eb42f2a18076a7df
 SHA512 
3511d1bef3af4f8149e589354c66573d9fa42675818a4871c6a819d5a9ccbbea337d85bb4857c1c28904907c4a17127dfb392dacaf2b6bd04dcaa6c31f9f6577
+DIST firefox-140.0.4-af.xpi 266122 BLAKE2B 
4789d21755a4e98716774ab0c6c78ab080244f113fdcb4fd078da6de759c59f3235dc8026d4f7625a1aec6544c3a1e895dacfa8075a42c93c6411ba26f3e2079
 SHA512 
f7e8793e07b85151dbac030bf939a1f27c39854c81431c764eda143a8c42b56c0fa46b9dd03d67e17e53089ae8049a1718e7c42d313813334d1908668fd8ce6b
+DIST firefox-140.0.4-an.xpi 331814 BLAKE2B 
3c91bdc13c259227204803927a5c8e1ca22b7457073258c81bcfce0082ebbc8b430f6bef91b9009257a4902e5deb345ca295a95a31db8860b0d7cc62c0f2d0fb
 SHA512 
521c74182935767f905a33ef5967d273e278358de0499e8a9234cf037ebeb5d95c5fef05e0b6d5829655fd54abcdb40436dc2385e6fb137401a70efd076f1bba
+DIST firefox-140.0.4-ar.xpi 440811 BLAKE2B 
563c8131a42db2414c8de878f66edc810db48331224f2080652eb2b331d980e325313080dc3260e5a78872663d9b8982ea34805810b01496b0df768257a358f7
 SHA512 
7e0cab4f16f195ac56aa976016a42bfce713cea99dc2abc62b461519c8cb7599d0d6955a4d49faf28c399f70725c245c10309157d77c3916dc808f9814e3b71e
+DIST firefox-140.0.4-ast.xpi 311725 BLAKE2B 
2a89110ecd1e5aaf4e66a3416457b9ca2e64772e18a999ac9d31bcdb77678acae232388d36d56bd7871b87069b9b9dc3127cd5841f26a505c24faa8946e51615
 SHA512 
8d17ee81afd737faa153a82709d9937bb56991fb4b9a4cb1bef066614e5ce902d092ccaf498aea1487a99c4e087f4e58195c982af2b1363562d2bb293cd21434
+DIST firefox-140.0.4-az.xpi 317921 BLAKE2B 
f217974628c671d5d18ab1b910eb09b76645de368f93a4e1f08fc3b63ab8adc9ce3cb3d225ac7372bdaee6b6db254c1c7d47cad4a8ef1fff01a851c3a567873b
 SHA512 
9e0e6aa19b7bd205783e89a2e9987c54c506bcf03f480dd2f5832812df8f9493a4868fc4d20ead0167bd72683cd56542034379d98966820b9b7ad88a87c3abac
+DIST firefox-140.0.4-be.xpi 520286 BLAKE2B 
9785aecfc5b46ae369d93c3ad29bcb6ae41b8467beb8a54882ce2094905eed5ab3cb8ac92c70ad9cc7775761f1ad49a5b667ed7e6eff862a1a87e98f8a5b3c37
 SHA512 
b604c635305ca4ab0fcb78d9a5f9b182ecc5751601bcca39c21ac9e9789bb46c1634c2403955c7d9eca61808b1c1d0f991c560e5f9eed85ccc4df42b5b550d61
+DIST firefox-140.0.4-bg.xpi 448626 BLAKE2B 
701fd4681f17961c5c503dd54beb8391d7da8422fd7cd19456a84c2a2846a2b7460e8980dea8884cf08237facbf13299673156254428b24c0aedea4d911ca2fd
 SHA512 
bddb4bf57f71c1c157aa5bd325b7179cf18a8da47f9d36ceccff966dab50212da7dc572f4e31a4605b56ff887472a60e0e8038d9676c6a2d6fa8b4a4cdc4a713
+DIST firefox-140.0.4-bn.xpi 411547 BLAKE2B 
c9065698767f5117e166dfbc812e546c0197af126a6a0f975bb05d818305d57245dcd5a28eb50eddd893b92122733034774cb2e8dd5dc032c4227e4e9eac4c69
 SHA512 
58d35ae67dc04e140759650894df80835728ac6ccf15596ba1d249ec38d78825ee114419b29e309bc671ae8bb4ed15a5876ec7c803a12988a822f028c3b90bae
+DIST firefox-140.0.4-br.xpi 392875 BLAKE2B 
ec5affdebd56807aa31de85cb87de829d986626f11273f1a19126d25a6097e2fb883e36dd45f57b4d9b51aa09606033a7f68e322d9a2d1fca58fb94b2ad5ecba
 SHA512 
9340a899bcafe9cd52c98b6160aff083ce4b905a47f51615f9e7beb841f400cead4f55eb889dc857a35d9a6bd5020d97087225f87fd62357bd6d2e4ff16645da
+DIST firefox-140.0.4-bs.xpi 385028 BLAKE2B 
4275031e11fa616c467ba6a049c2f3a34c10bf9e779436a2646e84bc9ef532aab01ae12ea2f661d34b5a7ec0b70aa78e2716c8a471d978e99cd0b168bec73208
 SHA512 
02394e088912b9a9563b61b0f8f38726a0fdc27e74d728ba7a10de50d1a9d43bc063e4e18b32fd288a0cde1a05f3bc39ba4b36327679b5642a1d1dfe88140e34
+DIST firefox-140.0.4-ca-valencia.xpi 357400 BLAKE2B 
9766f2fbadcabddfb73946684e81c86ddea6d9270e83abbfe2d983b41c50e3ece6b74cf4a2352139dfe535999f6a66ae2e42ed72fe4dcf329b5c94d04e502536
 SHA512 
c8fa762091c1aa88d10f0d7909f517c864ac82b730b5ecf90c9179276a29cd924513723c02bd02f55bb0a773d658f03395bfb19ed4ef0a0974db6deffb98bfe2
+DIST firefox-140.0.4-ca.xpi 396796 BLAKE2B 
d9d9d94ade4756b7bb6c893dd8b9812d4587dcc24a62385fb22b602674c939d91bcbf2a79dd8e24bf61a87d6c54e2c2d4be472a418076df0cd484f7de748aed6
 SHA512 
6c335e4e560b5b17bc18028a79a5b87c975434c1548c55eac4af4da3cd5233725912099d053fcdce6b194e331bdbc9cdffcb7ddf0b1d5ccb0c502c54debdf339
+DIST firefox-140.0.4-cak.xpi 390350 BLAKE2B 
8343b8d1f173d9bf5f7d2f9c840ee7bfa2bef7f26e0f2a4954149fec031f79d0878102fec5d9109aaade62a1e6ce57bba2b4aff50f5734dbb23498706609beea
 SHA512 
619d05b0858f3e88c926e417f46dca7ba9fbdaf32dbb92ad9bb8cccc0f3541015fd1605fd25a453bd47f107e0feced1ea5eaf5e020576abf104ba7b7583fd4c4
+DIST firefox-140.0.4-cs.xpi 474968 BLAKE2B 
a0af8fca4731dfe588b9102f6f538685b46a27740d37edf7b98ffd040b722f0b87268f905a7dfaef5bfa9ac86f1f5b35db9b2f825fbd3bc5c8d4eab75d307435
 SHA512 
fb1274b5680da70ef09988481cd82000c33e1c776bb053fcbaf3b3c822c8776f9b00757fb455d802e7946e08ae2c926e78d6cefd41621d5587c250c0baa5d30d
+DIST firefox-140.0.4-cy.xpi 441204 BLAKE2B 
8188080e3b744e3a29d4b29f678489e0330887264960ded267099a937079f40cab5666b6efa8ab9777993d0261fc57c8b6d9fcea4a09a9717e45257378c0b55d
 SHA512 
04fc3fd05faa34ef09d9653d2fe3e6b0a3d1799c705ee0c103304d77f1dde3bfc3fdde0691d78ec4dddf9b00661816812172c13ecf326150253d6fbe5f98f659
+DIST firefox-140.0.4-da.xpi 430381 BLAKE2B 
41b178b2617143c03ac233408c1fe89254f1745efd43888a71ad079df697cae3f8180770b3dd404288e832cb11745fd565c3447f2c5a6e702810db4582e50449
 SHA512 
ba9533589ce3adea3e15016b1d5450d251b602e69450a7e927ebc0af1c201e4612270c94b7974a7a4f03e802334db950857f00355fa11a20ad70ec60dccefa9c
+DIST firefox-140.0.4-de.xpi 451863 BLAKE2B 
d9979f84f6d8e8e108fad8a8ed8013667e032c8f7df48ff2bab24fdb1d4d27b52bac1628fbfa9d9b11eaa9634e2b392825873188ee725075c63947c0b85fab1e
 SHA512 
533bb04bbfd25507e27cf1a963632288e6802a4fd5443621910bb4fd8168d57c44ff8dea52f3fd474f2e87fc9c7a6f06aeb0342c4f9f37217b50d9229219e249
+DIST firefox-140.0.4-dsb.xpi 465279 BLAKE2B 
1e766ec54a05c665ccb8111c29c370a8ff088ad0ccf0a54e0f177b26c44f03df3bc25e371507ed3386a6295d73c9198a64e2319ae67e30d55718cb7af4dc330c
 SHA512 
93cc29d485bde355f272cd3cc536d39e3b3782aace36df0a091cd82620f9722dbee68b182a175b9385039d95c46648ba2ff8cafa8b2778dffe7b75f5b19f29f6
+DIST firefox-140.0.4-el.xpi 536135 BLAKE2B 
09c1ba1d847c818d5bc678766892af560796cd2d5256390e8a836f6aa6a0addd3847cd1e62ecfc1ceff32d58df7fa1251be069d1c95a1afad9099d5d0864ccfb
 SHA512 
b286ef7183f60a44f5765ee40c4ca880e723e46525c914e0261b5eff3b157ee793c822c2f97149c28c6cb000840bcf015a44eda1edadb5aa30a7815333552d8d
+DIST firefox-140.0.4-en-CA.xpi 406741 BLAKE2B 
f3c28fd8a18a32f5ec698e52489db21c140fbc927a1a2918e0a2a6b9387e6e1f610faa1f55ce5570bd8c3d9139c7facb08b63d2868158ef4ce4719d4439b34ee
 SHA512 
eb26c8b3c57b84134ac25b16c8383280185f5bd15f00bbd0c2955caa4953839cfe2ec123b915433d492c70200d807aab0fc0fa42b681dd5e38b52668b13d1360
+DIST firefox-140.0.4-en-GB.xpi 410679 BLAKE2B 
54c3cb2003038977ab07669f865e5aa5894c18b762239e4feaad99a3e607d66fb39303888ba24827b8a301129dbf5995a5527c4345bbb7a181b6849fb482ee04
 SHA512 
df88ade8bc55960bd2c1b5fee6ddfa837984ea4055ea30ddbe8e21ef1120dbb0ff56f7c5f25739d5abdea24f149a96b0f92a8bcb7d76c8c3ffb52ae192305793
+DIST firefox-140.0.4-eo.xpi 432749 BLAKE2B 
8d4a846593ae6df8b8568a84af4e1bf0e6c88242f686d520ef2360be319a9c2a0c43a3d60c4db0df21950fb8b8706553b470f82e3b21bf151055d2b5e5a209ed
 SHA512 
e0ce49af463cdcbc7373878302a7c6ca89909f8edc12bcc0226dfb601a0e1a412649906d505def1e53441ecf1fcfed9c94a5de8dfefee4f703aa1ba8b6727c2b
+DIST firefox-140.0.4-es-AR.xpi 444777 BLAKE2B 
3ebb334820246687483effbbfdb6694999be60edb8bd99d685a83912abbb32ae33cd21f3f09c47732468dabdb3acbcbfef3132afadd6197e988b72f453ea1341
 SHA512 
b2a8765b8fc4bd80ef071b7604752305658ab1a7348eec178dfc803fc23b6b6aa294957ba13df2a2b8944ae50e4d5736795f9ce1491b7e87a135e3db9b994c25
+DIST firefox-140.0.4-es-CL.xpi 445536 BLAKE2B 
fbbbec119f23d0a4761eafb181ca4c35fe4e627d0a2e5c1991db59c31751a6e84087911fa1882f2efd2979b11c15d2067c30a439403b0a56cfe8d847eed0908f
 SHA512 
143322dd2f29383f9275bedf869b90ad3541dae6025dc73289fb481cbb1ed323424a4ef40aa7c92f91074d7bce15e087b621fd9789e78bb40ca3e34ea8ae61f4
+DIST firefox-140.0.4-es-ES.xpi 446246 BLAKE2B 
1d7ca346e76a376d74b4e5559fab448423986a46ce304f8a46437aa53c1235b15baa61eadc951067027cefa244ee67e51108d955f482bae2b98509fa902864bd
 SHA512 
3d6fb65ce2a2359c656ca46346b26fdde01d06f0230beed6bdd6729bfe6e913f2b080cba4941e9ca2775d2a1412997d4b13aa575089c68cb297cbeb6a4915ed2
+DIST firefox-140.0.4-es-MX.xpi 436651 BLAKE2B 
7390b3f7606c5598989a9957b9406ef9490936251db51453e7ec21c16db2a416be2bec52db39f5bf594e96bc81fcf0484ace613bb27e219b14d30bd955a7ab6c
 SHA512 
4e5bb883ea0a7681e7eef1bdbe799cd79fdb5059cedbd6d9391b55a0f480e593cde2472379c80c7ceaaac2f28fe8f96384638b13f55422f1da7e2d84cca75888
+DIST firefox-140.0.4-et.xpi 358818 BLAKE2B 
54f7ba918ae78f1c38d6095e9d0309d2cd88b3ed3c8bc397ca0dc23d3a1d7baac0fec27ab8661bd8b9a870a169b7b90627a7a04cb851e3b7fe67107ff7068f24
 SHA512 
a3dfa1b7134f07a343c9750fbdddf92c4394a4887a435826d92acb9637fdb235e2f4797d1cb50753ffb13ee1361526ccbeeb4138d8c67a8a4bb3ed90dab1d914
+DIST firefox-140.0.4-eu.xpi 410461 BLAKE2B 
f289e87a530fe90e5fb73d738ac8ff4e49bef097402d3884cb766cd37bcb68e598736f416cd486e4c8fb45332df69fffb1c0b0997b36fe15b7863bf4c4bcde3e
 SHA512 
f538c4b01b9e85784c346e0f7035c25769210b06f199d0c5b5c95df688a3d0463666d8f4a050b9ad9140f60766a49c699cb74d4eeb8b36222da5fe2038efb541
+DIST firefox-140.0.4-fa.xpi 421028 BLAKE2B 
f460181ccb095e31b844abd4df12eeb14b60acbecbdb7d0e972ad71b8ae7e092dad4a288f74e71e668a94ff43e743f427589c7226197b829d7c770b96e79ed0c
 SHA512 
b9c21908ad839eb1299b6a61b45a87507f9bd02aa2f68cceb40cf2ba82d72e775d2f50041ee440c512dd4acd6d7b05f0caa22a2a1da185f23f9ce080a791fbb7
+DIST firefox-140.0.4-ff.xpi 309689 BLAKE2B 
1b98c7b7686f74b8026c03ccca2bbef39b195c232a56f33aa32883e526ae05215e53c32571c2356b7d8180b933262304bee62d91ed1503536bda3fff0de6842e
 SHA512 
6ab8053a792c88c62e0b561f950b26f8de692845889d9d71165764fc911877c4c90d0a61b1934c73cea051fed2c03cabe9623e3dcf259f4aa7f7833377742abc
+DIST firefox-140.0.4-fi.xpi 428575 BLAKE2B 
0840c3d0324add130c41e169af336cc0c25fef24357116ca32a3a73b3a0616fbcded58848e42fd0c30cb5c7c7337b6e15128f58f037955953c2dd91ced39dd53
 SHA512 
d380eeab37055086bf5471095fd3d9e60a576b856d0fe42d64797445a012eb5d8323dbd336a00c63118c9fbac556e2e558698e46db85d836a86748ede58a5c01
+DIST firefox-140.0.4-fr.xpi 457588 BLAKE2B 
8da043c774dc162038253758aa09da14cc035a7a9d27a6f15fb6125c8a87a641649839462a6e6fd9aceafe2f925cfa18a8105385f46cbc535d8db0c9c97dc741
 SHA512 
a007f0e338df5fd1bef8c2177ed54e30e5e9b6d083ced6216afb5d83fd047ca48819fa94e3bb513cb5cd18b6ee5625a78536f5f0633518235da4ee1cb1890760
+DIST firefox-140.0.4-fur.xpi 451058 BLAKE2B 
90937946a5b6c3367727f4f8c2ae63ee278093b71babb77f5e2279db6ca62c51723641ed005c2ac10ed8b297f46985abddb4bbed115eefe65a191b3eeeaaf879
 SHA512 
c84ee9501e193ea085b77c9eb74215498333df323e06e161bfdce2c57e7e77b317ce269f8fccb878903bfec479e35d25e893240ade63a3fd13b1ed85edc85045
+DIST firefox-140.0.4-fy-NL.xpi 441365 BLAKE2B 
3346d17f9d821f114bb11bd0cd528c1cc52986a8aae0a8ad30dc29028aca0032aa1ae8769e27714ba643d0362011d7f87935f0195dbd2b5b54efdec9b51cfd7d
 SHA512 
5c054352ff57fd59649806a3b9ec66d51bfca5de50e60591d2394566e8567ad30ee1cdd05a619cea91aec1fb0766fa11c47bec697af37c143630f775431e7e0b
+DIST firefox-140.0.4-ga-IE.xpi 314783 BLAKE2B 
8f3e53a6fd8b8ce5681f09ab3aef929f8c5e963b259bb049de72df75fec9323529626ccb5cd8fb06a170f7abab80f0b400abff47b390a6878b34ca0688c97316
 SHA512 
fa3bbf5e1a0f47b03f37f65ed7b5be545e1c5a3fda228d19480c95bb89f08405368d45646b13fe63bfba9b3f962600f4d8fc47eec62010d9bfe94ac5ebf00cd2
+DIST firefox-140.0.4-gd.xpi 398925 BLAKE2B 
b26d321a44c69890203a96bf09bd6de536d0fd6e2dd44e5dfd0e2cd33a4a6e9cc2871c632c7f0e56f53ce62a219f8b2a37c79283f21c6639cb68bed8660e5f22
 SHA512 
047061af1d4b253862102cdecde045a33ad5aad239a5f590d51ea62c307d7c13650e1b41edc2c05f7ea91f886504a44e1ceacb5d82e8637d3290eb619b03ff83
+DIST firefox-140.0.4-gl.xpi 404606 BLAKE2B 
276bd26bef24c6108e546d5e2e18fbd9ab17858623bf2f6a2d5b35850cc6e40fa37c06d810a6a22bcacfbab7b70a810757e16ed996b712475ecacf578f5a3f24
 SHA512 
8d20109d8f4e5b08d58672d306f5358265974ce9b5668309104f14717dc2a3732a115ec48858c708115fec2b7ce82ea8bb22873f9b0bdd0056b0df8c2ec596bf
+DIST firefox-140.0.4-gn.xpi 448655 BLAKE2B 
3e4565b438737a0775f92fd0ae26d451f75491db6ade639ef189bb5fe86e092928bcf67a2db82bb6c84f46a607039ef3fdcb49369445475ca9fc346d2e16f904
 SHA512 
cb8e228f1c516212cdcfd3a3c50b0c27fc82d1d5d9d130622c805ade8f65a80f33d91ef10764e204722714ae03cbc53680df9aa30096bdaf7e20be12549cf8df
+DIST firefox-140.0.4-gu-IN.xpi 358452 BLAKE2B 
902f4dab29edbd91d4ca3b7914f87667e8ab402f68e026115d05e00633b37931825f1e1b8ef689fe3ecedc2399442652820f997cc1d627bc7977fb62ecbcd0e2
 SHA512 
27e4d2bca19d2bfff7c9a8494f4ffd3bd92e9ca2a033cf558e39095346efa748ab4db8fdc63049ece0b261117f612d3015e154cc9cbab3ff386b7c8610a645f2
+DIST firefox-140.0.4-he.xpi 443918 BLAKE2B 
5bb49b499515b03d0502cc3f2a5a3efc44a492b77acbb0cac44a1805a524fd64b0f0d423a5b54f141a37bb3d1a43f428e597196e5f0f19dc710ec5b6dc8c6b53
 SHA512 
b5fdcb54a2e5105cd66f73e06ea513fb3cbf73d5e22eb4812b3cbbfe5db7c31c1ded66f5eda7148c416941f4dbe6df800432700886266adff5ec7692a37f1336
+DIST firefox-140.0.4-hi-IN.xpi 376939 BLAKE2B 
7295faa1d4dbf8d0fa9bbefd4978338f6a45c8e654df2f59b0fa2f359049d211654bd2a99038520b92947523b4a93b5a5f2f4803df3affa03de1b3f7a0a1d2e2
 SHA512 
4240a85e28faed8084e519ea6779d7ed27a404adf7d13e02230471b732375d1a84b568568f165fe0809a87991c82b2c2283eec6088b8fd262f432f448128cd42
+DIST firefox-140.0.4-hr.xpi 433944 BLAKE2B 
a0818182b616f92339328c91705d2a8f4f862dfb4c0c5fbda58a75e6b12d9c2bda5ad3f9541caf07bae9eb041ae6f16823400d80882530f0137e4beb0edb84f1
 SHA512 
2c43e2f8f401a2cf4fe6cd490a432b2ec32191cfaf8d6d6346629d743ae1848c3268244d6b15c28e47cd5cac643b431f07f2d839c52e93dfee809301c8a22142
+DIST firefox-140.0.4-hsb.xpi 461877 BLAKE2B 
70ed2b8391b695eeaeb2afdd28a3e301132b348e41769c42657859290713bcbf3d23fe51172d0fbc1d001dee431d47c0e7a753886a3fc526e634aa825f87e317
 SHA512 
f6c0f66f008c1c4ba2182060d0d77b628300208c46670cc73e215a1d0596ab3dc4b3c967f6cc9c4ae2e4df6eed269af37f4a2ba852e5b846edcee6ffeef9a02b
+DIST firefox-140.0.4-hu.xpi 465365 BLAKE2B 
2a93cf2aa5bd37ef4c9a9453d65be79868270b0fd72e671ce7cb7c25a58ad0cfe33f80b332d9eef1ca467c787c8ca75be455d77e7ff969d05fc2d9237bed6062
 SHA512 
4d4da1a26590cb628e36a84ed2b3a25a6635e221ab56eb684affaf31b5384a93aa87415056c0d287eeaea8122bdd695f9dc9ec70b13b66eee5f6726140b2f190
+DIST firefox-140.0.4-hy-AM.xpi 453985 BLAKE2B 
a9b8fb604a1454e1aaf3053cfafd7e32f7198d9dbf5e1fc8298acb652224f958452e0c9b0af33c8b95d1ea51bc8234a9166b918523b5fa346538f7fc14fe35d4
 SHA512 
daa69746c1230a41fcd8b940b6f20067bb7324ab9d145ecdd093a4918b057ab8ff1aa8adc0678e8cd83b06abc29c9c64a4d9430ac0d9831d9a67c2135e63eefb
+DIST firefox-140.0.4-ia.xpi 429314 BLAKE2B 
e3956914fcd30d0239d65cbd228f528c598b3b09c485bff4f645cdf5e0ee15ebafa13f1bbe76d62c29d5a983b1e099fe88ab19c16a37e56f3421b13fc0a8c02b
 SHA512 
300fc6e4cc18df407c1e74b359b093596aac730888c2adebcfdb55390d55806dabf602efef2a118fbc9c5ba83046de6591aa4832741895245e26cc06135301fb
+DIST firefox-140.0.4-id.xpi 418228 BLAKE2B 
543439e77297daf076cef0ac3c020d01b0b47963cf3e90bef338e263b5886835e74ffc7e9af251f2a2a6a2d77ca1a90092755a7f360b7bf764e80d2430d42a5a
 SHA512 
3d21054ff5c11b657eef0ace14db53eb7820b3881389fe9c97450b2655910a8fb570cacede44ffe60eca7f40dac33c8e8fa259a26c873393d9347cb4f267a0a0
+DIST firefox-140.0.4-is.xpi 430703 BLAKE2B 
3c3462e108378944a7234f5208a33113a729aac69ab49d9f4bea749f1c3766de59a646c9aed91a5da643ca4bd2ebc4ab3ec75f6f75681bcbde4f4f51025f3339
 SHA512 
7641e1aef0271b4158ebca7a1f5bbc61988f7cd1c73df69de3c4508ff18e8bb2cea09355d53251290df3f1ad15415513e1c657b515e7e2841a00cb09e5763cbb
+DIST firefox-140.0.4-it.xpi 440145 BLAKE2B 
51540f3a5cc0f70c7fb05e0fb8d2a62751d3aa32196b7352bfb106e647dfbc17dfa45951eb60c39b7098de28dd6df15d656041ee5742d0ef625646f1210a1956
 SHA512 
dfa3c09729c6808fcc56fa8aa6cf3214c99d108bd91e2b88aec1f19422d5a6cb531a85d8b2be991f7cfd7fac0e480e73dda8246851fd7a018ca4d3498e189a54
+DIST firefox-140.0.4-ja.xpi 480526 BLAKE2B 
54e1f8a29ce59f00f069513d8525ba0accaaf4f02159098236a331bf848e1422b06c9fd770185ba7d1e3d1a1b06f96736fc1103a4467da0a0333d6e57624d58a
 SHA512 
9b680c879dd8e7143db2d6bfdabf98e55fbeb033ae7640fd8121cde78e16afa29e998ce58c965283e00b3f0736ed06069910cc834327f038807dc9b396efd8c1
+DIST firefox-140.0.4-ka.xpi 493887 BLAKE2B 
cf81e8079dc91e3d11f7fe1d834a5b25a4323ecb854b1b1c40372ca942e2143c46f20f31d3562c1711c3bfe60770436a6a0586155910c9c1df753cd92de75577
 SHA512 
4feefde5016bd85e3ade12a9efee0fad77ed71dc0aec73f877b048648dd0b4deede33295ee906a96453234b638b3b43989f58f220ab72c263c50853368b834c0
+DIST firefox-140.0.4-kab.xpi 419763 BLAKE2B 
5b6aee6afc4a97170da5fb726d52d3efb5f52900ed1af397f118fda3ee9aa477b9016d702c937553929cb2b521a785a73b1e86d043cd7795ff457c740b6520ba
 SHA512 
521d796fd52759db4c5afd966089d82dec6ec5aac2d42875bd60c385b2ddef0695ef5c981aef0b1da1ebb032e4d00209a0c21232ff99958aea3de2bbb13c9dbe
+DIST firefox-140.0.4-kk.xpi 500399 BLAKE2B 
5ca7aadc46c575e83ab362fce1091cf530496da8112106f935273385c7a121d62fcae2c82b350443646310fe29dcf16200f8cfdc4ef93213874091f552af8bf7
 SHA512 
ae5ba6418fe04a2267ff13fe68fdb8bcd403b30c82a9a6bf741be20e99d252cd1175eea94a6e9a87d85247dd0b0d081e4178b1855a35aba9828a8afcd08c3c9a
+DIST firefox-140.0.4-km.xpi 348186 BLAKE2B 
a314d199f11420a88c280a9540b1f9165f73a39d3ba8a525bac8a1efbf926bdde07d5639b9c044d8961e375e8345f8c16df8c457f1885629fe5eeab1e2f1ae33
 SHA512 
6bfc35c2764fc1aa49d95790b3d7368c1e54629abf245f3fc9b47ef957e99d459ff75eda648bc4a9e7df3c8c5e417cdb2d1a8e21d9293f617da21a52fbf7202c
+DIST firefox-140.0.4-kn.xpi 331272 BLAKE2B 
d15667c14d89c23617aca79d5043016ff6edda7a9d5ee1f945de4a436220a59ac8a40a2e7cc1bcdbe258a63c32e6b819656475ce680dddc4462477cbbd376cd3
 SHA512 
d30f51d5d3711218c8374cb9d3e3c02a57933f0e70649b4b4a2e332d7ca578e43146d165b431c48bec0ac318b81cb5c63bcc4bb085db4492d4166ebe27f33677
+DIST firefox-140.0.4-ko.xpi 466755 BLAKE2B 
87bd0f8befc42030c0f29aec394e14f1ef1c5c4c51fb7e36d9e113fc26345add67c14d657903cb74d777623fd9a2d9e4732b390b0be7b6ec9792087bb2f67326
 SHA512 
a9c6651490592036215bf5d8113ff838f1cb0fd3865baac9fb09f3cba1b9386aca67e7ebff70d63643c57ac0364bcab749350426f36b2d85611a241d3a76724e
+DIST firefox-140.0.4-lij.xpi 318009 BLAKE2B 
59e2b783fb277c01798dc7660a91cac050d8048f13e8173fbaf471c03280fd75813ddac9cefb59877a6abd5372b2361ef23119d4cc90c8012cc5916a5af980bc
 SHA512 
cd3bed1c7cce8b1e880fc99c5a2a804f91926ff426c0c44a7a1f951c8467823b07f90443a391241abd309fbf71585c58656d1dcb82ef6249ec4cd2ef3287cdc4
+DIST firefox-140.0.4-lt.xpi 379454 BLAKE2B 
025ff3e6356c3c8b29cf358d28c301dfcc1f50f3d586836a0519268b855235324abfbcf99492270a1fe297a5059aa9ec40dbf563a80240239004c0f2ab537b24
 SHA512 
0e51d5b13730a6efd049be7685fcc2f2c4cad21f72a704adc8fa5494f31df899809822571c5810712dd42864846c8186d41b4f905e843d4a7b60876a17551486
+DIST firefox-140.0.4-lv.xpi 384042 BLAKE2B 
3f8ab55280c9a405a179186bfd1878302d3227937af16f24bc3dfbf4a170de995f6f846e7dbc704aaa12bf055a3dae255e560e5a3f1662fa34b9c425a75c4e84
 SHA512 
52488514ccd11e0352b6284d9877003cf6d9372503f0883c8345711cfe2a77169a79baf2cb786076362b84a0be4680f3d56e82371909ed06582fb3de66c5e14f
+DIST firefox-140.0.4-mk.xpi 316308 BLAKE2B 
f18e31167c923fc5141883bef661111ec39077311ed7b0cbb116514551e0d450f3cd87e79e8566e635383300a490b7af84b6b3c229529e101863a34a381e64ec
 SHA512 
8dce5a039926ef9002127a6e4a993cc3ab14dba382f6682cf4371910f1838defc3c1817aa53fa21b66093defa3a0035147bf06d9a933b8a60d54c074f381d1f3
+DIST firefox-140.0.4-mr.xpi 355739 BLAKE2B 
d5dcea1b23e427ded0c36edcf0d068433daca92274c11c4ed1d2bb9adcc8127462b02d7e121100c712afd09b6c357345d08e07914109a89090f0145cef71bf52
 SHA512 
6e2b44f02f85edd40730b0984c667b64e1fe58113ae86e61b5af257ddbd98b45f60b540ebe4f7ab1a177cd214bd4d102c028dca3361b2efa22eb08496a27ccb6
+DIST firefox-140.0.4-ms.xpi 294876 BLAKE2B 
13651bd47f27d31e2357ef9f39c068a0cf01c60beb1eccca0ab5254d6ba55cb3d68a8ba93a159ad8e879877a466078b5f1dbe0ee7de9f675dcb4e386f006d631
 SHA512 
e597cfd9fe1867e31ae87f83ef51b7cbc2e4bcc64ad702402245bc49e4c5b62c3c506a6254246fd8a0107efa44b1e5b69a0252ca9ecb4674f6f52eb2a405b114
+DIST firefox-140.0.4-my.xpi 342540 BLAKE2B 
774e20f479ce45d42deeb96f054edf36052c7f0cd7caf9e0cb82d406c2270fe2ce3c2c4d656e85780e6cf0db7af02c1b3947b9056ad770aa9608bfd88582ce98
 SHA512 
6347fcb5c56c78ff64b867668fe849d7655237500154757f370837ab9f7aa527ee7d72656568b4bd78c406e0451e617b23c50c70a83c932ac2508f13d97290ba
+DIST firefox-140.0.4-nb-NO.xpi 423615 BLAKE2B 
dfc4c7ec3d8b6e58c9cadee2379c3f6d030092c9c3daae6a52f209bd4be9e91ee6f456417df2ac0c59aa44c9cf513c79dc23ebcca3fc6ad96f765b5ceb84ad17
 SHA512 
ca07964b591595623771536fd83de26c70b9bf010b03a9792aca2ffaef66200a26b6c875230d1921be74943ab7097d1eb12b31ae4e9758a777923f835a9479a1
+DIST firefox-140.0.4-ne-NP.xpi 348482 BLAKE2B 
f4d53a4769373427381522bcf213d560c55fca79899b057b5857e0efaef68bcf644908dc1c51b7688a02f7044f2d72a18ca4bbd88c3b72094ab66f10a01b8464
 SHA512 
b58a803fdfec5e3e5966a7d9a68061deb51a71add3bee4cf0746c99862ebd29864dcb636d75561f1cb80a290fa0670349c37e5d04ed830c5ff18c08e2e0660fb
+DIST firefox-140.0.4-nl.xpi 435435 BLAKE2B 
c4ca3cbe3db1a28670939a395473a55c794e616872b080d260a610154859b4900ec6165c5a4feafe94c499ae96b8be4383bde8e219d68e8c292105a98118ecc6
 SHA512 
6dd3fca1ea3d572c04d49b77ef239ac57a28c837634741ee6772883f4e648d2760d49b1202ae13d19dca4e8736ddfb5bc81741bc10b5864bd9fa70fcbf1d583b
+DIST firefox-140.0.4-nn-NO.xpi 427003 BLAKE2B 
fca04f9b714a9d220dd9362025de1c1ffaf4b9b4dd2760f769a1f66d0a801836734808c97f09e8275e50fd24d8cc50759a9cea03eacd123b976159297f6d6ffe
 SHA512 
194be6e50a0761df53f708be5b9f71a66bbe2dfe7fe96d6170831e4179f763c1747367d0186914cad04a13ec2f22d3b10f4c61372d1b3e2f78ee2c68f5adb525
+DIST firefox-140.0.4-oc.xpi 410441 BLAKE2B 
732d8ead6841146084b4379a3db92f72bbdf118688275247daec03d3ed6b08f5d5520ae5381847684439fa5255f062bf3ecccb2f09613677e8a25e58f9b284c1
 SHA512 
e5f1c13fcc5b98c5dbda9a0d45bb28301b1841f6f11deda0e98682f08cc27b427b2f8c75dae474ffa2a38ac1931a9037da89961fcafe9f55d2a7d9758628a366
+DIST firefox-140.0.4-pa-IN.xpi 491026 BLAKE2B 
4be2ab139ee0b0d2deb6347de79aae247a7a6a2c4e57d55162e9ad73f920975ec6c706f51f5b8186f111b6b487b95f69a188711793184dd503640dd32e98c9e2
 SHA512 
598811a52a3b0bb7e841bcad502d0b77e3373668d4073d2981b994cb3c34f7d5355ffd7bf92bc38bbb55d399f3d97c377d8fa36e305428118edab179ca5d1738
+DIST firefox-140.0.4-pl.xpi 459747 BLAKE2B 
a5d287fff58184560a0a7291e8cea0bf0dfa14e5bb5c8b9745a8355bf0f2590e5db85c2b4e2f390aacb8d9c3c521eedd5460fcc6b2db0e3ef58b1b15d1804d5e
 SHA512 
c404c3b5a92ed273bda2e09527c4e094e60c4cc5babb0dbe5f5c46a2427aa3ece54acef095f0279068b40b0562538752e2becf796b97fccc5fc90c56f585eea3
+DIST firefox-140.0.4-pt-BR.xpi 439983 BLAKE2B 
f4f9f8e9775594a9ce42c3783c93331c663039a8141ea01e941bd2eee0cb19e3093618850b16129d5e1a25c73e3d2fa4dd3da86bb59b5d7e801f0423c5576a0d
 SHA512 
3bce89879bff52d256138fde07c62978bc18a227e8daaaa858a4e6ab4782f40fcc63ec1a630dd6329284d675c7c27cf32653414263432bd97640b1a5a83256a7
+DIST firefox-140.0.4-pt-PT.xpi 445781 BLAKE2B 
d1fb8ef1f685b1453f1b1779355918d97eabbafb69a047b566ea72a01bfabbf25dfbcc2615a1ca638c163f7fc818affa63ec8addb2d94b438fc613da59894c60
 SHA512 
7281558459074db67b7a1509487090c098801efbfa02ddf35ba308019d7831250e96c253a7cb968e8d9d8e522ec2d498bbb41047adb3e9acf71ac16cd2abe4ff
+DIST firefox-140.0.4-rm.xpi 435126 BLAKE2B 
9e0dad1b447d3b4ad60c1787588b081136a2499434037ac9c96a818a04ce49724dde01cf30956fab7b91a36983eb44d5efd54ed0e00769a7cd483a4df5233fb1
 SHA512 
38bcf27da9c8c3f83ac0cc4a2d315bb02873fb4cc219e872dc528e6de4ef558574898639b2ae6d093423e629f45b1b9bce0e0ee2d00969c22abd82498ec1da31
+DIST firefox-140.0.4-ro.xpi 365392 BLAKE2B 
ea2b2ee7b5c72bfd55f5df7a3a6876da92cdafb0c4a75180759982d4b3dadc41e904a3f59c88e6d8de41ec086bbc19bd3e730688c5790c5b08f913bb8f349578
 SHA512 
54c0c55a022a63afb8da5d39e29fd17333078c2b85598db876224b0bb38609caba1a3cbe5c51542b6c924642b46609fe1ae4fa77f32379b83a7b3089cb6a0604
+DIST firefox-140.0.4-ru.xpi 524302 BLAKE2B 
6f1f7bc5ac4a179f0651a7b91c8e060e5d161bfea580f4d637dbfb90282bf19874e5976be4abcaf94660bffacdb296e40afc84d38a8f0e71a4522a7b21f67404
 SHA512 
e90a384660f090f33c3e8fb0d03299252ee6f343d0bb67b798b84ec577b586eabfa9d7a7af82036aa21a4a015d00e1081f32d263e32c7798ad91162ae0c77fb7
+DIST firefox-140.0.4-sc.xpi 401431 BLAKE2B 
c51fcdcacac3dce54d491ebba42a65500f86d159a10c7ced4367485b6db6f29128aa3a63478ce9e6c3b48705d7d9c8347269af3af5e825ec710763f6c170bae3
 SHA512 
f3f0f60c1c1e08fd008aae62cb14275fee7d4b4afe81665e8f01d209988e116b9f4b52743fa13c4942e3fda63cd3659dd9b6ececb76fd63068184e07123ba6b0
+DIST firefox-140.0.4-sco.xpi 322160 BLAKE2B 
40a577685a573943b6b99e82bd5e454428a25244daed0711981244bd0ce0103f3332a065513424bb91eeac4d2659e8397b49969a58f85c1b690b64a906a74c8e
 SHA512 
da03b16559a0cdf63663c35cdb476dbe22931f3b57dc0fa88efe1f11c6d660aec7ba1026dda4d253720cf95e1f1098c4d4debaad4b0d31f8bd1f8edcb83efafa
+DIST firefox-140.0.4-si.xpi 411045 BLAKE2B 
e6919c491304d6deda2866342e982efba0cfb66c37ffd7bedc59470c5b34dc2913c1e2c36f9595e04ae34be7c84429ff82a94729a68bcb1f10e5be7e66c01f35
 SHA512 
1e937fa044aebe682a2282bbe9f77ed0a445715f4af2aa45a46d079f31e676ec9defb88fdd8a77041bd776790a5e4745e94abc2e981a0393f2c42af5bfa5717f
+DIST firefox-140.0.4-sk.xpi 467202 BLAKE2B 
071882b5d1ee3a172aa8cbc1bb8f73cdb4e66f330af103550f831bbe1db1d66e174f0fb2f03440909f0c03d8252bddc769b27d0dec362bb12a030a6e9c8b2491
 SHA512 
de4c47a27a836fb792a771128945d0fabe25be4318b4a8295a57f0db25ee4e40f20ea0231f60c943bb7d7fdd6cec641bb6da28669ea6eee084a4ea8b95ae6a39
+DIST firefox-140.0.4-skr.xpi 485335 BLAKE2B 
b68dc97bbc831851625ab28539bafb9c77e5c9dd81f29458002fccdf2e1ee6e99a1d4d2f3f5b7eb04906fc2c100a220bd554f5f34c58f728bfcc277887dc502c
 SHA512 
5407d288f6a79649e40f8433693525734ae4e9fbab6fa1cf61cff227ae2d3e061fa8e95787513c3a8e15a38182eed623fa790dc69e537c83edef4aa3ea3b9a98
+DIST firefox-140.0.4-sl.xpi 440266 BLAKE2B 
7782c00e0c57b70f7b712615ffb71b310e0e8b7601e92c1a1ad18a04bb52c193672de4e648dac0fd7f1c1381cbbe67548c774e3d2578043405386b7bc8e3f392
 SHA512 
4c8327cd88015d03b9b220984fef925d9cae303b2c4e84187dd59c310d5676e7d5e6936586b815949fd6ae4a504aaf62f4d0eea452f819528f73b8f9b7ecd31c
+DIST firefox-140.0.4-son.xpi 272631 BLAKE2B 
9ce7f545338e5ffb06ddcf8be7901609d7834c5b7428408b9ba2e1fae33afb4c4555df60c8e940943c159e808be411753761fae263fe74599c85d420caf14d3a
 SHA512 
8cfaf90ac0383ae54d68ff484eb0d1ab86609cf30910667a9af3db4ad4fa974ded5dd61effeb8b9d3f21f25883ada960be08b7a2397d5e772facb1fd6a843d93
+DIST firefox-140.0.4-sq.xpi 452604 BLAKE2B 
34675601957362199ffd357089d85b73c33cbd6f13360e43baca361796f691bd3b7c03e485f2a31bff06d700228c10eb066cea1b0699b4cd4a5674eb6695b72d
 SHA512 
88fcfa4631c651cdbf53a2adfb4fa08fb425c32730807a3dd4ca6d482ab76a20a767bbaa6b34511660cc2ecc11ecf3843f9511d7788bdc866325b3a14f2e1afd
+DIST firefox-140.0.4-sr.xpi 449692 BLAKE2B 
f002475c7841ec18ee6e31752beb7dd0e27acfb283924a225585af39d0f34bfbd85577007f975bd75f0289a26ba07ec31ee351e10fd71e8a9e9a08d2c7f05458
 SHA512 
3b64522534c0252bf3ad002cda626d3ca83def54b29c149b584599db9b00501eddd782e66743009998c6b457676878f7e967e335cfeb4cc7c93f5bca67685c0b
+DIST firefox-140.0.4-sv-SE.xpi 435394 BLAKE2B 
d642a3283482a84340e203a7658e22b5d7891a728554640be39995d22d4a5b0213741ddf8c3453079c602da7ba0a6e55489eba80418b34c1d64f68902d973379
 SHA512 
37bca5fc3698d9926de717223add76db59c52fca274482b843e857db1df1dab6285b993251062a73480238a2179ab0580b1e9d7f9541da5456fdc50ab14123ab
+DIST firefox-140.0.4-szl.xpi 341193 BLAKE2B 
b5370c2c38fc793c391336703d0070c53055922ac58bfd1506af2428f5e4ffcf02139ae53670dd3e231211697943f49caa94c5e7017ee26dd705e6803492de2b
 SHA512 
123977c35058b3eec3c9f18dc6aad472a72521b4f7b90321a8cd66c68f17df0e21298bb46ccf7381eaa92439e8809c5501453d0a6e58e8c87631d44cae1ab9d4
+DIST firefox-140.0.4-ta.xpi 337497 BLAKE2B 
8f2e587989d38cc397cd2ffeb08d58e429392e244624d9a1a13f393073a39a64b9c93502920b378ef0ce2e83c30bd4e9e5de3a268913c8f79714472697130a7b
 SHA512 
a6c2bc9d4d53cb2dfa564857e5b51bd4dc81ed40294f0301378990520d2b1cad203f662ec3d5669bd967afef7426968adeb7da3458e2f4e8ef381fbfa8a726fb
+DIST firefox-140.0.4-te.xpi 381679 BLAKE2B 
934eddc5024a22849d5b19b454d1a30386c6aee89b8cb9a8a36a15efd033bc97f43ce55af8130b1637a17b2837c2684834d500f68c216d0c79409adf754658c2
 SHA512 
a24be76eb54ef625c239bce1fdedd39d96e641856ea414013b17949c9eca205fd06a37767e00a040bc69f215874d499ab0d22c5055cc63ae5dcc4c99471aeddc
+DIST firefox-140.0.4-th.xpi 502947 BLAKE2B 
2a206e52791d86a4ab436c38f25548349fd2b5cfff144dd643b02eb682f3e4c3e0a0b667e56dcf4d24a3f3e19280e15f55eb823a9ff9789455a5f5c2e22155bb
 SHA512 
d68bdb80fba870c1c97f5950cb4c3619de5813252752666d84c055cde24c2486f7f5ede8ee0cd82e411fa97442e846955e5ab7b2956e9734cdd95a76c7776fb8
+DIST firefox-140.0.4-tl.xpi 356152 BLAKE2B 
557ba8db8a4e000fb3164253901959b1a18f366b9c7597c285c9cacfcd4f81d51e9b31d441e61e65a3a64e3a13fb443122a14de2799ea8643c03cb91c0e9a799
 SHA512 
91ec7782dca54489f9b42fa21c1580c3361b8fa12ce2d9468abe1db617eb635b7956d1d6a879adf090be1c4c07042b1d14a61d200b3d67f499af152bc1a0cfb1
+DIST firefox-140.0.4-tr.xpi 447904 BLAKE2B 
d69d825a351f8fd8616c4debf86b7840e3c3b2068e065b6d4b05c828d08a08e4735f9f1f6424114fc04a53df27c7c5f6eab80bfead70e856a4c2f9cc1c33644d
 SHA512 
187aafe24b4bc74281cd3d0846c2f0f0dd3d1d05eb43b55b32cd22e5e8108788c30fca08cc62109c980a65af436acc8c0067122105c55010938402eb4d0a1ed8
+DIST firefox-140.0.4-trs.xpi 322007 BLAKE2B 
eda1fd6efbf6e1e7660be9c2920c198b2752b45b3177a6dae24d4ddae29b59711ed1362f3d6315ad3bc241edd25e8b59ad76aff64bf51deb85b700cef929bf76
 SHA512 
93b2e70231c445bf0f545ca9ea9d0f7b5ecee71fe53dcb003bcd55e25217aaaa09d733a0732e9b9c9b18ac386a9650a4fbd60a94d85b52fa53decbf005685215
+DIST firefox-140.0.4-uk.xpi 513996 BLAKE2B 
d2e1e6c47bca680067cccdd91c564a43376fa99c141dea3d229cc5102fcc7aae3584d3347fe1f6b05ee48903b9cbc8acb0290d5adf3c06a9f0e937914ed5f7f8
 SHA512 
4a56f02e244ecc5bdfaac9f0e16349c5f1f761bd1de9a63df7d7cf86d9ebb558ec371497147fc1b5d5d95e546a6e182cc76c98cd19009a549aa9504b79371d04
+DIST firefox-140.0.4-ur.xpi 369642 BLAKE2B 
9dd966a7f70d7f86a683f3a9152765c61ff5f3e96c32a0f81beb7a20268a80c122df6bda5194e4957950b8ee7c9f92126000d9e5d36e1fc653f771bb510e2a3a
 SHA512 
bef3f96435fc2d3ef655a6b43defb99df14914ef98ab5a70fd755852d0d97c7e614f144d097c5dbca36e1d34343273d6ee715aa3898bd74a93a60f314e36a7cb
+DIST firefox-140.0.4-uz.xpi 302983 BLAKE2B 
ae2bf13e781b77148b5cf238ad0f2006bb58cc23b28169a9080a6f9e1b31aafca0922857453285b7b48040d995dcdf1bc7721f531fad27a64cce9e0603da04f5
 SHA512 
0affbd1c2608812af027e732b19fb31314b8bb0560c5c1679a32458d3aa59cf543d7599c9869424b220fb39652574327e7957e9eb1fee3796f8395d46c3e5ac7
+DIST firefox-140.0.4-vi.xpi 468224 BLAKE2B 
adad906bd0fdd4c17bad1a645c41035c39ac8525693b62e2880898e17961a786010f88c682d559d596456496ba87359c334be7566ee38e193a5af08e7e2b4a24
 SHA512 
2b395105f9bb8f724ebe7e48f291fbe7ca0b8c2b6d5e2628ab37ffb7b9540280b39c62eac6f4a33519a421bbf5da7bdf791a4f31ac08a1b61d51474bf4d000cf
+DIST firefox-140.0.4-xh.xpi 272298 BLAKE2B 
d46fef696d4c4844dfc2e056f0013c632133f64f63b371437d2c32ff30c839da2ef7083e7e03acd0b5fef398e6106c908214feabc955bdb30e06e317ec193b53
 SHA512 
756167fc0b33830ea8f491c85dc6227935a0afbb134f177ff18f761010e1be2b4803c3127db3cf0dd38cff3dfcfdf501784f67031f01213ab273f011f637d347
+DIST firefox-140.0.4-zh-CN.xpi 460037 BLAKE2B 
ba60349550da85791de7b52b822a7de35be7ae6e53d380c1c824f1d6f45f11a19d34cce74b69ecba51ef44e899b07562b7b8d6edd2752d0920ac5bd4a186d857
 SHA512 
73dfde1d2fe030a659149b89482b88cec3a9203d1db43fb667a3cca840280bdffe7a672ba7dd11cc93d259f7f29f4c6ec1f816e610236c573ba6ebce479f3828
+DIST firefox-140.0.4-zh-TW.xpi 462993 BLAKE2B 
ec676369121967ca711921b9b7c90448df1398f44b401c311c2107217d5d6a1fe5a6cf5b3a584bbcae5bb421dba1ded1f7ff40746d290726d5bf2ad595f0d54d
 SHA512 
31f4a7377548cd3c4f6e8aa3dc6b0ecd6fd35dcd72f7899531eed367462ffb88a793b32f229851748303bb9b851e470b5a745243c3162f1994237ebeabc9c761
+DIST firefox-140.0.4.source.tar.xz 642671864 BLAKE2B 
7cdcf5ff710860c1e0e2c7fb8e1ceebbe4211dfcb847b4f2e547eebf991214e00a8306452fa30899b7b731f1c89cd7af1efc005203871fc59e4bb597822b3b24
 SHA512 
3de7c0871b8a45683f5c226fb3e91e597e8f89ef154b208b2a57c4d3ea9f39cb5c69ecbd5eca3b6da68d3775688d2289c1360c7d110c67bb1be1cf26ef8cf36d
 DIST firefox-140.0.source.tar.xz 639951312 BLAKE2B 
588d290e3ff70e47a0235ff8abe22c17a76c28389ff9bcbbfaf05efa9fc37ec29a5f64c2fb736f270f8b0c0467c0ce7ba1b5c7f186c86ba1528a4d362ff1c2d4
 SHA512 
ef209827a422bab443e2b6fc59ac16f0ad99293b3c8f10a978f222ac8da5ff568b2fadfb97784feeafa4a24883d44ea2f34b47b2bb19863a27e00d2d787b8ad3
 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-140.0.4.ebuild 
b/www-client/firefox/firefox-140.0.4.ebuild
new file mode 100644
index 000000000000..3a8f1f226e39
--- /dev/null
+++ b/www-client/firefox/firefox-140.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-139-patches-03.tar.xz"
+FIREFOX_LOONG_PATCHSET="firefox-139-loong-patches-02.tar.xz"
+
+LLVM_COMPAT=( 19 20 )
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.82.0
+
+PYTHON_COMPAT=( python3_{11..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 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-pipewire system-png +system-webp test valgrind 
wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell jpegxl +jumbo-build openh264 +telemetry 
wasm-sandbox"
+
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( jumbo-build )
+       wayland? ( dbus )
+       wifi? ( dbus )
+"
+
+RESTRICT="!test? ( test )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+       selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+       $(llvm_gen_dep '
+               llvm-core/clang:${LLVM_SLOT}
+               llvm-core/llvm:${LLVM_SLOT}
+               clang? (
+                       llvm-core/lld:${LLVM_SLOT}
+                       pgo? ( 
llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[profile] )
+               )
+               wasm-sandbox? ( llvm-core/lld:${LLVM_SLOT} )
+       ')
+       app-alternatives/awk
+       app-arch/unzip
+       app-arch/zip
+       >=dev-util/cbindgen-0.27.0
+       net-libs/nodejs
+       virtual/pkgconfig
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               !X? (
+                       || (
+                               gui-wm/tinywl
+                               <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.112
+       >=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/libdrm
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-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-pipewire? ( media-video/pipewire:= )
+       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-packed-relative-relocs \
+               --enable-release \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-ffi \
+               --with-system-gbm \
+               --with-system-libdrm \
+               --with-system-nspr \
+               --with-system-nss \
+               --with-system-pixman \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --enable-update-channel=${update_channel}
+
+       # Whitelist to allow unkeyworded arches to build with 
"--disable-rust-simd" by default.
+       if use amd64 || use arm64 || use ppc64 || use loong || use riscv ; then
+               mozconfig_add_options_ac '' --enable-rust-simd
+       fi
+
+       # For future keywording: This is currently (97.0) only supported on:
+       # amd64, arm, arm64 & x86.
+       # Might want to flip the logic around if Firefox is to support more 
arches.
+       # bug 833001, bug 903411#c8
+       if use loong || use ppc64 || use riscv; then
+               mozconfig_add_options_ac '' --disable-sandbox
+       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-pipewire
+       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}"/browser/installer/linux/app/flatpak/files/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg
 firefox-symbolic.svg
+       dosym -r /usr/share/icons/hicolor/symbolic/apps/firefox-symbolic.svg 
/usr/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg
+
+       local icon size
+       for icon in "${icon_srcdir}"/default*.png ; do
+               size=${icon%.png}
+               size=${size##*/default}
+
+               if [[ ${size} -eq 48 ]] ; then
+                       newicon "${icon}" ${PN}.png
+               fi
+
+               newicon -s ${size} "${icon}" ${PN}.png
+       done
+
+       # Install menu
+       local app_name="Mozilla ${MOZ_PN^}"
+       local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop"
+       local exec_command="${PN}"
+       local icon="${PN}"
+       local use_wayland="false"
+
+       if [[ -n ${MOZ_ESR} ]] ; then
+               local desktop_filename="${PN}-esr.desktop"
+       else
+               local desktop_filename="${PN}.desktop"
+       fi
+
+       if use wayland ; then
+               use_wayland="true"
+       fi
+
+       cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+       sed -i \
+               -e "s:@NAME@:${app_name}:" \
+               -e "s:@EXEC@:${exec_command}:" \
+               -e "s:@ICON@:${icon}:" \
+               "${WORKDIR}/${PN}.desktop-template" || die
+
+       newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+       rm "${WORKDIR}/${PN}.desktop-template" || die
+
+       if use gnome-shell ; then
+               # Install search provider for Gnome
+               insinto /usr/share/gnome-shell/search-providers/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini
+
+               insinto /usr/share/dbus-1/services/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service
+
+               # Toggle between rapid and esr desktop file names
+               if [[ -n ${MOZ_ESR} ]] ; then
+                       sed -e "s/firefox.desktop/${desktop_filename}/g" \
+                               -i 
"${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini"
 ||
+                                       die "Failed to sed 
org.mozilla.firefox.search-provider.ini file."
+               fi
+
+               # Make the dbus service aware of a previous session, bgo#939196
+               sed -e \
+                       
"s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox 
--dbus-service \/usr\/bin\/firefox/g" \
+                       -i 
"${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" ||
+                               die "Failed to sed 
org.mozilla.firefox.SearchProvider.service dbus file"
+
+               # Update prefs to enable Gnome search provider
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable 
gnome-search-provider via prefs"
+               pref("browser.gnome-search-provider.enabled", true);
+               EOF
+       fi
+
+       # Install wrapper script
+       [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+       newbin "${FILESDIR}/${PN}-r1.sh" ${PN}
+
+       # Update wrapper
+       sed -i \
+               -e "s:@PREFIX@:${EPREFIX}/usr:" \
+               -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+               "${ED}/usr/bin/${PN}" || die
+
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       if ! use gmp-autoupdate ; then
+               elog "USE='-gmp-autoupdate' has disabled the following plugins 
from updating or"
+               elog "installing into new profiles:"
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       elog "\t ${plugin}"
+               done
+               elog
+       fi
+
+       # bug 835078
+       if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+               ewarn "You have nouveau drivers installed in your system and 
'hwaccel' "
+               ewarn "enabled for Firefox. Nouveau / your GPU might not 
support the "
+               ewarn "required EGL, so either disable 'hwaccel' or try the 
workaround "
+               ewarn "explained in https://bugs.gentoo.org/835078#c5 if 
Firefox crashes."
+       fi
+
+       readme.gentoo_print_elog
+
+       optfeature_header "Optional programs for extra features:"
+       optfeature "desktop notifications" x11-libs/libnotify
+       optfeature "fallback mouse cursor theme e.g. on WMs" 
gnome-base/gsettings-desktop-schemas
+       optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal
+       if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+               optfeature "hardware acceleration with NVIDIA cards" 
media-libs/nvidia-vaapi-driver
+       fi
+
+       if ! has_version "sys-libs/glibc"; then
+               elog
+               elog "glibc not found! You won't be able to play DRM content."
+               elog "See Gentoo bug #910309 or upstream bug #1843683."
+               elog
+       fi
+}

Reply via email to