summaryrefslogtreecommitdiff
path: root/www-client/firefox
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-09-14 16:47:47 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-09-14 16:47:47 +0100
commitcdb999af22d9aa464bfd480fc9f5ebda71fc89e2 (patch)
treededc259e3cf8ed2fac9979725038b722a866579c /www-client/firefox
parentd938920a33f03124f4e211a67d9291283442caa1 (diff)
gentoo auto-resync : 14:09:2023 - 16:47:47
Diffstat (limited to 'www-client/firefox')
-rw-r--r--www-client/firefox/Manifest301
-rw-r--r--www-client/firefox/firefox-102.15.1.ebuild1290
-rw-r--r--www-client/firefox/firefox-115.2.1.ebuild1407
-rw-r--r--www-client/firefox/firefox-117.0.1.ebuild1488
4 files changed, 4486 insertions, 0 deletions
diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 7e82518a2b0a..0fbf7433b5e4 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -105,6 +105,104 @@ DIST firefox-102.15.0esr-xh.xpi 427933 BLAKE2B fb3ed0b90281d9c4bc2c48af77a205193
DIST firefox-102.15.0esr-zh-CN.xpi 613308 BLAKE2B a51300256ada6338471a0e39d237b4be1ca2ad4853a7b5e81e230093350bf08bda65ed9c6f69c26298ee01ab94cab1670063d449562c04f7e0eb5dc9eeecfb79 SHA512 afa427371defd062199ca5046929b7b57d7a6847a0ab04ae3bfe01ace7690a187532ffc51db6188e563134acb16ae4eb68ab480dc188db09efd55dab1e3d3c48
DIST firefox-102.15.0esr-zh-TW.xpi 614578 BLAKE2B 562937f3a3cacc41c8cf197fb782363f7064acda47e6980dfe8770b332d181a09aae48b0b059c9baa9c79e22b2f44565947daf1ef5bb847b36deeae651b0fed7 SHA512 0f3a5a35134f040e4255241a5f321df8eb363f6b5cf04eec76247821153f682a706e134a7617e1d6e8c183ecb21d13ef171304d1636e798394d6e721e1d3a8b2
DIST firefox-102.15.0esr.source.tar.xz 486592324 BLAKE2B b70727fa91d0d270673374bebb4745b87f6194191c1c9415547d772811a4a85f79a97e8985877eb5c9beef43fe15bef574172da35935e7024a947919ec11d883 SHA512 87db6e32fda215253f9b3bd233ef7fa91a64349310064b8482e5c634f34cbe99a2a111d74d2b9f2a99a0b3b510dbf9039ebe4ccfc176c2554d65bc9cfb508bf9
+DIST firefox-102.15.1esr-ach.xpi 466446 BLAKE2B 16e71c16aa1d8699d76a58ea8107216e4073c15195a9d817ac4670a1fe6f834b6a280cddc6b7fdb33f44a4fc28edf777f3fb9f55dcbc1d11c52910d582b7aa1a SHA512 8274d28fb438ca53decae0cecb851c23780431cd675cd656e3522dcd2773b2a0d1004f2dc9723a2f4a85f69009ca996ad05d87f155bb5906f650daa8385ef993
+DIST firefox-102.15.1esr-af.xpi 429119 BLAKE2B f9c25a77bc271d05e9b4115ac1f76d1aa495a53dc84015e3376bc5738874a64461fce7ef47fa152a9c7c46acba6a0fe94a8c1ae379e768d4426e995c58f1b248 SHA512 43cc11eb1e696fbf8a098e76b3e830349a7997ccb7bcd8c3bbc8b648b7cfcf877f2f10528834422303fc62f94356081244770bb533a5651af7d0c718ef2f7f8c
+DIST firefox-102.15.1esr-an.xpi 510493 BLAKE2B fd46fe8e582eb44ffb0a7d5da1bb41404abb152695cfb1b4a1342ad8d0a9b729fb0c9bae786ec5d225f8386dc942f3c0bb569fc3a87c5eb8d2792de12d75e7cd SHA512 12600a6b9ccbaa39d81883837fcee8dfa521a87d7a17b05a38a58dac6a2e849b7adb4f14bc52f00ccd715dc3c07bc7b2e80d67073a1fe3e44ed3e51e328836cf
+DIST firefox-102.15.1esr-ar.xpi 578877 BLAKE2B 89d5ac78af6d7e049c0793601af62da1b57f4075d0f5a25ae5e17b8413ae2d8de32556b355bb726558b695a3a1f02e6a6d430328ba38282f5c8a3023259befbc SHA512 fd11af88af2601d5428c87d782a1fdfdd1bdc7bc29790690a60773cb684400fb663fe1529757f380562fb24856ef54cdbd40458e0615796b8e42a464823e611d
+DIST firefox-102.15.1esr-ast.xpi 498109 BLAKE2B 2748c0b49b865dc4c8e7f7d268087e8e48a67d61bea18b97b7e70d05099f8c658430d64be40cea12ba2779d837e7b2c6219506e150767c7b840d51da00ccba73 SHA512 723dcd487954074fa68571a23d24255b767e2f85551e2013927e119097e70eb170b44317c718502c77006c3810caabe707f9a6a9e84c40a26d2ca315312e287f
+DIST firefox-102.15.1esr-az.xpi 500786 BLAKE2B 4815f334cf1c21a9acac94218ef3079b5e04949824c94054f027eed7be8b1a9f312581b79e3fc8933f0970adb15a327a5c94733bee10bf4dc7cb31fe14631ab8 SHA512 d5fecc00f599a479f972d07dff0c73c8fdda0c51109cbe67080606235e153554cb448333529b1daa71a06471bb404ef56da31bedb4f239ff0820aa32454ca1ad
+DIST firefox-102.15.1esr-be.xpi 666693 BLAKE2B 899b2d83cff8f24aa6a4bab32fef44f8b18b024a122aca1dc1db3edd8cf8109809db16990169f7cf55eaed9d197b4e46d505cfedfd1ecdf84cee33f3034e0742 SHA512 1e8c8e8496e8d5aca016ada8c77ab4963ca249143d4dcabc65a12d977de183ffcbf50d6d3a306c731fddb51fae9aaf3039fedcf2587411691a3782421c2e2e1d
+DIST firefox-102.15.1esr-bg.xpi 591348 BLAKE2B 4daafb5d95e47bc39607c3640d4d38e701b5f82f02c3f11f82d977dba9497999c5ffabad7cde72789bc22591c9ebbf1c00f651d78edb6feff2cecff2e00e3d17 SHA512 1e1e940ebc612bf32cc589b5cd9626538be7f460bd22c603d7d5fdae3f6cf4dc3335001156fbf43ea46ab8a610e3239889e13de67b0e88ea7af99e25ab467187
+DIST firefox-102.15.1esr-bn.xpi 591679 BLAKE2B ad853d8ace7d95c5b2feec367177a2ab8a2047972e429ee34f8f2d4290eba3abda8f949d30b5fba9cd25988414e10e4311807693b6eda66d272867ca6e7e58a3 SHA512 b948055a20c2928dca554ef38886ab27621ab1bfad182f9d7b86c4b3168b086b0b2ae13177b74f2938fba5c1350bdd4b584ee8320f35750c4ac4ec58b5e6434d
+DIST firefox-102.15.1esr-br.xpi 555853 BLAKE2B 664710aaab274f783c9a2895931f7df3469bf4f9e22fe7fa7d3e528692b355843788c89a147f58557f12e7e797f98fd25b2ee7f732f5581c6df53b4190bf1ca1 SHA512 16b56b71386316d2643d16ad21d1c6c0b493dd787b15b1cfb85f6ef4dbe4a0ab4349f8fb50b0cbe09d259af9dbd2016bfe246a448daca91cd758b1ca3ac276b6
+DIST firefox-102.15.1esr-bs.xpi 471736 BLAKE2B d45c2d14e749b4060ec9427735b6c62f2626577b3665c0c78849eeaad03e25309a154bca256a0f0fd33cc5af1fb51d5e2e8afd6208faf61c502ebb22dd4a8821 SHA512 a27e4cb2eb43c161eebcfc1ac74eccbecb668ec382a4c4d7e2bbb5c7e726c1aef18953e246358faa83aa8a549ffec9f3f97cd710e7bb79f094bdc31136318964
+DIST firefox-102.15.1esr-ca-valencia.xpi 549197 BLAKE2B 701d71114e822048c811ca0e1b969f8f4f72c3708f8f370a6129d74655fabcebcee57b97fa93fa87cd97493e9a69bc8427af140ea50fb932cb10dac8dee3c389 SHA512 168b25b9eeebce43a936aef9717f8b7da86c69cba08da2d07f29ef8cf049c95098cb6b74b907ac96c3f4a82009de6b2d458df01e17351d388386accdf917d05b
+DIST firefox-102.15.1esr-ca.xpi 561934 BLAKE2B 46b6e39b03b56764193c030285350487b0044d8e884f0e85b09464fce87a1d559d3a7df1e664603c9d50c87928918a37c022063dbd3908964f5e290d244d6936 SHA512 43f537f239d789cc5af18d02a3b38bd0a053ba2febee8142844b853712abd464e19de06e03dd9ebab298a44c8660dd054c959d5b3f9eab11f9e07a316e129d49
+DIST firefox-102.15.1esr-cak.xpi 563840 BLAKE2B 04bd4829556622a0b593b466134268aeb64ce6ac0a446266b0742216f80376e4be7cbd361459bf736114bff465b492fd1d9b95e946f469ed236b161eee070680 SHA512 c5bf2fb9db96068edafbb4a901539f0dd8e5becf0731f8ca8bcfff15e9c874f95a949bab27d759eddc03d4c4430e346a44c2d8fd6bb5e883866b36dec9188717
+DIST firefox-102.15.1esr-cs.xpi 599811 BLAKE2B 06006d670f42aa97c2c951cad32d735a465ac777a3651830008ed8b5ca6975dd728c5021bba8e4447d1d5cb68f93304985be55743ff1a5945dbdb60d8acebeac SHA512 f02a499432c2bebeb510775248f35975bf36713d04c450c522c922a0d6f6b821809ff9859e7ebbb564dd74fc1178735e0fa8f1a8d514e4e809ef5015bd1d8992
+DIST firefox-102.15.1esr-cy.xpi 579220 BLAKE2B aaa00f891d7109454b5ea3e1c6de930f5741d71493fd6aeb700b358a127beb6098905f311333649f1f03d139a87f68cbfea3e413045754f054eb6759a749cf8d SHA512 2ad652bc96893d62aef782ba359f93b5c84ac9ad783a39d683532e4d1d74d6c46fcdc5a02ae4afb3de450e18cf8785a1e03b847f04316bba22c4c1b80975e190
+DIST firefox-102.15.1esr-da.xpi 570516 BLAKE2B 323d420261778193bc6405b2ad11f6f9d12b0863aa8841c26f3d697cc9a929de8e5ae18a7be05f7418b5260a83fdb40599989b3e11a03daac704ea3f1bb163a7 SHA512 d299409caa9db7091f390d18af7fa445686c40b01c50059476fa89cf5ad997205f43ff3552822f18cd529b48d03fd35577ff033b984f4326dfcc62982ef1b4e3
+DIST firefox-102.15.1esr-de.xpi 591575 BLAKE2B beb7cd58e41f6cc811a803cc8141c36b64d73de9a392e6a802422874e7552570947670c3b8b8d8755a19946d44f215af29cdcf3fad857dfa11b077e95af77180 SHA512 e2ad00ac417855693117f7d537dd3cd83f2c271baa2d00b5f125ffc14707e32b0b08f53a2717a7c6c211d924712f9cf547e4c5f20b52b62358a156553109456a
+DIST firefox-102.15.1esr-dsb.xpi 600381 BLAKE2B 40cb95ed66eb06b57bc015eb3c26d2a02426d0e37e63f5ae70a4bd77ee3f5a877b139f54973b3080bd5a040941501af136ebd5d7b53dd1b53d5413cea53c2be7 SHA512 48752cfb2b964812d898107de5da669855940fb73c5faa8197f58ffed27d80484131a769999d9b7f590244a83639c670f347f1bd0387359816e974372b7e919e
+DIST firefox-102.15.1esr-el.xpi 681657 BLAKE2B f2849b02fa13b80f9acc701a8207fe4706adfdb5a764723a68342e21ad4e46cc604d769b9269502503ee9f3fbfa1e5f8587bc288b241596aa99bb5f5c873f00c SHA512 bc71052fb9e7702b67e2571e6cd4a7de12c4745f58dc816d3794db129353c4a35a8d9c9c8750d43a1df3dbeb27a3f053aa003a772b1bde6619c6ceff9d4855e7
+DIST firefox-102.15.1esr-en-CA.xpi 541057 BLAKE2B 059f39c21c96eb497c0e5ef557320ebedf26bf802331a499fb664a5d66d6cd9b04b24ee9ff6db573b679eff6112f3e49eb8aa6033d5164450a5d62e21e50c478 SHA512 366e020f66ffdc426b7b0dc67138237bfe3b39bb2c880164a31e0396109c4a682703c60b502cfab91dd9c7a18c6f9cdd576755febaf5e1ce607c09afc6bc3a7a
+DIST firefox-102.15.1esr-en-GB.xpi 544000 BLAKE2B 22d31209c7439d986866eea04c9ea99f8df2cd30e2eea748dea0bc2bbda19d016fa8acb011a00a89db26c08f14bf32b0e7b42b01e5d3dd4f7e077d43758d7de8 SHA512 45192a37a124b25cfac165abbb41663a4f34591e2c06f977f83cd0663ea26248e77b22505df269b9aa40d4e7f38815f6c22c6f22769e36ec2730db0de0c98f03
+DIST firefox-102.15.1esr-eo.xpi 571438 BLAKE2B 74a633d48c4adacbc7b37152b34372b3283fb08845bc3321c53c209343054f6880395ca8474e6451564ac91607b36dc04504c08469c1e92ba7ccf9734ee333a4 SHA512 d0abb8e104a34e9e3decc065533157ece91f4e0fe4a1cc6658a23248e37edc2a46f9465ed303388dce93a524481d568aea0d8e6cc72b15ff0559fc76c66047ec
+DIST firefox-102.15.1esr-es-AR.xpi 584201 BLAKE2B e89269171ab6b5572e918d9087c06e12023be19a999ce06e64e6e8062a0ea31af8df644f85c4c70406f16b3ebd19d27b3f246c023e179d907782fefe74487462 SHA512 3f65f978069d884cc40902c034cb6c0f800ea4108766a6f111ca57c7e67fb004b406980dd0f9c6623801806c86f90b052c6a5e4a8ae900a5fdc5ab63e0496fe4
+DIST firefox-102.15.1esr-es-CL.xpi 583184 BLAKE2B d8d7d81c2afabd1072888332168ecacdec633922e7fc2cf05fd554d703df3ff381b41ffaf64b0a3916bb6dbf7022761b94f1379e95678543858d820bb9ab1b1e SHA512 534fac3cc517412d3f1794d6c7c6fd3c60330779cac9cad562c9c6bc58bdf6d488eaf157b4f80d99f262be895f905bb192956e2324da6c30aad57d2d0a2928b9
+DIST firefox-102.15.1esr-es-ES.xpi 576082 BLAKE2B 72494115ca7ceb45b218bbea56e38af2b0aabf7419f33c6406799bb30b1dde6751ba1d1484186322ac4b852305a1335b9253e82064597ac90eeecced2cbc93b0 SHA512 54eada037e4b2fb02ad5a5e2ce135ec458c90d24d394d4450b8a1a11ed2263a36e143fe0835ca2e819b6ba6f3c18f6676fc8448d0967ea124a80934dc99ccd6b
+DIST firefox-102.15.1esr-es-MX.xpi 586663 BLAKE2B a76df913b293420d305459f9cab91a141a54bf026ed3d8fcac2e88b9fd5030dd4b629bad68b57532b07d79ad046624ce41cac27541558758bb267d296ddef5b7 SHA512 29659e52d82578af22649d4ea13bd7de72775dffe728b6faccac0e403f70eeba50bea84452c93d6366fa22cedc48d77af6460b170f1bc24f80777d72ed0d5cfe
+DIST firefox-102.15.1esr-et.xpi 543291 BLAKE2B d33540cc14711ee79a48992658faba01067aa72555d385790c50a1c6e061b8ef13710efb7d00225d56540ff5ccb62e16d1074e2e57c7454e9f4d76a06d4d92d7 SHA512 9517f6d3a0ded660bf0a5ba0b6a91a23828e7022cef8404eaaf90ee87fe8551a387e924b101e0b64b25bbc976dadca3ec161ea18516ba14ed1fc68f9c62cfc7b
+DIST firefox-102.15.1esr-eu.xpi 572530 BLAKE2B a7a65261675f712354770b56f9fc2dc1c89364db082eec2def662e6002a89e9972387a32264c5493e90aeea78d7f2ed3fe6a7c21c79707d4df20ef8750a49e3e SHA512 8a02db4f85b6a836067108e2977639ab18978e67bccaa112b44663465d8ca104daaf9fbb9fde679efef0de0af639e4707fec0e96342df74d6d58cbdea956f5f6
+DIST firefox-102.15.1esr-fa.xpi 583123 BLAKE2B ad3070d8690ffcd93da5b3bd27722061b72076d145e4e63ad61ee0129f4cf8aa71a4383d486460e83fae48749f137c35f456aa9aace72af5f41588048ecf61de SHA512 c2a8a126f92ba6f17a726aebf4ff79ef8371536d1680e82fe233b184ca3f22c0ad2fc9bf348baf7fc3cb45c15affd66e99fe22d6d8bf88075f0798f9952c1fd1
+DIST firefox-102.15.1esr-ff.xpi 483134 BLAKE2B 29a690a020c71d13db4dc8a614af2fb9ea9e9a40acc5f337cf1209c31044cef61de2d910af00b785a6ecf7b304ad415e624e005cb0d0e55476a0c09f7c8ba41e SHA512 1a0849d5f4ce2c9fc08ff02337fb13ba61115003399b4207e7ea20de80959d89ff47efa7b445a7eca0435e7911c258207ad4b0ada978c0689491c321ffc834df
+DIST firefox-102.15.1esr-fi.xpi 568233 BLAKE2B 7a1a456a91545dc1ad31b700a0b4c956423388288ac9d1b9f8093a10f9c35c5659b1b1d8a618f76d933bd4fb56edc9dfed0df84fafbdf73ec4245dd23de7cb26 SHA512 ef4ae516d4c55d702100cba1bd8c3e32d69ee7dddf951b2f8f0282fcb460dfe36f72460656af76b469c1f5adb3b507c61e5f86d0bdf9431093ff0e898cb29d20
+DIST firefox-102.15.1esr-fr.xpi 595547 BLAKE2B 0a0c40c7514dee33bf828a4ae41db0fb3d58299da49028b41404831f3a0435ec8dea312c6d82129a25dfcb79fa13d9e2c7f86e3ff894ba7098ee84b80d8ac677 SHA512 1bab3ec1da171911b100fd697e015ae4c107ed74bdf32e614ce21341ee885c0c1a8da821487a821867efaed408b216ed27ceb5c51bfb550dd1f60a8bc3b940ba
+DIST firefox-102.15.1esr-fy-NL.xpi 580228 BLAKE2B 6c3d26729757df370fd45484fc276ad7b89cad6a1590eefdc1eb4bd9bb876bed08d962da39ce17f4274a10e9301505a4440879681100777ee8a442416f9e323f SHA512 c6ba1bfe43f27bbaa4b444e58705c7eaf08a85f93dafbba602222aa68cfc239814d05303097fe3c0c8cd01150f8377037a0f46f539319d76503185b43edf2319
+DIST firefox-102.15.1esr-ga-IE.xpi 480694 BLAKE2B eba262f1f9a270dde29b1f469f324d290030db661e93bc89e4b6d5368e56dae50a89261a3ef88370181cc8c03209d23b2c490cfb21a3db59d17e2da502601ed4 SHA512 31d198927369d46f6cc79c7610b6cac96ccbaf4100cde5d560ca8022f13d19dc19b74ba0a35777b71ad56e8402e242f2d59d5093ad1ddabf8a58af5975bff9b6
+DIST firefox-102.15.1esr-gd.xpi 557861 BLAKE2B 44c7c11f4b3b5f99f454cb4a9794f9533144100e7c3b6a42cd938e2624d0c8df299da3d7d7ed3c304220e2e657fb2f91de882018ba3fae9e07ea78af73d618d1 SHA512 9537467efa72f5deee75d5f115c16b4eed2e4b17519433aef7ad3a6ad4df84e79cfdb8d809ff779048a7be3c42ab7db056cb0340946d9109c0883f6e56997073
+DIST firefox-102.15.1esr-gl.xpi 550719 BLAKE2B fcd48d799a67cae3ca4870c6a472c19c09034e93ec70c0a557f5ad14174156b8ee307594eb32d7164e1b4ed66bcd2f02a037222e6632337839780737e4734c1c SHA512 029200f64aeed335d201ad1ed799ab15117d31d172e4053bcbccca791472b0ec9fdd2096c20b2c16828ec074feb714c294c2289fbc99634d453a2ced5b112635
+DIST firefox-102.15.1esr-gn.xpi 595702 BLAKE2B 1df986fc04ecf2240dcf28a04d9590b4b8d3891b540fc9cf9fb1b591ff75d4fbf07b3bb1dcab36e1a4a9d7436991fa25bcdca090b22096691d3479e23f56c261 SHA512 5cff40942ebd655f740f2be88c4f80e10b24712dce62b0ddc445cd8de13330b976c1fbfb892a48c8042eb4fa6ec02a6ddf13c5cada2d98d5ce44b9aa35bb09a7
+DIST firefox-102.15.1esr-gu-IN.xpi 541901 BLAKE2B daf4d8540631692f8c74710fa931be68f2b961cd42ddf8fc4a7c6691cf013809fd77ed5fae8e32f1ab6f8397d5a987ee47ffd430147da0e7ab99d27521e858bf SHA512 c4839ff02fe0f4b5883ddc13dd247d007e25703eb4e6ddb17eff8a213a7dc0a42d3f1fe8003cfcd5cf7f9ea64d61be5af463fb3d7a43a4fe8ba2920c192b6054
+DIST firefox-102.15.1esr-he.xpi 591524 BLAKE2B 48d6e0a729f0c7e01cc30a8f7f8cf7fe5f1d5e67a0f06e88c9a108a693ca819785e421d9a0c20ecefa558dbaeaf8f780a8edb2dd1613e9cb138f4f0af35af6b3 SHA512 c44a629f51e53acc94c4b6ea25014d29b2c0d3dfe093bd49971703fbb4562035d370ce4eeea9ab7b2f7f512c8aa648fd44d6129f5b82129918da92a975931868
+DIST firefox-102.15.1esr-hi-IN.xpi 570420 BLAKE2B e113c03b4da01d8d3a0c55e54a1c633265451caf33d32d6ee2db973f16d111cc305a835053ccac8478cf1d074e50ff2c3d7c5854475445c20eadc1661cec2825 SHA512 8ceb2ae78bc1c539d9df14b0234e9e6b1a35d33884fd1bcfa2fc39f8007a0b56ac86b158d5ea839c50899d3226b486f0d4b1ba164506f77e4aa2d00b33f42682
+DIST firefox-102.15.1esr-hr.xpi 555263 BLAKE2B 226cf53cd9c32c4c2c1896bcb80fcab62032ecc30992ee52804eaf4f4b45e828170f8c32106c20fa76fc200716cd98f03f5d72a2792b4291075927aba862921d SHA512 c18575c229efcbb94ea91af91e5ae6cd5f67681002e9d484b34ef0e8fe1bfd5f526f986ec983be0f9ae13ae88edfe515fd83626c397d0f3c4aea402d2322d02f
+DIST firefox-102.15.1esr-hsb.xpi 599180 BLAKE2B 99d9dde536a85200f463fb70d69dd133521f5857c9ace959790c39f5a1de3de2634b125f1afa76a6600466168640bc3aa7f8abaf66f4b23a2edbe20e2f763058 SHA512 bdc29ec551f2d15c412ede942d80894bb61909b6fff3e7f3f991bb024ef1ab1d9633e971bbeb26a4ab8c5fa355171589c71204c51c66d6f9a2c30b1c7a8070a7
+DIST firefox-102.15.1esr-hu.xpi 605252 BLAKE2B 94220f487ee21e1ede94c3d337f7a5397dbed7fad2d8f9541437d981762913a37f3dbdd60ca8bb28d93ef3491eaf43acad1fa0649516a31132b5ff76c3d9e8ab SHA512 610afd533f3a52ca713cb2fc8aeb76cb8790deed4a21fc8cbb382cd2cc5fd5ac76e6e69debc9161ac012cd255ebab62370dba8957114878de1c500039952fd7e
+DIST firefox-102.15.1esr-hy-AM.xpi 607091 BLAKE2B 511927b5570789114e6e3cba3757e2a32760b63facfcbde05dbd53c29a5300af285cfa32e28eb4a5f5049eabfabbaa07d67239c4ea594aba64c00c81a6b7b488 SHA512 d559cf9e0edec6c8da87e89da3db5929864bc73aeb278d7b15217c5e4db8223e912fad799c59c505c31216d10eadeedae361cbde0152484dc98c8b61fc7f1ca3
+DIST firefox-102.15.1esr-ia.xpi 567883 BLAKE2B 2e40707b9ca7e873822ed363650cb484facfea18b481d83000bef532e17b51e68b297625b162ff8a427dedc1aef90a3ab174b947468cbbd5ce039c2431119fcc SHA512 690093b74972e1e9da152315da6dc52a9a5502b47df862cfd720e5eaeaf575f813e781f0b9b861b363b3297f23698d9d422033ebc084d408fd0de5c1daea87c2
+DIST firefox-102.15.1esr-id.xpi 564793 BLAKE2B e23dba334b645d1564f96126313c185e8d8ebf2e6fca87847519c59756cde09acbeed310b2777d2c3fab7f420e93b4e51717e7441a3192905b310dec4130559d SHA512 2e023f1abfeced68447ed8aa5cb79be92850a96081fb2abe0ffc04be1b25dda4488e8674652d919e11c5706713510705a9b5883dd694e63ad3f6c03e5e22d5a0
+DIST firefox-102.15.1esr-is.xpi 575727 BLAKE2B 342dad0d2f64bb494e98e7207bbb9dedc908f0a896df3f6713e303532a63b8b9e148e7a0255da5a751b9c34ed57671cf24df76e9c9414d0047fad4a7efcb6928 SHA512 31a78de7f53cd139383472ba1d55ef5df42bb1e30404cabf5f5a83d1ac3c45e99026e13c2ab25132ea8b7e8e23180d91ef56307dbeb7de7f1829b99e2b30c517
+DIST firefox-102.15.1esr-it.xpi 505288 BLAKE2B 5f678200af119a626ad08d2fa60d5b836dd556096fc3a387617484d8334714a282f561c0f1c30f6f86dcd554e0c8e8a6fad4bd8e33b9fcc853dfea94cc9ceb85 SHA512 fa0e06c8bfc0c03cb25bc48b3c2f31df36bb262e0074ec99b8fa559366e229d3d5b5765edebd9947b27194291b1e07b529c0c9d0cb32a62b53b5843874ebe0fb
+DIST firefox-102.15.1esr-ja.xpi 631482 BLAKE2B 8fa54af1ad8dc7c1857be59d30c162f3cf70dcfffe3f79288d2b98648eb9aad58cbe1e2cc255d6d3cf6b77d423fc8335eb7567333c21085a02112a674fce8900 SHA512 e251d18887d389aed8e95f825392915e1217d3dac779b0ba6163351818ac069111d94799a7fe678ab52e2f2a0e5ed3edab0cba889a5066191eae3985e8f433f0
+DIST firefox-102.15.1esr-ka.xpi 636000 BLAKE2B 74e11f93cc908eb7831159d4cea88240a6b34da23b00d1363cd6351bb5096a5c148f69b2638337075b3a909f8f987ab081937bd5bdfed28e46f5e48073923b49 SHA512 032b8a31ab79ee960979cea88f9ef888882bf7ec7bbcd10210483339d1253e4285fb3df3c14454f9605400b579cfafdcc4037ef9c830da29806478f8e48874c1
+DIST firefox-102.15.1esr-kab.xpi 583636 BLAKE2B 09478caa1ba5962fda253506ffdca8d61cb8a1ebecf47c9c30b63656bbd253088f4e9b9fda78ef53024635e6bffd42baa54aafcb5316ba77971cb7240cd6f685 SHA512 4c98296d7f3c183fc2116611ed5133fabcd2162e6f962e7c4d5031f19e6ce54a260650c02171a2ead7a12d0b69cf1d038524752d460e0fc64a0d22c9a6b1abe3
+DIST firefox-102.15.1esr-kk.xpi 658881 BLAKE2B 1793e24f7679f737f73d156fcd59aac07aa8eb44aeba042e22b8ec70980ff6ca61b7f84cc1ebdad3204e003301327415585c06f9874a964e13582cc9f8d2ea37 SHA512 1ec83feff3c6700740b99000ec65ced897335d044be3a96939e52f1627924a6e9bec398ec7c39d6d11d41acd89deb8526dc83990b06b1cc7742d1dfa8589463e
+DIST firefox-102.15.1esr-km.xpi 543901 BLAKE2B f11681f1e13d18f6c675958d3808563862efe7c38665d63e0e7ec94eaaf7e1877b09cb6403be2441abdb8f05c9a95261df7ade331860085edbd02b1f3a7b5bd0 SHA512 1a26a7606452d633a9119e562b8e2c2759d9767a33f00bb2cc768a6ae79319f4f455fc2812b34dc1a6624d2e9ee89bf8b8c383e0acfb1fedd80a285302768f26
+DIST firefox-102.15.1esr-kn.xpi 508590 BLAKE2B 9a4f0f51c8606d038d2f5ad608f3258b71be91cd5729969c22feab13fc53f537f2a63da4c34a79a24b60648a0d6be84c72c70f09b31dc92d78240f614304b9c3 SHA512 0a0c016a5ed25327c58e060ed8c921641df69c0d9616b0ca786b57c8dffdba5dde7c98b8accda947a92cb7b483c2622d5aebd207989074a2483ea3bdae856971
+DIST firefox-102.15.1esr-ko.xpi 617299 BLAKE2B 133eb148fd99da795d4b5e16c9be47fa5988dd09c2788869a6d9a2d0696619bb4d46042b9b180702fe9e0fecaff2447204ffa5654f2d0e7878f51e1f231ba9d1 SHA512 67514e81eac7fdf21e5f994d72a378bd3006d8bc199869f6c13cdd532e9a6171a43bccf21389f6b3d0c231fa6be19c63e45b796ee67c2084096dd6812434c458
+DIST firefox-102.15.1esr-lij.xpi 480141 BLAKE2B 05e6bc63cc4d22e0990e8f8d5545ccb4ac836a3283d245fc868caf37f32ce4b4ec6eb41f2b673e119e4014f2f09b1c6564c09955fa1b31fe6bbc95e1ef191e23 SHA512 7a09d6a8e9d38a0fd6d487200943fcab3b0a50b90e601aaeeec2cadc761b158a7b72e087def23a003cb236953f6a5ee4aaf8adb0736039eda80b5c5e0e0a9d6e
+DIST firefox-102.15.1esr-lt.xpi 574776 BLAKE2B 08855566765a0c91cc5a28caf7803bddf3803bc62b5290b351104cff9ff0f5d6968e6061d0fe299982961708a5c61ab7290d95a01899a5daf3e7a591d086c187 SHA512 31e9948c72b33d5acd731bc1131a7146d53037a55c86a6a74589c322c999aa4cbc27e5b382074a9362174bb949f77a7157210789c2bb64baf63f301e2f4618d7
+DIST firefox-102.15.1esr-lv.xpi 479295 BLAKE2B 733ab1e2a23fa16e9dac473c0607e0b382ecbcf88c657abfbf05e11e54befff41b6c3e94f486eeeb5a20d57a396fa1735a618d91da085702f0ffbf5695e0a4be SHA512 27cc798c690bbf50d94e681acce25ce1648d05099b7a40bb2169bb655cb1d7bfb72c2e86fdafff5adc86c6db962371cd17f33e501fd601b479403b5ae35457d8
+DIST firefox-102.15.1esr-mk.xpi 497531 BLAKE2B 072986622a0f4d9ff6424f329f16026b7226698964ac81bb8b16a057635089e66b37abd9a6d51f3248637635bfe1ffe52d9da3be9de76720b540a73db8b3df8d SHA512 94d87492d58ff9109d81852961cac5cf7202edec8f87d35667682f1313126096c1b0098c1a3fa115315cc33d2b012532edcfdcc70c5c7282dbc0f9c13f45965c
+DIST firefox-102.15.1esr-mr.xpi 543737 BLAKE2B f25df6450724ce3c455479afd2803d1557060854dceb2616473b9d94d0c5c5482060a56ee6e0608c1cc65dfd838970dbc5eea76fbfb340a744aca99b7b41261e SHA512 2c8af0e73988c7826c2f84df9f17ad7df6dac7c9b54c182f36956258f748dff7b892287da40ff60a14d312f8cfd011d6068c9e33af4ec327a8271f95c3681d4b
+DIST firefox-102.15.1esr-ms.xpi 459036 BLAKE2B 1a038b1861b4a06098482dc672ee241045267b1d4a0ceb8a45c4fa87f754078ec0c666284e08c3dd44c22a1a93666a7eb79998a33b0174b6ecec7d9c08601c70 SHA512 9ca9deb4ae3423534bd3c4b46c920dca0055dd7cebd74006f39509c342ec1dfdf0e118e7af443a9f04c2e3796807506c717b844d28b6ecb5824d1969597a4265
+DIST firefox-102.15.1esr-my.xpi 529940 BLAKE2B e20d56005f7652e3145a7a31d939ff832d38fb0d7e1fa09f1d89d042ec98c20aa58a43b03cca02d05ab0ceaeb61e0b3ab14fae4045a3656d44d1bbe3437dd14f SHA512 e7e306f4339c2934ce41e2bcc0a914ab07ca632ff21859269b2eb48a59b0b4b393134d5b8d917a0b616a051fe973ec05966a464fe013079b92dc9d8d35edb5f8
+DIST firefox-102.15.1esr-nb-NO.xpi 565285 BLAKE2B da93a00a2144bec90ef2685c1f8c56dec5417435c278c2d651c0905728a30d437b2fe056c18d89b1c95d9f8f13e0bbd24966339a3eb9a27c657879cfc85dfdce SHA512 e44c349c4d6508551fc1b96f0ab1805dc4aa15b76fd0333d061dc1e988baa3350083363a303d412e6c0fdf24a7d0b33f4e99d0abf6970e689153b73720ea3674
+DIST firefox-102.15.1esr-ne-NP.xpi 498089 BLAKE2B 6d5402d57d80b20797f31b74a570127f6d90bec5c17b874682162dbe54d13bdbb261ddae8a27e98251aaaaeb840259d2cd199ad14c5872465b8e84a9a1bdc351 SHA512 71d149a42af5d79df41a7fa53214f9cbfce9f034f2101a0067421c0b5fdbb2e5f5bb3f203be90d60ee485071adbad763b19b5ea2f183ff4486cf9afae6cc9f0d
+DIST firefox-102.15.1esr-nl.xpi 573460 BLAKE2B baa8bf090ec1419764b2a9b981786e6afd8d20319313a62e617de4883d3831199afdc109a75a76224e8b9becccd4e295c71a555426aff072881d95da6221d616 SHA512 9cefae0b47d4f32760ef92387ad665fa764e393fe4c3f4bce3d24b45a96b9242fe10dff56dffac37503b6c857c063e8edb6da009b5a36cf9a1a41de5bfae39ee
+DIST firefox-102.15.1esr-nn-NO.xpi 566165 BLAKE2B b919079133f6aca9e644367f77024b81ca5bff7a2d923fb26310595dddf36caae924a46233b927fd9a2bdfb96db377d787f9f23c9e5b21a14da94bddbca2543c SHA512 2e262c49191ed6f6059aa45fc20c9dd724fb59232e812a3451267188461c3529b49891a45f798a105918cca470135eb9f0c648bbaa19ebbd54829fbbaa61d0c8
+DIST firefox-102.15.1esr-oc.xpi 591143 BLAKE2B 2a6572a949bde2145e13138fe3a05e2cff685af27cd9d8c1f25521b6fc34ce79231ea66c399aecaedb508e1eac604d34676f09545086d26ca6a0a8d6e7e54f0a SHA512 7dc3f2c180052e44e00c74892cd00345829ec91cd2d3fa20575c9067bfb1a18cfa64de966f3cc9f9200a1755dbf1bb618f7b750a5d7574c1eefedd8149a9e58e
+DIST firefox-102.15.1esr-pa-IN.xpi 648631 BLAKE2B 8e192dce259c3b1f1ed58d09c820fe82e7c1ae14fb23a6d87dd9473fff41f284df8ec730cf2807fb57aa3f786a2dc3dc0d8ab0a744f25bff3bab72cb9ef3cdf5 SHA512 1eade58a77aed3f24b2cdf043bcf56ca66bd9de9a5f915401008a8022bb27369093737aba260cf8532e248801e89867001fe26e113f4ce5a76f951b460189749
+DIST firefox-102.15.1esr-pl.xpi 597077 BLAKE2B 13a977f17904fe3c9f8736bea0db2685ba070200a872bfe19b8cfb25fd9c58e12831a8f21eb5a7ca0c087d007e1836916fabee83b3dd8ab2bd06723a9b4b3eea SHA512 46e113cdb313c0a7fdfb4990e6a09405349b151923d89e942b1744a9e43b3ca479fd481b12d3c4780449779f1873b27629b606a781595dd296b7fa96aedee098
+DIST firefox-102.15.1esr-pt-BR.xpi 579012 BLAKE2B 30213bbf9a4a9121b6ea7f4e5f94c51d4e9bf778b19d5c252fa35bdb13ed30d8f39d40f260d7935398660cf29ef086c94937aa4accc687f00b500fca3461ab15 SHA512 adf26f064fe03e270614a43037dab4138b9b8e87b25b2d211c5c9dd03658807fe66268918153e849cd749b6c391ea8d3f487fab14c83cdd13189736a1896e7ca
+DIST firefox-102.15.1esr-pt-PT.xpi 582847 BLAKE2B 6b352e003655a895848c1689bc64e411042f14cbd9dc2851de5f08149767bd38709288c12cc7a88ce348c69973f9c8e0c970a6ece93a7c30c64ecb78b9a104b0 SHA512 004e4561797921b961350a91ebf9cba48a15de8f689b0dde7a9da92322af60bcca4b8c9ffd13611460842ae7d87f2b11e8052a6a513e87f4eef5200d3f907bac
+DIST firefox-102.15.1esr-rm.xpi 571908 BLAKE2B 39bdf93d4b939502ae02be379ee3fae2a3d616c0bf01ac9ac306e587ca147d485cda66da6d81a3d4266057d4bc92759869b46f4517184b847559c2f16705c0ab SHA512 665f037ed9813b50b5cfeedccfbbf11adbd02343e17fae9a8cedbf72f327c027499be0fdb9a940cfa6717e6de52d4121b3fefffca569564786c68b93441347e8
+DIST firefox-102.15.1esr-ro.xpi 541920 BLAKE2B 7972eac7f9d9de29e98f19d51e17b4ec884b822b8449aa2967b790dca612c0f6f43b9d3bd1a4c1af212a3a6a0909f0db974c78103a4795182f610c4459135e1b SHA512 efb1248b4125525fc3eceb6218c804c4b2e1ca7e86aa4223b3002312d567441e96f23cbb418c6bb0b3895267a7c630aa83a2a091b2012021aa2b63902eaf5c4d
+DIST firefox-102.15.1esr-ru.xpi 671118 BLAKE2B e2d896a2ffb5808cf7230674b35c438fe0f533f9020ea7688cab9cf6bfd852fe90dbc9b5f22164df6511e9282fb0b393b9fafc26de4a586410037bdaac53a779 SHA512 841f1c5ac528d3a8e4cf9aeb3ec8e4b612688ee9aae9d9c52c5f2b93724fcc26b5da65d25ff175e8d4d62220bbdf5e3ffe1026c636d46fc61611f595b314e985
+DIST firefox-102.15.1esr-sco.xpi 513233 BLAKE2B 842dc7b127c4d319fe8c67a1241ca6eb67601a2c2cef20ccac9b5fb04736968fdf4a427b3e10465a020ffc005dfc981af1c8ac22a4268e9efed9c914708b2f40 SHA512 f8eef112695cc8ef936e6097b4952e9285fc6a90ab92f9a70a4b8c8e460e59e988e92a1c7c43d23eee3c86da40ca9d91bfce46247f987ad8e4ea4b6e7be035c8
+DIST firefox-102.15.1esr-si.xpi 585622 BLAKE2B 81061a0831f08f281b88d15f66a5e6ab8cada03a08376feb1a0e7160551f3189a7e224fdf36c3f326249087cda8f534305df84759abc54ba3b5d439c79b61024 SHA512 03b3a64f6ec6f7cdf8e6d73165338076591928e505c896bc62a33558e72fb51b4d7bb0facfcce635f4d4854a4377e19fca7d291accf452e3db685a3679e3dfb7
+DIST firefox-102.15.1esr-sk.xpi 606124 BLAKE2B 7d9744ce41c1413be769b8b15980a6ede0346ab90b0adcb4bee3f5ec103d7a5e5f4b4225d61285aa380465634e01409419c33388824b7eeefeaab331b5e5ba52 SHA512 4f8652029aa6b0bcf75b2f29fca66db6c6ebe145398a6fe79b004844174d25a8c139cae084f6b469a1992692fa3db13cb516c438d4b67caa942f5a3381398497
+DIST firefox-102.15.1esr-sl.xpi 577351 BLAKE2B 6f32390e4c8b03d18ae885e97fe27194711afa4e15e09ecbf7e720e5d3d1906537195c05e317b3daa888b08f6ec6e2fe49d1f6bccba3bf913c00d961a1e2751e SHA512 75a16467b1f2f9d5a5a38f0831164eaa3856496078e7de8510deaf23a9ff3bbd9f65677e676b0cdb18e928cb069b18452ce4c5a836d8e6fd903d61eec07434c3
+DIST firefox-102.15.1esr-son.xpi 433056 BLAKE2B 216c17fd74787889f23368faa98577087434d7f0f0ba0540fff36226b192d09a6809ae2cd2cf28ebebdc2785ad3f009047815d25abd7e427456a3bdccd2b7a39 SHA512 4f21e87d7e10970ef1d87c4f696f811c11d8526d46968def102692458294b4ea71c25b929ecf94fa9ee3392c98305d6f23c9a94f82687fe0bd2da600db0770cb
+DIST firefox-102.15.1esr-sq.xpi 593410 BLAKE2B 6ac5c8ecd34814a658d1a9921b6090d8ccf64ef5ade08d9cf634cf3e7909bd284fff5aa3f6bbd8e3c1248b9127d02bc63a6fe5ae2eafc87daa9ef6b72967e477 SHA512 4d0fae835ec751dd16ca1932e9e98f042b8714da5040e0b754058be9ad6fa0cf7457957f7694b9c6932dbcbfdc83f4c2e2184415196f7ffbe07b6ac5de5ccafc
+DIST firefox-102.15.1esr-sr.xpi 635153 BLAKE2B 7ed25dc4a47fbfde96f6de842e261bc0c2cf54c8b8dca2d8530c84f3411db4267cc03b598715fe107311e5f5a56950063c31124f1a2bf8d4ec50f5a522f6ee21 SHA512 78c24b50b1f37387f2814c635ccb1ca8dc0031f01aa43f2e061fd8f1a3502cc176eb9660630ae64fbb5a19293332b77edf75aa6370f6da5a2a6c750d29b0f3d1
+DIST firefox-102.15.1esr-sv-SE.xpi 576063 BLAKE2B 82b63d8c70957ef1ee64e70b05d83f3824652c78b80460de03276a1cdfc553832b71686e0f7935f0b5522721f2fbbfe64859e8f40773fbcc956a31b465f92840 SHA512 1afc04015971a830ba86e95bc455b63b9cacb1ebca63f5506e9ab6a51fa1abaa64182cb924ec808fb43af46e2b271b9f3b65489eafdba884de8d2dc9b9929a61
+DIST firefox-102.15.1esr-szl.xpi 527105 BLAKE2B b5c2e9ee8d986be1702d720b0825dc33cc380be49167520604991541ad1237bdf5d5e50ce404539448fe407bb7faca3972c599849f5bb004d82a73ebe293326a SHA512 3402b6b66114d6fb3ec85ab1d5d9b5f710548852b5dd80a126d5a09ac594311ebf1d2d586ff2472133398e0e2244ede93b552d1c6a614894f8df807df084a3ca
+DIST firefox-102.15.1esr-ta.xpi 522076 BLAKE2B de4ff9997f34141a3d9a31e246ddfca7690bc285400048f8b0b1709cf0bb00b363c629ea6d12f775411e4d6374d131413ec4722dfdb110e49c1032f23fbddae3 SHA512 9e189a00e15e448a7eb8ced6ac620e28f97a05c3c30da498db35a06f7f8df8e4b5dda777ef18428ed33a6b020a568e1cef8aa8c2980cc2b8da3ace3105433c86
+DIST firefox-102.15.1esr-te.xpi 568447 BLAKE2B ffb03f0157dd4ee9111a8c40b90660cbc6ace683f2f9ceae959d18fa5cb3e565e6a69e9ebd2550b9fdcd142f88f593a1b66e1320d9056e5a8702a012f690442a SHA512 e3d27bed8b6ff388020787d5e4fdbfb46ae20581524ac50589b3d4476d5f5964545bcdb45454c6605ba26a907f069f4e71fc45ebfd7647f1fcac7d62f5d3a067
+DIST firefox-102.15.1esr-th.xpi 649497 BLAKE2B 41a4cde2103132b72932f40f8a777b44a59a36dff7fee6eae31319f5161c5129e3fde959852959a57da9d29499b681dde2d9a7c496cc87bc8ff75677d4fe53a6 SHA512 00d8f5751ade4ce5d49ec2d1b1d51e3b15d725c0989622c3620e10671305982d5f28ee120003c498686b9b523c441dfd31a9b2d4ef844914f1027caaf15e0ca9
+DIST firefox-102.15.1esr-tl.xpi 532373 BLAKE2B 562c4ea206eaa9f67e014583226b5083c52bd612827a4b49d010d8fdef96c8343149da00a4e5794989a1694512c0d0d83d98682c2cf11e7a889bb953e6790ad8 SHA512 80f30969009e5a70f12f7bd74ac19ebdeca55dca2c64a12f7e0cefbbc1ae868ba5d1755066c0b2f36482499492a39c1b6bc8757db79acf2bb9c11edcfd532306
+DIST firefox-102.15.1esr-tr.xpi 590515 BLAKE2B 83f2bf6f556f568d1a40784d9ff6fa49d072a0c6cd20f627c1a51a8f4b5fc6f4476019840b3f55892bb4dc99a687226fbd890620abd9295a4b7841d58027fc3c SHA512 ea5484fe8410eef09c97d608a5eb55770efae75e80becf033d81486b849db5c5bb4c6bef52b26d25d83d7e5834208c981d90839f4f519ca82d356476384f7bc8
+DIST firefox-102.15.1esr-trs.xpi 497377 BLAKE2B 4d6c631998641f8f5c4e7fe2ab3183afd20017cee167576fd14cd107c9c978f2067913a7a1ad8c47dc86c18076f5165a2945ebf119c1e72f759fc55b290c70d6 SHA512 ef0e4dc86bd62c9ae921b3fc9934b648371dd869a8cc52281037d2df27bdc4111493797a1267d453b7fd3db50f49c92602859447b05757d83252cba86b7536df
+DIST firefox-102.15.1esr-uk.xpi 664329 BLAKE2B b794dc475efcef1bdb0d8ddeccfefe7756854bc47f7de16cf8c57ba1d06079e466551f115696fcf558a82463a2f96fd0b14fa7a5e19976212d32fd213d4ceb62 SHA512 9a3c4263f2d57ab920282c3302e56c2bac231701a7c99f7a1228f6340291648f4f4991af1698ffa3ec766746a4250b2b2ac281172356b619a2d4a031baaddb76
+DIST firefox-102.15.1esr-ur.xpi 569928 BLAKE2B d2cd5d944c4259197033e9dae43dc08ce34f8c2814d647c22e12f05958f00d912ddb9ec04d411d782532315d4ee76d8238bd9453c6f0bb0c39536cf0607da1e0 SHA512 562ff9e93e4a185feaf1495531c0db298287149ab20fbe8d4cd83a3e8eecdad55e2375c1375938cc8397b8b0f97f050a1b962e4cb39619a27a53bf987a9ae2f3
+DIST firefox-102.15.1esr-uz.xpi 488874 BLAKE2B a8b26ec15d639792cd4551f386be9ae4b98f62e938ab27c8a507afa05809a5b458bfe3098a8be9f8bb239a41030647c4e93c30e4833594765c776569ecf903b4 SHA512 d2b042d631019b0891e4649480aec99758770e31c83a297b1556023af43454f3975b2ec9d9335c57b0be3c94ab53a3dadda3292d1bc39aa1e8bec40d3bdf9c10
+DIST firefox-102.15.1esr-vi.xpi 611420 BLAKE2B e641e03d69b921fc7210f52d71d35921cd01fc47e0c338ed53a38322032b29f0e20592a4b4b7d5fcddc952cca93cfbc3fb2307c604590e965375ef2f8280496c SHA512 dca11400fd9e9cfbb4283df69e5000ac0504594238c50d5f719426fc2dc74193a058d82f385f7d7b55c2fde61325d97ac713c94ba96f5a6880058971c4dd3e85
+DIST firefox-102.15.1esr-xh.xpi 427928 BLAKE2B 335e256f5f772fb1fdf6b92c2f53f730d6193d9e092c268ea15bdb18b5fecf4317c2430614326f41432f384f937d8a9ae2af43e566bdc1d9f12a94533cab0b92 SHA512 993860d2a80c41963615533f3da33cd1ea11d6a2fe1512a06d8f637cdfff36a50ae088bb6edb535b08e6e4e4fbccfb71c4f345fc97d91c0c2638ee1e900cf32e
+DIST firefox-102.15.1esr-zh-CN.xpi 613312 BLAKE2B 5dec5d8117dc31b4d2ad5fd030d6233c7b3e47d9e279670c7ec32ae7f39f323bd4ac739bf8e5822a208af735e800d40db21be0f03dac2c7303c296183b5fdefb SHA512 cf6002bb131db9248908559967bd64da0f084546ae6b898ccf586910df089be5f730866dc672f3b13d988f8a3b7e011ab637f9f4a38ebe0052d7f87775ed83a2
+DIST firefox-102.15.1esr-zh-TW.xpi 614572 BLAKE2B daed53e754bdab4f6a02f45bffa21341803b23c8c069d2c5f17e29958a7630e944e4dbd60df4a05e4de0d94bfb19ee6fbf7465522134c8e084608cc0e52f2af0 SHA512 935d1012cc02cf80dbe26bfbdea714c885646719452cc687b06936a60998ddfb7b03411e7b9cd18148fc7f80fa1f9b7fc00d6c575e6dfc6f344baa49e0facc02
+DIST firefox-102.15.1esr.source.tar.xz 483198220 BLAKE2B 03506d41c5171d0fe6d4b00c7b0aaa019bc090dce74bc119e42e4d0ea049b4c72428d9388549d6b63d69262c3c8aa61cbadb6e4f6bb702f3b7c9e51cff5232a4 SHA512 bdb66b4fb5622af3e60580a3bcd464d98ef13cb38d6ac6c9e5fc046e567a003cf080125d7748950c91c442fde5e8024c50c4180d2f551aa3528160a3c05ae187
DIST firefox-102esr-patches-13.tar.xz 22212 BLAKE2B 02e9edd071a99abbac02faa11ffce061d5d12d8baa9ce54b51d6bfdbf8160022a1565902d65ca30fe51b5670e509fa921b11a460989933cbb797fcd59d635125 SHA512 8b8b0f3789978447a1293fd9acb5c2db3d7e9f724357a0d762b54f7e34d28f11655997ffeafccfe8001a01dd595848d257f90cb983462c405d434cc794216520
DIST firefox-115.2.0esr-ach.xpi 441069 BLAKE2B fe91a5aa23f0bdd9cb171707175f04ec166d5046accf690ba38e1e9f3a33b38e7b067d6017951fa1bc6e1ade37db140b9d7e9ead2e8c07bb138e2c3c8471d908 SHA512 9a0c363087447b9fd88d1574e44b4343faa1fb171555663556ec6befd07ee654a6e713f8f6c0f8504bfef719d1d98968d26718fe07528e7a4627e97286457132
DIST firefox-115.2.0esr-af.xpi 402484 BLAKE2B 11c14ae381f21ab8b4b6a02beaebcda9ff7eb2fb4bb9de43dab0cb91a143ff9f6b7f196e60cde42412aa510fc61dcc3afc709dcbaf0b463a09b5dc83ec3795a2 SHA512 679b81820d76f722f9df18fe28fe51d88dcbdd9223ac28c17978093877a6205dbfce6428d153bb2706e6871851bb6c840482a2c32795cf07de8c960512099371
@@ -206,6 +304,106 @@ DIST firefox-115.2.0esr-xh.xpi 402421 BLAKE2B 5d45c37abea39263c2065580214e4a62b1
DIST firefox-115.2.0esr-zh-CN.xpi 595490 BLAKE2B 25c4d573da19934dae62f8a8535222b9f8ba202ce9ae288c5b43cea5fcd3b4f90df4609661fc2b3593c898690fe0f8e92864c2e0c4a9bea6b8cd20b6aeea9645 SHA512 94e97e86fc3c609530d058f022aaa22188ad0af0320a75dd1bd43639c5a289faba50cefa68f666264da569fc9c5ccba77481e40ec55c2495cd8f4b9cf2768a01
DIST firefox-115.2.0esr-zh-TW.xpi 597814 BLAKE2B 26953b3979ece7e5fe69543453b327799062798b474da14fb07099bc3801aa0eb3aefc1f694ab27f2b4dcab539d2c71d6ae5892ebb8cee24fc79d1d3255d8f8f SHA512 92a64faf2552f7fd381b62348525209957d7cd8121c70066391d7a5a23c2f84d44c2ae26db36c8f4d0d4741083fa9bab746a893be5954fb3f6329ec2005b1094
DIST firefox-115.2.0esr.source.tar.xz 514055028 BLAKE2B 3ed4a46c2179b0595ac5ee1619f965f2c84e5b4f900341a2b93fe5dda7c81acbdc878763c0432564dfd84d99776cc8defdbba4cb9a317be8c06b3b02f6ec867c SHA512 df3b4efd9607e8eb4932717760c865eb31ac7a96246cb4385190c33316c9595e0793a1f3c45ebb9674a9ba4fce98d83f71b063bef09ef307d92d1cd78d30d812
+DIST firefox-115.2.1esr-ach.xpi 441056 BLAKE2B 52f1a02dd264bfe6c18dcb1282bdffdefd3216f294b97a59d95a5f5039c5f887907fac1921b4113810e665bc296251471958f8372c0e28f90c26f63eda0551c8 SHA512 a10ff0e945528f6723e830a608f45592e27eec5a37b8025a215e03b69016a280e5c5266919fea2a20812cf932f86d29a9716db2eedf755d7e9c41b801929a7fb
+DIST firefox-115.2.1esr-af.xpi 402477 BLAKE2B 90945bb7b12ea5055c8fecca9824912ce87cb5c2986493832a8bb235397c0ba7573d4fdb5f796d976f05d897d915bafd800b38bda411255ac773d36bf82138e4 SHA512 b78836dab6d56a636f2f5beed8b485b5007e1c4147f949dd6745449580c052ef359ff0a52b2851e6ae41536bd19b55e07374b1e8a58af93b305e617fef09f69c
+DIST firefox-115.2.1esr-an.xpi 482933 BLAKE2B e97de0315e009201a08ee89f404ddde02db7d5c2d698489d1362eec9bfe14642fbcee1a5c4da25e43821dc731bd163f46cbd1cd60ab7d68b3af85ef95d33b074 SHA512 45bf064dda5ce66eddab97553003ddcb8c89a522e858fc931c9221eb97069ec6c8908fd361fe12377a009fecb45b07b51fcedfb16ff6516b108abaa4b6309548
+DIST firefox-115.2.1esr-ar.xpi 549538 BLAKE2B acf40705dcb2a90f8a6fd5c10124ca62a8f063e09f9977687a630f3f2e76bfa575567f3ed9c90d1d37c56b6425087aed69fd92b4ff3a17056a1786e9f58faa59 SHA512 eb2964cb427e9f4640a2f13e87b538c2f5e6c02641e1570b35913eb54ab782bb3ad84fac60504e6a57e1b02df2b74add6af192ddebc1fa33b8803e8ab6dcbd44
+DIST firefox-115.2.1esr-ast.xpi 477369 BLAKE2B c3b3330f4c2cfff81e68d0be908e5f01d8d1c737f050d7505792abc283602acf5c37de9d355246ea2ef850bfffed8d40f8c1d3c589eb23a2bbcab637d77f268c SHA512 48b267caac5d93e63fb62fe5f22ac42bbed5c8d8164eb301a2ebb86010ddfd906072a25ddb9c27ce2188cdb0504e2754571aec15919e4c245eebe1cd6c551baa
+DIST firefox-115.2.1esr-az.xpi 470733 BLAKE2B fb46bef71e79151a9a8c0aff3ed59b6695bcf2b325ad2cb7e7d073f871ca2233e2f3ced937c994f6014194918dc7efea994a914c9ea5bc239d460acce71e410e SHA512 1e01cd84a2495294b9f708aab1ce31dafd7dc3db5a8176e4f7abc21af09337fcdfe56e898e6547b7df142899f202f057109e8035c3b923ddcfa0be7c69d243e5
+DIST firefox-115.2.1esr-be.xpi 647092 BLAKE2B 749c91dabbf54383bbca581b2ebb5e8cb903bc12262635157f8b85d777c3e6034ce61d25b0ceccc435433d0c432d2ded7e6c7622ba34d0309b3cfb21fa24d24c SHA512 b298bcb885179fdeee76c8d6d604cfc5bb4fd97614a0c060b8a8774502ac6ef6ea66a305ebb571c3c6a704ccd347886362a07ace8536521544f190cf6550d3ef
+DIST firefox-115.2.1esr-bg.xpi 564189 BLAKE2B 8a390cbd42904c1e7cde0b81fc7e17604f13195f651ee1ff3272512775417acfa88c2453bf81c7bc1936119486863dc1497e03117d34aac3fa150c3bf48dbcf5 SHA512 35e9f81e78af410271e2e840463620d40c3d872399d19412af77e2e2241e2e413bb38f45bdbd82e542d4e7f19179bbd0f3ed9a79e1cdb3737537a2133564dd6e
+DIST firefox-115.2.1esr-bn.xpi 558435 BLAKE2B 9778b5d71d168d129990d47b31b53b9919b6595b3890ecc38cb14c5dd2ea44250d71146425d2bd55e2c5bb2a222639839ca85f8937a0bf3962aad08d52149d87 SHA512 e9e465a0c171a6784727a6f74e50f85b7ca6affce7162a86cf6defe08e3158785467aeb079032ab11b97e996a5a1bd62db570edf5bed7de0da249b80c9ed7e67
+DIST firefox-115.2.1esr-br.xpi 534386 BLAKE2B 40211bf93ee35050ea8f6387930b5cd5a9408a20d4e08443d01b5365515c4b6990d52b4dbcc6ec2c37add2da01cf4b205d19700dfb8f650fbdec24862b7f31fe SHA512 902a839f97737ab10bc8db0317bf9257d675795824ee9e670adbcc71f249c9882d0794e8da93c890f965da99907525f550c1a9896fe8dc941509202473ab7051
+DIST firefox-115.2.1esr-bs.xpi 441261 BLAKE2B bac9455776cc9265375325b5f130b1d1ae73119b3fa570f40e028f6b08f14e0b535432a5f3ba833c735f09bc931b7a7059ddc112b15aaa3d84c8cb059fb69f79 SHA512 21e0074a4f7ea57e2aaae7047733b6d54af739b9099977ca461ce7e3e13bbcc8aa979a49b631cdfe6b42e2507144678e202fba8cc13014ec2c9a36e81db272c1
+DIST firefox-115.2.1esr-ca-valencia.xpi 521952 BLAKE2B c15bbb21885504bad1b463364ca316ba2a808047327772bac42cdc17973bbb7cf9d0eb2e13ad8ce28c29566e09095a00fa8500ca1669ef2b7db71e47fe5daa9f SHA512 de3926f87afc1a54bfe1c2332f91dbd63d4c024fe08ebf0ebc2cf68cec1c33bfa3b7d208831edf254418e770a55598d4a8734e5b632b2e50e1859a73bee96d23
+DIST firefox-115.2.1esr-ca.xpi 545478 BLAKE2B 1afefea60a6ce28a3352bae2cb156cd8ea66f49dddabad38f60b0506e93e8e28fe58c5dbbc61c79af91edb17ea100dabeb84c3bfc41cab71457bb0d9f2aad312 SHA512 468a8e24b52cb4739b6004acbad797a37515edaa53ccfac685475df1aeb00d7add0e427fe14967d262ac57626756fe3d30afcde47cf7feb3d4a26ca541a54430
+DIST firefox-115.2.1esr-cak.xpi 564584 BLAKE2B 5fbf0d1288c4a56f245389b7e1843668dc5db5192ee5b97aa86c3ce3d66e04e8b3922761691a862f4e1f23a03b5dbc63dcd6a72fc7a0750934e591c3e281b51b SHA512 a28869ecd76824ee2777b3b8503d36b32432bf613d4f234ea0ef4425fe436a6283cecc55dfd8ffddb8519de30fd8c574bbf9b4be3e7a0345371da79472f3e277
+DIST firefox-115.2.1esr-cs.xpi 592268 BLAKE2B cf92f89c9d39ff875800ff6827ec9aa34cf30d21a1eae3011fb0d3301de9aa82867d599f107b2e706bbaad35152bea76d3ba9c4334d5c908911d41c5c0e8f283 SHA512 f973e7093cdc9c0fedcf6b35c4b186a177241e80c5ffa65c2f1cf0cf0141e3b8653312d8a125f24397a64f073f0dc554956e805fc2bc9c932d62cd46d3dc7c9f
+DIST firefox-115.2.1esr-cy.xpi 564700 BLAKE2B 3ec19dc166573af60891359e4ef65bbe2ddd1dce656a5180d3154031634b2de27c0a139bed22a8553b080f7b3e7c015f93925dcde95a3916b33ffff042ad911c SHA512 951a8ebaed531577b8cb3924ef28b376a096581c2d3ed8b078c18f9e45f8010838ee9c08a34e46183f317eecb6688fe240de24fa93d908d1357103342457c830
+DIST firefox-115.2.1esr-da.xpi 554011 BLAKE2B f52dcfb16a93cfc92d0c142d6ebcf35e5fdbd0fba78b02f469e40371f16517b8cca52f3ea200e1167f1345f8471cec365cd4e61ad08c2193ce7d0ea55226d101 SHA512 16247ce3f7590a301bccb5f90ab3c15b6c9a4dfc2f151285f0a883224ab78002cf3ca99851cf1cd1e8b526f967716e5a29dc4841a294e99794ff7e759f8cb585
+DIST firefox-115.2.1esr-de.xpi 574630 BLAKE2B 3a6635fbae8df7a6b4327ebb05c5c3d11f9e44cfbdd3a442d02f7865e0608d86aa4947535dbbb19c15c61f220f8a8af0b8a8c3ff13dfa17167504afa5ff119ac SHA512 9265461925925703f5d189adcccb587ed8a3444d39a68680632ab8c903ae4aee7d908e76caab18cbffb24a488edc3200f5ea23b8c021e6d05fa9dc6b1100bc92
+DIST firefox-115.2.1esr-dsb.xpi 589329 BLAKE2B 881f6cb00278d2c3c19eec073eee6bc4b8c65d1dcde72f1b2d2e9fd783fa6c4d6c59b7fcb36884da3476025751967784251cbce49cd4f0b8fdd43d41e213fa90 SHA512 5db2508f45e120d130599840d6481087a7afdb94b9217700c2236c454e0f57124326c21afd5a3805e1c31f1bef1e84ff6de97fe98bb23b86a19ce3dd18715575
+DIST firefox-115.2.1esr-el.xpi 663757 BLAKE2B 3bf80cfff8148145a912d4fa59e88610e55fdc0137e374f145674499be47018270422df605c0d7fa00c40ea75f71a170cf752fe9114fc7db66a0489065856ba6 SHA512 a8231e9f4decb5f10b37d47c8e891a2a1079ad6c3f0868a663a97a5b37ce7bfb1a0e9256f4484e01b0735cb04b6a77604817ed9082adca267938ac2443a32801
+DIST firefox-115.2.1esr-en-CA.xpi 519417 BLAKE2B 629294381714195f9e016bec9b5d23679e3d108d4710724acc2f889ae753553d3dfbb8696cb9d6c7e8e99f00454b4581b8d38956584a5efb1d4d0b222a050640 SHA512 2bf5f9cd58702aa6651937c00cec14ffe15df90e32179cd7b44539f59b76c16940d481013aa4a4723f5b45739dc6432504f6e2b52b630cc5f1e93a69e761a5ee
+DIST firefox-115.2.1esr-en-GB.xpi 531053 BLAKE2B 1b92251dcc947719f860476b8a2235e616fe7850cf15f088dd36bdba6d6daa0fdfecf9fce8609f090aa961f77fec62e8c36bcb53bbd743aff9f136861254d6f4 SHA512 8c6e6ae8e75bf0672fe25e0fed9f61309f1970e13f9b3a871cd2ce168e91b2d51d1d56fc31a52214e75bbe91e859fd376cfaa42ab692a92eade560f359bcec45
+DIST firefox-115.2.1esr-eo.xpi 556379 BLAKE2B 5fc15ac2423b487e2ff44d8e1b9cb7c40d19cf8e4b7d46b328c8da4c841239fadea02afd29d15a0309fac01a2eb5da44e830299f31930a70406d00c37647bbfa SHA512 3e88d96d218eb861b7778818f83f5155229369c62d17c9080bc1ee4cf3bdffe13668d2af63a06dfafea47dd5c2b2e682a0a305292e18517bd51e2cac27f9166e
+DIST firefox-115.2.1esr-es-AR.xpi 568949 BLAKE2B 7f0ca97a8765233d5bf6773f86bd7c1716cd79dad4a90d8c770fbec957994b17e0ef5c49c52fd3f5db3c0f1bfb01736483bd6851e6885a86ea8f197e53922b65 SHA512 203aedaedd8f0a3ba0307622963a3771535b14914f121fd33c57380feda8174060a7505ec0d6e065224061e782f619e63d50f3bb59674b3781380257c1465eb3
+DIST firefox-115.2.1esr-es-CL.xpi 568618 BLAKE2B d5e61fc3b8f63496bb49aeb35749500591f89ddeaa2eb4dc7fd8abb9a5e327bb010d553288d58f46a429e6290f8ebad9715fe4ba95859d8d1d20f2ce45cb1914 SHA512 46afc40ae6b050b5e3b0eff58d019fcbb4ccd1e4d278646f82c6ffbf676fd05157132945d99c5d7b3e3e678eea1af181897520ca224df03cb8ca02f14cca33a6
+DIST firefox-115.2.1esr-es-ES.xpi 562049 BLAKE2B 4db45495a786105009af0c7be625b641239d17262c3a656539d1465f5204d5be5f7ff00e1f002d3c7d7b87dbc499c19ead33ced28086b157d20554bfb819bbe6 SHA512 aca5dce7b3356d9194ba9e0f74c4aaf328579c023dd21b01181ee2cbda45170b9a546a0231870ab96c5a38adfa88efef97fe4cacfef6e8e6ad1c46194324ce16
+DIST firefox-115.2.1esr-es-MX.xpi 565316 BLAKE2B b59f754f8c959a1c27e40a3ea10eb60538271f615dc72b537a9fd53313df602470a8344419e74c36665fed3d4bb84113b543ed89a9a4c438fbb2543885505b05 SHA512 b36398405b02bff14e4129b28cb85d8235e0ad9ccf64347fc8ed40e1cce8c83ac727152f5048df58060b07a9c64006d191c094953e30bfdff054d0fb26b470aa
+DIST firefox-115.2.1esr-et.xpi 516132 BLAKE2B 6bfd405d4f0d15121d0753929a804157a9dd67191f750d27ba666152c1cf001e0742c894c5cb3300cf541dac39764969524b14600594470795ce7cec57c03efd SHA512 492755ebf3c48ef0d273c15a72f3f7a4813226eff967e87bba1677306ab4ba852cf79c69c930d0062c1f545bc5dff42d0bcc4ea407026b3577909fa51070f5e5
+DIST firefox-115.2.1esr-eu.xpi 551622 BLAKE2B 122322a7a5696bb780c6cad5c6ae1526d617c31bfe93959d6a87d35d5a9994da9910fb3c5e9b64d91cf3abbe5f6f66c57d9cb26c7aeab2de60abefa6c81b6087 SHA512 f0496aa64318fb69fc8c20efba7bf47b80f2855cf3ceb3325921756baebe26c6d4d2ef418abb99fd30d29c3987c78f182b5f4ce0d5a3662c6be5b858e9355481
+DIST firefox-115.2.1esr-fa.xpi 564531 BLAKE2B b7a2c91741d1180cd038400739b09bbc65e3eb4c5115ae09551cc3a969bc8c30b3006607b0896b71076e35d894b3a02b941f24e1177a87cba73c1332c0fe5a8f SHA512 bae42946ca0a19be1560cd9a11bddeef5ab1f82b1d3817fb42e683d6e7222f868be1b7c3df4c9f059d49a05ca7fd2e7c0d4e5183d610920f04eda9950cfe5a9b
+DIST firefox-115.2.1esr-ff.xpi 457110 BLAKE2B a19f500db8472a0d05213b3870bf47f6bf7c7f1761c48f420e51d96a7cff05cc95cd72e23ae0c39703d29332017e465c8a15deef2e23a5c1963669252bd104af SHA512 e64870c3521c8d750ca99c565e500f8e517f52abee94cc47950f9ffedc1129def091a3c97b84576d5df5557795bb5ec25552e1989718e4afff722635e3a0fbb9
+DIST firefox-115.2.1esr-fi.xpi 551236 BLAKE2B e0c3e04cdb295ea484f30d6ffec98866e066024a24302e69d1b2b0ed3cc3a1eb80e97e4008172244c454b9e104256640735b28ab2c06a2b5ab78963ba4ac3ef1 SHA512 b9d83f89890bb4c4d5560ac623d95c7bb965334c04754102ef20b924b43cb365d10a3831bca6905553e4033f666578be761df9a9d6f671c0b7f6afec97c72b91
+DIST firefox-115.2.1esr-fr.xpi 580616 BLAKE2B 00a3aa75e2eeaa09b4b3ec35e351a7ad0e2c77a133957294a0525c0213435a37acc22ae1b46bd93a7906b61a20b8c49e860f41f65d258a71047c28c536f212bc SHA512 af010a13680274ede90449c68e5904f1069f9ef986746da08b1e0b4955038bd88f3bb05226cc9799396228b1025b4e5a4d83a250422eb089ddd73491ff255252
+DIST firefox-115.2.1esr-fur.xpi 573075 BLAKE2B 699ba126cba835aaa6c0273ca6a373ab9d4b3553210108cbe676c233cf5d18b8b15f9e19d06318868fef958d63456022e965cf703cbef35ecfb5c324afd74e5c SHA512 d82bfcdefc14d6a35cd6a274e8fd4de49c2347db900cf3ca8e4c9944860b64e5db59b0bab98742531b9199467bfe8ef6cde9de695863d75eae1ffadb7eff6579
+DIST firefox-115.2.1esr-fy-NL.xpi 564942 BLAKE2B 1885cb32ca66e819f0ab4a370a4f0dd9e37cd455da364c1304e4085778a66b85ea7a8ea0a81d8e83d949d1b4536ed3816a6c650b5ba13f4ac01698032b7f8b53 SHA512 ce1d9a84860ad09123ad98653f9dce9139730b17d43acbffa749492818c15b745145da68988ec9c8c29042a35d00cc813233d6224956c9573225d9a8a49b8a92
+DIST firefox-115.2.1esr-ga-IE.xpi 454327 BLAKE2B 8276d3c1f71bdcec654ab829a8a76a786e77a04fd760a5a431aa452c1f1ce7aa44a52acada4d1fe2728efbd7a8803ee92e660cdd4cea6f10ded94bbd6eb9dd8b SHA512 9819e42b4ffe6dd993d941cee97c8cb9f9f6d7c88562b6123753ea2bfe0c199c56d2a48dd4b460d2c791607106dad015b31d1c8ee2d7761c1a6ed4ab19330ca5
+DIST firefox-115.2.1esr-gd.xpi 566970 BLAKE2B 31824fc724731842fe002b7e5891fe5f97595f2ff739c6dae41d15ff79704ceeaaa4a2419535b927b3705ffa3c290d5b0111c39bdca1517be6eafb40ae81c21e SHA512 ee6c8ae08e183830bab4b8dc49edb54bf99d514033ae78ad3a6f52d6666ac22fd9fe0c748c4d33e6482e4802a0da145fdf782e44fb561e3b1231234dc8933717
+DIST firefox-115.2.1esr-gl.xpi 565474 BLAKE2B 7cd6ec185f6d2cf2dce894a18437f1bfa4024c33257de4ccb8ec63ee17c8e71711e292517bc1cdef94fbd075173ef60e83c708fe17caae228332104ac4e1268e SHA512 3a9c8ee880bf38bb2963877b51bcd44c83a335791374dac568aa94bbaa05124123ac5e5827e7777b54d0051ee7b2f3c23c5e7c9fb1fbc1d523a87205ec93a976
+DIST firefox-115.2.1esr-gn.xpi 577576 BLAKE2B c054d9f7c74fa710e8d5186046529cd9c1b8d53dcf6726dcc89f4144d7902cbbcccbd7fd5c8fbe78742e5a76617a4db9f0b5f92f2513d158a5bae02e7ede4331 SHA512 d83ae99e70c296c99915ca53f496a9d134599e2e24bc3d069e25977412d3fb21a4afa45a7cb41312489bab8df7945df8aac20da6c4059ff59db928c84ec1b414
+DIST firefox-115.2.1esr-gu-IN.xpi 506688 BLAKE2B 42164348b24e6665354da84c3dd676a664dc8e8b557b22748e1e1bc54cde9f142b5a0b42b92b0995d5534c25ba99b3abb1da446b01a17b4ec693ac70a09791f4 SHA512 f51340fd7504cc8e7447a10ff8932d672cb2bc9b6a23293ed69ae7266da1eaf00f0d000cc61f957f054869d38990914c1c59506dda27b7503f7547ed533ccdad
+DIST firefox-115.2.1esr-he.xpi 574385 BLAKE2B 6ec88a094965dd4d59c86e7a230090ecefd0cbbd3ce0a7c911207d2edf15d45089b047621f9fc643a5df5797ab926f1114fc0d74b19ee0da0627f8cc84082159 SHA512 0003d93301c7a93c3eecc9ed28a5dd7f1c18546ee0f633ca098fea75dba46393bdd305b8cf380261a745f34d668feac470124d74b753cc6b02caa2c4eda17d67
+DIST firefox-115.2.1esr-hi-IN.xpi 538830 BLAKE2B aafa059156134a8e4e264ef4fa42a33451216c6d3c9b96f0936310fc702bd4e32b8963cb48879423804c182cadc4a691fb3b7f072dc6c25f7da9b9b5b644b042 SHA512 a5025a1e0b5a2983e3cb681aded56a75bed69c088790f53979559899994ea82f9f8f85d9138b0902964c76663f8b1896a749f24ac1b58b9ca40c66b725f4e0d1
+DIST firefox-115.2.1esr-hr.xpi 531646 BLAKE2B eecfd470bdc0bbebd81563e5594f9ceb72fe9c4ecedaa8d79508c0addbbc6ca2b8f1a637467b67a6c46ddd8e3c275c4a0096ca48b5ebc59f9fd877b91873190e SHA512 c63584b1be78ed2ba2785c0b373660e4c4da6df4c3e3488f38fcd40276db789486e9dc6945c4ff070557a14b0d892cdaa0b227355a1e5b4fb7184644a384f9da
+DIST firefox-115.2.1esr-hsb.xpi 585513 BLAKE2B b70eadbb5af48d58d197f2bbe103d9dfd5fd4bd008f1cf9095f541d41d53579ac64c71b816d2dd801da95c0dda90ff90fa76192460bf8cd0b2d38ffa205ead26 SHA512 7447f268724150e7e8cecc4f6c9a3e387ddf11d149bc57cea5798e27637fd7b303cb7c6aea136c5554e0d5ece6013195b40e66e74b81c9a3f5217c3fa076d5b8
+DIST firefox-115.2.1esr-hu.xpi 588965 BLAKE2B f74daa6cdace32a59d723528ca0063fce0cc18598c9968a208146b55f1ab11a80a39c94884c67781941924e9b889fbed621d78ae5696e05c9ff11d619fcbba50 SHA512 d652fa46124ce524bd5f490a12ad714a97d835c9d9eeae890b137325496e10d330494bc1bc5044baff145c046d098fd0e8ce70b70e9caa1ac2f113285c2c8511
+DIST firefox-115.2.1esr-hy-AM.xpi 579196 BLAKE2B bf6c44d863ddf8bc3ac1eedb7fdcd09b0630ebcdb504689c946fc02ae7e6f7d75adce2ee4764c43f4e30de1f847c09c2ad136a43341ff475bdd8a8291149fac6 SHA512 d3763a4905354128e61bf2f8984ad14a0215e2e2b5b50ae7aadbf3c9d707ed9dda9d1d52256904b610a9de9829038a3510d6564b5b41a8df3ecc286b19e0acf7
+DIST firefox-115.2.1esr-ia.xpi 553070 BLAKE2B 666e09d451958d8de61ad9612ac57dae5f3af109082219d89844bd887b8ffa1067c0f4513de4c44d90135c1d0050e05cbd627f297ad0ead50453cb6da00a35c9 SHA512 53728454d1f2c2a66ae82dd429aaad47ab8e42a79ea4474be8e271442c6c84a0f70cc6f69297a91e9ba733e96cf208e81f763866f01ccd6cdc31c2888add2a0b
+DIST firefox-115.2.1esr-id.xpi 537742 BLAKE2B dd1d8768290c23f33f12e74de527c9c06935c5de33a5bef5b4716451ecb2442f1e29dc21209a39598b69093b9ef1f63469da83222c30b3673667f48cadf5edb7 SHA512 e8acc016f2c85e326b4d402f5a3747aeb5cb66a14076f46a87806d9945a061583dfd3dd5a56b2ee76d5e707334735f2de4de7ec17c30d5255a5f81e97e8d849a
+DIST firefox-115.2.1esr-is.xpi 560794 BLAKE2B 27b6b6d486139909a7f0709fc5da2b58c6d0e900ea39495db477124e148caf547b0eec623a90ad8e45d3f16800103bee6c216a7a17017006fbc797e08426ad74 SHA512 8c14088556eb924d224de01b58c4d855dfe1d937cca41f174032d04a85dc21f0906bd84a69fea3a7d3fad18b068606520e06dbc5fc8f92daa4c010454d398dfe
+DIST firefox-115.2.1esr-it.xpi 507475 BLAKE2B 1def58ce5aec069635d175b00be5f4a6bc8856b7b5d3b243bf57abfe46932e264f79f600f0f729d16b946523a662bc09745ba44c021997cc71308d88ce8ee24a SHA512 9755066a8c03009213213b95769508d1ed68686480d11ab306483217681e2942abb438b4871ed8cfcda08f628f74f24c845eee05067b3b019cbf59726110b011
+DIST firefox-115.2.1esr-ja.xpi 634414 BLAKE2B feb7251de3dfdad2f41aa118deba41f27bd3c9cd02ae9a6bb330109eba9e11e6652df8bb4659a470b815514d5dff52f5579f9009216ef9f5858c3e3f6a00b72f SHA512 2037960a4e273cd7020e8afb9afb7c636b39101507b52c460eca37e173776415c7e71862c2c78482f396509f28db09d0c7ba5bb8e0eb5a8a94c73e33df84da90
+DIST firefox-115.2.1esr-ka.xpi 610753 BLAKE2B d671f557b872649db660650db83097d84b3f950d3c89c0e1c5fa38068e09755e289591b61be35222f2c303e27f77f8940a65d8f165215fb2196a49f25c7ebc71 SHA512 609cc873f1a1c18cfd07300a930eb4621455286fad2c3684b1c461c69a03a2ac0f6b3700f1799249efa1dd7fa09db974656eafefddfe843db2ae738b0fe1ee75
+DIST firefox-115.2.1esr-kab.xpi 562653 BLAKE2B 10a56c9ad304b34b6309a5d11ecd641748c28ed4d4fdbf00f8b3a925d8b35e269d46ec896de73f5bf6fd7bf30aab8e6b8de04c4e61aaacd35c632c12b3b4ca09 SHA512 d0529be9fa0f976a72545d729db51f058dc9ef7a266eb08a3d999c0d2ca7c0947ae44227a28d1ed8083fd0599a0fc1a97002be8740a98045b9f147e5c45d2e26
+DIST firefox-115.2.1esr-kk.xpi 639139 BLAKE2B 6b125fbca64968b44b3ad7f2efd2871978b0dd7ce869f7fa3fe694e154c61ab1bfdc0861cd70d1f19ec99919a4d0f758dd5be58690fc9d0db9711f2db236b8a6 SHA512 e78a80a8b0d2a968f1e0da0a14e63dad6693b6b0992156008f0f1e4d184ad8ac7e7b31a2688953eb364cd7361dc4feedab637d3cb311a4e5058de17270e59ea5
+DIST firefox-115.2.1esr-km.xpi 508110 BLAKE2B f1ee1e884b538ad279a0273d8ebe8a44c5a16b22fdf73e53a1fdab2963592233d4709dccb18e2c48f7f2a27bd45b842882159ebf49793e6b90c8912b82853399 SHA512 79846cc737766c12595fef2ff3d88eb6a55fafe393aeaf43b125426b2a11faa89a4c6c20a8ead07d32cc737ec3f73b550b2edf6587d3737b305cfef47ca28d20
+DIST firefox-115.2.1esr-kn.xpi 473769 BLAKE2B c427cf4eaf7cc140b59144d9a9ee932c4c0694e3addaab2c6e3cbc926de2ffaf5a86fdfe3ffb1047d42b4c88b3306b93a32cd237db20d8cb15db8c2682e998ae SHA512 1cc772bddc85a2966ef2aa068d254e8f68df1f6d50f958afe253fd484e6d0b5ab0beb80b59fbf6afa8177c2dad7c3b0ae9f37fdcb41e1666c93d41497211fb80
+DIST firefox-115.2.1esr-ko.xpi 600393 BLAKE2B f789b1df01d6226382660e37780d003cb17aeae61bc40c1442574c4f28d17441676448618b6377f56351c7e7c353493f56871233df4bf455ddbc696255c77dc6 SHA512 14f37a6a030a80899e679423ec36ac2f4d4a5d53bf308f8528b542d8bac6044c55ff6705885df9ca0d7b7465a51f9650677899f5e228c2eaa2f5619d161131e2
+DIST firefox-115.2.1esr-lij.xpi 463744 BLAKE2B 48efc967d1431589bd2e3731dce691e903cd8d2913531a4db216ea4bd106dd851f5d467a8dc92e9ac0a10d1f213da4e783574be579a909682eab12f976a5b286 SHA512 423e60341863f3e098850fea839239d6d532ae04e4096cc292e7bf87385ec0d1403ecd5acb56b1b1bddb6185924927c7be624fea5af220bbd0f4bfb1fdd1e74e
+DIST firefox-115.2.1esr-lt.xpi 548292 BLAKE2B 3587f67fb5d38a0ec5faaeb193f005b8cfbfa23a2d7f33cf565718f07652c96e268fc312d854c07648f3b75a58eb50940349cede069f1d820607e04d14190ad6 SHA512 640aa0cd5a39384baf4d2aff4b720710e6d799066119e3ec352d522b7b762ce8c44df4bf68a3967b250479d205174b634e31dd828ca6782afed233eda4c86244
+DIST firefox-115.2.1esr-lv.xpi 450738 BLAKE2B c18d70ccb46f3392f5c91b7be0fe07a81d0877be4fe93a826ef20d88a04b5396374e574603277ded2344492e0c141a972894665b239599eb77bd04391c04c7ca SHA512 144124448996422279b89898bf5a9c4cb4c159a1954372c4e4cbb40f76f46623386ee52d19cfe86f9c9dede49d280fc83f89d06c6288ab3c896cea0e4cfd2d1b
+DIST firefox-115.2.1esr-mk.xpi 470108 BLAKE2B 69f86fbc477cc5e8ec25f4f2671c8209467fd0aac2ecb17c2aaab8c814b98e7836d07bb1a757af582b5936f1f85c3d094a2896adf935287d5b86ff7f30926b3e SHA512 a55afbd2ab42652de4df23eaad0ebef62f32a7a2128c1e3196882955061e0d3489e56658c86fa0c8851a297961dadae91d4c6f76d378a1c86b81a6dbcf001963
+DIST firefox-115.2.1esr-mr.xpi 510465 BLAKE2B 0b6cf82fea1349d2d36c750f45f989c305826058a571f4c88c52cf9ee3acb1e5a95cf77abb1ca860705b4758070f698bacd35d50f76c9ebd28cbda47a5314b87 SHA512 0e9c374eed94324081f879fe8722f42154415bf7a5651f3e98f61d2687a40135970d76b81b24bf8d145a5f003b180b0473cc4e9835459abe748b1bdffc4e2dd7
+DIST firefox-115.2.1esr-ms.xpi 431281 BLAKE2B 3341feff235b24634719bf9c0001b4bd67b41cacd5674a47daed84e39a0d1d7d6ceb4354a29510b476b9c734b70a8c19650b41808f8ce79f4b142dd0f40ad21c SHA512 f2584ddfe32cda55ad2f175e22e8096ade5078b587750b22cc8c2a6dfd5bdde67105d0bf3bf1f8ba867a17d4ed24b45628b2b4970a4021d5822008f0621d9f6a
+DIST firefox-115.2.1esr-my.xpi 493659 BLAKE2B 5eaadf496368cfec351f35a50b4dde331acda88dfd52770049b2d536b786243f121c2b71e5d9a995988300feea6d74154d4d966dbaa9596eb01e802f7cf3663e SHA512 e05032fd5390b52c9d319ce25520887b96df3f4250d1f472aab7e2ea8f569f6725106b3f8c9c8c1413b89a43b6549de6625eacd7d1682ca8e48fbfd9f517d08c
+DIST firefox-115.2.1esr-nb-NO.xpi 548985 BLAKE2B dd2d5fd3893c8c72aef99d16ae42523ab8038645c1806f95d25516b736ad2380773efdc66df35a5857e8b940b3b6ce702bdfff2d28c5eecd5cdf600513e7ee63 SHA512 64b49537bc394a39fdb48335c365da4fcdbbb83590bf3f663a37f4f416591c059baf17cf6c1347872daf7c241d61a4fd3ce9be5752c34a92bd706c2c51c73ea2
+DIST firefox-115.2.1esr-ne-NP.xpi 469000 BLAKE2B 6c09dd5b148309be1136bc8a2a334ef3b83b2b0956e3b75313b316d944683268604f006411c4f0b6459674636408335c444c6eff5e0314c16c71073e2f4e7792 SHA512 862bcabfcfd6f9ea6c2838b1f694982ade4616492fb43ed337cfb9777894b9a5b53129d5b58b8cf94522b8e017fbd07cdf411f58a6a741d891a44cdc2c9665fa
+DIST firefox-115.2.1esr-nl.xpi 559199 BLAKE2B f6c9df4000974f8ebcfaad7623ff3cf6f7ad761a69bd1acc153cddea5c8be760bcbfaf2fafb7013d1185c6375b520190a4a29267f6f7dd7c1b3cac102d9cd086 SHA512 95b7f11f305380b76768e191eecf59218f02ed6ae742b9d5ca79fd49cd9e0632a0ad694e5a7040e607bb8a2390d0cb70a0806de36eb84f776d4d84db0ca00fb4
+DIST firefox-115.2.1esr-nn-NO.xpi 551972 BLAKE2B b130f45523ffd0f034cd9836a262034eb5239013e7d71b5043358566f4b6942116cf5056cf08f2d98d80141e029975d8d87349475d3d9d0997e4efb5eda73757 SHA512 0440da38a1c13834b10467a43013d797f95394498299571272f397707a9695923dc608b136e11ecd6b809b5a257881f13a3037b674ca1959799872daee97ebec
+DIST firefox-115.2.1esr-oc.xpi 572155 BLAKE2B 31ff459eee1840e8f4b16477a83e57bcc61fbee41b106b930397446ddb971ed06a1dcbed46551cc398deedb6528ed26ca2ad365d40ec41ae07e33b21ce407794 SHA512 57aa30bece8fcb285048e05854ee08c40c513d84b3c7f3b055bf27976305c73c74755560f7860c51f779c1a97d4009f741ac613099633056c481c7b419018d89
+DIST firefox-115.2.1esr-pa-IN.xpi 626114 BLAKE2B b9e85986c1a38508a354c5242ef661aa488b2ed3a533bba1f7323a25fdb2b7adcf91f7a68701cf0b02416c977cac7d632dcf2c9e47023206cdbc46a6072295bd SHA512 6dcca3a760ae8f576b7e307b1eaa4a9337ec96f26135c88f361bb439fae4a867db7d62d8e745af05e230b618ee9e0d5eceffe41dfd9730bb0d3caa949d1c19af
+DIST firefox-115.2.1esr-pl.xpi 579826 BLAKE2B 38f3c4f98a8f6fa06c5ab01b50d8cdbb6758bcf98791767e0566954704ce251ce271b7b9383f3b35166251e3c91b489190c76f958dcfc1dccb363aeeec89839e SHA512 570d0926d3e8a55c58546afb667e87cdf70bcd8062bf0cfcea971295bc33cf22be457f0fa290b6d3223936d0e9bcc26d0f51dd333f41a6199e7924d5d60563ae
+DIST firefox-115.2.1esr-pt-BR.xpi 563949 BLAKE2B ca7fdc7220027a5a408b09899566bcb99aa54381300db6bfbeb16c5bd833a8fab41b9f90cd2857576ca9510dda0c0315b2c68eaceaace7eb5df9b989e2a0ce17 SHA512 c77ca1f76621e90e96a23c24add9d050793edf13c11d95c2d0b25dbee279a7c4a61601f18e63f043ee07fd3581d542bc5ca94531581f5c9479d569c280ba425c
+DIST firefox-115.2.1esr-pt-PT.xpi 569059 BLAKE2B 28e17dd8e92a47b8f79e133e3fb1c9c05cc657fa31dfbe8edaa6ac2c825f9729fe057d9bb68f25863a19450cefdcf0c37159d05bf414f689699364310aa7b231 SHA512 55e809bed93b849c8c5bc262ff205e3b422fbf95398c264150dedefdddb8b9fbc30251a5f2b8716ed74340ec5e272340678782acb5cd8ee53db3fb3c6d3aa930
+DIST firefox-115.2.1esr-rm.xpi 558668 BLAKE2B f212ed296e8d6ba241e1c971a7f549c1c6bf18fb77c31c880e721751d23c6fe2bc832cfeaae858066bf3cc84b6a1004b0cadfe39e6c08cfab90b6c9c9ae8720e SHA512 af289cc4c72a5a7e91f1d08cc05bc62b7cb85547f35d14fff8fe401ddabebe88afbb05c39a2cb0261c4c70ead022ec6435d0e7eb779f65e4bf6fc63f227ecaba
+DIST firefox-115.2.1esr-ro.xpi 524801 BLAKE2B 48000cb8b2fe5c6f4dd0e8e9fd3745adec78ea75b619af2a7b84a335b40240a620481d48f7c1e90d6df6b60d92e24e44da4675937bde9d927a94129e276ce6a7 SHA512 65678bdcec7b1b090676bff4300e0492ba14fee79b02fe85edf28614629e38b668547dbe992c5e0937d395c968e3012f74beb9d40d33dac4bec3b3979de84ebd
+DIST firefox-115.2.1esr-ru.xpi 651414 BLAKE2B caa06058a15f0a915cae1bad30127178e30344497a8e7e68f15ae9881c37cd2937ffa4a0dffc5a4713ba67f02dd7c4a47027720fbb62152be01cbfbb5dfb6562 SHA512 bf70e1a68915b4990a7e71f3ff2beaba870589759caf39aedb158a877cd33d7b08aca7160ab9adf88048200a636dacefb3421860259d9e75d8ecb6859994a312
+DIST firefox-115.2.1esr-sc.xpi 535148 BLAKE2B 33d70ff7ff0e922e7d5c78ec3e3ed2d470d89b99a3f2171ca6e1122b3d462a89b22ea6f09753b16b477917a03acba07c7e97c25ccc49f9691adec19d5f655e62 SHA512 ef8e707082d53aa2742a7429469f9aefa32fc3698a54af0541451b96d285c21242a4d19adc177c734c8bc6bcc5718758508d3eea7acd25fdcc0371a9344005b2
+DIST firefox-115.2.1esr-sco.xpi 489683 BLAKE2B 80b5026dee83e70caf354ad77bd8b7b80bf9ab66c70146e4446554897c93e9b53a60f5d8ef3c00af684e59acf30187536a96607c14784cc50fb5df32067aea35 SHA512 4c6789798309b07f07d6b1be638c04b45213df5352792df35cccd733407e4d4b0e2eb09717136bb7ae30bf29dcd2db8f908c6dd2a5423974286645cb60ef3d3b
+DIST firefox-115.2.1esr-si.xpi 569009 BLAKE2B 5133c2f2d5f347edd9635b350e14c46b2aaf81de5ef57f98126855fb84ff8d22e45972a57eeba7af6836ee2b8875926601ea40d718d1a29562467f303fe10f3e SHA512 16484a8f8d0fb0a7ffdaa854391a204dc1d148b2f468bb4a69610732593b4c635136954ac9a69b99a04af5e31c7feb23ea9775a5312da6bcd524706fac5315ff
+DIST firefox-115.2.1esr-sk.xpi 589731 BLAKE2B ba9a197c3601353c2cfb0fcfcecd43d192481205bf213faec768655d87649cd1d961251bf1f14dedaef1943bee49f023fe8d38217963c9a38e737beaca3e9832 SHA512 c03d5dacba95b82963cb0ecc2d5eb830958faf74a43cb33275930f772f67aa4627d911292cda713c74b1af88bff1bbf01ff726ad1ef216fb267978e2b999bee1
+DIST firefox-115.2.1esr-sl.xpi 562527 BLAKE2B cf38ac8502f0e417c4fbfdde269828bfcebb5333a724708b51ce018e54eb604e8890e8819cd97c7dcac469bca30b460698f5daff538ee9dc7edcbca30cfe8a21 SHA512 8b2d4e1d9f2a175834ef6d9c456932c7593bb74724b43e40c6a23a749de2b9c179540496f98f740e752e5ab3d1b605a290430c70d2ed0f5ef61a7b852721c745
+DIST firefox-115.2.1esr-son.xpi 400971 BLAKE2B 321901b3afbd93dff56c4c446f6cfd26ac6a1f6aba991ab81822cbca36504244702733c57665596a5326f48dbb7f066959aed3fcc2b420dae65186a3c676d424 SHA512 3fd3a7ffe0f0263ab01bcef7706da4b2f95fc1837502a5938f9dca2602ede2ce546253994092b6551cd9fd2dfa027990560f08603827165d1adbd8562cb9af09
+DIST firefox-115.2.1esr-sq.xpi 564456 BLAKE2B 3f406ccb8101f9e72d7d2a2def91a331bc11d9b24fe8cbde788cc425fa0cfddd144f2ef24d392ba6e70083fb7de221c8e0ab37d080e773a596a1e7f4ff36d262 SHA512 b7e9a258584765361701de33fbf78de2d95720a72d2254e4de3469b150078290ceb21e42735b12898061bdb04f043786a9a2854f074d286e52bbea3b60e90cd5
+DIST firefox-115.2.1esr-sr.xpi 614003 BLAKE2B 02f0b65fa53cfb3576983d710763aeebde27478ec2865d7bd1163f60db29254e9e1bc30b4831f9afbc7c075989d348e6060e69f914a56f4084ceef988fa5f57d SHA512 bc1f3962ab44b4c153169c84b4960ee8a6eb7ff6b717a3840a6dc8e5458e07bb9fb214644142ca5539eb12e5cc94bf517d9d83319b0a5cb0d197c5de120824de
+DIST firefox-115.2.1esr-sv-SE.xpi 560552 BLAKE2B f4e8df95110be99aa6efa10ba013fa9211393f0d1bcd59c06dc13ab852e22995367c1cdc7ea41d18585b85f18521cb046520a446ebf573fd0579b53da58a9e4b SHA512 5da25dd45e8c09806c371840f170c757c743c7d20fd594edf619fd4fda56ea59566b923a89fa1b9f7d3a73e075e293921dda4ec499e58acae81292bf24425652
+DIST firefox-115.2.1esr-szl.xpi 504127 BLAKE2B bdd62356873ff4ba0e498fd131b3df978074fcfbec5ccc294b4554230ea563716f47d00ccaf3f93652a5831e960c8a94a4bfb613dfe4c4998958f03d1599d25f SHA512 201ce4f535ed95caaf9661af94709df2711277eee917b1d653b9ddb9e62259e807ad5e5a2046d3761d840714dbda79489d5aa78ff0abbe23bdb4c020729a2362
+DIST firefox-115.2.1esr-ta.xpi 488857 BLAKE2B 9d8ea0cb2a36d1e0742a9c8b560c4b8a391f6e3920127c73736b2138776749bf52bfc908852cf4c191b69f3d1489f8d828269188c53d5144326901db94b38acf SHA512 1afd8526e009618527c2f0a108647c580e6e02616554c1762ae23ed32444b8f4bf3338ebfd86245dd8f9dff5d5e326308fe87d02ad5fa0eb9d2ea0e9f3030dd7
+DIST firefox-115.2.1esr-te.xpi 536165 BLAKE2B 443ea617937dfcf49fbfd39b3a20df85793177ed6213eab79618cf123be6ffe77a098f33483a55299002291f79a59b028b9612751fa0ab4b8002a1e490d9d88a SHA512 9ced3bc3ea255ccc2ad4294421c0070ea79d5ed22984076bf5d24cbe258d6cf4877ac15a61cf2a0b2529dd70ab4bf79195647e34d4336e8f995d1b6dbda1de60
+DIST firefox-115.2.1esr-th.xpi 632052 BLAKE2B fe2109d97d35df8dbbff86c8f878a6c87e3b3b787ae09446e98d94dcd025264da3f978ef0c5c3b11dc8dd366f38d57582aa50b82c9733779cf1ae823d92b1d4a SHA512 2a5d429f4bad996bb74ad928ac8f9bdbc23fa1c43dff1da91f2cde43ce716369525e9d3a5d9e5c952454262ecffae9785f82a7e7a426b225364a29e76fcec17b
+DIST firefox-115.2.1esr-tl.xpi 511428 BLAKE2B 2a0b508361ef5989f2d60f31230fef8541ad6870e897827395ac50df653fc7db4484fd3adc8aee9c888db09644a857668e41964478fdf83668b0cea623aa4300 SHA512 6c5d289d24f53bbaf403d6408cd8e50ea885c7ca8cebfaeb4a8298a9582304c0612c9ead9294d5f4bfecb9b4d3746bbe18230809720c6d3101cdc9c9b6d2fae3
+DIST firefox-115.2.1esr-tr.xpi 573259 BLAKE2B 133c021c594964369f563d46843d382efb6e45428d421d5105d88855caeb8ae0b422bfeff719db12df419e2e8dce06498e01ff75cab41381ec921756e4db913c SHA512 f7d6e04d6a7d094e4449fd907f1199354e5faba6da035992cbe09e41c92f9f303d85dcbfba3157e6d1813a233c726c017921e5f608f7e690d4efbc3b9aafecff
+DIST firefox-115.2.1esr-trs.xpi 479681 BLAKE2B 62cfedad14a92b1b838d7c1196f65306e2ec2d659190ea9a7207509ab3120080407a1e6c1546e71ffef47318628e040362be4d58fbdd567c8bd2987015d9a51e SHA512 70f377956b47a885958748cf8c18fe3edc8a4ce06f814c9d688c2c836bb518294cad9ffa202042b82a5d2ebedfc9e125fdf7480d701479d470075b04799d4c43
+DIST firefox-115.2.1esr-uk.xpi 645040 BLAKE2B 3264788b06c4c8626bda6566bed1302aae1bf10a4f21a1ee063790bbe791342c4b7071e7699af9343f7dd3c6c52ae43cd756622992a4e021ce14b7d9aa1d1a27 SHA512 1862964080f16942141639e7e755923ca62fd2735eb81d8d6044b6b2880eefa1fd2624ac2a2f938780693775d80b51ce572dfbdcfb38882777814be718eba26e
+DIST firefox-115.2.1esr-ur.xpi 538789 BLAKE2B b910d0d736ba15c22e13b3c1019a0941843ebafccca88dfcc4670fa0903d8a883d09951aba43aa412df1011f709d08fbd677c379e90a7aa57ec13e16134472b7 SHA512 9ab9cf2246c8c6654a88e39f41458c05388213aa6270dd7b639cd78baa226c04acb5f09235382d3aa5c26936bcc315be617fdccd8a444bbc0da53ed7dbb43072
+DIST firefox-115.2.1esr-uz.xpi 461757 BLAKE2B be1db721925e56ff06755184bea79398f7ec782616bdbf543263ad21505653cc8f496874aaafac378cb24412af5416a5951f6e1c051be53be075fc6d47045bb9 SHA512 994948ea46cf9cbb71d984ba24940034b0f3f1ac6e5315ee268c547e058479b5780bac0ac7c236e020eb25f9470615cd479c8c6fe9bae30acc3b8315fa2d9b14
+DIST firefox-115.2.1esr-vi.xpi 595536 BLAKE2B 0a17a892ac7394157c3fd5b024e262802cdcb9330d843fb51dffcf10a6d7d0e335d94946de12fabae447262834c695d00b0c215a30feabc1b7f15e23ec5162a0 SHA512 a3613772df174383c6c2df94bf3856c796ad02acf35e60abdeabcd24941e695ff8ee11f0c405d175ae8455803986ad667017180c42c418f67e8d15125cdd4811
+DIST firefox-115.2.1esr-xh.xpi 402432 BLAKE2B 3012eee773e3d4bd3d2795dc530ac81889798eea8d3cb614a2f69b5cb996782e14d7f53ac96b803a78936697c46264c68da1616fcfc0a785734bbe114af6825d SHA512 9669a89d86483878f25e7afe49e11e590f62c6d32668fb7f5ca3992c2e4e9838b01701601f118dc86aad7d1cfb2bb089a8bc51a228ee3ff95569278c2be35789
+DIST firefox-115.2.1esr-zh-CN.xpi 595484 BLAKE2B 35d42cd87628e9e13075471ac5db9275fd5f063a63b5962a5c1c7de238135ae3d03cc5156ef8b87344ebc32176ea3ef2cf505bf9d8a8b787cfc572b09e0e191e SHA512 857042f7718fd3e4fb4e4c26cff9fc881d343aba260010f75143fcd6843bf06348138af5eeb157bac65f384055f59b619482f5cb1a38d9d5e045cf5391c45948
+DIST firefox-115.2.1esr-zh-TW.xpi 597819 BLAKE2B 70b5179e0af42de33c415275ce620aaf500bde4ab50b41fe14e92c2d8a4eaf354fe950224461f58bcbb46f3b70e29af5059208edd5fa4c3af0419cff05861441 SHA512 81cc213c6e102c4c1b8e754b8befd5d7b959ce3f41aa9a65532e3bf1e1ac36b2599251f0d2230bda06658a4fa353edf5908aaf59e18b64448adc9fe2953aa8ed
+DIST firefox-115.2.1esr.source.tar.xz 506585124 BLAKE2B 0c0600401c862c01f1fe145ef76c8b27efd4a9d8426932a2cd2de587134c4fd23a643cfee626a071ed7b06c9ec7459b1e4645581be08ae8a66659708c3166848 SHA512 5f9ff96996e3c482fa4d2e2861fdf14d2154bf0277d412bf9c9435204c7e2e2539ce7ef0891d8dafc74d5a12650a5ccd33d79547aa1bbb2c2a0972aaeb755edf
DIST firefox-115esr-patches-06.tar.xz 14944 BLAKE2B e60a8a32f8c5e6d897e8c3e13d291ffab651937505ce258f031e7e75560c9eb89fce4a22c61872d639e6e1d40244e94761baa1660c2d3d02584ad4cc4778946f SHA512 d9ea1a063df287fa651042c90529b1a1b5ebd5a28735c44b5527cc7dd29678c2f8a9204f007db328371ed6af9613ca7215464c00df5e685c3af4296a22139257
DIST firefox-117-patches-04.tar.xz 22388 BLAKE2B 89b9303a71e2421a2cef9ce0a3ca7dba5de7c21d6af59abe36b1e090bcadef30d2954acda874d72641b61b4cbfe0b032a6dd1d7d699709a2f4818c6e1e228d49 SHA512 7914262226a0d70cb3d24cd152d79e9e98b7a72993276ecf26f4e79608a0f4dd9717b8b0f3524f54db385af404d1779a2ec828e23b02c10a5dce27b53d20e835
DIST firefox-117.0-ach.xpi 444788 BLAKE2B ef17002a9dcadd4b27e15cb16a916055acb69a1d5753744efb9a096351ff7e79a7fa4b3d809f55d17f75d74f970cf40793df18ba6d9c4f1bea104cd8da8f9aac SHA512 43db55e41ba8ace6ea453e76dbcf9621b62eaff3928e465c3a1589ed37d9d6ae33f82aaf714dbf739be5feeb7f60ff5d1d134c3480dcff5068a4a5ae1bcf5a7b
@@ -307,8 +505,111 @@ DIST firefox-117.0-vi.xpi 599835 BLAKE2B cb583ebdd0521764dfbff76abff238df4372a08
DIST firefox-117.0-xh.xpi 401970 BLAKE2B 1e5fc872ada80753c66a44c96e7da7945861152343ac416e3f8a9e670ca04c05014edeaaf8744134551aa76da7ed251d6a392404cacd4cbc3da39940beae44a6 SHA512 116e372c13611d0e8140dd289a20fd8161c6b96220c9e27f7bea6a0cc8e23b5e827a7eb3fe8203cea3e1421bff710a72a8b34554f1004d5223baab0890029a6a
DIST firefox-117.0-zh-CN.xpi 599269 BLAKE2B 7a46e06909c11dc5818c6f4bb8b5cce49ceba8c7dd6b7451c0830ce040db1a63f7464e82813ef841fccc2fe9f7cee8c7e33d5faf217a2822ab68cc5b55dd879b SHA512 e4585672100ba500f89d38571188149ff78d3f50156dfaf2ca4193bb08863ef28e914d04bf51152f7f0ea9f4b0d8c953957c7101cb6f2b9d15f9eca803f31eb9
DIST firefox-117.0-zh-TW.xpi 601287 BLAKE2B 67415b4ebab0ba268053ffc680bd802587c4589163f43f39b9cfa5d31a9040a300ceb73be2a5b97dee94ad87eb78d76f8c1dcf62f59ba6df6d218c46392e3326 SHA512 5bf793f26c63e48f2ff831eb74d1272039093682298060dd72c442874ab1e56b0f959f65ce9569b64106f6eb0febc15b7f8dfbdf6ca490ea62cc1271d601f952
+DIST firefox-117.0.1-ach.xpi 444794 BLAKE2B 7d8323bc22d1f078783171168e9d94ff5f8d8d678b8b1c2a9f7db7fc1a4e4221a383b8a4898d429cf4c7de77ceb5885d87817c6c965ca527de59a46321f4b150 SHA512 d0eac4c1f80492f083e4bf40879adf62c1c5c84179b0d9393f9f14a1d9b39c585e35793dae313818cfaeee063f0ca2b1b56306ef838ef6d4e40e47bca07f609b
+DIST firefox-117.0.1-af.xpi 401870 BLAKE2B 7f280de7cc75817b35f224aa94bbe715eb7f0faca8f0c3e4080670ab88d218ebbd26ad04eab5afaa5e8be8729dc98a57dffa31c873aa563d9d68bab95410002f SHA512 8c35c83202637e32e4ee07b82d37005db9c4fd18be24da8947bac5763ba6d69412cab0d5a2c1f57d5b1059d9d6006bc49f16988571c1caef0c0ee07fbe29f64c
+DIST firefox-117.0.1-an.xpi 483720 BLAKE2B ad0f6f648cbb4ab78cb86a356c110c94313661d8d768082a9984d5ad712954ba00c6314bb5cedecccc6198de5fbad779fe5b6233bd4f10b21492d0e257d96981 SHA512 b0b0233e7cbbc920f1c3bf322ff3e66928d97399d61d1fbea53066bf217f1bc543b8e10ad5262bc26c2d489f6fa1db070fe09840b8a46e5695eb554b1d465b51
+DIST firefox-117.0.1-ar.xpi 550587 BLAKE2B ffed86e98893f4cae6a4f7cffe7882166caf2419b17c0fbcbae1b60864127efded8dbe6f3ab1e11c78ecf08a985200dc0edad78aec62065f5459a670728adba8 SHA512 a9d20841e595e2a7e6a54b3457b3b0987ef4a78b2321dfb7f52fefc273c38b804a4a15377afb149ee7832406832ad9ed05d7738dd90d1ff16601a21eaccef2bc
+DIST firefox-117.0.1-ast.xpi 477431 BLAKE2B 43d71d2da5c0b2b2b72b35abad7802e50709ce8c642886d5e21b66d578fa2ae07e5aeaf4ea057ffa89e0c9faf2fe29b14e90f43cd2e52cfe692f41bb6b7fe5c4 SHA512 35deb651a815178f6eb495ed19f89ea3f6fce30663f0dd0ccfb652a67a9b50367846b34250d0924e1f766d9b6db65532d83aa90b7a8677b1fb9315c5708938db
+DIST firefox-117.0.1-az.xpi 470715 BLAKE2B c7cd0b875ac79bad7b4f5c2d00e841bcc669d6e16c2a0e7e0ecaf791ebabdb6457d774b8f6d57e020ca8e41600f2cdf30f8bc4d5983229da608333099050c1fb SHA512 b014e7aea064395dd45dd3ae104c473163517ed7692deb5473d6155ea3276a741f63e9d1f0e94a71822a02f0ce82fc223123e172bb61e6f8f0579e17c0aeda4c
+DIST firefox-117.0.1-be.xpi 652093 BLAKE2B 80adf5fc012a03e542e9c1337601196342a4c72df2aa87ec3c6218c14cd35f1880fbcfdc3e1fe9376bdc2a0a6ff6b73fb63fa73933b8ce3dc762d8c13e3511a2 SHA512 e79bae64579daa7e06054c3ff51146041e016f0b76b878e26299432d2a972fb3bcb42bc3dcd22072661391cfd300981bfad3c76152143565a9ee12c4137e9dc1
+DIST firefox-117.0.1-bg.xpi 565325 BLAKE2B e02d0ecfb983c8d241ec512c7c9c0c7a0bace46e5cda0670611bbadb9f94da66956a38de7eeb95dfcba7e9959c4fc3235d6bd1adf8223c02692c1f18ab5f6f80 SHA512 805c8d39ddd217d3c9dd5e5d18ca261843140eb0dfb40ddeda3e0b5dca3f4479c096783d48ae21e80ba6c3ce6e6f03d9c27b66e067d6c0d9a302b561b4e9b75b
+DIST firefox-117.0.1-bn.xpi 559637 BLAKE2B 72c3e2b381e6ea045de5fd43ed2fae43e64ae2844fe7048b91f9b2cefe11454530f5d2b0ccb2be6e45a91b2ac5b772423c1bee819f15d81ec652d67d55d2274d SHA512 b0baf45e0c50ce77863c943d3483321f157bb7af4abd8231c0141e93b9cc1caa0a97d2253fd62f75aa599ec908b1168d400835445eebf9a6cb522bde3103099c
+DIST firefox-117.0.1-br.xpi 542774 BLAKE2B 18bd431094c8504657c68256103b452fd9ee9134ea82a7574dbb5c52c15cd3f0fbe49f9e0fd5f83eb366e6d870d48b2b154b830c8c8b7bb529d9cd47f0df9454 SHA512 2691be474fd2d8cef39114cb045058ae3956240d89e3fe298bef3227396f0a7df1f0d87bf4408f7330127e4e6a1d6b1979dd81080059a2370237b7269834fcb2
+DIST firefox-117.0.1-bs.xpi 440955 BLAKE2B fe021ebc2909e83d1aa2aacc6aa04a05d820369f724b1ccbe0fed7078c3b1c79ced9bf30250756e0c153546fd7b840a6a93d3b148b2ee6a4f895292f8638f4e9 SHA512 43567bd807b147339aacbf03b1bc9115097edae6f659e77013224be0a72771dcaa6d07e98f2cde69cce0e12293aca8cbf99e12c5b03d79ec40a7aef2f0d1da69
+DIST firefox-117.0.1-ca-valencia.xpi 522903 BLAKE2B ca085c37458e47bfcf6d01f325cce8bc20aa2d9878185d4141f83e294197b9e441a327b355082958d9d1b82570da95b4058c26ce083595ca1014a0d281f7208b SHA512 f8195d1a75c337ad887bfe71b114617573b7feea61e2646187469cf8faa81814bdc7f12d8a8038c5997fca3e39c9a28304e9ffa066a2bae74aa3078ae4a7cf64
+DIST firefox-117.0.1-ca.xpi 546625 BLAKE2B 52dc4e9cf4efb94609b4653d65b9d4ae4e081fa9f71f75aab71b4d3dd4e1f9e337597f0309982ff7bb22f90c960405cb260420c086db1e81886d57573d449300 SHA512 7191d9a218218ac5dc0468455a263705321964619d463fb9874d1494cc0b184bfc0c363033324980492b192a3c0836e257a52eddad15fdd3f496b4e058fa2b2c
+DIST firefox-117.0.1-cak.xpi 567757 BLAKE2B 76874d4da409c7d17914b4d420d194a03a16bb5f02f0cb40318b2ac42358a7392c9ed0bc210618af936643d3a8a7f59db00da105038050ff4207e20212d6a9d2 SHA512 18f135007ca84ed28dbee447ce7a93c03ffc1e92d8fb61ea9cb06241a1a5186ff49e6125b54c0bb98d81e82d20315a193d868c556b3b91340ad13983550958f3
+DIST firefox-117.0.1-cs.xpi 596753 BLAKE2B 50e62d65a91a44f8f1ec922cd52a8ca3be4c569dbc503f85cf266d90ded69c49a9bb16ec033344a7084b322bcbd5b073f918cddbf0aeda23a3e2e2cc4dd4268b SHA512 586d8d9255012dc2a8605dd2d0351b6fd19e63cba1266b40d056edd5c290c007322d9a0cbb44068ca5d88f6b7a8be5b1cc233ce8c5832af4332be78091ab32f7
+DIST firefox-117.0.1-cy.xpi 568486 BLAKE2B 731e359d7a2dbed662956106eb3255cbaa3bc6757aac69c455a4b625d6b61068a82aebba79aa078d8b251612e33103d4bdac4fff5d6e76e0d3ca8e7b855ad045 SHA512 425225b47c3646621d9aa59a3d5f4871a97315e132616a576cb572e70271bdbf4224294833be8256ed05bdf384d541cd234f361f6be19caed206257b848070f1
+DIST firefox-117.0.1-da.xpi 557765 BLAKE2B 0b095d846c427e32ff84050dcad1cdd6c2a1c78a13a24828c051ca4893155b61abc917a616d0905fd164fe49d8cad9b198e5e1962b1fd63c020674cda3d7ca4c SHA512 6fa0960c3c33a1c511a2bafac027168d0f7ad203c34ac18a7659f89ba6284cd2eff240bf74652856058243ac81ba716ac8348b8eaec45b8a3f8f96aed5e791d5
+DIST firefox-117.0.1-de.xpi 578123 BLAKE2B 8047d3a77c50d1df2591120149e9956db06f679e07285bfb5103cb85d65a53c842d676ab7aa7b6308c615ae58900ffdf318f829fb9070fdccc01233ddc67ad8d SHA512 743fca26081f04232eb086b916503895c88c968fa30798b14785bd12f779e2ebaccefe4edd37f3095cd91444dac1c3b01d154d380aeec36c07f520c2fcdf4431
+DIST firefox-117.0.1-dsb.xpi 592963 BLAKE2B bf0d40cb824ff981cdfd3223da64a8538972ba059cd07767ecf93ef163c8e3f1ffde39867c02f3d13b7baf0489336979f4e62b1b8a0af461a0f17c4640402e66 SHA512 d3aae373841e4404762ef3a2c24a342bf280f463fa86077c02c23119fecdbbeed865b69a01b22282b3fad354564ee23ee3474102333c238115f48cd9de6434d3
+DIST firefox-117.0.1-el.xpi 666561 BLAKE2B 7230b739140167e3de81b593ebea72a581f1ff2099ede20f942b2fdf116023706114f6335db9483640671084d28a1e4e126f9210aeafd1edec5ed97f6a45ce86 SHA512 cae5777f266809b8738759567415a2cb813834eaea63d2fc09ff2ba230858eab3d67af5b7ae2bc1f2068ecc7259c823c8f460b6c331686b5ca260a0d520c608c
+DIST firefox-117.0.1-en-CA.xpi 520398 BLAKE2B 82aee3b8d0a4b44b162abc86c052fb76c10a7bc3fdbc9b87bba584b5e117b1caef86e6cfaa54f5d44d95ea285149f5124e7821802a9931c7260b58a448243c66 SHA512 c051bf524c704fc01afd310dbdcbf00e1f8d439a7c71c021d40de5788c10c5d194d78e243ac6b0310d23f84a6526705c98742df948dd69fd3d8d8080c6a08997
+DIST firefox-117.0.1-en-GB.xpi 533891 BLAKE2B 0b1174ac3716f9caf0e74f7559e3c3cb56385f53deb6a836e55a056d00993af5c10192a24de4a55fa00d901252a0a4d6c6415a8cdcb439ef567080f37238767b SHA512 2d855ac972934f4151f666dfcd69027df442aa1109f505b039703edada2fa37b306bda4163636407a908ff6af90b713bcad2494d42885d9e47599e99b9e02b59
+DIST firefox-117.0.1-eo.xpi 561457 BLAKE2B e0123c20272d8fbf31c2edec047f79e84178db792288aca5eed62ea25805ece8b4e0c2382a060a2e642c73ecee4448b29885b65b520e36e0513e649d5fcd3290 SHA512 44f1bf3022055938d4e127a8de84e20a3fdaeec872bea2a605132c0bba4138109d5522239f40a4d5fcdada2c7350a3ba26976b0d8c2f9b5fa1a8c96091127ace
+DIST firefox-117.0.1-es-AR.xpi 572729 BLAKE2B 891c9abfe34b851c4e566d78e77896734aa45407dcb3171ecbc2b69f454b8d89e30a888074e4e928aea9b6a90c2faf2eed5214883b5cf985d5c5a2de2466c050 SHA512 4e15bd682e7fc57fd846630a47a3e5898855e59dccc5c20d6db46a3bec9967d557c1b354019019f5c9310caf5ded2bbb2698d8d45984ef51402baeadc30afb4a
+DIST firefox-117.0.1-es-CL.xpi 571661 BLAKE2B 771ffcd98f952a65ad5e3a03a4a1ae891d8162bc9716db7c524e1c6d99ed5decb49583bd5540fb520d35b1539ffce8cd71f8940062785b7234332b94b17f0f7e SHA512 9f7819c6190463aca08329285b025b9c9870f6d890e833b4a65e8ece5f8f124c78d434fe819d8ada183e7ed3c8de1ebaae5d0409d9c79d28c63d1e0601e9f427
+DIST firefox-117.0.1-es-ES.xpi 564585 BLAKE2B 929468686adc48f25d283a304ab80435bc9c4bee6888082dce5ea6b9fe5a75d5515200e13538185da264259824246a068496dbfe8effa5afe204897a5ca46b66 SHA512 2bbf7d45de5c79d9daaac2fb6557378fbb91324f12cbd3323b2c881e004068f2cabc98a97fad70c7a583b79a3b16c66ba215b27fda8efd0a34203dda1fadcf7f
+DIST firefox-117.0.1-es-MX.xpi 566699 BLAKE2B c707dc1ed97ecb0edb7e1a30b081fef688a41e820093dff5f8143736b8bb064e3d090ee064fc42ff87ab61c19a27a6003ceb0918631f10f9b98fbfd060e5a716 SHA512 665c398b3a0fb26ae34e978ac9325312e16e4dfff88632b9feaea8a7ed415d145a9ad3d98c1439ead0581960f315a2f3e01a49624b2cb31ea8fd2d8545b3c9f8
+DIST firefox-117.0.1-et.xpi 517160 BLAKE2B 284faae42ed138900ca5ecb0b0a851d9f929bb9374635f5c1fe15f5de8fa3e64c1d0478a53dc9dfe87df31504612e408cfe83f1f4158a9398ba40fc90a905ce7 SHA512 4afd3b849286efef78805b1d2f8c42d76ea5499cfb60545a42ab818a4c357ba2f111c041e39f51182376ec0dce2952845f268346443c293696cbfedfe65723bf
+DIST firefox-117.0.1-eu.xpi 555913 BLAKE2B c849636853d32f11e2add5e167b92e75df035247f342c28a6e66715ab8f6bbcb1de3c911bdd569e6b503069acb4f08e8ee3abc33e3fcc422a3aa29b2512f03ce SHA512 7f7b383e5c2e4ec6eed6815a9ba84f7aa80c345202170cd1a161aaccb98d3bbf0c1a01c9b3580e926a8868a3d36ec27ea7a3abdff1bb904072aef1bfc811a327
+DIST firefox-117.0.1-fa.xpi 567400 BLAKE2B 584c29684bc4e7145dab3cf4d260c4b8e5c55f1552d67369b5414adee49462df9f1874fb4608ee435a22246052d25c1a1ed2c16e78ced4b09177e8c34db532eb SHA512 c46a29a7835d4ebde8ef21c20467c2478c9a9eeb8ef971ccf6c0b88ef28b7da64d341fc21b1d4c527c66ad7a1a88d315a64d076c6b87d2f5c32f11cdcca5ab25
+DIST firefox-117.0.1-ff.xpi 456776 BLAKE2B 7b17db5da469b2fb9dac75c7b5b8092d91da4f089c7d0a64742e11fe987089b5143a5541c07f66d457f166b804a2e00ca670d5f253ac18299ea68a39cf6d6e2c SHA512 75d0d7b1ef7ad6e661dfe326e31351d7c41597a3185f709d1e033640119642c48d80c7fc7e69d242bbd160779ef37aaff9fdd5319980a611975fdfbdbd5d8f58
+DIST firefox-117.0.1-fi.xpi 555275 BLAKE2B 86053d2a7808cda208c8793fe7c17d22a7128eb94a24c0407bc54e127ad384a6daa1a7225d2a1fc11f4fdbb0b781eda6b219a74932582e122d6b2f1615c23d4a SHA512 c56b1dbdcdcdd2ce272db607f291c9f7c201e328c52ef94ba1453840a6bccbae61963df867f3588dbd164b9bdef4153cb005698243505e06c0010f7118cd9124
+DIST firefox-117.0.1-fr.xpi 584457 BLAKE2B c88c10add51a72c3758c8d4f78d4cf3df5cfa9908395425b5747ba8f1f2137d8c92ab8da77ce06b56c4c8ccc8c4669faecc2f629d0e0782507aeea2d5aea2266 SHA512 348619f4b50bc52e55230e53c374e87f191f55df37721f08f6fbe8a8d2d16b21082ae9f9bd4633d3a8fccb638aa18d385bbd37a46f7b75718523ba9d3e5153bb
+DIST firefox-117.0.1-fur.xpi 576611 BLAKE2B 861ae2eb336680002b2301d172912530a8d0cc2a1f9a7420c173c9e3afedc321122b7e12dfc2276716a88fec085182a2f5c02b239cc53d911500824ddbdf65ed SHA512 ec7af54a5e46b88edf07c2a9330bace169f56a0ea8928c137f2751b0d30cd72eca448d41049d9d0953f8eaa58e2c51b05f6ff4a43f98d6c84c4de148fa99e717
+DIST firefox-117.0.1-fy-NL.xpi 568067 BLAKE2B a874f1dc6881fde14fa988ffe28f8d80924407b89039b7d42d3b5b68f05e60eeb58a97b608cc33f7bb0382f5815acdd71da6814ec6f74c61fcaa44c2be75e113 SHA512 c7ccefd29da83b4d8878a385e690ae56e8a528fd3b7088bb9b6e79e94e9b1529c6841c565a786258700ab2a987cb96bb087aa9efaea1c2fe52ebafe7f4161125
+DIST firefox-117.0.1-ga-IE.xpi 453869 BLAKE2B ae04dd74c34bf498cfcb8a2d6c4026097bccaa1ccd82267d43cabea66f9fd2eeb4875fd58b2c7f80777818bee461aa0a4bd431005005695f542706124daf3e4c SHA512 1a08fa6f47ea9d778d0d0f3006219f324319bc749ca804c05554bbb90b3a4bda692a059d51dcf40e8d1442aea6b62a3597f4961747400ceb191d71efa066922b
+DIST firefox-117.0.1-gd.xpi 568329 BLAKE2B 20ab07d0cd19c6e21f2935af15e7c8c2e610d017878ff7b09e3877874870ae11e164e55f5c55b298cfa21bd993af9a863446e3f9e482154ee2449b2bcdc08970 SHA512 238970b699f9335a1e9a80cbe3e3ea94cfac00e7abbfaef351d35e642d17049f4b969d5fb0e1c9c9d1d4a854e6ee67ed052535508f44b11a130ab96a69d87383
+DIST firefox-117.0.1-gl.xpi 567521 BLAKE2B 89e1b7254e358bd6999313c87bf2d96c46d8edaf2fd1f122a96ad8a5dc08874075853bfaacb179f3bb78e701a48542a2284d4b06661d32e6c86c8181ef0deca0 SHA512 ac545da67cb40767b701735d2c07df0c2cfc5e08a2e75fd0c422b1f650ca8ebb3228085c90e8fb96b76ed39b98d11cad538a986de37b45746a5bb20cf934758e
+DIST firefox-117.0.1-gn.xpi 581965 BLAKE2B 1f1359408f49cffc2b4f010c90474c3fd7a609ce634bc019d9aa7c7b610f684b1084259e094984d3de7e8ec73b6c3f5f91d7a81192fbe60e4d6c75d2a1c01ab0 SHA512 dba8ba7b1a8c71d1af4cb696ba0a2424c20b7d5df2d10c511475f332f930f87eaaea96fa264f0b8343ab75782ea62844e1791815519feb6913a446bdec47745a
+DIST firefox-117.0.1-gu-IN.xpi 506746 BLAKE2B fe5d1bbc055e11771cce9f683bd6ea71576184ae6ef7374525e8cbe3b3e024f528dc4a80a047325bfcb55b66fa47e409e3a121d4d41d4f9e21785c741d214003 SHA512 5c97fd05b406266e852a09b57caeba14263ab03cc256eff95f9152be893f1d7fc9d99562f52a744ffbfee7e59b24cb734cbe26d71826d4a93a0aab096cb95a1c
+DIST firefox-117.0.1-he.xpi 577834 BLAKE2B 8452847e6d424620109092870376cd396ca801474570f4f551e5844dcc036962b28b32bd8a3cedabf020282f800cc61d485aee5d0e01ca751e18535f0a75070c SHA512 a25acde56491f88486dd05fadee58d533f817e0ed8322e36ebfa2f37e5c68e8d8867b9ea0804f43b8626ee26bee0143b1a8d26a60645d2cd5f1387a84d900da9
+DIST firefox-117.0.1-hi-IN.xpi 543573 BLAKE2B bb888311afc6e000f0b13d3a6cf3db056216b1bc0a8e3950b31dbd5b4eee4358e33703ff9b4b515efe7d4fa252ab955b472e205089b5956e0b2708bd22d34f4f SHA512 92479f6117cd798963edac66df6aa0db77611ce2522ed58fb26e940784ccb1ea578ae317ac5f5ca426a7081c0e2a9182e567f9ed33f554fd2edc045a18918369
+DIST firefox-117.0.1-hr.xpi 533132 BLAKE2B 82f7bfb95a928fb63168bc8f5cb784ee7ab4e17896949d7c16327caf602935f8c50a4f63e501dc1e5695ee7a8a06525be5970a0fbc52392931ffd1d840b421b9 SHA512 7eb470e9b7bc17d94d80d95a790bf253d17af059e266d7872845086cab599ff5d3a4580081427163d683d6be99ae86aa828e6a1524a301de32dce4fa8614a7e1
+DIST firefox-117.0.1-hsb.xpi 589121 BLAKE2B 00f8198fe7e41f29da3c67dd2a0eff203ba86284cdf27b398198792534d2838ab24c0354ac55c542257fe00d450cd606668b32cb4c5e777bfdb5046748333aa1 SHA512 6f538d758dae2413b29fd289b8d20d44dff05b4de7e9c31936c5d48fd5226ec34138dbdf7ad6c82e8e7f96b5315f1529fa863a9417a2fd9938ad117394d18a48
+DIST firefox-117.0.1-hu.xpi 593016 BLAKE2B 9740e12c82ce95f8fb55120bfb991f9153c9e551a5227d532242dea57a31c8defae2458867d90fb55061d02f6896e0ed55d41beba9174e8fa6b06d7a2eeccfd5 SHA512 ac21bb393c1fa4ce1f244854d3915d2dd35ce2f9b5377ba34748197afd447ffacd7207f1039b699dda7a88fb8c9a17dc90ea3d3b43897d1b5e2e90c4291c9482
+DIST firefox-117.0.1-hy-AM.xpi 580487 BLAKE2B 469a3bb6f5619a6584a842003b6530368c388b2967403a62260866c895966fa8b6e060bf51a4543d24525f7773b530884ed44500ebd7cfc8ae4b41976845c031 SHA512 cfb404e1fd4dec6ddffd6902073a52c9ecde0cf62cde35bc50301b5b87f9a1e893123fda28fcb8acf33ebb1bd5449b371232c647f499a938fe460df6fd6078ba
+DIST firefox-117.0.1-ia.xpi 556623 BLAKE2B 703586794d6306d1aac41c52d307c16515d4213874726f97e5d2a35ca5af053ddd85930a41c6a0edefc740db839f459af3288c8e84d41fd5d89f687bace7516a SHA512 56f2121b47410ffbbadd7254bf079cecf0ed791a32bb81aebfe22248d33cf613d86f460bb6494f61b5b0b66394c02117717a89f6bc23f6cc0d440491fbd8b5bd
+DIST firefox-117.0.1-id.xpi 540545 BLAKE2B 682f799f6905ef167dc463de95e6316ae90bb10fc960e48d68bd2d5823a875a237845fbb58f18efb1328f404247ca79855974e8827d7d4fbe28befd019d07673 SHA512 8ff70a2498bb77666c7f1c1db15bf3332c0d74a7ec08f8d1f3d341e1ad37d6d83015e881a15098a9ddfdd58e723aa31a6bcac064ecd56bf20af0e046f6651103
+DIST firefox-117.0.1-is.xpi 564433 BLAKE2B 37532a4b1af33a8845df4d8b1095d24664e7ff4168cbe6e5032a83d7906b2ea3f793bafd85e26cc84e436ce57e9ea85cacfc804e06afc60ec8eebe884efe7df6 SHA512 b1d878ad48b3cb5f7352b4306c93b69ae7569901d9ddad33454901a47d17bf2aa17b228469734ad1adda7d6e8035cc5c04005c83cd6804740155886dd420a8f7
+DIST firefox-117.0.1-it.xpi 510636 BLAKE2B 26289a0e470191018e3ceeaad99fae8ce37475c47329a8455859db717528fb0f92b26d6cbf7e6031b64fd1d397126e63fb2f9b462347d0b096e8869e24598bfc SHA512 80ab6f36a3d69f752cfc5b1231638bed7e6849340a7ba439202b563e2b583892cc97c8a70c541b742f48783b8e0a8896bcc5d05c36e659815b36d297aca236fd
+DIST firefox-117.0.1-ja.xpi 620391 BLAKE2B 7833f134c42c9853611af96989d611b7e6daa782828540291804b8691fb13d1778e9bf782c3c3cd4689ba8e2dadee8851548133949373bf12efbb447e6a42cba SHA512 f30c184a0942ece283f015d5c0925748f7178d89508da380fde0c29e6d362755b78f7d304c8eef915088dd64be9c28e26c63e47620b321ab53a7577d571dc05a
+DIST firefox-117.0.1-ka.xpi 620751 BLAKE2B da252eeb96fe3786c3905c334946a2c984f73fa75276f6cae3959e69688c59ca4d625d9e300e3d6b6c324bb3f368681932cf07e4e63e0edce4cfc4a7c7d1803b SHA512 9cd3b9537998bcef38d036f2fa8981628ae5183758969a5e259527d856590c5e51e0218f77a1a8039a86745018b1ad96bc94c92da73ac9241f84715df214c584
+DIST firefox-117.0.1-kab.xpi 565303 BLAKE2B 23ddfdbaba2eef6da6e21e6e4084610bd5905168d589347100e99e55b3a388869c6099d089efaf6ba7193a768d265ad0e27798b4cf7d80f714e9f28aced6659e SHA512 972276edf066f5728aa200ca505a41ba5d99cb08aae6246a7d599952a2ef9c23bdf0f0cb8ed969790dcd7547a6b6a5462ff4e4c834d483e40151718d9e12e7c5
+DIST firefox-117.0.1-kk.xpi 645184 BLAKE2B 5369791e634c40279d58b858fb83d9ad586843d4eeb5aacb25f85d7bb8a3ab9ddd92b96f1b913d8bddc9f0ab40b855f72477d25825674c11a12a8e23efc6d0df SHA512 8845b795477701e1798fe5ec7b6e03977e01d4401ad5459244c79b3701556567d06c45621bc084da085fb97dab3f4794568895d1228731062caa28a6b086de17
+DIST firefox-117.0.1-km.xpi 507782 BLAKE2B aacd4abc97e87158d5760838874bb513b24371833da551a2d3178d9c36f4faa80104ee6c7b4de7d7fb779955491b590b7a7c93d69a2a0ec5d83304e3b97629dd SHA512 e1cb02447fa00abbe323e47b9d19f37dd0c81cbd15b0866eb6df90d95699ca788512dd640340898272359c0ffea2539783d4bd41161d05363eb1c62e48bfe877
+DIST firefox-117.0.1-kn.xpi 473354 BLAKE2B cafcc0a05db676b74c944af04bd9d8a4a19ea468a76b02a0a6d5ed2c7185d4dad8ac2be6a3ad486d6eae478e8f76e3825cdf6a517b941bde2b931deec965e282 SHA512 6d0c33582712357fb47de4a62b7922792aa06d5bb863f233013076895f4260adbc493d7c0c6cf9ad22e0e57503ef59a934f531f779e514c3617bf077cf9528c2
+DIST firefox-117.0.1-ko.xpi 603702 BLAKE2B 7430ed03581cbb2b70745169d602197c86fd07951eb12a63cd08a6fd828486caa1474ad07d7ce84a0aaef89b949cde3023dc1996a16a330daefa71d2857c3e0b SHA512 82afeba574aab4a4db1c8c0a55745ec5cfce4b040726285afcb289c3502343063de1ceb1c7eef60214581ec5288aaa23a50cfd9240453e9eda45ae0be2027358
+DIST firefox-117.0.1-lij.xpi 464077 BLAKE2B dcdd0a2919e1f4fab8dd7e6c39451cdd8334ca2c12a7bc553ab68f74f902614d562ce82a01e9b23364f00d3912b652012da7ddcf225bee2e0c5ebf871c045a90 SHA512 129ec86c19d7a9d6fd2e8d9140ef8eff1d5449c3a5210b1369acccbe0bb8d258f38cc71f36ad2f6babb5cbbd6de279d4043fcc4254ecffda5353b141db15bbae
+DIST firefox-117.0.1-lt.xpi 549438 BLAKE2B a860990472ab714b95e6eea422876e5e2b8b874ebfdc9107eb1a00b21adf37b5f95f0fdc1346f2350c83291531f556160bc71691ed1677bcd587e1965155b411 SHA512 b11e3e62c0dba3d0f23831d5199845bf42dfe0583096619eacc2be038d197794d2474a75134ca7abd1b670df54ef712251cf4f18c361836e0e87f2788418a924
+DIST firefox-117.0.1-lv.xpi 450454 BLAKE2B 1fcb416ad653e67c1b05a1c2c4677a82a6652bac0c8eafcf39b7898a3b3fb27eb00405fd13bcb51b23000972f0fe01647404af58a9a8e7d3a0616e7b9deaa143 SHA512 e02d0cd4c3075c6f06e9a2589b66a7552e55b45bca898a5b7ea1a3da36d8c0c8ea291fce3f949c14afb530117e29b3898d412c10b0d2b7884039bdeeb76ffe55
+DIST firefox-117.0.1-mk.xpi 476033 BLAKE2B 01a7640d6d7a23c071e3ca42c52c709526db39dfbbcb1eca6afe33f6dc6e354ee0a2ec7fa1c9b0ff31f2a86cf09562407cfbbd5cad3b2302f9e2bcbcdfd182f1 SHA512 8b88a7b2d06dba93bc9a63036539d1f08a7419b0c641ac81f98f76ce6f5e67f528c296b6695766dc402e1284f79dd407d86d365a4808d66447684c1dfa05b4bb
+DIST firefox-117.0.1-mr.xpi 511391 BLAKE2B 68029db7a2ff7830ed5b5cbbdc866b01974d5e68b8b99aae553c3ec1c836b0411633a5d4be03ad600ac26e229e12333b0c905908b69029ddb5ce388eaf78d68d SHA512 b1fff78cbfffcdf159cf48211fa964605f4fd8d58988250899e263360c3a986dc61de2baaac3d4befc2d0d204f0ffc4ef1af410070698e4bc12bf810dbdd5393
+DIST firefox-117.0.1-ms.xpi 430981 BLAKE2B ac6bbad1c1bc87449c36850e998b7a25d8f4547166580308e4c933cda38455ac809492dc7f4a4f8c65d7a39ef1c06aeaf9ef17c369876f7c5758b0dcfd2369ed SHA512 3c6b1a9b08f58888b672349c558b4e7674bd5d977a8816e3995849f4741ca75be4dc1f14761cab7f3b1a0e92e63bfe768fd9785ddf936052a6f79f39885b3ea1
+DIST firefox-117.0.1-my.xpi 493863 BLAKE2B 30d88b139aad38a5e4e61eea7968aede3c35159c16513f5abf162bb551d365a40215aadea872af5079c678e1bd53f7696eb23ac117fbc4b9b0658789ba427a3e SHA512 572af46bdb94371f48f3e47bd2847e649f027786d4891b9629aa2c6c7c34b0975ceaa938e1fe8e5c1ff2cc101f6b681c6f5608450c5d394132c637f13f670ce6
+DIST firefox-117.0.1-nb-NO.xpi 550899 BLAKE2B f4b966c69551e5ee9cc9a25b9160c35177016725d3508e6827ded565d8f21968c487e94c90d21c9f9422df12bafe6479f49f43d32f5cb03b0473319f788c7036 SHA512 327cdf11ff7b25ba0c5d6f5df55d8ac9a658ee0595d90e97c79d285b727b3d6e88ace910c360c29d59023b99a71546d7e59ccda4bdc31eee2796f8828ec32fbe
+DIST firefox-117.0.1-ne-NP.xpi 468693 BLAKE2B 5ed5e3d2229720e9bf9eca44d0c1061fa47eeaa069d7d4683c3c4381c464831fec7852cb09500e8dc57b0b5aaec3687decaa302e3a587eac907770394e808103 SHA512 e04e7a1b013a3914056a50e00de134cad3028cb1133d56771bf545961b8fc9e14cd2312518f58af23ac393b80fc9bdd87a84a17b85e9aaa758fbae547b91f6f1
+DIST firefox-117.0.1-nl.xpi 562329 BLAKE2B eea9d199d10ffb2c98f28bdece3c45dff1b0388c80f53f86453c0417a4d21470c6c71789959797232b41b04bba05cac641acef415e868c2ddd5862630012283c SHA512 d5aa8924a3017a27970c5dd6bfaaea24eabb29d7ed18333d7e3eade70dcb2525ff4b31215caf0199c5956ee663e4ff6b28360eb996c0ee7f1843981d86ceea47
+DIST firefox-117.0.1-nn-NO.xpi 555662 BLAKE2B 85e3db533a9eabbbe7493a514b2e4f12065e9c7b08faa64b4d58e6111d6ffa5994189f58dfd7481a3ff021d374251574653c2a974f8163d42014537b179fad54 SHA512 f93591ca9214d07b79018d4614346888d7d2b1d6fd101cd399636c5ba09f1f843a7541a17f53606af9dbd3abe802a250c1f465aa7611f6643215385acc1fd923
+DIST firefox-117.0.1-oc.xpi 575179 BLAKE2B 16773fda04259691fc33e14bb8cb67f48ed51aa6ce6d6370fa3e8693aae345252f685b9d35763daa7d32ce81fa331f574a329db9e5cdb71a1b15788349a661e7 SHA512 1fc1d139eaefc52f556d3d523b574e20489cc6ed0e71288ea6b515fa25b8072675c0c06c2c24848409d8aa563e48f78f1e7fdab2919c4d733ea1c4fa55219596
+DIST firefox-117.0.1-pa-IN.xpi 629875 BLAKE2B bc9b9b3cd9f429f837bd778af7792e82c5adc374240c668c5be29be0b87c747912301df43bbcfe1067ab099facfc785968f83b85c1dd6c3873a527ffd599ec01 SHA512 f23258394b70863715d702ddea9717c740d0261be85a1b043cde9e263943e5dacddb3174f7c6c185a00bdbceeaaa362127ced1873ec476ab9e9bdf933815a246
+DIST firefox-117.0.1-pl.xpi 585327 BLAKE2B 936b06c9e0bd1d9b998150e864c0c1ff145e1c2bc7c1125907b01dbbe1c411b36b60fbbb947568aa220ef55c670dba56a7431629a9a1411adde4640e62673a3c SHA512 63a813315a1056bc19ef7fa65c7856ff503b00fc0f366b7697c73c03e6c75b43235762351159408655781d10adc7b41cc31975ecc0f2e686af915ca8fcf8d9b9
+DIST firefox-117.0.1-pt-BR.xpi 567123 BLAKE2B 5a0fd77d0a2802f844cad404c6c547db041c77e7c0f61eea5f256345e4aa29dfabf0b5522ef9efffcbd8c26d5fe8f309dfc94472ce7f7c09c43ecba7e0d79c90 SHA512 42a319dbf135ef5c67e48594c14d75d7424ee494f9608b4e959bf2154f1e4cb09f3b39442c0193ddd722f1012abf9936c87f0ba9be83e7605a5e7d24b8898f97
+DIST firefox-117.0.1-pt-PT.xpi 571439 BLAKE2B b639cefda2d0d23887e20b127bd765dda50630abaddf02b40debf00cc62b8aabccb381f675ada7f0207fd4a92d97ce1986d7f15ccf2a78390569c382c26736ec SHA512 f47c106d686820772a6205cf8a413a3a9a9d0bac5d0c5d2e381bc921f277e6ab87d6b30898a3e52b424f55dd96723376797380ba74ce8df539fa38ab2778ff34
+DIST firefox-117.0.1-rm.xpi 562455 BLAKE2B 37eaaa72a74fe0715e174130661c5eb8ef6913a8fc2a3f6864ac3109c6a137b449ec30bc06918c6bffced7cd8526ee67ccb1d5b38fea0aef989fdd2d063bb2af SHA512 f455a5a11e512c31be52fc763ebd34d16daae768408d43ed883627222cb33b95e9bd1dfeb4cb7166aa33a60dceee62c33c44a0e67821f94f2f9d056e0bdf2702
+DIST firefox-117.0.1-ro.xpi 525859 BLAKE2B 8c2c2dd9eba7528c07ae033ccd6652c57027e889c93cef660dddc51718e448886db087a034546f533d51a0c86d4e578524caec9fdb917553d070820fe7e4c0dd SHA512 849f229e8c82f8294116be54367ec85d746470b46c81984a4b469209aa6c537c8d35edec05f466cb6b5d6387dfee893fe839e10c3898466aeffe56f2ba891474
+DIST firefox-117.0.1-ru.xpi 656334 BLAKE2B 7f1ca76313a0cf27352e9ae007b1d0f9773b837569041e233b2d3ef13ecc2c2d6ec6c07975d6daa7172ef90392312b6ccb3e2c30103f858cae139b28edf37ae1 SHA512 0bbd4f8379d278badb0f84f167245563635daf7b9d8216e9b79026116c27eb84b31dee9667ed8932c4fc7de3aa95d918c855572884f353c6420e8835ef875b2b
+DIST firefox-117.0.1-sc.xpi 541048 BLAKE2B c4291076ddff342066e27a117518c2cbb0875bdbd8897611963189c51c4f7dd05c9cb47275079506dbba6da2921bdeb54bafe65ff1c3d0f221612e2dd0fffe7a SHA512 681b7daa72e48b2bfa820ab698dc447a1a590a0bb132ff93f8ab1b4700edc7855234486960bf7673473dde45f7ba23145afe0e4739e4423c29aa22124a2737c5
+DIST firefox-117.0.1-sco.xpi 490213 BLAKE2B a46899ff81bb521fd7b46afbc644b6e59ba74e3761a5684db3cb4667ddbce44ad5376256dcd5033fb6ab2563654ba594a02f11cafe63923deaa7e82e5056273d SHA512 eed95d20c9b260986284c185797efe7a98ef5aabd5d33bf71c8331e2b8cb18cf665f0ed8b1380943a9a0a7067a3935b8c11203e1b9c7ec8f30eaf3b055ba20c7
+DIST firefox-117.0.1-si.xpi 578783 BLAKE2B 1eb170aa347f30e2e88877bc4f99e26ba5c9ebdfc0d4f1b6dbbb964f8966ec5dcaf9597fefd8fa201f291ba7086e4d5db1e467701dd25501a4e9a0ec89a97484 SHA512 ed113e784f85d43fcaf02e74c80a02035e3c3a9f4a45590ce707116b00ec61745dc80475affea41e82a15e10a35ed90f9e1872388798532f0f7fb21ee4aab01c
+DIST firefox-117.0.1-sk.xpi 593728 BLAKE2B 2b7cf7cdeae1b58bc49844a3a467574c59e60c2301767b5e03c8c8e1418525faacdd7d833ae24dfa97937cfbe721e187facbea81867b16b952d4c70a0d9385d9 SHA512 19807928b1243b09c43f0495a47d94cb07c6d1ade5e413a64ce5ca35412d0026724e3117321b24c709fff9ec1abc38a4619623a4ff91a2cecf53b5aca5c97dd1
+DIST firefox-117.0.1-sl.xpi 565967 BLAKE2B 649f14a27eda7c6cc4b306036cc0a333f5dc9feb13e803479830880fdfbab4da4106c3455bbcce65784281c0823d3c5d75e2fa2f71863d29da9f8adbfb77ad42 SHA512 c29ccb34ad2698db99f2bf7499d3c294668c12b10fba5f02a2049bfed01b57f684a44b03dc5945acea78604dcbd256ff5a188e2a51ea9bef1173c8890afd8d0b
+DIST firefox-117.0.1-son.xpi 400542 BLAKE2B 6b3a042c000e2aa018e0e830e19aa9fc3059e429469fad760ac53d2b22b1d932075cc08d21edef8b50c9cc1152f383d5e14cf7893ea26faefa28668add8cd683 SHA512 576d4efc5a55cbe7f8f74f0f44b2b985d315884afee9365831002512e04b04bd4a0897097d4769cc4af7c3b2d3bba9b761cdb100787518df58151d64757abde9
+DIST firefox-117.0.1-sq.xpi 565650 BLAKE2B b726906c7f9021366919bec4a638989dd91bd0b541f602c0fcd8bf237e3c3e87488ea8cdc70cd1ee592b3db4076b30439b2e5e9719f4519a9276ad0fa4b0de6e SHA512 d6029c737f83be9fe621fa6af7e0767af07e6fe9dbf923bca773ccbe1b993e708ed5361d60b89ce2dc13dc1e078c3dcf49b6523bb7bd7cf7aaf8b43adaa5215e
+DIST firefox-117.0.1-sr.xpi 615339 BLAKE2B 1cf4181300ee42b55a04a59923e72023f00e106645f656586824dc5ac6df930174d3144ea5275450d2bd7e788cd069b6d2ec775efe7e410aac1bca66b95c37e1 SHA512 9a32a5449201c88bc4405108b5b27426961dfffe7ad366b3208a95b77812a80ee35a8e27cc956ad4732164f5a31a43b4f5dfdc81651d04c06a64333926f847e3
+DIST firefox-117.0.1-sv-SE.xpi 564229 BLAKE2B cb84a2f6b680939f2a5070ed7c745d156eddce911b5455c94c93b7d1865769f59d9547a7ef2587ec7f6b9333984d63830fb904f0ea7981f944b408a4e82a8429 SHA512 37e85842aa7cfe107295be7bb53fc26e89b346d8dc7438ff19e5a55973ac0118a668788b4a729d27f436f7d5341c7b50054247b82666d6cc5d9a8d4c97eb6f49
+DIST firefox-117.0.1-szl.xpi 504975 BLAKE2B 724406eb4a1010e5fb36cfd9bf2e574e1f8a792214dbccb8cfd194561b03a487e79ae8a406f46217ffabe2983d8730ecd0251fba8e7fff024684481b5b807695 SHA512 66fd575e656f44329988366e0b2aca56d9f33a3fa57d94a44e3dbe276653436dff49b8949a86944acd84374f91925acf80de7ea59637bf768edcf9c128bb2a77
+DIST firefox-117.0.1-ta.xpi 488410 BLAKE2B b1521191a6586dc105960aea7810ed2840ac19f25548253d11a8f7e4ee6142bf8fc27f7074bb67b02f2c39f62e42d26207e193762bff0be0302d8e9b1317534e SHA512 3bb33413b2af42d1a88418b4cf8992f5bb48f37eb6a5b4be9de2973d8e50b1226a22c0343f53eab00fc37706f00a20c020a5cf3b8404872dba121162bbc9fe40
+DIST firefox-117.0.1-te.xpi 536503 BLAKE2B f011ad982318e2e73ba5002c3500f8d0a901fc5c036eecbc3e934c3bfce0b9639e00ce47e9a226cb43e8dfeee1d5c3e21757825d387fecf6fc8826fc5082d219 SHA512 0987a70b2575c006ef4fddf5a3c52c8064031d934d1890ef9b731b2eb1302abd2a3e27a39ef1b94998d60820c0772f3576fdf1c0e9c6bf59749d4c9ae0ccd823
+DIST firefox-117.0.1-th.xpi 635861 BLAKE2B 9d35892f1276e3a455347bf03b80686e10a5315c51fdd2183eba7b717ab1a61f44bdc8e717d932c2224a44f0aaf1abf67e93c422bc33b10d1141da51e04f5644 SHA512 02d5c139556ed9bc745db688473da5327ddff24ff90487bdeebb025bf7f4f9dece032c1bb14cb36bad0598b14c5c63cb7a84bcf4fd6c3811d1dfd22d935b18c2
+DIST firefox-117.0.1-tl.xpi 512498 BLAKE2B 6e41e677985506ece451c5b0762aa0638e113bbaf774256a52e67d2f565ab5962f2573af11324a08371fb8f14e57b0b0f79f76b14873c27bfd5a7742c583af6b SHA512 9fcb5dbb7d1b6915763a75e3a97609076b4bc459a0018be664196e00a2a5670db9a8ec66e22241df3831adc6b72922bcf51dae8b65743ed5e2bf23331f7577bc
+DIST firefox-117.0.1-tr.xpi 575940 BLAKE2B 118495998cf20b66db33f517e83c9072eb7f95450f8b3f521ed54306553bd497542739837129fbf6b772187d04f3fbad7d7a91af0ef0a4a3787e5ca325e41705 SHA512 3573abf195d43ffd1d8baa02baf804c47bf0a7ca904a346513e657fb4387947c6b2e1fbdf20145895e77d7c97af4829a706d53d4adcfbb276f79effa3f782e50
+DIST firefox-117.0.1-trs.xpi 484139 BLAKE2B c5f70d5ab2ac8b2c3e6dd37849577bf0ab383624015b1678414782175b6d7af4a9e974e166a389386c37b785e6a9872c159a47a6a8d7b9dbbdd673c9741e14f9 SHA512 a2abede6cade3000fd0b04a320b5cf103d999610c006ac1c44b53fa3a88cfea895be8731206f6863eb4903f747242a734cf2f3e42b6d3595bb0e9f6f3c4631dd
+DIST firefox-117.0.1-uk.xpi 649509 BLAKE2B 44b7d3bcd4774ce4c547e9e16e26e26fa74a51b294b9a087b4b7d14773a0af50a0d332ed49f8e7f1d6bcf4b92a2fd7137087fb9a91c8daa24e25c359a1f80d20 SHA512 1e09f9887b212de19a439ae26a405a44cfc806c88c4c7fd3b72a6e497818491de9aca1188ac171ba3c13542e3341846b92f859fb39d68ae97066a00116dd8a34
+DIST firefox-117.0.1-ur.xpi 539405 BLAKE2B a566551e8b4ec6168abd3ce2e4944ce970187df9bd8aa4948fa3815d03684e72e6cb09d8263cac4fde1e657b494d69b0eaea62212bf2af886731c9b188d1f364 SHA512 e8688bb3c3d60dd7789c20e43f4ffe144e0a29f1eb1da0cef23b29f78b474c415f42dd392e8037f2e78a43adca2af3b2de3d8c8aa10cdf5dfa64fbcee003124f
+DIST firefox-117.0.1-uz.xpi 461435 BLAKE2B 8327cad84645658a4ae73d1883fe8e14af0a29070cba518207e1748d681afecdee665947a674d6f6f7a427b44d2b4929766296aab59a7f4ffcbec23b97da4a0a SHA512 cdea003006ae45be1832aea3ceb9c12e840f343411caf55480e7b663601ab302235dbe390e7029dd178be3b15c797d51a505aa62d04007551d7cc0962a606285
+DIST firefox-117.0.1-vi.xpi 599834 BLAKE2B 0733b21e6bb8adfb64914468eb0ac42bf14c789250f9176500645d230821dc191d4c679ed88e912bd1b83292a32b18585d0202a732280bfda6535be902d46711 SHA512 1dda8825f70a5e8c6ed93fdff4ed6f37058edde2a551cce6fbb15400a29b13ffcb3f2fb6f0350d84858795912b9076506fd068454a515a80aa066685c86ee75f
+DIST firefox-117.0.1-xh.xpi 401978 BLAKE2B bcb660965e3987d114909769a231d39cb8f51c27652a1d5c115e97c85a3325c45852419c936523ae5c4ef1d88ee334ec3a5b7618a206f9514ba43a230ab5e5f0 SHA512 a36b9e5fd6758e18fe2c400a43ea9b78b913eddc7e030caf907deffbcdbf9537e5d4f747321c7bb06893ca95b4386161d8281930e315f0edd886837f5c52a556
+DIST firefox-117.0.1-zh-CN.xpi 599263 BLAKE2B 97fa0aaf78fb5ae47f55a738da58a42ea3969beacfd955342729e719d88ba35d7cad8d03b92aa2f66fa863499661043e43cae0c0449f89517b4f39e602033a28 SHA512 675bd545974137c50415989ac8dd3ad6ee941e83d7ad603404c67819a66505ff9ccf01db544db65bf7a64cc2dfd11fc4bd389552a421cd0e3545abc55e00fb64
+DIST firefox-117.0.1-zh-TW.xpi 601287 BLAKE2B e0d429281429671f6998b5a6bd119937c52ca4c9e11d64b60e6f73a0b7fa8800336a29055944c4ccb05eaeb7862fc13923a4ebdc84543fd96992f4ae2b0b5bc6 SHA512 89f6f72da94660d83ddf4ba71803bd4f520e1dea5651172c97ca007bbb681e7330648f5afebd1d5f9be37992da4d9eaade750bff63918dcdc05698193940f86d
+DIST firefox-117.0.1.source.tar.xz 509601584 BLAKE2B c618942209f60550ef5bd3db4a3a150fbe8993d2a40ba9b1ece3e647e4fcdd82639569f354f87b488b47781d52d21a158a25906c88fbaf86ddb57b5973f8ace6 SHA512 1583b0ad3b3b17c59bfbfb3e416074766327d0b926ef4f6c6b1e3b2d7cf6a18dec592b7d17fab9493ba1506f3540a02277096d28616dd29b6e7b9e93905f2071
DIST firefox-117.0.source.tar.xz 505712192 BLAKE2B 748e7ea88f493d449e52e94a268190f9beca671aebba057f7089897dee51d3e8d45c6f9721d38891c787b401cb6b32128d3b3b25073e17326c8fca80fe07d015 SHA512 4d2afa9bac9d0724fb3568f77a8103d75e90635802f47f2023127de07d70ff145fb0c19e6a4fd37bfe93a7bbb1ec506955c0d4fe3b07057561ebea82b8d6c8d2
EBUILD firefox-102.15.0.ebuild 37115 BLAKE2B 4faa604c32aa8afdd09901b8df1b0e2ead85b23d2549ec29ae6afa87d82fcd358ad55c9a3553548ea4b74666e8e7842d6820971860acf91df2b7db9c64a600aa SHA512 dc290bc6527bd082cb3810ceb5d438db0f3a42cd267c8505ec72b3db1a5f6e501b1080224290367cdd37f5bd1ae6c342126db69cc66286732ad4deffe4b15359
+EBUILD firefox-102.15.1.ebuild 37118 BLAKE2B b4b1ae52123dbda679687f01e1655302c6595eb65a068ab8a362c4d4c6f7f5ed8cb4706bfb86259c83019c4460cf7e2eaea5c3a8ac6a6b692355ece065349dc9 SHA512 2feeeaf7cba5876a44598927717f75c2e5ec4b91e3d1b2ec0cf1f0f67591f099cc5e09a66835307abc0990b167b41f19f8604e22b6ce3b30cc4ce631677835df
EBUILD firefox-115.2.0.ebuild 40749 BLAKE2B 132c785d15d3a0f8549bca00ae4fea0aacadd17b7dc8950c01bc90c301565344d1c0a832797637aa1a20ee70be89e936e2d6ef77fa44db1cd14949f872c619b4 SHA512 65a8342a6941263ebed6101678ded9c12282e97693b7bb584a2be405e0541eb2a2e61b32db168da598f0cf016ee9cef032350b2bde957c68c303fd69ae4f440c
+EBUILD firefox-115.2.1.ebuild 40749 BLAKE2B 132c785d15d3a0f8549bca00ae4fea0aacadd17b7dc8950c01bc90c301565344d1c0a832797637aa1a20ee70be89e936e2d6ef77fa44db1cd14949f872c619b4 SHA512 65a8342a6941263ebed6101678ded9c12282e97693b7bb584a2be405e0541eb2a2e61b32db168da598f0cf016ee9cef032350b2bde957c68c303fd69ae4f440c
+EBUILD firefox-117.0.1.ebuild 43979 BLAKE2B 1192233496b2611ca6972b1cf65846b73fef5df7c90f6dba74ac4d10c668af5e80e09b8aa0188875ba3f7830765957076760993589dc970479305c599d0aa4f0 SHA512 408087909b79d644185de61f220949585909699662d5c44834b0544806153596335987dac008a632bc451325828c98343aa406d626a221aa6d1ed3cd181d056b
EBUILD firefox-117.0.ebuild 43979 BLAKE2B 1192233496b2611ca6972b1cf65846b73fef5df7c90f6dba74ac4d10c668af5e80e09b8aa0188875ba3f7830765957076760993589dc970479305c599d0aa4f0 SHA512 408087909b79d644185de61f220949585909699662d5c44834b0544806153596335987dac008a632bc451325828c98343aa406d626a221aa6d1ed3cd181d056b
MISC metadata.xml 2658 BLAKE2B 4e52ee338d13627658328468081959897f9ffba3d0729a03975f756ed95e2649e21a40de4933c0a2bdd9c1d4dc6cea973f503a3d448f49f73ec3eafb933f6845 SHA512 1062c2e2a49757a8e3b027db5d425113ce6e7bdba630786109caedbb3717c7600094c7bb3fbc83e1887d96e464f0dc48bdbcff16d396ea5481f36040e0e4c70d
diff --git a/www-client/firefox/firefox-102.15.1.ebuild b/www-client/firefox/firefox-102.15.1.ebuild
new file mode 100644
index 000000000000..19d46ff46be3
--- /dev/null
+++ b/www-client/firefox/firefox-102.15.1.ebuild
@@ -0,0 +1,1290 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-102esr-patches-13.tar.xz"
+
+LLVM_MAX_SLOT=16
+
+PYTHON_COMPAT=( python3_{10..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 optfeature 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="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 )
+ wayland? ( dbus )
+ 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}
+ || (
+ (
+ sys-devel/clang:16
+ sys-devel/llvm:16
+ clang? (
+ || (
+ sys-devel/lld:16
+ sys-devel/mold
+ )
+ virtual/rust:0/llvm-16
+ pgo? ( =sys-libs/compiler-rt-sanitizers-16*[profile] )
+ )
+ )
+ (
+ sys-devel/clang:15
+ sys-devel/llvm:15
+ clang? (
+ sys-devel/lld:15
+ virtual/rust:0/llvm-15
+ pgo? ( =sys-libs/compiler-rt-sanitizers-15*[profile] )
+ )
+ )
+ (
+ sys-devel/clang:14
+ sys-devel/llvm:14
+ clang? (
+ sys-devel/lld:14
+ virtual/rust:0/llvm-14
+ pgo? ( =sys-libs/compiler-rt-sanitizers-14*[profile] )
+ )
+ )
+ )
+ !clang? ( virtual/rust )
+ app-arch/unzip
+ app-arch/zip
+ >=dev-util/cbindgen-0.24.3
+ net-libs/nodejs
+ virtual/pkgconfig
+ amd64? ( >=dev-lang/nasm-2.14 )
+ x86? ( >=dev-lang/nasm-2.14 )"
+
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ dev-libs/expat
+ dev-libs/glib:2
+ dev-libs/libffi:=
+ >=dev-libs/nss-3.79.2
+ >=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 )
+ pulseaudio? (
+ || (
+ media-sound/pulseaudio
+ >=media-sound/apulse-0.1.12-r4
+ )
+ )
+ 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.1.12: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] )"
+
+DEPEND="${COMMON_DEPEND}
+ x11-base/xorg-proto
+ 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 ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then
+ einfo "virtual/rust:0/llvm-${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}*[profile]" ; then
+ einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] 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() {
+ 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 crate checksums where we have applied patches
+ moz_clear_vendor_checksums bindgen
+
+ # Create build dir
+ BUILD_DIR="${WORKDIR}/${PN}_build"
+ mkdir -p "${BUILD_DIR}" || die
+
+ # Write API keys to disk
+ echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+ echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die
+ echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # Show flags set at the beginning
+ einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+ einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+ einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+ einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+ einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+ local have_switched_compiler=
+ if use clang; then
+ # Force clang
+ einfo "Enforcing the use of clang due to USE=clang ..."
+ if tc-is-gcc; then
+ have_switched_compiler=yes
+ fi
+ 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)"
+ export AS="$(tc-getCC) -c"
+ tc-export CC CXX LD AR AS 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-lto
+
+ 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
+
+ if use elibc_musl && use arm64 ; then
+ mozconfig_add_options_ac 'elf-hack is broken when using musl/arm64' --disable-elf-hack
+ 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
+ export 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}-esr.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
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "desktop notifications" x11-libs/libnotify
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+}
diff --git a/www-client/firefox/firefox-115.2.1.ebuild b/www-client/firefox/firefox-115.2.1.ebuild
new file mode 100644
index 000000000000..b923877b390d
--- /dev/null
+++ b/www-client/firefox/firefox-115.2.1.ebuild
@@ -0,0 +1,1407 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-115esr-patches-06.tar.xz"
+
+LLVM_MAX_SLOT=16
+
+PYTHON_COMPAT=( python3_{10..11} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+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 optfeature 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/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 ~riscv ~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 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 +X"
+
+# Firefox-only IUSE
+IUSE+=" geckodriver +gmp-autoupdate screencast"
+
+REQUIRED_USE="|| ( X wayland )
+ debug? ( !system-av1 )
+ pgo? ( lto )
+ wifi? ( dbus )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+ !www-client/firefox:rapid
+ screencast? ( media-video/pipewire:= )
+ selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+ || (
+ (
+ sys-devel/clang:16
+ sys-devel/llvm:16
+ clang? (
+ sys-devel/lld:16
+ virtual/rust:0/llvm-16
+ pgo? ( =sys-libs/compiler-rt-sanitizers-16*[profile] )
+ )
+ )
+ (
+ sys-devel/clang:15
+ sys-devel/llvm:15
+ clang? (
+ sys-devel/lld:15
+ virtual/rust:0/llvm-15
+ pgo? ( =sys-libs/compiler-rt-sanitizers-15*[profile] )
+ )
+ )
+ )
+ app-alternatives/awk
+ app-arch/unzip
+ app-arch/zip
+ >=dev-util/cbindgen-0.24.3
+ net-libs/nodejs
+ virtual/pkgconfig
+ !clang? ( >=virtual/rust-1.65 )
+ amd64? ( >=dev-lang/nasm-2.14 )
+ x86? ( >=dev-lang/nasm-2.14 )
+ pgo? (
+ X? (
+ sys-devel/gettext
+ x11-base/xorg-server[xvfb]
+ x11-apps/xhost
+ )
+ !X? (
+ >=gui-libs/wlroots-0.15.1-r1[tinywl]
+ x11-misc/xkeyboard-config
+ )
+ )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ dev-libs/expat
+ dev-libs/glib:2
+ dev-libs/libffi:=
+ >=dev-libs/nss-3.90
+ >=dev-libs/nspr-4.35
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ media-libs/freetype
+ media-libs/mesa
+ media-video/ffmpeg
+ sys-libs/zlib
+ virtual/freedesktop-icon-theme
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf
+ x11-libs/pango
+ x11-libs/pixman
+ dbus? (
+ dev-libs/dbus-glib
+ sys-apps/dbus
+ )
+ jack? ( virtual/jack )
+ pulseaudio? (
+ || (
+ media-libs/libpulse
+ >=media-sound/apulse-0.1.12-r4[sdk]
+ )
+ )
+ libproxy? ( net-libs/libproxy )
+ selinux? ( sec-policy/selinux-mozilla )
+ sndio? ( >=media-sound/sndio-1.8.0-r1 )
+ screencast? ( media-video/pipewire:= )
+ 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-73.1:= )
+ system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
+ system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] )
+ system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+ system-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/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}
+ hwaccel? (
+ media-video/libva-utils
+ sys-apps/pciutils
+ )
+ jack? ( virtual/jack )
+ openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libICE
+ x11-libs/libSM
+ )"
+
+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 && ! tc-ld-is-mold ; 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 ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then
+ einfo "virtual/rust:0/llvm-${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}*[profile]" ; then
+ einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] 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+=( fur )
+MOZ_LANGS+=( gn )
+MOZ_LANGS+=( gu-IN )
+MOZ_LANGS+=( hi-IN )
+MOZ_LANGS+=( hy-AM )
+MOZ_LANGS+=( ia )
+MOZ_LANGS+=( km )
+MOZ_LANGS+=( kn )
+MOZ_LANGS+=( lij )
+MOZ_LANGS+=( mk )
+MOZ_LANGS+=( mr )
+MOZ_LANGS+=( my )
+MOZ_LANGS+=( ne-NP )
+MOZ_LANGS+=( oc )
+MOZ_LANGS+=( sc )
+MOZ_LANGS+=( sco )
+MOZ_LANGS+=( si )
+MOZ_LANGS+=( 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}"
+}
+
+# This is a straight copypaste from toolchain-funcs.eclass's 'tc-ld-is-lld', and is temporarily
+# placed here until toolchain-funcs.eclass gets an official support for mold linker.
+# Please see:
+# https://github.com/gentoo/gentoo/pull/28366 ||
+# https://github.com/gentoo/gentoo/pull/28355
+tc-ld-is-mold() {
+ local out
+
+ # Ensure ld output is in English.
+ local -x LC_ALL=C
+
+ # First check the linker directly.
+ out=$($(tc-getLD "$@") --version 2>&1)
+ if [[ ${out} == *"mold"* ]] ; then
+ return 0
+ fi
+
+ # Then see if they're selecting mold via compiler flags.
+ # Note: We're assuming they're using LDFLAGS to hold the
+ # options and not CFLAGS/CXXFLAGS.
+ local base="${T}/test-tc-linker"
+ cat <<-EOF > "${base}.c"
+ int main() { return 0; }
+ EOF
+ out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1)
+ rm -f "${base}"*
+ if [[ ${out} == *"mold"* ]] ; then
+ return 0
+ fi
+
+ # No mold here!
+ return 1
+}
+
+virtwl() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+ [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset"
+ tinywl -h >/dev/null || die 'tinywl -h failed'
+
+ # TODO: don't run addpredict in utility function. WLR_RENDERER=pixman doesn't work
+ addpredict /dev/dri
+ local VIRTWL VIRTWL_PID
+ coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; }
+ local -x WAYLAND_DISPLAY
+ read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+ debug-print "${FUNCNAME}: $@"
+ "$@"
+ local r=$?
+
+ [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+ exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+ return $r
+}
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+ if use pgo ; then
+ if ! has usersandbox $FEATURES ; then
+ die "You must enable usersandbox as X server can not run as root!"
+ fi
+ fi
+
+ # Ensure we have enough disk space to compile
+ if use pgo || 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 && tc-ld-is-lld ; 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
+ # Update 105.0: "/proc/self/oom_score_adj" isn't enough anymore with pgo, but not sure
+ # whether that's due to better OOM handling by Firefox (bmo#1771712), or portage
+ # (PORTAGE_SCHEDULING_POLICY) update...
+ addpredict /proc
+
+ # May need a wider addpredict when using wayland+pgo.
+ addpredict /dev/dri
+
+ # 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 ppc64; then
+ rm -v "${WORKDIR}"/firefox-patches/*ppc64*.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
+
+ # Create build dir
+ BUILD_DIR="${WORKDIR}/${PN}_build"
+ mkdir -p "${BUILD_DIR}" || die
+
+ # Write API keys to disk
+ echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+ echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die
+ echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # Show flags set at the beginning
+ einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+ einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+ einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+ einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+ einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+ local have_switched_compiler=
+ if use clang; then
+ # Force clang
+ einfo "Enforcing the use of clang due to USE=clang ..."
+
+ local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
+ [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
+ [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+ if tc-is-gcc; then
+ have_switched_compiler=yes
+ fi
+
+ AR=llvm-ar
+ CC=${CHOST}-clang-${version_clang}
+ CXX=${CHOST}-clang++-${version_clang}
+ NM=llvm-nm
+ RANLIB=llvm-ranlib
+
+ elif ! use clang && ! tc-is-gcc ; then
+ # Force gcc
+ have_switched_compiler=yes
+ einfo "Enforcing the use of gcc due to USE=-clang ..."
+ AR=gcc-ar
+ CC=${CHOST}-gcc
+ CXX=${CHOST}-g++
+ NM=gcc-nm
+ RANLIB=gcc-ranlib
+ fi
+
+ if [[ -n "${have_switched_compiler}" ]] ; then
+ # Because we switched active compiler we have to ensure
+ # that no unsupported flags are set
+ strip-unsupported-flags
+ fi
+
+ # Ensure we use correct toolchain,
+ # AS is used in a non-standard way by upstream, #bmo1654031
+ export HOST_CC="$(tc-getBUILD_CC)"
+ export HOST_CXX="$(tc-getBUILD_CXX)"
+ export AS="$(tc-getCC) -c"
+ tc-export CC CXX LD AR AS 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
+ mozconfig_add_options_ac '' --enable-project=browser
+
+ # Set Gentoo defaults
+ 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-tests \
+ --disable-updater \
+ --disable-wmf \
+ --enable-legacy-profile-creation \
+ --enable-negotiateauth \
+ --enable-new-pass-manager \
+ --enable-official-branding \
+ --enable-release \
+ --enable-system-ffi \
+ --enable-system-pixman \
+ --enable-system-policies \
+ --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.
+ # bug 833001, bug 903411#c8
+ if use ppc64 || use riscv; then
+ mozconfig_add_options_ac '' --disable-sandbox
+ else
+ mozconfig_add_options_ac '' --enable-sandbox
+ fi
+
+ # Enable JIT on riscv64 explicitly
+ # Can be removed once upstream enable it by default in the future.
+ use riscv && mozconfig_add_options_ac 'Enable JIT for RISC-V 64' --enable-jit
+
+ if [[ -s "${S}/api-google.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+ else
+ einfo "Building without Google API key ..."
+ fi
+
+ if [[ -s "${S}/api-location.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-location-service-api-keyfile="${S}/api-location.key"
+ else
+ einfo "Building without Location API key ..."
+ fi
+
+ if [[ -s "${S}/api-mozilla.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+ else
+ einfo "Building without Mozilla API key ..."
+ fi
+
+ mozconfig_use_with system-av1
+ mozconfig_use_with system-harfbuzz
+ mozconfig_use_with system-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 or mold when using clang.
+ if tc-ld-is-mold ; then
+ mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
+ else
+ mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld
+ fi
+
+ mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+ else
+ # ThinLTO is currently broken, see bmo#1644409.
+ # mold does not support gcc+lto combination.
+ mozconfig_add_options_ac '+lto' --enable-lto=full
+ mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd
+ fi
+
+ 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
+ # lld is upstream's default
+ if tc-ld-is-mold ; then
+ mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
+ else
+ mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld
+ fi
+
+ else
+ if tc-ld-is-mold ; then
+ mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
+ else
+ mozconfig_add_options_ac "linker is set to bfd due to USE=-clang" --enable-linker=bfd
+ fi
+ fi
+ fi
+
+ # LTO flag was handled via configure
+ filter-lto
+
+ mozconfig_use_enable debug
+ if use debug ; then
+ mozconfig_add_options_ac '+debug' --disable-optimize
+ mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+ else
+ mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing
+
+ if is-flag '-g*' ; then
+ if use clang ; then
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
+ else
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols
+ fi
+ else
+ mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols
+ fi
+
+ if is-flag '-O0' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0
+ elif is-flag '-O4' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4
+ elif is-flag '-O3' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3
+ elif is-flag '-O1' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1
+ elif is-flag '-Os' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os
+ else
+ mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2
+ fi
+ fi
+
+ # Debug flag was handled via configure
+ filter-flags '-g*'
+
+ # Optimization flag was handled via configure
+ filter-flags '-O*'
+
+ # 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
+
+ if use elibc_musl && use arm64 ; then
+ mozconfig_add_options_ac 'elf-hack is broken when using musl/arm64' --disable-elf-hack
+ 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
+ export 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 tc-ld-is-mold && use lto; then
+ # increase ulimit with mold+lto, bugs #892641, #907485
+ if ! ulimit -n 16384 1>/dev/null 2>&1 ; then
+ ewarn "Unable to modify ulimits - building with mold+lto might fail due to low ulimit -n resources."
+ ewarn "Please see bugs #892641 & #907485."
+ else
+ ulimit -n 16384
+ fi
+ fi
+
+ if use pgo; then
+ # Reset and cleanup environment variables used by GNOME/XDG
+ gnome2_environment_reset
+
+ addpredict /root
+
+ if ! use X; then
+ virtx_cmd=virtwl
+ else
+ virtx_cmd=virtx
+ fi
+ fi
+
+ if ! use X; then
+ local -x GDK_BACKEND=wayland
+ else
+ local -x GDK_BACKEND=x11
+ fi
+
+ ${virtx_cmd} ./mach build --verbose || die
+}
+
+src_install() {
+ # xpcshell is getting called during install
+ pax-mark m \
+ "${BUILD_DIR}"/dist/bin/xpcshell \
+ "${BUILD_DIR}"/dist/bin/${PN} \
+ "${BUILD_DIR}"/dist/bin/plugin-container
+
+ DESTDIR="${D}" ./mach install || die
+
+ # Upstream cannot ship symlink but we can (bmo#658850)
+ rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+ dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+ # Don't install llvm-symbolizer from 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}-esr.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
+
+ if [[ -z "${REPLACING_VERSIONS}" ]] ; then
+ # New install; Tell user that DoH is disabled by default
+ show_doh_information=yes
+ show_normandy_information=yes
+ 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
+
+ # 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
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "desktop notifications" x11-libs/libnotify
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+
+ if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+ optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver
+ fi
+
+ if ! has_version "sys-libs/glibc"; then
+ elog
+ elog "glibc not found! You won't be able to play DRM content."
+ elog "See Gentoo bug #910309 or upstream bug #1843683."
+ elog
+ fi
+}
diff --git a/www-client/firefox/firefox-117.0.1.ebuild b/www-client/firefox/firefox-117.0.1.ebuild
new file mode 100644
index 000000000000..c333fad41851
--- /dev/null
+++ b/www-client/firefox/firefox-117.0.1.ebuild
@@ -0,0 +1,1488 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-117-patches-04.tar.xz"
+
+LLVM_MAX_SLOT=16
+
+PYTHON_COMPAT=( python3_{10..11} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+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 optfeature 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/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 ~riscv ~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 +jumbo-build 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+=" +telemetry valgrind wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" geckodriver +gmp-autoupdate screencast"
+
+REQUIRED_USE="|| ( X wayland )
+ debug? ( !system-av1 )
+ pgo? ( lto )
+ wifi? ( dbus )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+ !www-client/firefox:esr
+ screencast? ( media-video/pipewire:= )
+ selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+ || (
+ (
+ sys-devel/clang:16
+ sys-devel/llvm:16
+ clang? (
+ sys-devel/lld:16
+ virtual/rust:0/llvm-16
+ pgo? ( =sys-libs/compiler-rt-sanitizers-16*[profile] )
+ )
+ )
+ (
+ sys-devel/clang:15
+ sys-devel/llvm:15
+ clang? (
+ sys-devel/lld:15
+ virtual/rust:0/llvm-15
+ pgo? ( =sys-libs/compiler-rt-sanitizers-15*[profile] )
+ )
+ )
+ )
+ app-alternatives/awk
+ app-arch/unzip
+ app-arch/zip
+ >=dev-util/cbindgen-0.24.3
+ net-libs/nodejs
+ virtual/pkgconfig
+ !clang? ( >=virtual/rust-1.65 )
+ amd64? ( >=dev-lang/nasm-2.14 )
+ x86? ( >=dev-lang/nasm-2.14 )
+ pgo? (
+ X? (
+ sys-devel/gettext
+ x11-base/xorg-server[xvfb]
+ x11-apps/xhost
+ )
+ !X? (
+ >=gui-libs/wlroots-0.15.1-r1[tinywl]
+ x11-misc/xkeyboard-config
+ )
+ )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ dev-libs/expat
+ dev-libs/glib:2
+ dev-libs/libffi:=
+ >=dev-libs/nss-3.92
+ >=dev-libs/nspr-4.35
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ media-libs/freetype
+ media-libs/mesa
+ media-video/ffmpeg
+ sys-libs/zlib
+ virtual/freedesktop-icon-theme
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf
+ x11-libs/pango
+ x11-libs/pixman
+ dbus? (
+ dev-libs/dbus-glib
+ sys-apps/dbus
+ )
+ jack? ( virtual/jack )
+ pulseaudio? (
+ || (
+ media-libs/libpulse
+ >=media-sound/apulse-0.1.12-r4[sdk]
+ )
+ )
+ libproxy? ( net-libs/libproxy )
+ selinux? ( sec-policy/selinux-mozilla )
+ sndio? ( >=media-sound/sndio-1.8.0-r1 )
+ screencast? ( media-video/pipewire:= )
+ 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-73.1:= )
+ system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
+ system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] )
+ system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+ system-png? ( >=media-libs/libpng-1.6.35:0=[apng] )
+ system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+ valgrind? ( dev-util/valgrind )
+ wayland? (
+ >=media-libs/libepoxy-1.5.10-r1
+ x11-libs/gtk+:3[wayland]
+ 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}
+ hwaccel? (
+ media-video/libva-utils
+ sys-apps/pciutils
+ )
+ jack? ( virtual/jack )
+ openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libICE
+ x11-libs/libSM
+ )"
+
+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 && ! tc-ld-is-mold ; 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 ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then
+ einfo "virtual/rust:0/llvm-${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}*[profile]" ; then
+ einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] 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+=( fur )
+MOZ_LANGS+=( gn )
+MOZ_LANGS+=( gu-IN )
+MOZ_LANGS+=( hi-IN )
+MOZ_LANGS+=( hy-AM )
+MOZ_LANGS+=( ia )
+MOZ_LANGS+=( km )
+MOZ_LANGS+=( kn )
+MOZ_LANGS+=( lij )
+MOZ_LANGS+=( mk )
+MOZ_LANGS+=( mr )
+MOZ_LANGS+=( my )
+MOZ_LANGS+=( ne-NP )
+MOZ_LANGS+=( oc )
+MOZ_LANGS+=( sc )
+MOZ_LANGS+=( sco )
+MOZ_LANGS+=( si )
+MOZ_LANGS+=( 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}"
+}
+
+# This is a straight copypaste from toolchain-funcs.eclass's 'tc-ld-is-lld', and is temporarily
+# placed here until toolchain-funcs.eclass gets an official support for mold linker.
+# Please see:
+# https://github.com/gentoo/gentoo/pull/28366 ||
+# https://github.com/gentoo/gentoo/pull/28355
+tc-ld-is-mold() {
+ local out
+
+ # Ensure ld output is in English.
+ local -x LC_ALL=C
+
+ # First check the linker directly.
+ out=$($(tc-getLD "$@") --version 2>&1)
+ if [[ ${out} == *"mold"* ]] ; then
+ return 0
+ fi
+
+ # Then see if they're selecting mold via compiler flags.
+ # Note: We're assuming they're using LDFLAGS to hold the
+ # options and not CFLAGS/CXXFLAGS.
+ local base="${T}/test-tc-linker"
+ cat <<-EOF > "${base}.c"
+ int main() { return 0; }
+ EOF
+ out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1)
+ rm -f "${base}"*
+ if [[ ${out} == *"mold"* ]] ; then
+ return 0
+ fi
+
+ # No mold here!
+ return 1
+}
+
+virtwl() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+ [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset"
+ tinywl -h >/dev/null || die 'tinywl -h failed'
+
+ # TODO: don't run addpredict in utility function. WLR_RENDERER=pixman doesn't work
+ addpredict /dev/dri
+ local VIRTWL VIRTWL_PID
+ coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; }
+ local -x WAYLAND_DISPLAY
+ read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+ debug-print "${FUNCNAME}: $@"
+ "$@"
+ local r=$?
+
+ [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+ exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+ return $r
+}
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+ if use pgo ; then
+ if ! has usersandbox $FEATURES ; then
+ die "You must enable usersandbox as X server can not run as root!"
+ fi
+ fi
+
+ # Ensure we have enough disk space to compile
+ if use pgo || 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 && tc-ld-is-lld ; 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
+ # Update 105.0: "/proc/self/oom_score_adj" isn't enough anymore with pgo, but not sure
+ # whether that's due to better OOM handling by Firefox (bmo#1771712), or portage
+ # (PORTAGE_SCHEDULING_POLICY) update...
+ addpredict /proc
+
+ # May need a wider addpredict when using wayland+pgo.
+ addpredict /dev/dri
+
+ # 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 ppc64; then
+ rm -v "${WORKDIR}"/firefox-patches/*ppc64*.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
+
+ # Clear checksums from cargo crates we've manually patched.
+ # moz_clear_vendor_checksums xyz
+ moz_clear_vendor_checksums proc-macro2
+
+ # Respect choice for "jumbo-build"
+ # Changing the value for FILES_PER_UNIFIED_FILE may not work, see #905431
+ if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then
+ local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16}
+ elog ""
+ elog "jumbo-build defaults modified to ${my_files_per_unified_file}."
+ elog "if you get a build failure, try undefining FILES_PER_UNIFIED_FILE,"
+ elog "if that fails try -jumbo-build before opening a bug report."
+ elog ""
+
+ sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" python/mozbuild/mozbuild/frontend/data.py ||
+ die "Failed to adjust FILES_PER_UNIFIED_FILE in python/mozbuild/mozbuild/frontend/data.py"
+ sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE = "${my_files_per_unified_file}"/" js/src/moz.build ||
+ die "Failed to adjust FILES_PER_UNIFIED_FILE in js/src/moz.build"
+ fi
+
+ # Create build dir
+ BUILD_DIR="${WORKDIR}/${PN}_build"
+ mkdir -p "${BUILD_DIR}" || die
+
+ # Write API keys to disk
+ echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+ echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die
+ echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # Show flags set at the beginning
+ einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+ einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+ einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+ einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+ einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+ local have_switched_compiler=
+ if use clang; then
+ # Force clang
+ einfo "Enforcing the use of clang due to USE=clang ..."
+
+ local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
+ [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
+ [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+ if tc-is-gcc; then
+ have_switched_compiler=yes
+ fi
+
+ AR=llvm-ar
+ CC=${CHOST}-clang-${version_clang}
+ CXX=${CHOST}-clang++-${version_clang}
+ NM=llvm-nm
+ RANLIB=llvm-ranlib
+ elif ! use clang && ! tc-is-gcc ; then
+ # Force gcc
+ have_switched_compiler=yes
+ einfo "Enforcing the use of gcc due to USE=-clang ..."
+ AR=gcc-ar
+ CC=${CHOST}-gcc
+ CXX=${CHOST}-g++
+ NM=gcc-nm
+ RANLIB=gcc-ranlib
+ fi
+
+ if [[ -n "${have_switched_compiler}" ]] ; then
+ # Because we switched active compiler we have to ensure
+ # that no unsupported flags are set
+ strip-unsupported-flags
+ fi
+
+ # Ensure we use correct toolchain,
+ # AS is used in a non-standard way by upstream, #bmo1654031
+ export HOST_CC="$(tc-getBUILD_CC)"
+ export HOST_CXX="$(tc-getBUILD_CXX)"
+ export AS="$(tc-getCC) -c"
+
+ # Configuration tests expect llvm-readelf output, bug 913130
+ READELF="llvm-readelf"
+
+ tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
+
+ # Pass the correct toolchain paths through cbindgen
+ if tc-is-cross-compiler ; then
+ export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}"
+ fi
+
+ # Set MOZILLA_FIVE_HOME
+ export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+ # python/mach/mach/mixin/process.py fails to detect SHELL
+ export SHELL="${EPREFIX}/bin/bash"
+
+ # Set state path
+ export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+ # Set MOZCONFIG
+ export MOZCONFIG="${S}/.mozconfig"
+
+ # Initialize MOZCONFIG
+ mozconfig_add_options_ac '' --enable-application=browser
+ mozconfig_add_options_ac '' --enable-project=browser
+
+ # Set Gentoo defaults
+ if use telemetry; then
+ export MOZILLA_OFFICIAL=1
+ fi
+
+ mozconfig_add_options_ac 'Gentoo default' \
+ --allow-addon-sideload \
+ --disable-cargo-incremental \
+ --disable-crashreporter \
+ --disable-gpsd \
+ --disable-install-strip \
+ --disable-legacy-profile-creation \
+ --disable-parental-controls \
+ --disable-strip \
+ --disable-tests \
+ --disable-updater \
+ --disable-wasm-function-references \
+ --disable-wasm-gc \
+ --disable-wmf \
+ --enable-negotiateauth \
+ --enable-new-pass-manager \
+ --enable-official-branding \
+ --enable-release \
+ --enable-system-ffi \
+ --enable-system-pixman \
+ --enable-system-policies \
+ --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.
+ # bug 833001, bug 903411#c8
+ if use ppc64 || use riscv; then
+ mozconfig_add_options_ac '' --disable-sandbox
+ elif use valgrind; then
+ mozconfig_add_options_ac 'valgrind requirement' --disable-sandbox
+ else
+ mozconfig_add_options_ac '' --enable-sandbox
+ fi
+
+ # Enable JIT on riscv64 explicitly
+ # Can be removed once upstream enable it by default in the future.
+ use riscv && mozconfig_add_options_ac 'Enable JIT for RISC-V 64' --enable-jit
+
+ if [[ -s "${S}/api-google.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+ else
+ einfo "Building without Google API key ..."
+ fi
+
+ if [[ -s "${S}/api-location.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-location-service-api-keyfile="${S}/api-location.key"
+ else
+ einfo "Building without Location API key ..."
+ fi
+
+ if [[ -s "${S}/api-mozilla.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+ else
+ einfo "Building without Mozilla API key ..."
+ fi
+
+ mozconfig_use_with system-av1
+ mozconfig_use_with system-harfbuzz
+ mozconfig_use_with system-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
+ mozconfig_use_enable valgrind
+
+ 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
+
+ ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' --disable-unified-build
+
+ if use X && use wayland ; then
+ mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland
+ elif ! use X && use wayland ; then
+ mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland-only
+ else
+ mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only
+ fi
+
+ if use lto ; then
+ if use clang ; then
+ # Upstream only supports lld or mold when using clang.
+ if tc-ld-is-mold ; then
+ mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
+ else
+ mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld
+ fi
+
+ mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+ else
+ # ThinLTO is currently broken, see bmo#1644409.
+ # mold does not support gcc+lto combination.
+ mozconfig_add_options_ac '+lto' --enable-lto=full
+ mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd
+ fi
+
+ 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
+ # lld is upstream's default
+ if tc-ld-is-mold ; then
+ mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
+ else
+ mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld
+ fi
+
+ else
+ if tc-ld-is-mold ; then
+ mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
+ else
+ mozconfig_add_options_ac "linker is set to bfd due to USE=-clang" --enable-linker=bfd
+ fi
+ fi
+ fi
+
+ # LTO flag was handled via configure
+ filter-lto
+
+ mozconfig_use_enable debug
+ if use debug ; then
+ mozconfig_add_options_ac '+debug' --disable-optimize
+ mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+ else
+ mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing
+
+ if is-flag '-g*' ; then
+ if use clang ; then
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
+ else
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols
+ fi
+ else
+ mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols
+ fi
+
+ if is-flag '-O0' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0
+ elif is-flag '-O4' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4
+ elif is-flag '-O3' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3
+ elif is-flag '-O1' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1
+ elif is-flag '-Os' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os
+ else
+ mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2
+ fi
+ fi
+
+ # Debug flag was handled via configure
+ filter-flags '-g*'
+
+ # Optimization flag was handled via configure
+ filter-flags '-O*'
+
+ # 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
+
+ if use elibc_musl && use arm64 ; then
+ mozconfig_add_options_ac 'elf-hack is broken when using musl/arm64' --disable-elf-hack
+ 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
+
+ if use valgrind; then
+ mozconfig_add_options_ac 'valgrind requirement' --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 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
+
+ if ! use telemetry; then
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_CRASHREPORTER=0"
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_DATA_REPORTING=0"
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_SERVICES_HEALTHREPORT=0"
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_TELEMETRY_REPORTING=0"
+ fi
+
+ # Disable notification when build system has finished
+ export MOZ_NOSPAM=1
+
+ # Portage sets XARGS environment variable to "xargs -r" by default which
+ # breaks build system's check_prog() function which doesn't support arguments
+ mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs"
+
+ # Set build dir
+ mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+ # Show flags we will use
+ einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+ einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+ einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+ einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+ einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+ # Handle EXTRA_CONF and show summary
+ local ac opt hash reason
+
+ # Apply EXTRA_ECONF entries to $MOZCONFIG
+ if [[ -n ${EXTRA_ECONF} ]] ; then
+ IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+ for opt in "${ac[@]}"; do
+ mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+ done
+ fi
+
+ echo
+ echo "=========================================================="
+ echo "Building ${PF} with the following configuration"
+ grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+ [[ -z ${hash} || ${hash} == \# ]] \
+ || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}"
+ printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}"
+ done
+ echo "=========================================================="
+ echo
+
+ if use valgrind; then
+ sed -i -e 's/--enable-optimize=-O[0-9s]/--enable-optimize="-g -O2"/' .mozconfig || die
+ fi
+
+ ./mach configure || die
+}
+
+src_compile() {
+ local virtx_cmd=
+
+ if tc-ld-is-mold && use lto; then
+ # increase ulimit with mold+lto, bugs #892641, #907485
+ if ! ulimit -n 16384 1>/dev/null 2>&1 ; then
+ ewarn "Unable to modify ulimits - building with mold+lto might fail due to low ulimit -n resources."
+ ewarn "Please see bugs #892641 & #907485."
+ else
+ ulimit -n 16384
+ fi
+ fi
+
+ if use pgo; then
+ # Reset and cleanup environment variables used by GNOME/XDG
+ gnome2_environment_reset
+
+ addpredict /root
+
+ if ! use X; then
+ virtx_cmd=virtwl
+ else
+ virtx_cmd=virtx
+ fi
+ fi
+
+ if ! use X; then
+ local -x GDK_BACKEND=wayland
+ else
+ local -x GDK_BACKEND=x11
+ fi
+
+ ${virtx_cmd} ./mach build --verbose || die
+}
+
+src_install() {
+ # xpcshell is getting called during install
+ pax-mark m \
+ "${BUILD_DIR}"/dist/bin/xpcshell \
+ "${BUILD_DIR}"/dist/bin/${PN} \
+ "${BUILD_DIR}"/dist/bin/plugin-container
+
+ DESTDIR="${D}" ./mach install || die
+
+ # Upstream cannot ship symlink but we can (bmo#658850)
+ rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+ dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+ # Don't install llvm-symbolizer from 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
+
+ # Install the vaapitest binary on supported arches (+arm when keyworded)
+ if use amd64 || use arm64 || use x86 ; then
+ exeinto "${MOZILLA_FIVE_HOME}"
+ doexe "${BUILD_DIR}"/dist/bin/vaapitest
+ fi
+
+ # Install the v4l2test on supported arches (+ arm, + riscv64 when keyworded)
+ if use arm64 ; then
+ exeinto "${MOZILLA_FIVE_HOME}"
+ doexe "${BUILD_DIR}"/dist/bin/v4l2test
+ fi
+ fi
+
+ if ! use gmp-autoupdate ; then
+ local plugin
+ for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+ einfo "Disabling auto-update for ${plugin} plugin ..."
+ cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin"
+ pref("media.${plugin}.autoupdate", false);
+ EOF
+ done
+ fi
+
+ # Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it
+ if use system-harfbuzz ; then
+ cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref"
+ sticky_pref("gfx.font_rendering.graphite.enabled", true);
+ EOF
+ fi
+
+ # 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
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "desktop notifications" x11-libs/libnotify
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+ if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+ optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver
+ fi
+
+ if ! has_version "sys-libs/glibc"; then
+ elog
+ elog "glibc not found! You won't be able to play DRM content."
+ elog "See Gentoo bug #910309 or upstream bug #1843683."
+ elog
+ fi
+}