commit:     ad92ec04ea56edff36fac90930273786dcbfbbc1
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 26 20:06:33 2024 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Nov 26 20:06:33 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ad92ec04

www-client/firefox: add 128.5.0

 - add upstream (rapid) patches for gcc-15,
 - add 'wasm' use flag and functionality to 128esr,
 - default back to +clang since the problems we had with it are mostly solved
   by slotted rust,
 - sync all relevant changes from rapid to esr (rust, lto, pgo).

Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 www-client/firefox/Manifest               |  102 +++
 www-client/firefox/firefox-128.5.0.ebuild | 1368 +++++++++++++++++++++++++++++
 2 files changed, 1470 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index fd636636a44f..5760f719219a 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -200,7 +200,109 @@ DIST firefox-128.4.0esr-xh.xpi 418140 BLAKE2B 
cf8b826b22f7c9ac50c8d063b817aeace0
 DIST firefox-128.4.0esr-zh-CN.xpi 669752 BLAKE2B 
7271c99939f2adffed7730ecfa207579e6279bc7c19058e54cf7be7896e030a3942b3a1229f424e135630c832db36f6db11f7a92ee1fd743673ae9ac013cfc7b
 SHA512 
14404537fc9b3de89964432a475cf9b526be4023b3b9b29ce4d7c48646af564ea734df7ef4775e4fb52d8320cdbcb114e984d6f651b0c14e8f90040871390877
 DIST firefox-128.4.0esr-zh-TW.xpi 672066 BLAKE2B 
3e90953b69d12ad01f0a4aa7d48d1874e9a098363914fdbb0dcbf77a37af848fac65e9c99bd3ead6da34df827990eb6c8b25177a25daa66073e7022318a39e0d
 SHA512 
33a1d240a10fdf0be29b98065964a8e5ef6c698e9b2dfd5889979b8098fc12514671b7438600a4dce47ce48596e7447ee6def8900d23250b718b70483c1bbc55
 DIST firefox-128.4.0esr.source.tar.xz 558619512 BLAKE2B 
1f0528c8806bb034af623f2022740bb5056ea11817b9cb7154a60b87f04051ba5ae06b0daf55e6b03b7531c369deb871d3d3579a86f3ca19f3ab71ccb45243f9
 SHA512 
e720b1f993926d73f5a5727648f753176ac2fd093fb0b71393946bbc5919ce5fc7b88b82960bd1aa427b5663c7f659828dc6702485fc0c1e7a6961571c67faa3
+DIST firefox-128.5.0esr-ach.xpi 465498 BLAKE2B 
bf35fffcb586cdeb9b9f14fb7017dea9a879c2954f4ff34ef9d0bf5f1b5300907223dc6036b63961ea3e2c0297fcc2d3c4ec304744916a048cedc383c7d0def9
 SHA512 
dc50d88ca036a4098e9b7e69bbb381761fef3cfdad692173b061385a906b10ded763fb73f173f18fb3b5d78bc4ddd8fd42823156d65fe7e218ff2f8385bdbc19
+DIST firefox-128.5.0esr-af.xpi 418816 BLAKE2B 
246cbdfc575a8c99aedb0d45b890aecea168b02880bdab22bf23fc6a745b29c67a2136836657c6599c00811a581114de1d0c6e266eb4ee62f2b9496ac09c2b2c
 SHA512 
afffb4fd3146ec2545f603750b9cbd897e80c55e2df207f7b3fe9e6b10a008c41934a611e9508b41d4e63c97622ebf12fbb224eda0a74e91202bcbcede620432
+DIST firefox-128.5.0esr-an.xpi 508455 BLAKE2B 
9156c38c1f83d865fbd3d11a08f631e3363dc8f4aff565a0f57204db895956c4affa225cff18e03a5f38769a8bdc2c0c1832046340e8fcdd479c2878215dbfed
 SHA512 
8c974391d5d94c01f5ee2b01d6eaf8da06c2dc9c4ef942819192b5b18e805086afa10337c24c312254477571a5c4150ee165da4cc916c80190fb989800cd2d63
+DIST firefox-128.5.0esr-ar.xpi 630813 BLAKE2B 
8c1f4c14a108fe236bf1b5a0a6c52d5e2cfe13edf38ec8b1e689a9137ead71b13571943f9d1e01f11e0d43c47f650991df0939fcbdb6bf9f3138b3fe73c2efea
 SHA512 
761ad7c80494c443bdd3c76d479a9744b11687d51a7bc6562d2d95114dfb099185b925a1d4a9c52e36c1ed44217c1dbf390d30626e7366dd1b423c9d435e1322
+DIST firefox-128.5.0esr-ast.xpi 497760 BLAKE2B 
4b8227fc6729a29c3227787833337cfe64d950738c5e22c2d02c70f0e70a90f545a66396014d038cd08a9eddaadcc3b889303959fee4468c182594d9e640825e
 SHA512 
c638049b7c1db50a80728341f918ad3f70740e423db2010789ff952a873e1f0b5f6dbbfc7f37da7bdcfb2e6fbc46c5e966b702e75503acdcb4263148bb336ace
+DIST firefox-128.5.0esr-az.xpi 492199 BLAKE2B 
2c7947f0e2ca6483fe4878e54c76d34d1b406a7152ac29a3869e4717e2b4c45aeee34d60c026624a5ebae01f09b7abcad9d9f1e38396c483f72989f2fe6a0110
 SHA512 
4cf52a65a3d0a9a0cff24823ef9a1b858e0bfe508a57ea46b3b46f41d12710bd0ac661d5fe2be0ef1c17f853438828dd1004f0e2ac16d8cbf6bc5c69c356cb6a
+DIST firefox-128.5.0esr-be.xpi 731599 BLAKE2B 
f75f9eb40f015a2844040295d5a91bdcecd485158b57eeae790801a887e222f9eba8f50de3faa533982e44b94fccb209487a5abc983f4591016d45abd6e49ad4
 SHA512 
782355f6a7a93e840fb906485f49b7bdafdfeaf2d81fd743d5a05ec49f85ebc6a37ce53ac8f1e068ec4ea07786b807b2837a892e8efe78c1f137b9f807228d63
+DIST firefox-128.5.0esr-bg.xpi 647385 BLAKE2B 
82cae1f9fe9a95c89a02459cbe188a32c47f551a321cf4ba1581cc94aa7bdc59ce30f2b8f51a223ee0ae80eb5254dbb9dbbc705f3ca830c27abf3ba134792eb3
 SHA512 
5bac62823bcc93c1d64ee925852359de2ec7c930f0bc33b81749c0b64477194447f54772d08102eb3eb9b07c76273c0bf18e6281c53f4ff7dc842f9aa7a7f6eb
+DIST firefox-128.5.0esr-bn.xpi 582943 BLAKE2B 
36c9d329c6c743b79e622bc914cca70ca7d75edac681664cbce069a9669ac9bc54cfa990910eb43e3b6b3b34b60307255772b71598fd0601d9f4bcb331251ae3
 SHA512 
6fe68221b1b1dc87d3fa35042563d3050a73897843229b70f35f12584d955fe0bd410e18de424a6080f43e2c449b1b2fb37ef7ff356f185d6c717eace7270c25
+DIST firefox-128.5.0esr-br.xpi 595342 BLAKE2B 
3833d29ffb7223e7617010f6aa706982868181d4508b9b021010da976baeb6011fcb46cf66bc6cbca36278af6d6a50ac757517939877937212f2f0056de8d244
 SHA512 
5de65ca1fbe41f554be41822e46471168ca64e96259cbb63a66d52391e3f98788df5968990e1030db84016df93366070e70a5af5c9b4177372c64fb0264b85ff
+DIST firefox-128.5.0esr-bs.xpi 515693 BLAKE2B 
0e6097957cf9c2863dc7d3399ae7db55db6dcdb4e59919fa80af3adf5b986941eb85e79d97d330e5d057c6d9697a6b9c8f76e919477ff160d549cbb9ddb40563
 SHA512 
d3076534c9e0f897eeb9b49eccbc186521edfddebf6da036e0e56b64e20f104031aa4b38135f72f5b41096c9eb567c8fc09764fd4ad20691a38d2a58f5df62e9
+DIST firefox-128.5.0esr-ca-valencia.xpi 547680 BLAKE2B 
22392ccfd59cd23ef8b5fdd783402816d76c2d0d41d128b51ad67ec25bf50d22d75f61b454b9ab0ddd93bb2817c7613c0e47c92fdd76371e1d1bcc17e83f865c
 SHA512 
7f99ac56b2a443cdca4655ebc66272eed5abf41bfa952e9a89456c038b226bb715bb6f2302cf249abf8bd3fdebcf93017faee6aa0f3ff2aaff6a644f9d1a60c8
+DIST firefox-128.5.0esr-ca.xpi 599229 BLAKE2B 
c9c32ee9e178306cb57a620844a0c7c2e523ed7864294eecd7d1073d9bb24be7f09ee1203f9f7aab620e9682c917c54665f9c9f58cc0146af1c21b8546626454
 SHA512 
35b7d35a29a18df59a5709b708f12ee7e1e32c8805b646e5afde5613dca3a60e776cfe2693541ddd508c7106e0e16460bac4cae77b7768a2d5938356a86c39f9
+DIST firefox-128.5.0esr-cak.xpi 594629 BLAKE2B 
e0bdd5ea097b3068c124eae9533c28cd794f62bcafa75054b0395acbd1763aa2906d4b020ee2cd320f74d18f822472e0492487d23cb0e6e06c517ccebeb60af2
 SHA512 
57cc700cbb36bcca90cf7bcd65a9f73a6f887f7f88cb380ffe0bae520df622168ae6b3f8cb1cb596b1a3c56c98eff19d2e02e17df71552f3844613fdece1e60c
+DIST firefox-128.5.0esr-cs.xpi 675122 BLAKE2B 
2c8570f489b0eddc1539dca1d17995e9073baf695a9e51296bfbb24d102df3d5e0dcbc1a87ed3f8041b0eed473135ffa75ce6a0f15bf58a1524f3071c3289085
 SHA512 
0cf1e0c3a7784a76cdb73c486b80938c823c07263f944f04cdcab356d9b55bae1f3112c98cfd296b7a0129260e7a11133982537947e9feb670a68e6b9b3e0e22
+DIST firefox-128.5.0esr-cy.xpi 641499 BLAKE2B 
f9bea8e5cbc50b0efa6c299406071d70e2eac26b4ae182c39aeb85bacf0c0c543beeed514f1532b8d58bf56567d49dc29e940bc3e90759b4a1bc39ceda43b4a6
 SHA512 
