commit:     bb4fed4d196b753def60ec2d961f1ff58a212d24
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 29 03:59:30 2025 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Tue Apr 29 04:16:24 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb4fed4d

www-client/firefox: add 138.0

 - drop bunch of upstreamed patches,
 - include bmo#1961610 patch for wayland/non-hdr fix,
 - update cbindgen version requirement,
 - update nss version requirement.

Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 www-client/firefox/Manifest             |  102 +++
 www-client/firefox/firefox-138.0.ebuild | 1397 +++++++++++++++++++++++++++++++
 2 files changed, 1499 insertions(+)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
index 50aef8402e5b..52b5827ce53c 100644
--- a/www-client/firefox/Manifest
+++ b/www-client/firefox/Manifest
@@ -304,5 +304,107 @@ DIST firefox-137.0.2-xh.xpi 278686 BLAKE2B 
33e51eb98a1267c949b8ab0abbc173b709d7a
 DIST firefox-137.0.2-zh-CN.xpi 462568 BLAKE2B 
f3a781c1bb3c5297206caa3229f05a789ae5dc59667886646001b9a6ba4d7bd0d4b9e336bbb3ef91c8b0935bf7ba56b63b59a3f8210116958e2a4c6cbeaac104
 SHA512 
652fc99cbdecb265a82a12b0822581985101a055e0e924feefe06d6b6a9bdeb7ae9107249b652d58694c6ccb167edfdb957b68b031d024291d274bd80f9f35dc
 DIST firefox-137.0.2-zh-TW.xpi 465652 BLAKE2B 
4c26831c1e4633d7ae44b9328b4e8123e1cfe783c538dd2c1fbd9952decc6d7b9ee16237eb31c98f4fdc1e291607a6a5f4c344c72d95d3d6924eebfc0201fd24
 SHA512 
757d52cb62a90a01f2cc7cedf7327814b70ee5850ccba967a096154a497d49668b085839088849e10bb3dd7fb5630f3b7811b4a673eb4e2fb9d885a6793c7b4c
 DIST firefox-137.0.2.source.tar.xz 599825260 BLAKE2B 
2484e141ac0a3ffaace0991c126ef53adfbfa3a4c6ac70d7c54bbddb34a01146d53e457190ab67ce74662e4605ca21b531521c3a1cc7bff66e742d063a26bb33
 SHA512 
82140c4325233ea2e2f579088cebb98c0e8db8848b4018cff95d4ed42bf847049ed6520fc051d930ee267a5acb008908170825d381589da0d109ca04a61e1c24
+DIST firefox-138-patches-01.tar.xz 13492 BLAKE2B 
d88f9e457e549e2fa1e14dbc2d226affe723008bab29627e09b82e84262f468995f9e5821a76dedffa53eaf5c77b4dd18ef0ff3ea48e73dc752f12bed2fba890
 SHA512 
dc99145fefa8d4bc08627098cd068a6f4a4fa9023abe256f6cf8f60de8f9d88c9d6f981c5a87f688ec2c190015e5d06148ae49a78a0326de8d747e2309e781dd
+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
+DIST firefox-138.0-ar.xpi 437202 BLAKE2B 
032b3d160ed8b1c16349a795900128a187e79650c54c99107b844788a7974c16da2a20dc9c31ee928e0fc71beee2dc1d96731c295dce95e481af06bef2697ad3
 SHA512 
28aa08093653c4daf8cfb22a6b28429e06e0466bed47da1e4198137e7fd0e1452ed56eedc25186d43eeec48f2e1e9ed507be314653ec73755aad584a2e7aadb4
+DIST firefox-138.0-ast.xpi 313964 BLAKE2B 
c303168498b2e0fdf2b776b25e78326a658df2e24a2d6cdb321caea2982fe132e7062ba70d5c9cd96d357c28e65e1764d2ceef7794c77dd1e8ddb8bcebe4e43d
 SHA512 
3bd30dcf21efba0c182ba74c9fa9c0a0b547251851049fe66cdb318e3f124bcdbfae5f8a3b243114e652d383d4c66bc6a14edba619e99c19a32d82c9e427e32c
+DIST firefox-138.0-az.xpi 319121 BLAKE2B 
ae9f3941e602978324c925ca1a65b90f61f72e7a52c37e0f3015b909263d3db1814efbe6b267c93557057b8636623ffca66eef5f6407d999746514bd1bab6de2
 SHA512 
505907ede3e413e79fc62fd867c40d57fe4bd54a8f3ee477690997f6735d827e6ded3b4f06dea03c669ea8de777f1604f4f9caf1134c7f8db69a4bff00e29cba
+DIST firefox-138.0-be.xpi 515967 BLAKE2B 
7ba24f5e5d8588bf8046f7b26ad841f78de106dd2139c7a26d0a6a560b27405557b5f3a9bed3041676d05225c5dd03fc57c1ed9ef832c3c8f143d1229e3b1d69
 SHA512 
076847a1ad896e736bf357a2a06f560528ab012762a831f8afd32ef89755fa9228b5632c2883bab87fd8b63176370bcc57825e0d14038668d953de90867f29ec
+DIST firefox-138.0-bg.xpi 448971 BLAKE2B 
14bea667b5f6640dfdb153713e99640e46036872670a43b1f160d3d7beaedb6945bd01f8d69a561ed60ad790ae4f472203ec08b2707622b7d8c1278c96eaaee3
 SHA512 
b75944125038125f35f5095d27067d3d99f96e6638152f6a28db90c199a3c28c6dde647fde6d64a855d996f65fe00c601c81b095bff7a9df5472d05b9d56436e
+DIST firefox-138.0-bn.xpi 413602 BLAKE2B 
fddad8e16ccc9601b3d36e0d03261a044d96fa5a4a445fa33140157a48fe19d44f661adeb152fe2acd6a763c93005cf72d7f64942688a4550c173da0e1cf84a1
 SHA512 
fda4366645a740a6ce26f5f35d580393b3ea041149d08e7eb116b6725ef9aaea57c2cb00fee37a26dcd97ad15f022c08622f3cf0f0f74f33d0ab60cd93448617
+DIST firefox-138.0-br.xpi 394171 BLAKE2B 
c6fb5508afdda403c5f269b3143d40f8a2c4ca1f0e5eab3914ae949a43488cd314e85aea13279675f405b7c22bb73c6ddf12ef3237cc70bd4a2fce4fb7374573
 SHA512 
ee3c3723971db74c296efa89f2b87c4cd3903ea0ff590b4c1802981105fa174246762b72bc1846118ea1d00c98fff093a66beee97012ed017583bce9b5327534
+DIST firefox-138.0-bs.xpi 364827 BLAKE2B 
3da5eeb44efce31c3243ae709e62185af529238e2158b5e9250ff221226a14112a9928139ba7cbea088077298fc5e74a0280ab36be798f76f80d7b81dcd256f9
 SHA512 
