commit:     9d6c60914ebb21e53115ac5259e191e9dcd84279
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Sep  3 10:42:54 2024 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Sep  3 10:44:28 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9d6c6091

www-client/firefox: add 128.2.0

 - allow connman[networkmanager] to be used instead of networkmanager for +wifi,
 - drop many patches that have been merged upstream for esr128.2,
 - fix many seds,
 - install gnome-shell search-provider files,
 - remove tc-ld-is-mold function from the ebuild since it's now merged into
   toolchain-funcs.eclass,
 - sync changes between rapid and esr to ease up future maintenance.

Closes: https://bugs.gentoo.org/938205
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 www-client/firefox/Manifest               |  102 +++
 www-client/firefox/firefox-128.2.0.ebuild | 1354 +++++++++++++++++++++++++++++
 2 files changed, 1456 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index b3bd97c8bebd..c5e7b84a0457 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -301,7 +301,109 @@ DIST firefox-128.1.0esr-xh.xpi 417178 BLAKE2B 
db647fc6764380635d796baaf6084094f1
 DIST firefox-128.1.0esr-zh-CN.xpi 657339 BLAKE2B 
37acc3369de9339eb10a39211526bc8cbf82f3962b0415cdf96b9933fa88fd5359361fa6c0a32545cf31cbd86d590efe9814b67d835f486e2a39387c00bc6e04
 SHA512 
524d90cabcf3ec2f882670db7571156c61b19302371c3c17703fcf3abd6758aea898b6231c51a50b3db6607855a6d79677054a9b19cfaa522bde9211b9ae30a4
 DIST firefox-128.1.0esr-zh-TW.xpi 659474 BLAKE2B 
98d0e9d960a32692cd34e4ac99ec5494e74b0b55d45a2f36cd4f722ac8ea2c9074c733ef2b04a0bba60e9622c26a14bd38d8eecf8a810f0819a5c85615023ef6
 SHA512 
1a431fd2d01a78fb761c812bdff06361c2c5f59fbda12656a38622346cd9370e6748b61cc98ab38a3d31d9824aa9f2da4e90a0cb6d0533e40136aec7ac8f1469
 DIST firefox-128.1.0esr.source.tar.xz 561953208 BLAKE2B 
6d22bb17ad22d5e29008fd98f6b90bc6869f71c03b09e5b24a6a8a8304f303b316131aeee5d3e5f175a9194074d586a507ae121b9397aa371839dbdb1349f2bd
 SHA512 
8055a7f83acf0cab6124ba5809aff1c082e81a0d30ff318ec719f8fd3f4af9aa60e2094c1abd6c981193d751075a9569370176e20e50f3c1959fe27a15511388
+DIST firefox-128.2.0esr-ach.xpi 465016 BLAKE2B 
70b8839a5028d7b87218116dd44fa724fdc1aee91c371bd5e84112a9153568d7186ef4237f707e08b9e22f0208affd03141b49fa4b842cc82faa5ebe7f19004f
 SHA512 
688b8fdb84a6bf069650a65218615d605cd9cbd52435261f3f4fcae749cd67373fb1ce34c24bd3d0712c5e9416a2c111e2bd245050130423c944b64ca9092c1b
+DIST firefox-128.2.0esr-af.xpi 418343 BLAKE2B 
6b52d8b28d7e1095257927e2e894276cacf131fbd8827bb321729787d4f2b9d35418c5b834a87c30fe035f31f03c003d3691d2350ffa6972d1ef8de15952fe6a
 SHA512 
70bfdc67a3f2ad213de61387f611bd9f6231eabc7012f190b84020ee3c75d70579d88db5cc1995f86fe1eeae72c31438f64019824c4ea28ed589b39cc12b9dd9
+DIST firefox-128.2.0esr-an.xpi 506833 BLAKE2B 
0c46cfef3202306b143015195ad4dc8d04c1bbb51dfd643b55abbcb44903774a4b119c0cd2336209eef2ef57abe5c2f6d0b82eae651e1cdc738580e6cb56474c
 SHA512 
3dcc2c6ceca2d8452322fdb129537447d4bfc9951195e66a24ad7fc5c5f3bf9cff17326eb98c3fe7afc4e33ec9ae6f5d5b15e2976da34192a712bb1a08dc58d9
+DIST firefox-128.2.0esr-ar.xpi 612892 BLAKE2B 
940c8caabcafa3a9c95905d820bb622adb94b259da739ff5ed88338b3354d572aeb03afa98aeb8f89b83dfd5c0fd5a6c0221c64ece8b1be8bdf0913a5c7e29fa
 SHA512 
2c18828e3694d898bfb0c7fe36ac5937a1baf70dd1613570e1c11101197d5a66593334fd6a2b007ed680d8d62e6f5eacc1ac2e4766dd0f6fcba8fd255adc5780
+DIST firefox-128.2.0esr-ast.xpi 497291 BLAKE2B 
752ad97fd9c00912228226324eb8647bd5c4cfdf3a8339aa0100047a4e75a818cdb327b5505e9ddb8a33cd80a26217a0bd9cf0fef6ea0a4895a3db331686b830
 SHA512 
bbbac520b9dc6eb6fd9c4a00651842d8765411fbfd2803c6c536f0e5b1fb7e0ca8886eab0714588dd26fa191363f503550d39ecc14c6263cc1247cab9d43b007
+DIST firefox-128.2.0esr-az.xpi 491719 BLAKE2B 
bf70d9814f2951a02ad0522d23e8162785087972ba02355613dd14f196308335b0e126845aa378cee1e11188f832cb0e11064d7ede7c3257b5dde0cc5932c32f
 SHA512 
c35f461cc54aa04200729d212525e807c3361b081ade3d6b7a0bab462fcb43c7ecc05ca0cd8a1c3a6471126de7c45386c5bab6b9225940f3bbf11441fd9c2195
+DIST firefox-128.2.0esr-be.xpi 717327 BLAKE2B 
452c846fddd81bf764903eb42d4aa87d7f96fdbb2b9a87718abf6b6ec3552855a6fa066fc69eda91bc51143ecca890fafbc5297f9c7d3f1a5730b6eab39e04c0
 SHA512 
7abab5270899c9ac4be6ced477c630096475164caa37d88089fde40c1c3e8c794f21c4a88a001f1ac5c7605eaa63c3d156e27eda331d77ddfde5ef393f7d45f3
+DIST firefox-128.2.0esr-bg.xpi 637126 BLAKE2B 
7bfc353a577a31c3baaf8af178dc34e50b36fb02f8a23e585cb8f7a6d97252c49a642fadf2ae47ad0615af9c4dfcd77b631d164d3bc1fce87fc2008c2d109e1d
 SHA512 
16cb5b6eaf1f4691b59d5354b4df9cf1b55d317e42d07d59226315448c9ae2b61225bd6f810bf192e2dea8ad8b0b574a51c47d7196f93367a78f873255a21eb3
+DIST firefox-128.2.0esr-bn.xpi 582470 BLAKE2B 
7395bb68fd185e1559dfd94ea67c9e70004c59b0d2fca92596ebf2f7b53e3985f0dd1f00660d591317db23f460048bb89cfe832813060e53e52cf3425c5c74d2
 SHA512 
