commit:     b5448a004c202c6bd69f3999db480a17537d9a8f
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 19 07:45:41 2023 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Wed Jul 19 07:48:06 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b5448a00

www-client/firefox: add 115.0.3

 - note: this is the ESR version.

 - a great opportunity to push 115-esr into the tree as 115.0.3 only contains
   Windows-related fixes. This allows syncing 115+:rapid and 115+:esr in the
   tree when going forward for any ebuild-related updates.
 - pushed as unkeyworded because this is still a testing version. Keywords
   will be added when Mozilla encourages esr users to update from 102 into 115.
   The next major ESR, 115.1.0, will be package.masked.

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

 www-client/firefox/Manifest               |  101 +++
 www-client/firefox/firefox-115.0.3.ebuild | 1406 +++++++++++++++++++++++++++++
 2 files changed, 1507 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index d5abc2655cb0..6545799e7044 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -198,3 +198,104 @@ DIST firefox-115.0.2-xh.xpi 429442 BLAKE2B 
ab34436e2c2c9dcde04f38f638be7cdcba593
 DIST firefox-115.0.2-zh-CN.xpi 629741 BLAKE2B 
7ac24b4ecd0c9d96ec0fe8a4e068845295c43104c50077e0eec7ece976b787042e762d1f2d08045d4888cb4efc77b96457cd448a45312c05812511090e000017
 SHA512 
6d1cd6f0815694e3f6dfcb10ac7082752f479ac5e5b6ae6f1cadeda79c531dd41114e5ebd2b8ff987a8e136d9311ef77fe78c1992f983a774937f0e65e3d9a2e
 DIST firefox-115.0.2-zh-TW.xpi 631509 BLAKE2B 
70e0c60f846c7ec864b956fcca6c209169abdac3e791bc7e60ce9c0c113b8367d49f699afe4938d58fae1c0fff5667bb01c85444ac6078d8fedaa6826e76d617
 SHA512 
a2aebe7ef10f371a56a52c29cb878274135cec914dc639b29f9433a462cf95e0b88234098ccd2fdd426f2e39ac8ae9c9504e87a55612d0e6e02b52738dbadcff
 DIST firefox-115.0.2.source.tar.xz 506385780 BLAKE2B 
ca602d102f2b7b7fc7bebb6ca4b21e548d4542727da94410497ad6774b6dc7a9eba778c9b6e269beabdbf647e3447f621103cb68fbcac77c4beca1829cbfc535
 SHA512 
de6ce8a2512e862c69a7d5c557d6168498d0d40e9c4b54b775f81c444e863a64c43130d57b51b360db4224c34b64a93f3ad263441caee713243b97750ec1eb4b
+DIST firefox-115.0.3esr-ach.xpi 469318 BLAKE2B 
c7b9e27ead519eed6c84793a6f2ade26ea6c0aed3c7e3fc578a95925ca3b15e002a528aa1d61514c04e45a90fb92f45e1106bc29298149f6bfe88a05d65a4d17
 SHA512 
a3f2440af040e861bd249c18acf7d751f18b1d07b7136059c8909839bb05a3b8598db9c7fbb4ea226d66e31202d097735ec577439ebc714d6a8d83a6017d7be1
+DIST firefox-115.0.3esr-af.xpi 430121 BLAKE2B 
9f11d4ce3aa6c1f643d22d0a0bcfffd8726588fbe6592294f7e469d19bbad2fb1009ee7fbcb4d884f70919c1c7f6674be6e964b370542cd7bf1f193a56ee267f
 SHA512 
22ee45b40393e062182817eb981795c20fb7c2dfa755cdd29e65789cc8b7dd34042160ddb53cc7a7da41c0d1f268db4e163cf17a26d26d61a38fc126c6dce663
+DIST firefox-115.0.3esr-an.xpi 514834 BLAKE2B 
13572d214b69ea23264ffb2fc6827d7d6c4eb526354cf0aed8aae5be291dfd38cdc2a1131ef1342d5d267b81ecf5c88ce29581189963fd316bb6005736aa577b
 SHA512 
4fb02d7249ddd26b2b68c8a4407c008993f1992e0485c8406958fe946e0615197d2c03291c168896f3dca6c69a4df65ea08c2cd33daaf51612537936bc610124
+DIST firefox-115.0.3esr-ar.xpi 583863 BLAKE2B 
b30f7843ba1920b76a4918405d902507b2cfa8770618aed2c15cdedb016878f5059872a94092ab9f1d1c6dbbb4de982f9a2256e005f0ba8cb79a1f024c9c3548
 SHA512 
1fc471381a689deda72cefef9ec05d553b10654333770cb07c17c05951bc6b3a439a6034f4f7df761f307e11f93f8f1256e7d19c90ab91d41ba09bfa1e28ee25
+DIST firefox-115.0.3esr-ast.xpi 496704 BLAKE2B 
146aabbe6e88b775b117f37428718c310bf64de25238f9c4d8faa193b28a81da3e939a1a88b5dcbbe94b42389e63612f2874a629c698505ce9cc4e3673dbb98d
 SHA512 
435a7908c03cc8d14506a326f1fe9add184eca38297636c7c1b6a9a75275878907c97e2899d91146e6397a385ea7d9f34bd2e482c8d1a0cbb03e675aeb4242c6
+DIST firefox-115.0.3esr-az.xpi 501993 BLAKE2B 
9b5253f6a4a822ca256ecd3b030346663b233d8bbbbbda02198e6fd0674db2d4ae8c7258929fa5670a43a8b10e1b3200d15e9bcb76fe84e66646a376854fc5a0
 SHA512 
e1f3c350a0bff7d535b8ad0163c877bc34aab44a3e908f315cbf372a5ca3ee07130c18226fdada91c0e66229f0602fa2e07a4891166adf43279f29d3eff6beca
+DIST firefox-115.0.3esr-be.xpi 686955 BLAKE2B 
b925726abecd31aceadbc7040d41bed570de880705d89d91377b8af4577d542adb1946a34573519e9e97eb7603e6793f76fea8a03beedba7e9a87264ac7f5861
 SHA512 
e015a8fd8b773f97b2b86776cd4987fb55c173f3166935592d787c6da6c341fa7c736f35418c0a0ee073ff8a8f4e6fa824d2116b39987d19524148d9ec42736e
+DIST firefox-115.0.3esr-bg.xpi 600451 BLAKE2B 
924db1820f176c4215443db0f3e9118679bb38604f196be6fcbff8fd7ce6ee2ebeb5ad6b4f879c11bb2a46994927b4108b2a6af5aeb1b048688d9e117658405c
 SHA512 
