commit:     6a7abf6e2a623eca0d3ae13e88116de6bd38b985
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 16 20:20:17 2026 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Mon Feb 16 20:20:41 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6a7abf6e

www-client/firefox: add 147.0.4

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

 www-client/firefox/Manifest               |  101 ++
 www-client/firefox/firefox-147.0.4.ebuild | 1466 +++++++++++++++++++++++++++++
 2 files changed, 1567 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 7a174acb59e5..56994079b491 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -812,6 +812,107 @@ DIST firefox-147.0.3-xh.xpi 275245 BLAKE2B 
d52ab1fe0377d0f74a9e032dc479077f0c7fb
 DIST firefox-147.0.3-zh-CN.xpi 483913 BLAKE2B 
9b4feeb135365301d9335e799540043e4cce6b66c3824632f00b6d38d338c549eaf7d0e00ae7cc23b326d40be2cf31b58a2aaa9c9677aa1684dc7f35debb2e09
 SHA512 
84da912a6e8f49440a1ef7e476e1f9197134b32bcf8046320cf867dc9094a1c50cd2633edd8fcb2bf41dcb0cb3da04dbf70c474f1bf83d7e3fff2bb30881544d
 DIST firefox-147.0.3-zh-TW.xpi 487258 BLAKE2B 
95f2fe937fedfa3c97d5f23141796c9017d9f535b30448a1ab62e434aeaa8e280f520a51237c280ac5268faf9f15937aac992cf4e8ff4f349482890518588a14
 SHA512 
5fead566fa76ff30c708fbf22702a2c67e42cc69dd773bf3684f19deddf6ff28782097eb45910636cbc4b0f4297413fed0b7db9053f41658255114b2dec7e1ce
 DIST firefox-147.0.3.source.tar.xz 658641660 BLAKE2B 
d1dfb15a47dbbaf50081c61b7b03d712886ec4b3ae749abf7886c7adebeb7e03831c65e49706f09bd670a11359aa91be45921d1166003ba89cededf61e7a8c96
 SHA512 
37e39c47d694eccdcabb7d8a0a4cfe1b02860a97f604653f364c60f4e98796ffc7f1c6ab51226b2e5034a4b4805ccc6ec3983f0d830c9f36692df2ec261273d9
+DIST firefox-147.0.4-ach.xpi 295780 BLAKE2B 
3432c9695583b69efa7a1288a87706cb7d2bd235fed6d4e44a7feb288e0eed9d188aee3660bf073d661c3a6cc6f759ea16088371b85dd6aa4bf0c8dafbb98613
 SHA512 
559f855d1abfceefc89edeadb3e67344449269a289c9ee39c5c4804b8fd56cd4df1b50ccccd540f19b16e69fd55031fafc75775383c6f3fcdd2bd29c53c67dfd
+DIST firefox-147.0.4-af.xpi 269137 BLAKE2B 
4797859d9a589dc1ab18a100f6ace84f65acd47de48bf1cc3cb2fc8a43ab7c21d9b9bae03384761be40707335a91100e032124b4b8c56802e8551522a5e598b1
 SHA512 
66199f48a99b8e9f865d235371da8db459bda10d28fec7042110a93e1826f95932c0f47fa55c8ddb86f4d0f3366daa631d07d9f104452902cf94b650999c9b13
+DIST firefox-147.0.4-an.xpi 333190 BLAKE2B 
bc10bb3e81f9b5892ddd6cdca6a65c6e55e51d4b833f22c629e9e541086bffb68f55b4bdec861447d3b8941141c7e8493f76f853601ccd64a6633d2769ad75e9
 SHA512 
a0b5ae232ee1ad6333a2809ea0384c15ca2ec3f0e21f722f2a3926237ed294ff47b487333e259018e76f27a97a824f2fa3112e3dcdf28a978ed4a3a006d21113
+DIST firefox-147.0.4-ar.xpi 447289 BLAKE2B 
ed120add6a94f75a36584b779893f6856a96228542617bdb416b001fdf5571faf5bb18318fcdf819b3be10efd7d88ba9cbe66f5e239395ef01c8866e4338ca03
 SHA512 
62e8f478090701cf485ec4e6bcfbf6c2a82210c7816a8237beff93dd0d1b03de8e3bc94c94fd0e58540ac41019054f73b697582ae7c387fc4e555a55d99cd401
+DIST firefox-147.0.4-ast.xpi 313507 BLAKE2B 
cb56aebb80b8169d6b659a16b0fdd9f8bf9f1bd1530eda91275b8475ebed9ccf59d6e486a1298977ed4713cbe9232391eaed827d9d1c0592f27c252e6c68f3f9
 SHA512 
8d3246e65f42c2ee3665a9e16551e4ec342e0dc65f166be9ee016212c82f8c1fb1e328e78c46e079331ea9610912d4d395045f80b4f15a1771372107987f23c7
+DIST firefox-147.0.4-az.xpi 319876 BLAKE2B 
d9cca3fcd5f761311bfdbfc31f4b1c53a6e12ecb018be4cf29a50d7b61e930d4f4852e7d22597bf258ff8858d69eff34be2bee6978bc8cdf9771b902dd9dff75
 SHA512 
a59b35ecf1877cd35a7e606183f69418a83754a63b797199309e2f55134ceaefd960805366050dc0384e0f4615a5001dadc20b42e41766d46dd0711dd0bfb21f
+DIST firefox-147.0.4-be.xpi 549303 BLAKE2B 
92d4f602fd517c93e2e76272ce518b93cce084d34632f372f222cbba7635448c4c5d47ad188d5e83271232d464a00914a6b5a47794f5bb26a9aa65e457371fd3
 SHA512 
b92530fe4d2aadd2786713479cea6fd9a9142b875b49b7078e6dfac6b30013a59d53f2aa1822be0d845511fb73ddc4ecb52eb29b90a49114e1a96aec2cc6dc41
+DIST firefox-147.0.4-bg.xpi 462995 BLAKE2B 
6bad515c302b5ad9082862672e16fc8e330fa8301b5e844c5677463e07d5da31d6c9d45df7ce2e26b57b94c746d5b519e5fc6bc4868918c8509351ffef2b69e7
 SHA512 
8908f861e7127bd20a1e242ca1180cf138f7f466000d9d1d77b7a166e95867225b641fbed04e98b614c2b4387dcfed64c448c87dda622483fa5bb53ab0de864b
+DIST firefox-147.0.4-bn.xpi 413888 BLAKE2B 
870d90c90485f68892ff38264265524c6e688100e90f60e577ab9e633816601a0ba0c2635a55bb2895930b3ed78da28ab0203e97db65142a65e4534ee22eb203
 SHA512 
7d2173ed62753076c4fb1b4cb78f57499293871669d716f8e03c5dd1ed96f5ba0ab3fcfc321966e4eabbc6fc9744b58213b25ddc096be9a7ca99a65510dcf749
+DIST firefox-147.0.4-br.xpi 395371 BLAKE2B 
ff5c22d891b32e3dfb93351401f7f114e847659a09affc97e7c9e2f0eb9e2ed4dd227264e11234c48f96b4a3551ac9ca30cd3424f9d1d11f4eae7e4afe5910fc
 SHA512 