731c42ee4b5e0ebe309bee4370601324ced7e7d95f5543dc4fe72db60fb1d03e5d4474755b329744e00ebb3fb1c3cc905c50ec4a9a6ded85da90ec4fe4bf5c86
+DIST firefox-128.2.0esr-br.xpi 590836 BLAKE2B 
3d3352e5466a2df24f294eab8d604ad97615aeb5edc02edda2485ae47db99702e6dd163dffe4d356e651ac1bc36b3815cee22b2d27ff1ec6bffca007a4552197
 SHA512 
1a59e68eb68c3f2be052ea6291bf4cea5543c3843ab31f76018515e3cee2d8e0191e0ab9ddebc3cfa2563e242e6a8a58c72ff6d087ef0e3bc5fb80f6c2a30aef
+DIST firefox-128.2.0esr-bs.xpi 510170 BLAKE2B 
0c4de7a6883be7bc6520053ba86bea54b9bf57ec470841eef74fd412f2c11443057ecf952cb2125fbcbdab9289128f12b8071b9052b78321673fb80b0eadde0c
 SHA512 
b51596dce4e77c3dbf0f98fa21e430b18fbe5ea9806bf0ececf06377d2fdb2064f5205af839bacd066ca886797ad0b050cee8b7069c23a864dc146e5c8d76138
+DIST firefox-128.2.0esr-ca-valencia.xpi 547190 BLAKE2B 
1fa8d3cb7d8821a1e62185e260fdbcf54b5f520d71ecf984c9c7a56958c0fa535e1406b6183d0198ffb847c911f4dfa632f200500b2e32efeb98112dd04451d1
 SHA512 
98c0b5b46620783ef2d21e5915fe8130968e912bd553a7e1a116445d82be4931fcca213621a33a6b1cbf4e744d7e14d59f9017bd51f58df7b1d673b179986801
+DIST firefox-128.2.0esr-ca.xpi 598610 BLAKE2B 
c526d2dde8315fce06a2e272c8145f2f14b7c0a80d04fa002b01a79e496e4b134d2e219636908d4ff9d2bd43e1b478d5be5093b31dcc5b196a1d643789489f47
 SHA512 
82b80def7796f4770c93535a45375ebea9777866f28fc9f5b527e7bccc086d3d9d7e1cc20b8d83cbcc13a007ea457bcc683b67f62cd7f5c869d11b5ddcba3607
+DIST firefox-128.2.0esr-cak.xpi 594027 BLAKE2B 
1198ae6b3116e0f52fe7042060cd1eacdd9948787bbca82683140c1895429e81a2de3df46eb94dfaca757071fd560982221dc674f0cd79db5235071bda463fde
 SHA512 
3e2f30e4cb499f46322c6b0074a54bbd51d8d362d6c5e7b6aad16a5cf092f29d44701c936ffed8132e1a904eed2e787b0f4e47e68980f5b56718f59d5187650c
+DIST firefox-128.2.0esr-cs.xpi 666457 BLAKE2B 
77b1848b1bc25b4280725c0bdab061e9b70429d07c197761b9851d5723a6a542215d714df491b93760268c25fdb47a0f8414a07871095e25b8cf6708fa58ea12
 SHA512 
b3792b7983065ab253c4891e79cf4ca4a79027f0f23e64e34c1e0ecbc9eb3d0691a4def5a386160b59d287d3f2dc1e13a9a6534704ab5230c34474c52db1a032
+DIST firefox-128.2.0esr-cy.xpi 631265 BLAKE2B 
ae4ed3264337d1aea359ae0ba2d0235f351079b7558fe3869b662e91cdb557d1742a66bf559295e0d8140b25bb77bb53101163da3a85c9cdb3d3b38275f05dd8
 SHA512 
4c65b218ad5acbee572516ab21a379dc8f4049884854cfc1ba4feae67adb8479668a01d0313304e6b8c26fe8dc8ee35fd1bf86f7cd6327fa3edfa6413373bba7
+DIST firefox-128.2.0esr-da.xpi 614503 BLAKE2B 
30f2b5f42edf0cc047334a5c1ea1ffe0ca11bb269eabc1613ffa4c65806059da4460a34d2ac9a0022e19f9b5de3ea5c01cbc8a3893ce1a9c64e04a40628b84a9
 SHA512 
53abd8fdf4cf933be6b5ba430ef24a42579388bdc77ae38aee88389836b3096f1435f7cdb887a8079ba44f1f7b5f8c170eff43445f0e435a4fe2a291f1d6ee85
+DIST firefox-128.2.0esr-de.xpi 639266 BLAKE2B 
540568f54d7405422b3a096dee282b69b77c72cf1195698c996762364b5fbfb845e7cd9298596e51e942330cc2ed8020bcb2facb544ab5f3c27e7553bfc36cf0
 SHA512 
f1d3e6c215830b964d093ec484732c100d2fb2b54f815e462fe8665ec7608bcb969155df8d1ab0ae556513d58ca906e02b1be9ebaf1902ccb6e41b169eb6bc07
+DIST firefox-128.2.0esr-dsb.xpi 656622 BLAKE2B 
faa31d365e4b25b5aed5acb01ec2724dc43ee859aac2bd7dfb832fdcc080e1ceda16e793450295a3167d17e236c244dd8522c809eb9e2015563683a43c4cdc35
 SHA512 
0c25b972d6fc0bd8a5c3610174281e2886b45e660c6b788f8263a9b85ce0758a1e2bb0c6e4fceb0f9033d3a64db90ac02cca65e2ab63af11a4881de1c2b33c45
+DIST firefox-128.2.0esr-el.xpi 741108 BLAKE2B 
ed21c5bc8a104f6002ab96fa2d1bcee0ec93ab9e3b6990834839b5b5c98d3df06bf237f6cc6a5e3a3eecd2503e33d91f7b5f3babfa858ed4de77348bdf6c2a6a
 SHA512 
ec3b0063c15587637b2e6d58b11a6aa8ae775cca51c53f3e3a88ca3da939248bbdeb02e94027e4b7b55baae05c4106f3c2172781e397fff56569eb819fe6dded
+DIST firefox-128.2.0esr-en-CA.xpi 590919 BLAKE2B 
eacce54324130d863dc70990c284737b8ce1ccebaa67726f57f042f6bb3b83f3ebd31acccaa3e61869074f4cc46ff71ce5ee57b2a831dab4160e99446e44e02e
 SHA512 
83b02b2b8ed6e76c1c6dbaf7570d3ba71c75ec7b253248200ab445ba571a741c3ef490025ea1fcace9994de94e5f80a8d74c469b83bf1ccf2df48d7b4fed05da
+DIST firefox-128.2.0esr-en-GB.xpi 591530 BLAKE2B 
c487037962e6f3319dc2094f96fb057566148316fa2613e8e9c520771fb546b58ca290e91c20c295d1f1e4b53cdf150fc15a64e00b08e587795b9e2e3dc82d9e
 SHA512 
6e92e43a559ac736ede9089ee6929deb04cb1c00e296398e579fe1f6e2e273649c1961cd599c6d6aeee0a2b75daff86bf0f7b469d340e7bc6daca2d1c3d78dd7
+DIST firefox-128.2.0esr-eo.xpi 615506 BLAKE2B 
b6be4576f6e8e661e084100547115faf9d823f3a9cdd256a136bbc052e51a05409591d3ed5f378bade142331840ef01e99ddd633d360afcb980199b494cc1fc8
 SHA512 
