diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-10-11 04:04:15 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-10-11 04:04:15 +0100 |
commit | 61af1efe96cf1037982d2fc90af0749b5ec5a0c6 (patch) | |
tree | fd4966f3b19ef9b18ed5024d7e2f48ef73eb2fee /www-client/firefox | |
parent | 3aae425b3c39d02e2dc917db0fae8c225c158ca1 (diff) |
gentoo auto-resync : 11:10:2024 - 04:04:14
Diffstat (limited to 'www-client/firefox')
-rw-r--r-- | www-client/firefox/Manifest | 305 | ||||
-rw-r--r-- | www-client/firefox/firefox-115.16.1.ebuild | 1393 | ||||
-rw-r--r-- | www-client/firefox/firefox-128.3.1.ebuild | 1368 | ||||
-rw-r--r-- | www-client/firefox/firefox-131.0.2.ebuild | 1369 |
4 files changed, 4435 insertions, 0 deletions
diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index 6ef9f6927e47..5dc5acd76bd4 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -108,6 +108,106 @@ DIST firefox-115.16.0esr-xh.xpi 414950 BLAKE2B 152db7e63f9b4882ced06824dd97752e2 DIST firefox-115.16.0esr-zh-CN.xpi 657110 BLAKE2B 25bf61a14ed6c9722d1258e7ec00a6923a5f1c3968769440e1ebd6a7784576495da5ba5bd0012026281d51c561ddd9d199ef9b4864be72c2ebba90b3aa546154 SHA512 1a39f0b4ff5f7795b277ea3b1691162db9bcd26dd8d3da260a50349687245ecb1e5486afb17ce7508e66dfb5b5dd67a50b56f97b4196911f42b8549aad86ed91 DIST firefox-115.16.0esr-zh-TW.xpi 659312 BLAKE2B 7f1c0266bced59f5252e6b3d6c56e4d0554065c9729073db87c9a6fdfd4d14c80e9945b2d760b6c64329e92f0aeeff20fa9b0e4c9e0ccae96b8308c0d07567b2 SHA512 c5d165b36c86d3f0334c461c7af9a53eea8394890a6ec067bf03b4708d04d5360a6e69d5542bd51a3678a1c44bef12a927d4f0abce22fa6736396d6624c2de63 DIST firefox-115.16.0esr.source.tar.xz 515133700 BLAKE2B 9501b617b346d56f6de975f88974be6fdc3d4a901b2a1b952b6bbf6cc46384084260078d23c52bedff83a65bec4ea5ec78c3bcaac86c78d0b44e796317534840 SHA512 b6f93ec3d6acac5df177253c65b833c017e65ed6e78e96ff029098443928d291f6f67164aedb83d80aa28ee9dee305086597798238d3330e35183030e53e3550 +DIST firefox-115.16.1esr-ach.xpi 459026 BLAKE2B f3e2901c1f278e9fca3a16a63fef505bfdb596adf8ebdaf0593eebb0f5e5573206ba9c77774e6e6e083768db0afa9b4d76d30d8070cdd19727852b73ef2f1f7e SHA512 0817a743dc45bc156cde5e534f4bb833186c05c8ec6868203a9a7224a5ef5918f696c95b75a327460c2c8987adae1f8f74d34a14229ad55ef2015c17574726cd +DIST firefox-115.16.1esr-af.xpi 415186 BLAKE2B 3f3866c05c921ca82be8772b7792509aa77486a1a26e6fb5c15dbe26846ec354ffdc5df3650b11b1688a81af9e3e2a3a627d63cc74ce79ef13317898dfe2de33 SHA512 5296973fb877cf590e5423841924020ce31baa1ea525b0ef5219ca1c201b9077540e48320d39ae3ba20d9d0b3942820a4cb00fcb7682a0e1d18bbfae566e0031 +DIST firefox-115.16.1esr-an.xpi 499581 BLAKE2B f4f80a2663218d28998dab411433b01313ad589e42ec8a51164bde3fec48d3f523c313e27c4e09e8e7709231a1140d9911af4e7b03840ed44b539463c58db637 SHA512 312890679936b4e3b82d71c7afeebc185eb93094be0f82a69ea7195b336ea543fb904c55b7b97b14f21d99567a8983a2c55d72befee5a1f4e6c068c5d0775f51 +DIST firefox-115.16.1esr-ar.xpi 606284 BLAKE2B d846b62bb68f2c6fda9cbb1464580ca439128bd471059587d2eabd1888ddc003625303f9cc05e2b12588b09c9f5d847c802531214c394db42cfa50c662e3b39c SHA512 4979771f49105f564d638f60a135be69526a234ba05ed7fc5a940282e2f5f77850954c590782ec244394881f8ad4df83ea60d165c4937627f3d2ff598a87ca62 +DIST firefox-115.16.1esr-ast.xpi 491343 BLAKE2B 40d92c64b6eaaa69208df385331d295479e24e28a2ef0f27c04bfcfe50dbe02f598f647ef3f33ccb2e8d4a739b40b944812de48c063e42b6dad057e6214da6e6 SHA512 de552de272296a113d2eb02fc46b75d6b38e39efedbbff732dbcf7a7a7df757a26d5ef8873d35c6f23fa240298171bf83538b7393bd8906fb76dbac182212cb1 +DIST firefox-115.16.1esr-az.xpi 486077 BLAKE2B 94fe24dad3486066f9dc7eca551c2f41d0a8b8108f6e213124b6639f48d8e2da1b03e7a6c6f368b53580f9158338e48054749e7d0896a60b7c4fb9b714f96b35 SHA512 2f54f7ab157b2eab3e8f1eaa32a4711e71b6c16de2724ad5f835af1aa65c4f04256e8a9853d1583bc6af41fc583d821064359d152e7e277f2293a9501b013f27 +DIST firefox-115.16.1esr-be.xpi 715646 BLAKE2B d1ebfefa9b5e0c99cb344194fddc98b9539784984bb4f4d7fc0f9cc2788777b52d565940fd9c50dd156ad348c51044e630f60004b4e7e74462f78f80869f8968 SHA512 7ebd230753a21d25f49a9f423a95a8dda42c0c65df43dcc1bba531ed567848205fa6d386ebbeaf8761e04c14cdd1306afb622410d4c593974a997afba23bdf89 +DIST firefox-115.16.1esr-bg.xpi 600405 BLAKE2B 6e8676fb9e3a966733d1fb9a9e3f410b150a0dfdd491c4c2c8c86da876439b66632e5e2df011200eb988106772d66aabd62d3213378384fe76e7f3999fdacc18 SHA512 654f041662831e278ab29be9533d203b50c8973cd14fffe3ad31337ba31e5d78687e250cea4a23830031c1abc02ba038900455c493a7ca94bfb7f44c57cebaa1 +DIST firefox-115.16.1esr-bn.xpi 576358 BLAKE2B e9be7cf9b779fe1f3f27814f6110381312331a029bcf0f963e25fd17a1e53df3d588e955a69ca94c62313da4a2123b9fea3a4cae0ad5a1935ab335b6b705b136 SHA512 059539d153281f0fe10f7939e15cee903dc074c2d053bfa9aa815b501565786de3d874fb7b110944f84431cbea32e52841631759fa3b2ee4c16431727c8bfa7f +DIST firefox-115.16.1esr-br.xpi 585011 BLAKE2B 6cb9a0ee46b780aff7cba85e00cb83b7f5afc4c47c751dabc3d8b26734dd3f4a837e2de506db36ff2e093da6746a41d37fa0c96ace2ab8d4e99f70e31cc94112 SHA512 67f0069f50900c0ce6f7e3ca4028fd02bca37e3c50f73b1210f91c6af89d96be8323b6f2c8f89e924c2e50cf28acd011ce0a207470bca1b917ae5bf21b7c2112 +DIST firefox-115.16.1esr-bs.xpi 496787 BLAKE2B aeec5d75d388fca8b6ae0a745a3ee49be1c3fab54bc7db33bea12aa375acd91656c7f2ac9db761d5b9d22dc360783c495bce013be6af1da405f76d083084e18b SHA512 7f769506a370bd89b2fd31f4beee31c84d971b776e002729aabcd72523c89fda4ff03b8b5b51c8111065517dfbd480fc86ba97e6e1b396b01dcb3329066fb1b5 +DIST firefox-115.16.1esr-ca-valencia.xpi 539256 BLAKE2B 14ce549beabe60556ff110ca0b7da22c524f1a651aaf37da07e9da590f7379554287de80d706a3fd56a60ff860fa036ad9a8dd1f4e8899d6ef7d2722b2e5604b SHA512 f03300106d9a6160e2a414dd5dfa98309e21754d1bce48712966a5b44e9a60e39cefb4b839d50cd34f54a94a971ffc4ab0739dadf58d481ca112825ae1b9e01a +DIST firefox-115.16.1esr-ca.xpi 591042 BLAKE2B 0d9628d083e012849e41983e05206691b5eb4fbc4a0a07a81586d5f9ac82314144718e9279afde28ba12801341076043ce268e54da19fcae3aeb95d4d99e216c SHA512 e4dca906ea93832a0bd177c3b18a4bb29da36fb7e2a2294fdc4dff69a6650a17551b19130c7ed6f79fca1930bba4adac7dc0e00ee25888d392fc9238c96ebcb6 +DIST firefox-115.16.1esr-cak.xpi 586720 BLAKE2B c2403f8ff139d45961253e1f3215656cfe20ce1f4246eade94412f7384088dd8519ee241144e9ac337e3876e50ec33cf7e39f0cdd6aaa91cde631a1c5171abd0 SHA512 46f6cf280cad7c9c454c63c630cc7921912145d694f018439b8e0948c6d4ae04b1ce05292f2a870029ba421492ce9439353fe765812825a8a8d461cf68dc2962 +DIST firefox-115.16.1esr-cs.xpi 659578 BLAKE2B 71fd5cc6476f465d4bd44437911e251d06cf95d10ae08b16e0ff6d9c0e9e36515e1d1bf56508d38855e878ec7a72501cf4865c2620ce9dd42e6ca82e2ddb7445 SHA512 41c7c0004c18fd359f20db98e89982a0016be8bc110474892785267e40ba1dd6963e4b74e359e72ca61e52ef04e12fb31232332ac94101e203b38ac034532e5b +DIST firefox-115.16.1esr-cy.xpi 622577 BLAKE2B 391abba9dd7d3c79c3291c317e5e058d0afddbe042d9c9fb7f893bf8073b28e0be7e0ac32c5ca4ac5d71afcd10914addf9957773fa50c6cd7e5991cda4be48ea SHA512 cc04c4b8cfae4d0f5356b8e98ac9db57d9988c06c7385bfb6b50fe1c27dea5ade8a98b43b8fe111433737bb72e9668a40e5233dadee94ab81fa351486490b4a9 +DIST firefox-115.16.1esr-da.xpi 611167 BLAKE2B 44e2867c9294afe94736dde65c2fcac56f6f0020dd734ac8898d6d1ac723293e6b9c34a7c0fb95736d0b0c4adf8324600b6fcd85f5f580b4d6dfdc394e1649c2 SHA512 1e42ff8dcf69c5b99afd8afb7fc62c746b2ddd9f9a5c6536255bdea6b94e9f015aeba0de4805c87ae117f34eb066d358ca6a7cb527cab2a36836dbffc87d47e1 +DIST firefox-115.16.1esr-de.xpi 632369 BLAKE2B 2de7c85164432ff3767e2010952bc8ee3fa38d985aaee6da49c2ef2952c0ad4a2eb2bb0dc060193a738a9702c47eede1ce4acf7126b698bd6e84bd9129a731ce SHA512 65bdf35cc8037bc13400ad1bb82a65a99525889bd1426d333643afb56ca4c45cd974cb1389067efec439e048384851ad06a270e3bc478d65a48cc8a71eb36c25 +DIST firefox-115.16.1esr-dsb.xpi 651466 BLAKE2B d7fcee8f4241a9b9410de4f371c32d52032583e38564c9b0c9eef29f8affa525ba4e8e47dfe43f0c410226b377866a64fccbe858150002f84c1c193297ae8118 SHA512 397d6be896f6f2ce3fe5292169c343ab0b32e0ec335d65c39b94a5ccd4c88b02112f9de4bb130be76b1fe705e0411608c2570961ae2ecd3c87b8acdb35927232 +DIST firefox-115.16.1esr-el.xpi 734616 BLAKE2B b18d91d0cc471ea34d146c11cdabd66cc71acaa24f2abe0381f7e6fc8f592ebfddf610f9b8f033b4ac1af435489ac5e2f0b961f7309a7ca4b39b196507189c5a SHA512 5fa5a9f168080263677b9e9ac0d8ca68db22a4d9f09ff30095d715e6c141a2b329786ccc8bba6dcc2c0d260d4286de570841cf6bb967eea19f16b5fbf9f49557 +DIST firefox-115.16.1esr-en-CA.xpi 584136 BLAKE2B e05f25517c8760d483d3c80fed83258768f358826f12a1a99f8cfb11960288e52319a6401077fadfb27843cc3365ab61434a640bbabd4f33948855ed4d3651ab SHA512 c4899cb6c129061d096422a2512fb0eac0b7905eb4192e0a4de2af10bef7c02c79d31aa1d356f41abdd461a1e9e453933961b87375040aaff248fab69bb8fb6c +DIST firefox-115.16.1esr-en-GB.xpi 585203 BLAKE2B 57ff4413c5b803522d91b5db67cb79baf8701bfae4f93d76eaee612bf4b212fe77eb59759a0670ad9e4081a0010fb27e49523a0dab4ec2a72f1a6fd505743b96 SHA512 873ae7ab32eeb37bee1298320c9045e1f8a0b4fb3cfe39b3d1251f80d3c212722c822d999c81415cfa82b7d05b654d2ca8812dc98bb5af83eaa97ebefc897d7f +DIST firefox-115.16.1esr-eo.xpi 613402 BLAKE2B 60d2aa2e173519e92851cb3bdebb4ebd0b0a621d3fc9df8c832718ff079807668dcddfd7586da2591531a313b67e4f4adbb46c3e81b384fe921022b0aa96c2f3 SHA512 70fb38e92dceb9615dc8cc84b339d5b91cc0d46b138301070c04921a47cd3171d8ca0c0a994724fb31c7e2aeb095a25f742ad35e7de97cb0edb9c3923c44bcbb +DIST firefox-115.16.1esr-es-AR.xpi 628379 BLAKE2B 670649b2bdd9a2752111eb181608f22f836ae9bd1eb0f50c2d9d4530eb14f558aa033cfcb33a56063a7053fbc4112251790eecc78d76639c19a0e45ce4669e0b SHA512 c93d38f5035d680103cff3ed10b4767d99a88d53fe9eb04a6d9f9065ea94cce53be3225bd9cadfd61534700e5427e163fac4cd0b2dfe8c51912a35a23c438a33 +DIST firefox-115.16.1esr-es-CL.xpi 627711 BLAKE2B 74d9e36f4841435f9e81f9a99b4c60e1e0835e4c3069ddf9317df4a56ea9098a51615fc2f9c1270f24539aade9d42319ccccc9c27b8a15775483a44646d59c37 SHA512 79a67851f695c0f0522252ec6ac1233099a0c06b5f43ee646bd73555f7ed6c440c8472db501c96182f8b36bdc7641eef485d2f3d11c921e33ec2bf20747cb107 +DIST firefox-115.16.1esr-es-ES.xpi 621479 BLAKE2B 3007a707cfae92fb5de73c9c20a58cacf68ebc3cbc4dbda65b98430bb0245c2d99c0cb9a8d0be0dc96a08bbaa41bcda95ee01f8f8439a71188c9d76ed80151ee SHA512 3c3e5b10cd8f66a35ec45470d7ac15b0f8172e7e5b2b86d47fb02dd64ace4abf1b8a334a526048288b15631d827bd56f9508b4e1294c7472fb22b06f2350e93e +DIST firefox-115.16.1esr-es-MX.xpi 597930 BLAKE2B 4c676f89a9675ac4897c321cdb55fb93c802cb3af31003ee1f8d4ece667f8f351cf00e1691b38f449e33f51ecf72b2ea62806a42dede978f9276d9aa869e954a SHA512 0d6905b7201a6248015a5a0f81b3962f8ee59a695119d9e231c233ca91c86a7e6c71d14392f30584b55ea7c5e348e56a0ac18d34c97b090ed5caa5e29e41a40d +DIST firefox-115.16.1esr-et.xpi 533020 BLAKE2B 8d00c2a05283b20424b0ceda25176c5ff351e04563f32a09c08a8f0dbb53419307a3aaa20db10bc0dda90ff4590522205f82e9540fbf1ec31a6d5c1d51df26ba SHA512 2c32bcc3acc05b8a59da202fb24fb94acd34d8be4c3a6327a760cba2634211224f3eb6ab1c6ad9cfc85837abe84a54f55b8ddcdbea5e0bae53b69b830c121474 +DIST firefox-115.16.1esr-eu.xpi 594649 BLAKE2B 899bb425faa7c138a168c86fa33759039b64f3317737d1c315160e286b8cab2aaaf205dca6d2ed3b6bfad3fc4628db3cbf5ef8c6f2022b701c0cabea6492005f SHA512 a2cb6338c9104aa187a2d4fe5ad393a469dca9129995b8d5bf9a1331831950763c67e1166fde3ce8d321d463601c0c031c5f0235384dd06ea7da8c6ff8381060 +DIST firefox-115.16.1esr-fa.xpi 584358 BLAKE2B d84bd7ef0768829713e2a65dd7ab68d10c8bbab04946dbd8e5b7dffc5212ee9f73757c48599dbe2a18923358a36599f57a943e0254f20ebc3cf6fc3a9dd2235b SHA512 bd0e1ef2ecce3d0859af3a57831c482fae36ceadb7c038e63c6b6101295b6678e98a1666c0db2c3e9bf5ca34e700efc6d72e4883c2592ac66a580e9ca1a94c94 +DIST firefox-115.16.1esr-ff.xpi 471730 BLAKE2B ebe860d8db2fbe0fc64f870bb9dfd2feaa80464ba3c0b0165fda71e566a117b6aecd5399cb6fb26bea43612219e2f6283cffb1d34102c5dca65b970f2c6c4f55 SHA512 d6002ebdfce007dbf68cf6a19ad042a5fbf19dde2e6557d74a3baa1d7c644801f6cc61d03a47ef5aca562314f850c0988713690126278e809af2dd33651f88a9 +DIST firefox-115.16.1esr-fi.xpi 604631 BLAKE2B cd4ea0b0ec70cd7d523499d81d5835c6875d19d670f41085ed5d597a9dd64d23a56b22fb8b5e160767df25f58861b83f1129cbc29d6b2255b6529604ed9f98ab SHA512 d067edf43962b0bf42a7868da0420c14980e5c56a22646d925caebf5d1c9d3dd2e88c0030d38335f38762454b22e87501aed2e961ced455217e3aabc1a9da653 +DIST firefox-115.16.1esr-fr.xpi 640839 BLAKE2B 9c99a4ceeed24bb79359c8e0db357e6d2206c434b9e4f5a81500657ff59d23e932559872398caba780cfdd7e84f68d712b7c864d1acd6c69ead744cf04180f8b SHA512 af3f7d66c2c15aa4b0b6789d701504c33825b5cc94f0bc29c78c5eee4e77226c3e0f213babc239a1808c1535b83475a9bfa2d88e685974567ea0033113e37fb5 +DIST firefox-115.16.1esr-fur.xpi 634497 BLAKE2B 74774e2da70fb510d404b8878edfd1419488961e207961e9cd0e6a4c82275ae7c9802a59a76532e13ec424b6f9f7ec58b877942d4975b6ad55d43f226c541390 SHA512 aee3bdc7c2a6ddf48593dc2f975a42d71509295afc6d57ef759803c8a8ce9ad47f4666e599f8a346c10a0936d60d770dbc83f5c1e5092a5179984471c0a78416 +DIST firefox-115.16.1esr-fy-NL.xpi 624083 BLAKE2B 75482166a0c949457b0cdde5b89229af56ca4ce3454fe9006d3f70f24c889a52e960945daad01f750e35d3571c3ecebb484e025ed56a062cde3fbe300c69b13b SHA512 2c32f7786ef6e06a4953b2f7bdb03be9624eec19d637a241e3dd0b8dc71c8ddc97a6d552f2ad6db08ff6ca9b59b4a949b52954d06344c21469d339df64f28219 +DIST firefox-115.16.1esr-ga-IE.xpi 467647 BLAKE2B 7cd9336268f585fe601529b59493f1e64af24a2985437be65f41b70bbfffa2c1734cb33670421f5ae75f2c9c62f383f06c5c04eb2afe31a59fe54c8348140459 SHA512 5efde4f3baf97cddc5a31d546e2a0b02e720c9f97d81681ef4af5600f7a5ec8ef6b81f1367f93ea0999f2274c1be640c43d8d871ef559134804f69f460ae1181 +DIST firefox-115.16.1esr-gd.xpi 589973 BLAKE2B 5b91c2ec3f81d985bab62c13c0adc79b8b676f88ce504d9ebd9737cd7d381cb517d4f666883286b4c2f8cfea97423f1055d1924d59edecfda828ddeb04e39dd8 SHA512 598b1442aeb4750fcda61fe3b2e3c1be676c4c4e180143db46a851368a023d2e77b84a8437b428db20f686e1cf62a6dc6e7725bd540273b976f79121ec776285 +DIST firefox-115.16.1esr-gl.xpi 599974 BLAKE2B 819acd9b4739a670418e161e51077657ec13d547dd666eb65dd09b5c47414e097c597e7b014108be5368a25daa75f60868453d3ab6a4a508437ffa927ede554a SHA512 dba0a9b19270a754bada9bc32c1c12aaf52c18bd46bc6488f82fd87536412f75f208ad02245ca1ac109fc8cb27b90db6c30a7e3c287869fb65fe12dface20ad0 +DIST firefox-115.16.1esr-gn.xpi 637891 BLAKE2B c9e3859efad4bb86e12b44941191411671e12fe771501bb77cf78564284574846b957f26e50fe09d9729e8388b5b9fb3babc2decefc46f62a5406d62b2263689 SHA512 5d6fde884dbf339787de2a49892c608a35ce7777893855217f8bdadc54fd53bee3ac69f75f6cbaa59961eb07cdf07d198b87db277d51ba81209fedd1ee78640e +DIST firefox-115.16.1esr-gu-IN.xpi 523390 BLAKE2B 016c4c8ea2a05aadb75a9f640a022659f067e5530b7dbb669e3ca170514966147cd2fe868854acca3794859d1b0bc8b3251bbda5c78286a450b2c1fcdf6dde86 SHA512 29a32a7c3b79d0114faa5b30af18220880f6eedd0a5bfdccdcb62b584fe74db668c3ca26739ac259f8659e05305364b336bf94b80dbdf941a51e68c605ab6b0e +DIST firefox-115.16.1esr-he.xpi 629100 BLAKE2B d13d70f959a7778311845dfffd09ec27d6972fccb364ab75ec25c2deab5410915505fbc2640575693e1344e750c4002e2341138406f4f740941c261507107d64 SHA512 ba65855220425fce68ac40156c8ae760b764f58c724559997512c8520768ea003d777ef412bbc27bd51ffb7617dc8eed089cd3ba7ab6f5949ef1ad665bc4de36 +DIST firefox-115.16.1esr-hi-IN.xpi 561253 BLAKE2B 08949d0ebcde8dff0d41d58c42fe2fc18634bdaff03e4452aad4e8f006b1a6eeb287bb3a84476d7177eebb78d735a998aaa9f974e11dd280669d0d965ee3b624 SHA512 e719c11acd87d483029115d325dae4d72c322c27830eeb3fc108a8f904d2ea0ede2e2dc110fe0d0a8d271cf6116fdef44334dd82a7d7af1a14680633cc9b253a +DIST firefox-115.16.1esr-hr.xpi 554535 BLAKE2B 2f5a394fcd90a43c62413d697ffeb687f767e6fd5ce73b0c3877ccd5ba7ad3ee21cfce5cb5796cbda5639eb00f1e33c369fbb184616a61d20f762b1512f8b0f4 SHA512 77926389d58383c944b105e602289d2cbbddfa667e3c210cbf337b0347570e5a93274e20750633975a68310dc0316e7e3bb0827de76860363c6c1449d8d5b213 +DIST firefox-115.16.1esr-hsb.xpi 647511 BLAKE2B 59df58c370c315b158134f401789c06194e496fbf146aa0813baf50ea7d0da7de65faedbe875cdba2c7d60be8b1527373b0ee5e37258b4aa167806b6f88d8794 SHA512 552a61259d9ac6310a06a4d93d82cfd08c17bc865fb497777fe30c492df2986c6a0ffb7b7f58852e38390919c099cf8b222a4807c207f52b97675312f7203064 +DIST firefox-115.16.1esr-hu.xpi 649863 BLAKE2B 863e7084843eacbba897b06485e3a2c24be34e7ef3f9800feb43cd7cb2dbb5632283a89a42b75e05d35d552805299de96871f60fec5c9ed6b259588c0cb71e1c SHA512 fc14552e97f45ad1511f7a54bb24a8cb377099ad26e42d40d62e822401de77306b92f2b7826f0b8ac96b0b7d313e5ee64019985d9baf17e8552e109d0c7dcbc4 +DIST firefox-115.16.1esr-hy-AM.xpi 647647 BLAKE2B 55009ff12907a742d8fb3b2d3c212442e57ad8fcd0076ad315290ad05ad57bfc72dd52c6559fbbb2829f844209c2c71d93aa27433929942de38faffd9c5452ff SHA512 0ae7c22ef800dd65bd3387c09636d16c0944ac04c51dcd0de99980a93b531def98092ca953a23552c4fec7b698a1fe3ccfeb7a6d9d4d8375eb0d4475b3cecbff +DIST firefox-115.16.1esr-ia.xpi 610842 BLAKE2B 69ca214afbd25a81c864dce32d4f996092933f9c660fc923e053d1256b76e18c146ca31c6a084e7cb5b32dfba965bdf68d5f21818edb75cd4fa428a57c849721 SHA512 46adbc1409f6292c1ad1ec1e8992643764d796563232caf94e81f9720ba5d16a668b872e0261ae2e53e14221c477e2302712d1cfc50399bd86ee708cdbd15020 +DIST firefox-115.16.1esr-id.xpi 573424 BLAKE2B 64b314dea9ab608f5a9cc3a3c5ed83d2c99ab003ef97114fb0f0ee0320be68015120b78ea34b699b01fd2012c453271ab6cfa0ef51a309a896288873fe01d022 SHA512 1a4c5b2986312b571e4ce3de650553094b70d31271797785801a5f7045e2adec26e82add24d874e4753e45bedb0f19c17d50a374d9124934a8c264ce7c7a1abd +DIST firefox-115.16.1esr-is.xpi 611649 BLAKE2B 63b9928161f29ba563c2e4891f18bb16b7ce7115f2b71cdc2ff7a73af312148c857eedb6f8dfcdec099807eb715b1c4af7e574469c3331123573d7fe9093fad7 SHA512 ce71308555025476cf4ad58ab691318c4f59e6ee7397f7c351ddec470ae8798298a0a4cb9b5a3d61422c5af9e3e59b58c5562675b24baa125ed22b4d977617fd +DIST firefox-115.16.1esr-it.xpi 567124 BLAKE2B 9a931ce1a86bb1c30597687686414ce65a6946f35098494589865939b7a69db1ac3a35564e45be3ba372de857ec34eb0dfb8ad9147df3b1bff71f2d49f0ea027 SHA512 352ad02c398c4f1962d7c75f06fe28fe3b831cbd3ddcfdba63c2328dcd9c7dbaeacddc5d5f458c343550106222f4ea9de6053d71e9c5c8dc1c7cc7ad5072b8c0 +DIST firefox-115.16.1esr-ja.xpi 676022 BLAKE2B 438849214eca2f3d5873b156158f8540a4c4ac34c7adc52d50ebbd0a4be9b3111ea89abd245da28c60cc6fe0b55c34e4bd9329ad1b4e4e5c668c617b7eb91c99 SHA512 0ff28a3f4b798e3c4b2c20ab6b788cdb7c998911de40d353122fd0114beff872c97a0151afaf74c28d1e9b34c7fb0ca67631542d5fc364c185699eae5319d475 +DIST firefox-115.16.1esr-ka.xpi 657999 BLAKE2B 698a18aa91527934c3ee19ef9a861e4f6c389988649efe791e8b1433c51b88bc8ea3921b9cc9a150e0e2c96b61d9d47fe50012efafae4a3319f94e139978bb38 SHA512 16387fb345a9b710297246e0cf677464fcd512e3c39778dabc9f993080d80ccc7d36a67330d14161c761edbc67b7da182f362bd4426879f79ccbba6e2f6bcbb8 +DIST firefox-115.16.1esr-kab.xpi 604023 BLAKE2B 2186eee2f4e57d2acd2815bc5771415a3bdbe0fd2346bfb18307932139f74150ddeffc98e5cfb0adfce366fc0ddc8c797c9ebe16ea89ce1f12d012442771c6d0 SHA512 e49549a4c588546f6dea8e8ac2c5328abd97619e94c10af00153d8eb6efa8f27dee8d4150bdedd9b890d396cb2d809a6366bcebae6bf1030df077f726a7708ad +DIST firefox-115.16.1esr-kk.xpi 709062 BLAKE2B 70a92c54c9409a89828ea7b9657fd6afce2ef3061388d2d85dcba4914a32d40d40e34d63caf1a3b06bd07b9a937452d1749dfe24e0189a544e60798a745d7e18 SHA512 c1308eca05f6de826b4c8fffec4224d27d3119171365ca35657aad4964fbb6d4f33d93b6c375da03dd689651f66c9e2638b14cafa850b1ad8764be8ce852f202 +DIST firefox-115.16.1esr-km.xpi 522323 BLAKE2B 7cceaa87cd3c09089a1d7d3ca86bf1ae10d2c8411baea4dc8bfe45124d8faf76d8bca092d45e763be5618e49ecac9011542a1cc9b4231572f11a0f6d49491507 SHA512 fea2f498033fba1442658e3cde01660f86db736b68f6a357600adf394a2530ccd7e6af69d8dc3aac1b43adc87ea2623e8f28f05b71c28e9cfc7b0728d8d694de +DIST firefox-115.16.1esr-kn.xpi 488204 BLAKE2B 85a572a4012ed85ce9070ab327c7fabb0bb2953f70ef89b561431881623138425d8428ae16712bee06751222bc1060c3c51b340b529e2b8d40795740fc087caa SHA512 d50663ba2bc8d1cfeca47e2da2e33d7e955882db1f0396d20b81c0ffd6d9115e54a1797e6bc3ca1d32bedc4b3cb10d1fd7157344a33895aeb31865231e532b8c +DIST firefox-115.16.1esr-ko.xpi 662466 BLAKE2B d0f9ab607db54c14174f226c32e6ef2f1b9271b077519e65b0a08a1c27f34cac6ac3469c5551d42828f7d5b3efb158f607f1ad2b805b99807a8be97506d800e2 SHA512 7e66c810f2a219afec83edbb46b0da8b0825947ea8d64e986d21450cccd28c8df9a0eecf8c43933f54323911fee32256b94f642c206eba18c5989ca1dddb39a1 +DIST firefox-115.16.1esr-lij.xpi 479124 BLAKE2B a02f7e8e25354a75ee8beb1cb03a46724e33c3ab31a747d96b7ffb7c70aa560308afa64eda375b54b0897834b3ca43eaeaedd76dfb051538beb94945af854571 SHA512 b0e704232400aa147ce24c5f3aeb579701c8656acf1f14fbbb5c1a9575e2d62701fa14f49b0412342735d97a7cdcfcdf5942ea8a262dd0cd67ba7a05479b252b +DIST firefox-115.16.1esr-lt.xpi 566218 BLAKE2B 8056d83ed2c6457d9c82d270a668b0cc7f30aa7a18542fd9071eb6b1985de43cccba0ce191db606ea6a11158cf3e92622cdba72aabf69a8cc20b45fa04e0ce97 SHA512 202839c85e666375ac524dee26fc7d8385f22f08cce23abd4ed6271fbb2005ff09c2388643cb45e180e0d921ab9407ca7e55adf6dc2eae62f4916c58c6e63bf2 +DIST firefox-115.16.1esr-lv.xpi 568803 BLAKE2B c7511a18e156d828fcfe3fa8dda00d8bc3740e1db40ecabd48320623031c3090265bcce5a86f08721dd360b2cb666f4b5fc2eea3db5144c12c516e4aa0a638d6 SHA512 8ba7959d29c932e7d09fbbdce313992e3eceede845ced7642b31c23e8d1c5c486e3a5343cab0136c385b82aa9e44073de553fc5f5971f5b3aeba831362de086e +DIST firefox-115.16.1esr-mk.xpi 490534 BLAKE2B 51707b8f3b42ee80d0bdcef8b81207ab29b76453c8ddc04c90f9c6c6d19fe60f60656af99f600ff9f83db029f998bcc459aead6ec6eebaa534d2d6ba5d7df2cd SHA512 b5c451ba312a8a1361dfc8a664a1551de6fde89455ea9e2f6303ed7a2b9b88b5d064d389b6682cdb0b93be638325e51ebf21cb172e5367c916552c4e01b23bb0 +DIST firefox-115.16.1esr-mr.xpi 526880 BLAKE2B 547677b78d3fb0e7d7f0f475f52edf43c853fdf9ad7c1587a3d3d8cea3383347cf6f10b859e7e58d522fe202d0fc60c1e2d119cc69da0111c43d3bde6d45528a SHA512 66daca60e4746b4b37d4360afe6f5bffdf3494ec7796995bfb4b0f6b04bca4002ed6e993573bda576738fd38bf7a360d828c267d0773ba19307fc186f872b2f2 +DIST firefox-115.16.1esr-ms.xpi 445501 BLAKE2B 7efc1f2f4297060e274be66c4309b9a32f1cb9938de974ab2baba3019155a068222bb0dbdafb34d345ffe4d053c72dc040e4466fc96d4be4c198aa669f444f96 SHA512 ebddccc714ffcd5243b8f6b97f49b6d23b1949954115225770fbb9e3d0800a6b9238261335b92502e8191e2678b2250c5efd8d906b2258c65a7a5d08ee8de1cd +DIST firefox-115.16.1esr-my.xpi 514922 BLAKE2B 6a532f5624d97bb8535219b024fe269eafd6d0cbae72067c1091994e37e2328277cf7bf08795bcb48e0b1de2364dc8ca1cbc3a76be6661225f86a92fc93b8125 SHA512 c3aea17bd2497efa997c8dd08e6d59887aee4d52d19d7378385573ec21ce9450d0a5b6ebcb53dc8cd8b354dbacb4cf042068224a786e805cbe6f015a9b048978 +DIST firefox-115.16.1esr-nb-NO.xpi 607313 BLAKE2B 292802e4d8c94f9a14cbf66419100c6d714a582164713651a0564f70f8593b42150907b23dc973d05d770ed3f108fc3dc1bf81c627712f268c3ffd1a3c6c4a05 SHA512 a957ae3638156c79506da0aae36adc30e75d059b7f9ff17afbd9ee1a471ce39e724d55bbf50935e5577a136a4d1234c4046d32223009cafee608b35143a16bc7 +DIST firefox-115.16.1esr-ne-NP.xpi 506997 BLAKE2B e84e65d643397e2113a64c98d4944c1ea93aad1b9e33672b4f47a924f9afeec99070fbd7c37c37e8b861e0e4de6122a4cd872731c19b6718c1da63ed7a25f68d SHA512 ab9ee80402f4e89ac9981ae2b459c03e51bed0d77843f6d4925036a901b2ab6b08417b3224584cd88aa8ca1a5f3b41bf1e6f049ab1e8520a35876185ce0e29f5 +DIST firefox-115.16.1esr-nl.xpi 617752 BLAKE2B 7e92c22cc41d08923c74157c720dedfb0393208c4d0be5e1b247ce22a273480a9f94a97bb8cc5bce54f74b09354b689799483f3b5166521e9c5537cd336f51e2 SHA512 375cf0fbe56d6caf0b2ca46d5c930cdb5d6bdc1d735b22bce69a625e778b2de86ca7ff01fdd26fa5da2ff7a1d519253b093cbd1d6983e1aeaebc877a455a794e +DIST firefox-115.16.1esr-nn-NO.xpi 609738 BLAKE2B f02b8dbb34b7d7a3dcb389fdcf4f5fe692f7465053253f85a72a4932390cb49511046cd2333db9e9a12e02ca78064f79fad82b7a301f482957c4cd082afb5bdf SHA512 9dbbfd80dfaad9549394ad3df4cf69389c4d0c09e20ec983dab21464a07768528d9fc9558f13d5dca633a673576b685599eb3cce35ee7a054396a47fb80eda8f +DIST firefox-115.16.1esr-oc.xpi 607914 BLAKE2B 2c0563d38e28451f4098facc6c6bbe75813e66594ffc88bcbfa76c4661d796f99bee5a62b45a5243a337888817018d64a9523e1405b245496afd1d7a7a50abc1 SHA512 86f24148b2c98288ed47ef650408cafc8ee7ac5a01b8d18a6d76904cc782d5e5716b8f88ccec1bac17e135f262b4c6761644d7819bae0eaeacde60e5b7f8915a +DIST firefox-115.16.1esr-pa-IN.xpi 687702 BLAKE2B 29603b7fd61ef8316851edaf6eba9560580f82f5a75b374c38b7e3282bdd83103a3efe7ea3216653598964a30cc2219ed761540d734eb6a7abe76476d5b39adc SHA512 85edb96bf0d6feac755e1aeba3b0973a328825358a3844eea43631de143cf34fd32d32f954cea3a7f82150bc1ad3250fb8aed4f8d06a793725ec1bb89d9cd3c9 +DIST firefox-115.16.1esr-pl.xpi 636469 BLAKE2B 47b8973a05df7ac01eefe51011afe8e5a5aa60cadbbf6f00edb96e2db7fa3dcae9216e13806647f67b56f65ebbabc0435f576e92160882ca7182629658a12a19 SHA512 16f4433cad3c5ba024d7b27b10b961a27b0dc8c7bc172e647cd36c695952b1c595566403f413ef5830cbc04a84042ecbe42ce0d7a48d7697b6a172f8c6d44383 +DIST firefox-115.16.1esr-pt-BR.xpi 622530 BLAKE2B b31333ae19763a7def4e4f988e07595c6621733c393f6f5e999079d0866d3b8fc95cd1f66c36f5c10b9b7daf0e406095e6bc0a32d3f174babfab97f1fb6459d2 SHA512 f36357ada9e57068a89b7ccc1ad9d5c2e5772e0c41345f8c4e511d82820f8e604c21a61e95482c4dea5247f0338bd1344963fd85f802e31e689dad8280ebf994 +DIST firefox-115.16.1esr-pt-PT.xpi 626582 BLAKE2B 8a4cee845b1f50c979afd0ca5fd03348e96fa744c9759fad471c58a277a2b4d250cb89b352ec2b926141116e14c85531dfe551f18ef0fb78f0bb5348808f0654 SHA512 82bf8a3348f552b9a5dad86989a08872031230dbaef4201009920c853d08b30fa0c025b1856f5cee1eb7814664b6bba14cf0457050ff9644abadee9f20f86093 +DIST firefox-115.16.1esr-rm.xpi 617344 BLAKE2B 6c8efb3e890129c919dc5117a0c040057f98f5af1ac63e3243b6a7ae12cfa17b643dfd601fa0c07a2c3b296e735ca9b0bb9fbe63cd50cdce8da94fc82ee134b6 SHA512 867080438bc274fd4e1f85cb2b1dc18b9837e4dc7f3ce4cbc54f6639364057c2753e4f28d2204a7f03bb98dd6bee29d58c0fa2416686f90a18a47034331ad668 +DIST firefox-115.16.1esr-ro.xpi 543540 BLAKE2B faece563c42aa6be9adcae9b504dcf71c5a3003de51d1906130ce942cfa3fd97574acc42aab669e1796f986a3cfa30422d4d44da83e1c73b59b16ede081973d4 SHA512 9b4668c2d4a3a52a5cd72555f76618a647994f5f1350db9af130202dddcd5ade766731998b73d525490ca642fe91bbdd1eb0dae94e81eb8a808ca6392daeec57 +DIST firefox-115.16.1esr-ru.xpi 721754 BLAKE2B 30308a6113ccd1ceda078cfba00c0f834f0bef87c858a22438a41b976f1399428b26ea75aa377cd8a2b487f4e56abd6df5f323f1cdcdf3ff35f315a548fd192d SHA512 104c6e50da3244e3484a0adf4e38b1ed0543e83ca16ad788d5b1aa222e609c17d35a57d35e5b695dd22a6d058ad85bf05ba09401b4ad27af4383f8f2aa797416 +DIST firefox-115.16.1esr-sc.xpi 582736 BLAKE2B 89a48b15688b63bff297f8c62377c35f9a10c2af1e1e974b2cf7f3e27e0df5eff8b4d0e784f3caecfeed8f70990eae99a916b75fe408b1ec3f0a5d89491bcf32 SHA512 116723e847793b736f872bd616f06a2adb9b529e14df88a9c3aba8a95a271cc1d810ea699d73d748b93e61e310877074e26ca58649c3bc98514cdb9fc153196e +DIST firefox-115.16.1esr-sco.xpi 505667 BLAKE2B 36eaefafcaa52be24e4ad50394ae564643df9f3fc86b74982d0ef9713e5635a5bab0b872a8e9744420920d25c3c871e368d8a03598d1844a452e3a6eff37046a SHA512 41cc0da8fd90fe73c56ce68c0dd281525c271fecd41362ce715639fc610b12913eead9467c855295a8d7923b8455e06e6fae5a6679d0adc9671c682b82fec86e +DIST firefox-115.16.1esr-si.xpi 606446 BLAKE2B aa8c1c75cd2d4572c6f83899caeeab314b257c7cd0960b598b60f8a8e970d5416876493e3e9bcf8839e6bda7b16d8de857b6033ae54e0d99c4264db486b4569b SHA512 8f1570c82b9f8c8179407bd5d18b1caa19ea7c9e25a2530aed91bc1a7a05cf2b7fc8c9b4bcd7d2c205ff801d018968a7883d5df3a9f17659abdc9a403a8263b5 +DIST firefox-115.16.1esr-sk.xpi 652365 BLAKE2B e8cc6d0d8bcb2b083da7b99d8126581416708e78ff0e6e2e7c0d1beafe41cb28eeaf13ba9004af248f9429731f6723299191573569208a2a959662b6206652c5 SHA512 485d736d0b2ed574d585c1bf7d1436f4017bc0adb21192602760b18ad82e09f440b7cd14e14c929690ba5e087503fa2be17eea78718966c9d0c4d3bffe68719e +DIST firefox-115.16.1esr-sl.xpi 615214 BLAKE2B 36ece0a16d7e81d6630c022cd8236b11c040e7bcb868588b1648c855c9dcb1f7c86bdf080821ff0246a441e2979e1e0d0abd0cdbf774ec34cf2035c5548bbe2b SHA512 5751d0f92f587fecede5c54f09c8dbab9f9d78f817714782d382ee5c38d41c4f9393697c9eaacaa1b12d6153a248d9d1e2a553e34a3f7c2020f2eaf2dfa56726 +DIST firefox-115.16.1esr-son.xpi 413680 BLAKE2B b88d7c8ab66ef8be7193b89436738dcbf9b1609b24c359de102bbbffb5a7bd3efee0d204f2dab9b18e3228fd970cf44008687df3ea1e3b7cec47083c34d6c71c SHA512 9d418c8db388ac75229c25c1fce888a615ead7bd977aef619f66ab80bc4ec03ea8052e9c16517309633e91ca4a82a2692e57e991a1dbbbb50a389229cc50d145 +DIST firefox-115.16.1esr-sq.xpi 636154 BLAKE2B a7b05e2d9dbbbd659fa60b3f084b4f7fe736aa0f2aab94883bbbb65a85f627ae27130a45cd9fdd9d9b1076490dc7e640ba8d2aff438261a81d24c8d7a9d14f41 SHA512 2a4219cc1349bc05ba61655bf798b7f1eedfcf9c12874a0d7ee8ef437245008de32435cef7d7c025327156597fb6b1af4b5000885325a1a0b96d4bf8ae9d0e51 +DIST firefox-115.16.1esr-sr.xpi 633256 BLAKE2B 1279de01fa75618fa0c3e0f6e407f34417ff1a167484723413d2dacd9786f1a9225eb638d952a40fd4fb1d9526ccde3b48384995c223449625eed1341cc79414 SHA512 3e929089d35a63acf03cdeeadd53164855378336fe12d3e616e35755d540b2ee5645b13ec234081933fbfae7ecb59a252056f2b3e9fef137528c8f55be4c8e4f +DIST firefox-115.16.1esr-sv-SE.xpi 619430 BLAKE2B 92736946b687549936614bf12ec816ab787fceb881aa6c64b42321a6fed8584ac6058f779ee5ff4003608540fd03143902242d57d2e1d2e9ee5d12853513ad5f SHA512 f36c57a74d7768eb9ea4ca5597e0c3b4fa48fc1e28cd5c4c2c28ddabb5cc825b12b3730b6ebf3f02491aa963b9f267d985a1b7c38748c590dba35a271f2bb11f +DIST firefox-115.16.1esr-szl.xpi 521043 BLAKE2B 88af36106892ac6e1c2159c03915bc02742add697bb3777f90e218cbf6a53f1ef939d77f652daa7f668a3b59e91b18e84659c169f70d5548733b4cc3cefff8af SHA512 3e94c081f3463f8398b27f237ad659844fc03b8ae34b32eb696b409786ada001cec644995f1779a95c93f09400fd95db79793bfb29fb231ca826bbf3bf925905 +DIST firefox-115.16.1esr-ta.xpi 503629 BLAKE2B 45d6f750412eabea2348514b0cec0f09caa0c5a63b7bc0611cbc8f8ede63e0e205a82c652425576388764b4b823a9df4efdb0dea40251e4372f9ff10d43d354e SHA512 62d8274e664f76d4258417f1f150896592e882b9df787e4a61f7015af57ca55ab3e7e8824efd258b2b24f733b7b48ce6e1cc44ec07fc79a2ddcdbad1acefe7b7 +DIST firefox-115.16.1esr-te.xpi 556763 BLAKE2B a4721ddde20d84625c6fde83281b2302a629b6a1df6b4ed994c275da39c9a4e86c903adfc4b2372e97c21f0b747f92c4411f03fd1610888f260805b0d0c5155e SHA512 956a9946dc6eddc83c5aff9f99ccceab27104060973d9214f8ac8065138843824c40c42a2a4a89cdd0e183d31afa0d4a8709adb93dd3462438159b83ab11745b +DIST firefox-115.16.1esr-th.xpi 693428 BLAKE2B 86145452ddfca2540963d19b3d76ba021403cf2aa06e77fae01682ce13ff1e7a8e6daaba2f9965dab14c0fa9841fc02f2d78cc728d341a591c26b110f68fb65d SHA512 0ed330ed39654999a4042ade510a85c4941bb32f8dd67219e75c3ab1df871385cc224fd88545ace6bdea2eeb6325624ca2762be92588fc5801dab47b4759d919 +DIST firefox-115.16.1esr-tl.xpi 527799 BLAKE2B 6130242ccec81479dfd1fe0ad63c4912294251d43b8ce4c00dada3db4f2bc9d0b1d261942503b8ce70590f5e691c6c9a82bafddde8795fcf6f4e9883852b2907 SHA512 557525018c5f48260521a2ca19d90bea165a179870483277296d91c97f609dc5f2db5c5751d5748f67106d9367af5f2aa90f18ebfb33488dfa3f2679b3251daf +DIST firefox-115.16.1esr-tr.xpi 631876 BLAKE2B 77cd6b27b56a4684aef2a84eba6f649900e6912589129e00f194eeaf1ecc96bea8b5d0bfab6808aaba5944c2f5338eaad42f0c740401d429b543f115e7fd9b4e SHA512 533fefae4084b87e2d94bf1efdae08b6438152d85cda42678ac05417c35df0837752d4a60d7f3fc64aad6f666b4afed292d55c65ce6d5e37070abcd0d346f378 +DIST firefox-115.16.1esr-trs.xpi 498677 BLAKE2B cd7bafa356a94c43fc4fabb8714ed08cfa490450a8ac4554d7faa4294949e88d65c50353cada6b6d95f6093a6b2f3ebb223a1f7f2c31fd8679e931c0875e5a4e SHA512 b4e42a68f9305ce388c0c8324b2c329a7a8b59c88be40c8c253f9ad5b3c5c847c8638c94cf187feda0761ee174e2f8f85065d0244d27fc4dfa2899e4f72c3b4d +DIST firefox-115.16.1esr-uk.xpi 707286 BLAKE2B 32b3c63b1093ca231cabe2b7eb112074cf1aa3a9349f3af74a43e8a5307f3597ee52a51bfbe2a963518bbc84343a1fc4ff9cc5599436043b497e224b1b299ef7 SHA512 8bcb683f7d03e0f889d8e7a0d3bb41a73ad5da93cf1c37405a1034460bd7f33d5cb30eac650b168f1dbfde975d3a75b2a72a750590a5b074d01acbcfede2a8f6 +DIST firefox-115.16.1esr-ur.xpi 554818 BLAKE2B 5ec5e6b90b9fddde4bffaa651716febf9bd6a41ea6132117f0f1e5bec50f488410d80e48a522f643fa9c0837b5bb12f3760e0af42ca1ddb70751940f6022ad1e SHA512 f1607fe39b7d9eeba7c24c21005ca1f8822c2aca373984b4507b3d49470a09dc1f15e26b4cc3ab5132370ce4ca7dfa8bf7d264729c491db38ac8f32031bd9060 +DIST firefox-115.16.1esr-uz.xpi 474680 BLAKE2B 276c659e735b74174f195dba6dfbf24aacf8206c287fa84ce0339c89120848ebe1422e81c8a26543efe5e6d4f99d87079f063058318d7fb0cf5fc40c912b83c6 SHA512 66d6dedbaa0979bfce22cc9d4fd40e24797c80fa708fde0425aed3f4ce1bde55e7c563f6a31b7c907da5a4d3a3b001006e77716a55db836acb0630b0573c32d2 +DIST firefox-115.16.1esr-vi.xpi 654018 BLAKE2B 2cc9e553801ca02ca3de325ce95b48976bf44a96d8f57ac73100d093b8b51533d165a550e7c4b49666e48c9d735904e09fcb95d1375351b706046681aeb900a9 SHA512 a2d380ccea37a6454b9042ad74baba07381dde9a73a884ff23b3ab229382ddd28e81b2e44010e4d4819e373369054ec2ff8a7fae2f0661eb296ff0418b676f2f +DIST firefox-115.16.1esr-xh.xpi 414954 BLAKE2B 3841a27d12d6ca8fbcd928db244105591bf07378250ead2ca5570c82629d7f438d076b08bf93685f05876c97beb53dcfa58a9b66a04033a38827411b52949ce9 SHA512 38b3b6145e4b0bb35797c3fd1f7f186651d3a884ca413fd2adeb90218b4e8d9c9138dacb7bb9298712562625124bcd86754a3b7dd83e6bcced952124a7f3af9b +DIST firefox-115.16.1esr-zh-CN.xpi 657113 BLAKE2B 52a87cd7414d045671e62170aa5d3ba13dc5ff8619b4ff0cc74dc66f449040f5544e94b9708f9fe2e08ee5961a7f311e875cfd2afe24569018c553248143eed6 SHA512 a61ef369b40ab986c49804ef3505d63fc1784af72329c895c60333fb374ffd15403f4b246f8997b07766495e299071308da2a02464054ba30bf88b2a2e9e3bab +DIST firefox-115.16.1esr-zh-TW.xpi 659318 BLAKE2B ef23402128f4e23c1f4eb37318879a153f8fc5b475bfdfb1419c5dfc4566b8d8621ce55cc0f620e03e03a2aa01ecfa4e154ec2066d0277236c1515d4d6e0f7e9 SHA512 c9eb45af2360532245d4383214fdca71188099f03a6b7ef568a017db42164664849f2d3226c3c558473666bed076336b6c150e865587c2768c2705371a0ba891 +DIST firefox-115.16.1esr.source.tar.xz 514949380 BLAKE2B e54beb7036c89283fec40bbff1087cfdba5b1040d4655f7469aa4743d158bb2749dbeda15f950e47b42bd30c31e248c2ca690ac920007c04cd810bbda5abbdbd SHA512 eca42b3494fdab73e67d5c8e8b76520729adb75b5cad85172953dba56b225b0f05dcfea70fe8cc3e1bf1cd3d7103159cc20095d5480bb1b0e6d3ec90588988a8 DIST firefox-115esr-patches-13.tar.xz 51360 BLAKE2B a048bfadba989ebbd4c6e3df97d303d6853844e66ed92f5f5f322acf18866218b91d52dbbece63827de283eef855c932d67e329c8d93200aa83f11268a5d1b2f SHA512 186ec72323e621362dcef1bc67c476716aff97dfad701faa9220a7302e798d3cb4ed90d5ea59e3e92f016be29875bb5219787635db99a8848b7c76e4e2e09e90 DIST firefox-128.3.0esr-ach.xpi 465019 BLAKE2B 8062efbfb6f97dec0fb55c67af89a2ca4cf27361ce0601dc59300afcecec704ff8d4af69df0d02751fd488912ad715a3816f283491e9a92accff1e332f800597 SHA512 c435f4f63e4b8d77493c1bb2600e2e7a90a5b1771484773556ab51555943f594593e41ec76bcae35bddaefc8672832c3f16eec1702d5351933811c458537897d DIST firefox-128.3.0esr-af.xpi 418349 BLAKE2B 9b7f97915b248c61280224615624c808a1f9f4428233b3955f7d57b630d8b7633c0b84eba774bd5dc3b716f4810446068cff5845356c67c72f5e8ba52f07e4ee SHA512 b07b753e88358519c00bf114ed8c4e271bb78cb8fd210894a820729e7543c96176d3530585b823130a31f18ff888f0d60c26435d735a6eb77cfeb75b1d848eb0 @@ -210,6 +310,107 @@ DIST firefox-128.3.0esr-xh.xpi 418008 BLAKE2B b7511594e6522c623c1c57b4c0f5781e68 DIST firefox-128.3.0esr-zh-CN.xpi 662331 BLAKE2B c64a2f4b2643c3e590b13cb88d9103e34681375c45edf3388e3561f0fa68811cd331243e91f8e5dc97d8e88ff850f6ea33815012f3ff4598ed1902e44491614d SHA512 0df66f8c593ca887c22b84ef75d91035f476a0325352673106b58ca83a7ec1875601aa5491bc565d3e42cbcb20799c6dcce7feb723dc30c57a1a2be0f4d05e60 DIST firefox-128.3.0esr-zh-TW.xpi 666620 BLAKE2B 3538b25e9b685638fc1de2877c3a6534dabf545cf18b8baadd02fd19829a367e2b5fac07518cade4d21a6f2c69d5dfb940ea299d9ff5967925548111abfb6398 SHA512 dfd8e0f86ee5d78d77ef68a97b6030afe34db6c338c0a73288a68a2a6bb864a0233342f5f79b1ae043d0b97f92c35fec3304bc0a49310e66fca8b6554a389ef2 DIST firefox-128.3.0esr.source.tar.xz 560960556 BLAKE2B 015fefb408dcea5733053151aff05579b007ab757542a47956e007dc127b460f4a35e885a2ee4ef4dbb936820c8ea3907b00383f659b15a84e701590b50a5d72 SHA512 3c6ef272c0fb653d030fe3f7f72aa0e1097b1c6759556166815cde15465330f988b3bc23df4b4eb753daee930edbb1ef72145273cb29d0952bd9d7c547050f9b +DIST firefox-128.3.1esr-ach.xpi 465009 BLAKE2B 6fb67b0098c36fadca7c4f10c128c7fec3e9d654184739361293d3c3fb86193bff220fa394d13f1b210ad9023a153f05a2f2b6dd5e4ddbba858107a2b5b518db SHA512 7e213b54f0c502f3dfa1561cbc0c00cfb374678da18aeb514fd606b5e4948fe6169c787167b0f869c8c3501a50339ddb832aedf5d359fb4ec78866c29403303d +DIST firefox-128.3.1esr-af.xpi 418339 BLAKE2B 9da53c6d55065adf2a4c95afa88e566a2945a7f1156c55ce05e2221bd8bcb9ea9b194bc4f291246a23c44565734becc0c043fc63e446307b114e927690aff1c8 SHA512 2f0f6a22bde70af4c1a5ce495c3fc88c7f08bdb911fbef0db9a1176a9716f668cda8ecadd3cb73d35b28b7bc7255087201e50fd8afdfa72796284c315a61ba4a +DIST firefox-128.3.1esr-an.xpi 506830 BLAKE2B d0484beed94db1ca4af0cbb1e48d6eb04dea11d7ee939b44c64049aab4ea60648a2430faa7e19faecea033138c584d045c877d6a13b0fafa93f6f3c76208e1b5 SHA512 fc24abeeb18fe078c3231f216de0c4cf9bee36036dbbdfeda9b9eae7516871ed7eb246f02f0ba0a2b770fb05d8ca9b680f701331e53820c5e8042814f7811aec +DIST firefox-128.3.1esr-ar.xpi 612889 BLAKE2B 159b09c5b5958b6abc5f93bbb58bda4ec1d6ba1785eda9e52bdfb1b2601c5e9c5959affa4b9164c1eeac1a53a46e00fef231460b6673462d599c773da347e8df SHA512 046df98eb50849fd82651aa67a8f04b8cc91929a75232a2722a1648bc99cbc82a037851348f4772ba499942c83ae7070c2c942047a3c6838d486c9fb88c94cb9 +DIST firefox-128.3.1esr-ast.xpi 497284 BLAKE2B 79c13d8806d628fdb47cadb80b60654508e2b7b5194d2a5b2c79b1ae88b2358e4fd921e427f7e69448c5ea642760de11aa39e5293d0e9031b584d1a3218f9cb9 SHA512 f1705e7aef8c24ab7f3c2ebcb71e9697959f7a15d6a8c400dc68a0ed09a3b3dada8f8f0c681343a99da20cdd88610151433d81df04d4b58471dba2ea34fbf3c1 +DIST firefox-128.3.1esr-az.xpi 491718 BLAKE2B d37266bd7cbca8d9df27623aa3e6da3d505c8a41c61bd8f3b7a1da5110802d0c350d548c1f31c01890af98e69e2f26d68db669206c721e22284acb13083896d6 SHA512 5ab53b6be6a5dbd8ba3aa6ef4a52b5fd6e660a87cf3467687c37b51e73a494d520d0c1aef46b029dd4ed5c4c335a58678f5e1a6a66c50a105c71f950eb317550 +DIST firefox-128.3.1esr-be.xpi 717316 BLAKE2B 54f1017fa41fe8ed258d9996db0e56ef47ac153e0a8c911ef69e9e19c92b31162465fd31b0ebbe2579109d459e694449e0e366f9d167adf912f884d081e63f73 SHA512 8b75da75504a66a4b4dbbb9ceec892c423483557604594ef9ae3b2a819e4c3b52b2f2a7f0e42ad25a9175a42b86fa05783c8434ae53f3af55040812889965cbd +DIST firefox-128.3.1esr-bg.xpi 637135 BLAKE2B 4b8ab5fe1921c35d3be7f06af76261e3ee14edd3d347f031ae832cbb3b02ac5d5f072537d3a8dbde69079ff513bbf33f26bde6f9c57b36708e9b41b053538eee SHA512 00685393b82d71c021c8e87d6f2dbd0967dc5b2d89877f4a7681452473cb4f577df25bcb22f2af0a23047770dbef19b14282726748943488c803dd2e89bcd192 +DIST firefox-128.3.1esr-bn.xpi 582461 BLAKE2B 272baa4d11936b7cebdd78c2d32aa0027b6f739e023db0f5306cf8d84a0494ddde7d642bd279b5fbd749b2dcdabcf4e713ac55d716e02df2e57912a51d753660 SHA512 198c5132738a782989d68f0ec7933e24a23b69745438b0f1ff36bd3c5e9ab86698619f3862aea385ad0435416dccaaff13eb283b51b0ae9d04705aba2c1bef46 +DIST firefox-128.3.1esr-br.xpi 590828 BLAKE2B 8f7fc715795f204cbffb92ccfb31dc5b0f0b9d5f9eab8a08435e1e67a96ef12427af2b5bdc271a148e27aa81ec773a23b2e5de4731c930a2054347013fdb353e SHA512 9d5c01a18ec9080e7c15df54eb2303685333943264035208a1ce29f76da980068c55d9c06828356fef188f1e9bfe1ba05567efc69b677117abd61b1dddf7f55a +DIST firefox-128.3.1esr-bs.xpi 510169 BLAKE2B 832aa36686162ff36adab7e256fad9e006bd627ff4fb5c2c1b877f6ffed622d0a06c2fa5a75c8a3dd00b4d653c9212966025e340f3adb2af3f4d3ed7c1350c57 SHA512 fe099381c4def9dab4c66a81d1c80421df0ab998647bd9564bdd3a67e43ae42ebf01211f1cfc334937da581d9f937af4889a5a4ecf12fa230047deebe9d8aba6 +DIST firefox-128.3.1esr-ca-valencia.xpi 547177 BLAKE2B 3d74dee3ee15663c2023ba06ab33267a85251c4b10edaa29a6ca52933b8b3154ac910760e2fadf746a66ca7bd770bfdd897306c41980ed05cfec53ee15c661d5 SHA512 55ae0831a864d3538c0bc19990afbe2af3c6e5cf2c3de00f6764cfb4945c840d34e44e42f840bb64caae184622c944c8a7fd2d347ded0ca2deae63b8940d3f88 +DIST firefox-128.3.1esr-ca.xpi 598609 BLAKE2B ecf7872c878178b9dbbdca37da34d34bfdcf1e40d9f28cf50e062c313e09f31699b4328bd13dc6784291162906a5ced4bcb7458e2b57ddbc5ba069b3e3de8058 SHA512 d94f4c307c1ce6e1aa4de082c4fcefdbdaf595858844a81cc68bacd56712e9ff25b501372a3369440c1e47e508351fcfd82bf83a9c783c330c487ad2e2e9d328 +DIST firefox-128.3.1esr-cak.xpi 594033 BLAKE2B ed4d8764dbc257a45716e70b17c732359ed39203ec673e4a1c38ecbbda4bc83a93d61d8364d210aa63d2d143cb71f8a963947528061d71cce0be03558c429349 SHA512 f66f446cd83add03f08b77041de28945a1e3098721a2769e65f1f6289eb0a00d6bfa9400025dadcfd3d178addca66484eafdf4116fc5d0ff0fc0c244639f48bc +DIST firefox-128.3.1esr-cs.xpi 666458 BLAKE2B aa51de4375015d53e70802c3eb7935d92cb4b80b37cbf6d4a8964d813a7c323f15f66e50f36dac293ecb99126395669d19ed4c1fde69a1c5150762c60719b679 SHA512 d55d5a9abdd7d3e26198ccfb3dc633a05d4d1b80b31b02a3f64e12421022e3f10229b76a78f87cd322beb43d862b5fa682960a38a8fb4ada3decc75109994f6e +DIST firefox-128.3.1esr-cy.xpi 631256 BLAKE2B 1f53cd9860e4ab44bd0a465e105a35dfc68672f076a64a2513a9af0f2b3ee69d6fa3a06c55b456b75049e313b40c0d5ded88f93506de806727ef0e6f9395b5fb SHA512 02a5a4d5d217964c7abdd630b06cadc2ce7789684434bec8bbe415dff5943bf45d7741070c457f9da99273361ac1c7de8bed0b8a627c6f3820d6f8004e27bfff +DIST firefox-128.3.1esr-da.xpi 614497 BLAKE2B f8b4aa5c7fe500f4e4486e4269861ad379d8e15e36d887be44286b61c11958cd7a605666428a2783ffc3d505742c5ef30eb26325fe94ae9c57e127650cd6bcda SHA512 280a743eb2e1a2a6682dbc3d74ae5ac071ec3a74be9ec972824f618ad4c09238f44b685fd0d8850fe4457249f606c900e33950727f00eee32e5975b6cf9c96dc +DIST firefox-128.3.1esr-de.xpi 639267 BLAKE2B 29d2314f9b0f2a9e57ec1b14c62157a825dd6a7bcbfe77be6632f8f8e0a2969fb20885ba30089e1575d0f264b7ddbba2d4ab1d5434f1e0bfb5d31afeb52678a4 SHA512 d1b8c6fc15ddf6332a035676a08bf45044676f130502e12d66c84e754a3d082e9fef7bc3e85f93a834c67b497d7b2e023f5d2884b44466d02e52c8cb32162ad8 +DIST firefox-128.3.1esr-dsb.xpi 656617 BLAKE2B c413b929f0039b38665aa3b62682c9347a9e63418b2159ab0d3c97609748bc09f91ea3aca3bc9611a000c4151022138eb042fe942b2e34b1e82e923dd65ff16b SHA512 7f149fb7d015353e7f723dddb3cef9227360b270329394fa58fb7f10d14e4ce86eb5ef587ded6e03fa9d0ad7f7fe27685fa1311a66d1e4160cdb207eb9624774 +DIST firefox-128.3.1esr-el.xpi 741109 BLAKE2B ecc91de783081da2ecf3e4226616c00f5f582f098d031eb96b0891a8d752e95bdb6bf4f631c14eef2847735e987f9858a2ffff26b559679a5b3fddd00b23a389 SHA512 9b7498c8a3c2cad79d2e6d82e16b8b8411ba3b6083b113a205a42e9d3534c8b49c5ede082abe94b9ce3e279eb3b764fdb26df0af16258e2fb63585e637b26244 +DIST firefox-128.3.1esr-en-CA.xpi 590915 BLAKE2B cf70d36b4f500471019a2f547e7a25460d1dec6c01bdec0c5b42039baeee0840f62b28fa368a6ef7e57edcc2f7c869c1e6fff39a167f350fac6955b69c23ad1a SHA512 6d94c52d5c64bebf0bc16c964ea4722560af47e0ace0ff5445602daba96c5b78f072b7c15ae7a86ed64b1a10893ea5271d7f672a54e242c3f1c342f94a3221a7 +DIST firefox-128.3.1esr-en-GB.xpi 591528 BLAKE2B 8aecd4753ac68d497102f4088cb4d7045915113f868f78e2210733a3b365bbae6e078d5b37dcce322560808bda9bcfdb559f77191645233c4fbbb4d23ede2a80 SHA512 97b501c3038a6b05404491af0d497b3d4c4a115e508d7a7dfab3b51d5c5d09bf9908e990dc8e92c0ebb85fe32af4200543d94a091387eb592d077c78d31b9bad +DIST firefox-128.3.1esr-eo.xpi 615504 BLAKE2B de3aa98fc809c4325d88257c9ab705767ef9cb0d77407c648c3133fe7653a97598adfae6ae5ee74d2c456dbc959c3f5a3f2f44bcfb78f58198e2c6c1f4743646 SHA512 4a8d293666640a6f1f927963b562578dca581aa4085f0fd3a1f748468a8cbd74539e2023783c076430d9e7f72fd563db544c351be6092bba42ec2b3dc54eea95 +DIST firefox-128.3.1esr-es-AR.xpi 634655 BLAKE2B 96d3ffcc95204848e165772670e9a31fb5d663eddcfa8a565285f24f0fed51b12dbf22c70ccc3b0abecd6a405772e8aebe65766615c8db2da2a0c18665f078db SHA512 4a4726e3948b4449402cdb488d44d27d5b7d5b34e8bac5c58a9a2c4db7c930ae2699af02af547a611cc8a07db99a77b4270db13f660c4204955658d0fc8860ed +DIST firefox-128.3.1esr-es-CL.xpi 634130 BLAKE2B f9d55b64542bab3ae4a337b618bcf814154f1260e3677069774477f1611a5929169d163bed3196d049bc9ec941e1a70a8a2892185f1e44ab289d8efe05374f0c SHA512 efd55dacb7b7caeae258e389d1112a3dd2e6f5389972990c11f9f686e881e524fc98c7e79dd50a22760ed0ec3dbe01c54b8a891d249a3bd34cd24a22f6087e79 +DIST firefox-128.3.1esr-es-ES.xpi 622030 BLAKE2B 103cc77202277381dd9c06c22dfff7a68ad69238c9c577601716752404cbc6036ab5245baf8bace961951a9a827504ba8bf7966368bd8008a78b56ab65492b9b SHA512 62ad5bd92bc57ef7a6dcb754b2375efb92a74eaa8ab249188cbc9881f5c90369e2b1cf96461b84fcf4d5731ee7fabdc6f4e8c407198b470953c9a74a1018f049 +DIST firefox-128.3.1esr-es-MX.xpi 610629 BLAKE2B a2d466811e41e89c25cfadc2870a0742a14363dcefca9a3758035bd4f5bad9bae8588484298c159b1499bcc8ffe3425d2617245cd3933d2521e99ad8885f698f SHA512 e6d1fd58ea4c75c98b5daf3ec45c780668586516a95b262034cd02e11345b6b3af415b050c43401d84b63f21668db63a855d11f83774c5017e9475aff53f16ea +DIST firefox-128.3.1esr-et.xpi 540644 BLAKE2B 8811f72f4f2f524c36dcc79e398b00106610de768ca68fa0413abd6ee809d90274df6d88df2003735379f19a957110d0c9b9283c247e028521d792d214c51178 SHA512 0fabae5149d9bcf61aa6826766d7b74f879d175e021398247ce4bf2daf0c85415a9038949fdacf62392e2b2b3b4f2142c482e341fed45f594534734c49afd697 +DIST firefox-128.3.1esr-eu.xpi 601105 BLAKE2B 10bb38ec2944ec29d4f2f1d34ef8e5f766954dbbce427fd5ebed80eb7f5a53daa47c1c9e6cc01ea20cb3a5f4569cb0c11f58818c1125e738c22f7666024852ea SHA512 39dc9b1a1eb3675cf6731b0a9092d975d3312cc4fc0b1d934fba50f50995fd697abfc112869f9668800df18c7ea88bb15deb6e6903ad298fdccee63c65118004 +DIST firefox-128.3.1esr-fa.xpi 590967 BLAKE2B 0c1f13d1b2e904b5f1d7855354235b60fd49447e871dd40881a5210ebeb3681f9df742f9fbb78be5639e215ecc85487e79c02a6f508e77e21cd396b66f54b8cf SHA512 d37e0a4135bb7dd87ff4f7b7b5f24c9b9ad64139a103242604a98372ac13f426f2fa8cb2e001384bf8cda71fb8edb59e4d4e5624ce1fcf5788c1c77196eb246b +DIST firefox-128.3.1esr-ff.xpi 476997 BLAKE2B a37b1dbc0301090e708d3ba91be1253735d613c8a111f1f96c92155a4531d010a0ea0fd4eada827cc68ecb5739bc1e314393f2a307bbe8e546364145c80c50a3 SHA512 8b0649b9e48b17127f0c9ac13c02ec42ef395c0814cae2b57687c9be737723b8f5cf9adb22fe5d027b76998ebb48208a935eb15f45ed712f0351191f2a6c21ec +DIST firefox-128.3.1esr-fi.xpi 613324 BLAKE2B 25dd28065683a2d60bc7d15cc0d2da01818d10bad2e5091115f23c0e8a401d249d70a14be0e94a5da37378ea5249aff0e5e36363f825cfa3bb937e193e713ae8 SHA512 b3ac5a0c56e363a48f6bd635579a28343122c54209d6b2ce0fe1ed9f16d53280bb7adf95815bfefa4a546c632af00a0568e8be63a9d3a86a20de34df7af65753 +DIST firefox-128.3.1esr-fr.xpi 646208 BLAKE2B 626777dcc7db9933a50cd669206ecba5c7b58d2e40cede888e287afc4883055cb26753f79577fe3eea3ecb573e4735a922fe2609de195527a17cd7e7b9596a32 SHA512 d315f85734998d128a24acd12a9f5b5eb12b15f02571a008366eff1ac866ecb47a0c4f86f30ba71aac3d9e1cfb6041bfd138ea8abee7bb9e7e11bc7df4fc4adb +DIST firefox-128.3.1esr-fur.xpi 640935 BLAKE2B 6b0fbf417cc63c721b8abc6aaa6446143cdbd1647a9c616a305a2258a66a28d25c56a2cf8dd0168c14defa98320570f44ab9c8b3bfef9091225bd81f8f6e39f1 SHA512 3f9aa1d782b31c8efcbc40c4760ddec8f2a551aa48db08c362e7daa5176c63588ee8390271d6dc3d44fb1d8949a072d27a8ed7e4237aabc2d6d9285b84efff8a +DIST firefox-128.3.1esr-fy-NL.xpi 630341 BLAKE2B 12b774c08c96d6fc6753e7c47888fecdbb3871a3b1c7632b084c31b40aaf43851e16240bfc63cb6a50a6dd0294700b8a411aa936bb94bc104b1aaa23849de4ae SHA512 8a67c3aae5a489a346a05bc560ead85ff7a5873d9850c9edee0f2cdb2649e3f90699208769c5099c347731b8b4f24ffbef011a9542c3977173211ce5e60ffcfc +DIST firefox-128.3.1esr-ga-IE.xpi 471844 BLAKE2B 54028388b381416a3f8eeb106b6d74cbc60264c2cab15ffd74fc58110bf647ffbfd2fa4c6072e616dad90ed7059a75eeb46a55e3d11670998c5bf34ee4ff7542 SHA512 b31105128926a84d10bfade01854c510b32b0dc53520f997e04a17fef37e100faede0d726153b6f2b112d65d2516da2869b3cbdb7e4668b0975cfc6cada10e8b +DIST firefox-128.3.1esr-gd.xpi 597536 BLAKE2B e40f7ef9ed836bb2e3c7745d7dd4c6ac795d942f7026aead90787b6acc1e7996eeea2fdc337c22ab037008cddfa5d6d0e560bde0b3378428c194f19f118faa9c SHA512 778a39c1d3bf353477f1f2c7b82d646b06c987faffd83a22f19fd344e95c07cfc7bc7bc4860f598e11c370c8fde85630e51eca763357fae006e1f776fca91d65 +DIST firefox-128.3.1esr-gl.xpi 605030 BLAKE2B c96b551818ac06587dd5e4bf1a89d8c2c556c02660641ec97890bf6eaa77e6030e91b0a07e1aca32f143532166beb72df836a015b817e70a0113a4d163ca2524 SHA512 1f55ab73cab99ede1d959d37f8a1789bd221419020961e103047dc47b87ef613efcc1723e1e9cc0aabaae9e9fcda89a92940763450d21a035778c7224ca30fcf +DIST firefox-128.3.1esr-gn.xpi 643640 BLAKE2B 2b4535ed43ff198a725025ebe1bc826a54310114b53b240fc8565f24b1dfafdd7de7bdd1a332ac18c0c69a56f3d4b92ca5d9b45d2e03c407f138bff257868d6d SHA512 c916e24ab33f5851a2df1c0a5c938e505dff236048139d66956e57a2b1aa7b7d1e75090dc226594de899863ca8438cd55d63cd7ea59abeb33b1d94816b804108 +DIST firefox-128.3.1esr-gu-IN.xpi 528303 BLAKE2B 72714ec3522862347fad25c976d89762f6712281b517e555accd6f129757ac7e74691c3e95e1580f760ac38ec4065c7f8f5f371974479056a17c49dc8153dbf6 SHA512 eef8e07280292360a6499577589cd7df3957300c6bf515b48a232cb354fde1b1aa3348830cceeb29d28243b413eb77c04e484622e68d9d81c71f0fe81340fff3 +DIST firefox-128.3.1esr-he.xpi 637783 BLAKE2B 8ee848441f4705cd05354f9e7a967b018dce77dbee5aa7c7e8676abb4691ad4b9450fd5026c81ae0a83fa9859bb36b5c67ecabe55029044a7bb48b192540a563 SHA512 afbdb6ce8e7defbb87a3118c635b24d9fc447228d25875c1cba7ec68e8f1fcc49333cdc2f09b01207701259f96f832e5b277d1a10308467f427289ef33362b29 +DIST firefox-128.3.1esr-hi-IN.xpi 567737 BLAKE2B 9ec788b5bfe6d11a1498459b6d99846ae88ca387451d2cd61d8576f6709fdf681d0a7e1392468991fdd99e6abbf5dc4c3a91d81cd7fb30e603571e99c6d47304 SHA512 fc5454cca5c8fe47c90ad895bffc40b397b34bf142d20212e3891364c6fe7398b1c85023a1bd6cdebcd7a089f0bf1e86e16abef6d140377f03a72222ce4fe99a +DIST firefox-128.3.1esr-hr.xpi 615346 BLAKE2B a2676ce43edf0c7d77c892f79f5a31a3e68b6969bcb7de54b6ee2fcc7cb3109a95c9b73989aea3f89a2b3550a8edab4efecc1602ab8b3749b79d38c6fc08576a SHA512 4f7e8e596d4250d97ed70433da03dd1d8d58290ba0833831e7dd85c4587278fb47d2f8f68aae146a7bdf63a5f640434e5a9ff19732367bbf21a87aedc02a7e58 +DIST firefox-128.3.1esr-hsb.xpi 652640 BLAKE2B e11f0e107e21cdac8c864a196e1400fdf3f1280c9a2f95b1e98ff25634af2b790986e0947d86acc1833ceabae9e50fcdccdd29b33afbd4571a59418843d90364 SHA512 46d0613305dead46179dbc81282c7494b16981005f59ca8d360bc1445cb5dcf7904d282313862e1ab479fe71f109a15cd05e5a7ff1ae801ed3918639246ee4ea +DIST firefox-128.3.1esr-hu.xpi 657500 BLAKE2B 313f47411e7634eea19c7860c19d27fc960be864956d49be880df2af3b7e2a82d25edad96a56de694e3bdf03a9dad570c2c7784f021129f52a2ced5672a39801 SHA512 ff967ea9b551890b3073e73ad501effd1d2f1e7da65f8ee4b57d44186634c8f8344e3a6fc0456015969c523af2f15881b0f1c2da1cc1f4dd7c0624789651a910 +DIST firefox-128.3.1esr-hy-AM.xpi 652578 BLAKE2B 97408e8e047ae75dcbaf9c142945c6e6994b8433d7439eda7bfdf62842eac15ae832eb6f489c72ed1bdfd9d0d6c366adde4ae039a0df4e8d3371a87670e8b747 SHA512 5c6dc0f9d6adb80ac7b7989af0ff53d2f877586de63b86eef24428f1f89b38a4102b639b6f802fa30b7df07fbca7f9d4ac8f4a47d454aff160bdf56391c3fb61 +DIST firefox-128.3.1esr-ia.xpi 615355 BLAKE2B 5146978fae716f7f279389d6f75d9d16caea671d7a3f35d23323cb636e3a68842e35cd77db59a80974139f0f5bc991fd5af607b60d0f4d2cd6658563c4497d6c SHA512 63e6a9cfda694030dbb0f9be3f6aecd9f90ee9ac0f41257e24495e3658e7478ee0f6e54d7ba7a52a653d115d725298263350d488d73333c3509c10b4e8bc4758 +DIST firefox-128.3.1esr-id.xpi 585703 BLAKE2B 94122f749bc668883551f3a59402388b9129585355273d52e05f289319e62365edc79b4508cac2409220bdc8683f5acda5a730f0513008b7360db83c66d3bf4e SHA512 6faaeec614d999418005055bebbb290bed6260c43150938ecf0b745fa08b6dfadf5420a364da9cc173475ff520fc14733263731b3345856b259110e4ee8dcc7c +DIST firefox-128.3.1esr-is.xpi 619063 BLAKE2B d836ae694bf2021333d4b1717eed798ce24178b3a967a59b1b57980a5ab2169a5c4e5c92eef1b44b673b2dbceac2db201226677c7ee6fff10b1797d7e182cc7f SHA512 4b405da69ff132998ea8f0bfd7b3ecdc700d20bd63446fafe5549e8dc89a5b04ab0a212364c1a88fb32c478ecdb1daeb8d09f1cd59185d8c48fae82cdd697e19 +DIST firefox-128.3.1esr-it.xpi 574451 BLAKE2B 89a7c30481aaea6c2418c712afa480a6e91c71faa06bd0fc82a60dd53893cd95f36d2f8921ba6395048526fc6466562769a9388b800821d1740deb3dd5b300f9 SHA512 4b5fe6a336f5b5f247f152f7e26d45855589d61ba241a2a00f1e74fba1f2c6af9d3d111868914554d11b8cd42d254a405796e9f9fb1bedd2319bf126d559e5fa +DIST firefox-128.3.1esr-ja.xpi 683762 BLAKE2B 30b9bfd044c253d81bbfecb2970ca36b39bdc7ab001848c2a60173bcf2befff723a02923d8958899f3f540bead8b9ab23de3b0fc940b8b71d24ede77e53be43a SHA512 63fa755a52d36c17b3dd0fc6a17e2d1ba6fe63edad635798f260a75910924d2fccc41cfcc3ad45a093568e6262b1d73d34bc7204f42c2147d387f187ff4305e9 +DIST firefox-128.3.1esr-ka.xpi 661662 BLAKE2B db888e1bc0c951e58eea84381d8abfab0fe07be8e95b876c559d884919338422855a44863aef0e3fcfd74b4240f58ef82fbb2b0452b073e80e06e6fcc5b51e36 SHA512 81c83c2385c484f9c2b72c2bfbe5c3f21c72b84445b39266ff3b9b9bbbbb7c5569521ed0677a91f4166f8d10b4f8861eba3c151f92cb8615561db4d9494c4d38 +DIST firefox-128.3.1esr-kab.xpi 612138 BLAKE2B b3ce56b4570686c5f6209aef788e7497288e9f63f7c72103a5d84a48b762e6238cd1d11c3c8dda3599899cf7d0cde5e380e0ce8d25b3b9e68ba450a671e8ad27 SHA512 9140d452c443ec95bbdd41a027b374bb2011a69d106e6b2ed65447000aa68a23cd556d16e118befaf5877225a3297a8c157f83fd7b7b48cc27300d007749bdeb +DIST firefox-128.3.1esr-kk.xpi 715703 BLAKE2B 8ee939bce20ab583f978d31f750e1d67ab3caff2f2cfcb507d54d39cbe9f7cdac07044f5a20d3ef5bd2b82ca5f869b1e3c2f7e103953afc0d4ca46ae41fa9cc2 SHA512 c21994c37cc5226bf60f6db4e97c99746d0f7cb2718110ff28a2a6e429a09b6b4a121f9f79402b82f12ab380e89af878b0544d68ef3d8cb9ccea8f3f80c7fdca +DIST firefox-128.3.1esr-km.xpi 526702 BLAKE2B deb1a9a38150d060000257bf007cf2879aed071ca75e0af9f0cc4b396edf8be6d243bfcfd76996898ad9b9bd9471e36b06f8c50c1813c64d1e7b12f004d695ab SHA512 8866419e7077fc459428ebe3e5ca78c43aeea5b3d774823046dcd79146b4c814bb519b49834b24067030b1e5a3ddfdddd52269624c453accf35b40b4ee6ab84d +DIST firefox-128.3.1esr-kn.xpi 492071 BLAKE2B 64cc25e5b7e6f2c8244d21d6d7eb32a3b6e4dbfcfac6861add0c841d8b8fa817342fd4660ea32f6800d87b5e4b4247bb467d2be1115396032ae034d16819140f SHA512 8400188699de5a94572ed5b6b2ff2a82a736b8ef7a99f6c9b594c9194ac6ad9aa8dd2baf833c5e46140e0df65560b84adcc0f25f57817623aeb46dc3cd5f3ab9 +DIST firefox-128.3.1esr-ko.xpi 668819 BLAKE2B 799d2d1554c0279a83c609def3cb91ff8b74fc913fac3a044ce8cf289fca51ae9eae714479e8a01dab8b84b5f4ed9d62991a5c046d3dcaba0976ef9f77901c5e SHA512 2e6f6ecc16ca5d4e24c587784271ae17855ba931be46be67110a808a0749a1cebca987316ee17d20abfaf87c4e92bfa4d53071988323e38124ff3f1af819579c +DIST firefox-128.3.1esr-lij.xpi 485036 BLAKE2B de37671894c3a13f8a7e43ea13dba2f1845f633e994b0d4747dfe7a6b526668a6bedd27da3cac57fb9d9e31b76dc3e9f380747304be6ab7fe237335a30fc293a SHA512 1dc40cc3ec888817d67ece438cfdb5944cbeb5e54c8ae4a30b49b3e8430577cfd88ae728f6ac2c07644f938525214f959ab3aad109deeee4d45470eb7fb5c9e2 +DIST firefox-128.3.1esr-lt.xpi 573624 BLAKE2B c63eb8f975e81b32546b2153004077e5d80e27e9657a04bbba2c565e82bf541c7280d22a1d14b461f37aee79a1ee3c12e95bca93986d8ea3fa28bca7bdab31e4 SHA512 a826530fa83d99a2749a7ad8f256f42f769520c4ab62320fc602822eccc802a1808a157502f45fb7b2d69b11a56fc9e466e03f35a6b3dee0d80fb27019b58211 +DIST firefox-128.3.1esr-lv.xpi 584359 BLAKE2B 5c1c6e1aafdeb0b43e38b9bcfcc50dd77a582539e16d36efa86bcd144bfbaaea0a795e81894669c1bfd403c56b10c4cb7ab5f28ccab68eaae6d7fc5d30de1ac2 SHA512 11d581f395ba22dae6830173f3a189bee4bfbfe8c152ed52603010053914cb132216065417bdc2abcee659657b08f12b0c8958a47b3ccde74cda9d1d8841d4f9 +DIST firefox-128.3.1esr-mk.xpi 494680 BLAKE2B 3e41b57c8f6396c0843e9e3f3237e58efdc38dfab74887ef5ee309a4b5608933ebe43028b1e9f43f4e85433710ced2ff73ff4ef96605b5f557165bf0c92eab9a SHA512 fb7bf53ea84e5b6d91afe42cfcb9e8304e06cf57b4ec7e2f85f8fc7fc1a36558d05d9fd28eb661f82682f3b14a062a6bfe31cccb63ae7a8297de6d2e48df5d38 +DIST firefox-128.3.1esr-mr.xpi 533059 BLAKE2B e3542e2567271f5aa62c329aeefd2b6bb2ed7b10166b4d788a7f675b0045508e88f7b477e9f0e21730961e040db5bf4366b4d2ba33b712ebdeda8d95597e5ef7 SHA512 f7f2262a100e537efa9d8871427259ca82a21df4a2521f91d215ceb93f41308aa327ed45c4d8959baa828828f0d8fb25f0d23edcbfa7a6f204fa8655a9e6b45d +DIST firefox-128.3.1esr-ms.xpi 450666 BLAKE2B 0da897f5ba5fcfbae533c14863c81cba446c6a16562d7919d455389ae4933ba4533c4dd6f0aac6ecfa029d7b21d090711c6138f5e22ec0454e3fa103fe758f22 SHA512 c77e6688031c677bb87981dbc0bc9f791f79eee204843af18d9ab58b5c31fe04e284247d76c5feaee0ad4b93f1abde14d7dcf6d56258e33a23ed270a19105d59 +DIST firefox-128.3.1esr-my.xpi 519448 BLAKE2B a07ed88430674c3b9835619c5bccf8bfbf4d7c74610ad8768ed2c7a1aa3e981883329a08d1f60eab245278a663786d0046c7fbe99503cf21b712b095d9d53ef2 SHA512 5dfb44cae5d56556233188deebff3916739996e72807b047bbb19734274e4d9aed9c10b513bf6c85c9f10d2e75ee4871a5e097a9b404317b986da06d351d78db +DIST firefox-128.3.1esr-nb-NO.xpi 613395 BLAKE2B 97b8b6ce5e382595d3dc422ad38a917f00c65405b582c3df1f58e62e318197bdda299942e9034a6f379442dc037839f39235100b1d119dea0fdadd0818294743 SHA512 aecf0af03246ce46a55d400d4a537e56c276f087e3aa5b0ef0dcf7581ed1286f1c9f0934d809d7d2a3a05ef19d9494c2a374b8e93c1d231e004174d2a75ce62e +DIST firefox-128.3.1esr-ne-NP.xpi 515328 BLAKE2B 1de2f752a8ab5e11fbfe34920123663f768da34c4072267748aaeba8b123d16eb87625cb5be07fb019475747855098eefa8436b14f06e9805ca20533abb1b6f1 SHA512 e660819c3fbfb5187f3b1615eb010ec795191baf20b7ee3790ce8e7f219d2c415539610bd00c9676298133e1c5aa22ecb3a9e01eb7e9e13bdf10be4660c757e3 +DIST firefox-128.3.1esr-nl.xpi 623992 BLAKE2B 31e9119cfa5762c241c0e9514cd8c8290cc609a5ac7bab849c4b77321e799533fa24e65852faff624b67f9cff1f21bb70a3bb6197d9dc31beed9228a0bb3d7f4 SHA512 5c1c3b3a9e7f861ba3912998e559980dd30e36945f4730b9aae500233f4ef4b33821dcbc6c745a39c04ce072ea8bbca328e4407ca0e781575e68443f6f6b56fb +DIST firefox-128.3.1esr-nn-NO.xpi 617327 BLAKE2B ea50d2bec48eb9d86027cc011efd16455223180d916533ae0584aee99e07fa488fbb48e63d448e5a7f10c88d201a77571ca78c7cfe7089327cbea76786652ec2 SHA512 0f7ab657b82e04e5f9aa7c9ea4311f459d0e1e33623deec6e7610055674918d34d9caa67355072d3b58fb75bef9dbe36795c364b76a49d37ee7cea27651baf51 +DIST firefox-128.3.1esr-oc.xpi 613843 BLAKE2B fd351d9bca3ae00e67d43000dd1fc24937f061cb6e9bbcca866f13ab6fc543c74159f066774c4214236d130bfa311ba056cf5def7616747e61216b0bb420a9b9 SHA512 b4d3d62bf5d4ca3eea1d016a1dac4994bfa75cfc8ff22f7f9ac365f0593045fc83c6939f10663138ebb272d89c6eb2ac68b26f97aab4beb51b011ddbed7f7ed9 +DIST firefox-128.3.1esr-pa-IN.xpi 697913 BLAKE2B e3c68624d5cb347114b0ed81641080074d1e514207a873e0cba948fb8dac39a016c655166a98d4404ff9d81d1932a80aa0698787778ec821bd5f2c01a9cd708c SHA512 91732ea8a5d0cb8b1dcb75ddfb43a78dc8905552ec296eb5561a0f135ad7cd4f04bc5c1e55c46fe0e75b72c8540a3d26e158e1dad3b1a82df5aecd651f7e470a +DIST firefox-128.3.1esr-pl.xpi 639649 BLAKE2B 8072dd2e8a82658d8dd5417eab9462b2affe259602ef5a2cd2622f51dcc653b942c0d6c31b4ad74eb4ff52a5be42ceca600ae3d169aeb060918a51d00ccf9cbb SHA512 821705eb271738da2a43c83a68702c7bf02d926905b3db26645ab1300dad0ec0a51a9b9dd3c17080408595f02aa1d7bf669e5d7e9aa105171bf878938ebb0cb9 +DIST firefox-128.3.1esr-pt-BR.xpi 628967 BLAKE2B 17deafa2a27a5ccb71bb0b99c8c065a98fb4be4f2b57bbef86e5baa5b6fb344e15b5c43363b9f4c7c1d8fdd1ee088065376712107318acf6322e8c9c31aaf059 SHA512 5aba1febc78dc5219e4bfd8f8ec3e487f62e0444286434e70cace14f1c6703efb20e22351b9f44732644b3258470abf50ed533029760eb4a6768c35851f71775 +DIST firefox-128.3.1esr-pt-PT.xpi 629953 BLAKE2B 5c900f610ecfaa463d7fc69c162a4c80f2347207d75b4e10b5cbfe90cae67bfbea5c774bb08e9f7982e3dccf2e9cc9e5cdea34a7c320363c03fa9e6d9080c946 SHA512 aa0b0cd4c17b027a07e942b22abbafaae11c42c8ca01729777de8e219b338470bf4e5ffe2ef216cd3fa635e479c517f30b504fcd6df7ad9978a519199a8cff24 +DIST firefox-128.3.1esr-rm.xpi 619519 BLAKE2B 795f794b6c90f9ec04687e34f6bf07815dc082ac9a2ca8b0972652ae1c9671add9ae7ad3311ec2260649063b1a95a5a1772bf6b1d410c0981972c9638a6f5ddc SHA512 1da34c1e28840b95e3cbe55a853791e81232e81f838b3791825d7fd831985f47e29ffd101c40d5bfa8526fd5909e20d06cb9b3d4c5ac3495bb0fa91aabd28e84 +DIST firefox-128.3.1esr-ro.xpi 550743 BLAKE2B b6b60977fbef8413bcbf987eb69c071586cabd3061078d9a07a691e3bf633f7a0bcd8346efd1b59a74338a5686c94542e66b4302f6ee49267f3063f14edeeb9f SHA512 427f424e45cb1377d9cbf45f4eadf369d06f7b7c83e85b411407a33fbbf421ac5e76cd85ff824a5eb8f12752b515c97001f64149121d7857efd686c614b879de +DIST firefox-128.3.1esr-ru.xpi 728459 BLAKE2B 94b8aa75807ab184b890dbfbf289b8d081611e5d8ebbff22e2e63bbff8a6ca9bc2bfca3b5aefd6d95e6f180c9b5a435e98af6e30978c0528279b33553fe38217 SHA512 8b11467fa145a4262ffb3af23566a809ba5a7058a016d8783abd61a7586e9f586baa8e72e213f5bccafe654a75be9897af59081f8cba1c9a188bdc400df8a051 +DIST firefox-128.3.1esr-sc.xpi 588769 BLAKE2B 5d97252c8716d0b19973cb19853ae8b4b5b4399b33f50dd5b797d00ca992405042c6c678e6103acbd6b31ed641a5a54a3135719cf32048d815fb9bf898949f5a SHA512 9610f610addb0428d8126865011285be62021ba3c117df12eaffb1a5246ee06fdfd5c2b956e2ae2a5dee41ae992b3668d89caa703e53aff642052ae25c291e3f +DIST firefox-128.3.1esr-sco.xpi 512223 BLAKE2B d04a893db3d190ce6dc28cfab267d794366eaeeda592a574e57075b3c13184697d2e631800153aac23e442d863c9db7a4b17f57e6c7822a3435e61b6b3766196 SHA512 fa552be5073ca7c75509766222ed9c37c5455a32eb975106eea04864e8580e0af4de4aa625eb2fb40ed6de40472a6749167a1e5c71733981ca670a499d866b75 +DIST firefox-128.3.1esr-si.xpi 614275 BLAKE2B d195848c101924bd65c3372c147e28366a1fc7620cc84d9abe413c8b81ad2c6d4d51ed877031589224926c977287992435b3efc6797bcaefe599729c6683abbf SHA512 e76e88b5850f203e03fd4d1efe48fa5a3636a4090d14770c6aef0aa13495fca3695aafb463fdfa58316de9d8e62deb8f2b5786a63a1aac1e3921da92cc1e3fa7 +DIST firefox-128.3.1esr-sk.xpi 659879 BLAKE2B 1b0283d450aea4c25acc6cbfe0e07410e75f1b6b25665824b0fc4ad96379ad6902341f9075ff10a5f3dd617c3c10b8bde7b49d5c3e46363ac2d9a8aea83ff42d SHA512 5139bd2a258f4ba7d3db176d017d193332876cbb7de5be935b6339adc9b9a1850cb61f48d089e7bcad909278be9a1ad35339b5c40bfd351cd7b2e044cbf5a5e1 +DIST firefox-128.3.1esr-skr.xpi 711999 BLAKE2B 6484516a00665ea0220b315a5d0e19b00acb53de2bf416422116d78bf4b9ed86263921a3738075ff47a239f065827169660e0bf6528ff5eca0e49182fbe2dc7c SHA512 2f2644de2903a7cf001f17bd3b689bb0befc55113aa8e00c130047c865d4155861c9f2906b61991f2f7c03f66c187a18797a5190ec2a1a3399c38e9f518593f1 +DIST firefox-128.3.1esr-sl.xpi 620265 BLAKE2B 13098fa09fb7ffa14ec2f86a2ba57f00163078b1bcbf0c89b57119ec1dedacaa3d4064d427a5e81fa15018c6f4574163970b20a171ca4667bc1dad926250d352 SHA512 8991676cb3d908d57d347be61ac4eef55e5ff74d35f7aa411d1ce099f705b4d6ea37a6f5798cee8e4be986169164e41b41c58181207a8301cf9b589c1a548036 +DIST firefox-128.3.1esr-son.xpi 417224 BLAKE2B 99db86c6afde6f44fa6902092079713d08a93744f7b06af77e160eaf4a54970e3c1f3db047c82814653356c25c49f4ee99bd423f7f0506e7939c987b452fe1ac SHA512 3c5463896e97b518806a134410dbb720d711b032d92526133e40039c5b8307566f496e03014c2c46cc7878a0db9a825885568e1177432ff15664d9f7bbda502e +DIST firefox-128.3.1esr-sq.xpi 638606 BLAKE2B dda3ad677c6ee1b897b271b4619924b2dd52aa2db344aff3b92c16a8cd875ad5444664f7af171ae906c4e5e0e631473f83bfb3afde42737db7ac2d57e2d5eb55 SHA512 1aa7980bb1a026d2a0dbfc14d3204c41361a9343e84fe32cfc1595041f812bc7b193eeaac9194d46c9f5607c1129e57295cf96288151bcfc1cb67e5714adb8e6 +DIST firefox-128.3.1esr-sr.xpi 640305 BLAKE2B b1f37c732cc47a268ae4b2958b16612e16a531e1ee7fd8d686953d82735f247e4885d8bde47f64c42a3767215e87b8aa7680f5ab4119c3250bd805fcffaef90a SHA512 7d05296ef804e89fb1a2fdb59da572caf5479655270368f12ccf2c2108a2695d92cfb09a8e19315b20465734fdd57e25c9f397a3ab65fc222d1f52d51f788301 +DIST firefox-128.3.1esr-sv-SE.xpi 625711 BLAKE2B f5a02d8b16dc95b225cc5485c0ef82630145410e014bf41e2daf098a46767342ce331c18d1003b4d0b8792f10b5a11ae21cdbd44d046317ef6c86a8ea936eeb3 SHA512 cae11f08e9229415417dc9222f524f3bbaf477b903c4154e2eb63dab28a90e05c02f4477a171f88e33956e7331f68b35dbadad44a6e247449f4f754f858de2a9 +DIST firefox-128.3.1esr-szl.xpi 527346 BLAKE2B 7772984bf087bd5da4d92d6db39bc248b67fe915b0290c74b863ee8f664fe7366f9c08a4118d10f1b354192078d0193a7bb08027d1a56bd4b4644ea4d44d22b5 SHA512 4013085d6a3687e420793683d2366cb39b54265715560642b2821880423525f5ce317693f2fa4e3c9e7f63faeb52845cb3d397c5c5499c694dff7f582d86f8fc +DIST firefox-128.3.1esr-ta.xpi 508334 BLAKE2B c815108bc75e43962afe48344e9c468f438a69fc55f39514594d4ddfc15b0e68a654c037633ea2ff798d9e1d5662f2a41dbac7ae82e7f7cd6a5d3544bcc04c94 SHA512 e6cf3b8b0ad0f23bacd9d2979d4f819e70fbcd52997daf79e0c53769af7bf296dd5205da05537df0c8c4772ec92bfb987b9a19d12abd94fbd0af097d668f7082 +DIST firefox-128.3.1esr-te.xpi 561978 BLAKE2B 66097c8b5ad1606de732624c586cb5a1697bce14e943ef4f7b13b6822c2785345544d0463e87ba18565a348dfc5fea52605951c0f3837ad475ab369d7ca1452e SHA512 b41f43a84e5039957b2c6afdd7dc7a54b66f460b727d3862075c3244ac0f1a986ff6d9421c3b503c45998e27ce8559036525a8133fab4834875174df72135728 +DIST firefox-128.3.1esr-th.xpi 699560 BLAKE2B 9aabca3e7d83908b3b7b3deb5157064d67ed18106f6144d0f2eac66098aa6efb09201385701645d3f81b41b4f6ea68d092045ed7454f5479a87efd0502f8084e SHA512 009c6b0947fed95a3d24024ae673df15f8573f139fe81ccc8d30b3e50952117623fa58d6b094c83b0ce0c28e6da327b67329bb4f1d1071f573396437b179c08c +DIST firefox-128.3.1esr-tl.xpi 535131 BLAKE2B 4f27ea0b868a5f3892e4b446433912d8d52908083aa91fc8feb3364215040ce2c160402c29343faa6e245a13fec04abd81ae730c80af067c10af382f1f3cb6f5 SHA512 a79d992dec998466123f620ccd1c741c0720a2ad7dc9d31146c4160a1a1c282a0207d854fab532c6fda9f9195618bdd864a39822563870d2da037cfdb89f7a38 +DIST firefox-128.3.1esr-tr.xpi 639352 BLAKE2B 35abfdd44236cf1de64c3c5fee5bf5526d3fe4f1ebdc40a1c54e95cfde72b09c815e4085853359a0a1dcdda5743e6a300435062093a1b3535702e039e854c77c SHA512 bf9b9f5f9239007fa3244799ac0084cc5992157613496bcbf15c67fee23637b0e08e162bcc1552a5e42528b3d8b9c0219ae61ac1de3214c1c74316648d158358 +DIST firefox-128.3.1esr-trs.xpi 505310 BLAKE2B 39b5aeeacb0075e5ea8e9d063cc43e5c4caae19aa6f2c27bc67f7684896848e2fa2ce1fbd84ec0c397479a9e525cbeeb7845c9e9c4a9a3535ddd1d7e193e3b2d SHA512 1e9e7cfcfc9fead32037994f3569c48417784626dd3713a8b0eceb45b65d9fe441ea84ed89db5b882ea4460e8d891486e9dc460bcf323807b7e67a8ed5f1d6f9 +DIST firefox-128.3.1esr-uk.xpi 708231 BLAKE2B 90b4ddaf47f8d82c9fbaa85fa8aef53ef436879fffd4f21081e713f990459417c430450e2fe5d5a6bce8294e9ea99258b9413368da9fdf41651bde18fd3becaa SHA512 0c29eb62924dbf8178c70b8b410ae4a2f54f52cde6182463ae486b32441d8865d1a463d75ce982ba06037c01d4af47693277a5b0dfeec8198fb94be708b8864e +DIST firefox-128.3.1esr-ur.xpi 561307 BLAKE2B 1a88914b5acd4f2fdd933d5a72eaffb586047ad8469280b1364b349067cd5396abbdaf5b37a860a5fe93b205c19dee0db4e9c2f0079311c3935bce264a5ed99f SHA512 8585316d7c1a48a2f4205c7c622c1f3ed1b55bff96deb59e991a9dc9e0ce6048f87895b8838fddf31ecf73772cba2d21e22cca4efa4f8a821a5d8f3d03b77000 +DIST firefox-128.3.1esr-uz.xpi 479735 BLAKE2B f6347a230dada12248cc3dd50687b054163c988ecf871f06e8815df4e2264a5bb3c24bad4fea40770fa7c533da6564c6a6b0484822b3ef3f589b7fc363503965 SHA512 3e7b63185c5f79ebf8e5d2c7973a66333acbe86e34c8c31925e494f99a37bdfa130a335f8e8b123c2f1dcd5de2ebec1eeaec5e676e42011b3497acc78489e74a +DIST firefox-128.3.1esr-vi.xpi 662720 BLAKE2B ce6979931760b29283719a9e4359644c3009a29f34e7943fcbbec607450680e93ad4656839b65527dc991e633e60c1bcc74801968e23ed0d152ad553c94db2ec SHA512 130f56dc615e979a4e168533be72c37ddaed1155140c39503eac5498d68683ed81088895d29172aa7ed2ddb912f409a5e08d1b590a00a252431f5dbcf3132491 +DIST firefox-128.3.1esr-xh.xpi 418009 BLAKE2B 9ba1f877b180250bbf48770209106df37868cb2e12504d12f3adea7a1f4ecfe7bec910a80a1b8dbcdf603751a881b8cfa8e6b21a392169657dc74dda49dabad0 SHA512 3d969044933b2eb79c32c68cb247d617b9ab07411b6838b2261ed29bfe7357bd272aee4158abaf841e31a22cdf12cd4aee26bc79b089a70d76f2ccd716e0eb76 +DIST firefox-128.3.1esr-zh-CN.xpi 662340 BLAKE2B 3dd74f61ae75ecd3a14f89650c77862ff3269067d7ad4120f6ffd72c54d1c40410ff2d9a04e7a57ba1d51447e1dadb4985b4c4c3a43ee0b18e97bdde490e0200 SHA512 7f136bba190419ed5a0fbef9f960cd52eddb077b897b41b09086dd067a376b27d572961a6e4545f6de2d69b738fdfc2c90154b867863c731726826f48a5286fd +DIST firefox-128.3.1esr-zh-TW.xpi 666615 BLAKE2B e32de7972b874e7ed948b5a0caf8af823e05b976ab59007bf9216f649b86a63be93fc7f0cb7a8d351260e4ef0d8d0317c67cf60e3612898f4c1df634edb03e93 SHA512 da06ee72e5857e61f50dd806dbe1a816191ba81c7b5f8093cb4aac319c6410829e0d838609357775720fe17854b75e1e9bb9e757ae21d20e336c284cb6d6f573 +DIST firefox-128.3.1esr.source.tar.xz 562947536 BLAKE2B ff2663743c160b227057bbf05915d27c9f04dcf605811933f91cc50b9de55c9e75c3583144fbfbe6a1bbc4570b636ba5918b30f034b6af744f615e6e9de0d594 SHA512 c5c1a2e951e0dbb1259a0f77a26b8678bfa4a4c7e909f8fcd5c6d0f807625926824ed235e114d9bab5e289232efaaf4c6691764db64860161ebc9bece9200f0c DIST firefox-128esr-patches-03.tar.xz 14156 BLAKE2B 9a618f0ddb8596b740893dc9113f374d193a00e4e8e76dbb2794928ceaafc7b5309cb6f69f6287ae1e423f0be0a060580b0d9d59307c9889362dd17fb7d31d3d SHA512 c6ec7233b368fac623ec0cce6f5c37d358a0fa5bb2154dc67eebb50968376ca9d46f3a734f5d79a4aa4edde9e300a9c65315d0e499aa6a1325b6c76a6c164258 DIST firefox-131-patches-01.tar.xz 22188 BLAKE2B 7044be5613a50625e54694cf88ed1ee96fd2c4e39dfeeb10b68858f67eaf5a05697e70f9940a015aaa66c172590b9815c801967be578bc48996e20f753a87929 SHA512 1bef1dd2a8fd9fa0723be40d7d38343fe00f4375c15b1c2bdbe04624d94d6b96357d22c353e6ce0fe53d857c74aeddef09668cb3ebf8d6dd7a77966ca920ede7 DIST firefox-131.0-ach.xpi 468402 BLAKE2B ff7a03490b95ed57cca023e49889f516a3bf976cc0ab2645ea182882b479a122639620348b6d64e947c24c54d78add8dbee9d19c497da47ddeb36e5f5618c63f SHA512 e1947463e31a60ad49c27807927358a898b77493f773cb9e40fdf1e74c96cb94d026f746bacc37925f221215a444a6a43bafb4bbcdeb1bf15370a5935d782624 @@ -312,8 +513,112 @@ DIST firefox-131.0-vi.xpi 667583 BLAKE2B ec659b907cb7a5b5882b10ee1bcab75113ab0e8 DIST firefox-131.0-xh.xpi 421249 BLAKE2B a006441cd86f2e4c505492b21d7cc68df5751d5c6d62b03188d3ea5e44e47afb327f07c6745bc0486dfbb00dc268b3db941cad6f42b70462cbae5c2354f90601 SHA512 bb34983c8ec72f0247eb717a5e3805365ef6af7986d2315bc46b15b4380d007360bd9477ca4b71614fd3b920f53244f88f9d9ba3b6b86cc5d593debf0496e455 DIST firefox-131.0-zh-CN.xpi 668952 BLAKE2B c1389fb8dec0f1188ac7b5721e8b27917bd29689ba5f47d3191ad702e19dda83fd6317f1a5fbe0783d66636aeb0c8306c5a27f015bc04ad2ea55130a8a61eb33 SHA512 1d7c967786304060409a4ccd669cee1653835e6e18bde61ff7b90e6090f193ab99eb8392d4b7af4a46b25f542a1281e87d5c06b2b783c4bdbdafc2aa172c2ca5 DIST firefox-131.0-zh-TW.xpi 670927 BLAKE2B 13de3debfffe7f4f8e4b7713c501bd273b6ab3144f5e4580a7b2d2f775006b87f90f88640f84974b86f9ac667b4d975407bb8ff4adaf0b03e4ec95580bc064d8 SHA512 e1603c59b42cc957db8a0610c562a757d7e5b7ea74fc4f5340d08e04f7d01742087482760bc7a128122e9e810d74a69dc2dfee78a0597f78f2ff2aa1382e4954 +DIST firefox-131.0.2-ach.xpi 468404 BLAKE2B 0744a09b9ad0eaf896b400211b96d3660fb3ae2ededddf244061cc37b1553ea8d81f612ae330de652ad0028a209c12c3a389b3168db73179605ed7c77a6e2ecc SHA512 1586f0dcbb6887e5af99e7d6d005b8455a616d6233352cba5d6a786d242536e55e23833034d699879eeebd72b6c269010baf12d5ad7b10d8a52c010284d28c49 +DIST firefox-131.0.2-af.xpi 421442 BLAKE2B 8f35510139ac7c78a3aa73bf95c8c34c535050a46dbe8725fc0a2c047d076fdcab2ef806bf1689a1ef1df9e0010b69444432dfbc7613efbb5860a07d2d88f57e SHA512 7cb920d8619660d3ab70f8c1070c8b4cf72215106003977ea7009d9f479d14644e15d53bd02f481184dce1b1e3116a14936e9de38b867ffe93667a1d8018620b +DIST firefox-131.0.2-an.xpi 509991 BLAKE2B b4e2b06ec5759985c8cce3a2c58f6f64f3da29e83fed7f5a3a65e18c226ff0bf982dc50b6adb19ff6b71c988120679ec5fd544f5bf0289697b2af70992f9f8b4 SHA512 ec06b90459e9c863c4311784a0b5d578f47ae98c177edc5b4e4a1269961ecdeac6355491c626d969db152bf249b2af68b832d7b113c29f220fd7f39b61ae0aa4 +DIST firefox-131.0.2-ar.xpi 616368 BLAKE2B fc2f843cd9ca92980d3b9a2dc710d6f06838c970a2694a253459f788350f0a2425c2781805701e4521df7a66df5ea6454b812d0fda1ebac44876e295b6a8411c SHA512 cf83c95da754b4572dc8f1069f20ca720db475fc827d9dd15e5061e0e46d8cc2913e92db7cb80b382cae1c21826b6cc486449b78f45a1fff017c1c1e5125c136 +DIST firefox-131.0.2-ast.xpi 500421 BLAKE2B 6671c41af28eae0d4e3863e5e1008bd6531e3ca361f4a25991f23c4c924e0d25fd42e20ddc07fc9a6ef51c3e99de1365ae2c6a40ec357f002d29a1f80d6e9771 SHA512 100568c0cedc0da7c6a9ba200808c62b0b84fdfd78f32c91b543843c47fc8c50c9352688003860d45938473f9d4fe29a1e3cea2ba3ec752237f929c8bca035ea +DIST firefox-131.0.2-az.xpi 495112 BLAKE2B a2d987c2e13138c9eef9211b347cc7d414801ebaf6d19a29141936d783707aea4521369b5d289c3901bd182f1bbeca129a3f72c9139685ed80e42f13923e343a SHA512 b6e25bf29fb4df67414429306d3b364d77ebde06e816386d5536d2da614c9700941aebbd2ad6b8cb8886186e1d5a14c75d5782afa632ffa4517ca8aae4df7d97 +DIST firefox-131.0.2-be.xpi 728099 BLAKE2B b0a79e12eacf7ba2f1b79b75ff052eec3b10ec102bad6f73393be9c0eaf13030010b7e653aaee48af0c8f7ee21e9aff592fac105605202bdaa37414bccd9a752 SHA512 68d09f51f483accb3cd0ead2a9720f702abe9c3391a9f563b50c90752074b72807c762a3803fe21790e2fd92f6df959ed603315a7e9f91fe4549aef5b7aa0a5b +DIST firefox-131.0.2-bg.xpi 648280 BLAKE2B c72a159aea8ad0017d83a5f3d16adb5fc4599d84fd04893b97e006f0d0a5b4d04ee1679ccc782af9f74e3381b82486e9d503acf61aab307b46ebe736d5d981c1 SHA512 8c77be9f8aec2756e02e47dcbbbfaf918c43a63801954a36c2d812affc5d963139ca3862de60e969b4f6f738c5a9a24a985dd49f9d96f4112d421048cd4dd9a4 +DIST firefox-131.0.2-bn.xpi 585888 BLAKE2B 8e8ea51f48d259fde22ab4a7a4092694b4cb5057aed8e877f77c99ae0e54faa9ba923e1791591e9c2a7a77e06fe43a84000b4f4e1077694866dc7875a72b595d SHA512 35e2750807a193bc429ee68335e045927f7b908580fa868b697c8a7923c513da8efbf1e88d8577a19405d57ef7073369e25591717eefd2eda21915ff96c6c721 +DIST firefox-131.0.2-br.xpi 594251 BLAKE2B 1c52d6928818b6fd5cc9d3a6db77304d85e867af16ca15f64ab8e314aef595845d47574fb98225555666d3e63a2082d6813de148fc48a224433b717a47b58d4d SHA512 d4ab40ff30152558d4a5e5576cf1660b10d7319b6e0f7e48a54520f5e1a651213d11c32ec95e68d1ca18b48edfa5271dc5339986371730fdc8525adf4378eaf3 +DIST firefox-131.0.2-bs.xpi 513547 BLAKE2B b2dcc8b80e6c87b4085ea3e184237735f84da6ee7f61474ee8aea30b949e7a11c183e9ed4dd2d0db262b1b56bb4141fed0bb86fd5347c0fdc28ee1b7383979e4 SHA512 81732eb205ac4d222f6abeaf9a9a3bbd80ec19fe4353f6a5758e12ce240c2335665abc8bdd3e971b23aae108036a218140e55660e62bd10cedf84e6a69179181 +DIST firefox-131.0.2-ca-valencia.xpi 550007 BLAKE2B f6675f9a9fb2b004d8e702c2416fc5810378dee3ba1826d2d9f60beea2cf10738b594ba1cfde46406ef28bbe0ffc171acc6d08a6065eba086dab2313116531c6 SHA512 7dc00f19c391ee28ebd8188d127fc87151030d5f1a9393515607bb2407fb203b418e19273194145c3354f52f802816d8246a4973fb5042fdfb98e8437e4a1a92 +DIST firefox-131.0.2-ca.xpi 601776 BLAKE2B 8f42f1bd90d418c40e3845c37a0aec1c09ce6caa772b2c3080beabc250761f17c8fda5ca872fb13c1aad072e053fac6816ffa92bccfd293a940bf3e853de1223 SHA512 74564e76b89f94422c498b7fae836206c633452efdbdd1da298c54a2ae78fa6bef77efa783b8e5a5435aeb5169ae69e8862ffa1ded33b5a2789dbad17ccd6327 +DIST firefox-131.0.2-cak.xpi 597636 BLAKE2B bf73d27703d746da24e135553a86c9ca801ab140b53d330680d5380b1ba7283a14c11521f215b3ddbd66a8a7748504d27717165b614ed6197f20cad199845ad3 SHA512 3bc3d8c1603396ccc497fa32a3c540ca6141af8322ad140a398cbbd996ffb1a518f63c9f43da24dd4690407d27d818a0e325061c4f1d8aeb111eb4442719b858 +DIST firefox-131.0.2-cs.xpi 671339 BLAKE2B 3b2d989dbe2197804c0c6467865787e7bfccc3da263dcfe4ae59b064a2a980ffa29962b5167a3d242f92cbec599dc4dc4894c0b0b4312f04af0a1b95ddf9a29d SHA512 955a748f2856276caf845e9b5f6e336094a54ce9a05a72a7ea53575c968e224a5f4e874020644912f917816f91008c079a4c4a190f99d7267ce80204260b4e0a +DIST firefox-131.0.2-cy.xpi 635348 BLAKE2B a4b3b3605368b54f31d4239f5831e4689ad9cbbd97d89c1bb3c0da4651c7349e274422186a9dd06f07960537d4fd9ef5bfac015505249aaee7f442f9d1857230 SHA512 528f68fe1e113f8ff8e23bf2a644426a90b315da1bd2b0e7460a86ae13b2d954fe2c67f3c71f5d0e3c6f6512caa830611faa65b1309c3c8e082d387678e0adc0 +DIST firefox-131.0.2-da.xpi 623757 BLAKE2B 40639169aaee63e323f5d56b908c4ebf6805997ccc9d4d5e917f0bb3677433f2e0e3a640b57e15adb177c6c780f8225eebf14fafbfbe8071f957536095c7b7ba SHA512 114c5ffcd6496148adc9b0ad8eec31bf18f00bb0ce3433c6693eb84693a3480c66bb8a1eb5a6f3eb8be223b5e48239009d9e980916773ae822ae515034f06392 +DIST firefox-131.0.2-de.xpi 645496 BLAKE2B 3ccebee2b6f6bbde8e5daecc77a740f7769d623bc77d9e39964ace3a7b05b0e29af60f3027e77e7548d0d289fe89d23b87f46243a96ae3e0b3fa42c1ace5c040 SHA512 48662a3cea079468f23bc113a0161d5aaf7e23372f15a1cd836b9affa08eac942e509d0c6169c7f4b51aaad7c58fb700f8c81382569a1af7249cc75dd5de81d2 +DIST firefox-131.0.2-dsb.xpi 662255 BLAKE2B 4d8a0f591a3e47f72850d67f102ef2251e5c026a75d32a943879d6cafefb59e97b01e67d5ff6a3975a514630bb0b393fe7e8ec558f4217905fb30a2d072cc14e SHA512 a43d747b78a89139f513b414f656ad0ba24f2385d1310fc912f0ba1160455d95ee3664c02dd3d85a4ac7469adea38614ed2ec3b3736c5df5d7b821323d3b5fdc +DIST firefox-131.0.2-el.xpi 745645 BLAKE2B f136c52d234a0d296e29753c8a647f0efabaafd02fb34c2ad048afb7a6a8b1b069d79ac4454493e51e26cdc4eb7409c01b0869cea7283706e55d97c54bc854b6 SHA512 3c7912a7da2f2fdf82262c8b2bdf717bad7262315fff272fed5cbfb2222f52ffb0f645fc62e00462a0a02410a30e5434dfc5dcf968b7d6f6e9bafdc3014360b3 +DIST firefox-131.0.2-en-CA.xpi 595197 BLAKE2B ecd239aba3a5872b16ba280b6b5a2eb2d95e9f9003ea7c52907f19d66fbbe3844c5e142d9445614fce95ad8d6eb99826b6ecfb1705142e8f6b59338e8b9dbe16 SHA512 3c477067c5c735d010aebebc77ae48f7651c7f5fbb344b94f83f749d7258d6d50ea7711fe328716808cc2c1be92b69a56ba95d6c73a0ee20425e3d8a3d10b68c +DIST firefox-131.0.2-en-GB.xpi 595560 BLAKE2B eee493d99f370e6b5eabbaecad4010ab19c08af0df852a86322c51ce9dfa891d607561958b4a1af77f9a77efc85546d565380ca001cf24ad2f0da96bb2260aa7 SHA512 c19702be92023856a9638ec3d4b1e071842196dba2abe2986415eeef3cf90feb5401c1fd5accef92346ececd543187ac0d7d15bf8129ae86440ca13f03ddf998 +DIST firefox-131.0.2-eo.xpi 626846 BLAKE2B 799b9c9be520d2799d5b402acbd02d3214f37d1e20c12b065b5baa2d1425c1063ffcd802c670f21a8e49b8dcce9f1b5693d00ebae03295cf964f5fda95510ccd SHA512 5222b5e803688cf36c857aafdb44bf7ed93b64bda3a695e0438ec8e99e25a38898201a9f42190af1a84c8e6673e396089520a0d356706e30c0f9f68578f4867e +DIST firefox-131.0.2-es-AR.xpi 638976 BLAKE2B 8fd7a22a63f4a38311ce615903b049550b133d08193a8ccb3a33946f699c43144dd6be6cc294e4571fa60c80fe17abfe4cf673156fc974cb89cdbda5a676c5c3 SHA512 700944b2421a6cf3ef00e8076e84258b3076b9ce551ed9c90fd62261ae9a7a94dd31f3f4ab63fd2607ccfb2c8d10b7b1749c963a265bd0e0922f9f4469828ec8 +DIST firefox-131.0.2-es-CL.xpi 638185 BLAKE2B 6357b738c485c51ea69b09c004d7774fd626a66861b7e77267805497127138a3d2a45253bb7cacdcc1048837804d21912353a7d776f1919da279b9b0a44664c6 SHA512 1c322c703c6f23aeb1743f8842bafab30daf17e1a78290b8047b4c055c7f3426a2521d34b1f670d645367f782999ebe1407c6f5d9420cc783c75ef8a7062c956 +DIST firefox-131.0.2-es-ES.xpi 629773 BLAKE2B b1c895a35b1041e361941ac47ef9ffc3900f070e81db9a2db1f34a0e6ef825f491b25a6d78100b2e07ff2d5ee58e7fd06dc21da6a7bd70209e542f425943b1b8 SHA512 c1a0ca8c2d54ffc7ea6d5d5df701118af8e653b451980387246aff1dafbeffe583f7e6d09d332ec0e007b89baf96dd24e7a2324222a0e1bbe4d1c0de91528070 +DIST firefox-131.0.2-es-MX.xpi 627922 BLAKE2B 3acebe592122f61a7a8e3b15594d63fcb34e4796d4e81939757985632b7b3ff6cec0e03807f8cb64012684ae5614ce78e566d2273acdeae532ea67048c0050c5 SHA512 574438331a6193d69f03ca486d7f95dc04808f04650df51147142b20aca689afe1d56a648fa93cb94f174bc5041dab01c1d8194dde5f22ecdb964dabc7e32957 +DIST firefox-131.0.2-et.xpi 544062 BLAKE2B 2a21578da86662102ce1287b701c29dc6dc650bf6aaf04baa6fd02201223b0f208ef714b6e1b4128a66c6f4db60f6c371e04e7a3736c9cf06a48d280350e21f1 SHA512 c65afbdf8cd9e238dd90fe4047de72450d8211fa78247c5d05613d54a670a64b5369b6580ee1becc2ab01949cb0edf147c4980c15b108e1ffd521d5b8d144197 +DIST firefox-131.0.2-eu.xpi 606300 BLAKE2B c7cbcf14ca9fa122162481a8c4e8f56e649955f4d7477e7983720da9b812ec891c53aa9e68e6ace6d4f51925e7b68bbb863b3a04248804d181bf5523c5567d2b SHA512 7319abfa7b141ce2ee17c4084df37a41e4c944713033387768070c7a4abc48ce27973bb975eb192966ff6de3c1546fe173061a72e40a1fd9cd947d3ac0cc546c +DIST firefox-131.0.2-fa.xpi 595020 BLAKE2B be3c3ac3b354de157eda09b54c88e335db9d65acb1ab741d7b8fcf0c179c113816db5da00d49daffd3d1dd15c5c168a101ee938af0240100f562dd4883758a0e SHA512 6a4810e08b88364f5aabf65f4b83372da3af0f02d8c7791c44772952c6ea5afb707bd19b43871dc29a27637b997f6d3a46790aa5e9fb16e275c6c77e46ff2b88 +DIST firefox-131.0.2-ff.xpi 480061 BLAKE2B 74d265754e20ece29f9790b957115415cf43efb8a4e741ccef4bcbe385511aa383eb4e76bf59b9c57a1a23f9fa946ba4dae0b8d8b245bfaaaa3dd502bf57f52a SHA512 96e8359cb3928b5512791db61b8203e5439b9b50054a82e7a8df3edee4542714dbc661bda463d0b3631a35ea58aa5b190d107177bc6b8320032b898ca9d56217 +DIST firefox-131.0.2-fi.xpi 619034 BLAKE2B 86e276a6926c4da0eed3e4c19a5a5f816b549bb5fbe98e08ca0794a8657ae6326240dfe08c19ac9a318c748a1dd19602268f26c95e959dc331b8dae276d887b7 SHA512 2440fbecbb7a91d6d103861820593e930c4f0f4346472225b121ee0eadb087e86c71110647fbfccb177d5b52b53b5e8ddedc8c5a92614ff296dde485927ea0ca +DIST firefox-131.0.2-fr.xpi 652460 BLAKE2B e3abfc0c594510ed7b5dce0f1ae92046130a1b977d222eaa5052c8d309f8efd945aa0f5dddcf5b08742df0b81122f2dc295663c59992d12402a95007e85ec647 SHA512 a38e25877c582fb1738c8c3f1eb01fef4a8bf9e3ecaf0cbe7af19ff0b568971270df63bf8cfb75847a80965a29af31b18a243289ee2f2acac44e481aba3b82ba +DIST firefox-131.0.2-fur.xpi 644997 BLAKE2B dd4d78bb240bf294aaf7d8b8373a84bdb63760bc5b5f3b720f5fa8a73e20a126a5d6c5e1434fb567c61c922b4a3f35be88ff0086413ff19f050d6ac26ce8c671 SHA512 479ed790671a24fa53962ab108dd686f677d1c17ea4036ee0bd6b56dafa2b258da0da510a71aa9153970c275314dc7a8be586e4fca7b152f5b0b22d5cf5c8ec9 +DIST firefox-131.0.2-fy-NL.xpi 634739 BLAKE2B 547b9c94486407af684bb53728e7d4fc4274125d40fea975d8b0143fe021d874bdc11f3ae8810c730740bcfa703c76efdeec92ff540e3ac450fc2788c1949f95 SHA512 2d8f5da98d6c91df532923771957b969b508868f2f0f025d36e1d6fb1003c525861823c02e73ec9632ea59bf62dcc6e51853fb9dec02065eaae110a1e8a85850 +DIST firefox-131.0.2-ga-IE.xpi 475186 BLAKE2B d9302799bb8050d8021786862db768c4b34f4c57d81ed02b2022d3a242d44347ee099d57acdef4e480d772511d268927ad48ea7618426cd99b2b19ae4229e88c SHA512 fdf009232167b6c6eed9dd8ca9791167a9f79a1bc945b719f1da5025d2bfb30e198fcc34f68cc79d9658c981264dd851f56fefa6229cef96c674c94ca74a9c7c +DIST firefox-131.0.2-gd.xpi 601267 BLAKE2B 99a8c6b628ab6efff5e5bd054689b164bf1776d21096564b99f52a9c4ef7d8a09e17e07b7fed878d693851f847278b9d253d029b20cd620f6de1866fadd81405 SHA512 ab1620cb44eca2a512c2fa01c5fdd0827ffec6f44f3280aab003293ff22a82f888ff6f1b37603f372d23c2c54b6c083cab24f6f824e46e6f4109b69ea53ccede +DIST firefox-131.0.2-gl.xpi 612826 BLAKE2B ab7582849e39ff9448013529b460fef057b78a69c9d5a98c9ab31d66fb7d0c4992c1e448418ef147ab427469ee3cd72963599c24b50481c0f21ae5d324c888a9 SHA512 9226c32ffee73ce496304dacc3390d113e90cc4af9d401bf04155b219aa5bb5331e1247a2d0afe4dd85ba107cd80332666fadae5e735eb490796b473d25cd065 +DIST firefox-131.0.2-gn.xpi 647607 BLAKE2B 5b88ae7aea1a7f4acaf9c2a8ae271af2bbf646e0eb7bb45c8b621fabb278e73da38cb1f4a64e6b033de6226bb514e7815c3af8207b5fbc291afa5791f743b382 SHA512 e5caeb068fa1e7eba056f48ad8cd3948e0b24fa541217d518cbae63dc62e2ea1d68eface063cac84eaac5d3abbec1fb150b7ba89cbfdf7e9aaf03df2d823c15f +DIST firefox-131.0.2-gu-IN.xpi 531666 BLAKE2B cafc6918b7ef5d30afd63b2153f4fdb4bfeec3c1a94a1b9139ca2cd8d66650cc7338c491bd5663b5bc14a9b207bf748242cc3ec797016053bca0abb72d882221 SHA512 76b0fdeb74d303df4e4850b7f6c2dc02c60897179777ca58496cc6ddc1d5267989d6260cf6e14f6aa6e85263ad66602d180e7524a6e4ca2aad33460e47f54aff +DIST firefox-131.0.2-he.xpi 641665 BLAKE2B 7ecee1e2e767fa7503ad41e9316e058c03f0de796425e62486234dc8e8bb063bc6d36d86ca4ddec0a2ac24118870b2d6df2337605e7b67e34095924be0bac436 SHA512 cba4813fe1246c38e4166cfffbb366af38ae0257c4c37a335ee9e4da08e3b423b60792978b8284a21241436b627fd1b9337884c9d0fdcecd7bd4ae07168dd83a +DIST firefox-131.0.2-hi-IN.xpi 570974 BLAKE2B c3ece1893021311f0ba97b96dfed4deee16f8153ab5cac779f207c04cb590ed30f98cb2ee8bb705292c9e33514feb63c49850b1cdb3a149398ff55aafcb4e1f1 SHA512 bac13d252ba461d8bb2f19b5344ae1137d56ac416d35a57fedca80e15f50eaa3dd548ca1dfdae8085f1325e1b6e2977200c27cae3b787eb0db65e67de50b432d +DIST firefox-131.0.2-hr.xpi 621589 BLAKE2B f5729a8e2428b7d9d99a279815048c0ef8f3176c448d206c64cd0d6ccc19cfa8bd2a3a823580273c27f32fab68b57b64b66ff90f73b7151a5fd015549a0c57bf SHA512 05ac63fa899bdf1712c0af8aebb865cafaa8939c1b16520b07406572d01ba61d7fb5dd004c69fe122ca3d5484e55688f6b9bc3af90211abc921086e25e9125fa +DIST firefox-131.0.2-hsb.xpi 658176 BLAKE2B 18a2bfd785c486b9e4095128ba94491815c23d3e6a75c5206f6e185b802eb7157cb8d89731dd9ed79a9778ad08af96af01634f090f97c613756afa672731696b SHA512 3925e743d975d663982febb8d1cf35406750697b6cf101f57ab7038824bf6ec08f04280e24ae240dae4512094e6e422968561f985d3e005e8643a2a13a0fb9c8 +DIST firefox-131.0.2-hu.xpi 662938 BLAKE2B 0e8dd59372f9d5080e145fadbe4eeb13cfb875b832adbcc2a4efbbf64f1dcab2628dae70de746298c26251a2a544c89ef4f558ce651c408f687b0341f90bf013 SHA512 e321838861162e836eba6bdefcb0e9c2f2bf6eaf0c1a54012b3a2c8ad626fe7524485314776daf39f83078931e927cf2f2e1186a281bebeae15594d1644e6b3d +DIST firefox-131.0.2-hy-AM.xpi 655953 BLAKE2B 325381236a09104d5d127fb2b3319a58aab90224f829a37264d98a97f0d12446cbad816b6c6d73ab63a488b4d4dc3bb2a328686d97d79fc2628debdaa5be24f3 SHA512 64016717962ed65b3dc249834db82ff80c00c26ac9ce6a0ffde45e4412c75fc854a420211feaf076f051e81849e618bf3d81acc3c07d1affdefa6757cf95c2d5 +DIST firefox-131.0.2-ia.xpi 621920 BLAKE2B 86ecfcc08fb347041829b10daa69336f2d3e9cfea20e5d806d11eb4ce3b77aec16ea8ba94b2458c5c01d2a2e44f5b68dc5bd60e1ec779bf55196f07511aa78db SHA512 45868d37a0fc6bbc2c090e4f00f476ca9d15290d8eaf5ecb0be8636cb7d8de89bbfc11a4fa7dd7370ca6b03e642dd4a1fc407084d51bf3b51b309e9d38912e64 +DIST firefox-131.0.2-id.xpi 589321 BLAKE2B 6bcc7aa0bb636af848395f80937939de480e98b396cf83a6e207efb8ff0e679a4a5b43033aa0265298a1515716a1ac19f35dca5790140b3f8aa9da934132b719 SHA512 fc7fc887e701e8c679407db7a0d783091ef87e51bb8271cdae0beb61da140c1aee0673cf39f4120b2bd53e4fa3f54caf6624b43e93e0085392fcc6014df25038 +DIST firefox-131.0.2-is.xpi 627296 BLAKE2B 57a70b86ea1b54a19466aea408d847cc21c343c5c78761024d0106d9352850774a649e48367fce97e3d0457ef40f40122f160c1c603bb83e60f85bdce1532fa7 SHA512 c63ffbc5d0f6d06a43b3f97335a829923c994bc2cabef8a0d793331ea1862e50e135c26d2b22da5173bbd8106ccff2dafbd44302952561ecd35a260e7da04697 +DIST firefox-131.0.2-it.xpi 578391 BLAKE2B 6f4cb5f2cf3a5b54070aa784acd67b26be10563734062f6a29a38ddf4f6e371ac6e2ba4b4c7d079245e0eaefa01dec91fadf7e7b8ffd57ebe71071fef6f20ca6 SHA512 a63cd99b0739c3e58ab466725dcbb1fc41598d50599c500da44a6478e1be08e8460098265ea863ebddf2c37e568113bb3d25db606a288e878d7b4326c7d3fa1c +DIST firefox-131.0.2-ja.xpi 687808 BLAKE2B 1e3f3db47026ac70f16f4081c2ec4cf02472183cef51ea51c563cff08c8afe78cd81020815a08322027497fb775b9e7f42c5dbea8f537cf1aaa72ee0255115ed SHA512 978229584323e5e42a911c841f510f9fe30bcac45dfc6c636b2733847b118683521dd0b1e79a8e855d11e1134ebd748a30308b80dcf816a1dc756e2f495a67e8 +DIST firefox-131.0.2-ka.xpi 665750 BLAKE2B 393d848395439febddb6fc2b66c78fbe53ecc70c5378b5509bfd84871a9a986eb65aaadd8946bf678b050e94a23f68de80b172f12be499e53428c7cae515b8e3 SHA512 bc78a927bc1a978c9126348e1bf857e70b663f365accd277d74565cece303bf5ea40dd68cadd2edede8a770efcc6e665c9460790b236d035881ee763c74fa22a +DIST firefox-131.0.2-kab.xpi 618851 BLAKE2B 6eaaa2c9406454615457cea87d76ba6958febdb1e8d013759b553a5ed69088dbfbe80c831fcfe1ce09c41af996d9ac13987829c20b853e67f63693c1fd64ddb2 SHA512 44db8b6ac46271583c4183e2022545e2d27e2af0a6ef198003817f27f83433656b789a085b01fb78650f9c1eb794e717960215129d3f3df069321f6237e2bf8c +DIST firefox-131.0.2-kk.xpi 720141 BLAKE2B 4d321634fbf59d86169e955112d700f92b5d2c67c5893caa367f204f015c19edf53b89a0f7d6be872484150f4e6a5f9465af6c3a9ac08c74fdfde9d8c1626413 SHA512 27cc618640b179757a8c575e34c55ec7f15505e2374aadbced5ab61c32a107c7bab4cd902dbd520bc5c3590945981004a040a0332e6a770c37eb39030c840b45 +DIST firefox-131.0.2-km.xpi 530164 BLAKE2B 5f51393927aa18469a91b4fdde45a713e7a75142319d3acfb0a329ef33120efcdda1450bccf1256897e1e72e5342b5b152caa6c957fdcd8bb8538ddd16ec4165 SHA512 a8df29d408a41a0d8093bce3d02b3cb97a82c8a3c5e058e8ec8222d06ba885749667f6e84dae444cb876fcb2146868bcacb680350a46d8f1af1e17a53b53f13a +DIST firefox-131.0.2-kn.xpi 495164 BLAKE2B 58229ad1aa6450877f02504141965dce8b2dbad11b8dde7e5b70024dffe38a72b5d738f245d00eb41581b68a5856a0904d9207acb2db7581138e4e554026ade1 SHA512 05dd01f1ec195d742ac26babb745137399e550296bd6525d5e40a3bb2f63d20dee947dcd0ebff10f422f83f691aed50156988aa4c86e81a0a50875f4ca3d2645 +DIST firefox-131.0.2-ko.xpi 673049 BLAKE2B cdb46c5517f34fe26de93435461b77638824387a91e8987b1a552208dbdf87af596e7f5283ea923feb698794cfb79f5e74430b981fc08e43bc724021306584e2 SHA512 d2d49a6088a1a962049778d688c063a5e7e186a48f5d82b023686bd9909e1d811a3a29fe6cc7cc1aa673b11edefcd95157ca971412f1d541e1c0dade62599877 +DIST firefox-131.0.2-lij.xpi 488457 BLAKE2B a77d15dd1246bde451a9e75c8285a5110ec78819c197dc9cee636a88b04c5917d6bc25d9abc271fb1ae80039dca563dabd19874c27dcedf7e4985e658bd439b2 SHA512 1c97e3085b88c0dfc91d9b89cca591b49836f5ea42e48fdbad490f9dd20cd0b2c65e93d2cf7f454e1492f3e60e931fd409e1a73c2ec5ea32e139abab1603db74 +DIST firefox-131.0.2-lt.xpi 577181 BLAKE2B 2b31b34aca36d546ebaf3cf36f991fa4eadf3105376102bbb28f43d447229d33279f69031bf47ff0b1499d361eb09ff580dc974f20a2b21f041880bfcad88008 SHA512 37eb0ce0bad0e61846e8ba72de3f651dbd59e114bc330274d689e54e509b21cfb9ef64c116a49bf4a54a220c415e89db286d9082d157403d459ef51563070791 +DIST firefox-131.0.2-lv.xpi 590484 BLAKE2B d8d6a6f6fa4301126187637358e6a5db3e577b93d0bfda40e550c4fe7a0e6e06b0a8bcd62d4843140558913c77610adfaf347f0c58c8037128a47af5b8893666 SHA512 c0e551efc0df74f09dd9d967fdb297eb376b8d5dd6c47ed78ec8d44613d02242080871f346d4ffa13f00fc857d6bd3871f0fdc482b7b0052a97836b3e7ada343 +DIST firefox-131.0.2-mk.xpi 497776 BLAKE2B 412d85e9656642ba7681f81cb5dc94281d3f13293dd28fde2f01fe1d26669a28b63775e4f9873ff3b18131d0a908f40d8ef23f40fa7d2d3956bb3fd33c308c8f SHA512 f3d48013d93499d5226147ffa150dc3c13f665623b5c7380a00313e3980d99d8ce2aaa9020e8d074148facb3275a6747621e817a6d0102ccb636f8d754a5bd44 +DIST firefox-131.0.2-mr.xpi 536283 BLAKE2B 65609ba60cdd884140cc3f582b9cef04cd77a157522f73c346e602f1e8686d574d908eda92783e3e05ebfe236476f33aba8ac225a364d3978f068ed5c288a112 SHA512 92fa5a83066a49fd6895577fb4bc4f61fa958b9d9362d62b9b0ea71c39fcad90223c34b99689b4d7485ab12a4a98fd24827de6a06d99aac0b31677170866298c +DIST firefox-131.0.2-ms.xpi 454039 BLAKE2B 7c976657c1c925d89ca10b543c65b84c0b647fb66631ae746e93d33d9f2054547b1d726b124a3fd172b61dcba378606be047c81f12062672fa323989a61a7c67 SHA512 21a484a1932e72d171b97fe745fc157082c4edbb2354017e31f88f41f1aa61b4dca5ab967d1e6fc2b926e9cac1ef07aafe904dad4cb5829b18b3ad8bcb808606 +DIST firefox-131.0.2-my.xpi 522638 BLAKE2B 8b275d6a81cbc715f322c7bb70f67eb3c644b390be1de3e48d41e8cf8115818587100db4680feabfece2f349c68f4d031a2d45eb112f335aae5300bd442e02d7 SHA512 4e1b0feb1b2ca6a234ce15239b0f7175aaa9eef8c413ba0f6932b4e7420a14f3c0161831b389a3af1e637d146b8b9e8cd8257e2d355f6339d68fd99e6bf92fe8 +DIST firefox-131.0.2-nb-NO.xpi 619136 BLAKE2B ed1c561945f60539ad7d44959f133eceb37413597c3e4d43e53178e450121824b1a0c34e91aaec9925c883629b580f28d7bfbbfa0c8bea905d438e65f91bb1e4 SHA512 a8f24724406a7853e0b650a3b429f9b16b6b81ec22c16fecac8fa4dcd59780f268171f5b6a1fbfb466f03a163ed487669cd030e2f751c1b5f750a1cd09918f34 +DIST firefox-131.0.2-ne-NP.xpi 525084 BLAKE2B 6e5cd08b95166985148af1bb138d4e370e5de51614a76c3bec1a1b1dcbdc42befd9286a5ea8e75ad4db7d0446d7033cbbc3109e91bf40bf3eab8d6d87a0371d4 SHA512 d48d89e10cf96957a5204b30bdfca99d8d8958394fff144e618a48ce04fbe38a6339213fb066a2f281da0ac956f4c424d34facfc984cdb0e69f086fd1ba96818 +DIST firefox-131.0.2-nl.xpi 628356 BLAKE2B 636169c80d07a3dee799c82a8ebe78bab3c37cfce6354a469775691a492946e0696f75d8ba6a5ece1d3a72e2445cc9edb767d959ee584139ab0e24b269fde49f SHA512 6df2c187df120b175e4e15365d4e48046c34abaf88367ff31560cda18fdb8573e12bc77ad726d7926b85390e8911af95fa3de5b2522cffdc7f8f94929220d1f9 +DIST firefox-131.0.2-nn-NO.xpi 621973 BLAKE2B 1c601e9989d2d41892e1400bd1b6ff00d201cdbd516db0d4a0bca0918cd277fbd23394d1eb6b5b3548d4093d9c1954d5584454c0e34d45c0edb80bef7be87075 SHA512 4daf053510206180259db58f0b778fc3140ae6b32f4f8d3774b09946f3546f78ee261d16551d78c70d5d1e4d70e7dce2ba8805b4f77361131a90abf47a46e820 +DIST firefox-131.0.2-oc.xpi 618720 BLAKE2B fdb8f35a169f331faa6be09d2605d5e13d1635283f87a8c5344609e9c191081184e6e07bb60457bff7c4ee984c3dd4d87b1c15871c864ce846baa0f1178a5289 SHA512 ab011bde72802d32e5656d9273363a8e42bc3b5ba848e6f0078a34326bde01e32a52b12569b4cafa792c6dc60045143143485bdca4d918d7cc502c595b027895 +DIST firefox-131.0.2-pa-IN.xpi 705113 BLAKE2B 649ea8778e4764c5a283896811f70c713f9cd6031a81e2b33ccead2d0f98269573ef60aae8ffc661b5a92a8405af69648807d4c69d4c534bfb247c1e562b7315 SHA512 41223660dafd8ca2712d00c7c5f09e11e7059c9ff653b27d7391821958284341df4f34fe2fe56287b8ccd6780db35c13c48fb3e532e6d927f29358b86dfdf1db +DIST firefox-131.0.2-pl.xpi 647704 BLAKE2B d82a7abec8f183e62e97a8c9e1e9311e32ae8921186fdbbc790fbbc71878830c1cabaf752ad30ed5fb8220c59508e6ac9772fade17c85f53d95cfa4f895f1348 SHA512 6771f9ebc2653d39e2b88e11cee9124f0e5e016e9bb85f5789d8b613e443afd07e6f1e9ce88118deee5216bc5fbec218b3401523c6d8f6e7b961655ae98caec3 +DIST firefox-131.0.2-pt-BR.xpi 633024 BLAKE2B a61e4eb6d27c08d6701da04630c600b0d043dea5660490fb00637ab5469da659bbee65b31caa8b80f0e0cd5355f68c84c4d67ff11a6c833d4433efb44dd3fee6 SHA512 8742a28a2ed9956a0996e4a2affd243d2412a207438e862c2cae7d224a4fee57cb33d66befb4353ee1d956b201d874dbe9cc6f211eddb13a7291a066544c8458 +DIST firefox-131.0.2-pt-PT.xpi 639644 BLAKE2B 476d7336b267805070b913c7a3e1d947c343e4b98bc5a34f55c65f468fd2104c85e5858fac4b40f24fbf5165a8eadce091c2c8f038756f133516ca34d8a82c31 SHA512 08f2fecb6134b4c5cc9ae876a4f22c78230d2c0e64343d879db512066fc11d6d25a10bb48f859581918229f9554891e36ab3bc72f409540a4707765b1f47e9e0 +DIST firefox-131.0.2-rm.xpi 629146 BLAKE2B bd07a17650f10307f607325319ad156b8e28b7e588e23490b0bb91ac911fcc43d87de04b3371cc1760ea40ba8f061387e7d078fc79de8a4fba7ca2f49707ad84 SHA512 cb3817bfb40200c85fb363b27b74954e1e83e3048c01d33c4151b2c8c019c88739394647be7dbf0e50f0cbe3f4c255644c20a0565a770d9272cfffe904cc640f +DIST firefox-131.0.2-ro.xpi 554258 BLAKE2B d38e9f37fcc887e67eeed653721ec0637169b80152a0292284f401c4c9d09a6632099547d507fd4781a85120c0601adbda357cf568f787ce16ee8f966220c815 SHA512 7671eebb88eac8f8bd0fab4b6981d8cbddbb5500d09a5fdcc4caaacf1432f1a4259e10b63b409ef47ef57137e4a36d659a294609563a2b07b41cd56a70ea937e +DIST firefox-131.0.2-ru.xpi 732966 BLAKE2B dd823a905b6a2a222d7a1dc957ee22367434b4f3ef994d65b9f3ec26e330290595daf847cbcb5305e71466a803200ea9f9bc7d5e6369c4fe09ab8ce3d139eb21 SHA512 4dfa5420af3f1a21d39bc90be54b88e4b36d27c1c8159d62304afe41bfe09c33997b16f8e6b2dfd35f95618bc42fe59dfb72a4fcbce4fb57fb7786008591eef3 +DIST firefox-131.0.2-sc.xpi 594020 BLAKE2B 7ab044db7e1ad40bac31bb4579283de5b9fe0ef81a307da51f900dad68c8fecfe68f1cafe7ae4bdbd4fad147fbfd1391666c576913c8a9d7dff92554d7338aea SHA512 418fc790baf1c9163c019f9f28294bbbaf54c64d46784839e54284a7139cba37184f1f263f7039938186a6f5b42e30eadf53136085b856c1316d326ea75323b4 +DIST firefox-131.0.2-sco.xpi 515580 BLAKE2B 919811430dcb7b862f7d83123b7779b4bb031b4e290d617319c7261e392c0abb49571240077934da10dfcbfa2efe10cf641560ba684e2a6abb94ccc7a30a8be9 SHA512 c60bc451368b952468cf2436ab1653f1efa044cdb0426531df31172e668ba7a005621186433ef6212588521a0ade8f24859d1540cfaa3b75de01895d40ec5dbb +DIST firefox-131.0.2-si.xpi 617762 BLAKE2B 7f9bd48d0120e81f2a41b89c7a4746350105246cfbf5fac797df5cdd23e1acb81f6a4035edace78d60c931efb8e1383d6cdec4479fb6de776e039683927538b9 SHA512 2b3e016dd0619a9aa31673f5d104b5c6d1df832eff7a1931c7175f49eb93f6544880a67ac960a85b7520f4842b7ea18dfdfbe9e3705a8fb10650489d84297b7d +DIST firefox-131.0.2-sk.xpi 664164 BLAKE2B 17874b2e633551a509e943a78344c216e611e9949ceb5f3411d97f30ec948f07c3fd137b916cf750712cc6f88c9cc9e410ca3672cdba5a291abeef04157936e3 SHA512 7b2e5ae6d7a18cecd7182f00f8d8b8513a454dbca08086aa47864b0a287c1b02a6b98c779b47d6642afd86f03a22ba715446abb0c6b2981949f267ce90450282 +DIST firefox-131.0.2-skr.xpi 722672 BLAKE2B ae1470bbd5d9e4d5b815bd44fcc8f5313565336e7a2b23393b45b09ff813ea8cdfc8c185f1b3dd62c4ea9e689df90a4a7f637d655fc440f1171dc748e5de0d20 SHA512 254770f7572ed69e115cb1e26da8fcfcaaca33505d769f50a2d6aab497bea5d7f63fd239dba170f050ce1817c65a40c03ee0ca855394192bfb66f681d58b75d1 +DIST firefox-131.0.2-sl.xpi 630597 BLAKE2B c9bf9a220cd5902951b8adb63ef20bc8981300409e7ba48e81a62a20edab874eaf239c02719c35aec88080bedc3b7c77bd00c9dbdafab97a49ef624d198fc7bd SHA512 9a388310e0bc5ffe483daa3bdab140f1b8a8e507a8ff74d529ee72388a9147a69b836129258c0f9acc13766fd3b22e458ccc343c32d8211e3da7983f2794d174 +DIST firefox-131.0.2-son.xpi 420495 BLAKE2B 4852652b53951c3969165f53540e514a511e6ae6757dc0d281c714fd7787564277866efdec832eae165b227db0f3ad983f8d39d57b1a5d29c21985ee61b6e15e SHA512 65c264955d9a72d4a054c9a3df9ae1ddf8a27196b6084cb48c70a33d9603d1fed5f24e0665444ea203bf7d35c8039e723f3f0f7c153ce004a77caf2ece35706c +DIST firefox-131.0.2-sq.xpi 649695 BLAKE2B c3e58bc62bbc113eef10bf2a2814447629a460d2512e6de4fedcadc10fcfb0148b9b401f7479554ec5513081f3409bb570b9c678e2bef4290166b3e9d43368e3 SHA512 f839338372a556ccc1a1cda729a0fb5ed54f04a1292816ba06e113b6548ecdc6fac5f71bb558aba1825e9940c549ff0c4bcc26cfb8bfa4fdab79f8dc48243244 +DIST firefox-131.0.2-sr.xpi 644241 BLAKE2B 4a7a7eb6aad8169b5805ab24e16a39b9c028e477456fe4b47560a87bccdbbea21fc5c7e94b75dd50c1fe7308fe98f6dd984892cd820f52ea9cd2b4242ccf9f4c SHA512 8f7f3baefe89db62774277832224ae0936fe5dfeb5b5c21dac9dd096185086b1f0bdc3c6467b2207b19432f22dc2523ac32cf31b17f8380bcdbdb41cbcf32004 +DIST firefox-131.0.2-sv-SE.xpi 629851 BLAKE2B 10f1c4433df6502d8d65e77c7c7d8b6507f48d7a3bf74b582d93d59a6f8c23dce860f9750e8c1fff2313a6a3a9e85394e41cb81c9edd61d2bc50555abc937f39 SHA512 59aa7a9bd965bd8aacec1aa74663fb9fd7e5619e8333c95984091655d601a14ce416620a2403a831f3996479849c18a60db8600ef92686b85dcefee5b0e3ce89 +DIST firefox-131.0.2-szl.xpi 530718 BLAKE2B c5d46dff6f7d28324ffc7351d13b65dd33898e30e975a592364921859849c4e01ed8a77c1ab56ad4c6cce528189cd59bbf1f0809608c8ab02144e44d6d22b293 SHA512 38b38b00a0996c9bac55eb2f890b18b062841cde2ccb9b682d6eddb0cb376b4a6c0b96ec73538d8517cfba1f8fca610b4db6a43a366a21c0cfd4e3d745d6b82a +DIST firefox-131.0.2-ta.xpi 511448 BLAKE2B 814a89731724bc63503d094fd6f1d4a9e6d074ef01248aafe35aa9b90374b348ebe8eaa065c66b3849d6c044640f131fd86db8c62a832daf59b1f471c743de18 SHA512 2e0a88e3bc0166b5f58ec89d90fce2e55699b1a11db491d47d0741ea17f089fe0c4b7e297f36679bc9758629a7896e9c5fb7300fbbfcda8b9b63cb98593c8fe2 +DIST firefox-131.0.2-te.xpi 565381 BLAKE2B d17a7bb7964b14445ef9d4eec44ad6584026ab783ba74647152104e1ae64df27b768361fcd458ef8d3188bce220e673f47f050a98ca8b4c8172b82af20c6ca30 SHA512 ee39a8f2102e2a291138c391bea11fba5d31e0714548f865bb63639a8af21727590940edc1cabe979acc32cd5b7cc8cee5fdd5130352a0ae6e0f071d5446d872 +DIST firefox-131.0.2-th.xpi 708981 BLAKE2B bc18f09ebaac65f159d98aa5f2255fee6555f53bb99ef815a04dfcd9c824774170efe275f564368b457be96d94663d530a5ef3fc21dc2ad4a6794da6e91034e8 SHA512 587e69876c9f7f730dedbdb0987072e4e4b3d5fcc62926ae8c72f363a4eefdb4d44bc4d8d8f5d25a96d7136f1310ecaea557cb20f0488b1a30b4e6db3f7c6776 +DIST firefox-131.0.2-tl.xpi 538577 BLAKE2B 078d725bbe4faf1d57ed743c223ceb3858b3b6329c4f83acca40301d7c63550285c3c8a5345778132253a3ef7721e510432c1ff9768b455c6b78f5dca5333725 SHA512 91c833f6b9dbdf7c7dd23a4969108281d0895fb506054454506252288a459ed15898d5471798c3b170f94f315ccf321c7b50c83bee2704277d95e1e565df153b +DIST firefox-131.0.2-tr.xpi 643431 BLAKE2B 3b33cdd9fdb2c5d0f277eadd24a75d487a25d6996be333366377e6802b5cd9c5b6639fe6a72d8538c95e3ec46e5ea6df859c0e87abcca2128552b10a24da9267 SHA512 9e554bddd39d8930ae4c2b0526956398b21be7dec614ac62ba358f43d3c777d614283253ae37142d0a49902bdbee9051e9629141a08f8b803f2f0f13a9ea94eb +DIST firefox-131.0.2-trs.xpi 508539 BLAKE2B e8729a830a346fbe66955f2342f381dd3549a32b314ab278e5195b54bc24cc6758731dfe8e6e5f2c9b0ab4987a198d2655db90c1cb3613a375e57da6e1d671ad SHA512 1511be8de834e06946620ffbeda7ee0ec9908b3b86532569f6e59afa38e86c6aa2411ae71ecc77f35a15ed70321a622e4bbcdee4c9f344739c27636e5754b9ec +DIST firefox-131.0.2-uk.xpi 724261 BLAKE2B b6e24bef4eb6fce4d78ca501e8401785fe13f4cabb3b477c83126d94d8065b360dcda6383fb4268f7cae3a7c7591cea71ea65dedd5e1474aef61d006c8e0bddf SHA512 e9ed598e6368e819ba7e059fe48de5623715108511503876a687208c10e630d62d5b6e830f854d38223ec197d27ce0cba2681dce2251823a1b7ac67556bcb921 +DIST firefox-131.0.2-ur.xpi 564455 BLAKE2B 99ccfa9307e1c9827f4240d3e94e435e89a5bda7c5867ca235ec03668e27cd718e73d3d0623c5442453115026474a895bf7a9a95df7e3d815ef017865e9a6f90 SHA512 e48e9a3de8b06a6de122afec279f5c22130c0e43527a0908d6b4aa256b5b475a186b618f0c9f07a7aad3a7e46786844210586b6cc4c9f7a11b73ba642eb4bbaa +DIST firefox-131.0.2-uz.xpi 483052 BLAKE2B d96bfb1db239f46d50da689178c3598b32740c161042322447b570b5f533342198ab1c5eb32acb80ac29ecfbbe6539ec0c58feec4c5c5b578f8acd4331de9e28 SHA512 8982a2a4d399432cf3c4f309c9188bf17f23874045daf9caf063188e6ff1af1e87a0f5ca1af3a01d3a5008356d09379b54e7e4ba9f3c7d3ca3b5f00701193ed2 +DIST firefox-131.0.2-vi.xpi 667585 BLAKE2B a2c904359b57c7c4517152e1f8bbe10009ef6e31b2d3f8a718cd0ee68165e7e759c5672fac67047e9ca8ed4b1d81cf6f2b9969c9d2b3ca99b2319ff1b1c78a21 SHA512 a55248bd1a6e092b7633ffba698047f5c50d742465134522d406e157c3e89995da3198fac563b85450437154e4b3287890cc22b1c6fb5d55a79a1fa414acd606 +DIST firefox-131.0.2-xh.xpi 421248 BLAKE2B 291a59b878580276a3d028a318607b78dadbd85d3c1f87101e1fbcb2f855b4148bb5f4715a918d332bcf0c279c29118b7f2ae08cc98937701624d07a8265db04 SHA512 0446d03d56efd940f9de10dc437c215a8dd781df87ff83c84bd607dfb3bf3ca349ceb759d633c9b2b4c066db7baf44c292ee3d9719a69a55e24415e079f2a1b2 +DIST firefox-131.0.2-zh-CN.xpi 668950 BLAKE2B 98ec8e92e7b520ba1a86d2bb615bec16c27ab75fda672617714c54a403bc26b2772e37a83b7d514b0c7e173f80ee0735b844bd0861a866d5f3158ae18c5c3a0b SHA512 6555df6ea154a76bae6ddb361c420ea34492e10f1cb340192e69fb283ae0fc0d37bbccf8b67b69fc4deffc2e5fd70115e56a6bc5524b0143368f9d8269facdee +DIST firefox-131.0.2-zh-TW.xpi 670924 BLAKE2B d2417e7edc6817aa2ff7398aaad0ea010284a38d3494fec944e7edf715881d4de2c14f6ef3ef73845440363a3e909d423530d6e713b651ea730dc0a6f2ed43f7 SHA512 4958ccd9973e42cdfa618a53f66a69901025ed59b9505ff52075503a371a5f2041601beb7724a4a82271546f94299803d3804e683cc32dc5ea4a7e1738c3263e +DIST firefox-131.0.2.source.tar.xz 567226924 BLAKE2B 33831c6c40ab0cdf3cae0a673fd6e4ab5782e0ac1c1f50383b75aed8850df878d865ad584fbf4711bbb66b6e9708cc37f6d6a0e82be3ef4a4ef87c3f11b471be SHA512 fb1a1179a8c62de975c93e1ac6f058cb5492e955bbb7ac2d4b83cdd14ba17bdb2450078bd6f626124b14542f3fda9514bea476aaa34ff4f5a2bee6b1625ec963 DIST firefox-131.0.source.tar.xz 566366180 BLAKE2B ffb8c12ba76f8d06501287ba1c61279e9167f0684275d8cf7e2c3be0697326ded824ccd60f8e44ca7374b59e9e580b2dcba23d2dce4bb184d2e73faa86d9d5af SHA512 324cbaadff4d19a18d56ca01ae7212ac8362e3f5933f3017a19b64c35d58606ace8bba3672790ecb48d4a849619cdc95701440701725e8eb2859d55f1e8d8e3c EBUILD firefox-115.16.0.ebuild 39935 BLAKE2B d2634c9a774135b121da45942a0b7a2614695503b13b1f277703dc54f2d8a0dbfaba7e19b1665b0fe503723d61439498c3dd7b352bd1696619de1bf46cd92a7e SHA512 db5f90432d1c6f8c88ba54faed8fe6adbc6ac345bb45976fe1a02056b642dda9495e11695dd5fd04d1c8b8edcab83a0f0f06cdfd9806e3aec605c5ef01fcdbac +EBUILD firefox-115.16.1.ebuild 39939 BLAKE2B 3e553c5dd4131d283259ad4d636e14ef1c6a1c63d56896cef8a422708c926684dd23f9a08fd0e4ba072c066c0c0341c3dfaf6236018e8993d24fd259d0ac1e74 SHA512 031ef1b32b06c41f43ac82bb4045cf9a568993f3199e28692a54e33f290d3367c351f03dd24b19206502ff6911035a2b1486ad0bb10556340f03d35be7943d43 EBUILD firefox-128.3.0.ebuild 41715 BLAKE2B 35226120d233ff6fd60e9ff74b0417f4d370d11c0ea9cb1b48bf17ff8bf7eb6ff3296d857dfaefecedf91227726766536b37828ed2a8c478f0f69815cfcca3ef SHA512 663a87d2122261f683515c64fbe9d9e3c372aa098c7b8a0af57862d27489981f55c122e9165945a08e1f15ad8f75c70295059460252211bbd29911d0ca1f2992 +EBUILD firefox-128.3.1.ebuild 41716 BLAKE2B 6f51a9340a839be7f2c421ae6a06357b7c605a23ef95731446f58c13464a13620a5fc8671232c304a906075e8f669d9ef24d81cdd7fb06eb952baba6bc9ca5de SHA512 8aca0c8006496091609c712c3ea4b45cb0b66490a84630b9cb116fdacae78d0f235aa8b86529e15c974433a087569f6403030ff2cce497c1fe5297e1c02d7693 +EBUILD firefox-131.0.2.ebuild 41522 BLAKE2B 0f744a358def3bba1dba9e169af5904d143efc60d0267757a2db1ce64fddf504d61ba727f6247590d59a7239fccd4ed8ca277d21cfbab8557994ff70fcd97e75 SHA512 bc5ac578d35fac0bec3388381ee7752867d4ff399f67e786b19c144fa02a6cb4a72d2da417103ca47e72f99df21357bef67a95c97294e8802c24ff801dc1b324 EBUILD firefox-131.0.ebuild 41522 BLAKE2B 0f744a358def3bba1dba9e169af5904d143efc60d0267757a2db1ce64fddf504d61ba727f6247590d59a7239fccd4ed8ca277d21cfbab8557994ff70fcd97e75 SHA512 bc5ac578d35fac0bec3388381ee7752867d4ff399f67e786b19c144fa02a6cb4a72d2da417103ca47e72f99df21357bef67a95c97294e8802c24ff801dc1b324 MISC metadata.xml 2675 BLAKE2B 57721fdb9b8e0f1ea4a7d96dc284d5bc2f02e486086778bcb56f1a6166e327c4a06766cc4f2a7dd3716eef352c78ae28659971d9c71880d3ab22524ff060f57c SHA512 e0331f26da3dfa53b5f5c3b68e1f19b02dff662bc70bf4275d55edc077a508ac26be031f8693000fc903ea84c637cfc656358aa8f20f42747dd9a6994df6d724 diff --git a/www-client/firefox/firefox-115.16.1.ebuild b/www-client/firefox/firefox-115.16.1.ebuild new file mode 100644 index 000000000000..31b6c0937aff --- /dev/null +++ b/www-client/firefox/firefox-115.16.1.ebuild @@ -0,0 +1,1393 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-115esr-patches-13.tar.xz" + +LLVM_MAX_SLOT=18 + +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} +) + +DESCRIPTION="Firefox Web Browser" +HOMEPAGE="https://www.mozilla.com/firefox" +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" +S="${WORKDIR}/${PN}-${PV%_*}" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +SLOT="esr" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86" + +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:18 + sys-devel/llvm:18 + clang? ( + sys-devel/lld:18 + virtual/rust:0/llvm-18 + pgo? ( =sys-libs/compiler-rt-sanitizers-18*[profile] ) + ) + ) + ( + sys-devel/clang:17 + sys-devel/llvm:17 + clang? ( + sys-devel/lld:17 + virtual/rust:0/llvm-17 + pgo? ( =sys-libs/compiler-rt-sanitizers-17*[profile] ) + ) + ) + ( + 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 ) + !elibc_glibc? ( + || ( + dev-lang/rust + <dev-lang/rust-bin-1.73 + ) + ) + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 ) + pgo? ( + X? ( + sys-devel/gettext + x11-base/xorg-server[xvfb] + x11-apps/xhost + ) + !X? ( + || ( + gui-wm/tinywl + <gui-libs/wlroots-0.17.3[tinywl(-)] + ) + x11-misc/xkeyboard-config + ) + )" +COMMON_DEPEND="${FF_ONLY_DEPEND} + >=app-accessibility/at-spi2-core-2.46.0:2 + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.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 + )" + +# 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!" + einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + fi + fi + + einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 +} + +MOZ_LANGS=( + af ar ast be bg br ca cak cs cy da de dsb + el en-CA en-GB en-US es-AR es-ES et eu + fi fr fy-NL ga-IE gd gl he hr hsb hu + id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO + pa-IN pl pt-BR pt-PT rm ro ru + sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW +) + +# Firefox-only LANGS +MOZ_LANGS+=( ach ) +MOZ_LANGS+=( an ) +MOZ_LANGS+=( az ) +MOZ_LANGS+=( bn ) +MOZ_LANGS+=( bs ) +MOZ_LANGS+=( ca-valencia ) +MOZ_LANGS+=( eo ) +MOZ_LANGS+=( es-CL ) +MOZ_LANGS+=( es-MX ) +MOZ_LANGS+=( fa ) +MOZ_LANGS+=( ff ) +MOZ_LANGS+=( fur ) +MOZ_LANGS+=( gn ) +MOZ_LANGS+=( gu-IN ) +MOZ_LANGS+=( hi-IN ) +MOZ_LANGS+=( hy-AM ) +MOZ_LANGS+=( ia ) +MOZ_LANGS+=( km ) +MOZ_LANGS+=( kn ) +MOZ_LANGS+=( lij ) +MOZ_LANGS+=( mk ) +MOZ_LANGS+=( mr ) +MOZ_LANGS+=( my ) +MOZ_LANGS+=( ne-NP ) +MOZ_LANGS+=( oc ) +MOZ_LANGS+=( sc ) +MOZ_LANGS+=( sco ) +MOZ_LANGS+=( si ) +MOZ_LANGS+=( 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' + + 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 + + # Clear tons of conditions, since PGO is hardware-dependant. + addpredict /dev + fi + + if ! mountpoint -q /dev/shm ; then + # If /dev/shm is not available, configure is known to fail with + # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py + ewarn "/dev/shm is not mounted -- expect build failures!" + fi + + # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then + MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc" + fi + + if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then + MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ" + fi + + # Mozilla API keys (see https://location.services.mozilla.com/api) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then + MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005" + fi + + # Ensure we use C locale when building, bug #746215 + export LC_ALL=C + fi + + CONFIG_CHECK="~SECCOMP" + WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to play DRM-protected content." + linux-info_pkg_setup +} + +src_unpack() { + local _lp_dir="${WORKDIR}/language_packs" + local _src_file + + if [[ ! -d "${_lp_dir}" ]] ; then + mkdir "${_lp_dir}" || die + fi + + for _src_file in ${A} ; do + if [[ ${_src_file} == *.xpi ]]; then + cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die "Failed to copy '${_src_file}' to '${_lp_dir}'!" + else + unpack ${_src_file} + fi + done +} + +src_prepare() { + if use lto; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die + fi + + if ! use ppc64; then + rm -v "${WORKDIR}"/firefox-patches/*ppc64*.patch || die + fi + + if use x86 && use elibc_glibc ; then + rm -v "${WORKDIR}"/firefox-patches/*-musl-non-lfs64-api-on-audio_thread_priority-crate.patch || die + fi + + # Workaround for bgo#917599 + if has_version ">=dev-libs/icu-74.1" && use system-icu ; then + eapply "${WORKDIR}"/firefox-patches/0029-bmo-1862601-system-icu-74.patch + fi + rm -v "${WORKDIR}"/firefox-patches/0029-bmo-1862601-system-icu-74.patch || die + + # Workaround for bgo#915651 on musl + if use elibc_glibc ; then + rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die + fi + + eapply "${WORKDIR}/firefox-patches" + + # Allow user to apply any additional patches without modifing ebuild + eapply_user + + # Make cargo respect MAKEOPTS + export CARGO_BUILD_JOBS="$(makeopts_jobs)" + + # Workaround for bgo#915651 + if ! use elibc_glibc ; then + if use amd64 ; then + export RUST_TARGET="x86_64-unknown-linux-musl" + elif use x86 ; then + export RUST_TARGET="i686-unknown-linux-musl" + elif use arm64 ; then + export RUST_TARGET="aarch64-unknown-linux-musl" + else + die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651" + fi + fi + + # Make LTO respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure \ + || die "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 + + # Clear cargo checksums from crates we have patched + # moz_clear_vendor_checksums crate + moz_clear_vendor_checksums audio_thread_priority + moz_clear_vendor_checksums bindgen + moz_clear_vendor_checksums encoding_rs + moz_clear_vendor_checksums any_all_workaround + moz_clear_vendor_checksums packed_simd + + # 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 + + # With profile 23.0 elf-hack=legacy is broken with gcc. + # With Firefox-115esr elf-hack=relr isn't available (only in rapid). + # Solution: Disable build system's elf-hack completely, and add "-z,pack-relative-relocs" + # manually with gcc. + # + # elf-hack configure option isn't available on ppc64/riscv, #916259, #929244, #930046. + if use ppc64 || use riscv ; then + :; + else + mozconfig_add_options_ac 'elf-hack disabled' --disable-elf-hack + fi + + if use amd64 || use x86 ; then + ! use clang && append-ldflags "-z,pack-relative-relocs" + 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 + + 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 + + if use geckodriver ; then + ewarn "You have enabled the 'geckodriver' USE flag. Geckodriver is now" + ewarn "packaged separately as net-misc/geckodriver and the use flag will be" + ewarn "dropped from main Firefox package by Firefox 128.0 release." + fi +} diff --git a/www-client/firefox/firefox-128.3.1.ebuild b/www-client/firefox/firefox-128.3.1.ebuild new file mode 100644 index 000000000000..e66d33fb8c17 --- /dev/null +++ b/www-client/firefox/firefox-128.3.1.ebuild @@ -0,0 +1,1368 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-128esr-patches-03.tar.xz" + +LLVM_COMPAT=( 17 18 ) + +PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +WANT_AUTOCONF="2.1" + +VIRTUALX_REQUIRED="manual" + +MOZ_ESR=yes + +MOZ_PV=${PV} +MOZ_PV_SUFFIX= +if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then + MOZ_PV_SUFFIX=${BASH_REMATCH[1]} + + # Convert the ebuild version to the upstream Mozilla version + MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI + MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI + MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI +fi + +if [[ -n ${MOZ_ESR} ]] ; then + # ESR releases have slightly different version numbers + MOZ_PV="${MOZ_PV}esr" + HOMEPAGE="https://www.mozilla.com/firefox https://www.mozilla.org/firefox/enterprise/" + SLOT="esr" +else + HOMEPAGE="https://www.mozilla.com/firefox" + SLOT="rapid" +fi + +MOZ_PN="${PN%-bin}" +MOZ_P="${MOZ_PN}-${MOZ_PV}" +MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" +MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" + +inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 multiprocessing \ + optfeature pax-utils python-any-r1 readme.gentoo-r1 toolchain-funcs virtualx xdg + +MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" + +if [[ ${PV} == *_rc* ]] ; then + MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" +fi + +PATCH_URIS=( + https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +DESCRIPTION="Firefox Web Browser" +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" +S="${WORKDIR}/${PN}-${PV%_*}" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86" + +IUSE="+clang dbus debug eme-free hardened hwaccel jack +jumbo-build libproxy lto openh264 pgo" +IUSE+=" pulseaudio selinux sndio +system-av1 +system-harfbuzz +system-icu +system-jpeg" +IUSE+=" +system-libevent +system-libvpx system-png +system-webp +telemetry wayland wifi +X" + +# Firefox-only IUSE +IUSE+=" +gmp-autoupdate gnome-shell" + +REQUIRED_USE="|| ( X wayland ) + debug? ( !system-av1 ) + pgo? ( lto ) + wayland? ( dbus ) + wifi? ( dbus )" + +FF_ONLY_DEPEND="!www-client/firefox:0 + selinux? ( sec-policy/selinux-mozilla )" +BDEPEND="${PYTHON_DEPS} + $(llvm_gen_dep ' + sys-devel/clang:${LLVM_SLOT} + sys-devel/llvm:${LLVM_SLOT} + clang? ( + sys-devel/lld:${LLVM_SLOT} + virtual/rust:0/llvm-${LLVM_SLOT} + ) + pgo? ( sys-libs/compiler-rt-sanitizers:${LLVM_SLOT}[profile] ) + ') + app-alternatives/awk + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.26.0 + net-libs/nodejs + virtual/pkgconfig + !clang? ( >=virtual/rust-1.76 ) + !elibc_glibc? ( dev-lang/rust ) + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 ) + pgo? ( + X? ( + sys-devel/gettext + x11-base/xorg-server[xvfb] + x11-apps/xhost + ) + !X? ( + || ( + gui-wm/tinywl + <gui-libs/wlroots-0.17.3[tinywl(-)] + ) + x11-misc/xkeyboard-config + ) + )" +COMMON_DEPEND="${FF_ONLY_DEPEND} + >=app-accessibility/at-spi2-core-2.46.0:2 + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.101 + >=dev-libs/nspr-4.35 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + media-video/ffmpeg + sys-libs/zlib + virtual/freedesktop-icon-theme + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/pango + x11-libs/pixman + dbus? ( + sys-apps/dbus + ) + jack? ( virtual/jack ) + pulseaudio? ( + || ( + media-libs/libpulse + >=media-sound/apulse-0.1.12-r4[sdk] + ) + ) + libproxy? ( net-libs/libproxy ) + selinux? ( sec-policy/selinux-mozilla ) + sndio? ( >=media-sound/sndio-1.8.0-r1 ) + system-av1? ( + >=media-libs/dav1d-1.0.0:= + >=media-libs/libaom-1.0.0:= + ) + system-harfbuzz? ( + >=media-gfx/graphite2-1.3.13 + >=media-libs/harfbuzz-2.8.1:0= + ) + system-icu? ( >=dev-libs/icu-73.1:= ) + system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1:= ) + system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] ) + system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) + system-png? ( >=media-libs/libpng-1.6.35:0=[apng] ) + system-webp? ( >=media-libs/libwebp-1.1.0:0= ) + wayland? ( + >=media-libs/libepoxy-1.5.10-r1 + x11-libs/gtk+:3[wayland] + ) + wifi? ( + kernel_linux? ( + || ( + net-misc/networkmanager + net-misc/connman[networkmanager] + ) + sys-apps/dbus + ) + ) + X? ( + virtual/opengl + x11-libs/cairo[X] + x11-libs/gtk+:3[X] + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrandr + x11-libs/libxcb:= + )" +RDEPEND="${COMMON_DEPEND} + hwaccel? ( + media-video/libva-utils + sys-apps/pciutils + ) + jack? ( virtual/jack ) + openh264? ( media-libs/openh264:*[plugin] )" +DEPEND="${COMMON_DEPEND} + X? ( + x11-base/xorg-proto + x11-libs/libICE + x11-libs/libSM + )" + +# ESR and rapid dependencies. +if [[ -n ${MOZ_ESR} ]] ; then + RDEPEND+=" !www-client/firefox:rapid" +else + RDEPEND+=" !www-client/firefox:esr" +fi + +# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or +# overridden in the enviromnent (advanced hackers only) +if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then + MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) +fi + +llvm_check_deps() { + if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then + einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use clang && ! tc-ld-is-mold ; then + if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then + einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then + einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use pgo ; then + if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then + einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!" >&2 + einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + fi + fi + + einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 +} + +MOZ_LANGS=( + af ar ast be bg br ca cak cs cy da de dsb + el en-CA en-GB en-US es-AR es-ES et eu + fi fr fy-NL ga-IE gd gl he hr hsb hu + id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO + pa-IN pl pt-BR pt-PT rm ro ru + sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW +) + +# Firefox-only LANGS +MOZ_LANGS+=( ach ) +MOZ_LANGS+=( an ) +MOZ_LANGS+=( az ) +MOZ_LANGS+=( bn ) +MOZ_LANGS+=( bs ) +MOZ_LANGS+=( ca-valencia ) +MOZ_LANGS+=( eo ) +MOZ_LANGS+=( es-CL ) +MOZ_LANGS+=( es-MX ) +MOZ_LANGS+=( fa ) +MOZ_LANGS+=( ff ) +MOZ_LANGS+=( fur ) +MOZ_LANGS+=( gn ) +MOZ_LANGS+=( gu-IN ) +MOZ_LANGS+=( hi-IN ) +MOZ_LANGS+=( hy-AM ) +MOZ_LANGS+=( ia ) +MOZ_LANGS+=( km ) +MOZ_LANGS+=( kn ) +MOZ_LANGS+=( lij ) +MOZ_LANGS+=( mk ) +MOZ_LANGS+=( mr ) +MOZ_LANGS+=( my ) +MOZ_LANGS+=( ne-NP ) +MOZ_LANGS+=( oc ) +MOZ_LANGS+=( sc ) +MOZ_LANGS+=( sco ) +MOZ_LANGS+=( si ) +MOZ_LANGS+=( skr ) +MOZ_LANGS+=( son ) +MOZ_LANGS+=( szl ) +MOZ_LANGS+=( ta ) +MOZ_LANGS+=( te ) +MOZ_LANGS+=( tl ) +MOZ_LANGS+=( trs ) +MOZ_LANGS+=( ur ) +MOZ_LANGS+=( xh ) + +mozilla_set_globals() { + # https://bugs.gentoo.org/587334 + local MOZ_TOO_REGIONALIZED_FOR_L10N=( + fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE + ) + + local lang xflag + for lang in "${MOZ_LANGS[@]}" ; do + # en and en_US are handled internally + if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then + continue + fi + + # strip region subtag if $lang is in the list + if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then + xflag=${lang%%-*} + else + xflag=${lang} + fi + + SRC_URI+=" l10n_${xflag/[_@]/-}? (" + SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> ${MOZ_P_DISTFILES}-${lang}.xpi" + SRC_URI+=" )" + IUSE+=" l10n_${xflag/[_@]/-}" + done +} +mozilla_set_globals + +moz_clear_vendor_checksums() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -ne 1 ]] ; then + die "${FUNCNAME} requires exact one argument" + fi + + einfo "Clearing cargo checksums for ${1} ..." + + sed -i \ + -e 's/\("files":{\)[^}]*/\1/' \ + "${S}"/third_party/rust/${1}/.cargo-checksum.json || die +} + +moz_install_xpi() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local DESTDIR=${1} + shift + + insinto "${DESTDIR}" + + local emid xpi_file xpi_tmp_dir + for xpi_file in "${@}" ; do + emid= + xpi_tmp_dir=$(mktemp -d --tmpdir="${T}") + + # Unpack XPI + unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die + + # Determine extension ID + if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then + emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf") + [[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf" + elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then + emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json") + [[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json" + else + die "failed to determine extension id" + fi + + einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..." + newins "${xpi_file}" "${emid}.xpi" + done +} + +mozconfig_add_options_ac() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_add_options_mk() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_use_enable() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 1 ]] ; then + die "${FUNCNAME} requires at least one arguments" + fi + + local flag=$(use_enable "${@}") + mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" +} + +mozconfig_use_with() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 1 ]] ; then + die "${FUNCNAME} requires at least one arguments" + fi + + local flag=$(use_with "${@}") + mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" +} + +virtwl() { + debug-print-function ${FUNCNAME} "$@" + + [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument" + [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset" + tinywl -h >/dev/null || die 'tinywl -h failed' + + local VIRTWL VIRTWL_PID + coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; } + local -x WAYLAND_DISPLAY + read WAYLAND_DISPLAY <&${VIRTWL[0]} + + debug-print "${FUNCNAME}: $@" + "$@" + local r=$? + + [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly" + exec {VIRTWL[0]}<&- {VIRTWL[1]}>&- + return $r +} + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has usersandbox $FEATURES ; then + die "You must enable usersandbox as X server can not run as root!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6600M" + fi + + check-reqs_pkg_pretend + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + fi + + check-reqs_pkg_setup + + llvm-r1_pkg_setup + + if use clang && use lto && tc-ld-is-lld ; then + local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') + [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") + [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" + + local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') + [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") + [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" + + if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then + eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." + eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" + eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" + eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" + eerror " - Build ${CATEGORY}/${PN} without USE=lto" + eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " + eerror " llvm/clang/lld/rust chain depending on your @world updates)" + die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" + fi + fi + + python-any-r1_pkg_setup + + # Avoid PGO profiling problems due to enviroment leakage + # These should *always* be cleaned up anyway + unset \ + DBUS_SESSION_BUS_ADDRESS \ + DISPLAY \ + ORBIT_SOCKETDIR \ + SESSION_MANAGER \ + XAUTHORITY \ + XDG_CACHE_HOME \ + XDG_SESSION_COOKIE + + # Build system is using /proc/self/oom_score_adj, bug #604394 + addpredict /proc/self/oom_score_adj + + if use pgo ; then + # Update 105.0: "/proc/self/oom_score_adj" isn't enough anymore with pgo, but not sure + # whether that's due to better OOM handling by Firefox (bmo#1771712), or portage + # (PORTAGE_SCHEDULING_POLICY) update... + addpredict /proc + + # Clear tons of conditions, since PGO is hardware-dependant. + addpredict /dev + fi + + if ! mountpoint -q /dev/shm ; then + # If /dev/shm is not available, configure is known to fail with + # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py + ewarn "/dev/shm is not mounted -- expect build failures!" + fi + + # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then + MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc" + fi + + if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then + MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ" + fi + + # Mozilla API keys (see https://location.services.mozilla.com/api) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then + MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005" + fi + + # Ensure we use C locale when building, bug #746215 + export LC_ALL=C + fi + + CONFIG_CHECK="~SECCOMP" + WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to play DRM-protected content." + linux-info_pkg_setup +} + +src_unpack() { + local _lp_dir="${WORKDIR}/language_packs" + local _src_file + + if [[ ! -d "${_lp_dir}" ]] ; then + mkdir "${_lp_dir}" || die + fi + + for _src_file in ${A} ; do + if [[ ${_src_file} == *.xpi ]]; then + cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die "Failed to copy '${_src_file}' to '${_lp_dir}'!" + else + unpack ${_src_file} + fi + done +} + +src_prepare() { + if use lto; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die + fi + + # Workaround for bgo#917599 + if has_version ">=dev-libs/icu-74.1" && use system-icu ; then + eapply "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch + fi + rm -v "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch || die + + # Workaround for bgo#915651 on musl + if use elibc_glibc ; then + rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die + fi + + eapply "${WORKDIR}/firefox-patches" + + # Allow user to apply any additional patches without modifing ebuild + eapply_user + + # Make cargo respect MAKEOPTS + export CARGO_BUILD_JOBS="$(makeopts_jobs)" + + # Workaround for bgo#915651 + if ! use elibc_glibc ; then + if use amd64 ; then + export RUST_TARGET="x86_64-unknown-linux-musl" + elif use x86 ; then + export RUST_TARGET="i686-unknown-linux-musl" + elif use arm64 ; then + export RUST_TARGET="aarch64-unknown-linux-musl" + elif use ppc64 ; then + export RUST_TARGET="powerpc64le-unknown-linux-musl" + else + die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651" + fi + fi + + # Make LTO respect MAKEOPTS + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure || die "Failed sedding multiprocessing.cpu_count" + + # Make ICU respect MAKEOPTS + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/intl/icu_sources_data.py || die "Failed sedding multiprocessing.cpu_count" + + # Respect MAKEOPTS all around (maybe some find+sed is better) + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/python/mozbuild/mozbuild/base.py || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/libwebrtc/build/toolchain/get_cpu_count.py || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/libwebrtc/build/toolchain/get_concurrent_links.py || + die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/python/mozbuild/mozbuild/code_analysis/mach_commands.py || die "Failed sedding multiprocessing.cpu_count" + + # sed-in toolchain prefix + sed -i \ + -e "s/objdump/${CHOST}-objdump/" \ + "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py || die "sed failed to set toolchain prefix" + + sed -i \ + -e 's/ccache_stats = None/return None/' \ + "${S}"/python/mozbuild/mozbuild/controller/building.py || die "sed failed to disable ccache stats call" + + einfo "Removing pre-built binaries ..." + + find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die + + # Clear checksums from cargo crates we've manually patched. + # moz_clear_vendor_checksums xyz + + # Respect choice for "jumbo-build" + # Changing the value for FILES_PER_UNIFIED_FILE may not work, see #905431 + if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then + local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16} + elog "" + elog "jumbo-build defaults modified to ${my_files_per_unified_file}." + elog "if you get a build failure, try undefining FILES_PER_UNIFIED_FILE," + elog "if that fails try -jumbo-build before opening a bug report." + elog "" + + sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \ + python/mozbuild/mozbuild/frontend/data.py || + die "Failed to adjust FILES_PER_UNIFIED_FILE in python/mozbuild/mozbuild/frontend/data.py" + sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE = "${my_files_per_unified_file}"/" \ + js/src/moz.build || + die "Failed to adjust FILES_PER_UNIFIED_FILE in js/src/moz.build" + fi + + # Create build dir + BUILD_DIR="${WORKDIR}/${PN}_build" + mkdir -p "${BUILD_DIR}" || die + + # Write API keys to disk + echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die + echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die + echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die + + xdg_environment_reset +} + +src_configure() { + # Show flags set at the beginning + einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}" + einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}" + einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}" + einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" + + local have_switched_compiler= + if use clang; then + # Force clang + einfo "Enforcing the use of clang due to USE=clang ..." + + local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }') + [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}") + [[ -z ${version_clang} ]] && die "Failed to read clang version!" + + if tc-is-gcc; then + have_switched_compiler=yes + fi + + AR=llvm-ar + CC=${CHOST}-clang-${version_clang} + CXX=${CHOST}-clang++-${version_clang} + NM=llvm-nm + RANLIB=llvm-ranlib + elif ! use clang && ! tc-is-gcc ; then + # Force gcc + have_switched_compiler=yes + einfo "Enforcing the use of gcc due to USE=-clang ..." + AR=gcc-ar + CC=${CHOST}-gcc + CXX=${CHOST}-g++ + NM=gcc-nm + RANLIB=gcc-ranlib + fi + + if [[ -n "${have_switched_compiler}" ]] ; then + # Because we switched active compiler we have to ensure + # that no unsupported flags are set + strip-unsupported-flags + fi + + # Ensure we use correct toolchain, + # AS is used in a non-standard way by upstream, #bmo1654031 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + export AS="$(tc-getCC) -c" + + # Configuration tests expect llvm-readelf output, bug 913130 + READELF="llvm-readelf" + + tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG + + # Pass the correct toolchain paths through cbindgen + if tc-is-cross-compiler ; then + export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}" + fi + + # Set MOZILLA_FIVE_HOME + export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" + + # python/mach/mach/mixin/process.py fails to detect SHELL + export SHELL="${EPREFIX}/bin/bash" + + # Set state path + export MOZBUILD_STATE_PATH="${BUILD_DIR}" + + # Set MOZCONFIG + export MOZCONFIG="${S}/.mozconfig" + + # Initialize MOZCONFIG + mozconfig_add_options_ac '' --enable-application=browser + mozconfig_add_options_ac '' --enable-project=browser + + # Set Gentoo defaults + if use telemetry; then + export MOZILLA_OFFICIAL=1 + fi + + mozconfig_add_options_ac 'Gentoo default' \ + --allow-addon-sideload \ + --disable-cargo-incremental \ + --disable-crashreporter \ + --disable-disk-remnant-avoidance \ + --disable-geckodriver \ + --disable-gpsd \ + --disable-install-strip \ + --disable-legacy-profile-creation \ + --disable-parental-controls \ + --disable-strip \ + --disable-tests \ + --disable-updater \ + --disable-valgrind \ + --disable-wmf \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-release \ + --enable-system-ffi \ + --enable-system-pixman \ + --enable-system-policies \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --without-wasm-sandboxed-libraries \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --with-system-nspr \ + --with-system-nss \ + --with-system-zlib \ + --with-toolchain-prefix="${CHOST}-" \ + --with-unsigned-addon-scopes=app,system \ + --x-includes="${ESYSROOT}/usr/include" \ + --x-libraries="${ESYSROOT}/usr/$(get_libdir)" + + # Set update channel + local update_channel=release + [[ -n ${MOZ_ESR} ]] && update_channel=esr + mozconfig_add_options_ac '' --update-channel=${update_channel} + + if ! use x86 ; then + mozconfig_add_options_ac '' --enable-rust-simd + fi + + # For future keywording: This is currently (97.0) only supported on: + # amd64, arm, arm64 & x86. + # Might want to flip the logic around if Firefox is to support more arches. + # bug 833001, bug 903411#c8 + if use ppc64 || use riscv; then + mozconfig_add_options_ac '' --disable-sandbox + else + mozconfig_add_options_ac '' --enable-sandbox + fi + + # Enable JIT on riscv64 explicitly, since it's not activated automatically via "known arches" list. + # Update 128.1.0: Disable jit on riscv (this line can be blanked to disable by default), + # bgo#937867. + use riscv && mozconfig_add_options_ac 'Disable JIT for RISC-V 64' --disable-jit + + if [[ -s "${S}/api-google.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-google-safebrowsing-api-keyfile="${S}/api-google.key" + else + einfo "Building without Google API key ..." + fi + + if [[ -s "${S}/api-location.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-google-location-service-api-keyfile="${S}/api-location.key" + else + einfo "Building without Location API key ..." + fi + + if [[ -s "${S}/api-mozilla.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-mozilla-api-keyfile="${S}/api-mozilla.key" + else + einfo "Building without Mozilla API key ..." + fi + + mozconfig_use_with system-av1 + mozconfig_use_with system-harfbuzz + mozconfig_use_with system-harfbuzz system-graphite2 + mozconfig_use_with system-icu + mozconfig_use_with system-jpeg + mozconfig_use_with system-libevent + mozconfig_use_with system-libvpx + mozconfig_use_with system-png + mozconfig_use_with system-webp + + mozconfig_use_enable dbus + mozconfig_use_enable libproxy + + use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme + + if use hardened ; then + mozconfig_add_options_ac "+hardened" --enable-hardening + append-ldflags "-Wl,-z,relro -Wl,-z,now" + + # Increase the FORTIFY_SOURCE value, #910071. + sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' "${S}"/build/moz.configure/toolchain.configure || die + fi + + local myaudiobackends="" + use jack && myaudiobackends+="jack," + use sndio && myaudiobackends+="sndio," + use pulseaudio && myaudiobackends+="pulseaudio," + ! use pulseaudio && myaudiobackends+="alsa," + + mozconfig_add_options_ac '--enable-audio-backends' --enable-audio-backends="${myaudiobackends::-1}" + + mozconfig_use_enable wifi necko-wifi + + ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' --disable-unified-build + + if use X && use wayland ; then + mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland + elif ! use X && use wayland ; then + mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland-only + else + mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only + fi + + # LTO is handled via configure + filter-lto + + if use lto ; then + if use clang ; then + # Upstream only supports lld or mold when using clang. + if tc-ld-is-mold ; then + # mold expects the -flto line from *FLAGS configuration, bgo#923119 + append-ldflags "-flto=thin" + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld + fi + + mozconfig_add_options_ac '+lto' --enable-lto=cross + + else + # ThinLTO is currently broken, see bmo#1644409. + # mold does not support gcc+lto combination. + mozconfig_add_options_ac '+lto' --enable-lto=full + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + + if use pgo ; then + mozconfig_add_options_ac '+pgo' MOZ_PGO=1 + + if use clang ; then + # Used in build/pgo/profileserver.py + export LLVM_PROFDATA="llvm-profdata" + fi + fi + else + # Avoid auto-magic on linker + if use clang ; then + # lld is upstream's default + if tc-ld-is-mold ; then + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld + fi + + else + if tc-ld-is-mold ; then + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "linker is set to bfd due to USE=-clang" --enable-linker=bfd + fi + fi + fi + + mozconfig_use_enable debug + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + mozconfig_add_options_ac '+debug' --enable-jemalloc + mozconfig_add_options_ac '+debug' --enable-real-time-tracing + else + mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing + + if is-flag '-g*' ; then + if use clang ; then + mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*') + else + mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols + fi + else + mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols + fi + + if is-flag '-O0' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0 + elif is-flag '-O4' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4 + elif is-flag '-O3' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3 + elif is-flag '-O1' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1 + elif is-flag '-Os' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os + else + mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2 + fi + fi + + # Debug flag was handled via configure + filter-flags '-g*' + + # Optimization flag was handled via configure + filter-flags '-O*' + + # elf-hack + # Filter "-z,pack-relative-relocs" and let the build system handle it instead. + if use amd64 || use x86 ; then + filter-flags "-z,pack-relative-relocs" + + if tc-ld-is-mold ; then + # relr-elf-hack is currently broken with mold, bgo#916259 + mozconfig_add_options_ac 'disable elf-hack with mold linker' --disable-elf-hack + else + mozconfig_add_options_ac 'relr elf-hack' --enable-elf-hack=relr + fi + elif use ppc64 || use riscv ; then + # '--disable-elf-hack' is not recognized on ppc64/riscv, + # see bgo #917049, #930046 + :; + else + mozconfig_add_options_ac 'disable elf-hack on non-supported arches' --disable-elf-hack + fi + + if ! use elibc_glibc; then + mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc + fi + + # System-av1 fix + use system-av1 && append-ldflags "-Wl,--undefined-version" + + # Allow elfhack to work in combination with unstripped binaries + # when they would normally be larger than 2GiB. + append-ldflags "-Wl,--compress-debug-sections=zlib" + + # Make revdep-rebuild.sh happy; Also required for musl + append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags + + # Pass $MAKEOPTS to build system + export MOZ_MAKE_FLAGS="${MAKEOPTS}" + + # Use system's Python environment + export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach + + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" + + if ! use telemetry; then + mozconfig_add_options_mk '-telemetry setting' "MOZ_CRASHREPORTER=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_DATA_REPORTING=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_SERVICES_HEALTHREPORT=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_TELEMETRY_REPORTING=0" + fi + + # Disable notification when build system has finished + export MOZ_NOSPAM=1 + + # Portage sets XARGS environment variable to "xargs -r" by default which + # breaks build system's check_prog() function which doesn't support arguments + mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs" + + # Set build dir + mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}" + + # Show flags we will use + einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}" + einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}" + einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}" + einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" + + # Handle EXTRA_CONF and show summary + local ac opt hash reason + + # Apply EXTRA_ECONF entries to $MOZCONFIG + if [[ -n ${EXTRA_ECONF} ]] ; then + IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!} + for opt in "${ac[@]}"; do + mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--} + done + fi + + echo + echo "==========================================================" + echo "Building ${PF} with the following configuration" + grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do + [[ -z ${hash} || ${hash} == \# ]] \ + || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}" + printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}" + done + echo "==========================================================" + echo + + ./mach configure || die +} + +src_compile() { + local virtx_cmd= + + if tc-ld-is-mold && use lto; then + # increase ulimit with mold+lto, bugs #892641, #907485 + if ! ulimit -n 16384 1>/dev/null 2>&1 ; then + ewarn "Unable to modify ulimits - building with mold+lto might fail due to low ulimit -n resources." + ewarn "Please see bugs #892641 & #907485." + else + ulimit -n 16384 + fi + fi + + if use pgo; then + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + addpredict /root + + if ! use X; then + virtx_cmd=virtwl + else + virtx_cmd=virtx + fi + fi + + if ! use X; then + local -x GDK_BACKEND=wayland + else + local -x GDK_BACKEND=x11 + fi + + ${virtx_cmd} ./mach build --verbose || die +} + +src_install() { + # xpcshell is getting called during install + pax-mark m \ + "${BUILD_DIR}"/dist/bin/xpcshell \ + "${BUILD_DIR}"/dist/bin/${PN} \ + "${BUILD_DIR}"/dist/bin/plugin-container + + DESTDIR="${D}" ./mach install || die + + # Upstream cannot ship symlink but we can (bmo#658850) + rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die + dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin + + # Don't install llvm-symbolizer from sys-devel/llvm package + if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then + rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die + fi + + # Install policy (currently only used to disable application updates) + insinto "${MOZILLA_FIVE_HOME}/distribution" + newins "${FILESDIR}"/distribution.ini distribution.ini + newins "${FILESDIR}"/disable-auto-update.policy.json policies.json + + # Install system-wide preferences + local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences" + insinto "${PREFS_DIR}" + newins "${FILESDIR}"/gentoo-default-prefs.js gentoo-prefs.js + + local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js" + + # Set dictionary path to use system hunspell + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set spellchecker.dictionary_path pref" + pref("spellchecker.dictionary_path", "${EPREFIX}/usr/share/myspell"); + EOF + + # Force hwaccel prefs if USE=hwaccel is enabled + if use hwaccel ; then + cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-r2 \ + >>"${GENTOO_PREFS}" \ + || die "failed to add prefs to force hardware-accelerated rendering to all-gentoo.js" + + if use wayland; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel wayland prefs" + pref("gfx.x11-egl.force-enabled", false); + EOF + else + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel x11 prefs" + pref("gfx.x11-egl.force-enabled", true); + EOF + fi + + # Install the vaapitest binary on supported arches (122.0 supports all platforms, bmo#1865969) + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/vaapitest + + # Install the v4l2test on supported arches (+ arm, + riscv64 when keyworded) + if use arm64 ; then + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/v4l2test + fi + fi + + if ! use gmp-autoupdate ; then + local plugin + for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do + einfo "Disabling auto-update for ${plugin} plugin ..." + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin" + pref("media.${plugin}.autoupdate", false); + EOF + done + fi + + # Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it + if use system-harfbuzz ; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref" + sticky_pref("gfx.font_rendering.graphite.enabled", true); + EOF + fi + + # Add telemetry config prefs, just in case something happens in future and telemetry build + # options stop working. + if ! use telemetry ; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set telemetry prefs" + sticky_pref("toolkit.telemetry.dap_enabled", false); + pref("toolkit.telemetry.dap_helper", ""); + pref("toolkit.telemetry.dap_leader", ""); + EOF + fi + + # Install language packs + local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name '*.xpi') ) + if [[ -n "${langpacks}" ]] ; then + moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" "${langpacks[@]}" + fi + + # Install icons + local icon_srcdir="${S}/browser/branding/official" + local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg" + + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${icon_symbolic_file}" ${PN}-symbolic.svg + + local icon size + for icon in "${icon_srcdir}"/default*.png ; do + size=${icon%.png} + size=${size##*/default} + + if [[ ${size} -eq 48 ]] ; then + newicon "${icon}" ${PN}.png + fi + + newicon -s ${size} "${icon}" ${PN}.png + done + + # Install menu + local app_name="Mozilla ${MOZ_PN^}" + local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + if [[ -n ${MOZ_ESR} ]] ; then + local desktop_filename="${PN}-esr.desktop" + else + local desktop_filename="${PN}.desktop" + fi + + if use wayland ; then + use_wayland="true" + fi + + cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die + + sed -i \ + -e "s:@NAME@:${app_name}:" \ + -e "s:@EXEC@:${exec_command}:" \ + -e "s:@ICON@:${icon}:" \ + "${WORKDIR}/${PN}.desktop-template" || die + + newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}" + + rm "${WORKDIR}/${PN}.desktop-template" || die + + if use gnome-shell ; then + # Install search provider for Gnome + insinto /usr/share/gnome-shell/search-providers/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini + + insinto /usr/share/dbus-1/services/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service + + # Toggle between rapid and esr desktop file names + sed -e "s/firefox.desktop/${desktop_filename}/g" \ + -i "${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini" || + die "Failed to sed org.mozilla.firefox.search-provider.ini file." + + # Make the dbus service aware of a previous session, bgo#939196 + sed -e \ + "s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox --dbus-service \/usr\/bin\/firefox/g" \ + -i "${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" || + die "Failed to sed org.mozilla.firefox.SearchProvider.service dbus file" + + # Update prefs to enable Gnome search provider + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable gnome-search-provider via prefs" + pref("browser.gnome-search-provider.enabled", true); + EOF + fi + + # Install wrapper script + [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}" + newbin "${FILESDIR}/${PN}-r1.sh" ${PN} + + # Update wrapper + sed -i \ + -e "s:@PREFIX@:${EPREFIX}/usr:" \ + -e "s:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \ + -e "s:@APULSELIB_DIR@:${apulselib}:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" || die + + readme.gentoo_create_doc +} + +pkg_preinst() { + xdg_pkg_preinst + + # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse + # does not need to be forced into the LD_LIBRARY_PATH + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + einfo "APULSE found; Generating library symlinks for sound support ..." + local lib + pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die + for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do + # A quickpkg rolled by hand will grab symlinks as part of the package, + # so we need to avoid creating them if they already exist. + if [[ ! -L ${lib##*/} ]] ; then + ln -s "${lib}" ${lib##*/} || die + fi + done + popd &>/dev/null || die + fi +} + +pkg_postinst() { + xdg_pkg_postinst + + if ! use gmp-autoupdate ; then + elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or" + elog "installing into new profiles:" + local plugin + for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do + elog "\t ${plugin}" + done + elog + fi + + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + elog "Apulse was detected at merge time on this system and so it will always be" + elog "used for sound. If you wish to use pulseaudio instead please unmerge" + elog "media-sound/apulse." + elog + fi + + # bug 835078 + if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then + ewarn "You have nouveau drivers installed in your system and 'hwaccel' " + ewarn "enabled for Firefox. Nouveau / your GPU might not support the " + ewarn "required EGL, so either disable 'hwaccel' or try the workaround " + ewarn "explained in https://bugs.gentoo.org/835078#c5 if Firefox crashes." + fi + + readme.gentoo_print_elog + + optfeature_header "Optional programs for extra features:" + optfeature "desktop notifications" x11-libs/libnotify + optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas + optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal + if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then + optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver + fi + + if ! has_version "sys-libs/glibc"; then + elog + elog "glibc not found! You won't be able to play DRM content." + elog "See Gentoo bug #910309 or upstream bug #1843683." + elog + fi +} diff --git a/www-client/firefox/firefox-131.0.2.ebuild b/www-client/firefox/firefox-131.0.2.ebuild new file mode 100644 index 000000000000..f38e59b13795 --- /dev/null +++ b/www-client/firefox/firefox-131.0.2.ebuild @@ -0,0 +1,1369 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-131-patches-01.tar.xz" + +LLVM_COMPAT=( 17 18 ) + +PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +WANT_AUTOCONF="2.1" + +VIRTUALX_REQUIRED="manual" + +MOZ_ESR= + +MOZ_PV=${PV} +MOZ_PV_SUFFIX= +if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then + MOZ_PV_SUFFIX=${BASH_REMATCH[1]} + + # Convert the ebuild version to the upstream Mozilla version + MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI + MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI + MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI +fi + +if [[ -n ${MOZ_ESR} ]] ; then + # ESR releases have slightly different version numbers + MOZ_PV="${MOZ_PV}esr" + HOMEPAGE="https://www.mozilla.com/firefox https://www.mozilla.org/firefox/enterprise/" + SLOT="esr" +else + HOMEPAGE="https://www.mozilla.com/firefox" + SLOT="rapid" +fi + +MOZ_PN="${PN%-bin}" +MOZ_P="${MOZ_PN}-${MOZ_PV}" +MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" +MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" + +inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 multiprocessing \ + optfeature pax-utils python-any-r1 readme.gentoo-r1 toolchain-funcs virtualx xdg + +MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" + +if [[ ${PV} == *_rc* ]] ; then + MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" +fi + +PATCH_URIS=( + https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +DESCRIPTION="Firefox Web Browser" +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" +S="${WORKDIR}/${PN}-${PV%_*}" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86" + +IUSE="+clang dbus debug eme-free hardened hwaccel jack +jumbo-build libproxy lto openh264 pgo" +IUSE+=" pulseaudio sndio selinux +system-av1 +system-harfbuzz +system-icu +system-jpeg" +IUSE+=" +system-jpeg +system-libevent +system-libvpx system-png +system-webp +telemetry valgrind" +IUSE+=" wayland wifi +X" + +# Firefox-only IUSE +IUSE+=" +gmp-autoupdate gnome-shell" + +# !jumbo-build? ( clang ) -> bmo#1914774, bgo#939004 - causes seemingly random compile crashes with gcc. +REQUIRED_USE="|| ( X wayland ) + debug? ( !system-av1 ) + !jumbo-build? ( clang ) + pgo? ( lto ) + wayland? ( dbus ) + wifi? ( dbus )" + +FF_ONLY_DEPEND="!www-client/firefox:0 + selinux? ( sec-policy/selinux-mozilla )" +BDEPEND="${PYTHON_DEPS} + $(llvm_gen_dep ' + sys-devel/clang:${LLVM_SLOT} + sys-devel/llvm:${LLVM_SLOT} + clang? ( + sys-devel/lld:${LLVM_SLOT} + virtual/rust:0/llvm-${LLVM_SLOT} + ) + pgo? ( sys-libs/compiler-rt-sanitizers:${LLVM_SLOT}[profile] ) + ') + app-alternatives/awk + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.26.0 + net-libs/nodejs + virtual/pkgconfig + !clang? ( >=virtual/rust-1.76 ) + !elibc_glibc? ( dev-lang/rust ) + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 ) + pgo? ( + X? ( + sys-devel/gettext + x11-base/xorg-server[xvfb] + x11-apps/xhost + ) + !X? ( + || ( + gui-wm/tinywl + <gui-libs/wlroots-0.17.3[tinywl(-)] + ) + x11-misc/xkeyboard-config + ) + )" +COMMON_DEPEND="${FF_ONLY_DEPEND} + >=app-accessibility/at-spi2-core-2.46.0:2 + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.104 + >=dev-libs/nspr-4.35 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + media-video/ffmpeg + sys-libs/zlib + virtual/freedesktop-icon-theme + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/pango + x11-libs/pixman + dbus? ( + sys-apps/dbus + ) + jack? ( virtual/jack ) + pulseaudio? ( + || ( + media-libs/libpulse + >=media-sound/apulse-0.1.12-r4[sdk] + ) + ) + libproxy? ( net-libs/libproxy ) + selinux? ( sec-policy/selinux-mozilla ) + sndio? ( >=media-sound/sndio-1.8.0-r1 ) + system-av1? ( + >=media-libs/dav1d-1.0.0:= + >=media-libs/libaom-1.0.0:= + ) + system-harfbuzz? ( + >=media-gfx/graphite2-1.3.13 + >=media-libs/harfbuzz-2.8.1:0= + ) + system-icu? ( >=dev-libs/icu-73.1:= ) + system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1:= ) + system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] ) + system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) + system-png? ( >=media-libs/libpng-1.6.35:0=[apng] ) + system-webp? ( >=media-libs/libwebp-1.1.0:0= ) + valgrind? ( dev-debug/valgrind ) + wayland? ( + >=media-libs/libepoxy-1.5.10-r1 + x11-libs/gtk+:3[wayland] + ) + wifi? ( + kernel_linux? ( + || ( + net-misc/networkmanager + net-misc/connman[networkmanager] + ) + sys-apps/dbus + ) + ) + X? ( + virtual/opengl + x11-libs/cairo[X] + x11-libs/gtk+:3[X] + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrandr + x11-libs/libxcb:= + )" +RDEPEND="${COMMON_DEPEND} + hwaccel? ( + media-video/libva-utils + sys-apps/pciutils + ) + jack? ( virtual/jack ) + openh264? ( media-libs/openh264:*[plugin] )" +DEPEND="${COMMON_DEPEND} + X? ( + x11-base/xorg-proto + x11-libs/libICE + x11-libs/libSM + )" + +# ESR and rapid dependencies. +if [[ -n ${MOZ_ESR} ]] ; then + RDEPEND+=" !www-client/firefox:rapid" +else + RDEPEND+=" !www-client/firefox:esr" +fi + +# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or +# overridden in the enviromnent (advanced hackers only) +if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then + MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) +fi + +llvm_check_deps() { + if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then + einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use clang && ! tc-ld-is-mold ; then + if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then + einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then + einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use pgo ; then + if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then + einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!" >&2 + einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + fi + fi + + einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 +} + +MOZ_LANGS=( + af ar ast be bg br ca cak cs cy da de dsb + el en-CA en-GB en-US es-AR es-ES et eu + fi fr fy-NL ga-IE gd gl he hr hsb hu + id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO + pa-IN pl pt-BR pt-PT rm ro ru + sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW +) + +# Firefox-only LANGS +MOZ_LANGS+=( ach ) +MOZ_LANGS+=( an ) +MOZ_LANGS+=( az ) +MOZ_LANGS+=( bn ) +MOZ_LANGS+=( bs ) +MOZ_LANGS+=( ca-valencia ) +MOZ_LANGS+=( eo ) +MOZ_LANGS+=( es-CL ) +MOZ_LANGS+=( es-MX ) +MOZ_LANGS+=( fa ) +MOZ_LANGS+=( ff ) +MOZ_LANGS+=( fur ) +MOZ_LANGS+=( gn ) +MOZ_LANGS+=( gu-IN ) +MOZ_LANGS+=( hi-IN ) +MOZ_LANGS+=( hy-AM ) +MOZ_LANGS+=( ia ) +MOZ_LANGS+=( km ) +MOZ_LANGS+=( kn ) +MOZ_LANGS+=( lij ) +MOZ_LANGS+=( mk ) +MOZ_LANGS+=( mr ) +MOZ_LANGS+=( my ) +MOZ_LANGS+=( ne-NP ) +MOZ_LANGS+=( oc ) +MOZ_LANGS+=( sc ) +MOZ_LANGS+=( sco ) +MOZ_LANGS+=( si ) +MOZ_LANGS+=( skr ) +MOZ_LANGS+=( son ) +MOZ_LANGS+=( szl ) +MOZ_LANGS+=( ta ) +MOZ_LANGS+=( te ) +MOZ_LANGS+=( tl ) +MOZ_LANGS+=( trs ) +MOZ_LANGS+=( ur ) +MOZ_LANGS+=( xh ) + +mozilla_set_globals() { + # https://bugs.gentoo.org/587334 + local MOZ_TOO_REGIONALIZED_FOR_L10N=( + fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE + ) + + local lang xflag + for lang in "${MOZ_LANGS[@]}" ; do + # en and en_US are handled internally + if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then + continue + fi + + # strip region subtag if $lang is in the list + if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then + xflag=${lang%%-*} + else + xflag=${lang} + fi + + SRC_URI+=" l10n_${xflag/[_@]/-}? (" + SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> ${MOZ_P_DISTFILES}-${lang}.xpi" + SRC_URI+=" )" + IUSE+=" l10n_${xflag/[_@]/-}" + done +} +mozilla_set_globals + +moz_clear_vendor_checksums() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -ne 1 ]] ; then + die "${FUNCNAME} requires exact one argument" + fi + + einfo "Clearing cargo checksums for ${1} ..." + + sed -i \ + -e 's/\("files":{\)[^}]*/\1/' \ + "${S}"/third_party/rust/${1}/.cargo-checksum.json || die +} + +moz_install_xpi() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local DESTDIR=${1} + shift + + insinto "${DESTDIR}" + + local emid xpi_file xpi_tmp_dir + for xpi_file in "${@}" ; do + emid= + xpi_tmp_dir=$(mktemp -d --tmpdir="${T}") + + # Unpack XPI + unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die + + # Determine extension ID + if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then + emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf") + [[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf" + elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then + emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json") + [[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json" + else + die "failed to determine extension id" + fi + + einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..." + newins "${xpi_file}" "${emid}.xpi" + done +} + +mozconfig_add_options_ac() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_add_options_mk() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_use_enable() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 1 ]] ; then + die "${FUNCNAME} requires at least one arguments" + fi + + local flag=$(use_enable "${@}") + mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" +} + +mozconfig_use_with() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 1 ]] ; then + die "${FUNCNAME} requires at least one arguments" + fi + + local flag=$(use_with "${@}") + mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" +} + +virtwl() { + debug-print-function ${FUNCNAME} "$@" + + [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument" + [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset" + tinywl -h >/dev/null || die 'tinywl -h failed' + + local VIRTWL VIRTWL_PID + coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; } + local -x WAYLAND_DISPLAY + read WAYLAND_DISPLAY <&${VIRTWL[0]} + + debug-print "${FUNCNAME}: $@" + "$@" + local r=$? + + [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly" + exec {VIRTWL[0]}<&- {VIRTWL[1]}>&- + return $r +} + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has usersandbox $FEATURES ; then + die "You must enable usersandbox as X server can not run as root!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6600M" + fi + + check-reqs_pkg_pretend + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + fi + + check-reqs_pkg_setup + + llvm-r1_pkg_setup + + if use clang && use lto && tc-ld-is-lld ; then + local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') + [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") + [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" + + local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') + [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") + [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" + + if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then + eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." + eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" + eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" + eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" + eerror " - Build ${CATEGORY}/${PN} without USE=lto" + eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " + eerror " llvm/clang/lld/rust chain depending on your @world updates)" + die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" + fi + fi + + python-any-r1_pkg_setup + + # Avoid PGO profiling problems due to enviroment leakage + # These should *always* be cleaned up anyway + unset \ + DBUS_SESSION_BUS_ADDRESS \ + DISPLAY \ + ORBIT_SOCKETDIR \ + SESSION_MANAGER \ + XAUTHORITY \ + XDG_CACHE_HOME \ + XDG_SESSION_COOKIE + + # Build system is using /proc/self/oom_score_adj, bug #604394 + addpredict /proc/self/oom_score_adj + + if use pgo ; then + # Update 105.0: "/proc/self/oom_score_adj" isn't enough anymore with pgo, but not sure + # whether that's due to better OOM handling by Firefox (bmo#1771712), or portage + # (PORTAGE_SCHEDULING_POLICY) update... + addpredict /proc + + # Clear tons of conditions, since PGO is hardware-dependant. + addpredict /dev + fi + + if ! mountpoint -q /dev/shm ; then + # If /dev/shm is not available, configure is known to fail with + # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py + ewarn "/dev/shm is not mounted -- expect build failures!" + fi + + # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then + MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc" + fi + + if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then + MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ" + fi + + # Mozilla API keys (see https://location.services.mozilla.com/api) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then + MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005" + fi + + # Ensure we use C locale when building, bug #746215 + export LC_ALL=C + fi + + CONFIG_CHECK="~SECCOMP" + WARNING_SECCOMP="CONFIG_SECCOMP not set! This system will be unable to play DRM-protected content." + linux-info_pkg_setup +} + +src_unpack() { + local _lp_dir="${WORKDIR}/language_packs" + local _src_file + + if [[ ! -d "${_lp_dir}" ]] ; then + mkdir "${_lp_dir}" || die + fi + + for _src_file in ${A} ; do + if [[ ${_src_file} == *.xpi ]]; then + cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die "Failed to copy '${_src_file}' to '${_lp_dir}'!" + else + unpack ${_src_file} + fi + done +} + +src_prepare() { + if use lto; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die + fi + + # Workaround for bgo#917599 + if has_version ">=dev-libs/icu-74.1" && use system-icu ; then + eapply "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch + fi + rm -v "${WORKDIR}"/firefox-patches/*-bmo-1862601-system-icu-74.patch || die + + # Workaround for bgo#915651 on musl + if use elibc_glibc ; then + rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die + fi + + eapply "${WORKDIR}/firefox-patches" + + # Allow user to apply any additional patches without modifing ebuild + eapply_user + + # Make cargo respect MAKEOPTS + export CARGO_BUILD_JOBS="$(makeopts_jobs)" + + # Workaround for bgo#915651 + if ! use elibc_glibc ; then + if use amd64 ; then + export RUST_TARGET="x86_64-unknown-linux-musl" + elif use x86 ; then + export RUST_TARGET="i686-unknown-linux-musl" + elif use arm64 ; then + export RUST_TARGET="aarch64-unknown-linux-musl" + elif use ppc64 ; then + export RUST_TARGET="powerpc64le-unknown-linux-musl" + else + die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651" + fi + fi + + # Make LTO respect MAKEOPTS + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/libwebrtc/build/toolchain/get_cpu_count.py || die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/libwebrtc/build/toolchain/get_concurrent_links.py || + die "Failed sedding multiprocessing.cpu_count" + + sed -i -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/third_party/python/gyp/pylib/gyp/input.py || die "Failed sedding multiprocessing.cpu_count" + + # sed-in toolchain prefix + sed -i \ + -e "s/objdump/${CHOST}-objdump/" \ + "${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py || die "sed failed to set toolchain prefix" + + sed -i \ + -e 's/ccache_stats = None/return None/' \ + "${S}"/python/mozbuild/mozbuild/controller/building.py || die "sed failed to disable ccache stats call" + + einfo "Removing pre-built binaries ..." + + find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die + + # Clear checksums from cargo crates we've manually patched. + # moz_clear_vendor_checksums xyz + + # Respect choice for "jumbo-build" + # Changing the value for FILES_PER_UNIFIED_FILE may not work, see #905431 + if [[ -n ${FILES_PER_UNIFIED_FILE} ]] && use jumbo-build; then + local my_files_per_unified_file=${FILES_PER_UNIFIED_FILE:=16} + elog "" + elog "jumbo-build defaults modified to ${my_files_per_unified_file}." + elog "if you get a build failure, try undefining FILES_PER_UNIFIED_FILE," + elog "if that fails try -jumbo-build before opening a bug report." + elog "" + + sed -i -e "s/\"FILES_PER_UNIFIED_FILE\", 16/\"FILES_PER_UNIFIED_FILE\", "${my_files_per_unified_file}"/" \ + python/mozbuild/mozbuild/frontend/data.py || + die "Failed to adjust FILES_PER_UNIFIED_FILE in python/mozbuild/mozbuild/frontend/data.py" + sed -i -e "s/FILES_PER_UNIFIED_FILE = 6/FILES_PER_UNIFIED_FILE = "${my_files_per_unified_file}"/" \ + js/src/moz.build || + die "Failed to adjust FILES_PER_UNIFIED_FILE in js/src/moz.build" + fi + + # Create build dir + BUILD_DIR="${WORKDIR}/${PN}_build" + mkdir -p "${BUILD_DIR}" || die + + # Write API keys to disk + echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die + echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die + echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die + + xdg_environment_reset +} + +src_configure() { + # Show flags set at the beginning + einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}" + einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}" + einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}" + einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" + + local have_switched_compiler= + if use clang; then + # Force clang + einfo "Enforcing the use of clang due to USE=clang ..." + + local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }') + [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}") + [[ -z ${version_clang} ]] && die "Failed to read clang version!" + + if tc-is-gcc; then + have_switched_compiler=yes + fi + + AR=llvm-ar + CC=${CHOST}-clang-${version_clang} + CXX=${CHOST}-clang++-${version_clang} + NM=llvm-nm + RANLIB=llvm-ranlib + elif ! use clang && ! tc-is-gcc ; then + # Force gcc + have_switched_compiler=yes + einfo "Enforcing the use of gcc due to USE=-clang ..." + AR=gcc-ar + CC=${CHOST}-gcc + CXX=${CHOST}-g++ + NM=gcc-nm + RANLIB=gcc-ranlib + fi + + if [[ -n "${have_switched_compiler}" ]] ; then + # Because we switched active compiler we have to ensure + # that no unsupported flags are set + strip-unsupported-flags + fi + + # Ensure we use correct toolchain, + # AS is used in a non-standard way by upstream, #bmo1654031 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + export AS="$(tc-getCC) -c" + + # Configuration tests expect llvm-readelf output, bug 913130 + READELF="llvm-readelf" + + tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG + + # Pass the correct toolchain paths through cbindgen + if tc-is-cross-compiler ; then + export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}" + fi + + # Set MOZILLA_FIVE_HOME + export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" + + # python/mach/mach/mixin/process.py fails to detect SHELL + export SHELL="${EPREFIX}/bin/bash" + + # Set state path + export MOZBUILD_STATE_PATH="${BUILD_DIR}" + + # Set MOZCONFIG + export MOZCONFIG="${S}/.mozconfig" + + # Initialize MOZCONFIG + mozconfig_add_options_ac '' --enable-application=browser + mozconfig_add_options_ac '' --enable-project=browser + + # Set Gentoo defaults + if use telemetry; then + export MOZILLA_OFFICIAL=1 + fi + + mozconfig_add_options_ac 'Gentoo default' \ + --allow-addon-sideload \ + --disable-cargo-incremental \ + --disable-crashreporter \ + --disable-disk-remnant-avoidance \ + --disable-geckodriver \ + --disable-install-strip \ + --disable-legacy-profile-creation \ + --disable-parental-controls \ + --disable-strip \ + --disable-tests \ + --disable-updater \ + --disable-wmf \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-release \ + --enable-system-ffi \ + --enable-system-pixman \ + --enable-system-policies \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --without-wasm-sandboxed-libraries \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --with-system-nspr \ + --with-system-nss \ + --with-system-zlib \ + --with-toolchain-prefix="${CHOST}-" \ + --with-unsigned-addon-scopes=app,system \ + --x-includes="${ESYSROOT}/usr/include" \ + --x-libraries="${ESYSROOT}/usr/$(get_libdir)" + + # Set update channel + local update_channel=release + [[ -n ${MOZ_ESR} ]] && update_channel=esr + mozconfig_add_options_ac '' --update-channel=${update_channel} + + if ! use x86 ; then + mozconfig_add_options_ac '' --enable-rust-simd + fi + + # For future keywording: This is currently (97.0) only supported on: + # amd64, arm, arm64 & x86. + # Might want to flip the logic around if Firefox is to support more arches. + # bug 833001, bug 903411#c8 + if use ppc64 || use riscv; then + mozconfig_add_options_ac '' --disable-sandbox + elif use valgrind; then + mozconfig_add_options_ac 'valgrind requirement' --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 + mozconfig_use_enable valgrind + + use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme + + if use hardened ; then + mozconfig_add_options_ac "+hardened" --enable-hardening + append-ldflags "-Wl,-z,relro -Wl,-z,now" + + # Increase the FORTIFY_SOURCE value, #910071. + sed -i -e '/-D_FORTIFY_SOURCE=/s:2:3:' "${S}"/build/moz.configure/toolchain.configure || die + fi + + local myaudiobackends="" + use jack && myaudiobackends+="jack," + use sndio && myaudiobackends+="sndio," + use pulseaudio && myaudiobackends+="pulseaudio," + ! use pulseaudio && myaudiobackends+="alsa," + + mozconfig_add_options_ac '--enable-audio-backends' --enable-audio-backends="${myaudiobackends::-1}" + + mozconfig_use_enable wifi necko-wifi + + ! use jumbo-build && mozconfig_add_options_ac '--disable-unified-build' --disable-unified-build + + if use X && use wayland ; then + mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland + elif ! use X && use wayland ; then + mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland-only + else + mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3-x11-only + fi + + # LTO is handled via configure + filter-lto + + if use lto ; then + if use clang ; then + # Upstream only supports lld or mold when using clang. + if tc-ld-is-mold ; then + # mold expects the -flto line from *FLAGS configuration, bgo#923119 + append-ldflags "-flto=thin" + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld + fi + + mozconfig_add_options_ac '+lto' --enable-lto=cross + + else + # ThinLTO is currently broken, see bmo#1644409. + # mold does not support gcc+lto combination. + mozconfig_add_options_ac '+lto' --enable-lto=full + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + + if use pgo ; then + mozconfig_add_options_ac '+pgo' MOZ_PGO=1 + + if use clang ; then + # Used in build/pgo/profileserver.py + export LLVM_PROFDATA="llvm-profdata" + fi + fi + else + # Avoid auto-magic on linker + if use clang ; then + # lld is upstream's default + if tc-ld-is-mold ; then + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld + fi + + else + if tc-ld-is-mold ; then + mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold + else + mozconfig_add_options_ac "linker is set to bfd due to USE=-clang" --enable-linker=bfd + fi + fi + fi + + mozconfig_use_enable debug + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + mozconfig_add_options_ac '+debug' --enable-jemalloc + mozconfig_add_options_ac '+debug' --enable-real-time-tracing + else + mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing + + if is-flag '-g*' ; then + if use clang ; then + mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*') + else + mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols + fi + else + mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols + fi + + if is-flag '-O0' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0 + elif is-flag '-O4' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4 + elif is-flag '-O3' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3 + elif is-flag '-O1' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1 + elif is-flag '-Os' ; then + mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os + else + mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2 + fi + fi + + # Debug flag was handled via configure + filter-flags '-g*' + + # Optimization flag was handled via configure + filter-flags '-O*' + + # elf-hack + # Filter "-z,pack-relative-relocs" and let the build system handle it instead. + if use amd64 || use x86 ; then + filter-flags "-z,pack-relative-relocs" + + if tc-ld-is-mold ; then + # relr-elf-hack is currently broken with mold, bgo#916259 + mozconfig_add_options_ac 'disable elf-hack with mold linker' --disable-elf-hack + else + mozconfig_add_options_ac 'relr elf-hack' --enable-elf-hack=relr + fi + elif use ppc64 || use riscv ; then + # '--disable-elf-hack' is not recognized on ppc64/riscv, + # see bgo #917049, #930046 + :; + else + mozconfig_add_options_ac 'disable elf-hack on non-supported arches' --disable-elf-hack + fi + + if ! use elibc_glibc; then + mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc + fi + + if use valgrind; then + mozconfig_add_options_ac 'valgrind requirement' --disable-jemalloc + fi + + # System-av1 fix + use system-av1 && append-ldflags "-Wl,--undefined-version" + + # Allow elfhack to work in combination with unstripped binaries + # when they would normally be larger than 2GiB. + append-ldflags "-Wl,--compress-debug-sections=zlib" + + # Make revdep-rebuild.sh happy; Also required for musl + append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags + + # Pass $MAKEOPTS to build system + export MOZ_MAKE_FLAGS="${MAKEOPTS}" + + # Use system's Python environment + export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach + + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" + + if ! use telemetry; then + mozconfig_add_options_mk '-telemetry setting' "MOZ_CRASHREPORTER=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_DATA_REPORTING=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_SERVICES_HEALTHREPORT=0" + mozconfig_add_options_mk '-telemetry setting' "MOZ_TELEMETRY_REPORTING=0" + fi + + # Disable notification when build system has finished + export MOZ_NOSPAM=1 + + # Portage sets XARGS environment variable to "xargs -r" by default which + # breaks build system's check_prog() function which doesn't support arguments + mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs" + + # Set build dir + mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}" + + # Show flags we will use + einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}" + einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}" + einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}" + einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" + + # Handle EXTRA_CONF and show summary + local ac opt hash reason + + # Apply EXTRA_ECONF entries to $MOZCONFIG + if [[ -n ${EXTRA_ECONF} ]] ; then + IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!} + for opt in "${ac[@]}"; do + mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--} + done + fi + + echo + echo "==========================================================" + echo "Building ${PF} with the following configuration" + grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do + [[ -z ${hash} || ${hash} == \# ]] \ + || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}" + printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}" + done + echo "==========================================================" + echo + + if use valgrind; then + sed -i -e 's/--enable-optimize=-O[0-9s]/--enable-optimize="-g -O2"/' .mozconfig || die + fi + + ./mach configure || die +} + +src_compile() { + local virtx_cmd= + + if tc-ld-is-mold && use lto; then + # increase ulimit with mold+lto, bugs #892641, #907485 + if ! ulimit -n 16384 1>/dev/null 2>&1 ; then + ewarn "Unable to modify ulimits - building with mold+lto might fail due to low ulimit -n resources." + ewarn "Please see bugs #892641 & #907485." + else + ulimit -n 16384 + fi + fi + + if use pgo; then + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + addpredict /root + + if ! use X; then + virtx_cmd=virtwl + else + virtx_cmd=virtx + fi + fi + + if ! use X; then + local -x GDK_BACKEND=wayland + else + local -x GDK_BACKEND=x11 + fi + + ${virtx_cmd} ./mach build --verbose || die +} + +src_install() { + # xpcshell is getting called during install + pax-mark m \ + "${BUILD_DIR}"/dist/bin/xpcshell \ + "${BUILD_DIR}"/dist/bin/${PN} \ + "${BUILD_DIR}"/dist/bin/plugin-container + + DESTDIR="${D}" ./mach install || die + + # Upstream cannot ship symlink but we can (bmo#658850) + rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die + dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin + + # Don't install llvm-symbolizer from sys-devel/llvm package + if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then + rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die + fi + + # Install policy (currently only used to disable application updates) + insinto "${MOZILLA_FIVE_HOME}/distribution" + newins "${FILESDIR}"/distribution.ini distribution.ini + newins "${FILESDIR}"/disable-auto-update.policy.json policies.json + + # Install system-wide preferences + local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences" + insinto "${PREFS_DIR}" + newins "${FILESDIR}"/gentoo-default-prefs.js gentoo-prefs.js + + local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js" + + # Set dictionary path to use system hunspell + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set spellchecker.dictionary_path pref" + pref("spellchecker.dictionary_path", "${EPREFIX}/usr/share/myspell"); + EOF + + # Force hwaccel prefs if USE=hwaccel is enabled + if use hwaccel ; then + cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-r2 \ + >>"${GENTOO_PREFS}" \ + || die "failed to add prefs to force hardware-accelerated rendering to all-gentoo.js" + + if use wayland; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel wayland prefs" + pref("gfx.x11-egl.force-enabled", false); + EOF + else + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel x11 prefs" + pref("gfx.x11-egl.force-enabled", true); + EOF + fi + + # Install the vaapitest binary on supported arches (122.0 supports all platforms, bmo#1865969) + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/vaapitest + + # Install the v4l2test on supported arches (+ arm, + riscv64 when keyworded) + if use arm64 ; then + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/v4l2test + fi + fi + + if ! use gmp-autoupdate ; then + local plugin + for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do + einfo "Disabling auto-update for ${plugin} plugin ..." + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin" + pref("media.${plugin}.autoupdate", false); + EOF + done + fi + + # Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it + if use system-harfbuzz ; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref" + sticky_pref("gfx.font_rendering.graphite.enabled", true); + EOF + fi + + # Add telemetry config prefs, just in case something happens in future and telemetry build + # options stop working. + if ! use telemetry ; then + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set telemetry prefs" + sticky_pref("toolkit.telemetry.dap_enabled", false); + pref("toolkit.telemetry.dap_helper", ""); + pref("toolkit.telemetry.dap_leader", ""); + EOF + fi + + # Install language packs + local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name '*.xpi') ) + if [[ -n "${langpacks}" ]] ; then + moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" "${langpacks[@]}" + fi + + # Install icons + local icon_srcdir="${S}/browser/branding/official" + local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg" + + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${icon_symbolic_file}" ${PN}-symbolic.svg + + local icon size + for icon in "${icon_srcdir}"/default*.png ; do + size=${icon%.png} + size=${size##*/default} + + if [[ ${size} -eq 48 ]] ; then + newicon "${icon}" ${PN}.png + fi + + newicon -s ${size} "${icon}" ${PN}.png + done + + # Install menu + local app_name="Mozilla ${MOZ_PN^}" + local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + if [[ -n ${MOZ_ESR} ]] ; then + local desktop_filename="${PN}-esr.desktop" + else + local desktop_filename="${PN}.desktop" + fi + + if use wayland ; then + use_wayland="true" + fi + + cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die + + sed -i \ + -e "s:@NAME@:${app_name}:" \ + -e "s:@EXEC@:${exec_command}:" \ + -e "s:@ICON@:${icon}:" \ + "${WORKDIR}/${PN}.desktop-template" || die + + newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}" + + rm "${WORKDIR}/${PN}.desktop-template" || die + + if use gnome-shell ; then + # Install search provider for Gnome + insinto /usr/share/gnome-shell/search-providers/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini + + insinto /usr/share/dbus-1/services/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service + + # Toggle between rapid and esr desktop file names + sed -e "s/firefox.desktop/${desktop_filename}/g" \ + -i "${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini" || + die "Failed to sed org.mozilla.firefox.search-provider.ini file." + + # Make the dbus service aware of a previous session, bgo#939196 + sed -e \ + "s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox --dbus-service \/usr\/bin\/firefox/g" \ + -i "${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" || + die "Failed to sed org.mozilla.firefox.SearchProvider.service dbus file" + + # Update prefs to enable Gnome search provider + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable gnome-search-provider via prefs" + pref("browser.gnome-search-provider.enabled", true); + EOF + fi + + # Install wrapper script + [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}" + newbin "${FILESDIR}/${PN}-r1.sh" ${PN} + + # Update wrapper + sed -i \ + -e "s:@PREFIX@:${EPREFIX}/usr:" \ + -e "s:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \ + -e "s:@APULSELIB_DIR@:${apulselib}:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" || die + + readme.gentoo_create_doc +} + +pkg_preinst() { + xdg_pkg_preinst + + # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse + # does not need to be forced into the LD_LIBRARY_PATH + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + einfo "APULSE found; Generating library symlinks for sound support ..." + local lib + pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die + for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do + # A quickpkg rolled by hand will grab symlinks as part of the package, + # so we need to avoid creating them if they already exist. + if [[ ! -L ${lib##*/} ]] ; then + ln -s "${lib}" ${lib##*/} || die + fi + done + popd &>/dev/null || die + fi +} + +pkg_postinst() { + xdg_pkg_postinst + + if ! use gmp-autoupdate ; then + elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or" + elog "installing into new profiles:" + local plugin + for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do + elog "\t ${plugin}" + done + elog + fi + + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + elog "Apulse was detected at merge time on this system and so it will always be" + elog "used for sound. If you wish to use pulseaudio instead please unmerge" + elog "media-sound/apulse." + elog + fi + + # bug 835078 + if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then + ewarn "You have nouveau drivers installed in your system and 'hwaccel' " + ewarn "enabled for Firefox. Nouveau / your GPU might not support the " + ewarn "required EGL, so either disable 'hwaccel' or try the workaround " + ewarn "explained in https://bugs.gentoo.org/835078#c5 if Firefox crashes." + fi + + readme.gentoo_print_elog + + optfeature_header "Optional programs for extra features:" + optfeature "desktop notifications" x11-libs/libnotify + optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas + optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal + if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then + optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver + fi + + if ! has_version "sys-libs/glibc"; then + elog + elog "glibc not found! You won't be able to play DRM content." + elog "See Gentoo bug #910309 or upstream bug #1843683." + elog + fi +} |