96b99afe4ffc27a78c4a34615defe38fa81e9a58c8fcb884da624aa27e564aae577859a15855044869bee1ed451737635c8c6ddb94c4928db83f4cc0bf267d3c
+DIST firefox-138.0-ca-valencia.xpi 359045 BLAKE2B 
b0fdcea7867ca5e1ea1c504c319fdfa75176246fb55a63df0ddf0516407e6de8a8955ea9f076b269bd90b298e5680e317dd393a31f173415cb98aca88122ac69
 SHA512 
d8f7b24fbe324f4a6f595c30ab63a9268b2af01cfea6576b6d455d2807e44cab91c819649ebcb1e6c26897dd626a556c4edf72c2d6399e66fac4e4629ea346fb
+DIST firefox-138.0-ca.xpi 402154 BLAKE2B 
9adcc2894fcbd926e14837115b3f408aa0a09501fb509a48f07cb96c466e9a481b49fbbcb8a2f115a4c1651e66c80e1de786742ed7e64b510691695b838bcbbb
 SHA512 
bedd0996da48b3e4cd9eab451374274eae29582165568f87ce770b7acf087b46ac65adc79e7116e9556460100f3905d74b0fe0309fa82fe3d29c2b2764b89cc7
+DIST firefox-138.0-cak.xpi 392707 BLAKE2B 
e59755941a20750ec7b9c321e5a267cd13c8da8c8e7a475783c317485962d7b4879e2b4c37c275831d7e0512b29b3212fa212f42e4c0e6bacdb56e08c9059545
 SHA512 
eb55b22dbfe5ac28bf45345017f221eedf0f7f31459e3c77bd6b1a1df456da63349cb99fbf4fc9819f52e8a25905dfc57a4dd02b0dd9f28d53064b95db4f9d7d
+DIST firefox-138.0-cs.xpi 475091 BLAKE2B 
186115be840434051abb668ed4470cb9f38964209ae73be5ceead65d771cc2548b956848e636bec1f32d2b4051817f891bc6646f7db89d4e26ffeaafbbeed26b
 SHA512 
a9cb8cfd6cc09b18d37a71d42574814c6758c1ca357bd9372a6d16c1c42fa66b4a334136a2d2109b041699ab3c2662757957851e4a96a6845f7849bda22ffb82
+DIST firefox-138.0-cy.xpi 441400 BLAKE2B 
624227ede18f0ca73bfb095fe19f58319b4522295ed27942f13d4b95729250918719e6e6bfe024c8c4df6776549ad16413b5c4178a082b06bbcfcb432020b86e
 SHA512 
17c3fdd2b2685a096778583c22c61dee663aab343bc7ae6c65ea75f50e8f610a09b47ca0ab157c647966a8380fdbfcaef2f4dd5dced5c2b4de121d27bef42dd1
+DIST firefox-138.0-da.xpi 430729 BLAKE2B 
566e064f7d02fd56922daed34d306c71bb0f89227395b9a18aa3a8ec774c664c758825e9eff52b4d67872e30f16888a13d1141d696ac2d8afd7849c8d34948ac
 SHA512 
98c335ac7c6bc4b4d808ef69a285f41a800c4aa912f7b3f6c2190b89d60fcf5d1a70ba4433d08d3d1080f3c8e90a819e38fac82f348452fa6eb1e0ad0e6bc545
+DIST firefox-138.0-de.xpi 452227 BLAKE2B 
18f78bc82d0db37840705dd9a962e2b950262da9bb12121993762b68b3543edaaa63846f1e59f8dc27992f2ad7572261aa8327f4436555e1475300423317c056
 SHA512 
56787ed633cd1a2700e592e6317d4c02ab1ea9c50d2e03d185fa502c8c8918e678bce4024c766a1b0d99cd5af23eece25d46ccb468b3dd7b682bf641d27adff8
+DIST firefox-138.0-dsb.xpi 465486 BLAKE2B 
46573177701c4e3b7bcda471747a11a75c96a06d20004e67c6854720f9b8b27bbfb5d65ee1056166668b8672d1120d5e110248bec36425a16958a35bebc7a6c0
 SHA512 
c16e007e8ddd368104590c1bd80397529e9ecaa9e677a4ff16e338e1b0b3d281ae32db2036cbf0722df583fe19475167de31abd1de3ffbc1aa4f56ad8f1433fb
+DIST firefox-138.0-el.xpi 536326 BLAKE2B 
e218c2ee06d39eb74e11cc1dab0ba802633b36d9a28653d1557b2fac38e9df6f7d5df5288b82497a84bdd2b9714b2b5bb98ea3ca37fc9d3a29d0881fa68e922b
 SHA512 
f77b24f9ada4e3657ee4bc1149c0ff131cd5b99105ee4702d2e42040e78870f84756a21e96ba92cb95cf7857e1974ec3f15e79783a74050f493603389c8d73d5
+DIST firefox-138.0-en-CA.xpi 407813 BLAKE2B 
dafdec5c2119f01a7cd25df2acd1dbbf431161dbce2a2b71db834117d41ad39d712e1c77a0de5fecd4a0244efedbea7d5cfa9839dfcf309f3bc40199378135c1
 SHA512 
e95c0f2170099991aebf7f4f6cba87a7488cd43f6b175354a25c426f2a5f3674de69f2c8027744a25be4403681929971e71009eca26ad7a53b6b2c4492c71b93
+DIST firefox-138.0-en-GB.xpi 411220 BLAKE2B 
359ae7de54ecf86c68a793868d3187ab3c6dfd80463b91dad08d4044242c3d2b8e548090a2443be9f211c7d2f28d5bdfe8049ae5857efa39b8c54019a5838328
 SHA512 
480e08b37ad1a75e8e450e84336e182a470d952b7288bbc75d38e1d1322523c008285a7dfaac0872323ec5ba4f1ed4d1c62c38cfaba93dfde77fe2324741b019
+DIST firefox-138.0-eo.xpi 433088 BLAKE2B 
237849d2f673698ec4897722df2759e56e523f9e541c0f862a11508010a622378ebb3af5d7d432c55405ff1777793ceee350cf006f0851c38ce50cebb9aa0186
 SHA512 
da30fbc0232c8a23209958e4a254b685dc70d1a09a807aac515bcac79cebe54a0a2fdc37222161ff2f1e085bead8caebb5315dd7d9355de0547f2577c411589d
+DIST firefox-138.0-es-AR.xpi 445148 BLAKE2B 
128c109e137777dac17bbc6172a101d5470d999f7f5a3499d60e255085bf5d085ec14d1684f1bed1d87ecb1042438ceddd481bf0e21a4c5750987b832580713b
 SHA512 
