commit:     3f89ad1f97966c854814fee8b4ba0e5c5065776f
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  2 05:54:24 2023 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Wed Aug  2 05:55:36 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3f89ad1f

www-client/firefox: add 115.1.0

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

 www-client/firefox/Manifest               |  101 +++
 www-client/firefox/firefox-115.1.0.ebuild | 1405 +++++++++++++++++++++++++++++
 2 files changed, 1506 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 4e217ace6092..cc40eeb4776d 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -396,7 +396,108 @@ DIST firefox-115.0.3esr-xh.xpi 429450 BLAKE2B 
a2b41baaa105733e967e7a5bb7871b2f4b
 DIST firefox-115.0.3esr-zh-CN.xpi 629739 BLAKE2B 
63d3288bea594bb11de329bad78264a1998a302f1d887cc74542fb4e7503f088e42970f70a92f80f6b1f037381561f11a55c79f2a0c0ce980effbef700c06944
 SHA512 
cbc2e7e1d7f4a18fbc3086f4a608913bbd279baa54bda989c2979ee38847abc69796fcdc05dde3e4271d511fea6cf4d33be22defe7c1dd11106abc64a7d969f9
 DIST firefox-115.0.3esr-zh-TW.xpi 631502 BLAKE2B 
5254f9fb70542ea0c9855aa1fcf3b2ce82c892754cafc960b414897e67c8bfb6b13391bd7695060de8d014a52c55e9e54e8d84a124e98449f1106c13e297605e
 SHA512 
2ea8c0c53df5d8510d0c394a033b071939d35af13420cdb3ff77d1979f05ceb3236a8fd0e6f4e8000a21617e48e71c56fbff212d193d075984df61f300618a40
 DIST firefox-115.0.3esr.source.tar.xz 516725896 BLAKE2B 
cb45ee759fe119f5764981b1214ca53d46076081bdf96735ba34cef963d72fb80b1f46fd6958904385ceab01d62925cbd4d133f8b5e4bee7cd283676a7671c2c
 SHA512 
416ee56bd4a602c543391faaa8de31808f267ef2167f7d913195de45d3628de08d0582dbaa8905c847e1431bccd9d1d5d73ad9e7e5ea75be39e4d908a8b40376
+DIST firefox-115.1.0esr-ach.xpi 441056 BLAKE2B 
f176828d4ef36d0456114b60e30148fc7d4df3d8649efc97e0de5f197c9bede30f8b57ac5b070fb527e1f8459874743e67ab73859703dc6d50425eb982fe1fd4
 SHA512 
d957b39927cc889461a87b859005682070e6e5e6a7047b011b7c341e24ff531168acec4dc26a5e49002d62fdadda78f53db81355f4c0e759ea1a17964c57706d
+DIST firefox-115.1.0esr-af.xpi 402457 BLAKE2B 
3ce8f5b3d09fa1740732fe0d96ad3b1b4e28eaaf8c78862df8f29db7da8d4b11446c14d5894286912660437de5513d1be040d47d0f5315095e3ddd50c5d5726a
 SHA512 
46d531289436d823b67cb3cfb5e60702b56edb15a68dcb7877731fe3d1cfd2bd8ffcc5149831c8319d22db8221bbb34e1fabe0c5ed96e809cdb73a2644f9aa24
+DIST firefox-115.1.0esr-an.xpi 482929 BLAKE2B 
f7c4f9b73072d8256da2dd32254592947a923b9486784bf4b2953b4ba2f2aeec7e7bbd091f8f80879152f02404d0f19b0d05e35af11cc4ff121d43838b63e9b8
 SHA512 
47c0c7621ebbaa601a0858b6ccbe1eacb6e321ca43122d3caef69a2d73f891d4adbe776c9b34b6e95ecb17e53ab6be1974448ad649f665d24c768f51741ee0c2
+DIST firefox-115.1.0esr-ar.xpi 549546 BLAKE2B 
b89e4b02392c3654951a3f481bcfea2d122e4128e930e4e92722106f135ac4eb72af769d1505256b2c70a54f205be17b4b9b4f710ac639ccafb1b7ae872081c1
 SHA512 
a576af0ada09e829f4ba0884498bc68cc9bad105ab4bfd1f29163c6c05f883310bf5172ecc4e22ee127d007dd53b27adc05a5c70f386d95190e02c792943297a
+DIST firefox-115.1.0esr-ast.xpi 477352 BLAKE2B 
6f325e769447a438927a36447d0e13222b0bda3d8a2dfd11cbd3bcb16917851ae24555016885a9e9cc9e67700c323da985442071b9fc98fc5bed0a695a4920d4
 SHA512 
35053f787b49757ccc4abbc3db923c71981f8a2e2ba7033f55b3ad54431b160fca669b6462ac7323696ed460697a6210cb1a4a028f0b1da24abca8c9853c21a7
+DIST firefox-115.1.0esr-az.xpi 470734 BLAKE2B 
d021f9051b0d385d633f9c98c098b18f56cb50474a5669a2794d1fa4b2ae6a738a11cb374a39d9bf1ff4a1d5df18b18585af64af08c1965e82fac5af5b1b68d0
 SHA512 
bd91f4c271ca5fa07d080115edd29f7bc14f562579be1def80f3fba70b6a944a9d5f42e4103564191b8ca12cebe64aaa89965955dc2d6e25774cd137c1e5fc99
+DIST firefox-115.1.0esr-be.xpi 647098 BLAKE2B 
a3161a3d3d16ac42ed5a84ade7a12739dcec921f9958cad6c6543e8cc0e907f72514d83cd576de7f056f12ac52cdfdaa58c7f3ae92de3076c8d7b458f1908439
 SHA512 
3978515f162185dc5a304f6b3cf0c870b93b44e7f958bb5606dba972dfaffc921d508bec8cfe109f54424fd15668db922542a5340196e05f8089c2120afb2ebf
+DIST firefox-115.1.0esr-bg.xpi 564166 BLAKE2B 
5a2ca7c6b6a70a60cb38f3690e1f32ad984d774ae847d783f4834bc77f0d394fe3ad7acbfc6b8a77c1705d5c6d6722023ac2cb3215923d84bbce4ddaf9d351b0
 SHA512 
e78a47a0b4ca3faad81e8fc2c21e17e82514833f07360e5d0b483c0241502ce03ba0483e369f11e0a5e05cc78edccd9e106a7f08e750d4ac9142ad00fb7e030f
+DIST firefox-115.1.0esr-bn.xpi 558442 BLAKE2B 
dac6188bd290dccb2d2f1925d3e241806d1a60f1a31b3f6edc50292a6dfee9884d4e5e050950eb9c380e2a58b4c04e62800c558e323e979f41e715dc7537875d
 SHA512 
6923a62dae7caa79a3b02ba63fc9a038ca01f270882f65da08aabb1706a406a8ad74d0140dd7dcbd3d6009d8ef2b275f8510d888c2590e8a48c1f3f849bc6219
+DIST firefox-115.1.0esr-br.xpi 534380 BLAKE2B 
765e8d219cbb63118f8bde4310c314046d0b28e926153f72ae9da43554e192e0112c6629a21544f17235dec2d3a3b23af35d5a53098a5bae297497f5c6f4b620
 SHA512 
de9cb0244592756a728824d9bc23ca8c9e13cc0b34848cad4ee589c0f68bdf787d3d56e3deb411891c664b4eb2f3c31e2e391a4360919ac6cfdc19a8162fca7d
+DIST firefox-115.1.0esr-bs.xpi 441262 BLAKE2B 
2a29e9ac392eaa8fc07adc2874dcf7fc7160a20cffa744aa0902a7452fedf523c6c587c5c489fda9be25920442ce95a7ab494c7af20520a4d7d9cb2e73d663dc
 SHA512 
403da0ba5d7a2c6003117eb3432cd3eb282c1e99a45f9d6154668cdad1cb791c297266c9b446d16ca30b5569d328a1e54feffb71b6049638c640ce9cf9987b81
+DIST firefox-115.1.0esr-ca-valencia.xpi 521959 BLAKE2B 
3ac6d2eb1b814c941e288550600ce35b6172cf3b8834d9da9019ba5b5013d355681ee3be566f026772219558c58c66330348b7b482d7903ed0b583f526601d22
 SHA512 
af5e87974b649544028f34487e96f1eec79247b79372e8c7afaf6c71a0f5df996389f2953d12dca5ca6f8b5316516377ea232ecc286106ef31487ab8f16f7506
+DIST firefox-115.1.0esr-ca.xpi 545473 BLAKE2B 
f8e01c177b6155b7576590291193fa63d6f986f15e2c81a9b58ad7e031e8ae4a2645019ccae47ff5d0e277f49d4cc866da111875caa3338717c1243f373169ec
 SHA512 
a429e3a8edb5dca07a37746775078faada6c54ae8f42744d673e35dc4420185502f1f8fc2d10b638de217d8529794e7afb6e6181df414a7819dbc24a782d23c1
+DIST firefox-115.1.0esr-cak.xpi 564584 BLAKE2B 
73b4baad79245758b0e83d567b331c9bcff1160d96edfc48a7d29c66932584429bf8b8c7022010bcdc48149e1903565ff47a0edd43ea683f012b93cda302b905
 SHA512 
916700859c294663a8d53b80cc84d8ae3732268a0d41d992eb06cf91fcd497cae5f9358af4365124459407c2885c10e2810a9c73ac74f4760be29fc7a1acce97
+DIST firefox-115.1.0esr-cs.xpi 592259 BLAKE2B 
45067d3e26980cc7351ef9529ce0ddc2ca39ee7497a37a81d001aa944943d5eb95d20afc82be661504e1d2ed4593a675eba6fe568adb6e8869fb840cb75b6d99
 SHA512 
3c8f154568a40c49a5f83cd5bec8720373cb506d2121f467c272e82d05969439ec8a7c51f1ba32275a6448a6a45e8048de7d543556185d65bee00ebd8e5a34d0
+DIST firefox-115.1.0esr-cy.xpi 564685 BLAKE2B 
0133e4aad815e2c3fe447a0e3c520b35fffabd0cb7686f8a5d10acd9122fd20286df76e290ed1bd195415f01533100cc5b58adf7a30ec557a19faced121786cf
 SHA512 
e15799fd2a78da1867e023670c279307534334159f31ddc55131060db7f6b8c6317920b6161c93292d55710faada5c86692af02515f682e6f7f58b72a97e619b
+DIST firefox-115.1.0esr-da.xpi 554011 BLAKE2B 
ccdc182a3120f7f0b9d52c68b7ccc8edeaec394d21c064323b5bb264ef552b843b2912545b523452c93daee997462f3c56c83afbfd347402639bd36b923161b7
 SHA512 
42b77fa346df50fef41325ded30ebacf7e9a42cdaa4e230d5cce8175c1c3af442e22d57ccda16a06a9305087f3ed2a863eadbada8f7561592ede763381115f37
+DIST firefox-115.1.0esr-de.xpi 574622 BLAKE2B 
8d34f3732209ebee773298ad08f83eb6331c7a979435579155d65da99e4d24291d2dcd6206667abdfdb970ca764d9c6e5e78a198c03b1d508e42b94f7d423fb4
 SHA512 
b9fe7bffe0962fbd73c06cb73f18721e7269186d8e4e66305dc4eac51e7d467e2801f789171f0d855a6e9e92851c8d628cf961f7f83db5b04e9270542d37a337
+DIST firefox-115.1.0esr-dsb.xpi 589321 BLAKE2B 
5e8997589f2efe2ab8c73e167da5482e602f867bdaf233b39acd09c89757390af9caf37df845303340142f1364130474c25ae6ce03209e2195b3c183a513f453
 SHA512 
bd19b38c07cafce2856a4caa774dbbe3c49ac759a9ce7fd9be354b5d7293e7d0607290ea541029189083bb74ff59c4746bd53cc737f782651c4ad2c6600d5562
+DIST firefox-115.1.0esr-el.xpi 663756 BLAKE2B 
8d0dfe4004184eaa024a17677d02d243abea34e48909d7d323e56223f9285d32016f73265379735529141e635b9ac67b4accaf36c11dab511663406ac33cfa01
 SHA512 
