diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index 90afb8cb50b44..42adf94fa61b4 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -99,6 +99,107 @@ DIST firefox-128.13.0esr-xh.xpi 452433 BLAKE2B c330ad76a270e7c94a9e37d3f3d6e6cdf DIST firefox-128.13.0esr-zh-CN.xpi 686325 BLAKE2B de94a7da3f1cf245ec7f1863573a57f46530dc38feced9cafd647871baacc481ff479452adc8baf5a47d7d663a7e1f0e503484c0e3afd5b31fcc5c62567e9f4a SHA512 5af6435f6d5fe2cef242410fceb72c7a0047f0bdeac550d0f473a69756f9cc4050ace096e8a52964e645f1b8c15c0dcf7c1db081861975a63f2711b712b997c5 DIST firefox-128.13.0esr-zh-TW.xpi 689138 BLAKE2B 213acc88fe7813b792999815157c07fef91f73c1592b7025aa745e0c848c85d7bdedee7bff0870cdaeff217123b355b45be46ca66cf1dbe1410f288b6efa3bb9 SHA512 cf0db4539410ee101f853ea6e4eca48c8304506c0168846b29ee630538b2c628b03693a3738b24e9bafe5a3203ceff487830a8fa2138542811a337996aaa0024 DIST firefox-128.13.0esr.source.tar.xz 560782432 BLAKE2B 1be2fb1e76167f83061fa805dc09b2f32dc7c813655cde72eea4b0ccc44a02570a78e2f177c909f2faed96eed6f47d08b783cae3f19c1d8e44dc8e531eb1ecc2 SHA512 9e6f3af535e0904219bcac947d458789cc43cbfaf476ac287328323662391eaaadeff57b244599acf3626a2fadc0bc41b70d07e33ca6af4412006ad01ceff034 +DIST firefox-128.14.0esr-ach.xpi 482242 BLAKE2B 30635f4251440d12bf07b704856bbaf78fca6b4dfea7a28c05e8be1abb1026a526ef98c51f0c2ec3382d381b42d401aa6714404e4591756d91c403a365c63011 SHA512 b0836eeb7ecaf61ac85b60ff35bf439d0b130b24076684b6d79ddb6c4a47be0eb822da42a5ddbbd5c61ef302701c2e0310158e0033ebe17431a4b20f9ee2c535 +DIST firefox-128.14.0esr-af.xpi 446594 BLAKE2B a066b5af3944ebb9853b4009fffb1208ad04eb01bf8ffbb39b4887fe520f04bff6298453bb4e93e38f40ff54242dba7d5e83535780e935e6407f451e0d3f332c SHA512 ccc3c484181b88ccf61fcadd74bddb84af116f27c094b2a18ce9697534e6d1e90c1d290260386deba7d9f0a3f6e3261df83c7e4f15965931f9203bd2b6312b6e +DIST firefox-128.14.0esr-an.xpi 526057 BLAKE2B 740cfae51375c564bff7e0ffccc28919d4119e0761e98ecd198b4171beead9247649c013fbf8c90680c6dfa264d45accdc03b6b55aeb0bae05567a2c349b38d7 SHA512 cdc7858dd510fe8d920413e3c317da138a808f9ff2864a802fa412ee8eec980827f00baa6b53f4f455df3aaeabd74c4fd74dd25030eeafcabaef4ace9de60af0 +DIST firefox-128.14.0esr-ar.xpi 650457 BLAKE2B a0c2e0dbdb0eb66f9e90283a363834f8b574f464381dbc649c5a6a1b77a2f161df7214857166ba4eeb1cfbb66769281e9b5dd334aa0001748e2f06e98ffed7e9 SHA512 cd7f6f57ef660eaac8697758d483303543de6cf95ceac2d436b50336501e3fc947964a1434ecce32e0df03db931a17eb5d79a8d7829c3d96f18dac428e9ef11e +DIST firefox-128.14.0esr-ast.xpi 508564 BLAKE2B 8b0265ef8de71016caf88943638fb6ee98389178e4c516d8d47a05d159f1cc431e1d9be341116b51e44fd7e954fafb98778ecb8915424f7f5bc62a19894fc7ef SHA512 b87d5f42824867ee4861f4543247e2896d969503b903f668489df6b6a8fb658b980e4b3e8a1856ef1cd0d023df1b2549602d11a5182c291e82542407209dba94 +DIST firefox-128.14.0esr-az.xpi 509838 BLAKE2B 23bca7684db3d25f01c21c111bd5bbea8d9ac52d8f65c2f9caea7cccbd165ad6e73a6b7d3b7d0e65bbf7c990c28937555fda09fce545d0786ceda4807494fad1 SHA512 acb630eaa7059b1eec744d35f5adb7a44fbf058edbfedf56099bb8a7fad9e7c753f3f8eb215834cc1f15cb12e4ef47ec974266c5ea4a5c5a59ab677b162f89ff +DIST firefox-128.14.0esr-be.xpi 748087 BLAKE2B cac216e90d166f81a290f31b779c1b9dfdb57d15ca11875f23192b95aae202bca20921367c8d3a4d08e2f4052f217b3d1a894179becebe103a1cbf83b0f07977 SHA512 337085fd96d59a44e4ac1ef21cbda76672f50f14706b1505487c1989412fc62db7429082beb27a3dfb326f2a7e428dd573c26f5573cd8df67fbd4da50211c310 +DIST firefox-128.14.0esr-bg.xpi 672062 BLAKE2B 1fbc0a9ef5497607927552d6761c12fe0688629267ca5415064e94e9dcc0516fda7ff2163e74a738ed65dcbfc4457a14efc36aeb489ac6728c95ceb0b686981c SHA512 4606f4ec4f206fdf1e135b9d9d1b5b83c5b409e1631b30705f8162f2159bdba86026d7b88fb347efcf6259bb2f2fac4ed13456310f5526ac74b568724ead0874 +DIST firefox-128.14.0esr-bn.xpi 624740 BLAKE2B 5c3711111365eb95400c8baac912ad57cc2ef0657c3a7567064317f08f840fd0340bad95204ae7886b43afb7e9c555ae79e8f0ef6f09629b47d12463ef38146b SHA512 3a8c06587b38d0f1f6b5b78de42f43a54cd8c15de5bd6ac0db5da38586d82766311e6906c892369bcba9e80b52e61e71e45cba003d65440913bdd45e38fe8bf5 +DIST firefox-128.14.0esr-br.xpi 598755 BLAKE2B 43baebfefc2458cf9a76808c81c06902a2ea56f2f15865a30a0746ffa5f128bf383a0aec0783adfb09530433a449d1e2098ea64abe2d0be7fc2711ac170ca59d SHA512 71ce7b6879d15fbbbb9fc39a91bed51c02b038d27ad6e3789a6bc3d3883733a4b251613ab4d844c89a9da095b9b8d7190b628da3212a4c9a084d23b3f53a6358 +DIST firefox-128.14.0esr-bs.xpi 566004 BLAKE2B 38c3e50edc457827b19e244b85156d1f55bd8f9cfa1b9fa4a31ccb01ccfc54da841be841db956e29f0836631a002d91c9bdc2cff420d34efb2cb69c0cd305d14 SHA512 2dab54be041fc8c690b41f424438931f41bc9e10c2700d46d92e86b71e8b277f28b26835023bddcd36943e9fad41021c7d01c68ea5eaaf48d4cebe7c39493410 +DIST firefox-128.14.0esr-ca-valencia.xpi 561150 BLAKE2B 2ee2c208e07caf01ccf001bbfc0e056dcf8f94623a09d2182cfa8e41464f8a391911df7b7b8fec77ea92d074853e43f46fd07b27b3e3966e6a44f7b4c648f111 SHA512 c340ba18423f31c0a7b12685cb068f788b1cd408b8da0bb5e667d464f2b932c4903148442bfed38e46d55bb54076f9ceb7aafd468a816f1cdfe568e407d400de +DIST firefox-128.14.0esr-ca.xpi 609974 BLAKE2B 5c28f8bc6289ba283dd51b7fd3cfe2a46e0723cc2700e6b3499cb3fe41c81537da235c7e167404c7c8517b3a8395f2c67b0db86649efef4aec60fb77435ccb53 SHA512 4edb7299c9202a124ca1fcef756ed8bd3d399a29a7a895e3dd3771a84d3d56a4d2f94ce13dfc94d876e6ad8402cb3353d168ecbe2a0c82d8558f1f32724c461e +DIST firefox-128.14.0esr-cak.xpi 601493 BLAKE2B 49e9ed8ed05768707caa055ee831d81b0c4b6f198d47dbf2bb663788582ba32795a8e4937e59a2882710a2e63b5c40aef4a39cd5e45e3707d1b98ed64b4fadca SHA512 69f4c72387860804d008f1bea6d03337b47e6d6252d5c9bb3ab336da3db32377a6b64c1046adda8c5bf38d2914289a492167f087d8c5e3a88c4ad199be94b726 +DIST firefox-128.14.0esr-cs.xpi 690643 BLAKE2B a5c9f79b70aafd3778ba9d59902d1077b7ed90639a56458f401c8da85265958bd6d169c0574f0372c454fa39c0e93d9b7d76e0945955d4a6ef696bec77b168d6 SHA512 1e211a4c2bc9bda87f8ddc278cbaf2021b2eb30439bc15e79c37db1515cd4cf7387b040e84db8b3a6694a98dc5c954879a2d002fd7fc4c7c7f5e90797bf42f9b +DIST firefox-128.14.0esr-cy.xpi 650604 BLAKE2B bf462422f29cbcf48f22926264a259861da3467b4e662eb5acb965f87bb27cbbd5493a0b0394edc73b0fb23e34bc75a21c0ca201a4a53592f469e3dc8331629d SHA512 c002a7f58e466396e4c191f227b94a020e91416d402c75ca4c2845b2c6afb6348fc914d5cb90a23e54af31dcc02517431bc555c59c9932fad3369d5a5c9e3377 +DIST firefox-128.14.0esr-da.xpi 638632 BLAKE2B ad3469029d5c109a805e3bdfaa234eaf2f1df658552363a17ef61216bcbb99c44e0b4af7b22b80893c0f9879f690aa3c2fd7d84b8856162b9c68bd51a4ee43b9 SHA512 4c53c0191c464d077ab4fd146842012667373013280e0a06207c0e050659cae9fc24dc9ed3b6ed6ef899d17d0e12d5456cdf0e429cd77c843d043ef04d86129d +DIST firefox-128.14.0esr-de.xpi 663134 BLAKE2B 7fbffa65f30946f1c78b66fed713d4b7d1f74845ef53aa770bec9d15b086426cd5e4a4690b2b35261091ef3ecae6b97ac8d287ebb3610a90f5662b9b3b343213 SHA512 f05eded3f9bb1373abbddac65807325b91a6e29e6b57669aee5f063d2442c8b3622c611839ed78aad9fcb3594b09f807c883b316f008cfe7abfcc8b008699038 +DIST firefox-128.14.0esr-dsb.xpi 679871 BLAKE2B 5321be197585f111a9234fe35f729f4473919c60bff2b2fac172ac2d2d7ae35828bcb41ceb54fdc339de3e885c21eefbef822adcfcdf905fa5a667bdf74dc925 SHA512 cb1e34d9f72bbbb297e71644e04aeaed13c8625407e0519dc6ec681700a75d85cfbc9afc554cdf4f53cb370c8bbb968eea71de3f4aa5c3ec595cd8a9e01a32b0 +DIST firefox-128.14.0esr-el.xpi 764541 BLAKE2B 27e32d7ee3cf8dc6ce16818d1dae5d66e9c1006b6e701b46228d723a91c253d34cf08677a0dcf32c1fe153da1bba039a3617308569b9dc725becb3eebdf12703 SHA512 3d1f8b645a3072ed1f334a4df997081e7b585eb3b10526a8089cdd3649794150ce3bc6edf894335c221070b7ee4dd56eec986db769c55becc2670652a9de2954 +DIST firefox-128.14.0esr-en-CA.xpi 610420 BLAKE2B 1f7da07356a18e97a702349f8f944e8d132c5283164bec40d348d9a485b6131d582f6c3b3d8c101a6e0fde345bf121e0fac7b8e192163be7cf5489e70abd48a8 SHA512 83e202f6539305831b3fb007775def6814e2bb6d2e708a4f26766051bdd6b8332d1da7cb255cbdda76c1a2a9f43e507fb2d110cb475b5a5aa2625d94453440b5 +DIST firefox-128.14.0esr-en-GB.xpi 610788 BLAKE2B f7967cf491e7c36a040e010b6014a37e36424619d4f3515a127c3d1c3abf9f8eeacbfed5e705e895b2c613ded192b67ad63edcd5c278ee0c3be182b0f6ad1782 SHA512 67a05cdeb3444ca8e659766454c69e879e198ad926b113250ce436426f75e3e0fe07e7ff11c1a749ae92a1c3e9ad0cb3781e172a7a298041767be47d0cd3b189 +DIST firefox-128.14.0esr-eo.xpi 643526 BLAKE2B f19e7755f224106bb86c5b784e2bb16fb28860c471c17ca39f778357c45c32de28a625bc80a7f201126baf88673bb79125b8bcd14295024fb376e23a4efc9ab4 SHA512 96a2b47f4dd469251274af9b55137e34f13bee8a938068492aa4752e6c1231b1bddf01cf75e081ec3b1228cd16cb95b09c2cf0f752a5598a9decf56fafc017ca +DIST firefox-128.14.0esr-es-AR.xpi 655632 BLAKE2B 3ba8c951203b574bf3594cfb681fb12dd8124da7efcb30ef6d59feccbbeda0092b5d89627b6a420830fb32817ba06dfab89ef709fdb3147a3d3b59a5b28df8a8 SHA512 7bc7416ff77aa8a27aeb5134ade38cf07790519b39e22df453a1a9ba476c8d93793fc81716567192d06f3c79a1a68d53e8ba1ee89716d3354e7902db56a8efee +DIST firefox-128.14.0esr-es-CL.xpi 656071 BLAKE2B 8090d82da53a8671a9108f671a864a6a9d71d32ebee09236351058e5d27a6aa9015a21862e0936dd9882707444dba3d79c8376bacd231d48c884f8b9faa1753f SHA512 d88b0bd7c2a62abc3668149859ef1bf99a19d04ee298aa608181cc6f663b5032d3e907f8f82f0196b2427c8148176f5bac4c6dfecb50bfdb14c1e384897ba16e +DIST firefox-128.14.0esr-es-ES.xpi 655186 BLAKE2B 6db65d480271f2aa52ec1609d4a999c211ce5cdd79bf91abdada60cf138eed3073f6729d0debe26aff4abe79dfc1da15b84c806fd33715ccad755b3808f2a48f SHA512 cff516ea0a371e4d3185ce4c6a1d6d2cab45f08954478a22d6c3b77fa294d3954e3cc8f7909918dc552dea14f6836478ea85684cd20c7a852ab84e389b1bd840 +DIST firefox-128.14.0esr-es-MX.xpi 657402 BLAKE2B fe995a34e2996bb0d1b393215e3e5b474ad858ec008e08ba32dd35fc8afae27b28761ae7c3b9470b2124e942fd9f250c4e15712a95e099e66d4e4912221bfeac SHA512 7b2ebaf2a586fb585452532709733a8d374fa42289455e9528ada74eba836709a4be3de236d3af16cf183e050bcea04b067ed345fb66459888d091faafe64802 +DIST firefox-128.14.0esr-et.xpi 556260 BLAKE2B bae38d25b3000d637ea44c80bb07f879188b95416ad9951c105120e4a790178a6d0559d08bbb6892dd40347d89394443afb72288f7ba19b547788e576e2b24a1 SHA512 25d73811d6f8a533dd97b0bffcc0410eedd28ea5fa8acf769a1d3174eee8e82b0aa9dbf757fa67d4593e3e098990f8ca42269a2ff9b967e65a1a939e2a614fe5 +DIST firefox-128.14.0esr-eu.xpi 623950 BLAKE2B b4958415df2a9a533cc497d85e0a6b2e0e3098264d0c143ae7a011958781a50fb86c4fd503f95d5b083a346d751d20d70d346b151d6c01576e0c835e3e5396ea SHA512 f0cd2b93c8eb658ea9a2797716994e353ab1d5845cd37cb1496b4599e6adb30fb72b9642f17949975bc1e986c9ce4572379574ff170a0d7a180381ce320e77c7 +DIST firefox-128.14.0esr-fa.xpi 631012 BLAKE2B bdf9a65bbe71eff9e9af95295a97a9fc0f7b4424128aea1952faa41822047280680f5b3cf06a0820e0971088a5226cb90bf41cc12843cfd5861d17eeeba1cd70 SHA512 e99ea8a3792941733323e01acff339caf8e2912e1ce5ced8163ac7882087782ca1d88e1a234f6dc7f1a2687e19a5fd3122ac0612483b1173adca56c76497e78a +DIST firefox-128.14.0esr-ff.xpi 497849 BLAKE2B 82cc385de6aa372bd7b91e6b1086c7805566e7d219e3e3a1920bed8bfe0894915e7aa031bd0ef031836937ed1dfdaac78ad4841a65528f5bfecb81b1c1f9056c SHA512 64ad8152d343b2d3e4ebb4a2fca624c410478580a9f1a68c068f76d15214166c972c1230ea10ee27d0f8db23251a45bf50bf60b63d9e5ade588a539709901321 +DIST firefox-128.14.0esr-fi.xpi 633882 BLAKE2B 97d2b2c66084b5bf961e2ed9db9dabae260b69d5e4d4ebb06255d883a43cbc6c8ff21d8bfad78447dd1e3f9f4bd4bbb0dd9a723f73f726a3273d39155e08b766 SHA512 b04620de5d9198089768a433a26ae3e216a153d8c1dfae689aa941b50118b1facdfbb90e1cfc9c2cc12694f884a334930ba1c24488884d62e488a81f16592c83 +DIST firefox-128.14.0esr-fr.xpi 669628 BLAKE2B 89d38637b3c2521fc94ef1bdcadf53d3fa289b1bac13d0afd0978757dc87621c106747dde3ee3e4d9104f429da5e5ed34b3d1cddbcc3fb23af97252e4f20155e SHA512 5f0b63582fba04a68c8c15c8b995527e094346e067f9d70519a14ed9dbdddcfe62c46c06f71e11102c224aa04b2744daff865ee047c87f5d25771f74e1db54db +DIST firefox-128.14.0esr-fur.xpi 651569 BLAKE2B efcbd00e84ac1c59ef2addea861d27292d222bae4039384251b9a52dbf18263ac430e850098ae368376375bbcfb6511cc008c59ecfc91c1e876deaae21ba8217 SHA512 a59d69221f44f77b01ac28be3a23e573c3cc05d4635b773aeefbe20c29e0b69f1d074612c229e4ef0abe160b3707e0ebb24cae6284f7875d3b292c7bb768e1e4 +DIST firefox-128.14.0esr-fy-NL.xpi 652082 BLAKE2B 09b9dd2c39b475d20d72fdae5f3201845ca2b633a1761d3d3872e7aabcd8ded7015c9bb6aa518189d815c834dbe957ceed8a886f3891c5920e190005d2b674bc SHA512 93d44838baa83525b5d6236de7ddbab777b64f766852778c296940c417be41c1668c496325669a6713e806810c36d0cafad0bea2bce14a675bc62d2b4b15cf34 +DIST firefox-128.14.0esr-ga-IE.xpi 490831 BLAKE2B 81cd1fef26425ed11994cae2aba6304c51b594b0707a18f4dde3f5218ecc64016249fc9ab8e383975e435474c15d50098bb379a59cf1b0260dda56fdf61b6c5d SHA512 95d6e330fb196553f5890716da707afb92ba38d12b93e03e7fb79dcd8ce58f5a4215dc3aa7e1be717f0d9d26cc3f19c57ba3374310fc966ec94d5fd7c2d745fc +DIST firefox-128.14.0esr-gd.xpi 609627 BLAKE2B 4429c0fda187e31ff2e185506d7eb57cd3f7b8d75ea0ae4ebb0eb57f0e8b170cd6638e2da771afefd9851a976828a8ca6415d52df2d866ad1dbc37001d1a883e SHA512 858de8ee8ca1bf0281090d159646237f7f54955d288fa84990d0bc64a4b75f82474b45ca31d991373921b6e77441284c1d3aeabc1533303111aeba80ee369751 +DIST firefox-128.14.0esr-gl.xpi 615552 BLAKE2B 016106f3f25bfb494c0a5589c611336ad58feb99f560b2dad67a7d8f1efcbed49ef3d78f603f9e2006891a2928985743d45c74716a450f0c78c83615581b28fb SHA512 b7bb15dbfbdaab8102a06c378874b1adf4e1f98a2016172a138bb99d97d3d7764dabd3c54cec374650791988a63a3f240ee0ce57d805c11181ab91c35180b2a1 +DIST firefox-128.14.0esr-gn.xpi 659912 BLAKE2B e3aedfe89c3d2804eed8173b80d46389dc8ff728082a151fe420669f61f01662ca28557a500788e849e561aa81f7a883cbc3556f03ed56708c6aa04875434528 SHA512 c249b8756f850c07f85051bc887bfbb6cce3d8d306524a28ff9a47123657a663a04b09899d736233edc9b3c1b7a1d9620b136bdc7e7c9800f56f40e9343dea99 +DIST firefox-128.14.0esr-gu-IN.xpi 552338 BLAKE2B 8e5ab3db7d66e917c5a03d5e79344985c8093a5894074f980987220d67a2beaf82b494af10fe4f307c0da2644cdcf09d9b3cf75c6add496c5930853fe51a74e2 SHA512 ab93d9676d48ed031da2c020da8278750463c9b47277ccf23d7fa2605a2803105988585aa6f5a3f3e5245f2c559807a9a3e2d690b02a93db20d9c30e104f5ca4 +DIST firefox-128.14.0esr-he.xpi 659483 BLAKE2B 4ff796526c3ec5e99e6a1fb4cf0d00ed22fb866f2ea31738af0207e49439429c30ac43af092cddfe15ab05227cbbda779b1fb9f53f73a0798df00bff454ded03 SHA512 6535df0475bc83be5a25ff7bfa144d1679f64ed9ed93b41037f321e48de4fcc3a1a446a71aa5641a3ea6af5853b08137f83236d788cd2e268bbf5b627a760356 +DIST firefox-128.14.0esr-hi-IN.xpi 578986 BLAKE2B cdf7c3edef78f1f2733d676b0925a46d0fba15587e6785d770684463df37ff1cf50848c172db5cab710ea5a262c1f9eb2fe54c2900c12ff41e9e29de0e148eea SHA512 8ea4765fc562c5c6b8ec46da5914bd44eab026640b68299d061267a54d68b491e4f365c170b373b6a0bc7bcfb11900fec1db5a28b4fae21a93062ac6fc87ed36 +DIST firefox-128.14.0esr-hr.xpi 645457 BLAKE2B dbd2b6dca13ca101c41025fdc2bab1d98cde989451c70b6fbeab9dfe2a3b648353efb9f2986812119afc1b839033cb617c4eac577917ed7862790330d79a8549 SHA512 f44c02e020972559e357c4b5a5a72ce6e8a88452d07f984572f5f9d514c3e9f08fc4f1321b2a42cb984058f74038f03bd88975b812b09894b0227ebaf81101ed +DIST firefox-128.14.0esr-hsb.xpi 675866 BLAKE2B 2ab8f53ce283545ebeec002d85502dd69d30e353c1d914a8a933f1c271acb57e31d57ee3e8517e9cc96bcc0085b1907d68cfc2842e0cc83d02792148366e0327 SHA512 eec7eb24923e6e2f41f30e1de49dd14e2977f0f62078181d360ec1a82dda4c480bc7ec95ce64cb77ccbd7a82643a3369042431fb00d15bbb2198e9ac0e5a39d9 +DIST firefox-128.14.0esr-hu.xpi 679679 BLAKE2B 71a6c3feb908fd3c86869a27bfacea39b98f276c8a8ae6a5473174f890a64de8012075e45ce8e80435997688b2e60deffb9d83f7d25c3a26ae376f26f37fe79e SHA512 77fed5000653ecdb3ef0f385530929622c1fb901501ab201412299558187c72ffa46a88c4370a2a45b367d38ba4d268e3c0d4132645f8d4f56d56f4d28001b90 +DIST firefox-128.14.0esr-hy-AM.xpi 664455 BLAKE2B 7162b9d454096c1d1341c2512f492c3fed8796c3da6051752fbc55d9fbe664a17aa168a3d428050dae577f55ad5820e7a45d29219c56035bbde31fbba8a52d60 SHA512 a91f4a745d3a99435b8c31a5636dc677a8947dc8cd36e6ac8326e6bea1c5d3da460306ffbfb103e934a152a0a8d6cb9f5f7011b45590f7dc7ce772259e1297d0 +DIST firefox-128.14.0esr-ia.xpi 637955 BLAKE2B 062f23a492b91916d69d070d2cdebf725ee7960b6adf50bd4a25f28f50b645c5da4c1e66bba91f775d6f83a0e5fd732edbb0fb1747616761f26caacfaac89b69 SHA512 806ed9c6bf1ee4a9b763da9a682d3676d17658c090a796129272812beb6cbcd1e5ee979970e1fef86612ac5a3491a9449e817890650acf13707932263b191c28 +DIST firefox-128.14.0esr-id.xpi 625997 BLAKE2B 600e939f3173ce052defd2bf285f9e0d06dc75e52620db9e206b2a8e06dfb77f7394b086999b63b0c04be6baea0c7f7a64b83899c2c93aa3f836b56cfc9155e8 SHA512 4671f0eefb2de7d163b9c5c1578be6764d0bae1162b3f96b910029bb73dce4e48ad82dd14399e545dd34f828552360d1d3863c155fad0b54dd4b165b9a822500 +DIST firefox-128.14.0esr-is.xpi 646733 BLAKE2B 26f2eadefa364767c95011dfb0a7c26d24e5fcb0f60277ca9c6ea1d1e6e2afc0ed1013ac28884730c2228c376eb329aab17b1421bf31c1a7fdd572507ba72dba SHA512 cc9dcffc21bfa2a0393a2a07984754b9609337d2502057d464e929aa89367b0c765c266dac012999193201e05e14c8a39f77d8a41bd7fa7824ba11b74968e936 +DIST firefox-128.14.0esr-it.xpi 648861 BLAKE2B a87cf55c916a652934441100fc8ce3c4bc85d26a6ee6bfa7cfba6023d083c903058c32cdb7f381c8ef3a445e6a86606a5d3fc983b0d09170a2da550c16ccc9b4 SHA512 b9f3fd8105d98c335b807982989313f07a71f879523d971234a6d4c5a063d099c1f597e5a7a744c168dec74ef8b7c943bbcbb27dbb645309cbaec4c86fd91f12 +DIST firefox-128.14.0esr-ja.xpi 704125 BLAKE2B 2c30827be7576ec63820b4cb2f6eafe14f71eb3e855005d704da0a9206919fc1f71505208fe8a014fefb27cdd9880ee7fbf1c53c0a6e1ea12d519b55fde2edb7 SHA512 a4f616d6212b7187f348a5d5993689cba2d5ffa5c59af6c84a82f14ea4531aa73c5dbf8596a53c1c6645687d753b2d5756fa1d7a7c281e233cce31211982d02d +DIST firefox-128.14.0esr-ka.xpi 714514 BLAKE2B cac962dc16ca27324c10344a8da7a27f7b4c239c5c0d7297b9d59ac76a2f27e6ebf21f99f86db971ca4781e87828f922e2a080655d930afe0d2ca844d4a0f71d SHA512 514597adea7c0a9e5b3c870f30617b9c6ed3a5db7296ef65bea6a5c69d31db088acd4f09e116af3b362447a3ab5e8e02d133526d117d1d226229d98bd9713cb5 +DIST firefox-128.14.0esr-kab.xpi 626276 BLAKE2B cc9c93e15b10631b6ae406ce333b2993b2ae95d29aff358668b344499faaf07a0c81a40f46a2ef5a752ca084caaee6532c6851a75ea18ff1ecf37e70836b1ccf SHA512 52915391fc33baaf0acb72a7780c4eae96f546409d7ffd612915d763c36761fd397bc1523baf7562a203b8b579ca4cf1b5f8b189001471200129dbed792fe192 +DIST firefox-128.14.0esr-kk.xpi 734549 BLAKE2B 9cc6bfb66986cffcc5fa0c6448f902fceb3530058a5d633ff5f549e20fc1757165014bb4fb69c81b855a9f6f914d673c2caf78b55a68b2465abd3831e5bc8f1b SHA512 76a5476df87a6a85910ab22d2f25c27ef1d190c5ccb490df9bf78feb7cb33cf9a3ea4054f96b3068629a0dd35a0cf7f6b124b076d37ddd1fb99d72fcaef34c3d +DIST firefox-128.14.0esr-km.xpi 543174 BLAKE2B 854ee493a1e0bf16635ca31851015ecd8faacf1028914f4430fd5894ade0ea39e1a2c59e363776d632df1c2790112b1fb3cc0d9dafee21122883b25fec0f063d SHA512 7c7058c03a290a371c06f5461e774944b0c0d8599d62923ebb70f672140ba31694d729a97fc8f1f95e7bfb3fe160b93918c7c43224765ecad6b0d3753862e344 +DIST firefox-128.14.0esr-kn.xpi 520332 BLAKE2B d3938d93e8bea92cd1be2dbbba6d91e5fba5238d4b2c3c8ad3727063083f34da253cfe103e49b59ed6631300ec7a4dc0cdef483a11b0aa481703f616414b8e8c SHA512 c841f1794e088c89a3869018c304ddb9dbc494eb77058584009408c210bb9a15fb9ebb22c0922a699ec9ebf3f9e0ddf97c5943d66e769695ce2a884e797ac38a +DIST firefox-128.14.0esr-ko.xpi 690557 BLAKE2B edcf351ef22c01632d71f8f5e5673c779b2cffb62a25c2af062ebb8974df46e03d303a5ab8f40d748f7bc34255fe4061272d3bd5330a4a7b5d14ff2b6d9a8b90 SHA512 c981723151086ae3563a274c60c91a727b2b6fcbb349b81349afdc9291ede145f23e90d991af35435089fd32e672038c0b997b4f3adf01f5388ddd616a65c17e +DIST firefox-128.14.0esr-lij.xpi 506299 BLAKE2B ea05bb1941b6ad141609d4bed36a96ba156fe711a3edc9e1e6911def483172107e54a77b1017c19e2bb342bdbd324b6e56afbac47875594846384622010340c7 SHA512 3e903879edb792e3dbe178a6d93ab05ea0ea7aac092192ecbe5344948e233bd4661976e8bf6a25d194259cd6e4f4fb2597bc49612c5754d59254294e7facd77b +DIST firefox-128.14.0esr-lt.xpi 585999 BLAKE2B 6f24c1bd11269679f75dd441ca8491360b1f623b5b08743ca4185eb6d6b19b9348d165e10a13f6986733bb076ca9cb12a9ba1e16ec7e2c14f1eb045ea1f09f8c SHA512 9aac27217b31b16dd3ff381bb8fbd9ad852257e656ce22b3afb4961f72148589998374f95dad914135f5d1fbbfc432eab17f38629d1f7c15e3611dab336e219a +DIST firefox-128.14.0esr-lv.xpi 595101 BLAKE2B 6f63fa845919ac9edaf3a155b748708677cfd7a5c19878c012123eaa448141d78cbc6b4c5e90cc67a4077a83eba2a790205663f45825446ef02d5c76f56a798c SHA512 6619eb8241c1cdf21eabae62b4751562a0e5d165807f06955e1f166c41900db1126bf7a35dbba5482d62d300589c563e432bcdb1fbe1c719e3f209c78ccc2f5c +DIST firefox-128.14.0esr-mk.xpi 511083 BLAKE2B 2302b90ee98bd71d8a905012aa7fe936d1576dfca51e5920adb11af8baee821da2ed0ddaec99a694565cbb644545b3809bbf3c48d6b0d1cdf5211d5f90baa327 SHA512 49148ed9fc329f58b00d2bb98b908ece9d8f390a05c855dccaf1c555aaa76fd469fef9f4f0187a9042b603f5d448de0815f4c80b378a9491adc151b0e51ff547 +DIST firefox-128.14.0esr-mr.xpi 552813 BLAKE2B 8304c63b947e667604f50674c1e80797fc04748d5b6ea6f2c0e72c17bedfbccbda2b8c80de09ce04d12baf4fdd3e573a96d8ce1157013288c17cbf9d4ac4ff88 SHA512 3a3b34054e191039f66aa99ddd29a21ab5ca3dcf8c9138bf3e5548299623a73eac1a0a973983ae34b6dcfe8aff804c1e7463b3412d441e95d000ca8a2e5c264f +DIST firefox-128.14.0esr-ms.xpi 477965 BLAKE2B 5853296f98663280cd2b5a6226cbd9d44742fb43f75e7af3fcb90e6f3696ac3deddff9984f8d2924d5ed6c5ce4fec948dff35d35cb2551d0d500fe2e100caeb6 SHA512 697c6f5dba41bb96ef2fe26f97b5d710508d79dbd3a08ec5c063d53f2e5dee8bec79a179c7abc6e2500daeafaeb102ff526d88f10bb5131ced612e771be7835a +DIST firefox-128.14.0esr-my.xpi 540060 BLAKE2B dad888b48b99fed310611883ba3a01e3c81b120ef8704c795ba22e44f3a0ab6b6a967a07e3239ed93bc931fc8133e1e0b8b3bf35e9636f97f32d16329957394d SHA512 0eafac9d8eeb974bd619e692872c5d05fe910a7ab1272cd6f2fcc838ce9ce8cf06e57c63ecb998a28a75de97f04c3dc7794be134b4eb592e1098cc791714fe5a +DIST firefox-128.14.0esr-nb-NO.xpi 627685 BLAKE2B 940314d3052a79493e902fdc5b886107d0286cdd1f10b49cdbd6ea8217d653bf5c8945f92d5f118160d27dadd575466d6099c067ead7355e9e665cef667e3a91 SHA512 20868b653f869cfa3434d34b9e9a108b612fbdeabbb9b62956074a6897bbdaa302e75148bf02df8e32b4f62dc46affb1873a31b0873377b1567340b41cdba299 +DIST firefox-128.14.0esr-ne-NP.xpi 543838 BLAKE2B b19b160f77747fe750380b749d8e8f6cc3449ffddceb3cfbe29b9785a3e486c7914c043e3a6917f6159d2e7c3aa0c5a06087cb01b915892c36df835bcd60aa40 SHA512 0996d6df93d5e91882caf4423a149f6a51a9f37ecfefb9343ea851e13ba10491906a5eb16921b642159d1bb444b4390fcc6493711bfe0c5f60f6b71532cc9d21 +DIST firefox-128.14.0esr-nl.xpi 645186 BLAKE2B 644e4cd196207b6a309916505dbf01608d54f392f35d6e9d5f67ab20d7eb5ce83aa3d83561f13ad22e140aeff76aaa1d9b84b667957fe80766336c421bb5a8f0 SHA512 3e9e1281899f2ded276b725195b17670146982bb1179b49c027199d09d18202dd3aa373c54c305bd9cd144c975c1318f322db62ba92c65e880a2b3a94af2516e +DIST firefox-128.14.0esr-nn-NO.xpi 630297 BLAKE2B 5ecd8508ec06338ef5d9d1d9ab5957ffae1aee8cb7636e01dedf56c53e39145d6d55326b2a82e4b1a2308434d8e3649b246b6c28fb12a273f10d1f848075f838 SHA512 74c5fdab5e77d62becffa53624718cb9900af9c98e3311c247eacb09ecbdd96d3ec8bf34b1489cf4e114d2f8fb553807f490e83051fa5e70b3c614d8c6edcbda +DIST firefox-128.14.0esr-oc.xpi 626833 BLAKE2B 32c787996fd3ec35b9ca0fa9f70fbe52bccac3f130478d2f2461f5030d66e8d82f80dbed932381a49d22eaa25c6560cb2a04063134fc564f23387fd3801d90f6 SHA512 fad47ff1b29acf285a5ecdba0a39f1b408175a7e3377de12fe2aae9cc1baa49abd7787e87124bcb920ad8a827b5079512ac142095bfd814fa0011d492f857a56 +DIST firefox-128.14.0esr-pa-IN.xpi 726725 BLAKE2B 7c1127719142dd05b46ce6de03fcbb3ce262ba2b62c712f428e1e3f3f282d8a16d0c45d60792d8de711be60981f88ed8c74339adf037c301fc940af86e26a7ad SHA512 f9217a68c9a75b574415161ff0b35dca091f5081c219b792b300d36bc371506cc720cf38f06db15c9999da4ebe970aeaa5fb1ab2f0095ef5be4a5a2315a56db3 +DIST firefox-128.14.0esr-pl.xpi 669249 BLAKE2B 82e8ffe7b9903a0de3ebe72af8a8cb276ad1ec7d002975e5b68d7745008923563c524006d50c7a2584df366f2948e1f89fa240186cf6a143eaa58dee847ecb92 SHA512 c5231aec3caf86a40c9e42a1a3bbefc67423d96fafc3c91c11a70f6a5e75cc01c99333647d21e39d4762fe3d93e7413da67027e62550cfeb5f2c949a2f9a46bb +DIST firefox-128.14.0esr-pt-BR.xpi 650222 BLAKE2B 520f0b6512f02780eea7d121a88b674ca535db7ddd692724fc3d5e39689ca61193e94e68529ba8b8a0a109193bf9fb19d3863395a9ca49fad7e4b8f2cbc6376a SHA512 897b9eaedf6b798b81c2f50354d2fa8c408b0457c1c302e64c6ea9d252862d1f59c1e2791ea605ddea56b19e39d5af552cdf00031c81194f19450364704b9c4b +DIST firefox-128.14.0esr-pt-PT.xpi 654883 BLAKE2B d557a73a86467d2bcdb98c56dea8038d9002f914816282dc6407fb7b9a3792416a80c9a29274c1d3af38e4b6eb0755ce030b3cc09eab06e66fa4d6d0fbd9c73e SHA512 8b2df76bd1917070c49371101dbf4b6839ca1c735fad83e6d3d43f0a59e32819bd642217020c8b5ff550b203fbe04b73ed0d88487f8359c4eca4eca721d64d3b +DIST firefox-128.14.0esr-rm.xpi 646693 BLAKE2B 58f535d761ecadbe647d975680750173678e5f57c1f8547250629be4d1aed3dec3b081a00cc0789730303afb19c63b8d3b7dd65824b4146f25fec1e094497502 SHA512 8359a8df781cb9aa6212efd168f216e2fd8c37c739e5332fbf27055550ce47a1a51d1638d3a67a34bc21aebce8de93e3361bc409a685effe8bb938e3b78dc0a3 +DIST firefox-128.14.0esr-ro.xpi 562850 BLAKE2B cff43f880a344bb64cc28247198ea78048848c582ac41b2379edfb35b0c7c5f62c9d05c23fbe6a17378309d46733010e27d0b95e8b2c6a893390918fa19a071d SHA512 b1c8d26d426b039a8d948b0138eaf6149f80da570a2e7e2cc48b57ff390c0bcec3fbfecc9a197e2fcf0dfc54ce5a3f62d273c0cfe4e734e5e0792ccba85ba9b1 +DIST firefox-128.14.0esr-ru.xpi 753065 BLAKE2B 12dd7711ec52fafa30aec794f255c2e859f54fe582a80113d9e63d09df31fe0ffe87d56c737c4f5aaf5aced72421d6de712f4a4f7ced67ee5edf956f63ba952c SHA512 bd47ddf3aacda48875024ab9e0ce15182cde6b7fe0f70ca9a2ec7ca845d54f004bb2903220a4760edabb57106012a0bfa39a8e0d678bf054bf58b195425b65a5 +DIST firefox-128.14.0esr-sc.xpi 604292 BLAKE2B 6c566be22efeaf2caf9109a8247ee6768b6f4f1d0018fd22562440ae64c9bfc60beddbd056d914980ab40f2da183512e47bf961754df2ac29256d1881701ff46 SHA512 8117f98a686450938a1994c191fab6e6b3e71cb96cc7ee460a5e44b18cbcc9ba340e096e1f561b8b6b40beaa85c1c397155aea83d3a97b6ad28a8c64aaaf6854 +DIST firefox-128.14.0esr-sco.xpi 524663 BLAKE2B 997bbec85eb8a3de9610343f84ca7bdf27ef84eb4ab8c1d5f3ad1a6384d9f266fa28283c93e4db710a885e77d318b3bea2c7b2f2a576f584941311d850e4479e SHA512 4f962174621d7f3e2048b1cb34decaad0103558d7be0168892e96e0d70c51070a06fb985d6bb7158058f4dcac601c5a4e2a4c2eb21fb88314a3d0571f7b9dbc1 +DIST firefox-128.14.0esr-si.xpi 628193 BLAKE2B c86eb53b5d91707abdc98030a1ed8f2d1d31330167d859e1a51b42662d60444d6b72fb5d309393ff1adb147aa175822fce5e785893a9b8d57560d467abc552c9 SHA512 348dd2df46aed72dce935ca046919835192c86600b24aa60677d2d9724a7668a05676990308be94c6d04174c19276a5045dc308ef43fa9ec06e11cc8367a2866 +DIST firefox-128.14.0esr-sk.xpi 682226 BLAKE2B 17ab3084de0c8be5ec3caacadacac84604cc68b2625e2cbf1af813c60a1fc966b8d05f9d546185442b14e3a07a5b76d8ee7c1a44da859dd4d276f1b7bdc7d402 SHA512 17472b56d867aad708f8da830677290c8ba8483e9140ab574e104296d10426e119c1378b9d8e9ff1b8843ee11d728352e44299ab597bc6d98be7dd3aa6defe57 +DIST firefox-128.14.0esr-skr.xpi 726685 BLAKE2B 9ed7e1f589f53929903118581a3dd6fa05747c525136956f46ff46a90e2031e92bb22bae9641d196ea3d7ea8cb81b1d14d84568fa85ae31f4f6ab6848fc159e0 SHA512 723890c530631347a8fb4af341d31f213b8410189c5254d44e634559b28ff61d6561c784430227943197945b411050430ccf302b07533afba86a2a34009b2560 +DIST firefox-128.14.0esr-sl.xpi 649033 BLAKE2B 4a07fce7fb1be7e8f0cd169f26b566e706b0d65675f6568b665429f5a555146d5e9e6dfe2a659a7ea603ac1d217b27788f32448a2a757985a2d049f36484520a SHA512 e9cc3679b47d036d43562d6b068ad2ba9422c9138e9ceec4801d7e9eeb244929084ab8fd2f6243fcdc5d54509bdbe56b711849f3d5bfaabaefbc3467e7af999f +DIST firefox-128.14.0esr-son.xpi 451699 BLAKE2B 3f0c222825025024bf452403c2eb7892dc4f18e3ad534c0860f46d0a96ebf9a9eb5667c4e9b77ef32da2199859d146be811b56625fbc749e5536f5a9b1d00ce9 SHA512 0be3d61ab2cdaf91c67e7eed8212bf760947e9bab6142bc530eef125952c39968abed9c690724820c63c7af48c0b85d2083b4135aa0ebfd3a23d7d984c6ccf48 +DIST firefox-128.14.0esr-sq.xpi 665749 BLAKE2B a8f6d9bf039eb3d54e4adbe045f9d6c98e6c5e3c23a749187e2ae5146a8ed20fbb8cd2fd9fa669a7baec756db95b6099b53d37b228338c9ecc9a3f62882182a6 SHA512 67585095be57f30b4ed6a3f0dd718b47321fba296bf495e940bfa33838afd99e4020eafa7105967abbaee60cc9aa7ff649dc214745c90c94a99f5d2dd85fd034 +DIST firefox-128.14.0esr-sr.xpi 678444 BLAKE2B 90dde6a0a42595b9c5ecafbdfe0bbcb3fd1892bf41188785adfd2a4d1e09d55db10398300ef7e81109007b4233b7187a272d0ead50bf074654e1f531b4d3f650 SHA512 75974d4d79f17ca65b40f14ac2d162ba749285866d6089d01fcb918edfebe45a8d8509075bf87b69efb1cf90047bb611a8939ca341a777a269842ac771bb54df +DIST firefox-128.14.0esr-sv-SE.xpi 646491 BLAKE2B 579148df07a5ac9764f7f62002c65f65712fab6e8d0d924bdb071ed0e59950bc892ccc454b18e35e775873fef85b7211385b7d43577d97392633496ff225a367 SHA512 91b1f627109e5c971f3bcc6dd7acaf647db1203bc6ade1339b7a96837f5956e185fc7aeef17f1ac6d3c69f3fd38aadd1448faac59e8a2ee3e8e70c007c054541 +DIST firefox-128.14.0esr-szl.xpi 541726 BLAKE2B 71a5afad054794a537146a03a46ce601b0a2260f19bf8d2c12895d82eee75390faf0f0cc71da130e2585b74e1169b6462019936f37e03167e39e35a401916572 SHA512 803d4144b030b1a19bb09ed7bcec011d322fdd85a2d65a04fa62d1979fdabd75710a8cd1a883a106a9cd831896fed2180aeab9e2906b77808dda2df450ffeb52 +DIST firefox-128.14.0esr-ta.xpi 530547 BLAKE2B b77f3af4c841f188370a0bc20645768ac49c01338b692db3eb0ca5b3d99a03e8e8999612ffb3e2a4b0e0fed8356da847fe789843e92994460c5cfc9b3ca199f2 SHA512 910b01f62e51c55cffb9e263d85b4ff38fd70f0bf4ffe27b05319420c338bf5b231e0ed5da4f02bf8e1104041c0e731634a54ebb2146bb7fbcf358b32a1d7c16 +DIST firefox-128.14.0esr-te.xpi 583153 BLAKE2B ba8501210b27321bc538cdc0a4ddff1404c7df092e1a1154ff6106829d852a148b4369c089553823d2a365ff9381573455c13498a510e8898a389cbb45f4380b SHA512 e931319bc3d33429ac1602fa5e6be502cbf414861b09a35b95233824e6a098f9e9b59317a0a0b5e1500bc3e5f6822dff40cb9c24afff3a5ff544e64694012265 +DIST firefox-128.14.0esr-th.xpi 728443 BLAKE2B c1159cc737becd7539720a8ab47cbe26ffe2ebf1d1a5eb0c41c39e0d2a873365977ffa463daee5174d3c877400ff82918183163fbb81b7713a01931026837bd5 SHA512 e16b9ba861448f8e7c23802f5ff85c2f35c8f480d69524c176a67132667f5267feea08329cd626f680e442f38472c01e1184ace126f940a97284af7cff7d60d9 +DIST firefox-128.14.0esr-tl.xpi 546941 BLAKE2B 84f0c941263eed78632e513329c8e4750730c3b476ca26eb16d317c40c66e08e5a53514b630ec6ccc4c9bdfd081598850998ebc059ef1082b16ba4fd6e72a34a SHA512 4d9bb2ffc520bd78b235053b04e5456b62b926ea5e231909102ed63c22ddd0b60f78a199219cbc9c40bbabbaa1aad8f254c6b8f2595ab7cd18a57bac7e7c8384 +DIST firefox-128.14.0esr-tr.xpi 659458 BLAKE2B 84b658bf1f02a57158431e74da452f31961d99536ba0dee9e2206c4f1a433aee83f3954d360e3a5ab4ecf3045529df2b67521e1577ca107f8560f524daacedde SHA512 c298f688cbc139dfbbc566336d1213cfd61007e11fe976b55a4165dd96f4c15c4ddec10d9369b6a38adc1fa6efe9cb73f50f5a075cb8123a20ef357aa8765151 +DIST firefox-128.14.0esr-trs.xpi 522156 BLAKE2B 0b8240cc64bf15e8489140fce0eea51e81176965c2331baf316f84ddcf6f579e63a37e0fcaf3301e6defa1e6d79674d30d578ef121e72296ca5cd4575f297dbf SHA512 b5061fbbbb5c97c5e0dabd11b62299b3a4b22fc7847d95c354490baa01987d71219bd121f6cb25eeb54fefc1b37daa143190f3a9e8d7b21739b07f291eaf31de +DIST firefox-128.14.0esr-uk.xpi 744002 BLAKE2B b4be732550fed792e25bdecba5a892de2dd8d400a19d5253e4cdf85922d5bde3fa8a4b566585586abe3b846c9445a3d3a72c80a03efd7ba3082360a0cbc62c0b SHA512 ba7aa73123dacc7387454aa08f77df1e23041335beaa7e4ea22a0dfecf4516205452dce3a67f4395cdc0e327892a9b8d65a97b7abd5c8d727f4cb13eb873abec +DIST firefox-128.14.0esr-ur.xpi 574507 BLAKE2B 641bb41103543fe80ced4347b7774c1fd0a7fc7b9afc9c6d88a10ca8716ab4257cc13bc99a34fdbcf78f58b699e074d6060e7b90ecc0cc975c91ef02a32f6e1f SHA512 aa0a20b76bb0b6e78b5f74a182b65f36f7f21c425fa5e42e88262f4dd37ecb78fe95371403f80ea45276884855eed4b1462b9f2667e922227078ea52bb457c91 +DIST firefox-128.14.0esr-uz.xpi 495302 BLAKE2B 929a21a9423fcb5bf6ed9b68f8d6848ecb68b69843c5026b3bd5540cde43522da8c640577b68ba2b7582033f2ec930a9f0b736f93f6ae0243541bd13c3239f62 SHA512 6b589d6b77e2eb82f46e794b5483fe82b5d47bf457d55260b68e74f469923ba86c4ee4424479c902a6ac2a19bb8de655057355c8a4a1c3857c393fe4ceeb553b +DIST firefox-128.14.0esr-vi.xpi 683673 BLAKE2B 4f244f6ec930dcb6a8b4220e477005b177a98e65f0ecf9d895656087a534ddc23cf2d811623643393c88bf59ad67d435183ee33894f5a0ff028ec51a91c594ff SHA512 de6675f106bd66fc25162ecfd63503bf2f2992be0fa1c2ebf0a59c54bf79c989c6ff632062f393f79fe05c5d8490216c3f31556c782660b030d9566ca28223c8 +DIST firefox-128.14.0esr-xh.xpi 452423 BLAKE2B aeaf0872edcfdf9f8d2ca95089d8269754dd444afc99fb7abf5fe0e5e4b53ee11ab73a6fc69520d7e4a018ae09b4b2e8c12bf0ef74adf76bbe6bed04a5f73113 SHA512 73ff1fbc108334698806172f9825515edd25595a246e3234651d660a38d29b0174c7a5e80c05e7be48bcb7e4d4791482ba742742c8850a2fcc4fcb1d002b3bb0 +DIST firefox-128.14.0esr-zh-CN.xpi 686341 BLAKE2B 1cbf1d1ec15cb1b53f54e96fa20e9657b9c67fd4392090f60e19077fb2e4e1e731964693ca44eba2b59291cc607f29b6d8987d7000f06bc8c68f74c9805c0384 SHA512 989e4bb12efa131bc70b38398a6d2ff6a92b7d7363652c68be77583c02b204dd0495c4d5ed5fad65fb636039fd21cfcf0466c14f60cfc2f7a6f8f714917c0ed7 +DIST firefox-128.14.0esr-zh-TW.xpi 689145 BLAKE2B 716f24a5f02a226da2d9dada5c21ad3bb1f5ea755f1ed4058c5c690990e178ce1271c07cf1122695c5a9e2fa54311effd614bc6ba40899037e7fa455d8ee8d4e SHA512 f0127a050fbd4e559c8ac7aa3eb4d581206084880f725e1a91767ae4aad05ff50eb5ff686bff2eeef3de7a2ab4226be1e9ee728a67768d6c841ddb7fa4f91993 +DIST firefox-128.14.0esr.source.tar.xz 562714012 BLAKE2B 16420f803f5fe9cd1879d7f3fa24a42baa78a2e048212696cb0986dca3e3c07c52ab411e98ee2c71047f52fc5f644ef1a2a223e2ee4c69aed41fde66b9a63749 SHA512 a3cf267e82b6f5ab8b6497a62b12f85afb78fcaef6b12c43ef79564ce8270d3327a873368ce48fc018e46fef5e07339c07b9a494a5ff6c22a84099f939f6a9de DIST firefox-128esr-patches-12.tar.xz 19024 BLAKE2B e6e1cd56548cb429590cac156de6e5ea003e9db30e3486ef3c822dea063f22bed08685a52036c0ee749b50a803c84fd998470d049145bdd70936068e9fb9568f SHA512 0af68f23777038cbd02c9991a5c5d59cc407295b21065c144428869f3a2ce21e8fe4ed80983950b75809a7c6d530cbf629510c5a18f5ec0439e1a0daf852999a DIST firefox-139-loong-patches-02.tar.xz 3096 BLAKE2B 2e9c0f3dac780c808a13f70fe3808df9976898360b55113def97bf3594893166e0647c70ebc389b2d14fa2c2453fc1dd68aba20d92178670ef97d70c34205e1c SHA512 e1244007290e2e15d14cf519e3ade6a4da06abe41c416de60569a11396609661cb62fb5b592e763cc079406699dc33d6a34851f71068f4d09bdf34021b035a59 DIST firefox-139-patches-03.tar.xz 11536 BLAKE2B a7610d1348a2a4d02305c8d694a1648997040c69cb1445b901fe456045d0b1a73f28b0102ed03d34f70d8cc1ea9ab0245599a104b0063c7fb0dcb5a8fdd6f60b SHA512 4733d34a842d525824fbcf6ef5d8f33e26b4f37a16aa87043427eaaf1e0665aa257cb8487bd692e4fd095c2a78553ab3f0213208124c3455e534394576fb5614 diff --git a/www-client/firefox/firefox-128.14.0.ebuild b/www-client/firefox/firefox-128.14.0.ebuild new file mode 100644 index 0000000000000..796d59c1056b4 --- /dev/null +++ b/www-client/firefox/firefox-128.14.0.ebuild @@ -0,0 +1,1380 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-128esr-patches-12.tar.xz" + +LLVM_COMPAT=( 17 18 19 ) + +PYTHON_COMPAT=( python3_{11..12} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +# 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.77.1 + +WANT_AUTOCONF="2.1" + +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=yes + +MOZ_PV=${PV} +MOZ_PV_SUFFIX= +if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then + MOZ_PV_SUFFIX=${BASH_REMATCH[1]} + + # Convert the ebuild version to the upstream Mozilla version + MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI + MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI + MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI +fi + +if [[ -n ${MOZ_ESR} ]] ; then + # ESR releases have slightly different version numbers + MOZ_PV="${MOZ_PV}esr" + HOMEPAGE="https://www.firefox.com https://www.firefox.com/enterprise/" + SLOT="esr" +else + HOMEPAGE="https://www.firefox.com" + SLOT="rapid" +fi + +MOZ_PN="${PN%-bin}" +MOZ_P="${MOZ_PN}-${MOZ_PV}" +MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" +MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" + +inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 multiprocessing \ + optfeature pax-utils python-any-r1 readme.gentoo-r1 rust toolchain-funcs virtualx xdg + +MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" + +if [[ ${PV} == *_rc* ]] ; then + MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" +fi + +PATCH_URIS=( + https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +DESCRIPTION="Firefox Web Browser" +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]} + wasm-sandbox? ( + amd64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz ) + arm64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz ) + )" +S="${WORKDIR}/${PN}-${PV%_*}" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86" + +IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio selinux sndio" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx" +IUSE+=" system-png +system-webp wayland wifi +X" + +# Firefox-only IUSE +IUSE+=" +gmp-autoupdate gnome-shell +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 )" + +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.26.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 + if use pgo ; then + if ! has usersandbox $FEATURES ; then + die "You must enable usersandbox as X server can not run as root!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || tc-is-lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6600M" + 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_lto} == "yes" ]] || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + 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#917599 + if has_version ">=dev-libs/icu-74.1" && use system-icu ; then + eapply "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch + fi + rm -v "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch || die + + # 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" + + # 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" + + # Make ICU respect MAKEOPTS + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/intl/icu_sources_data.py || die "Failed sedding multiprocessing.cpu_count" + + # Respect MAKEOPTS all around (maybe some find+sed is better) + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/python/mozbuild/mozbuild/base.py || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/libwebrtc/build/toolchain/get_cpu_count.py || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/libwebrtc/build/toolchain/get_concurrent_links.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 -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/python/mozbuild/mozbuild/code_analysis/mach_commands.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-gpsd \ + --disable-install-strip \ + --disable-legacy-profile-creation \ + --disable-parental-controls \ + --disable-strip \ + --disable-tests \ + --disable-updater \ + --disable-valgrind \ + --disable-wmf \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-release \ + --enable-system-pixman \ + --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-nspr \ + --with-system-nss \ + --with-system-zlib \ + --with-toolchain-prefix="${CHOST}-" \ + --with-unsigned-addon-scopes=app,system \ + --x-includes="${ESYSROOT}/usr/include" \ + --x-libraries="${ESYSROOT}/usr/$(get_libdir)" + + # Set update channel + local update_channel=release + [[ -n ${MOZ_ESR} ]] && update_channel=esr + mozconfig_add_options_ac '' --enable-update-channel=${update_channel} + + if use amd64 || use arm64 || use ppc64 || 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 + else + mozconfig_add_options_ac '' --enable-sandbox + fi + + # Enable JIT on riscv64 explicitly, since it's not activated automatically via "known arches" list. + # Update 128.1.0: Disable jit on riscv (this line can be blanked to disable by default), + # bgo#937867. + use riscv && mozconfig_add_options_ac 'Disable JIT for RISC-V 64' --disable-jit + + 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-png + mozconfig_use_with system-webp + + mozconfig_use_enable dbus + mozconfig_use_enable libproxy + + 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 + + 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 + + # 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 + + # 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 + + ./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_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 >>"${GENTOO_PREFS}" <<-EOF || die "failed to set telemetry prefs" + sticky_pref("toolkit.telemetry.dap_enabled", false); + pref("toolkit.telemetry.dap_helper", ""); + pref("toolkit.telemetry.dap_leader", ""); + EOF + 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}"/taskcluster/docker/firefox-flatpak/firefox-symbolic.svg 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 +}