commit:     a8e9e0363c315f7a71da1cdec6324098a0324741
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue May 27 11:43:07 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue May 27 11:43:07 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8e9e036

www-client/firefox: add 139.0

 - add a simple patch to fix compiling with system pipewire - note that this is
   a fast fix and a proper one should probably be handled on pipewire's side,
 - always prefer system gbm (mesa) instead of bundled one,
 - always prefer system libdrm instead of bundled one,
 - drop autotools.eclass and autotools-related configure flags, as upstream has
   finally gotten rid of any autotools-based build scripts,
 - drop check-for-propagated-BrowsingContext-in-SessionStoreParent.patch as
   it's been merged upstream,
 - drop memory_mozalloc_throw.patch as upstream has fixed it in a way that
   negates the patch,
 - firefox-symbolic.svg is now called org.mozilla.firefox-symbolic.svg in the
   source files,
 - introduce "system-pipewire" use flag to prefer system pipewire instead of
   bundled one to play WebRTC content, and when using screencast,
 - rebase our gcc-lto-pgo-gentoo.patch - the gcc part in profileserver.py to be
   exact,
 - rebase support-system-harfbuzz-graphite2.patch due to the autotools-change.

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

 www-client/firefox/Manifest             |  102 +++
 www-client/firefox/firefox-139.0.ebuild | 1404 +++++++++++++++++++++++++++++++
 www-client/firefox/metadata.xml         |    1 +
 3 files changed, 1507 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index ef598f898236..c350f35ee166 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -203,5 +203,107 @@ DIST firefox-138.0.4-xh.xpi 273647 BLAKE2B 
74a84022bec54543a88ea0b1433d3c5dbe4ba
 DIST firefox-138.0.4-zh-CN.xpi 460392 BLAKE2B 
6b2cfb027e1affdc8e35b57a55147aefc3a429261031f12ec52f07cfd4e6e73bfc81626311e3ccb3c445a766df4c09e8f0e652c6709e4905e42b52bd981dbf1e
 SHA512 
f5ddd024b0298e6c734c148dfd01da6dbee8c172c93b9d30c1b820eeb860214ea89d90391c9c3c6e9521470860638f3c5bab10d75dfc832136ecf0853cb4ee2b
 DIST firefox-138.0.4-zh-TW.xpi 463422 BLAKE2B 
d502bb8689b40878236347064d9e2eebc257aef4cc0f9bb7c84248fc5e412c7bb4234fe6d7e73539bdb0755be2dd1f6e3e94f656e507f7a14696ff88021fbc00
 SHA512 
0cb8c41dbaea4833fbda8fda9aecfd6dcaf7f9ab24b2e4eb2033b7cefaec45c628f7c4aac6a1366f1153800ce8112188689f1316975deb9f79cf8acd34236e42
 DIST firefox-138.0.4.source.tar.xz 623414956 BLAKE2B 
1e65a896e0c3188510ecb1fe0cb7f181c6977e04a5b50079b04323c4b508297945ac8865a2273a0cfe038e841cc2972d930d627f8d39db3ce9288fc5fe5a1ed7
 SHA512 
64d80456da8df27d7eeed7eb20c35fcf213bc948eb48739b6101e2c476ea9a9133da928477a79683c96c160f8d53bed52be487f01a8d29e38d39071f12676806
+DIST firefox-139-patches-03.tar.xz 11536 BLAKE2B 
a7610d1348a2a4d02305c8d694a1648997040c69cb1445b901fe456045d0b1a73f28b0102ed03d34f70d8cc1ea9ab0245599a104b0063c7fb0dcb5a8fdd6f60b
 SHA512 
4733d34a842d525824fbcf6ef5d8f33e26b4f37a16aa87043427eaaf1e0665aa257cb8487bd692e4fd095c2a78553ab3f0213208124c3455e534394576fb5614
+DIST firefox-139.0-ach.xpi 297653 BLAKE2B 
8d32423d58ceda3d7d98704b68463f9f22f0ba0bddcabcf894f4a925605c641631567590a43d4a40aa799ec0a19a2b85c1eb9ca5ad44e05fcd8eb14bb552d6a1
 SHA512 
b73748b611719c4159f74dcc74afc9f74757a42f9e2f424084a1e08260a16464e55443bd8e71673599939af7506697080dbe806b8156475277d787ff61cbf6bc
+DIST firefox-139.0-af.xpi 269832 BLAKE2B 
cae6d4b413cbdc8f8e73df86bd9e619f9d6802e26e4451e6c41de72aa550c7efab70bfb3dcce677e5de27c87fab37f9ae5edc1f633cd882fc95761f7faa2a8d5
 SHA512 
a8786d471d866afb825fe846539d3aa819e8c2f237a41e710e0cf36c8362b129dace2e77aaeb49adc7f157bd1355ea87a6ef13a8b528d5d91e1cd858e5f9db23
+DIST firefox-139.0-an.xpi 335654 BLAKE2B 
90ba1ec787b05799df6b461722aee5c75cf698e710f4afc1e10ea69fa95e8056bf810029f30cc19bb7eb453487e0292cfd1f0474ac4bc990d2ffa9b5c65a4b19
 SHA512 
b78b029fade7c3468ad575038394978f9fdc149857b49bcec6e49d3ee056548566679d93e9825e2cfabe401737c00c22ccd4779c3955bca059e00308f84cc2c3
+DIST firefox-139.0-ar.xpi 444100 BLAKE2B 
ee3badb8163b3e2eb19d0340bf602a1305fbf235e199b8e422edf907a830dc5107082a44b42cddd3013cc88b998453ebfbf21452afbb65118e4d7f3ecfb3c0c3
 SHA512 
7dd8a9ad3cd7f4167cf37755a77461910ac3ccf8363f78edb322f642cf54bb293b7b107be5dc4232a179326a13870f58f60fc7310b814e15b759b087fe85f06d
+DIST firefox-139.0-ast.xpi 316648 BLAKE2B 
a50e21f62a72368a18fc1f07dd5927a41808f1809b32779601e12e9cd9cad597b8eedb8528a634cc2d490093109410b11ad86b7832966e7f4f9b3b06a1d58cfc
 SHA512 
26e8421682d7d65010e066b3492fb27bbea48e7a37dd377f1f969497090cbbbb4fadd999227915e16b1fe954c8627453023bf96544246a961433822e90046dba
+DIST firefox-139.0-az.xpi 321615 BLAKE2B 
1c60fc1cafc4c3e3d2ac9c2bffa584f99f0a0d604d6a5e66b04757cf50e3d6a98b774cc3b758915c8fa1791566f768011813a8c1bdc59dcd571195b30a193535
 SHA512 
1ea514445468d49f0cb9d8fb52b1e2cd0025a6eabbf9d136de21dcb4bbfc771b7f3c2f2201637c16155b5d3cd824b2c42565e1aed7214507b1c4c6424bf2f058
+DIST firefox-139.0-be.xpi 525086 BLAKE2B 
a9cf82dec264ed017cefd893dacddb8e69fe929567849f2e3282da5d178960c3b0be93f3d588d8e2a4a652e447011446d3e230b00f545e7646335da9888d8e8f
 SHA512 
3a4250c28e217525a077d96cf70a726bb138284087524c081f859f907ed721e5dea7e93bf4e34c29286c125af92bd9c34f8a19025a920581d48fa2e2b68adb74
+DIST firefox-139.0-bg.xpi 454372 BLAKE2B 
2b81aef873043bd66c88314beee8a1b178db221b39efa63b705ec0fa6be3fcf1ac83ffcfb2ed331308eb1e15cbf5e353dfbfe77251ba68b1ba6318ed974d2757
 SHA512 
bba68ba6cff944502a3f8908bf912366f8b680f0a89d390df7896c3eb2f520ae25c46747ecfeffd9211f043062fca8447979a92c0b3bdc36c73a9e6bcea8bf85
+DIST firefox-139.0-bn.xpi 415415 BLAKE2B 
0fb1ddb425c7e5ae0602c2fd1c6e860996d4d747ff489c5012433287e4a6e501319eded9ab81859500c0d6fd0b157dd03cb4b5c6a915aacf0214e60f4eea8aa5
 SHA512 
b177264d4f0995ade061d7a02dca601854d882faa68faef9766e9060fa123d263e28d7b5a8b082cb184474a820bc7603bc81d607b4b5e85b7cc2b9e47d0c87df
+DIST firefox-139.0-br.xpi 398164 BLAKE2B 
499b413ab1dd60891e6e84762c1b6f4d7005b47056242902a058c52af478cd6e8f14715172e3a0178cb16cc492e52403ce1c9d6308a96ac8e8172d86a135467f
 SHA512 
cadec1429b9d03f17a272091212dcf3a17893f0f80eaeccb6a2e531cafc171291c73da4c8e7d7f2e57e2e9bd64e73f1c340ba585f18d4664f5e5ac25d536287d
+DIST firefox-139.0-bs.xpi 366737 BLAKE2B 
c90233bc3b44205f3cab93319cabb21e0e43bc060ed1117e51ad34a4ff57b0b13e550aaa01f9b26511518bcdf5734a2d6e1708c40f57f8017a76fc178ad7414c
 SHA512 