93f8fff7e76c7f1b7c116474690870c413058ff2d166bfd1e9377e86f529d06abd4b0c6b0df4d104718b38b84ebf945b0865055eb33f3ec5e92ba5d1597943a6
+DIST firefox-128.5.0esr-da.xpi 624940 BLAKE2B 
df8c13e3ca37feca518068ba826e5d71e6fbf9fadfc757fd6ae1b842b3d78720a0558a5fda2a0afce17086e96f7a5eb8bb51979b7584ba238c4421886c1896f3
 SHA512 
de3cc4c85f0507e66a2c8eeec1aa6b7e69dc3f3ec5c51a205fd6bec152a8299c68b147807aa18a6cda17187d004bf4a9cbd8d38c0d71cec5f4825a0fddbc1a74
+DIST firefox-128.5.0esr-de.xpi 647909 BLAKE2B 
66f63632fccf902c0640e8c05da3bc73333db75c5d4eecb9dddeba41738e47daedc2bf63773ce1f0ef58672273659fc1298c672b324410425542f5e7c1859d56
 SHA512 
6f27c2935bbbdfec7247399397bd99b48582106abbd20b5b3227357e713001bcb9946e9a34b914a8fd5486b451c12792771776b8034159fc34a86df9160cd5bd
+DIST firefox-128.5.0esr-dsb.xpi 667676 BLAKE2B 
e9f527829778e7ff217aac88fabef7c549368dcc31890f26da7531bad031e1d1a102f4dd70953e705e6aeb195be5ea28b6c50f7393e27a252027dc0110e1cccf
 SHA512 
ae9c5c5e1272d36803a807191a1e30ec2b53520b267d8b7e5664983f4b56aae541586a23202c881eb81a0f3e30d734e6c340d42e57c72083c750daf064c3e0f3
+DIST firefox-128.5.0esr-el.xpi 752467 BLAKE2B 
b78f337ee9bd367432274802d50dd9925b62eb8a1cc35fad2240f1919dbf0f3a508f2b68c4b743aa8422649b1ad7d21ad3efa0d1a0002dd8645f7102c9e9e64c
 SHA512 
e8ad03e664e000f89ab53ad626f3afe0589090de0c887470db74a9e951c3c1968e23f1d2db613d6c974af6bd93b308798410e2f429e81372803bd44ccd1fd357
+DIST firefox-128.5.0esr-en-CA.xpi 597227 BLAKE2B 
de96e6dca4a53dd3d94567dc7d2a9a55a774fdb12d36314de95249559a64e01b835be861d2baa013f6836647cf69fcca3c0278309cf539036f1e78eb97c4a523
 SHA512 
a040bee5db23230253f6b045890a89683cbfd0d20d919465af8fac6fca7084acd05ccd5bcbe888f5e9adcae4906409b5741970b642052e9de96601a2f41c6b65
+DIST firefox-128.5.0esr-en-GB.xpi 600786 BLAKE2B 
6cdbfc961e2aec0cc0cfaf177b831c80bbd149b36813680a496e57afbc647e3abaa4c4ca14254858427db9cd7246076346ab77bd1883f313357ed1ac6d5f0893
 SHA512 
9323d497c6d5c479d5617e1634ea8436ca1e6dbc4d828da577abdbd95b1ac2c93e4abe656dce47052948be3432be7650a153fc9bf9d9b78377835fc2be481629
+DIST firefox-128.5.0esr-eo.xpi 628837 BLAKE2B 
0e6caa5aaddaa788eb8d9a77bd634ef3826f070c470f07148b4cd8984ddd696aa9ff1c09c15d5a6e1b524da4c071ab5766abbac1847f1eb23c57b598ca22eb35
 SHA512 
f4cfc0c0ca1dd6a9270644d23b514c8f030b6ff9478023179f53195b1b94512fc71882b4cfdb557634c12fbb533282d38997cb022ac4f31a19e8be0fccb42b0e
+DIST firefox-128.5.0esr-es-AR.xpi 644969 BLAKE2B 
f57e730552ea93996234cc0b5f689389c3b7ed5f58590fc76090148a2a704b6dfe8229ea73964b721b1c7583de2e4d7900efbb8d294905705cedb95cb1a32c06
 SHA512 
7e24898d23bc73a261f6a28181e500d150f2e869700e1776ba1d97e8799d96498f241b362a0cc073ab1d7115cf238a1472cbfa07216d607465fa739783fac424
+DIST firefox-128.5.0esr-es-CL.xpi 644432 BLAKE2B 
5fb783c19538de4b54c9399b065681e28c54c55b846ef6e10f03442d30e9bb14b205231128b0deddc137490e8e6062356668e245557bda4e8d06ce4a2ea782ac
 SHA512 
f990fdbb8d5e09681286966c11a10404169d46887d144596dd1f032c61efc29ca8e9e89802b257d60821ff4adcb3e6902e5d0705d0adb57b26f6733e8cb35159
+DIST firefox-128.5.0esr-es-ES.xpi 637342 BLAKE2B 
f4822d1bfb2c983d873ee04093690d68ed7fbde91cbb93353a554a6030f6ac239aad167742611fcc2f9bd947c7cb0cae18570c11505bf2cd7aa3043a191014b9
 SHA512 
5b336ee371315f8d80b672a7154b2b13fc35b261f228a787c9cfb5dc136ec5bbc01ff655eeb167f4dcf3f082a082d7f135798361a9e2a32fad271c08f7a1081c
+DIST firefox-128.5.0esr-es-MX.xpi 638921 BLAKE2B 
1165b0551bcdf137dec09d45ab31c70a50a8dd3a2e60af1b8dbdf741da19694058232e7c6d780e2190a4bb8c49767849a3120f086657dfc1c5259078f170bfe3
 SHA512 
50251175c84c1007dfb0f707bd87895840fb016ed0667b26d4b80f9f4be8c050998585e0839ea6b8a6aa8fda5afc8389502fbdf08b61ff2afbd820daf672f118
+DIST firefox-128.5.0esr-et.xpi 541121 BLAKE2B 
e610538f92d48e60575f0b3b277ea41845fbb90419a299216e6ac5e7aff717962fffba2a54b9af2ca0ab003ae81c507e5ec3f2665e3746bc976bcdc2de13074a
 SHA512 
f12d1e29d2929b6f09c657f49da09a260b5ffdd93ae72130460bb00a84a76915f2a79e9fb2f14bcd7dffc1f83d4e6d5c44f1e6a2149623db2265c734cc024c9a
+DIST firefox-128.5.0esr-eu.xpi 612335 BLAKE2B 
9ff3819831f1a6b0f8655621527f5da02b8c7b1735be032f7e359cdcc971e49151d74a4e1a233896124e1fdf4c65983c42e935f087082846ca62179d548e3588
 SHA512 
76f0ad1d9f88149d532626ee25ce6683212b07d8bfbe6080bfd708a98c645455eddd4fdbe143885f978f9301ca45d425e2379dab14c698d635931a17f6787a40
+DIST firefox-128.5.0esr-fa.xpi 593832 BLAKE2B 
20aa3f8344f051de664a8e689e746984ce2cb926228bc22c4f0b570263031254870212bac569d6362911127968fa68060ddc9269656609c069b1d193a5d3431c
 SHA512 
a0998cea78cb0a9d96aa787ab47dcba165e9dda9cee45cf725d23dfdfa284da43e7aff532fafb704ea256fe6e3271d75ead5358e694890b8595f4b13fedcfbac
+DIST firefox-128.5.0esr-ff.xpi 477475 BLAKE2B 
392b8730f77177798ae90b430cc89f3ac58a1e0cf1292b97d2952a30f5ea5953b2378f227bd6c8197343a4fd15d930634b42b6cabe262b7fa808de649559dc7c
 SHA512 
7cc4522dcded7a265cd94843fb1ad2a94fadc3e809b6c18cb84982ed5bab0f08a95ae297a9439898fe01678938cc6b25c7d4e28250ac48e8238c0f56e0fdc154
+DIST firefox-128.5.0esr-fi.xpi 623001 BLAKE2B 
9d0074297f4352f913fb0cdef95fa59b5b4df975cb830b646256a6503c11c1671111099ddc1d26d25d866f5239488a634b0284147e4212e3f7ffa76ecd9474a3
 SHA512 
f7ed2173f46ea36c585d4476d762cc5e0107d7e8771a35568dba8a1193b89ba7fb7ab73cae558225a3ac462a0ac8c00f42369432d44ee2dae89a4929eaa32a4d
+DIST firefox-128.5.0esr-fr.xpi 655853 BLAKE2B 
6013fa16856a320c496ae311892daaadf0308b592c4687ffc1cc673e03006cea266f7e8d8191124ee40ad10f48965b23a8ca8f2e14889a08c77a91f34564cd8c
 SHA512 
14f3f955864c12cc43548a89bf82f2b65b6445527b1d7a2595ae76e78429fb4b579ce23248ce746ed8902ea995e57ff0089cbda1f2c4f07a0c41aa0e8ee94465
+DIST firefox-128.5.0esr-fur.xpi 651348 BLAKE2B 
10223520c69ef4ca257377b7fc9c717e1455f5fa04f723f7cfbbd0517c476030c13a5454cc765b1418bf95ace15b2a9f121ff9ca438323b5b002c80d5b0ce962
 SHA512 
33c4c77d8385541ffd31440e971fdcefefb9fd5d95dd241577e924cb4ce0078c9601d48ff71dd9a95e1c3b403b530a8b7d5b366da59693788b9d214102c3837e
+DIST firefox-128.5.0esr-fy-NL.xpi 640610 BLAKE2B 
4f62a37b233b05695477791e742ede6182309e8e92bca2202e5f69833f99efe97ddfc4c43449e51c2e7b6b0861a83bba9b8e5f28e54362081236ea277d962a58
 SHA512 
34d8b89c5ae76052b5da47138b2542e2670e47c2ad461ee767c45dd8a285ad583277968443021a8fbcd71fe9edd81adc9cf02b896540d50fcac7f79f580b93c1
+DIST firefox-128.5.0esr-ga-IE.xpi 472341 BLAKE2B 
d3546f8a468f4939a0a2fd1a69fac4566a2d94f9eab22fd00e948915c4d76f1b07cb1331dca7b093eeb66e56d66fdb56b0c5f80c3632f5f0842682ae0d921831
 SHA512 
4afa5c43861c85516d0d063c28b8b4da43bf59da499a920af294664dd6bc632f5a3e790c11737fb9996c3db15cbda407d48a98f34ff813dfae23dc002ba719df
+DIST firefox-128.5.0esr-gd.xpi 598324 BLAKE2B 
e0e132fcaab3f947092beed02d744614d5dc94443a5c9b4e8b4a60273607f9e7763e7ca7b3dd39d71f4a718063af1eed91a3cb50085525877ed70b95673833c6
 SHA512 