43d1b3ded89c58e034cf9fcddb9f6423c36d02e792cb789c24925b82d62f57d8defd9e692547f9d77457ec6e52f760b21d6477d30664da85de68bcb77f0da4dd
+DIST firefox-138.0-es-CL.xpi 445858 BLAKE2B 
0b2443f19bf63d44c9a0da96018597dd8e1c934c7c5a3c2844f9bee11704f314d6bc6d3cd2142e70576f6f5c960101c4c30feff9b24204a1c1c5d98ece8ff118
 SHA512 
a544af69a0aae400dcf1a2c18afe60abc423323e5666df3117613cfd4d84e475e6849652a4b28336ef95ea6bb3abbc12dd8b01184094726bb66ce4d4c76daf3c
+DIST firefox-138.0-es-ES.xpi 446610 BLAKE2B 
27cac402477f4317460183000630757ac4769683b1744a645b4533af5fe342a0fe91d5a72f70a3f371835dd1e118532bce185c66014a0cc1144e353fd4affcdb
 SHA512 
54c9c822649c61880c38ce7f8efa4d56e788cbf186dc6a19cfa2918895fd4f755b49ee9096e08bd1abb1a968ccbed66fcc1d5d742dd6381b29844734987799d9
+DIST firefox-138.0-es-MX.xpi 442561 BLAKE2B 
5b536bc4b571a0d8240d01c1b0a19f4f873bf40806ca55cd4f1b6cfdf56a9fd71052485b1ff3e020725bf58a7ad8e6ad0eb6b3891fb6845dec8637668a472df5
 SHA512 
d889abeb6a810fbaafab131a8d7f7920d6779ba35cab9073b7fcc1d53cc7c0f4a7d7623e7abc65c0afb52a9dc3daeaa99ca4b4842b351b83ec0583c20bd1d1fb
+DIST firefox-138.0-et.xpi 359659 BLAKE2B 
6f6beb3ba715c77360c5e2b1fa9603b0ffee06d2b4932fc4bf374d65c06c2a7b3badf0c7a810c8f3a094eb1d026d751e9eec7b0081421d7b13abd55b77d0f7df
 SHA512 
72af08e0b26e6ce4d10e120501f3a65150224a4c1cf8bbc47347698deeeaeb5511ae6e878c50bd30515c571e69b252ae52235d5f06fef5331fd87854ad5cff33
+DIST firefox-138.0-eu.xpi 413925 BLAKE2B 
0a684294bf18048718ca2cd943359ce323321b800f88835d87b20991e2bc7008dc4bfb7ec858270ddfbd259918762ab69bccce05c3f35ac20f7dd8e085c56975
 SHA512 
28cd1e39de376fa6921c66e94fcb6bbd1fd2ebaddfe69e8cf9d6bc657271b8c03cd29c77eab0bf6e7967ae28efdaf3ba2781d898abe41133bab699a9b4d197da
+DIST firefox-138.0-fa.xpi 412991 BLAKE2B 
910cd7d59efb30e6c6c28ac68e64e69da1c0d9024c34743fe585633ebf15e0cc0fc35aa73d95a17dc3ff53adb8d51176715c375fc1a8b8535c1611da5acd779d
 SHA512 
4825de46b9fe33b3f7a2c72cd6ca0b4004cc81a06388c8588852215e70f11d9ecf1ca7da65859337a93b8f35ddcebc2fb2c1ef3cf75a10b5abcb69b22b2a1151
+DIST firefox-138.0-ff.xpi 311295 BLAKE2B 
5aa6b3c3600f4515af685b536ea36fa6c2c04dc1c0262e8868eef75551e7e4924a9b752fc9e2ed638f58863e12214b083360518e1cda6a5efcc75c3da0881b14
 SHA512 
c089410ed9030218c6cf121f996492a976ae99633deead7fd34b1639b29127cec8d5f2d879522f9c69ae58a9c82be6f0110d01695029ea55f1482ea0e37917e3
+DIST firefox-138.0-fi.xpi 427747 BLAKE2B 
43b42466c687f678fd292665da8682e8e64e7ef990bf7ea6c7b894099fc10b870172306eae9a18d7915f932530efa0233df6a72b5d8c1ad7b8e029735e33f208
 SHA512 
ed667a1a9cea636f16e3d1d2c9989910c807083b7dff1085b6157fc39df7d320c735ac59eee5448e8796f02a89b0ecbea4a4e1b1650cfbe6cd353f6cb23735e7
+DIST firefox-138.0-fr.xpi 457859 BLAKE2B 
27a5130f51991de7bcad5fdbe8f1ba6629b0089030b13c7ae9a70a2c5d0e4911141c37c5a921ede8590ec0ad7addac4b085e4b4803bb2b0c5f4df22cdb0b327c
 SHA512 
0689cb88f9fd1acea836c72c1ae18bb650dbbc1060964a93962566eb51fe8898b332fab592cae8043f527204374e421a11f6a56a0a144a23629822a6a520b7c9
+DIST firefox-138.0-fur.xpi 451292 BLAKE2B 
044c1943de89d3b70ab93c241059eeeef15eef8ea145333ad9ac410afee50dc83ab0aef39652f028031d8c40b4d55c2e59a7090d075d88e796a40821d715fe76
 SHA512 
9dd90f24050c8a5c93d902a776482d526eb59788939105f00d9c06bdd1ae9b187ac47a8f6b67f64fc250bf1cf51ffb1d68708fb704aa2391a0579a43f9bb2bf2
+DIST firefox-138.0-fy-NL.xpi 441769 BLAKE2B 
ded7d9392fa0fe672cb3985dd32c52d6c76a1c93f0ef723e49e9eed7d821bc7b48c60b598ba12f4df91cc451b5500a41a7cd2865cd68d3590b3cc9405cd95650
 SHA512 
2701fb5a16d74f35147c0f14edbde48e1bff967fd2d9469751a3ccf922900f66024d61263e7ba54e06611ea683dc5fe2301aaf2acf7d80e5bf8cb34f522cbb66
+DIST firefox-138.0-ga-IE.xpi 316391 BLAKE2B 
2fe307cd9606e7bd09c3e3b679b1ded4b85df7f60cbad9fe1eb3997ad01a6a8febdf7a7a1188653eb1be8544619fe020676e09c1cc845ddaedd9354903c6ccdc
 SHA512 