b53125a26f775767147792f4034b337aaf97431ee7b0687abcd3ad67b534c49ad2cbe374edeb996c8c9a1875526ebce6756c28855a92fdd2eb5fac7e64f8f901
+DIST firefox-115.0.3esr-bn.xpi 593732 BLAKE2B 
9a2a45c937fb29a1eee6ebf739134ae3f9c5317a134e117e9018996defbbb06c540f7a4a8557b7a3fde92729fa235a043c55c9f26f011657ec08a5d999f81003
 SHA512 
c3f36bd3106af4184f3cbe10625686d937084aaad7cb3558fbd2d04da01e964cb7b134f1919ec1d738988a0317d17b898967a8c96117a9a91863bbfaa78038c8
+DIST firefox-115.0.3esr-br.xpi 565387 BLAKE2B 
456ecf424bd7c4d634d6264195074ecf9eaad40db214df244bf773a7d584992dc65d23ddc7d8c86354eed943f96513e66456e8ed939b4e84f1aa36088a3ddc81
 SHA512 
d6647abb4b2a94851292465bf9efd7b0669e8ebd35ea46e79062f89b625ec2033b7f4b2bf66bb23cf9f438419b415d5387b2f194b7b041fbfef017cafc34b748
+DIST firefox-115.0.3esr-bs.xpi 474035 BLAKE2B 
c755a60950e3028cbf188445e431d289f49e6542e2c635b931224df94190ee9ac0d99000c92bb4b6b8cbd75f660ccd669c237bd560e13f1536ed8bc68b7ca6ed
 SHA512 
a198c4d9afdf09ff22f0f631c0c7d8172c71f784a424032c44652f9cf182966391633c66ca85d975e9a10ce6f2b473d8a04002db3c01cc6c423dd0a740723464
+DIST firefox-115.0.3esr-ca-valencia.xpi 554621 BLAKE2B 
0bb1b25803bfceae36e7f3e42db38594b30bc2455434c7b9ede5fae11f1eaede79c7edfe01067944e9851e9d827f48c9818c12e2c3ccd7a7ec7367801ea8bb2b
 SHA512 
6551657e9850638bfbdf285d4dad01e42c20421dab8fca05c11db9de3b16422962348f4cff264a1252997486eb08a26b654dbe373dd9ffc57f979435c162dd9e
+DIST firefox-115.0.3esr-ca.xpi 576650 BLAKE2B 
4613ddc6c179198c7c7f3daa5756e46b5986d6c022fda30080933883ed76aaa91e5b44c3069c7fc2390a80abc6fed41bf7ed8796381e3a301b8b66a67ef087e8
 SHA512 
a44a36ba59bb7eedf191126bdc59b10cd3f4bb461e7c47dc20a1b40021fe63229809b7a531ff01197ccab2b26ad3cb84070e4a95caf6088903bb4c4f2f24e855
+DIST firefox-115.0.3esr-cak.xpi 599845 BLAKE2B 
c4534a93ae0af483e434c3aeb730d27483a5ac5fa36f6aa8dcd42cbb29a2c6b7d8ddc3ed4feedb85dd34e62337dead681d9cee99ce2c1ca1b7328a69c8ae0db5
 SHA512 
00cf06c33e5dce536d28cfdfdf5b1d8a1d20a701bfae7651225b9d8eeba4ce8557ea3c171202e5b4c02b0b2f77e71e955e54de3c6d27920e68ea2566d4afb395
+DIST firefox-115.0.3esr-cs.xpi 627675 BLAKE2B 
5289b54eb37dadab13c1b552f6c2493940f6092d8d0dcdb2730e37b3e268182f29af9f448af0e4ae4db176a3029e9331efd465158a5468e9e3c616e2a1e1f264
 SHA512 
5a06392afaa07221587d4865dca736e269486e3428c28b3040f05397abba0eb4184fab3164d28849351047c9b17a379358804c675057e3920afe9f717634dea3
+DIST firefox-115.0.3esr-cy.xpi 598158 BLAKE2B 
2029c0fbb916bc1eed6b7fc121c2eb5745099c7aff927f860dba068de03e28c2b002f652f5d2cbfe25e7ed6958a0a288e8e166bbd2963d9b796b435ca174aada
 SHA512 
0340bdf23f95470541a9f5f9d4458a6a6f06763ac0d98f7e3af3d648ba570c976ca95956297af30c9de18973bc6d5f0f3f483881ee8ebf8dee2d294be8630fe3
+DIST firefox-115.0.3esr-da.xpi 587169 BLAKE2B 
5677d48c9b4e0be9d7290e9d6c2523cb3479cab21a3b427ca914fdaf429b487ee6d2ab37d42c6ceaee01d17ef8331aef2130c93edf04792a7940d60a9ea600e5
 SHA512 
04456886f2f9a4770037305b1bca0652c692ff0f66428dadbe0068b4d5f0252eb19d736dbefb9e05b0ca24c3a7693378e05e930f65122d14dd74c3c517f12f97
+DIST firefox-115.0.3esr-de.xpi 608950 BLAKE2B 
3679f5cc64be60cbc4a48420c92d60045e10ffab3145d70f05db6d029132be4140adae2209fe990a0dcb84a878945dd0b25e2b23427fa35c885cf321307433be
 SHA512 
b4a6b271afeb49dff6cb16ed972d9e7602b7c0a035be6158e08f1f4cb7bdb7d63c7af7803707c646dc73a27d562c857d44e9ef7158842310e6fc41122c1baa93
+DIST firefox-115.0.3esr-dsb.xpi 620443 BLAKE2B 
623131b36d4fa732a132a79c191299b4770aab0d6f388285cd5c5f43319932567bf40d6c35271d44b2a3bcf0cc496630c3991d16e3941451d03d169edcf79127
 SHA512 
7630fca5fb534c553ce7e3b8d3801c8ebef657ed4ef5b937014930b5532c27939315e4da814d316a61316c033119842fb7d5d71648e2d7fd63609d0df54390e2
+DIST firefox-115.0.3esr-el.xpi 703008 BLAKE2B 
ea21d3325cdd8d16f690c66ecd3c4f34b6b4feb37d117163713e19c5772de9f5b5f885a3df9c81ed9492b52f48e61ca41a5e76cb2f11276b97fbcb50c0308105
 SHA512 
a1172bf03826650ef76a0a994a9887eff0d950e2375f7756d7144112dfeb4d1832902ce40e1d8832a038fce968fbba622aee0596d1752a7d8afc29fe1195368d
+DIST firefox-115.0.3esr-en-CA.xpi 551503 BLAKE2B 
58d02c743b6e9a697a92eb65487d8de734076427b3a7f6650cb69494c7aecab7e82dc500aa6b3e2879a1fa6c17d8d579538b15d10d84f497ea52f229f0d3852f
 SHA512 
a71912db8f7fd6d84963a3b4e61a6d4b4a5f5f7de1e3d6384843aa465bf8dc8751624bfec5df34cc7577b2ec98335264e098757a7059ca4464f7094c8253f73c
+DIST firefox-115.0.3esr-en-GB.xpi 561374 BLAKE2B 
ceab6ec4e1ef91beada1161a675210a307036d9962b910657319f28dbeb2050692e753fa5b995d0c224f04d010ef94298dc48d7e16a0f417f5e4d344e3019c32
 SHA512 
