commit: ad0bb230a41447e97ebe64e88783acaecde2cc86 Author: Joonas Niilola <juippis <AT> gentoo <DOT> org> AuthorDate: Tue Apr 11 09:52:04 2023 +0000 Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org> CommitDate: Tue Apr 11 09:52:04 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ad0bb230
www-client/firefox: add 102.10.0 Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org> www-client/firefox/Manifest | 98 +++ www-client/firefox/firefox-102.10.0.ebuild | 1278 ++++++++++++++++++++++++++++ 2 files changed, 1376 insertions(+) diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest index 9b7012f8499b..82890b8192b5 100644 --- a/www-client/firefox/Manifest +++ b/www-client/firefox/Manifest @@ -1,3 +1,101 @@ +DIST firefox-102.10.0esr-ach.xpi 466443 BLAKE2B b081a2a28186ba81cf9fc2b4749a34b02ce55ea8de4a81860cf20bc04f5b54b236b719717cfbe56666d0bde19dfdb25db76e4d1f0ec65c6a6ee2736ecb74d66e SHA512 d178890b9ac6740265f77e17f226d9974e5635af361fc237ab70e49cbc46d3113f6b55945c41f193dfba57ba9d702a5ffe0f84c1992134ba46b1ca35618e297a +DIST firefox-102.10.0esr-af.xpi 429127 BLAKE2B 1bbd305fe05f34a9e677ea1bc85d2020557cde0998c1907534bacbdf9bbe83d4269a996b447184a536f41d973db7cbf6a7f1e220700c2e7876afcea964f6a3b7 SHA512 3d9e2690bf9abaebb98448864bd4e3eca01ad5be59f6be0ed16b4049d79574b325ec59c504e1e9df89ff820d9064cde8ed03c160baa52f88f29e5311c6902851 +DIST firefox-102.10.0esr-an.xpi 510484 BLAKE2B f2e6516c41c384ea5034d5e8ae4c4a92d7ac175c9543293c2bfe22d5e3cb70ef60512d5cd612f459ca742239df8117159ae4099775fc98430d3e4a9cd4cd512b SHA512 174ae302d19c95a75af320c40870ffe20946f1c6bf5359fe120c7633b73c7e3e93f378518cc7206d7c36e4e0fff97dd8fa0ce7ac8870cb6b681502c616f2ae6f +DIST firefox-102.10.0esr-ar.xpi 578880 BLAKE2B d086879d719d599e911fcd3a8d0151a83f4ea3aa8a9fc2001a03a021da596856fdd33d2e92e6bb7939754b8d63921599e7cbe956fee5cce7bd5afa6d9d137da7 SHA512 f4505826f341bd1afcfc2430d41691c8056d37bfa60f36883dcc5cea82ed10e6c3da9e70ea2b2de7655dfa9db788640814d89d923cf12dc94d5656d7d7c19345 +DIST firefox-102.10.0esr-ast.xpi 498102 BLAKE2B 964442596e6e3d3c0afce33fa3576d3fd4ded4a1a4775897fda625a5e99d673ecc887e09a01ed8da9e451c6d40a5e67c8d0aac3f638c8fac41fe544f13ea029c SHA512 a034b3758d52f51d30cdc43265cb7edecd0eb7bde2bbba7dcc22e9831d8f9f734e54a2f8fb40ecdecbb6fb6daeccf32b73a5af30a2bd91ffffe0622a486870c2 +DIST firefox-102.10.0esr-az.xpi 500787 BLAKE2B 944e10d8f786f94073cde7d3ba3956073d05f518a5ca1aaef65f5d9acb9482b8967c7705e63dd5264bb493f2346e97c9169b0010a8ad83f5b118ad6cfa7b2368 SHA512 27a15be295eac1c5489c06821e0e3fc808429dd55eb6e3dc396a8fef85ad29a9ae71c87aad53ae50ab224d1ed7fe167e9adb4c92996520e7971866826ce9b333 +DIST firefox-102.10.0esr-be.xpi 666682 BLAKE2B 9832a3d0099190a0706a6700660993c3aa133dd539f2ffec7f5f1d263f7ba15a6005b8d5997d986e86368ccb4e340b8d446f47330a2cb8d382a11434d528b00d SHA512 161707973d47228830dad0281fe79c7f7cb31b1755158a0689200e36db431d40df085a02d5ea71945008cc6e1b14250870ddfb9f4aa5786510b7cc5082b94c23 +DIST firefox-102.10.0esr-bg.xpi 591337 BLAKE2B 2c3356f8a347c740c9a31ba5914a8fafb6ca55fe71c499efa4c2cb8347d61779e66f6e5c0aadec39d0d6afb970debd0be6a424d9266533b113ba6eff5059ceb7 SHA512 e5eb6cd1b7723197c7e5fbbf9c5d9ff6b1e99854ca21a7864ba0ac770a5c9be63abb57ea581bf7a9dceb0325497d211bdfe231b37a6b884bd223170749154e2a +DIST firefox-102.10.0esr-bn.xpi 591684 BLAKE2B cb9c411e338c368fb00876a448ffe2eea29f62f14de1586b4abe87c80511373880dbef11e42d7b80a1dff90d64438323fb1b4329bb444e969a9b39fc2bcf12e9 SHA512 142ea0decb2759577208e90c8d70c7c976c5d14efbe57c29a7f2c8f0d212be950f72fca57507d401e4971b7df18efeeb921aa0f1759900dc1707928f58732a97 +DIST firefox-102.10.0esr-br.xpi 555853 BLAKE2B a787abdf5c1f7e142905e33ba114a401a65d36dae00c41ad4a203368cf6e539d82fdd68e32094b90b4a25051c8fe13bf020d22d3cc7da91f055dcd0caefb2195 SHA512 b6298f8192db598a14dc76e4600d33bc63efaa46e7efc94bf1a83e01f28a6b6addc01988ddeb1bc61156371d062e38d8b902ca49934f00a80f13df1096b3f086 +DIST firefox-102.10.0esr-bs.xpi 471729 BLAKE2B fc7f8426f46765a6dcd78c6a0ccee1f420c184b6c30a557137eb8ff7e36e0adf0e3e52f297277caa23386196a980eba89af31637591f046514cb4efc6cc40f00 SHA512 28afc0aebf7cebe6f0b3ec8061e1052a7e835fcafcbe8c39ef699a172a12d5b26f505423a053d87084d483cc14a76b351d3a4ed6e8e60e835051e1a5c91cac3c +DIST firefox-102.10.0esr-ca-valencia.xpi 549192 BLAKE2B cb79579b9b61cd30b8af879f003077e381e07f270d011ba39563258f5254b7ee2d17f1acfa92d422b8c493def252b14bbb9af52b9b232691b6ac92cde330fb33 SHA512 49e70d28cb24c690bdc9667758662cc8ada4015c6b85b3b5b2fecbe1d143c5a2c11708d9ad38b1e88e07e175b5c50d7166338ea0a65bb5583678e89cc5cd23d8 +DIST firefox-102.10.0esr-ca.xpi 561930 BLAKE2B d46e280199e2c3dd16f44ed61e4bbe92393bdef658f6b3c130cb1b247e1cfcdc77ad84e5f89dcb2a1b6545915b6ab8adaebb284004ac0a14599811289c0a602f SHA512 f7ba629ece292849382f804c09d65271e9fc8c732c1f272c454895291f2dcc0af48e1f17db0a4729db8b53d2e8c613207f0cd796a76c3d360c147cc9c5b71990 +DIST firefox-102.10.0esr-cak.xpi 563841 BLAKE2B 5d1022b6fe89b6d6f04bafd041582ca5c83cdccb4581ca81ce22129d182aae7cdf021bf68c33ca2e90f3c75fb27ff940f5e0d7f0b89e47ad22746bba9942f6bc SHA512 90f4e55658c9f4341fa551a480f0b3ea45d3ed006567027a8bfcd2c34ae2b3afaab7d99bf93e807fc53b799a11b18574a92f3bd2b9416f63aeb72a1b1e92dafe +DIST firefox-102.10.0esr-cs.xpi 599807 BLAKE2B cb90d6965b65d3a9bc20f2e7d77c681fb7f0c92144088d8d77848ed17259e2e8493d2a4088e98c6c63c01193b05dd8e47e8f6b8a00ec7ebc1a14b813e7c6bb74 SHA512 3db0646d54e5ecffebdad8b7154d15b2906909fecf35b80a9911dfcc36c2fc29cc7ca6382ec7444eb64d29adf96139e8f4efd28f5673e34c88461f3ea4ebb246 +DIST firefox-102.10.0esr-cy.xpi 579217 BLAKE2B a2b45ad1a064b6c47d090d7411e1940a9584c07bc646d2f60cc813ba83086478b7358b57c1ac6e36dba3c37dcfa12d311d0b321732dea3ba9aaafed517ff289a SHA512 6d3df7eb18e4f9f9941d2d4eec40b54b5496ab4575feb31cd22ffa7547b2db3a1972744a957920531cc10b27c96257e934ae9c8a6c523b75a29dbdb0a9085698 +DIST firefox-102.10.0esr-da.xpi 570515 BLAKE2B d8cdc29962b634efee24a451146bce045b638f585376c14dc7f24dc05fd1ca48c1e34342de486dc6589de8c35b5afbdef15ff9ebca10d57a8481062b48bc0e61 SHA512 f78957e28e71eec1f106b3b3d30bcc461e804d62631ea3cec2d2e30645444be1119b9f465fccda4e7bf2dd7b374bcaaf7b55b38bedd9f3e755fcb59eee87c2b8 +DIST firefox-102.10.0esr-de.xpi 591579 BLAKE2B 94c1fa4a493674c31c23f9baa2410c0fad275b7ffe9c52546aa867b47919938b47640226e70647039e7169efa9a66cf105890bc5700b9a57e55fc2a04e7aea7a SHA512 10b1575d6f9f7365b9e7be1648c50e52639c3800f6921cd7085d9c89f971003fa485b90223f92ad7a58138a55a401f29a64f8a14172aabc2c87e9263d915a902 +DIST firefox-102.10.0esr-dsb.xpi 600374 BLAKE2B be543399c75155619bb5d7ec961006645640e1808e7084a09c2222eb66e81380e1b0a6344ea1f65c08348d593a9cb05b64a565bc41e0a5c553f30fd1a8e7ec83 SHA512 dc61267ce6952c609a4848fb9d8f8587cf75d2594bdfd230b399dbf7a58015f5b91cbd11a015b7a09279fc52cd3ebe766d14ba5e402f3235b14fc392c3766553 +DIST firefox-102.10.0esr-el.xpi 681656 BLAKE2B c823110f1b12365e23a2c45ae6fe1daa66f9f4b61078bde89af711e5fb749c850e00631afa9fad204cc93f327e258b445f34d553ee915b9a4ff81d0b3c42f3b8 SHA512 0bf94570c51b3a1b765565c74e883941d66cb2f6c8d45d3ef016da9f6ed40a67fa675eaed0c4889a71c144302289c2787073c326406e73956b250d8063795d2d +DIST firefox-102.10.0esr-en-CA.xpi 541064 BLAKE2B fb6f49ef42eb0e6269b9c43d6445dc024c6c2ef4041614285b56d870d0b7e3f21709c898157a0f7cc75e0748e1d21a9bdbb8c33911380f09bbb96f3d9110a4ac SHA512 bb2cfd5b235c4107bbf77cc2acd0537088683caf20e24e926b8c0412ee277dd85de2a0bb22843771cff08fc07b9074c3e7b9af08fc7f2f2e40f29ca50d7920ac +DIST firefox-102.10.0esr-en-GB.xpi 543999 BLAKE2B 90d7b044b0f16fdf3658e7c0fdc245fa58bced8befee2c0fbe46c817bea5a17a3f8938178c985b8a884518b9ea81f5a3d1d64dd8bc70afa25cd320a7ff831ccf SHA512 5eaf262fdf513de492888ad286645276b6344d8ff2df6b078a1e366523c4194b95c4842173db32c8651de99f0cceef832b240b8252acfd9d6a4a6c3b90801f1d +DIST firefox-102.10.0esr-eo.xpi 571442 BLAKE2B 40210f1f12c6af9dc35dc0027d9043ace0a465de006d849af3d577649d3a9d123ed66706d37cc97fd4deb007d9d35b2ee862981466a3d4ffcbfeccd12a58ec40 SHA512 b829f17edb8a760f201eafa03a0adc4b1a6d3d12724abe4230059dcbc4298dd010adeed410b14c48a6c04a61a6515e2263cabb21182707783c04a1270c68d02f +DIST firefox-102.10.0esr-es-AR.xpi 584193 BLAKE2B ac9c6394dee02728da874cf0d9ed6d8f8d97a66387dd8f6e3264fd408675539b3c727f9187145b4ed822c4f13dcb9637bdccefc3ff37ba4e10311be633ef7793 SHA512 0021d74ea30e730a0d060c620bd476eb3cd3dd6ce69adea0ccf4d0a0fb99a87f1cff93f34769f6267a4ea922d3e81370a83b3e231c76e322ef8c01be34d5b57d +DIST firefox-102.10.0esr-es-CL.xpi 583192 BLAKE2B d8fd095c9eae2726e3fccbf1d8cf901e9063aef349122451a11d18d1c236a7f665dc219e2ec18e1fbaa0ea0875126f219bff012f5398338f275577bd2482ffbd SHA512 01688a98a0c69bd72c7d4287bbeb7c8156be2fc33af8beba9b86d36c9f73ea95d403f7fdee1a62d1da51c36cf53ee0b5a55c439fbd78d0655b25274fb4797a88 +DIST firefox-102.10.0esr-es-ES.xpi 576080 BLAKE2B bc8fa0826a673e8807f56d2d3c7021058d818210169e2b574767f475d4f0937cdb0c1bef7fde62eb87dfb468370d148433345eee9db1f47b1313976515269453 SHA512 8966ec45738374f5f9e9cbb36daf6c259577722c06e8e306272df98c5765e3b5a91d5b2fcff05f6085b50e548480e49085b07b541880b33195147fa786736d08 +DIST firefox-102.10.0esr-es-MX.xpi 586655 BLAKE2B d5ade1aeb7f732576ee4ff1e594665a20654da1292924b8ab2b608a14ff411c737c61145876b460b09fbe2cf19f55e8e443e7a2432b32ed7e308672e77016788 SHA512 f212ac57660169c8b57b169af7fd735f3da543c34268081b44d14fd710b3639b33fef83067df0beafbdddbb4081b62a5feb95135e2858e65e88d6f736fe26fb4 +DIST firefox-102.10.0esr-et.xpi 543297 BLAKE2B 2bf93ecc36ef6f8dd5f789b96f5356ea8fb634cba9921f4586cc112adc40f381c364a7c3000b59a05ec532aae2a552608043e688b862c93a697366ee9ec01177 SHA512 6f5c48f45b217211107f2c037eca24dce462613c05f708de799687c75ec2b94531021490308aee4ef634ba7afb8f370073f73737195711807f016a85c0dd3fbf +DIST firefox-102.10.0esr-eu.xpi 572527 BLAKE2B ba93a1686dc371e1e3d8130062795febe67d8315e52b95373b0e1375e2889eec809388720dc83c4b9bed3e35cb9ffc673988c0245306a263f91b78b287f1e1a7 SHA512 330a152c62f6b03d00b1f623f9ee1af8c0765e7f7b99a77729d2b84d9cd17990895443bd4ab63fed7b33d16c46c6506f095125056c4ea56a9eaf8a9237ec76ce +DIST firefox-102.10.0esr-fa.xpi 583115 BLAKE2B 15e6c496144acbbb7b6278de47fa857175045568b402e1991fdc259c611725d0394ec7d63ec4d214db88fd794cf103d6c06c01727795310791e81d5c6ad7059e SHA512 49b873b0ce851d2371b0fc6b9491ef243868e2b60ee62b4dac1bc62350d369e84e2f7be93eb980e87435381a15d5c8fb0e9b937ec6eaf3bd463795e25faacd3e +DIST firefox-102.10.0esr-ff.xpi 483129 BLAKE2B a7bb5a141922b21e222a94b6c3a714e721e3cc4adb8f36529054e84a898bacaf1a47cd59ff7bcb7d09c175bc7e25160a83e92a855f9584eaa70eba2cac1a01a4 SHA512 068fa8acb19a845316c5cb030e23ac4e640529a3500f2d12e57ba18821c3cca5484bf06b3427d922fa9ba2afc4120063d083de1eebb602d41e76b336d4aca196 +DIST firefox-102.10.0esr-fi.xpi 568233 BLAKE2B 8dde0eaa0ef2737638908ff04c598a8a400256df94f11ec73779adb20d350c30db69da825daa57db273421d25599ed88c66a4f4bec02bfcb842c22d82fde4c41 SHA512 87b8434083bd1480f18ba92d1d9a1246cc07d30aaff27f8ee29f091c3b9fbf2e473627ed1cea8b461533371310ed61093cba5f5052285688a6f1ca82e4aa9f31 +DIST firefox-102.10.0esr-fr.xpi 595536 BLAKE2B ea29fe50bb19b28e9a4ed7629a6ad4bfab7c5922f45ad51f9b58abd1f73685702387f746de21d72340c413b2f77e8e6af9b0659307fdcf997e28d9f6333dc6aa SHA512 961f58fef77e33ddb6311d7e97b939deb669c0fb8a40c610f4bceea081104ca9364342dc27e9e79684d84ff3d8390a1615ebb20e5451b79dfd12da3e20ed0979 +DIST firefox-102.10.0esr-fy-NL.xpi 580241 BLAKE2B ff7617594def0e24be829a940fb4b4027bdc598aab3d731e496408c1a7b82ef094056c86c9dfcc6c28f64ac8e70c2bf7f639e7ee33f13ca49ec88293124c14bd SHA512 9c78732af0584972c2e4cffe1a9dd96d1b04cdc3632154575c66d5ad732413d92d309ae0e4e4b6833fa4749ebf5ba4c9eca83211326581be9874d7cbac82e784 +DIST firefox-102.10.0esr-ga-IE.xpi 480692 BLAKE2B ce5a5ad43374590d2598f456f11e8394f97221c113f20018b291015bed1e81217428eb10b6785f467dcb71c477f64f77cddccff11073d97429af3ffae025fbab SHA512 d5ffa111abfdb08e976ca43a024a69c412c67e9f7cb28738631c6b8a0df5c0b1054cc50ea9fbcaa34c8228cb15a54c55619f7d64126e25aedd84222e0abca8cb +DIST firefox-102.10.0esr-gd.xpi 557863 BLAKE2B 6e6b67f34733d37f07cbc9417f993c51c8a10747afee637f88516fb6aac3d39a016fba2adb72aa238ea2f1665d6e3eaeb24ec467ce633d09b81cee7fde693cdd SHA512 881d227b24ce38452a036090b321f3d074e5d7348b1967a3c607504b99ffbb3ca7190eb7d39621a9e4accca628ead51ef4fe1256de5184ad2b7cf7c5450b91bf +DIST firefox-102.10.0esr-gl.xpi 550715 BLAKE2B 3a7565d4ee54db463c5e0c31e2bf8d92c1434a5977a15f0e9daa27f66de438e299c44fa232a196c59f3f932861413c6a98e27c7b6c0aa9f15279d91c15295bc2 SHA512 6e5b5889fe006f8e0af49d3ec57e9c8974d41cf22c564d60e107bb79f6a4d99aba9c1410da9bac5165085a5afab0446b299296a20316433929b133f6bc6c6bf3 +DIST firefox-102.10.0esr-gn.xpi 595703 BLAKE2B b37a59d888bd55c6b16f9a45dd05d39c11658a62a94aef2c0a195d074a6fab90332e26ebb7168e770230a8f2a33826c832dbc4bd0aeb68c55f5d47819e9b3305 SHA512 38ab3354d1eec28809aee08c5f579e742f413fed9512915422821f7986c6bf1cfc042de5775a1d6b00a265cf39eee2de7d4c0ebe6d5d46dda23221a7aed13aa3 +DIST firefox-102.10.0esr-gu-IN.xpi 541901 BLAKE2B 3e12ff1f4c2e20ac78917d25e850048f5234622146d2fc186963472c6f5718079377570fe626b361229624b33a4e2f877de982f0620baf36ac67f3ad5bac68a2 SHA512 607a00b72364ead71c8eaf78138e022f8a3ef23c2f509c80edb9d017b470efa66d0d93cda653659d1380499eb85a1e0a42921d81dd788619b596c69455ea3b53 +DIST firefox-102.10.0esr-he.xpi 591522 BLAKE2B 79d8edb630e9c80f2e8945726ccef88b8d3e70a7b69d3d094b7c4a77a3889fe04dc643e77c1f4954bf03ee325ec7ba88518e9a7cb26d8961b398fa7c72406210 SHA512 c0c8c520696d719480abfa30bd6c822656bc4c1d73e5836460288b95a228f340440a0a64b95c8de568cc9cbfa73c3abe2c05e51afc768e4aa9de9fb9694611fb +DIST firefox-102.10.0esr-hi-IN.xpi 570423 BLAKE2B 68e8411f5a08cd39175a078ac0362277fa58af4272700fdd382fbd4c7656688605d01b2f27e911bfe60dc6a9bcabeec6b2f5bf87e49736a0601cd53f4ab6c207 SHA512 bd5b29356384236a236966c81fc008eafc240dc29675aa1e788b3e939f53833951de49649035526ac2bb02a5e39a80ebc6a6fdb308df2061c35b28e8578b7653 +DIST firefox-102.10.0esr-hr.xpi 555266 BLAKE2B 37a652d705f4a5f2f94add1b8d63291dffeff589f7f90dbef65540fadcada4e027a6bb28bb18910f9c3560cd418da6bc23db0a1c83e8c61d2c219acc097a68f6 SHA512 d9ddd57d4771a47bc92239f52d463434057f88f7694d69371edec5216e4968bf5e383c4ffcd73b14e25af9eebbfd07681290736ba77ffe0cc64f430f7be43744 +DIST firefox-102.10.0esr-hsb.xpi 599179 BLAKE2B d9dd76de985fb107fed11ce7b7e0595dba4d4c0827a579873216d3ba3473ba4566ecb4ab048fccd0443a4046fb461552fa0f47b9d821535357a329dd820cb8bd SHA512 759970b200e8fcde4d7521a0d2c43208fac88dc591de55d40b89d57400cde74b1ae217482ba1978bd1b17cb78c580da4c4f9d1f8b377f12766dbdd253fd6560f +DIST firefox-102.10.0esr-hu.xpi 605250 BLAKE2B 1b370818a97b44c76360680cdd0605c6eb4b508ceafc5a2213ff8376d4a55023e0348fafaf9dfa7a7acef760a3a58db42832788c25bcf7d26def6f719d460a87 SHA512 5bbc82763d8e11455896d1ee27302c775aa69c41aa819cb3b21660849f9234865248b293c2d11dae04dd99898cc8b0f3136ef2f4acda06416a33650b344efc40 +DIST firefox-102.10.0esr-hy-AM.xpi 607096 BLAKE2B 246a297de96ca236654a1f88a054802bff605c78a6d954f8eb886d2d7f7bc5427d51110e23aebcba868303c7f7670a41d5341ae90c6dbaa2f6d858ebe131a3b8 SHA512 8a87d1033887684afbab37f150dd2e6571fa625d2eb23407e34662477b97cd8d1ae3a05fb39d1da3b858ea19bc74ea8dae1f3c601c98b5fa6f41a877a6334175 +DIST firefox-102.10.0esr-ia.xpi 567890 BLAKE2B 1dd17aba7a5428387d19acffa2e716588f448e893051860ad0b520ce80de3e6ddbdcef66ffe71928ae5779286d7402af2b0f57b7c6df541dd9ee039673eb67ad SHA512 274d3fc50d7c6a1d045b5719efeedc23b5dd1d711712afe345eef5c291641148f17999a9f457fbf7b350737ba174e927ed5ae7139139f296bd31c1395ee2d23a +DIST firefox-102.10.0esr-id.xpi 564790 BLAKE2B de445deb1c032ac8c0ba786bb560aa3e60b8bb65d48f7e912525c472e4d6fd74bd0abf1276dd575b6793af60a49cba4e20f909af0754f43051c05a824a01a686 SHA512 8931b8c5279e0ed956622d0f780649c23340679f178d90e058334ed0d200e18647225235abb3c3253fa81c9583bbd0aa4b3f7246acc1254f36ed8d978addfd21 +DIST firefox-102.10.0esr-is.xpi 575735 BLAKE2B 4ebe8cd8055d32e581d28c2a2d97d985862122267e85848679e0da342654f9e932aea2f9644bb3a3fa2cdea2ceef4ef1b4fe60d6ec0c6b9a21d051b52c1d5ef3 SHA512 c58ffddef248498c329795f01250f062b494e3de487754b5bb088988d3442d108e9b5824a206d8c4db5df8e2729c58d3d656414ee8243edac5f4ea783088642f +DIST firefox-102.10.0esr-it.xpi 505289 BLAKE2B 69c8d4764995d8309ab788f5371b9ddaa5f43bcb5c7b51f1e73658bfb917b9656fac9240f0a0ef110b5f2d0f1a39106446041b05f14ed4b9e9746709ab366d91 SHA512 0f84e366e6c367c41c498ba0444f14a4583569618c7aba1dad92026bf409ed49145463ae74d898ce5deb86d0d215771b5d49c646c3a75f62817904ae37937f14 +DIST firefox-102.10.0esr-ja.xpi 631477 BLAKE2B 5363c3c129751437d368681c26e6fdbb40f10a6470fb3632dd90b4375146f857e7227d7b7c872faa3e24fc77853091cad069778a60bbcf46b2715337ee98ecbf SHA512 88f145727f23605bb1cd7792a0126299b2be721d649c174b22c572de1196ce747280608e770492603926b7c9baec5e72c0b9b7bd27683658bbb9354973efdaf9 +DIST firefox-102.10.0esr-ka.xpi 635998 BLAKE2B 0e0df153df4cdee7eec5bac8e3ae51702788597c4f37a87f03df480104aadafe162eeaa878d8c07fabc15b249c107f9fa08eebaa666455f4677ef7a81ef7e5d4 SHA512 a8e1d2621def842cf45359af7c99c5b371646b238c7685189efd0122428b320b8b982f0cffeef755b6de68e05b8f3580116c9be9e44a45bc98e61f955b2376a4 +DIST firefox-102.10.0esr-kab.xpi 583635 BLAKE2B c51957ba283455d41f934ed9739d69fc6db57bb355434a760cd75cac4bc5d037e1d4645be1d7d9c55fff48f487285bcc92f9a3c947f049da81c6b2d6d25a42e9 SHA512 322ba06925c38d3a085ff6028e72d6eefa1826b8d87ef8b327e341ae0a0e18ac1267e1db3ef92a9a62cf0eb17b7d3003444475bd275fb62a3698102473f3cfb5 +DIST firefox-102.10.0esr-kk.xpi 658887 BLAKE2B 3c34368ef0fdfaf67de15f03adc31a745d9c6e3e43f746f1311795210e8b5c86f0da823e7b271d3ce782f2882f8ab92676721e68bbc0f4a58dcd4f0395e48d9e SHA512 909054b66a770238c0d801cb1bf20cb213b86dd913e657fbf891b09ddcc47da67fdb22cf25da5ed108cb543596950e22bb434f7b979b38eddcb62665a8ff0a2f +DIST firefox-102.10.0esr-km.xpi 543905 BLAKE2B 128efc4e5fa3da71686dda25575060b0cab1a22b0525c2520b25b357d5512ca2a7c2b7695576e6f9ca69085f69d9604f4274ae97f431fbe18fc9e12803fca6e3 SHA512 48a57ab57f272e38ea753b570f2ae469524e15f40cae1c8e368536e19d4294c96a2f85a27d8dc1ee5c0b381a9dc455730bf19c734c89557de52f60b7d0381ca1 +DIST firefox-102.10.0esr-kn.xpi 508594 BLAKE2B 6505ead743c26051b7fe9c388106a87da7feb37572e4c4cb82870f3d79fe60f0da4d3790fe2de8880e6c7e101117fba3fbbf68e7b577d3c3caf98b8e36e429e5 SHA512 196fed7bf2a097160ed71dc6fe2ef9dc3f1a217634f4687ade09b5e53378dd17950b2a05a9d97b369ae9966ffc5d569b781d7350ded009c07b6b59f82b4e8d2f +DIST firefox-102.10.0esr-ko.xpi 617294 BLAKE2B 09512b6cc8a8bf5f8f7969eeb0283effbb392c6c73dd840559f2f298d68a35c52f521c46505c0927fcecedf61764004ad0b2df6d9f3562c123825cb57d7538a7 SHA512 2cc99467169aa753908c20f0a85e30c0a68c9327322814845ebc249efddec83b633fbd19d2b5a7015635b10c535f39a86d470bdbfd6ddee165f06a7924e806fd +DIST firefox-102.10.0esr-lij.xpi 480137 BLAKE2B 21456c84f6f638dc2900399a26e5a53ae78691549b91b59497f634c52072073c8583fd88a7f3c11cc58b093f3d8c093cbe900ac8b54d53597b8fbbc5057ae830 SHA512 da8f3082a369c95ac43346637d4f5a7eaebab47464684c5f0c02595c6d72f993208645e19c304b400665f5dd62cd2e8249b5b516d48aa93a8fcb557223ea2ab0 +DIST firefox-102.10.0esr-lt.xpi 574778 BLAKE2B e2743ebac76d61305f31d1a065d3c22583adaa5e5ff38343987c764306b28dcc7872528e5db5fd7189e814ea83249c6cb9f6bcb95633b4a33368bd03c9d3820e SHA512 a2b9c38b4773bdcc3e5080bdf44e891f118bca5aea573cc8d57ee52fd13a2b3fa60fd11bbda29b45f1816da3a9fd710966015094796be242b9ab6df8b05f9af6 +DIST firefox-102.10.0esr-lv.xpi 479294 BLAKE2B 9c8800eef512c263dd323167f74afa5425f9ea7fe2f19333eff93f4069d3413246ed59fb0f20797e623886425e52d918e7f5818207efab369240e5722fb91071 SHA512 f5c7e60d71bfbadf92ef50da53f81f7b52d9c3b0c60911d294ce19c1d5fcc53e79c5ceb7d7bb6b9c9a847b796f44aee4903fb039d7b1d5d685fc9c92212b9476 +DIST firefox-102.10.0esr-mk.xpi 497531 BLAKE2B b9951de49ade65055bbda68590c1371b98c94aa8abece859097a7f7eea350e99985a9f63dad8388b27a38e7e85d6ed723edfe6bed857637ae8c513c1919975d7 SHA512 649ba2219d0677f59dfd55f9ca14a5bbbba7b6b13021fe361e1263e0a5999b779d369beeb10c0ad2ad395bf95a523c1eef02d62c0782843ac088176b95a4698a +DIST firefox-102.10.0esr-mr.xpi 543734 BLAKE2B b68ae30a97fef3039da63d8ce72c664db0ac107f9549c154d5c6b764a78a951e1d7d6be655ae909b95d0eac38ecbd4ddb453bdb012ae36e52bfe74f550c3be91 SHA512 2260e10f7133dcf09cd09e1a8c727955be19a68c6bb8dbda6cf42916ded53a54a4fdf33d396a7923f698586fdeed2266b8f025ec4e6992a5aa1c6c3371c01cab +DIST firefox-102.10.0esr-ms.xpi 459032 BLAKE2B 735894e4e8d76a2876a7c7d6475af75267655dce8329118a1c1d128f84cc571382640693fded084abcce1fa123475af31529592e11011feba9a1abd502fc48fa SHA512 317a6fc18c0a6263ddc021681f48e414298e0c7310602501b97d4893e3637a66517499d3be9e9805bde89553fbbac9b4734f77b79e67fb4fcd60d269574a4ada +DIST firefox-102.10.0esr-my.xpi 529936 BLAKE2B d46eea274507c2108ae0a25506e98a81de0efdf24e10247839e3834d1c63ef85b5e26c9a9ab290cbdc04a610ae3bd3730642bd1dd2f6a67a68f7e3e81dd7d317 SHA512 3b22f50fb4187fb64eec1f80902e6c9cc73a3c764090015649d6f0e96c4e5f85321b3ba2d5b7bba954572351ad52aec49f8deb06a10a26aaf45d8885e485d289 +DIST firefox-102.10.0esr-nb-NO.xpi 565281 BLAKE2B 8a3d4acbfe0f58ef0269f1c9e344dac59ae2786aec16a5a1f44d4600e76f393744d70688e436851c3a9c118100a4a5c99d262fcb069742fa862bf5029075f66e SHA512 0be1ac050424457e22f6e70c18a9f402d33e42c005d58f4da772dc956c2025f95a6f4787e49a66a7bc2529aec89a5ef0bdfbd34b384da1252cd33582beb2a15d +DIST firefox-102.10.0esr-ne-NP.xpi 498088 BLAKE2B f2acce6cb75fb2566348d65dcd30ef0812e9b509eb5779378bf708f89bebcd2ee9ca37d7d1299470a5c37bb8cb4ae859ac5b02e5930cc1910e75c1fb89b97bb1 SHA512 770cad7c5aaa425f70abdcf74daa7f2dee6ce1590d898b6a1c981c4fa4351ded3cf8d949e7a15c4db10e9daa6a2ace3b3ee3059d6854e7662aa2eede5a81dffc +DIST firefox-102.10.0esr-nl.xpi 573455 BLAKE2B 5d9f47c08f70ba9e859577954ebd20ee4133fd8ef18c20e3d32ed227450dc38605bbc91f1db16db691436adbc595bafcd2e778af29eaffe3f6fa4a69b5abd3de SHA512 2dad1683499e08bea8d202b768f70ee7ccfb6d20dda73b18992b8e096db062fc28dc289961544d581dbf596464bdd59816d8ea7ba47cc8eb5203939ddbf9a35c +DIST firefox-102.10.0esr-nn-NO.xpi 566157 BLAKE2B 6a67e124d99649c6600e508f57d12bf1a4a410456f7a340209e60cb70a9550dde787cd198317f0ab7fe4913b656502773fd10679ec74fc9ffee2cec7fa3505f3 SHA512 f004ade4eee2f393367fe1a92fd5696c1faae7eff9199cc22e0772a28551f446d0825bb8b932a1f76b1b0c65a1dcecef389f94ecf37c17c2ea3a01beab9123fe +DIST firefox-102.10.0esr-oc.xpi 591137 BLAKE2B bf46b5e600cd2a564dae4195fc6e46381d7c6f7684d960465520d467096eae98cb35dabe4d5243c29571adbb39e9b93c5b00be36fbb0f10aab7e5f814cd2b8fb SHA512 212680efd81f86625d6b5b99cc33c17ea39815f026b148e49edb620a51918f924958eff9912b71b7424e9d20dcaa7e9830632d1082ac1ba5d49ecd32cd8a6d85 +DIST firefox-102.10.0esr-pa-IN.xpi 648627 BLAKE2B e3046c3b247987198f79d3f646da82b607868294f4611c2eedcb0b47373cb2c074be0f6d6232e9a8f9d66b1bd839e6ede46fd7ffdfbb9b891349b174791957b0 SHA512 fb0797fbb02e990917fbf0690ae938fc457ec799d51f4a7c2a315c205d0fc07e3c555f6727cb531829c086916f07317fb649c7bfbe48f99b0a25b15ff3145821 +DIST firefox-102.10.0esr-pl.xpi 597077 BLAKE2B eeda8b70f8dc8c33fd45659c419446a85bfa7881c083d9c5388fe24116ce3c2a0debd4732235e8786d288e05489ef3d5ed1a4004a25c556ba3ba52548e6c372d SHA512 2222f5d67673dcaddbe590e260bf202d2005b60c5185bcf6458011b76430ed2aa1d7d331c26d3bb1bba2b8edc8dcf8ec5a031522323f9b7febc6e717cb2b6198 +DIST firefox-102.10.0esr-pt-BR.xpi 579015 BLAKE2B a618f142618bbd541aec5d2beb9818dd2059e80bc11d5153624731b1c26add70d9ad98b96da436f24c4ed1aa28b114adb2209d0003a66ab66467f4e4793f16aa SHA512 ddc3bd2937d5e8fb6448be055588d85aa41ed1a9082eea9e87d30c8645b40a5535a8c45b4d753da994b799ef116f778ff247f34eac80f7c642cf6024c901eaa6 +DIST firefox-102.10.0esr-pt-PT.xpi 582843 BLAKE2B 271f0298d122a6a8d84ce8a001f5f4332e7b992dbd359e5d1f9f7278c31fad520f853700f811710890185041a22434a9a8619eb5c2e718fb45ed38275c810195 SHA512 f2aa9cc019ad4142aa190608c53db2fa4a0b0513914721abcf62b12ff8e1e16305b05aa569007bdd8740c3a3fdcd15860eaa2a606556ba46124d7e558676190e +DIST firefox-102.10.0esr-rm.xpi 571913 BLAKE2B 5813f34740528dcd9e2a4e011162932b7d4adaa7eef82ccafe0e49562fda230501605d1b96c42eecd254a29c4e5bedcd8b84ac1c820b889c1d21dda1110f7bc3 SHA512 bdab6adfaf7167cf97f2207a7d3b8a5ae25041f58e9ffa7a4672da637fa70c8452f9de1f1803107571cefec2ceed0c9255521396869fb1e67a4d8fc6f2577f51 +DIST firefox-102.10.0esr-ro.xpi 541918 BLAKE2B 71367df836a003861dcde6415d097d4a7c512de54f0959f9583938f31c59ff1566f48e7a1c4e17283299ea1750f4b3e08faf66b2938e57eabb97c68f71430361 SHA512 3589cf5c764df746add102ee23f2180a161a7deaec03e482e8b59169dd60e35c281a63b39a9da452f5f1f672564a64a79c79df376ea467189dce4099002b654d +DIST firefox-102.10.0esr-ru.xpi 671123 BLAKE2B 4bae3b765cca8392028a7e706b758167834aea6ad1ef04ba8a45a41d94b3fec8c8172df9d7942afc31f7b607df3d1813ffba4c778678629c12d80595d00b0419 SHA512 ab392e4e87cc6e81bd943773c4c1ea64f4f533bb7fd999b3cc135636e1a3668e1cfe806dc649d4448750d15d3b4bd39cff115b52abcf910ce8b6864fccb9676e +DIST firefox-102.10.0esr-sco.xpi 513232 BLAKE2B 1741533822059212703629e99e6f420e6835ebb37c1e5e5fbe4b20db3a49531dd3800698b2d3f37c0e9478ba9684d29611b9e97a91e7a9bd704f3fab7d851f79 SHA512 d39967ef3997e4694e89f740d5c13a1437dfa50f802bae9c799ebfcb6478717e3d84a32454b73b260fa07d1de93e025991a23c697ad8e075d33abd542062c82a +DIST firefox-102.10.0esr-si.xpi 585626 BLAKE2B 3b8387ad161221f168179586530fc266d53047a78e49d32916047ad8518770fb6112b729afa9567f15c6bbdd74a10d420ad04f65e2ce2d77b49693020655489f SHA512 355ef503efaa29a2b74ee412155db4fe7daaad884b871c8b5400ccaedd8a2836097662fddc573b425ca29318c5212a54b04c66047f8f72c249de9b9979fb5934 +DIST firefox-102.10.0esr-sk.xpi 606121 BLAKE2B b756a5207cc3bb53839eff37b49f76adad2b77d7db97d4faab78dda23ac509409dbbfd8225ec913afc38ce0070eb4860f296cd329df31f54e14ad4933db63ae5 SHA512 2b38114d3bf8528643d0a6223f9ba1dd01905936f65df2c84c6047a0ced2745c6532dd65a161c07ba8cb49aaa386520e8518c120db35b42bf5f621f3499ed2dd +DIST firefox-102.10.0esr-sl.xpi 577343 BLAKE2B 99b36a4a2196c226009abfbcd7e913270f4c8222f7ed4aa0f33df8ac907c157c79b51525ee7c318dd6cdeb25288178dba159334b0331571f926c02330599cca3 SHA512 18ee491755e3612bdaf52b2eb612b79ab1818ae1c4c6682862329e6aa160e0c51202a50bcac298ceb2470a502edecf0fd7a5d777ca44ec887471b68d3886334c +DIST firefox-102.10.0esr-son.xpi 433050 BLAKE2B 31be6c5996c00660deff70719d7669173c201275d6cb629f396388e4c7365cf074a8691f7470b23bc170b1e992c7984e374574cad8714be453d9071b808cce14 SHA512 58524be38aa8bc64a1518e2796b3dbb0fcb72c16e5651aad55e03ce65af0589f0384d14341216e6292f2c3dab22e6de4ce3e26236c3261cd0484212ed2ff0ca9 +DIST firefox-102.10.0esr-sq.xpi 593409 BLAKE2B bcdb1d2cf2815eb00ae2e97f562a4f85244df35e7d5a6a823d2638552b6c92bcf846530ae2c95778212fc938c2ecb3a0baeb2b856b23e52fff8cfbb7b475d636 SHA512 093b1b2890ec44519cb5d2c4ac84d9e2c93374f6beb7daee4723969b1f39891efab3582c2fb0e7a23f7d3b43facabfcad4813eb8c13f002fff3747f3c187a31c +DIST firefox-102.10.0esr-sr.xpi 635146 BLAKE2B fd75ac34de3ac2030c3f48fc883793aa7d4e992353e52b1b82cb87eefce0473a25f11e5b56275e2e4929c646ff9219fe98d3bf9070841043924aa29a4dba2ee5 SHA512 93776c52733e34814463b275001e3166302c42f8d1b7204e1550f30debbddf1ed65c4926842d5cfe450a46a11a98091844345ef0143e80a278a4eca91efdbe56 +DIST firefox-102.10.0esr-sv-SE.xpi 576053 BLAKE2B 3e3def3eaee5ba69cb40bf89962ac901c6467c0a8a70a972d9259f5d2bf21528d82ee43e8b17dfbcb107f0c96bbca7d8cb35f59a4243efa272f27c86274750ed SHA512 c6459edfa0e7bae0e12a1c10773faa631bef60d17d70ce52f2045373e0f15ba2c7f5d38f2c766360ec7ef1f9e6fc7c8b1b1081881af13ea471620093d17421fc +DIST firefox-102.10.0esr-szl.xpi 527116 BLAKE2B cd9965cb9393348bd7e7b27a2a3817094f15d160129ab58fc23654ea37720f94daa7b3f69ee6817d1ff347e97f62b2fc21285ee88bcb508a7547ac80a34fe1c9 SHA512 94cb4d03af846609c03827deb9500c12439b65a85520f178631d84dd59fcd95d2dcb948a16aafbb95f5817bec345d26c3ec27234c269bb182c8f4293c4688ffd +DIST firefox-102.10.0esr-ta.xpi 522074 BLAKE2B 03772b5a263e8a6d5f025fef3b37e0449b7edd749a0d6fc32d6d5383e89ccf78371f2304cc3223d164005932a44dd0f9c182a7dace60504f173257e65de10395 SHA512 0b28aaec37d1106f455434725efd5d3114d647d00ecec001a48ca358d9b44d08351ac8d180c754daa8beee7a0df3e5f2b3a1b18797073d021402fcda5e644746 +DIST firefox-102.10.0esr-te.xpi 568446 BLAKE2B ea1c866e79e027430d47a8a73ef775a57a4279951cd470a33ba64bc51879ee25b61a662027ccec4ed0431da55969b519b7a98ec11642f13d6c57d284bf711da1 SHA512 30c555fc4aa0922f410483ad167aee7b1cbb55f5c19e8280d5ed510867f09148b5cd2a2769c4138b04f6bfddb87d1a5319b31b88ddfe4ce244d40747e1be11d8 +DIST firefox-102.10.0esr-th.xpi 649496 BLAKE2B adef1351c0683df18acb8e1dcf7c027f0d5b2eb711128977a3735f7fca85e36d09641afef21584fb2eeb443bf9182698c54220861abfe1c8f4beb0377c3c0859 SHA512 eaeaba23718c610f10f4d60d1f07cf635b9bc901b9e871e2eb26ec1aae6c7f1b99964af1fecb3b87e2bfdf6812387c43375bcf2d2bde50eb7cf25e422f40759b +DIST firefox-102.10.0esr-tl.xpi 532368 BLAKE2B d09c7e7ae2dbe6537b3dfe4478172f2e3a263ce4ae280823afc0afab36f83eb6f5974456ec634fd0d8079cbb4a771e9690e079a9a40c5b6619296021444ce4de SHA512 76eb6fb2910f6f8e7522a8aaefab5cc41020baf05d34fa8f3bcbfd08d277103f9ba6835bd2f1d991b34f1de929a91bd5cbc2f9f46f2bda98c8b02cb364c3f2ae +DIST firefox-102.10.0esr-tr.xpi 590501 BLAKE2B 153c7771061eb411be132148a00960f493334ff304775a2d0064bf4c976eba6ebf481799032cef673bbe5222cd5d9fe731d87673a987406b2c2b7725c9e0af37 SHA512 6466747f2c3c092e9a713a600d70c542bde71a57c9dfb19d19830db2a71eb23872dbc9f41950b1351141e45d221be701a90ce625adf6b9d2d53eb9a260be297b +DIST firefox-102.10.0esr-trs.xpi 497372 BLAKE2B 9cd5a09be29be142da4c85048e7db507a0a7b2595f5772eafdcb20861ee22cd4c7f3403dff456e7594ff38f4aaea0651149c329725c75b25ee21a06253662b10 SHA512 2094ff74af71dda82371517eebea1bf3486a788b57e6892c9b86aee45e4c733c1372e8b79297a6cb0a3f9ea523c0d8f339bd71dd16e599eb29de2f47f618bf5b +DIST firefox-102.10.0esr-uk.xpi 664327 BLAKE2B df4a280eaca0d4b10a4d41a149d8fad5259552ceb85a16775f1472520e0a29dc5486f7635ebedd38945700ec27b80286fb1d268cf5ac0e1e7cd04fbfb3fbb0a8 SHA512 bc7c95a7b8b27c05a70be1a085608d2ceee234b9cb530d73c8e2eb5271b34e17dbf34bc80b6543df7d654977dcc0ad6342561d1a3c6a6c680b8569fb88a503bb +DIST firefox-102.10.0esr-ur.xpi 569921 BLAKE2B 67abdd1549b29129eef8a493d34ef13d9c4498638f47453483f15b800b112c424e39d0ac9bff1f598744d73449909e4ddf295b2be4be2e0c9d3f5a2806826829 SHA512 b1de6ff3a3923521d948f152cbf2eda735ef91dcb8bb10586c444db22bb2bb5206153e0bf03cc80779ed7b1a6af59e98cada5cbf639f87e8404350c825bee463 +DIST firefox-102.10.0esr-uz.xpi 488881 BLAKE2B 9f6aed78836fe0dc64a1f7f86cab4b3c36b92644d92265c720fcd7b208acd00e3716b11fbb97a7f89de5a22eecd86c5a15a400bf0deacd1b8afa85167adb6210 SHA512 ccdb29494831df3e37c4b3a7a98d585f61e8651c8cc2ff7064abc6450146c8844ea9d2eca1e99632843856ad360492fe24faa8ab05368a82bf4cdcb6e89ae5ef +DIST firefox-102.10.0esr-vi.xpi 611432 BLAKE2B a389fe9fcd4add0aad18e9fe23ec573742479b0c66e36c7a0a8dd0e29bace4fa227aef78a304b82f3fbf8ce575c3c7f1c0f66156ca150caaff7ffce50def0bf7 SHA512 4ee93654598c89f71b4aaa0b8bfd0e8927c2c784a00c665728aa28925c9fd990ccb16ffed39165e0afa06bc73870b576c0504538c6ca7e4dc4ed4d9a419a9ace +DIST firefox-102.10.0esr-xh.xpi 427933 BLAKE2B f581ed920343e0b7c323a470c176dafdf0ab66404d391d7c818713d86521e9443c80282ada70492ddbf89423ade1937db278059085324272c9fcb96602097d2e SHA512 d24f803ce4935e8097ce38d0c1566b70da7a81bb5a5199d99c6315c0ba29f24bc81aabca60273028b6d1e379a025af801c64aee8fa6f962a6fe92d1d2170f7bf +DIST firefox-102.10.0esr-zh-CN.xpi 613321 BLAKE2B 21bd7a9f4c549e4a443f066679660899e280016e2fe854e4a1bc4ede01efb407bd2012affa848120481eb2999920cae4ccbf4a1e6272871c5198e8ce59985f4c SHA512 230638b64c6b2b7fade5b0503d7f87f2c92c35963a1c861441196df196051073d0f7f94378c39ffae441ee5cff1cb37b1669b45ae73c39fc2aef059695c9ef75 +DIST firefox-102.10.0esr-zh-TW.xpi 614579 BLAKE2B f43efdbc63293629474fb02f5cae5c50d99fb3be58dc82eb3c41717402e86251c44381d721d50eb7747b527554bb0744dd1c5f7e07a92ec65ba77cad384422af SHA512 44cfa7aa39feeb383e51d482d42e9ea90da825022ef4557c81777468b1f8f51b4924f416c955bc0819d20101541fb548db9cab709857c76cdb113bdfbc27b67d +DIST firefox-102.10.0esr.source.tar.xz 479026088 BLAKE2B b4d8eaa6d72b009d12b435781c360f043bca7554d8b069b8d858399ece03f20703d7e36427a3f92d0b801a94b1c3f132904f21e51ba4118116bbfa4e5668d651 SHA512 f2b53c35bdd22a3de6f32699b832babcbf499667197c02dd50cf0b6cd956e0f4471f420938c2ab72f0a0686ed99fe74e3184afe9b5f7169130879b8f8fd99f0b DIST firefox-102.9.0esr-ach.xpi 466442 BLAKE2B 31f9631e4257b0c9b740c11429c1d038d25482e596c4053ee37087995ed308fc57bc77502d9ffc5bcf6986220ebc5dd7aed6a72e8269582d4c1567ac02d149ea SHA512 596b7388115d8dee354a5d80c96abf7f14fd33d1f592f7ed1d0cee620a6d0573a947212b1d694972efaf58d1cfc0265503b406903eb2a74c73fb8333f2f32922 DIST firefox-102.9.0esr-af.xpi 429117 BLAKE2B 6146a1edfd641770c5b0c9265ed32831cbc83df0dffb055557ce5c4fc1eeb08b5457ebfe4a39ef0f2069fcd548a73ad56c4e6399180fe7b62d845f194f7c7416 SHA512 41c35a08d87d2289916532ecffa598ac8595bea1812b42f51f71c0594c661f6aaa211660fbeafbb57a514bad86983e08da740c58d475dcb2b314af757425daa3 DIST firefox-102.9.0esr-an.xpi 510484 BLAKE2B fbc9117ebbaae78dab3dfdb3253cb09ee87cebcc1bd09a0ceb2c62f8f98aba35c8d9d5f15ae456d0f974715abfe0cdb5d161affc1801a7d10487d4bb5c9db0ba SHA512 8ff42fe5c664a676cc448655a6bd283e2fbed7dc8a31bff7416da27809d78f9f2216b7384fa37fa517c6f1818e40a33668a72768a3947a1e3af9c840dded1c11 diff --git a/www-client/firefox/firefox-102.10.0.ebuild b/www-client/firefox/firefox-102.10.0.ebuild new file mode 100644 index 000000000000..ee6d67c5562b --- /dev/null +++ b/www-client/firefox/firefox-102.10.0.ebuild @@ -0,0 +1,1278 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FIREFOX_PATCHSET="firefox-102esr-patches-09j.tar.xz" + +LLVM_MAX_SLOT=15 + +PYTHON_COMPAT=( python3_{9..11} ) +PYTHON_REQ_USE="ncurses,sqlite,ssl" + +WANT_AUTOCONF="2.1" + +VIRTUALX_REQUIRED="pgo" + +MOZ_ESR=yes + +MOZ_PV=${PV} +MOZ_PV_SUFFIX= +if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then + MOZ_PV_SUFFIX=${BASH_REMATCH[1]} + + # Convert the ebuild version to the upstream Mozilla version + MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI + MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI + MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI +fi + +if [[ -n ${MOZ_ESR} ]] ; then + # ESR releases have slightly different version numbers + MOZ_PV="${MOZ_PV}esr" +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 multiprocessing optfeature pax-utils python-any-r1 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,whissi,slashbeast}/mozilla/patchsets/${FIREFOX_PATCHSET} +) + +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" + +DESCRIPTION="Firefox Web Browser" +HOMEPAGE="https://www.mozilla.com/firefox" + +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" + +SLOT="esr" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" + +IUSE="+clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel" +IUSE+=" jack libproxy lto +openh264 pgo pulseaudio sndio selinux" +IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx system-png system-python-libs +system-webp" +IUSE+=" wayland wifi" + +# Firefox-only IUSE +IUSE+=" geckodriver +gmp-autoupdate screencast" + +REQUIRED_USE="debug? ( !system-av1 ) + pgo? ( lto ) + wayland? ( dbus ) + wifi? ( dbus )" + +# Firefox-only REQUIRED_USE flags +REQUIRED_USE+=" screencast? ( wayland )" + +FF_ONLY_DEPEND="!www-client/firefox:0 + !www-client/firefox:rapid + screencast? ( media-video/pipewire:= ) + selinux? ( sec-policy/selinux-mozilla )" +BDEPEND="${PYTHON_DEPS} + || ( + ( + sys-devel/clang:15 + sys-devel/llvm:15 + clang? ( + sys-devel/lld:15 + virtual/rust:0/llvm-15 + pgo? ( =sys-libs/compiler-rt-sanitizers-15*[profile] ) + ) + ) + ( + sys-devel/clang:14 + sys-devel/llvm:14 + clang? ( + sys-devel/lld:14 + virtual/rust:0/llvm-14 + pgo? ( =sys-libs/compiler-rt-sanitizers-14*[profile] ) + ) + ) + ) + !clang? ( virtual/rust ) + app-arch/unzip + app-arch/zip + >=dev-util/cbindgen-0.24.3 + net-libs/nodejs + virtual/pkgconfig + amd64? ( >=dev-lang/nasm-2.14 ) + x86? ( >=dev-lang/nasm-2.14 )" + +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.79.2 + >=dev-libs/nspr-4.34 + media-libs/alsa-lib + media-libs/fontconfig + media-libs/freetype + media-libs/mesa + media-video/ffmpeg + sys-libs/zlib + virtual/freedesktop-icon-theme + virtual/opengl + x11-libs/cairo[X] + x11-libs/gdk-pixbuf + 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/libXtst + x11-libs/libxcb:= + x11-libs/libxkbcommon[X] + x11-libs/pango + x11-libs/pixman + dbus? ( + dev-libs/dbus-glib + sys-apps/dbus + ) + jack? ( virtual/jack ) + libproxy? ( net-libs/libproxy ) + pulseaudio? ( + || ( + media-sound/pulseaudio + >=media-sound/apulse-0.1.12-r4 + ) + ) + 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-gfx/graphite2-1.3.13 + >=media-libs/harfbuzz-2.8.1:0= + ) + system-icu? ( >=dev-libs/icu-71.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.35:0=[apng] ) + system-webp? ( >=media-libs/libwebp-1.1.0:0= ) + wayland? ( + x11-libs/gtk+:3[wayland] + x11-libs/libdrm + x11-libs/libxkbcommon[wayland] + ) + wifi? ( + kernel_linux? ( + dev-libs/dbus-glib + net-misc/networkmanager + sys-apps/dbus + ) + )" + +RDEPEND="${COMMON_DEPEND} + jack? ( virtual/jack ) + openh264? ( media-libs/openh264:*[plugin] )" + +DEPEND="${COMMON_DEPEND} + x11-base/xorg-proto + x11-libs/libICE + x11-libs/libSM" + +S="${WORKDIR}/${PN}-${PV%_*}" + +# 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 "sys-devel/clang:${LLVM_SLOT}" ; then + einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use clang ; then + if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then + einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then + einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if use pgo ; then + if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile]" ; then + einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*[profile] is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + 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+=( 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+=( sco ) +MOZ_LANGS+=( si ) +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}" +} + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has usersandbox $FEATURES ; then + die "You must enable usersandbox as X server can not run as root!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6600M" + fi + + check-reqs_pkg_pretend + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + if use pgo ; then + if ! has userpriv ${FEATURES} ; then + eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" + fi + fi + + # Ensure we have enough disk space to compile + if use pgo || use lto || use debug ; then + CHECKREQS_DISK_BUILD="13500M" + else + CHECKREQS_DISK_BUILD="6400M" + fi + + check-reqs_pkg_setup + + llvm_pkg_setup + + if use clang && use lto ; then + local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') + [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") + [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" + + local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') + [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") + [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" + + if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then + eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." + eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" + eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" + eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" + eerror " - Build ${CATEGORY}/${PN} without USE=lto" + eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " + eerror " llvm/clang/lld/rust chain depending on your @world updates)" + die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" + fi + fi + + 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 + # Allow access to GPU during PGO run + local ati_cards mesa_cards nvidia_cards render_cards + shopt -s nullglob + + ati_cards=$(echo -n /dev/ati/card* | sed 's/ /:/g') + if [[ -n "${ati_cards}" ]] ; then + addpredict "${ati_cards}" + fi + + mesa_cards=$(echo -n /dev/dri/card* | sed 's/ /:/g') + if [[ -n "${mesa_cards}" ]] ; then + addpredict "${mesa_cards}" + fi + + nvidia_cards=$(echo -n /dev/nvidia* | sed 's/ /:/g') + if [[ -n "${nvidia_cards}" ]] ; then + addpredict "${nvidia_cards}" + fi + + render_cards=$(echo -n /dev/dri/renderD128* | sed 's/ /:/g') + if [[ -n "${render_cards}" ]] ; then + addpredict "${render_cards}" + fi + + shopt -u nullglob + 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 + + 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; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.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)" + + # Make LTO respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/build/moz.configure/lto-pgo.configure \ + || die "sed failed to set num_cores" + + # Make ICU respect MAKEOPTS + sed -i \ + -e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \ + "${S}"/intl/icu_sources_data.py \ + || die "sed failed to set num_cores" + + # 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 + + # Clearing crate checksums where we have applied patches + moz_clear_vendor_checksums bindgen + + # 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 ..." + if tc-is-gcc; then + have_switched_compiler=yes + fi + AR=llvm-ar + CC=${CHOST}-clang + CXX=${CHOST}-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 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + export AS="$(tc-getCC) -c" + tc-export CC CXX LD AR AS NM OBJDUMP RANLIB 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 + + # Set Gentoo defaults + export MOZILLA_OFFICIAL=1 + + mozconfig_add_options_ac 'Gentoo default' \ + --allow-addon-sideload \ + --disable-cargo-incremental \ + --disable-crashreporter \ + --disable-gpsd \ + --disable-install-strip \ + --disable-parental-controls \ + --disable-strip \ + --disable-updater \ + --enable-negotiateauth \ + --enable-new-pass-manager \ + --enable-official-branding \ + --enable-release \ + --enable-system-ffi \ + --enable-system-pixman \ + --host="${CBUILD:-${CHOST}}" \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --target="${CHOST}" \ + --without-ccache \ + --without-wasm-sandboxed-libraries \ + --with-intl-api \ + --with-libclang-path="$(llvm-config --libdir)" \ + --with-system-nspr \ + --with-system-nss \ + --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 '' --update-channel=${update_channel} + + if ! use x86 && [[ ${CHOST} != armv*h* ]] ; 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. + if use ppc64; then + mozconfig_add_options_ac '' --disable-sandbox + else + mozconfig_add_options_ac '' --enable-sandbox + 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-harfbuzz system-graphite2 + 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 + + use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme + + mozconfig_use_enable geckodriver + + if use hardened ; then + mozconfig_add_options_ac "+hardened" --enable-hardening + append-ldflags "-Wl,-z,relro -Wl,-z,now" + 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 + + if use wayland ; then + mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland + else + mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3 + fi + + if use lto ; then + if use clang ; then + # Upstream only supports lld when using clang + mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld + + mozconfig_add_options_ac '+lto' --enable-lto=cross + + else + # ThinLTO is currently broken, see bmo#1644409 + mozconfig_add_options_ac '+lto' --enable-lto=full + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + + 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 + else + # Avoid auto-magic on linker + if use clang ; then + # This is upstream's default + mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld + else + mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd + fi + fi + + # LTO flag was handled via configure + filter-flags '-flto*' + + mozconfig_use_enable debug + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + else + 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*' + + # Modifications to better support ARM, bug #553364 + if use cpu_flags_arm_neon ; then + mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon + + if ! tc-is-clang ; then + # thumb options aren't supported when using clang, bug 666966 + mozconfig_add_options_ac '+cpu_flags_arm_neon' \ + --with-thumb=yes \ + --with-thumb-interwork=no + fi + fi + + if [[ ${CHOST} == armv*h* ]] ; then + mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard + + if ! use system-libvpx ; then + sed -i \ + -e "s|softfp|hard|" \ + "${S}"/media/libvpx/moz.build \ + || die + fi + fi + + if use clang ; then + # https://bugzilla.mozilla.org/show_bug.cgi?id=1482204 + # https://bugzilla.mozilla.org/show_bug.cgi?id=1483822 + # toolkit/moz.configure Elfhack section: target.cpu in ('arm', 'x86', 'x86_64') + local disable_elf_hack= + if use amd64 ; then + disable_elf_hack=yes + elif use x86 ; then + disable_elf_hack=yes + elif use arm ; then + disable_elf_hack=yes + fi + + if [[ -n ${disable_elf_hack} ]] ; then + mozconfig_add_options_ac 'elf-hack is broken when using Clang' --disable-elf-hack + fi + elif tc-is-gcc ; then + if ver_test $(gcc-fullversion) -ge 10 ; then + einfo "Forcing -fno-tree-loop-vectorize to workaround GCC bug, see bug 758446 ..." + append-cxxflags -fno-tree-loop-vectorize + fi + fi + + if use elibc_musl && use arm64 ; then + mozconfig_add_options_ac 'elf-hack is broken when using musl/arm64' --disable-elf-hack + fi + + # Additional ARCH support + case "${ARCH}" in + arm) + # Reduce the memory requirements for linking + if use clang ; then + # Nothing to do + :; + elif use lto ; then + append-ldflags -Wl,--no-keep-memory + else + append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads + fi + ;; + esac + + if ! use elibc_glibc ; then + mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc + fi + + # Allow elfhack to work in combination with unstripped binaries + # when they would normally be larger than 2GiB. + append-ldflags "-Wl,--compress-debug-sections=zlib" + + # 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 + + if use system-python-libs; then + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="system" + else + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" + fi + + # Disable notification when build system has finished + export MOZ_NOSPAM=1 + + # Portage sets XARGS environment variable to "xargs -r" by default which + # breaks build system's check_prog() function which doesn't support arguments + mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs" + + # Set build dir + mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}" + + # Show flags we will use + einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}" + einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}" + einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}" + einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" + + # Handle EXTRA_CONF and show summary + local ac opt hash reason + + # Apply EXTRA_ECONF entries to $MOZCONFIG + if [[ -n ${EXTRA_ECONF} ]] ; then + IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!} + for opt in "${ac[@]}"; do + mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--} + done + fi + + echo + echo "==========================================================" + echo "Building ${PF} with the following configuration" + grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do + [[ -z ${hash} || ${hash} == \# ]] \ + || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}" + printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}" + done + echo "==========================================================" + echo + + ./mach configure || die +} + +src_compile() { + local virtx_cmd= + + if use pgo ; then + virtx_cmd=virtx + + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + addpredict /root + fi + + local -x GDK_BACKEND=x11 + + ${virtx_cmd} ./mach build --verbose \ + || die +} + +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 sys-devel/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 + 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 + + # 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 geckodriver + if use geckodriver ; then + einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} ..." + pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver + exeinto "${MOZILLA_FIVE_HOME}" + doexe "${BUILD_DIR}"/dist/bin/geckodriver + + dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver + fi + + # Install icons + local icon_srcdir="${S}/browser/branding/official" + local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg" + + insinto /usr/share/icons/hicolor/symbolic/apps + newins "${icon_symbolic_file}" ${PN}-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 desktop_filename="${PN}-esr.desktop" + local exec_command="${PN}" + local icon="${PN}" + local use_wayland="false" + + 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 + + # 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:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \ + -e "s:@APULSELIB_DIR@:${apulselib}:" \ + -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ + "${ED}/usr/bin/${PN}" \ + || die +} + +pkg_preinst() { + xdg_pkg_preinst + + # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse + # does not need to be forced into the LD_LIBRARY_PATH + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + einfo "APULSE found; Generating library symlinks for sound support ..." + local lib + pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die + for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do + # A quickpkg rolled by hand will grab symlinks as part of the package, + # so we need to avoid creating them if they already exist. + if [[ ! -L ${lib##*/} ]] ; then + ln -s "${lib}" ${lib##*/} || die + fi + done + popd &>/dev/null || die + fi +} + +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 + + if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then + elog "Apulse was detected at merge time on this system and so it will always be" + elog "used for sound. If you wish to use pulseaudio instead please unmerge" + elog "media-sound/apulse." + elog + fi + + local show_doh_information + local show_normandy_information + local show_shortcut_information + + if [[ -z "${REPLACING_VERSIONS}" ]] ; then + # New install; Tell user that DoH is disabled by default + show_doh_information=yes + show_normandy_information=yes + show_shortcut_information=no + else + local replacing_version + for replacing_version in ${REPLACING_VERSIONS} ; do + if ver_test "${replacing_version}" -lt 91.0 ; then + # Tell user that we no longer install a shortcut + # per supported display protocol + show_shortcut_information=yes + fi + done + fi + + if [[ -n "${show_doh_information}" ]] ; then + elog + elog "Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH):" + elog "Due to privacy concerns (encrypting DNS might be a good thing, sending all" + elog "DNS traffic to Cloudflare by default is not a good idea and applications" + elog "should respect OS configured settings), \"network.trr.mode\" was set to 5" + elog "(\"Off by choice\") by default." + elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences." + fi + + # bug 713782 + if [[ -n "${show_normandy_information}" ]] ; then + elog + elog "Upstream operates a service named Normandy which allows Mozilla to" + elog "push changes for default settings or even install new add-ons remotely." + elog "While this can be useful to address problems like 'Armagadd-on 2.0' or" + elog "revert previous decisions to disable TLS 1.0/1.1, privacy and security" + elog "concerns prevail, which is why we have switched off the use of this" + elog "service by default." + elog + elog "To re-enable this service set" + elog + elog " app.normandy.enabled=true" + elog + elog "in about:config." + fi + + if [[ -n "${show_shortcut_information}" ]] ; then + elog + elog "Since ${PN}-91.0 we no longer install multiple shortcuts for" + elog "each supported display protocol. Instead we will only install" + elog "one generic Mozilla ${PN^} shortcut." + elog "If you still want to be able to select between running Mozilla ${PN^}" + elog "on X11 or Wayland, you have to re-create these shortcuts on your own." + 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 + + elog + elog "Unfortunately Firefox-100.0 breaks compatibility with some sites using " + elog "useragent checks. To temporarily fix this, enter about:config and modify " + elog "network.http.useragent.forceVersion preference to \"99\"." + elog "Or install an addon to change your useragent." + elog "See: https://support.mozilla.org/en-US/kb/difficulties-opening-or-using-website-firefox-100" + 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 +}