commit:     434f2a34dae72eb1a4cce17af172faf556bc7801
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 13 06:06:17 2026 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Jan 13 06:11:35 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=434f2a34

www-client/firefox: add 147.0

 - apply rebased patchet by tt_1 to fix fuzzing on some patches,
 - bump nss requirement to 3.119,
 - bump system-icu requirement to 78.1 to match the bundled version,
 - rebase 0021-*-PR_GetEnv-non-unified-build-fix.patch as parts of it has been
   merged upstream,
 - remove expat dependency as the bundled one gets used.

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

 www-client/firefox/Manifest             |  102 +++
 www-client/firefox/firefox-147.0.ebuild | 1464 +++++++++++++++++++++++++++++++
 2 files changed, 1566 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 3aa06e89ded1..c5a7d680ad25 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -305,6 +305,108 @@ DIST firefox-146.0.1-zh-CN.xpi 479100 BLAKE2B 
28bc272e46f11dfd7a76dcc630fcaf2d5e
 DIST firefox-146.0.1-zh-TW.xpi 482587 BLAKE2B 
13f0571779b1d6956591ae491f5c0a74808ab2a01281b5e865e73c865c4e0104623b70d165cbc3ee880b8da6344d6a70c83b484de0c8b8a95215ca227d0ec570
 SHA512 
7ba8508ce47ab6d05dce8135504bffccfdaaab0b7777589218ff5be9d0e701adf79200eeda84862c03db1ec1d03b963942c1f50e4a265cc7ee28033cf8e6f5c0
 DIST firefox-146.0.1.source.tar.xz 648938528 BLAKE2B 
808e1205697d2cd12c4ec4a21c59e6ab11f6fffef3031a848ca5823aaa1d507edaffd514e9471d9916bfb4ede645d4c5b03c1e6b0b638b22ce533998fa033bbf
 SHA512 
ae95b86e483febf8dfec8347748dd9048ed7d7f845250e07aa8048e2b351da61f6f3c5f83bb0d0c72e1a75ec61b60e59bbe69639f0f33532910ff8bf5ca07394
 DIST firefox-146.0.source.tar.xz 646002476 BLAKE2B 
da28aeff1bdd88ad612127196497a37acbe6bc83944b08cf2ea9a1eb4122899326fbd90ca2b1f4d2a6f331afd08d1699108cd09171f20c945f3f3fe006909029
 SHA512 
db6664310cdcdede832b29dea533b345a3ac86f9df7813118d44b1ec2c4a32e4de2b6e98044385ca6f6026eb3a9994c486a1ddb8b6f4ae7589ed46b122c05630
+DIST firefox-147-patches-01.tar.xz 10900 BLAKE2B 
d3920ca668f3fee1496cfbdb7d8c8f835f7fc258e1fd4e1d89f85155e98ee15d6c545d2389128e8bfaa629f49264d391dfa348bfbeb9b553773d4b51a35274c2
 SHA512 
e82300a2013040c0d6b061dd92706a6862e6c8cb3c2db6a9c256668aed6adef43d373dfcef5ec3ad97444b6dbb293d2c0ff1d1e1f5efe498249b1e796dcf243e
+DIST firefox-147.0-ach.xpi 295774 BLAKE2B 
5272ca33399196bff4865813d75919d5d1b35e12275bfcb54e1c160034995e9140d37c41cdb594e9edb7a1a5443f59f8284098a98ac7232fd487997353224351
 SHA512 
fd44bf7d901a38918a52bf84bc938fbdac3f1baf99e8c67970dbc1d8826dcfa01dde3885680a6344725a9edba1622bbf80b1b1f56d275ff1ba81acee32844e66
+DIST firefox-147.0-af.xpi 269121 BLAKE2B 
01307594ab11f960cffa39fe18cd5e619b5e4e6d149134d32c32a8122a97eefe55a2b04275376d97823c399a25d366fbcc9747d7c70953ab2d34830c7f1bdd6d
 SHA512 
a80abab7085248e8576737a88effaf51960dc278f5f86dda5ded0af7c5282cd30df318192bab6ada6e91e32ae92a5f69626f3eb5e7a7851318708b1e3d5a3e3b
+DIST firefox-147.0-an.xpi 333182 BLAKE2B 
78187388f174a42eddd507b245c3e6d5d99bbed7bf5d73d8042e02abab72554bfc877085b2c92bd558a6818b3d27392309ec4467e0ee61fda87e2535ba288e0c
 SHA512 
8a7cbd1cf1c479f217af2d27f6a12f79edba5684b1b952c08dc13966eecefd056d0e6708a67e5c54571f59c411687359c707066c7f87ab62ba87264ebcfc0f9a
+DIST firefox-147.0-ar.xpi 447300 BLAKE2B 
07877cba55650d7eb6babc0c6014492ae95297e0d1a69e36b2251663ffb82bb03f2071e7a24aed7540b7bc7250e604605f7688e47cbbe4818de44ef169190189
 SHA512 
0ab9c8fa50b9c14878af90fcd3adaec6d94037b9ddc2ad03cda4227efe7843dff0f87c65b845ae6260b7ab2488b01f1a004697e93daa32951ad6d78368b05f26
+DIST firefox-147.0-ast.xpi 313501 BLAKE2B 
de45d7806635fa71e9c39049ed5f23cb27ad773c08c9843a4278bab17dc6e4aea4b725c5ceec1de5b9c0d33a6d4e633b076997712dacb8147fea271e7f80cc20
 SHA512 
b84874642093adc7b6078f320ea77c3c1990283f29814ad55a80d36ad9b527dc5d93a1ad73d660be78ce530ab71f52121fecbbcc4e38392ea03fc95cf78fb84b
+DIST firefox-147.0-az.xpi 319871 BLAKE2B 
78087e13acf0249434e5786e52efe78fff5d4f7f638d76bb932c208be1f08d1392431d1838b7cfdf5982cdcd796b4c56ccf68f9140285c60127344f4734be754
 SHA512 
6cd7ad706842a470b72f11144c5df832adbf2a8535ef9f02a95ae838206c41cdb10cf09c1af65846197613ce4cd814710fd1cc118d710e02d156db74e21cc617
+DIST firefox-147.0-be.xpi 549235 BLAKE2B 
1a7cba5e91177d6b69af845d8dd2f84d859c81c65fdb1a123c64570e4dfe55b47dace06413f167392ea1d431fcf59fc47f6fd44cde544c2315163d5fdb0f6bd3
 SHA512 
8571b6de9aa7f3449249295b87a6991b06e9aea704919e060297165d24c2459b4c38dacd3b84ae6c679e5a7b192dd28182f7e043bf6b7c02486a4fbe5e6e0b46
+DIST firefox-147.0-bg.xpi 462991 BLAKE2B 
d5e6b7738a491bf63bd5df78bc84b99285ad8d78991cc7f3909ef140d21bd6f119d6fc97f9d23cfd851436ce2f23f67f72a06e744483bd525f9f19057e2a876e
 SHA512 