45af05a98694d2f7ad6f79c273086a08ba73c8a02b0c80523211ea7d435dbbb64f88a87d01851610cd445b10976615b8fd027b043e11936356b8f3e58d3d4232
+DIST firefox-147.0.4-bs.xpi 451396 BLAKE2B 
a2a5ed9b1ab7e75a1550d30e0291b34e2b1dd1df185a0276fc47f5a792dc5a9dc47e30538981a1e15b76c57ff67479e315e557d47820b2caa267a38526f28632
 SHA512 
e184496a8a920392cfb757cf5310a5dfbf80906755e855d7e331ef6b5ad6530a6bd95684f0b4778b4f356d6f460e94582396270688565df744805a3cc225f7a6
+DIST firefox-147.0.4-ca-valencia.xpi 358878 BLAKE2B 
4ed5472e0f1b14b02cc64ca2f6a25db4bbf527f6f45c1aee43745201d245fedcdeb7c77442a40df6ae05f3974f1d4c0e8d7dde97e7f9e9384590d1e328cc4d3a
 SHA512 
f6a9cc2331658bd67c2c57904f717e95c2fd5922cdeefe73519dad7200a59d0e2e386f44886d6338f7d59a557d96cb7ef90bc0b591dcc467bdac93626e462fda
+DIST firefox-147.0.4-ca.xpi 417702 BLAKE2B 
344555093ac508d2289f62026c6958cfb6a27dc959d57c9187e623766a5be7a4755b24f1263af3d810cea4353a394212a491a8175d679021f352d3b0758fd5a2
 SHA512 
0dc05a52f7edf91195eba114c4f1bc90402710266c10ecb6c5329ec918a2267aa4c31ac839051a566de1aee5ad8efd7ba5e5a3b404319c830f942e04c9091fd2
+DIST firefox-147.0.4-cak.xpi 390716 BLAKE2B 
41be5ce14b05ebdf7fef19bb4abe8d1bb2e3020cb3067af4f1cf487049ef4319bda7c6f711f0dc7921f5eaa3207b7f236057e5bd3d6af43cecb04dd436f9d438
 SHA512 
49144d58e6370d123a2af2d53400f62737c93e7900ecaa29d60870b0dc2f0ab979d0b3003dc4ddc8da8b87c2ab8b3f1083053823072550ed66b1c3f9fa28a8dc
+DIST firefox-147.0.4-cs.xpi 502176 BLAKE2B 
5dc5f675e71bba70036542a30e336c761ab19c8760eb506f02f7978ad0f2b8a013d525a5e020186cd656f2cffa6ccb790e886d1fe7ed7979997c5e86eee7d3b9
 SHA512 
d21f93ca59f353088f882e663a17add839526cc7d78e0fe34ffcfdeee2738c5e35765ac863b1344918eba9a02b74eaee325aa629ff7328e692fe8e66d5ac6f1e
+DIST firefox-147.0.4-cy.xpi 465505 BLAKE2B 
08a4eb35fcad41882ce797cd10997a0dffb26578603011ee7d73f86027bdc8eba053f6fb9765e2a45afea273862f8d828d57ad604b8980c53240ae28703493fc
 SHA512 
a1c4d3a0853c0c3971c8f4ab1f6d2e60c01249423059801546674b43ff52677d17bc330f36b70a30b995d4375208d667388630af36e9a51a095e04ce7f0dc4bc
+DIST firefox-147.0.4-da.xpi 453661 BLAKE2B 
dcc3f173db8e5b1436832bef89a0aba7ba0983d419fa2ebe6b8aeb79f29351a0d278ccd5fe674ae1e5f08ac512c1d3ea9feba3820b605f0d602648d84f5f0570
 SHA512 
8757baa3326576c581c621abf377c798bf36a6498d54d20e2306604454ad56ab9005607a8bc9e3bd286da26274094e3c8218dde897cf2bbf33a225fe51105d3e
+DIST firefox-147.0.4-de.xpi 476586 BLAKE2B 
13e2a0eca74546a7f9088d33648ce0836f3a8430e3f087e45f1b780ed80a25d3134aa5ebda190b2ed5080921ba08315e80ba170e67500835c17a97b5ef7e44c1
 SHA512 
30793dc681987de6822e0ba34a6a4224ef996eda8e3e434aa9009701ed761ee6b6883aac7e63a467e0a323089470b71e684645461e744246cc1228b3590508bc
+DIST firefox-147.0.4-dsb.xpi 490400 BLAKE2B 
eb79d374952e1da69f9e69dce0d632b8cf2f9bcd3a11488337edce33ac52ab8bb25de62872ba57a2ccbae294b85225487e3bde5496cb3f3f7f87271db77816e9
 SHA512 
6e79d594e4b21d5066c63d0b50617e0a5513b857d69bb7c3845e044149e197d4538b5dfbd277415f4f1a9ee4d4b6c8a6e27ae0999f3a512d9ff495ed362265b4
+DIST firefox-147.0.4-el.xpi 564764 BLAKE2B 
50f41253073bb935b32b8f75332c719ec425a13749907f21598cee50edc91590d40bf84eaa9f64220f775763753ef08ce1b22a928b660dd1cbb7ed823de5136e
 SHA512 
04974890b3598343985180bd873932ef8e0319c2062a903bf37c4b004b875d41f2af871c9ab5b27e0eb0db4210f7b13192f782643430e8d373d67bedfada94df
+DIST firefox-147.0.4-en-CA.xpi 431930 BLAKE2B 
23881a57f695e676562aef850d284838aae06f979e1b2bae5e7501fb257dbdf8f12163f29886171cb089c7e1ed555d2845cdeece9be65c4bb3d7422119187ae7
 SHA512 
c31c461ed24b541aace0d3919dfd0f17bafb80806bb54424edf1b3b6f49c7a6b9472c1012cda90eaa9798e4a7e5862b32d0d57cad2bfe77440a0b46b3b0f6812
+DIST firefox-147.0.4-en-GB.xpi 432239 BLAKE2B 
e017760cf80c34417c1345ad9c7e8312202ade3b757288b85c07ea4016f56b3f104c6dcdcae8806411ec865689bd854507006ade4df44c462a6ed73ddd3d7019
 SHA512 
4ce6c6715df15fb958ad745b2addd2338b8127c66e64c4eab8820955c64dc780ea94377d7c00a68e2d5cfdee2bedf371559755a980f3de099020e7a8bf877be4
+DIST firefox-147.0.4-eo.xpi 456001 BLAKE2B 
4017c54c5072af0c78d86b9dc14361b002de9c78e769282af5368e011b21a788647d50737876ca0ac45bb2be4a5e1b6bb6233039a5bd9c603acc930a37b62c09
 SHA512 