5230b4f0c54a11a6c310ec698e24d62b3f27714a03a13c3f85d0c868bb3902bb9cf4ad54153fe3014371df536bd1babd1e410222db93fa216fa7793cfcd744d2
+DIST firefox-115.1.0esr-en-CA.xpi 519407 BLAKE2B 
a36e553d68d451453f99acf083f445b9e2e40b7e7e0e3db5a4ee67c8b794dd5d2f34384624af67d154ee4b77c577abf0b5dec79e0f99eb5199d9912d2ffa2ce0
 SHA512 
41af7061fbd60fab20a5e4e14be9b5427be6f9089fcb71359e441dcc07e401a16e67f86915a2fcb89d26ac36984ebceb5cb8f14326e1604f8d2ac192c09b3fad
+DIST firefox-115.1.0esr-en-GB.xpi 531041 BLAKE2B 
d1654ad7b4e22ef0644a9e553c9dd0674d9ec187e82debffb8303a3d13ff70fcb0e18892f702545e7d400538652efa9f1ec40bf0a6a062bed0f2ba51b8fb6449
 SHA512 
f48ddf13692a219bfdff6184e756f25c31ad0a1082e4c7c8211bb4b7c581f9684ecd9a3401f6d083e8bdc5bec51f5edd1de8b804e11ef054b6abf314d3201050
+DIST firefox-115.1.0esr-eo.xpi 556390 BLAKE2B 
b1b76c14256d1e4d97f919e88bc56da183621fb83e4dee3f3f9cd427b4f50a5a11610b8a4a32e61ecbd094adad251f96ec13f2d0358c41709bbec8786e0949b0
 SHA512 
46937f3a75cf37abe2bf1f32acc811332a6fde9819b7a409401302ed9b7971b094fbcd6b5d54f282c2ca5d5e97690b8a38e4a2a3635147f8e1622dd970174f12
+DIST firefox-115.1.0esr-es-AR.xpi 568950 BLAKE2B 
9802c4c689b3ade6ee4ec0bb020bcd1c4e07317034ce644b0a445a500a1501390ea6062b78a9884f2bc95ac335c1b13c2570847551021337127a20b9e7824a93
 SHA512 
0c70239a51d0530624b5b27e563761fee04d547890112e82a174248ba1e2b5e83d92d564dfb80388388dfa98d675fcc727d415e9e3168c1cde472f439a29e4ee
+DIST firefox-115.1.0esr-es-CL.xpi 568608 BLAKE2B 
19662cba5ebc73095a340195299e6946cca13288dcf9b2f01ce3222654010eae6d58a27c0c77c5e43b8c150ddf6a138fe073a334f011ed9239ba315426ea9ca8
 SHA512 
84fb266283f9d11f19b36036997fb5b3215e56d31022bf7c5caae1e9f16eb07cd531e5d65b812b6f331f821c347603ec0d976f7590c6025ab9d79e670cb36ae7
+DIST firefox-115.1.0esr-es-ES.xpi 562039 BLAKE2B 
a9c329d57e15aa0ff2270608c834ba1ea9cd85c5771f84b02688f2254909ea8a523babf7cc58aa884aa98ef715d3766c50f8b2e53b6c657a8f0399a67d7b38a4
 SHA512 
1147fe42d9768db621e497f0242a53179995e28db21c49a4b8b9b1572ce08278dbbe0cded6f5e029418225b764e306612d6751a84f839fd3de1a0c7f7c0b6016
+DIST firefox-115.1.0esr-es-MX.xpi 565313 BLAKE2B 
e54f46e863533a3330f311db68f6764885e2313fee795d610030ec7c0a19c13c091d04068a3d98d5e4585e2f0a9c5605f8af8598454f523ffe277e54b998fd76
 SHA512 
4b2df486342c329ff49296398151c6b33632444044ddd8fcc3b15c3ddd95e67c792761d8b15bd89e5b51bdb9f0038bae55e7e317c3f2a7d3adc7205e7d4a76c3
+DIST firefox-115.1.0esr-et.xpi 516127 BLAKE2B 
dc6b2223277d5bcaba85482ed92cbeb822900f96319045d9fe624ef41ee32954916768a57178306b8f57c576b1511c42d9aa215ad767498875e95dc1819bf584
 SHA512 
eaede75ce8c8dda3d89b049f9c7625d6b20fa935b630cb7d7260fd95535ca6f0f6534e1c5fe8e113813030a160cbfaeeff3adfc8ed0462f86b73c2a4b605a454
+DIST firefox-115.1.0esr-eu.xpi 551618 BLAKE2B 
cca01f24c3aac2c0e97dfa51b6c5b2a4e3689794ca97aecfbd0fc8fb415bf9a5dd2d83f2179933638c135a13dea0b3bb6e2f7d588d2bbdaf2e7abce3448d9e3f
 SHA512 
9959520a2314dbe25feabb1c7d8920be468efe1c3d16cb5e13b7aae5da4cba470a00c61f59a646f34cce67fb008169f6e15bcfb5a70faca7b4413cc7d5c6169e
+DIST firefox-115.1.0esr-fa.xpi 564537 BLAKE2B 
a4202e798518d18674268d5a8abb00d22fdcf2242c0d9b60056813f44525ca2be4ed516b68a8681fc503ca626f3bc0c750b1100dede66745c5553f5121388991
 SHA512 
6c7440f5aa36d1e4cc44c22cafe83a1ce278bf7ecefdc157e98c7737079aa3319504da25eb15ee70f79d2b8ede3c0ccd83c3839312936e8e1b0fb846efdf0fa3
+DIST firefox-115.1.0esr-ff.xpi 457104 BLAKE2B 
180a68f40e49d6abbfa41df72d7e99d797f605cb2a933525b5955d4cbaac76b2bb9d22bb7f4c265213ea6953f8ac0aa7dd63df6f3e8a50519a97bb4b5ebae25a
 SHA512 
7a1f418b18b53d4bf98729f9347f25526c63783b99fab6731d11aaf6836e43d9488a508d0985384c917669723e22300ae43817f746e2dfa3e918f4696e65dae9
+DIST firefox-115.1.0esr-fi.xpi 551245 BLAKE2B 
7965cc833f8fd8a7cc0489fd7abe4c47fab859dcc0aee5df548d5246b4c4cb43df74007a88120aa7c1190972dc9025d99a4cadd60aab7f98f1b1af08552790ce
 SHA512 
9424fdc0f7398db920a436723ffcf67de70df32ddb9b96f9ac3422f5c6603ade409a4f70426a97378cafc36fef826db363b3630789c6fba458077a46d8286e8f
+DIST firefox-115.1.0esr-fr.xpi 580602 BLAKE2B 
fa85e76410abb2c2bac77efb2c9db53c0764b8cb4a83eaba4b946bfe4f4898feaf3922623a7d75c8c179c453f45d24f42a8c0fcf1b4283424792d2fb9c3f5da0
 SHA512 
255d3a9f689224dcc94b3268d7284898d774dfe69bce44fdc32cdfba70ffcc44728b873c1ea3558e994e9f79acd9de7b956a6e74cf5df883d5e20034ad504323
+DIST firefox-115.1.0esr-fur.xpi 573079 BLAKE2B 
eaa2ca04464ac1a293df368c42e259293b1cf8e0e453bcb7a8f4160ec742a37f0ea8816bda973c106001452ade3d7a88ff47eee698ab768702cdda4dfa0320ee
 SHA512 
fab2e0da891ba1ad26674301466728b02f45cc59fe203ccf0245f3fcd47384b7300f7171b65de33c0aa42e610a18251d5f00cea90de4b811abc26b4e4290df30
+DIST firefox-115.1.0esr-fy-NL.xpi 564936 BLAKE2B 
9265df53fb6d52afb9b98d59fd8350f2d6dd489b4cf988d3b8537e97e53b5f59be7760d21c6cff1a79bfb6e5994dda793210696f985b82320a68f8b168969a6d
 SHA512 
677aeedc40a4ca0e2dabb0e6237807734a8525044289a67cab6c075eb9e9586497ae438cb8ce0884cadad3367fd256d289c4c78be0317a1ffa91472370ea3484
+DIST firefox-115.1.0esr-ga-IE.xpi 454325 BLAKE2B 
563c5d33f80917ad7db80ef7abfbaa9efd054b2c99c0ce46a247163e9075046bf4856308c9327fd1db6aaff4f71e5641a552072dee5dcd967e76f163db148920
 SHA512 
b00b4d2f52e8639e30c443cbdd779df34821447978895918ee448f3c5517bb997fffb96269bfd01df7ff25d7b8e913ab15e795668659f3e73eb0b5c9a8654159
+DIST firefox-115.1.0esr-gd.xpi 566957 BLAKE2B 
dfaac667e386f44420b52be4aa1ac8e0f97a3b2191a4165bd09326a79e89fc8ed4b3bff2f0bfcf37a91ac532d9ec4a8b3aeaeb8bfcc79b0b8ee3afbe8e347770
 SHA512 
32422c21914821ede82845a0902ab0c6b4f60f41fea9c98285c961b519ee6a00747d63ad81b8a369fdff2f4315dc02bc2e898267e6f883a096d390951ec85dbe
+DIST firefox-115.1.0esr-gl.xpi 565469 BLAKE2B 
cd68ff15222cf0a480a7a0715581b52df39952d493c0f1ba9a6408891f16e172f01d77cf8051fa766330dd31f17e5397129ed100c1ca3e62a94b24f297b9960f
 SHA512 
e59829cdf189778e754ebd774ab0513fdee65daf50ae760e4aa107598aed36c44e98cdaa2c1e0023a13c56c4118012a1390762ca82a6fdb8a151560365257775
+DIST firefox-115.1.0esr-gn.xpi 577575 BLAKE2B 
05a4321a09b4673a2fd2cebbab785b5a55cf02c96bd5e3d9a5469fc2f3cad3e572da327909b158d9e652f92f930f9ae9ed8053114472dbc4f5aa0cded5068507
 SHA512 
1c988af15071f599e7e42b2438045a041ea6a3dcfe5894c02f4129d79017c3b68fbe1d5d2f8976612a284cc145b8f6c84e5b82b8c749f7c1287024c2a5c904da
+DIST firefox-115.1.0esr-gu-IN.xpi 506679 BLAKE2B 
adfdb505ee51998aff564697f91475444057c1f5e19a1accdb7b03b01f6dbfd9d532dec4f95634ebac48470246d90b2a2581320cd5f0af22cf9d7b1e12f4c847
 SHA512 
cfe1f4e693780d99a101204d05e7276615ffd9b604f1b361196e5d961072c7313b2735500c6df843bd465d702b60f6c5ad3e5b781ff7b34ad4d95f22c3326eef
+DIST firefox-115.1.0esr-he.xpi 574391 BLAKE2B 
08251797a668b66d655e7369c3c43a8d5696a12d736cee811cc94b9a4fcd104b7a1c3903cde51b39b74cca7be4038bbfe49e05efc1e1e205450089e45987475c
 SHA512 
d93aee11f8cfae38488800bad95b7e556d4bbc007e9f0826ced9f72639e43895316abaf99420725e9574b5e022b33d54414822a3807f20db30efd421b0472fc1
+DIST firefox-115.1.0esr-hi-IN.xpi 538815 BLAKE2B 
760a15dda851421ef0035099eaf711c69f5a34dacb99546dcdb93b5073ced47476d5e1c8465bacfbbec680ad9ecf21f6da89a34a79b029b3e4835634b44ef44a
 SHA512 
c13e12b5d44ea492b278ba66dd680a43996c2036db99ffac2f345e8b7708ebabeb9d11329d9be383e9f82ab460f6a60683214b955530acb174c8d00b53169e9c
+DIST firefox-115.1.0esr-hr.xpi 531649 BLAKE2B 
70f66d5ca4f7c32460392ce63b2e44a4e2e26058431139a04c04109d224cbd2f7d41c1b62116f6782999727875b626062e1dc21e39c2c85352b63f443a86979c
 SHA512 
6b5ed5a979d243d28d91877edebf2fcd745705af499f6a58d70889fb0ebcb1ef81e46d7085f04fa73179ab27d140419ff5d1ecbb2c650737bf118fb06c0b3992
+DIST firefox-115.1.0esr-hsb.xpi 585522 BLAKE2B 
c01ec67c4e580cfbd714adc53e3f4b49a7374cb064fbd31e098ba3ee1f8f93158686e7975edb406641ff8742070c6f0c36a1a56ebd49fd954c200bf2a4d99be7
 SHA512 