63e535434efdcd157a3742ac5005c743739d5f757ec06b0f1653c28c471d3a12a43dae0a2ec1126eb7f0ecd7126fd387b16c91c5671413c1edf73773d80d6e3b
+DIST firefox-139.0-ca-valencia.xpi 361690 BLAKE2B 
cf708c950852911e84497a2c6a58c23db14d79dd95b562cf2a75bc1da6a375c299157d966cfeab51144c69e24f68d69720ec0c079c193685ae75a6ca2a0427f8
 SHA512 
4d9b7c9586ab40bc1a4600518e0edc4d4861fd0235db0c8943296dfd40eec09edf45ecd80083678dbcfc4560be8e4407bd5ab6bd6fab010a4e53fc60ce34e019
+DIST firefox-139.0-ca.xpi 404026 BLAKE2B 
df595198bfa168725bb84dc056524ccea0c84153b1fa92db78793c03a4d93e78181e1515ceb0d1a5e6a65793c9f01e353bc1a104170e4258ed3a7785145e9257
 SHA512 
17616944db9e7594feb48bd51da657ae8a1184642319a6b289229cc244214d8d9c457dfb7f6fbdcc76cd5deb3aab6667cb9ad8c14361311b73ffc7e80e150364
+DIST firefox-139.0-cak.xpi 394727 BLAKE2B 
0549166d931acd387ef79c997c742c7719a1757c0830896113e936579883dca044acea6ea01413dda6b1a5e5bfcc5806c930e76e2e98bc7145a16c08354ea6f8
 SHA512 
fdd08f5c8bfcfd1c69e804db3911215acb36a5bf6e9cef085bc98a0cbb14fb49496998bf8e155b2769a75b9301265318223e7658fe13f39e087ac7e007e0f65e
+DIST firefox-139.0-cs.xpi 479926 BLAKE2B 
608a29346069501f9229d1b1e2fd99041a6a5aa7b52ffc27f65b4056442ed633775805ab926c60421cae9f936efa5b9502163dbeb09a16bb8ec45de8f57b6fd9
 SHA512 
4e7d993175ebb07a4557fd33700656c20fa5fcae02e597ce6947ea2aba748e9822058c7608545d235414b6d96d6459bb983913d09a8bb450c12be7dbc0b320db
+DIST firefox-139.0-cy.xpi 446086 BLAKE2B 
30c5ea06943b1921c1d6b5cfb4a0495ba28f5689120da679f9d3be311f6cd2f157b254757c03a02e1fc919b130c52ac04aa029041df74f676539e8982e8d4194
 SHA512 
da647036c3820f47bf3f8a210f013ea7f5a9b161dfb51be4ae93a1496c41953980716b2c33b0d131bed510c14404f1c947aa6a5ea8b29e84a478fc3be8f6c6ab
+DIST firefox-139.0-da.xpi 435209 BLAKE2B 
c20da4786db1cc68a891cdbaeead8acebf1680769414f8f7fe22e26ac57eecf45f0f4af06db14e355272cab77de567b4cf11d880cb34c8cb0a6a061138a3742a
 SHA512 
4bb93fc7ad048dab601afc9f973b123dbaca22715e4b0d2cca7480080c5a44113adfa7695d50704241ccb3de7db199781c9800ad61282f4e496fe91c45c4f316
+DIST firefox-139.0-de.xpi 456784 BLAKE2B 
f360ac4870c2583b045f57f29fbe3eaadef5057f86eb4f64197740e0e44634b95a364dabd00b957b0ed941a8bc49ad8d68284adb07004c857357eada3210e6eb
 SHA512 
3d2282ac0bc4c508afb773e8b392a7b17201e8a27995a609afee198dac4c1cae450a2e7a6afee70a90ac1d0daab9dee61f6eb45606c955518240e10a2c71ae20
+DIST firefox-139.0-dsb.xpi 470271 BLAKE2B 
d3ed7bcfd301cc239bfd13bfa24c9f54f0ddff2f49c177108974d59a776a45f580fe3a7de78e9aed42b9cd6b13ab31887d549d20dd8ba00aa879450b1e9cb324
 SHA512 
039783fb23b24a0f2efe6a6a282716049847977bfa3d3a9b7c8f7db81f248ac95719f06d3ac4b870dc697217873eaa9aa0d0a34c26b1a849b4db68d9c0860a50
+DIST firefox-139.0-el.xpi 541199 BLAKE2B 
abbd91e5e150d8ffbb2dbfaa05a963908a9dad06f3100bd9d535d7ad84efb24a24c883b9f630ae6f98203da372adf429ec463b36d65cbd5f43ddc2724b744ba7
 SHA512 
e6c7f7082d2e8af42390729b2c7099de240e46cca9e8ea9c22323fd3661dcf01f7884be12270d0f97b2a15194e5310efa90fb9be3764d1f1ee018299d43ff27d
+DIST firefox-139.0-en-CA.xpi 413605 BLAKE2B 
707b61a5e7ea9fd00d9d3e4a013f82eaaeb82eca681f81e1fce5cbcb786b2ae3b0c6fdf4410695cc95951d8c67f03d65c46a78bd8bb806736f593bda6826c58f
 SHA512 
573cd20b66b422459a92e96c48500befa264e4df7a5273b9f3d7656198a5c3475e10102f38ad91cafaf02ff453c0c4aebaa8694aa72ac9ba97b567984c65549f
+DIST firefox-139.0-en-GB.xpi 415489 BLAKE2B 
147fba49403e15404c6b328e990a5d2364da7475a4da140fa4450355d1ca88c3bfe7ea699d3bf6bb8453be763a521899d05329813398a04d951879bb324dec66
 SHA512 
94202127610997ebd1e2a45ed4d7ae13b50af0cdd51edbb5dacdb73dbd897e2a417aa8fe7fce12495ef1d6135a382d75835c05573ffbf940e110b2868cd620e3
+DIST firefox-139.0-eo.xpi 437561 BLAKE2B 
0bf338bb29ecba1e02738d8a90193cbff60c65fdd9dd4a33d5643ed2be8a189fe65f7871008dd6dffeba6913104baa83090bf10af2f6e4fec92f16d091ca6e45
 SHA512 
d7b977a53643334450e2570dafb51461f7b0acb2ac3dedc4405ee497d6de5a85e71238258218ff7a8f9220ac2d18198b67be316733dd3b2ea866a933cb20cd72
+DIST firefox-139.0-es-AR.xpi 449705 BLAKE2B 
aefd23a621fc99c38a7b8ab25b62c03605f25017976cfa2dd3fb9610311d3e51739a48986949158da6c8f707453debfd0eff2e4db2ecdeb48309d4443efc78c8
 SHA512 
2bd7f08a128415df5ec45e89797b884a4c61f628698399d6e48a093d3c8ae20bcbb2093a4f693a7cd2d2a7014839352a5f326bdc485beb53aad45cf2a9691722
+DIST firefox-139.0-es-CL.xpi 450463 BLAKE2B 
7f9a52c9a15f8ea89767b650efa321e175efcebeb741d8562cd972b17da2d35eb481cec8dbfb9b89954f88818ed29286caa9a9e5cabc045f21eba7eebd0dac59
 SHA512 
0c4690a5c79cb8bba5894d28281eb8a06087ce152d6e136df7bdcdc0f7b98ab6b7cd599d331c85212a3093dddf113fa42534af4ddac2c644fa84da84dd60fd7c
+DIST firefox-139.0-es-ES.xpi 451249 BLAKE2B 
b229125bda71bc82f2ba72c03ba861180476c8545b9383d5c71466266914f49b13f6b265b9feb9fc3d06d76f207faa19a5e14d00a30c291045db098d093beda4
 SHA512 
3d8d386db468add905098a2eb7f36d0172e718dde1ec7b58948cf2673dabd6a98cbd87f8e7987227a23b9aa164a3aed287f9e765d0725a45320b8998a392f93f
+DIST firefox-139.0-es-MX.xpi 444375 BLAKE2B 
e40e5fb28663321aa2e11037a5f6799656f848affe80092c7ca637c5c54de5542e4d359d962fe5634fde6b51b7ed253956d63c854acb07cbe55d14572b502b27
 SHA512 
bc58aa0310dbc5e85b799fe9b460b80019ac23800357227a17553ce269bf3a0c90cd70ecaff2a77b0d19dd870a0ecd42d64a6163177737e0e536211fdd158cbe
+DIST firefox-139.0-et.xpi 362497 BLAKE2B 
747b3bb19cba7f3d3df5ba3afa5e748a68d71a56cfa6a679f19d1fe521b20275b50177bd71173dbf859de7284966083a312b7d614204e1dc2b9703fb1e7b263a
 SHA512 
41347d76b34b393a3f5e736410b935df0af75f292bde410bb6e12e3175755de712d5c6cecb9dddd470e03c58d7babbcebe2c5d7a49173bfbfbe3c1fa4becab58
+DIST firefox-139.0-eu.xpi 416692 BLAKE2B 
e59814f101d8fa1423d3e08420ecfedfc1cf550bb5ddd49d7f1f6683bcfa99429e23bfbc737b2f6120882ec9ca5c86f66af07dddae7e51a60ba302391dc7b76c
 SHA512 