513f79a946dbaf793c749138f319e5c004684a9b62397624789fef8ca4485abbf4df7082538c89c0d9911948e1a94de248508d1c9bd1f5dc6e684ab206d501af
+DIST firefox-147.0.4-es-AR.xpi 468356 BLAKE2B 
908ef7dd7b7653ae8f53eaf8b5fa7bdd8db0f8ed367974b3613e961cb92a0691f09464130c56bb13a23f51145b0c1f12e9691fe2bd7a4934d0802774c7c9c7fb
 SHA512 
bf4e892a80ccf1a5f563c640716b60b85b8f9413aa8728aff6ff2b6d497dd396fea97c00061909674503f4be5c2d1362fd4fd921604fdaf27c5d2fcc19f3122e
+DIST firefox-147.0.4-es-CL.xpi 469497 BLAKE2B 
db4d54d186dfb49b3636a3d87bb4c3102e023be6594b81c9413e1020714a1369fdf2f208a5469d1fc2cd40975beff3091337a56b8d1d78a7b845827e41a41647
 SHA512 
6f0c16c07becc3b2624ae5f8e6053ef107c2d9b69c1f376dc7555b6db286750019553606be90c6c7685e0012c74b8e90f54ee5c3c79c46b788a20bdbaa16bfc4
+DIST firefox-147.0.4-es-ES.xpi 470170 BLAKE2B 
2d22cd20913ea57a235fab74f6664b1171d2afa08ed7561064f50ce98067ed50c6e726dee222c534a3d0111ef868489876d6e304b6f80f936ba1454c8457913c
 SHA512 
22907b4f3a55042c15a91cc80f52ba2285a136b294092202594c82b9576f7119a98ca3d19569f6ceee46da14e902ca19014cbd7cd7e14d0c849017a9b5dd1a68
+DIST firefox-147.0.4-es-MX.xpi 458615 BLAKE2B 
b75323bdaaa48271a2ee35af993ecf48255dd23ee4f6c991134b5f8e7c88814ab27dd331d79598b2223326743a397e3463cd75fc508b94bd20574ed37089ab60
 SHA512 
48d37a9adcca269ddf88314b87d6d2cdb8743476bdb36e6b5f7e99cd90979ccb9d5bb576ed92833b1688c25f3a411822c3018b65c43c33fe78f6c50fdfe4c1b0
+DIST firefox-147.0.4-et.xpi 359821 BLAKE2B 
847cc49631cd7cdb278145455ac5a63a298a810aa63f2f14c6dad9419408d984d3cef9656eab1238936bcb68940b28c0bfebee0eb0ea25dae8c5bdb8542ed942
 SHA512 
0329dc7b125dcd7cc5d84024f183ff2d794e46206e874228593f47bb53743e6c55a30322b19f48d2dd72de8ddcaa4384019d43475400bacb56722c524d2d1b3b
+DIST firefox-147.0.4-eu.xpi 453272 BLAKE2B 
c4ae5a4aa89a35fcd752acf62352342d88f350b9591ecfd20ae94a31677703ee0772849187b12cd2cd362b49f3b340a58113a86ca07c85c01c8be01752d507e0
 SHA512 
ca9baaefece0f82692d5b3953853279256e79547caa08bb4478830ca0affab07fe049626248eb5f558d61d572407b8f4afcbe1793d5485dd02fdc5b579e87fb9
+DIST firefox-147.0.4-fa.xpi 421564 BLAKE2B 
be82f560629735eb1367762b71e48729c06915fd9eb8d210c7369e65673c57a72487dad5de3d6041827b08dad19fb198ecbece8f55cd964c352d667da170345b
 SHA512 
524b15c010fcdbd94130be75f07346dcda078e25d49913d630a07dae3b5693620b86e597f23f58965cf6f08dde94f79720fb9aeae14cfb0f1e47b9636000a402
+DIST firefox-147.0.4-ff.xpi 311420 BLAKE2B 
cb159e8dbcf5bbedd1bfd8745eb56822e174ed0eecb72954445057c724e3cebd4573fc59753beacc144e8cc2257367f634b1f905905d67318c9db719f5f105dd
 SHA512 
41b263eae2813af7d8c88014d85fc270f40f5a86a92f842934d66b18998432082e656d93ca3e5610ea2f3c18a0f70c4fb73c661428101c6fcd06acab75cd7c69
+DIST firefox-147.0.4-fi.xpi 452919 BLAKE2B 
4ce9d99618f217bcc29347724e5acffa7437b0fbaf4bcaa008f4c680eeb7bbf0760058928ef3aee4770c5d56e1762f1f9130b26afa7577470691df8d8dbc8ff2
 SHA512 
0e70638f6f150a29418fb86a1036cb859bddd76fb43af742147f489c43a954799aabe16bbcf78f76c2a921de7ea9ef99d647a8a23a296713d15f97c20e963319
+DIST firefox-147.0.4-fr.xpi 482425 BLAKE2B 
83dd7ae2b8c4abcd7e51fb1a0f6dda26acf0d6791e16b1c6b0d9263ad68cc6b10e6a384a8408f0085fcd511a2a0793581bada1496263c3902ff897cf85a0f217
 SHA512 
585d3d899b7ef2e080ba598fde45398871080f74bbfe7852f6a6ed853eb4dc8af9fe0224b7589205de748f80071c8a43f6c4dcd2ea5569eaf58c07efa33ef56d
+DIST firefox-147.0.4-fur.xpi 475458 BLAKE2B 
20ab3fd0f2583717427d3e068c209f1824f03362877f8b7fbe84ac7733f2444cca455deb57aa01c33f2bd6fb15b7aea5f5c3b2ea6f366501d1a586b043c1a4f5
 SHA512 
e80c9487d3ffe5854c0e5baa07e2d72d423589b0ed2f15eb0c200e73755688a80be4cdda80a752ba7bfb76e86458d7f1bbdf4a47ac21a1c8b09c951f9e4daf27
+DIST firefox-147.0.4-fy-NL.xpi 464948 BLAKE2B 
45b22aab5dc08996a20fe84b6bbf262e3dcb64a9b8266a94fe36ff94fdbe2b041ba8f06221511cf034fc6237d5c39fd9dcef032079ba69b7a9602a7a0e789730
 SHA512 
abcd104504f6dd262da9a9a25459acf211b6464bf01253a5645301e7224296bca4ede3c7ca84dcc05d0da97d7ef91b54c4db07e3ae380178e5d1081eae3992b9
+DIST firefox-147.0.4-ga-IE.xpi 317060 BLAKE2B 
e43c2ed1808711f944a324499d660e7bcf0fe3a4103103aa5818ed4b5ae438b4adc21f07854edc568d9d18aeace3cfe33f6b87ef361b52cbc0f92f1e9129c69e
 SHA512 
