From a8e9e0363c315f7a71da1cdec6324098a0324741 Mon Sep 17 00:00:00 2001 From: Joonas Niilola Date: Tue, 27 May 2025 14:43:07 +0300 Subject: [PATCH] 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 --- www-client/firefox/Manifest | 102 ++ www-client/firefox/firefox-139.0.ebuild | 1404 +++++++++++++++++++++++ www-client/firefox/metadata.xml | 1 + 3 files changed, 1507 insertions(+) create mode 100644 www-client/firefox/firefox-139.0.ebuild diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index ef598f8982360..c350f35ee166c 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 0000000000000..46a8a5708f5bc --- /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 + &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 54c445821d47d..85dd6c16983ba 100644 --- a/www-client/firefox/metadata.xml +++ b/www-client/firefox/metadata.xml @@ -33,6 +33,7 @@ instead of bundled Use the system-wide media-libs/libvpx instead of bundled + Use system media-video/pipewire for WebRTC and screencast instead of bundled one Use the system-wide media-libs/libpng instead of bundled (requires APNG patches) Use the system-wide media-libs/libwebp