commit: b2ab5dc0424fa4a11797715ec6b86d05d1341f5c Author: Joonas Niilola <juippis <AT> gentoo <DOT> org> AuthorDate: Mon Dec 8 20:16:15 2025 +0000 Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org> CommitDate: Mon Dec 8 20:18:37 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b2ab5dc0
www-client/firefox: add 146.0 - attempt to fix pgo hanging with gcc with exporting MOZ_REMOTE_SETTINGS_DEVTOOLS=1, - bump cbindgen requirement to 0.29.1, - bump nspr requirement to 4.38, - bump nss requirement to 3.118, - drop disable-warnings-as-errors.patch completely in an attempt to find out if it's already obsolete by upstream build system, - rebase bgo-910309-dont-link-widevineplugin-to-libgcc_s.patch, - remove <ffmpeg-8 restriction as upstream has merged ffmpeg-8 support. Bug: https://bugs.gentoo.org/966309 Bug: https://bugs.gentoo.org/962454 Bug: https://bugs.gentoo.org/966424 Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org> www-client/firefox/Manifest | 102 +++ www-client/firefox/firefox-146.0.ebuild | 1464 +++++++++++++++++++++++++++++++ 2 files changed, 1566 insertions(+) diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index 6e084322b3f1..0bc08fb897b1 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -913,6 +913,108 @@ DIST firefox-145.0.1-zh-CN.xpi 476500 BLAKE2B 16718a7fa3ed10de60124327de6eb24e81 DIST firefox-145.0.1-zh-TW.xpi 479814 BLAKE2B f0920e55307e907d6b8800e330ed65c16387e509aac20c9dcd5731c111357ee912e47318bedae07eb17b30cc712e8d41acdaf12cc54d063a79a6dd6ebc37fc78 SHA512 369f615a0fbde4706193df27f1721a1d33b33d3d5633221c961a89511bc411b19f1d19737019e7b8c4a4cfd743c9c3e54b117818cebd319bf22894214f1dd407 DIST firefox-145.0.1.source.tar.xz 645303268 BLAKE2B 0e76fefc9aa2f80dbe1ab21a1c576f5199a1c5b33d5ab059d6047dc161e6bfb27e64a58c676ce805a297565519321a548bbad80cfd1d6effc8e2e34299f3a116 SHA512 6e052fee46c31b2696ba5403f905e0b94b08ce354588cd6315d54ee1dcff9b82835d64ea5a57596dfb1866dd1518a29966fdaabdb4c3838103344bd2dc18c72d DIST firefox-145.0.source.tar.xz 649881808 BLAKE2B a8007d06dce77197dfb40ab9a759287b6bcff4e56d1b2c7acfed9475aaa2f936948534d6e726a158550c70a28bad8ec8c7f1b99ca8165198c1952a484869b6c9 SHA512 7ba40d7de95d7b93278f1823ce460b45c6bfac01eda52bc5c28f23a6bc858bdcbf8b4b4dc359b853372fffbcff4e7f0b276fefe22c2d4a0fa303e8ce1d2629be +DIST firefox-146-patches-01.tar.xz 10568 BLAKE2B 643ed4298d7ab2251ae1f813473a7b461aa386dfb72984e46201b22b6cb0f69f28e92b44a4783dda32a81b4b0dacbe8b47a25b9232481ecd79a19550e74e4812 SHA512 9e2474eedda1c2644ddcb0f9fd2d90ede764469337eab1267d3d4dbe8e3487bb519106449acf1da9798050d61a51e96a882f365e4587f88747161f6418203e4e +DIST firefox-146.0-ach.xpi 293906 BLAKE2B 805c65104451b5736880d3f2e04784f8824fd96ba4ae9274304222dfa7965e65a7617b9579c4529577f8ebcd638a3d054ae83b22ff55e23456f546a2528f5b17 SHA512 ff2d360795e20bce2aa924a68bc7f07637a8565de5f7268641562a319ba78e1d499e62c07bcebd2e01e4fbe941830b11a21b7630067ddc7417d5da49f78010f2 +DIST firefox-146.0-af.xpi 267091 BLAKE2B b6230e7a0b56dc3b0276d3e4f8aaf46e0cfccb9e496a8fdddd56da198e67c56745ef6b70a9b2cca143d4922a5b690edb3101879c9a496357fad3dac01a7d1d4b SHA512 0bd0eee7fbdba23b5197208c96e0c455096407c756c66c1ff575f901ebd0a3273b5880a18665ac777fcfa520636a0794c58c431289319082e6b7c53c325c35f7 +DIST firefox-146.0-an.xpi 331365 BLAKE2B 16951f936c9a638ee36bb2238e2ccfe3f6bc8da196d9a7aa64f3390a1058be2cae555b4c16e4f700d5fda4d4a3010a869701e9bcfd9b37f2c1b0e0e56ac8e2de SHA512 c0f9ab0dd92679610355fe020eb2ad93a1b50b58ed12b714990cd1cad26029e4dc46ec70adebb8caeabecb7a2ae65efcc1032dd9c6093b99d2a47df847aedb83 +DIST firefox-146.0-ar.xpi 445668 BLAKE2B 3dfe1bd81210fcdb2dbf9bbeed6417aaa5e8b3033d1a4590c3a1412d343e97fb2a821e194fe311c885a2e3ba2894be68be0a2332d5a643e596bc475e6f999099 SHA512 032c85808baee8d4d50db631229cee6d69d2a519460a41fadb83e430800d4855a0dd193127daf1b9948fa225556f7478e080d4e7e5b7115a65769b2454223432 +DIST firefox-146.0-ast.xpi 311608 BLAKE2B c4d3b22be691ebde5e24843134ab90a4587375e7d29222d5a75650ca78f54ab20562834cb3208166ddbbea7faa1bdebbcfb27ffb5e54fdc001e74b2688c65816 SHA512 34ab51b779bb8802320426b35284fc857097582bd68f463698f7267833540a210fb863170285aebaf1d3896121965cd300d40814dca1899398bc140e56ca73bd +DIST firefox-146.0-az.xpi 317986 BLAKE2B 6a784c1585d035ea6a0d88ddc3e75d1ff397a89c8f5dc4b5df1518149d7d3c059db0f133f79677d1596402bb9f164b3d6e63e21e56e7b263952d039b10876534 SHA512 d06f66e5d90be3f774537fac8dbdf86b5c3642d3ada51d28eb8edd4868bd0ca60be697799d554841ed0e8f9f6e1b86a2b9c8d712b0e76acb4528027fd776a9da +DIST firefox-146.0-be.xpi 543769 BLAKE2B ccbaed699515180c8d4d2f0c07c0c7945d276c37aa2be7be7ec08682ad399dea3d340a06e50fdb860f1b658eb0e09e70438746d32082436c3c592831c7bc0ab8 SHA512 6b3e4adf76a33749582c996b77399686465c8b7a5f2d83110525964c47d929b17ea2225143ecd48339969c8fbd22a09f453ee51f551279953851649d9a40a1ac +DIST firefox-146.0-bg.xpi 460924 BLAKE2B 6aaf893be504591ec3afbd7bb19fb99a4d9815cd14da03b5021eb4984293904e9ed1463670efabced95ad5d4d907b69f3195f473acd65f1203b52c24f78f8ba2 SHA512 7fad55f4905b033f084438dccae0d46681730ced68c7f505e174d6087b2dbca7a58454bdc66f98c6b7457b454f1ef59822d7c527d2c6102f001e0ccf981ff071 +DIST firefox-146.0-bn.xpi 412157 BLAKE2B 15f13f15ca383c3391532ee5c662dcb2aef5f73eecf6cf160925b506b3cb518a7be4c7f40c90a153e8fbc7b771a66029f74ff503c80e5abe5f0e40a80123e597 SHA512 60b607f2ae21bf14234e7c5971768936a0c81235a472bcb5ec963d01f5a0a5454ae882fec35b8e3e8e33becbd4674b7e0deb3cf7fac5609f5ca32423d6a2d85a +DIST firefox-146.0-br.xpi 393694 BLAKE2B ee88a469109afc2fe86be0d66aa00a4b5549523259034cfc1781dd10b51ddcc1cf6bb8836aacca65019c9a779d39794da45990dcad288bf7f0b1bd1e46d62b9b SHA512 5cf8aa73c294249848dbe67f7ea1a383ddd20dd0e96f1d806ecb735142ff166f6ffbcde0582094f029ea165a14c050fa1351be7f8d793807c76066eea1a7a9ad +DIST firefox-146.0-bs.xpi 449942 BLAKE2B e68af0ded0ba59489fd2a9789c85421cf97b1be0fb46ea51034156e6a25af6f6b49f1adc31fd730511684c3ac0f6b89a3ba5f77c024bd6217108aadbfdfc428d SHA512 295e0fc6969fd21a9d2da04463f1fece27e6ee34d570715873189c58f725f0ad3946461a6698aeb7a06be21e663a60e6264044d3fe93382af165d2aca2c1b65b +DIST firefox-146.0-ca-valencia.xpi 357063 BLAKE2B 9be68880b989b6e91145ed63b5fc6a6849bda66ab5b58ffcdd6099192f9bf7ae0428fde8010168afe65ab6c4942d095476028bc4d595b97554e2ddb642f3f071 SHA512 b25f71f15b48993641025a0f2fcf0a48a824fe9e745fa8f623829e6e29f275ed6227676d2587a1fccf2180a3af7a5eea039a95258700b68a0048fa6b4ab81273 +DIST firefox-146.0-ca.xpi 411051 BLAKE2B f8a09aa88d0e63a0120f9c7545d390d29b3751661140d22983800f8c258d8ff4882dbf6a0da5c1df9f409733c980957c60195e7410c8ca563979915246b8a180 SHA512 30ddc972337ee6a71c41f6356ae571a59cb917c9ef62f2b3480bbbca947b92b43257010990ba51b95ca2ca4519575fabef1d191c44127a599ea878d3221ca028 +DIST firefox-146.0-cak.xpi 388966 BLAKE2B e0d7e762dc8af711e4c11f75d9436371ab89d29165be49094a06143ffd9dcceaaaf3985efa142737bd85d943ba376805c544d2879c8e237749a166e3e414fa34 SHA512 9c0a0eda0a6687301b7118b53bab4dc428e729e397364e3b3d331b78b890b7d35504d15e1eea74b29ab594b65dbc6e875a7ebf5b2be766b87e1fad86145a2b12 +DIST firefox-146.0-cs.xpi 496952 BLAKE2B 702fdcf7efa12180d399ecfbbcf2fcd949fcf73f81f6c8e81afe468dd96192d8a31e8c887676da38632950c7a5f404e57b73db62b51b00a02d59caa5b3cac45b SHA512 8586e9bf221cecdb90f8ee74ee084d767996504bfd2db473c3e5884c20fbcd705187bd5a5047c4e74dc54f6960b1cfe49ad955f5f00b6fcef53e2a9d6175ab7e +DIST firefox-146.0-cy.xpi 460743 BLAKE2B 748b772b8348171ce55526db7b4a521b240d1bdc7bada302ea3d8e5cef314c126fc486f1ef2a89d45f128b3fd7ae6ca3599921e8d49f1eb30ae36ac8cf8b3d46 SHA512 f432f7751bf5940a84d5253429fcc7b1ba49f74716859ee231429aa3bdc5d2988669e409db21d8940caf96f99fd8a12bb426aabdaabdc8fb001220aed522a834 +DIST firefox-146.0-da.xpi 449066 BLAKE2B 649f2c4e1e71eccc0cddb25e4cf624144cc0e3b3e20078468b24f432ad252e40bfada89a6f5f6d769cd1e243f1d3f69b94e0d70321e9cbc1a5e863786c08d9d9 SHA512 2c55a29bcaca41beb54f3046e31e54d446f78134fb71f65d8fcfac411e0d477cbdb4dbe9b43ca41bef4d0d08b06a0af802912e201132ef1e1bc0806d19e4e694 +DIST firefox-146.0-de.xpi 471784 BLAKE2B f05c3b1fb617854c0366ff2aa473fbede7a590f8894926a41f0a6cded39c2efd9f1bcd679147762b81144b63f063a8209ebe9894a39180cd7f147ac62c4a9992 SHA512 8cb91fae8671624a1bebe49b80d25bedf305517bb60cb0baf68b1ac2788cec4193d25987c6706906225945cd2fc6d7f0c1a486902faa2583cf2bb0405a55fba1 +DIST firefox-146.0-dsb.xpi 485661 BLAKE2B 3fe1b06d63e1757363ec6c43b0585cc6d66e30d011010583f399391643ebc1e838ac38fe7bcaeb61003d37797386c64ff600b68b3e877130711fff0bd3a3b287 SHA512 b64dba4e82eb8c70e425308df85c4f49eee40708ee00671f7084b12557ddb489908b45ec010be226b9aa5237107081e062704bd6ecc027098e30e15326f09d15 +DIST firefox-146.0-el.xpi 559285 BLAKE2B 2b978446e4790832793e07c6af93e9559ca1f488418cfa11eec6f4b1970c1cd4ea4e2d221049ef940f24e20d11202918416cc6cd440a77ec8c6fb5c6c4949150 SHA512 ba76dae66b7fb849a5d08d70e03b15d555cbeb54a62451c89fcdb4452c000234991683b12d237feb64f76fce4b50314f176f63af4e43344a6f9f399d2ed24090 +DIST firefox-146.0-en-CA.xpi 427507 BLAKE2B 4159a57ae219bb425a947802ca3de756d4de942568a9a41efb0b44415bd85983e1f9239caf23e78e5530b305941de34f4065fd0eda22dfe8ce877c6b0197f9c5 SHA512 f4f737aa03e6a3d2491562501f729e2b0ff8814eec65bf3dd436e2b1d7b3efd63b531d86b2bfd7b38b8cabb7d0644ecaedf48ecee992a9494af906f36912cf64 +DIST firefox-146.0-en-GB.xpi 427812 BLAKE2B e7019d660071b5b8342b3183218be3165e243236c0cd0237f31d33a5cc469862414c5504281776425464ab05f41d7b48f49d463f20dbf8207bda84868f2d012d SHA512 bd9dabd25935a0b282a0ac2a2a01b17c1c5b7713a85f0e10959c70e63bd01126ae173989c1bede5928d0ef785342be2727f7787df18bd301ce083667be30161f +DIST firefox-146.0-eo.xpi 451347 BLAKE2B 5ae3e6defb2958da5df3c25f3a684b3b9cf07388e0d615a6a79098937c3cad0dade400c46559acd1d675dcdb65c1989bc2ec13c92138a6248901e13ccaea1b25 SHA512 616ba9c7eafaa4d61eeb698ad0987c0ffb6f6c480a9753e3efc5393d03ef6dea3b5fe46b5e09843055e247e04dcbbb88a0de13728a64a00bbb9e7281e0233a62 +DIST firefox-146.0-es-AR.xpi 463704 BLAKE2B 23f9be0053ebf633f05b1f06e78fb1f8c0ed277f4442f744fa2e238dfe2a428f68bf4b9453caec75f2ae09f6746894bd68d0547b75710be9b43756dfd1015734 SHA512 63988e3955fc609190b3f345d6e226baefa2c7bc14c750dfff5361ced81cde750a25050d10763027756f7087153cb7bf87460612dc7674a94acfe2c7b086ef7a +DIST firefox-146.0-es-CL.xpi 464739 BLAKE2B 0b8727e00477ac1fa4ef75e7b9248ab04a2c637a581bcd71eda2fee982157ca88ae5be209288597b0208f0615565881567961051fde507a0cf13565a4c531662 SHA512 c3c4adc11d7cab7e3a2ac6133a7d47d18acd63c3ba94373bff4de7aea903924bc956a6ae5c5184f927da91a9dae7922733ba69d1fc218ff6f43e78fa59897c24 +DIST firefox-146.0-es-ES.xpi 465410 BLAKE2B f84dbf39bc875a9cc1e25ae93d30cc09546348ee357416197ec10dad5d6cd61f127495ee2809646e88605cedbe41dcd64d4b25820b9c24d81022057f1e1edae7 SHA512 f54b1ace3d1203edcc448e14a8aec9430ff786e912bcd1f8538a3b8fb62ececa42fd4014f2979aef2c97d0fa80c9f24a74cfdb5482b34347f66d07da3d3fff44 +DIST firefox-146.0-es-MX.xpi 457027 BLAKE2B 502ddf10f719ee31080b4351e5c7118f70732152be524561d5f4278b2cbfdb1b03b1f0eaad31ba51b416750748cfac7859714dff8e48471b067b961adc469a85 SHA512 113c0e3d6eabe75f903bade199eda4e140736539dc9f11ec205c7c64f8088885b2b5e10d13226a5f0f23d60696f6f4552e407017e5af271a975408da47fd1ad9 +DIST firefox-146.0-et.xpi 358032 BLAKE2B a480e1dbccb64b049bdf0c9b6c114d321a62c7dc5f2288f3e59c88f44b9747ec1f7fd65a2bf9ee385151cd9bae26f2999f6fe7243c514a0b8e226096a6ee3042 SHA512 a7d46efa0d5485d5c4c23989d2d218cf25598d34924df8f96f6f487501869414d02c9fb64b40a2f26638d85546191750021b0fec4c697898ead5705a2c31f4f8 +DIST firefox-146.0-eu.xpi 430762 BLAKE2B 2e01bc98ab6617a4ee7e3981fa9203eda3caaefe30f6fc11ce3c418a5c5b5687a526d6be74e651325857d94c3c589b4c5c49717d699f69c97c5fd2daf68d3f01 SHA512 c0d449f992a1417f718f5ea4277eb78db9d03d1aef4094379def867f8a7fd96545e64d0df37ffe8950134f5a51b2d7944fc8130fa0f594ad30b82465c169537a +DIST firefox-146.0-fa.xpi 419783 BLAKE2B 4107603c3f4fac1fa6f6e622fae002dc663a63cebdf4173aa0c7c09427366431c7058854b1d37f3dab63567f084e53753f7e7e93ed5e29a7f84101a0e6f3534b SHA512 3bc597d808f0cd7894306ff6a2adebedf2ac799cbd885c865d3f44250478954baa98415dff57466dedf5e5fad30dc7c210edc6718498fbecc07aace5394e9396 +DIST firefox-146.0-ff.xpi 309541 BLAKE2B 86c50efd21bddeb4a197319f402658d3abf25635257d844a0969dcab994defb37f3e5c6653aeb771bbd940744febf596a6a94752a0554e07f18db67c77031826 SHA512 a6f27ef3f86e9fe230ac7da1bd389e713001f009c5d80df878de6bd1e7237b03c5aa1a210405970a44a41fd38ba1bb48ca260d32dedfe2bcf4bbf66bfcba9a7a +DIST firefox-146.0-fi.xpi 448219 BLAKE2B 335e8d62e99ef7dfbe71f35d112058195d52cfb55684c16fe727584f490597955dc55a1dd887bad3d3b9223255bba5e7a85c5a3bb3c378589bce2707ff791c52 SHA512 b6072aa6db68a88d9b3a31a2aaf7d04e2c957380c8f5a3df787a020cb67299c88349eff0e393cc589ff802f92f93c7fb403c59a3c2ebb9fd8336051035f117c8 +DIST firefox-146.0-fr.xpi 477624 BLAKE2B 10773b8f10f010eecb99a843ba1ef2481ecb770b94dafc4c4f4609066ff650834b3b93a2e8f628917fd9e4beb371813e03c404681759e4193716d412b5f4d817 SHA512 99e68430f1efba48b4b90ef944376ad9072b54e85fae5c5e68787135a7d1eb1bd1871b011870a17ce98657dd15ee176dd9fd14cb878289d50d95947f52ee9b12 +DIST firefox-146.0-fur.xpi 465254 BLAKE2B c82a2fe92f786a4e9341d7ee34cea136692821a7c0c7f808621a0e47aac19e31ab3a492fa39bdb35d01243d7596d7360956219470d518be2df3bdfb88937bdf1 SHA512 90c248b76cab669916ba44d2891a84418cb5b886e3929ad1e2ab120f8bdbf45a05483cbc1d96e8581a3c647f96602b74b5ab1de0a4bb3e61a3d0eed0556362b1 +DIST firefox-146.0-fy-NL.xpi 460261 BLAKE2B daae7873cd8981b8ef1a1168887f24504d3b2c10c90d697bb3dafda773b2869582fc927a41f3867122a424674293bac75bff7e1aeffb190f32c3456de24cc761 SHA512 4551e9a0acd4449b536d6fafb22aa52fc1b71e1a8f48bf3b3dc9197d1cdb6af8bce0b6c2c5f7c10afd86810cf3cb7f741443d1132324fffa8d074e713bd4fee9 +DIST firefox-146.0-ga-IE.xpi 315082 BLAKE2B dada75dbcac226665f763f10cca4e3f652448504c4e92a633812f97e453b5464c5feb8e1c084bdb078fc5a57eff15c95c523b00a9e7f927dc9862074a6ac40f9 SHA512 77cd6e88b4a169ccd2788c11241331c24c84c15f083a1528274509bc0cde27da2198a0e4932c7b7e65078e63bb408e5c45a1e08806c38a4442513a613182c668 +DIST firefox-146.0-gd.xpi 397610 BLAKE2B 90f19aa7e9b76dc43eadfa66f6c410c9e558789a5f474c26a72a50323e64ae0b9cb94b917bc8f395db7edcf51e1dfd8fb4dfdc8904e4d46842d2e069a2c78950 SHA512 2e8260ad57915dc22b58e78500fd8da9f52127920b30f3ebf83e4a2c9ee311bec802ecdb49db24d80d484e3bb68b69e66584f987149c38cd5170280b1295b990 +DIST firefox-146.0-gl.xpi 446391 BLAKE2B 1691b9664ccaf74ef9dc55d09bc971d6150f1e6290f30b636ae8f58b7091d31797ec65a9a88a0850c22dcc8b5d8b6dcc62c99db198ab5c94eb516a0d8ff63fc2 SHA512 e69a151ffe51c435d77e08d3e58284eb3fa0af562e3746de5001fca5aa0f79e6db0d0ac5ab7e232bc778a9ea399bf073580dbc21f7e8363b626395e4c8130f5d +DIST firefox-146.0-gn.xpi 468657 BLAKE2B a02ab90d420a01ac8a94c85e861a7a32edeb3eeb1febd43165e84b016618cd19c4b4b223ccb09a6c221bfb2541537df2e05934d7a6d37abc452359aadf7ab49a SHA512 8a6e17ebe6f6b8a1a979037a3f38b9182ebea42e46b6c2156e87083d78700643e5a4231fed716fe0d01ec8c6ed328ee9f6d920ba524f4f6bda796242b351cc52 +DIST firefox-146.0-gu-IN.xpi 357907 BLAKE2B 4d7818ed1256bf2c6f327b513f10eb81834ffb9c202a8ca04863851ece5968b2f6fde2b3ad716e73faf0e26490526d04f8ed9e2e8f9c79ead669fbc18b1be882 SHA512 9ceb91ec6255065995cbacf26eaf4a6d34cbb42040a8a415aac3af4c1bbe434963c4f220d7413afb1986c87c1160c839e50ba3c96422a25e258956f99c5731e0 +DIST firefox-146.0-he.xpi 463601 BLAKE2B eb056a185a787b5edb847d138e3d33e0746d406da2867c7597978022239571662edd103fce73a16cf1ac18423b68ab6af1b1547e0119010912db9279522b92ad SHA512 027d3376c9e70822166e618bf6d7ecbf0748325cb9d26ddfea4f6f5f347d047cac22a1f2d78a120cd856f1f85dac154bc6169a5be5e28c13ab36fae1ab43e7d9 +DIST firefox-146.0-hi-IN.xpi 376551 BLAKE2B 9450779618c2a00f27b438c393b833bfdfe8bc428b7bb0005b7d582171c29c382b287fdc1a2ba342f691ccdb6c6a32d311ee3f2bc155f33c391690a5bde1c765 SHA512 e983861877bd2a1076075e296a47248f58c485dca20306bc89d276691f061c900fc8e0c275e1b674794144694bb540c749186af48a7ef7a0609cfe4d874e83c2 +DIST firefox-146.0-hr.xpi 439424 BLAKE2B 89d86eacc6fb794267a9a7b358c1fbee50563fa38045454b6d24b919ec7207e38599cd5f3668b7f8869afb6b54de82321b7a2e9895597693bc4840118bd0be40 SHA512 b851561cd6f0bc05cec3651185f24cab06dcc383964260e3aceca7f369e607631d55e7ac9e5eb820f52136e7c8f3977f056d52f1187cb8c0c80340a622994f55 +DIST firefox-146.0-hsb.xpi 482198 BLAKE2B 7e9e795a285c8b03d22d91353cfd20e4fc1431b5fd9832b6f4678cc6742d75f00e7bd836cc14b2301f6a46027a77ef3d80989405febde8d4bf1b0616bac52d35 SHA512 bc24ff8b3abb0f501b62ee22e5f2d9f2671cd04a19cde248c552419769520996ad5b311cb8f919cce408b6ab0b343ff8d21441d1ae4a67095b1ccdb504ad0f4a +DIST firefox-146.0-hu.xpi 485908 BLAKE2B 214ef74c4f0b2c8c3b4f0a3e4346aa4e17f7a8148e232e1078bc5fca9a4aa7ac3b5102ec4ea5a6a515383bfbe9cc6641ecd32eef61c50edc8eaead81ecf30fac SHA512 e2895c4233692dd22325bcbbebfbff513bfe0a9bcb6aaf5720ff0a8c9770f50407fbd47fea2261be39729471345b7a63e8c00500de072d65e6e817aaf2e45dab +DIST firefox-146.0-hy-AM.xpi 469996 BLAKE2B db8c6daf7ce2bbed6d70ba6dab2578c8ae764c85e3d41e2a39357c178f5303135b488724e6068243a1950ab7c73b45b1645b61e5984f9fd3d5fdadd4aa068de1 SHA512 dc2f5ed0d53b72783e92908993195552417a230b99a2466aca506763d9d612a32ada99c2ce592006cc66d28167c4246b1fa6795d72f809d2fa9cc0bcba8bbac8 +DIST firefox-146.0-ia.xpi 447674 BLAKE2B d8a7c4723c9c07e676a90f791cb1bf3c2536c5fb876451f347a2b6cd3bcbadbbe1f631af7808db8aaccfcee6d338269d9808aa09fa60c85d0bd2d55caedd041d SHA512 f9b86af68bca0e9e598da0939425600f8db807eaeadbbd3caea63673e7a996aee569fbbcb3254968dfe4e1c0598508e4af559bcd9f13366a7d2055ed323a4971 +DIST firefox-146.0-id.xpi 430254 BLAKE2B ed506730d812d86e6a0f08394c8d562059d0898f9d5523431f2ae33f3c14f6c3377043666c3d651de7a03b2ed17122be254fde40d2abdd05099974effd1b8c25 SHA512 eb64006a858c6cc98eacb01b5161d925c181422f7bba231b7885e06073dd75a8c909451ca09ede8e2fe2946ffc549c5560a1884defe11867f04bf221ce3e531a +DIST firefox-146.0-is.xpi 438353 BLAKE2B a19d08507a68bad2cd071ef0e705984bdf6db64650d6d2d18a6e9beb3207e494e56007cd3c4cc0c66ca38d4a3fa4153a70f4ca63a2eb367616c3291967190eec SHA512 24d3a39e7fdd6e670703371a30d24d0ad4de31483f77c51a3ab05651271caf53cd78cdda7bf5c984bbc72256b53f03f0feba3820921bcd50c55d3b79da2ea4e7 +DIST firefox-146.0-it.xpi 459049 BLAKE2B 16fdde4dad8c7759678a5b26a34f63eb9569c240ce8e26463544ece69a3ac1c910a6c5353f0c49d61b4d9edbcc5d6d0edfb4ca2d8021e5cd1e954b1cc631d2c8 SHA512 79fcd39290e9f799ddbbc008f235fda1d605fc8e4ec9066c4e5600fc826a7bbbfb49185d96a95ab96dbdee429d964219d379ff167b155f2263fba09611bae824 +DIST firefox-146.0-ja.xpi 500728 BLAKE2B 0c226e49edff610c135dadcc2472ef8401c37459adc4050d0f7e26f3bb5cf489748543c315263fa6aa0c01e03212ad6a22eb7915c6c831e5fc96f73438a122b0 SHA512 98649da879aeedf6bf609a02cefe4a5b7e7927115afb62b1c30f1a0b758a31e53a5b5999bd41e675683624d051f602439baa06d318a8f2007f9cc799b99a5ba6 +DIST firefox-146.0-ka.xpi 516847 BLAKE2B 409ea253dd5f478e52af8df8aa4e335f1263d98bc8f9e785d707feff59c1c2afa436aea5f1b8e696356ff578ea95d4488a125429058261d0b020d4b9e66c2d95 SHA512 7e86f11adcbe4d0e2b9c8b0acbfd00942d02635b2b5e31e57d740c36ec6130bd8b3c5d6ea849420acf35ab332a959f32abcccbcd2d485aba219856f6965fc3ff +DIST firefox-146.0-kab.xpi 425014 BLAKE2B c2a6ec23fff4d0a02939cbc7d0de3a8a4ee87dd63f9e669e9a69eddc45112f5515ac3a3746601ad1c81194a8470a3c22b0b92b15990648538f36f6e87979f51d SHA512 2a0330fc2b9bf77b46b9a89d3f04b8461913b785f88f20e478e725e5671f4bb4141e038af80ba0953bda580f71df1edf2b9d66e445e8d5e35a635f99569ce71c +DIST firefox-146.0-kk.xpi 515135 BLAKE2B c98beea7b004ba06aa53f832b8eaf66dd680ad299e178bc338c7605592d111d32b2231e941aec72ba1ae61667e77c636151a5cfa8b8caf2c8f39d189860fb6c4 SHA512 6a2d8baff29fa65e5f90d9b0e7e82db40a4a4f72d8ceab77b105939e520ea9bbfc9443f868046ed99784b2273e93876adf225ed92bb31f7168993bba9e14f76f +DIST firefox-146.0-km.xpi 347329 BLAKE2B 99232675268b52e9e5f813b04a4f22b8250237739c26c392dad013a83a3b3d4fa8a0984c75cb0f53bc37a026bb4b20e9b0e7edd612a332184f128da2fe43087a SHA512 17c3d824dfb58162896c43832531df9cf8104767b5e01db4616b91b8fad8d05405869f89744db687dd379a803eab92f66e97314e5085c48c9291458868523180 +DIST firefox-146.0-kn.xpi 331574 BLAKE2B e04179ee2ae01ecc76bdb14ed58f482389816ee01190c4b27fc4a9bb9995183a3c7b49cee4702d564c77d81f46d760e95e421f9099f465d1066c76daa484783a SHA512 47996a7d2858ef2fd37a8665931cd8ec55a46d9e176c341ee3c64ea05c48738eb1c56b1eae0f330ff0ba4d0352bdadb77c5ac665f0b628e4553bbefc779250b7 +DIST firefox-146.0-ko.xpi 486173 BLAKE2B 7607c2bb3f588793292a553f79fb2df343ab243e0f6d6d474d9964d117a20e5b0165e284d16feab12d18c9b1e8a8ea8c8e0173c15b265c89390f2cb5e63ed158 SHA512 38d81568c5d45d88cd2bf998430b7fc92836311797238114ae46d993713e1499051aa54b502595eaf9d7301d5e46eb5202b004b390b7a50635bd22b6ebe2a1cf +DIST firefox-146.0-lij.xpi 318771 BLAKE2B b74833e499ec2aa37eacfd20f7c1e8ef5400b1af345ae3c08e6a7c851912d19a185cc3d6a67c986b757d0004fa897d70716ed8ad54b408ab4b6ce7b8741cba8d SHA512 e8f1d5392f94bbaefc574f34997017f69253d616f894c4e6233b6f90898eae5d86f2be1c111fdc9c4998b8945c370205d8e556a5bca16cdabedc06db10b06672 +DIST firefox-146.0-lt.xpi 378734 BLAKE2B e69df099a41f4220013eecf1d4468fbbd6270726d9b96959c5b87c92a494d30b793af2a89f105074baf5fae7e9ef2f97a60f0d1299936e9ffcd8741f9babde86 SHA512 537406cc245222c70abc4c7ca171b6110096563ff742000298dc6fbfe0a83fd1713e9ef119bc01e73683ccc12256e6c881427dc9b6c16f1a96d4bad115b8f6e0 +DIST firefox-146.0-lv.xpi 389741 BLAKE2B d21e9f8b95f796c79f780e768e2a673d085797ed3bf6a775c67e554ec45bdea18023f1244bc329a18048d2ce62934b33f18ca0f2e08f8d057ca5fff9eb667fd9 SHA512 bfe9ce02f6cc600d6e27c634806d1f9d8c2dcb7a7a1095e3b3ad5619581e6d5de81de867c95a28bba6289899c4883cbc2bfd00e2a2aa8b6cd7af28d07ba5b3d5 +DIST firefox-146.0-mk.xpi 316206 BLAKE2B a9797c2510f2e5b58d5ffc74e4c42c0d8aa36041ddc49f518c3f2e15f7089f1cb4b47916dc124fd65d6216fa207158f82888e3e53fd717fe2674d8677e36726c SHA512 2c53c590b70ce11c381f7b32ba804603e10760722f242f225a6f3e762fc774d7b50bce85eb9db10203d981fa63798b1ef0d3f04c42915e477059f4f9ce0c03a1 +DIST firefox-146.0-mr.xpi 355608 BLAKE2B 54c4f2b562e9fb2f35a67aca638b4cc923fb308b44a5e962fc89f31424e35701e8079499a7bdd9e4f4c1534dec06d9c2fc821d451ea1f0620ca1db2b393fe554 SHA512 e5d55dc3994562edef24a0fc0fe29a7ff148293ecd2e01e4a0048d1f5e0a9e654ab270dba3f085503712217357d594324cc74e2d9407d3135b7a7896c4e2f655 +DIST firefox-146.0-ms.xpi 295249 BLAKE2B 9bb30c6207942ce92bbdb5bde479154bf1d429f6fcf302dd8e87ef8f7ee1480bfb28e6e23bb9aef4a1ce85cfcca25486743f9cce987bf0e6f4ffe25654a5442e SHA512 82150b871a1924d796e9f7fb577225c823daa9cc44f248d045ccc0460a1535ac0b6d5cdc32726094cef97a8e0c0963265f1128f16ba3ff95079970492ca807a6 +DIST firefox-146.0-my.xpi 342511 BLAKE2B 9dcb961bdebdcb20e2cf8f2eca98a659ac68077669e35bd23face0e56145808ef523503e8d997f7ceb47e6ca5c9ed9e95a2bcdfd209d2ea90b8458ab65667b71 SHA512 be29084acf6441b2e22fbd06154a3074c4d6fd302b85a9d56042f717e1fcb40d4fd212b005e889a2520a0a248cb116968026112a22e7c6a0dfb9d3434631824e +DIST firefox-146.0-nb-NO.xpi 447001 BLAKE2B adfe82b978cb75d752c863d0cc296749449fff00d2859e7c4a719204a7aa86a30bd676a732edbbf9ce3470b65f04c8c5234d77d1b7f41bc808d91652aa5c56b2 SHA512 120520c8e0ffa7c823deaf2f8605cb33ea0952afcab7577a571a3c99d75a17bd7b4b2914122fb1cb009d26dfb2fec07d12b79da7ce047f37a9536a9732993b82 +DIST firefox-146.0-ne-NP.xpi 347671 BLAKE2B 39897947df191325a477c0962b6b10186650fba5f0727e330b1a91166bc83abf56c8d1ce3f52b4a3860de0541639c3ae532d4c4e15595953aed1f61a04f3dce0 SHA512 9e833e0c4e1e71b7ad1a91626cc4a14c11527a339daa2e1f5a6788043160ce919893ab98e4fc4075dec5019b1c8a13484026c631a2e31e95f7fac49d19b93501 +DIST firefox-146.0-nl.xpi 454145 BLAKE2B 69645a2a9a4b9ed2f5d3256b7d72182921c3af969152e10f6ab1bcb9748cb33f3a6b5cbb0fc98dc7e67a32644438c6038016b60bad73442f968b94202cf94bc0 SHA512 4dda4458c1125ac16fcdcd0ccfe493841af849e137e7b026f9f6603677aa51481e8ae5426225e23c89f57b2857de590a06f41135b5e71d3166e1769bc7871a83 +DIST firefox-146.0-nn-NO.xpi 446400 BLAKE2B 1f846435fdc3a74456f4c888fb0bb38f85436a734d9c0f777e26a9e2c20990a99f792a57ca3d1824f069da1e005a6d5c19e250e27087d9842db428f2de414685 SHA512 1ed32a73f83b4de98bc1464dc369aacce78d06c0adf320e2ba3ce3a6ea1b633cfd69356eafb330f719d7c5f6d05271e0fb5c61adeb514782159d46c1631445cc +DIST firefox-146.0-oc.xpi 408785 BLAKE2B 0f94043012abb4e9b13948b83f1a1f5ffce236ea8ed72ef5a9f54a0d7e46b0f78f44d05bba72ed73bd277b56fbc7c066e3c7d348d9fea25363d5cad500ce0ec2 SHA512 da1ba28ef791841d4d21c7b33d00bbb3e1fd6623f3dae8c4e210f3a3524b31b88128294032e3576bb721ad80e3c983d31506bddef4980a1749f90b2e33eee5a6 +DIST firefox-146.0-pa-IN.xpi 512539 BLAKE2B 6318433f8739e13dc63bd22e509b52f077b83434c310e126018b799bf2574d156745bf52d27cd1c1376aa9cd818a723bb16af91cc6c40a0711385c9c2fc68878 SHA512 20da41bfaefa8acc7b19e9b3c0849cde67d3d0a4b84601aa21957de384c97fbc0300b4040120a23d45ac02952d714bea5cc720c92481a49039251df828435767 +DIST firefox-146.0-pl.xpi 483142 BLAKE2B b88a9c1aa0bdab2d697ebe6ac98ee228f824c6f06cf942d19f4440857325bbc6af6ed1cb89d9281510f786eb65cb867de5fcb8a05aead178c19b9a5925f9234f SHA512 dea38646a00fdac83a90f6273f37a26b35d9d087c841554cc08a5712c69747c2802031d439f3b2fa2635699b2af67ecd5d7f60d30aeaaf4d545dbc2b24864226 +DIST firefox-146.0-pt-BR.xpi 458755 BLAKE2B 6b6aab01589b31fcb0508b324046f6194aa6b63374a6120d9eb0118abd7a03073ae83b5c1ed2aa47d3d19e145aa51240e2dbb0b4ad26a155a81eae25d9bffdb1 SHA512 d720887537b68722926163b4c94f9f9d93d8a26aff1aa2f7745966d42dd7ce07f509c94c98b2458f06fd2b722148d00fbdc9ecc2683edd6e226233588d551acd +DIST firefox-146.0-pt-PT.xpi 448805 BLAKE2B e9ac5450429f054b14bfb91561a5e2e2290cb91aafbea7cc349b35f2f849c61454b585385cf566441337e14f94cae2445019a3980eddc4f2f4746154af8b54f3 SHA512 707d90810f32508d355f241735ba6825f43d45ff07ddaa1ee51d590730a44330a59103009e8d5c5cff62f0149f6bdcfae52f9a4ea15c7b636ae6d3a2dbf1c7e7 +DIST firefox-146.0-rm.xpi 452248 BLAKE2B 4c90353e1bc3f4b53d36a1081288d4a253448b950400d21a45ac6a24d730e1f9bbf435eb84676f402d795558f391b9b7f996d7fe1f4c34b21b39cb9a5341c5b8 SHA512 2036558eb25ea93beedb8e369a8b1613f82e1d40d82bcea26acd773c48c24c3936291ecef3ba62c422c180ce3ac1eccdea66b3717832ca8f5d9515348f21e576 +DIST firefox-146.0-ro.xpi 471574 BLAKE2B e222c334ab2e02b39c8ec7617804be43591061bb6387496ab5469ed8b5762cc132a691d5a92f8cddcdf37ee21c369c053c62e4ce8b265b93b8acafd5f43009e4 SHA512 ffb1deda49fdb1d3f233322aeae11bdfe32818077c811560d42ae314d9c005d2abb507a4cef4096a9981bc5e13a61f83f11403072e5fec51762a4d4c1011ff98 +DIST firefox-146.0-ru.xpi 547678 BLAKE2B a65734cd20f9b4d782a575d019ed76970ef1acf0008567776a8842d4d7ba18cda28ab9ae932e29906271dc8dab995a8f7254752ecf7852497f5ecb788b314844 SHA512 c398cb94e1a48b7a000e5418111a1aad102eee359709604d14fee8c75f91b3414b18e36f74766acc00b0f9fc610b2da4048aa457a8d5ac2dfc02bded1e878c48 +DIST firefox-146.0-sc.xpi 420491 BLAKE2B b0e3cb327f3129941a4fbbab84d7483202b3d9f4ddce73b038cd5c4fd103f2ed336b159081182c172f0f8880b74e2b618e795c96ea56123733f8a41d562bd9e1 SHA512 fdf0776c6ab2372db7064cd5bb1c34a3d3d9bd01b066c19b2bd2860fb0169b24a8ad85d83fbe80ff57ba45301c858f4c979801c867641873c0b0f144a50d2f4a +DIST firefox-146.0-sco.xpi 321769 BLAKE2B 2232f1dcecd850d598c201b1dad142434927da28f78a661e4f279a1b409bde5db48b1ce332ec3877bedfa4160d307f4f819c9e9df3842d04047bc1e5fd9d5862 SHA512 a883e17ddd03a2d2a786a36db2ee2d66a5fa28720b49d209455f8d5e42bd88cb25ab725f10b6021be1a376c85dd750bbadb538714a6fc75cecde95878f8bf3e9 +DIST firefox-146.0-si.xpi 409006 BLAKE2B 647abfcf4f5303f8fd3521bb28c05023720953deb7d987c53af0dcf47418c7c39238f5fdbb3428ad2a7af245f016e8d34d2211c5d234c4c1af06e2566191caf1 SHA512 4ea75c0f64db5476e3597acd9c4c2920f60edabcecb0cb557e9fb94851538c161ebb58b78e0cfe52f218be4e8714b950cc892c5c143ec7c3b15061f4bd978992 +DIST firefox-146.0-sk.xpi 488440 BLAKE2B 94054239441da693f22bae8ff2c0fc654926d2bc30dc7f6d691ce14d3ae78f6beabdeb505f3654fb73882abf37ddf534cd916db02145e9273aa40259c593e931 SHA512 34ac85cf3ee0fafa3a876b075db2bc479595d61c8170391091d4e64c821af97c53bda64d843e301c8e2b2288d24c3b9ce432bc2efa80b4a45017e5989fadad0a +DIST firefox-146.0-skr.xpi 483170 BLAKE2B d0ac79d8de19dfdd34c0c0e15b8c7dad1ed224d5c03fd597e2d1f6f7ffecf6936465a267626c24315d623ae46b237f0ae01eba96ae120492703359619359c15a SHA512 9ed48de7476ca2a59c6286c3dc4aee0057753f0072af6da4e3ab4214cde9cc8924781d98bf4d86ba4395b4b03584dd603c734dba7f54fb95aca3bb7014c6eb69 +DIST firefox-146.0-sl.xpi 455795 BLAKE2B 8ecd9503b7b248a1991ce7ff380bc251db5c0e9bba1cb7e7caf651758e8de9a4bf402ad2eb56e3f6c4a5eb023a6d0bbb07b95aba7abf7721c6aedaec7ca6ec4c SHA512 01d6375b66d9ac2dd3c5ebdba7932dbb4ed84117ef0407815b8af9478f0e808e0f7030cb7f3fd12a24c6e24debf0b986748eaa16df838322b20723296cb8ca75 +DIST firefox-146.0-son.xpi 273562 BLAKE2B 645639e36b57330e8f66593c52b418f79a4f49cd1de0d905d0bba3eaf8f548fa3cdff9c78e5c37f36bc4f042daebbee425f2d984c3782afc057991c34e3d01e0 SHA512 6d926a28d55f72dab5881e9827c2599eee6122aa15ded26a2daed967a4b98e538f6529634de141889e85a9ed284860620ce834100cbf11ced4c9ae48b52ad31b +DIST firefox-146.0-sq.xpi 474497 BLAKE2B 74d1525a5c68644d37c856cc9784b510af815947fbde3bf8c9b5c7de40ed98d8327a6c95a3d8e5eed06be1310353d76d95ef1823babd2559e26dc95496cf05ab SHA512 23fc8bdfba8c5872c70cccbfe844fdb34c13acaabf159d89e4fd3fde317b025804856a40fb43cf178183e7379a7bf1e57046a2687c4215845d3b47cba465b86f +DIST firefox-146.0-sr.xpi 451052 BLAKE2B 84050ec036fb76268f71c84d62f36b4b8b9901ed78505853604c78c74cf48bf9f6fc1914847619d91cb0b64e30ac001b47985e606a32d713566f0e0b0769de91 SHA512 d67cc26c8d0c933bc7d159e4a2f1d4a5547ab1e4757ed64806fa55d8b79e21b58568f95b06497164477017759091683cf58fe7c1dc39c07e6f052f5b544df7e3 +DIST firefox-146.0-sv-SE.xpi 453950 BLAKE2B 1c59e93d5f904f34154081e9e07501e9c7696827915cc32eaa2b7dcd4ca813aa77c8a8095704c2b3ae153565a8db5d42ebf11581422dc88f4ecbe05cd00a95ce SHA512 850aa8716adeae436258cf803912a75747114e529f6c89f3c4d184767d89a748ed4b7f92b083148cef24023690def7606c0baf9b4cb0624a26a2b41d46e89bc5 +DIST firefox-146.0-szl.xpi 340395 BLAKE2B 59797bd6ddf3d02accac64d2180b26456a225f43a195a12c6dbb2d13e3b27d09d1b819ddae9db8dcf8db96e88b4d8af7a19622a07ae947aa3d67055a79210b41 SHA512 d15c00c94adabc933345028bef600ebba35930de3cd151ec7ccc30ef684184d78482bcaf091cc7c6163a49c5ce3aa7f8adf93275937796dc8082a528a106e591 +DIST firefox-146.0-ta.xpi 337694 BLAKE2B a9dd9eda8016eb9a07aa3e0a10bb83a8d0dd7d0f8c86d29959064b94ef2b6ff123d88046332cada50b7df0fc95dd4c81324ccf92b576449355d28750fae8ab55 SHA512 fe75b2398b01dbfaed2002c506401218ec41ee1efed68f5604cb9127defb1d3b2773e1623381c586cdf71a66327b00a5224ef605934f2e87e2f9f6a1d20af9c1 +DIST firefox-146.0-te.xpi 380822 BLAKE2B 61d9af3a9bad9032da01ea2ecf1fc500fec5864ff2c3f5460064da793c4bd683b5fbfeefa91b87584d7e4d7f1215512b2c4f42d2a1b8290adbfe2d2b0b6de649 SHA512 2a9ff537e7691ba7db9b40735f53d51cb738c34f7498687ebfca3c7c932771027a8424f020b2e272545ad75ff4b41c7e30b589b88c4dafb21ebfe615b4398ce3 +DIST firefox-146.0-th.xpi 525439 BLAKE2B 201b8d25b6ed6aad2da58405430c65e945efadac9deffda941e14205d6e321b2bafbdbdff4584effd8ef37fb88fbfe15d69d8ee2b32e0852237daebac88f2977 SHA512 df1b973933a380cae82d1aa74f342b22c779e34733d8c5f0ae126ebe0f59e4834660807de2203a481fc5270c69ef9615d844bf0a6b19e073e32a9f2f0a53c13e +DIST firefox-146.0-tl.xpi 355096 BLAKE2B d9d9fa77df904279ead74b0b4de314696f30e9d2318f4a992141099f3e835444d252e073f624fa609fae55a7518dbbe5548ec243dd0cce85493d04c0087203ef SHA512 060c77ecd80bde59d3135ad246e82d63484896c3a9816cd9e686f130697ccee8040f218fc37bc53a9e0b5cb7d9ce40c0249aca61b7acaa16d16023b0824847e1 +DIST firefox-146.0-tr.xpi 467748 BLAKE2B 22e2c825ac7ac8674b18f62d7fb1ee46f1b8dc36aaac6760c0e08be8a36b1fa8437500c16494369c208440cfe9a0b3fe1861d1030303f917f8d43b792ecf9ec3 SHA512 77f1a1a5ac7aab0e5bbf1ed50f475921738bbf7c896c3885c3a689901350995ad2db247f750db9a5253057c62d3d6763ba51b40109e64d49a466a55b3c0a02f5 +DIST firefox-146.0-trs.xpi 323650 BLAKE2B 76b4d2d5b0e1bf6e6555c1986fd400ede35a434a1cd61927bbfedb1255a13547866d3f0b14cc5451c6d078aa41ee73baf233f915d90d08113501b2d216ca8946 SHA512 38dbeb86f2f0c34aaeb843bbcd1d62d9705fdda13868fac63de9e387026dacfa2dbb21c509adb70e41af8b18500799181088f0db40f7d30129837a85cf1c9227 +DIST firefox-146.0-uk.xpi 532325 BLAKE2B b5a184e0e82a4aeee9f063409e8a3a5df3e85a46ce9f30fe659140196310d43345c7fa6d31ef08c035fa6145ab57a8c653f710d58231a8488c254a4401663fa9 SHA512 45e780c248754b64eb3d3a2dd8cfa164086eaa6e134e5761e18997b3c9bfbc52db59fb40e77392dd51c414cac074ec2fde60396b119e551c0a2408120e2f3b07 +DIST firefox-146.0-ur.xpi 369594 BLAKE2B ca8f1a0689263e1e0f9f5000a16cbcfaa7b06cc5fd78d8267ec16f16c3bac2180053b33e448aaed673a29574c1ff2fe7352cd14e766c7c067234ea610f25cf01 SHA512 82924ec0f139c1e67e851d907722ee880596e64b433e69d71bec5cedf0aa0256b433eb10aa5d45aa4c9925a42682981f7bcc0951dc9cdd410bcc3920b8663eb5 +DIST firefox-146.0-uz.xpi 303081 BLAKE2B 6d9f0522a1aacf9bd0500b7722113892361803fb54648c844269c5d14bee1c217ab091cde52b1c72d68e2abcd14e26fcc46689b0727a92880d8737c5c993dd8b SHA512 5725cd144d11559674fa7439f8de61450acc83966625e3c6b58ca197214ab59bf340c39090fe81957247d4c1190eeabd46886e8b2c41db0980d62de53c84e027 +DIST firefox-146.0-vi.xpi 488042 BLAKE2B dcd1d9c62bf609dcf931962125500cce401bd3a365f0a3e6ad595ad73bd15e36fdd50287f1e9a7e217306df055f06488ba288d539801aa1a256084adf6266f6f SHA512 0d0cfe92b6bcc0d1ff18d1e0d02bd21d8db52b1f08ac6f783a4f8aeaaa2a945d8819a5a58d398e9a6393b63168a7fb1ee16159c70d5a8171181eab2344bed649 +DIST firefox-146.0-xh.xpi 273181 BLAKE2B cbd2ec9165ae6d3dce65231e9140852e7e23a18fd9924b00924e8ae8f8fac91af826417350cdf73db68965f26b4256148e6c99bb323bac1d84d5a35071678ac4 SHA512 8aaaf8ac5d5ac5234f80c5d95fe3ca625649b372074adf66da44b01103441ff1710013d97db7c03efb79f54cb97a731915a217355788eb87a07c817e7f61e47c +DIST firefox-146.0-zh-CN.xpi 479108 BLAKE2B 78202aa4800ed1958256be1a4161a29d75b6745de45448d0f9731ce764eeb58c85a6d23b80a63d128b45287641b6e9c7a60d4f716d40a3a7893cb8ab1e4e368a SHA512 ba94f3500e46a3886fb5eda19542671e998534ec18ead0af952856e5ca1be904c5b0e303ee9acc1706016180d3b544d5b0a392f89f02c11a600bcb8079cb53c0 +DIST firefox-146.0-zh-TW.xpi 482586 BLAKE2B 350b92d621388ad2f3db1ed1a189062961e31d8dc2ba5e30a354ee272e20c926033d54f1ed210cfa6182884064c370e4e9e917e47f1da23e75dc5837441991d8 SHA512 38e2fa76833afa6c8d93ccef7e2e3c902ecd0b755e8574f49e39ea2c3e012760430ec70b16568b48f2529118f02e4396bfa0107c3e05bd0fa3e35b0ff1b42116 +DIST firefox-146.0.source.tar.xz 646002476 BLAKE2B da28aeff1bdd88ad612127196497a37acbe6bc83944b08cf2ea9a1eb4122899326fbd90ca2b1f4d2a6f331afd08d1699108cd09171f20c945f3f3fe006909029 SHA512 db6664310cdcdede832b29dea533b345a3ac86f9df7813118d44b1ec2c4a32e4de2b6e98044385ca6f6026eb3a9994c486a1ddb8b6f4ae7589ed46b122c05630 DIST wasi-sdk-27.0-arm64-linux.tar.gz 124841089 BLAKE2B 7911b8d31e06e15a7e2001d81bcd27a583dd26d75ca0afc2a5bf31729bdba0a5786669dcc56dfd66d09c44862737dd3a62e8207262bcfb6e6845dfbe26216535 SHA512 6b6b5e109f2312634d67f0d7ab9690e0a7f69b21bf4894b86d584f7b1c340bd6696a5494ea8f96a759c691d023ac8c67ad7862112fc57106b86c2cef11f14f9d DIST wasi-sdk-27.0-x86_64-linux.tar.gz 124790235 BLAKE2B 768b9d8d66d79c000b11fa0710d1170e6a5f87c20ac8684151b44cce45e5cda83a4c3a4ad09042c4151e40cbf4b9ce0795f0cd5cad30be7b00972a88dc43f7a9 SHA512 a21a19996fb23fd1b522c328827edfeee74bd42fbbf88942b5d46d02f21e6fb2300a783c96915039c5545d2734010a94f3fe27b0751b9722988429669a2a6c9e DIST wasi-sdk-28.0-arm64-linux.tar.gz 121761064 BLAKE2B 044a93cf1790dd652a86927bd74cf2a8b081a8db1261c2879d7fa72d5efde6a1ef65be63ff94c94d1e39d179ab829eded95121e2f6fd6c8f83374690763d532a SHA512 5ed16fdcdfa573630a75986cddde5ddc6a7e010ad9ad20cfa939becb78c1cbb0740fd1a53064e3d358b929b7b9ef6264612644293a1840c54a3e1868b4c15d7b diff --git a/www-client/firefox/firefox-146.0.ebuild b/www-client/firefox/firefox-146.0.ebuild new file mode 100644 index 000000000000..b8417c40175f --- /dev/null +++ b/www-client/firefox/firefox-146.0.ebuild @@ -0,0 +1,1464 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-146-patches-01.tar.xz" + +LLVM_COMPAT=( 19 20 21 ) + +# This will also filter rust versions that don't match LLVM_COMPAT in the non-clang path; this is fine. +RUST_NEEDS_LLVM=1 + +# If not building with clang we need at least rust 1.76 +RUST_MIN_VER=1.82.0 + +PYTHON_COMPAT=( python3_{11..14} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +VIRTUALX_REQUIRED="manual" + +# Information about the bundled wasi toolchain from +# https://github.com/WebAssembly/wasi-sdk/ +WASI_SDK_VER=29.0 +WASI_SDK_LLVM_VER=21 + +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.firefox.com https://www.firefox.com/enterprise/" + SLOT="esr" +else + HOMEPAGE="https://www.firefox.com" + SLOT="rapid" +fi + +MOZ_PN="${PN%-bin}" +MOZ_P="${MOZ_PN}-${MOZ_PV}" +MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" +MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" + +inherit check-reqs desktop flag-o-matic gnome2-utils linux-info llvm-r1 multiprocessing \ + optfeature pax-utils python-any-r1 readme.gentoo-r1 rust toolchain-funcs virtualx xdg + +MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" + +if [[ ${PV} == *_rc* ]] ; then + MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" +fi + +PATCH_URIS=( + https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +DESCRIPTION="Firefox Web Browser" +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]} + wasm-sandbox? ( + amd64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-x86_64-linux.tar.gz ) + arm64? ( https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER/.*/}/wasi-sdk-${WASI_SDK_VER}-arm64-linux.tar.gz ) + )" + +S="${WORKDIR}/${PN}-${PV%_*}" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" + +IUSE="+clang dbus debug eme-free hardened hwaccel jack libproxy pgo pulseaudio selinux sndio" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx" +IUSE+=" system-pipewire system-png +system-webp test valgrind wayland wifi +X" + +# Firefox-only IUSE +IUSE+=" +gmp-autoupdate gnome-shell jpegxl +jumbo-build openh264 +telemetry wasm-sandbox" + +REQUIRED_USE="|| ( X wayland ) + debug? ( !system-av1 ) + pgo? ( jumbo-build ) + wayland? ( dbus ) + wifi? ( dbus ) +" + +RESTRICT="!test? ( test )" + +FF_ONLY_DEPEND="!www-client/firefox:0 + selinux? ( sec-policy/selinux-mozilla )" +BDEPEND="${PYTHON_DEPS} + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + clang? ( + llvm-core/lld:${LLVM_SLOT} + pgo? ( llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[profile] ) + ) + wasm-sandbox? ( llvm-core/lld:${LLVM_SLOT} ) + ') + app-alternatives/awk + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.29.1 + net-libs/nodejs + virtual/pkgconfig + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 ) + pgo? ( + X? ( + sys-devel/gettext + x11-base/xorg-server[xvfb] + x11-apps/xhost + ) + !X? ( + gui-wm/tinywl + x11-misc/xkeyboard-config + ) + )" +COMMON_DEPEND="${FF_ONLY_DEPEND} + >=app-accessibility/at-spi2-core-2.46.0:2 + dev-libs/expat + dev-libs/glib:2 + dev-libs/libffi:= + >=dev-libs/nss-3.118 + >=dev-libs/nspr-4.38 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + media-video/ffmpeg + virtual/zlib:= + virtual/freedesktop-icon-theme + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/libdrm + x11-libs/pango + x11-libs/pixman + dbus? ( + sys-apps/dbus + ) + jack? ( virtual/jack ) + pulseaudio? ( + || ( + media-libs/libpulse + >=media-sound/apulse-0.1.12-r4[sdk] + ) + ) + libproxy? ( net-libs/libproxy ) + selinux? ( sec-policy/selinux-mozilla ) + sndio? ( >=media-sound/sndio-1.8.0-r1 ) + system-av1? ( + >=media-libs/dav1d-1.0.0:= + >=media-libs/libaom-3.10.0:= + ) + system-harfbuzz? ( + >=media-libs/harfbuzz-2.8.1:0= + !wasm-sandbox? ( >=media-gfx/graphite2-1.3.13 ) + ) + system-icu? ( >=dev-libs/icu-76.1:= ) + system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1:= ) + system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] ) + system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) + system-pipewire? ( >=media-video/pipewire-1.4.7-r2:= ) + system-png? ( >=media-libs/libpng-1.6.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" + + if ! use clang ; then + if tc-is-gcc && ver_test "$(gcc-major-version)" -eq 15 && has_version -b "<sys-devel/gcc-15.2.1_p20251108-r1:15"; then + eerror "<gcc-15.2.1_p20251108-r1:15 and pgo detected. Firefox-145.0 can not be compiled" + eerror "with this GCC, when also enabling pgo." + eerror "See bug https://gcc.gnu.org/PR122620" + eerror "" + eerror "Your options are:" + eerror " 1) upgrade GCC to >=15.2.1_p20251108-r1 - note that even with the 16.0" + eerror " releases, make sure the patch set is equal or newer than 16.0.0_p20251109-r1," + eerror " or use the \"trunk\" version," + eerror " 2) compile Firefox with Clang by enabling the \"clang\" USE flag, or" + eerror " 3) disable pgo when compiling with GCC for now." + die "Firefox-${PV} with gcc+pgo cannot be compiled with the detected gcc version: $(gcc-fullversion)" + fi + fi + elif tc-is-lto ; then + CHECKREQS_DISK_BUILD="10600M" + + if ! use clang ; then + if tc-is-gcc && ver_test "$(gcc-major-version)" -eq 15 && has_version -b "<sys-devel/gcc-15.2.1_p20251108-r1:15"; then + eerror "<gcc-15.2.1_p20251108-r1:15 and lto detected. Firefox-145.0 can not be compiled" + eerror "with this GCC, when also enabling lto." + eerror "See bug https://gcc.gnu.org/PR122620" + eerror "" + eerror "Your options are:" + eerror " 1) upgrade GCC to >=15.2.1_p20251108-r1 - note that even with the 16.0" + eerror " releases, make sure the patch set is equal or newer than 16.0.0_p20251109-r1," + eerror " or use the \"trunk\" version," + eerror " 2) compile Firefox with Clang by enabling the \"clang\" USE flag, or" + eerror " 3) disable lto when compiling with GCC for now." + die "Firefox-${PV} with gcc+lto cannot be compiled with the detected gcc version: $(gcc-fullversion)" + fi + fi + 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 + + if ! use clang ; then + if tc-is-gcc && ver_test "$(gcc-major-version)" -eq 15 && has_version -b "<sys-devel/gcc-15.2.1_p20251108-r1:15"; then + eerror "<gcc-15.2.1_p20251108-r1:15 and pgo detected. Firefox-145.0 can not be compiled" + eerror "with this GCC, when also enabling lto." + eerror "See bug https://gcc.gnu.org/PR122620" + eerror "" + eerror "Your options are:" + eerror " 1) upgrade GCC to >=15.2.1_p20251108-r1 - note that even with the 16.0" + eerror " releases, make sure the patch set is equal or newer than 16.0.0_p20251109-r1," + eerror " or use the \"trunk\" version," + eerror " 2) compile Firefox with Clang by enabling the \"clang\" USE flag, or" + eerror " 3) disable lto when compiling with GCC for now." + die "Firefox-${PV} with gcc+lto cannot be compiled with the detected gcc version: $(gcc-fullversion)" + fi + fi + fi + + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + + if ! use clang ; then + if tc-is-gcc && ver_test "$(gcc-major-version)" -eq 15 && has_version -b "<sys-devel/gcc-15.2.1_p20251108-r1:15"; then + eerror "<gcc-15.2.1_p20251108-r1:15 and lto detected. Firefox-145.0 can not be compiled" + eerror "with this GCC, when also enabling pgo." + eerror "See bug https://gcc.gnu.org/PR122620" + eerror "" + eerror "Your options are:" + eerror " 1) upgrade GCC to >=15.2.1_p20251108-r1 - note that even with the 16.0" + eerror " releases, make sure the patch set is equal or newer than 16.0.0_p20251109-r1," + eerror " or use the \"trunk\" version," + eerror " 2) compile Firefox with Clang by enabling the \"clang\" USE flag, or" + eerror " 3) disable pgo when compiling with GCC for now." + die "Firefox-${PV} with gcc+pgo cannot be compiled with the detected gcc version: $(gcc-fullversion)" + fi + fi + fi + + if [[ ${use_lto} = yes ]]; then + # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC, + # bmo#1516758, bgo#942288 + filter-flags -Werror=lto-type-mismatch -Werror=odr + fi + + # Ensure we have enough disk space to compile + if use pgo || use debug ; then + CHECKREQS_DISK_BUILD="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 and bmo#1988166 on musl + if use elibc_glibc ; then + rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die + rm -v "${WORKDIR}"/firefox-patches/*bmo-1988166-musl-remove-nonexisting-system-header-req.patch || die + fi + + eapply "${WORKDIR}/firefox-patches" + + # Allow user to apply any additional patches without modifing ebuild + eapply_user + + # Make cargo respect MAKEOPTS + export CARGO_BUILD_JOBS="$(makeopts_jobs)" + + # Workaround for bgo#915651 + if ! use elibc_glibc ; then + if use amd64 ; then + export RUST_TARGET="x86_64-unknown-linux-musl" + elif use x86 ; then + export RUST_TARGET="i686-unknown-linux-musl" + elif use arm64 ; then + export RUST_TARGET="aarch64-unknown-linux-musl" + elif use 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-packed-relative-relocs \ + --enable-release \ + --enable-system-policies \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --with-system-ffi \ + --with-system-gbm \ + --with-system-libdrm \ + --with-system-nspr \ + --with-system-nss \ + --with-system-pixman \ + --with-system-zlib \ + --with-toolchain-prefix="${CHOST}-" \ + --with-unsigned-addon-scopes=app,system + + # Set update channel + local update_channel=release + [[ -n ${MOZ_ESR} ]] && update_channel=esr + mozconfig_add_options_ac '' --enable-update-channel=${update_channel} + + # Whitelist to allow unkeyworded arches to build with "--disable-rust-simd" by default. + if use amd64 || use arm64 || use ppc64 || use loong || use riscv ; then + mozconfig_add_options_ac '' --enable-rust-simd + fi + + # For future keywording: This is currently (97.0) only supported on: + # amd64, arm, arm64 & x86. + # Might want to flip the logic around if Firefox is to support more arches. + # bug 833001, bug 903411#c8 + if use loong || use ppc64 || use riscv; then + mozconfig_add_options_ac '' --disable-sandbox + 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 webrtc for RISC-V' --disable-webrtc + fi + + if [[ -s "${S}/api-google.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-google-safebrowsing-api-keyfile="${S}/api-google.key" + else + einfo "Building without Google API key ..." + fi + + if [[ -s "${S}/api-location.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-google-location-service-api-keyfile="${S}/api-location.key" + else + einfo "Building without Location API key ..." + fi + + if [[ -s "${S}/api-mozilla.key" ]] ; then + local key_origin="Gentoo default" + if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then + key_origin="User value" + fi + + mozconfig_add_options_ac "${key_origin}" \ + --with-mozilla-api-keyfile="${S}/api-mozilla.key" + else + einfo "Building without Mozilla API key ..." + fi + + mozconfig_use_with system-av1 + mozconfig_use_with system-harfbuzz + mozconfig_use_with system-icu + mozconfig_use_with system-jpeg + mozconfig_use_with system-libevent + mozconfig_use_with system-libvpx + mozconfig_use_with system-pipewire + mozconfig_use_with system-png + mozconfig_use_with system-webp + + mozconfig_use_enable dbus + mozconfig_use_enable libproxy + 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 + mozconfig_add_options_ac "+hardened stl" --enable-stl-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 + + # Avoid compressing just-built instrumented Firefox with + # high levels of compression. Just use tar as a container + # to save >=10 minutes. + export MOZ_PKG_FORMAT=tar + + if use clang ; then + # Used in build/pgo/profileserver.py + export LLVM_PROFDATA="llvm-profdata" + else + # Attempt to fix pgo hanging with gcc, bgo#966309. + export MOZ_REMOTE_SETTINGS_DEVTOOLS=1 + 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}"/browser/installer/linux/app/flatpak/files/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg firefox-symbolic.svg + dosym -r /usr/share/icons/hicolor/symbolic/apps/firefox-symbolic.svg /usr/share/icons/hicolor/symbolic/apps/org.mozilla.firefox-symbolic.svg + + local icon size + for icon in "${icon_srcdir}"/default*.png ; do + size=${icon%.png} + size=${size##*/default} + + if [[ ${size} -eq 48 ]] ; then + newicon "${icon}" ${PN}.png + fi + + newicon -s ${size} "${icon}" ${PN}.png + done + + # Install menu + local app_name="Mozilla ${MOZ_PN^}" + local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + if [[ -n ${MOZ_ESR} ]] ; then + local desktop_filename="${PN}-esr.desktop" + else + local desktop_filename="${PN}.desktop" + fi + + if use wayland ; then + use_wayland="true" + fi + + cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die + + sed -i \ + -e "s:@NAME@:${app_name}:" \ + -e "s:@EXEC@:${exec_command}:" \ + -e "s:@ICON@:${icon}:" \ + "${WORKDIR}/${PN}.desktop-template" || die + + newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}" + + rm "${WORKDIR}/${PN}.desktop-template" || die + + if use gnome-shell ; then + # Install search provider for Gnome + insinto /usr/share/gnome-shell/search-providers/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.search-provider.ini + + insinto /usr/share/dbus-1/services/ + doins browser/components/shell/search-provider-files/org.mozilla.firefox.SearchProvider.service + + # Toggle between rapid and esr desktop file names + if [[ -n ${MOZ_ESR} ]] ; then + sed -e "s/firefox.desktop/${desktop_filename}/g" \ + -i "${ED}/usr/share/gnome-shell/search-providers/org.mozilla.firefox.search-provider.ini" || + die "Failed to sed org.mozilla.firefox.search-provider.ini file." + fi + + # Make the dbus service aware of a previous session, bgo#939196 + sed -e \ + "s/Exec=\/usr\/bin\/firefox/Exec=\/usr\/$(get_libdir)\/firefox\/firefox --dbus-service \/usr\/bin\/firefox/g" \ + -i "${ED}/usr/share/dbus-1/services/org.mozilla.firefox.SearchProvider.service" || + die "Failed to sed org.mozilla.firefox.SearchProvider.service dbus file" + + # Update prefs to enable Gnome search provider + cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to enable gnome-search-provider via prefs" + pref("browser.gnome-search-provider.enabled", true); + EOF + fi + + # Install wrapper script + [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}" + newbin "${FILESDIR}/${PN}-r1.sh" ${PN} + + # Update wrapper + sed -i \ + -e "s:@PREFIX@:${EPREFIX}/usr:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" || die + + readme.gentoo_create_doc +} + +pkg_postinst() { + xdg_pkg_postinst + + if ! use gmp-autoupdate ; then + elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or" + elog "installing into new profiles:" + local plugin + for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do + elog "\t ${plugin}" + done + elog + fi + + # bug 835078 + if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then + ewarn "You have nouveau drivers installed in your system and 'hwaccel' " + ewarn "enabled for Firefox. Nouveau / your GPU might not support the " + ewarn "required EGL, so either disable 'hwaccel' or try the workaround " + ewarn "explained in https://bugs.gentoo.org/835078#c5 if Firefox crashes." + fi + + readme.gentoo_print_elog + + optfeature_header "Optional programs for extra features:" + optfeature "desktop notifications" x11-libs/libnotify + optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas + optfeature "screencasting with pipewire" sys-apps/xdg-desktop-portal + if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then + optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver + fi + + if ! has_version "sys-libs/glibc"; then + elog + elog "glibc not found! You won't be able to play DRM content." + elog "See Gentoo bug #910309 or upstream bug #1843683." + elog + fi +}