4bd29a4f93895a9581b4fb61e11c9284f1aaaeaa4a3bd947264ee3a141f9c7df08cd7ed10935eecd6cb8eecdf0ae941f331e9b03334265257f93aa2bc775b3f6
+DIST firefox-147.0-bn.xpi 413894 BLAKE2B 
f5396c0a8c2450589b87e36cf5ccb1f8f977605515af2986654bb74f1ff675afbfae811ea94a2e224d4a2e2e4445266a97f3ae7d5708df9a7bfa0d3e2171dc9d
 SHA512 
463af814fe925ff15603355a276be225e9a9085a053030c26539ce55bb56c20406b140ab91bc858a177a74e4b88750262493307a89b78d9dbb985013822dd25f
+DIST firefox-147.0-br.xpi 395377 BLAKE2B 
c7f782ddb64d76bc25d89002260b2d3f183653c3a7d6812b4e35cb8f03206a3cd780fd32c57128eb15b44fd318b95dcfed5d18412395763687806cd1b30ca56c
 SHA512 
477d4982a841c9fbebd5cf5fff000116ea3e04e3e07df5b166c83b7dd8ba5f707b5606faaf261db0ff976291b0e2ff9f02885a89eb50d9275770107181453953
+DIST firefox-147.0-bs.xpi 451389 BLAKE2B 
d30ed66362452c7d377116fe00f71fdcad8bedf5dab44ace0300a7b083691a31f67d8a67a5e122779b94a9427d2ad49a51b29ac3e907de3ddcd7346128236ccd
 SHA512 
91bdf189d501951a1404119587f71884ffe5e7e90bd80895ef5166166c4808898344b0988c445e695ea4239a04910fcf26d6dcf0e112190c1c9d0869de3fcc35
+DIST firefox-147.0-ca-valencia.xpi 358883 BLAKE2B 
253859eb4438f65141bc60597c0544993972f5e8296eec9438b3ec1c02455ac8b4ba5b886e943c85ccd3b06d26cf8c619d6e88856528df7116b314c6d44a0ac9
 SHA512 
58420e186e18979aff73822657c86ef2da1c93c3da310f9f2b5f33fecb12aa9139a92c2fdf78b340187c53f5a998017fa5cf2a1772894ba444abd32ffba1957f
+DIST firefox-147.0-ca.xpi 417057 BLAKE2B 
d309910d0a5cd1e4a499b3466f93c36c2346455e03331cc8444078525842410e547a945219602c9152e3d275d71baba719738c0680352d953c8c1895dccab69e
 SHA512 
e1556d117f6f4d49992114bfc533da3f1c79f901da7e230590d81a9e8aa991aee1e5f25064ffa9ebf01e257e89e60ff20e3fbf2e7c4734d9035e18d63d52ab49
+DIST firefox-147.0-cak.xpi 390721 BLAKE2B 
6d458fbdbd3d7e58bffb333838dd2f99e3aa0a1f5ac4e6f8d74043455cc7f84013014e0f013f64f2055c1fa31bc9521e12b7ef7bd5ab57ff51145716eb4f9415
 SHA512 
80b8f2f54c90516494a2d2901c5e4a050bd82c8564e68d3e91405976c3be73c1d0221fc6aa37abe57d92bf946742902d1cc5830cf1ea28e397e2cb838838159a
+DIST firefox-147.0-cs.xpi 502093 BLAKE2B 
6eefad0ffc148db0187fc546f61eb31650e440f1f104ae217d833c82adbd31667f232de0033a0cf17da30dd8c83e9a4454f07e43a03e2a6fdb37ceb9edaf4a75
 SHA512 
3bbcf90e9374089947dd38bd96f5a8d4af16a70621b03f7981ca522a6ae1476317ce0c6156a93523a9e0dc5cfb593cce4a1193544216998a2c4df5c684a7c312
+DIST firefox-147.0-cy.xpi 465501 BLAKE2B 
042385597ce25ecbfb74de24bc5b4570f215492047c7a7393fcf56511d767a5c9715ed05c6dbc65b4cef84a4cda4b2e786e69db669d86666c91004311f8fe6ce
 SHA512 
ae62f6165daf317ad6abe7d00ddd3055b1674e688265862c4f114f37097972fa8f2b0d7ff30b7bcbec7825b192e5de59a24f5045eb12ac470632d059a173488a
+DIST firefox-147.0-da.xpi 453670 BLAKE2B 
c319fc8681d17384693726921fcd7f957afb1f2f7e2c38a2937a80ff958cba6a7b33a91a92d57a9bc97a7ffa68d20b2377d666daf69937506434f8178ab44f8f
 SHA512 
09e13d49ea589df7377c403ad8f756e7c699406d5a2d86cb73ef85e394e8cef4877256a80bf0e6655ea32fc2ba42c53d9c74b009b08b0f7061831542181c5f46
+DIST firefox-147.0-de.xpi 476594 BLAKE2B 
b9b9944afbb9a2d787bddd7cfe4036274be022f8a89b25d39828a6dc7a0e3ae5e759d06dd7b4ee3aad0aba3a17c9d2455705ab1b761d75cf1ab86b511d7c8d49
 SHA512 
7040057a984cfefa032140b7d3b9620d474aa23de1ce3c5ac89833b0656435cdd18e3730339e47923c9df51a8899bc822106707c4b3efdafdc3d197bb66c9148
+DIST firefox-147.0-dsb.xpi 490395 BLAKE2B 
22797c387a5da2b3e77248c5d422ce591d32fc6757aa147d5f0c1b4ba9d9b7ab7787ba9666f74af54ba027f11a00461e47f3b9d9f4c5692a8cb977e0d229aae6
 SHA512 
23d0892b5f3d41bf86f2dd344c48f64667e63bb5f925545728cf4be4224eecb6407e9839f57d71e30573b2154c8e06776a35c91a5e04744b94f5471bd913a378
+DIST firefox-147.0-el.xpi 564767 BLAKE2B 
262a97a90e4282ceccb0831bbff3e5b9992cdbe9596dda8bf5ce7ea9547d2e7fb8e35fc9aab166decc0cd09be6fc37c5f31a4830edbac7aba32ce98d68c58359
 SHA512 
53503e16ab70565aafd9128f4b9f53fe768fb0c390bb6a3b1895f9e29eaf99f197d65cc3b5fc61db9f975eba84ee830616bdb0653e3fd24d8c112860baef5d89
+DIST firefox-147.0-en-CA.xpi 431888 BLAKE2B 
df493d8b114830f36ef801768ba99fd8e266e5ea9263f707cd0f3d8cb20277d394c13f14d3b47b81d59899de62e66e8da9b99ffb236e0570a5166c33039355d2
 SHA512 
272b75121fa64843fdc62185a0f731b2535c183840b7f73c0eaf6bc8f04ba3a8bde25e6d0feafc8fe02ed13b3c8fb568bb7e24bd894b6a368df05f30c7c75ed5
+DIST firefox-147.0-en-GB.xpi 432236 BLAKE2B 
b56a27a8562a1081d8da28e3ba7b6add72e3a97cd8ffb5f45432cfbf860c74ae5cf5bdb58a29b598fc8d80933acbdcd42fbd701a3e83d7cdfef7b8a32948b9fa
 SHA512 