9bcef14afbc5c8c23d605334ed5406133eb165631d629451e117c318c29e44a82c5c57b5522bbcc5fd601d7190b048789a4e8980b9c8f1121bcb184d0dc86a90
+DIST firefox-115.1.0esr-hu.xpi 588965 BLAKE2B 
85f38891be5b2f91fb3c99f1a4c8d867e9be8eb17c125d8bfae98a0d7dec99b9db3a5b4371a6751663d8b3a635860eef930c94375a35976fa3f2a7ca2e834cb5
 SHA512 
b9d4118049cfa373e9696630cc8f0c24f66fd7a1755fe51bfe6211160326b8828b60e6559dbb454d7e4303bbe4f5c58c1d44023c0115afab724b8fa462fb3644
+DIST firefox-115.1.0esr-hy-AM.xpi 579188 BLAKE2B 
a18e3461c6241eb1940135f239ff31aaeaec8015adcddeee1e2e30dc9179dd5c07c4981486a8bbd346f7d48bd19271bda862c52d1f5382c70c5823622dcd8e0c
 SHA512 
30ef7acf22a9720a890d17923ba562fad9d4c83c480b81385665014a10a496cd4227923a140912828aa129f21d4ab7607a0ea8ba5183c644db9332a5d22aa08d
+DIST firefox-115.1.0esr-ia.xpi 553070 BLAKE2B 
267ba889b61098c5e7cf083feb09f55f1b59355a714effd95f99771799c6974f476275f84c3385ddd52d676cccec307675805cd839970cb6b4a5b96bad97b90e
 SHA512 
1fc0a974702bbf81e39f851a16fc56035fc7eff8597bf5335ddb0f6c466981d79e0de4325333740b742dab67f847fbfe9753bffa63a4cb849d37cee1dca708d6
+DIST firefox-115.1.0esr-id.xpi 537740 BLAKE2B 
1045d0e5860560079f2745eaffecb4e7ef615e772b2cbd67d483c7a3e3a600e959e515eddf81253a8d67ee676163d03fc26f2f1d22420071b8cba196556d9488
 SHA512 
a5e9ea9f73a7ed25c20c9320666728538b7a347c969963f059478f274d15a488088db029b0e369b0c5c144ffd999d60d27ccced1bc1a748d347355cb81748acd
+DIST firefox-115.1.0esr-is.xpi 560796 BLAKE2B 
635ed768e302af5b8f122a8466c39c97d6ee82f403bb3cef3fc5ff10da526ecf4f547ed7311660fcec66ac3fd76cc4c9d6f2b6d14e8a16448bda0804a89457c8
 SHA512 
fbf293cf16c6b4920144091d2ba0879753f8746eac41d57e5ee3d9edc18d2a96eed8cb7166f06471aa98a154359c6cace3364d3bf30934d5ff916975a718ec37
+DIST firefox-115.1.0esr-it.xpi 507475 BLAKE2B 
c73fb1ba8513780c8c06a0a916d4567f337539ac711c4315edde906a881cf4557279720777864d910d25dae731da5d07c3b8a22046605a0dd4309297908eb988
 SHA512 
0cfecabbcc5d384b5266e4aa7a87e2faa849309d453431636f5332a5eec7d05357e82f385ba5c9a5d19cb1870112551a9751a99706a5b527bd5c4e4974faeaf9
+DIST firefox-115.1.0esr-ja.xpi 634401 BLAKE2B 
7ece9d33c5a22f5dd81b2eba6ef788b2f364efa56ed5cb5c0ef129f7a79f1f6a48f7c9e8c7a41f894bfbe155b8991a14dc87e566cd61365006492353d00c5736
 SHA512 
09bbebd5971993c239e26db2ea9d8439ab2e6b646fb11362b997e5a8a849c58e68a1302d888724c3799b43f24a0a9e9bdfe5600072d3a3db34c383ba52fbf531
+DIST firefox-115.1.0esr-ka.xpi 610741 BLAKE2B 
b45cf0c4e1525fcb7f29f839e9593a7a0bd7cc31ffa349fafacf10418bd5e516d20e62263eda1f542a0b15637bc8adae39dede6faab7c37d7419d976f34274d5
 SHA512 
f762f4d34772554250e0e29b8b502f70d44e2c5b9980623b815802731342c76d4fa7d335319a6d7674d0c6f6409ec76aa6a6e7dc285e723699e5e7bf578a316a
+DIST firefox-115.1.0esr-kab.xpi 562650 BLAKE2B 
95505855393a25c0820c3c31f3ff6347399686d3479c4a656f22ccad9d35295fb5e86b1f7d843e6549ff464f601d1344e25071c6c95811831f38f570aaaebf73
 SHA512 
738c8a058388dd52ddbc364e49ebef5393c316a8784e5f7cf2a20d93cb81d3c73cf13cda926d0fbd75202813874c98802e16f86f4ff32ab361fb0da9222db949
+DIST firefox-115.1.0esr-kk.xpi 639139 BLAKE2B 
a3f3a578bb13b804f75b422b467e2b9c86e19838d0a67bfca0dffea97a3b3d63ef39831fde5f297686c66a5941a2bb18711a51c6b87ecab287f6a9fd9b0df3fc
 SHA512 
b914623adfa19ad91b1c2a6804052f558a27dab0f4205a3db098d185599fb4b0fa01ef3ebaac399263a67570814caad0a8d8795d44ece60dcf77b9bcd5ef2516
+DIST firefox-115.1.0esr-km.xpi 508112 BLAKE2B 
a03ae2c0839dae2e26706aa496bba6dbdc5b296d128d069a9b3771e54c612644d0157e05aa2e7fe9b148d1f77311c363f2c730e21bd3696bc81c16e4e0b4c40d
 SHA512 
99312ab0fea9c9019a8f1e964b2a72fd9a79cc80db338d2bc1623ed5639a977f11b2750d562bf87550fcacbde3a3ee7cda25ef132bb1a1399387ff4c56e5d4ea
+DIST firefox-115.1.0esr-kn.xpi 473762 BLAKE2B 
15509120909b4c86017da6deeeac713d32101f05bc68d9784c105b8cd9ec45dfacb1292ce068978de68b54acb4eba12b4382b9279433a41dc73ee2b15d61d8e9
 SHA512 
42d21b2b7e0cfe4a78cf981f92a4a28ae3c063acff1dbdf81682372ed2bbe976afa441b35a58ebd2a50462663a82739539742aa7f3af0fdac486ec980dd869e9
+DIST firefox-115.1.0esr-ko.xpi 600392 BLAKE2B 
351f35a686d42cf3bb462af96a095f3abb6974c981181091ef7a07ff636d71c0e8b73a106095d6dbfc677418fa5d9deb43108dba5a00ee672d049044c0c1983f
 SHA512 
81f24dc8c510b852aaa75f2f99c1d18d27cbe4061603b0ec8a1a3a865cedf061e50fd49d8f413b405e92e7980475ab57531001df093effc6e0af37664d7c843d
+DIST firefox-115.1.0esr-lij.xpi 463745 BLAKE2B 
21a2f149e52af1bfa53f53635f7f8fb8e79d7571f96941dfda9d6324e8f0a5b946618f5e61a8fee367203042c6aa556517839732b98c186bb32cd7bd857a3caf
 SHA512 
d893b8ad6a10788bd05011b31cd82a64dc7102f4cd1a488fbcdd897d26e1984e4cf5ba210b32cfd45e1ad604a0666bbbba05e8c02b2f18f8acda27fb713c6767
+DIST firefox-115.1.0esr-lt.xpi 548296 BLAKE2B 
2d751f03d1a62a4acd77eaed5475a75088852c6f9f35fa792b483058b14528f18f6557b45b49a7ebba20d32c67ae2c79be04235d6c11081580bec80911d0b00f
 SHA512 
d31e2ebf9b2d3a2ac5849f3a8d19e742517a091b2862663b00145b07b226e50dff25b62a32e73ed34aff9af1aac220bf257ca07bfd4e91f7b9f36bff93e6c17a
+DIST firefox-115.1.0esr-lv.xpi 450736 BLAKE2B 
52f80ee2411b3714709fcd3714fd549bb2676d67fb45a976fef9da727b12e5d378e9a6ded3d99935a7c60c899b4c19e19ce26142cdf62a8a673d079f17c84650
 SHA512 
9d2937066e6b9347a6af0c382a9e7f5c1fa7fc510efca24e6b1cab40ac13a5d825e53ca634a7cc59b88f0ecf155bf7cb5d5cd50dad32b01072575e4f0639fc52
+DIST firefox-115.1.0esr-mk.xpi 470109 BLAKE2B 
23349aa9f7afd6561584ef97ebe3a49437b8769dfea323466436ae15df5f3f96fa23c15dc63e4a6b3a2f778d62a8b867386d71747443d8af6345cbde8f5e5808
 SHA512 
e52a7290cb61d1f1cc31dc77d83c0b4a82908dac8a9980e91ca05d7496aa09030a1571f538c9cdf4de24a146367e06dfc79859768b1bd2841bf79c918f0cfd07
+DIST firefox-115.1.0esr-mr.xpi 510465 BLAKE2B 
a7e6b639d7d017a4666d12766028104fbdea3fa6f4ed8ce646a361e6e8c38ea73758a59dcc5abb16584116c41b6c46a92304911b538201d8ae10f42cc042c1d0
 SHA512 
b2ed51a7fb97a12465595951f8c1f5502bc495232d1383a433714b8ccd9d43699cdf48580fa93a9cc3f4e6031c95f155c861166045d80720104218585f8bc9ed
+DIST firefox-115.1.0esr-ms.xpi 431279 BLAKE2B 
6dee330c067f608a44b89f718dfdacf97816d9d001ebcaa4d3fc456f962a88062112493d5645fbdbe3ca5a808f86c4d392a3765811918b294922570cb373ff3f
 SHA512 
b59ac2abbaec3c81c5fe0e7ab185e5de5ce469f23310cbd62ce617cff6237f9e9a6a7f020272a5fea35361702b99a5732b6763f200565617f8be2eb899cec4ea
+DIST firefox-115.1.0esr-my.xpi 493669 BLAKE2B 
69c487d893b423ea7d45b0b62adfb77ab1f757a5815c4dc1d5b879d9c3ac2a836ad8245fef7799bba311fb7164c6d17d717bb0a7eacea4854e55d2b5a20f8518
 SHA512 
e0a9c63b425f0d1e49e66fcefe095b2b06c05d02968db9b709b3a00340b0f3a43a5d4e34ad134cc315b32adf4c75e7d8c3205ad4eef5403e88d653491655515d
+DIST firefox-115.1.0esr-nb-NO.xpi 548971 BLAKE2B 
551740329e6f2122c44a6b7ac7c8f15f989c6d9c7f91e0377cbd2953d38a6cae72ec6b24f5dfb4003b10a5001ad02fd1e76f2357685c5b9a8a459989481783af
 SHA512 
c58820e8cda0030520cda08f7c3df14254e723e26e7ae727cbbbccadaacb77e8a3f1d1a499ac8dcb6effcdf00eb8ee87bb26447b60f38fb346c1301ce2d9c8c8
+DIST firefox-115.1.0esr-ne-NP.xpi 468989 BLAKE2B 
cd2379184d91458c319e8f9adb582ed9b151305407388d33e3e90358a3ac3a9f6477f197b4243a35298ab74c617a7381f797b42b8ab43d04d8119dcfe95434ec
 SHA512 
b6b1acd637ee015ce35fcf9423caff07d2f5a6bc7fe0309b3b5fe55e4d81ada37ebd9849949f5e3aca7edfd22db8bf6273c6f038b17f84f28e2d99654585dda4
+DIST firefox-115.1.0esr-nl.xpi 559200 BLAKE2B 
aa1ad6772ed2b435d4173db9c54f89ff68d80b845cd906e7bc20b1849feb00c0b30ac6afdb099e9a208b162a394fa6067a670b9d0fc9fe16ea5f50693545f128
 SHA512 
c6a4e4c049ac905f4707623514f8ce93dd5ce56c6982e1af711a52da2608a5f58360759f668e5b5638a83a40575111d611a2be093b771203d293d8db9d739eae
+DIST firefox-115.1.0esr-nn-NO.xpi 551963 BLAKE2B 
f6a02bac29f5b07745533324ac1f9110b80db1f9b03738187dc9893cdc7d2555a5198ed60ef6690bc64b062b68cc107548c0f1af49c480c2a913921f9147d445
 SHA512 