9b7af6122011f922c8306fce5dd4e0fbb2afa2d8b00c08833087cbbf38e86b313c5e9b594cb9f137f5ccb4a33fbfe6ec94a7329656512f7a39394df6f8356913
+DIST firefox-128.2.0esr-es-AR.xpi 634653 BLAKE2B 
764ccd63612f0d10f9efc920945c5978f809b7e2fa6eadabd263a85d37946a59211c417ab22c2af34e7f6725cee554876cb456dd9ed2b9f534e855d91fc9ac1a
 SHA512 
c68b83ff1118a0999faf3d17341f80c73307e01e594be163e1231b69d3e5180a6ccb0084ceb00bec49823cf96bb5f13d1ddba73583590ccfceb120ddc07fb699
+DIST firefox-128.2.0esr-es-CL.xpi 634136 BLAKE2B 
eb8307f7756ed19bb6fc5cfd043f7ac946aa7302da7363e20364d5d012b159e0fcd026672b7d666efe8f1a4e4ae4f325ef6c85c15fccc8cfa30365719d66e5ee
 SHA512 
a542f65f22873c09c0fa0f9afa80e69f997f1693ab6420977ec71a053cf3a7631552a538e927511e753556c08720bc4bbb67fc88c3f1b5143e0e3721102cf22a
+DIST firefox-128.2.0esr-es-ES.xpi 622027 BLAKE2B 
95a3e27ace81c633711300b1579589c9a03f8b87266a6312b4b009d072abca81d89889d4084ee75a50bf6e8e566bbf6091c41a59ad9f7304fdd06509e3f514e8
 SHA512 
2183fd66929fe418edd1b86c16b2f2d910fb141407ed2a20d86002fc0cdbdea385f6cf6012f0982d7a863ea5c7c72d199ab312b59a9a6b0acbafc5640650a1a8
+DIST firefox-128.2.0esr-es-MX.xpi 610639 BLAKE2B 
0592cdfc5b9c29f7d9294e76a6cb0a968bfd45ce37b888e4cae56d90234ff33feb2d42a30ce474616724994a27dfc1dac305bf797bad1d94d976d304af869810
 SHA512 
f4363783ccd52ed042f1a4d97c8d96e799f0ec67b303627ddcc7ba397656c3f14200eca1b731a0e1ba3ca1c118a177dd4103f7c9f9df064ad0ee542c9c0cd21f
+DIST firefox-128.2.0esr-et.xpi 540637 BLAKE2B 
12c24fa32eb588245f2e552a855a9af486761e1358e380d2d734862b8f48f043ea84e219965b5c5b7aaa9a1a0d4f8abdb4947f2988512108b61fbb1a592429c5
 SHA512 
ae8bb76206803313cf8eadc3e794f5be13beba527166965cb30f7aa33809deadd8a4a5ac805523e129f0feb198d9239ea4d4be709d6ad8d1abd856b6c49019ff
+DIST firefox-128.2.0esr-eu.xpi 601114 BLAKE2B 
94532229dfe560e1eb01dcc6d3a22c33e67aa28759334436b47715477f264430e196dab25d19d0e0089a822b343c12c23eb6d3e66da4de1c3a35e8f60652e4a5
 SHA512 
ee95366c8e79895d89710c1aeb791064aeee409e4fbbc6935d552540ba6d7e0a2552b7f2f1da89fec23f91e9dd684e9a78a5e96675dc40218cc2a35758f8d520
+DIST firefox-128.2.0esr-fa.xpi 590957 BLAKE2B 
af0a782804463e6bed41a4b75ee0207e80669841eaacbf0aef41a3cd8ef2958546ee97dc4b1e5270fe1db6b26aea34b1b3ae76a49913e764911fe401bdb1245f
 SHA512 
c63af3bed58982c29b55610f66939e7464e11ba8a28b3a66777b1c2c5677cf171f8637f3ecd4513afc7661fa3279779851797477b2f01120a72b54b2a74ef611
+DIST firefox-128.2.0esr-ff.xpi 477004 BLAKE2B 
80fe9a1ec25cd512daf3a54d6a84e63e4538e51372ae55e81096da8207ed5c29ad090dd4026f09e001c75e74d1d8fe75e0723c39c66d0ea7c0f4711807fc0d07
 SHA512 
b6f6cb712e98192dc2dbbfb5118cdc6aa450378e8a9d6292ef1c38260302c507941862444214fb88b9a2e2c5d35e885a7ac81d1872975a4889f6b9bb5a1f60ac
+DIST firefox-128.2.0esr-fi.xpi 613340 BLAKE2B 
ca22ff04b8f70e7aee2809f407913ab2f32050c1890d9ef6ded3dafb9daed3419c5139c1c6d4aeb0eb97fda12b6361eecb0e1702c73707e646d0da4fa35da96e
 SHA512 
25e674d343b78e0fce174d897f7692cec5717bc10285ce83fa528dfec452c8358930622ab2d5f3e54efd1234846676677ec8026793da374ce44612ee55b8af88
+DIST firefox-128.2.0esr-fr.xpi 646209 BLAKE2B 
d3eeca16e0d20bb5b881555a6688060394e6ff686510fe1e4aecdab0822d393d573231b65b4ef64ca88ac150c558b57644371a60555841192df4ede33e668c31
 SHA512 
85b5d205b27fb696f8e8fc5ed9ccd7607ea8b93045c415172e4779248051741c9dcc3a1fa9675d5d89047f70a38551bd240244b34ebd40f3327930e8efc083d2
+DIST firefox-128.2.0esr-fur.xpi 640939 BLAKE2B 
1a2e29dfee505c07d4f8e6c8182eeb3d224de9ec844e893bd731be82a99e51d8b9a79f37a2cbabfe50d400dff21f52c3a68fd00a353feddc6aee21aa0908e491
 SHA512 
d0c2cb70207885acd9923ea227464e19bdb8da0c767ec26743b551ee8f9cb10023578a023cdc0e05d4f8977ce6170fa0926428c2c026445dc548ebcc4ddab2a1
+DIST firefox-128.2.0esr-fy-NL.xpi 630346 BLAKE2B 
e8a3d6d2e03c798bb71b4d346a510a0579ac25b884c92f637a6807591b016a3807ac46d9844974b889b79316f2bc07b8e64fa054e3e7453c07b956c2bbfffcaf
 SHA512 
5dd70c7888c612d6dbbab99a4864187e0003537eb267c293e297591efb896c2510ce7160b836622e9f4bddfa8bc0831aed95c8c5053749e2c0fde9dfd6e32f0c
+DIST firefox-128.2.0esr-ga-IE.xpi 471840 BLAKE2B 
9aeb9318dc067c1da9b618fa7cff37da0068f63f3d12f630e329d16d2b5ed8da73df5825bedd84aa141b05d0e2a06a45f6d57eaa364d1654706e63ecd46f7c9a
 SHA512 
ba17302c32241cc959f20b5b4d9fb81fb79ae4011caffa97b6d26a0541eca41d0a31e16815b9c15b483fe925ae060b0aaca1985f94fca18375750e282c033f1f
+DIST firefox-128.2.0esr-gd.xpi 597538 BLAKE2B 
9dd9f2745301f8f310f33a190a65a20f76b4bb1c000fafb5d69282b086944e8731969b28996375e38e5fe97597e712021019e93fedfc7d2de9df519d3d42dc89
 SHA512 