dc719fe3f05cd08a1dae37740ac0fe895356a5ebe401253d731e13067bb09506680b4ede9b935287fb228c6857a00ca9d5c5597df64a3e78dea11803b3020cd3
+DIST firefox-115.0.3esr-eo.xpi 583951 BLAKE2B 
088fd222ec709d3ce8006e873e2ed6472fa8e47f9b564e36cb709169beb5ce9a5d3562bb27384c7e42d2b196483214de33e4682d3567d6d236e8cdf9fbd1b585
 SHA512 
9a38faaa7e40abf36766020c5625d55add98deaace357c5e5e209b16a02d55e45d087bef3ff383625213f30f9790491e2f9d2ae44f694cab1d2d33ae7fcaab3b
+DIST firefox-115.0.3esr-es-AR.xpi 602628 BLAKE2B 
27f6ab44b4ad5d14e2387c793422352eb40e180a29cf43dbe96fc70ee7c7e2b7ef7b9c6b5bd83a74cec13d79bd74bad4e5c9a79e249db6d1cd948f0e58739196
 SHA512 
263f6f2366876867a7e9c548d92d84f6144cac31bc2cb99467c5f021499d7daad49828f634725b069461bb8e9d3effd2cd2790f2b0162f1d3d0e54150e44f1ff
+DIST firefox-115.0.3esr-es-CL.xpi 601289 BLAKE2B 
f86d475c1d72c5ce59a2b1d98ffa263bb561d9dc843e45ebd395a887200ad79e200759f52a51bdb6b503cd4929223f2fdb8f057e6d5d57cf7be699f4ab4ccb15
 SHA512 
473c2eeeb5e2a2488ce8473b374be3663be4e2508d847fd1d2a7d9431075adb215a7d8fedfcbe64abc0137334b438e24334e967a70c4867ff7a900e6f806671f
+DIST firefox-115.0.3esr-es-ES.xpi 595242 BLAKE2B 
f2fdd917f3efa2601e50c44e5ef21416f68b35229bd44e62d98bd5d9265ed00c3136330db6018fb7fdd1c5146a0daf412a6822fd2886d2092f0fc55490c9e338
 SHA512 
e8d1152978a654bd9ab223b313a8da87fcd3c2bc338c29d8415b07dafd2c6478af28149b9ee7a2e01b3fb0b7074fc66db663596d60446ebc983f2ab647a4765d
+DIST firefox-115.0.3esr-es-MX.xpi 600972 BLAKE2B 
f535e9295cf28bb74ab7d096d206b8eeec4b35f1e4782ac95286849be7afed5f06453100d8a6304d5254bd01f43383e59947a3cb323243886c97587a5eb1061e
 SHA512 
39b4bfe48c55ecc09b3ad059a5be7eceb0d78011717704d6d515202c9da3c52b5691a6c4cb9e5043b9f00ecd291fe573e8025210f47f75fd504e8108bdca61f7
+DIST firefox-115.0.3esr-et.xpi 548996 BLAKE2B 
b74dbf3b395cdc8da424ef4b13cf5939fa37db457ffe3f60b111117335c67fabfcc6bec32ee32d6d8c779783075cd5195c992f91e9cf7b60c4e60434dd66fa64
 SHA512 
b14b703dc60925511c70e5021529af9fa4ab678a84de6dc308ea4573461a9e70080950e9e4699b3d0cf326a2fe2489249b261b4c9cf6f675b38c619cfacaaa31
+DIST firefox-115.0.3esr-eu.xpi 586433 BLAKE2B 
517ac07f1475d658473053d933a663659ae7dc34f0908b4630a184981a0d1cfdb38a0d1e7ecbc5123d72fe7899b0fb75c6d69332c5e80b4a945b6791b2ed5308
 SHA512 
700402a498b5d372782438536d4255f7ca2f62efabd9f3a21f29ebe93c23bd49972026243491e20ea1f0ea53588c71738d57babe9b2ea686473c2f03ca51d6ac
+DIST firefox-115.0.3esr-fa.xpi 601515 BLAKE2B 
eca73872e4f06986a305a99ebaf344881f0913b92c6a799a7fe180f47d9feff76f12a51a4a5337568e1dad84d59af2589b06657ec21a4fcab601011399497a30
 SHA512 
00644309bc18cd27cb66e431d47bf944fe63767125c2fd877ddb807fc0d832f4ae76c2104355dc6a042051f0f6f42f31843a73e23ce2f94bcf94b6d97dd4b521
+DIST firefox-115.0.3esr-ff.xpi 485923 BLAKE2B 
b754c3b3eb8b658e1adc5f08cfbd73103b71604f3842ef567fb9a802a64c31ee270fd13ba207db082ce1cbb18855fa9ee08019e96721c0c660acb059a5ae835d
 SHA512 
d455e3bd40eae72249167474db27b933e6061d531312d1e619a1f468d6394bb1440cb5ce50e297fa2b1fbacfdc6d266f9797c140f84a3a69c7a0e985314fb64c
+DIST firefox-115.0.3esr-fi.xpi 586036 BLAKE2B 
9c510558d53058a2abeeed065679a1e0fa722edb035ced534a1f4135801073ea2883a1794ea6b7c393feaf2be3a2087f30a8f916991856377085a9191c5c495e
 SHA512 
c9afc1ef0d10623a32d706dd81d131d24f5459766e75ad5018b742a56a8bc30f343ddfdd2e477792a923378aedbd8720a2adb4b9e50fa932ad2e33273fd386bd
+DIST firefox-115.0.3esr-fr.xpi 615065 BLAKE2B 
48fd471b9b31f595c5efcfc38ce697e8038b851f77b8c5209b7d6f14841f3493bfb2bc0e6a0ff0f333ec94133c37e333a8333dd1e9898c38f18f35d4a19e8c20
 SHA512 
f6f62b411d5d51dfac8b032aacd4904039df32d4e62b4b2230d3025505bfa606fab18740ff9046052d8a8d4424e6a77ab8557df5a9ad47b6b1303bb82698d9bf
+DIST firefox-115.0.3esr-fur.xpi 606887 BLAKE2B 
2fbe745f6a680b62c9eb66ffc8c2b691c96a6635d1909753d2aef4c86de2f32fe97b39c3522de53f51d841f500595cad2e438d91f4b5e7f1c0d35a8918176076
 SHA512 