e5f93e1e444ef41c5b10768a37382e754426d7d764b78453ee97f4627d95c170ec4df9569669885034cf9ee03b9ddfd0647c54cc8c05cdaa2e7d99ac80c03d67
+DIST firefox-139.0-fa.xpi 424165 BLAKE2B 
1c8ba918a4346ae08c16ddd64df2ffb90015ebc7e9cdeb242000d8e5a09da50c70fc8ad1c2fe60d8b375b4acc49154d8936e3a20bbf5a40fe6411bceff0d4301
 SHA512 
4428c9e4db61e32d5a7cacd05d3da8d17b9604c51af6c8eff7212ecfd11e25f2c2b258c067f844666b95632239676bd3b80b9a2f352f901b5baf300482c60876
+DIST firefox-139.0-ff.xpi 313851 BLAKE2B 
974fc9e51002b6130297957b1f6b1611353266cda0e110ac866e537ab44f36b6315163f7b2f2279af9304ad957d8678a624c6b67d7ed2fe8175775b1a1a6f2f0
 SHA512 
cfcb11e63c9d7e48fdfa17e6a4befbb087308b84a971edc0edd92a59a5b69d31f395a02eff433ebf6a8c8168d52e7da995e69df95e149878c4cbb50b38ae739c
+DIST firefox-139.0-fi.xpi 432409 BLAKE2B 
07f5052535eb19d2e2e45012ce0babe7f618f927329ca7537480d60b9bfa424bb81f76531521b8c6c9b8ed15cb5d8484a0e9b3fadd186134780c32a75322ef47
 SHA512 
4cfe3e4ca8a0d872862cca31da35ed11370de4297702661ef35850b2d30888d9013b6792ddf045299eb39bd296dae12a06be29fd5e3dba612bc754644a0dd3f9
+DIST firefox-139.0-fr.xpi 462405 BLAKE2B 
59b4aab5e4c4c61f93f67ec369bfa0e627b387a6cdccf85de53766fa3e2ef74dc686ee8d8342d761ff544be57637960f1c26f8b39cbf133d63eb1b76c04cdfcb
 SHA512 
ebb4a9c84401fd91d3bfaad88c5bff23b651735a1f54665f28618054c0259c2b925fb6d5f32a3e577864b083aa413809bdf1d8589afa2d558480c5790dba4af8
+DIST firefox-139.0-fur.xpi 453095 BLAKE2B 
6c2e67b5dff9c1db4086c34b36c18dc9f735a9b2ff7f3f0a1c0ef685bb12eda95606546aae246cc44c4ee6f0b226b508d1417dd9df49ce95036f3f0f5911f482
 SHA512 
8ddd5f311c5c43de454a8dd80ea45dd76ecb01b5b27fb787d47ab807b294f4d2fe1932d9dba7bf724af8afc63d9fc958cb8a0701b1bbf33a3978ceffb553924e
+DIST firefox-139.0-fy-NL.xpi 446338 BLAKE2B 
96527212985304a62bd56622985c33cb9c1d908f0b1164308de5587cc0302e92daa77abf4143e82ff699dfe767af7758b138bb53806b06c85a7edadf1a04eb2e
 SHA512 
8ee82b6013e2274bc3ed836e8fa9d1a361a686ca6f973cdd9ddda3b53a825b39a3cec4bd0e4da78440c952bc163d5c57918d220b3d1e034d8f42d374953dd175
+DIST firefox-139.0-ga-IE.xpi 318540 BLAKE2B 
26df70887aeb16822a57d4babac091b30163a3bba5fd20e6ce50f45f156487d7a52461828adc161729102dc721ad9ed2bf7418f0d9dc21785c169532bbdd060c
 SHA512 
7fd1615f1bb76631758a379a850382e8581198556814f5e2f67af81f571e65e05568837f58e67180c3f0ff748182f07e33b2dd6687799269cc77b3b795df9a59
+DIST firefox-139.0-gd.xpi 402965 BLAKE2B 
65ff9daa71ddf99ba125ec4595944df9259b2866995574b0abd5343b9d373c28f876bbc0886a7b17c06a17c36dcb26994d9b4e4953ef7315973499001ad5d339
 SHA512 
b881bc5b0e3a035831577ab16a1f75838753779478b67a014beee47e50f6e5df4d4b7b16471bb281ecabeca15c1e4a2dfdcc02bcf37e9e5b438d9b4ea334ff8f
+DIST firefox-139.0-gl.xpi 409738 BLAKE2B 
da961b792e52353669221f55a57aab355d24caa35c8a0626bfd28a05641fe2ac1fc569d2f8c8ca49d592b21dc3976db740e3a2f9abdb467463eb8c01df1be6bb
 SHA512 
540558dac9ea713e54062d0328ef77016730153b9c6a564a4972f7a5a01da3203529a69e9e02343c687d0ac201dcc957257bf1ff44d5c99b51a609b3969cb8a0
+DIST firefox-139.0-gn.xpi 453113 BLAKE2B 
e60499b4aa2f8802e132c2270bfec868aaa54d15b6c74645615d6f2d5f58c8dc4e364597d6ede05c01dbedfcf9fb026e19df7073b021971959e961d2239e4a9d
 SHA512 
510f3718db4680b0230156dc50bd73ca63a215f49438aec415871b065abd04629191c939c3364f42ec582e8b3a0aa635314eebc4b66da2cabca83f9c462631ea
+DIST firefox-139.0-gu-IN.xpi 362211 BLAKE2B 
173be7eee94b38b7d0c013002f7f25335704afb98f23e9c45855a2bd4ade3797e939a80c2ddb70c3c0d7d0852cf40d504fb94aeb18195a39fbceb3942d769215
 SHA512 
206b9efe274a987787088ec5bef1466cd2fd7d355515e320c4f80092a7d95d94a2f88e927ab272365b6a5ab57afad86ddc993af1289c58b04ae0e0115b22fe64
+DIST firefox-139.0-he.xpi 448703 BLAKE2B 
b3d3a3489e73cfa68d95a8e4891d59c2b6a8c668eca395823853ecaa3b7c163e4daf3a7d80ce33bffe217b8bf06b38a981de9aa5df3c3938444f01b3479d613d
 SHA512 
772eac713c0330979ab3b813fbccc48976ab819a7e0c7c704412a7b52d38705469e9a6ab249708e21c4f9e9d5b1d089989692a2e2e92e0f673e54379adee8523
+DIST firefox-139.0-hi-IN.xpi 380724 BLAKE2B 
3b0d3a94cc16e4619fffcc37f20496fc2f52d499e792d347dbc8c44502b97954ec7fac94062e096eaad59a95ff503e61d8ca2087fa20d75c732ed3407fd6bacb
 SHA512 
607ce1fe57f1d491ba4e6e92ba6fcec6c88598c27ed4668a6d30be8bf51eff22aa9518084eb2974fc3a99615d053cd10de5ade0baf70b31c6dabf907af94bf3a
+DIST firefox-139.0-hr.xpi 431204 BLAKE2B 
83e06dcad8e4c72db99a9c3a3e6f3558ba102079e18a0fc6acd6efcbed71384b1d43d11cbd7f156464fbc9a132ef0fff1501647e9c26e148c442d12942691f04
 SHA512 
5af950e7e71b8529e440af47777a3a008f6a9994b45ae4161ce2ba5548e3a6ae9eab498d6a2e82dafa929f690c1bdad4e8f0ad7ffb3d278665616e8ab031d58b
+DIST firefox-139.0-hsb.xpi 466852 BLAKE2B 
b849519049592536a0deb8a69667a13661629b5dc26c46f513d79e937492f032ce750830dfade04a52d929d4644f6814cc1584bf9896a2b7b5204772e5d1ff5a
 SHA512 
4afcdfbb4e0c2c021ed65f3810093d3640587294bc3f615470ac155ef72242f7fa390233ab9cf8ffdc7948b7184a70775682548883fd37c574991aa34eefb5e1
+DIST firefox-139.0-hu.xpi 470461 BLAKE2B 
fec160476c8eb3fe153003f9a20c7a2ab9e54f7e9ab3a3485e79b1327dc66be8e17c1a47622070b67265a7b18a25ad48061944c3954c5457d027430d3539a1f1
 SHA512 
6f66f3a97203528b8d43104f9fb8f540b20fbb93798caf377b425ec371768432e34ccd6b44f4aa876d74bbd2041a9c76a8e2a11ffce9398d5795d136b4abc479
+DIST firefox-139.0-hy-AM.xpi 457464 BLAKE2B 
35a0180a68fe42a1fc441b7ed2f216d1c7c515ddac943ac23dc91c5e48c95c6dce3aea7d52ef614ba7c66802656c67d3dddcd1403873704785e137e373fbf4a2
 SHA512 
07c095310175ba96f664fb0e58507b2267c05f5860229749f322b9a82847e47874b0ba5e7fb34949803edaa897957cefa5d120563961c5f7187085fdaf2e5e33
+DIST firefox-139.0-ia.xpi 434198 BLAKE2B 
c76bf4bdc0e6f228ffa8e33e3052583ef16e60973501c711f1f120a7e2ed941ce114c5620ff81bfd6987afb19484c3c5e3d553140c0e684f008709ddc68edba4
 SHA512 