750032ac36db7ebf77988ee1337441050024ba721950a1cc2610f53fc92b860d16918f02e83487d64095d97a36fba0ae211fa8a174c7754c324aa9f86a8562e6
+DIST firefox-147.0-eo.xpi 455999 BLAKE2B 
5ddb7df8ddf5fbe9c2b7af2404576703f923978027a3c1a8a353195b711386467ae47b5bba581e2a5abcb938ab31242c27ec82b6a30b168c1154a04ba1c0f9a4
 SHA512 
9ec65f24710891d06a9ecb40666e24b154e76c13ec4969c7939402817627e23c881e588450bede8367f9c93e58ede501e67508be2f28643b7feea90e56dfb637
+DIST firefox-147.0-es-AR.xpi 468363 BLAKE2B 
a1175a228125f54d923f54e2043924f8b056ce05c5c817f9e3e1b8271463360066279d7672d9584b3b9e7e175d7f8db9dd745bd470ece98d8d66cc1b6ee63a83
 SHA512 
b6fe721f89e719cbcd2ba870d39ca422e6633a10dbf7ce69ddefd414abd46bbbe67598069b056ee344f2609c833149274c0a1cfbff067f80b08007755b4f9474
+DIST firefox-147.0-es-CL.xpi 469486 BLAKE2B 
35adfdbde9ebec9c73f7df7b6aeb9a0537f60d2e5566f85a4e3e6bb3d354a5c8b2f30de2b3984be62814f02b74027e8244746cd66029cff535d140804e2253a2
 SHA512 
d0e5aeb707ad2bf086de7692aefc44813f35cbb978cf22362a9682047bc1275939738afb4b676cbdfb6f59d4f49a12c70aa0b33f70679d2e53a4a5c2b15b3fcc
+DIST firefox-147.0-es-ES.xpi 470175 BLAKE2B 
36a8435695e597558b2371d36cb93950c5bf617705aeafe4cc26fd33819ac6c2bd4ec280575f14f8bf581d9369d6ce8bfcab6cd152de74cc5609c106bc30e8e9
 SHA512 
078e4b8523949d67096c6fcd83e7c587204e02d94b7e62607b92e0ae96337950b97d40c79bb8db75f417362040826bbb7b4f0f6748fd158af13a20b82a863f57
+DIST firefox-147.0-es-MX.xpi 458623 BLAKE2B 
3064cde0a03474ea3e819faa629a3bb4f2bf121dc9ca29d6311ba7550b54d569d2f767b7491ea4bd8c3634f3ed7cf56035d818bc026ebb9d1de0d362a4716eac
 SHA512 
08ee0cf84edbdd14f9cbf1a47db4d266acc59327423fb7b768350e1af169f57628df03ab8f7ca8086458dde52a496576e798d2493f9c920e9fa98e03ed153577
+DIST firefox-147.0-et.xpi 359826 BLAKE2B 
86c3a7dff5b9fcc9f4c98aee5952b5f5c42938182f57c2b7b4b7f2df87d72891203129a62652952ee65d1145a14780cf0c5325dc2aaa6485a3d6356cb9ecd1d2
 SHA512 
62bfac9f24d5f301de15548e8f275ae859e5b1f54bfbdaa1dfe85fa0f712530516227d507c5ade5dafdd2fd520e1178e2ed1fc8bb5e8fe5fe53328bcd8cbcf5f
+DIST firefox-147.0-eu.xpi 452703 BLAKE2B 
21f6e70967eb2000ae409063d7c009eb97b904b4eb25cd665bd324344a159c17bff974be41ebd59d5969475d75c434ab20b293b3358555a1a8d468b42144dddd
 SHA512 
9e5c6b87965445768fa7638777a5eeb53e433c2be9b680dc4fc6191cc4dced492e03d73d35b25e32dfc731cff1f6b94c560e03458c999f3ceea63713492588b3
+DIST firefox-147.0-fa.xpi 421562 BLAKE2B 
4b512304a42f3e0bb15af92dfa43b3c653ca0be4f0ca5ea82be93350806a7982c32a1a547ffb5bbfa396f860a1dea37e6c36fdc0824fb7eefbfc0fcb2b3ecff6
 SHA512 
d3bcc983a0ae08ede02b49b5fe6ad5194f2e0c2fa3eb0bdbd44911fe5447c1e72beddb4de6d92a3abb302286f8e3333598c05809e657cd8b719d3357c5e7993f
+DIST firefox-147.0-ff.xpi 311410 BLAKE2B 
377bd480c4d1eba3e5617f40f6dce7c89dbda68cbe0ed6e8e5cec8d49c387dfce76a16798741ecaf072395d2e32e6990fa219c0f5206670fe41c283c9b6985db
 SHA512 
799eacb7a267a5ad4c3359f1bfd54cbe4eec259112463ee4160f056186c6aa1af652a0ecfffc8d847ac6ed81fe6b1f39c5b3fe7d3f8836d4f4d893d7051a4e7b
+DIST firefox-147.0-fi.xpi 452918 BLAKE2B 
696451cddc11b819e97ba4ee104ea54e034de08f63f4dafa3d1bd250376a5fd3453399341bbc87e8c60040d8a159f462dac7f4e0050c9d397b05512fc2f08cc5
 SHA512 
0197e9ad3adf4dcaf0618a565217d086efec5af228300a82811280f07bc10583f3e4310adeb1bc48ec42c6a101ad3700398fe7281a34ac343016177541b47923
+DIST firefox-147.0-fr.xpi 482439 BLAKE2B 
3a89d2e44f5843180b92f13cb05ff4023c98981ff65001e0a7a46ca19fffb7a9d786cb6b15ea15d3362d3255dfcc6d5a048bae9525e074613ca59fe3a24331ac
 SHA512 
b07b94aa195e755426fab62d0ae749adb7f8cd548713edb0289530d5e66d926fe1ee1506aacf2aee7aa0b033d90e7416d3c257c6f40bd229805e9eb5392db01d
+DIST firefox-147.0-fur.xpi 475452 BLAKE2B 
2ca0c6c326363c143af9c0de2967a382d037510c517907883850410e662a5bb9fd94f096d703b0ce7515b1905727c7a9b0117769c0c471d2288bc2f10454d95d
 SHA512 
a10bfaa09364f318ae7636e4ecafcd2e5e34f5cb8df3cfb3e3c9d8b61706a57927b4142fcbbe49ee74dac73aa17862592738ff64a09d8470584a5aee39197ff0
+DIST firefox-147.0-fy-NL.xpi 464944 BLAKE2B 
94234b0d955b0b7edb61b6688ab5356dbed227c715bdf7496f5e7c2fc80767252e8affffe1152f91446a79c3f991c146a0b785e31ad1639b406531e0bf715cd4
 SHA512 
da767bdb03489a15ad13154c0e4e8963e2225cea462beb838a625edeb6b465df68002c28cb274d05566179674e8520f69502e5f9acd5ab7824064384a2879c35
+DIST firefox-147.0-ga-IE.xpi 317056 BLAKE2B 
d5718f16adc205e7b8a03240c325f8d4b46bdf79372673e66116f8425a0e4bb0148024b65c99696289572b83c34010eb63fd23b6822d549a7bbe3a1e293c7769
 SHA512 
