commit:     8db5cf174190be4a1046109d7438d57e7d7c77d4
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 24 07:52:22 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Wed Sep 24 07:52:22 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8db5cf17

www-client/firefox: add 140.3.1

Pushing straight-to-stable since there are only a handful of commits between
140.3.0 and 140.3.1 (which were meant to land on 140.4.0), and I tested this
already on stable amd64 with 3 different build configurations. This point
release fixes (a runtime-critical) upstream bug #1980812.

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

 www-client/firefox/Manifest               |  101 +++
 www-client/firefox/firefox-140.3.1.ebuild | 1387 +++++++++++++++++++++++++++++
 2 files changed, 1488 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index ea314bb16c64..f5ebf4862c91 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -303,6 +303,107 @@ DIST firefox-140.3.0esr-xh.xpi 272584 BLAKE2B 
7fe4ea7e481978a1551976a0448da60472
 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-140.3.1esr-ach.xpi 294146 BLAKE2B 
14ab202940d1fa2c813b0ae3d63283f60fe5970e1eac4fc53a2708d65090bbb453fbcf376c215abc0ddcf679baf6503d495791cd39ffccc71dc62b48fd31a463
 SHA512 
5cf84dffd58d5eb36edae65eb599c0b444bc915044c82ecba51c178b8482d00be70ec4941b721b33a157e233e803c55db9f9f52ff3eb50be8c448c0a8acb0b4a
+DIST firefox-140.3.1esr-af.xpi 266430 BLAKE2B 
fb9f798f738ec9b0dbd7f701375cdc7a8b855d393ce47b71e38491bc24d9c96394139eadc35dbc55f9243a1c089c635c85c3e005ca28aeb158e6aa47981d6d7b
 SHA512 
074273c8364c36364571c5400c1ed0e683088eba3e0f652036e99674075f41460368dd61c16fbc4a1a5a74d2d7d626cfc2068f67e863d0a8c8e2a39d37fc6742
+DIST firefox-140.3.1esr-an.xpi 332086 BLAKE2B 
e8f9a020ca05d2fe1ab7d2f07937c7fc877640fc7f0c318c558622aa0dc4d6849fa77405840916a02b2fedabfedca277f71deeb1dd2df5c9ebc09aae07c89767
 SHA512 
e4d0d2d38e5bc7111845525884ccaec82479e45d804462ee846f75defbb8bd569df4bbcbe45422532c09a80c57004718c68696be4961c455c3bbccd40004cfa4
+DIST firefox-140.3.1esr-ar.xpi 444592 BLAKE2B 
5ec495a204fc38279d149467b04734894eb80ee256134291e5acb1e48add26ae9cd9c27907ffa11f3fb9d6ab88c4ffeaa8580190c7476be635b35a1758dc9937
 SHA512 
42c1d73bacfb7642faf870f67749a30cb68353198198691d1cc07eb014468c04615ac226fe7dd356d54fcdf530d94cffbe2c8f1847b1ae9f3d7689c2333bed2f
+DIST firefox-140.3.1esr-ast.xpi 312004 BLAKE2B 
fe997b74b2708426a778280636553c8f61fa824b8bf194392c8aa6681bed37287b8facd186acfb44ff01b969dd8680bd0f3f16fe49fddebf3a86648bf72b3016
 SHA512 
9eb5944ee1485ba858036e54e0f60e6d33914717e7cc6ab20d89b060e5de25dfcf1fb8c51cb54e51881c804209fe821d91b71c3f681ed50af77ff794261bd8ab
+DIST firefox-140.3.1esr-az.xpi 318191 BLAKE2B 
fe48813dde754d9fabfeb86174d8b758997433ed9cb42700a8b20fb8233efe09651e7112d36a6bd20225ad26186ce715a49ead29719caef18700e54aba785452
 SHA512 
20c69cad45a447e320fbca5027980e67814871d29dbfffea0f87e9250d1ee18f8c2c209e256dc89c8119177de446dba1bdee5a789c564f110768fbef29edbdda
+DIST firefox-140.3.1esr-be.xpi 520748 BLAKE2B 
ed918739721039779fbc5d9ef33e1639e593c28dcd498fb17d8a182308c60d5f4b1963a98eda91b2bf56333893a27e8ff2df4439a24a2a2a7b9c08c91c39d884
 SHA512 
25b5ad9f6839b9e6885c88805bac583333a090a2d9540dae9239302998614264a590c4b4ab71c0d6b2cc861f3f81d73b05a1bae9754f10963aa384299a203005
+DIST firefox-140.3.1esr-bg.xpi 454649 BLAKE2B 
820d7bb4b4a14467f5ebecb17e8ec0be4fefda29886090a110ee247d7e5d8d8bf682302404c07a9b65ef1875ad1a025868a3eb897a12d5c658964700ffda421b
 SHA512 
0361337c53d4ad940e688b82ccffabf86b52b5fbd24a59b174fe54a31f1f7662b6c6a157560c16afa487488c1c86ffe68f3e23acc1533c2e82b0f1a4b546a131
+DIST firefox-140.3.1esr-bn.xpi 413155 BLAKE2B 
ca626f0da45bd32217e7b292ce582df9cec06da0ff773929e06933ac16deec123f8b846020233ca0543a5ce51ef436af62e5ca48daa766affc83362724f0bafc
 SHA512 
5ff9ffaed70493c485ca34fb11253a1c8f4ad95d5e5408b5d0425a2d5a711cb499b16e97e21987196b17cd01bd61c27fea2e6cb8a39f995d571059ed1f80d1be
+DIST firefox-140.3.1esr-br.xpi 395174 BLAKE2B 
8a4c9fa61c72ce487250a21071ab0ed7b486aadc8188de43aad1ae91d744998fb50fc0b06dc7cd1432b9fbc9c9bb354c410b550be0b7c6142d8ce154339706ba
 SHA512 
8b43a146fe2f9b9e38133f18e59a556db48c6d5bd392956e9836ed61bbf61e43719e17cc74a3ffaae3c2c87bded573d71c0aac3ad548e9a0b08e3a474e00cc77
+DIST firefox-140.3.1esr-bs.xpi 446849 BLAKE2B 
e5815313ce8baf43917276d90cd864ee10ea671e84d42a91d884491d33529a1921244ebebca5c10efdbcd06d4129056dfebbb34dd06ead05b3ae06f951fda88f
 SHA512 
f7d5a26e703e14be00a3609c42acc963de0758ea9d11380036e90028a88c72a69fb113f23b66cef43af908a39fc07e035cce9e451099c8c3058638b490144f97
+DIST firefox-140.3.1esr-ca-valencia.xpi 357675 BLAKE2B 
084fad59a45fe6a34967a7f51fe9155c3035fc6829f4baf4e68eaecd6b17ffdb84803762a1f2f858b03e28ba78e1a3e2b03fcf8839f8a906cb26145cf7e393cf
 SHA512 