6be1593aa8fc47010df3e21cb3d8326c3d9153af154d7b2bdeebdfcdbd92fe3b373604a90865781cdb5fccd1085f9666f96d58795daae3a6c3b3df4400b82253
+DIST firefox-139.0-id.xpi 426325 BLAKE2B 
9b4efdb4caece08b804c6a21a8ecb1dad20bd28e5f6caad8b60f5de890d138186e71615d0b049c66e7fcc1c14a7e3923722197df43d0f16a36c137c03bf043bc
 SHA512 
eda65d60956a731c8c576a054c01c7bc4a132e7cc495957cc19e6c4a52b3de902731ab4c38257ec4fb25046e2d573b1d823b7191d97d870b01bedbe423150a69
+DIST firefox-139.0-is.xpi 436857 BLAKE2B 
daef9096f4d69e0882acc6db2e1dddd63b2e89fca7502ee16ff7226c13f35a1c17f96a27d66c3c130c5f94e85621089cd954661f5a1b294363201869a697b643
 SHA512 
ab42569fcaf590de151fb6df716764fba02b826aee064adea56bbb1607b1e4488f186e696fa3419aa386b409cf92a6c8f6b625b6270ac819ff28eeaaaacf8c5c
+DIST firefox-139.0-it.xpi 444970 BLAKE2B 
fc274f872044445746b59f2e91d110b6760621dbf5484613a6c540236aae6d1e2df9fa0c0aea3a2d2d28f3bd342e11d26268683216e977fef2ec1a1497962c01
 SHA512 
a06df120c82f2ae471f0d0730f1548b2ad07c0235f025506faea2951ba1f5a0f896377a0bb910cc1128e345884325e6f6659cbca92b3cf09e1166ea6c8cf0260
+DIST firefox-139.0-ja.xpi 485460 BLAKE2B 
bd3f09685603ed0409d96e56a2d001c6f46be92b2bc541731e929ccd49a20359b4a286ea2bfe37e322715c43cfd9a5b45f0663cf656bed887f715bf349b8cc08
 SHA512 
2309b4644871e2d9000bc4f5aac2e050a487a8677e521b9e4786b7f683f5c9a9f15254a131fbb8d1bb1b02188c851720ff4a7e3899cb47d4c88edd99e26a9f4f
+DIST firefox-139.0-ka.xpi 498906 BLAKE2B 
ed1105ae2e8f159a5c37d7f0fb53dba27e95eced04518430064b699eca8605ae9452275953143015a6d96f1ecae1655ce6a9d48a10c8d7a7ec250610aa2a0399
 SHA512 
7cb56b9958f33e481ba3fe5cceaf9534524163ef40f5164fdc2825d4ad7a8a4cb547f45e20dc3ac05ca72be2d051988f0ce0d2a5e2566abce50496a0a0509ae6
+DIST firefox-139.0-kab.xpi 425606 BLAKE2B 
f2a7b4abb64fa6cc0822847d53f8e6ac9718342692aac678b42a700be0395d92b7a2a1ffe00cd26c666ab0dd719562167a5916a2cfee170e8b1b595cfaa85988
 SHA512 
342ecd07a8f5f580e4b505fbb6e72d654a9d4380d8a37922f5936a4305a55627714179f657c71a4224271a2662f93989c2e5849f454243b2455ee7195b0b5db4
+DIST firefox-139.0-kk.xpi 507021 BLAKE2B 
147088e7d5442ad00c38764a145e8af007f04c3c64cbb8b39a2d98beb3f4229b050e21455393d2607c1deaaf97257511683b057f5b853bcd3b19edc9a1493502
 SHA512 
c2f8010f59714048d35de76dc32dd35e396060ea6b0e0cdd6862eea76261b5059d03e533a4552c041a9912901c1447cb8403699610ba3fee2a5219dc981769f9
+DIST firefox-139.0-km.xpi 352027 BLAKE2B 
e7c0a84128c021ddb363018c2a6630dbfb07044c5cbeb429bee92a8dbca84750fbb11f47b4ba54e067c0825d2a1ba1ce5db5a842a902b2426ba5575a2c92da32
 SHA512 
504a7fd39af29ff4ad6796b6157f3274ab25f37f28d9d77a26f9a292428394e386e51dbe1482f05044f7fdf48ced24a837a2ad0c94360887a298a043f23c64a6
+DIST firefox-139.0-kn.xpi 334942 BLAKE2B 
ecae7b7bf7651b459378313e6785f3445ea3749c4293570b5ed57095042da027d61a71398706c0cefe8f686080131c34c75e1bdd8eff55f96949b8be88ebd07e
 SHA512 
19ff8e28daa5fa7bfbe1033df0d7c6893bec943591f4f774c9464f0e1eee70967503d8cb095f7f8782d0332333d861033eda710c9dccbb1bdeb67a51f248b797
+DIST firefox-139.0-ko.xpi 471626 BLAKE2B 
9f4f3f21581fa37e290cad834fd1c2c079fa225a00ad8afe924570453e52735e3ad17285cd21ef9158a57c6185d4f4a5937f992d0bdadf3fb6e271187b682087
 SHA512 
1300e82efca6ebeeaaad21d4c954bca3fd2629d19c4c1c517d1b774245ba850f1e38933ba369b295fa5010a1d7ed1c79b81bed86821802e911330df5fd2f1be6
+DIST firefox-139.0-lij.xpi 321769 BLAKE2B 
7eb4e8c908cc147edbafe7f58362f443795f28f4a68714a93c9b89aa721e0a9c015d2134a82f7aac17f88a649c5579881d8f40f5a12980be0f4697e7b7094991
 SHA512 
2a1a9bbc2734e47cd9e806f7e2847c7dafd5a35097aa85def0e57b3749b26201a5897808da98bd7147f9749e1b960419dbfb6abee16b179b13bf3816b091f2d2
+DIST firefox-139.0-lt.xpi 383460 BLAKE2B 
f81fa3001b5d334eac211cfa4952ffcb807ae0cf9de6d05e3c92aa039ae90d6ef49a3789721a8be88f2713518037e143bab20cfacffaa92ada21c472f8d0a84b
 SHA512 
0abcb78790f77c51229098b5761ef2cbddd6e39cbb77434bbf4955cbb99f743337afbe0f6d9ce0f73d7ce9410bc8fd67ad322f9dd9769c191c945cfd3890106b
+DIST firefox-139.0-lv.xpi 391400 BLAKE2B 
9e61383cbb60dd311685e04576ebc0d5acb309791868cf96abf930ce53dec50b85685e560b1d8c7d397a5807c2c821f0e5ecfaa15689ecb2c83651067cf53bff
 SHA512 
e4779967d18a878be9f06cd551cf451730d2dc5dc53d05086c0e19dabcfa8209de3a5aa22626c87e4a3334d3a7ca8c9a089c3816fc1e1898eacfd928767f698e
+DIST firefox-139.0-mk.xpi 320012 BLAKE2B 
ef6e6a1526e4fc10b3c5d143f8209bd507df89f6f1ce4da6562ca085415dd71b83883667192e4f7f506ff45691f0cd280f05bbf158b768b83e06e0be96fc2818
 SHA512 
2597ef95b0748bd877d599913034ce63f29ca9c17772e85e4491b9d17aa31162dc1bf7258ffbfa5f9826b4fb3e45460a0d7eb50f7402cf5927550de2b40d16b8
+DIST firefox-139.0-mr.xpi 359449 BLAKE2B 
df846296c091e2a983a30ea0ce8c96ef81c8d574a743fd871d27f433cfe35d25915ed38f6397d5fed9df5b904f30299cb83c877f63ca84f3f432ae0aa9d7e65a
 SHA512 
1dbe91a3f76d0610839929677e136397a30a934dece4cb65d603c7405f8a26b1debaac1b9ef2dcc6a687bb74fe2f7d647bb02d9909f3a4aa487ef91d2e19e0a1
+DIST firefox-139.0-ms.xpi 298612 BLAKE2B 
938a5ea2ac01dc87e18501080299076d016efea43c3ad4b37c9ac6ff63c2269eb1ad3b24a2bd68cfd133cb436239024500ab9eedc3388b1faa22964e1bc10e65
 SHA512 
406224668b677e494494185738076919a7e5b7810a5b05069bdc151c770a8c6ee47caf7661c888169c6a2f256b17627133fa5c97c3d2b9ebb53248cb7338b4ed
+DIST firefox-139.0-my.xpi 346245 BLAKE2B 
623b56dc3a65c7d6abce1c4922b5b33014fb9fc0edc39d5ceb0059405d8ab6d6d1927541e5e3e031f410c7a4428a724ef966ed9ab53e1030081e208e8596c43c
 SHA512 
0a1c193c6725ef099006ecad682f8a3dafa5ef990a2f0aa8770ead14c247c72f4fba37a5dbed72719de4d454cf8c1470f15eff2fd9111f021ee0f7ff1da334c5
+DIST firefox-139.0-nb-NO.xpi 425033 BLAKE2B 
35921178d9c2ac1066ca052a8b6958e62291a261578c6b37b2dcfd9775ab8e570a1e29eb52bf378e924006779246203c79429b9344eaf09ad46988d05f37fe8c
 SHA512 