42304ddb1af2bdc9b4f7e4ced0867004f203972ac454a597b8b50ddadc0ca3be8d5276ea8df355e1ab605d20b626f58129cd538467087bb99d3524cc63c77544
+DIST firefox-128.2.0esr-gl.xpi 605038 BLAKE2B 
2c5bb207281eb993317336451c9f9579cd64dc4cffdd52ad19dcd0d9cde97b74240501623a1bc4921ed34d1239e5bf87347c466e1fe4da75cc1095eb08d018e3
 SHA512 
a164ebdd56d88834ac79ab92ea23cfc840cf7cd808008ddd68886374e476e228f9562cf8452d012c17b48a1c99a963da352aa921517cc2e560915b05fc99b388
+DIST firefox-128.2.0esr-gn.xpi 643641 BLAKE2B 
e61563bc66ec0ba0a71eba877163b670e29d8d3bf2b782db166d71af9bf17ac39b151ea9c4a6f00daf560400cb02124e2f1b43dcceecf265d8d6721c97c32f92
 SHA512 
7f9f0eb9771f05e921937d78519e0f03a43fff450545fbc1f7dd19cc01391b0b6918022bac1fdaabf3f3637b25333fcfa5a9081ec54eed7d6ae79d713a4a697c
+DIST firefox-128.2.0esr-gu-IN.xpi 528311 BLAKE2B 
6e9335f5167e79ce9ca1cdcc628615ea41f03e91bece3ba6c4b3c4c235a0ce1fd9cc502400ae53aa21e8ec7b2c50dc4513ea2b90b7fb8ba8766caa82f1f65e0c
 SHA512 
0dba09b2a209eb3d9bc0abdbd108bd906c2e2426b75dc961f828883cc0be44e61e730bd6b030f6f66de7452afb5a61e25dbf68de4e362b5d29bfd6392ff8fce6
+DIST firefox-128.2.0esr-he.xpi 637789 BLAKE2B 
09b9ce4818f609bb14e4f7647cd34a6082e2411a57cb9dd7d5a7599d9adaa964b551a543da6f05a6ea63eb4046fa79634b5383a414d09eabfc6c2d52fd7f64d3
 SHA512 
e271dce2a47ef65020cefe41bb236ecfbbd0c0b0d558d32377985b7f2c8608614f58429430e54309b2a4754dbc66fb96b032b08efbec5773a359387a54786fa6
+DIST firefox-128.2.0esr-hi-IN.xpi 567736 BLAKE2B 
38881624b5793b8b6a9d352bbe9ac95f17128a31a2e666761f341d83a8c77619967b2382034a59eafd753e38623c315a87c2805048232be1e435d5f86840fbcf
 SHA512 
1181a815abc6a258798251d62e200c9a2c36da3ab1256899e86972a47ba5eddec9a080ef7d1cb4e280faa5419125d670c9f75a4f8ebe21ab7d6390d0234660e9
+DIST firefox-128.2.0esr-hr.xpi 615348 BLAKE2B 
f302229dfafa7923af9339c196b9ef6267e5eed846fb09d9e1520fa47cced0c2f13bc3c891118a9253cfaa8d1c6e666b978ee27b1418bf9208340991c70e586c
 SHA512 
ed7b53d4e4266ea24c864ad83044d60729b75a1e2a0a6a2350952309b337e6461ea44f9894adf232512bec49079b375a48e1117db01d458cb28ae9e1e91aeb87
+DIST firefox-128.2.0esr-hsb.xpi 652642 BLAKE2B 
cdf7e6541df09fae4a4d12b0537a5ef9538384c1a92e48dfdfbe37ffced85bb576391e8abc2702fdfa65bbb3b1515740aebbd6a0a61027d84e1974b629acfbf7
 SHA512 
ca993b1e2d95fb54b5552aefbbfb6ee511fff898f01c5bc45c542b3076fa20211c5e68d0c7139825bab260671e7ced609c394dad9e371cefeb55ded6ca3e0cdc
+DIST firefox-128.2.0esr-hu.xpi 657494 BLAKE2B 
a4ccab55a678d878621586026bc34ba7d67fb48db020befc9432be2404e71b1c3206fa4bcf791ae7aba839e2791a17d2d535481ba5a284878286a24a64518b37
 SHA512 
0c4566a47237e13c8aeb5bc859b65819d72878365a41320311f6afdebb778f2f2cee7778fbc01763cd99cd94897160a2696a94c71e01df2aec444b96bb19348e
+DIST firefox-128.2.0esr-hy-AM.xpi 652579 BLAKE2B 
f9116e2d45ba205d01cebdfe38597e72a3da56ba529ec82a1c2a2c63c9e8798a879fd229c1aa5becf495aac33dab116388f817afbe14ccf3b3524cc2ef2b151a
 SHA512 
657681a0725d89886690b832d985bf59bc7163521a81da4a3b253a0bc66f598d305a45092c655562d61632ca48c562d8366dbef9f39fecea96778f7dc2506848
+DIST firefox-128.2.0esr-ia.xpi 615359 BLAKE2B 
3807846bba513bfc0564f3712be5e93dc5f5a9c7378a152af7dd56a5d6271894ee2bd60255ff26c979c67968c1dc8a1e2d53c3c4222e248cf750c93f691bb20f
 SHA512 
2567f8f3776480882fc7cdd43a6a23ea980806ea6bf738c6d84e18cee28558613baabedc692b1bc0489c9c93c9a5c809167b5f96f96aff107a9996d883856eae
+DIST firefox-128.2.0esr-id.xpi 585709 BLAKE2B 
5349e576eca2e00af352ec6c8a685b4d2a930b70c33fd60cf8569820985664ac8de3f580063126ec340fd5967ec4ef212b04271d4a0f3218729bfaa08da228f5
 SHA512 
66f988217ceaa43cdf600e36be136e063edea6bffc573c0b39cfa67fed9e1b1d8d620dd9fa1478d78914a015338bfd02e8214db916cf79cd08f527510b67e09e
+DIST firefox-128.2.0esr-is.xpi 619078 BLAKE2B 
54a0d0d695438bd6be120b6ab61ebcd048fa439e342d5cbda1c437a8d69a5dab2dbcf295a9e47c3d430a7249058e880c99a2661d8c86205902930caf376d6cc6
 SHA512 
2feacf83bb6c0f8f87e8294ada857a3060419449bf34233c2af2a01bd84a4916d529ba34faefebc90dcf23abbd1255dfb98a87066782b29b67a885beb574207a
+DIST firefox-128.2.0esr-it.xpi 574457 BLAKE2B 
b9d6aa31442cbd73e5f328e136b45fdebdfc2881a5072caec60609257a2e0388dded259fc9fc0fabebb5320e22bd731aaa9ffca1d5514a361c7b887881882deb
 SHA512 
db880c8fd054c08dbf5427be39bfbccf6a11f4192ba2137e00e792bf3ed2138b31164de3fac9af78d2c751809f8d496812b9915b2dd4bc93abdb8587122de6f1
+DIST firefox-128.2.0esr-ja.xpi 683774 BLAKE2B 
305bd1fca5745927fc52bd6c29b1497b5c6a6b00926c1f8b7a95bf77d47897a8adeaddefeae781a9f0f10a8172ebcce11c1b1193857e16b540fabfd73e68b9b5
 SHA512 
