commit:     1080693a6f5438662b599d4bb833dc40c3bb53f6
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 16 09:23:54 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Sep 16 09:26:13 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1080693a

www-client/firefox: add 140.3.0

 - add python-3.14 support with upstream patches (bmo#1970223),
 - bump wasi-sdk to 27.0 (with a rebased patch from firefox:rapid),
 - fix libcxx-21 compatibility (bgo#962129),
 - nss requirement is 3.112.1.

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

 www-client/firefox/Manifest               |  102 +++
 www-client/firefox/firefox-140.3.0.ebuild | 1387 +++++++++++++++++++++++++++++
 2 files changed, 1489 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 1e31e7f7aee4..9e07279bf4e2 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -202,7 +202,109 @@ DIST firefox-140.2.0esr-xh.xpi 272610 BLAKE2B 
433b05dfb38bbec8e6e94b804d20e326e4
 DIST firefox-140.2.0esr-zh-CN.xpi 460380 BLAKE2B 
e11f0b20410bf7f84b62c654dea5ec9d45f6206ef59e0cfce41c7c7540d734ad96f84d9e8703436003a09b7e2cb03d86e4a253b70067a72563e9b2815732fc5d
 SHA512 
288445e656875bc9cf1607b47eaff302e3b6976ba29bd36d2891849e60ccc88e741fee0295840da8d36c344a304028dd1035774dcc6a728e54b6537dd0b52ba4
 DIST firefox-140.2.0esr-zh-TW.xpi 463358 BLAKE2B 
8a3048b676db66f20e250c5db357a1ca4e97087f2a68474389d3246f82ec05341ee7b48f9bd2eba29acb78c0d25bf5fc75e06598933019dae83cfad80da7bb85
 SHA512 
aaf00a34f0d6b69a342edc43a23d028f246c2ce5fd8273b4ba088ae8ceace513dfa38f4c7d7a09186e92bc586b0188ca1ee240c8ab6dc3b5439080dbb7dc345a
 DIST firefox-140.2.0esr.source.tar.xz 631022940 BLAKE2B 
aa3517f07e1b632ceed33e2765929742151852efb7ecfa6d432b7d63679b07df48151ade6a6acd42b06bd48b405b59d52aacd56ddde60bf85ad8c985cf6ca551
 SHA512 
e4597c4d83ae1a84fce9248fe6ca652af6c3615607fc8973bd917bfdbd2abbceca937fe4c629c0cdc89fa0a5c846b5e2d8a4b44dabf7feb201deb382de0ccc5b
+DIST firefox-140.3.0esr-ach.xpi 294158 BLAKE2B 
e5c9768867bc893f7588813f697f67f369fe77d57d0f678febe0ab597dee8efb8b7b3f2e57d4eac054e7981a96c9c9b7fb988553c547427146ab0397e71041a1
 SHA512 
d4a3999f3bdc97ceef042cfd60dfffea790ac6c4fbfea441aaf054f21c8f3177ba7f5d9d2ad26a04b28d59ce9f86326d92853909772f90f76e863ff0e54bd79c
+DIST firefox-140.3.0esr-af.xpi 266428 BLAKE2B 
b8bae7f55fe4e578e82fd1fe979a3775e8697010d62db2fccb81f427b4eec691259968c9bcb042ee90b43dba2cb6d98967def6d60181352b8e98803f871b23e4
 SHA512 
7ef5fa6a87a6cb3891e1e227b291bcb981afb77974d67c6b03d9f47116a05833d2adbf6192fd1bdcc7360d5edc97043fb3ecc74042da2f40af1787b693cbccc5
+DIST firefox-140.3.0esr-an.xpi 332095 BLAKE2B 
14e168da5558662ceebea0c362a3e508280b71ea2b389ad6b3bd7d8344c9c7ffec26d6d8f36e93b39d53c05c2ec9f58b77e0c74951a47a28a4f3f40ba8903c53
 SHA512 
30e6ef2881df1f10c9b6a5c12624c42f8671a99fda1d4b257af22bced7baa006d7dac73cfc0dd5ff9e97a6edf88191410b2ac7e29de99c04899abe68f7ab6a76
+DIST firefox-140.3.0esr-ar.xpi 444596 BLAKE2B 
d874a2f2e6b721825512eef9a6033ec1831a9b6ad50de3399bf81fdf82838d4869b1b08064da9ecee2910f6d8e52347494024ddd3a783b08dd23012e7462ee4f
 SHA512 
9f37232c0f14e7bd1894ddc6537f7de1fe0676478887c0c525c625257a996d5bade54ad6eed25a9f777027cad65a2fc0719ae96ed27f708c58bf819e5f0ffcf1
+DIST firefox-140.3.0esr-ast.xpi 312002 BLAKE2B 
e278f0fdf418363d14eb67504b94540607c9d3a94ad8db4bd5045b7987a70a31645114ad36b6b5f1c518b95781c292ece5063af8ff43289b199c66306a199a2e
 SHA512 
96578c48a772fcae8e343dcba7f34c6e3ba621e8844bf370e7e843b906e31840c2a81391620a8330032c7ef5e9a7b80520a8b3360c4e6645f64be486bf605c55
+DIST firefox-140.3.0esr-az.xpi 318190 BLAKE2B 
b05291cb54deacdf55b4c7dff8552c1282c95ef34b77fe912c773b2ae1821e5cc2062de7c4b066259f9f6379b87055b88476dc5d10c660895e7e96df85b18d3a
 SHA512 
912183e6ec079fa64ed014f68fcfb96f0aabf03d04524810b7f6cd3dd41699e79b9a8b1f6eb8a9f4edac4cf1f78328bf02bb0916425cc5ba3cd7cbd1a5114df2
+DIST firefox-140.3.0esr-be.xpi 520752 BLAKE2B 
c86cc56f6296c5b8442cf8f14814243749207eb582a3f90c89243a72f8e24b457c97227e00fe24c0b6fb5c0647cf05fd4b8e198a8717dd4110880b1b363a18bb
 SHA512 
751cda98f04472979929c408ae6248edb9ef0243968ff9210bc85100f0223c55b58fbecd7588c9608250cc49fd8cd9a275a3d77810a84fe4e15b7ea4f5a288cd
+DIST firefox-140.3.0esr-bg.xpi 454654 BLAKE2B 
b700212b93d8467cb14e1ad88860bb6e9d09ed648db163c53f75d5550fd535afbcbe2bfdeeb1b89b45185dd09f55c383506c399521acfd18e8b13666bfaca64a
 SHA512 
52eaca46d471d918b8a59f7ef384137bed7cf61a43be03a035ff26abaae35c87c5f687543cab2485b5cdb5463ed703b355fbb447f0dacf56ae726041bcf277c3
+DIST firefox-140.3.0esr-bn.xpi 413151 BLAKE2B 
823df27958b33f32e3fa4f38cc2f8330057fceeff1ad4d7a2b71f1c06e076739c272e8b02e6a2a8ec4d20e901786288d1f39574dd89b608a493d64b4aa086b79
 SHA512 
c64715b02c4de0cd35088a299a23e7bea3561c52ddc34d23797b113d8acbab894afd827daf1bc5371e43beafacb72763b718590b185b838e1ef461e30ae10ab6
+DIST firefox-140.3.0esr-br.xpi 395184 BLAKE2B 
9ddf669637d5f83296d870d97568b48bba0b9e7ed98467de83af566d93c3ce928b24c1b6e93e6287b6b1f49d683933178f1f640672893f3d85a97f459f2ff06c
 SHA512 
c2ebc2e731f90e2d62a40996f9d6886faf42e2286cb9b85c7a46be4ecd22dd4df4f39fab6fae0393f948998d7ce72717dcc5394923afd76f199f5328b94804a9
+DIST firefox-140.3.0esr-bs.xpi 446850 BLAKE2B 
b73586e16ecc3c394ebe68059a90dd8649ea41c6365cb76331736b81a523ea6386c617b381ea9df000ff1f32380d3b53429eae2c8c6c8df07f633e336cbfd000
 SHA512 
476a3064d199da9eef3d8bdd3df7158b34a383308b76c7bf79c9631e28f08420a2bd411abb174a721e37d5c0fc881ec4351608e1a3863d5ec1d6ed9b81986f6f
+DIST firefox-140.3.0esr-ca-valencia.xpi 357686 BLAKE2B 
a9ba5366cacf3576e7ea04f4abb5cf69d1a5ae460d3ab356a8ff0a85e4f5589db180f54228f1edd6e9134adf8294945d2d070ff7596747c34e6a3c2c8caf9ae0
 SHA512 
403574d4423bc5bb06133130e73741ea88c1d20f6993dd7149dd4fbed26e84cd747127b747e0f99f47c1310c6dde5451fcd04aae2ae9ae3231aaf20ab5d1a2fe
+DIST firefox-140.3.0esr-ca.xpi 401494 BLAKE2B 
f2fdd8acf026d21c2a18d3f573e09730fe53c100ffbbd01e96496c2865168232af688958526524fce94c5c66dfd0cdcb4c0f251ec559f2a42c3c08a8a8f41a4b
 SHA512 
a09ebd82642e36056d0fc1c15de4b19693d352c626fb2c093c9d80e36561008d6bbda41b5ecb553347cf8bae0801200fe79a5aa99a25bdc54256ef0f9148c963
+DIST firefox-140.3.0esr-cak.xpi 390633 BLAKE2B 
1443855079010ed90dd5aa3c535cfc6d3efd98f710ee6b6f2cd155f31c8cfcd3263afa8e50199db5548408e8dd7b9e4331dc72fa16d50525f0472efa52ed19bb
 SHA512 
9c59add22a5de11434d4d56a4685286cee8b54e7f27ff36452f858e67722ec71ab92b6d0b3b8c91556963afba13c548d94d808941bc73a65c8f3d3374346ed7f
+DIST firefox-140.3.0esr-cs.xpi 475500 BLAKE2B 
c4750740ba8546f9acc690c54ea118414dfdc7325409a4f96ca70d381fb2b01833e227d6087317f572c25dfae402fa7ab2304371a1275ebe09f479549912d004
 SHA512 
682eb8190802207c5c3a6b828ae521547f29565e8cb92c92c8da8f65f31c3b63ccdba6d40a93ba19a50d272e152155cf97126d2a6dc4f93af9672a82af178f27
+DIST firefox-140.3.0esr-cy.xpi 441562 BLAKE2B 
18d4a27f2923764b20ae6fc6efcfcb845faac60d4ed34f8994e02837769ed1fe2c3dc931cd9cd160e95f4439f5bd0b86e7e61c119553aab88b11d50ecc636f0b
 SHA512 
e7be74473b3d1d48fa2b36ecaccb7b20b7c89db0d9f103af2a9a0f66c700ab4b8538ed1f674a6a2f76a8372c29e466c98e2cb598b3e8a705c0abd21839925e59
+DIST firefox-140.3.0esr-da.xpi 430732 BLAKE2B 
1368075f9b1a27a6c7f07ba89f3625863c3fd7d5810fab8af8075ae9a163a382544bb2c482db6ac8344402ebfeb3590648f81218f6767d3b1447ace8b9f50217
 SHA512 
369f227415cf8469e74aed11dd26b76eac7471c41e590c39bf0a6cbb0a6baa8e0bb83899d3a519c805c655c22b6a12fa2a98d8f18e3fd927d7aed08e9f82ac31
+DIST firefox-140.3.0esr-de.xpi 452249 BLAKE2B 
c2e4ac7fd58c3077beda5f4015b1e2599eeae7bd0d0fffa23ad73e69f57a3446e057012c239eb148052d3271e32d381082cebe12757c431cd4b924e13906e4c0
 SHA512 
6167253b1d236bacde90ecf3704574096ee230cae05cb57bfbe07f01a3d31906701d00496d6e490caeb8b3dedd65c0f802989c825addd5febe3964d1e91c86e2
+DIST firefox-140.3.0esr-dsb.xpi 465663 BLAKE2B 
65bc83415d6d07427b0aca773e625476fe80f536a5eafb366337961d0c403d9cb5b85962d94fc274873a0b7e75052052eda236042b478feb81912b7a4e90b72a
 SHA512 
09e43dfbb4a878591ce333f80457ae2b0d85488224ea7a794f2c306e131e4ff2c488dae47573a68385dba43317924efb6871b88d15d80183a09aa3ba4bac87a4
+DIST firefox-140.3.0esr-el.xpi 536368 BLAKE2B 
36bd98d2116168c9bb9d413c32c89ed2d6ea1f4fa2877076d0a4f443ab34252e088081c468c1281b416f1e7ddbc370a64d511984c3cd1e0e1f490cf83172f632
 SHA512 
fffd509746b20a6ddcdc53fa23452e9dd761192b535f3fb041a363d00ef0cfd2655285e8d2414e8f18e5d083c327d8743a7dc3358bdb473cd309d5c4dff07ff9
+DIST firefox-140.3.0esr-en-CA.xpi 410696 BLAKE2B 
40746617461c5667546cb2062444b8b2cb9ecbb820383f510b3e5d1cf2b42b24a253e77eb0167014bbce950e2574e595ef0f57f989a9a66d7d1b89bf1316ce47
 SHA512 
025691532e851051a27454f8f410630069abdf0d2aa59f40d353f6d7787b02650b8658e7eeb881b30bd996a81baec9179c019dbc6df70aae840c78d558964668
+DIST firefox-140.3.0esr-en-GB.xpi 411006 BLAKE2B 
581c694d9e39cd53dd5cd94b12311abd3b37d6091a71c3eeab05a9aec7f651d4f7d36af674edbc1c4cabe1e8614d8da09f88e8e061bde82ac8dfd79de85ae61a
 SHA512 
915c9d8fc80b890b158d87c70726c4072c593c47b62f23d06c5f19e79382360d5c5a40812f500d9207389f30f4bffcc62b8b5f804ee41b6e5061d682fb3e7ca9
+DIST firefox-140.3.0esr-eo.xpi 433073 BLAKE2B 
bd7ba00065d9c274385c80cbe5310bcedd7576d84827ecd19fe12f9da59ba84ab6f9cdda3c37b25e7c58bbce6b68c8ce64ba80aeffb3a98056855f3cbf5e3e33
 SHA512 
a2459c54b7e9e8912066d499138af6b7a6888c8d874ce185032d70667ecdd2e46744b041d95ca4031c4a844a338e9669fb8c47428ae0968c689649bcf56e3ed2
+DIST firefox-140.3.0esr-es-AR.xpi 445122 BLAKE2B 
3100c6d65d520eadc9c6870c10c2ab73acd084ff96aa041fa70a7ebc8527fd699368b061314c5e27e89bc710bd9f5cabf4c3bab6af901c12b34e8f3550718e15
 SHA512 
7f9c8749475f1b15ca2a3e6386237e2a36bafd7e727de86bbf76888a92bda29730a9395071ee923d3a34914277c55c849ea2d8f00b30b98ceb1825f977105585
+DIST firefox-140.3.0esr-es-CL.xpi 445900 BLAKE2B 
b72f16bb4b3d6f92fd52f87ea9c86f3a9c03a4a15c61ffa1b87c77a9a2f2753a04db11c0b1688664fa6a56f38589921ba02e795011a3aeccc6cd7c858e5488aa
 SHA512 
b94a4ea4ffbd9c0274e1a0282c1cb717f0db11fbf7ca96870398849bceb70e425e58a696d4b9c77ee533a178a19630002d7e5eac88e71a2d198579c38eb8cbff
+DIST firefox-140.3.0esr-es-ES.xpi 446604 BLAKE2B 
883a88814fcf1b23525b9a486769ddee0f16f7a724386e8d446c9b2a752298fca8851fd543bfb8bf7b0ca9b04c2bc9126da2c74fccf44de2d617bfa6f8b851a0
 SHA512 
fa58d89f4cb683d2de2be320e4e674585d5b3297a37051ee5a17f699c0f929beb2a2273ae1a6a5cd52e7955520d3ca5e1286ec96eb6c21fae93d8f12b0cb37a4
+DIST firefox-140.3.0esr-es-MX.xpi 436929 BLAKE2B 
2576a0d29878d7689ed0b5c64fd0984af811509f39aad6985dfa4a212625fec2ed3ee0057ae4b2e0a659b9f79fc862f0b74e954322a5b6c8c54ab37456edfe08
 SHA512 
5a36cbb380ae2411aa0489e9ea2ad7dd2e191d3e0f36231f05f9ac4160d3a3ab7cf280872b9294cac3bb884082f372422166f80b4534536a440d7daab9b9e50f
+DIST firefox-140.3.0esr-et.xpi 359104 BLAKE2B 
63a2b47643d3ea853b69fbd99858598f5eb4189b426bd5521ccd5f3ce65915eb1dcf7e6cad5e95f7fcdb802ddb68e3bc7cdd860fa5a59caab8e9893816b812b7
 SHA512 
3070de7228c1fd0795ef212cd4bf239143533182288b3fe73da6edae8fbf8f33a91b566cfd1ef758b4c2c09eb10929691a59ab18da1135b7d911eb3689bce0e2
+DIST firefox-140.3.0esr-eu.xpi 416441 BLAKE2B 
e42ea0ad31250dc4329862f60cf8bd6c8d7be95006fc83c2b103022e2ebde7c6472bf259ef71def37c52689d8168d96873a70776226ffcf548074e9bb3e5207d
 SHA512 
bb65c97276dcbfe2b518bb962d6a9e517568dd568b68b7a2d8d40b26010e995e42bd5f7b27e1e6feb1add154e4c9d587c594302834de7de2b922b477ba6b041f
+DIST firefox-140.3.0esr-fa.xpi 421327 BLAKE2B 
2636810cc7ae50aa400c3ff7d64a8874a5e6463b25a4ab65513aad427f8c7d2b16f524c8284cd871f12de9c9bb05747cb65fefe75897d0a9a58a0f9ad21b4892
 SHA512 
4310db90aca3effd3312bbf7fb7fb33ab6d1826379e9807eb46e104dc3d4183bf4c8ad98ab893a73d877b37019164e8b9d0e6485ef6c412173af636af658bdaa
+DIST firefox-140.3.0esr-ff.xpi 309976 BLAKE2B 
fdbb0524fe96a06a78861a99973feca4122291f8de67549fec885eb8355bade9d0121caec5d75bee0ceb86393260960dd72eff08ecd1787b0d23aa29325e9ff1
 SHA512 
09a934e49c433b8f2b47f8064506e568d4f88d4f11da0a0e4d6c86f2027254ebe9f4e2f41b520a4c4af6ab4bebdd0a046d08e8c1863a3b87feedaaa79397b4c2
+DIST firefox-140.3.0esr-fi.xpi 429729 BLAKE2B 
153e521eaa134e87fa72c3cf00bdd2daf1c7206053e4e0f85b40d599e4d4e86d81146e65c1af03cbe546b42b81fa0dddb578f404ba342ffbf0f423142bf6beba
 SHA512 
4044aea681cd84ea6d6e9fc445329fbd5dc05dad35383cdf4578b6a26268cd091cc89749853e9c318f65187bf415cfbaa26f57db3c98b085eb377aacfbbaa3fc
+DIST firefox-140.3.0esr-fr.xpi 458052 BLAKE2B 
7e3988772cb4ba8cfccc44adb8cc45ad554387321c77dfd79e6cb8105b58f080ebdfee90880f3b3965837adbc0019f5994c90204079b922a8ef28b8cb2a50b65
 SHA512 
70301316a12bdbed748213727144ac7e7f48bcedd528c9fdcad4136f411302dbc6573b17d165fc02969a76e78c3adcfd18a9e5c40c358c95cfca2414d79dd366
+DIST firefox-140.3.0esr-fur.xpi 451393 BLAKE2B 
7bb15877746d41e128178eb768e1e53c8749b2e70880054d074311119ab981cf91e5509061ba6b86eeab8e17f6b547a22b898e0da0b67a9e4f00a84765a875bd
 SHA512 
d21e91e7234b2a147d6fc6b4fe24de802b32989fe59495acdc2f2370b928882183b17a7b0081cc6cc26317e2c2feb341efd92556bf0f6d73fdcd6e43b7f9dbac
+DIST firefox-140.3.0esr-fy-NL.xpi 441752 BLAKE2B 
546d4fc57f2f4e02a60c6db23f9593178c857cc8dcdfcfa3cd27746851855a41fd024a8e02996ec079ad5045c0057d1888ab9f954db75ccc5cff48f29666d790
 SHA512 
23e57305a29f581172fcb9dc407c273acd9b06c0bb117c1842dbf80bf1672c4377bf1cd8d8420d2ba0505e5b99d3ce270d836620471524bf4914152828705e67
+DIST firefox-140.3.0esr-ga-IE.xpi 315053 BLAKE2B 
8950e0f55495b43b351f44e823401aee81868a829f523e4ec85039d3b9a0a9a9d4524cf39c4d82a8d61627b22d17363d5135b675fbc48d081b5f5bbe6b6f345a
 SHA512 
da0c78a408139f5c17e9705d2bd71f89353f9efb0ad1752a85febe131ea205a4eaf60513d328fffcbedb301e672a93ba5b2c2d9531abcec975134e9bbdb8096c
+DIST firefox-140.3.0esr-gd.xpi 399225 BLAKE2B 
ae2d85b5514dfcde737874cbc0d049e17168df1dcba6eb691efc341783d3afbb7ac0b25b74e4d95ca88f04d000acfb3540278092ad62cf4640c3e6ad16f30d62
 SHA512 
b0e5e77a7e98c2d10d3fa6d4ac0d9044dd85f55030300b49d6eae14905100e1e73caca453316fcdf0e897d7e2f58df68d2b7fba8a6da0b5ae0cb941d29e62be9
+DIST firefox-140.3.0esr-gl.xpi 442556 BLAKE2B 
091418b30a628321e8097d01b17d32dec51af53ab0ca606bcd4a676a6d7baedfa4cde9fbf7d1fb961a68e74e2ed38f97ae79ccc974a9a3322c97eaf637ef3fdb
 SHA512 
c625e92aae13ec445626b4c941cd01eebf6e0c4c654dd56902e92ed8bf5a1470ee2d0a6a814dd1d8e6475a915deabb9f8190e2b809dadd813369d8f089ca34a5
+DIST firefox-140.3.0esr-gn.xpi 450644 BLAKE2B 
15da30ac632a6cf35f7a895aad2be7f1d58d93bccd1d553e62dfd9d1a3f3ba6881d5efb06dbbd2ebb01fb8063c5054787f69db9868fed6ac3c40459f6e83057b
 SHA512 
6cd9c1a8d1cf485960633d56d355d44ef84508457495751509aa2b86a1af2b5fd9c8d1580f6a5132481de6b4ea6631dfd77dfd6cb414ba86dc1a8db45a5b4f54
+DIST firefox-140.3.0esr-gu-IN.xpi 358761 BLAKE2B 
cc3d3cea5acd68fda494d64f51cdce4b226a5a0f36d12d7e121690cb1ae9453483a0e57a18860e83c36a245ee149dc9537b580f859443fd0ecce23dd47df04bf
 SHA512 
9ff92dd99454fc295acd38d72272fb777c4c6abcfa255997886c4fb3fe0f0c88083b3117c33da4eda753609c9f45577682ae30877968b60752f0ace2054eba1d
+DIST firefox-140.3.0esr-he.xpi 444491 BLAKE2B 
e508ed97c4743592ae8370d0fbab6d415cea339e27d2a1c86bdd7ac345c9db4ae8559b747716b6f8fd8ca065e26be8185fbbce27a018520085c4af14a190868e
 SHA512 
28b83594bd4159a18587666e731ec3637547daaaef3f838e02ebc1f31e5dd3acc09cedcd7e76fbc44cec1cfcdd419e51473911abba607e618aafd6c36ceafd5b
+DIST firefox-140.3.0esr-hi-IN.xpi 377243 BLAKE2B 
64e7b1b2ad5fce8d63385cd0bb534240cfda81a42a6ee6294f7c8a07093d84e5b041c62b13217e56f07d28302392207eb779f846f91a1903eca55ebc85034af3
 SHA512 
6626ea3f25088da2c38fcb1529995ae36f48f0e50bb7235138f11e9bbea547a4fbeb88022bb9e8cd3dfbe6b44b02b432e95aa9c1daba4298a69efd37df3c20e8
+DIST firefox-140.3.0esr-hr.xpi 437469 BLAKE2B 
a87b293bd46dcd0543ad3cf135c065b96e42243006641b6e8e217509f4a8911cbdc2559419ce854bb17d493f35a8827c358461dd72ce0b7fb5d3deb654cf5b08
 SHA512 
c68000b7aed31fb8a5463a255255f19322503d5bf5f5b309e4aced170836ec09f1cb7f19573845946db4be87dbb721a47b27d32e2070c2e09f64de99947c0689
+DIST firefox-140.3.0esr-hsb.xpi 462276 BLAKE2B 
b37e07c9720d241a93d3619ecff90a7289be41d501396154a7860d3d246f21e6be506fb92f47b383d9b1d239e3682f3f9febb5da79c0c95bd0e2f192d9ae0e97
 SHA512 
c15a1eba1d0244359fd2abfa2f1a6aa6b36a46c53f65b2f5cdc24bcd694fbe2762a4692a4c07174899289b4ece1fe40d4a777f7bb7ac6ef28d3de719157e7355
+DIST firefox-140.3.0esr-hu.xpi 465774 BLAKE2B 
0cb48a5f34744edb74b896ffcd727b9a360e98f0178efeebd5d47c1b313f9e1ee8c6fa4044c226e8f415ca2327731d03577e5bfdacb29c619089481db3a1b5ca
 SHA512 
c77ea76c4ee8674549442e3575fb2e233ec3d9bba6ae99d4222b72e6f8da04d8217c81247efcf773c5c41827480f10c577364002fc9dc25b0e2d4a0a179f87c5
+DIST firefox-140.3.0esr-hy-AM.xpi 458368 BLAKE2B 
6d2620e17c015e1e0ca8ef3596b0f3b090283a46009a874c12bb82a690307ea434952124a55d9480061959b1ed107d272e80050bac1f09689fe5633a7e406b23
 SHA512 
90ce2a3974d757a84cdbad6d0660770a1bed38915308827a18b809264e50a790eba294e2f01ef5e72ce01b23978b3bb555d42f264a9dc898c4f02958c6182091
+DIST firefox-140.3.0esr-ia.xpi 429696 BLAKE2B 
f5eebb650b10ebda69e4d176cec686f4729baddd0333f8751897f3f657fc33a8b9a17eae3778b33289897dc0cb2e3bb39aa047c3842e64fe847888429b324096
 SHA512 
9593014a5c82eb79e383bebbbd7aca4e65afde76ffa6bb96e57db07d72b952bdab97eff9318d32d37bace596a2d42062847ea84da0857041c69fb34cbef97e34
+DIST firefox-140.3.0esr-id.xpi 419337 BLAKE2B 
606151b3506fb8be0d30a3a54f95e8f0be62923005129beb5906237fd84b258ed41ad6bc072b2e124caa165ed1bd527c870c2aa7d2e7bbc8662d31c27be84c03
 SHA512 
2d2d398b5ec9f7e407542df13ce56f1ddccbea5c68faddf18ff74aa0676600e670d1a48fc7ef18cb517e97345c6fa2ce0c8ab64f7e76c63362597f49025c2b17
+DIST firefox-140.3.0esr-is.xpi 432240 BLAKE2B 
368f938c80be878d7a432010591ccd2b0f5874518b977c1ea2a4e15d79bf17aa99856851aae4ee181fc1f4e6848e3a016fbcd6e601355f3a63867a59a034e4d1
 SHA512 
b292e644bb767619f6165bc17538e3bb3ae23f34db6635f0c47c5a5a360484c6062bea08f9f3425799226ed4cbcd8e917847bd70da855dffb8fd704dca98756a
+DIST firefox-140.3.0esr-it.xpi 440509 BLAKE2B 
fa9ed4f60d9a675335ce941e9c00753aea6874b53a9d21e2d75ef4509872737346653de9fc8cc9c37b83dd16096803ad605ec67dde1e08490baf78060e114ec4
 SHA512 
01c550c9a323cd7124919cbc73a0c85ba0521deaf1e4e3d83b7741bb0a14e21b9306d7ff326c07341251c600f28bfa0fb4a3dc38f8082cac3d838fab9ff83724
+DIST firefox-140.3.0esr-ja.xpi 480922 BLAKE2B 
e21965486ce64fbc951824d9824d98b95e4b75a895a7d3c8df1ed83a090302b65ef89c9040230895dcd810a1aace6530693aea92cbe8c76f8f52ee46472f035c
 SHA512 
ca1bc8b3b684d59bad9daca075ef1c78cd7cf5a3d670eb220e18ba9c7e38b7a3e3d323eac7b02d9c6aedf9996c967ac899121a2b308cb9f0c5303f09ee9a694b
+DIST firefox-140.3.0esr-ka.xpi 494450 BLAKE2B 
096154bfd9bda3b0cdc1dce57c637c4cd145bf6658abbd2a2b490b20a62f02b81c9fe103e7d7a2e4894dd61c29397c5ee6e4c0c8027b48e868d8cb743e7068dc
 SHA512 
84daca641126a6ce6725ef2cbe0c3c1a96af1e88d529e9d1d9aaafc014b9dd80ad5b77f0f816db6b9bfab2ee1567d65efa32d29f83eef5ec3a5fdd22bf94295f
+DIST firefox-140.3.0esr-kab.xpi 421077 BLAKE2B 
3e3ae635cba940057147f75be4cbed7de6555e5eee5988af1b88f4b493650e2c11338a09540bbcaad3ece8c463e28e299d2e010c9f8794ef2a948d295e9af88e
 SHA512 
a3d4874076b391cf7026ffe5a12d8a96f45dd24b5a1da086bc4f0b68da3bccc813cf48ec7b5b0692e9a9e609f96b31af13bbd0f9d3585d85a8ee095fa9826a71
+DIST firefox-140.3.0esr-kk.xpi 505973 BLAKE2B 
dea6d0e5036ba6f8d36c74e7b9cd359136d4196f7260e3f5ea45e3621e4051a8109cad289e7a8ffca24d5030577468d0b4a13a6b7ad712efbf2c0f1ea917dbdc
 SHA512 
9775553cf632acffeb35836ad07afa14556d0ff121a4a00c0b9fe635423f510741f3913eb4edcbd520e1759b6f5c777150a35ef810d1c271317bd592cd69aaa8
+DIST firefox-140.3.0esr-km.xpi 348560 BLAKE2B 
c019c229f636d44baf3a543e77ddfb831c735716972fb92ecb97648dc6a47b492971573347dcff314489b25edb1859d524e42aeaff1bb690095ac30e578fc2fc
 SHA512 
e84404620b1f0f8c97faf03c52a69ec2d0442f94c2b404a60d573fd7e59598ff30f85c9050f68e7472570c1c1d874d31c19d71768b8b60038b03bab93dec7585
+DIST firefox-140.3.0esr-kn.xpi 331571 BLAKE2B 
54e99f370e6c38ebdb25cd3b6f8fd98e2a72f31dd85d38f3ce4a889d9fb9ccd9158a8d0b4b940ecbf5d2a5f9413b544983bbbf0ae2b2197d1090435eb7d6499e
 SHA512 
58ee7d70e529e61a309369a80c7f55810751ae833492f56a471cf0b336ea71530b34ffa6179c365a54445eb2fb5013d1e309ae17585ef4316494741be9138743
+DIST firefox-140.3.0esr-ko.xpi 467182 BLAKE2B 
7bd2f2e2338d2fd5cf375ba199f184188cb6a3b33120b2a6bc47d4f7f234eae0cc6f8d067e4106a7ac5a5256e54528a05e48d872afdb0e591efc2e6aa06fde41
 SHA512 
097cadf98c5a5123c9e21d1076a2f60eb1a6778585c02284b46e3b47740edb0d45fa8d128bb3e21798de5b0bd98f081fa3589e3f571a865ec7db4ab7b9cc3987
+DIST firefox-140.3.0esr-lij.xpi 319073 BLAKE2B 
f27d91ce2bd7116e948bdd5cde28cde52526f5dbe5a334f336e63d7eb474420ff513cf970cbbeea8c18df50c2c24a684fdde7262834185f56de1f21e600aa50d
 SHA512 
86f22b13ba2bbe109b058b5763cf675810f37eb8de1164a9833d394323b8ee234699cd446052f55e14709b07581fad1d5c259933dc79aec9d2237864152939d8
+DIST firefox-140.3.0esr-lt.xpi 379748 BLAKE2B 
b803a2017b1a450d760921f193f7764ea76637295b556126df919a2eeb53e4ac158ad550bb202dd17a05cf28995f5eab58b47f61b1a4567028f198be4e963e9a
 SHA512 
5b94844c0d7f5db0fabc12c9247beea8a3a648d028ec4ec920afc5cc1d6d84965a7101799b92b1b3bc85378bcb2219e89d2ef96b5fbbe06aed7e8712062ae942
+DIST firefox-140.3.0esr-lv.xpi 386111 BLAKE2B 
2ccd38cf9e7d9d71628635a71297afb4243fbe22ce3167635dbfd1aa3f55a9fe93940cbac168b7a8f62a9a9962db5ac3becd7dae69ef534fa47d929f677b0361
 SHA512 
93a727092b74f4c1eecdd18398fa694a37232a739f89a1bdfb76f93c279afefdcc4aa158148c74f823f012377d49c20ed4fe44c5fb2a9679a6b9c2eac5a3b828
+DIST firefox-140.3.0esr-mk.xpi 316629 BLAKE2B 
ebf549a038a85349212500f7671eb5b6b0a92c496704b742cfbe6e6b7b7929795c37fe1d294b2f6336a5622a7b97ff792430ec705368d345dc97abdad4532645
 SHA512 
15da32da7a3837e8f3911ce52c6d2394d5a4b95355b470ce7f2f55291300c37a3c9cb53e1f7f723fefadbdead16c3e5f5a06a9662511b7758c147cdbb5d43700
+DIST firefox-140.3.0esr-mr.xpi 356038 BLAKE2B 
984e2dd072218bfa5c7ca85a02eb952a93d56bcfd289deba6a8a5cd1d7a1e787fe0b02e0d26e3c140b0a0bc2b4617e72d3b5ca190a69a3c6d8b745e5deee16f3
 SHA512 
d56e62713eb2cbe01022a8cf4db9406be822bf802794c0f7d9424ebf9ac30ced84ea6babac601fd2f1f808f76e1bd017484ebda60d56cdbe1dc0503bc98ef4e8
+DIST firefox-140.3.0esr-ms.xpi 295170 BLAKE2B 
745855709f57346fec3abca861afd64b0e1047a76873eae4a78cb32538ac6865c2ee24cac5bcd4a4983eb5581ce52e3396f9b874cbd7bb38476935c034b01759
 SHA512 
e97bdcd71943213525596cad242584cfcf3821d18eba4d01ccc125ae03c5fbf3ebafe53535039ac7b9e4cf36090034f9df60b0299dffb3da7bd6a46f7817959c
+DIST firefox-140.3.0esr-my.xpi 342823 BLAKE2B 
f7275e6e217f7dd7b8bf4708e266bee4e783b5f5481a270f8f6ae3dd59a38551dce45ead8e0b19231da1a61797d7585b1eec50973dca3e1726f61a89f3da349b
 SHA512 
8b4b87f7ebfb46576ac8fddce8cb17ea979af74feacdea70713a21fc46f5db3d4fe54e54b9183c31823e06ffaf25f20a5c0e80d5012a9dd95a03d5c615e0b608
+DIST firefox-140.3.0esr-nb-NO.xpi 428929 BLAKE2B 
1af4d2d74e68c1908652d948d003296c0cbb4e15629aa7848a0e31ed77dcea4c99f15c264d767a6e60f72ec33515678f214b7d0f0b4a9b50db88c58aaddbeccf
 SHA512 
0fc475b1af6203f1d32f727d5bf0714564ee40adbe39193e6615b6c137e8ec5df57391a6b583fbbca347525d618baf250235373824f23f0df5a880fe6521551b
+DIST firefox-140.3.0esr-ne-NP.xpi 348798 BLAKE2B 
6035905004bc9ce1a2ff3fb5e75bd85eda83f93168646ac9872f893217d76025ad93eb8f535ab17742dd1dca8dc31b62dfc0c7338831767725750fc0913c2dc4
 SHA512 
21ca1d860c0f253c07b06a721c2a8d1bdad4b15919618356e2b39ad3061d1b3f51b95eb2dbef988464d50ba3c665cfaafbeb91964ff4ece29c9a903c549b31cc
+DIST firefox-140.3.0esr-nl.xpi 435794 BLAKE2B 
cbc87c00f6892b34b48e078b0e96dc3876ec7767a3ef165f49b0e10cad3b60a0314fd1512963bf00e9c667a09c54fd4c96577b117f4dc790160d996493b51086
 SHA512 
2f2b66235e2f5e1e4fa38503935d9d4e062b75dfc633992f650ecec1e45d406f429c25fd0eca8893093d55fbbca0146a15c6ef858407f9a9293349bdaa361891
+DIST firefox-140.3.0esr-nn-NO.xpi 431815 BLAKE2B 
e838744a623b242df75db8a2079ee309699ebccfc2c53c403348c201faf6196e3e8d1527d5ceca2486a4580fe942080bdbf78961b75f7fb6d95eb5211c96a82c
 SHA512 
63e8947d008721857c812cda1b883ab2a7e54c6e40aa985d4843c0d9daa9bdadb519124ffd507156509dc0c736c31b8b7298a75d333b51f146d8f7fc8171c297
+DIST firefox-140.3.0esr-oc.xpi 410730 BLAKE2B 
705643cd3f4c3af13ea80cc4a9f1a86b19c5480c8c0fdbde9e76adccfd6942b9a60f099454779c331c6f1c4cf57f3bc739218da20d0fee979aa1943787166543
 SHA512 
468652de3c0748875b0898a7ff111f42e6c66f1f95c700c7518716fa4f21498a9d865965637c463c0dca10645103a09b2610efcabf3fc17f836b14d2e26788a0
+DIST firefox-140.3.0esr-pa-IN.xpi 493394 BLAKE2B 
ade9a81614c04cdf06071cab83abfd4e04b8000216172d4903175b434987383c7f18d341c35f78acb255c4cff67cfeb144c524a8b88777de23752315932cd469
 SHA512 
1108d5251d55056e22c41ef38385b69f44b322d6f822d8cecc8ab5eaf845f83e1cdfff85105aa1ec75f3d7f96afc8a625bfe5c0df226e481abb0a577d12b63db
+DIST firefox-140.3.0esr-pl.xpi 460179 BLAKE2B 
cc348c6df2fc25d680b0b4b800bacb9ad87b6f0054a22f4a27fde390a1a8d64a359cc76cc6011f90dd8c85d58f23b0aa2b6f6ac0ed53d11d58374094ac0e4d0e
 SHA512 
2554bf18e8759a2fade2f0353f265907e196807d2b59b79ffb3bf2dd456bccdd433d43bf02ecf662eba49d5f1b960525825ac936809b6ab29f4fe6cbf2dd8c0b
+DIST firefox-140.3.0esr-pt-BR.xpi 440312 BLAKE2B 
2e1c7639c47c426ba0f1cce87b53d23ecf14d6612d4c16f4515b96ef0546846d93f6c67a9a4fa4017f2b80fc88dc32a0c5d8e54238dfb3d0761fafa91b399440
 SHA512 
79792d5efc428b2a12f186aa967ef0d31684dccee3e030390ee079e8da5a3ce529bc822363748f25ea029643c6f6b4238b5dc6c505ea1767e25b7f5ed8638c5b
+DIST firefox-140.3.0esr-pt-PT.xpi 446032 BLAKE2B 
a14824b41d4836ebe1c0313a479ed356c7a8a525274565a63f7003845669c283b22478d038942cbe74a6558d06c6832df1b8092072800ae4b673c724e3472222
 SHA512 
b722d64f79d7c8bd621b0cf7f697aba5f13ebd664687d25a31ec25deb4afc71c3452d96685e310449815e83586aacd664197d0e7c5255baf1d337d59798ee3c0
+DIST firefox-140.3.0esr-rm.xpi 436304 BLAKE2B 
7ed1b0cd5b55c53550173f4b4c91fe16ba102c75eb3b901d7b3b16953e53679bd5d78008c398edc6fed992472660c5ec121f6762e600bb679e4188c148060a51
 SHA512 
d4c3792443d0f0f040d871484fa6e55bbe456ed8b479e37966f8bbc46f2b16c044adfb8d8f80278a5bca15caa3f7e45831c7c6ae50b43c1d6fa7127173801414
+DIST firefox-140.3.0esr-ro.xpi 452385 BLAKE2B 
9bf53ca19783e2837c785e0eff31036943fc1ed2f972bee821bd3809beea095f82aa297aae7c57ae18ff6098e74349eebda7e72f892f582ce216b740157eb55a
 SHA512 
754b7087d3c152c2441e992b704684eac3ec4cffb5dbaeaa7ac82d25764613638b61fad39f987df252dc3dfb6c86cace1164140f215757eecf4217e3042780f3
+DIST firefox-140.3.0esr-ru.xpi 524710 BLAKE2B 
08e23059e9cc58b2b58de754a7cb2eb8f1e0f7152e300853dd5438963890f59efe8d3487343249bbb556c41d85c7d2e5b8ee9341deaab11c516246cab0d3278f
 SHA512 
efdd6f17f878e16a2b2514b7c95b6279b4a7941140920c48d35b872edccbff682b3506df44fda66b0c3f225519d7c5d645ded8d916b81a59a387eb8962519b3f
+DIST firefox-140.3.0esr-sc.xpi 408023 BLAKE2B 
a7fc9b858f921bd091fd342299b849d7db743434968807835214c512604a40b2da9b48fd22235aba51de707afad8d0cb99c9e4ccf7cfbb6bf0943f7e5aa22b69
 SHA512 
0573f5d65f49353f8f2b71d342cde25465e7136d57929728c603e7bd71a4e569b86bcce3927a3f13e29510d04c75edf6733d2e2e9eb73ab3404914075f3d5552
+DIST firefox-140.3.0esr-sco.xpi 322446 BLAKE2B 
591f72a07c249968f721993464c253235b8dcf754fd2a05b977fd5bc365a6df85624886cd001a27246ee57e26b7b0c61d10da81a74d9d78854e9926a334043cb
 SHA512 
f6f93efb7571dd7c9b343e546777d35d51ad4ae1b8fc272b1bbd60738ccb6cd35dcff610ae92f3e47d367c80f811f8946d391abb738e25084b66fc240793fc2c
+DIST firefox-140.3.0esr-si.xpi 411394 BLAKE2B 
58efe7e1fbef1664d29d726aafeb93865235348bcb520d267d3c7d08222d47009cbee76b97cf183d002949a323462c467ca1723575c2bcb6ff9ed7dd04d779a2
 SHA512 
2b98a8b99e4f9c0a4e35bf3ea19f10fffb55a3d415881f57ec46a0f509ae8f81a2a6e2378501116cddd22cd58f16fd6eb7af38e720c8c9b52fc425097902faec
+DIST firefox-140.3.0esr-sk.xpi 467563 BLAKE2B 
d89be6571383554d2fc90cadcbc9c931142cec73949115a546e8a993f0999d3811f7e6b11b67b9461d52e3b5486b8e86c2454b99f601ec56e77218ca11f559ef
 SHA512 
66de347072a59ed69261098ec56fd445c7f300978b0a00caa482d618c45a0d23a2489af82df643843203194af57a301f000d6c542961e7145d28d972c64b618c
+DIST firefox-140.3.0esr-skr.xpi 485660 BLAKE2B 
ae40ebb8037a2fafa4bb4bf63bbfde359be9ae9bbaa99c2e9ef5a717f1186b0cd89fdf0f69246f75cca7ec4cb434fd7b892dac17d661fb58c0e7106429fe6051
 SHA512 
077f875701d97bb5c55ca7cbe91f29b46e051720d2189a3a9b20b5795f5ab338300efa6d53e0955f2be0a76e1ecddcfa5bc986b8ab46a42630acec457f2fe6a8
+DIST firefox-140.3.0esr-sl.xpi 440788 BLAKE2B 
b640320fdd88a92d12a5d943598339285dd73820058d41ed3e61f9180cdcb2786cedc765fff89f1d3926ada5f24e365c311454452e5128cbc84fe46517b912a9
 SHA512 
04368b2da7e656ed35a61d0077228f45f9cc32d945b2d83722789a6ab201d82eb4034e2c7ecd78eb8372c949ac6664e3f665cbe99c20e88d1d4ca2d313c7ccce
+DIST firefox-140.3.0esr-son.xpi 272919 BLAKE2B 
ebee9d040e5c4634d404aaef4a0e4b1935670a0ecbe226cbaeab34d76c0fa58fecf1ef7b8fb2e2eebdf3db2f27af9de6e11112450719917f06b304f6bcbc05e5
 SHA512 
6c9ccf615cdd7b45b4dbd6c5ab297bd09eb8b172273e3edadfd62054eb2328582013623500cddd21f74bbadf2844891570208f99c3b9bf2e03a48e30fcd8fd97
+DIST firefox-140.3.0esr-sq.xpi 452858 BLAKE2B 
df1afe6595ce03763650f7871f794c26c85b651f1717bf15f966f6cf24805133dc09e2e567b90f833e7128c41edc4cd0dc6c181402e73f53a15261379aab5737
 SHA512 
f3f0355b49d92b1e2f8e6280a713816a69bc61e57850ebd10187ca3509c6e81d790bbb05730c7b03d94a310b17166a3397dcfaac447d162e10709933b9bebf34
+DIST firefox-140.3.0esr-sr.xpi 453160 BLAKE2B 
8d9db2f1a6d620640285431ee9bec9307a4753eb103abcc51223da114e14c54144aa34d6941f24bb3bdad9f44a81496289a77cc6f4fd0c7aa8612a37469a6e9f
 SHA512 
63492b3c802bafef24e6d01c04bb9118530afae86b4e0d52c719f836a5bb75c6dea5dd3bb7d8618d06690d9a0b8f361ca47812f697b5f69958320d1c95311339
+DIST firefox-140.3.0esr-sv-SE.xpi 435738 BLAKE2B 
367d6c07f65d5b9fb1eb8a56374ac45f7d11bb8198dbb51446124387a884aa22e83721951811ad3f663f3b12f18be7c84d2a2f0a4ed7c5898bcc43542edf3f25
 SHA512 
3c8ae7719ecfda6c6571205abb78d640f79b7bd60e2d6e0a14249e6cde515ec33135b41bc9f34fdb5ca826d4647b3467702f9c1b13d8a8e4a9ec9eff8d3a8a68
+DIST firefox-140.3.0esr-szl.xpi 341475 BLAKE2B 
5a3fe1bb8298e8a5be2c1171681f65fa90c6579c2de813bc80eb0a376f987502fab137719935129d890a99a5722d1af0cd8b65953e25eadeb9f1e0fe59f67a15
 SHA512 
55a28d777fb19edd2ed37b65e64490f1b16b5e2fa685293d7665cd660eb4a4ef59b1407027bfea97c36f1bc1c21ff9018fac65f1bae7d0c4e37e794e4a8cea90
+DIST firefox-140.3.0esr-ta.xpi 337938 BLAKE2B 
c08bac9057b9ccb3cc3c05dee16755dd020fffc57592e98334fab31d26d8ea6ce29180b8c2e9a57b1dcff217581e0de175327b4eda4f3025465455f64a50749d
 SHA512 
6624399d9cad317c63652862ee417509186ff62d418ba2363161dd2a9bcbdf375c0558a1615d359ed8102861384190842d8ca81137b3c535a3afc6ed78af400d
+DIST firefox-140.3.0esr-te.xpi 381990 BLAKE2B 
2c69e7244943664c5bcd05fd7ae8ff14c4a133c8f86a7843cc6367e122d242a16c7e8005cd6973f5f7f86c421f73f793529f4237bfb830fc55bfea7eb6b7f244
 SHA512 
4225d6d5b9a3ec8e9da10caadc3d29a70315f019deefde4fdc2fd63b7c9a5105e8dbf0c7126093a0a2ac4be0c549c75d6e550731902aae6714243afff8283a93
+DIST firefox-140.3.0esr-th.xpi 505273 BLAKE2B 
eb00b3c6f6b4bf58c4de9558d0192e3406d990ca8f66b0bc5fcbba5d77d86251893ba5ad104b9c29a5e7d89b89164fc0573d98a06845c53e4f90160ed4466463
 SHA512 
f98dd8ef6eb9afe93dc4fb55238bb4ad5c06d55828aca597456e2de7b5e47d9af2abd4d9e0978d218636925c7d3aabcca7d27ff79711bce1796f5c9ffeb80a04
+DIST firefox-140.3.0esr-tl.xpi 356440 BLAKE2B 
2130aca73a2ced55f7e95724eef3d29e2f3834dae441dd52b575b0334bc59359edf0f9916b1f8e8d4beaf7dce64950cd6b2bd158c471130f169a0caee32b5d81
 SHA512 
6d59c5bff3bdce81f3424e4d4d6ef1121310c28e82088d03016d0ea47ae14dcaa6bf41b274de14132720c0d6d90727a88cb01939c524045544c6acc1ec7f616a
+DIST firefox-140.3.0esr-tr.xpi 448876 BLAKE2B 
d8bcb0ad7af116dd53262e0291a95e59d122bcdd1dc55d3994a932474f3bbae0f900354618909f89c8b961765dfaa05f4ea1a2a9083f49745993769afa9e959f
 SHA512 
1590132110a5df015f5608ae13696f657f01541d02663676a949119f632bb56ddfae192664659ad0fda82b4510bf3dce36ed5070e4c5b5cf249cccf15c909e0e
+DIST firefox-140.3.0esr-trs.xpi 323799 BLAKE2B 
eab9f3d29c493abe0bda5682e08e088a363e811901bb185d9a08eb058054f04fb007ba87e3ec0193455c08d544b10397cdbd44d272c89a62eadc24e0ce2b2e22
 SHA512 
617de510bcba7a49070833dcd657ebd6e0273bc65ee8dbb4863b9ceeddd0ddc076c641b3111221f8c6387c8fc0b88ebc53fdca7a0e0807bb95354bd5525b5478
+DIST firefox-140.3.0esr-uk.xpi 516298 BLAKE2B 
fda84cb9d12e4791ab6343650d8bc72ceaf39e93d3edbfe09e2146ad6faecd67e03120086f78d0d5ca5f0a6d4a87a7084cd38d8c73fd01dc4756c17892c5f204
 SHA512 
7b063b63bb0b1e71231426f68a7bc00489cd36902baba75f58b0877af4fe9c7cbb3af74df80f2d35c46e3238eb40a0a4b6c924518a64385146af74a5b28b69c3
+DIST firefox-140.3.0esr-ur.xpi 369969 BLAKE2B 
e362fede5912043986b60a17efab226c9d826baa6025d545fa7fe2e4785a68f3cddcdab8d18b7548a6c3fd35c9e86b3ed4514d5c4cad10fe990db16042a824ea
 SHA512 
41cffd7e22d217597d0fe402a89c3cfe3e850578b03e37f64c27d9b7aaefce6b3c132a878a9ccf00ffea2d2ca2f18abdf8e1a1d55c40dc6829d0bf746bc8558c
+DIST firefox-140.3.0esr-uz.xpi 303273 BLAKE2B 
68d7fff0fa745cd67a88cec36ff535117fd5027faeec3b3a092eda9ffca49061d5cbef805d03f8f9a530aa78bd39c333155667fe4cab2404fd825631564afa5e
 SHA512 
d0934b3aa72ae4bce7c188b8ea01388099d5aa197bc2d3289ae6362550be0cd41e1349538e0c3335ddaa0f2ea3cea9668e99eef661f18e7d688d0a987191e323
+DIST firefox-140.3.0esr-vi.xpi 468684 BLAKE2B 
a8cfb92960bfa4c62840b8778f7d7c6ce2a997d7733dfdd077be2403bc70b1c9e007bf88a64a7e9e77b81107de9be2f1b297d7ac63037fd4d5142ef35f8b2434
 SHA512 
9151df2be8f82d6e64eff7bb77dfd009dbbccaaf905e019591b4c70efe2376d7a9b7fadc1600762882eb82f62c5ffc2c447fecd00ede0226ccc2d3ac6b0310a6
+DIST firefox-140.3.0esr-xh.xpi 272584 BLAKE2B 
7fe4ea7e481978a1551976a0448da604722f1449a59cdee5d5b080023fbd5d907b9f8b597ebec13280df8b0dbb66cae5ac3bacaedc918d7f5d50c8bfb5e9c774
 SHA512 
61b017c9d6162767549416d24a195c44c968502b89691ac98da4afe28eac187336bd4da89df238ffe36de1e5a59c103e84b543512b334ef3bae1cad45ba9d7a4
+DIST firefox-140.3.0esr-zh-CN.xpi 460318 BLAKE2B 
ae3fc439620d4a9bfb2a536e07c0056ff45145a72f97be5d26e648b5b1d33fa11946afe57ccfd730f8f87138a74c06c5f9795c124c5065a4f7d15ee799e1a575
 SHA512 
3e1ae976719328205ed5c86d787a25ccd546aa1b877ff86301f682e141277ea7467a3e3ac0835b9e299cce15f6390a4dcd814018d81488692321395c7da849b0
+DIST firefox-140.3.0esr-zh-TW.xpi 463322 BLAKE2B 
bb0279737e060046913db76b9d7990bc0012f256d0cbe02a7f38bcbe48416c8576fb29c771c01cd629f17ba69372091151c62afeb0822e2fc12fcd9568fa5b55
 SHA512 
888d39a834e72651d86315605762231902ad51b3a72bb8fece0144b327d52ced6b8adfb00024af9e9402af74c3c152d82c219cd667cebc201e056d8c3ee57fee
+DIST firefox-140.3.0esr.source.tar.xz 645261332 BLAKE2B 
ec39c0409535aed81b90fbe6bedbbae25f2c2962f36317e433688c8699dd6f6d792f260757b46d1e42c40c48d6ebba4bdeb3e3093bc837768cafe794020224ff
 SHA512 
f2a45352372a7c54bfc3a07652098b55634d111ea88550d33e7e2710d15524d689ee39fbd3b2049643436530e13c237d03e05fb7abd3970c9c18b66e5a84c85a
 DIST firefox-140esr-patches-01.tar.xz 11100 BLAKE2B 
7a433e80efab15386ea69fdabae0354fb7ca431e0370fd642a864e20b2a6b558a187580513bbdd92b2eea98059eb4ebc5eb2117ebdab810643a842eeb0d82da7
 SHA512 
50a33f760d57c52a233fe6769931a5c869f72e68af2492fb068f2e3f2a3de5acdf21beea01dc6069911bd00f15c16b26e40e58a9c4f332d3247bbdceac4cde93
+DIST firefox-140esr-patches-02.tar.xz 13080 BLAKE2B 
36bab07dedb7eed599cd1e5745ce25ad65a49a518482ab895a2302c3f0b179a289bf641673660a27261390a65482e6450ae70998e7811687e7bca08384431ce6
 SHA512 
958a95eaa221ae100f4de81d929365486f4d374a326b91d601d1a1eda0171646330474c802c255b4e4959694563de8b02e3464a1520c2a12f65a25ebac629d89
 DIST firefox-141-patches-02.tar.xz 11400 BLAKE2B 
0986721d628294f2ee9b7b0a417a146418137abfdcda312ececd47ff35d5cfffb098a91e159501100704fe0301481687d2fd24ae76039c384ef41405f21513c7
 SHA512 
320ed49fbf3edec18de396f7b67a605c01335b8d1634b3a7408437db4b99ea633f50298c111e81218ee33535b344b047e7cfcf7dcc7345004af303eda387536e
 DIST firefox-142.0-ach.xpi 294514 BLAKE2B 
33b9b09abb247c47e3dd7969d9aaf280e22255fa638515a8ddf2531185d6331bbf53b1f321a6bd7961e8799e802693a3c5cd57db9b59afa9d7d1487c34315268
 SHA512 
2c5c438e34bd8b1e3a3f2ff532216863d775d0b278a9fe0cbe03bfd0ff8e709537d95328555a021713f1f952d8f5e8ab61242d01c692331d151e3ff8064c1e17
 DIST firefox-142.0-af.xpi 267768 BLAKE2B 
a9297948c524ee96b7642e61944ea9adb6c1f339f4a341791a3381a48fe522ecb8bf06bddc3f256d0bc06762f98e39c0bf76131722713daad90bd685bd521e74
 SHA512 
6ca90764821f482cb8fc43b3f06e8bc9b45724d7a4a4d7779053a9fb19b2fcde7ae2b34e5c87a934fb93686427a0b7db03b7a5ce2164f92fffe73c8d258353fa

diff --git a/www-client/firefox/firefox-140.3.0.ebuild 
b/www-client/firefox/firefox-140.3.0.ebuild
new file mode 100644
index 000000000000..7bfa18cc22d2
--- /dev/null
+++ b/www-client/firefox/firefox-140.3.0.ebuild
@@ -0,0 +1,1387 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-140esr-patches-02.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..14} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+VIRTUALX_REQUIRED="manual"
+
+# Information about the bundled wasi toolchain from
+# https://github.com/WebAssembly/wasi-sdk/
+WASI_SDK_VER=27.0
+WASI_SDK_LLVM_VER=20
+
+MOZ_ESR=yes
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+       MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+       # Convert the ebuild version to the upstream Mozilla version
+       MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+       MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+       MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+       # ESR releases have slightly different version numbers
+       MOZ_PV="${MOZ_PV}esr"
+       HOMEPAGE="https://www.firefox.com https://www.firefox.com/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.firefox.com";
+       SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 
multiprocessing \
+       optfeature pax-utils python-any-r1 readme.gentoo-r1 rust 
toolchain-funcs virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}";
+
+if [[ ${PV} == *_rc* ]] ; then
+       
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}";
+fi
+
+PATCH_URIS=(
+       https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+DESCRIPTION="Firefox Web Browser"
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}
+       loong? (
+               
https://dev.gentoo.org/~xen0n/distfiles/www-client/${MOZ_PN}/${FIREFOX_LOONG_PATCHSET}
+       )
+       wasm-sandbox? (
+               amd64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz
 )