b10fd7e60f0b7bbe8022798858a1ce93effff1749ecf7b41689ed88ecb1b6ceef27f4429df920eb07cb7c00219e4fefce4db55835654fef7d84f0443621b9b91
+DIST firefox-115.1.0esr-oc.xpi 572145 BLAKE2B 
0ff69408a3e4b42e8e5bf6da1d57fee8be41aa8ee252bd2484975a61e03a20cb9648802ef97b65bd13c1e73a8c8d4c3103f827246e8f5340cfb300934536a891
 SHA512 
113501995773883fdbbc043f3cc894d39b575f6ebd8d8ef308a3a7de01f210da958da0a91f52e7503ebccd52751d381d2f5cc2d55bfd8a040a1814d8ea55ac83
+DIST firefox-115.1.0esr-pa-IN.xpi 626121 BLAKE2B 
4c561d484e3899b27381ba5cb45f908880bfc4576d81b0f730bed66336d37e92be237d91724e76fad92b445890056fb86e371b21cf9186916010fbec7a970073
 SHA512 
9e9be0fcb52409ceebc2b34c7f6a3b1280597721bb347b3473adc37033fe7635c671deaf25c75090fccdd91a0f57d20d116ecda7e4b03e273e39544762ab7afb
+DIST firefox-115.1.0esr-pl.xpi 579831 BLAKE2B 
13a784bd03ded4beb626cc402fb1c403d4f46cea9084d8f09f109daace755504da1d5a587c192b74b7ff11b97c4f2e636565e15951ae2c04c9b40324b8d20812
 SHA512 
721aca0edeb59a919e1ff26f599ab37d71885d71c6217370bf864093c6709d275ab1a49d2080d0d721c5b2c4fe46ab0a71833e9a445c07c434b9d2cc8c0e4c3b
+DIST firefox-115.1.0esr-pt-BR.xpi 563950 BLAKE2B 
1c3c9eb30212b1ae6447fdc331139dc6884139858716e80d8717b224d30c5e6151402b7cb7d7c288ae2a5a9cb7e2d0d1425dfb354041b4275f6cefc7478f01b3
 SHA512 
cb4774e3d928e678eaa2a114762ccb5b6bfb2e724445d79e70d31881d6c55863cfb28116c5ea31801972aa40b5cc443bdadb3e93467c8eb4e029099e9cd1cffe
+DIST firefox-115.1.0esr-pt-PT.xpi 569050 BLAKE2B 
6b161146b3270068967db0fc83799d3533b31e84ee9b0b82b49bee95a2890616f63d2e2b1fba197cfc73f924f85c130054a7caf31967709749b6cb40568fe8d9
 SHA512 
0ca42093302600b262d946521267cd6b085718a8b4fa48590b7f6efc86bf4d06106a768055b82de4038e66a44ebe65408d80d18625764e0fb34bc5c20798697c
+DIST firefox-115.1.0esr-rm.xpi 558669 BLAKE2B 
866af186bf6afce37c3b37d3579bbd9add31228f8b976a70106f39eae50f03e3687a80b8a6034bbd1e505bd5c6ccf89233c461e641ff48fbe09934d8b986b1cb
 SHA512 
d0b522d23c1806b5b1aa21aa50662a176b24ebeafa857bcb16b0e7480b21dbceb1cb5a21f8f493b86c6ad2124702e67d362932e2b4391754de00803eaa74d527
+DIST firefox-115.1.0esr-ro.xpi 524803 BLAKE2B 
b1cb58e1af7591b79461e52fa6dccc45a1ab40f047468fe9be4dac7ad419f2a0dbdcd087485194b746dafafb7c261f4cdfbfe6d92ec718b7cbaed5aae1d45cbb
 SHA512 
b0711e7f4e472bfcd8c96929c935cd0695fcbbd16cc9884a1d7e6a8db2361a2c83253909af5008067a12ffc9f7952128fb71b1e5175a3a832d172d66ba7ba069
+DIST firefox-115.1.0esr-ru.xpi 651416 BLAKE2B 
38941086b2435f5262ce2cc323cafed1f6a0a21044ce7a2c7ba12327a5f7987f600165e81a646fd7befabf6c3b53697fa656872d9fa21d2bf3afb4707c007fe6
 SHA512 
58032b032f69663e2f870a577eeee65c161459919407a54a6e14f1c35598e088c3d44c743dd7db20366176b000885a5c05ee8baf5cf2fe5da9f031c99fa66a04
+DIST firefox-115.1.0esr-sc.xpi 535141 BLAKE2B 
fc4f803690c7de78c055d9b9fb95560a29e77b2c5cdf794e202612641dad038d13769c44732a2497c7fd08949e495d4ed7816c748acdb7a7d02116977756ddd6
 SHA512 
fedb211e36365e856a3cdd3ca79f0e023128449f3c325d19287922f81d4d02dac62eb96e101390e499f3b89642a03a8b85bc106f8bfb514c5536296a0a6dd55d
+DIST firefox-115.1.0esr-sco.xpi 489687 BLAKE2B 
990e665584b4fca698bfd3b57895fd21e311bfdef2fbb1f333226d66a0c678659e16cd68d58e72618e54f474101b7b0ca7b9fb80b9ced9adb5ea23055c6e2732
 SHA512 
ba119c0976f57acf1a9d2a1d4412a74b013a1e0e01f033789431dd299e505b2c7240c489b1d2ac1064f4974d30f385f5e3d947e485c210f659cc7339363d9623
+DIST firefox-115.1.0esr-si.xpi 569010 BLAKE2B 
9c7c9afb8db91684ea18087c5b7357d0c2073b0697749d34b872dd303dd7c91e0cec3dec7fc3ba7a790c3787424ea3927d1207eb13a8cbaaf6ab19e00d324a4a
 SHA512 
341c8c4845ddf70aeefc28db5cf52f67737a9b4fb4a91b0ccbfb4bb1c7e99aa86a27cd5f61f21e35c55fa530bb92e1fc08dc97c6a6dd5eda25adc43f13e7bbb4
+DIST firefox-115.1.0esr-sk.xpi 589728 BLAKE2B 
12a3bf138c51d4d37114f089c238d7299e5a1c31e493cf74b9c67ac0f99b708b5514a30ef189822db4aa19093f3ab647692c0f8928599c86af66eae5a2a7dc43
 SHA512 
f8c1a22aae172c5beb5bcfd687ad0b9bd68dc421c25f8d01dd9a376b3ae38d62aeb97260cb55c3c7d1de68b122f37e40acca3464b5201f6b3de27e12b21ad1ba
+DIST firefox-115.1.0esr-sl.xpi 562528 BLAKE2B 
6b85c96e199f4cd702fe0b64782a6c939da9f3d090a39561835aa2344d689261fa14884161e476a6046335f307f94b35a1397a615ba766f0bf74317a53b4ae0a
 SHA512 
664d423664cb525f844ff6386f9c69f4080426bdc9f0d6f10e66cc0ef9c6f9c733ca6f6d178aea4d034c4bdddc52d55d2492fd5a4f2b549fa71ece095e0ec8ea
+DIST firefox-115.1.0esr-son.xpi 400962 BLAKE2B 
cc81c9372627fa33fe17536dc189d3b7e2638edce8fe3c1c948cccefa91352d778136ed5ec13e97f5fab2009da3caca0d470ef2a330fb2219034b18b2f5974fb
 SHA512 
10ae95e94160fdf00030395be76504866a1161953237e56e6e8ebe929c0f7ffce2595b98be2b39e31127250fab080273a352e80bcaf4725eb8b5131ff2347542
+DIST firefox-115.1.0esr-sq.xpi 564455 BLAKE2B 
94b8f268666cdd080af63ef117d8f8ed10269a74afc052b8e89ff4a24be2ceb2cbfe77b14630eec99602579c269102fc1a7b7a10d455adb534bc9fcc50fa5690
 SHA512 
247f1b46790104186edfe7b2defbc6eed3b8cf94f470e8f80fa8d81433a955f3ef218c05c6419f4a7df6665fb2b96c49cff38649aef9c28de89c72eda9575b3d
+DIST firefox-115.1.0esr-sr.xpi 614006 BLAKE2B 
c400efa4da35e77fcc7d827c63e1e938a7a66afbeb07a28279f47d091d05f60f469ce26ae1bc4399239d0d1820e2c7594787837dbe9b2a6b7ff7c6014c22cb20
 SHA512 
c7ecdff46e76a3f4aa036fad58509a70c3a571455e9ecbcbd69cdc38c206c32887938a581132d28e9a7a90a2c557555103fddee3415b888a32566c9c26145ab8
+DIST firefox-115.1.0esr-sv-SE.xpi 560554 BLAKE2B 
6ccb37c78cff195346191c1277dc3d91fa7576bdc4846c85519a86fdac1897115d98ad69be1355435b539f7daf364f1f64fbc2616797a061a816742576818198
 SHA512 
bf68191625f205f58335f4e0e2128c5f9fac0743f666a31a39312c116cd1a95e2e224658805322cda89ddc46aac4f5806894c363c6ab1a10a1533cb5d8cc36ee
+DIST firefox-115.1.0esr-szl.xpi 504131 BLAKE2B 
44524bb592de5a2db91e5ac613e9fb3522c6d99879ebc22f9945b8911229bff4debf52c82ffcb98a591f767c2f06b962978b391fa7cb83139675e7dd93cc36b7
 SHA512 
4af6f74b23be71668850956681a7c1b2b2027c89923cc5a7430df7bf5c3fa383ba7e0b47f97ff8640f28bd2e6e22e960df0e6ba0b9b9ea342510d4e0ef3cd6dd
+DIST firefox-115.1.0esr-ta.xpi 488857 BLAKE2B 
fa77789812f6903d36edce6a060ba55f3ccfb6aa311d19ee9247607ab782567017154dc87afbd18934a32874c761d1637c9bb2a1c56366bb551c09eff187e511
 SHA512 
7268c48bfc1ba108686ac839c3915cfdc7601db5dc695808640ecc4f57e1bb58fbe77e02caa635d130fd624c7bf344aa6fb82e0998e70d42907ffe61547cedd9
+DIST firefox-115.1.0esr-te.xpi 536166 BLAKE2B 
b8c51abb484ff8d74c5c1e4ee007dd3c67dce657edd590a689ab14daf15dd6e617212360dabb6348234089bd487c7c05a1b88fcd1cef757c26c759521a76d153
 SHA512 
446e2f17d6891870d9a0082f752b48944e3e34d5f08722941775757bcaf8ff725634fe3a19ed99d57581bba3b93b2c355f8b4d82085a9b48a642d085e039eba8
+DIST firefox-115.1.0esr-th.xpi 632043 BLAKE2B 
d0fbb42759b24b864b0b546af4d71eb76a1ee905e11c02283aa917a4ff039b355798a44f42f26f3dd330540fe39e69cda638c8939d387f880800cf91346c41cd
 SHA512 
11d46504708a7d814913f76afd76aa1796535e97068faf7bdc97c78a12e8c9e678ac4a75b560ec94a5f61df725da784f08b6f7c8204fc13d38ed08277e42006c
+DIST firefox-115.1.0esr-tl.xpi 511423 BLAKE2B 
4e5e6483f57423d2c7679ffbabdf6880dfee8728a9eddd22d7898f7217431bca2827b776f0450f119069e9e4eb40d96343158c8332f746b8976835eeb7bfbd88
 SHA512 
5587873cff65a86063dce60e48e2c788f1fe86ab7068ac6246a9fcf168d1a5a1901bf4fdc307ec2f62216470fbc859dd6c7f5a3fe4c2fd011b90275834d730d7
+DIST firefox-115.1.0esr-tr.xpi 573244 BLAKE2B 
3f86944242e58359a27dd36bcdcf49d8493ddf55bfd26c3595afcab5b306b3cddaf68f506d4606b43772d3ceb073e7d0d5d80aae289084c5abfd6a70b70349f8
 SHA512 
d24a005c17c80eeec17a8c8be7f58ed99b9a372ebed8488181df90a14c12e54a3978c4fa17269295111c4d37f1da247e7979336dcdb414fa65f18e361fc2a30c
+DIST firefox-115.1.0esr-trs.xpi 479674 BLAKE2B 
91e69f6da09168fcb9069f895ccb870ec0c4279369bdfcda37049714863495ac7d872871510e75e731eebe1b58a9b78b760eb9dc35c8b93d20748a5a85da2f9b
 SHA512 