e5659e6b21333e728d582350e93de8e326d54b8f170ed3a0da1c8a4b2b50ae30ecddd0cd0d4c7382b0373f5271d7ffe62b1ce241b3af3e2be154cb4af12f938b
+DIST firefox-147.0-gd.xpi 399448 BLAKE2B 
4113c5c0ea5b6cdf949f26e615b7568195f635c7c7f6e375c22aaaeb6a991df0149c8651c3834c65634303aa72710448fbe5ac3b194d43181b511436df592d89
 SHA512 
a294391aa2556543ddda479e6468c7cdba651109f8c8adc14e7338bca65a6ed63c0e34b012b50fdafb0f3028813e1be6a72029f823ff820ca49aa21a43d3615a
+DIST firefox-147.0-gl.xpi 447907 BLAKE2B 
a85dbe6cc974ef372cc66d30a7ecc918701815465b7f15cc45b183fccd63f847d3a3225cccdf391e55b9536a46e0e05b4db09636af4b336f1371145fb35540ec
 SHA512 
cde00076c8023b4a0c4553a6a63795613b7fb6399fec537e3b00bb5811e015a813113404f0c7a5639fd3138b86f2046dcfd1c16808a0748742ffe36721a31c31
+DIST firefox-147.0-gn.xpi 473489 BLAKE2B 
b0c63afacaeba9b8db9d7b05635e9c1ad3831f73fc989f80cd94db74a763aea135536a3d782bae2326749be23c75d506b30478555b140be322552eeef66414e0
 SHA512 
03434bc916f222a839b07f4c3f29b85306f41d5b8649f64adad2b175d932fea2d6d67e2924469e84c8bc94166bdc7680ca48626d73f6322e394f323ff6138977
+DIST firefox-147.0-gu-IN.xpi 359739 BLAKE2B 
7d4d2196abe49a3b62cea6a10cc80c931c7dae696ad5cf16ab718fe415d5f5d7edbb5aaec51a16500bb2b8009eb08088a3cfa89107810a8e5895e2a9518806eb
 SHA512 
fc93c54343cfcd808b36d531896f278811d7246b804f81233a4b421625bf28891753154f6103636d91acf4e7c9f5db4052dcc6f409f8c0991bb4083de49e419a
+DIST firefox-147.0-he.xpi 468364 BLAKE2B 
6da2149f4a95957416055d5d1f52d7f0e705cba82b8af01f68baaebcce68bd0c1d61cf6542f3aa1d9143d92f406bf9c3fd1c67e32c0c4b91af1048709282ed44
 SHA512 
ed7b75b7bdc095a378797630754808713952771a83a64a22bbad268c5b534c964ff14bdc399d31f29ef54f3dce1308bcde54458105c3ac0568531eaa8ff37b61
+DIST firefox-147.0-hi-IN.xpi 378459 BLAKE2B 
9139a683076b04fa54c3275821bd084b905e8679d0d4b9124e08434dfb591b8493646185ee241bca5a258dc39ed3f32af21770e0cc59cf9554715c8d8e5ed16b
 SHA512 
82c67eab122a5d35d82bd4955afc9084a69254cf71049959bdae394889f01d5ccf6f8ace306b32340d1e56c54c6b3231eec7709ddd3700090b27542cd4a08a74
+DIST firefox-147.0-hr.xpi 458055 BLAKE2B 
dd069d9cedae29a5b260ea03b0d1d6140525cd115cbd9521f16cd7398e28b522475acfcfe9fb6f4507195b6ce74f366b7b41885a66b3ee9c113a20f1fb665bad
 SHA512 
b60b4f4e1619c39b9180ff0a7371f714da01ff09f0e5f295e2766b2169fe2e5d9303192a319477323dfb0cdd468fd9f664215f5f886e55e4b74c9a390e89ab08
+DIST firefox-147.0-hsb.xpi 487091 BLAKE2B 
29dca5cbf1707531fc321c3a0929d2baf74a7394b1d4b3a3633bfe6c6e67fa81dab3167a5e908a22db80e007ea0c8c56f3590470b9d481d95c457e60ac42ddb5
 SHA512 
f29fb8e5c9671a9abcb3221310a5eaceb9044b41f72508bf06ef38c86c082f54b89bea84ab38d16dcf962522525a70347ba5a84a095b08460967ec834789d601
+DIST firefox-147.0-hu.xpi 490808 BLAKE2B 
a2015f403594aa5497dda886f58010151ff6888b03cfc1379621beb33fd85894395a763ab175c7bc321014bb70da7780af9000184a354d1029a51c837ee670b8
 SHA512 
94215ac5d97423fc49b06068e78515a012882fc38dcf9be73cac227a48bbf737c235e61e87ec4db7133e9eccc4e640f7d13c1801ac4b689ca50ccea01716a84f
+DIST firefox-147.0-hy-AM.xpi 472513 BLAKE2B 
2cefb86f4fcf0f736b987527e4d1b7f5edfb27039b2bc5be04cfd76da34eb46c236cb88354c455a3879a5e808b16ed1a8f1207ce62b53d098eb01ba44eea5c28
 SHA512 
88117423154b55a6e34ce9b0ed1e2472f91f220ab68e5fc79b1281663797ac804cc0f6f31717486774b4c35823e2079b1414c0976559f4a87daedea879a8408a
+DIST firefox-147.0-ia.xpi 452348 BLAKE2B 
66ed4682caa5ac9a4412208fb64627f8ebf25afa49d0c6c6aa99ddcc4dadbdeeff46369f0e24c22ade268e3e39ee0a6da113b2e365fe9ed2a03ea7d3bf38f52e
 SHA512 
57af6b0e89761f1d8b4e76d7594cffe2f0a6230e46b2b269e20e12c222408667f9e20997b6a8db51512ad6965a2adaf9137d3fbb8f1ab9afef6d008236d4f327
+DIST firefox-147.0-id.xpi 432774 BLAKE2B 
6bfb2e225192aad2dcc97033ac4f622399507e8caf1c6f606a61346236ed82c8e73aba7e9225f7fbd3b0cb9111428ebb14260ca4613dac12abfc427f7b518f16
 SHA512 
c78f6b295c44aaa2ed62ced4566b9d03be16344945e5c62b71c625c2ddd0392eb2bf3f3303216669bf29a00e809c1f5a04dc95000a244641bf938968629a99bf
+DIST firefox-147.0-is.xpi 441227 BLAKE2B 
75f738353beee8c04395beac5a638136c4b1ea6592b11032b81d33837a164d3f7f7e00040c2e9b0de6d71a4a3b8adbe1dc3b0913022e3379d16e37044b61c443
 SHA512 
a899262f1b0d2e3cf6d9dd859ca584f36292ebe93e14e667ffae77929a39c06c15a5901e9f9e9da1dccb5a6bf9f768615bb54e02c7a793fb858a306d04818b03
+DIST firefox-147.0-it.xpi 463723 BLAKE2B 
0f7028e9e400a77d78975f4f8f7f36f354e7066a486e4058ce17126c343db6130f78077f00aa99bb16017168b5770b0901766b9a6ebe3c1ee5e193f67ed4bc38
 SHA512 