6e497d5d3253fcf35b0477116ed01b6e5e4356ec49cdf26c57e68e04d3d0099b7b8e242b2eb75daa0ba0ddc4a44dfabd51283763bfd6afb49cf49e194364b49c
+DIST firefox-140.3.1esr-ca.xpi 401491 BLAKE2B 
ffafc445929a910caf98744909e9bb406bbc1490efc67cbfe328d6d58237c667e1b7b05e979dcae0e0e730193334ca4dae1cb85e5c18b2d203b4ec01f72c0e5e
 SHA512 
0345def8339d41df850a5d42bc4705d20deb2c0e3fe722c413d0787dc305799942e511ec5caab0524dd1b2251885c420a68f7353694d0aa2408cac0e71d624d1
+DIST firefox-140.3.1esr-cak.xpi 390630 BLAKE2B 
7750e0c298a59090daf648e1e50b04697ba4d50a5ba15621222fd71e838d1413b7f021389d6aec23037227164b15a4cd8538e787e4e9964dc3f2714b4a4d7a1d
 SHA512 
f9b1b458654ae40a67d51fbe24c2e80eb8c3c62068263f7a9e19fcd61e655ff44b37979edaeadfc038a29f749283cdc2c878c7019e01645eb4747ae97761d818
+DIST firefox-140.3.1esr-cs.xpi 475506 BLAKE2B 
c10e8c0977fe6030a7f701a5f777f0bc13b360b76d57a9947b483b6793e8013fbef479bfab40d2645d555ee7c3bac3ba2e12d652df3f0180278b1da14346487c
 SHA512 
2a9aa250be0e72467cc11e4440ba970576c0a681b4d5abf3eaddef315af7ada77cce5ec68660a4030ff206e4f5c276829b224fe229ab1fd3adc71e1ba71966fd
+DIST firefox-140.3.1esr-cy.xpi 441564 BLAKE2B 
be36e7fa718b515e379f0b564eec50111119615ef1fe72269251bc0bd6bb3abda2b47f8054b0aa9517e87c1c2af1494fe4329a28f2b12107123f3880902d7906
 SHA512 
745703108064f85e169431a5ddedce3fc16a3dd8d8e5a0e824111452a7770eb34868b1722df681227cc0307ca50806a7422091b1715bcf2962deaea3525766fc
+DIST firefox-140.3.1esr-da.xpi 430729 BLAKE2B 
23cc5913863e99f624c4ad9643ae6005c08788c6e89567f2acc4d429eb0465b5dcc1f4818881340cf0a80a016ec2a1f0c9919db207f7fae42084927a55bf5429
 SHA512 
34022284ec07451193bd84fe4daf4bf9ef7869fd8049084cbe7a8afe37bbcf31b8b7eeba3eb30f17ea2643f23cebb8926df1c1bf77f8fb6f7fdf95bfdc2740b9
+DIST firefox-140.3.1esr-de.xpi 452244 BLAKE2B 
091c7d71ec7aa59fd4ad8ce6c9956a94eb2220559a10eec48cb211b81c079ef6332c68bd85d89db2fb820fc0f63bddd0a0940983315678eabdc6490b5db4a1e0
 SHA512 
eadfab64d9b9fe634ed520cc8a7382247286820c78bd8d516d503971a47ffee174f673f83586ea67cbd894b682d57dfd0ef0acc76dbad9ce0a42234c55905740
+DIST firefox-140.3.1esr-dsb.xpi 465653 BLAKE2B 
4eab0a7f1fb55df6d2ff8e9ac2c8fec6de40fc5ee8704ec19849e842c328dc6af2ab54bc05b65d71d2b2e733362bc59724ac5a007b4ce3f4e2a19e76def0b333
 SHA512 
38da8c5fee3945d3bfd1bb5595ebfb70a9efbbddf3301d2219fc21b68a08963050cd898ca4cb561a8115846cacc2c63ceab3471395927bb87a49ab69a8b63809
+DIST firefox-140.3.1esr-el.xpi 536370 BLAKE2B 
74bf69984912e7d89483a6c760182a698655dd9b999f6798f973c62d6ae55750d89164e7cf54dfa9143a1a3173ceff7c704a18b5824762d32971290ad5307d5e
 SHA512 
c69441ab32d81411318bf90f023f457b99c0b487cb17be7fe9b639b054fe24115f784698b612f47f56f02616208ab110aede4500a13a80be2d1c4756eb1e9ba5
+DIST firefox-140.3.1esr-en-CA.xpi 410687 BLAKE2B 
a6fd49b088e41c761c15b1f2eaa8cf71db52d41222980478527963af78a330d22e0f8eefc4330230bf394508bd3ceb56a5c3806b4af075c8b4c7a009517036b6
 SHA512 
2f38890d859cf86d07a04a43bbfc7e9f1dee638290e8399bfaf184ef76521a436d9a7869151ea608e191c159e93b26b023555518641209a040b25f0a70153394
+DIST firefox-140.3.1esr-en-GB.xpi 411011 BLAKE2B 
68fc02b9aab1e6fc8e26dda7a3c60567f50112ab7c091f08970402f5c39300b4947da7cbfb08ef5a9709fa35bb4c8bcf72179543e2ced9609b93d9246bc83a21
 SHA512 
c08f983e1878fd69d416eca838552cfb8ee4505504166c5dd40a5eb7271d57b57ee5dd41d5db3dacaf532f97b9da4c05672b55102f36f270adc8c30e0333d2f7
+DIST firefox-140.3.1esr-eo.xpi 433066 BLAKE2B 
d7a032220ed3a7a135c95f785fe6cca96421c1045a151885ff6859732b249a11b9b6e08054c11d92bcd0bb56beec0f24244a7bb6d2182a4191c3d471f1af8459
 SHA512 
b751397de3c56eb3fd39f7488756aa49103824e7538da79d321b65a7c93bb58b17e14babd4ea7bcacff5252e0fdca6044dbe74b99092c549f6368f00f887741c
+DIST firefox-140.3.1esr-es-AR.xpi 445125 BLAKE2B 
380a121e0f1233088893b985abe4ad660e085b980185e379604ed3ff2e1f39fd05b3c8707a2c296fb1ba1d5cda0dd6b2a6444af3dfc983954ae2a2bddda341f1
 SHA512 
44a8a0ff8e9b524fd0f6ff6aff28376944b8bc4d7f95cf0645a35939d55f584a3a5d57a8e44f83ea4f971010fcc4dc81bbf1b4d17eca718f932b118ad4f740bd
+DIST firefox-140.3.1esr-es-CL.xpi 445893 BLAKE2B 
57f75be68759e98e8325ae293ed10d9b2fc319d1b4fd33dadab7ea2df4f391bffd8ad5ed5245c5fd3ac5981af279e9adf5140cf588cfded5c19d6e0f147c418a
 SHA512 
e9ce5b0c6691a3906a25f83ea37cc95e782fe6fbf7aef745b52d5bc1cbb24fbec4082825b3da86a3dcf6b70ecc67ee8bfacc72ce0887c5eddfa1b93451558044
+DIST firefox-140.3.1esr-es-ES.xpi 446615 BLAKE2B 
3cb04faa21e1d776301341401f99ab000029a1ea233a140fd2c80f011f73ab12efdcb7237070539cf8994237201878daa4a0c4d3e34a7d1b834932d7da2b8f9d
 SHA512 