9cdbc3d98862e0b32e3775604ee978ac745eec761c75d346e749adbd223b7f3020b77eb2d9a505d308b00f0081808c0ee70dfb589b51ff86607718b2bd1fe15b
+DIST firefox-147.0.4-gd.xpi 399448 BLAKE2B 
0275220f8296aa98ab56e4b1bd75542942412a3db0c81382343ac2d64619a4f3c14507c073ebbf550010bf0920b00b7d04c3aad8a9c4e3386f83ab818a6a942c
 SHA512 
7662fe0f9f7b8713530898ee97bef824cac6928e743d83c11c1abc6845ce2bf5df6505f541c75be60f24eefe3aeacad3acf3e3059f46f123943ca1eadf4d4fc3
+DIST firefox-147.0.4-gl.xpi 447913 BLAKE2B 
05633940ab2589b156a6308f8d805bc4839b834e39956a4d08b92ba3af5c2d488d6c2bd7155f05430e65a8aa0ac4f0aeed6bdb73d497c79b54c360aebeec4d3e
 SHA512 
4880128985f9f4cb20398caabf8aeba5f4f2c59d7b3f2c0f1acb883de0f8fb873eb0548a7f4a0edce3440f440a8fa06f06cfd40c49de3a9781f249858a8d4075
+DIST firefox-147.0.4-gn.xpi 473482 BLAKE2B 
e1802b8371fefc06f4ddc6787e899435973f919bd4c7410effb727060b7d8d0bf2b67a7df63e6fde924c085413f30b310a5cda6a4faaf4700145d59d80c578be
 SHA512 
a1f8f63d8441a699161100c330d5f873dfe01c6497d460fbd070db2b17cb9845e9effc36f0eeca45b901d62661d612609de1fee2f913d775a73fc8fde95c765e
+DIST firefox-147.0.4-gu-IN.xpi 359738 BLAKE2B 
13029c4e3e1caaaaac8f9b4ca6a2a3ce960c0ee62e30d32413698f657db1a1fe606145bbf18def4b24db4823e7958d6cdaeab1e0abc605cad83839ebd885286e
 SHA512 
cb8d3cee17f5ec5cf4877c7a97b32c96c1608c3b1ad52e40f19fa67c18215607316991fdf2775a60a8d70ab0fb767f87c7078a3ddca6413959c44fd815799743
+DIST firefox-147.0.4-he.xpi 468544 BLAKE2B 
32f7a3e5fd050ce90d7af4e7ff9bcea02200b1f56639878ae60e1dce69e79ea9362ffc7211f4731551f4ea0c58a5a05088daff27ff5c54fd189b23b622c031d7
 SHA512 
0c8c791c9c57bf750de7b0d45017489955ed9f2bc3194b919184ef23b06bdbddad6e2ea85521a93578774df50a1fbab49080b9c6c2436292deb4120da85486aa
+DIST firefox-147.0.4-hi-IN.xpi 378469 BLAKE2B 
d824ceb93e3c2b67c62da0b89ad0012aa59ce1f27243936cf5aa0e05bd31000ab5ee7c36da6bcc5cace25366a7e640c57441353dae4d41f2abca3c8cf7e6dec6
 SHA512 
a5b0939d562dffb831e4462045c13fab21478328624d89fcc33eb976a8b74b48c6b5de1e47d61c701d8152d1d6a195806a8f3f95bf38f517131f5d9768af4f5d
+DIST firefox-147.0.4-hr.xpi 458876 BLAKE2B 
c0f3d96134eadef2315d89944111cabcf70bef6587e1edd154f1f59547954d9f42908c4c70c2a3186b3745bff08593662bc746fcb8e9b27d881c251e6706a4d1
 SHA512 
7537b37edadaab8994e16a6796d9c85e3163623a180ab39e7268ab60a9679c8b420ce85e04a767f7b41f50e0d3a4aae12aa33e245e270d74f7ec8abc6eaf822d
+DIST firefox-147.0.4-hsb.xpi 487072 BLAKE2B 
b632534a013942a9fcdf21c9359b9a1f27a46ba136808e257b189433d7a7084bea172f9c049890927663853d1d2223ab3f1d36b0e1b1dd2207fdd856f4f7e75b
 SHA512 
cf5829651c2ae25f31731f80606da03cb5850e6fd42e301786c37de73b4387128fbd0be225febadbf6bc429bd69730792903aad720b84470ba99dc2081ebce45
+DIST firefox-147.0.4-hu.xpi 490849 BLAKE2B 
dd30c7ee430b5d207ce7e2aa20a7a3bc52648b150b54662f5ad323c768e4f031a5f105bb84b32d7c36897356fb301e823b9b667e7786efe8e0a4bd21e2499118
 SHA512 
adc364d920e1d0fdcbf8fc60ac77d1add23af84afb460a4c9b08452e0ed441d62de1670e5a7558f3e7fa32c5ce5df16f357ee500edecd7de3d31d9da26298a37
+DIST firefox-147.0.4-hy-AM.xpi 472703 BLAKE2B 
1daa9b59d43349a8cc39cb7f9ea8be5e6dddc583037049845cdc0f3313e8a22acdad03e8b6f5076816bd7fce512c51534a4bd9f4dfbe0ef83c0b0ef5c9414d85
 SHA512 
16774712f40a118ebf572685de06e8be7f590fecc35d0e3f5b108daa883496fd322e752e0e537576d6a665d140b6f4a09d4f9ccf4b3b7d3b4fd6230531d7f513
+DIST firefox-147.0.4-ia.xpi 452340 BLAKE2B 
afebe59e624cfd66ed4ecec52ba3e7aed6a83eee777427e0657d888734b09e226fbab68e495d336b041d41f6e44a36262cd44dfb5be3985a329e1766143998ec
 SHA512 
44dbe5e3ce0df81b0e7cdd0ed401d8c4cb1754d17f0d2bf4c63dad4350994250404562e1bf530fbdb0aa37dc4c8bd4663bc67b2e267334cce509d3f2f46512a0
+DIST firefox-147.0.4-id.xpi 433187 BLAKE2B 
5ae94cfbe1b0817e08055392c4c545ffe15e7b40f2cf57402eb07cf37de5ead7c67ca5d45c0ca98a25d4c17733a303ee77b66f3228d5c8a3072c9b13171d0784
 SHA512 
b09d773b2708eee67f024d013ec5687c39968ff0f91f4999e152f54eef7839c724304297d9296b41e03d60b8a912455462011dcfe38f317d56d53b415c621983
+DIST firefox-147.0.4-is.xpi 441228 BLAKE2B 
823e20c643beea4c41fc2af36719570b3f7d11de5eeeb098aad39778f353a57cd701afa93e422565ffd9306b23f22b56ccaede7738d72a43b722f8dbe013dcfc
 SHA512 
f9d0dd2384c5bac53e5fb3c5b57d3854bac513e42a1d74a1b5e61e6674da298b7533c680ab0adcba10464b19eefe80aae8ac246b508b66a832631ad1f2ace28b
+DIST firefox-147.0.4-it.xpi 463745 BLAKE2B 
40d09ebafeb8573f2d8e5b25c4496b2466ebfdd0e4970f2fc3384d1e5d5f3e6d7516972da8c1e7be7f471b86ed46a8844b0d6c05c2ce7221f6e733e03758ceb6
 SHA512 