5a30b379dd506e74bf344eb98c37fee22d58fda1b0749246615737e3c919ae1ae17d249683a6558367a4473ee3b29a66926e475b5c94c7c8bc05c2d7523ccfb4
+DIST firefox-115.0.3esr-fy-NL.xpi 598086 BLAKE2B 
6b039818e0a408ad77f6354dee0b32f00772b0e51dd7c52e8cbc37187af23a1270ce9a721683069f436ed4673a6446eaba7b889fb51d6a5ca4adafbddfcb49fa
 SHA512 
277581c4a54585f8d500e7db5dcd9e1cab425216fc9d60b8d321604cb583d917112146e2bbffd249c65f75683c7e811922266bef6bad59ffc7c4e28b86406b8d
+DIST firefox-115.0.3esr-ga-IE.xpi 482381 BLAKE2B 
a4364e729e8d162d2226808da4e90c4fa1073535b3294d2d3e27bfdb6d59f467a7bc82aa000829bcea7ec487a2b07e8a593b4fa4a38b27b0d42153a77f1bdf85
 SHA512 
f82869948de039ceb86f036cfb715cb3ec651adf7ed007155e2385e8f359842992d445e7df1ef8dc96cdfe97792837e8b4b9d4525b3a7bea24bd705802a65c38
+DIST firefox-115.0.3esr-gd.xpi 603641 BLAKE2B 
94606c376d41b53d2094c534d3827ff94d8010178174e4e3d1eec6beeb4655e59204ce2328412da1461b8fb77a22f6fefe6a78b1671ceb4a591a054c5a7397ed
 SHA512 
baaff3c44f8a62649219b302618a7cbc36de265d2585c7e9ca44696eb48ef437240c2064a0201fa42b81a59e205416ac11c3633498d2c3b4ebe43abd7cdd7211
+DIST firefox-115.0.3esr-gl.xpi 598445 BLAKE2B 
8f2ecb77e657e94a2431c8528265a69a7e4e8176856ade3587389707c231293ad92064decfbd101fee4c48d8f9e4d02e0dd743f1cbcc6639c6cc0b8c5f424463
 SHA512 
372911c9b7679f2feb2bd7bc7df6c4c61a32aa0f7bd0f149db6feba3cdef038f8048337fbd2cb0b336c4b4e671d760865ac90a365c0bf3c3bb0ace7d488d4a78
+DIST firefox-115.0.3esr-gn.xpi 612062 BLAKE2B 
966023516dfc6967226ddd4b35626cd38867165df79762d09ca09796731280cdc628d7194a7838a9a30fdefa48f5a500855c7232e5412ec38792062737fd555b
 SHA512 
089473a84c5138dc270326cebb5c71996c99a346eeb1134d2cad73bf1d97a5ba7ed223256d8d1a178eb69c15fcf9766ad9a5ec0461169e15e9d95a42db063972
+DIST firefox-115.0.3esr-gu-IN.xpi 541878 BLAKE2B 
e0cff6e7a291e40f211a7920b2a857d9021e63c850f0f2feee23ed6680a3d7ac8be625fd7d43ec55e4548f4c678ed5663106fb2941a8972570fba3eedf75e93c
 SHA512 
1adad789a7d43703b42e8224b4b87c4bb1a40d07f70673ad26d2224c41c03ba598019851a7a254b67ad53a3d7ef8da9d1be84eee9523a4df55225790092f5a92
+DIST firefox-115.0.3esr-he.xpi 608005 BLAKE2B 
9480f5cbd806109e6317d395a8fa670eac61953c795756143fb251d03bb279255c410253f070ee516c7b4b04696fd85c919ed3108f056ec1cfcada249b647cd3
 SHA512 
4c24da2a0f236d1da80da65d03b96928899bfb7639c679f747697457a19d8c66b84ce640293f4c56d467e8dc1ff712692f795d47f99903f89af64e91df8f58be
+DIST firefox-115.0.3esr-hi-IN.xpi 571177 BLAKE2B 
d2bea072955a5888e068a627afb4e703eef8738296c9937eda4015fe36c33dc1be1d9a092b703b03b0fdf34309c41268f922f3586bbba0a96206eda88b7edf1a
 SHA512 
870b44b58c3e4f81ecec36603fc02f81c66e6b655473d4b293885c33509c65acc287464fa9da19eb005eff68fc5a8e864012ee584fa6767524bdee9aa38752ea
+DIST firefox-115.0.3esr-hr.xpi 564498 BLAKE2B 
f98620e33865bbf251b696d47a229137da2e1dc9a821c3a0820a214efa84a20a26743103b7402b88a7da2697adb6ac48a1607133ba9b054ee3004c9faa2c5ec0
 SHA512 
9295fc145b43ddc610deae5b5a573e6e320b98e9ee4e7a61b5be2f27a4c316ab5a534ba450c7d47d8d4e60b1079f0f3ed4997e1fb44be7251c84f165a5d3b927
+DIST firefox-115.0.3esr-hsb.xpi 620457 BLAKE2B 
b1195dfbc3cfa85417d8f327f1664d23510332fa698ea17a1abd38b51f0394e88ef807439cee674907cec35b058dde76da8c1ab603e7fce7d5cec2325db3615d
 SHA512 
e8e3cffcd46a576c6ef7686cc3d92a53b39c4534ece4ecb53e0b8d340cc4e61c6e4dab2a1a100fb4367441b62d761fcef85bb4c5521c0658dc0918b519b61158
+DIST firefox-115.0.3esr-hu.xpi 623865 BLAKE2B 
2a49a8f1200c32e250926955ddd90f11556f54c99a47df7da83c557fbd06988cf76e7b2914cf09aa642ad4f67a3d9c825e2f9bf1930ee20778f7e070161f9c86
 SHA512 
1a5792870e9566afcd7035d39b19cf542dfa390a847a89777ff2c1a77c9f90a1579886b32aa1489ad1a6e5fb345bf6d059c937e40cc2a0cda79408f1e9448360
+DIST firefox-115.0.3esr-hy-AM.xpi 614931 BLAKE2B 
728ff2d6fcfccfcace1e4bf6607a705c159b67f82c4dca1e797d5a701d78ea9c8e2566c5bff72dfbdea651c20f346c72d76f6c2a71f86d9e51bf3a0c699d2898
 SHA512 
ad94a0a3dfa59673df1036cace122baf3586efb17a291ac3c586a8d1534dfb7856ae610b4a4b314c8392feb368d8f62b48b7ce7c12f555ff5f69a98cd60e755b
+DIST firefox-115.0.3esr-ia.xpi 585635 BLAKE2B 
ff3cfbd56386a137fb97f5a311d4ee46444123843c396359fec46cecaf38829080cc3ac12e1dd9a60ce075f75af611018fa43d97b841ec80550fe9d295cba9a8
 SHA512 
