commit:     10fc8f8c6226c8e26c1e9e350153712ed3db03a8
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Wed May 14 09:58:00 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Wed May 14 10:09:07 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=10fc8f8c

www-client/firefox: add 138.0.3

Add 'jpegxl' use flag. Mozilla has declared they won't officially support the
current implementation, but someone is doing something keeping the bundled jxl
lib updated and making it compile. The use flag will be added as
package.use.masked because the support is very lackluster (no transparency, no
animations) but the basic stuff works. Also, the functionality may break at
any given bump so no guarantees for now.

Remove "bmo-1961610" patch because it's been merged upstream to this release.

Closes: https://github.com/gentoo/gentoo/pull/41740
Closes: https://bugs.gentoo.org/928126
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 www-client/firefox/Manifest               |  102 +++
 www-client/firefox/firefox-138.0.3.ebuild | 1399 +++++++++++++++++++++++++++++
 2 files changed, 1501 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 29dacb9e7e5b..599f690e4978 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 000000000000..3fefd4b4a69b
--- /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
+                               <gui-libs/wlroots-0.17.3[tinywl(-)]
+                       )
+                       x11-misc/xkeyboard-config
+               )
+       )"
+COMMON_DEPEND="${FF_ONLY_DEPEND}
+       >=app-accessibility/at-spi2-core-2.46.0:2
+       dev-libs/expat
+       dev-libs/glib:2
+       dev-libs/libffi:=
+       >=dev-libs/nss-3.110
+       >=dev-libs/nspr-4.35
+       media-libs/alsa-lib
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/mesa
+       media-video/ffmpeg
+       sys-libs/zlib
+       virtual/freedesktop-icon-theme
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       x11-libs/pango
+       x11-libs/pixman
+       dbus? (
+               sys-apps/dbus
+       )
+       jack? ( virtual/jack )
+       pulseaudio? (
+               || (
+                       media-libs/libpulse
+                       >=media-sound/apulse-0.1.12-r4[sdk]
+               )
+       )
+       libproxy? ( net-libs/libproxy )
+       selinux? ( sec-policy/selinux-mozilla )
+       sndio? ( >=media-sound/sndio-1.8.0-r1 )
+       system-av1? (
+               >=media-libs/dav1d-1.0.0:=
+               >=media-libs/libaom-1.0.0:=
+       )
+       system-harfbuzz? (
+               >=media-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-png? ( >=media-libs/libpng-1.6.45:0=[apng] )
+       system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+       valgrind? ( dev-debug/valgrind )
+       wayland? (
+               >=media-libs/libepoxy-1.5.10-r1
+               x11-libs/gtk+:3[wayland]
+       )
+       wifi? (
+               kernel_linux? (
+                       || (
+                               net-misc/networkmanager
+                               net-misc/connman[networkmanager]
+                       )
+                       sys-apps/dbus
+               )
+       )
+       X? (
+               virtual/opengl
+               x11-libs/cairo[X]
+               x11-libs/gtk+:3[X]
+               x11-libs/libX11
+               x11-libs/libXcomposite
+               x11-libs/libXdamage
+               x11-libs/libXext
+               x11-libs/libXfixes
+               x11-libs/libXrandr
+               x11-libs/libxcb:=
+       )"
+RDEPEND="${COMMON_DEPEND}
+       hwaccel? (
+               media-video/libva-utils
+               sys-apps/pciutils
+       )
+       jack? ( virtual/jack )
+       openh264? ( media-libs/openh264:*[plugin] )"
+DEPEND="${COMMON_DEPEND}
+       X? (
+               x11-base/xorg-proto
+               x11-libs/libICE
+               x11-libs/libSM
+       )"
+
+# ESR and rapid dependencies.
+if [[ -n ${MOZ_ESR} ]] ; then
+       RDEPEND+=" !www-client/firefox:rapid"
+else
+       RDEPEND+=" !www-client/firefox:esr"
+fi
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+       MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+       if ! has_version -b "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="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
+}

Reply via email to