c5faf7abec06788badc9400cb1fe8a60a1a547c06e1435deb226f2b410d7b2b519b9e1118e7f8deccecdbea8dd442094b1765b5e8702b844966efe8a6883c17c
+DIST firefox-139.0-ne-NP.xpi 352273 BLAKE2B 
31f7f93224aab930e5ae33067b5669454a0566a6fff897ad6cfb9a225b86806b000f3cab3722053768658e2418f9e3e72ff6d50ff15ad63a819e44db227f1b8a
 SHA512 
b0910f02e2d62398c698769a655aa9b740758fcdcca87672144892af6941ed0a0838ca798cdc41a03a011de45fc4f1fd530f67a6f880b16bf231bedd7fdfe417
+DIST firefox-139.0-nl.xpi 440347 BLAKE2B 
d99a2ac08014e0d021cb7c9fd4201964bc7d804bef13400139a8bef6ca00113b348af48721f2b5b97e8e9aa42c81439370878c111169e2d899fa2c88797e2f2c
 SHA512 
5dc20e5fe7b089ee8f609b9be91c2cccb28d52a18bf8d13807946d464120047afc94c6082e01e087249b25adff63d0a7bd2b858152ab23fb80ef68c95eaeede5
+DIST firefox-139.0-nn-NO.xpi 432703 BLAKE2B 
661c307a91288f90c859cf8ff776d6ebe40abb77c21132d01279202e4b7f67d40061af137ef2224c46ca2f04bf6a3147c9010f08ed4deb42723a73a549355288
 SHA512 
5d92518b27988cf0b58658d2874f834b55a3e7f7c0194f2d2dd10e5f09aad468312cbed4028ce29cec52c9c3a7aee06e66566c1b31865a858f4be1f5d6ba8602
+DIST firefox-139.0-oc.xpi 416055 BLAKE2B 
6ad9cd74fbadeed7dd650895fe20cab849a32772fc339cf9a2bc96f62c273de0739143a775864fda0b25193c2180277fcec5d1ffadf2dca41e7c88cf6749c536
 SHA512 
93f8a43f2d3c2fb2ae2abe2da34e36b01b63face73be3c4862e58627dfb93759ae48b48089fb2ea039ee98b7bbffbbc16e45c5ce381d0c20268645ca5441b245
+DIST firefox-139.0-pa-IN.xpi 496784 BLAKE2B 
da98f9126498526b2cf7601e463e375e4e6ca2da8e4b230d2404ab3a6a4a35fd5398a872dc07b4260a25516477a0c48cc095a5b7a9dcea24db5c87d199a2cc4e
 SHA512 
10b4a80e64ce6e53daf73fcd842e2cc333ff55c92ebff06d66ec8beb3ed7c10f529496bda8d6be34f9c41317b2e46f1bd1b71e4fc2f4fbc8872a43d1e9725559
+DIST firefox-139.0-pl.xpi 459807 BLAKE2B 
5a61f8b1c6e3de78e9926e8cb60a4c06a42c2658cdfa88056d05e7e92ff602ff82b66c62b0b94e61bf4422b112f007ea7431637be0308a2ba50ad5e9f646525f
 SHA512 
6974e68e685981362abc2c81a2dbcd42b06624448beb1d58856d7c1d09eca3a3cb3d171abda94a9471c0b81c182d5c75c016c713155eee048ef9c5e1e9996d71
+DIST firefox-139.0-pt-BR.xpi 444924 BLAKE2B 
6bc2bb68f4ce0548d1568f5a8ff1567ee654d85892844d3ffaed1cf1dcab841a56966e0e178cc92bd25ae9e97d6adebe8d9783e7aaae7a0d2f4c44dcf32b268e
 SHA512 
a07aed72aeba6ac7d53e61a1ae6ad082aa1362c5568a69b49da9a8d1821c1443e95a41e3363dca2f68592970ba030be025f6696a77693267787cb424d24c7c0c
+DIST firefox-139.0-pt-PT.xpi 450737 BLAKE2B 
9b8b4cdde1f31aea032227deeea7a9d5f04730c004bc4b6d167f590c37557c1a36463f0911e0e987979acb5ab94a833a9433e094c5cc2516919be27d146cfa63
 SHA512 
9341a154a8272393805901d062b67c1b7f22f9cb75ce92dbd7434ba7c3797ad28796f683083b970878c0f8bcb1e778e40609bbaf09ed9ae03472243db1a8cf2d
+DIST firefox-139.0-rm.xpi 442531 BLAKE2B 
9f0915389e11f7c4d09e4314eb3b8fab6cbd972d220ee79be7daf02511493dadbe2c8717df7c4f6d6e3b3ade208de4d413da783b40b9687019350c5e1467bb00
 SHA512 
1db97f9a591e730812cd0455c1be22973e73e14501351c27b2f6f6297a09ac04f3d4aaa109feadaede1462913f0814bdbf476a1826fa8aa52484fbd1e743376b
+DIST firefox-139.0-ro.xpi 369468 BLAKE2B 
a38349fc1b2dcf1dd2d1751efd5c800279e1de342b127881f4c983fa3873b360a69b0c51aeb9efae08030f47fbb84e9e4ad15ac23f60177cb845abbe8ff0030e
 SHA512 
5225b497b507189509511981101d168100da2ffe8ad48b1de00b1ce7c36637fc2cd74057648d452725b09435fe27c86740c5dfe96f831ad68210c9e35c7a2846
+DIST firefox-139.0-ru.xpi 529326 BLAKE2B 
62f96936388379ac137bfb7066b072b8a2d5a8e912e95c3e953d88402efe3a844484e9f4a90931a9cd8a005eac633aebaf601a41e761964730146abe4f549d6b
 SHA512 
e659a6b17dadc463bdd16a6d26c92ab00244dc691c837ec7857f8ed79e5c375f8f3f859bc18bcc909f9a5d1de515a18caf6dbe9445c33349560d865713a1f397
+DIST firefox-139.0-sc.xpi 409835 BLAKE2B 
ac4959a720aca4bb04fd6f0fd0f3cfad76344871e858a3dc47ee2cd96cc7ab6a16ddc5a4edaec4c64ced5b451a3d112d237939d1cfa27a1da2584bbe4fef45ed
 SHA512 
cbf98e8933e3fea1ed81b0dab69d347d77c397d4fa6c1cdf3e3bc4f5dd95e4ef8f9e361f23d554a5f946092005b5d71acc2084b8d25aa7302309d906e1189719
+DIST firefox-139.0-sco.xpi 327255 BLAKE2B 
616582ef63780785353ee13b40bf0ad58fe6d7a0aab89a89c9b81deb246a7b0b53a5818a00a6e53ca7eace6ecc64927f4d7b607d4b119d5fb0fd1ddd9fde40c9
 SHA512 
34ef44fe4d720080e97048ecfe40a79f4e1a11c847d5439ee619734e5fe1df26875f84bf7c1848ad4890dfe4111dd7f600f6e413c4323686692b717d36c00c7d
+DIST firefox-139.0-si.xpi 416104 BLAKE2B 
4c56b8c9d38f38724c58568b7dfb5c2b59545785e810e50af2170a2f066ffca515e2da982f55253124b3353bca651200111fac6a37ad0b086008712ac6e377e4
 SHA512 
3e17b625ac18ccbf00dde90ef3f88475e55459ce7369a8967ff263b07b256bd889bb3f34e5814a279217276285fb80f40b5ea30a85065ca75b2c55845e1dae20
+DIST firefox-139.0-sk.xpi 472198 BLAKE2B 
a6be6663c22e923331910d07b6393926f10a79e33516a4a2866bd6c8aead432b3e687a49e4f6a8d62d137b4652f458c7e489456b4e2234c1193e07cb36c76222
 SHA512 
0059a6e717cb2f98fc9299ae1cbef2cfd43a5f500d182180e471f08b8de9ee1eb91e9d4ff4c9319c61ed2516852cbf7dc05fe51ba80a784c7b9ba015aae39d7d
+DIST firefox-139.0-skr.xpi 493738 BLAKE2B 
dfe9120af93da938b0e352055f3a86a566ab4bc5f03c79db36fa3a3a1e3c80274ffad063c38ca1309ce5de3d015b8226435869df11bbb4589ac000a00d48b1a4
 SHA512 
f549c8ffa3432d9d6216c203a5a83e9fea64657569cdd198affddcc361133b1d2d8c6505110754c489114b01d90aec7a3c5f7dbd7a79158841b151ce9febe4b6
+DIST firefox-139.0-sl.xpi 444953 BLAKE2B 
dd43bf3003f5ce23a5a7f3ab83b238dbe3911342c6ef174cd778a25ac2700e11f38869e45a0ff17fd6b0d9528cd5a45eba98f80a3d25e1def8d3570ec1598bc8
 SHA512 