f1e5bf2cf5ce8eedcab383d2f691009a561e16416335fcccf75fabd95d228aa25aadeffffcfc6ddf2f2a73be8b23d36afeb98ef30a94e3f79bdaf784c0fa6218
+DIST firefox-128.2.0esr-ka.xpi 661655 BLAKE2B 
84357ff5ebc44125b7a097e229a71eb104ee960a0630fe454c11baccab20c66e4a2ef9195ed6bb46cd73b4f1acd047e13a4c4b87d0cd14e5d02d7b79cb6001ea
 SHA512 
7b7468fc8634e20a2a1f7f262c2e624b0f5c45c1aedde30a7d0a963002f10d2e3385dbf9cc94a94253e748ac2d89d2f99ac8446f22d42e573f44c18d0fcc64c8
+DIST firefox-128.2.0esr-kab.xpi 612142 BLAKE2B 
cfa29707cd1c249f553d7ef495b7ae591c3e09441998d36ee8436dad932590b42f180af474ab29acafe4344fd4bf51d137b7ea9cfd9ef1184e70ec166bd9b37a
 SHA512 
43ecb078d97fba83dad71cb284db809404943d3bb1999fc755acdc2d29a84dfe047f23b5357c3f9eff638d70f325eb62698a57213406020eb9575199cf494d60
+DIST firefox-128.2.0esr-kk.xpi 715705 BLAKE2B 
14abda57a8e75b8a4275fcacbffab2e138e8b0b22d64c58a3327f9692db3a80a630e11912be906bbd073e419453c1d558e94c4dd80d555d20e2fecb42987311d
 SHA512 
93f8560501c830faa25fc3cb697e3e28296dd3a67298dae68cea75f6be59ee5dad95153b513eb0bb93e129ee8ce1d4fc4f8f9887245e1156e711483fa4a1f3f9
+DIST firefox-128.2.0esr-km.xpi 526704 BLAKE2B 
46d8c5804c04e4df7e409f4cd9705c71169800e7a63c71f713771643ead53539f586d9324b9671cb748a59df663ee08a1e71918a0d237e985a639d8e29a5dae4
 SHA512 
8c894f9aa95ba2ef3460560af5a001bf3511bde6ee961db33a01667c8a32133a2316fa2908bc92b30fb290999582d8d79dd39190126ab1592d925f687c4b0a1b
+DIST firefox-128.2.0esr-kn.xpi 492069 BLAKE2B 
31ce67d4d3da710c2dc93f9918ad367567dedebbb5476c80e9d90dc66bb2a586ca3ee562c5da1ef2713cc7fc78240d60efab0ffdc61a3d7e83abdc861297c029
 SHA512 
dcd4edd6b64f482bdd98254d83a34b7e332afd62c4e97dd0de360a71ad084cb5aa7e12dffbce49a27b68d9d5b881e231005592156a4d7a49f3c37ef7b89342a1
+DIST firefox-128.2.0esr-ko.xpi 668819 BLAKE2B 
1855b9bf73f05feab03f167a6f5d32d1fc70c3d02d5c46e5253a415ad779ad0b4aed567985b42743b7a8ff1f3e67b2b0950703fafd9f693c64221d9da6429ecb
 SHA512 
36a1da1fcf63b45423e578bd2346d8e01fc51e7f740ef21082d2d3f9c49cf480e8208e1e42f5cfc99fc911ae59854fef241009873fdf9811c906938fd285c648
+DIST firefox-128.2.0esr-lij.xpi 485047 BLAKE2B 
572e5ad0d33aa885b2033f67eacf7b171688615361c1941fcdc2c4fdd9e2c4e647c51b22cfc4268586679976cfeeac8d4e1d65ebbcbd04ee878bbc0cd056ad7a
 SHA512 
ccc5d837e485d42fc12405642987fd828c86e438c70d70ad075a665bbb3c81a6ebbe2a6f660045fea13c1bb490fe0c5353cd5a2623ee14cff6a60edd0b3c308d
+DIST firefox-128.2.0esr-lt.xpi 573642 BLAKE2B 
0275ff8e100ad123c9e53f2278f77fc6ce845eed16f57dd265f8452095ead916ecade8abd4e9795d73304c0325bd6eca7d62ec532b8a6cf6a74c60f232bf2412
 SHA512 
ed7ab421a9c6f1447525e3622324e0d97cf290b67ea132a49fc2f94207c69a0b93bd0e4dac1099dd12802b20ca2d102cd1aafaa2f8ff9d846577b14b3d43d443
+DIST firefox-128.2.0esr-lv.xpi 584340 BLAKE2B 
dd5986975a2b7912a5612a5b547f927582aa5edbbe9993d32ff053e2f6fd321c523806685e136c8860cc30d6d44e1c61e0dec17d0f4a11c24d3a49b417db1464
 SHA512 
93d0c8a3a40ba33de1ae212534eed4ea318f6f0ade740f9b4f58290534c2be28598eaf7aa934cfbb83c27f1890b614edc59b186004f76617248b55b8954541c4
+DIST firefox-128.2.0esr-mk.xpi 494673 BLAKE2B 
f26a42c95c613af468f027120b0c38ecc6ada51a6fcf64ce84e8a42e650e236531d7f72b3e94fddbf0f317dc9c6ee73fde88d3fbcd42d8ba12bcff81d68414a7
 SHA512 
672d1704b38074d2c716319b1b06fae8a8cdaa5d0e27c3c4705226d86ad4741dab028afaf20627f8cc8b5cc6201537e5eae88e5a6fba290711af141acbd48f05
+DIST firefox-128.2.0esr-mr.xpi 533051 BLAKE2B 
0468e82ecaffdd73b5b56164a902a83971d71a333ea34d95089147aaef14493c4eccb1b44b2dd4d7b8310112990a512abeaef42d0544cda9ff729ca27ec1a6bf
 SHA512 
97b1a900a06d2676d91506d2aac53c9908ebe5a0605990c7ff7451e6e6ee3863067316988393341fbbd6428508a27362d509e843f23697d74dbd96ad3f3a5461
+DIST firefox-128.2.0esr-ms.xpi 450664 BLAKE2B 
8a72e63cf0a067b3bb35c572b4955046c72667cdf0f34517ec8125cdaada61150a4195c47bd7706348d269c6ed18d42a05f4da222e19556df8fa0edf1450f2dc
 SHA512 
e6755fb932bc33645497775e80abd02f0a471b12d3ffc914559eadc85ed37c0976e097c036c70c650ea2763ed294e427411c3be696bf7d687a61e90e6708ab9f
+DIST firefox-128.2.0esr-my.xpi 519448 BLAKE2B 
3ac0adf460518439627c2bb94325c40a328f548090105055b022bf6a5ff140e3de174ce21f31dc9bc3de6684be43292ae6af0b222fc05156c5ea55c0f87dfb1d
 SHA512 
4374efc78b9af35eff75f58ef78bda2c0dff79864362e242a0d3859c10a65d5356d564c6ce715c7ba7d0569b997736c72d7bc9e09b713816e297841bb13c0c1d
+DIST firefox-128.2.0esr-nb-NO.xpi 613393 BLAKE2B 
dbabf5089d6bb9256cc9cfe0bd13b819ed29385d96c2a5afbab4e937051ff64cdf243cc3d715e4eb8684e66c1799a1707e2eff4d300592999a5aff7c043072f5
 SHA512 