ffaa8aa89d94c697fce066f2837555030d19994b48d6112471ae2230dffc686cfe8e8fdbb548ad7d992db75c6040fac9415f9e949984457ce4d0f79616675e5b
+DIST firefox-128.5.0esr-gl.xpi 609627 BLAKE2B 
911ba4c187eced81e1b42b44b6d78228e8ff514360dfa9cce261c0bbda8ade7f855ed46f0ee54bb041b0cd1eabfe4eed79dd326f8aff1a1dd12ebe65e39778f6
 SHA512 
9bb4630a633044c4a8b0558dc6ad7b92874ce164a188e3b5903e7382e9a04a7b2a87facb48e4039bba21ea79ffd0689821ea4c6ee4f45bad8b9d90a55b0bf9eb
+DIST firefox-128.5.0esr-gn.xpi 652873 BLAKE2B 
ac95e2936a7ae4fea2c3b7fb7aa489b9f82fdd853c18c62bd46aef347b8253f37d1a5487872a391ad646882e4d9aea4afbbf1f6e5e3c1e2fd2af5049c391f840
 SHA512 
9937bed8830d0ef8bc2c72f3e2b08e90a16c72f4851ec7ef16b889d7c0426221ad6b246b0ad09ef4721ab6590a5d0fec497b9789d6234c1155d53aa6daecd7b8
+DIST firefox-128.5.0esr-gu-IN.xpi 528784 BLAKE2B 
95d93cc933bdb180ad000b2e497bac44ffe9673667f6d453d625b92a0c8a8a2c19bbd180373f8e15d43ac7fa01ff044b1e60ca24d161568c246d68ea6d4b846c
 SHA512 
f5a5cacc030014af8fab494c0c2e5bfe99421759759cd134ff90ad9e914824dc273f381f6e24a48326f75c5adf6cc3127812116dc9f75fed2df3b026fb73365f
+DIST firefox-128.5.0esr-he.xpi 647294 BLAKE2B 
690bc867e7f9cfe3c23a6777eaa0df442a1239ce310a449cb1633d599b00a9e4486a195818af40dd455bf3ad780255e1c91dcaa92aecb32412ff35da98b0a3b5
 SHA512 
1ca9ec1981e329de91c1f3c6c62e8e7c3ee171fd481f9bc25c1ef87a8dd0cdadf58a9f64236c57bb7d3f2d2ba98a53d0cf2e6162dafe0ed4f7f4f1f3e2d5350b
+DIST firefox-128.5.0esr-hi-IN.xpi 568345 BLAKE2B 
a13d517d327e56e1aae9a185fc2c8acf6abebdf41c84e48c10bcae7e9c68444b19c3b6a5c009a5169181526f8828a955258cc1f7d2751560d2ebff5433f43c9c
 SHA512 
d9ec94d27accf295212ca682b55ab21adfb7cd3d8137db0fad6cfc98a41bd88519dbd4e1a30bc36feae675985dbc1dc7ec2cd82325c368f6d35c766aa33d3339
+DIST firefox-128.5.0esr-hr.xpi 619167 BLAKE2B 
a56a7503cde594e6bb07082e9d27363f9246e1d79b5ce7b09d9c96b81e8c6443eadbfbf0ef0c721ab574d11c848a60b04396decc3d0a9fd55559a1e7c0b3c5cd
 SHA512 
e8ab29952f4924a7350c4d15c0c91d69b7e1b41daa92b09bb3cde955263229cec2ab0ed196ab3eaeec7aed88c17e6b1add4411e1de9eaf1f3a863289b276ca6e
+DIST firefox-128.5.0esr-hsb.xpi 663554 BLAKE2B 
ea75242461ff3550286ceeaf3dcb31f3fa0f5388bef2d54340dcfa4373d73f3e81cebb238990a6c4a198329df7e2f7dabbd4858837c4c3b40527a61c368337db
 SHA512 
fc354d9eaf2689dfdd87a8f3ddeae41c6b0e58ed179d591345281ee0626735173ee7d25fe6bceeb7eaba5881473e951993f4932feaa736c2283026ccbe7be8d7
+DIST firefox-128.5.0esr-hu.xpi 667793 BLAKE2B 
c220d653d95ad5d43b2417cdaaec6bc2b16dfa043d4885e0968d241cba064c62755d131532a41e08ca0a9e02e1566a514db5292d1bb4094bf71310c28304ad77
 SHA512 
5d9f67f42ee0af60554c1b60af890ac75af740fc9cb8c04c3d1c4574e124c9500e1bb56c22159dd04d3e1984e443cb14c096b4c26d4604abddc6ed978e422448
+DIST firefox-128.5.0esr-hy-AM.xpi 653047 BLAKE2B 
a902324518d3fe2f11ae4883e9b3aa450799a541ada5e649ff1fcce280e480667b21a7209d3d60613677a4077b3cbbce77e61e298cd6f0c5797aea55a8df206c
 SHA512 
184a86cfa3a9d7debf10da804f5f1d42fb3c67fe9c264031c8e67ca8ea869b08c3bb890f9baeb4d6bdad67a59ee98a7517e6ea0ad5d10b3c753481847f0dc074
+DIST firefox-128.5.0esr-ia.xpi 627660 BLAKE2B 
92ed442ecd2b8bd89cdb97107850fee8dd1df66acfeb0c52a544917dce46cfba8b50ca8db2d680e2579d1f9685f8f618bd41253a0c76d19e8871f3fd9e92f3ff
 SHA512 
fe8162d18b117b12da18ca1f6802fca8835aad6d0186de5809442538ad77d27dec095c4bfd79ee9fe49bf263eb91bd54c5b67e9899a3ef620bcc7b382db05c3e
+DIST firefox-128.5.0esr-id.xpi 587635 BLAKE2B 
cbab4c33191c4486d93a534e13a233f18d98637f0e09f36c71e73ff2f1aa69e8ee3bf408cede148dc6acc13eeba3635ed0297cab2560e3e8f1302faaf396aea8
 SHA512 
8d95b6e694da654202f73fd6d8190fac795885eca3e370ec8e0bf77c36d3c9fe44e2f5a8308c6952908af8ac60ab5e672935b6134d31ceba53abdcf792fcc10a
+DIST firefox-128.5.0esr-is.xpi 630683 BLAKE2B 
596530a2eeacf4245536d159dedda08753f3a4827df6fdbc4438da86e21745e1e5396111e7fe4456d6e15aaf141c28c6885a32de4be91c478982698443b3ead3
 SHA512 
fe9b9d1ed7f21eb4ef64c82d7014b851789416a2b0d3080c79a9d5b7215e1bc62462fb1a1da6689576f7f7d4fc05cb5a782598ca0533b42f91020ed60b180e31
+DIST firefox-128.5.0esr-it.xpi 584359 BLAKE2B 
9d9be3cd9e72cf76f841cc10eed2680b3f1030b0930746f136981c994faeb4e5980dd7c95fc4f1e8ee00d4ce15800253b4a7591d14891fd2a76dc9c221e3cbc4
 SHA512 
2d4c6be8cb0251d0465cb533dcc5229204e84cc10d3e6057c8811b9422f79c0a3a90896a7054dcb36861bc6e6c759d6c79570da63ee7439c4e13ece745d36a18
+DIST firefox-128.5.0esr-ja.xpi 691948 BLAKE2B 
464f686839bb0708ea5155e170e73668669cc2806f1b9d044638610d858efeb7266418f5e5517dbf828d49da358b30e72e4b193eff50130f69c52647b9c4d92a
 SHA512 
ef823acc34c30ddb7006a87cea14f359c967ef3cb17d4e790c6fad6e730f7dfedd7541cd61619e78633156a8e79d2b551afc684792ad4c1308afae84b700933d
+DIST firefox-128.5.0esr-ka.xpi 662310 BLAKE2B 
fb6927bce11afb23db1dc62547f253f35fcc8654019ab80a517e85a600d288ae3027d6da804f0973e90371d942a2927b2aaca8e009c3bbf10fe4dc5a065335ff
 SHA512 
7b7feede040960fe92cca9e106cdd8cb2ec0a0463d679cdf0820a963b397c57d9cea95de58104aecc39f626d77d1e058d9d6d05c6a8040fdeb5807ade3ed1779
+DIST firefox-128.5.0esr-kab.xpi 619269 BLAKE2B 
c360e69dbe409ecd5c7014a2ac74edcfa78186ec3a8f2ef1b42a79510dcc3e9ef5a87444d0d68985f8304d038a24559b682740fb6ce12c512c5f59de3e7ce266
 SHA512 
31a394af645cf4d8a191038879151c1a10309b55a884869f84136e7df439d18868d00ffc73a90522336705cb2fa9d0621ee3883041690408ea5ca48f08cd5ac7
+DIST firefox-128.5.0esr-kk.xpi 727328 BLAKE2B 
ed2dcf9221f0e9eb1be000d59d969b7c9527c13d9c1922155bf40db4051b0cb0eedfc845872f49af2b6a9fcaa2dc3b2be1f44098250a278e2c64d6c5f8e78211
 SHA512 
9fd6a0578992e99f9f2dbc95e90c17339e70d2338d6511090fbb2610a4070522759e4df71aaf0740d3afde9b187ea8ba4e113126cf8cf435c3d1f80456becd92
+DIST firefox-128.5.0esr-km.xpi 527173 BLAKE2B 
2a2a2bc7108639a731360745b101f2c958dc94cf84f6321a54a415eae6b8474ca74f5f5d88ef17c564498866a7b0429cfa9d89ee02bbf3ff331e6fc0bf89f42d
 SHA512 
1cf5c2e58687e673e9b546ad99807123a635c9789c0f15fa200890fd6aa7ce7c5b5de58b58f5be47afc311c8d0da9446f5d6d6eb2b34dc1731012c7604698369
+DIST firefox-128.5.0esr-kn.xpi 492540 BLAKE2B 
fd8298eb043392540606bc173c63cd8cd5620d939308e5c635443b659de3ee0aac688588c091b5f80c77a70f59e7574205ccc08bc9e91e890e6ac1f9f92e6027
 SHA512 
69c6d300c8cf4f364e7291ed25d5e5a6282b3f58f71c0dd9c92635f12a22aa98b6f82eea13d18aaf9934d513acd2958e6b3055ee77440b678b58b49410eca7a1
+DIST firefox-128.5.0esr-ko.xpi 679384 BLAKE2B 
55aaecbf4e724f6fbdc3dfba64a45f818752a75df517a536d01bb6cb34af3d85565efdbca1d80168618c97de21b9c873f9405bd4930e1952da233ff02b94386a
 SHA512 