d69d1a68b89834f599157a3de0e4b5fd46a968fd0568a20ba8278cebecb0ccdaed8f90a73920421d0894962a2d3eb3f04d0306d0ef997d3fcac81a18b1e2830c
+DIST firefox-115.0.3esr-id.xpi 571363 BLAKE2B 
3f10c849999ebf984c3f265293be461f9fe9c293e6131c8b46e79692ffc9d7bf2854a7d8ec499909b47fb8a3b828e4dcb5c03e23a0b35cabd31e2fcb1630bf66
 SHA512 
0717b4e1b4655b8f38dc5d9dc7df2bdf57624f8a76607cc2739f6940da87f846af633c4f6bbac4bdb0d329ace982e6e5bb3725abfd50ad3295cb71652f0e3c44
+DIST firefox-115.0.3esr-is.xpi 593516 BLAKE2B 
52557a549b0eaf1f0c6281d64dcb837b90148056abfa86570a3f91e2bdb8a5d06855c7a31d1ce772bd8f819cd5fadcd21bb538497e2f38ec0d795387773bcc92
 SHA512 
c285fc9a51aebb438ac4a889f8fc94181c86973704bc1b385a9182fba9b241815bcc64472f4d08925c09d25553447d14ce2d25627b0f01adf6ef4a5f13d60e90
+DIST firefox-115.0.3esr-it.xpi 536396 BLAKE2B 
2f4e7445731b1c152540d39a9780efb2792c2f099bd0d184f65484d4360ded10d018b599ff6356e4de5b967c82b0ac4163d11849c4faa55d9f1363ef65ae9d7f
 SHA512 
53ed310502c09e6df19dcef0b663a269409049eb5a83fd138f5ac0fca184b7ee55167a7c8ce11f8dbda81e78a020549f4a86b16b8308adad728d19c316d6e4a8
+DIST firefox-115.0.3esr-ja.xpi 648086 BLAKE2B 
b7b80e399cb44479017e6c6a85628e893b6cffc00e1a2c5a185b433a414e9d1ec3181e379612b815a0bf50d308e1488d14f6f0603cd825fb941d6e7d35f23429
 SHA512 
b3c3450833a4efc60096ffa086c144bfccfce073ff9e290ccf0431d344409ca560b5b6fbc8541adaf1571cbe8455cd5944e8a612b28ca3a94535bb4469d4bde2
+DIST firefox-115.0.3esr-ka.xpi 651358 BLAKE2B 
a7b13dbfd2e71f4db747a3e1678c4566a090b380e9bf739b516dfb2d4fd0d0e49dce50075cd86e4402c87c45f4db7fd696b01882449733ac010e5e01a9d1f118
 SHA512 
ac261dac98ac53ec5553f471700deb12661d764887c928eecdf5af9e9d8446e907be2402e166ddb2d0c2a1807f48a9a9ac61d1895939f68f06108d2e5f94bd37
+DIST firefox-115.0.3esr-kab.xpi 598570 BLAKE2B 
4c9d2d70e0699e19caff9ad4a8f928a7cef97ba2496ac90d0b5c0c3ffea08e8d34256096765299681baa9a634b22e3d44d777479060bc3c2e6db8c9bd06a4052
 SHA512 
26ad8ea214370fa69396538dcb31751d24836531da7ecda12d04f1545882f4911c6657c496bb6b86788fe51cd4997a204575b16f802408fab8797c7f02aec36b
+DIST firefox-115.0.3esr-kk.xpi 674085 BLAKE2B 
8513f32511b486f55e9afe3057449897c6ddcf21cbd6261fce1b7345adff5ceefaa440e1af890fa7bce637292f8a5697775a38b0bfb1b304f33c4e51e92f11c4
 SHA512 
16957a910bb05617a8d1a69b8f59016db907a8ed4621edde6e3dc08aa3bed85a1fcd4cbd1010b595aa2c9fb60d8ec7cff01521fa7a4c82e8f1db6c15b46b7e2e
+DIST firefox-115.0.3esr-km.xpi 543690 BLAKE2B 
32fa9cf367375b19a6a9bcf21330d86fb3d118b28b127017c9bc09386d7162d6f38a354c69355fad2a8c051e35823c9a355018c963ce96360ada39f0b8fa59e0
 SHA512 
c4acf20334089a32ab94d705f1715f7858237fdb339d0b7ce6dd49f78e3d6baba510942c40f3862919ea4dea76f4b0bbe7cdae90d0a44202e1166241ea701249
+DIST firefox-115.0.3esr-kn.xpi 508144 BLAKE2B 
5a19ebb8e6c3960f2704cd699a6c5e0447732ef426897bebe619f398a9eca9503e6a9ff42448299a8c8ca839ad0053c038f30a498c0bb8b3fb30c6eb1574827c
 SHA512 
2249a6200ea0e62a06866c1ac7d448ce75baa157ee5039bfd9c21f036b9e1dc1d990d170b9633291cbda972ebd2a58d41f7b27dcd35db2972a900267d1557e7f
+DIST firefox-115.0.3esr-ko.xpi 634982 BLAKE2B 
4fe316537e57474bdfd2f52e61ad92bd81ed9c71ba1afa62fe91609dc5ad185a4e56956f5c241c2b45318b579d2a717ce051febbf97328ca05bef4aa0a7717c2
 SHA512 
cb53ece847a7193c32e609e30e16ed48b2f81113feafb56a0f5fcd5d42eebd41ae788d3f207aa8e8f93857143404c32e64adce22b999bde359c6851504b86ffa
+DIST firefox-115.0.3esr-lij.xpi 493484 BLAKE2B 
903733817910571d2fcbc8ec519ae2272434d52cd112c9a4bc5e920044ed426f75b466c1bd76f1f86e72947675183870287a2bee76d81ac8804a88411ecc810a
 SHA512 
379c8fbd5e0b1d703974b9ff03f3df834a5c2dc5c660fe4964061714160bcfa4facbf374183ca913c4d485d6f710272c171f5c2c87728a0ac3ef9a400818421d
+DIST firefox-115.0.3esr-lt.xpi 583774 BLAKE2B 
98de3f4588fdd8fa48b4a70f58cf72ea1d323d656f3770b3f7997eab95b0b2af53463ac70d5036b5960d5a7d8185416ae78a0d7ad245759a5e7aeddb516fa95a
 SHA512 
f195b207b466910d7552235d882d1c005eda3606bab52a636f39adfa1101401eba7800b3b08edf2649d5cdd5081c635e8df336e5198fc08499178fd505fac6e9
+DIST firefox-115.0.3esr-lv.xpi 481446 BLAKE2B 
40413b99d34f754940e46969ff78cd30406c540421a3312b4a8a320c4af7c434ffa81ac3608a5512a14c358de4441ba2bc779c1248201a5ff9044e01db0bc993
 SHA512 
a212abf17bc2f5b7e0dc9664dbc4854c53657f60d525d8505147acae9fe416c945b74d2323727d65b434c69342bc786495be7ecb1006a852c6fd876081e47039
+DIST firefox-115.0.3esr-mk.xpi 496393 BLAKE2B 
889c9fd309809960b64a0b77b61de8bf0e764a30df31fb8f018621e74b0490a5d3a29e4b2796e29bba535b6cb251d0ba5219e5ceeea3be5422b09f2cb85bb847
 SHA512 