53b2d1f4d5f75ec611e2865f7a81a26d4a1e74ec852a9ff3680ce587463c90acd2392d113aaf4d5c7915bdd35d12b3c8535a87d97f5aa6aad18df84333053ab2
+DIST firefox-128.2.0esr-ne-NP.xpi 515342 BLAKE2B 
e7bcdf670c4d5f0c7722f282660fc304447e58048e110dcacca1fd955bc2bd71dbe136f55e99b8505404992ee7280c52798b6210d239617d0141e713c3c470a9
 SHA512 
e62e660caad1b3dd07396c97a29e207cc0864c6c4e08ffbebf55fccfa6bac419426aef9d4c278d72e6c4682ea85e6a8cf98294356ffd1a631426cc90572c4f01
+DIST firefox-128.2.0esr-nl.xpi 623990 BLAKE2B 
29c2b1c34365b39a1ae6a3f9528deb24fa8c6e7e514db12c52a3c7c87748c533f6909da30027b5451633c2bc5a3abeaef65a0aae4da4d33cd0fdd26ee5b3407d
 SHA512 
abc32055b91b806d0b26f58fbb3424c2fa7f3cb2fdb4c6fdbfe81b587dee39d9e69d546589e49ae058f806134f3b3c78975e673520615a7e5f4013e278085d5f
+DIST firefox-128.2.0esr-nn-NO.xpi 617333 BLAKE2B 
0b190cf732698d36648b23969b6253eb9af420f348a295b06464528dcedfdf479ee93e7b28f9142ca5004cecdf134ed1ad6d55a6e4f6db94901a517f3348751c
 SHA512 
79e4b38347afe93413a8e9125f248bc6a0ee07b33f772b624d4b75282cc48dff89027fcd90ce54da91ee414ac91de983dbb6a511b5cdbc5c8481e76131a75dc2
+DIST firefox-128.2.0esr-oc.xpi 613834 BLAKE2B 
6bfb9df2b1d3cf7814d790ea74822ec0ee3184bf6446da361352730e6bd842bd017ac291aa0ea8dc9ce18a7922f06e0adf7acd9200263049a25a2e3e16f57459
 SHA512 
55c7736eab5c2a87bd7f1f0466154ed1f4a6b50556f6d8d730070ec9bc9ca867fdf9bc301b87a8c3ecf3e918b9ee8e8d14cbd2c65943d3b3467b4f52a366ed14
+DIST firefox-128.2.0esr-pa-IN.xpi 697916 BLAKE2B 
99d73c908caa19e2e5c08710263efef7430685a7ce15b52470b7a05ec7113d4cf39085716f4e4decfcdffeabee5a555c44e753d72d56f7d62807e2ab71d8de43
 SHA512 
16d362b213424ea92846d2088cc05aacbe27e3fbdc825968b68add8e956e3edc25dbca67daad0aa6d6d63807648f766ed5ca488803eec71b8690b9c4432d4cbc
+DIST firefox-128.2.0esr-pl.xpi 639651 BLAKE2B 
da262755746f8011e90c583772ba3e871a741cfc0fc56e8bad8d3d3707813141d6c33dc6b3bec27d1543afe281cbaa2f1c21f1256514062623fe662e20e16bd3
 SHA512 
54069bb979c4b046bd5a3a1be37bb76a7c3646b242733f6644440f8c6c1691974304d2f724a3eee47f3edf37c6e7fc7daf9b0738d01dd55723e3651b0185d33e
+DIST firefox-128.2.0esr-pt-BR.xpi 628970 BLAKE2B 
676cd8b4a844ba42523f0ac50007d361796f36bdb81d0516145750ed8bda24928d58e04657164793547696e98101f9ee56c6b714d49ae1df26be49daa4b4d3a6
 SHA512 
530a16c982e1c24b2ad60898f8b2a09a4065a7b4fa18f481f4965bcec2824e3cb19c65b7a0ed2da215fe5cb9f6fd700be27b03bb6b3016077f7f4da6c7d408b9
+DIST firefox-128.2.0esr-pt-PT.xpi 629945 BLAKE2B 
4724719ce5cf59950112d559679f97d97c9150ac71beb826066af4da1cf82c9980942bb39cf1937602590109ce8db8d9b0bb3a8b401e237a0af15cc7d0499088
 SHA512 
b2ff671157019dc66a44ee52b7bf5daad6412b0295e6836c63e4b75dd32226275e71905c22e141fbb51f30913489d92ab212fb735c9c160abd736b07c7e90e70
+DIST firefox-128.2.0esr-rm.xpi 619532 BLAKE2B 
c8838ad295b07b859f52a977539c7a23bfb6fdd58d331dafc28a1cc8cc00f8ddebb0003d89515c5d6887c40360db393e3e36c836a87373466781907af9070fd5
 SHA512 
807ce9c606de457f5323ad48c37f4eac14a3f17ab103982449fbc3fb00f1680cb2fbbd6aa08a2ad9086771c17e8912cf58e87726c03d58ba841c59b09527c362
+DIST firefox-128.2.0esr-ro.xpi 550737 BLAKE2B 
ed6e51156ca30dafe4fff0e487095fd2f61328efa05ca5be566238617789db0c9e48b44664ab774ca7dab57d632468cc664fff21e23af60559108dfbd2aa9e34
 SHA512 
d11ac70543c25e05d75b8bbb060dc61d76b7b3db580c371c92bcfcf600ffa4d2314e61456989961f490c3a351b3e9bb0e8de97b85eb2b5c7d0acc91cf0f7472a
+DIST firefox-128.2.0esr-ru.xpi 728469 BLAKE2B 
e1a4ee5a5a3713775e02337ac2703614b212e08d2c18a1ef1f6657ca185f7eb54bb8072c8bb6863d4a60a23379fe48b400b51777521897f1cf8da24e326f6aab
 SHA512 
a0fd618808ea2618b7a9aa91a542b67a756142e7db998f72494470da6b7317fce117b997cfd88fe1754c0d98e30dbcd787f0d247e7b0c9c93d774b3c47711586
+DIST firefox-128.2.0esr-sc.xpi 588769 BLAKE2B 
af42a9beada81fb14968246c381f1e7265382087c33b890ed9e3e156592c281d5d531424864f8b6e954335050978bc6e8d05610397e8899ed5ba30d50f96537f
 SHA512 
df1236340a148a9e68d3de33dbab3c744d85a236402edb4f5d6173e7efccd18e15ea6506cfe660d5bb971676124057151f27ac6c68301f368446a491af7bed9b
+DIST firefox-128.2.0esr-sco.xpi 512222 BLAKE2B 
12479059be1a8a6e68495b741d9e47cfaa81fc681812d49c886add98a8509b7c82795627188c419f58d146fe528c56849ebdc560b108776d8df38e5507cf249b
 SHA512 
915cdc9e164d67afb4802a8f462e07a1b54bfa6d8c1ef8a176fa3dba6f5298cb56aa97ef1cd35bb3c7c96c4b3cfd8fbacdba6da72e329ccbbdcc464894c9862c
+DIST firefox-128.2.0esr-si.xpi 614271 BLAKE2B 
6683d541e613a6a1bb38c3851a506a7d1b488ff6e322a2f13d225726325acaad01a695dad930a45b28f7c8dd7491fc79bbfe229e28cd8907312381747e60ea8f
 SHA512 