b2c7c0e94bb978b6de770b6df3ac86dd0b11c558e0d7c1c3888618b0df2c72ddca515ff4848e0d4a33b6762c962af633d28186cbd5b967f3e2cc007bb40738ea
+DIST firefox-140.3.1esr-es-MX.xpi 436933 BLAKE2B 
c126f847a51643f32a33fdacc43401051854209f3410a8fd1921295f5dfeada4fb40d157d62aead3df21adbff340baf04810d65a894156a4748095182074a925
 SHA512 
3ee8138f1a170f4aaa2fb5705bc6bfd15ded528787048bc22838476d097cb5ca50886db9682b175b93f9e17e0f84bfd34096e276beddc551adc59b1884a7d595
+DIST firefox-140.3.1esr-et.xpi 359105 BLAKE2B 
17e666a83ddfa1215e8e930e0d1bf29735f75c1d069b3f2135df22c3b462b4e0ed1ac034fc5424fa997aed5839bf17135d2555bd4c884d05f7cf8137cfc042c0
 SHA512 
33efe7c1b093f714acb6dd0eaef38cf42203a735b2967de24f2733fe84517ad836ffaa48470ced704ab8c44667ee60caf3d1d3b6999ae773cb63d617851392c6
+DIST firefox-140.3.1esr-eu.xpi 416440 BLAKE2B 
cf4882ae84cd5ba64e725505b01a5b7ff7d26db3bfd4a90717497271f137b99596b53c328a6b1bc952f891dd67adaad0cdbd86961d2b0a52ef0688a98b8b1dbe
 SHA512 
5e2f8dc448e6c1fcff65834befd631af12ccee5fe568053bc55b16570176c30c85e235489bfe80bac0049264a2e26839df6cce6627468f29d7267d69d41b211f
+DIST firefox-140.3.1esr-fa.xpi 421321 BLAKE2B 
38f34a580803da078eb5b8d5abb0c2375fde055a1753a67f684b5f74028c4e45910116f4f4b279e5713c6ad97e5135b3deeb3d58aeb1e93719e03af2d2934bcd
 SHA512 
657c4d66a211759ce095a598f0e0a5e375e4ca60d0851f968c39ef5b31b3132ae919e36b814cee10a3da0b97c60a8b3dc39ccc0971ddb264d774f0e37812c0bf
+DIST firefox-140.3.1esr-ff.xpi 309965 BLAKE2B 
bd3a71ac1b17bdcc6e3becc145c126952ec32247275b04ca1794dd5023e1bbaf2c475210d0ba255e5faeb0b7c3cbd17fe72fd8b5ea920b8a21e26a0f3f37883e
 SHA512 
0c68e1f4b5477d396f2c8107b5d58b76f773a93a6fa91048fb0dfbd704f65d167ab4e1a6fe2508713cf4fe5a9d8301361e9f266eb00988f8d48ab847434d510e
+DIST firefox-140.3.1esr-fi.xpi 429726 BLAKE2B 
623bd2205add7f508734bc1e0f6bf54c55662c1c473ae2b5c0c9d8f35436c8d1cf318d9c9bd4c89b0564c2bf41beed215c1d21046c6755edcc572c2b47b72c78
 SHA512 
4cb14b14a0792a7b0db812f9218cdaa73a0dc79887cf2e008a9b3d5f1b01ed10d58eb55164bfef1c7288de8f2636021f8e3ed59e053a949eb0ad10f95d30beb6
+DIST firefox-140.3.1esr-fr.xpi 458048 BLAKE2B 
5323fd7f311af1cb5ccbdc06e65d073037eaf8c0ae99606563f4a4ac0c6cf9fadb9dcd4e187f8c7f4d1d0157e1ababb4faeb10a62b660817fe5890fdc535f23e
 SHA512 
3465debf3d74c5a365f0db4dff4a981e4dba96d383718fe83fefc860d68cea859b0d477e260af10c1afccd97c81deebfe8d2bb68e521b8d368aebf27b13504dd
+DIST firefox-140.3.1esr-fur.xpi 451398 BLAKE2B 
4462adbf0e1214bee0e832bdf91673b7359af9648f1e0187bf146478a4ba6ac472e6594748b255fb739d68f99a7fe960a9579d150ee1b56e2e9d75ba49314d97
 SHA512 
2a233944717253ea68a02d1f061736ebe20c0feff8ff404b13f3a457c0990cbafec8770697d32fb543acd355ee6bd5947b64873f22f55472a03d5926397fd27a
+DIST firefox-140.3.1esr-fy-NL.xpi 441744 BLAKE2B 
686206844818ba8921121b99717926b02d12229946acee4e5a93baa874d31b45a1db8a4539115d4b2bc50291b80fbde87d707d26a20fc941fe6615e822fd46f0
 SHA512 
3e2039fefae48c38a49cf124167da96b6023940f369cb7a77b326d5f6d25df24cd9a8138712c7bee24f279c24a3afc001480b57a8944f5a4a66ba59a1d145fb0
+DIST firefox-140.3.1esr-ga-IE.xpi 315059 BLAKE2B 
5bf88c6fac699f3c41bbae7cca37852d20210a3d4f19cc180917f17ca7b2b15c0ea2e7409dd3deec3b7f6774ea948133b8f53f9c742cf2c47b25caf8718ce5eb
 SHA512 
8a0cdef6419809e368f5c313b361cfb07c243282d24bac93c7e1fd89a51248ff240edc143c464691daa81a38612bf3fece9f9e5e532e8d5a376a134f62c8725d
+DIST firefox-140.3.1esr-gd.xpi 399216 BLAKE2B 
07e4ad407510a90e124e8c9dc0f653ed92dad686a959de73bde528c6981c2bccf8883c7269a748e58fc81eaa946748a31125d69e5dc24eb4a27a5d5ab2029508
 SHA512 
e51d6bd9e17a027331cabdc68cf38b99ebe0ecd97bcde56858e45f83af946d9b197cf5be4230a5826d78b972fac9e4d51254dec2cae87c0722922ed75dd4a483
+DIST firefox-140.3.1esr-gl.xpi 442547 BLAKE2B 
3fc734b5b79a8fc2190edc5babbe84b9bffe55ad739bcf0feb5ab881517b17939c9f1aad93a0a3b4ac59a4b46a69f9c0898277cfa0678943909597c85f4cf6f0
 SHA512 
278d043da2625ab1e8644cc0c13b6c1dc705e1acb6376d54d7f9167d763f6f2dba98fe8e33501245922962fa24bcfe6bd0cc87cc4ddb8c1c478a409754d06bb5
+DIST firefox-140.3.1esr-gn.xpi 450642 BLAKE2B 
a51f9890e6e626cb4e864422d6b64e118a3749a4369a27bf0d2527d0e43275c1484695f2c3547475ee2f8bfb4a8c4dfb6ae74af20e18874312702252defcdeb1
 SHA512 