c52f49b4f2eccf2bbabfb873f265d90ef38c72df56576ba853b613f7c348596a7984fc8cc3faa39ffd212f54ff6812eb9766be47053ba48113e2a25f53ee517b
+DIST firefox-147.0-ja.xpi 505800 BLAKE2B 
f0aa432012eb4dbbe4365b5986d4cef1cc08b5208e6aaec9d52cc97588b921db5f7f0f50655477194ffa55efbed7eeff2bddd9c4320656b7ee98aadf184e401e
 SHA512 
fa69e58c2db83e03211357db48ff628ea956e90cfc47a7f79fa61d346b90ba4a78e6fabc356acb063983f82123f8a115e6bd31d4d3521b158c8269ed138fbaa9
+DIST firefox-147.0-ka.xpi 521269 BLAKE2B 
90f3ae168a7c628f5c71fa744302bf903aa229ca3d700e6635172060d72397f785c5f8d454f29c61562f34d5978f6431a882686437b21898a04fac18f87ecbc5
 SHA512 
3b53aa5db0b04f1f957f2736542a83d61d340f266b4fcc904961c107f4368a025770f941e0573b8ec2578df0724955340145d963fcec96f82aa73bba675ecb90
+DIST firefox-147.0-kab.xpi 427539 BLAKE2B 
52bb836c4546263971ea3c46a889ac8a80353d4024a3564449a5bd9b658dd0234856e3f4ae65e57346a4521c9011339278e4bdda4a1706b752cc79a9afe1770c
 SHA512 
6f38573849c1384c2c9ad1042e059194abee876fbebcb5b63b6ebd5e3535fdd2e4c99e4bd785a52a6bd71b3c4da7d384b6796897d2f8ef93665350df84ab5824
+DIST firefox-147.0-kk.xpi 541301 BLAKE2B 
f918986b6afff598aa5e13d93c17d579011cccf65e4799b3d1a87689e9b57c16fa1806d7319aa054fd993fbe675ee428967ab5a533a0d9853fe78cd73f5a5afb
 SHA512 
4110cb88409fd6dbcf4e64641cbbe473ec6f059003a857b9b7e77257927dc3e68087d0522018855fe4b49fa7f99a95f22efa6863bad1e5548c7d61931a36aa70
+DIST firefox-147.0-km.xpi 349301 BLAKE2B 
35dbb82b6daafb5357d809cc8284728bebe587200ac81d4716931301e96d8c14da2b65148e24470fa788c24ffdc1f7fbc2e591758f40dc32e66bd9288dcaafa2
 SHA512 
28949aa97fca3aaca124ed46cd730e84a351a5822acab681f5996f2b5b577228705d7be638a14c9de9874bf8b33df7c72c7647ee11d6fb61c2a0f0962f2c87b9
+DIST firefox-147.0-kn.xpi 333596 BLAKE2B 
e9a302c67328be1c2309a8a4e7aba152cba37e44e09b2dc0c590d8089f6ecb462bc0a1def40ca1d6b35174d71f218ff8db5012ed601194451c2da78b5ae7d6e9
 SHA512 
41024d8aeb64708d224d0fa11994ecb6aa6bfee4e94e7f3be415f1904dc0915c9e0440244ca207811d1112443cf40fb1bb3b1406632b13b8a418d8b1953625df
+DIST firefox-147.0-ko.xpi 491176 BLAKE2B 
f5cb437f50449cb3be3b0c09f548279a2f84899713a5902a3e9e265bfff2ad5155b576d3dae3687a43120c88c81b63ccbf8b56ab5239df565aa53253486ac14d
 SHA512 
875bc8394d249da2f4cec0f683c5971df04e2ff17864f389124bd865957fbadecd2cee6844276f38a0ae83ea398d90b90e5b84f9927d0badb5f4a8ac28526ca7
+DIST firefox-147.0-lij.xpi 320651 BLAKE2B 
bee84082c234f3c9019176cb5a3af936df92f9aea5df9201ff18a013d01ca83eddd5078c670a37bd6b5774115ad9b711dc57d54c6a9dcac8cab3d1b5f244b204
 SHA512 
205ea1513fac7db8cacb5724e908a9786bde0e4decba71c3077ef9ff4fa85c7a3849796e7c71c6ef52d9e04bda3dd1bef869f0fbb6b7813664710a0b257552b8
+DIST firefox-147.0-lt.xpi 380539 BLAKE2B 
87f7980a37ac6b30e10f1b37bb0e52d1bf28038ae0e4cf07a14ba8e529a2bff31c12bd9cf2fb1f338e0ce3fd7ed271cf3fbcbeed31856a672a22f187b522d6b3
 SHA512 
ee39648775997981fcfc95872a9b3018cc3c1b27bb5e5aa7bba5b1b6c99c439a546e01373b64b9732fb30737fa27fbbde85e842073bdda5cdb8a48a3df2a1faf
+DIST firefox-147.0-lv.xpi 391449 BLAKE2B 
089a4d0b35b2bd8dabec2f5814d1d887ab0ad12b046ec249f3621f9dca15a2d741a8984b43540a2e26754a4232167cd4bec12b19de35291a07a390437bcfd866
 SHA512 
4258d8c9986316251db277019f4cdd057d2b18d09c5f285a01ccf3dc4a5fc5659f77db9ca7cf5cff9708d9a4aedfe8479d232b20c70bf1e93c381580a3d7bcc5
+DIST firefox-147.0-mk.xpi 318217 BLAKE2B 
ae3d09733a76146d7fca8cec06a9f37ca37fb8415339b0238984e056e4bb1d34ca2f49ba3fa594b6b89898d6e37743638c74c5de4f39fd507b7ca6543258106c
 SHA512 
6d1e16298f1cbaf280c5c8fbad9a5824a20fb3a7e2f50b0f16a48e101c128876234e646ee524c57080f43a95a11fdbe84ab2c922abacccca2cd814209f6f5ee5
+DIST firefox-147.0-mr.xpi 357577 BLAKE2B 
313ddb2b4164d53fbeafa28fe436b4c30da0eb0c421e840b8c688d228b905c14fd25b7207df026fe77aebeddb8ce12096b2d329a001fe34bec22c07ac6f38067
 SHA512 
325f7389b2da06d05f3d0f719cb9faa70699da36ada60c0e758195bb4d46d4501ec2f40744d7a938ffb353bb5489fda2d0aa1c5357a1f02a1b7f1faeea2228e3
+DIST firefox-147.0-ms.xpi 297212 BLAKE2B 
a486be67fe37759301edd301dc1e6decb6d1d3f0e77f6e83730e5c41e095090febc5ef47372fc9ff0b55a2378c321ff5488e787c11fc175749ad730bf6d8936c
 SHA512 