4ffa86bdb5bd96dd6b954dabb8cd8b0492cf8ad5874cb4c47603531b6097bd21df607475d46d98e793f4a113a44fde2f2adfea03dfd414a50dab963cdfc1b54f
+DIST firefox-115.1.0esr-uk.xpi 645035 BLAKE2B 
b96dce48c1380e1c565a12fc36f6d004d2ecffa56563da57e9fdaa78586c9268d6df6db35f2edad81c265a09ecc34db693a3121dd7e65a6a966b83d05bb13138
 SHA512 
1b08e84702de4d4ceb91a371853bc9232016626ac5b3e4c77f9441818de16ca2d933e47acff78dfd59401bb14a3578ba6878c8eb600b368151a176071bd38b71
+DIST firefox-115.1.0esr-ur.xpi 538779 BLAKE2B 
ecfa7bf4c8df99d737f4131e26f17d332a61e3937e43ec6ec5e75bec5cf590dba7ba1136fcb197baee3d99948ac2ad18d815a1d66c25dc385adf3994c5e65455
 SHA512 
037e4fb98e118ba4c1f15285c5bb1e59e7261850b74c121b18fb751da1fd22fa73a854ece1ecf50340b84e9d4eb5e9a0f20dd47dc5525f96fd6deae094fbe1ce
+DIST firefox-115.1.0esr-uz.xpi 461743 BLAKE2B 
2faae01d8419dabfa50abfed81f118443464180392540f30b0c7726350c88e165a1858fa1dc56abee11176d312771f6fa81597f85be6c51b27ac9655a9db7abe
 SHA512 
135f39238105c17f2a8ea6cf2747459bbb47d052cdfbc2a2df93fa1525305d184a84a3622bf40759b7ad79064b8cb25619197fa8c9fa6e1ff5e2320d957b6b04
+DIST firefox-115.1.0esr-vi.xpi 595540 BLAKE2B 
5429f72a364b7ea95c29c694e03b71bda946bb28a8f37e931c73d0873c06dafed8a4b34d520d95fa009367c884d7ab794058b12c8fccee2d2f14217c9bf49a4c
 SHA512 
7fd90a80e0204a544ecf1f71c18b0491cd991c3412eb701e2f32cf9b95380e265f238232d466ce9bf63b06ce7860693f080ec9a646c0a73a70e2d9cc5281826b
+DIST firefox-115.1.0esr-xh.xpi 402425 BLAKE2B 
56169c2f4e12909e5e83c7cbeb2edc13f410abf93464a4f0f68f1531e9ba53a47e5aa9f2248de0cd625aab302bc133da309de11289e8610b64a31d6a945609fa
 SHA512 
d89ed1174c0e50e9d03c76e3114a05f0c16e5f668f5c9d0520078b1c4cfbb0090dc925d7d2b4c1a9a10c23a5c598c4972baa6389cefbf243c1216edc7faab663
+DIST firefox-115.1.0esr-zh-CN.xpi 595483 BLAKE2B 
51a3408f8119f025ca8b68cb64a180a233b1cc3966c09c05fb75b82e4ee0dbc203b63405d1cfcc590f045cadd25c72468ba0495f3c2140f9e8cc7da5718caa7b
 SHA512 
6bf3d518e98df5380eb38852f495740630e969f77c9196be84bb804f361a3e0ac88f325d195e0c8fe20733bce9ef54c9852f3ffd432b7c6dbbff3af7f5e38fa9
+DIST firefox-115.1.0esr-zh-TW.xpi 597818 BLAKE2B 
e56d1306d9a0ca2638d6ff3ef5c8553e5aba87625ac00b12a492ea98738dea3e12477fbf668535182743c9096d40f645a92f7c69bf47dd9dcfbe06b0ce98492b
 SHA512 
8e9c3ad02d885c080ade555db078ad9c714fe5da6cb44320cc12ec508e5e1060da7e2990de4f3bcd3782f77c83d965c4664af8b228b3d9222cad8563a85f3f75
+DIST firefox-115.1.0esr.source.tar.xz 507060904 BLAKE2B 
4da0535e05e193d0d7509790f3a6b0f8dd4dd809bdfab14da357ef06ce2b665d89a5620994393d6bdbe6a8fba1db55157063b7760fdd2e75f2bddca86f9992b4
 SHA512 
b2abb706fef2f1aa9451e7ac7c2affa0cc92cf2b0c6629f106a94c62017476380c7b6f406861fa468f60ea898d8402f534ad74844eb3932741fbd981cec66592
 DIST firefox-115esr-patches-03.tar.xz 17924 BLAKE2B 
2b086761cb34c115c8e07f33f3f569c7c31c0e61565eb792a509b089220ff42b1e676641a09c057718a74c6fcba6be053c9edf39fa063789cf773d756fc374f4
 SHA512 
a386826b3a9c4736d9cb5192b17509669fc71308d2879b6a266201d2d571dc3b4021260784bec3117d1f68d508436120b5aa9ee18d01af84f67da58df7e72b2f
+DIST firefox-115esr-patches-04.tar.xz 14608 BLAKE2B 
78143b2ed2f0c71bef84c26ebbb9f29912e6d8bb2f513cf95f5d97203efb556cb339bbb1f61666300786eb5b1f93294816481a0396bd8acc497c9f51b138376a
 SHA512 
f6b07b9f94a79c766b864c4f73044dfd6aea5faf16e742202ca78f4f6e0399a71fc3dcf4d40d4dd67d3f13612c26a5e1a5f845e6892901c0ee6168aabf131f79
 DIST firefox-116-patches-01.tar.xz 16288 BLAKE2B 
b47e110902147fa43e58b63280ac04940734308e054adc9a6887200ab0222ce50355404ca70427246322be268dd30f25ecd628d0ddf59fb723370427b0f9fda1
 SHA512 
3efb950a768686e4a60b2a8e054d1284048d0ef727a9ddea841e443297bff0448d2728083581823dbd315ec83b8743c298811b0f97e457776a98e0be1e671e17
 DIST firefox-116.0-ach.xpi 440323 BLAKE2B 
56d55907cde8e61f0be7c4e880d9548e0f9660f465d33fb61afaa50d1b440bdec76a9a6091885edb58677335941c3755f240c99a0937113003c7ec07a2306695
 SHA512 
7672d3ab4f5fb6adc14830ac99d3e704b3391e392ce6af3e97375ada2ad675caf5ea1d0b42d311e3fc0a1628ada8c76284d38aeed74c89aee05cbc4c29e3502c
 DIST firefox-116.0-af.xpi 401616 BLAKE2B 
9115ce0800aefdb2184556fb92f3a1ee28ab82dc0c77c8b913ca7933253a4ab7f478016ac38e063c20479235a8341fcae4bdd35eac713d0720b4343dd862e59c
 SHA512 
4e8569dac354d5b899cd7e38552d5281045bf2b2dbd7dcd8861d5a48169aef8e0a9b12a251f976006d8833a23d32391adeee27986de6d3eddd101001ea6dbf88