bf0ee4deca48cac23d10d6598162cdff6ad95a98241fd99bb2ee5a8fecaba6a23536ba09e8bf23c3a06704f92f45eaa18d51745608572e3f122d78ace52aeef3
+DIST firefox-115.0.3esr-mr.xpi 544673 BLAKE2B 
1373ef8d8398efc81a069ee9fc2d1bfb3a92ee771fd595e76d48d7be685d9ba192c392e29b32c1ea2dc885994532ffe490ff03e76877b07d5f24a99b12dbfa4d
 SHA512 
43aec8d9b153658c005a69692edd41a9c13564b43e9e888be67ac3def1b25a1b8b9aaece14e98a276cea144522bfba6fa761804287582993e2be3096237c6219
+DIST firefox-115.0.3esr-ms.xpi 461874 BLAKE2B 
7e235a806622bf4a11a33093fc3a763db576fe8cc7d7d3fed08d1265fe6b5b7f694bbf675b3a1066f8db96bdc701789a949e759561a218a974cb4e01ed24fb70
 SHA512 
1a3693950abab6996758ba1e871419b235e7f95e4bca1f97dd69f9189e450807dbb8b1b0aafdd301b784b21e6fee7d8e8b03363e09847ff6c204da6cfe67291c
+DIST firefox-115.0.3esr-my.xpi 529049 BLAKE2B 
226443ccc74ca65d6f0b086d71e59680ac19418b65a2efeb30910e570ef44c6a3aa8172731ecdb610fe9c0b1aea194c9fb9944da6c09c2d9140d94bb3e963368
 SHA512 
2f44aca360cd4054d1f888350d703fedb2454ddf48e9b2a9716ada74c54cb166a950b97befaa01126687ef0182e030319a08c1f12cffb5f974b80ec37c1c0247
+DIST firefox-115.0.3esr-nb-NO.xpi 582798 BLAKE2B 
d060ad4cba80b70de3c1b3bf0ad9b3346834400df37962f2dbadcbd55b9367fc30c744f16517a74b1cb7eb4e5eff4eae1c78bffcacc29214c6c34d34f87b8c0e
 SHA512 
c95814da3e4488482d34a8d7fe76bfffe232f68bea2549ad9e1365d949c8c580e5df926a2af271255b3beb0397f399b01bf4f0c64644ad0f11d372ed5d52bd25
+DIST firefox-115.0.3esr-ne-NP.xpi 496637 BLAKE2B 
e2e98624095e110d0dc0cb5d4b60c2f66371a4907712d65fb6d415d0f2d9188a497a3464814a67761a29dfe2b86dba2ce53c16460e34b6271f991a1953c11580
 SHA512 
3b58bae543a29eef63335d7e174e9263f2e92b33ffe44dd7ad6b59a47ffc90ec74a86eea2cea3c19a1c7545cc42fb46d1982882c275af14f9ed11ecd480163ab
+DIST firefox-115.0.3esr-nl.xpi 591931 BLAKE2B 
6992baaec8aa96058ddf2dad7ee35d3dc1555e75bdc74424a9fb9066a3ef3284bf737f14ac0cdfe2cfdba34297ed48f7d3fc19e847cf0a1880f82b1fc0cff17a
 SHA512 
f82e945a052fb91bdfa94aa180cfd6bfa8b72c13751e07ca36e841c28bb52e151ba7640df715d3727d547ce6a74e019cc072c341ac70811cf49779e2d15e61d9
+DIST firefox-115.0.3esr-nn-NO.xpi 585568 BLAKE2B 
7ca5b1567ba8c3c2c724475ef1169ad173bfd5da084ab6e3541f1a257eef81ff76e5ad938755d0ea43ac2d172beebee02a68aa31b97f30c71f246dbc52244d0e
 SHA512 
b79fd38da6f67f776e4fe24a5c0a6bfc81a7d2a45940f725c26ca2ded8e2280298d13944e87e18791d3a0dcad979e7bc6d1d8fcaa431b4fba944f966ecc47c33
+DIST firefox-115.0.3esr-oc.xpi 606883 BLAKE2B 
ad17644a375ecf81d7d2cfe5e8197dead37e5b3d49ed2cbbfd8c902a0de5e7416ef33884a7572d0ef793ebf30372b06750cc25027bee1f12a9cbe4635e2439cc
 SHA512 
77697a3c82913d287c992f0f784e971cef3255cc9a5d3021f5f70150e43cc7f046f0d8bae95f89157eb2965c3a10f4b7ee4a5d5b5d245a59a56c63d73f534b1d
+DIST firefox-115.0.3esr-pa-IN.xpi 665209 BLAKE2B 
c57d57225dd90542cd430da17ef6d95045d39cb0da3a761e40a1629cdf26811abf906d772d2d9d255425005c4cba09fe6740db3b5840b48754fc629a7239c3ec
 SHA512 
3600d3b44eadb96e6d8c1c5957fc1d86ed1a4e53718bd0add66e9919365a2f6985c7d7366acbc27c01498fcac40b18bd2e9e00195f560b4677a369dded9f9d1b
+DIST firefox-115.0.3esr-pl.xpi 617022 BLAKE2B 
67031a7e2a8aec9b9a878696a4abaec25f50aa0317ca4ad14778eaec3a1f61ea1bc1dbf7223a3ae8ab7409863e321ffb7cc4a404cb578ff57b2dfcba3b785342
 SHA512 
8c79accca84e2eb9d6f9fcf8cceae8397c69c474a937c70b4d1129b60415115fc1ed679e0eac6e1fa698c90964634d17a3f0fea531d1d620893e60fc503dc3ab
+DIST firefox-115.0.3esr-pt-BR.xpi 596734 BLAKE2B 
e59d588a15d2c90f0ba9c423203b55dff2c5b267ae88e6b91bc96354e1feeac4b598790cde27e13f67d21e0b069fac239bc719a1a4ee26077c75f7d73fd0265c
 SHA512 
904dc178ad0928d7071a7d8304b1cd10c5f8eca6e08dd80c8acf9f2db11e6bf7fe7942365b22555f87ca0e8610a4133865bf72589ad3d4089d4eb7d4184d24eb
+DIST firefox-115.0.3esr-pt-PT.xpi 598848 BLAKE2B 
27d6267e1856e488d9d8873f9555f0724fac789dc7dd06061793af188941049cdfb8f94eac4878d06c9d12fdb02e284f90fb342beedee70fc2555ec26f170f34
 SHA512 
