summaryrefslogtreecommitdiff
path: root/www-client/firefox
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-09-29 17:37:53 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-09-29 17:37:53 +0100
commitca2977e80c0b29d0e6ce6ff178b6e0043442262b (patch)
treec5285532adb7e0d3cec1f7e04c2cfb49e8f1575f /www-client/firefox
parent172f211c978ad5a44d673a147d1db4bb4677d60d (diff)
gentoo auto-resync : 29:09:2023 - 17:37:53
Diffstat (limited to 'www-client/firefox')
-rw-r--r--www-client/firefox/Manifest101
-rw-r--r--www-client/firefox/firefox-115.3.1.ebuild1368
2 files changed, 1469 insertions, 0 deletions
diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 11c14e0e2c62..5926ffb3edd1 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -307,6 +307,106 @@ DIST firefox-115.3.0esr-xh.xpi 402437 BLAKE2B 6831582511f5de2fc6438687c56d9f48ce
DIST firefox-115.3.0esr-zh-CN.xpi 595480 BLAKE2B 17f8f497c94774181b44f119c52444831eeb0e39e22493325a1e85f82b79cfad1f156de606f5bf2bc01edd28d824b614596e07988b35bca88e6485edffa520f3 SHA512 71f5d0a8dd9ac68a83cf0cbf28b33c8b0ad008ab4b279abd840e0e3695bf1cce852af51bb95bcc84bc6f5bae0f2b08986a6725fbefcbf2318cca8f915c7bfa08
DIST firefox-115.3.0esr-zh-TW.xpi 597824 BLAKE2B e48a8fd6887f1de2cd46db6a6c13a541b9046c0f8e669db1dc8d3b6e16f0bc4e77995712876e4d0dcdd67d72020178ccae595bb69d87b9a4908c2a6ffea727ab SHA512 93aad13cb9075e00796b79ea6b9f1ef7b7d5a85177c3f380ba1a7bd799d37150b48307e7f7a312a6fe4b029bce891821e712e7e725145892c04697154293cd0c
DIST firefox-115.3.0esr.source.tar.xz 510157064 BLAKE2B 858c7b47c07244f95327e29b52d73cea74f620ad8d496c719172cd4c812e53d84ab0fa9aaee23c93856536712bc517bf9c6e47122295c83c4c8191229145a3f6 SHA512 4a85095620a61dc516cfce6f288ba491a99c72a78c6dfae264c1292f9eba902e3df7101b97a6f8531114ccce421c92586e143872798aafd7aabbe98a257692ee
+DIST firefox-115.3.1esr-ach.xpi 441067 BLAKE2B 33f3e8fdf9e11f09b1486993d2fc580213525da4c16e2963ecddd2af7c44d72c85d502d2c0e78d01a247fa87dc7021a2edefc5a1d169e426395f3aa9fd0ec7ce SHA512 2d5b1c61d58ee73e0371a5a6f1c9482eb8f93043ad14cef7d5f559a2cb9350b4bcdb58777df1e067c2bf67b4e4a0c69a80c9792420ae320335aa99e441fa1d73
+DIST firefox-115.3.1esr-af.xpi 402472 BLAKE2B e7515490301f0d0814614fdf83f27b4e9b91d191188c16d471e1920bdd3ed6086fb7b8cbd1658e3e4f42b0d2b1d0ea6bc642e62025534e9c57e6431d0e3b7b8f SHA512 7dc4b34862cbf337906d055c107c90fdece6a5db067302cd4324d3e84e2e9aa6d15c939fbb9292d5e976ee0e862545944f1429439db524a48378ac23cc226642
+DIST firefox-115.3.1esr-an.xpi 482928 BLAKE2B c5bc3cca7a40bc65ac2ec71912686e36f268c2d983a5c3d80f86d312414c0b276c68cd925a7ac8cb6d00b8aa960fa3d474bde4e6dd3a43c84045ae8b0d42dc3b SHA512 b6f38e833a488668fc305f5d24adda02a6d95bdc7baafcfcee0b8667ba0002cc0e3cbb9795408c7d200f6e1e7fdd1cc8320db7040c5486b9eb9a0621e5b3fd20
+DIST firefox-115.3.1esr-ar.xpi 549543 BLAKE2B 1fe3cb33e97f241d6aa5b7d08d4b27ef75c7f242698b77e4643f933b6a15bf03d03a9cd5b3212c08d698a6bd9977d59e56c41f97cb2cc107dc96f85540b9f390 SHA512 facc6016dff3468be4c804a5ca3a2011bddbba9b82808ea42e02510e6a64350a1e692e5714a9ba4dfeaa9ce81d202179e825653a076f5f355ad84c19ebba8bd4
+DIST firefox-115.3.1esr-ast.xpi 477360 BLAKE2B 14789292d64cfbe919e74aa0348055dd5de503f1ce410dc31f46a337bd1b5727967fcf15d6f7f71387ac64c5a601e5071525e95bdf759c47ce8894d3a8813be6 SHA512 6836962f9dae40acfc0ba13d82caeae20d20ffef1e7e8243b4e4d1e46458f8decff9d8aedef7191e76b7863092f4d50c8bad6fb126bf613e506ef60522238928
+DIST firefox-115.3.1esr-az.xpi 470745 BLAKE2B 765f4d47bbfa13f2227c3a8f3784ce34651aac8c8b0b719c6088665351f0f7894a18cf84d87762ff701f93fad9a7169238799c7d0ba023210b290ffafb0eb9a7 SHA512 631c16318e9c56e34639301950ea6a42b92f68d63f3c4dba4daf3380db5c4fb0220443bee21b571f4c2e50896c917339de3ff3f6adbc58c520504844d9bd7f45
+DIST firefox-115.3.1esr-be.xpi 647094 BLAKE2B 61d96225ad03fe4f23fe2bc439da19099febf1b0ef074e884b79af944db226e747b97946a351f48b52e15bbc6fc7f8acec5e59adb81e36e7e2ad3ab9cd1a4151 SHA512 720ed997939c16acb614c9511b35fe70208b11ee285af57851e44f08949624e0aeb4b51d5753befc73b160650035d9dcf5c9f8d209ef72a407ef98acf5ef7047
+DIST firefox-115.3.1esr-bg.xpi 564179 BLAKE2B 745dee650cd8bbdb8d29ad895b635243f8259b64d227bf7d707c0c9c4b44f73e11cf3c9eb41c62c3f5671540cf1296c3274fbcf7d0c5d8e6be2b2dc12c59fdec SHA512 0d3e56f2a8e34c4f4400c33dceb7997834920d4d37f99f885b1611bc1114094e66e85bd9bc2b8e05ba2d143f63a73dea0b92c762b57dac6ef9344a6d6bdffeaf
+DIST firefox-115.3.1esr-bn.xpi 558436 BLAKE2B 46310a605eecc6516589c38b7afdff814771f0480b79c632487745e8a9e229cdee9174812ab53b56faf3b2474e3be086e55d72dd86feb99b5b84a3f002934d29 SHA512 9142f729eb55551175812091b0c2fe59706bf705815a89d3447529eca97c54308acbc76e65f80d4723642b7fd8a2592c005c1db37ac9171165642bc9afd6aa8d
+DIST firefox-115.3.1esr-br.xpi 534387 BLAKE2B c5a2ef202920b3e9cd4b06f5f024ac4abbf0cf8834faf414e528d0b1fac3a201fc0bff1dad423ee8e5593ccb91bac66987288595036770d893becf9a0c33978b SHA512 34c58c5e7d627cc2230b081f24e3fa15c4b968370db90741f81b7d347e200ac01735bae66477042bcfa269b2c8e6f44f1485f1c8232449a5686133fd696e5a69
+DIST firefox-115.3.1esr-bs.xpi 441266 BLAKE2B 66b78e48bb585d320c9b41674702950ed1c75a1aebf7608bcb71cfc109a540dd5dceebb75fbdfc029d4753155dd8a52830a84860bf4d6b8ffec8d85db16d1c08 SHA512 a2f93da5a503fe9975e615f9821a0287664f9ebd809478c99a9befd6c5bb0676eb2679b6973ebe98721a35a8097d2fcc0c859d4ce8c21614553ee7d886fc0cd0
+DIST firefox-115.3.1esr-ca-valencia.xpi 521950 BLAKE2B 1220ea06d92e08602666a99b387cbe27eb165c8b970a3bfc05a12c1673b0954c28378849a2d06bf8a66a1b2cb4c53f391d9bea2cd05588ed084e1a2538c693b6 SHA512 2d82a72a83598f99940ab0f62ed58721eff22087f7f549651d400e3c380021d5c32248d13033a1eefbda93a2a1cab8def9dbfca788df556434c61ff0ca647703
+DIST firefox-115.3.1esr-ca.xpi 545471 BLAKE2B 46b3a63ff09244da8ee558cb9e943594c69ac56e00fff769fb5d7e9ab6a57836ae7dbcf731074bd3ff525ceb3b56ad0820c2efa0410e7019cf13758d2a88d75d SHA512 6e3b4bda70a862d9b8fbba3c9dc9acae65379fb0860f280a07bcd3b8fc35b59c4887b77977303f40a0928b241412df4bc17b40e0555c07ad57e9bf9563dc5a44
+DIST firefox-115.3.1esr-cak.xpi 564570 BLAKE2B 4422777d5f12cb83f95f060c1fdfaeaa43c640c02eb86228b63ec3c14e6b07b272732a1c8a5304105da3f62fe259847dd4ba08bda12227a0354f10ae6fa6e695 SHA512 5b8b66b7f428be9b9e769794e69bb61076030ed303b195053e67a4250eddbb8cf27171730101f4b9c37bf9884cb5550766ec8531f201f87bd89aaf9287d9287c
+DIST firefox-115.3.1esr-cs.xpi 592272 BLAKE2B d601f20dec3a423d88c7b8c5c15213e07465e99b365aad333c54f5922a2a864ba8ac92f58175623f765731391d68fccc83dae6e72670dff8b0d64be1eb4d88d5 SHA512 4d947077a9beed5c86a44fb9d2d6ee691f57ec6ff4757c9d2f66e697ac1bd34ed6d127e66a45ff02d548870f5da207f2b95927648d4b40918a65e58496555399
+DIST firefox-115.3.1esr-cy.xpi 564694 BLAKE2B 2c3d2683e9adb334d7bc38c6544cf8b72bda2800081265477b4285f5271ab8c99de07b3ec470cadd062ca40b3f14313bef00cca2c4ea1c846f2feed3a13bac04 SHA512 d2f3693cbede3c1a3aa6bb80da0b1b2d2269c86500e70d268da96fd7847f5a13121d41e05de4740df3851c5c4419ff686625eace2ca73d2d5fee7e4df40a4a9a
+DIST firefox-115.3.1esr-da.xpi 554018 BLAKE2B d167721338d4bea77a20ef6a105dfe78d24f9e11b11f08acc5718d9cb4a4a039713bbf740769883f456ccf1470b3b8d05b9f6468706ac29987d41aaf9a8e3c9f SHA512 13a6532935e20561fd0971d5527f600701b558450108b29bcdb6b0ed61b58f9fbb5d2676dd2505d4b4f3e032be6dc30497e39518da04e264c87300e4c48e6995
+DIST firefox-115.3.1esr-de.xpi 574627 BLAKE2B ebe84e83ee1823e50d9386347adbbd9e66a6fe73e4e538543ee5008e79639b51d8dff157d8801d277e519e1134b0f35052c787cbe816be5a00390c51aaf67cba SHA512 a9f094c76a1de90605855c6fea42598577892cdf809e96a691c7073612d318946e4a7749494239c457f074eb9b0f6eebf9c43a209c8702dc558d07888e8292a7
+DIST firefox-115.3.1esr-dsb.xpi 589330 BLAKE2B 50f4d549f32f93b82170343f0408e3fa0d22f0fa37aac2ec27c725719e85f3b4ba8e8300cb8d5ad64cb105f1afa222013ba2088edbceb254f750b273f62e8407 SHA512 964c83251cef56e64e57bbdfb43561cc595a0e0bf970c41c7592ac66497639b07fa7cd19b5341865f9f155d1fe03dfc4fbb366a1d3e77bdc69d78f1c45f20b97
+DIST firefox-115.3.1esr-el.xpi 663763 BLAKE2B 61bff22e78b5b42139befb5aebd821455d80ec4b4e442a5cdbfe0d7ad1635c5ff4551fcce6da8bb0c7a43d050d2b5630df4bcb0cfab76dd5faf644527fb694c7 SHA512 b7c20e19b545e4b407b0905bfb40cd60d559fc0cee08db46555112103a5bd1bc9d623f27e3109c73a29f82e7f6b650e5494d49d6d973d15dc1449fa458f65b4b
+DIST firefox-115.3.1esr-en-CA.xpi 519410 BLAKE2B 5ff9854908e5a7687eaa83f1266c360a96afc3da336678985c9c006f26b3d4f567d17a2a682a5e2a381d6a7132f98c091e0c4b8be23fcbef57bbe1e38b1034a8 SHA512 7e6506de956d41901eca9635540b6e05c37a6c320a562abee2a948699a8ea51706139f70852cd048979275f6f84c3e6c04e2c2c9b3b3313585c9a416a6721363
+DIST firefox-115.3.1esr-en-GB.xpi 531049 BLAKE2B f04d2d7c4cb02524e947dd3ed8346fe7dd81b09e92390ef51061888ba7457964960a13da93b648f0a8258fcf34256c830c6836d28f1c69665383e3996777c0b0 SHA512 fc46657477385e7d390eda3488c6a337d9c902b767c915909a838a78fbe7626df69990a110bbf5828a407aa28762546cc57e82ed1e6137af5542dc83a4283fa3
+DIST firefox-115.3.1esr-eo.xpi 556390 BLAKE2B 460e805f9610c52cfdb488877c307c5dd9561d07d42ae85a06c8b235cf5f6f02d96d8f92b785974f8944ecb38fe014a5cc2e5676490efb93351cbba3be09bb17 SHA512 7f647bbe227121fb6b7147337cd1e68a39ca81f2caaf6c683419775eca69fbb543855bd516cdfcb352770e8cfdbd33bccf214861f4527d92a13a40097af8746d
+DIST firefox-115.3.1esr-es-AR.xpi 568958 BLAKE2B 7ce388ac63b7a6a211776db86996527c44d834371fd32f5f8782688d50f856baf8f8c0b6a7626721e26d528ba2a6a7904cec3ffd4f76d71a0d7af864d2010f74 SHA512 4ae750238394a2e14bf8ea98f24b1f6180a05304bc3c7ceb3b82d5e0a131f1dcd62246e8e558a06cfa1ac3fc9b27396f6b1365ac40dd8e77df164beadfc1799c
+DIST firefox-115.3.1esr-es-CL.xpi 568610 BLAKE2B 9fa922289eb0a57a177b761d0640deff773d0614135dc130b0f3633be03707760450b8779873034496f4a3c659d8726e4688572f64a10c0e95c20114e0d5c91d SHA512 e38568abc3ac4f78f887ffb35ae47b5316e6351194c747588fd0317a7615bcea661086ccc74fa8911577c0e013b336847e8a0ef976ee2e11c388d9a1b9c66d01
+DIST firefox-115.3.1esr-es-ES.xpi 562037 BLAKE2B bf367cb30f8fdda2d0187abf13e045f84198aa92e7017a71d95899dc1668287b8b416c11b964a23f230ed915e478a64262744d88dd3b61fcf5ab6a539f9d628e SHA512 e07ad6bfb2b608fd4abe4eb4a7283fc9e84eda6d02f4d669254d326cc3da6b60edd7ba83a94a068040298903361f67d421dd791f498defe7f1529cd7641a9f38
+DIST firefox-115.3.1esr-es-MX.xpi 565321 BLAKE2B bdec7e76c7f1f65b0e7181c997ebf3761ebb74d2377881cda7a7590f4cc0f7a365397a3fd1881ea42de879bee0b2744deb4b997d54a52b0421566187ff02c6d0 SHA512 449d27bad5e6d5be963fe8dd9188a33d8d551625eb818129fdde67ea58c94711a98645de7f89edbbb0d528b8e8927531e1659679d79a33eb896d378131b38cf4
+DIST firefox-115.3.1esr-et.xpi 516131 BLAKE2B ca6688ef1d2ef078b4ea51f854cfaec11fd1736390dcc0da45cdab4ba644c62ddee3578f82a0ec2dc39a2767dd8ea9c77c54b25f2a462682f0ba1d424d825ee9 SHA512 8d702ba83696a1adb032b3b7a321731e950bdfe7aa4ac8bcebacd1594c347737cef555852202a618d46f4c2e664c988908b11bd880c7ae676e99fc4cdea8df8c
+DIST firefox-115.3.1esr-eu.xpi 551622 BLAKE2B 86a9711fb4d8623382f9d3aefbb682b7363c68c9e47af69983cc9bcc9a42c8f97c9a8b4b63267126c6ffef65ee754d0a12e2e1261dc83b9ccb5661fc755d20f8 SHA512 29049e4ef213ea82998880f658aec36bcaf1e1ef1a654bbee318d532f0c35cf3a0b9892e4c285980cd3e6ecc43f99167390afb7f6d29de0f37006d1803da883c
+DIST firefox-115.3.1esr-fa.xpi 564540 BLAKE2B e77b5b9732089bf0fca596d3af28964be82f6fb7848ab89cae77ae93c6ed942fc3bda565ae333c4e732963b17c5170c51bd1888dd34d8707fc23ee2bc20ddad2 SHA512 d01cdac0b519a1a1144d08d8d90bf15354ad8ee1c3dc570f539abf339478b7f8d0856b458f1717405b5d12433b7a7d3d1e0a894ef8430ec82c77c7b5cece9df2
+DIST firefox-115.3.1esr-ff.xpi 457110 BLAKE2B dc93bdd754537a7b3a62d9dd8a423f4adb981683fdf8cec63cb6b7e7ad7d4fe4885d99c8aa0b05f1a5aefe8c92237266eb5938f4c10c322770595c74d234022d SHA512 70fec795761ab4e6dafd3751c9d103987b5bc620afbd7e6cadab6d4626c17a84a971306d80d2b1c30708e7a19265a8ab0ba9ec14b85061269b88b966d230dbf0
+DIST firefox-115.3.1esr-fi.xpi 551231 BLAKE2B b9d5d0e68ce64838eb2991aa88793bf71d3522d450ee112cf33de6cf5cdb08a6ae9d420912747eaad0c354c4f31e9458a3df03491e19be18fdeb649d08168f2e SHA512 8548d6615c13d7123a20494d9b812f12d8952937af85904040a0fbb6923639153da667103cf7ed36bd01e0052a8eadcb3446b1540455e4eda055f6e99e83aa2c
+DIST firefox-115.3.1esr-fr.xpi 580609 BLAKE2B 5b29c3d5f50dd393b237fe97a149c2025f5f78fd59f646c1c61da7db386053198f71637383736de438bd1ebd02b959f39756069d10fb069ced4611ce41cbfc79 SHA512 712dd0e2a77db7b17502208576c186eee849ccc649c49fbbfef538928c121c761c249c642aacf399f031b6689ac8b49f76c5e5d3e69c48752412121f107e491a
+DIST firefox-115.3.1esr-fur.xpi 573083 BLAKE2B 2a72cbe73d062599a9d9ec41f5341d07c9014a1c73c5832a9fc33e836cacfab04af965891076b91beda861372617e2f37081b93a1659e74932640f056bd98b07 SHA512 472b06639848053c5ab29aa25de01a7e5bd35dce5c4457ed228811634d780a9e2c22eef46b72b05180f2d152bcc9837f834ab88ea1e46265225a3de470ba7a54
+DIST firefox-115.3.1esr-fy-NL.xpi 564937 BLAKE2B ce69073a5e40bcfb9c5322cea6b3d141ace1517d18b09f6e436963a609c010d3d360d5958f073d1821e62079bc53005f2c79df655efce1bb46cb62b28da3bbde SHA512 faa0ec725513ea3157722c48556325f324c0cff23eb6691aaa5288c259bf61a0f0890c8fb70d944f1c3abd64a77386d45468db529df518e6d95909a9440f8ff3
+DIST firefox-115.3.1esr-ga-IE.xpi 454326 BLAKE2B a687ddee4098f535668ef915b03b1d3b72df6f5503cb44c21113f4fec39e685022b41ae46479b7eed72da7f1a233638af9e86034f67552401d0476b512de277e SHA512 930decbe92c4fd6fcf080af1702e98b1aa6372278c2e575ac7a59adf1a8f241ab28f7a1235fe6417a84e8a6cefc6e93af9a9142cd74ff5a158dec049c76c51ab
+DIST firefox-115.3.1esr-gd.xpi 566964 BLAKE2B c87859dde5cf3ddcc82a2b0077617b70f9f4ec87c22f4491c026f13849f5f9cb93e5582a7d0d522bedb1e9dce0c4ab31241acbd5f62c64d2ecd94a47a2092b38 SHA512 275d52bc4a908789951819579d5d4ccd453b791df22e438f2d9fb0c3fe707791079bc4a74616e89de3cf1d836608e9ac83ab74b959668dd4411fc854a51295b9
+DIST firefox-115.3.1esr-gl.xpi 565470 BLAKE2B 119a9fc309c6d214e230bf5aadbf45ba4fdb8ef4b0264e65d41c1eeec8aab9d300c067006149eb668d592b61497844827f061c798021c8c4fded487eaed9b1ef SHA512 b98098a6bd3766329bab2424e9c80980a0500c705724036a1711e8c4776a949b6c52e793d17f2b681345a5018c4e8fbeba188ac4a5ce74831dbc8b0968501577
+DIST firefox-115.3.1esr-gn.xpi 577580 BLAKE2B 1f13132685d4076ced4526b28f734bcd75729f9156e05a3f7f15d2a470f13e5b9d79c76673931be419405c9926b86ee3f5b45d5cdab6259a7c7cf84892f1bf94 SHA512 f944daa60a47822bb201a57c293bb4b3fcf497610ccc15d246c94be9f19826e24bd994d1877849399217165b90843926a51d7f4a9acba2a7d4d67ca2842a025a
+DIST firefox-115.3.1esr-gu-IN.xpi 506689 BLAKE2B 622a3254c5f0bdcc12ebee61cab673a5d2a73518c5b8e75be5617f74ee4455c9ddb5b5104dac67bcc6edbcc04977b92be802d1eea3bb52f5faacb684850c3d06 SHA512 e95fef0b25f3a1e66998c1735f93e2c17d88e7a5cd221b276f76321ff1e1b2040dced66a8c149532367bb8f6fcb6387392bf81e093c6813e89f3455c40bc92ad
+DIST firefox-115.3.1esr-he.xpi 574386 BLAKE2B 51f3f4cb53cc9d78af8a9ff3e013ddfb0ea06efb245d04e41808c653053ec4fa00c70156a12897c92d48dd17107b23dd721b256159a666a3a3045c0f596e6d6d SHA512 629c48a6743614adc9035fa832caf5a9ee3ff28414a1b222260aeabc4cd4ea5c84c66ca96ee02ea4fbd1d7a0ea8d46bbaa127a1e2eb1ee406899bd35f0dd37e1
+DIST firefox-115.3.1esr-hi-IN.xpi 538819 BLAKE2B 53dfde112fa90d9457df1e7efdc4809c55b5b6e45389a6dc87abb1b1945465eb4b58c74036d60db8e668a79b49c95de5ff3f285fc70fa723e19772f7262df931 SHA512 6c714b71349f2f67b0305e98c914920bbb3ec6adbd951efa54dcecbdeb05a560af709759b5a16465c6c898f98becd723127247cead9a7c69c6ff3b2ed31f7f6f
+DIST firefox-115.3.1esr-hr.xpi 531640 BLAKE2B bbbb1a06422768351ba29476a484c219d0cd2bc65594ed40f74102e8f20448698768cc95cb043eab10b4500d797e07c74abb84f3f2507167ffe2b4ed73e93313 SHA512 47136161d2b3869530fb8be424af40f01a8a16479ef4cb4bf030a480f94348cfb35d2fa259961a7225ecce6c7e0489979b39c52c904c1003fa8d8c94b63bb172
+DIST firefox-115.3.1esr-hsb.xpi 585525 BLAKE2B a620a2358d8169f66789b7cc6fba51afc3e08744f0cf67c9f8b935f7e571004f38d9438ca5ba1ae0b6f0b96dd1e8dd3d557940306afe6adb951f002d813d2907 SHA512 7d63b9b98b9256ca98908839af69866fb4f3f17aee1e757c6617179ee6c96c6cc29e99b37049de772f460ca854739bd0af02c90cb27dfb17b5b6dd581659cc4e
+DIST firefox-115.3.1esr-hu.xpi 588966 BLAKE2B 07a4e0052b9b6844324826c00d1f475a51e78e8714af728d385d4e9ce6b621a1d98ec462440b0f8323cb749d58fbd91aa6765a29be4567ba9b14abc6e245d09f SHA512 db0773e747f2701d020340b737fe0c5ff5b4266f281778b69b038d2a4c7a984a2deb2a1648360ea3f54d67e2d8669891dc0486112db01c290439506da35e5786
+DIST firefox-115.3.1esr-hy-AM.xpi 579192 BLAKE2B 8140f16347f45b3f920c680b2ab2e77f69b179093fd47e42d300753c632a86ec55f0ff6831815d55f38e249e37ae38086dd5da7d3eaf782f008c381007da2e69 SHA512 a140077e228db9b69ea91ffceeab8a53e910d5aefddc116129883fc94b68bc7f0f7a1dfcf6e40ec30007a9bde107c51972fbf3d24761950621905785a7bf4ad0
+DIST firefox-115.3.1esr-ia.xpi 553082 BLAKE2B 5da91dfc553689ebca8f4b4bf0e632f5ea78867811950109a515776ecce0c7088feee0d31ea9fc002130aa7832bc364f35f494dc22c5763b5b04aaace34e3868 SHA512 ec14400fc0e33f3f7633ea18acf3fe6c94045d0d19f0f4678b9669e1c115f32111553894511c100d546639d7a9052c5f149b0c15f7e6d93902850e5c973df46f
+DIST firefox-115.3.1esr-id.xpi 537743 BLAKE2B b36ace23cbde058576d6f1967286762143c672f836f5b56b480216470e29df0c458c5ee8ef3f2edce069318fa9f0101a7aec2b5be1cb8f1ac3e4a405ef8836ee SHA512 420646750977077658dc5a540f09f9282c8ca9687beba2214e0761fddec46e394f51aa90be61d2d61b9446680a13dbf2a967c27f9f9ab5985cd962e963f06d11
+DIST firefox-115.3.1esr-is.xpi 560793 BLAKE2B 203e25a082ac2934f2a44c3b6d9b12822b76566fc8f4e9908831f0d1aa2fa2bff0619adeb94eaacfa1e5a4f77d183b78ea88d9242363ef5d0ea430f2774ebef8 SHA512 5e7b1317788a5f99e55a86a268b9bf4b8821967f0bfa6ff23308c198d3984b2d3756c4f769593b52ca1466faa1c89d150f9f249a437727ff1bc74e8f7d6623ef
+DIST firefox-115.3.1esr-it.xpi 507474 BLAKE2B e53f01843fed1c30007aa90af8558cdb65dee57a762dac307112110592e1e0c2d812bd5766eec9f244fbbc5264f20955727198bd1b72c430e6b3e41ef42397a8 SHA512 fdf0a27ad5f0a5508eb212f2154ceebe59b9adce66524f0dc94466ca2f51eb3888a58da75745c8a4ff183957bfe2ddd4a55d5647d12b8265d50040291e04ea35
+DIST firefox-115.3.1esr-ja.xpi 634403 BLAKE2B 1f2280c64d6bb027e7d28a212dca62316810269cdb1a65a66b6abe1ba7fc08470dda63ef4042c54090024b8eeb6aa3e016f1c797b64f6d3dbcf7b6e002775365 SHA512 ba3b6dcb4fd6ffe6152902512ab2ae812055028ea83c10719c329ee1b579547e894905bff39f203d07a017b380bd961434876e8bd8dd299bbf36781cd8938fa3
+DIST firefox-115.3.1esr-ka.xpi 610744 BLAKE2B a8b1e9469ebbdeeba58838fcc901c179892aedbc3cd65bc269824ba34dc676668555efb13cf64a84ef5619d684c69de7950f28e790d43d3856b22e95afcff256 SHA512 e673b51d5182629b7b2c4285011c0891c3c258fd49db61ee02a3eaedac6c93320013a345f47bd7ec6c374c7e3107532e1e44a21e196ec232db34473013bdc2f7
+DIST firefox-115.3.1esr-kab.xpi 562649 BLAKE2B 9caee324f78b75a30a15adb7bd6cb7769dff5df61285d8b689581930621abd5798933ccebfd196fbfdf208e987fc5266e1471a0780e466d24476ddbc292b0427 SHA512 06507bd14e0c891648adf288acfc5043d258f619c2b7d3bd7bb768ff926b5936d356451a5c8dd8abd969a24a189c7fec4e6f73acbccd1cca72867300e93b326d
+DIST firefox-115.3.1esr-kk.xpi 639130 BLAKE2B cfff711c8a0b5a840aba6f2f214baa6eebd741315674eb571ec9e1b9ded94f9bcdf5d7e3a3a41b279f708ac625816df53073d528c7d463690c33b745d86a164a SHA512 f5570db0d3d0d77ecd5142570a95bcaf5a84a745304a98c71f53d925ce8f4a7f3b22a841f60890f259673a1a00194507d4714fe3c44da750f0a10e04937f5ea1
+DIST firefox-115.3.1esr-km.xpi 508107 BLAKE2B a0447c2a650e12b6738b8ae441ac6bc50f42e02a3f8e64363eeb1e5ddfae13af2d9436245c2cf62220049d10a5f28d8515eab198d04640b21fe2dd1206a97994 SHA512 1f77c7ccff08f060c4be82775915f6fe54143f724bdd9c13f30c4675850f737e130138fe18faecbe6672ece0b4a34e9c2f472534f4c97ac2fb80ab7d4b59a802
+DIST firefox-115.3.1esr-kn.xpi 473765 BLAKE2B e7bd942d110bd66e26ade1d79636d850d6ac8902191683079dfc0ffd7003be735a939b2b7b551ad5d83653a24e6a70afdc6505aaf6f3c372792d2937836147bb SHA512 ae9548d5744d37a72daa18eb736f4312f30f81de9c24630083ff4c32fbf7fb7364116c56ba90b8e113b58add314065dca239e9be583a588af0cab51ec9d54182
+DIST firefox-115.3.1esr-ko.xpi 600384 BLAKE2B d7c626686db6bc085f9bf1eafe435f38d5686c0b327ebe6d2e8788e24d63eaaa978708a749d139b208ad58a23c9287c5d29051d6d5896464b1714bd413fd1a06 SHA512 25acec4d27742727559fe255ca796ce70b980099a5886e80a5b680a4533f5791cce2e537d8fb7e4bad8ec1d5c47d4c955ad1e46b75a3c78f4dda7f4fecbe58c5
+DIST firefox-115.3.1esr-lij.xpi 463744 BLAKE2B 67dfda5422b547d2110fdff426ebb649bf614958465bed5875b470d279c981146dd11315c7e7ba83a13bd2376fa42c560dbf2ca691236cf2c292876dce674a23 SHA512 dd10478c6fe1b4dd5a74913d737c973511429d0496869c30d10a8517212655ea529cbd633c734353d522259cbeb69f2c9cf559cee5e4ee700984d59a1624077f
+DIST firefox-115.3.1esr-lt.xpi 548290 BLAKE2B e6a8d3f353bf10f4064102c1eb22944d8e7a79181c081cabbd98f1e2ef97cd198bb0c9ffaad04795210403a421f25959cf3779f0cb238436b75d6e1bea435227 SHA512 4ab2a278cf0e9f6aa63914337eb3cf87a74c30bda970764a00ab1b5813a1488aa4ad67d1b84d0c8c0bb0cd56b9f924d1c72be68dbb789e34e9eec57fc0a15280
+DIST firefox-115.3.1esr-lv.xpi 450735 BLAKE2B cf8be1e12a9ba36d149fd234c2fe7781a328efbef63d4b99b5b03463aaa05020c6ca9635337ab2c65c927571526deb66e55aeb839649e8e9d29df335d005cbd4 SHA512 fae696df7082f162d961c18e5a8db317124c137f2617bfee610ce4e0eff894c6089fb9acba94aed97d7f3a2e931e3548ec5d026e078224e8f452f1e4b84e9980
+DIST firefox-115.3.1esr-mk.xpi 470093 BLAKE2B 3a778d21aeb66d34d0e8e909c3a2d32f171789c62b2947b0fc52985f1569a0dbd47aa656fa8475adf38bef75552f59f86a25f20ce12215c73ecec29c5f52bf53 SHA512 031b2f0f228dac6c6e66d0c138c55cbb89c67eb4c8a1323b3d27d245d9f10ca16879f529017d3799408a77a2c990c09a8e629fb323374a596e16a9c2fa2bccb2
+DIST firefox-115.3.1esr-mr.xpi 510470 BLAKE2B 7c0caadebaa391c8bd54bcc7552c8752ed5b01de1271c6f14c226da7c942a8566e16d47e27525f8c014187d855bd8045b453989a43a7698d1ef9d64afcf9cfda SHA512 6c2a9aa308846e85bc6923dcd7b1ae33c6fb64520548fb62d5610ca55482c9b064ba80396534e4690421b120fb24a48a07393448a4039ef1b0d11b8a3c8a05ce
+DIST firefox-115.3.1esr-ms.xpi 431287 BLAKE2B 02194525a145d1679c65382b762803f35d2d572634e03e7ce0004b8131da1ed9439fc65835d17ad5effe0116769715427fe3a329921eeab46c7d4e427a239d50 SHA512 55cd580c26af2a1d975ef1891a5bb09955ae8b479ad08bb6f810f96465f8dae6a0d1f7945584bb75e56356f854821c61bc2dc185a2c7b30d0e22cc3148e16463
+DIST firefox-115.3.1esr-my.xpi 493662 BLAKE2B 695cd8e36905aba4ee8b31aaa9aef8f03d9666534bea38f77d9e6ee33e9fc0d6b67a9c413be2ceec2bf0c6a043148dc425fd6fbc47facd2d05b7f43634d1a156 SHA512 41b1e67d963ace3804a705cb223b2f075721b86a65e69c04576de741dac4f3561a0308b121ac482adb31aabfcd4d875a39ce54a3ed96425b1a18f2112339d998
+DIST firefox-115.3.1esr-nb-NO.xpi 548970 BLAKE2B 5ca6eb7f90aaa078c6d0d70748d1d22b726942918e11b460083b2c2fafe0f47737062fe3fe623c1838cd9e3b70102ca987f88dc6d6dffa07bbdba79f2ac75b8c SHA512 d92b771e6a97b84a8c7ec44ad578c9893489eb0ed46cd9d11176b0730619130cd66ac4c989cfafcb0b6e7aeaab571ddbb65bac15a9ba162f490eb45ea3a3f1ac
+DIST firefox-115.3.1esr-ne-NP.xpi 468989 BLAKE2B a66105a44cfe758309254554b7e1d8963e51183c2e7ab9b03da06c11400c51113aed918169794b30551d57dd428c4f8364e69f9ddd360d78e1011e7c16671cbb SHA512 0ff6be570d5a8b5e2836d9a92d63918a7270ec5901436a9532bc58c1025e9b1c845e75e70d9afcfcc51c63d471d191e762d14709235e26f45f3029209955d2f2
+DIST firefox-115.3.1esr-nl.xpi 559192 BLAKE2B f7794a8103b4f34db5e379314a4cb6acf03ec03006c3f9317ec6dfd4286e83061f2965a14d29f5b43b3777fe1794a3644ec9c81bd2cbd3836339399480073365 SHA512 77245f95fe94bd2d1a8d0f4c95316576418614d47895c905e3c186d7b7ee929002d70ea77465b5de427ff5431c1d6b2621ffc922f2df1439019eee7b96eaa126
+DIST firefox-115.3.1esr-nn-NO.xpi 551971 BLAKE2B 18b4ebeab07de6ae48767ed8eaed1016ad32ba904599975e6113455b094ba94a2c9e98f9ea872befb6b8ca50ea7f1de136f3495163cc160ff6f732031dbedd64 SHA512 de98095c4e37f2231d265ff0a35d1dc94764ec8d1ba74bfbc783930896ed357a86cca9272cc8c1ff0f26291475038e2d42fab8c0c809524c39b7499c86610ab1
+DIST firefox-115.3.1esr-oc.xpi 572131 BLAKE2B 02123533f72595e600f078027e5695a792beb825f314fb094de12be9ac32bbf6e30c882f4bec37630ee195d5ef00c69a183599aa3211672c3cabe900a8ce0b67 SHA512 f38b7da71cacc16a7ef243ee29e9fcd4ef8548bc40ceacca1f39884e7d6e8f0e8a6bab14828220f65e79d47e5a3ddbaddf6fb4e682ed7df3c3018dbca3d0b0a8
+DIST firefox-115.3.1esr-pa-IN.xpi 626111 BLAKE2B 8ee7a3d82b59e8810b145010671d9f88157326ff4262418a23a6485d1ad520369f100a2d8c8184c146c7c92e697055f8b7dde7a162c3bd045dfc522bdd663aae SHA512 1f18635001fac6690fc57e804dbaf1e2bddfc3d3cea5bfef6419abc11db2f12edcd963019994d7cfa8fa305771e6ac00203c3b0f8a66751e6b61106a1014d77f
+DIST firefox-115.3.1esr-pl.xpi 579828 BLAKE2B 5c216acf4dc47638cbbe698f0231e9950addb2980a4748c1f5668937491213c3dc91cf6af9c9950d9510d634e3ead1f5be618e46604a349ae3ccbf223869ceb0 SHA512 46806dcadb032db3dc8d9af51e7168c9e80edb7212dacc72d43c795b32030536632ed80763b826d32f9cbce13a2feacea2a2114c446ae2adfc9b4fb61e6b3145
+DIST firefox-115.3.1esr-pt-BR.xpi 563945 BLAKE2B 8df980b4f4ed7ea8fb2b3219d54d79c3c2186122223a45604a5d91ba415648e94633f3e40aad0db8af7f1f21063a822764f3e38a161e44eb95e35a24b0641481 SHA512 b9d794710787edf05c053f9661f3e0311d28a10694b85f2b24ca142e54ef9fcf9607be9024217bcf0c12e2a755e2e7018af3867d19848b7dca44abe49f3eaf1f
+DIST firefox-115.3.1esr-pt-PT.xpi 569055 BLAKE2B 3e7e5ebe3e5cd5227ea5c451ee36e592f8b6d712da2283d179e9c8dc9895a371d10c6ed60d80d49e64a05e26d9c9f17ffd0814b9db2e2d24940998a774eee9fe SHA512 115489f8051d3c4ae7eb3305581c7d9accf9f1103bc43bc8031424b556f1cde9b9fb9738fb73b633d5d503a6edf824288463df699e59380531908a11909691e5
+DIST firefox-115.3.1esr-rm.xpi 558678 BLAKE2B 8d3c7a79415e677f1117ef721ff3763eb0d0c76abd2fa7d67950f0134029dd0493870116beffb45f70a1284dacb68dc97890e94c67905a4eec4d89752660d6ae SHA512 f41abc4d54be5ccbd71ae1035d4fc33c0f26b8f50090bcfaae6702fcf604a4ff1c05da1c003f8e0f23f376eaf9558b924fc7786985c9ff1992ed06e09d6d743e
+DIST firefox-115.3.1esr-ro.xpi 524799 BLAKE2B 408704ede12cdf65295126c0f1003df86b9c7e48401d8ca2d9263cd917f807401de725c437fb0f9eddc10f02a622509e0fe83695788a2ee45a8da9ce1230aeb4 SHA512 8cac4fc498ce29695c68a4de0cb92bc7082206fa347580f203512e4863294f54935626bd9bc25637e256fab5e4a124ae3da64f67aaf71359b9a1a23f6b5fffec
+DIST firefox-115.3.1esr-ru.xpi 651420 BLAKE2B 2218488963b40ca07bdea713573e3ca6fa335f101c76f5611d8ad92f593ddf6f8bcad3c99274fd6496094ffba97beed5e562eb1205bdf16af526498976f7f7ce SHA512 c1755ba6879fa5cec34c0e6f4e75b2f3fb0a9c7f228f00561e5d04fdafbcc41d77138936bef84bf7ab5555a080b445eb3e95c82cb6b851ee7f8a70bed83ee8ab
+DIST firefox-115.3.1esr-sc.xpi 535142 BLAKE2B baab57b6175c97b704e0fad44289c07fbc7da0399cbd7727dde8beed522a088b01b0b2b68b9505ae8a840a7a17cb6dc532d60c1ebcb6d97a30a0bacf46eea948 SHA512 89e7553d3c38435bf6df25541f8313347d36a39e2835498be23f714a37944be6649b3f516809aa9d77206f4a70ef141e68285cb5b269418db00a42363b7c9e15
+DIST firefox-115.3.1esr-sco.xpi 489683 BLAKE2B 878bc5f2495701bfa97e75c46d9a29c1f6c97ee3aaa29b92281863cdfca7d86d55ea210d8d38f9b9aafa91f847c450741b661004486ff49f2f6141f1ae6f5b43 SHA512 782cc26fbda92704b64e78291011a7e0aef8514da57cb85348d692281eb878645ab582c607f1ad08671fbb7354f2f716b33f77c020337d44fd59f16939ba615e
+DIST firefox-115.3.1esr-si.xpi 569017 BLAKE2B 26c40035ef0715736b9e3aaaf46ecf067b0c3145703c97d9bca1dfa7c2cde6459e19e36ab64d8d460621d8e1f14a7c776af4a9879893740c26ef7fc3e7804ed9 SHA512 324c8b577dff7962d4b12fef3deeb14d02c7f6210bbfb72a44f3df5d32651da1fa0be51c3319abf83542ce7cde1bed678e66a097c84ea6bfdf3b910f9616711c
+DIST firefox-115.3.1esr-sk.xpi 589725 BLAKE2B cb8353eb5718b6be75e2f14f9d0850c310e994ec357c4c5b641e0c4530af76612029712f401d84018c7333dd89e2ec591834ed42c73858fc3c1879b644495fbe SHA512 80e828bfc0eb18fe1d4655c980cc70fb1006160ed4364a90076cb18843b3466142815bc15f6100d57bd556dedfc6f1ef64441554b8bd578a3ac86ea68159d94e
+DIST firefox-115.3.1esr-sl.xpi 562524 BLAKE2B e3959a436e2ca830afcc7a2684d697d5bd47ccedce42ca80f3780864c255c4725220697dd29c1c96e38625e5cc7e30d55a215ea4772f0d0ec5cacc9ce40b6c19 SHA512 9c1764acb90c4519f57f0749c99b71733ee997adb1f35af6ebcd438bc08b5b0b97994f7cdbee67454a25aaecbb19b836994d65ebab1031c9cf8c2019d66428bc
+DIST firefox-115.3.1esr-son.xpi 400971 BLAKE2B 990ab3fb334e7c50942b197e710d2c65505d0782c67c5f7bfe33ba527da1fe327953a02137202dcf47f86bc5a4fbb1b81e7a5350027035f62679e6d3f2843c61 SHA512 d496a821fec851beea0bda76edbb1a2631accf9356d1db0e31ad1e966ae13412a8ad20480ba26f6ad2aa52b397b8f5584c65e49543df09e8b1f94bace3e4be27
+DIST firefox-115.3.1esr-sq.xpi 564457 BLAKE2B 44cd14315fc3ac715b8e100e39a9050ecb690f88475a2e67285bff76635091accfe1416140728815b36e59b182c5023fb50b1a25395d6e5aea16727940e2a71d SHA512 257204d5983f376f26451c53a455b54aa7f1284cf1e4005a2047c1748f5c7db725c88669c597384829b7ac5373a2a454703193e54ac674cace6c4ae6479a197c
+DIST firefox-115.3.1esr-sr.xpi 614006 BLAKE2B 88586bf830431a0780b69cf2acda9566dce39870c7c4e12220393ee369db1dddade5b34002f1783a36c5fac11bd6a427b7d335efcaca59692e65f335d6cb6374 SHA512 4c40fc59e93ffee5548d9bb3987b83bcf2fef477be6edbabb89f597a8a09a22e721071f0b1e125769f21a789cf24c4203ad35681adcfbb166447777267f935da
+DIST firefox-115.3.1esr-sv-SE.xpi 560562 BLAKE2B e1df9f302529dc42b93520b8cf3c836c2d3c98af0df7258b1b7d6332ccd61d237f8dbdffe8f40203a59b9d46d49ab27efc7cc9390232172b3c1d1bbe17ceaf33 SHA512 f90aec93e412b735879f698fd62e713d2cf3b80d2805690398efe84b7ab45eff0acf3b497727c5e42d7dfdeb9990e38c1c4159c1bf445ae9260317a263714bca
+DIST firefox-115.3.1esr-szl.xpi 504136 BLAKE2B 21ae79f8016f98aa3e5f0ebabac7f99cc701a65796d364bae3c0415dcb35e298b5796eb12b0816c9ddbd84a3f9800ac4f5cbc7b0410854bc133778a460eeaac6 SHA512 e068d2df390994919872f9a3b0ae36c1bdbca429dac75f9a463315c0081cc47f9310f0e7d25a3ab4e2ef18bd6a765d8294653fdb27ab8e97a2d1d791bdf09b85
+DIST firefox-115.3.1esr-ta.xpi 488853 BLAKE2B 755a019a623db6907f4f721ffe4402cd73e4bf9993e4d05e79249c52824aa4532960dc48cd5e2f4ecbf6dc3c133fd199890ab61a07461f261160d3f709b2e7b1 SHA512 75c2c0de46f1fe8b95e13c7a66ff134720accc975ee5843e3d11038efbd6f5cd0a5cc1ed883f679b2de037c509c0c5ae29d63df27df774cda3a3767f4800949c
+DIST firefox-115.3.1esr-te.xpi 536174 BLAKE2B dd917051ef075df1e86a72c4ec332c2a805895ec8f652698666b9eece9c9e46675ad9e270d3909e721d6e473ce9b8a7bfad34f4f77ed537e3a0f6870c0650437 SHA512 8bb1158b1485a3aa5110e39801a8d8770ffdc7b701ff7e708deff69200ceccc1f01b15558dfdafff708394b435d79ded4ec2e91195510689e2736d8df48e64a6
+DIST firefox-115.3.1esr-th.xpi 632049 BLAKE2B 87dec946e1df492574d2e7ebfe96021ab2bd8be95f3bfdb701f2fcb3ac38fbb41f511500c25295b78b9a32120897e1f23d6cb9e143b3caa3488d140790da9eda SHA512 56a4a5b7d65294e188b6209fe93e36d044672b055c36204ebc2efcb18426e1e37c2716f66d07601bbebc7fabaa724662f95a5802a52340dc8babd2d420b48848
+DIST firefox-115.3.1esr-tl.xpi 511426 BLAKE2B 20ef2c3eb1f1d0135e4c072c7cc9564833152bcd72b007f05e543d7caa750170187ee1d6a4483269344cd29d28bf27f8bdd74b073f1122086a39e2fbe184dbd6 SHA512 5615f9cc6fcc4819a922c6ea2b02e09ae3a3198a60796d1958c4ce1b6e5af191635cbd5f4a44cbfd3b944ac03acd2b9017b8fc0158a65491b64d128be429e9e1
+DIST firefox-115.3.1esr-tr.xpi 573254 BLAKE2B 675bc7a2657d4ffe47447f876fff50dd017d960e420288223a6cef750fdffbc6a02ce80739d13612dea1ec0bd441f3fe01a3e87bf0991a2794628751738c9907 SHA512 2133ef95339dcf0083472125a6daa958d95bfb7474f125167e733ee620fa42877a9d95e1512aba99e1066d3eaf538b14e9b0565fb2b37105fbdfceaf33becb8b
+DIST firefox-115.3.1esr-trs.xpi 479679 BLAKE2B 1012c1eabcee47d80fc2a233451e4bd0bc9eb3191bb1f5c392729b015af05ef8d6a263c7868feb3a480a383a083114bd4ad0ec41a95cf4de6df8c6034853cfac SHA512 62cc3055404415ba6288cf9627ed838a76e5c022506cea223626241aec065522ab19a396bf2f14b0d665749c9f7666b15db5cf301de11d159e48f2bc5ae7d0f8
+DIST firefox-115.3.1esr-uk.xpi 645040 BLAKE2B 873b3626c3a0ca9040050c58af9804d6373b0ef1b58708ee200dabd932770913e799aa04f4be7e7e74e4e1bd44084c4a51e28541ceb5f0ad099895458e8e8784 SHA512 4f72817452d1087d1bf1bebd2ffd8c2265256624e1e449afe4c6a3f4d464754b658865f6408734adabf457293a1f38e710e3babc28895ce778ba140a09bcc391
+DIST firefox-115.3.1esr-ur.xpi 538789 BLAKE2B a88c483232a6700995364e6c2e5c65a004c04ae75340f19a727888f0480d78805223b36c947444721e05d666d9f5f4553b44de6548d385cc2a524f9b454eedb0 SHA512 8b1e7808cd482161a452d3d764aa11962f31a0052bc9bb6aaf3001d9f4093df8c8cc7c8395ef5d3368d33f68171e287673215b5a52128cde2a2e767f12b08470
+DIST firefox-115.3.1esr-uz.xpi 461746 BLAKE2B 57d93c991aea9f5c4767158384384eedb8d8f1e2d61e8db2a87d7d59c30802682a037309b01b26b21d435445a8fb99114b8c97226d4610a97a592b9ca3c36c9f SHA512 5f9ba1addcc282d9ae82e3feed6bb8f7a09cf371e50df51b12fe7939b265bffc514d105dc412d6195e9db2301ce72dabb7bbc6e0f6f8f584cb85ed0a703890ba
+DIST firefox-115.3.1esr-vi.xpi 595543 BLAKE2B a3984e027abd5d92345271aed80b545123c56a2d241e1be105e2cbd16da8c83490c1e4c3799ba911470f8c98e69320206feef10cd48827065a58b2c2b232797a SHA512 ad78d82fe756ed54eee4e631741cbbc627a6142e86d2bb2b5bd3f0403a0722cfc15062cd7965c59fc2d110f980b4cd7ebb5b6650d11498734f0378bef3856e95
+DIST firefox-115.3.1esr-xh.xpi 402423 BLAKE2B c80542bbd4bea684f26114fbe3785863ab23513fc22a6157c9b65061fd4c4d873ce23cbeceeb259fd4762238542c4310df34bbe0271e34179118ccc440a4e507 SHA512 316d9ce7094d69570fef25767ad58dbb3021808338e7679912902a2eecfb6c0ec2dec9a66fc0422d295bbf9028af5cc30a7d6972422cf00437371839b9a9f6d2
+DIST firefox-115.3.1esr-zh-CN.xpi 595486 BLAKE2B c24578d05d5b3c3f7dc2df7184fb575c3beedd9e20e4f9fa7bedc800ac0ce953309e7edcef06c4922f3d601906f195f5778714082405fb838dc5838a8f534ced SHA512 f9e3009d2ffefbebec11ddebce7b7bd7d6f9ddb84d5be85e1c178691633f6af95a3c13085f3ca6200d9d4d6038030f6472fa86f4bde0493acac2369af808b541
+DIST firefox-115.3.1esr-zh-TW.xpi 597814 BLAKE2B 5f48207fcb7d6cd81c7a223447726012cbe8a3f5d0fe195460063bdf98f3658e11b28003ce27a56363b1ff474fa840f28f4c5facd50beb7051264d9cf18681ac SHA512 29b304dd87ae32df33ad5d1485ad4734c106d2641c6ff3bc60564cd27d9806eedd2e598df22ee79ae7eaa4045c7ca3a2fcbc724a70fd74c3fd5c06f6294da715
+DIST firefox-115.3.1esr.source.tar.xz 515785920 BLAKE2B ad5ec24361e94d9185eed210f681c50159f5be3e6046d79200b5e2586107f1ed98ebe7935f1e266afadd570fc1aa6a1aec81fe3b7fb86efb48afe82514f26c68 SHA512 65cb6fc46bba03eed742bd67f8e36b63b19f2ad7b85d2f503595704a4e88f554758a1e66ba548c8efe97a76322fb2514db72e6ff4bb2992d1aaa86edc3af85f1
DIST firefox-115esr-patches-06.tar.xz 14944 BLAKE2B e60a8a32f8c5e6d897e8c3e13d291ffab651937505ce258f031e7e75560c9eb89fce4a22c61872d639e6e1d40244e94761baa1660c2d3d02584ad4cc4778946f SHA512 d9ea1a063df287fa651042c90529b1a1b5ebd5a28735c44b5527cc7dd29678c2f8a9204f007db328371ed6af9613ca7215464c00df5e685c3af4296a22139257
DIST firefox-117-patches-04.tar.xz 22388 BLAKE2B 89b9303a71e2421a2cef9ce0a3ca7dba5de7c21d6af59abe36b1e090bcadef30d2954acda874d72641b61b4cbfe0b032a6dd1d7d699709a2f4818c6e1e228d49 SHA512 7914262226a0d70cb3d24cd152d79e9e98b7a72993276ecf26f4e79608a0f4dd9717b8b0f3524f54db385af404d1779a2ec828e23b02c10a5dce27b53d20e835
DIST firefox-117.0.1-ach.xpi 444794 BLAKE2B 7d8323bc22d1f078783171168e9d94ff5f8d8d678b8b1c2a9f7db7fc1a4e4221a383b8a4898d429cf4c7de77ceb5885d87817c6c965ca527de59a46321f4b150 SHA512 d0eac4c1f80492f083e4bf40879adf62c1c5c84179b0d9393f9f14a1d9b39c585e35793dae313818cfaeee063f0ca2b1b56306ef838ef6d4e40e47bca07f609b
@@ -613,6 +713,7 @@ DIST firefox-118.0.source.tar.xz 518635224 BLAKE2B b31aa245687fe3c33152675ec5c4b
EBUILD firefox-102.15.1.ebuild 37115 BLAKE2B 4faa604c32aa8afdd09901b8df1b0e2ead85b23d2549ec29ae6afa87d82fcd358ad55c9a3553548ea4b74666e8e7842d6820971860acf91df2b7db9c64a600aa SHA512 dc290bc6527bd082cb3810ceb5d438db0f3a42cd267c8505ec72b3db1a5f6e501b1080224290367cdd37f5bd1ae6c342126db69cc66286732ad4deffe4b15359
EBUILD firefox-115.2.1.ebuild 40747 BLAKE2B fb55f9218eff4bc2d73244d1feac5e639c4e667d666853f788b32a4554cd57d776a2c077db6121652ff5a737bbd92f83fa0aeebeb0acf8176d8c4f4e716a8d59 SHA512 b4bba9b153652d988b24bd8fef9a479d49df95f7e6f9aa9eea993a26cc918eb3c5eb4b683fa76d3c82c4a10d24b3e8b060dc76cc32cdfb5e01af7cdb1566fd21
EBUILD firefox-115.3.0.ebuild 39084 BLAKE2B 7b38a25479e66305c0756bc4097be266b8395c488851548349c114c9393b2797185c48ccd753e58989052ad1bc12405035a85ba32b732df45f3d5dcaab28c418 SHA512 3b09b7b32bb094064ef2547b0fe0d89f64fd8e91cc9707b7fa2bac4fc7db6ec5053f3fc9954ea096b7704d3010d4f79f0c6a4ff0e16751fe3096632da22c3dd4
+EBUILD firefox-115.3.1.ebuild 39084 BLAKE2B 7b38a25479e66305c0756bc4097be266b8395c488851548349c114c9393b2797185c48ccd753e58989052ad1bc12405035a85ba32b732df45f3d5dcaab28c418 SHA512 3b09b7b32bb094064ef2547b0fe0d89f64fd8e91cc9707b7fa2bac4fc7db6ec5053f3fc9954ea096b7704d3010d4f79f0c6a4ff0e16751fe3096632da22c3dd4
EBUILD firefox-117.0.1.ebuild 43979 BLAKE2B 1192233496b2611ca6972b1cf65846b73fef5df7c90f6dba74ac4d10c668af5e80e09b8aa0188875ba3f7830765957076760993589dc970479305c599d0aa4f0 SHA512 408087909b79d644185de61f220949585909699662d5c44834b0544806153596335987dac008a632bc451325828c98343aa406d626a221aa6d1ed3cd181d056b
EBUILD firefox-118.0.1.ebuild 41603 BLAKE2B 998cbfd94a5cccb8b03e74d4982da1b4afdf82abd4cfb6c0e0a6cd2cb115daddf2dae74d0653922c650af10a5442636231d638d1d622c0ac77c580afc87781f9 SHA512 b18734441f704b647106227c3abbe4ce8112ba6d1f8b70530b7a69d2554ccae029037b6c0b229359d5d9e56542e9b976821fcd28fcd6f4ae2f02cfd9390ddad2
EBUILD firefox-118.0.ebuild 41603 BLAKE2B 998cbfd94a5cccb8b03e74d4982da1b4afdf82abd4cfb6c0e0a6cd2cb115daddf2dae74d0653922c650af10a5442636231d638d1d622c0ac77c580afc87781f9 SHA512 b18734441f704b647106227c3abbe4ce8112ba6d1f8b70530b7a69d2554ccae029037b6c0b229359d5d9e56542e9b976821fcd28fcd6f4ae2f02cfd9390ddad2
diff --git a/www-client/firefox/firefox-115.3.1.ebuild b/www-client/firefox/firefox-115.3.1.ebuild
new file mode 100644
index 000000000000..d02c0ee7fda7
--- /dev/null
+++ b/www-client/firefox/firefox-115.3.1.ebuild
@@ -0,0 +1,1368 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-115esr-patches-06.tar.xz"
+
+LLVM_MAX_SLOT=16
+
+PYTHON_COMPAT=( python3_{10..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 readme.gentoo-r1 toolchain-funcs virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+if [[ ${PV} == *_rc* ]] ; then
+ MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}"
+fi
+
+PATCH_URIS=(
+ https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+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="amd64 ~arm64 ~ppc64 ~riscv x86"
+
+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
+ 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
+ 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
+ )
+ !X? (
+ >=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}
+ hwaccel? (
+ media-video/libva-utils
+ sys-apps/pciutils
+ )
+ jack? ( virtual/jack )
+ openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libICE
+ x11-libs/libSM
+ )"
+
+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
+
+ readme.gentoo_create_doc
+}
+
+pkg_preinst() {
+ xdg_pkg_preinst
+
+ # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse
+ # does not need to be forced into the LD_LIBRARY_PATH
+ if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+ einfo "APULSE found; Generating library symlinks for sound support ..."
+ local lib
+ pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die
+ for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do
+ # A quickpkg rolled by hand will grab symlinks as part of the package,
+ # so we need to avoid creating them if they already exist.
+ if [[ ! -L ${lib##*/} ]] ; then
+ ln -s "${lib}" ${lib##*/} || die
+ fi
+ done
+ popd &>/dev/null || die
+ fi
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ if ! use gmp-autoupdate ; then
+ elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or"
+ elog "installing into new profiles:"
+ local plugin
+ for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+ elog "\t ${plugin}"
+ done
+ elog
+ fi
+
+ if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+ elog "Apulse was detected at merge time on this system and so it will always be"
+ elog "used for sound. If you wish to use pulseaudio instead please unmerge"
+ elog "media-sound/apulse."
+ elog
+ fi
+
+ # bug 835078
+ if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
+ ewarn "You have nouveau drivers installed in your system and 'hwaccel' "
+ ewarn "enabled for Firefox. Nouveau / your GPU might not support the "
+ ewarn "required EGL, so either disable 'hwaccel' or try the workaround "
+ ewarn "explained in https://bugs.gentoo.org/835078#c5 if Firefox crashes."
+ fi
+
+ readme.gentoo_print_elog
+
+ 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 use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
+ optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver
+ fi
+
+ if ! has_version "sys-libs/glibc"; then
+ elog
+ elog "glibc not found! You won't be able to play DRM content."
+ elog "See Gentoo bug #910309 or upstream bug #1843683."
+ elog
+ fi
+}