a11eed4ed50f4c3bedea90e6ff2ea849d83d9d07c91b31d3785b3bca22462d2591f31d8f74ec9fa611fd07516d59cea657d547976bba9408a116abc0aa63b39d
+DIST firefox-138.0-gd.xpi 401185 BLAKE2B 
70809712783fca067f4d325cb30bd2575d58df5ddd26be7399ef3f98145ea14506b7eb2b718eea83ad57fcf905626db092dc9cd956c97d0e639844c0ba204364
 SHA512 
30808b4a23454c30bb2e1aa37bd18d19a79bb535f40f4106d8bb6f91a0c391aceb7652145bb76342ae9a2fcfe6a82421588dbebcabe866a47f3e559e0f37eb36
+DIST firefox-138.0-gl.xpi 405202 BLAKE2B 
90a5ef0fa57b38fafab6c171f4f4c4ae65a51e62cb11a0b1d173d64f2894dec24512f967e5193a91782f1f56219220fd3194f0bcb3cac553fe254bd0cc4dee1c
 SHA512 
06b5f27f9c09ccf8f04aa1a9939bab13c5b2d1abd9029856bec8d2ab2b4143024ae5cbed6cb06dd3ce5909678737865115ec6023f06223fe49c8db59e2ef6640
+DIST firefox-138.0-gn.xpi 448251 BLAKE2B 
29d2f673d845474f7a66df0be0980313334904b39b14d303d4ed47a22ab4577f35066e60445040f1a57753173f829e4d0d231ac8b66ad96893f9668dcd749b91
 SHA512 
3cc52540345fb642379bf82edfaf0fbb60d668610f904198890f720dc83faf1add68d0ea6b62146b4238a017be7c788e332604c0f60cad019c426bd156e30662
+DIST firefox-138.0-gu-IN.xpi 359757 BLAKE2B 
0c71fbd4b2c8be99c2dfd2c5f8f6fa890ec76b0b15a3ba3eb534df5d468771e3c37e5d01b893e70bc0a8eda61e77e8adfca953f32d4d679904a4f2fe39480ad5
 SHA512 
d4c43ce038f54007bc47d9e1546c617eeb456db54e40e7a21cc94551c463a6cdb935eaf2b5a8b2480c8809bef52eb1403e9d04bb33d3e5480a46adde582bbe47
+DIST firefox-138.0-he.xpi 443182 BLAKE2B 
7737d668a062cdfe8fe7ace417efa426cfdf2a853f722ba20b0bf7a44efcf10c480f24a658ab03118ee344cfd81636c426c8c9365ca273581fa14e9f2965f7e6
 SHA512 
212e25a37d8ae13a7a93588260cc28db94e363ec592517f9158292e77a2339813423df49e4d7070f2ecf7f496a3ac9fc8b2b272ff029e342fa369291a81df96e
+DIST firefox-138.0-hi-IN.xpi 378236 BLAKE2B 
75c0f126c7427d4c2143a057bfd03d9d1e9e16ca2810af114a8ccd75a3fd3a7e434b66d95ec4d70acadcc6a7f7242fb768c9cb7ac5509367cf7c5c6673912dcc
 SHA512 
b99c5218d331cdde3fa6cfa275869e6e55d10518ac6c2a7a703c1d55a90d5417017d6d73dc15854a0494059ec1cf625ac49284306291af7f80460b6caa099d6c
+DIST firefox-138.0-hr.xpi 429594 BLAKE2B 
d011b0e29e8403d17044ca7663414ed53445f1f0cf1e63da464d838013c47c4eb77b2ff2e22ce197bd016ea868d05734a49a9c4398a67c7716bd636a7ba45f5f
 SHA512 
6ac4ed5cddca2db29c83c9bfd60ed1230fe32c223a68fe28e201545c0ac15f4138aaa8464f5171b6dfe862924a9ae612b715beb7f4e5c7505f3488c5d3a0c301
+DIST firefox-138.0-hsb.xpi 462137 BLAKE2B 
91d3841ab0152536b5ea249788e19e8c90f31f544aaa2aa868e106f1ec3df6a35b5211f9333670a1a20d607e7091139a954dd88ba3a21efc8a83098a7de7ecd0
 SHA512 
532cf147cf628a719c76cc3e3f1df12442a7609d850d15eab8bb87aa0a59e4e7069f1c82ba056445d2e7049f40038f609aeed688758d9fc3b35f48e84005a7c8
+DIST firefox-138.0-hu.xpi 465930 BLAKE2B 
2ba3352c5396e934ad3cd5a693501595c452662643b25f8e9db56af7848110f6bf165eeb5c421e270c9f693d6555b4162861ac06b2aec8d1b7f56ba73ccaa3c4
 SHA512 
6d64ecf23ab411847db49726b4b4f66829a6a34a68d64ddadc5388f8df74d594de6defcc464825ad7d8703c63f0c600bd6003cd547fde41ed93719b7df166fd3
+DIST firefox-138.0-hy-AM.xpi 453824 BLAKE2B 
4c91a972bcc5c1ff049b04f1f08c5535e7befc3717f6959a65b9cc862b6515a6a4e9ed80d63052a71f59ad01bab04f8a513ec3885fa3ff5b2ae24073b0833b61
 SHA512 
c65b0ea83f90541f2606cdb7b76c511788eb9f688ea5d595b9bde39fcf635f96be7dfb7513dcdae09affe313d86a3859202ab70cbb9e625e6d7399a6268c55b5
+DIST firefox-138.0-ia.xpi 429689 BLAKE2B 
6fa3bd4e2ba7ec689447afb4a154a1d4f433f7fef7d8504dc658c1c7106c09a7dd350c425f6c766197892d65908b4328165eefd0ee8c6e5a0ffcc59d03a4051b
 SHA512 
96825834af1afc7bb2615b527a554c538b174f2d37dc2b982c1b95f52248ab0e6ea5e57fa3e0d617bb17e3fe6836877ae2631651342601c49f2278305ae69bec
+DIST firefox-138.0-id.xpi 424279 BLAKE2B 
987e2290d67650c64264d77e3489f2904333070e89536805f29a0434d50955f1eaed56ae0c87188262394b239fec3199e150f4e8fb1a7b9a1357599a032b7c08
 SHA512 
561edc3aa17293c6f06a504cfb07e08464d429f07127865ac151e5b1d5cda8cd128bdcaf44fbe1685ec540efd61843bb83dc5552098fb8700d3d43df2f25f666
+DIST firefox-138.0-is.xpi 432005 BLAKE2B 
c5ac21c78872fece0a4ccfb33d1a528c1d09c1e80e746051f0e0640a1cf06afe42c03ce1920daa56d8e492f966ebb972862e82440e4348d04bcef08118adc003
 SHA512 