a51da6c581323cd988aa98a676c44e76d0e77832ea4a4a9d2f35db38c65e8675302ae02033cd5ed57cee1fe1de50090136ffc66f077b48167f5d381ca28abff1
+DIST firefox-147.0.4-ja.xpi 505789 BLAKE2B 
6f2a603ba1fc03615d3ad6a0cad951c1ea008066b4ef555ed62867876c1b31947f17f936cf6561007edc6a85565f3dc96a737d5623a1e7562998caf06d782f3c
 SHA512 
9de802cf98d1211f1eebd26f5f371300f9187eff3a17851c5eb8f64e64b5f655f2cb6a15e7b72b774c5304fd53921f4d74a56c0c0d9aa23756b53204e43a77f1
+DIST firefox-147.0.4-ka.xpi 521274 BLAKE2B 
d77bdee8e16232b4c901cc7142f7f61e86828c7caf7cdc1e849cb96084156e2dd04657b7a72c25018992fd330565282cfbb5fac7ee0c61114ffab1f55f66c00d
 SHA512 
8c3910ccb9affd5d9c5cbdf54838aac4c051c4bbd525324196ce05f69ab415e64115f937f4f9e94f1ce845af25286095e0069cac2ca8b4e048ce5e64871b3bec
+DIST firefox-147.0.4-kab.xpi 427535 BLAKE2B 
38fb7f0ad768911522fc2d7a18977b66c9c87f037faf08f4ca864a0d0309c2a4c54b1c543984ebfbddab376cca9579871c4b97a36f248c5713199474741da9d2
 SHA512 
c5daf4f2d724ff64c28fe11e3d17e1b423b667806497c44ecd5af44221d7428fbb99fa8f59815539b9568adf8c6e1e6449ac48bf1513b12d31410420079d809e
+DIST firefox-147.0.4-kk.xpi 541310 BLAKE2B 
dc99ead6c81894b594fcdbd0e520df782ff186e023aeb902f433570736d97eb5703df29412c0c598134e9aca82a567324fcaf05b1f979d78bff7caf4e4faa991
 SHA512 
b3e26e83fa9e4b59418f6bef5d4c317759290b1586aebd264e27a220ab650a314b55f1523207afd2ff9c079587334721a99b57736af9e37eb1c40f993ce79fa7
+DIST firefox-147.0.4-km.xpi 349287 BLAKE2B 
1c5689c32433c4f6f5d1734a61f2eb25bc74b10d8dfa331817bab08edaa3ce10b35bb300053d3fb0bd767edccc0894eb4679ddf784318241ff917a055fabef95
 SHA512 
187cfd3931db7b97592105946b05d6693f66161a4ceca97963eacc03a26da3121a2c7db4b75da2a64bbf4f6254cf5f553696c40a23998666a65a2f1aedc813bb
+DIST firefox-147.0.4-kn.xpi 333593 BLAKE2B 
ae5f2f2eac75d33d12b5f383ec603680ec7163f326fbf6cb70b83637867147b7456b22a1c47366622a42f82d3de9847b095f11338fba152fc12e11eb8af2f304
 SHA512 
2d9e13153ef112f4501cd2d1df1158ca1bf508af9ec9138f802e10af7448155c68755d59473a2787873ae66d2ee7bb4ba150ceb293ae844e3bcf3f2b4a27f85f
+DIST firefox-147.0.4-ko.xpi 491176 BLAKE2B 
197b3358f9573d911727588e32b717ab970df72737f5325d73a6bbf3d7ab0f68f81e8239073e69c41629fd6592498c9539ba4b1c4328db32fc7372285e0945af
 SHA512 
c4223f82cacc37c4d925cbc2036c14b97c2c3b0ffc76096c7d89ed38d224134aa2d4d3ada88992bd67f1e657a0b79296739d69a34d38d8a0ac590f10d7c49f54
+DIST firefox-147.0.4-lij.xpi 320643 BLAKE2B 
871066b644a993cde5803a8f0485ed80745d126958b6b6104ddf27b773f937031a1c969121bb7bcbec36641974f5e423e204d602cfd11a50ff0ea0b73254673d
 SHA512 
0be796eb1542df46e752b2ae3664367f774f23d7748eaf738de3fa878870ccfd6f2409be75f20c702daee4083277c586fced6cd4a3ed2803fb4a471d0545f159
+DIST firefox-147.0.4-lt.xpi 380538 BLAKE2B 
f8eb90ab8357f544e5e0fbae27194803c6cc089f191ff363f12aba79fe5cc4b5ef8f5122766f3bd55e18d619c4fb0d789862e626dc76bb9c7f6c913e64a75a5a
 SHA512 
c2f6dbe015d3d7768532603c6e426c3e40d441ef227c00959d25ab905d7c2b20d06238cc5ab1e5c2438b82d0eb9fb595c864ffc6f4eb3b442501a089e266da86
+DIST firefox-147.0.4-lv.xpi 391453 BLAKE2B 
aa4a1e4c5037c07850de8f82a70abeafb290ea7f0bff64d1d5fddd441a620ac5e8a11a514389295d9556ef7bedcb79069bc2daae5f3f9f6e751aa2727fc0f10a
 SHA512 
2d1b9953406307c914f5ab46bf6e019daf54140de068e682ba1932264324d1a08b1f0b6c3a981e5367c50fcffb6b627c3d4ae4fbbd7a171b0a67c44a213bba58
+DIST firefox-147.0.4-mk.xpi 318213 BLAKE2B 
a4be409374a2c0e12d213d648bd4d81fb53d6047b84d0c59685dd23e2d62993bf4be3acb8bed80fd7de0020eb9743f77b9649abd496851315527145a541fbd01
 SHA512 
a7600a600f2ed04b135befd93fc0d92a0e1664b9692a49b663cdd77d2310245e501c83d28692cef350a6a7c665bc3bf04ace79e7c10001af8f271aeb3a409544
+DIST firefox-147.0.4-mr.xpi 357569 BLAKE2B 
3c8b99b40200bc722cfa87b29e9b02cd984f26793b0553f6677cec72ea2cb4c09e4c3556532fba1af80da93e15dccfb291bccf1eadfbcb9184c21546c646280e
 SHA512 
6737ccbae37b758e419b6aeaf7947aeb7b420b6309a9353331419fcd687b8e10a8a6fecfec9ab44848129435e5cbaffa4bb3e3ece6b7d427935a30ec48d9b704
+DIST firefox-147.0.4-ms.xpi 297210 BLAKE2B 
54e79238ac7224985b7d2ca9d1fd1b198f4c8302d365b820e0cd99558c441fa09625231ebbc36e7a2e68fa70bf14d6c2d0a511eff6cadd39246033973058ecd3
 SHA512 