76283dd0d4be75572a6d5896050b756dd8370a7c5eb96b5167181f3ddd3a6cc875a3932e9ddd563b1d5dc76d0e11a9099fc96031fcefe8857121bb35335192b6
+DIST firefox-115.0.3esr-rm.xpi 592662 BLAKE2B 
f80557afe9672f747ce79069085bc761f848e101efd7f294d1c10c2b1ba9f2ed4bc1e3e10b6b9bcdce71691a3caa6ef1b9009b2e8245a84d6e3402666e4129e1
 SHA512 
a1ffe7f7fec828fa4a5d0251888113d9118cab0fe73cafaa2c3645c20257f6981200bfcfa978b6ab971845ca5a56aec49d41094e066cc23efae56e1a8e835ade
+DIST firefox-115.0.3esr-ro.xpi 556990 BLAKE2B 
690dc69b1ffbdf5cd8887516e393fafde62feaf8c8000c59adbbe7de2f2e0f88fe6d17236c13b82f87ae0a65f2e312eb1940397a5ccb8ca6da74291ac02dfaec
 SHA512 
0b3be4f049777b7698967bbca15be29fe656bcaf0be6db5d9dfb1b9eeaf9ffd5805496e330db0ee679fed35cab27fb203d5dd78c087a1ad430b64bc4bd80f933
+DIST firefox-115.0.3esr-ru.xpi 691645 BLAKE2B 
3df9232e6b0d9795fa15f69d57da83338c2b9d887242240278f1f75c3f5e0a2f88d96ad1be57d82246faf7712f3b41908fdbc65efce0a2d7561f6661d75a8d42
 SHA512 
8ab1da1e74439d571a48af6fcd74a0afcf97dd2c564b11f62579ebf4af4d3b7db25bc61acc5fb933fabd00dcd2c28aede7b1753adaf90508ff1199984fa51cf4
+DIST firefox-115.0.3esr-sc.xpi 567078 BLAKE2B 
b576873c4608baf7adf9326d4b50b8a3c7af2977bc4b4e422a624d77771d9f1bcb1edef04d22c1498b7a993c2ddf224c0ad50f47f44224ce045101b993edb7e1
 SHA512 
e67bf324fb42ecef6078b8a66a6baf23a1457a40ff29e1b23c7ba3109f5a2520c3130af95b722603b3b9b464af97118b572a40785f885436a5574e1732c538c5
+DIST firefox-115.0.3esr-sco.xpi 518343 BLAKE2B 
296a5e33b60c2c42d6c315ff5da70fcafd2e35f16900cb7bb381f3573d03ecbd864d5744a65a8927457b712ebc9d9dc6ba7b031e3302dca05dc7c7b7cf8fddeb
 SHA512 
05587c3e250cc22b6f642712dc2d96dc942cbc001094c40b1f7264b0bddb32467c42d9cf7eb4c9269d62f8176e0976182b1694382015be8e6aea1a9790d66e44
+DIST firefox-115.0.3esr-si.xpi 593119 BLAKE2B 
12155bd18cc3665ddcbd31571a06873f4c46feb3be4179d5c55b2db2a8ab580467158fcec1e14a87497f96a70588b23f44ea38a0606ff1ba9d838665dc8f6f37
 SHA512 
a07832349c6547877a7b16649732e514e8a2f028ad24769e4c5b6d492a7968819cf1f29b81fcb8f7ae102d814107179ae6d61cc1224c859f0a0b509fac97315f
+DIST firefox-115.0.3esr-sk.xpi 625407 BLAKE2B 
0910036705de8a869049c2d1a2e5228c6e807dfbae5889edba08bd4499dc963d94deff587725c05a7b295ed55ec0d2b3ce1bae142697e9cc3248503afd2a0505
 SHA512 
17f424b0dffe5c1c779f8bd6cca0a8fe4102f0ef26c69c79e0e9ddfc4391cfd09f8f2b2af837b2acebd90e72afd866d4ce282df6e5175ad5c69bc9e26f54198f
+DIST firefox-115.0.3esr-sl.xpi 596048 BLAKE2B 
f3807c4ac3b766e077f07d9c57abf5cc7bbdcd42992c183b95d51f1f46f6d7d4e37bca62445031ad9c3c90b621179f1d4e44e569e6c503ff0d304a6a958dca9a
 SHA512 
e0a66889a5f4efb339f14e7711e4ae7199a6d74e7de0fcf3d5e44dd489b262c0a0b370261eac9cffb9083f492344feb939c453ea322ab26ee5147a94f39dc8bf
+DIST firefox-115.0.3esr-son.xpi 432505 BLAKE2B 
4194a07d6f3eaf0a5e240a407e3530eaca23b0e2b73610d704dbd5e577bb7d62e32046ef09e357e4bd0801fc04bb852ea140caa72eb8366bc1f860cea76ee833
 SHA512 
0187d49e227161acd240aa2c7f23159364c8b812d155ee92e30feb667b7ee3644110b930946d096de0ca1b7352eec723739817e10dd0993b14cb7dca2f787d23
+DIST firefox-115.0.3esr-sq.xpi 600793 BLAKE2B 
d12eeb369ce8e0c0d4843091ff14b39ec6fa4dfbf572478ab76d82d0efd1c85d050471333ca51ef13b2ab3ffcf4c6f5cb8a123ad707dfec28f349f610ba8bdfd
 SHA512 
e6675b4f6b2f038e3b7f6d33de4cce4500294f19a58ef938d819da60e95bf1568f761c2a4d929443e9f501bd38ecd066f6f2a557141859ad104602cbb752b006
+DIST firefox-115.0.3esr-sr.xpi 653891 BLAKE2B 
a2322aa046b1f9428f57b3e9f28a4669f3c0a9ee836c7c6ad32181dfb12e07e4e86ddb1fb5f0092103f7c01883431f1b79eba823066a8835e9c65dd28fcb718a
 SHA512 
371d50b1b3882a35c167d86337e816a6a10958bc035fa9448e98dbfaa6250e9990d5b1de95d34524b9f4551c28f2574278e25e37494c26d913835aff870f0901
+DIST firefox-115.0.3esr-sv-SE.xpi 593896 BLAKE2B 
88156b5776bcc8545aab7b2b1314ed426946de15006aa4c03ac6a34629bb27c307aa618d8695220e4c693be1cd5c0b87845d3dab187403f144a859caed96e919
 SHA512 
0f358a112bf5af84485e1dfcf66fc054219663dfcec5a049f58926d167585aebf00370e6e33b44213f1e801bb75032fa393a6b1d5dd1df362633b4acbf68b845
+DIST firefox-115.0.3esr-szl.xpi 534135 BLAKE2B 
dec3d5a7ae43d4b1569ad194b122bc673d2399d2c328057885b98941ccb9255a4cc071d01f7bffee4a9b3287669e4d6307e802b9a1c16ec340d811ab34e3d3c5
 SHA512 
