commit:     81ce3ad2796fa7b4daecfe29c66454f5f585aeea
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 11 13:57:00 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Nov 12 04:48:02 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=81ce3ad2

www-client/firefox: add 145.0

 - add a check to error out early when a non-working gcc version/configuration
   pair is detected (gcc+lto, or gcc+pgo),
 - add a configure flag --enable-stl-hardening when compiling with 'hardened',
 - add llvm-21 compatibility,
 - bump nss requirement to 3.117,
 - drop musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch,
 - ffmpeg is still restricted to <8, but there is now activity for 8
   compatibility (bmo#1962139),
 - note that upstream has stopped building firefox on x86 - will keep the
   keyword for now until there's no way around building on x86,
 - rebase gcc-lto-pgo-gentoo.patch,
 - update wasi-sdk to 28.0.

Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>
Part-of: https://github.com/gentoo/gentoo/pull/44593
Closes: https://github.com/gentoo/gentoo/pull/44593
Signed-off-by: Sam James <sam <AT> gentoo.org>

 www-client/firefox/Manifest             |  104 +++
 www-client/firefox/firefox-145.0.ebuild | 1461 +++++++++++++++++++++++++++++++
 2 files changed, 1565 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index cad114c41b52..2e1098860655 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -609,5 +609,109 @@ DIST firefox-144.0.2-zh-CN.xpi 471544 BLAKE2B 
73b4488add6169ee06e20ebda5143d69dd
 DIST firefox-144.0.2-zh-TW.xpi 474784 BLAKE2B 
a04d85750575d5d31c5c6433bab78b2bf4e9ede677656b955eacaf16d7dd668cb01bcc79f250685b3eccda569d31063d9a54bbd6a3fd11c4b99f63987f8e0111
 SHA512 
ac594b34639aa1845b38a6c23ab3bec316498679a0f90b76db2eaa5992f3866715aad377551cdcfbc60a26719010200f823c4ac9bf77fd73d0f75374fa1f8d3e
 DIST firefox-144.0.2.source.tar.xz 646304416 BLAKE2B 
09d35d1a1eca85e4b8472fb01b48e02fc126327b0fcdd0e12ad2b59524001a5e67624669fb3d85f1e201f83ba5a7bf60a41624cbe0bb27cd1b8ea931c592a0a6
 SHA512 
87eebabab2c85eb32b2d1161e520f56e271a4893c8cd4d8225fc7b498a9883496315854a758478fb4edd061674a9f7c0503e9b9f0eb4503b1f89203774d02f97
 DIST firefox-144.0.source.tar.xz 658857488 BLAKE2B 
01692c4417ffc38ce7e3c0647657906f8e416160d842227b23b8d0231d9bf73464c1effb2a2485ab2327b1183a49a6c35937d907fc47ae9436efd29e9cb97832
 SHA512 
e1f924ed006a31f5333ea6af219c1fb90d4866e5889ac634c324a3e80b042a7e0b2b9aeb798672ea1a434fbf817fc0b82a12ec0fb405a48e3a2ca21cc394445e
+DIST firefox-145-patches-01.tar.xz 10908 BLAKE2B 
b5ec713e92609c44c58303e296098462f2a28c075394ad90cd9d0a5d3c54022f9d84a60cf95f521ef03ab14229fcf99d2bf0c95b91cae6851f5e87cb8d419e56
 SHA512 
4a99db63b9e24035e1bc290cc33cd7a01cb0e95ec682886828d25d494163bfd24f945e0743c60f2bcaefa168b825a06f4398ecafec603ba523bab0956515916a
+DIST firefox-145.0-ach.xpi 292925 BLAKE2B 
b46b625c769a9b0d73e68790efba6e8c7b0b2273ce0772d96e0be32928b18038f02e37334e8f7c4045ecf2978d687bf623e6a60f36ee451f114b39665b10c35a
 SHA512 
e72b49b16059878bdd015d244d05f03f8dcc75f6f6ee98f1e60674f7678578592b2b17546e5b39dff8a0a49fc3c5b12150adf05571e203a4eb174063e61b05ce
+DIST firefox-145.0-af.xpi 266025 BLAKE2B 
425b88d4ed6a107186bed6a5de16f9022adfc2d52ff6374b0580836990cdd387bcff0fdd72d0a3f57e60d185f7824c17b460ae3c8814de756b88ba0db32ba21e
 SHA512 
33f7dddead9bdd51c1b4e7ad788391a649b15872f57fd916213f0a5a56418fc26207825633ea1e99c04725e8a4cfd4422b59c86b1c89d46d10e7ed74deb12422
+DIST firefox-145.0-an.xpi 330428 BLAKE2B 
4c894f9c1f3b62e7c9b20f6550a28921f0861a1bd9ffd2a238bf35e9272b947d567538b1ed516d7653509d5fbaf3393364a3e7324a67fec93e6de67233bdfd21
 SHA512 
39bd7904b49b8f7fd3ab28e3f61efb835f44ae57f626e5bb74ebe8a413cb5063eac768a3f0afe85ca5c068416525375bfa9d9ef021f09e93bef2c520f557ddda
+DIST firefox-145.0-ar.xpi 444180 BLAKE2B 
799499b1fda881cf72453f9c5723be67300046eef859d80e60dec4cb36939d2972901367eac559c579cfcc4e27efe7a9651b4434449b110d3653595020a2dc18
 SHA512 
c7a96832f743b2250761adff7890eceb86ead4ccb4a0005e41904c33439eed7811554a39bae664a596e8a89b8fb533811279b40279949bffae44139c5706c375
+DIST firefox-145.0-ast.xpi 310675 BLAKE2B 
5d8bfa63fe2c37e78de12e97c49d195657a9436643deb8f0133306c06ab859b822604ebf35a079e63f31567f03892f1ee9e11f110ee28eab3d53ae1cc5fa8532
 SHA512 
01a705eb3189d30f1ff482fd6bcb6adf85047fdb0772977f585e4aecaa98aac18c242a420f73984565971059adaf01b5907c73773c15e4a51e8dd774c6998f18
+DIST firefox-145.0-az.xpi 317039 BLAKE2B 
fb0ee15bd590e89172f362934432b2434f410d584bf689504cf94be943b48410c4e185823f58de00ccaf16f23e20e65c5e701074d1a9a31aa4c8e01cc78cbeef
 SHA512 
b4ec3e96e2fd4b4d6f734bee503e0b5d0d782846cadb806479484e565b641329621f6695e900bf6f6221311f1e35b257270dc24cfefb2160648ee81d87cafcd7
+DIST firefox-145.0-be.xpi 540644 BLAKE2B 
05b1042cddad863d693bd056db4cc15d5d920115c9657a08ea096a9d285bdf9ea1c8cceb83f067e93eedc2a8c4c0fc2829df2fc04e275a85aa755c3baa33f68c
 SHA512 
d552054450f2f16cbc6ca6e5d765b4a2f29b02f6b9a59dd32b3e8140a8e6a9d9fb41ad50f9899aad9c303ad481df3eb3e86ac4bea7155af4652ffe2ed7c7887b
+DIST firefox-145.0-bg.xpi 459014 BLAKE2B 
4e57a4e3a220410d29a67fa2344c61d804153a49d978451a9a4543771fcf9da4e2ffdb91c84a7eddcd87578c3416c11a9d70974ecc504c62a7f71d48d4ffc9e4
 SHA512 
b40cb8f12a162c5e4d13adf710e073f6b06613e38193c7a7aacb23214bd5102129ee27c13e17e5e6714779a9f812e58a65d9cafff079047e9dd38eb829172970
+DIST firefox-145.0-bn.xpi 411170 BLAKE2B 
fe365a6bc228665d4fc9930ade8ea47a100f8f62bb9e20fca56c0f524c3332330ac000ba24237acb24d43037c6226d436dd3389d353b83ab7cd5e2d909276369
 SHA512 
975266357ff66e9940a0f121e71c478f9b61767144cdb4a2d41234deec6a67a1785132aac8c4d3c68a41861c232094a433443faa94f9307800d92f3a2dbf5083
+DIST firefox-145.0-br.xpi 392925 BLAKE2B 
1a12cb9782d96ee5cafef39aebd671ba19e23a130f5a17e0fc43c368390484be577bbdb4e7437f388f3787e7408301194a45cf5be2a33af45bef1819b5ea1537
 SHA512 
a7fa74ebac9716714aad72e5b6503b54ba3676ba3996e7994d08d1c1306ea02b377e1b752b5a20115c90c50800f97c4e14acd71727462db21564e2d1932c82ee
+DIST firefox-145.0-bs.xpi 449529 BLAKE2B 
898f190ceb19f2e3028833df9f903d8152cb6eb23fb628f3e585676a110ae0a4895bd0c726fe4f754484852321a1fc6563dde25a97fdaa577c333cf875423ab0
 SHA512 
e2ee4d3670400f13c31859d490079af8e5e69c84ac61e4220ab53f7941a2d7d5bfb249b2dd9f356f13c3d546aebaed1746a74278748aa1fd4ab790a2bd9710f1
+DIST firefox-145.0-ca-valencia.xpi 356281 BLAKE2B 
fcdd1873e824859430d946c96b6d1ec65f94b56eaee79f953c9192820b982729450d2de046d4314dd887baf7f62348d30460c331a1085a34c30552070d655aec
 SHA512 
26ca7a8ea0c731baa5e96624aecfcb0421cd441342cefd593ea1658cc11758fb55831a8550e873864b3f8ae5ce9d07a0b691b19dbd25efa8e7d0137b46b4be9b
+DIST firefox-145.0-ca.xpi 406951 BLAKE2B 
5ffcc0fa22c94a5bb41aa8a389730fd31c8886f6589a71324ff3a77e05a6380700300541197a6889f5bcda33568a0f128a6734d463c4cbdd2941800a91d36593
 SHA512 
1cd1af88a5a45ea8b9adc5c598d1fe8429af533b05b90279bf620172a35b0ef38ce047e2b3c08488e50ae9ddb255755dcb63ee71781bab2c29a253c9b54fea71
+DIST firefox-145.0-cak.xpi 388195 BLAKE2B 
b74757a5dcab42417f393367261c34d3335a31510badd6e376dce87666c2c825717c7b0f139584db72e7b764bc176214dd03fae13bd9bbddf006390a8cd65f03
 SHA512 
93ac6684e295a36223b72674428895d8e11016bfe9c7d5aa6ff51d5ae1613825d900d6a5391ddfc783412d54da44dfcc5c06446c51b798bceee43b3fa077a819
+DIST firefox-145.0-cs.xpi 493998 BLAKE2B 
8e92d9be4ce1994338e6d64f9e9d57a38b5d7b7f856c401c551af48b71e5a522a716a14f2643b4862a2510514a199c55d280853077d386e3d51da0b9f094d277
 SHA512 
50af9f7d66a5401f2c45d0ef5b10912002e6aa6ab42dd4a3081acde27e2d0b2ea140c599f264fecd46fc6be9c528d9a47adcb116e818d3f2eb5f695e2b4ff24c
+DIST firefox-145.0-cy.xpi 458130 BLAKE2B 
c35422a7e3f3d98462eec2eefe2cb63cfeba3c29c63991b36a7dc9b35e07201ece0fa07fca4a23f7aa600493b84ee9c5e827c44c3c822972e7beef4637f87d47
 SHA512 
f259b0f9169c103bc63b3dac94d5b8d8b8d8d7f4991019710d62534aaa6cc3baf88257948f862ac2b144f8d6dcfdd0d8adc74112681cc27a73efcab558c2394b
+DIST firefox-145.0-da.xpi 446440 BLAKE2B 
e8ec22525883bc414ef72e9a1832fce415ca2be898308496d716037d06202caa5f788ca0f9f9307a3df2ecc0e34c83ec091c10ad22c15fcfa04837e97ab402ae
 SHA512 
bf68e96f33ace8cd09cccafa772d6217c5860a5c95a5dc11a79c5f5cf641837400f860c77d4fa44a61967dfc9cfc46d9a8ce4773ca579f5edb9c644279d9a69e
+DIST firefox-145.0-de.xpi 469053 BLAKE2B 
75970456329096ec60475882d558446d78ade1f1fce4b4fda47422cbcd7727d052df9f1715ba06db6e5cb10ccf6ab4fe7b19fa90f4d55724a8ad7d0963d7ed3d
 SHA512 
e535ff1790f1b9c661ea8d07f9b6def812921a0c534af5da84f8edb3bf7c1fe81f86b6135d2e37beb546e8b0093da7e4029d6152704c1d566b6c3a0025afb464
+DIST firefox-145.0-dsb.xpi 482930 BLAKE2B 
ed22906b2d06ce290ecb9779df76f68e306f03ca79877054349fb0b4710b70e86aa7e5c31f243784d7f15b41ce368cde934a227723f4f0af08ee26b9cbfacd2e
 SHA512 
7c1fe4cbd645e78f64611e03bc5f1be0be7b2c1a84333c6b6e43ba493baf8c335d1c7d220bec27b36a2f1be1acab7713c0768402de1a1e5877568cfa62f61a49
+DIST firefox-145.0-el.xpi 556225 BLAKE2B 
1d438c79cb97cc1f8f249416572b1a10d6b890363350fe38e1bda8b21c21b9af1bf3d9f5dca3d4e5b3675cc2ab2fc5997cad617fcf89908893667f1ec262554c
 SHA512 
f896cceff80690c4deb2595b3700f78f75df70a04f6907d95c14e007167369fdd093dce8500a783dbe3f5c86d90656dc3fdaacc8438f14a746cb5c5f2e7ce4da
+DIST firefox-145.0-en-CA.xpi 420419 BLAKE2B 
0f5997cf5c4476589cc8d4d70800d4d650f3948c93221fb1bbacffb1f7cecaf7ba430a4d8760ee5a8d0305577c80f386965e1e8b532683a670c62808ffced94f
 SHA512 
b4a80dc07cf354ebef36363263d0c69346f9c1d6374bbe10e4151bd3cd7ed815e9cacf3e13a6135f725cbfba33ea18c10fb465f0062b706beaae26d9715ef998
+DIST firefox-145.0-en-GB.xpi 425468 BLAKE2B 
eb3c2c5341592cfed3a2bf8948639f318d7fe79e5626e3115f094aff6a64c68fbb0cf4e82798b06320b20908cb4872b5d00737cb7932c7e4e13eb7263c764fad
 SHA512 
ba724713db396f202e0a27d4a9878be1a1f850159d7e5d23f7315935f53ea08b5bf2f9bba30d83c9ad735d5b69c39cc074d2741c9d908c831d0ad2ef26075b22
+DIST firefox-145.0-eo.xpi 448743 BLAKE2B 
1400e6dc027a44b2c0d061886c1ef19e5d56791aa262a0068c627b085762d32eebe17d3cb535e1e7adb3f8e23fd0839080eb435dc02c9949eaac308a52645443
 SHA512 
d3f79f7a70fd8917c51349bb1083920fb95505dc21cda2bfdb918ed418168117191a11057f29dbc5f0c1ffebeee5038c2759bdaa62046ce18cdd679ffbaece0a
+DIST firefox-145.0-es-AR.xpi 460934 BLAKE2B 
f82600bb4d7f8b4f0cc6fd15323487c6966b564f765f12ced6edf3dca63a871ef8442c8353959f7899f7f4f0d5e87d00bb664a138d1c7a2c42105eae259fa7d0
 SHA512 
bd539b8d35324f35a6a4a598d87a825b96baaef36c3b26a232715a807e424d5d02f1c22bab8f9cb58ec927196ce1e28b51a9116424e70c632340968162a27104
+DIST firefox-145.0-es-CL.xpi 462082 BLAKE2B 
0d4247d724a7462880c266686641383960da73059174e2cdc601a860096c6eba9609697baea40e0c1d0fa3182d9bb03614cbd31f4ec50359306c6ac98a5df696
 SHA512 
479509d9d995766bf93702366ee883112ad54957e3f1de9e37ab90345dbe8ead9d3b2d6c378e3429d4a544c192550efde812c9f0dd400572667b9d580e3e0367
+DIST firefox-145.0-es-ES.xpi 462793 BLAKE2B 
c027fd2dd9b0e19d26ad8cb4aa7ae5a4fd930520aa458dc55cac7ecdc7837ce4aa138326ecadc5476468fb742cd9e56da53b1f63bbe822d91e24a82232a5336e
 SHA512 
931b3241f7a38974005f61026e839f2dd07b973d3bfd788448b0aa31303fb38361c468590cd1346f8920c20c31de330c78ea83af8766e3bfbc390f9b87f53f07
+DIST firefox-145.0-es-MX.xpi 456506 BLAKE2B 
dc1590293a72326bbc7668112b3843ee0cc5b5619cdc510720d3f6f363563d16b0e98d0264b42e6248da6a602d5569876a51c3d3195a27b2f1c8d740e45cdb6c
 SHA512 
99f5ef32f0b1023914da27653503a352a3a0633e297049b9101d5ddcb1598fcc759302a6c5a8f35ae021cee3d5e123d25ad82601d97ac1ab6e688e9e771da900
+DIST firefox-145.0-et.xpi 357257 BLAKE2B 
04cae7ab9669fb2a43f312248e36f70bea8d1a59b759a6ff000b2d2fe288208374ef7f68e7c41e9110b44dfd4a91653a6ed71fb706d1b9db7de7af06e5769667
 SHA512 
34223d910879a15044533b76310241f85e1a870533bd2f1ea408ef3dd4ecd35eb2fc0983814a7d61e33b97ee5fc40e72cfa7620270d66ccc0c3db4f99faa0069
+DIST firefox-145.0-eu.xpi 420990 BLAKE2B 
77cf80b572e2296435a2b98d52de1a92442123910deabd606cb6724abb034c19c8260037a5d561031c8e49fa4fdd03852f98e2111b6876f44b16148672a7c450
 SHA512 
b2ee93148a94fe9f995453c15698ef04c80b2c9f5e18c60ce7ad7718bbaff0594f52f2a8c0d42002312ea0dd4fc543a9d3930ab529a746078ae01a40801c8c9f
+DIST firefox-145.0-fa.xpi 418756 BLAKE2B 
d1a9a2663d329c1a711a558ff77aac633d7c538ed596d6253e1583bf8e3a4d90457bc32cab4dd1bfddd2529022ada708e9f779dc9561922d24d9496fa3810b0f
 SHA512 
d16996cb035a540b54cdadea983b0469c628c3b8d053ccd7828cf1760ef177a1d4b4d08420f84c807e111933a49fcb71b9d1eeb41c10751ea52689dc5b3b91c7
+DIST firefox-145.0-ff.xpi 308601 BLAKE2B 
fa96da16983f91164b9d88d431842a4fafc662eafe3e819163772d08e672ce160cc5cb460e4176b98aa709826273e9a13563a54b57f487e40682433e67fd5b2c
 SHA512 
16debcba28594526ef14fed863cab34ae377c98f5e22aae9286fee96ba9a5aa6ac1fb1cced59ef1220d9a0bca87633cec6182d787099bafc7c635a4645a256a4
+DIST firefox-145.0-fi.xpi 445214 BLAKE2B 
bb2cee2b9b5b66599f89f5960a0959c561bb08afb3957b7d00b97950db76623b06b4c911b700b46d54fbde4f0a1a0956719038f85cb66a12d83f3a8b40c4a80c
 SHA512 
3de596261abc0f117f1c62eff223035b0ea598c1b7870e20bf571b42c04fcfec5d2b8e01b1745d8a267a7b55dd1c9a57aea1fd97dcb9ddee66d5cc8173dd6dca
+DIST firefox-145.0-fr.xpi 474863 BLAKE2B 
4f8b6e27e9d7a9cf47669c126aa2f7a1d15d3e0a506de85e9827aafc068548c831e04d84c4ae95751449c417a8de67121e5c498f2f63962e59548e46b32510ab
 SHA512 
a1fdad6782e560c95faf5455682d4763ee67341c3381544882be18abcbd14cd11547eb9adc3ac14c345e85b566daf582c0ee0538f0d624e10d2a60cb7b966f82
+DIST firefox-145.0-fur.xpi 464805 BLAKE2B 
8a55aac6b300d1bdee79adb14e167ae2443701769df6632cded090c71e3bf784ace5d9cf771ac347548f53cb0c0b1b3492ab0d3d359d7cc1a88a9ced96d5945f
 SHA512 
5ec27adea5d63dff89bff72d2a353e30e05b2f0110d1ef5a7a92b6b58130fae8b2c82ea65ee7b4c14e79b52a89b5949454b9a51b659a97dd60444db33ed19e97
+DIST firefox-145.0-fy-NL.xpi 457656 BLAKE2B 
10e29e13eb9b11899a15fc0a5841b3fd238ad7b0f05e6d941ea3e93ce1a407d8dacdef1b2026b2738740d2610cde332ca93f4d9a28900de6440e036453ed8663
 SHA512 
95da910c4699095e81d230269a788b52128df1858a778145020ced48bb15437a403c705dc459a17592e03f44e9f50b0b349d93fa47db638780f3e9a4407ff477
+DIST firefox-145.0-ga-IE.xpi 314197 BLAKE2B 
1482e2cbd55012628b6bc16da434e99501f0c012bfbbec64ca8b58a6b519af4bcadd11d40b8e6b878959521847b1c629cc287a40964d1f3e41d24bf445f32296
 SHA512 
83bb0c79dc282d33dfdbd32a7ef18d7efb469b2913defd1eb4a2918bb0baf2af2d3bc536b56850774478846abf46f04889e911a893121e52b70e25c7d81b1f66
+DIST firefox-145.0-gd.xpi 396845 BLAKE2B 
cbc108ce8f330dff953a6f37ed40e1e54883715f648ed66aaff7c7afb647cfd904bd328e68eefa0169dfcb90bf2b27492da07eca99275ebc60528ce32e5377db
 SHA512 
79266b16d7d98b31a9d5a663ed9d9f2bb731a1f8984dfd60cb1ccfc42d12571f76addce0b31e67af019a0bc2fabe4d80840f84f7e6f8e3b763b32d694acbbbcd
+DIST firefox-145.0-gl.xpi 445897 BLAKE2B 
948a50e5178b55b94f76fa65289c726a08618a1562974c099e3b2a9652b3940e7f852b1948b8592f8df757a4d52339fdab8da14b7a893b72e70d2503eeff84e7
 SHA512 
00aae80ee4f4bf73262b50bb1ad65fa34b4a7af068a36674da341fbe0bf0f23a359b7302b0d519a119b9216d041f5217631d6e95a8b156473a3f5737fdb67145
+DIST firefox-145.0-gn.xpi 465287 BLAKE2B 
ea7bfa47971df33fb9d4504c447abda3b7357f907e22dc15e0be1f1369f2b7cbe3cf58b0af7a085092e9a2a599eac858b8580fe1462e6ad2a2b911f213a09439
 SHA512 
264a345a3df27cc7d2875afa28e6f8869c13f5105fab4391397d93bba34040744fb221384d50d17eb74f199f2860a309fc732a26a6b85faa8f90798edd56809c
+DIST firefox-145.0-gu-IN.xpi 357000 BLAKE2B 
d8f3a518851018524298ae4da91db098d0e0e153676b6ec1421732b08118453fe824b8e2de855674b885ee093f37d2012071aa0a311807dfd6bfa4b045d723ef
 SHA512 
75d308eb400a5799c92fd256fcd95528ee28d00f4c4980bf2f1e83d2a4c9371a32b9663f3071bc2ad87c3e4165b022b1f13b56fb033e5f8397c8306e0f75ad27
+DIST firefox-145.0-he.xpi 461137 BLAKE2B 
dabea549af790e098a2b8a2acd99466a2a139eb8b16bcc3b26161713dfb9192dde3425f5ba4f37dcb72c3eff5887cedb4f77699522832b56b8b59eb7f938e0e3
 SHA512 
3a5c0ad680ee8c1fd131b29d649f50d03eebe8cb97fd099c7892399b9d72107a08ac70f66f38e12322e8b82c47eb72192659df60c52cb453859b704e8c331fb3
+DIST firefox-145.0-hi-IN.xpi 375687 BLAKE2B 
45b7ad967aedb44d4643e6cdaa02c53f04a6be6da9c944606b43a5529f71d163f9e67f52e57950332212711517bea71acd2d19becdc8832951f4a52da26ac3a9
 SHA512 
e512e99df30771c2558d1485dc771db29b9e32235c9367c1a9884ae19ba36928b56736d00119870973a21172b8978cdf3012991cc61396860832132e4cdc443c
+DIST firefox-145.0-hr.xpi 438968 BLAKE2B 
f77b991835207f8fb1f40a83db791bf6576a1986debcc18de10d3453d36bf0ee8d54d2feaba364acaca2895c482b87d6e896ad84b400413090955cc729c81dfb
 SHA512 
e66fb53d970ab5360587f14ad38921db037a123eeb190c2de79856a1b9f37cf69cd3ba57053bb9888ec9f2aa59a9da5ade330e629b1bf780a438e7546c945c3c
+DIST firefox-145.0-hsb.xpi 479453 BLAKE2B 
40a0a2e2d330ce1a76685050acaf99ce8a2b46c422fef2199c3571cadce55a29a48eb7ebc64d31b620e565c6b4862800d9720d5aac731b791ae7d52ce000d229
 SHA512 
696c21e424d87082897abfd75799b6700c02892fd412a493f8e986e43138c2261057458a63cd491bba57c99639dc6debc4a2c7ce714d60fe51940e354afc9982
+DIST firefox-145.0-hu.xpi 483143 BLAKE2B 
cf7efcb0d4b03d19186b2cb1fe21070e4bf99e9601e93f159af8d4dae43815d62eb50035221488647dad4389e4351259be61313e4e78302b28048cc5307e998e
 SHA512 
80a89c61d2c205e1bf76974baff713f43297d3c16b8b8fa0514103d354c33912bcb0fc5ff247fc9c69ef7ec52924fe6d25921e25f3f7229e2554fc387dc4b8d4
+DIST firefox-145.0-hy-AM.xpi 465923 BLAKE2B 
191db2fb3ced5ede5bfb7806cd7acef385577cc8a6098d5dc892a3c7b155d9184f48249e1c928832cac686625f62cb03ba6d2a321dffc7aa3ef72fbbb924461d
 SHA512 
948539aee431df327202cc51df258e589760c4efe6cb6cb93d4fff58eb80709b147da1dd37b9115ada2242fe3c0471f84c0798a97d2d03846f768aa69c2d26d1
+DIST firefox-145.0-ia.xpi 445106 BLAKE2B 
4ade63580d9aebf1b1122b1e6327b4e5fbd5529f00b7533eefd92d398ea039bfdab51e791d47e2ecccf350e29ea0f7ab4ac81fe07136d4fc7d34b66e421edd71
 SHA512 
e898a400e50d0c330f8f1cbc780c61f29448859076ea4fdfdb36e937e74836ec22703ad83587a4506a98b1da7ee5fed79afb6deb30eb6d16b786d7e132957c16
+DIST firefox-145.0-id.xpi 428536 BLAKE2B 
231adedf557e7903e5585df0f121ec7221b12e0044071a6e184d5425b23c55d5b7ad282f87e6c5c8b05fc98fd425c4c3004fa727fe3f271450e5389c54be325e
 SHA512 
a644db5d9c8c806b16d6b3c2f4d87b1063c3bf055efee0226f5e51192ca79e2af389a22a144d6f656b9c0f6b7981f346fa2ecb2a8c846070b9840fcc248b8a7b
+DIST firefox-145.0-is.xpi 435594 BLAKE2B 
017cff357adf7345ef7c765978b3babb04aab89db74186353f196929a4c55b6bec1b3bfa36ca418c25ee370aab33c56bbe28f324a164357a3746349afe3e02fb
 SHA512 
e9855466e0d7e807e96dff11ea0fc672ceb28e17f21e831a7d9b34855d397f9a9251f811d2322b428c0527f83a7446c2c9b8f9c5e66af21f68d64e1c7afc724d
+DIST firefox-145.0-it.xpi 456303 BLAKE2B 
816ff9ca885ff699996e9dd5ce3ba441b9095ed0cc5d32354a78cf85896ed1c56ce4f7811dd4539cd15ffd65e7e7fb25b549c33781bd76f1c5e038f5a6eea1c8
 SHA512 
9a05e98249a2edb229f79a82c507f3479bcc3578ae81c0032a61af6f3033223a0465d91e19cfc3633deb5a682924c15552b72f20d0b4ff86f8af17c73ca78555
+DIST firefox-145.0-ja.xpi 497702 BLAKE2B 
5f982ecbe2b4a1d790fd02832c408def93713e315594a95956997f677d3d281109d2f3afaea3fe8b987b3a377b0fe5fe632b8380bedf81dcbcc9e307556c7f90
 SHA512 
aa0bd22335521d2fd5bc3fe04a5726627e25b58b846ddd841b0f08853507cdecedffb3f67b1742a2a0ed08e77fe641e87abeeb7af3c090edc6031134e2c37fc9
+DIST firefox-145.0-ka.xpi 513753 BLAKE2B 
ab09d5c48f2e7f30fc0346c0a01fbd15344a1cc526584b2dce2e6d5cbb6ccb4c9b666f078e248ce08636e9dad1d6ead2b81d194dc9cb8918f0bc5b2b8d40253c
 SHA512 
2da6d90596c6a630ccca94f4bc36a7b91d77d11bf85dd6b9319f932a8f982c91f31749c65a060567d388b29ebf73b6f8cb62c7387c0e80699bf738affcd48af8
+DIST firefox-145.0-kab.xpi 424565 BLAKE2B 
1d16679ca46176fb061323330530cd968b5bc29be51aade64f84313a7fbdb69541d61549c84936e4914782e1ab26d4aa31a70fee271b123e7af558378093779f
 SHA512 
4d99262eeaaa93a8e5dbc7a48f1d39ccdd1be79455c2e28d9a9600b37b7f74dd4f208185e4d475e5ac396dc9edc9cc2a1b7445d0e367e0a611b68e621d8995d4
+DIST firefox-145.0-kk.xpi 513832 BLAKE2B 
c2b1225f4d712cd31ec6c0f985f142a91cb8b683b5088ee51269ececf89b22d07ee57f293a93210a6c2ec539c54f90ec33593d7b4c69d76148b8b1a7ee40732c
 SHA512 
3c3a7327df5947848e7750e43d0a2d223933c8cedcc97ebafaa0af92fcd70e199784ef59d355694b7f50a7512a01e2a50e581eeeba22ea99fe7c1b7cc0a91845
+DIST firefox-145.0-km.xpi 346355 BLAKE2B 
90f62cc2a42a318931f2e10e9dd87851f6e393df4fb90855351ea706bea4b66306c26a2e3b4882a0905470288878b8bdda68c89402fed021cc4452e1888a7290
 SHA512 
374419ac081130a7f32f51833edcddfdacbfab147f9c67a8a015c5df885641e5b18ab75eb76ac111fc8cd6c000d87c9923ad1c278438ce3f6020bea382bec604
+DIST firefox-145.0-kn.xpi 330655 BLAKE2B 
086a20e5759b7fa43facf37a423ce3562bbf3a08d8e98f1a0430e510d60c4b9f24736e252046eb4de14ca243ae0635fd1c69a05f51a08145af04fab9fde4d4ea
 SHA512 
f3b999ce514194de36823b2db2782a6b7ae317ed1ac591261a36c8f0a538b89c4dea5a23c302838b72024780674f9889b0ea11cc7da87a76a4a25deb314ae515
+DIST firefox-145.0-ko.xpi 483487 BLAKE2B 
8c00ce01198171968d6d70da4580af895977f045eacc2039b37a5eea2120939184b632d3498893e6063d1e2a2f68d3252bf1b3449d921824c23233ca78e0b1df
 SHA512 
3d86e921e5e085cb43206e5ecc593ea603486e0acba3103456d9956fe46af6a8bcf3050d29f55499e0bbefa1f8e48154962633a422a7a912c588e1f5682ccf6e
+DIST firefox-145.0-lij.xpi 317829 BLAKE2B 
47a191eece42501f47df49d3a6b6a5dcd1cc687c462644a699a1d4ff5a076151f5c4d66c92b516d6ae3c9acf7709d15816fa66f8ae845e86472565158a2d6546
 SHA512 
27ac80b14fdf1e37af16594153a58dba06cc5accf50981d3849229ef955206783267bf12b1525fbd3869746bf1631b3ce54c6c1f99f920fdf8d7f646f794d076
+DIST firefox-145.0-lt.xpi 377815 BLAKE2B 
fdc5769b6a0b06c28236a4f7e032222a906d5e7292570504c6a3527921359884b374685a08a1ae7ab9d6b5351452161ddb4a3872f62c076aaf251cf347c817e1
 SHA512 
2116a637050dcd6736852c25f0b8e62bffdc95b587c33df087ec302cc267048ec01e3c9cdc6500a85942bde1c0d6236476a41ac2df38d14190c8e920450f22fd
+DIST firefox-145.0-lv.xpi 388852 BLAKE2B 
b51fb23a3fc82f0a51694cdd088c924f78f0757a6e7ea53021947eb5571538d63840a14a450b4ad1fa3d7c36fa39b7c5568ad24da52481359d91263eba9d518e
 SHA512 
cb50d1bf4e6d0feaa45376ff6987ccd2dce526c1c111015f3265a0ef5fbc77836ceb928b05a6ecf9afa6ca062f34f250b812fb1e61ed911fcaf5e807f5e9c737
+DIST firefox-145.0-mk.xpi 315213 BLAKE2B 
721f15c8e6b3ee241efff03b118872a9f49d50ee8d39ae825016e9771ee5742d2eea8fe61cbaae5ef1149df94e12b0b402233a2ce50dd865709169dc73a301d6
 SHA512 
919922e4900e79f6cd3868f810c0c7744686472a46b046e1aa95239e0083f98698103560a81bc0689c20ad4a78c66d511f58de970c704583e0d1adbea7d27fa6
+DIST firefox-145.0-mr.xpi 354667 BLAKE2B 
e3fe70dfe4a88a649b1115ca7fb6225e22afea5c02db9c1a81905a4710092a24f72fb17cd4f47c84142fbc769b92c2fe9af841b525447830a3ae6f6b5590e9ee
 SHA512 
56c14c9e8c44737f7c6641b2967a3efa683e1984092e58e8defcaab4cda5ec04bf7f3499641218fb24974c0d93f71c6ffa35546a2478093b4f1cbcb627d1e1fa
+DIST firefox-145.0-ms.xpi 294249 BLAKE2B 
e2e521ce74eb443e72c9b7d1fb0deca67fded2f0a8a2159cd69083694476f67b8565ebcbeb82ac4a95524253ce2621c857e1adbfabe18469cc6ded559ddb8211
 SHA512 
47124af354ee473e2a5a4df78b77e50b91deb75e73b46d36bfaca26b703d44a0093ecb73fa55d34bf0f92d7d1454963a02b8a6337fc2fbe7c39a7371ae9a56c9
+DIST firefox-145.0-my.xpi 341465 BLAKE2B 
80d0da75c673365689b3da45dc8fef81a9ccc6e6000e9895adde2019cd111667e1c6b353cb106f2cd366603ee580a214cb79288ecc6f247999afd9af9ee8782c
 SHA512 
a92b95abea1e705cf22d5909bed7bb3096b385e9ae95c1b48a9a3ad55621bdb91738c8e14d36140fcb0c53b66179d853e2c62b17805943a9b473c8956ce13756
+DIST firefox-145.0-nb-NO.xpi 444532 BLAKE2B 
b3b9c4e7bf21d29d8796acaa9d6a48bd614fb7714447e8364ceab1d8d1c1ad1b042d0739623d077e2e161bfc8c2617f207ad67b2051df0bd16bfb4ed12239fb6
 SHA512 
1327595fee45b66bd85defd4b6373348900c19920608e00bd6cd467f4405228af3a837b3be71b2c538c7196af29eb857096b532aa59ce93e59da4bcdd94689f1
+DIST firefox-145.0-ne-NP.xpi 346761 BLAKE2B 
f053c7d194d7202866f5679e46c417c6218cf8700eb0257b89c3cbeca8a58eba266e5a04ae973dafeb3b0b49a2727a872e28d8a8d75a29ea27f64adc419289a7
 SHA512 
3aa108c236f8a484f6ec3a81c0711a74482ef8138c4f485405c2564ff2f6e9dc35677bfa15ff767abbdcd3f78c66d00cda3e5299d59519c0a76e3dd61e25ca62
+DIST firefox-145.0-nl.xpi 451541 BLAKE2B 
d4cbfe3b538a791a810f1b7b95130d1856b59c12b997e995bb0731c694f4abbd6c6ed6c97a049cba6f3fc5d6b9cabb7593dc03093af282b086f3183140a6fb7d
 SHA512 
c1abe825bffed3848b2f0cd6b7ef5e47245531b9720b082bb30d48c03f33768b0da4feb9cb3897be4f233dc562c762632f1c572dca44915083af5f678c321119
+DIST firefox-145.0-nn-NO.xpi 444393 BLAKE2B 
ed0db10e115f5256ee2297b78fff84c16d84def7979f1fd614d5132a1530b276c221268e4192b2e2d294fcdb39ca3b7c0c6f0be1989a30b26611fa084ae019e3
 SHA512 
42535b2913fbc5575d4c5a16a039ade70c1c0a9136c2462600e5cd188bd43c37b0341be77c3e4f01c29ce6f22972297459e2a8bbb011ae88d8e56ef89032468f
+DIST firefox-145.0-oc.xpi 408137 BLAKE2B 
a8585bb73805b333051aa6f73173b19b492424898cdaa89c78d83e834acfc8d3a3931760cdb9aa091cd2209e10421964e1d1154c37f73335167907b3c300994e
 SHA512 
3cef759a4cb2219915dbc9a69e927a88405831185bf350feb054ba9a664fbc941772cd3bc0829f187bac854cbb7bbaa20418c52ac726ea4282a138d95d43b871
+DIST firefox-145.0-pa-IN.xpi 509295 BLAKE2B 
9a03b8ba4333a421ac86e2a1dcdf3ce7d5d21ada6bd2ffda30a561d925c513eac2a6a643a1cbd3d496cf3d41cea1d2ac67e3fb13fddb35996a1d4f758ba7b5a5
 SHA512 
e615c6b438c3e224ca7ab9bd8eb31745c8f02a0fb87142004df250ca1b279d073ac930d653f4c980ca152375e0d951574307fd2e5db755dfad4ce644b179751f
+DIST firefox-145.0-pl.xpi 477148 BLAKE2B 
d52e7c56003ff8cdaff1655b848de4ca08df5dd7da4baa325d1b57756996a8c9d0695e1b35c358694ff6360f1ec27e6bcf5aa84cad6e1159a2739109e1c02995
 SHA512 
58cc8b42e64b80cb08a49a81441ef95a0486f6898b3b51db42cfcaea56fe87c2d0e852f53d540bc534d14b074580ccb750e2a5c910da736d4552c1d8756af28a
+DIST firefox-145.0-pt-BR.xpi 456065 BLAKE2B 
ad52b4df634d50301039015f29fbcb9a496bb88d3845a5d6d41c8dbba20f25e931ab21892d541bb42ec5d8d0f59fa134e9ceec987d7272c5633e0f12b7cd04e6
 SHA512 
82343b2af718b707668baa371f094f3db657ca1d433f15885df2e82c01672ba1c4620a40db4e5c7527fc4cc90b46fd872cde4002752972a0109a48bf80d1f4b0
+DIST firefox-145.0-pt-PT.xpi 448387 BLAKE2B 
5a1690518d35c6232c1d92163c72ce2738f092fae6396d29148e71c0eeec41314595e4409a172b634ffc48907d3e01cdb265e16dcdc08ecaf3b7138459783bc9
 SHA512 
bc68d23f5bd897791d84359619572aa3d01dc6bd49bb6c27fda9fce970121272af3c1011829154f9b7a5d25ea53f8b57e0853ba2c2ccdc4cd4415f74ffdcf9c3
+DIST firefox-145.0-rm.xpi 449254 BLAKE2B 
f032703e9be693c42fa3a79387a3296b7a0e8a4e9a2f3b4bd682733fcca18bc547542817f4113d13eedc529cd6db24a2a36f41e868aa872c0dcc9dba4651f127
 SHA512 
d4a725167b0c1d9682df7ab9dc0fe09edfab286ddf5de51019328d79cab12961ccf0074e8dddc0a583f6a425fa567770af6f69b1aa7c87d041f952251a0b5460
+DIST firefox-145.0-ro.xpi 468872 BLAKE2B 
a4b3de7ef01d3d5cd4106aa615334529afb939aaf4460fbb905b3dfb467b318d5e82346bca2d6e105047476f637fa84703d623194593205cfdea854ca2fdd89d
 SHA512 
cf21a8804868fd5878531b14931dc784e8dc6d95d26d08b23759f6e23a6e0cc2fcc5a0be3859084c638e5f554ad9d2bdbc051a6049ebbf01fc07078050790613
+DIST firefox-145.0-ru.xpi 544564 BLAKE2B 
aef709af24279e5344149de3f5f1b6792f955acb20b63973ed5206a6f5ef7cdca9ff355cfc925e522d34d68687e2cef4cd446b393cda7de6269e65a61dd7f4c7
 SHA512 
404b752b15f64534423dd21c69615c3c45534a478818303b8c1385ebb8947153de3971ffa066524235e7e9fa23f40024a85a766ad763947a8c7ad793aea3e8aa
+DIST firefox-145.0-sc.xpi 419180 BLAKE2B 
cb56f8f170bce3d9388363e85ab479b68dc8fbb1cd857064968d99ac0b3ed38b549b45d2bfcffaec9488ce59bcff344c2ec652da8a377c0d41d8a6e46a7b479f
 SHA512 
9e02ea40c11d954b9ed7545d734e0a15156624a650a9206dc3b23d113ceeb1c349a4cfe1085ca9e0a14800606a5cbeaa73edf68b5c187c7af416fd2628586660
+DIST firefox-145.0-sco.xpi 320795 BLAKE2B 
96e881392bafad30ad48d7a6adf3eb65ed7d7d130c7b719769fdb2180eba445fea2b4ed1120b239ba09f45f41825297fc4957c950ee0f93c47a6225f896f0d21
 SHA512 
0d5b3235216d52f74cbb003b2c73072491d80ce92c069515e59abb121faf25f87b99b78ecd0d541fa5761d287415226351a09822d2b38b5c242a3c9014e56f40
+DIST firefox-145.0-si.xpi 408238 BLAKE2B 
e9833f08de0c9824383a3935050c74ec04f77df75483ddd5a2531e2c27291ab1a1c7437211aad2ebc599b86b20d5d747ea63b9f06af99ff33af79dccb44f02e1
 SHA512 
558f0361aee1e9c40655cfb35ec716ba47872f4b586c9d7b69ab252d551c0bb2c5b2d86f0f8b60babfb100fd4b6ee560f10164231d41b2b4aba3d572a1daa30e
+DIST firefox-145.0-sk.xpi 485695 BLAKE2B 
cae21259335d3b37dd98f3bccb34cab047666b4de6ff60befd3a0832949b1ce993f76e2bc5c9f1b51f912b2bf6b1cac401ba018cfe1c188062dfac8e81f405fa
 SHA512 
5f8cbd5ebb3e7272433e62be73a8cc64310841fabbaafee5967130b7f11e372153bf1e3c26032e730f3fe584fd16afc97941806984b4f53d001a2dffd0af1751
+DIST firefox-145.0-skr.xpi 482433 BLAKE2B 
91c7f15e01f4d7b33ce7e6f28ea8b6d9604b355cd3da5ff412cb7474e50abeff63bab33103267203ca08c8411c91b311caabd8a5ce9be3af37814c58a616cdaa
 SHA512 
1e840e2eac7eb16418e3666bcce7ea76c917252338a547250bedeee2731291ceecac950d39e32e650102c757a6b81a77c17fa9b4815d60031e122e4c1e455d80
+DIST firefox-145.0-sl.xpi 450569 BLAKE2B 
da254afd62e05b0d96ad30a7a3e2971b11393ebb31701e11338487ce3a22d6e75cd7b6f3fda2ce42d17b1ece5d89f370a0daa4a066a82fb0aa0792daa5777323
 SHA512 
6ff8bb45d84675309ccb8c69e0d6b9c45ae1791e9d9c3d05684a206b508f9a55488c8e3ca6b6f558824e05215aec653ba58dfd300d26e4dce8ed019fd91298d3
+DIST firefox-145.0-son.xpi 272585 BLAKE2B 
3cd17b0e45c71e16ec458835219b796a2d37b2b5d5b9969a24fa1524618288262c2b5f8fa0c3998b9d4be2954e2faddd797f672c6c0e6bfb0d67ba201a5fd0ee
 SHA512 
c18eb35c8894a598e2d9c8255fcda5d81cfe120031617bafce93fa46c5886232b9747edfd29555f8316d0647e7ac77048db764abd96c45568e38f61281195dd5
+DIST firefox-145.0-sq.xpi 472408 BLAKE2B 
82e41aca7600fc469b4bdd46163267a1b2a2c6eb540d2fa2629b902f8f82e8cdead8ba842162a4f8f2d8056965c301014ed22411ab1ea418f460d6a153abccbb
 SHA512 
76eeb320f8ce109e2b9d59336bcb3b474b6facf58f411575d61a9a7c0f440f4eb01b4ca836d9d2233e1ba70755e969f0c536b54589358b42cc0a2ccd54408ce8
+DIST firefox-145.0-sr.xpi 450374 BLAKE2B 
a9b95cf5a4f53a465fd9290ef4d572d047621e66f4c1fd0ad8f04559f7a7d9893460d2a19ce5413ca9cae308651859df474c1418a727a5d111f00de2bec6c084
 SHA512 
f76d4fc31ad6d25835c25a0b9871c42c0ded3d19be18fe101e0ab90b284fb6e3d8595ae8fe9c4176df577311743f23b04f9c461ae03cce45d3caeea22059fbe0
+DIST firefox-145.0-sv-SE.xpi 451434 BLAKE2B 
d0436264e0b928f2a75a576ac42fb35b56b5265d3f5cce5b9ea67ea4ca7500cfed6e1fd7b0e2e8ecc58112941d7a45fa614eba10e5c43482d2bcae2a16380b61
 SHA512 
6b5753aeec0205deb127d1207ebafe0175438f05867b512856b6f35756c31ad8833d08aeec048eff531a67b070e0596142f3ebee48c2d3c54813b8a66527fd11
+DIST firefox-145.0-szl.xpi 339396 BLAKE2B 
919ea7cf94e77f26985645b602f9c6b0cb185a05216acaed199895700f54b4669d85ad78bf7c720392fb9abdd8dd3c91f932d6c46174dda66334d4a81f47e3b1
 SHA512 
2f646fc8b0e65059dadbd46f913a797a1a66bdb7bf15ca3a13c62c27a41402ab8746d9ace1eb6ccb75931a33902bbfcbd90f96febcd05b191ab96b841975b44d
+DIST firefox-145.0-ta.xpi 336764 BLAKE2B 
c38dad5864c02e2ec307f9e36d399cc1de99bd107ce4ad6a3cdf4a520332a67f1c499e67ddae1489212d38349abf9f0d1d6cf7ec6403119e8c3b7eaa93491383
 SHA512 
e1a0aa156d603e61ddd2146b478a9999e115f9a196c5fba77abac44b91de10605d4df3f7881ce014b1910a3b9c06e88e83449fb0f2dd62c064816fba8dcfd313
+DIST firefox-145.0-te.xpi 379902 BLAKE2B 
b8dfd3c291823875d43799999a78554816e60b0df1f0c6926d1ca1211997d09ab5f5053e2a4b42cbe7e9a73fac83e17f694ab57c756b8cba65988c1a5c2c0221
 SHA512 
f24693d7bff542500fbc450b505b02bf3311f39aa367b4e1213621a5345f2d738f4d39d878276135819f3ae7f9e89acd7c1833d221252406ee78bcc809850438
+DIST firefox-145.0-th.xpi 519521 BLAKE2B 
8b02527853d84a074995d0b3b1cd487aa120ecc6f7eb30ed1d9d62665441d07c38a9e057b4378f7109072db8380ff9c500577397d2f7c5257cde7832eb2158e4
 SHA512 
c4ef41633191848dec15eb68733f858744c32ae218b464263dbb573902143125ebe366b528b3d0421ef7234b8c437cedbc4e05c7ef82b8f981d0acd11a357533
+DIST firefox-145.0-tl.xpi 354290 BLAKE2B 
c6baf5dd1064622882b6b165fb8708fc06dc58d6d27ab184d544730501f96edde14c663ac870a5104ec1ce62300ee9580fffff59245d75c4b25951e9c6bf8c55
 SHA512 
9b34e88a26ce4b2afae957c947433e24b23e1d113f56a202b37357b9337864061ebd006d953745eded9c3443f29289eedcda04794062881f147e1719a085dc5d
+DIST firefox-145.0-tr.xpi 465062 BLAKE2B 
2c89dcb167528606258d5d0c7281a2fed80a2ab72d1706fe90e488644e1a27c6786c201ee2293caae612097e533ab267e7a8a35c2a427d9de2664f514d9aac1d
 SHA512 
739db20994d67e70870f5657d99d6239140f97ef76a8bdc64b7f008e8169c7de43d8e5b07154a8d0b1641cd11d817877950dc703c14eb5fc432c38f3c6b7348d
+DIST firefox-145.0-trs.xpi 322447 BLAKE2B 
74b9707ae222fbe807876ea4bd85adf84bf9fa7fe5b3e799aecff33673ea1ad8ff89983666be5d2e30b72aed5c00d73566ddd3d004a40e8f2036a365d7b67a77
 SHA512 
779cf7489f8b43377891b9ccfb91c91e3afee3a0b49f16858ecf944fd35990b0319a8b110b5b34fde26711b423fb145c087ff5585cbf62792f71c475ebc03c1b
+DIST firefox-145.0-uk.xpi 527611 BLAKE2B 
74ee23e021edcfaa3e1a12ee75415bec074fadfdacbdb78ab91ee325bd43e427b4f91eb508ab62718fe10444f482628190d284f4d14bf28a98e50dec0e424741
 SHA512 
f8ee6c6689ffeebb08de90f8325cacb0f87efb0419209ad8c12d325c10273a76eb96b1d5a9d264319617c7473a42ad228ab064aea3fbb24ff2fb5f663f06d5db
+DIST firefox-145.0-ur.xpi 368670 BLAKE2B 
10c9f15e7561993baa7264ab2942cd75ae7542e7c2afd7097b8ee8ce3bee129308793b6819a75cf496a4d53598c6d9acbb38e2d2493e4a13832ddf4b4ab8c041
 SHA512 
ef5f3ea5ddca4033de05448d62e67a4d9bc83d2049bf3f3ae6f923e46b6df602a31e7e4970d4953b287556e1be4a3d33d7939d9f19f10571818b6ad6d8cf3b57
+DIST firefox-145.0-uz.xpi 302137 BLAKE2B 
41166b1f4ffff8e7fdd408e7d40b7b95c40564814077064fbccf701a20eb89b0cbe85414b2014351d3e6f41ec0dd0c45d445ae8f5eaaf224fbbee2dd6f57edf3
 SHA512 
91ba68610ce595cb4228232231c2a50dad891ff6e37a6f6c7b5cd26faa08b86c0e910c0b4b4e51050c9998a64e282f4cd8f1fc80029cfebb0dfca5585e3a9c8f
+DIST firefox-145.0-vi.xpi 485349 BLAKE2B 
07fc902bf3372d2b26031f3ef350421ddcb18e71abdd34a6a2218f1a4c539b5aedcf8586fb80fda168c9e187599e16b52fcc0105ba55464eb247460ad0ddd477
 SHA512 
3b14b79e9c38afdd29f9af2d650e47fcfd21fde79ab1103a94e214cfd1a41cab371fc5ee3103ab63393da8197c79e0b07c929f1f9fab91ba9763a22437900627
+DIST firefox-145.0-xh.xpi 272248 BLAKE2B 
63c7bc12b83872acdb1f0cbd943fc09062f2ee4d66d562cbc7e6f3dc3322e4ac00e5e5ad8268818c865ddf87e3aae9096454a7bdec44126708f4711281facfd1
 SHA512 
61fb53b09b03a52482748964bbd84ac86fd8d2836e4984f6ca3d0fa9e1276d1a61c7b796eba04d656d88a77fc8737ff531c5fc2298a6fd1939021319491dd378
+DIST firefox-145.0-zh-CN.xpi 476500 BLAKE2B 
f69ec60d139d18d5572acd18c98844b57a5a0d349ffd745c54794c3272d1298e9a6e25184f972ea4736edc016b6d454042a19f38c93004261b32e13153220954
 SHA512 
125568f0d2fd3acb6b89e97375333ad096259b91add2abd0e6f00c69cd58d35888aa37e746c63edd37eb49e74ca7c3633d26f5c5118993ffa428526e7ef6f454
+DIST firefox-145.0-zh-TW.xpi 479811 BLAKE2B 
6cfc2cda18925f5472512c744f7aafda6e1ded0d38cc5a7198c966736341df5f2c84a25508d1f06d28c3701ec4d2684576556f474f64bb784570bbfbbdd97e62
 SHA512 
95128eda6e10fde164f1a912f40dfb7a6f7cfd445bf5db1b7701687d34ecc544e5fd0f117d715a1d175d5331067a5d92e7587b90db3c29e8c7d3599590777f42
+DIST firefox-145.0.source.tar.xz 649881808 BLAKE2B 
a8007d06dce77197dfb40ab9a759287b6bcff4e56d1b2c7acfed9475aaa2f936948534d6e726a158550c70a28bad8ec8c7f1b99ca8165198c1952a484869b6c9
 SHA512 
7ba40d7de95d7b93278f1823ce460b45c6bfac01eda52bc5c28f23a6bc858bdcbf8b4b4dc359b853372fffbcff4e7f0b276fefe22c2d4a0fa303e8ce1d2629be
 DIST wasi-sdk-27.0-arm64-linux.tar.gz 124841089 BLAKE2B 
7911b8d31e06e15a7e2001d81bcd27a583dd26d75ca0afc2a5bf31729bdba0a5786669dcc56dfd66d09c44862737dd3a62e8207262bcfb6e6845dfbe26216535
 SHA512 
6b6b5e109f2312634d67f0d7ab9690e0a7f69b21bf4894b86d584f7b1c340bd6696a5494ea8f96a759c691d023ac8c67ad7862112fc57106b86c2cef11f14f9d
 DIST wasi-sdk-27.0-x86_64-linux.tar.gz 124790235 BLAKE2B 
768b9d8d66d79c000b11fa0710d1170e6a5f87c20ac8684151b44cce45e5cda83a4c3a4ad09042c4151e40cbf4b9ce0795f0cd5cad30be7b00972a88dc43f7a9
 SHA512 
a21a19996fb23fd1b522c328827edfeee74bd42fbbf88942b5d46d02f21e6fb2300a783c96915039c5545d2734010a94f3fe27b0751b9722988429669a2a6c9e
+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-145.0.ebuild 
b/www-client/firefox/firefox-145.0.ebuild
new file mode 100644
index 000000000000..a086c93d2241
--- /dev/null
+++ b/www-client/firefox/firefox-145.0.ebuild
@@ -0,0 +1,1461 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-145-patches-01.tar.xz"
+
+LLVM_COMPAT=( 19 20 21 )
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.82.0
+
+PYTHON_COMPAT=( python3_{11..14} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+VIRTUALX_REQUIRED="manual"
+
+# Information about the bundled wasi toolchain from
+# https://github.com/WebAssembly/wasi-sdk/
+WASI_SDK_VER=28.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.27.0
+       net-libs/nodejs
+       virtual/pkgconfig
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               !X? (
+                       gui-wm/tinywl
+                       x11-misc/xkeyboard-config
+               )
+       )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       dev-libs/expat
+       dev-libs/glib:2
+       dev-libs/libffi:=
+       >=dev-libs/nss-3.117
+       >=dev-libs/nspr-4.35
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       <media-video/ffmpeg-8.0
+       virtual/zlib:=
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       x11-libs/libdrm
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-3.10.0:=
+       )
+       system-harfbuzz? (
+               >=media-libs/harfbuzz-2.8.1:0=
+               !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 )
+       )
+       system-icu? ( >=dev-libs/icu-76.1:= )
+       system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1:= )
+       system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] )
+       system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+       system-pipewire? ( >=media-video/pipewire-1.4.7-r2:= )
+       system-png? ( >=media-libs/libpng-1.6.45:0=[apng] )
+       system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+       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-fullversion)" 
-le 15.2.1 ; then
+                                       eerror "<gcc-15.2.2 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/bugzilla/show_bug.cgi?id=122620";
+                                       eerror ""
+                                       eerror "Your options are:"
+                                       eerror " 1) upgrade GCC to 
>=15.2.1_p20251111 - note that even with the 16.0"
+                                       eerror "    releases, make sure the 
patch set is equal or newer than _p20251111,"
+                                       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-fullversion)" 
-le 15.2.1 ; then
+                                       eerror "<gcc-15.2.2 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/bugzilla/show_bug.cgi?id=122620";
+                                       eerror ""
+                                       eerror "Your options are:"
+                                       eerror " 1) upgrade GCC to 
>=15.2.1_p20251111 - note that even with the 16.0"
+                                       eerror "    releases, make sure the 
patch set is equal or newer than _p20251111,"
+                                       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-fullversion)" 
-le 15.2.1 ; then
+                                       eerror "<gcc-15.2.2 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/bugzilla/show_bug.cgi?id=122620";
+                                       eerror ""
+                                       eerror "Your options are:"
+                                       eerror " 1) upgrade GCC to 
>=15.2.1_p20251111 - note that even with the 16.0"
+                                       eerror "    releases, make sure the 
patch set is equal or newer than _p20251111,"
+                                       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-fullversion)" 
-le 15.2.1 ; then
+                                       eerror "<gcc-15.2.2 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/bugzilla/show_bug.cgi?id=122620";
+                                       eerror ""
+                                       eerror "Your options are:"
+                                       eerror " 1) upgrade GCC to 
>=15.2.1_p20251111 - note that even with the 16.0"
+                                       eerror "    releases, make sure the 
patch set is equal or newer than _p20251111,"
+                                       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
+       fi
+
+       eapply "${WORKDIR}/firefox-patches"
+
+       # Allow user to apply any additional patches without modifing ebuild
+       eapply_user
+
+       # Make cargo respect MAKEOPTS
+       export CARGO_BUILD_JOBS="$(makeopts_jobs)"
+
+       # Workaround for bgo#915651
+       if ! use elibc_glibc ; then
+               if use amd64 ; then
+                       export RUST_TARGET="x86_64-unknown-linux-musl"
+               elif use x86 ; then
+                       export RUST_TARGET="i686-unknown-linux-musl"
+               elif use arm64 ; then
+                       export RUST_TARGET="aarch64-unknown-linux-musl"
+               elif use loong; then
+                       # Only the LP64D ABI of LoongArch64 is actively 
supported among
+                       # the wider Linux ecosystem, so the assumption is safe.
+                       export RUST_TARGET="loongarch64-unknown-linux-musl"
+               elif use ppc64 ; then
+                       export RUST_TARGET="powerpc64le-unknown-linux-musl"
+               elif use riscv ; then
+                       # We can pretty safely rule out any 32-bit riscvs, but 
64-bit riscvs also have tons of
+                       # different ABIs available. 
riscv64gc-unknown-linux-musl seems to be the best working
+                       # guess right now though.
+                       elog "riscv detected, forcing a riscv64 target for now."
+                       export RUST_TARGET="riscv64gc-unknown-linux-musl"
+               else
+                       die "Unknown musl chost, please post a new bug with 
your rustc -vV along with emerge --info"
+               fi
+       fi
+
+       # Pre-built wasm-sandbox path manipulation.
+       if use wasm-sandbox ; then
+               if use amd64 ; then
+                       export wasi_arch="x86_64"
+               elif use arm64 ; then
+                       export wasi_arch="arm64"
+               else
+                       die "wasm-sandbox enabled on unknown/unsupported arch!"
+               fi
+
+               sed -i \
+                       -e "s:%%PORTAGE_WORKDIR%%:${WORKDIR}:" \
+                       -e "s:%%WASI_ARCH%%:${wasi_arch}:" \
+                       -e "s:%%WASI_SDK_VER%%:${WASI_SDK_VER}:" \
+                       -e "s:%%WASI_SDK_LLVM_VER%%:${WASI_SDK_LLVM_VER}:" \
+                       toolkit/moz.configure || die "Failed to update 
wasi-related paths."
+       fi
+
+       # Make LTO respect MAKEOPTS
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/build/moz.configure/lto-pgo.configure || die "Failed 
sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/chromium/build/toolchain/get_cpu_count.py || 
die "Failed sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed 
sedding multiprocessing.cpu_count"
+
+       # sed-in toolchain prefix
+       sed -i \
+               -e "s/objdump/${CHOST}-objdump/" \
+               "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py 
|| die "sed failed to set toolchain prefix"
+
+       sed -i \
+               -e 's/ccache_stats = None/return None/' \
+               "${S}"/python/mozbuild/mozbuild/controller/building.py || die 
"sed failed to disable ccache stats call"
+
+       einfo "Removing pre-built binaries ..."
+
+       find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) 
-print -delete || die
+
+       # Clear checksums from cargo crates we've manually patched.
+       # moz_clear_vendor_checksums xyz
+
+       # Respect choice for "jumbo-build"
+       # Changing the value for FILES_PER_UNIFIED_FILE may not work, see 
#905431
+       if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then
+               local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16}
+               elog ""
+               elog "jumbo-build defaults modified to 
${my_files_per_unified_file}."
+               elog "if you get a build failure, try undefining 
FILES_PER_UNIFIED_FILE,"
+               elog "if that fails try -jumbo-build before opening a bug 
report."
+               elog ""
+
+               sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 
16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \
+                       python/mozbuild/mozbuild/frontend/data.py ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
python/mozbuild/mozbuild/frontend/data.py"
+               sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE 
= "${my_files_per_unified_file}"/" \
+                       js/src/moz.build ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
js/src/moz.build"
+       fi
+
+       # Create build dir
+       BUILD_DIR="${WORKDIR}/${PN}_build"
+       mkdir -p "${BUILD_DIR}" || die
+
+       # Write API keys to disk
+       echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+       echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || 
die
+       echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+       xdg_environment_reset
+}
+
+src_configure() {
+       # Show flags set at the beginning
+       einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       local have_switched_compiler=
+       if use clang; then
+               # Force clang
+               einfo "Enforcing the use of clang due to USE=clang ..."
+
+               local version_clang=$(clang --version 2>/dev/null | grep -F -- 
'clang version' | awk '{ print $3 }')
+               [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 
"${version_clang}")
+               [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+               if tc-is-gcc; then
+                       have_switched_compiler=yes
+               fi
+
+               AR=llvm-ar
+               CC=${CHOST}-clang-${version_clang}
+               CXX=${CHOST}-clang++-${version_clang}
+               NM=llvm-nm
+               RANLIB=llvm-ranlib
+       elif ! use clang && ! tc-is-gcc ; then
+               # Force gcc
+               have_switched_compiler=yes
+               einfo "Enforcing the use of gcc due to USE=-clang ..."
+               AR=gcc-ar
+               CC=${CHOST}-gcc
+               CXX=${CHOST}-g++
+               NM=gcc-nm
+               RANLIB=gcc-ranlib
+       fi
+
+       if [[ -n "${have_switched_compiler}" ]] ; then
+               # Because we switched active compiler we have to ensure
+               # that no unsupported flags are set
+               strip-unsupported-flags
+       fi
+
+       # Ensure we use correct toolchain,
+       # AS is used in a non-standard way by upstream, #bmo1654031
+       export HOST_CC="$(tc-getBUILD_CC)"
+       export HOST_CXX="$(tc-getBUILD_CXX)"
+       export AS="$(tc-getCC) -c"
+
+       # Configuration tests expect llvm-readelf output, bug 913130
+       READELF="llvm-readelf"
+
+       tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
+
+       # Pass the correct toolchain paths through cbindgen
+       if tc-is-cross-compiler ; then
+               export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} 
--target=${CHOST} ${BINDGEN_CFLAGS-}"
+       fi
+
+       # Set MOZILLA_FIVE_HOME
+       export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+       # python/mach/mach/mixin/process.py fails to detect SHELL
+       export SHELL="${EPREFIX}/bin/bash"
+
+       # Set state path
+       export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+       # Set MOZCONFIG
+       export MOZCONFIG="${S}/.mozconfig"
+
+       # Initialize MOZCONFIG
+       mozconfig_add_options_ac '' --enable-application=browser
+       mozconfig_add_options_ac '' --enable-project=browser
+
+       # Set Gentoo defaults
+       if use telemetry; then
+               export MOZILLA_OFFICIAL=1
+       fi
+
+       mozconfig_add_options_ac 'Gentoo default' \
+               --allow-addon-sideload \
+               --disable-cargo-incremental \
+               --disable-crashreporter \
+               --disable-disk-remnant-avoidance \
+               --disable-geckodriver \
+               --disable-install-strip \
+               --disable-legacy-profile-creation \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-updater \
+               --disable-wmf \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-packed-relative-relocs \
+               --enable-release \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-ffi \
+               --with-system-gbm \
+               --with-system-libdrm \
+               --with-system-nspr \
+               --with-system-nss \
+               --with-system-pixman \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --enable-update-channel=${update_channel}
+
+       # Whitelist to allow unkeyworded arches to build with 
"--disable-rust-simd" by default.
+       if use amd64 || use arm64 || use ppc64 || use loong || use riscv ; then
+               mozconfig_add_options_ac '' --enable-rust-simd
+       fi
+
+       # For future keywording: This is currently (97.0) only supported on:
+       # amd64, arm, arm64 & x86.
+       # Might want to flip the logic around if Firefox is to support more 
arches.
+       # bug 833001, bug 903411#c8
+       if use loong || use ppc64 || use riscv; then
+               mozconfig_add_options_ac '' --disable-sandbox
+       elif use valgrind; then
+               mozconfig_add_options_ac 'valgrind requirement' 
--disable-sandbox
+       else
+               mozconfig_add_options_ac '' --enable-sandbox
+       fi
+
+       # riscv-related options, bgo#947337, bgo#947338
+       if use riscv ; then
+               mozconfig_add_options_ac 'Disable webrtc for RISC-V' 
--disable-webrtc
+       fi
+
+       if [[ -s "${S}/api-google.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 
}') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+       else
+               einfo "Building without Google API key ..."
+       fi
+
+       if [[ -s "${S}/api-location.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 
}') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-location-service-api-keyfile="${S}/api-location.key"
+       else
+               einfo "Building without Location API key ..."
+       fi
+
+       if [[ -s "${S}/api-mozilla.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 
}') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+       else
+               einfo "Building without Mozilla API key ..."
+       fi
+
+       mozconfig_use_with system-av1
+       mozconfig_use_with system-harfbuzz
+       mozconfig_use_with system-icu
+       mozconfig_use_with system-jpeg
+       mozconfig_use_with system-libevent
+       mozconfig_use_with system-libvpx
+       mozconfig_use_with system-pipewire
+       mozconfig_use_with system-png
+       mozconfig_use_with system-webp
+
+       mozconfig_use_enable dbus
+       mozconfig_use_enable libproxy
+       mozconfig_use_enable valgrind
+
+       use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme
+
+       if use hardened ; then
+               mozconfig_add_options_ac "+hardened" --enable-hardening
+               mozconfig_add_options_ac "+hardened stl" --enable-stl-hardening
+               append-ldflags "-Wl,-z,relro -Wl,-z,now"
+
+               # Increase the FORTIFY_SOURCE value, #910071.
+               sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' 
"${S}"/build/moz.configure/toolchain.configure || die
+       fi
+
+       local myaudiobackends=""
+       use jack && myaudiobackends+="jack,"
+       use sndio && myaudiobackends+="sndio,"
+       use pulseaudio && myaudiobackends+="pulseaudio,"
+       ! use pulseaudio && myaudiobackends+="alsa,"
+
+       mozconfig_add_options_ac '--enable-audio-backends' 
--enable-audio-backends="${myaudiobackends::-1}"
+
+       mozconfig_use_enable wifi necko-wifi
+
+       ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' 
--disable-unified-build
+
+       if use X && use wayland ; then
+               mozconfig_add_options_ac '+x11+wayland' 
--enable-default-toolkit=cairo-gtk3-x11-wayland
+       elif ! use X && use wayland ; then
+               mozconfig_add_options_ac '+wayland' 
--enable-default-toolkit=cairo-gtk3-wayland-only
+       else
+               mozconfig_add_options_ac '+x11' 
--enable-default-toolkit=cairo-gtk3-x11-only
+       fi
+
+       # wasm-sandbox
+       # Since graphite2 is one of the sandboxed libraries, system-graphite2 
obviously can't work with +wasm-sandbox.
+       if use wasm-sandbox ; then
+               mozconfig_add_options_ac '+wasm-sandbox' 
--with-wasi-sysroot="${WORKDIR}/wasi-sdk-${WASI_SDK_VER}-${wasi_arch}-linux/share/wasi-sysroot/"
+       else
+               mozconfig_add_options_ac 'no wasm-sandbox' 
--without-wasm-sandboxed-libraries
+               mozconfig_use_with system-harfbuzz system-graphite2
+       fi
+
+       ! use jpegxl && mozconfig_add_options_ac '-jpegxl' --disable-jxl
+
+       if [[ ${use_lto} == "yes" ]] ; then
+               if use clang ; then
+                       # Upstream only supports lld or mold when using clang.
+                       if tc-ld-is-mold ; then
+                               # mold expects the -flto line from *FLAGS 
configuration, bgo#923119
+                               append-ldflags "-flto=thin"
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang and USE=lto" --enable-linker=lld
+                       fi
+
+                       mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+               else
+                       # ThinLTO is currently broken, see bmo#1644409.
+                       # mold does not support gcc+lto combination.
+                       mozconfig_add_options_ac '+lto' --enable-lto=full
+                       mozconfig_add_options_ac "linker is set to bfd" 
--enable-linker=bfd
+               fi
+
+       else
+               # Avoid auto-magic on linker
+               if use clang ; then
+                       # lld is upstream's default
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang" --enable-linker=lld
+                       fi
+
+               else
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "linker is set to bfd 
due to USE=-clang" --enable-linker=bfd
+                       fi
+               fi
+       fi
+
+       # PGO was moved outside lto block to allow building pgo without lto.
+       if use pgo ; then
+               mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+               # Avoid compressing just-built instrumented Firefox with
+               # high levels of compression. Just use tar as a container
+               # to save >=10 minutes.
+               export MOZ_PKG_FORMAT=tar
+
+               if use clang ; then
+                       # Used in build/pgo/profileserver.py
+                       export LLVM_PROFDATA="llvm-profdata"
+               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