70d586a9ba5e9f2e8aaee5d4e06801987ecfd3559565ebad2bf95ce3852de7d62ab70322c9e2e8b328cd118aa6585a910f415dd8049d0c29dd98a06dfb1085a4
+DIST firefox-147.0.4-my.xpi 344481 BLAKE2B 
ce8a41347182212f4b5f4177882dfcb350fe8c1437420a9cd7661f22908cea9b5c32203019cd100c8025b0485ac78ffe7d6bde5073369710f9ebe7a3fae99f3c
 SHA512 
796bddd5b203591690df94ac353c23b9656afa550487100f87de3040b91aeed3f31505a8e7e8d3ac4040abe26fa5101096c8a83964a0572d536a22ddb3dc122a
+DIST firefox-147.0.4-nb-NO.xpi 451562 BLAKE2B 
9a5012ba671720fafce2e8e0635361f1ffcefef6356ead47723e0bf949d2c4cf92b98c80edd59228ea1b84a338ed9841dd99c4de358a453290f5c562a9ed7d2a
 SHA512 
a812dec493c23dea459a000f5d67183771f20353e4e5796398c2ab44c73c417713730a708c95f497f6dd59c34590031ab00428050263ce1d0c0d8f23ed1658e6
+DIST firefox-147.0.4-ne-NP.xpi 349638 BLAKE2B 
86ff7c58dd639ad48f348e19a449f8e3967af6b8da18ece29bd9207ac71c283a95c7c5211bad4c7f17af107845c8d1aa0c15e6ce6972f718b18b5b5e5e37cf72
 SHA512 
46b7d867017ccbed4e80477b6d47f8e98e4e85e6e935f526d917d6bb199c8e3484c80f3eaded9a6645a1203607d14269e7f54f00b5b0e6dfe2fbd092419aa05c
+DIST firefox-147.0.4-nl.xpi 458872 BLAKE2B 
e7f150e7ee02fe6e39defe3183d408a940d83a6e9448f7572a38a6e0e697f9dbc7ddc34561dd9d08162ed7fe889f68472eb2c0a377c0f48bb63ea60676637707
 SHA512 
b62f3cd535a41ca1255aacf486f693de2eb9b388536f300ed3c7fb12f8415420d2fb98d8d05d24aaa616913528da21b8efac0eac154315a4479368080d72b358
+DIST firefox-147.0.4-nn-NO.xpi 454771 BLAKE2B 
6fa2bdc4444dfd158b45cf9da37c85c7d697cb0a362ecd70a7b04c3ffe1a3082c2982ab55455b41a9804a826f5ddbf88005b6dca1d7b352fd818bf47e17140c9
 SHA512 
69338545270c696fa57ad7fc7860337c79a2e4ab49f09375bf451bfba16f5b4bf05d53ed91eaca18e4e8072bdec68ad5252f92f8693726315e9d7dace1707ef4
+DIST firefox-147.0.4-oc.xpi 411254 BLAKE2B 
b10e5448095bf293a0a0caf2fa7f93f3fa843b51043a7b70e7e336fe305734f00f638a46b5e2acb76b924fafc985deb5c561b172d89c6eaf9f7e6a1cbcb937c9
 SHA512 
032c5a9c003de21080b1e1354ad483e9a530bb3d2489db96f23330d19bf5e952c8423ab52b30c38b00abceaaea93e1671570002f2dd86b84232edb6d465dc480
+DIST firefox-147.0.4-pa-IN.xpi 520340 BLAKE2B 
20419e039f25a9efca265c8098d8fcd87547f492011a155a05fbcb6a43828b8af72a6f17348a654b6ddcbfb3fdd7cfd8edbd0f18efb1e6b76474f618f9647ac5
 SHA512 
685411106bf89190ab6147a1c7524e4d9e59a75ea22533849dbb7ecd0f922c3fbae489db96257e20bb4e1515b9ab44424e5e8188d3e21f4d6e31fa2e3141dc39
+DIST firefox-147.0.4-pl.xpi 488093 BLAKE2B 
4eafad8fc1367e0fdd044c18231e17e97abf3a96032a413a10466ce1c3b498ed7ea2a3d569e08c6a0b6243e70295a3d33a939e370553ce08e4cb7459a923a93e
 SHA512 
0cdb2054505f99585162aed5df7b4f17968ac0831a712ad68de09d6f94d1ea8662496151dbdbd322d8a966346a52d8fefbba8ceefabf565fa961a99adc81cd56
+DIST firefox-147.0.4-pt-BR.xpi 463356 BLAKE2B 
9d2f7590ba348317dc7464e5ae4db00ad6ee69ff971bbad05a4e908af9372cd7e1d58edfd6072c2c95a8bf7cdd1d6e64f93e0ffb7e5f311a9d7eed627d6bcde2
 SHA512 
1f6fff266a348e8bb45c2a8d52a9aed01c0c44bc48847c7020c849fc0b0d8b553cbd738d435e820872e3976cf4d10361a023deb5df3a630773c748ad272086cf
+DIST firefox-147.0.4-pt-PT.xpi 460510 BLAKE2B 
01914a75b8364a45d25051ebf3997fd6d13b3bdb715e4ff3c6f0d66fb1c68aa99bd319acf6f89f1e5bd1345b51f81cb4c4621a4a7cb044b3bac16c638edfec8e
 SHA512 
12f5103be62ce6f4da8956f8e1fb14545179ad3e8de1dd84d7c5da24c5b32f08a2cbb736d4debe5483a34c189ed53fddcb09f541f76706f96eb798867af2bfb9
+DIST firefox-147.0.4-rm.xpi 456411 BLAKE2B 
f2d0e1beef2fb8fc9f4deb0d3081f5226a917e7ddf28345cc34102dea7974338f1dc1104a7311f4bc7965af59f50c530f290f2ada0fa41c338ee909bcc41b89d
 SHA512 
7f1297cfd84938d78879c6d23ac6e70580ad219620a737f265a25f386a67a69c5142c5db0986cbac00ffc5d472bcb004d5440a44d1d50fef3aa41d66864cfa1f
+DIST firefox-147.0.4-ro.xpi 476235 BLAKE2B 
1c8e8bd68b289745547d7270b294e0540b07d6eaaa27a71e98a4fa08a68a7e26fd14a93be892d18f38d4eedc0c6891c5344bfc26f1b45fcceea5b0b04b305896
 SHA512 
06998026bc13099f9a58e445cb77644825ef65881645a723ff2ec9d5e915248a78797eb48376191ae8b4a787fe467ffa37f99cf739f4daecdcf55028d844b24d
+DIST firefox-147.0.4-ru.xpi 553268 BLAKE2B 
16d5d64831ec2e61690b8acc3bf411df5ecfdec780b4b16fc415d4fff65588748fb844934aab174c57864da95f65eeeaa77d2a95f1216ac4622d134c3c4799c5
 SHA512 
