commit:     731b2af1addc26e09b0f3a1c2cfb6246bad0f474
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Dec  9 12:53:16 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Dec  9 12:53:16 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=731b2af1

www-client/firefox: add 140.6.0

 - bump nspr requirement to 4.36,
 - remove <ffmpeg-8 restriction with an upstream patch that landed for 146.0,
   but was rebased for 140.6.0 (bmo#1962139#c27) by the OpenBSD team.

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

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

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 0bc08fb897b1..9ec4458ed361 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -302,7 +302,109 @@ DIST firefox-140.5.0esr-xh.xpi 272595 BLAKE2B 
c15bcbc156fa3262341d39cd5722bd24fb
 DIST firefox-140.5.0esr-zh-CN.xpi 460318 BLAKE2B 
2f8162c471f0226943fce4d96d6be345f1b4b0eb3f49b6f457a17cf9a50423a66b079a8effbbfae58c5f7ca6b74f52a7c0bfac84cc2ef483c99c0a3d12825e29
 SHA512 
a5e6d15b413ba5e0dcdb6488e5c53c069b7da4010e52ec43dfde1becec12475063ec9397ac040e963ed21db35f1bd0cbe65f30f6e7c1f1cdb3e13f5c975f322f
 DIST firefox-140.5.0esr-zh-TW.xpi 463318 BLAKE2B 
a237bd2b8c1706ba3acf7cdee328e66f8de5305c618c4d4e8fc15fb2c69227997428987912823abc8b98685247c0a2e4b1cc0ae72c89a62217eb056030230f4f
 SHA512 
1e2097af872a7d6f6c7b8319174e9ca304a2fdfe8a1072fbd6997e50a31333607c86404abe182e160de06b517d10ef28553c1d5e444c0a1b114d646437f24f50
 DIST firefox-140.5.0esr.source.tar.xz 636823136 BLAKE2B 
d36cd45f5c0f6f83fbc081441f9b7fa80947dd4f48b9414e0e800d50afe79c89be70503cb5fc7be3dc1874df0e698fbad92dc4e5e893e0c8baf19efbe43189de
 SHA512 
412236a25cbea171bd5bd535e45c3ba40957a94e1f8dd3ab74241e0aa1c4075fcb8d394b9619599d60ce3e4563e712c825fa8bec441794f229356802f72b2861
+DIST firefox-140.6.0esr-ach.xpi 294361 BLAKE2B 
7d3fa7ae23bff7d952852de7f92e8ad7fd527b42bd1e917e7c71c9e674feca871494c456352a873618af2b532e02a4f3fd84988cbf322e18414a84a0c8973019
 SHA512 
325b967a684f5aaee8c6df5db6ce1315500f57f80123b8b1876b37fc4c416204cc0443fae65730be474c8068705f3090be83c97644cb693311883bc3aeb80c69
+DIST firefox-140.6.0esr-af.xpi 266636 BLAKE2B 
5a0981cfb8063589434981676afbbd21d724f8ab9970f6cb02a630695f93394c2a1875510b90aa87c7c3ffc046be253f6bb4fd69242bb758acd65e41838a5352
 SHA512 
1dbe7c2f6623250dbbdb5e846d78311132d0d0e083c103255ba6790a649d7c719f8256b40eb70c3be0e279c15e15f820e0e9087ef6f32c2ba6d49e08cf705ddd
+DIST firefox-140.6.0esr-an.xpi 332301 BLAKE2B 
bd1402c619330083d637b7b87463d80a403337ee5ed822ff64046e9b6ca4f8bcc06e334c59045ac785ca7cd3e71d52b0d84f53ba9409a49534e81c4ed9727ceb
 SHA512 
281fe9f3491d0445e51bc37f6a4e8a69c6cdb44aa8ef5a264c9e1435cd474e380163b38b0745de1fa5d810deffea53ffd95242d0d03c4a536d471fdc8e6e5b7b
+DIST firefox-140.6.0esr-ar.xpi 445293 BLAKE2B 
9fb6752969cde42fffe8a0880ca48ce2cca74d39e29e672d2d0ec7e7ac373854a0c59b0debc56d612f2a4061c207660debcd77cdb89d5be23ce903fbb0748fa2
 SHA512 
1bc3862c4261a046aa5cc30a57fbc23d04f06fac82a5975f218bf4fa509f6600c4d310f31e37c77874badfd5815cbade21b3713123100e2a0addbb53fc3e97f7
+DIST firefox-140.6.0esr-ast.xpi 312218 BLAKE2B 
5c821e74f4dc68716fbca07432ab88a0aa10fb6ec3a27a639c322c9a894cd6fc914e7e1713eaea78b4b615945a0af74d9a6b20e859d18fd4c370f46c8de5ce62
 SHA512 
da43d8b07fc219336918aacb9ead52cb95c5d48aca565c6b8c68c22193d7176583e9b01acea699315126839f6beb057fa8ca3229d9cb3839e663be4e32050ff4
+DIST firefox-140.6.0esr-az.xpi 318403 BLAKE2B 
10daff1de2e105b35767e98042f90537a12d113b9743c590e267ed2a394b16cb9487a9ed8f4b701d897cfef4ae3834c2c57c2ef157242a93bd2018713cd7fafe
 SHA512 
e635f09f5cbfe847dcdaa0bbd76ebba50ca7528df777eaf90629d1d72dfb1b9652467ba1f632ca9eb4ffac4773658f624b0cc2e12bb2288de8f4f335d12afc39
+DIST firefox-140.6.0esr-be.xpi 521204 BLAKE2B 
ef3b2f2a44da16cecaf752eb4fa7151736b6dc1580158c2c29b531ad0ec68acf1ac396619e22a3244288325b4fbe382cec3577efc9f6084ca87ec53a5a3f8cff
 SHA512 
24aaf3f3906f9fe4999c6db9118666872845799faec277b2a3eb08a050324dde891ca738e2b0a2ffe7c8382c97945a92912b70f0597b585981ce3932a0cb3c23
+DIST firefox-140.6.0esr-bg.xpi 457567 BLAKE2B 
4a7dc956a404735bf6982bbb04a67ca2494ee857313f9cf42038343eb2edccaf52e1bb8dfedd754eadf6aee4159bf69facb4cc6edffa8248ce3711b261ff1c60
 SHA512 
96c1bb882a7e64151be1eaeb1199846c87170b12f31166ab6cd4ff7c83753dd56667583bc831713dda132e04b20429191ec8ed2544fa1293d8028e0a15dd2827
+DIST firefox-140.6.0esr-bn.xpi 413376 BLAKE2B 
b743aacf3934c3874b442061f4a52052ea45173a5aa18f4ff8901804b3096d0a12b30f628196aed6a53a2f1b995c3f02da1635b4f3fa0e3ca788872cadb01af9
 SHA512 
e4c536ba3ab528eb635688d6b01013abbadf9d409dc144273188d6dd2715599181f615abd63c91987454ec3d7c5192ee0eabe151ab8872ab4120247da9cb78cc
+DIST firefox-140.6.0esr-br.xpi 395315 BLAKE2B 
7de3c84e35e02af75b574f57445618599d9371c800d4e07f2f1a1221c5a982681d3054ea87e57db041f5cf6bd4991f92af501cc7db680f8d2278edaa26ba778f
 SHA512 
b698403c519c25c57c97444f3d95d2902c83380ae16f750e43d123256726bbbbac4a2525f858d3a7b2a45c4a66fac7ade9ce7ec1210dd4ed87acc0708af5ac3f
+DIST firefox-140.6.0esr-bs.xpi 447186 BLAKE2B 
d326d5044b73bcdbf3b4bdd662836556031c5cbbd4a2f509f136c9d7f8b3b74e7b8d4bdc94220cd999a32e880a5ce3d97cc525fe83807ea62de7dde6ecf5dc80
 SHA512 
ab5b68a7ec0263a3fb76628f00ecfbfb2b95830cc984d1a2abe4cf5f43f1d0ac92d9eb59043aea76bc4744891ca43b2b04b82054cd43fac7e770d0a326d3d4fb
+DIST firefox-140.6.0esr-ca-valencia.xpi 357941 BLAKE2B 
9a854da4b40b53db21959aea9ca3b8a9b6ed5efd92f6ccdd4d3ebe209db6989709cb0668cc776607678f2192b73b3fac7d446669f64fe1fdf333de23f55f34ee
 SHA512 
55be8686f4c9e514ba95ea6505c520a0cfe50b5aec1e56b564b06ff3dc100adc3b4a55dcf4b01b913291fe7d1ed254e7b859e97ceca3c25769b341fbe4cc56e2
+DIST firefox-140.6.0esr-ca.xpi 404836 BLAKE2B 
452e19d348e6fd1efb5f2a6015e60de464edbfcf89bdc96929820a5358982d43041dff01919a8ca8ebebc2449c9f7b68f36adcff64420cb862efa7aa187e4c7f
 SHA512 
0fd9160b08489312c7194ada5e829fe54a6b29c8553420dcfbbc4c164ddc859ed916c289af2d57010f404eadef4eec0dc1200bff01341dca74d460327980a201
+DIST firefox-140.6.0esr-cak.xpi 390852 BLAKE2B 
523dc81ea34d5c862b6306d346ffcc4d98a1285f88a097577121fe5cbfc1d3d75609437a5bb60da904eced654653f41375897de7b53d25e517bf3a560ff2f864
 SHA512 
007d93fa6a7845a3b41f20a1902e1b0720608609d3e63c490dbcd519495e033665b40d0b7d3fedd901011ce2b8226733459b0fc5d0abe8210908fa5a0b31165d
+DIST firefox-140.6.0esr-cs.xpi 475926 BLAKE2B 
225cd6786d8853158da92fa1843d42369896db4dd69448ecf26e1f74fc349e6d35b603dc51f0f50df14d29286dabad2dc0213797bc7cbb0047837c7fc4468eea
 SHA512 
bc48e1bb1afe6caa4034845de3612febe36322579ee49edbbca723e64efc314860d11d45a59da52f5c7189945b295d21dc0a87b030b23ee49ff109210b56ea87
+DIST firefox-140.6.0esr-cy.xpi 441966 BLAKE2B 
e9df3e8cb141b352f02144a7808c7d3436b5081c85450b20a9f3cf6d06e147cd9e8af8ecdf41bee14ada1497714fe4bcea08ae586e6758170535d5baca838d2d
 SHA512 
b077711270082ff67c92e8fc0f0b4cde770bbb5bf9a06ced5fccf9b97dc4a0e5435c7ad1c7aedd931075b44a1a1a85717af242828774917652ca40ea29fb4a27
+DIST firefox-140.6.0esr-da.xpi 431130 BLAKE2B 
0e57bd35930c5a2bffc97e37b03925f25a2eef9f59fa502905262a7afd08759cb114ba1fe1eba844a89598e5e40b839ebfac0cbb9a53196a2180883ec129aeaf
 SHA512 
1ca5895d6f7e07b753cead9c2c630dc18fe90e985cfb1d9ac1b8587226d2b2d099e5bc210f4a441266b2b8fd3502f9d6f7af0fd7dd0220d2d14cf16b3c94c60a
+DIST firefox-140.6.0esr-de.xpi 452701 BLAKE2B 
8982dacdc0b0244a14c7a1b50123ce13b18c8bc4ef64f146228dc9ece06c8aebab2430b7190dd2788ec66fcba18b43507637660af216c6ef6534d34485429465
 SHA512 
940f215281a2b4653c6abaec195c21ba277ac5f35e448822cef1902cf989c00ea9f52f023a95b33f2ec1318b2b17a58ab6bcdfe60301adfaa5d0570b730ab387
+DIST firefox-140.6.0esr-dsb.xpi 466068 BLAKE2B 
ce8e1c0f049ffb9037ed29283f0d5397044cdfdc55dc7f969ebab51afa92de58559b9789758bee1273f8b35a6e1f87a3a33f3c830cb1d6fd81712e89890834b4
 SHA512 
0a1d140213ff95e0d6a35772f3ffb3c8314a852b2f806f4d517d9ee1dad1e65648685e0e4aca896d3bc91265f89e64a749ba79d2d5db3facfc7ba011d9509db8
+DIST firefox-140.6.0esr-el.xpi 536817 BLAKE2B 
8882b0bae250d7b71d33717427102bbe560982909bdefcc19f57a8d93ce49f2f6af4fee786086ad3f95ad963b9a7724c7402332a364fd940dfe44160c7116f8b
 SHA512 
00e70b869f9a4b787e741ff1591a4d3ba3eeef856e38f475d53eb8bf43a32284d757f5db430a88cd9166700a4bde7c2efd112399050f41eb161363233a38eeb3
+DIST firefox-140.6.0esr-en-CA.xpi 411061 BLAKE2B 
c07734150dd9f749a2bfdb7554d9a6a3d4007b43113f5776d157a11aa4cebdcd8b062eb8cff60669139af8c5ea9f7df6fe5131ea1426210aeaf547e00c847c65
 SHA512 
a77708add8bec6cf971178b19ebcbcf4b53f1f2fc98ebc41334fc625ba1bb4e4c596a0e258cd513e7490f5151b4beeaf7fe50015e7471b0d29bbb26a4940a2dc
+DIST firefox-140.6.0esr-en-GB.xpi 411406 BLAKE2B 
bb4d28c96bfdfa377aa2b5e284918fa11b1c84c9dd0e1c0e8c31e6d2360fd9b02865d974a6a69b2d4e4fdd95c76b46aedb3b31509640497e5e14ce0a4c07a4ef
 SHA512 
8a9208844e57b9c7b4f2b07dc6781e1d2652cd63688b9a5da25d544b6e0876b70ea5b58d5712fa7bfc271c72883bc178ae2d70c460e9b5066288b9160a02ea30
+DIST firefox-140.6.0esr-eo.xpi 433473 BLAKE2B 
3ab168f0d323d44fec844fa05c387af1d791689ed4722825cab7ab2ea07055c3ca2f3a74434d9a483a4cb704813f9656ff965b18ab138a23e18b714181db7441
 SHA512 
878b90f7eb9a506695e32ad8daf6164dc909e6c4640ac01bbf13cce78ad02002717dc8872b320c1500c9627f9f9233327ecbb96a00326662256c640c144bb559
+DIST firefox-140.6.0esr-es-AR.xpi 445512 BLAKE2B 
0d1ed06d31d3c9257b360fc929b7248f872fbf6469205536cf84d1af152217597ead1f8460bf43822c47581df9272e67b82281608172b0f3829cf5901b6b7060
 SHA512 
43aa1e098dc7db1e6993b75b38e17de707c1c6db4818683f8ae43022d541abf32fe743b87c39b71e7355f01b93deb3323b8e657df3b9f4eaf583bdb64213f8ed
+DIST firefox-140.6.0esr-es-CL.xpi 446296 BLAKE2B 
e5dcc2c795b673ecd1e0af2f114f7e4a40cc383067c0b57c53d83b107d132c689ff3136cdb08ad59bc0fac3c508ba16ad4608ccf8948d1a44950f7759e7210d6
 SHA512 
11d4c2576b7dd01eb7959b141fb999e18b9c0eb1fa026c0bb0a3644e3524efe77994358aaf5239619a7296a94d9334587b00b07c29e256915b025976a9aa0532
+DIST firefox-140.6.0esr-es-ES.xpi 447018 BLAKE2B 
0f0bfc5c2797d9a687e2134c2f9b727d1533978a811975ac8340a0dd0a41d5bc3c45c3b49114f9646db056611c2bc64a1a8b9e50bc64fcd438134eee740dd5c8
 SHA512 
a8e6f33e129d7d95063615a77f9777026554ae057567b3c4566c172217838d58f2ccdadd44173ab62be218084bddb050c3e1ae5c157dd4d209827bfc6773cc3e
+DIST firefox-140.6.0esr-es-MX.xpi 446249 BLAKE2B 
d93990200c7946d12bf3a875a03eaf7c732d849e088af239e61fe4097f90bf2696b3b7804e073bd172737ac54f1afdb49d685aa5fe247c0f86cd304b264697c0
 SHA512 
5a4cb84a417ad1a0d0fd90d1b468a506b9145f6deb9457e20e16f41ec493a86bdb34cdb6ae5292a79597966856f23114b3302ab425e270fa46609fd09a175354
+DIST firefox-140.6.0esr-et.xpi 359327 BLAKE2B 
e259bb8c3b9686ea3be9164336b0a65a0758880f4870a729b9081a648d167a794880797084ab5ddefa9123bab4be793f11a7b6e09e6723d5bf57d90adf667bea
 SHA512 
a180923c86f0ebe45f5150b365395a6ff261e38c768ea5746fe3259eeff41810b654ca09a3bc3d5c47b84a99a6b3100d39bfbd70dc19f192fc43d7e022ed64b0
+DIST firefox-140.6.0esr-eu.xpi 417291 BLAKE2B 
bb947d25173cc4738c8381e076f74a513339b425eb8a1881a1dc4de4a36bb2f838400ad3409001936d3e7fc3314d563fc3ceb06f86afa2db56c2992815bee67b
 SHA512 
18f1a999ead8c4768349a62f0f162f969c7f5e64af5ca9e2bd7b840766d93f120dfcbad0fc33b71bbc3c643ed79924158336f929e7f0a6807ed4a32764a51c00
+DIST firefox-140.6.0esr-fa.xpi 421640 BLAKE2B 
b948a0da3d54a84822d73dc320254c19129aafb3c09c948e503dc1e744421e1418073a73aaeb19983d7506b0143212d38d3405917876138f585207c20a9e2137
 SHA512 
d963f112e95bb1f1baff64ae4d836b2af54d1f5df96f6d5a3a351549bb3398ad26620eb32686d5bb92cb91c6f852e35cf1dc2f357b745200b5681f4fe079cee1
+DIST firefox-140.6.0esr-ff.xpi 310184 BLAKE2B 
e045bf10f8518ecb327b59e8de98c57967f6a81d000a08be604d18c76e99cab91f4ed9bd3dd67640bd45bd82e3ac033f023cd5a10f3e200a671d48a26e4a12e4
 SHA512 
479669f1e818e420aeba866e38bd5b813914a5066229fdc29d471322fbea69e41fe3c8428e4e633a219ee9c4bcaf87f6acf7dac48e6b459ffe403888adebd7c9
+DIST firefox-140.6.0esr-fi.xpi 430173 BLAKE2B 
66c8a84e4d524775854c23db8c05c1f5876165d1c8e7c1d4807518cb7e249c4841cb4c482b3a8c1df1d8b898c5d88e6a68275a598c1d5823f99a8953bf96e4b7
 SHA512 
70780894b0092ed07da49c2691502bb81ee0dc9e1dcf84dcb22aab3df3a4125f1de0667eccfe748b6564e367b994a39d0f9471167fc8c8def7026d8bbe4df9e8
+DIST firefox-140.6.0esr-fr.xpi 458446 BLAKE2B 
be2015a016d0dd2b0a3175bce2da4f5ab3cfaef83690f31a994b42f8e94af1dd74d20e9ecf624833a155c7f768449139d78a02db850bc65edb1ce1ec3a01acba
 SHA512 
bf4d5e2922431f63e859665627c76db19b4e0b7d103c35664b1443964a247c57b0537172e14e00f084e160bc9ddefc8cde10205954d850017968be93648d9a37
+DIST firefox-140.6.0esr-fur.xpi 451830 BLAKE2B 
7e8d023fd044e1ee836a85f376ff1490bbc5d2d728cf4e96fc58142f5dab795d97ea3a7b4d6adc941f828d077956059f8e32a6d3ff570bdc179f4a1d435ca165
 SHA512 
f0e9b0132f6496042bd343124ca754a52e131ab2bd8b75999a6dd243d49770e654c86290f99bc6157bedbaf494882d2f5021f35dbed4bc3b3c8a56e0013f9113
+DIST firefox-140.6.0esr-fy-NL.xpi 442168 BLAKE2B 
29677f2917de514963c27083808b57aa6b1a3a94cc90afdcbf1cfb253b38b365d21db1ee8090e8ee6c7670407cf6f50265e61628260a099e813ff7814bedf9db
 SHA512 
872c32ed554fc9e659937bfa7bb7945e03e5d41aa451d936ad93315295a65f54a9313ee8f92f42edb24982c3052d3df5be6320029a0394138bec77a96d13068c
+DIST firefox-140.6.0esr-ga-IE.xpi 315283 BLAKE2B 
98452ea23956e7d2105551e8b0105692bbcb4fc3cd89861ac794b3067dab1edea1390ac7a4e1613e6862ef711ae501e1c718d126b10cf29c31f9d5f02e3670e0
 SHA512 
5ad3bf646861ea9ab2174ddacb418259abeeeeb62bea159f93ef35d21a93aacc75a7112ca3572e03ec6406b7d065db2fcf841b58a6e7a90e85a47d41091fad1b
+DIST firefox-140.6.0esr-gd.xpi 399438 BLAKE2B 
5984f00d8bebfef632bb1d00105712447e916194e72c9bcb9fb563e35c99996b522b68362b7a203c496f500b15eef3a963669725d04abb2ecf13d30451a51590
 SHA512 
d1dc1ae468959467baad86abf2f930eb0860fd4f180512b30be205f68021b4460dbce4719f8e999dc1ea7c2b58c754b1a9d16d8f8d44bfbe4d270d621ed74bcc
+DIST firefox-140.6.0esr-gl.xpi 442912 BLAKE2B 
7c44bda67b7f0a0c01f565ca5d49726dd9c9b08ef864560208407aba00af5a6ec8c08d927ed90214876e3cb1bcd025c45eb23e4d27bee3a3590f0d971e547417
 SHA512 
f046c92f0fdf3d5a0f41bbe0e749807c3af28f5cbaab1fec83c7627d888594863e2bbfa14e376021ec796ac598ce5a7fdb85b5568560267d9eb162f531e9cbf0
+DIST firefox-140.6.0esr-gn.xpi 451082 BLAKE2B 
a5e94682ee959be77cdc10b17bc85fef1922c923ef1e072972f8620f76a76a8af3fa14c4afd3f07a7dd9ba9ba9411abd502b18fc379bf831378dfd0df768ec9f
 SHA512 
064e4b97d63e5c9699d0ff1de058354a949c19348f81aba951d37a07c4007fca99182254a6ef53b5d488010beae261517f04a42f05a849e7aea9380ad4e15de4
+DIST firefox-140.6.0esr-gu-IN.xpi 358973 BLAKE2B 
f1fb89c0d48ea4761664cd71814159f714256924cf505816007bd844425f377ecc0c317a99198feb518a2aa84e079ed30907097fc2e14f1b05493c7bfef1e6e2
 SHA512 
b6e6b15210dc0be5c9d3b914a679cc43a281dbfd9ae44be141d61be38593fbe07b9358bd94b0285a352d914e561cd3b51dbc21098e760868edb78f36464d2f0f
+DIST firefox-140.6.0esr-he.xpi 444990 BLAKE2B 
493fbe39ddd0b614f9aa9be84fd54d7dc14e0057443b6faca8c1b7c35f1d29f2977b20389c638ea56b4423fc6088c836f7c3909e57ce1e1db7b849c0df9d74b9
 SHA512 
8fdc596381b0c90d77b3e3a280958027e5640ebaf0f66bcde20d9eb9e5a7795079d100d8f32633f273d608fd296dcdb6b9a4b88a17f69339a41916a81d3c088b
+DIST firefox-140.6.0esr-hi-IN.xpi 377461 BLAKE2B 
512d12e4ca265311548d6146dbd44e4d5a9b9676ba94be906e0e79178e00b1d921eb7a84cfe354f05822cdb3176a651ccb0dba7c68837c105a47e386d72d6175
 SHA512 
4e2a1c9e859c25a174ad91e4c73860352724093072a3dc86c85c60e9b9df8aa6a605117f8a2375302c80ba05b860412d46a8c0bf2624b713d2d28c749ce69150
+DIST firefox-140.6.0esr-hr.xpi 437694 BLAKE2B 
0f1eeafceaef30ce7ff4995d455cb96b6012dce4889c95dde5481d20d416b72b9d7b8b8c3f6a4eb3838db4dbf794302c83275133473bc5406d777f2ee163fda2
 SHA512 
cfac8882954f35cf57c150efb076a9a1980b6df3b65331c41d6b5af665b0e1459d871d75d57a7cd25e8ea39f4fdb303bc7eef1974b12e8fbeb3066cd8e6e54e5
+DIST firefox-140.6.0esr-hsb.xpi 462697 BLAKE2B 
1b5ef70be018d33a1f0050ab2b641618bbc25bec0dbc40be3490f339bf102bf6b33774eec861873796519d03c3ebdb8d19436db441ddc95a0875813a90260f55
 SHA512 
625a45f1a122320497aa27dc69deffffb6da1e1f2a164fec2b34ffcfce15e94b481fa34c99caa0e5ddea68ad6d7520d8e67c5a31285e89d8692ae5437e2d0fd6
+DIST firefox-140.6.0esr-hu.xpi 466176 BLAKE2B 
0f84593e08d0997c1c5a0f8048d6838d31d2270ac1b32784884d1e2f6bd52a687ac37459acddaff58e635b5dfdf11da319f46243837f10ca30ec913c2c4e6baf
 SHA512 
8a1e915098a42b5c15fbb2705026a96b2afede35dc6f99b36bccbbae4cd13420682f3fba4c98d6ff021034ae1f514bf00923c22582498ec68289ba57194a6b20
+DIST firefox-140.6.0esr-hy-AM.xpi 461616 BLAKE2B 
9a96c07afb43fe345b851d8d90602127d03852e26ca4c0a7fb490e7ab8d6bc87fb535d3d2dcf1d92cccdcf19e9a0c7fa4868bf617779098ac860a3da29ee9ff7
 SHA512 
e1035ee56191d63ac95c445f324ace7741c22fd19eefd52a9f9a975a282ebbadf99f7675455ab171bb86ce710b955ed0c5de1dd8cb42b548b2fffb7bf3412bd0
+DIST firefox-140.6.0esr-ia.xpi 430114 BLAKE2B 
5724be8b02b9c129fc9c137802c5d42bcff8a3c19f71b555c57787188f431e2798c353d6e0b7de39f5ddfcae34888d2ec083bd26935af7b6602abc6d157d0c95
 SHA512 
7fbfeee050beb8f5e5f20fed3faeb219ed3160e31fd868be1485929bc494b3c0a63bd5c8a8d6fcbe1a209cd42f47bf8ceddfe6c6a70c834e6f02ade4f7aaf9dd
+DIST firefox-140.6.0esr-id.xpi 422745 BLAKE2B 
b06fa55caadd59418103f4e43aa20d5f904b8c938608e8e8b1bae1adcfdb8c65e110e82eca73ce265865d08c847dd6f52629519b56ed0334f65663edfe7ab28d
 SHA512 
5d0b0e71046fc979043378255047403392c790b5d2ccf5bac8fcfedefb1f45d14c3552ce67dc850d31eef2563a234186581e53217ddc63609d8482066c5a64f8
+DIST firefox-140.6.0esr-is.xpi 432683 BLAKE2B 
4a2ff8286a50ef8b78d3165c2ca9961178a5e8df40527c96a77badfee49a0c512856153f00a9a580f750edb7aab01ace984426a36c3217207e6a7e1cc32f8272
 SHA512 
ba42345bbeaa89b64a3a3d4ae1ff5e5336c0932d36f79048ffb35a8e27dee06f96e62e14ff908ddca47d33a6388e18de54a6853155df98a1c8ab900143d5af19
+DIST firefox-140.6.0esr-it.xpi 440908 BLAKE2B 
2f6ee305c2354b8446cf6f6763df5b3cc24d981d4b7f342b0bd9eb7cc6c5d0a9e55d09123b773d2cb6b89e06e9a1e86546bf7974f2d2b933d2d2c687d6bcd6de
 SHA512 
6fec19107f01da97bc4d9a4c67534397169b13d6b1dc2a5ba64a47b2a5c06d1d314a4630dc1af21d2f26afbed3aff44921dcbd96e08de8312d79232a7f58f2d2
+DIST firefox-140.6.0esr-ja.xpi 481314 BLAKE2B 
1455e28f1a617f81eb6a62f044a032a58e9179117b2cdd3776ffb65ff2a9525e60804bff3c20a761b5289a2a5af5c54f1e28897165370ad35839f7b92e04a4bd
 SHA512 
bd2f65723cd0f5697674e157ccebad24d104e3005f6a84880430d4f247b70a2cce636af43e0fb37db725e66a6f3ae3ae86899a52743687ca6776ce3d978d3b54
+DIST firefox-140.6.0esr-ka.xpi 494872 BLAKE2B 
09ab5cfbde5a6c7430b2a71af51de4dc867650a4324d9977ff100a91dbb5c769ccd364126c3048b8c8141a965e479ebd56c8cf85dd2a92c84ef2cf342ce529c6
 SHA512 
866a5caea48a1dd27c40d91c50741ac87a20edc13a6220d264ed78e986eb03a2fa913b48724b0a4447cb70bf2c5b99ece6dddcb005be9dce2f62cb09d8ac3512
+DIST firefox-140.6.0esr-kab.xpi 422852 BLAKE2B 
47359ba6e32e8f63582588cda040839dae7bbd19e784cdbe6e03015d3debb9c92015de59c030d05ea89219f23da0c4d4eb4db007a205dd5307d512192a31d247
 SHA512 
5c14183c630e0676b148ff5ca5d8f03fd8e8cdc4c15f24e7aa48fa81832d453e3727e35594f309a5674c1fc52b8c2d36b22744bacd29f528a5515d1acf01c18e
+DIST firefox-140.6.0esr-kk.xpi 506691 BLAKE2B 
4f9779656ebd8ed425a9d4fd58edd8dce18f4fff7f21fdfb99e6e16af0ef5de63704c4fd79d675e34768880e02ce66a0557fb7c0716d4b049a612e318fee788c
 SHA512 
2bfc1188f5d415c459e67610d5d548031779598402084b7a10937bf031359e28b786b8f481da96044de67f8cc31f45a268925baaaf020be86280603982c7b15b
+DIST firefox-140.6.0esr-km.xpi 348774 BLAKE2B 
014b5ebb118008f82741736db28677d296c5ce0f3a39810262c37cb872a1191cb57203d1df6c9efd38b6393b28873762942272df7967ced9d1fd995a64f7736d
 SHA512 
94d2b42cdd962b066084d73346a23fd2730cdd3cec714923340caa88ae07e3c2c2f17411d3265e69adcbc5bf51f59452d0aeafff15a075068bb09d91685a1766
+DIST firefox-140.6.0esr-kn.xpi 331781 BLAKE2B 
eeee5cbfa2ca1ab2ad6ce11dbd57ae04476d47fddba7a7583081756ccb91e7cff91dbd39b05823498b7dc967f644d8577bf133804e24c9db391781ca54d1077c
 SHA512 
7e2378b6ea004c6a4196127e12bf8643edb73782acbb6b113a85bf76637c1d1f1ac8601d5dcd34aa59ba34fca43424d7d63b1fc7a940f34c89081c3527f619be
+DIST firefox-140.6.0esr-ko.xpi 467541 BLAKE2B 
f9911c47a2c3b611f8cb5d84d10899c158b637e7cf93fdb315e7c0f714f418a5b3ab298d190d70fb71b921a2427688373bafb7d3996a7c2b51a0aa7a33290b8b
 SHA512 
c41474525dd6d2e223cda8483dee0c1901e86917b4a11f4566c4b2addc22a72362b22bc2c02bbaf6300f41e8a1039d4c127e6623148ac3e5c59b0d26dd734b6f
+DIST firefox-140.6.0esr-lij.xpi 319288 BLAKE2B 
9814627f30509b94585046a82a4f864329982073509662574fde4f53b034e4a85c62f8c3eeedcf3be40cda9acd813203ee1b42a0944b139f45992eded184f6db
 SHA512 
a9578f37f54a1780558c5bb8e28b5b2ea411c46e9d902c43a1be6bbc223fc3d59747ba2ee86085801f93271cce666008733f7162881554fbd8159700e76d663d
+DIST firefox-140.6.0esr-lt.xpi 379969 BLAKE2B 
4de9b192a7a8b661bb6e94ae8d6832fcd967e3dffded645dfe02f7588259472de54c037f2287dab7269830ba9b800b9d7a62c6ce68dfa1c27e35427e040bb82c
 SHA512 
02e233d89506f646de826f2a2aa17665875f38beb6e1a0eab2b6ff3f46c4629872668e99938738548ddcd7ca636ae46466f0909d87128d22afbd49fad467a0fc
+DIST firefox-140.6.0esr-lv.xpi 389083 BLAKE2B 
01c6a7e21ab43ac893fb19034bdfa5ab291da9712784f6218104b50b65595d79476fd81f13bd7f23c823c46a068fd6dfbc17aea60279eec22e8d2136e9c969ee
 SHA512 
4142d507a25fa908a0f8db19b63c57a324ed21586538587992fcab56013da0314a34dba05387caa04404f1689d2063915f4ae773fbb714b589c5d21378d5348e
+DIST firefox-140.6.0esr-mk.xpi 316828 BLAKE2B 
5d667974aa931fb33f8c05b276bad51764734a72210c011fa39b6b68b9dea17ef8efcea2d627f217de2b10e9d6cb2d8567a4b3c0987ed7914bc577afe133555a
 SHA512 
d2d3d0efc0d2a6c10e8f5da006ec57dcea135a2d43489053cd112f5197a179f90546fedc75fb6b2d8c4342e5267b050c82a6c32e2b26dd3261b3a5a99eeee4bb
+DIST firefox-140.6.0esr-mr.xpi 356256 BLAKE2B 
29f7eeff6e4bdee843f7b9b17cbb1cdb5c5fdb39e54f6a338b9a5a3d6797666b5840022ecd02ab38d90a6eb840a8809a3eefce12ddcfb9bd1ee547f0ac6a3b88
 SHA512 
96c7606eb711206a7c7d0f495aed81a358e23e0df5f3bb92ad5df93fca3d42ea3c0a89ee9fe85db2a3d86cc6565b29e20193ca560d48d992d345f19ac1149992
+DIST firefox-140.6.0esr-ms.xpi 295388 BLAKE2B 
a0dfbe6b361feef33edac5dee5198bc8cb95ff0af226982ea2e51aab26b6da8d33a5c920132eeb986f01190a5b7540364341842b0abbd12e9c1c326dadea5f4c
 SHA512 
e653e0794a3ead76dd103881bc9bebcb03441229a2bc395ac1ae48dcca96fb7f7e60481434fd5aa9f0a0f68991e9e3be64c26c99ce23a2846bf3560933d3b9eb
+DIST firefox-140.6.0esr-my.xpi 343031 BLAKE2B 
be5ccce4b24c64d0933eb94bd35f6669bcab63b4c8a252cadaa40506be9e64700f130ab8ee16ca777255d8edbf7fae60d7c94c4ee2862a2501d99634d3f0b075
 SHA512 
577c4b250d3d4f9814c01ff5e8387af3ae56b8ce6ed121902593eaf800f1c44b20ca80d3fcef38a71047309578a35476b64a8f135b2d3ecf60330f14401a291d
+DIST firefox-140.6.0esr-nb-NO.xpi 429343 BLAKE2B 
2d1cefdc94b953913ec23f225aa39667a8a1e396c124ec9a1a226066608219c64922e33477aec8d30b6737d10f55108e900fed15bed539291cc5a26c819b98ab
 SHA512 
67727112aee7a8fe837eda864fdd62ecd3628f2b375ed9fe4d58803d097a3f33790541330bff70af379143be694369e665620b344739abdbd81d8e3840850a72
+DIST firefox-140.6.0esr-ne-NP.xpi 349010 BLAKE2B 
2dd496caf0f965acf8e494130c008811c46921978ebd6eb9e63390b27cefd3e6eab291a794bd73fd272ea7a970c33b729366c60cd9a6fd8b9560405d64273450
 SHA512 
6162b766e2b732f0d5b571ff691794ad78f64fc2f3f7ab393182ac5dfe8a79ce9221d81fa66372564e87e3430b0b32fcc5fdbdb9c561aefd486e466814410d16
+DIST firefox-140.6.0esr-nl.xpi 436184 BLAKE2B 
fbc13ad57f2cf7c75c1fd8583a674cfed5577c206fb4f0199d49b8c7affbefe30f6afd03f7fb8e1c3a0d5259c64013dfa77e774d9d20a0c4f95bff2711c6d7b0
 SHA512 
611d4213e26966978d87fbd377ca85bf62ff338927e47049b66411f463bfe8dd9a40f8cd379b76217fd27785b35be8a1c9385e51af5eae8b913dca0114602d97
+DIST firefox-140.6.0esr-nn-NO.xpi 432221 BLAKE2B 
10a2670447b390fea3f80b60a829d8f859ce258b2697f3172ad94082703646616f3f603509b3ba45b04e4b82082127dd13a12e6a33d92f2d5b53ddd635ba6dc0
 SHA512 
8f52fb0130a6a36c6179c1922677a41211045afb181ba43ee393d98f0753902d78b088b6bdfc2f984aa752f24b901db1e6613f077a75ae16633f5918e3186bc1
+DIST firefox-140.6.0esr-oc.xpi 410937 BLAKE2B 
a3462d2e10a10b71340fe1c8ff705569a9f731a12a8d8104b0c7a09a220a9032a0de81d76146ea1d750031e85149ad03641ba6e9d2c7c34a89f5a9c500e5c03c
 SHA512 
6cfdcb5af955784d65530b280c176dd21f624b9831fba88a488a882c50206657aee195e261b4aa640639345301e34f8d650289dafeeeea6b9a089d2cda30cff9
+DIST firefox-140.6.0esr-pa-IN.xpi 494412 BLAKE2B 
547ec6a29ee792e941775877db2f6b063986044bdaac19b26f190ace6f211c8cf301c73500a3628ce6193db2c363b129ab264b7c37a384a36e74addf601088b9
 SHA512 
467b941397cd65f1fa633ccebf6f7ac52667584f015acaa4863f5121e726393fccde78046e2daddfa104cc098d8e9b380df4f938695325873c6eaae078c1e6bf
+DIST firefox-140.6.0esr-pl.xpi 460930 BLAKE2B 
d2c053e0f4c2a5f5205ea37483ce44ac3deacc999d1f44caf45e3ff20f093e692b819ba37d4648dc3a721af43ee661927ce79bcf957cd388e2437fc14a943508
 SHA512 
593e5faded835c1790072fffb13c3c44a63fc7ce8678224751ac321f72fe4f354f0db1d1e23b8179cbe4576ab968cfd5238885e779773d16b6c3d9159aa4f56d
+DIST firefox-140.6.0esr-pt-BR.xpi 440763 BLAKE2B 
36a260002761a216c35387c89daa1cf3415c38e3cacd8410213c1e5982764174130bc2e1434b7239cfaa82e781f5497883a0970ccfc7e9ae0d1676d3c2e7e458
 SHA512 
bd9e7706646a720a0239a67112ac1f3ded6977778e4dfdcdbf2225df705d6069dbf33ba7637d7a61be477bc15e95ad7021b7d2c2671aeafa0d92b0b9f54d6ff7
+DIST firefox-140.6.0esr-pt-PT.xpi 446414 BLAKE2B 
6f4080bcbb5fa315d863ce12cad9a5275c036994ada5070358cc5646fdb390799886382e539a48b33b5d46e06f50327245868e9e3345d1261a513834b0b05569
 SHA512 
d1684c310d57446c6e58f40ae2de31c88c875f8288837f28ee9af1c4a68f79730a9f93ba316300a8c8081f8e53a84bf91ddcb21f6246c48ae098abb187e644d3
+DIST firefox-140.6.0esr-rm.xpi 438021 BLAKE2B 
95f63c6668f2d1e83438e1ca5e97063436543cd357b97b9df9a556f0aee10411fb9454cec0667015a115c248402de681923ee482a3ea1939a6dd4a7d01f87d5f
 SHA512 
c31804efb4e230e87187c53f977ff62b2be1c2a7f9e97368324bd335d919853090dbb03ce8b65b870ab6512192bf53d911ae6972ffbfed3929972dcc23a24e0c
+DIST firefox-140.6.0esr-ro.xpi 452836 BLAKE2B 
5939db892f5cfbe7ffed8b2ca6e9a0c69087e60c10b1ede28db597b2d191e83633f53fe82a441081f7b3884f9214b3792ad25cb0b22f1a45467703361f78dd53
 SHA512 
c98996d47cf3002847eddbcfe05cd46dd47190f2ff38cef3c4ca56a4f4571a272e3aeae676b5bf498c22dfcdba2389d8d96405592a143646e5cb388dd6808bb8
+DIST firefox-140.6.0esr-ru.xpi 525181 BLAKE2B 
96e82c74c0c780dc36e46222c887f59d7ea67fcb20c1ae6733f71fa1ac5f3bfff2d92469fb06dc7fd26c24070739a786ff54925e620e2e187b96d6b35258b29b
 SHA512 
93c4422d081c99065eb5f9b64e120b776da13133df697ca2361ce65ccb422331a52b87093ebe9b312aa33f3e7f4f40a1351b1b55938d878e13fa6d828a8b323c
+DIST firefox-140.6.0esr-sc.xpi 410464 BLAKE2B 
7c870f8205e642fcb7d55880b3539b9c8315b87f865bac0dac42182a7a5a14d230949dedac2279a17dddce9c30d50721d532ec862f5bb2875ba81ad66695d0ae
 SHA512 
63843bce85c9f69e455c86faef472a35ff03cf2d2d62d1578f09ddebd2f4c77bb62b7a81c4ead7bc02fafa1d1ebff4439b1e24e6fd03f7e5bccda3c905960e88
+DIST firefox-140.6.0esr-sco.xpi 322660 BLAKE2B 
10ce732161a6fc52612a7b96da756a692c3f3bcb1be63a6392d45ffd4359a1cc7e776bbf8cc552879d1be96ffa72d07d7424bb098bf47e92915d71a43db888f2
 SHA512 
dfa7827fee752b3670cae48cb58e6823306354486d300bded0ff1a1ea021c7ce817126cc749c98f34d7259cb65cb8ff0100b8ba38151d04a9e947ea9516d9dc6
+DIST firefox-140.6.0esr-si.xpi 411608 BLAKE2B 
a3b443a5e70b9b8ac1234eb0f4e79abe5984a4516ca313ff07b90930572e2167122b824001ee35fcbd830ec00d3d033ff9687cc91f781c1132fefec2678edb60
 SHA512 
b2056e77eeb82d9bf97be65fefcaa538d6ad9d9ef8dd8d7ca1579b50f1d730aa7a5b6a0d4159bcbce37f68bfd8e7e8556465edb8325b9233226fdfa531b6519b
+DIST firefox-140.6.0esr-sk.xpi 468228 BLAKE2B 
52026a9608bd3f7900e86a35f52af90cb072ab5f3072db6eb64602849eebcd4168b255fc466dd5a2f9507d961b40aff549493c312fd543e1d751b44f841cd438
 SHA512 
8f9cbfba18bb23705ef7b4dd88c6d312f523bdfcc3379a577ea333a96d55fde55d8be76a2b4dc29c80820704e81a6ea7373997aab7db3907848da37487bde6b9
+DIST firefox-140.6.0esr-skr.xpi 485878 BLAKE2B 
b82dbcf9643ec0e3159f3f9e1260c0dae654f721ac799a906f6575a181be652d9cc8dfd5224982bc83fc78941c8f8f320f28a0fd2c2dd86cec40cc8ecec9346d
 SHA512 
18b723698b520d95bdb105e9c9af4c6bebdfda062d8b6ac391720fa87b19dfb0b49fcbbf9b7bbc6dbeceefeb394179682f5b0943356557fa765a058dcfbe86a2
+DIST firefox-140.6.0esr-sl.xpi 441207 BLAKE2B 
6e3620a131cf9c03cc7a0bd31fccaa7e6318208c17b78bef9aa3aec29bd0f5999203ac28aeb7528c5b2850156138a95d130e20bdab5ff121d1353c5e9ddb4932
 SHA512 
64a8b42c8ad1c5421e69cf7922efe615d8e710f31d6a4163c4ee821c35d610984ee0ae7a91db598d590599e3c4488da91ac84447055993e24f0a23bcd6616a8f
+DIST firefox-140.6.0esr-son.xpi 273129 BLAKE2B 
322838abaaf62428ffdd02f3c76b6ca46c7428e664275d4e9e929c694843ee69f253551a07be96870fe3dc2d1cb62496df759ecdf621e32e96d212cbad3d8e1e
 SHA512 
fc941061711a2e81be3989e0117c8a6f529f94da0b467c10361f8ae14979ddb6e4bc1c44f01b7c7d41f09a864bc79632aa5eba837abe1025586bd34fe5943a29
+DIST firefox-140.6.0esr-sq.xpi 456019 BLAKE2B 
de8be49963fc92ef954f7488a606664b6e6b514e7719f616ac8dbf801872dfb5475461657c0538d34fa9084409ed37cd895923c418dbd4a30d6fe18551bbe9a1
 SHA512 
37408442a10262816e7b489c1f8f62a3ee527d738b3483ca2475a836999fb1d0f6f29568d5e6326fdc60e4ebc5212409de95fcdaa2647ca5839c8fb128dfed7b
+DIST firefox-140.6.0esr-sr.xpi 453365 BLAKE2B 
1470b1378c72b8fa471d0cd6d427135b791bc6a4e1884446c99704976978e47b45afd7014071ee2abd1e4705e706c569cd23269f929b2097ebad92937295832b
 SHA512 
05dde12c266736b56d7788255815eea4ea5206bc083ec9a782c24004da17fa3e27378c9c2ef6bea0691e8ca997edd1b60d13fd470f7ea4ca97c755a967f34222
+DIST firefox-140.6.0esr-sv-SE.xpi 436153 BLAKE2B 
136907e6e08a22773c2a63b674d5bed573ca59703b1a74a82e2a3bcc78696f660c8da0dc70ee3f857fe5a3ac8a05e97cf8bc1f7f5a0b438549f807561b5221e5
 SHA512 
524ece8d548002132921e8a764f5705f7438a081fd0a2590dc9bb9de4778af8e3e05018d4ba21c928aa8b3cc27a7439eb8455a584f36a25e066aa6e8389b731e
+DIST firefox-140.6.0esr-szl.xpi 341683 BLAKE2B 
e924618178e57ede8476005afae501b1c7430fc2334af64472c7d67b19107f556a129066b4887a26ea46b557aeeffb75c1c546727ccebaa3b3fce036e83e087e
 SHA512 
2b27309f477d59ada6f6f6c78d3527a00d3c42ea5f97e251d1e536a5292760b309de388c2202219075df1871c255f76dd8f137a945b2a4c3db7169b7b4498833
+DIST firefox-140.6.0esr-ta.xpi 338151 BLAKE2B 
5513842f415fd3629e1792fa688bfc67fed30f51fb9a31ce79659170f11d3adc00a3249c4547bd28720bdeadb1ce9f8f3de70e83883e618665319f1140c32346
 SHA512 
87e5ce182efe37d528c8b3e4171c5a259fec5aa3ef8ace167d526216d87ea6bc9dcf570f0a19bfb21dccaa4cd9c0ed213667c39b6a0aae8b169b3a3cc4b416e4
+DIST firefox-140.6.0esr-te.xpi 382203 BLAKE2B 
9f83f10e013e8e44cd38df231d795b5d6629635dcd2fcd296454ac4df8b9fa96187483c1c74928a89d6873ab067dcc9bdcc5de3b1ee2e0a0e9a341d863fc81af
 SHA512 
3bdaec9499972c8fac71c6b0706c29af18a6c04d5035b06408252906e799c2daf00093c7fd1bf81f2189b3d4d2323cccb59141b9658ba4f0423f13f1e67bb3f8
+DIST firefox-140.6.0esr-th.xpi 505496 BLAKE2B 
4db0a0e974b733210c8255c0663c0d416a41d249beea1702547f6345f7a8bd388397ff637ed92bc9c3fbd2a67265fc376b03407c520ecbcdd9c878cd0d64f860
 SHA512 
5679fee8cf51779428e2a0fdda2fafbaa83f8d44f0fb77cb981ed1cfea1455637a3b0e3fe0d7bbfea76a9857aeb387d051a1dddd54482b63993bb3de0c606051
+DIST firefox-140.6.0esr-tl.xpi 356657 BLAKE2B 
517c3b9d67f63e8f41455b67f50b38ce9f67f01173e9b79c507ee182452754133fa423d375224c3f2360c9dfbb3b630a8d9108ab4b63d5be06fa8401321898cf
 SHA512 
8aca069fe2f94cb643a21acbe325fb7826a14e7c7f22b677e2f6bc4ba5cb03163451dc06bc1a740d10a2612de7a9478d3133b8788d0f3c288f6eb9f87783a750
+DIST firefox-140.6.0esr-tr.xpi 449316 BLAKE2B 
56a93a53b6a29420328546a082e10e8beef440b8e9956fceb45f7991df22f5edab71ae57c73f2d1ca036edd2b3c7ad98473d1ebbc1521ea4db2accdf69bd6274
 SHA512 
66997e21ead845f401366522237a08b611c7c13278ce4e538bf34c5188feb866394cd2e608e8f844e2b20f15266dbafede68982f55e97ad634802f684c30fb04
+DIST firefox-140.6.0esr-trs.xpi 324524 BLAKE2B 
776cb893b91d3728dfba019c2a29a57cbc13ddeb9de9358ee2821dbaec0b4abf3804655ffe8b81b34d78fc4a77b25ea1219f06def7d2d47ff03b745e2c55abd8
 SHA512 
f9cc848bcbc8b77563c7359cb1660b88e9ff25575ca89ef249bfeb5b2c613f917dfa895b7e4ecb2e4b9b0c8d99cbef1a325008b4761e44224434f274180d70de
+DIST firefox-140.6.0esr-uk.xpi 516731 BLAKE2B 
bd7202621a2eb8618aec1e55b1a8829ef16dee303fca5487713a350a4da49988661499e462d4e6777a4a25dfd22956b66fbc6627ba5f261ec0210ebc5ae7ee92
 SHA512 
3ff48809b272d5f529c7c96e9e238938d0b4ff369204c0d37c8dddf34ae8e5e1591bf24a63fad01303c8b7bccca70bfb03cfe56036426864cedff4f2ab64b5f6
+DIST firefox-140.6.0esr-ur.xpi 370187 BLAKE2B 
16b7fd95f406863372edaff24998b192a99ddbf7d99d98a1fa88350af1680162c35d6b8f63a6abc312be637ead062ed7f7f7f4fb857436535b48f83c41304d9c
 SHA512 
62f16ed2d599c9e997771db32b230e3cb5b45365f737ca787e6a16a6a002d6488ca0f575ae54bf2b0f8548941f042fdc79e2e4cb3f8deb007b754d1c2acb4f9e
+DIST firefox-140.6.0esr-uz.xpi 303481 BLAKE2B 
f2b6283869e48335ef4eb64a74082fcfc046a35bac498c5dcc226b9a051881cdfc941b16f458180a9195cb4944489bd1d059356fd837ab941ced4fe9b16b8c63
 SHA512 
a7f0efe469871a06e0176565f799078f10b61a3364672eed01a2df520bd0d5c27e0d6f86476cba8bb9077fbca0f5909a1770e3d8763980ae66f45f282a4fc64a
+DIST firefox-140.6.0esr-vi.xpi 469148 BLAKE2B 
7171e0ee857e88a369b12256c258c92b1ee2d47802618fe081b83c896802a8679835f714cabc0f276c7412f8ca6993ee144db099bc8d3f407d002f0b7d6ff2fe
 SHA512 
b0983b9e47c7ef44c5611a084ae1a63699708c30e57a86ead62f98cfaebf84246d2b2a72c9c2af806769b9ab885a736a7efb054aeaf3e3b20e6d88a163143af8
+DIST firefox-140.6.0esr-xh.xpi 272800 BLAKE2B 
1ce6d989565a7dca641e271cfd3a6a1c8e2ca94949b21aa7a22111178d709b3b5150d88b86b2bdb060de1d053b5ba35e8bebe36911d174485222acaa3c7ddaf8
 SHA512 
8f50649c72259fc5b5399f72fada263e4e9b925cbac09215897f160c7b2e4f978e45adc7a354104f494967be41efa9b85c81a36f4307a9c79cfecdef2431fa79
+DIST firefox-140.6.0esr-zh-CN.xpi 460706 BLAKE2B 
d979874915bb90b0fe73144705a73771f3c37294f7e7080a58ccd9b6c37b4a36e71484c3b0a4171ca28b41af644b3f31b666ac8988d190e6c428f90406c59604
 SHA512 
e4ae028b1eb5a7400f512bfd053cb6cd55f6fdc79e5da5ea6f9f12e4078278579faee8bc9d359ce267bab460639443d0fe1d8c9a4f86cddb1de48ebb8fb20597
+DIST firefox-140.6.0esr-zh-TW.xpi 463740 BLAKE2B 
8de0c2679b3b733a5bf7829a51015c4142d0a96ade0137e3910d573291d4e166c25ffd83c4615c28452fba5cf4bfeb900fd58887d1bfec34f801c896e84a84f2
 SHA512 
b444ae7db7c1853653367ddf885e739cbfcc4beeb39745b0c5175d9daf14f3e892ae2e86fa0f0a54a4729cbd8139d37161173abdb7335d76c729c97a65f776f7
+DIST firefox-140.6.0esr.source.tar.xz 643086844 BLAKE2B 
1613e232f6d423c2758122148eb0575496002dc8bb8ae82ed850275621904f9a50581fc1b82395e57fb4f6ca221d32672c33956a09b87ba4c094aae408a11c0c
 SHA512 
ed66657bd4b2d94791892261d7c0c0d950b4f630d12ab28a777d93393427451a9aa125e5a01ee15f2ac0ff378d0be074a08583dcffd35609112ba4e6f9ada798
 DIST firefox-140esr-patches-03.tar.xz 13452 BLAKE2B 
f1e5da9400ae5d15dec852f0d68d470f40cff11764813bb7429f320d82cbf838e4e6cc7097f42d154a4a67061a66ad31c0749020067fd2a7f891c9003d163b80
 SHA512 
966aa2d0b8472bd4c002676572b0755cbf0ecce8709776d07fa2cfec512d942ebc735c6ac20c5a5a19af8e00d762e8967c7d43325987c3b331c8c86183eec044
+DIST firefox-140esr-patches-04.tar.xz 124424 BLAKE2B 
89fd2cedb67a9d82c339fed01b79c9c4b3f58051b68764121f982d4eba04d979c9d16238a7599fbab4f9d3965253f3ec4886f2da590b05116bc6ea0ee027e935
 SHA512 
b8c268fd5118007490edb7ef99f90148af4fa88ec7cdec03d028630476c85862e896b1ad3a6964215835f6f442aa71df96d6dd9aab632802773792bced8dc17b
 DIST firefox-143-patches-02.tar.xz 13704 BLAKE2B 
72376ddcc74f97b448e86d464f74bfdb9dbabdf973bf2da6424ab9c78eacf69167114d54867ac3c1c0e39a2bc2efc2e66f2995b3200e3ab72f6f7f795257a03b
 SHA512 
d05a04bebe67a465f43c26492d34bb98ac473b4bdaf98831ed75483842a745fd34ba678e783e7708443f358eb8b0520f263b2a0710c264cef9fffcab30646708
 DIST firefox-143.0-ach.xpi 293829 BLAKE2B 
465d4e8b99eaa790014f87844e8d65d6b20a629023a14447c959ab97d4c19dc2020f6582b80e4e213db28d415179a9bc5b3d2aacb29a0908654c9bbabac97f8c
 SHA512 
f1beacab86215f12dc3884aa07950f788e5836105cbd1f3edcf87ae858060642620d5615bf72d123233c669ec7f3a92a35d67a3d9f2d807d2d326e32ffc01c75
 DIST firefox-143.0-af.xpi 267098 BLAKE2B 
f602110d567b6429ce52f176481e0f653d86fd8aca7dabae2099ad3b3d5665c0e818498acf0a67124fa556ccb26ce98597b90f1c733d0cbd303eb06aff1a1c84
 SHA512 
adf4e5fef87b1633daac1ca085cf1816453872eca3b9a83cb516a024ece6ae5dc07cfd58f287487e12b0734da0310332b0f09e961835b5a401c3d9ffcd533e36

diff --git a/www-client/firefox/firefox-140.6.0.ebuild 
b/www-client/firefox/firefox-140.6.0.ebuild
new file mode 100644
index 000000000000..f273fee2820a
--- /dev/null
+++ b/www-client/firefox/firefox-140.6.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-04.tar.xz"
+FIREFOX_LOONG_PATCHSET="firefox-139-loong-patches-02.tar.xz"
+
+LLVM_COMPAT=( 19 20 21 )
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.82.0
+
+PYTHON_COMPAT=( python3_{11..14} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+VIRTUALX_REQUIRED="manual"
+
+# Information about the bundled wasi toolchain from
+# https://github.com/WebAssembly/wasi-sdk/
+WASI_SDK_VER=28.0
+WASI_SDK_LLVM_VER=21
+
+MOZ_ESR=yes
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+       MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+       # Convert the ebuild version to the upstream Mozilla version
+       MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+       MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+       MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+       # ESR releases have slightly different version numbers
+       MOZ_PV="${MOZ_PV}esr"
+       HOMEPAGE="https://www.firefox.com https://www.firefox.com/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.firefox.com";
+       SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 
multiprocessing \
+       optfeature pax-utils python-any-r1 readme.gentoo-r1 rust 
toolchain-funcs virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}";
+
+if [[ ${PV} == *_rc* ]] ; then
+       
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}";
+fi
+
+PATCH_URIS=(
+       https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+DESCRIPTION="Firefox Web Browser"
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}
+       loong? (
+               
https://dev.gentoo.org/~xen0n/distfiles/www-client/${MOZ_PN}/${FIREFOX_LOONG_PATCHSET}
+       )
+       wasm-sandbox? (
+               amd64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz
 )