d18ea5c1d5850d3cf2b71886f507c926358dfbca1e322a11e793ff152b8718e6ade12c5844654624844bbbf7384d3703012c45e86220d13900a2903a5530af9c
+DIST firefox-147.0-my.xpi 344471 BLAKE2B 
f016c90fbc36f6873a5adbc1790bfcddfb04a01515d2a6e6dcd9a26cdab4323f37c3a04ab8c7f093c166f3b35ab972b70f6673121aa884c6c9381ca41d5c7e8a
 SHA512 
07d6333e57ff84b977f485f9b1ca233fd313077effd9b5e5c7c067e5a0815be0c369f3836ea117861cd3ffd6ef3d0253eaf25a6d7752f9e3d9700b879f9699c7
+DIST firefox-147.0-nb-NO.xpi 451567 BLAKE2B 
b28c8c21d8df18d294790209de1fcaec0f68a10e0b326f92f4abc21d2c5ba3af18270a78e734ae31ec817b1a35e848171722e1b1b5054d98cbf29a3bee9fb4d2
 SHA512 
81eae6aed6579dc745a9eee68ada6d460e7f11387b04c3015f394f4fa77e8a48d12a88ac1217bb5fa3f7c95bb05d93d0ddb5d147f7e3fb797a930d51dcff6463
+DIST firefox-147.0-ne-NP.xpi 349631 BLAKE2B 
b7a70a8ee170f5f89a58952973223f972e8c320988585b3fe485faea5d7a426e68646700fd778204d7de64a51d6ae2ec04d11f91369aa44d514f74d7c11ac142
 SHA512 
aa09d39a9fd7e7aee7ef280782346ac7fdec24b804d50cf3d331691099ba259becbdfc8d2500c7b90c488877e68beec6b31de10f55ac1d7b05a4eb74d559006b
+DIST firefox-147.0-nl.xpi 458874 BLAKE2B 
04983bb4082ae5e5a4bf8643958aafe9ec6f97cb8436015e9b1641f3818aaeb343d8811c5fd510219f0bcf5998b724cfda6a50b8fd82409559a3464162aa0002
 SHA512 
ea9f1796ce0fe3c468a79cd45ee3dcb9766e3b9c5eb91846536f32aeb7f4974f6d942f721f4f7ddfa58542e5b9e55a95a74ea0c0c9d4025d7adbb75f4dfce309
+DIST firefox-147.0-nn-NO.xpi 454765 BLAKE2B 
b7f807421a39f1e28fd86f82cfaa2a947cb5d83d2237c19293389909d3af5415a0c3875203a564566accec31d14f0fb27eb4e72e6b107013b2c83c8e22b11bc0
 SHA512 
25daee6697e38ec014c37b3e0370af702d21c66faefc09bfbf209eb182f27fe40ec578937d24d9e7a6fe3039498082804d3aa6506791e4b2c2176e2e49a6f3ea
+DIST firefox-147.0-oc.xpi 411255 BLAKE2B 
26225a789416dd5b55529d3142b8e80209fda16c02e76b9efa4acba7dcac63218ca409463329962347b1cbfb48b468a1b63a79e849379ceb8f29f48e1621118d
 SHA512 
d5c2a7fabb1c11620cb3b6b10aeb147c04114983a7d3ad49ad2bb7c67cd27b1d43e6518ea077cb7b95bf878a9b5b000a778a2c5ef45954a988f9601b65eb5059
+DIST firefox-147.0-pa-IN.xpi 520332 BLAKE2B 
6bc06556e5b480470a869b3352bf9d3398ab96c98d1f27c6f76d70fd71626bf0c1436a51145fb12b17401802e2f059f3713e8a9cf0ce6a5211597ff237eef007
 SHA512 
2b46de2b0fcb668586367785ba3a7f06611504a51d7b28dfa210c70910078edff651c88ff0aa09c5ab25964a65f91e6333b668130a3f0b41bf40884be8896f04
+DIST firefox-147.0-pl.xpi 488087 BLAKE2B 
9b7ae57e8386b9a771d0e50e164c5b156418a130faf0d6c1f55de6fd8f8b52fd3fdcd0513fa32a04eadc5248824decf4c91e8470c03a34b1a70de375a927abe5
 SHA512 
901dcc627831964eb0e98e3a0dda0a33801a5022a84101e0213b50b7dd9def689a539e3979237a49823531980c7c15966ced3dc4b23bd14a89bb4e433d3b2257
+DIST firefox-147.0-pt-BR.xpi 463356 BLAKE2B 
cd6e38944462055f0b2afe5345a51e280b9635c435d4e940f2165839df1d293af96c8158f9791acde9e9b138e627453111f1d0a7faebcfcb81f467c8b98faacc
 SHA512 
e52fed82bae17049e9a19bc21e6db3dd6847018bac9b7c156d231ed40ee29ddf62087113a60b723178b7c138af04851f22a62c500938e19945319e1373d95990
+DIST firefox-147.0-pt-PT.xpi 456389 BLAKE2B 
8be71e7d3483031666f9f46a227163a3200076449e2f0e3b7f6deb9e44ebab2104197b50931eaee3fa61793c745713cb85b1d4731fb49acbc4210f8ac8fc5218
 SHA512 
672dd2bf62d7849413550d96c561177015bd13614f20489bf7a8bdebb15f441ef1c5b7d9b0d7b416e313d75445aa499dd2918ce75b4c32904b836f016480be07
+DIST firefox-147.0-rm.xpi 456406 BLAKE2B 
a189d3c31b82dfc6d332eb3d4f545b1f1bf4781d5f9e49d3cf1b364fee5b0e43a09fc2ed02622b1d08a25432e4e390691eb934f7251b4c32f00e339c196b5496
 SHA512 
11ffcadf43a128342c44d559422c3dad60bdbc7a8a093d086f2990f6f392ffdc781bbd9acce92cd428f825eeaae576870620a84176bfd6ef617510de4de02eb9
+DIST firefox-147.0-ro.xpi 476243 BLAKE2B 
c2c51b7f4220657be765a50494c8fc204e061cc1a240f61f0b438e16662625e68f65c40d0211cfbeb092061e8d273e3be849f4d395f54643160c2321a3b52d07
 SHA512 
02fbb937dc1762b8c894727a8f743bb4ad09ad7c50cff68ff6aed3f2b4244f5dde0e541a424f0cbedaca19c28b69b93012f00bd7407b5b72365a7affdf5371cb
+DIST firefox-147.0-ru.xpi 553268 BLAKE2B 
805bd8294516859e357d5ed43af2e684870a3d252a418ec990ae9e052ddfed94f7b55d5e4e5af90f2c7b7a575002335848dcb996519cebd0935da2d8816f56ce
 SHA512 
d48f88571927e8b5c775c8e890f3f24b7ba90af88b11b1ef4e30ef30d8fa544543ec885c2f9ea23fc47cfa59e19902569c979382aa541c98a75a558536ae86ad
+DIST firefox-147.0-sc.xpi 423916 BLAKE2B 
82ac1c688f4787445a2df11d526e0100073741f91f6384a12c0f2c90b0cd4edb4e4fd90532eb0d1e85fe3dc2ffb5847b3a4f4440a59e68655305bd322757323b
 SHA512 