86607e93e6dafc9c5f4fbb564adfdb2f8068b3b4dcc606e844936774a83ee963757aa4bb4bb1a4e6f76388a53fcaca1ed06fb0845dc6f5c25a95ccdc41ca0c41
+DIST firefox-138.0-it.xpi 440404 BLAKE2B 
88b7a07650b43c12263e5b020c7b6208605b6b7d51faf10c6ab79e032861c94d3a748d2e90edf774c832e1c9c7f2b117ca1015c01b1f12459d3802d9ca69e166
 SHA512 
7d3dd5b0c59f968af9aa1c00f5f51d3c2b9771f5ac88e7273fc695e9dbebbc36bb79740b9684e330a89d16d40d625f13dd9078b84aef9d0db73971decfdac87b
+DIST firefox-138.0-ja.xpi 480877 BLAKE2B 
2bc2da975b2ef7ca58a620e380f6468bbbf2ad068fe499d4b8e8618045da70d99d55c1dc0a8af88db7f0189ea06ee17e5ba9b3bf22eef43231910e7409a7a3d6
 SHA512 
8d9dc88540578cbd1a2d0baa52290e7614bba738feba6147fcd651f6b73df7a36954159f7d4f88c518cd724c280f6d5706840bab19d5d6ccbbd62fb434857b44
+DIST firefox-138.0-ka.xpi 494234 BLAKE2B 
2c8e74e85659183e68e4c76ff3c40e6c7c92de72e08ed44a38339c0030c32f92bbb1eb9787ab465af1cd0f3661271c18175c0969574b1acc8541873eae93c460
 SHA512 
a87df1c418811887e8cfb87f9332079db134215745f8df55c1171dbc883f10fc9f53ae24f49095b046b713d9fddf69afc773af8f377b937eb3849f45da56e9d4
+DIST firefox-138.0-kab.xpi 413560 BLAKE2B 
062b1e08ceb855928084dd4145a7019689059bc011698a73bb5230275edadd26eecc7473f17a512d666f0266e82996c3319a8c18eb811abfcc25eeb0d9af8e20
 SHA512 
815f522b0b52848814e3b864a5b8381f00dc9983d527673d35376d3585489f19aeb1aa48efad9d2ecbc8129b3c2e2a3ad17acaf1ec5e74b8b72824cb3ecdd9f5
+DIST firefox-138.0-kk.xpi 501966 BLAKE2B 
6b76544d7e477333bbc796c37979dc983be8f24c0b6a067d97a7b81b9afd79e9086e09ec3578a6bc7d58d2c0e69277d8002fd1ad3aa9e951fef79b4c25d47291
 SHA512 
e49bfd91b1703449f11e9fd4aaf3761a4c2ac0f2825eb3b7c62dd930bf98ecf4ea67af4c02d6f2ee8a0bf233ace808a5284820a51136a50c4fb3662aa9ed93f9
+DIST firefox-138.0-km.xpi 349521 BLAKE2B 
6280478acd63625b406ecb6e9e61e68c33134747ca60f8dd4365a8f7f6279ff772f44ac915eb006f0a7ada6a3df1970d0baa86d08c5cb710d5ce18b2a03b9b94
 SHA512 
1bc3b4dc3685c62263c5baa5d661a0d587417f4b8fc41c3e84ea620ac08d28411862ce94ece1cb13e9b209ee0b7ecab059607327a6128549b26cc0421ae0e289
+DIST firefox-138.0-kn.xpi 332438 BLAKE2B 
5c4f3927d2eb4af6bc963ba82553f089b7753a36428182b6ebde8fc23a01842f6f3c559b457ad88956b32bc00064bd7bb381c854d63c2e2a1c512d643da46e49
 SHA512 
2742d142ca5e5aa993410ba86a5e302142a739b3039a83d48e1391d102e9e19a5cf17a0471a73b2f44aa6b434a358a237e0b618aa5ce95ae47762baf8bef7e9f
+DIST firefox-138.0-ko.xpi 467025 BLAKE2B 
66648bd8d75b2221ea317d5efba77be7dc97c72675701c27b8e7fc628a5999f9572d27ec216eca979dae4daabc8f76f9c06b5205d182ed7d7befaf6b63c56339
 SHA512 
046e54bd0665f2e760c562f3db4e0f5bea6742081fa05b3b2102429a4715a4898d7363eb04f67847c678348d195baa7f12c2f99355368c4de8954f7b65c5ac8a
+DIST firefox-138.0-lij.xpi 319046 BLAKE2B 
42a979043d91efbaaef8587582888ea88f8b807cef32d4680e05cb0cf5423808af7e45f739a6264daf2c51a8ea607af4c4623db30f8811b18741fd70afdc86bd
 SHA512 
52e5aba06da67beb17c47d10a22ec1750779a92f121766a68c1191cd5dac92bf9572b37395be372b1b3f2a7b94165a176c7143fd77c7e5b57c0a30721ad8e184
+DIST firefox-138.0-lt.xpi 380930 BLAKE2B 
200ac9f1b121313d6e217cb8388df3bc5d99604e24cd87dad39a817eb7d9dd1221ae1b3d2afc4c1af14f22cc287c74734b8ee36b9d523033efa9e59d82cd51f2
 SHA512 
0224fc3dc2d60078dce594c8d3afd236f9d26ea99c43e1101e401df7f9efba56ccacf8cd50ef4dfbd87ff367e283a4f79f4e66f46f07d06a1a602088e98b58b3
+DIST firefox-138.0-lv.xpi 389512 BLAKE2B 
48d34abda61c6a6f7e80aafa165da351e9a1bb89cdf000dc533c0fdceacf0b46b119f4c5b1a4bfa0f290d4f173d6984ca4353f3c6794ad77657772770efbd9fb
 SHA512 
01a885c4b94c688c9dbeef829157807b6d1421b628bb0ccbe4fdc064f31644900ecb9870a16f7131fbb879c4858c5475fb1446f390d697419f2902415e4a3098
+DIST firefox-138.0-mk.xpi 317493 BLAKE2B 
878a29b89b5d4a6f5b20c9e979857d4c0eede9f953e7b504673ae576d1d0676e055d37d5341c75fa6e78b19eb817e769f346f4d3dbdff43043951f3a442e56f0
 SHA512 
6f638f533323506b87f6e2b4cb313aae9eac3634b23f05560359df4b3557b1a21092b1145ddfc35d3e4592223a9be17838b1df3050c300db4f736393ce55feb5
+DIST firefox-138.0-mr.xpi 356933 BLAKE2B 
c3eec98404d8a08ed1a3203ec9b281edf4b6d2b91826e609c5bb295604d214034c6b21bd9dff4520b4f39c12a074fe917a334143c8a2a26cea8e69873827d535
 SHA512 
