summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrucible <crucible@localhost>2026-10-15 03:05:03 -0500
committerCrucible <crucible@localhost>2026-10-15 03:05:03 -0500
commit12d66102ecbcb4a4eef51d1b7f06abe9080be243 (patch)
tree3fbf63175ea094d55f2853b4b70bcef5e48a6f57
parentf2908082da3eb11b2ab459032e0b91aaf4433ff2 (diff)
downloadsrcux-12d66102ecbcb4a4eef51d1b7f06abe9080be243.tar.gz
srcux-12d66102ecbcb4a4eef51d1b7f06abe9080be243.tar.xz
srcux-12d66102ecbcb4a4eef51d1b7f06abe9080be243.zip
Publish srcux candidate 0000000656-20261015-030307HEADdevelop
-rw-r--r--app-admin/awscli/Manifest1
-rw-r--r--app-admin/awscli/awscli-2.38.1.ebuild113
-rw-r--r--app-containers/podman/Manifest1
-rw-r--r--app-containers/podman/podman-6.1.4.ebuild141
-rw-r--r--app-editors/vscode/Manifest6
-rw-r--r--app-editors/vscode/vscode-1.142.0.ebuild (renamed from app-editors/vscode/vscode-1.140.0.ebuild)0
-rw-r--r--dev-cpp/tlfloat/files/tlfloat-1.17.1_p20250711-libcxx.patch12
-rw-r--r--dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild5
-rw-r--r--dev-java/ant/Manifest2
-rw-r--r--dev-java/ant/ant-1.10.15-r2.ebuild (renamed from dev-java/ant/ant-1.10.15-r1.ebuild)2
-rw-r--r--dev-java/ant/ant-1.10.18.ebuild386
-rw-r--r--dev-java/bsh-bsf-engine/Manifest1
-rw-r--r--dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild42
-rw-r--r--dev-java/bsh-bsf-engine/metadata.xml12
-rw-r--r--dev-java/bsh/Manifest1
-rw-r--r--dev-java/bsh/bsh-3.0.0_rc1.ebuild96
-rw-r--r--dev-lang/moarvm/Manifest1
-rw-r--r--dev-lang/moarvm/moarvm-2026.09.ebuild60
-rw-r--r--dev-lang/nqp/Manifest1
-rw-r--r--dev-lang/nqp/nqp-2026.09.ebuild147
-rw-r--r--dev-lang/rakudo/Manifest1
-rw-r--r--dev-lang/rakudo/rakudo-2026.09.ebuild72
-rw-r--r--dev-libs/simdjson/Manifest1
-rw-r--r--dev-libs/simdjson/simdjson-5.0.5.ebuild112
-rw-r--r--dev-libs/zmij/Manifest1
-rw-r--r--dev-libs/zmij/files/zmij-1.2-soname.patch12
-rw-r--r--dev-libs/zmij/metadata.xml9
-rw-r--r--dev-libs/zmij/zmij-1.2.ebuild18
-rw-r--r--dev-python/authlib/Manifest2
-rw-r--r--dev-python/authlib/authlib-1.9.1.ebuild (renamed from dev-python/authlib/authlib-1.7.2.ebuild)14
-rw-r--r--dev-python/bitarray/Manifest1
-rw-r--r--dev-python/bitarray/bitarray-3.12.2.ebuild24
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.43.114.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.114.ebuild80
-rw-r--r--dev-python/cftime/Manifest2
-rw-r--r--dev-python/cftime/cftime-1.6.6.1.ebuild34
-rw-r--r--dev-python/cramjam/cramjam-2.14.0.ebuild2
-rw-r--r--dev-python/fakeredis/Manifest2
-rw-r--r--dev-python/fakeredis/fakeredis-2.40.0.ebuild139
-rw-r--r--dev-python/fastapi/Manifest1
-rw-r--r--dev-python/fastapi/fastapi-0.142.4.ebuild124
-rw-r--r--dev-python/fastsimdjson/Manifest2
-rw-r--r--dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild59
-rw-r--r--dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch54
-rw-r--r--dev-python/fastsimdjson/metadata.xml12
-rw-r--r--dev-python/filelock/Manifest2
-rw-r--r--dev-python/filelock/filelock-4.2.0.ebuild38
-rw-r--r--dev-python/fonttools/Manifest1
-rw-r--r--dev-python/fonttools/files/fonttools-4.63.0-py315.patch48
-rw-r--r--dev-python/fonttools/fonttools-4.63.0-r1.ebuild67
-rw-r--r--dev-python/gitpython/Manifest2
-rw-r--r--dev-python/gitpython/gitpython-3.2.1.ebuild74
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.169.3.ebuild143
-rw-r--r--dev-python/more-itertools/Manifest1
-rw-r--r--dev-python/more-itertools/more-itertools-11.2.1.ebuild23
-rw-r--r--dev-python/pbs-installer/Manifest2
-rw-r--r--dev-python/pbs-installer/pbs-installer-2026.10.13.ebuild33
-rw-r--r--dev-python/pycryptodome/Manifest1
-rw-r--r--dev-python/pycryptodome/pycryptodome-4.0.0.ebuild48
-rw-r--r--dev-python/pydantic-settings/Manifest4
-rw-r--r--dev-python/pydantic-settings/pydantic-settings-2.16.0.ebuild (renamed from dev-python/pydantic-settings/pydantic-settings-2.14.2.ebuild)5
-rw-r--r--dev-python/pydyf/Manifest2
-rw-r--r--dev-python/pydyf/pydyf-0.13.0.ebuild34
-rw-r--r--dev-python/pymdown-extensions/Manifest4
-rw-r--r--dev-python/pymdown-extensions/pymdown-extensions-11.0.1.ebuild34
-rw-r--r--dev-python/pymongo/Manifest1
-rw-r--r--dev-python/pymongo/pymongo-4.19.0.ebuild205
-rw-r--r--dev-python/pytest-check/Manifest1
-rw-r--r--dev-python/pytest-check/pytest-check-3.0.3.ebuild28
-rw-r--r--dev-python/sqlglot/Manifest2
-rw-r--r--dev-python/sqlglot/sqlglot-30.23.0.ebuild (renamed from dev-python/sqlglot/sqlglot-30.21.0.ebuild)0
-rw-r--r--dev-util/pixi/Manifest4
-rw-r--r--dev-util/pixi/pixi-0.80.0.ebuild163
-rw-r--r--dev-util/pixi/pixi-0.82.0.ebuild106
-rw-r--r--mail-client/thunderbird-bin/Manifest130
-rw-r--r--mail-client/thunderbird-bin/thunderbird-bin-153.5.0.ebuild283
-rw-r--r--mail-client/thunderbird-bin/thunderbird-bin-158.0.ebuild283
-rw-r--r--mail-client/thunderbird-l10n/Manifest126
-rw-r--r--mail-client/thunderbird-l10n/thunderbird-l10n-153.5.0.ebuild145
-rw-r--r--mail-client/thunderbird-l10n/thunderbird-l10n-158.0.ebuild145
-rw-r--r--mail-client/thunderbird/Manifest3
-rw-r--r--mail-client/thunderbird/thunderbird-153.5.0.ebuild1112
-rw-r--r--mail-client/thunderbird/thunderbird-158.0.ebuild1123
-rw-r--r--media-libs/freetype/Manifest6
-rw-r--r--media-libs/freetype/freetype-2.15.0.ebuild277
-rw-r--r--media-libs/freetype/freetype-9999.ebuild2
-rw-r--r--media-sound/mpg123/mpg123-1.33.7.ebuild22
-rw-r--r--net-dns/nsd/Manifest2
-rw-r--r--net-dns/nsd/nsd-4.15.3.ebuild190
-rw-r--r--net-libs/nodejs/Manifest3
-rw-r--r--net-libs/nodejs/files/nodejs-24.21.0-rm-64bit-only-intrinsic-for-32bit.patch11
-rw-r--r--net-libs/nodejs/files/nodejs-26.12.0-v8-climits.patch12
-rw-r--r--net-libs/nodejs/nodejs-24.21.0-r1.ebuild (renamed from net-libs/nodejs/nodejs-24.19.0.ebuild)21
-rw-r--r--net-libs/nodejs/nodejs-24.22.0.ebuild (renamed from net-libs/nodejs/nodejs-26.10.0.ebuild)87
-rw-r--r--net-libs/nodejs/nodejs-26.12.0.ebuild (renamed from net-libs/nodejs/nodejs-26.10.0-r1.ebuild)39
-rw-r--r--net-misc/mrouted/mrouted-4.7.ebuild2
-rw-r--r--net-misc/sb-hosts/Manifest2
-rw-r--r--net-misc/sb-hosts/sb-hosts-3.16.121.ebuild (renamed from net-misc/sb-hosts/sb-hosts-3.16.119.ebuild)0
-rw-r--r--net-proxy/haproxy/Manifest8
-rw-r--r--net-proxy/haproxy/haproxy-3.0.14.ebuild217
-rw-r--r--net-proxy/haproxy/haproxy-3.0.30.ebuild (renamed from net-proxy/haproxy/haproxy-3.0.26.ebuild)0
-rw-r--r--net-proxy/haproxy/haproxy-3.2.26.ebuild (renamed from net-proxy/haproxy/haproxy-3.2.22.ebuild)25
-rw-r--r--net-proxy/haproxy/haproxy-3.2.9.ebuild220
-rw-r--r--net-proxy/haproxy/haproxy-3.4.7.ebuild (renamed from net-proxy/haproxy/haproxy-3.4.3.ebuild)0
-rw-r--r--net-vpn/i2p/i2p-2.13.0.ebuild2
-rw-r--r--sci-libs/mumps/mumps-5.6.2-r1.ebuild10
-rw-r--r--sci-mathematics/z3/Manifest2
-rw-r--r--sci-mathematics/z3/z3-4.16.0.ebuild107
-rw-r--r--sci-mathematics/z3/z3-5.0.0.ebuild107
-rw-r--r--sci-ml/datasets/Manifest1
-rw-r--r--sci-ml/datasets/datasets-5.1.0.ebuild107
-rw-r--r--sci-ml/huggingface_hub/Manifest3
-rw-r--r--sci-ml/huggingface_hub/huggingface_hub-1.26.1.ebuild (renamed from sci-ml/huggingface_hub/huggingface_hub-1.26.0-r1.ebuild)5
-rw-r--r--sci-ml/huggingface_hub/huggingface_hub-1.31.0.ebuild116
-rw-r--r--sci-ml/tokenizers/tokenizers-0.23.3-r1.ebuild (renamed from sci-ml/tokenizers/tokenizers-0.23.3.ebuild)4
-rw-r--r--sys-apps/portage/files/0001-bintree-provide-an-empty-default-for-USER_PATCHES.patch44
-rw-r--r--sys-apps/portage/portage-3.0.83-r1.ebuild239
-rw-r--r--sys-kernel/gentoo-sources/Manifest6
-rw-r--r--sys-kernel/gentoo-sources/gentoo-sources-6.12.110.ebuild38
-rw-r--r--sys-kernel/gentoo-sources/gentoo-sources-6.18.52.ebuild28
-rw-r--r--sys-libs/glibc/Manifest4
-rw-r--r--sys-libs/glibc/glibc-2.43-r6.ebuild (renamed from sys-libs/glibc/glibc-2.43-r2.ebuild)25
-rw-r--r--sys-libs/glibc/glibc-2.43.9999.ebuild14
-rw-r--r--sys-libs/glibc/glibc-2.44-r4.ebuild (renamed from sys-libs/glibc/glibc-2.44-r2.ebuild)18
-rw-r--r--sys-libs/glibc/glibc-2.44.9999.ebuild14
-rw-r--r--sys-libs/glibc/glibc-9999.ebuild14
-rw-r--r--sys-process/procps/procps-4.0.5-r6.ebuild (renamed from sys-process/procps/procps-4.0.5-r5.ebuild)20
-rw-r--r--www-apps/grafana-bin/Manifest18
-rw-r--r--www-apps/grafana-bin/grafana-bin-12.1.10.ebuild73
-rw-r--r--www-apps/grafana-bin/grafana-bin-12.2.10.ebuild73
-rw-r--r--www-apps/grafana-bin/grafana-bin-12.4.0.ebuild73
-rw-r--r--www-apps/grafana-bin/grafana-bin-12.4.13.ebuild (renamed from www-apps/grafana-bin/grafana-bin-12.4.11.ebuild)0
-rw-r--r--www-apps/grafana-bin/grafana-bin-13.1.8.ebuild (renamed from www-apps/grafana-bin/grafana-bin-13.1.6.ebuild)0
-rw-r--r--www-apps/grafana-bin/grafana-bin-13.2.4.ebuild (renamed from www-apps/grafana-bin/grafana-bin-13.2.2.ebuild)0
-rw-r--r--www-client/firefox/firefox-158.0.ebuild2
-rw-r--r--www-client/librewolf/librewolf-158.0_p1.ebuild2
-rw-r--r--www-client/ungoogled-chromium/Manifest2
-rw-r--r--www-client/ungoogled-chromium/ungoogled-chromium-155.0.8059.79_p1.ebuild2714
141 files changed, 9805 insertions, 1516 deletions
diff --git a/app-admin/awscli/Manifest b/app-admin/awscli/Manifest
index 328ba249578e..b0e14350a1a9 100644
--- a/app-admin/awscli/Manifest
+++ b/app-admin/awscli/Manifest
@@ -4,3 +4,4 @@ DIST aws-cli-2.37.13.gh.tar.gz 19748121 BLAKE2B 1101457801c8fde3674428a7063b0672
DIST aws-cli-2.37.4.gh.tar.gz 19473894 BLAKE2B ad6cc6bccb8521e6951feece0418dc4976fe088b35f6bb2be41cb82cb8ec85b3dafdedb5545187fa3a045cb29ff9c114d3f39ba7fdfbf22085c8cb8e00f4fc98 SHA512 e9af6b7f12da9f31182487d9e89bd234f817bcdc379cb5ef37467d5e23a07e84b0021fedfcc717c6c031508dad915553e074e2fa1dfd00198d1459d84de75bac
DIST aws-cli-2.37.9.gh.tar.gz 19700332 BLAKE2B f24deee1bcfc03146536e3f87ec2a687be7a1888df5e0eb8fca91f0f13ab40875add8ba98c2b44b90bb8000efc05c063bb32e6e824caacde216c01e94d71245c SHA512 892591dfda26b89c5e75f9e313c2b0e2979b61c8ecc248e2d88d021ff1d08b8bcf417ff9bbda5a09e47a4fe20dd682a8656ad21524f2a1f5f062044f6e5c8c76
DIST aws-cli-2.38.0.gh.tar.gz 19762428 BLAKE2B ce13807a930b8dc76ee0b1f02fc4e9117d7960380476589886f9c4bbe4a56fd8cda9055065d09f7ddbc2563ba660472b94bee2d8af0c6ceadbc649b583683f97 SHA512 df85b8a46a579dfec0f7c0add69c23fe3507bd9550365b92547ec8d4b910ea1ea579a40c5ebcff3545b9f89234d262188ea436413258bdaf2aad10d77ce2a648
+DIST aws-cli-2.38.1.gh.tar.gz 19765680 BLAKE2B a80879a0f9979870710c68bb02256cfd2933b10fad606e44d0ee97ddf04c573c9a1052c5b795eca283458922ddf4ad70a60a223e90ed8ffd44847223b1039dff SHA512 c2e1cb7f74766144d73b6663435d3359c8a61e056ae38d179dc3f63aae8e28afaea81dfabfb18620ecdac35f9db7df2218f8a5b6e9db63543bdf113286715b26
diff --git a/app-admin/awscli/awscli-2.38.1.ebuild b/app-admin/awscli/awscli-2.38.1.ebuild
new file mode 100644
index 000000000000..0271e6e9ae34
--- /dev/null
+++ b/app-admin/awscli/awscli-2.38.1.ebuild
@@ -0,0 +1,113 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 shell-completion
+
+MY_P=aws-cli-${PV}
+DESCRIPTION="Universal Command Line Environment for AWS"
+HOMEPAGE="
+ https://github.com/aws/aws-cli/
+ https://pypi.org/project/awscli/
+"
+SRC_URI="
+ https://github.com/aws/aws-cli/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/colorama-0.2.5[${PYTHON_USEDEP}]
+ >=dev-python/docutils-0.10[${PYTHON_USEDEP}]
+ >=dev-python/ruamel-yaml-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/prompt-toolkit-3.0.24[${PYTHON_USEDEP}]
+ >=dev-python/distro-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/awscrt-0.36.2[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.1[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# bundled dependencies
+RDEPEND+="
+ >=dev-python/s3transfer-0.18.0[${PYTHON_USEDEP}]
+"
+TODO="
+ dev-python/rsa[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ !app-admin/awscli-bin
+"
+BDEPEND="
+ dev-python/flit-core[${PYTHON_USEDEP}]
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # this package bundles botocore & s3transfer, but they are custom
+ # v2 branches that were never released and are incompatible with
+ # our release versions
+
+ # strip overzealous upper bounds on requirements
+ sed -i -e 's:,<[=0-9.]*::' -e 's:==:>=:' pyproject.toml || die
+ # wcwidth isn't used
+ sed -i -e '/wcwidth/d' pyproject.toml || die
+}
+
+python_test() {
+ local -x TZ=UTC
+
+ local EPYTEST_DESELECT=(
+ # TODO
+ tests/functional/autocomplete/test_main.py::test_smoke_test_completer
+ tests/unit/customizations/ec2instanceconnect/test_websocket.py::TestWebsocket::test_connect_with_proxy
+ tests/unit/customizations/ec2instanceconnect/test_websocket.py::TestWebsocket::test_connect_with_proxy_but_no_proxy_env_empty
+ tests/unit/customizations/emr/test_emr_utils.py::TestEMRutils::test_which_with_existing_command
+ tests/unit/customizations/emr/test_emr_utils.py::TestEMRutils::test_which_with_non_existing_command
+ tests/unit/customizations/wizard/test_app.py
+ tests/unit/test_compat.py::TestGetPreferredEncoding::test_getpreferredencoding_with_env_var
+ )
+
+ # Some tests take a lot of memory, so run parallel-safe tests first.
+ local awscli_parallel_tests=(
+ tests/functional/[ac-z]*/
+ tests/unit/
+ )
+ local botocore_parallel_tests=(
+ tests/functional/botocore/*/
+ tests/functional/botocore/test_[cds-z]*.py
+ )
+ #epytest "${botocore_parallel_tests[@]}"
+ epytest "${awscli_parallel_tests[@]}"
+
+ local EPYTEST_IGNORE=(
+ "${botocore_parallel_tests[@]}"
+ "${awscli_parallel_tests[@]}"
+ )
+ EPYTEST_XDIST= epytest tests/functional
+}
+
+python_install_all() {
+ newbashcomp bin/aws_bash_completer aws
+ newzshcomp bin/aws_zsh_completer.sh _aws
+
+ distutils-r1_python_install_all
+
+ rm "${ED}"/usr/bin/{aws.cmd,aws_bash_completer,aws_zsh_completer.sh} || die
+}
diff --git a/app-containers/podman/Manifest b/app-containers/podman/Manifest
index 4f5f3fd68b8d..0d38ec222fb2 100644
--- a/app-containers/podman/Manifest
+++ b/app-containers/podman/Manifest
@@ -7,3 +7,4 @@ DIST podman-6.0.1.tar.gz 20513090 BLAKE2B 7ad62803a09bfd6839c78cf958bda81f027f17
DIST podman-6.0.2.tar.gz 20516396 BLAKE2B cc0a0032a7f8f490a874bdc3d05b618f52e8d7c7597c70852feacff2cd145bb0ad127e686221237c31f4cccabeaa89465cd2f3234d8ab92eaecb71074796ece8 SHA512 1227f486d1c84c0d877fadf2627c2f491bd1634c2de036631b589a727a1dc3212297cf2d2d313c75b3556de1b0204205e664e70ccf8ebc0b0064d1136db9351e
DIST podman-6.1.0.tar.gz 20956524 BLAKE2B 01ed3f93ce6ddf52911b16061fa339069061faf30c24bc40eacd8ba5a6daeb9e59b08bcc849806a933bdcac58c6f79001742df9a86dbb689e6b042a47ad23edf SHA512 3822eb564111f6cdcdce0f34d06e962cb40b1b34be158c2162334fe966bc314a66e8d164326ceed7ab1f1f87607bd13be1258ca9cfb274ea2a69f7409be40149
DIST podman-6.1.2.tar.gz 20980766 BLAKE2B 0314732573df6491b8e364d937eda14143a021b959ec43fe88839e0cd414446d30c95b661972069b5da77a374948dc8e8cf6c5c166bf932f9777d4a2939c1a40 SHA512 c17d05d4b5683a266290f91afa78945666f39f2dea3de8074bd3457083120f787532b6c88f4c00996ad309ce05b2c3cd50d91742aa315a10ace868d49adafb48
+DIST podman-6.1.4.tar.gz 21017012 BLAKE2B c3cfeeb199c0a1fc7d4a21349816decf7ab57dd9542f60e286b9b752d617ff1405beb831f1b644868092414fee4566694b0dfb1b4bed7b176820661dabff033c SHA512 46bd3a4ef7341a30a43582224a3c0a4c89cf0ea8fceac3c1ee03c0613981a6160afec1fede7a15f558f4174c9b0bf231f7447e461e9c2c87bbfaed8978ce41fc
diff --git a/app-containers/podman/podman-6.1.4.ebuild b/app-containers/podman/podman-6.1.4.ebuild
new file mode 100644
index 000000000000..9d9f1b34f9ed
--- /dev/null
+++ b/app-containers/podman/podman-6.1.4.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit go-module python-any-r1 tmpfiles toolchain-funcs linux-info
+
+DESCRIPTION="A tool for managing OCI containers and pods with Docker-compatible CLI"
+HOMEPAGE="https://github.com/podman-container-tools/podman/ https://podman.io/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/podman-container-tools/podman.git"
+else
+ SRC_URI="https://github.com/podman-container-tools/podman/archive/v${PV/_rc/-rc}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${P/_rc/-rc}"
+ [[ ${PV} != *rc* ]] && \
+ KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
+fi
+
+# main pkg
+LICENSE="Apache-2.0"
+# deps
+LICENSE+=" BSD BSD-2 CC-BY-SA-4.0 ISC MIT MPL-2.0"
+SLOT="0"
+IUSE="apparmor btrfs cron +seccomp selinux systemd wrapper"
+RESTRICT="test"
+
+RDEPEND="
+ app-containers/catatonit
+ >=app-containers/conmon-2.1.10
+ >=app-containers/container-libs-0.68.0[extra(-)]
+ app-crypt/gpgme:=
+ dev-db/sqlite:3
+ dev-libs/libassuan:=
+ dev-libs/libgpg-error:=
+ sys-apps/shadow:=
+
+ apparmor? ( sys-libs/libapparmor )
+ btrfs? ( sys-fs/btrfs-progs )
+ wrapper? ( !app-containers/docker-cli )
+ seccomp? ( sys-libs/libseccomp:= )
+ selinux? ( sec-policy/selinux-podman )
+ systemd? ( sys-apps/systemd:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ ${PYTHON_DEPS}
+ dev-go/go-md2man
+ >=dev-lang/go-1.26.0
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-5.5.2-togglable-seccomp.patch
+)
+
+CONFIG_CHECK="
+ ~USER_NS
+"
+
+pkg_setup() {
+ use btrfs && CONFIG_CHECK+=" ~BTRFS_FS"
+ linux-info_pkg_setup
+ python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # assure necessary files are present
+ local file
+ for file in apparmor_tag btrfs_installed_tag systemd_tag; do
+ [[ -f hack/"${file}".sh ]] || die
+ done
+
+ local feature
+ for feature in apparmor systemd; do
+ cat <<-EOF > hack/"${feature}"_tag.sh || die
+ #!/usr/bin/env bash
+ $(usex ${feature} "echo ${feature}" echo)
+ EOF
+ done
+
+ cat <<-EOF > hack/btrfs_installed_tag.sh || die
+ #!/usr/bin/env bash
+ $(usex btrfs echo 'echo exclude_graphdriver_btrfs')
+ EOF
+
+ # hardcode using system sqlite instead of bundled one
+ [[ -f hack/sqlite_tag.sh ]] && echo -e '#!/usr/bin/env bash\necho libsqlite3' > hack/sqlite_tag.sh || die
+}
+
+src_compile() {
+ export ETCDIR="${EPREFIX}/etc" PREFIX="${EPREFIX}/usr" BUILD_ORIGIN="Gentoo Portage"
+
+ # For non-live versions, prevent git operations which causes sandbox violations
+ # https://github.com/gentoo/gentoo/pull/33531#issuecomment-1786107493
+ [[ ${PV} != 9999* ]] && export COMMIT_NO="" GIT_COMMIT="" EPOCH_TEST_COMMIT=""
+
+ # Use proper pkg-config to get gpgme cflags and ldflags when
+ # cross-compiling, bug 930982.
+ if tc-is-cross-compiler; then
+ tc-export PKG_CONFIG
+ fi
+
+ emake BUILDFLAGS="-v -work -x" GOMD2MAN="go-md2man" EXTRA_BUILDTAGS="$(usev seccomp)" SELINUXOPT= \
+ all $(usev wrapper docker-docs)
+}
+
+src_install() {
+ emake DESTDIR="${D}" SELINUXOPT= install install.completions $(usev wrapper install.docker-full)
+
+ newconfd "${FILESDIR}"/podman-5.0.0_rc4.confd podman
+ newinitd "${FILESDIR}"/podman-5.0.0_rc4.initd podman
+
+ newinitd "${FILESDIR}"/podman-restart-5.0.0_rc4.initd podman-restart
+ newconfd "${FILESDIR}"/podman-restart-5.0.0_rc4.confd podman-restart
+
+ newinitd "${FILESDIR}"/podman-clean-transient-5.0.0_rc6.initd podman-clean-transient
+ newconfd "${FILESDIR}"/podman-clean-transient-5.0.0_rc6.confd podman-clean-transient
+
+ if use cron; then
+ exeinto /etc/cron.daily
+ newexe "${FILESDIR}"/podman-auto-update-5.0.0.cron podman-auto-update
+ fi
+
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/podman.logrotated" podman
+
+ exeinto /etc/user/init.d
+ newexe "${FILESDIR}/podman-5.0.0_rc4.user.initd" podman
+
+ insinto /etc/user/conf.d
+ newins "${FILESDIR}/podman-5.0.0_rc4.user.confd" podman
+}
+
+pkg_postinst() {
+ tmpfiles_process podman.conf $(usev wrapper podman-docker.conf)
+}
diff --git a/app-editors/vscode/Manifest b/app-editors/vscode/Manifest
index abdcfe54ca21..fb2c7c2b1835 100644
--- a/app-editors/vscode/Manifest
+++ b/app-editors/vscode/Manifest
@@ -1,6 +1,6 @@
-DIST vscode-1.140.0-amd64.tar.gz 348920118 BLAKE2B 05413555dd8f78fbbd5803d9a2f29dace870494fc9eb6671b3c992d409acfa2d3f1a545e2780fe270cddca05a2e44e5a8dc6b5818507d2870c3861a9572b4192 SHA512 65f28c1dc30bb7a95ae9bcc4c8edb06f89e7a17abde2a6c9a2ed2274ccbf4631bac1bde73057b7ec9a498bb313520f045a035baf9d1672621444ad6813dfabac
-DIST vscode-1.140.0-arm.tar.gz 226247626 BLAKE2B 98c7a19efc142ef2939d8ce36b6027240f9634d814d0583fa7c304db95229797ccb2760b6ceba3fb7fc95e1c16284ca05428141a9b9823482de40ff1931e5719 SHA512 356472101388c92125b42e57021c5537d0b00efcf0032fe8223d390cf9bf91c95a146d2460817f4e666513bec062fb4b8c55bb858ca578b3c734e8095b8fac22
-DIST vscode-1.140.0-arm64.tar.gz 338341237 BLAKE2B 4287fa88632554a1e56a83f31f69e4c3e4832e5a4b4e39a0c4b910debe7ff90a35a1fa71d9dd7ab540a94468afe8dee80453ae1d86dea0a255c75d50abebc8d1 SHA512 9ef13a3bb68d2fb53bbf606231bc26ce6e7ee4e1cee907bde6c2bd1ad75ab296bcf778e7916fc144b5fd28b99dee29e57fe178a324d72132935d36964eca22be
DIST vscode-1.141.0-amd64.tar.gz 360484982 BLAKE2B afc23400831e5c7b1f54066c410a9891ba4d606b670f0cd41b941a09469137c268c7fa8454b0372f8fe137201c19bb189685215d637b508aa507ded9f92a59be SHA512 ce40fd54897be38bc127ea3534c9f8b00b796e695c674927da1cc007afaebd7dab8939ff24ab913d0abd04823a99e1980cf682ae5abfa1d40f15634f014b3eca
DIST vscode-1.141.0-arm.tar.gz 226897902 BLAKE2B 7b384ddddefd92f02a2b1409f14520395190674063b67bd94d98c93f4794cceea3e8e58ed591766de09676be509c453eaabfd3f995b031e0f0d01eee647540a6 SHA512 3835b88b81038dfb0117893997d2b408e2a09eeca8d7b43a42550419a9a955758c5c34fd4b195554575f403bd774646919571b48d9c4bf8fa91bd7b8158a3996
DIST vscode-1.141.0-arm64.tar.gz 349562023 BLAKE2B eec9f0b35a525f898a24943098ff0bc58060a04d4a88764d22cb1a32d33add086ce3c01d9f2172fc2c76995439f1f3d10cbe7b8e1f7dfe19db4de458b8e01402 SHA512 c62c6fff86c84d689e6229694dbf8b4c6734e3ca368f170d90479faab392ddd4dfa4760e4a7fc0c1a8a800777327f5c98643e53e7b9013f6a621c7f7d6b6e6e9
+DIST vscode-1.142.0-amd64.tar.gz 345700834 BLAKE2B a0d03d94c999f9860deb5fc489fab76b0e8e04c358a257780fb3fd7ac8fae65e0bece063ae0c87c48757a87171e5ce64255dc66a4d953e2132226117c8c4a329 SHA512 930a22d22d7f811230a6d63842d0f33be1460eae2bd485ea39dd893026e808c2312a097187ec5bf1ca86b446d852c62ea85cde1a3933106f32e0f22ae99d8221
+DIST vscode-1.142.0-arm.tar.gz 228124779 BLAKE2B fb27d617a7d22939283e72581c2b41aec4d6374632e3d46a880e1e0aef2f7764bf3d3795a72f135533c229ee4304c7fee50afbf447e4211d010cb0ea269a5eb2 SHA512 f3bf2f03e5bcdb848c1865ebcab3785861e5d2b693ee98be3e6d5ce28e0d76e25539d6db1f777824ce85f95008bf206715d1bf2a15fad63d0ec179fb2caa2094
+DIST vscode-1.142.0-arm64.tar.gz 337738865 BLAKE2B b80228b1d9a76d95a04dcebeacef7f0d59d62bc5c12c873b98232741ada728172572a3acafda3ddcf897977813834847142abd511347073a4a6146145a848867 SHA512 3c912962bc5d558c01f5d0e16a42ae2e089cd178d9661ab042245b11e11f86e3427895a780bc9ea5359cf34e63c7dba3c7ef695e9d272c9e587dde642fd06991
diff --git a/app-editors/vscode/vscode-1.140.0.ebuild b/app-editors/vscode/vscode-1.142.0.ebuild
index 9cf66870460a..9cf66870460a 100644
--- a/app-editors/vscode/vscode-1.140.0.ebuild
+++ b/app-editors/vscode/vscode-1.142.0.ebuild
diff --git a/dev-cpp/tlfloat/files/tlfloat-1.17.1_p20250711-libcxx.patch b/dev-cpp/tlfloat/files/tlfloat-1.17.1_p20250711-libcxx.patch
new file mode 100644
index 000000000000..dff96ff8d004
--- /dev/null
+++ b/dev-cpp/tlfloat/files/tlfloat-1.17.1_p20250711-libcxx.patch
@@ -0,0 +1,12 @@
+Fix build with libc++
+Upstream PR: https://github.com/shibatch/tlfloat/pull/6
+--- a/src/include/tlfloat/tlfloat.hpp
++++ b/src/include/tlfloat/tlfloat.hpp
+@@ -8,6 +8,7 @@
+ #define __TLFLOAT_HPP_INCLUDED__
+
+ #include <cstdio>
++#include <type_traits>
+
+ #include <tlfloat/bigint.hpp>
+
diff --git a/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild b/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild
index f954b85a2097..2e016dda4015 100644
--- a/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild
+++ b/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild
@@ -22,7 +22,10 @@ KEYWORDS="~amd64 ~arm64 ~riscv"
IUSE="test"
RESTRICT="!test? ( test )"
-PATCHES=( "${FILESDIR}"/${P}-fPIC.patch )
+PATCHES=(
+ "${FILESDIR}"/${P}-fPIC.patch
+ "${FILESDIR}"/${P}-libcxx.patch
+)
src_configure() {
local mycmakeargs=(
diff --git a/dev-java/ant/Manifest b/dev-java/ant/Manifest
index 8202ae31468b..ea868e411f84 100644
--- a/dev-java/ant/Manifest
+++ b/dev-java/ant/Manifest
@@ -1,2 +1,4 @@
DIST apache-ant-1.10.15-src.tar.xz 3780456 BLAKE2B c157b488ac5f207daf5afcec3368395cacd44d82e0b8e19cbdf637e8ea43bafd340fcb13aede1292f7a0b31ae82a968831c51dabebfccf2fafb6479aa79f7dc4 SHA512 7513c0909abcc2ebcbb552ec97eaa35f476e57fec54022755d2e83d9d6df5295e0d75274e687208a4689a30592c19a0df041dff511dd3690627b1734ee2171c5
DIST apache-ant-1.10.15-src.tar.xz.asc 833 BLAKE2B e8741004b141955c729778cb987034f133af174dfc07c75976c8eda13272703b9b6158c68594f54dfef47c0f546c43cc97176b2a9193263076251a75b2f12129 SHA512 3585f32ef230e502db6a376d6343c74eae390931ae6a5c842b668eda6fbce1557e5d400001bbb244544c186e9e51cae4c2c05ccd6ff38cdbb16899aff5d48659
+DIST apache-ant-1.10.18-src.tar.xz 3842048 BLAKE2B e26567ec836f6c9c964d980cb084b7fba506e5ac757ce87fe9ee8f1e6913a027b41c693f4c253a9bad89b445b7f4c769e5e0bc7c3176aa3132a68ab92cf382d8 SHA512 6749e9926996462f4c8934188f4d93a8f7accc38b6401567aef04d77ff6c253d501817c359b6e00bd89335ece0d1c992e92ba68937f2f2b4293049c0253fa57a
+DIST apache-ant-1.10.18-src.tar.xz.asc 256 BLAKE2B 8495f1ce42aeef5dddcd71c218175603c4aa14fc1eae73c8ec48cd86a36cc582c832c989072729b91ec8fa03855f8c238e156960c6c8f4767d9a276c391cbb37 SHA512 60ba3e9b39e987160d2e2f1da99f962d6f0a19cf26c9ac172bac3fe9d5da4cbe2d78fa28d946e8dc4ef17abc072f73d065b690a093e30ad20c3c089cb591289e
diff --git a/dev-java/ant/ant-1.10.15-r1.ebuild b/dev-java/ant/ant-1.10.15-r2.ebuild
index d1dce6837d65..93e1eeff4140 100644
--- a/dev-java/ant/ant-1.10.15-r1.ebuild
+++ b/dev-java/ant/ant-1.10.15-r2.ebuild
@@ -61,7 +61,7 @@ DEPEND="
test? (
dev-java/antunit:0
dev-java/bsf:2.3[javascript]
- dev-java/bsh:0
+ <=dev-java/bsh-2.1.1-r9999:0
dev-java/hamcrest-library:1.3
dev-java/xerces:2
)
diff --git a/dev-java/ant/ant-1.10.18.ebuild b/dev-java/ant/ant-1.10.18.ebuild
new file mode 100644
index 000000000000..d61611a484ff
--- /dev/null
+++ b/dev-java/ant/ant-1.10.18.ebuild
@@ -0,0 +1,386 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple verify-sig prefix
+
+DESCRIPTION="Java-based build tool similar to 'make' that uses XML configuration files"
+HOMEPAGE="https://ant.apache.org/"
+SRC_URI="mirror://apache/ant/source/apache-${P}-src.tar.xz
+ verify-sig? ( https://downloads.apache.org/ant/source/apache-${P}-src.tar.xz.asc )"
+S="${WORKDIR}/apache-${P}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x64-macos ~x64-solaris"
+IUSE="antlr bcel bsf commonslogging commonsnet imageio jai jakartamail javamail jdepend
+ jmf jsch junit junit4 junitlauncher log4j oro regexp resolver swing testutil xalan xz"
+
+REQUIRED_USE="
+ junit4? ( junit )
+ test? ( bsf )
+ testutil? ( junit )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/ant.apache.org.asc"
+BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-apache-ant-20260402 )"
+# jdk-11:* because it needs java/util/spi/ToolProvider, available since Java 9.
+DEPEND="
+ >=virtual/jdk-11:*
+ bcel? ( dev-java/bcel:0 )
+ bsf? ( dev-java/bsf:2.3 )
+ commonslogging? ( >=dev-java/commons-logging-1.3.5-r1:0 )
+ commonsnet? ( dev-java/commons-net:0 )
+ jai? ( dev-java/sun-jai-bin:0 )
+ jakartamail? ( dev-java/jakarta-mail:0 )
+ javamail? (
+ dev-java/jakarta-activation-api:1
+ dev-java/javax-mail:0
+ )
+ jdepend? ( >=dev-java/jdepend-2.10-r1:0 )
+ jsch? ( dev-java/jsch:0 )
+ junit4? ( dev-java/junit:4 )
+ junit? ( dev-java/junit:4 )
+ junitlauncher? ( dev-java/junit:5[vintage] )
+ log4j? ( >=dev-java/log4j-12-api-2.25.2:0 )
+ oro? ( dev-java/jakarta-oro:2.0 )
+ regexp? ( dev-java/jakarta-regexp:1.4 )
+ resolver? ( dev-java/xml-commons-resolver:0 )
+ test? (
+ dev-java/antunit:0
+ dev-java/bsf:2.3[javascript]
+ >=dev-java/bsh-bsf-engine-3.0.0_beta1:0
+ dev-java/hamcrest-library:1.3
+ dev-java/xerces:2
+ )
+ xalan? (
+ dev-java/xalan:0
+ dev-java/xalan-serializer:0
+ )
+ xz? ( dev-java/xz-java:0 )
+"
+RDEPEND="
+ !dev-java/ant-apache-regexp
+ !dev-java/ant-apache-log4j
+ !dev-java/ant-apache-xalan2
+ !dev-java/ant-commons-logging
+ !<dev-java/ant-core-1.10.14
+ !dev-java/ant-swing
+ !dev-java/ant-junit4
+ !dev-java/ant-testutil
+ !dev-java/ant-junitlauncher
+ !dev-java/ant-jai
+ !dev-java/ant-commons-net
+ !dev-java/ant-apache-bsf
+ !dev-java/ant-jmf
+ !dev-java/ant-apache-oro
+ !dev-java/ant-javamail
+ !dev-java/ant-junit
+ !dev-java/ant-jdepend
+ !dev-java/ant-antlr
+ !dev-java/ant-apache-bcel
+ !dev-java/ant-apache-resolver
+ !dev-java/ant-jsch
+ !dev-java/ant-xz
+ >=virtual/jre-1.8:*
+"
+
+DOCS=( CONTRIBUTORS INSTALL NOTICE README WHATSNEW )
+PATCHES=(
+ "${FILESDIR}/1.10.9-launch.patch" # reusing this patch since the script has not changed
+ "${FILESDIR}/ant-1.10.14-AntlibTest.patch" # skips 1 of 6 tests
+ "${FILESDIR}/ant-1.10.14-AntTest.patch" # skips 1 of 32 tests
+ "${FILESDIR}/ant-1.10.14-JavaTest.patch" # skips 12 of 38 tests
+ "${FILESDIR}/ant-1.10.14-LinkTest.patch" # skips 4 of 67 tests
+ "${FILESDIR}/ant-1.10.14-PathTest.patch" # skips 1 of 33 tests
+)
+
+JAVADOC_SRC_DIRS=(
+ ant
+ ant-launcher/src/main
+)
+JAVA_TEST_GENTOO_CLASSPATH="
+ bsh-bsf-engine
+ hamcrest-library-1.3
+ junit-4
+ xerces-2
+"
+JAVA_TEST_RESOURCE_DIRS=(
+ "src/etc/testcases"
+ "src/main"
+)
+JAVA_TEST_SRC_DIR="src/tests/junit"
+
+# $1 ant-apache-bsf (source directory)
+# $2 bsf-2.3 (classpath of external dependency)
+taskdeps() {
+ if [[ ${task} == $1 ]]; then
+ JAVA_CLASSPATH_EXTRA="${2}"
+ JAVADOC_CLASSPATH+=" ${2}"
+ JAVADOC_SRC_DIRS+=( "${task}/src/main" )
+ JAVA_RESOURCE_DIRS="${3}"
+ fi
+}
+
+src_prepare() {
+ java-pkg-2_src_prepare
+ java-pkg_clean ! -path "./src/etc/*" # keep test resources
+
+ eprefixify "src/script/ant"
+
+ ANT_TASKS=(
+ $(use antlr && echo ant-antlr) # no dependencies
+ $(use bcel && echo ant-apache-bcel)
+ $(use bsf && echo ant-apache-bsf) # REQUIRED_USE for tests
+ $(use log4j && echo ant-apache-log4j)
+ $(use oro && echo ant-apache-oro) # ORO is retired - replace with java.util.regex?
+ $(use regexp && echo ant-apache-regexp)
+ $(use resolver && echo ant-apache-resolver)
+ $(use xalan && echo ant-apache-xalan2)
+ $(use commonslogging && echo ant-commons-logging)
+ $(use commonsnet && echo ant-commons-net)
+ $(use imageio && echo ant-imageio) # no dependencies
+ $(use jai && echo ant-jai)
+ $(use jakartamail && echo ant-jakartamail)
+ $(use javamail && echo ant-javamail)
+ $(use jdepend && echo ant-jdepend)
+ $(use jmf && echo ant-jmf) # no dependencies
+ $(use jsch && echo ant-jsch)
+ $(use junit && echo ant-junit) # REQUIRED_USE for junit4 and for testutil
+ $(use junit4 && echo ant-junit4)
+ $(use junitlauncher && echo ant-junitlauncher)
+ # depends on "com.ibm.netrexx:netrexx:2.0.5" which is
+ # available on https://www.netrexx.org/downloads.nsp and states:
+ # "IBM's last NetRexx release, suitable for JVM versions 1.5 and below [...]"
+ # $(use netrexx && echo ant-netrexx) # src/etc/poms/ant-netrexx/pom.xml
+ $(use swing && echo ant-swing) # no dependencies
+ $(use testutil && echo ant-testutil)
+ $(use xz && echo ant-xz)
+ )
+
+ # defaultManifest.mf
+ sed -e "s:\${project.version}:${PV}:" \
+ -i src/main/org/apache/tools/ant/defaultManifest.mf || die
+
+ # version.txt
+ local mydate="$(date '+%B %d %Y')"
+ echo "VERSION=${PV}" > src/main/org/apache/tools/ant/version.txt || die
+ echo "DATE=${mydate}" >> src/main/org/apache/tools/ant/version.txt || die
+
+ # src directory for ant.jar
+ mkdir ant || die "cannot create src directory for ant"
+ cp -r {src/main/,ant}/org || die "cannot copy ant sources"
+
+ # resources directory for ant.jar according to lines 317-325 src/etc/poms/ant/pom.xml
+ local INCLUDES=( $(
+ sed -n '/<resources>/,/<\/resources>/p' \
+ src/etc/poms/ant/pom.xml \
+ | grep org \
+ | sed -e 's:.*<include>\(.*\)</include>:\1:' || die
+ ))
+ cp -r {src/,ant}/resources || die "cannot copy ant resources"
+ pushd src/main > /dev/null || die "pushd src/main"
+ cp --parents -v "${INCLUDES[@]}" ../../ant/resources || die "CANNOT"
+ popd > /dev/null || die "popd"
+
+ # Remove sources according to lines 158-187 src/etc/poms/ant/pom.xml
+ # We don't remove anything from src/main/org
+ local EXCLUDES=$(
+ sed -n '/<excludes>/,/<\/excludes/p' \
+ src/etc/poms/ant/pom.xml \
+ | grep org \
+ | sed -e 's:<exclude>\(.*\)</exclude>:ant/\1:' || die
+ )
+ rm -r ${EXCLUDES} || die
+ # Remove one more file directly, could not get it with sed.
+ rm ant/org/apache/tools/ant/taskdefs/optional/ANTLR.java || die
+
+ # Same handling for everything between <testExcludes> </testExcludes>
+ # Removing non-existing files is not possible: We ignore them ( grep -v ).
+ local TEST_EXCLUDES=$(
+ sed -n '/<testExcludes>/,/<\/testExcludes/p' \
+ src/etc/poms/ant/pom.xml \
+ | grep org \
+ | grep -v CommonsLoggingListener \
+ | grep -v Log4jListener \
+ | sed -e 's:<exclude>\(.*\)</exclude>:src/tests/junit/\1:' || die
+ )
+ rm -r ${TEST_EXCLUDES} || die
+
+ # Prepare a separate JAVA_SRC_DIR directory for each jar file to be created.
+ einfo "Copy source files of ant-tasks"
+ local task
+ for task in ant-launcher "${ANT_TASKS[@]}"; do
+ # "${task}/src/main" will be JAVA_SRC_DIR
+ mkdir -p "${task}/src/main" || die "mkdir ${task}"
+ # Read from pom.xml the file names which can still contain wildcards
+ local INCLUDES=( $(
+ sed -n '/<includes>/,/<\/includes>/p' "src/etc/poms/${task}/pom.xml" \
+ | grep org \
+ | sed -e 's:.*<include>\(.*\)</include>:\1:' || die
+ ))
+ local sourcefile
+ # Resolve wildcards in file names using find and copy the files to the corresponding
+ # "${task}"/src/main directory
+ # echo "${INCLUDES[@]}"
+ for sourcefile in "${INCLUDES[@]}"; do
+ # einfo "${task}: ${sourcefile}"
+ # Parameter substitution % to remove trailing slash from ${sourcefile}.
+ # Applies to ant-jdepend and ant-junitlauncher where find would otherwise fail.
+ find \
+ -path "./src/*/${sourcefile%/}" \
+ -exec cp -r --parents "{}" \
+ "${task}/src/main" \;
+ done
+ # tree "${task}"
+ done
+
+ # JAVA_RESOURCE_DIRS for ant-junit
+ mkdir -p ant-junit/src/resources/org/apache/tools/ant/taskdefs/optional/junit/xsl \
+ || die "junit resource dir"
+ cp src/etc/{junit-frames,junit-noframes,junit-frames-saxon,junit-noframes-saxon}.xsl \
+ ant-junit/src/resources/org/apache/tools/ant/taskdefs/optional/junit/xsl \
+ || die "junit resources"
+}
+
+src_compile() {
+ einfo "Compiling ant-launcher.jar"
+ JAVA_JAR_FILENAME="ant-launcher.jar"
+ JAVA_MAIN_CLASS="org.apache.tools.ant.launch.Launcher"
+ JAVA_SRC_DIR="ant-launcher/src/main"
+ java-pkg-simple_src_compile
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":ant-launcher.jar"
+ rm -r target || die
+
+ einfo "Compiling ant.jar"
+ JAVA_JAR_FILENAME="ant.jar"
+ JAVA_LAUNCHER_FILENAME="ant"
+ JAVA_MAIN_CLASS="org.apache.tools.ant.Main"
+ JAVA_RESOURCE_DIRS="ant/resources"
+ JAVA_SRC_DIR="ant"
+ java-pkg-simple_src_compile
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":ant.jar"
+ rm -r target || die
+
+ local task
+ for task in "${ANT_TASKS[@]}"; do
+ einfo "Compiling ${task}"
+ JAVA_JAR_FILENAME="${task}.jar"
+ JAVA_MAIN_CLASS=""
+ JAVA_RESOURCE_DIRS=""
+ JAVA_SRC_DIR=""
+
+ JAVA_SRC_DIR="${task}/src/main"
+ taskdeps ant-apache-bcel bcel
+ taskdeps ant-apache-bsf bsf-2.3
+ taskdeps ant-apache-log4j log4j-12-api
+ taskdeps ant-apache-oro jakarta-oro-2.0
+ taskdeps ant-apache-regexp jakarta-regexp-1.4
+ taskdeps ant-apache-resolver xml-commons-resolver
+ taskdeps ant-apache-xalan2 xalan
+ taskdeps ant-commons-logging commons-logging
+ taskdeps ant-commons-net commons-net
+ taskdeps ant-jai sun-jai-bin
+ taskdeps ant-jakartamail jakarta-mail
+ taskdeps ant-javamail 'javax-mail jakarta-activation-api-1'
+ taskdeps ant-jdepend jdepend
+ taskdeps ant-jsch jsch
+ taskdeps ant-junit junit-4 ant-junit/src/resources
+ taskdeps ant-junit4 junit-4
+ taskdeps ant-junitlauncher junit-5
+ # $(use netrexx && echo ant-netrexx)
+ taskdeps ant-xz xz-java
+
+ java-pkg-simple_src_compile
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":${task}.jar"
+ rm -fr target || die
+ done
+ use doc && ejavadoc
+}
+
+src_test() {
+ # Avoid "--with-dependencies" as used by JAVA_TEST_GENTOO_CLASSPATH.
+ # dev-java/antunit has a circular dependency with dev-java/ant[test]
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":$(java-pkg_getjars --build-only antunit)"
+ # according to line 115 src/etc/poms/ant/pom.xml
+ jar -cvf src/etc/testcases/org/apache/tools/ant/taskdefs/test2-antlib.jar \
+ -C src/etc/testcases taskdefs/test.antlib.xml || die "cannot test2-antlib.jar"
+
+ JAVA_TEST_EXCLUDES=(
+ # according to lines 1956-1964 build.xml (abstract classes, not testcases)
+ org.apache.tools.ant.taskdefs.TaskdefsTest
+ org.apache.tools.ant.BuildFileTest
+ org.apache.tools.ant.util.regexp.RegexpMatcherTest
+ org.apache.tools.ant.util.regexp.RegexpTest
+ org.apache.tools.ant.types.selectors.BaseSelectorTest
+ # according to line 1970 build.xml (helper classes, not testcases)
+ org.apache.tools.ant.TestHelper
+ # lines 2097-2102 build.xml (interactive tests)
+ org.apache.tools.ant.taskdefs.TestProcess # 1. No runnable methods
+ # 1) testAll(org.apache.tools.ant.taskdefs.InitializeClassTest)
+ # /var/tmp/portage/dev-java/ant-1.10.14/work/apache-ant-1.10.14/
+ # src/etc/testcases/taskdefs/initializeclass.xml:24: Java returned: 1
+ # <pathelement path="${build.tests.value}"/>
+ # <pathelement location="${java.home}/lib/classes.zip"/>
+ org.apache.tools.ant.taskdefs.InitializeClassTest # Tests run: 1, Failures: 1
+ org.apache.tools.mail.MailMessageTest # all tests in this test-class fail
+ org.apache.tools.ant.taskdefs.condition.HttpTest # needs network access
+ org.apache.tools.ant.taskdefs.GetTest # needs network access
+ )
+
+# tests with patches to be revisited
+# JAVA_TEST_RUN_ONLY=(
+# org.apache.tools.ant.taskdefs.AntlibTest # Tests run: 6, Failures: 1 test2-antlib.jar?
+# org.apache.tools.ant.taskdefs.AntTest # Tests run: 32, Failures: 1
+# org.apache.tools.ant.taskdefs.JavaTest # Tests run: 38, Failures: 12
+# org.apache.tools.ant.taskdefs.modules.LinkTest # Tests run: 67, Failures: 4
+# org.apache.tools.ant.types.PathTest # Tests run: 33, Failures: 1
+# )
+
+ # according to lines 276-297 src/etc/poms/ant/pom.xml
+ JAVA_TEST_EXTRA_ARGS=(
+ -Dant.home="${ANT_HOME}"
+ -Dbuild.classes.value=../../../target/test-classes # needed for org.apache.tools.ant.taskdefs.SignJarTest
+ -Dbuild.tests.value=target/test-classes
+ -Doffline=true
+ -Dant.test.basedir.ignore=true
+ )
+ java-pkg-simple_src_test
+}
+
+src_install() {
+ java-pkg_dojar ant.jar ant-launcher.jar
+
+ for task in "${ANT_TASKS[@]}"; do
+ java-pkg_dojar "${task}.jar"
+ java-pkg_register-ant-task --version "${PV}" "${task}"
+ done
+
+ dobin src/script/ant
+
+ dodir /usr/share/ant/bin
+ for each in antRun antRun.pl runant.pl runant.py ; do
+ dobin "${S}/src/script/${each}"
+ done
+
+ insinto /usr/share/ant/etc
+ doins -r src/etc/*.xsl
+ insinto /usr/share/ant/etc/checkstyle
+ doins -r src/etc/checkstyle/*.xsl
+
+ echo "ANT_HOME=\"${EPREFIX}/usr/share/ant\"" > "${T}/20ant"
+ doenvd "${T}/20ant"
+
+ einstalldocs
+ if use doc; then
+ java-pkg_dojavadoc target/api
+ docinto html
+ dodoc -r manual
+ fi
+
+ use source && java-pkg_dosrc src/main/*
+}
diff --git a/dev-java/bsh-bsf-engine/Manifest b/dev-java/bsh-bsf-engine/Manifest
new file mode 100644
index 000000000000..f3e4e2170f32
--- /dev/null
+++ b/dev-java/bsh-bsf-engine/Manifest
@@ -0,0 +1 @@
+DIST bsh-3.0.0_rc1.tar.gz 798599 BLAKE2B 7c397697419a5032a18ec93ca192289dae413930cb9f708b38fb223de2e7ce1309e800b17b3c8fdaab88b41a098d3945d454fb12010cd7385f9c95f7d0de6fb4 SHA512 905b093cdeb2226202cc9bfcb8ad87129f415531d6532db4f5d9e111dc3b22474ce8704a2129e0d41448f8f147a45a409b457d78bc3e480e1555e74c75b7135d
diff --git a/dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild b/dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild
new file mode 100644
index 000000000000..bbd9d88275fd
--- /dev/null
+++ b/dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple
+
+DESCRIPTION="Beanshell BSF engine"
+HOMEPAGE="https://github.com/beanshell/beanshell"
+SRC_URI="https://github.com/beanshell/beanshell/archive/${PV/_rc/RC}.tar.gz -> bsh-${PV}.tar.gz"
+S="${WORKDIR}/beanshell-${PV/_rc/RC}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64"
+
+CP_DEPEND="
+ ~dev-java/bsh-${PV}:0
+ dev-java/bsf:2.3
+"
+
+DEPEND="
+ ${CP_DEPEND}
+ >=virtual/jdk-1.8:*
+"
+
+RDEPEND="
+ ${CP_DEPEND}
+ >=virtual/jre-1.8:*
+"
+
+DOCS=( {CHANGES,HISTORY,MIGRATION,README}.md NOTICE )
+
+# JAVA_LAUNCHER_FILENAME="bsh-console"
+# JAVA_MAIN_CLASS="bsh.Console"
+# JAVA_RESOURCE_DIRS="src/main/resources"
+JAVA_SRC_DIR="bsh-bsf-engine/src/main/java"
+JAVA_TEST_GENTOO_CLASSPATH="junit-4"
+JAVA_TEST_SRC_DIR="bsh-bsf-engine/src/test/java"
diff --git a/dev-java/bsh-bsf-engine/metadata.xml b/dev-java/bsh-bsf-engine/metadata.xml
new file mode 100644
index 000000000000..5e0507412430
--- /dev/null
+++ b/dev-java/bsh-bsf-engine/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>java@gentoo.org</email>
+ <name>Java</name>
+ </maintainer>
+ <upstream>
+ <doc>https://beanshell.org/manual/bsf.html</doc>
+ </upstream>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-java/bsh/Manifest b/dev-java/bsh/Manifest
index f4efff50c5dc..6c830a929dc9 100644
--- a/dev-java/bsh/Manifest
+++ b/dev-java/bsh/Manifest
@@ -1 +1,2 @@
DIST bsh-2.1.1.tar.gz 1922883 BLAKE2B d60ebfab96f81a17120733887468571dd991dce663d725d9bee2dc44146e320d36600be70a3b7f76516645030d40fcda17db70989d54e98ffdc69c91738bcaf1 SHA512 585fcb9fdc8c36063a7d4dfe9a909e68b61d611f023731c955b7ced3f894cb6c48b0d463735e6825cb6f0181ba97902279212d285e325267aa533490e0bbfe00
+DIST bsh-3.0.0_rc1.tar.gz 798599 BLAKE2B 7c397697419a5032a18ec93ca192289dae413930cb9f708b38fb223de2e7ce1309e800b17b3c8fdaab88b41a098d3945d454fb12010cd7385f9c95f7d0de6fb4 SHA512 905b093cdeb2226202cc9bfcb8ad87129f415531d6532db4f5d9e111dc3b22474ce8704a2129e0d41448f8f147a45a409b457d78bc3e480e1555e74c75b7135d
diff --git a/dev-java/bsh/bsh-3.0.0_rc1.ebuild b/dev-java/bsh/bsh-3.0.0_rc1.ebuild
new file mode 100644
index 000000000000..e1a20049d9c7
--- /dev/null
+++ b/dev-java/bsh/bsh-3.0.0_rc1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple
+
+JAVACC_SLOT="8"
+
+DESCRIPTION="A small embeddable Java source interpreter"
+HOMEPAGE="https://github.com/beanshell/beanshell"
+SRC_URI="https://github.com/beanshell/beanshell/archive/${PV/_rc/RC}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/beanshell-${PV/_rc/RC}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+DEPEND="
+ dev-java/javacc:${JAVACC_SLOT}
+ dev-java/javacc-java:${JAVACC_SLOT}
+ >=virtual/jdk-1.8:*
+ test? (
+ dev-java/hamcrest-core:1.3
+ dev-java/hamcrest-library:1.3
+ >=dev-java/jmh-core-1.37:0
+ )
+"
+
+RDEPEND=">=virtual/jre-1.8:*"
+
+DOCS=( {CHANGES,HISTORY,MIGRATION,README}.md NOTICE )
+
+# src/main/java/bsh/Interpreter.java:1100: error: invalid use of a restricted identifier 'yield'
+JAVADOC_ARGS="-source 8"
+# JAVA_GENTOO_CLASSPATH="asm"
+JAVA_LAUNCHER_FILENAME="bsh-console"
+JAVA_MAIN_CLASS="bsh.Console"
+JAVA_RESOURCE_DIRS="src/main/resources"
+
+# Attempts to unbundle asm would cause some test failures.
+# JAVA_SRC_DIR=( src/main/java -type f ! -path '*/objectweb/*' ) # unbundle asm
+JAVA_SRC_DIR="src/main/java"
+JAVA_TEST_EXCLUDES=(
+ mypackage.ReflectTest # Invalid
+ bsh.TestFilter # Invalid
+ bsh.TestUtil # Invalid
+ # All 3 tests of of following test-class fail
+ bsh.SharedInterpreterEvalConcurrencyTest
+)
+JAVA_TEST_GENTOO_CLASSPATH="hamcrest-core-1.3 hamcrest-library-1.3 jmh-core junit-4"
+JAVA_TEST_RESOURCE_DIRS="src/test/resources"
+JAVA_TEST_SRC_DIR="src/test/java"
+
+src_prepare() {
+ java-pkg-2_src_prepare
+ cat <<- VERSION > src/main/resources/bsh/version.properties || die "version.properties"
+ build=1234
+ release=${PV/_rc/RC}
+ VERSION
+
+# sed \
+# -i -e 's:bsh.org.objectweb.asm:org.objectweb.asm:' \
+# src/main/java/bsh/BshLambda.java \
+# src/main/java/bsh/ClassGeneratorUtil.java \
+# src/test/java/bsh/BshLambdaClassLoadingTest.java \
+# src/test/java/bsh/ClassLifecycleConcurrencyTest.java \
+# src/test/java/bsh/ReflectTest.java
+
+ local CP="$(java-pkg_getjars --build-only javacc-${JAVACC_SLOT},javacc-java-${JAVACC_SLOT})"
+ "$(java-config -J)" -cp "${CP}" org.javacc.jjtree.Main \
+ -JJTREE_OUTPUT_DIRECTORY="jjtree-out" \
+ "src/main/jjtree/bsh.jjt" || die "jjtree"
+
+ "$(java-config -J)" -cp "${CP}" org.javacc.parser.Main \
+ -OUTPUT_DIRECTORY="javacc-out" \
+ jjtree-out/bsh.jj || die "javacc"
+
+ cp --update=none -v jjtree-out/*.java src/main/java/bsh || die
+ cp --update=none -v javacc-out/*.java src/main/java/bsh || die
+
+ # This test ramdomly fails or passes.
+ # Settings accoding to pom.xml, line 292, don't help.
+ # JAVA_TEST_EXTRA_ARGS="-Xmx1000M -Xms500M" # pom.xml, line 292
+ rm -v src/test/resources/test-scripts/trycatch_ome.bsh || die
+}
+
+src_install() {
+# use source && JAVA_SRC_DIR=( src/main/java )
+ java-pkg-simple_src_install
+ # The eclass installs only the main launcher.
+ java-pkg_dolauncher "${PN}-interpreter" --main bsh.Interpreter
+}
diff --git a/dev-lang/moarvm/Manifest b/dev-lang/moarvm/Manifest
index b788ccecadf9..71c2c830aaba 100644
--- a/dev-lang/moarvm/Manifest
+++ b/dev-lang/moarvm/Manifest
@@ -1,2 +1,3 @@
DIST MoarVM-2026.02.tar.gz 15405708 BLAKE2B 9a465c92dadc3fb82e6c758e66b5ca2b58ab4f5e3ad2e3973ba87d512530aedd7abac30b0be9569033a5f75c79dd2e36782bc9be70ab8fd3d39a84d2046a4982 SHA512 d41720fe1c86a09902af3d0259f976a43f1bde6173be84631e891d500299b54b3a6da106ebd0af8d7a2dab5dcf996e15d484d5bc22decf91d98ee84b8c1e98dd
DIST MoarVM-2026.08.tar.gz 8651008 BLAKE2B 705df547d7207799d28e797f0581545b8696135aac0b50dce4af1010672fffc7b736a27c54cb6fd776db6163d9440bac7f0a93086db31414b6840f32d2bb2591 SHA512 b7f07291949e42441565878df18ae0f4a500b80b89be1ed9677c5df8ee31ae687e6327f0a89aa0de1b80acbe70af95f7257edef614884a77bef922ef66a89371
+DIST MoarVM-2026.09.tar.gz 8669275 BLAKE2B 7c118a331131a0bfc83b93d72d13b177f6d09690364925f9b48a81f0d7a80b70a4030fd3b0c324bf167dea306ceddba61acdd8f8eedbd7c603c435091fb169bb SHA512 83909c7adeabfeea22ed01a2f5e56fd4c56f7176b89bc80e5ff4dd5a8560a2a7a203847dfa84c551945ba95ef9101b1c1442f1d87466b2f3d5e40f546922691f
diff --git a/dev-lang/moarvm/moarvm-2026.09.ebuild b/dev-lang/moarvm/moarvm-2026.09.ebuild
new file mode 100644
index 000000000000..542be0151e32
--- /dev/null
+++ b/dev-lang/moarvm/moarvm-2026.09.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MY_PN="MoarVM"
+if [[ ${PV} == "9999" ]]; then
+ EGIT_REPO_URI="https://github.com/${MY_PN}/${MY_PN}.git"
+ inherit git-r3
+ S="${WORKDIR}/${P}"
+else
+ SRC_URI="http://moarvm.org/releases/${MY_PN}-${PV}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+ S="${WORKDIR}/${MY_PN}-${PV}"
+fi
+
+DESCRIPTION="A 6model-based VM for NQP and Raku"
+HOMEPAGE="http://moarvm.org"
+LICENSE="Artistic-2"
+SLOT="0"
+
+IUSE="asan clang debug doc +jit optimize static-libs ubsan"
+
+RDEPEND="dev-libs/libatomic_ops
+ >=dev-libs/libuv-1.26:=
+ dev-libs/libffi:=
+ dev-libs/mimalloc"
+DEPEND="${RDEPEND}
+ clang? ( llvm-core/clang )
+ dev-lang/perl"
+
+DOCS=( CREDITS README.md )
+
+# Tests are conducted via nqp
+RESTRICT=test
+
+src_configure() {
+ MAKEOPTS+=" NOISY=1"
+ use doc && DOCS+=( docs/* )
+ local prefix="${EPREFIX}/usr"
+ local libdir="${EPREFIX}/usr/$(get_libdir)"
+ einfo "--prefix '${prefix}'"
+ einfo "--libdir '${libdir}'"
+ local myconfigargs=(
+ "--prefix" "${prefix}"
+ "--has-libuv"
+ "--has-libatomic_ops"
+ "--has-libffi"
+ "--has-mimalloc"
+ "--libdir" "${libdir}"
+ "--compiler" "$(usex clang clang gcc)"
+ "$(usex asan --asan)"
+ "$(usex debug --debug --no-debug)"
+ "$(usex optimize --optimize= --no-optimize)"
+ "$(usex static-libs --static)"
+ "$(usex ubsan --ubsan)"
+ )
+
+ perl Configure.pl "${myconfigargs[@]}" moarshared || die
+}
diff --git a/dev-lang/nqp/Manifest b/dev-lang/nqp/Manifest
index 012baaf9b55a..769677fa1812 100644
--- a/dev-lang/nqp/Manifest
+++ b/dev-lang/nqp/Manifest
@@ -1,2 +1,3 @@
DIST nqp-2026.02.tar.gz 9727779 BLAKE2B 2f37b258ba75e3cce446417c2409e8bc13d556c6e45233bd17cb8a57294c3d84d452be377a83d3b0ef71c65c653188dd4fb32130eab2ce0c6aa77d0ec91a81cc SHA512 4cc299bfbb2e9e834986e6868481cfd017329431ae1de6b091b31b0914774c3611cb49946fcdcaa2b95197883c3b8fdc63040d99c23fb028eacf061fa3c847c6
DIST nqp-2026.08.tar.gz 9728340 BLAKE2B 8422a4950373f2594246c877bd952c6a35e450110af7942a052f1d96953adfc226e199bf05a3521608699297fe05e694c986b650744bf8543ca2b81990d1c2ed SHA512 247c7e722420ed0ce69a30464678fc91853083b1f091f8f995299bef5cae776e48b56eaa3f223d36748cae7d281847b80d06ba29ce9787568e9bc1627bbeb111
+DIST nqp-2026.09.tar.gz 9740081 BLAKE2B 7905e31d1ea833e94dfa392450f96af1edbcb44aa1c89c6660ada00e178397e6c520659ff45fb276e3c55fee0c141c7bcbb4bbc792371fabd12f4ec04be21673 SHA512 5eabc3f4ba9bd62988ace5c4c3b1eb57538d61f8f7e37296b3602a227730bc1eaa325025daa96410b34a411c599a1421e52e46ac81eef9ac51baad67cf85e72c
diff --git a/dev-lang/nqp/nqp-2026.09.ebuild b/dev-lang/nqp/nqp-2026.09.ebuild
new file mode 100644
index 000000000000..316f045a99e8
--- /dev/null
+++ b/dev-lang/nqp/nqp-2026.09.ebuild
@@ -0,0 +1,147 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-pkg-opt-2 multibuild
+
+if [[ ${PV} == "9999" ]]; then
+ EGIT_REPO_URI="https://github.com/Raku/${PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/Raku/${PN}/releases/download/${PV}/${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+DESCRIPTION="Not Quite Perl, a Raku bootstrapping compiler"
+HOMEPAGE="https://rakudo.org"
+
+LICENSE="Artistic-2"
+SLOT="0"
+IUSE="doc clang java +moar test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="|| ( java moar )"
+
+CDEPEND="java? (
+ >=dev-java/asm-9.8:0
+ >=dev-java/jna-5.17.0:0
+ )
+ moar? ( ~dev-lang/moarvm-${PV}[clang=] )"
+RDEPEND="${CDEPEND}
+ java? ( >=virtual/jre-11 )"
+DEPEND="${CDEPEND}"
+BDEPEND="${CDEPEND}
+ clang? ( llvm-core/clang )
+ java? ( >=virtual/jdk-11 )
+ dev-lang/perl"
+
+pkg_pretend() {
+ if has_version dev-lang/rakudo || has_version dev-lang/nqp; then
+ ewarn "NQP is known to fail compilation/installation with Rakudo and/or NQP"
+ ewarn "already being installed. So if it fails, try uninstalling both"
+ ewarn "dev-lang/nqp and dev-lang/rakudo, then do a new installation."
+ ewarn "(see Bug #584394)"
+ fi
+}
+
+src_prepare() {
+ MULTIBUILD_VARIANTS=()
+ use moar && MULTIBUILD_VARIANTS+=( moar )
+ use java && MULTIBUILD_VARIANTS+=( jvm )
+
+ multibuild_copy_sources
+
+ # This will pull in conditional java_prepare
+ default
+}
+
+nqp_configure() {
+ pushd "${BUILD_DIR}" > /dev/null || die
+ local myconfargs=(
+ "--backend=${MULTIBUILD_VARIANT}"
+ "--prefix=${EPREFIX}/usr" )
+
+ perl Configure.pl "${myconfargs[@]}" || die
+ popd || die
+}
+
+nqp_compile() {
+ if [[ "${MULTIBUILD_VARIANT}" = jvm ]]; then
+ emake -j1 \
+ -C "${BUILD_DIR}" \
+ JAVAC="$(java-pkg_get-javac)"
+ elif [[ "${MULTIBUILD_VARIANT}" = moar ]]; then
+ emake -j1 \
+ -C "${BUILD_DIR}"
+ fi
+}
+
+nqp_test() {
+ emake -j1 \
+ -C "${BUILD_DIR}" \
+ test
+}
+
+nqp_install() {
+ # This is the actual reason we need multibuild.eclass.
+ # We need to distinguish the install procedure for MoarVM and JVM backends.
+ case "${MULTIBUILD_VARIANT}" in
+ moar)
+ emake \
+ DESTDIR="${ED}" \
+ -C "${BUILD_DIR}" \
+ install
+ ;;
+ jvm)
+ pushd "${BUILD_DIR}" > /dev/null || die
+ # Set JAVA_PKG_JARDEST early.
+ java-pkg_init_paths_
+
+ # Upstream sets the classpath to this location. Perhaps it's
+ # used to locate the additional libraries?
+ java-pkg_addcp "${JAVA_PKG_JARDEST}"
+
+ insinto "${JAVA_PKG_JARDEST}"
+ local jar
+
+ for jar in *.jar; do
+ if has ${jar} ${PN}.jar ${PN}-runtime.jar; then
+ # jars for NQP itself.
+ java-pkg_dojar ${jar}
+ else
+ # jars used by NQP.
+ doins ${jar}
+ fi
+ done
+
+ # Upstream uses -Xbootclasspath/a, which is faster due to lack
+ # of verification, but gjl isn't flexible enough yet. :(
+ java-pkg_dolauncher ${PN}-j --main ${PN}
+ dosym ${PN}-j /usr/bin/${PN}
+ dobin tools/jvm/eval-client.pl
+ popd > /dev/null || die
+ ;;
+ *)
+ die "Unknown MULTIBUILD_VARIANT ${MULTIBUILD_VARIANT}."
+ ;;
+ esac
+}
+
+src_configure() {
+ multibuild_foreach_variant nqp_configure
+}
+
+src_compile() {
+ multibuild_foreach_variant nqp_compile
+}
+
+src_test() {
+ multibuild_foreach_variant nqp_test
+}
+
+src_install() {
+ multibuild_foreach_variant nqp_install
+
+ dodoc CREDITS README.pod
+ use doc && dodoc -r docs/*
+}
diff --git a/dev-lang/rakudo/Manifest b/dev-lang/rakudo/Manifest
index 8e1b7dcf2d65..bc47f7570189 100644
--- a/dev-lang/rakudo/Manifest
+++ b/dev-lang/rakudo/Manifest
@@ -1,2 +1,3 @@
DIST rakudo-2026.02.tar.gz 8252410 BLAKE2B bec3773bba3b8787bbd12b7278b7e834a7f3294027c6de6a58f946a0cd6db1949894b4b6922679863b1fac0494cf6b2075f8c400c6cae30a48893ad65e30e14b SHA512 da172c95cc5dfd3e993146a9bc9c8328965ef8d40a9e22ac34598090f899574d75d6cd7f11255cce5ba762f4148f2e2ce32bec39e410ac1e81a9e3cef5c2ed2f
DIST rakudo-2026.08.tar.gz 8642637 BLAKE2B 3965827af8df08e7b47ff81bb7c53b239b9190ad7e0caa1b646b84be616401fe533f07d5ed5a5364a638a79e9fa3bfe9f3e5cbc9f1332ecd0e3776ecc4ac8b07 SHA512 ceb50dd049bba93bfb68408fecd2f78af688c187e62599ccab7f5f82ed5a6244f46c2c7f996840ae67cfbe2de6efcc7d06b5aff140d8333f782a5831a1d57caa
+DIST rakudo-2026.09.tar.gz 8938212 BLAKE2B 797b2fc5f4f57092b324578b41003be7a7139c2d0917a564d12751489d273743853bd31d45c3f0402563881afc3f92fc4a823ccfc5c7ec78d5e31ab0d4d8d944 SHA512 56b55afd6f3daac8614ef0825d53bf3a117c3001f3f5237c6a2b6a1f5aea7cb6298d8f82f21a0cb469a46033d43117c7c41736eff85006580d6c645fa3b5f0f1
diff --git a/dev-lang/rakudo/rakudo-2026.09.ebuild b/dev-lang/rakudo/rakudo-2026.09.ebuild
new file mode 100644
index 000000000000..5e7a60802819
--- /dev/null
+++ b/dev-lang/rakudo/rakudo-2026.09.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-pkg-opt-2
+
+DESCRIPTION="A compiler for the Raku programming language"
+HOMEPAGE="https://rakudo.org"
+
+if [[ ${PV} == "9999" ]]; then
+ EGIT_REPO_URI="https://github.com/rakudo/${PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://rakudo.org/dl/${PN}/${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="Artistic-2"
+SLOT="0"
+# TODO: add USE="javascript" once that's usable in nqp
+IUSE="clang java +moar test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="|| ( java moar )"
+
+CDEPEND="~dev-lang/nqp-${PV}:${SLOT}=[java?,moar?,clang=]"
+RDEPEND="${CDEPEND}
+ java? ( >=virtual/jre-1.9 )"
+DEPEND="${CDEPEND}
+ clang? ( llvm-core/clang )
+ java? ( >=virtual/jdk-1.9 )
+ >=dev-lang/perl-5.10"
+
+pkg_pretend() {
+ if has_version dev-lang/rakudo; then
+ ewarn "Rakudo is known to fail compilation/installation with Rakudo"
+ ewarn "already being installed. So if it fails, try unmerging dev-lang/rakudo,"
+ ewarn "then do a new installation."
+ ewarn "(see Bug #584394)"
+ fi
+}
+
+src_configure() {
+ local backends
+ use moar && backends+="moar,"
+ use java && backends+="jvm"
+
+ local myargs=(
+ "--prefix=/usr"
+ "--sysroot=/"
+ "--sdkroot=/"
+ "--backends=${backends}"
+ )
+
+ perl Configure.pl "${myargs[@]}" || die
+
+ if use java; then
+ NQP=$(java-pkg_getjars --with-dependencies nqp)
+ fi
+}
+
+src_compile() {
+ emake NQP_JARS="${NQP}" BLD_NQP_JARS="${NQP}"
+}
+
+src_install() {
+ emake DESTDIR="${D}" NQP_JARS="${NQP}" BLD_NQP_JARS="${NQP}" install
+}
+
+src_test() {
+ RAKUDO_PRECOMP_PREFIX=$(mktemp -d) default
+}
diff --git a/dev-libs/simdjson/Manifest b/dev-libs/simdjson/Manifest
index 510f82c4b54c..821afa246d0d 100644
--- a/dev-libs/simdjson/Manifest
+++ b/dev-libs/simdjson/Manifest
@@ -7,5 +7,6 @@ DIST simdjson-4.6.7.gh.tar.gz 6690017 BLAKE2B 1fda88f8794ca56f70f97111f6c707c58c
DIST simdjson-4.6.9.gh.tar.gz 6693715 BLAKE2B fc5f435e57f7afab0ff5993a50a4da6c88db34a442481922705e8db5144d74767ca70614a264d009b455cbfd3624455c42f572272ef0c2caa4bf27dd3430fc6e SHA512 b5c70b29fff7728ec5883ebff39829b9fe1c6dac4e2775b01be0bfcc99f7dab596f97f8e3b58852b2556b81639ad5e08b43b036407814defd6487edfbc7f3abe
DIST simdjson-5.0.3.gh.tar.gz 8787132 BLAKE2B a3f18dc59af62ae61b18d2224a391738d7cb7815edc5dc2e52b5fd1f64b1f8e81e0eac16ea1bb0f2fb75e662a5e2abf7285bbfa48c0c7937d83fc488e951a55b SHA512 9935d9bfa2a178e9bf46da03f39b6d06f1e76c0ad2e094fc755bc2c8542cb58c218c53e55333305208a4cf681cd4520099cac94beff0d229baf9010f834597d0
DIST simdjson-5.0.4.gh.tar.gz 8814780 BLAKE2B 83f69fe402ba00fd1cc1948e49d49f15a4fff90af0b3103ed23e29b57326a6e3f2dcc0e8af9d3b18fa4d8f4a2ee199e2fdb4cd946ced79dc7f1207ba9cba1e5b SHA512 e4431b21240a532e0a91330578e03e048ab8742c0426895c533a694d641430dbe9936cb8b3844186fa5ba47b67c5468546f25ebe087da8762964584a537f17c5
+DIST simdjson-5.0.5.gh.tar.gz 8818667 BLAKE2B 5778396cae4894863a38f19f59478a4b1cdd14643dbb76abc705f039dddb736e73abbd2d95f287176fe1481698531eb564593f600b1ba6df48498f75cae6fe5f SHA512 d6ab1369ec53411973f95c756945fe54533c321c2341ff7b7a089ac93a32e8d841b1189b1a5f11512a1f063601507d0429cfe59b552470f2fd9cc911059f3cac
DIST simdjson-counters-3.1.0.tar.gz 17752 BLAKE2B 37288ede5edd55f822fa1b49823d606a1ea7e49bf1f2afec02b1872439524bca8be450e62b8efdfdbca222d6c55f4cf326d9e71063a78e04843c38e8cc6ae8b2 SHA512 943c3eb98d35e4af095f5cb9c5f20613e7a061f6552f65137f8d9c1c9ee2df8acec4112410aa18c6b7428ab9315b7f3d21adc5cb6ab1522b8be6c5dde23e52a7
DIST simdjson-data-351949906abde446f0314bf79606fb5d884f5be7.tar.gz 6635608 BLAKE2B 07f96c6b1bfea55a247eb7361bd4c068cb49e06f2cb1f3853c107173025c4cd543b20a5b7a3dcfa1e4462aaca8278a1cff9656f54319da08e221bc38f98e5a9e SHA512 7db557d374b9ce98077b7a9e1265ae66f9a607f0f283f662a9f184147f081727df68c0eb4889ebc8aca609ec62b348753445e553087e6520879a23e268caafba
diff --git a/dev-libs/simdjson/simdjson-5.0.5.ebuild b/dev-libs/simdjson/simdjson-5.0.5.ebuild
new file mode 100644
index 000000000000..a498600da3f5
--- /dev/null
+++ b/dev-libs/simdjson/simdjson-5.0.5.ebuild
@@ -0,0 +1,112 @@
+# Copyright 2020-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs cmake
+
+SIMDJSON_DATA_HASH="351949906abde446f0314bf79606fb5d884f5be7"
+CPM_SIMDJSON_DATA_HASH="3a55454e9d9a7133903378c28fb053f478f24537"
+CPM_VERSION="0.40.2"
+COUNTERS_HASH="2c9f1c5695230724ac9b2b7a88f43ec81761f3a0"
+COUNTERS_VER="3.1.0"
+DESCRIPTION="SIMD accelerated C++ JSON library"
+HOMEPAGE="
+ https://simdjson.org/
+ https://github.com/simdjson/simdjson
+"
+SRC_URI="
+ https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz
+ https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_VERSION}/CPM.cmake -> CPM_${CPM_VERSION}.cmake
+ https://github.com/${PN}/${PN}-data/archive/${SIMDJSON_DATA_HASH}.tar.gz -> ${PN}-data-${SIMDJSON_DATA_HASH}.tar.gz
+ https://github.com/lemire/counters/archive/refs/tags/v${COUNTERS_VER}.tar.gz -> ${PN}-counters-${COUNTERS_VER}.tar.gz
+"
+
+LICENSE="Apache-2.0 Boost-1.0 BSD MIT"
+SLOT="0/34"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="+all-impls nan test tools"
+
+BDEPEND="
+ sys-apps/file
+ sys-apps/grep
+ virtual/pkgconfig
+"
+DEPEND="
+ tools? ( >=dev-libs/cxxopts-3.2:= )
+"
+
+REQUIRED_USE="test? ( tools )"
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+ "${FILESDIR}/simdjson-1.0.0-install-tools.patch"
+ "${FILESDIR}/simdjson-3.10.1-tests.patch"
+)
+
+DOCS=(
+ AUTHORS
+ CONTRIBUTING.md
+ CONTRIBUTORS
+ HACKING.md
+ README.md
+)
+
+src_prepare() {
+ # Need to make sure that CPM finds the data package
+ mkdir "${WORKDIR}/cpm" "${WORKDIR}/${PN}-data" "${WORKDIR}/counters" || die
+ cp "${DISTDIR}/CPM_${CPM_VERSION}.cmake" "${WORKDIR}/cpm/CPM_${CPM_VERSION}.cmake" || die
+ ln -s "../${PN}-data-${SIMDJSON_DATA_HASH}" "${WORKDIR}/${PN}-data/${CPM_SIMDJSON_DATA_HASH}" || die
+ ln -s "../counters-${COUNTERS_VER}" "${WORKDIR}/counters/${COUNTERS_HASH}" || die
+
+ sed -e 's:-Werror ::' -i cmake/developer-options.cmake || die
+ sed -e '/Werror/ d ; /Werror/ d ' -i tests/ondemand/compilation_failure_tests/CMakeLists.txt || die
+ sed -e "s:^c++ :$(tc-getCXX) :" -i singleheader/README.md || die
+ mv tools/{,simd}jsonpointer.cpp || die
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSIMDJSON_INSTALL:BOOL=ON
+ -DSIMDJSON_ENABLE_THREADS:BOOL=ON
+ $(usex test '-DSIMDJSON_ENABLE_FUZZING:BOOL=OFF' '')
+ -DSIMDJSON_ENABLE_NAN_INF:BOOL=$(usex nan 'ON' 'OFF')
+ -DCPM_SOURCE_CACHE:STRING="${WORKDIR}"
+ -Wno-dev
+ )
+ use test && mycmakeargs+=(
+ -DSIMDJSON_TESTS:BOOL=ON
+ )
+
+ if use tools; then
+ mycmakeargs+=(
+ -DSIMDJSON_DEVELOPER_MODE:BOOL=ON
+ -DSIMDJSON_ALLOW_DOWNLOADS:BOOL=OFF
+ -DSIMDJSON_GOOGLE_BENCHMARKS:BOOL=OFF
+ -DSIMDJSON_COMPETITION:BOOL=OFF
+ -DSIMDJSON_TOOLS:BOOL=ON
+ )
+ elif ! use test; then
+ mycmakeargs+=(
+ -DSIMDJSON_DEVELOPER_MODE:BOOL=OFF
+ )
+ fi
+
+ if use all-impls; then
+ local -a impls=("fallback")
+ if use amd64; then
+ impls+=("westmere" "haswell" "icelake")
+ elif use arm64; then
+ impls+=("arm64")
+ elif use ppc64; then
+ impls+=("ppc64")
+ fi
+
+ mycmakeargs+=(
+ -DSIMDJSON_IMPLEMENTATION:STRING=$(printf '%s;' "${impls[@]}")
+ )
+ fi
+
+ cmake_src_configure
+}
diff --git a/dev-libs/zmij/Manifest b/dev-libs/zmij/Manifest
new file mode 100644
index 000000000000..3efc73568351
--- /dev/null
+++ b/dev-libs/zmij/Manifest
@@ -0,0 +1 @@
+DIST zmij-1.2.tar.gz 1298780 BLAKE2B 3d551c1f13c9ada8fde79773b9fb1e29b548a30ced40c04bff5f1333944d798b45e71048fe14d6bc884d3a2d7414a9bb4cb6274eaddba6fd1082cf441b4fc91b SHA512 f7c73c6cadb5588e717feac96ea6c4b0eb0bd1317b16008e3fe761af265808832ea03b2bc97b188200a5e14726d229fc589afaafee87f59fc290a6266a2b2a92
diff --git a/dev-libs/zmij/files/zmij-1.2-soname.patch b/dev-libs/zmij/files/zmij-1.2-soname.patch
new file mode 100644
index 000000000000..60bbb5b174a7
--- /dev/null
+++ b/dev-libs/zmij/files/zmij-1.2-soname.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 19b0f65..e1568ee 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -11,6 +11,7 @@ option(ZMIJ_EXAMPLE "Generate the example targets" ON)
+
+ add_library(zmij zmij.cc zmij-int.cc zmij.h)
+ add_library(zmij::zmij ALIAS zmij)
++set_target_properties(zmij PROPERTIES SOVERSION 1)
+ target_include_directories(
+ zmij PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
diff --git a/dev-libs/zmij/metadata.xml b/dev-libs/zmij/metadata.xml
new file mode 100644
index 000000000000..7f01e79bc8e5
--- /dev/null
+++ b/dev-libs/zmij/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>chutzpah@gentoo.org</email>
+ <name>Patrick McLean</name>
+ </maintainer>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-libs/zmij/zmij-1.2.ebuild b/dev-libs/zmij/zmij-1.2.ebuild
new file mode 100644
index 000000000000..c767ef7d6e64
--- /dev/null
+++ b/dev-libs/zmij/zmij-1.2.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="A fast floating-point-to-string conversion library for C and C++"
+HOMEPAGE="https://github.com/vitaut/zmij"
+SRC_URI="https://github.com/vitaut/zmij/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/1"
+KEYWORDS="~amd64"
+
+PATCHES=(
+ "${FILESDIR}/zmij-1.2-soname.patch"
+)
diff --git a/dev-python/authlib/Manifest b/dev-python/authlib/Manifest
index 6338faa49ee0..3aeb1b892a9b 100644
--- a/dev-python/authlib/Manifest
+++ b/dev-python/authlib/Manifest
@@ -1,2 +1,2 @@
-DIST authlib-1.7.2.gh.tar.gz 356607 BLAKE2B 60d232c26a672bdbd2cb57073ed05bcde2d5ed1caa143cb1d64760758c0a93adf0cde3db579c787d219fd741c50eb182d932c91e3a23251837784e963dc2b37c SHA512 814d5160baec83de80ba4a9bed86a611ae4b2605c3674dc6fe24844bd5da1bb9dc2d73e8c42bb44e378991f2479ed478477e42535cf2888c29506ee25e629aa7
DIST authlib-1.8.0.gh.tar.gz 361890 BLAKE2B 3aaaea7334859b19f1bc4c0acfd0e17d40f79f9ee183a9d4a6bfec68d761e6b740cac4fe092a5b0b4c4a60f30873ed58dd55088f708139c4564a74877458969e SHA512 c75e5e97461c23b26511fefa442e24b1d0467d45d7521e702d9d399680235cb4dd15645085a702bd158e1523f41b07308995e9586f2d5bc46ec6396bf8babbe0
+DIST authlib-1.9.1.gh.tar.gz 388395 BLAKE2B 20579375edb0965c5ff6755eefcc43c69c35352f43db71be86087ef1c8a6b462dd477add868d55d332c7f3367f6ad330f916e1b495d87180ab89ec227657d006 SHA512 3f106f800a668c0f2f11fab6cbe56185975c5ad9a9509637055ca6d5528006c88c17dc6980bfc78cdda8e719c7823aee86c64dd3e939829f93ef250e0939809f
diff --git a/dev-python/authlib/authlib-1.7.2.ebuild b/dev-python/authlib/authlib-1.9.1.ebuild
index ef399ad123b4..a5be86c9252e 100644
--- a/dev-python/authlib/authlib-1.7.2.ebuild
+++ b/dev-python/authlib/authlib-1.9.1.ebuild
@@ -23,16 +23,14 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64"
-IUSE="django jose test"
+IUSE="django test"
RESTRICT="!test? ( test )"
RDEPEND="
- dev-python/cryptography[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-45.0.1[${PYTHON_USEDEP}]
+ >=dev-python/joserfc-1.6.8[${PYTHON_USEDEP}]
django? (
- dev-python/django[${PYTHON_USEDEP}]
- )
- jose? (
- dev-python/joserfc[${PYTHON_USEDEP}]
+ >=dev-python/django-3.2.9[${PYTHON_USEDEP}]
)
"
BDEPEND="
@@ -42,6 +40,7 @@ BDEPEND="
dev-python/django[${PYTHON_USEDEP}]
dev-python/flask[${PYTHON_USEDEP}]
dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/httpx2[${PYTHON_USEDEP}]
dev-python/joserfc[${PYTHON_USEDEP}]
>=dev-python/pycryptodome-3.10[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
@@ -49,7 +48,7 @@ BDEPEND="
)
"
-EPYTEST_PLUGINS=( pytest-asyncio )
+EPYTEST_PLUGINS=( pytest-{asyncio,env} )
# EPYTEST_XDIST makes tests flaky
distutils_enable_tests pytest
@@ -62,7 +61,6 @@ src_prepare() {
}
python_test() {
- local -x DJANGO_SETTINGS_MODULE=tests.django_settings
epytest tests/{core,jose,clients}
# TODO: django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
diff --git a/dev-python/bitarray/Manifest b/dev-python/bitarray/Manifest
index 51a2e68a6fdc..474b48966dac 100644
--- a/dev-python/bitarray/Manifest
+++ b/dev-python/bitarray/Manifest
@@ -2,3 +2,4 @@ DIST bitarray-3.10.1.tar.gz 168648 BLAKE2B 12b22225a86c93db32dc70854c17a5046fd0e
DIST bitarray-3.11.0.tar.gz 174911 BLAKE2B e9a2444607225488576e565046039ae5fa8787543ca6a3c75cd72fc28a49944168cc5cbdf0f573c32ba1387007dc665bbde7c11d260af3cc1fc85c1e3d7f77af SHA512 de61eff60c8534af4505046e99b1343d49e6a29f39bcd02693ad28a6ff03643c04103c2ab21c19d1515a9720721765a41a3acfb5c1452df44fb4561e8b79c691
DIST bitarray-3.12.0.tar.gz 186999 BLAKE2B 258cb651eb603b391f7713e6590122375cee85448f2d009c817602b4bdf2a56af2df3631d7f27cb51429008a2059e5349e9a7b4e8b103a8ab109db9f6f551d78 SHA512 36852e5dce353a640aff490064b0604effac3481c9ed9f32ba510f4bb2ed98b7fc9a06e3ea19a78fe838ea7a2177835d0376dfde7c5366452f73830d97194528
DIST bitarray-3.12.1.tar.gz 187103 BLAKE2B f8d9d2c3959f2bfadfea5addbc176bf78feac812644d3508979784b841f6fb8af9bfac1b4781887421813dd45b895956c7a8e2917e089d0fe48fe953868e16b5 SHA512 83ac90d9d2b6422862b978847c8511e5c254e13e30909a4da199aab9c826ea0f3c17a7f6b816288b1880b48638d1ee597046d77b3cad624cd0e8b7765d28b1ce
+DIST bitarray-3.12.2.tar.gz 187672 BLAKE2B de8063e169a25a0c55964481f28b53d635e56c55e13862eac55154aaa0cf5a76eecc3170e785c960a3d90d5f9927c0f86dbd781de760bf89a6f565fe1f714f75 SHA512 ae387e63d3d30dabb1bbe58484cda665ad87a31ad2598233583116ebc7da7390f9170f43ffb60dbf48703141141e885becabfa2026595e09c88b4b9465546889
diff --git a/dev-python/bitarray/bitarray-3.12.2.ebuild b/dev-python/bitarray/bitarray-3.12.2.ebuild
new file mode 100644
index 000000000000..c70a37e0f30b
--- /dev/null
+++ b/dev-python/bitarray/bitarray-3.12.2.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Efficient arrays of booleans -- C extension"
+HOMEPAGE="
+ https://github.com/ilanschnell/bitarray/
+ https://pypi.org/project/bitarray/
+"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+python_test() {
+ "${EPYTHON}" bitarray/test_bitarray.py -v || die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 6e2b56bab617..c288af25ee5d 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -3,6 +3,7 @@ DIST boto3-1.43.108.gh.tar.gz 1250263 BLAKE2B 73f98863859b8c1ff06655d84d6b155811
DIST boto3-1.43.111.gh.tar.gz 1253888 BLAKE2B 972d4fbed26dc6ef267f1ee9433d13a9030a405a7dca1da23f2b3b39a6c32e13bbb8a15d202e3c86d067040326934c57161901262c409262c3bd2e41ea003bef SHA512 bd26006eb35ad806c071e185bf86d92c8eeb2345871575cb26812c1bffcdca602a54244074bcd2edce1487b17240caf9975f98037eee02a01dd4d07f1f964190
DIST boto3-1.43.112.gh.tar.gz 1255810 BLAKE2B 7d46c0c0d0815d9cd278d60cc0b78b8a137509c8224be0e899895f897c9ceb415ce1224feaf888e56a1e368451d760765bd101b4c14e870406248c7e64221d77 SHA512 63609af1366d12eed03f1b64b2d20cd6721a632d7d583e547f44f5a7519d3ef33360338611679f0b4964e541e8d4b61f9dc330fad5f909ff2e0c852764921a56
DIST boto3-1.43.113.gh.tar.gz 1257679 BLAKE2B 130963c74bfc5ce7c059178f5e971bbdf65f6b88f7f9c7f1cca0fb7d2f49b5bf7378a5e37245d20100f1933af7371315ab01292025d166f8ea526a0b52995a39 SHA512 293f0d29ef97f24eab7529c3bc66f03d72dafdd59bafadf463c9087f8154c6eebe9f6f59ff8cbba6685617acba19fc7e05e10b7db6ab8b4b1d2491a0818ea255
+DIST boto3-1.43.114.gh.tar.gz 1259584 BLAKE2B 07307d6e1005fc031d4f0cb888b885c68429000cba799e33bfd4ee53031731eb48194f0c93c2d6586bbe016e46be371edb9837c1a6ae06b427dd1e927ff673a3 SHA512 f95a3e57a4283e1ba736ef9101fe486c599afdd38cb2f6d4b202eca124b839ff0886a8d258e1594e1e0a722314a76b041c04fb48b5a68847f655cae5e08e5489
DIST boto3-1.43.89.gh.tar.gz 1225424 BLAKE2B 625bb37a542644c8fe37aab42a115bf8be2e36373d7f6149dcc7e150e327c75b334ef480897be1d4954809b233a47e02854d7b28b4a3904f0e5cdcea3f0440d7 SHA512 1c04fd6df819abbe60d551c6d706f7254fe6d6758e95fd53ec70d4dd892b6f7bf69981cb001fc6ca5bc5885f083718b80a4fd045b146e7f4add16a50ac3a9d38
DIST boto3-1.43.93.gh.tar.gz 1230597 BLAKE2B 183d94cea0d706147a75674cb85a600ad21c2683618ba18a14e8630f23b19c94c11d0bc03ddc517194dad42dfb9445d1b34076b1f1b3ecbcec51ceccf30e5db0 SHA512 01612175497aada3b3fdf62ffcdb0626dc0fd5090d7d156d2a1f5fad4ec19b904ffecfd4b59880cf71ec07658bf00c2245bdd3c989a7513689ab59a2511e06ea
DIST boto3-1.43.98.gh.tar.gz 1235430 BLAKE2B 6a08b191374c1c31b69c975cb4281685bee4914b8f2ab32dd2eb13c7742ff7e228a151f0e78b7f323d43ffe9b4dd7e4574104bc4a63cd573726715eceeb13137 SHA512 550c5daf6b3110562ba08e0694cdc19b7cd02e9d00aba22acc3a8272a63124d3e9eea870d7fced18685ee89459f375ace66aca49fcaece88a1d7dbfa1d54022e
diff --git a/dev-python/boto3/boto3-1.43.114.ebuild b/dev-python/boto3/boto3-1.43.114.ebuild
new file mode 100644
index 000000000000..fcfc7c9a743e
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.114.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.19.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 169ed55b7a63..d1bfe7332582 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -3,6 +3,7 @@ DIST botocore-1.43.108.gh.tar.gz 17372621 BLAKE2B c4a053b10a7a95d78a84254aabe941
DIST botocore-1.43.111.gh.tar.gz 17387410 BLAKE2B 36f5cde64e3be6b364ed4b0338531e8dca38e5b817e6e2607a16ef48ae1ad4cd21bcfc48a7c982358ad45b7fab3073f995817da8689ef7a8c0d8a376d079d88e SHA512 fb63e7844d5d74bbae67fe601b18629f4f366128972bd35498263b3f7fc5d3af7fa1a3e39f3cc9673d87954aff6990bcbff350ea8ed28ab6d887fb8e33e6652a
DIST botocore-1.43.112.gh.tar.gz 17421218 BLAKE2B a32c8c09753310247810be3939df3cf2885140bad9a9b13fdba3eb6ee862b1ecf08cd8f841c84c9b9e10037f9d5f68ec47ead537536cf66673efd17a2a0d3b8d SHA512 264de478efb971616b44d47191ce6294e1981565aa75fe3db978e8e4491fbc7728dbbe4a223097a464c5b71decd1f1e9019e719fb94b436701c5de775faac4a6
DIST botocore-1.43.113.gh.tar.gz 17434227 BLAKE2B a76cb5a7acfd27fefd63528af078e973618a8d101091728f49ff83cd1ce82c1e0a19cc4cf44212786c49affd3987631e3f61b142166b56f6c0f7edd3d6e162b2 SHA512 39f47829e8012abb4311e745deb5065ba385dae4386d2555188754b37d1870af5967dea522ea9fd678d024d0506abffbbf29af4c16c757201ca3aec17f0a2363
+DIST botocore-1.43.114.gh.tar.gz 17441489 BLAKE2B 587bd7b0e7afbbcb85fd7a1d4c499577d15a7c69cfd3a9cf37d951700ad4a0e25e0f456a5b7542673bc2182567fe238ecf016c63d49232284b8f16936d3af29d SHA512 c4dd34ef3fe0fc407ff60478aec7c4327e3773cc2a7858cb7911571d02cdb71f9409c84523ca47e7c3f7b7e0f2bb2d1e0c12de3a30342dc4ce0e823d84c6b693
DIST botocore-1.43.89.gh.tar.gz 17111395 BLAKE2B 25837125b5d9477b011c065594ffa1b49a2f5d0cf76e1c664aa5401d50dfe8dd9573d0ab3a60f739c796c32965a7dd7608e302a284bfcc97d9f7f4a8a2b698e3 SHA512 c9c0b7636fb7595d4ff3ee2ec7e1ef8ad3000e9e453ce6edb827a1152109fc2fb6b226bd08f27653fc1436444c39be6f160fa4f7c34eb50a7384988686933590
DIST botocore-1.43.93.gh.tar.gz 17142451 BLAKE2B eec2955aa252ff8bc49c24095006f0c75669f7946dcdaece4c7f640e724910b14c1b1b0b07fb8e6661d96e95fe148201381d70b4685a7282c2c64f2656fde57a SHA512 e021322d630deb94f738aa5096a7b72ffdeffbeaf5d3f6fbc9e835b7f41afa25a738d353e37b4fbd73b5b8889334ccdf4caec64d4c63e4e966e0e245c6117cf0
DIST botocore-1.43.98.gh.tar.gz 17171860 BLAKE2B 8bb682accc106b35b89f19fc6512314f3251a896d5e3e74b02112d9dc6218c56388685113d1889dbbde18ca9ea2b18acd2386d54603567d334644bebc55a678a SHA512 42700b9fbbf6df97f410cff159aae5dd57f5c114567e80fe4930b42166608609fcd9822f011c0acb8a4fc46c92aedd9a7ea5afa1608a24e47b0e30d78274d0ac
diff --git a/dev-python/botocore/botocore-1.43.114.ebuild b/dev-python/botocore/botocore-1.43.114.ebuild
new file mode 100644
index 000000000000..c5a99a77214e
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.114.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ # The test suite can eat up a lot of memory when running via xdist,
+ # and slow down some tiny tests. Let's just run a safe subset
+ # of tests known to be slow-ish in parallel, and the rest in series.
+ local parallel_tests=(
+ tests/functional/*/
+ tests/functional/test_event_alias.py
+ tests/functional/test_[cds-z]*.py
+ tests/unit/
+ )
+
+ epytest "${parallel_tests[@]}"
+
+ local EPYTEST_IGNORE=( "${parallel_tests[@]}" )
+ EPYTEST_XDIST= epytest tests/functional
+}
diff --git a/dev-python/cftime/Manifest b/dev-python/cftime/Manifest
index 3d4d3718360f..6d44779dc2a7 100644
--- a/dev-python/cftime/Manifest
+++ b/dev-python/cftime/Manifest
@@ -1,3 +1,5 @@
DIST cftime-1.6.5.tar.gz 326605 BLAKE2B 41971028ce294e69a9b67d9adc0d8346d9656faa05abd9b156d13441c459ee63f1b74f085081e8b7066fa8fc4e64f8d319a545bdda85d0dac29c2bc2e3da28ad SHA512 ccb19d9216536094a3fff4f9f396d284971647f55e3239fba358342e4afc8a4c5449bda2b6c3d930ed43b9cf9f2756c62d2f66b8356a341189f590625b721621
+DIST cftime-1.6.6.1.tar.gz 381552 BLAKE2B 37a31e57784193216bc6a5de2f736a6ecb6e2d855c2b2001c7538b192c2e2a1d06cd86baeed487f82125c1b6189839b0cfe79c3df3f094fe3d05a1b75d4409bb SHA512 9ccc6d29ce46b5e4f11612805b77f6363e33e36c3b06c13c4a1dc6cbbd3fa55cfa9f915bf6dc6c5724661ededa05c342b465368b4dc6cd43c419c6d1284c6447
+DIST cftime-1.6.6.1.tar.gz.provenance 9968 BLAKE2B 32aef82b13ad2d0880261652ff8bfd3ff66cadd542e6c17d39e951e01c2018275aca5ff07c5a3aa9d697470bcc012327691dee4c03a0667fba2ad39ba24dddc8 SHA512 a8334a5f40e8fc92ef02be2f41da4120c68e7898819319620c156b385af818acdcf0fcef2f51f294fa9bbdea931a45247990923418357d9510abb8103dcc6ce2
DIST cftime-1.6.6.tar.gz 380802 BLAKE2B 2513dde7d96698509aa655d62473fca0d588cee346f933f283966c9a291fdafc41a50dcbba713f682511a6f8971225c2bd37a3b2ee1f2a02c82348cdda89c7df SHA512 f24924bcdd930079f8af6e3bdcfeb7e8768177a38fb07625ba02b7eac23eefb5c7eeff153fb0ac69b382b00558cc65c7930ef0ea7025dfa09061005fba1828a6
DIST cftime-1.6.6.tar.gz.provenance 9762 BLAKE2B a4deebc020594b0abf1f1b0f70f2f884f61bad6c22509af49cc56fd9a773b66a627916d29ad16e1436bdc83236fc3920a22cac042ec6358a8bcfb2f6418e0fb0 SHA512 92f43350ae1c824959acd08b1ef3436ce8d02063d4c3fc373a3774e9c099f9580c5eff101e69bf40b198b874e2e83999abde19cc819234fe699be5a892edfee7
diff --git a/dev-python/cftime/cftime-1.6.6.1.ebuild b/dev-python/cftime/cftime-1.6.6.1.ebuild
new file mode 100644
index 000000000000..849614a695f4
--- /dev/null
+++ b/dev-python/cftime/cftime-1.6.6.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2020-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/Unidata/cftime
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Time-handling functionality from netcdf4-python"
+HOMEPAGE="
+ https://github.com/Unidata/cftime/
+ https://pypi.org/project/cftime/
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~s390 ~x86"
+
+DEPEND="
+ >=dev-python/numpy-1.26.0[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ >=dev-python/cython-0.29.20[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/cramjam/cramjam-2.14.0.ebuild b/dev-python/cramjam/cramjam-2.14.0.ebuild
index ec4fc063cd0c..26608d4b31e9 100644
--- a/dev-python/cramjam/cramjam-2.14.0.ebuild
+++ b/dev-python/cramjam/cramjam-2.14.0.ebuild
@@ -8,7 +8,7 @@ DISTUTILS_USE_PEP517=maturin
PYPI_VERIFY_REPO=https://github.com/milesgranger/cramjam
PYTHON_COMPAT=( python3_{13..14} )
-RUST_MIN_VER="1.83.0"
+RUST_MIN_VER="1.85.0"
# Note: you need to use top-level Cargo.lock to generate the crate list.
CRATES="
adler2@2.0.1
diff --git a/dev-python/fakeredis/Manifest b/dev-python/fakeredis/Manifest
index a73f6bf1eae2..c4c86a65c1b6 100644
--- a/dev-python/fakeredis/Manifest
+++ b/dev-python/fakeredis/Manifest
@@ -6,3 +6,5 @@ DIST fakeredis-2.38.0.tar.gz 271116 BLAKE2B c16d21d194a2589363a753737fbbe0729ead
DIST fakeredis-2.38.0.tar.gz.provenance 9942 BLAKE2B e29e23b6ec2a64fcbbe8c078ea0b01aa728d81a63e6c4898971187184aa59bfb219c072d8933bc4ae64040db6d89b7ad334b4489b6da8e2d640c639200e33fa2 SHA512 18400e533c3471d087e8429a41d5cb664a023a5bc12276f0021aeb9616dd7c18523284716f9a89c93ac3f30019f6540bb3935c6a7073f43fd59d4644afb499ba
DIST fakeredis-2.39.0.tar.gz 301722 BLAKE2B 4f0550eb73f0b67061cc96e6b44bca7920aaa423563ab0c588ed264259e340de20a417c4535f82dc09714d6902d9bc298e07145b27ac72c3642bb3b387c74d2e SHA512 b0b15942440a0926ebb40db4ffe49e80d35bddf59de6919d3c68b651ddab6ebce17f7310406bc2c9ee5fe912f875a6bf58430392652ec95c18cbc5c7f839b7ca
DIST fakeredis-2.39.0.tar.gz.provenance 9797 BLAKE2B 07d67ab697bee1676aa436aaeb30e10628cc407823d1ce3f4a4c9187f1a9862050d720c6d2c70bacc082d4244c48968dae848ff615115f50ec8084f757ff0547 SHA512 b50b217469ca5fc2629e297823abfd2f83c398cbb4c4dda962c59286eb3af0c811d8cbadaf1d0291edf1f95916db96587a559a1279dda9bba6e95fabca7375d7
+DIST fakeredis-2.40.0.tar.gz 332674 BLAKE2B 1dc0b7797d59a895ec93c171f0797daace9c9d11dc17182f714488030a31b3b28cc53c20723454e2430923f2dc7d8d3ed305bca08592e3045ab43eca3ca96c98 SHA512 215a23b61976b7418172a9c28a7646469127a1caa8dcb388fede54d6d64d83fd9691d41b58d7bb3fc4e46c1828ca0b5d7c97371b33b542a839b84c38f75dbf3b
+DIST fakeredis-2.40.0.tar.gz.provenance 9869 BLAKE2B 5fa1cfb9ffe0713dbf21a3685f90b2e80b4009b39401cdf7f1ced6d6b4a5c3d392d33e9fa5f6df5d966e3c83f03261c86e66c94df47f649561ea0ec7d5ab6e12 SHA512 6f2db02bfa3f52c4739fc5c58c8b4d14c7d238ed0540c31ea86ab0adef8c34ef1c10352f0452b28e2d513efc56ceb8661426e681a9bce4ab650ae48cd04231bb
diff --git a/dev-python/fakeredis/fakeredis-2.40.0.ebuild b/dev-python/fakeredis/fakeredis-2.40.0.ebuild
new file mode 100644
index 000000000000..31767ad12918
--- /dev/null
+++ b/dev-python/fakeredis/fakeredis-2.40.0.ebuild
@@ -0,0 +1,139 @@
+# Copyright 2020-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/cunla/fakeredis-py
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Fake implementation of redis API for testing purposes"
+HOMEPAGE="
+ https://github.com/cunla/fakeredis-py/
+ https://pypi.org/project/fakeredis/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/redis-4.3[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-db/valkey
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/valkey[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not install duplicate license
+ sed -i -e '\@fakeredis/LICENSE@d' pyproject.toml || die
+}
+
+wait_for_status() {
+ local expected=${1}
+
+ local i
+ for i in {1..50}; do
+ "${server}-cli" -p "${redis_port}" ping
+ [[ ${?} -eq ${expected} ]] && return
+ sleep 0.2
+ done
+
+ die "Timeout while waiting for ${1}-server to start/stop"
+}
+
+src_test() {
+ local server
+ for server in redis valkey; do
+ local redis_pid="${T}/${server}.pid"
+ local redis_port=6390
+ local redis_log="${T}/${server}.log"
+ local redis_db="${T}/${server}.db"
+
+ einfo "Running ${server} server tests"
+ "${EPREFIX}/usr/sbin/${server}-server" - <<- EOF || die "Unable to start ${server} server"
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ logfile ${redis_log}
+ dir ${redis_db%/*}
+ dbfilename ${redis_db##*/}
+ bind 127.0.0.1
+ EOF
+
+ # wait for the server to start
+ wait_for_status 0
+
+ distutils-r1_src_test
+
+ "${server}-cli" -p "${redis_port}" shutdown || die "Unable to stop ${server} server"
+
+ # wait for the server to stop
+ wait_for_status 1
+ done
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # json ext
+ test/test_stack/test_json.py
+ test/test_stack/test_json_arr_commands.py
+ test/test_stack/test_json_fpha.py
+ # eval command
+ test/test_internals/test_reply_shaping.py::test_nested_replies_reach_the_client_intact
+ # TODO
+ "test/test_mixins/test_pubsub_commands.py::test_published_message_to_shard_channel[Strict3]"
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[Strict2]"
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[Strict3]"
+ )
+
+ local EPYTEST_IGNORE=(
+ # these tests fail a lot...
+ test/test_hypothesis
+ test/test_hypothesis_joint.py
+ )
+
+ case ${server} in
+ redis)
+ EPYTEST_DESELECT+=(
+ "test/test_mixins/test_acl_commands.py::test_acl_cat[Strict2]"
+ "test/test_mixins/test_acl_commands.py::test_acl_cat[Strict3]"
+ "test/test_async/test_redis_only.py::test_async_lock[fake_resp2]"
+ "test/test_async/test_redis_only.py::test_async_lock[fake_resp3]"
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[FakeStrict2]"
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[FakeStrict3]"
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[Strict2]"
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[Strict3]"
+ )
+
+ # run fake tests only once
+ # TODO: figure out how to run tcp_server tests
+ # they fail if a server is running,
+ # and conftest fails if one isn't running
+ epytest -m "not real and not tcp_server"
+ ;;
+ valkey)
+ EPYTEST_DESELECT+=(
+ test/test_stack/test_vectorset.py
+ )
+ ;;
+ esac
+
+ # we can run "fake" tests in parallel, but "real" seem to share
+ # the same connection
+ EPYTEST_XDIST= epytest -m "real"
+}
diff --git a/dev-python/fastapi/Manifest b/dev-python/fastapi/Manifest
index 515f4379e5c9..58a957f5b510 100644
--- a/dev-python/fastapi/Manifest
+++ b/dev-python/fastapi/Manifest
@@ -1,2 +1 @@
-DIST fastapi-0.142.4.tar.gz 467841 BLAKE2B 544d79530c15dae26718c42446ead3f5f2a443baf44bc4030f91ac66ddd38f4a5ed088ada78efce2e148182ee87c0ecf330ff0764d8cb23a9f014ceefe2f3171 SHA512 e82761d7f9a1674c0d44b18fdd23170b95571e195ab4a6ca3d67ae992b99d848304acb7eb6bd6302738caa3236aa328037979a46cf9ac36f86f55ef045222449
DIST fastapi-0.143.0.tar.gz 468391 BLAKE2B 24b1ebaac972c183166ebe37c76ec6fe29ec68b1cbdb78201e1ff11c54e158b56b9ba6f45e2318815202d97c0e94ea7b58fe53c620b501098fdcdeec564a2a43 SHA512 1fc0322645736bbdcb07892cd0f622feeb82b8e751b3e0040bd7cb32f8d749b38a5c33787ee1f1d2d67625b885481e3b2c17e8db9e13ac239833bfa544ff5f11
diff --git a/dev-python/fastapi/fastapi-0.142.4.ebuild b/dev-python/fastapi/fastapi-0.142.4.ebuild
deleted file mode 100644
index 001c647ada47..000000000000
--- a/dev-python/fastapi/fastapi-0.142.4.ebuild
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright 2025-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYTHON_COMPAT=( python3_{13..14} )
-#may be not stricly required
-PYTHON_REQ_USE="threads(+)"
-
-inherit distutils-r1 optfeature pypi
-
-DESCRIPTION="High performance framework, easy to learn, fast to code, ready for production"
-HOMEPAGE="
- https://fastapi.tiangolo.com/
- https://github.com/fastapi/fastapi/
- https://pypi.org/project/fastapi/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- >=dev-python/annotated-doc-0.0.4[${PYTHON_USEDEP}]
- >=dev-python/opentelemetry-api-1.44.0[${PYTHON_USEDEP}]
- >=dev-python/pydantic-2.9.0[${PYTHON_USEDEP}]
- >=dev-python/starlette-0.46.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.8.0[${PYTHON_USEDEP}]
- >=dev-python/typing-inspection-0.4.2[${PYTHON_USEDEP}]
-"
-
-#FIXME: add missing deps
-BDEPEND="
- test? (
- dev-python/a2wsgi[${PYTHON_USEDEP}]
- dev-python/dirty-equals[${PYTHON_USEDEP}]
- dev-python/flask[${PYTHON_USEDEP}]
- dev-python/httpx[${PYTHON_USEDEP}]
- dev-python/httpx2[${PYTHON_USEDEP}]
- dev-python/pydantic-settings[${PYTHON_USEDEP}]
- dev-python/python-multipart[${PYTHON_USEDEP}]
- dev-python/sqlalchemy[${PYTHON_USEDEP}]
- dev-python/typer[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( anyio inline-snapshot pytest-timeout )
-# workaround broken toml config
-: ${EPYTEST_TIMEOUT:=30}
-# 3k tests+, so use xdist to speed them up
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-# There are some JSON response tests that will exercise orjson or ujson if they are available.
-# These are properly skipped if the optional dependencies are not installed at the cost of a little spam.
-python_test() {
- local EPYTEST_IGNORE=(
- # python/strawberry-graphql (in guru, test dep only)
- tests/test_tutorial/test_graphql/test_tutorial001.py
- # dev-python/sqlmodel (in guru, test dep only)
- tests/test_tutorial/test_sql_databases/test_tutorial001.py
- tests/test_tutorial/test_sql_databases/test_tutorial002.py
- # dev-python/fastapi-cli (missing, test and optfeature)
- tests/test_fastapi_cli.py
- # dev-python/pwdlib (in guru, test dep only)
- tests/test_tutorial/test_security/test_tutorial004.py
- tests/test_tutorial/test_security/test_tutorial005.py
- # Wants dev-python/multipart _just_ to complain that it's not the right multipart lib.
- tests/test_multipart_installation.py
- # scripts/tests use CliRunner.isolated_filesystem() removed in recent typer
- scripts/tests
- )
- local EPYTEST_DESELECT=(
- # Requires investigation - missing ./image.png test file (?)
- tests/test_tutorial/test_additional_responses/test_tutorial004.py::test_path_operation_img
-
- # Broken by brotli being available, also fragile to random ordering
- tests/test_tutorial/test_header_param_models/test_tutorial001.py::test_header_param_model_invalid
- tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_invalid
- tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_no_underscore
- # opentelemetry-*
- tests/test_telemetry/test_background.py::test_background_task_integrations
- tests/test_telemetry/test_data.py::test_request_objects_are_not_exported
- tests/test_telemetry/test_environment_integrations.py
- tests/test_telemetry/test_integrations.py::test_current_contrib
- tests/test_telemetry/test_integrations.py::test_current_logfire
- tests/test_telemetry/test_integrations.py::test_current_sentry
- tests/test_telemetry/test_integrations.py::test_inactive_sentry_does_not_disable_native
- tests/test_telemetry/test_integrations.py::test_logfire_global_provider_without_fastapi_instrumentor
- tests/test_telemetry/test_native_integrations.py
- tests/test_telemetry/test_runtime.py::test_concurrent_provider_owner_wins
- tests/test_telemetry/test_runtime.py::test_environment_export_initializes_after_fork
- tests/test_telemetry/test_runtime.py::test_failed_registration_closes_new_exporter
- tests/test_telemetry/test_runtime.py::test_real_otlp_exception_export_without_traces_or_metrics
- tests/test_telemetry/test_runtime.py::test_real_otlp_export_and_repeated_lifespans
- tests/test_telemetry/test_runtime.py::test_registration_provider_prefers_public_metric_reader
- tests/test_telemetry/test_runtime.py::test_unsupported_provider_warns_without_preventing_startup
- )
- epytest
-}
-
-pkg_postinst() {
- # not part of any upstream extra
- optfeature "alternative JSON library" "dev-python/ujson" # orjson, too but it's deprecated
-
- # pyproject.toml:project.optional-dependencies.standard
- # Following optfeatures should be exposed, but missing deps
- # optfeature "fastAPI CLI" "dev-python/fastapi-cli" - missing - depends on this package!
- # optfeature "compressed file support" "dev-python/fastar" - missing
- # optfeature "pydantic extra types support" "dev-python/pydantic-extra-types" - in guru
- optfeature_header "standard extras"
- optfeature "ASGI server support" "dev-python/uvicorn"
- optfeature "email validation support" "dev-python/email-validator"
- optfeature "TestClient for testing FastAPI applications" "dev-python/httpx"
- optfeature "templating support" "dev-python/jinja2"
- optfeature "multipart form data support" "dev-python/python-multipart"
- optfeature "settings management support" "dev-python/pydantic-settings"
-
- # pyproject.toml:project.optional-dependencies.all - includes all the above plus:
- optfeature_header "all extras"
- optfeature "session middleware support" "dev-python/itsdangerous"
- optfeature "YAML support" "dev-python/pyyaml"
-}
diff --git a/dev-python/fastsimdjson/Manifest b/dev-python/fastsimdjson/Manifest
new file mode 100644
index 000000000000..1743c3b34bb3
--- /dev/null
+++ b/dev-python/fastsimdjson/Manifest
@@ -0,0 +1,2 @@
+DIST fastsimdjson-0.8.0.tar.gz 3171735 BLAKE2B 8e7ec750b854797c766c46c5c76e50f828bba31cd9eae53d6ba1e4bb82d588c46cd78b5f7aaf05a60d8e77818bef6a6eb526419df526cfa6b60ef6a2515e5cd7 SHA512 cf5a5c92cb8d1be049a261225632c4f01f9bd5198b4c1eb4faebb2dbf368100614e0348d1435cd4d51b0ab1bd2140bdf71f06bcb45068485c0f7c1fac8fef433
+DIST simdjson-data-351949906abde446f0314bf79606fb5d884f5be7.tar.gz 6635608 BLAKE2B 07f96c6b1bfea55a247eb7361bd4c068cb49e06f2cb1f3853c107173025c4cd543b20a5b7a3dcfa1e4462aaca8278a1cff9656f54319da08e221bc38f98e5a9e SHA512 7db557d374b9ce98077b7a9e1265ae66f9a607f0f283f662a9f184147f081727df68c0eb4889ebc8aca609ec62b348753445e553087e6520879a23e268caafba
diff --git a/dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild b/dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild
new file mode 100644
index 000000000000..fc60e3555519
--- /dev/null
+++ b/dev-python/fastsimdjson/fastsimdjson-0.8.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_EXT=1
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="fast JSON in Python"
+HOMEPAGE="
+ https://pypi.org/project/fastsimdjson/
+ https://github.com/simdjson/fastpysimdjson
+"
+
+SIMDJSON_DATA_HASH="351949906abde446f0314bf79606fb5d884f5be7"
+SRC_URI+="
+ test? (
+ https://github.com/simdjson/simdjson-data/archive/${SIMDJSON_DATA_HASH}.tar.gz
+ -> simdjson-data-${SIMDJSON_DATA_HASH}.tar.gz
+ )
+"
+
+LICENSE="Apache-2.0 MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-libs/simdjson-5.0.2:=[nan]
+ >=dev-cpp/simdutf-9.2:=
+ dev-libs/zmij:=
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-python/wheel[${PYTHON_USEDEP}]
+"
+# there is an optional test dep on dev-python/orjson, left that out since it's marked as deprecated
+
+PATCHES=(
+ "${FILESDIR}/fastsimdjson-0.8.0-unbundle.patch"
+)
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # remove bundled deps
+ rm -rf vendor || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ ln -sfn "${WORKDIR}/simdjson-data-${SIMDJSON_DATA_HASH}" "simdjson-data" || die
+
+ distutils-r1_python_test
+}
diff --git a/dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch b/dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch
new file mode 100644
index 000000000000..cd1ad24cdf80
--- /dev/null
+++ b/dev-python/fastsimdjson/files/fastsimdjson-0.8.0-unbundle.patch
@@ -0,0 +1,54 @@
+diff --git a/setup.py b/setup.py
+index 5b96127..1accfc0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -10,11 +10,11 @@ DEFINES = [("NDEBUG", None), ("SIMDJSON_ENABLE_NAN_INF", "1")]
+ ext = Extension(
+ "fastsimdjson",
+ # src/fastsimdjson.cpp includes vendor/simdjson.cpp (a unity build).
+- sources=["src/fastsimdjson.cpp", "vendor/simdutf.cpp"],
+- depends=["vendor/simdjson.cpp", "vendor/simdjson.h", "vendor/simdutf.h",
+- "vendor/zmij.h", "vendor/zmij.cc"],
+- include_dirs=["vendor"],
++ sources=["src/fastsimdjson.cpp"],
++ depends=[],
++ include_dirs=[],
+ language="c++",
++ libraries=["simdjson", "simdutf", "zmij"],
+ define_macros=DEFINES,
+ )
+
+@@ -23,15 +23,8 @@ class BuildExt(build_ext):
+ def build_extensions(self):
+ msvc = self.compiler.compiler_type == "msvc"
+ args = ["/std:c++17", "/O2", "/EHsc", "/utf-8"] if msvc else ["-std=c++17", "-O3"]
+- # zmij (float formatting) is compiled as C++14: some compilers reject
+- # its constant tables in C++17 mode.
+- zmij_args = ["/std:c++14", "/O2", "/EHsc"] if msvc else ["-std=c++14", "-O3"]
+- zmij = self.compiler.compile([os.path.join("vendor", "zmij.cc")],
+- output_dir=self.build_temp, include_dirs=["vendor"],
+- macros=[("NDEBUG", None)], extra_postargs=zmij_args)
+ for e in self.extensions:
+ e.extra_compile_args = args
+- e.extra_objects = list(zmij)
+ super().build_extensions()
+
+
+diff --git a/src/fastsimdjson.cpp b/src/fastsimdjson.cpp
+index f7fcf2b..c273e26 100644
+--- a/src/fastsimdjson.cpp
++++ b/src/fastsimdjson.cpp
+@@ -30,10 +30,9 @@
+
+ // simdjson.cpp is compiled here (a unity build) so that dumps can call its
+ // float-to-decimal routine, dtoa_impl::dragonbox, directly.
+-#include "simdjson.h"
+-#include "simdjson.cpp"
+-#include "simdutf.h"
+-#include "zmij.h" // shortest float digits for dumps and dumpb (vendor/zmij.cc)
++#include <simdjson.h>
++#include <simdutf.h>
++#include <zmij.h> // shortest float digits for dumps and dumpb (vendor/zmij.cc)
+
+ #ifdef _MSC_VER
+ #include <intrin.h>
diff --git a/dev-python/fastsimdjson/metadata.xml b/dev-python/fastsimdjson/metadata.xml
new file mode 100644
index 000000000000..0ba9a7d3033b
--- /dev/null
+++ b/dev-python/fastsimdjson/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+ <maintainer type="person">
+ <email>chutzpah@gentoo.org</email>
+ <name>Patrick McLean</name>
+ </maintainer>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-python/filelock/Manifest b/dev-python/filelock/Manifest
index cb6a9b1b910a..688079c36645 100644
--- a/dev-python/filelock/Manifest
+++ b/dev-python/filelock/Manifest
@@ -22,3 +22,5 @@ DIST filelock-4.1.0.tar.gz 561277 BLAKE2B 4e8a7cc38da18ca61323a0c6fe6a733ed56843
DIST filelock-4.1.0.tar.gz.provenance 9815 BLAKE2B edeae542d4fe299d180e674402fa07da3432893b1ec757267fea6a0b0589a18a03ed4de3180e2be71ae726c46d1163b49d51a7a437401bbc5269247a585fb4f0 SHA512 b96c082948fba515e3d14d0d14e90954b26da26da1235d5d09c858dac10e174f38c3959c8c2c843a9050b21fb1582fdaecd2faab8c9c88af4ef60839c670b4de
DIST filelock-4.1.1.tar.gz 563430 BLAKE2B 6fc4121e54e9ace488526aae23fff5640a5999fa61d33805f7ce0c051426fa9bd5033ecfa376d7ab58cbe44b709d2f16c1a5953af7881394e7077cb799bb0ac9 SHA512 09744b4b68a124f358bfacd938034aab7ff8c7ff66c12a1a0aba3966c5534b473d83945ef85c6cd74811a702bf84e0336cc41e7e4d831bf767e9a50ed9ab3fa1
DIST filelock-4.1.1.tar.gz.provenance 9627 BLAKE2B ccd2e9cf36f325dcc1e321dde825f9290e9d007bb7a1db9d872ab6ae40ff351a557f1debdcf655a4baef8be1aebe7912c34e2f78320490a636da7ba49d104f0b SHA512 e4bc59fbf1426c90868607ed7d4ab5b000438a6185ac5eec332cf07a45950d8ae4665b977486ffc0e3ee3530559183e652cf6227285fdb30fee4f10725691cc8
+DIST filelock-4.2.0.tar.gz 569667 BLAKE2B 5c5d8f41206453a9a2089ee86f7f4503e1b3b83a8ef76b174d769c3f736bc561c247595ffe41b31f1edd0cf074c5e8155efa14b79657f1721c5cd82d757a9af5 SHA512 96e9dc73d938c8ee9f357dd92d7999ebbb06c4f07aed08833ec9eec686fc37d961f121d4f4369c0b6e80e16ab31a44cd3ca235934ddaeefdac4ac07fb792fcd2
+DIST filelock-4.2.0.tar.gz.provenance 9768 BLAKE2B 9a17c307d1bce1df7e12340e11bbd93d3e67aba29fce3e920378ef816298b7fe18466743635ab1c5839beebf308766b10b87603a4856b7d87cc8fb27f4c0762c SHA512 e6847b3e7b2021f06c500113033b8419d9c0d3d5405003a93ed80ae9c1088c7fdf8d38df504b5d63bdac398daee1be56c8c5ee21d79f5a41f4a3d37ce4dbee8a
diff --git a/dev-python/filelock/filelock-4.2.0.ebuild b/dev-python/filelock/filelock-4.2.0.ebuild
new file mode 100644
index 000000000000..51d73c002e05
--- /dev/null
+++ b/dev-python/filelock/filelock-4.2.0.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2018-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/filelock
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A platform independent file lock for Python"
+HOMEPAGE="
+ https://github.com/tox-dev/filelock/
+ https://pypi.org/project/filelock/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock,timeout} )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # TODO
+ tests/soft_rw/test_soft_rw_async.py::test_async_leaked_singleton_is_closed_on_teardown
+ tests/soft_rw/test_soft_rw_sync.py::test_leaked_acquired_singleton_is_closed_on_teardown
+)
diff --git a/dev-python/fonttools/Manifest b/dev-python/fonttools/Manifest
index 05d1026d9b14..987c754daceb 100644
--- a/dev-python/fonttools/Manifest
+++ b/dev-python/fonttools/Manifest
@@ -1,4 +1,3 @@
-DIST fonttools-4.63.0.gh.tar.gz 4031830 BLAKE2B 8cdb1d9018a44898fd792ee538c88443ecda34d7c896d280578d96b80c2f80064ad057b1e4bcb4a865dd706eb3605e86768eb141317fdcf5947a99fc873a7421 SHA512 a2d8df4fd11f36c45e838953d6c8bf1e25999382422d5fc3fe3418c985c06f30b52073f738278cb2a7b19da6e227e5ae709f016661a17e7ae96023b7a762365e
DIST fonttools-4.64.0.gh.tar.gz 4106541 BLAKE2B 5bdddac2b811e47567948a48bef0de7c74510b3334bf0710d08986c41f2c9b4d41a16fbc2266ed55923197602b2ecc8525ed0ebfd4636518eb64ee13db4fee9b SHA512 1cf3d8ab10931e6eca3f54e2d365a946413d90e2a8fe0405252db14a51e2908c109c6a65f7b0fb5fabaeb0e30eb27b5b737bf2d1b75a3137806bc88f140a0faa
DIST fonttools-4.65.0.gh.tar.gz 4113728 BLAKE2B a8315b819ae12417b6757956d237fa9fffb4a2e75dc893c00be0dafe529880e161070f9496594b3414a0ef0932fe84092d1910ca2f292acc6cf9f1ba07506347 SHA512 b6066e438e5237ff18e9b44343d3533ccd4468ac4e685b066a1f5da035161c082468c025ff79832eec534e29a8bbac7cc558301b13abdb763c61f91d0ceecafa
DIST fonttools-4.66.0.gh.tar.gz 4129212 BLAKE2B d35d913e0dda168b623cff44a7fa430b5d5922e5ffdca3c0b14f7882780c26412b0e001dd2d277e806f5202fac1deb05bda12291343de45a5ac92482beb8e1db SHA512 01db954f6f895d941dbae3cbf900683e737ec8b4f46fc2b7158cdf9fab2fb350b9121724088521b5d790d2e5ec0e70939ae1757d1612c87616ecbfec2b9ae0b9
diff --git a/dev-python/fonttools/files/fonttools-4.63.0-py315.patch b/dev-python/fonttools/files/fonttools-4.63.0-py315.patch
deleted file mode 100644
index 24db71a60f96..000000000000
--- a/dev-python/fonttools/files/fonttools-4.63.0-py315.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 731282b6a7335b425c37a02ce865b9189ad6ca63 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Sat, 11 Jul 2026 19:52:51 +0200
-Subject: [PATCH] Replace private `glob.glob1()` with `glob.glob(...,
- root_dir=...)`
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Replace the use of undocumented `glob.glob1()` function that was removed
-in Python 3.15 with its equivalent `glob.glob(..., root_dir=...)`. This
-fixes compatibility with Python 3.15 (where the function is removed),
-and works all the way down to Python 3.10.
-
-See: https://docs.python.org/3.13/whatsnew/3.13.html#new-deprecations
-
-Signed-off-by: Michał Górny <mgorny@gentoo.org>
----
- MetaTools/buildTableList.py | 2 +-
- MetaTools/check_table_coverage.py | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/MetaTools/buildTableList.py b/MetaTools/buildTableList.py
-index b344f330f..9bdd95642 100755
---- a/MetaTools/buildTableList.py
-+++ b/MetaTools/buildTableList.py
-@@ -12,7 +12,7 @@ fontToolsDir = os.path.normpath(fontToolsDir)
- tablesDir = os.path.join(fontToolsDir, "Lib", "fontTools", "ttLib", "tables")
- docFile = os.path.join(fontToolsDir, "Doc/source/ttx.rst")
-
--names = glob.glob1(tablesDir, "*.py")
-+names = glob.glob("*.py", root_dir=tablesDir)
-
- modules = []
- tables = []
-diff --git a/MetaTools/check_table_coverage.py b/MetaTools/check_table_coverage.py
-index 5764daddb..19ec986eb 100644
---- a/MetaTools/check_table_coverage.py
-+++ b/MetaTools/check_table_coverage.py
-@@ -141,7 +141,7 @@ KNOWN_GAPS: dict[str, set[str]] = {
- def get_table_modules() -> list[tuple[str, str]]:
- """Return sorted list of (module_name, tag_raw) for all table .py files."""
- modules = []
-- for filename in glob.glob1(TABLES_DIR, "*.py"):
-+ for filename in glob.glob("*.py", root_dir=TABLES_DIR):
- name = filename[:-3]
- try:
- tag = identifierToTag(name) # may contain trailing spaces, e.g. "cvt "
diff --git a/dev-python/fonttools/fonttools-4.63.0-r1.ebuild b/dev-python/fonttools/fonttools-4.63.0-r1.ebuild
deleted file mode 100644
index 091fbebb659e..000000000000
--- a/dev-python/fonttools/fonttools-4.63.0-r1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE="xml(+)"
-
-inherit distutils-r1 virtualx
-
-DESCRIPTION="Library for manipulating TrueType, OpenType, AFM and Type1 fonts"
-HOMEPAGE="
- https://github.com/fonttools/fonttools/
- https://pypi.org/project/fonttools/
-"
-SRC_URI="
- https://github.com/fonttools/fonttools/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="+native-extensions"
-
-BDEPEND="
- native-extensions? (
- $(python_gen_cond_dep '
- dev-python/cython[${PYTHON_USEDEP}]
- ' 'python*')
- )
- test? (
- dev-python/brotlicffi[${PYTHON_USEDEP}]
- dev-python/munkres[${PYTHON_USEDEP}]
- app-arch/zopfli
- )
-"
-
-EPYTEST_PLUGINS=( pytest-rerunfailures )
-# woff2 tests are extremely flaky
-EPYTEST_RERUNS=20
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-PATCHES=(
- # https://github.com/fonttools/fonttools/pull/4125
- "${FILESDIR}/${P}-py315.patch"
-)
-
-python_compile() {
- local -x FONTTOOLS_WITH_CYTHON=$(usex native-extensions)
- [[ ${EPYTHON} == pypy3 ]] && FONTTOOLS_WITH_CYTHON=0
- distutils-r1_python_compile
-}
-
-src_test() {
- # virtualx used when matplotlib is installed causing plot module tests to run
- virtx distutils-r1_src_test
-}
-
-python_test() {
- # nonfatal for virtx
- nonfatal epytest Tests fontTools ||
- die -n "Tests failed with ${EPYTHON}"
-}
diff --git a/dev-python/gitpython/Manifest b/dev-python/gitpython/Manifest
index 74949600efa1..2715e2e2fa94 100644
--- a/dev-python/gitpython/Manifest
+++ b/dev-python/gitpython/Manifest
@@ -4,9 +4,11 @@ DIST GitPython-3.1.60.gitbundle 13114387 BLAKE2B 6515764c855a8c3207c98fbf7bf1007
DIST GitPython-3.1.61.gitbundle 13122659 BLAKE2B f520b694d6f796523d20c5fcf80d1b4a8e8ba544f371aeb71edec51302500b1203876bf6faf5fdb1ff24abb3f8b9cd720f9e0d240df79b6d518f53d89dd413c9 SHA512 7b83e5dd1dff9475e7017eb2d82694f7a2f6039780e97e7cc8fbc3682ff7971ab6a03967571b2840ad37ebad988f8ab1db958871adf4fab6610dffe25890a280
DIST GitPython-3.1.62.gitbundle 13146787 BLAKE2B 005cf46eefb07a2d98500cc8566ded068446eb391b80cbc884d60ddd12916c8ae3c5917fbdfd6c05315f0b06f4b078a3c5100e45245d624469b4b98d8cc30c81 SHA512 09a57ac6df48396161df439338b95b86b0d8e36ba04139d9f18624537951e6ecbea466bcd8a4f3549a758f0687044b08ecff202a3da8175c98786c6e39397ca3
DIST GitPython-3.2.0.gitbundle 13785675 BLAKE2B 170fc7429f6ff18009b9a79edd8bbffff89af9cd996fd989344ef2f40eaa1f2f8f3779755503e46d80e5afaa67f7ddcba4be51557438341b27d1a435d9f9fc26 SHA512 5c8c1d8c87b0e68aa18119a981565504c10b7fa774e26c4665e59a63701b28b06bd1ba2312640ed0ca42e367d356a0e5b63c480ba5b78d8ea1e90673eb7f9d39
+DIST GitPython-3.2.1.gitbundle 14158222 BLAKE2B 35429b478d5dc51d0920bbb160b5ea5d3f2976dde4d90163eef0aa61d946645ddf1835c9341104a410bb2fe0be05d1037a82b61ae6253415883bc306a7f154a3 SHA512 365387eb1613364967819255d3a912a06dd5afc319bd4430df6e4ea1e9a98c999a2f6cff3db17ff3ff4f452d206f6aac70986d00f9e326f26e7de03664597b39
DIST gitpython-3.1.58.tar.gz 228498 BLAKE2B fcd5b832587b82e2fb51d1a6087c02f294b84418de0c413d5eaa828aff4d2b87e8ead4486b274352d5c9ca09633e63a1c41a232ebf164c671d45df1bd9dd2bd3 SHA512 779e55e5a977b37f6bf46c5b8358e61e07f590d089b27bb402e37fb0b78d35f4a1fae1199274ecb5f7b057f2707057003d946cdc7557e7d0e574d1adb046cb70
DIST gitpython-3.1.59.tar.gz 230445 BLAKE2B ea1a8488cde9d1136f71f34c23224b5f02a3a5581a89dc1fa3a8355e3147d5ae01d533c1b032404471a691b3b9dba26fc55d7517bbf775b30374398b3a57a87b SHA512 ef810ace84c76200b6820818de0b8b3f3e8070ee48f2444bf60f6b24c7eba7710527e616ee3cc306ccb132db893b704033b238a5e2de9d9d186559ebfffcbfd3
DIST gitpython-3.1.60.tar.gz 230793 BLAKE2B d92475ddcd93bac6625a7c8d57d2cf9a1ecf6dd5285c2907d31fe9b4c7d8a4ed2429828f484f2bff5995aa18a9983fd8469df75583d7ad3c17f396e63adc40c1 SHA512 12350f87bed859bc06d40c8d400e40b814f00a9858a97a9a33d719b414292a55976cf9248ea86bd322bbb9f47a49af76a60c17756aaa932e0f713225363ae16a
DIST gitpython-3.1.61.tar.gz 231680 BLAKE2B ca6fcd928af08eac9ffecca3a718205d43d982950eccf5cf98fdd47a5344b0fb40e3c08a9205b86e330a5b052228c6126e4a0678c6da357e8ea4125ceed27b2b SHA512 0ba61c823382c384a3da0549f0a2a2e06335d91a1204bbe3364508d864dcb6f4ad0194dfe56c9b263ce83c58f8284884558910175b1a8bdc8416c1fda2f01711
DIST gitpython-3.1.62.tar.gz 231728 BLAKE2B 6b7474b32eb6668f068a4c626cb8652d51225eb4780db3346ca01c1bed438428b902feced1fce22d2d5e31f635e39777dcec7b3c9296438cb213b2e50da0f74b SHA512 47545ecf764f16cfc136852f58426c0ee9388fdd831e64b7677a8fdbb1ed2a5fc561f02c0bb6af587d8825b57fc784db6576fc8d26ca2b196d68bf7babb8837b
DIST gitpython-3.2.0.tar.gz 238091 BLAKE2B 9497f8e2b87992a549ee58647c6238d941803afb05a2651fd3f2179e3d599b4639404dde2ff5264b36b54c39eea1174a0128143e0149d6b0807e3e4df77f57b3 SHA512 83d463de8f22f25d8591e72bc3700a417580fd3016a074d84d2c4e21dd0de91977d9201ff27a6a5eb8bf602388a4eea52e07f4108a01f35f2c60bef4706bda87
+DIST gitpython-3.2.1.tar.gz 241688 BLAKE2B d196d3a0480f98c841588a638316ab6a00e71b16ca07665e121a4d07f8c532288db47ab5ec537a16d2b1a20351a944df351918cbd578f1d8a8ead359d09c217a SHA512 dba4203e7d6a91c4e0b5d2c7b3e2ad988214954c0a75f827adb7b2100f3f5a81ec4cf72ac8ad2cc81c45f040f3447e6e7a47ef893cd4348e75d91837adb044ab
diff --git a/dev-python/gitpython/gitpython-3.2.1.ebuild b/dev-python/gitpython/gitpython-3.2.1.ebuild
new file mode 100644
index 000000000000..ebe35bd5a941
--- /dev/null
+++ b/dev-python/gitpython/gitpython-3.2.1.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=GitPython
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+TEST_P=GitPython-${PV}
+GITDB_P=gitdb-4.0.12
+SMMAP_P=smmap-5.0.1
+
+DESCRIPTION="Library used to interact with Git repositories"
+HOMEPAGE="
+ https://github.com/gitpython-developers/GitPython/
+ https://pypi.org/project/GitPython/
+"
+SRC_URI+="
+ test? (
+ https://distfiles.gentoo.org/pub/proj/python/GitPython/${TEST_P}.gitbundle
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-vcs/git
+ >=dev-python/gitdb-4.0.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/ddt-1.1.1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+src_test() {
+ git config --global user.email "travis@ci.com" || die
+ git config --global user.name "Travis Runner" || die
+
+ git clone "${DISTDIR}/${TEST_P}.gitbundle" "${T}"/test || die
+
+ cd "${T}"/test || die
+ git rev-parse HEAD > .git/refs/remotes/origin/master || die
+ TRAVIS=1 ./init-tests-after-clone.sh || die
+ cat test/fixtures/.gitconfig >> ~/.gitconfig || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # performance tests are unreliable by design
+ test/performance
+ # unimportant and problematic
+ test/test_installation.py
+ # Internet
+ test/test_quick_doc.py::QuickDoc::test_cloned_repo_object
+ # TODO
+ test/test_submodule.py::TestSubmodule::test_base_rw
+ test/test_submodule.py::TestSubmodule::test_root_module
+ test/test_remote.py::TestTimeouts::test_timeout_funcs
+ )
+
+ epytest -o addopts= test
+}
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 6e97c14189b2..8cdf716cbbdf 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -10,6 +10,7 @@ DIST hypothesis-6.168.4.gh.tar.gz 9712927 BLAKE2B 7eb0492041769b05668cbdc847c27d
DIST hypothesis-6.168.5.gh.tar.gz 9713032 BLAKE2B a6c90a5f65a551f6378e5d98b604f401fb795ff7f9c6a6c94d2789e69b4fc8435dce1338d807f1a85392335c8219956aa7af56bbf735e3499aba3587ae461c25 SHA512 2ccf3bcb0a2cbfb3073003e6c6df56c02a4745f1b4b94627732d1977c50642abf2ca41ad7808c218aa75d4dceff965b6c5de4d0dab836ddb55e82f0b32fe11fd
DIST hypothesis-6.169.0.gh.tar.gz 9710358 BLAKE2B fb65497c921687a5e1a3b551528b38c2c96d1c1e2280770bf279d46005ae2baae8e9adb1d84f5cf7e17ea57972c96d57699f64140e94261b12fb6b473ac2260a SHA512 c42efd6d1c5345281babccca909d18cebb65c74a0c3aa7c03e7d6944f9004e752fd2e6f4f29cb581ea38577f40479387835627fbeeac3bf972014891665009f0
DIST hypothesis-6.169.1.gh.tar.gz 9710711 BLAKE2B 8abedcdcba8a1d32e424a951047450be5ee33d8fa4fd8cd66e152c89abf60d7fb39fc0573e5778bf09442af2e30a648e4621208c7fe285a8fed670b9c37e15c2 SHA512 f1da6e1709e8e5eccf337cfeece87a197b402d62175a869b1ba4d1e1b06429d438cdf8b9ef8dc99c4928a0f24f8a7991d52272dc748bd2ccfe8655aae62556b0
+DIST hypothesis-6.169.3.gh.tar.gz 9711107 BLAKE2B 973dc2650033c5b31dd2b6e792353609ba51c362e0cd69e312a1731400ba83fdc2babe2be2c82c2fedc998036d15ee245c2f96a8cc4280c646da3b1268b5e46d SHA512 bee8c5489645835eb8371dd6e242ce51c07d937fe06138235637ebc57fc29b9b40272b45e92ce16b0fc43a1992510490189bd55bd635fe1270b3cb34d65069ba
DIST libc-0.2.186.crate 821883 BLAKE2B ebe7aac5f8937a8064c64a0d4dc72e5fc794080e09b96c6d245bdec0fd9a19d49ab38e25306e22e47564764cf5dcde45855237cffc70230a143eca2626bd5c3c SHA512 6a58e671ec6811dff9a0d7d4db8f37d38bcbca9efff20dad4706190e5cdb77b426567754bcf0ef0f2d0c31d6506401f724f3ca500b9bed57bb8605b1141ed690
DIST once_cell-1.21.4.crate 35010 BLAKE2B 9117ed1d478e626b7b7be2e3ff8b68a382b051112c7ca4425367bdae86977671f8b5c576131c82fb437740b6d98b72501f718f4172d39781decac2385e8fbd4d SHA512 af67669b0107f44268ba74c355200cb2ed1aab235a6989a8bc54323eb2c9a45677010f8672e7790edadd4c981e939436e0c3a099d33c06dce9c14fd5ede86155
DIST portable-atomic-1.13.1.crate 197001 BLAKE2B 6d0898c2a537a9bf204b7749cca5f5fddf280772b56eb7ce8fdd9cf7d71561137b26ef89f415c40277a1c89981333eef78e5bb4624515a294ba28fdaeb4c70ea SHA512 2a1b31ac9814af884640b3398ab824a9795c72d260527a0966b193113808cfbb3345d50cd1beaebb45863437c3d06c8706d34b26efecceefc649319a4bc274a3
diff --git a/dev-python/hypothesis/hypothesis-6.169.3.ebuild b/dev-python/hypothesis/hypothesis-6.169.3.ebuild
new file mode 100644
index 000000000000..d6e8b8e38d1c
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.169.3.ebuild
@@ -0,0 +1,143 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+CLI_COMPAT=( python3_{12..15} )
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+RUST_MIN_VER="1.91.0"
+CRATES="
+ cfg-if@1.0.4
+ crunchy@0.2.4
+ getrandom@0.3.4
+ half@2.7.1
+ heck@0.5.0
+ libc@0.2.186
+ once_cell@1.21.4
+ portable-atomic@1.13.1
+ ppv-lite86@0.2.21
+ proc-macro2@1.0.106
+ pyo3-build-config@0.29.3
+ pyo3-ffi@0.29.3
+ pyo3-macros-backend@0.29.3
+ pyo3-macros@0.29.3
+ pyo3@0.29.3
+ quote@1.0.46
+ r-efi@5.3.0
+ rand@0.9.4
+ rand_chacha@0.9.0
+ rand_core@0.9.5
+ syn@2.0.118
+ target-lexicon@0.13.5
+ unicode-ident@1.0.24
+ wasip2@1.0.4+wasi-0.2.12
+ wit-bindgen@0.57.1
+ zerocopy-derive@0.8.53
+ zerocopy@0.8.53
+"
+
+inherit cargo distutils-r1 optfeature
+
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+S="${WORKDIR}/${P}/hypothesis"
+
+LICENSE="MPL-2.0"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+QA_PREBUILT="usr/lib/python.*/site-packages/hypothesis/_native.*"
+
+python_test() {
+ # NB: paths need to be relative to pytest.ini, i.e. start with hypothesis/
+ local EPYTEST_DESELECT=(
+ # broken somehow (xdist?)
+ 'hypothesis/tests/pytest/test_constant_collection_timing.py::test_constant_collection_timing[True]'
+ )
+ local EPYTEST_IGNORE=(
+ # require syrupy
+ tests/cover/test_custom_reprs.py
+ )
+
+ case ${EPYTHON} in
+ python3.15*)
+ EPYTEST_DESELECT+=(
+ 'hypothesis/tests/cover/test_lookup.py::test_resolves_forwardrefs_to_builtin_types[sentinel]'
+ 'hypothesis/tests/cover/test_lookup.py::test_resolves_builtin_types[sentinel]'
+ 'hypothesis/tests/cover/test_lambda_formatting.py::test_modifying_lambda_source_code_returns_unknown[False]'
+ )
+ ;;
+ esac
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest tests/{cover,pytest,quality}
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/more-itertools/Manifest b/dev-python/more-itertools/Manifest
index d35a5a2a6880..820295059a1e 100644
--- a/dev-python/more-itertools/Manifest
+++ b/dev-python/more-itertools/Manifest
@@ -1 +1,2 @@
DIST more_itertools-11.1.0.tar.gz 145772 BLAKE2B 365972289c4cef7587a2bbf388862d330d44e874c7e3119feab492e67bea1539342cc1a8a6b1d34b6a56289a71cf7e1ac390268f138e855805ca1edb91dd6f3b SHA512 462085d7b103e64af94017c5886be4198eaee9abdf60ac3cb1c7a733571e1d2f6841c93d3263f74324c929c99f42420dea695269a6c066fe60815344009755e3
+DIST more_itertools-11.2.1.tar.gz 154133 BLAKE2B d1fec66483a5754b90d60ce623f3baee33995ae7102639c75f2f34c57c1a640757a8fd7241c593d904102cd4b6b57df7ce88cc446d28cd54b8bf7382331ec4ca SHA512 765f8efebc11e985d261f55d9ecd45c8b318a2de0e6e584b291d15f36e1e423119d90cde27d45c0c0f0330b3904afc7f2453f66f5c8d605fd44e234406027db3
diff --git a/dev-python/more-itertools/more-itertools-11.2.1.ebuild b/dev-python/more-itertools/more-itertools-11.2.1.ebuild
new file mode 100644
index 000000000000..121e46a65f09
--- /dev/null
+++ b/dev-python/more-itertools/more-itertools-11.2.1.ebuild
@@ -0,0 +1,23 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="More routines for operating on iterables, beyond itertools"
+HOMEPAGE="
+ https://github.com/more-itertools/more-itertools/
+ https://pypi.org/project/more-itertools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+distutils_enable_sphinx docs \
+ dev-python/furo
+distutils_enable_tests unittest
diff --git a/dev-python/pbs-installer/Manifest b/dev-python/pbs-installer/Manifest
index 721a919413fd..6165021d6a82 100644
--- a/dev-python/pbs-installer/Manifest
+++ b/dev-python/pbs-installer/Manifest
@@ -1,5 +1,7 @@
DIST pbs_installer-2026.10.1.tar.gz 81120 BLAKE2B f439ff09203b8b628184b587fdcb6e59c296406a22d6dc0d2b49eaab8d55f9621acef6e1d9b533a1be6fb417cf2d8a64d940fc57e4f681f256d4a907df41741c SHA512 2ee04905365d3cc627dd606a64ea4b9be96dc63508f9a86b2f7b944ab4cbb07a09f8336366a0780aecfd2cab90b66416ee01a6b9d7e72581ec7ec3ad0cd594cd
DIST pbs_installer-2026.10.1.tar.gz.provenance 9959 BLAKE2B dbd0e4d6682ea9f692f7c372e1136cfffeaa5dca96c15d56f297359b24bc7fbc12ae54b97750febe8130cc92bb09d2b46054bd942c05ba4d7978d8114769c84f SHA512 f9a8af41b085d413989577c992be521c6237135811b6a2a83af04d1526188b9c4293087a246ef99d61548ec33b169bf5a9dca97b708a7284af8e9ea7e1b12272
+DIST pbs_installer-2026.10.13.tar.gz 82375 BLAKE2B a84a7e86b809cc2600b6ac5fd87f214519d3d866c01c421976b3496f6ec05139aeac4707c1b550d20146720211556a62168a7c7a21b8d38e9e95e770e913cceb SHA512 9fd739f02ee1617915670b88527333fdf0ad727640c1475cce60c1855b9065566b7d7fdebc141773f6c037c870950034e710a58e4a909d90a545611581ac1dca
+DIST pbs_installer-2026.10.13.tar.gz.provenance 9835 BLAKE2B d7990b681753b6bb50fd3e06190d064636021b511e3c013d61a8a7d908d476a1329cdd188f91b9647bf2dd9db15bcb7e397d3364a52d9e18db0daa05ace28b16 SHA512 2b6355efcc9022e5a2275b3cb6fcc6d50d8a0d1db0bd4ad4d7696f577267fd71bb64cef4007acf6003227e7c5a487d8f028c69d7727b1269d672ef550a900c02
DIST pbs_installer-2026.10.3.tar.gz 81131 BLAKE2B cc8e52bc72ea442ba1854d9a1f9aeada361def24b145f5cc68885740f8472abf34e48619f780bc11bceb0131a6c1da0dae593df91d1777380554a3059547d23a SHA512 d05194ac0b36f0c510cbe90263bf7b5d4a8cfa7f55a170c128905cd291d026a64a757217a41b1a9c36aed51c353a32ed8c27cfda210f51686d603eee4c18a2fa
DIST pbs_installer-2026.10.3.tar.gz.provenance 9994 BLAKE2B eb89d404d27042c7428187a46ddd036d6c4df7730e85519bc0e8fc8aeea2d30e3e34d396e0f5d37ad59a6c7899f9c244ede7da68e32f36a016af9e0f385f9c6e SHA512 4912cdd2730b36c2f015df898c2d230b3e0db2253e27177edf09f4f628146aef721e770b8d5da49a288f554d37e1633956bdfeb97b54d5cc76c47de63ac0cb28
DIST pbs_installer-2026.9.29.tar.gz 77902 BLAKE2B cf42ecc98a55c39a0a90cc82f8fa082b856cf15e74bca224627defa2113ad6b662d57bcf0dc1dcfb86a9cf8ae87555c2585c029e3260b8b55c4dba163c45bf07 SHA512 108c2d89e94ffaefd297ce372b8d3805f46f7555b53f95863e086b853f23832a342ae5271ecc712612e376687808b6ab8957731b8f317613ad34df8b46ed8998
diff --git a/dev-python/pbs-installer/pbs-installer-2026.10.13.ebuild b/dev-python/pbs-installer/pbs-installer-2026.10.13.ebuild
new file mode 100644
index 000000000000..ad138f3a6f5d
--- /dev/null
+++ b/dev-python/pbs-installer/pbs-installer-2026.10.13.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYPI_VERIFY_REPO=https://github.com/frostming/pbs-installer
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Installer for Python Build Standalone"
+HOMEPAGE="
+ https://pypi.org/project/pbs-installer/
+ https://github.com/frostming/pbs-installer/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+# httpx is needed to download builds
+# zstandard is needed to install them
+RDEPEND="
+ $(python_gen_cond_dep '
+ >=dev-python/backports-zstd-1.0.0[${PYTHON_USEDEP}]
+ ' 3.12 3.13)
+ <dev-python/httpx-1[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.27.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests import-check
diff --git a/dev-python/pycryptodome/Manifest b/dev-python/pycryptodome/Manifest
index 2847e9cd7434..cf2d4ffa0e46 100644
--- a/dev-python/pycryptodome/Manifest
+++ b/dev-python/pycryptodome/Manifest
@@ -1 +1,2 @@
DIST pycryptodome-3.24.1.gh.tar.gz 19739898 BLAKE2B 7db01c5bd78f14d61620272d6a15105e3c640b933263a4720d5d047c55a0bd57e984fc150f96469aa29b7947b0fb62dbbe3e199587d146b08f30af28d781600b SHA512 90df69c1f003d9a06391709e09d1cb3124053c4eb4a062cba01e6048c1fc07ba29db36b94dbafc6e5f7f6f173321b8e687358d8a3cca88921234e74f46c17c37
+DIST pycryptodome-4.0.0.gh.tar.gz 16296945 BLAKE2B e6380f4638013d528aeb45d9db1e5c6509de0301bb7bdde07dfb363d0bc833dea72edcb43cc0a1c4ce2b39ef6edf67287494c90d7f68fb0d6697ce1f77f7c3fa SHA512 536522d15b29646cdfbeae1d3d4d23261fe112392858809df117b71f3293af4b7705f9a8421a4ddd7dbf5a5df117852ce4bc506dbe30b241de0ded36c7ce6033
diff --git a/dev-python/pycryptodome/pycryptodome-4.0.0.ebuild b/dev-python/pycryptodome/pycryptodome-4.0.0.ebuild
new file mode 100644
index 000000000000..23dee27e3bc1
--- /dev/null
+++ b/dev-python/pycryptodome/pycryptodome-4.0.0.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="A self-contained cryptographic library for Python"
+HOMEPAGE="
+ https://www.pycryptodome.org/
+ https://github.com/Legrandin/pycryptodome/
+ https://pypi.org/project/pycryptodome/
+"
+SRC_URI="
+ https://github.com/Legrandin/pycryptodome/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD-2 Unlicense"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+DEPEND="
+ dev-libs/gmp:=
+"
+BDEPEND="
+ $(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*')
+"
+RDEPEND="
+ ${DEPEND}
+ ${BDEPEND}
+"
+
+python_test() {
+ local -x PYTHONPATH=${S}/test_vectors:${PYTHONPATH}
+ "${EPYTHON}" - <<-EOF || die
+ import sys
+ from Crypto import SelfTest
+ SelfTest.run(verbosity=2)
+ EOF
+
+ # TODO: run cmake tests from src/test?
+}
diff --git a/dev-python/pydantic-settings/Manifest b/dev-python/pydantic-settings/Manifest
index 1e0da2b8e275..dede56afe0f8 100644
--- a/dev-python/pydantic-settings/Manifest
+++ b/dev-python/pydantic-settings/Manifest
@@ -1,4 +1,4 @@
-DIST pydantic_settings-2.14.2.tar.gz 237700 BLAKE2B c38ade96748b87204ac147907261f121ee5a64236077095658b246f288c71d898ed917f03bf781a0571454b2b904cbe2ee325b86c20f0bc0c6c121c45bd7da08 SHA512 50ec63a4e70bf41f5cd4923c7d4802a9b94de2f50c364f0dec2f9fb2833ef7b22c13f5c5e39004b2b38231f56151b2c1d5f50d547737ec99578840d5e6932c5e
-DIST pydantic_settings-2.14.2.tar.gz.provenance 9781 BLAKE2B 012ca046a4ddc054cc19429dae96f995875db49a89e6d6e49870e518d3dafba192d522c27e286aaaa963de366f66728ed8e545e5dc20df456e23cbb225061cac SHA512 5129115c17ea936dd82fd3a0f4cc5203af0739a5361087d8944c868aa3b2080e355954aeaa1025337a3e93245054c38a6671640a4f9409e20ac4a8cdc61ef0b6
DIST pydantic_settings-2.15.0.tar.gz 261253 BLAKE2B aa1157d8ec21ecde15039d47f42bb64da6af910f6693558c9e9ea9bca5ac13b43a38349c688c1ef43441734036d1d8b211646f6db9950ecb275ac212c51b7eac SHA512 0b8ee285df6d1b89429e2156ed5d462d43ea0aed9fe684cf4adb1d240c2174ea315f8937465f682351da18f93d2454cace52ccb4bce30f6fe4e6cf75069296db
DIST pydantic_settings-2.15.0.tar.gz.provenance 10063 BLAKE2B c3641f3e2a7c3228432642986199e848da9fdea371e32de40c8ebd9dd0b3ba8ae27694c116fa04dedf8a37fb5a780d8a84777d848a4838d724a180ac66e94473 SHA512 a403278deca993c39e789b02ecc9e2493e1220f5e75c4324abddbcd4a0c9e9f2f7f8ed1aed36c3f5687a031789fe17fd2f5a6b0fbc8ec6f3641db3fe64f98255
+DIST pydantic_settings-2.16.0.tar.gz 301031 BLAKE2B d29990234fb6dbdd314cad75eb27df29fbbf01efeb068bd1b31c58daefbb2e2a7789304b1decf2e6a3ec48fc068189663fef633775b6efbf1f0d19d60c4f68a4 SHA512 ab66b0d217d8b4a95ba1471da8d4732632394fb23e128f774b46bf53155af824a16a7bbbaff047a992aa4db36cce9a4026cde467b5bb25c610fd316837c77100
+DIST pydantic_settings-2.16.0.tar.gz.provenance 9906 BLAKE2B 186a7fd34d1f5c2e1aedb0fe84abed1148742318f09c5e1ce3f0b6fa9d3d371766f9ceb5e1c9c34c80fb7212c483c4beafd17f3884a2c248e0d875a19e098d60 SHA512 36fe224d730e77b3dbf521b94149bfdb6fe74a94566f230b45bac3303da26163b2eef4dd21a90316df142067650df31df04bc9f85fc7a39033953fcec4a553e3
diff --git a/dev-python/pydantic-settings/pydantic-settings-2.14.2.ebuild b/dev-python/pydantic-settings/pydantic-settings-2.16.0.ebuild
index 04d77d519415..1971884da040 100644
--- a/dev-python/pydantic-settings/pydantic-settings-2.14.2.ebuild
+++ b/dev-python/pydantic-settings/pydantic-settings-2.16.0.ebuild
@@ -17,11 +17,12 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
RDEPEND="
>=dev-python/pydantic-2.7.0[${PYTHON_USEDEP}]
- >=dev-python/python-dotenv-0.21.0[${PYTHON_USEDEP}]
+ >=dev-python/python-dotenv-1.2.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.0.0[${PYTHON_USEDEP}]
>=dev-python/typing-inspection-0.4.0[${PYTHON_USEDEP}]
"
diff --git a/dev-python/pydyf/Manifest b/dev-python/pydyf/Manifest
index 825a96aaae6d..2c7a3bb4c8e1 100644
--- a/dev-python/pydyf/Manifest
+++ b/dev-python/pydyf/Manifest
@@ -1,2 +1,4 @@
DIST pydyf-0.12.1.tar.gz 17716 BLAKE2B fb87f69be503f2bcc92a98315212a6ebd238e541cee0cc47bca68faefb9e417a8574498f94e0dc514c0d2ced12e318af9a40e2d4876d534bc6f32ed63f751f6d SHA512 c241096c8e1674d80c62be40b02d7c28dfb59cb8e82e6029c6b246a65d2863be236fb1a45f3369adc6e055143a891e9aa170b9ea0dd06ac3483c92a2b86bb984
DIST pydyf-0.12.1.tar.gz.provenance 9574 BLAKE2B ec9ba4e745079c2db636ecadd99b03ef8799aec79bec946d1ab5f14dcc69910752f5cb46f39117343d7c909ba7ac06710a2d00ea65be945e744db13bbf090f86 SHA512 11b700c1447ac3b92ac7a61738c789543c338459d82a6beef4b8c0043e8ece57b6fd77f7796ff55fde8cc3b296dc9c692b304afd9d1fe45f51325b1ef321bb12
+DIST pydyf-0.13.0.tar.gz 19566 BLAKE2B 8f563fed31d5fa40fe0ed60446b35ca6367b085506310257277103e5acfa0a4318b4c8dd4d28a3d82afb3375c291359309cc3839805ffb90e3063d4fd6946ea1 SHA512 678029eac3e44eb725695ad98747116ea2b11777708225ed8d92a800757830c0e29f5ab260f3193c12046014445a36b69ace9369c54848a9aa149759e02e1bb1
+DIST pydyf-0.13.0.tar.gz.provenance 9852 BLAKE2B 16fde14a1219cabf9bfee2ef8495e806617741e1739b627be9b807aca92a58f84734e7573f48bf19cf63923b3c5365bbac21b328d2965ec7db843f7db8b72c6c SHA512 297ff2cdc80a30de8db1f66505801dd06900408b312039ecd5ef39317e4bee3d29c09c51bb560083fa89405b8338beb9ab2e7f621d9509836856167876a78893
diff --git a/dev-python/pydyf/pydyf-0.13.0.ebuild b/dev-python/pydyf/pydyf-0.13.0.ebuild
new file mode 100644
index 000000000000..44cf2169842a
--- /dev/null
+++ b/dev-python/pydyf/pydyf-0.13.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYPI_VERIFY_REPO=https://github.com/CourtBouillon/pydyf
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A low-level PDF generator"
+HOMEPAGE="
+ https://pypi.org/project/pydyf/
+ https://github.com/CourtBouillon/pydyf/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+BDEPEND="
+ test? (
+ app-text/ghostscript-gpl
+ dev-python/pillow[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ epytest -o addopts=
+}
diff --git a/dev-python/pymdown-extensions/Manifest b/dev-python/pymdown-extensions/Manifest
index 48ca12a11017..3c7ec609bd5c 100644
--- a/dev-python/pymdown-extensions/Manifest
+++ b/dev-python/pymdown-extensions/Manifest
@@ -1,5 +1,3 @@
-DIST pymdown_extensions-11.0.1.tar.gz 857113 BLAKE2B a585fd5c325fb4b146ecdddf9204626218fbdd9d4691a06bbe14a564fc2f93c4b8f22ba267929ce23229abbd2b08a2eadb09f3d01185ce88177a9a49e5a865ca SHA512 c95ef9cdb073b1a11f0a78ca82c49e0b0a9c57a301e599bce29a99995ce5a8415530979271ca76b1b0bf7ab3d7f348b9ef0ba7b36c1e19e6121da379c6163484
-DIST pymdown_extensions-11.0.1.tar.gz.provenance 10025 BLAKE2B 11c409e59669f3219fdf115b6593a7f1e40ac7725ffea84e0c3b25d468774a1bd5513df54e7885443631e64d1dcf7c2ef0a521547dca9ca8cf092a4333fc4161 SHA512 5a0515a30b1e65d73fc01e405a5fd0b470259273f1d8c3c152f2f8d2a5ab86bc72830d5c8b08b40fba564cfd0b69fd556524042412ea022cee3528b117aa7083
DIST pymdown_extensions-11.0.2.tar.gz 855419 BLAKE2B e7a73d571f8334a829953c7df6796f930558393c7c3ae272a779ea5271f6112f2163384046c95feddc2365333b6134df41b71e078d213e7ebab0be4d0c1aeb8b SHA512 cd84ba04447bee2f2953453f1045e79c8495b5db0442227a8cc0ef348a9bb64e99e4ac0232032574967683e88b0db21b7eabeb8aa4e6edafde843e07438c5b5a
DIST pymdown_extensions-11.0.2.tar.gz.provenance 9980 BLAKE2B 52445950a371bf69ab7ebbe1f8df0e9e689fead80f6aa1b8e356c2a851578c149ffe7ef205c78683b73131a4b463c5867e449383e166475e1bbd5f8249fbb71e SHA512 7940ae93bca9f3ff8027db324e43101871fd5768ea7c59aa25856e10f333c6bce30ada9da383fb46c7f28dd95b6862e296b998d78d3f84eabba06d9ff30ac3c7
DIST pymdown_extensions-12.0.1.tar.gz 866904 BLAKE2B 99dc77c0cf21fc3ae37f9ffca62cfc59f295772ea76cebc4374d07b87f898ac9f4bd1a753ed6706b222a39a1af00238c6d1bc86bb584855ed8d76fdbaf014730 SHA512 bdf73e2fded2e6533fb5c06c20d9aad0a9091d458567de532e2d0a526d6199fbf6e7dca67e74b2b16f7e949a95156653861191b7aae4d683d2d5dce4af8d788d
@@ -10,3 +8,5 @@ DIST pymdown_extensions-12.1.tar.gz 868245 BLAKE2B f3503d27b7c819cb88c2b3325c80c
DIST pymdown_extensions-12.1.tar.gz.provenance 9948 BLAKE2B 30fc0aec28f48da59c4a236f7b5f5802970975781fb446f01e0040f4ba77f246fde8b3c22a3a149b9d15f01db5d3724029d08f8edce20d0211c6cdcc6fdbf8fe SHA512 cbac49f1d07b4f99f01a649d22ff4ed31bb8e08ac322706265a9e9f2509de841e515015f1378bd55ec117e15a972116823f2f67c04d5e0be1b2532d48d11feef
DIST pymdown_extensions-12.2.tar.gz 870226 BLAKE2B 863911fdcce9dd869374c39bf619262c506232f90bfdd30af9507a88fa22e65c5c464527476d62048f0599ace1a17e4badf50995ddb60cde8c9b77662ba55f3f SHA512 3313070cb2333ad79a1e8473d42b58c916e038550513a3fef3b757e0233b4ca49b736343a12e71caab49f17b0431ebf7c4bcd427c85bc12853993590abdcbb58
DIST pymdown_extensions-12.2.tar.gz.provenance 10067 BLAKE2B f9813283c6dedcdc6734941cafa437665f1ba831a1814bdba4953e4e1191065cf2e67c803312d2bd1ba9914a23ea88dc16883e6a05692ceba1896364780f4b43 SHA512 60233f1016da17697737158a3c06fb3ebf988125556ea4d0fe884cfbe106cea922bc17e4c0ca3b0f2499958e28c0de69f505ed01d51cd0bf81421e2f47042285
+DIST pymdown_extensions-12.3.tar.gz 870532 BLAKE2B e8fff15828d98845b7b2149cc3ba1f4fd491bb7846978d3202c29f1a7e858a374be37c09af4a446339fe23b68e97a4b943ecaabdc97056744468448053d07f9d SHA512 ce7e6354e0da496e7fedc900dae61b148dccb3d72fafefac56242dda912650de7d18e2fa06b52d483b6e1f80358bc5d16926677e7c7e35698fcfcaab1a47254e
+DIST pymdown_extensions-12.3.tar.gz.provenance 10259 BLAKE2B fe286fa52611a09413880b041be299e82cccca735f8dcda6fed3ca0715e624da53c4f7b84f0beb2a0769ebb68374bdd2797da19c38ad151bddda38149543b4a8 SHA512 531bc16a33edf63258cc1ee0236b2b0ee7b715d38e54c5d5bf68779fc4ad44efd339ea095f567b0364aac4841f18d320587deef6d6238b4700ce1f86651b9a51
diff --git a/dev-python/pymdown-extensions/pymdown-extensions-11.0.1.ebuild b/dev-python/pymdown-extensions/pymdown-extensions-11.0.1.ebuild
deleted file mode 100644
index 29ef1f17706c..000000000000
--- a/dev-python/pymdown-extensions/pymdown-extensions-11.0.1.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYPI_VERIFY_REPO=https://github.com/facelessuser/pymdown-extensions
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Extensions for Python Markdown"
-HOMEPAGE="
- https://github.com/facelessuser/pymdown-extensions/
- https://pypi.org/project/pymdown-extensions/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv x86"
-
-RDEPEND="
- >=dev-python/markdown-3.6[${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
-"
-
-BDEPEND="
- test? (
- >=dev-python/pygments-2.19.1[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/pymongo/Manifest b/dev-python/pymongo/Manifest
index e6703178ab91..2ac7502b4112 100644
--- a/dev-python/pymongo/Manifest
+++ b/dev-python/pymongo/Manifest
@@ -4,3 +4,4 @@ DIST mongo-python-driver-4.18.0.gh.tar.gz 2821886 BLAKE2B a7905ba2c5ef44ffc0d3d9
DIST mongo-python-driver-4.18.1.gh.tar.gz 2824031 BLAKE2B 16147601da6004c0c87adefe9bf74ce21bcda1a3cf25c0c0ab9d5dc1542b92c1581fa1bb1c6f7024615990e8142ab87bc3fe665ec8cac6df9f48b0accaf9acc7 SHA512 2dd0b300cbfdbc8de197fd5ee21f5bca210b5df1efb1223dd3aa50cddae34b87fd16799450d8126769e50c97ce203d69e9bb1aa4b67a16f63e53a933db88a707
DIST mongo-python-driver-4.18.2.gh.tar.gz 2825405 BLAKE2B 7e1f59ae6473232a1fad4d00b722d85d72584faf3c2fc320669474242e62ed8bf12e07a96c360be86d62e446b4cc33b62c57b6ad319ba7989071404eacf52a65 SHA512 93456d698fd867410d6a00550b7d9739b13a8907b1e451501402a878c907de1525db7648d7c24bf90144982a3f525e2ae5352c2ee677776303bda495b5982c71
DIST mongo-python-driver-4.18.3.gh.tar.gz 2826394 BLAKE2B 830bd301aa011d1e21e61e29df699b4d64bccfc3fd49a6617ebdbe169ad7799b8a4a04dbeddbc570f8a92b22b7f078f062382ada27e8fdf116c86965876aa70f SHA512 a4f0f1ee3474a73244916b1352ad4fbbc372dfe0a486438fb4a843eecb03e4daec6d4902bcbd890ad585dac80bb2a2c7d3c13710b96f0330f5fc28e14ec3a9d4
+DIST mongo-python-driver-4.19.0.gh.tar.gz 2765196 BLAKE2B cf19053f5baa9d74d9e3716fa3c8feb48b75660842598c657d0c0c1b3a0d55fc0e8f6354d9f58582066ace9a6c4cd193df9a952797a83e161d67550cd17e7e93 SHA512 b62fc4daeff113f83049af704f1aedacf8a29eec1657b1f967e3c8dc3a2e65cf578dba096a3d3a8f5fcb8e7e233fb9b3b9a0e8a0df668d1cd2cd77ab40e42961
diff --git a/dev-python/pymongo/pymongo-4.19.0.ebuild b/dev-python/pymongo/pymongo-4.19.0.ebuild
new file mode 100644
index 000000000000..a1e9a9e053e1
--- /dev/null
+++ b/dev-python/pymongo/pymongo-4.19.0.ebuild
@@ -0,0 +1,205 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit check-reqs distutils-r1
+
+MY_P=mongo-python-driver-${PV}
+DESCRIPTION="Python driver for MongoDB"
+HOMEPAGE="
+ https://github.com/mongodb/mongo-python-driver/
+ https://pypi.org/project/pymongo/
+"
+SRC_URI="
+ https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="doc kerberos +native-extensions +test-full"
+
+RDEPEND="
+ <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
+ kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
+"
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ test-full? (
+ >=dev-db/mongodb-2.6.0
+ )
+ )
+"
+
+distutils_enable_sphinx doc
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
+
+reqcheck() {
+ if use test && use test-full; then
+ # During the tests, database size reaches 1.5G.
+ local CHECKREQS_DISK_BUILD=1536M
+
+ check-reqs_${1}
+ fi
+}
+
+pkg_pretend() {
+ reqcheck pkg_pretend
+}
+
+pkg_setup() {
+ reqcheck pkg_setup
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+ # we do not want hatch-requirements-txt and its ton of NIH deps
+ sed -i -e '/requirements/d' pyproject.toml || die
+}
+
+python_compile() {
+ # causes build errors to be fatal
+ local -x TOX_ENV_NAME=whatever
+ local DISTUTILS_ARGS=()
+ # unconditionally implicitly disabled on pypy3
+ if ! use native-extensions; then
+ export NO_EXT=1
+ else
+ export PYMONGO_C_EXT_MUST_BUILD=1
+ unset NO_EXT
+ fi
+
+ distutils-r1_python_compile
+
+ # upstream forces setup.py build_ext -i in their setuptools hack
+ find -name '*.so' -delete || die
+}
+
+python_test() {
+ rm -rf bson pymongo || die
+
+ local EPYTEST_DESELECT=(
+ # network-sandbox
+ test/asynchronous/test_async_loop_unblocked.py::TestClientLoopUnblocked::test_client_does_not_block_loop
+ test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
+ test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
+ test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
+ test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
+ test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
+ test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
+ test/test_client.py::ClientUnitTest::test_detected_environment_logging
+ test/test_client.py::ClientUnitTest::test_detected_environment_warning
+ test/test_client.py::TestClient::test_service_name_from_kwargs
+ test/test_client.py::TestClient::test_srv_max_hosts_kwarg
+ test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
+ test/asynchronous/test_dns.py::IsolatedAsyncioTestCaseInsensitive::test_connect_case_insensitive
+ test/test_srv_polling.py
+ test/asynchronous/test_srv_polling.py
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
+
+ # broken regularly by changes in mypy
+ test/test_typing.py::TestMypyFails::test_mypy_failures
+
+ # fragile to timing? fails because we're getting too many logs
+ test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
+
+ # hangs?
+ test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
+
+ # broken async tests?
+ test/asynchronous/test_encryption.py
+
+ # -Werror
+ test/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
+ test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
+
+ # fragile to timing? Internet?
+ test/test_client.py::TestClient::test_repr_srv_host
+ test/asynchronous/test_client.py::TestClient::test_repr_srv_host
+ test/asynchronous/test_ssl.py::TestSSL::test_pyopenssl_ignored_in_async
+
+ # requires pymongocrypt
+ test/asynchronous/test_kms_connect_prose.py
+ test/test_kms_connect.py
+ )
+
+ if ! use test-full; then
+ # .invalid is guaranteed to return NXDOMAIN per RFC 6761
+ local -x DB_IP=mongodb.invalid
+ epytest -p asyncio
+ return
+ fi
+
+ # Yes, we need TCP/IP for that...
+ local -x DB_IP=127.0.0.1
+ local -x DB_PORT=27000
+
+ local dbpath=${TMPDIR}/mongo.db
+ local logpath=${TMPDIR}/mongod.log
+
+ local failed=
+ mkdir -p "${dbpath}" || die
+ while true; do
+ ebegin "Trying to start mongod on port ${DB_PORT}"
+
+ # mongodb is extremely inefficient
+ # https://www.mongodb.com/docs/manual/reference/ulimit/#review-and-set-resource-limits
+ ulimit -n 64000 || die
+
+ local mongod_options=(
+ --dbpath "${dbpath}"
+ --bind_ip "${DB_IP}"
+ --port "${DB_PORT}"
+ --unixSocketPrefix "${TMPDIR}"
+ --logpath "${logpath}"
+ --fork
+
+ # try to reduce resource use
+ --wiredTigerCacheSizeGB 0.25
+ )
+
+ LC_ALL=C mongod "${mongod_options[@]}" && sleep 2
+
+ # Now we need to check if the server actually started...
+ if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; then
+ # yay!
+ eend 0
+ break
+ elif grep -q 'Address already in use' "${logpath}"; then
+ # ay, someone took our port!
+ eend 1
+ : $(( DB_PORT += 1 ))
+ continue
+ else
+ eend 1
+ eerror "Unable to start mongod for tests. See the server log:"
+ eerror " ${logpath}"
+ die "Unable to start mongod for tests."
+ fi
+ done
+
+ nonfatal epytest -m "default or default_async or encryption" || failed=1
+
+ mongod --dbpath "${dbpath}" --shutdown || die
+
+ [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
+
+ rm -rf "${dbpath}" || die
+}
diff --git a/dev-python/pytest-check/Manifest b/dev-python/pytest-check/Manifest
index d8ce27399f42..332ef43831e1 100644
--- a/dev-python/pytest-check/Manifest
+++ b/dev-python/pytest-check/Manifest
@@ -1,3 +1,4 @@
DIST pytest_check-2.9.1.tar.gz 41394 BLAKE2B ac4a9b88bbf0da7162b7948d7305335189893a0ad9a5591db206d7e332cfec82763a7a6f07124a1e405555f291abbc35aba5dcc4502223165d4fbc3047d45dd3 SHA512 39d8d8d2b9377b79fa18106bb91c0a662ef1823cd58a8ef681fa07a9f97ce435ebad9063397ed72bbca53f0235199ba242b0708ea65a07345d515cfa22b1885c
DIST pytest_check-3.0.0.tar.gz 48136 BLAKE2B 6cc899d9ef3c7211b25be33fcd3bad264f589ad9a8f478305b81141eef72996897ae15f1cdbf21b646de55082cf3575aba23b47d83e12a51839068b1345254ee SHA512 95a3e6e7ae3033c13b29c94375be0f2c65fa3cbd1ba7ce0dbaaab7a1cc0d742673abfbbb156b08c69ccbae0904ec075ef88e49a8cad917f88832a2df6a2534ee
DIST pytest_check-3.0.1.tar.gz 48520 BLAKE2B 82b2793ef35601ebd50914846ee364cd8255f81ffbeca0a09444de07de29a04d5d1d7da5adc55a85d347d5692c2b93341b1b3bb7ffc0b6353d6aefa8c55d1ea3 SHA512 cac4c060de85e2ef632833c1fb9255ddc8f61871c321b7ab3c9df191b9818ec83203a466f1f9bdd07571fd30e7924c2311a50bb3ae211856a41313cd2485917e
+DIST pytest_check-3.0.3.tar.gz 49020 BLAKE2B 511fb0888f9586cba4e6a5e6c4cdcf846338cfebeae8ac49f9236082eacce3ff0039cd92c20f1fc29dbe96576ec7259f076b2ae56200b98ecbe1b31fbdb65ec1 SHA512 b737a8f8e8ce7e1c5965e7862e53e92f4f2065a28b2cea3a241bdb15b28754d8e24b2c68ff5182205a26f665e68d03277097a96da761c85ce8380d2dca162110
diff --git a/dev-python/pytest-check/pytest-check-3.0.3.ebuild b/dev-python/pytest-check/pytest-check-3.0.3.ebuild
new file mode 100644
index 000000000000..4b61f86b9463
--- /dev/null
+++ b/dev-python/pytest-check/pytest-check-3.0.3.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="pytest plugin that allows multiple failures per test"
+HOMEPAGE="
+ https://github.com/okken/pytest-check/
+ https://pypi.org/project/pytest-check/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" )
+distutils_enable_tests pytest
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index 28bc0bd47881..955208ef979c 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,2 +1,2 @@
-DIST sqlglot-30.21.0.tar.gz 6064227 BLAKE2B f68dfa2c03ed44f3cf12d5654ab9ba95ccc7ca188018ded9e1e2edbc1e73c4eb3a37041dd2bf35269e8f4127093ad26e31936423c75eb147de5e03fde60137af SHA512 3ec6790fed025087b14c885a29a5e84c998a33fcbe4676592ec920cac69d07e72ae3e0edf2c54405eb097a1569dbb70bf8ea068e9e680054d70622e782b97356
DIST sqlglot-30.22.0.tar.gz 6088770 BLAKE2B bca7d80d5fde475419a4bae31dca2f1be4a4e5b90d2312d9c9b283bbb2927c013a0f849be17142860124b3f830e3adb4b7854c4a4a2ecb2ea1d961ed80145bd8 SHA512 40186858888fe174ec9371b78bd8f72fb04c371341f5ce746b10026feb59530c0477f7f9022edff37ef447e5cb9ef60cc9d20804aa69ddd8a88de9a68b8d0a0f
+DIST sqlglot-30.23.0.tar.gz 6108071 BLAKE2B aa470c23542deb3793b208746e480cf642bc1aaea00c5f2a0049f0ad1401e6b50b492826a406a8d7f21607618db57edd9923ab11ad66ee457cc812903292e678 SHA512 dc4c43c751a1cfa2fd703e5d047d8b1ba5eb143996de6c235c165ad8c77180572946bb1ff59c4c4bdf8f441a3e3a08f81a07f147788e2134476214437867a6a2
diff --git a/dev-python/sqlglot/sqlglot-30.21.0.ebuild b/dev-python/sqlglot/sqlglot-30.23.0.ebuild
index 063fa5096326..063fa5096326 100644
--- a/dev-python/sqlglot/sqlglot-30.21.0.ebuild
+++ b/dev-python/sqlglot/sqlglot-30.23.0.ebuild
diff --git a/dev-util/pixi/Manifest b/dev-util/pixi/Manifest
index d92e055fa525..36d54a489852 100644
--- a/dev-util/pixi/Manifest
+++ b/dev-util/pixi/Manifest
@@ -1,6 +1,6 @@
-DIST pixi-0.80.0-crates.tar.xz 78344160 BLAKE2B 4965008f0b0185ef729fa728215d7ae72c2b8357f62f75a1416b58be90e9ac0b2f21315d803d62e84b13cde063ea4ec7e7853e6dc3f4023f5bbf86d6c2335f18 SHA512 3a8dbbdc75148add5a5ad8b3f3211ef48976c612a0b4a77560b93766bcf15f6a0e0ea5bd4d9b0d3ad09bfb92b7f5e27093ece3bf469472d3ebd4db836507b76c
-DIST pixi-0.80.0.tar.gz 19925474 BLAKE2B b50d9698b957df6048e2ef510c1cd55a6275d7de5b3d85f94fd9acfff388ab634523642f62e847ff2bbacfcff12c765411f2acb49c554605ab737873bce19b14 SHA512 b33f4260b6487af1ad2cf69dad9b67f829fc10dd2f32e89819e7c7bbd4c94e3c7eda70ddb30e269a63817d0745bc75194750a3219d3feb5c3c8d86f3fa7a9c10
DIST pixi-0.81.0-crates.tar.xz 78356060 BLAKE2B 5eb3734abba07c894ed9ce529b2e55e088f45c9a988c7858cc4c1447a68f33be25c6b65eff54a259fb408aa20d314d0630b36b4ec6a68cc1eb29fc6d63bdf5fa SHA512 7567bf88a5e4faf9d255c6f65cf8a59b53fc68466799159ed7a89527d79300b5d91775dfc92b3a5aea7e2d5acd9105499c00d9960cd3be1cf3726fd2ba4ad7b7
DIST pixi-0.81.0.tar.gz 19936301 BLAKE2B 583dcc8e6d8cf8c6e18756df758caeb192c9a41471ec134d79c689470020dbbeb06fee3f45704d372ae68ba7baba45a2f1f47c7936f67711d5fb37ecd8c822bf SHA512 2c087c5b9acef2be70f5f0594df548dbf6328eaf18a512e2c48a6649b1b4173e35e28514763dbbabdecbb12875a4cc48465a61313705e44d5750fe02f86e401b
+DIST pixi-0.82.0-crates.tar.xz 80794952 BLAKE2B d5231bcb0619b3f8ede401c331394a4cd6c4eb69d5cb4edb631b36885df56556908cd77dcaf5a6a6c9a93b3fe0ae4633a43439c5afefee502b317398f3891072 SHA512 ae355cc78678563e274b801dd3c7697e72e5471b2354d3e601bf5486422c17ec825f379c3c926442b98771ffe0b98149830319a34836d1b9be13bc9a2fc74d0a
+DIST pixi-0.82.0.tar.gz 20009719 BLAKE2B 207fc1ce4c201921edfb2b9f34c0335099eeec0f37e31617029949d95ef4c42a4b8055016aab2b9e17bb57f5e1fef758382551138e0084ed951eafe1335e3adf SHA512 d7a6723b1cf75063f658d92c0617777b3d146d5417aaa660a31f219a6b0a677d25370ceb0471e816538f9ac7c03113e9f10df6f8e6fecbc10017a1e6eb74ed89
DIST pubgrub-d8efd77673c9a90792da9da31b6c0da7ea8a324b.gh.tar.gz 100042 BLAKE2B cacdd77783aae1a94c3aaea56c2bd47b22f13ca34eddcef53b5d205244a213eff2934db03965532085c1aa6892b27bbbabfc19513f62936f8ac1faa466570dd4 SHA512 3a2a146fd9d9b458dced6563a1f5674e81e8ba36de11be5c189b0c76b6ede6f32957f48fb0978b97b0892768822c6c4c32c6870141e8fc1ea5d8b8f7d8b5b464
DIST uv-3cffe97c2e48c9e49422c738da3af95919dd0bf5.gh.tar.gz 5303746 BLAKE2B b45e64d4c036c2fb54ca3e82a1ce953363f10786e76bb1128e20a6204c03dff3e0d18e3ca652320f81d78b94cebdaefd463b45da639260659e00fa0e2cd3d1f6 SHA512 444defce55de8bca79d9d572dc5231198c23df07a43048c7b621496d35ea46fc274b3aa3eb97fcfc4a045ac81ab540dcf9657ef1d74d5a9535e1a86a68e7d9e6
diff --git a/dev-util/pixi/pixi-0.80.0.ebuild b/dev-util/pixi/pixi-0.80.0.ebuild
deleted file mode 100644
index 8913b7bf42cc..000000000000
--- a/dev-util/pixi/pixi-0.80.0.ebuild
+++ /dev/null
@@ -1,163 +0,0 @@
-# Copyright 2025-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-RUST_MIN_VER="1.95.0"
-CRATES="
-"
-
-declare -A GIT_CRATES=(
- [uv-auth]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-auth'
- [uv-build-backend]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-build-backend'
- [uv-build-frontend]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-build-frontend'
- [uv-cache-info]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-cache-info'
- [uv-cache-key]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-cache-key'
- [uv-cache]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-cache'
- [uv-client]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-client'
- [uv-configuration]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-configuration'
- [uv-console]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-console'
- [uv-dirs]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-dirs'
- [uv-dispatch]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-dispatch'
- [uv-distribution-filename]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-distribution-filename'
- [uv-distribution-types]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-distribution-types'
- [uv-distribution]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-distribution'
- [uv-extract]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-extract'
- [uv-fastid]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-fastid'
- [uv-flags]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-flags'
- [uv-fs]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-fs'
- [uv-git-types]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-git-types'
- [uv-git]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-git'
- [uv-globfilter]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-globfilter'
- [uv-install-wheel]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-install-wheel'
- [uv-installer]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-installer'
- [uv-keyring]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-keyring'
- [uv-macros]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-macros'
- [uv-metadata]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-metadata'
- [uv-netrc]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-netrc'
- [uv-normalize]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-normalize'
- [uv-once-map]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-once-map'
- [uv-options-metadata]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-options-metadata'
- [uv-pep440]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-pep440'
- [uv-pep508]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-pep508'
- [uv-platform-tags]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-platform-tags'
- [uv-platform]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-platform'
- [uv-preview]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-preview'
- [uv-pypi-types]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-pypi-types'
- [uv-python]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-python'
- [uv-redacted]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-redacted'
- [uv-requirements-txt]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-requirements-txt'
- [uv-requirements]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-requirements'
- [uv-resolver]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-resolver'
- [uv-scripts]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-scripts'
- [uv-settings]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-settings'
- [uv-shell]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-shell'
- [uv-small-str]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-small-str'
- [uv-state]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-state'
- [uv-static]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-static'
- [uv-toml]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-toml'
- [uv-torch]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-torch'
- [uv-trampoline-builder]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-trampoline-builder'
- [uv-types]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-types'
- [uv-version]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-version'
- [uv-virtualenv]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-virtualenv'
- [uv-warnings]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-warnings'
- [uv-windows]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-windows'
- [uv-workspace]='https://github.com/astral-sh/uv;3cffe97c2e48c9e49422c738da3af95919dd0bf5;uv-%commit%/crates/uv-workspace'
- [version-ranges]='https://github.com/astral-sh/pubgrub;d8efd77673c9a90792da9da31b6c0da7ea8a324b;pubgrub-%commit%/version-ranges'
-)
-
-inherit cargo multiprocessing
-
-CRATE_P=${P}
-DESCRIPTION="A package management and workflow tool"
-HOMEPAGE="
- https://pixi.prefix.dev/
- https://github.com/prefix-dev/pixi/
-"
-SRC_URI="
- https://github.com/prefix-dev/pixi/releases/download/v${PV}/source.tar.gz
- -> ${P}.tar.gz
- ${CARGO_CRATE_URIS}
- https://github.com/gentoo-crate-dist/pixi/releases/download/v${PV}/${P}-crates.tar.xz
-"
-
-LICENSE="BSD"
-# Dependent crate licenses
-LICENSE+="
- 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD Boost-1.0
- CC0-1.0 CDLA-Permissive-2.0 ISC MIT MIT-0 MPL-2.0 Unicode-3.0 ZLIB
- BZIP2
-"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="+rustls test"
-RESTRICT="test"
-PROPERTIES="test? ( test_network )"
-
-RDEPEND="
- app-arch/bzip2:=
- app-arch/xz-utils:=
- app-arch/zstd:=
- sys-apps/dbus
- !rustls? ( dev-libs/openssl:= )
-"
-BDEPEND="
- test? ( dev-util/cargo-nextest )
-"
-
-QA_PREBUILT="usr/bin/pixi"
-
-src_prepare() {
- default
-
- # replace upstream crate substitution with our crate substitution, sigh
- local pkg
- for pkg in version-ranges; do
- local dep=$(grep "^${pkg}" "${ECARGO_HOME}"/config.toml || die)
- sed -i -e "/\[patch\.crates-io\]/,\$s;^${pkg}.*$;${dep};" Cargo.toml || die
- done
-
-}
-
-src_configure() {
- local myfeatures=(
- $(usex rustls rustls native-tls)
- )
- cargo_src_configure --no-default-features
-
- export ZSTD_SYS_USE_PKG_CONFIG=1
-
- # bzip2-sys requires a pkg-config file
- # https://github.com/alexcrichton/bzip2-rs/issues/104
- mkdir "${T}/pkg-config" || die
- export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
- cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
- Name: bzip2
- Version: 9999
- Description:
- Libs: -lbz2
- EOF
-
- # uv is forcing bundled liblzma, sigh
- sed -i -e '/xz/s:"static"::' "${WORKDIR}"/uv-*/Cargo.toml || die
-
- # rattler-build is forcing bundled libdbus
- sed -i -e '/"vendored"/d' -e 's:"crypto-rust":"crypto-openssl":' \
- "${ECARGO_VENDOR}"/rattler_networking-*/Cargo.toml || die
-}
-
-src_test() {
- # tests use it to test preserving envvars, apparently assuming
- # it will be always set
- local -x USER=${USER}
- local -x NEXTEST_TEST_THREADS="$(makeopts_jobs)"
- set -- cargo nextest run --verbose --no-fail-fast \
- "${ECARGO_ARGS[@]}" $(usev !debug '--release')
- echo "${@@Q}" >&2
- "${@}" || die "cargo nextest failed"
-}
-
-src_install() {
- dobin "$(cargo_target_dir)/pixi"
-}
diff --git a/dev-util/pixi/pixi-0.82.0.ebuild b/dev-util/pixi/pixi-0.82.0.ebuild
new file mode 100644
index 000000000000..ed1ed59a6e1f
--- /dev/null
+++ b/dev-util/pixi/pixi-0.82.0.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+RUST_MIN_VER="1.97.0"
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [version-ranges]='https://github.com/astral-sh/pubgrub;d8efd77673c9a90792da9da31b6c0da7ea8a324b;pubgrub-%commit%/version-ranges'
+)
+
+inherit cargo multiprocessing
+
+CRATE_P=${P}
+DESCRIPTION="A package management and workflow tool"
+HOMEPAGE="
+ https://pixi.prefix.dev/
+ https://github.com/prefix-dev/pixi/
+"
+SRC_URI="
+ https://github.com/prefix-dev/pixi/releases/download/v${PV}/source.tar.gz
+ -> ${P}.tar.gz
+ ${CARGO_CRATE_URIS}
+ https://github.com/gentoo-crate-dist/pixi/releases/download/v${PV}/${P}-crates.tar.xz
+"
+
+LICENSE="BSD"
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD Boost-1.0
+ CC0-1.0 CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 ZLIB BZIP2
+"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="+rustls test"
+RESTRICT="test"
+PROPERTIES="test? ( test_network )"
+
+RDEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+ sys-apps/dbus
+ !rustls? ( dev-libs/openssl:= )
+"
+BDEPEND="
+ test? ( dev-util/cargo-nextest )
+"
+
+QA_PREBUILT="usr/bin/pixi"
+
+src_prepare() {
+ default
+
+ # replace upstream crate substitution with our crate substitution, sigh
+ local pkg
+ for pkg in version-ranges; do
+ local dep=$(grep "^${pkg}" "${ECARGO_HOME}"/config.toml || die)
+ sed -i -e "/\[patch\.crates-io\]/,\$s;^${pkg}.*$;${dep};" Cargo.toml || die
+ done
+
+}
+
+src_configure() {
+ local myfeatures=(
+ $(usex rustls rustls native-tls)
+ )
+ cargo_src_configure --no-default-features
+
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+
+ # uv is forcing bundled liblzma, sigh
+ sed -i -e '/xz/s:"static"::' "${ECARGO_VENDOR}"/uv-*/Cargo.toml || die
+
+ # rattler-build is forcing bundled libdbus
+ sed -i -e '/"vendored"/d' -e 's:"crypto-rust":"crypto-openssl":' \
+ "${ECARGO_VENDOR}"/rattler_networking-*/Cargo.toml || die
+}
+
+src_test() {
+ # tests use it to test preserving envvars, apparently assuming
+ # it will be always set
+ local -x USER=${USER}
+ local -x NEXTEST_TEST_THREADS="$(makeopts_jobs)"
+ set -- cargo nextest run --verbose --no-fail-fast \
+ "${ECARGO_ARGS[@]}" $(usev !debug '--release')
+ echo "${@@Q}" >&2
+ "${@}" || die "cargo nextest failed"
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)/pixi"
+}
diff --git a/mail-client/thunderbird-bin/Manifest b/mail-client/thunderbird-bin/Manifest
index 921a36c01171..bf129568e15a 100644
--- a/mail-client/thunderbird-bin/Manifest
+++ b/mail-client/thunderbird-bin/Manifest
@@ -190,6 +190,70 @@ DIST thunderbird-153.4.0esr-uz.xpi 419572 BLAKE2B acd56f18a2142d9d8737f22532be76
DIST thunderbird-153.4.0esr-vi.xpi 541833 BLAKE2B bf19221f0452c1ace3232158a41c59405d550907e159f11302160b4d87fa59f0b5b32d3ef46df1ec40873bc45caca3fbede0550a232c41b355272fe4aa054c8a SHA512 a92fbacaf1a2f35fa12d2fe3efbe8f9e3c618acc909775fdeadf24cdb4872c8beabc47a460c0de0ae3f21df3b5e8d588e4a6ea8dd0a75b40f2969d9d7ca68a50
DIST thunderbird-153.4.0esr-zh-CN.xpi 526376 BLAKE2B d2f2e91c4caf2adf1bceabc562eacbd6dc29e6c7609f799fee4d2a6ba9cd253f06bb4d9a00d1e5dda54e99afeaec0d6a769b1d3921f1704152e4ba1b278975c8 SHA512 c73aa1d3b74f1f8ed3c12cb6e0f99165e7d56780147d1c088ff37d9c870b47ba33b44ca041928293f78f8f7d492cc46272386c5ec85afeb3650ec7c1ec67542e
DIST thunderbird-153.4.0esr-zh-TW.xpi 530606 BLAKE2B 56f4aff2665e792c5f5c155ec6f1d758ebd1a3c110059a21cbbe3266e937804671d339bf5866544eef349b773fb09ac8f3d9b456346c719dbf67cdd833281f81 SHA512 b409399495ec681f0127e7063ff8e8715f35bfff912f9e3baa3b8f3b12911dcc5fcb65a208f6ad908b91a59f764c54c38ee628b2d4f075bff54859ecc8006f64
+DIST thunderbird-153.5.0esr-af.xpi 397512 BLAKE2B a95aa60d408d6f8b12c48052b84cc76c218a10d4373316775ea8698dc3ec1a1f116515965870d0621be09952eda4ec5c9de5ad033ec851ac74d5a2b88022854d SHA512 c541b6a24213ade9379ec5f0be9989edecd6cceb621fbdfc35d76d5cf7cc530fc69ef04c81d3777ac993cba469d0908c38e1e2fa0d8fb53e4f582b6d9b853b81
+DIST thunderbird-153.5.0esr-ar.xpi 489253 BLAKE2B 9a5d72ff0b14c1ba0e427fb9d6c0043915e532f2cdfbfeb35ff689ec1b49450d510267bc5218dd0c7a308a2cac69e5050379cc42b30403de5c5f6bcebc5055b7 SHA512 fb32d7e8385bd95eb5d4da56ff1c2ba37204e191108e2a5a8eb1742156c35f89514a990846cec17c28041bcd0147018b207fcce14266f0d950bff772b7982466
+DIST thunderbird-153.5.0esr-ast.xpi 414104 BLAKE2B 3beee67cf55f9ebe16711b0d5e784c25384dfb3d87ca720c32534ee907da691c90a3958777bd7834dadb7af00b9aad11b1f11a101e31ef86c2996a7fa7c0d986 SHA512 11239416faaab998070281931773387aa4aee9f2d3e77d8ae386bbb8b562debdbb77e02f247f3ab7845231e690e76294a038d5f4a26353a1ed3761fed50da4a6
+DIST thunderbird-153.5.0esr-be.xpi 556037 BLAKE2B 5833fe006fa4640b14b9425b4da6fd31be88660d2859e37ddca9c21a2bf1b73ef0e9c243e0bfb39bfc7fb4fac58ba0999327fd93fdfd1728409bd74e8e3bd960 SHA512 26feea90a7ad0901d87879430e16912f67e8debb7b648aecf7ac8352bb063b529628e3194fecfc5897591139d41f50dec83eaf1364d85422d7d60eac827a7eb0
+DIST thunderbird-153.5.0esr-bg.xpi 567693 BLAKE2B 7f11c4121de56b7a1410daff041bbdad0afc75d6ec94917cacaae5f7f88f32fcc0428a491475d653a59b60f64fcfdcf352289c6b39e254263ab2e802694efe82 SHA512 77b4b89206e917038a595e2c2223e10947c5ab21cb299a3b5a74485d0227210284a2b6c315c6c0ca777b1bf35e507cc98cfb0f6b1fb18099a1676aff1c6fb777
+DIST thunderbird-153.5.0esr-br.xpi 440405 BLAKE2B 24a06762d762b4a35f0d51a0fbb844396404d10d18bb7a32c3335cb250098dd53951c54a90855bb928323a05168f249a891003c860bfae1cde16b06c3dd68626 SHA512 9dca7573f5662175dc6113f459f538942a74000d4450233ce4017171b95872e61e223cc869d5f00371e369f09c00b062861c6cfe07afba2b7646b922e58a9190
+DIST thunderbird-153.5.0esr-ca.xpi 478535 BLAKE2B 24ac5140e9b1d697b4c2e1a5f9d02a80f4200c94730e3f53b588c48b31e51c6691e8c8edee17d90deb52bcb2822d483dba6a04e7f4cb805891db87b4e2851c3a SHA512 f5b511bbbc55d053b2eabc75618452029c514f9f388c77e833eff5a4ba59c913b2858710caead42a7085e236a4164c1bf5d3c4dc8c13f25ab05b9455ba83fbfe
+DIST thunderbird-153.5.0esr-cak.xpi 457311 BLAKE2B 4fceb1e77999649dcf1748abf9ccbf641fc6a0cefca61ed5a9e894de45c4c7ea08281fd25216b0769531c663a5ba3a2dc75e9bdb87746cbe7674cedce8161886 SHA512 ae97d5e4be89748a7cc41c9c6cfa950ee528bb21be89ae77ab2536dae92d9c9f4f7018b9532ecd8cdfef8dbcce237d0dfb3203c2e413e5590ea255d8321ba39f
+DIST thunderbird-153.5.0esr-cs.xpi 541340 BLAKE2B 0c96e4eb3fb8fe0e5545f6bd8ee607bdc0425b23b7fc71da3c0aac4da283eece7b1eb3d373faa4225c997dba27f72e9c6de1376019ac5cd0f254b3570a83a7b2 SHA512 3f27727a202268ca5c4a490bb8c78fcaaf47ed93ceac336b2f59b08f8c61229aeabb845a3f3f66d3792cd2c3ec8371292f0fac78efc8140206001bc5dc808410
+DIST thunderbird-153.5.0esr-cy.xpi 508881 BLAKE2B 6966e0e44a88ba6fe05e829e4cbd35c0092820c47c9e67b564ac1808d7ec83a6a764ad1272ebf81bedbe9b5cea653a4e21d64c9e7b9b3d2e8348be1fffd73e46 SHA512 df2648520c1251019b98cde4f8a1f0d7ebced35b72021ba57b4f16216155028c243c697fdceea24f1969e6ba1e5c828d8176533fb720f34327e7d76c13abbea0
+DIST thunderbird-153.5.0esr-da.xpi 494769 BLAKE2B e393d24959bbf6d7ced31389843025732a89dd5ed19062f0f89d458003a9cc634145ae91bd86c666775910cdfafe6c9e94a6d6b0391d6642e973e01e9ac4f774 SHA512 32f132af490a8433f8156d47b44541c86217c1181941b45e3a1a09a59f0a2345db31dc4d45aeb1768eca5b7e5a2c5a8dedcef5cf19eea197a82f1ef135bc2d6b
+DIST thunderbird-153.5.0esr-de.xpi 524901 BLAKE2B 9782f8d4da08f32246e7f809bf4b895bab57dec339c424c2bfd59b0e58719417cc37a8828fbf348897f50f0b4d8df60da7ce20cc168f15bb4ef282b7ae683328 SHA512 9921ec55300de084203ea113031a13aa433a4997d30d54b9416f80dd43eccceee8887605a7917b0215092ed5ae5f4f5a61688eb5abefcf4a2963fa0a5752b4a3
+DIST thunderbird-153.5.0esr-dsb.xpi 538728 BLAKE2B b037bff31547e71d9581b1ad7d4b5c9386d121f57875564dec3bf7eb1ecc8a3e8c93cc50c509e78423161eadb4c811b9c9be1744ee3922270b2493bf0fabf565 SHA512 c535810399fa4ca2b193fbef4f59847c5d8131dbdb743e71418f48150687cdcf64df1e1725cbcc3da10d2b694680bd9b12a66c85c92f7997c8ae4c97f43ba809
+DIST thunderbird-153.5.0esr-el.xpi 631502 BLAKE2B d1d2fb627a214040ab56530fe1e17142e9f1c97390401364e280008065b3cd539b555ab9d7a2d0454fb18694f2c990aa811bdbc056303963cef94a255a7f305a SHA512 711b0391adb65a0366f781c41f954b28795de5fcbc8a7597caa8165ca8056c5843beb1edbd2d2c67cb179d5dd0e0bc0ff27364a993314d11e0337f05115681c8
+DIST thunderbird-153.5.0esr-en-CA.xpi 470431 BLAKE2B caf76de6d25f5f0311b5804c9afe99efd91a49bde5d422c5e36fad92b842f9900670f8d16d4c87587c89f83fa23cffbe92479618f142dd810640456057b32ffb SHA512 e6ae3f53be85622485d288c13a44c396ed5118d53060dc53df791976e32ffcaf560d859ca1a278a85c9f146ffb248a9472442e8c426e40be5d1c5a1172a6137b
+DIST thunderbird-153.5.0esr-en-GB.xpi 470302 BLAKE2B ed5b651b504ccde0755b512854329610a8406c81fead5c8153000a3b5fb442a01e8185fc1a27f38129292622f7b0ceb6ee0bb6f0daad4977966e262acfd240c1 SHA512 f8685bc661bcb447536de28a2450892225a92715682a0e5f88610dd885124015c3a521fae979a5ada6d35f2afc213a521780b49bf60906c13b49c0d993f2674a
+DIST thunderbird-153.5.0esr-es-AR.xpi 514512 BLAKE2B 2330d7b888555052255e213e909a8dd76bb6fabe6f0d8c330dff615dde302d337b63e7b65c326f8a57c9fabc3fe369975b02d4ebbfaee0f9876cbd2dac908fab SHA512 31e7b0b64ed83a0f2b63c29e3396c32054c3abd48f1e6cdea15988e9b5b45cdd909e51801042467fb24722a81bda36874f5d9b179f77ce1ff61ad1f09ffb71d5
+DIST thunderbird-153.5.0esr-es-ES.xpi 516847 BLAKE2B b55a3b78c82c8adbc04775890ffb37752cbd61bef1efddb0dfddb9f1b92bf69096de71ed9f5e527fcd4573310efc151b19454c9687084cb7ab01ba0c113bd7f7 SHA512 befec4b889fa8754b7ad3b3c0f1fc5e4b61799ce7b5da221d190aa46063b5c65f4b5e904fdda0ead71fd5ee76856cf4a6909b1ee833ef80f4a7f214a0b892e9b
+DIST thunderbird-153.5.0esr-es-MX.xpi 509366 BLAKE2B 25f3b2449d75ae3c4cd5d9034039e61a6b1598b7615333cefccbb97193bc6b13c4a12fcf91bbe275b32347ffa8ac55612c0e5a82f3b67a2efb182bf638a96962 SHA512 ab9bac7ac2bcd60d7d1dc09e1b08ec8b77677b50ef4e2e77b3f1bc0c338906547b350cd586b9d3233ccfc0ac371627d7ad425095eb40039f9885c0cd40849f2a
+DIST thunderbird-153.5.0esr-et.xpi 464347 BLAKE2B 32f4d74618932be624570ed3fa6146f0204c1e82cffb9e72ecf847ae637075fee87c7c314f77a8a0b7f74353f16f97bdc40da12ca38b51086d8f93510cde35ba SHA512 e34cbc343aad707f89b648de3bf7d4dbc4f066f8e7ef8fc250baabb13db43d25655cbf3be8c7bf61a60fb9c59b60231a2453d01cd27da97447fa46cefc059dad
+DIST thunderbird-153.5.0esr-eu.xpi 497077 BLAKE2B 4e737e3d043ea3fb549068ba9d799c23a67b122119adb599124112d12cc8ee741991c7581cd2089c961e48cb4ed17f8ed7d738c02dbbf1d29f54b4e6815f04d2 SHA512 76221040886e5b777276c7d74c796c925143cd0b0ee2bcd775199b242a1604d91fd03e4275165da62155680cdc37a8717e0a8080e41d3ce0c870a736f21171d0
+DIST thunderbird-153.5.0esr-fi.xpi 498105 BLAKE2B 7ee881e536030b8d1d48e5f391b17e9e813a74852bdcdc90fc90040096bc5cdaa49bae718e301b1fdfa232dcc4790d821917fa445f91dac77e879cd7b13dd787 SHA512 0fc7869fc561af537cec36c7e218a6fdc9ea8b248d2c0b726e9f5de1b79a7992fed97d134b7b89e132a2c12b5fd68f815a4ed1a83dbcfef34d7bad4e93800655
+DIST thunderbird-153.5.0esr-fr.xpi 528628 BLAKE2B ef98435e6f7d9b63df9519222c0801fcc2fd54d201d0dd759d2a2acaf8b1dc590e75d427d3d85290229d58ca7f539e9db5849d3a03b0f2360616718f49e4674d SHA512 ff90a43dfbb4b16afc6e5d7038723222c414f51d1c824c74a180e5b7dbfbb9e35bd3920eda6acec71b1eb46a7c601cf8b7ca65738428a080a055a4e95f93bc44
+DIST thunderbird-153.5.0esr-fy-NL.xpi 510257 BLAKE2B c7f16080d4a153cad43802012a01eef7b7381c70c4516909f131de5b0748ff0a5e9b9b560116a57a1e3a5b6d538319945c9e37b8df526229fce78d08d2510f3a SHA512 291e4c5153d907b4447742e2deaabed4526269b2983f70503280f7fb8d923e827657a98b91996384801cd42fb88c46c116c436988c3b92447465eedf8e6c25b9
+DIST thunderbird-153.5.0esr-ga-IE.xpi 432780 BLAKE2B 68c6e29165225929507493df7ab88ad7debadf9fec43acbdc95b9ecdb8071fce6b044e6097f97bff166af69b3c59b70195f8536cb7c9b06f6da8ab6f1130417d SHA512 b49851cad70ae88d414ffae77e85bda095334331e0241e5ffb43f19ddb4fb600194b047940dc0c1b6208e20ed632e0611855340ef4a367c0b135c96584ac210d
+DIST thunderbird-153.5.0esr-gd.xpi 486235 BLAKE2B 439e6424951e6525e44c60de796b8bedc803fd1cbc423885ff7e7f511c4cc52b65de4d648acec1286cb77e0332a0631aec172ca36be9627b4f7dcc4596c1a5e8 SHA512 bc969b1b9290f9201608bd8791a46e72ce56127388399c21dfdb777ba060b4d956de4b3d894f9ec630d50c9ccd3eec4fbbeaccfd84fe1a150825e21ba782a2dc
+DIST thunderbird-153.5.0esr-gl.xpi 500119 BLAKE2B 62250a5d66d0fdbd49542df37da50d88adf6b95207ca76da411a6e77adb4417c831a865b0f573639416dcb6cdd5edf1eb4043ad4e30f8ebf27af636836ca6390 SHA512 b03ed2841306b0ab2c1ed4f350723f8f6cf70a3b36ac7fb5487b8b4aea814c6f8d5dbb6be88e29e585834a4788ce7607c6d684942afe0f046c0eb401f64ae9c4
+DIST thunderbird-153.5.0esr-he.xpi 484641 BLAKE2B 068d0843edbc8d9379c931343839db8e80ec7475938120c13fab5b8e11a60b2d183a685cb82209b111b613d6cc1632dab3ab018b8f522a9f360543b5ed86de74 SHA512 699f431719fdb7e02cb799f71cd990ac47469a264437786e4c2ec9a12591ad2a236d99c1dd4016d8b3c78e81fc5766da8ef07a58b2313e0156ef689afb144791
+DIST thunderbird-153.5.0esr-hr.xpi 498553 BLAKE2B 2a465d87b87ea807c002ae6a6d987eda73b209bc9743f072d402f3d666a4352afe4eb293b5e9e7d197d969a3a0082d5582fc8ea9e975dcb5ee451fe3478285ae SHA512 5c46cc0bfaca3d337bd691324e78761aa08c1d3350cc9490faa9ca2c27275ba0f115ae919673080aabc70f49d03724936036702d6a4aa8f3c9f37b6b09e5718f
+DIST thunderbird-153.5.0esr-hsb.xpi 536054 BLAKE2B d7da323039a54a8c81f0a8bb5c41b1898f20a7f6a9508054c3096655e3c939c1acb456ad0a6fc6c74eae79d3d5fdb1e6094d95f48d80c79a17e9384141eadf7c SHA512 aa68b99403f367ce506c72508b9f6bda486cb28a98cba9f6e434e15f7eef5dbaccb0ccbff8d4f0de49b680313cc25edb519a986f7a58a1210d8d854384d2d12d
+DIST thunderbird-153.5.0esr-hu.xpi 538223 BLAKE2B 274228ce1f6590fd1005ab296f40955e64fa0a21babd532746f458d1fa620c160c4e668599ce7dd090d15819cde57933ca75bc7a5f2cde3b9fca43b4a6306154 SHA512 a5fd1c1ad5daa39db147b451f4ee704d651768f9215d9fa6991fc9b907b116548887b5006e4feacdaf716d5b8a108efd3a6ac0cd9329f3dc078d996c62b8973b
+DIST thunderbird-153.5.0esr-id.xpi 482849 BLAKE2B 8f11abbd0febf718842363b8cef567ce06c207d8c8ae917690afda65cd9e7c3d609148a246e69bc489e41d727ea9af382c3969796fb89351268adc7080b01b6a SHA512 502d0a280499c3596f05cacffa3d5292d7b953799e79f469c48af2526ffff9ec762bbfb0029fb9a8b2a31bc810ec2a78a37d322ee9ed1647b0bba905fdcb981c
+DIST thunderbird-153.5.0esr-is.xpi 508452 BLAKE2B a143dfdb6e347c30d4bd20f33e4dfd299556d4dfd84cde10ab1fbe3d43570477bc2cd349cd0d1993b784d5709c50f5244eec33e1495fffa5064b46012575ee35 SHA512 d609d230d73e8d3c32aad8cca91b6303872ccda003bd3c7fcb107558493f25f5117034c79674b08f6f55c6dee34f7dd691ca185b6969bb2757e10c9dfe43a51b
+DIST thunderbird-153.5.0esr-it.xpi 507902 BLAKE2B 913232f95fc8428ef39d4da62e15ba003a314207ac78bf07e4a730f4f1da241c855eae8631a123b48bcbe1ab610739d176d25eb0ee414a9c570a94970319f562 SHA512 7ce5f8ee12169eaa6cc39ee5305b44dd5ae1f2fcbd32a322fd110fae89cf639d990f7b1dfa8dfcef28d52e944eea7d358946e10a90438e44a74b3b9eda2bd85e
+DIST thunderbird-153.5.0esr-ja.xpi 559669 BLAKE2B 90f7291b80661f7d325164acea75f624dfa67921eda4305b879c85bcaedf00efee42dd93c087b599d429b0cc4b0461125aa0ef1f9a156f62be1042330895187f SHA512 5a48c7eead7e0e6975284d8882e331993e1f6e592fa0fd9cd8cad2475e99c260864865efc4d9bd1934eae006ecd73e8aadde50c26e33cfd4bca75d4e071ff958
+DIST thunderbird-153.5.0esr-ka.xpi 577083 BLAKE2B 89f0ecdf07f9b77a592b454de0103712e2a8919c1960955439654500b219c6c0f4a40ee59a5c06cda13a750b88042ee2897e5f10d068eb55fb3a3d13e705c517 SHA512 931752ec758a33e4207001dd8f98923d22adee462ba78ad9663a329d91a8a38430f3626a8a34a1ff30e04f55c145481f808f81b42de2e25d9c0c2533c9997684
+DIST thunderbird-153.5.0esr-kab.xpi 488118 BLAKE2B e3e861c31d2cb07bc4266fb025cd0f92256c5b4028b18371c9a787e56efa08d97805711c4ee399147a8062771c1dca6b24b10fc2177e28175d84950f09cb866d SHA512 375620f6fa8f44311c9f9b811eb38d0ee9674d3eb5306a8879344d71d56a3072361d91ff9a696e6369c895a65c198d647e05607045d1b13d092b6ba4eeb99b44
+DIST thunderbird-153.5.0esr-kk.xpi 601234 BLAKE2B 7d288ed59fe997cdb622332f3395a7144c71a3c33b77980880c7348c5f551a18cf41362eea59b4c6eb3a60d3d052d721dbc4df9931386b2af8524cfeb80fea1f SHA512 f546b4531b254730cdec1e2afc2e81c665eb2abd13d41a8745dd402065742f678855c60b7cd536f8334d542ab2dbeecd67b6c226f1487bd8c4bd1d65f005d3bf
+DIST thunderbird-153.5.0esr-ko.xpi 535407 BLAKE2B 190d63e2960ae1fa54112debd6418f11fe334aa225f4f3b2fdca69b4a3069dd87a3e9321c8a92890ea4eba4315d4558412efd7607be16b89002950eac8d1173b SHA512 970858400c2b23b2f107dd35c071373f1be7000a7bf172b5b7615f5d7908059b1a912008f69df53e979b926ccd8c51630a6eaed838d1d79c2efd357b05e52813
+DIST thunderbird-153.5.0esr-lt.xpi 481625 BLAKE2B f28762bfc06d5ca5cbfa9bff216455d5d945fad11e18ff93cb07e8d7da57992a3208b3383d4b49b1b962a9035647928df3b8c04027b2b389b0e7d986829ae063 SHA512 74285fcff2ce57ac756476622665462a0f6215365591cf7c910c06ed1640c109630c4b6c9351531ba5fc2bd1e78d14160214dbe2ce9dbe876f0f268dd11090f7
+DIST thunderbird-153.5.0esr-lv.xpi 457830 BLAKE2B 994cc9d01cb6f6c0cb9762cf7b6cd740cb3317220c69549284cc53e66c90ba1582b3675b7e2d0b708fdc17a5921c969565661ef4209c1c8266d063653ec6a9e0 SHA512 4a1a3456999cefa4eb57aba3a6fb28e3432b2dddd3103eca964dfe81eea74719bdf2d924565c43689dff69c60d38c778663facdcd25526670a5fdf49cdc537bd
+DIST thunderbird-153.5.0esr-ms.xpi 403353 BLAKE2B c4008330ffacc632c955377d2ef551bc8a6f6ac0a8d68ecfa6d484cb78c312390231ed8035f1668b9e7f4dead7343da30858e3e72cba3d1b6af4235f805a1699 SHA512 c0b40cb5827e37f1ae3e58c2d725306ed4a9f4b73ff26c1845c9bb7aa6f3f81adca7df5ad7a71457d16cbe5210c42b22d15e7f83bcf37dc6534dbcf8782835b0
+DIST thunderbird-153.5.0esr-nb-NO.xpi 495086 BLAKE2B a489e7c948f57de79e00b94ea8b358a7341ecf9fef55c96327295ac791e8e372f7f7010cf162d45ea10d55972cc87a3f81f6379e669d6dec409333693ad62451 SHA512 4459adf4ae38e38c62ec545266c7f374392665d8421770462bd14815696d898ee36a798a94a6eb5fd3a57202957bf0ab97420f445c3e923d031099cd0e975094
+DIST thunderbird-153.5.0esr-nl.xpi 501744 BLAKE2B ba31f793896f14b2f24526cd5533cd03a4123306bf6dd39c22663e1d8ece999f149535f347c863b467a0cce26da676050d073ac40369fa182d4d6d777a4994c2 SHA512 05ac28eb7b81737664712a36e9de40140366c5df2bebccf8d9ac6213961a2dd3ff2cac446422ea4266e3263d9479d4c7a37159a08ee2e009e2bca73ee2d8f9cd
+DIST thunderbird-153.5.0esr-nn-NO.xpi 499075 BLAKE2B 17049a4f94d981621814673d56656efba49b075f949c3f064db332568371ff0a2a8c7a911d6741e3976c42de9c6f58ce18092696ff981d16253e7d16881bc854 SHA512 1fd3695ecc48507e5b04720b2e49de0ab9b25845ed843a8618050712984f26c65dac29d9ac3c1411f4770a85177cfeee25ec185bb8f9b5f8c1dded70b28ec23f
+DIST thunderbird-153.5.0esr-pa-IN.xpi 491270 BLAKE2B 33b16a4c3b6184e7a2e78e8c648206b28d8083f7260957443401d0727cb230a572e7d310e441a391ddf340e9d725b2066af6aaf7a6677e2e6fb343e8086b9728 SHA512 c5a459417f9f810b12ae916cab5d8560f484f81de3f1d622a43baa0348082376b52a417e3b340004ca965106d15106f159e720e772c921075d066f2c2ebc45f1
+DIST thunderbird-153.5.0esr-pl.xpi 536462 BLAKE2B 0f923c94cb81a04303be37902a36e45cd529f26439cea2cf8b36c0cbddbb42b3aa3663ea47f738b01bb0e5b5e7e2ff569a5b458051895e6efa9a659f4707f19f SHA512 a1618c5f018176e4e07e731d26322365215064e647f255b2bd54b693938652b0fede5da1f9769f4720d9766ff1434d1ca4224277474e9f2879e05cc6e2744551
+DIST thunderbird-153.5.0esr-pt-BR.xpi 508306 BLAKE2B 2399dbfab3410983c8265a554595e97922d08510ec4666de0599c7bdbe82decb604afc021d54e03b18c32515b612426fd924a1619834d4a74c9b64bce9e52156 SHA512 2f4e648c6c394379cd69b6fde87b24cbc2b24e8f4ffa87a514d4c3b6727b4b6d9408725a124284bddd8e76374ef08851522ae49d60ae454ceca04ea5a13f3a14
+DIST thunderbird-153.5.0esr-pt-PT.xpi 514326 BLAKE2B 431195eff13be3f771b79028f4af4f69f12c2a1de946e2735e66158ab28c915d91297d901b91264201fdcfbc76be867568069e7e1ffd89aa13942d0ed8097d55 SHA512 7e8d5c46f380185ab55846f9a5e5f6d52227c7c623ffc41e5c967ef623c29a850dae4d37ef92e630f5901580b2c6e5da03aef6827d4396859bf0fb4c4a45bb2a
+DIST thunderbird-153.5.0esr-rm.xpi 498923 BLAKE2B 6afa25d37f4f89a113e24a660299bbe37ba6569cb59950ebfc48d1641734c02f68540375cf48c894a7d09cac7f9abb7a94571176c1737f6c82b1d53dfff8b83f SHA512 315eacf61496d5d7d503f2b5b0371d922699e60c9802e0d14c0118ef5e03370acf7be795face976b91a7449548b6e8c0b2f48de9f9c6bf2ee935cbd395be4866
+DIST thunderbird-153.5.0esr-ro.xpi 521166 BLAKE2B 380c49cd83bbc62d29c5d30ed96591a2a727c8fe8cbc69905ba3393a78050ec891b457d40ecad4701e0b361fb6bfdb179135c52014248bb93b2dd5e11d87ba01 SHA512 16e6c54d79e040931dfd548eb5f0d28d224e85d7221c00d593cb24bfa54d0110e37efc0663d99def16e7e62b4cb5413b0d4ddeffe1c53a0347c771db57aeba45
+DIST thunderbird-153.5.0esr-ru.xpi 616070 BLAKE2B 69dc95bb947219225961f8d2bc0e309058f8054e9c18990d3da10d47d5c3d801d2c3922d6730f7d3efaf9ed5af43e2e8a6a36807a82e223c59348ac869db1c4e SHA512 6515fd1ba46d3bf351ad5291631a0119eec782e0d2ba24f1121635fe9f35601ce7ed23c12ac29e3cf7072c3b0686416a8d14296ee2ba11edf212b222d5697f87
+DIST thunderbird-153.5.0esr-sk.xpi 541169 BLAKE2B fdf8f51f758a8d17ad02f28af9240783fb7b0187d9f82c91f29f6ce45ec3dff708253db9cc7ff564a68ddbc464f1760eebbef4c833d06ff76604aeb68c621045 SHA512 31e6c92e7ea1a96c180609dffa2f32167c2244e81515430e5e3c23416b9f2efa91441b088c57c661e5fec50a2ac0bcebeef5685507e5103f7394859a26429e32
+DIST thunderbird-153.5.0esr-sl.xpi 508949 BLAKE2B bebe326421e401807029d040c81502395b51396eb1140b92291ade7fad753c3dcba4f7b6ee5ad6c93ab42cc0ccee62cd1b2218c3a565bc04352de96ffa2d15f5 SHA512 85d07cc5f3f238e8bd4736db0cbdc99952562124cad28facc6a0f2f444a915fa64aa5819495c6fe3e20ae22b6eeaa0f1ffe19b95535a8f9730c1b7ea2be4540f
+DIST thunderbird-153.5.0esr-sq.xpi 525006 BLAKE2B af8d8507ea289202b6c5205a19d6ba4a08859b07d481c8d63fad390b517df44649c106fa7459d43b1022b19243acae85f4cd92087426a5fa2cc32af3bd7c983d SHA512 61cb6e3f0d241ed8439a8f1fcedec56db8f6dc1d337b165b7e79dbecc0a15fd55179c398cdb6753e3b328f76fa586656d325c6d6c9789435e178a470be11617d
+DIST thunderbird-153.5.0esr-sr.xpi 581229 BLAKE2B bb9976ce15e00f3fa7ad624bd6217170413382cbf1a3ca274d601b910efcb4583cdac1cf2f9feebe3d9772404851871711a0100edf59c5c3f32d630b12cec635 SHA512 32ced36081d37512938e7413c04cd382460629b826e00db093952aeacf48a1b2f81b9f36415687dad9f0002ab86cca0f6a88e8979639649edf568672b2d3d97d
+DIST thunderbird-153.5.0esr-sv-SE.xpi 503765 BLAKE2B 4fe609c7dbe42b7d9fc7cdb60612a028cb468a3d41e3aa8ef7a2ccde2e6da472ae10905c469ddee7ef0502f238b0c8077776078d7bee6b8aed4e359f49f1796d SHA512 b87c6d1d42b88d3ba4cc7d63973210be5fc941bb80ca127564af3790f44056931f70b82de28024206310e08aabf72fdd340e7694590407f0de84ef1d0f1fd3dd
+DIST thunderbird-153.5.0esr-th.xpi 585142 BLAKE2B c8277ac771d0e5fec14fc73c99962c09f52ab0d35d85cff61fabb78d3f522358d0738c9d65f1b1636c6d1b64fb4b49c4cc433166963be390d1887b23dd068791 SHA512 5e8761b680ee0aa2b5df2b4a40b13384611ec6793d198a4dc89d5d0a1685bd6ccba6ce3dda27ceff6501cd5d0b7493842ec0fd0155f965c1baf94e4f1ca01515
+DIST thunderbird-153.5.0esr-tr.xpi 515623 BLAKE2B 23a02d82fabdb2e4e7039cf5c77f56aa8a948f9e650d4224724a8a140ab0f04fae82c137ee9e07ae5c299f56ff4e4304796ec6cb831f6e154390d263795a47c2 SHA512 c1885d02d928dc62a31a06dd4fca6d1c5d79fba3c1bcdfa558434e557905ca6ea0ad573b0a92206503ceee07a5b440b40bda797f8c2b27951a37b13b03ef5fde
+DIST thunderbird-153.5.0esr-uk.xpi 596158 BLAKE2B 0be376810514a664dc70183a57d5c1d06dde2ebb3c39e6bfdb4df3f79bbecacf511a74b63abd8f66c7da86232146b348437eea7a7272f03df875c1174230cec0 SHA512 1ef816ca09a7dee947ea2e37b93fd06dd1b5c8d66e0282a9e18e102ed0a9793b0ed60a6dcbb5dcc08258a411821ddbc049c2afdfedd7d3dfa2e811713c74270d
+DIST thunderbird-153.5.0esr-uz.xpi 419569 BLAKE2B 4869b5b90164a9ceae381bbe58ef39b9acbae77be59fd3c656cc8bd577e1934d8ebb27b57dc8b6c31bb573f805f1c320f19e6eaab612a7ef8757f5f7bd95b5bd SHA512 a32f133a6c8219d5d06395fd1c6c2f00cc2a4717281fd6a6825898a8df8a2efe39195cfd5e2ea9994cd5bb0c81f6fa2ae18b8dccc09c0d4a19c5b51e5d121901
+DIST thunderbird-153.5.0esr-vi.xpi 541879 BLAKE2B f8ce4f8d04c617ff5bb3cbb486cca45189bf58e64f5498c5f191e32535cf0bf02595c90534d7b5169e1341140858b11c9e37ebf391291a057638671505c3773c SHA512 25f1fceca56c81824a50649da4a8961a63b449682ed1f293807bc36e16535f09d489cc24bbeb3570fec950add6f898834e768e01c7166676901c6d0733c32446
+DIST thunderbird-153.5.0esr-zh-CN.xpi 526373 BLAKE2B fc8bb74ea9e442b00954a487d1c0f9744fde6d2499755f1788ef387c203e4595784bd03c09e58d474b7c78504d44344ed74b79a9ba64e38511189a74d21ebaf0 SHA512 a0de4338cc1664db3103126e5e5f7ba2cb2948d62a8ae419dcb07ce46ecf198070e3e1f45c935a2478e6c152023e7ee114373e7f79383f11029a806188000395
+DIST thunderbird-153.5.0esr-zh-TW.xpi 530602 BLAKE2B 085f0a995d318dd8baaba82d4e6f76df703151faf41ef550ec099daaeb5558b44f7bc534d14592a6729e4402c8e6067dc3755aa5fd9b6cf4b267bee2f34be2ac SHA512 8d60edf3e8c8a316ba078648ba4266ece1f6f28063a3d9f947fc8016217a5073ed65501907c027ebc25d2e055b412683d7ceb2bf4a864d2149699897e7889c48
DIST thunderbird-156.0-af.xpi 395008 BLAKE2B a840d16a01b572da3542032aec160184478209b873138deca4849890bb5b9c78dc767fd7fe0bc36f9aaee3c246e49321ccf1a13dece61ac8c5da86c7774e3443 SHA512 418d4e70b7e2eff9d0de78603300d73836dc9e0fb9a4f594c352cdf1250a30049135f3415c909f833a963d34c1502e497039c2d29979ef38b0182bd201504bb0
DIST thunderbird-156.0-ar.xpi 492142 BLAKE2B 50e8fe48920482ada5a67e0f0749fb4db40b7946ba96af9f1de96b811f80d95f53f44dbd2f689dbfbb07fd89b1751a895808feeb459898c31b009b9c8fcc0179 SHA512 667b48b88e18507ba31939b027d97b0a6ffa0803ab22ec13e919b070bf1d934542a6dc0d516c41fdd4792d7bfe95f972db25e02661b8a2886b07a9c9845be9db
DIST thunderbird-156.0-ast.xpi 412398 BLAKE2B fc6794c4ff773246bd170773a9b383dbee617103fb9ea386e23e7bae0f2285696c786e83909a77a973a4d7713f9aa4759b0c36fcbd788c66e420c9abbd0d6c77 SHA512 8ac394ca5688a5776f95f78418d3fca54d13f475a37e7a3b85f62fcd6ff5ba2da0dd637d3ea4ef98916557e2381746f21722256d0877ccd10ffc2768f5e4be0e
@@ -446,11 +510,77 @@ DIST thunderbird-157.0.1-uz.xpi 419455 BLAKE2B f3434464fac95b7ec09fde337b8e53ab8
DIST thunderbird-157.0.1-vi.xpi 549592 BLAKE2B 85df563a450569513458ea2a808ca80feaa0d9b9019cb1ec15f1c2a9efc41495e2731d296038a3a6f78df8f501b15028f33540372b7efa876fd9c55d01a01c94 SHA512 73e9bd9c57599ab303dec04e298f52a204bb1c20ea1db0b9fbd5026b813695f12bb95022b0ed0dbecd988d98cd1520b4bb46610ce67f3a72e7d15d544e542f76
DIST thunderbird-157.0.1-zh-CN.xpi 531203 BLAKE2B df649f22aa9c72efa0ad0b7452b8f5a3c9e9c491cfdae2259cd0af1272fbcb0629b65b0f3d66f2009949e49ef344e01f79e9ea487c3c001f1443c120c3dd44a0 SHA512 8e278fbaba2a9894463be774d43bedd8f21559454853c80f1c91c508842ee4d9c71401f4a6a4ff55e7c3b687327a42cabd5d80036016259fe2e71d34e4ce836b
DIST thunderbird-157.0.1-zh-TW.xpi 538091 BLAKE2B 52afe0d78c618359f7681a60eef42f9d4318d56d058a7d5a02bb2238cb6ae4ba57fd4e2c9954d236f6f30b794a3a6eb92aa7ab644f5e0fecc02a11b74087df19 SHA512 97bd748cb2b1a3fa59bde1b2028e438db534096a52e3bdc7919c844f82207cd04a36d0c1fa4a31f4de4005e501596a16c4e661c6cbf0830bfd9f912588500b02
+DIST thunderbird-158.0-af.xpi 390744 BLAKE2B b6027d011454c2d403694cb45751ddf37e9f10d65b877dffb66ea2c80a5c41ed8c318674b794e9f69870c93bc5b7eb05c1a0d249a71099ab9d227f190b60fb2d SHA512 26ac94e6efd2110c544449af9e7189e231f7d32f523d6a9327bd1e72bf9b8d6d631b6678551a975321284750e64c4c674a6fe4d325fc0d3c63645b26c476b0da
+DIST thunderbird-158.0-ar.xpi 489314 BLAKE2B 769527a286a9c3e2ecd6e3ea56adcd24757effd642e89d5f5d0ddb42a52f938889ac7dd5929b479a06bdadc0db6aae7ac7f373d25a9deab9aba6c295d96c2943 SHA512 0965bfa46dc3a931ba15619a81cecffbba9cba88fbda418c23b92b3aae1d4dc607895db668c912c05e81bbb282710da1b0fa86d1b4c7f8cd9da674224bbee507
+DIST thunderbird-158.0-ast.xpi 408421 BLAKE2B 3a09e8dbfb56cecde5adfb370e35c9ab16de202188fe72236995de7d2fcb896715911647076070750698003074880aa14b96af1b7bc8685d28307e9793c732d3 SHA512 a4b64eee5e50a31e2ece7f62d5c66379c6dfb6c93c6a9744e1cd0d02a8d04d9122c4151b2223f64e40c5ebbafa1b24abc1e5ba527a8b338633054867cf787916
+DIST thunderbird-158.0-be.xpi 555913 BLAKE2B 056eb770fcb52b72021ab2fdb8ffd9e06b0ab5eebf84762aaecfef82ac162c3ecdbfa1980e4f8a6c439b05cc31be354e54bd5d418d27619279323fd4d8ab771f SHA512 4eb49daf195cefb41306620a912baaa02c9b1ff2adc37323a4e05e85d9ed71b3aca5736cb9a6087db4f7fa8c750a9fae72e229f2907f5abe54ca6b39232b010e
+DIST thunderbird-158.0-bg.xpi 563794 BLAKE2B a2742b51d927c7e952504e1696a0c3af96dd9bcc8b5e9015d5e97507c52578b8b840f737d348a4befc9fcb1d894ae2a28fc114d6ede9bafacc954d2838ec4ee1 SHA512 269d4a690c37b63f024d34cc42c7ecf7ec9bde503d255afc8252635280e2ad58a4407f51f65a697386495b813caf6c04599068999ea1cde6bfe47551cc770ef5
+DIST thunderbird-158.0-br.xpi 438727 BLAKE2B a41bc43ee257da9a615478890c916b6ca156f262f734ef4a18882efa24d904a22b4da3782c81e0a4b560ac27d086a82380ab9f8da6f0126c5bd12b89309907e6 SHA512 549af183bb6817596dd95f3499fa1f0651412df8ad2346210bc2809818eae8c7872c0b606f29e3a8583c5a057faa8ceef97955de281a91bfe1a3aa7347802d9c
+DIST thunderbird-158.0-ca.xpi 477651 BLAKE2B 55efb70dc7c94821e23b2675e2a2d7494dbba89c819529c4f5c0f47390b81bc84c1f3df59d20a1d19ef7b4fbd905b33eebf86931483dc748e15077a2a0f7ba65 SHA512 195cd3b9fb4f4845c2df4101e02c5adb1831305695492e7d78c8d6b4e141af7d3071cf565ff4892a3e7bed765fb5ece171201983aac1a28cd52a7281fbc1b056
+DIST thunderbird-158.0-cak.xpi 455075 BLAKE2B a59ccc616d0e2e030cd4d7bf165ee7e39df430a0285652b1783f2b7a14fe0eab06adf13c14a8ab722f0163babcd8128662cfb6fbf1d09e908cf0c2cb301397c0 SHA512 2f9a91b0e90cb1bf07acdfdc95a968334933c5f1f062630a31174ebbb94c8f8885ce3026fbc84898c7010abb4876732a5093aea539aa140d91512c95dc29fd50
+DIST thunderbird-158.0-cs.xpi 549494 BLAKE2B 649f3b8aff58da10e419da6d661292ca1e23e53d3236a50614065198d816c50914d1f112681ee7bf2a391e1eefe7772ba9238e953c9c4b46dfab08c6ca516318 SHA512 c7665f951089911ca803abaee295b8908d36e392cad8c5e2cb8aacc7531d75440c4508b63422438f10763f59eec3c26aa4e3293e39b841eab06e7cc7ce6736fa
+DIST thunderbird-158.0-cy.xpi 516804 BLAKE2B ebd8f2fb40c73c46965273a1eb4918117da014f1a9f58f1608673ddb38945790a2a71b36eef9131deed9ef461a80cebf8df7d517dc231d1af6667c40bf4fb1be SHA512 74630a68fd5ed0a74c21ecbe27aefefd890bc449efc6d63490df71615c98086a9992f270938330827e0a8168033aac906bc6328c09e52ff87e93ce8bde717eba
+DIST thunderbird-158.0-da.xpi 495119 BLAKE2B 93d4fcf5aa1ff45ab90016e3042dd0d22e1e3e4fbddeac17f418c967ae4ae50cc6f1eb72edcd6d16c481200eb531283ca2fbaffe4ae0b8905265314706d9a800 SHA512 f8e6495ae2b4645f9f38946ecb16b9e8c0e062a97fec7834c1c579ca3350390361fdd7742f4e5d9e82841dfc817f18c9c737ef495c9ebe89787a229de083cf3d
+DIST thunderbird-158.0-de.xpi 532509 BLAKE2B 30df51655f8605a15c32cf38ad19e36be154952f8b1a2747f44f627dce7008694a502cc58dddce443c544f32b3654d3a2b023c58412387185652b3d7788b9a51 SHA512 cab7320d1c5e45fdb2f09efce0239946a0ed1d3b996bf2b4c9508b945069a739ccb3c3e25dbf19035e3357f3267c86bbca1a5945632ba9e3974ae25423f54e62
+DIST thunderbird-158.0-dsb.xpi 544672 BLAKE2B 4ade719c44d68b426519e5e6089f69c5f50a3a212181a0cb6349fbdb8361a0d29c536cf5748dcd77275c21282c89aeea94a54bec9ab8ba6433fae5ec9fe6bdd9 SHA512 0791564cb73b7e390aebd888ac995a10edfbd66a958a67dab135f71526c3b104dae6c58c8721f3b8947beaef5b201c1c09804eac8278266821aa98da1de91351
+DIST thunderbird-158.0-el.xpi 639329 BLAKE2B 86c6da3a42f194fdad2cabc298d8f2b677c8765948be225af0f1e27e44ebb2f9836eb110e3ae671533def1247df26a1533181b9fbfc75a20ef638857582253f3 SHA512 b6b652a532a4e66b3ac636d2a45fff507d7a3fa9b30d10069f23f757dc4061aa4efed78511f8adaa82c1ad3ce8debdb4253c70d73700a7fdfb61e43249bb8b72
+DIST thunderbird-158.0-en-CA.xpi 471980 BLAKE2B 69832a3a4e4c53c821d8e5a118435f075528c451b9f82324ce0b3187b530a14e3d342fb655dc5c7b59ec5ccc48cdb50bdb43462e5ae83fd7da1756c68ae4cb08 SHA512 25502debd0e253a24339b572ec734ae55a32ff657b59386439cd26d7940e431217873bdd56076dd7694f1b322de5efacb6615186f0cb7a97c73bd02440cb582b
+DIST thunderbird-158.0-en-GB.xpi 476497 BLAKE2B 0ea0a16b6dc0daae01ab468cea37c5e020bd11c6cd51f3fe75da82596a275084e36814725b5b17660d55c9c4dc4e37556098dfc5acd27575103ee5d22077a452 SHA512 251dbf513d7d8ec29e364d2df8573f2be4fd6205b961172165a485b17011f6471bcde61492b29fc6f2c96d5e51d96c7e7570e0de1a6bfc13563206f50c6157f4
+DIST thunderbird-158.0-es-AR.xpi 521678 BLAKE2B 8b7bcd89bf2dca17bdde09bcdec860e5e11e5514df7ab56b929c1bb2bec0070ed49ae2310828de27d7bb325ed85600eec40a0935e6a6344d0387f65bdacb6952 SHA512 ff8c6941a16347823eee5386d055e020df603b493a31ea7d5b6e84d4db41db4e98c359a4d753d3e797d64ef5e431029c842ef1350fc9958db21739c50ee02083
+DIST thunderbird-158.0-es-ES.xpi 515524 BLAKE2B 06dc8bf0692085b28521bec68f43f1655b419a5f97113fad012482663b3589befcec65c30ce915f6d63f11eb155dc23fd53db01e1a19e0782979dfbb87ff3582 SHA512 8d2ac836f8254c0761eaf805e366d9d10c669beb764f059ba390488ec04fb79206a4c8ff758264cfccbc421038402fd35e0efb71651aa09811d2974dd4eefed2
+DIST thunderbird-158.0-es-MX.xpi 509312 BLAKE2B 9ab39b2dcfebc6608d92f8c78df72c33325835400169adcc1033d5cb5ef69bef211e323c461559209e4af2e441c0986b269180504ea321972ece1ae86a6afe58 SHA512 33d319976ab66ca1a2072dda91724f6686aeca6bb34b725763350391a4d48cc9630a38f1fcba7c5b0ce0709a3671298350db88f6a85ccfabc84425885ed45e75
+DIST thunderbird-158.0-et.xpi 463018 BLAKE2B 270bc4193dc092f051197751b1b352d019bd3dcee4f38dba27f1a1e755489385fe2a285ae4893ef5a89bf9baab29acef467769525331340e9c8036e2131380c0 SHA512 df167bc5601b552b12d88dc72ef365b13e7387cdde2d6727fcb16bdf16f311d5f784165dbd09f0f582035dd779e7f69285a8449e0283c103c17aceb28cffb98b
+DIST thunderbird-158.0-eu.xpi 499714 BLAKE2B 86af387e381cd52f5e537083f09f705a94145bedc1aa103a245932ecf4972147f6fc84bc45fc743bf8bcb2ba607cee68ed0b3ca9eeb475b7effd5a8ca31e4a9b SHA512 1afdb8e66355ee113aa31986d539610e7e487cc84519cb50c5eb7faeefac329e5080020aebf0baea9d0982e45f1c0c8202f54bf4160608cc5f23ef94dbb1b60b
+DIST thunderbird-158.0-fi.xpi 497694 BLAKE2B ee816236ec9deeec249bcda836388469e295a992360d42db938ea50df922e4f269a03ddda7361a82d897998ca1f5bbed7782b346df5102a660286f7fc71617d6 SHA512 1b14e0fcc30ebc982f1ed28fd1d5b3678b4614c1d466b0f639fe0ddf89191eed10231658b5de7daf03dd1bc4985d97418bb3df104d3587ffdf7df90730e2fb51
+DIST thunderbird-158.0-fr.xpi 536183 BLAKE2B 83f63334f96ef6c415813ce93f2ba99299e3a1fcb0759d33da7dec75a2301bbf5a50a0f38e48643029cf708f2bef85a9e953197506e2cf72c953e6aca5fc6e22 SHA512 537620a14c24ffdbd202d4181bde978dc19d72d1f87bbd5648bcb0e5705af6ab6309a6de576c750823cfd90267d8a93963ba44f6ac7de11db50e03dff5754f33
+DIST thunderbird-158.0-fy-NL.xpi 515823 BLAKE2B 1c4005cd9b56971d7822458368854e0780540f24ac307730a46c737ec9796a1ae52b4c97479e17244a7523733315afae3c08df7718e746e410f6bf8046bcbe5e SHA512 2ae1fcbc28bc9cd80e3855ea4bd25ed35ae27cc06464fa62156d1e006b20d802d48dc9af7d02039de92fdcce5867f78897c135b78bc775ba413ac5fd084c84c7
+DIST thunderbird-158.0-ga-IE.xpi 430592 BLAKE2B eeff5b440eab59625c4db20bae3340fb5f65181d5f1780dba1df743f429d420d7c16592a2d31376ce55c85da78d3df7e590b76b4e78e85cede449e34cc87672e SHA512 3619fe628e67ebe4a9c549e76cbf064b683b1f05d4bd3ece491e59e6c3a7309fd9c712312a8d49a89942cced8e9ee5d511d88c8a565e103c1e8ac8804c9ef331
+DIST thunderbird-158.0-gd.xpi 484685 BLAKE2B a429143e100bb4316bd35a32027005500c1c1552a455fb395bc97ebd0cb030d9e88764b04f7b56c936eaebecddd869872eb48639ec4fa295c856b97293293511 SHA512 898375879545537e74df126c0e91718f7ac3664da4adafa8ba32445bacb61c275738da7aa5608f99611879a129354b467348491acbed5c9047a6cc1179c12aa8
+DIST thunderbird-158.0-gl.xpi 497646 BLAKE2B d2ed4a1fcaed56af4d85b67b5c5d8b2c3fd9d7d3bde9a4a11f7fd3d8670083d33b0a4586dc967045b693280cfcfe23dea128a589254456f985018dcf66947dee SHA512 95d6fd6694e61a26fd2a71014570c03ed40ec21308e7dff29aa29bcd18f50849efbfa380a6c9502a89ad21458b755d54e29fdaa576ea66161e85993fb0d546c1
+DIST thunderbird-158.0-he.xpi 486610 BLAKE2B 40af7bd38dcce35286637e85859d0feae729ca235caf7d4d0452b538c588091f3a42bfb582fe075a525941df2ef9c684682ce2aa4f9580ed856369728189c36e SHA512 5a604bbae8a83e1593cca6570747125210429ed9c2ee6b580f598f1a6e57e64abef197c47b12d7ba808e3c38ab4be58476848f1684b2ce61336d5f6614ee5eb3
+DIST thunderbird-158.0-hr.xpi 496459 BLAKE2B cac5995d1d0f1d476b3a496d8239577fe46b830fe5d01b0932eea789da0df7254b7567fcb39b511c94fa6690ac1c37853e8441308ecd9d67d5491061810b7e8a SHA512 a8b851b57f3bf65dfbd5b23415e2d2143235b0a6f39d7bc4a4a5f9d61fc479d7122d4965dcc1c9ae4512b862385cfd7a78e38f307208adba7febc6871791433e
+DIST thunderbird-158.0-hsb.xpi 542642 BLAKE2B 1081140ffbfaae6b3ef25d7888600f85f7214bbf8dfcd8cab63e40866e1a06ab250007af7b919d7447849aac92a5ec01ac454ddb7cc1a7461168b0f1950eb056 SHA512 85091049e1a84f378926580a7358aafddce54adb6fa46254947629343283f89510e9db68be46ceafd2ce982fe0b61b046d90a728eab44cd64a594bdf12c796e8
+DIST thunderbird-158.0-hu.xpi 545417 BLAKE2B bba455f019e6fadf68d7dbe04fbd3cb3cb139ea256ec970ac98f508dd5187fe349b6d7d7ef9ec279d87207d4c590d59e6793a4d0b74f272ef342da697fc5e124 SHA512 c05d403396da64ca1f51bddc9410970da99643bef74bd996d485c1b28918a2e64551c5a1cf8225cb0bd42e97942181609ff1135045c4655c39ce514f01848497
+DIST thunderbird-158.0-id.xpi 482956 BLAKE2B 9f0bc82e316f45338b5f345387fa385e113c36aeb5144aaf9db4722334dc478fbe95895377b151645bc397ad5952fc281c69af54136cdd127952af1a91b1081d SHA512 548b15e6481e69c7ff2a39912a464830446bd903bbe8b17626f82f5d6404b6d440dc4914602aeb3963e57b95c40b379e1de4dd3f9cf350c1c14f0b538d2589b7
+DIST thunderbird-158.0-is.xpi 510430 BLAKE2B 0ed96410d7debc8ce598fca385eb794947b13ec108106feff4d3cd17a19301dc89d50f16e8ce8187fff44fefb9c21afc634c4a430842d94090bef0eef55fa09c SHA512 8e3f88a11c08a20c91b35081877e7cd6c8853809a346ac0ff9b38cb31f2598a842019359f1d60b213015f716921e50799d56d1835464c5a57348cf83a6f01a3c
+DIST thunderbird-158.0-it.xpi 515224 BLAKE2B 507072228ed542b6a4f714a446ceef5db6e55ce2af67a577f4e4f3b44b1783648d9eb86e75dea599b37a1294c92541ad16b649aa50b39a7019d015b1b1fc1bd3 SHA512 1558537712eb6d005a4a0e167fbc19bc093196ce25c82006f2ce167a30aae8d2b15b0617d7b84f5b992fbaed6276ae7b992070743cf60dbdd44e52b6abd95df5
+DIST thunderbird-158.0-ja.xpi 567776 BLAKE2B ea8aa217f20d71b271c3a3feaed608a9589a201e6a7ba18a341bb2102a7cf38e47a0cd6939652ca1af63a1179393b828a2705f9480c5b82ab66c8351602ef581 SHA512 ea3a23834a082f2ddc4c98c87985b25541213a82e4d5ef1cd9a76786cc38bab7e0cf1ec5e609b41edc02a71d548e3084dd167573de288d696d05ff49dd00e133
+DIST thunderbird-158.0-ka.xpi 584471 BLAKE2B d9f769c68ba018fd72d7d1a85d6748a57ac0205ca6d2349eaf904ff23b9210c36deeb143cc4a7ee5510a716005549bf2b635b0f8ecd6dd07f087ff8fe9bee195 SHA512 b08fb96c26bbc8925824e50468bd8c8dc77284af4e3c26f98e6d3d791386f710c2d1b7e99f7afd5b4d3058a9ab21b656ea84d9d21728f0332cb9adc7d62e3804
+DIST thunderbird-158.0-kab.xpi 486969 BLAKE2B 97d0bfb7ebfed2ca810257f377acab26a8f241beb33404fd4c155a23c59e8e9fd7bc0a8fa13c8d009946fb2e00d1e4cf38d41da656587ec355ee906c284aac97 SHA512 f14995a609a6b0a7b498c90c3319ec25c305b5813c75010fb426acfb2779e849356f2627374510e880847340cf783a1043b8a142f6169d28103ee0a81098610b
+DIST thunderbird-158.0-kk.xpi 610744 BLAKE2B a15a7c4056a21ec6d356fa778e404031b86142c8d70c9bdd8390b189b5161bf614bc819c26a90e7ce4fbb59a32a13112ccd8ede0d1f9bd62bc8d97c4e7abfde9 SHA512 8f14172a8bc7b0b45d5baa9f33724f8c6f942a0f870b8e832661caf62eea8ee4481b095364a3607d3dedc5fe757638c054bd5ae0a289f6c2fff0e74fdff33387
+DIST thunderbird-158.0-ko.xpi 540985 BLAKE2B 52790cd0da8b4903692615fc38c2376f403c84aecb74c1e4bd4a10c81a771f7daa722462734d1088d4b949281c549d000d825b8f0a303cf5bc9a75ad40a0af7c SHA512 69929179e5e6df276962dd208f263ae17d1c57b7101908e25c544177e2487b490eb921d567ae6a64df96e81e4de3e4709ff17a30289c036d0bc5616ea00ec42b
+DIST thunderbird-158.0-lt.xpi 480522 BLAKE2B 4a34e76833f96624e649e596bada57e29422120e7a81fe7a532ab80b48e1907fc8775f68d6ba0ade7c75b4fe40e55c8321d3fa7b2fa7f46c0eec1382f35b8122 SHA512 b0fadae5ce0624784252f8ed8ae2fee1c062738da80db69c5952f3345c3c0e5b63f369e62337733ef6c154b24c9c6329175a41da21291a5f3f924f8b331f0c53
+DIST thunderbird-158.0-lv.xpi 461100 BLAKE2B 2d4847e42a728b2b5711b9aef17ad172255c8d441648e968a50ea42fa1b309855f2af454fd13669d8a5c39b16bd3a6c4e6bfb1da52348bb5df14cd5376378dca SHA512 74783a77012824686ccfff53d963c9469d71f370b1d1c8eb0c872d8b89a37d7a43c3e491a95797a9c379fa934449c8fc5513384f43a62823f1571d93d1f4a8cb
+DIST thunderbird-158.0-ms.xpi 402933 BLAKE2B 4d37ffee33886b96eda3c2e40ddfaac6468069f4175dbe7d3bc604a55b611d5da53ad491e3540ae4c34e35d4d1d08a9c1e4c558663847828c783cf935a8b4b9a SHA512 db3c422b5e5f0be03c67b9653bfaf608a0db80495df71c1996f015e6f08efc6153fb133a51dfac611161f383f6f37f44e0ca5316cc58d40c1759fb99ed61bbd3
+DIST thunderbird-158.0-nb-NO.xpi 499125 BLAKE2B a3748879fad03437838abc4d90c6b45f6f86d00ec84e977ead81788522e5dff747351e4619e5660895e80d13093c73cd6c2c496221601f0125b3b27561d7a293 SHA512 76644d3f6ea22da7eaadc3de42f6b8a5988865c6b4d60828e3fe9cb666632e3315620c7685f8d1d59087c3d42b8464c3e1b198d459482ff0a48a67a47964fa96
+DIST thunderbird-158.0-nl.xpi 508857 BLAKE2B ca4be9a0111ffe334bed5f51934c973c5c0cb4f4042e05e4c34c0d679fea9d16d39644b2999913d77c4dc519d7fbaec9967945263d6fe6089fa22e5abe9c28c1 SHA512 1745dbdcbb02eeadd797dfc148ecf175222aaa29277cd7cc8c9d57a3b378c72dfc8966e53ab1ed65f69412425974a8b360ff4a252991541723a4f0dcc67beb7d
+DIST thunderbird-158.0-nn-NO.xpi 502049 BLAKE2B f4965c4e5dd58f7e424a815a8436f7eb21a46a270ac9d37b7a9c6958205f24726ebea3795da033ff337e89d59535db4c028faaedc75dd0398948d38544f93fc7 SHA512 3bded4946c8ae756fd3d5b0a3d977f682deec764179225575e97852b13a4189cc4ebbb1a7ed66a65327ae5b87f7d1a1877de257aa5ec869de5b350fa017f6d7f
+DIST thunderbird-158.0-pa-IN.xpi 490976 BLAKE2B 3b476d6732e89737438d91ccb9f497a6c03ae4cf2f23c6846af44217677ecb07172a708f2d10c7d46ecd34fade493a9b99005dd2c4d79bc70282093848a8ebbe SHA512 ad0a820ad73507378017fe7aa44276a488c9f763876b8505c31b8730eb2cb4e3f9c5e298c660f409a3a9539522196d76fd9a7b9ca9777c4f233f431cbcdce1f0
+DIST thunderbird-158.0-pl.xpi 544410 BLAKE2B 12f1a861bb40cb1c8133d8f462eb392d2e80a9a35cd62a783fa6d8c6174d0ea93a129dbab8af7e146afaf5340c1351388b51c6877bb5996e52afbd6ea419871f SHA512 75f83ddc8014500199ef048254af6f546292bd8afde8c32875115826069647609da1eb42c487fd9af3ce8abfb7eb1e77823127cfed09f73520bedeba8e41197c
+DIST thunderbird-158.0-pt-BR.xpi 509876 BLAKE2B 9499a8b398cb9479adfc976870f073e8b82b81d05e7eff810ed0bebdf5598145ca28841e82f9fc63531a111a7fab1291b37702abd5656b47dd2de9b78fcb131d SHA512 40dc0f5a52f9f6283290937915fafef3b6d85f2b3845ab7213bbe112d7c841d82dbee2eebc9f8fa1d579dca9b83f1548492c0d950a250785335c0131132fea05
+DIST thunderbird-158.0-pt-PT.xpi 521722 BLAKE2B 2594d0a03f575a1910f772177f30c95f188633df8efdb433e9a8a1c132e1a1048ea6d56ccbd38ef2a9302a2c27860da3e8a5a3d1a7d509c6be096c8b2fee0dcc SHA512 31a1ef8510a6a67588cd463a0511493b0329f6b35e0e687179d516f383488b2ca0510e2030eb77778905de8f00c365d57fc09650d3911a9ce88b3b312bb1a771
+DIST thunderbird-158.0-rm.xpi 496617 BLAKE2B 489134577ad93763f96608cb479aaaa9ec5ad5191e9d3800b0f20a15480c5c2dc228bfab8bd527796f41183ec3b0be37f6960ef106bba62ce8a42265345656ee SHA512 fde4b666651bad98d06f145e611569f16afb98e9b5035769cb942c6b591735822316de9fec8a8aad9a825cc7f7f79c83a7e786d9800427f181563f285492eedc
+DIST thunderbird-158.0-ro.xpi 528844 BLAKE2B 3492aeb244e622aa8ddebcc01394f00bbae066a60bfdc48df18ed7fd3723e5c132dab71fd69a63e69d405d5d1700c55266af09cf693986cf84310809bfd51dcb SHA512 2184579883f816e731677ccba0353a3f3fa62cbf9e08631ee46358a3dbda71b31cbf176543856a52af938166e14902b073bf6d01c6bcae8d98a377c537c782bc
+DIST thunderbird-158.0-ru.xpi 625370 BLAKE2B ac84fd30c517966a7669834abfe0c0de8a39b2cccd2b9ac2fd46ff4385a800d4bf8ff87d1aa37963c8c364e6945c629e972c9b45ebfb3f5c7987da99e23c3842 SHA512 afd629e47d98af3ae0c5725b94fe7ff3ce9314506d4b649c2a857fbb19b2bbb60be7323fac4ed2e8323e460bca2d2ea24f396c90c66c9c0bad778440bb1891a9
+DIST thunderbird-158.0-sk.xpi 549277 BLAKE2B 7c7c68a1573daf128f7378653852c3de4368e46d4d0fba72af6042261e8425399f0eac01fcf396c7e11244e94ff5d719a95004c9d5ce206515072e6e3f7be2fc SHA512 f53f58713c8f5623a912f12c70b7f3b12089f14710dfb2f79b863d865a2de018c00bf31e71a82e27a59a73125fe340d8ff7f83f62258d3f4541a216321da362c
+DIST thunderbird-158.0-sl.xpi 512601 BLAKE2B 842f1573c8ff429b5c8cecc2691c649f6b13fb2d6a4097af5fb14a9ebcfd25033731c92c7017be511e90577d38802222c77d1321284bc8258ecad18a8665c8c5 SHA512 061509ba8d63ade30a02865a8e75a7d02de65cb2e137303163b3244d4a7b7de13d065ff8e9809dfa9bc3a8f74e7a6babc55c42b495f2b86707a249bd50478a20
+DIST thunderbird-158.0-sq.xpi 521659 BLAKE2B 3154909a816eb3430300641fdfa90de9519509a25355cf06cf4891208b26479a4ed5cadf99ddd19019007dab3107a7b88797ecba2529c495fc3e2de1d0b96e2a SHA512 a1047fd27dca0f35a84184584442961475513435f6ebd93c483918ae73ac850672ed0a73af5b594150369978f3018d6851ffcdcb99c757a4bb06cfdea0037920
+DIST thunderbird-158.0-sr.xpi 586555 BLAKE2B beccde54d9747f61665281a556be1f118b4ac408acd0ef572ccdc68c78f0db2ca9a7ab4aa500c16c76ccac0d321709b5480539c9a93f67ae5ca878e270b81adf SHA512 1dbf1e9dcef3b33acc588f633aec812de2f369e1e9012d2db8561ef5673299fd0a0788f80fada938ea91d72a13f472294abc71808cd59f9ce5008b7bcd7e88ae
+DIST thunderbird-158.0-sv-SE.xpi 511034 BLAKE2B 05870185f0b953cade34edf5521023973f510727b4d8deae7e37bc3eb91b09793ff21060a9cf7f78c89014f2afee35e334fbf153e5daa7bf22594aa822cb66d5 SHA512 f450116009b250a2003abbe24711210559a9497fe61543091875a0fcfc6dca6ebdecbae1aa12184e91712c195aee53fe7028f81b94a31b1c1ee57fed5dae2f57
+DIST thunderbird-158.0-th.xpi 582073 BLAKE2B 9ededa0d48938bf3e0385f503ae568981c3fa9105f653c0a5191ee6f7dfc9a74d280c6923eaa0aebf19aa3a04286b286e2f9cb52c78c1060847f69b4d51d22f4 SHA512 bbf0855f66ad80c09adf6685521d18c62fbfe2b1d222e5af13e47cd2fb40c8e6fb67cabe790bb4d17d6e228fe64dcc8e2b5692a1137822d05ad28532e9afec3a
+DIST thunderbird-158.0-tr.xpi 520635 BLAKE2B 665b2d43de5754b7d92d7d982060935612eae0ac268c88e18a2971ce8bde059f92c4a8a1bb498490115f65d906c73b69a5265de9aa296de823e9ed35939526d2 SHA512 a8304089493640f472f57bf105194bda3299439293a974cb98f62814347a21614792e04d7de894eee0c0af3eb70c5ffb97a70b15bafbffaf3be9c1d7ca04f1ad
+DIST thunderbird-158.0-uk.xpi 593475 BLAKE2B 05b0d661d933c06912dc0d9c84d608928875805eac6d9992f92ba46d22482659332834f92f81f2a88787f89a4aaad1e97ddb61f96d8d17df4590c8cd5c659552 SHA512 26ab6e9423e47ae952145cfd2b7965fb109e209cc4cdd879f81bf2a5daca01ac28dc0ccc7d635622e9e1ebe4d696fddef631dd96c44a1297656c8fcd64527d13
+DIST thunderbird-158.0-uz.xpi 416416 BLAKE2B 17074bc49d80a2b704947e558a3ad1b2dbfc8e98bd8432fa4035e27ed14eab701c9587a737bcc719d81584c73e17970b37645f30b86b26c5852cc7824676b561 SHA512 0eb4538a93561784b18617ebf0502da1a27123c57ba1aebf53b67f7f462c734f1f8d5efbf4e2b2492e6d1d61e6dd2fb9cdfa065a227aded667f26f2f35d2a712
+DIST thunderbird-158.0-vi.xpi 549920 BLAKE2B 4ea9f4cf551c3c85fc8bfa3c47e8e159e4c8cdb68601a06ad37f9e36300dc86d82a677a65280fdb7220c3fccd2a8ca04015e8b1c0c94a911672ebaa8dd112f13 SHA512 72c2081ba455cd6fb371845e6cd3ca4aa5eeac511c04400e2b53fae7ae49acf867a5895f427cf6576e2d4f96908b45bab86bcfa5cfb462ae1527ddd413d9944d
+DIST thunderbird-158.0-zh-CN.xpi 526326 BLAKE2B 9b6a10d52ee369d57042e0842ca18f4045e96710b8a2518cecae466a3fa29ea85a26142d607f34796e53e5656ad70073a40f3b318db125b125e55cd14738450e SHA512 6df85be0a545fc7bc142fd79a96faa33b7af3155db1f2e1d5e29a9b82136c822475e91c430a3c527708d1640242488d5d2f9957b05e304f153eab26d1b799e41
+DIST thunderbird-158.0-zh-TW.xpi 538334 BLAKE2B 16fb322434c41c95bc833dca263f15eb923478bd4a73f17a4e9cbacb4d3bdbf47ba723cfaec22f27a71b32b7c517d2e066bd844f3c5276dc277a14919815a04e SHA512 0ec863e32d01912775938ca2de3e6021f7fe9a2c44b06bd23c7e2a26b640231ac5b98b4ab4e2ebd7d849a3aaad4f12c20fd749dbeff71eab2917c1ea0c6331f1
DIST thunderbird-bin_i686-140.16.0.tar.xz 78074112 BLAKE2B 23ffb15b6d2832c63e2a8c668e03c123e0fa374a5952c2ee60d72b96559d7096203841169287e8ed8a9cc301f275d00730cf12f4de5810751a04f299b73998f6 SHA512 f06bb91d231e6918d66270bc3abb01e8df740ad6f4074fd6695797a1454cf8d0005b55f2890fd0830f12b2116d338b4d099c710d1b328b8503de53d2b9883a53
DIST thunderbird-bin_x86_64-140.16.0.tar.xz 74722748 BLAKE2B ea1bd2f611fb1c4a37a41d098a61c21f34bfafe6bf91c7a8009aa6897750f55c0b64b863434cc957d11d699184c6566e473a732843dd0df8372a3404d789363b SHA512 b9b9348ae37c71c8bacb74f233782ed2b869da2b0d40e6aeeb1d9d1b31aee1e2649334eea67f30f9296aaab5b8a432bd96a36384226096d0774aea31456cab72
DIST thunderbird-bin_x86_64-153.3.0.tar.xz 85631476 BLAKE2B 6a4a0157d9d4549491d977b675b91b939665f845350b9ffe793786cc873cef753135e0768797a966f8ea806df1301e5226e1b1b51d457ea15fd6af0f7f654a8d SHA512 7328b96cafc09cb4ab2b08cff70cb4b60b7afaedc135a28cbf4356e3352518710c01f1dca55dd0aaafb1033f92e4bb948a09fc1098bfda91a1091d298ca1714b
DIST thunderbird-bin_x86_64-153.4.0.tar.xz 85254760 BLAKE2B e514205369c20dd1c082d701512709336318d4e7f0afc7e7ac7759598765f6b8b4dbe33b4dc873cd409da3b8f31b28d8e8bf610b44f99cdf6badbda0c0184a1a SHA512 16063c8f71eda1de18dd5a1e350777250f802b51e7f2023dbdcb1bd0deba7fc343a4bdc4d32b1ca37cb99a0e9e1540a3c75a3b661b201a5d36ffc7f75a65e93f
+DIST thunderbird-bin_x86_64-153.5.0.tar.xz 85240508 BLAKE2B 20dc91cd7713c290664fad3b777a7e477bf6b8de5b7d4f30b5ba502884d5d49b0f6166cfd64ffd2c1bc98111994385f7cc7e542d056cd0a9a9d3ad7f89e557e7 SHA512 4b5c4a988307876f861b3e40ece13a8fac4707347d573332b35319bf1d4d9f45534076decc34e23fee6de8e75f65eead4620ca435a8ab0f20dfcc6e2a6ec5850
DIST thunderbird-bin_x86_64-156.0.1.tar.xz 86459552 BLAKE2B c9b04fa83470a2faa9e28c992ea112a577c2a698d5f6a9cd8dc9306c0e8b5cd88f42f1139c29679c7551f101854ef6079aa32c8947bfc7587e9b1839af1831a0 SHA512 9890357ca24c604e1dddd8ab6ff4b6bd565a3da5f726a8389de8061146c329e31f7f3265e81bae4f7bdaad593f0e67371a87153d7999e63c12c16d2fdafb47b4
DIST thunderbird-bin_x86_64-156.0.tar.xz 86287500 BLAKE2B e1028bebcbf69bbefb3e6dbeb67bd8854e91fc239ff335bb1016f086a4a0c300bbc90751d0864c27bd7c37d33447db754668f5ead2dcfc91e2dd4878041489d1 SHA512 e50e2982ba8a01e2fffbf10add3d05d0dac3a7db9b27d527b97d7d63a01aa5b886b90cbc3e4356b9375d44f635becd8baf677ed7a13fa600f1a992ebca3b917b
DIST thunderbird-bin_x86_64-157.0.1.tar.xz 86709212 BLAKE2B 760f7817dada1207927721caa5b3e47136cfd7de383aae618076e51ec04ef0c6abb943dec2c2b827a7bba11f07d4a967114688f174187a9f0502eee8afc91780 SHA512 8918c554924886f21ecb394cd877cf69cd3f343fb3dfab829a9793fbf558b1e90a32249a2f76afa781fdbb09e4f498b12f146f6078cf4be9339c09897c3fee27
DIST thunderbird-bin_x86_64-157.0.tar.xz 86576560 BLAKE2B 57153a58eaf07593ecd309a72ba05f523d5408463ce56d3d968f6e4a034adedb3c9e425a510eb42b793b4ac2fb253267e13d0b509257011fa410e48183f07301 SHA512 23c3411d4ba404d884616014c1e1a22030928f3cf6922693fa8bbb86d2f8eec42c1f2f608e7b53a10e0f28f4309fb6f9f79ca376e4ae58805cd7a7f4f9b02b02
+DIST thunderbird-bin_x86_64-158.0.tar.xz 87784532 BLAKE2B 0d098e7d19f1846100fdfa32255017f9d422117f0417612950fae3a622b5920522543b8946a945209a35d51ad64ef25843b9d11a04adc7d5a0587feb212f583e SHA512 9712b1be3aa6a2a612e234611cc74b7234214e6785126cd1a0ee4a25f29005fd7626ccde5ebd9803bcfbe4aefb01db69f922ed171d950879e8c796e3c2a886ff
diff --git a/mail-client/thunderbird-bin/thunderbird-bin-153.5.0.ebuild b/mail-client/thunderbird-bin/thunderbird-bin-153.5.0.ebuild
new file mode 100644
index 000000000000..eff5e903d014
--- /dev/null
+++ b/mail-client/thunderbird-bin/thunderbird-bin-153.5.0.ebuild
@@ -0,0 +1,283 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+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 desktop optfeature pax-utils xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+SRC_URI="amd64? ( ${MOZ_SRC_BASE_URI}/linux-x86_64/en-US/${MOZ_P}.tar.xz -> ${PN}_x86_64-${PV}.tar.xz )"
+
+DESCRIPTION="Thunderbird Mail Client"
+HOMEPAGE="https://www.thunderbird.net/"
+
+if [[ -n ${MOZ_ESR} ]] ; then
+ SLOT="0/esr"
+else
+ SLOT="0/stable"
+fi
+
+KEYWORDS="-* ~amd64"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+IUSE="selinux wayland"
+
+RESTRICT="strip"
+
+BDEPEND="app-arch/unzip"
+RDEPEND="${DEPEND}
+ || (
+ media-libs/libpulse
+ media-sound/apulse
+ )
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ >=dev-libs/glib-2.26:2
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ >=media-libs/freetype-2.4.10
+ sys-apps/dbus
+ virtual/freedesktop-icon-theme
+ >=x11-libs/cairo-1.10[X]
+ x11-libs/gdk-pixbuf:2
+ >=x11-libs/gtk+-3.11:3[X,wayland?]
+ x11-libs/libX11
+ x11-libs/libXcomposite
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ x11-libs/libXi
+ x11-libs/libXrandr
+ x11-libs/libXrender
+ x11-libs/libxcb
+ >=x11-libs/pango-1.22.0
+ selinux? ( sec-policy/selinux-thunderbird )
+"
+
+QA_PREBUILT="opt/${MOZ_PN}/*"
+
+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 es-MX 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
+)
+
+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_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
+}
+
+src_unpack() {
+ local _lp_dir="${WORKDIR}/language_packs"
+ local _src_file
+
+ mkdir "${S}" || die
+
+ 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
+ MY_SRC_FILE=${_src_file}
+ fi
+ done
+}
+
+src_install() {
+ # Set MOZILLA_FIVE_HOME
+ local MOZILLA_FIVE_HOME="/opt/${MOZ_PN}"
+
+ dodir /opt
+ pushd "${ED}"/opt &>/dev/null || die
+ unpack "${MY_SRC_FILE}"
+ popd &>/dev/null || die
+
+ pax-mark m \
+ "${ED}${MOZILLA_FIVE_HOME}"/${MOZ_PN} \
+ "${ED}${MOZILLA_FIVE_HOME}"/${MOZ_PN}-bin
+
+ # Prevent auto-updater from popping up.
+ echo "This installation is managed by Gentoo's package manager." > "${ED}${MOZILLA_FIVE_HOME}"/is-packaged-app
+
+ # Install system-wide preferences
+ local PREFS_DIR="${MOZILLA_FIVE_HOME}/defaults/pref"
+ insinto "${PREFS_DIR}"
+ newins "${FILESDIR}"/gentoo-default-prefs-r1.js gentoo-prefs.js
+
+ local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js"
+
+ # 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="${ED}/${MOZILLA_FIVE_HOME}/chrome/icons/default"
+
+ 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^} (bin)"
+ local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop"
+ local desktop_filename="${PN}.desktop"
+ local exec_command="${PN}"
+ local icon="${PN}"
+ local use_wayland="false"
+
+ if use wayland ; then
+ use_wayland="true"
+ fi
+
+ if [[ -n ${MOZ_ESR} ]] ; then
+ local wmclass="thunderbird-esr"
+ else
+ local wmclass="thunderbird"
+ fi
+
+ cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+ # Add apulse support through our wrapper shell launcher, patchelf-method broken since 119.0.
+ # See bgo#916230, bgo#941873
+ local apulselib=
+ if has_version -r media-sound/apulse[-sdk] ; then
+ apulselib="${EPREFIX}/usr/$(get_libdir)/apulse"
+ ewarn "media-sound/apulse with -sdk use flag detected!"
+ ewarn "Thunderbird-bin will be installed with a wrapper, that attempts to load"
+ ewarn "apulse instead of pipewire/pulseadio. This may lead to sound issues."
+ ewarn "Please either enable sdk use flag for apulse, or remove apulse"
+ ewarn "completely and re-install thunderbird-bin to utilize pipewire/pulseaudio instead."
+ fi
+
+ sed -i \
+ -e "s:@NAME@:${app_name}:" \
+ -e "s:@EXEC@:${exec_command}:" \
+ -e "s:@ICON@:${icon}:" \
+ -e "s:@CLASS@:${wmclass}:" \
+ "${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@:${EPREFIX}${MOZILLA_FIVE_HOME}:" \
+ -e "s:@APULSELIB_DIR@:${apulselib}:" \
+ -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+ "${ED}/usr/bin/${PN}" \
+ || die
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+ optfeature "ffmpeg-based audio/video codec support, required for HTML5 video rendering" media-video/ffmpeg
+ optfeature "encrypted chat support" net-libs/libotr
+ optfeature "desktop notifications" x11-libs/libnotify
+}
diff --git a/mail-client/thunderbird-bin/thunderbird-bin-158.0.ebuild b/mail-client/thunderbird-bin/thunderbird-bin-158.0.ebuild
new file mode 100644
index 000000000000..92f023dbd842
--- /dev/null
+++ b/mail-client/thunderbird-bin/thunderbird-bin-158.0.ebuild
@@ -0,0 +1,283 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+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"
+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 desktop optfeature pax-utils xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+SRC_URI="amd64? ( ${MOZ_SRC_BASE_URI}/linux-x86_64/en-US/${MOZ_P}.tar.xz -> ${PN}_x86_64-${PV}.tar.xz )"
+
+DESCRIPTION="Thunderbird Mail Client"
+HOMEPAGE="https://www.thunderbird.net/"
+
+if [[ -n ${MOZ_ESR} ]] ; then
+ SLOT="0/esr"
+else
+ SLOT="0/stable"
+fi
+
+KEYWORDS="-* amd64"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+IUSE="selinux wayland"
+
+RESTRICT="strip"
+
+BDEPEND="app-arch/unzip"
+RDEPEND="${DEPEND}
+ || (
+ media-libs/libpulse
+ media-sound/apulse
+ )
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ >=dev-libs/glib-2.26:2
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ >=media-libs/freetype-2.4.10
+ sys-apps/dbus
+ virtual/freedesktop-icon-theme
+ >=x11-libs/cairo-1.10[X]
+ x11-libs/gdk-pixbuf:2
+ >=x11-libs/gtk+-3.11:3[X,wayland?]
+ x11-libs/libX11
+ x11-libs/libXcomposite
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ x11-libs/libXi
+ x11-libs/libXrandr
+ x11-libs/libXrender
+ x11-libs/libxcb
+ >=x11-libs/pango-1.22.0
+ selinux? ( sec-policy/selinux-thunderbird )
+"
+
+QA_PREBUILT="opt/${MOZ_PN}/*"
+
+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 es-MX 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
+)
+
+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_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
+}
+
+src_unpack() {
+ local _lp_dir="${WORKDIR}/language_packs"
+ local _src_file
+
+ mkdir "${S}" || die
+
+ 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
+ MY_SRC_FILE=${_src_file}
+ fi
+ done
+}
+
+src_install() {
+ # Set MOZILLA_FIVE_HOME
+ local MOZILLA_FIVE_HOME="/opt/${MOZ_PN}"
+
+ dodir /opt
+ pushd "${ED}"/opt &>/dev/null || die
+ unpack "${MY_SRC_FILE}"
+ popd &>/dev/null || die
+
+ pax-mark m \
+ "${ED}${MOZILLA_FIVE_HOME}"/${MOZ_PN} \
+ "${ED}${MOZILLA_FIVE_HOME}"/${MOZ_PN}-bin
+
+ # Prevent auto-updater from popping up.
+ echo "This installation is managed by Gentoo's package manager." > "${ED}${MOZILLA_FIVE_HOME}"/is-packaged-app
+
+ # Install system-wide preferences
+ local PREFS_DIR="${MOZILLA_FIVE_HOME}/defaults/pref"
+ insinto "${PREFS_DIR}"
+ newins "${FILESDIR}"/gentoo-default-prefs-r1.js gentoo-prefs.js
+
+ local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js"
+
+ # 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="${ED}/${MOZILLA_FIVE_HOME}/chrome/icons/default"
+
+ 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^} (bin)"
+ local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop"
+ local desktop_filename="${PN}.desktop"
+ local exec_command="${PN}"
+ local icon="${PN}"
+ local use_wayland="false"
+
+ if use wayland ; then
+ use_wayland="true"
+ fi
+
+ if [[ -n ${MOZ_ESR} ]] ; then
+ local wmclass="thunderbird-esr"
+ else
+ local wmclass="thunderbird"
+ fi
+
+ cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+ # Add apulse support through our wrapper shell launcher, patchelf-method broken since 119.0.
+ # See bgo#916230, bgo#941873
+ local apulselib=
+ if has_version -r media-sound/apulse[-sdk] ; then
+ apulselib="${EPREFIX}/usr/$(get_libdir)/apulse"
+ ewarn "media-sound/apulse with -sdk use flag detected!"
+ ewarn "Thunderbird-bin will be installed with a wrapper, that attempts to load"
+ ewarn "apulse instead of pipewire/pulseadio. This may lead to sound issues."
+ ewarn "Please either enable sdk use flag for apulse, or remove apulse"
+ ewarn "completely and re-install thunderbird-bin to utilize pipewire/pulseaudio instead."
+ fi
+
+ sed -i \
+ -e "s:@NAME@:${app_name}:" \
+ -e "s:@EXEC@:${exec_command}:" \
+ -e "s:@ICON@:${icon}:" \
+ -e "s:@CLASS@:${wmclass}:" \
+ "${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@:${EPREFIX}${MOZILLA_FIVE_HOME}:" \
+ -e "s:@APULSELIB_DIR@:${apulselib}:" \
+ -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+ "${ED}/usr/bin/${PN}" \
+ || die
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+ optfeature "ffmpeg-based audio/video codec support, required for HTML5 video rendering" media-video/ffmpeg
+ optfeature "encrypted chat support" net-libs/libotr
+ optfeature "desktop notifications" x11-libs/libnotify
+}
diff --git a/mail-client/thunderbird-l10n/Manifest b/mail-client/thunderbird-l10n/Manifest
index 64729eea291d..c59d3b030008 100644
--- a/mail-client/thunderbird-l10n/Manifest
+++ b/mail-client/thunderbird-l10n/Manifest
@@ -124,6 +124,69 @@ DIST thunderbird-153.4.0esr-uz.xpi 419572 BLAKE2B acd56f18a2142d9d8737f22532be76
DIST thunderbird-153.4.0esr-vi.xpi 541833 BLAKE2B bf19221f0452c1ace3232158a41c59405d550907e159f11302160b4d87fa59f0b5b32d3ef46df1ec40873bc45caca3fbede0550a232c41b355272fe4aa054c8a SHA512 a92fbacaf1a2f35fa12d2fe3efbe8f9e3c618acc909775fdeadf24cdb4872c8beabc47a460c0de0ae3f21df3b5e8d588e4a6ea8dd0a75b40f2969d9d7ca68a50
DIST thunderbird-153.4.0esr-zh-CN.xpi 526376 BLAKE2B d2f2e91c4caf2adf1bceabc562eacbd6dc29e6c7609f799fee4d2a6ba9cd253f06bb4d9a00d1e5dda54e99afeaec0d6a769b1d3921f1704152e4ba1b278975c8 SHA512 c73aa1d3b74f1f8ed3c12cb6e0f99165e7d56780147d1c088ff37d9c870b47ba33b44ca041928293f78f8f7d492cc46272386c5ec85afeb3650ec7c1ec67542e
DIST thunderbird-153.4.0esr-zh-TW.xpi 530606 BLAKE2B 56f4aff2665e792c5f5c155ec6f1d758ebd1a3c110059a21cbbe3266e937804671d339bf5866544eef349b773fb09ac8f3d9b456346c719dbf67cdd833281f81 SHA512 b409399495ec681f0127e7063ff8e8715f35bfff912f9e3baa3b8f3b12911dcc5fcb65a208f6ad908b91a59f764c54c38ee628b2d4f075bff54859ecc8006f64
+DIST thunderbird-153.5.0esr-af.xpi 397512 BLAKE2B a95aa60d408d6f8b12c48052b84cc76c218a10d4373316775ea8698dc3ec1a1f116515965870d0621be09952eda4ec5c9de5ad033ec851ac74d5a2b88022854d SHA512 c541b6a24213ade9379ec5f0be9989edecd6cceb621fbdfc35d76d5cf7cc530fc69ef04c81d3777ac993cba469d0908c38e1e2fa0d8fb53e4f582b6d9b853b81
+DIST thunderbird-153.5.0esr-ar.xpi 489253 BLAKE2B 9a5d72ff0b14c1ba0e427fb9d6c0043915e532f2cdfbfeb35ff689ec1b49450d510267bc5218dd0c7a308a2cac69e5050379cc42b30403de5c5f6bcebc5055b7 SHA512 fb32d7e8385bd95eb5d4da56ff1c2ba37204e191108e2a5a8eb1742156c35f89514a990846cec17c28041bcd0147018b207fcce14266f0d950bff772b7982466
+DIST thunderbird-153.5.0esr-ast.xpi 414104 BLAKE2B 3beee67cf55f9ebe16711b0d5e784c25384dfb3d87ca720c32534ee907da691c90a3958777bd7834dadb7af00b9aad11b1f11a101e31ef86c2996a7fa7c0d986 SHA512 11239416faaab998070281931773387aa4aee9f2d3e77d8ae386bbb8b562debdbb77e02f247f3ab7845231e690e76294a038d5f4a26353a1ed3761fed50da4a6
+DIST thunderbird-153.5.0esr-be.xpi 556037 BLAKE2B 5833fe006fa4640b14b9425b4da6fd31be88660d2859e37ddca9c21a2bf1b73ef0e9c243e0bfb39bfc7fb4fac58ba0999327fd93fdfd1728409bd74e8e3bd960 SHA512 26feea90a7ad0901d87879430e16912f67e8debb7b648aecf7ac8352bb063b529628e3194fecfc5897591139d41f50dec83eaf1364d85422d7d60eac827a7eb0
+DIST thunderbird-153.5.0esr-bg.xpi 567693 BLAKE2B 7f11c4121de56b7a1410daff041bbdad0afc75d6ec94917cacaae5f7f88f32fcc0428a491475d653a59b60f64fcfdcf352289c6b39e254263ab2e802694efe82 SHA512 77b4b89206e917038a595e2c2223e10947c5ab21cb299a3b5a74485d0227210284a2b6c315c6c0ca777b1bf35e507cc98cfb0f6b1fb18099a1676aff1c6fb777
+DIST thunderbird-153.5.0esr-br.xpi 440405 BLAKE2B 24a06762d762b4a35f0d51a0fbb844396404d10d18bb7a32c3335cb250098dd53951c54a90855bb928323a05168f249a891003c860bfae1cde16b06c3dd68626 SHA512 9dca7573f5662175dc6113f459f538942a74000d4450233ce4017171b95872e61e223cc869d5f00371e369f09c00b062861c6cfe07afba2b7646b922e58a9190
+DIST thunderbird-153.5.0esr-ca.xpi 478535 BLAKE2B 24ac5140e9b1d697b4c2e1a5f9d02a80f4200c94730e3f53b588c48b31e51c6691e8c8edee17d90deb52bcb2822d483dba6a04e7f4cb805891db87b4e2851c3a SHA512 f5b511bbbc55d053b2eabc75618452029c514f9f388c77e833eff5a4ba59c913b2858710caead42a7085e236a4164c1bf5d3c4dc8c13f25ab05b9455ba83fbfe
+DIST thunderbird-153.5.0esr-cak.xpi 457311 BLAKE2B 4fceb1e77999649dcf1748abf9ccbf641fc6a0cefca61ed5a9e894de45c4c7ea08281fd25216b0769531c663a5ba3a2dc75e9bdb87746cbe7674cedce8161886 SHA512 ae97d5e4be89748a7cc41c9c6cfa950ee528bb21be89ae77ab2536dae92d9c9f4f7018b9532ecd8cdfef8dbcce237d0dfb3203c2e413e5590ea255d8321ba39f
+DIST thunderbird-153.5.0esr-cs.xpi 541340 BLAKE2B 0c96e4eb3fb8fe0e5545f6bd8ee607bdc0425b23b7fc71da3c0aac4da283eece7b1eb3d373faa4225c997dba27f72e9c6de1376019ac5cd0f254b3570a83a7b2 SHA512 3f27727a202268ca5c4a490bb8c78fcaaf47ed93ceac336b2f59b08f8c61229aeabb845a3f3f66d3792cd2c3ec8371292f0fac78efc8140206001bc5dc808410
+DIST thunderbird-153.5.0esr-cy.xpi 508881 BLAKE2B 6966e0e44a88ba6fe05e829e4cbd35c0092820c47c9e67b564ac1808d7ec83a6a764ad1272ebf81bedbe9b5cea653a4e21d64c9e7b9b3d2e8348be1fffd73e46 SHA512 df2648520c1251019b98cde4f8a1f0d7ebced35b72021ba57b4f16216155028c243c697fdceea24f1969e6ba1e5c828d8176533fb720f34327e7d76c13abbea0
+DIST thunderbird-153.5.0esr-da.xpi 494769 BLAKE2B e393d24959bbf6d7ced31389843025732a89dd5ed19062f0f89d458003a9cc634145ae91bd86c666775910cdfafe6c9e94a6d6b0391d6642e973e01e9ac4f774 SHA512 32f132af490a8433f8156d47b44541c86217c1181941b45e3a1a09a59f0a2345db31dc4d45aeb1768eca5b7e5a2c5a8dedcef5cf19eea197a82f1ef135bc2d6b
+DIST thunderbird-153.5.0esr-de.xpi 524901 BLAKE2B 9782f8d4da08f32246e7f809bf4b895bab57dec339c424c2bfd59b0e58719417cc37a8828fbf348897f50f0b4d8df60da7ce20cc168f15bb4ef282b7ae683328 SHA512 9921ec55300de084203ea113031a13aa433a4997d30d54b9416f80dd43eccceee8887605a7917b0215092ed5ae5f4f5a61688eb5abefcf4a2963fa0a5752b4a3
+DIST thunderbird-153.5.0esr-dsb.xpi 538728 BLAKE2B b037bff31547e71d9581b1ad7d4b5c9386d121f57875564dec3bf7eb1ecc8a3e8c93cc50c509e78423161eadb4c811b9c9be1744ee3922270b2493bf0fabf565 SHA512 c535810399fa4ca2b193fbef4f59847c5d8131dbdb743e71418f48150687cdcf64df1e1725cbcc3da10d2b694680bd9b12a66c85c92f7997c8ae4c97f43ba809
+DIST thunderbird-153.5.0esr-el.xpi 631502 BLAKE2B d1d2fb627a214040ab56530fe1e17142e9f1c97390401364e280008065b3cd539b555ab9d7a2d0454fb18694f2c990aa811bdbc056303963cef94a255a7f305a SHA512 711b0391adb65a0366f781c41f954b28795de5fcbc8a7597caa8165ca8056c5843beb1edbd2d2c67cb179d5dd0e0bc0ff27364a993314d11e0337f05115681c8
+DIST thunderbird-153.5.0esr-en-CA.xpi 470431 BLAKE2B caf76de6d25f5f0311b5804c9afe99efd91a49bde5d422c5e36fad92b842f9900670f8d16d4c87587c89f83fa23cffbe92479618f142dd810640456057b32ffb SHA512 e6ae3f53be85622485d288c13a44c396ed5118d53060dc53df791976e32ffcaf560d859ca1a278a85c9f146ffb248a9472442e8c426e40be5d1c5a1172a6137b
+DIST thunderbird-153.5.0esr-en-GB.xpi 470302 BLAKE2B ed5b651b504ccde0755b512854329610a8406c81fead5c8153000a3b5fb442a01e8185fc1a27f38129292622f7b0ceb6ee0bb6f0daad4977966e262acfd240c1 SHA512 f8685bc661bcb447536de28a2450892225a92715682a0e5f88610dd885124015c3a521fae979a5ada6d35f2afc213a521780b49bf60906c13b49c0d993f2674a
+DIST thunderbird-153.5.0esr-es-AR.xpi 514512 BLAKE2B 2330d7b888555052255e213e909a8dd76bb6fabe6f0d8c330dff615dde302d337b63e7b65c326f8a57c9fabc3fe369975b02d4ebbfaee0f9876cbd2dac908fab SHA512 31e7b0b64ed83a0f2b63c29e3396c32054c3abd48f1e6cdea15988e9b5b45cdd909e51801042467fb24722a81bda36874f5d9b179f77ce1ff61ad1f09ffb71d5
+DIST thunderbird-153.5.0esr-es-ES.xpi 516847 BLAKE2B b55a3b78c82c8adbc04775890ffb37752cbd61bef1efddb0dfddb9f1b92bf69096de71ed9f5e527fcd4573310efc151b19454c9687084cb7ab01ba0c113bd7f7 SHA512 befec4b889fa8754b7ad3b3c0f1fc5e4b61799ce7b5da221d190aa46063b5c65f4b5e904fdda0ead71fd5ee76856cf4a6909b1ee833ef80f4a7f214a0b892e9b
+DIST thunderbird-153.5.0esr-et.xpi 464347 BLAKE2B 32f4d74618932be624570ed3fa6146f0204c1e82cffb9e72ecf847ae637075fee87c7c314f77a8a0b7f74353f16f97bdc40da12ca38b51086d8f93510cde35ba SHA512 e34cbc343aad707f89b648de3bf7d4dbc4f066f8e7ef8fc250baabb13db43d25655cbf3be8c7bf61a60fb9c59b60231a2453d01cd27da97447fa46cefc059dad
+DIST thunderbird-153.5.0esr-eu.xpi 497077 BLAKE2B 4e737e3d043ea3fb549068ba9d799c23a67b122119adb599124112d12cc8ee741991c7581cd2089c961e48cb4ed17f8ed7d738c02dbbf1d29f54b4e6815f04d2 SHA512 76221040886e5b777276c7d74c796c925143cd0b0ee2bcd775199b242a1604d91fd03e4275165da62155680cdc37a8717e0a8080e41d3ce0c870a736f21171d0
+DIST thunderbird-153.5.0esr-fi.xpi 498105 BLAKE2B 7ee881e536030b8d1d48e5f391b17e9e813a74852bdcdc90fc90040096bc5cdaa49bae718e301b1fdfa232dcc4790d821917fa445f91dac77e879cd7b13dd787 SHA512 0fc7869fc561af537cec36c7e218a6fdc9ea8b248d2c0b726e9f5de1b79a7992fed97d134b7b89e132a2c12b5fd68f815a4ed1a83dbcfef34d7bad4e93800655
+DIST thunderbird-153.5.0esr-fr.xpi 528628 BLAKE2B ef98435e6f7d9b63df9519222c0801fcc2fd54d201d0dd759d2a2acaf8b1dc590e75d427d3d85290229d58ca7f539e9db5849d3a03b0f2360616718f49e4674d SHA512 ff90a43dfbb4b16afc6e5d7038723222c414f51d1c824c74a180e5b7dbfbb9e35bd3920eda6acec71b1eb46a7c601cf8b7ca65738428a080a055a4e95f93bc44
+DIST thunderbird-153.5.0esr-fy-NL.xpi 510257 BLAKE2B c7f16080d4a153cad43802012a01eef7b7381c70c4516909f131de5b0748ff0a5e9b9b560116a57a1e3a5b6d538319945c9e37b8df526229fce78d08d2510f3a SHA512 291e4c5153d907b4447742e2deaabed4526269b2983f70503280f7fb8d923e827657a98b91996384801cd42fb88c46c116c436988c3b92447465eedf8e6c25b9
+DIST thunderbird-153.5.0esr-ga-IE.xpi 432780 BLAKE2B 68c6e29165225929507493df7ab88ad7debadf9fec43acbdc95b9ecdb8071fce6b044e6097f97bff166af69b3c59b70195f8536cb7c9b06f6da8ab6f1130417d SHA512 b49851cad70ae88d414ffae77e85bda095334331e0241e5ffb43f19ddb4fb600194b047940dc0c1b6208e20ed632e0611855340ef4a367c0b135c96584ac210d
+DIST thunderbird-153.5.0esr-gd.xpi 486235 BLAKE2B 439e6424951e6525e44c60de796b8bedc803fd1cbc423885ff7e7f511c4cc52b65de4d648acec1286cb77e0332a0631aec172ca36be9627b4f7dcc4596c1a5e8 SHA512 bc969b1b9290f9201608bd8791a46e72ce56127388399c21dfdb777ba060b4d956de4b3d894f9ec630d50c9ccd3eec4fbbeaccfd84fe1a150825e21ba782a2dc
+DIST thunderbird-153.5.0esr-gl.xpi 500119 BLAKE2B 62250a5d66d0fdbd49542df37da50d88adf6b95207ca76da411a6e77adb4417c831a865b0f573639416dcb6cdd5edf1eb4043ad4e30f8ebf27af636836ca6390 SHA512 b03ed2841306b0ab2c1ed4f350723f8f6cf70a3b36ac7fb5487b8b4aea814c6f8d5dbb6be88e29e585834a4788ce7607c6d684942afe0f046c0eb401f64ae9c4
+DIST thunderbird-153.5.0esr-he.xpi 484641 BLAKE2B 068d0843edbc8d9379c931343839db8e80ec7475938120c13fab5b8e11a60b2d183a685cb82209b111b613d6cc1632dab3ab018b8f522a9f360543b5ed86de74 SHA512 699f431719fdb7e02cb799f71cd990ac47469a264437786e4c2ec9a12591ad2a236d99c1dd4016d8b3c78e81fc5766da8ef07a58b2313e0156ef689afb144791
+DIST thunderbird-153.5.0esr-hr.xpi 498553 BLAKE2B 2a465d87b87ea807c002ae6a6d987eda73b209bc9743f072d402f3d666a4352afe4eb293b5e9e7d197d969a3a0082d5582fc8ea9e975dcb5ee451fe3478285ae SHA512 5c46cc0bfaca3d337bd691324e78761aa08c1d3350cc9490faa9ca2c27275ba0f115ae919673080aabc70f49d03724936036702d6a4aa8f3c9f37b6b09e5718f
+DIST thunderbird-153.5.0esr-hsb.xpi 536054 BLAKE2B d7da323039a54a8c81f0a8bb5c41b1898f20a7f6a9508054c3096655e3c939c1acb456ad0a6fc6c74eae79d3d5fdb1e6094d95f48d80c79a17e9384141eadf7c SHA512 aa68b99403f367ce506c72508b9f6bda486cb28a98cba9f6e434e15f7eef5dbaccb0ccbff8d4f0de49b680313cc25edb519a986f7a58a1210d8d854384d2d12d
+DIST thunderbird-153.5.0esr-hu.xpi 538223 BLAKE2B 274228ce1f6590fd1005ab296f40955e64fa0a21babd532746f458d1fa620c160c4e668599ce7dd090d15819cde57933ca75bc7a5f2cde3b9fca43b4a6306154 SHA512 a5fd1c1ad5daa39db147b451f4ee704d651768f9215d9fa6991fc9b907b116548887b5006e4feacdaf716d5b8a108efd3a6ac0cd9329f3dc078d996c62b8973b
+DIST thunderbird-153.5.0esr-id.xpi 482849 BLAKE2B 8f11abbd0febf718842363b8cef567ce06c207d8c8ae917690afda65cd9e7c3d609148a246e69bc489e41d727ea9af382c3969796fb89351268adc7080b01b6a SHA512 502d0a280499c3596f05cacffa3d5292d7b953799e79f469c48af2526ffff9ec762bbfb0029fb9a8b2a31bc810ec2a78a37d322ee9ed1647b0bba905fdcb981c
+DIST thunderbird-153.5.0esr-is.xpi 508452 BLAKE2B a143dfdb6e347c30d4bd20f33e4dfd299556d4dfd84cde10ab1fbe3d43570477bc2cd349cd0d1993b784d5709c50f5244eec33e1495fffa5064b46012575ee35 SHA512 d609d230d73e8d3c32aad8cca91b6303872ccda003bd3c7fcb107558493f25f5117034c79674b08f6f55c6dee34f7dd691ca185b6969bb2757e10c9dfe43a51b
+DIST thunderbird-153.5.0esr-it.xpi 507902 BLAKE2B 913232f95fc8428ef39d4da62e15ba003a314207ac78bf07e4a730f4f1da241c855eae8631a123b48bcbe1ab610739d176d25eb0ee414a9c570a94970319f562 SHA512 7ce5f8ee12169eaa6cc39ee5305b44dd5ae1f2fcbd32a322fd110fae89cf639d990f7b1dfa8dfcef28d52e944eea7d358946e10a90438e44a74b3b9eda2bd85e
+DIST thunderbird-153.5.0esr-ja.xpi 559669 BLAKE2B 90f7291b80661f7d325164acea75f624dfa67921eda4305b879c85bcaedf00efee42dd93c087b599d429b0cc4b0461125aa0ef1f9a156f62be1042330895187f SHA512 5a48c7eead7e0e6975284d8882e331993e1f6e592fa0fd9cd8cad2475e99c260864865efc4d9bd1934eae006ecd73e8aadde50c26e33cfd4bca75d4e071ff958
+DIST thunderbird-153.5.0esr-ka.xpi 577083 BLAKE2B 89f0ecdf07f9b77a592b454de0103712e2a8919c1960955439654500b219c6c0f4a40ee59a5c06cda13a750b88042ee2897e5f10d068eb55fb3a3d13e705c517 SHA512 931752ec758a33e4207001dd8f98923d22adee462ba78ad9663a329d91a8a38430f3626a8a34a1ff30e04f55c145481f808f81b42de2e25d9c0c2533c9997684
+DIST thunderbird-153.5.0esr-kab.xpi 488118 BLAKE2B e3e861c31d2cb07bc4266fb025cd0f92256c5b4028b18371c9a787e56efa08d97805711c4ee399147a8062771c1dca6b24b10fc2177e28175d84950f09cb866d SHA512 375620f6fa8f44311c9f9b811eb38d0ee9674d3eb5306a8879344d71d56a3072361d91ff9a696e6369c895a65c198d647e05607045d1b13d092b6ba4eeb99b44
+DIST thunderbird-153.5.0esr-kk.xpi 601234 BLAKE2B 7d288ed59fe997cdb622332f3395a7144c71a3c33b77980880c7348c5f551a18cf41362eea59b4c6eb3a60d3d052d721dbc4df9931386b2af8524cfeb80fea1f SHA512 f546b4531b254730cdec1e2afc2e81c665eb2abd13d41a8745dd402065742f678855c60b7cd536f8334d542ab2dbeecd67b6c226f1487bd8c4bd1d65f005d3bf
+DIST thunderbird-153.5.0esr-ko.xpi 535407 BLAKE2B 190d63e2960ae1fa54112debd6418f11fe334aa225f4f3b2fdca69b4a3069dd87a3e9321c8a92890ea4eba4315d4558412efd7607be16b89002950eac8d1173b SHA512 970858400c2b23b2f107dd35c071373f1be7000a7bf172b5b7615f5d7908059b1a912008f69df53e979b926ccd8c51630a6eaed838d1d79c2efd357b05e52813
+DIST thunderbird-153.5.0esr-lt.xpi 481625 BLAKE2B f28762bfc06d5ca5cbfa9bff216455d5d945fad11e18ff93cb07e8d7da57992a3208b3383d4b49b1b962a9035647928df3b8c04027b2b389b0e7d986829ae063 SHA512 74285fcff2ce57ac756476622665462a0f6215365591cf7c910c06ed1640c109630c4b6c9351531ba5fc2bd1e78d14160214dbe2ce9dbe876f0f268dd11090f7
+DIST thunderbird-153.5.0esr-lv.xpi 457830 BLAKE2B 994cc9d01cb6f6c0cb9762cf7b6cd740cb3317220c69549284cc53e66c90ba1582b3675b7e2d0b708fdc17a5921c969565661ef4209c1c8266d063653ec6a9e0 SHA512 4a1a3456999cefa4eb57aba3a6fb28e3432b2dddd3103eca964dfe81eea74719bdf2d924565c43689dff69c60d38c778663facdcd25526670a5fdf49cdc537bd
+DIST thunderbird-153.5.0esr-ms.xpi 403353 BLAKE2B c4008330ffacc632c955377d2ef551bc8a6f6ac0a8d68ecfa6d484cb78c312390231ed8035f1668b9e7f4dead7343da30858e3e72cba3d1b6af4235f805a1699 SHA512 c0b40cb5827e37f1ae3e58c2d725306ed4a9f4b73ff26c1845c9bb7aa6f3f81adca7df5ad7a71457d16cbe5210c42b22d15e7f83bcf37dc6534dbcf8782835b0
+DIST thunderbird-153.5.0esr-nb-NO.xpi 495086 BLAKE2B a489e7c948f57de79e00b94ea8b358a7341ecf9fef55c96327295ac791e8e372f7f7010cf162d45ea10d55972cc87a3f81f6379e669d6dec409333693ad62451 SHA512 4459adf4ae38e38c62ec545266c7f374392665d8421770462bd14815696d898ee36a798a94a6eb5fd3a57202957bf0ab97420f445c3e923d031099cd0e975094
+DIST thunderbird-153.5.0esr-nl.xpi 501744 BLAKE2B ba31f793896f14b2f24526cd5533cd03a4123306bf6dd39c22663e1d8ece999f149535f347c863b467a0cce26da676050d073ac40369fa182d4d6d777a4994c2 SHA512 05ac28eb7b81737664712a36e9de40140366c5df2bebccf8d9ac6213961a2dd3ff2cac446422ea4266e3263d9479d4c7a37159a08ee2e009e2bca73ee2d8f9cd
+DIST thunderbird-153.5.0esr-nn-NO.xpi 499075 BLAKE2B 17049a4f94d981621814673d56656efba49b075f949c3f064db332568371ff0a2a8c7a911d6741e3976c42de9c6f58ce18092696ff981d16253e7d16881bc854 SHA512 1fd3695ecc48507e5b04720b2e49de0ab9b25845ed843a8618050712984f26c65dac29d9ac3c1411f4770a85177cfeee25ec185bb8f9b5f8c1dded70b28ec23f
+DIST thunderbird-153.5.0esr-pa-IN.xpi 491270 BLAKE2B 33b16a4c3b6184e7a2e78e8c648206b28d8083f7260957443401d0727cb230a572e7d310e441a391ddf340e9d725b2066af6aaf7a6677e2e6fb343e8086b9728 SHA512 c5a459417f9f810b12ae916cab5d8560f484f81de3f1d622a43baa0348082376b52a417e3b340004ca965106d15106f159e720e772c921075d066f2c2ebc45f1
+DIST thunderbird-153.5.0esr-pl.xpi 536462 BLAKE2B 0f923c94cb81a04303be37902a36e45cd529f26439cea2cf8b36c0cbddbb42b3aa3663ea47f738b01bb0e5b5e7e2ff569a5b458051895e6efa9a659f4707f19f SHA512 a1618c5f018176e4e07e731d26322365215064e647f255b2bd54b693938652b0fede5da1f9769f4720d9766ff1434d1ca4224277474e9f2879e05cc6e2744551
+DIST thunderbird-153.5.0esr-pt-BR.xpi 508306 BLAKE2B 2399dbfab3410983c8265a554595e97922d08510ec4666de0599c7bdbe82decb604afc021d54e03b18c32515b612426fd924a1619834d4a74c9b64bce9e52156 SHA512 2f4e648c6c394379cd69b6fde87b24cbc2b24e8f4ffa87a514d4c3b6727b4b6d9408725a124284bddd8e76374ef08851522ae49d60ae454ceca04ea5a13f3a14
+DIST thunderbird-153.5.0esr-pt-PT.xpi 514326 BLAKE2B 431195eff13be3f771b79028f4af4f69f12c2a1de946e2735e66158ab28c915d91297d901b91264201fdcfbc76be867568069e7e1ffd89aa13942d0ed8097d55 SHA512 7e8d5c46f380185ab55846f9a5e5f6d52227c7c623ffc41e5c967ef623c29a850dae4d37ef92e630f5901580b2c6e5da03aef6827d4396859bf0fb4c4a45bb2a
+DIST thunderbird-153.5.0esr-rm.xpi 498923 BLAKE2B 6afa25d37f4f89a113e24a660299bbe37ba6569cb59950ebfc48d1641734c02f68540375cf48c894a7d09cac7f9abb7a94571176c1737f6c82b1d53dfff8b83f SHA512 315eacf61496d5d7d503f2b5b0371d922699e60c9802e0d14c0118ef5e03370acf7be795face976b91a7449548b6e8c0b2f48de9f9c6bf2ee935cbd395be4866
+DIST thunderbird-153.5.0esr-ro.xpi 521166 BLAKE2B 380c49cd83bbc62d29c5d30ed96591a2a727c8fe8cbc69905ba3393a78050ec891b457d40ecad4701e0b361fb6bfdb179135c52014248bb93b2dd5e11d87ba01 SHA512 16e6c54d79e040931dfd548eb5f0d28d224e85d7221c00d593cb24bfa54d0110e37efc0663d99def16e7e62b4cb5413b0d4ddeffe1c53a0347c771db57aeba45
+DIST thunderbird-153.5.0esr-ru.xpi 616070 BLAKE2B 69dc95bb947219225961f8d2bc0e309058f8054e9c18990d3da10d47d5c3d801d2c3922d6730f7d3efaf9ed5af43e2e8a6a36807a82e223c59348ac869db1c4e SHA512 6515fd1ba46d3bf351ad5291631a0119eec782e0d2ba24f1121635fe9f35601ce7ed23c12ac29e3cf7072c3b0686416a8d14296ee2ba11edf212b222d5697f87
+DIST thunderbird-153.5.0esr-sk.xpi 541169 BLAKE2B fdf8f51f758a8d17ad02f28af9240783fb7b0187d9f82c91f29f6ce45ec3dff708253db9cc7ff564a68ddbc464f1760eebbef4c833d06ff76604aeb68c621045 SHA512 31e6c92e7ea1a96c180609dffa2f32167c2244e81515430e5e3c23416b9f2efa91441b088c57c661e5fec50a2ac0bcebeef5685507e5103f7394859a26429e32
+DIST thunderbird-153.5.0esr-sl.xpi 508949 BLAKE2B bebe326421e401807029d040c81502395b51396eb1140b92291ade7fad753c3dcba4f7b6ee5ad6c93ab42cc0ccee62cd1b2218c3a565bc04352de96ffa2d15f5 SHA512 85d07cc5f3f238e8bd4736db0cbdc99952562124cad28facc6a0f2f444a915fa64aa5819495c6fe3e20ae22b6eeaa0f1ffe19b95535a8f9730c1b7ea2be4540f
+DIST thunderbird-153.5.0esr-sq.xpi 525006 BLAKE2B af8d8507ea289202b6c5205a19d6ba4a08859b07d481c8d63fad390b517df44649c106fa7459d43b1022b19243acae85f4cd92087426a5fa2cc32af3bd7c983d SHA512 61cb6e3f0d241ed8439a8f1fcedec56db8f6dc1d337b165b7e79dbecc0a15fd55179c398cdb6753e3b328f76fa586656d325c6d6c9789435e178a470be11617d
+DIST thunderbird-153.5.0esr-sr.xpi 581229 BLAKE2B bb9976ce15e00f3fa7ad624bd6217170413382cbf1a3ca274d601b910efcb4583cdac1cf2f9feebe3d9772404851871711a0100edf59c5c3f32d630b12cec635 SHA512 32ced36081d37512938e7413c04cd382460629b826e00db093952aeacf48a1b2f81b9f36415687dad9f0002ab86cca0f6a88e8979639649edf568672b2d3d97d
+DIST thunderbird-153.5.0esr-sv-SE.xpi 503765 BLAKE2B 4fe609c7dbe42b7d9fc7cdb60612a028cb468a3d41e3aa8ef7a2ccde2e6da472ae10905c469ddee7ef0502f238b0c8077776078d7bee6b8aed4e359f49f1796d SHA512 b87c6d1d42b88d3ba4cc7d63973210be5fc941bb80ca127564af3790f44056931f70b82de28024206310e08aabf72fdd340e7694590407f0de84ef1d0f1fd3dd
+DIST thunderbird-153.5.0esr-th.xpi 585142 BLAKE2B c8277ac771d0e5fec14fc73c99962c09f52ab0d35d85cff61fabb78d3f522358d0738c9d65f1b1636c6d1b64fb4b49c4cc433166963be390d1887b23dd068791 SHA512 5e8761b680ee0aa2b5df2b4a40b13384611ec6793d198a4dc89d5d0a1685bd6ccba6ce3dda27ceff6501cd5d0b7493842ec0fd0155f965c1baf94e4f1ca01515
+DIST thunderbird-153.5.0esr-tr.xpi 515623 BLAKE2B 23a02d82fabdb2e4e7039cf5c77f56aa8a948f9e650d4224724a8a140ab0f04fae82c137ee9e07ae5c299f56ff4e4304796ec6cb831f6e154390d263795a47c2 SHA512 c1885d02d928dc62a31a06dd4fca6d1c5d79fba3c1bcdfa558434e557905ca6ea0ad573b0a92206503ceee07a5b440b40bda797f8c2b27951a37b13b03ef5fde
+DIST thunderbird-153.5.0esr-uk.xpi 596158 BLAKE2B 0be376810514a664dc70183a57d5c1d06dde2ebb3c39e6bfdb4df3f79bbecacf511a74b63abd8f66c7da86232146b348437eea7a7272f03df875c1174230cec0 SHA512 1ef816ca09a7dee947ea2e37b93fd06dd1b5c8d66e0282a9e18e102ed0a9793b0ed60a6dcbb5dcc08258a411821ddbc049c2afdfedd7d3dfa2e811713c74270d
+DIST thunderbird-153.5.0esr-uz.xpi 419569 BLAKE2B 4869b5b90164a9ceae381bbe58ef39b9acbae77be59fd3c656cc8bd577e1934d8ebb27b57dc8b6c31bb573f805f1c320f19e6eaab612a7ef8757f5f7bd95b5bd SHA512 a32f133a6c8219d5d06395fd1c6c2f00cc2a4717281fd6a6825898a8df8a2efe39195cfd5e2ea9994cd5bb0c81f6fa2ae18b8dccc09c0d4a19c5b51e5d121901
+DIST thunderbird-153.5.0esr-vi.xpi 541879 BLAKE2B f8ce4f8d04c617ff5bb3cbb486cca45189bf58e64f5498c5f191e32535cf0bf02595c90534d7b5169e1341140858b11c9e37ebf391291a057638671505c3773c SHA512 25f1fceca56c81824a50649da4a8961a63b449682ed1f293807bc36e16535f09d489cc24bbeb3570fec950add6f898834e768e01c7166676901c6d0733c32446
+DIST thunderbird-153.5.0esr-zh-CN.xpi 526373 BLAKE2B fc8bb74ea9e442b00954a487d1c0f9744fde6d2499755f1788ef387c203e4595784bd03c09e58d474b7c78504d44344ed74b79a9ba64e38511189a74d21ebaf0 SHA512 a0de4338cc1664db3103126e5e5f7ba2cb2948d62a8ae419dcb07ce46ecf198070e3e1f45c935a2478e6c152023e7ee114373e7f79383f11029a806188000395
+DIST thunderbird-153.5.0esr-zh-TW.xpi 530602 BLAKE2B 085f0a995d318dd8baaba82d4e6f76df703151faf41ef550ec099daaeb5558b44f7bc534d14592a6729e4402c8e6067dc3755aa5fd9b6cf4b267bee2f34be2ac SHA512 8d60edf3e8c8a316ba078648ba4266ece1f6f28063a3d9f947fc8016217a5073ed65501907c027ebc25d2e055b412683d7ceb2bf4a864d2149699897e7889c48
DIST thunderbird-156.0-af.xpi 395008 BLAKE2B a840d16a01b572da3542032aec160184478209b873138deca4849890bb5b9c78dc767fd7fe0bc36f9aaee3c246e49321ccf1a13dece61ac8c5da86c7774e3443 SHA512 418d4e70b7e2eff9d0de78603300d73836dc9e0fb9a4f594c352cdf1250a30049135f3415c909f833a963d34c1502e497039c2d29979ef38b0182bd201504bb0
DIST thunderbird-156.0-ar.xpi 492142 BLAKE2B 50e8fe48920482ada5a67e0f0749fb4db40b7946ba96af9f1de96b811f80d95f53f44dbd2f689dbfbb07fd89b1751a895808feeb459898c31b009b9c8fcc0179 SHA512 667b48b88e18507ba31939b027d97b0a6ffa0803ab22ec13e919b070bf1d934542a6dc0d516c41fdd4792d7bfe95f972db25e02661b8a2886b07a9c9845be9db
DIST thunderbird-156.0-ast.xpi 412398 BLAKE2B fc6794c4ff773246bd170773a9b383dbee617103fb9ea386e23e7bae0f2285696c786e83909a77a973a4d7713f9aa4759b0c36fcbd788c66e420c9abbd0d6c77 SHA512 8ac394ca5688a5776f95f78418d3fca54d13f475a37e7a3b85f62fcd6ff5ba2da0dd637d3ea4ef98916557e2381746f21722256d0877ccd10ffc2768f5e4be0e
@@ -376,3 +439,66 @@ DIST thunderbird-157.0.1-uz.xpi 419455 BLAKE2B f3434464fac95b7ec09fde337b8e53ab8
DIST thunderbird-157.0.1-vi.xpi 549592 BLAKE2B 85df563a450569513458ea2a808ca80feaa0d9b9019cb1ec15f1c2a9efc41495e2731d296038a3a6f78df8f501b15028f33540372b7efa876fd9c55d01a01c94 SHA512 73e9bd9c57599ab303dec04e298f52a204bb1c20ea1db0b9fbd5026b813695f12bb95022b0ed0dbecd988d98cd1520b4bb46610ce67f3a72e7d15d544e542f76
DIST thunderbird-157.0.1-zh-CN.xpi 531203 BLAKE2B df649f22aa9c72efa0ad0b7452b8f5a3c9e9c491cfdae2259cd0af1272fbcb0629b65b0f3d66f2009949e49ef344e01f79e9ea487c3c001f1443c120c3dd44a0 SHA512 8e278fbaba2a9894463be774d43bedd8f21559454853c80f1c91c508842ee4d9c71401f4a6a4ff55e7c3b687327a42cabd5d80036016259fe2e71d34e4ce836b
DIST thunderbird-157.0.1-zh-TW.xpi 538091 BLAKE2B 52afe0d78c618359f7681a60eef42f9d4318d56d058a7d5a02bb2238cb6ae4ba57fd4e2c9954d236f6f30b794a3a6eb92aa7ab644f5e0fecc02a11b74087df19 SHA512 97bd748cb2b1a3fa59bde1b2028e438db534096a52e3bdc7919c844f82207cd04a36d0c1fa4a31f4de4005e501596a16c4e661c6cbf0830bfd9f912588500b02
+DIST thunderbird-158.0-af.xpi 390744 BLAKE2B b6027d011454c2d403694cb45751ddf37e9f10d65b877dffb66ea2c80a5c41ed8c318674b794e9f69870c93bc5b7eb05c1a0d249a71099ab9d227f190b60fb2d SHA512 26ac94e6efd2110c544449af9e7189e231f7d32f523d6a9327bd1e72bf9b8d6d631b6678551a975321284750e64c4c674a6fe4d325fc0d3c63645b26c476b0da
+DIST thunderbird-158.0-ar.xpi 489314 BLAKE2B 769527a286a9c3e2ecd6e3ea56adcd24757effd642e89d5f5d0ddb42a52f938889ac7dd5929b479a06bdadc0db6aae7ac7f373d25a9deab9aba6c295d96c2943 SHA512 0965bfa46dc3a931ba15619a81cecffbba9cba88fbda418c23b92b3aae1d4dc607895db668c912c05e81bbb282710da1b0fa86d1b4c7f8cd9da674224bbee507
+DIST thunderbird-158.0-ast.xpi 408421 BLAKE2B 3a09e8dbfb56cecde5adfb370e35c9ab16de202188fe72236995de7d2fcb896715911647076070750698003074880aa14b96af1b7bc8685d28307e9793c732d3 SHA512 a4b64eee5e50a31e2ece7f62d5c66379c6dfb6c93c6a9744e1cd0d02a8d04d9122c4151b2223f64e40c5ebbafa1b24abc1e5ba527a8b338633054867cf787916
+DIST thunderbird-158.0-be.xpi 555913 BLAKE2B 056eb770fcb52b72021ab2fdb8ffd9e06b0ab5eebf84762aaecfef82ac162c3ecdbfa1980e4f8a6c439b05cc31be354e54bd5d418d27619279323fd4d8ab771f SHA512 4eb49daf195cefb41306620a912baaa02c9b1ff2adc37323a4e05e85d9ed71b3aca5736cb9a6087db4f7fa8c750a9fae72e229f2907f5abe54ca6b39232b010e
+DIST thunderbird-158.0-bg.xpi 563794 BLAKE2B a2742b51d927c7e952504e1696a0c3af96dd9bcc8b5e9015d5e97507c52578b8b840f737d348a4befc9fcb1d894ae2a28fc114d6ede9bafacc954d2838ec4ee1 SHA512 269d4a690c37b63f024d34cc42c7ecf7ec9bde503d255afc8252635280e2ad58a4407f51f65a697386495b813caf6c04599068999ea1cde6bfe47551cc770ef5
+DIST thunderbird-158.0-br.xpi 438727 BLAKE2B a41bc43ee257da9a615478890c916b6ca156f262f734ef4a18882efa24d904a22b4da3782c81e0a4b560ac27d086a82380ab9f8da6f0126c5bd12b89309907e6 SHA512 549af183bb6817596dd95f3499fa1f0651412df8ad2346210bc2809818eae8c7872c0b606f29e3a8583c5a057faa8ceef97955de281a91bfe1a3aa7347802d9c
+DIST thunderbird-158.0-ca.xpi 477651 BLAKE2B 55efb70dc7c94821e23b2675e2a2d7494dbba89c819529c4f5c0f47390b81bc84c1f3df59d20a1d19ef7b4fbd905b33eebf86931483dc748e15077a2a0f7ba65 SHA512 195cd3b9fb4f4845c2df4101e02c5adb1831305695492e7d78c8d6b4e141af7d3071cf565ff4892a3e7bed765fb5ece171201983aac1a28cd52a7281fbc1b056
+DIST thunderbird-158.0-cak.xpi 455075 BLAKE2B a59ccc616d0e2e030cd4d7bf165ee7e39df430a0285652b1783f2b7a14fe0eab06adf13c14a8ab722f0163babcd8128662cfb6fbf1d09e908cf0c2cb301397c0 SHA512 2f9a91b0e90cb1bf07acdfdc95a968334933c5f1f062630a31174ebbb94c8f8885ce3026fbc84898c7010abb4876732a5093aea539aa140d91512c95dc29fd50
+DIST thunderbird-158.0-cs.xpi 549494 BLAKE2B 649f3b8aff58da10e419da6d661292ca1e23e53d3236a50614065198d816c50914d1f112681ee7bf2a391e1eefe7772ba9238e953c9c4b46dfab08c6ca516318 SHA512 c7665f951089911ca803abaee295b8908d36e392cad8c5e2cb8aacc7531d75440c4508b63422438f10763f59eec3c26aa4e3293e39b841eab06e7cc7ce6736fa
+DIST thunderbird-158.0-cy.xpi 516804 BLAKE2B ebd8f2fb40c73c46965273a1eb4918117da014f1a9f58f1608673ddb38945790a2a71b36eef9131deed9ef461a80cebf8df7d517dc231d1af6667c40bf4fb1be SHA512 74630a68fd5ed0a74c21ecbe27aefefd890bc449efc6d63490df71615c98086a9992f270938330827e0a8168033aac906bc6328c09e52ff87e93ce8bde717eba
+DIST thunderbird-158.0-da.xpi 495119 BLAKE2B 93d4fcf5aa1ff45ab90016e3042dd0d22e1e3e4fbddeac17f418c967ae4ae50cc6f1eb72edcd6d16c481200eb531283ca2fbaffe4ae0b8905265314706d9a800 SHA512 f8e6495ae2b4645f9f38946ecb16b9e8c0e062a97fec7834c1c579ca3350390361fdd7742f4e5d9e82841dfc817f18c9c737ef495c9ebe89787a229de083cf3d
+DIST thunderbird-158.0-de.xpi 532509 BLAKE2B 30df51655f8605a15c32cf38ad19e36be154952f8b1a2747f44f627dce7008694a502cc58dddce443c544f32b3654d3a2b023c58412387185652b3d7788b9a51 SHA512 cab7320d1c5e45fdb2f09efce0239946a0ed1d3b996bf2b4c9508b945069a739ccb3c3e25dbf19035e3357f3267c86bbca1a5945632ba9e3974ae25423f54e62
+DIST thunderbird-158.0-dsb.xpi 544672 BLAKE2B 4ade719c44d68b426519e5e6089f69c5f50a3a212181a0cb6349fbdb8361a0d29c536cf5748dcd77275c21282c89aeea94a54bec9ab8ba6433fae5ec9fe6bdd9 SHA512 0791564cb73b7e390aebd888ac995a10edfbd66a958a67dab135f71526c3b104dae6c58c8721f3b8947beaef5b201c1c09804eac8278266821aa98da1de91351
+DIST thunderbird-158.0-el.xpi 639329 BLAKE2B 86c6da3a42f194fdad2cabc298d8f2b677c8765948be225af0f1e27e44ebb2f9836eb110e3ae671533def1247df26a1533181b9fbfc75a20ef638857582253f3 SHA512 b6b652a532a4e66b3ac636d2a45fff507d7a3fa9b30d10069f23f757dc4061aa4efed78511f8adaa82c1ad3ce8debdb4253c70d73700a7fdfb61e43249bb8b72
+DIST thunderbird-158.0-en-CA.xpi 471980 BLAKE2B 69832a3a4e4c53c821d8e5a118435f075528c451b9f82324ce0b3187b530a14e3d342fb655dc5c7b59ec5ccc48cdb50bdb43462e5ae83fd7da1756c68ae4cb08 SHA512 25502debd0e253a24339b572ec734ae55a32ff657b59386439cd26d7940e431217873bdd56076dd7694f1b322de5efacb6615186f0cb7a97c73bd02440cb582b
+DIST thunderbird-158.0-en-GB.xpi 476497 BLAKE2B 0ea0a16b6dc0daae01ab468cea37c5e020bd11c6cd51f3fe75da82596a275084e36814725b5b17660d55c9c4dc4e37556098dfc5acd27575103ee5d22077a452 SHA512 251dbf513d7d8ec29e364d2df8573f2be4fd6205b961172165a485b17011f6471bcde61492b29fc6f2c96d5e51d96c7e7570e0de1a6bfc13563206f50c6157f4
+DIST thunderbird-158.0-es-AR.xpi 521678 BLAKE2B 8b7bcd89bf2dca17bdde09bcdec860e5e11e5514df7ab56b929c1bb2bec0070ed49ae2310828de27d7bb325ed85600eec40a0935e6a6344d0387f65bdacb6952 SHA512 ff8c6941a16347823eee5386d055e020df603b493a31ea7d5b6e84d4db41db4e98c359a4d753d3e797d64ef5e431029c842ef1350fc9958db21739c50ee02083
+DIST thunderbird-158.0-es-ES.xpi 515524 BLAKE2B 06dc8bf0692085b28521bec68f43f1655b419a5f97113fad012482663b3589befcec65c30ce915f6d63f11eb155dc23fd53db01e1a19e0782979dfbb87ff3582 SHA512 8d2ac836f8254c0761eaf805e366d9d10c669beb764f059ba390488ec04fb79206a4c8ff758264cfccbc421038402fd35e0efb71651aa09811d2974dd4eefed2
+DIST thunderbird-158.0-et.xpi 463018 BLAKE2B 270bc4193dc092f051197751b1b352d019bd3dcee4f38dba27f1a1e755489385fe2a285ae4893ef5a89bf9baab29acef467769525331340e9c8036e2131380c0 SHA512 df167bc5601b552b12d88dc72ef365b13e7387cdde2d6727fcb16bdf16f311d5f784165dbd09f0f582035dd779e7f69285a8449e0283c103c17aceb28cffb98b
+DIST thunderbird-158.0-eu.xpi 499714 BLAKE2B 86af387e381cd52f5e537083f09f705a94145bedc1aa103a245932ecf4972147f6fc84bc45fc743bf8bcb2ba607cee68ed0b3ca9eeb475b7effd5a8ca31e4a9b SHA512 1afdb8e66355ee113aa31986d539610e7e487cc84519cb50c5eb7faeefac329e5080020aebf0baea9d0982e45f1c0c8202f54bf4160608cc5f23ef94dbb1b60b
+DIST thunderbird-158.0-fi.xpi 497694 BLAKE2B ee816236ec9deeec249bcda836388469e295a992360d42db938ea50df922e4f269a03ddda7361a82d897998ca1f5bbed7782b346df5102a660286f7fc71617d6 SHA512 1b14e0fcc30ebc982f1ed28fd1d5b3678b4614c1d466b0f639fe0ddf89191eed10231658b5de7daf03dd1bc4985d97418bb3df104d3587ffdf7df90730e2fb51
+DIST thunderbird-158.0-fr.xpi 536183 BLAKE2B 83f63334f96ef6c415813ce93f2ba99299e3a1fcb0759d33da7dec75a2301bbf5a50a0f38e48643029cf708f2bef85a9e953197506e2cf72c953e6aca5fc6e22 SHA512 537620a14c24ffdbd202d4181bde978dc19d72d1f87bbd5648bcb0e5705af6ab6309a6de576c750823cfd90267d8a93963ba44f6ac7de11db50e03dff5754f33
+DIST thunderbird-158.0-fy-NL.xpi 515823 BLAKE2B 1c4005cd9b56971d7822458368854e0780540f24ac307730a46c737ec9796a1ae52b4c97479e17244a7523733315afae3c08df7718e746e410f6bf8046bcbe5e SHA512 2ae1fcbc28bc9cd80e3855ea4bd25ed35ae27cc06464fa62156d1e006b20d802d48dc9af7d02039de92fdcce5867f78897c135b78bc775ba413ac5fd084c84c7
+DIST thunderbird-158.0-ga-IE.xpi 430592 BLAKE2B eeff5b440eab59625c4db20bae3340fb5f65181d5f1780dba1df743f429d420d7c16592a2d31376ce55c85da78d3df7e590b76b4e78e85cede449e34cc87672e SHA512 3619fe628e67ebe4a9c549e76cbf064b683b1f05d4bd3ece491e59e6c3a7309fd9c712312a8d49a89942cced8e9ee5d511d88c8a565e103c1e8ac8804c9ef331
+DIST thunderbird-158.0-gd.xpi 484685 BLAKE2B a429143e100bb4316bd35a32027005500c1c1552a455fb395bc97ebd0cb030d9e88764b04f7b56c936eaebecddd869872eb48639ec4fa295c856b97293293511 SHA512 898375879545537e74df126c0e91718f7ac3664da4adafa8ba32445bacb61c275738da7aa5608f99611879a129354b467348491acbed5c9047a6cc1179c12aa8
+DIST thunderbird-158.0-gl.xpi 497646 BLAKE2B d2ed4a1fcaed56af4d85b67b5c5d8b2c3fd9d7d3bde9a4a11f7fd3d8670083d33b0a4586dc967045b693280cfcfe23dea128a589254456f985018dcf66947dee SHA512 95d6fd6694e61a26fd2a71014570c03ed40ec21308e7dff29aa29bcd18f50849efbfa380a6c9502a89ad21458b755d54e29fdaa576ea66161e85993fb0d546c1
+DIST thunderbird-158.0-he.xpi 486610 BLAKE2B 40af7bd38dcce35286637e85859d0feae729ca235caf7d4d0452b538c588091f3a42bfb582fe075a525941df2ef9c684682ce2aa4f9580ed856369728189c36e SHA512 5a604bbae8a83e1593cca6570747125210429ed9c2ee6b580f598f1a6e57e64abef197c47b12d7ba808e3c38ab4be58476848f1684b2ce61336d5f6614ee5eb3
+DIST thunderbird-158.0-hr.xpi 496459 BLAKE2B cac5995d1d0f1d476b3a496d8239577fe46b830fe5d01b0932eea789da0df7254b7567fcb39b511c94fa6690ac1c37853e8441308ecd9d67d5491061810b7e8a SHA512 a8b851b57f3bf65dfbd5b23415e2d2143235b0a6f39d7bc4a4a5f9d61fc479d7122d4965dcc1c9ae4512b862385cfd7a78e38f307208adba7febc6871791433e
+DIST thunderbird-158.0-hsb.xpi 542642 BLAKE2B 1081140ffbfaae6b3ef25d7888600f85f7214bbf8dfcd8cab63e40866e1a06ab250007af7b919d7447849aac92a5ec01ac454ddb7cc1a7461168b0f1950eb056 SHA512 85091049e1a84f378926580a7358aafddce54adb6fa46254947629343283f89510e9db68be46ceafd2ce982fe0b61b046d90a728eab44cd64a594bdf12c796e8
+DIST thunderbird-158.0-hu.xpi 545417 BLAKE2B bba455f019e6fadf68d7dbe04fbd3cb3cb139ea256ec970ac98f508dd5187fe349b6d7d7ef9ec279d87207d4c590d59e6793a4d0b74f272ef342da697fc5e124 SHA512 c05d403396da64ca1f51bddc9410970da99643bef74bd996d485c1b28918a2e64551c5a1cf8225cb0bd42e97942181609ff1135045c4655c39ce514f01848497
+DIST thunderbird-158.0-id.xpi 482956 BLAKE2B 9f0bc82e316f45338b5f345387fa385e113c36aeb5144aaf9db4722334dc478fbe95895377b151645bc397ad5952fc281c69af54136cdd127952af1a91b1081d SHA512 548b15e6481e69c7ff2a39912a464830446bd903bbe8b17626f82f5d6404b6d440dc4914602aeb3963e57b95c40b379e1de4dd3f9cf350c1c14f0b538d2589b7
+DIST thunderbird-158.0-is.xpi 510430 BLAKE2B 0ed96410d7debc8ce598fca385eb794947b13ec108106feff4d3cd17a19301dc89d50f16e8ce8187fff44fefb9c21afc634c4a430842d94090bef0eef55fa09c SHA512 8e3f88a11c08a20c91b35081877e7cd6c8853809a346ac0ff9b38cb31f2598a842019359f1d60b213015f716921e50799d56d1835464c5a57348cf83a6f01a3c
+DIST thunderbird-158.0-it.xpi 515224 BLAKE2B 507072228ed542b6a4f714a446ceef5db6e55ce2af67a577f4e4f3b44b1783648d9eb86e75dea599b37a1294c92541ad16b649aa50b39a7019d015b1b1fc1bd3 SHA512 1558537712eb6d005a4a0e167fbc19bc093196ce25c82006f2ce167a30aae8d2b15b0617d7b84f5b992fbaed6276ae7b992070743cf60dbdd44e52b6abd95df5
+DIST thunderbird-158.0-ja.xpi 567776 BLAKE2B ea8aa217f20d71b271c3a3feaed608a9589a201e6a7ba18a341bb2102a7cf38e47a0cd6939652ca1af63a1179393b828a2705f9480c5b82ab66c8351602ef581 SHA512 ea3a23834a082f2ddc4c98c87985b25541213a82e4d5ef1cd9a76786cc38bab7e0cf1ec5e609b41edc02a71d548e3084dd167573de288d696d05ff49dd00e133
+DIST thunderbird-158.0-ka.xpi 584471 BLAKE2B d9f769c68ba018fd72d7d1a85d6748a57ac0205ca6d2349eaf904ff23b9210c36deeb143cc4a7ee5510a716005549bf2b635b0f8ecd6dd07f087ff8fe9bee195 SHA512 b08fb96c26bbc8925824e50468bd8c8dc77284af4e3c26f98e6d3d791386f710c2d1b7e99f7afd5b4d3058a9ab21b656ea84d9d21728f0332cb9adc7d62e3804
+DIST thunderbird-158.0-kab.xpi 486969 BLAKE2B 97d0bfb7ebfed2ca810257f377acab26a8f241beb33404fd4c155a23c59e8e9fd7bc0a8fa13c8d009946fb2e00d1e4cf38d41da656587ec355ee906c284aac97 SHA512 f14995a609a6b0a7b498c90c3319ec25c305b5813c75010fb426acfb2779e849356f2627374510e880847340cf783a1043b8a142f6169d28103ee0a81098610b
+DIST thunderbird-158.0-kk.xpi 610744 BLAKE2B a15a7c4056a21ec6d356fa778e404031b86142c8d70c9bdd8390b189b5161bf614bc819c26a90e7ce4fbb59a32a13112ccd8ede0d1f9bd62bc8d97c4e7abfde9 SHA512 8f14172a8bc7b0b45d5baa9f33724f8c6f942a0f870b8e832661caf62eea8ee4481b095364a3607d3dedc5fe757638c054bd5ae0a289f6c2fff0e74fdff33387
+DIST thunderbird-158.0-ko.xpi 540985 BLAKE2B 52790cd0da8b4903692615fc38c2376f403c84aecb74c1e4bd4a10c81a771f7daa722462734d1088d4b949281c549d000d825b8f0a303cf5bc9a75ad40a0af7c SHA512 69929179e5e6df276962dd208f263ae17d1c57b7101908e25c544177e2487b490eb921d567ae6a64df96e81e4de3e4709ff17a30289c036d0bc5616ea00ec42b
+DIST thunderbird-158.0-lt.xpi 480522 BLAKE2B 4a34e76833f96624e649e596bada57e29422120e7a81fe7a532ab80b48e1907fc8775f68d6ba0ade7c75b4fe40e55c8321d3fa7b2fa7f46c0eec1382f35b8122 SHA512 b0fadae5ce0624784252f8ed8ae2fee1c062738da80db69c5952f3345c3c0e5b63f369e62337733ef6c154b24c9c6329175a41da21291a5f3f924f8b331f0c53
+DIST thunderbird-158.0-lv.xpi 461100 BLAKE2B 2d4847e42a728b2b5711b9aef17ad172255c8d441648e968a50ea42fa1b309855f2af454fd13669d8a5c39b16bd3a6c4e6bfb1da52348bb5df14cd5376378dca SHA512 74783a77012824686ccfff53d963c9469d71f370b1d1c8eb0c872d8b89a37d7a43c3e491a95797a9c379fa934449c8fc5513384f43a62823f1571d93d1f4a8cb
+DIST thunderbird-158.0-ms.xpi 402933 BLAKE2B 4d37ffee33886b96eda3c2e40ddfaac6468069f4175dbe7d3bc604a55b611d5da53ad491e3540ae4c34e35d4d1d08a9c1e4c558663847828c783cf935a8b4b9a SHA512 db3c422b5e5f0be03c67b9653bfaf608a0db80495df71c1996f015e6f08efc6153fb133a51dfac611161f383f6f37f44e0ca5316cc58d40c1759fb99ed61bbd3
+DIST thunderbird-158.0-nb-NO.xpi 499125 BLAKE2B a3748879fad03437838abc4d90c6b45f6f86d00ec84e977ead81788522e5dff747351e4619e5660895e80d13093c73cd6c2c496221601f0125b3b27561d7a293 SHA512 76644d3f6ea22da7eaadc3de42f6b8a5988865c6b4d60828e3fe9cb666632e3315620c7685f8d1d59087c3d42b8464c3e1b198d459482ff0a48a67a47964fa96
+DIST thunderbird-158.0-nl.xpi 508857 BLAKE2B ca4be9a0111ffe334bed5f51934c973c5c0cb4f4042e05e4c34c0d679fea9d16d39644b2999913d77c4dc519d7fbaec9967945263d6fe6089fa22e5abe9c28c1 SHA512 1745dbdcbb02eeadd797dfc148ecf175222aaa29277cd7cc8c9d57a3b378c72dfc8966e53ab1ed65f69412425974a8b360ff4a252991541723a4f0dcc67beb7d
+DIST thunderbird-158.0-nn-NO.xpi 502049 BLAKE2B f4965c4e5dd58f7e424a815a8436f7eb21a46a270ac9d37b7a9c6958205f24726ebea3795da033ff337e89d59535db4c028faaedc75dd0398948d38544f93fc7 SHA512 3bded4946c8ae756fd3d5b0a3d977f682deec764179225575e97852b13a4189cc4ebbb1a7ed66a65327ae5b87f7d1a1877de257aa5ec869de5b350fa017f6d7f
+DIST thunderbird-158.0-pa-IN.xpi 490976 BLAKE2B 3b476d6732e89737438d91ccb9f497a6c03ae4cf2f23c6846af44217677ecb07172a708f2d10c7d46ecd34fade493a9b99005dd2c4d79bc70282093848a8ebbe SHA512 ad0a820ad73507378017fe7aa44276a488c9f763876b8505c31b8730eb2cb4e3f9c5e298c660f409a3a9539522196d76fd9a7b9ca9777c4f233f431cbcdce1f0
+DIST thunderbird-158.0-pl.xpi 544410 BLAKE2B 12f1a861bb40cb1c8133d8f462eb392d2e80a9a35cd62a783fa6d8c6174d0ea93a129dbab8af7e146afaf5340c1351388b51c6877bb5996e52afbd6ea419871f SHA512 75f83ddc8014500199ef048254af6f546292bd8afde8c32875115826069647609da1eb42c487fd9af3ce8abfb7eb1e77823127cfed09f73520bedeba8e41197c
+DIST thunderbird-158.0-pt-BR.xpi 509876 BLAKE2B 9499a8b398cb9479adfc976870f073e8b82b81d05e7eff810ed0bebdf5598145ca28841e82f9fc63531a111a7fab1291b37702abd5656b47dd2de9b78fcb131d SHA512 40dc0f5a52f9f6283290937915fafef3b6d85f2b3845ab7213bbe112d7c841d82dbee2eebc9f8fa1d579dca9b83f1548492c0d950a250785335c0131132fea05
+DIST thunderbird-158.0-pt-PT.xpi 521722 BLAKE2B 2594d0a03f575a1910f772177f30c95f188633df8efdb433e9a8a1c132e1a1048ea6d56ccbd38ef2a9302a2c27860da3e8a5a3d1a7d509c6be096c8b2fee0dcc SHA512 31a1ef8510a6a67588cd463a0511493b0329f6b35e0e687179d516f383488b2ca0510e2030eb77778905de8f00c365d57fc09650d3911a9ce88b3b312bb1a771
+DIST thunderbird-158.0-rm.xpi 496617 BLAKE2B 489134577ad93763f96608cb479aaaa9ec5ad5191e9d3800b0f20a15480c5c2dc228bfab8bd527796f41183ec3b0be37f6960ef106bba62ce8a42265345656ee SHA512 fde4b666651bad98d06f145e611569f16afb98e9b5035769cb942c6b591735822316de9fec8a8aad9a825cc7f7f79c83a7e786d9800427f181563f285492eedc
+DIST thunderbird-158.0-ro.xpi 528844 BLAKE2B 3492aeb244e622aa8ddebcc01394f00bbae066a60bfdc48df18ed7fd3723e5c132dab71fd69a63e69d405d5d1700c55266af09cf693986cf84310809bfd51dcb SHA512 2184579883f816e731677ccba0353a3f3fa62cbf9e08631ee46358a3dbda71b31cbf176543856a52af938166e14902b073bf6d01c6bcae8d98a377c537c782bc
+DIST thunderbird-158.0-ru.xpi 625370 BLAKE2B ac84fd30c517966a7669834abfe0c0de8a39b2cccd2b9ac2fd46ff4385a800d4bf8ff87d1aa37963c8c364e6945c629e972c9b45ebfb3f5c7987da99e23c3842 SHA512 afd629e47d98af3ae0c5725b94fe7ff3ce9314506d4b649c2a857fbb19b2bbb60be7323fac4ed2e8323e460bca2d2ea24f396c90c66c9c0bad778440bb1891a9
+DIST thunderbird-158.0-sk.xpi 549277 BLAKE2B 7c7c68a1573daf128f7378653852c3de4368e46d4d0fba72af6042261e8425399f0eac01fcf396c7e11244e94ff5d719a95004c9d5ce206515072e6e3f7be2fc SHA512 f53f58713c8f5623a912f12c70b7f3b12089f14710dfb2f79b863d865a2de018c00bf31e71a82e27a59a73125fe340d8ff7f83f62258d3f4541a216321da362c
+DIST thunderbird-158.0-sl.xpi 512601 BLAKE2B 842f1573c8ff429b5c8cecc2691c649f6b13fb2d6a4097af5fb14a9ebcfd25033731c92c7017be511e90577d38802222c77d1321284bc8258ecad18a8665c8c5 SHA512 061509ba8d63ade30a02865a8e75a7d02de65cb2e137303163b3244d4a7b7de13d065ff8e9809dfa9bc3a8f74e7a6babc55c42b495f2b86707a249bd50478a20
+DIST thunderbird-158.0-sq.xpi 521659 BLAKE2B 3154909a816eb3430300641fdfa90de9519509a25355cf06cf4891208b26479a4ed5cadf99ddd19019007dab3107a7b88797ecba2529c495fc3e2de1d0b96e2a SHA512 a1047fd27dca0f35a84184584442961475513435f6ebd93c483918ae73ac850672ed0a73af5b594150369978f3018d6851ffcdcb99c757a4bb06cfdea0037920
+DIST thunderbird-158.0-sr.xpi 586555 BLAKE2B beccde54d9747f61665281a556be1f118b4ac408acd0ef572ccdc68c78f0db2ca9a7ab4aa500c16c76ccac0d321709b5480539c9a93f67ae5ca878e270b81adf SHA512 1dbf1e9dcef3b33acc588f633aec812de2f369e1e9012d2db8561ef5673299fd0a0788f80fada938ea91d72a13f472294abc71808cd59f9ce5008b7bcd7e88ae
+DIST thunderbird-158.0-sv-SE.xpi 511034 BLAKE2B 05870185f0b953cade34edf5521023973f510727b4d8deae7e37bc3eb91b09793ff21060a9cf7f78c89014f2afee35e334fbf153e5daa7bf22594aa822cb66d5 SHA512 f450116009b250a2003abbe24711210559a9497fe61543091875a0fcfc6dca6ebdecbae1aa12184e91712c195aee53fe7028f81b94a31b1c1ee57fed5dae2f57
+DIST thunderbird-158.0-th.xpi 582073 BLAKE2B 9ededa0d48938bf3e0385f503ae568981c3fa9105f653c0a5191ee6f7dfc9a74d280c6923eaa0aebf19aa3a04286b286e2f9cb52c78c1060847f69b4d51d22f4 SHA512 bbf0855f66ad80c09adf6685521d18c62fbfe2b1d222e5af13e47cd2fb40c8e6fb67cabe790bb4d17d6e228fe64dcc8e2b5692a1137822d05ad28532e9afec3a
+DIST thunderbird-158.0-tr.xpi 520635 BLAKE2B 665b2d43de5754b7d92d7d982060935612eae0ac268c88e18a2971ce8bde059f92c4a8a1bb498490115f65d906c73b69a5265de9aa296de823e9ed35939526d2 SHA512 a8304089493640f472f57bf105194bda3299439293a974cb98f62814347a21614792e04d7de894eee0c0af3eb70c5ffb97a70b15bafbffaf3be9c1d7ca04f1ad
+DIST thunderbird-158.0-uk.xpi 593475 BLAKE2B 05b0d661d933c06912dc0d9c84d608928875805eac6d9992f92ba46d22482659332834f92f81f2a88787f89a4aaad1e97ddb61f96d8d17df4590c8cd5c659552 SHA512 26ab6e9423e47ae952145cfd2b7965fb109e209cc4cdd879f81bf2a5daca01ac28dc0ccc7d635622e9e1ebe4d696fddef631dd96c44a1297656c8fcd64527d13
+DIST thunderbird-158.0-uz.xpi 416416 BLAKE2B 17074bc49d80a2b704947e558a3ad1b2dbfc8e98bd8432fa4035e27ed14eab701c9587a737bcc719d81584c73e17970b37645f30b86b26c5852cc7824676b561 SHA512 0eb4538a93561784b18617ebf0502da1a27123c57ba1aebf53b67f7f462c734f1f8d5efbf4e2b2492e6d1d61e6dd2fb9cdfa065a227aded667f26f2f35d2a712
+DIST thunderbird-158.0-vi.xpi 549920 BLAKE2B 4ea9f4cf551c3c85fc8bfa3c47e8e159e4c8cdb68601a06ad37f9e36300dc86d82a677a65280fdb7220c3fccd2a8ca04015e8b1c0c94a911672ebaa8dd112f13 SHA512 72c2081ba455cd6fb371845e6cd3ca4aa5eeac511c04400e2b53fae7ae49acf867a5895f427cf6576e2d4f96908b45bab86bcfa5cfb462ae1527ddd413d9944d
+DIST thunderbird-158.0-zh-CN.xpi 526326 BLAKE2B 9b6a10d52ee369d57042e0842ca18f4045e96710b8a2518cecae466a3fa29ea85a26142d607f34796e53e5656ad70073a40f3b318db125b125e55cd14738450e SHA512 6df85be0a545fc7bc142fd79a96faa33b7af3155db1f2e1d5e29a9b82136c822475e91c430a3c527708d1640242488d5d2f9957b05e304f153eab26d1b799e41
+DIST thunderbird-158.0-zh-TW.xpi 538334 BLAKE2B 16fb322434c41c95bc833dca263f15eb923478bd4a73f17a4e9cbacb4d3bdbf47ba723cfaec22f27a71b32b7c517d2e066bd844f3c5276dc277a14919815a04e SHA512 0ec863e32d01912775938ca2de3e6021f7fe9a2c44b06bd23c7e2a26b640231ac5b98b4ab4e2ebd7d849a3aaad4f12c20fd749dbeff71eab2917c1ea0c6331f1
diff --git a/mail-client/thunderbird-l10n/thunderbird-l10n-153.5.0.ebuild b/mail-client/thunderbird-l10n/thunderbird-l10n-153.5.0.ebuild
new file mode 100644
index 000000000000..5b0e8cf496be
--- /dev/null
+++ b/mail-client/thunderbird-l10n/thunderbird-l10n-153.5.0.ebuild
@@ -0,0 +1,145 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+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%-l10n}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+DESCRIPTION="Thunderbird mail client's translation files"
+HOMEPAGE="https://www.thunderbird.net/"
+
+LICENSE="MPL-2.0"
+KEYWORDS="amd64 arm64 ~loong ~ppc64 ~x86"
+
+if [[ -n ${MOZ_ESR} ]] ; then
+ SLOT="0/esr"
+else
+ SLOT="0/stable"
+fi
+
+# 150.0 is when thunderbird-l10n was introduced.
+RDEPEND="!<mail-client/thunderbird-150.0"
+BDEPEND="app-arch/unzip"
+
+S="${WORKDIR}"
+
+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
+)
+
+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_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
+}
+
+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_install() {
+ export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${MOZ_PN}"
+
+ # 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
+}
diff --git a/mail-client/thunderbird-l10n/thunderbird-l10n-158.0.ebuild b/mail-client/thunderbird-l10n/thunderbird-l10n-158.0.ebuild
new file mode 100644
index 000000000000..454d5b9c0ea6
--- /dev/null
+++ b/mail-client/thunderbird-l10n/thunderbird-l10n-158.0.ebuild
@@ -0,0 +1,145 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+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"
+fi
+
+MOZ_PN="${PN%-l10n}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+DESCRIPTION="Thunderbird mail client's translation files"
+HOMEPAGE="https://www.thunderbird.net/"
+
+LICENSE="MPL-2.0"
+KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86"
+
+if [[ -n ${MOZ_ESR} ]] ; then
+ SLOT="0/esr"
+else
+ SLOT="0/stable"
+fi
+
+# 150.0 is when thunderbird-l10n was introduced.
+RDEPEND="!<mail-client/thunderbird-150.0"
+BDEPEND="app-arch/unzip"
+
+S="${WORKDIR}"
+
+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
+)
+
+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_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
+}
+
+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_install() {
+ export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${MOZ_PN}"
+
+ # 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
+}
diff --git a/mail-client/thunderbird/Manifest b/mail-client/thunderbird/Manifest
index 419ce980a01c..9826f57069d9 100644
--- a/mail-client/thunderbird/Manifest
+++ b/mail-client/thunderbird/Manifest
@@ -5,6 +5,7 @@ DIST firefox-153esr-patches-04.tar.xz 12232 BLAKE2B 3f792b89ec324437dbd8e6116eef
DIST firefox-156-patches-01t.tar.xz 19100 BLAKE2B d35bfda20213d665fabfa4948391771a4bac2af8c8cbe897bcaea544962020f52a0cc8be691020542bebbb880219b3abe22b2735e0af774b906b9f73bd46082e SHA512 4191e78d50bf0f7adc8353bd44ccc2f31a7615a568f9cc375dcdd6bb83105bfce36d4cd01dadf4b56a4728d3e17397792a34d8988481dc6a76db30aa00762902
DIST firefox-156-patches-03t.tar.xz 19644 BLAKE2B 3a26791a3e3cb46643f6005ad92c0b140ddd59541d3549a435b3a891a08ac252f326a8d8aa2480bd906a8931a809d527d9f0658cd029982cf624a3b8a3048d14 SHA512 f20a03a5d904a6ddc131a7bd66e84eab3cb3ed1e21e12fc275bd9237a7ca1ce225efda96bab727ca69797a7ff775dce2c978d5fcea31511c9ffb1ce7aefd6aa7
DIST firefox-157-patches-01t.tar.xz 16964 BLAKE2B 60efed33417baccb0e7f4f59f6f36ce07effdba5dd547bf1897316a5cadf4be0f113f20b794219ed47ce82071bb0d749f9e6fc4a6a6f611b8edf7226e8ea256e SHA512 215669e8d8d94b5d817a6f6a9fa98b199b8a3182b198a78a43d8e2bdd589470d03c39f9e7cdffecaa6a7e94bb1b23aa6906e83bc3ae3b8d27f4c114e095d3027
+DIST firefox-158-patches-01t.tar.xz 17252 BLAKE2B 4da8ad36786f4748147675cf08b46cb7e989518ccab753a8010f8ce6fdb67ab26706db315e80207ef852e9705c74b89b982e50e14e2bc62216caf67466b6e0df SHA512 890ec2e2b620ca19b208ec85aac3448fbfabfc597e9deecc02eee7cfec361a867fc3d90526a474cbd5973f1858067bc7463be20aac6f9e7bd137e570475a2ebf
DIST thunderbird-140.16.0esr-af.xpi 316220 BLAKE2B cd64111cc906134e4441cb9128d20f281391665ad66c4fdcd4876b2cd092dae57c850379175539ebf1f49e65d3feacb0a60e6c5c8d923392c2c507a1a03db877 SHA512 cdef8f39f795e768d88de80b923e5aff71b9dcce8ae93d8fbdccef0127bbe78438ea2e004799ef1385e799af77b5955f713c53a385ed83f75fa277901e65a110
DIST thunderbird-140.16.0esr-ar.xpi 436198 BLAKE2B 9be3d3e088bed02837e326add8392cc6153ee7eec06c184122e5c129ad585a60df7cefb273baaecaf3cf78433befb4ee92b18d9cadcf2c9f9ee3340f95a310b0 SHA512 8bcc62ac679fed8558d0c41f24587492d25ed0d7da353de89ac140b417949a7bc118dafad315dd7a7f3af644887869473807c991871e789716ea301122a1b0f4
DIST thunderbird-140.16.0esr-ast.xpi 340600 BLAKE2B 4efde7530acf62366cd5912c16cc8079ff4b046f0bdc526e9de0a00d604a94910ae9e49b528016fd2aa5afd9ad70b6209cb2f9ed327635fb8d8170baea2e7867 SHA512 7e59b9c252212d2a9134e5cea0df7ec369a1a967daa417eed4bc164cd747b52c828632d009f71b1e7b5bd6af705de1fd812f3d6f345a8aa680c3591391a9b0b2
@@ -72,7 +73,9 @@ DIST thunderbird-140.16.0esr-zh-TW.xpi 511431 BLAKE2B fb97fc1aa94973ca62899e4ef5
DIST thunderbird-140.16.0esr.source.tar.xz 762960800 BLAKE2B d071734786c159495a70a3934f644d32a232aea14e6fb5c1fe46a754e191580c92240c9b0c9ca8f7bf32e59167ef3bfcaadc5de036facf1fe7625a6a9ae04972 SHA512 9844641f9c8b4e7c96445d6d6fc554fc80afd8652899de3458d183f9381a18f08233e5d2e2beedd6adf2a0a6e1331e7abb55e698765b27110ca2dafdf12ecbb7
DIST thunderbird-153.3.0esr.source.tar.xz 938162732 BLAKE2B 3ab1a6e10b376fa6ef7b7c26304a0b504532ac7def4655fdf1e4638d3cc66c2d5f3c95af5c7e77a3e62bbb3d887c8259f49992259a0576771fab67f379e7e215 SHA512 9cbf9f7a9891c475721abe04e32f455f2f8df4a1b755d9da876b436a68724383f091b44e5412dbc747e33406021dc9d351cb7c6882237300eb608eb45e191529
DIST thunderbird-153.4.0esr.source.tar.xz 938351268 BLAKE2B 88477af2931e89461b26c7c3a3dd07ae51466a1076867be9fad50eae076192a36c865e9bfe33be1c21548a20de5707c626c80e458fa78cb542347b29b0cf9c42 SHA512 93c43a75010b2edd36c58d054cd2e15a879b9e62e21f419bd8c7f97b8f7f6f29e8aed9d445ab9ccebdc1825dbf0f5e82e6e316c5f817f877d64266a2f2dbf9ec
+DIST thunderbird-153.5.0esr.source.tar.xz 934350404 BLAKE2B a8b5e9b1d46ca693733a84768cd431546b0a1c94011339537b23a1ea0f69fec9a734ce77990d653818fbb4898b19b76a6d4a28a1b3c149467d3f6c584d0064c5 SHA512 8f700c15d4c4387e0e205839cb377914fcc9cf00974245c0c3225807d7b6117a8ace6f38bf024e710061d47c10c99f8f0a93df870f85b53b556143dbd2fafa0f
DIST thunderbird-156.0.1.source.tar.xz 943111452 BLAKE2B 1f05dd489a6204040399d710c8a8736673e1c2857d7cb199f4f189352040336113b46058840bb54c50bd8510c43ee29b58c8288e824a91eb847e42507a74b578 SHA512 e9262a4666e0107c7bc45fc2ad4bac4d6e5db4bfd3325d1d1c418f00adee777db969f8c12d8f310f45fdfda61b26e31bd0eea8b7d64ed1ee0050b5ee9235cfb0
DIST thunderbird-156.0.source.tar.xz 941437984 BLAKE2B ba3bcc3970299154c8c683d73355a7f0ac0e2eb7937378d4bb6903f2f33739101b935e7d40403a1e1522cc4deea44d1a2564ef3a7e1f195bc92a3443718ce201 SHA512 8fd524f9d622f007e9bd5e8bcc440f185427a928a04d3aae14fc476e011ff1c15b68607292624ea4c4e4d596722193dda88e233cdfb6bbf5d05bd180870532ba
DIST thunderbird-157.0.1.source.tar.xz 948443048 BLAKE2B b7a89af2db37cd441b2de91c198cffb41520e7fd81ce67ddf8b9ce7327343dd32c720118137e7bfa3774b97ec7de7d644def1d671d53a426576423015eb34880 SHA512 12c6151150cadce68b113720788ff6d4cdcd39ae57131152f92a272a76c2590fd929edd45faed4e81e1f32eb58d0b22ca003a37294b9daf6648d39194f09fd95
DIST thunderbird-157.0.source.tar.xz 952835956 BLAKE2B 1af90da84acb5618b2b0a0ed421e29ef013094ccebe1ce0778301e50c480a9a5a4201d8c317c7a6e3d97d1015698142dd461956a44ce1a2c185ad0c63808cada SHA512 4213e8584f42cc6e518f1cde4bbb919a1431950340fea51c5dc1e6423c04d68ff57747937ba125f3d7ef704d3bf0516d03760a14d3246aae9b69cbeccbf09598
+DIST thunderbird-158.0.source.tar.xz 961411644 BLAKE2B d6abb0aa73a9d3b95212cd9e4044ce3b9fec3778b27ab3639bef1b300abf48494992d0d1dcb0a7157e2b75b4b571387545b6817b1a2247ddcc8e19dd88a8f9ab SHA512 fe19e0e7540ef27af0bdb730963a9b4ad91472a9ab8b0c5eddd291c2d234ab7ac68ddf71c8595090b87cfd0deeaebc66dbce15c65c90fd09183b05db4bdce263
diff --git a/mail-client/thunderbird/thunderbird-153.5.0.ebuild b/mail-client/thunderbird/thunderbird-153.5.0.ebuild
new file mode 100644
index 000000000000..4c3a1de9ed71
--- /dev/null
+++ b/mail-client/thunderbird/thunderbird-153.5.0.ebuild
@@ -0,0 +1,1112 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-153esr-patches-04.tar.xz"
+
+LLVM_COMPAT=( 22 )
+
+PYTHON_COMPAT=( python3_{12..14} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+RUST_MIN_VER="1.90.0"
+RUST_NEEDS_LLVM=1
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+# Thunderbird will have separate release and esr channels, matching Firefox's rapid and esr.
+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 check-reqs desktop eapi9-ver flag-o-matic gnome2-utils linux-info llvm-r1 \
+ multiprocessing optfeature pax-utils python-any-r1 rust toolchain-funcs virtualx xdg
+
+DESCRIPTION="Thunderbird Mail Client"
+HOMEPAGE="https://www.thunderbird.net/"
+
+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}
+)
+
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
+ ${PATCH_URIS[@]}"
+S="${WORKDIR}/${PN}-${PV%_*}"
+
+if [[ -n ${MOZ_ESR} ]] ; then
+ SLOT="0/esr"
+else
+ SLOT="0/stable"
+fi
+
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="amd64 arm64 ~loong ~ppc64 ~x86"
+
+IUSE="+clang debug eme-free hardened hwaccel jack libproxy pgo pulseaudio sndio selinux"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx"
+IUSE+=" system-pipewire system-png +system-webp wayland wifi +X"
+
+# Thunderbird-only USE flags.
+IUSE+=" +system-librnp"
+
+# "-system-librnp" requires clang, bmo#2006910
+REQUIRED_USE="|| ( X wayland )
+ !system-librnp? ( clang )
+ debug? ( !system-av1 )"
+
+TB_ONLY_DEPEND="selinux? ( sec-policy/selinux-thunderbird )
+ !system-librnp? ( dev-libs/jsoncpp )
+ system-librnp? ( >=dev-util/librnp-0.17.1 )"
+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] )
+ )
+ ')
+ app-alternatives/awk
+ app-arch/unzip
+ app-arch/zip
+ >=dev-util/cbindgen-0.29.4
+ 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="${TB_ONLY_DEPEND}
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ dev-libs/glib:2
+ dev-libs/libffi:=
+ >=dev-libs/nss-3.125
+ >=dev-libs/nspr-4.39
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ media-libs/freetype
+ media-libs/mesa
+ media-video/ffmpeg
+ sys-apps/dbus
+ virtual/zlib:=
+ virtual/freedesktop-icon-theme
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf:2
+ x11-libs/libdrm
+ x11-libs/pango
+ x11-libs/pixman
+ 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.5.3:=
+ >=media-libs/libaom-3.12.1:=
+ )
+ system-harfbuzz? (
+ >=media-gfx/graphite2-1.3.13
+ >=media-libs/harfbuzz-2.8.1:0=
+ )
+ system-icu? ( >=dev-libs/icu-78.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.6.8:= )
+ system-png? ( >=media-libs/libpng-1.6.45:0=[apng] )
+ system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+ wayland? (
+ >=media-libs/libepoxy-1.5.10-r1
+ x11-libs/gtk+:3[wayland]
+ )
+ wifi? (
+ kernel_linux? (
+ || (
+ net-misc/networkmanager
+ net-misc/connman[networkmanager]
+ )
+ )
+ )
+ 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}
+ jack? ( virtual/jack )"
+DEPEND="${COMMON_DEPEND}
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libICE
+ x11-libs/libSM
+ )"
+
+# Thunderbird-only RDEPEND, ESR and Stable.
+if [[ -n ${MOZ_ESR} ]] ; then
+ RDEPEND+=" ~mail-client/thunderbird-l10n-${PV}:0/esr"
+else
+ RDEPEND+=" ~mail-client/thunderbird-l10n-${PV}:0/stable"
+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_clear_vendor_checksums() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -ne 1 ]] ; then
+ die "${FUNCNAME} requires exact one argument"
+ fi
+
+ einfo "Clearing cargo checksums for ${1} ..."
+
+ sed -i \
+ -e 's/\("files":{\)[^}]*/\1/' \
+ "${S}"/third_party/rust/${1}/.cargo-checksum.json || die
+}
+
+moz_install_xpi() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local DESTDIR=${1}
+ shift
+
+ insinto "${DESTDIR}"
+
+ local emid xpi_file xpi_tmp_dir
+ for xpi_file in "${@}" ; do
+ emid=
+ xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+ # Unpack XPI
+ unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+ # Determine extension ID
+ if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+ emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+ [[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf"
+ elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+ emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json")
+ [[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json"
+ else
+ die "failed to determine extension id"
+ fi
+
+ einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+ newins "${xpi_file}" "${emid}.xpi"
+ done
+}
+
+mozconfig_add_options_ac() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local reason=${1}
+ shift
+
+ local option
+ for option in ${@} ; do
+ echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+ done
+}
+
+mozconfig_add_options_mk() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local reason=${1}
+ shift
+
+ local option
+ for option in ${@} ; do
+ echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+ done
+}
+
+mozconfig_use_enable() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 1 ]] ; then
+ die "${FUNCNAME} requires at least one arguments"
+ fi
+
+ local flag=$(use_enable "${@}")
+ mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+mozconfig_use_with() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 1 ]] ; then
+ die "${FUNCNAME} requires at least one arguments"
+ fi
+
+ local flag=$(use_with "${@}")
+ mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+virtwl() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+ [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset"
+ tinywl -h >/dev/null || die 'tinywl -h failed'
+
+ local VIRTWL VIRTWL_PID
+ coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; }
+ local -x WAYLAND_DISPLAY
+ read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+ debug-print "${FUNCNAME}: $@"
+ "$@"
+ local r=$?
+
+ [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+ exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+ return $r
+}
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+ # Ensure we have enough disk space to compile
+ if use pgo || use debug ; then
+ CHECKREQS_DISK_BUILD="14300M"
+ elif tc-is-lto ; then
+ CHECKREQS_DISK_BUILD="10600M"
+ else
+ CHECKREQS_DISK_BUILD="7400M"
+ fi
+
+ check-reqs_pkg_pretend
+ fi
+}
+
+pkg_setup() {
+
+ # Get LTO from environment; export after this phase for use in src_configure (etc)
+ use_lto=no
+
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+
+ if tc-is-lto; then
+ use_lto=yes
+ # LTO is handled via configure
+ filter-lto
+ fi
+
+ if use pgo ; then
+ if ! has userpriv ${FEATURES} ; then
+ eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!"
+ fi
+ fi
+
+ if [[ ${use_lto} = yes ]] ; then
+ # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC,
+ # bmo#1516758, bgo#942288
+ filter-flags -Werror=lto-type-mismatch -Werror=odr
+ fi
+
+ 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
+}
+
+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
+ 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
+
+ # 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
+
+ # 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=comm/mail
+ mozconfig_add_options_ac '' --enable-project=comm/mail
+
+ # Set Gentoo defaults
+ 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-tests \
+ --disable-updater \
+ --disable-valgrind \
+ --disable-wmf \
+ --enable-dbus \
+ --enable-js-shell \
+ --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 \
+ --without-wasm-sandboxed-libraries \
+ --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 loong ; 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
+ else
+ mozconfig_add_options_ac '' --enable-sandbox
+ fi
+
+ # riscv-related options, bgo#947337, bgo#947338
+ if use riscv ; then
+ mozconfig_add_options_ac 'Disable JIT for RISC-V 64' --disable-jit
+ mozconfig_add_options_ac 'Disable webrtc for RISC-V' --disable-webrtc
+ fi
+
+ if [[ -s "${S}/api-google.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+ else
+ einfo "Building without Google API key ..."
+ fi
+
+ if [[ -s "${S}/api-location.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-google-location-service-api-keyfile="${S}/api-location.key"
+ else
+ einfo "Building without Location API key ..."
+ fi
+
+ if [[ -s "${S}/api-mozilla.key" ]] ; then
+ local key_origin="Gentoo default"
+ if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+ key_origin="User value"
+ fi
+
+ mozconfig_add_options_ac "${key_origin}" \
+ --with-mozilla-api-keyfile="${S}/api-mozilla.key"
+ else
+ einfo "Building without Mozilla API key ..."
+ fi
+
+ mozconfig_use_with system-av1
+ mozconfig_use_with system-harfbuzz
+ mozconfig_use_with system-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-pipewire
+ mozconfig_use_with system-png
+ mozconfig_use_with system-webp
+
+ if use system-librnp; then
+ mozconfig_add_options_ac "+system-librnp" --enable-compile-environment
+ mozconfig_use_with system-librnp
+ else
+ # This controls the backend of the bundled librnp. Choices are "botan" and "openssl".
+ # RNP Upstream recommends to use botan. In Gentoo it's preferred to use system-librnp.
+ mozconfig_add_options_ac "+bundled librnp backend = botan" --with-librnp-backend="botan"
+ fi
+
+ mozconfig_use_enable libproxy
+
+ 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 # not available in TB
+ 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
+
+ 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
+
+ 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
+
+ if use pgo ; then
+ mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+ if use clang ; then
+ # Used in build/pgo/profileserver.py
+ export LLVM_PROFDATA="llvm-profdata"
+ fi
+ fi
+
+ mozconfig_use_enable debug
+ if use debug ; then
+ mozconfig_add_options_ac '+debug' --disable-optimize
+ mozconfig_add_options_ac '+debug' --enable-jemalloc
+ mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+ else
+ mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing
+
+ if is-flag '-g*' ; then
+ if use clang ; then
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
+ else
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols
+ fi
+ else
+ mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols
+ fi
+
+ if is-flag '-O0' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0
+ elif is-flag '-O4' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4
+ elif is-flag '-O3' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3
+ elif is-flag '-O1' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1
+ elif is-flag '-Os' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os
+ else
+ mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2
+ fi
+ fi
+
+ # Debug flag was handled via configure
+ filter-flags '-g*'
+
+ # Optimization flag was handled via configure
+ filter-flags '-O*'
+
+ # elf-hack
+ # Filter "-z,pack-relative-relocs" and let the build system handle it instead.
+ if use amd64 || use x86 ; then
+ filter-flags "-z,pack-relative-relocs"
+
+ if tc-ld-is-mold ; then
+ # relr-elf-hack is currently broken with mold, bgo#916259
+ mozconfig_add_options_ac 'disable elf-hack with mold linker' --disable-elf-hack
+ else
+ mozconfig_add_options_ac 'relr elf-hack' --enable-elf-hack=relr
+ fi
+ elif use loong || use ppc64 || use riscv ; then
+ # '--disable-elf-hack' is not recognized on loong/ppc64/riscv,
+ # see bgo #917049, #930046
+ :;
+ else
+ mozconfig_add_options_ac 'disable elf-hack on non-supported arches' --disable-elf-hack
+ fi
+
+ if ! use elibc_glibc; then
+ mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+ fi
+
+ # 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"
+
+ # 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_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_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
+
+ insinto "${MOZILLA_FIVE_HOME}/distribution"
+ newins "${FILESDIR}"/distribution.ini distribution.ini
+
+ # Install system-wide preferences
+ local PREFS_DIR="${MOZILLA_FIVE_HOME}/defaults/pref"
+ insinto "${PREFS_DIR}"
+ newins "${FILESDIR}"/gentoo-default-prefs-r1.js gentoo-prefs.js
+
+ local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js"
+
+ # Force hwaccel prefs if USE=hwaccel is enabled
+ if use hwaccel ; then
+ cat "${FILESDIR}"/gentoo-hwaccel-prefs.js \
+ >>"${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
+
+ # 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 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 icons
+ local icon_srcdir="${S}/comm/mail/branding/thunderbird"
+ local icon_symbolic_file="${icon_srcdir}/TB-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}-r2.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
+
+ # 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
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ if ver_replacing -lt 136.0 ; then
+ elog "In this version of Thunderbird, upstream introduced an in-app notification"
+ elog "system. Setting pref 'mail.inappnotifications.enabled' to false and nullifying"
+ elog "'mail.inappnotifications.url' may help you avoid these messages, if you don't"
+ elog "wish to receive them."
+ fi
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "desktop notifications" x11-libs/libnotify
+ optfeature "encrypted chat support" net-libs/libotr
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+}
diff --git a/mail-client/thunderbird/thunderbird-158.0.ebuild b/mail-client/thunderbird/thunderbird-158.0.ebuild
new file mode 100644
index 000000000000..7486c467a478
--- /dev/null
+++ b/mail-client/thunderbird/thunderbird-158.0.ebuild
@@ -0,0 +1,1123 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FIREFOX_PATCHSET="firefox-158-patches-01t.tar.xz"
+
+LLVM_COMPAT=( 22 23 )
+
+PYTHON_COMPAT=( python3_{12..14} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+RUST_MIN_VER="1.90.0"
+RUST_NEEDS_LLVM=1
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="manual"
+
+# Thunderbird will have separate release and esr channels, matching Firefox's rapid and esr.
+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"
+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 eapi9-ver flag-o-matic gnome2-utils linux-info llvm-r1 \
+ multiprocessing optfeature pax-utils python-any-r1 rust toolchain-funcs virtualx xdg
+
+DESCRIPTION="Thunderbird Mail Client"
+HOMEPAGE="https://www.thunderbird.net/"
+
+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}
+)
+
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
+ ${PATCH_URIS[@]}"
+S="${WORKDIR}/${PN}-${PV%_*}"
+
+if [[ -n ${MOZ_ESR} ]] ; then
+ SLOT="0/esr"
+else
+ SLOT="0/stable"
+fi
+
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86"
+
+IUSE="+clang debug eme-free hardened hwaccel jack +jumbo-build libproxy pgo pulseaudio sndio selinux"
+IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx"
+IUSE+=" system-pipewire system-png +system-webp wayland wifi +X"
+
+# Thunderbird-only USE flags.
+IUSE+=" +system-librnp"
+
+# "-system-librnp" requires clang, bmo#2006910
+REQUIRED_USE="|| ( X wayland )
+ !system-librnp? ( clang )
+ debug? ( !system-av1 )"
+
+TB_ONLY_DEPEND="selinux? ( sec-policy/selinux-thunderbird )
+ !system-librnp? ( dev-libs/jsoncpp )
+ system-librnp? ( >=dev-util/librnp-0.17.1 )"
+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] )
+ )
+ ')
+ app-alternatives/awk
+ app-arch/unzip
+ app-arch/zip
+ >=dev-util/cbindgen-0.29.4
+ net-libs/nodejs[ssl]
+ 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="${TB_ONLY_DEPEND}
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ dev-libs/glib:2
+ dev-libs/libffi:=
+ >=dev-libs/nss-3.130
+ >=dev-libs/nspr-4.39
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ media-libs/freetype
+ media-libs/mesa
+ media-video/ffmpeg
+ sys-apps/dbus
+ virtual/zlib:=
+ virtual/freedesktop-icon-theme
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf:2
+ x11-libs/libdrm
+ x11-libs/pango
+ x11-libs/pixman
+ 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.5.4:=
+ >=media-libs/libaom-3.12.1:=
+ )
+ system-harfbuzz? (
+ >=media-gfx/graphite2-1.3.13
+ >=media-libs/harfbuzz-2.8.1:0=
+ )
+ system-icu? ( >=dev-libs/icu-78.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.6.8:= )
+ system-png? ( >=media-libs/libpng-1.6.45:0=[apng] )
+ system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+ wayland? (
+ >=media-libs/libepoxy-1.5.10-r1
+ x11-libs/gtk+:3[wayland]
+ )
+ wifi? (
+ kernel_linux? (
+ || (
+ net-misc/networkmanager
+ net-misc/connman[networkmanager]
+ )
+ )
+ )
+ 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}
+ jack? ( virtual/jack )"
+DEPEND="${COMMON_DEPEND}
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libICE
+ x11-libs/libSM
+ )"
+
+# Thunderbird-only RDEPEND, ESR and Stable.
+if [[ -n ${MOZ_ESR} ]] ; then
+ RDEPEND+=" ~mail-client/thunderbird-l10n-${PV}:0/esr"
+else
+ RDEPEND+=" ~mail-client/thunderbird-l10n-${PV}:0/stable"
+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_clear_vendor_checksums() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -ne 1 ]] ; then
+ die "${FUNCNAME} requires exact one argument"
+ fi
+
+ einfo "Clearing cargo checksums for ${1} ..."
+
+ sed -i \
+ -e 's/\("files":{\)[^}]*/\1/' \
+ "${S}"/third_party/rust/${1}/.cargo-checksum.json || die
+}
+
+moz_install_xpi() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local DESTDIR=${1}
+ shift
+
+ insinto "${DESTDIR}"
+
+ local emid xpi_file xpi_tmp_dir
+ for xpi_file in "${@}" ; do
+ emid=
+ xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+ # Unpack XPI
+ unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+ # Determine extension ID
+ if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+ emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+ [[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf"
+ elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+ emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json")
+ [[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json"
+ else
+ die "failed to determine extension id"
+ fi
+
+ einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+ newins "${xpi_file}" "${emid}.xpi"
+ done
+}
+
+mozconfig_add_options_ac() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local reason=${1}
+ shift
+
+ local option
+ for option in ${@} ; do
+ echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+ done
+}
+
+mozconfig_add_options_mk() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 2 ]] ; then
+ die "${FUNCNAME} requires at least two arguments"
+ fi
+
+ local reason=${1}
+ shift
+
+ local option
+ for option in ${@} ; do
+ echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+ done
+}
+
+mozconfig_use_enable() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 1 ]] ; then
+ die "${FUNCNAME} requires at least one arguments"
+ fi
+
+ local flag=$(use_enable "${@}")
+ mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+mozconfig_use_with() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ if [[ ${#} -lt 1 ]] ; then
+ die "${FUNCNAME} requires at least one arguments"
+ fi
+
+ local flag=$(use_with "${@}")
+ mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+virtwl() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
+ [[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset"
+ tinywl -h >/dev/null || die 'tinywl -h failed'
+
+ local VIRTWL VIRTWL_PID
+ coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; }
+ local -x WAYLAND_DISPLAY
+ read WAYLAND_DISPLAY <&${VIRTWL[0]}
+
+ debug-print "${FUNCNAME}: $@"
+ "$@"
+ local r=$?
+
+ [[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
+ exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
+ return $r
+}
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+ # Ensure we have enough disk space to compile
+ if use pgo || use debug ; then
+ CHECKREQS_DISK_BUILD="14300M"
+ elif tc-is-lto ; then
+ CHECKREQS_DISK_BUILD="10600M"
+ else
+ CHECKREQS_DISK_BUILD="7400M"
+ fi
+
+ check-reqs_pkg_pretend
+ fi
+}
+
+pkg_setup() {
+
+ # Get LTO from environment; export after this phase for use in src_configure (etc)
+ use_lto=no
+
+ if [[ ${MERGE_TYPE} != binary ]] ; then
+
+ if tc-is-lto; then
+ use_lto=yes
+ # LTO is handled via configure
+ filter-lto
+ fi
+
+ if use pgo ; then
+ if ! has userpriv ${FEATURES} ; then
+ eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!"
+ fi
+ fi
+
+ if [[ ${use_lto} = yes ]] ; then
+ # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC,
+ # bmo#1516758, bgo#942288
+ filter-flags -Werror=lto-type-mismatch -Werror=odr
+ fi
+
+ 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
+}
+
+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() {
+ # 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
+ 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
+
+ # 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
+ moz_clear_vendor_checksums bindgen
+ moz_clear_vendor_checksums audio_thread_priority
+ # TB-specific:
+ sed -i \
+ -e 's/\("files":{\)[^}]*/\1/' \
+ "${S}"/comm/third_party/rust/audio_thread_priority/.cargo-checksum.json || die
+ sed -i \
+ -e 's/\("files":{\)[^}]*/\1/' \
+ "${S}"/comm/third_party/rust/bindgen/.cargo-checksum.json || die
+
+ # 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=comm/mail
+ mozconfig_add_options_ac '' --enable-project=comm/mail
+
+ # Set Gentoo defaults
+ 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-tests \
+ --disable-updater \
+ --disable-valgrind \
+ --enable-dbus \
+ --enable-js-shell \
+ --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 \
+ --without-wasm-sandboxed-libraries \
+ --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 loong ; 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
+ 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-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-pipewire
+ mozconfig_use_with system-png
+ mozconfig_use_with system-webp
+
+ mozconfig_use_enable libproxy
+ mozconfig_use_enable jumbo-build unified-build
+
+ 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 # not available in TB
+ 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
+
+ if use system-librnp; then
+ mozconfig_add_options_ac "+system-librnp" --enable-compile-environment
+ mozconfig_use_with system-librnp
+ else
+ # This controls the backend of the bundled librnp. Choices are "botan" and "openssl".
+ # RNP Upstream recommends to use botan. In Gentoo it's preferred to use system-librnp.
+ mozconfig_add_options_ac "+bundled librnp backend = botan" --with-librnp-backend="botan"
+ fi
+
+ 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
+
+ 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
+
+ if use pgo ; then
+ mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+ if use clang ; then
+ # Used in build/pgo/profileserver.py
+ export LLVM_PROFDATA="llvm-profdata"
+ fi
+ fi
+
+ mozconfig_use_enable debug
+ if use debug ; then
+ mozconfig_add_options_ac '+debug' --disable-optimize
+ mozconfig_add_options_ac '+debug' --enable-jemalloc
+ mozconfig_add_options_ac '+debug' --enable-real-time-tracing
+ else
+ mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing
+
+ if is-flag '-g*' ; then
+ if use clang ; then
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
+ else
+ mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols
+ fi
+ else
+ mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols
+ fi
+
+ if is-flag '-O0' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0
+ elif is-flag '-O4' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4
+ elif is-flag '-O3' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3
+ elif is-flag '-O1' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1
+ elif is-flag '-Os' ; then
+ mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os
+ else
+ mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2
+ fi
+ fi
+
+ # Debug flag was handled via configure
+ filter-flags '-g*'
+
+ # Optimization flag was handled via configure
+ filter-flags '-O*'
+
+ # elf-hack
+ # Filter "-z,pack-relative-relocs" and let the build system handle it instead.
+ if use amd64 || use x86 ; then
+ filter-flags "-z,pack-relative-relocs"
+
+ if tc-ld-is-mold ; then
+ # relr-elf-hack is currently broken with mold, bgo#916259
+ mozconfig_add_options_ac 'disable elf-hack with mold linker' --disable-elf-hack
+ else
+ mozconfig_add_options_ac 'relr elf-hack' --enable-elf-hack=relr
+ fi
+ elif use loong || use ppc64 || use riscv ; then
+ # '--disable-elf-hack' is not recognized on loong/ppc64/riscv,
+ # see bgo #917049, #930046
+ :;
+ else
+ mozconfig_add_options_ac 'disable elf-hack on non-supported arches' --disable-elf-hack
+ fi
+
+ if ! use elibc_glibc; then
+ mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+ fi
+
+ # 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"
+
+ # 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_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_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
+
+ insinto "${MOZILLA_FIVE_HOME}/distribution"
+ newins "${FILESDIR}"/distribution.ini distribution.ini
+
+ # Install system-wide preferences
+ local PREFS_DIR="${MOZILLA_FIVE_HOME}/defaults/pref"
+ insinto "${PREFS_DIR}"
+ newins "${FILESDIR}"/gentoo-default-prefs-r1.js gentoo-prefs.js
+
+ local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js"
+
+ # Force hwaccel prefs if USE=hwaccel is enabled
+ if use hwaccel ; then
+ cat "${FILESDIR}"/gentoo-hwaccel-prefs.js \
+ >>"${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 gfxtest binary on supported arches
+ exeinto "${MOZILLA_FIVE_HOME}"
+ doexe "${BUILD_DIR}"/dist/bin/gfxtest
+ fi
+
+ # 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 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 icons
+ local icon_srcdir="${S}/comm/mail/branding/thunderbird"
+ local icon_symbolic_file="${icon_srcdir}/TB-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}-r2.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
+
+ # 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
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ if ver_replacing -lt 136.0 ; then
+ elog "In this version of Thunderbird, upstream introduced an in-app notification"
+ elog "system. Setting pref 'mail.inappnotifications.enabled' to false and nullifying"
+ elog "'mail.inappnotifications.url' may help you avoid these messages, if you don't"
+ elog "wish to receive them."
+ fi
+
+ optfeature_header "Optional programs for extra features:"
+ optfeature "desktop notifications" x11-libs/libnotify
+ optfeature "encrypted chat support" net-libs/libotr
+ optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
+}
diff --git a/media-libs/freetype/Manifest b/media-libs/freetype/Manifest
index 9a4450795569..c6c493367d4d 100644
--- a/media-libs/freetype/Manifest
+++ b/media-libs/freetype/Manifest
@@ -1,6 +1,12 @@
DIST freetype-2.14.3.tar.xz 2670220 BLAKE2B 26db1946b099abc73d9d249dc48303e70886e0b1cb7180d5b9538b3934dc677a1572a32573af6adabeeb1c1a2eef81f24399038d3d8e640c29bba77f6c8a3596 SHA512 43de86ea70b4b47f6efaae67f3440f65a24ffac29dc6d11203a9764e4f1a749ce1ba7645acd23525220b3ba12ddad8687b962b9f1254e2c0a86070854e85d5a0
DIST freetype-2.14.3.tar.xz.sig 833 BLAKE2B 14d1118374fd0baf02031766d25dabb1a751a8abe4c518caa8ed6252c81dac40adfc9af6ed6588a93f5d5f38e50c45ffb5040d77d9768664939d928fa8baca5c SHA512 99ef273a707364dce4abba6ba49de119587616020aca3b590f47ec9ab5467a156feb18a20054de26f49390c67d52dff3a7015e117279b21e878e404e9bf165e5
+DIST freetype-2.15.0.tar.xz 2716928 BLAKE2B b49bbcf6eae90159b8c3f315a8175d23a0c6a8f8574361aaff1b05d19984b31c000c1d637ba128e6f2f09d984d583f36cc7dd84e196152214f6fc8bed20e810d SHA512 5c29e8ee1e5c83b10c51251fa171899ee6e65ff7638e58d774eae05e348c42df8363a7bb9de1894f96a66975bde361310edf418a33423aabba377d0a37a48b8e
+DIST freetype-2.15.0.tar.xz.sig 833 BLAKE2B ef43cc8ccf2757b48aac4b5fbb516a5113911f7d80fda1db4e4b099926676ad37ae2c32042329593bdcbf736d2d871ab04aaefdc0b357471d8d0e7b6b2cce428 SHA512 dbdf3bd389ae3f7ad324906ef5085bc4bcd9c2b486b4edca8314b639f0a7a749cfbae5d7f8f4698105cd606956562e1cae6c769336aa05c3a0efce5e61e906b8
DIST freetype-doc-2.14.3.tar.xz 2176200 BLAKE2B 8d8833b36cf81498d007137eaef549309956cb5714f88cbfc7fb1d4b508add1744b86eb543c377db6b32ac872eb80bd72f95d2371013adc4ef4b42abf49fbaf0 SHA512 f5d9bdd5119d353533a17366bfbe6d847d079f908137b1353cb9b6ce2e9ae5998dcaf7c888eeceec22b162cdb14256c6e7fefd75057250321fbcd9fcafc068f4
DIST freetype-doc-2.14.3.tar.xz.sig 833 BLAKE2B 70c55486ea95bab9f4430452bb7b9f67c7182ff6cb7461c84e94b12c16113332f3b27d8f3deab0984de678794da2299c2e6472925e5fc56a546dc4d6642bd7dc SHA512 df8bcb57839dcab5734f21eebc3b3db4b3656415695e87d86e44996e03d79e6507933a433633005fc004605432bd96d43d69efb140ab84b9c1136ca9c069fdba
+DIST freetype-doc-2.15.0.tar.xz 2173764 BLAKE2B 1c807276219171ca09aa7adc454ad7f2e9d1994c2c4d06e7eb2d88164552e0d6f9d81c3a361a68193b3fbb9d176d16b52f2b4ea4650ccfe456cf8da152f0c273 SHA512 117c880e9b6e142ce626e00619b3e2944fffb4c9c9e3e32b81d236486ae7fd33cc7f2141cd7c8ea5ac980ddffe568da595bc045a42709d38636f7ace0ad76414
+DIST freetype-doc-2.15.0.tar.xz.sig 833 BLAKE2B 6a57ffeb5e59de43be26c76076a3b1a20214ca36e8e8020dd71fce68be2e7d585504b39dd898f5be1825029f61c920ae24b6b30fc721e73461d3d5a2ac9bbf49 SHA512 6d96996c8999f42761745fdc3767047804a3147d5908da7dbdc36b6c1ba694338565f9dfb7425cabbb85d81f2fd57fcdfd8fd19eb1b74499b436582aa15ceee3
DIST ft2demos-2.14.3.tar.xz 347960 BLAKE2B 15a4f3a84ad4dee6a5aff3e33d2b972d39dbd7c595f407fa7d1ba7426ac529628111424b6c567ffe95eb222f7a239ff5627e8c8eda5109798a6e7f97cdb05166 SHA512 e59c1266010330a8cbfd25dec096a72ce7539b64f9c057de062a281261b3ad658240f58e75b53d7a880d7ad5e020206316a6e9e82b03dec2e4d999f3f56cb39a
DIST ft2demos-2.14.3.tar.xz.sig 833 BLAKE2B a3ae910aa643faef284797a2488db42699854787661da5fdbadbf5e9ed8c0c497454b106c7c65beeba8d1aad32b983194b69e359cdf49c3af22f6ba00fab15e7 SHA512 c6bf87617bedec1430dd75e9d48e00b9994f9caf13d8721eb7059597e617ec7b51aac260aa644f82e4c54f12494cdd57ba21cec657f548b29b57e16576bc7865
+DIST ft2demos-2.15.0.tar.xz 347800 BLAKE2B 8b48ad3565c61632bacafb0006d621ae646bbf592c71127c066a99b2b824203b27516178e867302cd0c7a0a2d47217d8a95dc1eff109cdc122b353bcfc5c62f7 SHA512 fefc7b05f3cee6bf02cbd7e2d20fdcaea04e1effde5803a0c5f34884b1f11b4e0664e0dcdc85cf09f8e4c4d721ce8d02ff445b76648dede1eb3cf18b55b39567
+DIST ft2demos-2.15.0.tar.xz.sig 833 BLAKE2B dd0a327447d756653486758f229bc532ab220baace22e0f1804dfe38b208e4c8c7b9fbb3c84ff3a0616200a1212e9d7049112a576067f53fa182959d2a8168e6 SHA512 402273dc8cbe333ff7ebb3811856b6af07ec15b1cfe5f4de891964c6d2d57abe947a7b5b0da7d90148b6f667a2acc642a3da70576fa18e14c003bd3db9af81ae
diff --git a/media-libs/freetype/freetype-2.15.0.ebuild b/media-libs/freetype/freetype-2.15.0.ebuild
new file mode 100644
index 000000000000..3cdb07eb176c
--- /dev/null
+++ b/media-libs/freetype/freetype-2.15.0.ebuild
@@ -0,0 +1,277 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools libtool multilib-minimal toolchain-funcs
+
+DESCRIPTION="High-quality and portable font engine"
+HOMEPAGE="https://www.freetype.org/"
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/wernerlemberg.asc
+ inherit verify-sig
+ SRC_URI="
+ https://downloads.sourceforge.net/freetype/${P/_/}.tar.xz
+ mirror://nongnu/freetype/${P/_/}.tar.xz
+ utils? (
+ https://downloads.sourceforge.net/freetype/ft2demos-${PV}.tar.xz
+ mirror://nongnu/freetype/ft2demos-${PV}.tar.xz
+ verify-sig? (
+ https://downloads.sourceforge.net/freetype/ft2demos-${PV}.tar.xz.sig
+ mirror://nongnu/freetype/ft2demos-${PV}.tar.xz.sig
+ )
+ )
+ doc? (
+ https://downloads.sourceforge.net/freetype/${PN}-doc-${PV}.tar.xz
+ mirror://nongnu/freetype/${PN}-doc-${PV}.tar.xz
+ verify-sig? (
+ https://downloads.sourceforge.net/freetype/${PN}-doc-${PV}.tar.xz.sig
+ mirror://nongnu/freetype/${PN}-doc-${PV}.tar.xz.sig
+ )
+ )
+ verify-sig? (
+ https://downloads.sourceforge.net/freetype/${P/_/}.tar.xz.sig
+ mirror://nongnu/freetype/${P/_/}.tar.xz.sig
+ )
+ "
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+ BDEPEND="verify-sig? ( sec-keys/openpgp-keys-wernerlemberg )"
+fi
+
+LICENSE="|| ( FTL GPL-2+ )"
+SLOT="2"
+IUSE="X +adobe-cff brotli bzip2 +cleartype-hinting debug doc fontforge harfbuzz +png static-libs svg utils"
+
+RDEPEND="
+ >=virtual/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}]
+ brotli? ( app-arch/brotli:=[${MULTILIB_USEDEP}] )
+ bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
+ png? ( >=media-libs/libpng-1.2.51:=[${MULTILIB_USEDEP}] )
+ utils? (
+ svg? ( >=gnome-base/librsvg-2.46.0[${MULTILIB_USEDEP}] )
+ X? ( >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}] )
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND+="
+ virtual/pkgconfig
+"
+PDEPEND="harfbuzz? ( >=media-libs/harfbuzz-1.3.0[truetype,${MULTILIB_USEDEP}] )"
+
+_egit_repo_handler() {
+ if [[ ${PV} == 9999 ]] ; then
+ local phase="${1}"
+ case ${phase} in
+ fetch|unpack)
+ :;
+ ;;
+ *)
+ die "Please use this function with either \"fetch\" or \"unpack\""
+ ;;
+ esac
+
+ local EGIT_REPO_URI
+ EGIT_REPO_URI="https://gitlab.freedesktop.org/freetype/freetype.git"
+ git-r3_src_${phase}
+ if use utils ; then
+ EGIT_REPO_URI="https://gitlab.freedesktop.org/freetype/freetype-demos.git"
+ local EGIT_CHECKOUT_DIR="${WORKDIR}/ft2demos-${PV}"
+ git-r3_src_${phase}
+ fi
+ else
+ default
+
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig}
+
+ use doc && verify-sig_verify_detached "${DISTDIR}"/${PN}-doc-${PV}.tar.xz{,.sig}
+ use utils && verify-sig_verify_detached "${DISTDIR}"/ft2demos-${PV}.tar.xz{,.sig}
+ fi
+ fi
+}
+
+pkg_pretend() {
+ if use svg && ! use utils ; then
+ einfo "The \"svg\" USE flag only has effect when the \"utils\" USE flag is also enabled."
+ fi
+}
+
+src_unpack() {
+ _egit_repo_handler ${EBUILD_PHASE}
+
+ if [[ ${PV} == 9999 ]] ; then
+ # Need to copy stuff from dlg subproject (bug #758902)
+ local dlg_inc_dir="${S}/subprojects/dlg/include/dlg"
+ local dlg_src_dir="${S}/subprojects/dlg/src/dlg"
+ local dlg_dest_dir="${S}/include"
+ mkdir -p "${dlg_dest_dir}/dlg" || die
+ cp "${dlg_inc_dir}"/{dlg,output}.h "${dlg_dest_dir}/dlg" || die
+ cp "${dlg_src_dir}"/* "${dlg_dest_dir}" || die
+ fi
+}
+
+src_prepare() {
+ if [[ ${PV} == 9999 ]] ; then
+ # Do NOT automagically mess with submodules!
+ sed '/setup: copy_submodule/d' -i builds/toplevel.mk || die
+
+ # Inspired by shipped autogen.sh script
+ eval $(sed -n \
+ -e 's/^#define *\(FREETYPE_MAJOR\) *\([0-9][0-9]*\).*/\1=\2/p' \
+ -e 's/^#define *\(FREETYPE_MINOR\) *\([0-9][0-9]*\).*/\1=\2/p' \
+ -e 's/^#define *\(FREETYPE_PATCH\) *\([0-9][0-9]*\).*/\1=\2/p' \
+ include/freetype/freetype.h || die)
+ FREETYPE="${FREETYPE_MAJOR}.${FREETYPE_MINOR}"
+ [[ "${FREETYPE_PATCH}" != 0 ]] && FREETYPE+=".${FREETYPE_PATCH}"
+
+ pushd builds/unix &>/dev/null || die
+ sed -e "s;@VERSION@;${FREETYPE};" \
+ < configure.raw > configure.ac || die
+ unset FREETYPE_MAJOR FREETYPE_MINOR FREETYPE_PATCH FREETYPE
+ popd &>/dev/null || die
+ fi
+
+ default
+
+ pushd builds/unix &>/dev/null || die
+ # eautoheader produces broken ftconfig.in
+ AT_NOEAUTOHEADER="yes" AT_M4DIR="." eautoreconf
+ popd &>/dev/null || die
+
+ # This is the same as the 01 patch from infinality
+ sed '/AUX_MODULES += \(gx\|ot\)valid/s@^# @@' -i modules.cfg || die
+
+ enable_option() {
+ sed -i -e "/#define $1/ { s:/\* ::; s: \*/:: }" \
+ include/${PN}/config/ftoption.h \
+ || die "unable to enable option $1"
+ }
+
+ disable_option() {
+ sed -i -e "/#define $1/ { s:^:/* :; s:$: */: }" \
+ include/${PN}/config/ftoption.h \
+ || die "unable to disable option $1"
+ }
+
+ if ! use cleartype-hinting ; then
+ disable_option TT_CONFIG_OPTION_SUBPIXEL_HINTING
+ fi
+
+ # Can be disabled with FREETYPE_PROPERTIES="pcf:no-long-family-names=1"
+ # via environment (new since v2.8)
+ enable_option PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
+
+ # See https://freetype.org/patents.html (expired!)
+ enable_option FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
+ if ! use adobe-cff ; then
+ enable_option CFF_CONFIG_OPTION_OLD_ENGINE
+ fi
+
+ if use debug ; then
+ enable_option FT_DEBUG_LEVEL_TRACE
+ enable_option FT_DEBUG_MEMORY
+ fi
+
+ if use utils ; then
+ cd "${WORKDIR}/ft2demos-${PV}" || die
+ # Disable tests needing X11 when USE="-X". (bug #177597)
+ if ! use X ; then
+ sed -i -e "/EXES\ +=\ ftdiff/ s:^:#:" Makefile || die
+ fi
+ cd "${S}" || die
+ fi
+
+ # bug #869803
+ if [[ ${PV} != 9999 ]] ; then
+ rm docs/reference/sitemap.xml.gz || die
+ fi
+
+ # We need non-/bin/sh to run configure
+ if [[ -n ${CONFIG_SHELL} ]] ; then
+ sed -i -e "1s:^#![[:space:]]*/bin/sh:#!${CONFIG_SHELL}:" \
+ "${S}"/builds/unix/configure || die
+ fi
+
+ elibtoolize --patch-only
+}
+
+multilib_src_configure() {
+ export GNUMAKE=gmake
+
+ local myeconfargs=(
+ --disable-freetype-config
+ --enable-shared
+ --with-zlib
+ $(use_with brotli)
+ $(use_with bzip2)
+ # As of 2.14.0, FT bundles its own copies of the needed headers and dlopen()s
+ # harfbuzz instead, which breaks an insidious circular dependency.
+ $(use_with harfbuzz harfbuzz dynamic)
+ $(use_with png)
+ $(use_enable static-libs static)
+ $(usex utils $(use_with svg librsvg) --without-librsvg)
+
+ # Avoid using libpng-config
+ LIBPNG_CFLAGS="$($(tc-getPKG_CONFIG) --cflags libpng)"
+ LIBPNG_LDFLAGS="$($(tc-getPKG_CONFIG) --libs libpng)"
+ )
+
+ case ${CHOST} in
+ mingw*|*-mingw*) ;;
+ # Workaround windows misdetection: bug #654712
+ # Have to do it for both ${CHOST}-windres and windres
+ *) myeconfargs+=( ac_cv_prog_RC= ac_cv_prog_ac_ct_RC= ) ;;
+ esac
+
+ export CC_BUILD="$(tc-getBUILD_CC)"
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use utils ; then
+ einfo "Building utils"
+ # Fix for Prefix, bug #339334
+ emake \
+ X11_PATH="${EPREFIX}/usr/$(get_libdir)" \
+ FT2DEMOS=1 TOP_DIR_2="${WORKDIR}/ft2demos-${PV}"
+ fi
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use utils ; then
+ einfo "Installing utils"
+ emake DESTDIR="${D}" FT2DEMOS=1 \
+ TOP_DIR_2="${WORKDIR}/ft2demos-${PV}" install
+ fi
+}
+
+multilib_src_install_all() {
+ if use fontforge ; then
+ # fontforge can probably cope with fewer of these, but this is simpler
+ einfo "Installing internal headers required for fontforge"
+ local header
+ find src/truetype include/freetype/internal -name '*.h' | \
+ while read header ; do
+ mkdir -p "${ED}/usr/include/freetype2/internal4fontforge/$(dirname ${header})" || die
+ cp ${header} "${ED}/usr/include/freetype2/internal4fontforge/$(dirname ${header})" || die
+ done
+ fi
+
+ dodoc docs/{CHANGES,CUSTOMIZE,DEBUG,INSTALL.UNIX,*.txt,PROBLEMS,TODO}
+ if [[ ${PV} != 9999 ]] && use doc ; then
+ docinto html
+ dodoc -r docs/*
+ fi
+
+ find "${ED}" -type f -name '*.la' -delete || die
+}
diff --git a/media-libs/freetype/freetype-9999.ebuild b/media-libs/freetype/freetype-9999.ebuild
index 56affe2a8bdc..3cdb07eb176c 100644
--- a/media-libs/freetype/freetype-9999.ebuild
+++ b/media-libs/freetype/freetype-9999.ebuild
@@ -48,7 +48,7 @@ IUSE="X +adobe-cff brotli bzip2 +cleartype-hinting debug doc fontforge harfbuzz
RDEPEND="
>=virtual/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}]
- brotli? ( app-arch/brotli[${MULTILIB_USEDEP}] )
+ brotli? ( app-arch/brotli:=[${MULTILIB_USEDEP}] )
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
png? ( >=media-libs/libpng-1.2.51:=[${MULTILIB_USEDEP}] )
utils? (
diff --git a/media-sound/mpg123/mpg123-1.33.7.ebuild b/media-sound/mpg123/mpg123-1.33.7.ebuild
new file mode 100644
index 000000000000..c827c2231a16
--- /dev/null
+++ b/media-sound/mpg123/mpg123-1.33.7.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit multilib-minimal
+
+DESCRIPTION="A meta package for realtime MPEG 1.0/2.0/2.5 audio player for layers 1, 2 and 3"
+HOMEPAGE="https://www.mpg123.org/"
+
+S="${WORKDIR}"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+IUSE="alsa coreaudio jack nas oss portaudio pulseaudio sdl"
+
+RDEPEND="
+ media-sound/mpg123-base[${MULTILIB_USEDEP},alsa?,coreaudio?,jack?,nas?,oss?,portaudio?,pulseaudio?,sdl?]
+ media-plugins/mpg123-output-plugins[alsa?,coreaudio?,jack?,nas?,oss?,portaudio?,pulseaudio?,sdl?]
+"
+DEPEND="${RDEPEND}"
diff --git a/net-dns/nsd/Manifest b/net-dns/nsd/Manifest
index 63f76eb04310..7aa4250b32ce 100644
--- a/net-dns/nsd/Manifest
+++ b/net-dns/nsd/Manifest
@@ -6,3 +6,5 @@ DIST nsd-4.15.1.tar.gz 1625741 BLAKE2B 4eae4345b96555d8e38feef061053a8e7bbd94804
DIST nsd-4.15.1.tar.gz.asc 659 BLAKE2B c4aaf2078660d497ac34ea96a96fe1d254c7d01389c60ce9c43ce8a154c0654fcafbbde0b8641cca6a3f4df37e7ea9193a66cd12da58263e3d8e8950d3c2f84c SHA512 1961df37d4c1a8b731c9dd0d568767e971f4944cf6ecd9d168b19d3c7ca0b933958964ec83f71f8e80957db0b6ba0968f786164a81fce96a7d861a034910d50b
DIST nsd-4.15.2.tar.gz 1634936 BLAKE2B 73bac9c495abdcbe4cdb3f47008df760fb2077d241d6cda17a1dab83c9c1447c1581d56d5b290ecbcb20196c198d409047d4d6bbbf187b8f82aeefb7d0d77819 SHA512 e543425438402ca1f4c61ea9f54bcb6ea3ca802b1d645aa76d56bbc82aefedaa6080a757b0e7bd4051c4cd0177a09fd55473eaf9cd641d1021eec94f143df6ea
DIST nsd-4.15.2.tar.gz.asc 659 BLAKE2B 28bf78a9663bd8d389d39250341fa5ac902dd21b8f049b9673d1e0cfd8514f716df192835e45ea12346a8b5ef97f0a2c886117d2fae31e5fd058e74311284f5f SHA512 8b821b83af6294e86abc12acd14604be16b3bad3db051cb4b5a044d209af9a3b5f8f0081037b232904ff2dc09f21f2c856c58422362e5ee17a8fea533a940917
+DIST nsd-4.15.3.tar.gz 1620092 BLAKE2B 57b76908cf059625fafa86ea01a34d19c0573228c4fab51ebed3227f0d8755cca428424acabda3af719ba05804ff03f678b6dbe36763689b15e26e089369bc98 SHA512 009b35390a643439a054a73a9743cb00b07632b21af9aa856d1763e268bb9a8ce8c67c94dc4b179d681a1df8bc5b26a85f324c03ee3e3a627a394d371fcaf5b9
+DIST nsd-4.15.3.tar.gz.asc 659 BLAKE2B d9d987b9605944459e1ea19215fd7ded454827f9833c552ad1f58c3fdd3740d9f3f7f1fe81b71bf25c253b44297142ddfb230d6720971e7dd91bbde2ccec35c7 SHA512 03b46dc2616d4629473f52a52fbb5e70bb6990b14f0ade777d4bb85c55d1eae0d8a45637b3376ce44128b5a8c4c47235981c727eb62de8d47d5cdb22bbceed07
diff --git a/net-dns/nsd/nsd-4.15.3.ebuild b/net-dns/nsd/nsd-4.15.3.ebuild
new file mode 100644
index 000000000000..c41a61629aa3
--- /dev/null
+++ b/net-dns/nsd/nsd-4.15.3.ebuild
@@ -0,0 +1,190 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/nlnetlabs.asc
+inherit autotools systemd tmpfiles toolchain-funcs verify-sig
+
+DESCRIPTION="An authoritative only, high performance, open source name server"
+HOMEPAGE="https://www.nlnetlabs.nl/projects/nsd/about/"
+
+if [[ ${PV} == *9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/NLnetLabs/nsd.git"
+else
+ # Version voodoo needed only for non-release tarballs: 4.0.0_rc1 => 4.0.0rc1
+ MY_PV="${PV/_beta/b}"
+ MY_PV="${MY_PV/_rc/rc}"
+ MY_P="${PN}-${MY_PV}"
+
+ if [[ ${PV} != *_beta* && ${PV} != *_rc* ]] ; then
+ SRC_URI="
+ https://www.nlnetlabs.nl/downloads/${PN}/${MY_P}.tar.gz
+ verify-sig? ( https://www.nlnetlabs.nl/downloads/nsd/${MY_P}.tar.gz.asc )
+ "
+ S="${WORKDIR}"/${MY_P}
+
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-nlnetlabs-20260101 ) "
+ fi
+fi
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="+bind8-stats debug +dnstap +ipv6 libevent memclean minimal-responses mmap munin"
+IUSE+=" +nsec3 +radix-tree +ratelimit recvmmsg selinux +simdzone ssl systemd +tfo xdp verify-sig"
+
+RDEPEND="
+ acct-group/nsd
+ acct-user/nsd
+ dnstap? (
+ >=dev-libs/fstrm-0.4
+ dev-libs/protobuf-c:=
+ )
+ libevent? ( dev-libs/libevent )
+ munin? ( net-analyzer/munin )
+ ssl? ( dev-libs/openssl:= )
+ systemd? ( sys-apps/systemd )
+ xdp? (
+ dev-libs/libbpf:=
+ net-libs/xdp-tools
+ sys-libs/libcap
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND+="
+ app-alternatives/lex
+ app-alternatives/yacc
+ systemd? ( virtual/pkgconfig )
+ xdp? ( llvm-core/clang:*[llvm_targets_BPF] )
+"
+RDEPEND+=" selinux? ( sec-policy/selinux-nsd )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-munin-gentoo-paths.patch"
+)
+
+NSD_DBDIR="/var/db/nsd" # Default dir for NSD's databases.
+NSD_ZNDIR="/var/lib/nsd" # Default dir for NSD's zone files.
+
+QA_EXECSTACK="
+ usr/lib/nsd/xdp-*.o
+"
+
+src_prepare() {
+ default
+
+ if [[ ${PV} == *9999 ]] ; then
+ # When building from git, the configure script and simdzone sources are missing
+ # See README.md
+ git submodule update --init || die "Could't update submodules"
+ autoreconf -fi || die "autoreconf -fi failed"
+ else
+ # Required to get correct pkg-config macros with USE="systemd".
+ # See bugs #663618 & #758050.
+ eautoreconf
+ fi
+}
+
+src_configure() {
+ local myconf=(
+ --cache-file="${S}"/config.cache
+
+ $(use_enable bind8-stats)
+ $(use_enable bind8-stats zone-stats)
+ $(use_enable debug checking)
+ $(use_enable dnstap)
+ $(use_enable ipv6)
+ $(use_enable memclean)
+ $(use_enable minimal-responses)
+ $(use_enable mmap)
+ $(use_enable nsec3)
+ --disable-packed
+ $(use_enable radix-tree)
+ $(use_enable ratelimit)
+ $(use_enable recvmmsg)
+ $(use_enable systemd)
+ $(use_enable tfo tcp-fastopen)
+ $(use_enable xdp)
+ $(use_with libevent)
+ $(use_with ssl)
+
+ --with-cookiesecretsfile="${EPREFIX}${NSD_DBDIR}/cookiesecrets.txt"
+ --with-dbfile="${EPREFIX}${NSD_DBDIR}/nsd.db"
+ --with-dbdir="${EPREFIX}${NSD_DBDIR}"
+ --with-logfile="${EPREFIX}/var/log/nsd.log"
+ --with-pidfile="${EPREFIX}/run/nsd.pid"
+ # sharedfilesdir is used for xdp (bpf) objects
+ --with-sharedfilesdir="${EPREFIX}/usr/lib/nsd"
+ --with-xfrdfile="${EPREFIX}${NSD_DBDIR}/xfrd.state"
+ --with-xfrdir="${EPREFIX}${NSD_DBDIR}"
+ --with-zonelistfile="${EPREFIX}${NSD_DBDIR}/zone.list"
+ --with-zonesdir="${EPREFIX}${NSD_ZNDIR}"
+ )
+
+ # NSD 4.10.x introduced a new zone parser, "simdzone", which
+ # replaces the older parser that used flex & bison:
+ # https://github.com/NLnetLabs/simdzone
+ # It leverages SSE4.2 and/or AVX2 instruction sets for faster
+ # zone parsing on x86_64 architectures. Other CPU archs will
+ # use a fallback implementation.
+ if use amd64; then
+ myconf+=(
+ $(use_enable simdzone haswell)
+ $(use_enable simdzone westmere)
+ )
+ fi
+
+ # If the compiler indicates that time_t is at least 64-bits wide,
+ # then enable it in the package to support timestamps greater than
+ # the year 2038 (D_TIME_BITS=64). This configure switch only
+ # appears on glibc-based userlands.
+ if use elibc_glibc && tc-has-64bit-time_t; then
+ myconf+=( --enable-year2038 )
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ dodoc doc/{ChangeLog,CREDITS,NSD-4-features,NSD-FOR-BIND-USERS,README,RELNOTES,REQUIREMENTS}
+ newinitd contrib/nsd.openrc nsd
+ newconfd contrib/nsd.openrc.conf nsd
+ newtmpfiles contrib/nsd-tmpfiles.conf nsd.conf
+
+ # Install munin plugin and config, if requested.
+ if use munin ; then
+ exeinto /usr/libexec/munin/plugins
+ doexe contrib/nsd_munin_
+ insinto /etc/munin/plugin-conf.d
+ newins "${FILESDIR}"/nsd.munin-conf nsd_munin
+ fi
+
+ # Use the upstream-provided systemd service file.
+ systemd_dounit contrib/nsd.service
+
+ # Remove the /run directory that usually resides on tmpfs and is
+ # being taken care of by the nsd init script anyway (checkpath).
+ rm -r "${ED}"/run || die "Failed to remove /run"
+
+ # BPF
+ dostrip -x /usr/lib/nsd
+
+ keepdir "${NSD_DBDIR}"
+}
+
+pkg_postinst() {
+ # See eclass/tmpfiles.eclass for info.
+ tmpfiles_process nsd.conf
+
+ # Database directory
+ # Writable by nsd:nsd for database updates and zone transfers.
+ install -d -m 750 -o nsd -g nsd "${EROOT}/${NSD_DBDIR}"
+
+ # Zones directory
+ # Writable by nsd:nsd for zone file updates (via 'nsd-control write').
+ install -d -m 750 -o nsd -g nsd "${EROOT}/${NSD_ZNDIR}"
+}
diff --git a/net-libs/nodejs/Manifest b/net-libs/nodejs/Manifest
index 4a4870af83a6..5d360fd47343 100644
--- a/net-libs/nodejs/Manifest
+++ b/net-libs/nodejs/Manifest
@@ -3,8 +3,9 @@ DIST node-v20.20.2.tar.xz 42662736 BLAKE2B 3f7c6d7c0acf40f8df9c3326a54d76e70aa25
DIST node-v22.13.1.tar.xz 48041964 BLAKE2B 9695cc6a9b9606a615cdcff42e9b8d5f15c2d12fd0f6c894596a7c6526b3267ab9ea4f7362f8c03039c728cb5f7a3a334cce7fda9293cba06922000542a2800c SHA512 711fbeacceec16b8808e5a41ead496347fee2304fc6ce095ad26c4413f52253c9f3a6cd78080e808c03c3dbe958d64359d2d6bb97a51e1b41e1cff903ce2aeb5
DIST node-v22.23.2.tar.xz 51362684 BLAKE2B ddf19407ada0f94f4cc08814f633099f38044eb9709143d06509eff76b481736a26712c55fe3abc67e2ee18cfd524841b976ba40074699fe13c05d55a265d771 SHA512 92b959098fb7fcfe80776a983d2ae52479692a63c49087c97a0ee2423147a5222b1e1994e98ff650483322cf3a1f1cca8a51f3389993c0ff5fc13b6d1f4ef4ef
DIST node-v24.14.0.tar.xz 53987528 BLAKE2B 3d181bdb01c82ea10add1251b97614ea8bb2cc1de52044a639a1955339c4861e84600bd89c0e951f20f4dc61352838142a4d87bd07380936661d89a7f68bc0e5 SHA512 44f8a4758f34373f44daf1498ecb83261788251a43c9063bc3572ebf9bd647adafbc44474127771f5f9e36aa01feee1ad991e01ab3ec5a892607194441f76aaa
-DIST node-v24.19.0.tar.xz 55505276 BLAKE2B 7a7caa4fc46e598010c8a27e1463018b2cb65d430888aa7181c5e8db5e213379723b2d29f2f446d542900c0850b0dc3f4dfe98d942d2caae244f6a2a93b58c47 SHA512 82057740cace16e02fa973d5fef5fc265150e3c278cc232d32ad7d5a9163b8cbfdf437de8675b8a174c9883a94a680de2ac1c2184957767efd5add3fa8380751
DIST node-v24.21.0.tar.xz 57357488 BLAKE2B a907f5f23668d4a2839aebb9520417c0c4ee155881546ad8bbd8df7249decd070e4826a2d2465467c4295d8b9e9c5032df5ce337275df562cf02593419030401 SHA512 bb25a4fb9e5d9bc7ce05d2dfe48d9cb3524ce2e61f61105e0a769c56ac18f051825251a72fa5abe8ab5c596b0f2706bafec4d55d0a8a1bfef019f77e46520f03
+DIST node-v24.22.0.tar.xz 57606320 BLAKE2B dcf9469d3ea9c6afc56a70b055d4a9a05a2323e6b7b1efd706e3fd85d67061bcaea8ffa0e0bef5a370eda0ec68d4774c522d858da0ac5f338eb1733c5218d07e SHA512 407c6fa7790fa589f3871343aec97c1413cf4fda8006a28d09f4a4c3172c86796ca2bef7efe05010a03e581a5edbf90bdbb6425ef6f8b3a5f3ad4e0190c6bdd0
DIST node-v26.10.0.tar.xz 62055788 BLAKE2B 8018d789113d5d9594532a607f6e3daa292799a9dfb8b0c659bbb6163d0b9198ddb9e40197b30f7e1b62c073aca80ee3411d1701670384155b3330c7e6077fd0 SHA512 03b8d85bc2ec964db3e738be4682782935221b9c0fdd9a48f39a0241acc7b92bc3c6ef4f89707e451406e9f0a350b821d905b777bcbd5ed9a2d46ecb0d7328e2
DIST node-v26.11.1.tar.xz 63107044 BLAKE2B 3c15e4cbc08c1223a2617154a429c1e478d52f40e41a2429ac4e1f05de2ce0f8236cd50c6a10207e2e556f5fce686f534d5cc525bed806d230af29fedefba485 SHA512 a98c245732fef21dc6c0bafaa032ab1331a5efaed8d7758310dd65bf9d2bd16d5305ab06e1149b7fffe0ad0f0d945b874e30e1b9a72069a0ab064f357a225294
+DIST node-v26.12.0.tar.xz 62434260 BLAKE2B 07cdf5c515fee3e6c312a4b4bcb3b7b2aca66df66a709eed4c48695e04e5413970cee04ce1f8ad43fd2053baf7d1fad4f7cbbeb0920fed2fcecc76333b978f56 SHA512 c3c41462198c6bedc1f2136a7f421a7cc757996ae49486c4c82b7ee75b2294b298c14f7e838b83da04a789f50722247ab448dd3bac8a07ac0d49047ee33c1c05
DIST node-v26.3.0.tar.xz 59811728 BLAKE2B a69f067e63883239a38397484b3f92ff4ca8a1ae651cb4f3328e6f994f16260751f3f64ff6c914aeef837d1f6deade8649979f091a044c86c8467058bb0065d2 SHA512 464a24d2536f3ead35325cfb268355fcc66a95260519174cba847efa4037ae2529c24781595b11aae45810570f41c0d2f2d7db2ed365baccda1017a7131a7efe
diff --git a/net-libs/nodejs/files/nodejs-24.21.0-rm-64bit-only-intrinsic-for-32bit.patch b/net-libs/nodejs/files/nodejs-24.21.0-rm-64bit-only-intrinsic-for-32bit.patch
new file mode 100644
index 000000000000..0dcc5372a7e0
--- /dev/null
+++ b/net-libs/nodejs/files/nodejs-24.21.0-rm-64bit-only-intrinsic-for-32bit.patch
@@ -0,0 +1,11 @@
+--- a/deps/histogram/src/hdr_histogram.c 2026-10-14 07:39:45.803977242 -0400
++++ b/deps/histogram/src/hdr_histogram.c 2026-10-14 07:40:16.922081020 -0400
+@@ -36,7 +36,7 @@
+
+ /* Runtime-dispatched AVX2 path: keep the rest of this TU at the project's
+ baseline ISA so the shipped binary does not silently require AVX2. */
+-#if (defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86)) \
++#if (defined(__x86_64__) || defined(_M_X64) || defined(_M_IX86)) \
+ && (defined(__GNUC__) || defined(__clang__)) && !defined(__INTEL_COMPILER) && !defined(_MSC_VER)
+ # define HDR_HAS_AVX2_DISPATCH 1
+ # include <immintrin.h>
diff --git a/net-libs/nodejs/files/nodejs-26.12.0-v8-climits.patch b/net-libs/nodejs/files/nodejs-26.12.0-v8-climits.patch
new file mode 100644
index 000000000000..d7f77942e7cb
--- /dev/null
+++ b/net-libs/nodejs/files/nodejs-26.12.0-v8-climits.patch
@@ -0,0 +1,12 @@
+https://bugs.gentoo.org/977377
+
+--- a/deps/v8/src/base/memcopy.h 2026-10-14 12:47:49.624772990 -0400
++++ b/deps/v8/src/base/memcopy.h 2026-10-14 12:48:10.919573949 -0400
+@@ -5,6 +5,7 @@
+ #ifndef V8_BASE_MEMCOPY_H_
+ #define V8_BASE_MEMCOPY_H_
+
++#include <climits>
+ #include <limits.h>
+ #include <stdlib.h>
+
diff --git a/net-libs/nodejs/nodejs-24.19.0.ebuild b/net-libs/nodejs/nodejs-24.21.0-r1.ebuild
index 4ff62fecacf0..c6048fd9e3a5 100644
--- a/net-libs/nodejs/nodejs-24.19.0.ebuild
+++ b/net-libs/nodejs/nodejs-24.21.0-r1.ebuild
@@ -38,19 +38,19 @@ RESTRICT="!test? ( test )"
COMMON_DEPEND=">=app-arch/brotli-1.1.0:=
dev-db/sqlite:3
- >=dev-cpp/ada-3.3.0:=
+ >=dev-cpp/ada-4.0.0:=
>=dev-cpp/simdutf-7.3.4:=
>=dev-libs/libuv-1.52.1:=
- >=dev-libs/simdjson-4.6.1:=
- >=net-dns/c-ares-1.34.5:=
- >=net-libs/nghttp2-1.69.0:=
- >=net-libs/nghttp3-1.14.0:=
+ >=dev-libs/simdjson-4.6.7:=
+ >=net-dns/c-ares-1.34.8:=
+ >=net-libs/nghttp2-1.70.0:=
+ >=net-libs/nghttp3-1.18.0:=
virtual/zlib:=
corepack? ( !sys-apps/yarn )
- system-icu? ( >=dev-libs/icu-73:= )
+ system-icu? ( >=dev-libs/icu-78:= )
system-ssl? (
- >=net-libs/ngtcp2-1.14.0:=
- >=dev-libs/openssl-3.5.6:0=
+ >=net-libs/ngtcp2-1.25.0:=
+ >=dev-libs/openssl-3.5.8:0=
)
!system-ssl? ( >=net-libs/ngtcp2-1.14.0:=[-gnutls] )
|| (
@@ -126,6 +126,11 @@ src_prepare() {
use ppc64 &&
PATCHES+=( "${FILESDIR}/${PN}-24.11.1-restore-ppc64be.patch" )
+ # Apply 32-bit only fix
+ # Remove AVX2 code path that uses a 64-bit-only intrinsic.
+ if [[ ${ARCH} == x86 ]] || { use amd64 && [[ ${ABI} == x86 ]]; }; then
+ PATCHES+=( "${FILESDIR}"/${P}-rm-64bit-only-intrinsic-for-32bit.patch )
+ fi
default
}
diff --git a/net-libs/nodejs/nodejs-26.10.0.ebuild b/net-libs/nodejs/nodejs-24.22.0.ebuild
index 67c40e62da4a..ac3ea0349ed8 100644
--- a/net-libs/nodejs/nodejs-26.10.0.ebuild
+++ b/net-libs/nodejs/nodejs-24.22.0.ebuild
@@ -7,8 +7,8 @@ CONFIG_CHECK="~ADVISE_SYSCALLS"
PYTHON_COMPAT=( python3_{13..14} )
PYTHON_REQ_USE="threads(+)"
-inherit check-reqs flag-o-matic linux-info ninja-utils pax-utils
-inherit python-any-r1 shell-completion toolchain-funcs xdg-utils
+inherit check-reqs flag-o-matic linux-info ninja-utils
+inherit pax-utils python-any-r1 shell-completion toolchain-funcs xdg-utils
DESCRIPTION="A JavaScript runtime built on Chrome's V8 JavaScript engine"
HOMEPAGE="https://nodejs.org/"
@@ -19,13 +19,15 @@ if [[ ${PV} == *9999 ]]; then
EGIT_REPO_URI="https://github.com/nodejs/node"
SLOT="0"
else
- SRC_URI="https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz"
+ SRC_URI="
+ https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz
+ "
SLOT="0/$(ver_cut 1)"
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~x64-macos"
S="${WORKDIR}/node-v${PV}"
fi
-IUSE="cpu_flags_x86_sse2 debug doc +icu +inspector lto +npm pax-kernel +snapshot +ssl system-icu +system-ssl test"
+IUSE="corepack cpu_flags_x86_sse2 debug doc +icu +inspector lto +npm pax-kernel +snapshot +ssl +system-icu +system-ssl test"
REQUIRED_USE="inspector? ( icu ssl )
npm? ( ssl )
system-icu? ( icu )
@@ -36,20 +38,21 @@ RESTRICT="!test? ( test )"
COMMON_DEPEND=">=app-arch/brotli-1.1.0:=
dev-db/sqlite:3
- >=dev-cpp/ada-4.0.0:=
- >=dev-cpp/simdutf-9.0.0:=
+ >=dev-cpp/ada-3.3.0:=
+ >=dev-cpp/simdutf-7.3.4:=
>=dev-libs/libuv-1.52.1:=
- >=dev-libs/simdjson-4.6.11:=
- >=net-dns/c-ares-1.34.8:=
- >=net-libs/nghttp2-1.70.0:=
- >=net-libs/nghttp3-1.18.0:=
+ >=dev-libs/simdjson-4.6.1:=
+ >=net-dns/c-ares-1.34.5:=
+ >=net-libs/nghttp2-1.69.0:=
+ >=net-libs/nghttp3-1.14.0:=
virtual/zlib:=
- system-icu? ( >=dev-libs/icu-78:= )
+ corepack? ( !sys-apps/yarn )
+ system-icu? ( >=dev-libs/icu-73:= )
system-ssl? (
- >=net-libs/ngtcp2-1.25.0:=
- >=dev-libs/openssl-3.5.8:0=
+ >=net-libs/ngtcp2-1.14.0:=
+ >=dev-libs/openssl-3.5.6:0=
)
- !system-ssl? ( >=net-libs/ngtcp2-1.25.0:=[-gnutls] )
+ !system-ssl? ( >=net-libs/ngtcp2-1.14.0:=[-gnutls] )
|| (
sys-devel/gcc:*
llvm-runtimes/libatomic-stub
@@ -74,10 +77,7 @@ CHECKREQS_MEMORY="8G"
CHECKREQS_DISK_BUILD="22G"
PATCHES=(
- "${FILESDIR}"/${PN}-26.6.0-gcc17.patch
- "${FILESDIR}"/${PN}-26.6.0-format-cstdlib.patch
- "${FILESDIR}"/${PN}-26.6.0-v8-climits.patch
- "${FILESDIR}"/${PN}-26.8.2-add-missing-funcational-inc.patch
+ "${FILESDIR}"/${PN}-24.21.0-32-bit.patch
)
pkg_pretend() {
@@ -92,12 +92,6 @@ pkg_pretend() {
pkg_setup() {
python-any-r1_pkg_setup
linux-info_pkg_setup
- # https://github.com/nodejs/node/issues/62676 - Can't build Temporal with system ICU.
- if use system-icu; then
- ewarn "The ES2026 'Temporal' datetime feature/object is not available when using system-icu."
- ewarn "Please consider whether this is desirable for your use case."
- ewarn "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal"
- fi
}
src_prepare() {
@@ -107,7 +101,7 @@ src_prepare() {
# fix compilation on Darwin
# https://code.google.com/p/gyp/issues/detail?id=260
- sed -i -e '/append("-arch")/{N;d;}' tools/gyp/pylib/gyp/xcode_emulation.py || die
+ sed -i -e "/append('-arch/d" tools/gyp/pylib/gyp/xcode_emulation.py || die
# proper libdir, hat tip @ryanpcmcquen https://github.com/iojs/io.js/issues/504
local LIBDIR=$(get_libdir)
@@ -132,6 +126,12 @@ src_prepare() {
use ppc64 &&
PATCHES+=( "${FILESDIR}/${PN}-24.11.1-restore-ppc64be.patch" )
+ # Apply 32-bit only fix
+ # Remove AVX2 code path that uses a 64-bit-only intrinsic.
+ if [[ ${ARCH} == x86 ]] || { use amd64 && [[ ${ABI} == x86 ]]; }; then
+ PATCHES+=( "${FILESDIR}"/${PN}-24.21.0-rm-64bit-only-intrinsic-for-32bit.patch )
+ fi
+
default
}
@@ -155,21 +155,20 @@ src_configure() {
--shared-nghttp3
--shared-ngtcp2
--shared-simdjson
+ --shared-simdutf
--shared-sqlite
--shared-zlib
)
use debug && myconf+=( --debug )
use lto && myconf+=( --enable-lto )
if use system-icu; then
- # No Temporal support: https://github.com/nodejs/node/issues/62676
myconf+=( --with-intl=system-icu )
elif use icu; then
- # Full embedded ICU (Temporal works)
myconf+=( --with-intl=full-icu )
else
- # Default embedded subset (Temporal works, saves space over full-icu)
- myconf+=( --with-intl=small-icu )
+ myconf+=( --with-intl=none )
fi
+ use corepack || myconf+=( --without-corepack )
use inspector || myconf+=( --without-inspector )
use npm || myconf+=( --without-npm )
use snapshot || myconf+=( --without-node-snapshot )
@@ -203,8 +202,6 @@ src_configure() {
src_compile() {
eninja -C out/Release
- # There's just a plain make target for the FFI tests, and it doesn't support ninja.
- use test && emake build-ffi-tests
}
src_install() {
@@ -244,15 +241,16 @@ src_install() {
# Remove various development and/or inappropriate files and
# useless docs of dependend packages.
- # Strict match for LICENSE files to avoid purging actual logic (e.g. license.js)
- # which breaks npm.
find "${LIBDIR}"/node_modules \
\( -type d -name examples \) -or \( -type f \( \
- \( -iname "LICEN?E*" -not -name "*.js" -not -name "*.json" \) \
+ -iname "LICEN?E*" \
"${find_name[@]}" \
\) \) -exec rm -rf "{}" \;
fi
+ use corepack &&
+ "${D}"/usr/bin/corepack enable --install-directory "${D}"/usr/bin
+
mv "${ED}"/usr/share/doc/node "${ED}"/usr/share/doc/${PF} || die
}
@@ -274,16 +272,19 @@ src_test() {
test/parallel/test-process-setgroups.js
test/parallel/test-process-uid-gid.js
test/parallel/test-release-npm.js
- # Unreliable when using system libraries and ASLR.
- # The variations between snapshot generation passes appear limited to memory
- # allocation pointers leaking into the serialised V8 blob array; the actual
- # bytecode and engine structures remain consistently... consistent.
- test/parallel/test-snapshot-reproducible.js
test/parallel/test-socket-write-after-fin-error.js
test/parallel/test-strace-openat-openssl.js
test/sequential/test-tls-session-timeout.js
test/sequential/test-util-debug.js
)
+
+ if has_version "sys-libs/zlib-ng" ; then
+ elog "Some tests will be skipped due to being known to fail with sys-libs/zlib-ng"
+ elog
+ drop_tests+=( test/parallel/test-process-versions.js )
+ elog
+ fi
+
use inspector ||
drop_tests+=(
test/parallel/test-inspector-emit-protocol-event.js
@@ -304,12 +305,4 @@ pkg_postinst() {
ewarn "remember to run: source /etc/profile if you plan to use nodejs"
ewarn " in your current shell"
fi
-
- if use system-icu; then
- ewarn ""
- ewarn "Node.js was built with USE='system-icu'."
- ewarn "The JavaScript 'Temporal' API has been disabled."
- ewarn "If you need full ES2026+ compliance, rebuild with USE='-system-icu'."
- ewarn ""
- fi
}
diff --git a/net-libs/nodejs/nodejs-26.10.0-r1.ebuild b/net-libs/nodejs/nodejs-26.12.0.ebuild
index 1aa172178186..ad92b0cc4a75 100644
--- a/net-libs/nodejs/nodejs-26.10.0-r1.ebuild
+++ b/net-libs/nodejs/nodejs-26.12.0.ebuild
@@ -40,9 +40,9 @@ RESTRICT="!test? ( test )"
COMMON_DEPEND=">=app-arch/brotli-1.1.0:=
dev-db/sqlite:3
>=dev-cpp/ada-4.0.0:=
- >=dev-cpp/simdutf-9.0.0:=
+ >=dev-cpp/simdutf-9.2.1:=[atomic-base64]
>=dev-libs/libuv-1.52.1:=
- >=dev-libs/simdjson-4.6.11:=
+ >=dev-libs/simdjson-5.0.3:=
>=net-dns/c-ares-1.34.8:=
>=net-libs/nghttp2-1.70.0:=
>=net-libs/nghttp3-1.18.0:=
@@ -50,7 +50,7 @@ COMMON_DEPEND=">=app-arch/brotli-1.1.0:=
system-icu? ( >=dev-libs/icu-78:= )
system-ssl? (
>=net-libs/ngtcp2-1.25.0:=
- >=dev-libs/openssl-3.5.8:0=
+ >=dev-libs/openssl-3.5.9:0=
)
!system-ssl? ( >=net-libs/ngtcp2-1.25.0:=[-gnutls] )
|| (
@@ -78,10 +78,11 @@ CHECKREQS_MEMORY="8G"
CHECKREQS_DISK_BUILD="22G"
PATCHES=(
- "${FILESDIR}"/${PN}-26.6.0-gcc17.patch
- "${FILESDIR}"/${PN}-26.6.0-format-cstdlib.patch
- "${FILESDIR}"/${PN}-26.6.0-v8-climits.patch
- "${FILESDIR}"/${PN}-26.8.2-add-missing-funcational-inc.patch
+ "${FILESDIR}"/${PN}-26.12.0-v8-climits.patch
+ "${FILESDIR}"/${PN}-26.11.1-add-missing-funcational-inc.patch
+ "${FILESDIR}"/${PN}-26.10.0-x86-SSE2-fix.patch
+ "${FILESDIR}"/${PN}-26.10.0-simdutf-use-system-header.patch
+ "${FILESDIR}"/${PN}-26.11.1-include-EACCES-in-mkdir-test.patch
)
pkg_pretend() {
@@ -151,6 +152,20 @@ src_configure() {
# https://bugs.gentoo.org/931514
use arm64 && append-flags $(test-flags-CXX -mbranch-protection=none)
+ # Highway compilation error on riscv
+ # See: https://bugs.gentoo.org/983938
+ #
+ # Upstream Highway fixed the issue, but V8 has not picked up a Highway
+ # version that includes it, so Node still hits the old headers.
+ # this workaround will stop Highway from compiling RVV, and stop the host
+ # compiler from emitting RVV in non-V8 code. V8 can still emit RVV at runtime
+ # on machines that have it.
+ #
+ # Additionally, force the EMU128 (128-bit scalar emulation) for boards
+ # without RVV (VisionFive V2 / JH7110).
+ # This will ensure V8's FixedTag<..., 16> in the JSON stringifier is legal.
+ use riscv && append-cxxflags -DHWY_DISABLED_TARGETS=HWY_RVV -DHWY_BROKEN_EMU128=0
+
local myconf=(
--ninja
--shared-ada
@@ -161,6 +176,7 @@ src_configure() {
--shared-nghttp3
--shared-ngtcp2
--shared-simdjson
+ --shared-simdutf
--shared-sqlite
--shared-zlib
)
@@ -291,6 +307,15 @@ src_test() {
test/sequential/test-tls-session-timeout.js
test/sequential/test-util-debug.js
)
+
+ if has_version "sys-libs/zlib-ng" ; then
+ elog "Some tests will be skipped due to being known to fail with sys-libs/zlib-ng"
+ elog
+ drop_tests+=( test/parallel/test-process-versions.js )
+ drop_tests+=( test/parallel/test-zlib-zip-interop.js )
+ elog
+ fi
+
use inspector ||
drop_tests+=(
test/parallel/test-inspector-emit-protocol-event.js
diff --git a/net-misc/mrouted/mrouted-4.7.ebuild b/net-misc/mrouted/mrouted-4.7.ebuild
index 97ffd4a7fd26..c012226549ed 100644
--- a/net-misc/mrouted/mrouted-4.7.ebuild
+++ b/net-misc/mrouted/mrouted-4.7.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://github.com/troglobit/${PN}/releases/download/${PV}/${P}.tar.gz"
LICENSE="Stanford GPL-2"
SLOT="0"
-KEYWORDS="~amd64 ~ppc ~x86"
+KEYWORDS="amd64 ppc x86"
IUSE="test"
# Needs unshare
RESTRICT="!test? ( test ) test"
diff --git a/net-misc/sb-hosts/Manifest b/net-misc/sb-hosts/Manifest
index 55720c040c59..7f7f26b540d4 100644
--- a/net-misc/sb-hosts/Manifest
+++ b/net-misc/sb-hosts/Manifest
@@ -1,2 +1,2 @@
-DIST sb-hosts-3.16.119.tar.gz 20727926 BLAKE2B 99273668c880258b6c9c617b1171484edf418e1e901c51d13b7ad740379e66d556109cb218624b2cbd73aef90c938152c7112ffb8c8b4e63b32dd7aff8072244 SHA512 4ca0f1c4324ea32cb609db940ac1faa38b2507eee9f0181738aaa47b8292f3bab4016b3251ec0b52a13586a3e4dbbd71ef04c3d6f8214b940a344f409fb66d74
DIST sb-hosts-3.16.120.tar.gz 20827227 BLAKE2B d32c70df796a21c6c0bfe3cf3c805eff044f9dbbd918ccee400643956cc0593f8d5bad93d98164028788459f59b80172b1f741ba65665dc44e00a0141a3eba70 SHA512 4d7ec1e413c2a395bb7c255daf09be089f4557549de929bd60ca0e7bcbce9b96575bc7de5bd60c3cd698f5331ee49badab6474e884f4e5457a1221b3317d9342
+DIST sb-hosts-3.16.121.tar.gz 21017557 BLAKE2B 40ebd514a3e28999dbf305402a09e1674e26f821b403bc91fd7f4aee10b4f086e9894929f30abae2555e500bf97dead5e15ded5184c04b1ac50acc287e1d7c74 SHA512 d09ddaf5eb89d78ce032d47ac4ae8aba972805e4c7325f309f26511d67b6f2cefc2a79f9aefdec6ce3d6973cc612b68247842bda3f756340cf2013e7195ba98c
diff --git a/net-misc/sb-hosts/sb-hosts-3.16.119.ebuild b/net-misc/sb-hosts/sb-hosts-3.16.121.ebuild
index 941876ea977f..941876ea977f 100644
--- a/net-misc/sb-hosts/sb-hosts-3.16.119.ebuild
+++ b/net-misc/sb-hosts/sb-hosts-3.16.121.ebuild
diff --git a/net-proxy/haproxy/Manifest b/net-proxy/haproxy/Manifest
index 96393a7dad26..182c9d89d278 100644
--- a/net-proxy/haproxy/Manifest
+++ b/net-proxy/haproxy/Manifest
@@ -1,14 +1,12 @@
DIST VTest-af198470d7ce482d3d26eb9ca3f246a438739366.tar.gz 196700 BLAKE2B d740e19104a91b4cf978596ccda861974e96c9ed85a49c91e996c5bc6dde40f1cdcf49e6a75243aba7bf59abfd8d2c051a7ee574bab22f9e512d74376c9e1738 SHA512 cdc62271bb75ef7032745a457e1a54a84bcaadce73324272462b647383177338c5c2c8a17993d6344840e8ce0308a7e6f0df9bb766ebe0e8d4ee6dd4914e188c
DIST VTest2-3bba149.tar.gz 246954 BLAKE2B 5cb7f059f173c268456ce6b048f0b14304aaa983a72e621af936fea4447e3b8cab09f4d8d33d131884de5d88905f22697e1f2e7696d0cbcf8680f5294a830b98 SHA512 da18cd0a090fac819b0bf1e4829db77de2f8fd6d53fa7e7dbed8a409f0d1538b4b11399785b35daf1a26aa526e87f5a40bfb0469831a04f79ed060d6626e243a
-DIST haproxy-3.0.14.tar.gz 4755441 BLAKE2B c58f1ad55ba5765fa79045be0fbdaa20dc3893a6827a49f3e43ad59042afaa6957d4d7335803ac0a12ec5cb512c19f07ab3475fdcb25f8ef4e78fef3605c5eda SHA512 96b033b7ad80f59a6c744217f81a14e738beedb9b723216711294cef5770df8ef29cc1cb4dca82769ca479dbc91c6307e2c88e29efeede56fb5775ca29b650f6
-DIST haproxy-3.0.26.tar.gz 4785855 BLAKE2B c5ee4e8066524f00a1c3a8ab78d6471109bb11800edbe19e237560f2a91ceeaeec9d39d00dd1f2202d8c98a2521029261a1fbedfc6b6f7b1ad9f9a869c528d2f SHA512 d44bfcef5a6987eb11082a27237f7c96218d13a17c818625488f95e1f7261096e75d4f9f1792545ef27b6c025362f30237918ff6ee3ff4e8863bf58597c1d953
DIST haproxy-3.0.27.tar.gz 4794162 BLAKE2B cf2d8d63bae7557e0fe312741b0a12f93e07f8036da5735406ae3655f83efcae1ca31db6804d94f3049490975cb27500f3805cc33e09ef6b2fe695f7cb1f2558 SHA512 ec191aadc42494122f7401a33a4f09e2204b04eeffc6c25512d629a218af111a7c3bb9a75cda2e7ac368ab101aac4d520f1847c115d848a96d1c1ba2da1735bf
DIST haproxy-3.0.29.tar.gz 4812323 BLAKE2B 92ac2ebcca960b139c489a18a52de9922ad5d76fe5fa8c239fa4f06066b56407dcb88c010bbb1da91628b6185642067ce7cd5111ac2b22ed85df7108fc05fe40 SHA512 687d7f0009c1d5f2d1d60ef467e86e130a01df8306bc875bcc3370f7d7eb37031a3537149092dccca7cb8d91b310c88e01e3a3e46a0a4cd40e7fcf20f6d9a5d0
+DIST haproxy-3.0.30.tar.gz 4818278 BLAKE2B 5eaecd0e04e379b77331103066abb53d529b32713cbada9311eb1f7984a74dd05870e2c72ef84825f1850916d75f0e7116a6d4622ad3e582f682d9adee3ae0d6 SHA512 9765ae5931ddc8e8ed8b406e275bd47e449f76b566070ace7dfd305e3b0931330f6e883ca43a36b55e1f256567b60788b034d371301c88af30181c1513294045
DIST haproxy-3.0.5.tar.gz 4698022 BLAKE2B c64d8799755fddaf5b45a9e2b67c5f03b25af98fbddde68ab1206c288d9a65f91938810b150c4398ee138d9154c90f1af9fb05c3d0bbc80394e71430e1cc4396 SHA512 8c16b026d5e26fc030178ecd354c68e8ea32c2b971f143cb2aa2f1b2d16fbfc0a27e3975f78873a0cefe3f904b5f1999f8d75622a04234b9cf88f90161d9ea91
-DIST haproxy-3.2.22.tar.gz 5166368 BLAKE2B 6eaf00248ce2ae56f06a6edd7a9240b97dba0d3e24d50fdde20f93c9172bb73bed1b5dc0261a908cdfd986520d3ed7bdf72f39c78291bfd40ba59f8ced1a27e0 SHA512 4802511f8270c4052961828cedf63320229c943c084f15c2863d3246c36e658027083d5785d4d0d4909f04eed0452caece494dfa6321187f6021b1175d4db17f
DIST haproxy-3.2.23.tar.gz 5178167 BLAKE2B d2babdb8a857185ffbe7fbeb5c4f251c008fa32fdb8bfe1061e3223e46f15f99ceb2ff8c4b1cf51b51c17530274a9b2f1ffcd5405854ac55a13219dd269a49ec SHA512 228493eb74fa59972fa1bf52bfcd07ba0d0c9f446877dc8492999b55c59dd02834646e810093ae3700ca695498f0c32c5ce64dbf67da10e2d06cb72700ae8c57
DIST haproxy-3.2.25.tar.gz 5195226 BLAKE2B 387cf5158c4d6e4fa592111b3882adc739cbc5609e51b30f1412358d7e36aefa37a8a40412cbf2c4c441bd9b9bbddfd3b9789156b00a5a9b1052c449c6fae122 SHA512 1989fdbc8e4d8f8ac8e6c9bec139282a4f793809d1217a9a75b4264fd7494c0749aded3023dca0ad708ddd0976926081aa6abff461a739492829dda029773a1a
-DIST haproxy-3.2.9.tar.gz 5123457 BLAKE2B 37b50abe8f8260453c4b40f6f52186cee276a3a4577d7b6da6a14ea94f43cea6e5a3ab3cb8ec9d6642a5d4d9dc90e94c4757a2306e2a363e0b710db735bc0972 SHA512 fd694adcdccbba54121e686f32cfb2281abfc97c6716835aa35013f05b85033c4967a056f02ecbc6ed613dda44d55373d2577e452079ba4e2bfa7b2fe0fff172
-DIST haproxy-3.4.3.tar.gz 5485483 BLAKE2B 75e8edf463e1e9a53a17aee51ef5995c800fe8e1bc043bb08aee55eb528b937f382f2488a8c7e155bbe5fad979c268cbc427d9317ef2bc9ac117940e7ac5bdd0 SHA512 05fa67d437814618ab8474cc36b9e81aa3c24c4eb644a36870495ccf48e70ff667ef6a752f0bc8ec508cc12b886cef5b9c1a235f78dcc3578c930a1b88ce065c
+DIST haproxy-3.2.26.tar.gz 5203667 BLAKE2B e6bd1240cd110aa5ee7e636b8d0e635c715d4742af05a2428f2685aab73bec56a729d3067749462b9deb91e885ef0fe8c3c08e3fbacf7c64e6bb5335b487b18b SHA512 cf91ed1bcaa8870a29cce5b11df3bf42840f48a3d47d7ea9b02c16dab1244743a9c38d62f3d7ae74aabbbb83913115a1605c172c8440173fcf10b5527e5651aa
DIST haproxy-3.4.4.tar.gz 5502948 BLAKE2B 92dae6d9fe363bacede99983891ce9c07e93daf2038ce6bcb7a5e7e4437861e6b934ca37694eecb4d3ec3d74bf7e9840e176172ed94b4328e0c13161404f7016 SHA512 1134371d59dd0b494e8737801c545e5c9f14b2275ebea0750d001ee70991e33418c45c2eba43ea8aee39c3f534917bee826d11564e58919a0332beddd4666571
DIST haproxy-3.4.6.tar.gz 5525386 BLAKE2B a784e582cc9d52d88b798a1c30ddbcf8115da7cbbea5d854437e11595a9a400dafffcd7f89ad5b35d6ecb12aa6eebd2d0e73e5bc62154e65390d734dd8a12a38 SHA512 04d20bca04dc6d5b18181c002997fc68e87dfdf2ff309753c7cf3383355ebcfce2d2b62a20f4d0e49bd75d25aa12da8d33f4b39a23b618199787cd1468fc0fe9
+DIST haproxy-3.4.7.tar.gz 5531506 BLAKE2B 3a8fb398ab802a16f57c8a06dfa5e0413336f28d40cb9386b9d5a670aea59fa551cdc08efa15ee0ff8efb238eb11a6c796b34a0cfb331aa6d226ed6bf0ec91e9 SHA512 6e61b05e122764f7a6eaa683ba843815785d2fb6c8d3bed80ec5be15c674777ac1829e09767962ede0c47a8b9bca837f81f9ef80f9e6147e292e26815c52402f
diff --git a/net-proxy/haproxy/haproxy-3.0.14.ebuild b/net-proxy/haproxy/haproxy-3.0.14.ebuild
deleted file mode 100644
index f3ca6940acd2..000000000000
--- a/net-proxy/haproxy/haproxy-3.0.14.ebuild
+++ /dev/null
@@ -1,217 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="8"
-
-LUA_COMPAT=( lua5-{1,3,4} luajit )
-
-[[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
-
-MY_P="${PN}-${PV/_beta/-dev}"
-
-DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
-HOMEPAGE="http://www.haproxy.org"
-if [[ ${PV} != *9999 ]]; then
- # This is arbitrary; upstream uses master. Try to update when possible
- VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
- VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
- SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
- test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
- KEYWORDS="amd64 arm64 ~ppc x86"
-elif [[ ${PV} == 9999 ]]; then
- VTEST_DIR="${WORKDIR}/VTest"
- EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
- EGIT_BRANCH=master
-else
- VTEST_DIR="${WORKDIR}/VTest"
- EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
- EGIT_BRANCH=master
-fi
-
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="GPL-2 LGPL-2.1"
-SLOT="0/$(ver_cut 1-2)"
-IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd test +threads tools zlib lua 51degrees wurfl"
-REQUIRED_USE="pcre-jit? ( pcre )
- lua? ( ${LUA_REQUIRED_USE} )
- ?? ( slz zlib )"
-RESTRICT="!test? ( test )"
-
-BDEPEND="virtual/pkgconfig"
-DEPEND="
- crypt? ( virtual/libcrypt:= )
- pcre? (
- dev-libs/libpcre2:=
- pcre-jit? ( dev-libs/libpcre2:=[jit] )
- )
- ssl? (
- dev-libs/openssl:0=
- )
- systemd? ( sys-apps/systemd )
- zlib? ( virtual/zlib:= )
- lua? ( ${LUA_DEPS} )
- test? (
- dev-libs/libpcre2
- virtual/zlib:=
- )"
-RDEPEND="${DEPEND}
- acct-group/haproxy
- acct-user/haproxy"
-
-DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README )
-EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack )
-
-haproxy_use() {
- (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>"
-
- usex "${1}" "USE_${2}=1" "USE_${2}="
-}
-
-pkg_setup() {
- use lua && lua-single_pkg_setup
- if use net_ns; then
- CONFIG_CHECK="~NET_NS"
- linux-info_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ ${PV} != *9999 ]]; then
- default
- else
- git-r3_src_unpack
- EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
- fi
-}
-
-src_compile() {
- local -a args=(
- V=1
- # Switching to PCRE2 by default, bug 838013
- PCRE=
- PCRE_JIT=
- )
-
- if use elibc_musl; then
- args+=( TARGET=linux-musl )
- else
- args+=( TARGET=linux-glibc )
- fi
-
- # TODO: PCRE2_WIDTH?
- args+=( $(haproxy_use threads THREAD) )
- args+=( $(haproxy_use crypt LIBCRYPT) )
- args+=( $(haproxy_use net_ns NS) )
- args+=( $(haproxy_use pcre PCRE2) )
- args+=( $(haproxy_use pcre-jit PCRE2_JIT) )
- args+=( $(haproxy_use ssl OPENSSL) )
- args+=( $(haproxy_use slz SLZ) )
- args+=( $(haproxy_use zlib ZLIB) )
- args+=( $(haproxy_use lua LUA) )
- args+=( $(haproxy_use 51degrees 51DEGREES) )
- args+=( $(haproxy_use wurfl WURFL) )
- args+=( $(haproxy_use systemd SYSTEMD) )
- args+=( $(haproxy_use prometheus-exporter PROMEX) )
-
- # Bug #668002
- if use ppc || use arm || use hppa; then
- TARGET_LDFLAGS=-latomic
- fi
-
- emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \
- TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]}
- emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \
- EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \
- SBINDIR=/usr/sbin
-
- if use tools ; then
- for extra in ${EXTRAS[@]} ; do
- if [ "${extra}" = "admin/halog" ]; then
- emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \
- EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \
- PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog
- elif [ "${extra}" = "dev/hpack" ]; then
- emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \
- EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \
- PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht}
- else
- # Those two includes are a workaround for hpack Makefile missing those
- emake -C ${extra} \
- CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
- CC="$(tc-getCC)" ${args[@]}
- fi
- done
- fi
-}
-
-src_test() {
- # https://github.com/vtest/VTest/issues/12
- emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
- ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
- env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
- HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
-}
-
-src_install() {
- dosbin haproxy
-
- newconfd "${FILESDIR}/${PN}.confd-r1" ${PN}
- newinitd "${FILESDIR}/${PN}.initd-r9" ${PN}
-
- doman doc/haproxy.1
-
- systemd_dounit admin/systemd/haproxy.service
-
- einstalldocs
-
- # The errorfiles are used by upstream defaults.
- insinto /etc/haproxy/errors/
- doins examples/errorfiles/*
-
- if use doc; then
- dodoc doc/*.txt
- #if use lua; then
- # TODO: doc/lua-api/
- #fi
- fi
-
- if use tools ; then
- has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog
- has admin/iprange "${EXTRAS[@]}" && {
- newbin admin/iprange/iprange haproxy_iprange
- newbin admin/iprange/ip6range haproxy_ip6range
- }
- has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop
- has dev/hpack "${EXTRAS[@]}" && {
- newbin dev/hpack/gen-rht haproxy_gen-rht
- newbin dev/hpack/gen-enc haproxy_gen-enc
- newbin dev/hpack/decode haproxy_decode
- }
- fi
-
- if use examples ; then
- docinto examples
- dodoc examples/*.cfg
- dodoc doc/seamless_reload.txt
- fi
-
- insinto /usr/share/vim/vimfiles/syntax
- doins admin/syntax-highlight/haproxy.vim
-}
-
-pkg_postinst() {
- if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then
- ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service."
- ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created."
- ewarn "Make use of them with the \"user\" and \"group\" directives."
-
- if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then
- einfo "Please consult the installed documentation for learning the configuration file's syntax."
- einfo "The documentation and sample configuration files are installed here:"
- einfo " ${EROOT}/usr/share/doc/${PF}"
- fi
- fi
-}
diff --git a/net-proxy/haproxy/haproxy-3.0.26.ebuild b/net-proxy/haproxy/haproxy-3.0.30.ebuild
index 24adbc376441..24adbc376441 100644
--- a/net-proxy/haproxy/haproxy-3.0.26.ebuild
+++ b/net-proxy/haproxy/haproxy-3.0.30.ebuild
diff --git a/net-proxy/haproxy/haproxy-3.2.22.ebuild b/net-proxy/haproxy/haproxy-3.2.26.ebuild
index 4ec2db1144bf..79ce4007721c 100644
--- a/net-proxy/haproxy/haproxy-3.2.22.ebuild
+++ b/net-proxy/haproxy/haproxy-3.2.26.ebuild
@@ -13,18 +13,23 @@ MY_P="${PN}-${PV/_beta/-dev}"
DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
HOMEPAGE="http://www.haproxy.org"
if [[ ${PV} != *9999 ]]; then
- # This is arbitrary; upstream uses master. Try to update when possible
- VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
- VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+ # This is arbitrary; upstream uses master. Try to update when possible. Only git clones are allowed by VTest upstream.
+ # git clone https://code.vinyl-cache.org/vtest/VTest2
+ # cd VTest2
+ # VTEST2_NAME="VTest2-$(git rev-parse --short HEAD)"
+ # git archive --format=tar.gz --prefix="${VTEST2_NAME}/" -o "${VTEST2_NAME}.tar.gz" HEAD
+ # scp ${VTEST2_NAME}.tar.gz dev.gentoo.org:~/public_html/distfiles/
+ VTEST2_COMMIT="3bba149e0c322585c09db2827a2a6cf0d3b15d54"
+ VTEST2_DIR="${WORKDIR}/VTest2-${VTEST2_COMMIT:0:7}"
SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
- test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
+ test? ( https://dev.gentoo.org/~idl0r/distfiles/VTest2-${VTEST2_COMMIT:0:7}.tar.gz )"
KEYWORDS="~amd64 ~arm64 ~ppc ~x86"
elif [[ ${PV} == 9999 ]]; then
- VTEST_DIR="${WORKDIR}/VTest"
+ VTEST2_DIR="${WORKDIR}/VTest2"
EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
EGIT_BRANCH=master
else
- VTEST_DIR="${WORKDIR}/VTest"
+ VTEST2_DIR="${WORKDIR}/VTest2"
EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
EGIT_BRANCH=master
fi
@@ -87,7 +92,8 @@ src_unpack() {
default
else
git-r3_src_unpack
- EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+ EGIT_REPO_URI="https://code.vinyl-cache.org/vtest/VTest2" EGIT_BRANCH="main" EGIT_CHECKOUT_DIR="${VTEST2_DIR}" \
+ git-r3_src_unpack
fi
}
@@ -153,10 +159,10 @@ src_compile() {
src_test() {
# https://github.com/vtest/VTest/issues/12
- emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+ emake -C "${VTEST2_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
- HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+ HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST2_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
}
src_install() {
@@ -194,6 +200,7 @@ src_install() {
newbin dev/hpack/gen-enc haproxy_gen-enc
newbin dev/hpack/decode haproxy_decode
}
+
fi
if use examples ; then
diff --git a/net-proxy/haproxy/haproxy-3.2.9.ebuild b/net-proxy/haproxy/haproxy-3.2.9.ebuild
deleted file mode 100644
index 2539e04a9ac0..000000000000
--- a/net-proxy/haproxy/haproxy-3.2.9.ebuild
+++ /dev/null
@@ -1,220 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="8"
-
-LUA_COMPAT=( lua5-{1,3,4} luajit )
-
-[[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
-
-MY_P="${PN}-${PV/_beta/-dev}"
-
-DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
-HOMEPAGE="http://www.haproxy.org"
-if [[ ${PV} != *9999 ]]; then
- # This is arbitrary; upstream uses master. Try to update when possible
- VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
- VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
- SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
- test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
- KEYWORDS="amd64 ~arm64 ~ppc x86"
-elif [[ ${PV} == 9999 ]]; then
- VTEST_DIR="${WORKDIR}/VTest"
- EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
- EGIT_BRANCH=master
-else
- VTEST_DIR="${WORKDIR}/VTest"
- EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
- EGIT_BRANCH=master
-fi
-
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="GPL-2 LGPL-2.1"
-SLOT="0/$(ver_cut 1-2)"
-IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic
-ssl systemd test +threads tools zlib lua 51degrees wurfl"
-REQUIRED_USE="pcre-jit? ( pcre )
- lua? ( ${LUA_REQUIRED_USE} )
- ?? ( slz zlib )"
-RESTRICT="!test? ( test )"
-
-BDEPEND="virtual/pkgconfig"
-DEPEND="
- crypt? ( virtual/libcrypt:= )
- pcre? (
- dev-libs/libpcre2:=
- pcre-jit? ( dev-libs/libpcre2:=[jit] )
- )
- ssl? (
- dev-libs/openssl:0=
- )
- quic? (
- >=dev-libs/openssl-3.5.0:0=
- )
- systemd? ( sys-apps/systemd )
- zlib? ( virtual/zlib:= )
- lua? ( ${LUA_DEPS} )
- test? (
- dev-libs/libpcre2
- virtual/zlib:=
- )"
-RDEPEND="${DEPEND}
- acct-group/haproxy
- acct-user/haproxy"
-
-DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS )
-EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack )
-
-haproxy_use() {
- (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>"
-
- usex "${1}" "USE_${2}=1" "USE_${2}="
-}
-
-pkg_setup() {
- use lua && lua-single_pkg_setup
- if use net_ns; then
- CONFIG_CHECK="~NET_NS"
- linux-info_pkg_setup
- fi
-}
-
-src_unpack() {
- if [[ ${PV} != *9999 ]]; then
- default
- else
- git-r3_src_unpack
- EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
- fi
-}
-
-src_compile() {
- local -a args=(
- V=1
- # Switching to PCRE2 by default, bug 838013
- PCRE=
- PCRE_JIT=
- )
-
- if use elibc_musl; then
- args+=( TARGET=linux-musl )
- else
- args+=( TARGET=linux-glibc )
- fi
-
- # TODO: PCRE2_WIDTH?
- args+=( $(haproxy_use threads THREAD) )
- args+=( $(haproxy_use crypt LIBCRYPT) )
- args+=( $(haproxy_use net_ns NS) )
- args+=( $(haproxy_use pcre PCRE2) )
- args+=( $(haproxy_use pcre-jit PCRE2_JIT) )
- args+=( $(haproxy_use ssl OPENSSL) )
- args+=( $(haproxy_use slz SLZ) )
- args+=( $(haproxy_use zlib ZLIB) )
- args+=( $(haproxy_use lua LUA) )
- args+=( $(haproxy_use 51degrees 51DEGREES) )
- args+=( $(haproxy_use wurfl WURFL) )
- args+=( $(haproxy_use prometheus-exporter PROMEX) )
- args+=( $(haproxy_use quic QUIC) )
-
- # Bug #668002
- if use ppc || use arm || use hppa; then
- TARGET_LDFLAGS=-latomic
- fi
-
- emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \
- TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]}
- emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \
- EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \
- SBINDIR=/usr/sbin
-
- if use tools ; then
- for extra in ${EXTRAS[@]} ; do
- if [ "${extra}" = "admin/halog" ]; then
- emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \
- EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \
- PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog
- elif [ "${extra}" = "dev/hpack" ]; then
- emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \
- EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \
- PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht}
- else
- # Those two includes are a workaround for hpack Makefile missing those
- emake -C ${extra} \
- CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
- CC="$(tc-getCC)" ${args[@]}
- fi
- done
- fi
-}
-
-src_test() {
- # https://github.com/vtest/VTest/issues/12
- emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
- ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
- env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
- HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
-}
-
-src_install() {
- dosbin haproxy
-
- newconfd "${FILESDIR}/${PN}.confd-r1" ${PN}
- newinitd "${FILESDIR}/${PN}.initd-r9" ${PN}
-
- doman doc/haproxy.1
-
- systemd_dounit admin/systemd/haproxy.service
-
- einstalldocs
-
- # The errorfiles are used by upstream defaults.
- insinto /etc/haproxy/errors/
- doins examples/errorfiles/*
-
- if use doc; then
- dodoc doc/*.txt
- #if use lua; then
- # TODO: doc/lua-api/
- #fi
- fi
-
- if use tools ; then
- has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog
- has admin/iprange "${EXTRAS[@]}" && {
- newbin admin/iprange/iprange haproxy_iprange
- newbin admin/iprange/ip6range haproxy_ip6range
- }
- has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop
- has dev/hpack "${EXTRAS[@]}" && {
- newbin dev/hpack/gen-rht haproxy_gen-rht
- newbin dev/hpack/gen-enc haproxy_gen-enc
- newbin dev/hpack/decode haproxy_decode
- }
- fi
-
- if use examples ; then
- docinto examples
- dodoc examples/*.cfg
- dodoc doc/seamless_reload.txt
- fi
-
- insinto /usr/share/vim/vimfiles/syntax
- doins admin/syntax-highlight/haproxy.vim
-}
-
-pkg_postinst() {
- if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then
- ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service."
- ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created."
- ewarn "Make use of them with the \"user\" and \"group\" directives."
-
- if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then
- einfo "Please consult the installed documentation for learning the configuration file's syntax."
- einfo "The documentation and sample configuration files are installed here:"
- einfo " ${EROOT}/usr/share/doc/${PF}"
- fi
- fi
-}
diff --git a/net-proxy/haproxy/haproxy-3.4.3.ebuild b/net-proxy/haproxy/haproxy-3.4.7.ebuild
index f48a71ed0a2e..f48a71ed0a2e 100644
--- a/net-proxy/haproxy/haproxy-3.4.3.ebuild
+++ b/net-proxy/haproxy/haproxy-3.4.7.ebuild
diff --git a/net-vpn/i2p/i2p-2.13.0.ebuild b/net-vpn/i2p/i2p-2.13.0.ebuild
index 503e5047b685..6b6b13b5483e 100644
--- a/net-vpn/i2p/i2p-2.13.0.ebuild
+++ b/net-vpn/i2p/i2p-2.13.0.ebuild
@@ -17,7 +17,7 @@ SRC_URI="
LICENSE="Apache-2.0 Artistic BSD CC-BY-2.5 CC-BY-3.0 CC-BY-SA-3.0 EPL-1.0 GPL-2 GPL-3 LGPL-2.1 LGPL-3 MIT public-domain WTFPL-2"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="amd64 ~arm64"
LANGS=(
ar az bg ca cs da de el en es es-AR et fa fi fr gl he hi hr hu id it ja ko ku mg nb nl nn pl pt pt-BR ro ru sk sl sq
sr sv tk tr uk vi zh zh-TW
diff --git a/sci-libs/mumps/mumps-5.6.2-r1.ebuild b/sci-libs/mumps/mumps-5.6.2-r1.ebuild
index 20f5d9103f20..f3938a435506 100644
--- a/sci-libs/mumps/mumps-5.6.2-r1.ebuild
+++ b/sci-libs/mumps/mumps-5.6.2-r1.ebuild
@@ -201,14 +201,20 @@ src_test() {
}
src_install() {
- dolib.so lib/lib*$(get_libname)*
- use static-libs && dolib.a lib/lib*.a
+ find lib -maxdepth 1 -name "lib*$(get_libname)*" ! -name "libmpiseq*" \
+ -exec dolib.so {} + || die
+ if use static-libs; then
+ find lib -maxdepth 1 -name "*.a" ! -name "libmpiseq*" \
+ -exec dolib.a {} + || die
+ fi
insinto /usr
doins -r include
if ! use mpi; then
+ dolib.so libseq/lib*$(get_libname)*
insinto /usr/include/mpiseq
doins libseq/*.h
+ use static-libs && dolib.a libseq/libmpiseq.a
fi
dodoc README ChangeLog VERSION
diff --git a/sci-mathematics/z3/Manifest b/sci-mathematics/z3/Manifest
index 35a41de82371..a9106a28ad80 100644
--- a/sci-mathematics/z3/Manifest
+++ b/sci-mathematics/z3/Manifest
@@ -1,3 +1 @@
-DIST z3-4.16.0.tar.gz 6136396 BLAKE2B bd67a71d762f420eb1f146070b32e90cd8539c58bc0bac8e6eee6baf03327b19806c0444bc52ef15f77c8f247464ac5a97e4a51635a6b3eb0540609c0d382b9d SHA512 7dbcdd04a72f46bc3b6cbac2453b2a43f5ae126287b878ffe37f0573f910a1130c474c5edfa622dab09957f106cf425ab0f7cdfd34d41658599ad50a81ae39dd
-DIST z3-5.0.0.tar.gz 6777317 BLAKE2B 1a35863beb2fc194d5641c4073017e2e9c5730faec10e3fcb1b394898c345008caeac248b5b283f4eaf3d9e5d8901a8b4cf672f528b9301fcc22df979a12a0a3 SHA512 c6bed41313a643f2bcad6d6cfda241af948d81326bb41a5a18575170f51c1f4f75afc9e01022df9a6122e71fc54ef813ad2ac9745e40da68c892be68b4777baf
DIST z3-5.1.0.tar.gz 6689265 BLAKE2B ff5c8bc0546fb79a66fd336480910103ce41aeb40d5846587a9a1f5247af506c50d3b8e178b224b329895f98f7299ea3de7fc306e6247a422ef6636580f6246e SHA512 03a854f720a56484ab99b8a5517150f1c9106400f54ad758cfa58e3ee2f95e349396a64d4f527a5bb9ee37f10ad9ecfa1916d1f5c921f04089deda409374491b
diff --git a/sci-mathematics/z3/z3-4.16.0.ebuild b/sci-mathematics/z3/z3-4.16.0.ebuild
deleted file mode 100644
index 45ba6ec7ac45..000000000000
--- a/sci-mathematics/z3/z3-4.16.0.ebuild
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit cmake-multilib java-pkg-opt-2 python-single-r1
-
-DESCRIPTION="An efficient theorem prover"
-HOMEPAGE="https://github.com/Z3Prover/z3/"
-SRC_URI="https://github.com/Z3Prover/z3/archive/${P}.tar.gz"
-S=${WORKDIR}/z3-${P}
-
-LICENSE="MIT"
-SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ~ppc ppc64 ~riscv ~sparc x86"
-IUSE="doc examples gmp isabelle java python"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-RDEPEND="
- ${PYTHON_DEPS}
- gmp? ( dev-libs/gmp:0=[cxx(+),${MULTILIB_USEDEP}] )
-"
-DEPEND="
- ${RDEPEND}
- java? ( >=virtual/jdk-1.8 )
-"
-BDEPEND="
- doc? ( app-text/doxygen[dot] )
-"
-
-CMAKE_BUILD_TYPE=RelWithDebInfo
-
-src_prepare() {
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-multilib_src_configure() {
- local mycmakeargs=(
- -DCMAKE_INSTALL_DOCDIR="${EPREFIX}/usr/share/doc/${PF}"
- -DZ3_USE_LIB_GMP=$(usex gmp)
- -DZ3_ENABLE_EXAMPLE_TARGETS=OFF
- -DZ3_BUILD_DOCUMENTATION=$(multilib_native_usex doc)
- -DZ3_BUILD_PYTHON_BINDINGS=$(multilib_native_usex python)
- -DZ3_BUILD_JAVA_BINDINGS=$(multilib_native_usex java)
- -DZ3_INCLUDE_GIT_DESCRIBE=OFF
- -DZ3_INCLUDE_GIT_HASH=OFF
- )
-
- multilib_is_native_abi && use java && mycmakeargs+=( -DJAVA_HOME="$(java-config -g JAVA_HOME )" )
-
- cmake_src_configure
-}
-
-multilib_src_test() {
- cmake_build test-z3
- set -- "${BUILD_DIR}"/test-z3 /a
- echo "${@}" >&2
- "${@}" || die
-}
-
-multilib_src_install_all() {
- dodoc README.md
- use examples && dodoc -r examples
- use python && python_optimize
-
- if use isabelle; then
- insinto /usr/share/Isabelle/contrib/${P}/etc
- newins - settings <<-EOF
- Z3_COMPONENT="\$COMPONENT"
- Z3_HOME="${EPREFIX}/usr/bin"
- Z3_SOLVER="${EPREFIX}/usr/bin/z3"
- Z3_REMOTE_SOLVER="z3"
- Z3_VERSION="${PV}"
- Z3_INSTALLED="yes"
- Z3_NON_COMMERCIAL="yes"
- EOF
- fi
-}
-
-pkg_postinst() {
- if use isabelle; then
- if [[ -f ${ROOT}/etc/isabelle/components ]]; then
- sed -e "/contrib\/${PN}-[0-9.]*/d" \
- -i "${ROOT}/etc/isabelle/components" || die
- cat <<-EOF >> "${ROOT}/etc/isabelle/components" || die
- contrib/${P}
- EOF
- fi
- fi
-}
-
-pkg_postrm() {
- if use isabelle; then
- if [[ ! ${REPLACING_VERSIONS} ]]; then
- if [[ -f "${ROOT}/etc/isabelle/components" ]]; then
- # Note: this sed should only match the version of this ebuild
- # Which is what we want as we do not want to remove the line
- # of a new Isabelle component being installed during an upgrade.
- sed -e "/contrib\/${P}/d" \
- -i "${ROOT}/etc/isabelle/components" || die
- fi
- fi
- fi
-}
diff --git a/sci-mathematics/z3/z3-5.0.0.ebuild b/sci-mathematics/z3/z3-5.0.0.ebuild
deleted file mode 100644
index 45ba6ec7ac45..000000000000
--- a/sci-mathematics/z3/z3-5.0.0.ebuild
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit cmake-multilib java-pkg-opt-2 python-single-r1
-
-DESCRIPTION="An efficient theorem prover"
-HOMEPAGE="https://github.com/Z3Prover/z3/"
-SRC_URI="https://github.com/Z3Prover/z3/archive/${P}.tar.gz"
-S=${WORKDIR}/z3-${P}
-
-LICENSE="MIT"
-SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ~ppc ppc64 ~riscv ~sparc x86"
-IUSE="doc examples gmp isabelle java python"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-RDEPEND="
- ${PYTHON_DEPS}
- gmp? ( dev-libs/gmp:0=[cxx(+),${MULTILIB_USEDEP}] )
-"
-DEPEND="
- ${RDEPEND}
- java? ( >=virtual/jdk-1.8 )
-"
-BDEPEND="
- doc? ( app-text/doxygen[dot] )
-"
-
-CMAKE_BUILD_TYPE=RelWithDebInfo
-
-src_prepare() {
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-multilib_src_configure() {
- local mycmakeargs=(
- -DCMAKE_INSTALL_DOCDIR="${EPREFIX}/usr/share/doc/${PF}"
- -DZ3_USE_LIB_GMP=$(usex gmp)
- -DZ3_ENABLE_EXAMPLE_TARGETS=OFF
- -DZ3_BUILD_DOCUMENTATION=$(multilib_native_usex doc)
- -DZ3_BUILD_PYTHON_BINDINGS=$(multilib_native_usex python)
- -DZ3_BUILD_JAVA_BINDINGS=$(multilib_native_usex java)
- -DZ3_INCLUDE_GIT_DESCRIBE=OFF
- -DZ3_INCLUDE_GIT_HASH=OFF
- )
-
- multilib_is_native_abi && use java && mycmakeargs+=( -DJAVA_HOME="$(java-config -g JAVA_HOME )" )
-
- cmake_src_configure
-}
-
-multilib_src_test() {
- cmake_build test-z3
- set -- "${BUILD_DIR}"/test-z3 /a
- echo "${@}" >&2
- "${@}" || die
-}
-
-multilib_src_install_all() {
- dodoc README.md
- use examples && dodoc -r examples
- use python && python_optimize
-
- if use isabelle; then
- insinto /usr/share/Isabelle/contrib/${P}/etc
- newins - settings <<-EOF
- Z3_COMPONENT="\$COMPONENT"
- Z3_HOME="${EPREFIX}/usr/bin"
- Z3_SOLVER="${EPREFIX}/usr/bin/z3"
- Z3_REMOTE_SOLVER="z3"
- Z3_VERSION="${PV}"
- Z3_INSTALLED="yes"
- Z3_NON_COMMERCIAL="yes"
- EOF
- fi
-}
-
-pkg_postinst() {
- if use isabelle; then
- if [[ -f ${ROOT}/etc/isabelle/components ]]; then
- sed -e "/contrib\/${PN}-[0-9.]*/d" \
- -i "${ROOT}/etc/isabelle/components" || die
- cat <<-EOF >> "${ROOT}/etc/isabelle/components" || die
- contrib/${P}
- EOF
- fi
- fi
-}
-
-pkg_postrm() {
- if use isabelle; then
- if [[ ! ${REPLACING_VERSIONS} ]]; then
- if [[ -f "${ROOT}/etc/isabelle/components" ]]; then
- # Note: this sed should only match the version of this ebuild
- # Which is what we want as we do not want to remove the line
- # of a new Isabelle component being installed during an upgrade.
- sed -e "/contrib\/${P}/d" \
- -i "${ROOT}/etc/isabelle/components" || die
- fi
- fi
- fi
-}
diff --git a/sci-ml/datasets/Manifest b/sci-ml/datasets/Manifest
index b837c86ec470..fc8d6b458488 100644
--- a/sci-ml/datasets/Manifest
+++ b/sci-ml/datasets/Manifest
@@ -1,2 +1,3 @@
DIST datasets-4.8.5.gh.tar.gz 2195039 BLAKE2B 3ab237f44f852d5b6ec6b482b6f21332583ab3136991fb361ef4f64f5f23be39c38c0f6af4c1f4db43104adb1f7636a3f6fcb14f637bd73460067e3a19ebd7e4 SHA512 ceb75c23a3b695ab7bcad948b374eac7857d4e21b770b6638c47620d30cb3adc1ae4a7bafbd4076f4770ccb8782a4ff5eb1c2004cb7f6b9b54d42f7e3c169ace
DIST datasets-5.0.1.gh.tar.gz 28560928 BLAKE2B 2cab1279486876120f0cd03a17c471d8c7d0d752add5084d3f932b5a9e4aa9d42320419867b6b9f0e567df9237569aa07fc226ec006293cf56864ec70bb1d06c SHA512 07bd6bfd0ada506aec0e334b00795a6fd9e281a010052c5e488e08956a95bc159a7ba4b2e4b005bf01b338dedc845e25dad3dc958d4c7fceacba25732e3b23be
+DIST datasets-5.1.0.gh.tar.gz 28641592 BLAKE2B dcd135c96c2938c663412d438fa3b6afade6c37d2f2f4b2bb2905a7a9541cf8b252968522ea65e1b93bf8bd041d5bd6aa769e472e1d977e87b164bafabb905b1 SHA512 e8bb91ea949bad799a432af26a4f60e238cd7bcef1de466aaf61a52c542f0428da222c7355a6af279e7c560595a2f7af1cb7df96c6fd80465bdb0a6037c44849
diff --git a/sci-ml/datasets/datasets-5.1.0.ebuild b/sci-ml/datasets/datasets-5.1.0.ebuild
new file mode 100644
index 000000000000..69744eacb517
--- /dev/null
+++ b/sci-ml/datasets/datasets-5.1.0.ebuild
@@ -0,0 +1,107 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_SINGLE_IMPL=1
+inherit distutils-r1
+
+DESCRIPTION="Access and share datasets for Audio, Computer Vision, and NLP tasks"
+HOMEPAGE="https://pypi.org/project/datasets/"
+SRC_URI="https://github.com/huggingface/${PN}/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.gh.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="torch vision"
+REQUIRES_USE="test? ( torch vision )"
+
+RDEPEND="
+ >=sci-ml/huggingface_hub-1.31[${PYTHON_SINGLE_USEDEP}]
+ <sci-ml/huggingface_hub-2
+ $(python_gen_cond_dep '
+ dev-python/dill[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/fsspec[${PYTHON_USEDEP}]
+ dev-python/multiprocess[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pyarrow[${PYTHON_USEDEP},parquet,snappy]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/tqdm[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ vision? (
+ dev-python/pillow[${PYTHON_USEDEP}]
+ )
+ ')
+ torch? (
+ >=sci-ml/pytorch-2.13.0[${PYTHON_SINGLE_USEDEP},numpy]
+ )
+"
+DEPEND="${RDEPEND}"
+# Missing x test:
+# joblib
+# joblibspark
+# faiss-cpu
+# jax
+# jaxlib
+# polars
+# pyav
+# pyspark
+# py7zr
+# s3fs
+# tensorflow
+# tiktoken
+# torchdata
+# transformers
+BDEPEND="test? (
+ sci-ml/torchvision[${PYTHON_SINGLE_USEDEP}]
+ sci-ml/transformers[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ sci-ml/tokenizers[${PYTHON_USEDEP}]
+ dev-python/absl-py[${PYTHON_USEDEP}]
+ dev-python/decorator[${PYTHON_USEDEP}]
+ dev-python/elasticsearch[${PYTHON_USEDEP}]
+ dev-python/h5py[${PYTHON_USEDEP}]
+ dev-python/lz4[${PYTHON_USEDEP}]
+ dev-python/moto[${PYTHON_USEDEP}]
+ dev-python/protobuf:=[${PYTHON_USEDEP}]
+ dev-python/pytest-datadir[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/soundfile[${PYTHON_USEDEP}]
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ dev-python/trimesh[${PYTHON_USEDEP}]
+ dev-python/zstandard[${PYTHON_USEDEP}]
+ ')
+)"
+
+EPYTEST_PLUGINS=( pytest-datadir )
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ tests/packaged_modules/test_lance.py
+ tests/packaged_modules/test_spark.py
+ tests/packaged_modules/test_iceberg.py
+ )
+
+ local EPYTEST_DESELECT=(
+ tests/io/test_parquet.py::test_parquet_read_geoparquet
+ tests/packaged_modules/test_folder_based_builder.py::test_data_files_with_different_levels_no_metadata
+ tests/packaged_modules/test_folder_based_builder.py::test_data_files_with_one_label_no_metadata
+ tests/test_data_files.py::test_DataFilesList_from_patterns_locally_with_extra_files
+ tests/test_data_files.py::test_DataFilesDict_from_patterns_locally_or_remote_hashing
+ tests/test_hub.py::test_delete_from_hub
+ tests/test_load.py::test_load_dataset_builder
+ tests/test_arrow_dataset.py::BaseDatasetTest::test_to_parquet_in_memory
+ tests/test_arrow_dataset.py::BaseDatasetTest::test_to_parquet_on_disk
+ )
+
+ epytest -m 'unit'
+}
diff --git a/sci-ml/huggingface_hub/Manifest b/sci-ml/huggingface_hub/Manifest
index 1911d0e863d9..61bd9e8d03e1 100644
--- a/sci-ml/huggingface_hub/Manifest
+++ b/sci-ml/huggingface_hub/Manifest
@@ -1,3 +1,4 @@
-DIST huggingface_hub-1.26.0.gh.tar.gz 1476348 BLAKE2B 120ff2b4a59fb390dbf7e7e7d4523246273857cb775062a0f39659065211f42784c456f4519110ff823cbb24a47cf7ec15ead38cafa6deffc559b634a6dc8c14 SHA512 d94a5aa75d069008fd362e34eb347450ad3e82481de9be327671a6711fe167cf6f80adb30b2f5c08d1c2cc17b1b3d61ccd5589500d3357791b5856c672770fcf
+DIST huggingface_hub-1.26.1.gh.tar.gz 1476488 BLAKE2B 094081f7865203343fce55e9ab02e37e8d2c1a2d85679324b54ad884f6348ccbac78d2727e39afa2f5792b89e62d4cdef541304b95d48422f63d6c2069383159 SHA512 80d9f6b20a1175e14220c06bf764318858e397e80b10aaab56b345297504568a794f231ca3f8fe037ae3d0d3e8df15bc14c280896cfcd1f9d98e237e0565156e
DIST huggingface_hub-1.3.7.gh.tar.gz 1024162 BLAKE2B e38d5742b96e1bd72bd91f6a3af16277f4d2ea9182faf126635d3794964622cd52ccddf96e354d0925742b2275d820b3b2f56a715baa62f4e2671335cdcffa18 SHA512 7edc139db6fdfb8add97356e3fe1bce05ed6251d447ab8c770b1696eafeee6594705be7649340fd8970838c51bef23cc9b06e8ef118261a3c5c448b2b242b63d
+DIST huggingface_hub-1.31.0.gh.tar.gz 1514455 BLAKE2B ec109276bd1c8f4c1493f9a2cd0324f8bf2a85ddf67f18ddd8608ef9de46bba9f316bd5aad6916725a4c5f5108175535446fb9136e09c764689257f01cc89966 SHA512 52191082da959fef08a0b42cc04549688f67c3edd9eb49872fd95afd922c9fb966a481b7e6988bd48e43879c801c841d9673ada0c7859eb7d54f2ac10df458c7
DIST huggingface_hub-2.1.1.gh.tar.gz 1599894 BLAKE2B e5bd087ff2eef97109ef78da000f12cb2d83a7edcf2fb3cdedd025f6138510b4e9d8097350d14e1240cd1de20882a07a93adfc7fd5680c41c1f0dab2c23cad1c SHA512 b7ac03a3bade8c1c79d4992cef73a79b5d899309698865c3c0c7fb6ff6e879f911ea1908399249a9d1bed74d8e65d0fe186b914515f19c67af6bb4b2cdf69be8
diff --git a/sci-ml/huggingface_hub/huggingface_hub-1.26.0-r1.ebuild b/sci-ml/huggingface_hub/huggingface_hub-1.26.1.ebuild
index 56cbeaf54a5c..52bbe5330fed 100644
--- a/sci-ml/huggingface_hub/huggingface_hub-1.26.0-r1.ebuild
+++ b/sci-ml/huggingface_hub/huggingface_hub-1.26.1.ebuild
@@ -29,11 +29,10 @@ RDEPEND="
dev-python/httpx[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
dev-python/pyyaml[${PYTHON_USEDEP}]
- dev-python/shellingham[${PYTHON_USEDEP}]
dev-python/tqdm[${PYTHON_USEDEP}]
dev-python/typer[${PYTHON_USEDEP}]
dev-python/typing-extensions[${PYTHON_USEDEP}]
- sci-ml/hf_xet[${PYTHON_USEDEP}]
+ >=sci-ml/hf_xet-1.5.2[${PYTHON_USEDEP}]
torch? (
sci-ml/safetensors[${PYTHON_USEDEP}]
)
@@ -76,6 +75,8 @@ src_test() {
tests/test_cache_no_symlinks.py::TestCacheLayoutIfSymlinksNotSupported::test_scan_and_delete_cache_no_symlinks
tests/test_cli.py
tests/test_cli_discussions.py
+ tests/test_cli_framework.py::TestHelpRecords::test_argument_renders_help_and_required
+ tests/test_cli_framework.py::TestTyperMarkerShim::test_annotated_argument
tests/test_commit_scheduler.py::TestCommitScheduler::test_context_manager
tests/test_commit_scheduler.py::TestCommitScheduler::test_missing_folder_is_created
tests/test_commit_scheduler.py::TestCommitScheduler::test_mocked_push_to_hub
diff --git a/sci-ml/huggingface_hub/huggingface_hub-1.31.0.ebuild b/sci-ml/huggingface_hub/huggingface_hub-1.31.0.ebuild
new file mode 100644
index 000000000000..52bbe5330fed
--- /dev/null
+++ b/sci-ml/huggingface_hub/huggingface_hub-1.31.0.ebuild
@@ -0,0 +1,116 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_SINGLE_IMPL=1
+inherit distutils-r1
+
+DESCRIPTION="a client library to interact with the Hugging Face Hub"
+HOMEPAGE="
+ https://pypi.org/project/huggingface_hub/
+"
+SRC_URI="https://github.com/huggingface/${PN}/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="torch"
+REQUIRED_USE="test? ( torch )"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/fsspec[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/tqdm[${PYTHON_USEDEP}]
+ dev-python/typer[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ >=sci-ml/hf_xet-1.5.2[${PYTHON_USEDEP}]
+ torch? (
+ sci-ml/safetensors[${PYTHON_USEDEP}]
+ )
+ ')
+ torch? (
+ >=sci-ml/pytorch-2.13.0[${PYTHON_SINGLE_USEDEP},gloo]
+ )
+"
+
+BDEPEND="
+ test? (
+ dev-vcs/git-lfs
+ $(python_gen_cond_dep '
+ dev-python/jedi[${PYTHON_USEDEP}]
+ ')
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-asyncio pytest-mock )
+
+distutils_enable_tests pytest
+
+src_test() {
+ local EPYTEST_IGNORE=(
+ tests/test_file_download.py
+ tests/test_hf_api.py
+ tests/test_oauth.py
+ tests/test_snapshot_download.py
+ tests/test_webhooks_server.py
+ )
+
+ local EPYTEST_DESELECT=(
+ tests/test_buckets
+ tests/test_inference_client.py::TestOpenAsMimeBytes
+ tests/test_inference_client.py::TestHeadersAndCookies
+ tests/test_inference_client.py::test_as_url_with_pil_image
+ tests/test_cache_layout.py
+ tests/test_cache_no_symlinks.py::TestCacheLayoutIfSymlinksNotSupported::test_download_no_symlink_existing_file
+ tests/test_cache_no_symlinks.py::TestCacheLayoutIfSymlinksNotSupported::test_download_no_symlink_new_file
+ tests/test_cache_no_symlinks.py::TestCacheLayoutIfSymlinksNotSupported::test_scan_and_delete_cache_no_symlinks
+ tests/test_cli.py
+ tests/test_cli_discussions.py
+ tests/test_cli_framework.py::TestHelpRecords::test_argument_renders_help_and_required
+ tests/test_cli_framework.py::TestTyperMarkerShim::test_annotated_argument
+ tests/test_commit_scheduler.py::TestCommitScheduler::test_context_manager
+ tests/test_commit_scheduler.py::TestCommitScheduler::test_missing_folder_is_created
+ tests/test_commit_scheduler.py::TestCommitScheduler::test_mocked_push_to_hub
+ tests/test_commit_scheduler.py::TestCommitScheduler::test_sync_and_squash_history
+ tests/test_commit_scheduler.py::TestCommitScheduler::test_sync_local_folder
+ tests/test_copy_files.py
+ tests/test_hf_file_system.py
+ tests/test_hub_mixin.py
+ tests/test_hub_mixin_pytorch.py
+ tests/test_inference_async_client.py::test_async_generate_timeout_error
+ tests/test_inference_providers.py::TestHFInferenceProvider::test_prepare_mapping_info_unknown_task
+ tests/test_kernels.py
+ tests/test_offline_utils.py::test_offline_with_timeout
+ tests/test_repocard.py
+ tests/test_utils_cache.py::TestValidCacheUtils::test_scan_cache_on_valid_cache_unix
+ tests/test_utils_cache.py::TestCorruptedCacheUtils
+ tests/test_utils_http.py::TestUniqueRequestId
+ tests/test_utils_http.py::test_client_get_request
+ tests/test_utils_http.py::test_async_client_get_request
+ tests/test_utils_pagination.py::TestPagination::test_paginate_hf_api
+ tests/test_utils_telemetry.py::TestSendTelemetry::test_topic_multiple
+ tests/test_utils_telemetry.py::TestSendTelemetry::test_topic_normal
+ tests/test_utils_telemetry.py::TestSendTelemetry::test_topic_quoted
+ tests/test_utils_telemetry.py::TestSendTelemetry::test_topic_with_subtopic
+ tests/test_xet_download.py::TestXetFileDownload::test_get_xet_file_metadata_basic
+ tests/test_xet_download.py::TestXetFileDownload::test_basic_download
+ tests/test_xet_download.py::TestXetFileDownload::test_try_to_load_from_cache
+ tests/test_xet_download.py::TestXetFileDownload::test_cache_reuse
+ tests/test_xet_download.py::TestXetFileDownload::test_download_to_local_dir
+ tests/test_xet_download.py::TestXetFileDownload::test_force_download
+ tests/test_xet_download.py::TestXetSnapshotDownload
+ tests/test_xet_upload.py
+ tests/test_xet_utils.py::test_xet_token_reset_after_repo_deletion
+ )
+
+ distutils-r1_src_test
+}
diff --git a/sci-ml/tokenizers/tokenizers-0.23.3.ebuild b/sci-ml/tokenizers/tokenizers-0.23.3-r1.ebuild
index 109bf7a99092..9450c63883a4 100644
--- a/sci-ml/tokenizers/tokenizers-0.23.3.ebuild
+++ b/sci-ml/tokenizers/tokenizers-0.23.3-r1.ebuild
@@ -41,6 +41,10 @@ KEYWORDS="~amd64"
RDEPEND="dev-libs/oniguruma"
BDEPEND="
dev-python/setuptools-rust[${PYTHON_USEDEP}]
+ test? (
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/tqdm[${PYTHON_USEDEP}]
+ )
"
EPYTEST_PLUGINS=( )
diff --git a/sys-apps/portage/files/0001-bintree-provide-an-empty-default-for-USER_PATCHES.patch b/sys-apps/portage/files/0001-bintree-provide-an-empty-default-for-USER_PATCHES.patch
new file mode 100644
index 000000000000..1cc460bfc61a
--- /dev/null
+++ b/sys-apps/portage/files/0001-bintree-provide-an-empty-default-for-USER_PATCHES.patch
@@ -0,0 +1,44 @@
+From 27abd048bffaac86d6d55478e39afbc9004ac826 Mon Sep 17 00:00:00 2001
+Message-ID: <27abd048bffaac86d6d55478e39afbc9004ac826.1792023243.git.sam@gentoo.org>
+From: Kerin Millar <kfm@plushkava.net>
+Date: Thu, 15 Oct 2026 01:18:46 +0200
+Subject: [PATCH] bintree: provide an empty default for USER_PATCHES
+
+As of the referenced commit, the USER_PATCHES key is required for a
+package index entry to be trusted. However, the index writer omits empty
+values, and no default is defined for the reader to restore the key.
+
+Consequently, portage extracts metadata from every binary package built
+without user patches, even if its mtime and size be unchanged. This
+manifested as a severe regression in eclean-pkg performance, though the
+impact is not confined to that utility.
+
+Define an empty default for USER_PATCHES so that otherwise valid index
+entries can be trusted.
+
+[sam: Drop NEWS hunk for backport.]
+
+Closes: https://bugs.gentoo.org/984255
+Fixes: 2b9c9b6886b86f732d9b5b3b41cd1211c9f28713
+Reported-by: Greg Kubaryk <greg.kubaryk@gmail.com>
+Signed-off-by: Kerin Millar <kfm@plushkava.net>
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ lib/portage/dbapi/bintree.py | 1 +
+ 1 files changed, 1 insertions(+)
+
+diff --git a/lib/portage/dbapi/bintree.py b/lib/portage/dbapi/bintree.py
+index 9f52e8828..183ac9754 100644
+--- a/lib/portage/dbapi/bintree.py
++++ b/lib/portage/dbapi/bintree.py
+@@ -610,6 +610,7 @@ class binarytree:
+ "RESTRICT": "",
+ "SLOT": "0",
+ "USE": "",
++ "USER_PATCHES": "",
+ }
+ self._pkgindex_inherited_keys = ["CHOST", "repository"]
+
+--
+2.56.0
+
diff --git a/sys-apps/portage/portage-3.0.83-r1.ebuild b/sys-apps/portage/portage-3.0.83-r1.ebuild
new file mode 100644
index 000000000000..d07dbe2dd54c
--- /dev/null
+++ b/sys-apps/portage/portage-3.0.83-r1.ebuild
@@ -0,0 +1,239 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE='bzip2(+),threads(+)'
+TMPFILES_OPTIONAL=1
+
+inherit meson linux-info python-r1 tmpfiles
+
+DESCRIPTION="The package management and distribution system for Gentoo"
+HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="
+ https://anongit.gentoo.org/git/proj/portage.git
+ https://github.com/gentoo/portage.git
+ "
+ inherit git-r3
+else
+ SRC_URI="https://gitweb.gentoo.org/proj/portage.git/snapshot/${P}.tar.bz2"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="apidoc build doc gentoo-dev +ipc +native-extensions +rsync-verify selinux test xattr"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ ${PYTHON_DEPS}
+ >=app-arch/tar-1.27
+ >=dev-build/meson-1.3.0-r1
+ >=sys-apps/sed-4.0.5
+ sys-devel/patch
+ !build? ( $(python_gen_impl_dep 'ssl(+)') )
+ apidoc? (
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinx-epytext[${PYTHON_USEDEP}]
+ )
+ doc? (
+ ~app-text/docbook-xml-dtd-4.4
+ app-text/xmlto
+ )
+ test? (
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+# Require sandbox-2.2 for bug #288863.
+# For whirlpool hash, require python[ssl] (bug #425046).
+RDEPEND="
+ ${PYTHON_DEPS}
+ app-admin/scout
+ >=acct-user/portage-0-r4
+ >=app-arch/tar-1.27
+ app-arch/zstd
+ >=app-misc/pax-utils-0.1.17
+ dev-lang/python-exec:2
+ >=sys-apps/baselayout-2.9
+ >=sys-apps/findutils-4.9
+ !build? (
+ >=app-admin/eselect-1.2
+ app-portage/getuto
+ >=app-shells/bash-5.3:0
+ dev-util/debugedit
+ >=sec-keys/openpgp-keys-gentoo-release-20240703
+ >=sys-apps/sed-4.0.5
+ rsync-verify? (
+ app-alternatives/gpg[ssl(-)]
+ >=app-portage/gemato-14.5[${PYTHON_USEDEP}]
+ )
+ )
+ kernel_linux? (
+ sys-apps/util-linux
+ elibc_glibc? ( >=sys-apps/sandbox-2.2 )
+ elibc_musl? ( >=sys-apps/sandbox-2.2 )
+ )
+ selinux? ( >=sys-libs/libselinux-2.0.94[python,${PYTHON_USEDEP}] )
+ xattr? ( kernel_linux? (
+ >=sys-apps/install-xattr-0.3
+ ) )
+"
+# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
+# NOTE: FEATURES=installsources requires debugedit and rsync
+PDEPEND="
+ !build? (
+ >=net-misc/rsync-2.6.4
+ >=sys-apps/coreutils-6.4
+ >=sys-apps/file-5.44-r3
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/0001-bintree-provide-an-empty-default-for-USER_PATCHES.patch
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="~IPC_NS ~PID_NS ~NET_NS ~UTS_NS"
+
+ check_extra_config
+}
+
+src_prepare() {
+ default
+
+ if use prefix-guest; then
+ sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
+ -e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
+ -e "s|^\(sync-uri = \).*|\\1rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix|" \
+ -i cnf/repos.conf || die "sed failed"
+ fi
+}
+
+src_configure() {
+ local code_only=false
+ python_foreach_impl my_src_configure
+}
+
+my_src_configure() {
+ local emesonargs=(
+ -Dcode-only=${code_only}
+ -Deprefix="${EPREFIX}"
+ -Dportage-bindir="${EPREFIX}/usr/lib/portage/${EPYTHON}"
+ -Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
+ $(meson_use doc)
+ $(meson_use apidoc)
+ $(meson_use gentoo-dev)
+ $(meson_use ipc)
+ $(meson_use xattr)
+ )
+
+ if use native-extensions && [[ "${EPYTHON}" != pypy3* ]] ; then
+ emesonargs+=( -Dnative-extensions=true )
+ else
+ emesonargs+=( -Dnative-extensions=false )
+ fi
+
+ if use build; then
+ emesonargs+=( -Drsync-verify=false )
+ else
+ emesonargs+=( $(meson_use rsync-verify) )
+ fi
+
+ meson_src_configure
+ code_only=true
+}
+
+src_compile() {
+ python_foreach_impl meson_src_compile
+}
+
+src_test() {
+ local EPYTEST_XDIST=1
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ python_foreach_impl epytest
+}
+
+src_install() {
+ python_foreach_impl my_src_install
+ dotmpfiles "${FILESDIR}"/portage-{ccache,tmpdir}.conf
+
+ local scripts
+ mapfile -t scripts < <(awk '/^#!.*python/ {print FILENAME} {nextfile}' "${ED}"/usr/{bin,sbin}/* || die)
+ python_replicate_script "${scripts[@]}"
+}
+
+my_src_install() {
+ local pydirs=(
+ "${D}$(python_get_sitedir)"
+ "${ED}/usr/lib/portage/${EPYTHON}"
+ )
+
+ meson_src_install
+ python_fix_shebang "${pydirs[@]}"
+ python_optimize "${pydirs[@]}"
+}
+
+pkg_preinst() {
+ if ! use build && [[ -z ${ROOT} ]]; then
+ python_setup
+ local sitedir=$(python_get_sitedir)
+ [[ -d ${D}${sitedir} ]] || die "${D}${sitedir}: No such directory"
+ env -u DISTDIR \
+ -u PORTAGE_OVERRIDE_EPREFIX \
+ -u PORTAGE_REPOSITORIES \
+ -u PORTDIR \
+ -u PORTDIR_OVERLAY \
+ PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
+ ED="${ED}" \
+ "${PYTHON}" -m portage._compat_upgrade.default_locations || die
+
+ env -u BINPKG_COMPRESS -u PORTAGE_REPOSITORIES \
+ PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
+ ED="${ED}" \
+ "${PYTHON}" -m portage._compat_upgrade.binpkg_compression || die
+
+ env -u FEATURES -u PORTAGE_REPOSITORIES \
+ PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
+ ED="${ED}" \
+ "${PYTHON}" -m portage._compat_upgrade.binpkg_multi_instance || die
+
+ env -u BINPKG_FORMAT \
+ PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
+ ED="${ED}" \
+ "${PYTHON}" -m portage._compat_upgrade.binpkg_format || die
+ fi
+
+ # elog dir must exist to avoid logrotate error for bug #415911.
+ # This code runs in preinst in order to bypass the mapping of
+ # portage:portage to root:root which happens after src_install.
+ keepdir /var/log/portage/elog
+ # This is allowed to fail if the user/group are invalid for prefix users.
+ if chown portage:portage "${ED}"/var/log/portage{,/elog} 2>/dev/null ; then
+ chmod g+s,ug+rwx "${ED}"/var/log/portage{,/elog}
+ fi
+
+ if has_version "<${CATEGORY}/${PN}-2.3.77"; then
+ elog "The emerge --autounmask option is now disabled by default, except for"
+ elog "portions of behavior which are controlled by the --autounmask-use and"
+ elog "--autounmask-license options. For backward compatibility, previous"
+ elog "behavior of --autounmask=y and --autounmask=n is entirely preserved."
+ elog "Users can get the old behavior simply by adding --autounmask to the"
+ elog "make.conf EMERGE_DEFAULT_OPTS variable. For the rationale for this"
+ elog "change, see https://bugs.gentoo.org/658648."
+ fi
+}
+
+pkg_postinst() {
+ # Warn about obsolete "enotice" script, bug #867010
+ local bashrc=${EROOT}/etc/portage/profile/profile.bashrc
+ if [[ -e ${bashrc} ]] && grep -q enotice "${bashrc}"; then
+ eerror "Obsolete 'enotice' script detected!"
+ eerror "Please remove this from ${bashrc} to avoid problems."
+ eerror "See bug 867010 for more details."
+ fi
+}
diff --git a/sys-kernel/gentoo-sources/Manifest b/sys-kernel/gentoo-sources/Manifest
index 23660d5a89bc..08f564173e86 100644
--- a/sys-kernel/gentoo-sources/Manifest
+++ b/sys-kernel/gentoo-sources/Manifest
@@ -4,18 +4,12 @@ DIST genpatches-6.1-204.extras.tar.xz 4032 BLAKE2B 4daa1f7560285a659f8cff0f0807d
DIST genpatches-6.1-205.base.tar.xz 10670964 BLAKE2B 459c9bea4522d0ed5122870193eec75a5e55f45cbb49d49328d70d6f0c99f2fc12ca06838584a4c121e77a80b6717d2ef7b09bb6e6f977e7606e486db924f285 SHA512 5b05408df5905e53a0bfb4a12dde57ce4e57322170a731470d08727fde237963088adece992890c5a8eabae1ecc8884115c8860c388ba5f1936fec407f6f34b4
DIST genpatches-6.1-205.experimental.tar.xz 17712 BLAKE2B e913a01f3ecf569a43c1a1b8e5f9404a6e6da358ee2ca43e522293f883943b6fa5ad4a4daacc14dec8494aea9d89b6ff2815c182aa69c8da16efdfc678c8c628 SHA512 bd6ed5f7d829843956fa01c7051f9ee29a5d8b43ff94fd1bbb33340fc1af696d947be42161490d0abe540bdf260a8ec2c65064709b44c9800b8a5d1ec3975b66
DIST genpatches-6.1-205.extras.tar.xz 2184 BLAKE2B 3eab036fae2bf1167fb5203766dfa8a14193c85a7f7953abe5da2a0969e82eab8541764fe2f159ae12fb38ceda907bc5dc70fdddede2f4612ca008d551126435 SHA512 ff038d8f3417fd083d711ea2e4a0188afb15756c3fe8b99737005dcf7029f4e1ec6ad9fb5d9ab93e80331d1f8d264ab8d0987f68281aa62606b13c6abce21094
-DIST genpatches-6.12-122.base.tar.xz 7158960 BLAKE2B a82b4c8c3051d3e74e018d235070a33c6ad9683c53f9eaf5e363477238e81ea03f20854e0f645a4d0529e18276bd7359ece73a03b563f9d760bf14811608b86d SHA512 a6bfc6a57eef45b3c9becc3e8a277607bec7ff578b38c97653d85e986ec4e622eff2d4f7bc64a4cfb3837b1c18e088639ac8017ecfc8e9e04a33647adc3f3051
-DIST genpatches-6.12-122.experimental.tar.xz 6052 BLAKE2B ae6ba83764b30a4faff1f755bd18161018bfd353fe56fecb1f4ec8562cfb4924a775fb2e3d8646c478c62b92754cfa1b9028b03ead7ea7474cb19ea54999af3e SHA512 3d042c04c7ba0ec4bde65a4fb2704844b9d0a241ba9bfe884d04bd134ce409bf9846d5eac7434e5885ba2f5480005880efe27c0c46e9eb4b2ee4ae7baead7f91
-DIST genpatches-6.12-122.extras.tar.xz 4300 BLAKE2B a2d4485ba7102841d740bb8e4707e05c032d26a12bd9e8976345a549160d29e67eb905777b94155f6e8cf7f8c7cf00ef8ec9f270b39e526235a42e240c532493 SHA512 17bdcdc914bdaae544f68f889888bf31ea23febf5a5708f53bfe00c20bc3197caea33f98f88022ff79c7eb8f931a3bce0330e3030f80a7914ec3a8eb086b50a9
DIST genpatches-6.12-123.base.tar.xz 7506992 BLAKE2B 897d0ffc62d62df3f64ace26168687f184ff9a48e393abee75e2af30d66c209f124d5d5059cfdb85a717054066bdef4c3faa0917e31f148b1e1717b0ec0e5da8 SHA512 37b6356453aff0d64f7f1142bb352740375252ca414170e20a9127dbc53608cb9b0df333bd9de714d3e169e82e4e06673e65e4f6fa6aafe8e941686cac2b8d50
DIST genpatches-6.12-123.experimental.tar.xz 6048 BLAKE2B 32c52e539b3747d4e85ec3ec9c513677303f7bc741e2b02938ee0e09fc1af1d8a6d6d2aee0dbde157c908aebc2d89fae0dccaf258890eaac00d153286e2bf758 SHA512 576f3a92f40059758a8c7fc1604937d183feabf918444026f300ecb4b61aa7031c19aa9e13a00fa202e335a08a38c64bc60ee3e9f79d566874a670bd06f47868
DIST genpatches-6.12-123.extras.tar.xz 4300 BLAKE2B 5646fb0ae62515ed7451acfeac13efb24c74e2c6e0ec823a47ef4632582d1d5529d33cb6ebc855bd8a5349b28b8d511f4774142ba4616cfe3d3a8b71fcccbb67 SHA512 112a67267a62cc354667cacea9656a32d06e09e3499d88bf6d3afb3710bf311a769e63913f5feaef2c99d091e36223c8c80da2c858cc41ea35dce0ddc7d99671
DIST genpatches-6.12-124.base.tar.xz 7806892 BLAKE2B 013ed10cc1d221e4e21787ae9a65813a1927bf33e8a5afa51b2143b1bc700ff566d859831eb7c1d0e16850c22d89912a519f12b25a3da1731fb990dfa24c8fb8 SHA512 33b4e35e70cca1385353ec5533ae827c14775c4d5dd0724f3f7a1e4b1548d63c09397a5232131e50bf495c4e518a001331d2174eb45909a98b94d2a82cfdcfb3
DIST genpatches-6.12-124.experimental.tar.xz 6052 BLAKE2B 9bed830ed879ecb78537cc7a0d29ba81e7207acc41610593708ac79de071bea8ada030b611faea17da502d7e938a124aee8a39537cccc15594dd34fbd40e62b5 SHA512 431486b50c46aeee7d6d4b55877869ab53c205e092486f024af135d58d0f20f467fae1a8fec06b0113549beb08718e8e55cd4aa14239713b2c2626c1630890fb
DIST genpatches-6.12-124.extras.tar.xz 2184 BLAKE2B 6094867a70eeddaf69d7b51b59e93e1117da671c10edfa9bc7cfbf59b94a7a4cbb36cb91d0fd1a99d034ffff132f02d973c8dbde3838b5d8c4a18f3baa1d9d06 SHA512 f0030ab28ec5036665ec290561090a0b709f2b16a8f902cf70349cd524405f5f01a0135ee65650d9c5661c165cfc4c16a8befbd3d401df26f5baa74f96b91aef
-DIST genpatches-6.18-59.base.tar.xz 4383624 BLAKE2B 120efefe8e08019cc3226bbb3c5e5f6942d2dcc384acbd2eed51d681c3f141908775dae003fac3b00e458c2608cd2ee819c88e3f59b37c8ec9fa9f597cc9ed20 SHA512 871e8beef6b1c9a4fe0445c34a3d240f20aa45ce8a3c53498a7fcd0dee6c9c769770ee34af60acb7bcb2450422acfbaa209f5441e7fff53031cbcea3f07511a2
-DIST genpatches-6.18-59.experimental.tar.xz 6000 BLAKE2B 071d1437e61ec500c5ce1047a561c3798388b1111cc57a1e1a350a7a2c906017452609a1c3b540ca74ef9338b94780b7312a1fadb1b6c7bd7b4e1178af0bc872 SHA512 a5c3c20d1e3df67279ee80a798de165f2af5ca371a32de80f8520a928bc9c55d8eb909bdcd64025fc956cb2237f66ebb2529e2a33d85378487abd1881567e968
-DIST genpatches-6.18-59.extras.tar.xz 2176 BLAKE2B 939ed95fa63011e966cc3b35872e0af458ded656d0591288f00cd91d827fcf8747e990c024027e87e71accc223a2ae35a837b16f64265f37afe86532ea8bc4c8 SHA512 46db5cdbde3c5ea212c2ebd19c9afa1c697054b48d402b3fa1237f3a05575fb6bc716096b8f024ceccd92208d24a5e5d308f117a11dd6604b1b8a8f19b61c21c
DIST genpatches-6.18-62.base.tar.xz 4941476 BLAKE2B 691b62f02c811eaf67ce4620fd808e0a0ce7690b0ad9b28cc5364e08c1eb1668fdf05b28646a129e9d92907727aebc9b43a0080e7b3f297b5f3ffc00224c5231 SHA512 0842b61f28934f012ce23c4d6b537739a66e4f7a45f517359ce6f52cdc214b08404a1f32921a182af5bb02e0140c6e946ceaf416d2e3dc7f6cadb32cb13f9868
DIST genpatches-6.18-62.extras.tar.xz 2176 BLAKE2B 8996f041ee709eee05059aa16f9f5189519b0ebb585926a9be3491a9cc08a3850d1fa4b989f6628cba0eb631818f0ff33155db2c32329b5d44d53ec076725bc9 SHA512 d00bf3118b90731eb592e37300bdb18889d3f01f7601f17cbfdfce705c23797fe4638521400c29a8bf7feee3f0af6314d8f80afe3a9c90ec44670655c9a647fc
DIST genpatches-6.18-63.base.tar.xz 5063784 BLAKE2B 3645bf1223eb1fb0ca5f594eeeebc3082e9f0454debf698c2484a13356157360fde7a8746ca4854e664648e7f47d5ab863ea36f42d266edce6e9f87505bd7ca3 SHA512 d0b4fe730a5457599ff6e08090659facd87c549d4b42183ef11043124df4afef622843fe3e379596aa900cb6c3bacb5767dcada279bf3fafb61c2c5833996d13
diff --git a/sys-kernel/gentoo-sources/gentoo-sources-6.12.110.ebuild b/sys-kernel/gentoo-sources/gentoo-sources-6.12.110.ebuild
deleted file mode 100644
index 43554e80ac29..000000000000
--- a/sys-kernel/gentoo-sources/gentoo-sources-6.12.110.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="8"
-
-ETYPE="sources"
-K_WANT_GENPATCHES="base extras experimental"
-K_GENPATCHES_VER="122"
-
-inherit check-reqs kernel-2
-detect_version
-detect_arch
-
-DESCRIPTION="Full sources including the Gentoo patchset for the ${KV_MAJOR}.${KV_MINOR} kernel tree"
-HOMEPAGE="https://dev.gentoo.org/~mpagano/genpatches"
-SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="experimental"
-
-pkg_pretend() {
- CHECKREQS_DISK_BUILD="4G"
- check-reqs_pkg_pretend
-}
-
-src_prepare() {
- kernel-2_src_prepare
- rm "${S}/tools/testing/selftests/tc-testing/action-ebpf"
-}
-
-pkg_postinst() {
- kernel-2_pkg_postinst
- einfo "For more info on this patchset, and how to report problems, see:"
- einfo "${HOMEPAGE}"
-}
-
-pkg_postrm() {
- kernel-2_pkg_postrm
-}
diff --git a/sys-kernel/gentoo-sources/gentoo-sources-6.18.52.ebuild b/sys-kernel/gentoo-sources/gentoo-sources-6.18.52.ebuild
deleted file mode 100644
index 90ea10e15ade..000000000000
--- a/sys-kernel/gentoo-sources/gentoo-sources-6.18.52.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="8"
-
-ETYPE="sources"
-K_WANT_GENPATCHES="base extras experimental"
-K_GENPATCHES_VER="59"
-
-inherit kernel-2
-detect_version
-detect_arch
-
-DESCRIPTION="Full sources including the Gentoo patchset for the ${KV_MAJOR}.${KV_MINOR} kernel tree"
-HOMEPAGE="https://dev.gentoo.org/~mpagano/genpatches"
-SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="experimental"
-
-pkg_postinst() {
- kernel-2_pkg_postinst
- einfo "For more info on this patchset, and how to report problems, see:"
- einfo "${HOMEPAGE}"
-}
-
-pkg_postrm() {
- kernel-2_pkg_postrm
-}
diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest
index 06c829b28172..033e45ffe16c 100644
--- a/sys-libs/glibc/Manifest
+++ b/sys-libs/glibc/Manifest
@@ -30,13 +30,13 @@ DIST glibc-2.41.tar.xz 19344868 BLAKE2B 4da62f489ba7a95bb069c2cfea8cf78e4d37e3a5
DIST glibc-2.42-patches-9.tar.xz 86380 BLAKE2B ecc9869d2e3c5e33170c05dc02c47e033450e19f590e4eeb63a5735773fc81b907038a22a990412596505b0040b4378ecffef0eec1db43602d335408b15fcc4b SHA512 92a207e8de80914437e05d59ae070331afc5fe8f48459c0608961277150208f7e4eb73838b1cfdcb737ce9d7fb2b7b96711c33f134d213288316e10430a89fc9
DIST glibc-2.42.tar.xz 19930508 BLAKE2B 6ffabfe7942034a5a4fb5097679cb47bc3431eb2a3864af07cea0cb6aa5db63fbaf6f026b3c9299e00268058a6762eb21e92499f012d552ed87d65c7ffbd0bbe SHA512 73a617db8e0f0958c0575f7a1c5a35b72b7e070b6cbdd02a9bb134995ca7ca0909f1e50d7362c53d2572d72f1879bb201a61d5275bac16136895d9a34ef0c068
DIST glibc-2.42.tar.xz.sig 981 BLAKE2B 890e637c444982b2b07fac4607ce3e9f416c9c7688267ebd135e53878d93db95c609facfa1f347c59f23776cafb4b5df8ffb60235c89be451276202dd676dab2 SHA512 d868220778e98d24aead10a585e6a903892e4d043cd96a404634c8aa03d001d624a46a5c0fe13c86f83f66396a1f360a10990966fe377e98a722914b5087575d
-DIST glibc-2.43-patches-3.tar.xz 99856 BLAKE2B 4bc4b2fc9b23e7e2d295b8f87919ed676147d3520b27e773db48200768c3f6647a4383fcf8962881611d622ddbc71fe1bc3732fbb7df5c1968ea78ab047226a6 SHA512 0070d0b8552f8385e3133f522dfb563b9fa5f5663e1cce3c4b99a4e1d9da57a4c0305e3908f1c739f4e17113f4775b253af83fc8ee3885a0305aebc970314edf
DIST glibc-2.43-patches-5.tar.xz 134200 BLAKE2B 0f44f17216b4bcd7909465b0534173092a75f2012afc8b2131f4cb45c56be398258a5e0f8e8c010954fc010e42768f92ed484e4cf379452e8f9781bf5c9dd10a SHA512 74f99962e8f8af5543c522248d96c5c6c69ccd3c589fff7b642df14a07217926229dda20b51bd34e9685459884b60960bc5215c0a55bfff3c346e18490556b0a
DIST glibc-2.43-patches-6.tar.xz 148584 BLAKE2B afaf74961bd89901ab66722f31adde4eb05e068f8862358e6a14fd58db239fc3d6529c78654d593e5fe92506b3e511dcc1fff83b43da071afac33a9945bcc763 SHA512 de8ea5005afbb85cacf65f3f9516990b7ed2c6abf4c8d81c3910d896050f07bb44a814ec97c734cd2e838f8a4bbba75730d5b74cced26c36bbfcce9bf3a987ba
+DIST glibc-2.43-patches-7.tar.xz 157164 BLAKE2B a0073ae0ce9b3cab23e7c5f4382691cd2bf07db497d4514c6a6d54fc2db366a42156da3763250e31bd94331f1b9afd5a8beaf268181818164f47500a7ca4f4a5 SHA512 2e8fa0931368a57a59c0ee7e8f3071518145d1cbf2ca70085da4264b6007822520fc72b020e5132b5926983316a53dc20593886e70a99b71cf5f4cc310fc96c1
DIST glibc-2.43.tar.xz 20297012 BLAKE2B a764edf3d0d52809aa94cf1a8f73341159d226ecc2a595aa3c9e1d1fd4b2d4eb9a599d70bda8812b73d8ef58b39746efdd34026772e38c0f091fe071d461ea98 SHA512 25765f86bf54a22fc69dd13023ec9be59bd7e1f9d6ea1630cf21851898df2043bb8a01538c4b5fdd06495d0163289362b0768b391b0617f709b89a777168291c
DIST glibc-2.43.tar.xz.sig 1018 BLAKE2B 99fb3f296795498f6de8090d537e32d8af0bfa75c7d8145ba4c35ca1b54c281fd2b9cb121886aef1800c0a6e508244914a2de67339d113561a9fc2c515110924 SHA512 6e26f0edee146710bcb73c3890c455e8b479009f99d284c43ea695b73bfe45e4ba47d1460300ce8c7496689b0c21a1c77e6359e005957973648b86755160c8f5
-DIST glibc-2.44-patches-3.tar.xz 58912 BLAKE2B 6e7461d19641c49c7335507420854aaaccbf49e87eaa0ee25b3fb63c23c00ed4000c7c87b6c2888e3e209d5a68d37e4662cd8294c49baa3f5d289f933c4ab5ee SHA512 c43b5687c21b7b9b50c10b89d4fdc9fc54a0fba01c0ec32aee9eb3553b76f3e2a09de90661cd1e422df4815202bd73791f0919bb98842d77435167eff3398d29
DIST glibc-2.44-patches-4.tar.xz 85580 BLAKE2B 7ac061192022a41556a26cddb7113a04be57b862ad0a91b92e6b515bfc809669c2821a57e4effc2fa6f8fe7efc25d5b38939efaf39f57ccfbdeb3829ccb4e174 SHA512 c15829b51dc7e63828ea513ee58ea764a45618b1f91e0597e137b725953a64365bed1c5cfa56a28fd19c58df163e526737ca391acde801ff7a148270bec05ff5
+DIST glibc-2.44-patches-5.tar.xz 90032 BLAKE2B 98d236a2bce4269f6b0056756a1e6ca9c30c84634e05c7d733ffd00052e98a33299d8e3653ced12fff40dfceff23f827410fcc194b2a7ccfc5f366e6fd44a5d6 SHA512 37dfba24199ce9b7bd685b9178d2110576585218df701bca122e2785eaee97127781674d1dc2b3387af4610e79ca0c018f0ae31b4769a95f17008d163d72975d
DIST glibc-2.44.tar.xz 20620544 BLAKE2B f943e302ad4e44a204e4c5d85460653bec030717c2a502f16764d74bd6d87c280e126f37820b96ec726aff611a8c4e0dba95a7b4d72907adcb0aa88d304e4823 SHA512 963dc0275f7738653379909b64ee32e28f13cca77440f2cf9bd0ab82cb183f6cd1f7376d25cc5442de69b972713bd81bf0e38dbcca9b2a4d6649843e76fd50a5
DIST glibc-2.44.tar.xz.sig 870 BLAKE2B 0ecb4965c61714a49f871b3ac24cafe8d6b79ce039c5364082fd8e61f6ac4102f0fab8b26f130707daf9ec6dad5a9b29198e56533ea3d7d3351538ada3f52f02 SHA512 e2034e369d2c233c9f9e155d6bc4b5e7472cace8a000253514a08b4dac3be6ed59cafe9aa6ceea2bdd07678291528c7937b358f43ab02a6f09422e7498837494
DIST glibc-systemd-20210729.tar.gz 1480 BLAKE2B 37722c7579df782d890e44dbab99c3de52ab466eb9de80d82405e9bb5620bf39ffc8c5f466a435bdb86ef6d36dd7019c0736573916bda6c67d02a2581e0ec979 SHA512 efd75af58b50522c28cdac7abd1fc56555bc1bb042512c90d8340c1ec09c5791b3872a305bf83723252bbde5855b75d958c041083457765c4cfd170732d09238
diff --git a/sys-libs/glibc/glibc-2.43-r2.ebuild b/sys-libs/glibc/glibc-2.43-r6.ebuild
index 2cf6a9738d04..fbbba319ee86 100644
--- a/sys-libs/glibc/glibc-2.43-r2.ebuild
+++ b/sys-libs/glibc/glibc-2.43-r6.ebuild
@@ -12,8 +12,7 @@ TMPFILES_OPTIONAL=1
EMULTILIB_PKG="true"
# Gentoo patchset (ignored for live ebuilds)
-PATCH_VER=3
-PATCH_DEV=dilfridge
+PATCH_VER=7
# gcc mulitilib bootstrap files version
GCC_BOOTSTRAP_VER=20201208
@@ -43,7 +42,7 @@ HOMEPAGE="https://www.gnu.org/software/libc/"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
else
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
SRC_URI+=" https://distfiles.gentoo.org/pub/proj/toolchain/glibc/patches/${P}-patches-${PATCH_VER}.tar.xz"
SRC_URI+=" verify-sig? ( mirror://gnu/glibc/${P}.tar.xz.sig )"
@@ -927,7 +926,7 @@ sanity_prechecks() {
die "Found directory (${ESYSROOT}/usr/lib/include) which will break build (bug #833620)!"
fi
- if [[ ${CTARGET} == *-linux* ]] ; then
+ if is_linux ; then
local run_kv build_kv want_kv
run_kv=$(g_get_running_KV)
@@ -1620,7 +1619,7 @@ glibc_do_src_install() {
if is_hurd && has amd64 $(get_install_abis) ; then
# First, let's check for sanity
- if [[ -f "${D}$(alt_prefix)/lib/ld-x86-64.so.1" ]] ; then
+ if [[ -f "${D}/$(alt_prefix)/lib/ld-x86-64.so.1" ]] ; then
die "Somehow your amd64 hurd glibc installed /lib/ld-x86-64.so.1 ... this should not happen."
fi
@@ -1630,7 +1629,7 @@ glibc_do_src_install() {
if is_hurd && has x86 $(get_install_abis) ; then
# First, let's check for sanity
- if [[ -f "${D}$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
+ if [[ -f "${D}/$(alt_prefix)/$(get_abi_LIBDIR x86)/ld.so" ]] ; then
die "Somehow your x86 hurd glibc installed ld.so ... this should not happen."
fi
@@ -1756,7 +1755,19 @@ src_install() {
#
# If coreutils is built with USE=multicall, some of these files
# will just be wrapper scripts, not actual ELFs we can test.
+#
+# We allow to skip this sanity check, as insane as that may seem.
+# The one use-case I know of is changing the main ABI in-place;
+# the test runs existing binaries against the default ld.so, which
+# fails then, while the binaries should be executable just fine
+# using one of the other multilib variants that we install.
+#
glibc_sanity_check() {
+ if [[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] ; then
+ ewarn "Skipping glibc sanity tests. You have been warned. Last 5s to abort."
+ sleep 5
+ else
+
cd / #228809
# We enter ${ED} so to avoid trouble if the path contains
@@ -1791,6 +1802,8 @@ glibc_sanity_check() {
done
popd >/dev/null
+
+ fi
}
pkg_preinst() {
diff --git a/sys-libs/glibc/glibc-2.43.9999.ebuild b/sys-libs/glibc/glibc-2.43.9999.ebuild
index b277ddb1e933..739dd78a06e0 100644
--- a/sys-libs/glibc/glibc-2.43.9999.ebuild
+++ b/sys-libs/glibc/glibc-2.43.9999.ebuild
@@ -1755,7 +1755,19 @@ src_install() {
#
# If coreutils is built with USE=multicall, some of these files
# will just be wrapper scripts, not actual ELFs we can test.
+#
+# We allow to skip this sanity check, as insane as that may seem.
+# The one use-case I know of is changing the main ABI in-place;
+# the test runs existing binaries against the default ld.so, which
+# fails then, while the binaries should be executable just fine
+# using one of the other multilib variants that we install.
+#
glibc_sanity_check() {
+ if [[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] ; then
+ ewarn "Skipping glibc sanity tests. You have been warned. Last 5s to abort."
+ sleep 5
+ else
+
cd / #228809
# We enter ${ED} so to avoid trouble if the path contains
@@ -1790,6 +1802,8 @@ glibc_sanity_check() {
done
popd >/dev/null
+
+ fi
}
pkg_preinst() {
diff --git a/sys-libs/glibc/glibc-2.44-r2.ebuild b/sys-libs/glibc/glibc-2.44-r4.ebuild
index 06849e379a06..b45ea45688a6 100644
--- a/sys-libs/glibc/glibc-2.44-r2.ebuild
+++ b/sys-libs/glibc/glibc-2.44-r4.ebuild
@@ -12,7 +12,7 @@ TMPFILES_OPTIONAL=1
EMULTILIB_PKG="true"
# Gentoo patchset (ignored for live ebuilds)
-PATCH_VER=3
+PATCH_VER=5
# gcc mulitilib bootstrap files version
GCC_BOOTSTRAP_VER=20201208
@@ -45,7 +45,7 @@ HOMEPAGE="https://www.gnu.org/software/libc/"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
else
- #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
SRC_URI+=" https://distfiles.gentoo.org/pub/proj/toolchain/glibc/patches/${P}-patches-${PATCH_VER}.tar.xz"
SRC_URI+=" verify-sig? ( mirror://gnu/glibc/${P}.tar.xz.sig )"
@@ -1772,7 +1772,19 @@ src_install() {
#
# If coreutils is built with USE=multicall, some of these files
# will just be wrapper scripts, not actual ELFs we can test.
+#
+# We allow to skip this sanity check, as insane as that may seem.
+# The one use-case I know of is changing the main ABI in-place;
+# the test runs existing binaries against the default ld.so, which
+# fails then, while the binaries should be executable just fine
+# using one of the other multilib variants that we install.
+#
glibc_sanity_check() {
+ if [[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] ; then
+ ewarn "Skipping glibc sanity tests. You have been warned. Last 5s to abort."
+ sleep 5
+ else
+
cd / #228809
# We enter ${ED} so to avoid trouble if the path contains
@@ -1807,6 +1819,8 @@ glibc_sanity_check() {
done
popd >/dev/null
+
+ fi
}
pkg_preinst() {
diff --git a/sys-libs/glibc/glibc-2.44.9999.ebuild b/sys-libs/glibc/glibc-2.44.9999.ebuild
index 34cade793207..4e26f162f8fa 100644
--- a/sys-libs/glibc/glibc-2.44.9999.ebuild
+++ b/sys-libs/glibc/glibc-2.44.9999.ebuild
@@ -1769,7 +1769,19 @@ src_install() {
#
# If coreutils is built with USE=multicall, some of these files
# will just be wrapper scripts, not actual ELFs we can test.
+#
+# We allow to skip this sanity check, as insane as that may seem.
+# The one use-case I know of is changing the main ABI in-place;
+# the test runs existing binaries against the default ld.so, which
+# fails then, while the binaries should be executable just fine
+# using one of the other multilib variants that we install.
+#
glibc_sanity_check() {
+ if [[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] ; then
+ ewarn "Skipping glibc sanity tests. You have been warned. Last 5s to abort."
+ sleep 5
+ else
+
cd / #228809
# We enter ${ED} so to avoid trouble if the path contains
@@ -1804,6 +1816,8 @@ glibc_sanity_check() {
done
popd >/dev/null
+
+ fi
}
pkg_preinst() {
diff --git a/sys-libs/glibc/glibc-9999.ebuild b/sys-libs/glibc/glibc-9999.ebuild
index b100e9e2c259..41200aa5cedf 100644
--- a/sys-libs/glibc/glibc-9999.ebuild
+++ b/sys-libs/glibc/glibc-9999.ebuild
@@ -1766,7 +1766,19 @@ src_install() {
#
# If coreutils is built with USE=multicall, some of these files
# will just be wrapper scripts, not actual ELFs we can test.
+#
+# We allow to skip this sanity check, as insane as that may seem.
+# The one use-case I know of is changing the main ABI in-place;
+# the test runs existing binaries against the default ld.so, which
+# fails then, while the binaries should be executable just fine
+# using one of the other multilib variants that we install.
+#
glibc_sanity_check() {
+ if [[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] ; then
+ ewarn "Skipping glibc sanity tests. You have been warned. Last 5s to abort."
+ sleep 5
+ else
+
cd / #228809
# We enter ${ED} so to avoid trouble if the path contains
@@ -1801,6 +1813,8 @@ glibc_sanity_check() {
done
popd >/dev/null
+
+ fi
}
pkg_preinst() {
diff --git a/sys-process/procps/procps-4.0.5-r5.ebuild b/sys-process/procps/procps-4.0.5-r6.ebuild
index 4bb9c0e847a1..390705fee5b3 100644
--- a/sys-process/procps/procps-4.0.5-r5.ebuild
+++ b/sys-process/procps/procps-4.0.5-r6.ebuild
@@ -99,6 +99,20 @@ multilib_src_configure() {
myeconfargs+=( $(multilib_native_use_enable unicode watch8bit) )
fi
+ # Needs epoll
+ if ! use kernel_linux ; then
+ myeconfargs+=(
+ --disable-pidwait
+ )
+ fi
+
+ if use kernel_Hurd ; then
+ # Provided by sys-kernel/hurd
+ myeconfargs+=(
+ --disable-w
+ )
+ fi
+
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
}
@@ -126,6 +140,12 @@ multilib_src_install() {
mv "${ED}"/usr/bin/kill "${ED}"/bin/ || die
fi
fi
+
+ if use kernel_Hurd ; then
+ # Provided by sys-kernel/hurd
+ rm "${ED}"/usr/bin/{uptime,vmstat} || die
+ rm "${ED}"/bin/ps || die
+ fi
}
multilib_src_install_all() {
diff --git a/www-apps/grafana-bin/Manifest b/www-apps/grafana-bin/Manifest
index 9ab570876e3f..aa07c55e1524 100644
--- a/www-apps/grafana-bin/Manifest
+++ b/www-apps/grafana-bin/Manifest
@@ -1,16 +1,10 @@
-DIST grafana-bin-12.1.10.amd64.tar.gz 197856726 BLAKE2B 30b58e7bc5a5f2417f7eacc73afd3d2137a9cec57789a9624aa6b3c7d784e3cf71ea8e6c84b0f4c68a682ec7198f6070679a3dc67a33d28035b061c5041a405e SHA512 b720b4d616b1c0c5cca99fc36565c9b838703e442839f8671aa67e9b659550875aff0a38310e2d1a0c2f7f416e94888a581877d205bad0cb94e7427bb72cc34d
-DIST grafana-bin-12.1.10.arm64.tar.gz 188770279 BLAKE2B 09c71994ab2a0c27bca631a09c19c3b144b9bf8a3ad1888156defb03681fefcf62b9e420f78f92994b26009b78a743b96e0dc67af232bf91e17f8ee5d1c70a81 SHA512 88845992e0d1e780df2878199aae0c08ff2d2dae6443e7c7a5ef248708cba159042f933632c34ab63219b9bab848e6874f1a0a537e00a57e2822cf2c79a69284
-DIST grafana-bin-12.2.10.amd64.tar.gz 189823840 BLAKE2B 3473e64d098d9958f8f65c985e8680f42d378688e6edcb6be793276efd2e24c756d2f8e1960db92b67d0fb0edae37e2c0f603cd22f83980ae12a828b309e0e53 SHA512 745774eab24e3b44aa491058dbdaa4bf66e0eefce62294b799f7caefb68fc707286b5d4f6ce9248f7102c7b41f547b302c8dd075cc9267a38c74835b4fb79321
-DIST grafana-bin-12.2.10.arm64.tar.gz 179983791 BLAKE2B ceab99a260bf7b45ffeb559adc9485d37db978b5bb0c93f2b6c4865662f741148467a0ab3c57dcd21f45a79463cf210a7c3f1e6373a056091e88d584d6c562d0 SHA512 609c74afd85c7be8d6336bd830edc126c3cfa094a96aef79a8da0895acf21b80cabd577292eb01900d7264223c1009ff11b14e7d8f3efb6d1f6d6ebe8dc1a3a5
DIST grafana-bin-12.3.11.amd64.tar.gz 271367322 BLAKE2B 582562b6db05f4a3c877916fde24513cda329efd2a0baf7cf8b1bcdde316dcbdc5428e5de655a3014b797e4d813e86edf3db4863bf790ea344fa76bb6efb0e22 SHA512 7750d3729ed22f4d34c5ac1cb594b18ae867b69230a33ebc6796b841de6efb7c9d921aea6657a938a0613c3c1ec2065dc65df9b347261ac6af657342ba68f134
DIST grafana-bin-12.3.11.arm64.tar.gz 256219666 BLAKE2B 16c69a19e31d8cb3b7c6752e8dcc4a17b46c6945abc4e8e0c26eb0f842d0a3e5a5d20972eebda7a375ba3a82b87f05cd4c9193e0be61c4d4c7bbd2d0ab36f5c0 SHA512 c2db1baff009b13728e29afb77ca746b2cf0533826bcb79aca25369e3576c893e31bae1f63cc0444865c48d95b4afb7e2ffe4e5e3c07310588d2b2a1de19f3d5
-DIST grafana-bin-12.4.0.amd64.tar.gz 198219983 BLAKE2B aaa608b477a307d41a28bba5e477bd66a7c954f6d16629ba1960ac26b5a69e129b3e76cf9839f19eda3c06a8c178e1e78b7a17b1f368e77df405aee9d88ec0f9 SHA512 0d0f573b22d8839943c6a346f429dd1db43d676e62460e53f041335500f671371f9cebd015b2197ecc87e4d8b1381fadc7a0d4ee49a7e5259f6b83ce6b46a33f
-DIST grafana-bin-12.4.0.arm64.tar.gz 188539753 BLAKE2B adcc241566a2b1b75823a18247b3c5b44d1f33de5744f60e86a407d5205e786f6c2c9f84635f7555e283d80f76df7c6eb7f9233777d449cc7f19e4f5029411a4 SHA512 3888c531bbce11ddd5293219f72a880d7bcf9b0eedc0e1ea8502782fc3971723e83ed2317be4bc9771a9aa807e22255e0778dc97993bdc9a75840bb0219ab263
-DIST grafana-bin-12.4.11.amd64.tar.gz 278432937 BLAKE2B 942ba92666f8759ebd4ab14b92cf8c3db6c2a01913341c2eb9952f2a4f32505fc7dc2ba9069f5712d6e937ac6934fcce1b1b2f0c9658bbe3a994eee126fda6c7 SHA512 30e9bf73cde8a7a69e0612b6ff646fb7eaf357595affabac32f1ae28d4cdfc843ebd68feb0852d87ccd0a77527692083807c5466f94247184b812ceb810fb146
-DIST grafana-bin-12.4.11.arm64.tar.gz 263008442 BLAKE2B 98ac04442d1d1113b2d4e20117e66889d4709fc69a7207408388e1eef339557d180c85d52a386f795b91aa29fdb0b3118fd51621daf50bb85ede449d586c8933 SHA512 8b8120c07835dee50856ce276c9f2fccce927998f84a3c67df4691abc560776bf18ca40f02e738afa8ed0a94a17256b2d55c55adcb5cb1d6257c2a2d75623e51
-DIST grafana-bin-13.1.6.amd64.tar.gz 363471255 BLAKE2B 25dbefa82469294e2637d4faa68f499312e1257d0375990b9b053fdf5c2680a028ac675e51fa85bf7f0bc34470126fd02a1686f919f1df4b2de3674511d24528 SHA512 e2e9f00ec6570c5610b80942da0a8ba4559af6a4433cbc0442c7362189dc0d4406d8d808438b100a87ea571fe9e1ec02ebe11aedf01e331fd3bc053de0d6a495
-DIST grafana-bin-13.1.6.arm64.tar.gz 345423792 BLAKE2B e135c92fcaf32709c1e62dd30d821b565fe8c01fdfbd0756a011739e3060d73a48fae4c8665b1d15ed314c5b5913354081b8b6ca89ea7d0ec350f4a850f4e0b0 SHA512 652ea87690f7f10efc5656e7459bf131d152f3567043edc40097a369ce502bc665a29798a4691f0db24fbf2e666e804a42b9515b76ee585802984cc5345a4629
-DIST grafana-bin-13.2.2.amd64.tar.gz 457508545 BLAKE2B cca133113773ca99da2e1abe91aefc688bb2d49baf38891e3fb2a260efd50417deb4d9b5ddf0e49d94da798d727184e58428f42ed99af7a5b0a30bff82948a25 SHA512 b10c597076a2ed1c8a7e1404860204f00841dc5ff800b2ce89309150a82143fe7e2795409bb4c58a65c4af751c4817e3bb771fefa6a839a202cf2a529191f6d6
-DIST grafana-bin-13.2.2.arm64.tar.gz 427194660 BLAKE2B fd3fc111085c85cc7d957e32d0294c32e932cc4ac569b8d9ae83a132383f2535008eb0c66037157eb54946443c984740cbad39ed402606537387bb929f540cff SHA512 b221d7214cceb962d6c25259d81af73fa92b4161d730c3ae1f70bfd405ced00c28d8502380b5616bdb3700350ba2f5e2b447e964ef310a46fe4bb7df8d1a266c
+DIST grafana-bin-12.4.13.amd64.tar.gz 279355634 BLAKE2B 6169b7cab53ff51d243c12ab43e1b30105290188cd607c7199481a131e7f0e9b4d8b8f0fa58cb6326511e16370468c969b25a171c45d0c75bde339e67de3ea08 SHA512 a2bc1278f7af14f7e5440a594c8b078067a37f39134b2b62da8a3cf6e386c47edd8b3cabc7d4a2c40ed740d8823add3b71b30fd6fafd8d24e30e5836516206d3
+DIST grafana-bin-12.4.13.arm64.tar.gz 263926814 BLAKE2B e09cb6783a6decc3fe051b004ef51f5e793d5d433383039eff66d4d796104629d35e6103af7c4acb2eb3bd5ab3e2f228e1fa56df7d37e6c8cae1ab229b6a9b2e SHA512 ab134670a75eccadc6c00a1d300b4f80a50649852ed985614278070ac37647bc417ea750f8498e9d080be8cca23151ed6278bfebfda542d86524ea58019ff94d
+DIST grafana-bin-13.1.8.amd64.tar.gz 365079934 BLAKE2B 8eb47fb08cfe7882475aa78b456da8a5ef79edca1c30f0ffc8be8791de1a1abac0bcb82cc8f34c725e7d2a0f9d826578c4199a805bfc6cf331fc26ded827dc26 SHA512 b354a8df7a6f9d4ffc0f8344be8211c93c8a607e17862f92da34d8a5a25b563443161816e475ca141659791aecb40b422e40ab09d30d3723820031f8514a5f9d
+DIST grafana-bin-13.1.8.arm64.tar.gz 346985801 BLAKE2B 546d3bff60267ae1a2752173c319bfa5881f721fbafb0c90b549a77d3501d17ce1d8853211693d2448316164cef109fca4567efe1825259bd5a1e306ba03717e SHA512 ff08ae7e980e1d23e44520a75dc606195423d2bab36a3b8c2de40439eb30e468fa89d5a21de6ca781a9f6b5dc8574888fe2ca345cef1ee04ca6aa6b52561af8f
+DIST grafana-bin-13.2.4.amd64.tar.gz 461295109 BLAKE2B 0085e63e1813edf77570d0faf69f953dc6f237fe3e91a3a81b679c7a656368ebdee2cd162e61d5f651cfbe23b7e8c423b29ba2634eb1816501da1a925ae256c1 SHA512 25a84f8f11b9f2e65ce7e815e6487d635d23a7bded7039fea77d7e011ed6ddd816fcc0fb22694f7fedda45a7112d1b0b75d4743dbd7df43cde4c3995c8197692
+DIST grafana-bin-13.2.4.arm64.tar.gz 430634089 BLAKE2B a3194f2b954aa57634782f23818b33c3ade2b6403e0ce46e43cdc248c02a28d96df509012cf2a57d97fcd90c6d5b2aeac4d860dd5909bc5440ef101e03023014 SHA512 cb1de6ecf990a1c13b8387a447c69e21a34a2d5ca5c6fedb73ed59b6e2fc6458ae6dc8372bb3b49af17575e1f97b9ef26926eedc74601b180b55c17a4c31a0e5
DIST grafana_12.4.3+security-02_25720634919_linux_amd64.tar.gz 271616696 BLAKE2B 58a7cb2a7c480f538a172b5b562dd43cba4dac52043749264c3adee7852b9d848a1ba309dc5a16ce513e8e3c073e308f7c43b0432715e3784e1a2494397c9549 SHA512 e185a116d902b4ea54474614078ece0d002a1ff3b8629359b8c12929c2ed285b32a9143d60dea5a243bef54c34b74a757c9630f9700e3107a3d7bd3bd9053d7d
DIST grafana_12.4.3+security-02_25720634919_linux_arm64.tar.gz 256899119 BLAKE2B b2b367a1e83376bd2470b691a25572858ceba2ad95ea741aabbfeeb8bcf9ab0b20570179c4399cf9bd7e3c815bd2134f0a5fd28a61bf8349be3a4ebfdddee341 SHA512 91a457d187010866bb332705a9505fef580a83c3be1745093ceadc155d7c9b93c9024e4d048df5a815281f8d86debc643b9a50069cd7c992d5e334121d0ba816
diff --git a/www-apps/grafana-bin/grafana-bin-12.1.10.ebuild b/www-apps/grafana-bin/grafana-bin-12.1.10.ebuild
deleted file mode 100644
index aec5fcec180c..000000000000
--- a/www-apps/grafana-bin/grafana-bin-12.1.10.ebuild
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit systemd
-
-MY_PN=${PN/-bin/}
-MY_PV=${PV/_beta/-beta}
-
-DESCRIPTION="Gorgeous metric viz, dashboards & editors for Graphite, InfluxDB & OpenTSDB"
-HOMEPAGE="https://grafana.org"
-SRC_URI="
-amd64? (
- https://dl.grafana.com/oss/release/grafana-${PV}.linux-amd64.tar.gz -> ${P}.amd64.tar.gz
-)
-arm64? (
- https://dl.grafana.com/oss/release/grafana-${PV}.linux-arm64.tar.gz -> ${P}.arm64.tar.gz
-)
-"
-S=${WORKDIR}/${MY_PN}-${MY_PV}
-
-LICENSE="AGPL-3"
-SLOT="0"
-KEYWORDS="-* ~amd64 ~arm64"
-RESTRICT="mirror"
-
-DEPEND="acct-group/grafana
- acct-user/grafana"
-RDEPEND="${DEPEND}
- media-libs/fontconfig"
-
-QA_PREBUILT="usr/bin/grafana*"
-QA_PRESTRIPPED=${QA_PREBUILT}
-
-src_install() {
- keepdir /etc/grafana
- insinto /etc/grafana
- newins "${S}"/conf/sample.ini grafana.ini
- rm "${S}"/conf/sample.ini || die
-
- # Frontend assets
- insinto /usr/share/${MY_PN}
- doins -r public conf
-
- dobin bin/grafana-cli
- dobin bin/grafana
- dobin bin/grafana-server
-
- newconfd "${FILESDIR}"/grafana-r1.confd grafana
- newinitd "${FILESDIR}"/grafana.initd2 grafana
- systemd_newunit "${FILESDIR}"/grafana.service grafana.service
-
- keepdir /var/{lib,log}/grafana
- keepdir /var/lib/grafana/{dashboards,plugins}
- fowners grafana:grafana /var/{lib,log}/grafana
- fowners grafana:grafana /var/lib/grafana/{dashboards,plugins}
- fperms 0750 /var/{lib,log}/grafana
- fperms 0750 /var/lib/grafana/{dashboards,plugins}
-}
-
-pkg_postinst() {
- if [[ -z "${REPLACING_VERSIONS}" ]]; then
- # This is a new installation
-
- elog "${PN} has built-in log rotation. Please see [log.file] section of"
- elog "/etc/grafana/grafana.ini for related settings."
- elog
- elog "You may add your own custom configuration for app-admin/logrotate if you"
- elog "wish to use external rotation of logs. In this case, you also need to make"
- elog "sure the built-in rotation is turned off."
- fi
-}
diff --git a/www-apps/grafana-bin/grafana-bin-12.2.10.ebuild b/www-apps/grafana-bin/grafana-bin-12.2.10.ebuild
deleted file mode 100644
index aec5fcec180c..000000000000
--- a/www-apps/grafana-bin/grafana-bin-12.2.10.ebuild
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit systemd
-
-MY_PN=${PN/-bin/}
-MY_PV=${PV/_beta/-beta}
-
-DESCRIPTION="Gorgeous metric viz, dashboards & editors for Graphite, InfluxDB & OpenTSDB"
-HOMEPAGE="https://grafana.org"
-SRC_URI="
-amd64? (
- https://dl.grafana.com/oss/release/grafana-${PV}.linux-amd64.tar.gz -> ${P}.amd64.tar.gz
-)
-arm64? (
- https://dl.grafana.com/oss/release/grafana-${PV}.linux-arm64.tar.gz -> ${P}.arm64.tar.gz
-)
-"
-S=${WORKDIR}/${MY_PN}-${MY_PV}
-
-LICENSE="AGPL-3"
-SLOT="0"
-KEYWORDS="-* ~amd64 ~arm64"
-RESTRICT="mirror"
-
-DEPEND="acct-group/grafana
- acct-user/grafana"
-RDEPEND="${DEPEND}
- media-libs/fontconfig"
-
-QA_PREBUILT="usr/bin/grafana*"
-QA_PRESTRIPPED=${QA_PREBUILT}
-
-src_install() {
- keepdir /etc/grafana
- insinto /etc/grafana
- newins "${S}"/conf/sample.ini grafana.ini
- rm "${S}"/conf/sample.ini || die
-
- # Frontend assets
- insinto /usr/share/${MY_PN}
- doins -r public conf
-
- dobin bin/grafana-cli
- dobin bin/grafana
- dobin bin/grafana-server
-
- newconfd "${FILESDIR}"/grafana-r1.confd grafana
- newinitd "${FILESDIR}"/grafana.initd2 grafana
- systemd_newunit "${FILESDIR}"/grafana.service grafana.service
-
- keepdir /var/{lib,log}/grafana
- keepdir /var/lib/grafana/{dashboards,plugins}
- fowners grafana:grafana /var/{lib,log}/grafana
- fowners grafana:grafana /var/lib/grafana/{dashboards,plugins}
- fperms 0750 /var/{lib,log}/grafana
- fperms 0750 /var/lib/grafana/{dashboards,plugins}
-}
-
-pkg_postinst() {
- if [[ -z "${REPLACING_VERSIONS}" ]]; then
- # This is a new installation
-
- elog "${PN} has built-in log rotation. Please see [log.file] section of"
- elog "/etc/grafana/grafana.ini for related settings."
- elog
- elog "You may add your own custom configuration for app-admin/logrotate if you"
- elog "wish to use external rotation of logs. In this case, you also need to make"
- elog "sure the built-in rotation is turned off."
- fi
-}
diff --git a/www-apps/grafana-bin/grafana-bin-12.4.0.ebuild b/www-apps/grafana-bin/grafana-bin-12.4.0.ebuild
deleted file mode 100644
index aec5fcec180c..000000000000
--- a/www-apps/grafana-bin/grafana-bin-12.4.0.ebuild
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit systemd
-
-MY_PN=${PN/-bin/}
-MY_PV=${PV/_beta/-beta}
-
-DESCRIPTION="Gorgeous metric viz, dashboards & editors for Graphite, InfluxDB & OpenTSDB"
-HOMEPAGE="https://grafana.org"
-SRC_URI="
-amd64? (
- https://dl.grafana.com/oss/release/grafana-${PV}.linux-amd64.tar.gz -> ${P}.amd64.tar.gz
-)
-arm64? (
- https://dl.grafana.com/oss/release/grafana-${PV}.linux-arm64.tar.gz -> ${P}.arm64.tar.gz
-)
-"
-S=${WORKDIR}/${MY_PN}-${MY_PV}
-
-LICENSE="AGPL-3"
-SLOT="0"
-KEYWORDS="-* ~amd64 ~arm64"
-RESTRICT="mirror"
-
-DEPEND="acct-group/grafana
- acct-user/grafana"
-RDEPEND="${DEPEND}
- media-libs/fontconfig"
-
-QA_PREBUILT="usr/bin/grafana*"
-QA_PRESTRIPPED=${QA_PREBUILT}
-
-src_install() {
- keepdir /etc/grafana
- insinto /etc/grafana
- newins "${S}"/conf/sample.ini grafana.ini
- rm "${S}"/conf/sample.ini || die
-
- # Frontend assets
- insinto /usr/share/${MY_PN}
- doins -r public conf
-
- dobin bin/grafana-cli
- dobin bin/grafana
- dobin bin/grafana-server
-
- newconfd "${FILESDIR}"/grafana-r1.confd grafana
- newinitd "${FILESDIR}"/grafana.initd2 grafana
- systemd_newunit "${FILESDIR}"/grafana.service grafana.service
-
- keepdir /var/{lib,log}/grafana
- keepdir /var/lib/grafana/{dashboards,plugins}
- fowners grafana:grafana /var/{lib,log}/grafana
- fowners grafana:grafana /var/lib/grafana/{dashboards,plugins}
- fperms 0750 /var/{lib,log}/grafana
- fperms 0750 /var/lib/grafana/{dashboards,plugins}
-}
-
-pkg_postinst() {
- if [[ -z "${REPLACING_VERSIONS}" ]]; then
- # This is a new installation
-
- elog "${PN} has built-in log rotation. Please see [log.file] section of"
- elog "/etc/grafana/grafana.ini for related settings."
- elog
- elog "You may add your own custom configuration for app-admin/logrotate if you"
- elog "wish to use external rotation of logs. In this case, you also need to make"
- elog "sure the built-in rotation is turned off."
- fi
-}
diff --git a/www-apps/grafana-bin/grafana-bin-12.4.11.ebuild b/www-apps/grafana-bin/grafana-bin-12.4.13.ebuild
index 041649aafa2a..041649aafa2a 100644
--- a/www-apps/grafana-bin/grafana-bin-12.4.11.ebuild
+++ b/www-apps/grafana-bin/grafana-bin-12.4.13.ebuild
diff --git a/www-apps/grafana-bin/grafana-bin-13.1.6.ebuild b/www-apps/grafana-bin/grafana-bin-13.1.8.ebuild
index 67b97cf6f568..67b97cf6f568 100644
--- a/www-apps/grafana-bin/grafana-bin-13.1.6.ebuild
+++ b/www-apps/grafana-bin/grafana-bin-13.1.8.ebuild
diff --git a/www-apps/grafana-bin/grafana-bin-13.2.2.ebuild b/www-apps/grafana-bin/grafana-bin-13.2.4.ebuild
index ccf099e3ffec..ccf099e3ffec 100644
--- a/www-apps/grafana-bin/grafana-bin-13.2.2.ebuild
+++ b/www-apps/grafana-bin/grafana-bin-13.2.4.ebuild
diff --git a/www-client/firefox/firefox-158.0.ebuild b/www-client/firefox/firefox-158.0.ebuild
index d29fa54d681a..8ddc5b227aeb 100644
--- a/www-client/firefox/firefox-158.0.ebuild
+++ b/www-client/firefox/firefox-158.0.ebuild
@@ -106,7 +106,7 @@ BDEPEND="${PYTHON_DEPS}
app-arch/unzip
app-arch/zip
>=dev-util/cbindgen-0.29.4
- net-libs/nodejs
+ net-libs/nodejs[ssl]
virtual/pkgconfig
amd64? ( >=dev-lang/nasm-2.14 )
x86? ( >=dev-lang/nasm-2.14 )
diff --git a/www-client/librewolf/librewolf-158.0_p1.ebuild b/www-client/librewolf/librewolf-158.0_p1.ebuild
index 57bc5489a6e0..59f73cc326fe 100644
--- a/www-client/librewolf/librewolf-158.0_p1.ebuild
+++ b/www-client/librewolf/librewolf-158.0_p1.ebuild
@@ -57,7 +57,7 @@ RESTRICT="
"
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-av1 system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx"
IUSE+=" system-pipewire system-png +system-webp test wayland wifi +X"
# Firefox-only IUSE
diff --git a/www-client/ungoogled-chromium/Manifest b/www-client/ungoogled-chromium/Manifest
index aad06995a217..5e08f79a6b43 100644
--- a/www-client/ungoogled-chromium/Manifest
+++ b/www-client/ungoogled-chromium/Manifest
@@ -1,6 +1,7 @@
DIST chromium-154.0.8037.57-linux.tar.xz 1929858224 BLAKE2B 76c0a1f7f5ce5b5dbb9d35426791186c74fc0a38e0b33d50e433e87cc1f845a49bc32252d9336a161b38b9b3c8056cdef4c5c240305433a68e9442bb542251cc SHA512 7c9e7bb2cf5072bf2dada3c42a2b6aabfec8360bfff546dd13fb3223e2d58d55b688d7bdda8603521615a4f3ed0c3cb973996bbbd4e9c6a59f2488d05c1e3aa5
DIST chromium-154.0.8037.92-linux.tar.xz 1929777968 BLAKE2B 1058fc666f44f3d14fff32ab0ad4e57a933636d661c6aa53c620216e5ba6672b31d4d27af956f0183dad09068d07ef991ffc6b6f67ea4eb8d81a075f6d68fbf4 SHA512 bcd1557421e1d81df77530f53031bc3cc55fe318e6a35f187fc9b3e78583dd4af8316d880be688271bf326b531a20810601095798deff0f11d5d7654e57e657e
DIST chromium-154.0.8037.97-linux.tar.xz 1929902700 BLAKE2B a72ba0c8eee9816513ce64d5b569313f73bbcd9b2e55e4be3f4d4a10507cfac1ac3dccb6c61272235b146bc3a895324345efe6b83881b98b947bda50a3c36881 SHA512 a2d441e02e31629b70d8cb2c6e4cb6bae9fbcaf19483469c7e320d6fdfb5e3da57e7dbee396cf0bf5b36db78d422b0ac019d4570cd39050d4d68d7c584786f83
+DIST chromium-155.0.8059.79-linux.tar.xz 2021153524 BLAKE2B abdfd55d48d15f7a2401cff42f99d204f96ac7f7e53514fbcfc06fd97472c9015e482903b04ba8741a923fb6e7893189b367fcfb1e85d8277395cd50b21242a7 SHA512 53beb585dec4e5549d546f8344a645f0503d40e6e4e96356249c68308de0481dff50d198afc28c48a87735b476802db0d5cfd10815db22b72fc65d648aa31b20
DIST chromium-cf94ed446320d35c8613ed9b3ffb6e6a61bfcb5f.patch 9972 BLAKE2B 72d3b755214a8cc0299129c645b938746a2e4dff31cc9aa154019ebaf5c29d5ce9a8378dbecbf0455f253c5e10b83dbfd03a10573d8fa93992f2d6ac965a2b1f SHA512 62ffd3162a0c1aa4be51d3ead238b3a84463f8c6d55b9aad5806bcb23dfb2b832ad6aec7f348690c4b3aaf430260352ca558e791ca611d5e791e6b3eadcffcf1
DIST chromium-clang-llvmorg-23-init-19482-g53d18800-1.tar.xz 59093892 BLAKE2B faf8c5011b0271903a9a09a4539002088030eac34ac01c4b84581a556f761f89eac035feda5b97be350679325968db99face036c201972b01dd081ced3468edc SHA512 5d88f1ed4901c80963b6740c9b15a28c33db397f8bf31503502b00caff172e17d37f7b946da31162e04794fee763e0b7456a9fc476827c8a19cdd1e737b9b68a
DIST chromium-openpower-7aae8a84e3.tar.bz2 441026 BLAKE2B efceb75ba53899388398a4564ef29c9fe66427e160a3e7f3375fd3eec8d1ffef335ca14865c11510e9c3719daab11dfb0954ed4a7b847dee602773d51f5e1e0f SHA512 cbe75ae78226b784904a263f7eb01e44faab71efb4a35ca46ff551ff17c0c5f1cdd8f839313ad3bb678b6ca56e4d95899f7802a548ffe7bb90582d9df5614c21
@@ -13,3 +14,4 @@ DIST rollup-wasm-node-4.57.1.tgz 792515 BLAKE2B 52fa9c4b65f3e20149c66fdd44b3c2a8
DIST ungoogled-chromium-154.0.8037.57-1.tar.gz 678563 BLAKE2B 954fef8c4d82f850c9b7f6fa1b1fdce8b5989d94eee1a9702ee5fc57e4675d8c835d0b4b4cc32a7fb3feddb717f95b473db61587c8bf3dfacff7ffeedf863404 SHA512 74b64e3586966730259d468874c9368d7d309007bfd2861076eef1cc5a858e790166c78472e42c32ed6adef1aa1deec7012af53289fc1c78c56aa43cd08e71e6
DIST ungoogled-chromium-154.0.8037.92-1.tar.gz 678526 BLAKE2B cd14264bb37e277a06c54176ff7a82711e67de04ee6dc8350856c07b8c73465169809cb4e48932d7ff1cbf77d27aae97bf1caf093e713eae37f5ca3931a4c92f SHA512 3e13c0b4c64be5c96ea2ab9d78af5108f84c4de4d3911ee0b6d919f4b88b11e02cc1c1980c43d1f742ab443a235da35d473b77ecf51c2bac3e7f54605601116c
DIST ungoogled-chromium-154.0.8037.97-1.tar.gz 678518 BLAKE2B 075e345ada027aed58ac3c5ac6bdc9928bbc3989f6741d4f30615459ca75f2e6c4ae6379911a2bb52392f4446b3b90f2eeb1d40527e128579f3b25141a9c47bb SHA512 dfdc053b0fc47261c37755d6b25d08bfd979e1b8eb42f2c3f8ffbccfd614dddd85187f2fc3d896722a2b61ec449278f43c9ed89abf98416303de4abb0191cd62
+DIST ungoogled-chromium-9f145d8815e6e50cc4a2537fcac40966d911e027.tar.gz 677677 BLAKE2B c85b97e545b430adcf904a5aa00f88a61f2c13b575a9411745e3473676c19c0ebe7c53978a608961b35cdf66ad40c6dc35748fedd1a28e2ca476c92a416d80c0 SHA512 3cb0eea5eda99919e26e0a12ca8de5afba687be7b6abed3dbdfeb943928b7178a0f04d4e6aa57e29cee98e14cc54353e6192cd7212cfc691ed0403b289b1057a
diff --git a/www-client/ungoogled-chromium/ungoogled-chromium-155.0.8059.79_p1.ebuild b/www-client/ungoogled-chromium/ungoogled-chromium-155.0.8059.79_p1.ebuild
new file mode 100644
index 000000000000..355ab6cc3580
--- /dev/null
+++ b/www-client/ungoogled-chromium/ungoogled-chromium-155.0.8059.79_p1.ebuild
@@ -0,0 +1,2714 @@
+# Copyright 2009-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Use following environment variables to customise the build
+# EXTRA_GN — pass extra options to gn
+# NINJAOPTS="-k0 -j8" useful to populate ccache even if ebuild is still failing
+# UGC_SKIP_PATCHES — space-separated list of patches to skip
+# UGC_KEEP_BINARIES — space-separated list of binaries to keep
+# UGC_SKIP_SUBSTITUTION — space-separated list of files to skip domain substitution
+
+# USE=bundled-toolchain is intended for users who want to use the same toolchain
+# as the upstream releases. It's also a good fallback in case we fall behind
+# and need to get a release out quickly (less likely with `dev` in-tree).
+# We can't rely on it as a default since the toolchain is only shipped for x86-64;
+# other architectures will need to use system toolchain.
+
+# Since m133 we are using CI-generated tarballs from
+# https://github.com/chromium-linux-tarballs/chromium-tarballs/
+
+# These are bit-for-bit identical to the official releases, but are built
+# using an external CI system that we have some control over, in case
+# issues pop up again with official tarball generation.
+
+GN_MIN_VER=0.2374
+# chromium-tools/get-chromium-toolchain-strings.py (or just use Chromicler)
+# Node for M145+ should be 24.12.0 but that's not packaged in Gentoo yet. See #969145
+TEST_FONT="9c07d19d9c5ee1ff94f717e6fb17e0c8c354e6f9"
+BUNDLED_CLANG_VER="llvmorg-23-init-19482-g53d18800-1"
+BUNDLED_RUST_VER="b998449636a48e2c4a362809085b600a0174e1f2-2"
+RUST_SHORT_HASH=${BUNDLED_RUST_VER:0:10}-${BUNDLED_RUST_VER##*-}
+NODE_VER="24.12.0"
+GO_MIN_VER="1.25.0"
+ESBUILD_VER="0.25.1"
+ROLLUP_VER="4.57.1" # currently manual.
+
+CHROMIUM_LANGS="af am ar as az be bg bn bs ca cs cy da de el en-GB es es-419 et eu fa fi fil
+ fr fr-CA gl gu he hi hr hu hy id is it ja ka kk km kn ko ky lo lt lv mk ml mn mr ms my
+ nb ne nl or pa pl pt-BR pt-PT ro ru si sk sl sq sr sr-Latn sv sw ta te th tr uk ur uz
+ vi zh-CN zh-HK zh-TW zu"
+
+UGC_COMMIT_ID="9f145d8815e6e50cc4a2537fcac40966d911e027"
+# UGC_PR_COMMITS=(
+# c917e096342e5b90eeea91ab1f8516447c8756cf
+# 5794e9d12bf82620d5f24505798fecb45ca5a22d
+# )
+
+CROMITE_COMMIT_ID="a44e28b8992c99aae7e67478bcdb81b13a724812"
+
+declare -A CHROMIUM_COMMITS=(
+ # ["27f8690db999f6e56f0af7a9ea3d28a019ed72ca"]="." #152+
+ ["-cf94ed446320d35c8613ed9b3ffb6e6a61bfcb5f"]="." # ffmpeg 9
+ # ["-bf6be9310a07b981edf81e0ac9b89dead09be35c"]="." # ffmpeg 9
+ # ["-c72c7b0971e3e31974b0adea0dac42278e22e3b0"]="third_party/devtools-frontend/src" # need gn >= 2459
+# # ["-37c28a19804e47a68eabf3cf882a310689fc325b"]="." #disable style check for cromite
+# # ["cd5a0df905a28faa89ff2a4ab44f893f84dc4487"]="net/third_party/quiche/src"
+)
+
+LLVM_COMPAT=( 21 22 23 )
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="xml(+)"
+RUST_MIN_VER=1.91.0
+RUST_NEEDS_LLVM="yes please"
+RUST_OPTIONAL="yes" # Not actually optional, but we don't need system Rust (or LLVM) with USE=bundled-toolchain
+RUST_REQ_USE="rustfmt" # Upstream run rustfmt on bindgen output, so we need it to be available.
+
+GC_SOLUTION_URI="https://chromium.googlesource.com/chromium/src"
+GC_CHECKOUT_DIR="${WORKDIR}"
+
+inherit check-reqs chromium-2 desktop flag-o-matic llvm-r1 multiprocessing ninja-utils pax-utils
+inherit python-any-r1 readme.gentoo-r1 rust systemd toolchain-funcs xdg-utils gclient-r1
+
+DESCRIPTION="Modifications to Chromium for removing Google integration and enhancing privacy"
+HOMEPAGE="https://github.com/ungoogled-software/ungoogled-chromium"
+PPC64_HASH="7aae8a84e327fc2078ce1625c9c70bfda77d626f"
+PATCH_V="152"
+# PATCH_V="${PV%%\.*}"
+COPIUM_COMMIT="3c7e56fb4523b43b47595bb3a22f77178fc76293"
+SRC_URI="!gclient? ( https://github.com/chromium-linux-tarballs/chromium-tarballs/releases/download/${PV/_*}/chromium-${PV/_*}-linux.tar.xz )
+ https://deps.gentoo.zip/www-client/chromium/rollup-wasm-node-${ROLLUP_VER}.tgz
+ https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/${PATCH_V}/chromium-patches-${PATCH_V}.tar.bz2
+ !bundled-toolchain? (
+ https://codeberg.org/selfisekai/copium/archive/${COPIUM_COMMIT}.tar.gz
+ -> chromium-patches-copium-${COPIUM_COMMIT:0:10}.tar.gz
+ )
+ bundled-toolchain? (
+ https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/clang-${BUNDLED_CLANG_VER}.tar.xz
+ -> chromium-clang-${BUNDLED_CLANG_VER}.tar.xz
+ https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/rust-toolchain-${BUNDLED_RUST_VER}-${BUNDLED_CLANG_VER%-*}.tar.xz
+ -> chromium-rust-toolchain-${RUST_SHORT_HASH}-${BUNDLED_CLANG_VER%-*}.tar.xz
+ )
+ test? (
+ https://chromium-fonts.storage.googleapis.com/${TEST_FONT} -> chromium-testfonts-${TEST_FONT:0:10}.tar.gz
+ )
+ ppc64? (
+ https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches/-/archive/${PPC64_HASH}/openpower-patches-${PPC64_HASH}.tar.bz2 -> chromium-openpower-${PPC64_HASH:0:10}.tar.bz2
+ )
+"
+
+# Gentoo tarball:
+# https://chromium-tarballs.distfiles.gentoo.org/chromium-${PV/_*}.tar.xz -> chromium-${PV/_*}-gentoo.tar.xz
+
+# chromium-linux-tarballs
+# https://github.com/chromium-linux-tarballs/chromium-tarballs/releases/download/${PV/_*}/chromium-${PV/_*}-linux.tar.xz
+
+# Official tarball:
+# https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${PV/_*}-lite.tar.xz
+
+# https://gitweb.gentoo.org/proj/chromium-tools.git/tree/get-chromium-licences.py @ 145.0.7632.76
+LICENSE="Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD BSD-2 Base64 Boost-1.0 CC-BY-3.0 CC-BY-4.0 Clear-BSD FFT2D FTL"
+LICENSE+=" IJG ISC LGPL-2 LGPL-2.1 MIT MPL-1.1 MPL-2.0 Ms-PL PSF-2 SGI-B-2.0 SSLeay SunSoft Unicode-3.0"
+LICENSE+=" Unicode-DFS-2015 Unlicense UoI-NCSA ZLIB libtiff openssl"
+LICENSE+=" cromite? ( GPL-3 )"
+
+SLOT="beta"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+IUSE_SYSTEM_LIBS="abseil-cpp av1 brotli crc32c double-conversion ffmpeg +harfbuzz icu jsoncpp +libusb libvpx +openh264 openjpeg re2 snappy woff2 +zstd"
+IUSE="+X bindist bluetooth bundled-toolchain cfi convert-dict cups custom-cflags debug ffmpeg-chromium enable-driver gtk4 hangouts headless kerberos +libcxx nvidia +official optimize-thinlto optimize-webui override-data-dir pax-kernel pgo"
+IUSE+=" +proprietary-codecs pulseaudio qt6 screencast selinux test thinlto cromite gclient vaapi wayland widevine cpu_flags_ppc_vsx3"
+RESTRICT="
+ !bindist? ( bindist )
+ !test? ( test )
+ arm64? ( test )
+ !system-ffmpeg? ( proprietary-codecs? ( bindist ) )
+ !system-openh264? ( bindist )
+ cromite? ( bindist )"
+
+REQUIRED_USE="
+ !headless? ( || ( X wayland ) )
+ screencast? ( wayland )
+ ffmpeg-chromium? ( bindist proprietary-codecs )
+ optimize-thinlto? ( thinlto )
+ cfi? ( thinlto )
+ x86? ( !thinlto !widevine )
+ debug? ( !official )
+ vaapi? ( !system-av1 !system-libvpx )
+"
+
+GC_REVISION="${PV/_*}"
+GC_DEPS_ACTIONS=1
+GC_EXTRA_FLAGS="--ignore-dep-type cipd"
+GC_CUSTOM_VARS="checkout_configuration=\"small\" checkout_x64=False checkout_x86=False rust_force_head_revision=True llvm_force_head_revision=True"
+GC_SKIP_DEPS_ACTIONS="rust_tot clang_tot"
+GC_CUSTOM_DEPS="
+ src/third_party/crossbench-web-tests=None
+ src/third_party/angle/third_party/VK-GL-CTS/src=None
+"
+PROPERTIES+=" gclient? ( live )"
+
+UGC_PV="${PV/_p/-}"
+UGC_PF="${PN}-${UGC_PV}"
+UGC_URL="https://github.com/ungoogled-software/${PN}/archive/"
+
+if [ -z "$UGC_COMMIT_ID" ]; then
+ UGC_URL="${UGC_URL}${UGC_PV}.tar.gz -> ${UGC_PF}.tar.gz"
+ UGC_WD="${WORKDIR}/${UGC_PF}"
+else
+ UGC_URL="${UGC_URL}${UGC_COMMIT_ID}.tar.gz -> ${PN}-${UGC_COMMIT_ID}.tar.gz"
+ UGC_WD="${WORKDIR}/ungoogled-chromium-${UGC_COMMIT_ID}"
+fi
+
+SRC_URI+="${UGC_URL}
+"
+
+if [ ! -z "${UGC_PR_COMMITS[*]}" ]; then
+ for i in "${UGC_PR_COMMITS[@]}"; do
+ SRC_URI+="https://github.com/ungoogled-software/${PN}/commit/$i.patch?full_index=true -> ${PN}-$i.patch
+ "
+ done
+fi
+
+if [ ! -z "${CHROMIUM_COMMITS[*]}" ]; then
+ # for i in "${CHROMIUM_COMMITS[@]}"; do
+ for i in "${!CHROMIUM_COMMITS[@]}"; do
+ if [[ ${CHROMIUM_COMMITS[$i]} =~ webrtc ]]; then
+ #TODO: is it safe to use this mirror?
+ SRC_URI+="https://github.com/webrtc-mirror/webrtc/commit/${i/-}.patch?full_index=true -> webrtc-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ angle ]]; then
+ SRC_URI+="https://github.com/google/angle/commit/${i/-}.patch?full_index=true -> angle-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ quiche ]]; then
+ SRC_URI+="https://github.com/google/quiche/commit/${i/-}.patch?full_index=true -> quiche-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ dawn ]]; then
+ SRC_URI+="https://github.com/google/dawn/commit/${i/-}.patch?full_index=true -> dawn-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ perfetto ]]; then
+ SRC_URI+="https://github.com/google/perfetto/commit/${i/-}.patch?full_index=true -> perfetto-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ ink ]]; then
+ SRC_URI+="https://github.com/google/ink/commit/${i/-}.patch?full_index=true -> ink-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ vulkan-utility-libraries ]]; then
+ SRC_URI+="https://github.com/KhronosGroup/Vulkan-Utility-Libraries/commit/${i/-}.patch?full_index=true -> vulkan-utility-libraries-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ ruy ]]; then
+ SRC_URI+="https://github.com/google/ruy/commit/${i/-}.patch?full_index=true -> ruy-${i/-}.patch
+ "
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ devtools-frontend ]]; then
+ SRC_URI+="https://github.com/ChromeDevTools/devtools-frontend/commit/${i/-}.patch?full_index=true -> devtools-frontend-${i/-}.patch
+ "
+ else
+ SRC_URI+="https://github.com/chromium/chromium/commit/${i/-}.patch?full_index=true -> chromium-${i/-}.patch
+ "
+ fi
+ done
+fi
+
+SRC_URI+="cromite? ( https://github.com/uazo/cromite/archive/${CROMITE_COMMIT_ID}.tar.gz -> cromite-${CROMITE_COMMIT_ID}.tar.gz )
+"
+
+for i in ${IUSE_SYSTEM_LIBS}; do
+ [[ $i =~ ^(\+)?(.*)$ ]]
+ IUSE+=" ${BASH_REMATCH[1]}system-${BASH_REMATCH[2]}"
+done
+
+COMMON_X_DEPEND="
+ x11-libs/libXcomposite:=
+ x11-libs/libXcursor:=
+ x11-libs/libXdamage:=
+ x11-libs/libXfixes:=
+ >=x11-libs/libXi-1.6.0:=
+ x11-libs/libXrandr:=
+ x11-libs/libXrender:=
+ x11-libs/libXtst:=
+ x11-libs/libxshmfence:=
+"
+
+# sys-libs/zlib: https://bugs.gentoo.org/930365; -ng is not compatible.
+# We _could_ use the bundled minizip, but that's against policy.
+COMMON_SNAPSHOT_DEPEND="
+ system-icu? ( >=dev-libs/icu-78:= )
+ system-abseil-cpp? ( >=dev-cpp/abseil-cpp-20260107.0 )
+ system-brotli? ( >=app-arch/brotli-9999 )
+ system-crc32c? ( dev-libs/crc32c )
+ system-double-conversion? ( dev-libs/double-conversion )
+ system-woff2? ( media-libs/woff2 )
+ system-snappy? ( app-arch/snappy )
+ system-jsoncpp? ( dev-libs/jsoncpp )
+ system-openjpeg? ( media-libs/openjpeg:2= )
+ system-re2? ( >=dev-libs/re2-0.2019.08.01:= )
+ system-libvpx? ( >=media-libs/libvpx-1.13.0:=[postproc] )
+ system-libusb? ( virtual/libusb:1 )
+ cromite? ( dev-util/patchutils )
+ >=dev-libs/libxml2-2.12.4:=[icu]
+ dev-libs/nspr:=
+ >=dev-libs/nss-3.26:=
+ dev-libs/libxslt:=
+ media-libs/fontconfig:=
+ >=media-libs/freetype-2.11.0-r1:=
+ system-harfbuzz? ( >=media-libs/harfbuzz-3:0=[icu(-)] )
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ system-zstd? ( >=app-arch/zstd-1.5.5:= )
+ >=media-libs/libwebp-0.4.0:=
+ media-libs/mesa:=[gbm(+)]
+ >=media-libs/openh264-2.6.0:=
+ system-av1? (
+ >=media-libs/dav1d-1.0.0:=
+ >=media-libs/libaom-3.7.0:=
+ )
+ sys-libs/zlib:=
+ !headless? (
+ dev-libs/glib:2
+ >=media-libs/alsa-lib-1.0.19:=
+ media-video/pipewire:=
+ pulseaudio? (
+ || (
+ media-libs/libpulse
+ >=media-sound/apulse-0.1.9
+ )
+ )
+ sys-apps/pciutils:=
+ kerberos? ( virtual/krb5 )
+ vaapi? ( >=media-libs/libva-2.7:=[X?,wayland?] )
+ X? (
+ x11-base/xorg-proto:=
+ x11-libs/libX11:=
+ x11-libs/libxcb:=
+ x11-libs/libXext:=
+ )
+ x11-libs/libxkbcommon:=
+ wayland? (
+ screencast? ( media-video/pipewire:= )
+ dev-libs/libffi:=
+ dev-libs/wayland:=
+ screencast? (
+ media-video/pipewire:=
+ || (
+ sys-apps/xdg-desktop-portal-gnome
+ sys-apps/xdg-desktop-portal-gtk
+ kde-plasma/xdg-desktop-portal-kde
+ gui-libs/xdg-desktop-portal-lxqt
+ gui-libs/xdg-desktop-portal-wlr
+ )
+ )
+ )
+ )
+"
+
+COMMON_DEPEND="
+ ${COMMON_SNAPSHOT_DEPEND}
+ app-arch/bzip2:=
+ dev-libs/expat:=
+ system-ffmpeg? (
+ >=media-video/ffmpeg-6.1:=
+ >=media-libs/opus-1.3.1:=
+ )
+ net-misc/curl[ssl]
+ sys-apps/dbus:=
+ media-libs/flac:=
+ sys-libs/zlib:=[minizip]
+ !headless? (
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ media-libs/mesa:=[X?,wayland?]
+ virtual/udev
+ x11-libs/cairo:=
+ x11-libs/gdk-pixbuf:2
+ x11-libs/pango:=
+ cups? ( >=net-print/cups-1.3.11:= )
+ qt6? ( dev-qt/qtbase:6[gui,widgets] )
+ X? ( ${COMMON_X_DEPEND} )
+ )
+"
+RDEPEND="${COMMON_DEPEND}
+ !www-client/ungoogled-chromium:0
+ >=www-client/chromium-common-2
+ !headless? (
+ || (
+ x11-libs/gtk+:3[X?,wayland?]
+ gui-libs/gtk:4[X?,wayland?]
+ )
+ qt6? ( dev-qt/qtbase:6[X?,wayland?] )
+ )
+ virtual/ttf-fonts
+ selinux? ( sec-policy/selinux-chromium )
+ bindist? (
+ ffmpeg-chromium? ( media-video/ffmpeg-chromium:${PV%%\.*} )
+ )
+ !override-data-dir? (
+ !www-client/chromium:${SLOT}
+ !www-client/cromite-bin
+ !www-client/cromite:${SLOT}[-override-data-dir]
+ )
+"
+# For M149+ pipewire is a mandatory build-time dependency, but it's optional at runtime for most configurations.
+DEPEND="${COMMON_DEPEND}
+ !headless? (
+ media-video/pipewire
+ gtk4? ( gui-libs/gtk:4[X?,wayland?] )
+ !gtk4? ( x11-libs/gtk+:3[X?,wayland?] )
+ )
+"
+
+ # pgo? ( >=llvm-core/clang-22.0.0_pre20260106 >=llvm-core/lld-22.0.0_pre20260106 )
+BDEPEND="
+ ${COMMON_SNAPSHOT_DEPEND}
+ ${PYTHON_DEPS}
+ $(python_gen_any_dep '
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ')
+ >=app-arch/gzip-1.7
+ !headless? (
+ qt6? ( dev-qt/qtbase:6 )
+ )
+ !bundled-toolchain? ( $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}
+ llvm-core/llvm:${LLVM_SLOT}
+ llvm-core/lld:${LLVM_SLOT}
+ cfi? ( llvm-runtimes/clang-runtime:${LLVM_SLOT}[sanitize] )
+ official? (
+ !ppc64? ( llvm-runtimes/compiler-rt-sanitizers:${LLVM_SLOT}[cfi] )
+ ) ')
+ ${RUST_DEPEND}
+ )
+ >=dev-util/bindgen-0.72.1
+ >=dev-build/gn-${GN_MIN_VER}
+ >=dev-lang/go-${GO_MIN_VER}
+ dev-lang/typescript
+ app-alternatives/ninja
+ dev-lang/perl
+ >=dev-util/gperf-3.2
+ dev-util/esbuild:${ESBUILD_VER}
+ dev-vcs/git
+ >=net-libs/nodejs-${NODE_VER}[inspector]
+ sys-apps/hwdata
+ >=sys-devel/bison-2.4.3
+ sys-devel/flex
+ virtual/pkgconfig
+ x11-misc/xdg-utils
+ gclient? ( $(gclient_gen_dep) )
+"
+
+if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then
+ EBUILD_DEATH_HOOKS+=" chromium_pkg_die";
+fi
+
+DISABLE_AUTOFORMATTING="yes"
+DOC_CONTENTS="
+Some web pages may require additional fonts to display properly.
+Try installing some of the following packages if some characters
+are not displayed properly:
+- media-fonts/arphicfonts
+- media-fonts/droid
+- media-fonts/ipamonafont
+- media-fonts/noto
+- media-fonts/ja-ipafonts
+- media-fonts/takao-fonts
+- media-fonts/wqy-microhei
+- media-fonts/wqy-zenhei
+
+To fix broken icons on the Downloads page, you should install an icon
+theme that covers the appropriate MIME types, and configure this as your
+GTK+ icon theme.
+
+For native file dialogs in KDE, install kde-apps/kdialog.
+
+To make password storage work with your desktop environment you may
+have install one of the supported credentials management applications:
+- app-crypt/libsecret (GNOME)
+- kde-frameworks/kwallet (KDE)
+If you have one of above packages installed, but don't want to use
+them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS
+in /etc/chromium/default.
+"
+
+# the gclient solution is checked out to ${WORKDIR}/src, while the
+# source tarball extracts to ${WORKDIR}/chromium-${PV/_*}
+if [[ " ${USE-} " == *" gclient "* ]]; then
+ S="${GC_SOLUTION_DIR}"
+else
+ S="${WORKDIR}/chromium-${PV/_*}"
+fi
+
+python_check_deps() {
+ python_has_version "dev-python/setuptools[${PYTHON_USEDEP}]"
+}
+
+pre_build_checks() {
+ # Check build requirements: bugs #471810, #541816, #914220
+ # We're going to start doing maths here on the size of an unpacked source tarball,
+ # this should make updates easier as chromium continues to balloon in size.
+ # xz -l /var/cache/distfiles/chromium-${PV}*.tar.xz
+ local base_disk=9 # Round up
+ use test && base_disk=$((base_disk + 5))
+ local extra_disk=1 # Always include a little extra space
+ local memory=4
+ tc-is-cross-compiler && extra_disk=$((extra_disk * 2))
+ if tc-is-lto || use pgo; then
+ memory=$((memory * 2 + 1))
+ tc-is-cross-compiler && extra_disk=$((extra_disk * 2)) # Double the requirements
+ use pgo && extra_disk=$((extra_disk + 4))
+ fi
+ if is-flagq '-g?(gdb)?([1-9])'; then
+ if use custom-cflags; then
+ extra_disk=$((extra_disk + 5))
+ fi
+ memory=$((memory * 2))
+ fi
+ local CHECKREQS_MEMORY="${memory}G"
+ local CHECKREQS_DISK_BUILD="$((base_disk + extra_disk))G"
+ check-reqs_${EBUILD_PHASE_FUNC}
+}
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ # The pre_build_checks are all about compilation resources, no need to run it for a binpkg
+ pre_build_checks
+ fi
+
+ if use headless; then
+ local headless_unused_flags=("cups" "kerberos" "pulseaudio" "qt6" "vaapi" "wayland")
+ for myiuse in ${headless_unused_flags[@]}; do
+ use ${myiuse} && ewarn "Ignoring USE=${myiuse}, USE=headless is set."
+ done
+ fi
+
+ if ! use bindist && use ffmpeg-chromium; then
+ ewarn "Ignoring USE=ffmpeg-chromium, USE=bindist is not set."
+ fi
+ if use libcxx; then
+ ewarn
+ ewarn "Building with libcxx, please be aware that system-*"
+ ewarn "and some other c++ dependencies need to be compiled"
+ ewarn "with the same c++ library as ungoogled-chromium itself"
+ ewarn "dev-libs/jsoncpp is most problematic, see #58 #49 #119 for details"
+ ewarn "Simplest solution would be to disable corresponding system-* flags"
+ ewarn
+ fi
+ if use cfi; then
+ ewarn
+ ewarn "Building with cfi is only possible if building with -stdlib=libc++"
+ ewarn "Make sure all dependencies are also built this way, see #40"
+ ewarn
+ fi
+ if use cromite; then
+ ewarn
+ ewarn "Cromite patches are very experimental and unstable"
+ ewarn "Please consider testing them and giving feedback upstream:"
+ ewarn "https://github.com/uazo/cromite/issues"
+ ewarn "Not all patches are applied, let me know if others should be considered too"
+ ewarn
+ fi
+ if use pgo; then
+ eerror
+ eerror "pgo requires llvm slot 23, but there is no corresponding rust slot yet"
+ eerror
+ if [ -z "${NODIE}" ]; then
+ die "Build will fail with pgo"
+ fi
+ fi
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ # The pre_build_checks are all about compilation resources, no need to run it for a binpkg
+ pre_build_checks
+
+ # We haven't massaged any CFLAGS yet, so we want to do this before we force CC/CXX to prevent warnings.
+ local want_lto="false"
+ tc-is-lto && want_lto="true"
+
+ # The linux:unbundle toolchain in GN grabs CC, CXX, CPP (etc) from the environment
+ # We'll set these to clang here then use llvm-utils functions to very explicitly set these
+ # to a sane value.
+ # This is effectively the 'force-clang' path if GCC support is re-added.
+ if use !bundled-toolchain; then
+ llvm-r1_pkg_setup
+ rust_pkg_setup
+
+ if tc-ld-is-mold; then
+ ewarn "Mold is currently not supported, it will not be used"
+ fi
+
+ # Forcing clang; respect llvm_slot_x to enable selection of impl via LLVM_COMPAT
+ AR=llvm-ar
+ CPP="${CHOST}-clang++-${LLVM_SLOT} -E"
+ NM=llvm-nm
+ CC="${CHOST}-clang-${LLVM_SLOT}"
+ CXX="${CHOST}-clang++-${LLVM_SLOT}"
+ fi
+
+ # LTO in Chromium means LLVM ThinLTO, if GCC support is re-added
+ # We'll need to handle that here too.
+ use_lto="false"
+ local lto_usable="true"
+ if [[ "$want_lto" == "true" ]]; then
+ if use arm64 && [[ "${LLVM_SLOT}" -lt 22 ]]; then
+ einfo "LTO is broken with LLVM 21 on arm64, ignoring CFLAGS."
+ lto_usable="false"
+ else
+ use_lto="true"
+ fi
+ # We can rely on GN to do this for us; without this builds
+ # take significantly longer with LTO enabled.
+ filter-lto
+ fi
+
+ if [[ "$use_lto" == "false" ]] && use official && [[ "$lto_usable" == "true" ]]; then
+ einfo "USE=official selected and LTO not detected."
+ einfo "It is _highly_ recommended that LTO be enabled for performance reasons"
+ einfo "and to be consistent with the upstream \"official\" build optimisations."
+ fi
+
+ if [[ "$use_lto" == "false" ]] && use test; then
+ die "Tests require CFI which requires LTO"
+ fi
+
+ export use_lto
+
+ if tc-is-cross-compiler; then
+ use pgo && die "The pgo USE flag cannot be used when cross-compiling"
+ CPP="${CBUILD}-clang++-${LLVM_SLOT} -E"
+ fi
+
+ # Sanity checks for development convenience
+ if ver_test $(gn --version || die) -lt ${GN_MIN_VER}; then
+ die "dev-build/gn >= ${GN_MIN_VER} is required to build this Chromium"
+ fi
+
+ # Sometimes, when adding a new LLVM slot, devs (me) forget to install an appropriate lld.
+ if tc-ld-is-lld; then
+ local lld_ver=$(ld.lld --version | awk '{split($2,a,"."); print a[1]}' || die "Failed to check lld version")
+ if [[ ${lld_ver} -lt ${LLVM_SLOT} ]]; then
+ die "Your lld version (${lld_ver}) is too old for the selected LLVM slot (${LLVM_SLOT}). Please install a newer lld or select an older LLVM slot."
+ fi
+ fi
+ fi
+
+ chromium_suid_sandbox_check_kernel_config
+}
+
+src_unpack() {
+ # # Here be dragons!
+ # local XCLD="--exclude=chromium-${PV/_*}/third_party/instrumented_libs \
+ # --exclude=chromium-${PV/_*}/third_party/llvm \
+ # --exclude=chromium-${PV/_*}/third_party/llvm-build \
+ # --exclude=chromium-${PV/_*}/third_party/node/linux \
+ # --exclude=chromium-${PV/_*}/third_party/rust-src \
+ # --exclude=chromium-${PV/_*}/third_party/rust-toolchain \
+ # --exclude=chromium-${PV/_*}/build/linux/debian_bullseye_i386-sysroot \
+ # --exclude=chromium-${PV/_*}/build/linux/debian_bullseye_amd64-sysroot \
+ # --exclude=chromium-${PV/_*}/third_party/angle/third_party/VK-GL-CTS \
+ # "
+
+ # if ! use libcxx ; then
+ # XCLD+=" --exclude=chromium-${PV/_*}/third_party/libc++"
+ # fi
+
+ # if ! use pgo ; then
+ # XCLD+=" --exclude=chromium-${PV/_*}/chrome/build/pgo_profiles"
+ # fi
+
+ # einfo "Unpacking chromium-${PV/_*}.tar.xz to ${WORKDIR}"
+ # # Gentoo tarball:
+ # # tar ${XCLD} -xf "${DISTDIR}/chromium-${PV/_*}-gentoo.tar.xz" -C "${WORKDIR}" || die
+ # tar ${XCLD} -xf "${DISTDIR}/chromium-${PV/_*}${LITE_TARBALL:+-lite}.tar.xz" -C "${WORKDIR}" || die
+
+ # unpack ${UGC_URL#*->}
+ # # unpack chromium-patches-${PATCH_V}.tar.bz2
+ # # Warned you!
+
+ if use gclient; then
+ # populates the git mirror cache in GCLIENT_STORE_DIR and checks
+ # out the sources to ${GC_SOLUTION_DIR} (= ${S})
+ gclient-r1_src_unpack
+ else
+ unpack chromium-${PV/_*}-linux.tar.xz
+ # unpack chromium-${PV/_*}-lite.tar.xz
+ fi
+ unpack chromium-patches-${PATCH_V}.tar.bz2
+ # These should only be required when we're not using the official toolchain
+ if use !bundled-toolchain; then
+ unpack chromium-patches-copium-${COPIUM_COMMIT:0:10}.tar.gz
+ fi
+
+ if use test; then
+ # This just contains a bunch of font files that need to be unpacked (or moved) to the correct location.
+ local testfonts_dir="${WORKDIR}/chromium-${PV/_*}/third_party/test_fonts/test_fonts"
+ local testfonts_tar="${DISTDIR}/chromium-testfonts-${TEST_FONT:0:10}.tar.gz"
+ einfo "Unpacking test fonts ..."
+ tar xf "${testfonts_tar}" -C "${testfonts_dir}" || die "Failed to unpack testfonts"
+ fi
+
+ # We need to manually unpack this since M126 else we'd unpack one toolchain over the other.
+ # Since we're doing that anyway let's unpack to sensible locations to make symlink creation easier.
+ if use bundled-toolchain; then
+ einfo "Unpacking bundled Clang ..."
+ mkdir -p "${WORKDIR}"/clang || die "Failed to create clang directory"
+ tar xf "${DISTDIR}/chromium-clang-${BUNDLED_CLANG_VER}.tar.xz" -C "${WORKDIR}/clang" || die "Failed to unpack Clang"
+ einfo "Unpacking bundled Rust ..."
+ local rust_dir="${WORKDIR}/rust-toolchain"
+ mkdir -p "${rust_dir}" || die "Failed to create rust toolchain directory"
+ tar xf "${DISTDIR}/chromium-rust-toolchain-${RUST_SHORT_HASH}-${BUNDLED_CLANG_VER%-*}.tar.xz" -C "${rust_dir}" ||
+ die "Failed to unpack Rust"
+ fi
+
+ if use ppc64; then
+ unpack chromium-openpower-${PPC64_HASH:0:10}.tar.bz2
+ fi
+
+ # This is a dirty hack, but we need rollup to build successfully and it's proving to be challenging
+ # to build locally due to deps
+ unpack rollup-wasm-node-${ROLLUP_VER}.tgz
+
+ if use cromite; then
+ unpack cromite-${CROMITE_COMMIT_ID}.tar.gz
+ fi
+
+ unpack ${UGC_URL#*->}
+}
+
+remove_compiler_builtins() {
+ # We can't use the bundled compiler builtins with the system toolchain
+ # We used to `grep` then `sed`, but it was indirect. Combining the two into a single
+ # `awk` command is more efficient and lets us document the logic more clearly.
+
+ local pattern=' configs += [ "//build/config/clang:compiler_builtins" ]'
+ local target='build/config/compiler/BUILD.gn'
+
+ local tmpfile
+ tmpfile=$(mktemp) || die "Failed to create temporary file."
+
+ if awk -v pat="${pattern}" '
+ BEGIN {
+ match_found = 0
+ }
+
+ # If the delete countdown is active, decrement it and skip to the next line.
+ d > 0 { d--; next }
+
+ # If the current line matches the pattern...
+ $0 == pat {
+ match_found = 1 # ...set our flag to true.
+ d = 2 # Set delete counter for this line and the next two.
+ prev = "" # Clear the buffered previous line so it is not printed.
+ next
+ }
+
+ # For any other line, print the buffered previous line.
+ NR > 1 { print prev }
+
+ # Buffer the current line to be printed on the next cycle.
+ { prev = $0 }
+
+ END {
+ # Print the last line if it was not part of a deleted block.
+ if (d == 0) { print prev }
+
+ # If the pattern was never found, exit with a failure code.
+ if (match_found == 0) {
+ exit 1
+ }
+ }
+ ' "${target}" > "${tmpfile}"; then
+ # AWK SUCCEEDED (exit code 0): The pattern was found and edited.
+ # This is to avoid gawk's `-i inplace` option which users complain about.
+ mv "${tmpfile}" "${target}"
+ else
+ # AWK FAILED (exit code 1): The pattern was not found.
+ rm -f "${tmpfile}"
+ die "Awk patch failed: Pattern not found in ${target}."
+ fi
+}
+
+src_prepare() {
+ # Calling this here supports resumption via FEATURES=keepwork
+ python_setup
+
+ # We'll fill this in as we go. Patches go in chromium-patches.
+ local PATCHES=()
+
+ FAILED_PATCHES=()
+
+ rm "${WORKDIR}/chromium-patches-${PATCH_V}/common/cr131-unbundle-icu-target.patch"
+ rm "${WORKDIR}/chromium-patches-${PATCH_V}/toolchain/cr152-fix-rust-2-oxidize-harder.patch"
+ rm "${WORKDIR}/chromium-patches-${PATCH_V}/common/cr152-revert-to-rollup-wasm.patch"
+
+ if ver_test "${RUST_SLOT}" -ge "1.95.0"; then
+ sed -i '/SupportedLaneCount/d' third_party/rust/chromium_crates_io/vendor/bytemuck-v1/src/zeroable.rs || die
+ sed -i '/SupportedLaneCount/d' third_party/rust/chromium_crates_io/vendor/bytemuck-v1/src/pod.rs || die
+ fi
+
+ # sed -i '/no-lifetime-safety-inference/d' third_party/dawn/src/utils/BUILD.gn || die
+ # sed -i '/no-experimental-lifetime-safety-tu-analysis/d' third_party/dawn/src/utils/BUILD.gn || die
+
+ PATCHES+=(
+ "${WORKDIR}/chromium-patches-${PATCH_V}/common/"
+ "${FILESDIR}/restore-x86-r4.patch"
+ "${FILESDIR}/chromium-152-ffmpeg-fix.patch"
+ "${FILESDIR}/chromium-152-unbundle-minizip-undo-unicode.patch"
+ "${FILESDIR}/chromium-153-revert-to-rollup-wasm.patch"
+ "${FILESDIR}/chromium-154-cbor-fix.patch"
+ "${FILESDIR}/chromium-154-system-typescript.patch"
+ "${FILESDIR}/chromium-154-gn-fixes.patch"
+ "${FILESDIR}/chromium-154-private_verification_tokens.patch"
+ )
+
+ # So many fontconfig magic numbers to cover
+ # TODO: once upstream roll to 2.18.2+ set that as our minimum and remove this logic.
+ # <=2.17.1 -> 9
+ # >2.17.1 && <2.18.2 -> 11
+ # >=2.18.2 -> 12
+ local fontconfig_cache_magic=9
+ if has_version ">=media-libs/fontconfig-2.18.2"; then
+ fontconfig_cache_magic=12
+ elif has_version ">media-libs/fontconfig-2.17.1"; then
+ fontconfig_cache_magic=11
+ fi
+
+ sed -E -i \
+ -e "s#(fb5c91b2895aa445d23aebf7f9e2189c-le64\.cache-)(9|10|11|12)#\1${fontconfig_cache_magic}#g" \
+ third_party/test_fonts/fontconfig/BUILD.gn || die "Failed to set fontconfig cache magic in BUILD.gn"
+
+ #cp -f ${WORKDIR}/chromium-patches-${PATCH_V}/*-compiler.patch "${T}/compiler.patch"
+ ##cp -f ${FILESDIR}/chromium-147-compiler.patch "${T}/compiler.patch"
+ #if ! use custom-cflags; then #See #25 #92
+ # sed -i '/default_stack_frames/Q' "${T}/compiler.patch" || die
+ #fi
+
+ sed -E -i \
+ -e "s#(kCacheKey \+ \"/-le64\.cache-)(9|10|11|12)(\")#\1${fontconfig_cache_magic}\3#g" \
+ -e "s#(kCacheKey \+ \"-le64\.cache-)(9|10|11|12)(\")#\1${fontconfig_cache_magic}\3#g" \
+ third_party/test_fonts/fontconfig/generate_fontconfig_caches.cc || \
+ die "Failed to set fontconfig cache magic in generate_fontconfig_caches.cc"
+
+ if use bundled-toolchain; then
+ # We need to symlink the toolchain into the expected location
+ einfo "Symlinking Clang toolchain to expected location ..."
+ mkdir -p third_party/llvm-build/ || die "Failed to create llvm-build directory"
+ # the 'Chromium Linux Tarballs' seem to already have 'Release+Asserts/{lib,bin}'; not sure if this is an
+ # upstream change - we're using the same scripts to build, theoretically. We'll still attempt to create
+ # llvm-build, but we'll rm Release+Asserts and symlink directly.
+ if [[ -d third_party/llvm-build/Release+Asserts ]]; then
+ rm -r third_party/llvm-build/Release+Asserts || die "Failed to remove third_party/llvm-build/Release+Asserts"
+ fi
+ ln -s "${WORKDIR}"/clang third_party/llvm-build/Release+Asserts || die "Failed to bundle Clang"
+ einfo "Symlinking Rust toolchain to expected location ..."
+ # As above, so below
+ if [[ -d third_party/rust-toolchain ]]; then
+ rm -r third_party/rust-toolchain || die "Failed to remove third_party/rust-toolchain"
+ fi
+ ln -s "${WORKDIR}"/rust-toolchain third_party/rust-toolchain || die "Failed to bundle rust"
+ cp "${WORKDIR}"/rust-toolchain/VERSION \
+ "${WORKDIR}"/rust-toolchain/INSTALLED_VERSION || die "Failed to set rust version"
+ else
+ # We don't need our toolchain patches if we're using the official toolchain
+
+ # Copium patches go here.
+ PATCHES+=(
+ "${WORKDIR}/copium/cr143-libsync-__BEGIN_DECLS.patch"
+ )
+
+ # Automate conditional application of chromium-patches
+ # The directory structure is expected to be something like:
+ # chromium-patches-145/
+ # ├── toolchain/
+ # │ ├── cr123-foo.patch
+ # │ └── cr135-bar.patch
+ # ├── llvm/
+ # │ ├── cr144-baz.patch
+ # │ └── lt-23/
+ # │ └── cr145-bleeding-edge-llvm-feature.patch
+ # Where `lt-23` means "apply this patch if the LLVM version is less than 23".
+ # Only categories in `slot_map` will be checked for version constraints.
+ shopt -s nullglob
+ local -A slot_map=( [llvm]="${LLVM_SLOT}" [rust]="${RUST_SLOT}" )
+
+ for category in "${WORKDIR}/chromium-patches-${PATCH_V}"/*/; do
+ local category_name="${category%/}"
+ category_name="${category_name##*/}"
+
+ # Skip arch-specific categories
+ if [[ "${category_name}" == "ppc64le" ]]; then
+ use ppc64 || continue
+ fi
+
+ # We applied common patches above, no need to apply them again here
+ [[ "${category_name}" == "common" ]] && continue
+
+ # Unconditional patches for this category
+ local category_patches=( "${category}"*.patch )
+ [[ ${#category_patches[@]} -gt 0 ]] && PATCHES+=( "${category}" )
+
+ # Version-constrained subdirectories (e.g., llvm/lt-23/)
+ for constraint_dir in "${category}"*/; do
+ local dir_name="${constraint_dir%/}"
+ dir_name="${dir_name##*/}"
+ if [[ "${dir_name}" =~ ^lt-(.*)$ && -v slot_map[${category_name}] ]]; then
+ ver_test "${slot_map[${category_name}]}" -lt "${BASH_REMATCH[1]}" &&
+ PATCHES+=( "${constraint_dir}" )
+ fi
+ done
+ done
+
+ shopt -u nullglob
+
+ # Strictly speaking this doesn't need to be gated (no bundled toolchain for ppc64); it keeps the logic together
+ if use ppc64; then
+ local patchset_dir="${WORKDIR}/openpower-patches-${PPC64_HASH}/patches"
+ # patch causes build errors on 4K page systems (https://bugs.gentoo.org/show_bug.cgi?id=940304)
+ local page_size_patch="ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch"
+ local isa_3_patch="ppc64le/core/baseline-isa-3-0.patch"
+ # Apply the OpenPOWER patches (check for page size and isa 3.0)
+ openpower_patches=( $(grep -E "^ppc64le|^upstream" "${patchset_dir}/series" | grep -v "${page_size_patch}" |
+ grep -v "${isa_3_patch}" || die) )
+ for patch in "${openpower_patches[@]}"; do
+ PATCHES+=( "${patchset_dir}/${patch}" )
+ done
+ if [[ $(getconf PAGESIZE) == 65536 ]]; then
+ PATCHES+=( "${patchset_dir}/${page_size_patch}" )
+ fi
+ # We use vsx3 as a proxy for 'want isa3.0' (POWER9)
+ if use cpu_flags_ppc_vsx3 ; then
+ PATCHES+=( "${patchset_dir}/${isa_3_patch}" )
+ fi
+ fi
+
+ remove_compiler_builtins
+
+ # We can't rely on the eselect'd Rust to actually include rustfmt, so we'll point to the selected slot specifically.
+ local suffix=""
+ if [[ "${RUST_TYPE}" == "binary" ]]; then
+ suffix="-bin-${RUST_SLOT}"
+ else
+ suffix="-${RUST_SLOT}"
+ fi
+ sed -i "s|/bin/rustfmt|/bin/rustfmt${suffix}|g" build/rust/rust_bindgen_generator.gni ||
+ die "Failed to update rustfmt path"
+
+ fi
+
+ # Do this before we apply patches since (e.g.) ppc64 needs to patch rollup and it's easier in ${S}
+ einfo "Moving rollup wasm-node package into place ..."
+ mkdir -p third_party/devtools-frontend/src/node_modules/@rollup/wasm-node ||
+ die "Failed to create node_modules/@rollup/wasm-node"
+ mv "${WORKDIR}"/package/* third_party/devtools-frontend/src/node_modules/@rollup/wasm-node ||
+ die "Failed to move rollup package"
+
+ if [ ! -z "${CHROMIUM_COMMITS[*]}" ]; then
+ # for i in "${CHROMIUM_COMMITS[@]}"; do
+ for i in "${!CHROMIUM_COMMITS[@]}"; do
+ if [[ ${CHROMIUM_COMMITS[$i]} =~ webrtc ]]; then
+ patch_prefix="webrtc"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ angle ]]; then
+ patch_prefix="angle"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ quiche ]]; then
+ patch_prefix="quiche"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ dawn ]]; then
+ patch_prefix="dawn"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ perfetto ]]; then
+ patch_prefix="perfetto"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ ink ]]; then
+ patch_prefix="ink"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ vulkan-utility-libraries ]]; then
+ patch_prefix="vulkan-utility-libraries"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ ruy ]]; then
+ patch_prefix="ruy"
+ elif [[ ${CHROMIUM_COMMITS[$i]} =~ devtools-frontend ]]; then
+ patch_prefix="devtools-frontend"
+ else
+ patch_prefix="chromium"
+ fi
+ pushd "${CHROMIUM_COMMITS[$i]}" > /dev/null || die
+ if [[ $i = -* ]]; then
+ einfo "Reverting ${patch_prefix}-${i/-}.patch"
+ git_wrapper apply -R --exclude="*unittest.cc" --exclude="DEPS" \
+ -p1 "${DISTDIR}/${patch_prefix}-${i/-}.patch"
+ else
+ einfo "Applying ${patch_prefix}-${i/-}.patch"
+ git_wrapper apply --exclude="*unittest.cc" --exclude="DEPS" \
+ -p1 "${DISTDIR}/${patch_prefix}-${i/-}.patch"
+ fi
+ popd > /dev/null || die
+ done
+ fi
+
+ if ! use bluetooth ; then
+ PATCHES+=(
+ "${FILESDIR}/disable-bluez-r7.patch"
+ )
+ fi
+
+ if use convert-dict ; then
+ PATCHES+=(
+ "${FILESDIR}/chromium-ucf-dict-utility-r3.patch"
+ )
+ fi
+
+ if ! use libcxx ; then
+ PATCHES+=(
+ "${FILESDIR}/fix-wayland-oncecallback-copy.patch"
+ )
+ fi
+
+ if use system-ffmpeg; then
+ PATCHES+=(
+ "${FILESDIR}/chromium-141-opus-mp3.patch"
+ "${FILESDIR}/chromium-135-hevc.patch"
+ "${FILESDIR}/chromium-153-fix-iamf.patch"
+ )
+ sed -i "\!AVFMT_FLAG_NOH264PARSE!d" media/filters/ffmpeg_glue.cc || die
+ ewarn "You need to expose \"av_stream_get_first_dts\" in ffmpeg via user patch"
+ fi
+
+ if use system-av1; then
+ PATCHES+=(
+ "${FILESDIR}/chromium-system-av1.patch"
+ )
+ fi
+
+ if use system-libvpx; then
+ PATCHES+=(
+ "${FILESDIR}/chromium-system-libvpx.patch"
+ )
+ fi
+
+ if use system-openjpeg ; then
+ PATCHES+=(
+ "${FILESDIR}/chromium-system-openjpeg-r4.patch"
+ )
+ fi
+
+ # if use x86 ; then
+ # #* Fixes a segfault in transport_security_state_generator
+ # PATCHES+=(
+ # "${FILESDIR}/fix-segfault-x86.patch"
+ # )
+ # fi
+
+ # Testing all patches when NODIE is defined
+ if [ ! -z "${NODIE}" ]; then
+ for i in "${PATCHES[@]}"; do
+ eapply_wrapper "$i"
+ done
+ nonfatal eapply_user
+ else
+ default
+ fi
+
+ if use cromite ; then
+ BR_PA_PATH="${WORKDIR}/cromite-${CROMITE_COMMIT_ID}/build/patches"
+
+ sed -i '/b\/components\/components_strings\.grd/,+10d' "${BR_PA_PATH}/Add-cromite-flags-support.patch" || die
+ sed -i '/b\/chrome\/android\/java\/res\/xml\/privacy_preferences\.xml/,+13d' "${BR_PA_PATH}/Add-cromite-flags-support.patch" || die
+ sed -i '/b\/android_webview\/support_library\/java\/src\/org\/chromium\/support_lib_glue/,+11d' "${BR_PA_PATH}/Client-hints-overrides.patch" || die
+ sed -i '/webapps_strings.grdp" \/>/{s++webapps_strings.grdp" /><part file="cromite_components_strings_grd/placeholder.txt"/>+;h};${x;/./{x;q0};x;q1}' \
+ components/components_strings.grd || die
+
+ sed -i 's/absl::/std::/' "${BR_PA_PATH}/Add-a-proxy-configuration-page.patch" || die
+
+ filterdiff -p1 "${BR_PA_PATH}/JIT-site-settings.patch" --exclude="content/browser/renderer_host/render_process_host_impl.cc" \
+ > "${BR_PA_PATH}/JIT-site-settings.patch1"
+ mv -f "${BR_PA_PATH}/JIT-site-settings.patch1" "${BR_PA_PATH}/JIT-site-settings.patch"
+
+ BROMITE_PATCHES=(
+ "${BR_PA_PATH}/bromite-build-utils.patch"
+ "${BR_PA_PATH}/Battery-API-return-nothing.patch"
+ "${BR_PA_PATH}/Multiple-fingerprinting-mitigations.patch"
+ "${BR_PA_PATH}/Add-flag-to-configure-maximum-connections-per-host.patch"
+ "${BR_PA_PATH}/Add-a-proxy-configuration-page.patch"
+ "${BR_PA_PATH}/Enable-StrictOriginIsolation-and-SitePerProcess.patch"
+ "${BR_PA_PATH}/Disable-requests-for-single-word-Omnibar-searches.patch"
+ "${BR_PA_PATH}/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch"
+ "${BR_PA_PATH}/Client-hints-overrides.patch"
+ "${BR_PA_PATH}/Disable-idle-detection.patch"
+ "${BR_PA_PATH}/Disable-TLS-resumption.patch"
+ "${BR_PA_PATH}/Remove-navigator.connection-info.patch"
+
+ "${BR_PA_PATH}/AudioBuffer-AnalyserNode-fp-mitigations.patch"
+ "${BR_PA_PATH}/Fonts-fingerprinting-mitigation.patch"
+ "${BR_PA_PATH}/Content-settings-infrastructure.patch"
+ "${BR_PA_PATH}/Add-autoplay-site-setting.patch"
+ "${BR_PA_PATH}/Site-setting-for-images.patch"
+ "${BR_PA_PATH}/JIT-site-settings.patch"
+ "${BR_PA_PATH}/Add-webGL-site-setting.patch"
+ "${BR_PA_PATH}/Add-webRTC-site-settings.patch"
+ "${BR_PA_PATH}/Show-site-settings-for-cookies-javascript-and-ads.patch"
+ "${BR_PA_PATH}/Viewport-Protection-flag.patch"
+ "${BR_PA_PATH}/Protect-keyboard-geometry-on-Android.patch"
+ "${BR_PA_PATH}/Revert-remove-allowscript-content-setting-secondary-url.patch"
+ "${BR_PA_PATH}/Timezone-customization.patch"
+ "${BR_PA_PATH}/Disable-speechSynthesis-getVoices-API.patch"
+ "${BR_PA_PATH}/Remove-support-for-device-memory-and-cpu-recovery.patch"
+ "${BR_PA_PATH}/Disable-Feeback-Collector.patch"
+ "${BR_PA_PATH}/Disable-remote-altsvc-for-h3-connections.patch"
+ "${BR_PA_PATH}/Add-cromite-flags-support.patch"
+ "${BR_PA_PATH}/Enables-deactivation-of-the-js-debugger-statement.patch"
+ )
+ for i in "${BROMITE_PATCHES[@]}"; do
+ if [[ "$i" =~ "Add-autoplay-site-setting.patch" ]] ||
+ [[ "$i" =~ "JIT-site-settings.patch" ]] ||
+ [[ "$i" =~ "Site-setting-for-images.patch" ]]; then
+ einfo "Git binary patch: ${i##*/}"
+ git_wrapper apply -p1 "$i"
+ else
+ filter_wrapper "$i" --exclude="chrome/android/*"
+ fi
+ done
+
+ #* Viewport Protection's screen emulation misplaces page-anchored native
+ #* popups (select/date/color pickers); round the screen de-emulation so
+ #* the emulated->screen->emulated round-trip is a fixed point and the
+ #* popup stops drifting toward the top-left corner
+ eapply_wrapper "${FILESDIR}/chromite-viewport-protection-popup-rounding.patch"
+
+ #! conflicting patches
+ sed -i '/browser_features.cc/,+17d' \
+ "${UGC_WD}/patches/extra/ungoogled-chromium/add-flag-to-clear-data-on-exit.patch" || die
+ sed -i 's$} // namespace features$BASE_FEATURE(kClearDataOnExit, "ClearDataOnExit", base::FEATURE_DISABLED_BY_DEFAULT);}$' \
+ chrome/browser/browser_features.cc || die
+ sed -i 's$} // namespace features$BASE_DECLARE_FEATURE(kClearDataOnExit);}$' \
+ chrome/browser/browser_features.h || die
+ sed -i 's$kChromeUIAboutHost,$kChromeUIAboutHost,"ungoogled-first-run",$' \
+ chrome/common/webui_url_constants.cc || die
+ sed -i '/chrome\/common\/webui_url_constants.cc/Q' \
+ "${UGC_WD}/patches/extra/ungoogled-chromium/first-run-page.patch" || die
+
+ #! normalise paths in py
+ sed -i 's$os.path.dirname(include_file)$os.path.abspath(os.path.dirname(include_file))$' \
+ build/bromite/gyp/cpp_bromite_include.py || die
+ fi
+
+ # if [[ ${LLVM_SLOT} == "19" ]]; then
+ # # Upstream now hard depend on a feature that was added in LLVM 20.1, but we don't want to stabilise that yet.
+ # # Do the temp file shuffle in case someone is using something other than `gawk`
+ # {
+ # awk '/config\("clang_warning_suppression"\) \{/ { print $0 " }"; sub(/clang/, "xclang"); print; next }
+ # { print }' build/config/compiler/BUILD.gn > "${T}/build.gn" && \
+ # mv "${T}/build.gn" build/config/compiler/BUILD.gn
+ # } || die "Unable to disable warning suppression"
+ # fi
+
+ ## Not included in -lite tarballs, but we should check for it anyway.
+ #if [[ -f third_party/node/linux/node-linux-x64/bin/node ]]; then
+ # rm third_party/node/linux/node-linux-x64/bin/node || die
+ #else
+ # mkdir -p third_party/node/linux/node-linux-x64/bin || die
+ #fi
+ #ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die
+
+ cp "${FILESDIR}/libusb.gn" build/linux/unbundle || die
+ sed -i '/^REPLACEMENTS.*$/{s++REPLACEMENTS = {"libusb":"third_party/libusb/BUILD.gn",+;h};${x;/./{x;q0};x;q1}' \
+ build/linux/unbundle/replace_gn_files.py || die
+ sed -i '/^.*deps.*third_party\/jsoncpp.*$/{s++public_deps \+= [ "//third_party/jsoncpp" ]+;h};${x;/./{x;q0};x;q1}' \
+ third_party/webrtc/rtc_base/BUILD.gn || die
+
+ if use override-data-dir; then
+ sed -i '/"chromium";/{s++"ungoogled-chromium";+;h};${x;/./{x;q0};x;q1}' \
+ chrome/common/chrome_paths_linux.cc || die
+ fi
+
+ if use system-abseil-cpp; then
+ eapply_wrapper "${FILESDIR}/chromium-147-system-abseil.patch"
+
+ #! SFINAE mangling incompatibility between clang and gcc:
+ #! https://github.com/llvm/llvm-project/issues/85656
+ #! gcc: _ZN4absl12lts_202601074CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELi0EEEOT_
+ #! clang: _ZN4absl12lts_202601074CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEETnNSt9enable_ifIXsr3std7is_sameIT_S8_EE5valueEiE4typeELi0EEEOSA_
+ #! So, either this:
+ eapply_wrapper "${FILESDIR}/chromium-141-system-abseil-cord.patch"
+ #! or build with -fclang-abi-compat=17
+
+ # cp -f /usr/include/absl/base/options.h third_party/abseil-cpp/absl/base/options.h
+ # sed -i '/^#define ABSL_OPTION_USE_STD_ORDERING.*$/{s++#define ABSL_OPTION_USE_STD_ORDERING 1+;h};${x;/./{x;q0};x;q1}' \
+ # third_party/abseil-cpp/absl/base/options.h || die
+ fi
+
+ #* Applying UGC PRs here
+ if [ ! -z "${UGC_PR_COMMITS[*]}" ]; then
+ pushd "${UGC_WD}" >/dev/null
+ for i in "${UGC_PR_COMMITS[@]}"; do
+ eapply_wrapper "${DISTDIR}/${PN}-$i.patch"
+ done
+ popd >/dev/null
+ fi
+
+ if [ ! -z "${NODIE}" ] && [[ ${#FAILED_PATCHES[@]} -gt 0 ]]; then
+ eerror "${#FAILED_PATCHES[@]} patch(es) failed to apply:"
+ for p in "${FAILED_PATCHES[@]}"; do
+ eerror " ${p}"
+ done
+ die "Failed to apply ${#FAILED_PATCHES[@]} patch(es)"
+ fi
+
+ # From here we adapt ungoogled-chromium's patches to our needs
+ local ugc_pruning_list="${UGC_WD}/pruning.list"
+ local ugc_patch_series="${UGC_WD}/patches/series"
+ local ugc_substitution_list="${UGC_WD}/domain_substitution.list"
+
+ local ugc_unneeded=(
+ # GN bootstrap
+ extra/debian/gn/parallel
+ # following Gentoo's Chromium
+ core/ungoogled-chromium/build-with-wasm-rollup
+ )
+
+ if use cromite ; then
+ einfo "Using fingerprinting patches from Cromite instead"
+ ugc_unneeded+=(
+ extra/bromite/fingerprinting-flags-client-rects-and-measuretext
+ extra/bromite/flag-max-connections-per-host
+ extra/bromite/flag-fingerprinting-canvas-image-data-noise
+ extra/ungoogled-chromium/add-components-ungoogled
+ extra/ungoogled-chromium/remove-pac-size-limit
+ )
+ fi
+
+ # #* Temporary fix
+ # sed -i "\!ios/!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/icu/!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/libjpeg_turbo/!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/snappy/!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/closure_compiler/!d" "${ugc_pruning_list}" || die
+
+ # #* Didn't unpack them at the first place
+ # sed -i "\!build/linux/debian_bullseye_i386-sysroot!d" "${ugc_pruning_list}" || die
+ # sed -i "\!build/linux/debian_bullseye_amd64-sysroot!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/llvm-build!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/node/linux!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/rust-src!d" "${ugc_pruning_list}" || die
+ # sed -i "\!third_party/rust-toolchain!d" "${ugc_pruning_list}" || die
+ # if ! use libcxx ; then
+ # sed -i "\!third_party/libc!d" "${ugc_pruning_list}" || die
+ # fi
+ sed -i "s|debug('files|error('files|" \
+ "${UGC_WD}/utils/prune_binaries.py" || die
+ sed -i "\!third_party/node/linux!d" \
+ "${UGC_WD}/utils/prune_binaries.py" || die
+
+ local ugc_p ugc_dir
+ for p in "${ugc_unneeded[@]}"; do
+ einfo "Removing ${p}.patch"
+ sed -i "\!${p}.patch!d" "${ugc_patch_series}" || die
+ done
+
+ if [ ! -z "${UGC_SKIP_PATCHES}" ]; then
+ for p in ${UGC_SKIP_PATCHES}; do
+ ewarn "Removing ${p}"
+ sed -i "\!${p}!d" "${ugc_patch_series}" || die
+ done
+ fi
+
+ if [ ! -z "${UGC_KEEP_BINARIES}" ]; then
+ for p in ${UGC_KEEP_BINARIES}; do
+ ewarn "Keeping binary ${p}"
+ sed -i "\!${p}!d" "${ugc_pruning_list}" || die
+ done
+ fi
+
+ if [ ! -z "${UGC_SKIP_SUBSTITUTION}" ]; then
+ for p in ${UGC_SKIP_SUBSTITUTION}; do
+ ewarn "No substitutions in ${p}"
+ sed -i "\!${p}!d" "${ugc_substitution_list}" || die
+ done
+ fi
+
+ ebegin "Pruning binaries"
+ "${UGC_WD}/utils/prune_binaries.py" -q . "${UGC_WD}/pruning.list"
+ eend $? || die
+
+ ebegin "Applying ungoogled-chromium patches"
+ "${UGC_WD}/utils/patches.py" -q apply . "${UGC_WD}/patches"
+ eend $? || die
+
+ ebegin "Applying domain substitution"
+ "${UGC_WD}/utils/domain_substitution.py" -q apply -r "${UGC_WD}/domain_regex.list" -f "${UGC_WD}/domain_substitution.list" .
+ eend $? || die
+
+ # Sanity check esbuild version before we start removing files.
+ # We _could_ patch the version check out - in theory esbuild upstream are being super conservative after
+ # arch(AUR) packaged an `esbuild` binary and set ESBUILD_BINARY_PATH=/usr/bin/esbuild, causing much breakage,
+ # but this is fine too and exactly matches what upstream are expecting.
+ # https://github.com/evanw/esbuild/issues/2894
+ local esbuild_js="${S}/third_party/devtools-frontend/src/node_modules/esbuild/lib/main.js"
+ local found
+ found=$(awk -F'"' '/if \(binaryVersion !==/ {print $2}' "${esbuild_js}")
+ if [[ "${found}" != "${ESBUILD_VER}" ]]; then
+ die "esbuild version mismatch: expected ${ESBUILD_VER}, found ${found}"
+ fi
+
+ elog "Removing bundled binaries from source tree ..."
+ # Purge bundled ELF files: These are non-portable and will cause issues if used instead of system versions.
+ # Use `--wasm` to also remove WebAssembly binaries, if desired - they're portable so shouldn't break builds.
+ ${EPYTHON} "${FILESDIR}/bin-finder.py" --elf "${S}" | awk '{print $1}' | xargs rm -f ||
+ die "Failed to remove bundled binaries"
+
+ # And now we restore any that we actually need, from the host system
+ local esbuild_path="${S}/third_party/devtools-frontend/src/third_party/esbuild"
+ local -A restore_list=(
+ ["/usr/bin/esbuild-${ESBUILD_VER}"]="${esbuild_path}/esbuild"
+ ["/usr/bin/gperf"]="${S}/third_party/gperf/cipd/bin/gperf"
+ ["/usr/bin/node"]="${S}/third_party/node/linux/node-linux-x64/bin/node"
+ )
+
+ for src in "${!restore_list[@]}"; do
+ dst="${restore_list[${src}]}"
+ if [[ -f "${src}" ]]; then
+ einfo "Symlinking ${src} ..."
+ # Make sure the parent dir exists; some tarballs don't include (e.g.) node's bindir
+ mkdir -p "$(dirname "${dst}")" || die "Failed to create directory for ${dst}"
+ ln -s "${src}" "${dst}" || die "Failed to symlink ${dst} from ${src}"
+ if [[ ! -L "${dst}" || "$(readlink -f "${dst}")" != "${src}" ]]; then
+ die "Symlink verification failed for ${dst} -> ${src}"
+ fi
+ else
+ die "Expected to find ${src} to restore ${dst}, but it does not exist."
+ fi
+ done
+
+ # adjust python interpreter version
+ sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
+
+ # Use the system copy of hwdata's usb.ids
+ sed 's|//third_party/usb_ids/src/usb.ids|/usr/share/hwdata/usb.ids|g' \
+ -i services/device/public/cpp/usb/BUILD.gn || die "Failed to set system usb.ids path"
+
+ # remove_bundled_libraries.py walks the source tree and looks for paths containing the substring 'third_party'
+ # whitelist matches use the right-most matching path component, so we need to whitelist from that point down.
+ local keeplibs=(
+ base/third_party/cityhash
+ )
+ use system-double-conversion || keeplibs+=(
+ base/third_party/double_conversion
+ )
+ keeplibs+=(
+ base/third_party/icu
+ base/third_party/nspr
+ base/third_party/superfasthash
+ base/third_party/symbolize
+ base/third_party/xdg_user_dirs
+ buildtools/third_party/libc++
+ buildtools/third_party/libc++abi
+ )
+ use cromite && keeplibs+=(
+ cromite_flags/third_party
+ )
+ keeplibs+=(
+ net/third_party/mozilla_security_manager
+ net/third_party/quic
+ net/third_party/uri_template
+ )
+ use system-abseil-cpp || keeplibs+=(
+ third_party/abseil-cpp
+ )
+ keeplibs+=(
+ third_party/angle
+ third_party/angle/src/common/third_party/xxhash
+ third_party/angle/src/third_party/ceval
+ )
+ use nvidia || keeplibs+=(
+ third_party/angle/src/third_party/libXNVCtrl
+ )
+ keeplibs+=(
+ third_party/angle/src/third_party/volk
+ third_party/anonymous_tokens
+ third_party/apple_apsl
+ third_party/axe-core
+ third_party/bidimapper
+ third_party/blink
+ third_party/boringssl
+ third_party/boringssl/src/third_party/fiat
+ third_party/breakpad
+ third_party/breakpad/breakpad/src/third_party/curl
+ )
+ use system-brotli || keeplibs+=(
+ third_party/brotli
+ )
+ keeplibs+=(
+ third_party/catapult
+ third_party/catapult/common/py_vulcanize/third_party/rcssmin
+ third_party/catapult/common/py_vulcanize/third_party/rjsmin
+ third_party/catapult/third_party/beautifulsoup4-4.9.3
+ third_party/catapult/third_party/html5lib-1.1
+ third_party/catapult/third_party/polymer
+ third_party/catapult/third_party/six
+ third_party/catapult/third_party/typ
+ third_party/catapult/tracing/third_party/d3
+ third_party/catapult/tracing/third_party/gl-matrix
+ third_party/catapult/tracing/third_party/jpeg-js
+ third_party/catapult/tracing/third_party/jszip
+ third_party/catapult/tracing/third_party/mannwhitneyu
+ third_party/catapult/tracing/third_party/oboe
+ third_party/catapult/tracing/third_party/pako
+ third_party/ced
+ third_party/cld_3
+ third_party/closure_compiler
+ )
+ use libcxx && keeplibs+=(
+ third_party/compiler-rt
+ )
+ keeplibs+=(
+ third_party/content_analysis_sdk
+ third_party/cpuinfo
+ third_party/crabbyavif
+ third_party/crashpad
+ third_party/crashpad/crashpad/third_party/lss
+ third_party/crashpad/crashpad/third_party/zlib
+ )
+ use system-crc32c || keeplibs+=(
+ third_party/crc32c
+ )
+ keeplibs+=(
+ third_party/cros_system_api
+ third_party/d3
+ third_party/dawn
+ third_party/dawn/third_party/gn/webgpu-cts
+ third_party/dawn/third_party/OpenGL-Registry
+ third_party/dawn/third_party/renderdoc
+ third_party/dawn/third_party/webgpu-headers
+ third_party/depot_tools
+ third_party/devscripts
+ third_party/devtools-frontend
+ third_party/devtools-frontend/src/front_end/third_party/acorn
+ third_party/devtools-frontend/src/front_end/third_party/additional_readme_paths.json
+ third_party/devtools-frontend/src/front_end/third_party/axe-core
+ third_party/devtools-frontend/src/front_end/third_party/chromium
+ third_party/devtools-frontend/src/front_end/third_party/codemirror
+ third_party/devtools-frontend/src/front_end/third_party/csp_evaluator
+ third_party/devtools-frontend/src/front_end/third_party/diff
+ third_party/devtools-frontend/src/front_end/third_party/i18n
+ third_party/devtools-frontend/src/front_end/third_party/intl-messageformat
+ third_party/devtools-frontend/src/front_end/third_party/json5
+ third_party/devtools-frontend/src/front_end/third_party/legacy-javascript
+ third_party/devtools-frontend/src/front_end/third_party/lighthouse
+ third_party/devtools-frontend/src/front_end/third_party/lit
+ third_party/devtools-frontend/src/front_end/third_party/marked
+ third_party/devtools-frontend/src/front_end/third_party/puppeteer
+ third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/third_party/mitt
+ third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/third_party/parsel-js
+ third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/third_party/rxjs
+ third_party/devtools-frontend/src/front_end/third_party/puppeteer/package/lib/third_party/urlpattern-polyfill
+ third_party/devtools-frontend/src/front_end/third_party/source-map-scopes-codec
+ third_party/devtools-frontend/src/front_end/third_party/third-party-web
+ third_party/devtools-frontend/src/front_end/third_party/vscode.web-custom-data
+ third_party/devtools-frontend/src/front_end/third_party/wasmparser
+ third_party/devtools-frontend/src/front_end/third_party/web-vitals
+ third_party/devtools-frontend/src/third_party
+ third_party/dom_distiller_js
+ third_party/dragonbox
+ third_party/eigen3
+ third_party/emoji-segmenter
+ third_party/farmhash
+ third_party/fast_float
+ third_party/fdlibm
+ third_party/federated_compute/chromium/fcp/confidentialcompute
+ third_party/federated_compute/chromium/fcp/protos
+ third_party/federated_compute/chromium/fcp/secagg
+ third_party/federated_compute/chromium/fcp/client
+ third_party/federated_compute/src/fcp/base
+ third_party/federated_compute/src/fcp/confidentialcompute
+ third_party/federated_compute/src/fcp/protos
+ third_party/federated_compute/src/fcp/client
+ third_party/federated_compute/src/fcp/secagg
+ third_party/federated_compute/third_party/googleapis/src/google
+ third_party/federated_compute/third_party/tensorflow-federated
+ third_party/federated_compute/third_party/protodatastore-cpp
+ third_party/fft2d
+ third_party/flatbuffers
+ third_party/fp16
+ third_party/freetype
+ third_party/fusejs
+ third_party/fxdiv
+ third_party/gemmlowp
+ third_party/google_input_tools
+ third_party/google_input_tools/third_party/closure_library
+ third_party/google_input_tools/third_party/closure_library/third_party/closure
+ third_party/googletest
+ third_party/gperf # We symlink system gperf, but this will purge the symlink since we tidy up afterwards.
+ third_party/highway
+ third_party/hunspell
+ third_party/hyphenation-patterns
+ third_party/iamf_tools
+ third_party/ink/src/ink/brush
+ third_party/ink/src/ink/color
+ third_party/ink/src/ink/geometry
+ third_party/ink/src/ink/rendering
+ third_party/ink/src/ink/rendering/skia/common_internal
+ third_party/ink/src/ink/rendering/skia/native
+ third_party/ink/src/ink/rendering/skia/native/internal
+ third_party/ink/src/ink/strokes
+ third_party/ink/src/ink/types
+ third_party/inspector_protocol
+ third_party/ipcz
+ third_party/jinja2
+ )
+ use system-jsoncpp || keeplibs+=(
+ third_party/jsoncpp
+ )
+ keeplibs+=(
+ third_party/khronos
+ third_party/lens_server_proto
+ third_party/leveldatabase
+ third_party/libaddressinput
+ third_party/libdrm
+ third_party/libgav1
+ third_party/libjingle
+ third_party/libpfm4
+ third_party/libphonenumber
+ third_party/libpng
+ third_party/libsecret
+ third_party/libsrtp
+ third_party/libsync
+ third_party/libtess2/libtess2
+ third_party/libtess2/src/Include
+ third_party/libtess2/src/Source
+ third_party/liburlpattern
+ )
+ use system-libusb || keeplibs+=(
+ third_party/libusb
+ )
+ keeplibs+=(
+ third_party/libva_protected_content
+ )
+ use system-libvpx || keeplibs+=(
+ third_party/libvpx
+ third_party/libvpx/source/libvpx/third_party/x86inc
+ )
+ keeplibs+=(
+ third_party/libwebm
+ third_party/libx11
+ third_party/libxcb-keysyms
+ third_party/libxml/chromium
+ third_party/libyuv
+ third_party/libzip
+ third_party/lit
+ )
+ use libcxx && keeplibs+=(
+ third_party/llvm-libc
+ third_party/llvm-libc/src/shared/
+ )
+ keeplibs+=(
+ third_party/lottie
+ third_party/lss
+ third_party/lzma_sdk
+ third_party/mako
+ third_party/markupsafe
+ third_party/material_color_utilities
+ third_party/metrics_proto
+ third_party/minigbm
+ third_party/ml_dtypes
+ third_party/modp_b64
+ third_party/nasm
+ third_party/nearby
+ third_party/neon_2_sse
+ third_party/node
+ third_party/oak/chromium/proto
+ third_party/oak/chromium/proto/attestation
+ third_party/omnibox_proto
+ third_party/one_euro_filter
+ third_party/openscreen
+ third_party/openscreen/src/third_party/
+ third_party/openscreen/src/third_party/tinycbor/src/src
+ third_party/openxr
+ third_party/ots
+ third_party/pdfium
+ third_party/pdfium/third_party/agg23
+ third_party/pdfium/third_party/bigint
+ third_party/pdfium/third_party/freetype
+ third_party/pdfium/third_party/lcms
+ )
+ use system-openjpeg || keeplibs+=(
+ third_party/pdfium/third_party/libopenjpeg
+ )
+ keeplibs+=(
+ third_party/pdfium/third_party/libtiff
+ third_party/perfetto
+ third_party/perfetto/protos/third_party/android
+ third_party/perfetto/protos/third_party/chromium
+ third_party/perfetto/protos/third_party/pprof
+ third_party/perfetto/protos/third_party/primes
+ third_party/perfetto/protos/third_party/simpleperf
+ third_party/pffft
+ third_party/ply
+ third_party/polymer
+ third_party/private_membership
+ third_party/private-join-and-compute
+ third_party/protobuf
+ third_party/protobuf/third_party/utf8_range
+ third_party/pthreadpool
+ third_party/puffin
+ third_party/pyjson5
+ third_party/pyyaml
+ third_party/rapidhash
+ third_party/readability
+ third_party/rnnoise
+ third_party/rust
+ third_party/ruy
+ third_party/s2cellid
+ third_party/search_engines_data
+ third_party/securemessage
+ third_party/selenium-atoms
+ third_party/sentencepiece
+ third_party/sentencepiece/src/third_party/darts_clone
+ third_party/shell-encryption
+ third_party/simdutf
+ third_party/simplejson
+ third_party/six
+ third_party/skia
+ third_party/skia/include/third_party/vulkan
+ third_party/smhasher
+ )
+ use system-snappy || keeplibs+=(
+ third_party/snappy
+ )
+ keeplibs+=(
+ third_party/spirv-headers
+ third_party/spirv-tools
+ third_party/sqlite
+ third_party/swiftshader
+ third_party/swiftshader/third_party/astc-encoder
+ third_party/swiftshader/third_party/llvm-subzero
+ third_party/swiftshader/third_party/marl
+ third_party/swiftshader/third_party/SPIRV-Headers/include/spirv
+ third_party/swiftshader/third_party/SPIRV-Tools
+ third_party/swiftshader/third_party/subzero
+ third_party/tensorflow_models
+ third_party/tensorflow-text
+ third_party/tflite
+ third_party/tflite/src/third_party/fft2d
+ third_party/tflite/src/third_party/xla/third_party/tsl
+ third_party/tflite/src/third_party/xla/xla/tsl/framework
+ third_party/tflite/src/third_party/xla/xla/tsl/lib/random
+ third_party/tflite/src/third_party/xla/xla/tsl/platform
+ third_party/tflite/src/third_party/xla/xla/tsl/protobuf
+ third_party/tflite/src/third_party/xla/xla/tsl/util
+ third_party/ukey2
+ third_party/utf
+ third_party/vulkan
+ third_party/wayland
+ third_party/webdriver
+ third_party/webgpu-cts
+ third_party/webrtc
+ third_party/webrtc/common_audio/third_party/ooura
+ third_party/webrtc/common_audio/third_party/spl_sqrt_floor
+ third_party/webrtc/modules/third_party/fft
+ third_party/webrtc/modules/third_party/g711
+ third_party/webrtc/modules/third_party/g722
+ third_party/widevine
+ )
+ use system-woff2 || keeplibs+=(
+ third_party/woff2
+ )
+ keeplibs+=(
+ third_party/wuffs
+ third_party/x11proto
+ third_party/xcbproto
+ third_party/xnnpack
+ third_party/zlib/google
+ third_party/zxcvbn-cpp
+ url/third_party/mozilla
+ v8/third_party/inspector_protocol
+ v8/third_party/rapidhash-v8
+ v8/third_party/siphash
+ v8/third_party/utf8-decoder
+ v8/third_party/v8
+ v8/third_party/valgrind
+
+ # gyp -> gn leftovers
+ third_party/speech-dispatcher
+ third_party/usb_ids
+ )
+
+ if use test; then
+ keeplibs+=(
+ third_party/breakpad/breakpad/src/processor
+ third_party/fuzztest
+ third_party/google_benchmark/src/include/benchmark
+ third_party/google_benchmark/src/src
+ third_party/test_fonts
+ third_party/test_fonts/fontconfig
+ third_party/test_fonts/test_fonts
+ )
+ fi
+
+ # USE=system-*
+ if ! use system-harfbuzz; then
+ keeplibs+=( third_party/harfbuzz )
+ fi
+
+ if ! use system-ffmpeg; then
+ keeplibs+=( third_party/ffmpeg third_party/opus )
+ fi
+
+ if ! use system-icu; then
+ keeplibs+=( third_party/icu )
+ fi
+
+ if ! use system-zstd; then
+ keeplibs+=( third_party/zstd )
+ fi
+
+ if ! use system-av1; then
+ keeplibs+=(
+ third_party/dav1d
+ third_party/libaom
+ third_party/libaom/source/libaom/third_party/fastfeat
+ third_party/libaom/source/libaom/third_party/vector
+ third_party/libaom/source/libaom/third_party/x86inc
+ )
+ fi
+
+ if use libcxx; then
+ keeplibs+=(
+ third_party/libc++
+ third_party/llvm-libc
+ )
+ fi
+
+ if ! use system-openh264; then
+ keeplibs+=( third_party/openh264 )
+ fi
+
+ if ! use system-re2; then
+ keeplibs+=( third_party/re2 )
+ fi
+
+ # Arch-specific
+ if use arm64 || use ppc64 ; then
+ keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 )
+ fi
+ # we need to generate ppc64 stuff because upstream does not ship it yet
+ # it has to be done before unbundling.
+ if use ppc64; then
+ pushd third_party/libvpx >/dev/null || die
+ mkdir -p source/config/linux/ppc64 || die
+ # requires git and clang, bug #832803
+ # Revert https://chromium.googlesource.com/chromium/src/+/b463d0f40b08b4e896e7f458d89ae58ce2a27165%5E%21/third_party/libvpx/generate_gni.sh
+ # and https://chromium.googlesource.com/chromium/src/+/71ebcbce867dd31da5f8b405a28fcb0de0657d91%5E%21/third_party/libvpx/generate_gni.sh
+ # since we're not in a git repo
+ sed -i -e "s|^update_readme||g; s|clang-format|${EPREFIX}/bin/true|g; /^git -C/d; /git cl/d; /cd \$BASE_DIR\/\$LIBVPX_SRC_DIR/ign format --in-place \$BASE_DIR\/BUILD.gn\ngn format --in-place \$BASE_DIR\/libvpx_srcs.gni" \
+ generate_gni.sh || die
+ ./generate_gni.sh || die
+ popd >/dev/null || die
+
+ pushd third_party/ffmpeg >/dev/null || die
+ cp libavcodec/ppc/h264dsp.c libavcodec/ppc/h264dsp_ppc.c || die
+ cp libavcodec/ppc/h264qpel.c libavcodec/ppc/h264qpel_ppc.c || die
+ popd >/dev/null || die
+ fi
+
+ # Sanity check keeplibs, on major version bumps it is often necessary to update this list
+ # and this enables us to hit them all at once.
+ # There are some entries that need to be whitelisted (TODO: Why? The file is understandable, the rest seem odd)
+ whitelist_libs=(
+ net/third_party/quic
+ third_party/devtools-frontend/src/front_end/third_party/additional_readme_paths.json
+ third_party/libjingle
+ third_party/mesa
+ third_party/skia/third_party/vulkan
+ third_party/vulkan
+ )
+ local not_found_libs=()
+ for lib in "${keeplibs[@]}"; do
+ if [[ ! -d "${lib}" ]] && ! has "${lib}" "${whitelist_libs[@]}"; then
+ not_found_libs+=( "${lib}" )
+ fi
+ done
+
+ if [[ ${#not_found_libs[@]} -gt 0 ]]; then
+ ewarn "The following \`keeplibs\` directories were not found in the source tree:"
+ for lib in "${not_found_libs[@]}"; do
+ ewarn " ${lib}"
+ done
+ fi
+
+ keeplibs+=( third_party/ungoogled )
+
+ # Remove most bundled libraries. Some are still needed.
+ einfo "Unbundling third-party libraries ..."
+ build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die
+
+ # Interferes with our bundled clang path; we don't want stripped binaries anyway.
+ sed -i -e 's|${clang_base_path}/bin/llvm-strip|/bin/true|g' \
+ -e 's|${clang_base_path}/bin/llvm-objcopy|/bin/true|g' \
+ build/linux/strip_binary.gni || die
+
+ #! Fix for a phony target
+ mkdir -p third_party/rust-toolchain/bin
+ touch third_party/rust-toolchain/bin/rustc
+}
+
+src_configure() {
+ # Calling this here supports resumption via FEATURES=keepwork
+ python_setup
+
+ # 974899: sometimes people try to build with a non-Unicode locale and python gets very upset
+ python_export_utf8_locale || die "Chromium builds require a UTF-8 locale."
+
+ # Bug 491582.
+ export TMPDIR="${WORKDIR}/temp"
+ mkdir -p -m 755 "${TMPDIR}" || die
+
+ # https://bugs.gentoo.org/654216
+ addpredict /dev/dri/ #nowarn
+
+ # Use system-provided libraries.
+ # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733).
+ # TODO: use_system_hunspell (upstream changes needed).
+ # TODO: use_system_protobuf (bug #525560).
+ # TODO: use_system_sqlite (http://crbug.com/22208).
+
+ # libevent: https://bugs.gentoo.org/593458
+ local gn_system_libraries=(
+ flac
+ fontconfig
+ freetype
+ libjpeg
+ libwebp
+ libxml
+ libxslt
+ zlib
+ )
+ if use system-abseil-cpp; then
+ gn_system_libraries+=(
+ absl_algorithm
+ absl_base
+ absl_cleanup
+ absl_container
+ absl_crc
+ absl_debugging
+ absl_flags
+ absl_functional
+ absl_hash
+ absl_log
+ absl_log_internal
+ absl_memory
+ absl_meta
+ absl_numeric
+ absl_random
+ absl_status
+ absl_strings
+ absl_synchronization
+ absl_time
+ absl_types
+ absl_utility
+ )
+ fi
+ if use system-brotli; then
+ gn_system_libraries+=( brotli )
+ fi
+ if use system-crc32c; then
+ gn_system_libraries+=( crc32c )
+ fi
+ if use system-double-conversion; then
+ gn_system_libraries+=( double-conversion )
+ fi
+ if use system-woff2; then
+ gn_system_libraries+=( woff2 )
+ fi
+ if use nvidia; then
+ gn_system_libraries+=( libXNVCtrl )
+ fi
+ if use system-ffmpeg; then
+ gn_system_libraries+=( ffmpeg opus )
+ fi
+ if use system-jsoncpp; then
+ gn_system_libraries+=( jsoncpp )
+ fi
+ if use system-icu; then
+ gn_system_libraries+=( icu )
+ fi
+ if use system-zstd; then
+ gn_system_libraries+=( zstd )
+ fi
+ if use system-av1; then
+ gn_system_libraries+=( dav1d libaom )
+ fi
+ if use system-libusb; then
+ gn_system_libraries+=( libusb )
+ fi
+ if use system-libvpx; then
+ gn_system_libraries+=( libvpx )
+ fi
+ use system-openh264 && gn_system_libraries+=(
+ openh264
+ )
+ use system-re2 && gn_system_libraries+=(
+ re2
+ )
+ use system-snappy && gn_system_libraries+=(
+ snappy
+ )
+
+ build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" ||
+ die "Failed to replace GN files for system libraries"
+
+ # TODO 131: The above call clobbers `enable_freetype = true` in the freetype gni file
+ # drop the last line, then append the freetype line and a new curly brace to end the block
+ local freetype_gni="build/config/freetype/freetype.gni"
+ sed -i -e '$d' ${freetype_gni} || die
+ echo " enable_freetype = true" >> ${freetype_gni} || die
+ echo "}" >> ${freetype_gni} || die
+
+ if use !custom-cflags; then
+ replace-flags "-Os" "-O2"
+ strip-flags
+ # Debug info section overflows without component build
+ # Prevent linker from running out of address space, bug #471810 .
+ filter-flags "-g*"
+ # 949123: Several multimedia components explicitly build with specific CFLAGS and
+ # use runtime detection to enable optimisations; unfortunately any of our CFLAGS are suffixed
+ # to the end of the command line, which causes build failures.
+ fi
+ # Since M150 `skia` will begin breaking for x86_64 due to compilation of `avx512` code paths;
+ # we need to filter these for all arches.
+ filter-flags "-march*" "-mtune*" "-mcpu*"
+
+ # We don't use the same clang version as upstream, and with -Werror
+ # we need to make sure that we don't get superfluous warnings.
+ append-flags -Wno-unknown-warning-option
+ if tc-is-cross-compiler; then # can you cross-compile with the bundled toolchain?
+ export BUILD_CXXFLAGS+=" -Wno-unknown-warning-option"
+ export BUILD_CFLAGS+=" -Wno-unknown-warning-option"
+ fi
+
+ # Start building our GN options
+ local myconf_gn=() # Tip: strings must be quoted, bools or numbers are fine
+
+ if use !bundled-toolchain; then
+ # We already forced the "correct" clang via pkg_setup
+
+ if tc-is-cross-compiler; then
+ CC="${CC} -target ${CHOST} --sysroot ${ESYSROOT}"
+ CXX="${CXX} -target ${CHOST} --sysroot ${ESYSROOT}"
+ BUILD_AR=${AR}
+ BUILD_CC=${CC}
+ BUILD_CXX=${CXX}
+ BUILD_NM=${NM}
+ fi
+
+ # Make sure the build system will use the right tools, bug #340795.
+ tc-export AR CC CXX NM
+
+ strip-unsupported-flags
+ append-ldflags -Wl,--undefined-version # https://bugs.gentoo.org/918897#c32
+
+ myconf_gn+=(
+ "is_clang=true"
+ "clang_use_chrome_plugins=false"
+ "use_clang_modules=false" # M141 enables this for the linux platform by default.
+ 'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+ # From M127 we need to provide a location for libclang and the clang resource dir so that bindgen can find them
+ "bindgen_libclang_path=\"$(get_llvm_prefix)/$(get_libdir)\""
+ "bindgen_clang_resource_dir=\"${EPREFIX}/usr/lib/clang/${LLVM_SLOT}/include\""
+ "bindgen_extra_clang_args=[\"-I${EPREFIX}/usr/lib/clang/${LLVM_SLOT}/include\"]"
+ "clang_base_path=\"${EPREFIX}/usr/lib/clang/${LLVM_SLOT}/\""
+ "rust_bindgen_root=\"${EPREFIX}/usr/\""
+ "rust_sysroot_absolute=\"$(get_rust_prefix)\""
+ "rustc_version=\"${RUST_SLOT}\""
+ )
+
+ # Currently disabled, runtime issues with mold
+ #if tc-ld-is-mold; then
+ # myconf_gn+=(
+ # "use_mold=true"
+ # "use_lld=false"
+ # "linker_path=\"${EPREFIX}/usr/bin/mold\""
+ # )
+ #else
+ myconf_gn+=( "use_lld=true" )
+ #fi
+
+ if [[ ${LLVM_SLOT} -lt 23 ]]; then
+ # Workaround for -fsanitize-ignore-for-ubsan-feature (added in LLVM 23)
+ myconf_gn+=( 'clang_has_ubsan_feature_ignore=false' )
+ fi
+
+ if ! tc-is-cross-compiler; then
+ myconf_gn+=( 'host_toolchain="//build/toolchain/linux/unbundle:default"' )
+ else
+ tc-export BUILD_{AR,CC,CXX,NM}
+ myconf_gn+=(
+ 'host_toolchain="//build/toolchain/linux/unbundle:host"'
+ 'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:host"'
+ "host_pkg_config=\"$(tc-getBUILD_PKG_CONFIG)\""
+ "pkg_config=\"$(tc-getPKG_CONFIG)\""
+ )
+
+ # setup cups-config, build system only uses --libs option
+ if use cups; then
+ mkdir "${T}/cups-config" || die
+ cp "${ESYSROOT}/usr/bin/${CHOST}-cups-config" "${T}/cups-config/cups-config" || die
+ export PATH="${PATH}:${T}/cups-config"
+ fi
+
+ # Don't inherit PKG_CONFIG_PATH from environment
+ local -x PKG_CONFIG_PATH=
+ fi
+
+ fi # !bundled-toolchain
+
+ local myarch
+ myarch="$(tc-arch)"
+ case ${myarch} in
+ amd64)
+ # Bug 530248, 544702, 546984, 853646.
+ use !custom-cflags && filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 \
+ -mno-avx -mno-avx2 -mno-fma -mno-fma4 -mno-xop -mno-sse4a
+ myconf_gn+=( 'target_cpu="x64"' )
+ ;;
+ x86)
+ # Bug 530248, 544702, 546984, 853646.
+ use !custom-cflags && filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 \
+ -mno-avx -mno-avx2 -mno-fma -mno-fma4 -mno-xop -mno-sse4a
+ myconf_gn+=( 'target_cpu="x86"' )
+ ;;
+ arm64)
+ myconf_gn+=( 'target_cpu="arm64"' )
+ ;;
+ ppc64)
+ myconf_gn+=( 'target_cpu="ppc64"' )
+ ;;
+ *)
+ die "Failed to determine target arch, got '${myarch}'."
+ ;;
+ esac
+
+ # Common options
+
+ myconf_gn+=(
+ # Disable code formating of generated files
+ "blink_enable_generated_code_formatting=false"
+ # enable DCHECK with USE=debug only, increases chrome binary size by 30%, bug #811138.
+ # DCHECK is fatal by default, make it configurable at runtime, #bug 807881.
+ "dcheck_always_on=$(usex debug true false)"
+ "dcheck_is_configurable=$(usex debug true false)"
+ # Chromium builds provided by Linux distros should disable the testing config
+ "disable_fieldtrial_testing_config=true"
+ # Custom patch: Enable building Chromium as individual channels (e.g. stable, beta, dev) that
+ # use different profile directories, desktop entries, etc. This enables slotting the ebuild.
+ "enable_channel_branding=true"
+ # 131 began laying the groundwork for replacing freetype with
+ # "Rust-based Fontations set of libraries plus Skia path rendering"
+ # We now need to opt-in
+ "enable_freetype=true"
+ "enable_hangout_services_extension=$(usex hangouts true false)"
+ # Don't need nocompile checks and GN crashes with our config (verify with modern GN)
+ "enable_nocompile_tests=false"
+ # pseudolocales are only used for testing
+ "enable_pseudolocales=false"
+ "enable_widevine=$(usex widevine true false)"
+ # Disable fatal linker warnings, bug 506268.
+ "fatal_linker_warnings=false"
+ # Component build isn't generally intended for use by end users. It's mostly useful
+ # for development and debugging.
+ "is_component_build=false"
+ # GN needs explicit config for Debug/Release as opposed to inferring it from build directory.
+ "is_debug=false"
+ "is_official_build=$(usex official true false)"
+ # Enable ozone wayland and/or headless support
+ "ozone_auto_platforms=false"
+ "ozone_platform_headless=true"
+ # Enables building without non-free unRAR licence
+ "safe_browsing_use_unrar=false"
+ # "thin_lto_enable_optimizations=${use_lto}"
+ "treat_warnings_as_errors=false"
+ # Use in-tree libc++ (buildtools/third_party/libc++ and buildtools/third_party/libc++abi)
+ # instead of the system C++ library for C++ standard library support.
+ # default: true, but let's be explicit (forced since 120 ; USE removed 127).
+ "use_custom_libcxx=true"
+ # Enable ozone wayland and/or headless support
+ "use_ozone=true"
+ # The sysroot is the oldest debian image that chromium supports, we don't need it
+ "use_sysroot=false"
+ # See dependency logic in third_party/BUILD.gn
+ "use_system_harfbuzz=$(usex system-harfbuzz true false)"
+ # "use_thin_lto=${use_lto}"
+ # Only enabled for clang, but gcc has endian macros too
+ "v8_use_libm_trig_functions=true"
+ # use system go
+ "tint_use_system_go=true"
+ )
+
+ myconf_gn+=( "enable_iterator_debugging=$(usex debug true false)" )
+
+ if use debug; then
+ myconf_gn+=(
+ "symbol_level=2"
+ "blink_symbol_level=2"
+ "v8_symbol_level=2"
+ )
+ else
+ myconf_gn+=(
+ "symbol_level=0"
+ "blink_symbol_level=0"
+ "v8_symbol_level=0"
+ )
+ fi
+
+ if use bindist ; then
+ myconf_gn+=(
+ # If this is set to false Chromium won't be able to load any proprietary codecs
+ # even if provided with an ffmpeg capable of h264/aac decoding
+ "proprietary_codecs=true"
+ 'ffmpeg_branding="Chrome"'
+ # build ffmpeg as an external component (libffmpeg.so) that we can remove / substitute
+ "is_component_ffmpeg=true"
+ )
+ else
+ myconf_gn+=(
+ "proprietary_codecs=$(usex proprietary-codecs true false)"
+ "ffmpeg_branding=\"$(usex proprietary-codecs Chrome Chromium)\""
+ )
+ fi
+
+ if use headless; then
+ myconf_gn+=(
+ "enable_print_preview=false"
+ "enable_remoting=false"
+ 'ozone_platform="headless"'
+ "rtc_use_pipewire=false"
+ "use_alsa=false"
+ "use_cups=false"
+ "use_gio=false"
+ "use_glib=false"
+ "use_gtk=false"
+ "use_kerberos=false"
+ "use_libpci=false"
+ "use_pangocairo=false"
+ "use_pulseaudio=false"
+ "use_qt5=false"
+ "use_qt6=false"
+ "use_udev=false"
+ "use_vaapi=false"
+ "use_xkbcommon=false"
+ )
+ else
+ myconf_gn+=(
+ "gtk_version=$(usex gtk4 4 3)"
+ # link pulseaudio directly (DT_NEEDED) instead of using dlopen.
+ # helps with automated detection of ABI mismatches and prevents silent errors.
+ "link_pulseaudio=$(usex pulseaudio true false)"
+ "ozone_platform_wayland=$(usex wayland true false)"
+ "ozone_platform_x11=$(usex X true false)"
+ "ozone_platform=\"$(usex wayland wayland x11)\""
+ "rtc_use_pipewire=$(usex screencast true false)"
+ # As above - link directly instead of dlopening
+ "rtc_link_pipewire=$(usex screencast true false)"
+ "use_cups=$(usex cups true false)"
+ "use_kerberos=$(usex kerberos true false)"
+ "use_pulseaudio=$(usex pulseaudio true false)"
+ "use_qt5=false"
+ "use_system_libffi=$(usex wayland true false)"
+ "use_system_minigbm=true"
+ "use_vaapi=$(usex vaapi true false)"
+ "use_xkbcommon=true"
+ )
+ if use qt6; then
+ local cbuild_libdir
+ cbuild_libdir="$(get_libdir)"
+ if tc-is-cross-compiler; then
+ # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181
+ cbuild_libdir="$($(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libxslt)"
+ cbuild_libdir="${cbuild_libdir:2}"
+ cbuild_libdir="${cbuild_libdir/% }"
+ fi
+ myconf_gn+=(
+ "use_qt6=true"
+ "moc_qt6_path=\"${EPREFIX}/usr/${cbuild_libdir}/qt6/libexec\""
+ )
+ else
+ myconf_gn+=( "use_qt6=false" )
+ fi
+ fi
+
+ # Explicitly disable ICU data file support for system-icu/headless builds.
+ if use system-icu || use headless; then
+ myconf_gn+=( "icu_use_data_file=false" )
+ fi
+
+ if use official; then
+ # Allow building against system libraries in official builds
+ sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
+ tools/generate_shim_headers/generate_shim_headers.py || die
+ # Don't add symbols to build
+ myconf_gn+=( "symbol_level=0" )
+ fi
+
+ if use pgo; then
+ myconf_gn+=(
+ "chrome_pgo_phase=2"
+ "v8_enable_builtins_optimization=true"
+ )
+ else
+ myconf_gn+=( "chrome_pgo_phase=0" )
+ fi
+
+ # Odds and ends
+
+ # skipping typecheck is only supported on amd64, bug #876157
+ if ! use amd64; then
+ myconf_gn+=( "devtools_skip_typecheck=false" )
+ fi
+
+ # Disable external code space for V8 for ppc64. It is disabled for ppc64
+ # by default, but cross-compiling on amd64 enables it again.
+ if tc-is-cross-compiler && use ppc64; then
+ myconf_gn+=( "v8_enable_external_code_space=false" )
+ fi
+
+ # This determines whether or not GN uses the bundled libcxx
+ if use libcxx; then
+ myconf_gn+=( "use_custom_libcxx=true" )
+ else
+ myconf_gn+=(
+ "use_custom_libcxx=false"
+ "use_llvm_libatomic=false"
+ )
+ append-cppflags -U_GLIBCXX_ASSERTIONS #See #318
+ fi
+
+ myconf_gn+=( "use_bluez=$(usex bluetooth true false)" )
+
+ myconf_gn+=( "is_cfi=$(usex cfi true false)" )
+
+ if use cfi; then
+ myconf_gn+=(
+ "use_cfi_icall=true"
+ "use_cfi_cast=true"
+ )
+ fi
+
+ myconf_gn+=(
+ "optimize_webui=$(usex optimize-webui true false)"
+ "use_system_freetype=$(usex system-harfbuzz true false)"
+ "use_system_libopenjpeg2=$(usex system-openjpeg true false)"
+ "enable_pdf=true"
+ "use_system_lcms2=true"
+ "enable_print_preview=true"
+ "use_thin_lto=$(usex thinlto true false)"
+ "thin_lto_enable_optimizations=$(usex optimize-thinlto true false)"
+
+ # Ungoogled flags
+ "enable_mdns=false"
+ "enable_mse_mpeg2ts_stream_parser=$(usex proprietary-codecs true false)"
+ "enable_remoting=false"
+ "enable_reporting=false"
+ "enable_service_discovery=false"
+ "exclude_unwind_tables=true"
+ "google_api_key=\"\""
+ "google_default_client_id=\"\""
+ "google_default_client_secret=\"\""
+ "safe_browsing_mode=0"
+ "use_official_google_api_keys=false"
+ "use_unofficial_version_number=false"
+
+ # "enable_swiftshader=false"
+
+ # Additional flags
+ # "perfetto_use_system_zlib=true"
+ # "use_system_zlib=true"
+ # "use_system_libjpeg=true"
+ # "rtc_build_examples=false"
+ # "enable_chromium_prelude=false"
+ # "enable_updater=false"
+ # "enable_update_notifications=false"
+ # "enable_constraints=false"
+ # "rtc_rusty_base64=false"
+ # "v8_enable_temporal_support=false"
+ # "media_use_symphonia=false"
+ # "pdf_enable_rust_png=false"
+ # "skia_use_libpng_encode=true"
+ # "skia_use_libpng_decode=true"
+ # "skia_use_rust_png_decode=false"
+ # "skia_use_rust_png_encode=false"
+ # "enable_jxl_decoder=false"
+ )
+
+ if use amd64 || use arm64; then
+ myconf_gn+=(
+ "v8_drumbrake_bounds_checks=true"
+ # "v8_enable_drumbrake=true"
+ )
+ fi
+
+ if use thinlto; then
+ # We need to change the default value of import-instr-limit in
+ # LLVM to limit the text size increase. The default value is
+ # 100, and we change it to 30 to reduce the text size increase
+ # from 25% to 10%. The performance number of page_cycler is the
+ # same on two of the thinLTO configurations, we got 1% slowdown
+ # on speedometer when changing import-instr-limit from 100 to 30.
+ # append-ldflags "-Wl,-plugin-opt,-import-instr-limit=30"
+ sed -i '/import_instr_limit = 5/{s++import_instr_limit = 30+;h};${x;/./{x;q0};x;q1}' \
+ build/config/compiler/BUILD.gn || die
+
+ append-ldflags "-Wl,--thinlto-jobs=$(makeopts_jobs)"
+ fi
+
+ # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
+ append-cflags -Wno-builtin-macro-redefined
+ append-cxxflags -Wno-builtin-macro-redefined
+ append-cppflags "-D__DATE__= -D__TIME__= -D__TIMESTAMP__="
+
+ local flags
+ einfo "Building with the following compiler settings:"
+ for flags in C{C,XX} AR NM RANLIB {C,CXX,CPP,LD}FLAGS \
+ EXTRA_GN UGC_{SKIP_{PATCHES,SUBSTITUTION},KEEP_BINARIES} ; do
+ einfo " ${flags} = \"${!flags}\""
+ done
+
+ # Since we build from tarballs, we need to set the channel here so that it can be used in the build.
+ export CHROME_VERSION_EXTRA="${SLOT}"
+
+ einfo "Configuring Chromium ..."
+ # add a `-v` here if gn `hangs` to see which file it's getting stuck on.
+ set -- gn gen --args="${myconf_gn[*]}${EXTRA_GN:+ ${EXTRA_GN}}" out/Release
+ echo "$@"
+ "$@" || die "Failed to configure Chromium"
+
+ # The "if" below should not be executed unless testing
+ if [ ! -z "${NODIE}" ]; then
+ # List all args
+ # gn args --list out/Release
+
+ # Quick compiler check
+ eninja -C out/Release protoc torque
+ fi
+}
+
+src_compile() {
+ # Final link uses lots of file descriptors.
+ ulimit -n 2048
+
+ # Calling this here supports resumption via FEATURES=keepwork
+ python_setup
+
+ # I hate doing this but upstream Rust have yet to come up with a better solution for
+ # us poor packagers. Required for Split LTO units, which are required for CFI.
+ export RUSTC_BOOTSTRAP=1
+
+ # Don't inherit PYTHONPATH from environment, bug #789021, #812689
+ local -x PYTHONPATH=
+
+ # Build mksnapshot and pax-mark it.
+ if use pax-kernel; then
+ local x
+ for x in mksnapshot v8_context_snapshot_generator code_cache_generator; do
+ if tc-is-cross-compiler; then
+ eninja -C out/Release "host/${x}"
+ pax-mark m "out/Release/host/${x}"
+ else
+ eninja -C out/Release "${x}"
+ pax-mark m "out/Release/${x}"
+ fi
+ done
+ fi
+
+ # Even though ninja autodetects number of CPUs, we respect
+ # user's options, for debugging with -j 1 or any other reason.
+ eninja -C out/Release chrome chrome_sandbox $(use test && echo "base_unittests")
+
+ pax-mark m out/Release/chrome
+
+ # This codepath does minimal patching, so we're at the mercy of upstream
+ # CFLAGS. This is fine - we're not intending to force this on users
+ # and we do a lot of flag 'management' anyway.
+ if use bundled-toolchain; then
+ QA_FLAGS_IGNORED="
+ usr/lib64/chromium-browser/chrome
+ usr/lib64/chromium-browser/chrome-sandbox
+ usr/lib64/chromium-browser/chromedriver
+ usr/lib64/chromium-browser/chrome_crashpad_handler
+ usr/lib64/chromium-browser/libEGL.so
+ usr/lib64/chromium-browser/libGLESv2.so
+ usr/lib64/chromium-browser/libVkICD_mock_icd.so
+ usr/lib64/chromium-browser/libVkLayer_khronos_validation.so
+ usr/lib64/chromium-browser/libqt6_shim.so
+ usr/lib64/chromium-browser/libvk_swiftshader.so
+ usr/lib64/chromium-browser/libvulkan.so.1
+ "
+ fi
+
+ use convert-dict && eninja -C out/Release convert_dict
+
+ use enable-driver && eninja -C out/Release chromedriver
+ #use suid && eninja -C out/Release chrome_sandbox
+
+ # use enable-driver && mv out/Release/chromedriver{.unstripped,}
+
+ rm -f out/Release/locales/*.pak.info || die
+
+ # Generate support files (desktop file, manpage, etc.) See: #684550 #706786 #968958
+ ${EPYTHON} "${FILESDIR}/generate-support-files-r1.py" \
+ --installdir "/usr/$(get_libdir)/ungoogled-chromium-browser" \
+ --channel "${SLOT}" ||
+ die "Failed to generate support files"
+}
+
+src_test() {
+ # Tests may be flaky with usersandbox, and the test runner executes significantly faster without.
+ # If you seem to be excluding too many tests for a particular milestone: comment them out, reboot, and
+ # run the tests again. If that doesn't help, try FEATURES="-usersandbox" and send it because obviously the
+ # chromium gods are not smiling upon you today. Do some runtime testing, obvs.
+ local skip_tests=(
+ # Wildcard exclusions (if all tests in a test suite are broken)
+ 'AlternateTestParams/PartitionAllocDeathTest.RepeatedAllocReturnNullDirect/*'
+ 'AlternateTestParams/PartitionAllocDeathTest.RepeatedReallocReturnNullDirect/*'
+ 'AlternateTestParams/PartitionAllocTest.*' # 200+ tests, >= 1 crashes entire test runner with usersandbox.
+ 'CheckExitCodeAfterSignalHandlerDeathTest.*'
+ 'CriticalProcessAndThreadSpotChecks/HangWatcherAnyCriticalThreadTests.*'
+ 'LazyThreadPoolTaskRunnerEnvironmentTest.*' # M142
+ 'ToolsSanityTest.BadVirtualCall*'
+ # Since 151.0.7922.137
+ 'CheckDeathTest.*'
+ 'EnumSetDeathTest.*'
+ 'OptionalRefDeathTest.*'
+ 'RawRefDeathTest.*'
+ 'AlternateTestParams/PartitionAllocDeathTest.CheckTriggered*'
+ 'CallbackHelpersTest.*'
+ 'SafeRefTest.*'
+ 'SpanTest.*'
+ 'WeakValueTableTest.*'
+ 'PlatformSharedMemoryRegionTest.*'
+ 'RefCountedOverflowTest.*'
+ 'SingleThreadTaskRunnerCurrentDefaultHandleTest.*'
+ 'TestFutureDeathTest.*'
+ 'WeakPtrDeathTest.*'
+ 'SafeRefDeathTest.*'
+ 'LinkedListDeathTest.*'
+ 'BindDeathTest.*'
+ 'ReallocProtectedIteratorDeathTest.*'
+ 'PASpanTest.*'
+ 'BackupRefPtrTest.*'
+ 'All/Base64Test.Overflow*'
+ 'ValuesTest.*'
+ 'TaskEnvironmentTest.*'
+ 'CheckedObserverListTest.*'
+ 'MemoryConsumerRegistryTest.*'
+ ProtectedMemoryDeathTest.FailsIfDefinedOutsideOfProtectMemoryRegion
+ StructuredSharedMemoryDeathTest.DuplicateRegion
+ CheckedContiguousIteratorDeathTest.OutOfBounds
+ HeapArrayDeathTest.TakeFirstWithOverSize
+ CallbackDeathTest.RunNullCallbackChecks
+ ObserverListThreadSafeDeathTest.CrossThreadRemovalRestricted
+ SequencedTaskRunnerCurrentDefaultHandleDeathTest.OverrideWithNull
+ TestFutureWithoutTaskEnvironmentDeathTest.WaitShouldDcheckWithoutTaskEnvironment
+ ScopedThreadPriorityDeathTest.NoRealTime
+ ReallocProtectedIteratorDeathTest.StringReallocCrashes
+ BarrierCallbackTest.ErrorToCallCallbackWithZeroCallbacks
+ BarrierClosureTest.ChecksIfCalledForZeroClosures
+ SupportsUserDataTest.ReentrantSetUserDataDuringRemoval
+ TimeBase.AddSubInfinities
+ LibcppHardeningTest.Assertions
+ IDMapTest.RemovedValueHandling
+ MultiMemoryConsumerTest.DuplicateInterventionsCheck
+ PersistentMemoryAllocatorTest.DelayedAllocationTest
+ SequenceCheckerTest.MoveOffSequenceBanned
+ ThreadCheckerTest.MoveOffThreadBanned
+ TokenType.TokenFromNullUnguessableToken
+ ZipTest.CheckForIterationPastTheEnd
+ MemoryConsumerTraitsTest.ActiveConsumerWithPassiveTraitsFails
+ SingleThreadTaskRunnerMainThreadDefaultHandleTest.Basic
+
+ # requires en-us locale
+ SysStrings.SysNativeMBAndWide
+ SysStrings.SysNativeMBToWide
+ SysStrings.SysWideToNativeMB
+ # Specific test cases
+ CancelableEventTest.BothCancelFailureAndSucceedOccurUnderContention
+ FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe
+ HistogramTesterTest.PumaTestUniqueSample
+ ImmediateCrashTest.ExpectedOpcodeSequence # M150
+ PathServiceTest.CheckedGetFailure
+ PlatformThreadTest.CanChangeThreadType
+ RawPtrTest.SetLookupUsesGetForComparison # M146 ; also broken for alpine in M144.
+ RustLogIntegrationTest.CheckAllSeverity
+ StackCanary.ChangingStackCanaryCrashesOnReturn
+ StackTraceDeathTest.StackDumpSignalHandlerIsMallocFree
+ TestLauncherTools.TruncateSnippetFocusedMatchesFatalMessagesTest
+ ThreadPoolEnvironmentConfig.CanUseBackgroundPriorityForWorker
+ DriveInfoTest.GetFileDriveInfo
+
+ )
+ local test_filter="-$(IFS=:; printf '%s' "${skip_tests[*]}")"
+ # test-launcher-bot-mode enables parallelism and plain output
+ # Check individual tests with --gtest_filter=<test you want> --single-process-tests
+ ./out/Release/base_unittests --test-launcher-bot-mode \
+ --test-launcher-jobs="$(get_makeopts_jobs)" \
+ --gtest_filter="${test_filter}" || die "Tests failed!"
+}
+
+src_install() {
+ local browser_suffix
+ if [[ "${SLOT}" != "stable" ]]; then
+ browser_suffix="-${SLOT}"
+ else
+ browser_suffix=""
+ fi
+ local CHROMIUM_HOME="/usr/$(get_libdir)/ungoogled-chromium-browser${browser_suffix}"
+ exeinto "${CHROMIUM_HOME}"
+ doexe out/Release/chrome
+
+ #newexe out/Release/chrome_sandbox chrome-sandbox
+ #fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox"
+
+ use enable-driver && doexe out/Release/chromedriver
+
+ #* https://github.com/ungoogled-software/ungoogled-chromium/pull/3563
+ doexe out/Release/chrome_crashpad_handler
+
+ if use convert-dict; then
+ newexe "${FILESDIR}/update-dicts.sh" update-dicts.sh
+ doexe out/Release/convert_dict
+ fi
+
+ ozone_auto_session () {
+ use X && use wayland && ! use headless && echo true || echo false
+ }
+
+ cat <<- EOF > "${D}${CHROMIUM_HOME}/chromium-launcher.sh" || die
+ #!/bin/bash
+ # Wrapper to launch slotted Chromium via the chromium-common launcher script.
+ export CHROME_DESKTOP="ungoogled-chromium-browser${browser_suffix}.desktop"
+ export CHROME_EXEC_NAME="ungoogled-chromium-browser${browser_suffix}"
+ export CHROME_VERSION_EXTRA="${SLOT}"
+ export CHROME_WRAPPER="\$(readlink -f "\$0")"
+ export OZONE_AUTO_SESSION=$(ozone_auto_session)
+
+ exec /usr/libexec/chromium/chromium-launcher.sh "\$@"
+ EOF
+
+ chmod 755 "${D}${CHROMIUM_HOME}/chromium-launcher.sh" || die
+
+ # It is important that we name the target "chromium-browser",
+ # xdg-utils expect it; bug #355517.
+ dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/ungoogled-chromium-browser${browser_suffix}
+ # keep the old symlink around for consistency
+ dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/ungoogled-chromium${browser_suffix}
+
+ use enable-driver && dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/ungoogled-chromedriver${browser_suffix}
+
+ pushd out/Release/locales > /dev/null || die
+ chromium_remove_language_paks
+ popd > /dev/null || die
+
+ insinto "${CHROMIUM_HOME}"
+ doins out/Release/*.bin
+ doins out/Release/*.pak
+ doins -r out/Release/hyphen-data
+
+ if use bindist; then
+ # We built libffmpeg as a component library, but we can't distribute it
+ # with proprietary codec support. Remove it and make a symlink to the requested
+ # system library.
+ rm -f out/Release/libffmpeg.so \
+ || die "Failed to remove bundled libffmpeg.so (with proprietary codecs)"
+ # symlink the libffmpeg.so from either ffmpeg-chromium or ffmpeg[chromium].
+ einfo "Creating symlink to libffmpeg.so from $(usex ffmpeg-chromium ffmpeg-chromium ffmpeg[chromium])..."
+ dosym ../chromium/libffmpeg.so$(usex ffmpeg-chromium .${PV%%\.*} "") \
+ /usr/$(get_libdir)/ungoogled-chromium-browser/libffmpeg.so
+ fi
+
+ (
+ shopt -s nullglob
+ local files=(out/Release/*.so out/Release/*.so.[0-9])
+ [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}"
+ )
+
+ if ! use system-icu && ! use headless; then
+ doins out/Release/icudtl.dat
+ fi
+
+ doins -r out/Release/locales
+ #doins -r out/Release/MEIPreload
+
+ # Install vk_swiftshader_icd.json; bug #827861
+ doins out/Release/vk_swiftshader_icd.json
+
+ if [[ -d out/Release/swiftshader ]]; then
+ insinto "${CHROMIUM_HOME}/swiftshader"
+ doins out/Release/swiftshader/*.so
+ fi
+
+ use widevine && dosym WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so "${CHROMIUM_HOME}/libwidevinecdm.so"
+
+ # Install icons
+ local branding size
+ for size in 16 24 32 48 64 128 256 ; do
+ case ${size} in
+ 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;;
+ *) branding="chrome/app/theme/chromium" ;;
+ esac
+ newicon -s ${size} "${branding}/product_logo_${size}.png" \
+ ungoogled-chromium-browser${browser_suffix}.png
+ done
+
+ # Install desktop entry
+ domenu out/Release/ungoogled-chromium-browser${browser_suffix}.desktop
+
+ # Install GNOME default application entry (bug #303100).
+ insinto /usr/share/gnome-control-center/default-apps
+ doins out/Release/ungoogled-chromium-browser${browser_suffix}.xml
+
+ # Install AppStream metadata
+ insinto /usr/share/appdata
+ doins out/Release/ungoogled-chromium-browser${browser_suffix}.appdata.xml
+
+ # Install manpage; bug #684550
+ doman out/Release/ungoogled-chromium-browser${browser_suffix}.1
+ dosym ungoogled-chromium-browser${browser_suffix}.1 /usr/share/man/man1/ungoogled-chromium${browser_suffix}.1
+
+ readme.gentoo_create_doc
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+ readme.gentoo_print_elog
+
+ if use !headless && [[ -z "${REPLACING_VERSIONS}" ]]; then
+ if use vaapi; then
+ elog "Hardware-accelerated video decoding configuration:"
+ elog
+ elog "Chromium supports multiple backends for hardware acceleration. To enable one,"
+ elog " Add to CHROMIUM_FLAGS in /etc/chromium/default:"
+ elog
+ elog "1. VA-API with OpenGL (recommended for most users):"
+ elog " --enable-features=AcceleratedVideoDecodeLinuxGL"
+ elog " VaapiVideoDecoder may need to be added as well, but try without first."
+ elog
+ if use wayland; then
+ elog "2. Enhanced Wayland/EGL performance:"
+ elog " --enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL"
+ elog
+ fi
+ if use X; then
+ elog "$(usex wayland "3" "2"). VA-API with Vulkan:"
+ elog " --enable-features=VaapiVideoDecoder,VaapiIgnoreDriverChecks,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE"
+ elog
+ if use wayland; then
+ elog " NOTE: Vulkan acceleration requires X11 and will not work under Wayland sessions."
+ elog " Use OpenGL-based acceleration instead when running under Wayland."
+ elog
+ fi
+ fi
+ elog "Additional options:"
+ elog " To enable hardware-accelerated encoding (if supported)"
+ elog " add 'AcceleratedVideoEncoder' to your feature list"
+ elog " VaapiIgnoreDriverChecks bypasses driver compatibility checks"
+ elog " (may be needed for newer/unsupported hardware)"
+ elog
+ else
+ elog "This Chromium build was compiled without VA-API support, which provides"
+ elog "hardware-accelerated video decoding."
+ fi
+ if use screencast; then
+ elog "Screencast is disabled by default at runtime. Either enable it"
+ elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer"
+ elog "inside Chromium or add --enable-features=WebRTCPipeWireCapturer"
+ elog "to CHROMIUM_FLAGS in /etc/chromium/default."
+ elog
+ elog "Additional setup may be required for screencasting to work."
+ elog "See issue: https://github.com/PF4Public/gentoo-overlay/issues/314"
+ fi
+ if use gtk4; then
+ elog "Chromium prefers GTK3 over GTK4 at runtime. To override this"
+ elog "behaviour you need to pass --gtk-version=4, e.g. by adding it"
+ elog "to CHROMIUM_FLAGS in /etc/chromium/default."
+ fi
+ if use widevine; then
+ elog "widevine requires binary plugins, which are distributed separately"
+ elog "Make sure you have www-plugins/chrome-binary-plugins installed"
+ fi
+ fi
+
+ if systemd_is_booted && ! [[ -f "/etc/machine-id" ]]; then
+ ewarn "The lack of an '/etc/machine-id' file on this system booted with systemd"
+ ewarn "indicates that the Gentoo handbook was not followed to completion."
+ ewarn ""
+ ewarn "Chromium is known to behave unpredictably with this system configuration;"
+ ewarn "please complete the configuration of this system before logging any bugs."
+ fi
+
+ # Stable slot doesn't change profile directory, and it's vanishingly unlikely that users will downgrade from dev.
+ if [[ -n "${REPLACING_VERSIONS}" ]]; then
+ local replacing_non_slotted=false
+ # there could be more than one PVR
+ for version in ${REPLACING_VERSIONS}; do
+ if ver_test "${version}" -le "145.0.7632.116"; then
+ replacing_non_slotted=true
+ break
+ fi
+ done
+ if ${replacing_non_slotted}; then
+ ewarn "This version of Chromium has replaced a non-slotted ebuild."
+ if [[ ${SLOT} != "stable" ]]; then
+ ewarn "This channel has its own profile directory, so your existing profile will not be used."
+ ewarn "To use your existing profile, either copy or move it to the new location."
+ ewarn "See https://wiki.gentoo.org/wiki/Chromium#Profile_Directories for more information."
+ ewarn ""
+ fi
+ ewarn "Any existing Progressive Web Apps (PWAs) will need to be reinstalled,"
+ ewarn "or have the path in the desktop files updated to point to the new wrapper script."
+ fi
+ fi
+}
+
+record_failed_patch() {
+ FAILED_PATCHES+=( "$1" )
+}
+
+eapply_wrapper () {
+ if [ ! -z "${NODIE}" ]; then
+ local operand f
+ for operand in "$@"; do
+ if [[ -d "${operand}" ]]; then
+ # eapply bails on the first failing patch in a directory,
+ # so apply each patch individually to test them all and
+ # record every failure
+ for f in "${operand%/}"/*; do
+ case "${f##*/}" in
+ *.patch|*.diff)
+ nonfatal eapply "${f}" || record_failed_patch "${f}"
+ ;;
+ esac
+ done
+ else
+ nonfatal eapply "${operand}" || record_failed_patch "${operand}"
+ fi
+ done
+ else
+ eapply "$@"
+ fi
+}
+
+git_wrapper () {
+ # The last argument is expected to be the patch file, so failed
+ # patches can be recorded by name in NODIE mode
+ if [ ! -z "${NODIE}" ]; then
+ git "$@" || record_failed_patch "${@: -1}"
+ else
+ git "$@" || die
+ fi
+}
+
+filter_wrapper () {
+ einfo "Applying ${1##*/}"
+ #? fuzz factor of 3 is OK?
+ if [ ! -z "${NODIE}" ]; then
+ filterdiff -p1 "${@:2}" < "$1" | patch -F 3 -p1 || record_failed_patch "$1"
+ else
+ filterdiff -p1 "${@:2}" < "$1" | patch -F 3 -p1 || die
+ fi
+}