51a1c928ec906b1e13d7c751445fa45d105b3822d20e9760eed5392e28c53f11415ddfb2a20656aa0ad7184c6436adb06f217128a57b0ca615889a337fb58915
+DIST firefox-147.0-sco.xpi 323644 BLAKE2B 
6db36123244c6a979ab1772e76c99ca0b3b2f2960e55532ca692ed2651f4a4dd5a9cbcae733bef6199ebd1ec0bd854f06bb39e725ef97b0929138af0034ee22d
 SHA512 
2a87166fb273ba0461f5bbda4ab5fe7a54b0b70cb8e3cf1a6d14002b6ae1def123efdd32f4935f81f3506d24f6c4fda30cf06a5e2f0cfb6c2bf1f1f5cb75e06e
+DIST firefox-147.0-si.xpi 410471 BLAKE2B 
80ec44ea7334634bdde181d632d0fd26f1a6e3483ce1ce9e82bca29ec94e720cef9651dce6b5889e98e8b905d2d38d7611f466278ac3e5c6f8c0f8cca006004e
 SHA512 
96198b0fb809911e0aa8a19fc8640ae8961f082c4e1d3630b31fc49e6eb921a2bf35745fba2e9656864abd176386137b6e766612d35a246ba5e5b8e948953974
+DIST firefox-147.0-sk.xpi 493513 BLAKE2B 
b85cdf87d3ed25641a6c679b0419ca3b307369bac4c4d0be6c64d4229161105fe0414d456c2f439743681b2ad34a5a1a8f510571c2d119bea6c3d1802390cfab
 SHA512 
17c67ce666e9456d8e1e4e48c39b94092151bbe501775e43a1c67f63abbca9630bda576e435716c698eb641b760c63e0ee04d715e1b72bd43b87ea385377dd76
+DIST firefox-147.0-skr.xpi 484857 BLAKE2B 
e134344924bacbb5e0687326f124cd9cad94e1d3bf6fd0c31d00d306fdb37f2c56f2be53ae80ac901098825fafee46632adec9cc8fd807d942b80b157d5f446c
 SHA512 
8e072bc5a961ed8c260429606e06b8591d6b51ae11b4c8ee46e6f5979575e30531a571b78b909405fa00a6c2e9aed8afa1dca74d2fa4b901d892b32006192002
+DIST firefox-147.0-sl.xpi 460981 BLAKE2B 
e201401120b50c22d854d145e027dfc351273e5cc38a94fb480430a792f017e39215c44ee3e8954f6009fb33b6839dbe815a96f70344ac618d5479eb3353067e
 SHA512 
0092b0a551fdcc220efd5730397bc9ab26ec36f2d6cc58a97bbc7c179b865b6f5b8688e4ddff16228b53f1c19249470f66ab66a08f815129cbdf95bb9bffa7ea
+DIST firefox-147.0-son.xpi 275631 BLAKE2B 
c59cb4baca11740fe9116403b66d30eb28341d4194530b5167a0e6a67bfe8c20236bd1fe804e28f4ee87a69fef45cb113cb6c84f096412b61c0bcae7833952a9
 SHA512 
e2534de3821dd6946c0865e1c336938a4a4df6c0cc69d20c4ed20a9ae484c30008600bcf1861464ff1cdcf8f882cb4d051477a2c6cb00ba614c78e0466534c3f
+DIST firefox-147.0-sq.xpi 479953 BLAKE2B 
4a123bba9e5dbcb2af0146d93d4f74543d3c992ea962045c21b1ce22698fcb64e66d05bb67ac5fb423a0f89f3b53b268388acd5bca8edab75721da8c43f628d0
 SHA512 
47cad485825d015587228f593ee5562a250a101bb92f69040ee05f93ad9fcffa0960c62e682315cba5015a7bca74ca5abf067d2314568f2b5086a25d170dcb56
+DIST firefox-147.0-sr.xpi 452651 BLAKE2B 
002ea3844d70c7463a12a849d5fe8b4d7947c251943a0e81dfa5f059f832de20e10068c079289a91e5ac6e80aea0275d692e884bdd9954f2ff768d69dc420354
 SHA512 
8deb012662b558bd5c8c35b515debc7a02d104b3189755b11c54b5328ec9ae09c736612825f7a5c9dc52f4764a333700628ee3b9f10967172473cab49e4e450e
+DIST firefox-147.0-sv-SE.xpi 458677 BLAKE2B 
1a191d17af2d979ddecdfebceb916515e0ea4cd8fccc0ef551254dcc1c8f74189429f6f218e2fe33cd3e68d47d751e3f4725ac169bba0e929314db4a0c507e36
 SHA512 
76f89ce837492adcb8ae5adf58bc267400afc527e9f697cc23f6990f1dfe2b0f7f9f3412456a7e369a04ec878e7b0448d1fb25e8e5cacded816390a44287e94c
+DIST firefox-147.0-szl.xpi 342175 BLAKE2B 
15de283632e5e2ec24e3b123524936ffdd12d9545e71a8b3cf537e78ea98708a86ef480e8a588cb17048d44e9f1a4cf1d7dc80477e70e214f8508ddb0b569940
 SHA512 
29c0371ba3fffe90adfa0b0294388e6b61573ca67bdb559c62196863065143aad44da8340a96a03e32cdb9e4cc125adcbd0e8cc4286d4ef7f1d133ea43922879
+DIST firefox-147.0-ta.xpi 339622 BLAKE2B 
d7e02a534a044be5a5606617c0178a70b2723166a81b44a93a84b13b88d6b0fafa5fac4faaf6a2b0630c55a55bc5f1ae9f2ac9e4d004be02e5abfec7fe47ea3b
 SHA512 
2a5975c5083797a6287a52e16d39e62941342de0efe78136c48dbbaaef7bf453aec52ff444c03aaa2100e0fb336ac361ed9b83891597c793080005e74faa88ea
+DIST firefox-147.0-te.xpi 382684 BLAKE2B 
d8783b8ccefcb4ef99579d02cd3c9782088f619fecdd72f1a813ef1f9bd8a32d63d7f71516aaac89e50aceb3ab3df0fd08d9fd0d7585dd8c2d445934ce105034
 SHA512 
6d52592e5639067c512deafbf9224a40d0392ddf5eb76e6bfd47f8ced016fc08e516ab811a9b65f7f3aa59cd2cab44699cff5b198c6f73d76637a2b15fd7afc7
+DIST firefox-147.0-th.xpi 530204 BLAKE2B 
ce348b1842a5098386ebc6d96971eae6729a95f2c26b0f64dd26a234c50ec7b1173b8718e37369f451b2e8fc2680adf6f4b362258c9666bd7cf7ec40ea8224c8
 SHA512 
4221d084ef6991cc529ece49f1d1bb2f78fe08eaba738c0c90e9cbc5c80129596df24f30821a50d0125e9416af82ec9d83f5d551a8b98b70f3481258cf199bfa
+DIST firefox-147.0-tl.xpi 356877 BLAKE2B 
7ec1d34cc21d51706015f2d9645b8bdce228f0709bc62b749fc8821ce0da1798f09faa10410c70a19ee3a99b1aa37ea5c53d23471582c20c85ebaa2becd421d2
 SHA512 