702180d30f8b9712f0b89368f1253de284e9d4039d6fdedd1ff17f686bc3ccbc765d86242dd693071931c4ccc0fd3eac4774de892e739db59f83a0fe964e6a74
+DIST firefox-115.0.3esr-ta.xpi 520719 BLAKE2B 
0b432c9ddfa29ad4a233b9f09f9114cb6db9ade4bf8c23e70d7d0c6578d397c98622d83106c8c075b8d75ac10373b9c9a8ad1b26345b028e060ba792c8a2cb37
 SHA512 
56674f5bb21c52f2f90d5e6bcdba97b77f1eb82aaa0e24060d34f6d0d6fbfbfe5d9afbb92ebe01a868917a1c192c8eb019927f9f92fe8f6226ee90b242c360ec
+DIST firefox-115.0.3esr-te.xpi 570039 BLAKE2B 
3ce298d0217ca3fbf468a99fb945f3a9927959e1e2f95c6d1265f05b41094ee7fab28d27aabc8755a4cbd290bbd4d15f207f2e3ee9b9a03bded1d4d69012e496
 SHA512 
26715832c5ea164fe94738765c453c9f0f8642d8d94ef55d80a6a7f985e63d629b70b69ecc4c145d558ea52416572e7adbd55079ad8ae08c9c253978b662bc9d
+DIST firefox-115.0.3esr-th.xpi 667039 BLAKE2B 
e152453e172f51230584dac9442485a89255aff1289838a28d15c6d574f7a68d5cad2b86c0631829d4131612b8dc6cdc4cea07fcd13a9c740aa0b938c8e3e7b7
 SHA512 
85c8fa33fb1baa2552158ecfe10ebfd3294d7f9fa854e213040675ae553f7b5a96861e75bc6e0e9290f7a7a19ecabcf48a80f3913fb8c05942456272c6270c1c
+DIST firefox-115.0.3esr-tl.xpi 541136 BLAKE2B 
5877100e1999bb4fe7cad62e93fbc8396fe8301d89bf54be241aeacde4f762262a8b0d11eeecb4480c8ababcdff857c64e19cc72a1e0394f0a22a25b3cad8a46
 SHA512 
07b46258d18a262772519793b47d936782744ea70bf13bebb8ada086f1e854a7781471977c90421676b6e4d933fafde594fb9617082208b6a436dc0edb67b8b7
+DIST firefox-115.0.3esr-tr.xpi 607285 BLAKE2B 
9de5f3405d6978b938a56205b1a267fa98f6446082e0c9a9a1fffa4ba1901023a2d53b439b5d590dc33424aa1420e4f976c614285b39d57aa453c9e3cb84de89
 SHA512 
ac1c1357370b6d7eb10b70d631497b37c1902d41419bb2990b5a54692fe0a20122e2f99e7d60a7a7ebd4ee50c3ec65ad22c6b3e6d48b86b6b46a6e30cdd53409
+DIST firefox-115.0.3esr-trs.xpi 501894 BLAKE2B 
0970cbb4e9ba48ab04e917c9ce6b3414842918318393f3c0590be28f36ed77b627dff445e2f361edf1087f4749c9e70eb561d74b3edaae18cfdb6df4ff98de5b
 SHA512 
15554498bd87b3eb64365776d85bac22b3c45d4d6633cdac2442fb96ca9aa12e5fdf0ed2b024c659ec75b3091100d5bd3f96d6168b8895e2447c37d3b708c5fa
+DIST firefox-115.0.3esr-uk.xpi 684823 BLAKE2B 
c8fb2b3790c59b17526d9535e7140c469faea709c67aa94ad16c9cf26d5ec9b74a3bdb1f17227b43506b35781006393ec98932d83aab6c282ea710db28ad7508
 SHA512 
698b990ef2f9e6eb55406b227d63197bc18c484cfe30f0425e2838f1790aca73b5956887352edd8ee234d04b6cf7a96089b265b964ea642da50deb37fbe26722
+DIST firefox-115.0.3esr-ur.xpi 570584 BLAKE2B 
a9a778bb346101129ec661a4d75fac004282334ae5b0fa4fda2834f5a025d154c9e54ba14404afa943e51cd0c00284c0b7d936b2d4fcff79b213fad8341de545
 SHA512 
55ba09d9d1e56b0497ac3552b0008145fd7ea3a57ca77e1c486e5998d4bef6716f2518f8323014af9a4d657f702e9ca8bdcfa42a74b76efbd04f75a2afd91448
+DIST firefox-115.0.3esr-uz.xpi 488312 BLAKE2B 
6c6bc2ee5daa5aaea05aeb5c479f38d167f80acd5b85b3e3c632be281ceba1ce6c55a3be487ad0616edb9e8e228546c3cafc845d3413b735f215c056c7b1e8ad
 SHA512 
b78e09ce8a01d77bd24db75f1c2856cc187fe3f72f406b024992fd06b34ab7c6db2b85598ef52ae644aab36a1dd9584e2c9324436fef7e4ea20d7f776aff6f5e
+DIST firefox-115.0.3esr-vi.xpi 631056 BLAKE2B 
df01b4d0e32890d78e199fc8744aaa12ef315b1d591ee2a205375e5400c43938e38f6d9351a0a61de39e899b304d1c6755fe363abecf9d33f21366525f6a1b4e
 SHA512 
a804c7ca18f8f519fd3b03e1bccff5537a9c1a6a86ccec04f23b66bf717d05997edf12244e18da0415aa4d376a06ba42e1cab9a86527eebd2130b4d93ef0c595
+DIST firefox-115.0.3esr-xh.xpi 429450 BLAKE2B 
a2b41baaa105733e967e7a5bb7871b2f4bd131b42ae32924874a6dc6aa050d6588b8326cb6ff84aa5eb5b3f42ce184982a876c34ccd2438b66776823ca7b8f57
 SHA512 
a071943c409de6fa5d9b7ac4cac3e0a17ae34c37b48b36fbf402e85f67ab2b27a8ff3ad88448c312bfc62cd00718796ba103c278b8facd4729ac473f0fc3a507
+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-115esr-patches-03.tar.xz 17924 BLAKE2B 
2b086761cb34c115c8e07f33f3f569c7c31c0e61565eb792a509b089220ff42b1e676641a09c057718a74c6fcba6be053c9edf39fa063789cf773d756fc374f4
 SHA512 
a386826b3a9c4736d9cb5192b17509669fc71308d2879b6a266201d2d571dc3b4021260784bec3117d1f68d508436120b5aa9ee18d01af84f67da58df7e72b2f

diff --git a/www-client/firefox/firefox-115.0.3.ebuild 
b/www-client/firefox/firefox-115.0.3.ebuild
new file mode 100644
index 000000000000..6ebefb731c7b
--- /dev/null
+++ b/www-client/firefox/firefox-115.0.3.ebuild
@@ -0,0 +1,1406 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-115esr-patches-03.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