9951ef8ebeaec29738babfd7f435ec52353ad335359642deaf1c0db5ae48de0acea8cdeaea462cfc5faf5e375cab7330cb5a156e04b63afddfafd8f19db3e205
+DIST firefox-139.0-son.xpi 276309 BLAKE2B 
501e91adb5ffdc9edeb4f323bfdf5f7dad5e390e1b7c0f474763814ada083c75da534bdd29470fc1b32e8e47d57351a2eced0d20e565c8461f5ee018bf9e933c
 SHA512 
6938f37af15e7be77587bf6c9de9d31f6f88d94c6e8885c2346bfc392e93dffd2973a82dc3b66939e42b48427f0e6191d5ec4cb417c3e177acb25e713e6cacd4
+DIST firefox-139.0-sq.xpi 460105 BLAKE2B 
da453c95921f95059a8b8ba98d27f0c6bf3052e2d94384122e57f3cb7685580cd62c3885bd66f8bfc540b5761eff91c33c2f8dcfc1c8fcb4af90d0b7bff0e191
 SHA512 
b5856aeb73d17c673256eb76844d31153c266d64eeaae09cbbcd84e121cb8d2b2bce5b46751fbb03f2405d9a218cec358dd839588898844b638dd9de72acf1d2
+DIST firefox-139.0-sr.xpi 456113 BLAKE2B 
4129658e4e96c2ad80838055b733afdd5559e7bee4ee53bb075c2eeca844640d0dd400724951352a4b80d2b76eaf75fe7ae4aa4588e20857a387ef1aef28a9ee
 SHA512 
46dfd8b699616aaad79ef9f1927da1163fb800686afaf69682c75f2c808ae4dcd83d44f9937b80548bb7ee650e0368bca80bdc12f322d1c1279705786b62c499
+DIST firefox-139.0-sv-SE.xpi 440190 BLAKE2B 
eb190646483222b8c9f8d87b7fde8401a0051231d247094fb86370aec037843b0eb5b130600f970d3127f3c9d9a35f83ad416141ad4ce11fed86078cd9080fa6
 SHA512 
ca237c37851d2814af5b6f567576ad88f4bc7dd6cbcc5e9db0c94c641423e8ae5f8b86b75090e705e035fe48150fe5c919ba7a2658f8ed195cc40bf3055c8506
+DIST firefox-139.0-szl.xpi 346233 BLAKE2B 
0dab3a753ad99524292379053455e4d8cc79111f9b09384804abe61f71414f5886f5238b2d8b75f0d9fd6c89c9d346faa49fd1d8915d805d0967c28ee053d51e
 SHA512 
70a7afa70ab9019f28d8dc0b4676636a2db5e4b96748bff1f5e4c830a171498f31550fcd4abe623cf31696eaef7b2986c6e151e4462b2d3ab2a415872e1e71b9
+DIST firefox-139.0-ta.xpi 341130 BLAKE2B 
89380faeec0c1fb3a8d18c55f17a2862627519a12920210ce1b973b3c46d1ef8e7d60fcede26b35d669cc9402a0181efd976f1deaa87b9779ec60e361b0a2fdf
 SHA512 
87ef8d0b04b193fc1e2fbca024d40f6cf0d1723aa1c10351f8dce57b39ad3f5889d37e0a8089efd004e76e211f3030147a52c576cffa27b4069140365c7221f9
+DIST firefox-139.0-te.xpi 385840 BLAKE2B 
d02a73436c69901e2a0d096f8e91883fcf8376d0e1dcf96e79566fb5d45b1dfb5408dd59b6bf6ee7fe60da8f299933f9f19990aadf22954758ed6ae4655c37ad
 SHA512 
01e698f08d3c7cddc8840483e10a89ab5da89ad2e58cf5bf803137d23828c4e0c01a0310afbe0f03b589913bb17e94022ecc599b16add7b3afe8efba0dd7ebf6
+DIST firefox-139.0-th.xpi 507678 BLAKE2B 
31e0a530487f771e5876e6790d26249cca1de9ddf93214267a06bb481b23d351a1d84319bb5b72f67c84bd37dbe16c3d5f58a9cd20397c3486f226a9f19f8f61
 SHA512 
82a078280f0db1031b35cb1ad74e444f194b73ac16c6928be857ec0be572b39d0b545d66b0a3a596e5561a3a35abc17d9cf0558fd5766481a1557db83dfc5441
+DIST firefox-139.0-tl.xpi 360238 BLAKE2B 
e4ad29283e2a172487502936325b5e53e8b735c6982389edc8da2c58a892292d50f699c72d9b56c8f92b02ad228ab089dca741f4cad085a6dd3973fbe0b7fb2d
 SHA512 
3a96590aaea2cabbd3be2833e83d7ac8b7dd4d38d45702f9870f41d07b6bee5728a1312a606019c4b22b38d6b98869bd668f39a2f01081008816dee477988d19
+DIST firefox-139.0-tr.xpi 452760 BLAKE2B 
5c22a15a86798fe880f170d22ce1eab7529fd253b88f08894fcdca4dd880149284401b0f12cd2447ae413cfc269fbf75db396044733db6957e16b4ecf84cd094
 SHA512 
83cb47b65d410de24afc826423ae4c9509b43de6bf66ab6312ce64f618b49ab4c512a740bf4f780c2a1c470a545857046073564b740aa90e2eeede2f41be139d
+DIST firefox-139.0-trs.xpi 326650 BLAKE2B 
b745701d9541b08934abc2a84f8a9a87824b2a9a783492dd47833d2a792613dc4eb3474a68889a57e8a937afe1047d506614338fd0d7700a258d769423a458a1
 SHA512 
4cd825438c7d01535b1d65710e1881e6d2f85116535661dd8362794a0ba593c6e507361f4e3371abaa0dcbf7f80b624633e8a3f740ba2729b3cc11b6fc7d014d
+DIST firefox-139.0-uk.xpi 521124 BLAKE2B 
38fd262f0e08fbb845d59f17d12c0d4e23b581611df6b7c8e2b1ae81a2b8e693a6f9eb212863d013ddea4da9e1bd95b5655e6a2f79f131227e6409fd9955b0d3
 SHA512 
43e06cc8431198fd451cfaae14adcc457395c02bec8e4018756e84b442f884ff724230cd0e828f36743cb9800e24de8b932ada66e55a5a1c0de7312656bcd229
+DIST firefox-139.0-ur.xpi 373546 BLAKE2B 
03564f7faf2e06767a74bc41ceb46e1fba69edb90772bcc4abacc040331144b53675f0fe228c7c4721c4cffbaa47109397f7fcca4865c90209b78d82bcc3a608
 SHA512 
7ea3e4c7667129dfc4783f77da2d595e044d6623192cb43ba51c0d892f0f082c403c2945c50303ed063cfbf67f68010467e403f0f641dd844252f3bee93a637f
+DIST firefox-139.0-uz.xpi 306875 BLAKE2B 
52697c818d19e411fcc89c2ed7441993142d173f3f1c06066fa7aae94e6b2c8281d348c36a1b8dae679fdd773a6bd0d363c66bdb4130ac07f941865e50a25732
 SHA512 
398f817e89afc4119b669ca37415768925e582df603473208cdbc2b254487fbaa39e85821b7215f8733a350dedb5927b0731be4f9910e2d1a259ac331caca6ce
+DIST firefox-139.0-vi.xpi 473298 BLAKE2B 
1afeb90da285ad5bf657ad0c650b4015899ddd6df8553bf7bb84ef07a8811f0822a0822b0057d30835ad8caddac101d736c431e8d4ee53b93cc8fce30cfb13bd
 SHA512 
b616553b96c708cf424c5fead1cbb7c959ce125ef768478e0ebe8f6ffd815c5ddf6b40541737557bde5c89ddc85f404841522392bb80e3257fe9edcae0d174e0
+DIST firefox-139.0-xh.xpi 276209 BLAKE2B 
335f347f5771877ad65d972df27b7aac64cbd39db6c0f0c2e5dc9848b1acf06e94e22c0ec3159e4470eda6fc5c6065f3c12bf86bdf39dd44310fad6c2f64d563
 SHA512 
f76892da4846770b43dd6ebfc047f536adb0a92b5a9bcbb14ae1c456a2291871eb823115a3f71e999e63088cfad1474a334574a925a3edf36130db9090c2f1e3
+DIST firefox-139.0-zh-CN.xpi 464971 BLAKE2B 
a880f2062b6ad1f93292b14fdb8451e5b7fa5ce81d3151ad61fe7e80842d9a3177509de718838a9a1dadec5125b28fa673dae8a87c90bba4aca3a259340d544a
 SHA512 
3fcee19114e6478d4e2e469c86484863cfbaf81059ddaba81a48631c666d3468ce9f62449f7650ae0094519a11543dc52a26e44e87a052054223905476e6563d
+DIST firefox-139.0-zh-TW.xpi 468022 BLAKE2B 
fe35b36cc2463f76f2cd6b87d809b26bf6805cfdd9d7494c033f3aa3a76c39399afa15d1ac93622ce41ac076b22a284710c10c8c38ba0e588311d695898dc91a
 SHA512 