0d3d88fc56abddc49dc6c150c7f386684d2dd9c6821d088f27517e1843bf05b31e49e1b52c75034907175f7696bed99f3d3eea378df20ebff5ab0145707c6882
+DIST firefox-140.3.1esr-gu-IN.xpi 358762 BLAKE2B 
eb61692a7a7c419ffe291cf31f892ed84977785ecb81126e200c92f2a97a240f5015a349f1082fa016f536fc8b57f9af49f205d1075473055bacd2f5c71395c3
 SHA512 
3763780ddf876cfe087c5c9153e01efeb83a31d54fe897cd084216f327c9eaf0bc872ada8ff6edd8d01f2cbe1ed4d65695597b9f043d41c92c296563f857d755
+DIST firefox-140.3.1esr-he.xpi 444491 BLAKE2B 
7fca12403fe4dfa8f7add6eafd3c9cfecb3cc6a83403708988e582c5e5a2e10ba7fd27172e8921199a73c8b5ff4080123e5a2c60a780e49ab2c911922e92f607
 SHA512 
27313d4a12584370eca7ce12d1b878b55edfa9f4995b84e6b5ad7bb8f4373c1136d1f61b0f3ab06866f4e973506a0f1694ade1c05111e2429266eb02f6dd0554
+DIST firefox-140.3.1esr-hi-IN.xpi 377253 BLAKE2B 
c6d3169fccd87fbdc440517e567990bbedf08aa72c3f685a3bbe0da842799bb2edf329cef413c86ad3422ac595c77beb05cdbddbbcccb9193b7bf5c817fd63e0
 SHA512 
ec1716c5a1ea40423e443a0342072bfea2455cadc7df82b936f154117f328d8dfc2139d9f0f67556c3fca5a04cca89982deb85528da8abbc8c0f9e7eeadda7cc
+DIST firefox-140.3.1esr-hr.xpi 437478 BLAKE2B 
43a2c111dbf1fa49837f01f81b106e6d0d7d3f08ca650cc5312251392d7d413a35c2a6c2491de5536c35a1c1d36117df1e9a446e00c7b4dd48c0e57efd95861d
 SHA512 
bd65d40ba366c4f4296da579c63157f01ff72d0352e4876b1ce29aa98c95dcaf0ac126e672133bb8b4de44c344e2c4ba510ed19200c8cd6b79fca6c064337a88
+DIST firefox-140.3.1esr-hsb.xpi 462273 BLAKE2B 
90234a2ac935ca0300f66d72777b53841ef87aa4c4bbf05afbd8dc9e20c96f5a9214c31fc70faa826fe14bb114f488b17aded9ee2787b223402fa5ef22881115
 SHA512 
a18e778a1e93c583cae12d9d8f4bfc1b2f04ae9f1dbfcf65cc1b60051775ef9f15a8ad289efb6894e95f5485741f46c9f7f63668936c4036954134ee08ac1052
+DIST firefox-140.3.1esr-hu.xpi 465760 BLAKE2B 
2a2cfe0691f8281f2df6967548da7eed71e7ee486e09e6f1d78da960024876a6a37d9aeee76a17a0975b8995b32a98b1aa63d444b8b09c70e9e5e64274807f9c
 SHA512 
6ae37aa0db624b78b163a55dcd4d9263a53ea12183b8572a54fca0d4d464a3ab4f0c6ff13b54668b96d986718e6abed32c3c4e87ebe0ced109c89ff25cec56a2
+DIST firefox-140.3.1esr-hy-AM.xpi 458363 BLAKE2B 
3c233dd765ab2aede65a171833ff283300d57931f6c2dd0e1aeec5f35fa3c6290a9935c0feb03d342938a186529966b08ebac307ba3853f418e434d023074259
 SHA512 
880fc2d9d59cf9ce4666e3c91ef1fc0ba76a4c936f3b6c7e116bdf3717e2842bfa2314935b39a7afba6bb32f889aca4921328067a391e11214a3d69c0203ac4d
+DIST firefox-140.3.1esr-ia.xpi 429684 BLAKE2B 
1d63ff9678dfe0ee11c36222ca475088f3a03c983c39bd3d9bbcb7d670a9326c77a156e503d95a2a623f93650b89029425bae08034e466c91ebd73940bc3388a
 SHA512 
ecb5bbdd1ba1a348b14c1f6c32b2ece49b4395d6119ca624c7fba3e67cde4f1653dcd3d02b7b03f061d0988d7924830cd22fa2e95e034085a4aab9de20954f7f
+DIST firefox-140.3.1esr-id.xpi 419332 BLAKE2B 
7b0f7c20586d0c5efd236afe518f9a45fd98b20dc2f370012dd3a8c7c5d7b2455d5a3b756d688915307200d3bb9bdc11953dfd61361e08f027d7638dcb66e345
 SHA512 
720a61f68815924e7462171a77d2783a5047d9139daa42cf4c84fb69a9c0685281a4516af09066495b976249b9fba107a6e701d7965e3cf781d85625491e7e6e
+DIST firefox-140.3.1esr-is.xpi 432234 BLAKE2B 
df5ad782fdb71945d0e126ca38d4e39e4f6d8510603601f978a75e4cd191ef9756387a36e2e75b473ff722b14e1b2f47fadca0668a12d9c02d576bf2b99524a7
 SHA512 
0496f3925b3d7c0fa3cf03d9240de4f9ee989d77056d55cef60b337b6f1bcd60f2d150df1075ddefb6688cf4aa9c75520161046dd75f83705ea0647cecdafd87
+DIST firefox-140.3.1esr-it.xpi 440515 BLAKE2B 
8a722d6aa8c5a3d1c76cb0479e69ed767c29ca3a2cc3a3137e74f16c22e4b2090e924028c20afffbf569cd329811910427f35e76fdd14ed93ea35b7348f67c17
 SHA512 
70d7c5c1da59ca1a3ae61d7a2fccf8a8a3628835b3539b9ce346b0cff971ac9742dd8f5c3a4421c024ed8276657ddb5da17da87497e4c13de8765e2971ec977c
+DIST firefox-140.3.1esr-ja.xpi 480923 BLAKE2B 
67e9b096be033f032c07ea1daf2bb55db851b9308a436622465735caa773eb33251db8c3eeba03206fe34d69428c37b97e3aa11360c6790d13c1477edcd07a3b
 SHA512 
b37f5b1281bac2ebd970c68786d4ada6a93f0b383610c5c88eb3279213c60d54fd2fa7d31fe1cbfd39581716d226a099848cf566259793ddbb2c7a4bb80e6a00
+DIST firefox-140.3.1esr-ka.xpi 494452 BLAKE2B 
e5032f84be8ffb22fc2a3637caad3b6bef4e9bb932d544746d253890cddb04bbb2d765a530b7a6558f570479caa164f29c9ee01f78f671e9a8797f8675b0d27b
 SHA512 