2631b071eaec053452429d4fac20055844bc6474fd713091bb6a1791b15f34838646858e4d1cfa6c4278c53c4d83a0ebbd717944c97c3afecfa14ac71c712b62
+DIST firefox-128.5.0esr-lij.xpi 485532 BLAKE2B 
7f12dd7ba38e0e7eb27d8f254e66d6376d43bbb7db1b2b387cd04df90406f8e546c1164ce5367cc7d1f8bcf6a617fa28563ab168b0729093384baefe328d419c
 SHA512 
defa6796636ab668274210af2e68da9c6c66537affb67531b9c43c5b731d0c13e47977ee4bc59eb808584c95a533349b2e0939020d02c0b686d1669f575422be
+DIST firefox-128.5.0esr-lt.xpi 574123 BLAKE2B 
1c41d41c60a46ba7f1b1f7d8560b1c4243045755e95d7b85400088e9903288235de2babe04ab59b6a5d849a77451e0785edac64cd282bb2dfbbb618ff835990f
 SHA512 
2d15dc9a2c80f7d59d376538ffaddb111b418ce131d93f0728503ab8e322af40ae34b767d1f8689e0460b8bba406be9e500e76c4c19531fab752d5dad0bf0ac5
+DIST firefox-128.5.0esr-lv.xpi 587204 BLAKE2B 
cf4d9b7b72e0ab7e0d2c63e524f78b7da0c9856f29d20339c0743843b651599893a507e63430293e8dc06c70c74b7cb266fdf77363b35e1f22e9dfdc28cb43d2
 SHA512 
0ca54d0b8ea73c5e68747b3375dcd82a1f3c45edbecf18d4d9f0b5648085c4b5486c8e64c2b2a518b9236016af7f83de66cab8e5dc6aa964bd4f66440b8953a2
+DIST firefox-128.5.0esr-mk.xpi 495176 BLAKE2B 
0d72e0d31a61c0718db7f68a00e55fd31b459375e63287cec7c982462b22154f0709953c4b171cb543523d80d20776cc4854fb3949076865d82dbc8f5b66c24d
 SHA512 
311c2de485d4b5f1282bab5913efdd34c0c7413671a503d381e97fb894bf724947396d03627a05d37b5a0d66c2ba770cb789ec28200a8856802186218b2e6c82
+DIST firefox-128.5.0esr-mr.xpi 533537 BLAKE2B 
c0e1d9bae5ff185eb1841b541d17203ab70d124886eb862adc262d15b5c3df4fab5c677bbcbbd266c9de7e47062ad6e023f90224afe12c1da31099602ac33052
 SHA512 
70cdd38beb8d6d0149f5ff5aa4d2763aaa0b7c4a1c7d61a5c8a80cc45920d204dcb4c53ed22342cea9e4f5d5f60d733cfde971f76bfe5c17e187ea3d983a37bb
+DIST firefox-128.5.0esr-ms.xpi 451142 BLAKE2B 
dbf6c9d06d044ad4141ce841f0f467308824a9cacd51ebad75dea83a70d38d4cc9438f821ff1bc9cd73d2892a659e207cb72d5cbe82593c1a23ef6e9306279e6
 SHA512 
06197be4751a09836947ddb13948d8173242fbfb76d0dc288a46a73541b7e30236bbc84fe9eed9ff80424e71b57985f8ca5244a7323615f83ccd01752b721ac4
+DIST firefox-128.5.0esr-my.xpi 519906 BLAKE2B 
4d7ca1da23b2551ca7fe0994ad47eb5b63df71e622b37a557df1dd7bfef59c7493c7e68551848cfe88251dabed67a0c3987abb26dd586e2ea4be0308b58bbe80
 SHA512 
c6aeb649945f210373b30367ac2ef01a82fa70b549129d42e1edf93d19ecc2c8c27b928c6ade0722ee9e47f065b8f2cf8f99258dfa88b02fa45d73b72efd6ee2
+DIST firefox-128.5.0esr-nb-NO.xpi 620012 BLAKE2B 
9d44a6d9baf809667e433dda649041059c8119952ae6f7983b8d03051970483921a24969bb17db544cd03d5044ded409cb63de4fc0590367c660ee164d2a068a
 SHA512 
6c933a8fe7853e09ff6f76ef0f6a639f1244815cce1e53cbe274811022a1c59ccafff3b4690635810a2b1d790019a70c73dc6c27e314e7d0e2489fc4ab494133
+DIST firefox-128.5.0esr-ne-NP.xpi 522141 BLAKE2B 
39e12db84d0b20b5238591feef52e0254c4b36d1c04c322d2a901583ac21342dc79ebcdbf1ee5feb77cb900e436777b269d74ccf99e269283b656ed1c8f16ccd
 SHA512 
5c7e8c336037e639d8eb337dfc63676881857101aa75ba381563319c345e6d40c394d2d36725aa010a5baba281eaeec2c3fd583faff2f8e47f6d386f8659a837
+DIST firefox-128.5.0esr-nl.xpi 634306 BLAKE2B 
816ebcae862111e10fa9a1d3330659f116531e97bf720cff0503562890d84a103ba13cacd927cacfccde08a33ed0e8d0144ae380e096e738de40afe0f4c800c6
 SHA512 
88c895dc9e21c50f7495ebe6b7addc30e0da1b9d4dc61310b50d5196a7b6f632875f031a6afc3bf11c084813c006fc8022377edd0b440e4557f515a738dbb8a8
+DIST firefox-128.5.0esr-nn-NO.xpi 622828 BLAKE2B 
2f7d9f306186e6953277a234fa816553a4bac3180840d03fa83dc3a141c3e5c2db4be9e6d0ed964e1be4cb79cb7446a134b60f77be5b09a241f6f47958c9962a
 SHA512 
d5c0b34eaaa23170891119114490e1b503e263ba6b673cb48d4a6d9ffa2cb1f8cab244cc3e6cd24ce12a0f44287299a5e5a65ca784a67fadb64d9b51699cff3b
+DIST firefox-128.5.0esr-oc.xpi 615796 BLAKE2B 
ac85c326bdb55f3544e4b6a67a85be4b2c5634ea21ec1d4db75a4dfa7c6fc97b50b5424dd3a754ed99907a1973d9e19e3b9713d1ae1c3451f5fa7f07d2e58961
 SHA512 
959864657193cbc1247167f636ce5a5315eaf18534f9d3f4ff2e0412bbbd36157dcc3a48de65ba033580105c7119c3799cab60b03fb6689d4a7a9a04d96c558e
+DIST firefox-128.5.0esr-pa-IN.xpi 711078 BLAKE2B 
d4fb2ff97a7251846ed2f665185e15e9a10c54941cff7135a618d9fbe161661b855a7167861847c66314df237be4f181913eb35dcdba4af57c5007c20e3f33c5
 SHA512 
760b19d9105a054f99e73a2d71d1b3ff835f23a1b45224461e0e05e2529170c964f079784d217e4dbf7492c48d9139876627ba1dc6d0ed119fbf04517eab61d4
+DIST firefox-128.5.0esr-pl.xpi 648795 BLAKE2B 
a3ba7ee52b2a9788c4620af22644f000fbbb77783617b427525c520a9ee1852d0b4cd57e3d009c2833fd3937b5402616dd13c4b30de50afa203d163da6873d18
 SHA512 
c308bebe509a0f0c238c514b34f3da3bbfa452917e6c780abeafe2f6c7b6ae3c48ef303e49b0b2d7a357c167dccd4a66fa6ae5a2871a283dfaabd5ebbec1b74f
+DIST firefox-128.5.0esr-pt-BR.xpi 638903 BLAKE2B 
3cf77554c12876afffaaad4e1136faf29c8b1408de6abf03b674e53fd79b55653078d585d9e3bf8ea1c90e7238d76ca19dee29d97fe7ee1ca32db29ce435e8ee
 SHA512 
62bbb15b35648558d5be6cb8ae49cb1c8882ac36ad77742e509222bbc5e9153ea0059c36cc09903424bd5c5408b4f3cd41949919a077f56ba8cbf9a69e775317
+DIST firefox-128.5.0esr-pt-PT.xpi 642497 BLAKE2B 
a7277c24cd2d04926313bba4f70f570d2ef89067e8a42eddf62e197b5cfef00c4297a975690d0bd2c5a98603066aa5ea2e27557cf9b54c519602e086f628b58a
 SHA512 
84f88d3cc17f1ec3911ae18c24de56ff0f9c50b3fb0e3e4a28c00ed55f99cb44ad79718183d2913a5f571ae55a87baca33657eca6ec256588f2ed31d0bda413b
+DIST firefox-128.5.0esr-rm.xpi 631434 BLAKE2B 
908a75554c325efd071270cdb98ff0f6f8462639dbb67c0fe5c689f7313f460f92b5cd286aeae23374c45f0be91ec58cf1111c4fd57e644cc1fc91066a74d609
 SHA512 
2976576c37eba17a7650ab413fb5e5b76eb1a2432a10703a4c7dea3df29cd2ee79e2565da09b7e56ba9245582e256d0fb344a69242fd0e6bc8f3df65bfe6ea40
+DIST firefox-128.5.0esr-ro.xpi 551229 BLAKE2B 
f4bb64241944818e267f88243031149cd5b78760ad5d62924b1fe32d5941e8f3c70b3e6ae51bc485d460f7a8142d5662156a431b9a5188a5843dd4cd28ea5133
 SHA512 
62dc43f4d8365a54aebe223050c4044ef17eef6841bc6704ecb1b926a4488f3ce84454163e8585c5f73faaedf4055184dddf49c343f8b687ad58fb5b01e0f504
+DIST firefox-128.5.0esr-ru.xpi 740413 BLAKE2B 
63ba10987a8edf8e8532267b3596d74e5562f940f755543d8e7988b6512ac3a5584225bc013d9f537d93069df4a43456674d689fc6fe55096a4395a5314fb49a
 SHA512 
1424411b51b2730432a1626d9f9cc7eb68a109de411f59e4e2297d8e0d1ef394b0db29b7cbce7a1bd7bf02b63b54f430aa75497bfbbcc8cab49db17f5c8e669f
+DIST firefox-128.5.0esr-sc.xpi 598930 BLAKE2B 
2d808d1def569d74a8b87c3855b4b3f5688910dc2a975c1dc3fb6226bfff0675f709bd1ec9aa82a140c65d36304e7dc0a2a308fda0dce960abb2d3008d712189
 SHA512 
8b50543180108ec56856670582119987018cd95e11a0e9bd4b6d940b412c0b95f0f15678bdf44a893f34a58da7049d0ad640cd04e65fcf51cbfa14a23386e8af
+DIST firefox-128.5.0esr-sco.xpi 512702 BLAKE2B 
1c8dea92da3a1d6b2d21e6e539c5d49915c9b732d971d606abef5a2efc724271eedb4121b12b5d1a284042b045ad5c4552e1970dc418272c4efaa34f684940a2
 SHA512 