2ab355b69cdecf7477345c6ca66007ccc5d0ed8cd3b1ec4c50e781a9e373a27d92772c5cbdb61254efef0598922f42ea52ae4197143ee3a284daf39b791d2bbd
+DIST firefox-128.2.0esr-sk.xpi 659877 BLAKE2B 
6e645f0ced95c99ee23bab4330d3c2b0aeea689b16b8c74afddf2efc2544f24e313be7312ba959fb8e830ea17645b95dfce69fbaac8dc7b269733443bf622613
 SHA512 
357bdb4751c53f5e35de22f11fd36c50775e1d59736000568148f27dcbe1ec33c48f640b726c9b02a79d2f5268736034be9f89c20a5067c55a531249e63927b3
+DIST firefox-128.2.0esr-skr.xpi 712006 BLAKE2B 
38178aef30a77647f3821a2e84b59c0b9ee5a47e7c904fc84b2545fd748f5e51bbc67925bac9b1c72798ec5c58eb39693214b4d76d1a85f6acec65503b5084d6
 SHA512 
c0bd866771b7d6e8959b641b3279706ecbe10b542fe26c5d864bbece17eb0f528e282d0ae89c2e076955e2afa13f92985d2a4782ac33abe789778d3f8c8e1e75
+DIST firefox-128.2.0esr-sl.xpi 620258 BLAKE2B 
8c6e6ab087c3e48f4e0ea90c811c3e75f2c6e10f3dc45b57308d26360b82ce885e98be7d4da12e686a60cbf09fdce9e7b78dc0d4834d9f197a87a398f474dfaa
 SHA512 
857fdbce80f9efaa419e87203f4346d470453a5f68cca18e0437bdbc0e7458f14e1e95cb2b5e0f5320232a1fac0b3a903a6d584790abbca9787605a83f131863
+DIST firefox-128.2.0esr-son.xpi 417219 BLAKE2B 
e499f08a154ecff0963adadf6e8e3cb07c8fb3e76fdcf7594b843cb8192165d9bca8607925d13eb1fbc92633baaa6d7892d9717210206262ebb63d1d1d5af0c9
 SHA512 
ab5f1dbdfdf61b4b49a9523ad417523acc6ef045c104f4af9ab3affa322a0cccda9dee469dc75cd648c796e51e697c2c11cc2300b310a283992bc2221be23d07
+DIST firefox-128.2.0esr-sq.xpi 638610 BLAKE2B 
7dd2fee860126ad961ab83649c6993c7433be1b7d2a90c99537908aa168bbe0b0483ed21e4d9d6accf182ae39372358da987f8804acf6cbdf60cce82456f9976
 SHA512 
e60570a45ca423262c40a34a0d7ed2e3a8494ba7ca87d7e7db7749323372af165d86e518c95972c1e632678fd21e656bd0ce9565a50d70e4c2cf221d262ebd1d
+DIST firefox-128.2.0esr-sr.xpi 640303 BLAKE2B 
c7e1b321433e77e75e2ab20df6a8d93fb40ad441e3b023cb34eb16d3e4bbb68a1770ab32626b75d5a8734c9297fa09dee4b02ed49f5ae72f79ffeb49547f3c5b
 SHA512 
10b9e0960503b51d25ca4482bc30b286987c4cad608686d2575042057e881641ebe3961ef4b67057728ac25e1a8e8e3676c7997e47bd9e539c924786c2680d5e
+DIST firefox-128.2.0esr-sv-SE.xpi 625704 BLAKE2B 
d39240d2b595c4f1a07d79782c04f8d3a8959527554ce80deef87f0da6a99775e17fc84d9d4020fe597f47c281b08a0622b780d6914959ffd2e5a3398d845a9b
 SHA512 
0b2ba39bd696213a32866bae50b51522fedb8b1159914b0c67e92894abd16192f71937fa84ec9b21e520d099e09dce6c9b165d7725cd45f364d99a3296d6c199
+DIST firefox-128.2.0esr-szl.xpi 527336 BLAKE2B 
54dfb34d1eeeea2be05326b88d576a309759ab6915fb8e4978d60542d5a7c54b37336d5a4cf14840a4c0ec14a5ac9d1aab799d4878a0b5e96aae7f6edcea3b01
 SHA512 
5613ee2d332cd235964d949a7111505374d8c3bb9262e5ce3a9f499db383700e86b33410ed1647adeaf1c63a14aba30fc5b3414a7dda6e4a9c06a2ca2e59bae6
+DIST firefox-128.2.0esr-ta.xpi 508338 BLAKE2B 
e6157c1b8804d9f4a3df96da1bf5875feea25e2c1f0a9a4ffb9001de9e315cafdc48d46c92737015ace07429b585c07b075c10fedf53c6cd053bc516e481d007
 SHA512 
3e33c7be34a9e731362588a9a6577ccef65b9e6b8da0f5cbf91cdd6246d1e69e7c894d850e46c03cebbab3b150c20def6ae7c8e67f7dd88dd20acaafa2768daf
+DIST firefox-128.2.0esr-te.xpi 561989 BLAKE2B 
e71094282dc51e0e22d6a30f752efd977891cde9bd20bddb6ee806ca819486d18f73972414e431f1431a3a3fc6a3ba24048b73f06e1e803c783a4c7cadae403f
 SHA512 
7871051b85ef4603f0b70c3eeed0554d14dcaf58bb68a9532a160fcc5edb6f4ee72f551b9dd3cb6edc430e140a3aff0eeef212dfd33a6d04dc59fa49e2e5790e
+DIST firefox-128.2.0esr-th.xpi 699560 BLAKE2B 
262f81f2a972f23de74987c6c4f7f1abb3bb0a58ad2ac9d58bd8f4faf7cf21a80d984ca6f55bfa6e28537aa1ff0852b30680ca7675debada05885ded6ec8fcdb
 SHA512 
55d43defdc19081862de57d85a58ac0c600ff3d4ca2a8e2b65a1ff62edc2ce888f275aab962860749cb80ff7f3e3afd177779fa3c7eb82187925e7b6e712b8e5
+DIST firefox-128.2.0esr-tl.xpi 535125 BLAKE2B 
402f624b100eb0a9217ca568fb39cf8e4925fbbc6fe5c73ca187010bfc33371646c9eab140a32e7c5b77a3765dab6c285e400d57059e0deefd5a721c616c156b
 SHA512 
e0b27a950526c12aee235a597353ba4359bdaecf65d1eac070465535edf55cc507a0e20aa2fdd12d41182d22f9547da239fcc6ab72228dc07ccc09dc8d7cd947
+DIST firefox-128.2.0esr-tr.xpi 639354 BLAKE2B 
ce3895f42612848dd8502d7bc26e6cda7ed6af5acf56154bc81622a0fb43e261064a609c5d3d369d25f7b4286fc9dfbfab5899ea28beb56594a37fe73179f21b
 SHA512 
abd8b5b45d381dfac8465dec6d03ae7d329cdc77189ff501d80239962d8bb700f16bec0af102211d35f93c59464e94cdcdf1e2ac0d9c49e346ec00e26ad18063
+DIST firefox-128.2.0esr-trs.xpi 505308 BLAKE2B 
43ebb6d081e01f2f19ea93326f12e55d09bf7051dc44c174b341b886784d36a491725daead5e686c765d5bf88bb4e1caa8f7ae46a5c5db828ad33aa5bd6e9e29
 SHA512 