88cf649ce273aee175b5fd6ab34045559096dc80a94087bf17b6ffdff22d7e0dd01a30d2ce5444704d81110b0ff775bedee5f7eb218e14e875292c0318c6b5eb
+DIST firefox-140.3.1esr-kab.xpi 421080 BLAKE2B 
df7a60ac0b573ee0e8e362b84e3eb2548677817333c1e02edee9075fdb1b25958970c283ac7d19a07a950c62e2d578db45e61c12f9a39c2441f1b32ead5f2f81
 SHA512 
cced9e738b8529009b19f70a8105c9f780c976e19218d55a84bc1d88361f46dc5325e6529d05db7200351a7ff007adde4c09d95b4aaeab5f5caba1aeb2aa46a1
+DIST firefox-140.3.1esr-kk.xpi 505978 BLAKE2B 
de6ce6be076f49f9c1a67066d2da8db3c9f3163f437eb1ffa4cd92470cecd53e80a1e3e6a286d5db0d18be575765a569a68a03d689235ec2aa13555fafedd003
 SHA512 
6935ac289af15eb48ab42c8fe69f83270408b6bce4e7e0ec25ff298eb0e73cda7863cd5825eca286c4e2febc83835e1651425f194620785c111e5dc72b8f3aa1
+DIST firefox-140.3.1esr-km.xpi 348568 BLAKE2B 
f81bc8bc1c78bee5fb62925204f144b1606f2f7d3c255ffdca95daa77f055f5db6c2f32f928cf61e5546c7859f84456bb0b39f689608cf93dee28d6d22e324b4
 SHA512 
1d8397e75c2eb032d8543f44bffff527287ca79caeb7f3c834694df6b0ac6a078c432ee055e7aa55ca8e3181eff0b12ce9cea5de37a0966712340c0cc65e636b
+DIST firefox-140.3.1esr-kn.xpi 331569 BLAKE2B 
39656e3ad105e457c206fa345f95dd4c288c88b5f9c0ba3fd117c245bc2cef517cbc04a9be85820dc327850c2689849503e3796d1c0a97915e17cbb442fb0146
 SHA512 
1d28066d32fc590a238954b79bff3a33b9d9f8c8761317c68798831be51ad909baab68ff23fb5173758a0f013065ffb9397c41f364b55dd242446310fc054c9f
+DIST firefox-140.3.1esr-ko.xpi 467171 BLAKE2B 
90d1fd00e775e9d3efea01c1d2e3e0d03e7c740f0d1f4f87914dd8fef0cae40b42fdb233a53f9a50a9e03116b10d768643b715ecbe7a96fc5634829938c0b134
 SHA512 
ea359a07c2b7496f670dfed21549e4af9909aa21a809c954bd0482e74ac00ef17d7ca32756c57fa414efd711ff1c777be049ca041a584f9dcc6064c192c756a7
+DIST firefox-140.3.1esr-lij.xpi 319072 BLAKE2B 
fee33424bbec1c0aa8ab39b46980ae8e02366db2f70e687002d4a9f7630e897c6d3a97628ade8bd25c0fd0889d44547ed5ceff45307e763b3dd8c08392aceeaf
 SHA512 
dc50755a016c407154fc74dbb0a291a925772a13ca3b4121e53bb4e1d377fb0ff6cc7390b71f31e031738d87f92c2278ac8bf436a86fc07b0ee8f73c7f61b5d7
+DIST firefox-140.3.1esr-lt.xpi 379737 BLAKE2B 
af3244fef76eb6c5a33493c5c5728846d9b71d3740fbca4e0db9be2428d8d4070753fabdaa63ba5b237ab1b52d69d8d9c96dd366a0b0a8b51bde7c7ff3c48e10
 SHA512 
030d2699320aa8ca703dbada4b1a2f42fec3ae2bfb5f9d7b54e70194826d896fec37a4b7a9945c18a1bd953f60177164658328004e541657a1f662e10b2d8705
+DIST firefox-140.3.1esr-lv.xpi 386109 BLAKE2B 
f0dd52b792620121c0b0586365e0de72127c899939cc3e0f3f915c2d9fabe32f86c29ae7b1f8526b09679fb25bd545c0fa65496845eb072b7fe114789f983af6
 SHA512 
c7d1602324ffcf3db50d662945ea9a0426a8d2d428e2f63b27a00d4935b69da350d0c0bfe2eb3a45916952b189543cbc1af85e8609a2e20fa630aa4dd659946c
+DIST firefox-140.3.1esr-mk.xpi 316628 BLAKE2B 
c76fdd1ea23cff6232863c3889f422385b11543fb4a99436ed9cde109cac24b48bc6a1c1dc87a46a665e2eee8181df3c2dfa28ee085ef9f899735897b2f9db79
 SHA512 
a63e802dbaab59999ee391ad7132571c4261c48a55007c2e69c501c84c7a0533c32f282f7f43fc187ace0193fa67ded2ce93ef0c4da0d995176c8940c8d01a4a
+DIST firefox-140.3.1esr-mr.xpi 356040 BLAKE2B 
6b1ae59da2bee2290995ef47c7e15ee77ba7b89a3d06ffc053969fa10bbf9e1146ad45f35afae87c7d8ee4dd9d2f774953eba90fb8f7ea38ee5f60eeea2e66a2
 SHA512 
5ee05eb0b72413f11177adb651f386ce697cffa3e1e07ad5103cfb7b8de285aea946f3292a340b86215702b3758324a4aad0e5fbb301d6630f32f01cad6a6028
+DIST firefox-140.3.1esr-ms.xpi 295179 BLAKE2B 
695e64b8a78890198756362921dd8f8b91c8d73f4c82238033bf692476206df9a28d6d1036bb49700417aeb42ea71f6079989873fc489bf85d9f153a401d60cf
 SHA512 
d208f93586d22c4c29622bb2061dfc45195f72d3cae382e58d262cc847113f9d8ca5e45b8269add4d815d6547cf02d4f6c4b6e2e795a46b33dbeb6cb36d6ecf8
+DIST firefox-140.3.1esr-my.xpi 342820 BLAKE2B 
45c78ecc5ceaac8f832f217aa02f4d190ab5fcd5f6352258886412a6367f5b2ffc99ca270a2525665fb8d703446c7be7e46694a101ab6c692bf56454b92438a2
 SHA512 
98e15812f436c2feaf2f2339e63cdd4ebb1ad6497f317bec128c2790418fbfa8b8d968646b3f07a9b21bfa99eeaec6842b7cdccc60544fc41c72b5985263eb39
+DIST firefox-140.3.1esr-nb-NO.xpi 428934 BLAKE2B 
8fbb216dc138ce2188533e7264d1c9d51114d72badef4068eb3aec0836746660209c1669bcfb897d3f90346bc51a762d23a981951d11a7baf3ebe979584168a7
 SHA512 
