diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index 29dacb9e7e5bb..599f690e4978c 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -408,6 +408,7 @@ DIST firefox-137.0.2-zh-TW.xpi 465652 BLAKE2B 4c26831c1e4633d7ae44b9328b4e8123e1 DIST firefox-137.0.2.source.tar.xz 599825260 BLAKE2B 2484e141ac0a3ffaace0991c126ef53adfbfa3a4c6ac70d7c54bbddb34a01146d53e457190ab67ce74662e4605ca21b531521c3a1cc7bff66e742d063a26bb33 SHA512 82140c4325233ea2e2f579088cebb98c0e8db8848b4018cff95d4ed42bf847049ed6520fc051d930ee267a5acb008908170825d381589da0d109ca04a61e1c24 DIST firefox-138-loong-patches-01.tar.xz 2948 BLAKE2B a88a68418b747206a50b3c7d90c447aaa2a3ae762d7d5d32bd03f3af59d0b9051c278de8b293275758844560f1f275461afbc07e40f449fe5060d47ccd5b0938 SHA512 cd80714cc7142edb1a3dd83a7ddcb11e65f6b3ae2c44c299a6ad6a7636514cbb0ba8bf95446553c028b3a80713825110438727c3308c810358b2483af3340a24 DIST firefox-138-patches-01.tar.xz 13492 BLAKE2B d88f9e457e549e2fa1e14dbc2d226affe723008bab29627e09b82e84262f468995f9e5821a76dedffa53eaf5c77b4dd18ef0ff3ea48e73dc752f12bed2fba890 SHA512 dc99145fefa8d4bc08627098cd068a6f4a4fa9023abe256f6cf8f60de8f9d88c9d6f981c5a87f688ec2c190015e5d06148ae49a78a0326de8d747e2309e781dd +DIST firefox-138-patches-02.tar.xz 13236 BLAKE2B cda86ec5a89d591e7a294cea611ecf84483e28ddca9ea7087f4161ac7589d2e26255a7a1e78e3690dbe97adc5a2d07eefa3b2d2e032eea82f6722f9a6089dabb SHA512 0211e40595a59db168ee6ebdcde398cd9cde6200306ad08633235d8a85bbe367c6a5cb758fc4a9a646af7c33f6bb9a6cf403c47c62be954bc35949356d1e9f6f DIST firefox-138.0-ach.xpi 295292 BLAKE2B 19257efd78bdf073783fcf4e3e12d914a6b4e7a9aa1f7d1d24b5fcc3db6194b6da5bdb4f01c5c5fa92f9d9adb141d88c7231798c78862c7e208578d114b7f3b1 SHA512 c7bab3ada86d19b9b8e7ca525a664349ece591b5d2c69b40f1bc0d2f515482e5cd0f550b9a2eb0da9e6e5d8ad9aed5bf5424f4af9cfdbf64fadf666554e75e54 DIST firefox-138.0-af.xpi 267285 BLAKE2B 9da1eee66843c0e06f59a9f4f9004ced00db0a1f544dbdf4f160e412056f10045d40028da76397a238507ee617826f34d6e72a49cdb3548fa2417228c51108c0 SHA512 a0e9dbe90a81dac2beffeb1667b0738cb4dc1298368db4db7ca4077b4546a7a8947c98ac1298e058b6d5291f5b4b4ae793e0f8ea32571113594e2f7e736f129d DIST firefox-138.0-an.xpi 333087 BLAKE2B f73f69d3f501f0d91c0a441ccd3854b3925f4392ab64062a7d29640d6a58c366b149a26ddc1f1a0e3d6c4b1cc9ddcef351d7370f567a2222573cd381bd6ee41a SHA512 8b4c34149b2b2589d524db254feaa15682af3f9486dadbaa1509b6a7fb954609b72819232ea447148cd348c36438dc550258406085295a32ab0e5f25438ac4fd @@ -609,6 +610,107 @@ DIST firefox-138.0.1-xh.xpi 273654 BLAKE2B e5575b30cf37b716fc672de506acd177b25f3 DIST firefox-138.0.1-zh-CN.xpi 460396 BLAKE2B eba0b473dac39464ca71656e7047aacaa6a064a7a4b30b244216bfc1d03707b3bcb1309816fca2ff858f368583888846fae5cf0a970705cf5a20471cee463478 SHA512 ced2e942e4721fc4f73c687b95f18cb8eda22936e97463db954835e4f9407d778e62869778153005dda0ec5b3cdc13be2d14f73d2c71c50526175eb6b2ddeb94 DIST firefox-138.0.1-zh-TW.xpi 463424 BLAKE2B 29697d2fcd318f85cdeb650fb883cc4ab184fc32f77da91e527962490bb4225f8ab99fcef25aa26bc7cfca1ef6d55ae976bf1dd98356f3d191e0ace2cef11064 SHA512 81749dac6ad0325d35e87d4197fb19c5b372c02dfdd95959544b6fb89ec08f63fa6e0eee4d07459c2a895f115692c485267fcc6eff111319ca8d87f18c2078f1 DIST firefox-138.0.1.source.tar.xz 632213452 BLAKE2B 071b266dacd3bc65c4f5353c2e508e2cced215651263715e66213a5887753a58a851dc0e4b64ba1d97e14c52c27cf0576df766e74680ea65c54dd3a285c28807 SHA512 bc5a8d658140c4c3db29d51134c97105a0225567d5ce14757f69594066bf6a44a13e0626cebde2b7a078bac128a14690ee06083d0306d7789de2a5e9d8394b23 +DIST firefox-138.0.3-ach.xpi 295293 BLAKE2B 8e97694abccc3829be411c73400cb3a76029aa651ed6ffa4fee1b78d25cd763c34872488d23cff15c0c74585a792137330f3d52d112ee43403c9b515269fa5e1 SHA512 e10f0129ac8e13f05f9efb2e7d040d46157d5fb775e91168dd2dc0daa9fe399e8a1f7573afbbf3d6bab094a2d776ed5e8783fb4a29c34fdb3fcfe7d1112cc34f +DIST firefox-138.0.3-af.xpi 267280 BLAKE2B 624ee2b5d22fb9cd56c3f00654fda0dae05b87ecb0809bd09a682780b74aee6c390c89c36381c9eab7f2c902f0ff0b0e92c19115d072d662caf927cd21a546a2 SHA512 1c695e624fda9590d4c352b491cb62dde60a856eebe20923990803b8bdc8f7a91b92bd114b7a79fc352b761a9da6031496d0414990c43f6ffd848564ce767631 +DIST firefox-138.0.3-an.xpi 333085 BLAKE2B e86040151edbcf73ecb3ed8bdafe3b93ea447c63189db9efda55a829e733482f2457669aab7c55cd7ca71b94202322218dc6cebda60d89dc6136f4aca95b91cc SHA512 f158074dd262dd5fa0b3195ddad666269b8b06ea87511adbad660d9b18c8b418ef9d55d2afeceacbdbae1d63fb7d4ea692f6ae65250b87247fa6e7a74df1141f +DIST firefox-138.0.3-ar.xpi 437182 BLAKE2B b7bdfe78d202fe1ac574f08c42f59e67b577538e89b4ea5f56cb51f8e80b526adc6553d4fb44be44df8ebfe0dc189525bc66ffb9fe8429f4f8d77b35e6c25127 SHA512 3922310f89844704118671d9a1ccf6559ae49e795a20e3d91d3519542eedf6256223f3805f555d52000275df8da15358d4314edce9904e5f6bfe8c00a2c299c0 +DIST firefox-138.0.3-ast.xpi 313964 BLAKE2B 7324ed8f6589c6de100d930295942adda7e108db4e6160348382ad48565e4fc1c8dff49effd3e369dd3b7f29cd0048c0ffe33e6991465dc660a663364e76bd65 SHA512 5f5b66bd29cac84d88f91fd38a24888b7320256bcbe592ae32a493faed78156fa038fc24c1f498983f1943a71d2596bc204add117a00b173ad6c596e350c71bf +DIST firefox-138.0.3-az.xpi 319119 BLAKE2B 10b83339675c4878c658f5244e723adea732f3cc049a35fc4eef575c66fecbcd58426a390f32e32411e6a0f38a7e24b30fe215336ded3720dc4ec5c6a7d262f4 SHA512 bbb387a0d66340fcc62bafd498af58ed008bf9e8b7c59262afc699e752068d205d36b3cc9358c2c7ee5574fa275d1c20072c5849289aa722d37442881147ed6d +DIST firefox-138.0.3-be.xpi 515960 BLAKE2B 1794a74798d41a22d8d5045764f400d35567b3eaad0fb19833fe2a64e781947611cd6c2c2248fe86e35be43cfdbb11bcc7e1f4865d9bda12e446151255d144e0 SHA512 8722be1a037876f11e65be47810c93558f66a4f877b664868ae47bd9c73e488ba8e4f7bf718cfae489f05646305dead0d0063fa7b839e6b9b8f4e0e78252f8ca +DIST firefox-138.0.3-bg.xpi 448973 BLAKE2B 809e00084568adb2bb1ac5cec960f8a61e67dce13a539dcfe2f4c4cc6b0688e1820dfa1eb5d2cc9fb3689ee74b633698325d85e51144fb7296286b89dea13bba SHA512 520e05f8a2775d46ff7b1fc526c6d69b8099952227670ec2865e1bb5b6d9d64cfe3c0f701f06b116588d0782b974e2cdf6ece7cdb24e7ebe4de408db61c9f4a5 +DIST firefox-138.0.3-bn.xpi 413608 BLAKE2B b6f897311285b05a519ec902a927d601f622c2f2aaf8daf6fb48567f2d0020786290c9a48bdfde5b3fc7199d1ed09ddeba5fec102cf86ae4fc84b853698cadb1 SHA512 c47e8aad14023173983700e1baac97e069513731cd4cbf9a86aa94e60ac3a6e31ca17798a91ffe26c521a3e35251e7a790cdc34098793d1a425b127a3b3d4e66 +DIST firefox-138.0.3-br.xpi 394161 BLAKE2B b8b7a76e1ed3332d0cfc65c0cc36e8dbc400a9dc0b274b42c823d35ca3f5cea49c32018f8d41a34465e419ce8f9b02afd2a497aac1c7e6aab453396205d271b7 SHA512 d7df45f6e7057c1c613dff8252d0a1ee3d88732606f276336a3e3260183a377376b82d3d27cbbb7d3e9b30a92366d5d5a6e7d3b010dcc6cc870f746f46104ec8 +DIST firefox-138.0.3-bs.xpi 364822 BLAKE2B ff70df2bc914e85192c524748f83ea879ed4d3777b74b7664503ca3c336b09ad63f59f8ca854afb6c2ba9f2ff6c19be2322f9cb08e2181e05177eeb8888eaadf SHA512 a663a422ff3b2df26a3c5c9947cab1a2e1b6438b8986d29ba65a598c035636728091d76dbeefd04f28ea8d9fd78bda733ea471f318552068cb013c7a5a0195d6 +DIST firefox-138.0.3-ca-valencia.xpi 359047 BLAKE2B 66b87e17912b39d3690eea3c75eaa210af379ee9455601b1a8e3737cf76b336e7e38495e4f1842ae01168df687d09c9d73b4d70b3d984eae63b446f7ebf08d5a SHA512 f2bf33275d2ba5510b34a43e70d74ec51cf022dbcf17c645b664e12ef9dfd7d2845219512f56c50f74ef3b4bcb843ec22225a744f8cf6d8e6549e26c75e6925e +DIST firefox-138.0.3-ca.xpi 402154 BLAKE2B 67c2a72950165fa70a21295f1d76d931ae3d033c12871bba974daf0c2c98a7c82f30149a922aa92d14394dfad9302a8e7bf0015051a3ee4db196525d7ecbf97a SHA512 f0ecfddb6be9e428fc043ac95d70a080684f519b6237fe3553742c2b8b04177348398c0d451b5accf1070018b436eb5f3166e6671f0b40aafb6058cf2c3a4687 +DIST firefox-138.0.3-cak.xpi 392709 BLAKE2B 3e27fd7e2ac13eeb740acec2b8b70d618dfc27067f297bccfd73c9bee4c8915e65facd383ed6b5212effc3a851be9f9d6cbba05a1b3e1c644fb8fe8f91b3ef4e SHA512 59be73236de0e354712a5581146b698e0f34b8064792834427996e7f3b0ac41646e024658a8540c39d7d9c97c766db98723806c81c2af36c13a35b8c3524b9ae +DIST firefox-138.0.3-cs.xpi 475078 BLAKE2B 111aa354568cd2044fdc254803398a50ca7452d14c220b4715122925c02aa21548ee5793f9cf4c9c67ead6ccbb2c8de55268e47d0d947be8fa3821a2075a0dae SHA512 b6e7d143c8d80f79dc6a2109969bfcf940a5de3026b0c6f7183b5492ac0baf09ad3b5660daa96fa6f5b38ede66b14e747c01c834e04c5949b443da958acff077 +DIST firefox-138.0.3-cy.xpi 441398 BLAKE2B 61168d8cbd5c8a6e076a70e9fe757d31cf2b36d67aa2dde287b4ede8b51958c42cce18f74a8c2a3a6b93bb2fa5f828cb2d46623ffdc5cdd7d91a5655d46292ed SHA512 a51f1a37ec1b6c05b27cb83ceec136e5972e70e2b508048190c58f7320e95715027604937c4abc75b1b138cfb54c6dbbbb416ecee940ed6956fc95da259f37a3 +DIST firefox-138.0.3-da.xpi 430743 BLAKE2B c76cb1e738cb8c2d7600bbbe755e535a62e2a68b20ac719b9a6785d46339a355ec2f8074ffba8dc8de55edea58699b85bae798dbc5d973fd62177658437bbc22 SHA512 965f8ce8932ed7c8e4e1aa5eb149dafc5cd4ae5f14f0a11cc3acb5c19b6b0e69fd4cef9fd1272623903eb88ce92215a58f07a0393d31cd465498f008b4b3c96c +DIST firefox-138.0.3-de.xpi 452223 BLAKE2B 0cafbfb48ac9c4f67a6bde9a8fd2f7ece830c26d670e194a50968683b99572d688edd3249950082ef972d39e5a721282959b5d2bcc99b55570d2bdff10b00241 SHA512 4e094e70ae48e0aa513966bba59ec6ab7be469baa2ad29fb609fc0b6f8601f29fc92830e8a820c2ad9dafda202e9ffb5bed41eca79f5d90b8163943502fe02ad +DIST firefox-138.0.3-dsb.xpi 465486 BLAKE2B e7ebde7c448d935571718174dd75eb1c7f58f5a64950dafcfc7d1e248cf5c5fd9a593418efeb901f2768393663fb737e8b0f4f38fb6b310edc92797939ee53de SHA512 fbc0ea2ab7d132d5d261539ace098aebe9642c1f697c9133f36339aaaa9bbd31ece00449909d738eeb03a7fd905e1a132d6a55d7746deb6882619e2773c816e9 +DIST firefox-138.0.3-el.xpi 536307 BLAKE2B c83089522746810eb2583e531c755661c5f2d16d098ee78584355487da368e85aead29635c231d1bfdabfa8f70ebd2f1cee148f94a22cae678fc074c6c396bdb SHA512 8288e608827e16e7803f97504cbe664ef3575c713cd76d9ae0345fdd0962079d2a6206acbfb69fdaeb002ef6e8c91c0dfc1e66da6f69c7eb1f100ecd325f1f6b +DIST firefox-138.0.3-en-CA.xpi 407816 BLAKE2B 7dae60f580133f7050b2e79e56503b4eb4bcf1deeedadae50a13bea60a18d1a1a79a2036072068cea32e05a329dc530c919e77095c688ec1a44ad108c08bfafe SHA512 c52aae2259a2f174f1c86733e13fb7b9dcf1b15d6a31a7924537e24ea8c2e7a36550925a932201b7955c2715930d589e448db1351414219ece22cb679e822726 +DIST firefox-138.0.3-en-GB.xpi 411222 BLAKE2B 6b7ae91b7a146e929b9627323d76086c6a1c7c28fc69dd1ca8faeae21289af924d412b148ebad462e602afac7d2f6c5ed669623ff16e088bce2ad268fbdea1e0 SHA512 cc038d16d35ab59277cc33d55d793c1929e42b0ae8d60efabdd3114f0fe5187d68824b376f7076c2e4b69acd1c9d06c102d695b4997c91fab0a1ca6fe0ce207b +DIST firefox-138.0.3-eo.xpi 433073 BLAKE2B 7a3863cff4f87287b48ffb4e8594e9425f4457f90f1b884c43a80678531c9c086a8d16fa9d0f3ffbd8725b9acfdf3598cb8957dcefd390fc1441bd07ee0a8125 SHA512 956b44d4932ac774c174636679e0cea05d94ac00a446b0f2420a1b9dd936059edfc14c850b104d7180d68a8ea78cf9d9647e9798b52390895c61c7a75fddeffb +DIST firefox-138.0.3-es-AR.xpi 445144 BLAKE2B c0e5b41efd6c25f3f9eec04999dfdeb94d0cb7d8587d12febda46d2c7b2d41b8064d5e20ba1e0823001b4f7ddbbc69d91feae2233f8589f9cab0c5247a58ca62 SHA512 ebc4e85e494d8cd096d154c32cf6296b479d6f9fbdb87275b0842a1241fa91a97faede9e9c54b856ca31e7814b7d75c08d4d74d8faa6b0a78739dabe2f721dbf +DIST firefox-138.0.3-es-CL.xpi 445850 BLAKE2B 6655df4eb4f921cf0354bf596cf0e7aead0548fd0d58a8229ad246a6b1773fcf3820e0859d080816dc91eaa84a9882552f6de4bb406ced5dc4b75566ccca8382 SHA512 ab8e003b8ca367428046260a69b38dbb576ce9df027b9ec962ae60cb3688224f0db2d0d4267b69452020ed138a60357067297910e3dfab9daf378b9bc16b952b +DIST firefox-138.0.3-es-ES.xpi 446611 BLAKE2B fd7fecedcf8e9ea2dd0348f814230e4b85c777f86b06fcb603469ec5a762f56e14a8643683c3b6f4ebf2c86d5cf7d909b69dc9d7117317c14f63adbdbee20c82 SHA512 dfa484c9c694f8f73184d3227d4f3e9a4e160d6c1f82ed35aeaff1d891b6f0962108267c48d381117bea8745d0f3f5974c72d36bd37709c283eb948c47432434 +DIST firefox-138.0.3-es-MX.xpi 442569 BLAKE2B fc032ef61f0882c14964c6210ce8ea16bc527f47292643019fd2795d1d22269160768b542a9e9fabae37ef173ed5b629cd9ad27c65b5df3d3db6444c435220ff SHA512 1ef4cc781abf1865778dcc4d76fd2d4b69c09f28cc034876c0875539779710fa3b4431fa54e82154bd8023be2fedcf75c54aa9503a66b9d85740ac7cafaeee48 +DIST firefox-138.0.3-et.xpi 359646 BLAKE2B 4c35b3d2936b90ea0ab89ea0b2b0e4bf927582111b4cc08fe82e452976aa09d98885cb4400b4efe10bac539792f8d36ba0e6540a4613ed778558291521e0a4ec SHA512 ec1b5ff32fecabaca561a1b6f1098a54c216c53ea216047460aa74117da4933dd6b944a670e9b80a24254c473f454030b457b6cd0953a030061e4cf6bd3f2193 +DIST firefox-138.0.3-eu.xpi 413925 BLAKE2B 62422e6b34a8e826b208a64ac24a5994af854aaabe894ccdb38a713e2d1e4e105660a48614c9fbc6151767c8eda90ca0e97260ca4b580b5ea153c73c25a26d1f SHA512 e21ec669666cc2c5c93f9edc5cf128877457dd496dc836af85adebd49b752cd4ecb8ef59fcd85ebe8d02bf47f00a2558eb1dd9c33705aaf4ef53a71d2db836f4 +DIST firefox-138.0.3-fa.xpi 412997 BLAKE2B d031a3fdcd8c2c70e83bf2ffd99a25b3956a6d12f3803a51420dcac78eae50e4debcb792a935153e9146024d79ca4dbc3591916251f88fc37c7b1375ce8ad226 SHA512 0206c911dfe5fdc3ac584265223c9e7ed2df5f2da1781c4330fd2e3d831147f02eec7bcf348e6598af70b89e8c291d811d56c50f79d83315bf286e8c239c8cc2 +DIST firefox-138.0.3-ff.xpi 311293 BLAKE2B ccdb478fba95a28bfbe344e604dcd1a30b6ba8e8d3ccfeb89fc2741308d18c78014c9f90948216e47d7036fffbdc63756ee5d45d5becc86525f7f352ed110dcb SHA512 2797e2a630a7ca324ef3648e4c3f3d106f651c681965993f75e89ca43a53b6b300e6db1e193f01558baf575b2e584a9aff13a417b3c7cc1b132f3cb85237a7c0 +DIST firefox-138.0.3-fi.xpi 427747 BLAKE2B 08696ad73f75f1a8f9ceca7d719e50a7b7e8336cdec7aba2f5217ee66d9a68896bfbc6a5f31b1f7c1cba4bce3f04c3013e4068bb004a42218999abdc6582939d SHA512 908cc6f5a7bf42b5a10b18353f0da822c4ee390b807d8694a17b430254549dc8ed27524df109f8e7306b2772ed867a1c03880f2fe2019041eed63ada5844bae8 +DIST firefox-138.0.3-fr.xpi 457842 BLAKE2B f32ada3c183877b415a6ae4ffb9d9b3629298a10f69cb1301864f3167d8094edf6fe2d9bec3974d423d3702660c94b7015df02d9f814459540c8e5472d3bd936 SHA512 8c661b297f31617a6623800151e1bed71e515cad2b6384e5d5d6033ebde3aa8d969a16c648f3dbc1b689f817875996bd11a7d6e35339c344b74164e176ef1196 +DIST firefox-138.0.3-fur.xpi 451289 BLAKE2B 46b18b1abe8b6e8eb7973871c2965f4332de210370963e5c8a1a0bd3997ab39dd9865f5b1dc1a39863842a40604885be9191a807b0762c6f0e7f01a483f01f6e SHA512 cbed9576563d28bbd53097a22846fe2f8b09d2c87218c2ecc068f0f6a3601286333500bfc94c7420f868734702a231027aca13d9b31fd9d69efdec661f42fcf7 +DIST firefox-138.0.3-fy-NL.xpi 441754 BLAKE2B 1e67e02cde2c20d75bdde3f81c2ba810ae3533fa9aa04a019d94c5bd474c06616b25cc10229a4d0114385e4e1b4ea8086a0a787afaf27137a91694610e59eff7 SHA512 71b2a09e2feb4e2ca0013ec5607b2350c0be7073257685a9edd31c9316da6c19ffb918d94eafff3bd6f346678b9cf26e61a6c68995162b0a867db60d543d4f50 +DIST firefox-138.0.3-ga-IE.xpi 316381 BLAKE2B 5d7c5e76dd24ba0ca2dbb396fb491a5e429aeba7763f5dd832bbad7df37b55b8d09f04ab67e2f76b2c33df5fe9273f7fcc599123b0eff9eb7b7bc15963e509f7 SHA512 2e74ee40adae42832f240058423e08b4a9ed6fa24bffc9909798b3739e60448612ba77133ae838d133dfbe3ab70ab018e73f21852468694816c1efe822811ceb +DIST firefox-138.0.3-gd.xpi 401179 BLAKE2B d0eb6d17a5ea739a2cc13e33fa4a5f2b5d8da99a4c35d692c24f572268e7e9c7b9fc9b858f474d7473a2555a2b30bd81cfd01871ce260dd8fa038c5530d908b4 SHA512 ca04d3a6702941ec529446e662960b4cf49079edd8bb44bae80d3d1593410f8b31fb43e75dfc7e543b727e32c19a4e60d672e92295b69004de15b59ba0830907 +DIST firefox-138.0.3-gl.xpi 405190 BLAKE2B 6fd64301f3b437bb349a8782fb8742b2f68adf4bd6ab7af933c5ebe02c8bd420f0480588657b4c03a54e0bdf3ca05aa2ba869f8a99645837da331c2176a6c93f SHA512 39f92bbb24daeec4c66b44e8282ccedbee3032dec620dc96c594444dd58b6b147b9ff63b1a96965cef7c37724b92fa5e1f2e2c17a642a95046dcde0051ea000c +DIST firefox-138.0.3-gn.xpi 448236 BLAKE2B 79f009e4a736163a872e433bd7fc669aec56012bc52c895565e1008b835a5d0b0d9329161a173b25da3223a126df8278eb724ab68929e04b6eb52f70a4aaa9f8 SHA512 e23d5f5a566f3b51b6979cdd7228dce300c5f8ab778ef6fd3f621487cd4136e20341366b2e607654c1651990f5e26c34fe9f75c19b96158152a8f9b3f8fe1f39 +DIST firefox-138.0.3-gu-IN.xpi 359745 BLAKE2B 458ae5c42d63ea594febe2fd0e8628631205fe1b1a5dd6fb2f14c6aa10444e76e35d08c4f6b3ac850d25e0016b5fa18f27967d17d78cac3e82c9b4cb5b2f97b5 SHA512 fa36c5a307745d558aa160537d77aaa57995bce4919680d5003aad4b5ed3dc72bd1aee8b6a06ed2177ec32ebd5ea4d72a1bbe09ff34bc629fc44c6553abcb7fc +DIST firefox-138.0.3-he.xpi 443180 BLAKE2B 79700e6bdffef9ab03e66b551f1f9a6c4f1bff2483c289e195e44edf3bd69e49ad236cffc18149c8b1392c61211b5638bb265dd94d5cfa6cab7ecf6fb19896c0 SHA512 3caf4f01663878b3933069a325aaa6b2a6f2a549bde049d70a4c2429a2917db39154cd580693859896856405e4b8a1c627ce11d57f017eab9a8510dc8539657a +DIST firefox-138.0.3-hi-IN.xpi 378228 BLAKE2B 1791f2b30cc088b80dcdd996f674cbe6eca4174f3ecd391e76910c7bf82b6d3c865878ee5def13693d6724bbfd41a0717ca6351ae4dda6e91b6c57a33c4cae79 SHA512 2462c75b6cc1c5a8a4ad98dea76ed503209ebd1fad059cb81feb6bc225c8194e2361210f920bb0d523d1b96ea88cf45d7abdd5141b36c31675fca0cb88cbeb7d +DIST firefox-138.0.3-hr.xpi 429580 BLAKE2B d531511bb4861d86591d5aead03f55edc08bedccde70d45efc55c30915533f0c17853c71f40883467fdd23da515b558dd222cfe9337cfb12059a0eca05c164f5 SHA512 8322ad492d92354154c13dfeafb4a867dda7c862cddeafea7134c82ee8c3cd223c97cb4f4986b813d8c02133e0abde172e65d953288f89112572dd8c2975c41e +DIST firefox-138.0.3-hsb.xpi 462119 BLAKE2B 52bd3c3c2c0607a64ce7a803df4e804c48383a284c83cd82c4a5f45795b04c53e95fe325b9991e0d4dcd3cec41e29855ef3c339b1f33f3199192acdc7d817a71 SHA512 8e102d6db3b1922959e2d035cc3e9a9a5bf7ee32eee76fcb3afe778e79bd986c8b4df4e035542c2bc727a61d78a5fc973d35c023e6193b1b692da662e577bbf7 +DIST firefox-138.0.3-hu.xpi 465924 BLAKE2B 02a79c87e7e22e02d479101b2c02d7a1482b660d941e91cea2a56e0db2a48424f5fc7dae11eeab8700b77ceaf94b2c296cf1dde05c242c58cd7e9ff9a407f2bc SHA512 a2792515bcc395a8c79459b8d4ddf9297fd5a702b76f05ba3c5b374181e66b1955d209a30c617f17d0df4e8a733ac0d2f5dffca6f313fcd785113f507fd78588 +DIST firefox-138.0.3-hy-AM.xpi 453819 BLAKE2B f57ba0cc7fc1cc07aa6e40d1421edd52aa1c6e5862d9f77cd1a9e356c419ee2b78ca1a8a6324bda934a1a3a228537eb98db693fbb25c6a1477c32f386322e1fb SHA512 5acfa722c719b29bc24a060f3cc62c4cdbac23201561636efa2b61a38379bc02340aab0e550cf6817637f5e54087e65eb45d62956067dda42ce289d0e36bffdf +DIST firefox-138.0.3-ia.xpi 429684 BLAKE2B cd02e0ad92fd8170b732d5d822b72225e4f7b29a43f16c5e18bca481fb139650787bd722a791a0c116664665781f3ebded212b6b8a456f48decb549b8b967376 SHA512 28771881c40d1068746dc46f4014853b10fb5968c9e38b6e6a0494f10db2ccdfaa6d6ce8c8b3954e8ca87334d4218810b060a4e3c5d7d5811de00c02c3c5a84f +DIST firefox-138.0.3-id.xpi 424279 BLAKE2B 7877de47aadd1e877bea92e35cb131aedd755ddbdd3a866fb8be2e3e9766ae41b8e58448c67fc08a094a7d2d173e439aab3dcfa057aeaa7e0d72f471fc0faf8a SHA512 2de667db7a84fb7c2c3a539eb629b2fa0180383ecd0b05023e08a0421493a3e122d389fe9c9a6a0d958d0c500940820deaf88624eb74ce1e5c8bc5cf5de70e94 +DIST firefox-138.0.3-is.xpi 431996 BLAKE2B a2571b49cd84bb591668c844ed558ef4233a247efcf60cf3a2b97d79c02fbc522a167cc2674d284854e9e73a9945c2ea1c53c408be99af642b91cd92493c7050 SHA512 119190c3e4176905b423ab8ae562e648481ca3e79215758e4a5d1998da185f5a236da5b12d15fc67d717e8cbde75f2d216ce3916cc299c7804be447d99690127 +DIST firefox-138.0.3-it.xpi 440389 BLAKE2B 31386fec8f009f2d53665a7c0649f3480b19837bdf942c8b3cf2b6906d76c38b1761776ec49555c18ff419b654ff8ffa27c473cd40f1028f988b53013891bfa5 SHA512 97823141c8caf1ef19c3a45c27ebacd8956a3c721954246c295ed011a109fc10a2db0ae59235a50b7a977e3f49142bda38f71ab12e787cfe5ab9b83c492af9fb +DIST firefox-138.0.3-ja.xpi 480876 BLAKE2B d5024cbf59f45d935a80fa5bfc8421a76c349ce099990b526f9a1a49d12124b00803aca4200878c1921d29331ea23196e0725ddad56fc98d5cc3318d264ba59e SHA512 2973a3ff92f49ce91b4bae94df55f62c93f98b7b855e604921266361df67256967d8440795ce5695b94854ecdadb2d104bd8bcb316d6944deb86470455a2f895 +DIST firefox-138.0.3-ka.xpi 494231 BLAKE2B a76e1dc06d9f3c3697f8a30a0ae8b6ffd55ab8e49c49592bbcfe4d3d27007e503c60f2d7983d04540598c85535f297447e738f9458783a4ece26982968afde25 SHA512 2e5766f8e6312b6a86133e092c8fcfb48bf5925edf94a61661bfb3e0118f573af33f770915fcfd033d9433ea2ae30e1869357d93d41e62221ed5cb3f2c1e5685 +DIST firefox-138.0.3-kab.xpi 413553 BLAKE2B 30e1594fb8dc10ebc033ea71c98b422ea8303b9c6ec6b5463119550e4ac775f60e7c79307d5a275bed9254b547d5fb95a20c7542eef029977f4cf9818c2d5b0c SHA512 23bb22fe4bafc717d3cefa9ea113dd22336070880a68899c7eb62173de68da6f4ce2ea624d736cffa0e0baf49c97e1733240c65609de83614651652309cbf1a0 +DIST firefox-138.0.3-kk.xpi 501966 BLAKE2B 081f591613f54b993c6000bda0986f47c00b5b5cc280d2f9cf0319c2795a33194936b2ae1cd7ce81048915f0e738c7492e8fe47dcb2fa9269721a964e411ca16 SHA512 e9bd1fdb6904cd5b7edb74aeb058eb1409d616da3a02051a668cb4ad5826add6cc9d4da85aa1272201896c7619e6f8e5d300f4d2c92bba8a7eda9625d77e9bb8 +DIST firefox-138.0.3-km.xpi 349519 BLAKE2B 243f36ea6b58e45a194c07dce3e21519ac254abf77bc7ada30427565f0808d9c498c4b770da086a1edd2c0058caf078d48434a574fb7d7f2d50d64b48bf631ac SHA512 2dbdc2c1234fa9961f976ef2e5b0e895ccb44c5c4c6178c5634a8d2f158249e03e5ef8f63068f59fbccc1452ad53db7e2851741c7912445e749621ca586efe70 +DIST firefox-138.0.3-kn.xpi 332439 BLAKE2B 93718bef027522a89c770bcfe50257ed7a4f35a7d7717118ba6dcf02d885f3c693b2ff9b50a75ac5055ddd91e592e7d3648d37e82af132db83f81884d52bf952 SHA512 2db6b711afea495d0e57b75369e5e2fa57d522cced0ea0ba3db56d999e484cf9bf3a7e3c0928d4f6fb44dc0c53ddc5f593dd278ca8c1a5d7c20ec9eaad12bcf8 +DIST firefox-138.0.3-ko.xpi 467007 BLAKE2B a6ecad30ad47cb5b83754d6329b82b86fdd9d492e334c5d86fcc8d8663a015e99c50af9e9ab77453898b9aafab2e90ce019031b01a88b332925948d628e073bd SHA512 5f0ab58c513a7bdca4a7ea2ff823478a5e33815f3f9fa0bbe1c049366b7ad66466b53851f19aeb8e1132520ab2bdd00d2f6ecd2238876ae2449ef495ae770950 +DIST firefox-138.0.3-lij.xpi 319041 BLAKE2B 785947bf6461bca00fb7c780fc0939883aad157fc5242ff768f41f3aceb78f1a9b7836b6c8d6b7688c7dbc44dfba0bd81e85d7fe878f83cf085e9ffbaf42b78b SHA512 ec044465dc1bdecc07e1965d6d569706fb115eae638d34ee71085059397e18b0c15143e45a8216602d59eec340fe74b52e4235b591f74923b98ed3f44228fd00 +DIST firefox-138.0.3-lt.xpi 380931 BLAKE2B 452a400c5d87b45d9e81679768991d7ec8752287f7500a48ebcc989f4e758151577414278a0fa3bcf7648a273d3703b4cebfa9af48d63501f9b27143f79380df SHA512 428baa9fbf0df87e9721a161bf58023ea7d1900ab7180fedfaa9ecef441e9d0dfe6ae046cbf73b6f5ec30642a53e58ce6b2005fad76478c98377b184a391daf5 +DIST firefox-138.0.3-lv.xpi 389503 BLAKE2B af5ef675a7aadfe4067d1bf4ede4ee59f9c6b4f8803d244697e5296f85d0ecd492e707f72860cb68679a1897f63bc3b0f28576c6ec9f0d8397c78f0d1d501eec SHA512 e600af88d1e444c7cc250027da9919ef06149781d8041c4f6b6ace1cfbaa31daa1100d2f1cc7ce90659666ab563c301fe14c46f9eb7b8b88087a4ea3a2394941 +DIST firefox-138.0.3-mk.xpi 317489 BLAKE2B 65a6a03c6697480292cd0a05fcd2beb43b32f1f5bd11eb9943e4b6c44afb7e464ff42b5fcb77256f90849f19db04ee477ce224ae2b18f4b4e3f52eda693fa8eb SHA512 86df07029bb1e074db328c73b59fdf9b09b06844996eed09408bc706ccc3918078a6de9aacb6157c0b54024fc21fc122ab8a79f013fe88ea7e03baa6d073e3a7 +DIST firefox-138.0.3-mr.xpi 356925 BLAKE2B 8f884303d1524fa6ada6a6523874ebadd09d2c402c249889066b4339ffb913231213f3ce3a582d4d7e2fe2793989b139c8223d13172a8db9eee5c9be15429e86 SHA512 0c7e8b56567bcfbdce5aaab78554f1fc0b05ca57cfc2df7a894e3686fe06b15999c537293cfda16e338b435450e843a0291d14debe1a658a8637e8b2d6c3e4db +DIST firefox-138.0.3-ms.xpi 296034 BLAKE2B ed1bf5daaf4f68a20295e85b9690200d786505cdbe59f7bc89c66c1bbabef96b907073d1d6f7fd64597d97ce02fd8291c1c2275dcab103aa7670ddb94792f151 SHA512 07c923491d7904025ffeb735da0211f8dd1a147083ce496bad57fa8ec3606b0b9a09bb924a090e7ca579fdf54474d9673f69f9a65b74b85ed8488ca9de6a41d6 +DIST firefox-138.0.3-my.xpi 343213 BLAKE2B ef7dbb1646c2b1c38fce7d33119301401903d3c3f657ac939eafcec3770412012981e7242afd2f0715b9a6f1f6123d103a73ed3e41e5183af778dd5053edc7fb SHA512 daedd853fc474c97720931261c8a1a293d43a7a1da072c8d6cf671c0ed48744fba7c423430bd3525c744a99d10980808ce626b6bc03c3a5cd54116436f0ea5c9 +DIST firefox-138.0.3-nb-NO.xpi 422062 BLAKE2B 1e235e181f84ffce71345c6573d4a96508dfc419ae55815f2c67768075482130d123c3e45a56b7e05095f9664dd35c36ef4e034d1b6e47ccaffd47e617da7f6e SHA512 9104a74c86b8742d3d0619ef01a5c8c9728691bc9363c0dd4e60aff1c23b4a3749d58d5ea472706d8d5ebbe33d158db7399a731219a73b8203d8ad1b7c1d4a96 +DIST firefox-138.0.3-ne-NP.xpi 350320 BLAKE2B e427ddc04e5901c709984d515a03dd0e071ee47d56bac3a7130de8c3af4d7557788961bb43d973084fc83726cec4d32daed2a05792b3397d4c7a48b7abb5b846 SHA512 677f41a5fce42c20891ecccaf9c509769b0e1bb4af1589be582459a52168f6b0ad04f0432208d414b3567d442a6e404ca25ca8a08dc1d03e6c8d6f1191d8a133 +DIST firefox-138.0.3-nl.xpi 435790 BLAKE2B 0b941b7b71bac4c933b7f64d5ac423a3594bf453ddd9ce9fabb20e49e0fc04fc48a4d87ea35d7a2a6916cf0a4e921437fc7b0d765d781e5e52060bc6bdc665bb SHA512 f3882c6b50e4daf90bdbcab0705110268fa5981cb37497818bb9a3f849a4367e7b0db855824973b847153349bb4a01b30b22e14db4913518fda9ce27733339b4 +DIST firefox-138.0.3-nn-NO.xpi 428375 BLAKE2B 19c575dcce36436248dfdba8c11345810c9e12f575a2ccd07d1ff37e776e3a3459e0df73b6a04c11da12921e1c57c42f6fa67a17b154448b6ea56b75d1014bc1 SHA512 052060581a5025f985ce0bb9690c15bb72a321aa743992e29176c2abbdb4820c2afa9b236ea95f646afea8a1ff5f636d2df0b7ceb44bc4765deb119b4252c525 +DIST firefox-138.0.3-oc.xpi 414224 BLAKE2B 9327b06c3d0b7020c4ee4676ed5b21b83f46f7bac1406cff4934d612353218604fb1052ada56302a94c2867abe208bf863e7c48f323bedbef867aad5521b40ad SHA512 5d4fff36da00f91989515144e1c198421a0bad1af7e594693d922a3a6cd1425fc98668755b6a90c3b4bde1903e4e6467e150e1ada01239c6765402a6f0738354 +DIST firefox-138.0.3-pa-IN.xpi 493685 BLAKE2B b95358428859001f7c009dfc4857406389908a74ca5b7f6882e143e2008b925ac08a5aa5da8031302747ab09813662a551b7116fc72aa916df66ecc30128e1ef SHA512 e69ecb003a093f0d7cb5edcd69853d91a9c33a079eb40e7e9f24efabe19a36424418fea311cb982937558de3f72adc41ec410b6abe10bc7f2a3c605d1b9c0f40 +DIST firefox-138.0.3-pl.xpi 452933 BLAKE2B 2b7c0408a459581a08452c13fe1f90b84092f57f46e3374c57f21ce987b1b2900e68f419070cf95d8402cf28c8f7c1785bba0448e96cb61a074345f3af009d90 SHA512 3b678af162afe0447eab760a8e0fb665663fae1affa88e1b7ef10c1b3a21a581d0f58a9c37259005b70422729ea819252ba39df4dfe4659a7880c5ed4e795094 +DIST firefox-138.0.3-pt-BR.xpi 440312 BLAKE2B 67e220264a6c07c6039b1ccb65c96bd0139c1433f8a210383fdf3c0db67245ebe612ebf59a8b5e9e367d65c8b8cca0b2e4e4ec97e65f612ed8c7dff386dbae74 SHA512 5c11fe553b2ab5f6c6dac0e873280cf33b7943fa15d970ef1d2fa56f4399fd934de19c2b4ad003e06a6345246330ff0b02c007f11a6cbde1af037838f95114b5 +DIST firefox-138.0.3-pt-PT.xpi 446051 BLAKE2B 19f224f08016ed06ffc5c8e72b6739f6f509ff393b6870f20c868d4be0f0ed17f40e3f106dbbcc51df081b28475926984e2c8a677b91a970a8c567dc6a132057 SHA512 8d2dea82ff8cf3a830f497b730531c44b16a3b7c56f181d23620c861dd1e5ca30fd9550c0d5415b36b905d6fe4f13750d9bbeee983fe646acb2bb9a290fcbb0f +DIST firefox-138.0.3-rm.xpi 439692 BLAKE2B d26d1825e0a07bbac222a442cd8e4394ba89ba7f4c74958a6e3620e982cda18bfd15c3b0f84aa9b06d37d9f11c571afe33ec4ee575a215e3967de7412caa86d2 SHA512 80d348fee3db42a61280c7a982682de99a7327cd13583a9910558d4794cbc46a48c8fdf3206dc788e6fb55bede702fc56b336f7002c992a32e306f10cb29dbee +DIST firefox-138.0.3-ro.xpi 366327 BLAKE2B faf83a0ca08b8ff7b1a8d9d591a93eb1e5410272932bb3a9ea150e7bb07c0a45a4017f1c8d48478cb00caf24224ba94d082292c622a81a3584a56b61be1f5296 SHA512 4065ca1f5a4576f01054748af7e7607d33198dc59c40211d384656b76e6eddf0ba7deac679d3fba34fb8acc9b53d783fe304d5c8c18cccd51532a5a89e64c606 +DIST firefox-138.0.3-ru.xpi 524408 BLAKE2B 2870e005c5cc26d80de98a1fb8ba477eea929e2799203cc2c1924991f754ef044eaa2a642ecd1cc7d4f42753f68792c094cff07a0bb176e0025594d2d7fff884 SHA512 7d126ff1ab434032ee94abd9207d79a76d34beb9bbff81d2545ef88c2336b4714f0a84569c27c8ab9e58fb8019aa83eb437be194f962f05d3b767c1e4f01a84e +DIST firefox-138.0.3-sc.xpi 406152 BLAKE2B 6cd59bf18c9d91601c5c460b82069bb73d7c0f3d7b810aed4091ae8e1587fdc042443726e54b57da563ee550af46d4af65e63a88076d6ebcbfe3aed97dff42ad SHA512 ac45e6308bc65eeaef0dc4d9770cd7d35258309a893cc424cef517461f5e6b809aa7e016d39a00a762c5b8c910ae059e7319f483e1c676c4418002f8bd114941 +DIST firefox-138.0.3-sco.xpi 324596 BLAKE2B b44232f1267188735b2a261b6bf797f4248cd2542079cbccd587b01c9273e77cb6e7a2a40384306a575cb393d6a0515e77f2ea19aedf107f60e092d35ddc96ee SHA512 8249da8d5782f031acfd5604cd64254f41126f5b561d84a8ef432b4b88e7ae896d35cdd2e7db0ada66c42e58469d3d5a0416be01bf97d1806977b5f092d980e2 +DIST firefox-138.0.3-si.xpi 414463 BLAKE2B bf039dbe71eec5ae112dba75a22981b7b4a549b406d4528fcd22ca707b4f6f9312f25d623a56aa71f395ffba590918db4278ba897bcee12d265684a2eb12c4e4 SHA512 bc6135c1110ebccf877d3d3508d8cc40b841355a0a88f47a385837cdbfb53287a725bd71d24ad2215136c9eadcfa3ffa6617fda1877eb2728d9f69639a35e802 +DIST firefox-138.0.3-sk.xpi 467394 BLAKE2B ac4f13c6ce4d584a59504ab343de2d8a77724c2cbe46e516f5a3239c0aa19786e311d2521d6f830cdecbb9100feb01fea225879051ec5290a9beec405dc49d16 SHA512 8a961788e7155324b8e396e49d73218cbcec8a09aec92e32700b40ef32b6c2c9783661cbbc3e927037bf559901ccfc4f76db2976cc806840d3ba0b873f194391 +DIST firefox-138.0.3-skr.xpi 492075 BLAKE2B 26932631c6067c45a1d50012ad83e91eb9e64cfc598099f727f2f8038b8d39a30b95b3b2c4f18e6a4730366b2160e379700993fbb46dabbf4394ec1229fb8fc7 SHA512 a376f7d4674dbc6c958a706158fc569d9dfd0d8f5a2fffe0a6a826fe9a157a511891a156e643b9a6984f29802d40d686d4673a308e8d4d9522baf37e87d9e681 +DIST firefox-138.0.3-sl.xpi 439504 BLAKE2B f53c25b67f6add547c09f1d53afd9b880b821bd8414b7cf759705ce303cf7a7c790cdabcba4828c94451935081cd3d81dc8c323d09a1a574420f07be9b019e52 SHA512 7e4d750b2b045c4d8f0b4cbcbb92007fd1d48527f6b17bf6bd3cb0077075c08c78a0796d28cc8c55bb9f24ae1c3d76bedf3b78a7dbd42f9170c8ea04e6a01eba +DIST firefox-138.0.3-son.xpi 273739 BLAKE2B 6bc40fb85d95ebee78f2c11abcf847770f4f74d66427a44b31e2f1bcfd5c6ff0d25f9f9c2e43c31f965dbd69a3b84784ab22f7bb74ccd0f8ad3babd947414f79 SHA512 a26e3e976ceba34f2dff98487c08435e29b566df71afa03ce3a36e7f818e27a11e171ae99925e492c618514b5c57a16877c7fbe09d6e42797c67ddb677f7a7eb +DIST firefox-138.0.3-sq.xpi 454745 BLAKE2B d28fc0059ea87bf5d02b0437fbf351930865087d3e662cd640a0d5e4dcf612541ee554137836e928a975aa01c47b59f94861fb53fbca45788926a6869fb67f38 SHA512 8f02a8e082005c6294cfbc7e7621fad07e4be1813d86bce040cd9f91639c1087fa80181d863091922c3e247354cf780a4e331ce88c21ab542b65016115039821 +DIST firefox-138.0.3-sr.xpi 454266 BLAKE2B aa23e9a06df9051baa5a6724e0eef5830920d56eb44ae1845975380cf62562dee4f2d0124e616faa4c644d4470c174b4381e67c216973549f3df4bdc3e324fb4 SHA512 b19e5abc1ff6a00b9975aec0f67970edfe65022b5418fe4cf7eeb0f9ad65e40d607b4f89cad3f04e0261db330bf1fcb19501d72b8e5acbf97a681ecd7016b2e1 +DIST firefox-138.0.3-sv-SE.xpi 435744 BLAKE2B e32eaaeabddcc55146790b644186553e325397eed2292e65bf98fec3773444dc442277fe4438a0f1dcf62cb09fb4990d587031d1110a3ea052724ca4eaf707c7 SHA512 7bdbfdc20efa6afe89dabf1975f5468b97c7ed05a85251b6f51a04db27d2e163bd187f61d3af997e3d3252cd9679f21c75f407452a1ef7042d59db6713e525d9 +DIST firefox-138.0.3-szl.xpi 343637 BLAKE2B ae96f45a25d8cea4454388e5a9d106080784f61c17d512a3e15f88e0fd904417daca37f063a57e4c910250a7ef527558c5982e8b055a6a520768bf359bdc5873 SHA512 2be99eb2c0cd3ccb02615a24ca6a780ac25960a957fdf8499380b95928ea85fb9dfee966c0639f3a86d465517da1fe55a595af11db2414aba14c59b33457c975 +DIST firefox-138.0.3-ta.xpi 338595 BLAKE2B 94b0f30428c057d0a6526e922c43bd2a9aa940a3b2b33fc31d48cc1664c3b1e7bdc23604d7cde0a7292ac8be78f24f8cad9f1aef5f7fc6b4965a5d7e73ba22d0 SHA512 e55aaad7450f2480a350db548afac7069868eb01422e029688a6517b122373d9bb63be974591d0238eb6463ca3ac902edc67b74ab1768894f70186b5168e1300 +DIST firefox-138.0.3-te.xpi 383672 BLAKE2B d49fbf3b5fb489fb6dd1f22e0289528a9821766d811e7678465df5cf4a59feea2ab2c48ed047797be26dda60dbdd8ddd45459d2ae165b104714b6a64a4866ebe SHA512 5d952254b418df9dcb351de4d7f927ec4aaf5098cc7bfabcb8770534fe1cc78d5d2a3d7b947764c9c1a4db1c1d61a6996779262d34daaee975224a3313ff0d15 +DIST firefox-138.0.3-th.xpi 501186 BLAKE2B 6d67d6038572816d2afd2639d0b0d0f5973036f2cce0daba5351f70dd10c9b71fd49d4b22f161f5e63790e45fa71f37db8d784c565a096403e3d21f6816d10a5 SHA512 2cb3f5323100e42474cce634ecd6f11452ef2d848b610d47b7afcf512044a854cc808e6915627959288232f2b43dd84451c0b91914883ba8ccabe5c28cd72313 +DIST firefox-138.0.3-tl.xpi 352257 BLAKE2B 8350f4cf1620ca75335573ae0e27e4b029474b51a76e64a6b348dd75f3f32e9fe4634216b250f0166e0429e7daf497ae48a44f70b89426e2e3f46964ce95c6f9 SHA512 20786bee8dcb2ab8af0f0d1253dea01699f5aaee5e56a32ee9023a89f11fdfae83639c2b8075186996ac5dccf20cc18979195faec4304172a3789553f8fc937f +DIST firefox-138.0.3-tr.xpi 448021 BLAKE2B e1ae61308009356dd1d477a881b1cbebc423cbf85745458f61c0202e9e25243ade3a3fdd3cbaeed2c249a5f0a7007173d9b6353b0f1d5063530dc48bfed5358f SHA512 0e8fec78f651034b0a05bdc5f8f7de69e54c7fb56f739058b1c19a4e04d8c0d8710dfca670550ac5e36f865a4cd4d4c9c550810d6a4e591aa748b9b16f00c75b +DIST firefox-138.0.3-trs.xpi 324163 BLAKE2B 72326721a50a119691331e0f664f75c99e57f1a0879ae57fb837fbf020617b65f6a6282f425e73838896af9af9588660531c43f345699d3dde36fb9e523b9ce1 SHA512 e47b12f9f0bbcb0751e99366f708e6beb1bd1e5aa1c939f70aaa94cace8e419af0ef43c42abe6f510746d344331465260c1cad48e33e267c9a8474a7dc3dbe1d +DIST firefox-138.0.3-uk.xpi 515442 BLAKE2B 97a0c5b32ea2d98af3d4481ea1d4cff3d2dff4169fd88e380f75150c0eb61a3c40cacc1b51b87a22c2e8f2815ffa698974f1191954c044eca4cdb2adc2257580 SHA512 219cfe8b1416cf5369dd914d02e6a2bdadf9e3e38e87dc9ee1a1a0f554ba4eca662fd697fbc89a3bad8b7ff19162ed41b5e10eaedefb534d9e9a8bdf3db0cbfb +DIST firefox-138.0.3-ur.xpi 371104 BLAKE2B fe7d78569bddeb344f4c992b35eafad3acf7ba23e73c0170652532b4c9f8108b7505c86e47238baf19603628e0350b421ff1e6d3f597f1f2e9685e72b7fb5e59 SHA512 a5fb869c2c2ace79a940a39f4dd8d522168dd18f2856546fa2a8664e5cafa3553f883cb8abff7ee313c9524d475e55a4f86ab577b154ec58e939dde5cfda2a99 +DIST firefox-138.0.3-uz.xpi 304266 BLAKE2B 923b4a8c7bbd5de2bff2e5180a6fa9841f8c11da0745579fd560532aae34be5ff98898f1e08d110801e83f2b5b9b3f868c98a8083cf5f1a879f808ae398c89aa SHA512 79829c5f0cc3fd9f82cd4ccef69f64c963c8c23200a7216b17782d790ef8cbdf6e1ba1732ad41714e4699ab0675483ed3cdf42b46b31519f6f676e9af047abb9 +DIST firefox-138.0.3-vi.xpi 468813 BLAKE2B c765ec399598f94082f5dcb28b2458fe6f61865df78144c2d093b4eb95d555a89b23fb17f10f053bafe216249428cd57363ea232168e5426d3fecdc90d41b281 SHA512 c69fb33a0c3bd437a916efe5caa0e95302274afabe341e4cc84d248ccd111a662fc9d1bd5928bf8ee0f488f1b03d8a64ccac9bc6c02e08eae975670f2e5df48f +DIST firefox-138.0.3-xh.xpi 273644 BLAKE2B f16aaf398bf34c4da1afa207b4cacbd127010c91464291c97c1f46e7b6e6d0ac37f57fd181c7f1858ea84cb4b26a2d8afdb015ff3d9e6836a58a058a017f91e7 SHA512 1193c0dc4bf086b92595200847bc4fd4030c5df973d2eb215d7f9fff93c5912acd95ba3ed8addae93a9d131332cfcfd0cdbfc11c19d2922c13ff3722239cb863 +DIST firefox-138.0.3-zh-CN.xpi 460401 BLAKE2B 39a7a7fd91fb772459f235e31f6f43a87f65c236a5f15bbe97405b9d8b587af3c0df4d746f387f43b829f60a701c7edeaf412af0d0a1056bbcc5b4e8d4fabdff SHA512 4cce498786dee0e16a559494d5196f6d9e8849b35804be82748aeba3291769a105303a34ff2ff32df82b3e0e9b6027deb4174702e85ee98ed20e3bf1ebd767c5 +DIST firefox-138.0.3-zh-TW.xpi 463417 BLAKE2B 6d59f5c8bf6d1c9dd4fe6eb01447f5afeb2f577ef4c747772aa0e4e3db2688153858e4479e66622177cdbdb30143f6e5d0a54c92f8d2d43f90d699a22378da3c SHA512 8112ebc4e5a1f146e732e8a428131f78859e4f108bc575efd377d7493d747ec76e632dacd5b9ae504ccc52d1660181502fd7b6a6fa262c12bfb38df92df9e7f6 +DIST firefox-138.0.3.source.tar.xz 632959048 BLAKE2B 3357a02fda9bd4d8cc08687ffc96b609ff6567a2892347a71b627c6aa140e653f168989a96c652b18905e414b961093bdd9e02fddf69c3cde613ac9bea6148b1 SHA512 0f1c8ee05bec465b55429c18d788856574c5b2e31d911f15f76d31c00de84d8b8681961799c4101cd1540bd228afd201a4b59fd7c9a88918695040965b9dc0f1 DIST firefox-138.0.source.tar.xz 630343992 BLAKE2B 9bd4fb552a4e853fac2c74ddfea5ffeae8ba22d3a22d0c92fbd38a44b124a1c9b3e260bee347d476c5cf5e35a88978ee6b6e66d41a05064aa50eb08b3de2488c SHA512 265eef505216f70d50ebb95a6b23983d0b70430320e7e2dcf497127890d7bbdff1c49c64790010c85b8e3fe0da5c90e95b2d44fb1adca64b1755428ccb2b91a2 DIST wasi-sdk-25.0-arm64-linux.tar.gz 115160800 BLAKE2B 1ce22aaea87d0720d40d46ebdd96508c8fb0593b53c4489022fd5a1a9afb043a26a6e162a992d73454f612f2b6ab01e17a99c189c0c8b8c2d2d68fd96fabee1b SHA512 ef4eff22c1efec4dc5ab199d09d93ee0004f9fa67b32cac0030f8b6a40def10f714391cec8e803c200995dd8bfad3ebad9ec79b4195aa6b2ea61ea47a8b9e61f DIST wasi-sdk-25.0-x86_64-linux.tar.gz 114450290 BLAKE2B 07618828d4c25d67421aa72d38fc49bbff9052b8ecfe0fa9f4207e71880e9c650f458567cfa5bd389d5f830fcfee89142a77d33c29e7bccd1da7ddba2bc47b95 SHA512 716acc4b737ad6f51c6b32c3423612c03df9a3165bde3d6e24df5c86779b8be9463f5a79e620f2fc49707275563a6c9710242caca27e1ad9dd2c69e8fce8a766 diff --git a/www-client/firefox/firefox-138.0.3.ebuild b/www-client/firefox/firefox-138.0.3.ebuild new file mode 100644 index 0000000000000..3fefd4b4a69b7 --- /dev/null +++ b/www-client/firefox/firefox-138.0.3.ebuild @@ -0,0 +1,1399 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-138-patches-02.tar.xz" +FIREFOX_LOONG_PATCHSET="firefox-138-loong-patches-01.tar.xz" + +LLVM_COMPAT=( 19 ) + +# This will also filter rust versions that don't match LLVM_COMPAT in the non-clang path; this is fine. +RUST_NEEDS_LLVM=1 + +# If not building with clang we need at least rust 1.76 +RUST_MIN_VER=1.82.0 + +PYTHON_COMPAT=( python3_{10..13} ) +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=25.0 +WASI_SDK_LLVM_VER=19 + +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.org/firefox https://www.mozilla.org/firefox/enterprise/" + SLOT="esr" +else + HOMEPAGE="https://www.mozilla.org/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 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 sndio selinux" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-jpeg +system-libevent" +IUSE+=" +system-libvpx system-png +system-webp test valgrind wayland wifi +X" + +# Firefox-only IUSE +IUSE+=" +gmp-autoupdate gnome-shell jpegxl +jumbo-build openh264 +telemetry wasm-sandbox" + +# "wasm-sandbox? ( llvm_slot_19 )" - most likely due to wasi-sdk-25.0 being llvm-19 based, and +# llvm/clang-19 turning on reference types for wasm targets. Luckily clang-19 is already stable in +# Gentoo so it should be widely adopted already - however, it might be possible to workaround +# the constraint simply by modifying CFLAGS when using clang-17/18. Will need to investigate (bmo#1905251) +REQUIRED_USE="|| ( X wayland ) + debug? ( !system-av1 ) + pgo? ( jumbo-build ) + wasm-sandbox? ( llvm_slot_19 ) + 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.28.0 + 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 + &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="14300M" + elif tc-is-lto ; then + CHECKREQS_DISK_BUILD="10600M" + else + CHECKREQS_DISK_BUILD="7400M" + 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 + 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="14300M" + elif [[ ${use_lto} == "yes" ]] ; then + CHECKREQS_DISK_BUILD="10600M" + else + CHECKREQS_DISK_BUILD="7400M" + 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" + + # 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 + + # 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-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-nspr \ + --with-system-nss \ + --with-system-pixman \ + --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 '' --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 + elif use valgrind; then + mozconfig_add_options_ac 'valgrind requirement' --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-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 + + # 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 + + ! use jpegxl && mozconfig_add_options_ac '-jpegxl' --disable-jxl + + 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 + + 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 + + if use valgrind; then + mozconfig_add_options_ac 'valgrind requirement' --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 + + 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 [[ ${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}"/taskcluster/docker/firefox-flatpak/firefox-symbolic.svg 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 +}