8714d65e4033a40945891d4c7a642517da5d8444116da8721bd7f2fc77f6c1deffd02c8d76338323d66df01be4b37c06c254f01f543344647e759475e0f9966d
+DIST firefox-128.5.0esr-si.xpi 621565 BLAKE2B 
db1a8751759fb7e909dd8194321c55be66de647f9c19e655f78913e4efa0d59649b4bfbc38c3c4c2b1af4cc32b958697e0e96747728a89421292050b3b8e86bf
 SHA512 
7c743ca9a9399d412d004015f1c97e6ba52a0233bf29f720d049f0b8a2d9bc23f99d1e2609620c02a98e4c3c3c016b91b32c7501a8dcebdcbcf3ba55c6a89ac3
+DIST firefox-128.5.0esr-sk.xpi 670797 BLAKE2B 
6fd01ebbd63b8b5c963272d16887f1bd132f671a9d9766d4af342aac31be9c42680c36e7d1a1a432b614ba016e6f1be5b0e77ec40cb10fa1c39df364102595c7
 SHA512 
9580d7473cb510b625ad0275d86240c526bbd36fe0a41082550938212e3bf332c0a9de0f950bd174a1773da82c675985e39c0d8fcb7aeb7a7be51dbdc481e22b
+DIST firefox-128.5.0esr-skr.xpi 722721 BLAKE2B 
0664e624f354f160fe5ae9a5b84c6c26dc0c70064424dd1afbe6f0a0f97385d4f94c437870050b2a3df4199087d1c0656f2ed73c25c2866cfad91c750d3c2f9c
 SHA512 
5361fe0a1c3857a109691e0dc81549f804080917eef80e1c75013c6854a5ae5632951f95bf984cdef119319b2dd27b92eb8e54f828d289c439ee2b2c659ca7b5
+DIST firefox-128.5.0esr-sl.xpi 633860 BLAKE2B 
6f0c669d8a493922bb394ec6226d6d159def50d87c63eec76ac5c876733a32c35c1acc02b20de11d1d2833897cb10a81c08d391c45d52b6560206694a4a43169
 SHA512 
dd399931b3196ec09090897499e12992bb02b83a6a5b536e6ac6712ee5480f14d0b13d5d473c8e55e40d2622879b424b30986f59b616a27b801dc990ad57bce7
+DIST firefox-128.5.0esr-son.xpi 417702 BLAKE2B 
cea33351c4fe74c5da27de958234ca4d993b183807ad3ed5b6526a39d844ab3d234e149ed90f61ec279ebb2835e620cf2759646a828f842a70719aed020d4a93
 SHA512 
e885898840f5350fb646a5e4250fa5ef72e91c0a2e4f121722f1fb81f8b28a4b107bfc4c248f8375b0ef3e95e867db333fb35a3de684774235e0fd87e6c2c7f4
+DIST firefox-128.5.0esr-sq.xpi 652193 BLAKE2B 
a69f9332849b61d4e842074de0d7ee178c8720489137f76c54a48530d01ef9c650c95bfb7cd44e6a7ef70e12b5792690ec9cb2399f419dbf435f48b43ac8e058
 SHA512 
3ec3d75e1ba3fa337f0abc319ebc8bb98e60e34af0f535bb74db3b81b57b8dfcae858520c2c60f391c2aec34fd22e6fb51b6826111af44661665ad86eb8a0415
+DIST firefox-128.5.0esr-sr.xpi 640912 BLAKE2B 
4425e3e65ef39a1c208a889db66156f2fd8428293753c87196300ba52205d97fffa62ef1d7d35303c7d3388ab10135546253b9c5efae5a7ac5d0a534b6f2b77c
 SHA512 
817d6b062dc8476ca4ea38cedf188c87375bdaa90f5085c4e2698d3b77d362b27d7b37aace130fe2382b7ceb0df1f69e81b9540d7d187b94419d5edc7b36877e
+DIST firefox-128.5.0esr-sv-SE.xpi 635647 BLAKE2B 
010031b05054ffb19f8c4354bc5745f2c37bcc048aa5403be0e95918fdfac3a5c59f181d4a745348fcdf5213ea401c291f2eb8285ad68a49e7875f02c106c706
 SHA512 
0df74db69cc6956318b9501317ae12fa0437a36d2d30e2421a426e5b9cb3ab11998a003a3f7e8027d0e78cdcd4b43aad33020bdad3cdc1324e554b6e67d143eb
+DIST firefox-128.5.0esr-szl.xpi 527823 BLAKE2B 
0e708d8f49fd0558fbced1edf73bfe1a14a4c9ac0fed1495e839b200e027ab4eb65079cb7c2baa7c156b1a812c6207f7fb1629b1a81f71d3fdea20871588387d
 SHA512 
67c43f67a2c84cd26870c8a8a292c57f748a6ffd60964478e00826e3a1b33e87bc0a0b761155f07225cd01a525e7e76156ba3889ece13043d9f4a87d17591834
+DIST firefox-128.5.0esr-ta.xpi 508809 BLAKE2B 
2c247bb90cdd35224cdfc4d49b866f44a5919b052d35e914c6471bd60bf36a45fa08b0e358111a15c7ef5714456b619863797d3fdcfd9d9437705855646420b6
 SHA512 
12a3068265e0b1b431d56dd668abc2aaf792bd09be42a64db05196675297dfa6e8d5da7dfb37ac31e254bfe207a301e20f32b24f6a76e946dece19127345818e
+DIST firefox-128.5.0esr-te.xpi 565160 BLAKE2B 
00d4f6625bf2a5035fa72343f32f259b6f0aab55546ae1734f0d289b86cea749f51aff580499215699f766a79467b57c14ee6ce541a74e8e68d3b82fdeb1a7b9
 SHA512 
d0c9355ca3226438849d740174039c1f714c8a6480e47e75d887a8c2aafa12b38d788701e947aeaebaf07fb83182451aaaab7d35b1d0b89a1fe14debb1f9a0af
+DIST firefox-128.5.0esr-th.xpi 711779 BLAKE2B 
33e46e6bedc551457cd39db50f0b336ea7a1d4e8189299fdff01ec99284ee4ec97a95d45d8d8c7b01982ae689abd3f921e8b03525c059b5cad2e564314c255c0
 SHA512 
cb2e2212b3bab0e7fd7f29d9cc07120ccec61ccb98e237fb52489fa3ecb1dad7f0eff6bb5ec519d861f0c55e12e7bd90eb0b87bb216df4b08957cf87cf1c39ac
+DIST firefox-128.5.0esr-tl.xpi 535600 BLAKE2B 
c8042276f51481da17d0b674d1f99214a57677ec01735ba92e832a454b1442a63758359c3423a289d6917a7f81afbd55df273265bcb8678e7875bb049d0ad485
 SHA512 
4453462dcf124af65ae02c96720fa9286f80fc95cee2e67a4db849606b93b620b5b9561efa3fe7613baee57160341e7cb0dc795077ccf0d1be036f54aaedecd1
+DIST firefox-128.5.0esr-tr.xpi 649221 BLAKE2B 
208973ddfa15c2c3ff1b0b2b293b9092b09d7f524adaadcd884261270292731958c5a9e8d6fc724b81488628025913de1ba9f4749579b49d436863c08d8f1543
 SHA512 
032c5c2f2f4fe4f04448a16f446fa20d70674dfb2009b0565decdb2299326cd4955c9492a166d4dc125020f4b12b84fe91b2604836961a85a52886853defa2ab
+DIST firefox-128.5.0esr-trs.xpi 505787 BLAKE2B 
dcfb8300f2a515a9013b259009b68b1e9b18a2c1555e00e35a5cbf1fdc2c39d32c1924f2eab51ef6ace58f9cdb10446f9aaa538e64e2ace352ad0b6689b109a1
 SHA512 
adf3813f9ec52e77d4932be94b1e41294765ef21c5cf6a0d0194b4a1dfa0f6e07f0ee8e6d111a03f06353a1f96c0b37037a1b4f55d36bab4d5d5617b6b80a297
+DIST firefox-128.5.0esr-uk.xpi 731685 BLAKE2B 
16ab44efdfde969c9badf307d044222b76226ae5513cfb85cf6c60403b46bf8312ebd9a2cb58c3f938d7fec5ae9371af202140f51a2a5ce299702657331fe281
 SHA512 
9fb88f63fd0497acbbb88b6f58a2553d213bcac41ddac028dcd9c4e0add84dbe6d45f4daea8b8ec191689a841eb56cd7f907c3e0e1e790161196fc302b1035b8
+DIST firefox-128.5.0esr-ur.xpi 561773 BLAKE2B 
73668ce7e170c0fd0530ba8cd4f5427e69cf088c26ffbc7c607531fc2472367b3abc74c18555ebc467a3ed478e21ce8c10258ba77f4a4e3afb5a94b3dda6223b
 SHA512 
431adcd4f09704c367147d89b1a2a1d94cad27ebcef29a6fe3b7dbdaff05714581db803c617d8d474dd904010085dc0310b13ffc93dd723837c22ded6695b049
+DIST firefox-128.5.0esr-uz.xpi 480223 BLAKE2B 
5d6531eacd7f9a0bf7b67d01916cb8a53bb5d0b40c8152054be6e0cf99ffe80033f29efd2333b3aec3de1b270dc5777e9a00d6c3269e616a33160d00a55b18af
 SHA512 
3a324ccc8333173005da7fbee426c1a2e0783ba9391f79af6e796d4fddcec9fb3ed96c6b11453699e1ba77be7337550a4050a3953f2dfcf1062b533978a31cd0
+DIST firefox-128.5.0esr-vi.xpi 673230 BLAKE2B 
1010e299d30e13fe7006c39c03aebd69c8ee667e16e5fa42ddfbaf53659a8300f7411697263c3d60fbcc327c11fc4f2de5bdb83cac8abe32550e88fc0c8ecdf9
 SHA512 
554db3cf392915557fccfcee615f3c258a11cadb1f7bd9983639ccd3415787c883786bd3e854f3ea7cba12c50aebb8a9df6cdf0f3722a5842a3a64bbb2e22395
+DIST firefox-128.5.0esr-xh.xpi 418474 BLAKE2B 
3e14235a1ea016f8d82f2e7f29b53eab2a06c327cf95119e72632a35aae48018c62105b62fd36b0b1ddc132943625080600721947f39a5d2e907cbcebb74ae0a
 SHA512 
7e81bd25510900c2ecc5976e931eb3e2fa7b3aa4dc7a7bb464686961e2c5fd2773d7f4b37b3ae657a092af0bc3983b1db625f3a0fc4d7b900ecbf17ae4a969e9
+DIST firefox-128.5.0esr-zh-CN.xpi 675204 BLAKE2B 
0536f48da6a89b1a6a6e60918d563c80ec92d08ac49cf423f7e38161c2e34c8be6b55ab7c7163aaf48b9970895674993067c4e685e5623a35c6876512eade886
 SHA512 
