summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoonas Niilola <juippis@gentoo.org>2024-10-10 15:35:22 +0300
committerJoonas Niilola <juippis@gentoo.org>2024-10-10 15:35:58 +0300
commit7fd8f003be0093ba374408164a5303a0d0647e4b (patch)
treeb4c8f8052cf7c052b2f698a20f01e76073cae1c3 /www-client/firefox
parentwww-client/firefox: add 131.0.2 (diff)
downloadgentoo-7fd8f003be0093ba374408164a5303a0d0647e4b.tar.gz
gentoo-7fd8f003be0093ba374408164a5303a0d0647e4b.tar.bz2
gentoo-7fd8f003be0093ba374408164a5303a0d0647e4b.zip
www-client/firefox: add 128.3.1
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'www-client/firefox')
-rw-r--r--www-client/firefox/Manifest101
-rw-r--r--www-client/firefox/firefox-128.3.1.ebuild1368
2 files changed, 1469 insertions, 0 deletions
diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 5b4dee2d5cfa..85faf41cc948 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -200,6 +200,107 @@ DIST firefox-128.3.0esr-xh.xpi 418008 BLAKE2B b7511594e6522c623c1c57b4c0f5781e68
DIST firefox-128.3.0esr-zh-CN.xpi 662331 BLAKE2B c64a2f4b2643c3e590b13cb88d9103e34681375c45edf3388e3561f0fa68811cd331243e91f8e5dc97d8e88ff850f6ea33815012f3ff4598ed1902e44491614d SHA512 0df66f8c593ca887c22b84ef75d91035f476a0325352673106b58ca83a7ec1875601aa5491bc565d3e42cbcb20799c6dcce7feb723dc30c57a1a2be0f4d05e60
DIST firefox-128.3.0esr-zh-TW.xpi 666620 BLAKE2B 3538b25e9b685638fc1de2877c3a6534dabf545cf18b8baadd02fd19829a367e2b5fac07518cade4d21a6f2c69d5dfb940ea299d9ff5967925548111abfb6398 SHA512 dfd8e0f86ee5d78d77ef68a97b6030afe34db6c338c0a73288a68a2a6bb864a0233342f5f79b1ae043d0b97f92c35fec3304bc0a49310e66fca8b6554a389ef2
DIST firefox-128.3.0esr.source.tar.xz 560960556 BLAKE2B 015fefb408dcea5733053151aff05579b007ab757542a47956e007dc127b460f4a35e885a2ee4ef4dbb936820c8ea3907b00383f659b15a84e701590b50a5d72 SHA512 3c6ef272c0fb653d030fe3f7f72aa0e1097b1c6759556166815cde15465330f988b3bc23df4b4eb753daee930edbb1ef72145273cb29d0952bd9d7c547050f9b
+DIST firefox-128.3.1esr-ach.xpi 465009 BLAKE2B 6fb67b0098c36fadca7c4f10c128c7fec3e9d654184739361293d3c3fb86193bff220fa394d13f1b210ad9023a153f05a2f2b6dd5e4ddbba858107a2b5b518db SHA512 7e213b54f0c502f3dfa1561cbc0c00cfb374678da18aeb514fd606b5e4948fe6169c787167b0f869c8c3501a50339ddb832aedf5d359fb4ec78866c29403303d
+DIST firefox-128.3.1esr-af.xpi 418339 BLAKE2B 9da53c6d55065adf2a4c95afa88e566a2945a7f1156c55ce05e2221bd8bcb9ea9b194bc4f291246a23c44565734becc0c043fc63e446307b114e927690aff1c8 SHA512 2f0f6a22bde70af4c1a5ce495c3fc88c7f08bdb911fbef0db9a1176a9716f668cda8ecadd3cb73d35b28b7bc7255087201e50fd8afdfa72796284c315a61ba4a
+DIST firefox-128.3.1esr-an.xpi 506830 BLAKE2B d0484beed94db1ca4af0cbb1e48d6eb04dea11d7ee939b44c64049aab4ea60648a2430faa7e19faecea033138c584d045c877d6a13b0fafa93f6f3c76208e1b5 SHA512 fc24abeeb18fe078c3231f216de0c4cf9bee36036dbbdfeda9b9eae7516871ed7eb246f02f0ba0a2b770fb05d8ca9b680f701331e53820c5e8042814f7811aec
+DIST firefox-128.3.1esr-ar.xpi 612889 BLAKE2B 159b09c5b5958b6abc5f93bbb58bda4ec1d6ba1785eda9e52bdfb1b2601c5e9c5959affa4b9164c1eeac1a53a46e00fef231460b6673462d599c773da347e8df SHA512 046df98eb50849fd82651aa67a8f04b8cc91929a75232a2722a1648bc99cbc82a037851348f4772ba499942c83ae7070c2c942047a3c6838d486c9fb88c94cb9
+DIST firefox-128.3.1esr-ast.xpi 497284 BLAKE2B 79c13d8806d628fdb47cadb80b60654508e2b7b5194d2a5b2c79b1ae88b2358e4fd921e427f7e69448c5ea642760de11aa39e5293d0e9031b584d1a3218f9cb9 SHA512 f1705e7aef8c24ab7f3c2ebcb71e9697959f7a15d6a8c400dc68a0ed09a3b3dada8f8f0c681343a99da20cdd88610151433d81df04d4b58471dba2ea34fbf3c1
+DIST firefox-128.3.1esr-az.xpi 491718 BLAKE2B d37266bd7cbca8d9df27623aa3e6da3d505c8a41c61bd8f3b7a1da5110802d0c350d548c1f31c01890af98e69e2f26d68db669206c721e22284acb13083896d6 SHA512 5ab53b6be6a5dbd8ba3aa6ef4a52b5fd6e660a87cf3467687c37b51e73a494d520d0c1aef46b029dd4ed5c4c335a58678f5e1a6a66c50a105c71f950eb317550
+DIST firefox-128.3.1esr-be.xpi 717316 BLAKE2B 54f1017fa41fe8ed258d9996db0e56ef47ac153e0a8c911ef69e9e19c92b31162465fd31b0ebbe2579109d459e694449e0e366f9d167adf912f884d081e63f73 SHA512 8b75da75504a66a4b4dbbb9ceec892c423483557604594ef9ae3b2a819e4c3b52b2f2a7f0e42ad25a9175a42b86fa05783c8434ae53f3af55040812889965cbd
+DIST firefox-128.3.1esr-bg.xpi 637135 BLAKE2B 4b8ab5fe1921c35d3be7f06af76261e3ee14edd3d347f031ae832cbb3b02ac5d5f072537d3a8dbde69079ff513bbf33f26bde6f9c57b36708e9b41b053538eee SHA512 00685393b82d71c021c8e87d6f2dbd0967dc5b2d89877f4a7681452473cb4f577df25bcb22f2af0a23047770dbef19b14282726748943488c803dd2e89bcd192
+DIST firefox-128.3.1esr-bn.xpi 582461 BLAKE2B 272baa4d11936b7cebdd78c2d32aa0027b6f739e023db0f5306cf8d84a0494ddde7d642bd279b5fbd749b2dcdabcf4e713ac55d716e02df2e57912a51d753660 SHA512 198c5132738a782989d68f0ec7933e24a23b69745438b0f1ff36bd3c5e9ab86698619f3862aea385ad0435416dccaaff13eb283b51b0ae9d04705aba2c1bef46
+DIST firefox-128.3.1esr-br.xpi 590828 BLAKE2B 8f7fc715795f204cbffb92ccfb31dc5b0f0b9d5f9eab8a08435e1e67a96ef12427af2b5bdc271a148e27aa81ec773a23b2e5de4731c930a2054347013fdb353e SHA512 9d5c01a18ec9080e7c15df54eb2303685333943264035208a1ce29f76da980068c55d9c06828356fef188f1e9bfe1ba05567efc69b677117abd61b1dddf7f55a
+DIST firefox-128.3.1esr-bs.xpi 510169 BLAKE2B 832aa36686162ff36adab7e256fad9e006bd627ff4fb5c2c1b877f6ffed622d0a06c2fa5a75c8a3dd00b4d653c9212966025e340f3adb2af3f4d3ed7c1350c57 SHA512 fe099381c4def9dab4c66a81d1c80421df0ab998647bd9564bdd3a67e43ae42ebf01211f1cfc334937da581d9f937af4889a5a4ecf12fa230047deebe9d8aba6
+DIST firefox-128.3.1esr-ca-valencia.xpi 547177 BLAKE2B 3d74dee3ee15663c2023ba06ab33267a85251c4b10edaa29a6ca52933b8b3154ac910760e2fadf746a66ca7bd770bfdd897306c41980ed05cfec53ee15c661d5 SHA512 55ae0831a864d3538c0bc19990afbe2af3c6e5cf2c3de00f6764cfb4945c840d34e44e42f840bb64caae184622c944c8a7fd2d347ded0ca2deae63b8940d3f88
+DIST firefox-128.3.1esr-ca.xpi 598609 BLAKE2B ecf7872c878178b9dbbdca37da34d34bfdcf1e40d9f28cf50e062c313e09f31699b4328bd13dc6784291162906a5ced4bcb7458e2b57ddbc5ba069b3e3de8058 SHA512 d94f4c307c1ce6e1aa4de082c4fcefdbdaf595858844a81cc68bacd56712e9ff25b501372a3369440c1e47e508351fcfd82bf83a9c783c330c487ad2e2e9d328
+DIST firefox-128.3.1esr-cak.xpi 594033 BLAKE2B ed4d8764dbc257a45716e70b17c732359ed39203ec673e4a1c38ecbbda4bc83a93d61d8364d210aa63d2d143cb71f8a963947528061d71cce0be03558c429349 SHA512 f66f446cd83add03f08b77041de28945a1e3098721a2769e65f1f6289eb0a00d6bfa9400025dadcfd3d178addca66484eafdf4116fc5d0ff0fc0c244639f48bc
+DIST firefox-128.3.1esr-cs.xpi 666458 BLAKE2B aa51de4375015d53e70802c3eb7935d92cb4b80b37cbf6d4a8964d813a7c323f15f66e50f36dac293ecb99126395669d19ed4c1fde69a1c5150762c60719b679 SHA512 d55d5a9abdd7d3e26198ccfb3dc633a05d4d1b80b31b02a3f64e12421022e3f10229b76a78f87cd322beb43d862b5fa682960a38a8fb4ada3decc75109994f6e
+DIST firefox-128.3.1esr-cy.xpi 631256 BLAKE2B 1f53cd9860e4ab44bd0a465e105a35dfc68672f076a64a2513a9af0f2b3ee69d6fa3a06c55b456b75049e313b40c0d5ded88f93506de806727ef0e6f9395b5fb SHA512 02a5a4d5d217964c7abdd630b06cadc2ce7789684434bec8bbe415dff5943bf45d7741070c457f9da99273361ac1c7de8bed0b8a627c6f3820d6f8004e27bfff
+DIST firefox-128.3.1esr-da.xpi 614497 BLAKE2B f8b4aa5c7fe500f4e4486e4269861ad379d8e15e36d887be44286b61c11958cd7a605666428a2783ffc3d505742c5ef30eb26325fe94ae9c57e127650cd6bcda SHA512 280a743eb2e1a2a6682dbc3d74ae5ac071ec3a74be9ec972824f618ad4c09238f44b685fd0d8850fe4457249f606c900e33950727f00eee32e5975b6cf9c96dc
+DIST firefox-128.3.1esr-de.xpi 639267 BLAKE2B 29d2314f9b0f2a9e57ec1b14c62157a825dd6a7bcbfe77be6632f8f8e0a2969fb20885ba30089e1575d0f264b7ddbba2d4ab1d5434f1e0bfb5d31afeb52678a4 SHA512 d1b8c6fc15ddf6332a035676a08bf45044676f130502e12d66c84e754a3d082e9fef7bc3e85f93a834c67b497d7b2e023f5d2884b44466d02e52c8cb32162ad8
+DIST firefox-128.3.1esr-dsb.xpi 656617 BLAKE2B c413b929f0039b38665aa3b62682c9347a9e63418b2159ab0d3c97609748bc09f91ea3aca3bc9611a000c4151022138eb042fe942b2e34b1e82e923dd65ff16b SHA512 7f149fb7d015353e7f723dddb3cef9227360b270329394fa58fb7f10d14e4ce86eb5ef587ded6e03fa9d0ad7f7fe27685fa1311a66d1e4160cdb207eb9624774
+DIST firefox-128.3.1esr-el.xpi 741109 BLAKE2B ecc91de783081da2ecf3e4226616c00f5f582f098d031eb96b0891a8d752e95bdb6bf4f631c14eef2847735e987f9858a2ffff26b559679a5b3fddd00b23a389 SHA512 9b7498c8a3c2cad79d2e6d82e16b8b8411ba3b6083b113a205a42e9d3534c8b49c5ede082abe94b9ce3e279eb3b764fdb26df0af16258e2fb63585e637b26244
+DIST firefox-128.3.1esr-en-CA.xpi 590915 BLAKE2B cf70d36b4f500471019a2f547e7a25460d1dec6c01bdec0c5b42039baeee0840f62b28fa368a6ef7e57edcc2f7c869c1e6fff39a167f350fac6955b69c23ad1a SHA512 6d94c52d5c64bebf0bc16c964ea4722560af47e0ace0ff5445602daba96c5b78f072b7c15ae7a86ed64b1a10893ea5271d7f672a54e242c3f1c342f94a3221a7
+DIST firefox-128.3.1esr-en-GB.xpi 591528 BLAKE2B 8aecd4753ac68d497102f4088cb4d7045915113f868f78e2210733a3b365bbae6e078d5b37dcce322560808bda9bcfdb559f77191645233c4fbbb4d23ede2a80 SHA512 97b501c3038a6b05404491af0d497b3d4c4a115e508d7a7dfab3b51d5c5d09bf9908e990dc8e92c0ebb85fe32af4200543d94a091387eb592d077c78d31b9bad
+DIST firefox-128.3.1esr-eo.xpi 615504 BLAKE2B de3aa98fc809c4325d88257c9ab705767ef9cb0d77407c648c3133fe7653a97598adfae6ae5ee74d2c456dbc959c3f5a3f2f44bcfb78f58198e2c6c1f4743646 SHA512 4a8d293666640a6f1f927963b562578dca581aa4085f0fd3a1f748468a8cbd74539e2023783c076430d9e7f72fd563db544c351be6092bba42ec2b3dc54eea95
+DIST firefox-128.3.1esr-es-AR.xpi 634655 BLAKE2B 96d3ffcc95204848e165772670e9a31fb5d663eddcfa8a565285f24f0fed51b12dbf22c70ccc3b0abecd6a405772e8aebe65766615c8db2da2a0c18665f078db SHA512 4a4726e3948b4449402cdb488d44d27d5b7d5b34e8bac5c58a9a2c4db7c930ae2699af02af547a611cc8a07db99a77b4270db13f660c4204955658d0fc8860ed
+DIST firefox-128.3.1esr-es-CL.xpi 634130 BLAKE2B f9d55b64542bab3ae4a337b618bcf814154f1260e3677069774477f1611a5929169d163bed3196d049bc9ec941e1a70a8a2892185f1e44ab289d8efe05374f0c SHA512 efd55dacb7b7caeae258e389d1112a3dd2e6f5389972990c11f9f686e881e524fc98c7e79dd50a22760ed0ec3dbe01c54b8a891d249a3bd34cd24a22f6087e79
+DIST firefox-128.3.1esr-es-ES.xpi 622030 BLAKE2B 103cc77202277381dd9c06c22dfff7a68ad69238c9c577601716752404cbc6036ab5245baf8bace961951a9a827504ba8bf7966368bd8008a78b56ab65492b9b SHA512 62ad5bd92bc57ef7a6dcb754b2375efb92a74eaa8ab249188cbc9881f5c90369e2b1cf96461b84fcf4d5731ee7fabdc6f4e8c407198b470953c9a74a1018f049
+DIST firefox-128.3.1esr-es-MX.xpi 610629 BLAKE2B a2d466811e41e89c25cfadc2870a0742a14363dcefca9a3758035bd4f5bad9bae8588484298c159b1499bcc8ffe3425d2617245cd3933d2521e99ad8885f698f SHA512 e6d1fd58ea4c75c98b5daf3ec45c780668586516a95b262034cd02e11345b6b3af415b050c43401d84b63f21668db63a855d11f83774c5017e9475aff53f16ea
+DIST firefox-128.3.1esr-et.xpi 540644 BLAKE2B 8811f72f4f2f524c36dcc79e398b00106610de768ca68fa0413abd6ee809d90274df6d88df2003735379f19a957110d0c9b9283c247e028521d792d214c51178 SHA512 0fabae5149d9bcf61aa6826766d7b74f879d175e021398247ce4bf2daf0c85415a9038949fdacf62392e2b2b3b4f2142c482e341fed45f594534734c49afd697
+DIST firefox-128.3.1esr-eu.xpi 601105 BLAKE2B 10bb38ec2944ec29d4f2f1d34ef8e5f766954dbbce427fd5ebed80eb7f5a53daa47c1c9e6cc01ea20cb3a5f4569cb0c11f58818c1125e738c22f7666024852ea SHA512 39dc9b1a1eb3675cf6731b0a9092d975d3312cc4fc0b1d934fba50f50995fd697abfc112869f9668800df18c7ea88bb15deb6e6903ad298fdccee63c65118004
+DIST firefox-128.3.1esr-fa.xpi 590967 BLAKE2B 0c1f13d1b2e904b5f1d7855354235b60fd49447e871dd40881a5210ebeb3681f9df742f9fbb78be5639e215ecc85487e79c02a6f508e77e21cd396b66f54b8cf SHA512 d37e0a4135bb7dd87ff4f7b7b5f24c9b9ad64139a103242604a98372ac13f426f2fa8cb2e001384bf8cda71fb8edb59e4d4e5624ce1fcf5788c1c77196eb246b
+DIST firefox-128.3.1esr-ff.xpi 476997 BLAKE2B a37b1dbc0301090e708d3ba91be1253735d613c8a111f1f96c92155a4531d010a0ea0fd4eada827cc68ecb5739bc1e314393f2a307bbe8e546364145c80c50a3 SHA512 8b0649b9e48b17127f0c9ac13c02ec42ef395c0814cae2b57687c9be737723b8f5cf9adb22fe5d027b76998ebb48208a935eb15f45ed712f0351191f2a6c21ec
+DIST firefox-128.3.1esr-fi.xpi 613324 BLAKE2B 25dd28065683a2d60bc7d15cc0d2da01818d10bad2e5091115f23c0e8a401d249d70a14be0e94a5da37378ea5249aff0e5e36363f825cfa3bb937e193e713ae8 SHA512 b3ac5a0c56e363a48f6bd635579a28343122c54209d6b2ce0fe1ed9f16d53280bb7adf95815bfefa4a546c632af00a0568e8be63a9d3a86a20de34df7af65753
+DIST firefox-128.3.1esr-fr.xpi 646208 BLAKE2B 626777dcc7db9933a50cd669206ecba5c7b58d2e40cede888e287afc4883055cb26753f79577fe3eea3ecb573e4735a922fe2609de195527a17cd7e7b9596a32 SHA512 d315f85734998d128a24acd12a9f5b5eb12b15f02571a008366eff1ac866ecb47a0c4f86f30ba71aac3d9e1cfb6041bfd138ea8abee7bb9e7e11bc7df4fc4adb
+DIST firefox-128.3.1esr-fur.xpi 640935 BLAKE2B 6b0fbf417cc63c721b8abc6aaa6446143cdbd1647a9c616a305a2258a66a28d25c56a2cf8dd0168c14defa98320570f44ab9c8b3bfef9091225bd81f8f6e39f1 SHA512 3f9aa1d782b31c8efcbc40c4760ddec8f2a551aa48db08c362e7daa5176c63588ee8390271d6dc3d44fb1d8949a072d27a8ed7e4237aabc2d6d9285b84efff8a
+DIST firefox-128.3.1esr-fy-NL.xpi 630341 BLAKE2B 12b774c08c96d6fc6753e7c47888fecdbb3871a3b1c7632b084c31b40aaf43851e16240bfc63cb6a50a6dd0294700b8a411aa936bb94bc104b1aaa23849de4ae SHA512 8a67c3aae5a489a346a05bc560ead85ff7a5873d9850c9edee0f2cdb2649e3f90699208769c5099c347731b8b4f24ffbef011a9542c3977173211ce5e60ffcfc
+DIST firefox-128.3.1esr-ga-IE.xpi 471844 BLAKE2B 54028388b381416a3f8eeb106b6d74cbc60264c2cab15ffd74fc58110bf647ffbfd2fa4c6072e616dad90ed7059a75eeb46a55e3d11670998c5bf34ee4ff7542 SHA512 b31105128926a84d10bfade01854c510b32b0dc53520f997e04a17fef37e100faede0d726153b6f2b112d65d2516da2869b3cbdb7e4668b0975cfc6cada10e8b
+DIST firefox-128.3.1esr-gd.xpi 597536 BLAKE2B e40f7ef9ed836bb2e3c7745d7dd4c6ac795d942f7026aead90787b6acc1e7996eeea2fdc337c22ab037008cddfa5d6d0e560bde0b3378428c194f19f118faa9c SHA512 778a39c1d3bf353477f1f2c7b82d646b06c987faffd83a22f19fd344e95c07cfc7bc7bc4860f598e11c370c8fde85630e51eca763357fae006e1f776fca91d65
+DIST firefox-128.3.1esr-gl.xpi 605030 BLAKE2B c96b551818ac06587dd5e4bf1a89d8c2c556c02660641ec97890bf6eaa77e6030e91b0a07e1aca32f143532166beb72df836a015b817e70a0113a4d163ca2524 SHA512 1f55ab73cab99ede1d959d37f8a1789bd221419020961e103047dc47b87ef613efcc1723e1e9cc0aabaae9e9fcda89a92940763450d21a035778c7224ca30fcf
+DIST firefox-128.3.1esr-gn.xpi 643640 BLAKE2B 2b4535ed43ff198a725025ebe1bc826a54310114b53b240fc8565f24b1dfafdd7de7bdd1a332ac18c0c69a56f3d4b92ca5d9b45d2e03c407f138bff257868d6d SHA512 c916e24ab33f5851a2df1c0a5c938e505dff236048139d66956e57a2b1aa7b7d1e75090dc226594de899863ca8438cd55d63cd7ea59abeb33b1d94816b804108
+DIST firefox-128.3.1esr-gu-IN.xpi 528303 BLAKE2B 72714ec3522862347fad25c976d89762f6712281b517e555accd6f129757ac7e74691c3e95e1580f760ac38ec4065c7f8f5f371974479056a17c49dc8153dbf6 SHA512 eef8e07280292360a6499577589cd7df3957300c6bf515b48a232cb354fde1b1aa3348830cceeb29d28243b413eb77c04e484622e68d9d81c71f0fe81340fff3
+DIST firefox-128.3.1esr-he.xpi 637783 BLAKE2B 8ee848441f4705cd05354f9e7a967b018dce77dbee5aa7c7e8676abb4691ad4b9450fd5026c81ae0a83fa9859bb36b5c67ecabe55029044a7bb48b192540a563 SHA512 afbdb6ce8e7defbb87a3118c635b24d9fc447228d25875c1cba7ec68e8f1fcc49333cdc2f09b01207701259f96f832e5b277d1a10308467f427289ef33362b29
+DIST firefox-128.3.1esr-hi-IN.xpi 567737 BLAKE2B 9ec788b5bfe6d11a1498459b6d99846ae88ca387451d2cd61d8576f6709fdf681d0a7e1392468991fdd99e6abbf5dc4c3a91d81cd7fb30e603571e99c6d47304 SHA512 fc5454cca5c8fe47c90ad895bffc40b397b34bf142d20212e3891364c6fe7398b1c85023a1bd6cdebcd7a089f0bf1e86e16abef6d140377f03a72222ce4fe99a
+DIST firefox-128.3.1esr-hr.xpi 615346 BLAKE2B a2676ce43edf0c7d77c892f79f5a31a3e68b6969bcb7de54b6ee2fcc7cb3109a95c9b73989aea3f89a2b3550a8edab4efecc1602ab8b3749b79d38c6fc08576a SHA512 4f7e8e596d4250d97ed70433da03dd1d8d58290ba0833831e7dd85c4587278fb47d2f8f68aae146a7bdf63a5f640434e5a9ff19732367bbf21a87aedc02a7e58
+DIST firefox-128.3.1esr-hsb.xpi 652640 BLAKE2B e11f0e107e21cdac8c864a196e1400fdf3f1280c9a2f95b1e98ff25634af2b790986e0947d86acc1833ceabae9e50fcdccdd29b33afbd4571a59418843d90364 SHA512 46d0613305dead46179dbc81282c7494b16981005f59ca8d360bc1445cb5dcf7904d282313862e1ab479fe71f109a15cd05e5a7ff1ae801ed3918639246ee4ea
+DIST firefox-128.3.1esr-hu.xpi 657500 BLAKE2B 313f47411e7634eea19c7860c19d27fc960be864956d49be880df2af3b7e2a82d25edad96a56de694e3bdf03a9dad570c2c7784f021129f52a2ced5672a39801 SHA512 ff967ea9b551890b3073e73ad501effd1d2f1e7da65f8ee4b57d44186634c8f8344e3a6fc0456015969c523af2f15881b0f1c2da1cc1f4dd7c0624789651a910
+DIST firefox-128.3.1esr-hy-AM.xpi 652578 BLAKE2B 97408e8e047ae75dcbaf9c142945c6e6994b8433d7439eda7bfdf62842eac15ae832eb6f489c72ed1bdfd9d0d6c366adde4ae039a0df4e8d3371a87670e8b747 SHA512 5c6dc0f9d6adb80ac7b7989af0ff53d2f877586de63b86eef24428f1f89b38a4102b639b6f802fa30b7df07fbca7f9d4ac8f4a47d454aff160bdf56391c3fb61
+DIST firefox-128.3.1esr-ia.xpi 615355 BLAKE2B 5146978fae716f7f279389d6f75d9d16caea671d7a3f35d23323cb636e3a68842e35cd77db59a80974139f0f5bc991fd5af607b60d0f4d2cd6658563c4497d6c SHA512 63e6a9cfda694030dbb0f9be3f6aecd9f90ee9ac0f41257e24495e3658e7478ee0f6e54d7ba7a52a653d115d725298263350d488d73333c3509c10b4e8bc4758
+DIST firefox-128.3.1esr-id.xpi 585703 BLAKE2B 94122f749bc668883551f3a59402388b9129585355273d52e05f289319e62365edc79b4508cac2409220bdc8683f5acda5a730f0513008b7360db83c66d3bf4e SHA512 6faaeec614d999418005055bebbb290bed6260c43150938ecf0b745fa08b6dfadf5420a364da9cc173475ff520fc14733263731b3345856b259110e4ee8dcc7c
+DIST firefox-128.3.1esr-is.xpi 619063 BLAKE2B d836ae694bf2021333d4b1717eed798ce24178b3a967a59b1b57980a5ab2169a5c4e5c92eef1b44b673b2dbceac2db201226677c7ee6fff10b1797d7e182cc7f SHA512 4b405da69ff132998ea8f0bfd7b3ecdc700d20bd63446fafe5549e8dc89a5b04ab0a212364c1a88fb32c478ecdb1daeb8d09f1cd59185d8c48fae82cdd697e19
+DIST firefox-128.3.1esr-it.xpi 574451 BLAKE2B 89a7c30481aaea6c2418c712afa480a6e91c71faa06bd0fc82a60dd53893cd95f36d2f8921ba6395048526fc6466562769a9388b800821d1740deb3dd5b300f9 SHA512 4b5fe6a336f5b5f247f152f7e26d45855589d61ba241a2a00f1e74fba1f2c6af9d3d111868914554d11b8cd42d254a405796e9f9fb1bedd2319bf126d559e5fa
+DIST firefox-128.3.1esr-ja.xpi 683762 BLAKE2B 30b9bfd044c253d81bbfecb2970ca36b39bdc7ab001848c2a60173bcf2befff723a02923d8958899f3f540bead8b9ab23de3b0fc940b8b71d24ede77e53be43a SHA512 63fa755a52d36c17b3dd0fc6a17e2d1ba6fe63edad635798f260a75910924d2fccc41cfcc3ad45a093568e6262b1d73d34bc7204f42c2147d387f187ff4305e9
+DIST firefox-128.3.1esr-ka.xpi 661662 BLAKE2B db888e1bc0c951e58eea84381d8abfab0fe07be8e95b876c559d884919338422855a44863aef0e3fcfd74b4240f58ef82fbb2b0452b073e80e06e6fcc5b51e36 SHA512 81c83c2385c484f9c2b72c2bfbe5c3f21c72b84445b39266ff3b9b9bbbbb7c5569521ed0677a91f4166f8d10b4f8861eba3c151f92cb8615561db4d9494c4d38
+DIST firefox-128.3.1esr-kab.xpi 612138 BLAKE2B b3ce56b4570686c5f6209aef788e7497288e9f63f7c72103a5d84a48b762e6238cd1d11c3c8dda3599899cf7d0cde5e380e0ce8d25b3b9e68ba450a671e8ad27 SHA512 9140d452c443ec95bbdd41a027b374bb2011a69d106e6b2ed65447000aa68a23cd556d16e118befaf5877225a3297a8c157f83fd7b7b48cc27300d007749bdeb
+DIST firefox-128.3.1esr-kk.xpi 715703 BLAKE2B 8ee939bce20ab583f978d31f750e1d67ab3caff2f2cfcb507d54d39cbe9f7cdac07044f5a20d3ef5bd2b82ca5f869b1e3c2f7e103953afc0d4ca46ae41fa9cc2 SHA512 c21994c37cc5226bf60f6db4e97c99746d0f7cb2718110ff28a2a6e429a09b6b4a121f9f79402b82f12ab380e89af878b0544d68ef3d8cb9ccea8f3f80c7fdca
+DIST firefox-128.3.1esr-km.xpi 526702 BLAKE2B deb1a9a38150d060000257bf007cf2879aed071ca75e0af9f0cc4b396edf8be6d243bfcfd76996898ad9b9bd9471e36b06f8c50c1813c64d1e7b12f004d695ab SHA512 8866419e7077fc459428ebe3e5ca78c43aeea5b3d774823046dcd79146b4c814bb519b49834b24067030b1e5a3ddfdddd52269624c453accf35b40b4ee6ab84d
+DIST firefox-128.3.1esr-kn.xpi 492071 BLAKE2B 64cc25e5b7e6f2c8244d21d6d7eb32a3b6e4dbfcfac6861add0c841d8b8fa817342fd4660ea32f6800d87b5e4b4247bb467d2be1115396032ae034d16819140f SHA512 8400188699de5a94572ed5b6b2ff2a82a736b8ef7a99f6c9b594c9194ac6ad9aa8dd2baf833c5e46140e0df65560b84adcc0f25f57817623aeb46dc3cd5f3ab9
+DIST firefox-128.3.1esr-ko.xpi 668819 BLAKE2B 799d2d1554c0279a83c609def3cb91ff8b74fc913fac3a044ce8cf289fca51ae9eae714479e8a01dab8b84b5f4ed9d62991a5c046d3dcaba0976ef9f77901c5e SHA512 2e6f6ecc16ca5d4e24c587784271ae17855ba931be46be67110a808a0749a1cebca987316ee17d20abfaf87c4e92bfa4d53071988323e38124ff3f1af819579c
+DIST firefox-128.3.1esr-lij.xpi 485036 BLAKE2B de37671894c3a13f8a7e43ea13dba2f1845f633e994b0d4747dfe7a6b526668a6bedd27da3cac57fb9d9e31b76dc3e9f380747304be6ab7fe237335a30fc293a SHA512 1dc40cc3ec888817d67ece438cfdb5944cbeb5e54c8ae4a30b49b3e8430577cfd88ae728f6ac2c07644f938525214f959ab3aad109deeee4d45470eb7fb5c9e2
+DIST firefox-128.3.1esr-lt.xpi 573624 BLAKE2B c63eb8f975e81b32546b2153004077e5d80e27e9657a04bbba2c565e82bf541c7280d22a1d14b461f37aee79a1ee3c12e95bca93986d8ea3fa28bca7bdab31e4 SHA512 a826530fa83d99a2749a7ad8f256f42f769520c4ab62320fc602822eccc802a1808a157502f45fb7b2d69b11a56fc9e466e03f35a6b3dee0d80fb27019b58211
+DIST firefox-128.3.1esr-lv.xpi 584359 BLAKE2B 5c1c6e1aafdeb0b43e38b9bcfcc50dd77a582539e16d36efa86bcd144bfbaaea0a795e81894669c1bfd403c56b10c4cb7ab5f28ccab68eaae6d7fc5d30de1ac2 SHA512 11d581f395ba22dae6830173f3a189bee4bfbfe8c152ed52603010053914cb132216065417bdc2abcee659657b08f12b0c8958a47b3ccde74cda9d1d8841d4f9
+DIST firefox-128.3.1esr-mk.xpi 494680 BLAKE2B 3e41b57c8f6396c0843e9e3f3237e58efdc38dfab74887ef5ee309a4b5608933ebe43028b1e9f43f4e85433710ced2ff73ff4ef96605b5f557165bf0c92eab9a SHA512 fb7bf53ea84e5b6d91afe42cfcb9e8304e06cf57b4ec7e2f85f8fc7fc1a36558d05d9fd28eb661f82682f3b14a062a6bfe31cccb63ae7a8297de6d2e48df5d38
+DIST firefox-128.3.1esr-mr.xpi 533059 BLAKE2B e3542e2567271f5aa62c329aeefd2b6bb2ed7b10166b4d788a7f675b0045508e88f7b477e9f0e21730961e040db5bf4366b4d2ba33b712ebdeda8d95597e5ef7 SHA512 f7f2262a100e537efa9d8871427259ca82a21df4a2521f91d215ceb93f41308aa327ed45c4d8959baa828828f0d8fb25f0d23edcbfa7a6f204fa8655a9e6b45d
+DIST firefox-128.3.1esr-ms.xpi 450666 BLAKE2B 0da897f5ba5fcfbae533c14863c81cba446c6a16562d7919d455389ae4933ba4533c4dd6f0aac6ecfa029d7b21d090711c6138f5e22ec0454e3fa103fe758f22 SHA512 c77e6688031c677bb87981dbc0bc9f791f79eee204843af18d9ab58b5c31fe04e284247d76c5feaee0ad4b93f1abde14d7dcf6d56258e33a23ed270a19105d59
+DIST firefox-128.3.1esr-my.xpi 519448 BLAKE2B a07ed88430674c3b9835619c5bccf8bfbf4d7c74610ad8768ed2c7a1aa3e981883329a08d1f60eab245278a663786d0046c7fbe99503cf21b712b095d9d53ef2 SHA512 5dfb44cae5d56556233188deebff3916739996e72807b047bbb19734274e4d9aed9c10b513bf6c85c9f10d2e75ee4871a5e097a9b404317b986da06d351d78db
+DIST firefox-128.3.1esr-nb-NO.xpi 613395 BLAKE2B 97b8b6ce5e382595d3dc422ad38a917f00c65405b582c3df1f58e62e318197bdda299942e9034a6f379442dc037839f39235100b1d119dea0fdadd0818294743 SHA512 aecf0af03246ce46a55d400d4a537e56c276f087e3aa5b0ef0dcf7581ed1286f1c9f0934d809d7d2a3a05ef19d9494c2a374b8e93c1d231e004174d2a75ce62e
+DIST firefox-128.3.1esr-ne-NP.xpi 515328 BLAKE2B 1de2f752a8ab5e11fbfe34920123663f768da34c4072267748aaeba8b123d16eb87625cb5be07fb019475747855098eefa8436b14f06e9805ca20533abb1b6f1 SHA512 e660819c3fbfb5187f3b1615eb010ec795191baf20b7ee3790ce8e7f219d2c415539610bd00c9676298133e1c5aa22ecb3a9e01eb7e9e13bdf10be4660c757e3
+DIST firefox-128.3.1esr-nl.xpi 623992 BLAKE2B 31e9119cfa5762c241c0e9514cd8c8290cc609a5ac7bab849c4b77321e799533fa24e65852faff624b67f9cff1f21bb70a3bb6197d9dc31beed9228a0bb3d7f4 SHA512 5c1c3b3a9e7f861ba3912998e559980dd30e36945f4730b9aae500233f4ef4b33821dcbc6c745a39c04ce072ea8bbca328e4407ca0e781575e68443f6f6b56fb
+DIST firefox-128.3.1esr-nn-NO.xpi 617327 BLAKE2B ea50d2bec48eb9d86027cc011efd16455223180d916533ae0584aee99e07fa488fbb48e63d448e5a7f10c88d201a77571ca78c7cfe7089327cbea76786652ec2 SHA512 0f7ab657b82e04e5f9aa7c9ea4311f459d0e1e33623deec6e7610055674918d34d9caa67355072d3b58fb75bef9dbe36795c364b76a49d37ee7cea27651baf51
+DIST firefox-128.3.1esr-oc.xpi 613843 BLAKE2B fd351d9bca3ae00e67d43000dd1fc24937f061cb6e9bbcca866f13ab6fc543c74159f066774c4214236d130bfa311ba056cf5def7616747e61216b0bb420a9b9 SHA512 b4d3d62bf5d4ca3eea1d016a1dac4994bfa75cfc8ff22f7f9ac365f0593045fc83c6939f10663138ebb272d89c6eb2ac68b26f97aab4beb51b011ddbed7f7ed9
+DIST firefox-128.3.1esr-pa-IN.xpi 697913 BLAKE2B e3c68624d5cb347114b0ed81641080074d1e514207a873e0cba948fb8dac39a016c655166a98d4404ff9d81d1932a80aa0698787778ec821bd5f2c01a9cd708c SHA512 91732ea8a5d0cb8b1dcb75ddfb43a78dc8905552ec296eb5561a0f135ad7cd4f04bc5c1e55c46fe0e75b72c8540a3d26e158e1dad3b1a82df5aecd651f7e470a
+DIST firefox-128.3.1esr-pl.xpi 639649 BLAKE2B 8072dd2e8a82658d8dd5417eab9462b2affe259602ef5a2cd2622f51dcc653b942c0d6c31b4ad74eb4ff52a5be42ceca600ae3d169aeb060918a51d00ccf9cbb SHA512 821705eb271738da2a43c83a68702c7bf02d926905b3db26645ab1300dad0ec0a51a9b9dd3c17080408595f02aa1d7bf669e5d7e9aa105171bf878938ebb0cb9
+DIST firefox-128.3.1esr-pt-BR.xpi 628967 BLAKE2B 17deafa2a27a5ccb71bb0b99c8c065a98fb4be4f2b57bbef86e5baa5b6fb344e15b5c43363b9f4c7c1d8fdd1ee088065376712107318acf6322e8c9c31aaf059 SHA512 5aba1febc78dc5219e4bfd8f8ec3e487f62e0444286434e70cace14f1c6703efb20e22351b9f44732644b3258470abf50ed533029760eb4a6768c35851f71775
+DIST firefox-128.3.1esr-pt-PT.xpi 629953 BLAKE2B 5c900f610ecfaa463d7fc69c162a4c80f2347207d75b4e10b5cbfe90cae67bfbea5c774bb08e9f7982e3dccf2e9cc9e5cdea34a7c320363c03fa9e6d9080c946 SHA512 aa0b0cd4c17b027a07e942b22abbafaae11c42c8ca01729777de8e219b338470bf4e5ffe2ef216cd3fa635e479c517f30b504fcd6df7ad9978a519199a8cff24
+DIST firefox-128.3.1esr-rm.xpi 619519 BLAKE2B 795f794b6c90f9ec04687e34f6bf07815dc082ac9a2ca8b0972652ae1c9671add9ae7ad3311ec2260649063b1a95a5a1772bf6b1d410c0981972c9638a6f5ddc SHA512 1da34c1e28840b95e3cbe55a853791e81232e81f838b3791825d7fd831985f47e29ffd101c40d5bfa8526fd5909e20d06cb9b3d4c5ac3495bb0fa91aabd28e84
+DIST firefox-128.3.1esr-ro.xpi 550743 BLAKE2B b6b60977fbef8413bcbf987eb69c071586cabd3061078d9a07a691e3bf633f7a0bcd8346efd1b59a74338a5686c94542e66b4302f6ee49267f3063f14edeeb9f SHA512 427f424e45cb1377d9cbf45f4eadf369d06f7b7c83e85b411407a33fbbf421ac5e76cd85ff824a5eb8f12752b515c97001f64149121d7857efd686c614b879de
+DIST firefox-128.3.1esr-ru.xpi 728459 BLAKE2B 94b8aa75807ab184b890dbfbf289b8d081611e5d8ebbff22e2e63bbff8a6ca9bc2bfca3b5aefd6d95e6f180c9b5a435e98af6e30978c0528279b33553fe38217 SHA512 8b11467fa145a4262ffb3af23566a809ba5a7058a016d8783abd61a7586e9f586baa8e72e213f5bccafe654a75be9897af59081f8cba1c9a188bdc400df8a051
+DIST firefox-128.3.1esr-sc.xpi 588769 BLAKE2B 5d97252c8716d0b19973cb19853ae8b4b5b4399b33f50dd5b797d00ca992405042c6c678e6103acbd6b31ed641a5a54a3135719cf32048d815fb9bf898949f5a SHA512 9610f610addb0428d8126865011285be62021ba3c117df12eaffb1a5246ee06fdfd5c2b956e2ae2a5dee41ae992b3668d89caa703e53aff642052ae25c291e3f
+DIST firefox-128.3.1esr-sco.xpi 512223 BLAKE2B d04a893db3d190ce6dc28cfab267d794366eaeeda592a574e57075b3c13184697d2e631800153aac23e442d863c9db7a4b17f57e6c7822a3435e61b6b3766196 SHA512 fa552be5073ca7c75509766222ed9c37c5455a32eb975106eea04864e8580e0af4de4aa625eb2fb40ed6de40472a6749167a1e5c71733981ca670a499d866b75
+DIST firefox-128.3.1esr-si.xpi 614275 BLAKE2B d195848c101924bd65c3372c147e28366a1fc7620cc84d9abe413c8b81ad2c6d4d51ed877031589224926c977287992435b3efc6797bcaefe599729c6683abbf SHA512 e76e88b5850f203e03fd4d1efe48fa5a3636a4090d14770c6aef0aa13495fca3695aafb463fdfa58316de9d8e62deb8f2b5786a63a1aac1e3921da92cc1e3fa7
+DIST firefox-128.3.1esr-sk.xpi 659879 BLAKE2B 1b0283d450aea4c25acc6cbfe0e07410e75f1b6b25665824b0fc4ad96379ad6902341f9075ff10a5f3dd617c3c10b8bde7b49d5c3e46363ac2d9a8aea83ff42d SHA512 5139bd2a258f4ba7d3db176d017d193332876cbb7de5be935b6339adc9b9a1850cb61f48d089e7bcad909278be9a1ad35339b5c40bfd351cd7b2e044cbf5a5e1
+DIST firefox-128.3.1esr-skr.xpi 711999 BLAKE2B 6484516a00665ea0220b315a5d0e19b00acb53de2bf416422116d78bf4b9ed86263921a3738075ff47a239f065827169660e0bf6528ff5eca0e49182fbe2dc7c SHA512 2f2644de2903a7cf001f17bd3b689bb0befc55113aa8e00c130047c865d4155861c9f2906b61991f2f7c03f66c187a18797a5190ec2a1a3399c38e9f518593f1
+DIST firefox-128.3.1esr-sl.xpi 620265 BLAKE2B 13098fa09fb7ffa14ec2f86a2ba57f00163078b1bcbf0c89b57119ec1dedacaa3d4064d427a5e81fa15018c6f4574163970b20a171ca4667bc1dad926250d352 SHA512 8991676cb3d908d57d347be61ac4eef55e5ff74d35f7aa411d1ce099f705b4d6ea37a6f5798cee8e4be986169164e41b41c58181207a8301cf9b589c1a548036
+DIST firefox-128.3.1esr-son.xpi 417224 BLAKE2B 99db86c6afde6f44fa6902092079713d08a93744f7b06af77e160eaf4a54970e3c1f3db047c82814653356c25c49f4ee99bd423f7f0506e7939c987b452fe1ac SHA512 3c5463896e97b518806a134410dbb720d711b032d92526133e40039c5b8307566f496e03014c2c46cc7878a0db9a825885568e1177432ff15664d9f7bbda502e
+DIST firefox-128.3.1esr-sq.xpi 638606 BLAKE2B dda3ad677c6ee1b897b271b4619924b2dd52aa2db344aff3b92c16a8cd875ad5444664f7af171ae906c4e5e0e631473f83bfb3afde42737db7ac2d57e2d5eb55 SHA512 1aa7980bb1a026d2a0dbfc14d3204c41361a9343e84fe32cfc1595041f812bc7b193eeaac9194d46c9f5607c1129e57295cf96288151bcfc1cb67e5714adb8e6
+DIST firefox-128.3.1esr-sr.xpi 640305 BLAKE2B b1f37c732cc47a268ae4b2958b16612e16a531e1ee7fd8d686953d82735f247e4885d8bde47f64c42a3767215e87b8aa7680f5ab4119c3250bd805fcffaef90a SHA512 7d05296ef804e89fb1a2fdb59da572caf5479655270368f12ccf2c2108a2695d92cfb09a8e19315b20465734fdd57e25c9f397a3ab65fc222d1f52d51f788301
+DIST firefox-128.3.1esr-sv-SE.xpi 625711 BLAKE2B f5a02d8b16dc95b225cc5485c0ef82630145410e014bf41e2daf098a46767342ce331c18d1003b4d0b8792f10b5a11ae21cdbd44d046317ef6c86a8ea936eeb3 SHA512 cae11f08e9229415417dc9222f524f3bbaf477b903c4154e2eb63dab28a90e05c02f4477a171f88e33956e7331f68b35dbadad44a6e247449f4f754f858de2a9
+DIST firefox-128.3.1esr-szl.xpi 527346 BLAKE2B 7772984bf087bd5da4d92d6db39bc248b67fe915b0290c74b863ee8f664fe7366f9c08a4118d10f1b354192078d0193a7bb08027d1a56bd4b4644ea4d44d22b5 SHA512 4013085d6a3687e420793683d2366cb39b54265715560642b2821880423525f5ce317693f2fa4e3c9e7f63faeb52845cb3d397c5c5499c694dff7f582d86f8fc
+DIST firefox-128.3.1esr-ta.xpi 508334 BLAKE2B c815108bc75e43962afe48344e9c468f438a69fc55f39514594d4ddfc15b0e68a654c037633ea2ff798d9e1d5662f2a41dbac7ae82e7f7cd6a5d3544bcc04c94 SHA512 e6cf3b8b0ad0f23bacd9d2979d4f819e70fbcd52997daf79e0c53769af7bf296dd5205da05537df0c8c4772ec92bfb987b9a19d12abd94fbd0af097d668f7082
+DIST firefox-128.3.1esr-te.xpi 561978 BLAKE2B 66097c8b5ad1606de732624c586cb5a1697bce14e943ef4f7b13b6822c2785345544d0463e87ba18565a348dfc5fea52605951c0f3837ad475ab369d7ca1452e SHA512 b41f43a84e5039957b2c6afdd7dc7a54b66f460b727d3862075c3244ac0f1a986ff6d9421c3b503c45998e27ce8559036525a8133fab4834875174df72135728
+DIST firefox-128.3.1esr-th.xpi 699560 BLAKE2B 9aabca3e7d83908b3b7b3deb5157064d67ed18106f6144d0f2eac66098aa6efb09201385701645d3f81b41b4f6ea68d092045ed7454f5479a87efd0502f8084e SHA512 009c6b0947fed95a3d24024ae673df15f8573f139fe81ccc8d30b3e50952117623fa58d6b094c83b0ce0c28e6da327b67329bb4f1d1071f573396437b179c08c
+DIST firefox-128.3.1esr-tl.xpi 535131 BLAKE2B 4f27ea0b868a5f3892e4b446433912d8d52908083aa91fc8feb3364215040ce2c160402c29343faa6e245a13fec04abd81ae730c80af067c10af382f1f3cb6f5 SHA512 a79d992dec998466123f620ccd1c741c0720a2ad7dc9d31146c4160a1a1c282a0207d854fab532c6fda9f9195618bdd864a39822563870d2da037cfdb89f7a38
+DIST firefox-128.3.1esr-tr.xpi 639352 BLAKE2B 35abfdd44236cf1de64c3c5fee5bf5526d3fe4f1ebdc40a1c54e95cfde72b09c815e4085853359a0a1dcdda5743e6a300435062093a1b3535702e039e854c77c SHA512 bf9b9f5f9239007fa3244799ac0084cc5992157613496bcbf15c67fee23637b0e08e162bcc1552a5e42528b3d8b9c0219ae61ac1de3214c1c74316648d158358
+DIST firefox-128.3.1esr-trs.xpi 505310 BLAKE2B 39b5aeeacb0075e5ea8e9d063cc43e5c4caae19aa6f2c27bc67f7684896848e2fa2ce1fbd84ec0c397479a9e525cbeeb7845c9e9c4a9a3535ddd1d7e193e3b2d SHA512 1e9e7cfcfc9fead32037994f3569c48417784626dd3713a8b0eceb45b65d9fe441ea84ed89db5b882ea4460e8d891486e9dc460bcf323807b7e67a8ed5f1d6f9
+DIST firefox-128.3.1esr-uk.xpi 708231 BLAKE2B 90b4ddaf47f8d82c9fbaa85fa8aef53ef436879fffd4f21081e713f990459417c430450e2fe5d5a6bce8294e9ea99258b9413368da9fdf41651bde18fd3becaa SHA512 0c29eb62924dbf8178c70b8b410ae4a2f54f52cde6182463ae486b32441d8865d1a463d75ce982ba06037c01d4af47693277a5b0dfeec8198fb94be708b8864e
+DIST firefox-128.3.1esr-ur.xpi 561307 BLAKE2B 1a88914b5acd4f2fdd933d5a72eaffb586047ad8469280b1364b349067cd5396abbdaf5b37a860a5fe93b205c19dee0db4e9c2f0079311c3935bce264a5ed99f SHA512 8585316d7c1a48a2f4205c7c622c1f3ed1b55bff96deb59e991a9dc9e0ce6048f87895b8838fddf31ecf73772cba2d21e22cca4efa4f8a821a5d8f3d03b77000
+DIST firefox-128.3.1esr-uz.xpi 479735 BLAKE2B f6347a230dada12248cc3dd50687b054163c988ecf871f06e8815df4e2264a5bb3c24bad4fea40770fa7c533da6564c6a6b0484822b3ef3f589b7fc363503965 SHA512 3e7b63185c5f79ebf8e5d2c7973a66333acbe86e34c8c31925e494f99a37bdfa130a335f8e8b123c2f1dcd5de2ebec1eeaec5e676e42011b3497acc78489e74a
+DIST firefox-128.3.1esr-vi.xpi 662720 BLAKE2B ce6979931760b29283719a9e4359644c3009a29f34e7943fcbbec607450680e93ad4656839b65527dc991e633e60c1bcc74801968e23ed0d152ad553c94db2ec SHA512 130f56dc615e979a4e168533be72c37ddaed1155140c39503eac5498d68683ed81088895d29172aa7ed2ddb912f409a5e08d1b590a00a252431f5dbcf3132491
+DIST firefox-128.3.1esr-xh.xpi 418009 BLAKE2B 9ba1f877b180250bbf48770209106df37868cb2e12504d12f3adea7a1f4ecfe7bec910a80a1b8dbcdf603751a881b8cfa8e6b21a392169657dc74dda49dabad0 SHA512 3d969044933b2eb79c32c68cb247d617b9ab07411b6838b2261ed29bfe7357bd272aee4158abaf841e31a22cdf12cd4aee26bc79b089a70d76f2ccd716e0eb76
+DIST firefox-128.3.1esr-zh-CN.xpi 662340 BLAKE2B 3dd74f61ae75ecd3a14f89650c77862ff3269067d7ad4120f6ffd72c54d1c40410ff2d9a04e7a57ba1d51447e1dadb4985b4c4c3a43ee0b18e97bdde490e0200 SHA512 7f136bba190419ed5a0fbef9f960cd52eddb077b897b41b09086dd067a376b27d572961a6e4545f6de2d69b738fdfc2c90154b867863c731726826f48a5286fd
+DIST firefox-128.3.1esr-zh-TW.xpi 666615 BLAKE2B e32de7972b874e7ed948b5a0caf8af823e05b976ab59007bf9216f649b86a63be93fc7f0cb7a8d351260e4ef0d8d0317c67cf60e3612898f4c1df634edb03e93 SHA512 da06ee72e5857e61f50dd806dbe1a816191ba81c7b5f8093cb4aac319c6410829e0d838609357775720fe17854b75e1e9bb9e757ae21d20e336c284cb6d6f573
+DIST firefox-128.3.1esr.source.tar.xz 562947536 BLAKE2B ff2663743c160b227057bbf05915d27c9f04dcf605811933f91cc50b9de55c9e75c3583144fbfbe6a1bbc4570b636ba5918b30f034b6af744f615e6e9de0d594 SHA512 c5c1a2e951e0dbb1259a0f77a26b8678bfa4a4c7e909f8fcd5c6d0f807625926824ed235e114d9bab5e289232efaaf4c6691764db64860161ebc9bece9200f0c
DIST firefox-128esr-patches-03.tar.xz 14156 BLAKE2B 9a618f0ddb8596b740893dc9113f374d193a00e4e8e76dbb2794928ceaafc7b5309cb6f69f6287ae1e423f0be0a060580b0d9d59307c9889362dd17fb7d31d3d SHA512 c6ec7233b368fac623ec0cce6f5c37d358a0fa5bb2154dc67eebb50968376ca9d46f3a734f5d79a4aa4edde9e300a9c65315d0e499aa6a1325b6c76a6c164258
DIST firefox-131-patches-01.tar.xz 22188 BLAKE2B 7044be5613a50625e54694cf88ed1ee96fd2c4e39dfeeb10b68858f67eaf5a05697e70f9940a015aaa66c172590b9815c801967be578bc48996e20f753a87929 SHA512 1bef1dd2a8fd9fa0723be40d7d38343fe00f4375c15b1c2bdbe04624d94d6b96357d22c353e6ce0fe53d857c74aeddef09668cb3ebf8d6dd7a77966ca920ede7
DIST firefox-131.0-ach.xpi 468402 BLAKE2B ff7a03490b95ed57cca023e49889f516a3bf976cc0ab2645ea182882b479a122639620348b6d64e947c24c54d78add8dbee9d19c497da47ddeb36e5f5618c63f SHA512 e1947463e31a60ad49c27807927358a898b77493f773cb9e40fdf1e74c96cb94d026f746bacc37925f221215a444a6a43bafb4bbcdeb1bf15370a5935d782624
diff --git a/www-client/firefox/firefox-128.3.1.ebuild b/www-client/firefox/firefox-128.3.1.ebuild
new file mode 100644
index 000000000000..e66d33fb8c17
--- /dev/null
+++ b/www-client/firefox/firefox-128.3.1.ebuild
@@ -0,0 +1,1368 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-128esr-patches-03.tar.xz"
+
+LLVM_COMPAT=( 17 18 )
+
+PYTHON_COMPAT=( python3_{10..12} )
+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"
+ HOMEPAGE="https://www.mozilla.com/firefox https://www.mozilla.org/firefox/enterprise/"
+ SLOT="esr"
+else
+ HOMEPAGE="https://www.mozilla.com/firefox"
+ SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 multiprocessing \
+ optfeature pax-utils python-any-r1 readme.gentoo-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}
+)
+
+DESCRIPTION="Firefox Web Browser"
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
+ ${PATCH_URIS[@]}"
+S="${WORKDIR}/${PN}-${PV%_*}"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+
+IUSE="+clang dbus debug eme-free hardened hwaccel jack +jumbo-build libproxy lto openh264 pgo"
+IUSE+=" pulseaudio selinux sndio +system-av1 +system-harfbuzz +system-icu +system-jpeg"
+IUSE+=" +system-libevent +system-libvpx system-png +system-webp +telemetry wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell"
+
+REQUIRED_USE="|| ( X wayland )
+ debug? ( !system-av1 )
+ pgo? ( lto )
+ wayland? ( dbus )
+ wifi? ( dbus )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+ selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+ $(llvm_gen_dep '
+ sys-devel/clang:${LLVM_SLOT}
+ sys-devel/llvm:${LLVM_SLOT}
+ clang? (
+ sys-devel/lld:${LLVM_SLOT}
+ virtual/rust:0/llvm-${LLVM_SLOT}
+ )
+ pgo? ( sys-libs/compiler-rt-sanitizers:${LLVM_SLOT}[profile] )
+ ')
+ app-alternatives/awk
+ app-arch/unzip
+ app-arch/zip
+ >=dev-util/cbindgen-0.26.0
+ net-libs/nodejs
+ virtual/pkgconfig
+ !clang? ( >=virtual/rust-1.76 )
+ !elibc_glibc? ( dev-lang/rust )
+ amd64? ( >=dev-lang/nasm-2.14 )
+ x86? ( >=dev-lang/nasm-2.14 )
+ pgo? (
+ X? (
+ sys-devel/gettext
+ x11-base/xorg-server[xvfb]
+ x11-apps/xhost
+ )
+ !X? (
+ || (
+ gui-wm/tinywl
+ <gui-libs/wlroots-0.17.3[tinywl(-)]
+ )
+ x11-misc/xkeyboard-config
+ )
+ )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ dev-libs/expat
+ dev-libs/glib:2
+ dev-libs/libffi:=
+ >=dev-libs/nss-3.101
+ >=dev-libs/nspr-4.35
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ media-libs/freetype
+ media-libs/mesa
+ media-video/ffmpeg
+ sys-libs/zlib
+ virtual/freedesktop-icon-theme
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf:2
+ x11-libs/pango
+ x11-libs/pixman
+ dbus? (
+ sys-apps/dbus
+ )
+ jack? ( virtual/jack )
+ pulseaudio? (
+ || (
+ media-libs/libpulse
+ >=media-sound/apulse-0.1.12-r4[sdk]
+ )
+ )
+ libproxy? ( net-libs/libproxy )
+ selinux? ( sec-policy/selinux-mozilla )
+ sndio? ( >=media-sound/sndio-1.8.0-r1 )
+ system-av1? (
+ >=media-libs/dav1d-1.0.0:=
+ >=media-libs/libaom-1.0.0:=
+ )
+ system-harfbuzz? (
+ >=media-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]
+ )
+ wifi? (
+ kernel_linux? (
+ || (
+ net-misc/networkmanager
+ net-misc/connman[networkmanager]
+ )
+ sys-apps/dbus
+ )
+ )
+ X? (
+ virtual/opengl
+ x11-libs/cairo[X]
+ x11-libs/gtk+:3[X]
+ x11-libs/libX11
+ x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ x11-libs/libXrandr
+ x11-libs/libxcb:=
+ )"
+RDEPEND="${COMMON_DEPEND}
+ hwaccel? (
+ media-video/libva-utils
+ sys-apps/pciutils
+ )
+ jack? ( virtual/jack )
+ openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libICE
+ x11-libs/libSM
+ )"
+
+# ESR and rapid dependencies.
+if [[ -n ${MOZ_ESR} ]] ; then
+ RDEPEND+=" !www-client/firefox:rapid"
+else
+ RDEPEND+=" !www-client/firefox:esr"
+fi
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+ MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+ if ! has_version -b "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!" >&2
+ einfo "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+=( skr )
+MOZ_LANGS+=( son )
+MOZ_LANGS+=( szl )
+MOZ_LANGS+=( ta )
+MOZ_LANGS+=( te )
+MOZ_LANGS+=( tl )
+MOZ_LANGS+=( trs )
+MOZ_LANGS+=( ur )
+MOZ_LANGS+=( xh )
+
+mozilla_set_globals() {
+ # https://bugs.gentoo.org/587334
+ local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+ fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+ )
+
+ local lang xflag
+ for lang in "${MOZ_LANGS[@]}" ; do
+ # en and en_US are handled internally
+ if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+ continue
+ fi
+
+ # strip region subtag if $lang is in the list
+ if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+ xflag=${lang%%-*}
+ else
+ xflag=${lang}
+ fi
+
+ SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+ SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> ${MOZ_P_DISTFILES}-${lang}.xpi"
+ SRC_URI+=" )"
+ IUSE+=" l10n_${xflag/[_@]/-}"
+ done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -ne 1 ]] ; then
+ die "${FUNCNAME} requires exact one argument"
+ fi
+
+ einfo "Clearing cargo checksums for ${1} ..."
+
+ sed -i \
+ -e 's/\("files":{\)[^}]*/\1/' \
+ "${S}"/third_party/rust/${1}/.cargo-checksum.json || die
+}
+
+moz_install_xpi() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local DESTDIR=${1}
+ shift
+
+ insinto "${DESTDIR}"
+
+ local emid xpi_file xpi_tmp_dir
+ for xpi_file in "${@}" ; do
+ emid=
+ xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+ # Unpack XPI
+ unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+ # Determine extension ID
+ if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+ emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+ [[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf"
+ elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+ emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json")
+ [[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json"
+ else
+ die "failed to determine extension id"
+ fi
+
+ einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+ newins "${xpi_file}" "${emid}.xpi"
+ done
+}
+
+mozconfig_add_options_ac() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local reason=${1}
+ shift
+
+ local option
+ for option in ${@} ; do
+ echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+ done
+}
+
+mozconfig_add_options_mk() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local reason=${1}
+ shift
+
+ local option
+ for option in ${@} ; do
+ echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+ done
+}
+
+mozconfig_use_enable() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 1 ]] ; then
+ die "${FUNCNAME} requires at least one arguments"
+ fi
+
+ local flag=$(use_enable "${@}")
+ mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+mozconfig_use_with() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 1 ]] ; then
+ die "${FUNCNAME} requires at least one arguments"
+ fi
+
+ local flag=$(use_with "${@}")
+ mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+virtwl() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+ [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset"
+ tinywl -h >/dev/null || die 'tinywl -h failed'
+
+ local VIRTWL VIRTWL_PID
+ coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; }
+ local -x WAYLAND_DISPLAY
+ read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+ debug-print "${FUNCNAME}: $@"
+ "$@"
+ local r=$?
+
+ [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+ exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+ return $r
+}
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+ if use pgo ; then
+ if ! has usersandbox $FEATURES ; then
+ die "You must enable usersandbox as X server can not run as root!"
+ fi
+ fi
+
+ # Ensure we have enough disk space to compile
+ if use pgo || 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-r1_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
+
+ # Clear tons of conditions, since PGO is hardware-dependant.
+ addpredict /dev
+ fi
+
+ if ! mountpoint -q /dev/shm ; then
+ # If /dev/shm is not available, configure is known to fail with
+ # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py
+ ewarn "/dev/shm is not mounted -- expect build failures!"
+ fi
+
+ # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+ # Note: These are for Gentoo Linux use ONLY. For your own distribution, please
+ # get your own set of keys.
+ if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+ MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+ fi
+
+ if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+ MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+ fi
+
+ # Mozilla API keys (see https://location.services.mozilla.com/api)
+ # Note: These are for Gentoo Linux use ONLY. For your own distribution, please
+ # get your own set of keys.
+ if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+ MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+ fi
+
+ # Ensure we use C locale when building, bug #746215
+ export LC_ALL=C
+ fi
+
+ 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
+
+ # Workaround for bgo#917599
+ if has_version ">=dev-libs/icu-74.1" && use system-icu ; then
+ eapply "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch
+ fi
+ rm -v "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch || die
+
+ # Workaround for bgo#915651 on musl
+ if use elibc_glibc ; then
+ rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die
+ fi
+
+ eapply "${WORKDIR}/firefox-patches"
+
+ # Allow user to apply any additional patches without modifing ebuild
+ eapply_user
+
+ # Make cargo respect MAKEOPTS
+ export CARGO_BUILD_JOBS="$(makeopts_jobs)"
+
+ # Workaround for bgo#915651
+ if ! use elibc_glibc ; then
+ if use amd64 ; then
+ export RUST_TARGET="x86_64-unknown-linux-musl"
+ elif use x86 ; then
+ export RUST_TARGET="i686-unknown-linux-musl"
+ elif use arm64 ; then
+ export RUST_TARGET="aarch64-unknown-linux-musl"
+ elif use ppc64 ; then
+ export RUST_TARGET="powerpc64le-unknown-linux-musl"
+ else
+ die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651"
+ fi
+ fi
+
+ # Make LTO respect MAKEOPTS
+ sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+ "${S}"/build/moz.configure/lto-pgo.configure || die "Failed sedding multiprocessing.cpu_count"
+
+ # Make ICU respect MAKEOPTS
+ sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+ "${S}"/intl/icu_sources_data.py || die "Failed sedding multiprocessing.cpu_count"
+
+ # Respect MAKEOPTS all around (maybe some find+sed is better)
+ sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+ "${S}"/python/mozbuild/mozbuild/base.py || die "Failed sedding multiprocessing.cpu_count"
+
+ sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+ "${S}"/third_party/libwebrtc/build/toolchain/get_cpu_count.py || die "Failed sedding multiprocessing.cpu_count"
+
+ sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+ "${S}"/third_party/libwebrtc/build/toolchain/get_concurrent_links.py ||
+ die "Failed sedding multiprocessing.cpu_count"
+
+ sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+ "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed sedding multiprocessing.cpu_count"
+
+ sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+ "${S}"/python/mozbuild/mozbuild/code_analysis/mach_commands.py || die "Failed sedding multiprocessing.cpu_count"
+
+ # sed-in toolchain prefix
+ sed -i \
+ -e "s/objdump/${CHOST}-objdump/" \
+ "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py || die "sed failed to set toolchain prefix"
+
+ sed -i \
+ -e 's/ccache_stats = None/return None/' \
+ "${S}"/python/mozbuild/mozbuild/controller/building.py || die "sed failed to disable ccache stats call"
+
+ einfo "Removing pre-built binaries ..."
+
+ find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die
+
+ # Clear checksums from cargo crates we've manually patched.
+ # moz_clear_vendor_checksums xyz
+
+ # Respect choice for "jumbo-build"
+ # Changing the value for FILES_PER_UNIFIED_FILE may not work, see #905431
+ if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then
+ local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16}
+ elog ""
+ elog "jumbo-build defaults modified to ${my_files_per_unified_file}."
+ elog "if you get a build failure, try undefining FILES_PER_UNIFIED_FILE,"
+ elog "if that fails try -jumbo-build before opening a bug report."
+ elog ""
+
+ sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \
+ python/mozbuild/mozbuild/frontend/data.py ||
+ die "Failed to adjust FILES_PER_UNIFIED_FILE in python/mozbuild/mozbuild/frontend/data.py"
+ sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE = "${my_files_per_unified_file}"/" \
+ js/src/moz.build ||
+ die "Failed to adjust FILES_PER_UNIFIED_FILE in js/src/moz.build"
+ fi
+
+ # Create build dir
+ BUILD_DIR="${WORKDIR}/${PN}_build"
+ mkdir -p "${BUILD_DIR}" || die
+
+ # Write API keys to disk
+ echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+ echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die
+ echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # Show flags set at the beginning
+ einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+ einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+ einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+ einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+ einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+ local have_switched_compiler=
+ if use clang; then
+ # Force clang
+ einfo "Enforcing the use of clang due to USE=clang ..."
+
+ local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
+ [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
+ [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+ if tc-is-gcc; then
+ have_switched_compiler=yes
+ fi
+
+ AR=llvm-ar
+ CC=${CHOST}-clang-${version_clang}
+ CXX=${CHOST}-clang++-${version_clang}
+ NM=llvm-nm
+ RANLIB=llvm-ranlib
+ elif ! use clang && ! tc-is-gcc ; then
+ # Force gcc
+ have_switched_compiler=yes
+ einfo "Enforcing the use of gcc due to USE=-clang ..."
+ AR=gcc-ar
+ CC=${CHOST}-gcc
+ CXX=${CHOST}-g++
+ NM=gcc-nm
+ RANLIB=gcc-ranlib
+ fi
+
+ if [[ -n "${have_switched_compiler}" ]] ; then
+ # Because we switched active compiler we have to ensure
+ # that no unsupported flags are set
+ strip-unsupported-flags
+ fi
+
+ # Ensure we use correct toolchain,
+ # AS is used in a non-standard way by upstream, #bmo1654031
+ export HOST_CC="$(tc-getBUILD_CC)"
+ export HOST_CXX="$(tc-getBUILD_CXX)"
+ export AS="$(tc-getCC) -c"
+
+ # Configuration tests expect llvm-readelf output, bug 913130
+ READELF="llvm-readelf"
+
+ tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
+
+ # Pass the correct toolchain paths through cbindgen
+ if tc-is-cross-compiler ; then
+ export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}"
+ fi
+
+ # Set MOZILLA_FIVE_HOME
+ export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+ # python/mach/mach/mixin/process.py fails to detect SHELL
+ export SHELL="${EPREFIX}/bin/bash"
+
+ # Set state path
+ export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+ # Set MOZCONFIG
+ export MOZCONFIG="${S}/.mozconfig"
+
+ # Initialize MOZCONFIG
+ mozconfig_add_options_ac '' --enable-application=browser
+ mozconfig_add_options_ac '' --enable-project=browser
+
+ # Set Gentoo defaults
+ if use telemetry; then
+ export MOZILLA_OFFICIAL=1
+ fi
+
+ mozconfig_add_options_ac 'Gentoo default' \
+ --allow-addon-sideload \
+ --disable-cargo-incremental \
+ --disable-crashreporter \
+ --disable-disk-remnant-avoidance \
+ --disable-geckodriver \
+ --disable-gpsd \
+ --disable-install-strip \
+ --disable-legacy-profile-creation \
+ --disable-parental-controls \
+ --disable-strip \
+ --disable-tests \
+ --disable-updater \
+ --disable-valgrind \
+ --disable-wmf \
+ --enable-negotiateauth \
+ --enable-new-pass-manager \
+ --enable-official-branding \
+ --enable-release \
+ --enable-system-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 ; 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, since it's not activated automatically via "known arches" list.
+ # Update 128.1.0: Disable jit on riscv (this line can be blanked to disable by default),
+ # bgo#937867.
+ use riscv && mozconfig_add_options_ac 'Disable JIT for RISC-V 64' --disable-jit
+
+ if [[ -s "${S}/api-google.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+ else
+ einfo "Building without Google API key ..."
+ fi
+
+ if [[ -s "${S}/api-location.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-location-service-api-keyfile="${S}/api-location.key"
+ else
+ einfo "Building without Location API key ..."
+ fi
+
+ if [[ -s "${S}/api-mozilla.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+ else
+ einfo "Building without Mozilla API key ..."
+ fi
+
+ mozconfig_use_with system-av1
+ mozconfig_use_with system-harfbuzz
+ mozconfig_use_with system-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
+
+ if use hardened ; then
+ mozconfig_add_options_ac "+hardened" --enable-hardening
+ append-ldflags "-Wl,-z,relro -Wl,-z,now"
+
+ # Increase the FORTIFY_SOURCE value, #910071.
+ sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' "${S}"/build/moz.configure/toolchain.configure || die
+ fi
+
+ local myaudiobackends=""
+ use jack && myaudiobackends+="jack,"
+ use sndio && myaudiobackends+="sndio,"
+ use pulseaudio && myaudiobackends+="pulseaudio,"
+ ! use pulseaudio && myaudiobackends+="alsa,"
+
+ mozconfig_add_options_ac '--enable-audio-backends' --enable-audio-backends="${myaudiobackends::-1}"
+
+ mozconfig_use_enable wifi necko-wifi
+
+ ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' --disable-unified-build
+
+ if use X && use wayland ; then
+ mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland
+ elif ! use X && use wayland ; then
+ mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland-only
+ else
+ mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only
+ fi
+
+ # LTO is handled via configure
+ filter-lto
+
+ if use lto ; then
+ if use clang ; then
+ # Upstream only supports lld or mold when using clang.
+ if tc-ld-is-mold ; then
+ # mold expects the -flto line from *FLAGS configuration, bgo#923119
+ append-ldflags "-flto=thin"
+ mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
+ else
+ mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld
+ fi
+
+ mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+ else
+ # ThinLTO is currently broken, see bmo#1644409.
+ # mold does not support gcc+lto combination.
+ mozconfig_add_options_ac '+lto' --enable-lto=full
+ mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd
+ fi
+
+ 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
+
+ mozconfig_use_enable debug
+ if use debug ; then
+ mozconfig_add_options_ac '+debug' --disable-optimize
+ mozconfig_add_options_ac '+debug' --enable-jemalloc
+ mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+ else
+ mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing
+
+ if is-flag '-g*' ; then
+ if use clang ; then
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
+ else
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols
+ fi
+ else
+ mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols
+ fi
+
+ if is-flag '-O0' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0
+ elif is-flag '-O4' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4
+ elif is-flag '-O3' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3
+ elif is-flag '-O1' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1
+ elif is-flag '-Os' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os
+ else
+ mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2
+ fi
+ fi
+
+ # Debug flag was handled via configure
+ filter-flags '-g*'
+
+ # Optimization flag was handled via configure
+ filter-flags '-O*'
+
+ # elf-hack
+ # Filter "-z,pack-relative-relocs" and let the build system handle it instead.
+ if use amd64 || use x86 ; then
+ filter-flags "-z,pack-relative-relocs"
+
+ if tc-ld-is-mold ; then
+ # relr-elf-hack is currently broken with mold, bgo#916259
+ mozconfig_add_options_ac 'disable elf-hack with mold linker' --disable-elf-hack
+ else
+ mozconfig_add_options_ac 'relr elf-hack' --enable-elf-hack=relr
+ fi
+ elif use ppc64 || use riscv ; then
+ # '--disable-elf-hack' is not recognized on ppc64/riscv,
+ # see bgo #917049, #930046
+ :;
+ else
+ mozconfig_add_options_ac 'disable elf-hack on non-supported arches' --disable-elf-hack
+ fi
+
+ if ! use elibc_glibc; then
+ mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+ fi
+
+ # System-av1 fix
+ use system-av1 && append-ldflags "-Wl,--undefined-version"
+
+ # 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
+
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
+
+ if ! use telemetry; then
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_CRASHREPORTER=0"
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_DATA_REPORTING=0"
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_SERVICES_HEALTHREPORT=0"
+ mozconfig_add_options_mk '-telemetry setting' "MOZ_TELEMETRY_REPORTING=0"
+ fi
+
+ # Disable notification when build system has finished
+ export MOZ_NOSPAM=1
+
+ # Portage sets XARGS environment variable to "xargs -r" by default which
+ # breaks build system's check_prog() function which doesn't support arguments
+ mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs"
+
+ # Set build dir
+ mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+ # Show flags we will use
+ einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+ einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+ einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+ einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+ einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+ # Handle EXTRA_CONF and show summary
+ local ac opt hash reason
+
+ # Apply EXTRA_ECONF entries to $MOZCONFIG
+ if [[ -n ${EXTRA_ECONF} ]] ; then
+ IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+ for opt in "${ac[@]}"; do
+ mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+ done
+ fi
+
+ echo
+ echo "=========================================================="
+ echo "Building ${PF} with the following configuration"
+ grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+ [[ -z ${hash} || ${hash} == \# ]] \
+ || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}"
+ printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}"
+ done
+ echo "=========================================================="
+ echo
+
+ ./mach configure || die
+}
+
+src_compile() {
+ local virtx_cmd=
+
+ if 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 (122.0 supports all platforms, bmo#1865969)
+ exeinto "${MOZILLA_FIVE_HOME}"
+ doexe "${BUILD_DIR}"/dist/bin/vaapitest
+
+ # Install the v4l2test on supported arches (+ arm, + riscv64 when keyworded)
+ if use arm64 ; then
+ exeinto "${MOZILLA_FIVE_HOME}"
+ doexe "${BUILD_DIR}"/dist/bin/v4l2test
+ fi
+ fi
+
+ if ! use gmp-autoupdate ; then
+ local plugin
+ for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+ einfo "Disabling auto-update for ${plugin} plugin ..."
+ cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin"
+ pref("media.${plugin}.autoupdate", false);
+ EOF
+ done
+ fi
+
+ # Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it
+ if use system-harfbuzz ; then
+ cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref"
+ sticky_pref("gfx.font_rendering.graphite.enabled", true);
+ EOF
+ fi
+
+ # Add telemetry config prefs, just in case something happens in future and telemetry build
+ # options stop working.
+ if ! use telemetry ; then
+ cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set telemetry prefs"
+ sticky_pref("toolkit.telemetry.dap_enabled", false);
+ pref("toolkit.telemetry.dap_helper", "");
+ pref("toolkit.telemetry.dap_leader", "");
+ EOF
+ fi
+
+ # Install language packs
+ local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name '*.xpi') )
+ if [[ -n "${langpacks}" ]] ; then
+ moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" "${langpacks[@]}"
+ fi
+
+ # Install icons
+ local icon_srcdir="${S}/browser/branding/official"
+ 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 exec_command="${PN}"
+ local icon="${PN}"
+ local use_wayland="false"
+
+ if [[ -n ${MOZ_ESR} ]] ; then
+ local desktop_filename="${PN}-esr.desktop"
+ else
+ local desktop_filename="${PN}.desktop"
+ fi
+
+ if use wayland ; then
+ use_wayland="true"
+ fi
+
+ cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+ sed -i \
+ -e "s:@NAME@:${app_name}:" \
+ -e "s:@EXEC@:${exec_command}:" \
+ -e "s:@ICON@:${icon}:" \
+ "${WORKDIR}/${PN}.desktop-template" || die
+
+ newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+ rm "${WORKDIR}/${PN}.desktop-template" || die
+
+ if use gnome-shell ; then
+ # Install search provider for Gnome
+ insinto /usr/share/gnome-shell/search-providers/
+ doins browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini
+
+ insinto /usr/share/dbus-1/services/
+ doins browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service
+
+ # Toggle between rapid and esr desktop file names
+ sed -e "s/firefox.desktop/${desktop_filename}/g" \
+ -i "${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini" ||
+ die "Failed to sed org.mozilla.firefox.search-provider.ini file."
+
+ # Make the dbus service aware of a previous session, bgo#939196
+ sed -e \
+ "s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox --dbus-service \/usr\/bin\/firefox/g" \
+ -i "${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" ||
+ die "Failed to sed org.mozilla.firefox.SearchProvider.service dbus file"
+
+ # Update prefs to enable Gnome search provider
+ cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable gnome-search-provider via prefs"
+ pref("browser.gnome-search-provider.enabled", true);
+ EOF
+ fi
+
+ # Install wrapper script
+ [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+ newbin "${FILESDIR}/${PN}-r1.sh" ${PN}
+
+ # Update wrapper
+ sed -i \
+ -e "s:@PREFIX@:${EPREFIX}/usr:" \
+ -e "s:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \
+ -e "s:@APULSELIB_DIR@:${apulselib}:" \
+ -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+ "${ED}/usr/bin/${PN}" || die
+
+ readme.gentoo_create_doc
+}
+
+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
+
+ # bug 835078
+ if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+ ewarn "You have nouveau drivers installed in your system and 'hwaccel' "
+ ewarn "enabled for Firefox. Nouveau / your GPU might not support the "
+ ewarn "required EGL, so either disable 'hwaccel' or try the workaround "
+ ewarn "explained in https://bugs.gentoo.org/835078#c5 if Firefox crashes."
+ fi
+
+ readme.gentoo_print_elog
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "desktop notifications" x11-libs/libnotify
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+ optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal
+ if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+ optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver
+ fi
+
+ if ! has_version "sys-libs/glibc"; then
+ elog
+ elog "glibc not found! You won't be able to play DRM content."
+ elog "See Gentoo bug #910309 or upstream bug #1843683."
+ elog
+ fi
+}