1db44d56e90d039ad964dd1d3f1fb4f94f58570e064b0cb634078df4d31970b09ede0740800cf398a510136101a933e81724120351e6b1d99485b401a7e2d853
+DIST firefox-138.0-ms.xpi 296042 BLAKE2B 
e13f21e96224b972405ce392bc2bd045b32e280df0846b11d917e5467af9d35e458cfddaaadeb33f1743e001b4af148c7a29a106b2de4295aa4b20e30d0e9e4c
 SHA512 
433984bcab1cb1e2c78f707dcc9168d13ef91b1450a6e3977a12a763c89231f156e67fc2805b6ded329c6bf1f8dfb095e861904b3bc54b3eaed705af2c2d578c
+DIST firefox-138.0-my.xpi 343226 BLAKE2B 
e769076b8a095e9ee4e40f35a98db4990bc12d1fc0cc8ce62bdf61ff3fb2189652e4a5b5339ce9f2f72fef216a4dfb08f326cc4729a4f19ce255d0a4d0cde5c1
 SHA512 
7a33a751a33077bbeebdb27eff5c47c41785b1078bec7c52cefec877278e0c8221f90c1a172e1dc86798ab21b8cebbb8d93d026ca19a4c019e49890b072e3d1e
+DIST firefox-138.0-nb-NO.xpi 422059 BLAKE2B 
8153df2ee4cd3b2be6edd58dc16620cc35ee2a0bf62f9359c73abfc22d0df876d43aa34d90f152e6429e2a96bba4ed1652b688a26ea56c20b086ecb2e979ba4f
 SHA512 
dfade3e58ed62f5672dcb00a10b592f1e01b4c626e38037fc7aaecfccc15d0542bfe565bb1fb12375d8757fce954e62aa1f698a3869f73c2de0fd2dcaf99d1cf
+DIST firefox-138.0-ne-NP.xpi 350313 BLAKE2B 
084bb0e3a9232cbb71fbdf635307cb2f86c11419e8f75edc2b60bc4c9295264f1a8636965bbdc29ee89cd2ec226e59f8b555f0d61c72f36844f4d91fa2d6d605
 SHA512 
72bf4a6be415bb7f2b9522b873ed468b92564dffbd5b52c7e2a8d81ae0d42bb719c9f2b1988cb18cacc024caa734e93e36be3f67eb6001c36b6b007e19fd7a71
+DIST firefox-138.0-nl.xpi 435789 BLAKE2B 
94f19ee3243337b6ba1dff0c446eaece257e0f42cab2e4c0e56622de8d8da7d68aa7027e58e132774567893a2915e412c9ac63bb1abe53feb8a26b59d6086dce
 SHA512 
47b2e5e471b5788afa60595d3683e55f90d89a8137e2c8dfbf70d651ed8966d32e1031205dcdf92cb14c603f7634aa59fa02feb3613c072780a642e5e781286f
+DIST firefox-138.0-nn-NO.xpi 428378 BLAKE2B 
8802ba7f06dd9f7dd5f20898658896d28962f6651370a0b75b940cc785758a100e811a29ed618f55dc105e508876675ac402e4e0175f388009cb6e1cf7f48e86
 SHA512 
d9c336b9bfcee753762872429052848d3129fb130551dda6d52ba661b23877f34a0eb31b1eb76c998856325cf826d5358e64065e711edb28001aa7235b57017d
+DIST firefox-138.0-oc.xpi 414229 BLAKE2B 
2d1340a358efec680c82d0584a03d47e0923b5a6459e4bb5674d33bd9f2db9a515baf5b30db0f214e98d8cdf8182f3405aa651771f18b8f86d1a8d706a562fb1
 SHA512 
502bf59d975436746951555b114884c7f38f51d94737a18d646e472f773e72f1653ecc05adbb499a7bd5ad51d298d95daa56c88eb38045293f37531505973c5c
+DIST firefox-138.0-pa-IN.xpi 493695 BLAKE2B 
e20bc80f59b739c4afcdf0448e28f15da6d213c266629cccfcd034d19e26aafa62cd519b23b9f89b7031ea820311718f8c229707a8f74dc8ec64a58fc5400cbc
 SHA512 
f1a949d8b82a92bd950c139877ffd2d060882ad1cfcb60ce697dbb45dfee14c1b6c342228bb39cd47384bc3ded3c9ec994712a264fb0dfd3c38da4309b3fd240
+DIST firefox-138.0-pl.xpi 452930 BLAKE2B 
fb3a31473cfa28d58c8a386f36ef303f8f59f179eaa220d1f98e39df652ca5b16d98820799ab4d7eb199caada4cf21965b51b5d695445d65c81c317c79ec6e4c
 SHA512 
3315fe64dadb7e634213d9f413e906227bd8fffac9c0420e7dde63c1cb8d3ea94d4921bee9f3ece10699c37a14c909081c6b0cd6a9438a25aba47dc9eb062ce4
+DIST firefox-138.0-pt-BR.xpi 440325 BLAKE2B 
f1f49d4d5fbb29f7b9c02ba4a5b4e73affb841426a12f75fe0e29ce9798d27eafd773733c281fd3200d1a03ea5e998405c44ae8a612b8ff70a0aaa04853fda37
 SHA512 
3fe32cb93202969e4b87ed6ba9d54023b3506cd6ef2a24e742b57c76f6bf6801e83a809f18a38c74e9371070b20e05b9f9d3710c2c4363d892ac7c62691b0e08
+DIST firefox-138.0-pt-PT.xpi 446055 BLAKE2B 
b7ecc08756d7683d82d70d851852a401fc48c585790120d9545999d4c434c990e64b55faa71a03fbf5b67ad6cf8327569cfb4a9a96d80c11556601741538d970
 SHA512 
4a6bfa240a46382ff5e44af6af5f4e70536d3bccc0e918be9f6e0b890bf24f687b367bb3dbee97283ef47475fe7e8b614539917be0394e285699ad445beb20e7
+DIST firefox-138.0-rm.xpi 439695 BLAKE2B 
6911ccf9878e3b2ac348a04b65d1e4a30e201482b88139edda4a2599e6d75d4533463aab29eb67e8dc7e91dbc7905f089d601eb61b4969193b4c640320db9c1d
 SHA512 
49f71ff7c3159b4fe69befe29a1b5cc3586fb4cfbc951d0ea363cdf9b12eb2c318fa78fb6b35132536e8e91199f6118112037f7d9b1515ddce873c4a72a75e62
+DIST firefox-138.0-ro.xpi 366336 BLAKE2B 
198fd6af3c267f08e86a641b6f21adc6d86cc139436f5be26dcfeb69f8277d6d709c035145b22e9c79c3c23c0ee8f6ca828e8f51d594fbf27e2335d2bc3b4670
 SHA512 