891fbf921523da76afbafe2c308aecead7839b8be1b9fce964f3e6e2604bc7454743dcf11e0ee28fba982ea9004c6afa8c4a5d044c0a0a74cf48735661ca4e7d
+DIST firefox-128.5.0esr-zh-TW.xpi 677436 BLAKE2B 
54f2e2256e57188f88994d7a61e0f7361f13e62a6c91fefa888b324a3749687f754ce58aea42e367e94008b95a97c31736f20118092c055efeaf5a98e99dbee2
 SHA512 
7a3edc3ccae0d2a47facc2e43a78c77cd4ba34ad086502c4b5897cd3e2b22a8b0a0faad14b52015611eabb31b656fbfc1a1132622bf3cb135f97ef4285061a53
+DIST firefox-128.5.0esr.source.tar.xz 567200548 BLAKE2B 
b524796854d4f622e90c219e4e302e5665f3f1e3ffb7935ba58244903dbcf1c2b9a13731e9af5507ffc25dda621d4ea13650aae842ed0317843182da55d1d652
 SHA512 
ff20f18f92c5e9cd1d9eaf7c38cec61bcab2dca8dd2817519b712bc1f760b5c6e290212acf3289152764e5130e01626950b7ecd9327b2c587b24a246591afd67
 DIST firefox-128esr-patches-04.tar.xz 14416 BLAKE2B 
0ffe3fd568480e37fe28fe71d5304e51028dcb8cb2d5fc1d838d725bdd36971696d7152c37bd90f7802c75e696aef0b1b075d386a906b40635f25083a6a58239
 SHA512 
adbac956dc2d6c1c29fb6641a42096bfd033a662f69e177f8d75a928f46d30fbc811e8a9ca24de8c7eb675ee80f6c1187f1a13dbca8e75782abfd54e276f5854
+DIST firefox-128esr-patches-06.tar.xz 17168 BLAKE2B 
fc0a72af6a87519a86e44862a9c3d142cac600c9150b5bc4168cbc6de30beb0dde2a5985d74b51c9b977ee5272786c5a98804fb6d16968c4f517b28deae00fe1
 SHA512 
04c28f6f97a596e811e986bcbe9f5dd5045c24e7eb4b9bef6180d46948a9f3b978f44bb0b161a25f6217e9c0a18d88726b82737a72b711b90876da26d947a256
 DIST firefox-132-patches-02.tar.xz 14984 BLAKE2B 
9ae56d19ba391bbc53a6babc72bf956c7bfda293aec52f5b1af3994238494d9c311e943593f6d8c2b89f7b24a50281f07248e684a6a6ec4a3f54ba1792125faf
 SHA512 
9299d41830d91ebe558229149afbf66ade18f3925d5d30a603eec6115a16ce4d5e6c0a03193e0967ecad35fe4bfc1bc639f858a6df44372132541fd1aff149b3
 DIST firefox-132-patches-04.tar.xz 15164 BLAKE2B 
a485bd2f57220727ec4447def964d2fba0f2d3421e35644906dc20fdf5aa086d13952d4270b16a8268518ae21ff77c7e47c6093559b901c3542cc0e5bc1ced57
 SHA512 
1077439c4db0dbd7f415fcbb74a37d535483c1f9953c66770cbc4ed221f8e68c17d2cd897f3a07736924e9b17d18f2a1b8be6336b9e61a42dc69d54b7b469fcb
 DIST firefox-132.0.1-ach.xpi 467451 BLAKE2B 
cad4ed35bfd827d5e629cf478d46b85b9547728555aeccc684238caab763149eabed9771f05e4906923f1b7119190022e39e32fbe3ef0d41a95c1604a6582764
 SHA512 
6a1a50a19dbdc9198dd6336b53ca9e906a48e3f880d176a3e3d9b29559c0780868b18a2002c57dccaff901b651978c2cc6a4a7f3373dfe4a4ef77be630e0ebd3

diff --git a/www-client/firefox/firefox-128.5.0.ebuild 
b/www-client/firefox/firefox-128.5.0.ebuild
new file mode 100644
index 000000000000..f651bb46d218
--- /dev/null
+++ b/www-client/firefox/firefox-128.5.0.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-06.tar.xz"
+
+LLVM_COMPAT=( 17 18 19 )
+
+PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+# This will also filter rust versions that don't match LLVM_COMPAT in the 
non-clang path; this is fine.
+RUST_NEEDS_LLVM=1
+# If not building with clang we need at least rust 1.76
+RUST_MIN_VER=1.77.1
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+# Information about the bundled wasm toolchain from
+# https://github.com/WebAssembly/wasi-sdk/
+WASI_SDK_VER=24.0
+WASI_SDK_LLVM_VER=18
+
+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.org/firefox 
https://www.mozilla.org/firefox/enterprise/";
+       SLOT="esr"
+else
+       HOMEPAGE="https://www.mozilla.org/firefox";
+       SLOT="rapid"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info 
llvm-r1 multiprocessing \
+       optfeature pax-utils python-any-r1 readme.gentoo-r1 rust 
toolchain-funcs virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}";
+
+if [[ ${PV} == *_rc* ]] ; then
+       
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}";
+fi
+
+PATCH_URIS=(
+       https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+DESCRIPTION="Firefox Web Browser"
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}
+       wasm? (
+               amd64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz
 )
+               arm64? ( 
https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz
 )