27498d147e8a8210f356a7a4bec13b9ac56f8401680cb4b202d680e24a441840595ce6449d383854adb47ec86fc54291d5781229149715a4d9b7dc122d76ed9e
+DIST firefox-128.2.0esr-uk.xpi 708236 BLAKE2B 
6eb7793590b30a7f8fb87646bf5d360b8b2db194a823cbdfc4ba5264076966c21660d175832cacf9546d0e25c9b1f6cacd96306a67ba62736e2bf918fc6119d0
 SHA512 
7f84aece3bc051a4bc8f1d110adbfa6140e84bcd073067f2bfcf28b131312bcac481d2399b9b530addad61e5d74e4b53d71006019fcafa2fa168396b5228e93c
+DIST firefox-128.2.0esr-ur.xpi 561298 BLAKE2B 
a7e5e158f05b2d054a31bbe04a2612d30b0819c6df168730e4d9a583612c83f23954d0606a09085950187761d2731543da18d83f9ac6e72ff7ad1ecc07898fdb
 SHA512 
fe1db13e4cd8fa3c0b8133aa2fbdb3e7d9fd7cbf1263f8bd11cc107f813e9c1f2a8fffa6fcb90ae54222c56aeee71d54498e4e589408d2c6c05a95f215af7087
+DIST firefox-128.2.0esr-uz.xpi 479731 BLAKE2B 
3ff018d97d47b43dd94922ecac370fb3b35fa0ee65a7c03e80454b1c9aeb696278f180cca64c0afdb46919b143766ea76407b68e27ff9107ff9e724c85f52f7f
 SHA512 
d1c7d7dffbad956f23caa746959ea08161513470bd89cbb51e443530a6af3180c5eda8cc8b3cf92c5ea019bafec244d47977e1f68bd314e2e874189464179e56
+DIST firefox-128.2.0esr-vi.xpi 662722 BLAKE2B 
3d807f971885139a5ceda0e1e4892418ef5c11ea6b9f858033bb22f691ce954afd89d871bd9ece4cbbda02ebf9af94720478e8a906b369c1d2ab11b4e074ece7
 SHA512 
4c0a4ec3c212b5037177569fa73313f6cb6252a033c42a3be087acd4859da655f48b33af67543150a0d316ceba52996212704b5614da2d7f9a215af5b369f628
+DIST firefox-128.2.0esr-xh.xpi 418005 BLAKE2B 
64fd099e72391d0b761d0b932d6a64fcfa08c422999867fb74f09e154c267d9fb773d4a30fbe9344bd67d76b6ffe478b3800e2bad226681b9611acb8bf9b0ebe
 SHA512 
826a3cfacde3c34c1226d4827173989f4f53a0cd01988c155b7b31898c6e2d598a03fd20dda627e20f06dab429612d8aafa3e3313241ddda8dad9f948546986e
+DIST firefox-128.2.0esr-zh-CN.xpi 662335 BLAKE2B 
703cd2d34bf9f71d3bf10029130e3fa0676eeab6477a5bb877d22dbe252f8026d25439303adf109d41ba2ba7fcd0a5096eb343387d29cee4a38a3dc657b71ed5
 SHA512 
0d1fec76fbb07eb737dc8a606defec8c28a016bbebbe87815cc922977c89ea950d3f0cd187215c6e319b1f028fab97e19ee8d00e0cd743f7d90775a99e457b65
+DIST firefox-128.2.0esr-zh-TW.xpi 666623 BLAKE2B 
de33858cff0cb04c6eb4decb4a801eca99223f9d4021ecc8ad1da526f5aab5f9acde107ce2844a7b235303639607d24b9c1804e1fcf25171d33fcad778b47ea9
 SHA512 
136074ee7581588ced7d8c2d596dcf92d9b2cbd0312fbead9f3fefaa9d28a294e2c048b1ec0e472b4224f3b17e1176ab1e99d677319c1f9c941665ca2e4219c2
+DIST firefox-128.2.0esr.source.tar.xz 560831528 BLAKE2B 
b22cf139e2bd5a18dd0a18d1f1a323f1cd4ef0773ac55165318f35e40f2f248ceb11938f40cbc82284f276fe7afc4e214193e48d48dd7498ea29b09b4ab17cc3
 SHA512 
9a689929f6f86d795ea2c0318bb78f77f72a552f40715a1108dbd6361b0dedc3aaf049f1883424012459899607067d5a8374d895564591ec6679a1ce80708d7d
 DIST firefox-128esr-patches-02.tar.xz 20052 BLAKE2B 
1c5646e6111d400c4f85910380c407c0000efddd9f9dfc228b042bbbb38755d4a2003f5fe9717a13ec53693cd6fdb1cbf9822649e8726f165a9e3d101a8b213f
 SHA512 
ab0e7ad443d0b5d0a44867c9a732681df3bf28b30a2e14dc7d2eb43859483f452723b614ff6e8f52666be3840d88104aa2c82616628210215e1765b60beb3ea2
+DIST firefox-128esr-patches-03.tar.xz 14156 BLAKE2B 
9a618f0ddb8596b740893dc9113f374d193a00e4e8e76dbb2794928ceaafc7b5309cb6f69f6287ae1e423f0be0a060580b0d9d59307c9889362dd17fb7d31d3d
 SHA512 
c6ec7233b368fac623ec0cce6f5c37d358a0fa5bb2154dc67eebb50968376ca9d46f3a734f5d79a4aa4edde9e300a9c65315d0e499aa6a1325b6c76a6c164258
 DIST firefox-129-patches-02.tar.xz 20272 BLAKE2B 
d7dcb68365ba8e065430c9ba782c98f1b39ff4210a048703fe6434fe2baeaf25e0db71768dfcfcdf530fe02eb8f5d7d5804d1d66c75386642ecf700ff28da2ab
 SHA512 
81659f6960768dadcfd50994aa91f6794b3e9cdc371b16ad8e01a0f2d4da6cfb17864c0ea0cfbf1ae593a67a9c95e239553632f2f4e66419db46e7f5337b483b
 DIST firefox-129.0.2-ach.xpi 466199 BLAKE2B 
102d1397136e012f3f4d9c1d2907828bd4b3e1f8da78c36ccd222ae39e2ce0000765a163d30c5f226c3bd823b9f10f72481080455d3b6ffd651eb1580ac88ca6
 SHA512 
261c59e806ca018794e6cf84bfea0df49985a8bb09b3c78c6c2be29ae8e65d835813e364741b4b636c8ce1c8554fd03c3c23f648e40415298190697559014dba
 DIST firefox-129.0.2-af.xpi 419649 BLAKE2B 
d73fae55bfd931f7959161e479c4dfcc6bc6a16e8e331d36ae5d2fde87f86a5dc95e56f4bb09406e947da43a76d1845b69f1279b1fd11b61ff1db980c079801c
 SHA512 
29347cbe60a2b6c4e1740ba33fabd0f850aec3951313039a382349e36b701b8dbe41964479068f24bfa838542dcfb4c0f6486e0dbc5e4b46f634df299461e993

diff --git a/www-client/firefox/firefox-128.2.0.ebuild 
b/www-client/firefox/firefox-128.2.0.ebuild
new file mode 100644
index 000000000000..a6327fea1b9c
--- /dev/null
+++ b/www-client/firefox/firefox-128.2.0.ebuild
@@ -0,0 +1,1354 @@
+# 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"
+
+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
+
+       # 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
+
+       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 search-provider file."
+
+       # 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
+}

Reply via email to