d46ac57428e367b76a93e36ac17ab92d4fd6f8a8842da998ab528aa0527bf9053c1c9b9e73ebd16f23b1c6329a266de921ff28e9d8d96da2203ca47e37297981
+DIST firefox-140.3.1esr-ne-NP.xpi 348797 BLAKE2B 
4c6b0d27f6ce965c34f1bd087f24e8df4e19fb82d6c977137b7febb6fb4cf2b45d1eb2e9df70929fee5fac40bd192913823c66acbc80d5df6600747d08818058
 SHA512 
e6745d8cab994a89a7ef8d973da52fbbf65e6c5fff4e6a705d95fcedf7ce2cfcc3911f79a03921dc5dde6f8bce969e53a5368ed3455ae7b750e1791d8c329f59
+DIST firefox-140.3.1esr-nl.xpi 435786 BLAKE2B 
4f988904b82e8becdd16cd5a8ffea5d9895d6ef438c1e80f7481edd8e7c6a19b30d829a269c7143092a06ace9d4a5fb4bc69f49760c80a45c8a6656b2cd7520c
 SHA512 
035357af0ce21fa641db0256545a80bf9b2571b8128e95a185516e42e5c11cfbd8f61d4ad30224decdf993dd0a4b830977e40ef0a3bf049b336697cdda9f98e2
+DIST firefox-140.3.1esr-nn-NO.xpi 431811 BLAKE2B 
b4db42c9d78995d8e15c1263576adcc87a747a4b0d43a744e3c7d395fd1f9c02e7e1c9235b3a23ea202e593fe7a7d59d758a234eee8d283c7178767e97a92b4d
 SHA512 
94b4ab762b6a96c4c8fde46c64db8ccdc9805114c748261a5b772492c564017634594d7d3fbd1824f82d8e880385bb390846f8d0d5ab4f9e97d4f0c5a3fff823
+DIST firefox-140.3.1esr-oc.xpi 410726 BLAKE2B 
2445157d9c0c8b403b1b2d453ab9e55aadf4c088221d9914c14f50ae60a78d540eccba4c06b802558c3a581a03a0fe2dc902bbf8f53560013fdb4cec0e3496f1
 SHA512 
8e22700a3c3f78d8ede1e0a38029cf21ee476c29c1c2ab77a7d4eb59c078894d895b84e17fba1ca25bc891f155c3f97521bcd1d0b5716744dc0e5f22557085bf
+DIST firefox-140.3.1esr-pa-IN.xpi 493387 BLAKE2B 
4a4abc572d05d257ba30d138a5666b36c6c1b8e6e8ffc541ed08da6e18eb57aab7e217602280fdc8fe6d1f8cfebd88bc152e32b2804267106ca228aadb4126a4
 SHA512 
4c1cfa3bdea2b3664e5f979ed840fbfad6225bbd67c3b62b1fa02e877fb4e104315ad690033a4278db53ef504e56cec7d125dda1597228b89e005bdf32dc5c41
+DIST firefox-140.3.1esr-pl.xpi 460176 BLAKE2B 
6428041f0f2bbace3a2807e1eedac867c835a0116ef5580732d4976da4c281aa7172ddd23adb1161a4efbe4f9a3ba61cf3923a37237f068060aa3b6cedd20ad1
 SHA512 
208d2bfb82594a336fdf4f3d26d509ff232c59c203cf1427f4733e264e2aeb0b2f5410d2ee47904b300d0396aed9ae895015b222f805b5ca86382a41b4420e96
+DIST firefox-140.3.1esr-pt-BR.xpi 440298 BLAKE2B 
e198c4be5658a9ee179d238c5ed350cf9c197034567fc8c18af692f8a95bc22b20be171ebb09100437ee4a340d5de2f9cc25f2a6991873196669fb28241ffbc5
 SHA512 
97a7fb2fe9a1cd4367bcaef63f292f3b7325a4207b347e86719f158885eb1f3590665e71cfc8a494ce17d1c2f08f9aa170949727108188fa9147b84a80ef1eab
+DIST firefox-140.3.1esr-pt-PT.xpi 446028 BLAKE2B 
8b5d1671f2bd6f26e3d5a3cc199a103326bca57b5f9ddd9a4be3230fb966474b520fff7ee39d40f6128cc8fc8651e70a7de613192dd328c1d7fada797f339fe8
 SHA512 
1f8ce94cbf86cfb80d749fe84b48afaafa774aee41d6e830226d4193d6ebedf34ea508df4ce6c3f466fcba0d43b6d67dea3ebdc6bef13eb51216c06335731c56
+DIST firefox-140.3.1esr-rm.xpi 436306 BLAKE2B 
29234c75de44a62ed6500bff457eeed74b0af230d2abb487c87c174197ac097e8caadb143193fa2c337f9ebfe34ecae3e937244ae26f481dfe1d0487005c1a37
 SHA512 
9c75f5e8095a551a7e9d06294d2ac02f196311a1ef816c8cae312bbf63222970244ebe6561dba980f5a794e59fcd528624949f97a7693e977d4bcd81aa4b8a93
+DIST firefox-140.3.1esr-ro.xpi 452376 BLAKE2B 
74bc224482fe9d0966f1cb2dcebf40b4d9a2deba9031c99c6adca9b7bf30c582f9aabbde9a3378c9f30ef65c394b2d8a9432b2a344d3bee37a05c6a3be79ef56
 SHA512 
8347ab8fdec849032d4429eb2ce40346867fd98df30401ce21890a4cb5de116e3ce440cfdf35ba35e6f0f3222541d11eb4802b39843498c3c4cb049805b1e823
+DIST firefox-140.3.1esr-ru.xpi 524709 BLAKE2B 
2b99c469112c04bf309a4008cb93f5cb5f2ccef2f6319cdbfa8324cae3f5595f60cbf4d02d2a6c61d52b51cc00eb30a7224ee503bf7111b56b40c255a84490b8
 SHA512 
9bede0546f26daaa552141c21840e59ac7d4ba1d5bda6c635d147afbb872912d00a0a9033471f1c1f0727ff8004fb025322b59c9b71746cd632b613500f57e1b
+DIST firefox-140.3.1esr-sc.xpi 408006 BLAKE2B 
6301697b8cae528f7776f3dad9c5fdef3db150bfbf2c1100402e455f2d24bbec9ce820221a2ae8b3212b2e99f45ab4cd17770322130500cf23db58a304f707c5
 SHA512 
873f8fbe897b1887b2e66978258d4714ad9f35fd08837c3e6c3a95f0e8f4bf43f98c865c9ebe84f5aa367019cc12e2c97e82588b76a101e9b6632014de2388ea
+DIST firefox-140.3.1esr-sco.xpi 322435 BLAKE2B 
65e8cf137dd10baacc8f4ade8c94533f61e65ecf828914fcd616ab9ae0b600c5fa0e60aeb20b3b57beeb08916369346ce86b199c8cfd29f8fa5a3baf23ec41ea
 SHA512 
2cf62d55eaeed4466ea792824d6f737415a6ead6dbc843c2b2e51448064957296d73d5e6dd729e9151bf66e972226e468e119bd337a9d82124f57986fe48bb40
+DIST firefox-140.3.1esr-si.xpi 411387 BLAKE2B 
a29263cf9f1050aa51e5f56b8184838e3f9f87231e95bea8fb07b54c836496afe5c191e2f14f7fd51bceba3203af2000f9a4e919444b50f088c63b139b7c9000
 SHA512 