+               arm64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz
 )
+       )"
+
+S="${WORKDIR}/${PN}-${PV%_*}"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio 
selinux sndio"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent 
+system-libvpx"
+IUSE+=" system-pipewire system-png +system-webp test wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell +jumbo-build openh264 +telemetry 
wasm-sandbox"
+
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( jumbo-build )
+       wayland? ( dbus )
+       wifi? ( dbus )
+"
+
+RESTRICT="!test? ( test )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+       selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+       $(llvm_gen_dep '
+               llvm-core/clang:${LLVM_SLOT}
+               llvm-core/llvm:${LLVM_SLOT}
+               clang? (
+                       llvm-core/lld:${LLVM_SLOT}
+                       pgo? ( 
llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[profile] )
+               )
+               wasm-sandbox? ( llvm-core/lld:${LLVM_SLOT} )
+       ')
+       app-alternatives/awk
+       app-arch/unzip
+       app-arch/zip
+       >=dev-util/cbindgen-0.27.0
+       net-libs/nodejs
+       virtual/pkgconfig
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               !X? (
+                       gui-wm/tinywl
+                       x11-misc/xkeyboard-config
+               )
+       )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       dev-libs/expat
+       dev-libs/glib:2
+       dev-libs/libffi:=
+       >=dev-libs/nss-3.112.2
+       >=dev-libs/nspr-4.36
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       media-video/ffmpeg
+       virtual/zlib:=
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       x11-libs/libdrm
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-3.10.0:=
+       )
+       system-harfbuzz? (
+               >=media-libs/harfbuzz-2.8.1:0=
+               !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 )
+       )
+       system-icu? ( >=dev-libs/icu-76.1:= )
+       system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1:= )
+       system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] )
+       system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+       system-pipewire? ( >=media-video/pipewire-1.4.7-r2:= )
+       system-png? ( >=media-libs/libpng-1.6.45:0=[apng] )
+       system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+       wayland? (
+               >=media-libs/libepoxy-1.5.10-r1
+               x11-libs/gtk+:3[wayland]
+       )
+       wifi? (
+               kernel_linux? (
+                       || (
+                               net-misc/networkmanager
+                               net-misc/connman[networkmanager]
+                       )
+                       sys-apps/dbus
+               )
+       )
+       X? (
+               virtual/opengl
+               x11-libs/cairo[X]
+               x11-libs/gtk+:3[X]
+               x11-libs/libX11
+               x11-libs/libXcomposite
+               x11-libs/libXdamage
+               x11-libs/libXext
+               x11-libs/libXfixes
+               x11-libs/libXrandr
+               x11-libs/libxcb:=
+       )"
+RDEPEND="${COMMON_DEPEND}
+       hwaccel? (
+               media-video/libva-utils
+               sys-apps/pciutils
+       )
+       jack? ( virtual/jack )
+       openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+       X? (
+               x11-base/xorg-proto
+               x11-libs/libICE
+               x11-libs/libSM
+       )"
+
+# ESR and rapid dependencies.
+if [[ -n ${MOZ_ESR} ]] ; then
+       RDEPEND+=" !www-client/firefox:rapid"
+else
+       RDEPEND+=" !www-client/firefox:esr"
+fi
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+       MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+       if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then
+               einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM 
slot ${LLVM_SLOT} ..." >&2
+               return 1
+       fi
+
+       if use clang && ! tc-ld-is-mold ; then
+               if ! has_version -b "llvm-core/lld:${LLVM_SLOT}" ; then
+                       einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot 
use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+       fi
+
+       if use pgo ; then
+               if ! has_version -b 
"=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then
+                       einfo 
"=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!" >&2
+                       einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+       fi
+
+       einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+MOZ_LANGS=(
+       af ar ast be bg br ca cak cs cy da de dsb
+       el en-CA en-GB en-US es-AR es-ES et eu
+       fi fr fy-NL ga-IE gd gl he hr hsb hu
+       id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO
+       pa-IN pl pt-BR pt-PT rm ro ru
+       sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW
+)
+
+# Firefox-only LANGS
+MOZ_LANGS+=( ach )
+MOZ_LANGS+=( an )
+MOZ_LANGS+=( az )
+MOZ_LANGS+=( bn )
+MOZ_LANGS+=( bs )
+MOZ_LANGS+=( ca-valencia )
+MOZ_LANGS+=( eo )
+MOZ_LANGS+=( es-CL )
+MOZ_LANGS+=( es-MX )
+MOZ_LANGS+=( fa )
+MOZ_LANGS+=( ff )
+MOZ_LANGS+=( fur )
+MOZ_LANGS+=( gn )
+MOZ_LANGS+=( gu-IN )
+MOZ_LANGS+=( hi-IN )
+MOZ_LANGS+=( hy-AM )
+MOZ_LANGS+=( ia )
+MOZ_LANGS+=( km )
+MOZ_LANGS+=( kn )
+MOZ_LANGS+=( lij )
+MOZ_LANGS+=( mk )
+MOZ_LANGS+=( mr )
+MOZ_LANGS+=( my )
+MOZ_LANGS+=( ne-NP )
+MOZ_LANGS+=( oc )
+MOZ_LANGS+=( sc )
+MOZ_LANGS+=( sco )
+MOZ_LANGS+=( si )
+MOZ_LANGS+=( skr )
+MOZ_LANGS+=( son )
+MOZ_LANGS+=( szl )
+MOZ_LANGS+=( ta )
+MOZ_LANGS+=( te )
+MOZ_LANGS+=( tl )
+MOZ_LANGS+=( trs )
+MOZ_LANGS+=( ur )
+MOZ_LANGS+=( xh )
+
+mozilla_set_globals() {
+       # https://bugs.gentoo.org/587334
+       local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+               fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+       )
+
+       local lang xflag
+       for lang in "${MOZ_LANGS[@]}" ; do
+               # en and en_US are handled internally
+               if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+                       continue
+               fi
+
+               # strip region subtag if $lang is in the list
+               if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+                       xflag=${lang%%-*}
+               else
+                       xflag=${lang}
+               fi
+
+               SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+               SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> 
${MOZ_P_DISTFILES}-${lang}.xpi"
+               SRC_URI+=" )"
+               IUSE+=" l10n_${xflag/[_@]/-}"
+       done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -ne 1 ]] ; then
+               die "${FUNCNAME} requires exact one argument"
+       fi
+
+       einfo "Clearing cargo checksums for ${1} ..."
+
+       sed -i \
+               -e 's/\("files":{\)[^}]*/\1/' \
+               "${S}"/third_party/rust/${1}/.cargo-checksum.json || die
+}
+
+moz_install_xpi() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local DESTDIR=${1}
+       shift
+
+       insinto "${DESTDIR}"
+
+       local emid xpi_file xpi_tmp_dir
+       for xpi_file in "${@}" ; do
+               emid=
+               xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+               # Unpack XPI
+               unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+               # Determine extension ID
+               if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+                       emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; 
s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from install.rdf"
+               elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+                       emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' 
"${xpi_tmp_dir}/manifest.json")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from manifest.json"
+               else
+                       die "failed to determine extension id"
+               fi
+
+               einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+               newins "${xpi_file}" "${emid}.xpi"
+       done
+}
+
+mozconfig_add_options_ac() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_add_options_mk() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_use_enable() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_enable "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+mozconfig_use_with() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_with "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+virtwl() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+       [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to 
be set; try xdg_environment_reset"
+       tinywl -h >/dev/null || die 'tinywl -h failed'
+
+       local VIRTWL VIRTWL_PID
+       coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo 
$WAYLAND_DISPLAY; read _; kill $PPID'; }
+       local -x WAYLAND_DISPLAY
+       read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+       debug-print "${FUNCNAME}: $@"
+       "$@"
+       local r=$?
+
+       [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+       exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+       return $r
+}
+
+pkg_pretend() {
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+               # Ensure we have enough disk space to compile
+               if use pgo || use debug ; then
+                       CHECKREQS_DISK_BUILD="14300M"
+               elif tc-is-lto ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               fi
+
+               check-reqs_pkg_pretend
+       fi
+}
+
+pkg_setup() {
+
+       # Get LTO from environment; export after this phase for use in 
src_configure (etc)
+       use_lto=no
+
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+
+               if tc-is-lto; then
+                       use_lto=yes
+                       # LTO is handled via configure
+                       filter-lto
+               fi
+
+               if use pgo ; then
+                       if ! has userpriv ${FEATURES} ; then
+                               eerror "Building ${PN} with USE=pgo and 
FEATURES=-userpriv is not supported!"
+                       fi
+               fi
+
+               if [[ ${use_lto} = yes ]]; then
+                       # -Werror=lto-type-mismatch -Werror=odr are going to 
fail with GCC,
+                       # bmo#1516758, bgo#942288
+                       filter-flags -Werror=lto-type-mismatch -Werror=odr
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || use debug ; then
+                       CHECKREQS_DISK_BUILD="14300M"
+               elif [[ ${use_lto} == "yes" ]] ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               fi
+
+               check-reqs_pkg_setup
+               llvm-r1_pkg_setup
+               rust_pkg_setup
+               python-any-r1_pkg_setup
+
+               # Avoid PGO profiling problems due to enviroment leakage
+               # These should *always* be cleaned up anyway
+               unset \
+                       DBUS_SESSION_BUS_ADDRESS \
+                       DISPLAY \
+                       ORBIT_SOCKETDIR \
+                       SESSION_MANAGER \
+                       XAUTHORITY \
+                       XDG_CACHE_HOME \
+                       XDG_SESSION_COOKIE
+
+               # Build system is using /proc/self/oom_score_adj, bug #604394
+               addpredict /proc/self/oom_score_adj
+
+               if use pgo ; then
+                       # Update 105.0: "/proc/self/oom_score_adj" isn't enough 
anymore with pgo, but not sure
+                       # whether that's due to better OOM handling by Firefox 
(bmo#1771712), or portage
+                       # (PORTAGE_SCHEDULING_POLICY) update...
+                       addpredict /proc
+
+                       # Clear tons of conditions, since PGO is 
hardware-dependant.
+                       addpredict /dev
+               fi
+
+               if ! mountpoint -q /dev/shm ; then
+                       # If /dev/shm is not available, configure is known to 
fail with
+                       # a traceback report referencing 
/usr/lib/pythonN.N/multiprocessing/synchronize.py
+                       ewarn "/dev/shm is not mounted -- expect build 
failures!"
+               fi
+
+               # Google API keys (see 
http://www.chromium.org/developers/how-tos/api-keys)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+                       
MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+               fi
+
+               if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+                       
MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+               fi
+
+               # Mozilla API keys (see 
https://location.services.mozilla.com/api)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+                       
MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+               fi
+
+               # Ensure we use C locale when building, bug #746215
+               export LC_ALL=C
+       fi
+
+       export use_lto
+
+       CONFIG_CHECK="~SECCOMP"
+       WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to 
play DRM-protected content."
+       linux-info_pkg_setup
+}
+
+src_unpack() {
+       local _lp_dir="${WORKDIR}/language_packs"
+       local _src_file
+
+       if [[ ! -d "${_lp_dir}" ]] ; then
+               mkdir "${_lp_dir}" || die
+       fi
+
+       for _src_file in ${A} ; do
+               if [[ ${_src_file} == *.xpi ]]; then
+                       cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die 
"Failed to copy '${_src_file}' to '${_lp_dir}'!"
+               else
+                       unpack ${_src_file}
+               fi
+       done
+}
+
+src_prepare() {
+       if [[ ${use_lto} == "yes" ]]; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
+       fi
+
+       # Workaround for bgo#915651 on musl
+       if use elibc_glibc ; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die
+       fi
+
+       eapply "${WORKDIR}/firefox-patches"
+       use loong && eapply "${WORKDIR}/firefox-loong-patches"
+
+       # 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