95b7bcee1683e8ae2883bb56e51fd48bf3efa86925b35cd9dbff0c403cef01edb9aa92b5de0a169105e421c6e1aecafc0f75c5de750ca5263c06dc7f3227133c
+DIST firefox-147.0-tr.xpi 472589 BLAKE2B 
2f7430eca2099156517ea067d4af5a7aa4fb93a074bd855e1638c2579e99717109335c98479ba72fd89e75956774a78180ba39353323909db889b90bab1c3ee1
 SHA512 
3372346892f3172d113eb60f39d37a5ae94d43297f8d67834aee46028b45ddade6d97c2ff2ab788b825d35738d213f7f30868983240cd7ee42c411dcf7827f20
+DIST firefox-147.0-trs.xpi 325453 BLAKE2B 
d32d15a09a3a5527b04060faad59333c768f83a1b873301e9edcdc39dc654eecbbfe8e170fb2904c39af156c121555b0d7751a567b074f8e30df99ba3609d67e
 SHA512 
67350d2aa1523432c304cb7294a858050242981c7aaf28a857f7a195d8e635ff59c9b5d99e59132dde44125344454dffc83c0905d94321543884be4fca8a74ec
+DIST firefox-147.0-uk.xpi 539997 BLAKE2B 
5f3f6321abe875ddc29d052347c314f2c42b00cc47a449c9b5200b0aca69c2546c8cd2f61adfe8397625957fa07bc0a72f7bb0a4c50cb3f0d1360daff873de95
 SHA512 
c0f586e75c2be6b9c5e7d6228e5aeffea290b009e18ead87dcc75cb0b8a9fa3abf8c95028c0bf87b711b23461ab18c46bd3887f60afe5ce499bedce08caeab42
+DIST firefox-147.0-ur.xpi 371426 BLAKE2B 
c9bfecc77b10a807abebdd94db53301f75cc9fe68393a22b8c98f764b74aa91a5afde95aef3e4a4b60777e8f52d869f2b5d1efea66d2ab6dfee50add482e7cda
 SHA512 
b54686ad2f13c399513ff76629534d35ab2967c3db302485bdd0d109c2c86bda50ad7292e3e58612b90facd7c0364dbc68a88a68b8301379e5947dc91b375a91
+DIST firefox-147.0-uz.xpi 304843 BLAKE2B 
5a99877ab62de80db9ec43a5a30f71b4ccdf60807a2fae9347b883c16c89a542a970ad6c4427d7f308f8796c407f70cbba968e5eb13c6919b6f6853b7511b517
 SHA512 
407a7008c1a3dd9a3873ce43ece2ad58c38a6e12001507c0a19a4db833da6cad92e1ed6d3ec975b35888087dfc27572fd973b76140b6a7e1a4f046801c95062a
+DIST firefox-147.0-vi.xpi 492946 BLAKE2B 
0056184dba536adad14c6d095215daf4be130a204841f5ce4a68af9d739578bde502595447eeb1fe4ec2cc5e8eeeedcd179033c8cdd037148b1480e7ca64a6aa
 SHA512 
17155158d18c484182c0114656e373e40d6e1bdf0d8742c69b5f7e7bfe227bda7ac2f206075e49b90762c5e15b1d9acd564809dbe56b941d950b3943ab07a0f0
+DIST firefox-147.0-xh.xpi 275242 BLAKE2B 
4803c347a5157652df7b1ab2fdd0058cd58a554e9a7e88dbb4cd0938061b8454c3506f444e5dae8320035e9983e4f01cc236d4094813833ab1de25ea7ca75adc
 SHA512 
c665905950c063cc5d0d6655d55605b5c3d928323c001d1c5dacf8bf5dcd9cdc3cd2c011a2296698322a7c360abefda824f8381653f85c35d0a5d8e856c8418c
+DIST firefox-147.0-zh-CN.xpi 483901 BLAKE2B 
13bd7e6ebef42f21196448cec5fdcef7a874f40df53251922773aee17fbabbe87ac214b5f590e3621393cec637702358b8d72933607fc788efc3776aef80b049
 SHA512 
fb900e74d42e06d4056ab8121399dde8f053d388f4f687ea66d565e4875d8b5a8fec2a78380ca46e9dea311fd41e6cd6206069ed64d05ed765a3b77d8df2fa99
+DIST firefox-147.0-zh-TW.xpi 487258 BLAKE2B 
8929802ce2840f6e095fdf5b8153d33a927f0680cd39ecb07716d12c557e9b1f3ad03ad6013e66da312e12687aca682ed99cea093d4dc91a8522784c1371745e
 SHA512 
c428c999f6c4f3ec779ae26dd00764781cc6bb3de532350f196e44f0c09bcf534834e33592fac78fcbd5e3385d0a0089deb0116de2c94cf1823e9f3da9795f21
+DIST firefox-147.0.source.tar.xz 659319748 BLAKE2B 
8d5e474bc37d7bedd20953a6c519129fa1d56912ef1ffd06582c8db9128e714239173c954b6f5f13a1fe7740d7391c770c684562108f7fd79900d0bf56c4e12e
 SHA512 
ac9017b1a2da7b2f139392c394c36341fd3476e3d4ea1a3c7e5e7bf100dc30d185132ef9256be7e6b0f9dbfc69234ac571ea1fc6db9d84543b15772f4ec85161
 DIST wasi-sdk-28.0-arm64-linux.tar.gz 121761064 BLAKE2B 
044a93cf1790dd652a86927bd74cf2a8b081a8db1261c2879d7fa72d5efde6a1ef65be63ff94c94d1e39d179ab829eded95121e2f6fd6c8f83374690763d532a
 SHA512 
5ed16fdcdfa573630a75986cddde5ddc6a7e010ad9ad20cfa939becb78c1cbb0740fd1a53064e3d358b929b7b9ef6264612644293a1840c54a3e1868b4c15d7b
 DIST wasi-sdk-28.0-x86_64-linux.tar.gz 121193888 BLAKE2B 
eaefdd7f0432b3a2432e09fce659282e1e1a515a0b31f63cc2d48953e180229fe494deff2e1019f60ab38179f7f93e6dd13d4763355b706e5f447efac1e5f08c
 SHA512 
805412c73b4b2d3c9df9af25b95dd2ed7625dd1b4424bbf07286caf24fc87e54aee1fbb4fbe3904f180a7cca9decf00177915860ca216e87421d8c91a0693875
 DIST wasi-sdk-29.0-arm64-linux.tar.gz 119258587 BLAKE2B 
8f71af2b3367604051d094dbfd7e498d8fce04f0b90eaed8426e947b70b7b7480fb60c98c9b06c7e2647aa1da2101f7a8e4779778a072eba10af519c7093a2cb
 SHA512 
728923caee9a08159bfe1619b2d40e2945c0e614513e941fb4964f5875adb7e76dfdb30144e1841d87ce0e87c4a85f243f2af54e7c4d4001232f6e5a30ba8cbf

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

Reply via email to