df903d57247b37801382e8f3c8456d955db77ed9d49d91f67ee414d506ebab5275c607ad9376f2e967d079595d134187507f24f3634577f02c188bb8b3d28769
+DIST firefox-139.0.source.tar.xz 634198424 BLAKE2B 
920df1c0b1389234d779861de71c971582cd0822054a23f1a159c4ffe7e98e09049fac1f202004e6e6f85ea0384c21f0807f3c843c5784de8b0474b6de843cab
 SHA512 
84a2b47f2ff71aac226a774ab0ac9ab8d9a16f5620a06f7abb6648732209d022aef35a9d4873e91ebd67a4fc494fc238524e25c38fad8046db26afda06e6f970
 DIST wasi-sdk-25.0-arm64-linux.tar.gz 115160800 BLAKE2B 
1ce22aaea87d0720d40d46ebdd96508c8fb0593b53c4489022fd5a1a9afb043a26a6e162a992d73454f612f2b6ab01e17a99c189c0c8b8c2d2d68fd96fabee1b
 SHA512 
ef4eff22c1efec4dc5ab199d09d93ee0004f9fa67b32cac0030f8b6a40def10f714391cec8e803c200995dd8bfad3ebad9ec79b4195aa6b2ea61ea47a8b9e61f
 DIST wasi-sdk-25.0-x86_64-linux.tar.gz 114450290 BLAKE2B 
07618828d4c25d67421aa72d38fc49bbff9052b8ecfe0fa9f4207e71880e9c650f458567cfa5bd389d5f830fcfee89142a77d33c29e7bccd1da7ddba2bc47b95
 SHA512 
716acc4b737ad6f51c6b32c3423612c03df9a3165bde3d6e24df5c86779b8be9463f5a79e620f2fc49707275563a6c9710242caca27e1ad9dd2c69e8fce8a766

diff --git a/www-client/firefox/firefox-139.0.ebuild 
b/www-client/firefox/firefox-139.0.ebuild
new file mode 100644
index 000000000000..46a8a5708f5b
--- /dev/null
+++ b/www-client/firefox/firefox-139.0.ebuild
@@ -0,0 +1,1404 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-139-patches-03.tar.xz"
+FIREFOX_LOONG_PATCHSET="firefox-138-loong-patches-01.tar.xz"
+
+LLVM_COMPAT=( 19 20 )
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.82.0
+
+PYTHON_COMPAT=( python3_{10..13} )
+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=25.0
+WASI_SDK_LLVM_VER=19
+
+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.mozilla.org/firefox 
https://www.mozilla.org/firefox/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.mozilla.org/firefox";
+       SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 
multiprocessing \
+       optfeature pax-utils python-any-r1 readme.gentoo-r1 rust 
toolchain-funcs virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}";
+
+if [[ ${PV} == *_rc* ]] ; then
+       
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}";
+fi
+
+PATCH_URIS=(
+       https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+DESCRIPTION="Firefox Web Browser"
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}
+       loong? (
+               
https://dev.gentoo.org/~xen0n/distfiles/www-client/${MOZ_PN}/${FIREFOX_LOONG_PATCHSET}
+       )
+       wasm-sandbox? (
+               amd64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz
 )
+               arm64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz
 )