ed294b6e266be49217e7b4a374cd5d4920056ed997704300ce578bb880e07c0cb684ac128498c3da3cc218e2df24cb5d7ecfbdeb94b82ce485214bc2f5980524
+DIST firefox-138.0-ru.xpi 524416 BLAKE2B 
0850719e7c8c7f9e44aaaba16948e298d186923c7ed67eb6ebc69a1da1454509186eb2eb32f370b9c2452198bfa3a0882084d3a2b7a9611a5acb8dea8bf9b159
 SHA512 
9128745d1810009df6e6bd1a7aa74947360bb8f53cf2aa8c6ef6d7c231bfa525215f2de5b19510c5dd889a7900bc3921f63b42309e1fbd1fbf1a8231c5c64db8
+DIST firefox-138.0-sc.xpi 406153 BLAKE2B 
530114c10e4106171e74f05fd0d565c520063ab4194e6e9dfbd4d60a3743debbd5c398a468ee4dca57b43e3ba7f9300973e12b58b8b66335363b858fbbc8d148
 SHA512 
1e9fbe8edd48803e190a9617fb2a24bb619b4898f42ca3f861f83cd3964821a3257610b49977315ac1e341f992e95304ba86fb93693e87a4661e3c92cdcbcc57
+DIST firefox-138.0-sco.xpi 324596 BLAKE2B 
8ba3b47573e8cbc6b35f50204ba36a6fdaf05ee478b0a9e86db7cf77e873e79085d30a78f7d443ffa8042ec9c46ec39a05adde8b403beadff5716507e6d8af59
 SHA512 
5ead865c9b32850d281edb9f425aa1cbd45063113406cea089236e518150aef39898f21b23863f5e386fef1e6caae6781ec2463400d0514cb5bc264a863b9c53
+DIST firefox-138.0-si.xpi 414463 BLAKE2B 
cc263305a8a83b34b2d2a1c4de806bfcfbb977ba416ebac7c77a1ad95122cac3804742242ed2545995f2fc71c777b704cb48ecb64a213d24531525b587817e23
 SHA512 
1cccc83385dde9eda0dda970f7151dd34fa1877ec876aada4bf9684583d067d1f0051b36bb9b0fddb77e0dcc264c2670b1eaf28e84436047cd8d1690fcd512fb
+DIST firefox-138.0-sk.xpi 467406 BLAKE2B 
a133558ecb8b356d11d894c7ad94adfe9dd698898c6ea17e4faa547bf0918603bdec2932505249c83529a7464f5c5d69d24ae4107a5f2ca5471c90cd705fdbd1
 SHA512 
61353894264f787c46eb91b183a35132fc346722303892c02343c8e6011b3d55b394a1eed9d7bf55b724f6e6881b7d5d7bc98e2c44ece09b211b1ab0c510773f
+DIST firefox-138.0-skr.xpi 492075 BLAKE2B 
58205da546878cefee491c097671020ef7de698e70e3248b1ab7ea5ae1df67c9b81f667d940c28f54b3f490b198d01b16039f4477ea363e28a761fc6ba495828
 SHA512 
ab66b4bd95b3605daeed32f845baa3e1509bddb8eb55251e8829fc3130f0be9073e6752775e89da33284c6f9aa62c17fb3e6554b0bf0ca3a9b198275078864c2
+DIST firefox-138.0-sl.xpi 439515 BLAKE2B 
e550156ee50ec6770fefd7ac9c9d61fa97689d531809a26afe7032d12a4b486b568882fff0dbcc9bd1ca19f5540287aa0fb7e010d11d0b4c5e52b6379a6c2119
 SHA512 
c4a759533e92c5e906b259a2e03d4f95e2472b7e7d477eb44384898dd9617807c278ffbd9ad99fc7465cdef810bc67f6e008e75e02928b3cf7d40cba2260faf5
+DIST firefox-138.0-son.xpi 273748 BLAKE2B 
80e0cb0d28fd5d7311c61cd177aee4aeb995470e18bb0e58b2a3b1da8bf413109065edbfd05242ca5e57f5aea4202f2a6e32a47393cb96a6a1ffe638753830b1
 SHA512 
4877f0b2595d25cd8de6b6ae6b99e8edee2b0468c3e970a59b401c0d7c6e2eab0b30a69358a771bbd118b351ff2836ce5946f61e366ef2a1bf07798159c43360
+DIST firefox-138.0-sq.xpi 454753 BLAKE2B 
fdf5033bc3acdd7121f2837d50736c42ba5771c7892dda7aa2a3cb68185102c5f675888cb17083e221c75f6c4e5c0fbbeb932b3b325f16b3d680b0729bfd066e
 SHA512 
5eb161616bddd11d20874e5056065142a690be8c1eb9a65810142b91386a6ccca3ff4cc1cbef91f5be3bfb9885d746de445300657b53e0252f313ca35ecfdd75
+DIST firefox-138.0-sr.xpi 454259 BLAKE2B 
18176cf97ea379f40ba43cd761acc344b2aa4261681f9bccb4023f93769fc3722419d36bfa73875cb6a33cc310397084a7e9f2fa8b389a7a25419248bf18ae3a
 SHA512 
52b7a3fbe74bd123cf913447f7264e138cc53426f11349b834f24f4c6c78b47103377c0970a3e5569d491d0fdf44e7ac172c0fe56bdc480bb866518d0ebcca2b
+DIST firefox-138.0-sv-SE.xpi 435754 BLAKE2B 
7a96c94718e2757a1730160757baf43276de8906f90c9f926518a4eb56528391cc97e9bcd080d7f984c91d71184ca609de0b62c0f2f0a9c7a1948c3a351a2150
 SHA512 
ff3ec88130db398a4c2c60cc399d18865bb9f86af5e72b1e65dbc47a0e0d75af88fd3605e41d11746f13fd87a8108c0695bc5918624fa128b1eb4973ab501204
+DIST firefox-138.0-szl.xpi 343655 BLAKE2B 
19133179ccadcf6ab0b31658785b95ca5f6b94f6889b07ab7d249fb2ff73b952536b7da38d43cc5697cacc6c06922d20fb5ff875e3bd4f7597c5bc963cf26927
 SHA512 
2eb9b468da8fbf7a8a4da85eec4a3e0ef402768852b289b4e5de8a47d039e019cefffe88f701ada210b03afbfd1f1460d946e712cc076f4559900af7b12a55da
+DIST firefox-138.0-ta.xpi 338614 BLAKE2B 
8ac11a6077b5277b1f529941b8c2a21a52ad733db40c5b3df8bc28debfca1fbe1127ae99df371cd5eb7b5b22bd534b6f0e681c7f0a991dccbb5097a1aea3d07f
 SHA512 