b598179dfd23eec0d23c06207121c784a8f89da1bceca22362db1c4a1b5cb70df70d0abde91041cd701ac5e25e829b47dd9a35a9ea3d350220189d230b4987c2
+DIST firefox-147.0.4-sc.xpi 423919 BLAKE2B 
bea5e776591c8711e7bbcf9409b40ddc05b1b4156468a22d24f892dd62a7eb811ab3d3d83ef803d747eddee8147b3af9e045c6c8a6f6e96fc3d77e46da117480
 SHA512 
d8c2906e72ce316947ded5b3b724355bb6224785f4d853123195ecf3f5ff7af69c0cec6e716464a495f93385e09f3acc3ff4935aaaf3682efa17139d48a2c9c9
+DIST firefox-147.0.4-sco.xpi 323631 BLAKE2B 
e68f04643e5822e4eeb48d1eb3250ba1e67d700662f9dec9d231680b55629733a6a12575e02bd9f6339bc53b5c5c96e764c5f659a3f9570319952466129a346b
 SHA512 
996564b92ea3dbee2ddb0d5faeb42e7893b2e2cc0d2e030f3ad215bd085d35e617c4cffe7af687bdd73e0ef691d8a86b443100c0354cc246f79be9f8fc18e45b
+DIST firefox-147.0.4-si.xpi 410471 BLAKE2B 
93687a44c963b24fb758c775d8120f18a2d898c93d643db7bd33a9bd9fa04754fdaa3180f491675c7bbd6a0c524e10c079985e5cacb732957eaa12f1144ac2e3
 SHA512 
08ef28d0c7a08fe66e6492a558770cd8c4e37707c5c7c21592aa0c41a21dbeadd31c80d76d9fef6434565f791316477a43ddedf6e2585defc407ee130d201a60
+DIST firefox-147.0.4-sk.xpi 493509 BLAKE2B 
ccdae628aec113018a8ee3ec2d2755f6d646953c0e53f173a252853b06782321fc4da8c187b875bb58788aac9a751cef59142768897b1dad923ae55260f18758
 SHA512 
4ac96b503355809210ad2d0525e04a1e1a715f85aa62e5c6eccd34631b28b18348343ff287697b61e4284ec80071dc3f4bf4f28aac5706c5820f47098f92b312
+DIST firefox-147.0.4-skr.xpi 484858 BLAKE2B 
809fc538a521991b0b7c77d7ca8707bf8f8152421713d3bea441728089191cf5055de9451983155a4c0ebaf9c875e71b116228449dacba5c01a76c5ae8084712
 SHA512 
008209b438e10d2e278d9579e8026a6b5021df8a3358352b7c5a913bd1bac762ad09464af7ded70eba292f25bc387046747a8da4aabc2a9afa0ca3db061c627d
+DIST firefox-147.0.4-sl.xpi 461498 BLAKE2B 
3aa40dc4a6fae675ec705067ba35033bb34843312b5fd0a00def17772e05eff83ecf18552450a829789a371c4730f0f9d1ccd6f0c06d9420f4ffd43f0a810c76
 SHA512 
b6b5519e4793adb3640b71fbffdfeec1d9b57a220e50eb841ef21c41c9f8fee109673ecf9936195e8dc2aa822609e43a3636cbcdda5fffb8297046bddd9dfc72
+DIST firefox-147.0.4-son.xpi 275635 BLAKE2B 
6777ba17a459c18126b29e6a61fe1c51aa25f411429347cd9fbb58b3ce28aabf050f6efa61425787a9d750cf52ca62a9c4ef832928d469fd178b09f063840049
 SHA512 
aa71521ea71a234c6143aa83e0ad868b7b6a60fbedeb4ebeed2440049acf3b3a0ddc505ca4a2b7772d46708bda02ff29b5ef368d7c5aec34e61c20aad654f10f
+DIST firefox-147.0.4-sq.xpi 479970 BLAKE2B 
79e6c2b66f460eea3594977ae797b6916d44f49fb30badf7d7fee75206d3dbd76bf01e47e4cd0045e7373f9b27e9d89d837b4da0e9f0dc627d8c55391ff93773
 SHA512 
06bddc9c48f046154be4411d9b96f02bc896736c1caaab2549bce51ae87b8902c23608d8fd57b17632457b8d07f94b9be02a6630cb4e8838d9c2bf4720a667fd
+DIST firefox-147.0.4-sr.xpi 452649 BLAKE2B 
3082a9a8d1db71245f740cea27c6a0cc1518f61cf3a8709a3ea320af2cdf85be76be94150563783492af99ba0a9a38b32daaf55008b84d10bab4bf77672cbfce
 SHA512 
c13afc058ff0295b3c80e0a70f44fef28954996498ca26dd82b00365c7233e1481b20c1edfc8b8176847a1aca53c418e9853cb22e5e35a2293eb562ffd95c3a5
+DIST firefox-147.0.4-sv-SE.xpi 458672 BLAKE2B 
d1d2cc31dfefe7065966541e7f8d221b4549abae66ff93da7aedbe41085b9da67800bd2e685d5057c43dc5ec60835d7d332995a988a4f6a69880b379f06b5518
 SHA512 
d9406e9978e17442ddbb1d14fb9324778d57b78be57777254109b5ea884e8688a0a27ab073ee3b640e8c8a140cddf5095cd017351169334dead6d3cd293ef497
+DIST firefox-147.0.4-szl.xpi 342181 BLAKE2B 
e4067335b3ad8fbc956519dff7b8cc4521d4092763e0073608218b963fbb3d1abd8f59b134e27cb4cc7a3ef754f5d765fad3602f6f2cc38983f73eecba35cda4
 SHA512 
58aa689ce8ace9feeec289466cd8bfe11226c5d8fef4d7de304b7b0222568d8c8832db012fac02c05a78e21faf157b00ba79fd68b7d929182f613fc2b17da772
+DIST firefox-147.0.4-ta.xpi 339617 BLAKE2B 
0d7d1fe5166b2f0a908b5a46a1a4b73c12ab61fb037fd5ebe162a657bfb9fb5f34228c790898a5e378fff93cead40141ba585f6469f9352318a3a273e1c431da
 SHA512 
bfc47e052c523a82737074d3fc91fbfdceac820063e2a811c393d96c86a1d80718565d7b56a950dee85a88937901af458208bab33ce252f77c10d89b25a37833
+DIST firefox-147.0.4-te.xpi 382691 BLAKE2B 
205cb55c2deaf31479b94b4afe98f71ee2d9b502264b7699f2d13fb7124f81d56d86895a5ebadba756a20e76bdeae755171a32727a8c5316d5ece8000064c093
 SHA512 
cdd3151e4fc0635c593cf881fb783b40fbb7b4d122f88f9a25451ec06c8bc2261b48fbc343dedffd17d7e3c818ba6a21d56f1cf744f62e208bc81467d0cd7a59
+DIST firefox-147.0.4-th.xpi 530514 BLAKE2B 
3f4c5c0bc2ea13ce94e08d310237ee2ac99ccb0fc9c15fd09f1f232bad50d74e92ca3731e1b833c661a3a77338f50396282befd411035df948a72f021feb1536
 SHA512 
