diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index 1fc0b48c0e57a..0610726cdf08d 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -100,6 +100,107 @@ DIST firefox-140.15.0esr-xh.xpi 272792 BLAKE2B 621747179540e3c1bc82c1f7936732b5f DIST firefox-140.15.0esr-zh-CN.xpi 460697 BLAKE2B 569ef8cf77be6ca18c30f10bb116b350c86260f494380820a470d08a77c6e8d184f7aab3138f7875ea57be186ec9d77374616556b04814b0546b259388e9c114 SHA512 feb516a613403f56b9567e4bf21effe7fd4991b52556203076a3bd0265bebac691b7366de27a0fc7a36504d663ea7c90d33cf70171842d4ac2b6c8611120680e DIST firefox-140.15.0esr-zh-TW.xpi 463736 BLAKE2B afc6b0f77719b455c4be37de82804cf034743d6f426034774b306890a11f390f638a8e78dc38914082169205bab52c1ca715892666ae6f1d8fa1b1017ef221dd SHA512 f8b73d88e4a969c57c6462ce59979a84656d64146bf7ec17b295b4a9a76299a2a2198baad3707d3017100bd226796e6317bfc593e47c32d87919db56e65111d2 DIST firefox-140.15.0esr.source.tar.xz 640054332 BLAKE2B 2267af31f533a17ff8e77b79d635c408a00df9e936f110f19ad1712113689fdf2c3765807f803a4761ebb455e96c2163c74b2ada799fb46cab29cf70e231486b SHA512 c3a9c92776fc0fe4ec84e83d608822a84ab424bef3e9200de8e17f161369d13bb4a5caf5de326dded23edaf1c6b424d831218029786d4cfd1d857ee2634efeff +DIST firefox-140.16.0esr-ach.xpi 294366 BLAKE2B cd0d50418ef804713fbee574c0d50f3f71ae1690386baf701788a15f26a88513a814837c989359b4d4e66f8eae761f0597d83aad6426ddefabcdee9ad84c57b6 SHA512 ff7dedd3cceaf6d5d0606bb5c1bb3232ede95b90a614a68348f60690478c0dd907a8275db9ddd4a44a29941ed5b97b46026b4f7740e7e6a3379a993a0407a0ae +DIST firefox-140.16.0esr-af.xpi 266634 BLAKE2B a5847781895d56e7b293b6f36099b0d56c2ad04cc65de4f48d1326a824e65000365aaa8116c713b435af4a99073cecca4ecab23116a34ecfe7c308a281a40e7c SHA512 6126130b732ff96ec0aa489a1f880b90cabdec60ed8ada9bf7c6bc9c9058e1d467cc6e8e18d99dea20b1cb803a89291f3208b6a614e589a6a0f4dfdef3d72568 +DIST firefox-140.16.0esr-an.xpi 332292 BLAKE2B 6c3321e5e51d1133ed4d5659e52e2918e721885264327266e008cced966d5e216be92137f4b0a8be5613c1727c21dd97b1a57e59e18c946be074403d57db5bb4 SHA512 f716d2fd86665c96deebd96f9ba2c9938e9efed3e0d950054aca1ad23d542597307f9a6bc583824cc53926cf3a0c536fb967b9e7e673fcf1e4999ed1fb07c3ea +DIST firefox-140.16.0esr-ar.xpi 445289 BLAKE2B fe02793ed80f69eb84e0216c5e5dcaca61d1417c5c239e74b8d7564b0a1fd1c1b95609dbdc60304b9990ab616395264ab1c669e4bc9717b7e8c2b8dac00be363 SHA512 1ab91dd696caac91ea60572463f9124344b34519c30523692029d4b1f69ce10cf1663b518e1c57735b5fccff8f70226c801b2399d813b4c3f390261cb0ea5e34 +DIST firefox-140.16.0esr-ast.xpi 312225 BLAKE2B 2181b84688a5225f68aee93a5be15fe95f1f143be3c3ef74529efe67c7df8f2707f58121bcafb27b8bf614098ff9cca45e01f8147595fa2155e54b2a528c69d3 SHA512 c82a08c8ab3628be5fb83f3b258d8d486db2ba8c05ee265b5a2fcae7679cb00a780f724fe89158fb2493b95bf2ba5cecd9fc9b96dfc5bd9d94982980b1778d97 +DIST firefox-140.16.0esr-az.xpi 318405 BLAKE2B acd23731f5b81dadacee737a6ffa40e2ac76065972d0e1fb188a479505c485e3f1dae0a71f4c6096561c9c07ce2f8a69f35d6c0c2c4807ab0dd4cc0278e27847 SHA512 57a309c78d1874f587df53fe7336a13042d91a76e47b7354ff46fc71b0e2c5e3001572b016312354849f4eaac194c106f1fb2e5560de356a489765774db57ba1 +DIST firefox-140.16.0esr-be.xpi 521203 BLAKE2B b377ee364231f61bf1a2c7855861dd0e1ea7ec2e69f7fccd9853e32fef86c2338c7afd42b7f1668acdec86f34936f7011e06aa88bdfceb8e61dc05b92c70473f SHA512 23823ac5523b5e30aafa9abe9a3bcc9c4b6ea16fa2ee99d923a590ab936d88d9fb23c0212ecc61445942806ca34558e9f28ff7b3387cb74105676ce1aa156234 +DIST firefox-140.16.0esr-bg.xpi 457552 BLAKE2B a22ce46e8fc45916244a5b50d8bf36eaca741428b1241dc7410afb1c4262741826d7871ad8ed749e53d0357c4ed46f1e8a3ada13fc8a8081632d69b0ee95f82b SHA512 0604fed32ba3e16ed7f52945317525d28601211ab8e349047647937d361ff1186148f8b88efd2c8b32b0b7e5d8bbc55ab7f2d1f47b0c8b23aca8ffd3fb8093d4 +DIST firefox-140.16.0esr-bn.xpi 413378 BLAKE2B 18e587cab172017d27bf7220090cd6020121f8ed178851257e2557bafd092c59e4a8f3e6bd531e3650c4f637fbfc58ad99f32fb57b5106477789e3810853a3ca SHA512 5b066936cb9998c1304e3dfbded22b3538f2c47036e8ea4ef62812d0e5643b04935eb7f247d7025796a3721d3479dc1249343875d1978547bc5c630a18707407 +DIST firefox-140.16.0esr-br.xpi 395316 BLAKE2B 066a488d50b8e24407f4ca66c40c23e52eac7721b3b878d79cd4037486247013c16ffa24ef3db2188b21cc070beb9ece9f8c0327d1f8f9de0bf47ef5a15f33ab SHA512 f64cd87418574416cbe7161e5eb887892c8142f70833b9869e1bc15a3504279b3297f4c3c34b6d9182e62c254f5b6a90783e776fd8022cb61cc3455d1ccd08f1 +DIST firefox-140.16.0esr-bs.xpi 447163 BLAKE2B 261fc9508c37e599f6c6802d925478ec3697b1cc21b01f66921062b78acda5735578f6b88c23bcb6cd12b41e4a688f190c63d4e4d134628a3876fe8ae4d2a495 SHA512 9495eb0deddc8674715bfcd408e413e58bb8b8dce3f83ad52f672f08e40afad7977d4f786735e2fb446006546cc81e647d928654e782532c2c4df8995bc2c227 +DIST firefox-140.16.0esr-ca-valencia.xpi 357938 BLAKE2B b527f34c95735ba60e0c5795460969e960c87cceecbdc2f2351ed9aaac69786bea53928bc5f7dc195ae77fc5cffe76d02bbcfdcbe50086d3ecdceaf31e328414 SHA512 daa7af22b68165ae5e0a0de43cb7199f417eeb5ce1878ea3eab940179095ab3c31d8c346d4a1d8f9dc94f4c47e048181aaebeed10b87364305dbf238aa49e3a5 +DIST firefox-140.16.0esr-ca.xpi 404832 BLAKE2B 8ce7a3d70b095708af1e78eb2b7064e312757d0b04de51781e5fd4288284990dae80d8a6421764b12fba5fb75d01b963a7e506a9fbad0b9812bc92046395a877 SHA512 39f1a4857106dfaedf692d20791ca06681d178eb4890595e4491f3a3bf1dbbed0e665b54c57b56295f5bd5d7adc8cd4fe78902f787e8a5c76201a787cad012c7 +DIST firefox-140.16.0esr-cak.xpi 390849 BLAKE2B bc67d24e59f310eea748bdd6d099e4afc69536804d1af8fcc8b435ff6ec11e00179752e86adad858b5ac83ebb2f20a6be1d4fb034173a145690bd7115809762e SHA512 36bd989febf343118a6ebdd9c552a6a6188fdf960c3b546436633556b0fb206d0dcc87c769eab8f28a13cf9ea25e33f735ed683bc0848f7de0078e0bf5a9136f +DIST firefox-140.16.0esr-cs.xpi 475932 BLAKE2B 3156708c36975f7e440ae3a42936f352755ad9a32559d4cb50074cdfcb825d580f3b2603a67cb61485200c11d37269cf232779f77402547c0c0b0789b9c773fb SHA512 526e0c8db1e83637b2c03949823bd7501b03a939f6bc47a2f4858174f3dae730302a3e7850c5c56a166fcaaaac4eaa2e1e3cd5875a5b4c17b200132dd26c3994 +DIST firefox-140.16.0esr-cy.xpi 441968 BLAKE2B 720e44a3f973857268d0c72ee805b65238f5dbf226957d0e1588d585ad357577bc87744026f4d3121dbbbd1698980441ebd558c1b3c1e23dd7dd656e1383e04c SHA512 d0200658778189e80380aadea49a57cd1b259cdcd9c3ebb8b459164365b588bee6bdda2413700f379534e5fcd7b44402bf8e1b66357640d91b70a3ea5c336b2c +DIST firefox-140.16.0esr-da.xpi 431121 BLAKE2B 5f1bbc72d977f526ba8afa15650ef8b0c7e74a40f325dd555320a6a27e84e011442f47df1900afcadfa1a58c5d3d5556c74793f40793b8054899d0b6c18404b7 SHA512 138d268432946bce9f34e1a01d131a9c4c6963233039b3ee21be9d76991f3b284ee6af8cdfd9ce8db5ff5cc5a44ff8ae0348965b4a8979c5a52c79481ccc7cfe +DIST firefox-140.16.0esr-de.xpi 452703 BLAKE2B 2a47e5b360669bc8664aad10854e24f80f96b2a17ebf7f4338c9e4cb2ce59ac7f6c721bc4d36aa4cbdcc2f5edee00879b06a80fc3c4214d203f79afa8d106b8d SHA512 60c426d113eb29b9cc19132a97532bd1cf83d78d36c6282c07e7ce0fbb6ccbc21d682e97ef6bde73155e568868ccad33a9d3af652641b26ec7e3452d1c0b760f +DIST firefox-140.16.0esr-dsb.xpi 466058 BLAKE2B 31f338f16c253481584d376cd1ec4f71c9736422f157d2f9181e4ef014ee08e1a430e9721b3a1c865abe4228601c836f5283a3e786f6810bf74fdd5b871fb8f2 SHA512 d08ca681d93c5379a0d2e30bd719b2cfd546f5e478fffbb45cf0866a6ac944bf28390bde8b81e162e77290d0db240e679f8b1aac6d683be540a8f4440b0efe00 +DIST firefox-140.16.0esr-el.xpi 536815 BLAKE2B 805a1b92df03dff23423033196e2970561074d95dd4585e9e5580329b3588d1ca87544d6f9b3c09ff5d0102ca8ac8cbd7296a38ba78b5276375207dc9f60c24f SHA512 ec19ee73593242633455b6ab49f7dae6a651bf6e051bf61b9ce485c20b253844c538dd4a64729a6394b31235c011f9d11b94c6b2be72af8973277ec88cf9c12d +DIST firefox-140.16.0esr-en-CA.xpi 411057 BLAKE2B 5de8e0576d222c8e1c674d3eb94d9d1c72dffc43f1d473623472e333d52916ccb80a1d6b0b0bc29097bbe29c31e6668c7dfd65e7ff50d6fb0b5e24315d871c9e SHA512 ee469d4fe732dc5d596b48fcdcd297a4afb23fc0a7ff4e4f80ef64ec41f4e0cb01220c646bf8ab969ea36780b7eb5c0fd626b084cb8a448b1c3b5865ff0c8cdb +DIST firefox-140.16.0esr-en-GB.xpi 411403 BLAKE2B 5505345b4622f84de6ca5ae0a9bbca7976443a38790bc9da5ec02b890748d7eccc1b635ae111fdd50e6ba79ac94ea28abccbdf46d91ac92f8477ec05715649c6 SHA512 1d9425628fce30843b71ebd0331be3f79a1b42d04c2f61998d646166366a3dfc331b23421ca0c9487fea0efc6a265989d82b9917ce5c807a154da558afe72a96 +DIST firefox-140.16.0esr-eo.xpi 433476 BLAKE2B 79e097fb2f871a09ca1636de8e7d16b7aa3a6f5448ea9ac53ee48a5e7d3b956fd2bb2a60aae0299af3f022cf861bd988a7649ee54ab3354abdeed405fbdf4a8a SHA512 756bc81bb1847462a8b7ccac9a68c1e1d6f99003154ac8b73fe30daf351a62e2dc7b2b54a28dfc6d599e2c798801cf5df856c136e8e7cdef33a23ae26ad29db8 +DIST firefox-140.16.0esr-es-AR.xpi 445517 BLAKE2B de1be3df659dc62d86e30e226a2ab8114f8b28aebb2c72c994c911cde8da90a3720ebefc8a7b8f840657ea3aac40f8f804677efb73bba995c2cc4bd262588055 SHA512 9e9c0b65c8211748726722e54817d0177fd66e517bb357e9193c17f96f78bfc5587e890668da0d03820c76db0e7a2aa3a30e9cb14d9f96cfbae262ce86b4c8ca +DIST firefox-140.16.0esr-es-CL.xpi 446298 BLAKE2B 9f54ec702a59b079864c8f1fb6507cd6c4a62ed6dc979762fbc18563edcf125bf79d717a435f336b80644d78afd90041079739d96ec3c95f7d6a8b8cf392ed7d SHA512 5387bd8943f3ae5d09560dbd5f87e17a0a90377a5b9ad9bfee9d4c37b18d8c81bcf2c005691976f8d3fd38a70d19e9a7809ce61d289751cbead355bf80766a64 +DIST firefox-140.16.0esr-es-ES.xpi 447016 BLAKE2B 40f4d76eeeb5f53eb186887bbdd7930930eaec0a94ab2e4839f879e5a275ddb07d29e28ffc1a6c09419cb613efb7ef386136985206e721624acc8a5858fc9f85 SHA512 f4ddfedd5b045b8b67d37c5a719778ed5b93dd9fdbe15b52c4f64fddadd5a31d4b073b396d75a29cb2de3b321219518294a712478d7b7b6e98d651353e970e43 +DIST firefox-140.16.0esr-es-MX.xpi 446248 BLAKE2B a7549847e66c1b420414ee31a99af6d25dfbe1039102394939ebb5e5d81c93128dcf429ed32a29408522d47e8df9a8512fd1b068eb1d6f98960f87d54a3b23b1 SHA512 8fb9e8e04b6e4b1ccf9701fafda5dd6d413ab21cbccecb74ca16d44879e2e6198c5a5bbe4b325bff52d4ad72d5172f46381dd162aff72be61d89ff5c74a76347 +DIST firefox-140.16.0esr-et.xpi 359322 BLAKE2B a884fddc7236e8638273cf236276b66c8573e134ecda0a3ef228ba4f391d6dd54bc0f5046813e8a41641f6d8be09af5a7e1ce27fa11aae2c60b2eeae06267c7f SHA512 142d94d23099ce7b35681324f57af6f8550aba53c760b57f6dd9ff152c130794c20f63b5800cb543fb74b102f29a9df43019731a9dfe117e7b6c07a8c07738f6 +DIST firefox-140.16.0esr-eu.xpi 417304 BLAKE2B f64eb0d8066e6b0ca2fcbf03de56385f4b5eecfefa700e9a5508654f5c737c45004a55529f1ebd0abd827e82c3f194cf891e7f886ef54a42470eb67c69432794 SHA512 be11602a41b5e8e25f59ef64b1d53cc6947c3bea759138590589234526116b9780f68d0f692a7b728f6a33dda4ef0d1c9131bf4011ee07801355ec66a5825fb1 +DIST firefox-140.16.0esr-fa.xpi 421640 BLAKE2B c0423b8e4781a5747a932a889a7eb4a2a38afd4431588f433a38bf92fbbfbfa2b89e82d53099331ee7754a3fc64b3dcdb2f7c00cd935c51f2d4ad1f0efffee17 SHA512 adaf3cbd08dd9ea858e61a9f56046468da29b458e017437e69e6479f0e4215abb1ab646fd0786b99c7a52c9e44208fc89afef4789208a4641676d02a4d260bea +DIST firefox-140.16.0esr-ff.xpi 310192 BLAKE2B 18df8b0da355e80fb1a446f6437df654a334b521e79f2f10f41df00c8fb7b895f970b4fbc006f0a72a76d9f07581cca9c164f726520f5caadcfbda2f08022585 SHA512 de63d622e8488e8d1dfc82e44b46af8060fa5aabea8d4086c851022a97babcb298b9d05efd2bf59c9235e0a85f105c202c083d7e3deb9e46dd19db3bb8094a61 +DIST firefox-140.16.0esr-fi.xpi 430171 BLAKE2B 7d0fc81e628a99400c1fddfb213a35822b5d68502512730a5dde301e537231ef14ea2a3d54bad6cc75d6d0b8ffa85cff6661cd842dcc61346a65dafb1f56efac SHA512 2cc39f4e5c2cc913672502f3b7619171c2413f46cbfc589d62506fdf45d4f93bcfdc63a3a01d3d9cfdcb53ef297ab8a0e5329e76cb29293c12aa5c05fa8d9a5a +DIST firefox-140.16.0esr-fr.xpi 458446 BLAKE2B 84bd01672a24092a12ca70cc31810863d1c70a1874ebce0cdd34abda9043ebe807cad0c402aaa275ec8b7c65ea5e9ee18dde4acbd126e447527b0b2470da3c27 SHA512 043946917f7b5872e7886737781da12298f5e1359ff9537b345f4b3c1985ef5be90f2b0084525638b59782fb24aa70e52cde0a0b36dfe9001f4eaee98d4c0484 +DIST firefox-140.16.0esr-fur.xpi 451834 BLAKE2B 530f2f64f85fbed3f2684b9f420bd144117ad9f47247d20830ce8b74f081c88f68811618e737778795ad6a996f38de6f36fb6694208eee376ebd57f5177a2759 SHA512 e88ad9d932919490d810b922d6b4dd9957349232266b5654230c50c30e055d352ada4bd2c2472f4d67b019cfeea3ef85c174dd7e4a2b519ad9aed0bc62fbcbcc +DIST firefox-140.16.0esr-fy-NL.xpi 442161 BLAKE2B 399c94eaff524c75c7e61cf493104622b32709b14eeceda5770fbe9c31025c0a56a180863ff96115ad3ed3ab5f263c4be933dd2e341dce4c6ee7d9a68cf9e272 SHA512 3b5f0a7baaffc1ed8c5c751e4ba1eb6459a134bb96c729f24b7cb9b544bcfdd0d3621d9b66eafd2514b5b8eba9f794342a7f63058888b20c8698cfaa911be8fb +DIST firefox-140.16.0esr-ga-IE.xpi 315284 BLAKE2B bcb22551354d36e135d03a6bc86be8b803a2b625113d50e2b4cff58233a6b9149e1dac497f01db11a0e73ce37845647789efdcb085ec8d8eaf66b0b313216767 SHA512 ca57a821670dc9bfc114dbee8ce0dac17907ae93a01c1d549cc8ef4a06568624610235d6fe03f53bb787b93cf3d41a7df57ca571994a389ad4859f702f39f2f6 +DIST firefox-140.16.0esr-gd.xpi 399430 BLAKE2B 73eba3677e2221f99285405f7f4d4cc04284ebda792167a320d7e00d2e9d950158a63be4acef26d1236d9de95367921fb82af5ec6660f3578448cdf56c7c9c0e SHA512 8a32843baffacedf646c8da29e68e4f87e7f53be503ed864976040fbfc206e445424bb8631b4baf43541f53c1e0141a675f2b5358f8273ded21d17b8a3078853 +DIST firefox-140.16.0esr-gl.xpi 442900 BLAKE2B 9539b6118386294e4a95c649d43271103326dc7b95c6e89ac9233737dcfc75a1d6528e4ec3c0b3b7a71d126c10d64e489fa8deac1f2b6e2fb9a8f7dc95479d32 SHA512 6a2a1363fef3ff7efa3bf18ce3fab5468bea97d4ca32b950a42406f3e375cfbcac82deab69213482e4613cd4834ad1cc5587aae2b76170bcf4fbacdcc4b02c65 +DIST firefox-140.16.0esr-gn.xpi 451083 BLAKE2B 6d7b48ae8681d6dc0f1c3ce1bd511e99c0f01ec4a9945adf6b765f122ac8b8c068f9aa84796cc748df9d4b421908f98bee265112391a37f5752c09fa3e8f4d76 SHA512 799673a959f5c241c1d3547258406037a1e780afcff4f2e206f2e86676600a159128ae90d8013ee83336e0807eef024c3a7fcb666f97da2dd8284c2c574cfa5e +DIST firefox-140.16.0esr-gu-IN.xpi 358975 BLAKE2B e73d3a8a1a8650a88793e0f9588a857549ae7ebaf75ee0db63d12c249764b5c95b3dd8d0a0f244dec60feb40c9eff2bd8a726133499596e89f70adb38c160133 SHA512 c9e0308e772a405937df9b93f23f35a68c203e0a97428adaeeaba7f046253b58dff4aad9a57a30a0e4902ab2b18421f4034c9e1127c64af4605bad13a1f73e4d +DIST firefox-140.16.0esr-he.xpi 444989 BLAKE2B f1ca018cfb23f9e687d3c26fa15421e89adcc233075bf2ed0447f56d4f9e18449afba7ea4dac3d83972f6a3be96b4fbda7608237f0c43bb00a6ba5c473e14caa SHA512 b2c81bc364e6b6ded2598f993d23975235fa99c551b52cc828dd9f0dcf453b98ae2c11dd2176a1e6ac819df85ec19b4a6c5bbcbe4a618ab024913bc7106b16c4 +DIST firefox-140.16.0esr-hi-IN.xpi 377453 BLAKE2B 445a28cbe2dc776188b57fa9995443e1347b23c9a8bbd9f833a2416c89414fe6a2e954e3b8d08109f06b0f9b067ed8e759666cc79dea6682563f9d126d287b79 SHA512 962523cb0ec7fd4386509c3521b4cd719553a3f2b3354ead9ea4a7346e5a6932e7fbde36b560f54e74b7da0d2defa238f24d8ee534f7817be95e2d43e9b6bb9b +DIST firefox-140.16.0esr-hr.xpi 437688 BLAKE2B 1af220c78e1551c90c14215dfb14c9bbd2d8b670d18939c80f0c2b01986c9f47da0c27bd274a8eae41442d39d96c413aea0db884799aac0ef8c34edf40a55882 SHA512 da74150e8a6370a73b5b0e1262b32aa877a71c6466e2724d506393cc613a7453bdb9ddb66a622d80f7dc13fec86e5bbd4abd52acdf42589964e48952583bc8a5 +DIST firefox-140.16.0esr-hsb.xpi 462688 BLAKE2B a6b1578c150d114456e74f220ed006f864ffe8307f4bd577fcd6c6884364d0e14687cc953578f010f1e000776da765d1d8ca1239711dbd117528a40422a0622c SHA512 c1d76c2c7077395d6f6eace34ed238cb427b855ff65d9c7f6918849b051690bdbd7360d6aa9bed227cce9f6f98efb91625dc8e1254e7881b1ea576647309dcd8 +DIST firefox-140.16.0esr-hu.xpi 466167 BLAKE2B 852425a258d93b0647b9103066c9dda625b66a6c7d79660c7f3f64bb1cee03f05a17466f0da0ada603e7a49dc632a00bb954c894c4a81b9e8482a36466e0f7f4 SHA512 70fb64b0233733f2d31dec5e9d20df00be33d9b8fe1854a3e128da1e0787329c0c7b048b559804cdb951d747ca7bc101a95084834f4d998dc4e005db5f43bc76 +DIST firefox-140.16.0esr-hy-AM.xpi 461616 BLAKE2B 724e646655d2e9bee2dc418177ae8dc31231b65f2d26bee68b3f3ffe1864d3e873f830044350212ae146054117d4f13b55b00c6b0bb0fa13853e1289b5779af7 SHA512 7197c0398182b82a3ca17ed5a6ab7cd3dd0dd5ddc27aaa8d19fd5a9624aa3283bf99bc28dd0bc11fc0b218c50dd71d4d0515a0c1241ebbdf69a55bbd4d8a637a +DIST firefox-140.16.0esr-ia.xpi 430115 BLAKE2B be0a6af47b4720ec0e8c8c7df04871b69c70e5bda830566c26177246d426084ca5f44a55b3554f2999d638d86cfe050f4548fd2a50ba24bed00eba8b8a4e8447 SHA512 0b74485d32e92b0c58dedfddcd74a74613947af548c7cadb4936183ef1548fbf0142d0cb6523bfcc45d20f5a8b709cdf28e1cc544914312dfdd55d2a5756dd11 +DIST firefox-140.16.0esr-id.xpi 422746 BLAKE2B 6be32b6667811defbc360e6678578ae1e50c8d82d616eb9fbc330176240a8a7bf86b7ceb5322eaea078d3374f50cb56472df1fd7410c097ab7f8422b18e719e4 SHA512 a161505ee6a1e7ffc07c467e0313996a6aa45d831ca12ca45abddd8de8aff26b6688e7fbddf4b5c173af7ac991e0a393bbaadc6a75443aca81ca9cc54daca484 +DIST firefox-140.16.0esr-is.xpi 432696 BLAKE2B 67c0f8f98ce24d3f30b9e7fde167d3c17b1dc94eb4523c4cc5a016c1015b8a85d9bb215c9ddb7913fbd2b2c3ff99718f34c0e217c92e1ad5cdffe31bb69e545e SHA512 ce08c44e8e336546833ecd9ab4a40c004e52182d319fc3bd26cabb2149d28276cb1f03d7c5d9fb5983dd46cc77acfe55aa8404374d24ea8789290b0df6dae5c1 +DIST firefox-140.16.0esr-it.xpi 440900 BLAKE2B cb3239af3db0779f17d2f7949783fd3acff9d0129803c2745a4907d42b9f766fd20d6d052ea6db15fb336528fc3f29e27fc3a1cd7d61e5e297cd6e987b8c692a SHA512 54fde95c0f46c486590ba272d2c1aecd1b2a34d61299828f11d82b2b031ecf01dcdfb0cda1a679b6d01d51c309a5f713027188afd39a0597baca0b6cfeace3a9 +DIST firefox-140.16.0esr-ja.xpi 481308 BLAKE2B 0ef37ef14ab4981e02f4729a8c97ba76a81fc9ac591b364828c611aefd73ac89ef29b248f53cad224ffbeace039f4c9a2fd38673e48ab8bc514df1ac7ef5543d SHA512 f4fb34fc940829b6708f58a88d008ec44f7b5de7712500455c20f28a169434815b70f4802f8be6ef60b58d79e44344c344887343f41a63faa5f41b375318e459 +DIST firefox-140.16.0esr-ka.xpi 494867 BLAKE2B e648ac5f777d9da205bcd89d7d8a5035660f487cca7b0c020da1e5056242ac27f9ce7efe95c28537e68456511c9d99e393581858de8df68e1456ee34ca7cbc94 SHA512 f548c5d9615515acad70da11c720b591198409ef3d3d8153cd4105123421f15a7c84e5f439b49f7ecc7e17a9ab1f2647518c3b4d893623349324a44dbd056bce +DIST firefox-140.16.0esr-kab.xpi 422847 BLAKE2B f234b73ce800bb4bef30641e015a1255f0d7b66a64097a58080f1fb2d47400bbe527b972f79bd2a7c91f74b820cb6b45c6df9ae90ba9c48ae84a98270b8cbb62 SHA512 87dd1f843e9c9ebd9cabdb8c5525578775758d34451bae32a03f9c3c6cecfa3a2d0e2d5322f8dfff4d9c311664975186a6818b8079a6a8fda4ca70237744c45a +DIST firefox-140.16.0esr-kk.xpi 506693 BLAKE2B 285c0a07219861af11419b5d93154f8e4da5aff1ea96a0c2ab0b432672b0a9d1d4378f5cd0dcea0e0eb7f63809e1f346ca9d45b2ea9f59d3608aa9a8f876efa7 SHA512 8ef74dbc79d07bf4518c6f0e88931830bd1778bd75ba235cbcc759b8e9646234b9ba304723bd31421c110baed6d685f024a9588dfb9fa75011c351ba2f92318c +DIST firefox-140.16.0esr-km.xpi 348776 BLAKE2B 7eb24a61592ab3165a37482e30243d485be10ebb65b2d74b1ead63719a838e2f8114135d91746334f81cd56e06657d317b172550b86c10a334ece0595b6953a4 SHA512 74458b9f24afefc0c0282167306420379d03feb90434ce3070f9a8e6cedc33e377290e5d73d20bf81cb0edbbebbf9344e6cabed62b2c9e1d528a1cdd374a5a3f +DIST firefox-140.16.0esr-kn.xpi 331778 BLAKE2B 649cbf387148256021701803eca9462eb3c4f806f16f425e5d630e3b2bfb5e553213a9739a2ef370816d2dfe768167dbdc7991e62fbb43fd2a9e9dec62553296 SHA512 b9ed116da6cdf66850b3908b0de7f37cf0a1aeade2eb7542e33edd1a7c69b9eabd7ec3fffb6828b1ffbe9da1608fdf68ab95c2337975cf6c0038c2ff382b6c62 +DIST firefox-140.16.0esr-ko.xpi 467534 BLAKE2B 845f450a250136adca35a16a57c99b289d406f19f5965fcd585f3f86ecb2ff0716b761aa6f7b517f4756b6913a1a796b05c106f48e4b5cc9bec443cd1b32bed6 SHA512 50cd8b99e89dc1df0204914ba9acf668b774cd0e32727033f1a215085dc6a4e0398e78c482fc5a25c10d00942529d045ada6f52dc643f01027bc49877a604b26 +DIST firefox-140.16.0esr-lij.xpi 319283 BLAKE2B 31440ffdee7e56944cccea5f30b4a076d84404a54008c33b31f0b1a34794fed22c0ccac4a72f03a5850a0d474aeabab54fb5a92146a079471e297b4069f222ba SHA512 682b6e842f79a4f6928a349d87f43ccc8f8bb75adbd1e343de8028f3cff7d3fd99711e4378b548253c66364f52b95f2a50fadf33522f8988025067b022f25731 +DIST firefox-140.16.0esr-lt.xpi 379958 BLAKE2B 2db7b1718a78ce808d9f2e405f56b3b6d4e05f474911c380658963e7b93fa37221523ae86d3451036498c7febbe08fa7faa5dfd17a87253e7de11afe8350d20c SHA512 733786fb34b8699e6a488a8607a307e6c661d0b102b7407eb7fb0cba2b3604157e725d7f22062bdcf21ad7b3002fa77e9ec720df62e05e80304cdaf07ec2e763 +DIST firefox-140.16.0esr-lv.xpi 389080 BLAKE2B fa4dd22563cb03a3adbc76abe760922985bd5b38713d12856a6531cd8c1d49693d28e2e9268ef578a5879d22ebe3f3f5da0aeb0d7bbc44c147e14d8f7dd98d0c SHA512 f8cde209f2d60e32d1bef569d40bb4a1c55e80b0616ec0fb62f94baba08056e64cfb020e85db3050fe5d71eb6192b8bae8a17b8b031e409d491ae7f4e1730d30 +DIST firefox-140.16.0esr-mk.xpi 316840 BLAKE2B 33d8a6ea92e2900196e7c5fef6de72f840e4dd3ffdaef31d6995c8c26c06140b4eaec4a89d41d7453c3314fc14803806ebe1e1e75d30eb839cf1a31c74b4e9bb SHA512 76e67ffc31ab167b832da1424d4966baf602f6eb72561576fddca815aaa7227269be683d4e98189f047386e802789b9ee5b43ff74b39d47e769400cc158cc9c6 +DIST firefox-140.16.0esr-mr.xpi 356255 BLAKE2B cf97ef3151d1a36b946775a5a4f58294f935c89c419d5c9775f9f9d938bd2e4c5fdfac5e509bbd1a366e538d94d8d80ab7124df1a31ed273b81d35aa7d35532f SHA512 dc7ad6cc6d86c0ab6ad5ffa785fe8555702669ac89f26a6925f3d1483c934e83c29ee8c61fc82468cc5a4da5dd815f71f37bd63dde7a4d0cf636c8fc3fcf2afb +DIST firefox-140.16.0esr-ms.xpi 295393 BLAKE2B cd560292b3ef742c42459cdfd6d64b433c67b3b3deee02f67793a8dc6dbf5190cf724fdfaeaac0c95fccf2607ed91ed86bcb8bbb06f5af19d86b939a7724d0c5 SHA512 6a86e79160ad6352496ad551cbb9c97f39c7beda1ab6f0067b137916e3f8469c0709c7267ea2d27383a7172adac5447bf9b6e6828c3b64a1992ec5bd11661a7d +DIST firefox-140.16.0esr-my.xpi 343032 BLAKE2B dd7284387a518b574a173ab32d3a8ecf183f4ed79f0403435d6f7703359706b97ed4e1000f5ea5af2f36080141a8e6b8e467d98b81b0337c5327bc0d976e7f48 SHA512 78dc9ed352f8080213e93272930d88d5bc1d22325129ac7677348cb5998d8c41a86d5de5a52cb4c8af7ab48eca2c7c64f0551ab4e7ff4ef140a00aa0451efaa4 +DIST firefox-140.16.0esr-nb-NO.xpi 429335 BLAKE2B 3ef530874dc97711b1ddb856f7fa8682f049ab65eed0db6e423d7528407837de41180c3a2e6d2a03c08c9cf1f97fc52797851cc9fc8b7e53fe9819c800fcc4f4 SHA512 cdd189587637f90995ab48367f10f742785c12c156ca19704df56e8347906bce97987f75315a47b49e2d3c9cf5dda56fd70fa2e0d9ce96eee6e1495c7378a861 +DIST firefox-140.16.0esr-ne-NP.xpi 349026 BLAKE2B c87ccf30f3e3076a9ea437ac5ed361eb433d7b6a7a1d6936cef3c1a563882b69c6ad0dbe563514929ecbbdb992c5ce6aa1264eb844f0494b3b75a754612d082d SHA512 b30a1086c433c0a0cf3e30aae6ed7d811a1170cbc17a217b737e1922076a136ed73d5de31d95a03970d204a426eda7a2726acbb7987aaa746f3f941293ead8ca +DIST firefox-140.16.0esr-nl.xpi 436190 BLAKE2B d54732386581b10e3998aab2f7fda30fd3eae3c8f068d712f9e9fe5fb1776f391eef033b59dc54b6887bb4ed41bd35d97d077f96adc2326b0eb4d46bb4fbdbc1 SHA512 448fdee32317301b39621c420a098b4c1728d7ad1e82cb1128d420079558c8f2cebf7188de38c1d0c0fb572b4088b95d1a8280edaadc1f2117e6710ae03680fa +DIST firefox-140.16.0esr-nn-NO.xpi 432221 BLAKE2B 927ad93221ee7d03819488b093943db73d6f9f959706f3f6125e561e2523abb27a6ab2468d6ddcacd6c0cec955babcfb16544c1071abca66fb88b4560fa20f47 SHA512 b3ea94628d1ece6d1901ddc9bae8bed8e4c042f237e8209e4fdeee98063450fef405436ddc6e97a7a6dd62211d41b6b3b2d04338f9d3b4071bdc179569af9bf2 +DIST firefox-140.16.0esr-oc.xpi 410931 BLAKE2B 28dbf3e851aace771fe82747c6f6fc5b4d2d2a7221df58890f00008a0ae1bb93861ebe92bc42efcd4e350f1f119e79fe4a5f03cde5777f303e7490b4c7fd27fd SHA512 b460a040cb8212c3f5a95d92f2b288e5559f67ff0c70ad0264ddfaef3fec482b3649aeeab662acd66346411937efa9c2cb7053d961bffaa8b7d58e79199ee154 +DIST firefox-140.16.0esr-pa-IN.xpi 494405 BLAKE2B 54ec6eef50ab8ecc7c656973bb122c7fa72fcdbac99f940bc5aaa222540f2f2f9d923047d0ebc99a99690a8890973cc3975f05358e6ff93dbd4eb557690b6983 SHA512 4342c88ade4e1f6c2ab2dcdbb81e73c8331c7011b7805cb9678a68a4814aedef9424adc9a86fb9df240918e00bbbeee3dae1ed8ff82a0e08a4633b2bf61ecfe3 +DIST firefox-140.16.0esr-pl.xpi 460923 BLAKE2B 59ef61185919aa76e0154e42d458ef38c355a91e89a635b91cdc6f7c29f9cb6e8d199b3afb1e88e0de7ae6048714867007fbeef7a052c6d66a530c254700550f SHA512 fc9f70e9b77944548d7c963bc664f842d2ccd60fb73f07da0e7b305ebecff2336a518b3f2963c6e87afa9faf809b0a610d6ce89cd136994e2c363afa5f5bf64a +DIST firefox-140.16.0esr-pt-BR.xpi 440759 BLAKE2B 651770b17258da8eb8dd307f9d1051986e2e7a03952a23119fded8657027015f105cbe9170ea8f70c77a4d638a13b23267c553151818bd27cbedf010f05f67d6 SHA512 a2ef2df50f8a1575af43c04dee04edf25a583d4008e81954cfde633f6ed5c074e5be5e000d2ca3648b0da1650fd8da94444437c6714f98cc8da7b560e7c7cdd2 +DIST firefox-140.16.0esr-pt-PT.xpi 446409 BLAKE2B 943f648d23e77aa87fc23dc4c21abb6d72427c67070f0341412fedc409d43dbcb166afe3c92262234f1b39e46893c40758a788bb25bf754e476c84d6912f8841 SHA512 467c4808672719ad0ec94c8c2565db6abaa39890bbf874200e03a82a8c454b2b03a0b6838c757134ec10afaf8a245d6f15708af182c3643a70405eadf0a341c0 +DIST firefox-140.16.0esr-rm.xpi 438013 BLAKE2B e7e4e7cfee3781175403a4a2bea19eb2325e3bb7c4dc2331848715811deebd688daa94ff04db330c4df3efe6fbf06c112935a3c8d360bb65b1a4c894c5066690 SHA512 93c5f50e009737e7945474b1b5a20ee72cc0190acf05f26fd36fd954e2fe7d0af2b7ef4c302e5c31e4eb145fd02209ae6bee4d4274de37a37b71c831006bae27 +DIST firefox-140.16.0esr-ro.xpi 452830 BLAKE2B ab4c7af3131b42395bb19b67c52011bd77a3812bbed45b41e3523de5aaab8d5ebc60e866f30fdd5052c8fcfd2eb89ed3c330a2e0a5a2160d6ceefe741e664865 SHA512 082a4ced33276ee3128378cd045ef318c9f30e20ed4f1db4090b4aa7ebd876a07e1c8b7ef1fe2e2d6d54dfb10564b2169642af1680b4c1949548a585016a65da +DIST firefox-140.16.0esr-ru.xpi 525180 BLAKE2B 791f3d9e2375ca4c9bb7abfc6ef67c196bbe82641459b44646793723d7af5ab3640e77220e27892629633fd4dad35e5806f50b95e18acf85b7c857fc3ae3abd1 SHA512 63971a36f3244a150f39b1d40032724deb2cdbca39796ebef15f59a3d5e31839acb9f0272952bb43ae0b3255087dcae819573dec45f4b5c8c4c224fb0fb56681 +DIST firefox-140.16.0esr-sc.xpi 410464 BLAKE2B 06280fe8e2279a0c6539652806b2f63a4d47d3b20e4797366f3276a300fa91bb9dee08b848d8df12d1ef06b05d49c0b39dda778796ea481892002b30e6d174cf SHA512 dc99b0c1ac9d23145500c00fef0b42d25502e9e68a461088b3882081000e71b5a8202d6a01201479b07403bae9694513afe22868f7a31a004bdc005260b501c9 +DIST firefox-140.16.0esr-sco.xpi 322645 BLAKE2B 229e67168c6438b5e7f579919b799f58e3c22419458e3a3d3fe0e18be383b4c5d2673bbd001de7000058124f1e1d47160dd6ac2617b6d0eed07c8ee0657b1d92 SHA512 f371f19c32c432870c661101fc33d11e7e916637222b553dcba7539d1c5765837ec2ef4bb9d1ed167a33087e21861d279d311baa7f834f91b3a2b5a6505d1165 +DIST firefox-140.16.0esr-si.xpi 411606 BLAKE2B e3c28d7bc558592e9465928d2e3598f4b11d2ea2512660233840c5d91a36bafb4ffa585d1ea8abae946262220f790c39a07294e417914ba4c36d5b361e4e505c SHA512 c881f3c3bd8ae3d9782690366b5de5ceb048d276297825b2985e31d5daf3599fa6eb0c13ae29ae58c06f885bbe3eb30b2989f846b1660882758bc764b817db60 +DIST firefox-140.16.0esr-sk.xpi 468238 BLAKE2B b404f5ef5299bbd3521ec57f7087fe8045e16dfb06ca947384e7409b8795f3e3b9357abd54b13a31783fb4bb52b8b55924a4c56f08e81398c7fc3a72d8354961 SHA512 64ff833690647b41cc24723cf5aa54e0edf196e27fb1d5697bf5ea08069f77c4566b1c9368be9e7567a9610b88410e878b791d13d208e8e022e14cc7a04eb190 +DIST firefox-140.16.0esr-skr.xpi 485868 BLAKE2B b42d8839729bc0785a68b81c43f23f8c081d9c6fd011974bbcf5388605aa8ec67e60b8351343c304584753d6e19fdbf05dd457186af6f9c826f0f1ed10428d46 SHA512 7e2ead1b1749b35646bbe4b8aeab625fed5a8112fceb04ce1b684c69a83e35866bfc6566e15505a0f75cc80a2df699175923d9d4e88163edb004513e15ef4f03 +DIST firefox-140.16.0esr-sl.xpi 441193 BLAKE2B d66360bf1c1ce11a6d16245a9e476043c6edad69e00b1401738af024f4fda7ad198a3eaca9e86fc53e2be75784b0a16d888517a21c8d5f19bf8b7594beb3984e SHA512 5075e9f481caccc620488e53d98334f80198086562898fe0d0d60f0053ba7243efeb436835414b60b2f84c4e8ebf342033c025a0c5d2771e3acf27608f741613 +DIST firefox-140.16.0esr-son.xpi 273126 BLAKE2B 6ed6bcadc0d96303c2a0764d76ab43d9a9670ab803549b4b59999869c2b45783b38d3d3cbe7ef80821b3d245ff5fe298cffd39fe200c80f0d6163a586cdc2afe SHA512 717121e6ab2cf39af81e2b7d3d292791cf3d19ce96c5580c6d523e9afe7131ea760aa2f87cc6a8ae4a9ed626d6c8fd47153eb91a1a8e7d61c119cc2ae38915a2 +DIST firefox-140.16.0esr-sq.xpi 456015 BLAKE2B 0b5cde3909ea424586e40d8358e8519fae2b33d2bd25ae6e5941f046f38f1f4b55d909ec77f0f009b6d89cfb0698b2c62cc27cbb260dab76172278d542516ce9 SHA512 ea426ac26791aff6ef03b159a8211a973457004d10f90ca559e2d5042c46baf1628a8b87b2200d1e3cbc780859090608d1ce3625f2f9ed37b21c792a63b34166 +DIST firefox-140.16.0esr-sr.xpi 453365 BLAKE2B ba2eab2d2b57821f819de5b823a1703ab329b9b3e681a873fce4d6ccb06334a3555b5706e926680d945b3adbab0b8f11ca2c736b8d61166a9b0b1b4ad37d6e8f SHA512 88aa9cc25ff5d26fa1ec16ead13a6dacce53eb5c3a1bc833f85afa48fdba257b66907a58aef7994c6e363081ee3efac92ae7ab6d6e2f46b1424c24e313f6a454 +DIST firefox-140.16.0esr-sv-SE.xpi 436157 BLAKE2B 24a5b7929888d3d4b93eb07b8f18a2a2f87dc046ef07f437432ce922f3ab0b9e7dd298e9d13e215fb2c664947eae25602952fdd59998d8e7944937152081cf8e SHA512 b91c17b4a0faedc84448383a74eba30442f3664819eff3fb88ac0b20aa3036d679052cdec44f3bc93206abb3cfc4d7d3456525aed7168e87f6606ad11c690059 +DIST firefox-140.16.0esr-szl.xpi 341670 BLAKE2B 77a7d985d4a879b3bc1297ac3eef58d2a618c7c3308a5f0354882a8048eeeaed37bde41a7bf1c489fe68723c32c474641090e9de1930cc45c0b668fc3d19d211 SHA512 3cdceefcb130dc6def3702d10eb0df712290653d8e7cd571195de5a41c89f18a65485d7af6487619dd7481a556822cea0a5c92c068e9b6c51c820dde469884bf +DIST firefox-140.16.0esr-ta.xpi 338153 BLAKE2B f41c5572c479fb111f3a3eb39327d174edc93852889fa11a038999e520fb6dd6beb5f98207a58fbb698bea1740aa5fc2c38f8a86321185fb42f3c1a720581f72 SHA512 46708321072ceefe20dde6c8100bee5b047e6d3c112edf9d5b42de8ff5f4270f1c8cf68b0966443c1de749dfe0f44dfd2133f8e652ff61577bdc0276e62a3610 +DIST firefox-140.16.0esr-te.xpi 382195 BLAKE2B f181d10af7d1637a8671eea27588caa1b7a22b63592c06daf2337785e67083eb7a7cfddf203556cda8b5facdb26b870ad0209214a0d144f18455332826beaa97 SHA512 a821399838bf7cc6e619b3d56df6dc913d4822f5c22fbd862864e126e56e13620817b4c0538d251ff1081ff9f78f0d01daa55d3f8ce91a96e8a0dc55aa3c62f2 +DIST firefox-140.16.0esr-th.xpi 505489 BLAKE2B c1eeb0675e808937259eaaa1f6c1f2cb5a50d5d62b7e770650ce849681fc705e1f90244397c48319227af4db53a1828c7eeb70018aec7b06861459ebb8491c90 SHA512 7f654f21454aa475697c05ca37b984f2e0995f304d502f709f46bd34952be8c23170ab6f2596e85e533e1a53335f26f8c60a7dd45b6e046e2c4b427e977b3e7f +DIST firefox-140.16.0esr-tl.xpi 356651 BLAKE2B dd5e9de61fc967007fd5dfbc99e4064b6f3f7badca8bf550249dd29a89426f0d23b285ed3973a9db039bc9e4bbc1a82adcf9db15796f7ea72eb9e7b414200fd5 SHA512 89301d7ec2a9cc7325a98def64530574ae9e1ef0903bc36868ddd5396970ec040a8455f0db93a19798593c91629036a9b72907fa0ceeab9bbefca585824586da +DIST firefox-140.16.0esr-tr.xpi 449315 BLAKE2B ca7efffedc4cbb1dd4216c25af1ab36987e4c766f68fab9b82a9c138734a379a41173afbe6a13d318b4a251dc620d51235f99f4bf413e38debfcac4729cf09bd SHA512 6f5c349d99afa5fb118bacad288946e3dedfca0b0f9d62333448dde997af83500d9ff0de26a199a3d2c82e205cc511fc3088acf5f92f5db4c1279f1b79d9e162 +DIST firefox-140.16.0esr-trs.xpi 324517 BLAKE2B 05d22c3b60d1f6edaa1c9a8472b300e4e82bda59cc98c19d5fe208485583a6e7e33a4519c8641f6a2449cc0fc04095b1b621d116c6de6f51d753cf5ee4041399 SHA512 f4c8a35b86b83dae2f890de86af74f0e5ac0582e95d8deb434c5574e816deb8a3f6e38c637e47b5a05058764f937ca60304a4f091b5b14b9c6a6ef87e4b8722e +DIST firefox-140.16.0esr-uk.xpi 516739 BLAKE2B 94b87953da7367885a169dbbfcb253119ed490a10777aac255a16a5a1dcdf56382727d3ffebf379a761330681d8993dfa883ad761c8bd5e7ea40835e2fa90a38 SHA512 4b74e4060e3df666e471be45fc24cd5ce65b489fba64d0b59752db6350394c0a0ab3dcb0496798ddb09df2b37e9ed16fce873774432b95f7f75c472068375952 +DIST firefox-140.16.0esr-ur.xpi 370171 BLAKE2B d65bf8ad4617ff6be84c7068fb09a9e45bff4ab322d8cda5fe52f1bb2046eb619d138510a4f89d1742127334869c98679fdd602502b1f746aa8df8246baf16d3 SHA512 7333d5c38e2dfbdff81bc3a2b9a90039b7a07a3f6021909408ebdd25ed514732739b230b27b34a4a21a1ad93d28c375a264746df3671faa1c5ad2673538ba921 +DIST firefox-140.16.0esr-uz.xpi 303486 BLAKE2B 4a4a343c7b5e32d061ebfe83911790a23c4a3cdadf7f5a1708d547d6e5128c1e087a59400b87a7bd09901b17b806eb42885122bbecfc2f8b6495c2d421209cf7 SHA512 9289fee454004733605d030875475371f3a8326ed86074b5ddf17127220fc12a269fa0e0fe1d3a32355380b9d961b9533a4933444e639550c71468597c33ec71 +DIST firefox-140.16.0esr-vi.xpi 469146 BLAKE2B c00816579d17d9707b543618f027651b9c45341f0092a17347b50b744529c582d1a2d5ef8518045fc29b9624fef6f0da22c3bd0b60cc11529acc85e3dfd7c20d SHA512 f6a93616d3c60cdb527119ded4bd138de5befbe92ef62cdb15e1fd6f9e2caf91d908451f1c235766633a9ed3c204e316d3b484152127c34a13ba2347e589e20b +DIST firefox-140.16.0esr-xh.xpi 272784 BLAKE2B 05c67c9bdabc73063a342a15a0dae2f5218628ac38b39f25a0e8f279049815131b227c47fdf396e0b09830bc2e6cf7e429cfd2c19f69f9719b105e03d79883a2 SHA512 ad394efa128d07d7263d0da76f58435ee25181c94fea481f7e6de55ff0cb1c7686e5d5c9130619f16f30fdb213c317a26365df921c0a4c27b58a0bf3563a3c67 +DIST firefox-140.16.0esr-zh-CN.xpi 460702 BLAKE2B 71bbbf07c6a388cf31bd1beebd9811809dd62e0f20cd869ed6f79f6b5d17ba2d4996860e3543de4f2c1234617842b17db35c814efda94e59d87b276a655781f0 SHA512 5341722a97a17f292b03e1c969d2089d091a7bb8d9e4933c0f69bfb140c1c0b97faf60215fd1066b123ebd89a321ab97bd724ef0c3aac5d910143843e014f814 +DIST firefox-140.16.0esr-zh-TW.xpi 463735 BLAKE2B 9d3ac24da76c0075809a33bf14ec59858ba6597b4897fb884e5af98d9360a47b97595bfaf0d743f5b956cd5ba5291990b859b740aee6058a1208b01ddf342baf SHA512 432e9f85644b4af01c971aa2532c740d357c31a05ab45026701e54e93d35b8e2a9957497478041eac2f18b32ba0ae79f5e35bb23f1e8883815a7b73c8d6d9dcb +DIST firefox-140.16.0esr.source.tar.xz 632581380 BLAKE2B 1fb3bde4477e330cbe080ef322326095e905322851a32f097aff49dc55926a5502dfc06be35411a5924433d6f2b75fbd7891bafa537dad7245b5080393eddf9d SHA512 fabf5b481594a9a860b6ae379d2ee89ba291b807c94334ee15bad1fe862edb47c22e890d892e33d6a6ec57fce4ab12aa9c9c6fa4a501b881ecc6211ac04bd9a0 DIST firefox-140esr-patches-13.tar.xz 15628 BLAKE2B 824c3d42f2f6cf70932fe395cf11dfe9043e09e20d6dfd2bd64ce4567206def45424e82b738f27c71648f0b2d97608746d22565cf7aa35713dedd71a24cde449 SHA512 d4d59818944f6a8213598308a1095a0f3c9818e6c517587e4630056d432a0e9673ad627447ca18dfa884dbb35bc2921e54cfc63f9c5646765e0f66a75279584d DIST firefox-153.2.0esr.source.tar.xz 807705672 BLAKE2B 73798f3bb282f39ceb302989caf74ca4385c9079b98c783f8ac16401feae820a7183fb35ece9308bb1e029356d1e7d6ebe745031ed4f0706de565fb3ab8903df SHA512 a8cd4784bb52ca89c0fe37404e894c044f6145c62e9fcdeffe621fde81ae4602078be575e26c90d83e5e47f26675d3ee897cd6a20027d09d4ba7d0e785ce39bc DIST firefox-153.3.0esr.source.tar.xz 804997520 BLAKE2B a01a4e3efec1c81ca462b915e448750a4d76ec81fad4cb2b909db584cd14df7437154fde82bc6547689466e811dccf70dc8d27d1e76b00572f5137d653040319 SHA512 56a5e092f0aba91febf01d227e8068520513f632d09c5ffbad4cbb2de307d9066425f353a1b7fcf5648733e02a9b17cfc9aaed5e39d7562a6b143b1c9827a668 diff --git a/www-client/firefox/firefox-140.16.0.ebuild b/www-client/firefox/firefox-140.16.0.ebuild new file mode 100644 index 0000000000000..1ec4dbee2276e --- /dev/null +++ b/www-client/firefox/firefox-140.16.0.ebuild @@ -0,0 +1,1424 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-140esr-patches-13.tar.xz" +FIREFOX_LOONG_PATCHSET="firefox-139-loong-patches-02.tar.xz" + +LLVM_COMPAT=( 20 21 ) + +# This will also filter rust versions that don't match LLVM_COMPAT in the non-clang path; this is fine. +RUST_NEEDS_LLVM=1 + +# Minimum version required to build. +# Max version supported by LLVM_COMPAT. +RUST_MIN_VER=1.82.0 +RUST_MAX_VER=1.94.1 + +PYTHON_COMPAT=( python3_{12..14} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +VIRTUALX_REQUIRED="manual" + +# Information about the bundled wasi toolchain from +# https://github.com/WebAssembly/wasi-sdk/ +WASI_SDK_VER=32.0 +WASI_SDK_LLVM_VER=22 + +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.firefox.com https://www.firefox.com/enterprise/" + SLOT="esr" +else + HOMEPAGE="https://www.firefox.com" + 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 check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 multiprocessing \ + optfeature pax-utils python-any-r1 readme.gentoo-r1 rust 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[@]} + loong? ( + https://dev.gentoo.org/~xen0n/distfiles/www-client/${MOZ_PN}/${FIREFOX_LOONG_PATCHSET} + ) + wasm-sandbox? ( + amd64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz ) + arm64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz ) + )" + +S="${WORKDIR}/${PN}-${PV%_*}" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" + +IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio selinux sndio" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx" +IUSE+=" system-pipewire system-png +system-webp test wayland wifi +X" + +# Firefox-only IUSE +IUSE+=" +gmp-autoupdate gnome-shell +jumbo-build openh264 +telemetry wasm-sandbox" + +REQUIRED_USE="|| ( X wayland ) + debug? ( !system-av1 ) + pgo? ( jumbo-build ) + wasm-sandbox? ( llvm_slot_21 ) + wayland? ( dbus ) + wifi? ( dbus ) +" + +RESTRICT="!test? ( test )" + +FF_ONLY_DEPEND="!www-client/firefox:0 + selinux? ( sec-policy/selinux-mozilla )" +BDEPEND="${PYTHON_DEPS} + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + clang? ( + llvm-core/lld:${LLVM_SLOT} + pgo? ( llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[profile] ) + ) + wasm-sandbox? ( llvm-core/lld:${LLVM_SLOT} ) + ') + app-alternatives/awk + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.29.4 + net-libs/nodejs + virtual/pkgconfig + 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 + x11-misc/xkeyboard-config + ) + )" +COMMON_DEPEND="${FF_ONLY_DEPEND} + >=app-accessibility/at-spi2-core-2.46.0:2 + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.112.5 + >=dev-libs/nspr-4.36 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + media-video/ffmpeg + virtual/zlib:= + virtual/freedesktop-icon-theme + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/libdrm + 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-3.10.0:= + ) + system-harfbuzz? ( + >=media-libs/harfbuzz-2.8.1:0= + !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 ) + ) + system-icu? ( >=dev-libs/icu-76.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-pipewire? ( >=media-video/pipewire-1.4.7-r2:= ) + system-png? ( >=media-libs/libpng-1.6.58: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 "llvm-core/clang:${LLVM_SLOT}" ; then + einfo "llvm-core/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 "llvm-core/lld:${LLVM_SLOT}" ; then + einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + fi + + if use pgo ; then + if ! has_version -b "=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then + einfo "=llvm-runtimes/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing!" >&2 + einfo "Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + 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 + # Ensure we have enough disk space to compile + if use pgo || use debug ; then + CHECKREQS_DISK_BUILD="17000M" + + if ! use clang ; then + if tc-is-gcc && ver_test "$(gcc-major-version)" -ge 16 && [[ -z "${I_KNOW_WHAT_I_AM_DOING}" ]] ; then + eerror "Firefox-140esr can't be compiled with +pgo using gcc >= 16. Use:" + eerror " 1) gcc < 16 instead, such as stable gcc-15.2.1," + eerror " 2) \"clang\" use flag to compile Firefox-140esr, or" + eerror " 3) disable pgo via \"-pgo\" use flag." + eerror "Everything else works with gcc-16 except +pgo." + eerror "" + eerror "Follow Gentoo bug #975851 or upstream bug #2041879 for progress." + eerror "To skip this check for testing purposes, export I_KNOW_WHAT_I_AM_DOING=1 env." + die "Firefox-${PV} with gcc+pgo cannot be compiled with the detected gcc version: $(gcc-fullversion)" + fi + fi + elif tc-is-lto ; then + CHECKREQS_DISK_BUILD="9900M" + else + CHECKREQS_DISK_BUILD="9000M" + fi + + check-reqs_pkg_pretend + fi +} + +pkg_setup() { + + # Get LTO from environment; export after this phase for use in src_configure (etc) + use_lto=no + + if [[ ${MERGE_TYPE} != binary ]] ; then + + if tc-is-lto; then + use_lto=yes + # LTO is handled via configure + filter-lto + fi + + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + + if ! use clang ; then + if tc-is-gcc && ver_test "$(gcc-major-version)" -ge 16 && [[ -z "${I_KNOW_WHAT_I_AM_DOING}" ]] ; then + eerror "Firefox-140esr can't be compiled with +pgo using gcc >= 16. Use:" + eerror " 1) gcc < 16 instead, such as stable gcc-15.2.1," + eerror " 2) \"clang\" use flag to compile Firefox-140esr, or" + eerror " 3) disable pgo via \"-pgo\" use flag." + eerror "Everything else works with gcc-16, but +pgo doesn't." + eerror "" + eerror "Follow Gentoo bug #975851 or upstream bug #2041879 to follow progress." + eerror "To skip this check for testing purposes, export I_KNOW_WHAT_I_AM_DOING=1 env." + die "Firefox-${PV} with gcc+pgo cannot be compiled with the detected gcc version: $(gcc-fullversion)" + fi + fi + fi + + if [[ ${use_lto} = yes ]]; then + # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC, + # bmo#1516758, bgo#942288 + filter-flags -Werror=lto-type-mismatch -Werror=odr + fi + + # Ensure we have enough disk space to compile + if use pgo || use debug ; then + CHECKREQS_DISK_BUILD="17000M" + elif [[ ${use_lto} == "yes" ]] ; then + CHECKREQS_DISK_BUILD="9900M" + else + CHECKREQS_DISK_BUILD="9000M" + fi + + check-reqs_pkg_setup + llvm-r1_pkg_setup + rust_pkg_setup + 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 + + export use_lto + + 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} == "yes" ]]; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die + fi + + # 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" + use loong && eapply "${WORKDIR}/firefox-loong-patches" + + # ICU's subslot change should trigger rebuild on Firefox if it is updated 77->78. + if use system-icu && has_version ">=dev-libs/icu-78.1" ; then + eapply "${FILESDIR}/firefox-146.0.1-icu78.patch" # bgo#967261 + fi + + # 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 loong; then + # Only the LP64D ABI of LoongArch64 is actively supported among + # the wider Linux ecosystem, so the assumption is safe. + export RUST_TARGET="loongarch64-unknown-linux-musl" + elif use ppc64 ; then + export RUST_TARGET="powerpc64le-unknown-linux-musl" + elif use riscv ; then + # We can pretty safely rule out any 32-bit riscvs, but 64-bit riscvs also have tons of + # different ABIs available. riscv64gc-unknown-linux-musl seems to be the best working + # guess right now though. + elog "riscv detected, forcing a riscv64 target for now." + export RUST_TARGET="riscv64gc-unknown-linux-musl" + else + die "Unknown musl chost, please post a new bug with your rustc -vV along with emerge --info" + fi + fi + + # Pre-built wasm-sandbox path manipulation. + if use wasm-sandbox ; then + if use amd64 ; then + export wasi_arch="x86_64" + elif use arm64 ; then + export wasi_arch="arm64" + else + die "wasm-sandbox enabled on unknown/unsupported arch!" + fi + + sed -i \ + -e "s:%%PORTAGE_WORKDIR%%:${WORKDIR}:" \ + -e "s:%%WASI_ARCH%%:${wasi_arch}:" \ + -e "s:%%WASI_SDK_VER%%:${WASI_SDK_VER}:" \ + -e "s:%%WASI_SDK_LLVM_VER%%:${WASI_SDK_LLVM_VER}:" \ + toolkit/moz.configure || die "Failed to update wasi-related paths." + 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/chromium/build/toolchain/get_cpu_count.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 + # glslopt: bgo#969412 + moz_clear_vendor_checksums glslopt + + # 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-updater \ + --disable-wmf \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-packed-relative-relocs \ + --enable-release \ + --enable-system-policies \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --with-system-ffi \ + --with-system-gbm \ + --with-system-libdrm \ + --with-system-nspr \ + --with-system-nss \ + --with-system-pixman \ + --with-system-zlib \ + --with-toolchain-prefix="${CHOST}-" \ + --with-unsigned-addon-scopes=app,system + + # Set update channel + local update_channel=release + [[ -n ${MOZ_ESR} ]] && update_channel=esr + mozconfig_add_options_ac '' --enable-update-channel=${update_channel} + + # Whitelist to allow unkeyworded arches to build with "--disable-rust-simd" by default. + if use amd64 || use arm64 || use ppc64 || use loong || use riscv ; 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 loong || use ppc64 || use riscv; then + mozconfig_add_options_ac '' --disable-sandbox + else + mozconfig_add_options_ac '' --enable-sandbox + fi + + # riscv-related options, bgo#947337, bgo#947338 + if use riscv ; then + mozconfig_add_options_ac 'Disable JIT for RISC-V 64' --disable-jit + mozconfig_add_options_ac 'Disable webrtc for RISC-V' --disable-webrtc + fi + + 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-icu + mozconfig_use_with system-jpeg + mozconfig_use_with system-libevent + mozconfig_use_with system-libvpx + mozconfig_use_with system-pipewire + 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 + + # wasm-sandbox + # Since graphite2 is one of the sandboxed libraries, system-graphite2 obviously can't work with +wasm-sandbox. + if use wasm-sandbox ; then + mozconfig_add_options_ac '+wasm-sandbox' --with-wasi-sysroot="${WORKDIR}/wasi-sdk-${WASI_SDK_VER}-${wasi_arch}-linux/share/wasi-sysroot/" + else + mozconfig_add_options_ac 'no wasm-sandbox' --without-wasm-sandboxed-libraries + mozconfig_use_with system-harfbuzz system-graphite2 + fi + + if [[ ${use_lto} == "yes" ]] ; 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 + + 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 + + # PGO was moved outside lto block to allow building pgo without lto. + if use pgo ; then + mozconfig_add_options_ac '+pgo' MOZ_PGO=1 + + # Avoid compressing just-built instrumented Firefox with + # high levels of compression. Just use tar as a container + # to save >=10 minutes. + export MOZ_PKG_FORMAT=tar + + if use clang ; then + # Used in build/pgo/profileserver.py + export LLVM_PROFDATA="llvm-profdata" + 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 loong || use ppc64 || use riscv ; then + # '--disable-elf-hack' is not recognized on loong/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" + + # 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 + + mozconfig_use_enable test tests + + # 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 [[ ${use_lto} == "yes" ]] && tc-ld-is-mold ; 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_test() { + # https://firefox-source-docs.mozilla.org/testing/automated-testing/index.html + local -a failures=() + + # Some tests respect this + local -x MOZ_HEADLESS=1 + + # Check testing/mach_commands.py + einfo "Testing with cppunittest ..." + ./mach cppunittest + local ret=$? + if [[ ${ret} -ne 0 ]]; then + eerror "Test suite cppunittest failed with error code ${ret}" + failures+=( cppunittest ) + fi + + if [[ ${#failures} -eq 0 ]]; then + einfo "Test suites succeeded" + else + die "Test suites failed: ${failures[@]}" + fi +} + +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 llvm-core/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 "${FILESDIR}"/gentoo-telemetry-prefs.js >>"${GENTOO_PREFS}" || die "failed to set telemetry prefs" + 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" + + # Prefer the upstream svg file they use when packaging flatpak so it's always up-to-date. + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${S}"/browser/installer/linux/app/flatpak/files/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg firefox-symbolic.svg + dosym -r /usr/share/icons/hicolor/symbolic/apps/firefox-symbolic.svg /usr/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-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 + if [[ -n ${MOZ_ESR} ]] ; then + 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." + fi + + # 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:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" || die + + readme.gentoo_create_doc +} + +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 + + # 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 +}