c26c5a3b1226a472fbd2152520e4d9365cc1d1dfa85b4c396ecd30066138250815be9647356f269347a901bcc151f084e1cdd02d5d9d2324267d1cc035d70204
+DIST firefox-138.0-te.xpi 383671 BLAKE2B 
2f9b00071db5e1fe6a9c8a5197c9ca79ca1d061cc13a9ba5af0bcd277129ebe815c6bdda9dcc5cf207f06c4ca0a9455ba64359ac539abeaf92eefc5d24aee5c7
 SHA512 
d887e032b9eb89ee4f7ddfae9d1b55bfc6f71b96b448120aebd93223af0174828815be590dcd0d0e3cac4769a37beb742fe6d41c567190a084498ddd55b01b92
+DIST firefox-138.0-th.xpi 501191 BLAKE2B 
587f368f427d8ef32f7925ca84332b7b9e86901c0fdfe4abd9f1944bac6fe48cb2b8cd92ea95a8f1351530f7767e1a70241a94229425ff7f9af299d67f564d1d
 SHA512 
5918291af0789635fca30289fb42211d6dedd23661c50d9bc9282146fb7af2cb94e35b30a8ec4343efaef01aa846e61bec44b439b348f1a6d0df96d4bc777879
+DIST firefox-138.0-tl.xpi 352253 BLAKE2B 
15ea57204e4e0a225e7b278679181af2d6584bdc383081a6b97ffccd17b343d74e5cdd3317e622e2f9f11d3f4df8d303aeadb37b92b39e70e53ca68392bbd6a2
 SHA512 
2da77d957726b1268ee8dcbab1b6aae7917c6963ee406e6228185f77858dbca612f5a1495d4dfd5d8863e5b102433ff01471d0c683269c7a050a2295c272ae0a
+DIST firefox-138.0-tr.xpi 448032 BLAKE2B 
f6b70296f483d4a27264c9a2ee1e263cb8b743e5ebe824f2ac14f8fbb8852719164891e4f633e8fbddd26ea5440c3793d245db5a54401cfdb57634501e90d9f1
 SHA512 
9f569ab531d5bfa7c395ba02ffab7be8af6221dfa5c68a030217c3811e73feaa8fa4b57ae3deeb1b85056a340134663e556a815b130144b939e30cd49e90de68
+DIST firefox-138.0-trs.xpi 259382 BLAKE2B 
27e1436aeaa0b263c912b3a3d925702999e804e1db0145286d870e9e59f48e3c369198aca7a9d555af9b3904a219d256ca1967f2b6dffd6e31c24130ca6a04e4
 SHA512 
228fefa7425a26a144984649a54d5318e89659c77b8dcbffbe9ca3a58c3bb91630c779afda8c2c674cf7a28bd1375310571b843e72a999d0899add2c01228728
+DIST firefox-138.0-uk.xpi 515444 BLAKE2B 
f102595101df2a35a707db782fc86758a2dfeccbeaf13801074e933b1d5eeef562a07b38835fc94dd99076584387412a8299cb06457eb82ccacb473a6f59b557
 SHA512 
5a3e83da6a1e06187ea73950e8e47531f10ed24e80f6e1951287d217f826762e43a7d8730d760917e15041c886b532cfa69b623b9733cf7eff9aaa10bafab5e6
+DIST firefox-138.0-ur.xpi 371105 BLAKE2B 
d7e7f1ae0d8b45241908c3a4e3c50cb892dff00557775ad004242c171ebbf61c2a014ac3c83576b444a5e752bf1fd1182b31312b37b5865889d187792bfb8774
 SHA512 
825fb0ed4eafc4560c32935ecd0c6bcdab6600b9b4dab42040608ea73569d9cb3ecd919fc2bad6e9db048087e17c27ae052205e06012213e60e671a274d11434
+DIST firefox-138.0-uz.xpi 304271 BLAKE2B 
e307273765ef220f3752caa4b4bdad00f008a679c77cf04cb709c337174225e7ef0cb5e72d74c253b487b70d8b4b0055b2bbed2600af978cc0b517d590149a04
 SHA512 
d3b43dd0664c2f22152b30002f94e86e3caee5320491ee9ff247fac0468a413d88d7c095ba44574fabd014b82f869a65609239bd36c095791b6d74f8c545c770
+DIST firefox-138.0-vi.xpi 468818 BLAKE2B 
d074a9fb83b7980ce3ca6f15ba8dc30bdb804ffae76c0738dd9d4b2ca1178e8ad9769cdb9cda3d8d83c028f3602b85b9532e137ed4ab15a162f53865e852998b
 SHA512 
01ecd3125a7cfa9a950211bbf7975139d6da5e78a08c77c9b0b1cdaca76badc28f574d84a9a124d6fb043d49313561dd3949a22952b2dd5967bd083dd4dbb7c1
+DIST firefox-138.0-xh.xpi 273647 BLAKE2B 
75496944efbd543bb8ff0058369ea6db6164ccd27b367e314f75de568fb4cb03cec693c7ea391064c8665bca695ba07cf721cc5c0bcb9bd4f704c7c48257f7e9
 SHA512 
5d0ba0227411539445fd31dab33da2b5e350e9948b45f6923c26fc1d965b1f5d2815209b968bc776c42fd58c7ecdc058f51d7a7e32b73a68fa730231d44b43a6
+DIST firefox-138.0-zh-CN.xpi 460404 BLAKE2B 
f0bced01ac27047772d4cde93e8490f4e0c2e85511944897ad3dc0c81f3dfa253b52bd09621bf0a4065b531adb1e38c2f0c9b6122035ce88f07dcf2d9314191e
 SHA512 
10957afd36382b7ea56623d637dba6edc9010bec07de4869eb03165455c1819bfa13ed7110aaacdf595b9fd28a2fe1433980ccea860ecc562497ae05ddb92696
+DIST firefox-138.0-zh-TW.xpi 463431 BLAKE2B 
779daecf3269e6389a0f9fe5ed70fd7d95a6f358996a06925ab2d5e2097a081ea4f3a5e7d01d534315fb2c1133eda6391b836f5d1d32d7098f43831e8a2a7744
 SHA512 
d6903b2c014f6c50a0d7eeb1f04160bf349f885fc89932d49cf0128fe3d1a3eb14cb7e75870718b50b8e719230ae7c9040eab887852507dda698f419e427fffe
+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.ebuild 
b/www-client/firefox/firefox-138.0.ebuild
new file mode 100644
index 000000000000..a54722c6bc83
--- /dev/null
+++ b/www-client/firefox/firefox-138.0.ebuild
@@ -0,0 +1,1397 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-138-patches-01.tar.xz"
+FIREFOX_LOONG_PATCHSET="firefox-137-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 +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
+
+       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