951bcd2333c78ff971eb313df4b1bf173e795e519bd7783f60b0cd5fc4121656af5bd7e1de79787c6ae7ebb2b5a1d94e414e57cb67b14cc4a5586d0591c32372
+DIST firefox-147.0.4-tl.xpi 356874 BLAKE2B 
986ef0f0c6f06d853583508c8ebb78bf5dde68922c7e960271630205b1d995cf4e22432eeb66adb24da1bf23df82effa4bca5cf342b5dbf35711df293663444a
 SHA512 
3018041dd833228ea9d1d5dac84bfe47bb2d9f3d77b482bf7f3ab8442242a80ef1185ee561dbc7518950d05a10556f2adfa6f55767427b407061529650d0b5c6
+DIST firefox-147.0.4-tr.xpi 472582 BLAKE2B 
e27341577296d7136727d57bbf8f616fa8e4937505de3429dddb5b4dc8c6dbffe6518afa209eb1a943745b37048f3bed5aa612312bb116741dbef484951952b0
 SHA512 
72d27f52b968a3c8ecd2f040fd68ef89ab76009039782468c1a607f2c1e846085b2a47bc12d61179881a8fc5f6e02857118dd04aa03684cfd2a36c3595c8187d
+DIST firefox-147.0.4-trs.xpi 325446 BLAKE2B 
3ba835ce657049a5d76995661a010acf86b341a3e2d9a1c7bf34fa378b0cc414644a0415d83b71877462ec364ea316fb7040705c2375b5a4661dcd7169ac7671
 SHA512 
2364e6f0e20a3eda5d314ea417d7059879c4103a36108c9be6964de2d591074b62b2ba899b7344fc9f3c2bf7fdfa336d1e837ca3fef5d2691950e222b554d11d
+DIST firefox-147.0.4-uk.xpi 540531 BLAKE2B 
7a87cb550e229624f18d1fbeb908b096293371b5410f85afab684f5a80c3c3eaf65be1ef98bac738b8135672c9c50d6cad5f5d0c9ffefe6ae977f37742a5cc39
 SHA512 
ab6355bba85edae76f6d1359dd468c75aafdba0a2c25f748b84b723f1893b94e23636fd821daf00d966d19792217c7d048031b1b20d46d8b6c492c08781bb511
+DIST firefox-147.0.4-ur.xpi 371423 BLAKE2B 
000546696b153853f12958f8648402778704f7c62c541785f259f8b4e9b47827d70a2221b664a18793e706beaa780eb0267c6ef34e391dc016aaa4d14baa9b40
 SHA512 
3a2ebc059ad72994e87319124c64b563b31342d4b2835ec036bf899e7602601b19fb3ee8580f845a43a6bc40cd75bfe201a3e7dfdad9f5fbd159de18b0088e5b
+DIST firefox-147.0.4-uz.xpi 304848 BLAKE2B 
325c6d04817a647db75d888c57d17f3f9d4f99a6638ab50954ca1a67ed0f1a9e238c63d8946b10a31325ee6b065885766b20b1d8d255e8aa3ceda2575718dffb
 SHA512 
b5d231133193278363127f7a3166e3918f37beffd6d1568bc7d63d16c198e1a114fd26f962eded364ef80e6e7e88c0acf4be7840d7a13d78c6dd7b65d4fb3672
+DIST firefox-147.0.4-vi.xpi 492943 BLAKE2B 
8e932097585e58d505d23a76aa86c2de307f4b6e4f78bf5387264f0952cf1a274280e97f3304afa85eb8c5fa70cdc344d6d60efd82fd0f315afd2812772a54b9
 SHA512 
3cd26b25f9b27b815a19236ec4d13adc0e83b57751355ea9b349c4f39f4d8cde0ebae3df93eb2322e628e378ecb3a203a120146dedd29cdd9baea647b6a12022
+DIST firefox-147.0.4-xh.xpi 275239 BLAKE2B 
2ca0098a5078ff69225d8b18535809b536ed4bb3f5c5d58a3a9df198a78e3575952a9d1448f2514416ab559b5493e917651d2c1e59ede7c8ffdc9baf9646488a
 SHA512 
f9e0e82b4858a34a0e5e84023ee758291897aceb338385ce76633769266a42fef9ae5beedbc70a84c6735d96def0db4c27a79ac5bf11148ea5ab5cff1f95d87a
+DIST firefox-147.0.4-zh-CN.xpi 483916 BLAKE2B 
16097dc0e0548906c6ee9a597db3ba7551776dcd56b05d6bc27b404fe4e8fdf1f6554a6f89222391d40ccb57da592c0d6d5ca8fd8ff3db653b807740cf6dd84f
 SHA512 
fc981e8ceb43e87efe93604f1fd49a4f58f16e826f116b8e24d24a0204133bc254f4f733ea4c13b9d221180fc13baf8f60aad4ca5bc943b03e46e7d837bff9eb
+DIST firefox-147.0.4-zh-TW.xpi 487262 BLAKE2B 
774b28b7e29eeb962e0495b39c8945a9c88bb00a944d425d75b6ea6a67143f3a2ef273bd7886b361251a316083db33b32800dba67f4e3f62d1ee4226b9a100cf
 SHA512 
8d619d9cfa5e86cdc4d33a5191c9b316f7d87bc257691b71a3e67971999cd8b537b0706b17076999ed86714636ad011c65c5ea2327b0e5a87ccdb07e3b76ec2b
+DIST firefox-147.0.4.source.tar.xz 659531384 BLAKE2B 
ede1c530139bffa5858c1146fee5fff1b2cddd7836be4f4a1dbcabebfa61ba5f29d9d9c104524ac6a6baf1c870eebddf921839eea65fa560b67c5bbac6bbb593
 SHA512 
981368916582e1566594ab8e2c03cab471aaf04613d2c77a0d4e067ab159bb81b5929a801bbac20ef0506ef048cde91b2e2f89598fa8d4e8d66a8c8016bb9b33
 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

diff --git a/www-client/firefox/firefox-147.0.4.ebuild 
b/www-client/firefox/firefox-147.0.4.ebuild
new file mode 100644
index 000000000000..bec625f890a0
--- /dev/null
+++ b/www-client/firefox/firefox-147.0.4.ebuild
@@ -0,0 +1,1466 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-147-patches-02.tar.xz"
+
+LLVM_COMPAT=( 19 20 21 )
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.82.0
+
+PYTHON_COMPAT=( python3_{11..14} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+VIRTUALX_REQUIRED="manual"
+
+# Information about the bundled wasi toolchain from
+# https://github.com/WebAssembly/wasi-sdk/
+WASI_SDK_VER=30.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
+       # glslopt: bgo#969412
+       moz_clear_vendor_checksums glslopt
+
+       # 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