2e0e8bf8a5a9f9f36d8bc0657619cbe8d9d671691a8d23494d3db83df1b88cfc98140ed93a76424e484a1d1c08f7a442f2158187e9830ee9095d5640a88662bf
+DIST firefox-140.3.1esr-sk.xpi 467570 BLAKE2B 
1528e3212ce2d46386e26656941431724df33d09d4a7a7dcb89099c5e01758ac8eb7782a1a93aa6a951156cce7f7b51fc9ac5af3874f31d59f0ba9b843aea914
 SHA512 
cd68046d71de6471df59ef765a7c2576a627f93776b02ac63b6bc5806dacafd60fcd50cf9f6944de133c776f9f05a2ecad7070fce3f20071f03f3271cfe00d98
+DIST firefox-140.3.1esr-skr.xpi 485665 BLAKE2B 
78cd54bd110a217780b2acc1bdffc70c6bbd371f0ced90fc90d072c7b938ae2812ad616fce8cec8dfe5e05052a1ee44beb9707be5fb8b0d10e51b05835214444
 SHA512 
b55af21979d4934ff1c05957d77c462a0212bda68e0c21c14270fd5710e37e5d4fce0bf138c52957356ff9660a6d82ecd386324dd44171bae2111c16f997277d
+DIST firefox-140.3.1esr-sl.xpi 440780 BLAKE2B 
3f8c326c5d136968d8f4a4dcd387d80e129dd9a94d0cfefa82ada274904d13bafe00dd9bdd21663547f8097a04bf17354a1984d32da374d63f3b16e4f9bc2707
 SHA512 
a4251c1c3c254fb07f4c5fbd6ee2f18b45256308cda20a3ddf55f80dedf9a51db33d7159a5299347561673888dc251f8e76d9d87090c8eafdfa743535c11b383
+DIST firefox-140.3.1esr-son.xpi 272924 BLAKE2B 
7d339d2f2be7766dbaead16a450fac8e9b3e54cfaa3dedfedc38c146577f693740e33fb31439d344077bd72bc259798ecca8419e3efa20393b03012d764ff8d4
 SHA512 
302ba773919d48070a139f75a04aac091be1ad5991fc3d2b2b1d0ecaa848987353557b80512aa0e1bd4d46e6ce42dfe2729a2f1a713d7d09d7fbdd12390a7b0f
+DIST firefox-140.3.1esr-sq.xpi 452871 BLAKE2B 
4bb014ee37db3d6b04ff7eee24414925fbc15e6fab5af67707e999f0e628e069fb563d9ea2c5fb46076ff060ba8b53bb0d836e01f16455cbb627a6d5ec611781
 SHA512 
7879d283707b1d73057e3bf3ec382eb31bc1e604fcc9270548bd7ab095d97c0f9a8cee7b29b7b5c76ef640f45fd00e3942443bf14b20d701ea10cf92756e803b
+DIST firefox-140.3.1esr-sr.xpi 453158 BLAKE2B 
7d4d9bf64464103beec258034273de3715d6979d0d932f6b2da71940e9f832a9740f3f0f2d573afa4a8b8baa24850a4b1c57ebbf161c1407e05867d088153881
 SHA512 
a24d8e35c61efa16be6aff9eba3ebef2ceb37585dd3948a7b8c090361047c63e80f854fdda7720920ab94fe4fd823d4d1d823cf3a08d3045fbeb003c9cd1a41c
+DIST firefox-140.3.1esr-sv-SE.xpi 435743 BLAKE2B 
0162023f5c8ca97f5ee8d3046a7595cf696760615726c5739d3c6f44667003b6f65c4dd7792cda4a3e616d248822630141b7f4c674ef773f324c3843aea9860c
 SHA512 
aec286ba8e0673bd74e42525b49fe4044332b88e1849f30bcda569a674b972c33fd0bdab9d9d625bf5b7a35d417322942a584cfa639113850081ef5e4e53220c
+DIST firefox-140.3.1esr-szl.xpi 341470 BLAKE2B 
dccb0a285f0d1a930e80fa171717831702a32c522a644492f738c1b369b2ab112d4c8e71936186c95d1ed64d416f0f7e9c88f447e1dd9b27fbbabdcc26d666ae
 SHA512 
81049cd7fda95311d0721d529de851d6f6e1c0eb55d42c42e3f583a94eb0f1959e2fa4cffb074ce21d2d394ce1bb9dbee6eebf0326b19323a683bbfd58f04c95
+DIST firefox-140.3.1esr-ta.xpi 337939 BLAKE2B 
3f3da289c625d62241ee3274eeb45b1e23dcbc4ecaf79d0e7c5bed89e84033deec3e46bf4f2a59c9853ebf5e4540c661c3e7253f7e3ca4f60a539d2bdc09990c
 SHA512 
3086498ea4ee78daeff59f851572bacc409cd018f8a7fccef58845cf413d291157215597d0b554db6c5bf39a0c21dc268c9286be80c9610c948c9fab0256e470
+DIST firefox-140.3.1esr-te.xpi 381988 BLAKE2B 
092c9100e6d9e9fe756e1aa161ceb39484446540ce95d478b54e40ffa14a77b3041750a199c9adda5ab9eb050b9328d1b457aff3c2af84fff34d9532e33f8eb4
 SHA512 
24d269940b001f20867006a27c976fbe079e387fbf7d80f623126a2093244bd974f6e070ad11a4d46871b9fedabc4d335387c0237c5975223b64fc92e99721d1
+DIST firefox-140.3.1esr-th.xpi 505282 BLAKE2B 
fa419d1f5cd90b2afd5f45b6e92f0785992153f3188024a03f0c289c9503eb3c1051707788ab0c645cb3def5fe22c7241320c4163a1c084dc60e06196e1858fb
 SHA512 
156a35b8472719c66f20b75a758d16bf063f7371f1b89154dcc57f1cbe29e9b6db9efa55cd17eea784e7e173b3006f64f3a492219da4e8d40c4994d9b537c470
+DIST firefox-140.3.1esr-tl.xpi 356446 BLAKE2B 
64c3764ca0d7e40f0e067b11c88a81b4f3cdcec5cb8f9ded5cbfc3d87dccfe3b885a6cb6dd1bd425723af13379c214e32dfa14355b8895ec850a500e613374a6
 SHA512 
8f7a3f4705071e18569d516c71b55ea2c1f00d5bd78946f4e2b034cbf832ea5dfd47e86360b185fe4607263f753136aca317f222093f6cd1cd60c6d56cd5b54a
+DIST firefox-140.3.1esr-tr.xpi 448874 BLAKE2B 
23c94846bd4f88340dfb7409906c609e21a5fa8e77da5ec9b5b15962069ca3aaeccb339ae4577953c10c8e18d3b69151fd929dc0933603b11826e792fdb48871
 SHA512 