diff --git a/www-client/firefox/firefox-115.1.0.ebuild 
b/www-client/firefox/firefox-115.1.0.ebuild
new file mode 100644
index 000000000000..cbdc6558640b
--- /dev/null
+++ b/www-client/firefox/firefox-115.1.0.ebuild
@@ -0,0 +1,1405 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-115esr-patches-04.tar.xz"
+
+LLVM_MAX_SLOT=16
+
+PYTHON_COMPAT=( python3_{9..11} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+MOZ_ESR=yes
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+       MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+       # Convert the ebuild version to the upstream Mozilla version
+       MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+       MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+       MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+       # ESR releases have slightly different version numbers
+       MOZ_PV="${MOZ_PV}esr"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info \
+       llvm multiprocessing optfeature pax-utils python-any-r1 toolchain-funcs 
\
+       virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}";
+
+if [[ ${PV} == *_rc* ]] ; then
+       
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}";
+fi
+
+PATCH_URIS=(
+       https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> 
${MOZ_P_DISTFILES}.source.tar.xz
+       ${PATCH_URIS[@]}"
+
+DESCRIPTION="Firefox Web Browser"
+HOMEPAGE="https://www.mozilla.com/firefox";
+
+KEYWORDS=""
+
+SLOT="esr"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+
+IUSE="+clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel"
+IUSE+=" jack libproxy lto +openh264 pgo pulseaudio sndio selinux"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent 
+system-libvpx system-png system-python-libs +system-webp"
+IUSE+=" wayland wifi +X"
+
+# Firefox-only IUSE
+IUSE+=" geckodriver +gmp-autoupdate screencast"
+
+REQUIRED_USE="|| ( X wayland )
+       debug? ( !system-av1 )
+       pgo? ( lto )
+       wifi? ( dbus )"
+
+FF_ONLY_DEPEND="!www-client/firefox:0
+       !www-client/firefox:rapid
+       screencast? ( media-video/pipewire:= )
+       selinux? ( sec-policy/selinux-mozilla )"
+BDEPEND="${PYTHON_DEPS}
+       || (
+               (
+                       sys-devel/clang:16
+                       sys-devel/llvm:16
+                       clang? (
+                               || (
+                                       sys-devel/lld:16
+                                       sys-devel/mold
+                               )
+                               virtual/rust:0/llvm-16
+                               pgo? ( 
=sys-libs/compiler-rt-sanitizers-16*[profile] )
+                       )
+               )
+               (
+                       sys-devel/clang:15
+                       sys-devel/llvm:15
+                       clang? (
+                               || (
+                                       sys-devel/lld:15
+                                       sys-devel/mold
+                               )
+                               virtual/rust:0/llvm-15
+                               pgo? ( 
=sys-libs/compiler-rt-sanitizers-15*[profile] )
+                       )
+               )
+       )
+       app-alternatives/awk
+       app-arch/unzip
+       app-arch/zip
+       >=dev-util/cbindgen-0.24.3
+       net-libs/nodejs
+       virtual/pkgconfig
+       !clang? ( >=virtual/rust-1.65 )
+       amd64? ( >=dev-lang/nasm-2.14 )
+       x86? ( >=dev-lang/nasm-2.14 )
+       pgo? (
+               X? (
+                       sys-devel/gettext
+                       x11-base/xorg-server[xvfb]
+                       x11-apps/xhost
+               )
+               wayland? (
+                       >=gui-libs/wlroots-0.15.1-r1[tinywl]
+                       x11-misc/xkeyboard-config
+               )
+       )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       dev-libs/expat
+       dev-libs/glib:2
+       dev-libs/libffi:=
+       >=dev-libs/nss-3.90
+       >=dev-libs/nspr-4.35
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       media-video/ffmpeg
+       sys-libs/zlib
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               dev-libs/dbus-glib
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       screencast? ( media-video/pipewire:= )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-1.0.0:=
+       )
+       system-harfbuzz? (
+               >=media-gfx/graphite2-1.3.13
+               >=media-libs/harfbuzz-2.8.1:0=
+       )
+       system-icu? ( >=dev-libs/icu-73.1:= )
+       system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
+       system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] )
+       system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+       system-png? ( >=media-libs/libpng-1.6.35:0=[apng] )
+       system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+       wayland? (
+               >=media-libs/libepoxy-1.5.10-r1
+               x11-libs/gtk+:3[wayland]
+               x11-libs/libxkbcommon[wayland]
+       )
+       wifi? (
+               kernel_linux? (
+                       dev-libs/dbus-glib
+                       net-misc/networkmanager
+                       sys-apps/dbus
+               )
+       )
+       X? (
+               virtual/opengl
+               x11-libs/cairo[X]
+               x11-libs/gtk+:3[X]
+               x11-libs/libX11
+               x11-libs/libXcomposite
+               x11-libs/libXdamage
+               x11-libs/libXext
+               x11-libs/libXfixes
+               x11-libs/libxkbcommon[X]
+               x11-libs/libXrandr
+               x11-libs/libXtst
+               x11-libs/libxcb:=
+       )"
+RDEPEND="${COMMON_DEPEND}
+       jack? ( virtual/jack )
+       openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+       X? (
+               x11-base/xorg-proto
+               x11-libs/libICE
+               x11-libs/libSM
+       )"
+
+S="${WORKDIR}/${PN}-${PV%_*}"
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+       MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+       if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then
+               einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM 
slot ${LLVM_SLOT} ..." >&2
+               return 1
+       fi
+
+       if use clang && ! tc-ld-is-mold ; then
+               if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then
+                       einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot 
use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+
+               if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then
+                       einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! 
Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+                       return 1
+               fi
+
+               if use pgo ; then
+                       if ! has_version -b 
"=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then
+                               einfo 
"=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing! Cannot use 
LLVM slot ${LLVM_SLOT} ..." >&2
+                               return 1
+                       fi
+               fi
+       fi
+
+       einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+MOZ_LANGS=(
+       af ar ast be bg br ca cak cs cy da de dsb
+       el en-CA en-GB en-US es-AR es-ES et eu
+       fi fr fy-NL ga-IE gd gl he hr hsb hu
+       id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO
+       pa-IN pl pt-BR pt-PT rm ro ru
+       sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW
+)
+
+# Firefox-only LANGS
+MOZ_LANGS+=( ach )
+MOZ_LANGS+=( an )
+MOZ_LANGS+=( az )
+MOZ_LANGS+=( bn )
+MOZ_LANGS+=( bs )
+MOZ_LANGS+=( ca-valencia )
+MOZ_LANGS+=( eo )
+MOZ_LANGS+=( es-CL )
+MOZ_LANGS+=( es-MX )
+MOZ_LANGS+=( fa )
+MOZ_LANGS+=( ff )
+MOZ_LANGS+=( fur )
+MOZ_LANGS+=( gn )
+MOZ_LANGS+=( gu-IN )
+MOZ_LANGS+=( hi-IN )
+MOZ_LANGS+=( hy-AM )
+MOZ_LANGS+=( ia )
+MOZ_LANGS+=( km )
+MOZ_LANGS+=( kn )
+MOZ_LANGS+=( lij )
+MOZ_LANGS+=( mk )
+MOZ_LANGS+=( mr )
+MOZ_LANGS+=( my )
+MOZ_LANGS+=( ne-NP )
+MOZ_LANGS+=( oc )
+MOZ_LANGS+=( sc )
+MOZ_LANGS+=( sco )
+MOZ_LANGS+=( si )
+MOZ_LANGS+=( son )
+MOZ_LANGS+=( szl )
+MOZ_LANGS+=( ta )
+MOZ_LANGS+=( te )
+MOZ_LANGS+=( tl )
+MOZ_LANGS+=( trs )
+MOZ_LANGS+=( ur )
+MOZ_LANGS+=( xh )
+
+mozilla_set_globals() {
+       # https://bugs.gentoo.org/587334
+       local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+               fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+       )
+
+       local lang xflag
+       for lang in "${MOZ_LANGS[@]}" ; do
+               # en and en_US are handled internally
+               if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+                       continue
+               fi
+
+               # strip region subtag if $lang is in the list
+               if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+                       xflag=${lang%%-*}
+               else
+                       xflag=${lang}
+               fi
+
+               SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+               SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> 
${MOZ_P_DISTFILES}-${lang}.xpi"
+               SRC_URI+=" )"
+               IUSE+=" l10n_${xflag/[_@]/-}"
+       done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -ne 1 ]] ; then
+               die "${FUNCNAME} requires exact one argument"
+       fi
+
+       einfo "Clearing cargo checksums for ${1} ..."
+
+       sed -i \
+               -e 's/\("files":{\)[^}]*/\1/' \
+               "${S}"/third_party/rust/${1}/.cargo-checksum.json \
+               || die
+}
+
+moz_install_xpi() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local DESTDIR=${1}
+       shift
+
+       insinto "${DESTDIR}"
+
+       local emid xpi_file xpi_tmp_dir
+       for xpi_file in "${@}" ; do
+               emid=
+               xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+               # Unpack XPI
+               unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+               # Determine extension ID
+               if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+                       emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; 
s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from install.rdf"
+               elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+                       emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' 
"${xpi_tmp_dir}/manifest.json")
+                       [[ -z "${emid}" ]] && die "failed to determine 
extension id from manifest.json"
+               else
+                       die "failed to determine extension id"
+               fi
+
+               einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+               newins "${xpi_file}" "${emid}.xpi"
+       done
+}
+
+mozconfig_add_options_ac() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_add_options_mk() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 2 ]] ; then
+               die "${FUNCNAME} requires at least two arguments"
+       fi
+
+       local reason=${1}
+       shift
+
+       local option
+       for option in ${@} ; do
+               echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+       done
+}
+
+mozconfig_use_enable() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_enable "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+mozconfig_use_with() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       if [[ ${#} -lt 1 ]] ; then
+               die "${FUNCNAME} requires at least one arguments"
+       fi
+
+       local flag=$(use_with "${@}")
+       mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" 
"${flag}"
+}
+
+# This is a straight copypaste from toolchain-funcs.eclass's 'tc-ld-is-lld', 
and is temporarily
+# placed here until toolchain-funcs.eclass gets an official support for mold 
linker.
+# Please see:
+# https://github.com/gentoo/gentoo/pull/28366 ||
+# https://github.com/gentoo/gentoo/pull/28355
+tc-ld-is-mold() {
+       local out
+
+       # Ensure ld output is in English.
+       local -x LC_ALL=C
+
+       # First check the linker directly.
+       out=$($(tc-getLD "$@") --version 2>&1)
+       if [[ ${out} == *"mold"* ]] ; then
+               return 0
+       fi
+
+       # Then see if they're selecting mold via compiler flags.
+       # Note: We're assuming they're using LDFLAGS to hold the
+       # options and not CFLAGS/CXXFLAGS.
+       local base="${T}/test-tc-linker"
+       cat <<-EOF > "${base}.c"
+       int main() { return 0; }
+       EOF
+       out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version 
"${base}.c" -o "${base}" 2>&1)
+       rm -f "${base}"*
+       if [[ ${out} == *"mold"* ]] ; then
+               return 0
+       fi
+
+       # No mold here!
+       return 1
+}
+
+virtwl() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+       [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to 
be set; try xdg_environment_reset"
+       tinywl -h >/dev/null || die 'tinywl -h failed'
+
+       # TODO: don't run addpredict in utility function. WLR_RENDERER=pixman 
doesn't work
+       addpredict /dev/dri
+       local VIRTWL VIRTWL_PID
+       coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo 
$WAYLAND_DISPLAY; read _; kill $PPID'; }
+       local -x WAYLAND_DISPLAY
+       read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+       debug-print "${FUNCNAME}: $@"
+       "$@"
+       local r=$?
+
+       [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+       exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+       return $r
+}
+
+pkg_pretend() {
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+               if use pgo ; then
+                       if ! has usersandbox $FEATURES ; then
+                               die "You must enable usersandbox as X server 
can not run as root!"
+                       fi
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || use lto || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6600M"
+               fi
+
+               check-reqs_pkg_pretend
+       fi
+}
+
+pkg_setup() {
+       if [[ ${MERGE_TYPE} != binary ]] ; then
+               if use pgo ; then
+                       if ! has userpriv ${FEATURES} ; then
+                               eerror "Building ${PN} with USE=pgo and 
FEATURES=-userpriv is not supported!"
+                       fi
+               fi
+
+               # Ensure we have enough disk space to compile
+               if use pgo || use lto || use debug ; then
+                       CHECKREQS_DISK_BUILD="13500M"
+               else
+                       CHECKREQS_DISK_BUILD="6400M"
+               fi
+
+               check-reqs_pkg_setup
+
+               llvm_pkg_setup
+
+               if use clang && use lto && tc-ld-is-lld ; then
+                       local version_lld=$(ld.lld --version 2>/dev/null | awk 
'{ print $2 }')
+                       [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 
"${version_lld}")
+                       [[ -z ${version_lld} ]] && die "Failed to read ld.lld 
version!"
+
+                       local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep 
-F -- 'LLVM version:' | awk '{ print $3 }')
+                       [[ -n ${version_llvm_rust} ]] && 
version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}")
+                       [[ -z ${version_llvm_rust} ]] && die "Failed to read 
used LLVM version from rustc!"
+
+                       if ver_test "${version_lld}" -ne "${version_llvm_rust}" 
; then
+                               eerror "Rust is using LLVM version 
${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}."
+                               eerror "You will be unable to link 
${CATEGORY}/${PN}. To proceed you have the following options:"
+                               eerror "  - Manually switch rust version using 
'eselect rust' to match used LLVM version"
+                               eerror "  - Switch to 
dev-lang/rust[system-llvm] which will guarantee matching version"
+                               eerror "  - Build ${CATEGORY}/${PN} without 
USE=lto"
+                               eerror "  - Rebuild lld with llvm that was used 
to build rust (may need to rebuild the whole "
+                               eerror "    llvm/clang/lld/rust chain depending 
on your @world updates)"
+                               die "LLVM version used by Rust 
(${version_llvm_rust}) does not match with ld.lld version (${version_lld})!"
+                       fi
+               fi
+
+               python-any-r1_pkg_setup
+
+               # Avoid PGO profiling problems due to enviroment leakage
+               # These should *always* be cleaned up anyway
+               unset \
+                       DBUS_SESSION_BUS_ADDRESS \
+                       DISPLAY \
+                       ORBIT_SOCKETDIR \
+                       SESSION_MANAGER \
+                       XAUTHORITY \
+                       XDG_CACHE_HOME \
+                       XDG_SESSION_COOKIE
+
+               # Build system is using /proc/self/oom_score_adj, bug #604394
+               addpredict /proc/self/oom_score_adj
+
+               if use pgo ; then
+                       # Update 105.0: "/proc/self/oom_score_adj" isn't enough 
anymore with pgo, but not sure
+                       # whether that's due to better OOM handling by Firefox 
(bmo#1771712), or portage
+                       # (PORTAGE_SCHEDULING_POLICY) update...
+                       addpredict /proc
+
+                       # May need a wider addpredict when using wayland+pgo.
+                       addpredict /dev/dri
+
+                       # Allow access to GPU during PGO run
+                       local ati_cards mesa_cards nvidia_cards render_cards
+                       shopt -s nullglob
+
+                       ati_cards=$(echo -n /dev/ati/card* | sed 's/ /:/g')
+                       if [[ -n "${ati_cards}" ]] ; then
+                               addpredict "${ati_cards}"
+                       fi
+
+                       mesa_cards=$(echo -n /dev/dri/card* | sed 's/ /:/g')
+                       if [[ -n "${mesa_cards}" ]] ; then
+                               addpredict "${mesa_cards}"
+                       fi
+
+                       nvidia_cards=$(echo -n /dev/nvidia* | sed 's/ /:/g')
+                       if [[ -n "${nvidia_cards}" ]] ; then
+                               addpredict "${nvidia_cards}"
+                       fi
+
+                       render_cards=$(echo -n /dev/dri/renderD128* | sed 's/ 
/:/g')
+                       if [[ -n "${render_cards}" ]] ; then
+                               addpredict "${render_cards}"
+                       fi
+
+                       shopt -u nullglob
+               fi
+
+               if ! mountpoint -q /dev/shm ; then
+                       # If /dev/shm is not available, configure is known to 
fail with
+                       # a traceback report referencing 
/usr/lib/pythonN.N/multiprocessing/synchronize.py
+                       ewarn "/dev/shm is not mounted -- expect build 
failures!"
+               fi
+
+               # Google API keys (see 
http://www.chromium.org/developers/how-tos/api-keys)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+                       
MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+               fi
+
+               if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+                       
MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+               fi
+
+               # Mozilla API keys (see 
https://location.services.mozilla.com/api)
+               # Note: These are for Gentoo Linux use ONLY. For your own 
distribution, please
+               # get your own set of keys.
+               if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+                       
MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+               fi
+
+               # Ensure we use C locale when building, bug #746215
+               export LC_ALL=C
+       fi
+
+       CONFIG_CHECK="~SECCOMP"
+       WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to 
play DRM-protected content."
+       linux-info_pkg_setup
+}
+
+src_unpack() {
+       local _lp_dir="${WORKDIR}/language_packs"
+       local _src_file
+
+       if [[ ! -d "${_lp_dir}" ]] ; then
+               mkdir "${_lp_dir}" || die
+       fi
+
+       for _src_file in ${A} ; do
+               if [[ ${_src_file} == *.xpi ]]; then
+                       cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die 
"Failed to copy '${_src_file}' to '${_lp_dir}'!"
+               else
+                       unpack ${_src_file}
+               fi
+       done
+}
+
+src_prepare() {
+       if use lto; then
+               rm -v 
"${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
+       fi
+
+       if ! use ppc64; then
+               rm -v "${WORKDIR}"/firefox-patches/*ppc64*.patch || die
+       fi
+
+       eapply "${WORKDIR}/firefox-patches"
+
+       # Allow user to apply any additional patches without modifing ebuild
+       eapply_user
+
+       # Make cargo respect MAKEOPTS
+       export CARGO_BUILD_JOBS="$(makeopts_jobs)"
+
+       # Make LTO respect MAKEOPTS
+       sed -i \
+               -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/build/moz.configure/lto-pgo.configure \
+               || die "sed failed to set num_cores"
+
+       # Make ICU respect MAKEOPTS
+       sed -i \
+               -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+               "${S}"/intl/icu_sources_data.py \
+               || die "sed failed to set num_cores"
+
+       # sed-in toolchain prefix
+       sed -i \
+               -e "s/objdump/${CHOST}-objdump/" \
+               "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py 
\
+               || die "sed failed to set toolchain prefix"
+
+       sed -i \
+               -e 's/ccache_stats = None/return None/' \
+               "${S}"/python/mozbuild/mozbuild/controller/building.py \
+               || die "sed failed to disable ccache stats call"
+
+       einfo "Removing pre-built binaries ..."
+
+       find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) 
-print -delete || die
+
+       # Create build dir
+       BUILD_DIR="${WORKDIR}/${PN}_build"
+       mkdir -p "${BUILD_DIR}" || die
+
+       # Write API keys to disk
+       echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+       echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || 
die
+       echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+       xdg_environment_reset
+}
+
+src_configure() {
+       # Show flags set at the beginning
+       einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       local have_switched_compiler=
+       if use clang; then
+               # Force clang
+               einfo "Enforcing the use of clang due to USE=clang ..."
+
+               local version_clang=$(clang --version 2>/dev/null | grep -F -- 
'clang version' | awk '{ print $3 }')
+               [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 
"${version_clang}")
+               [[ -z ${version_clang} ]] && die "Failed to read clang version!"
+
+               if tc-is-gcc; then
+                       have_switched_compiler=yes
+               fi
+
+               AR=llvm-ar
+               CC=${CHOST}-clang-${version_clang}
+               CXX=${CHOST}-clang++-${version_clang}
+               NM=llvm-nm
+               RANLIB=llvm-ranlib
+
+       elif ! use clang && ! tc-is-gcc ; then
+               # Force gcc
+               have_switched_compiler=yes
+               einfo "Enforcing the use of gcc due to USE=-clang ..."
+               AR=gcc-ar
+               CC=${CHOST}-gcc
+               CXX=${CHOST}-g++
+               NM=gcc-nm
+               RANLIB=gcc-ranlib
+       fi
+
+       if [[ -n "${have_switched_compiler}" ]] ; then
+               # Because we switched active compiler we have to ensure
+               # that no unsupported flags are set
+               strip-unsupported-flags
+       fi
+
+       # Ensure we use correct toolchain,
+       # AS is used in a non-standard way by upstream, #bmo1654031
+       export HOST_CC="$(tc-getBUILD_CC)"
+       export HOST_CXX="$(tc-getBUILD_CXX)"
+       export AS="$(tc-getCC) -c"
+       tc-export CC CXX LD AR AS NM OBJDUMP RANLIB PKG_CONFIG
+
+       # Pass the correct toolchain paths through cbindgen
+       if tc-is-cross-compiler ; then
+               export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} 
--target=${CHOST} ${BINDGEN_CFLAGS-}"
+       fi
+
+       # Set MOZILLA_FIVE_HOME
+       export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+       # python/mach/mach/mixin/process.py fails to detect SHELL
+       export SHELL="${EPREFIX}/bin/bash"
+
+       # Set state path
+       export MOZBUILD_STATE_PATH="${BUILD_DIR}"
+
+       # Set MOZCONFIG
+       export MOZCONFIG="${S}/.mozconfig"
+
+       # Initialize MOZCONFIG
+       mozconfig_add_options_ac '' --enable-application=browser
+       mozconfig_add_options_ac '' --enable-project=browser
+
+       # Set Gentoo defaults
+       mozconfig_add_options_ac 'Gentoo default' \
+               --allow-addon-sideload \
+               --disable-cargo-incremental \
+               --disable-crashreporter \
+               --disable-gpsd \
+               --disable-install-strip \
+               --disable-parental-controls \
+               --disable-strip \
+               --disable-tests \
+               --disable-updater \
+               --disable-wmf \
+               --enable-legacy-profile-creation \
+               --enable-negotiateauth \
+               --enable-new-pass-manager \
+               --enable-official-branding \
+               --enable-release \
+               --enable-system-ffi \
+               --enable-system-pixman \
+               --enable-system-policies \
+               --host="${CBUILD:-${CHOST}}" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --prefix="${EPREFIX}/usr" \
+               --target="${CHOST}" \
+               --without-ccache \
+               --without-wasm-sandboxed-libraries \
+               --with-intl-api \
+               --with-libclang-path="$(llvm-config --libdir)" \
+               --with-system-nspr \
+               --with-system-nss \
+               --with-system-zlib \
+               --with-toolchain-prefix="${CHOST}-" \
+               --with-unsigned-addon-scopes=app,system \
+               --x-includes="${ESYSROOT}/usr/include" \
+               --x-libraries="${ESYSROOT}/usr/$(get_libdir)"
+
+       # Set update channel
+       local update_channel=release
+       [[ -n ${MOZ_ESR} ]] && update_channel=esr
+       mozconfig_add_options_ac '' --update-channel=${update_channel}
+
+       if ! use x86 && [[ ${CHOST} != armv*h* ]] ; then
+               mozconfig_add_options_ac '' --enable-rust-simd
+       fi
+
+       # For future keywording: This is currently (97.0) only supported on:
+       # amd64, arm, arm64 & x86.
+       # Might want to flip the logic around if Firefox is to support more 
arches.
+       # bug 833001, bug 903411#c8
+       if use ppc64 || use riscv; then
+               mozconfig_add_options_ac '' --disable-sandbox
+       else
+               mozconfig_add_options_ac '' --enable-sandbox
+       fi
+
+       # Enable JIT on riscv64 explicitly
+       # Can be removed once upstream enable it by default in the future.
+       use riscv && mozconfig_add_options_ac 'Enable JIT for RISC-V 64' 
--enable-jit
+
+       if [[ -s "${S}/api-google.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 
}') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+       else
+               einfo "Building without Google API key ..."
+       fi
+
+       if [[ -s "${S}/api-location.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 
}') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       
--with-google-location-service-api-keyfile="${S}/api-location.key"
+       else
+               einfo "Building without Location API key ..."
+       fi
+
+       if [[ -s "${S}/api-mozilla.key" ]] ; then
+               local key_origin="Gentoo default"
+               if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 
}') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+                       key_origin="User value"
+               fi
+
+               mozconfig_add_options_ac "${key_origin}" \
+                       --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+       else
+               einfo "Building without Mozilla API key ..."
+       fi
+
+       mozconfig_use_with system-av1
+       mozconfig_use_with system-harfbuzz
+       mozconfig_use_with system-harfbuzz system-graphite2
+       mozconfig_use_with system-icu
+       mozconfig_use_with system-jpeg
+       mozconfig_use_with system-libevent
+       mozconfig_use_with system-libvpx
+       mozconfig_use_with system-png
+       mozconfig_use_with system-webp
+
+       mozconfig_use_enable dbus
+       mozconfig_use_enable libproxy
+
+       use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme
+
+       mozconfig_use_enable geckodriver
+
+       if use hardened ; then
+               mozconfig_add_options_ac "+hardened" --enable-hardening
+               append-ldflags "-Wl,-z,relro -Wl,-z,now"
+       fi
+
+       local myaudiobackends=""
+       use jack && myaudiobackends+="jack,"
+       use sndio && myaudiobackends+="sndio,"
+       use pulseaudio && myaudiobackends+="pulseaudio,"
+       ! use pulseaudio && myaudiobackends+="alsa,"
+
+       mozconfig_add_options_ac '--enable-audio-backends' 
--enable-audio-backends="${myaudiobackends::-1}"
+
+       mozconfig_use_enable wifi necko-wifi
+
+       if use X && use wayland ; then
+               mozconfig_add_options_ac '+x11+wayland' 
--enable-default-toolkit=cairo-gtk3-x11-wayland
+       elif ! use X && use wayland ; then
+               mozconfig_add_options_ac '+wayland' 
--enable-default-toolkit=cairo-gtk3-wayland-only
+       else
+               mozconfig_add_options_ac '+x11' 
--enable-default-toolkit=cairo-gtk3
+       fi
+
+       if use lto ; then
+               if use clang ; then
+                       # Upstream only supports lld or mold when using clang.
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang and USE=lto" --enable-linker=lld
+                       fi
+
+                       mozconfig_add_options_ac '+lto' --enable-lto=cross
+
+               else
+                       # ThinLTO is currently broken, see bmo#1644409.
+                       # mold does not support gcc+lto combination.
+                       mozconfig_add_options_ac '+lto' --enable-lto=full
+                       mozconfig_add_options_ac "linker is set to bfd" 
--enable-linker=bfd
+               fi
+
+               if use pgo ; then
+                       mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+                       if use clang ; then
+                               # Used in build/pgo/profileserver.py
+                               export LLVM_PROFDATA="llvm-profdata"
+                       fi
+               fi
+       else
+               # Avoid auto-magic on linker
+               if use clang ; then
+                       # lld is upstream's default
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "forcing ld=lld due to 
USE=clang" --enable-linker=lld
+                       fi
+
+               else
+                       if tc-ld-is-mold ; then
+                               mozconfig_add_options_ac "using ld=mold due to 
system selection" --enable-linker=mold
+                       else
+                               mozconfig_add_options_ac "linker is set to bfd 
due to USE=-clang" --enable-linker=bfd
+                       fi
+               fi
+       fi
+
+       # LTO flag was handled via configure
+       filter-lto
+
+       mozconfig_use_enable debug
+       if use debug ; then
+               mozconfig_add_options_ac '+debug' --disable-optimize
+               mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+       else
+               mozconfig_add_options_ac 'Gentoo defaults' 
--disable-real-time-tracing
+
+               if is-flag '-g*' ; then
+                       if use clang ; then
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols=$(get-flag '-g*')
+                       else
+                               mozconfig_add_options_ac 'from CFLAGS' 
--enable-debug-symbols
+                       fi
+               else
+                       mozconfig_add_options_ac 'Gentoo default' 
--disable-debug-symbols
+               fi
+
+               if is-flag '-O0' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O0
+               elif is-flag '-O4' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O4
+               elif is-flag '-O3' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O3
+               elif is-flag '-O1' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-O1
+               elif is-flag '-Os' ; then
+                       mozconfig_add_options_ac "from CFLAGS" 
--enable-optimize=-Os
+               else
+                       mozconfig_add_options_ac "Gentoo default" 
--enable-optimize=-O2
+               fi
+       fi
+
+       # Debug flag was handled via configure
+       filter-flags '-g*'
+
+       # Optimization flag was handled via configure
+       filter-flags '-O*'
+
+       # Modifications to better support ARM, bug #553364
+       if use cpu_flags_arm_neon ; then
+               mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon
+
+               if ! tc-is-clang ; then
+                       # thumb options aren't supported when using clang, bug 
666966
+                       mozconfig_add_options_ac '+cpu_flags_arm_neon' \
+                               --with-thumb=yes \
+                               --with-thumb-interwork=no
+               fi
+       fi
+
+       if [[ ${CHOST} == armv*h* ]] ; then
+               mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard
+
+               if ! use system-libvpx ; then
+                       sed -i \
+                               -e "s|softfp|hard|" \
+                               "${S}"/media/libvpx/moz.build \
+                               || die
+               fi
+       fi
+
+       if use clang ; then
+               # https://bugzilla.mozilla.org/show_bug.cgi?id=1482204
+               # https://bugzilla.mozilla.org/show_bug.cgi?id=1483822
+               # toolkit/moz.configure Elfhack section: target.cpu in ('arm', 
'x86', 'x86_64')
+               local disable_elf_hack=
+               if use amd64 ; then
+                       disable_elf_hack=yes
+               elif use x86 ; then
+                       disable_elf_hack=yes
+               elif use arm ; then
+                       disable_elf_hack=yes
+               fi
+
+               if [[ -n ${disable_elf_hack} ]] ; then
+                       mozconfig_add_options_ac 'elf-hack is broken when using 
Clang' --disable-elf-hack
+               fi
+       elif tc-is-gcc ; then
+               if ver_test $(gcc-fullversion) -ge 10 ; then
+                       einfo "Forcing -fno-tree-loop-vectorize to workaround 
GCC bug, see bug 758446 ..."
+                       append-cxxflags -fno-tree-loop-vectorize
+               fi
+       fi
+
+       if use elibc_musl && use arm64 ; then
+               mozconfig_add_options_ac 'elf-hack is broken when using 
musl/arm64' --disable-elf-hack
+       fi
+
+       # Additional ARCH support
+       case "${ARCH}" in
+               arm)
+                       # Reduce the memory requirements for linking
+                       if use clang ; then
+                               # Nothing to do
+                               :;
+                       elif use lto ; then
+                               append-ldflags -Wl,--no-keep-memory
+                       else
+                               append-ldflags -Wl,--no-keep-memory 
-Wl,--reduce-memory-overheads
+                       fi
+                       ;;
+       esac
+
+       if ! use elibc_glibc; then
+               mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+       fi
+
+       # Allow elfhack to work in combination with unstripped binaries
+       # when they would normally be larger than 2GiB.
+       append-ldflags "-Wl,--compress-debug-sections=zlib"
+
+       # Make revdep-rebuild.sh happy; Also required for musl
+       append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
+
+       # Pass $MAKEOPTS to build system
+       export MOZ_MAKE_FLAGS="${MAKEOPTS}"
+
+       # Use system's Python environment
+       export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach
+
+       if use system-python-libs; then
+               export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="system"
+       else
+               export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
+       fi
+
+       # Disable notification when build system has finished
+       export MOZ_NOSPAM=1
+
+       # Portage sets XARGS environment variable to "xargs -r" by default which
+       # breaks build system's check_prog() function which doesn't support 
arguments
+       mozconfig_add_options_ac 'Gentoo default' 
"XARGS=${EPREFIX}/usr/bin/xargs"
+
+       # Set build dir
+       mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+       # Show flags we will use
+       einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+       einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+       einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+       einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+       einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+       # Handle EXTRA_CONF and show summary
+       local ac opt hash reason
+
+       # Apply EXTRA_ECONF entries to $MOZCONFIG
+       if [[ -n ${EXTRA_ECONF} ]] ; then
+               IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+               for opt in "${ac[@]}"; do
+                       mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+               done
+       fi
+
+       echo
+       echo "=========================================================="
+       echo "Building ${PF} with the following configuration"
+       grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+               [[ -z ${hash} || ${hash} == \# ]] \
+                       || die "error reading mozconfig: ${ac} ${opt} ${hash} 
${reason}"
+               printf "    %-30s  %s\n" "${opt}" "${reason:-mozilla.org 
default}"
+       done
+       echo "=========================================================="
+       echo
+
+       ./mach configure || die
+}
+
+src_compile() {
+       local virtx_cmd=
+
+       if tc-ld-is-mold && use lto; then
+               # increase ulimit with mold+lto, bugs #892641, #907485
+               if ! ulimit -n 16384 1>/dev/null 2>&1 ; then
+                       ewarn "Unable to modify ulimits - building with 
mold+lto might fail due to low ulimit -n resources."
+                       ewarn "Please see bugs #892641 & #907485."
+               else
+                       ulimit -n 16384
+               fi
+       fi
+
+       if use pgo; then
+               # Reset and cleanup environment variables used by GNOME/XDG
+               gnome2_environment_reset
+
+               addpredict /root
+
+               if ! use X; then
+                       virtx_cmd=virtwl
+               else
+                       virtx_cmd=virtx
+               fi
+       fi
+
+       if ! use X; then
+               local -x GDK_BACKEND=wayland
+       else
+               local -x GDK_BACKEND=x11
+       fi
+
+       ${virtx_cmd} ./mach build --verbose || die
+}
+
+src_install() {
+       # xpcshell is getting called during install
+       pax-mark m \
+               "${BUILD_DIR}"/dist/bin/xpcshell \
+               "${BUILD_DIR}"/dist/bin/${PN} \
+               "${BUILD_DIR}"/dist/bin/plugin-container
+
+       DESTDIR="${D}" ./mach install || die
+
+       # Upstream cannot ship symlink but we can (bmo#658850)
+       rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+       dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+       # Don't install llvm-symbolizer from sys-devel/llvm package
+       if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then
+               rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die
+       fi
+
+       # Install policy (currently only used to disable application updates)
+       insinto "${MOZILLA_FIVE_HOME}/distribution"
+       newins "${FILESDIR}"/distribution.ini distribution.ini
+       newins "${FILESDIR}"/disable-auto-update.policy.json policies.json
+
+       # Install system-wide preferences
+       local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences"
+       insinto "${PREFS_DIR}"
+       newins "${FILESDIR}"/gentoo-default-prefs.js gentoo-prefs.js
+
+       local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js"
+
+       # Set dictionary path to use system hunspell
+       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
spellchecker.dictionary_path pref"
+       pref("spellchecker.dictionary_path",       
"${EPREFIX}/usr/share/myspell");
+       EOF
+
+       # Force hwaccel prefs if USE=hwaccel is enabled
+       if use hwaccel ; then
+               cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-r2 \
+               >>"${GENTOO_PREFS}" \
+               || die "failed to add prefs to force hardware-accelerated 
rendering to all-gentoo.js"
+
+               if use wayland; then
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
hwaccel wayland prefs"
+                       pref("gfx.x11-egl.force-enabled",          false);
+                       EOF
+               else
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
hwaccel x11 prefs"
+                       pref("gfx.x11-egl.force-enabled",          true);
+                       EOF
+               fi
+       fi
+
+       if ! use gmp-autoupdate ; then
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       einfo "Disabling auto-update for ${plugin} plugin ..."
+                       cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to 
disable autoupdate for ${plugin} media plugin"
+                       pref("media.${plugin}.autoupdate",   false);
+                       EOF
+               done
+       fi
+
+       # Force the graphite pref if USE=system-harfbuzz is enabled, since the 
pref cannot disable it
+       if use system-harfbuzz ; then
+               cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set 
gfx.font_rendering.graphite.enabled pref"
+               sticky_pref("gfx.font_rendering.graphite.enabled", true);
+               EOF
+       fi
+
+       # Install language packs
+       local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name 
'*.xpi') )
+       if [[ -n "${langpacks}" ]] ; then
+               moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" 
"${langpacks[@]}"
+       fi
+
+       # Install geckodriver
+       if use geckodriver ; then
+               einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} 
..."
+               pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver
+               exeinto "${MOZILLA_FIVE_HOME}"
+               doexe "${BUILD_DIR}"/dist/bin/geckodriver
+
+               dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver
+       fi
+
+       # Install icons
+       local icon_srcdir="${S}/browser/branding/official"
+       local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg"
+
+       insinto /usr/share/icons/hicolor/symbolic/apps
+       newins "${icon_symbolic_file}" ${PN}-symbolic.svg
+
+       local icon size
+       for icon in "${icon_srcdir}"/default*.png ; do
+               size=${icon%.png}
+               size=${size##*/default}
+
+               if [[ ${size} -eq 48 ]] ; then
+                       newicon "${icon}" ${PN}.png
+               fi
+
+               newicon -s ${size} "${icon}" ${PN}.png
+       done
+
+       # Install menu
+       local app_name="Mozilla ${MOZ_PN^}"
+       local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop"
+       local desktop_filename="${PN}-esr.desktop"
+       local exec_command="${PN}"
+       local icon="${PN}"
+       local use_wayland="false"
+
+       if use wayland ; then
+               use_wayland="true"
+       fi
+
+       cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+       sed -i \
+               -e "s:@NAME@:${app_name}:" \
+               -e "s:@EXEC@:${exec_command}:" \
+               -e "s:@ICON@:${icon}:" \
+               "${WORKDIR}/${PN}.desktop-template" \
+               || die
+
+       newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+       rm "${WORKDIR}/${PN}.desktop-template" || die
+
+       # Install wrapper script
+       [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+       newbin "${FILESDIR}/${PN}-r1.sh" ${PN}
+
+       # Update wrapper
+       sed -i \
+               -e "s:@PREFIX@:${EPREFIX}/usr:" \
+               -e "s:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \
+               -e "s:@APULSELIB_DIR@:${apulselib}:" \
+               -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+               "${ED}/usr/bin/${PN}" \
+               || die
+}
+
+pkg_preinst() {
+       xdg_pkg_preinst
+
+       # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse
+       # does not need to be forced into the LD_LIBRARY_PATH
+       if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+               einfo "APULSE found; Generating library symlinks for sound 
support ..."
+               local lib
+               pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die
+               for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do
+                       # A quickpkg rolled by hand will grab symlinks as part 
of the package,
+                       # so we need to avoid creating them if they already 
exist.
+                       if [[ ! -L ${lib##*/} ]] ; then
+                               ln -s "${lib}" ${lib##*/} || die
+                       fi
+               done
+               popd &>/dev/null || die
+       fi
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       if ! use gmp-autoupdate ; then
+               elog "USE='-gmp-autoupdate' has disabled the following plugins 
from updating or"
+               elog "installing into new profiles:"
+               local plugin
+               for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+                       elog "\t ${plugin}"
+               done
+               elog
+       fi
+
+       if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+               elog "Apulse was detected at merge time on this system and so 
it will always be"
+               elog "used for sound.  If you wish to use pulseaudio instead 
please unmerge"
+               elog "media-sound/apulse."
+               elog
+       fi
+
+       local show_doh_information
+       local show_normandy_information
+
+       if [[ -z "${REPLACING_VERSIONS}" ]] ; then
+               # New install; Tell user that DoH is disabled by default
+               show_doh_information=yes
+               show_normandy_information=yes
+       fi
+
+       if [[ -n "${show_doh_information}" ]] ; then
+               elog
+               elog "Note regarding Trusted Recursive Resolver aka 
DNS-over-HTTPS (DoH):"
+               elog "Due to privacy concerns (encrypting DNS might be a good 
thing, sending all"
+               elog "DNS traffic to Cloudflare by default is not a good idea 
and applications"
+               elog "should respect OS configured settings), 
\"network.trr.mode\" was set to 5"
+               elog "(\"Off by choice\") by default."
+               elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences."
+       fi
+
+       # bug 713782
+       if [[ -n "${show_normandy_information}" ]] ; then
+               elog
+               elog "Upstream operates a service named Normandy which allows 
Mozilla to"
+               elog "push changes for default settings or even install new 
add-ons remotely."
+               elog "While this can be useful to address problems like 
'Armagadd-on 2.0' or"
+               elog "revert previous decisions to disable TLS 1.0/1.1, privacy 
and security"
+               elog "concerns prevail, which is why we have switched off the 
use of this"
+               elog "service by default."
+               elog
+               elog "To re-enable this service set"
+               elog
+               elog "    app.normandy.enabled=true"
+               elog
+               elog "in about:config."
+       fi
+
+       # bug 835078
+       if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+               ewarn "You have nouveau drivers installed in your system and 
'hwaccel' "
+               ewarn "enabled for Firefox. Nouveau / your GPU might not 
support the "
+               ewarn "required EGL, so either disable 'hwaccel' or try the 
workaround "
+               ewarn "explained in https://bugs.gentoo.org/835078#c5 if 
Firefox crashes."
+       fi
+
+       elog
+       elog "Unfortunately Firefox-100.0 breaks compatibility with some sites 
using "
+       elog "useragent checks. To temporarily fix this, enter about:config and 
modify "
+       elog "network.http.useragent.forceVersion preference to \"99\"."
+       elog "Or install an addon to change your useragent."
+       elog "See: 
https://support.mozilla.org/en-US/kb/difficulties-opening-or-using-website-firefox-100";
+       elog
+
+       optfeature_header "Optional programs for extra features:"
+       optfeature "desktop notifications" x11-libs/libnotify
+       optfeature "fallback mouse cursor theme e.g. on WMs" 
gnome-base/gsettings-desktop-schemas
+
+       if ! 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