diff options
Diffstat (limited to 'www-client/firefox')
-rw-r--r-- | www-client/firefox/Manifest | 298 | ||||
-rw-r--r-- | www-client/firefox/firefox-102.2.0.ebuild | 1276 | ||||
-rw-r--r-- | www-client/firefox/firefox-104.0.ebuild | 1279 | ||||
-rw-r--r-- | www-client/firefox/firefox-91.13.0.ebuild | 1236 |
4 files changed, 4089 insertions, 0 deletions
diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index 9c3dba24a21c..46fd33b9420d 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -105,6 +105,104 @@ DIST firefox-102.1.0esr-xh.xpi 418245 BLAKE2B 51a8c0ff54cb984423e85d3a47688b4133 DIST firefox-102.1.0esr-zh-CN.xpi 566196 BLAKE2B 5346264a393a1f3e2f48ef94ad8f61577cad3da44bef79c6d0378a3d59ec9df4e1fdcde4aa2424e4e12c840e0034c2442cb739a84ca986807beb31ab2c0ae5dc SHA512 83f3411eeb05f6be5b9545d73c1437bc96fd658e9da4d1b7a2f676c6ec6853b634a72c84255f95f03eba0a8d40e4de69860505786814cfa187cd0a7a06b5ed22 DIST firefox-102.1.0esr-zh-TW.xpi 567161 BLAKE2B a1697778e9e96a2f7f16a36f790fa6b3268bee99c13b82f31be6b2e6d3ef121dab8b7df266aa28495c01f1cfa3e18eff058d283c737f19e8e38343f4ea145ed2 SHA512 05bf08207e1cf8f4ed68770445be5cdfdc77cbb917aa52ceb3919aadc3f8e83237c7e64345cc251fde673f7a02c9f468874e32f353bb50b0df49030218d34fe1 DIST firefox-102.1.0esr.source.tar.xz 486756700 BLAKE2B d046c386f7c6822510fa309a5455cc80deaaf59a5cc274176a74b4dfe2feaa60140d3197f91c221338d7d96ddae48a411c4a376afa1db3ed6fc8688cf2f97119 SHA512 2505b87ce4115445568eb6b7d8af41678bd787fd07f3f79e9f0a22d90cdf752ae5d4371856cf9c56e2d9da7d5b7c3939dc2aab5753fcc017398e7d65260f6f03 +DIST firefox-102.2.0esr-ach.xpi 443117 BLAKE2B 2f51f80dcf1c375a8aa17bf3548c1dcbde77e8c5e2ddbd9cfa6442df190f4b82afd3dbb51671169563279f43906bdd637c3d84716bb624daa4224751c96f0574 SHA512 7845c5ff08d5393c84977fc53998b3fa85f33375eab75d5fe58a83b7baaa4e437908bbb87b26c25015b8a4f924edf8b03b8e2fc9977d60ae2ca98c813e2a8eac +DIST firefox-102.2.0esr-af.xpi 408454 BLAKE2B 10b406e9525dd2a8c95d2f54ee6b99f42821e74224ad95a72e41977bd57a40077b82887d7cb45718616ab92c34f921626bbf178d76c0c372d9132d31234bba74 SHA512 45cb00b40353169e8dea93f812bbe012698a2ef99cc9ba80e5f192ea0848e34bef4f511ed409d7a0c94a456a7315e0ea3a39877029bb05dd1c2e5b5fc536c60e +DIST firefox-102.2.0esr-an.xpi 486996 BLAKE2B e5c5fe85ccfb4f587af54a3e6edb3704daf3a85032294e81b6c783670b4780e675ff5fbf8803de69a66f74935b60e6739439585b9149d9e8bea8684208ec9d3d SHA512 aae8ee12e58888e3246918233ba2e08c48725e4d7d6fe6c2d8e3def23f34d0426211d7a8c144c8b936d3713456e3f510e4a0487922e7527df55d8ca1155cc978 +DIST firefox-102.2.0esr-ar.xpi 550925 BLAKE2B b8d307b2f5cf6a507f23f780bd084c151b9b51fcfa31e2157afa543bc5af33d190345e59a03fd33ba1756fa3b7ce286541881685429ad25474e18299fa7aa901 SHA512 4d21f00d42e37953982199fda14d24e608b14e26cedf08331f7d0d07f3b3e872e5490b79067d63ec23b795a13caf2e5cfe55dd30c9b2b1f2ce8917b59374f0d9 +DIST firefox-102.2.0esr-ast.xpi 483312 BLAKE2B 8eb1a459f7527c9c7d1450c684711a0ba948a1bd5b141e6441ddfa663ed471aa74ce8604523be28ca80cc72fd68af61009c4e05dd0914fe918a29898e36c0adf SHA512 d36ead76b77dbe37d886e66774a53c04411cb237441ecbcada40c4c08e1ca0303766f7eee1c0b63e15ef3cec63ecbf330c914ec90b895a2a8a059947c5758d6a +DIST firefox-102.2.0esr-az.xpi 474708 BLAKE2B 4892da38653ce4c6fa02239dbe717e5def960e7c31ae1def8e1b4e50b5dea9ec20e200871bcba88d9735920ee0f3c70cd3c68021165d62b7a88a841e388d9f7e SHA512 18f471be51f02abec75c7b67b16cd0493ad0afe36f6176c57ab002b073435d2fff072880ef44535a3f3f42449ccc3bf160b09f711d167d4a7befc9c5987f676c +DIST firefox-102.2.0esr-be.xpi 613482 BLAKE2B 8c82c4e655494feb47954f4fb7da0cc592fa6bd39f8a14f02ae2b2331d9c9b69c239ab25c7f94c6031871c6a0a7aa8db08160b6166e7200de84e989dde523234 SHA512 53f98f38405e3dbcdc93c7cb616b1272451cc1d588604fe5e0a888e7aa5c8273146de556a3662fb50b516ff15efd85f18c42ec10e85f0b68c0a0fc040b1a7685 +DIST firefox-102.2.0esr-bg.xpi 563645 BLAKE2B 92195668a613a78fe52a30e1a811d1516f1b163e3ece5565d4fced760fbe1a5e93b736d9506e46727ac2c2df2730c6831e61720e3d9623a1049fed6b1be47358 SHA512 2998c95d8497f999dd958564a596172d9b223f29a764b04d82d7336f7ad6626ae217e1c9f3c152472347823cd4e718d4837fc96c5b536f9f2f1056ae1123713c +DIST firefox-102.2.0esr-bn.xpi 565253 BLAKE2B 2d82b636c83a60b7a21dd78de4a049b0d3f7005840047c3cc45eab9930efc4010fa433a9569ba60b001a2ce739c30356b00f7216ac26ae8b459b14899456723d SHA512 a26bee769ecc8837c8da89a9047a81d4c6a5e4cca1ff4fcf687b7a36ad83802bc91ce983c1a12169c08fa6f843ecefb72c30ac40fd1b9eef443e1b3c3b30adb3 +DIST firefox-102.2.0esr-br.xpi 521036 BLAKE2B 83ed8ea0cdf36ff212bb6a9ac45f7ff2de40b9d3456d8a26d829ed9f6bd803768875ba871c55092f8f758c907f7606b4be0257c71f69d0da19c088e439de9d6d SHA512 20db78bcf2e3cd78492b04d4641e9a22809cc6c86e29a623227a54af9bfebac37c6be6b619b707736ac5f8f31a59889ba524989c9b60a0f24e21a1c6a8e02925 +DIST firefox-102.2.0esr-bs.xpi 451833 BLAKE2B 030a7348f92935db2493616bd5ff0a626a6af7d12c49a2efdcb2f74fce14764eb100394f42ece3a3e95dafe7a49ab8c48b4e9ad6e6a76c88be96b70497d78231 SHA512 c48931f47512d4b2c3668c8a175e8738d254361acca7afdb4dcce526ee429b0858a39b8cb1b4947c1c30fc60dffe2f61e72ddbe7eba05a57fd2dc379f32f22c9 +DIST firefox-102.2.0esr-ca-valencia.xpi 526181 BLAKE2B 7dbafb073a7097db3f9b8909cfa4cdab85f70984df26437bde8ace14315350a8a3a1ee6ae69184047bcec79f5e511946cbe533da9a2ca94fefe115dce25f2494 SHA512 8c7efe3791efdc847cf0071d72111b57a2fcced960309a55cd30f7e804458aecd5614fa77e98d8e46bcc582cee005588531c5446d11f2b53efe8899e51cb2f1c +DIST firefox-102.2.0esr-ca.xpi 522652 BLAKE2B 666c1cb2850681180ddc0a60b0de31b8768da260a607cb254b73523f6f25becf16331ae63e954370c3105eb2f31da6db04f79f2484f0c39a74c52a9c99bb734c SHA512 ab3e7bd92b04f458942b959ff9025ba899623a9ad51e56b3b7a8c7e3d1f60fcb83cacfd03fe11571836cfa329fe055bebd6f45b4a2475a1190622736a097be15 +DIST firefox-102.2.0esr-cak.xpi 539676 BLAKE2B 25f1a914903916f09daa28aca3f05d1a8b9ef7e4d0a160657a61b3718969b238454d2813f989adde7dcc1689d15bcc4487c6b7f8f2e44e6050a778bb25b97e61 SHA512 833b93b07bd732c4a21b63430e4520bc36008257e253fdd9f3289c171c5c033267d30d7fe7e2905dc2dbd64469d7c37e4ce081f2368e9ce8af9333ddd0c33e4a +DIST firefox-102.2.0esr-cs.xpi 556823 BLAKE2B deec630388eb9f68e08bcf1c527a7ffc4d9cb684d48c0ae6d7f1f6d23dae427d373a709e03c3322c87234921112fa1ee1691779d2c09d69403fc997d562c8c7d SHA512 f1ab9f205eb3859c5b2ac1a4247b6df8e626213ebac6d746f53a4912f9280165b28922fc2cef93f104f8cf318e3b9f7c6ebb5a2806846e0171d72f2ea9852fe7 +DIST firefox-102.2.0esr-cy.xpi 533753 BLAKE2B a6fb3f98bc9f25ea406d772cc2b37b578ec6bb7a011db0dedd7092a5f5407952b851001a2b208a166dec7c4f66e942056ac97be12be7f01b98ef7c3e178a0e9f SHA512 cd3b6bf72ec7dac40868f5cab69c63c23a6d0f0aa89a653584eb1d7e61b792d767410399718a415f96c8d0caa134e99c8982495b95a8e81915c297c390915d69 +DIST firefox-102.2.0esr-da.xpi 525909 BLAKE2B a0621e2c4461b0d3ce9052d717c8c4b473454878b18eb501d59372f85b7c471c9a4b7e2af99866de2bd9ffd0e964c02b61e059df174a9e4f483d19d37a06324b SHA512 d1bc8f217194f38467b4a1167151fa110bdef55e1440efc7e0fa21af7b7bcfda613f8ae6b5f4633930a925e54623f88b3c2d8adab3bb667191b876986836e8ec +DIST firefox-102.2.0esr-de.xpi 544846 BLAKE2B 56e6f3dc149b48f88c532be48580f7ec5f7ecc58f125ebce21caf0ae8f2adb00569bc8e7a580742df409d20e79fbf6f68830feab57a6ddcfe76d6ee25dde17a8 SHA512 cb72dc89683e9f788cb623a2c4757c23b5ab62bbab215495c9a8d2a87ff5d114070aca12990deba11b69b2abf615d8f21484af0ef7c3f765c0f5c732302ab987 +DIST firefox-102.2.0esr-dsb.xpi 557555 BLAKE2B c240ffb38301ba5e8ffbed510d1928ed6ab062a3f8ea80336077bdc6c44fbc39feff1c1a754490c5a0e7d327e394f83e34c26ff8b0817b33dee5b02dfa6b9760 SHA512 9f0f761084c505864d9c07958cdb3c534eb866dc736eddac91fe971c426334941e17000cff1322d8e8bcafbb1a816719b110f99b81b026e1820e1dd3f382bd6a +DIST firefox-102.2.0esr-el.xpi 628794 BLAKE2B 5f7f5243fc69d2161d8959e29c2b2fa86ab630d3f67a098cc258d627fa5b3dea49f0bb7aab6a902c4913971b7843f3d31a47fc2aedcb0f66203bad5603eafbca SHA512 dbb7689aa56ae0437b7438b0d8be3439b6fe7f96221245453a03ac11ae9d3fe71ec9da05725d818d73de157987f5040ae3171b8463c84c779b2b93fe6a88a63f +DIST firefox-102.2.0esr-en-CA.xpi 501972 BLAKE2B 5ee7f5ea9f4984084368ae63900a92632745d6dae9ae4f91281909bd53b95969d54010f76a8cdfa5c0309d5760cd70b37b444bc9b32faa01bdad2842f7f7b568 SHA512 27c84295d5295c9fe5bebc3c0bcf76da07c3020e7c6273d1c5576fd3f6164917505700ac985cd20b011b1baebe3ba5f22b047e0a84997ede1d7f396067972160 +DIST firefox-102.2.0esr-en-GB.xpi 502463 BLAKE2B 4d320926cf920937d5e94d3cffd87d8cbb13b5a88c609d9fcb7a90e2b78886bedd145560941055cc836ce75b6cadbf55ba13a6da2ce627a0c1bf2e607caa910d SHA512 7c27a189dc22e49a706c64ef614b4a3ec3bf9992484fb65a8ceddb2a73ec3b621bdd0d5f2e529bc47354fef19f942a7178a581f6a15e04c33c8a254e20dc22c7 +DIST firefox-102.2.0esr-eo.xpi 528420 BLAKE2B 0867af39981b0ab238a9c60d824a07ee068f939f57e6aed9a5c05fd04b349986080f1674ea1073e386ea5eac4517a9afa393d326ce042530d91f7dcbc5750992 SHA512 cd1e2c2aa3b7065686de386d095432b23243e19fc2abcd88faa8473043ef7bd8bb8dc7a5b4a9e8297365fdfe6dab9feddfb68b07c667f970b056b672651ea3a9 +DIST firefox-102.2.0esr-es-AR.xpi 538394 BLAKE2B d179f509ba60d9a90f2d16c0e2db740e48e29a4265fe4fd94a10f814bb5b8d226a59753ca11b75e28d840267d40b8889751f6775e6ffd58eb92b56355d273465 SHA512 5d61c6a7a5ec90e6e8daf68fedb657201b686808d052c658cd9e7f38a838fa413e000789f84729bb08b342641ce3a396b89069023054e6b24c78ac9e2c5d0e2b +DIST firefox-102.2.0esr-es-CL.xpi 537632 BLAKE2B 5832404ba8c3e51be5f0328be1be199e45c9b74d66eae8e3c45e4555938563a2f55678ab327cb31d1cfbf3b6ee9d55c8cb63dec41d9420f610d634f2aa4a20ac SHA512 aa22606a8e08f1617f68408e5e3f8f60993bcaaaedb1ac9969e342020dd3f2d3d86959d31cd12f2ff51c944b583baa003be597ef96f22c30c0bd5826ba362d28 +DIST firefox-102.2.0esr-es-ES.xpi 529045 BLAKE2B 0645ac996bad268c802589be11b7496a0fc55c5b2f03bc4adb8f94a6429ff638653211f0f62eb5b653778f9778bda66b6fb8e60e62fd5b8b14946f5d77e42264 SHA512 780262d84b1ae08dd17681a0a34805f9fd5f2429b7151b850ec55ad4a6fbcea431127d0b366aed64778536e3b73d0979ada41b81b369880114f61c697f27717c +DIST firefox-102.2.0esr-es-MX.xpi 541460 BLAKE2B 165958236e6ea6eac4fa0aeadbca566ee78f4d719b6cf95c41d3416e82b099d1dc6cf5aaabed210f1d1f19a83a85165034360f9677c39fa3ba834010ff8af4cf SHA512 66eb40301a41e698df33493df55c3926a5f8411e04df772eca0719aa38fc598d033a7675ed67b66cc058e92dc402634a46d4caf5f4fbb4a2f79b0558e893b114 +DIST firefox-102.2.0esr-et.xpi 520000 BLAKE2B 6c824205b933252188ae2a6b2e2e276258ee487cc708ce73460c30f71599e720078aedc8218afa4089aa31103034f0ad2d2118e3d0b1b228b65aaf140462b97a SHA512 741e2c9dd82c3f88a21a754f3438a00b5897841af134ef574b5a02e2ca72823a2fd0c2f1f258647c581604665fba7f5b4cc506f26a6f186cb7bb42ecd1fd28fc +DIST firefox-102.2.0esr-eu.xpi 528112 BLAKE2B 41c7ed67e2c1635733daf213d4c1b7a0d852c5a7a21eb878458fe3bf99aa37ca17dbf6df87a744501c912b96dd51286d1f269d650b2dc455e733f0286d7b78c2 SHA512 f67bfb3d645a8b1574a1fd591641ffd74048bb22c7b7acc86c6f3a483afd33457f5d881f7dd42bb69fae94a29439ba39183ccbb401e5118a0b3a601c9b43f56a +DIST firefox-102.2.0esr-fa.xpi 550809 BLAKE2B 6d9684d9707fe354f7a150319ea08fc2fbdd85a3f622629aed44077ae0e5e051bf83bc872d1211d9c8c95f7663ee4fc17d7c939cac67dc9afb9cdab241dd993c SHA512 2288e1e88b0b81534a5bf595e6994689f67bec3432dff15b59baeb70d7c877be5dc50182c7ba5a5c245f6cf00d8cdc9468aac6cb1f394ebb4e4c5098a2748c8d +DIST firefox-102.2.0esr-ff.xpi 460985 BLAKE2B 170f9aa47b1275c2d6da4d67618705d06394ca24a006e4a291b0c61c7e10ab7023dfbcffbf29e988596ba48d6b84a6ec0ccb0a5b94555b85e334008e169f845a SHA512 0efacf79a82b19b519ef1e33d31ceda9c6ae20aa6e8418ae6c06aa35ee9272e7d49d8594936b560bdcf455046e3314fbab1d1f5d3ffe9d4d5ac48d5954f980e2 +DIST firefox-102.2.0esr-fi.xpi 524260 BLAKE2B 983263ecc86b5193ab98268af915603925ba088d311a307af572d124ae7986d8a033812ee0ea2a4319dc41dd6171c0af19567549b7df347f3f1f73387d0c37da SHA512 45fe681d43a51b1d48a4094994926a96cc96f23aca08fcf39ea02d80aa32c69606e12b55ed9b518ef9d3565d7d92bcc71c348b42527c160ac1ab92b687071c1c +DIST firefox-102.2.0esr-fr.xpi 549036 BLAKE2B 942f2f1298a67e7149e769e4654b845795e63f0e03741e18c42f7f8aab3395ca8cae4562501ac135abb26f6f3d7a726146648677b8d71266b3383590ac4c8364 SHA512 5aa5e1addb1c6a7a6a981da31bc2dc3f760585a83cb3bcb0cdddbe8b58d355227c1db56e53066bad6b8833ac1827f3d66a59fe2c5c5882322986d02847164960 +DIST firefox-102.2.0esr-fy-NL.xpi 534938 BLAKE2B a790f8e3dae3c026e3e32c2ca7d5d76cf1e851dadded936f285fe584d690111cd685e0851c6888853b00ef693463f53a64511e4f193f25c92bfae16715de6a5d SHA512 6cff24008247f7694f766294b5595877a9b6aab936726db0083f231b6b76a463318969cd86764e2595c7a39447a3e94f776c69630bcafc081a8d8f5b30b01d34 +DIST firefox-102.2.0esr-ga-IE.xpi 460709 BLAKE2B 2c5e49b6ddad4e8ffe6a9ea3dec13e7d8fe93430458273e0ce08a38110b412f13f32a442411544d0fd4c66ece099f21931d6a98365bb29197749120f2ea1dd90 SHA512 6d60cd18f8a56be25df8148612053923171e978a1c1807ec5857f926b671efe4932424d4dec294b45ba214a14c48fb53e2dd19b85a01f1258b8a3457194ece9d +DIST firefox-102.2.0esr-gd.xpi 522594 BLAKE2B 4a0647e8bcabb10e76b6d37e34f7286dafe2935e94dba2af2dbbbb7a41305412f2f0a6103f26e033826ed0422203d7e07696239cf38c5bf6425798b3dc5ece5a SHA512 d782fb7183b21e85ef2bc31c8acabdee19cea1e5e7bbbb38a80966432f73827b3c95c955658f87a9126edfc035253d032f440874ef9c2ee2ce2e05c8f594183c +DIST firefox-102.2.0esr-gl.xpi 528497 BLAKE2B 4f8b9a8e742c497973bc81aca0fea30561cd01c58416983c5ece064a7c061f48206b272f193ca67e30b3b3e906343296be2c27d9724070a55fc00550558e46cf SHA512 56e825e036d907501d9306a14a852cb69ce7a21ef9fe8f361640ff8a15497a32406a4a0e01979a2b8a858335926691b26c97049a8d9661f82139ae2e2a53be32 +DIST firefox-102.2.0esr-gn.xpi 549557 BLAKE2B 6cc69add318c7e2aafae13450219f457943e2f765594aeb2622c670beb5a3a99f85c917a1ce98a9f386d7e6aeac78f581c7ed4245296a8c20698e4b27e8d2cbd SHA512 077c85e47d7d32b82fc67c9db61444c4d512249998111ae86cf24755ef7576e965e795f412fe1d63a780b0de64f074c39f2043fbed809228180f5bf7af07c5b8 +DIST firefox-102.2.0esr-gu-IN.xpi 516016 BLAKE2B 624fb2a75fe21e44d9c1fd211ee36d4b9517dbe67d6316211f0993a094f0bd5d0758bfcbac7fd0d181e1a438f111012e9330320891a4d8bbc0d7aa933c4ff115 SHA512 93f9930fa478909c019a5926e962cc994c9649b3b7dfe930fe4bb8e3072fec849e7f5699da3a334f3d1436d918eadef1f7a8c9e82b7bd238d9f9064fd2dc66fa +DIST firefox-102.2.0esr-he.xpi 548993 BLAKE2B 3fabe974de3b75f9be271896b54e78d684fedec05cd86619aa619638bb5fd199d58c11ee15ce126740e43119bc19b743a6591e1c53193d3e4046b77b61fcd819 SHA512 dc58db1cc35b2892b6ae47697ff411a76824506336eff2165240ec8ce93011afabcb56b4142e08c5560140c8e94773d891fe93ffc764cc69d71f467ebfbf9047 +DIST firefox-102.2.0esr-hi-IN.xpi 546131 BLAKE2B 6b024c31fb35f9910434029653a15c31a5eea89a136f6ad7c4f2d9f2c3af08d5e749e17d1b8359ada136b1e5cff59962a2550e71c9916230867a6bbcfbfb3cec SHA512 afedc5db2da35567f6ae8adbe39acf3c4a4692bc6c52c58620e3c9297263e09eb52841e1f25eb632b250c5f878dec02a9f743a78966c40f522001d936871bd84 +DIST firefox-102.2.0esr-hr.xpi 518893 BLAKE2B 4a602edf0fe16b9759dd7bf19fcfa1649974f39498e8e688a7c33f9b5bacca85f8e41e58adf2e27ffe57b56820100458f8e2a5b4530d06929825b598609a06ab SHA512 8d8e3490fe52deaa28c6eac3759f6c34775b829cd7102792eefb1ff57b5306eb7f315ee19828a9fbdacda117a350c3bf57b549e2209cee93b600f24dc648752e +DIST firefox-102.2.0esr-hsb.xpi 553797 BLAKE2B e48f7faac5bf91c9e54237619cfa05eedda8854c606830154b5800984e8e389fb14e19df7d8ddd25907851b915382ceb7f85280a0ce799f1f4e207ab33a37bc8 SHA512 0a365998fadd5edd308b786beae5b8dc0b2eba8e349dd0f6cc93c5c9d5255a021b4b20793d74c2828c72e149e18e0145cfe569b714b9c04656af5a7288a74c02 +DIST firefox-102.2.0esr-hu.xpi 556878 BLAKE2B f80694c8fa1202dd7ce58b80dad4e709427c2933570db01ff3e3766785841c75b51520fa37291ea979998f3c75b7071c13b44a3538beec0f79caa8cd3315cfc5 SHA512 5891a7176f08e8a73afa59701d309035eab802196456847fd41b1de4b6e8aa88d706f9536c55701ae7b187fc78db3a4890238a53967ed97cf9d0ceba1a5b70ed +DIST firefox-102.2.0esr-hy-AM.xpi 567857 BLAKE2B 4bce3927e4eb5ce839b642172b92d38d581c417802f3cbd25c709dcf8206b5bae73e1dfd020457950d756292bb1a61841b7a78f04cf0177dbde1d99c40c2fe02 SHA512 5c32cb8eccd65629f5087935d76cb63a1eb2fc13a436863a97f4363f7336f82fe4048b3dbec530fba0ac976c561d02cfedf63b20e433dcbfcc4cd7b83a561856 +DIST firefox-102.2.0esr-ia.xpi 523756 BLAKE2B b5c5f4b4868de6f07073aa285f7350a94ffc6bd1c0c1591f2964c839b26cb75efc669d35b0056fc43ab7501a977fa7cf271256f98ff27f012c1598469cf43967 SHA512 5185b52bf7f4f29070c5b2fb950b93e1904377ce4171958013f34ae7d7eb50f61084cd25666fb5d8b266a4de1be417d8eeb4d2d74be029e00f9408e3716bee8c +DIST firefox-102.2.0esr-id.xpi 521254 BLAKE2B b61027a76921aac7e3733e3ccf81ce5c5f1d915ee5916cc5a820c2a605c210630968453f6a00fef78a05539118a37c31b7ece046de27a20d8a1107aeaef36609 SHA512 d2de1289678f9b037bb357882a9ee3a66d3b2a11f2772f48cfedcb1e97dbe598ba48f898c69855b9fe561f111dbae2716da2ccdfdfc9df4091a4abc3df0ac196 +DIST firefox-102.2.0esr-is.xpi 528388 BLAKE2B ead72cdca02b263ca539d4cf35fa3494054c04b3909643c2f29f9eb0629df5492b8549cb1698e13e97d94dd9bf1cbdacd80ea6cda482a9ff133153c9af6dc6f8 SHA512 4b0e79a3b1187ec87f5d688f237ba9af3ef4f0879bde590cc95084ef5facf64ad195ee8a83f116fa34ed41267713d7288c8651e2dae023ce03aa032ab483425d +DIST firefox-102.2.0esr-it.xpi 449761 BLAKE2B b07586918ad875a7353c3b6b5abbd0c2867b80d4b9036394962ac5da78e23ae05693d24ccdd503693cf9b82a0c5ffce5257a69120f4720ae8315745d1224adf7 SHA512 5d7430c4af76a2db0b71d21f7bc78075618543edee177f14b2aebf81c17143e4605d033d8d6bfb1d53bccefee1162f4af526c42e4933e84f29f4f8d4aec0f005 +DIST firefox-102.2.0esr-ja.xpi 573753 BLAKE2B 6e2eb6ac96ef32ee864a85ce10a5be61c9238ae32ad94f39cb0b083c9015be03e6112f2742ee0213198e187840da07174b8baa304269765a554ca4fb17e27226 SHA512 0e416dab96fa1c4cb9d8ac988984b4a4c702a5760e9809db7f10d952340f8666c30ee7ff9b83eed4019a0f5ef0c58db1eb18e88eaaae10dfe2148b0e29246f64 +DIST firefox-102.2.0esr-ka.xpi 581247 BLAKE2B ad8fac22632cb0b50cc6b82d0c2dc9476a84de19bde2bd6e8415162919bd88b6d6a1d441a5cf2b016e3cd9de1f9101ff82473e7e33dda69aafa2bd44f8530b64 SHA512 ce0e8d128b8b1d01892475dc4d68412af2faa8303a75651738456d6f1fb5100eed0f021c5499fae7b5706ebffd23c367854e8032a92c1e4cba8ddff4ce37f353 +DIST firefox-102.2.0esr-kab.xpi 543022 BLAKE2B 57533e86fe636149c2c43ae40a6cecc3e00a2d22c8bd1d7a025fd81c0f13f122114da5de0ad77fbf61cc4aec2fd7ac9ca1f7e98b106e133940527421e60b2a6b SHA512 de7637d70360445575af2e62706ba91cc4472b2d7121659073c257e84ef8726d81fcfa3dfe8cf50c7661a3834df033d30f938b7cc149dc8921ef431f6daa8c6c +DIST firefox-102.2.0esr-kk.xpi 604865 BLAKE2B 61ee4a8116dd9ed9c482ac5b7c4f43d13c2a68fc11b1ed563b73f6a00e889e95b5eaaca11c6a089c2fd7149455ff275a6a306700004da61d18732fbbefab782a SHA512 d7ae8e6b4b38cff3be5caf57767cd56cea5b6cc5f66f61e88b80d969f9a9be20645ae022a3feff75e591bde8609eaf31c7c6ac7c9c43fbe36b25f303931433c4 +DIST firefox-102.2.0esr-km.xpi 519619 BLAKE2B 8cff62344198232bdc94b6ae33a7c30bea974b3387b276ffe47f1ab10c58dbae40784faed8435e2a9e4126c9a178c74cc655eda5e142c5f117d545ec4c9368e9 SHA512 a1e720ba9e6d066121ddf88b47aa0ed15576d6e7ebc38cbac2565000b2ddbd8c885f4fa4143df2d1cf47373e7122f2d5cf79d0436c68d6ad16b5f0e4e16fc298 +DIST firefox-102.2.0esr-kn.xpi 485576 BLAKE2B 63fa7fe94f65a7ec309dceac2bdca77401f91318d76f6f8e7b980137c566b82bbaf3574eaf57a6ead6097abf634705a6dc1c529d5ea5441a5ecc8f76b4986224 SHA512 02cee7c414ae6d1f51a98edd05cf731084e38c57db061a70fb6b2303105c17dcde290cdb1e6f123c8dd67bb3dc30b06dd50843fb8106faf9bdc617fb6ad5ee94 +DIST firefox-102.2.0esr-ko.xpi 570098 BLAKE2B e190edecc2f2f29e9c0ea983e1cabe0e61c2a846389b196a9fe8f9281edfad03ddedc20ed9c4198bd04ab176760137efe09159f73be16e73f592dfa1befb88e5 SHA512 f0b2a11a7badae6c0b97639969575579b212056897cb44d26fe5894200f1d5e75df1152d3c2cfd7a048f995b405a5c8d40fe5ec86805c48465de60d3fe592e13 +DIST firefox-102.2.0esr-lij.xpi 459204 BLAKE2B 97d6783b0df8b16ba750351448e54d0fce7c7ca8b68d89906ca87cd945df13e3cf353cdada7efac95e66e85bb844fc99107aea15e4b8c3b1aed7aba3a80f2c2d SHA512 13cb4625b80879ec58c1a5b9d971cf37885b4be9b7dc52d29bff168e90b43d5cd67513ee6a91c8d9b1ce92af6a8cfe6bd22d7e2fcb12283b26c0c0ffdf3735ad +DIST firefox-102.2.0esr-lt.xpi 549846 BLAKE2B b310c4deda11df8696ee059cc765b9b8f424822f3ce0045f1415c96c2884f2f709fbae71980a70087b34791b8a64c6e7cb9cde757e6fc5c44ebe5dbd2da06450 SHA512 cb455972603e27a68e0dd1d84a3ac6b049d848da865505745054bcadbbb9a51bf89704b80b0fdfbdfea5b94d4f8a0ddc49809bbcdc4d0abb4f2beb52f206848f +DIST firefox-102.2.0esr-lv.xpi 452075 BLAKE2B 2a09ee36053b2404a3f462368aaba8614cd8a79ee261642ff5b07847562486036dd86662d21704908433ac4976dd0ba9cda022b99aacd7d56a2e6714b0310c19 SHA512 58cf8de8822b02053a6e4427fa82ba848f7eeee2126ce172b4cf3e870feb3826275a718b14bf0a27dce8cd2387cd3f0874a198fb29522ee628c0428994e7e706 +DIST firefox-102.2.0esr-mk.xpi 458899 BLAKE2B 05482b9e20b9a37cf1b7b85665c8f2c618f07212ff12c95a4d554f9c8297a0c2270d919bd158a7453be87bc2ca0125ebffc8991123924868a3d1496da70020e4 SHA512 640cd99a0b1b419d576181c7bed9db50d41ce7665c5e0cfeba8700a71a7823eae0140a261b0aaca544e28a99e5d5a32eaed3b7a095b78dc1359ecd5d93fd4c62 +DIST firefox-102.2.0esr-mr.xpi 519586 BLAKE2B c61d2aa57ad4c35ce2bf54bb10b3e7978552b1de871b8c646ad095b79d020b187dc75730abd58ebd519178310879aa939b1f76cfa6cc278941ad09e87acea666 SHA512 c7765ebbf6838a92f560aa08ec2110d0e7ce9f24f3ddade3b8471d9d57bd2c0b74b8a535bd037e11f0a7ff5fa6910508578cc899ad3d5ba32741e7954f09bd8f +DIST firefox-102.2.0esr-ms.xpi 437308 BLAKE2B fc20942a113a56d06dd2883d21c46a9530dbfe36d53f61e46946f1362d138b0bc5cbeb488a98dd57adffaec546dd3c13eadf029c61980be908bbcb2bcf395ff3 SHA512 b0e674ea53b0f0bc9f0b77ceb18c6215df2e2397050b03c363ff4c1a11d584e03c04381cbf9d6f9c8bb7a8fdb0544beee5884728c7ed057026eeb3c36bf09d8e +DIST firefox-102.2.0esr-my.xpi 498767 BLAKE2B 22d95369f2fdc8b3089dce3af33b69b66032997730c542a89e0fa7dc3db3aa77a1a894612df50b98096b112140e46f5dcc9d471332f732b72c2765864689ca35 SHA512 753842f43580616d4c3cea461e1775a6ab24793adcc84a96176f0e04ea8edc3b8606c899608837e9a7ab2f4e8d81d2f8716e0a14e043b9edefc0c6246d1783a0 +DIST firefox-102.2.0esr-nb-NO.xpi 521322 BLAKE2B 4e22796207e61c6cc3aa54faed9688fd82cd6eec2dfe52e49bd359582bdc43e4adef16cc9be9114b418faa9ae968b9ff77498f229d9b3df0ec201c012d1e511b SHA512 94b5c9f624e45aff6b4ac48b3286807e8b01fe276fc2f5a0e416e326bf4fecedab6e82d2c114a8e6c9227cdabc98004d5bb44e22f228b759dcf819180d17beff +DIST firefox-102.2.0esr-ne-NP.xpi 477726 BLAKE2B 30cf0d17f1bb77495d834054a3adff88e268f04d280936f9bcaa5821a8f8fbe7cc59fc07802e47d79cfb2aa21fa3f51fd2056b20e16749588744aa6eea49d8ec SHA512 970d5761a33a8e68ba0d782571e9e0463017afe4bfb65485a54915c9bbb2c304d695921f007bbbe2b469a5a28dd2c6bca42091dac68144a021fea69158429b05 +DIST firefox-102.2.0esr-nl.xpi 528931 BLAKE2B b4d448b0dbfde84719234cc53a22c3383a411767dc858d4b83628ac8712a628c750b7466b2ced3ba412f8a5aca42c620f22d32111499dfc634477c797e60043b SHA512 158eacc4afe842df0bddd725d9c2941227d84e805763d8b313ee9fe1f065bcb4a8ce7ce493a362e257ad000c1b98e31a7604cd090a03cfcbb355a551e5bfb02b +DIST firefox-102.2.0esr-nn-NO.xpi 523254 BLAKE2B bc708dcd0a46ab2613f3a9720ead3676abfc82f152684c3f0ed66e687b3a53c07706db699adeb55dc1bf3f1fab3110a8a4ba2cca131c90bf0429ddfa91a78634 SHA512 0b2be5d135e5d9f04fce970085c130c87afc4c78963f9f64720fcdf73b59e0d1e9ad45868a864aaa34b7179c7def805d775d7471624f281ddd1aa09405747474 +DIST firefox-102.2.0esr-oc.xpi 544581 BLAKE2B 4bca4ec863b3ea9a897580d1d9fb5cf45a894a539619a86f9e8db6eac4ddd330495fb7adfb90ab6c15f3ac9dac338196b1654d07f449e385a0e7a372d8751f0c SHA512 2339d6b819fcb8b8f2d431f27c53e147004e0bf7e6148acd78a464ae60c3dae09d3ac2e9d2fc73e6beeb38e2d577b15b591ad164db5c5f7b244b54aa4c58a606 +DIST firefox-102.2.0esr-pa-IN.xpi 587402 BLAKE2B 0f64f3d54aba2f2d7c23ce5ab62adebc562c15b36bf628bfedf9d83e9e31170208564a404496aa46301ae5b583d4684a9d5b03ec0856ef8ab56d01dd45184db8 SHA512 8d4234b1aa7187b64cc7ee6eedc8fba0081c569eb2878ca9cde8f758b54f9761c4f24c9c7a75bb3c0e96bbfd1615ba283ef87b8a8b8cfc79f71e0d2ef229bdc3 +DIST firefox-102.2.0esr-pl.xpi 548922 BLAKE2B 319345618f30f1a463e47c3001e0d33ca08e8e5d10580e1d53bccbb517759b68b609d6f3e65127466717bf5b77a7a75cc9df10a5f1d676e9b93a316226d41b2e SHA512 86f370ff0d826c2a9c2aa318ff2bbe1fa06dc6c26f9a19d5261f41f5ded742d2eab1748ad9e4d61143b67451962921fc9ffa38afbd65b75d1714bd97dc782337 +DIST firefox-102.2.0esr-pt-BR.xpi 534190 BLAKE2B ca3d3af63b1d568321427be97074c0482478ce17f96661bc02f686019e7946f351dfdbf4c738ee5aa83ca464b240b14d8b1f177f8abb774265ff626cd2e8f72a SHA512 974229b833c74cccffbb0c7d29e43f6c4dfd7c38c9d578b93c7b551a648ba737cca5145fc11d88cd7f8b2c654725e8cf77aaef47adbbb80ac14f8588bec88630 +DIST firefox-102.2.0esr-pt-PT.xpi 538018 BLAKE2B c1a9dfc56c53f3797c37e2b0512d6a8f904dcac1f7a59abcce19305dd447822558497baf9729e6d27dc1bda78dd7f33ed0802ece499de407427a329955cef024 SHA512 dc7f2e53ace6344bcf79229b1923fba7ceb14259ba554a659fd2f7716d1c9292cd97f05c60017f7fa23594f6aeae03174e27bada7bef36bab8bc8909ef76f73e +DIST firefox-102.2.0esr-rm.xpi 528323 BLAKE2B eb7082866e30216f3bdad0a8eba32d41eb1d9d4860656b2af797255650a2f609f044886ba9e72442f30256cac4cdbc80ad67a6e923b27fd73c9119c0edbff155 SHA512 fc259606b15627de5930d380cc3c9aec79808ce71ce3ef147ec961a9ce8ac5a3996603fb5faa76138c5c5779bafef737ce788ac05e9da9255e4fa400d1aaba9f +DIST firefox-102.2.0esr-ro.xpi 515802 BLAKE2B 52cfaf43f926eb3a870a767fdde9d700abfb379974590c68c0d416b21d1861e4ddf626937e7f8dde4075af436cad0dd5a05e8f98a18197c02ab24ef5e6c3af86 SHA512 29f7fedd2c5ccdd197347c3c5fa550c528b55f78c9c2ac96d3980b284df4b7a0dfaf7b9688a13001bf7e0d766cd33577e589eb10380f838f2bdbdf2c743c091c +DIST firefox-102.2.0esr-ru.xpi 617124 BLAKE2B f14ac851cb617fa9fd788038c84c07d4836cf13e346487e46533da8c40e8738f3b40f6883b8de46b3b0683d1d68a311aa87b638634ed47fac0e81f4325f05b82 SHA512 e894d11924d4f2df65f67a4a5187185c54604b008ecd0d28efd268955d1c217652cc45db093e69fb42b473ee494b814669632f603e504ccb49f0616f43c0ae8d +DIST firefox-102.2.0esr-sco.xpi 485596 BLAKE2B 47a9d5b3cac50a4809eb453e48f89ff4b2a75dcf59ae721b3b855900cae8d5843f5cb75c85b1805b2a95e2593f18082718f795f28ce20cf51bb25fcdb9d4812c SHA512 8e786a5d0c650b98b861ffa5c915f9e869ef424f2e6aaf91d003375b3b78f57020ced95fa6066f463049d9264fe900a00887c9c8aac025a9f7d5fc132846d4c6 +DIST firefox-102.2.0esr-si.xpi 473408 BLAKE2B 9774022c40d5c7ed91c02f61167761c493d1ceda424d1aacb5b9fe0109d1e68ccb69b0e5114deff86664e15dc9cc4e131f1ae493f526e63fa6e74379f19f2b13 SHA512 d088ec6b5df8852f41388458dbba00c3a9ec23c3e0c6edbd6775355bd347a0a33aace032152f972b96b1f871f0d6ca8ed8a0fbb75beab5f69b2417b11f5f7515 +DIST firefox-102.2.0esr-sk.xpi 557523 BLAKE2B 60b7799b65c6e0c30e0b29b6e18b5f5e244e8fcb3cb4b8aaeb70621cc22c7b76cec3f99abba3c1b0b1f0378a3f4e532de56414e583a4de3cb60da3709ae2dc3d SHA512 8b6491c8fa8665a7fad7d12e4aa1e34c96512582576adef5f8462582bf2655e99c323c7a44d3ce9a0f4655d0bff52b92190a223a45beb9357838fb75003e398d +DIST firefox-102.2.0esr-sl.xpi 531190 BLAKE2B 5a254b1a400dc2c554783175c3702cd45ee0f1eb8b81738669980884adc919f9186c92831d7fe04e8e31bed8561d0e3a42a84e99bc4c4866ece689085789940a SHA512 3d15bda3e14b0d40970392a8069be1c331d602e34c2a5fa167102cfa7a19f546b73aa0450d7be3d9a213c6ec1b8652991c1de08b6b1063da54ecdaf4039f7a29 +DIST firefox-102.2.0esr-son.xpi 415193 BLAKE2B c6463a4633c6f9801ae4f67cb4bbf1f79a62147806d847306a0b2a30fcee7d0eacd6d74efac02374146f9960827b5eb3705e604553300486975d58aefd274310 SHA512 c25136462301491d348aa594c11db1ff2caa805522340a959aac9e95e6e6fe6af8ecbffa7403a86b3fa27d2b46ae94ea1406d3057c2cc7852a279d776ec05f76 +DIST firefox-102.2.0esr-sq.xpi 546098 BLAKE2B 42667ffba53b320e5116cd754ed0eb4eb68a0ac3e736db28a77b79e77eb16a7699c05e861bc91faa48b1dfcda935c5135c01e260c024a210dde943f1953f25c3 SHA512 5d1856269c5c9a7bd131ad1a53ef3c10a0e0794c3f1a342734a1ca7a960be0a0fd26387b30d83a7f8cffc0eb345bbc6858ca445932a00145864ce12fb6ad6cb9 +DIST firefox-102.2.0esr-sr.xpi 571127 BLAKE2B ec066162fd0b1093d9aa201482e70f4404a6c50c4f6adcc48962e41e35a06fad47b4eace4a43266b240ad863689d84cc94c0a98aa4c8530b9f9864fcb8835461 SHA512 770abf797de1b304fa7ce5118f46616030dc865df0b12e3f66f3241cb11bafb69c3769c6552e51eb4694bd9b7adc1d8fccc808ab476509902e341a14c88c1f9d +DIST firefox-102.2.0esr-sv-SE.xpi 531432 BLAKE2B 7161b592bccc98fda714dc79b89031fb86a285f48945f7ea7a948f16b100f35925070d189fc2d2fd2f88216db9e378609ee165094115f9e16f1444f8a277d460 SHA512 8bed5cf65cc108f4da9c703b43bb2292e50e01da8f572e73887e8f8b5fcf2b89bfd57a781c2a68546c64a788dfa39adcf0242928cb3d986aa9ae86d18b288995 +DIST firefox-102.2.0esr-szl.xpi 497440 BLAKE2B bdb15f0fc93ddc96ef4a9b9e615bd4627820e3500ebb6878983d759bc537eeb17e8965cf79b970351a59d85f77754ad03091d2faaec0d6159621659fc69d27bd SHA512 00a1e2ec15f1e57831a43c83609fa75cf613642ee12bfaec503fe66e2b4e44f88315b9f63e48ab0678e2b5c165d8268c007e5ba2f063c5d608d61804780be85c +DIST firefox-102.2.0esr-ta.xpi 499404 BLAKE2B 08d6aaabd78be656ffaed155ef40b0c82a969b0feec481606193c0d17d36c72653d7a24fa7dea5a94d94052aa6187107f2dd30e6db227a6b13d0ff31f0f6aaf0 SHA512 ee53902c32bf450535723a34a5d2f0bbd15d191e4a9af4d401f733629ddeb2225406a16b8dd9a0472ab7e11fc5d0c5639b949d5e0bc7d4213165a974ebca4c1c +DIST firefox-102.2.0esr-te.xpi 540276 BLAKE2B 579e7a0d37cac6de5a08ee872a4cd13445c6461037c757aedc4e0791340d40c4d4d306c39fad3d912c02941f3dab0e480633c6f91391237a212fdae3a07528e8 SHA512 6f03dc3efc6ed418fd660f4f003f0ba52030ec3c0f66f43a211bec11def28ba0babccd754593ec37fed386d79cd315c62f6d374eadc4bae3ceb322c3d4be5bdd +DIST firefox-102.2.0esr-th.xpi 598741 BLAKE2B 70f344a320e7d06a5e57b3319afc533869aeee5864cec6b5f278e313829448df40868cb297ef9e69ccb323121f94407596192925809d8d639d728a58257a3007 SHA512 bbc1dd9d4f54a36825105f6c9680beb2f28f2e86ea8a85ac83a18eb210f9c8cdd9bcf74c6c8413ec171a021246cd07866b27cf18e86595446d688fd30b6b3908 +DIST firefox-102.2.0esr-tl.xpi 505604 BLAKE2B 61e811cc002f3cc49c29a0cc96bdfdcbe0d049b18de099101588e0f5caf92310572903bb819803e3cd8c267a493f80c56a0b06a29a3e3bba0dce58ef3bad4e36 SHA512 e0660882f6246629d9998aa52d5bd6857cd20f198ed5b5430af1dc5309a422ffff136ebe5fc210c5d18e280d9d1ace0af01daa64c93365198186fea6e749642f +DIST firefox-102.2.0esr-tr.xpi 544809 BLAKE2B 9dd365210108ef3fb897facaa2035936f09682e11add793acbfbdff2327c471125b756c74fc5a338b0372eda4e773b20058a9776c08f85c69d73f72d09b25fa8 SHA512 0f780daca7f7c273054ac9101ad228a23a18735b4ac1df56e2d1b42299056c03aa44c337d53b564e36264b8c7d7fe362bc4096d62d467ceefff6491192dbaf99 +DIST firefox-102.2.0esr-trs.xpi 477876 BLAKE2B 8f862a3ece2995caccf8c517c159adee32a5d9fe798c1be13f49235bcecd950fce57f1890c9af06d1eae7a798755292d3fbd66c8f783fc1263189de44b64fdcd SHA512 c6d8ec6cd433e984d1697c381b0797ac8a2c4adc6fafc7d0a2a72076b1790d7cea694fc753b0a4dfd56acc806184327e0f3f39fb9e149a20cbc0565d13becd26 +DIST firefox-102.2.0esr-uk.xpi 610935 BLAKE2B 0560f6ad934344883de0c87d7a26346060405d8bea22550f0be0c61d4a82a9c86959823d9d5480e397df3885272ee60cc22bbb15fe669a21af8af8c4c27eaaf0 SHA512 f7fb1b15232ecac742c8715a4f55022498300bc4643b55c7df98e46f670da327aa3d3749e22507f9feea9b1b95789d3d6da4652a9f3f91868dce064dccda7bcf +DIST firefox-102.2.0esr-ur.xpi 547846 BLAKE2B 3dd838eb21ec5abbedd46de8592525e3b65d82ce38f1d8ddf3a966c78b52c8db85b48e1f9fad61b1cccf9787524bb86ff6b79c55eb5e8afcd2055f112e5bfb0e SHA512 1bf89153ed72314b79a5e919ed3911dd35b3c2f1c7075a7c11cd51778aca78b2521222e5b0e44b5ab4ad44760e0c92adbfc7c7ba65756471beb84deadb02b1df +DIST firefox-102.2.0esr-uz.xpi 467341 BLAKE2B 6567e0d6b498855560c86c18f77e43410a2f321f73517e967e6a6701f013fe2cb1a916c36014cff842c9bb35e8c73afe9bb59b5733d3fdd1303cb147ad8a4ac2 SHA512 ab4cd7aaf7dd400999efbcb575f54f696670e47641b20c4daa7d8465eccc0ae7f9bc64667b815088e64ba4fbe9c400c72147b551fa12439cb7e7c6d18fbd405a +DIST firefox-102.2.0esr-vi.xpi 563716 BLAKE2B af0ff48527f4ba9ae66ea09530e732abec0ebcffdad17901ba46d0b24503fca83e4b47e44e0dea27497ce3d8b52a38f9dd7030982b4cdf1d9c9faa47f97b99ab SHA512 d1ba9b6c9646c4d7f3928f212454dbe2f1bb64169583234d96568b28f667d8c4d7dd696e12c15b9dd47a8f73e4af689fa3c2658230a9890a91cd83d2da3a9b22 +DIST firefox-102.2.0esr-xh.xpi 418249 BLAKE2B d7001ce2c211a5d71590c9fcc43dbf479ae3d262839b8c5027e80286f7a30fdea36c1830f6aab0c8b51d154a88b23f96029779b0194fe53a65e09c7d3e61b81f SHA512 2295fcd3a8cfa5ff73cf9664b7690c6f06d7f0ad254588c4da8fdd555ad938dda4b47def44b54d8f94fcdec23615392505cb92b7b0b81065800c7c8e7cc87d92 +DIST firefox-102.2.0esr-zh-CN.xpi 566196 BLAKE2B 0d0443a0f98b6ae856eee288a56f4f56911182eaf9b919834eceec49c93015550ffcd1aa2c47bc8510c0e1b728ebd3d17740b313d23d84b434765bff5145df66 SHA512 4fda8beb539fd6217d56f2dff889056e5adc6e10b262faab1460653847666c8532d143f3837429c81d4868b830a2a8661407cb40c8924319b6a7b3a22f9299b8 +DIST firefox-102.2.0esr-zh-TW.xpi 567162 BLAKE2B dce18534fd98658ed8adcd4df78d2ef0830db508ebd23e0ea72b41c05d7e25519c25713826105840f3f4f401f540eaf26dd2c9348c80b67ec1266d6789b947ae SHA512 99125bed1cc36f1c409208c5e6476443328e5f5408d45989a99d90ccaec69fed87fd4febd74369589cf6f44f08c63a1fa6bd3bd1b3da21dafc51d627459554b9 +DIST firefox-102.2.0esr.source.tar.xz 479840072 BLAKE2B 00975ffc02a11619d971731d53fbd480e9e6940d2cb9bd77c529b790e9734db85cc48b4e70d5acf447d221620feb8e9d9b8d129d07f270acd0d388574b129ee4 SHA512 06d753867ccfe1b2c79148cc60bc816b47a2abfa98219808868e9028bef1763d982ef7012698d06b8959cce79163d7926baf5f9d5ca9daa18c51fbf0efc59993 DIST firefox-102esr-patches-02j.tar.xz 19688 BLAKE2B f26b8dd2613712ab49db34247c432769386ac066238b86c0eea367cebbd167334f822866129d0874efc35da4da686e6185881649b0b3095dede28ec8c658a3b2 SHA512 456cd2b7d9f907080afb5225d353154117624fa938f24dcfae7ada03f5b39572e5d6d6e1a4bba7825465b48f6d38b04e5c0f69556c82d4ebbe1463e11dc809d7 DIST firefox-103-patches-03j.tar.xz 19152 BLAKE2B dc4080f058bccfe3e092834501ee6210f44a02291d177b3aba5ebf6909d612411c622c794f30437136a8826c2bfe94f568dabdf05360f9a8f14dbe742404d195 SHA512 6edbfa089a0dd97a987065d63c4c2cba417cacdd45e9a6081193e87cae60c38e6327b0cdef0c1f272e082e985289d9bb6807caf262c272165362e696ca974010 DIST firefox-103.0.2-ach.xpi 454183 BLAKE2B e02657bff95c8866bb7486982c3b13713b1701dfe5c83ffe2d769eef8614b096ab61801a7b3b80058771c4995345cb724393be2aad67f175d639325b112f1155 SHA512 52fe30dee4414bdd8e3cc185044e16308fc02e1d37422f97ccd4111cec7e1e3673cce594b74c523ff417a046c925c703227589b4a2bfc5a65d627a53402309da @@ -205,6 +303,105 @@ DIST firefox-103.0.2-xh.xpi 429254 BLAKE2B ee70a4e3eb38484c15c67299d9bdce588b672 DIST firefox-103.0.2-zh-CN.xpi 577419 BLAKE2B 787347109e5f8c3c1ac6f5584f83fe5ee923d85d3c6e690e348e1a39589dcb880620f1a538e220a0fbb6a465c62fc5c04c91aa6900df713b65be17d369af4402 SHA512 cdbbc43b338b81f54ac987b3b5d1de2c0300dcc2a9f07f0a519aa4a7727f43edf3f638e58080af129e29aa9a4a5247fb0f7089c4aefc121056edc9e548a4f2e3 DIST firefox-103.0.2-zh-TW.xpi 578012 BLAKE2B ea13d0d50b919e3bcc65b95cdb7f6f1162493f6fab4ba083586b980ea737558ebebb49110b14775ee0f2fe680789edfb05dd20241e0887a62ee89cdcc307d5b4 SHA512 594ded581f530dabd461df11e1d0d5639a7da0e58f4546c1a82347b96d181dc4b2bd7a77751eb540553815443343a1e3432de7ff1175962b3c1671463ab91188 DIST firefox-103.0.2.source.tar.xz 481280156 BLAKE2B 597d5ede55d857409dd2efdd377250b8a50fceb3eb704de4a664fc2a128a09ef18d86d4c58bc18d19a395784a553ecb80eaf83c4654857ea317d2f044cd05c69 SHA512 f13984bb551039c80ef731931f08a284f070142ecb479b31a4caad026a6b535e3fc7ae506b629e933ba5f5a1676f14b6b36d031d22584170492676f8727c822a +DIST firefox-104-patches-01j.tar.xz 18388 BLAKE2B 97386c544a6ca776476e3398c621b8ab56eb39742403f73578aa09ba4c9dc015a752fa5f67f20a16afffafa6f85616e385d181b8c8110d681a95c3ef072438ee SHA512 f3ee1ad35a623874e03462840afcd3674a20f024378a0c0ee49d643bd0e39e063234cc0c4fa83d978c13349fe3cee9d8ce9b859f609912713560b1fcfa39a7ab +DIST firefox-104.0-ach.xpi 458331 BLAKE2B 94db0b3efe8d7e68696d1624fd81fa6cbf6754e419a571f9a4e7d07b8570584516da895ccc8b8d657e0aea94160f9aec40456bafdece0ba3e2d66223959f04e4 SHA512 49516fd2f7b5e6cec5c8f708c53a47e9ee4fb6197a50b80fc79d244943b56111f7dbd9cf37912299d375a51227c5a94f8ce241eb742168e393e09c439f0bb822 +DIST firefox-104.0-af.xpi 423655 BLAKE2B 13763a97729c2ab8e9512cc4317ac1f95e82dbf1adb36a3cdd9068f66bc01da66cdee8f9a708ee06d59a80bafb7391707ef31eeb59a6c532a64885610ac8e072 SHA512 dda32a490d324c50a62e4d7fd3e1ac8317f910deb6826c39eb3cc8979ec1fa9d41c53d23e96a8a9797ab043e97d37074ed15e0125b1dbe05c120615a25940d95 +DIST firefox-104.0-an.xpi 502551 BLAKE2B 4db69efe6897180263e93be24515ee0157cb9fb622b7f68b8d28902da0a12ea9d4c60b021fec348e7934e7a17620e1656c3bf52b3855fbda6bc70dc833a8590a SHA512 b12e54842696b7add05016d147026a5e9c2acf5714ab086d3b8fa9ae53640896a064971d35e026f9b7019ae7afcda05527c72eba5209e9c7c3b7e9a07fc51e8a +DIST firefox-104.0-ar.xpi 565451 BLAKE2B 520e7c8def1587c768a440d36ba8aa62328635cea13ba709371fb633210200ae092163c09ff67cf6559369f495309c5df5cb27acc944181479de774279044f34 SHA512 65723573ab141e9fefd13ded93c97c8f3bdb01a7076663cd60a3988e34a1a1d4c9f3fa388166cd51acbcccd4d7289d6499eb210ccff9495c08f1c90db43db6f1 +DIST firefox-104.0-ast.xpi 498352 BLAKE2B f220cadb69532410ff499b1ea45b68e9b465006ab802febdae4cd785add5c62055689598f9c0be25b3d4cc504d5eafe7bb8d5d9dfa6d70389ddede823be11b79 SHA512 f8c3800523d2e5b1629a771dcfe0a4c2dd0176be1b886eefd0dd3901f936c591f456b4b022d10842804859931b33bbde026f3816743df69deb9888b1b9e69b8e +DIST firefox-104.0-az.xpi 489596 BLAKE2B 40165413ba2135485d10418d44a6fc2a5f79fedf94efb7aafb44e16f079add2804ad3eba7cb76681f26fdc7a69e561476b6ed721e2a5b77bbf684983b0dfadb7 SHA512 b25a6a6e7ccc9a2ba29b9172474a0edea307fcd05efc3d4d3c11b7b586dfb5c37e33352959a3f03337bc1fd11969c53e62acdc8dd4a46a3b62095bf996aa3d22 +DIST firefox-104.0-be.xpi 637258 BLAKE2B 9afb6204fe6fc4b0fead747227a3957f607dff11f023daa11f5877035e3177d7abe563074f63327f2344cf1bd45c6fa6a3df39670084dad384a97865c2b7cdfb SHA512 b4aeedc167268bd4f769b1147ca2b968806343b0d3e7ea70475fed52a3656fd0e4d8b881e6f5c5a4d8dae06423c2cc4e91532555ea1fa8ea42b7f15971be11e0 +DIST firefox-104.0-bg.xpi 581957 BLAKE2B c74be58e377ee9e16c73252fd572ade670d1d8f850fd17ca8e4e4eabe6a56086a37fd9b4d3f630c6b93fc7bd32451fde9b313ce51c9e595624034b9a4c06db31 SHA512 e489927fa4a4ac26257b7424df543d3180ea0e20b72667bcf6fff591f2a32ea9f744c0ef0ba0b9bb544fb628cabe117dfb67e350f100a7aa9552eea5f1a32307 +DIST firefox-104.0-bn.xpi 580164 BLAKE2B aaaa821ed62c3f1eda70441bd5513364f7003558eb08703e36b654de578ba457f145170be93338a1924f6c2f33b01e4e3a0b72214422c2029e0cce2073558924 SHA512 74a28095852498379c177b8c5a4385767a716d097ec542d4ea07f76112c70bd2f18217d2490f62a3b970a4ca8916b7ab66a0624b7cde06b3a8d12ef47a582e36 +DIST firefox-104.0-br.xpi 535100 BLAKE2B a2ca33190c8ded85b82ab0c2028662e5facdb1da6ae9f4ac04a2285cd416378cfdb9a510f18df008f5e5ff3fa263422c00f8de741c0360a40c04e4aa26f8ed9a SHA512 28633560e8e2ee5b0c5ffa296a5fa7f7a5c6d04e0931cd7be598c75d9a215d18a476365a5f48ec44e0f9b93c0d7677b00102d8c956c5e148708f1a37eff59242 +DIST firefox-104.0-bs.xpi 466917 BLAKE2B d051953ce0682f4f59602b99343f7bff3d8620b3587f292dfd46a621256d5089887b12833d00ff149014b5c065af3b22901e26525eb40d4724509ce69fe0bf62 SHA512 2ba990cb2bdfc119a1fcd19c6f175961e17d9954c66dded49a34265117a87579b9d8207ac70db585c0e3f0da35405a731bcb959fa60e12d99fcd01010d22bbf9 +DIST firefox-104.0-ca-valencia.xpi 541638 BLAKE2B 97f4e798ebbfa1987d67db2edb74c87ad296cece2da0ca6ad28493f31f97a88a5f926f886a6526d5729c14b0c72d9a2a0c9169bf599855ce0d942aefb1341724 SHA512 ef3da0ef9e275fedf9f09bdb55d9c2640e6895889173f3963a03f051af581ae5c4c05889f3ec1fb56d8ecc3e42946d91cb85f6eec5e08dfc75671f7e2e40ac25 +DIST firefox-104.0-ca.xpi 538202 BLAKE2B 69f1515cd46dcd57f984b3aaf99fb68bc187bcbc614fb918d108f16e6fe26683ab450e67ef41bc92ad7f4a08f9fe108867b1ab895f8cdba9db481b43fc443a67 SHA512 91e45bfd364819ed988be36082ba093340b19f72961d64fd04d0b0050c6354de5c89217cb523c7ff526ad274215f4cc7e0bf624bd071e815d5d2307cf704f24a +DIST firefox-104.0-cak.xpi 555058 BLAKE2B 9715bbc3d7a76e803de1000d753cec6e33dbeeae0b70adfcf358aac1cf6c27ec35ef1de6b39c5481e84a5f4573e3afc0e4b4a12efbfbab3500c6a3d154f52d4a SHA512 507b65a072142277752b5a894595e2a9b6c25b1d843219a0e4f328b3050422b4e3f6a099f8d1f457c114c4635dd76d20f68d09b3d566b7e0d2d45a7f37b0c798 +DIST firefox-104.0-cs.xpi 575354 BLAKE2B 0d4e980cf270415848e3861e18861d551b0e221fd1103da111ad334c2bafb8c35f6aa948d607e8660a8f8ffb6620fc5e1fc073c38a4a506576f83b346fe4e8c5 SHA512 4767396742d3d766b834dd6918fd03cdf6613b5cd55ffbb98b7ced2aba72e9f83285b6fc445458978277403d6a4270ad5981df9d95916aad71524ce22dca1f9c +DIST firefox-104.0-cy.xpi 551508 BLAKE2B f903850a6fc34d7478c4062fed1253dc187234ea49675920f69224617fdfa4460dceb6db657589d852c423f18add36439c2a213571b91c6f52fce405694f598c SHA512 5e5b0ac86d60a2c32e5ea89dcecb8bd3f0f18b0c8e57e38efe06568f848b93be84e5564cc4b22e0218fbbdf90571e2e81c4fdd41c586679cbb861084b373d653 +DIST firefox-104.0-da.xpi 538910 BLAKE2B 93e8d2c8c9ab53d2b3317c38f4d3253e25f5585e2dde6f61227be8a10277439d3b371db5b71fba8792258b542c0a10aade70c6977c8b3dfad8e079642daecf6a SHA512 e933be4947341879f20d37faa272b14f9f04f6dfa7919a1c3f93f20c537d45edcbcf8ae739406756acc46cd425af7f08399de714b167eb2d9af61d3085b6e01b +DIST firefox-104.0-de.xpi 565788 BLAKE2B 5ae3ca6565bb484cc139d3122e1c912e62360f23f2e5e797a8feb3cf28376d0848bbf6a8f69c91cc7a62b2655517035ba08de2b9bb7fb121c3edfc360e1dae60 SHA512 df56817eba67e834e7d26641f3d3be03d4a6ed83da02b6c82254a0c53a888014eb8b936d07d57e6cf77122c40b1771b6f92b1610a6bc16c4733545cf2f7d9ba1 +DIST firefox-104.0-dsb.xpi 579604 BLAKE2B 83b5aa3ae72dafbb0f9b5ddc5d168c096df43b52a8b8e37f2ee42dbc78a38252890f17906b26314957d85fb9739f2fa9221f1728ccd938720b2a68eec7a19a99 SHA512 526f129baa549860989ea5dae89f320c4a28bc2c4bb951db79d2c60be81db24489900ae42541f653f5e58e7d24a91030bd8af4c53d1dc1e2b31d690e746337ae +DIST firefox-104.0-el.xpi 650585 BLAKE2B 1a4ab7f072563b49ecdb9fde51e6e22f581dc5094b9a7a8d32014fa32af23d7eab75d438183183d181263eb208157f456940e6d2bc1cdccd41e4adad0f6a18d5 SHA512 4319f3c8216729276b1db58e86e49a5a3af1bca282d01ed937f70ee3601b1355052f27ac8c35eb7596b53e6c00c2e99a5e5df942f4a03f31d42cced475fc05fe +DIST firefox-104.0-en-CA.xpi 517599 BLAKE2B e11742d931e613a1688bcd79eb4e52cff20ef8a982a65542ecd269bf4afb9386b9a826e20e468de8b80806f173403c646c84c5e5aa1e06327fbbea6e908a4dc9 SHA512 0983c82ccf597ca51f883dd762005a15215e693d9e4cb984b7cf7242d3078ef8ef991c79d9e8ce792db8e3ca0951ff1a4747c71f1e719714beff58901d896e4c +DIST firefox-104.0-en-GB.xpi 523093 BLAKE2B 6024918d62797d7acac22b462826327c4bae06dff247a886c2939ff0fb68dc1ac9861426812a911539ff6823256defe9ca8a0527c1d5ecfad56ec1da450e7e68 SHA512 14d7d8262e6b1a335d95d3cbfe902506a4b746680ac82bc44c585deda9567c8b2aefbdf88ef00969f69073f157e489a7d442eea99138b1fe27ada4548feeeee6 +DIST firefox-104.0-eo.xpi 549733 BLAKE2B c749fc3b91d03ee8579f7ad86ac3167e8892dc3fc124813ecb93b0640fe8d2b318e4220a5e0ecfb73c418f49a5980c31f00dd13b104cdb12846ba3aab0f5fe68 SHA512 7e2ad320367c9392d2c484fdc87620c7fd498fbe73fb4f7543ecaf578e305a5f106273fa88071f6d073d80f2f20c1c3e3124bb81f02dbec464b05f0ee8e45cf1 +DIST firefox-104.0-es-AR.xpi 560334 BLAKE2B bc349c0ec19842d4f97f18a0a4ad748116c4459cf40d41d8e0e2a8ff270020afcd0b272b4114baf3b636281c5c22fb90685c125a31665b94c801327a4b205f2b SHA512 37cbeafc705b38d6ad18c1df5ff926bf8fec66579ff6d3c8fa38db7b9157bc3ecffb489f3cb2742ebf52e085f8c22aa5ef53eb91835c9e6946aafd80d6a0b243 +DIST firefox-104.0-es-CL.xpi 558248 BLAKE2B 5dad68fde2a4713b2d318db76c2d95a8b42588d1c99f0f7705dba4ec848338912db377c49c7e42a4dca03d7dbcbc02358d6fc973c8bbc821de33671e7b717b31 SHA512 45d9371ad82f0b74991f6b24fe3296395d509af82a9e1c5f860f0e31738da0f91925a87d377776f51352c254c0efb3ce26aef02434b3effa10a5d4ce0e38c761 +DIST firefox-104.0-es-ES.xpi 544261 BLAKE2B b432f4c2cf3e5ed9332073b4584a45e9b9a4b5c0cff2ed3ed5dc7a7847a8c2d4d7235d101630ca30aa79989357939631e187ad0f76ceaafec802023c275dde79 SHA512 5eac8101614cfc165023dccc8e3f701df6827952a202b67f17e70f5112f303f7204fa158ab9a0e7262abc570ec171ad6467255261ff4b71c61c4cddd2d5ebb7f +DIST firefox-104.0-es-MX.xpi 563466 BLAKE2B e21a7fdc4f6b3911435c12aa1919ccebf58312faedcb6c68212a41ff3afb6aa9e0f9ce364688f98a55671e2838f073c0f601f8160aac0fda5cf3a232415aa816 SHA512 c9ea9af70478d4bec47b9a5b44e105b500fbed752beb52eeae399cc4be58d02b3e7b36aff2f55447a20b8b4c425e069748d79da482bcb42e24a857186ee99abe +DIST firefox-104.0-et.xpi 535019 BLAKE2B 658550be8e3f8de67795d760c4edeea97864856f6671eaa561fa8fade0c28e244a6da1af81c9e3f02b01fac4345fd05057cb22c8a643cfe0023a75054c517789 SHA512 ec3e7939e038699215875b4859c8228583bdbb4c13bc1935745e5daddcebf4afbb4319c22e9880d950e19d9f347ec2a21f4bfe96a96a4cf792a3e53a15d02249 +DIST firefox-104.0-eu.xpi 544754 BLAKE2B b9dab28948f5fdc51cb6f0b1c25a97b9764449485b7464cc5621569e4a3c8304c88cfe6bc9c7a5d0267840a8a9bb4f785b5f7e0bd23211df19de215682b6cb6b SHA512 51b67ce9b20f14c098209f0d1333751d9bb36d4e63d26902ef65b0776dbe96e7ca577f3fa4b915e32e84d48b61e70a528d84bfb65f4594835de086026aa74ec7 +DIST firefox-104.0-fa.xpi 565985 BLAKE2B 4f6bec975c25954ec89e1e69d35dfa508443b428c247f17476d33849aafc6978fa440166cd6b21563efea8ab076692d377b56da933fe05c3453a52c0840de75a SHA512 a4117a2b27d6f8da4b1606e3b119a1bb389c45b5558c05d297a28751d442cbbe68cde710a3d993719f0a0a197cc95c64f8fc4b1aacd5e11c55e8ef0ffeb7ac85 +DIST firefox-104.0-ff.xpi 476466 BLAKE2B ab36b5c3c9c400fd6e8ab8ada7870256ce4a717ecd7741e7b86bc79eb9c341677d195cf681415b4e7af4fc988822d23e29212b291c37fa78292f9b939257e512 SHA512 cb8e177ea8d422ddc4279c264a16fb76999a744bd33292f2c6d0d44d91533fc447c69435c04568cc278cd3de5c4aee291a118537c82de2528870e9fe8e9bc46e +DIST firefox-104.0-fi.xpi 542876 BLAKE2B 83803bd57bc25c6437b722e0e995ae3610bc750f11ac6f073d0e52318159962863c542a94fd5caead35a40ac5ad5493a5907175096cac269e023788d28c2f072 SHA512 604e3078513511211640e5cc00e9f9b67c03d37e77f174f1554127fe31f6bcdd1bbf290b4ce3b2092721438b9f402525b3967803ba4d30344efb36feeb0f819f +DIST firefox-104.0-fr.xpi 569007 BLAKE2B 0b0510ea59c2375eff590646914a7ac4358cae511a0cf2c0f5dc8ca8a519e8927f6aa0240751c346dc1b3744c7b28c0c60bd46bea575cfe2556e0c3ee693ee20 SHA512 f67a154c51424a1c3d7033675338b926cb82c3b63801613c4e8ce2f8ed0598ca18c84fca03a05952d83e8b3cdbedee8f2d724ace7a85683096da8181340dda46 +DIST firefox-104.0-fy-NL.xpi 550631 BLAKE2B 2d28b330616569e03fd277f9cc07d14a8ec8eb5aa46416dc4b3f4cd16c4d90883ccd598d51984cfe4d087662b3f1038f8b5469d3afcd5583c2f57e1ba24a9c7b SHA512 72004a194eb459d7bac835f586be64b91b217a8d46f131b1fc695f03850e5cd8ba4dc316ee575cf585e11b189b35f8fd644f88c5fdf2b595531ab570e0bdc653 +DIST firefox-104.0-ga-IE.xpi 475925 BLAKE2B 3e33e8bd3f060997c7ee6750d7cb8323d692b0939043e9eb0c26f7fe5d567067b54dca585b78b53be5c585a730307ddfcf359040542d5a7cc4bf62d0a3f1d44f SHA512 7a06deb71ad9c5d24815773b19da56776319adb7699ab7803a5cd5ab1111afe84c063949e4559998c58dc240988edeb5ab40afcb2b148e6efc76ed43c940f3f6 +DIST firefox-104.0-gd.xpi 547845 BLAKE2B 4b707ae862cfb440ec6db412eaf31a8135ebece868e0a4686e8493c95356a920b852ee19ad62ec7ec9b82043ce6a653aeec8d475e8c7da54ad6218201382eccd SHA512 0692a647cf07df53ad2c74ee8a9ad45567a7576b30524a5ba68286c6d99adaa2f91450401e285ccd992c69846d060b746352ebb07f9d5754cdd0d3df6bc6d9ac +DIST firefox-104.0-gl.xpi 543911 BLAKE2B d49ff519abbefc9b8f0c598a6cb76337a178f31c1ac0f45c2bd13fc1666250d0f5047c15fca8fb7581185039ed005bed19ba860c85096b4bc2a5d387a3ff6412 SHA512 04300e77036b700e49454e706d9a019872018c241d8d7ff7c235a9d5e14c0ab693004fd346de451cde02ee75d17da337fb9d355b441168d6ac4e893231a2b343 +DIST firefox-104.0-gn.xpi 570940 BLAKE2B d25c61e83ba4adf8323c3183bce7c6f05cffa068d096fcd5ed068090da3b88ac1491aa25c8b7e447f62d0d6788113848dbceb5f2c93b48b3aa1286d3f351727a SHA512 4b421c92c1490860fdacb9bf5287957331aae57b4c2d03c8506e91a83ab858c7bf5cd67fe24aee12302f0e29ae2b3ee0dfba351a81ecdf4a12b50495f19cb304 +DIST firefox-104.0-gu-IN.xpi 531091 BLAKE2B 55aea6748550c47f5071348615715869cae45c0180354f17040ebd6024105a6d34c8e51f386b81d931a47890b21d6f69bce49ece889d4a749a0eaa75d36f0a68 SHA512 7bffcd301dece01ab70d2f853d1ea5067784659ff2068f941b36ba3a2e19e1a63f0ceffdd4c9f9df4a04a26989c180ba4702408625ef191e0359774017058682 +DIST firefox-104.0-he.xpi 568688 BLAKE2B 01501040e121a13b623fcd169a0ff8c229a6a4db65aee31fd2640cfe1c44a8d5a89ba15ce8bdc2546f860ea66a3cefce76c5d1da7fe800741392faddade853f1 SHA512 b73ee331ec0dbbf6f3bf30990351cbb3131028d2fb44f6bfe86b8bba72022b86e50b65218dd7c491efcdffb4ac8664110a4264724c75a3a392a9ec50d5d5f2b2 +DIST firefox-104.0-hi-IN.xpi 561055 BLAKE2B d1a037ef7babeb48112ccca9723bfc30dc6258c44540ec1ffef35b7de8bfe16249fd616b69446aa17e73b4c2bb4cfe5508ead650e7fb5a9e0a989a89b8fff814 SHA512 956342c3771159e2b702c0300ce7e5958d634b91b723dcd0b97154567fb07f68c1ca7f381ee98d190fc8482ef18120b1799853e934fa4375de082ffd287c78c8 +DIST firefox-104.0-hr.xpi 534654 BLAKE2B 04e84fe848a65fbd9c0b96e7f73ca0904ba483f78028022cf7aea3b83b1a3ebab515e1f1b40eac40735def4a24de9211963648cab315564de98f2e8adb746eb3 SHA512 9d35261d28d6fcc655a9a58e8f3b94f07f75469f4ab2cb54fb861bf300b1cb74699b29c1e9c5a1ee140c6aedca93a6596dcb4941cb17fa9d5808f4c13d44195c +DIST firefox-104.0-hsb.xpi 575814 BLAKE2B 13697fea8a3bbbeec1d0a5357129e8280b1045f0fe6f92daed4847f5adc73aef1c310ed31afae732ac479e668b79f50f89b58fc6dbefa411cae16885434aec7b SHA512 7818620c8347de6e791abd1ba5ebe5b886ba448f3e1ef5116194f84462fd85893ef5ca2a006e61bff32b9e759b7e77b445599f89f8036aefeec96e29642450cb +DIST firefox-104.0-hu.xpi 579192 BLAKE2B 109cca0ef305c79d7b21f3a45657a2e642e42e2e70b2b78273f7ecb72417f8ed6892c7f3d32cae18f428a0f8135d8ce0cbd7bf3e79478f5fb2f52a7b131ddd2f SHA512 cbee5d64b95c738ccf04f7de20267a7d3761546320cd598ffee69393f18397a0e8f4a621d4cb09db00ff3db9503b2bf9a7b2683bc86edcb5f836655c451ade04 +DIST firefox-104.0-hy-AM.xpi 586080 BLAKE2B e1327b7dd63b46d0370681764ead503fecfd372d85608777a960c27c2e7de06a8b30c1796a49f8e2d326b862e22d6b3ba08983c8ff9bbf180e27edc09b20b25b SHA512 2bc05f0cf544242897e5825400f2aa7679d89370b57cf5a03f03de96b2ac3dfd3126e425c46ca301b22d7b69a817170413d58f99c99b1c62489c2a8007a7b0df +DIST firefox-104.0-ia.xpi 545105 BLAKE2B b8095b43c96a2e317a5f5580b677461d9a80f3444f0ede540810a5d65035bbbbed011622a697f2fdf8ee1211db1d03a53d93ed7598b1747621af010b6cc21827 SHA512 489a3334dc8956393b06191e0151199a80fb5c8c6005235c8501f659af1b7d8e3293f03b4bf019e5f9a782b8b31bc2b5d18a3316a93d368a00ce30d05f3a1de4 +DIST firefox-104.0-id.xpi 541007 BLAKE2B 6a593321f4b19084e294a6a5025d11bee525abd49f06f1966f28d713097a0798825f7e35b89af20a8b7c02ec6a927295c80c4551de1f0598b78d43b68b946795 SHA512 f8dac0cc428e62cd1debbf52e356158a695b7f7d2ecf0e31470e709a02283c63c0b2c6e13c823c0cb9b5990551d79295b507b06ef47d35a95f3835d2dfcc084e +DIST firefox-104.0-is.xpi 549340 BLAKE2B 8d049e6f5f6c9bf7da1c17b96c51223463a624d00339bd559076bc475d1170abec73eb7ef5af3d2cd3b167a9cd7c7be2ca0b09f2444bc7e18c9942f0f98710c3 SHA512 0d95fd5d8ca13986e1d5c742897fd5d4f96803275540149f587401eea2b0b6b0b20ed4607ed69ad635e52bb3698ab7e2610a62744e5e966da6b425485201789c +DIST firefox-104.0-it.xpi 462406 BLAKE2B b1b0e16f251958c1abb077cddf7f61e50143a8515dbc2d31f6e9c57de7a69bc50cdb7c5b29029aba085c88faaddb9a3042a66178c7fc682cedbaa3fff463c27c SHA512 8a796570667fc56776fa3c175f5de2e2194d9ef4b22b1d227ec5358e53bd5159e390d0f317a90e46851ee75b73a9ba5b72ede5534d6cbfe3a00996c76af9814d +DIST firefox-104.0-ja.xpi 583508 BLAKE2B ceed848320c0f2912bc6e77ea7a14a77bb7b728c761061b1ea4e307ad681d4ab9d0a68fc4ea1b83d8886039c35f2740ee0ac5ba5b3797e2cb76c11832f2c824c SHA512 9cdd40bebcae385b0e4b554861d9c5e292205b2a53738b7e3e561f1af85352809c7f6c3a6fc0f32a37a10210820386ec5c8f6649e1a88cc9d9476563adcf1a6f +DIST firefox-104.0-ka.xpi 605068 BLAKE2B 5e7dfd962487f579a9769b8c871ff6fa83aadf705112857e61275745fcb7062963bcb9ea427e6c5b92d592f7f3eefa5fc4c88edeb991707f657187b17a626df7 SHA512 ec461f54ac9aeac8e074edb534e7fee28c204bc2cd17deed927107035b1c56e5baefe7b57ddaa6cda8db67064c1a6cfd9f5c5baceb3cda0d6191090264dcd731 +DIST firefox-104.0-kab.xpi 564771 BLAKE2B 51df6490137914b1bd4141644b7eaf12698b5f75f610d1523aca662781ae7e4eb1ea02fda657ebd6baa071052e671c29807344d97b747ef917c1d913e4655eb9 SHA512 08ab8799f1ecc5ceb4a40a1469551281320a7ff651517a45b678e4cc188c3afd0ef0d79dc92568262803154a6e6a6b133c35bdcdded61fc9c602c46e909a2aaf +DIST firefox-104.0-kk.xpi 624332 BLAKE2B b1530c698f003973c3822891b06c209c04f18c49d10dfd70946aca0e33058aafc14c4e5a839129b6af232eddbcc336252d68755da2d4aa97b2945e14e02ae7d4 SHA512 ce48e2c82b9f20de27d9970d3f7657ef2cdd09886e633be0cf72a32ab13399d727a24eb611a191a20e1d935644d305b5cf9231471d93a3c6ce9434999d19ed36 +DIST firefox-104.0-km.xpi 535680 BLAKE2B 9ac973ad771501e16c1382c76d9bada8e0e629cdd9670776f7ea6b81ca88cc3f1521e8dac990ecf4589ebc3626eafb003e4a1ed8f64125a6cd0115e893a44cc0 SHA512 93318f76c0b250b16253485e720e305da672677b6b74e85e9f55869b566cd1c02961775e1a8addc6f0b6555ee7f9718a2ec3be6d602490412f6e9469af581f26 +DIST firefox-104.0-kn.xpi 501806 BLAKE2B 1adabdeff7463e10863ee0ffeadec2620d041bacccb54b1fd8367e484f8a9cc3377fa42a5b8aee6ced8c175767380cb19dbb206421485563ab4e1631667ffe3c SHA512 e700957d13adadf3699b76e5e1e0c9c8c2303529624492c298a1d4dadc5d94fc916cfe72ccae7e6349b4bdd7d40d8b248b183dd3aefd36926cfbce2b38b2d250 +DIST firefox-104.0-ko.xpi 591403 BLAKE2B 8b975a18ec10d21b4adc93e2f7d48b265d4999c5b450e0a8f92c5b75db76d618bbe5d77a43795726071a3c129dbc6f0ec0c1665d23e82acd456ed1e16647a3c1 SHA512 7392d43d023a90f9cfa822a35a641011f07f773030e0486a4c5242c76b8057fbd61123c724a3b9852a6e41aed16d95420b87f56f9fc3ade0d7df21e4280c61ff +DIST firefox-104.0-lij.xpi 474395 BLAKE2B ebae20ede959538a35b912bbc79cae94bb5cecd31e60601257ec9aca51d5eb177f65b3579b42aa55280b46bdacfd09121507c8412a83e6b98dd513a0f8e5724d SHA512 edb4d2b53c2bf5815b7cfc2d1741a438c07ebae976233ea5a884dc4012d089288a911eece01d84d7746cdd311c826cfc5135ab8652aed8fb6de9eadc5c488f28 +DIST firefox-104.0-lt.xpi 565090 BLAKE2B 79e0a40e03f0f83aabc914497052917fe07b7f6a0f5c3b5e5b7a5ee5ea3d18050a41a493fc62ff5b985d84b63da449a55523f41e3bfa7bf9a569d43eaf240658 SHA512 879f806fbd06389ed55063f742e94bf5de04d6a38937ac00ec0086d45b28f3f5453b88225049e2d0ce0958d9c9df49e86ba567852f099554d0e1243643a5a4d2 +DIST firefox-104.0-lv.xpi 467532 BLAKE2B fdea8a1cdade73784a62185555781a07af596b77e3240b5bcd572a6c40e0a2a384692308737a7a9873ec15e94aa6e893fed3d0457f417a48d8bcd7230210b4ee SHA512 dbac0c42205ed5cf6db72aa4cbb72725a81813e97851b24f7761f817591d24dc58b230a2357f425ca64ca7e3e1b720047d529cabd70cde51f91fc75abf4067da +DIST firefox-104.0-mk.xpi 479885 BLAKE2B ea00fb86cb3e7324acc357eb539e062eaf01fecbe6ee2d4acce95470ea0c1da2bbc183029e6535295b04ec6f7a50aad28b0240df5ff8bd4161519d059f48bb71 SHA512 d52f3e16263242057d943a1781908d634579fcb8364f379451a47b9a8bfdd0abddf0b56d91a4839a366559eddfacc20be1038d7709872c79523086e18d19e382 +DIST firefox-104.0-mr.xpi 534727 BLAKE2B c459ad662386a2cc1a769a59ae09a8ae42f096de5ceba9e2691a21446aa0363a25d2d31b0715b9f7a3476d03902ee9bf02970e2e6da98cb2ccc4de349242e95f SHA512 19e5efca1ba18bace860467c857096c986ac590ce2e3fc8ca1a87adb8523ba741e5bbdba5531b9b5f2316d949c27bac5d95bec7d015b20d557ea3f4c8d493214 +DIST firefox-104.0-ms.xpi 452525 BLAKE2B 312c14f4b61ca2d5f463746b5f0d76d812889d8afe73f398fb0cd784233d03ec1826a32a018f4715c2d90feb2cc0032e0ce1103243cd833c8a646ceed345972e SHA512 519619f7034e3f40068444c9fadcac7c282a40473905c1779c5675eb2182c6b916fd32a070ba89b9586b28d8a37335ca122fe7ea2a827b3f3c71f4ee0837e27e +DIST firefox-104.0-my.xpi 514692 BLAKE2B 5bdcc4f6d806f5fe8d641e5f766305a959c158ec4129f8f44101cc2415527789f309710f87c871ca506a7fcdf1c9e9f49b3db7381031985df0a4ac190b188f02 SHA512 930f0231552333969196ede4c0c88fc4d8333fa8bd1bc150e98536eaf9f375f7e791f947c325054fc8fcff8b69680a7687d112b068418f7f25ff4316130ede36 +DIST firefox-104.0-nb-NO.xpi 542653 BLAKE2B 7b4485b86d602074a661bccc379f146f733783a94b3e184011aa5a215a875f689c08fa9ab27c4cb3b30f3f88f67e596a108deb7933a44153c14f6cac0b509234 SHA512 94f5f7741d44690110b8da3f18f288d436a292d37cf0f2781c1ff75866083693172346df59afb2148344c649c7f36f5d7b3cfd941fb10ecf0961aa7d6b7aec8e +DIST firefox-104.0-ne-NP.xpi 493549 BLAKE2B 920669951d545ebc7bfb9f9301c5c551d5d1b4fcd87e9bd784a39ed17b2d51858ec2f309e92e4ea828b23c96b63a8bf49c9b567437ab82e00685485c2879e5b7 SHA512 528d103ac76bb41f93ac3c69e9d4909649a4f5deb9f797ba3232e5e7cd37a5d01a2ec5c48fbcc0593acfd70cf51703ca48f1ffe81e60902803dd1dd3b4edb681 +DIST firefox-104.0-nl.xpi 546984 BLAKE2B 26a227ca12dda2c3dbe95020e4444c371b0752f54665c6ed0876cd83bd6235533c9759c355559fe1b1323005726bd2663f5a8ade84b7517b75386b68e9090572 SHA512 28b57d43c76df781cbe0167b296aaa7292d670cdf225ab465bee5cfb6d51ec2837ffb1cba89e963857d896ad857a46ee454651a683b06fa9dee42e9573c48ec2 +DIST firefox-104.0-nn-NO.xpi 544290 BLAKE2B 2b4f7d57eda6f3b0a3c9b38760ac401ed6030dc633cc8f00bab5e3827db6d6de7490c62dbd759fc3864e79470b4d263b6278f24ecd4bf41f4979e47da06709f4 SHA512 fb6237beae6fa07f72922ed8bbb827acc76658e5db0d63673770f256b984867f88462116086b1d9993967b9161aed7983c9e886b46288d20942940f60ec1284a +DIST firefox-104.0-oc.xpi 560758 BLAKE2B 58c853a831166df3ff79517a5b468b288e9432d2566a794cff257ff97551353dcb9f672441c8e5e1fddde7f74e02b2b0e747f1c96cbfeb8768be6f4a8ed604a6 SHA512 b6bf0b335493235dec102ea54d30b315129ea8dd95b72867c5595870dd6337de20fafad17eff3ed8466ddc7c448624bccaf0f5003b5026ccfac62c6b16a62126 +DIST firefox-104.0-pa-IN.xpi 611567 BLAKE2B 57ce6ea0de4db77588987ed51ef922f7e901594417c13baf0df8ef8330e53c0b163fb0804dc965a8f93adb3a963b262dcf8317eb794f7ddeb4cbbb4e7f5b79e5 SHA512 c26380240845c6bd1334079adadd6f5a5c610253525d99694591a3acdc899814f5589b131a475f73ee18df19076a428bc891c11c0ead4e8b3f08eef49ab8e20d +DIST firefox-104.0-pl.xpi 570611 BLAKE2B 968f41f52f3fac2a26ae132142060118a2258e75360b83ae9a592924f21b88382e866c398c1e4dac8332bf8b73c86cb5f00ae2876c605dc4e15a113d479e028e SHA512 a3c336d0caf2a75a5137c1ea439f98aad02a998bdd6722aacf0cd3416da379c4d80f352251deef025954290f01d3e68c60b85a814b387735b3cad391c258342a +DIST firefox-104.0-pt-BR.xpi 555629 BLAKE2B 62333059b29022eeeb95810e5e7051598691b457b63765296dfec783d09e81a1a365d4454687f38ac00fc7026891f93f0b43037badb8412adfde98c885029bfb SHA512 3be4147fa911293afc0e2d5ba18bc7ed8b8049894ab40772caac804a9ac041712bca1dd41de031d9aea1fd94dbe9a85bd46811942bd915ac4b7b18c62f44b1da +DIST firefox-104.0-pt-PT.xpi 558700 BLAKE2B d1bcd61e0cd2c6eb1e16602d7b05cebe9a5ae82f949e237f2616d91851d3d16d223256c92dd08056b16ffb0aff5d54dcc19d520c654ebbf67ce3203bf2953b3e SHA512 b767cbcde91b42b31b47d7b6a208561aa166b8ae4e44a0b116bfe3d016df06e5486afba02d45f01c4edac3917bdc0a406a4d0d805127439820c2a29d15b28d15 +DIST firefox-104.0-rm.xpi 542665 BLAKE2B e0e671cc9033642a3c082ab842789f83499e1ea7ed5d7a066717d74d08f55eb3f2b671d4c5360f46f2078f721667e68a88f87ef10aa7536a37dcdde848f08f01 SHA512 c6af99dbc785f9d4a79102032679aaece4711ccdc6b772caafde5840f769240bb183b7a77db2b9a83907b9b3eb5530b0b8bc049e41db88e69566f5ffe79eb85f +DIST firefox-104.0-ro.xpi 532715 BLAKE2B fe35f6937c7720915205352b63b86e5515494ce59a26c7d281c9965296e64928886140a1419df36c04bba253b2a9b3cd5174a4b12934282f4809c748421c7e81 SHA512 25df5e1ffe7be6c1c46a02d93ae13320123f0bb2eadf16932149f01cacc64b9efed5719f3be6a9034c80cd21b667b5777577295efe4744e2baaf4b7791be5af8 +DIST firefox-104.0-ru.xpi 641374 BLAKE2B c32099bc077d8a499d92e93c5f14d744233ada33230c4030bf749d3e0a6a7aba69fb202c60a0f2e44e7e0731b370ca9c31f432b1a7c0acf73b3a438492c77f80 SHA512 dd5a438df1ba1d320e71aed278bac0216fbe3e4b5914ed67bb9756c294cd5999d6ab1b5ae6d893b51c247ad2dbc149696a07e494037e56a35b785f68d0da0e36 +DIST firefox-104.0-sco.xpi 500777 BLAKE2B 509f14da5b16a3d98294e498f8a18de298683261748113d075d5748e4297c5177f21b867dff9b4e4e936cbd22e60f7e98bdbc003f114033eecc40b5bb8f19a48 SHA512 f671c805c818e4c9fdee5c1852357e7c062b8ed56b0bdf7d17bd321a0eaac211e3bb6fe84a52c9beaadf78e26b1bfdd6e365669f49813212ad09164338134719 +DIST firefox-104.0-si.xpi 489434 BLAKE2B 3c4427f72b1f869095fb160217738518a92321941a3f8cfb3c1bdf511056821663eac375a45e0e5f92689210c473a64bbe98fc9420e52469a1adf25ba018417d SHA512 ab179a49625c70cadb6cd9ca2adae66bfbdfd772a35fcf478bcb1c7dca389c9a03f2d6417d47b75d10e4ca23a318562b9e579b4c4633200689285301f8ebd2b1 +DIST firefox-104.0-sk.xpi 579416 BLAKE2B 3cccd8b318fec9fecb236bea9452c14fb940dce9242d9e90f14a33d702cabaca0085dbc9d521d72743d7cfa70bdfe656869ee53fe74fd494a14fb3f71eddec2c SHA512 d8ef67f0005ded4709e2006aed4f26d4b78b8f24322838a8c2d2a2d04bac5af1afd871319ad977d55282dbd0ed7543efc469c53979fba2572a98d2293fa80e1e +DIST firefox-104.0-sl.xpi 551984 BLAKE2B 9b52cb5e081740ba63c38b1a4e331e0d603226366baa3dfa49b7dabe1700db72508f83b679c404c4e9ce78b6fad220338f45993f955acc3f5a3989e17563b546 SHA512 5bfb20254260711ac2d3ed3f86f08fdb19b4c46aeb3760268905c10dc8451b4b6457dfccfc500d781f50fe7e9905fa69af53e60d6aaa639921666f83da04d1b6 +DIST firefox-104.0-son.xpi 430375 BLAKE2B 9bf41a0305bd9ad94cf4ee00340e377079396a76e9733cbf9256064fdaf8e07b4d4dbb79062b2ab03b9cd179593fa7e93d022b904cc927bb7c8f599037064c58 SHA512 2251099532e51b0c2372a350c14876000597aa76dc43c5ad1e57330aefb99a02dc5d89a2d0ddc7ac5acd68a80c3e146cbffd0832fa907293a63627c718cd350f +DIST firefox-104.0-sq.xpi 560586 BLAKE2B 3d03a989fd29ade0d0428ee8c68d2d27232175217088cafacdc2eacc5b3baf6ef129c88f7b2ab5b49dea56b2ce9b2646b8a5d6dc49524b2fe115a8e7f84fd246 SHA512 7495b70f23174c49df83c3001152ca0b22c75a46a23c98a64200d2ce702d7376c4c5835e3a28358a9be590fa35d04ded12f80b1f045a450923e5b9ab95f7ec2e +DIST firefox-104.0-sr.xpi 586826 BLAKE2B 957ebbbce123b148bedb22b000f413ad44e0212a28a50f06a1394e4404d83286753fc15c8ace9e46391de166f8e69d6bce41773f0509bc6541764c40adbd93bb SHA512 87b0a28e372bdcc964edffdb717ea809f467b92daef17a867b3fad71a6eac42bbeef94dd61256f6b7235f5a630b0ab4dc5cb04d11ee1b86ae77558a5c69c6af7 +DIST firefox-104.0-sv-SE.xpi 552456 BLAKE2B baec0549f07b95145fc8155562860b22dc5a87624a2407f1958016805a2e54fb243deefe2be8b5d187421c7a0221ebabb0c7282a125a4e470560c93bd94e5346 SHA512 2cdcab902395e843fb229085df1e3eee5c6f8e78f158e8e0d056f771ecb7fbc9589cf58511a9e813d825123ea304f21ac683eda4a5e0f5b2393ddabd7621b9f0 +DIST firefox-104.0-szl.xpi 512573 BLAKE2B bcdab38d94823a9c6cfceaddcce73ec58bebf49d9270dcb200a5d0653d9a489dfaf802104c5a177f8dd4b9dd2bd103c2c1ddf1fdabdd237b544cf53389191430 SHA512 519baee1b2086aa2923c285b2319c4c92a18f0cb0b7fce34198680517494d97e3c04166f8d7f311eb7f5786d947626e6d6285253824a9c51d5f26620b10f66c5 +DIST firefox-104.0-ta.xpi 514636 BLAKE2B cde77ca7dda9065ec6b33a63dac37ed72edf42bc88d1f30bef962be4c3f43e90d8eb496ee4b87c4d51d39849573021eb32d5c746f4556f6c6d953e931095799a SHA512 29d3ae28a836216ab08d04499da6afc65ade4675983bfafaec9f912bf9366c6cc10e6b7148c34f23df91523e37402133fceadd213478d1e04ecb5ecfc1cfcf8e +DIST firefox-104.0-te.xpi 555343 BLAKE2B f23c40c20e0a19d8ac3fd57980f4e4af6552655d1ef38debaaf2ba292ed29c74519e009eb8271cc15409bfb542fb4b7f7a306605f9b8aa5c524eebdabdc3364a SHA512 2598c0a2d06b7c344d210c7a78b4d5498d900d2cc28b4d8b0fe7ab57903b2cec34f6e549d46d22c19cca4689f79401386c37c3eba0b713bbfe6b5fb9f7022e16 +DIST firefox-104.0-th.xpi 615064 BLAKE2B a82b853fb506f0ea48adcc7433b81f9eb4c089e2dae097caac1f072ddcd802823545cd7d26d6ac8466d2853a2326fe69e13653898843d67e260aa9164ab9f941 SHA512 85b3b48f18ca143ee8c216e20995783c892b4c6d102589d6df057638ae144c7866d1acbb788ad21b59d40ba4ff8af11176460f9886da3027101c69127de81b48 +DIST firefox-104.0-tl.xpi 522949 BLAKE2B 18bcfe8cf15dadadc3195150ba4eeffb65f6b9baccae032097235508e62503263d2a661d26aee1a81df0771ac4112d6843d02242f30b3bac14dfc7ceef26b0fa SHA512 03163c26027c1dc560217a7ae73b59eeb0166bc21e371d710dc772a9b5c50c607d7829d4d68e4c905ca068ffc57a929c2b21edc91e4421a4a2dfe64e08e93a23 +DIST firefox-104.0-tr.xpi 565829 BLAKE2B eeb8736e23b92d4b3737cbaf575b820feeadf56218c3ae68db833e48e74e1534d8b94c482250b5e57678f48cd254e36dbf34c41f5f791ef25c82b4f92c6bb745 SHA512 3a3eeeaaad4d8cb802b3e9fb9e1f7ece69b7ddbc1f18553e37a0eddae6a1965666e651845cec57adba1a483ec4df777d7fd658b2430603c8e4994939cdb83b42 +DIST firefox-104.0-trs.xpi 493320 BLAKE2B fe3ea64740001cf918d855ccc68adeaec359c7475061cfa96bb9ffcb74c7db46c0a17245656743be76ec835706f9580a8c07cacf8947342caf27df55b211e10b SHA512 3aac20f7767c97a4556998ba8e26983c55c42f4ecf04c7ac2f3524adfedd79e4387f80e486117693d4dae80702a829beec6dde1b1d57eaea5b867709ce7ae23c +DIST firefox-104.0-uk.xpi 634720 BLAKE2B 275901a26c5728e7849b5fa71a78b645dd3b27862bdbaba47ac84462fb047e3e6a52ef294ab687425be05c7c43c0028d009d4faa8a1cbeda1f61c205da604564 SHA512 bedc94183469173ee1092c862c597e10640f04e3a441141e9dde4ce839910383986327c7840c339872249470a9d06ff3edf49d3e3ea1f86d813840e158c91507 +DIST firefox-104.0-ur.xpi 561593 BLAKE2B 1dc7b04e41dc92c85c37b2628f3b094d30c092701862081a48f97a256eb95db410bdcbe1e700363d314517ff6b5d4a0689122ec274c541dc476f79f86fac7ee7 SHA512 af727ca14ea47b3bf9791d45b245cb51b8f59d8a0f9c88d358be473006616175b8cad5588d2d72f31ce57332fa4cccad97ac6d61efc4177daef6509d7e212bd1 +DIST firefox-104.0-uz.xpi 482123 BLAKE2B c9949381c88728ae4a1a0591dd9a127a51e6a224ba7e77fe1008dffbdcb1a3636da4ac375a49750f90d7e857725cfad755d1f1e86b89a7068ba8f9da4bf1130f SHA512 7b2918abeb301ceb73cb7c632eee07dec375fd0f40689a977f9b23312cceb896578f426d1111e74f16757393cd7686cdb228e0ec7780da434e69f8f1ce48c9a1 +DIST firefox-104.0-vi.xpi 586731 BLAKE2B c334569109fff41f076e3b1dd24e81fbf2eb4c23f10d1fdc667338ea17d7a1da595643d6c899080ae822a297a623a8aeef28a77efeca42d098d1b350b06054aa SHA512 65d6cf9b3dfc563a63d04bc0cdd2f95f599746a4d9e571740743722d2421f7989018eb91e07f33fb6b8e13173226e699135b403ae3a6655891f2059ec452747b +DIST firefox-104.0-xh.xpi 433345 BLAKE2B a94920e0405787bc4b63569b6ddf350f0544a92c40d23405d0cfbcef2452df42312fa413036a10785c2c8b80db343c1c7f00aa18eb993c3d989af151a85b79d6 SHA512 cf9196740c88fba30dcaa10185a6f3cb31bf1c7facafd9545867c0575d4a2c02bb95b7262c59f4441c613c5782030d907fea140955b11d42724e2acd4f94eb81 +DIST firefox-104.0-zh-CN.xpi 587666 BLAKE2B b42aceb94ab211c6a15bb94d240879df68a5170631b109445c5d7587524fa86d8011293010a41e5b6d11a81d4e95421550a76bb7fbe4af402bcf10d5e02cec4d SHA512 90f04294ee909281f7b7ef3e54c5abf9a280d58c02708fe808537abbc84e8eb18f7682545e4a191c04c4f50363aaff87064c56463104fa79358bbcebf99ab6ce +DIST firefox-104.0-zh-TW.xpi 588453 BLAKE2B 800d28e22f55ad5920788642522ad1753cc96a6e0fab0d34d49d66b09591a7c44db0c66dfb6f0d894823e865a6b15201c1111f41bbb9de8f263a36a002238583 SHA512 98978ac40a549f41cbf8a68002c0b2c2d2054515debddb102683cfda0b95851a3e943714e408ee294d7de97bacab89f9aed61a0cf06ceb3b251755c1b426a6cd +DIST firefox-104.0.source.tar.xz 486299816 BLAKE2B 9de094ced1a5cbb6a5db2ec78a9a762adecbe95295a1184a5ee018350354d67d2a861a89365cd51cc07f017cd8f7a029e727577325fa63c8925d11238b18cfa6 SHA512 8778650ffa3c2d18802c348e27789f00cff143c7ca0ae01b1bcd050b6942c149db25696b48f3c702fbde901c15fcae976ac731a456f641637cae3eb56d0077d3 DIST firefox-91.12.0esr-ach.xpi 453218 BLAKE2B 72fe82032f20ab6c58af380d52b996b1dfccbb53341483fcb787619801e707840110490e3d5d44c2e326fb15acd02b6970f70ce3cfed34a4094da0355f415a2a SHA512 e2d6200ad969b5ff1c0b5b12b5735cc2ed9e0a8d6ef3ea1152aa72b7e57c85d5cc756e304197560f9b38e6f41390ce19ab4c6613a7e3b4c48f55af7fc28b7235 DIST firefox-91.12.0esr-af.xpi 426916 BLAKE2B f73e9822680474ff2ea982184e009adb9c2cc8cb9bf357241a142c4b5e178fd1cf3b59b5f14e60d5fc76b6477574b1f1742853e292c47cdd65cb185715e4bb52 SHA512 b818e45b0245dca391503a1a75a49fc4d376df6cac6e2edd7744fe2e8b91dfd7ac31e3125a6b0df530ca67200deeb38d29269622dc1fa8b120af207346bb9418 DIST firefox-91.12.0esr-an.xpi 499897 BLAKE2B 037a56ed04712009c4b593996068a6d7b462d600d1c35aefa68c1ba6f05a0d12195a4889e8f8cdb5d3c5953a244ee0cb9da49aa48d85ec0d328c0cacdb8e1796 SHA512 6b849d10a4c567109d0cd7b8c0ce3392e25d26cc91f29136f5c83d59306ab2f5b34c101b48b11748fb6472329cd031933676618b3f1fee251457243109f47979 @@ -303,8 +500,109 @@ DIST firefox-91.12.0esr-xh.xpi 428165 BLAKE2B 4804dc685629f92188a707d91395e35f58 DIST firefox-91.12.0esr-zh-CN.xpi 575372 BLAKE2B 2dedd69253e46f9469ed4169f9e2976b2c9b8e6fb521650cab851261d93605c9b12f20296afa4509234a985d5e073a6f24e75ce2cbee61b5235b15e41f214a71 SHA512 caa56ddcadd16b76d14414d72f23bb9c41b56bb130fc8ae22cc0e357d977a763bd32ffc0216a97fef203951193a780e8f446023281b269345a9b0cc1c6463078 DIST firefox-91.12.0esr-zh-TW.xpi 576228 BLAKE2B 07d720b6b4d84fb298b56bb4f05f114a0d1fcfb6536a2eb085f4eabcf4dcc56eb33a4ae96d7e444ac54893657ff39bd116b2e8b68481624751cf0f0e6fed7c49 SHA512 289f8505be00278b79237cce58e966c0bc4a729b05d3b043b8225f1266540ffe58f0983081fed7f92e93bee26dca777b81e8944ccc350c659d0e296b129d4613 DIST firefox-91.12.0esr.source.tar.xz 379877004 BLAKE2B c00e5cc219c59d8347a69e5236a4a4f439d9caae6ab7dabc3ed8c8f9a096ded26ec1ffb53b015b86481f1d43ec4f263bb8acbd841ebf36e8a741d73e12a0a914 SHA512 323fb752488b45872b40f0b0ee1d8c1dffa16874dbff2afde19a54286c824ef48177233e029faeafa5946184e71c31c6bc5ba7ec17a571e21af64fc5f7334042 +DIST firefox-91.13.0esr-ach.xpi 453223 BLAKE2B 88b43c79620d3e0263f7e251a41c8ee88f10798982d8a0db3d8d545b83aa4e3da75140f5d9bf879f2229ea831668344cefddf6c67ee45f3169c7d854cf53a90d SHA512 795ca4fced227f29861de8fe2e93acb339d41de8b09c941244f4b62c8e7835971ec4366bcb3a35aaa75e779087248df459364c262f2fd7b294a6d7176b74e1ef +DIST firefox-91.13.0esr-af.xpi 426921 BLAKE2B c0a89908f46ba666c9d3c9e916636e5aeff7564a0f2132213aa443c5dfed474006dd65dc8f47d0e0fa30d5435c810937da98536b3408dae62c428a5f1f4bbe78 SHA512 8c8a40cb2117479c08c13077eeffcd3473b4e2fd9164269da58a68b3c0e77c339184a2edca79ae80480f2b7e41c42e598a9350f01061b424cef1aab35a7480bd +DIST firefox-91.13.0esr-an.xpi 499888 BLAKE2B 5a3bf70080e5ce5fee3a47955678a179e716474c4f341cff1ebffef0401b2b24d0e61b30c772b3863a9b3e62bad68a37ba4037b8fea332d40194ad905fcedad1 SHA512 8935e71639824517870e679bfe4edd8870b37c36a4ec6d5e4a93c9496c5df551fcac14dab397be12f80e0a3f5fa14253f1995d0ee2e4328dd05219901299898b +DIST firefox-91.13.0esr-ar.xpi 559670 BLAKE2B e3ef0c84a954ca2ccd7510c0c1f2055fb9803602175ebeb373a1c952d3fb1883753734347bd2deb22474bf16fe12a8c4a00712fee042be86004d7cf8fc09e03f SHA512 a2e2fa7c2cbbe42f8cffb45eea60084f1010a02e1b2c30cd7c03f09451cf7d49623860db3d892eabe4f5b68c445f005eb9cb063b91f3252b9040387b635b05ad +DIST firefox-91.13.0esr-ast.xpi 498574 BLAKE2B 4faa3cd0abcf640f509640c50d043d8039e8962be497186029543e1597f583b4d3fc68c5fcadfd31f8f56a75871e750b1bf261a6af092cd8672e3427ef01a34d SHA512 201cc367019ea28a9416ad06faa06ca25c956a9e5d125484b396968a81ed1e545961a664493b6e9ab840b5363eda7e43414957b6eeac3146f9a69c032ca9227d +DIST firefox-91.13.0esr-az.xpi 489442 BLAKE2B 4671332c5aa979bc7134b2b1464e1862ba892d727a4c7543fd5d581dbce62871737c8dfc38ee4e973d219200e80de024e67e39222a70c9144639a2a0775155ac SHA512 af752135f6ca035fa0ddc0ccb00f42652a93efd34573357d76777d3a513802da6a3ddbcf129f33b3f3c8909d37cefe9ac8f1146804462d3e8ebe65d032ef3c7e +DIST firefox-91.13.0esr-be.xpi 622604 BLAKE2B 4f574f4dbe34265ad6dec0d3a70523a0230a22bf8d0e86aa08ed943a4cfc4969c38dad07767d1c6663b8eb9c37a0f940db5d0b85facbf838c399b0043bb80209 SHA512 18c468fe5e132cbc856f1c64c07ca2dadbd26f15bf3316fbdde6a8c117acd9baffddd4a65c10e0fb3a62e6a6bedf5688a552d706ca02b40f5f4e7809de4500c0 +DIST firefox-91.13.0esr-bg.xpi 567637 BLAKE2B 5d36444dcd3cf055cb8e414195537b19da4094c5d525f5f738c205fb0ba75a739a520ce7646dea4a87cad078ad481eee34cc3a30ee91fb60e04a9e5d551f84db SHA512 b875720d537068d96701ac302b631859eaa06a39f42b037d5bb9298f83a21a1842a00aec8272ece26658bc188c2484576838966286bee811e3c3413866dd6418 +DIST firefox-91.13.0esr-bn.xpi 556817 BLAKE2B 3632c91e9175c4fa2efe27e26b39d617df6b354584b59432125363e92d041bfbcb0ffcc3706d5ffcec132fcc32cc678808d58b2c189747d6b6c1c28b4048c4ec SHA512 334fb0284d803458ee7b1599bc9ec93b7600e66b248857f26a84ab0cf4b8f24ef04799c6ece0ee417acf075bf29842276c4b9d6ba689ffbe3576c34994f7bba6 +DIST firefox-91.13.0esr-br.xpi 526261 BLAKE2B 6cf9f4fd76b1578d17b70cf442b51b69888f6c759d3e354db8300ca81c2ef50104a9830089ceff3c5af156ff10f7ea9f3b3e2071d66b32d07a951f6608a6675b SHA512 92f786fbe732cac4fae38a7b16aef064c79ba9f5c874b5364d33e9164e74fd1aa2f44e5363c0eb354c485ae226ea3b02f3d8423e3ee07a903f3aec95c006be1c +DIST firefox-91.13.0esr-bs.xpi 463560 BLAKE2B 90757f791bbc7b38b6108760bd1e9c56b05654a4af8a0eae7f3aaeb6522e7dd5a8c710f5857a04d0ad8ca43ac79f5fecb9db482a9e1c1427c0f7aa8c16632bda SHA512 b16fabfe09700a682aa94d2dad8bda3a9f2d7ab048cdb8d27c39730ecc7b8903b3ea7d81e7bca8e58591a227aeede6063da028f73078a09dd7a188a7d4b2f454 +DIST firefox-91.13.0esr-ca-valencia.xpi 529401 BLAKE2B 0bc1c37e4a08d9d6f7b02d36125ca8062b8f587e8028a4d97e472363d4c948097067dd98204ed88c3440245758f6ecf251cb114db2ed8f18b0a913cb55391dbc SHA512 686516e72f86480acf35534d18b9ad76853a439733a7d5b38c7b919417f9e68470f3b7fe4035926df1afe16585b0c783d505d259fd91405176ecdab7c9676583 +DIST firefox-91.13.0esr-ca.xpi 532471 BLAKE2B c8d996d5a27d1d5396bd2e7359e19a386047ebde3fe9a18687d6440c7fbd4fb59b8122de6055ddf8b9d44e120b516d849eafd016ade36b88dca00e774ca42e90 SHA512 a5c925e84227aa4deadca8a780bdef74a0bd4b4732e973bcfe5352e1b1932065547fa7807a4308d8993fb17034d7a445c3e993d77ae02874cd89e649a1f440d8 +DIST firefox-91.13.0esr-cak.xpi 552611 BLAKE2B c6ac62da8287654b3c7e1bc4f0941059e5981b1d99d35ee5af2c4ecaec6b26da6ffa8b58754ba1a48451a60bce279f257af05ed4615cd8bdfa6b4b00e59e4af2 SHA512 b9795c438b01ffd48a649fd25bb379b49d89afc084e1c2f9cbae4af92419bbc7387bf4cab82d284f1e277273c9d9a19abf444cdaf4635ce839943bb08484c0fd +DIST firefox-91.13.0esr-cs.xpi 563176 BLAKE2B 37181f88370addeb66315092bc82f1e8aaf5a399ee85c14bf94820e09b697094f89f4fb4ad33d117df79f06b5df4b36590f372eea473f36b3f3ff0511844a4a8 SHA512 10fcd15d8cc66fd0518869f84bf123f94fe04da379f062f0211d4403272f77e23601a9f10fa9b191ee1e7c6c15d32f28efb0d834856280f5ca8b78257eff4fbb +DIST firefox-91.13.0esr-cy.xpi 542220 BLAKE2B 03fb0aa335ef0ab6d144f6d99f53c4a1af389db8cf44c61b611a61021b15601c51b67d1e403d8eaef42e54e129cee4068e2a58c56ab006f6f73927af809d7668 SHA512 36edf842c83529e9174747449567258e7e459a3a51edd123d40c83d4ddce34038b0fbbf07665a5506ae8c2bc7724939fbfef5c8b743b1be383220a5321d657c5 +DIST firefox-91.13.0esr-da.xpi 534151 BLAKE2B a8fbd9e16183b57b942db75ecc87dee57973692936d1590911cc8752f142b366bb6f506c1f0e29cd5c463f760a88f3c176263f8da479ea5ca3142527298283f9 SHA512 204b67e53b2e023f0ae4282b6ad7a70f67d88ab817ccfadcae5084386d30ae3fa83bfdb2b254b0438e5a2824b16e3ce0e95c6029a19a0b16e3781f2e0a740cd2 +DIST firefox-91.13.0esr-de.xpi 553591 BLAKE2B 0f079748002df2ddcafad403c98a9811b9719feeb98fa339dbd0b747754947e31bc4633ae964216282c3c1d581f7617b3cd7fe879a02d40ca149d6328504aebc SHA512 ba6eafc9319ce239b20c5932978da01100b355b37e709429863ec4bd5f6cd9da4d36fb7e0e1e9877419e63aaea94e9e120471f6ae0105e734e82cb4b764d8403 +DIST firefox-91.13.0esr-dsb.xpi 566480 BLAKE2B 9db1a8ea575ff845a4967cd8e2cffde25d5d36781d6d227bfaf64df47456e393c1af7e9c21361d3e99580dba94c2fd3c0b56d20f508e95590550666a022b9ce3 SHA512 c53bf9302de4197dfcd003ed35b87b5b66a01314f9691197ab4a314590f70dc0132303a2a1ca3a7d62e4e667616dcc515296b468630df32ec142bee408ba7ee3 +DIST firefox-91.13.0esr-el.xpi 639147 BLAKE2B b48a02f6749b3b72b9642ce387c56572ce969ffda0f858cf2181d0e75f6a9e670c7370d291e417cccc6b2b20afce417fac78ecca087735c5b6b91566dedf03c5 SHA512 b0d8f4fa28d0f62ad130bc664f35ae29b0d9ef5092aa7d87cf577fb249f3fd4cdad93a88bebaa0f5a8f965fad8acfd22ba53440c6bc1c3d1e920e19036aa3991 +DIST firefox-91.13.0esr-en-CA.xpi 509575 BLAKE2B 0d0fa8c9b7a3f14ac5cd1228b819dd2d362f23c64579564312da62f73c27a750bd91034b8b5cf4976cbcb77abf5ad65afa267b638ea1fea0925716c5b12992c0 SHA512 c807b355617fc015d145469bae5eb8db5991d27362f6011b61e7c98ba66fa1cdd0c4e1ef0b9cd5eaaa7e39a015b7af9e83e92c9ad29b7a26d4091961ec8321f7 +DIST firefox-91.13.0esr-en-GB.xpi 510583 BLAKE2B ac97614588e269d6d60f41964706027cff6371980fcac1003474231cede283cdb4520d389a0bab3b597e708e41cec07b744374a5cbf5062f1704e4cbcee8132d SHA512 f7d6fcc931b3acbf1051a031d8904de3f8a0c3f490ab86ce6ad831cda435e1a47303a41632fd60e48dffd9b94c220c7eddc8e9b3de802f801e9408b4a93108b2 +DIST firefox-91.13.0esr-eo.xpi 534814 BLAKE2B 1f89e3fea148c1d82d8af66a7e8c613b3fcf773451639109166a6cba33d949e428d10f0e3b6c0fc2eeb4317b5362ecd096b32e30ea412b5e2b1b9e783bf4934c SHA512 2e0bfe6d7a08da837251e2b334142c06f597acc85e4e68cae79dc3e157ad39be3c85eddada5be2105eececd8648974156a5b24d71da3d22d0b24ebd4e40f354b +DIST firefox-91.13.0esr-es-AR.xpi 546684 BLAKE2B 1c40ee32574150ab515a38199ccf79bb561b930b94c12b442cc093ba54cd9911b3f8c0da8cd2f4d66a7fb96e0febe7396a430fbad220e95181cbe03dbfb2227a SHA512 73bbe6d696bc116871860e0498a15add1b10efd55574ddfecbca847e348dd98849db57bd70098879809fc820be65ed4b4230a02b9a3a2a6294c740f5b4e9e41e +DIST firefox-91.13.0esr-es-CL.xpi 546379 BLAKE2B 737de2228470868b8c2c7ed0d352d54a91e360889acfe0e7cf2e4c405301b17c643cd8246f018e9cd672a19c86e0e5630c56d779e137875d0618c140808873f7 SHA512 478509669d663bacfdec2c585c3b210a833dc5bd3a875ef13168727ce087121c643d8403bf834798ac5047169f878f45f0bcf1181c63402418cdde14b5bbea1c +DIST firefox-91.13.0esr-es-ES.xpi 537070 BLAKE2B a65eb8091b99a83e6a05e117ef59fa0b95230ffec88d14b6cd7109df5fd9bd5bd7221861731668085460dcd611cebb4395957f267353782b9ff89db381c5ae79 SHA512 ebc2ea63e8a423f0ee34f655d7b908ef0625ee2ffdae7ef910c06622d064aefded0cb1ab5aefcc25b5f7b6af7b2a62c02f5088dc8cea0ca95cc56737486bcaf2 +DIST firefox-91.13.0esr-es-MX.xpi 549997 BLAKE2B 22ee7ee40f56e4b9afbe1cd4d35c644d80b80796a392e59d312758dc82c7a03f761e48a408b3dd7e2ca4d6fc79cb28769f6fa91bb05d063b411639f0481b8310 SHA512 2afbf71292e173e9438c0aec5fc9ce50e6805d8857f6b93dc0b89918fd360c2af286b2bc222e15de3107d8682e408d1125378d050b7e33ab13cd89c1bba29121 +DIST firefox-91.13.0esr-et.xpi 506670 BLAKE2B 6fc6802509aa11bbe1bf1b07d8a0cde326fbf33f3fcc55c44b5a0fa2c9ef46bb1c27066dda4be1c1c844ae3b591c55dac3346a154227c46cf64d3ea9c9843d1f SHA512 d6b55fcbdfc6e887a739afc2b00fc61d9c0e5a31c019d2a179fb0076d821ca28f0c69c588bb7d75f415fc8d1a5a4ae5dd149a0cc7445da4cceebebf9da034ee4 +DIST firefox-91.13.0esr-eu.xpi 536340 BLAKE2B f2f2d832a0cfa7e421d7de682ae4d54393dfc7e5bfae6141a4ca8a189fbee60653bef8fb489a9d329615e2f48fdf928ebad00c6a5e74423e135024a113a750b9 SHA512 e08e799c0592f36011e56d531cc57352e84f4787be37951f7bbc8a756caf6ac0749a7bb7f40404f02cf93b78e7db94c34a53600cebb86d4c10527c082f6836d6 +DIST firefox-91.13.0esr-fa.xpi 559384 BLAKE2B c6ac0edd19bbcf76c6130260de629bb522770da0464f8623af73fa07e008ab164a9dcd52bdcd7767d0901364922fb4d0a8718ef40bb96d2f74bfaba778ef8401 SHA512 c691581530cea9f825421bdd052210f0e565ed09a68607419555e2c3500cb047a768a6786d390ab02474e7daf640d8c4f6f6edd28483f657d2a2eb0dcbb6adae +DIST firefox-91.13.0esr-ff.xpi 471860 BLAKE2B 5c38546863ae1aec216d2816472807e1b371beb295ca8ded203f90240dd3b3c5f202e8ce450083352a5c5b45372f7cd5e40cd40f89dc9d1113f5320f5d60f6fb SHA512 8027306193f313518993a67d7248d5a958b8c2199332cece7ad0f329e562837ec2f73310b13063344a1a9ba31f2444ce6935bb9cc24740badf2749c579b5df5a +DIST firefox-91.13.0esr-fi.xpi 531484 BLAKE2B c166b2d10cd22a87fa96033218188d3c79f1f8a4163c3e6d2afc581b47b588211590fc9acad2315d3133bca1927c90eead9a21a418ddc2a2333c88bc8afa98c9 SHA512 03746ffb488e09cf7b6b7b32f1c962bccbdbaf0dae433517a1cca1609210928f5f3fa438c9f9c7a86bebdb8502df420496f4b8e1cb07212b4d42046faeb99b96 +DIST firefox-91.13.0esr-fr.xpi 557617 BLAKE2B 3acc76017f989bc9e2aa8b2e9f310b39abbdee7c8b40c76691683f8b56887fa73bded6a5d0c3f93cebe8fb3563db256c30fa605e36847bc0ba53fb65ac732a06 SHA512 6d63ae25a96abfb61b31bc7d40c7544a748c4bc8b4d4184787f45b712d371b39813e2e3ed7027732902109a4861af68b433cd46ba3c70a562b369720c5f0b474 +DIST firefox-91.13.0esr-fy-NL.xpi 543305 BLAKE2B ee0719ae8a65a38ae8a2b3ea30f139e5d7fe1c5590a98b0f2be6eaa9976e2e40007e430f1ea3841aaf8b257bc192252d0f716dfb58aeeef73c64405aa2b5053b SHA512 56399b8596a100bc43f1ca6f5e84a78c3891ea61d0353863c44e1e0e5d161ad2b874ea3c991a4531a66007375a067a1f66dc825539e2b9f7a468877eb673d834 +DIST firefox-91.13.0esr-ga-IE.xpi 459833 BLAKE2B b6c09bf669e6f0cfee2e080b24ae24bcbdc954e77859d8ec93e92514d294d199681c992ace4b51482e288b429282193e3351d25ee92dfcee88f24692c2b01693 SHA512 6517f3db9ce1236fe95747695996d59dfdc249a28e8461b5ffdfc4e5bd6232fb9712199ac3c8d0b09a5ae12a19f222dbec08471b9a6ce22a15a6d05c13c5e689 +DIST firefox-91.13.0esr-gd.xpi 530852 BLAKE2B 75c49bb13c300b59041247860940092c4b3ef6fcf1d500cd8ca26e04fa75525a1f0e1e555a4be1010ead41caa280bfe09bdbb4e880ffd67021efe4287d6aa32a SHA512 9b72673c9899df87ed093d86e1505084e32055d9f6b9cf6c2c86ba72775937c7c155a240745115eb07d10605eae7ad8bfd4e99787ea82b77d689dc6656500ceb +DIST firefox-91.13.0esr-gl.xpi 541304 BLAKE2B 32a62771acba1bacd794758dc64a64e783fd0e046771714a1ea253d15f1d12d90066bc7a6223ff7b05c1922ad16288dea1090509cc4ab1378c066a83cfe8d7c1 SHA512 989b2ec058ffeb6d5bb9d6148e72469b8ef77a0dbed23fcac8310762abe54686cd129a357f6e9b8b03271b64b300fa581a5675473d95b34c6b37ba4deb7d0704 +DIST firefox-91.13.0esr-gn.xpi 557596 BLAKE2B 7e57206c1b09e29477179fa1ea6880b38f09c24efdb3ab30dbf70e8be083b8d0c749a502e63116e517c2540466b0b706c259b64291af6e012c966887535ba55c SHA512 2c00601715a706a7793318f182af6ebf988229680f4618dde818617ecf45e17ebbd65a1d746e373374ed8ee638695223a3de13472dd36579e99b6d25bdd4c220 +DIST firefox-91.13.0esr-gu-IN.xpi 529544 BLAKE2B 4eec19b70b20e188a819edfe412fe006aae41f38578bf64b225b05daeacd16716604be3a62cffd561ca76a17e01e919ce39fddfc160914813b22c26417510816 SHA512 621a348303a67ab1805c0c5ad5de73f824e841832a37c59b13fa87ed95bf3953584baa2e839047e21a453c8bd7efa241dca0d0afb351f69de3a42ca4a063dab5 +DIST firefox-91.13.0esr-he.xpi 557199 BLAKE2B 3a0a7bf4dc63efd5a4010b8dba490955c2cc8afcee4d3683287fb7be981c3d995f1c60922f0f7309c459650593bcc44753fb7433d0e6fd00f8cdae0967e7ff94 SHA512 76e860db3c88c438fbf712a497554276d489b42f9b0019464ad6519a5861472f465a8325e19efffc2eac040d7f10ec37c4ac0bf800937f4387bfe18f56cc4966 +DIST firefox-91.13.0esr-hi-IN.xpi 560656 BLAKE2B 0f1e52f755d17560d2e604a6320e392da8ab3b1d2decc13fa88bb9f35355104337e668e2cd28c7c47daf3cc18b98dfa5b186c37477ccd51ecde5ed49e1f20b69 SHA512 1d7576f43b18bcb2a50ff00705444cb695f180d4c718e6718d98e4bda59a9900a88da9cd7184098512bc4f5afc4f6ff859f172f4111e0f0cd754f45d68eea25b +DIST firefox-91.13.0esr-hr.xpi 530056 BLAKE2B 79ae53fb0f9b023d327100b4c40c0896e964d0d561516f5923a0a770811de35f678c9be655a1a0839e42cafdc638e505ccea499f72b6533075fe17eb5e5d947d SHA512 018d08acb39e9d6c472f58f7d502a995d8aef81cc4b3536e5aad94726631f4071cdab5330a2395e79fdd59df0160cee34b397d82fb1c2cddd9313868581121d6 +DIST firefox-91.13.0esr-hsb.xpi 562631 BLAKE2B 2e64d6e996839910d90f666606355e952c4bbc2ac6c5f73003ecd4ad0511370226a751f26238c8c5ee491496ecff99b995c32409508ecf2e389863bfe2023729 SHA512 b3891ec1a7066d6f8b51c4d3edd83390f9e82c6f6ed9d1fec6bdb8cf989fba0ba31dd409d58609db8825006d21409ca7649d79425faab2a8c8f1a84d2ee494f7 +DIST firefox-91.13.0esr-hu.xpi 566077 BLAKE2B 0f1ec32cb992f4310a1c2b9c75a020746094dd0ffdee1d4dfd100f28f3a87fb95cd699978782ea8db0518b4019e376d402fd041c1372362abedc5e0985a7fe1e SHA512 ff6978f6a908b58e0d25d4f2b605de743f2d3b5e18569904400e3bb521d77b6f5ea641d5b7125bbd52e9dad6c8d77ecfc19d0b0e96671de6b1801f628101efde +DIST firefox-91.13.0esr-hy-AM.xpi 579766 BLAKE2B bf7c7f5854dced733bda8d66a07b5bfb4217f0872f8bbb6d4949314da68969b798354e0d267f244654aa3316a7919cba51ce564c63d4a2dd7bffec2467c51a3f SHA512 7ca2a30c3b331e1c47f314d27430e30f042d7765dd82557cea2ad838555b4e5d41304bc251398865533c6dc02ce3e7238c881b3e0df6c1decd3181c09211e84b +DIST firefox-91.13.0esr-ia.xpi 532150 BLAKE2B 6a84af573de80a57e883ea08f5dcd39c07a1fb96a93948014ba3c1a6daee97d10def51de0817031cbd00b5a6f84c16cdc9351cc7797e3bc6efbcbf47fdfb24f8 SHA512 4c94b12bcb35900e588322dde1b77bfb1dcc4347d389b6ee896a73c0647f1c1d592d7cb8aebfe1a3947dcf3ca61a34dbc83dedef64e87a3a0c06b69a52997f59 +DIST firefox-91.13.0esr-id.xpi 519829 BLAKE2B 63bec85e56cc7d3794a7eac11a2e2ee1da2742cea3101b1a9ba67b6ab422c7ce8ba787ebc30869feeada692cc5c2b48125288a1c560b73ca991faa14bd880f50 SHA512 0cf09caeb860e8cf76ca30c74f1c27e0345b601617b6f1982e618f6f094c4d2f57bf81d2b91b2a8ec35f59ffde515f5616d60c12c27bea63737d2f334c1e094c +DIST firefox-91.13.0esr-is.xpi 470229 BLAKE2B a7801c61d1411918c4a24ed87f1102c9ff5e6fb69c60f9d811f5cdc1941929c569f56cb566b910459c0201ed58dda4daf9bcd348f424dc39d8c7a4e0565ef8bb SHA512 220d3bb7065102ae101ad48e8a4e069b8b0036ddf80f5c21b97709ec2625b71f3bf735af992d7c373f717306857757ecaba6426ba1b44ae633afca27193a4e58 +DIST firefox-91.13.0esr-it.xpi 459091 BLAKE2B c71b280b3e5da33873d3b35b69b7e981003d814cd3cc89bbc1aade3301d3440665c6ffaaf7d285b0ab2454ddee54f599df7bcc6c506b33e37765b26a8e72d7f8 SHA512 87041afcbef526c4c49609d7924c51802a39cddfa809843828dfe54c65a7079e76098ec816676c5015366204dd30f9fb70dd4726ac58098a971345a274696632 +DIST firefox-91.13.0esr-ja.xpi 588081 BLAKE2B f8fcd4e422fef752e45ef4808e32aa66670ab94fbe629e489410bae132d85425518b0e94ed3bf5be0ce4e5a549026ce16e3063fdec7ae93594444b62284a28c6 SHA512 5a9ebf1f8fe7ad3179bd643252cf3c4e63c0b9a591cbc068c6d02ab2aeec74cf5a72a59601e1dd2f3bce3f2f0ffca4f89799c1451dd767ac51ba2d824a4bca65 +DIST firefox-91.13.0esr-ka.xpi 592244 BLAKE2B b32f816643599cfa4ff8c8267200801535266475fec6ee9af6eea14d251e11cfd4b63775ab72d243050cf49a50deba3fce865b72882066f195976df8a10b5f43 SHA512 d73a3c14c28a3141fdecef71b2333ba937622d77cf99b14b30c22fe7ec92dfc42ffaf9310b61864caaec312830f2e63e3f9b9723abea8a8dbb5607f5f2d8ea0d +DIST firefox-91.13.0esr-kab.xpi 545020 BLAKE2B 192c91966c760d87b77521d4f614d73f7f36e1dcdc807a6790c668bbe1deccaac4b7b7ec4a060f0214117d500c74fba647da815774d873650910676d75c5a19f SHA512 23c90274e66dfafa1f451164cd7a657f5d3bd891c8a50b0d4371df7998c33a6c032af331a3277bc6f4cce44dac12fca71ca9c91f77604677728212b29da326d2 +DIST firefox-91.13.0esr-kk.xpi 605546 BLAKE2B 75fb7c7c409befa552001ce4f01d1b9dc483158c350bb25e199c923e960296f973124ed332b35d40f0fb6d0b70df8bef2c5896b2e748571b4b748b448ef98a11 SHA512 ea265a34f76af51f11b2dfbcdfbd909974fd2bb0309bdc48b3cb5000be477058772ad18630011facc8bb2f68e5930bd79325808251eb66381ba558eb9b92fd50 +DIST firefox-91.13.0esr-km.xpi 533113 BLAKE2B d3c2de9bdf3caa72e026aedaff3a5b9e209ad54c71921fae945a8694baf5309329087bdf32f09b3413d166e2d594b57e4c86cac718f0bb5c4dc033f499b0cba4 SHA512 7d043b5eb1124f63b89c6c5fdc76cbc3287879baa11e1428ca9d5fc06d9b3c7bffaec6c7ff798d1215574a268f89673e105eb465d7a754e73ac9698d1ce5bf68 +DIST firefox-91.13.0esr-kn.xpi 498978 BLAKE2B 8e5b676cbfad2f08ab5b1b688e65e799b10c0966e21404d36e39b632ef7bd11e3134fec6821f64112b5e619c616207291e6a505d07c251fe198dcde648b0f6b5 SHA512 e8bf3fd103b81f208740a8a934e3b941b0530334ec65cd653ab84af6c9509d5a1bac1a1be5eb983ddf69607c0172eee87f46104b179de9a0adb97a17b64a52d2 +DIST firefox-91.13.0esr-ko.xpi 579063 BLAKE2B 1b8a27020b23eb2958ddcfb596fb23f28c12bedaa7e3d9d73096e62e01c48dd93ab702e4c5a2fcc81f0fbd422f2031c8c44ff686e2f1c227ba009056b1c8e061 SHA512 78c1162a1ca76eaa7393088cd26e13a782e2d6cdd90f6bdd762e2fa2f4e77bf2f4fcfc67f25ecca44663c42997759a9242f5ed6ec68717bdb926cbcaba36d400 +DIST firefox-91.13.0esr-lij.xpi 470176 BLAKE2B 5762ba0e15386fcac487506e40bec130139f8ef373d2ac4b4a02b240dd64ce805c86817d48009338a722f60a2afb37348ca67d013260d7346e7b39cdf64b95b6 SHA512 3084b7301bdaec7cdc1bef9918e5a1066f98e2447f26d4798f837ad879d6029b43be73facc327121fe35512c557bfefcd7301b05699aeb721ac9b5c1b5efd35f +DIST firefox-91.13.0esr-lt.xpi 560119 BLAKE2B 6babe37fb047aa3b4dfec8c2d6e3c8a7ee94bbbf31d567e4f45f7f2c31f21e3a1b0c91c5586503c99bda1155078e973cbe7edfff6338973b9fc5055b0f342ef8 SHA512 015ea53316ae16b778af4efbae82fcf4df9ed794c7e39a5c5ccc7d7e9cc5b80872a15d876901760e47dab1461588dba5e9fb2c47abd5982c96c4b2f6103ab987 +DIST firefox-91.13.0esr-lv.xpi 462457 BLAKE2B eb8c5e6e65e54c6dd5c6d48607dab9a968568c878696b4cb67d1d5c57f8e495bac210dbde231cd59887c077f7de60423c7b9e5a7118b01483d4d3100fed3a1f3 SHA512 7dbf0ba338c4b0b237cc857e87c487126c20c6b8e547e4b4a6a688e6c5415121b27a101a15901818754d7899a8b69bb98160dd776761ed043b0881b59e492a55 +DIST firefox-91.13.0esr-mk.xpi 465351 BLAKE2B b2777a900b87a51102aafff3f06f10a0aa0d55d96ecf017407e3e91e30e734a9a4321f60601351cf48d491891d84914fa1e4c1a9bbbdd3e68ebdd6f510dc1015 SHA512 c711d748049541e8e625a6cc99a1922ea9aa74c1cabc560e2ea56a26cfd80b60b3ffe68a1348acf957aebc6e6532fb8f9fa9a82a8a1b8cb5df23cc4eb2795945 +DIST firefox-91.13.0esr-mr.xpi 532121 BLAKE2B 8be2589c99bf3aa4fa5404ad52d31cfab0612a7b79c9a07c10d067669ebc758b0d03eb2738656b1c723ff489c725993f2d396928d76154268a0139a31e1fd11e SHA512 96b5e75c334912604cbd0b7b1facce258fdac4423c26de57d85f286479b4f7a89d5b308b9c9cf1c730bbd8736770f908c62c6d9ae2a8692534191866f720c29a +DIST firefox-91.13.0esr-ms.xpi 447336 BLAKE2B 9d0d5b302c442bbec30c2de7d504e6379c739a0ef6d9a7009a6179ab1e5987ce2dee8058c94c59359afc186a56227bc96cf601f56a24cdd2e3d25988a269008b SHA512 47ab282d76ba96711944133508a8e3772895908b8201f635f76d4026eb90768f512ebd0b38110bd46f352fafd299061e8a67db855fe9590a54ce382e61650a17 +DIST firefox-91.13.0esr-my.xpi 516294 BLAKE2B 1f8dab25f5cb9473b1e5852a7c44322d9b264b057d65869b7423399aa82f9d15ae5e1d8adfbdf5f4d42547030a6f820bae8dfef1d25556fef9b5372b9cbb2b85 SHA512 4f38020879ba3d81105f9842ab7bee54f42a5661661dfd21c2dd4e7525b7ce8d772031f2308d155af6aa102222f3cfe97fef20ed70a8dc2e71184f83d2bd5401 +DIST firefox-91.13.0esr-nb-NO.xpi 529429 BLAKE2B 4a5c123c51378716c261fa8e0faea3295b38ed686948be02c807e4b18f31e07ebbe84be04dc95f09c49a95304bf949129d7f757f179ae237847d6b99e01c3234 SHA512 a2509c58d8f9c15e01c0cc63ce50aae51542330049cde6af229777648bdff61a7eafd41750ffad81d8fe1cc906da4da68a2996e03caf089c5faf785c9b974030 +DIST firefox-91.13.0esr-ne-NP.xpi 485211 BLAKE2B 1ad16fc443f6c69bbf324a69ae2cb133ba96f1315625daf6b4af75d670980ab8ac010c6a89da1aadde687323259f3f506dce544986013536675e01db876948eb SHA512 cb89fd53a3460c7ece9daacda242ec0c9995c7745d6159ab2f49ffc174eeeebbdca48094db2e3310515b4d8181135f052a3d5449b44003e7b067ab0c3704ca7a +DIST firefox-91.13.0esr-nl.xpi 537382 BLAKE2B 049a896deb0ac73a055224371b948929a810810033b4013c22e13d1c5caf57d63259ea6c51ce6c47b56b0884f6c76ed67779dc945957b3a4398632e3820f95e5 SHA512 698a8143b7d2239b0ccdf46a150937c2403ab68724b5ac3457210f465cdd4ee3e999f41c3af6c462c63deb083968c92eb7001fa9f1d9a0e2d1704a6dc9ba5903 +DIST firefox-91.13.0esr-nn-NO.xpi 531679 BLAKE2B ec2034022158a2f88fe368ec07be0d8dbbe40d9999b6a8ce31904092e5eba5c47c7069edfb7f165a2197a06d9d6c8dc3ec9102fc9e9157bea13f7618b32a0707 SHA512 7bd12e16ae9edbeba7ac56e7394bf60e0670d3eb4be1e5f22a7dffe6395b56e78b7caa08eb2127187ffd0f6c0277c6cf6d3b47682860e55412461af2719c3eef +DIST firefox-91.13.0esr-oc.xpi 552964 BLAKE2B 48f3dbf777e048f49b38054c9cdd3503b4db724ef0fbb6a5b13780febb31f9c2a8fe51a16d1ea9950172fcbd15c3aa41366605da54e8dea671235c9a7ef44a74 SHA512 26788f788cfd497b1ee6d649b68605702a7c2fa726488f7a16369287de14b9a81a6b2a18cdee7f7dbd5ac9257a566bd9f2e9293b742f76ad814b8f25294583a0 +DIST firefox-91.13.0esr-pa-IN.xpi 595974 BLAKE2B bbdad97825f71685a70db69e1af92a648dfccb62127a33366185af9b12f9f8f28026db1f007d952fd72f03db915f626d9fa4dcfc06a5cf17957852529ed3cc23 SHA512 32062c982bfe64890353221221f6ff06fa8f0751c789c958c11cf7931b0dd6ab9ceb764e4e0b78e90988beaa2a845880bd572d0f2565b8e131f266041bc58f29 +DIST firefox-91.13.0esr-pl.xpi 555617 BLAKE2B 00dae5d262805b77d78e409f301e07bdc225326515d93a372cbd199dfc4a44d6531ae85d8ab6283245c49e26d4b2869f7553b6e85a354a64470f08b82a4fb0ed SHA512 dd076f21fa72d5ed79be42977230c90e7f92b4e87e6c95a289fd7a1c148d695702828cf2571601a26d6f3364b5fcfaad057d4946cbe33029ad3efea283fa0f5d +DIST firefox-91.13.0esr-pt-BR.xpi 542617 BLAKE2B bb65fbac1e31a33f6596600e0b98aada3397c27d778903a5f276bd77f23f999d56fe2b5fb5f0c445deddc2f0c5bcaef956f42ea625cfb8e3abe9d6a400549958 SHA512 a416dd4963ed9132c2b2e0979b4795d32f06a9ba2d1af7ccf3bd207941ebc3e7f0766e1eedcfa36b888913e7f8c6d09f9ace1b44883379f7ffebdf5020f63568 +DIST firefox-91.13.0esr-pt-PT.xpi 546342 BLAKE2B fcf7fc7f82675ebcabfc3241cb6482dc9cc9c092aab5657d8d2b73c8ba437c4f830e58dfb57ca215bb4924376779eaf8f9fd6396229eed53a1f4caa6b1c39a29 SHA512 6cfa09c3e05527466711f18bf05ec43429881d74c449863c2e8faefe8f1145fe5155bcb9d09f50b0012ae9959ac2ce61c4539451879b50d4adb6053c0a4d1968 +DIST firefox-91.13.0esr-rm.xpi 537364 BLAKE2B 66503e95a8a312ec4c8687f228c068382031161651df03556246e380bc75ce88251e0fb2a8d34b74274075861e4eb2dbf32bdd461f2fe36c57479f9c59c62748 SHA512 3c3cb3d9db5a3cfaef2c8c15df8b5a5991733ef2587cceeb3f995ab6bffc4a26c4c724ca3a1ed96b7d2fc796e205c584c5f330888e9e955f7fcce1847290447a +DIST firefox-91.13.0esr-ro.xpi 529330 BLAKE2B 643ea3aa3f4cf17150e462612721b340d919c4b1b2b44eb7bf0950469b20ba61f94dfc6bdc52559938f73b2b4cd735805e9d43b2bca7780dc63b3d4c05a5a81d SHA512 eda93f9616867366c401789ab37ca54acbc964b601f9972957676c7d421a85715ff2bc0cc00e9bc694185c9df8fc09bd38784a922f72b02fedfbeca3b56d9a2e +DIST firefox-91.13.0esr-ru.xpi 627117 BLAKE2B dfd394807094b8c6fd3486f7037c6a5eba0f1dbb4bc0146d3046ecb34041e816b3f7894c72251419a74f857a680a25654c79222d5478db168acfef268661b69a SHA512 768c6da81031487d2d3fe3810f20ecb1d2b9ee634263e3f1ca209ef4433ed3b402e679cbacb0e96e2f9671003219283ad4a9fc2341ce0ac6c3d5c8eb5cfd6569 +DIST firefox-91.13.0esr-sco.xpi 504852 BLAKE2B a81bf7b33185f8156e04ccbb2e62444ff94d06516f4f5e7312a63f7480920fa3de4d6a13a105e3a68c02271df379bf8c8ec44b2c8cfd682dd4ef483562e3df4a SHA512 92630be148f598973f555982dd17747b7764c2653b31ac59e72108adf38923c33b6a9902c2dfab5c738919bb5e8c9c90ff56dbbc866ce2a71cb2dd1972fb39fe +DIST firefox-91.13.0esr-si.xpi 487964 BLAKE2B aab283c4a909ca5b98eb837e840e3cdf2d54b4f7d6b150917c57dbade5f3544be2246f33121876d51b7577bfd25337615c355da267d56a9872de00e93bac2edd SHA512 cc1af012f2af35a667763aa044221a8de16320ea3f8f9da3ad62f0b81867080929e838765ddada10f07113eaf4c486c051adb25daed849d21b72bca60a299dab +DIST firefox-91.13.0esr-sk.xpi 566484 BLAKE2B 920964bd1bc1545eb38114f589e6eec0c6df52bbc475a189b5b4176ba715e3c8b425b7324e8165bdd8282552a808bd1a45b032528e67bf1a9cfb1d53d5bfa461 SHA512 50b59da5b54cc13523124f6a7e58404d41b0ff2813c7d4e4adf5c31ae5ae4a762f1571967a396b60a5f3a61bf450d4603cb2a03372f9abaab322f2a6a4f90f20 +DIST firefox-91.13.0esr-sl.xpi 538008 BLAKE2B 6dad7f28266a1adc3826a5eb8f1c5c82bca15e84983b7188e69c9b80f15d306f76e907baa2b02a8d5c0bdf7998d743b0667c9fb2045aca8ec239311a6d5202b3 SHA512 bbc9cb54426b773d14042d01c692f246594c12e1db37fcfc3734a4932d676143d298d83ae08ad6784a8005b5c5258f6336f8ae314f5465c1e21d1fc839544f34 +DIST firefox-91.13.0esr-son.xpi 425996 BLAKE2B c0d2d4050d2ebf7f2d2a5ec677bb9e382873924f4f21cdd1943e030c284ddbb74c632e2ae7e108a98f6963539e851bb9180584791a3acd157e60ac05add502af SHA512 21cffcd75867ca519a3347e9efdd82ca3c468de247210a9e859192dcf6334c9b9899a060ea50770c227d1af7f05fbae4ee70d056ef0e105695069a3887692d09 +DIST firefox-91.13.0esr-sq.xpi 556001 BLAKE2B 22804052c6441a58a65f1bf57cf9fed6222f30c1a3b26af27f0de8face4042594b752eb3b05f584b3b47434cced38611066ead52716fdc3c3bc32a3a727b454b SHA512 4d29f7fced0982bc1c1c250e34c3fc50347a0da122256502aafca045217edb3db19a70682767b438a9886d79774eb821c2692810b781a8d74c67f6b0bba80f47 +DIST firefox-91.13.0esr-sr.xpi 586076 BLAKE2B b8f68b1dfbb01bf10ea7e0f43941967d94c6eade9a1fd08edeee528cb5f156fa1e84281d387cf551c1fc22e16abc9a1b97c1891e3707b08b2f6e7e986770621b SHA512 6335cc7fef789b791ce352fe1ca22d5faa7ad554245fbbdd696e23b7cbb6e7b3dfae04b826cd17f0d66207ffe9dea2740729fb6794e362543ccfc126281ac8ac +DIST firefox-91.13.0esr-sv-SE.xpi 539962 BLAKE2B 5cefd5aafaa0cae413290bd679286a7b7190397f953922f6e4cf3d10583557fb99b143ba1e8e135172418097984e3d8b5d2c30bc0aa897e1e3507573e6fba215 SHA512 a657a1ad738b64ac1e943e54e4434ed62a778e6082e91447da8f0a89bd67d1493f15dccc7a6dbd2b2d33d27834fe137921072959680f75dd217db67f60fa0880 +DIST firefox-91.13.0esr-szl.xpi 509815 BLAKE2B 5e37f22a5629d0c5eb5113b7906d7bfa4c98a4fa074a43d2193d3ee5a69030686d0f36eb89a96f3776e084f938717cd47ae85a3997244d94712d46da831bae52 SHA512 81d63f5179864736ee8f4243d125ab1f3359ac02cabb65e5d5cf5fa88b2064ccd19693b7d59fca8cdcd0c8516b56d057f63f5d8f034c1d9d13f39b8f61f60250 +DIST firefox-91.13.0esr-ta.xpi 513819 BLAKE2B ea59af76cb7d02a6eff775dc46c075fd3cd6f33c6e4b880072714f87b0d08f7fb96584b699cf250c3d38e461881a38aa615cb18303ec1b1ef620fa0511dfd980 SHA512 64d18c128989c3906455d6e8398eceb4bbf2615efc7723330292ea3b43154a0cd630528f42a053435c749da69de3e9711c2d9c8739d3066f85f865d94df58d3e +DIST firefox-91.13.0esr-te.xpi 549962 BLAKE2B 636cd90f43fb3bd34a6b4e0517475b840ee4510d8d815b000bca09f540683cabb5a383a482e8b3264a9686a9d6568e4c5ff7e956217b312419a17d51aa706431 SHA512 b7b488aab7dffd34974cd32ada6debf43844c2c957361d728bb5776e0dba128191e22169210f18d0dd6541333bccb5220ec3eea5aa6c848ad46f2b06bab43606 +DIST firefox-91.13.0esr-th.xpi 607066 BLAKE2B 268b4bfc0b7bc1b9c5e2e8c7a39e5ceef2ce413648e57e72fcf46be4a29b53899e6bc0108d1006053b0009766c9231cb4fca1bc291e0552e787f4d04c84dc1fe SHA512 37a21a18b88c50f0e3524fa40e625d52e7b28c1dabebd4d75ec66b77774984079ae6317af074109fb652edfd765115135f10c1811a678e699ec7eeecda6c9d9d +DIST firefox-91.13.0esr-tl.xpi 516121 BLAKE2B d8c21f4fc3882f06162f6df8c443a5a3b8c36f75174508b84cfd9766c083bd72b8b1b958ad788dc299aa7cc8dff76daae5360abb66c4bb87d37ed45ad7998edb SHA512 92f77f91f0536600868182327ef33bde6e9d8cc16194818f3540e0721c652ddcc37f48969b3ed34e9b134f9b266ef975f0025c3e2e6bbe17b98a4be006afdb12 +DIST firefox-91.13.0esr-tr.xpi 553675 BLAKE2B 66dcd0eca6cfeae8fcbc733f08ec65d0e56a4c05caea28f0ee823ad90e9fbd14c36b950b40c081fd05a7a60f6c7f2e74492dcae1ead310ba9e2d7820a8934232 SHA512 f05f2bc52fc0a61f502fdb36eb098d15dec522098ae3991a44e5aa9c7aaf293cc67c288febf15908dce65696870dc0f68f5f52b8b14d76977b75f3ff0c2488ed +DIST firefox-91.13.0esr-trs.xpi 491086 BLAKE2B f6218f44a07ee2c54548dbab486fc0cbbc06334bc1b8b646870497d8efa41a80abc771338b26a7eb249f90fd6e613a2e03a31c76107158b1bbab532776908589 SHA512 fd69b897d000abab6de9ed67012de3cc9ed237c6067b6d30c17fe2786bbe447664f99fde7e203f62589410392e65c3adf310bc018129220b576087fdc9d1fb22 +DIST firefox-91.13.0esr-uk.xpi 620506 BLAKE2B 45112b82d28abfbf78aa9ded9e09bb530b370ef7832760b5d02d16f97792de5654f01810c9737580cbc7e0081012b8e4a0500d4c6cc12f5c7b24d031dfd1eebb SHA512 ebffa27fe6d4f8e1197a1d2b4f570cc8a64680725c33c3babf862a4b31430727db67b1281d3b88bcda8602adac5207ef9ee579f70dfdbc1c63ed8f6fb427beb7 +DIST firefox-91.13.0esr-ur.xpi 557309 BLAKE2B 48a1998617dba393690b01bba19ddfbec929d14421f27c3292f617edc3561f33a00cb62b19874d2b7c9ee1c2aff22e5bbca5b054fde8c5422da2fcc5d7c4d76a SHA512 890668f8b5062c98266d86817b9f8176d422b772b742b44323ff71b28672776e9dabefd94c1a917e2fd1fd8e58b7e705ef214d22bc05200bf8d8dd8354781c32 +DIST firefox-91.13.0esr-uz.xpi 466859 BLAKE2B a2c22d1497b51f1cfaeb8fc9b90fe51b3948f40d5afa6a75830a13f3924a874af166f604eaf5c1154b8792bba6b248dbb9edef8992c635c0dd309afe661fc87f SHA512 4e049105f284b880b174a0e148c21d7caf207c14a0f64358b111195937967b44a5870ba65f3cd3f5c4b3aca014d56304ce26548cabdbee41228b11ff1d035ab0 +DIST firefox-91.13.0esr-vi.xpi 573487 BLAKE2B 3b887c8550829640207e1e96deb1f40bfcd1a6a728199c9ee92d19dd5b742c8366fce0d449c54565caabda294643503a394371e04bde40165f07e656d8ec2650 SHA512 62472ad4f562f6d677338bae6a9a47ed8714af01deabd6ca501196c36dd316192f3095fb6525a3223a117638a7b2d5a856aca5c539d65268dbf946e8c5b9f0f2 +DIST firefox-91.13.0esr-xh.xpi 428180 BLAKE2B 20517a1e2631d00af75a30707773dd4a7201ae5f0f8460ec08eca93d874b541b3d0e67eb0073493404f5139713e50da8d9dd58f2021cbb876a970ebf75f505e4 SHA512 34632e068473a7c4c6c12fe5d7f390577e364c03371296a4839add1420960ce8be97e36347ea318ef1561cd143d513dbc50d94509369d33addb4b52fdacf9d34 +DIST firefox-91.13.0esr-zh-CN.xpi 575367 BLAKE2B eb11d145bf514a5c20fd8c8f9fa2b56abfffca3d8ba7bd9a17eed2a2bc9e41f4d2639d7de4c93bf0fa6db4af1c7924dd5a2ee8c9da78041f6d39388f0c0978c2 SHA512 209b0de0c33b1839852c15e3db17ef5f838f4d0943016528f45d9cd31b32af70fc60ddf4064529df33dfd74fb36141e9b11f3ced9b6f4287151e752b95aebb3a +DIST firefox-91.13.0esr-zh-TW.xpi 576229 BLAKE2B 44189d585fa0725a7aa1db911acc1d243a4fbe3bc69ef863fc3387b1d20b5e70f364dca850021b6a8532a8dc9651ce6b803a543ee5f4ab88cb0e14e263b97c57 SHA512 23b25460fbcd49921431c03b50aced2465181e7fbe7cd1595afeb5d9648a7736fa8d7b07f3215ef86f5d85b13b732d967aeaf9204f766b9ff60ce01e8fb969c9 +DIST firefox-91.13.0esr.source.tar.xz 380053584 BLAKE2B 75d0daa512b3a2d41974a0169778be9ef19a100de2bd382add9831860ca93976585a41e760b6a7ec753268fb78f9f61049780fa7961834248bc8157cfdcc2827 SHA512 38b4cc52de21e76d6061e6ba175e1cbfd888a16070aa951f5a44283f2db9d7e94f2504621f0da78feac6e71491a6d0e7038f63dd0ae112dcad700eb02e9aa516 DIST firefox-91esr-patches-10j.tar.xz 18320 BLAKE2B ec882411eed19bafab8676e3d79f4ae43947bb97c44571c1497bb93a44fcfec99de06ebacbdf8c4944dcecdf949e4f684908d7ce4226cdcec60241e62e75810e SHA512 670a14d852bb74b9074c3fef9310650f71ce1c56314109c49aea02a7a69acc836af60a8beab11da53e21b10a8e6da341fcfa18b68a1dfd33b26978dd63758e9c EBUILD firefox-102.1.0.ebuild 36999 BLAKE2B ede7bdf6746a890cc06aec3f837acf3469be44239c59c5cefb013d3a76d79aafdee02aa73b27ab10ae5b9ea9f898efe8682f4c35eb77a9332a2c0b1a984940d3 SHA512 93a621258ccd187b885ce38eb54ecc7ec35a51e640c9f8a9e079c1f5e6a2e0d0865ddbddb78724773f91f278cca91d9019724ed40ba50c3f04233747f16be392 +EBUILD firefox-102.2.0.ebuild 36695 BLAKE2B 382e13513dc6a4ced0dfed359224c901e0c33a539735b81be1a21c5cb6a64e7925aecb1fb9e384c6b655954a358364def02ab5045f0f1a2574aa5bf10ca97a01 SHA512 f045a6fad202504d02a95a142f44909557623cd118cb18eaf9665b271b4e868364a58fbb4c41bdb9624bdbc5b7b8232733c98393defbdab73bad96fe8ce10704 EBUILD firefox-103.0.2.ebuild 37012 BLAKE2B 67b6a46e8177ad1b568485ce7f6017d15bcab54b8c0ee5acc073f37df2b03093bd04b559c232b9428ddd5494c3d07629f6b352ca09138b1d39fe7d1d9cd24b4e SHA512 25e59e80b2afaf572c2e9dd60977caebbf6be9225e533ccd9ae95fea366d2289f98245211173283c0666cbf5ee6abf14f251d6322868662c3a677bf632b4ceef +EBUILD firefox-104.0.ebuild 36714 BLAKE2B 45053bcd91031d308be7bc86f3005e396b4434274d8ef7c06d0b71f16ee81046e57243ad358f44aab444479f13f52ed59d23f65f7c3742863d3b7f7b4a845705 SHA512 180642f6506ed0646f6ce462f22df3a99e8194a8affcf53768f203f7b0ae9a7415c793f948bd2246b5fd7b6c14dd7addac50f98379f7de6b6b61c6db75bd049d EBUILD firefox-91.12.0.ebuild 35569 BLAKE2B 19154ecc4e0a2583554ced081e5c00c844926b5ec520aced40ca69aac814848804e0931414916f34822abcef11372ceb5efc3a20e4277ad7cc62ff0a42535503 SHA512 e22cc0a89e6d1fb8269720f9cfef0f305834786cb3e69ce4e122c681d3c1ea138deb1793bcb80eba029d981c819022709a2946d2a55ca2ddeb5917eff7eaa227 +EBUILD firefox-91.13.0.ebuild 35572 BLAKE2B f8c1710695587f7cd8fa6eb3c8cf5da36335702ddb010a47acfd8b52761df4f72c242a794b75162b97db908ef54928275bd5eef955f1d21e2d6f64fd429955ad SHA512 61249bc344270e6a462c04bfbef152e2eed5bdc244a7425a5c790dcf2a88c849978cd40dfe305e1fa44abb491a58d4b31de316f67e9e0e13743b0bb59aacf52a MISC metadata.xml 2275 BLAKE2B 8c145b0b5014acda00fe3839889f7805aa78b65a18eb59135576e861e0882c9966a3f91adb10a7b5afc0ee80548da9f0d7b8a0edd6ab88d9cddbcaef6f9619dd SHA512 187618848f28f201e8a554e938a37b21c5d16619e76ca7cc53c227f9f1f76b9c9c46781b3b0c31bc78bc0e52865e95e56a3741a0e623cccf104eb936b4f22beb diff --git a/www-client/firefox/firefox-102.2.0.ebuild b/www-client/firefox/firefox-102.2.0.ebuild new file mode 100644 index 000000000000..0fab438176a2 --- /dev/null +++ b/www-client/firefox/firefox-102.2.0.ebuild @@ -0,0 +1,1276 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-102esr-patches-02j.tar.xz" + +LLVM_MAX_SLOT=14 + +PYTHON_COMPAT=( python3_{8..11} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +WANT_AUTOCONF="2.1" + +VIRTUALX_REQUIRED="pgo" + +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" +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 multiprocessing pax-utils python-any-r1 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,whissi,slashbeast}/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" + +DESCRIPTION="Firefox Web Browser" +HOMEPAGE="https://www.mozilla.com/firefox" + +KEYWORDS="" + +SLOT="esr" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" + +IUSE="+clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel" +IUSE+=" jack libproxy lto +openh264 pgo pulseaudio sndio selinux" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx system-png system-python-libs +system-webp" +IUSE+=" wayland wifi" + +# Firefox-only IUSE +IUSE+=" geckodriver +gmp-autoupdate screencast" + +REQUIRED_USE="debug? ( !system-av1 ) + pgo? ( lto ) + wifi? ( dbus )" + +# Firefox-only REQUIRED_USE flags +REQUIRED_USE+=" screencast? ( wayland )" + +FF_ONLY_DEPEND="!www-client/firefox:0 + !www-client/firefox:rapid + screencast? ( media-video/pipewire:= ) + selinux? ( sec-policy/selinux-mozilla )" +BDEPEND="${PYTHON_DEPS} + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.24.3 + net-libs/nodejs + virtual/pkgconfig + virtual/rust + || ( + ( + sys-devel/clang:14 + sys-devel/llvm:14 + clang? ( + =sys-devel/lld-14* + pgo? ( =sys-libs/compiler-rt-sanitizers-14*[profile] ) + ) + ) + ( + sys-devel/clang:13 + sys-devel/llvm:13 + clang? ( + =sys-devel/lld-13* + pgo? ( =sys-libs/compiler-rt-sanitizers-13*[profile] ) + ) + ) + ) + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 )" + +COMMON_DEPEND="${FF_ONLY_DEPEND} + dev-libs/atk + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.79.1 + >=dev-libs/nspr-4.34 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + media-video/ffmpeg + sys-libs/zlib + virtual/freedesktop-icon-theme + virtual/opengl + x11-libs/cairo[X] + x11-libs/gdk-pixbuf + x11-libs/gtk+:3[X] + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrandr + x11-libs/libXtst + x11-libs/libxcb:= + x11-libs/libxkbcommon[X] + x11-libs/pango + x11-libs/pixman + dbus? ( + dev-libs/dbus-glib + sys-apps/dbus + ) + jack? ( virtual/jack ) + libproxy? ( net-libs/libproxy ) + sndio? ( >=media-sound/sndio-1.8.0-r1 ) + system-av1? ( + >=media-libs/dav1d-1.0.0:= + >=media-libs/libaom-1.0.0:= + ) + system-harfbuzz? ( + >=media-gfx/graphite2-1.3.13 + >=media-libs/harfbuzz-2.8.1:0= + ) + system-icu? ( >=dev-libs/icu-71.1:= ) + system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 ) + system-libevent? ( >=dev-libs/libevent-2.0:0=[threads] ) + system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) + system-png? ( >=media-libs/libpng-1.6.35:0=[apng] ) + system-webp? ( >=media-libs/libwebp-1.1.0:0= ) + wayland? ( + x11-libs/gtk+:3[wayland] + x11-libs/libdrm + x11-libs/libxkbcommon[wayland] + ) + wifi? ( + kernel_linux? ( + dev-libs/dbus-glib + net-misc/networkmanager + sys-apps/dbus + ) + )" + +RDEPEND="${COMMON_DEPEND} + jack? ( virtual/jack ) + openh264? ( media-libs/openh264:*[plugin] ) + pulseaudio? ( + || ( + media-sound/pulseaudio + >=media-sound/apulse-0.1.12-r4 + ) + )" + +DEPEND="${COMMON_DEPEND} + x11-libs/libICE + x11-libs/libSM + pulseaudio? ( + || ( + media-sound/pulseaudio + >=media-sound/apulse-0.1.12-r4[sdk] + ) + )" + +S="${WORKDIR}/${PN}-${PV%_*}" + +# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or +# overridden in the enviromnent (advanced hackers only) +if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then + MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) +fi + +llvm_check_deps() { + if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then + einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use clang ; then + if ! has_version -b "=sys-devel/lld-${LLVM_SLOT}*" ; then + einfo "=sys-devel/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use pgo ; then + if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*" ; then + einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + 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+=( 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+=( sco ) +MOZ_LANGS+=( si ) +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}" +} + +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 || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6600M" + fi + + check-reqs_pkg_pretend + fi + + if has_version =www-client/firefox-91*:esr; then + ewarn "" + ewarn "You are attempting to upgrade from firefox-91esr, this upgrade path is still" + ewarn "not supported by upstream. If you wish to continue, please backup your" + ewarn "current firefox profile, and uninstall www-client/firefox:esr before continuing." + ewarn "" + die + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + fi + + check-reqs_pkg_setup + + llvm_pkg_setup + + if use clang && use lto ; then + local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') + [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") + [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" + + local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') + [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") + [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" + + if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then + eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." + eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" + eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" + eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" + eerror " - Build ${CATEGORY}/${PN} without USE=lto" + eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " + eerror " llvm/clang/lld/rust chain depending on your @world updates)" + die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" + fi + fi + + 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 + # Allow access to GPU during PGO run + local ati_cards mesa_cards nvidia_cards render_cards + shopt -s nullglob + + ati_cards=$(echo -n /dev/ati/card* | sed 's/ /:/g') + if [[ -n "${ati_cards}" ]] ; then + addpredict "${ati_cards}" + fi + + mesa_cards=$(echo -n /dev/dri/card* | sed 's/ /:/g') + if [[ -n "${mesa_cards}" ]] ; then + addpredict "${mesa_cards}" + fi + + nvidia_cards=$(echo -n /dev/nvidia* | sed 's/ /:/g') + if [[ -n "${nvidia_cards}" ]] ; then + addpredict "${nvidia_cards}" + fi + + render_cards=$(echo -n /dev/dri/renderD128* | sed 's/ /:/g') + if [[ -n "${render_cards}" ]] ; then + addpredict "${render_cards}" + fi + + shopt -u nullglob + 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 + + 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; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.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)" + + # Make LTO respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure \ + || die "sed failed to set num_cores" + + # Make ICU respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/intl/icu_sources_data.py \ + || die "sed failed to set num_cores" + + # 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 + + # Clearing checksums where we have applied patches + moz_clear_vendor_checksums audioipc + moz_clear_vendor_checksums audioipc-client + moz_clear_vendor_checksums audioipc-server + + # 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 && ! tc-is-clang ; then + # Force clang + einfo "Enforcing the use of clang due to USE=clang ..." + have_switched_compiler=yes + AR=llvm-ar + AS=llvm-as + CC=${CHOST}-clang + CXX=${CHOST}-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 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + tc-export CC CXX LD AR NM OBJDUMP RANLIB 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 + + # Set Gentoo defaults + export MOZILLA_OFFICIAL=1 + + mozconfig_add_options_ac 'Gentoo default' \ + --allow-addon-sideload \ + --disable-cargo-incremental \ + --disable-crashreporter \ + --disable-gpsd \ + --disable-install-strip \ + --disable-parental-controls \ + --disable-strip \ + --disable-updater \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-release \ + --enable-system-ffi \ + --enable-system-pixman \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --without-wasm-sandboxed-libraries \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --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 '' --update-channel=${update_channel} + + if ! use x86 && [[ ${CHOST} != armv*h* ]] ; 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. + if use ppc64; then + mozconfig_add_options_ac '' --disable-sandbox + else + mozconfig_add_options_ac '' --enable-sandbox + 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-harfbuzz system-graphite2 + 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 + + mozconfig_use_enable geckodriver + + if use hardened ; then + mozconfig_add_options_ac "+hardened" --enable-hardening + append-ldflags "-Wl,-z,relro -Wl,-z,now" + 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 + + if use wayland ; then + mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland + else + mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3 + fi + + if use lto ; then + if use clang ; then + # Upstream only supports lld when using clang + mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld + + mozconfig_add_options_ac '+lto' --enable-lto=cross + + else + # ThinLTO is currently broken, see bmo#1644409 + mozconfig_add_options_ac '+lto' --enable-lto=full + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + + 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 + else + # Avoid auto-magic on linker + if use clang ; then + # This is upstream's default + mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld + else + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + fi + + # LTO flag was handled via configure + filter-flags '-flto*' + + mozconfig_use_enable debug + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + else + 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*' + + # Modifications to better support ARM, bug #553364 + if use cpu_flags_arm_neon ; then + mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon + + if ! tc-is-clang ; then + # thumb options aren't supported when using clang, bug 666966 + mozconfig_add_options_ac '+cpu_flags_arm_neon' \ + --with-thumb=yes \ + --with-thumb-interwork=no + fi + fi + + if [[ ${CHOST} == armv*h* ]] ; then + mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard + + if ! use system-libvpx ; then + sed -i \ + -e "s|softfp|hard|" \ + "${S}"/media/libvpx/moz.build \ + || die + fi + fi + + if use clang ; then + # https://bugzilla.mozilla.org/show_bug.cgi?id=1482204 + # https://bugzilla.mozilla.org/show_bug.cgi?id=1483822 + # toolkit/moz.configure Elfhack section: target.cpu in ('arm', 'x86', 'x86_64') + local disable_elf_hack= + if use amd64 ; then + disable_elf_hack=yes + elif use x86 ; then + disable_elf_hack=yes + elif use arm ; then + disable_elf_hack=yes + fi + + if [[ -n ${disable_elf_hack} ]] ; then + mozconfig_add_options_ac 'elf-hack is broken when using Clang' --disable-elf-hack + fi + elif tc-is-gcc ; then + if ver_test $(gcc-fullversion) -ge 10 ; then + einfo "Forcing -fno-tree-loop-vectorize to workaround GCC bug, see bug 758446 ..." + append-cxxflags -fno-tree-loop-vectorize + fi + fi + + # Additional ARCH support + case "${ARCH}" in + arm) + # Reduce the memory requirements for linking + if use clang ; then + # Nothing to do + :; + elif use lto ; then + append-ldflags -Wl,--no-keep-memory + else + append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads + fi + ;; + esac + + if ! use elibc_glibc ; then + mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc + fi + + # Allow elfhack to work in combination with unstripped binaries + # when they would normally be larger than 2GiB. + append-ldflags "-Wl,--compress-debug-sections=zlib" + + # 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 + PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach + + if use system-python-libs; then + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="system" + else + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" + 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 pgo ; then + virtx_cmd=virtx + + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + addpredict /root + fi + + local -x GDK_BACKEND=x11 + + ${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 sys-devel/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 + 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 + + # 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 geckodriver + if use geckodriver ; then + einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} ..." + pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/geckodriver + + dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver + fi + + # Install icons + local icon_srcdir="${S}/browser/branding/official" + local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg" + + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${icon_symbolic_file}" ${PN}-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 desktop_filename="${PN}.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + 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 + + # 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:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \ + -e "s:@APULSELIB_DIR@:${apulselib}:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" \ + || die +} + +pkg_preinst() { + xdg_pkg_preinst + + # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse + # does not need to be forced into the LD_LIBRARY_PATH + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + einfo "APULSE found; Generating library symlinks for sound support ..." + local lib + pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die + for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do + # A quickpkg rolled by hand will grab symlinks as part of the package, + # so we need to avoid creating them if they already exist. + if [[ ! -L ${lib##*/} ]] ; then + ln -s "${lib}" ${lib##*/} || die + fi + done + popd &>/dev/null || die + fi +} + +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 + + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + elog "Apulse was detected at merge time on this system and so it will always be" + elog "used for sound. If you wish to use pulseaudio instead please unmerge" + elog "media-sound/apulse." + elog + fi + + local show_doh_information + local show_normandy_information + local show_shortcut_information + + if [[ -z "${REPLACING_VERSIONS}" ]] ; then + # New install; Tell user that DoH is disabled by default + show_doh_information=yes + show_normandy_information=yes + show_shortcut_information=no + else + local replacing_version + for replacing_version in ${REPLACING_VERSIONS} ; do + if ver_test "${replacing_version}" -lt 91.0 ; then + # Tell user that we no longer install a shortcut + # per supported display protocol + show_shortcut_information=yes + fi + done + fi + + if [[ -n "${show_doh_information}" ]] ; then + elog + elog "Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH):" + elog "Due to privacy concerns (encrypting DNS might be a good thing, sending all" + elog "DNS traffic to Cloudflare by default is not a good idea and applications" + elog "should respect OS configured settings), \"network.trr.mode\" was set to 5" + elog "(\"Off by choice\") by default." + elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences." + fi + + # bug 713782 + if [[ -n "${show_normandy_information}" ]] ; then + elog + elog "Upstream operates a service named Normandy which allows Mozilla to" + elog "push changes for default settings or even install new add-ons remotely." + elog "While this can be useful to address problems like 'Armagadd-on 2.0' or" + elog "revert previous decisions to disable TLS 1.0/1.1, privacy and security" + elog "concerns prevail, which is why we have switched off the use of this" + elog "service by default." + elog + elog "To re-enable this service set" + elog + elog " app.normandy.enabled=true" + elog + elog "in about:config." + fi + + if [[ -n "${show_shortcut_information}" ]] ; then + elog + elog "Since ${PN}-91.0 we no longer install multiple shortcuts for" + elog "each supported display protocol. Instead we will only install" + elog "one generic Mozilla ${PN^} shortcut." + elog "If you still want to be able to select between running Mozilla ${PN^}" + elog "on X11 or Wayland, you have to re-create these shortcuts on your own." + 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 + + elog + elog "Unfortunately Firefox-100.0 breaks compatibility with some sites using " + elog "useragent checks. To temporarily fix this, enter about:config and modify " + elog "network.http.useragent.forceVersion preference to \"99\"." + elog "Or install an addon to change your useragent." + elog "See: https://support.mozilla.org/en-US/kb/difficulties-opening-or-using-website-firefox-100" + elog +} diff --git a/www-client/firefox/firefox-104.0.ebuild b/www-client/firefox/firefox-104.0.ebuild new file mode 100644 index 000000000000..f3576c6aa78f --- /dev/null +++ b/www-client/firefox/firefox-104.0.ebuild @@ -0,0 +1,1279 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-104-patches-01j.tar.xz" + +LLVM_MAX_SLOT=14 + +PYTHON_COMPAT=( python3_{8..11} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +WANT_AUTOCONF="2.1" + +VIRTUALX_REQUIRED="pgo" + +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" +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 multiprocessing pax-utils python-any-r1 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,whissi,slashbeast}/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" + +DESCRIPTION="Firefox Web Browser" +HOMEPAGE="https://www.mozilla.com/firefox" + +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" + +SLOT="rapid" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" + +IUSE="+clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel" +IUSE+=" jack libproxy lto +openh264 pgo pulseaudio sndio selinux" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx system-png system-python-libs +system-webp" +IUSE+=" wayland wifi" + +# Firefox-only IUSE +IUSE+=" geckodriver +gmp-autoupdate screencast +X" + +REQUIRED_USE="debug? ( !system-av1 ) + pgo? ( lto ) + wifi? ( dbus )" + +# Firefox-only REQUIRED_USE flags +REQUIRED_USE+=" || ( X wayland )" +REQUIRED_USE+=" pgo? ( X )" +REQUIRED_USE+=" screencast? ( wayland )" + +BDEPEND="${PYTHON_DEPS} + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.24.3 + net-libs/nodejs + virtual/pkgconfig + virtual/rust + || ( + ( + sys-devel/clang:14 + sys-devel/llvm:14 + clang? ( + =sys-devel/lld-14* + pgo? ( =sys-libs/compiler-rt-sanitizers-14*[profile] ) + ) + ) + ( + sys-devel/clang:13 + sys-devel/llvm:13 + clang? ( + =sys-devel/lld-13* + pgo? ( =sys-libs/compiler-rt-sanitizers-13*[profile] ) + ) + ) + ) + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 )" + +COMMON_DEPEND=" + dev-libs/atk + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.81 + >=dev-libs/nspr-4.34.1 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + media-video/ffmpeg + sys-libs/zlib + virtual/freedesktop-icon-theme + x11-libs/cairo + x11-libs/gdk-pixbuf + x11-libs/pango + x11-libs/pixman + dbus? ( + dev-libs/dbus-glib + sys-apps/dbus + ) + jack? ( virtual/jack ) + libproxy? ( net-libs/libproxy ) + selinux? ( sec-policy/selinux-mozilla ) + sndio? ( >=media-sound/sndio-1.8.0-r1 ) + screencast? ( media-video/pipewire:= ) + system-av1? ( + >=media-libs/dav1d-0.9.3:= + >=media-libs/libaom-1.0.0:= + ) + system-harfbuzz? ( + >=media-gfx/graphite2-1.3.13 + >=media-libs/harfbuzz-2.8.1:0= + ) + system-icu? ( >=dev-libs/icu-71.1:= ) + system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 ) + system-libevent? ( >=dev-libs/libevent-2.0:0=[threads] ) + system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) + system-png? ( >=media-libs/libpng-1.6.35:0=[apng] ) + system-webp? ( >=media-libs/libwebp-1.1.0:0= ) + wayland? ( + >=media-libs/libepoxy-1.5.10-r1 + x11-libs/gtk+:3[wayland] + x11-libs/libdrm + x11-libs/libxkbcommon[wayland] + ) + wifi? ( + kernel_linux? ( + dev-libs/dbus-glib + net-misc/networkmanager + sys-apps/dbus + ) + ) + X? ( + virtual/opengl + x11-libs/cairo[X] + x11-libs/gtk+:3[X] + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libxkbcommon[X] + x11-libs/libXrandr + x11-libs/libXtst + x11-libs/libxcb:= + )" + +RDEPEND="${COMMON_DEPEND} + !www-client/firefox:0 + !www-client/firefox:esr + jack? ( virtual/jack ) + openh264? ( media-libs/openh264:*[plugin] ) + pulseaudio? ( + || ( + media-sound/pulseaudio + >=media-sound/apulse-0.1.12-r4 + ) + ) + selinux? ( sec-policy/selinux-mozilla )" + +DEPEND="${COMMON_DEPEND} + pulseaudio? ( + || ( + media-sound/pulseaudio + >=media-sound/apulse-0.1.12-r4[sdk] + ) + ) + X? ( + x11-libs/libICE + x11-libs/libSM + )" + +S="${WORKDIR}/${PN}-${PV%_*}" + +# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or +# overridden in the enviromnent (advanced hackers only) +if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then + MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) +fi + +llvm_check_deps() { + if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then + einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use clang ; then + if ! has_version -b "=sys-devel/lld-${LLVM_SLOT}*" ; then + einfo "=sys-devel/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use pgo ; then + if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*" ; then + einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + 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+=( 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+=( sco ) +MOZ_LANGS+=( si ) +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}" +} + +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 || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6600M" + fi + + check-reqs_pkg_pretend + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + fi + + check-reqs_pkg_setup + + llvm_pkg_setup + + if use clang && use lto ; then + local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') + [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") + [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" + + local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') + [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") + [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" + + if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then + eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." + eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" + eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" + eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" + eerror " - Build ${CATEGORY}/${PN} without USE=lto" + eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " + eerror " llvm/clang/lld/rust chain depending on your @world updates)" + die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" + fi + fi + + 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 + # Allow access to GPU during PGO run + local ati_cards mesa_cards nvidia_cards render_cards + shopt -s nullglob + + ati_cards=$(echo -n /dev/ati/card* | sed 's/ /:/g') + if [[ -n "${ati_cards}" ]] ; then + addpredict "${ati_cards}" + fi + + mesa_cards=$(echo -n /dev/dri/card* | sed 's/ /:/g') + if [[ -n "${mesa_cards}" ]] ; then + addpredict "${mesa_cards}" + fi + + nvidia_cards=$(echo -n /dev/nvidia* | sed 's/ /:/g') + if [[ -n "${nvidia_cards}" ]] ; then + addpredict "${nvidia_cards}" + fi + + render_cards=$(echo -n /dev/dri/renderD128* | sed 's/ /:/g') + if [[ -n "${render_cards}" ]] ; then + addpredict "${render_cards}" + fi + + shopt -u nullglob + 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 + + 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() { + use lto && rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch + 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)" + + # Make LTO respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure \ + || die "sed failed to set num_cores" + + # Make ICU respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/intl/icu_sources_data.py \ + || die "sed failed to set num_cores" + + # 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 + + # Clearing checksums where we have applied patches + moz_clear_vendor_checksums audioipc + moz_clear_vendor_checksums audioipc-client + moz_clear_vendor_checksums audioipc-server + + # 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 && ! tc-is-clang ; then + # Force clang + einfo "Enforcing the use of clang due to USE=clang ..." + have_switched_compiler=yes + AR=llvm-ar + AS=llvm-as + CC=${CHOST}-clang + CXX=${CHOST}-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 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + tc-export CC CXX LD AR NM OBJDUMP RANLIB 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 + + # Set Gentoo defaults + export MOZILLA_OFFICIAL=1 + + mozconfig_add_options_ac 'Gentoo default' \ + --allow-addon-sideload \ + --disable-cargo-incremental \ + --disable-crashreporter \ + --disable-gpsd \ + --disable-install-strip \ + --disable-parental-controls \ + --disable-strip \ + --disable-updater \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-release \ + --enable-system-ffi \ + --enable-system-pixman \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --without-wasm-sandboxed-libraries \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --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 '' --update-channel=${update_channel} + + if ! use x86 && [[ ${CHOST} != armv*h* ]] ; 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. + if use ppc64; then + mozconfig_add_options_ac '' --disable-sandbox + else + mozconfig_add_options_ac '' --enable-sandbox + 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-harfbuzz system-graphite2 + 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 + + mozconfig_use_enable geckodriver + + if use hardened ; then + mozconfig_add_options_ac "+hardened" --enable-hardening + append-ldflags "-Wl,-z,relro -Wl,-z,now" + 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 + + 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 + fi + + if use lto ; then + if use clang ; then + # Upstream only supports lld when using clang + mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld + + mozconfig_add_options_ac '+lto' --enable-lto=cross + + else + # ThinLTO is currently broken, see bmo#1644409 + mozconfig_add_options_ac '+lto' --enable-lto=full + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + + 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 + else + # Avoid auto-magic on linker + if use clang ; then + # This is upstream's default + mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld + else + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + fi + + # LTO flag was handled via configure + filter-flags '-flto*' + + mozconfig_use_enable debug + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + else + 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*' + + # Modifications to better support ARM, bug #553364 + if use cpu_flags_arm_neon ; then + mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon + + if ! tc-is-clang ; then + # thumb options aren't supported when using clang, bug 666966 + mozconfig_add_options_ac '+cpu_flags_arm_neon' \ + --with-thumb=yes \ + --with-thumb-interwork=no + fi + fi + + if [[ ${CHOST} == armv*h* ]] ; then + mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard + + if ! use system-libvpx ; then + sed -i \ + -e "s|softfp|hard|" \ + "${S}"/media/libvpx/moz.build \ + || die + fi + fi + + if use clang ; then + # https://bugzilla.mozilla.org/show_bug.cgi?id=1482204 + # https://bugzilla.mozilla.org/show_bug.cgi?id=1483822 + # toolkit/moz.configure Elfhack section: target.cpu in ('arm', 'x86', 'x86_64') + local disable_elf_hack= + if use amd64 ; then + disable_elf_hack=yes + elif use x86 ; then + disable_elf_hack=yes + elif use arm ; then + disable_elf_hack=yes + fi + + if [[ -n ${disable_elf_hack} ]] ; then + mozconfig_add_options_ac 'elf-hack is broken when using Clang' --disable-elf-hack + fi + elif tc-is-gcc ; then + if ver_test $(gcc-fullversion) -ge 10 ; then + einfo "Forcing -fno-tree-loop-vectorize to workaround GCC bug, see bug 758446 ..." + append-cxxflags -fno-tree-loop-vectorize + fi + fi + + # Additional ARCH support + case "${ARCH}" in + arm) + # Reduce the memory requirements for linking + if use clang ; then + # Nothing to do + :; + elif use lto ; then + append-ldflags -Wl,--no-keep-memory + else + append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads + fi + ;; + esac + + if ! use elibc_glibc ; then + mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc + fi + + # Allow elfhack to work in combination with unstripped binaries + # when they would normally be larger than 2GiB. + append-ldflags "-Wl,--compress-debug-sections=zlib" + + # 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 + PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach + + if use system-python-libs; then + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="system" + else + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" + 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 pgo ; then + virtx_cmd=virtx + + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + addpredict /root + fi + + if ! use X && use wayland; 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 sys-devel/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 + 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 + + # 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 geckodriver + if use geckodriver ; then + einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} ..." + pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/geckodriver + + dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver + fi + + # Install icons + local icon_srcdir="${S}/browser/branding/official" + local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg" + + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${icon_symbolic_file}" ${PN}-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 desktop_filename="${PN}.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + 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 + + # 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:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \ + -e "s:@APULSELIB_DIR@:${apulselib}:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" \ + || die +} + +pkg_preinst() { + xdg_pkg_preinst + + # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse + # does not need to be forced into the LD_LIBRARY_PATH + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + einfo "APULSE found; Generating library symlinks for sound support ..." + local lib + pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die + for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do + # A quickpkg rolled by hand will grab symlinks as part of the package, + # so we need to avoid creating them if they already exist. + if [[ ! -L ${lib##*/} ]] ; then + ln -s "${lib}" ${lib##*/} || die + fi + done + popd &>/dev/null || die + fi +} + +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 + + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + elog "Apulse was detected at merge time on this system and so it will always be" + elog "used for sound. If you wish to use pulseaudio instead please unmerge" + elog "media-sound/apulse." + elog + fi + + local show_doh_information + local show_normandy_information + local show_shortcut_information + + if [[ -z "${REPLACING_VERSIONS}" ]] ; then + # New install; Tell user that DoH is disabled by default + show_doh_information=yes + show_normandy_information=yes + show_shortcut_information=no + else + local replacing_version + for replacing_version in ${REPLACING_VERSIONS} ; do + if ver_test "${replacing_version}" -lt 91.0 ; then + # Tell user that we no longer install a shortcut + # per supported display protocol + show_shortcut_information=yes + fi + done + fi + + if [[ -n "${show_doh_information}" ]] ; then + elog + elog "Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH):" + elog "Due to privacy concerns (encrypting DNS might be a good thing, sending all" + elog "DNS traffic to Cloudflare by default is not a good idea and applications" + elog "should respect OS configured settings), \"network.trr.mode\" was set to 5" + elog "(\"Off by choice\") by default." + elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences." + fi + + # bug 713782 + if [[ -n "${show_normandy_information}" ]] ; then + elog + elog "Upstream operates a service named Normandy which allows Mozilla to" + elog "push changes for default settings or even install new add-ons remotely." + elog "While this can be useful to address problems like 'Armagadd-on 2.0' or" + elog "revert previous decisions to disable TLS 1.0/1.1, privacy and security" + elog "concerns prevail, which is why we have switched off the use of this" + elog "service by default." + elog + elog "To re-enable this service set" + elog + elog " app.normandy.enabled=true" + elog + elog "in about:config." + fi + + if [[ -n "${show_shortcut_information}" ]] ; then + elog + elog "Since ${PN}-91.0 we no longer install multiple shortcuts for" + elog "each supported display protocol. Instead we will only install" + elog "one generic Mozilla ${PN^} shortcut." + elog "If you still want to be able to select between running Mozilla ${PN^}" + elog "on X11 or Wayland, you have to re-create these shortcuts on your own." + 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 + + elog + elog "Unfortunately Firefox-100.0 breaks compatibility with some sites using " + elog "useragent checks. To temporarily fix this, enter about:config and modify " + elog "network.http.useragent.forceVersion preference to \"99\"." + elog "Or install an addon to change your useragent." + elog "See: https://support.mozilla.org/en-US/kb/difficulties-opening-or-using-website-firefox-100" + elog +} diff --git a/www-client/firefox/firefox-91.13.0.ebuild b/www-client/firefox/firefox-91.13.0.ebuild new file mode 100644 index 000000000000..a904025dae8b --- /dev/null +++ b/www-client/firefox/firefox-91.13.0.ebuild @@ -0,0 +1,1236 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +FIREFOX_PATCHSET="firefox-91esr-patches-10j.tar.xz" + +LLVM_MAX_SLOT=14 + +PYTHON_COMPAT=( python3_{8..10} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +WANT_AUTOCONF="2.1" + +VIRTUALX_REQUIRED="pgo" + +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" +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 multiprocessing pax-utils python-any-r1 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,whissi}/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" + +DESCRIPTION="Firefox Web Browser" +HOMEPAGE="https://www.mozilla.com/firefox" + +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" + +SLOT="esr" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" + +IUSE="+clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel" +IUSE+=" jack lto +openh264 pgo pulseaudio sndio selinux" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx system-png +system-webp" +IUSE+=" wayland wifi" + +# Firefox-only IUSE +IUSE+=" geckodriver" +IUSE+=" +gmp-autoupdate" +IUSE+=" screencast" + +REQUIRED_USE="debug? ( !system-av1 ) + pgo? ( lto ) + wifi? ( dbus )" + +# Firefox-only REQUIRED_USE flags +REQUIRED_USE+=" screencast? ( wayland )" + +BDEPEND="${PYTHON_DEPS} + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.24.0 + >=net-libs/nodejs-10.23.1 + virtual/pkgconfig + >=virtual/rust-1.51.0 + || ( + ( + sys-devel/clang:14 + sys-devel/llvm:14 + clang? ( + =sys-devel/lld-14* + pgo? ( =sys-libs/compiler-rt-sanitizers-14*[profile] ) + sys-devel/clang:14 + ) + ) + ( + sys-devel/clang:13 + sys-devel/llvm:13 + clang? ( + =sys-devel/lld-13* + pgo? ( =sys-libs/compiler-rt-sanitizers-13*[profile] ) + ) + ) + ) + amd64? ( >=dev-lang/nasm-2.13 ) + x86? ( >=dev-lang/nasm-2.13 )" + +COMMON_DEPEND=" + >=dev-libs/nss-3.68 + >=dev-libs/nspr-4.32 + dev-libs/atk + dev-libs/expat + >=x11-libs/cairo-1.10[X] + >=x11-libs/gtk+-3.4.0:3[X] + x11-libs/gdk-pixbuf + >=x11-libs/pango-1.22.0 + >=media-libs/mesa-10.2:* + media-libs/fontconfig + >=media-libs/freetype-2.4.10 + kernel_linux? ( !pulseaudio? ( media-libs/alsa-lib ) ) + virtual/freedesktop-icon-theme + >=x11-libs/pixman-0.19.2 + >=dev-libs/glib-2.26:2 + >=sys-libs/zlib-1.2.3 + >=dev-libs/libffi-3.0.10:= + media-video/ffmpeg + x11-libs/libX11 + x11-libs/libxcb:= + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrender + x11-libs/libXt + dbus? ( + sys-apps/dbus + dev-libs/dbus-glib + ) + screencast? ( media-video/pipewire:= ) + system-av1? ( + >=media-libs/dav1d-0.8.1:= + >=media-libs/libaom-1.0.0:= + ) + system-harfbuzz? ( + >=media-libs/harfbuzz-2.8.1:0= + >=media-gfx/graphite2-1.3.13 + ) + system-icu? ( >=dev-libs/icu-69.1:= ) + system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 ) + system-libevent? ( >=dev-libs/libevent-2.0:0=[threads] ) + system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) + system-png? ( >=media-libs/libpng-1.6.35:0=[apng] ) + system-webp? ( >=media-libs/libwebp-1.1.0:0= ) + wifi? ( + kernel_linux? ( + sys-apps/dbus + dev-libs/dbus-glib + net-misc/networkmanager + ) + ) + jack? ( virtual/jack ) + selinux? ( sec-policy/selinux-mozilla ) + sndio? ( media-sound/sndio )" + +RDEPEND="${COMMON_DEPEND} + !www-client/firefox:0 + !www-client/firefox:rapid + jack? ( virtual/jack ) + openh264? ( media-libs/openh264:*[plugin] ) + pulseaudio? ( + || ( + media-sound/pulseaudio + >=media-sound/apulse-0.1.12-r4 + ) + ) + selinux? ( sec-policy/selinux-mozilla )" + +DEPEND="${COMMON_DEPEND} + x11-libs/libICE + x11-libs/libSM + pulseaudio? ( + || ( + media-sound/pulseaudio + >=media-sound/apulse-0.1.12-r4[sdk] + ) + ) + wayland? ( >=x11-libs/gtk+-3.11:3[wayland] ) + amd64? ( virtual/opengl ) + x86? ( virtual/opengl )" + +S="${WORKDIR}/${PN}-${PV%_*}" + +# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or +# overridden in the enviromnent (advanced hackers only) +if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then + MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) +fi + +llvm_check_deps() { + if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then + einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use clang ; then + if ! has_version -b "=sys-devel/lld-${LLVM_SLOT}*" ; then + einfo "=sys-devel/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use pgo ; then + if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*" ; then + einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + 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+=( 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+=( sco ) +MOZ_LANGS+=( si ) +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}" +} + +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 || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + fi + + check-reqs_pkg_pretend + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + fi + + check-reqs_pkg_setup + + llvm_pkg_setup + + if use clang && use lto ; then + local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') + [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") + [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" + + local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') + [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") + [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" + + if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then + eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." + eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" + eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" + eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" + eerror " - Build ${CATEGORY}/${PN} without USE=lto" + eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " + eerror " llvm/clang/lld/rust chain depending on your @world updates)" + die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" + fi + fi + + if ! use clang && [[ $(gcc-major-version) -eq 11 ]] \ + && ! has_version -b ">sys-devel/gcc-11.1.0:11" ; then + # bug 792705 + eerror "Using GCC 11 to compile firefox is currently known to be broken (see bug #792705)." + die "Set USE=clang or select <gcc-11 to build ${CATEGORY}/${P}." + fi + + 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 + # Allow access to GPU during PGO run + local ati_cards mesa_cards nvidia_cards render_cards + shopt -s nullglob + + ati_cards=$(echo -n /dev/ati/card* | sed 's/ /:/g') + if [[ -n "${ati_cards}" ]] ; then + addpredict "${ati_cards}" + fi + + mesa_cards=$(echo -n /dev/dri/card* | sed 's/ /:/g') + if [[ -n "${mesa_cards}" ]] ; then + addpredict "${mesa_cards}" + fi + + nvidia_cards=$(echo -n /dev/nvidia* | sed 's/ /:/g') + if [[ -n "${nvidia_cards}" ]] ; then + addpredict "${nvidia_cards}" + fi + + render_cards=$(echo -n /dev/dri/renderD128* | sed 's/ /:/g') + if [[ -n "${render_cards}" ]] ; then + addpredict "${render_cards}" + fi + + shopt -u nullglob + 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 + + 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; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die + fi + + if use system-av1 && has_version "<media-libs/dav1d-1.0.0"; then + rm -v "${WORKDIR}"/firefox-patches/0033-bgo-835788-dav1d-1.0.0-support.patch || die + elog "<media-libs/dav1d-1.0.0 detected, removing 1.0.0 compat patch." + elif ! use system-av1; then + rm -v "${WORKDIR}"/firefox-patches/0033-bgo-835788-dav1d-1.0.0-support.patch || die + elog "-system-av1 USE flag detected, removing 1.0.0 compat patch." + 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)" + + # Make LTO respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure \ + || die "sed failed to set num_cores" + + # Make ICU respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/intl/icu_sources_data.py \ + || die "sed failed to set num_cores" + + # 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 + + # Clearing checksums where we have applied patches + moz_clear_vendor_checksums target-lexicon-0.9.0 + + # 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 && ! tc-is-clang ; then + # Force clang + einfo "Enforcing the use of clang due to USE=clang ..." + have_switched_compiler=yes + AR=llvm-ar + CC=${CHOST}-clang + CXX=${CHOST}-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 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + tc-export CC CXX LD AR NM OBJDUMP RANLIB 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 + + # Set Gentoo defaults + export MOZILLA_OFFICIAL=1 + + mozconfig_add_options_ac 'Gentoo default' \ + --allow-addon-sideload \ + --disable-cargo-incremental \ + --disable-crashreporter \ + --disable-install-strip \ + --disable-strip \ + --disable-updater \ + --enable-official-branding \ + --enable-release \ + --enable-system-ffi \ + --enable-system-pixman \ + --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-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 '' --update-channel=${update_channel} + + if ! use x86 && [[ ${CHOST} != armv*h* ]] ; then + mozconfig_add_options_ac '' --enable-rust-simd + 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-harfbuzz system-graphite2 + mozconfig_use_with system-icu + mozconfig_use_with system-jpeg + mozconfig_use_with system-libevent system-libevent "${ESYSROOT}/usr" + mozconfig_use_with system-libvpx + mozconfig_use_with system-png + mozconfig_use_with system-webp + + mozconfig_use_enable dbus + + use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme + + mozconfig_use_enable geckodriver + + if use hardened ; then + mozconfig_add_options_ac "+hardened" --enable-hardening + append-ldflags "-Wl,-z,relro -Wl,-z,now" + fi + + mozconfig_use_enable jack + + mozconfig_use_enable pulseaudio + # force the deprecated alsa sound code if pulseaudio is disabled + if use kernel_linux && ! use pulseaudio ; then + mozconfig_add_options_ac '-pulseaudio' --enable-alsa + fi + + mozconfig_use_enable sndio + + mozconfig_use_enable wifi necko-wifi + + if use wayland ; then + mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland + else + mozconfig_add_options_ac '' --enable-default-toolkit=cairo-gtk3 + fi + + if use lto ; then + if use clang ; then + # Upstream only supports lld when using clang + mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld + + mozconfig_add_options_ac '+lto' --enable-lto=cross + else + # ld.gold is known to fail: + # /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/../../../../x86_64-pc-linux-gnu/bin/ld.gold: internal error in set_xindex, at /var/tmp/portage/sys-devel/binutils-2.37_p1-r1/work/binutils-2.37/gold/object.h:1050 + + # ThinLTO is currently broken, see bmo#1644409 + mozconfig_add_options_ac '+lto' --enable-lto=full + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + + 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 + else + # Avoid auto-magic on linker + if use clang ; then + # This is upstream's default + mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld + else + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + fi + + # LTO flag was handled via configure + filter-flags '-flto*' + + mozconfig_use_enable debug + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + else + 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*' + + # Modifications to better support ARM, bug #553364 + if use cpu_flags_arm_neon ; then + mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon + + if ! tc-is-clang ; then + # thumb options aren't supported when using clang, bug 666966 + mozconfig_add_options_ac '+cpu_flags_arm_neon' \ + --with-thumb=yes \ + --with-thumb-interwork=no + fi + fi + + if [[ ${CHOST} == armv*h* ]] ; then + mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard + + if ! use system-libvpx ; then + sed -i \ + -e "s|softfp|hard|" \ + "${S}"/media/libvpx/moz.build \ + || die + fi + fi + + if use clang ; then + # https://bugzilla.mozilla.org/show_bug.cgi?id=1482204 + # https://bugzilla.mozilla.org/show_bug.cgi?id=1483822 + # toolkit/moz.configure Elfhack section: target.cpu in ('arm', 'x86', 'x86_64') + local disable_elf_hack= + if use amd64 ; then + disable_elf_hack=yes + elif use x86 ; then + disable_elf_hack=yes + elif use arm ; then + disable_elf_hack=yes + fi + + if [[ -n ${disable_elf_hack} ]] ; then + mozconfig_add_options_ac 'elf-hack is broken when using Clang' --disable-elf-hack + fi + elif tc-is-gcc ; then + if ver_test $(gcc-fullversion) -ge 10 ; then + einfo "Forcing -fno-tree-loop-vectorize to workaround GCC bug, see bug 758446 ..." + append-cxxflags -fno-tree-loop-vectorize + fi + fi + + # Additional ARCH support + case "${ARCH}" in + arm) + # Reduce the memory requirements for linking + if use clang ; then + # Nothing to do + :; + elif tc-ld-is-gold || use lto ; then + append-ldflags -Wl,--no-keep-memory + else + append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads + fi + ;; + esac + + if ! use elibc_glibc ; then + mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc + fi + + # Allow elfhack to work in combination with unstripped binaries + # when they would normally be larger than 2GiB. + append-ldflags "-Wl,--compress-debug-sections=zlib" + + # 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 MACH_USE_SYSTEM_PYTHON=1 + export PIP_NO_CACHE_DIR=off + + # 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 pgo ; then + virtx_cmd=virtx + + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + addpredict /root + fi + + local -x GDK_BACKEND=x11 + + ${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 sys-devel/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 \ + >>"${GENTOO_PREFS}" \ + || die "failed to add prefs to force hardware-accelerated rendering to all-gentoo.js" + 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 + + # 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 geckodriver + if use geckodriver ; then + einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} ..." + pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/geckodriver + + dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver + fi + + # Install icons + local icon_srcdir="${S}/browser/branding/official" + local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg" + + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${icon_symbolic_file}" ${PN}-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 desktop_filename="${PN}.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + 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 + + # 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:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \ + -e "s:@APULSELIB_DIR@:${apulselib}:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" \ + || die +} + +pkg_preinst() { + xdg_pkg_preinst + + # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse + # does not need to be forced into the LD_LIBRARY_PATH + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + einfo "APULSE found; Generating library symlinks for sound support ..." + local lib + pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die + for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do + # A quickpkg rolled by hand will grab symlinks as part of the package, + # so we need to avoid creating them if they already exist. + if [[ ! -L ${lib##*/} ]] ; then + ln -s "${lib}" ${lib##*/} || die + fi + done + popd &>/dev/null || die + fi +} + +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 + + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + elog "Apulse was detected at merge time on this system and so it will always be" + elog "used for sound. If you wish to use pulseaudio instead please unmerge" + elog "media-sound/apulse." + elog + fi + + local show_doh_information + local show_normandy_information + local show_shortcut_information + + if [[ -z "${REPLACING_VERSIONS}" ]] ; then + # New install; Tell user that DoH is disabled by default + show_doh_information=yes + show_normandy_information=yes + show_shortcut_information=no + else + local replacing_version + for replacing_version in ${REPLACING_VERSIONS} ; do + if ver_test "${replacing_version}" -lt 91.0 ; then + # Tell user that we no longer install a shortcut + # per supported display protocol + show_shortcut_information=yes + fi + done + fi + + if [[ -n "${show_doh_information}" ]] ; then + elog + elog "Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH):" + elog "Due to privacy concerns (encrypting DNS might be a good thing, sending all" + elog "DNS traffic to Cloudflare by default is not a good idea and applications" + elog "should respect OS configured settings), \"network.trr.mode\" was set to 5" + elog "(\"Off by choice\") by default." + elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences." + fi + + # bug 713782 + if [[ -n "${show_normandy_information}" ]] ; then + elog + elog "Upstream operates a service named Normandy which allows Mozilla to" + elog "push changes for default settings or even install new add-ons remotely." + elog "While this can be useful to address problems like 'Armagadd-on 2.0' or" + elog "revert previous decisions to disable TLS 1.0/1.1, privacy and security" + elog "concerns prevail, which is why we have switched off the use of this" + elog "service by default." + elog + elog "To re-enable this service set" + elog + elog " app.normandy.enabled=true" + elog + elog "in about:config." + fi + + if [[ -n "${show_shortcut_information}" ]] ; then + elog + elog "Since ${PN}-91.0 we no longer install multiple shortcuts for" + elog "each supported display protocol. Instead we will only install" + elog "one generic Mozilla ${PN^} shortcut." + elog "If you still want to be able to select between running Mozilla ${PN^}" + elog "on X11 or Wayland, you have to re-create these shortcuts on your own." + fi +} |