1214323a6e6ff14bf6d47cc201ccc6a35ad3a8b1a590a8def5fac26bce51030c3200cf6560c752538972de218a9d2a226392d86dafe060755d06fa16ac1c1c24
+DIST firefox-140.3.1esr-trs.xpi 323787 BLAKE2B 
359c48a2d14ba35a844d63ddc274f58ff0f6961f2465780d13fb416baac71bf43956d49d872fd1bc7fa8a984a87b7842bb3c21a39f59f8dffffe1003c560407c
 SHA512 
37db2d0eca11f3f684edf25588e791450c7c162384f2ab641c846655bcd33533caa5eb9e27d87f62612a91059ece25b516a8534ebe2ee124327366fc5201f841
+DIST firefox-140.3.1esr-uk.xpi 516293 BLAKE2B 
ebb07cd0176db2505abcb22541a4bcc8306a19265acdc0d6603a79c22ff37aff757fbfc852bc2b0ba65b7702cf08714ecf2536a97e9c39e21ab2bb4569b9dd34
 SHA512 
32023773df68958fcb4abe620ceb975e0319d9212205ea3d5e5745852956b04c93842bd9429ea31b25e1bdc8ca561aed8f8cde671696165b27ebcd7a09d86ab0
+DIST firefox-140.3.1esr-ur.xpi 369973 BLAKE2B 
2b4158c6aef8c0ba7814fc4b2544668ceabd7ff666ba1b9804f30a08fb0c25f65c30ba649bcbe8e4fbed900dd982c529ee5ca76a1ba66d91646742d4d96673bf
 SHA512 
94167f389c5b0672c55d380110d31f82c587141d88b1fde86d764d6da1645ace7047048a73f6139ef257003d13671cd7ecb71a19899e0cd00f44651e67b6b50c
+DIST firefox-140.3.1esr-uz.xpi 303272 BLAKE2B 
7b7dbf5e5cd2e64d2bf7a4f55ac03a53073ca84083c7463756b4384ccf49f7a21869a1472a866cec3774d04d0481ac5f46f210387dc540c3cc7474ec995a5578
 SHA512 
ddfbd774305f355754d512b874d419fedf9e1c88baf61e87a4b8b075c5b70009cb175bbec6e014f70b87e1cdf47624f21789e3c93a80ece7d0455d4713e13672
+DIST firefox-140.3.1esr-vi.xpi 468690 BLAKE2B 
760ef3ea4aa72f5eb317987838d40cee1d30c424cc0a9d6c1ff6828e56938140761dfaad0a34692a5f13938701811ce64696dd306ddb783db5368858645a4d24
 SHA512 
52048018306eace2428605149bc642cb75c46cf3b4c275d614a731fbce4cf4076a95798b8310be7ab5fc71ae22d98f3622ea8f0f75c5948f1e74cbabcb8701dc
+DIST firefox-140.3.1esr-xh.xpi 272592 BLAKE2B 
ee164a3a014638719bf756cbc7d7a427298f2f1fafc494b08f8149094afee64adbde322333d10c9bac7c209196999a272187f750755a22ab1a5b0664f9adc905
 SHA512 
af1fe21dbf477f6d638fed60d3dff6a460ef7a5fc4b6ff3bc98c6ab66139ef53b8f9e38736ce365e09149e306458b469e3862fb58ee63aeb51fe698888b82431
+DIST firefox-140.3.1esr-zh-CN.xpi 460319 BLAKE2B 
fc796b2423d40d93dd59812c359b2326b595c98686c1b228fe42fdee66fb2557f894c983cdf4c0bf9fb3de7e6f2ff8fdfb5c58064f8c0ca29f56d4844a189741
 SHA512 
0d9f1879b8edb8a871d011d89a6f0aeb7e900fca1d53ac9262f68facdc030f535edb5a297cae4234f70a794cbd4c95f43cccf7a03d4bc680cfeccad55d7f4a9b
+DIST firefox-140.3.1esr-zh-TW.xpi 463325 BLAKE2B 
67468c6d1b30b7f1a1379c9315d63909ed2e28a98842c55cb8d02ddb9d337155a38508fd2b3b7a34746cbf3110cfb66054c6fae56cd2ee776c837c5cf7ba0770
 SHA512 
ef47196b8fa9f92bfd609823e41f95e207b6dd29963d9733276fead5b597698c1f9127d5c96cdc1d3333dfa7f1a845b0b6693e2cc8be349a8fbf13a9daeb301d
+DIST firefox-140.3.1esr.source.tar.xz 634713368 BLAKE2B 
20879e302ec685b782b49356543b4edaf96ad41ae5f62d33deccd43d80789487f8de9922a095672c312c98f279f2c06d45d6ed55c3c22ee583c936d1d172b3b9
 SHA512 
a9302d99d7f07f4b250aa214635814964dd083204268e05fe877a3d8330b9c0caa6c29ed19da71bd88979b7cf39ed52f17698968b0da5b0d7430b6764b43b6cc
 DIST firefox-140esr-patches-01.tar.xz 11100 BLAKE2B 
7a433e80efab15386ea69fdabae0354fb7ca431e0370fd642a864e20b2a6b558a187580513bbdd92b2eea98059eb4ebc5eb2117ebdab810643a842eeb0d82da7
 SHA512 
50a33f760d57c52a233fe6769931a5c869f72e68af2492fb068f2e3f2a3de5acdf21beea01dc6069911bd00f15c16b26e40e58a9c4f332d3247bbdceac4cde93
 DIST firefox-140esr-patches-03.tar.xz 13452 BLAKE2B 
f1e5da9400ae5d15dec852f0d68d470f40cff11764813bb7429f320d82cbf838e4e6cc7097f42d154a4a67061a66ad31c0749020067fd2a7f891c9003d163b80
 SHA512 
966aa2d0b8472bd4c002676572b0755cbf0ecce8709776d07fa2cfec512d942ebc735c6ac20c5a5a19af8e00d762e8967c7d43325987c3b331c8c86183eec044
 DIST firefox-141-patches-02.tar.xz 11400 BLAKE2B 
0986721d628294f2ee9b7b0a417a146418137abfdcda312ececd47ff35d5cfffb098a91e159501100704fe0301481687d2fd24ae76039c384ef41405f21513c7
 SHA512 
320ed49fbf3edec18de396f7b67a605c01335b8d1634b3a7408437db4b99ea633f50298c111e81218ee33535b344b047e7cfcf7dcc7345004af303eda387536e

diff --git a/www-client/firefox/firefox-140.3.1.ebuild 
b/www-client/firefox/firefox-140.3.1.ebuild
new file mode 100644
index 000000000000..117a34efe0df
--- /dev/null
+++ b/www-client/firefox/firefox-140.3.1.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-03.tar.xz"
+FIREFOX_LOONG_PATCHSET="firefox-139-loong-patches-02.tar.xz"
+
+LLVM_COMPAT=( 19 20 )
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.82.0
+
+PYTHON_COMPAT=( python3_{11..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