+               arm64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz
 )
+       )"
+
+S="${WORKDIR}/${PN}-${PV%_*}"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio 
selinux sndio"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent 
+system-libvpx"
+IUSE+=" system-pipewire system-png +system-webp test wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell +jumbo-build openh264 +telemetry 
wasm-sandbox"
+
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( jumbo-build )
+       wayland? ( dbus )
+       wifi? ( dbus )
+"
+
+RESTRICT="!test? ( test )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+       selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+       $(llvm_gen_dep '
+               llvm-core/clang:${LLVM_SLOT}
+               llvm-core/llvm:${LLVM_SLOT}
+               clang? (
+                       llvm-core/lld:${LLVM_SLOT}
+                       pgo? ( 
llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[profile] )
+               )
+               wasm-sandbox? ( llvm-core/lld:${LLVM_SLOT} )
+       ')
+       app-alternatives/awk
+       app-arch/unzip
+       app-arch/zip
+       >=dev-util/cbindgen-0.27.0
+       net-libs/nodejs
+       virtual/pkgconfig
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               !X? (
+                       gui-wm/tinywl
+                       x11-misc/xkeyboard-config
+               )
+       )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       dev-libs/expat
+       dev-libs/glib:2
+       dev-libs/libffi:=
+       >=dev-libs/nss-3.112.1
+       >=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-1.4.7-r2:= )
+       system-png? ( >=media-libs/libpng-1.6.45:0=[apng] )
+       system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+       wayland? (
+               >=media-libs/libepoxy-1.5.10-r1
+               x11-libs/gtk+:3[wayland]
+       )
+       wifi? (
+               kernel_linux? (
+                       || (
+                               net-misc/networkmanager
+                               net-misc/connman[networkmanager]
+                       )
+                       sys-apps/dbus
+               )
+       )
+       X? (
+               virtual/opengl
+               x11-libs/cairo[X]
+               x11-libs/gtk+:3[X]
+               x11-libs/libX11
+               x11-libs/libXcomposite
+               x11-libs/libXdamage
+               x11-libs/libXext
+               x11-libs/libXfixes
+               x11-libs/libXrandr
+               x11-libs/libxcb:=
+       )"
+RDEPEND="${COMMON_DEPEND}
+       hwaccel? (
+               media-video/libva-utils
+               sys-apps/pciutils
+       )
+       jack? ( virtual/jack )
+       openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+       X? (
+               x11-base/xorg-proto
+               x11-libs/libICE
+               x11-libs/libSM
+       )"
+
+# ESR and rapid dependencies.
+if [[ -n ${MOZ_ESR} ]] ; then
+       RDEPEND+=" !www-client/firefox:rapid"
+else
+       RDEPEND+=" !www-client/firefox:esr"
+fi
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+       MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+       if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then
+               einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM 
slot ${LLVM_SLOT} ..." >&2
+               return 1
+       fi
+
+       if use clang && ! tc-ld-is-mold ; then
+               if ! has_version -b "llvm-core/lld:${LLVM_SLOT}" ; then
+                       einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot 
use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+       fi
+
+       if use pgo ; then
+               if ! has_version -b 
"=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then
+                       einfo 
"=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!" >&2
+                       einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+       fi
+
+       einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+MOZ_LANGS=(
+       af ar ast be bg br ca cak cs cy da de dsb
+       el en-CA en-GB en-US es-AR es-ES et eu
+       fi fr fy-NL ga-IE gd gl he hr hsb hu
+       id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO
+       pa-IN pl pt-BR pt-PT rm ro ru
+       sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW
+)
+
+# Firefox-only LANGS
+MOZ_LANGS+=( ach )
+MOZ_LANGS+=( an )
+MOZ_LANGS+=( az )
+MOZ_LANGS+=( bn )
+MOZ_LANGS+=( bs )
+MOZ_LANGS+=( ca-valencia )
+MOZ_LANGS+=( eo )
+MOZ_LANGS+=( es-CL )
+MOZ_LANGS+=( es-MX )
+MOZ_LANGS+=( fa )
+MOZ_LANGS+=( ff )
+MOZ_LANGS+=( fur )
+MOZ_LANGS+=( gn )
+MOZ_LANGS+=( gu-IN )
+MOZ_LANGS+=( hi-IN )
+MOZ_LANGS+=( hy-AM )
+MOZ_LANGS+=( ia )
+MOZ_LANGS+=( km )
+MOZ_LANGS+=( kn )
+MOZ_LANGS+=( lij )
+MOZ_LANGS+=( mk )
+MOZ_LANGS+=( mr )
+MOZ_LANGS+=( my )
+MOZ_LANGS+=( ne-NP )
+MOZ_LANGS+=( oc )
+MOZ_LANGS+=( sc )
+MOZ_LANGS+=( sco )
+MOZ_LANGS+=( si )
+MOZ_LANGS+=( skr )
+MOZ_LANGS+=( son )
+MOZ_LANGS+=( szl )
+MOZ_LANGS+=( ta )
+MOZ_LANGS+=( te )
+MOZ_LANGS+=( tl )
+MOZ_LANGS+=( trs )
+MOZ_LANGS+=( ur )
+MOZ_LANGS+=( xh )
+
+mozilla_set_globals() {
+       # https://bugs.gentoo.org/587334
+       local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+               fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+       )
+
+       local lang xflag
+       for lang in "${MOZ_LANGS[@]}" ; do
+               # en and en_US are handled internally
+               if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+                       continue
+               fi
+
+               # strip region subtag if $lang is in the list
+               if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+                       xflag=${lang%%-*}
+               else
+                       xflag=${lang}
+               fi
+
+               SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+               SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> 
${MOZ_P_DISTFILES}-${lang}.xpi"
+               SRC_URI+=" )"
+               IUSE+=" l10n_${xflag/[_@]/-}"
+       done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -ne 1 ]] ; then
+               die "${FUNCNAME} requires exact one argument"
+       fi
+
+       einfo "Clearing cargo checksums for ${1} ..."
+
+       sed -i \
+               -e 's/\("files":{\)[^}]*/\1/' \
+               "${S}"/third_party/rust/${1}/.cargo-checksum.json || die
+}
+
+moz_install_xpi() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local DESTDIR=${1}
+       shift
+
+       insinto "${DESTDIR}"
+
+       local emid xpi_file xpi_tmp_dir
+       for xpi_file in "${@}" ; do
+               emid=
+               xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+               # Unpack XPI
+               unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+               # Determine extension ID
+               if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+                       emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; 
s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from install.rdf"
+               elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+                       emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' 
"${xpi_tmp_dir}/manifest.json")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from manifest.json"
+               else
+                       die "failed to determine extension id"
+               fi
+
+               einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+               newins "${xpi_file}" "${emid}.xpi"
+       done
+}
+
+mozconfig_add_options_ac() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_add_options_mk() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_use_enable() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_enable "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+mozconfig_use_with() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_with "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+virtwl() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+       [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to 
be set; try xdg_environment_reset"
+       tinywl -h >/dev/null || die 'tinywl -h failed'
+
+       local VIRTWL VIRTWL_PID
+       coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo 
$WAYLAND_DISPLAY; read _; kill $PPID'; }
+       local -x WAYLAND_DISPLAY
+       read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+       debug-print "${FUNCNAME}: $@"
+       "$@"
+       local r=$?
+
+       [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+       exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+       return $r
+}
+
+pkg_pretend() {
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+               # Ensure we have enough disk space to compile
+               if use pgo || use debug ; then
+                       CHECKREQS_DISK_BUILD="14300M"
+               elif tc-is-lto ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               fi
+
+               check-reqs_pkg_pretend
+       fi
+}
+
+pkg_setup() {
+
+       # Get LTO from environment; export after this phase for use in 
src_configure (etc)
+       use_lto=no
+
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+
+               if tc-is-lto; then
+                       use_lto=yes
+                       # LTO is handled via configure
+                       filter-lto
+               fi
+
+               if use pgo ; then
+                       if ! has userpriv ${FEATURES} ; then
+                               eerror "Building ${PN} with USE=pgo and 
FEATURES=-userpriv is not supported!"
+                       fi
+               fi
+
+               if [[ ${use_lto} = yes ]]; then
+                       # -Werror=lto-type-mismatch -Werror=odr are going to 
fail with GCC,
+                       # bmo#1516758, bgo#942288
+                       filter-flags -Werror=lto-type-mismatch -Werror=odr
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || use debug ; then
+                       CHECKREQS_DISK_BUILD="14300M"
+               elif [[ ${use_lto} == "yes" ]] ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               fi
+
+               check-reqs_pkg_setup
+               llvm-r1_pkg_setup
+               rust_pkg_setup
+               python-any-r1_pkg_setup
+
+               # Avoid PGO profiling problems due to enviroment leakage
+               # These should *always* be cleaned up anyway
+               unset \
+                       DBUS_SESSION_BUS_ADDRESS \
+                       DISPLAY \
+                       ORBIT_SOCKETDIR \
+                       SESSION_MANAGER \
+                       XAUTHORITY \
+                       XDG_CACHE_HOME \
+                       XDG_SESSION_COOKIE
+
+               # Build system is using /proc/self/oom_score_adj, bug #604394
+               addpredict /proc/self/oom_score_adj
+
+               if use pgo ; then
+                       # Update 105.0: "/proc/self/oom_score_adj" isn't enough 
anymore with pgo, but not sure
+                       # whether that's due to better OOM handling by Firefox 
(bmo#1771712), or portage
+                       # (PORTAGE_SCHEDULING_POLICY) update...
+                       addpredict /proc
+
+                       # Clear tons of conditions, since PGO is 
hardware-dependant.
+                       addpredict /dev
+               fi
+
+               if ! mountpoint -q /dev/shm ; then
+                       # If /dev/shm is not available, configure is known to 
fail with
+                       # a traceback report referencing 
/usr/lib/pythonN.N/multiprocessing/synchronize.py
+                       ewarn "/dev/shm is not mounted -- expect build 
failures!"
+               fi
+
+               # Google API keys (see 
http://www.chromium.org/developers/how-tos/api-keys)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+                       
MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+               fi
+
+               if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+                       
MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+               fi
+
+               # Mozilla API keys (see 
https://location.services.mozilla.com/api)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+                       
MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+               fi
+
+               # Ensure we use C locale when building, bug #746215
+               export LC_ALL=C
+       fi
+
+       export use_lto
+
+       CONFIG_CHECK="~SECCOMP"
+       WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to 
play DRM-protected content."
+       linux-info_pkg_setup
+}
+
+src_unpack() {
+       local _lp_dir="${WORKDIR}/language_packs"
+       local _src_file
+
+       if [[ ! -d "${_lp_dir}" ]] ; then
+               mkdir "${_lp_dir}" || die
+       fi
+
+       for _src_file in ${A} ; do
+               if [[ ${_src_file} == *.xpi ]]; then
+                       cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die 
"Failed to copy '${_src_file}' to '${_lp_dir}'!"
+               else
+                       unpack ${_src_file}
+               fi
+       done
+}
+
+src_prepare() {
+       if [[ ${use_lto} == "yes" ]]; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
+       fi
+
+       # Workaround for bgo#915651 on musl
+       if use elibc_glibc ; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die
+       fi
+
+       eapply "${WORKDIR}/firefox-patches"
+       use loong && eapply "${WORKDIR}/firefox-loong-patches"
+
+       # Allow user to apply any additional patches without modifing ebuild
+       eapply_user
+
+       # Make cargo respect MAKEOPTS
+       export CARGO_BUILD_JOBS="$(makeopts_jobs)"
+
+       # Workaround for bgo#915651
+       if ! use elibc_glibc ; then
+               if use amd64 ; then
+                       export RUST_TARGET="x86_64-unknown-linux-musl"
+               elif use x86 ; then
+                       export RUST_TARGET="i686-unknown-linux-musl"
+               elif use arm64 ; then
+                       export RUST_TARGET="aarch64-unknown-linux-musl"
+               elif use loong; then
+                       # Only the LP64D ABI of LoongArch64 is actively 
supported among
+                       # the wider Linux ecosystem, so the assumption is safe.
+                       export RUST_TARGET="loongarch64-unknown-linux-musl"
+               elif use ppc64 ; then
+                       export RUST_TARGET="powerpc64le-unknown-linux-musl"
+               elif use riscv ; then
+                       # We can pretty safely rule out any 32-bit riscvs, but 
64-bit riscvs also have tons of
+                       # different ABIs available. 
riscv64gc-unknown-linux-musl seems to be the best working
+                       # guess right now though.
+                       elog "riscv detected, forcing a riscv64 target for now."
+                       export RUST_TARGET="riscv64gc-unknown-linux-musl"
+               else
+                       die "Unknown musl chost, please post a new bug with 
your rustc -vV along with emerge --info"
+               fi
+       fi
+
+       # Pre-built wasm-sandbox path manipulation.
+       if use wasm-sandbox ; then
+               if use amd64 ; then
+                       export wasi_arch="x86_64"
+               elif use arm64 ; then
+                       export wasi_arch="arm64"
+               else
+                       die "wasm-sandbox enabled on unknown/unsupported arch!"
+               fi
+
+               sed -i \
+                       -e "s:%%PORTAGE_WORKDIR%%:${WORKDIR}:" \
+                       -e "s:%%WASI_ARCH%%:${wasi_arch}:" \
+                       -e "s:%%WASI_SDK_VER%%:${WASI_SDK_VER}:" \
+                       -e "s:%%WASI_SDK_LLVM_VER%%:${WASI_SDK_LLVM_VER}:" \
+                       toolkit/moz.configure || die "Failed to update 
wasi-related paths."
+       fi
+
+       # Make LTO respect MAKEOPTS
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/build/moz.configure/lto-pgo.configure || die "Failed 
sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/chromium/build/toolchain/get_cpu_count.py || 
die "Failed sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed 
sedding multiprocessing.cpu_count"
+
+       # sed-in toolchain prefix
+       sed -i \
+               -e "s/objdump/${CHOST}-objdump/" \
+               "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py 
|| die "sed failed to set toolchain prefix"
+
+       sed -i \
+               -e 's/ccache_stats = None/return None/' \
+               "${S}"/python/mozbuild/mozbuild/controller/building.py || die 
"sed failed to disable ccache stats call"
+
+       einfo "Removing pre-built binaries ..."
+
+       find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) 
-print -delete || die
+
+       # Clear checksums from cargo crates we've manually patched.
+       # moz_clear_vendor_checksums xyz
+
+       # Respect choice for "jumbo-build"
+       # Changing the value for FILES_PER_UNIFIED_FILE may not work, see 
#905431
+       if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then
+               local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16}
+               elog ""
+               elog "jumbo-build defaults modified to 
${my_files_per_unified_file}."
+               elog "if you get a build failure, try undefining 
FILES_PER_UNIFIED_FILE,"
+               elog "if that fails try -jumbo-build before opening a bug 
report."
+               elog ""
+
+               sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 
16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \
+                       python/mozbuild/mozbuild/frontend/data.py ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
python/mozbuild/mozbuild/frontend/data.py"
+               sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE 
= "${my_files_per_unified_file}"/" \
+                       js/src/moz.build ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
js/src/moz.build"
+       fi
+
+       # Create build dir
+       BUILD_DIR="${WORKDIR}/${PN}_build"
+       mkdir -p "${BUILD_DIR}" || die
+
+       # Write API keys to disk
+       echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+       echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || 
die
+       echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+       xdg_environment_reset
+}
+
+src_configure() {
+       # Show flags set at the beginning
+       einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       local have_switched_compiler=
+       if use clang; then
+               # Force clang
+               einfo "Enforcing the use of clang due to USE=clang ..."
+
+               local version_clang=$(clang --version 2>/dev/null | grep -F -- 
'clang version' | awk '{ print $3 }')
+               [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 
"${version_clang}")
+               [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+               if tc-is-gcc; then
+                       have_switched_compiler=yes
+               fi
+
+               AR=llvm-ar
+               CC=${CHOST}-clang-${version_clang}
+               CXX=${CHOST}-clang++-${version_clang}
+               NM=llvm-nm
+               RANLIB=llvm-ranlib
+       elif ! use clang && ! tc-is-gcc ; then
+               # Force gcc
+               have_switched_compiler=yes
+               einfo "Enforcing the use of gcc due to USE=-clang ..."
+               AR=gcc-ar
+               CC=${CHOST}-gcc
+               CXX=${CHOST}-g++
+               NM=gcc-nm
+               RANLIB=gcc-ranlib
+       fi
+
+       if [[ -n "${have_switched_compiler}" ]] ; then
+               # Because we switched active compiler we have to ensure
+               # that no unsupported flags are set
+               strip-unsupported-flags
+       fi
+
+       # Ensure we use correct toolchain,
+       # AS is used in a non-standard way by upstream, #bmo1654031
+       export HOST_CC="$(tc-getBUILD_CC)"
+       export HOST_CXX="$(tc-getBUILD_CXX)"
+       export AS="$(tc-getCC) -c"
+
+       # Configuration tests expect llvm-readelf output, bug 913130
+       READELF="llvm-readelf"
+
+       tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
+
+       # Pass the correct toolchain paths through cbindgen
+       if tc-is-cross-compiler ; then
+               export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} 
--target=${CHOST} ${BINDGEN_CFLAGS-}"
+       fi
+
+       # Set MOZILLA_FIVE_HOME
+       export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+       # python/mach/mach/mixin/process.py fails to detect SHELL
+       export SHELL="${EPREFIX}/bin/bash"
+
+       # Set state path
+       export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+       # Set MOZCONFIG
+       export MOZCONFIG="${S}/.mozconfig"
+
+       # Initialize MOZCONFIG
+       mozconfig_add_options_ac '' --enable-application=browser
+       mozconfig_add_options_ac '' --enable-project=browser
+
+       # Set Gentoo defaults
+       if use telemetry; then
+               export MOZILLA_OFFICIAL=1
+       fi
+
+       mozconfig_add_options_ac 'Gentoo default' \
+               --allow-addon-sideload \
+               --disable-cargo-incremental \
+               --disable-crashreporter \
+               --disable-disk-remnant-avoidance \
+               --disable-geckodriver \
+               --disable-install-strip \
+               --disable-legacy-profile-creation \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-updater \
+               --disable-wmf \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-packed-relative-relocs \
+               --enable-release \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-ffi \
+               --with-system-gbm \
+               --with-system-libdrm \
+               --with-system-nspr \
+               --with-system-nss \
+               --with-system-pixman \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --enable-update-channel=${update_channel}
+
+       # Whitelist to allow unkeyworded arches to build with 
"--disable-rust-simd" by default.
+       if use amd64 || use arm64 || use ppc64 || use loong || use riscv ; then
+               mozconfig_add_options_ac '' --enable-rust-simd
+       fi
+
+       # For future keywording: This is currently (97.0) only supported on:
+       # amd64, arm, arm64 & x86.
+       # Might want to flip the logic around if Firefox is to support more 
arches.
+       # bug 833001, bug 903411#c8
+       if use loong || use ppc64 || use riscv; then
+               mozconfig_add_options_ac '' --disable-sandbox
+       else
+               mozconfig_add_options_ac '' --enable-sandbox
+       fi
+
+       # riscv-related options, bgo#947337, bgo#947338
+       if use riscv ; then
+               mozconfig_add_options_ac 'Disable JIT for RISC-V 64' 
--disable-jit
+               mozconfig_add_options_ac 'Disable webrtc for RISC-V' 
--disable-webrtc
+       fi
+
+       if [[ -s "${S}/api-google.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 
}') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+       else
+               einfo "Building without Google API key ..."
+       fi
+
+       if [[ -s "${S}/api-location.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 
}') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-location-service-api-keyfile="${S}/api-location.key"
+       else
+               einfo "Building without Location API key ..."
+       fi
+
+       if [[ -s "${S}/api-mozilla.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 
}') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+       else
+               einfo "Building without Mozilla API key ..."
+       fi
+
+       mozconfig_use_with system-av1
+       mozconfig_use_with system-harfbuzz
+       mozconfig_use_with system-icu
+       mozconfig_use_with system-jpeg
+       mozconfig_use_with system-libevent
+       mozconfig_use_with system-libvpx
+       mozconfig_use_with system-pipewire
+       mozconfig_use_with system-png
+       mozconfig_use_with system-webp
+
+       mozconfig_use_enable dbus
+       mozconfig_use_enable libproxy
+
+       use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme
+
+       if use hardened ; then
+               mozconfig_add_options_ac "+hardened" --enable-hardening
+               append-ldflags "-Wl,-z,relro -Wl,-z,now"
+
+               # Increase the FORTIFY_SOURCE value, #910071.
+               sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' 
"${S}"/build/moz.configure/toolchain.configure || die
+       fi
+
+       local myaudiobackends=""
+       use jack && myaudiobackends+="jack,"
+       use sndio && myaudiobackends+="sndio,"
+       use pulseaudio && myaudiobackends+="pulseaudio,"
+       ! use pulseaudio && myaudiobackends+="alsa,"
+
+       mozconfig_add_options_ac '--enable-audio-backends' 
--enable-audio-backends="${myaudiobackends::-1}"
+
+       mozconfig_use_enable wifi necko-wifi
+
+       ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' 
--disable-unified-build
+
+       if use X && use wayland ; then
+               mozconfig_add_options_ac '+x11+wayland' 
--enable-default-toolkit=cairo-gtk3-x11-wayland
+       elif ! use X && use wayland ; then
+               mozconfig_add_options_ac '+wayland' 
--enable-default-toolkit=cairo-gtk3-wayland-only
+       else
+               mozconfig_add_options_ac '+x11' 
--enable-default-toolkit=cairo-gtk3-x11-only
+       fi
+
+       # wasm-sandbox
+       # Since graphite2 is one of the sandboxed libraries, system-graphite2 
obviously can't work with +wasm-sandbox.
+       if use wasm-sandbox ; then
+               mozconfig_add_options_ac '+wasm-sandbox' 
--with-wasi-sysroot="${WORKDIR}/wasi-sdk-${WASI_SDK_VER}-${wasi_arch}-linux/share/wasi-sysroot/"
+       else
+               mozconfig_add_options_ac 'no wasm-sandbox' 
--without-wasm-sandboxed-libraries
+               mozconfig_use_with system-harfbuzz system-graphite2
+       fi
+
+       if [[ ${use_lto} == "yes" ]] ; then
+               if use clang ; then
+                       # Upstream only supports lld or mold when using clang.
+                       if tc-ld-is-mold ; then
+                               # mold expects the -flto line from *FLAGS 
configuration, bgo#923119
+                               append-ldflags "-flto=thin"
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang and USE=lto" --enable-linker=lld
+                       fi
+
+                       mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+               else
+                       # ThinLTO is currently broken, see bmo#1644409.
+                       # mold does not support gcc+lto combination.
+                       mozconfig_add_options_ac '+lto' --enable-lto=full
+                       mozconfig_add_options_ac "linker is set to bfd" 
--enable-linker=bfd
+               fi
+
+       else
+               # Avoid auto-magic on linker
+               if use clang ; then
+                       # lld is upstream's default
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang" --enable-linker=lld
+                       fi
+
+               else
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "linker is set to bfd 
due to USE=-clang" --enable-linker=bfd
+                       fi
+               fi
+       fi
+
+       # PGO was moved outside lto block to allow building pgo without lto.
+       if use pgo ; then
+               mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+               # Avoid compressing just-built instrumented Firefox with
+               # high levels of compression. Just use tar as a container
+               # to save >=10 minutes.
+               export MOZ_PKG_FORMAT=tar
+
+               if use clang ; then
+                       # Used in build/pgo/profileserver.py
+                       export LLVM_PROFDATA="llvm-profdata"
+               fi
+       fi
+
+       mozconfig_use_enable debug
+       if use debug ; then
+               mozconfig_add_options_ac '+debug' --disable-optimize
+               mozconfig_add_options_ac '+debug' --enable-jemalloc
+               mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+       else
+               mozconfig_add_options_ac 'Gentoo defaults' 
--disable-real-time-tracing
+
+               if is-flag '-g*' ; then
+                       if use clang ; then
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols=$(get-flag '-g*')
+                       else
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols
+                       fi
+               else
+                       mozconfig_add_options_ac 'Gentoo default' 
--disable-debug-symbols
+               fi
+
+               if is-flag '-O0' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O0
+               elif is-flag '-O4' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O4
+               elif is-flag '-O3' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O3
+               elif is-flag '-O1' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O1
+               elif is-flag '-Os' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-Os
+               else
+                       mozconfig_add_options_ac "Gentoo default" 
--enable-optimize=-O2
+               fi
+       fi
+
+       # Debug flag was handled via configure
+       filter-flags '-g*'
+
+       # Optimization flag was handled via configure
+       filter-flags '-O*'
+
+       # elf-hack
+       # Filter "-z,pack-relative-relocs" and let the build system handle it 
instead.
+       if use amd64 || use x86 ; then
+               filter-flags "-z,pack-relative-relocs"
+
+               if tc-ld-is-mold ; then
+                       # relr-elf-hack is currently broken with mold, 
bgo#916259
+                       mozconfig_add_options_ac 'disable elf-hack with mold 
linker' --disable-elf-hack
+               else
+                       mozconfig_add_options_ac 'relr elf-hack' 
--enable-elf-hack=relr
+               fi
+       elif use loong || use ppc64 || use riscv ; then
+               # '--disable-elf-hack' is not recognized on loong/ppc64/riscv,
+               # see bgo #917049, #930046
+               :;
+       else
+               mozconfig_add_options_ac 'disable elf-hack on non-supported 
arches' --disable-elf-hack
+       fi
+
+       if ! use elibc_glibc; then
+               mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+       fi
+
+       # System-av1 fix
+       use system-av1 && append-ldflags "-Wl,--undefined-version"
+
+       # Make revdep-rebuild.sh happy; Also required for musl
+       append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
+
+       # Pass $MAKEOPTS to build system
+       export MOZ_MAKE_FLAGS="${MAKEOPTS}"
+
+       # Use system's Python environment
+       export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach
+
+       export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
+
+       if ! use telemetry; then
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_CRASHREPORTER=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_DATA_REPORTING=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_SERVICES_HEALTHREPORT=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_TELEMETRY_REPORTING=0"
+       fi
+
+       mozconfig_use_enable test tests
+
+       # Disable notification when build system has finished
+       export MOZ_NOSPAM=1
+
+       # Portage sets XARGS environment variable to "xargs -r" by default which
+       # breaks build system's check_prog() function which doesn't support 
arguments
+       mozconfig_add_options_ac 'Gentoo default' 
"XARGS=${EPREFIX}/usr/bin/xargs"
+
+       # Set build dir
+       mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+       # Show flags we will use
+       einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       # Handle EXTRA_CONF and show summary
+       local ac opt hash reason
+
+       # Apply EXTRA_ECONF entries to $MOZCONFIG
+       if [[ -n ${EXTRA_ECONF} ]] ; then
+               IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+               for opt in "${ac[@]}"; do
+                       mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+               done
+       fi
+
+       echo
+       echo "=========================================================="
+       echo "Building ${PF} with the following configuration"
+       grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+               [[ -z ${hash} || ${hash} == \# ]] \
+                       || die "error reading mozconfig: ${ac} ${opt} ${hash} 
${reason}"
+               printf "    %-30s  %s\n" "${opt}" "${reason:-mozilla.org 
default}"
+       done
+       echo "=========================================================="
+       echo
+
+       ./mach configure || die
+}
+
+src_compile() {
+       local virtx_cmd=
+
+       if [[ ${use_lto} == "yes" ]] && tc-ld-is-mold ; then
+               # increase ulimit with mold+lto, bugs #892641, #907485
+               if ! ulimit -n 16384 1>/dev/null 2>&1 ; then
+                       ewarn "Unable to modify ulimits - building with 
mold+lto might fail due to low ulimit -n resources."
+                       ewarn "Please see bugs #892641 & #907485."
+               else
+                       ulimit -n 16384
+               fi
+       fi
+
+       if use pgo; then
+               # Reset and cleanup environment variables used by GNOME/XDG
+               gnome2_environment_reset
+
+               addpredict /root
+
+               if ! use X; then
+                       virtx_cmd=virtwl
+               else
+                       virtx_cmd=virtx
+               fi
+       fi
+
+       if ! use X; then
+               local -x GDK_BACKEND=wayland
+       else
+               local -x GDK_BACKEND=x11
+       fi
+
+       ${virtx_cmd} ./mach build --verbose || die
+}
+
+src_test() {
+       # 
https://firefox-source-docs.mozilla.org/testing/automated-testing/index.html
+       local -a failures=()
+
+       # Some tests respect this
+       local -x MOZ_HEADLESS=1
+
+       # Check testing/mach_commands.py
+       einfo "Testing with cppunittest ..."
+       ./mach cppunittest
+       local ret=$?
+       if [[ ${ret} -ne 0 ]]; then
+               eerror "Test suite cppunittest failed with error code ${ret}"
+               failures+=( cppunittest )
+       fi
+
+       if [[ ${#failures} -eq 0 ]]; then
+               einfo "Test suites succeeded"
+       else
+               die "Test suites failed: ${failures[@]}"
+       fi
+}
+
+src_install() {
+       # xpcshell is getting called during install
+       pax-mark m \
+               "${BUILD_DIR}"/dist/bin/xpcshell \
+               "${BUILD_DIR}"/dist/bin/${PN} \
+               "${BUILD_DIR}"/dist/bin/plugin-container
+
+       DESTDIR="${D}" ./mach install || die
+
+       # Upstream cannot ship symlink but we can (bmo#658850)
+       rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+       dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+       # Don't install llvm-symbolizer from llvm-core/llvm package
+       if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then
+               rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die
+       fi
+
+       # Install policy (currently only used to disable application updates)
+       insinto "${MOZILLA_FIVE_HOME}/distribution"
+       newins "${FILESDIR}"/distribution.ini distribution.ini
+       newins "${FILESDIR}"/disable-auto-update.policy.json policies.json
+
+       # Install system-wide preferences
+       local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences"
+       insinto "${PREFS_DIR}"
+       newins "${FILESDIR}"/gentoo-default-prefs.js gentoo-prefs.js
+
+       local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js"
+
+       # Set dictionary path to use system hunspell
+       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
spellchecker.dictionary_path pref"
+       pref("spellchecker.dictionary_path", "${EPREFIX}/usr/share/myspell");
+       EOF
+
+       # Force hwaccel prefs if USE=hwaccel is enabled
+       if use hwaccel ; then
+               cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-r2 \
+               >>"${GENTOO_PREFS}" \
+               || die "failed to add prefs to force hardware-accelerated 
rendering to all-gentoo.js"
+
+               if use wayland; then
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
hwaccel wayland prefs"
+                       pref("gfx.x11-egl.force-enabled", false);
+                       EOF
+               else
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
hwaccel x11 prefs"
+                       pref("gfx.x11-egl.force-enabled", true);
+                       EOF
+               fi
+
+               # Install the vaapitest binary on supported arches (122.0 
supports all platforms, bmo#1865969)
+               exeinto "${MOZILLA_FIVE_HOME}"
+               doexe "${BUILD_DIR}"/dist/bin/vaapitest
+
+               # Install the v4l2test on supported arches (+ arm, + riscv64 
when keyworded)
+               if use arm64 ; then
+                       exeinto "${MOZILLA_FIVE_HOME}"
+                       doexe "${BUILD_DIR}"/dist/bin/v4l2test
+               fi
+       fi
+
+       if ! use gmp-autoupdate ; then
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       einfo "Disabling auto-update for ${plugin} plugin ..."
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to 
disable autoupdate for ${plugin} media plugin"
+                       pref("media.${plugin}.autoupdate", false);
+                       EOF
+               done
+       fi
+
+       # Force the graphite pref if USE=system-harfbuzz is enabled, since the 
pref cannot disable it
+       if use system-harfbuzz ; then
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
gfx.font_rendering.graphite.enabled pref"
+               sticky_pref("gfx.font_rendering.graphite.enabled", true);
+               EOF
+       fi
+
+       # Add telemetry config prefs, just in case something happens in future 
and telemetry build
+       # options stop working.
+       if ! use telemetry ; then
+               cat "${FILESDIR}"/gentoo-telemetry-prefs.js >>"${GENTOO_PREFS}" 
|| die "failed to set telemetry prefs"
+       fi
+
+       # Install language packs
+       local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name 
'*.xpi') )
+       if [[ -n "${langpacks}" ]] ; then
+               moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" 
"${langpacks[@]}"
+       fi
+
+       # Install icons
+       local icon_srcdir="${S}/browser/branding/official"
+
+       # Prefer the upstream svg file they use when packaging flatpak so it's 
always up-to-date.
+       insinto /usr/share/icons/hicolor/symbolic/apps
+       newins 
"${S}"/browser/installer/linux/app/flatpak/files/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg
 firefox-symbolic.svg
+       dosym -r /usr/share/icons/hicolor/symbolic/apps/firefox-symbolic.svg 
/usr/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg
+
+       local icon size
+       for icon in "${icon_srcdir}"/default*.png ; do
+               size=${icon%.png}
+               size=${size##*/default}
+
+               if [[ ${size} -eq 48 ]] ; then
+                       newicon "${icon}" ${PN}.png
+               fi
+
+               newicon -s ${size} "${icon}" ${PN}.png
+       done
+
+       # Install menu
+       local app_name="Mozilla ${MOZ_PN^}"
+       local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop"
+       local exec_command="${PN}"
+       local icon="${PN}"
+       local use_wayland="false"
+
+       if [[ -n ${MOZ_ESR} ]] ; then
+               local desktop_filename="${PN}-esr.desktop"
+       else
+               local desktop_filename="${PN}.desktop"
+       fi
+
+       if use wayland ; then
+               use_wayland="true"
+       fi
+
+       cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+       sed -i \
+               -e "s:@NAME@:${app_name}:" \
+               -e "s:@EXEC@:${exec_command}:" \
+               -e "s:@ICON@:${icon}:" \
+               "${WORKDIR}/${PN}.desktop-template" || die
+
+       newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+       rm "${WORKDIR}/${PN}.desktop-template" || die
+
+       if use gnome-shell ; then
+               # Install search provider for Gnome
+               insinto /usr/share/gnome-shell/search-providers/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini
+
+               insinto /usr/share/dbus-1/services/
+               doins 
browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service
+
+               # Toggle between rapid and esr desktop file names
+               if [[ -n ${MOZ_ESR} ]] ; then
+                       sed -e "s/firefox.desktop/${desktop_filename}/g" \
+                               -i 
"${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini"
 ||
+                                       die "Failed to sed 
org.mozilla.firefox.search-provider.ini file."
+               fi
+
+               # Make the dbus service aware of a previous session, bgo#939196
+               sed -e \
+                       
"s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox 
--dbus-service \/usr\/bin\/firefox/g" \
+                       -i 
"${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" ||
+                               die "Failed to sed 
org.mozilla.firefox.SearchProvider.service dbus file"
+
+               # Update prefs to enable Gnome search provider
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable 
gnome-search-provider via prefs"
+               pref("browser.gnome-search-provider.enabled", true);
+               EOF
+       fi
+
+       # Install wrapper script
+       [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+       newbin "${FILESDIR}/${PN}-r1.sh" ${PN}
+
+       # Update wrapper
+       sed -i \
+               -e "s:@PREFIX@:${EPREFIX}/usr:" \
+               -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+               "${ED}/usr/bin/${PN}" || die
+
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       if ! use gmp-autoupdate ; then
+               elog "USE='-gmp-autoupdate' has disabled the following plugins 
from updating or"
+               elog "installing into new profiles:"
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       elog "\t ${plugin}"
+               done
+               elog
+       fi
+
+       # bug 835078
+       if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+               ewarn "You have nouveau drivers installed in your system and 
'hwaccel' "
+               ewarn "enabled for Firefox. Nouveau / your GPU might not 
support the "
+               ewarn "required EGL, so either disable 'hwaccel' or try the 
workaround "
+               ewarn "explained in https://bugs.gentoo.org/835078#c5 if 
Firefox crashes."
+       fi
+
+       readme.gentoo_print_elog
+
+       optfeature_header "Optional programs for extra features:"
+       optfeature "desktop notifications" x11-libs/libnotify
+       optfeature "fallback mouse cursor theme e.g. on WMs" 
gnome-base/gsettings-desktop-schemas
+       optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal
+       if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+               optfeature "hardware acceleration with NVIDIA cards" 
media-libs/nvidia-vaapi-driver
+       fi
+
+       if ! has_version "sys-libs/glibc"; then
+               elog
+               elog "glibc not found! You won't be able to play DRM content."
+               elog "See Gentoo bug #910309 or upstream bug #1843683."
+               elog
+       fi
+}

Reply via email to