+       )"
+S="${WORKDIR}/${PN}-${PV%_*}"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+
+IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio 
selinux sndio"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent 
+system-libvpx"
+IUSE+=" system-png +system-webp wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" +gmp-autoupdate gnome-shell +jumbo-build openh264 +telemetry wasm"
+
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       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}
+                       pgo? ( 
sys-libs/compiler-rt-sanitizers:${LLVM_SLOT}[profile] )
+               )
+               wasm? ( sys-devel/lld:${LLVM_SLOT} )
+       ')
+       app-alternatives/awk
+       app-arch/unzip
+       app-arch/zip
+       >=dev-util/cbindgen-0.26.0
+       net-libs/nodejs
+       virtual/pkgconfig
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               !X? (
+                       || (
+                               gui-wm/tinywl
+                               <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-libs/harfbuzz-2.8.1:0=
+               !wasm? ( >=media-gfx/graphite2-1.3.13 )
+       )
+       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
+       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
+
+       einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+MOZ_LANGS=(
+       af ar ast be bg br ca cak cs cy da de dsb
+       el en-CA en-GB en-US es-AR es-ES et eu
+       fi fr fy-NL ga-IE gd gl he hr hsb hu
+       id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO
+       pa-IN pl pt-BR pt-PT rm ro ru
+       sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW
+)
+
+# Firefox-only LANGS
+MOZ_LANGS+=( ach )
+MOZ_LANGS+=( an )
+MOZ_LANGS+=( az )
+MOZ_LANGS+=( bn )
+MOZ_LANGS+=( bs )
+MOZ_LANGS+=( ca-valencia )
+MOZ_LANGS+=( eo )
+MOZ_LANGS+=( es-CL )
+MOZ_LANGS+=( es-MX )
+MOZ_LANGS+=( fa )
+MOZ_LANGS+=( ff )
+MOZ_LANGS+=( fur )
+MOZ_LANGS+=( gn )
+MOZ_LANGS+=( gu-IN )
+MOZ_LANGS+=( hi-IN )
+MOZ_LANGS+=( hy-AM )
+MOZ_LANGS+=( ia )
+MOZ_LANGS+=( km )
+MOZ_LANGS+=( kn )
+MOZ_LANGS+=( lij )
+MOZ_LANGS+=( mk )
+MOZ_LANGS+=( mr )
+MOZ_LANGS+=( my )
+MOZ_LANGS+=( ne-NP )
+MOZ_LANGS+=( oc )
+MOZ_LANGS+=( sc )
+MOZ_LANGS+=( sco )
+MOZ_LANGS+=( si )
+MOZ_LANGS+=( skr )
+MOZ_LANGS+=( son )
+MOZ_LANGS+=( szl )
+MOZ_LANGS+=( ta )
+MOZ_LANGS+=( te )
+MOZ_LANGS+=( tl )
+MOZ_LANGS+=( trs )
+MOZ_LANGS+=( ur )
+MOZ_LANGS+=( xh )
+
+mozilla_set_globals() {
+       # https://bugs.gentoo.org/587334
+       local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+               fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+       )
+
+       local lang xflag
+       for lang in "${MOZ_LANGS[@]}" ; do
+               # en and en_US are handled internally
+               if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+                       continue
+               fi
+
+               # strip region subtag if $lang is in the list
+               if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+                       xflag=${lang%%-*}
+               else
+                       xflag=${lang}
+               fi
+
+               SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+               SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> 
${MOZ_P_DISTFILES}-${lang}.xpi"
+               SRC_URI+=" )"
+               IUSE+=" l10n_${xflag/[_@]/-}"
+       done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -ne 1 ]] ; then
+               die "${FUNCNAME} requires exact one argument"
+       fi
+
+       einfo "Clearing cargo checksums for ${1} ..."
+
+       sed -i \
+               -e 's/\("files":{\)[^}]*/\1/' \
+               "${S}"/third_party/rust/${1}/.cargo-checksum.json || die
+}
+
+moz_install_xpi() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local DESTDIR=${1}
+       shift
+
+       insinto "${DESTDIR}"
+
+       local emid xpi_file xpi_tmp_dir
+       for xpi_file in "${@}" ; do
+               emid=
+               xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+               # Unpack XPI
+               unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+               # Determine extension ID
+               if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+                       emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; 
s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from install.rdf"
+               elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+                       emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' 
"${xpi_tmp_dir}/manifest.json")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from manifest.json"
+               else
+                       die "failed to determine extension id"
+               fi
+
+               einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+               newins "${xpi_file}" "${emid}.xpi"
+       done
+}
+
+mozconfig_add_options_ac() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_add_options_mk() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_use_enable() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_enable "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+mozconfig_use_with() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_with "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+virtwl() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+       [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to 
be set; try xdg_environment_reset"
+       tinywl -h >/dev/null || die 'tinywl -h failed'
+
+       local VIRTWL VIRTWL_PID
+       coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo 
$WAYLAND_DISPLAY; read _; kill $PPID'; }
+       local -x WAYLAND_DISPLAY
+       read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+       debug-print "${FUNCNAME}: $@"
+       "$@"
+       local r=$?
+
+       [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+       exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+       return $r
+}
+
+pkg_pretend() {
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+               if use pgo ; then
+                       if ! has usersandbox $FEATURES ; then
+                               die "You must enable usersandbox as X server 
can not run as root!"
+                       fi
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || tc-is-lto || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6600M"
+               fi
+
+               check-reqs_pkg_pretend
+       fi
+}
+
+pkg_setup() {
+
+       # Get LTO from environment; export after this phase for use in 
src_configure (etc)
+       use_lto=no
+
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+
+               if tc-is-lto; then
+                       use_lto=yes
+                       # LTO is handled via configure
+                       filter-lto
+               fi
+
+               if use pgo ; then
+                       if ! has userpriv ${FEATURES} ; then
+                               eerror "Building ${PN} with USE=pgo and 
FEATURES=-userpriv is not supported!"
+                       fi
+               fi
+
+               if [[ ${use_lto} = yes ]]; then
+                       # -Werror=lto-type-mismatch -Werror=odr are going to 
fail with GCC,
+                       # bmo#1516758, bgo#942288
+                       filter-flags -Werror=lto-type-mismatch -Werror=odr
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || [[ ${use_lto} == "yes" ]] || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6400M"
+               fi
+
+               check-reqs_pkg_setup
+               llvm-r1_pkg_setup
+               rust_pkg_setup
+               python-any-r1_pkg_setup
+
+               # Avoid PGO profiling problems due to enviroment leakage
+               # These should *always* be cleaned up anyway
+               unset \
+                       DBUS_SESSION_BUS_ADDRESS \
+                       DISPLAY \
+                       ORBIT_SOCKETDIR \
+                       SESSION_MANAGER \
+                       XAUTHORITY \
+                       XDG_CACHE_HOME \
+                       XDG_SESSION_COOKIE
+
+               # Build system is using /proc/self/oom_score_adj, bug #604394
+               addpredict /proc/self/oom_score_adj
+
+               if use pgo ; then
+                       # Update 105.0: "/proc/self/oom_score_adj" isn't enough 
anymore with pgo, but not sure
+                       # whether that's due to better OOM handling by Firefox 
(bmo#1771712), or portage
+                       # (PORTAGE_SCHEDULING_POLICY) update...
+                       addpredict /proc
+
+                       # Clear tons of conditions, since PGO is 
hardware-dependant.
+                       addpredict /dev
+               fi
+
+               if ! mountpoint -q /dev/shm ; then
+                       # If /dev/shm is not available, configure is known to 
fail with
+                       # a traceback report referencing 
/usr/lib/pythonN.N/multiprocessing/synchronize.py
+                       ewarn "/dev/shm is not mounted -- expect build 
failures!"
+               fi
+
+               # Google API keys (see 
http://www.chromium.org/developers/how-tos/api-keys)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+                       
MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+               fi
+
+               if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+                       
MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+               fi
+
+               # Mozilla API keys (see 
https://location.services.mozilla.com/api)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+                       
MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+               fi
+
+               # Ensure we use C locale when building, bug #746215
+               export LC_ALL=C
+       fi
+
+       export use_lto
+
+       CONFIG_CHECK="~SECCOMP"
+       WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to 
play DRM-protected content."
+       linux-info_pkg_setup
+}
+
+src_unpack() {
+       local _lp_dir="${WORKDIR}/language_packs"
+       local _src_file
+
+       if [[ ! -d "${_lp_dir}" ]] ; then
+               mkdir "${_lp_dir}" || die
+       fi
+
+       for _src_file in ${A} ; do
+               if [[ ${_src_file} == *.xpi ]]; then
+                       cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die 
"Failed to copy '${_src_file}' to '${_lp_dir}'!"
+               else
+                       unpack ${_src_file}
+               fi
+       done
+}
+
+src_prepare() {
+       if [[ ${use_lto} == "yes" ]]; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
+       fi
+
+       # Workaround for bgo#917599
+       if has_version ">=dev-libs/icu-74.1" && use system-icu ; then
+               eapply 
"${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch
+       fi
+       rm -v "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch || 
die
+
+       # Workaround for bgo#915651 on musl
+       if use elibc_glibc ; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die
+       fi
+
+       eapply "${WORKDIR}/firefox-patches"
+
+       # Allow user to apply any additional patches without modifing ebuild
+       eapply_user
+
+       # Make cargo respect MAKEOPTS
+       export CARGO_BUILD_JOBS="$(makeopts_jobs)"
+
+       # Workaround for bgo#915651
+       if ! use elibc_glibc ; then
+               if use amd64 ; then
+                       export RUST_TARGET="x86_64-unknown-linux-musl"
+               elif use x86 ; then
+                       export RUST_TARGET="i686-unknown-linux-musl"
+               elif use arm64 ; then
+                       export RUST_TARGET="aarch64-unknown-linux-musl"
+               elif use ppc64 ; then
+                       export RUST_TARGET="powerpc64le-unknown-linux-musl"
+               elif use riscv ; then
+                       # We can pretty safely rule out any 32-bit riscvs, but 
64-bit riscvs also have tons of
+                       # different ABIs available. 
riscv64gc-unknown-linux-musl seems to be the best working
+                       # guess right now though.
+                       elog "riscv detected, forcing a riscv64 target for now."
+                       export RUST_TARGET="riscv64gc-unknown-linux-musl"
+               else
+                       die "Unknown musl chost, please post a new bug with 
your rustc -vV along with emerge --info"
+               fi
+       fi
+
+       # Pre-built wasm path manipulation.
+       if use wasm ; then
+               if use amd64 ; then
+                       export wasi_arch="x86_64"
+               elif use arm64 ; then
+                       export wasi_arch="arm64"
+               else
+                       die "wasm enabled on unknown/unsupported arch!"
+               fi
+
+               sed -i \
+                       -e "s:%%PORTAGE_WORKDIR%%:${WORKDIR}:" \
+                       -e "s:%%WASI_ARCH%%:${wasi_arch}:" \
+                       -e "s:%%WASI_SDK_VER%%:${WASI_SDK_VER}:" \
+                       -e "s:%%WASI_SDK_LLVM_VER%%:${WASI_SDK_LLVM_VER}:" \
+                       toolkit/moz.configure || die "Failed to update 
wasi-related paths."
+       fi
+
+       # Make LTO respect MAKEOPTS
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/build/moz.configure/lto-pgo.configure || die "Failed 
sedding multiprocessing.cpu_count"
+
+       # Make ICU respect MAKEOPTS
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/intl/icu_sources_data.py || die "Failed sedding 
multiprocessing.cpu_count"
+
+       # Respect MAKEOPTS all around (maybe some find+sed is better)
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/python/mozbuild/mozbuild/base.py || die "Failed sedding 
multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/libwebrtc/build/toolchain/get_cpu_count.py 
|| die "Failed sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               
"${S}"/third_party/libwebrtc/build/toolchain/get_concurrent_links.py ||
+                       die "Failed sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed 
sedding multiprocessing.cpu_count"
+
+       sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/python/mozbuild/mozbuild/code_analysis/mach_commands.py 
|| die "Failed sedding multiprocessing.cpu_count"
+
+       # sed-in toolchain prefix
+       sed -i \
+               -e "s/objdump/${CHOST}-objdump/" \
+               "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py 
|| die "sed failed to set toolchain prefix"
+
+       sed -i \
+               -e 's/ccache_stats = None/return None/' \
+               "${S}"/python/mozbuild/mozbuild/controller/building.py || die 
"sed failed to disable ccache stats call"
+
+       einfo "Removing pre-built binaries ..."
+
+       find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) 
-print -delete || die
+
+       # Clear checksums from cargo crates we've manually patched.
+       # moz_clear_vendor_checksums xyz
+
+       # Respect choice for "jumbo-build"
+       # Changing the value for FILES_PER_UNIFIED_FILE may not work, see 
#905431
+       if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then
+               local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16}
+               elog ""
+               elog "jumbo-build defaults modified to 
${my_files_per_unified_file}."
+               elog "if you get a build failure, try undefining 
FILES_PER_UNIFIED_FILE,"
+               elog "if that fails try -jumbo-build before opening a bug 
report."
+               elog ""
+
+               sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 
16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \
+                       python/mozbuild/mozbuild/frontend/data.py ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
python/mozbuild/mozbuild/frontend/data.py"
+               sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE 
= "${my_files_per_unified_file}"/" \
+                       js/src/moz.build ||
+                               die "Failed to adjust FILES_PER_UNIFIED_FILE in 
js/src/moz.build"
+       fi
+
+       # Create build dir
+       BUILD_DIR="${WORKDIR}/${PN}_build"
+       mkdir -p "${BUILD_DIR}" || die
+
+       # Write API keys to disk
+       echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+       echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || 
die
+       echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+       xdg_environment_reset
+}
+
+src_configure() {
+       # Show flags set at the beginning
+       einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       local have_switched_compiler=
+       if use clang; then
+               # Force clang
+               einfo "Enforcing the use of clang due to USE=clang ..."
+
+               local version_clang=$(clang --version 2>/dev/null | grep -F -- 
'clang version' | awk '{ print $3 }')
+               [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 
"${version_clang}")
+               [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+               if tc-is-gcc; then
+                       have_switched_compiler=yes
+               fi
+
+               AR=llvm-ar
+               CC=${CHOST}-clang-${version_clang}
+               CXX=${CHOST}-clang++-${version_clang}
+               NM=llvm-nm
+               RANLIB=llvm-ranlib
+       elif ! use clang && ! tc-is-gcc ; then
+               # Force gcc
+               have_switched_compiler=yes
+               einfo "Enforcing the use of gcc due to USE=-clang ..."
+               AR=gcc-ar
+               CC=${CHOST}-gcc
+               CXX=${CHOST}-g++
+               NM=gcc-nm
+               RANLIB=gcc-ranlib
+       fi
+
+       if [[ -n "${have_switched_compiler}" ]] ; then
+               # Because we switched active compiler we have to ensure
+               # that no unsupported flags are set
+               strip-unsupported-flags
+       fi
+
+       # Ensure we use correct toolchain,
+       # AS is used in a non-standard way by upstream, #bmo1654031
+       export HOST_CC="$(tc-getBUILD_CC)"
+       export HOST_CXX="$(tc-getBUILD_CXX)"
+       export AS="$(tc-getCC) -c"
+
+       # Configuration tests expect llvm-readelf output, bug 913130
+       READELF="llvm-readelf"
+
+       tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
+
+       # Pass the correct toolchain paths through cbindgen
+       if tc-is-cross-compiler ; then
+               export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} 
--target=${CHOST} ${BINDGEN_CFLAGS-}"
+       fi
+
+       # Set MOZILLA_FIVE_HOME
+       export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+       # python/mach/mach/mixin/process.py fails to detect SHELL
+       export SHELL="${EPREFIX}/bin/bash"
+
+       # Set state path
+       export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+       # Set MOZCONFIG
+       export MOZCONFIG="${S}/.mozconfig"
+
+       # Initialize MOZCONFIG
+       mozconfig_add_options_ac '' --enable-application=browser
+       mozconfig_add_options_ac '' --enable-project=browser
+
+       # Set Gentoo defaults
+       if use telemetry; then
+               export MOZILLA_OFFICIAL=1
+       fi
+
+       mozconfig_add_options_ac 'Gentoo default' \
+               --allow-addon-sideload \
+               --disable-cargo-incremental \
+               --disable-crashreporter \
+               --disable-disk-remnant-avoidance \
+               --disable-geckodriver \
+               --disable-gpsd \
+               --disable-install-strip \
+               --disable-legacy-profile-creation \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-tests \
+               --disable-updater \
+               --disable-valgrind \
+               --disable-wmf \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-release \
+               --enable-system-ffi \
+               --enable-system-pixman \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-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-icu
+       mozconfig_use_with system-jpeg
+       mozconfig_use_with system-libevent
+       mozconfig_use_with system-libvpx
+       mozconfig_use_with system-png
+       mozconfig_use_with system-webp
+
+       mozconfig_use_enable dbus
+       mozconfig_use_enable libproxy
+
+       use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme
+
+       if use hardened ; then
+               mozconfig_add_options_ac "+hardened" --enable-hardening
+               append-ldflags "-Wl,-z,relro -Wl,-z,now"
+
+               # Increase the FORTIFY_SOURCE value, #910071.
+               sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' 
"${S}"/build/moz.configure/toolchain.configure || die
+       fi
+
+       local myaudiobackends=""
+       use jack && myaudiobackends+="jack,"
+       use sndio && myaudiobackends+="sndio,"
+       use pulseaudio && myaudiobackends+="pulseaudio,"
+       ! use pulseaudio && myaudiobackends+="alsa,"
+
+       mozconfig_add_options_ac '--enable-audio-backends' 
--enable-audio-backends="${myaudiobackends::-1}"
+
+       mozconfig_use_enable wifi necko-wifi
+
+       ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' 
--disable-unified-build
+
+       if use X && use wayland ; then
+               mozconfig_add_options_ac '+x11+wayland' 
--enable-default-toolkit=cairo-gtk3-x11-wayland
+       elif ! use X && use wayland ; then
+               mozconfig_add_options_ac '+wayland' 
--enable-default-toolkit=cairo-gtk3-wayland-only
+       else
+               mozconfig_add_options_ac '+x11' 
--enable-default-toolkit=cairo-gtk3-x11-only
+       fi
+
+       # wasm
+       # Since graphite2 is one of the sandboxed libraries, system-graphite2 
obviously can't work with +wasm.
+       if use wasm ; then
+               mozconfig_add_options_ac '+wasm' 
--with-wasi-sysroot="${WORKDIR}/wasi-sdk-${WASI_SDK_VER}-${wasi_arch}-linux/share/wasi-sysroot/"
+       else
+               mozconfig_add_options_ac 'no wasm-sandbox' 
--without-wasm-sandboxed-libraries
+               mozconfig_use_with system-harfbuzz system-graphite2
+       fi
+
+       if [[ ${use_lto} == "yes" ]] ; then
+               if use clang ; then
+                       # Upstream only supports lld or mold when using clang.
+                       if tc-ld-is-mold ; then
+                               # mold expects the -flto line from *FLAGS 
configuration, bgo#923119
+                               append-ldflags "-flto=thin"
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang and USE=lto" --enable-linker=lld
+                       fi
+
+                       mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+               else
+                       # ThinLTO is currently broken, see bmo#1644409.
+                       # mold does not support gcc+lto combination.
+                       mozconfig_add_options_ac '+lto' --enable-lto=full
+                       mozconfig_add_options_ac "linker is set to bfd" 
--enable-linker=bfd
+               fi
+
+       else
+               # Avoid auto-magic on linker
+               if use clang ; then
+                       # lld is upstream's default
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang" --enable-linker=lld
+                       fi
+
+               else
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "linker is set to bfd 
due to USE=-clang" --enable-linker=bfd
+                       fi
+               fi
+       fi
+
+       # PGO was moved outside lto block to allow building pgo without lto.
+       if use pgo ; then
+               mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+               if use clang ; then
+                       # Used in build/pgo/profileserver.py
+                       export LLVM_PROFDATA="llvm-profdata"
+               fi
+       fi
+
+       mozconfig_use_enable debug
+       if use debug ; then
+               mozconfig_add_options_ac '+debug' --disable-optimize
+               mozconfig_add_options_ac '+debug' --enable-jemalloc
+               mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+       else
+               mozconfig_add_options_ac 'Gentoo defaults' 
--disable-real-time-tracing
+
+               if is-flag '-g*' ; then
+                       if use clang ; then
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols=$(get-flag '-g*')
+                       else
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols
+                       fi
+               else
+                       mozconfig_add_options_ac 'Gentoo default' 
--disable-debug-symbols
+               fi
+
+               if is-flag '-O0' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O0
+               elif is-flag '-O4' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O4
+               elif is-flag '-O3' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O3
+               elif is-flag '-O1' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O1
+               elif is-flag '-Os' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-Os
+               else
+                       mozconfig_add_options_ac "Gentoo default" 
--enable-optimize=-O2
+               fi
+       fi
+
+       # Debug flag was handled via configure
+       filter-flags '-g*'
+
+       # Optimization flag was handled via configure
+       filter-flags '-O*'
+
+       # elf-hack
+       # Filter "-z,pack-relative-relocs" and let the build system handle it 
instead.
+       if use amd64 || use x86 ; then
+               filter-flags "-z,pack-relative-relocs"
+
+               if tc-ld-is-mold ; then
+                       # relr-elf-hack is currently broken with mold, 
bgo#916259
+                       mozconfig_add_options_ac 'disable elf-hack with mold 
linker' --disable-elf-hack
+               else
+                       mozconfig_add_options_ac 'relr elf-hack' 
--enable-elf-hack=relr
+               fi
+       elif use 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"
+
+       # Make revdep-rebuild.sh happy; Also required for musl
+       append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
+
+       # Pass $MAKEOPTS to build system
+       export MOZ_MAKE_FLAGS="${MAKEOPTS}"
+
+       # Use system's Python environment
+       export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach
+
+       export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
+
+       if ! use telemetry; then
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_CRASHREPORTER=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_DATA_REPORTING=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_SERVICES_HEALTHREPORT=0"
+               mozconfig_add_options_mk '-telemetry setting' 
"MOZ_TELEMETRY_REPORTING=0"
+       fi
+
+       # Disable notification when build system has finished
+       export MOZ_NOSPAM=1
+
+       # Portage sets XARGS environment variable to "xargs -r" by default which
+       # breaks build system's check_prog() function which doesn't support 
arguments
+       mozconfig_add_options_ac 'Gentoo default' 
"XARGS=${EPREFIX}/usr/bin/xargs"
+
+       # Set build dir
+       mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+       # Show flags we will use
+       einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       # Handle EXTRA_CONF and show summary
+       local ac opt hash reason
+
+       # Apply EXTRA_ECONF entries to $MOZCONFIG
+       if [[ -n ${EXTRA_ECONF} ]] ; then
+               IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+               for opt in "${ac[@]}"; do
+                       mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+               done
+       fi
+
+       echo
+       echo "=========================================================="
+       echo "Building ${PF} with the following configuration"
+       grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+               [[ -z ${hash} || ${hash} == \# ]] \
+                       || die "error reading mozconfig: ${ac} ${opt} ${hash} 
${reason}"
+               printf "    %-30s  %s\n" "${opt}" "${reason:-mozilla.org 
default}"
+       done
+       echo "=========================================================="
+       echo
+
+       ./mach configure || die
+}
+
+src_compile() {
+       local virtx_cmd=
+
+       if [[ ${use_lto} == "yes" ]] && tc-ld-is-mold ; then
+               # increase ulimit with mold+lto, bugs #892641, #907485
+               if ! ulimit -n 16384 1>/dev/null 2>&1 ; then
+                       ewarn "Unable to modify ulimits - building with 
mold+lto might fail due to low ulimit -n resources."
+                       ewarn "Please see bugs #892641 & #907485."
+               else
+                       ulimit -n 16384
+               fi
+       fi
+
+       if use pgo; then
+               # Reset and cleanup environment variables used by GNOME/XDG
+               gnome2_environment_reset
+
+               addpredict /root
+
+               if ! use X; then
+                       virtx_cmd=virtwl
+               else
+                       virtx_cmd=virtx
+               fi
+       fi
+
+       if ! use X; then
+               local -x GDK_BACKEND=wayland
+       else
+               local -x GDK_BACKEND=x11
+       fi
+
+       ${virtx_cmd} ./mach build --verbose || die
+}
+
+src_install() {
+       # xpcshell is getting called during install
+       pax-mark m \
+               "${BUILD_DIR}"/dist/bin/xpcshell \
+               "${BUILD_DIR}"/dist/bin/${PN} \
+               "${BUILD_DIR}"/dist/bin/plugin-container
+
+       DESTDIR="${D}" ./mach install || die
+
+       # Upstream cannot ship symlink but we can (bmo#658850)
+       rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+       dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+       # Don't install llvm-symbolizer from 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:@DEFAULT_WAYLAND@:${use_wayland}:" \
+               "${ED}/usr/bin/${PN}" || die
+
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       if ! use gmp-autoupdate ; then
+               elog "USE='-gmp-autoupdate' has disabled the following plugins 
from updating or"
+               elog "installing into new profiles:"
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       elog "\t ${plugin}"
+               done
+               elog
+       fi
+
+       # bug 835078
+       if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+               ewarn "You have nouveau drivers installed in your system and 
'hwaccel' "
+               ewarn "enabled for Firefox. Nouveau / your GPU might not 
support the "
+               ewarn "required EGL, so either disable 'hwaccel' or try the 
workaround "
+               ewarn "explained in https://bugs.gentoo.org/835078#c5 if 
Firefox crashes."
+       fi
+
+       readme.gentoo_print_elog
+
+       optfeature_header "Optional programs for extra features:"
+       optfeature "desktop notifications" x11-libs/libnotify
+       optfeature "fallback mouse cursor theme e.g. on WMs" 
gnome-base/gsettings-desktop-schemas
+       optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal
+       if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+               optfeature "hardware acceleration with NVIDIA cards" 
media-libs/nvidia-vaapi-driver
+       fi
+
+       if ! has_version "sys-libs/glibc"; then
+               elog
+               elog "glibc not found! You won't be able to play DRM content."
+               elog "See Gentoo bug #910309 or upstream bug #1843683."
+               elog
+       fi
+}

Reply via email to