+       )"
+
+S="${WORKDIR}/${PN}-${PV%_*}"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio 
sndio selinux"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-jpeg 
+system-libevent"
+IUSE+=" +system-libvpx 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"
+
+# "wasm-sandbox? ( llvm_slot_19 )" - most likely due to wasi-sdk-25.0 being 
llvm-19 based, and
+# llvm/clang-19 turning on reference types for wasm targets. Luckily clang-19 
is already stable in
+# Gentoo so it should be widely adopted already - however, it might be 
possible to workaround
+# the constraint simply by modifying CFLAGS when using clang-17/18. Will need 
to investigate (bmo#1905251)
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( jumbo-build )
+       wasm-sandbox? ( llvm_slot_19 )
+       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
+                               <gui-libs/wlroots-0.17.3[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.110
+       >=dev-libs/nspr-4.35
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       media-video/ffmpeg
+       sys-libs/zlib
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       x11-libs/libdrm
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-1.0.0:=
+       )
+       system-harfbuzz? (
+               >=media-libs/harfbuzz-2.8.1:0=
+               !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 )
+       )
+       system-icu? ( >=dev-libs/icu-76.1:= )
+       system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1:= )
+       system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] )
+       system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+       system-pipewire? ( media-video/pipewire:= )
+       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"
+               elif tc-is-lto ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               fi
+
+               check-reqs_pkg_pretend
+       fi
+}
+
+pkg_setup() {
+
+       # Get LTO from environment; export after this phase for use in 
src_configure (etc)
+       use_lto=no
+
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+
+               if tc-is-lto; then
+                       use_lto=yes
+                       # LTO is handled via configure
+                       filter-lto
+               fi
+
+               if use pgo ; then
+                       if ! has userpriv ${FEATURES} ; then
+                               eerror "Building ${PN} with USE=pgo and 
FEATURES=-userpriv is not supported!"
+                       fi
+               fi
+
+               if [[ ${use_lto} = yes ]]; then
+                       # -Werror=lto-type-mismatch -Werror=odr are going to 
fail with GCC,
+                       # bmo#1516758, bgo#942288
+                       filter-flags -Werror=lto-type-mismatch -Werror=odr
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || use debug ; then
+                       CHECKREQS_DISK_BUILD="14300M"
+               elif [[ ${use_lto} == "yes" ]] ; then
+                       CHECKREQS_DISK_BUILD="10600M"
+               else
+                       CHECKREQS_DISK_BUILD="7400M"
+               fi
+
+               check-reqs_pkg_setup
+               llvm-r1_pkg_setup
+               rust_pkg_setup
+               python-any-r1_pkg_setup
+
+               # Avoid PGO profiling problems due to enviroment leakage
+               # These should *always* be cleaned up anyway
+               unset \
+                       DBUS_SESSION_BUS_ADDRESS \
+                       DISPLAY \
+                       ORBIT_SOCKETDIR \
+                       SESSION_MANAGER \
+                       XAUTHORITY \
+                       XDG_CACHE_HOME \
+                       XDG_SESSION_COOKIE
+
+               # Build system is using /proc/self/oom_score_adj, bug #604394
+               addpredict /proc/self/oom_score_adj
+
+               if use pgo ; then
+                       # Update 105.0: "/proc/self/oom_score_adj" isn't enough 
anymore with pgo, but not sure
+                       # whether that's due to better OOM handling by Firefox 
(bmo#1771712), or portage
+                       # (PORTAGE_SCHEDULING_POLICY) update...
+                       addpredict /proc
+
+                       # Clear tons of conditions, since PGO is 
hardware-dependant.
+                       addpredict /dev
+               fi
+
+               if ! mountpoint -q /dev/shm ; then
+                       # If /dev/shm is not available, configure is known to 
fail with
+                       # a traceback report referencing 
/usr/lib/pythonN.N/multiprocessing/synchronize.py
+                       ewarn "/dev/shm is not mounted -- expect build 
failures!"
+               fi
+
+               # Google API keys (see 
http://www.chromium.org/developers/how-tos/api-keys)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+                       
MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+               fi
+
+               if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+                       
MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+               fi
+
+               # Mozilla API keys (see 
https://location.services.mozilla.com/api)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+                       
MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+               fi
+
+               # Ensure we use C locale when building, bug #746215
+               export LC_ALL=C
+       fi
+
+       export use_lto
+
+       CONFIG_CHECK="~SECCOMP"
+       WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to 
play DRM-protected content."
+       linux-info_pkg_setup
+}
+
+src_unpack() {
+       local _lp_dir="${WORKDIR}/language_packs"
+       local _src_file
+
+       if [[ ! -d "${_lp_dir}" ]] ; then
+               mkdir "${_lp_dir}" || die
+       fi
+
+       for _src_file in ${A} ; do
+               if [[ ${_src_file} == *.xpi ]]; then
+                       cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die 
"Failed to copy '${_src_file}' to '${_lp_dir}'!"
+               else
+                       unpack ${_src_file}
+               fi
+       done
+}
+
+src_prepare() {
+       if [[ ${use_lto} == "yes" ]]; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
+       fi
+
+       # Workaround for bgo#915651 on musl
+       if use elibc_glibc ; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die
+       fi
+
+       eapply "${WORKDIR}/firefox-patches"
+       use loong && eapply "${WORKDIR}/firefox-loong-patches"
+
+       # Allow user to apply any additional patches without modifing ebuild
+       eapply_user
+
+       # Make cargo respect MAKEOPTS
+       export CARGO_BUILD_JOBS="$(makeopts_jobs)"
+
+       # Workaround for bgo#915651
+       if ! use elibc_glibc ; then
+               if use amd64 ; then
+                       export RUST_TARGET="x86_64-unknown-linux-musl"
+               elif use x86 ; then
+                       export RUST_TARGET="i686-unknown-linux-musl"
+               elif use arm64 ; then
+                       export RUST_TARGET="aarch64-unknown-linux-musl"
+               elif use loong; then
+                       # Only the LP64D ABI of LoongArch64 is actively 
supported among
+                       # the wider Linux ecosystem, so the assumption is safe.
+                       export RUST_TARGET="loongarch64-unknown-linux-musl"
+               elif use ppc64 ; then
+                       export RUST_TARGET="powerpc64le-unknown-linux-musl"
+               elif use riscv ; then
+                       # We can pretty safely rule out any 32-bit riscvs, but 
64-bit riscvs also have tons of
+                       # different ABIs available. 
riscv64gc-unknown-linux-musl seems to be the best working
+                       # guess right now though.
+                       elog "riscv detected, forcing a riscv64 target for now."
+                       export RUST_TARGET="riscv64gc-unknown-linux-musl"
+               else
+                       die "Unknown musl chost, please post a new bug with 
your rustc -vV along with emerge --info"
+               fi
+       fi
+
+       # Pre-built wasm-sandbox path manipulation.
+       if use wasm-sandbox ; then
+               if use amd64 ; then
+                       export wasi_arch="x86_64"
+               elif use arm64 ; then
+                       export wasi_arch="arm64"
+               else
+                       die "wasm-sandbox enabled on unknown/unsupported arch!"
+               fi
+
+               sed -i \
+                       -e "s:%%PORTAGE_WORKDIR%%:${WORKDIR}:" \
+                       -e "s:%%WASI_ARCH%%:${wasi_arch}:" \
+                       -e "s:%%WASI_SDK_VER%%:${WASI_SDK_VER}:" \
+                       -e "s:%%WASI_SDK_LLVM_VER%%:${WASI_SDK_LLVM_VER}:" \
+                       toolkit/moz.configure || die "Failed to update 
wasi-related paths."
+       fi
+
+       # Make LTO respect MAKEOPTS
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/build/moz.configure/lto-pgo.configure || die "Failed 
sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/chromium/build/toolchain/get_cpu_count.py || 
die "Failed sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed 
sedding multiprocessing.cpu_count"
+
+       # sed-in toolchain prefix
+       sed -i \
+               -e "s/objdump/${CHOST}-objdump/" \
+               "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py 
|| die "sed failed to set toolchain prefix"
+
+       sed -i \
+               -e 's/ccache_stats = None/return None/' \
+               "${S}"/python/mozbuild/mozbuild/controller/building.py || die 
"sed failed to disable ccache stats call"
+
+       einfo "Removing pre-built binaries ..."
+
+       find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) 
-print -delete || die
+
+       # Clear checksums from cargo crates we've manually patched.
+       # moz_clear_vendor_checksums xyz
+
+       # Respect choice for "jumbo-build"
+       # Changing the value for FILES_PER_UNIFIED_FILE may not work, see 
#905431
+       if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then
+               local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16}
+               elog ""
+               elog "jumbo-build defaults modified to 
${my_files_per_unified_file}."
+               elog "if you get a build failure, try undefining 
FILES_PER_UNIFIED_FILE,"
+               elog "if that fails try -jumbo-build before opening a bug 
report."
+               elog ""
+
+               sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 
16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \
+                       python/mozbuild/mozbuild/frontend/data.py ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
python/mozbuild/mozbuild/frontend/data.py"
+               sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE 
= "${my_files_per_unified_file}"/" \
+                       js/src/moz.build ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
js/src/moz.build"
+       fi
+
+       # Create build dir
+       BUILD_DIR="${WORKDIR}/${PN}_build"
+       mkdir -p "${BUILD_DIR}" || die
+
+       # Write API keys to disk
+       echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+       echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || 
die
+       echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+       xdg_environment_reset
+}
+
+src_configure() {
+       # Show flags set at the beginning
+       einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       local have_switched_compiler=
+       if use clang; then
+               # Force clang
+               einfo "Enforcing the use of clang due to USE=clang ..."
+
+               local version_clang=$(clang --version 2>/dev/null | grep -F -- 
'clang version' | awk '{ print $3 }')
+               [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 
"${version_clang}")
+               [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+               if tc-is-gcc; then
+                       have_switched_compiler=yes
+               fi
+
+               AR=llvm-ar
+               CC=${CHOST}-clang-${version_clang}
+               CXX=${CHOST}-clang++-${version_clang}
+               NM=llvm-nm
+               RANLIB=llvm-ranlib
+       elif ! use clang && ! tc-is-gcc ; then
+               # Force gcc
+               have_switched_compiler=yes
+               einfo "Enforcing the use of gcc due to USE=-clang ..."
+               AR=gcc-ar
+               CC=${CHOST}-gcc
+               CXX=${CHOST}-g++
+               NM=gcc-nm
+               RANLIB=gcc-ranlib
+       fi
+
+       if [[ -n "${have_switched_compiler}" ]] ; then
+               # Because we switched active compiler we have to ensure
+               # that no unsupported flags are set
+               strip-unsupported-flags
+       fi
+
+       # Ensure we use correct toolchain,
+       # AS is used in a non-standard way by upstream, #bmo1654031
+       export HOST_CC="$(tc-getBUILD_CC)"
+       export HOST_CXX="$(tc-getBUILD_CXX)"
+       export AS="$(tc-getCC) -c"
+
+       # Configuration tests expect llvm-readelf output, bug 913130
+       READELF="llvm-readelf"
+
+       tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
+
+       # Pass the correct toolchain paths through cbindgen
+       if tc-is-cross-compiler ; then
+               export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} 
--target=${CHOST} ${BINDGEN_CFLAGS-}"
+       fi
+
+       # Set MOZILLA_FIVE_HOME
+       export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+       # python/mach/mach/mixin/process.py fails to detect SHELL
+       export SHELL="${EPREFIX}/bin/bash"
+
+       # Set state path
+       export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+       # Set MOZCONFIG
+       export MOZCONFIG="${S}/.mozconfig"
+
+       # Initialize MOZCONFIG
+       mozconfig_add_options_ac '' --enable-application=browser
+       mozconfig_add_options_ac '' --enable-project=browser
+
+       # Set Gentoo defaults
+       if use telemetry; then
+               export MOZILLA_OFFICIAL=1
+       fi
+
+       mozconfig_add_options_ac 'Gentoo default' \
+               --allow-addon-sideload \
+               --disable-cargo-incremental \
+               --disable-crashreporter \
+               --disable-disk-remnant-avoidance \
+               --disable-geckodriver \
+               --disable-install-strip \
+               --disable-legacy-profile-creation \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-updater \
+               --disable-wmf \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-packed-relative-relocs \
+               --enable-release \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-ffi \
+               --with-system-gbm \
+               --with-system-libdrm \
+               --with-system-nspr \
+               --with-system-nss \
+               --with-system-pixman \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --enable-update-channel=${update_channel}
+
+       # Whitelist to allow unkeyworded arches to build with 
"--disable-rust-simd" by default.
+       if use amd64 || use arm64 || use ppc64 || use loong || use riscv ; then
+               mozconfig_add_options_ac '' --enable-rust-simd
+       fi
+
+       # For future keywording: This is currently (97.0) only supported on:
+       # amd64, arm, arm64 & x86.
+       # Might want to flip the logic around if Firefox is to support more 
arches.
+       # bug 833001, bug 903411#c8
+       if use loong || use ppc64 || use riscv; then
+               mozconfig_add_options_ac '' --disable-sandbox
+       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 JIT for RISC-V 64' 
--disable-jit
+               mozconfig_add_options_ac 'Disable webrtc for RISC-V' 
--disable-webrtc
+       fi
+
+       if [[ -s "${S}/api-google.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 
}') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+       else
+               einfo "Building without Google API key ..."
+       fi
+
+       if [[ -s "${S}/api-location.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 
}') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-location-service-api-keyfile="${S}/api-location.key"
+       else
+               einfo "Building without Location API key ..."
+       fi
+
+       if [[ -s "${S}/api-mozilla.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 
}') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+       else
+               einfo "Building without Mozilla API key ..."
+       fi
+
+       mozconfig_use_with system-av1
+       mozconfig_use_with system-harfbuzz
+       mozconfig_use_with system-icu
+       mozconfig_use_with system-jpeg
+       mozconfig_use_with system-libevent
+       mozconfig_use_with system-libvpx
+       mozconfig_use_with system-pipewire
+       mozconfig_use_with system-png
+       mozconfig_use_with system-webp
+
+       mozconfig_use_enable dbus
+       mozconfig_use_enable libproxy
+       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
+               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
+
+               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
+       newins 
"${S}"/browser/installer/linux/app/flatpak/files/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg
 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
+}

diff --git a/www-client/firefox/metadata.xml b/www-client/firefox/metadata.xml
index 54c445821d47..85dd6c16983b 100644
--- a/www-client/firefox/metadata.xml
+++ b/www-client/firefox/metadata.xml
@@ -33,6 +33,7 @@
                instead of bundled</flag>
        <flag name="system-libvpx">Use the system-wide 
<pkg>media-libs/libvpx</pkg>
                instead of bundled</flag>
+       <flag name="system-pipewire">Use system <pkg>media-video/pipewire</pkg> 
for WebRTC and screencast instead of bundled one</flag>
        <flag name="system-png">Use the system-wide <pkg>media-libs/libpng</pkg>
                instead of bundled (requires APNG patches)</flag>
        <flag name="system-webp">Use the system-wide 
<pkg>media-libs/libwebp</pkg>

Reply via email to