summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-09-16 03:04:44 -0500
committerroot <root@alpha.trunkmasters.com>2026-09-16 03:04:44 -0500
commit687a263b5212436c1ced6387f36d785b0a34599f (patch)
tree0196c232ff96b66c09be11acb466add8ce44899e
parentafe8b68a6636c2d8e95d0710f831470d59ab2790 (diff)
downloadbaldeagleos-repo-687a263b5212436c1ced6387f36d785b0a34599f.tar.gz
baldeagleos-repo-687a263b5212436c1ced6387f36d785b0a34599f.tar.xz
baldeagleos-repo-687a263b5212436c1ced6387f36d785b0a34599f.zip
Adding metadata
-rw-r--r--app-admin/ansible-lint/Manifest2
-rw-r--r--app-admin/ansible-lint/ansible-lint-26.8.0.ebuild73
-rw-r--r--app-doc/cantera-docs/Manifest1
-rw-r--r--app-doc/cantera-docs/cantera-docs-3.0.0.ebuild23
-rw-r--r--app-emulation/dxvk/Manifest1
-rw-r--r--app-emulation/dxvk/dxvk-3.1.1.ebuild156
-rw-r--r--app-emulation/firecracker-bin/Manifest6
-rw-r--r--app-emulation/firecracker-bin/firecracker-bin-1.16.0.ebuild87
-rw-r--r--app-emulation/firecracker-bin/firecracker-bin-1.17.0.ebuild (renamed from app-emulation/firecracker-bin/firecracker-bin-1.15.1.ebuild)0
-rw-r--r--app-emulation/libvirt/libvirt-12.2.0.ebuild2
-rw-r--r--app-misc/qlcplus/Manifest2
-rw-r--r--app-misc/qlcplus/qlcplus-4.14.4.ebuild (renamed from app-misc/qlcplus/qlcplus-4.14.3.ebuild)14
-rw-r--r--app-misc/siegfried/Manifest3
-rw-r--r--app-misc/siegfried/siegfried-1.11.8.ebuild51
-rw-r--r--app-misc/yq/yq-4.1.2-r1.ebuild2
-rw-r--r--app-text/lowdown/lowdown-3.1.1.ebuild2
-rw-r--r--app-text/poppler/poppler-26.03.0.ebuild2
-rw-r--r--app-text/poppler/poppler-26.05.0-r1.ebuild2
-rw-r--r--app-text/poppler/poppler-9999.ebuild2
-rw-r--r--app-text/qpdf/qpdf-12.4.1-r1.ebuild (renamed from app-text/qpdf/qpdf-12.4.1.ebuild)5
-rw-r--r--dev-cpp/cpp-httplib/Manifest3
-rw-r--r--dev-cpp/cpp-httplib/cpp-httplib-0.38.0.ebuild100
-rw-r--r--dev-cpp/cpp-httplib/cpp-httplib-0.56.0.ebuild (renamed from dev-cpp/cpp-httplib/cpp-httplib-0.50.1.ebuild)0
-rw-r--r--dev-cpp/glaze/Manifest1
-rw-r--r--dev-cpp/glaze/glaze-8.1.0.ebuild41
-rw-r--r--dev-cpp/tbb/Manifest6
-rw-r--r--dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch3
-rw-r--r--dev-cpp/tbb/files/tbb-2021.7.0-abort.patch11
-rw-r--r--dev-cpp/tbb/files/tbb-2021.7.0-dynamicLink.patch10
-rw-r--r--dev-cpp/tbb/files/tbb-2021.7.0-pthread-eagain.patch135
-rw-r--r--dev-cpp/tbb/files/tbb-2021.8.0-gcc-13.patch26
-rw-r--r--dev-cpp/tbb/files/tbb-2021.9.0-dynamicLink.patch10
-rw-r--r--dev-cpp/tbb/files/tbb-2023.1.0-no-clobber-toolchain.patch79
-rw-r--r--dev-cpp/tbb/tbb-2021.12.0.ebuild58
-rw-r--r--dev-cpp/tbb/tbb-2021.13.0.ebuild59
-rw-r--r--dev-cpp/tbb/tbb-2021.7.0-r1.ebuild50
-rw-r--r--dev-cpp/tbb/tbb-2021.9.0.ebuild59
-rw-r--r--dev-cpp/tbb/tbb-2022.0.0-r1.ebuild60
-rw-r--r--dev-cpp/tbb/tbb-2022.3.0.ebuild62
-rw-r--r--dev-cpp/tbb/tbb-2023.1.0.ebuild71
-rw-r--r--dev-cpp/ut2-glaze/Manifest1
-rw-r--r--dev-cpp/ut2-glaze/ut2-glaze-1.2.1.ebuild27
-rw-r--r--dev-db/mariadb/Manifest16
-rw-r--r--dev-db/mariadb/mariadb-10.11.14-r1.ebuild1336
-rw-r--r--dev-db/mariadb/mariadb-10.11.19.ebuild (renamed from dev-db/mariadb/mariadb-10.11.15-r1.ebuild)28
-rw-r--r--dev-db/mariadb/mariadb-10.6.23-r1.ebuild1347
-rw-r--r--dev-db/mariadb/mariadb-10.6.24-r1.ebuild1354
-rw-r--r--dev-db/mariadb/mariadb-10.6.27.ebuild1353
-rw-r--r--dev-db/mariadb/mariadb-11.4.13.ebuild (renamed from dev-db/mariadb/mariadb-11.4.8-r1.ebuild)45
-rw-r--r--dev-db/mariadb/mariadb-11.8.3-r2.ebuild1320
-rw-r--r--dev-db/mariadb/mariadb-11.8.9.ebuild (renamed from dev-db/mariadb/mariadb-11.8.5-r2.ebuild)13
-rw-r--r--dev-db/mariadb/mariadb-12.0.2-r2.ebuild1323
-rw-r--r--dev-db/mariadb/mariadb-12.0.2-r3.ebuild1324
-rw-r--r--dev-db/mariadb/mariadb-12.3.3.ebuild (renamed from dev-db/mariadb/mariadb-11.8.3-r5.ebuild)15
-rw-r--r--dev-db/mysql/Manifest4
-rw-r--r--dev-db/mysql/mysql-8.0.46.ebuild1321
-rw-r--r--dev-db/mysql/mysql-8.4.11.ebuild (renamed from dev-db/mysql/mysql-8.4.9.ebuild)2
-rw-r--r--dev-embedded/esptool/Manifest1
-rw-r--r--dev-embedded/esptool/esptool-5.4.0.ebuild77
-rw-r--r--dev-java/openjdk-bin/Manifest40
-rw-r--r--dev-java/openjdk-bin/openjdk-bin-17.0.20.1_p1-r1.ebuild156
-rw-r--r--dev-java/openjdk-bin/openjdk-bin-21.0.12.1_p1-r1.ebuild157
-rw-r--r--dev-java/openjdk-bin/openjdk-bin-25.0.4.1_p1-r1.ebuild169
-rw-r--r--dev-java/openjdk-bin/openjdk-bin-27_beta35-r1.ebuild176
-rw-r--r--dev-java/openjdk-bin/openjdk-bin-28_alpha13-r1.ebuild176
-rw-r--r--dev-java/openjdk/openjdk-8.504_p01.ebuild54
-rw-r--r--dev-lang/jsonnet/jsonnet-0.22.0.ebuild2
-rw-r--r--dev-lang/php/php-8.2.33.ebuild2
-rw-r--r--dev-lang/php/php-8.3.33.ebuild2
-rw-r--r--dev-libs/aws-c-s3/Manifest1
-rw-r--r--dev-libs/aws-c-s3/aws-c-s3-1.1.2.ebuild48
-rw-r--r--dev-libs/gweather-locations/gweather-locations-2026.2.ebuild17
-rw-r--r--dev-libs/iniparser/Manifest1
-rw-r--r--dev-libs/iniparser/iniparser-4.3.0.ebuild39
-rw-r--r--dev-libs/libpeas/libpeas-2.2.1.ebuild2
-rw-r--r--dev-perl/Crypt-OpenSSL-RSA/Crypt-OpenSSL-RSA-0.370.0.ebuild2
-rw-r--r--dev-perl/ExtUtils-XSpp/ExtUtils-XSpp-0.190.0.ebuild (renamed from dev-perl/ExtUtils-XSpp/ExtUtils-XSpp-0.180.0-r2.ebuild)10
-rw-r--r--dev-perl/ExtUtils-XSpp/Manifest2
-rw-r--r--dev-perl/Feature-Compat-Class/Feature-Compat-Class-0.80.0.ebuild2
-rw-r--r--dev-perl/GnuPG-Interface/GnuPG-Interface-1.70.0.ebuild2
-rw-r--r--dev-perl/Gtk2/Gtk2-1.249.930-r2.ebuild2
-rw-r--r--dev-perl/Linux-DVB/Linux-DVB-1.30.0.ebuild1
-rw-r--r--dev-perl/Object-Pad/Object-Pad-0.825.0.ebuild2
-rw-r--r--dev-perl/Sys-Virt/Sys-Virt-12.2.0.ebuild2
-rw-r--r--dev-perl/Wx-GLCanvas/Wx-GLCanvas-0.90.0-r2.ebuild (renamed from dev-perl/Wx-GLCanvas/Wx-GLCanvas-0.90.0-r1.ebuild)13
-rw-r--r--dev-perl/Wx/Wx-0.993.200-r5.ebuild (renamed from dev-perl/Wx/Wx-0.993.200-r4.ebuild)2
-rw-r--r--dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.410.0.ebuild2
-rw-r--r--dev-perl/libintl-perl/libintl-perl-1.370.0.ebuild2
-rw-r--r--dev-php/pecl-parallel/Manifest1
-rw-r--r--dev-php/pecl-parallel/pecl-parallel-1.2.14.ebuild2
-rw-r--r--dev-php/pecl-parallel/pecl-parallel-1.2.15.ebuild19
-rw-r--r--dev-python/awscrt/Manifest2
-rw-r--r--dev-python/awscrt/awscrt-0.36.4.ebuild (renamed from dev-python/awscrt/awscrt-0.36.2.ebuild)24
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.43.95.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.95.ebuild80
-rw-r--r--dev-python/esp-pylib/Manifest2
-rw-r--r--dev-python/esp-pylib/esp-pylib-1.1.4.ebuild30
-rw-r--r--dev-python/esp-pylib/metadata.xml14
-rw-r--r--dev-python/filelock/Manifest4
-rw-r--r--dev-python/filelock/filelock-3.32.7.ebuild (renamed from dev-python/filelock/filelock-3.31.0.ebuild)2
-rw-r--r--dev-python/flask-compress/Manifest3
-rw-r--r--dev-python/flask-compress/flask-compress-1.25.ebuild (renamed from dev-python/flask-compress/flask-compress-1.23.ebuild)5
-rw-r--r--dev-python/jupyter-server/Manifest1
-rw-r--r--dev-python/jupyter-server/jupyter-server-2.21.1.ebuild65
-rw-r--r--dev-python/jwcrypto/Manifest1
-rw-r--r--dev-python/jwcrypto/jwcrypto-1.6.1.ebuild32
-rw-r--r--dev-python/libvirt-python/libvirt-python-12.2.0.ebuild2
-rw-r--r--dev-python/numpydoc/Manifest1
-rw-r--r--dev-python/numpydoc/numpydoc-1.11.0.ebuild49
-rw-r--r--dev-python/plotly/Manifest2
-rw-r--r--dev-python/plotly/plotly-7.1.0.ebuild (renamed from dev-python/plotly/plotly-6.9.0.ebuild)0
-rw-r--r--dev-python/propcache/Manifest2
-rw-r--r--dev-python/propcache/propcache-0.5.4.ebuild55
-rw-r--r--dev-python/pymdown-extensions/Manifest2
-rw-r--r--dev-python/pymdown-extensions/pymdown-extensions-12.0.1.ebuild34
-rw-r--r--dev-python/pyproject-api/Manifest4
-rw-r--r--dev-python/pyproject-api/pyproject-api-1.11.1.ebuild (renamed from dev-python/pyproject-api/pyproject-api-1.10.1.ebuild)2
-rw-r--r--dev-python/pyproject-hooks/Manifest2
-rw-r--r--dev-python/pyproject-hooks/pyproject-hooks-1.3.0.ebuild37
-rw-r--r--dev-python/sqlalchemy/Manifest1
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-2.0.54.ebuild95
-rw-r--r--dev-python/threadpoolctl/Manifest1
-rw-r--r--dev-python/threadpoolctl/threadpoolctl-3.7.0.ebuild65
-rw-r--r--dev-python/tifffile/Manifest2
-rw-r--r--dev-python/tifffile/tifffile-2026.9.15.ebuild (renamed from dev-python/tifffile/tifffile-2026.8.23.ebuild)0
-rw-r--r--dev-python/tornado/Manifest2
-rw-r--r--dev-python/tornado/tornado-6.5.10.ebuild61
-rw-r--r--dev-python/trakit/Manifest2
-rw-r--r--dev-python/trakit/trakit-0.4.0.ebuild (renamed from dev-python/trakit/trakit-0.2.5.ebuild)11
-rw-r--r--dev-python/urllib3/Manifest2
-rw-r--r--dev-python/urllib3/urllib3-2.8.0.ebuild118
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.12.15.ebuild100
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.12.15.ebuild151
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/virtualenv-21.7.10.ebuild117
-rw-r--r--dev-python/xvfbwrapper/Manifest1
-rw-r--r--dev-python/xvfbwrapper/xvfbwrapper-0.2.34.ebuild31
-rw-r--r--dev-python/yarl/Manifest4
-rw-r--r--dev-python/yarl/yarl-1.25.1.ebuild (renamed from dev-python/yarl/yarl-1.24.2.ebuild)2
-rw-r--r--dev-util/glslang/glslang-1.4.350.0.ebuild2
-rw-r--r--dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.6.3-r1.ebuild4
-rw-r--r--dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.1-r1.ebuild4
-rw-r--r--dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.2.ebuild4
-rw-r--r--dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1-r1.ebuild4
-rw-r--r--dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.2.ebuild4
-rw-r--r--dev-util/pixi/Manifest4
-rw-r--r--dev-util/pixi/pixi-0.81.0.ebuild (renamed from dev-util/pixi/pixi-0.79.0.ebuild)0
-rw-r--r--dev-util/redo/redo-0.42d-r1.ebuild2
-rw-r--r--dev-util/spirv-headers/spirv-headers-1.4.350.0.ebuild2
-rw-r--r--dev-util/spirv-tools/spirv-tools-1.4.350.0.ebuild2
-rw-r--r--dev-util/vulkan-headers/vulkan-headers-1.4.350.0.ebuild2
-rw-r--r--dev-util/vulkan-tools/vulkan-tools-1.4.350.0.ebuild2
-rw-r--r--dev-util/vulkan-utility-libraries/vulkan-utility-libraries-1.4.350.0.ebuild2
-rw-r--r--dev-vcs/tig/tig-2.6.1.ebuild2
-rw-r--r--eclass/nginx-module.eclass138
-rw-r--r--eclass/nginx.eclass8
-rw-r--r--gui-apps/waybar/files/meson-fix-build.patch38
-rw-r--r--gui-apps/waybar/waybar-0.14.0.ebuild13
-rw-r--r--gui-apps/waybar/waybar-0.15.0.ebuild14
-rw-r--r--mail-filter/popfile/files/1.1.3-select-timeout.patch17
-rw-r--r--mail-filter/popfile/popfile-1.1.3-r2.ebuild (renamed from mail-filter/popfile/popfile-1.1.3-r1.ebuild)12
-rw-r--r--mail-mta/postfix/Manifest4
-rw-r--r--mail-mta/postfix/postfix-3.12_pre20260915.ebuild (renamed from mail-mta/postfix/postfix-3.12_pre20260902.ebuild)0
-rw-r--r--media-gfx/gimp/Manifest1
-rw-r--r--media-gfx/gimp/gimp-3.2.6.ebuild320
-rw-r--r--media-gfx/gimp/gimp-9999.ebuild2
-rw-r--r--media-libs/gegl/Manifest1
-rw-r--r--media-libs/gegl/gegl-0.4.72.ebuild182
-rw-r--r--media-libs/gegl/gegl-9999.ebuild11
-rw-r--r--media-libs/gegl/metadata.xml1
-rw-r--r--media-libs/glycin-loaders/Manifest2
-rw-r--r--media-libs/glycin-loaders/glycin-loaders-2.2.1.ebuild112
-rw-r--r--media-libs/libaom/Manifest2
-rw-r--r--media-libs/libaom/files/libaom-3.14.1-allow-fortify-source.patch13
-rw-r--r--media-libs/libaom/files/libaom-3.14.1-dont-install-static.patch14
-rw-r--r--media-libs/libaom/libaom-3.14.1.ebuild152
-rw-r--r--media-libs/libaom/libaom-9999.ebuild23
-rw-r--r--media-libs/libmediainfo/Manifest1
-rw-r--r--media-libs/libmediainfo/libmediainfo-26.05.ebuild102
-rw-r--r--media-libs/opensubdiv/Manifest1
-rw-r--r--media-libs/opensubdiv/files/opensubdiv-3.6.1-cuda-13.patch25
-rw-r--r--media-libs/opensubdiv/opensubdiv-3.6.1-r1.ebuild (renamed from media-libs/opensubdiv/opensubdiv-3.6.1.ebuild)1
-rw-r--r--media-libs/opensubdiv/opensubdiv-3.7.0.ebuild255
-rw-r--r--media-libs/shaderc/shaderc-2026.2.ebuild2
-rw-r--r--media-libs/vulkan-layers/vulkan-layers-1.4.350.0.ebuild2
-rw-r--r--media-libs/vulkan-loader/vulkan-loader-1.4.350.0.ebuild2
-rw-r--r--media-libs/zint/zint-2.16.0.ebuild2
-rw-r--r--media-tv/mythtv/Manifest1
-rw-r--r--media-tv/mythtv/mythtv-36.0_p20260819.ebuild390
-rw-r--r--media-tv/plex-media-server/Manifest18
-rw-r--r--media-tv/plex-media-server/plex-media-server-1.43.4.10903.ebuild (renamed from media-tv/plex-media-server/plex-media-server-1.43.3.10896.ebuild)2
-rw-r--r--media-video/mediainfo/Manifest1
-rw-r--r--media-video/mediainfo/mediainfo-26.05.ebuild92
-rw-r--r--net-dialup/freeradius/Manifest1
-rw-r--r--net-dialup/freeradius/files/freeradius-3.0.20-systemd-service.patch57
-rw-r--r--net-dialup/freeradius/freeradius-3.2.6-r1.ebuild323
-rw-r--r--net-dialup/ppp/Manifest2
-rw-r--r--net-dialup/ppp/files/pppd.tmpfiles2
-rw-r--r--net-dialup/ppp/ppp-2.5.2.ebuild116
-rw-r--r--net-dialup/ppp/ppp-2.5.3.ebuild116
-rw-r--r--net-dns/bind/bind-9.20.27.ebuild2
-rw-r--r--net-dns/dnsdist/Manifest4
-rw-r--r--net-dns/dnsdist/dnsdist-2.1.2.ebuild186
-rw-r--r--net-dns/dnsdist/dnsdist-9999.ebuild6
-rw-r--r--net-dns/dnsdist/metadata.xml1
-rw-r--r--net-dns/dnsmasq/dnsmasq-2.93.ebuild2
-rw-r--r--net-dns/doggo/Manifest2
-rw-r--r--net-dns/doggo/doggo-1.4.0.ebuild36
-rw-r--r--net-dns/knot/Manifest3
-rw-r--r--net-dns/knot/knot-3.6.0.ebuild282
-rw-r--r--net-dns/redis-knot/Manifest2
-rw-r--r--net-dns/redis-knot/redis-knot-3.6.0.ebuild50
-rw-r--r--net-misc/lldpd/lldpd-1.0.22.ebuild2
-rw-r--r--net-misc/r8125/Manifest1
-rw-r--r--net-misc/r8125/r8125-9.018.00.ebuild59
-rw-r--r--net-nntp/sabnzbd/Manifest1
-rw-r--r--net-nntp/sabnzbd/sabnzbd-5.1.3.ebuild156
-rw-r--r--profiles/package.mask/00-gentoo9
-rw-r--r--sci-libs/cantera/Manifest3
-rw-r--r--sci-libs/cantera/cantera-3.0.1-r1.ebuild147
-rw-r--r--sci-libs/cantera/cantera-3.0.1-r2.ebuild149
-rw-r--r--sci-libs/cantera/cantera-3.1.0-r1.ebuild156
-rw-r--r--sci-libs/cantera/cantera-3.2.0-r1.ebuild (renamed from sci-libs/cantera/cantera-3.1.0.ebuild)18
-rw-r--r--sci-libs/cantera/cantera-3.2.0-r2.ebuild (renamed from sci-libs/cantera/cantera-3.2.0.ebuild)16
-rw-r--r--sci-libs/cantera/files/cantera-3.0.0_env.patch37
-rw-r--r--sci-libs/cantera/files/cantera-3.0.1_add_fmt11_support.patch46
-rw-r--r--sci-libs/cantera/files/cantera-3.0.1_fix_fmt_with_c++20.patch323
-rw-r--r--sci-libs/cantera/files/cantera-3.1.0_enable_py3.14_packaging.patch12
-rw-r--r--sci-libs/cantera/files/cantera-3.2.0_env.patch (renamed from sci-libs/cantera/files/cantera-3.1.0_env.patch)0
-rw-r--r--sci-libs/cantera/files/cantera-3.2.0_fix_species_slicing_error_numpy-2.4.patch48
-rw-r--r--sci-libs/gdal/Manifest3
-rw-r--r--sci-libs/gdal/gdal-3.13.3.ebuild529
-rw-r--r--sci-mathematics/mathmod/files/mathmod-13.0-fix_comparison.patch24
-rw-r--r--sci-mathematics/mathmod/mathmod-13.0-r1.ebuild5
-rw-r--r--sec-keys/openpgp-keys-libvirt/openpgp-keys-libvirt-20260831.ebuild2
-rw-r--r--sec-keys/openpgp-keys-mysql/Manifest1
-rw-r--r--sec-keys/openpgp-keys-mysql/openpgp-keys-mysql-20231023.ebuild20
-rw-r--r--sec-keys/openpgp-keys-openvpn/openpgp-keys-openvpn-202600704.ebuild2
-rw-r--r--sys-apps/amdgpu_top/amdgpu_top-0.11.5.ebuild2
-rw-r--r--sys-boot/limine/Manifest2
-rw-r--r--sys-boot/limine/limine-12.9.0.ebuild (renamed from sys-boot/limine/limine-12.6.1.ebuild)0
-rw-r--r--sys-cluster/prrte/prrte-4.1.0-r1.ebuild (renamed from sys-cluster/prrte/prrte-4.1.0.ebuild)6
-rw-r--r--sys-process/atop/Manifest1
-rw-r--r--sys-process/atop/atop-2.13.0.ebuild151
-rw-r--r--sys-process/atop/files/atop-2.13.0-build.patch54
-rw-r--r--sys-process/atop/files/netatop-3.2.2-strict-prototype.patch44
-rw-r--r--www-nginx/ngx-lua-upstream/ngx-lua-upstream-0.07.ebuild2
-rw-r--r--www-nginx/njs/Manifest1
-rw-r--r--www-nginx/njs/njs-1.0.1.ebuild106
-rw-r--r--www-servers/nginx/Manifest44
-rw-r--r--www-servers/nginx/files/http_brotli-detect-brotli-r3.patch28
-rw-r--r--www-servers/nginx/files/http_cache_purge-1.11.6+.patch22
-rw-r--r--www-servers/nginx/files/http_security-nginx-1.26.2.patch26
-rw-r--r--www-servers/nginx/files/http_sticky-nginx-1.23.0.patch25
-rw-r--r--www-servers/nginx/files/http_uploadprogress-nginx-1.23.0.patch74
-rw-r--r--www-servers/nginx/files/http_upstream_check-nginx-1.11.5+.patch246
-rw-r--r--www-servers/nginx/files/nginx-1.23.2-mod_auth_ldap-fix.patch21
-rw-r--r--www-servers/nginx/files/nginx-1.4.1-fix-perl-install-path.patch13
-rw-r--r--www-servers/nginx/files/nginx.conf-r372
-rw-r--r--www-servers/nginx/files/nginx.confd35
-rw-r--r--www-servers/nginx/files/nginx.initd-r494
-rw-r--r--www-servers/nginx/files/nginx.logrotate-r111
-rw-r--r--www-servers/nginx/files/nginx.service-r116
-rw-r--r--www-servers/nginx/metadata.xml10
-rw-r--r--www-servers/nginx/nginx-1.26.3-r2.ebuild1144
-rw-r--r--www-servers/nginx/nginx-1.27.5-r1.ebuild1132
-rw-r--r--www-servers/nginx/nginx-1.29.5-r2.ebuild33
-rw-r--r--www-servers/nginx/nginx-1.29.7-r3.ebuild34
-rw-r--r--www-servers/nginx/nginx-1.30.0-r2.ebuild34
-rw-r--r--www-servers/nginx/nginx-1.30.2-r2.ebuild34
-rw-r--r--www-servers/nginx/nginx-1.30.3-r2.ebuild34
-rw-r--r--www-servers/nginx/nginx-1.31.2-r2.ebuild43
-rw-r--r--www-servers/nginx/nginx-1.31.5.ebuild (renamed from www-servers/nginx/nginx-1.31.1-r2.ebuild)4
277 files changed, 6649 insertions, 16506 deletions
diff --git a/app-admin/ansible-lint/Manifest b/app-admin/ansible-lint/Manifest
index c50ceee9531d..c723f197275b 100644
--- a/app-admin/ansible-lint/Manifest
+++ b/app-admin/ansible-lint/Manifest
@@ -3,3 +3,5 @@ DIST ansible_lint-25.11.0.tar.gz.provenance 9435 BLAKE2B d69ce09b2660cd6a7cb6f57
DIST ansible_lint-25.9.0.tar.gz 699967 BLAKE2B 7dbda793d3d4d9ff4b21ffb5bd208b343d595ed0ac160ca992e93b08314fdba716120dfa9969fad864a43f268dc8c1ea5342851000feeda598a4bfa664b4d2c4 SHA512 332df15e60b38f2356411fb265d854f16e13a1f38d364d46c090ab6139fa13d69e3768d37c4554a9446a3a05f9e918841dd577150423cf0ae683b766149fb727
DIST ansible_lint-26.3.0.tar.gz 747216 BLAKE2B 792692d93e437927c6bebcf8bfd2a9f12bbf3335547ce468cad24883e7f0be4813438b16f02dd96711f860705ec90f6bdf3b5b0fce3e66d7c1f2ff0d4f43c125 SHA512 1100c420273fcf9cb23f012af22bf0a2adeb5cfd40f5d0a6a6a01bbe88eeb0858be5c7231e9df4009c40b3c0eabcc7d3eeac0aeacd0932788b5d65cd9d09e297
DIST ansible_lint-26.3.0.tar.gz.provenance 9739 BLAKE2B 9dc145cc87c6746c7537da117345fa2468d2bd309065e83e6f820ac6b571a0126bbddbb3854f7d3bc89d17c46605759b6d8d81b5882d574e4c284f65c037bca9 SHA512 b9aed112eb976e072eee40b1b4dc9df6865af89d4520f7b79c6935479fa84c07993acb2360b57698a2f3b470da2004be31756f9b7bcfe620c82ed80c6d27a823
+DIST ansible_lint-26.8.0.tar.gz 776383 BLAKE2B baa90d324bb5e7f960df0503dd5e80d9204568f33f942380f49f0cbcd836e25a066e7b97810150da7dcb4409bffa9874ec9eb8d6692a6160bc877c9e307609e1 SHA512 67046df1c2746e293ecae3f6c8475642f081b5d8a92fcf3df4614d83bad22bee149dbba931e52a67e18878073731e868e49875f6e0e3811cb614cc22782cce09
+DIST ansible_lint-26.8.0.tar.gz.provenance 9745 BLAKE2B 044664eca01b7f40382e7a0c79704b0e0558c095384962a814adbb49d30907cfd325a7b3a839bfe6d99d795e66a0c93a6858633bbada031463999be85f30eaba SHA512 da6bff97066ffba41e9ec47ecff50bc986be36c2acf5723dba5a83790111a69bafe00ac38436a68e10067c8f0e7f18b2ac35d66c323319930a31aa55e2d70df3
diff --git a/app-admin/ansible-lint/ansible-lint-26.8.0.ebuild b/app-admin/ansible-lint/ansible-lint-26.8.0.ebuild
new file mode 100644
index 000000000000..07338f505e30
--- /dev/null
+++ b/app-admin/ansible-lint/ansible-lint-26.8.0.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517="setuptools"
+PYPI_VERIFY_REPO=https://github.com/ansible/ansible-lint
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Checks ansible playbooks for practices and behaviour that can be improved"
+HOMEPAGE="https://github.com/ansible/ansible-lint"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+# Upstream has stated explicitly that all tests require Internet access
+PROPERTIES="test_network"
+RESTRICT="test"
+
+# List of test dependencies is non-exhaustive, probably out-of-date.
+BDEPEND="
+ >=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
+ test? (
+ dev-python/mypy[${PYTHON_USEDEP}]
+ dev-python/jmespath[${PYTHON_USEDEP}]
+ dev-python/license-expression[${PYTHON_USEDEP}]
+ dev-python/pylint[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ >=dev-python/pytest-plus-0.6[${PYTHON_USEDEP}]
+ >=dev-python/pytest-xdist-2.5.0[${PYTHON_USEDEP}]
+ )
+"
+
+RDEPEND="
+ >=app-admin/ansible-core-2.18.1[${PYTHON_USEDEP}]
+ >=dev-python/ansible-compat-25.8.2[${PYTHON_USEDEP}]
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/distro[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.14.0[${PYTHON_USEDEP}]
+ dev-python/importlib-metadata[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-4.17.0[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.0[${PYTHON_USEDEP}]
+ >=dev-python/pathspec-0.10.3[${PYTHON_USEDEP}]
+ <dev-python/pathspec-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-6.0.2[${PYTHON_USEDEP}]
+ >=dev-python/ruamel-yaml-0.18.11[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml-clib[${PYTHON_USEDEP}]
+ dev-python/subprocess-tee[${PYTHON_USEDEP}]
+ >=dev-python/wcmatch-8.5.2[${PYTHON_USEDEP}]
+ >=dev-util/yamllint-1.38.0[${PYTHON_USEDEP}]
+ dev-vcs/git
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-24.7.0-warnings.patch
+)
+
+# test_call_from_outside_venv doesn't play nicely with the sandbox
+# irrespective of whether Internet access is allowed or not
+EPYTEST_DESELECT=(
+ test/test_main.py::test_call_from_outside_venv
+)
+
+distutils_enable_tests pytest
+
+# Test suite fails to start without this
+python_test() {
+ epytest test
+}
diff --git a/app-doc/cantera-docs/Manifest b/app-doc/cantera-docs/Manifest
index 6847998a823c..3859e628b0f2 100644
--- a/app-doc/cantera-docs/Manifest
+++ b/app-doc/cantera-docs/Manifest
@@ -1,2 +1 @@
-DIST cantera-docs-3.0.0.tar.xz 6397512 BLAKE2B 086c81acf7a26c6ef429c37873b176cfb73168e03bb445120184008b9a92eeaf1eeb7bfbea7acce8c9741e5eababf7e10ed7cb0d2f239f4a73a77f52a8488b7a SHA512 57870ff1adf433c83f713541321b9742bb9881d5dbb3429c161ed7cf84bad9ccf9ec8ed725c6672dc449e4041144a82dc3ae443f757bcdbd14b297801e9fe5b9
DIST cantera-docs-3.2.0.tar.xz 27282780 BLAKE2B 09a0ce7b101073ab7c6487f009f602a3d01f501a139af31fe3898152ce4c1ef284689fa5381bc22512f47b5fcce91dc2f34ea3cf09dbfc4a7b065a3ac057aaa1 SHA512 ba095922884f14198e00ec4ef8cf3b6cce2e93a64956634fa73118a5d4de23a6083cf47064cee6663628ef5b58cad9a34c212f7ed72b9619e7a2d0d1b1d49fdd
diff --git a/app-doc/cantera-docs/cantera-docs-3.0.0.ebuild b/app-doc/cantera-docs/cantera-docs-3.0.0.ebuild
deleted file mode 100644
index 8047e7f1f9cf..000000000000
--- a/app-doc/cantera-docs/cantera-docs-3.0.0.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit desktop xdg
-
-DESCRIPTION="Documentation API reference for Cantera package libraries"
-HOMEPAGE="https://cantera.org"
-SRC_URI="https://github.com/band-a-prend/gentoo-overlay/releases/download/ct-docs-${PV}/${P}_modified_menu.tar.xz -> ${P}.tar.xz"
-S="${WORKDIR}/"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ~riscv ~x86"
-
-src_install() {
- insinto /usr/share/cantera/doc/
- doins -r "${S}/."
-
- make_desktop_entry "/usr/bin/xdg-open /usr/share/cantera/doc/doxygen/html/index.html" "Cantera Doxygen Documentation" "text-html" "Development"
- make_desktop_entry "/usr/bin/xdg-open /usr/share/cantera/doc/sphinx/html/index.html" "Cantera Sphinx Documentation" "text-html" "Development"
-}
diff --git a/app-emulation/dxvk/Manifest b/app-emulation/dxvk/Manifest
index 6160bd82d691..af74da26dc0a 100644
--- a/app-emulation/dxvk/Manifest
+++ b/app-emulation/dxvk/Manifest
@@ -1,5 +1,6 @@
DIST dxvk-2.7.1.tar.gz 1245578 BLAKE2B 66fc7d114890791eec750e8b6e059a14ae03c34cd039ee9470e79b33c7954237fcc023d2dd186077e662262fdbbbfc02c8161c17721122948ee727418b5a1480 SHA512 4d8c580d6e7a4e1a3438ec60fa323c5af002a3ea2f6dc4f049832ee6cbae34177623c373ab3d3f720be3149ce3cffb5b91da5892c1bdfe22c1e86bb9dde071ca
DIST dxvk-3.0.2.tar.xz 3346236 BLAKE2B dd0e07039beeae27778b162e867e1342a107bf32677d5895cc3ded62196b70d2a7c4f896f628336b4d7172239a83f4884bf6914d4f52b020bf6c6a13fb2f0e14 SHA512 4ab4180f244b7a168f68dffa6063edb2a81eb377c5d6d8ddb7eeebeeb5fb4a285be5d546737e1f2bd2f759a0e3a168b00f60ba1929eaff27e9ecceef423cf487
+DIST dxvk-3.1.1.tar.xz 3353476 BLAKE2B eda6a934decc29c914e401c23d273cf96359bab4dc91e65fbea11fec56a5ce763cb49620f11911f4dff8fcbb60f11549bbbebcc1ad7b86ac67a859d6824f2953 SHA512 dd3a264eae9d78ce1212e70e44b2ff323263ba96ff4ddc37e95d98e55a91b1efeecf7fcd20d586fc3b0dc508963c59cf1e4b882727b396aae395360f2714a25f
DIST dxvk-3.1.tar.xz 3352724 BLAKE2B 5c96da3dc01f03959dbfafa5f1411dafce120d1d3aab3e75f4b843a5d04f5cdaf2ce1bd1ef668805a8e2bd34e01ca820df35e045f39110ba8da6d9201794b1d0 SHA512 3472243098bb415cc8dc4b93b64fe0f5296e6921bfc8eb5ad96b813d251ef96e441e1daeb3f41b97cfa92d53405cccc55b7e88004071732f9e71526c1544354a
DIST libdisplay-info-275e6459c7ab1ddd4b125f28d0440716e4888078.tar.bz2 81172 BLAKE2B 7a1e9e2feeb95e06e9d3f49ad9d14a8a152cca525085e819cda0b69c238fb79dddd6d547cd0f0a4b51dfc1ec74ac4c006345b9fc48563807bc8ab3bab58ea5ff SHA512 794e94e8c16d65901a7b705d1ba3361817b4e9e19e520b1004bcab232d0347f5713594d67f3c2b79d4f86b3012e710c648975547d27a63de043fcbe9e6b7e66d
DIST setup_dxvk.sh 4631 BLAKE2B 25270e1f6dfd446b1d124eac3bd19da8bc770527d02d987949fc3ae0bead07866dafa25f77a90b9a408413a724354a29a4a156ff5c9dc75e26b66e079824ec86 SHA512 257fd84e29a7037f04a1a2a506502c71d527af58f8c84d8c3dfb64597ebdc41c3dca362eaf20ab4bc1982b76428c1f843815d56a6e1369d072e0009e270cb121
diff --git a/app-emulation/dxvk/dxvk-3.1.1.ebuild b/app-emulation/dxvk/dxvk-3.1.1.ebuild
new file mode 100644
index 000000000000..8922f63951f2
--- /dev/null
+++ b/app-emulation/dxvk/dxvk-3.1.1.ebuild
@@ -0,0 +1,156 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+MULTILIB_ABIS="amd64 x86" # allow usage on /no-multilib/
+MULTILIB_COMPAT=( abi_x86_{32,64} )
+inherit eapi9-ver flag-o-matic meson-multilib python-any-r1
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/doitsujin/dxvk.git"
+else
+ # tarball is same as upstream except for including git submodules
+ SRC_URI="https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${P}.tar.xz"
+ KEYWORDS="-* ~amd64 ~x86"
+fi
+
+DESCRIPTION="Vulkan-based implementation of D3D9, D3D10 and D3D11 for Linux / Wine"
+HOMEPAGE="https://github.com/doitsujin/dxvk/"
+
+# setup_dxvk.sh is no longer provided, fetch old until a better solution
+SRC_URI+=" https://raw.githubusercontent.com/doitsujin/dxvk/cd21cd7fa3b0df3e0819e21ca700b7627a838d69/setup_dxvk.sh"
+
+LICENSE="ZLIB Apache-2.0 MIT"
+SLOT="0"
+IUSE="+abi_x86_32 crossdev-mingw +d3d8 +d3d9 +d3d10 +d3d11 +dxgi +strip"
+REQUIRED_USE="
+ || ( d3d8 d3d9 d3d10 d3d11 dxgi )
+ d3d8? ( d3d9 )
+ d3d10? ( d3d11 )
+ d3d11? ( dxgi )
+"
+
+BDEPEND="
+ ${PYTHON_DEPS}
+ dev-util/glslang
+ !crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.10.3-wow64-setup.patch
+ "${FILESDIR}"/${PN}-2.4-d3d8-setup.patch
+)
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} == binary ]] && return
+
+ if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then
+ local tool=-w64-mingw32-g++
+ for tool in $(usev abi_x86_64 x86_64${tool}) $(usev abi_x86_32 i686${tool}); do
+ if ! type -P ${tool} >/dev/null; then
+ eerror "With USE=crossdev-mingw, it is necessary to setup the mingw toolchain."
+ eerror "For instructions, please see: https://wiki.gentoo.org/wiki/Mingw"
+ use abi_x86_32 && use abi_x86_64 &&
+ eerror "Also, with USE=abi_x86_32, will need both i686 and x86_64 toolchains."
+ die "USE=crossdev-mingw is set but ${tool} was not found"
+ elif [[ ! $(LC_ALL=C ${tool} -v 2>&1) =~ "Thread model: posix" ]]; then
+ eerror "${PN} requires GCC to be built with --enable-threads=posix"
+ eerror "Please see: https://wiki.gentoo.org/wiki/Mingw#POSIX_threads_for_Windows"
+ die "USE=crossdev-mingw is set but ${tool} does not use POSIX threads"
+ fi
+ done
+ fi
+}
+
+src_prepare() {
+ cp -- "${DISTDIR}"/setup_dxvk.sh . || die
+
+ default
+
+ sed -i "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" setup_dxvk.sh || die
+}
+
+src_configure() {
+ use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH}
+
+ # random segfaults been reported with LTO in some games, filter as
+ # a safety (note that optimizing this further won't really help
+ # performance, GPU does the actual work)
+ filter-lto
+
+ # -mavx and mingw-gcc do not mix safely here
+ # https://github.com/doitsujin/dxvk/issues/4746#issuecomment-2708869202
+ append-flags -mno-avx
+
+ if [[ ${CHOST} != *-mingw* ]]; then
+ if [[ ! -v MINGW_BYPASS ]]; then
+ unset AR CC CXX RC STRIP
+ filter-flags '-fuse-ld=*'
+ filter-flags '-mfunction-return=thunk*' #878849
+
+ # some bashrc-mv users tend to do CFLAGS="${LDFLAGS}" and then
+ # strip-unsupported-flags miss these during compile-only tests
+ # (primarily done for 23.0 profiles' -z, not full coverage)
+ filter-flags '-Wl,-z,*' #928038
+ fi
+
+ CHOST_amd64=x86_64-w64-mingw32
+ CHOST_x86=i686-w64-mingw32
+ CHOST=$(usex x86 ${CHOST_x86} ${CHOST_amd64})
+
+ strip-unsupported-flags
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ # multilib's ${CHOST_amd64}-gcc -m32 is unusable with crossdev,
+ # unset again so meson eclass will set ${CHOST}-gcc + others
+ use crossdev-mingw && [[ ! -v MINGW_BYPASS ]] && unset AR CC CXX RC STRIP
+
+ local emesonargs=(
+ --prefix="${EPREFIX}"/usr/lib/${PN}
+ --{bin,lib}dir=x${MULTILIB_ABI_FLAG: -2}
+ --force-fallback-for=libdisplay-info # system's is ELF (unusable)
+ $(meson_use {,enable_}d3d8)
+ $(meson_use {,enable_}d3d9)
+ $(meson_use {,enable_}d3d10)
+ $(meson_use {,enable_}d3d11)
+ $(meson_use {,enable_}dxgi)
+ $(usev strip --strip) # portage won't strip .dll, so allow it here
+ )
+
+ meson_src_configure
+}
+
+multilib_src_install_all() {
+ dobin setup_dxvk.sh
+ dodoc README.md dxvk.conf
+
+ find "${ED}" -type f -name '*.a' -delete || die
+}
+
+pkg_postinst() {
+ if [[ ! ${REPLACING_VERSIONS} ]]; then
+ elog "To enable ${PN} on a wine prefix, you can run the following command:"
+ elog
+ elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink"
+ elog
+ elog "See ${EROOT}/usr/share/doc/${PF}/README.md* for details."
+ elog "Note: setup_dxvk.sh is unofficially temporarily provided as it was"
+ elog "removed upstream, handling may change in the future."
+ fi
+
+ if use d3d8 && ver_replacing -lt 2.4; then
+ elog
+ elog ">=${PN}-2.4 now provides d3d8.dll, to make use of it will need to"
+ elog "update old wine prefixes which is typically done by re-running:"
+ elog
+ elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink"
+ elog
+ fi
+}
diff --git a/app-emulation/firecracker-bin/Manifest b/app-emulation/firecracker-bin/Manifest
index 62822f5ab37c..cada3cf15fa4 100644
--- a/app-emulation/firecracker-bin/Manifest
+++ b/app-emulation/firecracker-bin/Manifest
@@ -1,6 +1,4 @@
-DIST firecracker-v1.15.1-aarch64.tgz 7422699 BLAKE2B 253ec53eb13f825db7ee1c5cff4ea57c27bb1549e55eace7cc2147d3d9b32244ddc023eebeba565d27a611a72aaab8695d0e3752414e53c85a9a20a5ba986ecf SHA512 685e2d87e37ffab3b2d6df99a429f8a22c9381c45788d3b8f98b6f6e94dd8af01a89e3a04e48e5bc98986f4a880b0e8867785b2409760fd934710e86de016b1a
-DIST firecracker-v1.15.1-x86_64.tgz 7622285 BLAKE2B fa14cadb53998ac95997ddc5951464842de0b59f96bf2e71ab7777becc5248a27ad2722a348b3733d09b5ecf5afbbcaa08c099c5071c4a05d3bb985619784bb7 SHA512 2dea44f530af116b442daf339a6da9af7ba4ee924313aaa8c781051b8141fb9a5d6606da0f1c2cf5498da36b8cfd3ee86b9cac573e66afacbd4bb7a66b2dd559
-DIST firecracker-v1.16.0-aarch64.tgz 7307463 BLAKE2B fa21e6ba039fb0550edeaf2212ccffb64a11e1a034df5fba5db7a20bdc9eaef154b5bf879775100e986e0cb31ad5a77b1a16adcf24f4fba0768615d0e212ab47 SHA512 584b4bf7e68872bd15ff009fb545b5f0af56004f1c9dcf571b177aad60897d9c39fe9b6829f8d172732743e9a58ae94bbdc880bb7e38a0dd51a37e6331810136
-DIST firecracker-v1.16.0-x86_64.tgz 7483651 BLAKE2B 9e83852b5c6a036ddc9bd1a693d2015544e752a69ac30a3510fe2006be82fc166ce9c4a76f7771ff8863ad9570d40596e99dd9f3ee85a9fbb24b35c04593f070 SHA512 b150ab84d3c61d8df30929b3027055a897ab92e614ddc97c885644a199e704751b4d3bc80827162508e64699ce1d59854b0ce0e95a0b0ba6eae572ba67ee3627
DIST firecracker-v1.16.1-aarch64.tgz 7310680 BLAKE2B f8f8a7cee96bad8725cfeedf5486f11c1e6a6d8de7e320a27d75b971f9b6d771ac89b317d90c01a50d395598ee5f5c02c2cee89c18d2471afcb57a8b66c9b457 SHA512 0dd280dde663aaa7a78d3c4e97ff8d82f2c6151d750eb28fe43f543f67761ba06623ae20228d694a4b29c9bd0c6d39d0add9a7267a860bc92ce4dfdac160bcd0
DIST firecracker-v1.16.1-x86_64.tgz 7486686 BLAKE2B 315c1e27d7026ced51cbb7bfdca588f70024922b20d0ce49eef856954355eb4fc8044ae2c4e8cfa274c6c5baa945d70a7050f4bca6988996c9e5624fce7a944c SHA512 f53d26ea01a68d6eeaeaed5d01ae8c86eecc388d2114f3cc839043a879501e7a4829c029d1dbffd6fdf801af9653116abcc58f70bacf5c9fe7f3fee2701a47c9
+DIST firecracker-v1.17.0-aarch64.tgz 7294031 BLAKE2B d7c2e2b33279f79c73063dcb792e2bb71865e5ac69ee4f3ea52bec799feb5cbf9b5ce2f4bb9f7f211c3783446d3c13016f4f98bf9f584513b96f0ef0c4d57712 SHA512 31db2bb971b5c7c8239afa1b5c94f7da12dda15254de3b0480457bf48d7e6a0fd804fe82cc80240698d6934e18363a39014356e55836320b3b36a2d0365a6ccf
+DIST firecracker-v1.17.0-x86_64.tgz 7464385 BLAKE2B 904b0e1d1b2664ff99bcddfa0dff015c19c2b259e493e4288e58cae7ec6ea4275a095d85b387881f4fa16fbca9d12ce285b8e3908f3ededb39315a36b9f68739 SHA512 099c20b2a7ad79ab4dbd2e0e3a14b746cc33123f4b0615585ea5749f6243a89a2cd348aef600d88a9ec00788b45d49ef6fe184daf85586453ec28656ed45e5f8
diff --git a/app-emulation/firecracker-bin/firecracker-bin-1.16.0.ebuild b/app-emulation/firecracker-bin/firecracker-bin-1.16.0.ebuild
deleted file mode 100644
index 20eb7212cfa8..000000000000
--- a/app-emulation/firecracker-bin/firecracker-bin-1.16.0.ebuild
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 2021-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit linux-info
-
-DESCRIPTION="Secure and fast microVMs for serverless computing (static build)"
-HOMEPAGE="https://firecracker-microvm.github.io https://github.com/firecracker-microvm/firecracker"
-SRC_URI="
- amd64? (
- https://github.com/firecracker-microvm/firecracker/releases/download/v${PV}/firecracker-v${PV}-x86_64.tgz
- )
- arm64? (
- https://github.com/firecracker-microvm/firecracker/releases/download/v${PV}/firecracker-v${PV}-aarch64.tgz
- )"
-
-S="${WORKDIR}"
-
-LICENSE="|| ( Apache-2.0 MIT Apache-2.0-with-LLVM-exceptions ) MPL-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-RESTRICT="test strip"
-
-RDEPEND="acct-group/kvm"
-
-QA_PREBUILT="usr/bin/cpu-template-helper
- usr/bin/firecracker
- usr/bin/jailer
- usr/bin/rebase-snap
- usr/bin/seccompiler-bin
- usr/bin/snapshot-editor"
-
-pkg_pretend() {
- if use kernel_linux && kernel_is lt 4 14; then
- eerror "Firecracker requires a host kernel of 4.14 or higher."
- elif use kernel_linux; then
- if ! linux_config_exists; then
- eerror "Unable to check your kernel for KVM support"
- else
- CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
- ERROR_KVM="You must enable KVM in your kernel to continue"
- ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
- ERROR_KVM_AMD+=" your kernel configuration."
- ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
- ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
- ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
- ERROR_TUN+=" into your kernel or loaded as a module to use"
- ERROR_TUN+=" virtual network devices."
- ERROR_BRIDGE="You will also need support for 802.1d"
- ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
-
- if use amd64; then
- if grep -q AuthenticAMD /proc/cpuinfo; then
- CONFIG_CHECK+=" ~KVM_AMD"
- elif grep -q GenuineIntel /proc/cpuinfo; then
- CONFIG_CHECK+=" ~KVM_INTEL"
- fi
- fi
-
- # Now do the actual checks setup above
- check_extra_config
- fi
- fi
-}
-
-src_compile() { :; }
-
-src_install() {
- local my_arch
- if use amd64; then
- my_arch=x86_64
- elif use arm64; then
- my_arch=aarch64
- fi
-
- dodoc "release-v${PV}-${my_arch}/firecracker_spec-v${PV}.yaml"
- dodoc "release-v${PV}-${my_arch}/seccomp-filter-v${PV}-${my_arch}.json"
-
- newbin "release-v${PV}-${my_arch}/cpu-template-helper-v${PV}-${my_arch}" cpu-template-helper
- newbin "release-v${PV}-${my_arch}/firecracker-v${PV}-${my_arch}" firecracker
- newbin "release-v${PV}-${my_arch}/jailer-v${PV}-${my_arch}" jailer
- newbin "release-v${PV}-${my_arch}/rebase-snap-v${PV}-${my_arch}" rebase-snap
- newbin "release-v${PV}-${my_arch}/seccompiler-bin-v${PV}-${my_arch}" seccompiler-bin
- newbin "release-v${PV}-${my_arch}/snapshot-editor-v${PV}-${my_arch}" snapshot-editor
-}
diff --git a/app-emulation/firecracker-bin/firecracker-bin-1.15.1.ebuild b/app-emulation/firecracker-bin/firecracker-bin-1.17.0.ebuild
index 20eb7212cfa8..20eb7212cfa8 100644
--- a/app-emulation/firecracker-bin/firecracker-bin-1.15.1.ebuild
+++ b/app-emulation/firecracker-bin/firecracker-bin-1.17.0.ebuild
diff --git a/app-emulation/libvirt/libvirt-12.2.0.ebuild b/app-emulation/libvirt/libvirt-12.2.0.ebuild
index 09dc294ff85c..6483774a7861 100644
--- a/app-emulation/libvirt/libvirt-12.2.0.ebuild
+++ b/app-emulation/libvirt/libvirt-12.2.0.ebuild
@@ -22,7 +22,7 @@ if [[ ${PV} = *9999* ]]; then
else
SRC_URI="https://download.libvirt.org/${P}.tar.xz
verify-sig? ( https://download.libvirt.org/${P}.tar.xz.asc )"
- KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+ KEYWORDS="amd64 ~arm arm64 ppc64 x86"
fi
DESCRIPTION="C toolkit to manipulate virtual machines"
diff --git a/app-misc/qlcplus/Manifest b/app-misc/qlcplus/Manifest
index 032311b64da7..423100d2477c 100644
--- a/app-misc/qlcplus/Manifest
+++ b/app-misc/qlcplus/Manifest
@@ -1 +1 @@
-DIST QLC+_4.14.3.tar.gz 12417429 BLAKE2B a7146c2d63edd051beaf6afa6f8cda77f04985b868b508de173057e87d9ff7714e278e2ad08ab3f09046f5821add24e36be42d651c5d038fc32c3f1e430a33f9 SHA512 c379596197f6e7b7e7955dd718bb62af3511c7c856bd5967c44417785de2345f78f1bf0a65ed70ee0c8a084fa80471721e2ac6ebb00631ba6fedaa6ab4e140de
+DIST QLC+_4.14.4.tar.gz 12703615 BLAKE2B 16012cc44a1b9e1e03bea2eb0c2648710eb8b268e863f92df0ad550c7c94d18232009ce9a28ef8f5601967f8b6d999cbb963a3fb18179ebc28ccca666d400c4f SHA512 aa6159adf803154dec2834fedeb2b1633d5c5f411d6b0f2f5798596f73a837346c9981ec329cfc9a2de899dc572988a5b8560a4906be5e4a12ceea64fce4e330
diff --git a/app-misc/qlcplus/qlcplus-4.14.3.ebuild b/app-misc/qlcplus/qlcplus-4.14.4.ebuild
index 87c3bbc368f4..d0162e0fc424 100644
--- a/app-misc/qlcplus/qlcplus-4.14.3.ebuild
+++ b/app-misc/qlcplus/qlcplus-4.14.4.ebuild
@@ -1,9 +1,9 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-inherit cmake udev xdg
+inherit cmake qmake-utils udev xdg
DESCRIPTION="A software to control DMX or analog lighting systems"
HOMEPAGE="https://www.qlcplus.org/"
@@ -56,6 +56,16 @@ src_prepare() {
## the CMakeLists file
sed -e "s| Qt5 | |g" -e "s|\${QT_VERSION_MAJOR}|6|g" \
-i CMakeLists.txt || die
+
+ ## QLC+ uses "-Werror" by default. Might be nice for
+ ## development but doesn't make sense when building locally
+ sed -e '\|-Werror|s|^|#|g' -i variables.cmake || die
+
+ ## translate.sh searches lrelease and lupdate in $PATH. This worked for
+ ## Qt5 but will fail for Qt6. Let us tell them where they are
+ sed -e "s|^\(LRELEASE=\).*|\1\"$(qt6_get_bindir)/lrelease\"|" \
+ -e "s|^\(LUPDATE=\).*|\1\"$(qt6_get_bindir)/lupdate\"|" \
+ -i translate.sh || die
}
pkg_postinst() {
diff --git a/app-misc/siegfried/Manifest b/app-misc/siegfried/Manifest
index 7e1616ca6916..1940654e5dfc 100644
--- a/app-misc/siegfried/Manifest
+++ b/app-misc/siegfried/Manifest
@@ -4,3 +4,6 @@ DIST siegfried-1.11.6.gh.tar.gz 12521626 BLAKE2B 3ff14b6d3707628fde7877f20b9d406
DIST siegfried-1.11.7-data.zip 13080907 BLAKE2B a912cd0b8d04c08c9a3dc4e88ecf7f16c0d5ce6f002d0298bed0fa87fd2484b0c7f6b7bd8be35ae53629af3f394c0f8dd593a689276971e09b9fad00e8a491cb SHA512 c13ed15361e3ad6e772050132cc4df7bee383f0982a842a158b5bdd8d11cc1f0ef62464825cdd86f0c30fe47a8fbbd7e0b6b77f9d8811cffc7160b413ee2cf39
DIST siegfried-1.11.7-deps.tar.xz 12398180 BLAKE2B 14735a4e9e2904c561c35484702f899274ca31e4c80b651524e78abc0ccc2c3c984e09ce1fc0f9515e20bf539b88a32859f768d5c9b29c61feac0ca3c424aefd SHA512 170d6936da3524307af54b6dcfaa9cdb5c5a6cb99f25af8186a8a43e9b92e7d0664034b1bcec232c1784905c7316fa4014ff86d28e93d1f194bea1cd43267f3f
DIST siegfried-1.11.7.gh.tar.gz 12447650 BLAKE2B 29ef432689fff9b1f71d1cfd2f8a6e14dd3770e2609c22f4a565bf4900e564fe6a0526a9f89c77f5912306c5b1670b99ee12d6fe76c9c4d5d4410f607ec8032c SHA512 221229bbeb0fbf31d0b3e5f8f6fccfb0fd3c3882076377328d840d9490b3006dfbcbe061b1c64fc0da8fe4476bd0d0f6338d5e7abf1fe7400cd91362c8d2f7c1
+DIST siegfried-1.11.8-data.zip 13077492 BLAKE2B d0b857035ea2f94554375cde408df04d040712ce1fc257e9474fe2d1d025839f4bb2261f859d74e200e2f036e635216abfde630d0bc915e2936333bdd4ecf28a SHA512 4a1ac20ba20348ad4f46f9303ee04878cf48641efcb504b63107ba5be7a25370af74c630be0484480cb206f1fdffa9c4aa863996675edf48feb1a2f6819e8cb1
+DIST siegfried-1.11.8-deps.tar.xz 12400620 BLAKE2B d22335ef1381df0ba19dc080df24241b6e2f55d1cb0a3bfb6cbc50430db1973964aa280273320c4a3b18b10abadfe9e9a29e1185e742b668cb6aeb36fba4fff6 SHA512 53a9fa97884878712344e8005462300c5f2d726138ae22fef5ce4093abf6f9f467e2a6608c36780d1dfb96eb28b48981b0054628ca17e6d2a55b34d71b57c1e2
+DIST siegfried-1.11.8.gh.tar.gz 12444005 BLAKE2B 63f2a394d0eb39ddaebfddc0266a8ddf5066f147206739b1304f52e753286b0bf87a2b7e34699e06d8faf5889a0a631d111cad64835b43e7be2b39265cae9b75 SHA512 a5b56f0c93ccc6eb27bbe6fcec8b74a81edff5c7cc91ccbbfd8ec244789ece6cfc31b9184a088f6d44b7a18fb5e1e69b5b23314e1258b144b6a26c1ee7538e63
diff --git a/app-misc/siegfried/siegfried-1.11.8.ebuild b/app-misc/siegfried/siegfried-1.11.8.ebuild
new file mode 100644
index 000000000000..a6e6c063b843
--- /dev/null
+++ b/app-misc/siegfried/siegfried-1.11.8.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+inherit go-module
+
+MY_P=${P/_/-}
+DESCRIPTION="Signature-based file format identification"
+HOMEPAGE="
+ https://www.itforarchivists.com/siegfried/
+ https://github.com/richardlehane/siegfried/
+"
+SRC_URI="
+ https://github.com/richardlehane/siegfried/archive/v${PV/_/-}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+ https://github.com/richardlehane/siegfried/releases/download/v${PV/_/-}/data_${PV//[._]/-}.zip
+ -> ${MY_P}-data.zip
+ https://github.com/gentoo-golang-dist/siegfried/releases/download/v${PV}/${P}-deps.tar.xz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+# vendored deps
+LICENSE+=" BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ !app-misc/dfshow
+"
+BDEPEND="
+ >=dev-lang/go-1.26.0:=
+"
+
+src_compile() {
+ go build -v -work -x "${S}"/cmd/roy || die
+ go build -v -work -x "${S}"/cmd/sf || die
+}
+
+src_test() {
+ cp "${WORKDIR}/siegfried/fddXML.zip" cmd/roy/data || die
+ go test -v "${S}"/cmd/roy || die
+ go test -v "${S}"/cmd/sf || die
+}
+
+src_install() {
+ dobin roy sf
+ insinto /usr/share/siegfried
+ doins "${WORKDIR}/siegfried/default.sig"
+}
diff --git a/app-misc/yq/yq-4.1.2-r1.ebuild b/app-misc/yq/yq-4.1.2-r1.ebuild
index 3b82fa1aa1f0..b91699f79387 100644
--- a/app-misc/yq/yq-4.1.2-r1.ebuild
+++ b/app-misc/yq/yq-4.1.2-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~loong ~x86"
+KEYWORDS="amd64 arm64 ~loong x86"
IUSE="test +yq-symlink"
RESTRICT="!test? ( test )"
diff --git a/app-text/lowdown/lowdown-3.1.1.ebuild b/app-text/lowdown/lowdown-3.1.1.ebuild
index 588d2ae2d536..6bf86f357475 100644
--- a/app-text/lowdown/lowdown-3.1.1.ebuild
+++ b/app-text/lowdown/lowdown-3.1.1.ebuild
@@ -13,7 +13,7 @@ S="${WORKDIR}/${PN}-${MY_PV}"
LICENSE="ISC"
SLOT="0/4"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 ~arm arm64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~sparc x86"
DEPEND="
virtual/libcrypt:=
diff --git a/app-text/poppler/poppler-26.03.0.ebuild b/app-text/poppler/poppler-26.03.0.ebuild
index 5fea32bca2cd..8e97000d992a 100644
--- a/app-text/poppler/poppler-26.03.0.ebuild
+++ b/app-text/poppler/poppler-26.03.0.ebuild
@@ -59,6 +59,7 @@ BDEPEND="
${PYTHON_DEPS}
>=dev-util/glib-utils-2.64
virtual/pkgconfig
+ qt6? ( dev-qt/qtbase:6 )
"
if [[ ${PV} != *9999* ]] ; then
@@ -128,6 +129,7 @@ src_configure() {
-DENABLE_UTILS=$(usex utils)
)
use cairo && mycmakeargs+=( -DWITH_GObjectIntrospection=$(usex introspection) )
+ use qt6 && tc-is-cross-compiler && mycmakeargs+=( -DQT_HOST_PATH="${BROOT}" )
cmake_src_configure
}
diff --git a/app-text/poppler/poppler-26.05.0-r1.ebuild b/app-text/poppler/poppler-26.05.0-r1.ebuild
index e57d1f4199a4..6c012bd1a5f4 100644
--- a/app-text/poppler/poppler-26.05.0-r1.ebuild
+++ b/app-text/poppler/poppler-26.05.0-r1.ebuild
@@ -58,6 +58,7 @@ DEPEND="${COMMON_DEPEND}
BDEPEND="${PYTHON_DEPS}
>=dev-util/glib-utils-2.80
virtual/pkgconfig
+ qt6? ( dev-qt/qtbase:6 )
"
if [[ ${PV} != *9999* ]] ; then
@@ -128,6 +129,7 @@ src_configure() {
-DENABLE_UTILS=$(usex utils)
)
use cairo && mycmakeargs+=( -DWITH_GObjectIntrospection=$(usex introspection) )
+ use qt6 && tc-is-cross-compiler && mycmakeargs+=( -DQT_HOST_PATH="${BROOT}" )
cmake_src_configure
}
diff --git a/app-text/poppler/poppler-9999.ebuild b/app-text/poppler/poppler-9999.ebuild
index 8514c67ce262..3ab56464ddfb 100644
--- a/app-text/poppler/poppler-9999.ebuild
+++ b/app-text/poppler/poppler-9999.ebuild
@@ -58,6 +58,7 @@ DEPEND="${COMMON_DEPEND}
BDEPEND="${PYTHON_DEPS}
>=dev-util/glib-utils-2.80
virtual/pkgconfig
+ qt6? ( dev-qt/qtbase:6 )
"
if [[ ${PV} != *9999* ]] ; then
@@ -127,6 +128,7 @@ src_configure() {
-DENABLE_UTILS=$(usex utils)
)
use cairo && mycmakeargs+=( -DWITH_GObjectIntrospection=$(usex introspection) )
+ use qt6 && tc-is-cross-compiler && mycmakeargs+=( -DQT_HOST_PATH="${BROOT}" )
cmake_src_configure
}
diff --git a/app-text/qpdf/qpdf-12.4.1.ebuild b/app-text/qpdf/qpdf-12.4.1-r1.ebuild
index 5d109d5d5e78..53711bba0a80 100644
--- a/app-text/qpdf/qpdf-12.4.1.ebuild
+++ b/app-text/qpdf/qpdf-12.4.1-r1.ebuild
@@ -22,8 +22,9 @@ SRC_URI="
LICENSE="|| ( Apache-2.0 Artistic-2 )"
# Subslot for libqpdf soname version (just represent via major version)
-SLOT="0/$(ver_cut 1)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+# XXX: .1 is a fudge for bug #981565, drop w/ >=qpdf-13
+SLOT="0/$(ver_cut 1).1"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="doc examples gnutls test zopfli"
RESTRICT="!test? ( test )"
diff --git a/dev-cpp/cpp-httplib/Manifest b/dev-cpp/cpp-httplib/Manifest
index 7a291b880ea5..0886028e1e62 100644
--- a/dev-cpp/cpp-httplib/Manifest
+++ b/dev-cpp/cpp-httplib/Manifest
@@ -1,3 +1,2 @@
-DIST cpp-httplib-0.38.0.tar.gz 1458103 BLAKE2B d94aad7aeef09770473e93c7ef88951a9911f98a2d0d77bc3a0ae9bd0e7868eb92ad57b49d381c1e6b5ea8229e1f3c5a9f28823277c20daa994d17e212176bbd SHA512 d8dfd5a447db4d6eb2a92c498af18cb3bf999ed43ef9a9552a8781f9c23597a3d178d2a15f5fa0afb68f2ec278080e6d4808cef5cfa68a8ed5f0c57b42bdbee7
-DIST cpp-httplib-0.50.1.tar.gz 1896535 BLAKE2B 00b0942cc296c24b342cfec62126801766dbd8f1d6f983fef81fb75b6bc57a0cbf5eb457c9d9a30488ec4ae58803962b84f52c87d3f05e84fcda97ead8fbed84 SHA512 7f670f1ecf31590b8dba671b4cc18982d5c4e1c31d2edda635397872a3c58b69e067dddb7ac9fe8a5be48b850b40ff5b57eae93bd29c3fded1c6b0f27824b980
DIST cpp-httplib-0.51.0.tar.gz 1905553 BLAKE2B 4fa8f5678d370d95f5be8e3f13437a443a03d46d6fc234cf221f8a90993685375f0c2090b632705881133dbf9ea9e2b7a6eeaec144937da8030db51da3c62b3f SHA512 da2e205dcd1127685b7f2ff1e2d5b213f08489942e1f8d97be7f4d4bf0019be2bf48b260bc463c5861d5d537e0eaf648d28953f7a9fdae880005c7bf5319cfbc
+DIST cpp-httplib-0.56.0.tar.gz 1991569 BLAKE2B 593816d7b49a9c81c69e3e1505e98504a5062b00e81723fc14a1549b79fb35c5a6b6f32e0d8bd53980b33009c42840da6a48212262635840c74eb8a14cb1b724 SHA512 3db42b77a96ae2f0e41c54c3897142f6c18fa237d85e6d173ea2e1ab238e77f6ac77134dcb80f6870697ef40bb68027b131b9d45823a41cedb86c677a01482b4
diff --git a/dev-cpp/cpp-httplib/cpp-httplib-0.38.0.ebuild b/dev-cpp/cpp-httplib/cpp-httplib-0.38.0.ebuild
deleted file mode 100644
index 57e12534fa36..000000000000
--- a/dev-cpp/cpp-httplib/cpp-httplib-0.38.0.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright 2022-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit cmake-multilib python-any-r1 toolchain-funcs
-
-DESCRIPTION="C++ HTTP/HTTPS server and client library"
-HOMEPAGE="https://github.com/yhirose/cpp-httplib/"
-
-if [[ "${PV}" == *9999* ]] ; then
- inherit git-r3
-
- EGIT_REPO_URI="https://github.com/yhirose/${PN}.git"
-else
- SRC_URI="https://github.com/yhirose/${PN}/archive/v${PV}.tar.gz
- -> ${P}.tar.gz"
-
- KEYWORDS="~alpha amd64 arm64 ~hppa ~loong ~mips ppc64 ~riscv ~s390 ~sparc"
-fi
-
-LICENSE="MIT"
-SLOT="0/$(ver_cut 0-2)" # soversion
-
-IUSE="brotli mbedtls ssl test zlib zstd"
-REQUIRED_USE="test? ( brotli zlib zstd )"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- brotli? (
- app-arch/brotli:=[${MULTILIB_USEDEP}]
- )
- ssl? (
- mbedtls? ( net-libs/mbedtls:3=[${MULTILIB_USEDEP}] )
- !mbedtls? ( >=dev-libs/openssl-3.0.13:=[${MULTILIB_USEDEP}] )
- )
- zlib? (
- virtual/zlib:=[${MULTILIB_USEDEP}]
- )
- zstd? (
- app-arch/zstd[${MULTILIB_USEDEP}]
- )
-"
-DEPEND="
- ${RDEPEND}
- test? (
- dev-cpp/gtest
- dev-libs/openssl
- net-misc/curl
- )
-"
-BDEPEND="
- ${PYTHON_DEPS}
- virtual/pkgconfig
-"
-
-src_configure() {
- local -a mycmakeargs=(
- -DHTTPLIB_COMPILE=yes
- -DHTTPLIB_SHARED=yes
- -DHTTPLIB_USE_BROTLI_IF_AVAILABLE=no
- -DHTTPLIB_USE_OPENSSL_IF_AVAILABLE=no
- -DHTTPLIB_USE_MBEDTLS_IF_AVAILABLE=no
- -DHTTPLIB_USE_WOLFSSL_IF_AVAILABLE=no
- -DHTTPLIB_USE_ZLIB_IF_AVAILABLE=no
- -DHTTPLIB_USE_ZSTD_IF_AVAILABLE=no
- -DHTTPLIB_REQUIRE_BROTLI=$(usex brotli)
- -DHTTPLIB_REQUIRE_OPENSSL=$(usex ssl $(usex mbedtls no yes))
- -DHTTPLIB_REQUIRE_MBEDTLS=$(usex ssl $(usex mbedtls))
- -DHTTPLIB_REQUIRE_ZLIB=$(usex zlib)
- -DHTTPLIB_REQUIRE_ZSTD=$(usex zstd)
- -DPython3_EXECUTABLE="${PYTHON}"
- )
- cmake-multilib_src_configure
-}
-
-multilib_src_test() {
- if [[ $(tc-get-ptr-size) == 4 ]] ; then
- ewarn "Upstream no longer supports 32 bits:"
- ewarn "https://github.com/yhirose/cpp-httplib/issues/2148"
- return
- fi
-
- cp -p -R --reflink=auto "${S}/test" ./test || die
-
- local -a failing_tests=(
- # Disable all online tests.
- "*.*_Online"
- )
-
- # Little dance to please the GTEST filter (join array using ":").
- failing_tests_str="${failing_tests[@]}"
- failing_tests_filter="${failing_tests_str// /:}"
-
- # PREFIX is . to avoid calling "brew" and relying on stuff in /opt
- GTEST_FILTER="-${failing_tests_filter}" emake -C test \
- CXX="$(tc-getCXX)" CXXFLAGS="${CXXFLAGS} -I." PREFIX=.
-}
diff --git a/dev-cpp/cpp-httplib/cpp-httplib-0.50.1.ebuild b/dev-cpp/cpp-httplib/cpp-httplib-0.56.0.ebuild
index d9444866a930..d9444866a930 100644
--- a/dev-cpp/cpp-httplib/cpp-httplib-0.50.1.ebuild
+++ b/dev-cpp/cpp-httplib/cpp-httplib-0.56.0.ebuild
diff --git a/dev-cpp/glaze/Manifest b/dev-cpp/glaze/Manifest
index 3a6d05329ffd..8da6c123579a 100644
--- a/dev-cpp/glaze/Manifest
+++ b/dev-cpp/glaze/Manifest
@@ -1,3 +1,4 @@
DIST glaze-5.2.1.tar.gz 581284 BLAKE2B 87b81b073955c0e97199e3de3083fb2c913438b25a469ac80184fc2c9af04119d015e523ebf53fea36bf91b6a055351362fe8670ac2e881aafd11bd2acc92851 SHA512 b68d3953feab1cb958242eba0457e4cf310cd0de80b7c5c2513722eedea0442199b7df40b414213047958d8aa1a1d0d8705bea77795b80a73c9ee6fb462abc88
DIST glaze-5.5.4.tar.gz 738708 BLAKE2B 0f56b022532fc76b327f78e5bbcadb841d3ac77fde2df7ae8a6d0e74777db2c3090c6959845f54113933a083c787956876ac3166d0a2ba654eab926ef276df8a SHA512 1bc0503552eea4befd80b989f5eacf4b8ebd853e87c82d2730a23504806583a8153c80e786b118451ae2edc37023802e24cf4b0395ed86f2b34fdb5a2b7b6625
DIST glaze-6.5.1.tar.gz 1180772 BLAKE2B 12eba3267d45ac8d84df1130e7f070c857d9a3ae3de7701d77c4cd4cc87236f0aa7f3bcecd643f31a8d1d78d304ec3e35e800346f2bd882847731de71f3a0c45 SHA512 fb45220afde0b6374f6d864baa7fb649583e304a31914036aa7673adf2a72aa3944926f9a8f3e71fea4ec5f6655afa0a8fdcd42c698d98451b0ac1db7c15aa39
+DIST glaze-8.1.0.tar.gz 2088152 BLAKE2B c3abe0dbe19f512b75ebad2f192ec87488c200b0a743a95d409ef350368abe1de9f01f023aa72d8ad026ffa53b6dd526da8c9a640c995a71d5d0a9e9a7390fdf SHA512 750f1b0cec2cf1242f4627215bf156d56cce659e15a7e9ba1c407ff9bf56bb9cd028b92337bb98710ceb106ba687db0c4557764171cabc5feb53c74eb363af29
diff --git a/dev-cpp/glaze/glaze-8.1.0.ebuild b/dev-cpp/glaze/glaze-8.1.0.ebuild
new file mode 100644
index 000000000000..c87b505c179c
--- /dev/null
+++ b/dev-cpp/glaze/glaze-8.1.0.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Extremely fast, in memory, JSON and interface library for modern C++"
+HOMEPAGE="https://github.com/stephenberry/glaze"
+SRC_URI="
+ https://github.com/stephenberry/glaze/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+"
+
+S="${WORKDIR}/glaze-${PV}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="examples fuzzing test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ test? (
+ dev-cpp/asio
+ >=dev-cpp/eigen-3.4:=
+ >=dev-cpp/ut2-glaze-1.2.1
+ )
+"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_SKIP_INSTALL_RULES=OFF
+ -Dglaze_DEVELOPER_MODE=ON
+ -Dglaze_ENABLE_FUZZING=$(usex fuzzing)
+ -Dglaze_BUILD_EXAMPLES=$(usex examples)
+ -DBUILD_TESTING=$(usex test)
+ )
+
+ cmake_src_configure
+}
diff --git a/dev-cpp/tbb/Manifest b/dev-cpp/tbb/Manifest
index 0114a8393263..0b58685b590a 100644
--- a/dev-cpp/tbb/Manifest
+++ b/dev-cpp/tbb/Manifest
@@ -1,8 +1,4 @@
DIST tbb-2020.3.tar.gz 2639788 BLAKE2B 3e92bccdc8179fc049379ccbb8ad7f615623177abc61d813b1a601020c345137bfd7d4c4600cf5b0d587e5ebef677635c3c8124d06b05fdd3325128ed8c9f84a SHA512 04c4b5501418792827190691d03d20d4dc1fd3cbbcf459a4d40c5c2281d964e658f31f133ad3907b78e17ed04f4ff16728ed89487ed0ce2cb239f23feb34bd87
-DIST tbb-2021.12.0.tar.gz 2617255 BLAKE2B 3e1db8b1972a7225c5355def66ae40006e6e0f0f97e2efff45dd361f724e348a2f0476bc14b59f89f5361cac6fa36a4973602467bc7fbb2b8b139a4ff4dd58de SHA512 64022bcb61cf7b2030a1bcc11168445ef9f0d69b70290233a7febb71cc7a12cc2282dddc045f84e30893efe276342f02fd78d176706268eeaefe9aac7446d4e9
-DIST tbb-2021.13.0.tar.gz 2613916 BLAKE2B 0edd2d8a966dba673e50827629491924140a302430f4380e7cd9914f3592eaf6515204c7267649237970a5482cc030f0c29cbddd1476f16caf46989f70041058 SHA512 1f536b98c4eb331c3ba21e4b36362c932d7852b974ea7237b5f7bffb0e996d76f688c7ac534cb56f5866cfdffd5d3f015521b4c2ca21e584503070782ca82a2f
-DIST tbb-2021.7.0.tar.gz 2571727 BLAKE2B 2977ef1a33d9bc7baa40e0e57c02e62798a09c6c66cdbe369f2702d87fd9877c3d97f8d83f71384028995ea0956f5c5630d4aaf4edbe68538e7c514d3b87085c SHA512 d314e3d88b85c96607a9eda15e3d808bf361eb562a534c59101929236e90c187883e7718e5435b5e7f01f4ee652c9765af95f5f173368b83997e4666b7403a49
-DIST tbb-2021.9.0.tar.gz 2579150 BLAKE2B f6f701df1605913770222689063ff422416f86f132fb3fbc80f383b7c52762d3804e75200ca4826906b16c66f674918bcfd78b16a1dafb499ca53a9d2b6652ec SHA512 2ece7f678ad7c8968c0ad5cda9f987e4b318c6d9735169e1039beb0ff8dfca18815835875211acc6c7068913d9b0bdd4c9ded22962b0bb48f4a0ce0f7b78f31c
-DIST tbb-2022.0.0.tar.gz 2654343 BLAKE2B eac1a8065e401f1329527ccb1db0a8d30eb54ca2d9180560cd3be2263a779d250a0bda4fc3fb11fede3c63e964490420f09d664a7e39071d9b6a6cf743349f8f SHA512 c87b84964b2c323f61895a532968dfa6413a774c177cffbf6e798a07e74e8da5d449144875771df0a1b02657eeb2a7ae4d41c6c432dbf7ea50e3d5a9ea9f8cd3
DIST tbb-2022.1.0.tar.gz 3434602 BLAKE2B a6441be4830ac79d648eee37a534bb74e2298612237059e2d22778c3aebda7e9a73c58948c8f9e89603cb05270d63d412b28bdc13a7cc6b3f6683ed21f1c221a SHA512 7582748f7d0e0ab46ea6ee7771dfaf7fc08ca7ab7f274fb3373eae0e3411aaafbac192ece15008d9a3d9e8566f8737f96f3f4b5ccf11449ac089d5cd9ebb9eab
DIST tbb-2022.3.0.tar.gz 6836514 BLAKE2B 466e599dca7a64608eaa4df2fe16e62261230446a961bfadc65b9cded9489ed0b5a1e2d9d2a9dd3d202b62ac32e10c2cfa9b1a3cf1e292347985ec7b0400a72f SHA512 fdc50589785b1949ca1dd4429bbcedb180be4b8966da5243ddd1f8e9f97310dd603681e0bb83c1d6c2d3e27932f577ef6739e4e82f3c54af147f4d6d906b39f1
+DIST tbb-2023.1.0.tar.gz 7722887 BLAKE2B 78d91cc0eb6bd6d1d06cde1902a1d6c335a30f0ddc0a4976bc4878a31d037c645238774f68ee40be86b55b6d2f17621cd79786e0e0acc58c0ac78c451a44b211 SHA512 c8e9b9100873d6f8514da18ca700165466a9c042d24a6ce9e8901c8996c348f2e58f0251b1eca47d33cc5f382783bfc7693bc6c451716540d4caa57339b3b535
diff --git a/dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch b/dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch
index 7cc8216153d0..088b2681184a 100644
--- a/dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch
+++ b/dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch
@@ -1,3 +1,6 @@
+https://github.com/uxlfoundation/oneTBB/issues/980
+https://github.com/uxlfoundation/oneTBB/pull/987
+
From c828ae47b8f4bea7736d2f9d05460e2b529c9d7d Mon Sep 17 00:00:00 2001
From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Date: Fri, 9 Dec 2022 12:36:11 +0100
diff --git a/dev-cpp/tbb/files/tbb-2021.7.0-abort.patch b/dev-cpp/tbb/files/tbb-2021.7.0-abort.patch
deleted file mode 100644
index 0a7deec96a5d..000000000000
--- a/dev-cpp/tbb/files/tbb-2021.7.0-abort.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/test/common/utils_assert.h 2026-03-27 11:39:14.886058730 +0100
-+++ b/test/common/utils_assert.h 2026-03-27 11:40:24.429306039 +0100
-@@ -20,6 +20,8 @@
- #include "config.h"
- #include "utils_report.h"
-
-+#include <cstdlib>
-+
- #define REPORT_FATAL_ERROR REPORT
-
- namespace utils {
diff --git a/dev-cpp/tbb/files/tbb-2021.7.0-dynamicLink.patch b/dev-cpp/tbb/files/tbb-2021.7.0-dynamicLink.patch
deleted file mode 100644
index ca44d7985a30..000000000000
--- a/dev-cpp/tbb/files/tbb-2021.7.0-dynamicLink.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/test/CMakeLists.txt 2026-03-27 13:13:21.627057086 +0100
-+++ b/test/CMakeLists.txt 2026-03-27 13:17:16.113296894 +0100
-@@ -367,6 +367,7 @@
- tbb_add_test(SUBDIR tbb NAME test_allocators DEPENDENCIES TBB::tbb)
- tbb_add_test(SUBDIR tbb NAME test_arena_priorities DEPENDENCIES TBB::tbb)
- tbb_add_test(SUBDIR tbb NAME test_dynamic_link DEPENDENCIES TBB::tbb)
-+ set_target_properties(test_dynamic_link PROPERTIES ENABLE_EXPORTS TRUE)
- if (WIN32)
- tbb_add_test(SUBDIR tbb NAME test_numa_dist DEPENDENCIES TBB::tbb)
- endif()
diff --git a/dev-cpp/tbb/files/tbb-2021.7.0-pthread-eagain.patch b/dev-cpp/tbb/files/tbb-2021.7.0-pthread-eagain.patch
deleted file mode 100644
index 6c0912ec96b7..000000000000
--- a/dev-cpp/tbb/files/tbb-2021.7.0-pthread-eagain.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-https://bugs.gentoo.org/881161
-https://github.com/rui314/mold/issues/410
-https://github.com/oneapi-src/oneTBB/commit/ceacd2207edfb72a8fc235213265afe68ce74ad0
-https://github.com/oneapi-src/oneTBB/commit/137c1a88b690acf3525e0f279720ac489ce66481
-
-From ceacd2207edfb72a8fc235213265afe68ce74ad0 Mon Sep 17 00:00:00 2001
-From: Ilya Isaev <ilya.isaev@intel.com>
-Date: Wed, 26 Oct 2022 13:13:51 +0200
-Subject: [PATCH] Rework test_eh_thread to avoid sporadic failures (#946)
-
-Signed-off-by: Isaev, Ilya <ilya.isaev@intel.com>
---- a/test/tbb/test_eh_thread.cpp
-+++ b/test/tbb/test_eh_thread.cpp
-@@ -54,15 +54,16 @@ void limitThreads(size_t limit)
- CHECK_MESSAGE(0 == ret, "setrlimit has returned an error");
- }
-
--static bool g_exception_caught = false;
--static std::mutex m;
--static std::condition_variable cv;
--static std::atomic<bool> stop{ false };
-+size_t getThreadLimit() {
-+ rlimit rlim;
-+
-+ int ret = getrlimit(RLIMIT_NPROC, &rlim);
-+ CHECK_MESSAGE(0 == ret, "getrlimit has returned an error");
-+ return rlim.rlim_cur;
-+}
-
- static void* thread_routine(void*)
- {
-- std::unique_lock<std::mutex> lock(m);
-- cv.wait(lock, [] { return stop == true; });
- return nullptr;
- }
-
-@@ -94,32 +95,17 @@ TEST_CASE("Too many threads") {
- }
-
- // Some systems set really big limit (e.g. >45К) for the number of processes/threads
-- limitThreads(1024);
--
-- std::thread /* isolate test */ ([] {
-- std::vector<Thread> threads;
-- stop = false;
-- auto finalize = [&] {
-- stop = true;
-- cv.notify_all();
-- for (auto& t : threads) {
-- t.join();
-- }
-- };
--
-- for (int i = 0;; ++i) {
-+ limitThreads(1);
-+ if (getThreadLimit() == 1) {
-+ for (int attempt = 0; attempt < 5; ++attempt) {
- Thread thread;
-- if (!thread.isValid()) {
-- break;
-- }
-- threads.push_back(thread);
-- if (i == 1024) {
-- WARN_MESSAGE(false, "setrlimit seems having no effect");
-- finalize();
-+ if (thread.isValid()) {
-+ WARN_MESSAGE(false, "We were able to create a thread. setrlimit seems having no effect");
-+ thread.join();
- return;
- }
- }
-- g_exception_caught = false;
-+ bool g_exception_caught = false;
- try {
- // Initialize the library to create worker threads
- tbb::parallel_for(0, 2, [](int) {});
-@@ -132,9 +118,10 @@ TEST_CASE("Too many threads") {
- }
- // Do not CHECK to avoid memory allocation (we can be out of memory)
- if (!g_exception_caught) {
-- FAIL("No exception was caught");
-+ FAIL("No exception was thrown on library initialization");
- }
-- finalize();
-- }).join();
-+ } else {
-+ WARN_MESSAGE(false, "setrlimit seems having no effect");
-+ }
- }
- #endif
-
-From 137c1a88b690acf3525e0f279720ac489ce66481 Mon Sep 17 00:00:00 2001
-From: Rui Ueyama <ruiu@cs.stanford.edu>
-Date: Wed, 26 Oct 2022 04:54:20 -0700
-Subject: [PATCH] Retry if pthread_create fails with EAGAIN (#824)
-
-Signed-off-by: Rui Ueyama <ruiu@cs.stanford.edu>
---- a/src/tbb/rml_thread_monitor.h
-+++ b/src/tbb/rml_thread_monitor.h
-@@ -31,6 +31,7 @@
- #include <pthread.h>
- #include <cstring>
- #include <cstdlib>
-+#include <time.h>
- #else
- #error Unsupported platform
- #endif
-@@ -191,8 +192,25 @@ inline thread_monitor::handle_type thread_monitor::launch( void* (*thread_routin
- check(pthread_attr_init( &s ), "pthread_attr_init has failed");
- if( stack_size>0 )
- check(pthread_attr_setstacksize( &s, stack_size ), "pthread_attr_setstack_size has failed" );
-+
-+ // pthread_create(2) can spuriously fail with EAGAIN. We retry
-+ // max_num_tries times with progressively longer wait times.
- pthread_t handle;
-- check( pthread_create( &handle, &s, thread_routine, arg ), "pthread_create has failed" );
-+ const int max_num_tries = 20;
-+ int error = EAGAIN;
-+
-+ for (int i = 0; i < max_num_tries && error == EAGAIN; i++) {
-+ if (i != 0) {
-+ // Wait i milliseconds
-+ struct timespec ts = {0, i * 1000 * 1000};
-+ nanosleep(&ts, NULL);
-+ }
-+ error = pthread_create(&handle, &s, thread_routine, arg);
-+ }
-+
-+ if (error)
-+ handle_perror(error, "pthread_create has failed");
-+
- check( pthread_attr_destroy( &s ), "pthread_attr_destroy has failed" );
- return handle;
- }
-
diff --git a/dev-cpp/tbb/files/tbb-2021.8.0-gcc-13.patch b/dev-cpp/tbb/files/tbb-2021.8.0-gcc-13.patch
deleted file mode 100644
index 84a0ba3dc7a1..000000000000
--- a/dev-cpp/tbb/files/tbb-2021.8.0-gcc-13.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-https://github.com/oneapi-src/oneTBB/pull/1031
-
-From 363bf59bef2649b4d427788522da27c12f984a9a Mon Sep 17 00:00:00 2001
-From: Sam James <sam@gentoo.org>
-Date: Tue, 21 Feb 2023 09:36:33 +0000
-Subject: [PATCH] test: common: include <cstdlib> for abort() (fix build with
- GCC 13)
-
-GCC 13 (as usual for new compiler releases) shuffles around some
-internal includes and so <cstdint> etc is no longer transitively included.
-
-See https://www.gnu.org/software/gcc/gcc-13/porting_to.html.
-
-Signed-off-by: Sam James <sam@gentoo.org>
---- a/test/common/utils_assert.h
-+++ b/test/common/utils_assert.h
-@@ -20,6 +20,8 @@
- #include "config.h"
- #include "utils_report.h"
-
-+#include <cstdlib>
-+
- #define REPORT_FATAL_ERROR REPORT
-
- namespace utils {
-
diff --git a/dev-cpp/tbb/files/tbb-2021.9.0-dynamicLink.patch b/dev-cpp/tbb/files/tbb-2021.9.0-dynamicLink.patch
deleted file mode 100644
index 77c9ca68ba0b..000000000000
--- a/dev-cpp/tbb/files/tbb-2021.9.0-dynamicLink.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/test/CMakeLists.txt 2026-03-27 14:52:17.592128499 +0100
-+++ b/test/CMakeLists.txt 2026-03-27 14:53:30.563265543 +0100
-@@ -375,6 +375,7 @@
- tbb_add_test(SUBDIR tbb NAME test_allocators DEPENDENCIES TBB::tbb)
- tbb_add_test(SUBDIR tbb NAME test_arena_priorities DEPENDENCIES TBB::tbb)
- tbb_add_test(SUBDIR tbb NAME test_dynamic_link DEPENDENCIES TBB::tbb)
-+ set_target_properties(test_dynamic_link PROPERTIES ENABLE_EXPORTS TRUE)
- if (LINKER_HAS_NO_AS_NEEDED)
- # The linker may not detect a dependency on pthread in static variable constructors.
- target_link_libraries(test_dynamic_link PRIVATE "-Wl,--no-as-needed")
diff --git a/dev-cpp/tbb/files/tbb-2023.1.0-no-clobber-toolchain.patch b/dev-cpp/tbb/files/tbb-2023.1.0-no-clobber-toolchain.patch
new file mode 100644
index 000000000000..a19b7e365f39
--- /dev/null
+++ b/dev-cpp/tbb/files/tbb-2023.1.0-no-clobber-toolchain.patch
@@ -0,0 +1,79 @@
+Strip flags that are set by the Gentoo toolchain.
+
+For -fcf-protection
+https://bugs.gentoo.org/965340
+
+For -D_FORTIFY_SOURCE
+https://bugs.gentoo.org/922605
+
+--- a/cmake/compilers/Clang.cmake
++++ b/cmake/compilers/Clang.cmake
+@@ -74,40 +74,15 @@ endif()
+ set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS}
+ -Wformat -Wformat-security -Werror=format-security
+ $<$<PLATFORM_ID:Windows>:-D_CRT_SECURE_NO_WARNINGS>
+- $<$<NOT:$<PLATFORM_ID:Windows>>:-fPIC>
+- $<$<NOT:$<PLATFORM_ID:Emscripten>>:-fstack-protector-strong>)
+-
+-if (NOT APPLE AND NOT ANDROID_PLATFORM AND CMAKE_SYSTEM_PROCESSOR MATCHES "(AMD64|amd64|i.86|x86)" AND NOT WIN32)
+- set(TBB_LIB_COMPILE_FLAGS ${TBB_LIB_COMPILE_FLAGS} -fstack-clash-protection)
+- if (NOT EMSCRIPTEN)
+- # Some versions of Clang implicitly set -march=i686 when compiling for x86 and some don't.
+- # -fcf-protection requires i686, so check -fcf-protection explicitly.
+- include(CheckCXXSourceCompiles)
+- set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
+- set(CMAKE_REQUIRED_FLAGS "-fcf-protection=full")
+- check_cxx_source_compiles("int main(int, char*[]) { return 0; }" CF_PROTECTION_FULL_SUPPORTED)
+- unset(CMAKE_TRY_COMPILE_TARGET_TYPE)
+- unset(CMAKE_REQUIRED_FLAGS)
+-
+- if (CF_PROTECTION_FULL_SUPPORTED)
+- set(TBB_LIB_COMPILE_FLAGS ${TBB_LIB_COMPILE_FLAGS} -fcf-protection=full)
+- else()
+- message(WARNING "Compiler does not support -fcf-protection=full.")
+- endif()
+- endif()
+-endif()
++ $<$<NOT:$<PLATFORM_ID:Windows>>:-fPIC>)
+
+ # -z switch is not supported on MacOS and Windows
+ if (NOT APPLE AND NOT WIN32)
+- set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack)
++ set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} -Wl,-z,noexecstack)
+ endif()
+
+ set(TBB_COMMON_LINK_LIBS ${CMAKE_DL_LIBS})
+
+-if (NOT CMAKE_CXX_FLAGS MATCHES "_FORTIFY_SOURCE")
+- set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} $<$<NOT:$<CONFIG:Debug>>:-D_FORTIFY_SOURCE=2>)
+-endif ()
+-
+ if (MINGW)
+ list(APPEND TBB_COMMON_COMPILE_FLAGS -U__STRICT_ANSI__)
+ endif()
+--- a/cmake/compilers/GNU.cmake
++++ b/cmake/compilers/GNU.cmake
+@@ -106,20 +106,12 @@ endif ()
+
+ # Gnu flags to prevent compiler from optimizing out security checks
+ set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv)
+-set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -Wformat -Wformat-security -Werror=format-security
+- -fstack-protector-strong )
+-if (CMAKE_SYSTEM_PROCESSOR MATCHES "(AMD64|amd64|i.86|x86)" AND NOT EMSCRIPTEN)
+- set(TBB_LIB_COMPILE_FLAGS ${TBB_LIB_COMPILE_FLAGS} $<$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},8.0>>:-fcf-protection=full>)
+-endif ()
+-set(TBB_LIB_COMPILE_FLAGS ${TBB_LIB_COMPILE_FLAGS} $<$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},8.0>>:-fstack-clash-protection>)
++set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -Wformat -Wformat-security -Werror=format-security)
+
+ # -z switch is not supported on MacOS and MinGW
+ if (NOT APPLE AND NOT MINGW)
+- set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack)
++ set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} -Wl,-z,noexecstack)
+ endif()
+-if (NOT CMAKE_CXX_FLAGS MATCHES "_FORTIFY_SOURCE")
+- set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} $<$<NOT:$<CONFIG:Debug>>:-D_FORTIFY_SOURCE=2> )
+-endif ()
+
+ if (TBB_FILE_TRIM AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8 AND NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel")
+ set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -ffile-prefix-map=${NATIVE_TBB_PROJECT_ROOT_DIR}/= -ffile-prefix-map=${NATIVE_TBB_RELATIVE_BIN_PATH}/=)
+
diff --git a/dev-cpp/tbb/tbb-2021.12.0.ebuild b/dev-cpp/tbb/tbb-2021.12.0.ebuild
deleted file mode 100644
index 1bd9cb9fa412..000000000000
--- a/dev-cpp/tbb/tbb-2021.12.0.ebuild
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake-multilib flag-o-matic
-
-DESCRIPTION="High level abstract threading library"
-HOMEPAGE="https://github.com/oneapi-src/oneTBB"
-SRC_URI="https://github.com/oneapi-src/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/oneTBB-${PV}"
-
-LICENSE="Apache-2.0"
-# https://github.com/oneapi-src/oneTBB/blob/master/CMakeLists.txt#L53
-# libtbb<SONAME>-libtbbmalloc<SONAME>-libtbbbind<SONAME>
-SLOT="0/12.5-2.5-3.5"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-2021.8.0-gcc-13.patch
- "${FILESDIR}"/${PN}-2021.9.0-ppc.patch
- "${FILESDIR}"/${PN}-2021.13.0-test-atomics.patch
-)
-
-src_prepare() {
- # Has an #error to force compilation as C but links with C++ library, dies
- # with GLIBCXX_ASSERTIONS as a result.
- sed -i -e '/tbb_add_c_test(SUBDIR tbbmalloc NAME test_malloc_pure_c DEPENDENCIES TBB::tbbmalloc)/d' test/CMakeLists.txt || die
-
- cmake_src_prepare
-}
-
-src_configure() {
- # Workaround for bug #912210
- append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
-
- local mycmakeargs=(
- -DTBB_TEST=$(usex test)
- -DTBB_ENABLE_IPO=OFF
- -DTBB_STRICT=OFF
- )
-
- cmake-multilib_src_configure
-}
-
-src_test() {
- local CMAKE_SKIP_TESTS=()
- if use elibc_musl; then
- CMAKE_SKIP_TESTS=( conformance_resumable_tasks ) # Bug #864175
- fi
- cmake-multilib_src_test
-}
diff --git a/dev-cpp/tbb/tbb-2021.13.0.ebuild b/dev-cpp/tbb/tbb-2021.13.0.ebuild
deleted file mode 100644
index 4cc18d3ee0cd..000000000000
--- a/dev-cpp/tbb/tbb-2021.13.0.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake-multilib flag-o-matic
-
-DESCRIPTION="High level abstract threading library"
-HOMEPAGE="https://github.com/oneapi-src/oneTBB"
-SRC_URI="https://github.com/oneapi-src/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/oneTBB-${PV}"
-
-LICENSE="Apache-2.0"
-# https://github.com/oneapi-src/oneTBB/blob/master/CMakeLists.txt#L53
-# libtbb<SONAME>-libtbbmalloc<SONAME>-libtbbbind<SONAME>
-SLOT="0/12.5-2.5-3.5"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-2021.8.0-gcc-13.patch
- "${FILESDIR}"/${PN}-2021.9.0-ppc.patch
- "${FILESDIR}"/${PN}-2021.13.0-test-atomics.patch
- "${FILESDIR}"/${PN}-2022.0.0_do-not-fortify-source.patch
-)
-
-src_prepare() {
- # Has an #error to force compilation as C but links with C++ library, dies
- # with GLIBCXX_ASSERTIONS as a result.
- sed -i -e '/tbb_add_c_test(SUBDIR tbbmalloc NAME test_malloc_pure_c DEPENDENCIES TBB::tbbmalloc)/d' test/CMakeLists.txt || die
-
- cmake_src_prepare
-}
-
-src_configure() {
- # Workaround for bug #912210
- append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
-
- local mycmakeargs=(
- -DTBB_TEST=$(usex test)
- -DTBB_ENABLE_IPO=OFF
- -DTBB_STRICT=OFF
- )
-
- cmake-multilib_src_configure
-}
-
-src_test() {
- local CMAKE_SKIP_TESTS=()
- if use elibc_musl; then
- CMAKE_SKIP_TESTS=( conformance_resumable_tasks ) # Bug #864175
- fi
- cmake-multilib_src_test
-}
diff --git a/dev-cpp/tbb/tbb-2021.7.0-r1.ebuild b/dev-cpp/tbb/tbb-2021.7.0-r1.ebuild
deleted file mode 100644
index 14697638a200..000000000000
--- a/dev-cpp/tbb/tbb-2021.7.0-r1.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake-multilib flag-o-matic
-
-DESCRIPTION="High level abstract threading library"
-HOMEPAGE="https://github.com/oneapi-src/oneTBB"
-SRC_URI="https://github.com/oneapi-src/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/oneTBB-${PV}"
-
-LICENSE="Apache-2.0"
-# https://github.com/oneapi-src/oneTBB/blob/master/CMakeLists.txt#L53
-# libtbb<SONAME>-libtbbmalloc<SONAME>-libtbbbind<SONAME>
-SLOT="0/12.5-2.5-3.5"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-2021.7.0-pthread-eagain.patch
- "${FILESDIR}"/${PN}-2021.7.0-abort.patch
- "${FILESDIR}"/${P}-dynamicLink.patch
-)
-
-src_configure() {
- # Workaround for bug #912210
- append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
-
- local mycmakeargs=(
- -DTBB_TEST=$(usex test)
- -DTBB_ENABLE_IPO=OFF
- -DTBB_STRICT=OFF
- )
-
- cmake-multilib_src_configure
-}
-
-src_test() {
- local CMAKE_SKIP_TESTS=()
- if use elibc_musl; then
- CMAKE_SKIP_TESTS=( conformance_resumable_tasks ) # Bug #864175
- fi
- cmake-multilib_src_test
-}
diff --git a/dev-cpp/tbb/tbb-2021.9.0.ebuild b/dev-cpp/tbb/tbb-2021.9.0.ebuild
deleted file mode 100644
index 210049d0641c..000000000000
--- a/dev-cpp/tbb/tbb-2021.9.0.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake-multilib flag-o-matic
-
-DESCRIPTION="High level abstract threading library"
-HOMEPAGE="https://github.com/oneapi-src/oneTBB"
-SRC_URI="https://github.com/oneapi-src/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/oneTBB-${PV}"
-
-LICENSE="Apache-2.0"
-# https://github.com/oneapi-src/oneTBB/blob/master/CMakeLists.txt#L53
-# libtbb<SONAME>-libtbbmalloc<SONAME>-libtbbbind<SONAME>
-SLOT="0/12.5-2.5-3.5"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-2021.8.0-gcc-13.patch
- "${FILESDIR}"/${PN}-2021.9.0-ppc.patch
- "${FILESDIR}"/${PN}-2021.13.0-test-atomics.patch
- "${FILESDIR}"/${P}-dynamicLink.patch
-)
-
-src_prepare() {
- # Has an #error to force compilation as C but links with C++ library, dies
- # with GLIBCXX_ASSERTIONS as a result.
- sed -i -e '/tbb_add_c_test(SUBDIR tbbmalloc NAME test_malloc_pure_c DEPENDENCIES TBB::tbbmalloc)/d' test/CMakeLists.txt || die
-
- cmake_src_prepare
-}
-
-src_configure() {
- # Workaround for bug #912210
- append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
-
- local mycmakeargs=(
- -DTBB_TEST=$(usex test)
- -DTBB_ENABLE_IPO=OFF
- -DTBB_STRICT=OFF
- )
-
- cmake-multilib_src_configure
-}
-
-src_test() {
- local CMAKE_SKIP_TESTS=()
- if use elibc_musl; then
- CMAKE_SKIP_TESTS=( conformance_resumable_tasks ) # Bug #864175
- fi
- cmake-multilib_src_test
-}
diff --git a/dev-cpp/tbb/tbb-2022.0.0-r1.ebuild b/dev-cpp/tbb/tbb-2022.0.0-r1.ebuild
deleted file mode 100644
index 158dc20d4dc7..000000000000
--- a/dev-cpp/tbb/tbb-2022.0.0-r1.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake-multilib flag-o-matic
-
-DESCRIPTION="High level abstract threading library"
-HOMEPAGE="https://github.com/uxlfoundation/oneTBB"
-SRC_URI="https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/oneTBB-${PV}"
-
-LICENSE="Apache-2.0"
-# https://github.com/oneapi-src/oneTBB/blob/master/CMakeLists.txt#L53
-# libtbb<SONAME>-libtbbmalloc<SONAME>-libtbbbind<SONAME>
-SLOT="0/12.14-2.14-3.14"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-2021.9.0-ppc.patch
- "${FILESDIR}"/${PN}-2021.13.0-test-atomics.patch
- "${FILESDIR}"/${PN}-2022.0.0_do-not-fortify-source.patch
-)
-
-src_prepare() {
- # Has an #error to force compilation as C but links with C++ library, dies
- # with GLIBCXX_ASSERTIONS as a result.
- sed -i -e '/tbb_add_c_test(SUBDIR tbbmalloc NAME test_malloc_pure_c DEPENDENCIES TBB::tbbmalloc)/d' \
- test/CMakeLists.txt || die
-
- cmake_src_prepare
-}
-
-src_configure() {
- # Workaround for bug #912210
- append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
-
- local mycmakeargs=(
- -DTBB_TEST=$(usex test)
- -DTBB_EXAMPLES=OFF # TODO: add this
- -DTBB_ENABLE_IPO=OFF
- -DTBB_STRICT=OFF
- )
-
- cmake-multilib_src_configure
-}
-
-src_test() {
- local CMAKE_SKIP_TESTS=()
- if use elibc_musl; then
- CMAKE_SKIP_TESTS=( conformance_resumable_tasks ) # Bug #864175
- fi
- cmake-multilib_src_test
-}
diff --git a/dev-cpp/tbb/tbb-2022.3.0.ebuild b/dev-cpp/tbb/tbb-2022.3.0.ebuild
deleted file mode 100644
index 3e70e56bd082..000000000000
--- a/dev-cpp/tbb/tbb-2022.3.0.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake-multilib flag-o-matic
-
-DESCRIPTION="High level abstract threading library"
-HOMEPAGE="https://github.com/uxlfoundation/oneTBB"
-SRC_URI="https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/oneTBB-${PV}"
-
-LICENSE="Apache-2.0"
-# https://github.com/oneapi-src/oneTBB/blob/master/CMakeLists.txt#L53
-# libtbb<SONAME>-libtbbmalloc<SONAME>-libtbbbind<SONAME>
-SLOT="0/12.15-2.15-3.15"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-2021.9.0-ppc.patch
- "${FILESDIR}"/${PN}-2021.13.0-test-atomics.patch
- "${FILESDIR}"/${PN}-2022.0.0_do-not-fortify-source.patch
- "${FILESDIR}"/${PN}-2022.3.0-no-clobber-hardened.patch
- "${FILESDIR}"/${PN}-2022.3.0-cmake.patch
-)
-
-src_prepare() {
- # Has an #error to force compilation as C but links with C++ library, dies
- # with GLIBCXX_ASSERTIONS as a result.
- sed -i -e '/tbb_add_c_test(SUBDIR tbbmalloc NAME test_malloc_pure_c DEPENDENCIES TBB::tbbmalloc)/d' \
- test/CMakeLists.txt || die
-
- cmake_src_prepare
-}
-
-src_configure() {
- # Workaround for bug #912210
- append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
-
- local mycmakeargs=(
- -DTBB_TEST=$(usex test)
- -DTBB_EXAMPLES=OFF # TODO: add this
- -DTBB_ENABLE_IPO=OFF
- -DTBB_STRICT=OFF
- )
-
- cmake-multilib_src_configure
-}
-
-src_test() {
- local CMAKE_SKIP_TESTS=()
- if use elibc_musl; then
- CMAKE_SKIP_TESTS=( conformance_resumable_tasks ) # Bug #864175
- fi
- cmake-multilib_src_test
-}
diff --git a/dev-cpp/tbb/tbb-2023.1.0.ebuild b/dev-cpp/tbb/tbb-2023.1.0.ebuild
new file mode 100644
index 000000000000..45016d9536a6
--- /dev/null
+++ b/dev-cpp/tbb/tbb-2023.1.0.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake-multilib flag-o-matic
+
+DESCRIPTION="High level abstract threading library"
+HOMEPAGE="https://github.com/uxlfoundation/oneTBB"
+SRC_URI="https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/oneTBB-${PV}"
+
+LICENSE="Apache-2.0"
+# See VERSIONING.md
+# __TBB_BINARY_VERSION in include/oneapi/tbb/version.h -> libtbb.so.<SONAME>
+# TBBMALLOC_BINARY_VERSION in CMakeLists.txt -> libtbbmalloc.so.<SONAME>
+# TBBBIND_BINARY_VERSION in CMakeListst.txt -> libtbbbind.so.<SONAME>
+SLOT="0/12.2.3" # TBB_BINARY_VERSION.TBBMALLOC_VERSION.TBBBIND_VERSION
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2021.9.0-ppc.patch
+ "${FILESDIR}"/${PN}-2021.13.0-test-atomics.patch
+ "${FILESDIR}"/${PN}-2023.1.0-no-clobber-toolchain.patch
+)
+
+src_prepare() {
+ # sanity check subslot
+ local detected_abi tbb_version tbbmalloc_version tbbbind_version
+ tbb_version="$(sed -n -e 's/^#define __TBB_BINARY_VERSION \(.*\)$/\1/p' include/oneapi/tbb/version.h)"
+ tbbmalloc_version="$(sed -n -e 's/^set(TBBMALLOC_BINARY_VERSION \(.*\))$/\1/p' CMakeLists.txt)"
+ tbbbind_version="$(sed -n -e 's/^set(TBBBIND_BINARY_VERSION \(.*\))$/\1/p' CMakeLists.txt)"
+ detected_abi="${tbb_version}.${tbbmalloc_version}.${tbbbind_version}"
+ if [[ "${SLOT}" != "0/${detected_abi}" ]]; then
+ die "SLOT ${SLOT} doesn't match upstream specified ABI ${detected_abi}."
+ fi
+
+ # Silence cmake warnings
+ rm -r examples || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # Workaround for bug #912210
+ append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
+
+ local mycmakeargs=(
+ -DTBB_TEST=$(usex test)
+ -DTBB_EXAMPLES=OFF # TODO: add this
+
+ -DTBB_ENABLE_IPO=OFF # Use user cflags instead
+ -DTBB_STRICT=OFF # Don't turn warnings into errors
+ )
+
+ cmake-multilib_src_configure
+}
+
+src_test() {
+ local CMAKE_SKIP_TESTS=()
+ if use elibc_musl; then
+ CMAKE_SKIP_TESTS+=( conformance_resumable_tasks ) # Bug #864175
+ fi
+ cmake-multilib_src_test
+}
diff --git a/dev-cpp/ut2-glaze/Manifest b/dev-cpp/ut2-glaze/Manifest
index 29bfb2d99e85..cf1fd23b8427 100644
--- a/dev-cpp/ut2-glaze/Manifest
+++ b/dev-cpp/ut2-glaze/Manifest
@@ -1 +1,2 @@
DIST ut2-openalgz-0.0.4.tar.gz 9026 BLAKE2B 8ff4d313b8e5bb7d7c2a3153a47e360d83d4fe506d2a3a6739383b1dbd45a0c66a74a4a072d80bf4216fa9c0c2b8fde180b4e2bccdd84e716e6e8ec878a9f8ef SHA512 e4abd16ec3f0b1a4b9b1ece95ed8c08ebe5e16803554f8e77e7d579af00a4d9caaf80c7abb0e889c3333cccfaac995d7b049dde76601741277196f3ac5422516
+DIST ut2-openalgz-1.2.1.tar.gz 14702 BLAKE2B 8cfe8a47232526fb3cfd322a17739514a5dd8153d542a6b3b45419f18fe14d61035502f659b60d47cc75df07c59e8afc9b919833384364b21a3e206654db2a01 SHA512 9e6c266a36afa0579ede8645b9c8c96a741e9581847eda67ed13c4c26e5237a2758c97733965f04c7fa0b86708207446b96c32b4b40b9e70d64cd9ec81332599
diff --git a/dev-cpp/ut2-glaze/ut2-glaze-1.2.1.ebuild b/dev-cpp/ut2-glaze/ut2-glaze-1.2.1.ebuild
new file mode 100644
index 000000000000..7243dfffee47
--- /dev/null
+++ b/dev-cpp/ut2-glaze/ut2-glaze-1.2.1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# it's a header-only lib, thus not cmake-multilib. However, examples and tests...
+inherit cmake
+
+DESCRIPTION="Stripped down fork of boost-ext ut2"
+HOMEPAGE="https://github.com/openalgz/ut"
+SRC_URI="https://github.com/openalgz/ut/archive/refs/tags/v${PV}.tar.gz -> ut2-openalgz-${PV}.tar.gz"
+
+S="${WORKDIR}/ut-${PV}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_SKIP_INSTALL_RULES=OFF
+ -DBUILD_TESTING=$(usex test)
+ )
+ cmake_src_configure
+}
diff --git a/dev-db/mariadb/Manifest b/dev-db/mariadb/Manifest
index f950950c26ec..3fba3497c56f 100644
--- a/dev-db/mariadb/Manifest
+++ b/dev-db/mariadb/Manifest
@@ -1,14 +1,14 @@
-DIST mariadb-10.11.14.tar.gz 112475645 BLAKE2B f9b83783e1df6366448985ec8a70a3c0757390dcb8a3e603680ae7d8622cb783de3815a784c2514d0da06664a83d8d6121ad770a6cdefe382045331de06bbe86 SHA512 24276e8b0f7ad555bf8faab8e5e065cbaeeb5d92b66964e470f41ac00db29a148e36b0f9f8078392a5fdae4cc3e77df28d0a570ef3735a73f4837ded3a50e476
-DIST mariadb-10.11.15.tar.gz 112564914 BLAKE2B 0de5dc0392f35504490a481a033967d1082b835349294e5012889bd086c3981e2f2922a741d3f986780cb403a5990eb648eb62f0769e3414f602d37d79df07c0 SHA512 98d1e54954b69cf87a96be7d76f80333f27832a29279e6b0a9615b830e171713222abcb9ec9b9a545c0fc4a0f9f8e3d4774babcabf534a6fa3cb3dfdaed0dedc
DIST mariadb-10.11.18.tar.gz 114604451 BLAKE2B 1e6ae7a318fb11c8650b06c4974b6e0a964e589f58b0517edbaf2921e5e7a882ce469d5d2311c5cc41ba3ab7b6726091acba723a78027c5759c79f8eb9f46a94 SHA512 45fa3c746138aa51b55d61efe11d44b0476fdcb104d5a40929ca2910145668ae749664e2afed7f9d59825d5b2b14e920c012513a4efa4eb0f8af1607d44ae31b
+DIST mariadb-10.11.19.tar.gz 114812324 BLAKE2B 177f7c70b77d19d267aba3cc53e4531c74ba906889129bc8b83b2398844c836a4c2172489fd38c749ae6353fb92d55696bb4ba3da2aff0575243f90538bbfd30 SHA512 99eacc01cd65f93ba9136d75d9b751a6bf35b4a44843f74e9064b26255f3e1683db7556b08df1a74bee04a492945b216d85bb19eeb5eecf0cafd0ce237365af3
DIST mariadb-10.6.23-patches-01.tar.xz 6428 BLAKE2B 74d6bfd6f4fe445b529af8d434c960f5949df33d4bbe6b08cb0af82acda87326914a144b57cdde8c52aab2e993a9d04ea95cd2dc6593f8def0eb8064ed95265a SHA512 6635557451030678e679f2c0f749c25ee0a1dbdb962173c873f2be448c21e9f57bd7685d5c167d61b0631a22ec6bc9170241d6d396ae6d68891d947f80700f0c
-DIST mariadb-10.6.23.tar.gz 107141939 BLAKE2B 5a815c7bb212c5a1f20ae860685beeaa3222fac8e07bcdb2de5c56fc532a0aa2b3514df6e47a0bd1833008b07889bcdfc9ce96a2b44f863315f01ed104276648 SHA512 1654c828fef3dc8732dd2285034d0d7c17a828cd6a02561f75f48a6ee134e18f299d18e0be033ca752f963d84290088999bb5373c9971420c7b312cc986c2d72
-DIST mariadb-10.6.24.tar.gz 107184510 BLAKE2B b0059cbf88de3f57b68003ceb6b8040cb523c72de816b2d7c6cad383d96ef8a6edd93e4b0a0a70312eadf4229a209763ceda7d4056e52d555cc1389509286e4d SHA512 f40baaea0a029de05b4665f340eb2e8ad2f4fa79c04f8b60ba947f8c73e5b8516242d781a6eeef6696f2957c0d00eb643dd779d58fc7fb9eba2a10afde9ffc4d
-DIST mariadb-10.6.27.tar.gz 109060020 BLAKE2B 0e551e6c46ff4bdcd4ece2852ec6d4d3cfd5ed42ce90098a7f8480030860e7ed373487586a9d95413d2ea308fa6093c85dbf9744feedcdef05f49429863ac4eb SHA512 0a3d9f545af7ddafe1bbcdec19ffdeddd0fb0d3b08d5f90d584eeb7201d6eedf7a3abbbd3090e7249dbaa904b3bd63772d2fbccd2a7929ff2d857e07739ecb18
+DIST mariadb-11.4.13.tar.gz 221118336 BLAKE2B 3d099478db5aa157523e4a70a60490845cae3259a9f436b11bd6e4678ab7fff707c9e54138a36cc2ead751788d170540c89d544a199fc80eb5ab00bc3768def6 SHA512 3b10a8c42472f97720a8adf085475b2ab0677564aade9e8a7f4334ee1888a7779a97f3a68805c9b1e1de595eb164da0d88a8808761436b69411aa7d7237cc281
DIST mariadb-11.4.8-patches-01.tar.xz 6072 BLAKE2B 70882a81f4be5a65e91acda20dd8d2d7eaadfbe1f8f93bb6e41e5d50f88f6c40a6da78e07c80e2d5ab0618502c11448a1d85f0575689c0b4b01f1adc6650fa73 SHA512 0820075e7585c9db92792946dc8940b09fc176bfecfa57177b3ad737e5dafef59dfeab5d1d8ab57b8d3022ea432995da84ab058c015445475074c20df8d3a00f
-DIST mariadb-11.4.8.tar.gz 119152572 BLAKE2B 7f61d8fc4fcc70c7a1fdc94781cc3d5275d98c35563831720ae7bb3361ccf920ce249cd7b5639172409253d9fd9c43e076c4a58830bb0bef1580400dea0d5a11 SHA512 4adbe58e1ee478460c1a463032823a3dfe27e3c3a6c2b5002f757744e05efd4392a36e4bb7a473a72b9ba7cb043a15a8a3e309742dcca66f4adf316cbc2e01a3
DIST mariadb-11.4.9.tar.gz 119446773 BLAKE2B 868a9de0ee37f4298afb0a8b77af2b7f9a709bbd5ccbe6825a0f84c1be9df75269e6d1f1a32f69098be73a51d1069070624bc29d2ccfb13b928e3eedd7cc0b5f SHA512 53241230b5d56cd0df72792dbb761f6efd45bea432de78c541ae934785187a9eaf55f2ad12d1cdd34058b21d0ef7c7f7a80b9b719119a1b22359f0a1ac970600
-DIST mariadb-11.8.3.tar.gz 119640174 BLAKE2B e9f4b3c9016faec95292ecbf6842e64362ec8b9ca58e1cd9605f39bc85cc29e36035cf8836130b151b0ef17544431fddff1103a8c465f9c8fed00fda1a44e25a SHA512 c027df64ee8b6f779bbd140b40639757adbfdd239058389b146f6e34f2d6e50441d8084b89088ae243bd7bf261ecbdd4b2d82c43a355d9546d1e51d08c10a8a9
DIST mariadb-11.8.5.tar.gz 119948843 BLAKE2B b091fec1636953f2c35a5cdbe07b9f0920d4d99355e09621fa6634fb6e9d08f68beae95a775e530c8d9afed772e9aa508881c2ed35c2f701bdac00e437193f70 SHA512 0604bf83f23fda7d992e0ad3dfa72b10eef59bdbcdcca486b45dc8a6ea6de66c19e7f21e30a3109a45bf3e3a4210081e4b5544b2ad72c25e91142186cdd9467a
DIST mariadb-11.8.6.tar.gz 120887651 BLAKE2B eb80af86d7de29a3b8d20d4f8da2b433c623508d8d541270f415c6da664c23bb7a4ef919251c2f00dcdf5a4f1cb36d7355672c8db61414bd1466033e4cf892a9 SHA512 c623aeb8d2779db22b241e86c80ba7a6104a8019715dc26531ff7a8bd6cadcd029ca5229d0c57c4c472f059ee80b987013bdbf4ad1e2f7b67507d276c972f9e1
-DIST mariadb-12.0.2.tar.gz 119897806 BLAKE2B 1f884d5d9312ffd2556aa96cdacc381e5c9a82d1013182242da265995e3fc56bd6b667e843dfab6640c8e55eb76031d6918c97be0c240ab3f4f9b092033f753b SHA512 fe6846ad83d595cf8d0e015a227b033cb89f5d22b3aec616a44f621ff73d2296f1a45a4daaf8ff79e86f24012e9185a01f34fa6feef997db03bdac48d139db90
+DIST mariadb-11.8.9.tar.gz 221699796 BLAKE2B 57ecb7dc8245e1106e5f846e9eaeccd213faf74ae34c01074438fb46490906a099d6b90d8930507d68828afa4494cdaac7ae28819ff1187ce1266bed49be1cb9 SHA512 8b49a3a7e9435f5732512d0fa3b06bba72422f646398ed48da142a9c00a7adbeb6c505fa18216667c00b681ef51cf694475407adf2cbcae0e8a83b76bc81265a
+DIST mariadb-12.3.3.tar.gz 222927580 BLAKE2B ca92a9dc85eee870a955696cad5c35501ca0c33ba676c82704fbdb9bbdfa21ec28354fce58558747aa99995021ca36f97e6211e391560eb6650f2ea9541149cf SHA512 b9f4d063bbed1aaad52992228e6ac9572fa224509d807da8569a89e87803665148ac74204de72a8256791d844c81e5c6d43e7b16fea15c5c1aceed678f4fd634
+DIST mariadb-patches-10.11.19-0.tar.bz2 6970 BLAKE2B de5e3d9414d73b206bf186478c0f8e793a8b007c461d36ad74c74b4c312227a0d5f150266634524e085e7004983dcd710a0ccffe2a379a3f910209c455a51595 SHA512 78153378061e70a14cae449b6437c614f535ba2cd3735b34211a63d1b758a81a3fb1417b2cab900cd67d55b43fbd3cf40aff815e5113ea4a4683b04e30785518
+DIST mariadb-patches-11.4.13-0.tar.bz2 6357 BLAKE2B ead41be3deecb97154a0e6edb9a0655fe09caf9e4b2125fcf821c5373b66a058cfb95cdf02e3534a1d10bbf5976725b6f247b1b98cfe0f54fc437e18f7fb9c39 SHA512 9a04ed96be34bc1321c398b06fbb05ca1757f2d3c2d44ff96a33fb38f3e1d895de5f97bdace8ea4e043fce24ed2379fbb24234569923aca7c9b9745c650259d7
+DIST mariadb-patches-11.8.9-1.tar.bz2 6420 BLAKE2B a2517b40c1fcddfcf664da458e33ac0059a4a2340edb25657492a6459d58631ed367aaeda6c801d08e156ef54180cd08893fbb99f4303baf0cf617378e942b21 SHA512 5906ee6403f01c8db781bcdeec9409261427eb0d04c6639a44f65526fad8539ac0dbae4057a1eeb5124dc654f84615af2505b0f3b2e13fb6272ec5181717c278
+DIST mariadb-patches-12.3.3-0.tar.bz2 6223 BLAKE2B ff82a3f077f16c2969874288a216380a55aaf94a587f2ac8d37a0ba0f435b6fbb76cd7e6fed02bf20194b799a0717754269d413a3309acf4bd18320ebbb9bb6c SHA512 ddb26423339181a2340ee1c6566b88abcaea7671b8fef709083ea7aa87118aab2c829e58a6c377bfa68a2ef4f66d2478df28ed30b2b117a9a7bd24ef4a4e4f57
diff --git a/dev-db/mariadb/mariadb-10.11.14-r1.ebuild b/dev-db/mariadb/mariadb-10.11.14-r1.ebuild
deleted file mode 100644
index a8fc03fb8078..000000000000
--- a/dev-db/mariadb/mariadb-10.11.14-r1.ebuild
+++ /dev/null
@@ -1,1336 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-SUBSLOT="18"
-JAVA_PKG_OPT_USE="jdbc"
-
-inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake
-
-DESCRIPTION="An enhanced, drop-in replacement for MySQL"
-HOMEPAGE="https://mariadb.org/"
-SRC_URI="
- mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-10.6.23-patches-01.tar.xz
-"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2 LGPL-2.1+"
-SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 x86"
-IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4
- innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
- numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
- sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
- test xml yassl"
-
-RESTRICT="!bindist? ( bindist ) !test? ( test )"
-
-REQUIRED_USE="jdbc? ( extraengine server !static )
- ?? ( tcmalloc jemalloc )
- static? ( yassl !pam )
- test? ( extraengine )"
-
-# Be warned, *DEPEND are version-dependant
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- dev-libs/libfmt:=
- >=dev-libs/libpcre2-10.34:=
- >=sys-apps/texinfo-4.7-r1
- sys-libs/ncurses:0=
- >=virtual/zlib-1.2.3:=
- virtual/libcrypt:=
- !bindist? (
- sys-libs/binutils-libs:0=
- >=sys-libs/readline-4.1:0=
- )
- jemalloc? ( dev-libs/jemalloc:0= )
- kerberos? ( virtual/krb5 )
- kernel_linux? (
- dev-libs/libaio:0=
- sys-libs/liburing:=
- sys-process/procps:0=
- )
- server? (
- app-arch/bzip2
- app-arch/xz-utils
- backup? ( app-arch/libarchive:0= )
- columnstore? (
- app-arch/snappy:=
- dev-libs/boost:=
- dev-libs/libxml2:2=
- )
- cracklib? ( sys-libs/cracklib:0= )
- extraengine? (
- odbc? ( dev-db/unixODBC:0= )
- xml? ( dev-libs/libxml2:2= )
- )
- innodb-lz4? ( app-arch/lz4 )
- innodb-lzo? ( dev-libs/lzo )
- innodb-snappy? ( app-arch/snappy:= )
- mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 )
- numa? ( sys-process/numactl )
- oqgraph? (
- dev-libs/boost:=
- dev-libs/judy:0=
- )
- pam? ( sys-libs/pam:0= )
- s3? ( net-misc/curl )
- systemd? ( sys-apps/systemd:= )
- )
- systemtap? ( >=dev-debug/systemtap-1.3:0= )
- tcmalloc? ( dev-util/google-perftools:0= )
- yassl? ( net-libs/gnutls:0= )
- !yassl? (
- >=dev-libs/openssl-1.0.0:0=
- )
-"
-BDEPEND="
- app-alternatives/yacc
- test? (
- acct-group/mysql
- acct-user/mysql
- )
-"
-DEPEND="${COMMON_DEPEND}
- server? (
- extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) )
- )
- static? ( sys-libs/ncurses[static-libs] )
-"
-RDEPEND="${COMMON_DEPEND}
- !dev-db/mysql !dev-db/percona-server
- !dev-db/mariadb:10.3
- !dev-db/mariadb:10.4
- !dev-db/mariadb:10.5
- !dev-db/mariadb:10.6
- !dev-db/mariadb:10.7
- !dev-db/mariadb:10.8
- !dev-db/mariadb:10.9
- !dev-db/mariadb:10.10
- !dev-db/mariadb:11.0
- !dev-db/mariadb:11.1
- !dev-db/mariadb:11.2
- !dev-db/mariadb:11.3
- !dev-db/mariadb:11.4
- selinux? ( sec-policy/selinux-mysql )
- server? (
- columnstore? (
- dev-db/mariadb-connector-c
- !dev-libs/thrift
- )
- extraengine? ( jdbc? ( >=virtual/jre-1.8 ) )
- galera? (
- sys-apps/iproute2
- =sys-cluster/galera-26*
- sst-rsync? ( sys-process/lsof )
- sst-mariabackup? ( net-misc/socat[ssl] )
- )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-MariaDB is needed by some scripts installed by MySQL
-PDEPEND="perl? ( dev-perl/DBD-MariaDB )"
-
-mysql_init_vars() {
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"}
- MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=""
- if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
- MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
- | sed -e 's/.*=\s*//' \
- | tail -n1)
- fi
- fi
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR="${MY_LOCALSTATEDIR}"
- einfo "Using default MY_DATADIR"
- fi
- elog "MySQL MY_DATADIR is ${MY_DATADIR}"
-
- if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
- if [[ -e "${MY_DATADIR}" ]] ; then
- # If you get this and you're wondering about it, see bug #207636
- elog "MySQL datadir found in ${MY_DATADIR}"
- elog "A new one will not be created."
- PREVIOUS_DATADIR="yes"
- else
- PREVIOUS_DATADIR="no"
- fi
- export PREVIOUS_DATADIR
- fi
- else
- if [[ ${EBUILD_PHASE} == "config" ]]; then
- local new_MY_DATADIR
- new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
-
- if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
- ewarn "MySQL MY_DATADIR has changed"
- ewarn "from ${MY_DATADIR}"
- ewarn "to ${new_MY_DATADIR}"
- MY_DATADIR="${new_MY_DATADIR}"
- fi
- fi
- fi
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if has test ${FEATURES} ; then
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
- fi
- fi
-
- java-pkg-opt-2_pkg_setup
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die
-}
-
-src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
- eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
- eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
-
- eapply_user
-
- _disable_plugin() {
- echo > "${S}/plugin/${1}/CMakeLists.txt" || die
- }
- _disable_engine() {
- echo > "${S}/storage/${1}/CMakeLists.txt" || die
- }
-
- if use jemalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt"
- elif use tcmalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt"
- fi
-
- local plugin
- local server_plugins=( handler_socket auth_socket feedback metadata_lock_info
- locale_info qc_info server_audit sql_errlog auth_ed25519 )
- local test_plugins=( audit_null auth_examples daemon_example fulltext
- debug_key_management example_key_management versioning )
- if ! use server; then # These plugins are for the server
- for plugin in "${server_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- fi
-
- if ! use test; then # These plugins are only used during testing
- for plugin in "${test_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- _disable_engine test_sql_discovery
- echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die
- fi
-
- _disable_engine example
-
- if ! use oqgraph ; then # avoids extra library checks
- _disable_engine oqgraph
- fi
-
- if use mroonga ; then
- # Remove the bundled groonga
- # There is no CMake flag, it simply checks for existance
- rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
- else
- _disable_engine mroonga
- fi
-
- # Fix static bindings in galera replication
- sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \
- "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die
- sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \
- "${S}"/wsrep-lib/src/CMakeLists.txt || die
-
- # Fix galera_recovery.sh script
- sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \
- scripts/galera_recovery.sh || die
-
- sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \
- "${S}"/scripts/mysql_install_db.sh || die
-
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-src_configure() {
- # bug #855233 (MDEV-11914, MDEV-25633) at least
- filter-lto
- # bug 508724 mariadb cannot use ld.gold
- tc-ld-is-gold && tc-ld-force-bfd
- # Bug #114895, bug #110149
- filter-flags "-O" "-O[01]"
-
- use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
-
- # It fails on alpha without this
- use alpha && append-ldflags "-Wl,--no-relax"
-
- # bug #945352
- append-cflags -std=gnu17
-
- append-cxxflags -felide-constructors
-
- # bug #283926, with GCC4.4, this is required to get correct behavior.
- append-flags -fno-strict-aliasing
-
- # Workaround for bug #959423 (https://jira.mariadb.org/browse/MDEV-37148)
- append-flags -fno-tree-vectorize
-
- # debug hack wrt #497532
- local mycmakeargs=(
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_MANDIR=share/man
- -DINSTALL_MYSQLSHAREDIR=share/mariadb
- -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
- -DINSTALL_SCRIPTDIR=bin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb"
- -DWITH_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
- -DWITH_LIBEDIT=0
- -DWITH_LIBFMT=system
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DWITH_DEFAULT_FEATURE_SET=0
- -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
- # The build forces this to be defined when cross-compiling. We pass it
- # all the time for simplicity and to make sure it is actually correct.
- -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
- -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)"
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF)
- -DCONC_WITH_EXTERNAL_ZLIB=YES
- -DWITH_EXTERNAL_ZLIB=YES
- -DSUFFIX_INSTALL_DIR=""
- -DWITH_UNITTEST=OFF
- -DWITHOUT_CLIENTLIBS=YES
- -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
- -DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
- -DCLIENT_PLUGIN_ZSTD=OFF
- )
- if use test ; then
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test )
- else
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
- fi
-
- if ! use yassl ; then
- mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
- if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
- mycmakeargs+=(
- -DDTRACE="${BROOT}"/usr/bin/stap-dtrace
- )
- fi
-
- # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
- mycmakeargs+=(
- -DWITH_READLINE=$(usex bindist 1 0)
- -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1)
- -DENABLE_DTRACE=$(usex systemtap)
- )
-
- if use server ; then
- # Connect and Federated{,X} must be treated special
- # otherwise they will not be built as plugins
- if ! use extraengine ; then
- mycmakeargs+=(
- -DPLUGIN_CONNECT=NO
- -DPLUGIN_FEDERATED=NO
- -DPLUGIN_FEDERATEDX=NO
- )
- fi
-
- mycmakeargs+=(
- -DWITH_PCRE=system
- -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
- -DPLUGIN_SPHINX=$(usex sphinx YES NO)
- -DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=NO
- -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
- -DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
- -DPLUGIN_SPIDER=$(usex extraengine YES NO)
- -DPLUGIN_S3=$(usex s3 YES NO)
- -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO)
- -DCONNECT_WITH_MYSQL=1
- -DCONNECT_WITH_LIBXML2=$(usex xml)
- -DCONNECT_WITH_ODBC=$(usex odbc)
- -DCONNECT_WITH_JDBC=$(usex jdbc)
- # Build failure and autodep wrt bug 639144
- -DCONNECT_WITH_MONGO=OFF
- -DWITH_WSREP=$(usex galera)
- -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF)
- -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF)
- -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF)
- -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO)
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DWITH_MARIABACKUP=$(usex backup ON OFF)
- -DWITH_LIBARCHIVE=$(usex backup ON OFF)
- -DINSTALL_SQLBENCHDIR=""
- -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO)
- # systemd is only linked to for server notification
- -DWITH_SYSTEMD=$(usex systemd yes no)
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use test ; then
- # This is needed for the new client lib which tests a real, open server
- mycmakeargs+=( -DSKIP_TESTS=ON )
- fi
-
- if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
-
- elif ! use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- fi
- mycmakeargs+=(
- -DEXTRA_CHARSETS=all
- -DMYSQL_USER=mysql
- -DDISABLE_SHARED=$(usex static YES NO)
- -DWITH_DEBUG=$(usex debug)
- -DWITH_EMBEDDED_SERVER=OFF
- -DWITH_PROFILING=$(usex profiling)
- )
-
- if use static; then
- mycmakeargs+=( -DWITH_PIC=1 )
- fi
-
- if use jemalloc || use tcmalloc ; then
- mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- -DWITH_PARTITION_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_EMBEDDED_SERVER=OFF
- -DEXTRA_CHARSETS=none
- -DINSTALL_SQLBENCHDIR=
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
-}
-
-# Official test instructions:
-# USE='extraengine perl server' \
-# FEATURES='test userpriv' \
-# ebuild mariadb-X.X.XX.ebuild \
-# digest clean package
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- if ! use server ; then
- einfo "Skipping server tests due to minimal build."
- return 0
- fi
-
- # Ensure that parallel runs don't die
- export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- if [[ -z "${MTR_PARALLEL}" ]] ; then
- local -x MTR_PARALLEL=$(makeopts_jobs)
-
- if [[ ${MTR_PARALLEL} -gt 4 ]] ; then
- # Running multiple tests in parallel usually require higher ulimit
- # and fs.aio-max-nr setting. In addition, tests like main.multi_update
- # are known to hit timeout when system is busy.
- # To avoid test failure we will limit MTR_PARALLEL to 4 instead of
- # using "auto".
- local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})"
- info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!"
- einfo "${info_msg}"
- unset info_msg
- MTR_PARALLEL=4
- fi
- else
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
- fi
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from '[Warning] Buffered warning: Could not
- # increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- # create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then
- touch "${S}"/mysql-test/unstable-tests || die
- fi
-
- cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die
-
- local disabled_tests=(
- "innodb_gis.1;MDEV-25095;Known rounding error with latest AMD processors"
- "innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
- "main.gis;MDEV-25095;Known rounding error with latest AMD processors"
-
- # Test which fail in network-sandbox because hostname is set to "localhost"
- "main.explain_non_select;0;Fails in network-sandbox"
- "main.mysql_upgrade;MDEV-27044;Fails in network-sandbox"
- "main.selectivity_no_engine;MDEV-26320;Fails in network-sandbox"
- "main.stat_tables;0;Fails in network-sandbox"
- "main.stat_tables_innodb;0;Fails in network-sandbox"
- "main.upgrade_MDEV-19650;MDEV-25096;Fails in network-sandbox"
- "perfschema.privilege_table_io;MDEV-27045;Fails in network-sandbox"
- "roles.acl_statistics;0;Fails in network-sandbox"
-
- # Some tests are unable to retrieve HW address
- "spider.*;MDEV-37098;Fails with network sandbox"
- )
-
- use latin1 || disabled_tests+=(
- "funcs_1.is_columns_mysql;0;Requires USE=latin1"
- "main.information_schema;0;Requires USE=latin1"
- "main.sp2;24177;Requires USE=latin1"
- "main.system_mysql_db;0;Requires USE=latin1"
- "main.upgrade_MDEV-19650;24178;Requires USE=latin1"
- )
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- # run mysql-test tests
- pushd "${TESTDIR}" &>/dev/null || die
- perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def"
- retstatus_tests=$?
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- local failures=""
- [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests"
-
- [[ -z "${failures}" ]] || die "Test failures: ${failures}"
- einfo "Tests successfully completed"
-}
-
-src_install() {
- cmake_src_install
-
- # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
- if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then
- rm "${ED}/usr/include/mysql/server/private/config.h" || die
- fi
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Unless they explicitly specific USE=test, then do not install the
- # testsuite. It DOES have a use to be installed, esp. when you want to do a
- # validation of your database configuration after tuning it.
- if ! use test ; then
- rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mariadb.d"
- cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- if use server ; then
- mycnf_src="my.cnf.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- eprefixify "${TMPDIR}/my.cnf.ok"
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- einfo "Including support files and sample configurations"
- docinto "support-files"
- local script
- for script in \
- "${S}"/support-files/magic
- do
- [[ -f "$script" ]] && dodoc "${script}"
- done
-
- docinto "scripts"
- for script in "${S}"/scripts/mysql* ; do
- [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
- done
- # Manually install supporting files that conflict with other packages
- # but are needed for galera and initial installation
- exeinto /usr/libexec/mariadb
- doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror"
-
- if use pam ; then
- keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir
- fi
- fi
-
- # Conflicting files
- conflicting_files=()
-
- # We prefer my_print_defaults from dev-db/mysql-connector-c
- conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" )
-
- # Remove bundled mytop in favor of dev-db/mytop
- conflicting_files+=( "${ED}/usr/bin/mytop" )
- conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" )
-
- local conflicting_file
- for conflicting_file in "${conflicting_files[@]}" ; do
- if [[ -e "${conflicting_file}" ]] ; then
- rm -v "${conflicting_file}" || die
- fi
- done
-
- # Fix a dangling symlink when galera is not built
- if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then
- rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die
- fi
-
- # Remove dangling symlink
- rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die
-
- # Remove broken SST scripts that are incompatible
- local scriptremove
- for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do
- if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then
- rm "${ED}/usr/bin/${scriptremove}" || die
- fi
- done
-}
-
-pkg_preinst() {
- java-pkg-opt-2_pkg_preinst
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}"
-
- if use server ; then
- if use pam; then
- einfo
- elog "This install includes the PAM authentication plugin."
- elog "To activate and configure the PAM plugin, please read:"
- elog "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
- einfo
- chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die
- fi
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog "\"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- elog
- elog "If you are switching server implentations, you should run the"
- elog "mysql_upgrade tool."
- einfo
- else
- einfo
- elog "If you are upgrading major versions, you should run the"
- elog "mysql_upgrade tool."
- einfo
- fi
-
- if use galera ; then
- einfo
- elog "Be sure to edit the my.cnf file to activate your cluster settings."
- elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
- elog "The first time the cluster is activated, you should add"
- elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
- elog "This option should then be removed for subsequent starts."
- einfo
- fi
- fi
-
- # Note about configuration change
- einfo
- elog "This version of mariadb reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/${PN}.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-}
-
-pkg_config() {
- _getoptval() {
- local section="${1}"
- local option="--${2}"
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
-
- local values=()
- local parameters=( $(eval "${cmd[@]}" 2>/dev/null) )
- for parameter in "${parameters[@]}"
- do
- # my_print_defaults guarantees output of options, one per line,
- # in the form that they would be specified on the command line.
- # So checking for --option=* should be safe.
- case ${parameter} in
- ${option}=*)
- values+=( "${parameter#*=}" )
- ;;
- esac
- done
-
- if [[ ${#values[@]} -gt 0 ]] ; then
- # Option could have been set multiple times
- # in which case only the last occurrence
- # contains the current value
- echo "${values[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db"
- if [[ ! -x "${mysql_install_db_binary}" ]] ; then
- die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- # Only create directory when MYSQL_LOG_BIN is an absolute path
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Only test when MYSQL_LOG_BIN is an absolute path
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- # Only create directory when MYSQL_RELAY_LOG is an absolute path
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Only test when MYSQL_RELAY_LOG is an absolute path
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null)
- [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir"
-
- # Limit access
- chmod 0770 "${SETUP_TMPDIR}" || die
- chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die
-
- local mysql_install_log="${SETUP_TMPDIR}/install_db.log"
- local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log"
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Absolute path for binary log files specified
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Absolute path for relay log files specified
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x${pwd1}" != "x${pwd2}" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="${SETUP_TMPDIR}/tz.sql"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- local cmd=(
- "${mysql_install_db_binary}"
- "${mysqld_options[@]}"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--rpm"
- "--cross-bootstrap"
- "--skip-test-db"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- local x=${RANDOM}
- local socket="${PID_DIR}/mysqld.${x}.sock"
- [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!"
- local pidfile="${PID_DIR}/mysqld.${x}.pid"
- [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- rm -r "${SETUP_TMPDIR}" || die
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mariadb/mariadb-10.11.15-r1.ebuild b/dev-db/mariadb/mariadb-10.11.19.ebuild
index 77058f998591..5db43f3bae80 100644
--- a/dev-db/mariadb/mariadb-10.11.15-r1.ebuild
+++ b/dev-db/mariadb/mariadb-10.11.19.ebuild
@@ -5,6 +5,7 @@ EAPI=8
SUBSLOT="18"
JAVA_PKG_OPT_USE="jdbc"
+MARIADB_GENTOO_PATCH_VERSION="10.11.19-0"
inherit systemd flag-o-matic prefix toolchain-funcs \
multiprocessing java-pkg-opt-2 cmake pam
@@ -13,7 +14,7 @@ DESCRIPTION="An enhanced, drop-in replacement for MySQL"
HOMEPAGE="https://mariadb.org/"
SRC_URI="
mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-10.6.23-patches-01.tar.xz
+ https://gitweb.gentoo.org/proj/mariadb-patches.git/snapshot/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}.tar.bz2
"
# Shorten the path because the socket path length must be shorter than 107 chars
# and we will run a mysql server during test phase
@@ -21,7 +22,7 @@ S="${WORKDIR}/mysql"
LICENSE="GPL-2 LGPL-2.1+"
SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4
innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
@@ -103,20 +104,8 @@ DEPEND="${COMMON_DEPEND}
static? ( sys-libs/ncurses[static-libs] )
"
RDEPEND="${COMMON_DEPEND}
- !dev-db/mysql !dev-db/percona-server
- !dev-db/mariadb:10.3
- !dev-db/mariadb:10.4
- !dev-db/mariadb:10.5
- !dev-db/mariadb:10.6
- !dev-db/mariadb:10.7
- !dev-db/mariadb:10.8
- !dev-db/mariadb:10.9
- !dev-db/mariadb:10.10
- !dev-db/mariadb:11.0
- !dev-db/mariadb:11.1
- !dev-db/mariadb:11.2
- !dev-db/mariadb:11.3
- !dev-db/mariadb:11.4
+ !<dev-db/mariadb-$(ver_cut 1-2)
+ !dev-db/mysql
selinux? ( sec-policy/selinux-mysql )
server? (
columnstore? (
@@ -220,10 +209,9 @@ src_unpack() {
}
src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
+ eapply "${WORKDIR}"/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}
eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
- eapply "${FILESDIR}"/${PN}-10.6.24-fix_boost_system.patch
eapply_user
@@ -587,6 +575,8 @@ src_test() {
# Test which fail in network-sandbox because hostname is set to "localhost"
"main.explain_non_select;0;Fails in network-sandbox"
+ "main.mysql_client_test;0;Fails in network-sandbox"
+ "main.mysql_client_test_comp;0;Fails in network-sandbox"
"main.mysql_upgrade;MDEV-27044;Fails in network-sandbox"
"main.selectivity_no_engine;MDEV-26320;Fails in network-sandbox"
"main.stat_tables;0;Fails in network-sandbox"
@@ -601,6 +591,8 @@ src_test() {
# This issue will be fixed in next release
# see also https://github.com/MariaDB/server/pull/4429
"main.func_regexp_pcre;MDEV-38046;Fails with PCRE2 10.47"
+
+ "sys_vars.session_track_system_variables_basic;0;Requires example engine"
)
use latin1 || disabled_tests+=(
diff --git a/dev-db/mariadb/mariadb-10.6.23-r1.ebuild b/dev-db/mariadb/mariadb-10.6.23-r1.ebuild
deleted file mode 100644
index 0c8b628cd07b..000000000000
--- a/dev-db/mariadb/mariadb-10.6.23-r1.ebuild
+++ /dev/null
@@ -1,1347 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-SUBSLOT="18"
-JAVA_PKG_OPT_USE="jdbc"
-
-inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake
-
-DESCRIPTION="An enhanced, drop-in replacement for MySQL"
-HOMEPAGE="https://mariadb.org/"
-SRC_URI="
- mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-10.6.23-patches-01.tar.xz
-"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2 LGPL-2.1+"
-SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 x86"
-IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4
- innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
- numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
- sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
- test xml yassl"
-
-RESTRICT="!bindist? ( bindist ) !test? ( test )"
-
-REQUIRED_USE="jdbc? ( extraengine server !static )
- ?? ( tcmalloc jemalloc )
- static? ( yassl !pam )
- test? ( extraengine )"
-
-# Be warned, *DEPEND are version-dependant
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- >=dev-libs/libpcre2-10.34:=
- >=sys-apps/texinfo-4.7-r1
- sys-libs/ncurses:0=
- >=virtual/zlib-1.2.3:=
- virtual/libcrypt:=
- !bindist? (
- sys-libs/binutils-libs:0=
- >=sys-libs/readline-4.1:0=
- )
- jemalloc? ( dev-libs/jemalloc:0= )
- kerberos? ( virtual/krb5 )
- kernel_linux? (
- dev-libs/libaio:0=
- sys-libs/liburing:=
- sys-process/procps:0=
- )
- server? (
- app-arch/bzip2
- app-arch/xz-utils
- backup? ( app-arch/libarchive:0= )
- columnstore? (
- app-arch/snappy:=
- dev-libs/boost:=
- dev-libs/libxml2:2=
- )
- cracklib? ( sys-libs/cracklib:0= )
- extraengine? (
- odbc? ( dev-db/unixODBC:0= )
- xml? ( dev-libs/libxml2:2= )
- )
- innodb-lz4? ( app-arch/lz4 )
- innodb-lzo? ( dev-libs/lzo )
- innodb-snappy? ( app-arch/snappy:= )
- mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 )
- numa? ( sys-process/numactl )
- oqgraph? (
- dev-libs/boost:=
- dev-libs/judy:0=
- )
- pam? ( sys-libs/pam:0= )
- s3? ( net-misc/curl )
- systemd? ( sys-apps/systemd:= )
- )
- systemtap? ( >=dev-debug/systemtap-1.3:0= )
- tcmalloc? ( dev-util/google-perftools:0= )
- yassl? ( net-libs/gnutls:0= )
- !yassl? (
- >=dev-libs/openssl-1.0.0:0=
- )
-"
-BDEPEND="
- app-alternatives/yacc
- test? (
- acct-group/mysql
- acct-user/mysql
- )
-"
-DEPEND="${COMMON_DEPEND}
- server? (
- extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) )
- )
- static? ( sys-libs/ncurses[static-libs] )
-"
-RDEPEND="${COMMON_DEPEND}
- !dev-db/mysql !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster
- !dev-db/mariadb:0
- !dev-db/mariadb:5.5
- !dev-db/mariadb:10.1
- !dev-db/mariadb:10.2
- !dev-db/mariadb:10.3
- !dev-db/mariadb:10.4
- !dev-db/mariadb:10.5
- !dev-db/mariadb:10.7
- !dev-db/mariadb:10.8
- !dev-db/mariadb:10.9
- !dev-db/mariadb:10.10
- !dev-db/mariadb:10.11
- !dev-db/mariadb:11.0
- !dev-db/mariadb:11.1
- !dev-db/mariadb:11.2
- !dev-db/mariadb:11.3
- !dev-db/mariadb:11.4
- !<virtual/mysql-5.6-r11
- !<virtual/libmysqlclient-18-r1
- selinux? ( sec-policy/selinux-mysql )
- server? (
- columnstore? (
- dev-db/mariadb-connector-c
- !dev-libs/thrift
- )
- extraengine? ( jdbc? ( >=virtual/jre-1.8 ) )
- galera? (
- sys-apps/iproute2
- =sys-cluster/galera-26*
- sst-rsync? ( sys-process/lsof )
- sst-mariabackup? ( net-misc/socat[ssl] )
- )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-MariaDB is needed by some scripts installed by MySQL
-PDEPEND="perl? ( dev-perl/DBD-MariaDB )"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
- # These don't exist on Linux
- pthread_threadid_np
- getthrid
-)
-
-mysql_init_vars() {
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"}
- MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=""
- if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
- MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
- | sed -e 's/.*=\s*//' \
- | tail -n1)
- fi
- fi
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR="${MY_LOCALSTATEDIR}"
- einfo "Using default MY_DATADIR"
- fi
- elog "MySQL MY_DATADIR is ${MY_DATADIR}"
-
- if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
- if [[ -e "${MY_DATADIR}" ]] ; then
- # If you get this and you're wondering about it, see bug #207636
- elog "MySQL datadir found in ${MY_DATADIR}"
- elog "A new one will not be created."
- PREVIOUS_DATADIR="yes"
- else
- PREVIOUS_DATADIR="no"
- fi
- export PREVIOUS_DATADIR
- fi
- else
- if [[ ${EBUILD_PHASE} == "config" ]]; then
- local new_MY_DATADIR
- new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
-
- if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
- ewarn "MySQL MY_DATADIR has changed"
- ewarn "from ${MY_DATADIR}"
- ewarn "to ${new_MY_DATADIR}"
- MY_DATADIR="${new_MY_DATADIR}"
- fi
- fi
- fi
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if has test ${FEATURES} ; then
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
- fi
- fi
-
- java-pkg-opt-2_pkg_setup
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die
-}
-
-src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
- eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
- eapply "${FILESDIR}"/${PN}-10.6.21-debug.patch
- eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
-
- eapply_user
-
- _disable_plugin() {
- echo > "${S}/plugin/${1}/CMakeLists.txt" || die
- }
- _disable_engine() {
- echo > "${S}/storage/${1}/CMakeLists.txt" || die
- }
-
- if use jemalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt"
- elif use tcmalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt"
- fi
-
- local plugin
- local server_plugins=( handler_socket auth_socket feedback metadata_lock_info
- locale_info qc_info server_audit sql_errlog auth_ed25519 )
- local test_plugins=( audit_null auth_examples daemon_example fulltext
- debug_key_management example_key_management versioning )
- if ! use server; then # These plugins are for the server
- for plugin in "${server_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- fi
-
- if ! use test; then # These plugins are only used during testing
- for plugin in "${test_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- _disable_engine test_sql_discovery
- echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die
- fi
-
- _disable_engine example
-
- if ! use oqgraph ; then # avoids extra library checks
- _disable_engine oqgraph
- fi
-
- if use mroonga ; then
- # Remove the bundled groonga
- # There is no CMake flag, it simply checks for existance
- rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
- else
- _disable_engine mroonga
- fi
-
- # Fix static bindings in galera replication
- sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \
- "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die
- sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \
- "${S}"/wsrep-lib/src/CMakeLists.txt || die
-
- # Fix galera_recovery.sh script
- sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \
- scripts/galera_recovery.sh || die
-
- sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \
- "${S}"/scripts/mysql_install_db.sh || die
-
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-src_configure() {
- # bug #855233 (MDEV-11914, MDEV-25633) at least
- filter-lto
- # bug 508724 mariadb cannot use ld.gold
- tc-ld-is-gold && tc-ld-force-bfd
- # Bug #114895, bug #110149
- filter-flags "-O" "-O[01]"
-
- use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
-
- # It fails on alpha without this
- use alpha && append-ldflags "-Wl,--no-relax"
-
- # bug #945352
- append-cflags -std=gnu17
-
- append-cxxflags -felide-constructors
-
- # bug #283926, with GCC4.4, this is required to get correct behavior.
- append-flags -fno-strict-aliasing
-
- # Workaround for bug #959423 (https://jira.mariadb.org/browse/MDEV-37148)
- append-flags -fno-tree-vectorize
-
- # debug hack wrt #497532
- local mycmakeargs=(
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_MANDIR=share/man
- -DINSTALL_MYSQLSHAREDIR=share/mariadb
- -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
- -DINSTALL_SCRIPTDIR=bin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb"
- -DWITH_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
- -DWITH_LIBEDIT=0
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DWITH_DEFAULT_FEATURE_SET=0
- -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
- # The build forces this to be defined when cross-compiling. We pass it
- # all the time for simplicity and to make sure it is actually correct.
- -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
- -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)"
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF)
- -DCONC_WITH_EXTERNAL_ZLIB=YES
- -DWITH_EXTERNAL_ZLIB=YES
- -DSUFFIX_INSTALL_DIR=""
- -DWITH_UNITTEST=OFF
- -DWITHOUT_CLIENTLIBS=YES
- -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
- -DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
- -DCLIENT_PLUGIN_ZSTD=OFF
- )
- if use test ; then
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test )
- else
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
- fi
-
- if ! use yassl ; then
- mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
- if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
- mycmakeargs+=(
- -DDTRACE="${BROOT}"/usr/bin/stap-dtrace
- )
- fi
-
- # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
- mycmakeargs+=(
- -DWITH_READLINE=$(usex bindist 1 0)
- -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1)
- -DENABLE_DTRACE=$(usex systemtap)
- )
-
- if use server ; then
- # Connect and Federated{,X} must be treated special
- # otherwise they will not be built as plugins
- if ! use extraengine ; then
- mycmakeargs+=(
- -DPLUGIN_CONNECT=NO
- -DPLUGIN_FEDERATED=NO
- -DPLUGIN_FEDERATEDX=NO
- )
- fi
-
- mycmakeargs+=(
- -DWITH_PCRE=system
- -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
- -DPLUGIN_SPHINX=$(usex sphinx YES NO)
- -DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=NO
- -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
- -DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
- -DPLUGIN_SPIDER=$(usex extraengine YES NO)
- -DPLUGIN_S3=$(usex s3 YES NO)
- -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO)
- -DCONNECT_WITH_MYSQL=1
- -DCONNECT_WITH_LIBXML2=$(usex xml)
- -DCONNECT_WITH_ODBC=$(usex odbc)
- -DCONNECT_WITH_JDBC=$(usex jdbc)
- # Build failure and autodep wrt bug 639144
- -DCONNECT_WITH_MONGO=OFF
- -DWITH_WSREP=$(usex galera)
- -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF)
- -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF)
- -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF)
- -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO)
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DWITH_MARIABACKUP=$(usex backup ON OFF)
- -DWITH_LIBARCHIVE=$(usex backup ON OFF)
- -DINSTALL_SQLBENCHDIR=""
- -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO)
- # systemd is only linked to for server notification
- -DWITH_SYSTEMD=$(usex systemd yes no)
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use test ; then
- # This is needed for the new client lib which tests a real, open server
- mycmakeargs+=( -DSKIP_TESTS=ON )
- fi
-
- if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
-
- elif ! use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- fi
- mycmakeargs+=(
- -DEXTRA_CHARSETS=all
- -DMYSQL_USER=mysql
- -DDISABLE_SHARED=$(usex static YES NO)
- -DWITH_DEBUG=$(usex debug)
- -DWITH_EMBEDDED_SERVER=OFF
- -DWITH_PROFILING=$(usex profiling)
- )
-
- if use static; then
- mycmakeargs+=( -DWITH_PIC=1 )
- fi
-
- if use jemalloc || use tcmalloc ; then
- mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- -DWITH_PARTITION_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_EMBEDDED_SERVER=OFF
- -DEXTRA_CHARSETS=none
- -DINSTALL_SQLBENCHDIR=
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
-}
-
-# Official test instructions:
-# USE='extraengine perl server' \
-# FEATURES='test userpriv' \
-# ebuild mariadb-X.X.XX.ebuild \
-# digest clean package
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- if ! use server ; then
- einfo "Skipping server tests due to minimal build."
- return 0
- fi
-
- # Ensure that parallel runs don't die
- export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- if [[ -z "${MTR_PARALLEL}" ]] ; then
- local -x MTR_PARALLEL=$(makeopts_jobs)
-
- if [[ ${MTR_PARALLEL} -gt 4 ]] ; then
- # Running multiple tests in parallel usually require higher ulimit
- # and fs.aio-max-nr setting. In addition, tests like main.multi_update
- # are known to hit timeout when system is busy.
- # To avoid test failure we will limit MTR_PARALLEL to 4 instead of
- # using "auto".
- local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})"
- info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!"
- einfo "${info_msg}"
- unset info_msg
- MTR_PARALLEL=4
- fi
- else
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
- fi
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from '[Warning] Buffered warning: Could not
- # increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- # create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then
- touch "${S}"/mysql-test/unstable-tests || die
- fi
-
- cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die
-
- local disabled_tests=(
- "innodb_gis.1;MDEV-25095;Known rounding error with latest AMD processors"
- "innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
- "main.gis;MDEV-25095;Known rounding error with latest AMD processors"
-
- # Test which fail in network-sandbox because hostname is set to "localhost"
- "main.explain_non_select;0;Fails in network-sandbox"
- "main.mysql_upgrade;MDEV-27044;Fails in network-sandbox"
- "main.selectivity_no_engine;MDEV-26320;Fails in network-sandbox"
- "main.stat_tables;0;Fails in network-sandbox"
- "main.stat_tables_innodb;0;Fails in network-sandbox"
- "main.upgrade_MDEV-19650;MDEV-25096;Fails in network-sandbox"
- "perfschema.privilege_table_io;MDEV-27045;Fails in network-sandbox"
- "roles.acl_statistics;0;Fails in network-sandbox"
-
- # Some tests are unable to retrieve HW address
- "spider.*;MDEV-37098;Fails with network sandbox"
- )
-
- use latin1 || disabled_tests+=(
- "funcs_1.is_columns_mysql;0;Requires USE=latin1"
- "main.information_schema;0;Requires USE=latin1"
- "main.sp2;24177;Requires USE=latin1"
- "main.system_mysql_db;0;Requires USE=latin1"
- "main.upgrade_MDEV-19650;24178;Requires USE=latin1"
- )
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- # run mysql-test tests
- pushd "${TESTDIR}" &>/dev/null || die
- perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def"
- retstatus_tests=$?
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- local failures=""
- [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests"
-
- [[ -z "${failures}" ]] || die "Test failures: ${failures}"
- einfo "Tests successfully completed"
-}
-
-src_install() {
- cmake_src_install
-
- # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
- if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then
- rm "${ED}/usr/include/mysql/server/private/config.h" || die
- fi
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Unless they explicitly specific USE=test, then do not install the
- # testsuite. It DOES have a use to be installed, esp. when you want to do a
- # validation of your database configuration after tuning it.
- if ! use test ; then
- rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mariadb.d"
- cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- if use server ; then
- mycnf_src="my.cnf.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- eprefixify "${TMPDIR}/my.cnf.ok"
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- einfo "Including support files and sample configurations"
- docinto "support-files"
- local script
- for script in \
- "${S}"/support-files/magic
- do
- [[ -f "$script" ]] && dodoc "${script}"
- done
-
- docinto "scripts"
- for script in "${S}"/scripts/mysql* ; do
- [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
- done
- # Manually install supporting files that conflict with other packages
- # but are needed for galera and initial installation
- exeinto /usr/libexec/mariadb
- doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror"
-
- if use pam ; then
- keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir
- fi
- fi
-
- # Conflicting files
- conflicting_files=()
-
- # We prefer my_print_defaults from dev-db/mysql-connector-c
- conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" )
-
- # Remove bundled mytop in favor of dev-db/mytop
- conflicting_files+=( "${ED}/usr/bin/mytop" )
- conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" )
-
- local conflicting_file
- for conflicting_file in "${conflicting_files[@]}" ; do
- if [[ -e "${conflicting_file}" ]] ; then
- rm -v "${conflicting_file}" || die
- fi
- done
-
- # Fix a dangling symlink when galera is not built
- if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then
- rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die
- fi
-
- # Remove dangling symlink
- rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die
-
- # Remove broken SST scripts that are incompatible
- local scriptremove
- for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do
- if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then
- rm "${ED}/usr/bin/${scriptremove}" || die
- fi
- done
-}
-
-pkg_preinst() {
- java-pkg-opt-2_pkg_preinst
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}"
-
- if use server ; then
- if use pam; then
- einfo
- elog "This install includes the PAM authentication plugin."
- elog "To activate and configure the PAM plugin, please read:"
- elog "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
- einfo
- chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die
- fi
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog "\"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- elog
- elog "If you are switching server implentations, you should run the"
- elog "mysql_upgrade tool."
- einfo
- else
- einfo
- elog "If you are upgrading major versions, you should run the"
- elog "mysql_upgrade tool."
- einfo
- fi
-
- if use galera ; then
- einfo
- elog "Be sure to edit the my.cnf file to activate your cluster settings."
- elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
- elog "The first time the cluster is activated, you should add"
- elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
- elog "This option should then be removed for subsequent starts."
- einfo
- fi
- fi
-
- # Note about configuration change
- einfo
- elog "This version of mariadb reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/${PN}.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-}
-
-pkg_config() {
- _getoptval() {
- local section="${1}"
- local option="--${2}"
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
-
- local values=()
- local parameters=( $(eval "${cmd[@]}" 2>/dev/null) )
- for parameter in "${parameters[@]}"
- do
- # my_print_defaults guarantees output of options, one per line,
- # in the form that they would be specified on the command line.
- # So checking for --option=* should be safe.
- case ${parameter} in
- ${option}=*)
- values+=( "${parameter#*=}" )
- ;;
- esac
- done
-
- if [[ ${#values[@]} -gt 0 ]] ; then
- # Option could have been set multiple times
- # in which case only the last occurrence
- # contains the current value
- echo "${values[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db"
- if [[ ! -x "${mysql_install_db_binary}" ]] ; then
- die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- # Only create directory when MYSQL_LOG_BIN is an absolute path
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Only test when MYSQL_LOG_BIN is an absolute path
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- # Only create directory when MYSQL_RELAY_LOG is an absolute path
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Only test when MYSQL_RELAY_LOG is an absolute path
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null)
- [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir"
-
- # Limit access
- chmod 0770 "${SETUP_TMPDIR}" || die
- chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die
-
- local mysql_install_log="${SETUP_TMPDIR}/install_db.log"
- local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log"
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Absolute path for binary log files specified
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Absolute path for relay log files specified
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x${pwd1}" != "x${pwd2}" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="${SETUP_TMPDIR}/tz.sql"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- local cmd=(
- "${mysql_install_db_binary}"
- "${mysqld_options[@]}"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--rpm"
- "--cross-bootstrap"
- "--skip-test-db"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- local x=${RANDOM}
- local socket="${PID_DIR}/mysqld.${x}.sock"
- [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!"
- local pidfile="${PID_DIR}/mysqld.${x}.pid"
- [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- rm -r "${SETUP_TMPDIR}" || die
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mariadb/mariadb-10.6.24-r1.ebuild b/dev-db/mariadb/mariadb-10.6.24-r1.ebuild
deleted file mode 100644
index dc9ec166e53c..000000000000
--- a/dev-db/mariadb/mariadb-10.6.24-r1.ebuild
+++ /dev/null
@@ -1,1354 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-SUBSLOT="18"
-JAVA_PKG_OPT_USE="jdbc"
-
-inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake pam
-
-DESCRIPTION="An enhanced, drop-in replacement for MySQL"
-HOMEPAGE="https://mariadb.org/"
-SRC_URI="
- mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-10.6.23-patches-01.tar.xz
-"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2 LGPL-2.1+"
-SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 x86"
-IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4
- innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
- numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
- sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
- test xml yassl"
-
-RESTRICT="!bindist? ( bindist ) !test? ( test )"
-
-REQUIRED_USE="jdbc? ( extraengine server !static )
- ?? ( tcmalloc jemalloc )
- static? ( yassl !pam )
- test? ( extraengine )"
-
-# Be warned, *DEPEND are version-dependant
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- >=dev-libs/libpcre2-10.34:=
- >=sys-apps/texinfo-4.7-r1
- sys-libs/ncurses:0=
- >=virtual/zlib-1.2.3:=
- virtual/libcrypt:=
- !bindist? (
- sys-libs/binutils-libs:0=
- >=sys-libs/readline-4.1:0=
- )
- jemalloc? ( dev-libs/jemalloc:0= )
- kerberos? ( virtual/krb5 )
- kernel_linux? (
- dev-libs/libaio:0=
- sys-libs/liburing:=
- sys-process/procps:0=
- )
- server? (
- app-arch/bzip2
- app-arch/xz-utils
- backup? ( app-arch/libarchive:0= )
- columnstore? (
- app-arch/snappy:=
- dev-libs/boost:=
- dev-libs/libxml2:2=
- )
- cracklib? ( sys-libs/cracklib:0= )
- extraengine? (
- odbc? ( dev-db/unixODBC:0= )
- xml? ( dev-libs/libxml2:2= )
- )
- innodb-lz4? ( app-arch/lz4 )
- innodb-lzo? ( dev-libs/lzo )
- innodb-snappy? ( app-arch/snappy:= )
- mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 )
- numa? ( sys-process/numactl )
- oqgraph? (
- dev-libs/boost:=
- dev-libs/judy:0=
- )
- pam? ( sys-libs/pam:0= )
- s3? ( net-misc/curl )
- systemd? ( sys-apps/systemd:= )
- )
- systemtap? ( >=dev-debug/systemtap-1.3:0= )
- tcmalloc? ( dev-util/google-perftools:0= )
- yassl? ( net-libs/gnutls:0= )
- !yassl? (
- >=dev-libs/openssl-1.0.0:0=
- )
-"
-BDEPEND="
- app-alternatives/yacc
- test? (
- acct-group/mysql
- acct-user/mysql
- )
-"
-DEPEND="${COMMON_DEPEND}
- server? (
- extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) )
- )
- static? ( sys-libs/ncurses[static-libs] )
-"
-RDEPEND="${COMMON_DEPEND}
- !dev-db/mysql !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster
- !dev-db/mariadb:0
- !dev-db/mariadb:5.5
- !dev-db/mariadb:10.1
- !dev-db/mariadb:10.2
- !dev-db/mariadb:10.3
- !dev-db/mariadb:10.4
- !dev-db/mariadb:10.5
- !dev-db/mariadb:10.7
- !dev-db/mariadb:10.8
- !dev-db/mariadb:10.9
- !dev-db/mariadb:10.10
- !dev-db/mariadb:10.11
- !dev-db/mariadb:11.0
- !dev-db/mariadb:11.1
- !dev-db/mariadb:11.2
- !dev-db/mariadb:11.3
- !dev-db/mariadb:11.4
- !<virtual/mysql-5.6-r11
- !<virtual/libmysqlclient-18-r1
- selinux? ( sec-policy/selinux-mysql )
- server? (
- columnstore? (
- dev-db/mariadb-connector-c
- !dev-libs/thrift
- )
- extraengine? ( jdbc? ( >=virtual/jre-1.8 ) )
- galera? (
- sys-apps/iproute2
- =sys-cluster/galera-26*
- sst-rsync? ( sys-process/lsof )
- sst-mariabackup? ( net-misc/socat[ssl] )
- )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-MariaDB is needed by some scripts installed by MySQL
-PDEPEND="perl? ( dev-perl/DBD-MariaDB )"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
- # These don't exist on Linux
- pthread_threadid_np
- getthrid
-)
-
-mysql_init_vars() {
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"}
- MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=""
- if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
- MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
- | sed -e 's/.*=\s*//' \
- | tail -n1)
- fi
- fi
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR="${MY_LOCALSTATEDIR}"
- einfo "Using default MY_DATADIR"
- fi
- elog "MySQL MY_DATADIR is ${MY_DATADIR}"
-
- if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
- if [[ -e "${MY_DATADIR}" ]] ; then
- # If you get this and you're wondering about it, see bug #207636
- elog "MySQL datadir found in ${MY_DATADIR}"
- elog "A new one will not be created."
- PREVIOUS_DATADIR="yes"
- else
- PREVIOUS_DATADIR="no"
- fi
- export PREVIOUS_DATADIR
- fi
- else
- if [[ ${EBUILD_PHASE} == "config" ]]; then
- local new_MY_DATADIR
- new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
-
- if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
- ewarn "MySQL MY_DATADIR has changed"
- ewarn "from ${MY_DATADIR}"
- ewarn "to ${new_MY_DATADIR}"
- MY_DATADIR="${new_MY_DATADIR}"
- fi
- fi
- fi
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if has test ${FEATURES} ; then
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
- fi
- fi
-
- java-pkg-opt-2_pkg_setup
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die
-}
-
-src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
- eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
- eapply "${FILESDIR}"/${PN}-10.6.21-debug.patch
- eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
- eapply "${FILESDIR}"/${PN}-10.6.24-fix_boost_system.patch
-
- eapply_user
-
- _disable_plugin() {
- echo > "${S}/plugin/${1}/CMakeLists.txt" || die
- }
- _disable_engine() {
- echo > "${S}/storage/${1}/CMakeLists.txt" || die
- }
-
- if use jemalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt"
- elif use tcmalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt"
- fi
-
- local plugin
- local server_plugins=( handler_socket auth_socket feedback metadata_lock_info
- locale_info qc_info server_audit sql_errlog auth_ed25519 )
- local test_plugins=( audit_null auth_examples daemon_example fulltext
- debug_key_management example_key_management versioning )
- if ! use server; then # These plugins are for the server
- for plugin in "${server_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- fi
-
- if ! use test; then # These plugins are only used during testing
- for plugin in "${test_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- _disable_engine test_sql_discovery
- echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die
- fi
-
- _disable_engine example
-
- if ! use oqgraph ; then # avoids extra library checks
- _disable_engine oqgraph
- fi
-
- if use mroonga ; then
- # Remove the bundled groonga
- # There is no CMake flag, it simply checks for existance
- rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
- else
- _disable_engine mroonga
- fi
-
- # Fix static bindings in galera replication
- sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \
- "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die
- sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \
- "${S}"/wsrep-lib/src/CMakeLists.txt || die
-
- # Fix galera_recovery.sh script
- sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \
- scripts/galera_recovery.sh || die
-
- sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \
- "${S}"/scripts/mysql_install_db.sh || die
-
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-src_configure() {
- # bug #855233 (MDEV-11914, MDEV-25633) at least
- filter-lto
- # bug 508724 mariadb cannot use ld.gold
- tc-ld-is-gold && tc-ld-force-bfd
- # Bug #114895, bug #110149
- filter-flags "-O" "-O[01]"
-
- use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
-
- # It fails on alpha without this
- use alpha && append-ldflags "-Wl,--no-relax"
-
- # bug #945352
- append-cflags -std=gnu17
-
- append-cxxflags -felide-constructors
-
- # bug #283926, with GCC4.4, this is required to get correct behavior.
- append-flags -fno-strict-aliasing
-
- # Workaround for bug #959423 (https://jira.mariadb.org/browse/MDEV-37148)
- append-flags -fno-tree-vectorize
-
- # debug hack wrt #497532
- local mycmakeargs=(
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_PAMDIR="$(getpam_mod_dir)"
- -DINSTALL_PAMDATADIR="${EPREFIX}/etc/security"
- -DINSTALL_MANDIR=share/man
- -DINSTALL_MYSQLSHAREDIR=share/mariadb
- -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
- -DINSTALL_SCRIPTDIR=bin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb"
- -DWITH_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
- -DWITH_LIBEDIT=0
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DWITH_DEFAULT_FEATURE_SET=0
- -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
- # The build forces this to be defined when cross-compiling. We pass it
- # all the time for simplicity and to make sure it is actually correct.
- -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
- -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)"
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF)
- -DCONC_WITH_EXTERNAL_ZLIB=YES
- -DWITH_EXTERNAL_ZLIB=YES
- -DSUFFIX_INSTALL_DIR=""
- -DWITH_UNITTEST=OFF
- -DWITHOUT_CLIENTLIBS=YES
- -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
- -DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
- -DCLIENT_PLUGIN_ZSTD=OFF
- )
- if use test ; then
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test )
- else
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
- fi
-
- if ! use yassl ; then
- mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
- if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
- mycmakeargs+=(
- -DDTRACE="${BROOT}"/usr/bin/stap-dtrace
- )
- fi
-
- # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
- mycmakeargs+=(
- -DWITH_READLINE=$(usex bindist 1 0)
- -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1)
- -DENABLE_DTRACE=$(usex systemtap)
- )
-
- if use server ; then
- # Connect and Federated{,X} must be treated special
- # otherwise they will not be built as plugins
- if ! use extraengine ; then
- mycmakeargs+=(
- -DPLUGIN_CONNECT=NO
- -DPLUGIN_FEDERATED=NO
- -DPLUGIN_FEDERATEDX=NO
- )
- fi
-
- mycmakeargs+=(
- -DWITH_PCRE=system
- -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
- -DPLUGIN_SPHINX=$(usex sphinx YES NO)
- -DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=NO
- -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
- -DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
- -DPLUGIN_SPIDER=$(usex extraengine YES NO)
- -DPLUGIN_S3=$(usex s3 YES NO)
- -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO)
- -DCONNECT_WITH_MYSQL=1
- -DCONNECT_WITH_LIBXML2=$(usex xml)
- -DCONNECT_WITH_ODBC=$(usex odbc)
- -DCONNECT_WITH_JDBC=$(usex jdbc)
- # Build failure and autodep wrt bug 639144
- -DCONNECT_WITH_MONGO=OFF
- -DWITH_WSREP=$(usex galera)
- -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF)
- -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF)
- -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF)
- -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO)
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DWITH_MARIABACKUP=$(usex backup ON OFF)
- -DWITH_LIBARCHIVE=$(usex backup ON OFF)
- -DINSTALL_SQLBENCHDIR=""
- -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO)
- # systemd is only linked to for server notification
- -DWITH_SYSTEMD=$(usex systemd yes no)
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use test ; then
- # This is needed for the new client lib which tests a real, open server
- mycmakeargs+=( -DSKIP_TESTS=ON )
- fi
-
- if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
-
- elif ! use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- fi
- mycmakeargs+=(
- -DEXTRA_CHARSETS=all
- -DMYSQL_USER=mysql
- -DDISABLE_SHARED=$(usex static YES NO)
- -DWITH_DEBUG=$(usex debug)
- -DWITH_EMBEDDED_SERVER=OFF
- -DWITH_PROFILING=$(usex profiling)
- )
-
- if use static; then
- mycmakeargs+=( -DWITH_PIC=1 )
- fi
-
- if use jemalloc || use tcmalloc ; then
- mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- -DWITH_PARTITION_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_EMBEDDED_SERVER=OFF
- -DEXTRA_CHARSETS=none
- -DINSTALL_SQLBENCHDIR=
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
-}
-
-# Official test instructions:
-# USE='extraengine perl server' \
-# FEATURES='test userpriv' \
-# ebuild mariadb-X.X.XX.ebuild \
-# digest clean package
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- if ! use server ; then
- einfo "Skipping server tests due to minimal build."
- return 0
- fi
-
- # Ensure that parallel runs don't die
- export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- if [[ -z "${MTR_PARALLEL}" ]] ; then
- local -x MTR_PARALLEL=$(makeopts_jobs)
-
- if [[ ${MTR_PARALLEL} -gt 4 ]] ; then
- # Running multiple tests in parallel usually require higher ulimit
- # and fs.aio-max-nr setting. In addition, tests like main.multi_update
- # are known to hit timeout when system is busy.
- # To avoid test failure we will limit MTR_PARALLEL to 4 instead of
- # using "auto".
- local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})"
- info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!"
- einfo "${info_msg}"
- unset info_msg
- MTR_PARALLEL=4
- fi
- else
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
- fi
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from '[Warning] Buffered warning: Could not
- # increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- # create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then
- touch "${S}"/mysql-test/unstable-tests || die
- fi
-
- cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die
-
- local disabled_tests=(
- "innodb_gis.1;MDEV-25095;Known rounding error with latest AMD processors"
- "innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
- "main.gis;MDEV-25095;Known rounding error with latest AMD processors"
-
- # Test which fail in network-sandbox because hostname is set to "localhost"
- "main.explain_non_select;0;Fails in network-sandbox"
- "main.mysql_upgrade;MDEV-27044;Fails in network-sandbox"
- "main.selectivity_no_engine;MDEV-26320;Fails in network-sandbox"
- "main.stat_tables;0;Fails in network-sandbox"
- "main.stat_tables_innodb;0;Fails in network-sandbox"
- "main.upgrade_MDEV-19650;MDEV-25096;Fails in network-sandbox"
- "perfschema.privilege_table_io;MDEV-27045;Fails in network-sandbox"
- "roles.acl_statistics;0;Fails in network-sandbox"
-
- # Some tests are unable to retrieve HW address
- "spider.*;MDEV-37098;Fails with network sandbox"
-
- # This issue will be fixed in next release
- # see also https://github.com/MariaDB/server/pull/4429
- "main.func_regexp_pcre;MDEV-38046;Fails with PCRE2 10.47"
- )
-
- use latin1 || disabled_tests+=(
- "funcs_1.is_columns_mysql;0;Requires USE=latin1"
- "main.information_schema;0;Requires USE=latin1"
- "main.sp2;24177;Requires USE=latin1"
- "main.system_mysql_db;0;Requires USE=latin1"
- "main.upgrade_MDEV-19650;24178;Requires USE=latin1"
- )
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- # run mysql-test tests
- pushd "${TESTDIR}" &>/dev/null || die
- perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def"
- retstatus_tests=$?
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- local failures=""
- [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests"
-
- [[ -z "${failures}" ]] || die "Test failures: ${failures}"
- einfo "Tests successfully completed"
-}
-
-src_install() {
- cmake_src_install
-
- # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
- if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then
- rm "${ED}/usr/include/mysql/server/private/config.h" || die
- fi
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Unless they explicitly specific USE=test, then do not install the
- # testsuite. It DOES have a use to be installed, esp. when you want to do a
- # validation of your database configuration after tuning it.
- if ! use test ; then
- rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mariadb.d"
- cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- if use server ; then
- mycnf_src="my.cnf.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- eprefixify "${TMPDIR}/my.cnf.ok"
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- einfo "Including support files and sample configurations"
- docinto "support-files"
- local script
- for script in \
- "${S}"/support-files/magic
- do
- [[ -f "$script" ]] && dodoc "${script}"
- done
-
- docinto "scripts"
- for script in "${S}"/scripts/mysql* ; do
- [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
- done
- # Manually install supporting files that conflict with other packages
- # but are needed for galera and initial installation
- exeinto /usr/libexec/mariadb
- doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror"
-
- if use pam ; then
- keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir
- fi
- fi
-
- # Conflicting files
- conflicting_files=()
-
- # We prefer my_print_defaults from dev-db/mysql-connector-c
- conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" )
-
- # Remove bundled mytop in favor of dev-db/mytop
- conflicting_files+=( "${ED}/usr/bin/mytop" )
- conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" )
-
- local conflicting_file
- for conflicting_file in "${conflicting_files[@]}" ; do
- if [[ -e "${conflicting_file}" ]] ; then
- rm -v "${conflicting_file}" || die
- fi
- done
-
- # Fix a dangling symlink when galera is not built
- if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then
- rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die
- fi
-
- # Remove dangling symlink
- rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die
-
- # Remove broken SST scripts that are incompatible
- local scriptremove
- for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do
- if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then
- rm "${ED}/usr/bin/${scriptremove}" || die
- fi
- done
-}
-
-pkg_preinst() {
- java-pkg-opt-2_pkg_preinst
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}"
-
- if use server ; then
- if use pam; then
- einfo
- elog "This install includes the PAM authentication plugin."
- elog "To activate and configure the PAM plugin, please read:"
- elog "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
- einfo
- chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die
- fi
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog "\"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- elog
- elog "If you are switching server implentations, you should run the"
- elog "mysql_upgrade tool."
- einfo
- else
- einfo
- elog "If you are upgrading major versions, you should run the"
- elog "mysql_upgrade tool."
- einfo
- fi
-
- if use galera ; then
- einfo
- elog "Be sure to edit the my.cnf file to activate your cluster settings."
- elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
- elog "The first time the cluster is activated, you should add"
- elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
- elog "This option should then be removed for subsequent starts."
- einfo
- fi
- fi
-
- # Note about configuration change
- einfo
- elog "This version of mariadb reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/${PN}.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-}
-
-pkg_config() {
- _getoptval() {
- local section="${1}"
- local option="--${2}"
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
-
- local values=()
- local parameters=( $(eval "${cmd[@]}" 2>/dev/null) )
- for parameter in "${parameters[@]}"
- do
- # my_print_defaults guarantees output of options, one per line,
- # in the form that they would be specified on the command line.
- # So checking for --option=* should be safe.
- case ${parameter} in
- ${option}=*)
- values+=( "${parameter#*=}" )
- ;;
- esac
- done
-
- if [[ ${#values[@]} -gt 0 ]] ; then
- # Option could have been set multiple times
- # in which case only the last occurrence
- # contains the current value
- echo "${values[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db"
- if [[ ! -x "${mysql_install_db_binary}" ]] ; then
- die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- # Only create directory when MYSQL_LOG_BIN is an absolute path
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Only test when MYSQL_LOG_BIN is an absolute path
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- # Only create directory when MYSQL_RELAY_LOG is an absolute path
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Only test when MYSQL_RELAY_LOG is an absolute path
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null)
- [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir"
-
- # Limit access
- chmod 0770 "${SETUP_TMPDIR}" || die
- chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die
-
- local mysql_install_log="${SETUP_TMPDIR}/install_db.log"
- local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log"
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Absolute path for binary log files specified
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Absolute path for relay log files specified
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x${pwd1}" != "x${pwd2}" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="${SETUP_TMPDIR}/tz.sql"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- local cmd=(
- "${mysql_install_db_binary}"
- "${mysqld_options[@]}"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--rpm"
- "--cross-bootstrap"
- "--skip-test-db"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- local x=${RANDOM}
- local socket="${PID_DIR}/mysqld.${x}.sock"
- [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!"
- local pidfile="${PID_DIR}/mysqld.${x}.pid"
- [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- rm -r "${SETUP_TMPDIR}" || die
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mariadb/mariadb-10.6.27.ebuild b/dev-db/mariadb/mariadb-10.6.27.ebuild
deleted file mode 100644
index 0b744a4872e7..000000000000
--- a/dev-db/mariadb/mariadb-10.6.27.ebuild
+++ /dev/null
@@ -1,1353 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-SUBSLOT="18"
-JAVA_PKG_OPT_USE="jdbc"
-
-inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake pam
-
-DESCRIPTION="An enhanced, drop-in replacement for MySQL"
-HOMEPAGE="https://mariadb.org/"
-SRC_URI="
- mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-10.6.23-patches-01.tar.xz
-"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2 LGPL-2.1+"
-SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 x86"
-IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4
- innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
- numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
- sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
- test xml yassl"
-
-RESTRICT="!bindist? ( bindist ) !test? ( test )"
-
-REQUIRED_USE="jdbc? ( extraengine server !static )
- ?? ( tcmalloc jemalloc )
- static? ( yassl !pam )
- test? ( extraengine )"
-
-# Be warned, *DEPEND are version-dependant
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- >=dev-libs/libpcre2-10.34:=
- >=sys-apps/texinfo-4.7-r1
- sys-libs/ncurses:0=
- >=virtual/zlib-1.2.3:=
- virtual/libcrypt:=
- !bindist? (
- sys-libs/binutils-libs:0=
- >=sys-libs/readline-4.1:0=
- )
- jemalloc? ( dev-libs/jemalloc:0= )
- kerberos? ( virtual/krb5 )
- kernel_linux? (
- dev-libs/libaio:0=
- sys-libs/liburing:=
- sys-process/procps:0=
- )
- server? (
- app-arch/bzip2
- app-arch/xz-utils
- backup? ( app-arch/libarchive:0= )
- columnstore? (
- app-arch/snappy:=
- dev-libs/boost:=
- dev-libs/libxml2:2=
- )
- cracklib? ( sys-libs/cracklib:0= )
- extraengine? (
- odbc? ( dev-db/unixODBC:0= )
- xml? ( dev-libs/libxml2:2= )
- )
- innodb-lz4? ( app-arch/lz4 )
- innodb-lzo? ( dev-libs/lzo )
- innodb-snappy? ( app-arch/snappy:= )
- mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 )
- numa? ( sys-process/numactl )
- oqgraph? (
- dev-libs/boost:=
- dev-libs/judy:0=
- )
- pam? ( sys-libs/pam:0= )
- s3? ( net-misc/curl )
- systemd? ( sys-apps/systemd:= )
- )
- systemtap? ( >=dev-debug/systemtap-1.3:0= )
- tcmalloc? ( dev-util/google-perftools:0= )
- yassl? ( net-libs/gnutls:0= )
- !yassl? (
- >=dev-libs/openssl-1.0.0:0=
- )
-"
-BDEPEND="
- app-alternatives/yacc
- test? (
- acct-group/mysql
- acct-user/mysql
- )
-"
-DEPEND="${COMMON_DEPEND}
- server? (
- extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) )
- )
- static? ( sys-libs/ncurses[static-libs] )
-"
-RDEPEND="${COMMON_DEPEND}
- !dev-db/mysql !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster
- !dev-db/mariadb:0
- !dev-db/mariadb:5.5
- !dev-db/mariadb:10.1
- !dev-db/mariadb:10.2
- !dev-db/mariadb:10.3
- !dev-db/mariadb:10.4
- !dev-db/mariadb:10.5
- !dev-db/mariadb:10.7
- !dev-db/mariadb:10.8
- !dev-db/mariadb:10.9
- !dev-db/mariadb:10.10
- !dev-db/mariadb:10.11
- !dev-db/mariadb:11.0
- !dev-db/mariadb:11.1
- !dev-db/mariadb:11.2
- !dev-db/mariadb:11.3
- !dev-db/mariadb:11.4
- !<virtual/mysql-5.6-r11
- !<virtual/libmysqlclient-18-r1
- selinux? ( sec-policy/selinux-mysql )
- server? (
- columnstore? (
- dev-db/mariadb-connector-c
- !dev-libs/thrift
- )
- extraengine? ( jdbc? ( >=virtual/jre-1.8 ) )
- galera? (
- sys-apps/iproute2
- =sys-cluster/galera-26*
- sst-rsync? ( sys-process/lsof )
- sst-mariabackup? ( net-misc/socat[ssl] )
- )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-MariaDB is needed by some scripts installed by MySQL
-PDEPEND="perl? ( dev-perl/DBD-MariaDB )"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
- # These don't exist on Linux
- pthread_threadid_np
- getthrid
-)
-
-mysql_init_vars() {
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"}
- MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=""
- if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
- MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
- | sed -e 's/.*=\s*//' \
- | tail -n1)
- fi
- fi
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR="${MY_LOCALSTATEDIR}"
- einfo "Using default MY_DATADIR"
- fi
- elog "MySQL MY_DATADIR is ${MY_DATADIR}"
-
- if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
- if [[ -e "${MY_DATADIR}" ]] ; then
- # If you get this and you're wondering about it, see bug #207636
- elog "MySQL datadir found in ${MY_DATADIR}"
- elog "A new one will not be created."
- PREVIOUS_DATADIR="yes"
- else
- PREVIOUS_DATADIR="no"
- fi
- export PREVIOUS_DATADIR
- fi
- else
- if [[ ${EBUILD_PHASE} == "config" ]]; then
- local new_MY_DATADIR
- new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
-
- if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
- ewarn "MySQL MY_DATADIR has changed"
- ewarn "from ${MY_DATADIR}"
- ewarn "to ${new_MY_DATADIR}"
- MY_DATADIR="${new_MY_DATADIR}"
- fi
- fi
- fi
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if has test ${FEATURES} ; then
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
- fi
- fi
-
- java-pkg-opt-2_pkg_setup
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die
-}
-
-src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
- eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
- eapply "${FILESDIR}"/${PN}-10.6.21-debug.patch
- eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
-
- eapply_user
-
- _disable_plugin() {
- echo > "${S}/plugin/${1}/CMakeLists.txt" || die
- }
- _disable_engine() {
- echo > "${S}/storage/${1}/CMakeLists.txt" || die
- }
-
- if use jemalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt"
- elif use tcmalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt"
- fi
-
- local plugin
- local server_plugins=( handler_socket auth_socket feedback metadata_lock_info
- locale_info qc_info server_audit sql_errlog auth_ed25519 )
- local test_plugins=( audit_null auth_examples daemon_example fulltext
- debug_key_management example_key_management versioning )
- if ! use server; then # These plugins are for the server
- for plugin in "${server_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- fi
-
- if ! use test; then # These plugins are only used during testing
- for plugin in "${test_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- _disable_engine test_sql_discovery
- echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die
- fi
-
- _disable_engine example
-
- if ! use oqgraph ; then # avoids extra library checks
- _disable_engine oqgraph
- fi
-
- if use mroonga ; then
- # Remove the bundled groonga
- # There is no CMake flag, it simply checks for existance
- rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
- else
- _disable_engine mroonga
- fi
-
- # Fix static bindings in galera replication
- sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \
- "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die
- sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \
- "${S}"/wsrep-lib/src/CMakeLists.txt || die
-
- # Fix galera_recovery.sh script
- sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \
- scripts/galera_recovery.sh || die
-
- sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \
- "${S}"/scripts/mysql_install_db.sh || die
-
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-src_configure() {
- # bug #855233 (MDEV-11914, MDEV-25633) at least
- filter-lto
- # bug 508724 mariadb cannot use ld.gold
- tc-ld-is-gold && tc-ld-force-bfd
- # Bug #114895, bug #110149
- filter-flags "-O" "-O[01]"
-
- use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
-
- # It fails on alpha without this
- use alpha && append-ldflags "-Wl,--no-relax"
-
- # bug #945352
- append-cflags -std=gnu17
-
- append-cxxflags -felide-constructors
-
- # bug #283926, with GCC4.4, this is required to get correct behavior.
- append-flags -fno-strict-aliasing
-
- # Workaround for bug #959423 (https://jira.mariadb.org/browse/MDEV-37148)
- append-flags -fno-tree-vectorize
-
- # debug hack wrt #497532
- local mycmakeargs=(
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_PAMDIR="$(getpam_mod_dir)"
- -DINSTALL_PAMDATADIR="${EPREFIX}/etc/security"
- -DINSTALL_MANDIR=share/man
- -DINSTALL_MYSQLSHAREDIR=share/mariadb
- -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
- -DINSTALL_SCRIPTDIR=bin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb"
- -DWITH_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
- -DWITH_LIBEDIT=0
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DWITH_DEFAULT_FEATURE_SET=0
- -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
- # The build forces this to be defined when cross-compiling. We pass it
- # all the time for simplicity and to make sure it is actually correct.
- -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
- -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)"
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF)
- -DCONC_WITH_EXTERNAL_ZLIB=YES
- -DWITH_EXTERNAL_ZLIB=YES
- -DSUFFIX_INSTALL_DIR=""
- -DWITH_UNITTEST=OFF
- -DWITHOUT_CLIENTLIBS=YES
- -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
- -DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
- -DCLIENT_PLUGIN_ZSTD=OFF
- )
- if use test ; then
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test )
- else
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
- fi
-
- if ! use yassl ; then
- mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
- if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
- mycmakeargs+=(
- -DDTRACE="${BROOT}"/usr/bin/stap-dtrace
- )
- fi
-
- # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
- mycmakeargs+=(
- -DWITH_READLINE=$(usex bindist 1 0)
- -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1)
- -DENABLE_DTRACE=$(usex systemtap)
- )
-
- if use server ; then
- # Connect and Federated{,X} must be treated special
- # otherwise they will not be built as plugins
- if ! use extraengine ; then
- mycmakeargs+=(
- -DPLUGIN_CONNECT=NO
- -DPLUGIN_FEDERATED=NO
- -DPLUGIN_FEDERATEDX=NO
- )
- fi
-
- mycmakeargs+=(
- -DWITH_PCRE=system
- -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
- -DPLUGIN_SPHINX=$(usex sphinx YES NO)
- -DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=NO
- -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
- -DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
- -DPLUGIN_SPIDER=$(usex extraengine YES NO)
- -DPLUGIN_S3=$(usex s3 YES NO)
- -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO)
- -DCONNECT_WITH_MYSQL=1
- -DCONNECT_WITH_LIBXML2=$(usex xml)
- -DCONNECT_WITH_ODBC=$(usex odbc)
- -DCONNECT_WITH_JDBC=$(usex jdbc)
- # Build failure and autodep wrt bug 639144
- -DCONNECT_WITH_MONGO=OFF
- -DWITH_WSREP=$(usex galera)
- -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF)
- -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF)
- -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF)
- -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO)
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DWITH_MARIABACKUP=$(usex backup ON OFF)
- -DWITH_LIBARCHIVE=$(usex backup ON OFF)
- -DINSTALL_SQLBENCHDIR=""
- -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO)
- # systemd is only linked to for server notification
- -DWITH_SYSTEMD=$(usex systemd yes no)
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use test ; then
- # This is needed for the new client lib which tests a real, open server
- mycmakeargs+=( -DSKIP_TESTS=ON )
- fi
-
- if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
-
- elif ! use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- fi
- mycmakeargs+=(
- -DEXTRA_CHARSETS=all
- -DMYSQL_USER=mysql
- -DDISABLE_SHARED=$(usex static YES NO)
- -DWITH_DEBUG=$(usex debug)
- -DWITH_EMBEDDED_SERVER=OFF
- -DWITH_PROFILING=$(usex profiling)
- )
-
- if use static; then
- mycmakeargs+=( -DWITH_PIC=1 )
- fi
-
- if use jemalloc || use tcmalloc ; then
- mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- -DWITH_PARTITION_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_EMBEDDED_SERVER=OFF
- -DEXTRA_CHARSETS=none
- -DINSTALL_SQLBENCHDIR=
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
-}
-
-# Official test instructions:
-# USE='extraengine perl server' \
-# FEATURES='test userpriv' \
-# ebuild mariadb-X.X.XX.ebuild \
-# digest clean package
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- if ! use server ; then
- einfo "Skipping server tests due to minimal build."
- return 0
- fi
-
- # Ensure that parallel runs don't die
- export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- if [[ -z "${MTR_PARALLEL}" ]] ; then
- local -x MTR_PARALLEL=$(makeopts_jobs)
-
- if [[ ${MTR_PARALLEL} -gt 4 ]] ; then
- # Running multiple tests in parallel usually require higher ulimit
- # and fs.aio-max-nr setting. In addition, tests like main.multi_update
- # are known to hit timeout when system is busy.
- # To avoid test failure we will limit MTR_PARALLEL to 4 instead of
- # using "auto".
- local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})"
- info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!"
- einfo "${info_msg}"
- unset info_msg
- MTR_PARALLEL=4
- fi
- else
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
- fi
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from '[Warning] Buffered warning: Could not
- # increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- # create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then
- touch "${S}"/mysql-test/unstable-tests || die
- fi
-
- cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die
-
- local disabled_tests=(
- "innodb_gis.1;MDEV-25095;Known rounding error with latest AMD processors"
- "innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
- "main.gis;MDEV-25095;Known rounding error with latest AMD processors"
-
- # Test which fail in network-sandbox because hostname is set to "localhost"
- "main.explain_non_select;0;Fails in network-sandbox"
- "main.mysql_upgrade;MDEV-27044;Fails in network-sandbox"
- "main.selectivity_no_engine;MDEV-26320;Fails in network-sandbox"
- "main.stat_tables;0;Fails in network-sandbox"
- "main.stat_tables_innodb;0;Fails in network-sandbox"
- "main.upgrade_MDEV-19650;MDEV-25096;Fails in network-sandbox"
- "perfschema.privilege_table_io;MDEV-27045;Fails in network-sandbox"
- "roles.acl_statistics;0;Fails in network-sandbox"
-
- # Some tests are unable to retrieve HW address
- "spider.*;MDEV-37098;Fails with network sandbox"
-
- # This issue will be fixed in next release
- # see also https://github.com/MariaDB/server/pull/4429
- "main.func_regexp_pcre;MDEV-38046;Fails with PCRE2 10.47"
- )
-
- use latin1 || disabled_tests+=(
- "funcs_1.is_columns_mysql;0;Requires USE=latin1"
- "main.information_schema;0;Requires USE=latin1"
- "main.sp2;24177;Requires USE=latin1"
- "main.system_mysql_db;0;Requires USE=latin1"
- "main.upgrade_MDEV-19650;24178;Requires USE=latin1"
- )
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- # run mysql-test tests
- pushd "${TESTDIR}" &>/dev/null || die
- perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def"
- retstatus_tests=$?
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- local failures=""
- [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests"
-
- [[ -z "${failures}" ]] || die "Test failures: ${failures}"
- einfo "Tests successfully completed"
-}
-
-src_install() {
- cmake_src_install
-
- # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
- if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then
- rm "${ED}/usr/include/mysql/server/private/config.h" || die
- fi
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Unless they explicitly specific USE=test, then do not install the
- # testsuite. It DOES have a use to be installed, esp. when you want to do a
- # validation of your database configuration after tuning it.
- if ! use test ; then
- rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mariadb.d"
- cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- if use server ; then
- mycnf_src="my.cnf.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- eprefixify "${TMPDIR}/my.cnf.ok"
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- einfo "Including support files and sample configurations"
- docinto "support-files"
- local script
- for script in \
- "${S}"/support-files/magic
- do
- [[ -f "$script" ]] && dodoc "${script}"
- done
-
- docinto "scripts"
- for script in "${S}"/scripts/mysql* ; do
- [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
- done
- # Manually install supporting files that conflict with other packages
- # but are needed for galera and initial installation
- exeinto /usr/libexec/mariadb
- doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror"
-
- if use pam ; then
- keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir
- fi
- fi
-
- # Conflicting files
- conflicting_files=()
-
- # We prefer my_print_defaults from dev-db/mysql-connector-c
- conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" )
-
- # Remove bundled mytop in favor of dev-db/mytop
- conflicting_files+=( "${ED}/usr/bin/mytop" )
- conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" )
-
- local conflicting_file
- for conflicting_file in "${conflicting_files[@]}" ; do
- if [[ -e "${conflicting_file}" ]] ; then
- rm -v "${conflicting_file}" || die
- fi
- done
-
- # Fix a dangling symlink when galera is not built
- if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then
- rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die
- fi
-
- # Remove dangling symlink
- rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die
-
- # Remove broken SST scripts that are incompatible
- local scriptremove
- for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do
- if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then
- rm "${ED}/usr/bin/${scriptremove}" || die
- fi
- done
-}
-
-pkg_preinst() {
- java-pkg-opt-2_pkg_preinst
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}"
-
- if use server ; then
- if use pam; then
- einfo
- elog "This install includes the PAM authentication plugin."
- elog "To activate and configure the PAM plugin, please read:"
- elog "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
- einfo
- chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die
- fi
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog "\"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- elog
- elog "If you are switching server implentations, you should run the"
- elog "mysql_upgrade tool."
- einfo
- else
- einfo
- elog "If you are upgrading major versions, you should run the"
- elog "mysql_upgrade tool."
- einfo
- fi
-
- if use galera ; then
- einfo
- elog "Be sure to edit the my.cnf file to activate your cluster settings."
- elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
- elog "The first time the cluster is activated, you should add"
- elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
- elog "This option should then be removed for subsequent starts."
- einfo
- fi
- fi
-
- # Note about configuration change
- einfo
- elog "This version of mariadb reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/${PN}.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-}
-
-pkg_config() {
- _getoptval() {
- local section="${1}"
- local option="--${2}"
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
-
- local values=()
- local parameters=( $(eval "${cmd[@]}" 2>/dev/null) )
- for parameter in "${parameters[@]}"
- do
- # my_print_defaults guarantees output of options, one per line,
- # in the form that they would be specified on the command line.
- # So checking for --option=* should be safe.
- case ${parameter} in
- ${option}=*)
- values+=( "${parameter#*=}" )
- ;;
- esac
- done
-
- if [[ ${#values[@]} -gt 0 ]] ; then
- # Option could have been set multiple times
- # in which case only the last occurrence
- # contains the current value
- echo "${values[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db"
- if [[ ! -x "${mysql_install_db_binary}" ]] ; then
- die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- # Only create directory when MYSQL_LOG_BIN is an absolute path
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Only test when MYSQL_LOG_BIN is an absolute path
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- # Only create directory when MYSQL_RELAY_LOG is an absolute path
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Only test when MYSQL_RELAY_LOG is an absolute path
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null)
- [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir"
-
- # Limit access
- chmod 0770 "${SETUP_TMPDIR}" || die
- chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die
-
- local mysql_install_log="${SETUP_TMPDIR}/install_db.log"
- local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log"
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Absolute path for binary log files specified
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Absolute path for relay log files specified
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x${pwd1}" != "x${pwd2}" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="${SETUP_TMPDIR}/tz.sql"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- local cmd=(
- "${mysql_install_db_binary}"
- "${mysqld_options[@]}"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--rpm"
- "--cross-bootstrap"
- "--skip-test-db"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- local x=${RANDOM}
- local socket="${PID_DIR}/mysqld.${x}.sock"
- [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!"
- local pidfile="${PID_DIR}/mysqld.${x}.pid"
- [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- rm -r "${SETUP_TMPDIR}" || die
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mariadb/mariadb-11.4.8-r1.ebuild b/dev-db/mariadb/mariadb-11.4.13.ebuild
index 7babf0e72620..12dffc25c65b 100644
--- a/dev-db/mariadb/mariadb-11.4.8-r1.ebuild
+++ b/dev-db/mariadb/mariadb-11.4.13.ebuild
@@ -5,15 +5,16 @@ EAPI=8
SUBSLOT="18"
JAVA_PKG_OPT_USE="jdbc"
+MARIADB_GENTOO_PATCH_VERSION="11.4.13-0"
inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake
+ multiprocessing java-pkg-opt-2 cmake pam
DESCRIPTION="An enhanced, drop-in replacement for MySQL"
HOMEPAGE="https://mariadb.org/"
SRC_URI="
mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-11.4.8-patches-01.tar.xz
+ https://gitweb.gentoo.org/proj/mariadb-patches.git/snapshot/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}.tar.bz2
"
# Shorten the path because the socket path length must be shorter than 107 chars
# and we will run a mysql server during test phase
@@ -21,8 +22,8 @@ S="${WORKDIR}/mysql"
LICENSE="GPL-2 LGPL-2.1+"
SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 x86"
-IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="aws-km +backup bindist columnstore cracklib debug extraengine galera innodb-lz4
innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
@@ -45,6 +46,7 @@ COMMON_DEPEND="
sys-libs/ncurses:0=
>=virtual/zlib-1.2.3:=
virtual/libcrypt:=
+ aws-km? ( dev-cpp/aws-sdk-cpp:= )
!bindist? (
sys-libs/binutils-libs:0=
>=sys-libs/readline-4.1:0=
@@ -105,21 +107,10 @@ DEPEND="${COMMON_DEPEND}
)
static? ( sys-libs/ncurses[static-libs] )
"
+
RDEPEND="${COMMON_DEPEND}
- !dev-db/mysql !dev-db/percona-server
- !dev-db/mariadb:10.3
- !dev-db/mariadb:10.4
- !dev-db/mariadb:10.5
- !dev-db/mariadb:10.6
- !dev-db/mariadb:10.7
- !dev-db/mariadb:10.8
- !dev-db/mariadb:10.9
- !dev-db/mariadb:10.10
- !dev-db/mariadb:10.11
- !dev-db/mariadb:11.0
- !dev-db/mariadb:11.1
- !dev-db/mariadb:11.2
- !dev-db/mariadb:11.3
+ !<dev-db/mariadb-$(ver_cut 1-2)
+ !dev-db/mysql
selinux? ( sec-policy/selinux-mysql )
server? (
columnstore? ( dev-db/mariadb-connector-c )
@@ -220,7 +211,7 @@ src_unpack() {
}
src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
+ eapply "${WORKDIR}"/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}
eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
@@ -323,6 +314,8 @@ src_configure() {
-DINSTALL_INCLUDEDIR=include/mysql
-DINSTALL_INFODIR=share/info
-DINSTALL_LIBDIR=$(get_libdir)
+ -DINSTALL_PAMDIR="$(getpam_mod_dir)"
+ -DINSTALL_PAMDATADIR="${EPREFIX}/etc/security"
-DINSTALL_MANDIR=share/man
-DINSTALL_MYSQLSHAREDIR=share/mariadb
-DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
@@ -355,7 +348,7 @@ src_configure() {
-DWITH_UNITTEST=OFF
-DWITHOUT_CLIENTLIBS=YES
-DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
+ -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=$(usex test DYNAMIC OFF)
-DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
-DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
-DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
@@ -402,7 +395,7 @@ src_configure() {
-DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
-DPLUGIN_SPHINX=$(usex sphinx YES NO)
-DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=NO
+ -DPLUGIN_AWS_KEY_MANAGEMENT=$(usex aws-km DYNAMIC NO)
-DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
-DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
-DPLUGIN_SPIDER=$(usex extraengine YES NO)
@@ -583,8 +576,11 @@ src_test() {
# Test which fail in network-sandbox because hostname is set to "localhost"
"main.explain_non_select;0;Fails in network-sandbox"
+ "main.mysql_client_test;0;Fails in network-sandbox"
+ "main.mysql_client_test_comp;0;Fails in network-sandbox"
"main.mysql_upgrade;MDEV-27044;Fails in network-sandbox"
"main.selectivity_no_engine;MDEV-26320;Fails in network-sandbox"
+ "main.ssl_autoverify;0;Fails in network-sandbox"
"main.stat_tables;0;Fails in network-sandbox"
"main.stat_tables_innodb;0;Fails in network-sandbox"
"main.upgrade_MDEV-19650;MDEV-25096;Fails in network-sandbox"
@@ -592,8 +588,15 @@ src_test() {
"roles.acl_statistics;0;Fails in network-sandbox"
"sysschema.v_privileges_by_table_by_level;MDEV-36030;Fails with network sandbox"
+ # Fails in network-sandbox which contains only "lo" interface
+ "main.func_json;MDEV-38057;Fails in network-sandbox"
+
# Some tests are unable to retrieve HW address
"spider.*;MDEV-37098;Fails with network sandbox"
+
+ # This issue will be fixed in next release
+ # see also https://github.com/MariaDB/server/pull/4429
+ "main.func_regexp_pcre;MDEV-38046;Fails with PCRE2 10.47"
)
use latin1 || disabled_tests+=(
diff --git a/dev-db/mariadb/mariadb-11.8.3-r2.ebuild b/dev-db/mariadb/mariadb-11.8.3-r2.ebuild
deleted file mode 100644
index 134bca9cfc3e..000000000000
--- a/dev-db/mariadb/mariadb-11.8.3-r2.ebuild
+++ /dev/null
@@ -1,1320 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-SUBSLOT="18"
-JAVA_PKG_OPT_USE="jdbc"
-
-inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake
-
-DESCRIPTION="An enhanced, drop-in replacement for MySQL"
-HOMEPAGE="https://mariadb.org/"
-SRC_URI="
- mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-11.4.8-patches-01.tar.xz
-"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2 LGPL-2.1+"
-SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 x86"
-IUSE="+backup bindist columnstore cracklib debug extraengine galera innodb-lz4
- innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
- numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
- sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
- test xml yassl"
-
-RESTRICT="!bindist? ( bindist ) !test? ( test )"
-
-REQUIRED_USE="jdbc? ( extraengine server !static )
- ?? ( tcmalloc jemalloc )
- static? ( yassl !pam )
- test? ( extraengine )"
-
-# Be warned, *DEPEND are version-dependant
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- dev-libs/libfmt:=
- dev-libs/lzo:2
- >=dev-libs/libpcre2-10.34:=
- >=sys-apps/texinfo-4.7-r1
- sys-libs/ncurses:0=
- >=virtual/zlib-1.2.3:=
- virtual/libcrypt:=
- !bindist? (
- sys-libs/binutils-libs:0=
- >=sys-libs/readline-4.1:0=
- )
- jemalloc? ( dev-libs/jemalloc:0= )
- kerberos? ( virtual/krb5 )
- kernel_linux? (
- dev-libs/libaio:0=
- sys-libs/liburing:=
- sys-process/procps:0=
- )
- server? (
- app-arch/bzip2
- app-arch/xz-utils
- backup? ( app-arch/libarchive:0= )
- columnstore? (
- app-arch/snappy:=
- dev-libs/boost:=
- dev-libs/libxml2:2=
- dev-libs/thrift:=
- )
- cracklib? ( sys-libs/cracklib:0= )
- extraengine? (
- odbc? ( dev-db/unixODBC:0= )
- xml? ( dev-libs/libxml2:2= )
- )
- innodb-lz4? ( app-arch/lz4 )
- innodb-lzo? ( dev-libs/lzo )
- innodb-snappy? ( app-arch/snappy:= )
- mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 )
- numa? ( sys-process/numactl )
- oqgraph? (
- dev-libs/boost:=
- dev-libs/judy:0=
- )
- pam? ( sys-libs/pam:0= )
- s3? ( net-misc/curl )
- systemd? ( sys-apps/systemd:= )
- )
- systemtap? ( >=dev-debug/systemtap-1.3:0= )
- tcmalloc? ( dev-util/google-perftools:0= )
- yassl? ( net-libs/gnutls:0= )
- !yassl? (
- >=dev-libs/openssl-1.0.0:0=
- )
-"
-BDEPEND="
- app-alternatives/yacc
- test? (
- acct-group/mysql
- acct-user/mysql
- dev-perl/Net-SSLeay
- )
-"
-DEPEND="${COMMON_DEPEND}
- server? (
- extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) )
- )
- static? ( sys-libs/ncurses[static-libs] )
-"
-RDEPEND="
- ${COMMON_DEPEND}
- !<dev-db/mariadb-$(ver_cut 1-2)
- !dev-db/mysql
- !dev-db/percona-server
- selinux? ( sec-policy/selinux-mysql )
- server? (
- columnstore? ( dev-db/mariadb-connector-c )
- extraengine? ( jdbc? ( >=virtual/jre-1.8 ) )
- galera? (
- sys-apps/iproute2
- =sys-cluster/galera-26*
- sst-rsync? ( sys-process/lsof )
- sst-mariabackup? ( net-misc/socat[ssl] )
- )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-MariaDB is needed by some scripts installed by MySQL
-PDEPEND="perl? ( dev-perl/DBD-MariaDB )"
-
-mysql_init_vars() {
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"}
- MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=""
- if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
- MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
- | sed -e 's/.*=\s*//' \
- | tail -n1)
- fi
- fi
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR="${MY_LOCALSTATEDIR}"
- einfo "Using default MY_DATADIR"
- fi
- elog "MySQL MY_DATADIR is ${MY_DATADIR}"
-
- if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
- if [[ -e "${MY_DATADIR}" ]] ; then
- # If you get this and you're wondering about it, see bug #207636
- elog "MySQL datadir found in ${MY_DATADIR}"
- elog "A new one will not be created."
- PREVIOUS_DATADIR="yes"
- else
- PREVIOUS_DATADIR="no"
- fi
- export PREVIOUS_DATADIR
- fi
- else
- if [[ ${EBUILD_PHASE} == "config" ]]; then
- local new_MY_DATADIR
- new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
-
- if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
- ewarn "MySQL MY_DATADIR has changed"
- ewarn "from ${MY_DATADIR}"
- ewarn "to ${new_MY_DATADIR}"
- MY_DATADIR="${new_MY_DATADIR}"
- fi
- fi
- fi
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if has test ${FEATURES} ; then
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
- fi
- fi
-
- java-pkg-opt-2_pkg_setup
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die
-}
-
-src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
- eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
- eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
-
- eapply_user
-
- _disable_plugin() {
- echo > "${S}/plugin/${1}/CMakeLists.txt" || die
- }
- _disable_engine() {
- echo > "${S}/storage/${1}/CMakeLists.txt" || die
- }
-
- if use jemalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt"
- elif use tcmalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt"
- fi
-
- local plugin
- local server_plugins=( handler_socket auth_socket feedback metadata_lock_info
- locale_info qc_info server_audit sql_errlog auth_ed25519 )
- local test_plugins=( audit_null auth_examples daemon_example fulltext
- debug_key_management example_key_management versioning )
- if ! use server; then # These plugins are for the server
- for plugin in "${server_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- fi
-
- if ! use test; then # These plugins are only used during testing
- for plugin in "${test_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- _disable_engine test_sql_discovery
- echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die
- fi
-
- _disable_engine example
-
- if ! use oqgraph ; then # avoids extra library checks
- _disable_engine oqgraph
- fi
-
- if use mroonga ; then
- # Remove the bundled groonga
- # There is no CMake flag, it simply checks for existance
- rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
- else
- _disable_engine mroonga
- fi
-
- # Fix static bindings in galera replication
- sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \
- "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die
- sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \
- "${S}"/wsrep-lib/src/CMakeLists.txt || die
-
- # Fix galera_recovery.sh script
- sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \
- scripts/galera_recovery.sh || die
-
- sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \
- "${S}"/scripts/mysql_install_db.sh || die
-
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-src_configure() {
- # bug #855233 (MDEV-11914, MDEV-25633) at least
- filter-lto
- # bug 508724 mariadb cannot use ld.gold
- tc-ld-is-gold && tc-ld-force-bfd
-
- use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
-
- # It fails on alpha without this
- use alpha && append-ldflags "-Wl,--no-relax"
-
- # bug #945352
- append-cflags -std=gnu17
-
- append-cxxflags -felide-constructors
-
- # bug #283926, with GCC4.4, this is required to get correct behavior.
- append-flags -fno-strict-aliasing
-
- # Workaround for bug #959423 (https://jira.mariadb.org/browse/MDEV-37148)
- append-flags -fno-tree-vectorize
-
- # debug hack wrt #497532
- local mycmakeargs=(
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_MANDIR=share/man
- -DINSTALL_MYSQLSHAREDIR=share/mariadb
- -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
- -DINSTALL_SCRIPTDIR=bin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb"
- -DWITH_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
- -DWITH_LIBEDIT=0
- -DWITH_LIBFMT=system
- -DWITH_THRIFT=system # for columnstore
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DWITH_DEFAULT_FEATURE_SET=0
- -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
- # The build forces this to be defined when cross-compiling. We pass it
- # all the time for simplicity and to make sure it is actually correct.
- -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
- -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)"
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF)
- -DCONC_WITH_EXTERNAL_ZLIB=YES
- -DWITH_EXTERNAL_ZLIB=YES
- -DSUFFIX_INSTALL_DIR=""
- -DWITH_UNITTEST=OFF
- -DWITHOUT_CLIENTLIBS=YES
- -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
- -DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
- -DCLIENT_PLUGIN_ZSTD=OFF
- )
- if use test ; then
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test )
- else
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
- fi
-
- if ! use yassl ; then
- mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
- if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
- mycmakeargs+=(
- -DDTRACE="${BROOT}"/usr/bin/stap-dtrace
- )
- fi
-
- # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
- mycmakeargs+=(
- -DWITH_READLINE=$(usex bindist 1 0)
- -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1)
- -DENABLE_DTRACE=$(usex systemtap)
- )
-
- if use server ; then
- # Connect and Federated{,X} must be treated special
- # otherwise they will not be built as plugins
- if ! use extraengine ; then
- mycmakeargs+=(
- -DPLUGIN_CONNECT=NO
- -DPLUGIN_FEDERATED=NO
- -DPLUGIN_FEDERATEDX=NO
- )
- fi
-
- mycmakeargs+=(
- -DWITH_PCRE=system
- -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
- -DPLUGIN_SPHINX=$(usex sphinx YES NO)
- -DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=NO
- -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
- -DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
- -DPLUGIN_SPIDER=$(usex extraengine YES NO)
- -DPLUGIN_S3=$(usex s3 YES NO)
- -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO)
- -DCONNECT_WITH_MYSQL=1
- -DCONNECT_WITH_LIBXML2=$(usex xml)
- -DCONNECT_WITH_ODBC=$(usex odbc)
- -DCONNECT_WITH_JDBC=$(usex jdbc)
- # Build failure and autodep wrt bug 639144
- -DCONNECT_WITH_MONGO=OFF
- -DWITH_WSREP=$(usex galera)
- -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF)
- -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF)
- -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF)
- -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO)
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DWITH_MARIABACKUP=$(usex backup ON OFF)
- -DWITH_LIBARCHIVE=$(usex backup ON OFF)
- -DINSTALL_SQLBENCHDIR=""
- -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO)
- # systemd is only linked to for server notification
- -DWITH_SYSTEMD=$(usex systemd yes no)
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use test ; then
- # This is needed for the new client lib which tests a real, open server
- mycmakeargs+=( -DSKIP_TESTS=ON )
- fi
-
- if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
-
- elif ! use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- fi
- mycmakeargs+=(
- -DEXTRA_CHARSETS=all
- -DMYSQL_USER=mysql
- -DDISABLE_SHARED=$(usex static YES NO)
- -DWITH_DEBUG=$(usex debug)
- -DWITH_EMBEDDED_SERVER=OFF
- -DWITH_PROFILING=$(usex profiling)
- )
-
- if use static; then
- mycmakeargs+=( -DWITH_PIC=1 )
- fi
-
- if use jemalloc || use tcmalloc ; then
- mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- -DWITH_PARTITION_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_EMBEDDED_SERVER=OFF
- -DEXTRA_CHARSETS=none
- -DINSTALL_SQLBENCHDIR=
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
-}
-
-# Official test instructions:
-# USE='extraengine perl server' \
-# FEATURES='test userpriv' \
-# ebuild mariadb-X.X.XX.ebuild \
-# digest clean package
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- if ! use server ; then
- einfo "Skipping server tests due to minimal build."
- return 0
- fi
-
- # Ensure that parallel runs don't die
- export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- if [[ -z "${MTR_PARALLEL}" ]] ; then
- local -x MTR_PARALLEL=$(makeopts_jobs)
-
- if [[ ${MTR_PARALLEL} -gt 4 ]] ; then
- # Running multiple tests in parallel usually require higher ulimit
- # and fs.aio-max-nr setting. In addition, tests like main.multi_update
- # are known to hit timeout when system is busy.
- # To avoid test failure we will limit MTR_PARALLEL to 4 instead of
- # using "auto".
- local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})"
- info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!"
- einfo "${info_msg}"
- unset info_msg
- MTR_PARALLEL=4
- fi
- else
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
- fi
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from '[Warning] Buffered warning: Could not
- # increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- # create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then
- touch "${S}"/mysql-test/unstable-tests || die
- fi
-
- cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die
-
- local disabled_tests=(
- "innodb_gis.1;MDEV-25095;Known rounding error with latest AMD processors"
- "innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
- "main.gis;MDEV-25095;Known rounding error with latest AMD processors"
-
- # Some tests are unable to retrieve HW address
- "spider.*;MDEV-37098;Fails with network sandbox"
-
- # issue introduced in 11.8.2
- "main.mysqld--help-aria;MDEV-36668;broken test regex"
- )
-
- use latin1 || disabled_tests+=(
- "funcs_1.is_columns_mysql;0;Requires USE=latin1"
- "main.information_schema;0;Requires USE=latin1"
- "main.sp2;24177;Requires USE=latin1"
- "main.system_mysql_db;0;Requires USE=latin1"
- "main.upgrade_MDEV-19650;24178;Requires USE=latin1"
- )
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- # run mysql-test tests
- pushd "${TESTDIR}" &>/dev/null || die
- perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def"
- retstatus_tests=$?
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- local failures=""
- [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests"
-
- [[ -z "${failures}" ]] || die "Test failures: ${failures}"
- einfo "Tests successfully completed"
-}
-
-src_install() {
- cmake_src_install
-
- # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
- if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then
- rm "${ED}/usr/include/mysql/server/private/config.h" || die
- fi
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Unless they explicitly specific USE=test, then do not install the
- # testsuite. It DOES have a use to be installed, esp. when you want to do a
- # validation of your database configuration after tuning it.
- if ! use test ; then
- rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mariadb.d"
- cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- if use server ; then
- mycnf_src="my.cnf.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- eprefixify "${TMPDIR}/my.cnf.ok"
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- einfo "Including support files and sample configurations"
- docinto "support-files"
- local script
- for script in \
- "${S}"/support-files/magic
- do
- [[ -f "$script" ]] && dodoc "${script}"
- done
-
- docinto "scripts"
- for script in "${S}"/scripts/mysql* ; do
- [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
- done
- # Manually install supporting files that conflict with other packages
- # but are needed for galera and initial installation
- exeinto /usr/libexec/mariadb
- doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror"
-
- if use pam ; then
- keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir
- fi
- fi
-
- # Conflicting files
- conflicting_files=()
-
- # We prefer my_print_defaults from dev-db/mysql-connector-c
- conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" )
-
- # Remove bundled mytop in favor of dev-db/mytop
- conflicting_files+=( "${ED}/usr/bin/mytop" )
- conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" )
-
- local conflicting_file
- for conflicting_file in "${conflicting_files[@]}" ; do
- if [[ -e "${conflicting_file}" ]] ; then
- rm -v "${conflicting_file}" || die
- fi
- done
-
- # Fix a dangling symlink when galera is not built
- if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then
- rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die
- fi
-
- # Remove dangling symlink
- rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die
-
- # Remove broken SST scripts that are incompatible
- local scriptremove
- for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do
- if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then
- rm "${ED}/usr/bin/${scriptremove}" || die
- fi
- done
-}
-
-pkg_preinst() {
- java-pkg-opt-2_pkg_preinst
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}"
-
- if use server ; then
- if use pam; then
- einfo
- elog "This install includes the PAM authentication plugin."
- elog "To activate and configure the PAM plugin, please read:"
- elog "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
- einfo
- chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die
- fi
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog "\"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- elog
- elog "If you are switching server implentations, you should run the"
- elog "mysql_upgrade tool."
- einfo
- else
- einfo
- elog "If you are upgrading major versions, you should run the"
- elog "mysql_upgrade tool."
- einfo
- fi
-
- if use galera ; then
- einfo
- elog "Be sure to edit the my.cnf file to activate your cluster settings."
- elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
- elog "The first time the cluster is activated, you should add"
- elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
- elog "This option should then be removed for subsequent starts."
- einfo
- fi
- fi
-
- # Note about configuration change
- einfo
- elog "This version of mariadb reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/${PN}.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-}
-
-pkg_config() {
- _getoptval() {
- local section="${1}"
- local option="--${2}"
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
-
- local values=()
- local parameters=( $(eval "${cmd[@]}" 2>/dev/null) )
- for parameter in "${parameters[@]}"
- do
- # my_print_defaults guarantees output of options, one per line,
- # in the form that they would be specified on the command line.
- # So checking for --option=* should be safe.
- case ${parameter} in
- ${option}=*)
- values+=( "${parameter#*=}" )
- ;;
- esac
- done
-
- if [[ ${#values[@]} -gt 0 ]] ; then
- # Option could have been set multiple times
- # in which case only the last occurrence
- # contains the current value
- echo "${values[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db"
- if [[ ! -x "${mysql_install_db_binary}" ]] ; then
- die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- # Only create directory when MYSQL_LOG_BIN is an absolute path
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Only test when MYSQL_LOG_BIN is an absolute path
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- # Only create directory when MYSQL_RELAY_LOG is an absolute path
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Only test when MYSQL_RELAY_LOG is an absolute path
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null)
- [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir"
-
- # Limit access
- chmod 0770 "${SETUP_TMPDIR}" || die
- chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die
-
- local mysql_install_log="${SETUP_TMPDIR}/install_db.log"
- local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log"
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Absolute path for binary log files specified
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Absolute path for relay log files specified
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x${pwd1}" != "x${pwd2}" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="${SETUP_TMPDIR}/tz.sql"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- local cmd=(
- "${mysql_install_db_binary}"
- "${mysqld_options[@]}"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--rpm"
- "--cross-bootstrap"
- "--skip-test-db"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- local x=${RANDOM}
- local socket="${PID_DIR}/mysqld.${x}.sock"
- [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!"
- local pidfile="${PID_DIR}/mysqld.${x}.pid"
- [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- # Skip SSL for client connections, see bug #951865
- --skip-ssl
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- rm -r "${SETUP_TMPDIR}" || die
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mariadb/mariadb-11.8.5-r2.ebuild b/dev-db/mariadb/mariadb-11.8.9.ebuild
index adffd7a97005..59176bb870bc 100644
--- a/dev-db/mariadb/mariadb-11.8.5-r2.ebuild
+++ b/dev-db/mariadb/mariadb-11.8.9.ebuild
@@ -5,6 +5,7 @@ EAPI=8
SUBSLOT="18"
JAVA_PKG_OPT_USE="jdbc"
+MARIADB_GENTOO_PATCH_VERSION="11.8.9-1"
inherit systemd flag-o-matic prefix toolchain-funcs \
multiprocessing java-pkg-opt-2 cmake pam
@@ -13,7 +14,7 @@ DESCRIPTION="An enhanced, drop-in replacement for MySQL"
HOMEPAGE="https://mariadb.org/"
SRC_URI="
mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-11.4.8-patches-01.tar.xz
+ https://gitweb.gentoo.org/proj/mariadb-patches.git/snapshot/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}.tar.bz2
"
# Shorten the path because the socket path length must be shorter than 107 chars
# and we will run a mysql server during test phase
@@ -110,7 +111,6 @@ RDEPEND="
${COMMON_DEPEND}
!<dev-db/mariadb-$(ver_cut 1-2)
!dev-db/mysql
- !dev-db/percona-server
selinux? ( sec-policy/selinux-mysql )
server? (
columnstore? ( dev-db/mariadb-connector-c )
@@ -211,7 +211,8 @@ src_unpack() {
}
src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
+ eapply "${WORKDIR}"/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}
+
eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
@@ -576,6 +577,8 @@ src_test() {
# Fails in network-sandbox which contains only "lo" interface
"main.func_json;MDEV-38057;Fails in network-sandbox"
+ "main.mysql_client_test;0;Fails in network-sandbox"
+ "main.mysql_client_test_comp;0;Fails in network-sandbox"
# Some tests are unable to retrieve HW address
"spider.*;MDEV-37098;Fails with network sandbox"
@@ -583,9 +586,7 @@ src_test() {
# issue introduced in 11.8.2
"main.mysqld--help-aria;MDEV-36668;broken test regex"
- # This issue will be fixed in next release
- # see also https://github.com/MariaDB/server/pull/4429
- "main.func_regexp_pcre;MDEV-38046;Fails with PCRE2 10.47"
+ "sys_vars.session_track_system_variables_basic;0;Requires example engine"
)
use latin1 || disabled_tests+=(
diff --git a/dev-db/mariadb/mariadb-12.0.2-r2.ebuild b/dev-db/mariadb/mariadb-12.0.2-r2.ebuild
deleted file mode 100644
index 73a4a6b34eb4..000000000000
--- a/dev-db/mariadb/mariadb-12.0.2-r2.ebuild
+++ /dev/null
@@ -1,1323 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-SUBSLOT="18"
-JAVA_PKG_OPT_USE="jdbc"
-
-inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake pam
-
-DESCRIPTION="An enhanced, drop-in replacement for MySQL"
-HOMEPAGE="https://mariadb.org/"
-SRC_URI="
- mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-11.4.8-patches-01.tar.xz
-"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2 LGPL-2.1+"
-SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
-IUSE="aws-km +backup bindist columnstore cracklib debug extraengine galera innodb-lz4
- innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
- numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
- sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
- test xml yassl"
-
-RESTRICT="!bindist? ( bindist ) !test? ( test )"
-
-REQUIRED_USE="jdbc? ( extraengine server !static )
- ?? ( tcmalloc jemalloc )
- static? ( yassl !pam )
- test? ( extraengine )"
-
-# Be warned, *DEPEND are version-dependant
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- dev-libs/libfmt:=
- dev-libs/lzo:2
- >=dev-libs/libpcre2-10.34:=
- >=sys-apps/texinfo-4.7-r1
- sys-libs/ncurses:0=
- >=virtual/zlib-1.2.3:=
- virtual/libcrypt:=
- aws-km? ( dev-cpp/aws-sdk-cpp:= )
- !bindist? (
- sys-libs/binutils-libs:0=
- >=sys-libs/readline-4.1:0=
- )
- jemalloc? ( dev-libs/jemalloc:0= )
- kerberos? ( virtual/krb5 )
- kernel_linux? (
- dev-libs/libaio:0=
- sys-libs/liburing:=
- sys-process/procps:0=
- )
- server? (
- app-arch/bzip2
- app-arch/xz-utils
- backup? ( app-arch/libarchive:0= )
- columnstore? (
- app-arch/snappy:=
- dev-libs/boost:=
- dev-libs/libxml2:2=
- dev-libs/thrift:=
- )
- cracklib? ( sys-libs/cracklib:0= )
- extraengine? (
- odbc? ( dev-db/unixODBC:0= )
- xml? ( dev-libs/libxml2:2= )
- )
- innodb-lz4? ( app-arch/lz4 )
- innodb-lzo? ( dev-libs/lzo )
- innodb-snappy? ( app-arch/snappy:= )
- mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 )
- numa? ( sys-process/numactl )
- oqgraph? (
- dev-libs/boost:=
- dev-libs/judy:0=
- )
- pam? ( sys-libs/pam:0= )
- s3? ( net-misc/curl )
- systemd? ( sys-apps/systemd:= )
- )
- systemtap? ( >=dev-debug/systemtap-1.3:0= )
- tcmalloc? ( dev-util/google-perftools:0= )
- yassl? ( net-libs/gnutls:0= )
- !yassl? (
- >=dev-libs/openssl-1.0.0:0=
- )
-"
-BDEPEND="
- app-alternatives/yacc
- test? (
- acct-group/mysql
- acct-user/mysql
- dev-perl/Net-SSLeay
- )
-"
-DEPEND="${COMMON_DEPEND}
- server? (
- extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) )
- )
- static? ( sys-libs/ncurses[static-libs] )
-"
-RDEPEND="
- ${COMMON_DEPEND}
- !<dev-db/mariadb-$(ver_cut 1-2)
- !dev-db/mysql
- !dev-db/percona-server
- selinux? ( sec-policy/selinux-mysql )
- server? (
- columnstore? ( dev-db/mariadb-connector-c )
- extraengine? ( jdbc? ( >=virtual/jre-1.8 ) )
- galera? (
- sys-apps/iproute2
- =sys-cluster/galera-26*
- sst-rsync? ( sys-process/lsof )
- sst-mariabackup? ( net-misc/socat[ssl] )
- )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-MariaDB is needed by some scripts installed by MySQL
-PDEPEND="perl? ( dev-perl/DBD-MariaDB )"
-
-mysql_init_vars() {
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"}
- MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=""
- if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
- MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
- | sed -e 's/.*=\s*//' \
- | tail -n1)
- fi
- fi
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR="${MY_LOCALSTATEDIR}"
- einfo "Using default MY_DATADIR"
- fi
- elog "MySQL MY_DATADIR is ${MY_DATADIR}"
-
- if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
- if [[ -e "${MY_DATADIR}" ]] ; then
- # If you get this and you're wondering about it, see bug #207636
- elog "MySQL datadir found in ${MY_DATADIR}"
- elog "A new one will not be created."
- PREVIOUS_DATADIR="yes"
- else
- PREVIOUS_DATADIR="no"
- fi
- export PREVIOUS_DATADIR
- fi
- else
- if [[ ${EBUILD_PHASE} == "config" ]]; then
- local new_MY_DATADIR
- new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
-
- if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
- ewarn "MySQL MY_DATADIR has changed"
- ewarn "from ${MY_DATADIR}"
- ewarn "to ${new_MY_DATADIR}"
- MY_DATADIR="${new_MY_DATADIR}"
- fi
- fi
- fi
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if has test ${FEATURES} ; then
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
- fi
- fi
-
- java-pkg-opt-2_pkg_setup
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die
-}
-
-src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
- eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
- eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
-
- eapply_user
-
- _disable_plugin() {
- echo > "${S}/plugin/${1}/CMakeLists.txt" || die
- }
- _disable_engine() {
- echo > "${S}/storage/${1}/CMakeLists.txt" || die
- }
-
- if use jemalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt"
- elif use tcmalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt"
- fi
-
- local plugin
- local server_plugins=( handler_socket auth_socket feedback metadata_lock_info
- locale_info qc_info server_audit sql_errlog auth_ed25519 )
- local test_plugins=( audit_null auth_examples daemon_example fulltext
- debug_key_management example_key_management versioning )
- if ! use server; then # These plugins are for the server
- for plugin in "${server_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- fi
-
- if ! use test; then # These plugins are only used during testing
- for plugin in "${test_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- _disable_engine test_sql_discovery
- echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die
- fi
-
- _disable_engine example
-
- if ! use oqgraph ; then # avoids extra library checks
- _disable_engine oqgraph
- fi
-
- if use mroonga ; then
- # Remove the bundled groonga
- # There is no CMake flag, it simply checks for existance
- rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
- else
- _disable_engine mroonga
- fi
-
- # Fix static bindings in galera replication
- sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \
- "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die
- sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \
- "${S}"/wsrep-lib/src/CMakeLists.txt || die
-
- # Fix galera_recovery.sh script
- sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \
- scripts/galera_recovery.sh || die
-
- sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \
- "${S}"/scripts/mysql_install_db.sh || die
-
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-src_configure() {
- # bug #855233 (MDEV-11914, MDEV-25633) at least
- filter-lto
- # bug 508724 mariadb cannot use ld.gold
- tc-ld-is-gold && tc-ld-force-bfd
-
- use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
-
- # It fails on alpha without this
- use alpha && append-ldflags "-Wl,--no-relax"
-
- # bug #945352
- append-cflags -std=gnu17
-
- append-cxxflags -felide-constructors
-
- # bug #283926, with GCC4.4, this is required to get correct behavior.
- append-flags -fno-strict-aliasing
-
- # Workaround for bug #959423 (https://jira.mariadb.org/browse/MDEV-37148)
- append-flags -fno-tree-vectorize
-
- # debug hack wrt #497532
- local mycmakeargs=(
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_PAMDIR="$(getpam_mod_dir)"
- -DINSTALL_PAMDATADIR="${EPREFIX}/etc/security"
- -DINSTALL_MANDIR=share/man
- -DINSTALL_MYSQLSHAREDIR=share/mariadb
- -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
- -DINSTALL_SCRIPTDIR=bin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb"
- -DWITH_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
- -DWITH_LIBEDIT=0
- -DWITH_LIBFMT=system
- -DWITH_THRIFT=system # for columnstore
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DWITH_DEFAULT_FEATURE_SET=0
- -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
- # The build forces this to be defined when cross-compiling. We pass it
- # all the time for simplicity and to make sure it is actually correct.
- -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
- -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)"
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF)
- -DCONC_WITH_EXTERNAL_ZLIB=YES
- -DWITH_EXTERNAL_ZLIB=YES
- -DSUFFIX_INSTALL_DIR=""
- -DWITH_UNITTEST=OFF
- -DWITHOUT_CLIENTLIBS=YES
- -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
- -DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
- -DCLIENT_PLUGIN_ZSTD=OFF
- )
- if use test ; then
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test )
- else
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
- fi
-
- if ! use yassl ; then
- mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
- if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
- mycmakeargs+=(
- -DDTRACE="${BROOT}"/usr/bin/stap-dtrace
- )
- fi
-
- # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
- mycmakeargs+=(
- -DWITH_READLINE=$(usex bindist 1 0)
- -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1)
- -DENABLE_DTRACE=$(usex systemtap)
- )
-
- if use server ; then
- # Connect and Federated{,X} must be treated special
- # otherwise they will not be built as plugins
- if ! use extraengine ; then
- mycmakeargs+=(
- -DPLUGIN_CONNECT=NO
- -DPLUGIN_FEDERATED=NO
- -DPLUGIN_FEDERATEDX=NO
- )
- fi
-
- mycmakeargs+=(
- -DWITH_PCRE=system
- -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
- -DPLUGIN_SPHINX=$(usex sphinx YES NO)
- -DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=$(usex aws-km DYNAMIC NO)
- -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
- -DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
- -DPLUGIN_SPIDER=$(usex extraengine YES NO)
- -DPLUGIN_S3=$(usex s3 YES NO)
- -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO)
- -DCONNECT_WITH_MYSQL=1
- -DCONNECT_WITH_LIBXML2=$(usex xml)
- -DCONNECT_WITH_ODBC=$(usex odbc)
- -DCONNECT_WITH_JDBC=$(usex jdbc)
- # Build failure and autodep wrt bug 639144
- -DCONNECT_WITH_MONGO=OFF
- -DWITH_WSREP=$(usex galera)
- -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF)
- -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF)
- -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF)
- -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO)
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DWITH_MARIABACKUP=$(usex backup ON OFF)
- -DWITH_LIBARCHIVE=$(usex backup ON OFF)
- -DINSTALL_SQLBENCHDIR=""
- -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO)
- # systemd is only linked to for server notification
- -DWITH_SYSTEMD=$(usex systemd yes no)
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use test ; then
- # This is needed for the new client lib which tests a real, open server
- mycmakeargs+=( -DSKIP_TESTS=ON )
- fi
-
- if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
-
- elif ! use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_unicode_520_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- fi
- mycmakeargs+=(
- -DEXTRA_CHARSETS=all
- -DMYSQL_USER=mysql
- -DDISABLE_SHARED=$(usex static YES NO)
- -DWITH_DEBUG=$(usex debug)
- -DWITH_EMBEDDED_SERVER=OFF
- -DWITH_PROFILING=$(usex profiling)
- )
-
- if use static; then
- mycmakeargs+=( -DWITH_PIC=1 )
- fi
-
- if use jemalloc || use tcmalloc ; then
- mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- -DWITH_PARTITION_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_EMBEDDED_SERVER=OFF
- -DEXTRA_CHARSETS=none
- -DINSTALL_SQLBENCHDIR=
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
-}
-
-# Official test instructions:
-# USE='extraengine perl server' \
-# FEATURES='test userpriv' \
-# ebuild mariadb-X.X.XX.ebuild \
-# digest clean package
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- if ! use server ; then
- einfo "Skipping server tests due to minimal build."
- return 0
- fi
-
- # Ensure that parallel runs don't die
- export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- if [[ -z "${MTR_PARALLEL}" ]] ; then
- local -x MTR_PARALLEL=$(makeopts_jobs)
-
- if [[ ${MTR_PARALLEL} -gt 4 ]] ; then
- # Running multiple tests in parallel usually require higher ulimit
- # and fs.aio-max-nr setting. In addition, tests like main.multi_update
- # are known to hit timeout when system is busy.
- # To avoid test failure we will limit MTR_PARALLEL to 4 instead of
- # using "auto".
- local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})"
- info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!"
- einfo "${info_msg}"
- unset info_msg
- MTR_PARALLEL=4
- fi
- else
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
- fi
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from '[Warning] Buffered warning: Could not
- # increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- # create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then
- touch "${S}"/mysql-test/unstable-tests || die
- fi
-
- cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die
-
- local disabled_tests=(
- "innodb_gis.1;MDEV-25095;Known rounding error with latest AMD processors"
- "innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
- "main.gis;MDEV-25095;Known rounding error with latest AMD processors"
-
- # Some tests are unable to retrieve HW address
- "spider.*;MDEV-37098;Fails with network sandbox"
-
- # issue introduced in 11.8.2
- "main.mysqld--help-aria;MDEV-36668;broken test regex"
- )
-
- use latin1 || disabled_tests+=(
- "funcs_1.is_columns_mysql;0;Requires USE=latin1"
- "main.information_schema;0;Requires USE=latin1"
- "main.sp2;24177;Requires USE=latin1"
- "main.system_mysql_db;0;Requires USE=latin1"
- "main.upgrade_MDEV-19650;24178;Requires USE=latin1"
- )
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- # run mysql-test tests
- pushd "${TESTDIR}" &>/dev/null || die
- perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def"
- retstatus_tests=$?
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- local failures=""
- [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests"
-
- [[ -z "${failures}" ]] || die "Test failures: ${failures}"
- einfo "Tests successfully completed"
-}
-
-src_install() {
- cmake_src_install
-
- # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
- if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then
- rm "${ED}/usr/include/mysql/server/private/config.h" || die
- fi
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Unless they explicitly specific USE=test, then do not install the
- # testsuite. It DOES have a use to be installed, esp. when you want to do a
- # validation of your database configuration after tuning it.
- if ! use test ; then
- rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mariadb.d"
- cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- if use server ; then
- mycnf_src="my.cnf.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- eprefixify "${TMPDIR}/my.cnf.ok"
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- einfo "Including support files and sample configurations"
- docinto "support-files"
- local script
- for script in \
- "${S}"/support-files/magic
- do
- [[ -f "$script" ]] && dodoc "${script}"
- done
-
- docinto "scripts"
- for script in "${S}"/scripts/mysql* ; do
- [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
- done
- # Manually install supporting files that conflict with other packages
- # but are needed for galera and initial installation
- exeinto /usr/libexec/mariadb
- doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror"
-
- if use pam ; then
- keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir
- fi
- fi
-
- # Conflicting files
- conflicting_files=()
-
- # We prefer my_print_defaults from dev-db/mysql-connector-c
- conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" )
-
- # Remove bundled mytop in favor of dev-db/mytop
- conflicting_files+=( "${ED}/usr/bin/mytop" )
- conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" )
-
- local conflicting_file
- for conflicting_file in "${conflicting_files[@]}" ; do
- if [[ -e "${conflicting_file}" ]] ; then
- rm -v "${conflicting_file}" || die
- fi
- done
-
- # Fix a dangling symlink when galera is not built
- if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then
- rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die
- fi
-
- # Remove dangling symlink
- rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die
-
- # Remove broken SST scripts that are incompatible
- local scriptremove
- for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do
- if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then
- rm "${ED}/usr/bin/${scriptremove}" || die
- fi
- done
-}
-
-pkg_preinst() {
- java-pkg-opt-2_pkg_preinst
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}"
-
- if use server ; then
- if use pam; then
- einfo
- elog "This install includes the PAM authentication plugin."
- elog "To activate and configure the PAM plugin, please read:"
- elog "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
- einfo
- chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die
- fi
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog "\"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- elog
- elog "If you are switching server implentations, you should run the"
- elog "mysql_upgrade tool."
- einfo
- else
- einfo
- elog "If you are upgrading major versions, you should run the"
- elog "mysql_upgrade tool."
- einfo
- fi
-
- if use galera ; then
- einfo
- elog "Be sure to edit the my.cnf file to activate your cluster settings."
- elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
- elog "The first time the cluster is activated, you should add"
- elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
- elog "This option should then be removed for subsequent starts."
- einfo
- fi
- fi
-
- # Note about configuration change
- einfo
- elog "This version of mariadb reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/${PN}.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-}
-
-pkg_config() {
- _getoptval() {
- local section="${1}"
- local option="--${2}"
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
-
- local values=()
- local parameters=( $(eval "${cmd[@]}" 2>/dev/null) )
- for parameter in "${parameters[@]}"
- do
- # my_print_defaults guarantees output of options, one per line,
- # in the form that they would be specified on the command line.
- # So checking for --option=* should be safe.
- case ${parameter} in
- ${option}=*)
- values+=( "${parameter#*=}" )
- ;;
- esac
- done
-
- if [[ ${#values[@]} -gt 0 ]] ; then
- # Option could have been set multiple times
- # in which case only the last occurrence
- # contains the current value
- echo "${values[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db"
- if [[ ! -x "${mysql_install_db_binary}" ]] ; then
- die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- # Only create directory when MYSQL_LOG_BIN is an absolute path
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Only test when MYSQL_LOG_BIN is an absolute path
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- # Only create directory when MYSQL_RELAY_LOG is an absolute path
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Only test when MYSQL_RELAY_LOG is an absolute path
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null)
- [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir"
-
- # Limit access
- chmod 0770 "${SETUP_TMPDIR}" || die
- chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die
-
- local mysql_install_log="${SETUP_TMPDIR}/install_db.log"
- local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log"
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Absolute path for binary log files specified
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Absolute path for relay log files specified
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x${pwd1}" != "x${pwd2}" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="${SETUP_TMPDIR}/tz.sql"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- local cmd=(
- "${mysql_install_db_binary}"
- "${mysqld_options[@]}"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--rpm"
- "--cross-bootstrap"
- "--skip-test-db"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- local x=${RANDOM}
- local socket="${PID_DIR}/mysqld.${x}.sock"
- [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!"
- local pidfile="${PID_DIR}/mysqld.${x}.pid"
- [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- # Skip SSL for client connections, see bug #951865
- --skip-ssl
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- rm -r "${SETUP_TMPDIR}" || die
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mariadb/mariadb-12.0.2-r3.ebuild b/dev-db/mariadb/mariadb-12.0.2-r3.ebuild
deleted file mode 100644
index d5ab25bd16de..000000000000
--- a/dev-db/mariadb/mariadb-12.0.2-r3.ebuild
+++ /dev/null
@@ -1,1324 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-SUBSLOT="18"
-JAVA_PKG_OPT_USE="jdbc"
-
-inherit systemd flag-o-matic prefix toolchain-funcs \
- multiprocessing java-pkg-opt-2 cmake pam
-
-DESCRIPTION="An enhanced, drop-in replacement for MySQL"
-HOMEPAGE="https://mariadb.org/"
-SRC_URI="
- mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-11.4.8-patches-01.tar.xz
-"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2 LGPL-2.1+"
-SLOT="$(ver_cut 1-2)/${SUBSLOT:-0}"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
-IUSE="aws-km +backup bindist columnstore cracklib debug extraengine galera innodb-lz4
- innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 mroonga
- numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx
- sst-rsync sst-mariabackup static systemd systemtap s3 tcmalloc
- test xml yassl"
-
-RESTRICT="!bindist? ( bindist ) !test? ( test )"
-
-REQUIRED_USE="jdbc? ( extraengine server !static )
- ?? ( tcmalloc jemalloc )
- static? ( yassl !pam )
- test? ( extraengine )"
-
-# Be warned, *DEPEND are version-dependant
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- dev-libs/libfmt:=
- dev-libs/lzo:2
- >=dev-libs/libpcre2-10.34:=
- >=sys-apps/texinfo-4.7-r1
- sys-libs/ncurses:0=
- >=virtual/zlib-1.2.3:=
- virtual/libcrypt:=
- aws-km? ( dev-cpp/aws-sdk-cpp:= )
- !bindist? (
- sys-libs/binutils-libs:0=
- >=sys-libs/readline-4.1:0=
- )
- jemalloc? ( dev-libs/jemalloc:0= )
- kerberos? ( virtual/krb5 )
- kernel_linux? (
- dev-libs/libaio:0=
- sys-libs/liburing:=
- sys-process/procps:0=
- )
- server? (
- app-arch/bzip2
- app-arch/xz-utils
- backup? ( app-arch/libarchive:0= )
- columnstore? (
- app-arch/snappy:=
- dev-libs/boost:=
- dev-libs/libxml2:2=
- dev-libs/thrift:=
- )
- cracklib? ( sys-libs/cracklib:0= )
- extraengine? (
- odbc? ( dev-db/unixODBC:0= )
- xml? ( dev-libs/libxml2:2= )
- )
- innodb-lz4? ( app-arch/lz4 )
- innodb-lzo? ( dev-libs/lzo )
- innodb-snappy? ( app-arch/snappy:= )
- mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 )
- numa? ( sys-process/numactl )
- oqgraph? (
- dev-libs/boost:=
- dev-libs/judy:0=
- )
- pam? ( sys-libs/pam:0= )
- s3? ( net-misc/curl )
- systemd? ( sys-apps/systemd:= )
- )
- systemtap? ( >=dev-debug/systemtap-1.3:0= )
- tcmalloc? ( dev-util/google-perftools:0= )
- yassl? ( net-libs/gnutls:0= )
- !yassl? (
- >=dev-libs/openssl-1.0.0:0=
- )
-"
-BDEPEND="
- app-alternatives/yacc
- test? (
- acct-group/mysql
- acct-user/mysql
- dev-perl/Net-SSLeay
- )
-"
-DEPEND="${COMMON_DEPEND}
- server? (
- extraengine? ( jdbc? ( >=virtual/jdk-1.8 ) )
- )
- static? ( sys-libs/ncurses[static-libs] )
-"
-RDEPEND="
- ${COMMON_DEPEND}
- !<dev-db/mariadb-$(ver_cut 1-2)
- !dev-db/mysql
- !dev-db/percona-server
- selinux? ( sec-policy/selinux-mysql )
- server? (
- columnstore? ( dev-db/mariadb-connector-c )
- extraengine? ( jdbc? ( >=virtual/jre-1.8 ) )
- galera? (
- sys-apps/iproute2
- =sys-cluster/galera-26*
- sst-rsync? ( sys-process/lsof )
- sst-mariabackup? ( net-misc/socat[ssl] )
- )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-MariaDB is needed by some scripts installed by MySQL
-PDEPEND="perl? ( dev-perl/DBD-MariaDB )"
-
-mysql_init_vars() {
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"}
- MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=""
- if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
- MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
- | sed -e 's/.*=\s*//' \
- | tail -n1)
- fi
- fi
- if [[ -z "${MY_DATADIR}" ]] ; then
- MY_DATADIR="${MY_LOCALSTATEDIR}"
- einfo "Using default MY_DATADIR"
- fi
- elog "MySQL MY_DATADIR is ${MY_DATADIR}"
-
- if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
- if [[ -e "${MY_DATADIR}" ]] ; then
- # If you get this and you're wondering about it, see bug #207636
- elog "MySQL datadir found in ${MY_DATADIR}"
- elog "A new one will not be created."
- PREVIOUS_DATADIR="yes"
- else
- PREVIOUS_DATADIR="no"
- fi
- export PREVIOUS_DATADIR
- fi
- else
- if [[ ${EBUILD_PHASE} == "config" ]]; then
- local new_MY_DATADIR
- new_MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
- | sed -ne '/datadir/s|^--datadir=||p' \
- | tail -n1)
-
- if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
- ewarn "MySQL MY_DATADIR has changed"
- ewarn "from ${MY_DATADIR}"
- ewarn "to ${new_MY_DATADIR}"
- MY_DATADIR="${new_MY_DATADIR}"
- fi
- fi
- fi
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if has test ${FEATURES} ; then
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
- fi
- fi
-
- java-pkg-opt-2_pkg_setup
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die
-}
-
-src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
- eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
- eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
- eapply "${FILESDIR}"/${PN}-12.0.2-fix_boost_system.patch
-
- eapply_user
-
- _disable_plugin() {
- echo > "${S}/plugin/${1}/CMakeLists.txt" || die
- }
- _disable_engine() {
- echo > "${S}/storage/${1}/CMakeLists.txt" || die
- }
-
- if use jemalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC jemalloc)" >> "${S}/sql/CMakeLists.txt"
- elif use tcmalloc; then
- echo "TARGET_LINK_LIBRARIES(mariadbd LINK_PUBLIC tcmalloc)" >> "${S}/sql/CMakeLists.txt"
- fi
-
- local plugin
- local server_plugins=( handler_socket auth_socket feedback metadata_lock_info
- locale_info qc_info server_audit sql_errlog auth_ed25519 )
- local test_plugins=( audit_null auth_examples daemon_example fulltext
- debug_key_management example_key_management versioning )
- if ! use server; then # These plugins are for the server
- for plugin in "${server_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- fi
-
- if ! use test; then # These plugins are only used during testing
- for plugin in "${test_plugins[@]}" ; do
- _disable_plugin "${plugin}"
- done
- _disable_engine test_sql_discovery
- echo > "${S}/plugin/auth_pam/testing/CMakeLists.txt" || die
- fi
-
- _disable_engine example
-
- if ! use oqgraph ; then # avoids extra library checks
- _disable_engine oqgraph
- fi
-
- if use mroonga ; then
- # Remove the bundled groonga
- # There is no CMake flag, it simply checks for existance
- rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
- else
- _disable_engine mroonga
- fi
-
- # Fix static bindings in galera replication
- sed -i -e 's~add_library(wsrep_api_v26$~add_library(wsrep_api_v26 STATIC~' \
- "${S}"/wsrep-lib/wsrep-API/CMakeLists.txt || die
- sed -i -e 's~add_library(wsrep-lib$~add_library(wsrep-lib STATIC~' \
- "${S}"/wsrep-lib/src/CMakeLists.txt || die
-
- # Fix galera_recovery.sh script
- sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \
- scripts/galera_recovery.sh || die
-
- sed -i -e 's~ \$basedir/lib/\*/mariadb19/plugin~~' \
- "${S}"/scripts/mysql_install_db.sh || die
-
- cmake_src_prepare
- java-pkg-opt-2_src_prepare
-}
-
-src_configure() {
- # bug #855233 (MDEV-11914, MDEV-25633) at least
- filter-lto
- # bug 508724 mariadb cannot use ld.gold
- tc-ld-is-gold && tc-ld-force-bfd
-
- use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
-
- # It fails on alpha without this
- use alpha && append-ldflags "-Wl,--no-relax"
-
- # bug #945352
- append-cflags -std=gnu17
-
- append-cxxflags -felide-constructors
-
- # bug #283926, with GCC4.4, this is required to get correct behavior.
- append-flags -fno-strict-aliasing
-
- # Workaround for bug #959423 (https://jira.mariadb.org/browse/MDEV-37148)
- append-flags -fno-tree-vectorize
-
- # debug hack wrt #497532
- local mycmakeargs=(
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_PAMDIR="$(getpam_mod_dir)"
- -DINSTALL_PAMDATADIR="${EPREFIX}/etc/security"
- -DINSTALL_MANDIR=share/man
- -DINSTALL_MYSQLSHAREDIR=share/mariadb
- -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin
- -DINSTALL_SCRIPTDIR=bin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb"
- -DWITH_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
- -DWITH_LIBEDIT=0
- -DWITH_LIBFMT=system
- -DWITH_THRIFT=system # for columnstore
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DWITH_DEFAULT_FEATURE_SET=0
- -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
- # The build forces this to be defined when cross-compiling. We pass it
- # all the time for simplicity and to make sure it is actually correct.
- -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
- -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)"
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF)
- -DCONC_WITH_EXTERNAL_ZLIB=YES
- -DWITH_EXTERNAL_ZLIB=YES
- -DSUFFIX_INSTALL_DIR=""
- -DWITH_UNITTEST=OFF
- -DWITHOUT_CLIENTLIBS=YES
- -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
- -DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
- -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
- -DCLIENT_PLUGIN_ZSTD=OFF
- )
- if use test ; then
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test )
- else
- mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
- fi
-
- if ! use yassl ; then
- mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
- if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
- mycmakeargs+=(
- -DDTRACE="${BROOT}"/usr/bin/stap-dtrace
- )
- fi
-
- # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION
- mycmakeargs+=(
- -DWITH_READLINE=$(usex bindist 1 0)
- -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1)
- -DENABLE_DTRACE=$(usex systemtap)
- )
-
- if use server ; then
- # Connect and Federated{,X} must be treated special
- # otherwise they will not be built as plugins
- if ! use extraengine ; then
- mycmakeargs+=(
- -DPLUGIN_CONNECT=NO
- -DPLUGIN_FEDERATED=NO
- -DPLUGIN_FEDERATEDX=NO
- )
- fi
-
- mycmakeargs+=(
- -DWITH_PCRE=system
- -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO)
- -DPLUGIN_SPHINX=$(usex sphinx YES NO)
- -DPLUGIN_AUTH_PAM=$(usex pam YES NO)
- -DPLUGIN_AWS_KEY_MANAGEMENT=$(usex aws-km DYNAMIC NO)
- -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO)
- -DPLUGIN_SEQUENCE=$(usex extraengine YES NO)
- -DPLUGIN_SPIDER=$(usex extraengine YES NO)
- -DPLUGIN_S3=$(usex s3 YES NO)
- -DPLUGIN_COLUMNSTORE=$(usex columnstore YES NO)
- -DCONNECT_WITH_MYSQL=1
- -DCONNECT_WITH_LIBXML2=$(usex xml)
- -DCONNECT_WITH_ODBC=$(usex odbc)
- -DCONNECT_WITH_JDBC=$(usex jdbc)
- # Build failure and autodep wrt bug 639144
- -DCONNECT_WITH_MONGO=OFF
- -DWITH_WSREP=$(usex galera)
- -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF)
- -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF)
- -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF)
- -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO)
- -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO)
- -DWITH_MARIABACKUP=$(usex backup ON OFF)
- -DWITH_LIBARCHIVE=$(usex backup ON OFF)
- -DINSTALL_SQLBENCHDIR=""
- -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO)
- # systemd is only linked to for server notification
- -DWITH_SYSTEMD=$(usex systemd yes no)
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use test ; then
- # This is needed for the new client lib which tests a real, open server
- mycmakeargs+=( -DSKIP_TESTS=ON )
- fi
-
- if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
-
- elif ! use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_uca1400_ai_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- fi
- mycmakeargs+=(
- -DEXTRA_CHARSETS=all
- -DMYSQL_USER=mysql
- -DDISABLE_SHARED=$(usex static YES NO)
- -DWITH_DEBUG=$(usex debug)
- -DWITH_EMBEDDED_SERVER=OFF
- -DWITH_PROFILING=$(usex profiling)
- )
-
- if use static; then
- mycmakeargs+=( -DWITH_PIC=1 )
- fi
-
- if use jemalloc || use tcmalloc ; then
- mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- -DWITH_PARTITION_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_EMBEDDED_SERVER=OFF
- -DEXTRA_CHARSETS=none
- -DINSTALL_SQLBENCHDIR=
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
-}
-
-# Official test instructions:
-# USE='extraengine perl server' \
-# FEATURES='test userpriv' \
-# ebuild mariadb-X.X.XX.ebuild \
-# digest clean package
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- if ! use server ; then
- einfo "Skipping server tests due to minimal build."
- return 0
- fi
-
- # Ensure that parallel runs don't die
- export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- if [[ -z "${MTR_PARALLEL}" ]] ; then
- local -x MTR_PARALLEL=$(makeopts_jobs)
-
- if [[ ${MTR_PARALLEL} -gt 4 ]] ; then
- # Running multiple tests in parallel usually require higher ulimit
- # and fs.aio-max-nr setting. In addition, tests like main.multi_update
- # are known to hit timeout when system is busy.
- # To avoid test failure we will limit MTR_PARALLEL to 4 instead of
- # using "auto".
- local info_msg="Parallel MySQL test suite jobs limited to 4 (MAKEOPTS=${MTR_PARALLEL})"
- info_msg+=" to avoid test failures. Set MTR_PARALLEL if you know what you are doing!"
- einfo "${info_msg}"
- unset info_msg
- MTR_PARALLEL=4
- fi
- else
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
- fi
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from '[Warning] Buffered warning: Could not
- # increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- # create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- if [[ ! -f "${S}/mysql-test/unstable-tests" ]] ; then
- touch "${S}"/mysql-test/unstable-tests || die
- fi
-
- cp "${S}"/mysql-test/unstable-tests "${T}/disabled.def" || die
-
- local disabled_tests=(
- "innodb_gis.1;MDEV-25095;Known rounding error with latest AMD processors"
- "innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
- "main.gis;MDEV-25095;Known rounding error with latest AMD processors"
-
- # Some tests are unable to retrieve HW address
- "spider.*;MDEV-37098;Fails with network sandbox"
-
- # issue introduced in 11.8.2
- "main.mysqld--help-aria;MDEV-36668;broken test regex"
- )
-
- use latin1 || disabled_tests+=(
- "funcs_1.is_columns_mysql;0;Requires USE=latin1"
- "main.information_schema;0;Requires USE=latin1"
- "main.sp2;24177;Requires USE=latin1"
- "main.system_mysql_db;0;Requires USE=latin1"
- "main.upgrade_MDEV-19650;24178;Requires USE=latin1"
- )
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- # run mysql-test tests
- pushd "${TESTDIR}" &>/dev/null || die
- perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test-list="${T}/disabled.def"
- retstatus_tests=$?
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- local failures=""
- [[ ${retstatus_tests} -eq 0 ]] || failures="${failures} tests"
-
- [[ -z "${failures}" ]] || die "Test failures: ${failures}"
- einfo "Tests successfully completed"
-}
-
-src_install() {
- cmake_src_install
-
- # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
- if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then
- rm "${ED}/usr/include/mysql/server/private/config.h" || die
- fi
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Unless they explicitly specific USE=test, then do not install the
- # testsuite. It DOES have a use to be installed, esp. when you want to do a
- # validation of your database configuration after tuning it.
- if ! use test ; then
- rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mariadb.d"
- cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- if use server ; then
- mycnf_src="my.cnf.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
- eprefixify "${TMPDIR}/my.cnf.ok"
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- einfo "Including support files and sample configurations"
- docinto "support-files"
- local script
- for script in \
- "${S}"/support-files/magic
- do
- [[ -f "$script" ]] && dodoc "${script}"
- done
-
- docinto "scripts"
- for script in "${S}"/scripts/mysql* ; do
- [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
- done
- # Manually install supporting files that conflict with other packages
- # but are needed for galera and initial installation
- exeinto /usr/libexec/mariadb
- doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror"
-
- if use pam ; then
- keepdir /usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir
- fi
- fi
-
- # Conflicting files
- conflicting_files=()
-
- # We prefer my_print_defaults from dev-db/mysql-connector-c
- conflicting_files=( "${ED}/usr/share/man/man1/my_print_defaults.1" )
-
- # Remove bundled mytop in favor of dev-db/mytop
- conflicting_files+=( "${ED}/usr/bin/mytop" )
- conflicting_files+=( "${ED}/usr/share/man/man1/mytop.1" )
-
- local conflicting_file
- for conflicting_file in "${conflicting_files[@]}" ; do
- if [[ -e "${conflicting_file}" ]] ; then
- rm -v "${conflicting_file}" || die
- fi
- done
-
- # Fix a dangling symlink when galera is not built
- if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then
- rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die
- fi
-
- # Remove dangling symlink
- rm "${ED}/usr/$(get_libdir)/libmariadb.a" || die
-
- # Remove broken SST scripts that are incompatible
- local scriptremove
- for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do
- if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then
- rm "${ED}/usr/bin/${scriptremove}" || die
- fi
- done
-}
-
-pkg_preinst() {
- java-pkg-opt-2_pkg_preinst
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- [[ -d "${ROOT}/${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}/${MY_LOGDIR}"
-
- if use server ; then
- if use pam; then
- einfo
- elog "This install includes the PAM authentication plugin."
- elog "To activate and configure the PAM plugin, please read:"
- elog "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
- einfo
- chown mysql:mysql "${EROOT}/usr/$(get_libdir)/mariadb/plugin/auth_pam_tool_dir" || die
- fi
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog "\"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- elog
- elog "If you are switching server implentations, you should run the"
- elog "mysql_upgrade tool."
- einfo
- else
- einfo
- elog "If you are upgrading major versions, you should run the"
- elog "mysql_upgrade tool."
- einfo
- fi
-
- if use galera ; then
- einfo
- elog "Be sure to edit the my.cnf file to activate your cluster settings."
- elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
- elog "The first time the cluster is activated, you should add"
- elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
- elog "This option should then be removed for subsequent starts."
- einfo
- fi
- fi
-
- # Note about configuration change
- einfo
- elog "This version of mariadb reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/${PN}.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-}
-
-pkg_config() {
- _getoptval() {
- local section="${1}"
- local option="--${2}"
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
-
- local values=()
- local parameters=( $(eval "${cmd[@]}" 2>/dev/null) )
- for parameter in "${parameters[@]}"
- do
- # my_print_defaults guarantees output of options, one per line,
- # in the form that they would be specified on the command line.
- # So checking for --option=* should be safe.
- case ${parameter} in
- ${option}=*)
- values+=( "${parameter#*=}" )
- ;;
- esac
- done
-
- if [[ ${#values[@]} -gt 0 ]] ; then
- # Option could have been set multiple times
- # in which case only the last occurrence
- # contains the current value
- echo "${values[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_install_db_binary="${EROOT}/usr/bin/mysql_install_db"
- if [[ ! -x "${mysql_install_db_binary}" ]] ; then
- die "'${mysql_install_db_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- # Only create directory when MYSQL_LOG_BIN is an absolute path
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Only test when MYSQL_LOG_BIN is an absolute path
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- # Only create directory when MYSQL_RELAY_LOG is an absolute path
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Only test when MYSQL_RELAY_LOG is an absolute path
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local SETUP_TMPDIR=$(mktemp -d "/tmp/${PN}-config.XXXXXXXXX" 2>/dev/null)
- [[ -z "${SETUP_TMPDIR}" ]] && die "Failed to create setup tmpdir"
-
- # Limit access
- chmod 0770 "${SETUP_TMPDIR}" || die
- chown ${MYSQL_USER} "${SETUP_TMPDIR}" || die
-
- local mysql_install_log="${SETUP_TMPDIR}/install_db.log"
- local mysqld_logfile="${SETUP_TMPDIR}/mysqld.log"
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ "${MYSQL_LOG_BIN}" == /* ]] ; then
- # Absolute path for binary log files specified
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ "${MYSQL_RELAY_LOG}" == /* ]] ; then
- # Absolute path for relay log files specified
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x${pwd1}" != "x${pwd2}" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="${SETUP_TMPDIR}/tz.sql"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- local cmd=(
- "${mysql_install_db_binary}"
- "${mysqld_options[@]}"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--rpm"
- "--cross-bootstrap"
- "--skip-test-db"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql/user.frm" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- local x=${RANDOM}
- local socket="${PID_DIR}/mysqld.${x}.sock"
- [[ -f "${socket}" ]] && die "Randomness failed; Socket ${socket} already exists!"
- local pidfile="${PID_DIR}/mysqld.${x}.pid"
- [[ -f "${pidfile}" ]] && die "Randomness failed; Pidfile ${pidfile} already exists!"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${SETUP_TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- # Skip SSL for client connections, see bug #951865
- --skip-ssl
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- rm -r "${SETUP_TMPDIR}" || die
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mariadb/mariadb-11.8.3-r5.ebuild b/dev-db/mariadb/mariadb-12.3.3.ebuild
index 49dc1232b1f9..51de5a98e628 100644
--- a/dev-db/mariadb/mariadb-11.8.3-r5.ebuild
+++ b/dev-db/mariadb/mariadb-12.3.3.ebuild
@@ -5,6 +5,7 @@ EAPI=8
SUBSLOT="18"
JAVA_PKG_OPT_USE="jdbc"
+MARIADB_GENTOO_PATCH_VERSION="12.3.3-0"
inherit systemd flag-o-matic prefix toolchain-funcs \
multiprocessing java-pkg-opt-2 cmake pam
@@ -13,7 +14,7 @@ DESCRIPTION="An enhanced, drop-in replacement for MySQL"
HOMEPAGE="https://mariadb.org/"
SRC_URI="
mirror://mariadb/${P}/source/${P}.tar.gz
- https://dev.gentoo.org/~arkamar/distfiles/${PN}-11.4.8-patches-01.tar.xz
+ https://gitweb.gentoo.org/proj/mariadb-patches.git/snapshot/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}.tar.bz2
"
# Shorten the path because the socket path length must be shorter than 107 chars
# and we will run a mysql server during test phase
@@ -110,7 +111,6 @@ RDEPEND="
${COMMON_DEPEND}
!<dev-db/mariadb-$(ver_cut 1-2)
!dev-db/mysql
- !dev-db/percona-server
selinux? ( sec-policy/selinux-mysql )
server? (
columnstore? ( dev-db/mariadb-connector-c )
@@ -211,7 +211,8 @@ src_unpack() {
}
src_prepare() {
- eapply "${WORKDIR}"/mariadb-patches
+ eapply "${WORKDIR}"/${PN}-patches-${MARIADB_GENTOO_PATCH_VERSION}
+
eapply "${FILESDIR}"/${PN}-10.6.12-gcc-13.patch
eapply "${FILESDIR}"/${PN}-wsrep-gcc-15.patch
@@ -348,7 +349,7 @@ src_configure() {
-DWITH_UNITTEST=OFF
-DWITHOUT_CLIENTLIBS=YES
-DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
- -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF
+ -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=$(usex test DYNAMIC OFF)
-DCLIENT_PLUGIN_CLIENT_ED25519=$(usex test DYNAMIC OFF)
-DCLIENT_PLUGIN_DIALOG=$(usex test DYNAMIC OFF)
-DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC
@@ -574,11 +575,17 @@ src_test() {
"innodb_gis.gis;MDEV-25095;Known rounding error with latest AMD processors"
"main.gis;MDEV-25095;Known rounding error with latest AMD processors"
+ # Fails in network-sandbox which contains only "lo" interface
+ "main.mysql_client_test;0;Fails in network-sandbox"
+ "main.mysql_client_test_comp;0;Fails in network-sandbox"
+
# Some tests are unable to retrieve HW address
"spider.*;MDEV-37098;Fails with network sandbox"
# issue introduced in 11.8.2
"main.mysqld--help-aria;MDEV-36668;broken test regex"
+
+ "sys_vars.session_track_system_variables_basic;0;Requires example engine"
)
use latin1 || disabled_tests+=(
diff --git a/dev-db/mysql/Manifest b/dev-db/mysql/Manifest
index 74b48140574e..2e8c3d8ee416 100644
--- a/dev-db/mysql/Manifest
+++ b/dev-db/mysql/Manifest
@@ -1,8 +1,8 @@
DIST mysql-8.0.43-patches-01.tar.xz 8396 BLAKE2B 83c1992ae6f3b58f5c0e07926abb36fd1581f6db5a4e440b62e16f87d99133797c74e889f1a0e99d407ab7882f825b516885599cdb41e4429b405c968c995dbf SHA512 8e1480817f924c6a3db1ac412fe551337cfa134bf2729344fdb811d44ced96c78300ffca0eabc4ddd5e24827ebc1ddeea6c5973fd00ecd4c7fe67fe96d4c0081
DIST mysql-8.4.10.tar.gz 479076067 BLAKE2B 584ce12cf33e1bd16ce5702a410edaf8dcbfef88d6433cd1c391cf8fddcaf86ed432f6abc2d556cbfc6ff081a1a11de1575fd2d222ac3d7219666844e28e8b35 SHA512 0e85b84bee32414959755a1f59c997bc4a7c81fe3a12267a7963cd2c6607ebccfd49ab23c872a429a80e319c65ba92c104f0b4445494e90c4aacab32b6cc6d9e
DIST mysql-8.4.10.tar.gz.asc 833 BLAKE2B fefc45788b71b6a730666223011786777cd529bd900c28b50834700c3eb18387a51f864ff2e00e4430d4cf0d6acfa3625ae493794db364dd48976b6ed237e690 SHA512 ac206858786943bbe32b9f07bd893ae8d5d4a7528039aa0f0f2b17a1cc01a791c9fcadc1ad0626f26951e59b57a87431c6cce91a0496b629b9b10e1a0261b2ee
+DIST mysql-8.4.11.tar.gz 479170675 BLAKE2B 375d48ff6b2911be8e98399cdb202168928adc385fd101819df1bd1f1b704e1127aa7d875c8706e14cb27e8970e796b01ecc5810dda5f0759015857a97a01576 SHA512 56245b74e2ef45dcaaea76ff1db2c62e7ef24f3b05098ebb9785c93a04cdfdca36cc6fa69e0dd35f7be778ebeb46a831afa85647c9e9a9258bfeea7311013669
+DIST mysql-8.4.11.tar.gz.asc 833 BLAKE2B 64e345830da17bffd1c1d4637674f9ebd261adde1b84e6f84f49788c0c3273603d3860581e692f911bf21e175272da21c423387e0131e126873cd7e3d76ce949 SHA512 68d5452a8c83f2051df02516e7c1b0cdcb5c34e228b569b9712e89fbf26518ba0ea4f1e177cf7675fe5f05eeecdc535bff56b57fbe765226f2eb969032b12a84
DIST mysql-8.4.7-patches-01.tar.xz 8268 BLAKE2B 5a580c4295c246ffaad0d2819ab2860d0f762b633611b5c4a9c1cfb4f0a959d20595148108ea04fc9f0a699f46c39939e3c093fa0845d717133807ce8f1c74a6 SHA512 d451c6766b41cc95356e7c7cd45238d18236d9d71225e00b129d30c59463bc5c05f077a9c9d77b605fecb07189dd8502e8a6568cc5b75264e2255ffcd61715e9
-DIST mysql-8.4.9.tar.gz 479076177 BLAKE2B bbb9a65d3ba52b734ed4a7654dcda24584d9da87ba817bd025ec63c76f6728a67d26cb9a3effe362ab94eb2651192c7b698c0f6ca2826c15d1faeabd9e37714b SHA512 bae8aba6ba921f96799063f6c10f9f02030276f802e74a8b80f2df34e56b0d4501a1c9a9f818529cb70ec700a8f11aedf7fa645fa5db8550f51291759e6a25ad
-DIST mysql-8.4.9.tar.gz.asc 833 BLAKE2B 11d9693dc95b7897492022a64a0205c72cd8978b1e62c28019a9f7223d1070442c869028b2075ed5c37a90a87e07cf77b66c7a41b6c37c8b5c6ebb956c60bde9 SHA512 71944c031d4e7b73ec8c1eace4bd51220b42e1528291c3cdf0ceab25fc0b56f198c756af60f340596ef7d9ebb86e7de341eaef49b1124bb520a54221f028943f
DIST mysql-boost-8.0.45.tar.gz 492472802 BLAKE2B cb253e2c69534c54ea6e79095619ebd4ed0b2187bd5e3b5746c5e6f92a08289df17cbb05305a9c23f3f11f2c78042a7e3edf98f33c9e5f35cc85102bfc97d328 SHA512 9ab52da87e9c1570328080b802f8c9ca1bcbb08e489e1d6cc3282b994cfd07099a0cf5eee420faa684e8372aee66495b34b633224dca98cd5caa8f4a93e500a4
DIST mysql-boost-8.0.46.tar.gz 492495969 BLAKE2B d2f1132b3069e3ac42e884a3c02dfbcf7a23083c9559950b117ca83b6ada7159ff92c83a84c4cf09dfc10df7aa56cbe7ae85751aadcf35e9e694a485edb4c2b2 SHA512 b90ee9ad03ddc4732d2942ae4918010a7c398b2080f0e11750df0e61ec07a17bf26ce6aea8806729250b015607e398a8608363ed0830f4f613fafd09dbab7412
diff --git a/dev-db/mysql/mysql-8.0.46.ebuild b/dev-db/mysql/mysql-8.0.46.ebuild
deleted file mode 100644
index f179e12baaa7..000000000000
--- a/dev-db/mysql/mysql-8.0.46.ebuild
+++ /dev/null
@@ -1,1321 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit check-reqs cmake dot-a edo flag-o-matic linux-info multiprocessing prefix toolchain-funcs
-
-MY_PV="${PV//_pre*}"
-MY_P="${PN}-${MY_PV}"
-
-# Patch version
-PATCH_SET=( https://github.com/parona-source/mysql-server/releases/download/mysql-8.0.43-patches-01/mysql-8.0.43-patches-01.tar.xz )
-
-DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
-HOMEPAGE="https://www.mysql.com/"
-# https://dev.mysql.com/downloads/mysql/
-SRC_URI="https://dev.mysql.com/get/Downloads/MySQL-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz"
-# https://downloads.mysql.com/archives/community/
-SRC_URI+=" https://cdn.mysql.com/archives/mysql-$(ver_cut 1-2)/mysql-boost-${MY_PV}.tar.gz"
-SRC_URI+=" ${PATCH_SET[@]}"
-# Shorten the path because the socket path length must be shorter than 107 chars
-# and we will run a mysql server during test phase
-S="${WORKDIR}/mysql"
-
-LICENSE="GPL-2"
-SLOT="8.0"
-# -ppc for bug #761715
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~mips -ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
-IUSE="cjk cracklib debug jemalloc latin1 numa +perl profiling router selinux +server tcmalloc test test-install"
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="
- ?? ( tcmalloc jemalloc )
- cjk? ( server )
- jemalloc? ( server )
- numa? ( server )
- profiling? ( server )
- router? ( server )
- tcmalloc? ( server )
- test? ( server )
- test-install? ( server )
-"
-
-# Be warned, *DEPEND are version-dependent
-# These are used for both runtime and compiletime
-COMMON_DEPEND="
- >=app-arch/lz4-1.9.4:=
- >=app-arch/zstd-1.2.0:=
- >=dev-libs/openssl-1.0.0:=
- net-libs/libtirpc:=
- sys-libs/ncurses:=
- >=virtual/zlib-1.2.13:=
- server? (
- dev-libs/icu:=
- dev-libs/libevent:=[ssl,threads(+)]
- cjk? ( app-text/mecab )
- jemalloc? ( dev-libs/jemalloc:= )
- kernel_linux? (
- dev-libs/libaio
- sys-process/procps
- )
- numa? ( sys-process/numactl )
- tcmalloc? ( dev-util/google-perftools:= )
- )
-"
-
-DEPEND="
- ${COMMON_DEPEND}
- server? ( net-libs/rpcsvc-proto )
-"
-RDEPEND="
- ${COMMON_DEPEND}
- !dev-db/mariadb
- !dev-db/mariadb-galera
- !dev-db/percona-server
- !dev-db/mysql-cluster
- !dev-db/mysql:0
- !dev-db/mysql:5.7
- selinux? ( sec-policy/selinux-mysql )
- !prefix? (
- acct-group/mysql
- acct-user/mysql
- dev-db/mysql-init-scripts
- )
- test-install? (
- app-arch/zip
- dev-lang/perl
- dev-perl/Expect
- dev-perl/JSON
- sys-libs/timezone-data
- )
-"
-# For other stuff to bring us in
-# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
-PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
-
-# https://bugs.gentoo.org/623962
-# tests set TZ for tests leading to failures on musl if sys-libs/timezone-data isnt installed
-BDEPEND="
- app-alternatives/yacc
- virtual/pkgconfig
- test? (
- acct-group/mysql
- acct-user/mysql
- app-arch/zip
- dev-lang/perl
- dev-perl/Expect
- dev-perl/JSON
- sys-libs/timezone-data
- )
-
-"
-
-PATCHES=(
- "${WORKDIR}"/mysql-patches
- # Needed due to bundled boost-1.77, this fix is included in boost-1.81
- "${FILESDIR}"/mysql-8.0.36-boost-clang-fix.patch
- # Needed due to bundled boost-1.77, this fix is included in boost-1.79
- "${FILESDIR}"/mysql-8.0.37-fix-bundled-boost.patch
- # Needed due to bundled abseil-cpp-20230802, this fix is included in abseil-cpp-20240722
- "${FILESDIR}"/mysql-8.0.37-fix-bundled-abseil.patch
-)
-
-mysql_init_vars() {
- : ${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
- : ${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
- : ${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
- : ${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
- MY_DATADIR="${MY_LOCALSTATEDIR}"
-
- export MY_SHAREDSTATEDIR MY_SYSCONFDIR
- export MY_LOCALSTATEDIR MY_LOGDIR
- export MY_DATADIR
-}
-
-pkg_pretend() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- if use server ; then
- CHECKREQS_DISK_BUILD="3G"
-
- if has test ${FEATURES} ; then
- CHECKREQS_DISK_BUILD="10G"
-
- if use elibc_musl; then
- # <parona@protonmail.com> i've seen it take 17GB on musl with FEATURES="test" USE="perl server"
- CHECKREQS_DISK_BUILD="18G"
- fi
- fi
-
- check-reqs_pkg_pretend
- fi
- fi
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] ; then
- CHECKREQS_DISK_BUILD="3G"
-
- if has test ${FEATURES} ; then
- CHECKREQS_DISK_BUILD="10G"
-
- if use elibc_musl; then
- # <parona@protonmail.com> i've seen it take 17GB on musl with FEATURES="test" USE="perl server"
- CHECKREQS_DISK_BUILD="18G"
- fi
-
- # Bug #213475 - MySQL _will_ object strenuously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if ! has userpriv ${FEATURES} ; then
- die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
- fi
-
- local aio_max_nr=$(sysctl -n fs.aio-max-nr 2>/dev/null)
- if [[ -z "${aio_max_nr}" || ${aio_max_nr} -lt 250000 ]] ; then
- die "FEATURES=test will require fs.aio-max-nr=250000 at minimum!"
- fi
-
- if use latin1 ; then
- # Upstream only supports tests with default charset
- die "Testing with USE=latin1 is not supported."
- fi
- fi
-
- if use kernel_linux && use numa ; then
- linux-info_get_any_version
-
- local CONFIG_CHECK="~NUMA"
-
- local WARNING_NUMA="\
-This package expects NUMA support in kernel which this system does not have at the moment; \
-Either expect runtime errors, enable NUMA support in kernel or rebuild the package without NUMA support"
-
- check_extra_config
- fi
-
- use server && check-reqs_pkg_setup
- fi
-}
-
-src_unpack() {
- unpack ${A}
-
- mv -f "${WORKDIR}/${MY_P}" "${S}" || die
-}
-
-src_prepare() {
- # Avoid rpm call which would trigger sandbox, #692368
- sed -i \
- -e 's/MY_RPM rpm/MY_RPM rpmNONEXISTENT/' \
- CMakeLists.txt || die
-
- # Remove the centos and rhel selinux policies to support mysqld_safe under SELinux
- if [[ -d "${S}/support-files/SELinux" ]] ; then
- echo > "${S}/support-files/SELinux/CMakeLists.txt" || die
- fi
-
- # Remove man pages for client-lib tools we don't install
- rm \
- man/my_print_defaults.1 \
- man/perror.1 \
- man/zlib_decompress.1 \
- || die
-
- cmake_src_prepare
-}
-
-src_configure() {
- # Bug #114895, bug #110149
- filter-flags "-O" "-O[01]"
-
- # Code requires C++17 due to https://github.com/mysql/mysql-server/commit/236ab55bedd8c9eacd80766d85edde2a8afacd08
- append-cxxflags -std=c++17
-
- # Debug build type used extensively to add preprocessor definitions
- use debug && CMAKE_BUILD_TYPE="Debug"
-
- lto-guarantee-fat
-
- local mycmakeargs=(
- -Wno-dev # less noise
-
- # Building everything as shared breaks upstream assumptions.
- # For example bundled abseil is excpected to be static and is therefore not installed.
- # Breaking the assumption leading the mysql to being built against bundled abseil,
- # but then dynamically linked against system abseil once installed.
- -DBUILD_SHARED_LIBS=OFF
-
- -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql"
- -DSYSCONFDIR="${EPREFIX}/etc/mysql"
-
- -DINSTALL_BINDIR=bin
- -DINSTALL_DOCDIR=share/doc/${PF}
- -DINSTALL_DOCREADMEDIR=share/doc/${PF}
- -DINSTALL_INCLUDEDIR=include/mysql
- -DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=$(get_libdir)
- -DINSTALL_MANDIR=share/man
- -DINSTALL_PRIV_LIBDIR=$(get_libdir)/mysql/private
- -DINSTALL_MYSQLSHAREDIR=share/mysql
- -DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin
- -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql"
- -DINSTALL_SBINDIR=sbin
- -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mysql"
-
- -DROUTER_INSTALL_PLUGINDIR="$(get_libdir)/mysqlrouter"
- -DROUTER_INSTALL_LIBDIR="$(get_libdir)/mysqlrouter/private"
- -DROUTER_INSTALL_LOGROTATEDIR="${EPREFIX}/etc/logrotate.d"
- -DROUTER_INSTALL_DOCDIR="share/doc/${PF}"
-
- -DCOMPILATION_COMMENT="Gentoo Linux ${PF}"
- -DWITH_UNIT_TESTS=$(usex test ON OFF)
-
- # Enables -Werror
- -DMYSQL_MAINTAINER_MODE=OFF
-
- # debug hack wrt #497532
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG' )"
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usev !debug '-DNDEBUG' )"
-
- # Automagically uses LLD when not using LTO (bug #710272, #775845)
- -DUSE_LD_LLD=OFF
-
- # Causes issues on musl bug #922808
- -DWITH_BUILD_ID=OFF
-
- # These are installed via dev-db/mysql-connector-c
- -DWITHOUT_CLIENTLIBS=YES
-
- # Using bundled editline to get CTRL+C working
- -DWITH_EDITLINE=bundled
- -DWITH_ZLIB=system
- -DWITH_SSL=system
- -DWITH_LIBWRAP=0
- -DENABLED_LOCAL_INFILE=1
- -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock"
- -DWITH_DEFAULT_COMPILER_OPTIONS=0
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-
- -DWITH_CURL=system
- -DWITH_BOOST="${S}/boost"
- -DWITH_ROUTER=$(usex router ON OFF)
-
- -DWITH_ICU=system
- -DWITH_LZ4=system
- # Our dev-libs/rapidjson doesn't carry necessary fixes for std::regex
- -DWITH_RAPIDJSON=bundled
- -DWITH_ZSTD=system
-
- # This is the expected location for upstream RPM's and the script will search for location relative to it.
- # Other locations will not work.
- -DINSTALL_MYSQLTESTDIR=$(usex test-install 'share/mysql-test' 0)
- )
-
- if tc-is-lto ; then
- mycmakeargs+=( -DWITH_LTO=ON )
- else
- mycmakeargs+=( -DWITH_LTO=OFF )
- fi
-
- if [[ -n "${MYSQL_DEFAULT_CHARSET}" && -n "${MYSQL_DEFAULT_COLLATION}" ]] ; then
- ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
- ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
- ewarn "You MUST file bugs without these variables set."
- ewarn "Tests will probably fail!"
-
- mycmakeargs+=(
- -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
- -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
- )
- elif use latin1 ; then
- mycmakeargs+=(
- -DDEFAULT_CHARSET=latin1
- -DDEFAULT_COLLATION=latin1_swedish_ci
- )
- else
- mycmakeargs+=(
- -DDEFAULT_CHARSET=utf8mb4
- -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci
- )
- fi
-
- if use server ; then
- mycmakeargs+=(
- -DWITH_EXTRA_CHARSETS=all
- -DWITH_DEBUG=$(usex debug)
- -DWITH_MECAB=$(usex cjk system OFF)
- -DWITH_LIBEVENT=system
- # Cannot handle protobuf >23 bug #912797
- # 05/06/2024: protobuf has been updated,
- # but it cannot handle abseil when building against system
- # Currently bundles protobuf-25.1
- -DWITH_PROTOBUF=bundled
- -DWITH_NUMA=$(usex numa ON OFF)
- )
-
- if use jemalloc ; then
- mycmakeargs+=( -DWITH_JEMALLOC=ON )
- elif use tcmalloc ; then
- mycmakeargs+=( -DWITH_TCMALLOC=ON )
- fi
-
- if use profiling ; then
- # Setting to OFF doesn't work: Once set, profiling options will be added
- # to `mysqld --help` output via sql/sys_vars.cc causing
- # "main.mysqld--help-notwin" test to fail
- mycmakeargs+=( -DENABLED_PROFILING=ON )
- fi
-
- # Storage engines
- mycmakeargs+=(
- -DWITH_EXAMPLE_STORAGE_ENGINE=0
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_CSV_STORAGE_ENGINE=1
- -DWITH_FEDERATED_STORAGE_ENGINE=1
- -DWITH_HEAP_STORAGE_ENGINE=1
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_INNODB_MEMCACHED=0
- -DWITH_MYISAMMRG_STORAGE_ENGINE=1
- -DWITH_MYISAM_STORAGE_ENGINE=1
- )
- else
- mycmakeargs+=(
- -DWITHOUT_SERVER=1
- -DWITH_SYSTEMD=no
- )
- fi
-
- cmake_src_configure
-}
-
-# Official test instructions:
-# ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' \
-# ebuild mysql-X.X.XX.ebuild digest clean test install
-src_test() {
- _disable_test() {
- local rawtestname bug reason
- rawtestname="${1}" ; shift
- bug="${1}" ; shift
- reason="${@}"
-
- ewarn "test '${rawtestname}' disabled: '${reason}' (BUG#${bug})"
- echo "${rawtestname} : BUG#${bug} ${reason}" >> "${T}/disabled.def"
- }
-
- local TESTDIR="${BUILD_DIR}/mysql-test"
- local retstatus_tests
-
- einfo "Official test instructions:"
- einfo "ulimit -n 16500 && USE='perl server' FEATURES='test userpriv' ebuild ..."
-
- # Ensure that parallel runs don't die
- local -x MTR_BUILD_THREAD="$((${RANDOM} % 100))"
-
- # Use a tmpfs opportunistically, otherwise set MTR_PARALLEL to 1.
- # MySQL tests are I/O heavy. They benefit greatly from a tmpfs, parallel tests without a tmpfs are flaky due to timeouts.
- if mountpoint -q /dev/shm ; then
- local VARDIR="/dev/shm/mysql-var-${MTR_BUILD_THREAD}"
- local -x MTR_PARALLEL=${MTR_PARALLEL:-$(makeopts_jobs)}
- else
- ewarn "/dev/shm not mounted, setting default MTR_PARALLEL to 1. Tests will take a long time"
- local VARDIR="${T}/vardir"
- # Set it to one while allowing users to override it.
- local -x MTR_PARALLEL=${MTR_PARALLEL:-1}
- fi
- einfo "MTR_PARALLEL is set to '${MTR_PARALLEL}'"
-
- # Disable unit tests, run them separately with eclass defaults
- local -x MTR_UNIT_TESTS=0
-
- # Increase test timeouts
- # bug #923649
- # https://github.com/gentoo/gentoo/pull/35002#issuecomment-1926101030
- local -x MTR_SUITE_TIMEOUT=$(( 60 * 40 )) # minutes
- local -x MTR_TESTCASE_TIMEOUT=60 # minutes
-
- # Include config for tests, this is for scenarios where mysql wasn't installed previously or if the
- # configuration was from an older version.
- sed \
- -e "s/@GENTOO_PORTAGE_EPREFIX@/${EPREFIX}/" \
- -e "s/@DATADIR@/${MY_DATADIR}/" \
- "${FILESDIR}"/my.cnf-8.0.distro-client \
- "${FILESDIR}"/my.cnf-8.0.distro-server \
- > "${T}"/my.cnf || die
- local -x PATH_CONFIG_FILE="${T}/my.cnf"
-
- # Create directories because mysqladmin might run out of order
- mkdir -p "${T}"/var-tests{,/log} || die
-
- # Run mysql tests
- pushd "${TESTDIR}" &>/dev/null || die
-
- touch "${T}/disabled.def" || die
-
- local -a disabled_tests=(
- "auth_sec.atomic_rename_user;103512;Depends on user running test"
- "auth_sec.keyring_file_data_qa;0;Won't work with user privileges"
- "auth_sec.openssl_without_fips;94718;Known test failure"
-
- "gis.geometry_class_attri_prop;5452;Known rounding error with latest AMD processors (PS)"
- "gis.geometry_property_function_issimple;5452;Known rounding error with latest AMD processors (PS)"
- "gis.gis_bugs_crashes;5452;Known rounding error with latest AMD processors (PS)"
- "gis.spatial_analysis_functions_buffer;5452;Known rounding error with latest AMD processors (PS)"
- "gis.spatial_analysis_functions_centroid;5452;Known rounding error with latest AMD processors (PS)"
- "gis.spatial_analysis_functions_distance;5452;Known rounding error with latest AMD processors (PS)"
- "gis.spatial_op_testingfunc_mix;5452;Known rounding error with latest AMD processors (PS)"
- "gis.spatial_operators_intersection;5452;Known rounding error with latest AMD processors (PS)"
- "gis.spatial_utility_function_distance_sphere;5452;Known rounding error with latest AMD processors (PS)"
- "gis.spatial_utility_function_simplify;5452;Known rounding error with latest AMD processors (PS)"
- "gis.st_symdifference;5452;Known rounding error with latest AMD processors (PS)"
-
- "main.derived_limit;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.explain_tree;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.gis-precise;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.mysql_load_data_local_dir;0;Known test failure -- no upstream bug yet"
- "main.select_icp_mrr;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_bugs;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_dupsweed;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_dupsweed_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_dupsweed_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_firstmatch;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_firstmatch_bka;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_firstmatch_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_mat_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.subquery_sj_all_bka_nobnl;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.window_std_var;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.window_std_var_optimized;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "main.with_recursive;0;Known rounding error with latest AMD processors -- no upstream bug yet"
- "perfschema.statement_digest_query_sample;0;Test will fail on slow hardware"
-
- "rpl.rpl_innodb_info_tbl_slave_tmp_tbl_mismatch;0;Unstable test"
- "rpl_gtid.rpl_multi_source_mtr_includes;97844;Unstable test"
- "main.partition_datatype;0;Unstable test"
- "innodb_undo.truncate_xa;0;Unstable test"
- "rpl.rpl_json;0;Unstable test"
-
- "sys_vars.myisam_data_pointer_size_func;87935;Test will fail on slow hardware"
-
- "sys_vars.build_id_basic;0;Requires -DWITH_BUILD_ID=ON"
-
- "main.keyring_migration_password;0;Known test failure -- no upstream bug yet"
- "innodb.upgrade_orphan;0;Known test failure -- no upstream bug yet"
- )
-
- if ! hash zip 1>/dev/null 2>&1 ; then
- # No need to force dep app-arch/zip for one test
- disabled_tests+=(
- "innodb.discarded_partition_create;0;Requires app-arch/zip"
- "innodb.partition_upgrade_create;0;Requires app-arch/zip"
- )
- fi
-
- if has_version ">=dev-libs/openssl-3.2" ; then
- # https://bugs.mysql.com/bug.php?id=113258
- # Fails still with 8.0.41
- disabled_tests+=(
- "rpl.rpl_tlsv13;0;CCM8 ciphers have a lower security level with OpenSSL 3.2"
- "auth_sec.wl15800_ciphers_tlsv13;0;CCM8 ciphers have a lower security level with OpenSSL 3.2"
- )
- fi
-
- if use debug; then
- disabled_tests+=(
- "innodb.dblwr_unencrypt;0;Unstable test"
- )
- fi
-
- local test_infos_str test_infos_arr
- for test_infos_str in "${disabled_tests[@]}" ; do
- IFS=';' read -r -a test_infos_arr <<< "${test_infos_str}"
-
- if [[ ${#test_infos_arr[@]} != 3 ]] ; then
- die "Invalid test data set, not matching format: ${test_infos_str}"
- fi
-
- _disable_test "${test_infos_arr[0]}" "${test_infos_arr[1]}" "${test_infos_arr[2]}"
- done
- unset test_infos_str test_infos_arr
-
- local -a CMAKE_SKIP_TESTS=(
- # timing test, can be unreliable
- "routertest_harness_net_ts_timer"
-
- # Could not get local host address: Name or service not known(errno: -2)
- "routertest_component_bootstrap"
- "routertest_component_bootstrap_account"
- "routertest_component_bootstrap_clusterset"
- "routertest_component_config_overwrites"
- "routertest_component_rest_api_enable"
- "routertest_component_routing"
- "routertest_component_sd_notify"
- "routertest_component_state_file"
- "routertest_integration_routing_direct"
- "routertest_integration_routing_reuse"
- "routertest_integration_routing_sharing"
- "routertest_integration_routing_sharing_constrained_pools"
- "routertest_integration_routing_sharing_restart"
-
- # TODO: ???
- "pfs_host-oom"
- "pfs_user-oom"
- "pfs"
- )
-
- # Try to increase file limits to increase test coverage
- if ! ulimit -n 16500 1>/dev/null 2>&1 ; then
- # Upper limit comes from parts.partition_* tests
- ewarn "For maximum test coverage, please raise open file limit to 16500 (ulimit -n 16500) before calling the package manager."
-
- if ! ulimit -n 4162 1>/dev/null 2>&1 ; then
- # Medium limit comes from
- # '[Warning] Buffered warning: Could not increase number of max_open_files to more than 3000 (request: 4162)'
- ewarn "For medium test coverage please raise open file limit to 4162 (ulimit -n 4162) before calling the package manager."
-
- if ! ulimit -n 3000 1>/dev/null 2>&1 ; then
- ewarn "For minimum test coverage, please raise open file limit to 3000 (ulimit -n 3000) before calling the package manager."
- else
- einfo "Will run test suite with open file limit set to 3000 (minimum test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 4162 (medium test coverage)."
- fi
- else
- einfo "Will run test suite with open file limit set to 16500 (best test coverage)."
- fi
-
- local test_failures=()
-
- # bug #823656
- nonfatal cmake_src_test --test-command "--gtest_death_test_style=threadsafe"
- if [[ $? -ne 0 ]]; then
- test_failures+=( cmake_src_test )
- fi
-
- # run mysql-test tests
- # Enable force restart to ensure success when tests don't cleanup sufficiently.
- # Anything touching gtid_executed is negatively affected if you have unlucky ordering
- nonfatal edo perl mysql-test-run.pl \
- --force --force-restart \
- --vardir="${VARDIR}" --tmpdir="${T}/tmp-tests" \
- --skip-test=tokudb --skip-test-list="${T}/disabled.def" \
- --max-test-fail=0 \
- --retry=3 --retry-failure=2 \
- --report-unstable-tests \
- --report-features
- if [[ $? -ne 0 ]]; then
- test_failures+=( mysql-test-run.pl )
-
- eerror "Tests failed. When you file a bug, please attach the following items:"
- eerror "The file that is created with this command:"
- eerror "\t'find ${T}/var-tests -name '*.log' | tar -caf mysql-test-logs.tar.xz --files-from -'"
- fi
-
- if [[ "${VARDIR}" != "${T}/var-tests" ]]; then
- # Move vardir to tempdir.
- mv "${VARDIR}" "${T}/var-tests"
- # Clean up mysql temporary directory
- rm -rf "${VARDIR}" 2>/dev/null
- fi
-
- popd &>/dev/null || die
-
- # Cleanup is important for these testcases.
- pkill -9 -f "${S}/ndb" 2>/dev/null
- pkill -9 -f "${S}/sql" 2>/dev/null
-
- if [[ ${#test_failures} -eq 0 ]]; then
- einfo "Tests successfully completed"
- else
- die "Test failures: ${test_failures[@]}"
- fi
-}
-
-src_install() {
- strip-lto-bytecode
- cmake_src_install
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Convenience links
- einfo "Making Convenience links for mysqlcheck multi-call binary"
- dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
- dosym "mysqlcheck" "/usr/bin/mysqlrepair"
- dosym "mysqlcheck" "/usr/bin/mysqloptimize"
-
- # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
- if [[ -d "${ED}/usr/data" ]] ; then
- rm -Rf "${ED}/usr/data" || die
- fi
-
- # Configuration stuff
- einfo "Building default configuration ..."
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}"
- [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf
- cp "${FILESDIR}/my.cnf-5.7" "${TMPDIR}/my.cnf" || die
- eprefixify "${TMPDIR}/my.cnf"
- doins "${TMPDIR}/my.cnf"
- insinto "${MY_SYSCONFDIR#"${EPREFIX}"}/mysql.d"
- cp "${FILESDIR}/my.cnf-8.0.distro-client" "${TMPDIR}/50-distro-client.cnf" || die
- eprefixify "${TMPDIR}/50-distro-client.cnf"
- doins "${TMPDIR}/50-distro-client.cnf"
-
- mycnf_src="my.cnf-8.0.distro-server"
- sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
- "${FILESDIR}/${mycnf_src}" \
- > "${TMPDIR}/my.cnf.ok" || die
-
- if use prefix ; then
- sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \
- "${TMPDIR}/my.cnf.ok" || die
- fi
-
- if use latin1 ; then
- sed -i \
- -e "/character-set/s|utf8mb4|latin1|g" \
- "${TMPDIR}/my.cnf.ok" || die
- fi
-
- eprefixify "${TMPDIR}/my.cnf.ok"
-
- newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf
-
- #Remove mytop if perl is not selected
- [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop"
-
- if use router ; then
- rm -rf \
- "${ED}/usr/LICENSE.router" \
- "${ED}/usr/README.router" \
- "${ED}/usr/run" \
- "${ED}/usr/var" \
- || die
- fi
-
- # Kill old libmysqclient_r symlinks if they exist. Time to fix what depends on them.
- find "${D}" -name 'libmysqlclient_r.*' -type l -delete || die
-}
-
-pkg_postinst() {
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Create log directory securely if it does not exist
- # NOTE: $MY_LOGDIR contains $EPREFIX by default
- [[ -d "${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${MY_LOGDIR}"
-
- # Note about configuration change
- einfo
- elog "This version of ${PN} reorganizes the configuration from a single my.cnf"
- elog "to several files in /etc/mysql/mysql.d."
- elog "Please backup any changes you made to /etc/mysql/my.cnf"
- elog "and add them as a new file under /etc/mysql/mysql.d with a .cnf extension."
- elog "You may have as many files as needed and they are read alphabetically."
- elog "Be sure the options have the appropriate section headers, i.e. [mysqld]."
- einfo
-
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- einfo
- elog "You might want to run:"
- elog " \"emerge --config =${CATEGORY}/${PF}\""
- elog "if this is a new install."
- einfo
- else
- einfo
- elog "Upgrade process for ${PN}-8.x has changed. Please read"
- elog "https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html"
- einfo
- fi
-}
-
-pkg_config() {
- _getoptval() {
- local section="$1"
- local flag="--${2}="
- local extra_options="${3}"
- local cmd=(
- "${my_print_defaults_binary}"
- "${extra_options}"
- "${section}"
- )
- local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") )
-
- if [[ ${#results[@]} -gt 0 ]] ; then
- # When option is set multiple times only return last value
- echo "${results[-1]}"
- fi
- }
-
- _mktemp_dry() {
- # emktemp has no --dry-run option
- local template="${1}"
-
- if [[ -z "${template}" ]] ; then
- if [[ -z "${T}" ]] ; then
- template="/tmp/XXXXXXX"
- else
- template="${T}/XXXXXXX"
- fi
- fi
-
- local template_wo_X=${template//X/}
- local n_X
- let n_X=${#template}-${#template_wo_X}
- if [[ ${n_X} -lt 3 ]] ; then
- echo "${FUNCNAME[0]}: too few X's in template '${template}'" >&2
- return
- fi
-
- local attempts=0
- local character tmpfile
- while [[ true ]] ; do
- let attempts=attempts+1
-
- new_file=
- while read -n1 character ; do
- if [[ "${character}" == "X" ]] ; then
- tmpfile+="${RANDOM:0:1}"
- else
- tmpfile+="${character}"
- fi
- done < <(echo -n "${template}")
-
- if [[ ! -f "${tmpfile}" ]]
- then
- echo "${tmpfile}"
- return
- fi
-
- if [[ ${attempts} -ge 100 ]] ; then
- echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
- return
- fi
- done
- }
-
- local mysqld_binary="${EROOT}/usr/sbin/mysqld"
- if [[ ! -x "${mysqld_binary}" ]] ; then
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local mysql_binary="${EROOT}/usr/bin/mysql"
- if [[ ! -x "${mysql_binary}" ]] ; then
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!"
- fi
-
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults"
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
- fi
-
- if [[ -z "${MYSQL_USER}" ]] ; then
- MYSQL_USER=mysql
- if use prefix ; then
- MYSQL_USER=$(id -u -n 2>/dev/null)
- if [[ -z "${MYSQL_USER}" ]] ; then
- die "Failed to determine current username!"
- fi
- fi
- fi
-
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- MYSQL_GROUP=mysql
- if use prefix ; then
- MYSQL_GROUP=$(id -g -n 2>/dev/null)
- if [[ -z "${MYSQL_GROUP}" ]] ; then
- die "Failed to determine current user groupname!"
- fi
- fi
- fi
-
- # my_print_defaults needs to read stuff in $HOME/.my.cnf
- local -x HOME="${EROOT}/root"
-
- # Make sure the vars are correctly initialized
- mysql_init_vars
-
- # Read currently set data directory
- MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
-
- # Bug #213475 - MySQL _will_ object strenously if your machine is named
- # localhost. Also causes weird failures.
- [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
-
- if [[ -z "${MY_DATADIR}" ]] ; then
- die "Sorry, unable to find MY_DATADIR!"
- elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
- ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
- ewarn "Please rename or delete its content if you wish to initialize a new data directory."
- die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
- fi
-
- MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_TMPDIR=${MYSQL_TMPDIR%/}
- # These are dir+prefix
- MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
- MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
- MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
-
- # Create missing directories.
- # Always check if mysql user can write to directory even if we just
- # created directory because a parent directory might be not
- # accessible for that user.
- PID_DIR="${EROOT}/run/mysqld"
- if [[ ! -d "${PID_DIR}" ]] ; then
- einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
- install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
- || die "Failed to create PID directory '${PID_DIR}'!"
- fi
-
- local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_pid_dir_testfile}" ]] \
- && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_pid_dir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
- else
- rm "${_pid_dir_testfile}" || die
- unset _pid_dir_testfile
- fi
-
- if [[ ! -d "${MY_DATADIR}" ]] ; then
- einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
- || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
- fi
-
- local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_datadir_testfile}" ]] \
- && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_datadir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
- else
- rm "${_my_datadir_testfile}" || die
- unset _my_datadir_testfile
- fi
-
- if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
- einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
- || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
- fi
-
- if [[ -z "${MYSQL_TMPDIR}" ]] ; then
- MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")"
- [[ -z "${MYSQL_TMPDIR}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
-
- mkdir "${MYSQL_TMPDIR}" || die
- chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
- fi
-
- # Now we need to test MYSQL_TMPDIR...
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_tmpdir_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_tmpdir_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!"
- else
- rm "${_my_tmpdir_testfile}" || die
- unset _my_tmpdir_testfile
- fi
-
- if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then
- einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
- || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
- fi
-
- if [[ -n "${MYSQL_LOG_BIN}" ]] ; then
- local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_logbin_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_logbin_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
- else
- rm "${_my_logbin_testfile}" || die
- unset _my_logbin_testfile
- fi
- fi
-
- if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
- einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
- install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
- || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
- fi
-
- if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then
- local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
- [[ -z "${_my_relaylog_testfile}" ]] \
- && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
-
- if use prefix ; then
- touch "${_my_relaylog_testfile}" &>/dev/null
- else
- su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
- fi
-
- if [[ $? -ne 0 ]] ; then
- die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
- else
- rm "${_my_relaylog_testfile}" || die
- unset _my_relaylog_testfile
- fi
- fi
-
- local mysql_install_log="$(_mktemp_dry "${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log")"
- if [[ -z "${mysql_install_log}" ]] ; then
- die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log' failed!"
- else
- # make sure file is writable for MYSQL_USER...
- touch "${mysql_install_log}" || die
- chown ${MYSQL_USER} "${mysql_install_log}" || die
- fi
-
- local mysqld_logfile="$(_mktemp_dry "${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log")"
- if [[ -z "${mysqld_logfile}" ]] ; then
- die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log' failed!"
- else
- # make sure file is writable for MYSQL_USER...
- touch "${mysqld_logfile}" || die
- chown ${MYSQL_USER} "${mysqld_logfile}" || die
- fi
-
- echo ""
- einfo "Detected settings:"
- einfo "=================="
- einfo "MySQL User:\t\t\t\t${MYSQL_USER}"
- einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}"
- einfo "MySQL DATA directory:\t\t${MY_DATADIR}"
- einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}"
-
- if [[ -n "${MYSQL_LOG_BIN}" ]] ; then
- einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}"
- fi
-
- if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then
- einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}"
- fi
-
- einfo "PID DIR:\t\t\t\t${PID_DIR}"
- einfo "Install db log:\t\t\t${mysql_install_log}"
- einfo "Install server log:\t\t\t${mysqld_logfile}"
-
- local -a config_files
-
- local config_file="${EROOT}/etc/mysql/mysql.d/50-distro-client.cnf"
- if [[ -f "${config_file}" ]] ; then
- config_files+=( "${config_file}" )
- else
- ewarn "Client configuration '${config_file}' not found."
- ewarn "Skipping configuration of default authentication plugin for client ..."
- fi
-
- config_file="${EROOT}/etc/mysql/mysql.d/50-distro-server.cnf"
- if [[ -f "${config_file}" ]] ; then
- config_files+=( "${config_file}" )
- else
- ewarn "Server configuration '${config_file}' not found"
- ewarn "Skipping configuration of default authentication plugin for mysqld ..."
- fi
-
- if [[ ${#config_files[@]} -gt 0 ]] ; then
- if [[ -z "${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" ]] ; then
- local user_answer
-
- echo
- einfo "Please select default authentication plugin (enter number or plugin name):"
- einfo "1) caching_sha2_password [MySQL 8.0 default]"
- einfo "2) mysql_native_password [MySQL 5.7 default]"
- einfo
- einfo "For details see:"
- einfo "https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password"
- read -p " >" user_answer
- echo
-
- case "${user_answer}" in
- 1|caching_sha2_password)
- MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=caching_sha2_password
- ;;
- 2|mysql_native_password)
- MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password
- ;;
- '')
- die "No authentication plugin selected!"
- ;;
- *)
- die "Authentication plugin '${user_answer}' is unknown/unsupported!"
- ;;
- esac
-
- echo "Selected authentication plugin: ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" >> "${mysql_install_log}"
-
- unset user_answer
- fi
-
- local cfg_option cfg_option_tabs cfg_section
- for config_file in "${config_files[@]}" ; do
- cfg_option="default-authentication-plugin"
- cfg_section="mysqld"
- cfg_option_tabs="\t\t"
- if [[ "${config_file}" == *client.cnf ]] ; then
- cfg_option="default-auth"
- cfg_section="client"
- cfg_option_tabs="\t\t\t\t"
- fi
-
- if grep -qE "^(loose-)?${cfg_option}\b.*=" "${config_file}" 2>/dev/null ; then
- einfo "Ensuring that ${cfg_option} is set to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..."
- sed -i \
- -e "s/^\(loose-\)\?${cfg_option}\b.*=.*/loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}/" \
- "${config_file}" || die "Failed to change ${cfg_option} in '${config_file}'!"
- else
- einfo "Setting ${cfg_option} to '${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}' in '${config_file}' ..."
- sed -i \
- -e "/^\[${cfg_section}\]$/a loose-${cfg_option}${cfg_option_tabs}= ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" \
- "${config_file}" || die "Failed to add ${cfg_option} to '${config_file}'!"
- fi
- done
- unset cfg_option cfg_option_tabs cfg_section
- fi
- unset config_files config_file
-
- echo
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local tmp_mysqld_password_source=
-
- for tmp_mysqld_password_source in mysql client ; do
- einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
- if [[ -n "${MYSQL_ROOT_PASSWORD}" ]] ; then
- if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]] ; then
- ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character!"
- ewarn "(Do you have multiple password options set?)"
- MYSQL_ROOT_PASSWORD=
- continue
- fi
-
- einfo "Found password in '${tmp_mysqld_password_source}' section!"
- break
- fi
- done
-
- # Sometimes --show is required to display passwords in some implementations of my_print_defaults
- if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]] ; then
- MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
- fi
-
- unset tmp_mysqld_password_source
- fi
-
- if [[ -z "${MYSQL_ROOT_PASSWORD}" ]] ; then
- local pwd1="a"
- local pwd2="b"
-
- echo
- einfo "No password for mysql 'root' user was specified via environment"
- einfo "variable MYSQL_ROOT_PASSWORD and no password was found in config"
- einfo "file like '${HOME}/.my.cnf'."
- einfo "To continue please provide a password for the mysql 'root' user"
- einfo "now on console:"
- ewarn "NOTE: Please avoid [\"'\\_%] characters in the password!"
- read -rsp " >" pwd1 ; echo
-
- einfo "Retype the password"
- read -rsp " >" pwd2 ; echo
-
- if [[ "x$pwd1" != "x$pwd2" ]] ; then
- die "Passwords are not the same!"
- fi
-
- MYSQL_ROOT_PASSWORD="${pwd1}"
- unset pwd1 pwd2
-
- echo
- fi
-
- local -a mysqld_options
-
- # Fix bug 446200. Don't reference host my.cnf, needs to come first,
- # see http://bugs.mysql.com/bug.php?id=31312
- use prefix && mysqld_options+=( "--defaults-file='${MY_SYSCONFDIR}/my.cnf'" )
-
- # Figure out which options we need to disable to do the setup
- local helpfile="${TMPDIR}/mysqld-help"
- "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
-
- local opt optexp optfull
- for opt in host-cache name-resolve networking slave-start \
- federated ssl log-bin relay-log slow-query-log external-locking \
- log-slave-updates \
- ; do
- optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
- grep -E -sq -- "${optexp}" "${helpfile}" && mysqld_options+=( "${optfull}" )
- done
-
- # Prepare timezones, see
- # https://dev.mysql.com/doc/mysql/en/time-zone-support.html
- local tz_sql="$(_mktemp_dry "${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql")"
- [[ -z "${tz_sql}" ]] \
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql' failed!"
-
- echo "USE mysql;" >"${tz_sql}"
- "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null
- if [[ $? -ne 0 ]] ; then
- die "mysql_tzinfo_to_sql failed!"
- fi
-
- # --initialize-insecure will not set root password
- # --initialize would set a random one in the log which we don't need as we set it ourselves
- local cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--initialize-insecure"
- "--init-file='${tz_sql}'"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- "--log-error='${mysql_install_log}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Initializing ${PN} data directory: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
-
- if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql.ibd" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
- die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
- fi
-
- rm "${tz_sql}" || die
-
- local x=${RANDOM}
- local socket="${EROOT}${PID_DIR}/mysqld${x}.sock"
- local pidfile="${EROOT}${PID_DIR}/mysqld${x}.pid"
- unset x
-
- cmd=(
- "${mysqld_binary}"
- "${mysqld_options[@]}"
- "--basedir='${EROOT}/usr'"
- "--datadir='${MY_DATADIR}'"
- "--tmpdir='${MYSQL_TMPDIR}'"
- --max_allowed_packet=8M
- --net_buffer_length=16K
- "--socket='${socket}'"
- "--pid-file='${pidfile}'"
- "--log-error='${mysqld_logfile}'"
- "--user=${MYSQL_USER}"
- )
-
- einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
- eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
-
- echo -n "Waiting for mysqld to accept connections "
- local maxtry=15
- while [[ ! -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- if [[ -S "${socket}" ]] ; then
- # Even with a socket we don't know if mysqld will abort
- # start due to an error so just wait a little bit more...
- maxtry=5
- while [[ -S "${socket}" && "${maxtry}" -gt 1 ]] ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
- fi
-
- echo
-
- if [[ ! -S "${socket}" ]] ; then
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
- die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
- fi
-
- local mysql_logfile="${TMPDIR}/set_root_pw.log"
- touch "${mysql_logfile}" || die
-
- ebegin "Setting root password"
- # Do this from memory, as we don't want clear text passwords in temp files
- local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'"
- cmd=(
- "${mysql_binary}"
- --no-defaults
- "--socket='${socket}'"
- -hlocalhost
- "-e \"${sql}\""
- )
- eval "${cmd[@]}" >"${mysql_logfile}" 2>&1
- local rc=$?
- eend ${rc}
-
- if [[ ${rc} -ne 0 ]] ; then
- # Poor man's solution which tries to avoid having password
- # in log. NOTE: sed can fail if user didn't follow advice
- # and included character which will require escaping...
- sed -i -e "s/${MYSQL_ROOT_PASSWORD}/*****/" "${mysql_logfile}" 2>/dev/null
-
- grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_logfile}"
- die "Failed to set ${PN} root password. Please review '${mysql_logfile}'!"
- fi
-
- # Stop the server
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- echo -n "Stopping the server "
- pkill -F "${pidfile}" &>/dev/null
-
- maxtry=10
- while [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; do
- maxtry=$((${maxtry}-1))
- echo -n "."
- sleep 1
- done
-
- echo
-
- if [[ -f "${pidfile}" ]] && pgrep -F "${pidfile}" &>/dev/null ; then
- # We somehow failed to stop server.
- # However, not a fatal error. Just warn the user.
- ewarn "WARNING: mysqld[$(cat "${pidfile}")] is still running!"
- fi
- fi
-
- einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
-}
diff --git a/dev-db/mysql/mysql-8.4.9.ebuild b/dev-db/mysql/mysql-8.4.11.ebuild
index aa51713f1086..30b1f165a098 100644
--- a/dev-db/mysql/mysql-8.4.9.ebuild
+++ b/dev-db/mysql/mysql-8.4.11.ebuild
@@ -497,6 +497,8 @@ src_test() {
"sys_vars.build_id_basic;0;build_id disabled in build"
+ "main.keyring_migration_password;0;Known test failure -- no upstream bug yet"
+
"innodb.alter_kill;0;Known test failure -- no upstream bug yet"
"main.all_persisted_variables;0;Known failure - no upstream bug yet"
"perfschema.idx_compare_mutex_instances;0;Known failure - no upstream bug yet"
diff --git a/dev-embedded/esptool/Manifest b/dev-embedded/esptool/Manifest
index 77a949acd885..d20218607c57 100644
--- a/dev-embedded/esptool/Manifest
+++ b/dev-embedded/esptool/Manifest
@@ -2,3 +2,4 @@ DIST esptool-4.10.0.tar.gz 5961194 BLAKE2B 153d57ec90dee53a237dcdf694e6add85d380
DIST esptool-4.12.0.tar.gz 6013292 BLAKE2B 49a6abc7fd6fec84ba3ec08087f7fbf6a27f2adf16fc6b1dffef8ece09b04f84bf128ecbece1cc0f2fde819bb5033d856c282fee40dcd5791bc5054302c28954 SHA512 af8ccb2abdbb0671ff475e61070dd2e18ea676391449ea1333aa60377b5267bb11297d71319dba32712006a7dbeccdebbdea3cd178a670a0e90d2ba7b0481322
DIST esptool-5.3.0.tar.gz 6106512 BLAKE2B bf831cc2b91675dc0bf83eb2042ad86bcfbe36d8fbd8c39c4c855413b157283d31c77b6c84ab4cc262d688cbbe77da109977e5213e32d5d9d05eb7c6aeac8be0 SHA512 b7c357c73f0fe7c24636bdf0752ec4fb9352a2e2fe5021e62d716f6fdee09e5e49780901275dcba7c408d7ebcfe03a4fa8c6b8ca0bf2376988788cc2756e8bbb
DIST esptool-5.3.1.tar.gz 6108667 BLAKE2B 458fd7b5b750ebdcfcce9e2fee3d7f23ba5b8392b7478475a31b33f3dd2ffa88bcaf50cda3aee5ae323ec29f5b1f8cc979c5559195e76e006ef9b64fbdbdf7d9 SHA512 55ffd439b6a2f938c7459d1c570ce2d97518b49626166909d6f8d628bb5a0c0f9352585404e36cc774778348380afeff7f336f86ced80752a5bef30dfd866165
+DIST esptool-5.4.0.tar.gz 6168116 BLAKE2B 830a9906fec992ec6b16a6396b0c2f796b1430b478100266f0826a038846565b75a7d395d8571213cd6893e4c6c9368af4682b589cfcf7e4e21b020bdb9bb5a1 SHA512 5c19af9c1052596d262436586834f3dbc78909dd50db0afa0307e935b16e6e278f5795d236d480943646b41d677c09f307e7df6d82ddceaa5e49401b287414d2
diff --git a/dev-embedded/esptool/esptool-5.4.0.ebuild b/dev-embedded/esptool/esptool-5.4.0.ebuild
new file mode 100644
index 000000000000..22b115f6ca1e
--- /dev/null
+++ b/dev-embedded/esptool/esptool-5.4.0.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_SINGLE_IMPL=1
+
+inherit distutils-r1 eapi9-ver
+
+DESCRIPTION="Serial utility for flashing and interacting with Espressif ESP8266 and ESP32"
+HOMEPAGE="https://github.com/espressif/esptool"
+SRC_URI="https://github.com/espressif/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/bitstring[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/esp-pylib[${PYTHON_USEDEP}]
+ dev-python/intelhex[${PYTHON_USEDEP}]
+ dev-python/pyserial[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/reedsolo[${PYTHON_USEDEP}]
+ dev-python/rich-click[${PYTHON_USEDEP}]
+ ')
+"
+BDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/wheel[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pyelftools[${PYTHON_USEDEP}]
+ )
+ ')
+"
+
+EPYTEST_PLUGINS=( )
+EPYTEST_DESELECT=(
+ # need real hardware connected
+ test/test_esptool.py
+ # need network
+ test/test_uf2_ids.py
+)
+distutils_enable_tests pytest
+
+src_prepare() {
+ default
+
+ # test_espsecure_hsm.py needs setup of a "Soft HSM" or real hardware. remove.
+ rm test/test_espsecure_hsm.py || die
+}
+
+pkg_postinst() {
+ if ver_replacing -lt 4; then
+ ewarn "${P} - new 4.x release with breaking changes:"
+ ewarn " - Public API has been defined by limiting access to internals that have been refactored into multiple source files"
+ ewarn " - If active security features are detected, the default behavior changes to prevent unintentional bricking"
+ ewarn " - Flash parameters in an image header can now be changed only when no SHA256 digest is appended"
+ ewarn " - The ESP8684 alias has been removed, ESP32-C2 has to be used"
+ ewarn " - Megabit flash sizes have been deprecated, use megabyte units from now on"
+ fi
+ if ver_replacing -lt 5; then
+ ewarn "${P} - new 5.x release with breaking changes:"
+ ewarn " - The .py suffix is deprecated for the following scripts:"
+ ewarn " - esptool"
+ ewarn " - espefuse"
+ ewarn " - espsecure"
+ ewarn " - esp_rfc2217_server"
+ ewarn " - execute-scripts command is removed"
+ ewarn ""
+ ewarn "The official announcement of the changes can be found here: https://developer.espressif.com/blog/2025/04/esptool-v5/"
+ fi
+}
diff --git a/dev-java/openjdk-bin/Manifest b/dev-java/openjdk-bin/Manifest
index 8313cafa1785..419ffa4ff2dc 100644
--- a/dev-java/openjdk-bin/Manifest
+++ b/dev-java/openjdk-bin/Manifest
@@ -6,6 +6,14 @@ DIST OpenJDK-jdk_riscv64_linux_hotspot_28_13-ea.tar.gz 158619533 BLAKE2B 1da4807
DIST OpenJDK-jdk_x64_alpine-linux_hotspot_28_13-ea.tar.gz 159307771 BLAKE2B f8ddb6e0ac54138ac462cca691300bcab488f4a043c226fb211449624288397760ab4eacce978036964b5bec7d65309c2d19e318111dbef769935c7e20765942 SHA512 def77977aba36b80a0af4ee24fc586922a5ed1270897faa58ce726aa03a4d41b33e963f848f1a8e66f865cfde4f36b0de9c38575f798707997cc873f07c80616
DIST OpenJDK-jdk_x64_linux_hotspot_28_13-ea.tar.gz 160063418 BLAKE2B 4f0246a1719c4d5d60c78ad7c5ef3db198223abb2a748e1251434e442e44d74074adf73f8c7238e046124e4f7d1ec509cfbe69ad3a56414b6b9996a3b5fc3bd1 SHA512 cf8f0919fde2f7fd0f33f57b94c028351673a679eb5dd89666216a33591237a039bcc8b39df9e34aa0aab6342d142a4b668b0ae4d7ae4eac03dab81403fc573c
DIST OpenJDK-jdk_x64_mac_hotspot_28_13-ea.tar.gz 120018128 BLAKE2B a9b801afd43ee47362c578983821cee7eb6a279aa0d1be7428c5ba147ceeebd3c0d5fa13bf6a7d2648cd4eae7626a92184a3eb7bc26b6668b5b5cccc14ce908c SHA512 8e756913f68d840a4c291844f01527bbd23af64a89675680da692c740e0db858944b175ddca93467142cbd0b9e6e2e4099c98c0775d45c4714aed33d87de44f0
+DIST OpenJDK-static-libs-glibc_aarch64_linux_hotspot_28_13-ea.tar.gz 4815373 BLAKE2B 8b10d76fdc96376365dbb689d11875b3f5b1069e53b14f821e069004a1b7b13b30a5ae7523b202c8034af8db210a7b9a7c19987770ca96fe9c99c510ce6a1ea7 SHA512 9d6195c701fb0384b2d58e6f06f2ab5a1b4a5ddbc4d994cf84c60bb49d4ea7d72c0ba05e7731a7b72b2a4d52572845ef933e04f6aab0601c597b672fe0352e97
+DIST OpenJDK-static-libs-glibc_ppc64le_linux_hotspot_28_13-ea.tar.gz 5686493 BLAKE2B b6b6f7d551efa98beba3c80b6f43b5383736d5334f69fb67f91c0cc43e4dedc6b3a7202f0f145d0711b2e3ab2ed5a98d53d40ced31320cc9103bcf7ecc6fe7dd SHA512 d35a9373f2c6b2cf149101cc8d2a1c1536b4f20ad58308681c7b41a34feb869f8a9439754e002386228a260ff64581c1e4e1c749ce2b4ec53407abf9c775608c
+DIST OpenJDK-static-libs-glibc_riscv64_linux_hotspot_28_13-ea.tar.gz 6144718 BLAKE2B 493b3c6f5e41d295a5cd3bb942e30285fa63684371edf463465278184d55cf5b005709acbeba246c0d4f7ca04669d25678f303eb9607c0b4941ad6fc7e17978e SHA512 c819611aff13b1489a2384f895883fa4ba6fca8e3e482a419dc77e8e76ba20097ed5d0daee50ce08b1e55a6549e7d4daa2a0c8ba234130d555290bc3f3143b41
+DIST OpenJDK-static-libs-glibc_x64_linux_hotspot_28_13-ea.tar.gz 5233871 BLAKE2B a7210e7680e1cff5c2e85e2d7a9922d37ac7a969855abcca6e2508696ab55133e0be214806054ad13b77a2764a8635e0db4b4e85da4086ddd4c3a6c6732cfbd5 SHA512 2d84b6403333292cdb9dc31600aec2423f6e19009cbcc32cd2654b8e0f8c7bd17e41588dc4a7f9b4192730ca9f0a74779b770a29f1173aa55fdb2ab2312828a5
+DIST OpenJDK-static-libs-musl_aarch64_alpine-linux_hotspot_28_13-ea.tar.gz 3393090 BLAKE2B a5e3aacef81369bd63b6330dbb0c589ddcf533c90ebc7f8eb9d99a54693987bd4a9729873958f46a968c3d6ac5e78747f3b22ffa91777b0289e932c46020a9eb SHA512 46489f8dd0c66e8f85979d074fc0936089768e238fd5827b0bdf240102fafdcf1fdc8ab8b90c2d9bf4d9162d2a5b837fc5ba19ecb4370ea6b4eaf03ed7d59d3e
+DIST OpenJDK-static-libs-musl_x64_alpine-linux_hotspot_28_13-ea.tar.gz 3819952 BLAKE2B b7df2b3b742c0a69b2aa2c17f9a700cf2484ddfe6d111892c3e23dbff79131616d20079742f7516141c3d73e4e3bdd6a0b4eb1016da4a6a97afdb8d1b1f50e8d SHA512 96ff760f3d2825ed987b13427a8fc04a5662e530e276a85f1c0ae85c8e355c6a8652cb6f50378802e9fdd2ffe43594144c00c3652b4476dd611938d6778f2b96
+DIST OpenJDK-static-libs_aarch64_mac_hotspot_28_13-ea.tar.gz 3932188 BLAKE2B 4c39d604750916a78cf30d7d7624b1d8511d8ed938a01c54eab249ff92379514640e3ec25448794925197b8d69529e88e27f5933c40616d3b1ba36a272e3a914 SHA512 7052175fea8a5154dde337e9c74a22f94dc0a297b4a76c825b966a438c0b478733749d62436622f0bac6d99e2fdc9fb35af91c95c714af9b2e56bc2149970632
+DIST OpenJDK-static-libs_x64_mac_hotspot_28_13-ea.tar.gz 4018435 BLAKE2B b9cadc678516c29bacf3254a08bc5f61253aabaeb94e882c034b99f0e27a2e56b81271b54fcd9869cabd63ae0ab82b5b663c8c91007d9c8a0ab4bcc571dc0f1e SHA512 f43ce65f3d701f28227ffaa48a2087369df9e6165c73029e66b3b28d1369ab446017e11ccea8bb4f3bbc65352cc2085ea8d12d45f5e1a8ac5102649a4092d9d4
DIST OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.32.1_1.tar.gz 192356586 BLAKE2B f719d79cc8a8e7ff1fe24c88c226baf18fde68bdb6197f4a8bcfe3aa280e3b2789b2d8698ac923675258c8918956a3aadfb51c0a57835ee355f81929b5bbfdef SHA512 35952f5a5389403f7d2a5f2e0f6b608ed6d785cf3479d26df855cbb75d762120cd9f0eecff27f6579883309bb65969e90871907abe8a763b35d2e0bc1443cf16
DIST OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.32_9.tar.gz 192338957 BLAKE2B 155b989d9a8cbe8a6339fd18ebae19a77d3d78814f934aae0321cc6407d6723cac7c09dbe3d745be09dbcbf8864fabcb42036057e25e0e0daf976b3d2b24ba1e SHA512 5b203e994c061d8a5b0f89a40da251579c22007ae0c46614e00423e82556c942d9586b2b7ee15cc4f6e435c4920bd2010b4ff6deb324f14a5b4eee5e452f341d
DIST OpenJDK11U-jdk_arm_linux_hotspot_11.0.32.1_1.tar.gz 183207070 BLAKE2B 9ab581f937a4e8b709ec056e89c19b772de4b3112a99ca02a19db2c967aa4d8b030cbfcb87832cc0b9c1696c38d0336221adec921c633b91289b625041f42867 SHA512 efa043f9b5b9a8264b4ccf91a6ea09d3ff9ffb52819577dcfa2f1d46ed55398d857a42b9cdae17f228ef5e682c5ba78d0eba87847130480b8a860f747b461426
@@ -34,6 +42,14 @@ DIST OpenJDK17U-jdk_x64_linux_hotspot_17.0.20.1_1.tar.gz 193252603 BLAKE2B 25d90
DIST OpenJDK17U-jdk_x64_linux_hotspot_17.0.20_8.tar.gz 193273593 BLAKE2B 8d3bba7bdfc8b789bc0bfa740ce6b36ac2bfb7af9cf137a26e0866824a44b89f59145625cb50dd1bcd36b25aaa4d5515029494b762dc55aa01ab11b9c1bdbd8e SHA512 233399c52c36a51ef6f138adea4e6dcf2c1b623962e63e3b5bde8c96155292adadbf99f84970b051de8759135defa737db7e869b073c27f0ea636057782672b0
DIST OpenJDK17U-jdk_x64_mac_hotspot_17.0.20.1_1.tar.gz 180578248 BLAKE2B f0a1bdf8a328724f7eaa81b212be45625ed9f6c42fa9dfdd1636b0a9139a114cc3f478290e7a1801c462bddfe47491cff6139fcdb74c462235a7c03a325b74ab SHA512 58f4ad0eac7445fdbd3c110860dbd04e1682cde849e1ddfb61533ede9cd404405070386bdccadfb613619f289892f6a47c721a1335db082ce5c75a1bf0f5b5e4
DIST OpenJDK17U-jdk_x64_mac_hotspot_17.0.20_8.tar.gz 180581753 BLAKE2B e1f67cb7364068f3de7bd4aeb8f1d6f87c420be7cd8e3d3abad1e4cd5197666866ce8845b087253aad41542b2b77e9b68ac29823dd733447562507b1bb3e9392 SHA512 7e7ec77ed76e67bad9e310212c651a2fc73710bac758e6101cb9446f94f860f7f356652394bf559c7e7992fba7f770d159b2859e2c330138ebc1612c42719363
+DIST OpenJDK17U-static-libs-glibc_aarch64_linux_hotspot_17.0.20.1_1.tar.gz 4269425 BLAKE2B 82f93a5160158983cebc1bfa243990d17151588266926514032663bee36d7694ca4082557a399e66453e4960978a190c1105bdb8c5cb5cf8341a11e752e7dc1b SHA512 244cab7b19b9ed9c233a90095bb7d8a80fd3098b6534f74aaa425d23f59b9269f9302944eb04e993198f56e03538886a0bc8e13902eae4b20a7b5cb9dc789f9c
+DIST OpenJDK17U-static-libs-glibc_arm_linux_hotspot_17.0.20.1_1.tar.gz 3837330 BLAKE2B 56b758acbbceeb02b0fd801803db54ecf9b2d46d1ab96be710cb769d8feeae05fa055c9063e928155305fd2ff32568479104aa0c6ea846181394a23f69dd319f SHA512 54b3d83d501b8701aa34182f81d35c16cec704aad388ef4f05903edd4711617b40ce63f9d92d332b5262d0339a360377ab2bfdbf0f1475de88a5d04a4a04197f
+DIST OpenJDK17U-static-libs-glibc_ppc64le_linux_hotspot_17.0.20.1_1.tar.gz 4978288 BLAKE2B 2b79bedfbbd91553ca2160f3464c42233472d39d443868ccbc60067ecb7f482bf367727b56fbeffcb635b79004db5604ef0d5e54f41cbed042fc6f798fc1da25 SHA512 b5924bececacd573debbd708a14085923c568bff95edafda4d2fbf539bd632960c41556b65c7c073b1adc1fec4187742718df362540c0eb3ee00473bcb74bad1
+DIST OpenJDK17U-static-libs-glibc_riscv64_linux_hotspot_17.0.20.1_1.tar.gz 6587085 BLAKE2B 5e769594c18147ff1533b02330081a0fde1e6b95b4bd213023b8e81a24fb456fa7c6ed21ddf03a70c26cbb1256815fbd1c9f8a71548bdf4b0535014b89a4ebd0 SHA512 8df685a4fa959af87e43b0f9101141ae37de32d945d39d6bb012eb74ebcbb3e514ddb1ce272a001dd02be02ac2e63a678c6e3bf8b2c22318c15e02510280fcc2
+DIST OpenJDK17U-static-libs-glibc_x64_linux_hotspot_17.0.20.1_1.tar.gz 4593593 BLAKE2B ce935b96d690a7c3b919c4d5b2978b4916576e0b9e131854e45b9526932640e73752e3abb96d6fcffb80de82f8f594381241e57ebd6f04ef5a067b6d49546d27 SHA512 3f7dd624813286dc8e978c04b59caea4d310f384853733f19a9da44557f7964f564e065be3a027c93002dd478887484c0051810ce4e37701ae36b8d28623ea0b
+DIST OpenJDK17U-static-libs-musl_x64_alpine-linux_hotspot_17.0.20.1_1.tar.gz 4043060 BLAKE2B 3509e12ec446bcf2ce6a22533e9510f0523c001af57792019e39d762c7fe05d918a9fedbca234a71bb6cfa56d0cead7e9d9ce100f2fc24923a988f87721a6070 SHA512 a4f0c317fd011ffeb4c1350fccaeb6900f7a7ae053d2f851f1c75c5cdbf9f9a28f309c77c3f612e531bf8f68d86bef4f1c136a231975922b472b4c1969754307
+DIST OpenJDK17U-static-libs_aarch64_mac_hotspot_17.0.20.1_1.tar.gz 3976905 BLAKE2B a68e7cf1704093cc6e589304495ebbe9336a252d1bea669ac6e499a0ab07ff78a5be41058119f4b0a58e633769fcc5eb2dce9231cbaec08c06305242f6fdd7fd SHA512 bfa9356a1db8ac3a91712c15e8688778e59788f324f33d1805f0c9bba90cf9a88251b1f75156f04e999cb06a19c9a21808e45485af6adf0e1d3282d30518f009
+DIST OpenJDK17U-static-libs_x64_mac_hotspot_17.0.20.1_1.tar.gz 4098106 BLAKE2B 3ece462c01e20e753da071cc2c079727e1f6da71e07a078900c7d0ae936a10f2299d131980b732d588cbf5879afb16c9e15a156b317c2e694bbaa84b990a8716 SHA512 626968be1127f171939858b6003d6e07c7e5893cabd963c4df26309f4fd4ec43eb1b7bbc43d98749793269e4cf741d8fdeaee317910a15232b9a4cc4e2877ccc
DIST OpenJDK21U-jdk_aarch64_alpine-linux_hotspot_21.0.12.1_1.tar.gz 205580047 BLAKE2B 96a25df41421c49b828b7c3a9fb6e1182a672c115f568a75496a0676b6e85a60c0cc3e8e92af8f5066085d5c92a53163b4d3c732ce168a430515dfa587f75366 SHA512 1575f2dc073c339e70ffba0d975a6ba0babcc019cd333f8260c280484dabca4774a7e78d3f31938b6e5fddb2ee06a51b3a5c31842b847cf0bd741566367bf054
DIST OpenJDK21U-jdk_aarch64_alpine-linux_hotspot_21.0.12_8.tar.gz 205565634 BLAKE2B d829dc42bd12b11c6db531b2ec3b49a857b1c0920a8615d22ca874c0ddd4d320da5985a1bcd691f5e5b5bb5d09cd98f81682a073a477ee5c66a46931feec9752 SHA512 b9df112f4fef7033c76375f8ba5d2799195974a975d50b0f395d890c287d8550e750b988a9638479078517bc41987ceff340a1ca963686d635e8e0c465f59128
DIST OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.12.1_1.tar.gz 205641175 BLAKE2B 68dd310d7b73f68dbddab6e90021273684afcb7472f1b091e22a26fa2025c7404505ecbcc923bb8958325efc449a74718b70e2cad0117b61bd0aa6ed6ede9e4d SHA512 efc33f7d017a51ca151428833a8b74833cdf4c3e83da07305c966e468369b6f9e8068a5db9a103582d0f222b102082b6089f448c2607a5807037f355d5c0c25a
@@ -48,6 +64,14 @@ DIST OpenJDK21U-jdk_x64_alpine-linux_hotspot_21.0.12_8.tar.gz 207679708 BLAKE2B
DIST OpenJDK21U-jdk_x64_linux_hotspot_21.0.12.1_1.tar.gz 207473347 BLAKE2B baa4a6ad7afaca3f941b373b822302d9e48e7cf11866ed1627ac9248e21ae7662744d160df70a3b08fdd794f13d78c069eff68c1fb492a8d9a794a998ca3966e SHA512 e685aac4ccf79d0681bd3946a74c090c19945cc1b2ff6d92c390c3e535dc391d12c74247e222adfed942ac0dbd0acff014fa4079bb1073f10211915b570a005b
DIST OpenJDK21U-jdk_x64_linux_hotspot_21.0.12_8.tar.gz 207486543 BLAKE2B aa062e7c15c00ed5143df325388b0bf4b8ba87256395986b59e0d8f1d60cc8111ab4f7d851c69092531bf9e8c67ceeab4fac72709072d0b2ad948cf319efd3d9 SHA512 5b08c4673e102d72383e51d2129164374fcc6b4081e307188683b3390f28c246f91bbc33966b61fad38243121c50c3ebe4895d5f7bf0d5421ad174ce116983a7
DIST OpenJDK21U-jdk_x64_mac_hotspot_21.0.12.1_1.tar.gz 194316575 BLAKE2B b55c740685dd3d2f4c5db8f4ce3ce4243e2c9805b7408114e1f6dd48a49bc444841542ef15ec34d99089f95733c8e0091553a39f1fb660b14cda9d77b412ad91 SHA512 5ca2152c0e5382ee179f6e985e662a3e006caddb98448a819814e4d12221fc07e05f8a5222d000d27742585c13a09a3600545cac23e3463af851d664f39dca1c
+DIST OpenJDK21U-static-libs-glibc_aarch64_linux_hotspot_21.0.12.1_1.tar.gz 4202335 BLAKE2B 3a1288fbd10507ade4e5b87925b106580896a3b4b9e2cc373ebfb5ef8eeced9c695ef5708679c8ef50fae61f110206f30456b4d7572d96ed7b1ed57b52afb0bf SHA512 38debebc66cc3b982ac7ece35bb4d2ee1e2817a10b004483e9ecd380938d3238b17cd5d13d0178ebd5d9ce557b7a1c28409ad4f2c61dae2656e9c4eeba00952a
+DIST OpenJDK21U-static-libs-glibc_ppc64le_linux_hotspot_21.0.12.1_1.tar.gz 4873567 BLAKE2B f8149ac1e1f6a159710b080dd6937396167b5713ab53d778daa3571e3250eac5ed4413ceb78d0b36cd806744c0ddfc89fbf5aa54bd96a9fe76163e84a15dfbbd SHA512 b03342d0d3cb5ab0521149763d6f78a8fabf4cbd8365365eee8b0928b94be520e929ed928d3df25e4e1bf00229a58cc582d9dc08f165eaab0e731d47c590b61d
+DIST OpenJDK21U-static-libs-glibc_riscv64_linux_hotspot_21.0.12.1_1.tar.gz 6534251 BLAKE2B 995ffe90a6802055afda685bf3a1e1e71e1113add4c1433683df418f357c1a5d96f8ece8bdccc391032365dc77de5bb449989d4b2d0ebdbf40dcf9e1d3c9956e SHA512 6ad7d525aed330e38a6b9f8b306f762008f10a1ce44a90206aa24021ac88548fb4eab3480c1811cddf2cd982c4798cd2ab38af7d37f98f9d732d83cd1418296c
+DIST OpenJDK21U-static-libs-glibc_x64_linux_hotspot_21.0.12.1_1.tar.gz 4528872 BLAKE2B de9e8e173a9cea1cc8c11fd7e05648c325bc51e0e9cd22d43b97831aafe0a18d0d125592c2a33c6c938a2705f015f0dd459660fb43e0dcba025a2b28211de93d SHA512 7ca6b2abf155f7f735e6370d47c6f242f8536286a79b704d747ff29af74db864b23f8c44799d7ebb350703fff628bbfe96a2e7d0ac798d38e6de482ab0c1cd2f
+DIST OpenJDK21U-static-libs-musl_aarch64_alpine-linux_hotspot_21.0.12.1_1.tar.gz 3643997 BLAKE2B 5924dfeb6cae37d6b08e7c746e86aa8537cbc1eabd472230dabd6ee3940fad04b2cddc970c97ac55ffa61f3289ea9d37c62c7b531afb000a8913de38a57b59f7 SHA512 fbc893744edc5a7b4b450b2da1b82fe0a24a3779f26d8337e25b940dba9d44ef59c25813c7040a526363bb62a78ae4c40e275d84846f433a6e76e938f41a19a1
+DIST OpenJDK21U-static-libs-musl_x64_alpine-linux_hotspot_21.0.12.1_1.tar.gz 4008162 BLAKE2B cc6d3eef0afd2589207600d0a47d72ce1f1875c4e460f831c34e95b99559b891f01b6c5e3335d91902837e998d1f4cfba4a737db74ec5dba98de8572a40451ed SHA512 2a97285fe6015eb1e6dc69f155f1a4b7969c9f01b933c07a411e8c641bc06c708ca497bf0bcafffdfd60a75e2cbfe134c73be3300cce70d10fc099676630e2ec
+DIST OpenJDK21U-static-libs_aarch64_mac_hotspot_21.0.12.1_1.tar.gz 3926592 BLAKE2B 95596ebe1ead493f42167cddd455ebc761490ebe3e3e7501f37ae6e47a8a952e58ad19c1551f059dbee53874f2302222f1de08a2642636e843254063252ab6af SHA512 7055caf54d25047acb0aa6c2f08e3547f28cd72e05a888c6997285ad0fecb3b3aad2055cc06da9795a8ad5eef163136faef93134991e828195d3ac12d2f1b426
+DIST OpenJDK21U-static-libs_x64_mac_hotspot_21.0.12.1_1.tar.gz 4037928 BLAKE2B 172693574d900ad89315666c51d6855a216c227229c8a6aaad00777e2fe5301a0f94a64f87d2bbc8edf8f505ccbfb17ed42e1f42dc128fa6af0e639594510256 SHA512 63253f3a098d70f07879ed2f49dbc373ebc9c42a0b37f9ff7e88df7cae6f13670dc1e1c4f92eb6b7cd47fbaaacb490080bf98ab5d3998e48aa4aa1e30da24bc4
DIST OpenJDK25U-jdk_aarch64_alpine-linux_hotspot_25.0.4.1_1.tar.gz 139143962 BLAKE2B 57fb96f5f3aa7744c9e3a47e779dd6c32add641d2b4c3902d3c4804af7d4fb80632c541aab0ce89291d650ba22f22d8d17cea5b5958afd524d966bf198d2e97a SHA512 72c66f1e25a07cc961ac759aecda4cb26fe430480872dd79cc2ec6abff677e1084adea181469666ae31e7ba1e5e484db7b9ce8cd22ce35cab3d218939e43a826
DIST OpenJDK25U-jdk_aarch64_alpine-linux_hotspot_25.0.4_7.tar.gz 139141228 BLAKE2B 56486ddd727bd871d8de3afd36bd926a2145e0e9935dcce8c4e25e12e65b5f16a6b29699c6b75b457ac77a44d4d68da43a6ae4bf72d92c5a6e657e75a95b8231 SHA512 18e94913f5eec68a16cdae120de94ffca09af6a5a8d13eecca1e18ec56ae3c183d52d4384e80f5951112659dcbdc6851e793fba0115850eb8a535b77636a30ac
DIST OpenJDK25U-jdk_aarch64_linux_hotspot_25.0.4.1_1.tar.gz 140137820 BLAKE2B 012fd39d066f23ded38e5b2734332b823c19506ededadff5085fc8c57cccdaf1c26be3a76d4d77fe181aa1c539ff2112a6c4f2991fb4bb042f9a83b956904c2e SHA512 988bcdecf5cd8398032d83909c388b4d9de1272412f2d4af1d923413b929b2cf490a0631885a94743e4acd985cb6fb15f96b3350e30cca4b53cbd32b74943528
@@ -63,6 +87,14 @@ DIST OpenJDK25U-jdk_x64_alpine-linux_hotspot_25.0.4_7.tar.gz 140331098 BLAKE2B 9
DIST OpenJDK25U-jdk_x64_linux_hotspot_25.0.4.1_1.tar.gz 141329719 BLAKE2B 3621d96afe59375dbf547cf169eff329312c2296d2122bee6b4ab5b3f79acda51c657c52b793dc186acc28a358855f62290ff48f3d3fa8d98beb9beaba22f3ef SHA512 c96f0d7a22068a488c6bc2ef908f946280d26ce384dbd879c6ae9a01a60441cfed8cff97f3dc5f02b939cc9fab5ad9279b5f497a3523195102cfcd151cac0816
DIST OpenJDK25U-jdk_x64_linux_hotspot_25.0.4_7.tar.gz 141328157 BLAKE2B 10a3a1ea8d730d3ef6e7a0438a87450cf390abe1c852d788afe9da6b5a060caa42d0904b443924e36bcd3ade163f76feeb0d56a7db7f0c54474fc717d551b7ab SHA512 64267cad95a017ab32fe66211f8880eeff14fc831a4e10a49b8688ed387c2af7e75bf3fad7fdaa2b662b002fb20620a98ee7abe2b86bd110e21023d62071e168
DIST OpenJDK25U-jdk_x64_mac_hotspot_25.0.4.1_1.tar.gz 120256199 BLAKE2B fda3d5927687f86c800e3211250db8c14bb0a330beb9472723934a650ea0e7ce532180ede88d2068c0f2762310143c5e6c234ee7802c2295c8bf8020d41d9217 SHA512 b9e23fe13a03cff92d5e2fe1bb936ebcf6c27aaa1e0080538a6ce0fe48be8540426c09fd72933f39a80834a40ee245e81af1b31f6ac132141935b3162eb288fb
+DIST OpenJDK25U-static-libs-glibc_aarch64_linux_hotspot_25.0.4.1_1.tar.gz 3823643 BLAKE2B bd0227ab28ea11510ed3415caa51d339e1b40e2317ddf1fead6461e2359f154ac75c8e62cb42651529f2fd2d78b32d09e6945a51ca25eb6d750744e53cedd03c SHA512 ffa258ac3c34f3dacc8d30666965e2bd2e3e4506aec4e44aec70c0b217435abaeb4ee417f240449ea98c7e23513fa3ea415f022be65a9515631e1609ff2a12f7
+DIST OpenJDK25U-static-libs-glibc_ppc64le_linux_hotspot_25.0.4.1_1.tar.gz 4770127 BLAKE2B 3e4a5bbad3de6d64d2ac2bbe3a0722203f95230b6fbeefa72792c279f5a70999c6290580d1e884a038c9fee756baf329fbb6714b10cab65fba96f153a9bb5a2e SHA512 5d3459077605156505d75ce2d01a51e88fda29df912c69d1fabf503f8326c4a2447d9418e2251d624c7dc61386e28994998b587cfd33b26e1fdc2acc1a191932
+DIST OpenJDK25U-static-libs-glibc_riscv64_linux_hotspot_25.0.4.1_1.tar.gz 6349725 BLAKE2B c94149f627bf0e0f63e88cae0d20eeae8f4af7a96ff7ee47769825d4aac76c5b3a549d1982c18488cf87f49a3b6bf21ea845c43c69f69b0b6da7e1f8578510de SHA512 40e75509f43468089980c8c609b36277428ac47be553960522f7adce2cbd8c29f5be4421f04c96ece0dfea6d1470a985f6bfe5be60acec7e66b1785fe40e54c1
+DIST OpenJDK25U-static-libs-glibc_x64_linux_hotspot_25.0.4.1_1.tar.gz 4289978 BLAKE2B 61640f8eb5998972f431c7ec1f5149422a1bf0fd8a0feec3502ffa80769fa307bda0b5de6286a85b0b66ba4b2dc16bcc14f432865fd969483dd277e5f140423a SHA512 0e04f626bbbfa4b56caf2a043a4dc643d19c93fb95b20a76d571aaaffbe653b162dcddf6f97829e19bc849b5d4a3f7bdbfc0e01d4292dd8270ac110aec17bb2d
+DIST OpenJDK25U-static-libs-musl_aarch64_alpine-linux_hotspot_25.0.4.1_1.tar.gz 3433200 BLAKE2B d12ac5e918cf25a3fd3cf730f2635bfe667e17f26a22941d58a25681993310149baf883b4b2499694b2358bd44e0c5df2928d7f8d9aaafe6d0e39c124b12c2f2 SHA512 0b47e5a881c00b5a3679f6cf052b1c1a06cf33ad39f33a6d28346f93c83a776213ab7ac9598d90923cdb37ff730e33d989acf6457ef1f9bd1f7160c2180a8e02
+DIST OpenJDK25U-static-libs-musl_x64_alpine-linux_hotspot_25.0.4.1_1.tar.gz 3876593 BLAKE2B e68f4c8b0f68d30cfb04d4a155bf8fbf7d31a018dda92729fdee0e1ca0eb4f654454201c2d1ac13b89868b3b36eb7f48b3bffcd62b917da5391b4a8143ac57cb SHA512 b2f32cd26489e28b99eb293ca6ed5e285ad5f59f8e42da74a789de7c616bb743378ad322d63507cc32b3233a83f36dbdc573cdc959dcfa0f62284ad3dc4a2fa6
+DIST OpenJDK25U-static-libs_aarch64_mac_hotspot_25.0.4.1_1.tar.gz 3848872 BLAKE2B 38d1acbb21cd3f60801ee19f27de71129fd61563618c01ebe58bb829c6663ab1cca595f276af55f91f5331924f61ce40f09136c73d718eda919c28253abacd74 SHA512 2025e9a255fce149d9f30548b72ec00079ad7511540f6e5142157928fce8031a4372903ec4478fa51db4d146a28cbaa67843274a9ea186d68c518f5032ca2f67
+DIST OpenJDK25U-static-libs_x64_mac_hotspot_25.0.4.1_1.tar.gz 3920106 BLAKE2B b342065a3cac2d90a7ab36c9e5febb8210bd5869e9820c1a27682c69fa171973a3006b9ed1d6d86ca7c987170603a02d25e512b34bbe7fb5f21da14713ee9b53 SHA512 5391488c89a2ef6712d27e343d7407d7eff5f2dec79f6d86759ae41bf134bd27ccd31c1605903ba5539cf98ca04fe07876fd37001524c9b8854c9a8858c1068a
DIST OpenJDK27U-jdk_aarch64_alpine-linux_hotspot_27_35-ea.tar.gz 140735304 BLAKE2B f08abbe497d53fb244ff514a90cf174036ca633e6686424cc3a59bda38851dca1e914c544b2c4c7ed1cb9ef3783097663f9dbfac2bf49ea6617b388b286a670f SHA512 650e2e67ffc176982d599b1041df21794d8bc78f238e0547c0d009f4c34f21acaa5ff108b350702f89df749c26674620def84697be6ae32af5bef0acb048323d
DIST OpenJDK27U-jdk_aarch64_linux_hotspot_27_35-ea.tar.gz 141608628 BLAKE2B 27ceab527dd7e75035d6990b7d58b4f1d69aeff5c65c0fc9231499a4d3dfb36149fd4f4cb40fea0be79968f0d0cb224d54e51f35247ba3354cfcaa4fb4b612f5 SHA512 2f558ea63395c452df4d430ca91472dfa87a8e8f1feb0ff49ba800a37a7d0c750521223e8c1f840c8b584dfe73446e2b77f98bfe315b4140a23d7d4b347a322d
DIST OpenJDK27U-jdk_aarch64_mac_hotspot_27_35-ea.tar.gz 138122561 BLAKE2B dc01065155090f49edd26d733fd40f7a813a7c1ef6a8a9ecb43ed272ad26892d0ed34f6067774c5013419142c5126acb43a4607f47b3044fa4eb4c2e3d16f668 SHA512 6fff13ae7fe0ae55cdbd9adddb91517651be6e20bb8cd2273d189bc5cce4b086e6ab844c09c4df16dace2cf967c46c9c119c6f50a89893227b0f698f85521fe8
@@ -71,6 +103,14 @@ DIST OpenJDK27U-jdk_riscv64_linux_hotspot_27_35-ea.tar.gz 141220356 BLAKE2B 8154
DIST OpenJDK27U-jdk_x64_alpine-linux_hotspot_27_35-ea.tar.gz 141965728 BLAKE2B 02952fb2e5486d216c1a2007b6a4f5abb8b818fd359e76f5b1c62facf82be00ecc70fb7d38319a19289da798e0815b930b45c3b2a69889433051633b7190f1d0 SHA512 dbdc95dd13a25b33e49c05cdf760029e78bfc23079c3aca693b209cac9746db22098352d988554dafc9cabb0006ee4d7dc850142dc6b7e5a5fc057d0770d7f66
DIST OpenJDK27U-jdk_x64_linux_hotspot_27_35-ea.tar.gz 142698616 BLAKE2B 2e8f8451427259c1f35d6d404208e8e062b33be235e5668e0ad61a6c618f133af3101efb6ef28f558d0eef58919a26bc05bfacf794f12bd94d3b088adf902a88 SHA512 364bbc1ce9b405cbaf44a5914a907ff5b3d9e39aa663eab97d71f72fed879e4cfdd9c328cb87715377d36d862d0183326fa1ac710e5b9921504f27afbeea12d9
DIST OpenJDK27U-jdk_x64_mac_hotspot_27_35-ea.tar.gz 121596869 BLAKE2B e6a1d05d1ec1609d88f75a262ee37b7257163a68ae451fe5340ad1900e3229b7c88d5e5b723e2806e998e4eb70459c0716ed1f493f7bad758eaa82cadaa0996d SHA512 2fd354fd8737ffa2a6ad15f35331436df9a15df94ab000bf7978178cf759002c58235b751f23b1bf4ce7ac91383580c3927171a3c495c5bd1702d9c407b90040
+DIST OpenJDK27U-static-libs-glibc_aarch64_linux_hotspot_27_35-ea.tar.gz 4810715 BLAKE2B 3ebba50dd291e240193de60206258307b20d12cf3e54a122844cf59c3c6a68fb6ba2e4b0be478cfac2e5c8f73efb54377df2d7633b9166924e59fd168a6e9ce4 SHA512 603ec0a9f6b1add9dd5f7e71d7ad16cd5231612c672c2dab969780dd3a825587a8c845f4c6e3ca0e9b101812bab05c3dd29f1758c87bdc4b9726b95a444ccd50
+DIST OpenJDK27U-static-libs-glibc_ppc64le_linux_hotspot_27_35-ea.tar.gz 5688143 BLAKE2B e100fade64f942aeb7c58dbb5e21ff74fd56bde94891b7e64be2e0f73fb97792208f91d97f5944090428be0caaa154ebf7f01ffed69cc92e3f8a5229034e76fd SHA512 1a26285f5e95ef8067d85255ed34fc9c9c9d184729c1fc3b2a3ab021998c106bc83d5ff64a12b167a4c0ef1478e6a7a1dc0861cdd1dbc2b3eccf65c4f2aa9c81
+DIST OpenJDK27U-static-libs-glibc_riscv64_linux_hotspot_27_35-ea.tar.gz 6142055 BLAKE2B 9dfb85845f8a6c5ddab264646fa2e27e649a3bdc89c3956ced55694b5c052fb45634a0abe5eab969e255f0078a3b3d5d14bc24026ecc679662c63755a9d18077 SHA512 1cafb5f060bb25bf766de1e51cf166eed81134cb52dc47bdb0679c540301a41605ac90d4f9a6282f12dd259df2208e24bbf49e64ef1dceabb71601c8b5a7e371
+DIST OpenJDK27U-static-libs-glibc_x64_linux_hotspot_27_35-ea.tar.gz 5234847 BLAKE2B 2ee3c9cf2139c5ce768230d560e00921f07e8c561b1ee1da5181af5c902e7cfdc18f3dcd957b8c5135059b9e8a1e372e3cbd1f45c8d1b8ab15732f1a153d923a SHA512 8de6acd63e2f276481484cf3a92b176cc9d5769237e5a292e6269e585b71d87b8bc747a89ba5084c410bbf81781f93adaa6f028fad1085f2ed7e145145660966
+DIST OpenJDK27U-static-libs-musl_aarch64_alpine-linux_hotspot_27_35-ea.tar.gz 3388055 BLAKE2B 328dfefb0c115bfb5080fd937f227369294696de99b07543a08cbe89d916321e52b8e9a30ef103f2dd224cbddb11fe152fc7a577c422e379e4588403a37a8d71 SHA512 cae63d4438f3fc41da74f2c6641177029b791d96ff58dde853ab300a0f0efeb9acbc2bef098cb841be2358ebd86c25463d6cdf20e58e6146cadb19f5867e7526
+DIST OpenJDK27U-static-libs-musl_x64_alpine-linux_hotspot_27_35-ea.tar.gz 3818889 BLAKE2B 2f90d822709411b0c6418449602a5f55e5b8f9306cef7fe0101f75572528310b273b76f5bd1b39deeea600046bf31d46e4a74e367ac42984586f00dfe0db39a9 SHA512 10fd906325cbb6376cd804a623d9d2752fc681ec92b5f98bb9a907d26e2ff677b333523f1be45130992839d6d63b6a3a5d608b7ffe2af3ef23ca9628d9c30d28
+DIST OpenJDK27U-static-libs_aarch64_mac_hotspot_27_35-ea.tar.gz 3932282 BLAKE2B d6607f3258f5cecd193206809896582026c9a844acba3d1a73a6d116aebe998cf13e773eb91ed8d91eef06cd854c0eb55e0364cf67e0f18204d994b79984e64f SHA512 4942bc95c6ea1fa492210b9f3397d0b19d29dc74a698a263b56b8743eb394385d4f0bcf8a196a4198e96a87c4e242edabf1bd616ca5da66cf011d56e2a38d3c6
+DIST OpenJDK27U-static-libs_x64_mac_hotspot_27_35-ea.tar.gz 4018537 BLAKE2B fbff76df213d7f56d9763536ed3417cd9ad1fbef288c96d62d9de7d69fabe7607a404e7e73e4ae30c168f45015ac027264b0e97131232405b3507765d7794c77 SHA512 e2cd825adedca4eb558fe30142252fdc68a9dde3e5991e3ee8b09d4784d3a0244cd6430a1689e6f0da50ab2afe5c3c83c57e062268cd30282f110ae6243f9fe9
DIST OpenJDK8U-jdk_aarch64_linux_hotspot_8u502b07.tar.gz 102625450 BLAKE2B 890437043d7393b0e1b9b8eefdea347d4d0de8ab1e64dbcaf42b151d9c0ab27c1f8623a06ee8fff175980123788ccb675092c208e0e8f8bd3a381231b6453535 SHA512 d5a81685486c3208e79587bbeded9414dff7c409526849414842695421341eaa7d371f3db540f1e4242cf0895d5d6a1aa656c01c52aec073eb83bb6bae8601cd
DIST OpenJDK8U-jdk_aarch64_linux_hotspot_8u504b01.tar.gz 102617391 BLAKE2B e5e33a31e686402f5e1d4c81d83aa46798e6195e414fa3915813c2f6747f26bddeaa0efc76d48bc32664f38820f2fd4a62ab7e90620a956e27708774a6096358 SHA512 13c227a192a43d552e2c5b8a6e1b619bb26027634b360d84ccb129b45722da9a5d96f6ba9666cb674bf0ddbf1a338c62186b67b371d71c1ffad50ae206fb1575
DIST OpenJDK8U-jdk_ppc64le_linux_hotspot_8u502b07.tar.gz 101078684 BLAKE2B fd4f217b2132b6993ce1fc8cc4f6f96ad250f84113ea32118d46cfb8e036a87f74635d110d2b440e3ac454faf66f0e54f5cb6fa4d491d3a1761473c8f60eea63 SHA512 223c41389c9a3c21b518aac6666f3d89fda6d78c120b451d51d24df0cc0fc98fb7dfe6273f1966a1dfc88bcae4c91dfdc2ba8ccc2f18062b50e461ba362704d4
diff --git a/dev-java/openjdk-bin/openjdk-bin-17.0.20.1_p1-r1.ebuild b/dev-java/openjdk-bin/openjdk-bin-17.0.20.1_p1-r1.ebuild
new file mode 100644
index 000000000000..92e4dc38092d
--- /dev/null
+++ b/dev-java/openjdk-bin/openjdk-bin-17.0.20.1_p1-r1.ebuild
@@ -0,0 +1,156 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit dot-a java-vm-2 toolchain-funcs
+
+abi_uri() {
+ local baseuri="https://github.com/adoptium/temurin$(ver_cut 1)-binaries/releases/download/jdk-${MY_PV}/"
+ local musl=
+ local os=linux
+ local libc=glibc
+
+ case ${2} in
+ *-macos) os=mac ;;
+ *-solaris) os=solaris ;;
+ esac
+
+ if [[ ${3} == musl ]]; then
+ os=alpine-linux
+ musl=true
+ libc=musl
+ fi
+
+ if [[ ${os} == mac ]]; then
+ libc=
+ fi
+
+ echo "${2-$1}? (
+ ${musl:+ elibc_musl? ( }
+ ${baseuri}/OpenJDK$(ver_cut 1)U-jdk_${1}_${os}_hotspot_${MY_PV//+/_}.tar.gz
+ static-libs? (
+ ${baseuri}/OpenJDK$(ver_cut 1)U-static-libs${libc:+-$libc}_${1}_${os}_hotspot_${MY_PV//+/_}.tar.gz
+ )
+ ${musl:+ ) } )"
+}
+
+MY_PV=${PV/_p/+}
+
+DESCRIPTION="Prebuilt Java JDK binaries provided by Eclipse Temurin"
+HOMEPAGE="https://adoptium.net"
+SRC_URI="
+ $(abi_uri aarch64 arm64)
+ $(abi_uri aarch64 arm64-macos)
+ $(abi_uri arm)
+ $(abi_uri ppc64le ppc64)
+ $(abi_uri x64 amd64)
+ $(abi_uri x64 amd64 musl)
+ $(abi_uri riscv64 riscv)
+ $(abi_uri x64 x64-macos)
+"
+S="${WORKDIR}/jdk-${MY_PV}"
+
+LICENSE="GPL-2-with-classpath-exception"
+SLOT=$(ver_cut 1)
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x64-macos"
+IUSE="alsa cups headless-awt selinux source static-libs"
+
+RDEPEND="
+ >=sys-apps/baselayout-java-0.1.0-r1
+ kernel_linux? (
+ media-libs/fontconfig:1.0
+ media-libs/freetype:2
+ media-libs/harfbuzz
+ elibc_glibc? ( >=sys-libs/glibc-2.2.5:* )
+ elibc_musl? ( sys-libs/musl )
+ virtual/zlib:=
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ selinux? ( sec-policy/selinux-java )
+ !headless-awt? (
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ x11-libs/libXtst
+ )
+ )"
+
+RESTRICT="preserve-libs splitdebug"
+QA_PREBUILT="*"
+
+pkg_pretend() {
+ if [[ "$(tc-is-softfloat)" != "no" ]]; then
+ die "These binaries require a hardfloat system."
+ fi
+}
+
+src_unpack() {
+ default
+ if [[ ${A} == *_mac_* ]] ; then
+ mv -v "${S}/Contents/Home/"* "${S}" || die
+ rm -Rf "${S}/Contents" # drop macOS executable
+ fi
+}
+
+src_install() {
+ local dest="/opt/${P}"
+ local ddest="${ED}/${dest#/}"
+
+ if use static-libs ; then
+ cd "${S}"-static-libs/lib/static/*/* || die
+ cp -pPR * "${S}"/lib || die
+ strip-lto-bytecode "${S}"/lib || die
+ fi
+
+ cd "${S}"
+
+ # https://bugs.gentoo.org/922741
+ docompress "${dest}/man"
+
+ # on macOS if they would exist they would be called .dylib, but most
+ # importantly, there are no different providers, so everything
+ # that's shipped works.
+ if [[ ${A} != *_mac_* ]] ; then
+ # Not sure why they bundle this as it's commonly available and they
+ # only do so on x86_64. It's needed by libfontmanager.so. IcedTea
+ # also has an explicit dependency while Oracle seemingly dlopens it.
+ rm -vf lib/libfreetype.so || die
+
+ # prefer system copy # https://bugs.gentoo.org/776676
+ rm -vf lib/libharfbuzz.so || die
+
+ # Oracle and IcedTea have libjsoundalsa.so depending on
+ # libasound.so.2 but AdoptOpenJDK only has libjsound.so. Weird.
+ if ! use alsa ; then
+ rm -v lib/libjsound.* || die
+ fi
+
+ if use headless-awt ; then
+ rm -v lib/lib*{[jx]awt,splashscreen}* || die
+ fi
+ fi
+
+ if ! use source ; then
+ rm -v lib/src.zip || die
+ fi
+
+ rm -v lib/security/cacerts || die
+ dosym -r /etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts
+
+ dodir "${dest}"
+ cp -pPR * "${ddest}" || die
+
+ # provide stable symlink
+ dosym "${P}" "/opt/${PN}-${SLOT}"
+
+ java-vm_install-env "${FILESDIR}"/${PN}.env.sh
+ java-vm_set-pax-markings "${ddest}"
+ java-vm_revdep-mask
+ java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
+}
+
+pkg_postinst() {
+ java-vm-2_pkg_postinst
+}
diff --git a/dev-java/openjdk-bin/openjdk-bin-21.0.12.1_p1-r1.ebuild b/dev-java/openjdk-bin/openjdk-bin-21.0.12.1_p1-r1.ebuild
new file mode 100644
index 000000000000..66e585032d7a
--- /dev/null
+++ b/dev-java/openjdk-bin/openjdk-bin-21.0.12.1_p1-r1.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit dot-a java-vm-2 toolchain-funcs
+
+abi_uri() {
+ local baseuri="https://github.com/adoptium/temurin$(ver_cut 1)-binaries/releases/download/jdk-${MY_PV}/"
+ local musl=
+ local os=linux
+ local libc=glibc
+
+ case ${2} in
+ *-macos) os=mac ;;
+ *-solaris) os=solaris ;;
+ esac
+
+ if [[ ${3} == musl ]]; then
+ os=alpine-linux
+ musl=true
+ libc=musl
+ fi
+
+ if [[ ${os} == mac ]]; then
+ libc=
+ fi
+
+ echo "${2-$1}? (
+ ${musl:+ elibc_musl? ( }
+ ${baseuri}/OpenJDK$(ver_cut 1)U-jdk_${1}_${os}_hotspot_${MY_PV//+/_}.tar.gz
+ static-libs? (
+ ${baseuri}/OpenJDK$(ver_cut 1)U-static-libs${libc:+-$libc}_${1}_${os}_hotspot_${MY_PV//+/_}.tar.gz
+ )
+ ${musl:+ ) } )"
+}
+
+MY_PV=${PV/_p/+}
+
+DESCRIPTION="Prebuilt Java JDK binaries provided by Eclipse Temurin"
+HOMEPAGE="https://adoptium.net"
+SRC_URI="
+ $(abi_uri aarch64 arm64)
+ $(abi_uri aarch64 arm64-macos)
+ $(abi_uri aarch64 arm64 musl)
+ $(abi_uri ppc64le ppc64)
+ $(abi_uri x64 amd64)
+ $(abi_uri x64 amd64 musl)
+ $(abi_uri riscv64 riscv)
+ $(abi_uri x64 x64-macos)
+"
+S="${WORKDIR}/jdk-${MY_PV}"
+
+LICENSE="GPL-2-with-classpath-exception"
+SLOT=$(ver_cut 1)
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+IUSE="alsa cups headless-awt selinux source static-libs"
+
+RDEPEND="
+ >=sys-apps/baselayout-java-0.1.0-r1
+ kernel_linux? (
+ media-libs/fontconfig:1.0
+ media-libs/freetype:2
+ media-libs/harfbuzz
+ elibc_glibc? ( >=sys-libs/glibc-2.2.5:* )
+ elibc_musl? ( sys-libs/musl )
+ virtual/zlib:=
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ selinux? ( sec-policy/selinux-java )
+ !headless-awt? (
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ x11-libs/libXtst
+ )
+ )"
+
+RESTRICT="preserve-libs splitdebug"
+QA_PREBUILT="*"
+
+pkg_pretend() {
+ if [[ "$(tc-is-softfloat)" != "no" ]]; then
+ die "These binaries require a hardfloat system."
+ fi
+}
+
+src_unpack() {
+ default
+ if [[ ${A} == *_mac_* ]] ; then
+ mv -v "${S}/Contents/Home/"* "${S}" || die
+ rm -Rf "${S}/Contents" # drop macOS executable
+ fi
+}
+
+src_install() {
+ local dest="/opt/${P}"
+ local ddest="${ED}/${dest#/}"
+
+ if use static-libs ; then
+ cd "${S}"-static-libs/lib/static/*/* || die
+ cp -pPR * "${S}"/lib || die
+ strip-lto-bytecode "${S}"/lib || die
+ fi
+
+ cd "${S}"
+
+ # https://bugs.gentoo.org/922741
+ docompress "${dest}/man"
+
+ # on macOS if they would exist they would be called .dylib, but most
+ # importantly, there are no different providers, so everything
+ # that's shipped works.
+ if [[ ${A} != *_mac_* ]] ; then
+ # Not sure why they bundle this as it's commonly available and they
+ # only do so on x86_64. It's needed by libfontmanager.so. IcedTea
+ # also has an explicit dependency while Oracle seemingly dlopens it.
+ rm -vf lib/libfreetype.so || die
+
+ # prefer system copy # https://bugs.gentoo.org/776676
+ rm -vf lib/libharfbuzz.so || die
+
+ # Oracle and IcedTea have libjsoundalsa.so depending on
+ # libasound.so.2 but AdoptOpenJDK only has libjsound.so. Weird.
+ if ! use alsa ; then
+ rm -v lib/libjsound.* || die
+ fi
+
+ if use headless-awt ; then
+ # do not die if not available, -f for bug #934974
+ rm -fv lib/lib*{[jx]awt,splashscreen}* || die
+ fi
+ fi
+
+ if ! use source ; then
+ rm -v lib/src.zip || die
+ fi
+
+ rm -v lib/security/cacerts || die
+ dosym -r /etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts
+
+ dodir "${dest}"
+ cp -pPR * "${ddest}" || die
+
+ # provide stable symlink
+ dosym "${P}" "/opt/${PN}-${SLOT}"
+
+ java-vm_install-env "${FILESDIR}"/${PN}.env.sh
+ java-vm_set-pax-markings "${ddest}"
+ java-vm_revdep-mask
+ java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
+}
+
+pkg_postinst() {
+ java-vm-2_pkg_postinst
+}
diff --git a/dev-java/openjdk-bin/openjdk-bin-25.0.4.1_p1-r1.ebuild b/dev-java/openjdk-bin/openjdk-bin-25.0.4.1_p1-r1.ebuild
new file mode 100644
index 000000000000..488d20728a9c
--- /dev/null
+++ b/dev-java/openjdk-bin/openjdk-bin-25.0.4.1_p1-r1.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit dot-a java-vm-2 toolchain-funcs
+
+abi_uri() {
+ local baseuri="https://github.com/adoptium/temurin$(ver_cut 1)-binaries/releases/download/jdk-${PVB}/"
+ local musl=
+ local os=linux
+ local libc=glibc
+
+ case ${2} in
+ *-macos) os=mac ;;
+ *-solaris) os=solaris ;;
+ esac
+
+ if [[ ${3} == musl ]]; then
+ os=alpine-linux
+ musl=true
+ libc=musl
+ fi
+
+ if [[ ${os} == mac ]]; then
+ libc=
+ fi
+
+ echo "${2-$1}? (
+ ${musl:+ elibc_musl? ( }
+ ${baseuri}/OpenJDK$(ver_cut 1)U-jdk_${1}_${os}_hotspot_${PVH}.tar.gz
+ static-libs? (
+ ${baseuri}/OpenJDK$(ver_cut 1)U-static-libs${libc:+-$libc}_${1}_${os}_hotspot_${PVH}.tar.gz
+ )
+ ${musl:+ ) } )"
+}
+
+# In "early access" versions, SRC_URI is different from released versions
+# and contains strings like 'jdk-25+36-ea-beta' and '_25_36-ea.tar.gz'
+# According to file naming rules, the ebuilds are named like
+# 'openjdk-bin-25_beta36.ebuild'.
+if [[ "${PV%_beta*}" != "${PV}" ]]; then # version string contains "_beta"
+ MY_PV="${PV/_beta/+}"
+ PVB="${PV/_beta/+}-ea-beta"
+ PVH="${PV/_beta/_}-ea"
+else
+ MY_PV="${PV/_p/+}"
+ PVB="${MY_PV}"
+ PVH="${MY_PV//+/_}"
+fi
+
+DESCRIPTION="Prebuilt Java JDK binaries provided by Eclipse Temurin"
+HOMEPAGE="https://adoptium.net"
+SRC_URI="
+ $(abi_uri aarch64 arm64)
+ $(abi_uri aarch64 arm64-macos)
+ $(abi_uri aarch64 arm64 musl)
+ $(abi_uri ppc64le ppc64)
+ $(abi_uri x64 amd64)
+ $(abi_uri x64 amd64 musl)
+ $(abi_uri riscv64 riscv)
+ $(abi_uri x64 x64-macos)
+"
+S="${WORKDIR}/jdk-${MY_PV}"
+
+LICENSE="GPL-2-with-classpath-exception"
+SLOT=$(ver_cut 1)
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+IUSE="alsa cups headless-awt selinux source static-libs"
+
+RDEPEND="
+ >=sys-apps/baselayout-java-0.1.0-r1
+ kernel_linux? (
+ media-libs/fontconfig:1.0
+ media-libs/freetype:2
+ media-libs/harfbuzz
+ elibc_glibc? ( >=sys-libs/glibc-2.2.5:* )
+ elibc_musl? ( sys-libs/musl )
+ virtual/zlib:=
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ selinux? ( sec-policy/selinux-java )
+ !headless-awt? (
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ x11-libs/libXtst
+ )
+ )"
+
+RESTRICT="preserve-libs splitdebug"
+QA_PREBUILT="*"
+
+pkg_pretend() {
+ if [[ "$(tc-is-softfloat)" != "no" ]]; then
+ die "These binaries require a hardfloat system."
+ fi
+}
+
+src_unpack() {
+ default
+ if [[ ${A} == *_mac_* ]] ; then
+ mv -v "${S}/Contents/Home/"* "${S}" || die
+ rm -Rf "${S}/Contents" # drop macOS executable
+ fi
+}
+
+src_install() {
+ local dest="/opt/${P}"
+ local ddest="${ED}/${dest#/}"
+
+ if use static-libs ; then
+ cd "${S}"-static-libs/lib/static/*/* || die
+ cp -pPR * "${S}"/lib || die
+ strip-lto-bytecode "${S}"/lib || die
+ fi
+
+ cd "${S}"
+
+ # https://bugs.gentoo.org/922741
+ docompress "${dest}/man"
+
+ # on macOS if they would exist they would be called .dylib, but most
+ # importantly, there are no different providers, so everything
+ # that's shipped works.
+ if [[ ${A} != *_mac_* ]] ; then
+ # Not sure why they bundle this as it's commonly available and they
+ # only do so on x86_64. It's needed by libfontmanager.so. IcedTea
+ # also has an explicit dependency while Oracle seemingly dlopens it.
+ rm -vf lib/libfreetype.so || die
+
+ # prefer system copy # https://bugs.gentoo.org/776676
+ rm -vf lib/libharfbuzz.so || die
+
+ # Oracle and IcedTea have libjsoundalsa.so depending on
+ # libasound.so.2 but AdoptOpenJDK only has libjsound.so. Weird.
+ if ! use alsa ; then
+ rm -v lib/libjsound.* || die
+ fi
+
+ if use headless-awt ; then
+ # do not die if not available, -f for bug #934974
+ rm -fv lib/lib*{[jx]awt,splashscreen}* || die
+ fi
+ fi
+
+ if ! use source ; then
+ rm -v lib/src.zip || die
+ fi
+
+ rm -v lib/security/cacerts || die
+ dosym -r /etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts
+
+ dodir "${dest}"
+ cp -pPR * "${ddest}" || die
+
+ # provide stable symlink
+ dosym "${P}" "/opt/${PN}-${SLOT}"
+
+ java-vm_install-env "${FILESDIR}"/${PN}.env.sh
+ java-vm_set-pax-markings "${ddest}"
+ java-vm_revdep-mask
+ java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
+}
+
+pkg_postinst() {
+ java-vm-2_pkg_postinst
+}
diff --git a/dev-java/openjdk-bin/openjdk-bin-27_beta35-r1.ebuild b/dev-java/openjdk-bin/openjdk-bin-27_beta35-r1.ebuild
new file mode 100644
index 000000000000..8ae9314e20d3
--- /dev/null
+++ b/dev-java/openjdk-bin/openjdk-bin-27_beta35-r1.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit dot-a java-vm-2 toolchain-funcs
+
+abi_uri() {
+ local baseuri="https://github.com/adoptium/temurin$(ver_cut 1)-binaries/releases/download/jdk-${PVB}/"
+ local musl=
+ local os=linux
+ local libc=glibc
+
+ case ${2} in
+ *-macos) os=mac ;;
+ *-solaris) os=solaris ;;
+ esac
+
+ if [[ ${3} == musl ]]; then
+ os=alpine-linux
+ musl=true
+ libc=musl
+ fi
+
+ if [[ ${os} == mac ]]; then
+ libc=
+ fi
+
+ echo "${2-$1}? (
+ ${musl:+ elibc_musl? ( }
+ ${baseuri}/OpenJDK${JDK_REPO}-jdk_${1}_${os}_hotspot_${PVH}.tar.gz
+ static-libs? (
+ ${baseuri}/OpenJDK${JDK_REPO}-static-libs${libc:+-$libc}_${1}_${os}_hotspot_${PVH}.tar.gz
+ )
+ ${musl:+ ) } )"
+}
+
+# In "early access" versions, SRC_URI is different from released versions
+# and contains strings like 'jdk-25+36-ea-beta' and '_25_36-ea.tar.gz'
+# According to file naming rules, the ebuilds are named like
+# 'openjdk-bin-26_alpha20.ebuild' or 'openjdk-bin-25_beta36.ebuild'.
+if [[ "${PV%_alpha*}" != "${PV}" ]]; then # version string contains "_alpha"
+ MY_PV="${PV/_alpha/+}"
+ JDK_REPO=""
+ PVB="${PV/_alpha/+}-ea-beta"
+ PVH="${PV/_alpha/_}-ea"
+elif [[ "${PV%_beta*}" != "${PV}" ]]; then # version string contains "_beta"
+ MY_PV="${PV/_beta/+}"
+ JDK_REPO="$(ver_cut 1)U"
+ PVB="${PV/_beta/+}-ea-beta"
+ PVH="${PV/_beta/_}-ea"
+else
+ MY_PV="${PV/_p/+}"
+ JDK_REPO="$(ver_cut 1)u"
+ PVB="${MY_PV}"
+ PVH="${MY_PV//+/_}"
+fi
+
+DESCRIPTION="Prebuilt Java JDK binaries provided by Eclipse Temurin"
+HOMEPAGE="https://adoptium.net"
+SRC_URI="
+ $(abi_uri aarch64 arm64)
+ $(abi_uri aarch64 arm64-macos)
+ $(abi_uri aarch64 arm64 musl)
+ $(abi_uri ppc64le ppc64)
+ $(abi_uri x64 amd64)
+ $(abi_uri x64 amd64 musl)
+ $(abi_uri riscv64 riscv)
+ $(abi_uri x64 x64-macos)
+"
+S="${WORKDIR}/jdk-${MY_PV}"
+
+LICENSE="GPL-2-with-classpath-exception"
+SLOT=$(ver_cut 1)
+# KEYWORDS="" # Not an LTS candidate
+IUSE="alsa cups headless-awt selinux source static-libs"
+
+RDEPEND="
+ >=sys-apps/baselayout-java-0.1.0-r1
+ kernel_linux? (
+ media-libs/fontconfig:1.0
+ media-libs/freetype:2
+ media-libs/harfbuzz
+ elibc_glibc? ( >=sys-libs/glibc-2.2.5:* )
+ elibc_musl? ( sys-libs/musl )
+ virtual/zlib:=
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ selinux? ( sec-policy/selinux-java )
+ !headless-awt? (
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ x11-libs/libXtst
+ )
+ )"
+
+RESTRICT="preserve-libs splitdebug"
+QA_PREBUILT="*"
+
+pkg_pretend() {
+ if [[ "$(tc-is-softfloat)" != "no" ]]; then
+ die "These binaries require a hardfloat system."
+ fi
+}
+
+src_unpack() {
+ default
+ if [[ ${A} == *_mac_* ]] ; then
+ mv -v "${S}/Contents/Home/"* "${S}" || die
+ rm -Rf "${S}/Contents" # drop macOS executable
+ fi
+}
+
+src_install() {
+ local dest="/opt/${P}"
+ local ddest="${ED}/${dest#/}"
+
+ if use static-libs ; then
+ cd "${S}"-static-libs/lib/static/*/* || die
+ cp -pPR * "${S}"/lib || die
+ strip-lto-bytecode "${S}"/lib || die
+ fi
+
+ cd "${S}"
+
+ # https://bugs.gentoo.org/922741
+ docompress "${dest}/man"
+
+ # on macOS if they would exist they would be called .dylib, but most
+ # importantly, there are no different providers, so everything
+ # that's shipped works.
+ if [[ ${A} != *_mac_* ]] ; then
+ # Not sure why they bundle this as it's commonly available and they
+ # only do so on x86_64. It's needed by libfontmanager.so. IcedTea
+ # also has an explicit dependency while Oracle seemingly dlopens it.
+ rm -vf lib/libfreetype.so || die
+
+ # prefer system copy # https://bugs.gentoo.org/776676
+ rm -vf lib/libharfbuzz.so || die
+
+ # Oracle and IcedTea have libjsoundalsa.so depending on
+ # libasound.so.2 but AdoptOpenJDK only has libjsound.so. Weird.
+ if ! use alsa ; then
+ rm -v lib/libjsound.* || die
+ fi
+
+ if use headless-awt ; then
+ # do not die if not available, -f for bug #934974
+ rm -fv lib/lib*{[jx]awt,splashscreen}* || die
+ fi
+ fi
+
+ if ! use source ; then
+ rm -v lib/src.zip || die
+ fi
+
+ rm -v lib/security/cacerts || die
+ dosym -r /etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts
+
+ dodir "${dest}"
+ cp -pPR * "${ddest}" || die
+
+ # provide stable symlink
+ dosym "${P}" "/opt/${PN}-${SLOT}"
+
+ java-vm_install-env "${FILESDIR}"/${PN}.env.sh
+ java-vm_set-pax-markings "${ddest}"
+ java-vm_revdep-mask
+ java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
+}
+
+pkg_postinst() {
+ java-vm-2_pkg_postinst
+}
diff --git a/dev-java/openjdk-bin/openjdk-bin-28_alpha13-r1.ebuild b/dev-java/openjdk-bin/openjdk-bin-28_alpha13-r1.ebuild
new file mode 100644
index 000000000000..8ae9314e20d3
--- /dev/null
+++ b/dev-java/openjdk-bin/openjdk-bin-28_alpha13-r1.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit dot-a java-vm-2 toolchain-funcs
+
+abi_uri() {
+ local baseuri="https://github.com/adoptium/temurin$(ver_cut 1)-binaries/releases/download/jdk-${PVB}/"
+ local musl=
+ local os=linux
+ local libc=glibc
+
+ case ${2} in
+ *-macos) os=mac ;;
+ *-solaris) os=solaris ;;
+ esac
+
+ if [[ ${3} == musl ]]; then
+ os=alpine-linux
+ musl=true
+ libc=musl
+ fi
+
+ if [[ ${os} == mac ]]; then
+ libc=
+ fi
+
+ echo "${2-$1}? (
+ ${musl:+ elibc_musl? ( }
+ ${baseuri}/OpenJDK${JDK_REPO}-jdk_${1}_${os}_hotspot_${PVH}.tar.gz
+ static-libs? (
+ ${baseuri}/OpenJDK${JDK_REPO}-static-libs${libc:+-$libc}_${1}_${os}_hotspot_${PVH}.tar.gz
+ )
+ ${musl:+ ) } )"
+}
+
+# In "early access" versions, SRC_URI is different from released versions
+# and contains strings like 'jdk-25+36-ea-beta' and '_25_36-ea.tar.gz'
+# According to file naming rules, the ebuilds are named like
+# 'openjdk-bin-26_alpha20.ebuild' or 'openjdk-bin-25_beta36.ebuild'.
+if [[ "${PV%_alpha*}" != "${PV}" ]]; then # version string contains "_alpha"
+ MY_PV="${PV/_alpha/+}"
+ JDK_REPO=""
+ PVB="${PV/_alpha/+}-ea-beta"
+ PVH="${PV/_alpha/_}-ea"
+elif [[ "${PV%_beta*}" != "${PV}" ]]; then # version string contains "_beta"
+ MY_PV="${PV/_beta/+}"
+ JDK_REPO="$(ver_cut 1)U"
+ PVB="${PV/_beta/+}-ea-beta"
+ PVH="${PV/_beta/_}-ea"
+else
+ MY_PV="${PV/_p/+}"
+ JDK_REPO="$(ver_cut 1)u"
+ PVB="${MY_PV}"
+ PVH="${MY_PV//+/_}"
+fi
+
+DESCRIPTION="Prebuilt Java JDK binaries provided by Eclipse Temurin"
+HOMEPAGE="https://adoptium.net"
+SRC_URI="
+ $(abi_uri aarch64 arm64)
+ $(abi_uri aarch64 arm64-macos)
+ $(abi_uri aarch64 arm64 musl)
+ $(abi_uri ppc64le ppc64)
+ $(abi_uri x64 amd64)
+ $(abi_uri x64 amd64 musl)
+ $(abi_uri riscv64 riscv)
+ $(abi_uri x64 x64-macos)
+"
+S="${WORKDIR}/jdk-${MY_PV}"
+
+LICENSE="GPL-2-with-classpath-exception"
+SLOT=$(ver_cut 1)
+# KEYWORDS="" # Not an LTS candidate
+IUSE="alsa cups headless-awt selinux source static-libs"
+
+RDEPEND="
+ >=sys-apps/baselayout-java-0.1.0-r1
+ kernel_linux? (
+ media-libs/fontconfig:1.0
+ media-libs/freetype:2
+ media-libs/harfbuzz
+ elibc_glibc? ( >=sys-libs/glibc-2.2.5:* )
+ elibc_musl? ( sys-libs/musl )
+ virtual/zlib:=
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ selinux? ( sec-policy/selinux-java )
+ !headless-awt? (
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ x11-libs/libXtst
+ )
+ )"
+
+RESTRICT="preserve-libs splitdebug"
+QA_PREBUILT="*"
+
+pkg_pretend() {
+ if [[ "$(tc-is-softfloat)" != "no" ]]; then
+ die "These binaries require a hardfloat system."
+ fi
+}
+
+src_unpack() {
+ default
+ if [[ ${A} == *_mac_* ]] ; then
+ mv -v "${S}/Contents/Home/"* "${S}" || die
+ rm -Rf "${S}/Contents" # drop macOS executable
+ fi
+}
+
+src_install() {
+ local dest="/opt/${P}"
+ local ddest="${ED}/${dest#/}"
+
+ if use static-libs ; then
+ cd "${S}"-static-libs/lib/static/*/* || die
+ cp -pPR * "${S}"/lib || die
+ strip-lto-bytecode "${S}"/lib || die
+ fi
+
+ cd "${S}"
+
+ # https://bugs.gentoo.org/922741
+ docompress "${dest}/man"
+
+ # on macOS if they would exist they would be called .dylib, but most
+ # importantly, there are no different providers, so everything
+ # that's shipped works.
+ if [[ ${A} != *_mac_* ]] ; then
+ # Not sure why they bundle this as it's commonly available and they
+ # only do so on x86_64. It's needed by libfontmanager.so. IcedTea
+ # also has an explicit dependency while Oracle seemingly dlopens it.
+ rm -vf lib/libfreetype.so || die
+
+ # prefer system copy # https://bugs.gentoo.org/776676
+ rm -vf lib/libharfbuzz.so || die
+
+ # Oracle and IcedTea have libjsoundalsa.so depending on
+ # libasound.so.2 but AdoptOpenJDK only has libjsound.so. Weird.
+ if ! use alsa ; then
+ rm -v lib/libjsound.* || die
+ fi
+
+ if use headless-awt ; then
+ # do not die if not available, -f for bug #934974
+ rm -fv lib/lib*{[jx]awt,splashscreen}* || die
+ fi
+ fi
+
+ if ! use source ; then
+ rm -v lib/src.zip || die
+ fi
+
+ rm -v lib/security/cacerts || die
+ dosym -r /etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts
+
+ dodir "${dest}"
+ cp -pPR * "${ddest}" || die
+
+ # provide stable symlink
+ dosym "${P}" "/opt/${PN}-${SLOT}"
+
+ java-vm_install-env "${FILESDIR}"/${PN}.env.sh
+ java-vm_set-pax-markings "${ddest}"
+ java-vm_revdep-mask
+ java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
+}
+
+pkg_postinst() {
+ java-vm-2_pkg_postinst
+}
diff --git a/dev-java/openjdk/openjdk-8.504_p01.ebuild b/dev-java/openjdk/openjdk-8.504_p01.ebuild
index 2fddd6f251df..ac8b5d860841 100644
--- a/dev-java/openjdk/openjdk-8.504_p01.ebuild
+++ b/dev-java/openjdk/openjdk-8.504_p01.ebuild
@@ -52,6 +52,7 @@ IUSE="alsa big-endian debug cups doc examples headless-awt +jbootstrap selinux s
COMMON_DEPEND="
media-libs/freetype:2=
+ media-libs/fontconfig:1.0
media-libs/giflib:0/7
virtual/zlib:=
"
@@ -78,7 +79,6 @@ DEPEND="
app-arch/zip
media-libs/alsa-lib
net-print/cups
- virtual/pkgconfig
x11-base/xorg-proto
x11-libs/libX11
x11-libs/libXext
@@ -194,32 +194,32 @@ src_configure() {
tc-export_build_env CC CXX PKG_CONFIG STRIP
myconf+=(
- --disable-ccache
- --disable-precompiled-headers
- --enable-unlimited-crypto
- --with-boot-jdk="${JDK_HOME}"
- --with-extra-cflags="${CFLAGS}"
- --with-extra-cxxflags="${CXXFLAGS}"
- --with-extra-ldflags="${LDFLAGS}"
- --with-freetype=system
- --with-freetype-lib="$( $(tc-getPKG_CONFIG) --variable=libdir freetype2 )"
- --with-freetype-include="$( $(tc-getPKG_CONFIG) --variable=includedir freetype2)/freetype2"
- --with-giflib="${XPAK_BOOTSTRAP:-system}"
- --with-jtreg=no
- --with-jobs=1
- --with-num-cores=1
- --with-update-version="$(ver_cut 2)"
- --with-build-number="b$(ver_cut 4)"
- --with-milestone="fcs" # magic variable that means "release version"
- --with-vendor-name="Gentoo"
- --with-vendor-url="https://gentoo.org"
- --with-vendor-bug-url="https://bugs.gentoo.org"
- --with-vendor-vm-bug-url="https://bugs.openjdk.java.net"
- --with-zlib="${XPAK_BOOTSTRAP:-system}"
- --with-native-debug-symbols=$(usex debug internal none)
- $(usex headless-awt --disable-headful '')
- $(tc-is-clang && echo "--with-toolchain-type=clang")
- )
+ --disable-ccache
+ --disable-precompiled-headers
+ --enable-unlimited-crypto
+ --with-boot-jdk="${JDK_HOME}"
+ --with-extra-cflags="${CFLAGS}"
+ --with-extra-cxxflags="${CXXFLAGS}"
+ --with-extra-ldflags="${LDFLAGS}"
+ --with-freetype=system
+ --with-freetype-lib="$( $(tc-getPKG_CONFIG) --variable=libdir freetype2 )"
+ --with-freetype-include="$( $(tc-getPKG_CONFIG) --variable=includedir freetype2)/freetype2"
+ --with-giflib="${XPAK_BOOTSTRAP:-system}"
+ --with-jtreg=no
+ --with-jobs=1
+ --with-num-cores=1
+ --with-update-version="$(ver_cut 2)"
+ --with-build-number="b$(ver_cut 4)"
+ --with-milestone="fcs" # magic variable that means "release version"
+ --with-vendor-name="Gentoo"
+ --with-vendor-url="https://gentoo.org"
+ --with-vendor-bug-url="https://bugs.gentoo.org"
+ --with-vendor-vm-bug-url="https://bugs.openjdk.java.net"
+ --with-zlib="${XPAK_BOOTSTRAP:-system}"
+ --with-native-debug-symbols=$(usex debug internal none)
+ $(usex headless-awt --disable-headful '')
+ $(tc-is-clang && echo "--with-toolchain-type=clang")
+ )
(
unset _JAVA_OPTIONS JAVA JAVA_TOOL_OPTIONS JAVAC MAKE XARGS
diff --git a/dev-lang/jsonnet/jsonnet-0.22.0.ebuild b/dev-lang/jsonnet/jsonnet-0.22.0.ebuild
index adbef0ba20d7..cbb8bad542b9 100644
--- a/dev-lang/jsonnet/jsonnet-0.22.0.ebuild
+++ b/dev-lang/jsonnet/jsonnet-0.22.0.ebuild
@@ -16,7 +16,7 @@ SRC_URI="https://github.com/google/jsonnet/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0/0"
-KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~ppc64 ~riscv ~x86"
IUSE="custom-optimization doc examples python test"
RESTRICT="!test? ( test )"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
diff --git a/dev-lang/php/php-8.2.33.ebuild b/dev-lang/php/php-8.2.33.ebuild
index c5390108592f..dc5ff96a8588 100644
--- a/dev-lang/php/php-8.2.33.ebuild
+++ b/dev-lang/php/php-8.2.33.ebuild
@@ -20,7 +20,7 @@ LICENSE="PHP-3.01
unicode? ( BSD-2 LGPL-2.1 )"
SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
# We can build the following SAPIs in the given order
SAPIS="embed cli cgi fpm apache2 phpdbg"
diff --git a/dev-lang/php/php-8.3.33.ebuild b/dev-lang/php/php-8.3.33.ebuild
index ec582e2d1650..73a0d7dd4cf6 100644
--- a/dev-lang/php/php-8.3.33.ebuild
+++ b/dev-lang/php/php-8.3.33.ebuild
@@ -19,7 +19,7 @@ LICENSE="PHP-3.01
unicode? ( BSD-2 LGPL-2.1 )"
SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
# We can build the following SAPIs in the given order
SAPIS="embed cli cgi fpm apache2 phpdbg"
diff --git a/dev-libs/aws-c-s3/Manifest b/dev-libs/aws-c-s3/Manifest
index c736a1f9d08e..0d99991a5d7b 100644
--- a/dev-libs/aws-c-s3/Manifest
+++ b/dev-libs/aws-c-s3/Manifest
@@ -1,3 +1,4 @@
DIST aws-c-s3-0.11.2.tar.gz 430361 BLAKE2B f7b0d331b540066eef7f50b5451e8fefa058f5b4b70877beefabb36a6d5e610e8ea99903505b7edffcf459cffcfabc19cd27a93a3f7ec421a5a7851403d44d2e SHA512 6bb5a925882d2c645ee856665271977b9c332a1cc8b8f6acef8707eb5710101d8922c7fed12f5638f1cd44f1c59abf86704e49e7fdc361ed686cc005d5d152a3
DIST aws-c-s3-0.13.1.tar.gz 460654 BLAKE2B 6a297805c93b855b8228c7e49df46ab5a1801ce0cfb3a0cf9fe41fb0d0cabdbf5187aa03c7b776b94ea260768bbf1e0c9e3bc72cfd1532f9c8a81e3a541dd47f SHA512 08d7df6a9c01cbc6b1d14aa9f22a9b93b1b9d7fd10d4379be82a438f7709a1c4553f0bb0328ea52670897fb87c0c81d7fdf3cfeee9f499745f49597a93a7613b
DIST aws-c-s3-1.1.1.tar.gz 500597 BLAKE2B d8a790abcece7b108b56c7567612d2edf6782e2e7262a82ac64ebe4b4fbd982bfc4f922997ce7c66702337ab81d827d110bbe58e698dc7c970155e281c6c8364 SHA512 28f5b18869af318d848a8cab69fdeb8e1991ca87a2b6e6dd3cb2e026f398bae8b832e7dba7960e271fe0295094419c22d47932c43e068a882fbe820e4f432086
+DIST aws-c-s3-1.1.2.tar.gz 502623 BLAKE2B 8e64f8196cafef0a73a3830f3521064c053f59e4418c5c9fc97a91c0f0184ac54207186a1bdfdfed5c904c6fd5488d6392e7a6486da8918eb39d7f05e02f5957 SHA512 6b424e00961e2252f071c2814a35ab20b4281cff0a129cb91c6b2228acaa6c925a7b7bb4aae568375ff80bc60ccd4ba17fcae29e25947cd98d4418a3d41d8913
diff --git a/dev-libs/aws-c-s3/aws-c-s3-1.1.2.ebuild b/dev-libs/aws-c-s3/aws-c-s3-1.1.2.ebuild
new file mode 100644
index 000000000000..e5f01dea4d44
--- /dev/null
+++ b/dev-libs/aws-c-s3/aws-c-s3-1.1.2.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="AWS C S3 async library"
+HOMEPAGE="https://github.com/awslabs/aws-c-s3"
+SRC_URI="https://github.com/awslabs/aws-c-s3/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ >=dev-libs/aws-c-auth-1.0.0:=
+ >=dev-libs/aws-c-cal-1.0.0:=
+ >=dev-libs/aws-c-common-1.0.0:=
+ >=dev-libs/aws-c-http-1.0.0:=
+ >=dev-libs/aws-c-io-1.0.0:=
+ >=dev-libs/aws-checksums-1.0.0:=
+"
+RDEPEND="${DEPEND}"
+BDEPEND="dev-libs/aws-c-common"
+
+src_configure() {
+ local mycmakeargs=(
+ -DAWS_GET_VERSION_MODULE="${ESYSROOT}/usr/$(get_libdir)/cmake/aws-c-common/modules/AwsGetVersion.cmake"
+ -DBUILD_TESTING=$(usex test)
+ )
+ use test && mycmakeargs+=(
+ -DENABLE_NET_TESTS=OFF # Network Sandbox cause these to fail.
+ )
+
+ cmake_src_configure
+}
+
+src_install()
+{
+ cmake_src_install
+
+ if use test; then
+ rm "${ED}/usr/bin/s3" || die
+ fi
+}
diff --git a/dev-libs/gweather-locations/gweather-locations-2026.2.ebuild b/dev-libs/gweather-locations/gweather-locations-2026.2.ebuild
index e34403a206ce..a805af7b61b9 100644
--- a/dev-libs/gweather-locations/gweather-locations-2026.2.ebuild
+++ b/dev-libs/gweather-locations/gweather-locations-2026.2.ebuild
@@ -3,16 +3,27 @@
EAPI=8
-inherit gnome.org meson
+PYTHON_COMPAT=( python3_{13..14} )
+inherit gnome.org meson python-any-r1
DESCRIPTION="GWeather Locations Database"
HOMEPAGE="https://gitlab.gnome.org/GNOME/gweather-locations"
+
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
BDEPEND="
+ $(python_gen_any_dep '
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ ')
virtual/pkgconfig
- dev-libs/libxml2
- dev-python/pylint
"
+
+python_check_deps() {
+ python_has_version "dev-python/pygobject[${PYTHON_USEDEP}]"
+}
+
+src_test() {
+ meson_src_test --no-suite lint
+}
diff --git a/dev-libs/iniparser/Manifest b/dev-libs/iniparser/Manifest
index c05abfff66d5..3760c78ee1b0 100644
--- a/dev-libs/iniparser/Manifest
+++ b/dev-libs/iniparser/Manifest
@@ -1 +1,2 @@
DIST iniparser-v4.2.6.tar.bz2 34731 BLAKE2B ce63256b8a6640e188184f7d1d7de40690ca612938d6d06cb97d012fe40e05e647510d97221bc61fa25db47a96565b21e7fd346f370afde7d3c461f93c3e2fc0 SHA512 6a37c0bad24093c5852d232e13e1c2182ab97508be3b03a44ea5510a70884cb7ac1fa8a9e8415ece2d2a13c9b38efabc1d37d920d894a198b89cd04731f32392
+DIST iniparser-v4.3.0.tar.bz2 306990 BLAKE2B 32c35ced168511f2a72366dd5a47339d430830602d8aed6b3ca1b408ddcb7f2396ae418ada61d19eade7938e5002d9a70ac077428e7ca4f184aa29451a770f87 SHA512 351f0bbdecb147058cc234f1ab6b49579f93d5754b9c636336eb5fc069c8a141e6c6bb1d6f6a7640d60fc68c2617f4ed193cf534685c6706efa68dac0fb2357c
diff --git a/dev-libs/iniparser/iniparser-4.3.0.ebuild b/dev-libs/iniparser/iniparser-4.3.0.ebuild
new file mode 100644
index 000000000000..c55f13e2f22f
--- /dev/null
+++ b/dev-libs/iniparser/iniparser-4.3.0.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Free stand-alone ini file parsing library"
+HOMEPAGE="https://gitlab.com/iniparser/iniparser/"
+SRC_URI="https://gitlab.com/iniparser/iniparser/-/archive/v${PV}/${PN}-v${PV}.tar.bz2"
+S=${WORKDIR}/${PN}-v${PV}
+
+LICENSE="MIT"
+SLOT="0/4"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+IUSE="doc examples"
+# tests need work, uses ruby + fetchcontent
+RESTRICT="test"
+
+BDEPEND="doc? ( app-text/doxygen )"
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_DOCS=$(usex doc)
+ -DBUILD_STATIC_LIBS=no
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ local DOCS=( AUTHORS README.md FAQ* )
+ cmake_src_install
+
+ if use examples; then
+ docinto examples
+ dodoc -r example/.
+ fi
+}
diff --git a/dev-libs/libpeas/libpeas-2.2.1.ebuild b/dev-libs/libpeas/libpeas-2.2.1.ebuild
index e901c27b5c8a..f4a83e15ffa5 100644
--- a/dev-libs/libpeas/libpeas-2.2.1.ebuild
+++ b/dev-libs/libpeas/libpeas-2.2.1.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://gitlab.gnome.org/GNOME/libpeas"
LICENSE="LGPL-2.1+"
SLOT="2"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE="glade gtk-doc javascript lua +python vala"
REQUIRED_USE="
diff --git a/dev-perl/Crypt-OpenSSL-RSA/Crypt-OpenSSL-RSA-0.370.0.ebuild b/dev-perl/Crypt-OpenSSL-RSA/Crypt-OpenSSL-RSA-0.370.0.ebuild
index 6ab06c4bdc37..76d11bb8e21e 100644
--- a/dev-perl/Crypt-OpenSSL-RSA/Crypt-OpenSSL-RSA-0.370.0.ebuild
+++ b/dev-perl/Crypt-OpenSSL-RSA/Crypt-OpenSSL-RSA-0.370.0.ebuild
@@ -10,7 +10,7 @@ inherit perl-module
DESCRIPTION="RSA encoding and decoding using the OpenSSL libraries"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
dev-perl/Crypt-OpenSSL-Bignum
diff --git a/dev-perl/ExtUtils-XSpp/ExtUtils-XSpp-0.180.0-r2.ebuild b/dev-perl/ExtUtils-XSpp/ExtUtils-XSpp-0.190.0.ebuild
index a81c05e04a17..71812c25dd55 100644
--- a/dev-perl/ExtUtils-XSpp/ExtUtils-XSpp-0.180.0-r2.ebuild
+++ b/dev-perl/ExtUtils-XSpp/ExtUtils-XSpp-0.190.0.ebuild
@@ -1,10 +1,10 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-DIST_AUTHOR=SMUELLER
-DIST_VERSION=0.18
+DIST_AUTHOR=MBARBON
+DIST_VERSION=0.19
inherit perl-module
DESCRIPTION="XS for C++"
@@ -24,10 +24,6 @@ BDEPEND="${RDEPEND}
)
"
-PATCHES=(
- "${FILESDIR}/${P}-no-dot-inc.patch"
-)
-
PERL_RM_FILES=(
"t/zzz_pod.t"
)
diff --git a/dev-perl/ExtUtils-XSpp/Manifest b/dev-perl/ExtUtils-XSpp/Manifest
index 46797014379b..b85f8865265f 100644
--- a/dev-perl/ExtUtils-XSpp/Manifest
+++ b/dev-perl/ExtUtils-XSpp/Manifest
@@ -1 +1 @@
-DIST ExtUtils-XSpp-0.18.tar.gz 185431 BLAKE2B 785bc3fc8e648bc7f079df0d6b0ca68cc156d1f661b49258c32ae1d5571c2715a97f3dedd34e54c48cac85c46fcedf95ce78cc69444396502527b29b9f8e7d6e SHA512 0e075876f8a269bd0df71a37bcfe7c164fa18ffabe72deecb57d5ebefa3a78fc0c2438e75319497e0e1f99e6f9af9ae33af8ecb67e1d411356d6f3a50cd9ea1e
+DIST ExtUtils-XSpp-0.19.tar.gz 187537 BLAKE2B 6224155e26d66f4529edc2924cc0332b8988e76c004d1ea7c137bde99a76591436f5f2fa410daa04864ef56fae20d119c4220e8d3c3f735f653d7a5045897566 SHA512 2385a22ed116c6e6ea5bed0e7964a21ef7ec511ad92fa98bf2dc97a6b224f50989802d7694bc46af40f0c58e6e31ee50d1c259a214f3328595c3df080b2d1e55
diff --git a/dev-perl/Feature-Compat-Class/Feature-Compat-Class-0.80.0.ebuild b/dev-perl/Feature-Compat-Class/Feature-Compat-Class-0.80.0.ebuild
index 782a43d4d2f6..281a55e606b2 100644
--- a/dev-perl/Feature-Compat-Class/Feature-Compat-Class-0.80.0.ebuild
+++ b/dev-perl/Feature-Compat-Class/Feature-Compat-Class-0.80.0.ebuild
@@ -10,7 +10,7 @@ inherit perl-module
DESCRIPTION="Make class syntax available"
SLOT="0"
-KEYWORDS="~amd64 ~ppc ~x86"
+KEYWORDS="amd64 ~ppc x86"
RDEPEND=">=dev-perl/Object-Pad-0.823.0"
BDEPEND=">=dev-perl/Module-Build-0.400.400"
diff --git a/dev-perl/GnuPG-Interface/GnuPG-Interface-1.70.0.ebuild b/dev-perl/GnuPG-Interface/GnuPG-Interface-1.70.0.ebuild
index 92bbc112d895..c49a5209a24c 100644
--- a/dev-perl/GnuPG-Interface/GnuPG-Interface-1.70.0.ebuild
+++ b/dev-perl/GnuPG-Interface/GnuPG-Interface-1.70.0.ebuild
@@ -10,7 +10,7 @@ inherit perl-module
DESCRIPTION="Perl interface to GnuPG"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~hppa ~ppc ~riscv ~x86"
+KEYWORDS="amd64 ~arm ~hppa ppc ~riscv x86"
RDEPEND="
|| ( >=app-crypt/gnupg-1.4 app-crypt/freepg )
diff --git a/dev-perl/Gtk2/Gtk2-1.249.930-r2.ebuild b/dev-perl/Gtk2/Gtk2-1.249.930-r2.ebuild
index 7cd4145e2659..cdfcf1cd6033 100644
--- a/dev-perl/Gtk2/Gtk2-1.249.930-r2.ebuild
+++ b/dev-perl/Gtk2/Gtk2-1.249.930-r2.ebuild
@@ -11,7 +11,7 @@ DESCRIPTION="Perl bindings for GTK2"
LICENSE="LGPL-2.1+"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-perl/Linux-DVB/Linux-DVB-1.30.0.ebuild b/dev-perl/Linux-DVB/Linux-DVB-1.30.0.ebuild
index 4f6621da334c..4d66360ed9b8 100644
--- a/dev-perl/Linux-DVB/Linux-DVB-1.30.0.ebuild
+++ b/dev-perl/Linux-DVB/Linux-DVB-1.30.0.ebuild
@@ -13,6 +13,7 @@ SLOT="0"
KEYWORDS="~amd64 ~arm ~ppc ~x86"
DEPEND="sys-kernel/linux-headers"
+BDEPEND=">=dev-perl/Canary-Stability-2001.0.0"
PATCHES=(
"${FILESDIR}"/${PN}-1.30.0-linux-headers.patch
diff --git a/dev-perl/Object-Pad/Object-Pad-0.825.0.ebuild b/dev-perl/Object-Pad/Object-Pad-0.825.0.ebuild
index e539d30cefb0..41d337c327e4 100644
--- a/dev-perl/Object-Pad/Object-Pad-0.825.0.ebuild
+++ b/dev-perl/Object-Pad/Object-Pad-0.825.0.ebuild
@@ -10,7 +10,7 @@ inherit perl-module
DESCRIPTION="Simple syntax for lexical field-based objects"
SLOT="0"
-KEYWORDS="~amd64 ~ppc ~x86"
+KEYWORDS="amd64 ~ppc x86"
RDEPEND="
dev-perl/File-ShareDir
diff --git a/dev-perl/Sys-Virt/Sys-Virt-12.2.0.ebuild b/dev-perl/Sys-Virt/Sys-Virt-12.2.0.ebuild
index e823cacf90cd..a7028dbc3bc4 100644
--- a/dev-perl/Sys-Virt/Sys-Virt-12.2.0.ebuild
+++ b/dev-perl/Sys-Virt/Sys-Virt-12.2.0.ebuild
@@ -18,7 +18,7 @@ inherit perl-module
DESCRIPTION="API for using the libvirt library from Perl"
SLOT="0"
-KEYWORDS="~amd64 ~ppc64 ~x86"
+KEYWORDS="amd64 ~ppc64 x86"
RDEPEND="
>=app-emulation/libvirt-${PV}
diff --git a/dev-perl/Wx-GLCanvas/Wx-GLCanvas-0.90.0-r1.ebuild b/dev-perl/Wx-GLCanvas/Wx-GLCanvas-0.90.0-r2.ebuild
index 2d495a904537..ab1779fb2ccf 100644
--- a/dev-perl/Wx-GLCanvas/Wx-GLCanvas-0.90.0-r1.ebuild
+++ b/dev-perl/Wx-GLCanvas/Wx-GLCanvas-0.90.0-r2.ebuild
@@ -1,11 +1,12 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DIST_AUTHOR=MBARBON
DIST_VERSION=0.09
-inherit perl-module virtualx
+WX_GTK_VER="3.2-gtk3"
+inherit perl-module virtualx toolchain-funcs wxwidgets
DESCRIPTION="interface to wxWidgets' OpenGL canvas"
@@ -22,6 +23,14 @@ BDEPEND="${RDEPEND}
virtual/perl-ExtUtils-MakeMaker
"
+src_configure() {
+ # use c++ compiler
+ export CC="$(tc-getCXX)"
+ export CXX="$(tc-getCXX)"
+ setup-wxwidgets
+ perl-module_src_configure
+}
+
src_test() {
perl_rm_files "t/zz_pod.t"
virtx perl-module_src_test
diff --git a/dev-perl/Wx/Wx-0.993.200-r4.ebuild b/dev-perl/Wx/Wx-0.993.200-r5.ebuild
index 05de17710b5f..7308ac4c99b7 100644
--- a/dev-perl/Wx/Wx-0.993.200-r4.ebuild
+++ b/dev-perl/Wx/Wx-0.993.200-r5.ebuild
@@ -27,7 +27,7 @@ RDEPEND="
DEPEND="${RDEPEND}
>=virtual/perl-ExtUtils-MakeMaker-6.480.0
>=virtual/perl-ExtUtils-ParseXS-3.150.0
- >=dev-perl/ExtUtils-XSpp-0.160.200
+ >=dev-perl/ExtUtils-XSpp-0.190.0
>=virtual/perl-if-0.30.0
test? (
>=virtual/perl-Test-Harness-2.260.0
diff --git a/dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.410.0.ebuild b/dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.410.0.ebuild
index a4d5141ebd92..7ccc7d3e1dec 100644
--- a/dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.410.0.ebuild
+++ b/dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.410.0.ebuild
@@ -10,7 +10,7 @@ inherit perl-module
DESCRIPTION="XS functions to assist in parsing sub-like syntax"
SLOT="0"
-KEYWORDS="~amd64 ~ppc ~x86"
+KEYWORDS="amd64 ~ppc x86"
RDEPEND="
>=dev-perl/File-ShareDir-1.0.0
diff --git a/dev-perl/libintl-perl/libintl-perl-1.370.0.ebuild b/dev-perl/libintl-perl/libintl-perl-1.370.0.ebuild
index 03b9dabc3bf2..ee055b8ef6bd 100644
--- a/dev-perl/libintl-perl/libintl-perl-1.370.0.ebuild
+++ b/dev-perl/libintl-perl/libintl-perl-1.370.0.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="http://guido-flohr.net/projects/libintl-perl https://metacpan.org/rele
LICENSE="GPL-3"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
IUSE="minimal"
RDEPEND="
diff --git a/dev-php/pecl-parallel/Manifest b/dev-php/pecl-parallel/Manifest
index 3bdc9e039160..5d4b64d60c58 100644
--- a/dev-php/pecl-parallel/Manifest
+++ b/dev-php/pecl-parallel/Manifest
@@ -1,2 +1,3 @@
DIST pecl-parallel-1.2.14.tgz 70887 BLAKE2B 657702180b4dc399c475e79e663053fcc485ff48a9cbc7402112061f6991f2772d69d35c0c7de0a266453959d4b7afd093b334cba1575b1dbab7b1460858d641 SHA512 8c601487641302d050bcf48df6aa62f1510d49c93084eb592bae35ba151414d25436d2a4681a226907392207fd86c8409893b122fb1e6159215a702be7f93802
+DIST pecl-parallel-1.2.15.tgz 71157 BLAKE2B c48621a4e162ca237253563c7e3d2f4948cfd561d8a2b4742849da9f554927cab57bac6be6a40c0c15aebd0d3805bf53cae9905eded88ee803af592a6ebc8894 SHA512 ec7f18c55ac847418994ddee5d86b72e011d553cc1575b4b3e4a6a43f176c408ac8516c1f496e6fe143dc4e9f4f35048763eb9f16289be3369b4bab33f153c83
DIST pecl-parallel-1.2.7.tgz 64972 BLAKE2B 7dd11f1e3968b2dd5d52159b00977aee8650e423285df94ea56ca2b307e2c4a94a2765c99326025ecf172c173321b94a40edc6d1077aa5fae21eb0fda5a65e66 SHA512 032a524871b03e2413d3257a224bc578114f47815d9a7027051225f9908d022854fdcd481c224c41ee1e943f5a97e6b266002ce9e419662932cb16e72052cf06
diff --git a/dev-php/pecl-parallel/pecl-parallel-1.2.14.ebuild b/dev-php/pecl-parallel/pecl-parallel-1.2.14.ebuild
index 76bf7f94d90c..d5bb2530f5f8 100644
--- a/dev-php/pecl-parallel/pecl-parallel-1.2.14.ebuild
+++ b/dev-php/pecl-parallel/pecl-parallel-1.2.14.ebuild
@@ -16,4 +16,4 @@ SRC_URI="${SRC_URI} -> ${P}.tgz"
LICENSE="PHP-3.01"
SLOT="8"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="amd64 x86"
diff --git a/dev-php/pecl-parallel/pecl-parallel-1.2.15.ebuild b/dev-php/pecl-parallel/pecl-parallel-1.2.15.ebuild
new file mode 100644
index 000000000000..76bf7f94d90c
--- /dev/null
+++ b/dev-php/pecl-parallel/pecl-parallel-1.2.15.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+
+PHP_EXT_INI="yes"
+PHP_EXT_NAME="parallel"
+PHP_EXT_NEEDED_USE="threads"
+PHP_EXT_ZENDEXT="no"
+USE_PHP="php8-2 php8-3 php8-4 php8-5"
+
+inherit php-ext-pecl-r3
+
+DESCRIPTION="A succint parallel concurrency API for PHP"
+SRC_URI="${SRC_URI} -> ${P}.tgz"
+
+LICENSE="PHP-3.01"
+SLOT="8"
+KEYWORDS="~amd64 ~x86"
diff --git a/dev-python/awscrt/Manifest b/dev-python/awscrt/Manifest
index 10b7a0fa6dab..7af44b7ae334 100644
--- a/dev-python/awscrt/Manifest
+++ b/dev-python/awscrt/Manifest
@@ -1,2 +1,2 @@
-DIST awscrt-0.36.2.tar.gz 37121147 BLAKE2B d75e83e023c7be0ed351df02056337bb6541dbbd8364e8e1037adf9644dbb0418f06a78789ed7d3823d9a30348dea77bd870b0af9bf3735f41f8f43b50a37d76 SHA512 e58de9bc41cdf7b70e15517da3025f1494e27a3eddf207fe571975e02a63b7a447900fc81b5fcf5c9876bd9ce514da02c7c7d8a39e90948d5cd03b96d644726a
DIST awscrt-0.36.3.tar.gz 37812193 BLAKE2B 350a906fee04981975f5b983f0497fc028b13c4092563205e3364322502c6274ef0d7c10e283fbbc33357624973f501963391656765e7a96da8fa54fc3920b3b SHA512 94b4b4a5823bd373c7d72e52d6b8e734ba0080e5b8f1d045c60ce4ebffb9e9d7598f4246b849bff06cf8915018c87fc4af2be3f85cacc898bff55ea1abe633fe
+DIST awscrt-0.36.4.tar.gz 37816271 BLAKE2B af49b608a5b9c691186c43cf7e353174855adbe091dd62a1844632a990c8c2697d9497ed22e0ca61be945d538f8aac22e852263b936bd4f6e6e8079f6b2354e2 SHA512 8d61aa3c0f94c5a96212cb27e54340d6708ee9fb0b25611f07403f7539402618fd6516a870d6913677ba09503e831b2971530c44459d835593a4ccc993642397
diff --git a/dev-python/awscrt/awscrt-0.36.2.ebuild b/dev-python/awscrt/awscrt-0.36.4.ebuild
index 01d810a1ca6a..3374314287ab 100644
--- a/dev-python/awscrt/awscrt-0.36.2.ebuild
+++ b/dev-python/awscrt/awscrt-0.36.4.ebuild
@@ -20,18 +20,18 @@ SLOT="0"
KEYWORDS="~amd64 ~arm64 ~riscv"
DEPEND="
- dev-libs/aws-c-common:=
- dev-libs/aws-c-auth:=
- dev-libs/aws-c-sdkutils:=
- dev-libs/aws-c-cal:=
- dev-libs/aws-c-io:=
- dev-libs/aws-c-compression:=
- dev-libs/aws-c-event-stream:=
- dev-libs/aws-c-http:=
- dev-libs/aws-c-auth:=
- dev-libs/aws-c-mqtt:=
- dev-libs/aws-c-s3:=
- dev-libs/aws-checksums:=
+ >=dev-libs/aws-c-common-1.0.0:=
+ >=dev-libs/aws-c-auth-1.0.0:=
+ >=dev-libs/aws-c-sdkutils-1.0.0:=
+ >=dev-libs/aws-c-cal-1.0.0:=
+ >=dev-libs/aws-c-io-1.0.0:=
+ >=dev-libs/aws-c-compression-1.0.0:=
+ >=dev-libs/aws-c-event-stream-1.0.0:=
+ >=dev-libs/aws-c-http-1.0.0:=
+ >=dev-libs/aws-c-auth-1.0.0:=
+ >=dev-libs/aws-c-mqtt-1.0.0:=
+ >=dev-libs/aws-c-s3-1.0.0:=
+ >=dev-libs/aws-checksums-1.0.0:=
dev-libs/openssl:=
dev-libs/s2n-tls:=
"
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 65916717aa07..7739109fafa2 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -4,3 +4,4 @@ DIST boto3-1.43.83.gh.tar.gz 1218064 BLAKE2B 0758e28dd9b086615b045e107aece2ef46b
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.94.gh.tar.gz 1231556 BLAKE2B 759bb159fb0fc616fab031fdf398482fc559d9a08f8a66bc62d7d4d5284a8a08886eae757f47482cbcc60a45f8bf55df781d963a9b79c2ca7922ee54410b991b SHA512 7c642a77a6d6f218a3eff7f3477cba09b4b4f0f750313adc8f9904639c382566412db2e9aed98353cdd8f180c7fce0a7fd9793479b3dcbe50c08c51c1b13d4c8
+DIST boto3-1.43.95.gh.tar.gz 1232157 BLAKE2B 31fe611aa3023f8328a974e83b2c7599b2d0956989eee20ec4a1542b62e00f1295d67f62c0f2173ae3395d96cd5b9a03925bb2753fa3c42b96f97a9fbe79f785 SHA512 31ea41eed63b0fd6e18f76638d92ac7b22219f443b52087e779956b467bdb77c754418c4e9de462b39032988e243087c5b9d3038ec07a9e9d55772f2a2c0d2b3
diff --git a/dev-python/boto3/boto3-1.43.95.ebuild b/dev-python/boto3/boto3-1.43.95.ebuild
new file mode 100644
index 000000000000..93fbbe6dd59b
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.95.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 ~sparc ~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 603b745bba67..6364e95a1a18 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -4,3 +4,4 @@ DIST botocore-1.43.83.gh.tar.gz 17038145 BLAKE2B f74b399b04f9b259e1a2f424719c4b8
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.94.gh.tar.gz 17147633 BLAKE2B 2a872b6b2289e8a330ea901b32faaa3a1950782009103b27fdc7d54cd0d6163ce3f5fc3bc8ef722fc63fef76db805fce7c2e40854858b6b8c2bb293b264adbbf SHA512 6f63be5ab5f625c018de0c6e0046eeb2e6adfd1913bebe6b91615968309ba41c9ee1d36baa38abca6e714a43c679e88a1931a5c9fe4dde34fa98a9a562280854
+DIST botocore-1.43.95.gh.tar.gz 17151488 BLAKE2B d895c9a42387b0b5425e54741d9894da2afe5d83977c079a47e4d6cdccc157e6e9395953f033f8739ce7b423f91b1522e303711cb38753af3d3fb238798c3b9c SHA512 73f2a6d6fc3a6b49e8c61a338357282b08d80e567b9c7dd025ac1a7132f7ab48e02c6f08290b1c65e09e745653605775076cc706420fbed25f216a9899e7c56b
diff --git a/dev-python/botocore/botocore-1.43.95.ebuild b/dev-python/botocore/botocore-1.43.95.ebuild
new file mode 100644
index 000000000000..14ad5b2d1f27
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.95.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 ~sparc ~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/esp-pylib/Manifest b/dev-python/esp-pylib/Manifest
new file mode 100644
index 000000000000..0484040abe9a
--- /dev/null
+++ b/dev-python/esp-pylib/Manifest
@@ -0,0 +1,2 @@
+DIST esp_pylib-1.1.4.tar.gz 98849 BLAKE2B 60ee0260b38f04730712c4589ee5f018c86c5ae0e1a53bd12725619b487baeb065b18a4caeabf286284deb7f52d14cdd1d1ff64229a7a1b6381530bb644ed222 SHA512 74d9d34fcf2b35870e6e1550e9a314e124791132050fe04e29ecf6977659c7702843b4c6d07c016dfc2325adff69938588366167ff6069d91be38f06a249cf83
+DIST esp_pylib-1.1.4.tar.gz.provenance 9954 BLAKE2B d36dd9d9dfaf2ac6de77163e52498480d68f874a7479a1ad894247ffd16d4bce48bdb572b523152b043a530ace9980c990e1239073e59afce78f5c3db35de853 SHA512 9dbfc6d3836812d4ae59f8968bb605708b60d81f4d6149ace843ad6345e62437b06d4d80a59dd6026b30aa0fae8c3ee474bc9d790bba8a6e9ee0a08c00b3b382
diff --git a/dev-python/esp-pylib/esp-pylib-1.1.4.ebuild b/dev-python/esp-pylib/esp-pylib-1.1.4.ebuild
new file mode 100644
index 000000000000..48ae86528e95
--- /dev/null
+++ b/dev-python/esp-pylib/esp-pylib-1.1.4.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/espressif/esp-pylib
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="library for logging, utils and constants for Espressif Systems' Python projects"
+HOMEPAGE="
+ https://github.com/espressif/esp-pylib/
+ https://pypi.org/project/esp-pylib/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/pyserial[${PYTHON_USEDEP}]
+ dev-python/rich-click[${PYTHON_USEDEP}]
+ dev-python/websockets[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( )
+distutils_enable_tests pytest
diff --git a/dev-python/esp-pylib/metadata.xml b/dev-python/esp-pylib/metadata.xml
new file mode 100644
index 000000000000..ce623b75b477
--- /dev/null
+++ b/dev-python/esp-pylib/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>martin.dummer@gmx.net</email>
+ <name>Martin Dummer</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <stabilize-allarches />
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-python/filelock/Manifest b/dev-python/filelock/Manifest
index 93ee4c44263f..04a13c8de628 100644
--- a/dev-python/filelock/Manifest
+++ b/dev-python/filelock/Manifest
@@ -1,5 +1,3 @@
-DIST filelock-3.31.0.tar.gz 180931 BLAKE2B 1921f1ec88d79cb764c30dc5f2ebf9192209dd433504d6577f8f5c3b73951268345af331f1a684fd986d9f9f25ea3f88179dcd5ce32604c6af6f7b7e8903413d SHA512 e24d88921f975db582b64baf5e23bd1ebb3de1364b874e9d63a2a4a42cd9e71d2a30e6646f9b7afcbca3cd3b075eb480bb38c6451f5410b711ba57578252d871
-DIST filelock-3.31.0.tar.gz.provenance 9855 BLAKE2B 9b98e156d7e941a8585d6deb01ac732966ab560cbcf86dc5a6c076c74a7877c7fde9cc7982e084e502f3047a62b2571baffc4e81010d576a2283844b3be64d68 SHA512 4400dda6b091d5efbe61dc2cbc62e03fcaaf5d28f8e80e38e7e3e9cd5bc7f2d53eb969c123c0b8bb9da277e455dad1ef7769fecf7c999e94ad1a691b7b5ea1ff
DIST filelock-3.32.3.tar.gz 218135 BLAKE2B 5b4419e69a892ef0df4afac008fedf19025f162092dfbe472c925141278b9f5834edd3f9c5ba10db39091f42bf748653b63659c0215dc24f29b4951ae4f5d70f SHA512 896063634b104faa169aae67df71f1b77161340c2b99205923fb8c9e74cdd1b2d618153b44831095299a30bf83ed8319c5d2bc5229f17afad88909417e98dbea
DIST filelock-3.32.3.tar.gz.provenance 9622 BLAKE2B 67bc8f6e8909a9b1ce99cc53b627df63762019b1075f796f9027e70d196944b6ea2e3e63dc6e759077bda139912cdbb8c1c298f591fe1c1c90a12219404a02d3 SHA512 b2ac1f0f6a087605da3bbbffec6918661aa164991ae33e0f6098039eae6cbc1e6ed0f6bee2073d86f1c30fc84df1e3b1a0893882d697c5c494b76c51568770a9
DIST filelock-3.32.4.tar.gz 222126 BLAKE2B 8061bbb3d3e2e78c685764a4789caf1ba8196e179a6595caca754dc34c905a4543b24343077808aae8064d3875657c3bcb9000e311f6728ce8776c9e491f5fb9 SHA512 199cbe99519fa152dd1fefa208306fd4c0cc9c48daff0aded91fd56171901b0a1883f0ba4ed2c0107363e028a0266a4f0af9fde55170d94d7e569204b296a3cc
@@ -8,3 +6,5 @@ DIST filelock-3.32.5.tar.gz 222838 BLAKE2B 61ea53f89ec434d8ab49cf468fed811486e4c
DIST filelock-3.32.5.tar.gz.provenance 9622 BLAKE2B 076bfaf9260ac890f689d84bb0b85d8807536804e14c79c5843a29c10806cf4806b77862761daf9b01a053af73aa611abe0af839d8792d29b1063c657c83f121 SHA512 3df81c5cda929a05ed494b06359431d42c2522b7cb0a640ca3a13657486f23d270cc930b28cf6e5cc948462d1fcf6eb6268b9c82de820b3dcc2c11134d485c8a
DIST filelock-3.32.6.tar.gz 225172 BLAKE2B f077ad228f28f6080cff6487b10d18789174592ccca9117766946572e07f97af88c68c796665e1183d39b9d92aa5c6881da3a278ce3ca2691b8f85ce4abaf116 SHA512 a2431f17c1f7e01e0eb704354a8e3b27c2e0b2e769962ea904b20206ef36e1b173fca846c696680b7c6c8a0bee846b9a6d5449a4b09e0ae7c390bb374380ccc6
DIST filelock-3.32.6.tar.gz.provenance 9904 BLAKE2B f3509822beb0993f3050ac404835a62a1beec9f98ca4f28202b237daf7f1db0fa8ac2803d822138a140761229d9334928f85e54583d7aaefc7bafdfca607f51e SHA512 6a30896d8c8166f19be54362a7e278922d6104f8e5093dca36e25d9fb7331f7918201b19919c56feef9005e6a62fd2766b9ebea371c8fff419b63f0634c419d6
+DIST filelock-3.32.7.tar.gz 225154 BLAKE2B 8235b3db8218f46b0bcc9287dc2a5f93f81a08a5d1fb26014ea3bdd980c259f76dd35f3f26c7302d08d96dcd82997b6082b4ec9d44c5b778aeaf6f6e2835b875 SHA512 ce49bd21ab60aa2711daa467239aea7ad054e7be2e1d638dbe6de8962b7f2ca5a8dca4dba247098c89b0306700e2c45f64359833319afb1010025cd6362f8e12
+DIST filelock-3.32.7.tar.gz.provenance 9669 BLAKE2B 145e8c0f37a7ae187771f8c82199404dc5d1677b83faffd264f2d69afdba1d390dd28aa63d8fdb242296dbe130c8c7085cd59186bedfa20b5397b244c670832c SHA512 5db27b4f9a3fd138353d4504eb621e6a6bb7ba24038499f354606dab5825aaddb241c859713760d974a28ccf1cf5bdc18f6a7e792e497f03dbc136f03f41ca09
diff --git a/dev-python/filelock/filelock-3.31.0.ebuild b/dev-python/filelock/filelock-3.32.7.ebuild
index 0c8f0c0c6c99..1f38026c0588 100644
--- a/dev-python/filelock/filelock-3.31.0.ebuild
+++ b/dev-python/filelock/filelock-3.32.7.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/flask-compress/Manifest b/dev-python/flask-compress/Manifest
index 1f3fd6808d9b..2187a31714e9 100644
--- a/dev-python/flask-compress/Manifest
+++ b/dev-python/flask-compress/Manifest
@@ -1,3 +1,4 @@
-DIST flask_compress-1.23.tar.gz 20135 BLAKE2B bb1aa78bb1192e0bf12ba29a98dcd910642d156fdd41a890cd80e65904cd910d84919fc33e124f0c88e8fb79ab55a82bdd775177fce3cef4bc12b5b12c4357ce SHA512 e1ccd6c24c54b8c65d3ac833dbb16a145a622241fe60843c81d9a54ef14691c843410098ab3820d1afb24c48ae9c141d82c2696b0635058233ed31449a90a674
DIST flask_compress-1.24.tar.gz 21089 BLAKE2B ca8822823b917c5676b41c1b3998cd38542f3456560d18bcd6fff2d79bc72ad703e7d1a7f96bd7dd6e8ce54e32b1e93192b46d332fa2eb8037d75c65ab9e05cd SHA512 4b4f0c0c5aec341003a05b080487d175fe5f399747d7afe25a025a66670470002e7b96faa0808e6a19794914f0f5f6b5bf8c75c45f30e439e00622f0556a3680
DIST flask_compress-1.24.tar.gz.provenance 9594 BLAKE2B 239741e40f14d160b81f904bbbff223d0a21981d992bf6f7da609e9f6d025e2dab393cf89e574b1e16585f28c43d9bbade1d375787ec8bc45d693c95611569f0 SHA512 53b268d06c38ff269a6b204a014bd14f574dc306d769dcf73b2136f53a83c2c97b36d68d5eeb228f2e45181c683308481155f6e069975d4a152c7461bc0957d5
+DIST flask_compress-1.25.tar.gz 21719 BLAKE2B 84ac6a013d36bbd02ad572f31d6755566d73b31d183f0667f1174fe5d3388ba47c80c9fb761056a695f2f8a4fe79c1b92d9236fc37272a5790d266ef5a96442f SHA512 dd5a8d9d0abb2fbeabdbf62ca16f32ec10f8a62fb843878feeedce75589d3f83acc854feddf6331a1159d0b62015f103e122712079e23b1b594ca59f0dc7424d
+DIST flask_compress-1.25.tar.gz.provenance 10005 BLAKE2B 4e050dccdf23a65ba1b091e2bc5eb6d80a2e411570bc229fe952e257ecc1b22e7be70ce1f8084e67035014381d0cfa1cf18a5756bd2fbf8dc3dda69ecc2fda23 SHA512 c4964fbd3788bfdfaf2ec4499eb7598314069f77ea0d4586d2600d53685676466ba18f951250db22911be63feb3372307e76b7131294deee684853951985097e
diff --git a/dev-python/flask-compress/flask-compress-1.23.ebuild b/dev-python/flask-compress/flask-compress-1.25.ebuild
index d3ee3dbcae69..a7db65c93fca 100644
--- a/dev-python/flask-compress/flask-compress-1.23.ebuild
+++ b/dev-python/flask-compress/flask-compress-1.25.ebuild
@@ -5,6 +5,7 @@ EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYPI_PN="Flask-Compress"
+PYPI_VERIFY_REPO=https://github.com/colour-science/flask-compress
PYTHON_COMPAT=( python3_{13..14} )
inherit distutils-r1 pypi
@@ -17,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 x86"
+KEYWORDS="~amd64 ~arm64 ~x86"
# brotli on cpython, brotlicffi on pypy3
RDEPEND="
@@ -25,7 +26,7 @@ RDEPEND="
dev-python/flask[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
dev-python/backports-zstd[${PYTHON_USEDEP}]
- ' 3.{11..13})
+ ' 3.{12..13})
"
BDEPEND="
test? (
diff --git a/dev-python/jupyter-server/Manifest b/dev-python/jupyter-server/Manifest
index 31fff246deb4..68bf0666762e 100644
--- a/dev-python/jupyter-server/Manifest
+++ b/dev-python/jupyter-server/Manifest
@@ -1,2 +1,3 @@
DIST jupyter_server-2.20.0.tar.gz 756523 BLAKE2B a55bce21bf2a3d8b7f544161eb20802971e947eb082e3ebf6e0d8e777e46044d1deae8a3568b580cabd8cb6d88ca18cc871a829441b820d02f656ebe30e97b36 SHA512 859d890d67f92212c5a3fa772e9e6abf58c3ef4b08a94e84a64e1c9714114b5bbe5667bb93fab3448671c32ef670c2f4869f4009aa2aa257a67223b47628d578
DIST jupyter_server-2.21.0.tar.gz 760357 BLAKE2B f78368f76d9e7dce8b4429640abcf482014c87d051625ed7b162ae08e18e4afc175643ab17f036b18439f83111ed2dd6e1c9bc3ef7072e968440ddb6e570cbc1 SHA512 b595eb045958f9602c423ddaa01f079f21ef63492933b6b0ef07772d1877f06d348bb927c43e8f685aa98604ea74b18bf126c047227cdfc0bbd6fb16c8b5cae4
+DIST jupyter_server-2.21.1.tar.gz 761651 BLAKE2B e6cb80250523ed9c1cf774375e96d9c9c557652a5788ea0c3d9192e9e96008b93bc81a93b9302c7ae3d87c28cb7eb501212a085182e986705a7e0fad5db3017b SHA512 b3c6801d636634b068db386fc9f828af44805686e9ccca637361dd6588a79570291d5ba5360c6ea25c891251cc07cea052d2c1dd12dd53c74666c42b08072b5a
diff --git a/dev-python/jupyter-server/jupyter-server-2.21.1.ebuild b/dev-python/jupyter-server/jupyter-server-2.21.1.ebuild
new file mode 100644
index 000000000000..0321dafd4aab
--- /dev/null
+++ b/dev-python/jupyter-server/jupyter-server-2.21.1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-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="Core services, APIs, and REST endpoints to Jupyter web applications"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyter-server/jupyter_server/
+ https://pypi.org/project/jupyter-server/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/anyio-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/argon2-cffi-21.1[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-client-7.4.4[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-core-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-server-terminals-0.4.4[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-events-0.11.0[${PYTHON_USEDEP}]
+ >=dev-python/nbconvert-6.4.4[${PYTHON_USEDEP}]
+ >=dev-python/nbformat-5.3.0[${PYTHON_USEDEP}]
+ >=dev-python/packaging-22.0[${PYTHON_USEDEP}]
+ >=dev-python/prometheus-client-0.9[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-24[${PYTHON_USEDEP}]
+ >=dev-python/send2trash-1.8.2[${PYTHON_USEDEP}]
+ >=dev-python/terminado-0.8.3[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.6.0[${PYTHON_USEDEP}]
+ >=dev-python/websocket-client-1.7[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,timeout,tornasync} )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # This fails if your terminal is zsh (and maybe other non-bash as well?)
+ tests/test_terminal.py
+ # Fails because above is ignored
+ tests/auth/test_authorizer.py
+ # Fails with additional extensions installed
+ tests/extension/test_app.py::test_stop_extension
+ )
+
+ # FIXME: tests seem to be affected by previously installed version
+ epytest -o tmp_path_retention_policy=all
+}
diff --git a/dev-python/jwcrypto/Manifest b/dev-python/jwcrypto/Manifest
index b30249ac17b0..af3e6ced6beb 100644
--- a/dev-python/jwcrypto/Manifest
+++ b/dev-python/jwcrypto/Manifest
@@ -1,3 +1,4 @@
DIST jwcrypto-1.5.8.tar.gz 90772 BLAKE2B b91b810466e527d5a121b021f5cb8c4f952b88aebe6a0c3e8cff4afd285c135b71c45254dd2d821f2fe645f02f3a78763c819f84c53033f9100bc8969c37970d SHA512 b7f63049583e6d468952d46f41ce80258868a0bd74b7123bbfe02b44f01668be550247b67374db42b24bc2d25af5f71abe97b857fb2842d877cc6217a888f869
DIST jwcrypto-1.5.9.tar.gz 115793 BLAKE2B f5905b2d7c3f8a20b71a1542b351fab790db4eff23af6502bd0765a3702a5628098fcfa795eae5d4bcf1a045dde2719e676a96bbf325f88dcfe0f064e850e888 SHA512 a77d7f77dfec3e05b0b07db9d4d6d393cb5be58feb85c019cb561d0ac651a28492c3d509a5ba7724b65f374c608579b1a831b7a5791b92a91250da7aacbb3892
DIST jwcrypto-1.6.0.tar.gz 116186 BLAKE2B 013484d22e3b2f0fee5899495c5168fa8b80a9e1aede4fdae400f82540f61270ada3e9eeaaa83634b1ce8ef15420edfe18f506984471e7dd1d1aa009efb8065d SHA512 8f8fb08fb8ce13c0a11d58aca9a81bdbcad398c300c4e55108ca75c1fa42fc9ab44e8fe149a0e26bb901e40bffa68eab80a3aa2d226c3c0b5fa27897531a11c7
+DIST jwcrypto-1.6.1.tar.gz 116287 BLAKE2B e4111daadee7469bed35e72033e80bc1ffd734e82ae052ee4cf2e4b0ef899d970a3ac11506522a80146c6d8608509fc94df8845e5e7bdc75def15913a0353e06 SHA512 40da6729ae57c698a712f132d22451b1c9061af6862c80390a4c43209633bd28e133c9539061b165e65cab9d065e2753f6bc19f3ac6fd935071e753163b3a461
diff --git a/dev-python/jwcrypto/jwcrypto-1.6.1.ebuild b/dev-python/jwcrypto/jwcrypto-1.6.1.ebuild
new file mode 100644
index 000000000000..1befd595f58c
--- /dev/null
+++ b/dev-python/jwcrypto/jwcrypto-1.6.1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-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="Implements JWK,JWS,JWE specifications using python-cryptography"
+HOMEPAGE="
+ https://github.com/latchset/jwcrypto/
+ https://pypi.org/project/jwcrypto/
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/cryptography-49.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_install() {
+ distutils-r1_src_install
+ rm -r "${ED}/usr/share/doc/jwcrypto" || die
+}
diff --git a/dev-python/libvirt-python/libvirt-python-12.2.0.ebuild b/dev-python/libvirt-python/libvirt-python-12.2.0.ebuild
index d38436112d50..abaf49c3f064 100644
--- a/dev-python/libvirt-python/libvirt-python-12.2.0.ebuild
+++ b/dev-python/libvirt-python/libvirt-python-12.2.0.ebuild
@@ -23,7 +23,7 @@ else
MY_P="${P/-/_}"
SRC_URI="https://download.libvirt.org/python/${MY_P}.tar.gz
verify-sig? ( https://download.libvirt.org/python/${MY_P}.tar.gz.asc )"
- KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+ KEYWORDS="amd64 ~arm arm64 ppc64 x86"
RDEPEND="app-emulation/libvirt:0/${PV}"
S="${WORKDIR}/${MY_P}"
fi
diff --git a/dev-python/numpydoc/Manifest b/dev-python/numpydoc/Manifest
index 35cc51b83d88..16a371a4eb56 100644
--- a/dev-python/numpydoc/Manifest
+++ b/dev-python/numpydoc/Manifest
@@ -1 +1,2 @@
DIST numpydoc-1.10.0.gh.tar.gz 94037 BLAKE2B 356004e4e30634048f9e4adb2b560fde574feac973c59d9becf6bd4bbd4d502c79ca6eaadb21322d13db0882a596e88e89f87d32565a003253b88bc6439c3446 SHA512 bd8becb71fe45f7a0e11bbd3f804c9855b1192ff22acbc0291380c462c493facd2efd6d59e560111ae56132925502d37abc90643db217358f3a8c1138ce7c693
+DIST numpydoc-1.11.0.gh.tar.gz 97229 BLAKE2B da290e76635955bc3fe6aac74ec693cb95e9842a770ca0aec71ce38a1ab01c30ce1159a02e509f415a107f932c1aae686d42511a9dab0363e3428eb72b9f909d SHA512 2c483c694ef3a6fbda63df9cfb76211ea36f1a96b1d5fc494a02e04f10ed8d9f01f9d0258a80be7ff72f272cb5299c2eece3614aacf32242714773f5c87b217b
diff --git a/dev-python/numpydoc/numpydoc-1.11.0.ebuild b/dev-python/numpydoc/numpydoc-1.11.0.ebuild
new file mode 100644
index 000000000000..bf6b2e18e7e7
--- /dev/null
+++ b/dev-python/numpydoc/numpydoc-1.11.0.ebuild
@@ -0,0 +1,49 @@
+# 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
+
+MY_P=${P/_}
+DESCRIPTION="Sphinx extension to support docstrings in Numpy format"
+HOMEPAGE="
+ https://numpydoc.readthedocs.io/en/latest/
+ https://github.com/numpy/numpydoc/
+ https://pypi.org/project/numpydoc/
+"
+SRC_URI="
+ https://github.com/numpy/numpydoc/archive/v${PV/_}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ >=dev-python/sphinx-6[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/matplotlib-3.2.1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # these require Internet (intersphinx)
+ numpydoc/tests/test_full.py::test_MyClass
+ numpydoc/tests/test_full.py::test_my_function
+ # TODO
+ numpydoc/tests/test_validate.py::test_extract_ignore_validation_comments
+ )
+ epytest -o addopts= --pyargs numpydoc
+}
diff --git a/dev-python/plotly/Manifest b/dev-python/plotly/Manifest
index 130439adc03c..a53d3ef10510 100644
--- a/dev-python/plotly/Manifest
+++ b/dev-python/plotly/Manifest
@@ -1,2 +1,2 @@
-DIST plotly.py-6.9.0.gh.tar.gz 10539701 BLAKE2B 9bc7856d14acc8bac28c3981967485d51a741d948c275ccb0d7cc6462273d2a68cb74104eb54db98899e6890423bbd066b612804bc59f3657ac7611a4a1fd109 SHA512 6c302391beaa81c389ab574a700b3269cc517b1fc81552f57bb12f0d8c283c0757fba6bca2582a02bd29c98697e94900af3805288b42ff70904f7d54c51ada9e
DIST plotly.py-7.0.0.gh.tar.gz 9588726 BLAKE2B f725857ed1e645861b364697f0766b5aa750f04683736e9879bf0ebb70bd326af4a53ab862fe884c3e16e14958d86eee13f06d4d0e6d5b48c9b51a8c77f96ae2 SHA512 54fb04dd442f5deb2c18fdd78f8d74f76040dbf3af7451807c5567d86376fb72c995ac54c69acdfa86b369a078da300a5729f38bd506ac2760b1e8c96dc86761
+DIST plotly.py-7.1.0.gh.tar.gz 10239984 BLAKE2B d94c0d51c1d810c508b6a42567d8bb96bc47df7dd905f30a7557169a321505c92a6c0138702141766eaec1464ac1dcdd887f4a2ed611e65d5fd01a07db90fd43 SHA512 21527325f66e5cec00c98be740db89a5ecc53a057ffdb99950a3cbf915ac7188bdf346936308a57526e9cf14b6f30442c45a209635386c0abaec1f4c16c55707
diff --git a/dev-python/plotly/plotly-6.9.0.ebuild b/dev-python/plotly/plotly-7.1.0.ebuild
index ab56c16f27b2..ab56c16f27b2 100644
--- a/dev-python/plotly/plotly-6.9.0.ebuild
+++ b/dev-python/plotly/plotly-7.1.0.ebuild
diff --git a/dev-python/propcache/Manifest b/dev-python/propcache/Manifest
index 5552abe176b2..6738faf61d32 100644
--- a/dev-python/propcache/Manifest
+++ b/dev-python/propcache/Manifest
@@ -1,2 +1,4 @@
DIST propcache-0.5.2.tar.gz 50208 BLAKE2B 53b0a36724277bbe1b08e4fe9b6bf7b32933fbb52b5c4fa3477b3fba1d021875f9311cb4abc020989a40c3482707b0e9e3b40669b9d219334b10b0303dfbfbe9 SHA512 7d720b55a54a3dc35a13c27c8b2821e5dc8ccabae1c004c4049df6a4d914c7f5247cac4efb8a6e0cc95cb9cf62119c27febfeaaaa900343f19ee8c8cef92e15f
DIST propcache-0.5.2.tar.gz.provenance 9321 BLAKE2B 4a48da3e3c88f767ef481373c560fc6d0895987422a43a4a9cd09d27a70c254d2b05fe19876c03f72d094770965992d1df0d8b066cbb9cd15f3eb4ee867dfc33 SHA512 ef3796ac1f4b65bfec89d1d9944870dfdead6f932671eb0725d6bf0ba1e19a8a8d50dd9e1b73c02d97b64d19af314e782dfda52a131c9851bb506f4a2a3cd08e
+DIST propcache-0.5.4.tar.gz 61545 BLAKE2B e6aa31867cc04cedeaaaa597934cf2e8cc9362fe7f7f05059dbc50e87865091c1083d89e76023e7537c77fdb91759db06a4292958a74d58c5e16eb07b90b0bc9 SHA512 90cc06be430dd305e30c1931bf5504ea811169badd19e54a7cc92a721c9d353419d649c5eab5eba59f035e557cbb451087974bec5af752ec16590430061c0d43
+DIST propcache-0.5.4.tar.gz.provenance 9535 BLAKE2B 713d4b82f4789afab22772fdef3713913f230a5cbd50f53ba291858a8f5c1c4f987b0fbe0f02c0d77e6b013dcf75f64edb34bb748c465f55798a7c1a034b6f9c SHA512 75f71a1065560d6ef17654f5a27ceb2d387bddacda4374ed8d6106c83dd8131959550502344579a8bfef4ce7cce27cdb01e997e91edc330d1cddf501f49a4548
diff --git a/dev-python/propcache/propcache-0.5.4.ebuild b/dev-python/propcache/propcache-0.5.4.ebuild
new file mode 100644
index 000000000000..b7f6c241980e
--- /dev/null
+++ b/dev-python/propcache/propcache-0.5.4.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=standalone
+PYPI_VERIFY_REPO=https://github.com/aio-libs/propcache
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Accelerated property cache"
+HOMEPAGE="
+ https://github.com/aio-libs/propcache/
+ https://pypi.org/project/propcache/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions"
+
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ dev-python/expandvars[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_compile() {
+ local -x PROPCACHE_NO_EXTENSIONS=0
+ if ! use native-extensions || [[ ${EPYTHON} != python* ]]; then
+ PROPCACHE_NO_EXTENSIONS=1
+ fi
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ tests/test_benchmarks.py
+ )
+
+ local opts=()
+ if ! use native-extensions || [[ ${EPYTHON} != python* ]]; then
+ opts+=( --no-c-extensions )
+ fi
+
+ rm -rf propcache || die
+ epytest -o addopts= "${opts[@]}"
+}
diff --git a/dev-python/pymdown-extensions/Manifest b/dev-python/pymdown-extensions/Manifest
index b294c54a658c..704894af9e08 100644
--- a/dev-python/pymdown-extensions/Manifest
+++ b/dev-python/pymdown-extensions/Manifest
@@ -2,5 +2,7 @@ DIST pymdown_extensions-11.0.1.tar.gz 857113 BLAKE2B a585fd5c325fb4b146ecdddf920
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
+DIST pymdown_extensions-12.0.1.tar.gz.provenance 9890 BLAKE2B 491f20c46cfdb392d7ad484b52d26397d30aa28ce95039fa9ccf93e69cb1b4a54147d2ce81f7d22fd3079b111041109102a65de9e8a7a00a2e91fbd01c533687 SHA512 0992eead14c6c8147683616ad66d32d8134dab1279b275b06bda5f50e60d5dbd4566eea139903f3dba535f6ed3c1d91cfa91965637ace3c1389771c40c48c0af
DIST pymdown_extensions-12.0.tar.gz 867035 BLAKE2B 2a95a81964b16f816c435892c9498614c3c9befd50c5d34b3d3e1fd324ef14a4dcb43eec487b1af865e4c778746f7b1b4f4d50ce77edb626fdbc5fc9f2f8b83f SHA512 bc1738a04021889df3a802074d93131a84ec5000db3aa4cae5b068cb9ace315941bcf57565983d172f3965cb57017c168df96ab25667132ed3e2517a61edc2b7
DIST pymdown_extensions-12.0.tar.gz.provenance 9995 BLAKE2B 2c231bb3f412bbdad5abbeb7627be427e8ba3bc6eec22f2128ad089e71d639599494edaf9a9e84db8093ea484955843b23f642fd33c7d1f93c5a3ae0ee02175f SHA512 36de2ab58cf83c00e4f207b6421eddf225646ee38bf79dbfad6a969dde532c8d8352ba39e173567a455037710cc9dfd77e658607a02fad987e43bded7e2f82c7
diff --git a/dev-python/pymdown-extensions/pymdown-extensions-12.0.1.ebuild b/dev-python/pymdown-extensions/pymdown-extensions-12.0.1.ebuild
new file mode 100644
index 000000000000..1c6dfb8c42e4
--- /dev/null
+++ b/dev-python/pymdown-extensions/pymdown-extensions-12.0.1.ebuild
@@ -0,0 +1,34 @@
+# 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/pyproject-api/Manifest b/dev-python/pyproject-api/Manifest
index eed12a6aafc5..dc1afc4a4866 100644
--- a/dev-python/pyproject-api/Manifest
+++ b/dev-python/pyproject-api/Manifest
@@ -1,4 +1,4 @@
-DIST pyproject_api-1.10.1.tar.gz 23477 BLAKE2B b7051bbd72f5c9d4115118e20d691e705fdaf5293c99c667db9528fd0a1a40010f331450fcea8b7349e8df7174dffcbfbe61bd03ec9873a1d02627bdf9dc234a SHA512 f37c805879a37aa9564fc5bc15cf7bcf7724fb1cec56dcc82328e1cc9f803c6e2053cccd2f30cca7d621f594db52773348e25f7a2b581a893a63e7f11e00f7c0
-DIST pyproject_api-1.10.1.tar.gz.provenance 10016 BLAKE2B 704a82013aacc995d75a24f48c7c4d08e5ce9d06697fe02827286a2ec47f4e26d42ae83cd9345fb177ceb5ed28bec18ce8e24c47d4f83e8ff00625c9e3d1050e SHA512 673a0779e7c8237b94296331257718bf6a5faa530f36ff57e4fe64e7ecfd23e3a17ede37e511804bf0c1f405b36595cecd9fd9dcd2794b49fd5af89aed7e944d
DIST pyproject_api-1.11.0.tar.gz 23787 BLAKE2B 63846530d8299564466546f8b00bf46c3b2010b95c5661727f80a3966d0d5cdfb36e43a6848b1ac970ca11d489b67aa96e49387d69d5fd36a1170bafd0096951 SHA512 0d42bf451077ad1661c1d0ee5d5dfce1525ef65000e556bc3f71a7ffe5b8324aa25b5688322763b760bbd14130c3dda28e30610351084d95b73c81e706241884
DIST pyproject_api-1.11.0.tar.gz.provenance 9781 BLAKE2B 956f3099e731974bf28a4b31f7c29f8e34d2f4e5816e15f6c4db0257ff833b349c5b63caf9c83e2590a36d02ecc94d1771fb90488bc7955142b12666a6de3c46 SHA512 01fc7652d185f6f5b255461e3b7a0fd7d1d07680416e179a7ef9ba5cf71e6e813699fafbdb04780f85e9c2e30b9cb7bca02975171d93a5c3c465ac8a46e5b0a6
+DIST pyproject_api-1.11.1.tar.gz 23991 BLAKE2B 29db06754c715a3c60c98974e9c98dd343cc5a75746eb58cb055647968b188d72c5dac67463b1bf17bd6ce0b8fc17b22141e21061d6a723adeb8be51f17002c3 SHA512 f012aa1734ab6108eee56f621ccdf938a07cf57a81e68425a8004c0a2de0130c6c246b131a88d439b07bdad828e9e895833947d27d74e9ea936d21fcea5f33fa
+DIST pyproject_api-1.11.1.tar.gz.provenance 9736 BLAKE2B 056f457a9d5c45fcd7983fc0ff6fedefc3b7ee3b74c7a98d3e9988769d9391f9fe5e803dea6ac5a65a4902d77c51371c7ef77dbbb824b617eab0477a324bd144 SHA512 52808c3501cfa20824de9798b0dba3ec7688e2410019820234f875cad61c4e97122d7875ae33799b4c0177bdac9af5391d96bf77cfb9b6c2c2ed19be5e21953d
diff --git a/dev-python/pyproject-api/pyproject-api-1.10.1.ebuild b/dev-python/pyproject-api/pyproject-api-1.11.1.ebuild
index 3c1ce09fd2b8..81e717ad883d 100644
--- a/dev-python/pyproject-api/pyproject-api-1.10.1.ebuild
+++ b/dev-python/pyproject-api/pyproject-api-1.11.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-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"
RDEPEND="
>=dev-python/packaging-25[${PYTHON_USEDEP}]
diff --git a/dev-python/pyproject-hooks/Manifest b/dev-python/pyproject-hooks/Manifest
index 7321a8dc1af8..473b147afa3c 100644
--- a/dev-python/pyproject-hooks/Manifest
+++ b/dev-python/pyproject-hooks/Manifest
@@ -1 +1,3 @@
DIST pyproject_hooks-1.2.0.tar.gz 19228 BLAKE2B e02864220393876639cc459918f48c02e19835b392102d117cb5900c9a4f5228bc21377421f7afdd67300ba15d131194197a3b4b1ce0ad7fef195bca9be4344b SHA512 e098e521f03cfae9a96c0ee5d2e2ef46ef832d8f38c7d8380fc17355776e09ae3a704879e6e4a2bc7999092c4dbf80267b3b56850135c74d275a12607e0ffe83
+DIST pyproject_hooks-1.3.0.tar.gz 20883 BLAKE2B a2e9984a25c6f730e6f1e46a0a144bef4ad05909d389a615e6ff72019c0b06c6996ca89fea0a875e6ccc39f2414d084dc00c7a7d87a4d50ddb5d6e6d8cf2a896 SHA512 08dc8e6e92fea46da684cc1105a205ba3f657307a4219fb6f562d4cd4f269399bbbe7bd95b933a9940d63ea5af4433f48c0058c8573ff69c055a4b3cf5ffef95
+DIST pyproject_hooks-1.3.0.tar.gz.provenance 9655 BLAKE2B a8b76df1718a1b065f8c798ca03a8111c20b391b283a0f0bc91dbe80f8a8ad51045f432fe55a2e12d8ff716629b8906fc563b54f7d5b0c709f4b57c33a3b8499 SHA512 3f15ea931c5ae9f2f56cda1f88ae571d667cb04813d6ae964bb80dcd17974ac4d2a6325f26a3301c75424baf67e60840122b9323e4d169628151530f1a9cffc7
diff --git a/dev-python/pyproject-hooks/pyproject-hooks-1.3.0.ebuild b/dev-python/pyproject-hooks/pyproject-hooks-1.3.0.ebuild
new file mode 100644
index 000000000000..d68373bb12cf
--- /dev/null
+++ b/dev-python/pyproject-hooks/pyproject-hooks-1.3.0.ebuild
@@ -0,0 +1,37 @@
+# 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/pypa/pyproject-hooks
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Wrappers to build Python packages using PEP 517 hooks"
+HOMEPAGE="
+ https://pypi.org/project/pyproject-hooks/
+ https://github.com/pypa/pyproject-hooks/
+ https://pyproject-hooks.readthedocs.io/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # fails due to setuptools 70.1
+ # https://bugs.gentoo.org/936052
+ # https://github.com/pypa/pyproject-hooks/issues/203
+ tests/test_call_hooks.py::test_setup_py
+)
diff --git a/dev-python/sqlalchemy/Manifest b/dev-python/sqlalchemy/Manifest
index 682880484ebb..70680577549b 100644
--- a/dev-python/sqlalchemy/Manifest
+++ b/dev-python/sqlalchemy/Manifest
@@ -1,3 +1,4 @@
DIST sqlalchemy-2.0.52.tar.gz 9945637 BLAKE2B 4af6f1485d26c94569babc99ba6cb3314f0bbc4267bc17ebefbb786390214110283b0a43a81cc38d275fcd852bbb74e77ed2167dce6a5ec9b144119eb0593206 SHA512 9341389b75b684b37f2f1bba8fde882c95c77a68e5ff15b8ab16b163db9c31088a884352999b750fbabadbd723cff093e971035159e77562d5cd843305258fdd
DIST sqlalchemy-2.0.53.tar.gz 9966200 BLAKE2B b14be728d4ba7e6517b6e4af96127e3c5bde05218d77afa5bba16638f4270e85c69eded7bd4497c517afc2dbcc5db1baa1201c84d8354ac9a7de8e0f5cf3f98b SHA512 568035a5c37e337eee5606756e5c3bb3edff248cca4879144d690ff4215abc51d697eeb0ab7a3991ea933b65a639d2ae8812e9b325d4fd7d860a26513892609c
+DIST sqlalchemy-2.0.54.tar.gz 9969559 BLAKE2B b29973d44b49e8c98267d509246369e78c213a3d53280098c4ea14c6d2ae6161fc2bfb71bd2e4af32c39bc187efd0ae03668bad3963ca79187c3889521da4911 SHA512 d88af975c7fc7d4e1b0781e654ef003fb1de90f00e6a4168b167c2b8c6927732caea5bb9ec084451994d89e8808691bc18abf236d80f6e13158f6f1f0a406d1b
DIST sqlalchemy-2.1.0rc1.tar.gz 10436777 BLAKE2B 3840f114f930dc1d18e8837cd51ebc66a193f386139eda7b825a0efcc280488a4d1f78c0997c4c81d5c8c2b6b92b2cb789beec32dbae43fa05bd638d3afe493b SHA512 66435f258067621f649ae8f28ed409772319cf9939b21cb8a7b2de1ddcdb482f536402350767ff618dbec2be5254b243f903f8c7a7261c49bc66269235bce2eb
diff --git a/dev-python/sqlalchemy/sqlalchemy-2.0.54.ebuild b/dev-python/sqlalchemy/sqlalchemy-2.0.54.ebuild
new file mode 100644
index 000000000000..b46152f6c679
--- /dev/null
+++ b/dev-python/sqlalchemy/sqlalchemy-2.0.54.ebuild
@@ -0,0 +1,95 @@
+# 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
+PYPI_PN=SQLAlchemy
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="sqlite?"
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python SQL toolkit and Object Relational Mapper"
+HOMEPAGE="
+ https://www.sqlalchemy.org/
+ https://pypi.org/project/SQLAlchemy/
+ https://github.com/sqlalchemy/sqlalchemy/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+IUSE="examples +sqlite test"
+
+RDEPEND="
+ >=dev-python/typing-extensions-4.6.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_impl_dep sqlite)
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/greenlet/d' setup.cfg || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ test/ext/mypy/test_mypy_plugin_py3k.py
+ test/typing/test_mypy.py
+ # hardcode call counts specific to Python versions
+ test/aaa_profiling
+ )
+ local EPYTEST_DESELECT=(
+ # warning tests are unreliable
+ test/base/test_warnings.py
+ # TODO: flaky? xdist?
+ test/base/test_concurrency_py3k.py::TestAsyncioCompat::test_await_fallback_no_greenlet
+ )
+ local sqlite_version=$(sqlite3 --version | cut -d' ' -f1)
+ if ! has_version "dev-python/greenlet[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_execution
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_run_sync
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[False-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[True-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[not_has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True-_exclusions0]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True]"
+ )
+ fi
+
+ # upstream's test suite is horribly hacky; it relies on disabling
+ # the warnings plugin and turning warnings into errors; this also
+ # means that any DeprecationWarnings from third-party plugins cause
+ # everything to explode
+ epytest --reruns-delay=2 -m "not gc_intensive and not timing_intensive and not mypy"
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ dodoc -r examples
+ fi
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "asyncio support" dev-python/greenlet
+ optfeature "MySQL support" \
+ dev-python/mysqlclient \
+ dev-python/pymysql
+ optfeature "postgresql support" dev-python/psycopg:2
+}
diff --git a/dev-python/threadpoolctl/Manifest b/dev-python/threadpoolctl/Manifest
index 28b03f0cc0b3..197bf3a8296c 100644
--- a/dev-python/threadpoolctl/Manifest
+++ b/dev-python/threadpoolctl/Manifest
@@ -1 +1,2 @@
DIST threadpoolctl-3.6.0.gh.tar.gz 37892 BLAKE2B 3b89180bbfdbb5aa027a5f828745ba1bd881533e6c2f5ff44fecf920618db4111fa9ef1b219e929485a327e54fe144f80cb9b78a4012d509dea7151f0892e5f8 SHA512 5c55f81bbff127cd7cdd62f390ed5a386c29c7d2806aa98a67b99b54fde0d0360ac78ce004125561486b7f5076c9085ea8dd52779aea1b9bc65b25cf166925e1
+DIST threadpoolctl-3.7.0.gh.tar.gz 53102 BLAKE2B a6bf0533210eb35b72a2d7d9b7058a6e357a2c8a5e645953c30c1b425ed9dc80514878cfec681c5617c0644ae8d12b39a07588810ae302038ba098faf297d4dd SHA512 957821c45942e0c43deeca4abfc1849fd70a982deaf1ac31f78931847f73ecbed704437892b42b8afd2e20e7e8bdac0bf47e97934bbb69a27f09fe6aabdf4075
diff --git a/dev-python/threadpoolctl/threadpoolctl-3.7.0.ebuild b/dev-python/threadpoolctl/threadpoolctl-3.7.0.ebuild
new file mode 100644
index 000000000000..008367aebffe
--- /dev/null
+++ b/dev-python/threadpoolctl/threadpoolctl-3.7.0.ebuild
@@ -0,0 +1,65 @@
+# Copyright 2020-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 toolchain-funcs
+
+DESCRIPTION="Limit the number of threads used in native libs that have their own threadpool"
+HOMEPAGE="
+ https://github.com/joblib/threadpoolctl/
+ https://pypi.org/project/threadpoolctl/
+"
+SRC_URI="
+ https://github.com/joblib/threadpoolctl/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86 ~arm64-macos ~x64-macos"
+
+BDEPEND="
+ test? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Asserts against a hardcoded list of CPUs. Either we skip it
+ # or file bugs about missing architectures until upstream realizes
+ # how bad idea that were.
+ tests/test_threadpoolctl.py::test_architecture
+ # This test fails if the Python executable (or any library that it
+ # links to) uses OpenMP. This can particularly be the case with
+ # CPython 3.12 that links to app-crypt/libb2.
+ # https://github.com/joblib/threadpoolctl/issues/146
+ tests/test_threadpoolctl.py::test_command_line_empty
+ )
+
+ # see continuous_integration/build_test_ext.sh
+ if [[ ! -f tests/_pyMylib/my_threaded_lib.so ]]; then
+ pushd tests/_pyMylib >/dev/null || die
+ $(tc-getCC) ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -fPIC -shared \
+ -o my_threaded_lib.so my_threaded_lib.c || die
+ popd >/dev/null || die
+ fi
+
+ pushd tests/_openmp_test_helper >/dev/null || die
+ "${EPYTHON}" setup_inner.py build_ext -i || die
+ "${EPYTHON}" setup_outer.py build_ext -i || die
+ "${EPYTHON}" setup_nested_prange_blas.py build_ext -i || die
+ popd >/dev/null || die
+
+ epytest
+}
diff --git a/dev-python/tifffile/Manifest b/dev-python/tifffile/Manifest
index 334a1cacab93..84d006476c4b 100644
--- a/dev-python/tifffile/Manifest
+++ b/dev-python/tifffile/Manifest
@@ -1,2 +1,2 @@
-DIST tifffile-2026.8.23.gh.tar.gz 428025 BLAKE2B b6021be6bc47814a09847f610dd1f111317830df31aacaf3d68a793933c5bcfbd625f4607c7ac9c68907db295f8c17148d2b6215d6ef809215863b09ca1a4497 SHA512 86778792b8f156798dba02a3288bc7cff4fd09e1a7feef57104469761699a1c0bf76bebc08fe9e8620c2a368617189cb2dcd5273b1a06bef767629d42f6e4bff
+DIST tifffile-2026.9.15.gh.tar.gz 428109 BLAKE2B 510e16937f4286fef6da3b19c2f7edfa06e26e19eeb938357885d2731bd1404315eb44624352491535d71b5d5328ce8e30b5b865616819b66d43c87c7b5502ea SHA512 76f1ed5a122f46d4d9e05e6024ad362dbca8c3f1af8fb328f0f19945d53a3da21df2ec2b467fa56a214486607b479abdc0ab0b67f1d4885233262c7487b34179
DIST tifffile-2026.9.9.gh.tar.gz 427709 BLAKE2B 8e935e91b9bc43ec74ed26f0d7b1038b3c2ea9e03cd90b6712d3fc2999fe584954b1baa5111baa1ec00e4ca4e556adde3ee9092ae7031ffd00c690aec06bbc5d SHA512 75256c187bf979d55217b945e1443e2d3d895821c200b96f72a9ba98e4f3c84e879f776e8c7b30e0cefceb6d0ab8770c67d8abc31da8db633f8726b2be53f4d9
diff --git a/dev-python/tifffile/tifffile-2026.8.23.ebuild b/dev-python/tifffile/tifffile-2026.9.15.ebuild
index 49630e1bd1b8..49630e1bd1b8 100644
--- a/dev-python/tifffile/tifffile-2026.8.23.ebuild
+++ b/dev-python/tifffile/tifffile-2026.9.15.ebuild
diff --git a/dev-python/tornado/Manifest b/dev-python/tornado/Manifest
index 7fcffa153f4c..62d409037691 100644
--- a/dev-python/tornado/Manifest
+++ b/dev-python/tornado/Manifest
@@ -1,3 +1,5 @@
+DIST tornado-6.5.10.tar.gz 537910 BLAKE2B 6ec1bcba8c7dc2175206528b97be64e6dbbfb51ae6c9cdd1d0dc0bdc4eff55c1a9a0ebe9c700ea18e88fef3197b0d7efe1812fab5196dfab5cdfd71b6d1568bc SHA512 0a3a38162a91d7d82f0d790d37788c5761bd9663af0356641bd6bd0ec5f6d490e5013965db1f91f28959d925127640cffbd4b661415b43ca5b50ee812841f445
+DIST tornado-6.5.10.tar.gz.provenance 9454 BLAKE2B 4a8faa5670534337aead096a06c10b3f77c0ba8dc13e70d94dc92fae59a28e072333ef37635cf2db12fe20de17e175e96da6b575e73c8426103320b6a58f71ac SHA512 c03ebd606a6543a816ffff74217061702ffbdfbeb209ac7541f50d6beca4caf8568e32b40712a3b9ef567f15d50453fe789a84f6e4c2420201216a50776c6951
DIST tornado-6.5.8.tar.gz 520493 BLAKE2B e48ca20fe0551b8536162071e0b9267ccd167df617c25f930481668e733c656904109014e65462e561d47acc557cfe32f86a422e8f7e840b4262acbafb2b720a SHA512 88c096ca30357644c07b6013cd514b5e64135b26a77d9ff17640951632d6f68c9a68d7fa80224743f7900fbf5ddde838088bd9838395651d87d876c8d1d1a2fe
DIST tornado-6.5.8.tar.gz.provenance 9416 BLAKE2B 1f4d1d9289f8aa8fdde1dda19454da15e9056111f0225e0701eb385ef42b0fae26a6bb9dc5df3ffb9796e4d805db5aa7406aa466ec9389802df1033cdb5231a6 SHA512 b1c364aed55ecb3cbab7343de9ebfaa181579ca81a57e498953c7d0e657bd8b08ee9fb6e5f72d8205f379fbd25237054bfecdb9982fc973e4bb55a00a0411444
DIST tornado-6.5.9.tar.gz 536145 BLAKE2B 13071c50a8f0701d750f26aa5fb3669ee5c78c4d249d570b519a672d8fdfa76d38f90633ad21fa1c7d551c50c5f6d0dab53ebb694685d52f1cc1269cb0728564 SHA512 e497f0cacca0ca0d34b65117a72e9ebe0056f77ced09eb5d200dea24da8c28182d5704d1b17510fc139841718fce6a19c7f154d416e59292f4236eb717a0a75c
diff --git a/dev-python/tornado/tornado-6.5.10.ebuild b/dev-python/tornado/tornado-6.5.10.ebuild
new file mode 100644
index 000000000000..68d483b79d3a
--- /dev/null
+++ b/dev-python/tornado/tornado-6.5.10.ebuild
@@ -0,0 +1,61 @@
+# 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
+PYPI_VERIFY_REPO=https://github.com/tornadoweb/tornado
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python web framework and asynchronous networking library"
+HOMEPAGE="
+ https://www.tornadoweb.org/
+ https://github.com/tornadoweb/tornado/
+ https://pypi.org/project/tornado/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/twisted-16.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ >=dev-python/pycurl-7.19.3.1[${PYTHON_USEDEP}]
+ ' python3_{13..15})
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.3.2-ignore-deprecationwarning.patch"
+)
+
+src_prepare() {
+ # network-sandbox? ipv6?
+ sed -i -e 's:test_localhost:_&:' \
+ tornado/test/netutil_test.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x ASYNC_TEST_TIMEOUT=60
+ # Avoid time-sensitive tests
+ # https://github.com/tornadoweb/tornado/blob/10974e6ebee80a26a2a65bb9bd715cf858fafde5/tornado/test/util.py#L19
+ local -x TRAVIS=1
+ local -x NO_NETWORK=1
+
+ cd "${T}" || die
+ "${EPYTHON}" -m tornado.test.runtests --verbose ||
+ die "tests failed under ${EPYTHON}"
+}
diff --git a/dev-python/trakit/Manifest b/dev-python/trakit/Manifest
index ace11e1ac489..0c6e51504b47 100644
--- a/dev-python/trakit/Manifest
+++ b/dev-python/trakit/Manifest
@@ -1,2 +1,2 @@
-DIST trakit-0.2.5.tar.gz 34873 BLAKE2B 5e5272a7a9882328dd1f5fc2a8e142511d0a1cb19d488378b9fa43772ee77ce787d309d0b10fe77ee8f737817e41c8fdf6cc2d8eaafa989353706cbc92358e89 SHA512 95dfd06d8cb6c9f4b2f1412c4b505209e5122595f0ebba1b6bef9ecb80c31e4f8a4b7aba706931ce9684f2e8ddf4f9836c9f034053ce2f25c857d08c76a9eaf1
DIST trakit-0.3.0.tar.gz 34888 BLAKE2B 63668b7b5a0f4f94c055bf6e20220549fe54cb06a3b0832d6c6220075c2ef1a4488e75bb8ff3b24740597853fc0b6ce9661c8e04e7b2a449603545c9e6f09967 SHA512 11eebf7656ff1da72c8a05f8e58d1e6cac753ae1f5b8ee3c8c1afc52ab4c001b7ded3fa395a422fbbd4d452d3d8769f597e49df0985e83fc50f31551c1d468bc
+DIST trakit-0.4.0.tar.gz 34465 BLAKE2B 7d6be36561c1c968b62bcf7dd24ff21dc3f1df0927acb476cf278884a74f42038c61f11667d573371a740c923e61d2a94b834d9a374ce388898a80640eb06829 SHA512 46b3cf32e059b642bdc69ea5e7b20b216bda265c0b114a3e1c1ef16a3145d7236f2d9da6c7e8b648e2203f91daa399bc0334386798e7f5f19ac370cb421370c5
diff --git a/dev-python/trakit/trakit-0.2.5.ebuild b/dev-python/trakit/trakit-0.4.0.ebuild
index 91f8db29b4f6..a7e48a7a0afc 100644
--- a/dev-python/trakit/trakit-0.2.5.ebuild
+++ b/dev-python/trakit/trakit-0.4.0.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-DISTUTILS_USE_PEP517=poetry
+DISTUTILS_USE_PEP517=hatchling
PYTHON_COMPAT=( python3_{13..14} )
inherit distutils-r1 pypi
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
RDEPEND="
>=dev-python/babelfish-0.6.0[${PYTHON_USEDEP}]
@@ -36,10 +36,3 @@ EPYTEST_DESELECT=(
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # sigh, poetry
- sed -i -e 's:\^:>=:' pyproject.toml || die
-}
diff --git a/dev-python/urllib3/Manifest b/dev-python/urllib3/Manifest
index b209d1bf7ebf..4f52106b16f6 100644
--- a/dev-python/urllib3/Manifest
+++ b/dev-python/urllib3/Manifest
@@ -1,3 +1,5 @@
DIST hypercorn-d1719f8c1570cbd8e6a3719ffdb14a4d72880abb.gh.tar.gz 156216 BLAKE2B fcb5f49653401e6e4079e1c770d3cd407602d4d6764437b735bd4ec04191dec59cdc930822fa2aff726ee25cddd0f71fd457dedf31026bff1da121d93af8b768 SHA512 62d6787d88a2e716f0ac04fc49f6cdc586e473a660ee754ff66961922ae78bcc75d1f78b091e78557dd60f006e8e480114738c7b4ff71beac804e4fc9603240b
DIST urllib3-2.7.0.tar.gz 433602 BLAKE2B 2a74917dbcca8a30cd0e202c6c4d1b2cb096b6466b4c7c4d7a11d74205f971cea41aac5628ea8d69cfd99f1a0ac1aff4221119cddcf53449e8271bc4d50e6abf SHA512 6f75e5873f18301de37c0d7f17c726b21c9928f2fe9ec58d843f1172b80be6eb05117bdf7af27dd7eb1ab0175a94e0f49cde01d8d8919f61de8710e163fabc03
DIST urllib3-2.7.0.tar.gz.provenance 9499 BLAKE2B 86eb7207644c7f94a76f8818927d4e2301648c4bde0acc029f95ddf40ae3b777ad6149ca8fbfa51de26493c6c3987d99ddfb90df101c4e5eb1d3c85ddf101134 SHA512 25447cda48b206b5a351c9295771111bc0e61d53fb878a3735ac1d7c6a333df863b396b215a9bbc3a7821b368738aa3f5bbac7dbc67e617c354ff977e3432743
+DIST urllib3-2.8.0.tar.gz 458972 BLAKE2B 10ff4ea8f934c19159b5a10d2c2af954d93114c636eb2c052970d6a9a7787b8e99dc49f1bdbb42d31458c9c7f37a22a0b206a34a14dfe0aa72d272f37905c7ea SHA512 3104f0b89b9d7421b0b13ff34c9e68a315772f2e1271c8b02da516b7dc4108676e632145ab9b390c3d9033019253f36a48ca44c5b89269058eebb0d21f472383
+DIST urllib3-2.8.0.tar.gz.provenance 9611 BLAKE2B bbb95ca460058ed0993b895a8a76ca00cea828abc0ad16d163d6a0a0014aa7e69d0daabbb3a7f7dd82e6dbad0ea21ea3e6743e21549ed265b49b53e534034db7 SHA512 3c290a3a51161e10f3ab5d8c02875c68adc0c04eed4f12b121b5b3637646fac311e10910ddb7cd51130fbcad7fed0b269aa2b4e8c8d886936fb846011d1aaa85
diff --git a/dev-python/urllib3/urllib3-2.8.0.ebuild b/dev-python/urllib3/urllib3-2.8.0.ebuild
new file mode 100644
index 000000000000..34f352fc9aa7
--- /dev/null
+++ b/dev-python/urllib3/urllib3-2.8.0.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/urllib3/urllib3
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="ssl(+)"
+
+inherit distutils-r1 pypi
+
+# The package has a test dependency on their own hypercorn fork.
+HYPERCORN_COMMIT=d1719f8c1570cbd8e6a3719ffdb14a4d72880abb
+DESCRIPTION="HTTP library with thread-safe connection pooling, file post, and more"
+HOMEPAGE="
+ https://github.com/urllib3/urllib3/
+ https://pypi.org/project/urllib3/
+"
+SRC_URI+="
+ test? (
+ https://github.com/urllib3/hypercorn/archive/${HYPERCORN_COMMIT}.tar.gz
+ -> hypercorn-${HYPERCORN_COMMIT}.gh.tar.gz
+ )
+"
+
+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"
+IUSE="brotli http2 test zstd"
+RESTRICT="!test? ( test )"
+
+# [secure] extra is deprecated and slated for removal, we don't need it:
+# https://github.com/urllib3/urllib3/issues/2680
+RDEPEND="
+ >=dev-python/pysocks-1.5.8[${PYTHON_USEDEP}]
+ <dev-python/pysocks-2.0[${PYTHON_USEDEP}]
+ brotli? ( >=dev-python/brotlicffi-1.2.0.0[${PYTHON_USEDEP}] )
+ http2? (
+ <dev-python/h2-5[${PYTHON_USEDEP}]
+ >=dev-python/h2-4[${PYTHON_USEDEP}]
+ )
+ zstd? (
+ $(python_gen_cond_dep '
+ >=dev-python/backports-zstd-1.0.0[${PYTHON_USEDEP}]
+ ' 3.{11..13})
+ )
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_cond_dep "
+ ${RDEPEND}
+ dev-python/brotlicffi[\${PYTHON_USEDEP}]
+ dev-python/freezegun[\${PYTHON_USEDEP}]
+ dev-python/h2[\${PYTHON_USEDEP}]
+ dev-python/httpx[\${PYTHON_USEDEP}]
+ dev-python/pytest[\${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[\${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[\${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[\${PYTHON_USEDEP}]
+ dev-python/quart[\${PYTHON_USEDEP}]
+ dev-python/quart-trio[\${PYTHON_USEDEP}]
+ dev-python/trio[\${PYTHON_USEDEP}]
+ >=dev-python/tornado-4.2.1[\${PYTHON_USEDEP}]
+ >=dev-python/trustme-0.5.3[\${PYTHON_USEDEP}]
+ " "${PYTHON_TESTED[@]}")
+ $(python_gen_cond_dep '
+ >=dev-python/backports-zstd-1.0.0[${PYTHON_USEDEP}]
+ ' 3.{12..13})
+ )
+"
+
+src_prepare() {
+ # upstream considers 0.5 s to be "long" for a timeout
+ # we get tons of test failures on *fast* systems because of that
+ sed -i -e '/LONG_TIMEOUT/s:0.5:5:' test/__init__.py || die
+
+ # remove stupid warning checks
+ sed -e '/str(wm)/d' \
+ -e '/assert not warn\.called/d' \
+ -i test/with_dummyserver/test_https.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x PYTHONPATH=${WORKDIR}/hypercorn-${HYPERCORN_COMMIT}/src
+ local -x CI=1
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ # TODO: timeouts
+ test/contrib/test_pyopenssl.py::TestSocketClosing::test_timeout_errors_cause_retries
+ test/with_dummyserver/test_socketlevel.py::TestSocketClosing::test_timeout_errors_cause_retries
+ # TODO
+ test/contrib/test_pyopenssl.py::TestSocketClosing::test_socket_shutdown_stops_recv
+ test/with_dummyserver/test_socketlevel.py::TestSocketClosing::test_socket_shutdown_stops_recv
+ # hangs randomly
+ test/contrib/test_pyopenssl.py::TestHTTPS_TLSv1_{2,3}::test_http2_probe_blocked_per_thread
+ test/with_dummyserver/test_https.py::TestHTTPS_TLSv1_{2,3}::test_http2_probe_blocked_per_thread
+ # more random warning failures
+ test/contrib/test_pyopenssl.py::TestHTTPS_TLSv1_{2,3}::test_ssl_correct_system_time
+ test/contrib/test_pyopenssl.py::TestHTTPS_TLSv1_{2,3}::test_ssl_wrong_system_time
+ # some plugin?
+ test/test_connection.py::TestConnection::test_HTTPSConnection_default_socket_options
+ )
+
+ local EPYTEST_PLUGINS=( pytest-timeout )
+ local EPYTEST_RERUNS=10
+ local EPYTEST_XDIST=1
+ epytest --reruns-delay=2
+}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index fc268a0cccf9..e75ed3a8e5dd 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -3,6 +3,7 @@ DIST uv_build-0.12.10.tar.gz 423598 BLAKE2B 363ee130a5da490859d0a2f0122be340f369
DIST uv_build-0.12.12.tar.gz 424423 BLAKE2B c7ed255923f884467ecaf8d70be044bea5c39db61611d320105d2a5c4c8e885a674ed22fa285ed398abbcaa229d9cca339f31f7d2e022adf099b5e0fe175d4c8 SHA512 38b91b29112af0e9677ae666125356b1735d8608ecdbcfae1d87ceff2b8cb8f61d5ecf917292a620d0e9c6f6d3ac121994fba2a0d7d076e18cd52e813fc1e2b2
DIST uv_build-0.12.13.tar.gz 424846 BLAKE2B 9fee11946f1067045349d28ba05b6dae8aaea430fdbbe19970c286d20f758d03343ed9a6afd2166f85ecfee3009fb66c7429f6ee8c58a6453e0203f2a3fca38a SHA512 77bf75208e6932b791b42d2a9dc199901a981d3ab8881e58cd5604e3207aef020538ff120770e0eb31646c1c0b7e972c816932c9d3bb0defc6b9583763607584
DIST uv_build-0.12.14.tar.gz 427528 BLAKE2B 81c3c2310058e279debf4c3964ac02fbccb0deec757fbb0824cf0e9a7e6edc0a49b269b382ee8ec47290bf37194c33c806bbb6778ba52d6915bbff3109007a9d SHA512 d8ff710bab00c287e3935e1411c9b9898a9db2107ac03285155bbcdda58e2d94d40556ace50986777b90832a03ea896149846b51e57691f9f243203c32ec44f7
+DIST uv_build-0.12.15.tar.gz 427499 BLAKE2B 30c3f72775de6f609ada7eca182fbd46da150624945983bd64691c59afb86e5e6c2bbeda1ea7f0bb5d12e8c9a332e741a9e2443ac6edba09da90352c00680d6a SHA512 8ad1d541ee1e287683d3013efb453e0ce1867e1404b369c36ac8f46b7300dd201516ade51930aad08b38ef1d42dff362baa13f58281d454344fde22f00443919
DIST uv_build-0.12.3.tar.gz 414444 BLAKE2B f226c1c2bf0b2af538f66095e20c02ad1933afdee62a07eff5f1135692bab47e286f67e7a8f5882e98c61fbb6bf831a85dd56a2d5af2bee6d62d8857a59e56bc SHA512 90d9af3e1a1ff1d7dda21fa38c0ac2d94536e73697ddabb408fb38e2d381498b2401007af0ab31c39cbf3b632aeca2991b3a66d7108e1c5eb7294b3fba8fe107
DIST uv_build-0.12.7.tar.gz 418759 BLAKE2B 94aa33b2644f849a686d80d7f7d365ca8433615d93f27209fca5b21747363cd349d11e887d090420102f06a49977ce963b8f19c24a4280bf82a09943ba08885b SHA512 135f845b3ee6d1925f740917f83f94ec1a7e95aab5ed2db0aa70516c712ab0a143a0e427d3c172fac0bb1fabaa9103718bb2a26c31c9a287e3af65ac0175a245
DIST uv_build-0.12.9.tar.gz 423446 BLAKE2B 8f32f7527633f5853a11a0f798a2aa075f9e96c2b34144f986a639dbd042bac7c5e33853287ef43273352a3ee84da852062c42daead1f188281295b635694177 SHA512 3aa6ea5b4e60218e7cbc3c5ed8ff7fbeeace36eb0d2c75627fb7a0ce7c060e8d6405378e9713f7164319cce55dc96b1a335ccb3032cfc7e9e60e99862295e79e
diff --git a/dev-python/uv-build/uv-build-0.12.15.ebuild b/dev-python/uv-build/uv-build-0.12.15.ebuild
new file mode 100644
index 000000000000..65d94f2051ae
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.12.15.ebuild
@@ -0,0 +1,100 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/pyproject.toml.orig
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 0fc2a569f30f..51b06af7f5f4 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -8,6 +8,8 @@ DIST uv-0.12.13-crates.tar.xz 44176012 BLAKE2B 5a2459d28a794edf2a049c973916c6af9
DIST uv-0.12.13.gh.tar.gz 8784071 BLAKE2B afb0acdf733efe4937ba5e7a8ca5257e9f3c6651e13adf5b44e96985be9f0abebd2167aec84bf285385b8c984636c0c9ff0f4c6077188088cff27af40334fa78 SHA512 e8a03cde57914007d932c55d017be780a9aaeac62d1b5831a3fd62f8c44299d6c8bc01582eb3e6c06c92b3edfbd519e1ea4d8d95fbb2cd0bdffd85b1cd36a137
DIST uv-0.12.14-crates.tar.xz 44168832 BLAKE2B ad318ae7073d47eec81b715bb5461993c03de35b99d7b657fc1541ae63a3e3a2e5e9010bd2dbc525fc9b543ef85bdb276552383bdf916164b980c510646f2c74 SHA512 1cb24613d418983e2d7b921fe4766c5dce9d68eede6f1a99a1187657d002446a1b97685b0246d96136c6d3701050d2490830f0f325bfb602620a856b4aa498ac
DIST uv-0.12.14.gh.tar.gz 8629043 BLAKE2B 2260d63c6061d3dd2bdcb267848e9e6379f2e09a72e34a024f988d27aeb6818b75c1dd34962f1730d5d394722c19394abc356735ed919f9edc0ac680f0fe6f1d SHA512 72354cb5cce51e938aba647cb6fa0956efb5a5d49be1a928f8965a0639d207e142170cefb2f5d5dc9e72943951580ca156e2a12be6b7c08d049c4dc3a7f1d944
+DIST uv-0.12.15-crates.tar.xz 44168832 BLAKE2B ad318ae7073d47eec81b715bb5461993c03de35b99d7b657fc1541ae63a3e3a2e5e9010bd2dbc525fc9b543ef85bdb276552383bdf916164b980c510646f2c74 SHA512 1cb24613d418983e2d7b921fe4766c5dce9d68eede6f1a99a1187657d002446a1b97685b0246d96136c6d3701050d2490830f0f325bfb602620a856b4aa498ac
+DIST uv-0.12.15.gh.tar.gz 8628030 BLAKE2B 6640138ba52b1d4758e7d703652669b82de5246866145cbe62d0eda101738cc15a967037962c8a2f3a964cdf329896243a6363966088e2346a9499d2b85ea626 SHA512 7bc4c206e00ebb4540cd03b4eb70b120aebafe0392cfe652bd94dc8e003ea922eb451d2ce50c1468641f97709672cbea6c05f93739162fc822a8481fe2027089
DIST uv-0.12.3-crates.tar.xz 42197452 BLAKE2B 996bb294d37774e0cb5529c34552d20877cd82a3d063b6e4dc1f6feff05a7822a91c44408a970f038d3045312be0edd4c9e8d34f6eebc04d71bd4d2ffa0184ee SHA512 8de33956c5a603fb4aa1bb5ab6db68c537d7523a84f3092057f562b1209bc976b0bc64cc6ed76cbf1b0edb4981b6a41765fa5e2729a487e4e2322052aa08b8a4
DIST uv-0.12.3.gh.tar.gz 7273161 BLAKE2B 706a2297090b13c6f731d25f55ae8c2225e3b9bd820c61814f512c1e04d98d2e46ce5bfac6ec6ea346dbce1663aea644384b37663b53d64a08a90b48217bdb0d SHA512 a4933b9b9b852dee2485800ad82ee3be111a4a5a437ab32d5064cfd4004e124ba733294a546a097379c74cf1fc234d1da0488aec7725037c7b967ec1aa862a71
DIST uv-0.12.7-crates.tar.xz 44143088 BLAKE2B 075113e8cbafd99a1c70c4ce53678f2ceb13ce31dc7cafb5773e32ae9dfa14144390380e0149219912a0c4b92e6d3b9d0a0a0016cdd4c69097bf75adf1b8a716 SHA512 f9dbdad7cbddd3238c7cc9fbcbec4e92fc8c8c66bc7247ccc8159bb186223c199e3bd411ad9148750ec1fa258775dcec1e2bb6bc3287fca7aeb6ffa7ba4d6b44
diff --git a/dev-python/uv/uv-0.12.15.ebuild b/dev-python/uv/uv-0.12.15.ebuild
new file mode 100644
index 000000000000..9826f9045941
--- /dev/null
+++ b/dev-python/uv/uv-0.12.15.ebuild
@@ -0,0 +1,151 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.96.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MIT-0 MPL-2.0 Unicode-3.0
+ Unicode-DFS-2016 ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/zstd-sys-*/ -name '*.c' -delete || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+ # otherwise, rustc/llvm runs out of address space
+ use arm && export RUSTFLAGS="${RUSTFLAGS} -Copt-level=0"
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/{uv,uvx}
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index 99e02b8473c6..f8e0dd7dd414 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -1,5 +1,7 @@
DIST virtualenv-21.6.1.tar.gz 5526620 BLAKE2B a970f52b9a8ef5948ac0f2827ce9d2b724010bf77ef1fd678024d61834dd607cade4f1895c7f3cffd88d0b5f20353ee3b1934056d6d93a6d7576782aa71249e3 SHA512 bb5388dec00fa8e607188b1bd9240f2bbccf1b80ba94e4df30737eb435aae2be8637d534e2448cf7eae14dcc2f2b02a63168816c2207c8251c129db2a5665f39
DIST virtualenv-21.6.1.tar.gz.provenance 9508 BLAKE2B fa5122071df6df6435ad11f102bed2f85d5ebbaf8ab6056c2f2c66c1d3e8366692dadda375f2c39151abc413ec540169197730101ba3061dccec0cf2f7bd2668 SHA512 f5180591d1f4cca9bb5632ea2918437daf30c1deb91fac7676a783e5ee19ea424a6bac7fd3a8c6eddff7996ef6c1a4358746d92788cbd283a8abb579d745935e
+DIST virtualenv-21.7.10.tar.gz 5350247 BLAKE2B 9d9b5f419c4ac1225ed4435a9f5a2e337854efe68b3453a67fb764e84b48d34d896ea322ab01de1892f33a0ceabf29a7937ecc1fa6173615c3e4e68aae4b3665 SHA512 87e8de301a3d089c1066a87cc40848c0e60985eddaba9aff217f41aaa10149d96dc0ec39ee507066c3f3cc402a9ca09ca8b22d14cf369c63075e2eb703187311
+DIST virtualenv-21.7.10.tar.gz.provenance 9440 BLAKE2B 6f75442780a0ce863a63316b4c43c92c5464ca27065f1d31e410a8cdadbf716fd3b8c07dcb22e2c855b2a745d9dcdcab1249ee20457e413b25b611a08f86e18a SHA512 f4386b408b460bbd0921d48e1f0751dc93b253dd4f3a1adfbb565263fd63488f6fd64d68ef52b0a60651a256c7714a687fe5cb6c23126446a6def5578f2dc5ed
DIST virtualenv-21.7.4.tar.gz 5345511 BLAKE2B 30c7b5e782e4867e5d2a1726ab564af6d106280a909666a4dbee0a42d0cf9bde932681eb442cecb186d3a04bea329ebce458e45ecc5b745bfcc8a8fcc1e85997 SHA512 52db3945bf8c3c8f87db9b2e9df3ff22ab45b4ce3f0ffdbb9a7b3678df4cde0b0980dd9040adf478a6909d0650ff6f873a2db2d022e402e8d46edc8b67cf5c97
DIST virtualenv-21.7.4.tar.gz.provenance 9618 BLAKE2B 5cf72407fb515710895b6534a32c0b7b96329c3c8387aae5a1552e7d43a5447bb2d10c2198b61bd0150cf3cf719d54d5e3329a5a7230abb470e3805f87031a6b SHA512 a7280f39dfeb05379b7c9ba5dd3b9fdb8e7fda8a9496805795f53407fc175b308309640e77dfadec21806e2fb07c545ccb95c7e7b87fee68fa63fdf1fb30f58e
DIST virtualenv-21.7.5.tar.gz 5346743 BLAKE2B 52c54885686970e47eb44c6271515164929382f7ab8f514c1cd4861fb9145354d4b299e1d2d5eb658504713545dc9d481db8dec8541235983f9f68d795b68d52 SHA512 708068427c768f6469ffc49afa9738ef7d7b1f3edd1809ed2e8267878eae7f5729ad0992fc9acefbda6059c4c42a78a6cba31af0c6dbf4de7414b6c12da924de
diff --git a/dev-python/virtualenv/virtualenv-21.7.10.ebuild b/dev-python/virtualenv/virtualenv-21.7.10.ebuild
new file mode 100644
index 000000000000..b2791558c0f7
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-21.7.10.ebuild
@@ -0,0 +1,117 @@
+# 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/pypa/virtualenv
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.24.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+ >=dev-python/python-discovery-1.6[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ >=dev-python/ensurepip-setuptools-70.1
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/coverage[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-21.5.1-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[=0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ tests/unit/seed/wheels/test_wheels_util.py::test_embed_wheel_below_oldest_supported_is_missing
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ # TODO
+ tests/unit/create/via_global_ref/test_build_c_ext.py::test_can_build_c_extensions
+ # random resource leaks or xdist
+ tests/unit/test_file_limit.py::test_too_many_open_files
+ # Internet
+ tests/unit/create/test_creator.py::test_create_distutils_cfg
+ # we do not use bundled wheels
+ tests/unit/seed/wheels/test_bundle.py::test_every_wheel_on_disk_has_sha256
+ )
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} time-machine )
+ local EPYTEST_RERUNS=5
+ local EPYTEST_TIMEOUT=180
+ local EPYTEST_XDIST=1
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}
diff --git a/dev-python/xvfbwrapper/Manifest b/dev-python/xvfbwrapper/Manifest
index d51eb6556120..491bcc8c5fca 100644
--- a/dev-python/xvfbwrapper/Manifest
+++ b/dev-python/xvfbwrapper/Manifest
@@ -1,3 +1,4 @@
DIST xvfbwrapper-0.2.29.tar.gz 12853 BLAKE2B d6d931a9742e29e34bc1506da2121c67eaf3bbcaa61f2c14c61fc2a7baaf4424949f836248917903264a7f64c425e8f20a6fa631a789fbff4a0c071a8d59dd47 SHA512 c546c7db922dc0027450a9526e94102cdcc0ac322c106574fb35ff70315daa6b4c1d1319aa240259fb1574af129227835cd3a0670dccf89b5d81f6e7b9a643c5
DIST xvfbwrapper-0.2.32.tar.gz 13308 BLAKE2B 2bc2a5d5c681a7ff898c09803b1fd16c8550bbd0871705ac950c0daec64df58525dc249c3d475e28266d0ea3fdb6c0b5d0c681fb9b4bcecca8846dad7db162c1 SHA512 0c4cf35816e325de2688b3781d4a96518d97ac1c2654a5c422ac5787bf6306cfb3af2b57a526823715286c0cba0a0b3b02694c29c14995f5f5ff59a189b2e802
DIST xvfbwrapper-0.2.33.tar.gz 13488 BLAKE2B c0d8ab22efa27c0d20b6b77499e0f10a260b3ae1f533a714d633c9542439c550deb33d237a9a44efb2a94096702de28e07ae306c1ad238fb468ddb73e4116c8e SHA512 2898cd60db19823fd0cb482402e5dc243fa5188bdc7029e27d9b900251fb8822b9aa7b1a5e8e8649b10986c6f6a2bbaa3457064ad680e6a406283c42c55e779c
+DIST xvfbwrapper-0.2.34.tar.gz 13264 BLAKE2B d1ec1808f0f6824397cff5d75ded199c9e578aa129593088a15a121a473afd4bafdc08edc44a49988f49f87534886a0b282bf257f9eba9c2412b3d0228b61704 SHA512 ae94b449e87b4136e058ad30dc7e02de5618cf1bffb7bf5cba1d2fc4e653c96c8d2626792860375e4c25c98c39233e2e3374aa5509e99868d7378259473fad3b
diff --git a/dev-python/xvfbwrapper/xvfbwrapper-0.2.34.ebuild b/dev-python/xvfbwrapper/xvfbwrapper-0.2.34.ebuild
new file mode 100644
index 000000000000..787856574075
--- /dev/null
+++ b/dev-python/xvfbwrapper/xvfbwrapper-0.2.34.ebuild
@@ -0,0 +1,31 @@
+# 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 pypi
+
+DESCRIPTION="Python wrapper for running a display inside X virtual framebuffer"
+HOMEPAGE="
+ https://github.com/cgoldberg/xvfbwrapper/
+ https://pypi.org/project/xvfbwrapper/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ x11-base/xorg-server[xvfb]
+"
+BDEPEND="
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/yarl/Manifest b/dev-python/yarl/Manifest
index 9a9653fdf088..0217245f26ce 100644
--- a/dev-python/yarl/Manifest
+++ b/dev-python/yarl/Manifest
@@ -1,4 +1,4 @@
-DIST yarl-1.24.2.tar.gz 210798 BLAKE2B 24307407fe04c59e33a34bc4c8a529f47966328a592134fc7af3c8fe7170404f5bc7cf0886c05b6d26fae62e7f42470491e92161d71ceb6757998f13a9724942 SHA512 1804d105d20d828c29827cf593aecabb3369af3a5edb62c46af4daa54bb39e452b815258e2a5e6a9fcfcd2485d93e4354822549abd3de29cd681aa0d04e46aab
-DIST yarl-1.24.2.tar.gz.provenance 9271 BLAKE2B 2cecf60ef6c52ab36fd04d243d854dcff16f7d37228b941d2ceda934a4a65ed94eb3d8e73f93df7e51cb84cd52a71c701b1f251667c6e17ea597bcef9430f86a SHA512 8bbdecb0632757b2e63428d2ba12dc600366583ec3e41bc7409a57c0ae939d09cfb6b0273a1d015e6bdcc480d82954a23571d2fde0c00b0f3b484fb83c8efd4c
DIST yarl-1.24.5.tar.gz 228679 BLAKE2B 81e0d83e7ebd56602fba4b9e8a0c4b98269d11fdc64d0e72ff7fe1c9f7872784cabbbe6ce10596f73939c08253c0d238dff303c2302911b589e6a7ac47015b90 SHA512 0805b94ab2d69bd906a8f4a6a65b65e0cc11e0eaec473d40e9d363664c48a25dbd5cb0a5d4ed14b5ec965c2e5a17c766788b3d08f82a836876e80e2c9a012cb3
DIST yarl-1.24.5.tar.gz.provenance 9424 BLAKE2B e0b509817c88266a0a6eebe00da6bec206b0c3c18e7d2d13e39b39b0d2dd2611d9a766380375e67b51ba4c0a046db07b59b6f182bccd8fb1748811110970b820 SHA512 f5d551cc2484ed7c27b4e40e118cb3f96755ff4b8d8cdda036c1fdf8c542fd71456183719f749f42a973069ed90d4543398eeba1707b2700e1a2bc5c08a92a08
+DIST yarl-1.25.1.tar.gz 246245 BLAKE2B b9cc73e56ac526f9e703c0c60808f25c557a1a1c285920b220966cc6a2627265f0f034d7ea72546a07b5775c2e282e11b0179f935407c3f0df95ba13f59bdd2b SHA512 d7a8ecaeaef036c622b97d610a607ad55481e427957e9291a3e2035f3df0552024f1d57cb97465d7bb62faf2a2ae13661912325f77af99c80830280658988f52
+DIST yarl-1.25.1.tar.gz.provenance 9512 BLAKE2B 1b7d8431fd2687c8b07dc938746c6901accb1a3be1b1c079df2fed08241b8dd0b1a83817b361549f71a033ecac8eb844ef05a6bf70607610ce3e22f7f0d560de SHA512 85c8f4a4651788a3f304fe83119e4c074ad6e5b9491217e583e2d3eb78a61eaf39403385c11ef05b643899e3dc466878d9bf9ae8a5cc27a85e434f1b9f1de807
diff --git a/dev-python/yarl/yarl-1.24.2.ebuild b/dev-python/yarl/yarl-1.25.1.ebuild
index 977ab5b19ce1..b378da5d9b45 100644
--- a/dev-python/yarl/yarl-1.24.2.ebuild
+++ b/dev-python/yarl/yarl-1.25.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="+native-extensions"
RDEPEND="
diff --git a/dev-util/glslang/glslang-1.4.350.0.ebuild b/dev-util/glslang/glslang-1.4.350.0.ebuild
index 20e1f894271d..5ad96dfcd022 100644
--- a/dev-util/glslang/glslang-1.4.350.0.ebuild
+++ b/dev-util/glslang/glslang-1.4.350.0.ebuild
@@ -12,7 +12,7 @@ if [[ ${PV} == *9999* ]]; then
else
GIT_COMMIT="vulkan-sdk-${PV}"
SRC_URI="https://github.com/KhronosGroup/${PN}/archive/${GIT_COMMIT}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
+ KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv x86"
S="${WORKDIR}/${PN}-${GIT_COMMIT}"
fi
diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.6.3-r1.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.6.3-r1.ebuild
index f966eefe6d86..ef85590530a0 100644
--- a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.6.3-r1.ebuild
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.6.3-r1.ebuild
@@ -360,8 +360,8 @@ pkg_postinst_check() {
ewarn
ewarn "Append --ccbin= pointing to a clang bindir to the nvcc compiler flags (NVCCFLAGS)"
ewarn "or set NVCC_CCBIN to the same bindir."
- ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")\""
- ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")"
+ ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")\""
+ ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")"
ewarn
fi
fi
diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.1-r1.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.1-r1.ebuild
index 9b64e6bcea22..67683324df93 100644
--- a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.1-r1.ebuild
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.1-r1.ebuild
@@ -360,8 +360,8 @@ pkg_postinst_check() {
ewarn
ewarn "Append --ccbin= pointing to a clang bindir to the nvcc compiler flags (NVCCFLAGS)"
ewarn "or set NVCC_CCBIN to the same bindir."
- ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")\""
- ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")"
+ ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")\""
+ ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")"
ewarn
fi
fi
diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.2.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.2.ebuild
index 0a87a78f123e..b1314156e105 100644
--- a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.2.ebuild
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.8.2.ebuild
@@ -362,8 +362,8 @@ pkg_postinst_check() {
ewarn
ewarn "Append --ccbin= pointing to a clang bindir to the nvcc compiler flags (NVCCFLAGS)"
ewarn "or set NVCC_CCBIN to the same bindir."
- ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")\""
- ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")"
+ ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")\""
+ ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")"
ewarn
fi
fi
diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1-r1.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1-r1.ebuild
index 3c0a8a4f4e28..7cbecdefb768 100644
--- a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1-r1.ebuild
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1-r1.ebuild
@@ -363,8 +363,8 @@ pkg_postinst_check() {
ewarn
ewarn "Append --ccbin= pointing to a clang bindir to the nvcc compiler flags (NVCCFLAGS)"
ewarn "or set NVCC_CCBIN to the same bindir."
- ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")\""
- ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")"
+ ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")\""
+ ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")"
ewarn
fi
fi
diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.2.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.2.ebuild
index 69428941ddd0..c70f239d03d5 100644
--- a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.2.ebuild
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.2.ebuild
@@ -362,8 +362,8 @@ pkg_postinst_check() {
ewarn
ewarn "Append --ccbin= pointing to a clang bindir to the nvcc compiler flags (NVCCFLAGS)"
ewarn "or set NVCC_CCBIN to the same bindir."
- ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")\""
- ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")"
+ ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")\""
+ ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/${CLANG_MAX_VER}/bin")"
ewarn
fi
fi
diff --git a/dev-util/pixi/Manifest b/dev-util/pixi/Manifest
index 941568cce766..d92e055fa525 100644
--- a/dev-util/pixi/Manifest
+++ b/dev-util/pixi/Manifest
@@ -1,6 +1,6 @@
-DIST pixi-0.79.0-crates.tar.xz 78344160 BLAKE2B 4965008f0b0185ef729fa728215d7ae72c2b8357f62f75a1416b58be90e9ac0b2f21315d803d62e84b13cde063ea4ec7e7853e6dc3f4023f5bbf86d6c2335f18 SHA512 3a8dbbdc75148add5a5ad8b3f3211ef48976c612a0b4a77560b93766bcf15f6a0e0ea5bd4d9b0d3ad09bfb92b7f5e27093ece3bf469472d3ebd4db836507b76c
-DIST pixi-0.79.0.tar.gz 19868796 BLAKE2B d736801e76bae9aa5cd0dc004db96142c42aa35aa7a6a8eae11635b2c96dbe41ec5a01a8d72dc1d611ce85a24399501a4bc71383a7dda2385682a02e09097398 SHA512 ae6a01d5b07b8b23b02b04cef8bc01a894236681a7203cce8ddd8502482532c7694e4633a5ceee0fe0fe7e9f7dc6387668ed41cb9bb4a93854b55e65a699486e
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 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.79.0.ebuild b/dev-util/pixi/pixi-0.81.0.ebuild
index 8913b7bf42cc..8913b7bf42cc 100644
--- a/dev-util/pixi/pixi-0.79.0.ebuild
+++ b/dev-util/pixi/pixi-0.81.0.ebuild
diff --git a/dev-util/redo/redo-0.42d-r1.ebuild b/dev-util/redo/redo-0.42d-r1.ebuild
index ad2cf864410b..7269b0513f28 100644
--- a/dev-util/redo/redo-0.42d-r1.ebuild
+++ b/dev-util/redo/redo-0.42d-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2018-2024 Gentoo Authors
+# Copyright 2018-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-util/spirv-headers/spirv-headers-1.4.350.0.ebuild b/dev-util/spirv-headers/spirv-headers-1.4.350.0.ebuild
index 1af38bdc5cc4..00906ee11e63 100644
--- a/dev-util/spirv-headers/spirv-headers-1.4.350.0.ebuild
+++ b/dev-util/spirv-headers/spirv-headers-1.4.350.0.ebuild
@@ -11,7 +11,7 @@ if [[ ${PV} == *9999* ]]; then
inherit git-r3
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86"
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
S="${WORKDIR}"/${MY_PN}-vulkan-sdk-${PV}
fi
diff --git a/dev-util/spirv-tools/spirv-tools-1.4.350.0.ebuild b/dev-util/spirv-tools/spirv-tools-1.4.350.0.ebuild
index 15eb25852961..d6d74cc9d5f8 100644
--- a/dev-util/spirv-tools/spirv-tools-1.4.350.0.ebuild
+++ b/dev-util/spirv-tools/spirv-tools-1.4.350.0.ebuild
@@ -14,7 +14,7 @@ if [[ ${PV} == *9999* ]]; then
else
EGIT_COMMIT="vulkan-sdk-${PV}"
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86"
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
S="${WORKDIR}"/${MY_PN}-${EGIT_COMMIT}
fi
diff --git a/dev-util/vulkan-headers/vulkan-headers-1.4.350.0.ebuild b/dev-util/vulkan-headers/vulkan-headers-1.4.350.0.ebuild
index 1c30beb2afcb..b807c24f2ab1 100644
--- a/dev-util/vulkan-headers/vulkan-headers-1.4.350.0.ebuild
+++ b/dev-util/vulkan-headers/vulkan-headers-1.4.350.0.ebuild
@@ -11,7 +11,7 @@ if [[ ${PV} == *9999* ]]; then
inherit git-r3
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~sparc x86"
+ KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
S="${WORKDIR}"/${MY_PN}-vulkan-sdk-${PV}
fi
diff --git a/dev-util/vulkan-tools/vulkan-tools-1.4.350.0.ebuild b/dev-util/vulkan-tools/vulkan-tools-1.4.350.0.ebuild
index 173f16fc3e36..c5fc791bd1f5 100644
--- a/dev-util/vulkan-tools/vulkan-tools-1.4.350.0.ebuild
+++ b/dev-util/vulkan-tools/vulkan-tools-1.4.350.0.ebuild
@@ -13,7 +13,7 @@ if [[ ${PV} == *9999* ]]; then
inherit git-r3
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv"
+ KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv"
S="${WORKDIR}"/${MY_PN}-vulkan-sdk-${PV}
fi
diff --git a/dev-util/vulkan-utility-libraries/vulkan-utility-libraries-1.4.350.0.ebuild b/dev-util/vulkan-utility-libraries/vulkan-utility-libraries-1.4.350.0.ebuild
index c133f060d13f..beb1208d1649 100644
--- a/dev-util/vulkan-utility-libraries/vulkan-utility-libraries-1.4.350.0.ebuild
+++ b/dev-util/vulkan-utility-libraries/vulkan-utility-libraries-1.4.350.0.ebuild
@@ -14,7 +14,7 @@ if [[ ${PV} == *9999* ]]; then
else
EGIT_COMMIT="vulkan-sdk-${PV}"
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
+ KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv x86"
S="${WORKDIR}"/${MY_PN}-${EGIT_COMMIT}
fi
diff --git a/dev-vcs/tig/tig-2.6.1.ebuild b/dev-vcs/tig/tig-2.6.1.ebuild
index e92c67347eb1..24541d6fb59b 100644
--- a/dev-vcs/tig/tig-2.6.1.ebuild
+++ b/dev-vcs/tig/tig-2.6.1.ebuild
@@ -10,7 +10,7 @@ if [[ ${PV} == "9999" ]] ; then
inherit git-r3 autotools
else
SRC_URI="https://github.com/jonas/tig/releases/download/${P}/${P}.tar.gz"
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos"
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos"
fi
DESCRIPTION="text mode interface for git"
diff --git a/eclass/nginx-module.eclass b/eclass/nginx-module.eclass
index 9fea5ba6de4b..5c919bc4c821 100644
--- a/eclass/nginx-module.eclass
+++ b/eclass/nginx-module.eclass
@@ -29,7 +29,7 @@
# using the ngx_mod_link_lib() function.
#
# If the package genuinely depends on first-party NGINX module(s), the helper
-# ngx_mod_gen_nginx_dep() might be used to generate the suitable dependency
+# ngx_gen_dep() might be used to generate the suitable dependency
# string for depending on first-party modules. For more advanced setups,
# ngx_force_module() and ngx_usex_module() might be of interest.
#
@@ -111,19 +111,19 @@ inherit flag-o-matic toolchain-funcs
# @USAGE: <prefix> <word>
# @RETURN: 'word' with 'prefix' removed if present or added if absent
_ngx_mod_toggle_prefix() {
- debug-print-function "${FUNCNAME[0]}" "$@"
- [[ $# -eq 2 ]] || die "${FUNCNAME[0]} must receive exactly two arguments"
+ debug-print-function "${FUNCNAME[0]}" "$@"
+ [[ $# -eq 2 ]] || die "${FUNCNAME[0]} must receive exactly two arguments"
- local prefix="$1" word="$2"
- case "${word}" in
- "${prefix}"*)
- word="${word#"${prefix}"}"
- ;;
- *)
- word="${prefix}${word}"
- ;;
- esac
- printf '%s\n' "${word}"
+ local prefix="$1" word="$2"
+ case "${word}" in
+ "${prefix}"*)
+ word="${word#"${prefix}"}"
+ ;;
+ *)
+ word="${prefix}${word}"
+ ;;
+ esac
+ printf '%s\n' "${word}"
}
# @FUNCTION: _ngx_mod_assert_argfile_exists
@@ -280,7 +280,7 @@ _ngx_mod_enforce_module_flags() {
# Neither target_string, nor inverse_string are found in
# ./configure --help: either the module genuinely does not exist or
# something has gone really wrong.
- die "ngx_force_module: module \"${mod}\" not found and '-n' has not been supplied"
+ die "ngx_force_module: module \"${mod}\" not found and '-t' has not been supplied"
else
# If we do not die, we just return 1.
return 1
@@ -370,29 +370,36 @@ ngx_mod_pkg_to_sonames() {
printf "%s\0" "${dep_sonames[@]}"
}
-# @FUNCTION: ngx_mod_append_libs
-# @USAGE: [<linker flags>...]
+# @FUNCTION: _ngx_mod_append_link_args
+# @INTERNAL
+# @USAGE: <ldflags|libs> [<linker arguments>...]
# @DESCRIPTION:
-# Adds the passed arguments to the list of flags used for the linking the
-# module's shared objects. Flags may be of any form accepted by linker.
-# See the nginx_src_install() function in nginx.eclass for more details.
-#
-# Example usage:
-# @CODE
-# ngx_mod_append_libs "-L/usr/$(get_libdir)/nginx/modules" \
-# "$("$(tc-getPKG_CONFIG)" --libs luajit)"
-# @CODE
-ngx_mod_append_libs() {
+# Appends linker arguments to the response file associated with the specified
+# argument type and adds the response file to the corresponding environment
+# variable.
+_ngx_mod_append_link_args() {
debug-print-function "${FUNCNAME[0]}" "$@"
+ [[ $# -ge 1 ]] || die "${FUNCNAME[0]} must receive an argument type"
+
+ local type="$1"
+ shift
+ case ${type} in
+ ldflags|libs) ;;
+ *) die "${FUNCNAME[0]}: invalid argument type: ${type}" ;;
+ esac
[[ $# -eq 0 ]] && return 0
- local resp_file="${T}/append-libs-resp-file"
+ local suffix="${type^^}"
+ declare -n env_var="_NGINX_GENTOO_MOD_${suffix}"
+ local state_var="_NGX_MOD_${suffix}_RESP_FILE_SET_UP"
+ local resp_file="${T}/append-${type}-resp-file"
- # Setup the response file. Make sure to do it only once.
- if [[ -z ${_NGX_MOD_RESP_FILE_SET_UP} ]]; then
- touch "${resp_file}" || die "touch failed"
- export _NGINX_GENTOO_MOD_LIBS+=" @${resp_file}"
- declare -g -r _NGX_MOD_RESP_FILE_SET_UP=1
+ # Set up the response file. Make sure to do it only once.
+ if [[ -z ${!state_var} ]]; then
+ : > "${resp_file}" || die "failed to initialize response file"
+ env_var+=" @${resp_file}"
+ export env_var
+ declare -g -r "${state_var}=1"
fi
# If multiple arguments are passed, expand them as separate words so that
@@ -400,11 +407,45 @@ ngx_mod_append_libs() {
printf '%s\n' "$@" >> "${resp_file}" || die "printf failed"
}
+# @FUNCTION: ngx_mod_prepend_ldflags
+# @USAGE: [<linker flags>...]
+# @DESCRIPTION:
+# Adds the passed linker arguments before NGINX's module libraries when linking
+# the module's shared objects. Arguments may be of any form accepted by the
+# linker.
+#
+# Example usage:
+# @CODE
+# ngx_mod_prepend_ldflags "-Wl,--as-needed"
+# @CODE
+ngx_mod_prepend_ldflags() {
+ debug-print-function "${FUNCNAME[0]}" "$@"
+ _ngx_mod_append_link_args ldflags "$@"
+}
+
+# @FUNCTION: ngx_mod_append_ldflags
+# @USAGE: [<linker flags>...]
+# @DESCRIPTION:
+# Adds the passed linker arguments after NGINX's module libraries when linking
+# the module's shared objects. Arguments may be of any form accepted by the
+# linker.
+# See the nginx_src_install() function in nginx.eclass for more details.
+#
+# Example usage:
+# @CODE
+# ngx_mod_append_ldflags "-L/usr/$(get_libdir)/nginx/modules" \
+# "$("$(tc-getPKG_CONFIG)" --libs luajit)"
+# @CODE
+ngx_mod_append_ldflags() {
+ debug-print-function "${FUNCNAME[0]}" "$@"
+ _ngx_mod_append_link_args libs "$@"
+}
+
# @FUNCTION: ngx_mod_setup_link_modules
# @DESCRIPTION:
# Adds necessary linker arguments for linking to other NGINX modules' share
# objects installed in /usr/$(get_libdir)/nginx/modules by calling
-# ngx_mod_append_libs(). This function takes no arguments.
+# ngx_mod_append_ldflags(). This function takes no arguments.
#
# This function is called internally by the ngx_mod_link_module() function.
# ngx_mod_setup_link_modules() keeps track whether it has already been called,
@@ -419,7 +460,7 @@ ngx_mod_setup_link_modules() {
moddir="${EPREFIX}/usr/$(get_libdir)/nginx/modules"
# Add 'moddir' to the list of directories search by linker and add 'moddir'
# to the module's RUNPATH.
- ngx_mod_append_libs "-L${moddir}" "-Wl,-rpath,\${ORIGIN}"
+ ngx_mod_append_ldflags "-L${moddir}" "-Wl,-rpath,\${ORIGIN}"
}
# @FUNCTION: ngx_mod_link_module
@@ -477,7 +518,7 @@ ngx_mod_link_module() {
# Prepend '-l:' to each shared object name. The colon instructs the linker
# to link to the given name literally; i.e. '-lmylib' will look for
# 'libmylib.so', while '-l:mylib' will look for 'mylib'.
- ngx_mod_append_libs "${sonames[@]/#/-l:}"
+ ngx_mod_append_ldflags "${sonames[@]/#/-l:}"
}
# @FUNCTION: ngx_mod_link_lib
@@ -496,7 +537,7 @@ ngx_mod_link_lib() {
"${pkgconf}" --exists "$1" || die "The pkgconfig library $1 does not exist"
append-cflags "$("${pkgconf}" --cflags "$1")"
- ngx_mod_append_libs "$("${pkgconf}" --libs "$1")"
+ ngx_mod_append_ldflags "$("${pkgconf}" --libs "$1")"
}
# @FUNCTION: ngx_gen_dep
@@ -583,7 +624,7 @@ ngx_force_module() {
debug-print-function "${FUNCNAME[0]}" "$@"
[[ $# -ge 1 ]] ||
die "${FUNCNAME[0]} must receive one or more non-option arguments"
- _ngx_mod_assert_argfile_exists "${_NGX_MOD_CONFIG_FLAGS_FILE}"
+ _ngx_mod_assert_argfile_exists "${ESYSROOT}${_NGX_MOD_CONFIG_FLAGS_FILE}"
local nonfatal=0
if [[ $1 = '-t' ]]; then
@@ -623,7 +664,7 @@ ngx_force_module() {
# ngx_force_module() description.
#
# By default, if any of the specified modules do not exist, the build is
-# aborted. This can be overriden by supplying '-t'. See ngx_force_module()
+# aborted. This can be overridden by supplying '-t'. See ngx_force_module()
# for behaviour when this flag is supplied.
#
# Example:
@@ -736,9 +777,9 @@ NGINX_S="${WORKDIR}/nginx"
# @ECLASS_VARIABLE: _NGX_MOD_CONFIG_FLAGS_FILE
# @INTERNAL
# @DESCRIPTION:
-# Holds the path to the file containing NUL-separated ./configure flags used to
-# build www-servers/nginx.
-_NGX_MOD_CONFIG_FLAGS_FILE="${BROOT}/usr/src/nginx/configure-flags"
+# Holds the root-relative path to the file containing NUL-separated ./configure
+# flags used to build www-servers/nginx.
+_NGX_MOD_CONFIG_FLAGS_FILE="/usr/src/nginx/configure-flags"
# @ECLASS_VARIABLE: _NGX_MOD_FORCED_MODULES
# @INTERNAL
@@ -1000,7 +1041,7 @@ nginx-module_src_prepare() {
ebegin "Determining NGINX configuration on-disk format"
- if [[ -f "${_NGX_MOD_CONFIG_FLAGS_FILE}" ]]; then
+ if [[ -f "${ESYSROOT}${_NGX_MOD_CONFIG_FLAGS_FILE}" ]]; then
eend 0
einfo "Using ./configure flags file"
else
@@ -1068,15 +1109,16 @@ nginx-module_src_configure() {
pushd "${NGINX_S}" >/dev/null || die "pushd failed"
local ngx_mod_flags=()
- if [[ -f "${_NGX_MOD_CONFIG_FLAGS_FILE}" ]]; then
+ if [[ -f "${ESYSROOT}${_NGX_MOD_CONFIG_FLAGS_FILE}" ]]; then
# Restore the stored configure flags into ngx_mod_flags.
- mapfile -d '' ngx_mod_flags < "${_NGX_MOD_CONFIG_FLAGS_FILE}"
+ mapfile -d '' ngx_mod_flags < \
+ "${ESYSROOT}${_NGX_MOD_CONFIG_FLAGS_FILE}" || die "mapfile failed"
# When we save compilation flags, NGINX passes all the -l flags to
# modules too, including stuff like -lperl -lcrypt etc. I am not sure
- # what to do with this yet so for now we just pass the following to
- # limit unnecessary linkage.
- ngx_mod_append_libs "$(test-flags-CC '-Wl,--as-needed')"
+ # what to do with this yet so for now we prepend --as-needed to
+ # ngx_module_libs to limit unnecessary linkage.
+ ngx_mod_prepend_ldflags $(test-flags-CCLD '-Wl,--as-needed')
else
# Otherwise, just replicate a sane subset of configure flags for
# backwards compatibility.
@@ -1149,7 +1191,7 @@ nginx-module_src_configure() {
"${EXTRA_ECONF[@]}"
# Backwards compatibility.
- if [[ ! -f "${_NGX_MOD_CONFIG_FLAGS_FILE}" ]]; then
+ if [[ ! -f "${ESYSROOT}${_NGX_MOD_CONFIG_FLAGS_FILE}" ]]; then
cat "${ESYSROOT}/usr/include/nginx/ngx_auto_config.h" \
build/__ngx_gentoo_mod_config.h > build/ngx_auto_config.h ||
die "cat failed"
diff --git a/eclass/nginx.eclass b/eclass/nginx.eclass
index 9783f7c7fa25..d517c15ef727 100644
--- a/eclass/nginx.eclass
+++ b/eclass/nginx.eclass
@@ -687,7 +687,7 @@ nginx_src_configure() {
# module building.
if use modules; then
printf '%s\0' "${nginx_flags[@]}" "$@" "${EXTRA_ECONF[@]}" \
- >> "${_NGX_CONFIG_FLAGS_FILE}"
+ > "${_NGX_CONFIG_FLAGS_FILE}" || die "printf failed"
fi
sed -E -i \
@@ -888,10 +888,10 @@ nginx_src_install() {
# The directory where third-party modules should save their own headers.
keepdir /usr/include/nginx/modules
- # Allow pluging arbitrary libraries (linker flags, more accurately) via
- # the _NGINX_GENTOO_MOD_LIBS environment variable.
+ # Allow injecting linker flags before and libraries after NGINX's module
+ # libraries via environment variables.
sed -i -e '/"$ngx_module_link" = DYNAMIC/ a\' \
- -e 'ngx_module_libs="$ngx_module_libs ${_NGINX_GENTOO_MOD_LIBS}"' \
+ -e 'ngx_module_libs="${_NGINX_GENTOO_MOD_LDFLAGS} $ngx_module_libs ${_NGINX_GENTOO_MOD_LIBS}"' \
auto/module || die "sed failed"
# Copy the build system of NGINX to /usr/src/nginx.
diff --git a/gui-apps/waybar/files/meson-fix-build.patch b/gui-apps/waybar/files/meson-fix-build.patch
new file mode 100644
index 000000000000..cee64a56a395
--- /dev/null
+++ b/gui-apps/waybar/files/meson-fix-build.patch
@@ -0,0 +1,38 @@
+From 69c61c3d9ae8f7397d64570412655007ea086c56 Mon Sep 17 00:00:00 2001
+From: ShengYi Hung <aokblast@FreeBSD.org>
+Date: Sun, 23 Aug 2026 12:45:10 +0800
+Subject: [PATCH] meson: Fix unwinding error in libunwind over glibc
+
+glibc's pthread_cancel dlopens libgcc_s.so.1 and uses its unwinder,
+while libc++abi's personality routine resolves the Unwind* accessors
+from the global scope, where LLVM libunwind wins. This causes the two
+unwinders to interpret each other's unwind context incorrectly, and
+cancelling a thread segfaults. Pull libgcc_s into DT_NEEDED before
+libc++abi/libunwind so all Unwind* symbols resolve to the same unwinder.
+---
+ meson.build | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 5dc7338d5f..88be32e27b 100644
+--- a/meson.build
++++ b/meson.build
+@@ -17,7 +17,17 @@ cpp_link_args = []
+
+ if get_option('libcxx')
+ cpp_args += ['-stdlib=libc++']
+- cpp_link_args += ['-stdlib=libc++', '-lc++abi']
++ cpp_link_args += ['-stdlib=libc++']
++ # glibc's pthread_cancel dlopens libgcc_s.so.1 and forces the unwind through
++ # that unwinder, while libc++abi's personality routine resolves the _Unwind_*
++ # accessors through the global scope, where LLVM libunwind wins. The two read
++ # each other's unwind context as their own, so cancelling a thread
++ # (SleeperThread::stop) segfaults. Pull libgcc_s into DT_NEEDED ahead of
++ # libc++abi/libunwind so every _Unwind_* symbol resolves to one unwinder.
++ if compiler.has_link_argument('-lgcc_s')
++ cpp_link_args += ['-Wl,--push-state,--no-as-needed', '-lgcc_s', '-Wl,--pop-state']
++ endif
++ cpp_link_args += ['-lc++abi']
+ endif
+
+ if compiler.has_link_argument('-lc++fs')
diff --git a/gui-apps/waybar/waybar-0.14.0.ebuild b/gui-apps/waybar/waybar-0.14.0.ebuild
index 5e6e473ccd97..494b727a9d27 100644
--- a/gui-apps/waybar/waybar-0.14.0.ebuild
+++ b/gui-apps/waybar/waybar-0.14.0.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit meson optfeature
+inherit meson optfeature toolchain-funcs
DESCRIPTION="Highly customizable Wayland bar for Sway and Wlroots based compositors"
HOMEPAGE="https://github.com/Alexays/Waybar"
@@ -75,9 +75,20 @@ DEPEND="${RDEPEND}
dev-libs/wayland-protocols
test? ( dev-cpp/catch:0 )
"
+PATCHES=(
+ "${FILESDIR}"/meson-fix-build.patch
+)
src_configure() {
+ local cxx_stdlib=$(tc-get-cxx-stdlib)
+ einfo "C++ standard library: ${cxx_stdlib:-unknown}"
+ local libcxx=false
+ if [[ ${cxx_stdlib} == libc++ ]]; then
+ libcxx=true
+ fi
+
local emesonargs=(
+ -Dlibcxx=${libcxx}
-Dman-pages=enabled
-Dcava=disabled # depends on LukashonakV/cava fork, but media-sound/cava is karlstav/cava
$(meson_feature evdev libevdev)
diff --git a/gui-apps/waybar/waybar-0.15.0.ebuild b/gui-apps/waybar/waybar-0.15.0.ebuild
index 04495a22dfb5..2589ddedf9b2 100644
--- a/gui-apps/waybar/waybar-0.15.0.ebuild
+++ b/gui-apps/waybar/waybar-0.15.0.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit meson optfeature
+inherit meson optfeature toolchain-funcs
DESCRIPTION="Highly customizable Wayland bar for Sway and Wlroots based compositors"
HOMEPAGE="https://github.com/Alexays/Waybar"
@@ -78,8 +78,20 @@ DEPEND="${RDEPEND}
test? ( dev-cpp/catch:0 )
"
+PATCHES=(
+ "${FILESDIR}"/meson-fix-build.patch
+)
+
src_configure() {
+ local cxx_stdlib=$(tc-get-cxx-stdlib)
+ einfo "C++ standard library: ${cxx_stdlib:-unknown}"
+ local libcxx=false
+ if [[ ${cxx_stdlib} == libc++ ]]; then
+ libcxx=true
+ fi
+
local emesonargs=(
+ -Dlibcxx=${libcxx}
-Dman-pages=enabled
-Dcava=disabled # depends on LukashonakV/cava fork, but media-sound/cava is karlstav/cava
$(meson_feature evdev libevdev)
diff --git a/mail-filter/popfile/files/1.1.3-select-timeout.patch b/mail-filter/popfile/files/1.1.3-select-timeout.patch
new file mode 100644
index 000000000000..9fdac3745602
--- /dev/null
+++ b/mail-filter/popfile/files/1.1.3-select-timeout.patch
@@ -0,0 +1,17 @@
+Increase select() timeout from 5 to 25 ms to reduce CPU overhead.
+
+--- a/POPFile/Loader.pm
++++ b/POPFile/Loader.pm
+@@ -794,10 +794,10 @@
+ }
+ }
+
+- # Sleep for 0.05 of a second to ensure that POPFile does not
++ # Sleep for 0.25 of a second to ensure that POPFile does not
+ # hog the machine's CPU
+
+- select(undef, undef, undef, 0.05) if !$nowait;
++ select(undef, undef, undef, 0.25) if !$nowait;
+
+ # If we are on Windows then reap children here
+
diff --git a/mail-filter/popfile/popfile-1.1.3-r1.ebuild b/mail-filter/popfile/popfile-1.1.3-r2.ebuild
index 90cdd61c3f20..7116cafcb9da 100644
--- a/mail-filter/popfile/popfile-1.1.3-r1.ebuild
+++ b/mail-filter/popfile/popfile-1.1.3-r2.ebuild
@@ -3,8 +3,6 @@
EAPI=8
-inherit edos2unix
-
DESCRIPTION="Anti-spam bayesian filter"
HOMEPAGE="https://getpopfile.org"
SRC_URI="https://getpopfile.org/downloads/${P}.zip"
@@ -33,17 +31,11 @@ RDEPEND="virtual/perl-Digest-MD5
xmlrpc? ( dev-perl/PlRPC )"
BDEPEND="app-arch/unzip"
-src_prepare() {
- default
- local f
- for f in $(find ./ -type f || die); do
- edos2unix "${f}"
- done
-}
+PATCHES=( "${FILESDIR}"/1.1.3-select-timeout.patch )
src_install() {
dodoc *.change*
- rm -r *.change* license || die
+ rm -r *.change* license popfile.pck || die
insinto /usr/share/${PN}
doins -r *
diff --git a/mail-mta/postfix/Manifest b/mail-mta/postfix/Manifest
index c2151b2ec3c0..f5df7348d44b 100644
--- a/mail-mta/postfix/Manifest
+++ b/mail-mta/postfix/Manifest
@@ -1,4 +1,4 @@
DIST postfix-3.11.7.tar.gz 5293599 BLAKE2B 4f3d9f92320336a80770593800d026aa41dc628dfd9db5e5d3b6fad667fe700bdd4bddcc16fce17f47fdba9cd58419946dc5f14b0e9d7dc5569c45b1226ffae4 SHA512 3b4ef7562a24bbab1d0ca361ac0af1037aa3d4ae65a7c825711de9d5d3ed88975aad63cb09991717de334f4382c29039b527a3e8d4e65c5a6d35efd3e782910f
DIST postfix-3.11.7.tar.gz.asc 220 BLAKE2B e32f69fae20c6aae0f95efabd02c77c2bd9b7684738b15f8d584447e3bb5d09c8ef80ffb11c4798615c6b8f3e8ff31de25a5bc2dc4f41ef012ec956f7528c662 SHA512 d482753f934393bb65b8e069a5ae092d3b3ef4c30106f8738e9947d18ad35271fc375d202ffbc335e4a04737e369eb8975163fb530aa1a7176d16c7f62746697
-DIST postfix-3.12-20260902.tar.gz 5425474 BLAKE2B f74688566d86114f59376d68fff99b7ac9ba6b2e606c48d053e74740c8b6a3f1ca2d3bb8085631ddfbcd580a8aa2b06364d257a2838e85b1187efd07d5c9df0b SHA512 48ba1d448ec62861ddc42a951e234fe9679504ce08343a79d2e0a84a54d4908086f064fec7ed5de7a3af6c4434bbc66e3186a6aafd81c22a84fee8982d143ae1
-DIST postfix-3.12-20260902.tar.gz.asc 220 BLAKE2B 73fddbf6600e830f032e6552c7690f30392876e66630419f036a5c3c53d97a10e43289963f59e33c8cb2fa60f14adee63ba1b3c3d4967bdff098cb2bb0d7d3c8 SHA512 dce300b296588f314e24c747f859f741a06dae76f60cc33c541e3013b21ef9bde0ebcbb949a2c7d58bf79f94c8292acb28681657b745777218f83d1da09b5139
+DIST postfix-3.12-20260915.tar.gz 5429668 BLAKE2B 68f512f110556695b64807c0efb344993dfc4142998fdbbb04ec5fc49e9c930ba2ca269a02235c8e03f1caf83f2132cc26558337dd3fcb2b13905ed380dc4b85 SHA512 c62c81a2f14eeb14809b2b195002467435663a422aebc1c8187a9c96810a50d1414ded12f0320d9c234f59fde34abf683e19075dd26f4b58a552c383e2afec09
+DIST postfix-3.12-20260915.tar.gz.asc 220 BLAKE2B b305b8e5f005084f55fd2a2d0698f364c416524f5e022a33ab7ccd57a88be96ea65129558b3e2faa6c3bff14bde8731c7fdb5cf205d67aa3de4f2d5cd0042c68 SHA512 987d9e3f8281dd36020747911465a92f4e9f9a14fb4725faf1851ab39261c6adb3683ac4caeec298e247ce376b1bceb89855b9adf2654932884d0f94b1881f3b
diff --git a/mail-mta/postfix/postfix-3.12_pre20260902.ebuild b/mail-mta/postfix/postfix-3.12_pre20260915.ebuild
index c46f8e9da614..c46f8e9da614 100644
--- a/mail-mta/postfix/postfix-3.12_pre20260902.ebuild
+++ b/mail-mta/postfix/postfix-3.12_pre20260915.ebuild
diff --git a/media-gfx/gimp/Manifest b/media-gfx/gimp/Manifest
index 16376bd4efdc..a76baf156064 100644
--- a/media-gfx/gimp/Manifest
+++ b/media-gfx/gimp/Manifest
@@ -1,3 +1,4 @@
DIST gimp-2.10.38-patches.tar.xz 10568 BLAKE2B e661a70e0533a826688cfef8f7226f742728bed437425439562ea0c1a45133fb53b8390f3c794f578e626fe8d43af6b7818d27716fb751b2f1f06d16b0c6db9e SHA512 4ee3168b9029b384485a5ec1951ffd1d03df8a3327a89376d26cda31070f825e3af5529dde2f5ab291d1b347ed3613ca2289dddfc5c020af6e07c78b070662d2
DIST gimp-2.10.38.tar.bz2 31698453 BLAKE2B 58c29e3e00d873e69a5e5f4e9c3ff4d868ccfb11914570306ef12c54ca7d3ef89a62d8c71fac1f2d1f426ac615dc4caf7a7260351c00301dce2b1aa4193bab6d SHA512 343bf1c3bd14bf8e7c7af79c05920faca213da68549127c1d8af53e2e872e55aeaf39a3cfcf578183a34fdc4f98e1c859be63956b0611067186eefd1fdee2aaa
DIST gimp-3.2.4.tar.xz 34912956 BLAKE2B 318687e03f60a44787737b6b241977bc7b9a1c8313e4ebdc8ef3991e15e3f70c69308167d18453e3cfce125d3b64d56799fe3f8af03e999e9b70ade8e8d0865e SHA512 99e45b321f80925599f1e1a6b9ccc737df303a19e012bf5182588421e163424e295250824f223dc518ac515e7953b5bc392c4082dd5ead300fc42b6b11cf9a6d
+DIST gimp-3.2.6.tar.xz 35004888 BLAKE2B 639ba66577c85cad7250924c882eb65416853a92a84f587d2b9982e3b5face9bca8e6c5f96b74ef6431a62adbb73bfe11ef89bdbd372e07be30085f5f74ac117 SHA512 3f2076055bc42c18725c53564190fd5783c0d95984df90e24847797f00ad98a75677ad91ee1eedd59a7e638f81cea28fec064755b2095844d0ec703bbc5d0b4c
diff --git a/media-gfx/gimp/gimp-3.2.6.ebuild b/media-gfx/gimp/gimp-3.2.6.ebuild
new file mode 100644
index 000000000000..6e4fa31965ab
--- /dev/null
+++ b/media-gfx/gimp/gimp-3.2.6.ebuild
@@ -0,0 +1,320 @@
+# 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 )
+PYTHON_COMPAT=( python3_{13..14} )
+VALA_USE_DEPEND=vapigen
+
+inherit branding flag-o-matic lua-single meson python-single-r1 shell-completion toolchain-funcs vala xdg
+
+DESCRIPTION="GNU Image Manipulation Program"
+HOMEPAGE="https://www.gimp.org/"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.gnome.org/GNOME/gimp.git"
+
+ MAJOR_VERSION="3"
+else
+ MY_PV="${PV/_rc/-RC}"
+ MY_P="${PN}-${MY_PV}"
+ SRC_URI="mirror://gimp/v$(ver_cut 1-2)/${MY_P}.tar.xz"
+ S="${WORKDIR}/${MY_P}"
+
+ MAJOR_VERSION="$(ver_cut 1)"
+
+ # Dont keyword prereleases or unstable releases
+ # https://gitlab.gnome.org/Infrastructure/gimp-web-devel/-/blob/testing/content/core/maintainer/versioning.md#software-version
+ if ! [[ ${PV} =~ _rc ]] &&
+ [[ $(( $(ver_cut 2) % 2 )) -eq 0 ]] &&
+ [[ $(( $(ver_cut 3) % 2 )) -eq 0 ]]
+ then
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+ fi
+fi
+
+LICENSE="GPL-3+ LGPL-3+"
+SLOT="0/${MAJOR_VERSION}"
+
+IUSE="X aalib alsa bash-completion doc fits gnome heif javascript jpeg2k jpegxl lua mng openexr openmp postscript test udev unwind vala vector-icons wayland webp wmf xpm"
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ lua? ( ${LUA_REQUIRED_USE} )
+ xpm? ( X )
+"
+
+RESTRICT="!test? ( test )"
+
+# See libgimp_deps_table in libgimp/meson.build for introspection dependencies, bug #969449
+COMMON_DEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/pycairo[${PYTHON_USEDEP}]
+ >=dev-python/pygobject-3.0:3[${PYTHON_USEDEP}]
+ ')
+ >=app-accessibility/at-spi2-core-2.4.0
+ app-arch/bzip2
+ app-arch/libarchive:=
+ >=app-arch/xz-utils-5.0.0
+ app-text/iso-codes
+ >=app-text/poppler-0.69.0[cairo]
+ >=app-text/poppler-data-0.4.9
+ >=dev-libs/appstream-0.16.1:=
+ >=dev-libs/glib-2.70.0:2[introspection]
+ >=dev-libs/gobject-introspection-1.82.0-r2
+ >=dev-libs/json-glib-1.2.6
+ >=gnome-base/librsvg-2.40.6:2
+ >=media-gfx/exiv2-0.27.4
+ media-gfx/mypaint-brushes:2.0=
+ >=media-libs/fontconfig-2.12.4
+ >=media-libs/freetype-2.1.7
+ <media-libs/gexiv2-0.15.0[introspection]
+ >=media-libs/gexiv2-0.14.0:=[introspection]
+ >=media-libs/harfbuzz-2.8.2:=
+ >=media-libs/lcms-2.8:2
+ media-libs/libjpeg-turbo:=
+ >=media-libs/libmypaint-1.5.0:=
+ >=media-libs/libpng-1.6.25:0=
+ >=media-libs/tiff-4.0.0:=
+ net-libs/glib-networking[ssl]
+ virtual/zlib:=
+ >=x11-libs/cairo-1.14.0[introspection(+),X?]
+ >=x11-libs/gdk-pixbuf-2.32.0:2[introspection]
+ >=x11-libs/gtk+-3.24.0:3[introspection,wayland?,X?]
+ >=x11-libs/pango-1.50.0[introspection,X?]
+ aalib? ( media-libs/aalib )
+ alsa? ( >=media-libs/alsa-lib-1.0.0 )
+ fits? ( sci-libs/cfitsio:= )
+ heif? ( >=media-libs/libheif-1.15.1:= )
+ javascript? ( dev-libs/gjs )
+ jpeg2k? ( >=media-libs/openjpeg-2.1.0:2= )
+ jpegxl? ( >=media-libs/libjxl-0.7.0:= )
+ lua? (
+ ${LUA_DEPS}
+ $(lua_gen_cond_dep '
+ dev-lua/lgi[${LUA_USEDEP}]
+ ')
+ )
+ mng? ( media-libs/libmng:= )
+ openexr? ( >=media-libs/openexr-1.6.1:= )
+ postscript? ( app-text/ghostscript-gpl:= )
+ udev? ( >=dev-libs/libgudev-167:= )
+ unwind? ( >=sys-libs/libunwind-1.1.0:= )
+ webp? ( >=media-libs/libwebp-0.6.0:= )
+ wmf? ( >=media-libs/libwmf-0.2.8[X?] )
+ X? (
+ x11-libs/libX11
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXfixes
+ >=x11-libs/libXmu-1.1.4
+ )
+ xpm? ( x11-libs/libXpm )
+"
+if [[ ${PV} == 9999 ]]; then
+ COMMON_DEPEND+="
+ >=media-libs/babl-9999[introspection,lcms,vala?]
+ >=media-libs/gegl-9999[cairo,introspection,lcms,vala?]
+ "
+else
+ COMMON_DEPEND+="
+ >=media-libs/babl-0.1.118[introspection,lcms,vala?]
+ >=media-libs/gegl-0.4.66:0.4[cairo,introspection,lcms,vala?]
+ "
+fi
+
+RDEPEND="
+ ${COMMON_DEPEND}
+ x11-themes/hicolor-icon-theme
+ gnome? ( gnome-base/gvfs )
+"
+
+DEPEND="${COMMON_DEPEND}"
+
+BDEPEND="
+ >=dev-lang/perl-5.30.3
+ dev-libs/libxslt
+ >=dev-util/gdbus-codegen-2.80.5-r1
+ >=sys-devel/gettext-0.21
+ virtual/pkgconfig
+ bash-completion? (
+ app-shells/bash-completion
+ app-shells/bash
+ )
+ doc? (
+ >=dev-libs/gobject-introspection-1.82.0-r2[doctool]
+ dev-util/gi-docgen
+ )
+ vala? ( $(vala_depend) )
+ vector-icons? ( x11-misc/shared-mime-info )
+"
+# X? ( test? (
+# sys-apps/dbus
+# x11-misc/xvfb-run
+# ) )
+
+DOCS=( "AUTHORS" "NEWS" "README" "README.i18n" )
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ use openmp && tc-check-openmp
+
+ # bug #969468
+ local locales="$(locale -a)"
+ if ! has "en_US.utf8" ${locales} && ! has "en_US.UTF-8" ${locales}; then
+ # portage splits and unset LC_ALL. Cannot rely on that
+ if [[ "${LANG}" != "C" ]] && [[ "${LANG}" != "POSIX" ]] && [[ "${LANG}" == "${LANG#C\.}" ]]; then
+ # Set LC_ALL to avoid locales breaking due to the profile setting LC_MESSAGES=C
+ # and portage itself setting LC_COLLATE=C
+ einfo "Setting LC_ALL=${LANG} based on LANG because en_US.UTF-8 isn't available, bug #968468"
+ export LC_ALL="${LANG}"
+ else
+ eerror "Cannot use LANG=${LANG} as it cannot be C or POSIX"
+ die "en_US.UTF-8 isn't available and cannot fallback to user locale, bug #969468"
+ fi
+ fi
+ fi
+
+ python-single-r1_pkg_setup
+ use lua && lua-single_pkg_setup
+
+ if [[ ${PV} == 9999 ]]; then
+ if has_version ">=media-libs/babl-9999" || has_version ">=media-libs/gegl-9999"; then
+ ewarn "Please make sure to rebuild media-libs/babl-9999 and media-libs/gegl-9999 packages"
+ ewarn "before building media-gfx/gimp-9999 to have their latest master branch versions."
+ fi
+ fi
+}
+
+src_prepare() {
+ default
+
+ # Fix Gimp and GimpUI devel doc installation paths
+ sed -e "s/'doc'/'gtk-doc'/" -i devel-docs/reference/gimp{,-ui}/meson.build || die
+
+ # Fix pygimp.interp python implementation path.
+ # Meson @PYTHON_PATH@ use sandbox path e.g.:
+ # '/var/tmp/portage/media-gfx/gimp-2.99.12/temp/python3.10/bin/python3'
+ sed -e 's/@PYTHON_EXE@/'${EPYTHON}'/' -i plug-ins/python/pygimp.interp.in || die
+
+ # Set proper intallation path of documentation logo
+ sed -e "s/'gimp-' + gimp_api_version/'gimp-${PVR}'/" -i gimp-data/images/logo/meson.build || die
+
+ # Force disable x11_target if USE="-X" is setup. See bug #943164 for additional info
+ if use !X; then
+ sed -e 's/x11_target = /x11_target = false #/' -i meson.build || die
+ fi
+
+ # Disable automagic pandoc use that isn't relevant for a package build
+ sed -e '/pandoc/ s/ = .*/ = disabler()/' -i docs/meson.build || die
+}
+
+src_configure() {
+ # Defang automagic dependencies, bug #943164
+ use wayland || append-cppflags -DGENTOO_GTK_HIDE_WAYLAND
+ use X || append-cppflags -DGENTOO_GTK_HIDE_X11
+
+ tc-export NM READELF
+
+ use vala && vala_setup
+
+ local emesonargs=(
+ -Denable-default-bin=enabled
+
+ -Dcheck-update=no
+ -Ddebug-self-in-build=false
+ -Denable-multiproc=true
+ -Dappdata-test=disabled
+ -Dbug-report-url="${BRANDING_OS_BUG_REPORT_URL}"
+ -Dilbm=disabled
+ -Dlibbacktrace=false
+ $(meson_feature aalib aa)
+ $(meson_feature alsa)
+ $(meson_feature bash-completion)
+ $(meson_feature doc gi-docgen)
+ $(meson_feature fits)
+ $(meson_feature heif)
+ $(meson_feature javascript)
+ $(meson_feature jpeg2k jpeg2000)
+ $(meson_feature jpegxl jpeg-xl)
+ $(meson_feature mng)
+ $(meson_feature openexr)
+ $(meson_feature openmp)
+ $(meson_feature postscript ghostscript)
+ # https://gitlab.gnome.org/GNOME/gimp/-/issues/15763
+ -Dheadless-tests=disabled
+ #$(usex X $(meson_feature test headless-tests) -Dheadless-tests=disabled )
+ $(meson_feature udev gudev)
+ $(meson_feature vala)
+ $(meson_feature webp)
+ $(meson_feature wmf)
+ $(meson_feature X xcursor)
+ $(meson_feature xpm)
+ $(meson_use lua)
+ $(meson_use unwind libunwind)
+ $(meson_use vector-icons)
+ )
+
+ meson_src_configure
+}
+
+src_compile() {
+ export XDG_DATA_DIRS="${EPREFIX}"/usr/share # bug 587004
+ meson_src_compile
+}
+
+# bug #664938
+_rename_plugins() {
+ einfo 'Renaming plug-ins to not collide with pre-2.10.6 file layout (bug #664938)...'
+ local prename=gimp-org-
+ (
+ cd "${ED}"/usr/$(get_libdir)/gimp/3.0/plug-ins || exit 1
+ for plugin_slash in $(ls -d1 */); do
+ plugin=${plugin_slash%/}
+ if [[ -f ${plugin}/${plugin} ]]; then
+ # NOTE: Folder and file name need to match for Gimp to load that plug-in
+ # so "file-svg/file-svg" becomes "${prename}file-svg/${prename}file-svg"
+ mv ${plugin}/{,${prename}}${plugin} || exit 1
+ mv {,${prename}}${plugin} || exit 1
+ fi
+ done
+ )
+}
+
+src_test() {
+ local -x LD_LIBRARY_PATH="${BUILD_DIR}/libgimp:${LD_LIBRARY_PATH}"
+
+ # Try hard to avoid system installed gimp causing issues
+ local -x GIMP3_DIRECTORY="${BUILD_DIR}/"
+ local -x GIMP3_PLUGINDIR="${BUILD_DIR}/plug-ins/"
+ local -x GIMP3_SYSCONFDIR="${BUILD_DIR}/etc/"
+
+ # Flakyness is possible
+ meson_src_test -j1
+}
+
+src_install() {
+ meson_src_install
+
+ python_optimize "${ED}/usr/$(get_libdir)/gimp"
+ python_fix_shebang "${ED}/usr/$(get_libdir)/gimp"
+
+ # Create symlinks for Gimp exec in /usr/bin
+ # gimp-$(ver_cut 1-2) -> gimp-$(ver_cut 1) -> gimp
+ dosym "${ESYSROOT}"/usr/bin/gimp-${MAJOR_VERSION} /usr/bin/gimp
+ dosym "${ESYSROOT}"/usr/bin/gimp-console-${MAJOR_VERSION} /usr/bin/gimp-console
+ dosym "${ESYSROOT}"/usr/bin/gimp-test-clipboard-${MAJOR_VERSION} /usr/bin/gimp-test-clipboard
+ dosym "${ESYSROOT}"/usr/bin/gimptool-${MAJOR_VERSION} /usr/bin/gimptool
+
+ if use bash-completion; then
+ bashcomp_alias gimp-3.2 gimp{,-3} gimp-console{,-3,-3.2}
+ fi
+
+ _rename_plugins || die
+}
diff --git a/media-gfx/gimp/gimp-9999.ebuild b/media-gfx/gimp/gimp-9999.ebuild
index d5a2af0f8bd8..6e4fa31965ab 100644
--- a/media-gfx/gimp/gimp-9999.ebuild
+++ b/media-gfx/gimp/gimp-9999.ebuild
@@ -81,7 +81,7 @@ COMMON_DEPEND="
net-libs/glib-networking[ssl]
virtual/zlib:=
>=x11-libs/cairo-1.14.0[introspection(+),X?]
- >=x11-libs/gdk-pixbuf-2.30.8:2[introspection]
+ >=x11-libs/gdk-pixbuf-2.32.0:2[introspection]
>=x11-libs/gtk+-3.24.0:3[introspection,wayland?,X?]
>=x11-libs/pango-1.50.0[introspection,X?]
aalib? ( media-libs/aalib )
diff --git a/media-libs/gegl/Manifest b/media-libs/gegl/Manifest
index ea40844f1c79..80c98e78822c 100644
--- a/media-libs/gegl/Manifest
+++ b/media-libs/gegl/Manifest
@@ -1 +1,2 @@
DIST gegl-0.4.70.tar.xz 6164464 BLAKE2B dc0a5a78bd782a690a3b596e89d4646e72d59c131420044daca624b91499e0ec0a232dafe4fb3270508339a5bef657eff23968e814bcbcc33b8e22e09eeed361 SHA512 9f47480dc2fad58c052aa3df3ac914d500614e7acb0dc46677bea4228350a00a0fe38b5b0572303251210e3e544b5b7cb51415476586630df4da8f4b7c6486d8
+DIST gegl-0.4.72.tar.xz 6278088 BLAKE2B 5be64b750aec2c9c21ca499eef22b3c98e7223b037df0baefd7e1354d58db0f720ed9a869408b331739dbbf08cf7b56803aa8f2459d2bce5da00805e33679f76 SHA512 94bdc545a7647491adb6371779ce128d5d03120ae58c849bd76cd2acaab58fd00a0579ce28f0e46d4c171a1f2796ab09d4633c24bd01eabd8b959400cbe6e650
diff --git a/media-libs/gegl/gegl-0.4.72.ebuild b/media-libs/gegl/gegl-0.4.72.ebuild
new file mode 100644
index 000000000000..634686082fb0
--- /dev/null
+++ b/media-libs/gegl/gegl-0.4.72.ebuild
@@ -0,0 +1,182 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+# vala and introspection support is broken, bug #468208
+VALA_USE_DEPEND=vapigen
+
+inherit flag-o-matic meson optfeature python-any-r1 toolchain-funcs vala
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.gnome.org/GNOME/gegl.git"
+else
+ SRC_URI="https://download.gimp.org/pub/${PN}/${PV:0:3}/${P}.tar.xz"
+ KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
+fi
+
+DESCRIPTION="A graph based image processing framework"
+HOMEPAGE="https://gegl.org/"
+
+LICENSE="|| ( GPL-3+ LGPL-3 )"
+SLOT="0.4"
+
+IUSE="cairo debug ffmpeg gtk-doc +introspection jpeg2k lcms openexr openmp pdf raw sdl sdl2 sdl3 svg test tiff umfpack vala v4l webp"
+REQUIRED_USE="
+ gtk-doc? ( introspection )
+ svg? ( cairo )
+ test? ( introspection )
+ vala? ( introspection )
+"
+
+RESTRICT="!test? ( test )"
+
+# See https://gegl.org/build.html for upstream instructions on dependencies.
+# opencl-3.0 =~ >=opencl-2023.02.06
+RDEPEND="
+ >=dev-libs/glib-2.44.0:2
+ >=dev-libs/json-glib-1.0.0
+ >=dev-util/opencl-headers-2023.02.06
+ >=media-libs/babl-0.1.116[introspection?,lcms?,vala?]
+ >=media-libs/libjpeg-turbo-1.0.0:=
+ >=media-libs/libnsgif-1.0.0:=
+ >=media-libs/libpng-1.6.0:0=
+ >=virtual/zlib-1.2.0:=
+ >=x11-libs/gdk-pixbuf-2.32:2
+ >=x11-libs/pango-1.38.0
+ cairo? ( >=x11-libs/cairo-1.12.2 )
+ ffmpeg? ( media-video/ffmpeg:0= )
+ introspection? ( >=dev-libs/gobject-introspection-1.82.0-r2:= )
+ jpeg2k? ( >=media-libs/jasper-1.900.1:= )
+ lcms? ( >=media-libs/lcms-2.8:2 )
+ openexr? ( >=media-libs/openexr-1.6.1:= )
+ pdf? ( >=app-text/poppler-0.71.0[cairo] )
+ raw? ( >=media-libs/libraw-0.15.4:0= )
+ sdl? ( >=media-libs/libsdl-1.2.0 )
+ sdl2? ( >=media-libs/libsdl2-2.0.5 )
+ sdl3? ( >=media-libs/libsdl3-3.2.0 )
+ svg? ( >=gnome-base/librsvg-2.40.6:2 )
+ tiff? ( >=media-libs/tiff-4:= )
+ umfpack? ( sci-libs/umfpack )
+ v4l? ( >=media-libs/libv4l-1.0.1 )
+ webp? ( >=media-libs/libwebp-0.5.0:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ ${PYTHON_DEPS}
+ dev-lang/perl
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig
+ gtk-doc? ( dev-util/gi-docgen )
+ test? ( $(python_gen_any_dep '>=dev-python/pygobject-3.2:3[${PYTHON_USEDEP}]') )
+ vala? ( $(vala_depend) )
+"
+
+DOCS=( AUTHORS docs/ChangeLog docs/NEWS.adoc )
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+ python-any-r1_pkg_setup
+}
+
+python_check_deps() {
+ use test || return 0
+ python_has_version -b ">=dev-python/pygobject-3.2:3[${PYTHON_USEDEP}]"
+}
+
+src_prepare() {
+ default
+ # patch executables suffix
+ sed -i -e "s/'gegl'/'gegl-0.4'/" bin/meson.build || die
+ sed -i -e "s/'gegl-imgcmp'/'gegl-imgcmp-0.4'/" tools/meson.build || die
+ sed -i -e "s/gegl-imgcmp/gegl-imgcmp-0.4/" tests/simple/test-exp-combine.py || die
+ # skip UNEXPECTED PASSED 'matting-levin' test
+ sed -i -e "s/composition_tests += 'matting-levin'//" \
+ -e "s/composition_tests_fail += 'matting-levin'//" tests/compositions/meson.build || die
+
+ # don't require Apple's OpenCL on versions of OSX that don't have it
+ if [[ ${CHOST} == *-darwin* && ${CHOST#*-darwin} -le 9 ]] ; then
+ sed -i -e 's/#ifdef __APPLE__/#if 0/' gegl/opencl/* || die
+ fi
+
+ # Fix QA warning, install docs into /usr/share/gtk-doc/html/gegl-0.4 instead of /usr/share/doc/gegl-0.4
+ sed -i -e "s#'doc'#'gtk-doc' / 'html'#" docs/reference/meson.build || die
+}
+
+src_configure() {
+ # Bug #859901
+ filter-lto
+
+ tc-export READELF NM
+
+ use vala && vala_setup
+
+ local emesonargs=(
+ # Follow upstream order in meson_options.txt
+
+ # - Disable documentation as the generating is bit automagic
+ # if anyone wants to work on it just create bug with patch
+ -Ddocs=false # website
+ $(meson_feature gtk-doc gi-docgen)
+ # - Work in progress operations
+ # Might make sense to hook up if masked to make it an explicit opt-in
+ -Dworkshop=false
+ $(meson_use introspection)
+ $(meson_feature vala vapigen)
+
+ # Optional dependencies (as per upstream)
+ -Dgdk-pixbuf=enabled
+ # - Dependency currently used for tests, examples and not installed tools.
+ # If in addition mrg and sdl are enabled then some substantive change could happen.
+ # With ffmpeg allows building tests that currently fail bug #907412
+ -Dgexiv2=disabled
+ # - Noop option. Its fully optional at runtime.
+ -Dgraphviz=disabled
+ $(meson_feature jpeg2k jasper)
+ $(meson_feature lcms)
+ # - Needs -Dworkshop=true
+ -Dlensfun=disabled
+ $(meson_feature ffmpeg libav)
+ $(meson_feature raw libraw)
+ $(meson_feature svg librsvg)
+ # - Not in portage main tree
+ -Dlibspiro=disabled
+ $(meson_feature tiff libtiff)
+ # - v4l support does not work with our media-libs/libv4l-0.8.9,
+ # upstream bug at https://bugzilla.gnome.org/show_bug.cgi?id=654675
+ $(meson_feature v4l libv4l)
+ $(meson_feature v4l libv4l2)
+ -Dlua=disabled
+ # - Unpackaged and discontinued upstream. mrg upstream recommends ctx which is vendored in gegl
+ -Dmrg=disabled
+ # - Unpackaged, needs -Dworkshop=true
+ # Implementation of the feature in gimp stalled
+ # https://gitlab.gnome.org/GNOME/gimp/-/issues/2912
+ -Dmaxflow=disabled
+ $(meson_feature openexr)
+ $(meson_feature openmp)
+ $(meson_feature cairo)
+ -Dpango=enabled
+ $(meson_feature cairo pangocairo)
+ $(meson_feature pdf poppler)
+ # - Test dependency
+ $(meson_feature test pygobject)
+ $(meson_feature sdl sdl1)
+ $(meson_feature sdl2)
+ $(meson_feature sdl3)
+ $(meson_feature umfpack)
+ $(meson_feature webp)
+ )
+ meson_src_configure
+}
+
+pkg_postinst() {
+ optfeature "'Show Image Graph' under GIMP[debug] menu 'File - Debug'" media-gfx/graphviz
+ optfeature "Optionally use OpenCL for operations" virtual/opencl
+}
diff --git a/media-libs/gegl/gegl-9999.ebuild b/media-libs/gegl/gegl-9999.ebuild
index 8df26a41ed52..634686082fb0 100644
--- a/media-libs/gegl/gegl-9999.ebuild
+++ b/media-libs/gegl/gegl-9999.ebuild
@@ -14,7 +14,7 @@ if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://gitlab.gnome.org/GNOME/gegl.git"
else
SRC_URI="https://download.gimp.org/pub/${PN}/${PV:0:3}/${P}.tar.xz"
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~x86"
+ KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
fi
DESCRIPTION="A graph based image processing framework"
@@ -23,7 +23,7 @@ HOMEPAGE="https://gegl.org/"
LICENSE="|| ( GPL-3+ LGPL-3 )"
SLOT="0.4"
-IUSE="cairo debug ffmpeg gtk-doc +introspection jpeg2k lcms openexr openmp pdf raw sdl sdl2 svg test tiff umfpack vala v4l webp"
+IUSE="cairo debug ffmpeg gtk-doc +introspection jpeg2k lcms openexr openmp pdf raw sdl sdl2 sdl3 svg test tiff umfpack vala v4l webp"
REQUIRED_USE="
gtk-doc? ( introspection )
svg? ( cairo )
@@ -34,9 +34,11 @@ REQUIRED_USE="
RESTRICT="!test? ( test )"
# See https://gegl.org/build.html for upstream instructions on dependencies.
+# opencl-3.0 =~ >=opencl-2023.02.06
RDEPEND="
>=dev-libs/glib-2.44.0:2
>=dev-libs/json-glib-1.0.0
+ >=dev-util/opencl-headers-2023.02.06
>=media-libs/babl-0.1.116[introspection?,lcms?,vala?]
>=media-libs/libjpeg-turbo-1.0.0:=
>=media-libs/libnsgif-1.0.0:=
@@ -54,6 +56,7 @@ RDEPEND="
raw? ( >=media-libs/libraw-0.15.4:0= )
sdl? ( >=media-libs/libsdl-1.2.0 )
sdl2? ( >=media-libs/libsdl2-2.0.5 )
+ sdl3? ( >=media-libs/libsdl3-3.2.0 )
svg? ( >=gnome-base/librsvg-2.40.6:2 )
tiff? ( >=media-libs/tiff-4:= )
umfpack? ( sci-libs/umfpack )
@@ -165,7 +168,8 @@ src_configure() {
# - Test dependency
$(meson_feature test pygobject)
$(meson_feature sdl sdl1)
- $(meson_feature sdl2 sdl2)
+ $(meson_feature sdl2)
+ $(meson_feature sdl3)
$(meson_feature umfpack)
$(meson_feature webp)
)
@@ -174,4 +178,5 @@ src_configure() {
pkg_postinst() {
optfeature "'Show Image Graph' under GIMP[debug] menu 'File - Debug'" media-gfx/graphviz
+ optfeature "Optionally use OpenCL for operations" virtual/opencl
}
diff --git a/media-libs/gegl/metadata.xml b/media-libs/gegl/metadata.xml
index 06bc5316ac88..c71f5f6ed8d3 100644
--- a/media-libs/gegl/metadata.xml
+++ b/media-libs/gegl/metadata.xml
@@ -11,6 +11,7 @@
</maintainer>
<use>
<flag name="sdl2">Add support for Simple Direct Layer 2.0 (<pkg>media-libs/libsdl2</pkg>)</flag>
+ <flag name="sdl3">Add support for Simple Direct Layer 3.0 (<pkg>media-libs/libsdl3</pkg>)</flag>
<flag name="umfpack">Enable sparse solving via <pkg>sci-libs/umfpack</pkg>.</flag>
</use>
<upstream>
diff --git a/media-libs/glycin-loaders/Manifest b/media-libs/glycin-loaders/Manifest
index 27d8d3e51aad..436c6cadc88a 100644
--- a/media-libs/glycin-loaders/Manifest
+++ b/media-libs/glycin-loaders/Manifest
@@ -5,5 +5,7 @@ DIST glycin-2.1.5-crates.tar.xz 18050756 BLAKE2B 94af2ef6733df65ee735df76d0dc261
DIST glycin-2.1.5.tar.bz2 178056 BLAKE2B 9791dba971636e170e49772b26bc93ec2118eb21a9e476648d37c7c5afc80b536a7e95f461c32dc8c875c19d35d3d834e8df779fb452e230d741f8dc99a2f77d SHA512 33d02fdebc3ee4ade820c548335727d4db54bd1f882130106b2772ecad4f33db5ba0dbe3390dfdd4998e5bbf54111619e51bb0b2582213e13ecaa18134b1bd89
DIST glycin-2.2.0-crates.tar.xz 21935372 BLAKE2B bb881b2cde00de20491fdd72e916fa026371944a3ba01972408ccc3c6e5465eb278584bd3831a30c6c5ba04f967b50a7c686c321c71e49906eff6a471cedb939 SHA512 a2632c5794976198804c8296939589983dd95667b8ca4522f055bcdb2b0ce045d6288b766d948678a178a48f07b4b2ba96224c7ecfcce3f634c6a4d2e0b8f858
DIST glycin-2.2.0.tar.bz2 219781 BLAKE2B 6879c89c66d7ff31ae97548d1f891a424b242d9f40df02e7ac8ccd8c555e5b4e8974ae007cdd24157fba672866e33f411d97b8399f9883b8d1354f878e070c17 SHA512 333e54ec912528d7b12dd2cf984912377d27656fd2f28cd1261cd19d35023bf031f3b2977061949f1ec25629d6c1dcbed2f8a45e8a29ab55993585fb2fabf260
+DIST glycin-2.2.1-crates.tar.xz 21935372 BLAKE2B bb881b2cde00de20491fdd72e916fa026371944a3ba01972408ccc3c6e5465eb278584bd3831a30c6c5ba04f967b50a7c686c321c71e49906eff6a471cedb939 SHA512 a2632c5794976198804c8296939589983dd95667b8ca4522f055bcdb2b0ce045d6288b766d948678a178a48f07b4b2ba96224c7ecfcce3f634c6a4d2e0b8f858
+DIST glycin-2.2.1.tar.bz2 219965 BLAKE2B cb257120d58841aabceaff18fb9a1a4e145509150f301b6119f476a344b652919239284b0cabd2bc1f4052ab05cacc5beb424f36a700f7440777fe4aa9f92636 SHA512 62c4f344e9d593739dc8c1c183c29a992378ad9ad98614243257a9a86e653848b5749cfef08fe706da00908da4ca4a0e2efb4d983530234c60c7225650461358
DIST glycin-test-images-75c95e4fe35d6d328a91f73d9225db9ee9e588d0.tar.bz2 9528708 BLAKE2B a3b1f709a3898586c5bfa6fd520ecac1406876dbb941d0ccf95d9b0bf0cf33a65d3412ead464bab8e7b9f896e23a1a1e9869ef83034e454a8160b56696996338 SHA512 03ad185c23aba94fb34004a26d284f50ccd8fe38581a8e6d826f39a2cbdf86a56c97cdb427b4fa1b324c766f9679018b5ba135c41781f8f2b37d2bf9295f8a98
DIST glycin-test-images-f7a06d9131a5686c1b58c56f42f9fda9ea5e620d.tar.bz2 8890371 BLAKE2B 7b334ec32f8614de3fd556256f421ef88b32db36949fdbf191f57dcffc0cc5c1cdb4f88beb3531548a0bc4e462cae309a335c37a37b2f66b224f406aac751596 SHA512 f88b897b2b9a0a59c4f6b495383084c7a86392e3428f870b9f61a03d8e17da23903953211dc6c24b90f01c6a00eb5fa7626c71ff50d64dacd737f1a669ec8a35
diff --git a/media-libs/glycin-loaders/glycin-loaders-2.2.1.ebuild b/media-libs/glycin-loaders/glycin-loaders-2.2.1.ebuild
new file mode 100644
index 000000000000..5a21ca7dc3ac
--- /dev/null
+++ b/media-libs/glycin-loaders/glycin-loaders-2.2.1.ebuild
@@ -0,0 +1,112 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER=1.93.0
+
+inherit cargo meson
+
+MY_PV=${PV/_/.}
+MY_P=glycin-${MY_PV}
+TEST_IMAGE_COMMIT=75c95e4fe35d6d328a91f73d9225db9ee9e588d0
+
+DESCRIPTION="Loaders for glycin clients (glycin crate or libglycin)"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/glycin/"
+# upstream release tarballs are useless, as upstream is deliberately
+# stripping glycin crate from them
+SRC_URI="
+ https://gitlab.gnome.org/GNOME/glycin/-/archive/${MY_PV}/${MY_P}.tar.bz2
+ https://github.com/gentoo-crate-dist/glycin/releases/download/${MY_PV}/${MY_P}-crates.tar.xz
+ test? (
+ https://gitlab.gnome.org/sophie-h/test-images/-/archive/${TEST_IMAGE_COMMIT}/test-images-${TEST_IMAGE_COMMIT}.tar.bz2
+ -> glycin-test-images-${TEST_IMAGE_COMMIT}.tar.bz2
+ )
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="|| ( LGPL-2.1+ MPL-2.0 )"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD GPL-3+ IJG ISC
+ LGPL-3+ MIT Unicode-3.0
+ || ( LGPL-2.1+ MPL-2.0 )
+"
+SLOT="2"
+if [[ ${PV} != *_[ab]* ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+fi
+IUSE="heif jpegxl svg test"
+REQUIRED_USE="test? ( heif jpegxl )"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ !>=media-libs/glycin-loaders-2:0
+ >=dev-libs/glib-2.68.0:2
+ >=sys-libs/libseccomp-2.5.0
+ heif? ( >=media-libs/libheif-1.17.0:= )
+ jpegxl? ( >=media-libs/libjxl-0.11.1:= )
+ svg? (
+ >=gnome-base/librsvg-2.52.0:2
+ >=x11-libs/cairo-1.17.0
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ test? (
+ >=gui-libs/gtk-4.16.0:4
+ >=media-libs/lcms-2.14:2
+ )
+"
+BDEPEND="
+ test? (
+ sys-apps/bubblewrap
+ sys-apps/dbus
+ )
+"
+
+QA_FLAGS_IGNORED="usr/libexec/glycin-loaders/.*"
+
+src_unpack() {
+ cargo_src_unpack
+
+ if use test; then
+ mv "test-images-${TEST_IMAGE_COMMIT}"/* \
+ "${S}/tests/test-images/" || die
+ fi
+}
+
+src_configure() {
+ local formats=(
+ $(usev heif glycin-heif)
+ $(usev jpegxl glycin-jxl)
+ $(usev svg glycin-svg)
+ glycin-image-rs
+ )
+ local formats_s=${formats[*]}
+ local emesonargs=(
+ -Dprofile=$(usex debug dev release)
+ -Dglycin-loaders=true
+ -Dloaders="${formats_s// /,}"
+ -Dtests=$(usex test true false)
+ -Dlibglycin=false
+ -Dlibglycin-gtk4=false
+ -Dglycin-thumbnailer=false
+
+ # TODO: figure out why it fails
+ # https://gitlab.gnome.org/GNOME/glycin/-/issues/167
+ -Dtest_skip_ext=heic
+ )
+
+ meson_src_configure
+ ln -s "${CARGO_HOME}" "${BUILD_DIR}/cargo-home" || die
+}
+
+src_test() {
+ # tests write to /proc/*/uid_map
+ # apparently, "addpredict /" in Portage breaks it
+ local -x SANDBOX_ON=0
+ meson_src_test
+}
diff --git a/media-libs/libaom/Manifest b/media-libs/libaom/Manifest
index b4958af4a024..7ad2592dad8b 100644
--- a/media-libs/libaom/Manifest
+++ b/media-libs/libaom/Manifest
@@ -1,2 +1,4 @@
DIST libaom-3.12.1-testdata.tar.xz 426315008 BLAKE2B 159ff275b23ac4784342deb9f82e89a3546e169c7e896178a253e0d48eda81b31aeedc90bb4a1d4cac00854b0de45fb1829904d8438a76b680966f1ec33112aa SHA512 bfad9a06fdb5004f73b42db58fdbf664902733a729475ba26f7bf823f485dec75fde1e03b10b61f98d33c8fe5932bd1dc11e322f22dfedb8722cfdfa0ede7a16
DIST libaom-3.12.1.tar.gz 5497367 BLAKE2B 4fa4ea0620b27013d2c39589ea5bc4333ea26ffe51dad64e95b240cdf5c82fcd0810fecf45410f34b89057d9000c93efae106c49e4017796d7c8b2752357709d SHA512 27521fe1cffd89a8875552f1758de89c19a47aa1640ee20930ac420a03d964eb9ae10c4b0f55e518c37d4d59f06657aee2bfa84eedad35683648bd658e06da73
+DIST libaom-3.14.1-testdata.tar.xz 480511176 BLAKE2B a169db24c6b3ab9ee6ab00a9fcb6c5e58c7d0bd6cd26f9273cca3935df10dc6cb8a7cb90612b88fa6a14403e11fa5d352057fb85e6ac5783ba849528dbe777c8 SHA512 6e2afeaa48b258a9351185cd70d1d477426f874fd75d53de070484af300543c3a1dcdb79460c1ad0ff6162e7da031cc1e9a699bf246e63cfc92e88d7fc07f03a
+DIST libaom-3.14.1.tar.gz 6368868 BLAKE2B b88e6868a9dcf3c91f20a49520884268f961c54e6c5890467505ce6b7086faee191db021d46dbdbb9e0da57ddc482263ac6e8e816afd5319e6d072ada42b28eb SHA512 a4c3427db0bb4cd49b8873ffae0a287570b86d6f0733da52798b08470519755ffe08198222be86d3bc8c9bd0052477017dc595b98bbbd77f76bfe7b9ce48d7fa
diff --git a/media-libs/libaom/files/libaom-3.14.1-allow-fortify-source.patch b/media-libs/libaom/files/libaom-3.14.1-allow-fortify-source.patch
new file mode 100644
index 000000000000..133e6acba647
--- /dev/null
+++ b/media-libs/libaom/files/libaom-3.14.1-allow-fortify-source.patch
@@ -0,0 +1,13 @@
+Fortification is an important security feature.
+--- a/cmake/aom_configure.cmake
++++ b/cmake/aom_configure.cmake
+@@ -389,9 +389,6 @@ else()
+ add_compiler_flag_if_supported("-Werror")
+ endif()
+
+- if(build_type_lowercase MATCHES "rel")
+- add_compiler_flag_if_supported("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0")
+- endif()
+ add_compiler_flag_if_supported("-D_LARGEFILE_SOURCE")
+ add_compiler_flag_if_supported("-D_FILE_OFFSET_BITS=64")
+ endif()
diff --git a/media-libs/libaom/files/libaom-3.14.1-dont-install-static.patch b/media-libs/libaom/files/libaom-3.14.1-dont-install-static.patch
new file mode 100644
index 000000000000..66c254d9b3c5
--- /dev/null
+++ b/media-libs/libaom/files/libaom-3.14.1-dont-install-static.patch
@@ -0,0 +1,14 @@
+Patching the static library fully would need extensive changes.
+Patching it out from install means it won't be included in generated cmake config files.
+--- a/cmake/aom_install.cmake
++++ b/cmake/aom_install.cmake
+@@ -81,7 +81,7 @@ macro(setup_aom_install_targets)
+ endif()
+
+ if(BUILD_SHARED_LIBS)
+- set(AOM_INSTALL_LIBS aom aom_static)
++ set(AOM_INSTALL_LIBS aom)
+ else()
+ set(AOM_INSTALL_LIBS aom)
+ endif()
+
diff --git a/media-libs/libaom/libaom-3.14.1.ebuild b/media-libs/libaom/libaom-3.14.1.ebuild
new file mode 100644
index 000000000000..3cd6499a8be2
--- /dev/null
+++ b/media-libs/libaom/libaom-3.14.1.ebuild
@@ -0,0 +1,152 @@
+# 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 edo flag-o-matic multiprocessing python-any-r1
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://aomedia.googlesource.com/aom"
+else
+ # To update test data tarball,
+ # chromium-tools.git/generate-libaom-test-tarball.sh
+ SRC_URI="
+ https://storage.googleapis.com/aom-releases/${P}.tar.gz
+ test? ( https://gitlab.com/api/v4/projects/32909921/packages/generic/${PN}/${PV}/${P}-testdata.tar.xz )
+ "
+ KEYWORDS="~amd64 ~arm64"
+fi
+
+DESCRIPTION="Alliance for Open Media AV1 Codec SDK"
+HOMEPAGE="https://aomedia.org https://aomedia.googlesource.com/aom/"
+
+LICENSE="BSD-2"
+SLOT="0/3"
+IUSE="big-endian debug doc +examples test"
+IUSE="${IUSE} cpu_flags_x86_mmx cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_ssse3"
+IUSE="${IUSE} cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2"
+IUSE="${IUSE} cpu_flags_arm_crc32 cpu_flags_arm_neon cpu_flags_ppc_vsx"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ cpu_flags_x86_sse2? ( cpu_flags_x86_mmx )
+ cpu_flags_x86_ssse3? ( cpu_flags_x86_sse2 )
+"
+
+BDEPEND="${PYTHON_DEPS}
+ dev-lang/perl
+ abi_x86_32? ( dev-lang/yasm )
+ abi_x86_64? ( dev-lang/yasm )
+ abi_x86_x32? ( dev-lang/yasm )
+ doc? ( app-text/doxygen )
+ test? ( dev-util/gtest-parallel )
+"
+
+# The PATENTS file is required to be distributed with this package, bug #682214
+DOCS=( PATENTS )
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-3.4.0-posix-c-source-ftello.patch
+ "${FILESDIR}"/${PN}-3.14.1-allow-fortify-source.patch
+ "${FILESDIR}"/${PN}-3.14.1-dont-install-static.patch
+)
+
+src_prepare() {
+ # fix hardcoded path
+ # libvmaf ERROR could not read model from path: "/usr/local/share/model/vmaf_v0.6.1.json"
+ sed -e "s#/usr/local/share/model/#${EPREFIX}/usr/share/vmaf/model/#g" -i README.md av1/av1_cx_iface.c || die
+
+ cmake_src_prepare
+}
+
+multilib_src_configure() {
+ # Follow upstream recommendations in README (bug #921438) and avoid
+ # asserts during common use (bug #914614).
+ append-cppflags $(usex debug '-UNDEBUG' '-DNDEBUG')
+
+ local mycmakeargs=(
+ -DENABLE_CCACHE=OFF
+ -DENABLE_DOCS=$(multilib_native_usex doc ON OFF)
+ -DENABLE_EXAMPLES=$(multilib_native_usex examples ON OFF)
+ -DENABLE_NASM=OFF
+ -DENABLE_TESTS=$(usex test)
+ -DENABLE_TOOLS=ON
+ -DENABLE_WERROR=OFF
+ # https://bugs.chromium.org/p/aomedia/issues/detail?id=3487 shows
+ # that big endian detection doesn't really work otherwise.
+ -DCONFIG_BIG_ENDIAN=$(usex big-endian 1 0)
+
+ # Needs libjxl, currently unpackaged.
+ -DCONFIG_TUNE_BUTTERAUGLI=0
+
+ # arm
+ -DENABLE_NEON=$(usex cpu_flags_arm_neon ON OFF)
+ -DENABLE_ARM_CRC32=$(usex cpu_flags_arm_crc32 ON OFF)
+ # bug #917277
+ -DENABLE_NEON_DOTPROD=OFF
+ # bug #917278
+ -DENABLE_NEON_I8MM=OFF
+ # bug #920474
+ -DENABLE_SVE=OFF
+
+ # mips
+ # ENABLE_DSPR2 / ENABLE_MSA for mips
+
+ # riscv
+ # ENABLE_RVV for riscv
+
+ # amd64
+ -DENABLE_MMX=$(usex cpu_flags_x86_mmx ON OFF)
+ -DENABLE_SSE=$(usex cpu_flags_x86_sse ON OFF)
+ -DENABLE_SSE2=$(usex cpu_flags_x86_sse2 ON OFF)
+ -DENABLE_SSE3=$(usex cpu_flags_x86_sse3 ON OFF)
+ -DENABLE_SSSE3=$(usex cpu_flags_x86_ssse3 ON OFF)
+ -DENABLE_SSE4_1=$(usex cpu_flags_x86_sse4_1 ON OFF)
+ -DENABLE_SSE4_2=$(usex cpu_flags_x86_sse4_2 ON OFF)
+ -DENABLE_AVX=$(usex cpu_flags_x86_avx ON OFF)
+ -DENABLE_AVX2=$(usex cpu_flags_x86_avx2 ON OFF)
+
+ # ppc
+ -DENABLE_VSX=$(usex cpu_flags_ppc_vsx ON OFF)
+ )
+
+ # For 32-bit multilib builds, force some intrinsics on to work around
+ # bug #816027. libaom seems to do runtime detection for some targets
+ # at least, so this isn't an issue.
+ if ! multilib_is_native_abi && use amd64 ; then
+ mycmakeargs+=(
+ -DENABLE_SSE3=ON
+ -DENABLE_SSSE3=ON
+ )
+ fi
+
+ # On ARM32-on-ARM64, things end up failing if NEON is off, bug #835456
+ # Just force generic, given it's a niche situation.
+ # TODO: could try forcing armv7 or similar?
+ if use arm && ! use cpu_flags_arm_neon && [[ $(uname -p) == "aarch64" ]] ; then
+ ewarn "Forcing generic for arm32-on-arm64 build (bug #835456)"
+ mycmakeargs+=(
+ -DAOM_TARGET_CPU=generic
+ )
+ fi
+
+ cmake_src_configure
+}
+
+multilib_src_test() {
+ einfo "Running quiet tests which take hours."
+ # We use ninja rather than test_libaom directly so we can run it in parallel
+ # with sharding, see https://aomedia.googlesource.com/aom/#sharded-testing.
+ local -x LIBAOM_TEST_DATA_PATH="${WORKDIR}/${P}-testdata"
+ edo gtest-parallel --workers "$(get_makeopts_jobs)" "${BUILD_DIR}"/test_libaom
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi && use doc ; then
+ local HTML_DOCS=( "${BUILD_DIR}"/docs/html/. )
+ fi
+
+ cmake_src_install
+}
diff --git a/media-libs/libaom/libaom-9999.ebuild b/media-libs/libaom/libaom-9999.ebuild
index 09acedda3e85..3cd6499a8be2 100644
--- a/media-libs/libaom/libaom-9999.ebuild
+++ b/media-libs/libaom/libaom-9999.ebuild
@@ -1,10 +1,10 @@
-# Copyright 1999-2025 Gentoo Authors
+# 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 flag-o-matic multiprocessing python-any-r1
+inherit cmake-multilib edo flag-o-matic multiprocessing python-any-r1
if [[ ${PV} == *9999* ]]; then
inherit git-r3
@@ -14,9 +14,9 @@ else
# chromium-tools.git/generate-libaom-test-tarball.sh
SRC_URI="
https://storage.googleapis.com/aom-releases/${P}.tar.gz
- test? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-testdata.tar.xz )
+ test? ( https://gitlab.com/api/v4/projects/32909921/packages/generic/${PN}/${PV}/${P}-testdata.tar.xz )
"
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+ KEYWORDS="~amd64 ~arm64"
fi
DESCRIPTION="Alliance for Open Media AV1 Codec SDK"
@@ -41,6 +41,7 @@ BDEPEND="${PYTHON_DEPS}
abi_x86_64? ( dev-lang/yasm )
abi_x86_x32? ( dev-lang/yasm )
doc? ( app-text/doxygen )
+ test? ( dev-util/gtest-parallel )
"
# The PATENTS file is required to be distributed with this package, bug #682214
@@ -48,8 +49,8 @@ DOCS=( PATENTS )
PATCHES=(
"${FILESDIR}"/${PN}-3.4.0-posix-c-source-ftello.patch
- "${FILESDIR}"/${PN}-3.7.0-allow-fortify-source.patch
- "${FILESDIR}"/${PN}-3.8.1-tests-parallel.patch
+ "${FILESDIR}"/${PN}-3.14.1-allow-fortify-source.patch
+ "${FILESDIR}"/${PN}-3.14.1-dont-install-static.patch
)
src_prepare() {
@@ -131,9 +132,6 @@ multilib_src_configure() {
)
fi
- # LIBAOM_TEST_PROCS is added by our tests-parallel.patch
- export LIBAOM_TEST_PROCS="$(makeopts_jobs)"
-
cmake_src_configure
}
@@ -141,7 +139,8 @@ multilib_src_test() {
einfo "Running quiet tests which take hours."
# We use ninja rather than test_libaom directly so we can run it in parallel
# with sharding, see https://aomedia.googlesource.com/aom/#sharded-testing.
- LIBAOM_TEST_DATA_PATH="${WORKDIR}/${P}-testdata" eninja -C "${BUILD_DIR}" runtests
+ local -x LIBAOM_TEST_DATA_PATH="${WORKDIR}/${P}-testdata"
+ edo gtest-parallel --workers "$(get_makeopts_jobs)" "${BUILD_DIR}"/test_libaom
}
multilib_src_install() {
@@ -151,7 +150,3 @@ multilib_src_install() {
cmake_src_install
}
-
-multilib_src_install_all() {
- find "${ED}" -type f \( -name "*.a" -o -name "*.la" \) -delete || die
-}
diff --git a/media-libs/libmediainfo/Manifest b/media-libs/libmediainfo/Manifest
index cb4cd73280f4..d70c6da869a2 100644
--- a/media-libs/libmediainfo/Manifest
+++ b/media-libs/libmediainfo/Manifest
@@ -1 +1,2 @@
DIST libmediainfo_24.11.tar.xz 2096092 BLAKE2B 4080c34afa7e0a3ff2c9424e95ae4c461d2535f715bcc9812f30953be9b127d73100ba13835a5e77baa383bef0e089333a7ebcf891ce4e461d91d3388b1972e2 SHA512 3a7c889b09be4b17696288ac5a773684fed2dc608f9c1da346e790524b8bea372cedf5573e602dc48e10f61a17d314c8bd48764e5365dabe2c0222687e904a26
+DIST libmediainfo_26.05.tar.xz 2314844 BLAKE2B 2c2a6e9a1f5cd9daaaa3575a99477f4d1bfebaa193b4d72f2f25288c0afa2ebe1e9e15ff38d01a09c882aac28b2f13593960e6df738a97eee0e162143c8ffec3 SHA512 8eef2b1214d2b512c8d4483f4a8a967cd05f065cb7dd0ec9ac09b2989a2bce0f60a897a7b154e90f2d6f9e3b53ac8bebe7e9c577dfe2afdb37686c027b3a97a7
diff --git a/media-libs/libmediainfo/libmediainfo-26.05.ebuild b/media-libs/libmediainfo/libmediainfo-26.05.ebuild
new file mode 100644
index 000000000000..28de0430f952
--- /dev/null
+++ b/media-libs/libmediainfo/libmediainfo-26.05.ebuild
@@ -0,0 +1,102 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# These must be bumped together:
+# - media-libs/libzen (if a release is available)
+# - media-libs/libmediainfo
+# - media-video/mediainfo
+
+MY_PN="MediaInfo"
+inherit autotools edos2unix flag-o-matic
+
+DESCRIPTION="MediaInfo libraries"
+HOMEPAGE="https://mediaarea.net/en/MediaInfo https://github.com/MediaArea/MediaInfoLib"
+SRC_URI="https://mediaarea.net/download/source/${PN}/${PV}/${P/-/_}.tar.xz"
+S="${WORKDIR}"/${MY_PN}Lib
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="curl doc mms"
+
+# Tests try to fetch data from online sources
+RESTRICT="test"
+
+# The libzen dep usually needs to be bumped for each release!
+RDEPEND="
+ dev-libs/tinyxml2:=
+ >=media-libs/libzen-0.4.41
+ virtual/zlib:=
+ curl? ( net-misc/curl )
+ mms? ( >=media-libs/libmms-0.6.1 )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ doc? ( app-text/doxygen )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-24.11-gcc17.patch
+)
+
+src_prepare() {
+ default
+
+ cd Project/GNU/Library || die
+
+ sed -i 's:-O2::' configure.ac || die
+
+ append-cppflags -DMEDIAINFO_LIBMMS_DESCRIBE_SUPPORT=0
+
+ eautoreconf
+}
+
+src_configure() {
+ cd Project/GNU/Library || die
+ econf \
+ --enable-shared \
+ --disable-static \
+ --disable-staticlibs \
+ --with-libtinyxml2 \
+ $(use_with curl libcurl) \
+ $(use_with mms libmms)
+}
+
+src_compile() {
+ cd Project/GNU/Library || die
+ default
+
+ if use doc; then
+ cd "${WORKDIR}"/${MY_PN}Lib/Source/Doc || die
+ doxygen Doxyfile || die
+ fi
+}
+
+src_install() {
+ if use doc; then
+ local HTML_DOCS=( "${WORKDIR}"/${MY_PN}Lib/Doc/*.html )
+ fi
+
+ cd Project/GNU/Library || die
+
+ default
+
+ edos2unix ${PN}.pc #414545
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins ${PN}.pc
+
+ for x in ./ Archive Audio Duplicate Export Image Multiple Reader Tag Text Video; do
+ insinto /usr/include/${MY_PN}/${x}
+ doins "${S}"/Source/${MY_PN}/${x}/*.h
+ done
+
+ insinto /usr/include/${MY_PN}DLL
+ doins "${S}"/Source/${MY_PN}DLL/*.h
+
+ dodoc "${S}"/*.txt
+
+ find "${ED}" -name '*.la' -delete || die
+}
diff --git a/media-libs/opensubdiv/Manifest b/media-libs/opensubdiv/Manifest
index 8554674e2594..521100337f28 100644
--- a/media-libs/opensubdiv/Manifest
+++ b/media-libs/opensubdiv/Manifest
@@ -1,2 +1,3 @@
DIST opensubdiv-3.6.0.tar.gz 40746688 BLAKE2B 23f92fa028ae32b430350998299dab3fbb87b8530755abd435ce059223998a8f3d48de17c746028362fd1d2eee33e8a4c7a55b8cf4083202cfd0b6d27de008c7 SHA512 a976733a26e2c0f6510f59d4372b1b33f5404a9d536bcbd6ae3a1a0ffd1bba5495df7108bebc854d5c069575772c97c0d00f0f16f79e87611376ba84e9ae7a4b
DIST opensubdiv-3.6.1.tar.gz 40745394 BLAKE2B 1dfb24b22ddc3874e4aaf03feb1944cf91008b52bfcf44f039831f2945f58f9a777903d073748ecc477a2fda0cb46b2f79045489fc0aee77acbcfceb011e1c06 SHA512 afc30951642d978c7fd82549f0b03eae7dbf4f28642cf7e42e4a09ac550e111555c391f21dee239d5ee5522b758038d2cc7553fe2db818dad6dcf2ab5fd22358
+DIST opensubdiv-3.7.0.tar.gz 40736075 BLAKE2B a9b84c593fcf4bfa1d61bb4b5b0ca4996b11226251a2707b9da92ac9e8ece3839a48d6fe2924545c05cd8a4f3520ddddb6a76b94d372c9031eddc05098552d25 SHA512 947ec6312c224fba3da7dffa863cabb252493c38f22c516ba16b7523883f8ac8cbf353cbc502d406064db71c561e7b1abaff8c0485f4cbb54b182bd871ab0ea0
diff --git a/media-libs/opensubdiv/files/opensubdiv-3.6.1-cuda-13.patch b/media-libs/opensubdiv/files/opensubdiv-3.6.1-cuda-13.patch
new file mode 100644
index 000000000000..906191ad5aa2
--- /dev/null
+++ b/media-libs/opensubdiv/files/opensubdiv-3.6.1-cuda-13.patch
@@ -0,0 +1,25 @@
+From cb1b2378c8fb370b4cc9b71079473145fed6ae35 Mon Sep 17 00:00:00 2001
+From: David G Yu <davidgyu@gmail.com>
+Date: Fri, 12 Dec 2025 14:29:05 -0800
+Subject: [PATCH] [opensubdiv/osd] Fixed CUDA deprecated API
+
+Updated osd/cudaEvaluator.cpp to use cudaDeviceSynchronize()
+instead of cudaThreadSynchronize() which was deprecated and
+has been removed from CUDA 13.0.
+---
+ opensubdiv/osd/cudaEvaluator.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/opensubdiv/osd/cudaEvaluator.cpp b/opensubdiv/osd/cudaEvaluator.cpp
+index 4b638dd49..c42caacaa 100644
+--- a/opensubdiv/osd/cudaEvaluator.cpp
++++ b/opensubdiv/osd/cudaEvaluator.cpp
+@@ -359,7 +359,7 @@ CudaEvaluator::EvalPatches(
+ /* static */
+ void
+ CudaEvaluator::Synchronize(void * /*deviceContext*/) {
+- cudaThreadSynchronize();
++ cudaDeviceSynchronize();
+ }
+
+ } // end namespace Osd
diff --git a/media-libs/opensubdiv/opensubdiv-3.6.1.ebuild b/media-libs/opensubdiv/opensubdiv-3.6.1-r1.ebuild
index b64425264c7c..64e6aa3a6a0b 100644
--- a/media-libs/opensubdiv/opensubdiv-3.6.1.ebuild
+++ b/media-libs/opensubdiv/opensubdiv-3.6.1-r1.ebuild
@@ -71,6 +71,7 @@ DEPEND="
PATCHES=(
"${FILESDIR}/${PN}-3.6.0-use-gnuinstalldirs.patch"
"${FILESDIR}/${PN}-3.6.0-cudaflags.patch"
+ "${FILESDIR}/${P}-cuda-13.patch"
)
pkg_pretend() {
diff --git a/media-libs/opensubdiv/opensubdiv-3.7.0.ebuild b/media-libs/opensubdiv/opensubdiv-3.7.0.ebuild
new file mode 100644
index 000000000000..81279c27d1ea
--- /dev/null
+++ b/media-libs/opensubdiv/opensubdiv-3.7.0.ebuild
@@ -0,0 +1,255 @@
+# 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 cuda flag-o-matic python-any-r1 toolchain-funcs virtualx xdg
+
+MY_PV="$(ver_rs "1-3" '_')"
+
+DESCRIPTION="An Open-Source subdivision surface library"
+HOMEPAGE="https://graphics.pixar.com/opensubdiv/docs/intro.html"
+SRC_URI="https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/OpenSubdiv-${MY_PV}"
+
+# Modfied Apache-2.0 license, where section 6 has been replaced.
+# See for example CMakeLists.txt for details.
+LICENSE="Apache-2.0"
+# MATCHES SONAME
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="X cuda doc examples glfw opencl +opengl openmp ptex python tbb test tutorials"
+RESTRICT="!test? ( test )"
+
+# TODO needed for stringify due to unwrapped KERNEL_FILES in opensubdiv/{far,osd}/CMakeLists.txt
+REQUIRED_USE="
+ || ( opencl opengl )
+ ptex? ( glfw )
+"
+
+BDEPEND="
+ doc? (
+ app-text/doxygen
+ dev-python/docutils
+ )
+ python? ( ${PYTHON_DEPS} )
+"
+
+# opengl requires GLX, libglvnd[X]
+RDEPEND="
+ examples? (
+ opengl? (
+ glfw? (
+ >=media-libs/glfw-3.4[X?]
+ )
+ )
+ )
+ opengl? ( media-libs/libglvnd[X] )
+ opencl? ( virtual/opencl )
+ openmp? ( || (
+ sys-devel/gcc:*[openmp]
+ llvm-runtimes/openmp
+ ) )
+ ptex? ( media-libs/ptex )
+ tbb? ( dev-cpp/tbb:= )
+ test? ( >=media-libs/glfw-3.4[X] )
+"
+
+# CUDA_RUNTIME is statically linked
+DEPEND="
+ ${RDEPEND}
+ test? (
+ glfw? (
+ >=media-libs/glfw-3.4[X?]
+ )
+ )
+ cuda? ( dev-util/nvidia-cuda-toolkit:= )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-3.6.0-use-gnuinstalldirs.patch"
+ "${FILESDIR}/${PN}-3.6.0-cudaflags.patch"
+ "${FILESDIR}/${PN}-3.6.1-cuda-13.patch"
+)
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+
+ if use cuda; then
+ # When building binary packages we build all major targets unless specified otherwise
+ if [[ -z "${CUDAARCHS+x}" ]]; then
+ case ${MERGE_TYPE} in
+ source) CUDAARCHS="native" ;;
+ # buildonly) CUDAARCHS="all" ;;
+ buildonly) CUDAARCHS="all-major" ;;
+ esac
+ fi
+
+ # check if user provided --gpu-architecture/-arch flag instead of CUDAARCHS
+ for f in ${NVCCFLAGS}; do
+ if [[ ${f} == -arch* || ${f} == --gpu-architecture* ]]; then
+ CUDAARCHS="NVCC"
+ break
+ fi
+ done
+
+ if [[ "${CUDAARCHS}" == "NVCC" ]]; then
+ unset CUDAARCHS
+ else
+ export CUDAARCHS
+ fi
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed \
+ -e "/install(/s/^/#DONOTINSTALL /g" \
+ -i \
+ regression/*/CMakeLists.txt \
+ tools/stringify/CMakeLists.txt \
+ || die
+
+ sed \
+ -e "/install( TARGETS osd_static_[cg]pu/s/^/#DONOTINSTALL /g" \
+ -i \
+ opensubdiv/CMakeLists.txt \
+ || die
+
+ if use cuda; then
+ # do this little headstand to filter out lto from NVCCFLAGS
+ local CFLAGS_orig="${CFLAGS}" CXXFLAGS_orig="${CXXFLAGS}"
+ filter-lto
+
+ cuda_src_prepare
+
+ CFLAGS="${CFLAGS_orig}"
+ CXXFLAGS="${CXXFLAGS_orig}"
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_INSTALL_BINDIR="share/${PN}/bin"
+
+ # DirectX
+ -DNO_DX="yes"
+
+ # MacOS
+ -DNO_MACOS_FRAMEWORK="yes"
+ -DNO_METAL="yes"
+
+ -DNO_DOC="$(usex !doc)"
+ -DNO_EXAMPLES="$(usex !examples)"
+ -DNO_TUTORIALS="$(usex !tutorials)"
+ -DNO_REGRESSION="$(usex !test)"
+ -DNO_TESTS="$(usex !test)"
+
+ -DNO_PTEX="$(usex !ptex)"
+
+ # GUI
+ -DNO_OPENGL="$(usex !opengl)"
+
+ # Backends
+ -DNO_CUDA="$(usex !cuda)"
+ -DNO_OMP="$(usex !openmp)"
+ -DNO_TBB="$(usex !tbb)"
+ -DNO_OPENCL="$(usex !opencl)"
+ )
+
+ if use cuda; then
+ # The old cmake CUDA module doesn't use environment variable to initialize flags
+ mycmakeargs+=(
+ -DCUDA_PROPAGATE_HOST_FLAGS="no"
+ -DCUDA_NVCC_FLAGS="-forward-unknown-opts ${NVCCFLAGS}"
+ )
+ fi
+
+ if use opencl; then
+ mycmakeargs+=(
+ # not packaged https://github.com/martijnberger/clew
+ -DNO_CLEW="yes"
+ )
+ fi
+
+ if use opengl; then
+ mycmakeargs+=(
+ -DNO_GLTESTS="$(usex !test)"
+ # GLEW support is unmaintained in favour of their own GL handler code.
+ # Turning this on will lead to crashes when using their GPU backend.
+ -DNO_GLEW="yes"
+ -DNO_GLFW="$(usex !glfw)"
+ )
+ if use glfw; then
+ mycmakeargs+=(
+ -DGLFW_LOCATION="${ESYSROOT}/usr/$(get_libdir)"
+ -DNO_GLFW_X11="$(usex !X)"
+ )
+ fi
+ fi
+
+ if use ptex; then
+ mycmakeargs+=(
+ -DPTEX_LOCATION="${ESYSROOT}/usr/$(get_libdir)"
+ )
+ fi
+
+ if ! use python; then
+ mycmakeargs+=(
+ -DCMAKE_DISABLE_FIND_PACKAGE_Python="yes"
+ )
+ fi
+
+ cmake_src_configure
+}
+
+src_test() {
+ xdg_environment_reset
+
+ CMAKE_SKIP_TESTS=(
+ # Fails due to CL & CUDA kernels, works outside
+ "glImaging"
+ )
+
+ if ! test -w /dev/dri/card0; then
+ CMAKE_SKIP_TESTS+=(
+ "osd_regression"
+ )
+ fi
+
+ # "far_tutorial_1_2 breaks with gcc and > -O1"
+ tc-is-gcc && is-flagq '-O@(2|3|fast)' && CMAKE_SKIP_TESTS+=( "far_tutorial_1_2" )
+
+ if use cuda; then
+ cuda_add_sandbox -w
+ addpredict /dev/char/
+ addwrite /dev/dri/card0
+ addwrite /dev/dri/renderD128
+ addwrite /dev/udmabuf
+ fi
+
+ virtx cmake_src_test
+
+ if use examples && use opengl && use glfw; then
+
+ local KERNELS=( CPU )
+ use openmp && KERNELS+=( OPENMP )
+ use tbb && KERNELS+=( TBB )
+
+ # use cuda && KERNELS+=( CUDA )
+ # use opencl && KERNELS+=( CL )
+
+ use opengl && use X && KERNELS+=( XFB )
+ use opengl && KERNELS+=( GLSL )
+
+ #Bug https://bugs.gentoo.org/924516
+ virtx "${BUILD_DIR}/bin/glImaging" -w test -l 3 -s 256 256 -a -k "$(IFS=","; echo "${KERNELS[*]}")"
+ fi
+}
diff --git a/media-libs/shaderc/shaderc-2026.2.ebuild b/media-libs/shaderc/shaderc-2026.2.ebuild
index 78eb91a4b42a..3b5b33fd9989 100644
--- a/media-libs/shaderc/shaderc-2026.2.ebuild
+++ b/media-libs/shaderc/shaderc-2026.2.ebuild
@@ -14,7 +14,7 @@ S="${WORKDIR}/${PN}-${EGIT_COMMIT}"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv x86"
IUSE="doc"
RDEPEND="
diff --git a/media-libs/vulkan-layers/vulkan-layers-1.4.350.0.ebuild b/media-libs/vulkan-layers/vulkan-layers-1.4.350.0.ebuild
index ed2d4ffe5d63..0fa0a9f0f022 100644
--- a/media-libs/vulkan-layers/vulkan-layers-1.4.350.0.ebuild
+++ b/media-libs/vulkan-layers/vulkan-layers-1.4.350.0.ebuild
@@ -13,7 +13,7 @@ if [[ ${PV} == *9999* ]]; then
inherit git-r3
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
+ KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv x86"
S="${WORKDIR}"/${MY_PN}-vulkan-sdk-${PV}
fi
diff --git a/media-libs/vulkan-loader/vulkan-loader-1.4.350.0.ebuild b/media-libs/vulkan-loader/vulkan-loader-1.4.350.0.ebuild
index 0aeafc24a9ac..c8f379019eaa 100644
--- a/media-libs/vulkan-loader/vulkan-loader-1.4.350.0.ebuild
+++ b/media-libs/vulkan-loader/vulkan-loader-1.4.350.0.ebuild
@@ -12,7 +12,7 @@ if [[ ${PV} == *9999* ]]; then
inherit git-r3
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
+ KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv x86"
S="${WORKDIR}"/${MY_PN}-vulkan-sdk-${PV}
fi
diff --git a/media-libs/zint/zint-2.16.0.ebuild b/media-libs/zint/zint-2.16.0.ebuild
index 253f92d52cdf..2d17257fab29 100644
--- a/media-libs/zint/zint-2.16.0.ebuild
+++ b/media-libs/zint/zint-2.16.0.ebuild
@@ -15,7 +15,7 @@ S="${WORKDIR}/${P}-src"
# see LICENSE
LICENSE="BSD GPL-3+"
SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="amd64 ~riscv"
+KEYWORDS="amd64 ~arm ~riscv ~x86"
IUSE="gui png test"
RESTRICT="!test? ( test )"
diff --git a/media-tv/mythtv/Manifest b/media-tv/mythtv/Manifest
index 637ddee549e9..7550ed72bac5 100644
--- a/media-tv/mythtv/Manifest
+++ b/media-tv/mythtv/Manifest
@@ -1 +1,2 @@
DIST mythtv-35.0_p20251230.tar.gz 120232263 BLAKE2B ce6e9ce3cfbcb18f38e45708e8d9d434c352bbf3f7987e55c047214af10db9090593d374ee2d7fa3f4afc8567c715dadbd6c7fd41f448e605fcb8f527dc9591a SHA512 a8bcf4667f8a190f19a9fe22a10cc37a93e23704bcf19c7b3cdb156cc86890fce225e4118c5bcb2810a29306c34215dd8fe18ad69c310770963c79d7a51afeec
+DIST mythtv-36.0_p20260819.tar.gz 114288232 BLAKE2B 5554f2e731078f10cfdcbf5e6cb9785c753c30aada102d28381f0ab2bc3d4795d909d46948240a8628275989f5dabfeafb8c8142f29d48adfa50229388334331 SHA512 14bd086a37d3795738e7e8842d54c9497682c307c0b4340734f56f0628e43ae0bf7707660bdf4ac0fa272e0db15dee7650a3f0e10182f2c5ea7151aae809662e
diff --git a/media-tv/mythtv/mythtv-36.0_p20260819.ebuild b/media-tv/mythtv/mythtv-36.0_p20260819.ebuild
new file mode 100644
index 000000000000..e7c37776bc20
--- /dev/null
+++ b/media-tv/mythtv/mythtv-36.0_p20260819.ebuild
@@ -0,0 +1,390 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISABLE_AUTOFORMATTING="yes"
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit edo flag-o-matic python-any-r1
+inherit qmake-utils readme.gentoo-r1 systemd toolchain-funcs user-info
+
+DESCRIPTION="Open Source DVR and media center hub"
+HOMEPAGE="https://www.mythtv.org https://github.com/MythTV/mythtv"
+if [[ ${PV} == *_p* ]] ; then
+ # https://github.com/MythTV/mythtv/tree/fixes/36
+ MY_COMMIT="b6ed364d3fb3ed4aea468c60d1eee0d86404c72c"
+ SRC_URI="https://github.com/MythTV/mythtv/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz"
+ # mythtv and mythplugins are separate builds in the github MythTV project
+ S="${WORKDIR}/mythtv-${MY_COMMIT}/mythtv"
+else
+ SRC_URI="https://github.com/MythTV/mythtv/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ # mythtv and mythplugins are separate builds in the github mythtv project
+ S="${WORKDIR}/${P}/mythtv"
+fi
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE_INPUT_DEVICES="input_devices_joystick"
+IUSE_VIDEO_CAPTURE_DEVICES="v4l ieee1394 hdhomerun vbox ceton"
+IUSE="alsa asi autostart cdda cdr cec cpu_flags_ppc_altivec debug dvd dvb exif jack java"
+IUSE+=" +lame lcd libass lirc nvdec +opengl oss perl pulseaudio python raw systemd vaapi vdpau vpx"
+IUSE+=" +wrapper x264 x265 +xml xmltv +xvid +X zeroconf"
+IUSE+=" ${IUSE_INPUT_DEVICES} ${IUSE_VIDEO_CAPTURE_DEVICES}"
+REQUIRED_USE="
+ cdr? ( cdda )
+"
+
+RDEPEND="
+ acct-user/mythtv
+ dev-libs/glib:2
+ dev-libs/lzo:2
+ dev-libs/libzip:=
+ dev-qt/qtbase:6[dbus,gui,mysql,network,sql,xml,widgets]
+ media-fonts/corefonts
+ media-fonts/dejavu
+ media-fonts/liberation-fonts
+ media-fonts/tex-gyre
+ media-gfx/exiv2:=
+ media-libs/freetype:2
+ media-libs/libbluray:=[java?]
+ media-libs/libsamplerate
+ media-libs/libsoundtouch:=
+ media-libs/taglib:=
+ virtual/zlib:=
+ alsa? ( media-libs/alsa-lib )
+ autostart? (
+ net-dialup/mingetty
+ x11-apps/xset
+ x11-wm/evilwm
+ )
+ cec? ( dev-libs/libcec )
+ dvd? (
+ dev-libs/libcdio:=
+ media-libs/libdvdcss
+ sys-fs/udisks:2
+ )
+ hdhomerun? ( media-libs/libhdhomerun )
+ ieee1394? (
+ media-libs/libiec61883
+ sys-libs/libavc1394
+ sys-libs/libraw1394
+ )
+ jack? ( virtual/jack )
+ lame? ( media-sound/lame )
+ lcd? ( app-misc/lcdproc )
+ libass? ( media-libs/libass:= )
+ lirc? ( app-misc/lirc )
+ nvdec? ( x11-drivers/nvidia-drivers )
+ opengl? ( dev-qt/qtbase:6[opengl] )
+ pulseaudio? ( media-libs/libpulse )
+ systemd? ( sys-apps/systemd:= )
+ vaapi? ( media-libs/libva:=[X] )
+ vdpau? ( x11-libs/libvdpau )
+ vpx? ( media-libs/libvpx:= )
+ x264? ( media-libs/x264:= )
+ X? (
+ x11-apps/xinit
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXrandr
+ x11-libs/libXv
+ x11-libs/libXxf86vm:=
+ x11-misc/wmctrl:=
+ )
+ x265? ( media-libs/x265 )
+ xml? ( dev-libs/libxml2:2 )
+ xmltv? (
+ dev-perl/XML-LibXML
+ media-tv/xmltv
+ )
+ xvid? ( media-libs/xvid )
+ zeroconf? (
+ dev-libs/openssl:=
+ net-dns/avahi[mdnsresponder-compat]
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ dev-lang/yasm
+ sys-kernel/linux-headers
+ x11-base/xorg-proto
+ perl? (
+ dev-perl/DBD-mysql
+ dev-perl/DBI
+ dev-perl/HTTP-Message
+ dev-perl/IO-Socket-INET6
+ dev-perl/LWP-Protocol-https
+ dev-perl/Net-UPnP
+ dev-perl/XML-Simple
+ )
+"
+BDEPEND="
+ virtual/pkgconfig
+ opengl? ( virtual/opengl )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_any_dep '
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/mysqlclient[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/requests-cache[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ ')
+ )
+"
+
+python_check_deps() {
+ use python || return 0
+ python_has_version "dev-python/python-dateutil[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/lxml[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/mysqlclient[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/requests-cache[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/pip[${PYTHON_USEDEP}]" &&
+ python_has_version "dev-python/wheel[${PYTHON_USEDEP}]"
+}
+
+pkg_pretend() {
+ if use autostart; then
+ local HOME_MYTHTV=$(egethome mythtv)
+ if [[ ! -z "${HOME_MYTHTV}" && ! -d "${HOME_MYTHTV}" ]] ; then
+ eerror "Home path '${HOME_MYTHTV}' for user 'mythtv' exists" \
+ "but is not a directory"
+ die
+ fi
+ fi
+}
+
+pkg_setup() {
+ use python && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # Perl bits need to go into vendor_perl and not site_perl
+ sed -e "s:pure_install:pure_install INSTALLDIRS=vendor:" \
+ -i "${S}"/bindings/perl/Makefile || die "Cannot convert site_perl to vendor_perl!"
+}
+
+src_configure() {
+ use elibc_musl && append-flags -D_LARGEFILE64_SOURCE # 924347
+
+ local -a myconf=()
+
+ # Setup paths
+ myconf+=( --prefix="${EPREFIX}"/usr )
+ myconf+=( --libdir="${EPREFIX}"/usr/$(get_libdir) )
+ myconf+=( --libdir-name=$(get_libdir) )
+ myconf+=( --mandir="${EPREFIX}"/usr/share/man )
+
+ if use debug; then
+ myconf+=( --compile-type=debug )
+ myconf+=( --enable-valgrind ) # disables timeouts for valgrind memory debugging
+ else
+ myconf+=( --compile-type=release )
+ fi
+
+ # Build boosters
+ has ccache "${FEATURES}" || myconf+=( --disable-ccache )
+ has distcc "${FEATURES}" || myconf+=( --disable-distcc )
+
+ # CPU settings
+ # Mythtv's configure is borrowed from ffmpeg,
+ # Bug #172723
+ # Try to get cpu type based on CFLAGS.
+ # We need to do this so that features of that CPU will be better used
+ # If they contain an unknown CPU it will not hurt since ffmpeg's configure
+ # will just ignore it.
+ local i
+ for i in $(get-flag march) $(get-flag mcpu) $(get-flag mtune) ; do
+ [[ "${i}" == "native" ]] && i="host" # bug #273421
+ myconf+=( --cpu="${i}" )
+ break
+ done
+ myconf+=( $(use_enable cpu_flags_ppc_altivec altivec) )
+
+ # Sound Output Support
+ myconf+=(
+ $(use_enable oss audio-oss)
+
+ $(use_enable alsa audio-alsa)
+ $(use_enable jack audio-jack)
+ $(use_enable pulseaudio audio-pulseoutput)
+ )
+
+ # Input Support
+ myconf+=(
+ $(use_enable lirc)
+ $(use_enable input_devices_joystick joystick-menu)
+ $(use_enable cec libcec)
+ $(use_enable ieee1394 firewire)
+ $(use_enable hdhomerun)
+ $(use_enable vbox)
+ $(use_enable ceton)
+ $(use_enable v4l v4l2)
+ $(use_enable dvb)
+ $(use_enable asi)
+ )
+
+ # Video Output Support
+ myconf+=(
+ $(use_enable X x11)
+ )
+
+ # Hardware accelerators
+ myconf+=(
+ $(use_enable nvdec)
+ $(use_enable vaapi)
+ $(use_enable vdpau)
+ $(use_enable opengl)
+ $(use_enable opengl egl)
+ $(use_enable libass)
+ )
+
+ # System tools
+ myconf+=(
+ $(use_enable systemd systemd_notify)
+ $(use_enable systemd systemd_journal)
+ $(use_enable xml libxml2)
+ $(use_enable zeroconf libdns-sd)
+ )
+
+ # Bindings
+ if use perl && use python; then
+ myconf+=( --with-bindings=perl,python )
+ elif use perl; then
+ myconf+=( --without-bindings=python )
+ myconf+=( --with-bindings=perl )
+ elif use python; then
+ myconf+=( --without-bindings=perl )
+ myconf+=( --with-bindings=python )
+ else
+ myconf+=( --without-bindings=perl,python )
+ fi
+ use python && myconf+=( --python="${EPYTHON}" )
+ myconf+=( $(use_enable java bdjava) )
+
+ # External codec library options (used for mythffmpeg and streaming transcode)
+ # lame is required for some broadcasts for silence detection of commercials
+ # default enable in IUSE with +lame
+ myconf+=(
+ $(use_enable lame libmp3lame)
+ $(use_enable xvid libxvid)
+ $(use_enable x264 libx264)
+ $(use_enable x265 libx265)
+ $(use_enable vpx libvpx)
+ )
+
+ # Clean up DSO load times and other compiler bits
+ myconf+=( --enable-symbol-visibility )
+ myconf+=( --enable-pic )
+
+ # libavformat/format.c:37:22: error: type of 'ff_mythtv_mpegtsraw_demuxer' does not match original declaration [-Werror=lto-type-mismatch]
+ # libavformat/mpegts-mythtv.c:3731:21: note: type 'const struct FFInputFormat' should match type 'struct AVInputFormat'
+ filter-lto
+
+ # Needed just like ffmpeg (bug #860987)
+ tc-is-lto && myconf+=( --enable-lto )
+
+ if tc-is-cross-compiler ; then
+ myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) )
+ myconf+=( --cross-prefix="${CHOST}"- )
+ fi
+
+ # econf sets these options that are not handled by configure:
+ # --build --host --infodir --localstatedir --sysconfdir
+
+ edo ./configure \
+ --prefix="${EPREFIX}/usr" \
+ --cc="$(tc-getCC)" \
+ --cxx="$(tc-getCXX)" \
+ --ar="$(tc-getAR)" \
+ --nm="$(tc-getNM)" \
+ --optflags="${CFLAGS}" \
+ --extra-cflags="${CFLAGS}" \
+ --extra-cxxflags="${CXXFLAGS}" \
+ --extra-ldflags="${LDFLAGS}" \
+ --qmake="$(qt6_get_bindir)"/qmake \
+ "${myconf[@]}"
+}
+
+src_compile() {
+ emake V=1
+}
+
+src_install() {
+ emake V=1 STRIP="true" INSTALL_ROOT="${D}" install
+ use python && python_optimize # does all packages by default
+ dodoc AUTHORS README
+ readme.gentoo_create_doc
+
+ insinto /usr/share/mythtv/database
+ doins database/*
+
+ newinitd "${FILESDIR}"/mythbackend.init-r4 mythbackend
+ newconfd "${FILESDIR}"/mythbackend.conf-r1 mythbackend
+ if use systemd; then
+ systemd_newunit "${FILESDIR}"/mythbackend.service-28 mythbackend.service
+ fi
+
+ # The acct-user/mythtv package creates/manages the user 'mythtv'
+ keepdir /etc/mythtv
+ fowners -R mythtv /etc/mythtv
+ keepdir /var/log/mythtv
+ fowners -R mythtv /var/log/mythtv
+
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/mythtv.logrotate.d-r4 mythtv
+
+ insinto /usr/share/mythtv/contrib
+ # Ensure we don't install scripts needing the perl bindings (bug #516968) Finding none is OK.
+ if ! use perl; then
+ find contrib/ -name '*.pl' -exec rm {} \;
+ fi
+ # Ensure we don't install scripts needing the python bindings (bug #516968) Finding none is OK.
+ if ! use python; then
+ find contrib/ -name '*.py' -exec rm {} \;
+ fi
+ doins -r contrib/*
+
+ # Install our mythfrontend wrapper which is similar to Mythbuntu's
+ if use wrapper; then
+ mv "${ED}/usr/bin/mythfrontend" "${ED}/usr/bin/mythfrontend.real" || die "Failed to install mythfrontend.real"
+ newbin "${FILESDIR}"/mythfrontend.wrapper mythfrontend
+ newconfd "${FILESDIR}"/mythfrontend.conf mythfrontend
+ fi
+
+ if use autostart; then
+ newenvd - 95mythtv <<- _EOF_
+ CONFIG_PROTECT=\"$(egethome mythtv)\"
+ _EOF_
+ insinto $(egethome mythtv)
+ newins "${FILESDIR}"/bash_profile .bash_profile
+ newins "${FILESDIR}"/xinitrc-r1 .xinitrc
+ fi
+
+ # Make Python files executable but not files named "__init__.py"
+ find "${ED}/usr/share/mythtv" -type f -name '*.py' -exec expr \( {} : '.*__init__.py' \) = 0 \; \
+ -exec chmod a+x {} \; || die "Failed to make python file $(basename ${file}) executable"
+
+ # Ensure that Python scripts are executed by Python 2
+ use python && python_fix_shebang "${ED}/usr/share/mythtv"
+
+ # Make shell & perl scripts executable
+ find "${ED}" -type f \( -name '*.sh' -o -name '*.pl' \) -exec chmod a+x {} \; \
+ || die "Failed to make script executable"
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+}
+
+pkg_config() {
+ if [[ -e "${EROOT}"/usr/bin/mysql ]]; then
+ "${EROOT}"/usr/bin/mysql -u root -p < "${EROOT}"/usr/share/mythtv/database/mc.sql
+ fi
+}
diff --git a/media-tv/plex-media-server/Manifest b/media-tv/plex-media-server/Manifest
index 1cbbd2bdc547..7d3213294f00 100644
--- a/media-tv/plex-media-server/Manifest
+++ b/media-tv/plex-media-server/Manifest
@@ -1,9 +1,9 @@
-DIST plex-media-server-1.43.3.10896-InRelease 4069 BLAKE2B f2d81da85d5921775cf636a3f391f73c93c4519295470be0b97d9e1fa84716b8f8312eaaed301569119ba18badc2e5fb9bd31e81d27139a6f6108fca9356a784 SHA512 c4138a5d6fad4f6389768f9cfee7d9a232de4eaf3e29c91a98a72d4ccdd1f9a8157c73af96d6b9185fae0b7b1569a61f5b8da1784bfb23935cdecdae88a09f23
-DIST plex-media-server-1.43.3.10896-Packages.amd64 557 BLAKE2B 2917721ef5e142b2b5ba3686eab89371ef745006d9b97b47dca2d1807b5b4658d6655f94d1e462241b2dc415398b25607b9f8e36990a9ef5ea299f180632ee4e SHA512 c88bbfaaea5b5466a1aaa36c9ef9d2337aa2a92d5dd6045010756fd6c69eb29d4049af452d0268fda587a3434d4d4e2469dbb0fc95f56fb4b35fea12d693da47
-DIST plex-media-server-1.43.3.10896-Packages.arm 557 BLAKE2B aa491c82d993d97b578119f9c115bbfb236fe61850537380b1d2a61cbd2047f1e2583471b72aef9827e7128d7aa72888ba5a1f877ede1897206a93bad55541ea SHA512 6609ca7f49fac4508267bde9bddf126fe7a0ddb5f17bea54698bc88a995a28448ce65fb13e324772c56f70323cefb50d9f3b0ebd159c92c4e211b4d5de1e206b
-DIST plex-media-server-1.43.3.10896-Packages.arm64 557 BLAKE2B f218a9a597b58e5bf24ecb0a9289a316162be191b0852cd026420cdffd86f7eb2cc22f496c3c275792a5ca54a525b7d650cff4e7f3b3a31b38b736df7d80b195 SHA512 2d474df8cec1a4ba3cc439d90dd323088becca1ef295a2d7e8dbaa3698ef9f2ee4125d7d8bcd029c14873fbfa2a1d3cdf8164d64522164b2a87a5d82eaa8f047
-DIST plex-media-server-1.43.3.10896-Packages.x86 555 BLAKE2B f33e2340e925e9c83684bfd791cbd8a91e58bdfae067abcaf814d92d21d48e0d6f8bf3e9258e951faf5a45a3cc71bfd6f1332f7167687620282afab59f997119 SHA512 ac778a6942ed2cca16152ba31043c309c5d2b74ac9f46ea065c6d1ac71e3a3e297855169d83a0b36b18253b5110197c8625794c3f7417a7761b7239238bb5a06
-DIST plexmediaserver_1.43.3.10896-cb3ebc72d_amd64.deb 83121058 BLAKE2B d1423c7ed99be12b927167e9032b3cea75f7891139d13640fc0c1f40dd6b5de89756d46591cf89c6f0b55c06d5b102446a07e273f42368afcf97ad502e4478e2 SHA512 197e1a56b60c53a36725d233d2bfbf9e77cdbb90a6a45e4ad6032c947172d1e3459592039e5b1e663d7023fc52f4d817059535231ae4596645ab6a889f0f8e25
-DIST plexmediaserver_1.43.3.10896-cb3ebc72d_arm64.deb 75170990 BLAKE2B e6916344b61a6334764d51948c4b6a782a6f4967ff97ca759108ad0f33be7feeadb7da9e3b576b5e41f1804337914a5974e66302eb74a1fc8da99728a9ec933a SHA512 32e5d3dd2cb1ebbee0fad5cff350417e656de7b9456ffde50e7109b0e0e5da339086d30a5bd59aa0960ca31913d50d89e8bb4716fe4fe662d4edef62218b93d3
-DIST plexmediaserver_1.43.3.10896-cb3ebc72d_armhf.deb 75174814 BLAKE2B 45c1d5c9cc8db9da8132dda01ed603122812411e848f6b102d17d33fdcdf2f27638ebf44c7ed4af40d8448599f64323b575056699109a0082b53e638ef259ebc SHA512 bb77c9836548506803207f7ca297cbe1c11d8047132a9ee47c7c1822aa9606c04604ab3e76f289f76291515122172d82a4be50bd8650da3c38033ebfee3130b9
-DIST plexmediaserver_1.43.3.10896-cb3ebc72d_i386.deb 76222246 BLAKE2B 5538cc67166e5be0f9b52b5c1198e3bcf0c574839fee606c0f8c408dd7ebc2e6f987a8810da73e5ba610925b57fa10d15291949762d805bb9273e79190ab744d SHA512 574393e0b6fe6adca976c8217d9fef60b9a7304d81fd6c5bcc1fba7497ed6bdcdac5316fe8158efb134a96dbdd69533a14064343a09cab2c6ccd842195181b1c
+DIST plex-media-server-1.43.4.10903-InRelease 4069 BLAKE2B e3628046f678936c8ac03093d27ea38235fb7ca95fb9448e52c82c321a888d95cc13692e827eca0caf12f33bfd6a12eed2de6ef0ec9ada398d86f1dc4b585f04 SHA512 10bd2b8aa135205c3dfda23dc411de0fa06df568eaac070c20247517d0e393e8bbefd2b9f2e2a28aea9a5847e36f122139008a0d4d5f0ae843f9f6fbec73ab15
+DIST plex-media-server-1.43.4.10903-Packages.amd64 557 BLAKE2B b66494b47239ad371e062c48dc05db06db27c317db7eeb8342cae806e05886a4d4f81a814d37371edc3d0d5168800ac58a60bcd7473c91f1ae5316b31d3fcc44 SHA512 4635470d679bf64ad738d64d4cd829ef5369479aa1f2fa8d5bba938ef21bb0f5ae1f9e7b00a17dea389d7a528a9f7d0e176212e87c7f909ea9ce9d50f7d7cfcb
+DIST plex-media-server-1.43.4.10903-Packages.arm 557 BLAKE2B e6e138db481c3a4248fba9821d1275e32b85829efaa77674d60b03f183dbf48092c555f1da2ab164f1fd1b8a21327698672fcc07262f4efb5e892016d997508e SHA512 9394ec39c332e48cf9c3338784d1b7804327170448d89b68de9c037f02e0606838236ea9ae8daa6de6a0bf9ae64d6dad7d5b3f1e0ea84d86afa9c904ba909e03
+DIST plex-media-server-1.43.4.10903-Packages.arm64 557 BLAKE2B 0fbb8c2ffbb0471b6efcc72abdb25c973a8cf81f3a0577a0e9e20a88098c2762a5a90b47afea1d58186de61f3190a1da1e1457aef2c7f54bece7ff37aee65c45 SHA512 966d3e38168c55f5ec22bbf4151e84a4b99888da2dbb51e85684161fe02c409a176ba246e0171ff06de586cb426e4460399db9b359b670491c815bf2bae1a4d3
+DIST plex-media-server-1.43.4.10903-Packages.x86 555 BLAKE2B f1bc5a04138a0f98dfbe91448bbc585eff115f36eb4ed2675a4133812cd01f50edc6b4fe19034df8798889e3a706d8c11ae4f5e2767c8640214ced4e41450625 SHA512 e2e9b8fc2581c84cfc9f5d4bc7066c6de2cd4cfaa9e12530ed5fcbdfde4786071c322c46aac6546d392c8e705afc2db51ede0d0509e53d7b93902c7992f2922b
+DIST plexmediaserver_1.43.4.10903-e5521bd8c_amd64.deb 83213458 BLAKE2B 78c1c8f52b6dfbbc5b0833ce4a5d641b572625d76a5ee797869a34bafdbb98fa720c581aa7aaf899ca6c7e154f7b18eb7ee15c7be05bf7c9ba30cf456f23ba22 SHA512 4fe7033bf7967be0c7e54674815f4119e8e51550c33b79aa633cd2ee00cb0ebdc08a61172e7c207682c19696efbe6578d938ba751fc3719ae17f53ae26392cfd
+DIST plexmediaserver_1.43.4.10903-e5521bd8c_arm64.deb 75287770 BLAKE2B 8a39d8520cb5a1b941ad871881479334f766f5d465d608f6d1be22082549fcde636e46bc2356104ef15b1e0878db91dd4c2e9afbce6c8b4ea5c4787461358fdf SHA512 94be46575eef01653f6c68875deceafca34b739116e8553f99719cc5de9f950968128ffcebbcaeedef2b0df53157fae09fdc411f8bdc76c72cef967e4042fe48
+DIST plexmediaserver_1.43.4.10903-e5521bd8c_armhf.deb 75257578 BLAKE2B 83544d1ac313a7cd5368e42c2d6226d51963a89a8fe74de19c00db9a3d9486e1ee1dee1bdc64052d1b6a3d8da17ad69331b4f67aec28565f773f9b47ffd5fe0b SHA512 b602ba8eba4d309262fb916527e02409ac6c285a8ca3ad659ef3b335acfa092099430569fcc477fc7b032307e0d2d0326e8cb244f5391b8285ff5ed52b16c491
+DIST plexmediaserver_1.43.4.10903-e5521bd8c_i386.deb 76290922 BLAKE2B 338dbef21440fa1ff8b7d519378463a79056ba5b10605de20e0cde3b99816d66efdfe92d70520769780fcbc671c3e6d3043beeb9992e1e52aab54a3e3ca7f036 SHA512 0d5019f48f137b6a9059cb3a11921b83f61a6729c66cee16687daacb7526c6988cd0cc92e8c31209f3d05bf01e627a221d11c49da71de7938c6ed67f506b8ae7
diff --git a/media-tv/plex-media-server/plex-media-server-1.43.3.10896.ebuild b/media-tv/plex-media-server/plex-media-server-1.43.4.10903.ebuild
index 0a6ed0da015e..49c99bb5b1fc 100644
--- a/media-tv/plex-media-server/plex-media-server-1.43.3.10896.ebuild
+++ b/media-tv/plex-media-server/plex-media-server-1.43.4.10903.ebuild
@@ -7,7 +7,7 @@ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/plexmediaserver.asc
inherit eapi9-pipestatus readme.gentoo-r1 systemd unpacker pax-utils verify-sig
-MY_PV="${PV}-cb3ebc72d"
+MY_PV="${PV}-e5521bd8c"
MY_URI="https://downloads.plex.tv/plex-media-server-new"
DESCRIPTION="Free media library that is intended for use with a plex client"
diff --git a/media-video/mediainfo/Manifest b/media-video/mediainfo/Manifest
index 778bc6116090..e9f4d08b52dd 100644
--- a/media-video/mediainfo/Manifest
+++ b/media-video/mediainfo/Manifest
@@ -1 +1,2 @@
DIST mediainfo_24.11.tar.xz 2432936 BLAKE2B 6aa1ecc565db72ab1ad90189dad4d2cd492b5d80eef530ada7ca850755e32e57e3b7e0355c2509876d96dffc259b5489d54b95f13680b68d22b2ef62edb41dd6 SHA512 e8abcbfdd1b5a6369c528240cd642366fe4fb308a179bc38d13e690b7024145546689c829c4a94f6d3c75f7db4df903685472134fb6f250e35290ed3d7408039
+DIST mediainfo_26.05.tar.xz 16146132 BLAKE2B 64c7c841e513881af2e3466bc631886fcce07e1210c20dc51b29b8f7ea95d78270d113d034c9dd64fd08644a7986bfd6c80b33932579a2818d4de51b5ee2669e SHA512 219ca43d78dc84c4f66f9a5140705470a2555d879de26857e96080e47120b156ca56f1b22de6459fe0ea74d4a8b2ae75c9ffc8e55501f8982e7d5b41de0ee75c
diff --git a/media-video/mediainfo/mediainfo-26.05.ebuild b/media-video/mediainfo/mediainfo-26.05.ebuild
new file mode 100644
index 000000000000..47b4141db5a8
--- /dev/null
+++ b/media-video/mediainfo/mediainfo-26.05.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# These must be bumped together:
+# - media-libs/libzen (if a release is available)
+# - media-libs/libmediainfo
+# - media-video/mediainfo
+
+WX_GTK_VER="3.2-gtk3"
+inherit xdg-utils autotools wxwidgets
+
+DESCRIPTION="MediaInfo supplies technical and tag information about media files"
+HOMEPAGE="https://mediaarea.net/en/mediainfo/ https://github.com/MediaArea/MediaInfo"
+SRC_URI="https://mediaarea.net/download/source/${PN}/${PV}/${P/-/_}.tar.xz"
+S="${WORKDIR}/MediaInfo"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="curl mms wxwidgets"
+
+# The libzen dep usually needs to be bumped for each release!
+RDEPEND="
+ ~media-libs/libmediainfo-${PV}[curl=,mms=]
+ >=media-libs/libzen-0.4.41
+ virtual/zlib:=
+ wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER}=[X] )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+pkg_setup() {
+ TARGETS="CLI"
+
+ if use wxwidgets; then
+ TARGETS+=" GUI"
+ setup-wxwidgets
+ fi
+}
+
+src_prepare() {
+ default
+
+ local target
+ for target in ${TARGETS}; do
+ cd "${S}"/Project/GNU/${target} || die
+ sed -i -e "s:-O2::" configure.ac || die
+ eautoreconf
+ done
+}
+
+src_configure() {
+ local target
+
+ for target in ${TARGETS}; do
+ cd "${S}"/Project/GNU/${target} || die
+ local args=""
+ [[ ${target} == "GUI" ]] && args="--with-wxwidgets --with-wx-gui"
+ econf ${args}
+ done
+}
+
+src_compile() {
+ local target
+
+ for target in ${TARGETS}; do
+ cd "${S}"/Project/GNU/${target} || die
+ default
+ done
+}
+
+src_install() {
+ local target
+
+ for target in ${TARGETS}; do
+ cd "${S}"/Project/GNU/${target} || die
+ default
+ dodoc "${S}"/History_${target}.txt
+ done
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+}
diff --git a/net-dialup/freeradius/Manifest b/net-dialup/freeradius/Manifest
index adb9914eef85..696183cf3410 100644
--- a/net-dialup/freeradius/Manifest
+++ b/net-dialup/freeradius/Manifest
@@ -1,3 +1,2 @@
DIST freeradius-server-3.2.10.tar.bz2 3727834 BLAKE2B 2e4b88f13c5742e60fd5b2931e93cb861b8fd0b9b12ba340a08f185884b64e49f035e14387a19b9ae4ae7c71ec9249132c0ccf19febfcdefd4725ddef0877a77 SHA512 c1928f6123848549797b7f527841b0bfcd61f2da02ddfe6c1cb49dd36af2da05c06c8f33c95330ad43f0326e3d1c893e3dff1797f499eac452bb5ef1ada00b16
-DIST freeradius-server-3.2.6.tar.bz2 3500878 BLAKE2B 0af7cdf7fb784f2d5019f3bcb06d1d44dca046c9a4513d780ab032367001b6a67e9ea17a3a5b4609b9d7b936647e60c96e35188ba9644c4360071ac8d021bd58 SHA512 3fdd0c1bf82cf7ea2e9ee46cda1061ef06c97eddd70b75be17f05d9dc13771b339d01f140b4288632700d6315c1ac506d225d1e83a179b6f7e8338e2ae42d7e8
DIST freeradius-server-3.2.8.tar.bz2 3671952 BLAKE2B 6266c00c68cbb02de65f88d976453fdcdda552d7554199030640f9bcd60f208afaf75aaac8fbf0a2eea0022eb23ad7b809cb910d48618261ea9f52100732c469 SHA512 31db199c3847bfdb80b726e16cece0d660bd741fae0fca8ba96aaaee30972c657438c4e1fdaa7ef070f84d8b7889a8da8db1defc542b0c0e18f247156f17e0ae
diff --git a/net-dialup/freeradius/files/freeradius-3.0.20-systemd-service.patch b/net-dialup/freeradius/files/freeradius-3.0.20-systemd-service.patch
deleted file mode 100644
index 04223657d5f5..000000000000
--- a/net-dialup/freeradius/files/freeradius-3.0.20-systemd-service.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff --git a/debian/freeradius.service b/debian/freeradius.service
-index 378702d184..ee33c2a294 100644
---- a/debian/freeradius.service
-+++ b/debian/freeradius.service
-@@ -7,7 +7,6 @@ Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ htt
- Type=notify
- WatchdogSec=60
- NotifyAccess=all
--EnvironmentFile=-/etc/default/freeradius
-
- # FreeRADIUS can do static evaluation of policy language rules based
- # on environmental variables which is very useful for doing per-host
-@@ -25,16 +24,15 @@ MemoryLimit=2G
- # Ensure the daemon can still write its pidfile after it drops
- # privileges. Combination of options that work on a variety of
- # systems. Test very carefully if you alter these lines.
--RuntimeDirectory=freeradius
-+RuntimeDirectory=radiusd
- RuntimeDirectoryMode=0775
- # This does not work on Debian Jessie:
--User=freerad
--Group=freerad
--# This does not work on Ubuntu Bionic:
--ExecStartPre=/bin/chown freerad:freerad /var/run/freeradius
-+User=radius
-+Group=radius
-
--ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS -Cx -lstdout
--ExecStart=/usr/sbin/freeradius -f $FREERADIUS_OPTIONS
-+ExecStartPre=/usr/sbin/radiusd $RADIUSD_OPTIONS -Cx -lstdout
-+ExecStart=/usr/sbin/radiusd -f $RADIUSD_OPTIONS
-+ExecReload=/bin/kill -HUP $MAINPID
- Restart=on-failure
- RestartSec=5
-
-@@ -42,7 +40,7 @@ RestartSec=5
- NoNewPrivileges=true
-
- # Allow binding to secure ports, broadcast addresses, and raw interfaces.
--#CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SETUID CAP_SETGID CAP_CHOWN CAP_DAC_OVERRIDE
-+CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SETUID CAP_SETGID CAP_CHOWN CAP_DAC_OVERRIDE
-
- # Private /tmp that isn't shared by other processes
- PrivateTmp=true
-@@ -60,10 +58,10 @@ ProtectKernelTunables=true
- SystemCallArchitectures=native
-
- # We shouldn't be writing to the configuration directory
--ReadOnlyDirectories=/etc/freeradius/
-+ReadOnlyDirectories=/etc/raddb/
-
- # We can read and write to the log directory.
--ReadWriteDirectories=/var/log/freeradius/
-+ReadWriteDirectories=/var/log/radius/
-
- [Install]
- WantedBy=multi-user.target
diff --git a/net-dialup/freeradius/freeradius-3.2.6-r1.ebuild b/net-dialup/freeradius/freeradius-3.2.6-r1.ebuild
deleted file mode 100644
index 479d742282ba..000000000000
--- a/net-dialup/freeradius/freeradius-3.2.6-r1.ebuild
+++ /dev/null
@@ -1,323 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-AUTOTOOLS_DEPEND=">=dev-build/autoconf-2.69"
-inherit autotools pam python-single-r1 systemd
-
-MY_PN=${PN}-server
-MY_P=${MY_PN}-${PV}
-MY_PV=$(ver_rs 1- "_")
-
-DESCRIPTION="Highly configurable free RADIUS server"
-HOMEPAGE="https://www.freeradius.org/"
-SRC_URI="https://github.com/FreeRADIUS/freeradius-server/releases/download/release_${MY_PV}/${MY_P}.tar.bz2"
-S="${WORKDIR}"/${MY_P}
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~sparc x86"
-
-IUSE="
- debug iodbc kerberos ldap memcached mysql mongodb odbc oracle pam
- postgres python readline redis samba selinux sqlite ssl systemd
-"
-
-# NOTE: Temporary freeradius doesn't support linking with mariadb client
-# libs also if code is compliant, will be available in the next release.
-# (http://lists.freeradius.org/pipermail/freeradius-devel/2018-October/013228.html)a
-
-# TODO: rlm_mschap works with both samba library or without. I need to avoid
-# linking of samba library if -samba is used.
-
-# TODO: unconditional json-c for now as automagic dep despite efforts to stop it
-# ditto libpcap. Can restore USE=rest, USE=pcap if/when fixed.
-
-DEPEND="
- acct-group/radius
- acct-user/radius
- dev-libs/libltdl
- dev-libs/libpcre
- dev-libs/json-c:=
- dev-lang/perl:=
- net-libs/libpcap
- net-misc/curl
- sys-libs/gdbm:=
- sys-libs/libcap
- sys-libs/talloc
- virtual/libcrypt:=
- iodbc? ( dev-db/libiodbc )
- kerberos? ( virtual/krb5 )
- ldap? ( net-nds/openldap:= )
- memcached? (
- || (
- dev-libs/libmemcached-awesome
- dev-libs/libmemcached
- )
- )
- mysql? ( dev-db/mysql-connector-c:= )
- mongodb? ( >=dev-libs/mongo-c-driver-1.13.0-r1 )
- odbc? ( dev-db/unixODBC )
- oracle? ( dev-db/oracle-instantclient[sdk] )
- pam? ( sys-libs/pam )
- postgres? ( dev-db/postgresql:= )
- python? ( ${PYTHON_DEPS} )
- readline? ( sys-libs/readline:= )
- redis? ( dev-libs/hiredis:= )
- samba? ( net-fs/samba )
- sqlite? ( dev-db/sqlite:3 )
- ssl? ( >=dev-libs/openssl-1.0.2:=[-bindist(-)] )
- systemd? ( sys-apps/systemd:= )
-"
-RDEPEND="
- ${DEPEND}
- selinux? ( sec-policy/selinux-radius )
-"
-
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-# bug #721040
-QA_SONAME="usr/lib.*/libfreeradius-.*.so"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
- # Not available on Linux (bug #900048)
- htonll
- htonlll
-)
-
-PATCHES=(
- "${FILESDIR}"/${PN}-3.0.20-systemd-service.patch
- "${FILESDIR}"/${PN}-3.2.3-configure-c99.patch
-)
-
-pkg_setup() {
- if use python ; then
- python-single-r1_pkg_setup
- export PYTHONBIN="${EPYTHON}"
- fi
-}
-
-src_prepare() {
- default
-
- # Most of the configuration options do not appear as ./configure
- # switches. Instead it identifies the directories that are available
- # and run through them. These might check for the presence of
- # various libraries, in which case they are not built. To avoid
- # automagic dependencies, we just remove all the modules that we're
- # not interested in using.
- # TODO: shift more of these into configure args below as things
- # are a bit better now.
- use ssl || { rm -r src/modules/rlm_eap/types/rlm_eap_{tls,ttls,peap} || die ; }
- use ldap || { rm -r src/modules/rlm_ldap || die ; }
- use kerberos || { rm -r src/modules/rlm_krb5 || die ; }
- use memcached || { rm -r src/modules/rlm_cache/drivers/rlm_cache_memcached || die ; }
- use pam || { rm -r src/modules/rlm_pam || die ; }
-
- # Drop support for python2
- rm -r src/modules/rlm_python || die
-
- use python || { rm -r src/modules/rlm_python3 || die ; }
- #use rest || { rm -r src/modules/rlm_rest || die ; }
- # Do not install ruby rlm module, bug #483108
- rm -r src/modules/rlm_ruby || die
-
- # These are all things we don't have in portage/I don't want to deal
- # with myself.
- #
- # Requires TNCS library
- rm -r src/modules/rlm_eap/types/rlm_eap_tnc || die
- # Requires libeap-ikev2
- rm -r src/modules/rlm_eap/types/rlm_eap_ikev2 || die
- # Requires some membership.h
- rm -r src/modules/rlm_opendirectory || die
- # Requires firebird
- rm -r ./src/modules/rlm_sql/drivers/rlm_sql_firebird || die
- # ?
- rm -r src/modules/rlm_sql/drivers/rlm_sql_{db2,freetds} || die
-
- # SQL drivers that are not part of experimental are loaded from a
- # file, so we have to remove them from the file itself when we
- # remove them.
- usesqldriver() {
- local flag=$1
- local driver=rlm_sql_${2:-${flag}}
-
- if ! use ${flag} ; then
- rm -r src/modules/rlm_sql/drivers/${driver} || die
- sed -i -e /${driver}/d src/modules/rlm_sql/stable || die
- fi
- }
-
- sed -i \
- -e 's:^#\tuser = :\tuser = :g' \
- -e 's:^#\tgroup = :\tgroup = :g' \
- -e 's:/var/run/radiusd:/run/radiusd:g' \
- -e '/^run_dir/s:${localstatedir}::g' \
- raddb/radiusd.conf.in || die
-
- # - Verbosity
- # - B uild shared libraries using jlibtool -shared
- sed -i \
- -e 's|--silent ||g' \
- -e 's:--mode=\(compile\|link\):& -shared:g' \
- scripts/libtool.mk || die
-
- # Crude measure to stop jlibtool from running ranlib and ar
- sed -i \
- -e '/LIBRARIAN/s|".*"|"true"|g' \
- -e '/RANLIB/s|".*"|"true"|g' \
- scripts/jlibtool.c || die
-
- usesqldriver mysql
- usesqldriver postgres postgresql
- usesqldriver iodbc
- usesqldriver odbc unixodbc
- usesqldriver oracle
- usesqldriver sqlite
- usesqldriver mongodb mongo
-
- eautoreconf
-}
-
-src_configure() {
- # Do not try to enable static with static-libs; upstream is a
- # massacre of libtool best practices so you also have to make sure
- # to --enable-shared explicitly.
- local myeconfargs=(
- # Revisit confcache when not needing to use ac_cv anymore
- # for automagic deps.
- #--cache-file="${S}"/config.cache
-
- --enable-shared
- --disable-ltdl-install
- --disable-silent-rules
- --with-system-libtool
- --with-system-libltdl
-
- --enable-strict-dependencies
- --without-rlm_couchbase
- --without-rlm_securid
- --without-rlm_unbound
- --without-rlm_idn
- #--without-rlm_json
- #$(use_with rest libfreeradius-json)
-
- # Our OpenSSL should be patched. Avoid false-positive failures.
- --disable-openssl-version-check
- --with-ascend-binary
- --with-udpfromto
- --with-dhcp
- --with-pcre
- --with-iodbc-include-dir=/usr/include/iodbc
- --with-experimental-modules
- --with-docdir=/usr/share/doc/${PF}
- --with-logdir=/var/log/radius
-
- $(use_enable debug developer)
- $(use_with ldap edir)
- $(use_with redis rlm_cache_redis)
- $(use_with redis rlm_redis)
- $(use_with redis rlm_rediswho)
- $(use_with ssl openssl)
- $(use_with systemd systemd)
- )
-
- # bug #77613
- if has_version app-crypt/heimdal ; then
- myeconfargs+=( --enable-heimdal-krb5 )
- fi
-
- if use python ; then
- myeconfargs+=(
- --with-rlm-python3-bin=${EPYTHON}
- --with-rlm-python3-config-bin=${EPYTHON}-config
- )
- fi
-
- if ! use readline ; then
- export ac_cv_lib_readline=no
- fi
-
- #if ! use pcap ; then
- # export ac_cv_lib_pcap_pcap_open_live=no
- # export ac_cv_header_pcap_h=no
- #fi
-
- econf "${myeconfargs[@]}"
-}
-
-src_compile() {
- # Verbose, do not generate certificates
- emake \
- Q='' ECHO=true \
- LOCAL_CERT_PRODUCTS=''
-}
-
-src_install() {
- dodir /etc
-
- diropts -m0750 -o root -g radius
- dodir /etc/raddb
-
- diropts -m0750 -o radius -g radius
- dodir /var/log/radius
-
- keepdir /var/log/radius/radacct
- diropts
-
- # - Verbose, do not install certificates
- # - Parallel install fails (bug #509498)
- emake -j1 \
- Q='' ECHO=true \
- LOCAL_CERT_PRODUCTS='' \
- R="${D}" \
- install
-
- if use pam ; then
- pamd_mimic_system radiusd auth account password session
- fi
-
- # bug #711756
- fowners -R radius:radius /etc/raddb
- fowners -R radius:radius /var/log/radius
-
- dodoc CREDITS
-
- rm "${ED}"/usr/sbin/rc.radiusd || die
-
- newinitd "${FILESDIR}"/radius.init-r4 radiusd
- newconfd "${FILESDIR}"/radius.conf-r6 radiusd
-
- if ! use systemd ; then
- # If systemd builtin is not enabled we need use Type=Simple
- # as systemd .service
- sed -i -e 's:^Type=.*::g' \
- -e 's:^WatchdogSec=.*::g' -e 's:^NotifyAccess=all.*::g' \
- "${S}"/debian/freeradius.service
- fi
-
- systemd_dounit "${S}"/debian/freeradius.service
-
- find "${ED}" \( -name "*.a" -o -name "*.la" \) -delete || die
-}
-
-pkg_config() {
- if use ssl ; then
- cd "${ROOT}"/etc/raddb/certs || die
-
- ./bootstrap || die "Error while running ./bootstrap script."
- chown root:radius "${ROOT}"/etc/raddb/certs || die
- chown root:radius "${ROOT}"/etc/raddb/certs/ca.pem || die
- chown root:radius "${ROOT}"/etc/raddb/certs/server.{key,crt,pem} || die
- fi
-}
-
-pkg_preinst() {
- if ! has_version ${CATEGORY}/${PN} && use ssl ; then
- elog "You have to run \`emerge --config =${CATEGORY}/${PF}\` to be able"
- elog "to start the radiusd service."
- fi
-}
diff --git a/net-dialup/ppp/Manifest b/net-dialup/ppp/Manifest
index ffd8a1d23cf6..f63ab207706d 100644
--- a/net-dialup/ppp/Manifest
+++ b/net-dialup/ppp/Manifest
@@ -1,3 +1 @@
-DIST ppp-2.5.2.tar.gz 973132 BLAKE2B 5a79bfaf23c2f1cba7b2c4e8f27e6033aa7ee6e119b4d96dfd2870f91524052fe9ed16149e5f76cf93370159f491af828b4103eb04bd4f5dbbecca4a08af9d0d SHA512 2c49d411818632a750f52b187c0ee421e9fcc1530c717abacce61e76aa8b296ce09fb142bc202696c0e0ac5570dd12ee649267921b756b6572ae514ce961d1e6
-DIST ppp-2.5.3.tar.gz 995939 BLAKE2B fe915978f1332c18dc370b5d79d07c55afd006d576168c16034ac368afe138d3e0a41d7a9a05fdc2868b1e30bbd0510aadbf7e9a595c77cacaeb739c9289051c SHA512 4de2af44d56d8629db37a7aa71ea1973020bacd4fe6b8e56b69b4b825445437cf9d5e2caee13e0af09d26b89954a8e08560581f3c5611edb119ea63fc10d2255
DIST ppp-2.5.4.tar.gz 1013028 BLAKE2B 4b70250f73811a343c87087cac7555f6d7b550c5bce6bf71af7fa585f12437c62d2525f669f6e3306e02adc9f180c0508554e4f04abec4227ff7d181e39f0618 SHA512 078075fc4f9fab07d44fab626d87def8f73c76a50d2bd52e7f84ad874a4bf6e9530d5f59fc77a20857f0049f58f84c3f6af0a17ccc60e0ffe6a34ddaf90159f4
diff --git a/net-dialup/ppp/files/pppd.tmpfiles b/net-dialup/ppp/files/pppd.tmpfiles
deleted file mode 100644
index 81b402e77055..000000000000
--- a/net-dialup/ppp/files/pppd.tmpfiles
+++ /dev/null
@@ -1,2 +0,0 @@
-d /run/pppd
-L /run/pppd/lock - - - - ../lock
diff --git a/net-dialup/ppp/ppp-2.5.2.ebuild b/net-dialup/ppp/ppp-2.5.2.ebuild
deleted file mode 100644
index 4c2efbb1c352..000000000000
--- a/net-dialup/ppp/ppp-2.5.2.ebuild
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit flag-o-matic linux-info pam tmpfiles
-
-DESCRIPTION="Point-to-Point Protocol (PPP)"
-HOMEPAGE="https://ppp.samba.org/"
-SRC_URI="https://download.samba.org/pub/ppp/${P}.tar.gz"
-
-LICENSE="BSD GPL-2"
-SLOT="0/${PV}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="activefilter atm pam selinux systemd"
-
-DEPEND="
- dev-libs/openssl:0=
- virtual/libcrypt:=
- activefilter? ( net-libs/libpcap )
- atm? ( net-dialup/linux-atm )
- pam? ( sys-libs/pam )
- systemd? ( sys-apps/systemd )
-"
-RDEPEND="
- ${DEPEND}
- selinux? ( sec-policy/selinux-ppp )
-"
-BDEPEND="virtual/pkgconfig"
-PDEPEND="net-dialup/ppp-scripts"
-
-pkg_setup() {
- local CONFIG_CHECK="~PPP ~PPP_ASYNC ~PPP_SYNC_TTY"
- local ERROR_PPP="CONFIG_PPP:\t missing PPP support (REQUIRED)"
- local ERROR_PPP_ASYNC="CONFIG_PPP_ASYNC:\t missing asynchronous serial line discipline"
- ERROR_PPP_ASYNC+=" (optional, but highly recommended)"
- local WARNING_PPP_SYNC_TTY="CONFIG_PPP_SYNC_TTY:\t missing synchronous serial line discipline"
- WARNING_PPP_SYNC_TTY+=" (optional; used by 'sync' pppd option)"
- if use activefilter ; then
- CONFIG_CHECK+=" ~PPP_FILTER"
- local ERROR_PPP_FILTER="CONFIG_PPP_FILTER:\t missing PPP filtering support (REQUIRED)"
- fi
- CONFIG_CHECK+=" ~PPP_DEFLATE ~PPP_BSDCOMP ~PPP_MPPE"
- local ERROR_PPP_DEFLATE="CONFIG_PPP_DEFLATE:\t missing Deflate compression (optional, but highly recommended)"
- local ERROR_PPP_BSDCOMP="CONFIG_PPP_BSDCOMP:\t missing BSD-Compress compression (optional, but highly recommended)"
- local WARNING_PPP_MPPE="CONFIG_PPP_MPPE:\t missing MPPE encryption (optional, mostly used by PPTP links)"
- CONFIG_CHECK+=" ~PPPOE ~PACKET"
- local WARNING_PPPOE="CONFIG_PPPOE:\t missing PPPoE support (optional, needed by pppoe plugin)"
- local WARNING_PACKET="CONFIG_PACKET:\t missing AF_PACKET support (optional, used by pppoe plugin)"
- if use atm ; then
- CONFIG_CHECK+=" ~PPPOATM"
- local WARNING_PPPOATM="CONFIG_PPPOATM:\t missing PPPoA support (optional, needed by pppoatm plugin)"
- fi
-
- linux-info_pkg_setup
-}
-
-src_prepare() {
- default
-
- # Set the right paths in radiusclient.conf
- sed -e "s:/usr/local/etc:/etc:" \
- -e "s:/usr/local/sbin:/usr/sbin:" \
- -i pppd/plugins/radius/etc/radiusclient.conf || die
- # Set config dir to /etc/ppp/radius
- sed -i -e "s:/etc/radiusclient:/etc/ppp/radius:g" \
- pppd/plugins/radius/{*.8,*.c,*.h} \
- pppd/plugins/radius/etc/* || die
-}
-
-src_configure() {
- # https://bugs.gentoo.org/943931
- append-cflags -std=gnu17
-
- local args=(
- --localstatedir="${EPREFIX}"/var
- --runstatedir="${EPREFIX}"/run
- $(use_enable systemd)
- $(use_with atm)
- $(use_with pam)
- $(use_with activefilter pcap)
- --enable-cbcp
- --enable-multilink
- )
- econf "${args[@]}"
-}
-
-src_install() {
- default
-
- find "${ED}" -name '*.la' -type f -delete || die
-
- if use pam; then
- pamd_mimic_system ppp auth account session
- fi
-
- insinto /etc/modprobe.d
- newins "${FILESDIR}/modules.ppp" ppp.conf
-
- dosbin scripts/p{on,off,log}
- doman scripts/pon.1
- dosym pon.1 /usr/share/man/man1/poff.1
- dosym pon.1 /usr/share/man/man1/plog.1
-
- # Adding misc. specialized scripts to doc dir
- dodoc -r scripts
-
- newtmpfiles "${FILESDIR}/pppd.tmpfiles-r1" pppd.conf
-
- insinto /etc/ppp/radius
- doins pppd/plugins/radius/etc/{dictionary*,issue,port-id-map,radiusclient.conf,realms,servers}
-}
-
-pkg_postinst() {
- tmpfiles_process pppd.conf
-}
diff --git a/net-dialup/ppp/ppp-2.5.3.ebuild b/net-dialup/ppp/ppp-2.5.3.ebuild
deleted file mode 100644
index a84813f4a114..000000000000
--- a/net-dialup/ppp/ppp-2.5.3.ebuild
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit flag-o-matic linux-info pam tmpfiles
-
-DESCRIPTION="Point-to-Point Protocol (PPP)"
-HOMEPAGE="https://ppp.samba.org/"
-SRC_URI="https://download.samba.org/pub/ppp/${P}.tar.gz"
-
-LICENSE="BSD GPL-2"
-SLOT="0/${PV}"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="activefilter atm pam selinux systemd"
-
-DEPEND="
- dev-libs/openssl:0=
- virtual/libcrypt:=
- activefilter? ( net-libs/libpcap )
- atm? ( net-dialup/linux-atm )
- pam? ( sys-libs/pam )
- systemd? ( sys-apps/systemd )
-"
-RDEPEND="
- ${DEPEND}
- selinux? ( sec-policy/selinux-ppp )
-"
-BDEPEND="virtual/pkgconfig"
-PDEPEND="net-dialup/ppp-scripts"
-
-pkg_setup() {
- local CONFIG_CHECK="~PPP ~PPP_ASYNC ~PPP_SYNC_TTY"
- local ERROR_PPP="CONFIG_PPP:\t missing PPP support (REQUIRED)"
- local ERROR_PPP_ASYNC="CONFIG_PPP_ASYNC:\t missing asynchronous serial line discipline"
- ERROR_PPP_ASYNC+=" (optional, but highly recommended)"
- local WARNING_PPP_SYNC_TTY="CONFIG_PPP_SYNC_TTY:\t missing synchronous serial line discipline"
- WARNING_PPP_SYNC_TTY+=" (optional; used by 'sync' pppd option)"
- if use activefilter ; then
- CONFIG_CHECK+=" ~PPP_FILTER"
- local ERROR_PPP_FILTER="CONFIG_PPP_FILTER:\t missing PPP filtering support (REQUIRED)"
- fi
- CONFIG_CHECK+=" ~PPP_DEFLATE ~PPP_BSDCOMP ~PPP_MPPE"
- local ERROR_PPP_DEFLATE="CONFIG_PPP_DEFLATE:\t missing Deflate compression (optional, but highly recommended)"
- local ERROR_PPP_BSDCOMP="CONFIG_PPP_BSDCOMP:\t missing BSD-Compress compression (optional, but highly recommended)"
- local WARNING_PPP_MPPE="CONFIG_PPP_MPPE:\t missing MPPE encryption (optional, mostly used by PPTP links)"
- CONFIG_CHECK+=" ~PPPOE ~PACKET"
- local WARNING_PPPOE="CONFIG_PPPOE:\t missing PPPoE support (optional, needed by pppoe plugin)"
- local WARNING_PACKET="CONFIG_PACKET:\t missing AF_PACKET support (optional, used by pppoe plugin)"
- if use atm ; then
- CONFIG_CHECK+=" ~PPPOATM"
- local WARNING_PPPOATM="CONFIG_PPPOATM:\t missing PPPoA support (optional, needed by pppoatm plugin)"
- fi
-
- linux-info_pkg_setup
-}
-
-src_prepare() {
- default
-
- # Set the right paths in radiusclient.conf
- sed -e "s:/usr/local/etc:/etc:" \
- -e "s:/usr/local/sbin:/usr/sbin:" \
- -i pppd/plugins/radius/etc/radiusclient.conf || die
- # Set config dir to /etc/ppp/radius
- sed -i -e "s:/etc/radiusclient:/etc/ppp/radius:g" \
- pppd/plugins/radius/{*.8,*.c,*.h} \
- pppd/plugins/radius/etc/* || die
-}
-
-src_configure() {
- # https://bugs.gentoo.org/943931
- append-cflags -std=gnu17
-
- local args=(
- --localstatedir="${EPREFIX}"/var
- --runstatedir="${EPREFIX}"/run
- $(use_enable systemd)
- $(use_with atm)
- $(use_with pam)
- $(use_with activefilter pcap)
- --enable-cbcp
- --enable-multilink
- )
- econf "${args[@]}"
-}
-
-src_install() {
- default
-
- find "${ED}" -name '*.la' -type f -delete || die
-
- if use pam; then
- pamd_mimic_system ppp auth account session
- fi
-
- insinto /etc/modprobe.d
- newins "${FILESDIR}/modules.ppp" ppp.conf
-
- dosbin scripts/p{on,off,log}
- doman scripts/pon.1
- dosym pon.1 /usr/share/man/man1/poff.1
- dosym pon.1 /usr/share/man/man1/plog.1
-
- # Adding misc. specialized scripts to doc dir
- dodoc -r scripts
-
- newtmpfiles "${FILESDIR}/pppd.tmpfiles-r1" pppd.conf
-
- insinto /etc/ppp/radius
- doins pppd/plugins/radius/etc/{dictionary*,issue,port-id-map,radiusclient.conf,realms,servers}
-}
-
-pkg_postinst() {
- tmpfiles_process pppd.conf
-}
diff --git a/net-dns/bind/bind-9.20.27.ebuild b/net-dns/bind/bind-9.20.27.ebuild
index 127a82589b3b..05d9bc344f59 100644
--- a/net-dns/bind/bind-9.20.27.ebuild
+++ b/net-dns/bind/bind-9.20.27.ebuild
@@ -19,7 +19,7 @@ S="${WORKDIR}/${PN}-${MY_PV}"
LICENSE="MPL-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="dnstap doc doh fixed-rrset idn jemalloc geoip gssapi lmdb selinux systemtap test xml"
RESTRICT="!test? ( test )"
diff --git a/net-dns/dnsdist/Manifest b/net-dns/dnsdist/Manifest
index c3e98d50adfb..cd7a80fbdfe7 100644
--- a/net-dns/dnsdist/Manifest
+++ b/net-dns/dnsdist/Manifest
@@ -1,3 +1,5 @@
DIST dnsdist-2.1.1.tar.xz 2369660 BLAKE2B 88607ab943a22131b9e9f7321a5576ccda2d773637176cf72e04b0007dd4f812a806d6369bdcaf3f2f74e89c05988e7cf5b98886742fb927cd1b877243cc258b SHA512 597057c587959dd1b5cf98c7e146e1b3188ae4298c4b319b26712ee846248a70a34b8f22d39c8b97c92e4d3bf51a0d14c450342e0b334b8e5ed98ebd132eff2d
+DIST dnsdist-2.1.2.tar.xz 2371820 BLAKE2B bd125e4c2d1dcb731bd503f73b387ab9ea7817318b4e00f7f0f049c1add593ee1d6e7c4df94a56432992da1d0286c170f624c799bfece10896cbf83620e2a5ca SHA512 c64366e444c67c356b106a10da444dd82869b32cb5ed1671e402e5c5912cadb337889665ec359c44bfe3b55e7cf6e63d85f3d9a51b60b06c8e19f8570a803d4e
DIST dnsdist-rust-2.1.1-crates.tar.xz 3275568 BLAKE2B 1185b4c96fb0ec94e96333fea49b1bfee20384cf6515acc9dc95056ae7a759933cbe885175766c2239f2d86524af0df264a92256f7853a6b16c01e257267ad1b SHA512 10221f627bf6733c03882f3f050c2fa40b5d601c6744672d4f2903d863dfa6378b9582feaaa11cdc10b6ca3900db2805bccd84e3bc69a5623eaa24c5d4569047
-DIST dnsdist-rust-9999-630a017b-crates.tar.xz 3275568 BLAKE2B 1185b4c96fb0ec94e96333fea49b1bfee20384cf6515acc9dc95056ae7a759933cbe885175766c2239f2d86524af0df264a92256f7853a6b16c01e257267ad1b SHA512 10221f627bf6733c03882f3f050c2fa40b5d601c6744672d4f2903d863dfa6378b9582feaaa11cdc10b6ca3900db2805bccd84e3bc69a5623eaa24c5d4569047
+DIST dnsdist-rust-2.1.2-crates.tar.xz 3293064 BLAKE2B 31dd3b860f1762e9c2924c4e824e5e9d28f225e083225909f5a563cdadd00adf6b923a0b54016180c6aa0db20921ce314f2621178c866ac2c8a271a4b582842a SHA512 c1beb4acfeb068e0486501d956861b65ffa1d71a12eab8dbf6e1638811590ff0994bed783759f3698a1ba9d59b2a61d3b7558d5722b73504dd68a232940fc316
+DIST dnsdist-rust-9999-d7740dcd-crates.tar.xz 3314532 BLAKE2B ec60ea7a8c8ccde6ae6c973a6fa3233764d67761f2cb1204f7032433226b24e49f070d4bd86c947d2667bb4e23f3d05b00bd388fa139938651a4d323633c81a4 SHA512 2684e2a046fc3a256158a2d50f4a8437f712b8a543d1964973321b975dea60ef9b103b381e7b605536be7d7b4c033ceba397c3af27307db99048159fd55ba11a
diff --git a/net-dns/dnsdist/dnsdist-2.1.2.ebuild b/net-dns/dnsdist/dnsdist-2.1.2.ebuild
new file mode 100644
index 000000000000..7ec7d5f42f2c
--- /dev/null
+++ b/net-dns/dnsdist/dnsdist-2.1.2.ebuild
@@ -0,0 +1,186 @@
+# 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 )
+PYTHON_COMPAT=( python3_{13..14} )
+RUST_MIN_VER="1.85.0"
+RUST_OPTIONAL=1
+
+inherit cargo flag-o-matic lua-single meson python-any-r1 toolchain-funcs
+
+DESCRIPTION="A highly DNS-, DoS- and abuse-aware loadbalancer"
+HOMEPAGE="https://www.dnsdist.org/index.html"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/PowerDNS/pdns"
+ EGIT_BRANCH="rel/dnsdist-2.1.x"
+ inherit git-r3
+ # the first 8 digits of the sha256sum of the 9999 crates tarball
+ CRATES_HASH=630a017b
+ CRATES_PV="${PV}"-"${CRATES_HASH}"
+else
+ SRC_URI="https://downloads.powerdns.com/releases/${P}.tar.xz"
+ KEYWORDS="~amd64 ~x86"
+ CRATES_PV="${PV}"
+fi
+
+SRC_URI+="
+ yaml? ( https://www.applied-asynchrony.com/distfiles/${PN}-rust-${CRATES_PV}-crates.tar.xz )
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="bpf cdb dnscrypt dnstap doh doh3 ipcipher ipcrypt lmdb quic regex snmp +ssl systemd test web xdp yaml"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="${LUA_REQUIRED_USE}
+ dnscrypt? ( ssl )
+ doh? ( ssl )
+ doh3? ( ssl quic )
+ ipcipher? ( ssl )
+ quic? ( ssl )"
+
+RDEPEND="acct-group/dnsdist
+ acct-user/dnsdist
+ bpf? ( dev-libs/libbpf:= )
+ cdb? ( dev-db/tinycdb:= )
+ sys-libs/libcap
+ dev-libs/libedit
+ dev-libs/libsodium:=
+ dnstap? ( dev-libs/fstrm )
+ doh? ( net-libs/nghttp2:= )
+ doh3? ( net-libs/quiche:= )
+ lmdb? ( dev-db/lmdb:= )
+ quic? ( net-libs/quiche )
+ regex? ( dev-libs/re2:= )
+ snmp? ( net-analyzer/net-snmp:= )
+ ssl? ( dev-libs/openssl:= )
+ systemd? ( sys-apps/systemd:0= )
+ xdp? ( net-libs/xdp-tools )
+ ${LUA_DEPS}
+"
+
+DEPEND="${RDEPEND}
+ dev-libs/boost:=
+"
+BDEPEND="$(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')
+ virtual/pkgconfig
+ yaml? ( ${RUST_DEPEND} )
+"
+
+# special requirements for live
+if [[ ${PV} == *9999* ]] ; then
+ BDEPEND+=" dev-util/ragel"
+ S="${S}/pdns/dnsdistdist"
+fi
+
+PATCHES=(
+ "${FILESDIR}"/2.1.0-comboaddress-missing-lua-methods.patch
+)
+
+pkg_setup() {
+ lua-single_pkg_setup
+ python-any-r1_pkg_setup
+ use yaml && rust_pkg_setup
+}
+
+python_check_deps() {
+ python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]"
+}
+
+# git-r3 overrides automatic SRC_URI unpacking
+src_unpack() {
+ default
+
+ if [[ ${PV} == *9999* ]] ; then
+ git-r3_src_unpack
+ fi
+}
+
+src_prepare() {
+ default
+
+ # clean up duplicate file
+ rm -f README.md
+}
+
+src_configure() {
+ # bug #822855
+ append-lfs-flags
+
+ # There is currently no reliable way to handle mixed C++/Rust + LTO
+ # correctly: https://bugs.gentoo.org/963128
+ if use yaml && tc-is-lto ; then
+ ewarn "Disabling LTO because of mixed C++/Rust toolchains."
+ filter-lto
+ fi
+
+ # some things can only be enabled/disabled by defines
+ ! use dnstap && append-cppflags -DDISABLE_PROTOBUF
+ ! use web && append-cppflags -DDISABLE_BUILTIN_HTML
+
+ local emesonargs=(
+ --sysconfdir="${EPREFIX}/etc/dnsdist"
+ # always use libsodium
+ -Dlibsodium=enabled
+ -Dlua=${ELUA}
+ # never try to build man pages (virtualenv)
+ -Dman-pages=false
+ # never use gnutls (openssl only)
+ -Dtls-gnutls=disabled
+ $(meson_feature bpf ebpf)
+ $(meson_feature cdb)
+ $(meson_feature dnscrypt)
+ $(meson_feature dnstap)
+ $(meson_feature doh dns-over-https)
+ $(meson_feature doh nghttp2)
+ $(meson_feature doh3 dns-over-http3)
+ $(meson_feature ipcipher)
+ $(meson_feature ipcrypt ipcrypt2)
+ $(meson_feature lmdb)
+ $(meson_feature quic dns-over-quic)
+ $(meson_feature regex re2)
+ $(meson_feature snmp)
+ $(meson_feature ssl libcrypto)
+ $(meson_feature ssl tls-libssl)
+ $(meson_feature ssl dns-over-tls)
+ $(meson_feature systemd systemd-service)
+ $(meson_use test unit-tests)
+ $(meson_feature xdp xsk)
+ $(meson_feature yaml)
+ )
+
+ meson_src_configure
+}
+
+# explicitly implement src_compile/test to override the
+# otherwise automagic cargo_src_compile/test phases
+
+src_compile() {
+ cargo_gen_config
+ cargo_env meson_src_compile
+}
+
+src_test() {
+ meson_src_test
+}
+
+src_install() {
+ meson_src_install
+
+ insinto /etc/dnsdist
+ doins "${FILESDIR}"/dnsdist.conf.example
+
+ newconfd "${FILESDIR}"/dnsdist.confd ${PN}
+ newinitd "${FILESDIR}"/dnsdist.initd ${PN}
+}
+
+pkg_postinst() {
+ elog "dnsdist provides multiple instances support. You can create more instances"
+ elog "by symlinking the dnsdist init script to another name."
+ elog
+ elog "The name must be in the format dnsdist.<suffix> and dnsdist will use the"
+ elog "/etc/dnsdist/dnsdist-<suffix>.conf configuration file instead of the default."
+}
diff --git a/net-dns/dnsdist/dnsdist-9999.ebuild b/net-dns/dnsdist/dnsdist-9999.ebuild
index d79fc5a64df9..054e9dbe68bf 100644
--- a/net-dns/dnsdist/dnsdist-9999.ebuild
+++ b/net-dns/dnsdist/dnsdist-9999.ebuild
@@ -18,7 +18,7 @@ if [[ ${PV} == *9999* ]] ; then
EGIT_BRANCH="master"
inherit git-r3
# the first 8 digits of the sha256sum of the 9999 crates tarball
- CRATES_HASH=630a017b
+ CRATES_HASH=d7740dcd
CRATES_PV="${PV}"-"${CRATES_HASH}"
else
SRC_URI="https://downloads.powerdns.com/releases/${P}.tar.xz"
@@ -32,7 +32,7 @@ SRC_URI+="
LICENSE="GPL-2"
SLOT="0"
-IUSE="bpf cdb dnscrypt dnstap doh doh3 ipcipher ipcrypt lmdb quic regex snmp +ssl systemd test web xdp yaml"
+IUSE="bpf cdb dnscrypt dnstap doh doh3 ipcipher ipcrypt lmdb otlp quic regex snmp +ssl systemd test web xdp yaml"
RESTRICT="!test? ( test )"
REQUIRED_USE="${LUA_REQUIRED_USE}
@@ -53,6 +53,7 @@ RDEPEND="acct-group/dnsdist
doh? ( net-libs/nghttp2:= )
doh3? ( net-libs/quiche:= )
lmdb? ( dev-db/lmdb:= )
+ otlp? ( net-misc/curl )
quic? ( net-libs/quiche )
regex? ( dev-libs/re2:= )
snmp? ( net-analyzer/net-snmp:= )
@@ -136,6 +137,7 @@ src_configure() {
$(meson_feature ipcipher)
$(meson_feature ipcrypt ipcrypt2)
$(meson_feature lmdb)
+ $(meson_feature otlp)
$(meson_feature quic dns-over-quic)
$(meson_feature regex re2)
$(meson_feature snmp)
diff --git a/net-dns/dnsdist/metadata.xml b/net-dns/dnsdist/metadata.xml
index f37972bb4b67..4d29c908a763 100644
--- a/net-dns/dnsdist/metadata.xml
+++ b/net-dns/dnsdist/metadata.xml
@@ -24,6 +24,7 @@
</flag>
<flag name="ipcrypt">Enable support for encryption/decryption of IP addresses via IPCrypt</flag>
<flag name="lmdb">Enable support for lmdb</flag>
+ <flag name="otlp">Enable support for OTLP logging</flag>
<flag name="quic">Enable support for dns over quic via <pkg>net-libs/quiche</pkg>
</flag>
<flag name="regex">Enable support for regular expression matching via <pkg>dev-libs/re2</pkg>
diff --git a/net-dns/dnsmasq/dnsmasq-2.93.ebuild b/net-dns/dnsmasq/dnsmasq-2.93.ebuild
index 79a6aaf2a478..f07b5a0b819c 100644
--- a/net-dns/dnsmasq/dnsmasq-2.93.ebuild
+++ b/net-dns/dnsmasq/dnsmasq-2.93.ebuild
@@ -18,7 +18,7 @@ S="${WORKDIR}"/${MY_P}
LICENSE="|| ( GPL-2 GPL-3 )"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="auth-dns conntrack dbus +dhcp dhcp-tools dnssec +dumpfile id idn libidn2"
IUSE+=" +loop +inotify ipv6 lua nettlehash nls script selinux static tftp"
diff --git a/net-dns/doggo/Manifest b/net-dns/doggo/Manifest
index 8edf06346eb1..f90f30ddfe5a 100644
--- a/net-dns/doggo/Manifest
+++ b/net-dns/doggo/Manifest
@@ -2,3 +2,5 @@ DIST doggo-1.2.0-vendor.tar.xz 2386052 BLAKE2B 6d36d48437b477590421cc4c53b868467
DIST doggo-1.2.0.tar.gz 2471501 BLAKE2B aadf18cf9dbe83dcd493821d22349503a6e9ce89fe4bbf2d47aff5dcbe854426bb4f1908de69233e39c1336b86549257451287668dfc280fdc38e3c872ac669f SHA512 327340db86c901aa63bcfb1d44dd888829de3ea0eb3da0e54f1ea6266f58d4dd8d5360642a4978c842111369f7c75ca1a401a9b2cba77296bee39e630822b57e
DIST doggo-1.3.0-vendor.tar.xz 2436088 BLAKE2B 60f3c3989d8f289239250254240aebf10211919e70057d5da6ecf769dadee0d983da3d0d679b5ce2b68841f386969d7248cf777bf6ecdead78a6d14286a72119 SHA512 7087bedef21ba9b1c9fbae07cc381b27487d70893712bb5b107c62b768e893d1d79d8f9a5b81f3b5eb1a1f5c6e7d5a0cc733d5839c32dae651c42f2c815a9f6f
DIST doggo-1.3.0.tar.gz 2509840 BLAKE2B d275def3378581bdc0a590d358be1a63eef9bba8ed6181bfd183f77edab1347e35b0604417eeab3b50e424fe232e30565b37696d0399d77e64dc56399e048727 SHA512 f89849d6dee8a0115140ca61f5ea73ef29369c7c5c84490bc3fb610f6261e905471ef90fc3b7c16aee3e136451082b1680e038a249820cd3721c07d1dd2cd1ff
+DIST doggo-1.4.0-vendor.tar.xz 2443612 BLAKE2B 170930fb8d97374369b40aa84c469d24fe4abe0f56a829fc7c849486fa02b4f6c46877e960ff05b8d9354a0a06d9055ef565f66ebfee5b1a5abeef808fb83eff SHA512 09cc947a30475bc31161d84b49c35aee11a08bf67a6f753a447ecb19b20d8a5de57f876760e8ebde3f8e90798b08b9e4f2dda0b9382128e812042fa4d5887368
+DIST doggo-1.4.0.tar.gz 2551351 BLAKE2B e97a9111cb85fc0f2659aa283c03e670b8e5e6e3e6f654b28ba0b8dc7bf71261be8bfc1b9d4c444a609026c223f46bbce5e50cc68c817f1cdb37761a8becaae7 SHA512 7d32a279c6e07f47f635047679f63f9130322429b791418501762a2d63414cd863f4d95d8bb492b6f0a7b090b4155cf84050c58df2631641db49e9807d53c25b
diff --git a/net-dns/doggo/doggo-1.4.0.ebuild b/net-dns/doggo/doggo-1.4.0.ebuild
new file mode 100644
index 000000000000..2b5348fb5529
--- /dev/null
+++ b/net-dns/doggo/doggo-1.4.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit go-module shell-completion
+
+DESCRIPTION="Command-line DNS Client for Humans"
+HOMEPAGE="https://github.com/mr-karan/doggo"
+
+SRC_URI="https://github.com/mr-karan/doggo/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/gentoo-golang-dist/doggo/releases/download/v${PV}/${P}-vendor.tar.xz
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND=">=dev-lang/go-1.26.6"
+
+src_compile() {
+ emake build-cli VERSION=${PV}
+}
+
+src_install() {
+ newbin bin/${PN}.bin ${PN}
+
+ local comp
+ for comp in bash fish zsh; do
+ bin/${PN}.bin completions $comp > "${WORKDIR}"/${PN}.$comp || die
+ done
+
+ newbashcomp "${WORKDIR}"/${PN}.bash ${PN}
+ newfishcomp "${WORKDIR}"/${PN}.fish ${PN}.fish
+ newzshcomp "${WORKDIR}"/${PN}.zsh _${PN}
+}
diff --git a/net-dns/knot/Manifest b/net-dns/knot/Manifest
index c44aabe11367..59cb58b03796 100644
--- a/net-dns/knot/Manifest
+++ b/net-dns/knot/Manifest
@@ -7,3 +7,6 @@ DIST knot-3.5.6.tar.xz.asc 833 BLAKE2B e50abb5e54db106e965ea01d8bed5ee183cc98922
DIST knot-3.5.8-manpages.tar.xz 41224 BLAKE2B b5e09b5d3af811a9e83a5f6e07c18bdd515fbbc3195ec72057f9b0586bf3be620f76c796d549413734e866d3e3738fb8607e74880eac05475363dd0618230a71 SHA512 9e69b6e29a71085a29c8666e82149a3d3bc4196d49294c096708109870f4ab3a980d1b3b70e12b05058fe8cbb42ebb74cb506f31bba827a788241bba459a666e
DIST knot-3.5.8.tar.xz 1736408 BLAKE2B e7793b469c7782a3aa14c8e02fb038d8d1d943283a9cd4dde7bee6a7296d5c4149e0752f8741317dabadbe4dfe930c715a8c82b6c27bb483b8f358c17acac3c4 SHA512 de7212d4b2d6b5868e848db55a3b276ff650bfe46b1fb8df5a6702d6e1408d85ad25b692a95eb26bd5165e8ebf2b2b9bed6fac46d8f6b870698bb32a97c179f3
DIST knot-3.5.8.tar.xz.asc 833 BLAKE2B d1bf720b9b20478884ec6336722ac09c0e40a401a8b5c1adb58ae0c43adca5ecd8b941f85b53e2b6b4808bfc768315291f33d3a542ca44b75e7e9159269574b6 SHA512 9f85e7db04d310fed38811b7ee86da80bff4571ea974bc39e81d737a1fd4a587a5ff3fdcb6cea7a04c8ab2590d814411f6fc8b3b8e352ce4a7471c24901f26b4
+DIST knot-3.6.0-manpages.tar.xz 42052 BLAKE2B 11c9c090fc5a9ee4b9d695fbc5252dc315d29d8d121e6ee700c9cb6abd619c1d4ebc32ed734596ef5d3f34a74d96791e165e0758f40fa4074c854b4a9aa378b9 SHA512 f224279e8f850b7edf445a794d205c387cbc01671745bf3ca197bbd30e282dd490cd28b73b8b1e23c3add879a3ec07b0e54212764f73f1f451a39195c937e3f9
+DIST knot-3.6.0.tar.xz 1852000 BLAKE2B 454d12deb35c91fd3c3e71cfd4021bd0d36fb39446e3cef41a47df3bbc0362950de1a21eb742d936dbce13a822891b313da335b8bb21026b88d4d985d8c763c0 SHA512 83369a94ce7f35f41b08d599844e4c9586c29ba8efcf841e90560734b81df72054ddd62df609b84149944a36672bb71219c66e6e0c8ee7e41d5c421fc256e64a
+DIST knot-3.6.0.tar.xz.asc 833 BLAKE2B e8e9ca59ba1586854ab8de727dcd29fca23e7bb9a7572015f67e8e0173d2824419c91e6bc44d25ff4771bad59f15d03411dd4f8732174eff9e7d25e582d0b415 SHA512 31985e81306275b1cf1c382b0a97317a7220a1166ae680f1ed6dc02bb16dfe0789ccec3f98947d89d5966494132686169eb70c9222d0beada2f6c02072fa2c99
diff --git a/net-dns/knot/knot-3.6.0.ebuild b/net-dns/knot/knot-3.6.0.ebuild
new file mode 100644
index 000000000000..a398ce493c10
--- /dev/null
+++ b/net-dns/knot/knot-3.6.0.ebuild
@@ -0,0 +1,282 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit eapi9-ver python-r1 systemd tmpfiles verify-sig
+
+# subslot: libknot major.libzscanner major
+KNOT_SUBSLOT="17.5"
+
+DESCRIPTION="High-performance authoritative-only DNS server"
+HOMEPAGE="https://www.knot-dns.cz/ https://gitlab.nic.cz/knot/knot-dns"
+SRC_URI="
+ https://knot-dns.nic.cz/release/${P}.tar.xz
+ !doc? ( https://raw.githubusercontent.com/PPN-SD/gentoo-manpages/refs/tags/${P}/${P}-manpages.tar.xz )
+ verify-sig? ( https://knot-dns.nic.cz/release/${P}.tar.xz.asc )
+"
+# OPENLDAP: include code from lmdb-0.9 for automatic migration to lmdb-1
+LICENSE="GPL-2+ OPENLDAP"
+SLOT="0/${KNOT_SUBSLOT}"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+# Modules without dep and enabled by default. Built unconditionally.
+KNOT_MODULES=(
+ "alias"
+ "authsignal"
+ "cookies"
+ "dnserr"
+ "dnsproxy"
+ "noudp"
+ "onlinesign"
+ "probe"
+ "queryacl"
+ "rrl"
+ "stats"
+ "synthrecord"
+ "whoami"
+)
+
+KNOT_MODULES_OPT=(
+ "dnstap"
+ "geoip"
+)
+
+IUSE="caps +daemon dbus doc doh +fastparser +idn pkcs11 prometheus python quic redis selinux systemd test +utils xdp ${KNOT_MODULES_OPT[@]}"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="
+ prometheus? ( python )
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+COMMON_DEPEND="
+ dev-libs/libedit
+ dnstap? (
+ dev-libs/fstrm
+ dev-libs/protobuf-c:=
+ )
+"
+RDEPEND="
+ >=dev-db/lmdb-0.9.15:=
+ >=net-libs/gnutls-3.7.3:=[pkcs11?]
+ daemon? (
+ ${COMMON_DEPEND}
+ acct-group/knot
+ acct-user/knot
+ dev-libs/userspace-rcu:=
+ caps? ( sys-libs/libcap-ng )
+ dbus? ( sys-apps/dbus )
+ geoip? ( dev-libs/libmaxminddb:= )
+ redis? ( >=dev-libs/hiredis-1.1.0:= )
+ systemd? ( >=sys-apps/systemd-221:= )
+ )
+ prometheus? (
+ dev-python/prometheus-client[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+ python? ( ${PYTHON_DEPS} )
+ quic? ( >=net-libs/ngtcp2-0.17.0[gnutls] )
+ selinux? ( sec-policy/selinux-knot )
+ utils? (
+ ${COMMON_DEPEND}
+ doh? ( net-libs/nghttp2:= )
+ idn? ( net-dns/libidn2:= )
+ )
+ xdp? (
+ >=dev-libs/libbpf-1.0:=
+ net-libs/xdp-tools
+ utils? ( net-libs/libmnl:= )
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ dnstap? (
+ dev-libs/protobuf[protoc(+)]
+ dev-libs/protobuf-c
+ )
+ doc? (
+ $(python_gen_any_dep '
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinx-panels[${PYTHON_USEDEP}]
+ ')
+ )
+ python? ( ${PYTHON_DEPS} )
+ test? (
+ elibc_musl? ( sys-libs/timezone-data )
+ pkcs11? ( dev-libs/softhsm )
+ )
+ verify-sig? ( sec-keys/openpgp-keys-knot )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/${PN}.asc
+
+# Used to check cpuset_t in sched.h with NetBSD.
+# False positive because linux have sched.h too but with cpu_set_t
+QA_CONFIG_IMPL_DECL_SKIP=( cpuset_create cpuset_destroy )
+
+python_check_deps() {
+ # redundant but clearly marks doc dependencies
+ use doc || return 0
+ python_has_version "dev-python/sphinx[${PYTHON_USEDEP}]" \
+ "dev-python/sphinx-panels[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use doc && python_setup
+}
+
+src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.asc}
+ fi
+ default
+}
+
+src_configure() {
+ local u
+ local my_conf=(
+ --with-storage="${EPREFIX}/var/lib/${PN}"
+ --with-rundir="${EPREFIX}/run/${PN}"
+ $(use_enable caps cap_ng)
+ $(use_enable daemon)
+ # enable-dnstap defines support for kdig only
+ $(use_enable dnstap dnstap $(usex utils))
+ $(use_enable doc documentation)
+ $(use_with doh libnghttp2)
+ $(use_enable fastparser)
+ $(use_enable geoip maxminddb)
+ $(use_with idn libidn)
+ $(use_enable pkcs11)
+ $(use_enable quic)
+ $(use_enable redis redis $(usex daemon client))
+ $(use_enable systemd)
+ $(use_enable utils utilities)
+ $(use_enable xdp)
+ )
+ # modules are only used by daemon
+ # module-dnstap defines support for knotd only
+ if use daemon; then
+ for u in "${KNOT_MODULES[@]}"; do
+ my_conf+=( --with-module-${u} )
+ done
+ for u in "${KNOT_MODULES_OPT[@]#+}"; do
+ my_conf+=( $(use_with ${u} module-${u}) )
+ done
+ else
+ my_conf+=( --disable-modules )
+ fi
+
+ if use !daemon; then
+ my_conf+=( --enable-dbus=no )
+ elif use dbus; then
+ my_conf+=( --enable-dbus=libdbus )
+ elif use systemd; then
+ my_conf+=( --enable-dbus=systemd )
+ else
+ my_conf+=( --enable-dbus=no )
+ fi
+
+ econf "${my_conf[@]}"
+}
+
+src_compile() {
+ default
+
+ use doc && emake -C doc html
+}
+
+src_install() {
+ if use doc; then
+ local HTML_DOCS=( doc/_build/html/{*.html,*.js,_sources,_static} )
+ else
+ # install the manpages only for the activated options, order from doc/Makefile.am
+ pushd "${WORKDIR}"/man/ >/dev/null || die
+ local manp=()
+ if use daemon; then
+ manp+=(
+ knot.conf.5
+ knotc.8
+ knotd.8
+ )
+ fi
+ if use utils; then
+ use daemon && manp+=(
+ kcatalogprint.8
+ keymgr.8
+ kjournalprint.8
+ kzonecheck.1
+ kzonesign.1
+ )
+ manp+=(
+ kdig.1
+ khost.1
+ knsupdate.1
+ knsec3hash.1
+ )
+ use xdp && manp+=(
+ kxdpgun.8
+ )
+ fi
+ [[ "${#manp[@]}" -ne 0 ]] && doman "${manp[@]}"
+ popd >/dev/null || die
+ fi
+
+ if use python; then
+ # install only .py files, not build system leftovers (e.g. .in)
+ python_moduleinto libknot
+ python_foreach_impl python_domodule python/libknot/libknot/*.py
+ newdoc python/libknot/README.md README.python.md
+ fi
+
+ if use prometheus; then
+ # reset module target
+ python_moduleinto knot_exporter
+ python_foreach_impl python_domodule python/knot_exporter/knot_exporter/.
+ python_scriptinto /usr/sbin
+ python_foreach_impl python_newscript python/knot_exporter/knot_exporter/knot_exporter.py knot-exporter
+ newdoc python/knot_exporter/README.md README.knot_exporter.md
+ fi
+
+ default
+
+ if use daemon; then
+ rm -r "${ED}"/run/ || die
+
+ keepdir /var/lib/${PN}
+
+ fowners -R :knot /etc/${PN}
+ fperms 750 /etc/${PN}
+ fperms 640 /etc/${PN}/${PN}.sample.conf
+ fperms 640 /etc/${PN}/example.com.zone
+
+ newinitd "${FILESDIR}"/knot-3.init knot
+ newconfd "${FILESDIR}"/knot.confd knot
+
+ newtmpfiles "${FILESDIR}"/${PN}.tmpfile ${PN}.conf
+
+ if use dbus; then
+ insinto /usr/share/dbus-1/system.d
+ doins distro/common/cz.nic.knotd.conf
+ fi
+
+ use systemd && systemd_newunit distro/common/knot.service knot.service
+ fi
+
+ find "${D}" -name '*.la' -delete || die
+}
+
+pkg_postinst() {
+ use daemon && tmpfiles_process ${PN}.conf
+
+ if has_version net-dns/redis-knot || use redis; then
+ ewarn "To use redis, ${EPREFIX}/usr/$(get_libdir)/knot/redis/knot.so from net-dns/redis-knot"
+ ewarn "must be loaded by an instance of Redis."
+ fi
+
+ if ver_replacing -lt 3.6; then
+ elog "See documentation for migration:"
+ elog "https://www.knot-dns.cz/docs/3.6/html/migration.html#upgrade-3-5-x-to-3-6-x"
+ fi
+}
diff --git a/net-dns/redis-knot/Manifest b/net-dns/redis-knot/Manifest
index 4046dbffd2b0..e0d9155cbf1c 100644
--- a/net-dns/redis-knot/Manifest
+++ b/net-dns/redis-knot/Manifest
@@ -4,3 +4,5 @@ DIST knot-3.5.6.tar.xz 1734776 BLAKE2B f03a2da9390e89bd7955505d3f59ca54689e2183b
DIST knot-3.5.6.tar.xz.asc 833 BLAKE2B e50abb5e54db106e965ea01d8bed5ee183cc98922368d58144552cb2a6a55af738abd44195624397fc965fead72a687c8cd76554f60ea34013a6b2e6e94652ef SHA512 5647f932b145d6a4fd12e205fe895fe18df67a3e9c33a8bb3fc93b93762bbe46a359b86cf2482e0089eddb8fbe9fe22f306df94527804c9b3bf35631914c1101
DIST knot-3.5.8.tar.xz 1736408 BLAKE2B e7793b469c7782a3aa14c8e02fb038d8d1d943283a9cd4dde7bee6a7296d5c4149e0752f8741317dabadbe4dfe930c715a8c82b6c27bb483b8f358c17acac3c4 SHA512 de7212d4b2d6b5868e848db55a3b276ff650bfe46b1fb8df5a6702d6e1408d85ad25b692a95eb26bd5165e8ebf2b2b9bed6fac46d8f6b870698bb32a97c179f3
DIST knot-3.5.8.tar.xz.asc 833 BLAKE2B d1bf720b9b20478884ec6336722ac09c0e40a401a8b5c1adb58ae0c43adca5ecd8b941f85b53e2b6b4808bfc768315291f33d3a542ca44b75e7e9159269574b6 SHA512 9f85e7db04d310fed38811b7ee86da80bff4571ea974bc39e81d737a1fd4a587a5ff3fdcb6cea7a04c8ab2590d814411f6fc8b3b8e352ce4a7471c24901f26b4
+DIST knot-3.6.0.tar.xz 1852000 BLAKE2B 454d12deb35c91fd3c3e71cfd4021bd0d36fb39446e3cef41a47df3bbc0362950de1a21eb742d936dbce13a822891b313da335b8bb21026b88d4d985d8c763c0 SHA512 83369a94ce7f35f41b08d599844e4c9586c29ba8efcf841e90560734b81df72054ddd62df609b84149944a36672bb71219c66e6e0c8ee7e41d5c421fc256e64a
+DIST knot-3.6.0.tar.xz.asc 833 BLAKE2B e8e9ca59ba1586854ab8de727dcd29fca23e7bb9a7572015f67e8e0173d2824419c91e6bc44d25ff4771bad59f15d03411dd4f8732174eff9e7d25e582d0b415 SHA512 31985e81306275b1cf1c382b0a97317a7220a1166ae680f1ed6dc02bb16dfe0789ccec3f98947d89d5966494132686169eb70c9222d0beada2f6c02072fa2c99
diff --git a/net-dns/redis-knot/redis-knot-3.6.0.ebuild b/net-dns/redis-knot/redis-knot-3.6.0.ebuild
new file mode 100644
index 000000000000..d8199f90a76b
--- /dev/null
+++ b/net-dns/redis-knot/redis-knot-3.6.0.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+inherit verify-sig
+
+MY_PN="knot"
+MY_P="${MY_PN}-${PV}"
+DESCRIPTION="Redis module for Knot DNS"
+HOMEPAGE="https://www.knot-dns.cz/ https://gitlab.nic.cz/knot/knot-dns"
+SRC_URI="
+ https://knot-dns.nic.cz/release/${MY_P}.tar.xz
+ verify-sig? ( https://knot-dns.nic.cz/release/${MY_P}.tar.xz.asc )
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+# no test, it requires a Redis instance and RLTest (not packaged)
+BDEPEND="verify-sig? ( sec-keys/openpgp-keys-knot )"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/${MY_PN}.asc
+
+# Used to check cpuset_t in sched.h with NetBSD.
+# False positive because linux have sched.h too but with cpu_set_t
+QA_CONFIG_IMPL_DECL_SKIP=( cpuset_create cpuset_destroy )
+
+src_configure() {
+ local myeconfargs=(
+ --disable-daemon
+ --disable-modules
+ --disable-utilities
+ --disable-xdp
+ --enable-redis=module
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ emake -C src/redis
+}
+
+src_install() {
+ emake DESTDIR="${D}" -C src/redis install
+
+ find "${D}" -name '*.la' -delete || die
+}
diff --git a/net-misc/lldpd/lldpd-1.0.22.ebuild b/net-misc/lldpd/lldpd-1.0.22.ebuild
index 2af70a330b96..cf03ac3eca07 100644
--- a/net-misc/lldpd/lldpd-1.0.22.ebuild
+++ b/net-misc/lldpd/lldpd-1.0.22.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://github.com/lldpd/lldpd/releases/download/${PV}/${P}.tar.gz"
LICENSE="ISC"
SLOT="0/4"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="amd64 ~x86"
IUSE="cdp doc +dot1 +dot3 edp fdp graph +lldpmed old-kernel sanitizers
seccomp sonmp snmp static-libs test readline valgrind xml"
RESTRICT="!test? ( test )"
diff --git a/net-misc/r8125/Manifest b/net-misc/r8125/Manifest
index 160a1ffc8356..677373eb0008 100644
--- a/net-misc/r8125/Manifest
+++ b/net-misc/r8125/Manifest
@@ -3,3 +3,4 @@ DIST r8125-9.014.01.tar.bz2 111465 BLAKE2B ae09f27b617422e03484b10dfe7dcee14f58b
DIST r8125-9.015.00.tar.bz2 112287 BLAKE2B cadb5fc4fbb633a61284683d6ebb1233692fd496d2c436f7e26352193397cf8e0a23a40b5e3f00273f08ade254d61579474c21a57c5b118aceabd4d1269a2665 SHA512 3dcd3d2a9052738589dc85e7d2ecc79a41e3bd1868c58c370a21d6d6ce9acf758f53e9853fdcf0ef20c28014035ef58934145294269ce758c11e5666f526c008
DIST r8125-9.016.00.tar.bz2 122011 BLAKE2B 00ffd6d2d31c6425c9cce1b8cb6191d712c940677df9038451ff4719d8b8b243b87e2dcfd5d4f6e502ca6be285203a30fbbb9ae8b809100e3b68628b93535f84 SHA512 46d014e5d1790a1a9f184f25d1df1682970cec2f30f25429b89de2ab461639bd0b36d0d13125bd58534fd6589d96c74ec30a668b33d0d444b8ed3c4cc3b41527
DIST r8125-9.016.01.tar.bz2 124146 BLAKE2B 0b7e55d38f716087d66dff9d7ee6ae1cff0e9a082d356c3905aae051ad248ba35c594779fefea6a69cfc1ebc80b4f903f4e48f14e08fbac9738ba6b8c8fbbd98 SHA512 698345dabf9c4aad8759618502be0f09c313793dd1b516b18be08cee7d136f90546f77c8c7da9e3f3fbef1749638524f06ae1a09f5c6058509d8d02c522538b8
+DIST r8125-9.018.00.tar.bz2 124544 BLAKE2B 968c60cc239798088c7b13d3cd186d44cbd6630983152b6e5018c332e1344c639df55168f2e30d5d7bc952818c08883186eb2ea8d51860cd71fcb8a87e915305 SHA512 5c97dc7f7d093089954d6d8f335723f971be7551a608f028bdbebdfd0b60268d1a0ebddaec5e9df8eea5133aecef48864b7345fc1a3894e65878cbd282d38d99
diff --git a/net-misc/r8125/r8125-9.018.00.ebuild b/net-misc/r8125/r8125-9.018.00.ebuild
new file mode 100644
index 000000000000..9267f28e09e6
--- /dev/null
+++ b/net-misc/r8125/r8125-9.018.00.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit linux-mod-r1
+
+DESCRIPTION="r8125 vendor driver for Realtek RTL8125 PCI-E NICs"
+HOMEPAGE="https://www.realtek.com/Download/List?cate_id=584"
+# Mirrored to avoid captcha
+SRC_URI="https://github.com/Karlson2k/r8125/releases/download/${PV}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE="dash down-speed-100 fiber hw-acceleration hw-optim-tx +eee +giga-lite +multi-tx-q ptp +rss s5-keep-mac use-firmware +wol-s5 +wol"
+
+CONFIG_CHECK="~!R8169"
+WARNING_R8169="CONFIG_R8169 is enabled. ${PN} will not be loaded unless kernel driver Realtek 8169 PCI Gigabit Ethernet (CONFIG_R8169) is DISABLED."
+
+src_prepare() {
+ default
+
+ # Replace wrong EXTRA_CFLAGS (stopped working with kernels >= 6.15)
+ # with proper CFLAGS_MODULE (available since 2.6.36).
+ # Bug 957883
+ sed -E -i'' \
+ -e 's/(^|[^A-Za-z0-9_])EXTRA_CFLAGS([^A-Za-z0-9_]|$)/\1CFLAGS_MODULE\2/g' \
+ src/Makefile || die
+}
+
+src_compile() {
+ local modlist=( ${PN}=kernel/drivers/net/ethernet/realtek:src )
+ local modargs=(
+ # Build parameters
+ KERNELDIR="${KV_OUT_DIR}"
+ # Code build options
+ ENABLE_DASH_SUPPORT=$(usex dash y n)
+ ENABLE_FIBER_SUPPORT=$(usex fiber y n)
+ ENABLE_RSS_SUPPORT=$(usex rss y n)
+ ENABLE_MULTIPLE_TX_QUEUE=$(usex multi-tx-q y n)
+ ENABLE_USE_FIRMWARE_FILE=$(usex use-firmware y n)
+ CONFIG_DOWN_SPEED_100=$(usex down-speed-100 y n)
+ ENABLE_PTP_SUPPORT=$(usex ptp y n)
+ ENABLE_PAGE_REUSE=y
+ ENABLE_RX_PACKET_FRAGMENT=y
+ # Driver defaults
+ CONFIG_SOC_LAN=$(usex hw-acceleration y n)
+ ENABLE_TX_NO_CLOSE=$(usex hw-optim-tx y n)
+ ENABLE_EEE=$(usex eee y n)
+ ENABLE_GIGA_LITE=$(usex giga-lite y n)
+ DISABLE_WOL_SUPPORT=$(usex wol n y)
+ ENABLE_S5WOL=$(usex wol-s5 y n)
+ ENABLE_S5_KEEP_CURR_MAC=$(usex s5-keep-mac y n)
+ )
+
+ linux-mod-r1_src_compile
+}
diff --git a/net-nntp/sabnzbd/Manifest b/net-nntp/sabnzbd/Manifest
index 184aca267d74..9ba854c4ebd8 100644
--- a/net-nntp/sabnzbd/Manifest
+++ b/net-nntp/sabnzbd/Manifest
@@ -1 +1,2 @@
DIST SABnzbd-5.1.2-src.tar.gz 5422206 BLAKE2B e46874607001ed7a6bb58aa738b21becc1638dfa2bedd8b2fcfd19c10a1bd9570be11db77f3a92767ebd7112684df3f491f6edb470b4285f298cad8ea63d1003 SHA512 8030acf2a9e0f0360150570c5deca7b71fe523acfa417681772e8ade730f7b161ebfa7bb65627acf05bdebff81d30748ec61eda9fbb9a9eca7aa2894efb4c2f1
+DIST SABnzbd-5.1.3-src.tar.gz 5432583 BLAKE2B beec1bf2ff4448d8e38749cf7ddb0cdfe38a2db3a32fab23a0d1b6ad8cdfe35a086a1d871db145c122e53d55a8e05ada1207e989326d62110d62729d9b698ba9 SHA512 e9b50729adaf87827422e472d00b80637ee150c5a075b6d8fb06a68365df306cfa138e550126c8b02992d10b690fe6608bad5c9e8d313faf8a757f52ae1f30af
diff --git a/net-nntp/sabnzbd/sabnzbd-5.1.3.ebuild b/net-nntp/sabnzbd/sabnzbd-5.1.3.ebuild
new file mode 100644
index 000000000000..e33e61a66ae2
--- /dev/null
+++ b/net-nntp/sabnzbd/sabnzbd-5.1.3.ebuild
@@ -0,0 +1,156 @@
+# 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="sqlite"
+
+inherit optfeature python-single-r1 systemd
+
+MY_PV="${PV/_alpha/Alpha}"
+MY_PV="${MY_PV/_beta/Beta}"
+MY_PV="${MY_PV/_rc/RC}"
+
+MY_P="SABnzbd-${MY_PV}"
+
+DESCRIPTION="Binary newsgrabber with web-interface"
+HOMEPAGE="https://sabnzbd.org/"
+SRC_URI="https://github.com/sabnzbd/sabnzbd/releases/download/${MY_PV}/${MY_P}-src.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+# SABnzbd is GPL-2+ but bundles JS/CSS libraries and Python modules
+# with their own licenses (Bootstrap, jQuery, Knockout, rarfile, etc).
+LICENSE="GPL-2+ Apache-2.0 CC-BY-3.0 ISC LGPL-2.1+ MIT"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="
+ acct-user/sabnzbd
+ acct-group/sabnzbd
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ >=dev-python/apprise-1.9.2[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ >=dev-python/cheetah3-3.4.0[${PYTHON_USEDEP}]
+ dev-python/cherrypy[${PYTHON_USEDEP}]
+ dev-python/configobj[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ >=dev-python/feedparser-6.0.11[${PYTHON_USEDEP}]
+ >=dev-python/guessit-3.8.0[${PYTHON_USEDEP}]
+ dev-python/hachoir[${PYTHON_USEDEP}]
+ dev-python/notify2[${PYTHON_USEDEP}]
+ dev-python/portend[${PYTHON_USEDEP}]
+ dev-python/puremagic[${PYTHON_USEDEP}]
+ ~dev-python/rarfile-4.3[${PYTHON_USEDEP}]
+ ~dev-python/sabctools-9.6.3[${PYTHON_USEDEP}]
+ ')
+"
+RDEPEND="
+ ${DEPEND}
+ || (
+ >=app-arch/par2cmdline-0.8
+ >=app-arch/par2cmdline-turbo-1.1.0
+ )
+ net-misc/wget
+"
+BDEPEND="
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/pyfakefs[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-httpbin[${PYTHON_USEDEP}]
+ dev-python/pytest-httpserver[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/selenium[${PYTHON_USEDEP}]
+ dev-python/tavalidate[${PYTHON_USEDEP}]
+ >=dev-python/tavern-3[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ dev-python/xmltodict[${PYTHON_USEDEP}]
+ ')
+ app-arch/7zip
+ app-arch/unrar
+ app-arch/unzip
+ )
+"
+
+src_test() {
+ local EPYTEST_IGNORE=(
+ # network sandbox
+ tests/test_get_addrinfo.py
+ tests/test_getipaddress.py
+ tests/test_internetspeed.py
+ # Requires chromedriver
+ tests/test_functional_config.py
+ tests/test_functional_downloads.py
+ tests/test_functional_sorting.py
+ )
+ local EPYTEST_DESELECT=(
+ # network sandbox
+ 'tests/test_cfg.py::TestValidators::test_validate_host'
+ 'tests/test_consistency.py::TestWiki'
+ 'tests/test_downloader.py::TestConnectionStateMachine::test_failed_connect_allows_retry'
+ 'tests/test_rss.py::TestRSS::test_rss_newznab_parser'
+ 'tests/test_rss.py::TestRSS::test_rss_nzedb_parser'
+ 'tests/test_urlgrabber.py::TestBuildRequest::test_http_basic'
+ 'tests/test_urlgrabber.py::TestBuildRequest::test_https_basic'
+ # Requires chromedriver
+ 'tests/test_functional_misc.py::TestShowLogging::test_showlog'
+ 'tests/test_functional_misc.py::TestQueueRepair::test_queue_repair'
+ 'tests/test_functional_misc.py::TestDaemonizing::test_daemonizing'
+ # Runs extract_pot.py which needs the git repo
+ 'tests/test_functional_misc.py::TestExtractPot::test_extract_pot'
+ )
+
+ epytest -s
+}
+
+src_install() {
+ insinto /usr/share/${PN}
+ doins -r email icons interfaces locale po sabnzbd scripts tools
+
+ exeinto /usr/share/${PN}
+ doexe SABnzbd.py
+
+ python_fix_shebang "${ED}"/usr/share/${PN}
+ python_optimize "${ED}"/usr/share/${PN}
+
+ newinitd "${FILESDIR}"/${PN}-r1.initd ${PN}
+ newconfd "${FILESDIR}"/${PN}.confd ${PN}
+
+ diropts -o ${PN} -g ${PN}
+ dodir /etc/${PN}
+ keepdir /var/log/${PN}
+
+ insinto "/etc/${PN}"
+ insopts -m 0600 -o "${PN}" -g "${PN}"
+ newins "${FILESDIR}"/${PN}-r1.ini ${PN}.ini
+
+ dodoc ISSUES.txt README.mkd
+
+ systemd_newunit "${FILESDIR}"/sabnzbd_at.service 'sabnzbd@.service'
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ # This is a new installation
+ einfo "Default directory: /var/lib/${PN}"
+ einfo
+ einfo "To add a user to the sabnzbd group so it can edit SABnzbd+ files, run:"
+ einfo
+ einfo " usermod -a -G sabnzbd <user>"
+ einfo
+ einfo "By default, SABnzbd will listen on TCP port 8080."
+ fi
+
+ optfeature "7z archive support" app-arch/7zip
+ optfeature "rar archive support" app-arch/unrar app-arch/rar
+ optfeature "zip archive support" app-arch/unzip
+}
diff --git a/profiles/package.mask/00-gentoo b/profiles/package.mask/00-gentoo
index 295306acaf9d..9e98cbc8e5aa 100644
--- a/profiles/package.mask/00-gentoo
+++ b/profiles/package.mask/00-gentoo
@@ -36,6 +36,11 @@
#--- END OF EXAMPLES ---
+# Michał Górny <mgorny@gentoo.org> (2026-09-16)
+# Used only by dev-python/jupyter-server with Python < 3.12.
+# No revdeps left. Removal on 2026-10-16. Bug #982608.
+dev-python/overrides
+
# Lukas Schmelting <lschmelting@posteo.com> (2026-09-06)
# Most revdeps still need gexiv2-0.16 compatibility fixes
# See: https://bugs.gentoo.org/982084
@@ -451,10 +456,6 @@ dev-qt/qtx11extras:5
# Severe memory leak (bug #953874)
=app-i18n/ibus-anthy-1.5.17
-# Alfred Wingate <parona@protonmail.com> (2025-05-17)
-# Masked for testing
-dev-db/mysql:8.4
-
# Norbert Norbiros <norbiros@protonmail.com> (2025-04-01)
# Screen v5.0.0 has a lot of regressions
# https://lists.gnu.org/archive/html/screen-devel/2024-10/msg00007.html
diff --git a/sci-libs/cantera/Manifest b/sci-libs/cantera/Manifest
index b822b61eeaf8..323ce4337481 100644
--- a/sci-libs/cantera/Manifest
+++ b/sci-libs/cantera/Manifest
@@ -1,5 +1,2 @@
-DIST cantera-3.0.1.tar.gz 2451841 BLAKE2B b05771021a81d5266dfed382e2a6357e5b70653c6d9cfb5f03a6755095f4f8f4e7c0f78b79e0bf131c01fefce46bbc647c790ee412b6457c515cda39d4fc3054 SHA512 fa993b33867c6c0a0ca539f52116c4cdea739dfcd30deb5d2f66042f290f7f2f60112d7a37c38fbd8a38a119e5af00a7a85fd80b6e36388202b666be0ddd7715
-DIST cantera-3.1.0.tar.gz 2605640 BLAKE2B 6912b4e6b96ff71f02484a8fa051f8d34d0fc24c933e08e129531c6fe10e80fea74fcf6a6f7b00736de7b6ed5d4ab483f37a51b532d9bf154646546a8856e2a2 SHA512 0400a01ed0e244e6a34c9c04ffd5174ce6632c713c9bf003ab96e22b6f5a62713ee6a7eb07d7ae614e9f4e303e17df7fd234d66a48e43e46ede0246bb2bac52b
-DIST cantera-3.1.0_example_data.tar.gz 244545 BLAKE2B c341a7d530ad2486660b1dfe870f6ddd49280101bc7e98d3a88dea3aaaab0ae6c25383746f688164a04385a462a513f706d0ee248a675806de22df467d4f074f SHA512 a6171a106460f8b7a84bf825db38826444c30f921ba27896a50e1b52177550deaa5f66e11f6f91a2b91c4023e3dfb55b46233d2b6176afa771154dd81f8b34ab
DIST cantera-3.2.0.tar.gz 2817937 BLAKE2B 5e6058fb57c05315661f6298f6f4384d266510221e1bc5c8b2b7041b11a6fab0d588c87d05c61543a87ac98fea01763f68614c25948783e8fa17a2a3a7ca2846 SHA512 d587029567ebc4685d03c811fbcc56f676e2f29270b8cb69d22e2518911db2bdfe40c7683d822c09c0a723925479b247beae44a3edc07c86a48e67d2bad628b8
DIST cantera-3.2.0_example_data.tar.gz 260526 BLAKE2B 2c1ff2430bc42867e6dc41cb0677382139fed152e022cae0b94597f8962181d1c46013818344429114584826c7e6dbe58fd9854a5f3d46fd966fe9fb248cb207 SHA512 940a16f69975b7171d56a1d8c89bc0d8e2e306e8be041974bdd33f4061dca4c172555d1886785f294f3b009856b4112e95870c4b891a9153529c94747fca936f
diff --git a/sci-libs/cantera/cantera-3.0.1-r1.ebuild b/sci-libs/cantera/cantera-3.0.1-r1.ebuild
deleted file mode 100644
index 995ad38e3f58..000000000000
--- a/sci-libs/cantera/cantera-3.0.1-r1.ebuild
+++ /dev/null
@@ -1,147 +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} )
-
-FORTRAN_NEEDED=fortran
-FORTRAN_STANDARD="77 90"
-
-inherit flag-o-matic fortran-2 python-single-r1 scons-utils toolchain-funcs
-
-DESCRIPTION="Object-oriented tool suite for chemical kinetics, thermodynamics, and transport"
-HOMEPAGE="https://www.cantera.org"
-SRC_URI="https://github.com/Cantera/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ~x86"
-IUSE="fortran hdf5 lapack +python test"
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="
- ${PYTHON_REQUIRED_USE}
-"
-
-RDEPEND="
- ${PYTHON_DEPS}
- dev-cpp/eigen:=
- dev-cpp/yaml-cpp
- hdf5? ( sci-libs/highfive )
- !lapack? ( sci-libs/sundials:0= )
- lapack? (
- >=sci-libs/sundials-6.5.0:0=[lapack?]
- virtual/lapack
- )
- python? (
- $(python_gen_cond_dep '
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/ruamel-yaml[${PYTHON_USEDEP}]
- ')
- )
-"
-
-DEPEND="
- ${RDEPEND}
- dev-libs/boost:=
- <dev-libs/libfmt-11
- python? (
- $(python_gen_cond_dep '
- dev-python/cython[${PYTHON_USEDEP}]
- dev-python/pip[${PYTHON_USEDEP}]
- ')
- )
- test? (
- >=dev-cpp/gtest-1.11.0
- python? (
- $(python_gen_cond_dep '
- dev-python/h5py[${PYTHON_USEDEP}]
- dev-python/pandas[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
- dev-python/scipy[${PYTHON_USEDEP}]
- ')
- )
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${PN}-3.0.0_env.patch"
-)
-
-pkg_setup() {
- fortran-2_pkg_setup
- python-single-r1_pkg_setup
-}
-
-## Full list of configuration options of Cantera is presented here:
-## http://cantera.org/docs/sphinx/html/compiling/config-options.html
-src_configure() {
- # -Werror=odr, -Werror=lto-type-mismatch
- # https://github.com/Cantera/cantera/issues/1783
- filter-lto
-
- scons_vars=(
- AR="$(tc-getAR)"
- CC="$(tc-getCC)"
- CXX="$(tc-getCXX)"
- cc_flags="${CXXFLAGS}"
- cxx_flags="-std=c++17"
- debug="no"
- FORTRAN="$(tc-getFC)"
- FORTRANFLAGS="${FCFLAGS}"
- optimize_flags="-Wno-inline"
- renamed_shared_libraries="no"
- use_pch="no"
- ## In some cases other order can break the detection of right location of Boost: ##
- system_fmt="y"
- system_sundials="y"
- system_eigen="y"
- system_yamlcpp="y"
- hdf_support=$(usex hdf5 y n)
- system_blas_lapack=$(usex lapack y n)
- env_vars="all"
- extra_inc_dirs="/usr/include/eigen3"
- use_rpath_linkage="yes"
- extra_lib_dirs="/usr/$(get_libdir)/${PN}"
- )
- use hdf5 && scons_vars+=( system_highfive="y" )
- use lapack && scons_vars+=( blas_lapack_libs="lapack,blas" )
- use test || scons_vars+=( googletest="none" )
-
- scons_targets=(
- f90_interface=$(usex fortran y n)
- )
-
- if use python ; then
- scons_targets+=( python_package="full" python_cmd="${EPYTHON}" )
- else
- scons_targets+=( python_package="none" )
- fi
-}
-
-src_compile() {
- escons build "${scons_vars[@]}" "${scons_targets[@]}" prefix="/usr"
-}
-
-src_test() {
- escons test
-}
-
-src_install() {
- escons install stage_dir="${D}" libdirname="$(get_libdir)"
- if ! use python ; then
- rm -r "${D}/usr/share/man" || die "Can't remove man files."
- else
- # Run the byte-compile of modules
- python_optimize "${D}$(python_get_sitedir)/${PN}"
- fi
-
- # User could remove this line if require static libs for development purpose
- find "${ED}" -name '*.a' -delete || die
-}
-
-pkg_postinst() {
- local post_msg=$(usex fortran "and Fortran " "")
- elog "C++ ${post_msg}samples are installed to '/usr/share/${PN}/samples/' directory."
-}
diff --git a/sci-libs/cantera/cantera-3.0.1-r2.ebuild b/sci-libs/cantera/cantera-3.0.1-r2.ebuild
deleted file mode 100644
index 186dd6aa4323..000000000000
--- a/sci-libs/cantera/cantera-3.0.1-r2.ebuild
+++ /dev/null
@@ -1,149 +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} )
-
-FORTRAN_NEEDED=fortran
-FORTRAN_STANDARD="77 90"
-
-inherit flag-o-matic fortran-2 python-single-r1 scons-utils toolchain-funcs
-
-DESCRIPTION="Object-oriented tool suite for chemical kinetics, thermodynamics, and transport"
-HOMEPAGE="https://www.cantera.org"
-SRC_URI="https://github.com/Cantera/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="fortran hdf5 lapack +python test"
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="
- ${PYTHON_REQUIRED_USE}
-"
-
-RDEPEND="
- ${PYTHON_DEPS}
- dev-cpp/eigen:=
- dev-cpp/yaml-cpp
- hdf5? ( sci-libs/highfive )
- !lapack? ( sci-libs/sundials:0= )
- lapack? (
- >=sci-libs/sundials-6.5.0:0=[lapack?]
- virtual/lapack
- )
- python? (
- $(python_gen_cond_dep '
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/ruamel-yaml[${PYTHON_USEDEP}]
- ')
- )
-"
-
-DEPEND="
- ${RDEPEND}
- dev-libs/boost:=
- dev-libs/libfmt
- python? (
- $(python_gen_cond_dep '
- dev-python/cython[${PYTHON_USEDEP}]
- dev-python/pip[${PYTHON_USEDEP}]
- ')
- )
- test? (
- >=dev-cpp/gtest-1.11.0
- python? (
- $(python_gen_cond_dep '
- dev-python/h5py[${PYTHON_USEDEP}]
- dev-python/pandas[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
- dev-python/scipy[${PYTHON_USEDEP}]
- ')
- )
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${PN}-3.0.0_env.patch"
- "${FILESDIR}/${P}_fix_fmt_with_c++20.patch"
- "${FILESDIR}/${P}_add_fmt11_support.patch"
-)
-
-pkg_setup() {
- fortran-2_pkg_setup
- python-single-r1_pkg_setup
-}
-
-## Full list of configuration options of Cantera is presented here:
-## http://cantera.org/docs/sphinx/html/compiling/config-options.html
-src_configure() {
- # -Werror=odr, -Werror=lto-type-mismatch
- # https://github.com/Cantera/cantera/issues/1783
- filter-lto
-
- scons_vars=(
- AR="$(tc-getAR)"
- CC="$(tc-getCC)"
- CXX="$(tc-getCXX)"
- cc_flags="${CXXFLAGS}"
- cxx_flags="-std=c++20"
- debug="no"
- FORTRAN="$(tc-getFC)"
- FORTRANFLAGS="${FCFLAGS}"
- optimize_flags="-Wno-inline"
- renamed_shared_libraries="no"
- use_pch="no"
- ## In some cases other order can break the detection of right location of Boost: ##
- system_fmt="y"
- system_sundials="y"
- system_eigen="y"
- system_yamlcpp="y"
- hdf_support=$(usex hdf5 y n)
- system_blas_lapack=$(usex lapack y n)
- env_vars="all"
- extra_inc_dirs="/usr/include/eigen3"
- use_rpath_linkage="yes"
- extra_lib_dirs="/usr/$(get_libdir)/${PN}"
- )
- use hdf5 && scons_vars+=( system_highfive="y" )
- use lapack && scons_vars+=( blas_lapack_libs="lapack,blas" )
- use test || scons_vars+=( googletest="none" )
-
- scons_targets=(
- f90_interface=$(usex fortran y n)
- )
-
- if use python ; then
- scons_targets+=( python_package="full" python_cmd="${EPYTHON}" )
- else
- scons_targets+=( python_package="none" )
- fi
-}
-
-src_compile() {
- escons build "${scons_vars[@]}" "${scons_targets[@]}" prefix="/usr"
-}
-
-src_test() {
- escons test
-}
-
-src_install() {
- escons install stage_dir="${D}" libdirname="$(get_libdir)"
- if ! use python ; then
- rm -r "${D}/usr/share/man" || die "Can't remove man files."
- else
- # Run the byte-compile of modules
- python_optimize "${D}$(python_get_sitedir)/${PN}"
- fi
-
- # User could remove this line if require static libs for development purpose
- find "${ED}" -name '*.a' -delete || die
-}
-
-pkg_postinst() {
- local post_msg=$(usex fortran "and Fortran " "")
- elog "C++ ${post_msg}samples are installed to '/usr/share/${PN}/samples/' directory."
-}
diff --git a/sci-libs/cantera/cantera-3.1.0-r1.ebuild b/sci-libs/cantera/cantera-3.1.0-r1.ebuild
deleted file mode 100644
index 0fc970724500..000000000000
--- a/sci-libs/cantera/cantera-3.1.0-r1.ebuild
+++ /dev/null
@@ -1,156 +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} )
-
-FORTRAN_NEEDED=fortran
-FORTRAN_STANDARD="77 90"
-
-inherit flag-o-matic fortran-2 python-single-r1 scons-utils toolchain-funcs
-
-DESCRIPTION="Object-oriented tool suite for chemical kinetics, thermodynamics, and transport"
-HOMEPAGE="https://www.cantera.org"
-SRC_URI="
- https://github.com/Cantera/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
- https://github.com/Cantera/cantera-example-data/archive/refs/tags/v${PV}.tar.gz -> ${P}_example_data.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="fortran hdf5 lapack +python test"
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="
- ${PYTHON_REQUIRED_USE}
-"
-
-RDEPEND="
- ${PYTHON_DEPS}
- dev-cpp/eigen:=
- dev-cpp/yaml-cpp
- hdf5? ( sci-libs/highfive )
- !lapack? ( sci-libs/sundials:0= )
- lapack? (
- >=sci-libs/sundials-6.5.0:0=[lapack?]
- virtual/lapack
- )
- python? (
- $(python_gen_cond_dep '
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/ruamel-yaml[${PYTHON_USEDEP}]
- ')
- )
-"
-
-DEPEND="
- ${RDEPEND}
- dev-libs/boost:=
- dev-libs/libfmt
- python? (
- $(python_gen_cond_dep '
- dev-python/cython[${PYTHON_USEDEP}]
- dev-python/pip[${PYTHON_USEDEP}]
- ')
- )
- test? (
- >=dev-cpp/gtest-1.11.0
- python? (
- $(python_gen_cond_dep '
- dev-python/h5py[${PYTHON_USEDEP}]
- dev-python/pandas[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
- dev-python/scipy[${PYTHON_USEDEP}]
- ')
- )
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${PN}-3.1.0_env.patch"
- "${FILESDIR}/${PN}-3.1.0_enable_py3.14_packaging.patch"
-)
-
-src_unpack() {
- default
- mv -T "${WORKDIR}/${PN}-example-data-${PV}" "${S}"/data/example_data || die
-}
-
-pkg_setup() {
- fortran-2_pkg_setup
- python-single-r1_pkg_setup
-}
-
-## Full list of configuration options of Cantera is presented here:
-## https://cantera.org/3.1/develop/compiling/config-options.html
-src_configure() {
- # -Werror=odr, -Werror=lto-type-mismatch
- # https://github.com/Cantera/cantera/issues/1783
- filter-lto
-
- scons_vars=(
- AR="$(tc-getAR)"
- CC="$(tc-getCC)"
- CXX="$(tc-getCXX)"
- cc_flags="${CXXFLAGS}"
- cxx_flags="-std=c++20"
- debug="no"
- FORTRAN="$(tc-getFC)"
- FORTRANFLAGS="${FCFLAGS}"
- optimize_flags="-Wno-inline"
- renamed_shared_libraries="no"
- use_pch="no"
- ## In some cases other order can break the detection of right location of Boost: ##
- system_fmt="y"
- system_sundials="y"
- system_eigen="y"
- system_yamlcpp="y"
- hdf_support=$(usex hdf5 y n)
- system_blas_lapack=$(usex lapack y n)
- env_vars="all"
- extra_inc_dirs="/usr/include/eigen3"
- use_rpath_linkage="yes"
- extra_lib_dirs="/usr/$(get_libdir)/${PN}"
- )
- use hdf5 && scons_vars+=( system_highfive="y" )
- use lapack && scons_vars+=( blas_lapack_libs="lapack,blas" )
- use test || scons_vars+=( googletest="none" )
-
- scons_targets=(
- f90_interface=$(usex fortran y n)
- )
-
- if use python ; then
- scons_targets+=( python_package="y" python_cmd="${EPYTHON}" )
- else
- scons_targets+=( python_package="n" )
- fi
-}
-
-src_compile() {
- escons build "${scons_vars[@]}" "${scons_targets[@]}" prefix="/usr"
-}
-
-src_test() {
- escons test
-}
-
-src_install() {
- escons install stage_dir="${D}" libdirname="$(get_libdir)"
- if ! use python ; then
- rm -r "${D}/usr/share/man" || die "Can't remove man files."
- else
- # Run the byte-compile of modules
- python_optimize "${D}$(python_get_sitedir)/${PN}"
- fi
-
- # User could remove this line if require static libs for development purpose
- find "${ED}" -name '*.a' -delete || die
-}
-
-pkg_postinst() {
- local post_msg=$(usex fortran "and Fortran " "")
- elog "C++ ${post_msg}samples are installed to '/usr/share/${PN}/samples/' directory."
-}
diff --git a/sci-libs/cantera/cantera-3.1.0.ebuild b/sci-libs/cantera/cantera-3.2.0-r1.ebuild
index 02c67e8444ca..698174ef9d09 100644
--- a/sci-libs/cantera/cantera-3.1.0.ebuild
+++ b/sci-libs/cantera/cantera-3.2.0-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 ~x86"
-IUSE="fortran hdf5 lapack +python test"
+IUSE="fortran hdf5 +python test"
RESTRICT="!test? ( test )"
REQUIRED_USE="
@@ -31,15 +31,11 @@ RDEPEND="
${PYTHON_DEPS}
dev-cpp/eigen:=
dev-cpp/yaml-cpp
+ sci-libs/sundials:0=
hdf5? ( sci-libs/highfive )
- !lapack? ( sci-libs/sundials:0= )
- lapack? (
- >=sci-libs/sundials-6.5.0:0=[lapack?]
- virtual/lapack
- )
python? (
$(python_gen_cond_dep '
- dev-python/numpy[${PYTHON_USEDEP}]
+ <dev-python/numpy-2.4.0[${PYTHON_USEDEP}]
dev-python/ruamel-yaml[${PYTHON_USEDEP}]
')
)
@@ -47,6 +43,7 @@ RDEPEND="
DEPEND="
${RDEPEND}
+ >=app-text/doxygen-1.13.0[dot]
dev-libs/boost:=
dev-libs/libfmt
python? (
@@ -69,7 +66,7 @@ DEPEND="
"
PATCHES=(
- "${FILESDIR}/${PN}-3.1.0_env.patch"
+ "${FILESDIR}/${P}_env.patch"
)
src_unpack() {
@@ -83,7 +80,7 @@ pkg_setup() {
}
## Full list of configuration options of Cantera is presented here:
-## https://cantera.org/3.1/develop/compiling/config-options.html
+## https://cantera.org/3.2/develop/compiling/config-options.html
src_configure() {
# -Werror=odr, -Werror=lto-type-mismatch
# https://github.com/Cantera/cantera/issues/1783
@@ -102,19 +99,18 @@ src_configure() {
renamed_shared_libraries="no"
use_pch="no"
## In some cases other order can break the detection of right location of Boost: ##
+ system_blas_lapack="n"
system_fmt="y"
system_sundials="y"
system_eigen="y"
system_yamlcpp="y"
hdf_support=$(usex hdf5 y n)
- system_blas_lapack=$(usex lapack y n)
env_vars="all"
extra_inc_dirs="/usr/include/eigen3"
use_rpath_linkage="yes"
extra_lib_dirs="/usr/$(get_libdir)/${PN}"
)
use hdf5 && scons_vars+=( system_highfive="y" )
- use lapack && scons_vars+=( blas_lapack_libs="lapack,blas" )
use test || scons_vars+=( googletest="none" )
scons_targets=(
diff --git a/sci-libs/cantera/cantera-3.2.0.ebuild b/sci-libs/cantera/cantera-3.2.0-r2.ebuild
index a039c7321082..59367dd6d172 100644
--- a/sci-libs/cantera/cantera-3.2.0.ebuild
+++ b/sci-libs/cantera/cantera-3.2.0-r2.ebuild
@@ -19,8 +19,8 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~x86"
-IUSE="fortran hdf5 lapack +python test"
+KEYWORDS="~amd64 ~x86"
+IUSE="fortran hdf5 +python test"
RESTRICT="!test? ( test )"
REQUIRED_USE="
@@ -31,12 +31,8 @@ RDEPEND="
${PYTHON_DEPS}
dev-cpp/eigen:=
dev-cpp/yaml-cpp
+ sci-libs/sundials:0=
hdf5? ( sci-libs/highfive )
- !lapack? ( sci-libs/sundials:0= )
- lapack? (
- >=sci-libs/sundials-6.5.0:0=[lapack?]
- virtual/lapack
- )
python? (
$(python_gen_cond_dep '
dev-python/numpy[${PYTHON_USEDEP}]
@@ -70,7 +66,8 @@ DEPEND="
"
PATCHES=(
- "${FILESDIR}/${PN}-3.1.0_env.patch"
+ "${FILESDIR}/${P}_env.patch"
+ "${FILESDIR}/${P}_fix_species_slicing_error_numpy-2.4.patch"
)
src_unpack() {
@@ -103,19 +100,18 @@ src_configure() {
renamed_shared_libraries="no"
use_pch="no"
## In some cases other order can break the detection of right location of Boost: ##
+ system_blas_lapack="n"
system_fmt="y"
system_sundials="y"
system_eigen="y"
system_yamlcpp="y"
hdf_support=$(usex hdf5 y n)
- system_blas_lapack=$(usex lapack y n)
env_vars="all"
extra_inc_dirs="/usr/include/eigen3"
use_rpath_linkage="yes"
extra_lib_dirs="/usr/$(get_libdir)/${PN}"
)
use hdf5 && scons_vars+=( system_highfive="y" )
- use lapack && scons_vars+=( blas_lapack_libs="lapack,blas" )
use test || scons_vars+=( googletest="none" )
scons_targets=(
diff --git a/sci-libs/cantera/files/cantera-3.0.0_env.patch b/sci-libs/cantera/files/cantera-3.0.0_env.patch
deleted file mode 100644
index cfc2874250e4..000000000000
--- a/sci-libs/cantera/files/cantera-3.0.0_env.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -Naur a/SConstruct b/SConstruct
---- a/SConstruct
-+++ b/SConstruct
-@@ -819,7 +819,7 @@
- toolchain = ["default"]
-
- env = Environment(tools=toolchain+["textfile", "subst", "recursiveInstall", "UnitsInterfaceBuilder", "wix", "gch"],
-- ENV={"PATH": os.environ["PATH"]},
-+ ENV={'PATH': os.environ['PATH'], 'CCACHE_DIR': os.environ.get('CCACHE_DIR','')},
- toolchain=toolchain,
- **extraEnvArgs)
-
-@@ -970,11 +974,7 @@
- env["CPU"] = get_processor_name()
- logger.info(f"Compiling on {env['CPU']!r}")
-
--try:
-- env["git_commit"] = get_command_output("git", "rev-parse", "--short", "HEAD")
-- logger.info(f"Building Cantera from git commit {env['git_commit']!r}")
--except (subprocess.CalledProcessError, FileNotFoundError):
-- env["git_commit"] = "unknown"
-+env["git_commit"] = "unknown"
-
- # Print values of all build options:
- # the (updated) "cantera.conf" combines all options that were specified by the user
-diff -Naur a/src/SConscript b/src/SConscript
---- a/src/SConscript
-+++ b/src/SConscript
-@@ -89,7 +89,7 @@
- shim = pyenv.SharedObject("extensions/pythonShim.cpp")
- pylibname = f"../lib/cantera_python{pyenv['py_version_short'].replace('.', '_')}"
- lib = build(pyenv.SharedLibrary(pylibname, shim, SPAWN=get_spawn(pyenv)))
-- install("$inst_shlibdir", lib)
-+ install("$inst_shlibdir/cantera", lib)
-
-
- # build the Cantera static library
diff --git a/sci-libs/cantera/files/cantera-3.0.1_add_fmt11_support.patch b/sci-libs/cantera/files/cantera-3.0.1_add_fmt11_support.patch
deleted file mode 100644
index 7e0d5333a105..000000000000
--- a/sci-libs/cantera/files/cantera-3.0.1_add_fmt11_support.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-This is upstream patch with removed changes for "doc/sphinx/develop/compiling/dependencies.md" file
-Upstream issue: https://github.com/Cantera/cantera/issues/1735
-Gentoo issue: https://bugs.gentoo.org/945800
-
-From c8f190928fd7a074944f0f4c58661f84a282a35e Mon Sep 17 00:00:00 2001
-From: Ray Speth <speth@mit.edu>
-Date: Wed, 24 Jul 2024 20:12:18 -0400
-Subject: [PATCH] Add support for fmt 11.0
-
-Resolves #1735
----
- SConstruct | 2 +-
- doc/sphinx/develop/compiling/dependencies.md | 2 +-
- include/cantera/base/fmt.h | 8 ++++++++
- 3 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index 3863fe3a32..0b607ac891 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -216,7 +216,7 @@ config_options = [
- options with spaces, for example, "cxx_flags='-g -Wextra -O3 --std=c++14'"
- """,
- {
-- "cl": "/EHsc /std:c++17",
-+ "cl": "/EHsc /std:c++17 /utf-8",
- "default": "-std=c++17"
- }),
- Option(
-diff --git a/include/cantera/base/fmt.h b/include/cantera/base/fmt.h
-index 1e0b3a0423..6b4d734fe3 100644
---- a/include/cantera/base/fmt.h
-+++ b/include/cantera/base/fmt.h
-@@ -42,4 +42,12 @@ void fmt_append(fmt::memory_buffer& b, const std::string& tmpl, Args... args) {
- }
- #endif
-
-+#if FMT_VERSION > 100000
-+ #if CT_USE_SYSTEM_FMT
-+ #include <fmt/ranges.h>
-+ #else
-+ #include <fmt/join.h>
-+ #endif
-+#endif
-+
- #endif
diff --git a/sci-libs/cantera/files/cantera-3.0.1_fix_fmt_with_c++20.patch b/sci-libs/cantera/files/cantera-3.0.1_fix_fmt_with_c++20.patch
deleted file mode 100644
index 3b6b3da50a53..000000000000
--- a/sci-libs/cantera/files/cantera-3.0.1_fix_fmt_with_c++20.patch
+++ /dev/null
@@ -1,323 +0,0 @@
-This is upstream patch.
-Upstream issue: https://github.com/Cantera/cantera/issues/1711
-
-From edc8243577020b7dd6cd0fd85285cc8ca043b5ea Mon Sep 17 00:00:00 2001
-From: Ray Speth <speth@mit.edu>
-Date: Wed, 19 Jun 2024 00:09:02 -0400
-Subject: [PATCH] Fix usage of fmt when compiling in C++20 mode
-
-Resolves #1711
----
- include/cantera/base/AnyMap.h | 6 ++--
- include/cantera/base/ctexceptions.h | 2 +-
- include/cantera/base/fmt.h | 8 ++---
- include/cantera/base/global.h | 8 ++---
- src/base/AnyMap.cpp | 4 +--
- src/base/SolutionArray.cpp | 51 ++++++++++++++++-------------
- src/thermo/PureFluidPhase.cpp | 2 +-
- src/thermo/ThermoPhase.cpp | 2 +-
- 8 files changed, 46 insertions(+), 37 deletions(-)
-
-diff --git a/include/cantera/base/AnyMap.h b/include/cantera/base/AnyMap.h
-index 81ac0071a7..b1f0747f33 100644
---- a/include/cantera/base/AnyMap.h
-+++ b/include/cantera/base/AnyMap.h
-@@ -746,7 +746,8 @@ class InputFileError : public CanteraError
- : CanteraError(
- procedure,
- formatError(
-- (sizeof...(args) == 0) ? message : fmt::format(message, args...),
-+ (sizeof...(args) == 0) ? message
-+ : fmt::format(fmt::runtime(message), args...),
- node.m_line, node.m_column, node.m_metadata))
- {
- }
-@@ -761,7 +762,8 @@ class InputFileError : public CanteraError
- : CanteraError(
- procedure,
- formatError2(
-- (sizeof...(args) == 0) ? message : fmt::format(message, args...),
-+ (sizeof...(args) == 0) ? message
-+ : fmt::format(fmt::runtime(message), args...),
- node1.m_line, node1.m_column, node1.m_metadata,
- node2.m_line, node2.m_column, node2.m_metadata))
- {
-diff --git a/include/cantera/base/ctexceptions.h b/include/cantera/base/ctexceptions.h
-index fb21d3ef22..476e16bf46 100644
---- a/include/cantera/base/ctexceptions.h
-+++ b/include/cantera/base/ctexceptions.h
-@@ -86,7 +86,7 @@ class CanteraError : public std::exception
- if (sizeof...(args) == 0) {
- msg_ = msg;
- } else {
-- msg_ = fmt::format(msg, args...);
-+ msg_ = fmt::format(fmt::runtime(msg), args...);
- }
- }
-
-diff --git a/include/cantera/base/fmt.h b/include/cantera/base/fmt.h
-index 8341be115e..f613e17b31 100644
---- a/include/cantera/base/fmt.h
-+++ b/include/cantera/base/fmt.h
-@@ -26,13 +26,13 @@
-
- #if FMT_VERSION < 80000
- template <typename... Args>
--void fmt_append(fmt::memory_buffer& b, Args... args) {
-- format_to(b, args...);
-+void fmt_append(fmt::memory_buffer& b, const std::string& tmpl, Args... args) {
-+ format_to(b, tmpl, args...);
- }
- #else
- template <typename... Args>
--void fmt_append(fmt::memory_buffer& b, Args... args) {
-- format_to(fmt::appender(b), args...);
-+void fmt_append(fmt::memory_buffer& b, const std::string& tmpl, Args... args) {
-+ format_to(fmt::appender(b), fmt::runtime(tmpl), args...);
- }
- #endif
-
-diff --git a/include/cantera/base/global.h b/include/cantera/base/global.h
-index c0092c43ee..aa0f636754 100644
---- a/include/cantera/base/global.h
-+++ b/include/cantera/base/global.h
-@@ -176,7 +176,7 @@ void writelog(const string& fmt, const Args&... args) {
- if (sizeof...(args) == 0) {
- writelog_direct(fmt);
- } else {
-- writelog_direct(fmt::format(fmt, args...));
-+ writelog_direct(fmt::format(fmt::runtime(fmt), args...));
- }
- }
-
-@@ -228,7 +228,7 @@ void warn_deprecated(const string& method, const string& msg, const Args&... arg
- if (sizeof...(args) == 0) {
- _warn_deprecated(method, msg);
- } else {
-- _warn_deprecated(method, fmt::format(msg, args...));
-+ _warn_deprecated(method, fmt::format(fmt::runtime(msg), args...));
- }
- }
-
-@@ -253,7 +253,7 @@ void warn(const string& warning, const string& method,
- if (sizeof...(args) == 0) {
- _warn(warning, method, msg);
- } else {
-- _warn(warning, method, fmt::format(msg, args...));
-+ _warn(warning, method, fmt::format(fmt::runtime(msg), args...));
- }
- }
-
-@@ -268,7 +268,7 @@ void warn_user(const string& method, const string& msg, const Args&... args) {
- if (sizeof...(args) == 0) {
- _warn("Cantera", method, msg);
- } else {
-- _warn("Cantera", method, fmt::format(msg, args...));
-+ _warn("Cantera", method, fmt::format(fmt::runtime(msg), args...));
- }
- }
-
-diff --git a/src/base/AnyMap.cpp b/src/base/AnyMap.cpp
-index 84d74c1358..b35aabb8c3 100644
---- a/src/base/AnyMap.cpp
-+++ b/src/base/AnyMap.cpp
-@@ -164,7 +164,7 @@ string formatDouble(double x, long int precision)
- size_t last;
- string s0;
- if (useExp) {
-- s0 = fmt::format(fmt::format("{:.{}e}", x, precision));
-+ s0 = fmt::format(fmt::runtime(fmt::format("{:.{}e}", x, precision)));
- // last digit of significand
- last = s0.size() - 5;
- if (s0[last + 1] == 'e') {
-@@ -195,7 +195,7 @@ string formatDouble(double x, long int precision)
- if (s0[last - 1] == '0') {
- s1 = s0; // Recycle original string
- } else if (useExp) {
-- s1 = fmt::format(fmt::format("{:.{}e}", x, precision - 2));
-+ s1 = fmt::format(fmt::runtime(fmt::format("{:.{}e}", x, precision - 2)));
- } else {
- s1 = fmt::format("{:.{}f}", x, precision - log10x - 2);
- }
-diff --git a/src/base/SolutionArray.cpp b/src/base/SolutionArray.cpp
-index 4819aaa756..986c3e2373 100644
---- a/src/base/SolutionArray.cpp
-+++ b/src/base/SolutionArray.cpp
-@@ -232,17 +232,19 @@ vector<string> doubleColumn(string name, const vector<double>& comp,
- if (csize <= rows) {
- for (const auto& val : comp) {
- data.push_back(val);
-- raw.push_back(boost::trim_copy(fmt::format(notation, val)));
-+ raw.push_back(boost::trim_copy(fmt::format(fmt::runtime(notation), val)));
- }
- } else {
- dots = (rows + 1) / 2;
- for (int row = 0; row < dots; row++) {
- data.push_back(comp[row]);
-- raw.push_back(boost::trim_copy(fmt::format(notation, comp[row])));
-+ raw.push_back(boost::trim_copy(
-+ fmt::format(fmt::runtime(notation), comp[row])));
- }
- for (int row = csize - rows / 2; row < csize; row++) {
- data.push_back(comp[row]);
-- raw.push_back(boost::trim_copy(fmt::format(notation, comp[row])));
-+ raw.push_back(boost::trim_copy(
-+ fmt::format(fmt::runtime(notation), comp[row])));
- }
- }
-
-@@ -292,17 +294,17 @@ vector<string> doubleColumn(string name, const vector<double>& comp,
- // all entries are integers
- notation = fmt::format(" {{:>{}.0f}}", over + maxLen);
- }
-- maxLen = fmt::format(notation, 0.).size();
-+ maxLen = fmt::format(fmt::runtime(notation), 0.).size();
-
- // assemble output
- string section = fmt::format("{{:>{}}}", maxLen);
-- vector<string> col = {fmt::format(section, name)};
-+ vector<string> col = {fmt::format(fmt::runtime(section), name)};
- int count = 0;
- for (const auto& val : data) {
-- col.push_back(fmt::format(notation, val));
-+ col.push_back(fmt::format(fmt::runtime(notation), val));
- count++;
- if (count == dots) {
-- col.push_back(fmt::format(section, "..."));
-+ col.push_back(fmt::format(fmt::runtime(section), "..."));
- }
- }
- return col;
-@@ -320,7 +322,8 @@ vector<string> integerColumn(string name, const vector<long int>& comp,
- if (csize <= rows) {
- for (const auto& val : comp) {
- data.push_back(val);
-- string formatted = boost::trim_copy(fmt::format(notation, val));
-+ string formatted = boost::trim_copy(
-+ fmt::format(fmt::runtime(notation), val));
- if (formatted[0] == '-') {
- formatted = formatted.substr(1);
- }
-@@ -330,7 +333,8 @@ vector<string> integerColumn(string name, const vector<long int>& comp,
- dots = (rows + 1) / 2;
- for (int row = 0; row < dots; row++) {
- data.push_back(comp[row]);
-- string formatted = boost::trim_copy(fmt::format(notation, comp[row]));
-+ string formatted = boost::trim_copy(
-+ fmt::format(fmt::runtime(notation), comp[row]));
- if (formatted[0] == '-') {
- formatted = formatted.substr(1);
- }
-@@ -338,7 +342,8 @@ vector<string> integerColumn(string name, const vector<long int>& comp,
- }
- for (int row = csize - rows / 2; row < csize; row++) {
- data.push_back(comp[row]);
-- string formatted = boost::trim_copy(fmt::format(notation, comp[row]));
-+ string formatted = boost::trim_copy(
-+ fmt::format(fmt::runtime(notation), comp[row]));
- if (formatted[0] == '-') {
- formatted = formatted.substr(1);
- }
-@@ -356,13 +361,13 @@ vector<string> integerColumn(string name, const vector<long int>& comp,
- }
-
- // assemble output
-- vector<string> col = {fmt::format(notation, name)};
-+ vector<string> col = {fmt::format(fmt::runtime(notation), name)};
- int count = 0;
- for (const auto& val : data) {
-- col.push_back(fmt::format(notation, val));
-+ col.push_back(fmt::format(fmt::runtime(notation), val));
- count++;
- if (count == dots) {
-- col.push_back(fmt::format(notation, ".."));
-+ col.push_back(fmt::format(fmt::runtime(notation), ".."));
- }
- }
- return col;
-@@ -381,31 +386,33 @@ vector<string> stringColumn(string name, const vector<string>& comp,
- for (const auto& val : comp) {
- data.push_back(val);
- maxLen = std::max(maxLen,
-- boost::trim_copy(fmt::format(notation, val)).size());
-+ boost::trim_copy(fmt::format(fmt::runtime(notation), val)).size());
- }
- } else {
- dots = (rows + 1) / 2;
- for (int row = 0; row < dots; row++) {
- data.push_back(comp[row]);
- maxLen = std::max(maxLen,
-- boost::trim_copy(fmt::format(notation, comp[row])).size());
-+ boost::trim_copy(
-+ fmt::format(fmt::runtime(notation), comp[row])).size());
- }
- for (int row = csize - rows / 2; row < csize; row++) {
- data.push_back(comp[row]);
- maxLen = std::max(maxLen,
-- boost::trim_copy(fmt::format(notation, comp[row])).size());
-+ boost::trim_copy(
-+ fmt::format(fmt::runtime(notation), comp[row])).size());
- }
- }
-
- // assemble output
- notation = fmt::format(" {{:>{}}}", maxLen);
-- vector<string> col = {fmt::format(notation, name)};
-+ vector<string> col = {fmt::format(fmt::runtime(notation), name)};
- int count = 0;
- for (const auto& val : data) {
-- col.push_back(fmt::format(notation, val));
-+ col.push_back(fmt::format(fmt::runtime(notation), val));
- count++;
- if (count == dots) {
-- col.push_back(fmt::format(notation, "..."));
-+ col.push_back(fmt::format(fmt::runtime(notation), "..."));
- }
- }
- return col;
-@@ -443,8 +450,8 @@ vector<string> formatColumn(string name, const AnyValue& comp, int rows, int wid
-
- // assemble output
- string notation = fmt::format(" {{:>{}}}", maxLen);
-- repr = fmt::format(notation, repr);
-- vector<string> col = {fmt::format(notation, name)};
-+ repr = fmt::format(fmt::runtime(notation), repr);
-+ vector<string> col = {fmt::format(fmt::runtime(notation), name)};
- if (size <= rows) {
- for (int row = 0; row < size; row++) {
- col.push_back(repr);
-@@ -454,7 +461,7 @@ vector<string> formatColumn(string name, const AnyValue& comp, int rows, int wid
- for (int row = 0; row < dots; row++) {
- col.push_back(repr);
- }
-- col.push_back(fmt::format(notation, "..."));
-+ col.push_back(fmt::format(fmt::runtime(notation), "..."));
- for (int row = size - rows / 2; row < size; row++) {
- col.push_back(repr);
- }
-diff --git a/src/thermo/PureFluidPhase.cpp b/src/thermo/PureFluidPhase.cpp
-index 65e27c52d7..3e45009422 100644
---- a/src/thermo/PureFluidPhase.cpp
-+++ b/src/thermo/PureFluidPhase.cpp
-@@ -393,7 +393,7 @@ string PureFluidPhase::report(bool show_thermo, double threshold) const
-
- string one_property = fmt::format("{{:>{}}} {{:<.5g}} {{}}\n", name_width);
-
-- string two_prop_header = "{} {:^15} {:^15}\n";
-+ constexpr auto two_prop_header = "{} {:^15} {:^15}\n";
- string kg_kmol_header = fmt::format(
- two_prop_header, blank_leader, "1 kg", "1 kmol"
- );
-diff --git a/src/thermo/ThermoPhase.cpp b/src/thermo/ThermoPhase.cpp
-index 31b2c0ee9f..2b3993be35 100644
---- a/src/thermo/ThermoPhase.cpp
-+++ b/src/thermo/ThermoPhase.cpp
-@@ -1291,7 +1291,7 @@ string ThermoPhase::report(bool show_thermo, double threshold) const
-
- string one_property = fmt::format("{{:>{}}} {{:<.5g}} {{}}\n", name_width);
-
-- string two_prop_header = "{} {:^15} {:^15}\n";
-+ constexpr auto two_prop_header = "{} {:^15} {:^15}\n";
- string kg_kmol_header = fmt::format(
- two_prop_header, blank_leader, "1 kg", "1 kmol"
- );
diff --git a/sci-libs/cantera/files/cantera-3.1.0_enable_py3.14_packaging.patch b/sci-libs/cantera/files/cantera-3.1.0_enable_py3.14_packaging.patch
deleted file mode 100644
index 1ecaa421028a..000000000000
--- a/sci-libs/cantera/files/cantera-3.1.0_enable_py3.14_packaging.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff '--color=auto' -Naur a/SConstruct b/SConstruct
---- a/SConstruct
-+++ b/SConstruct
-@@ -182,7 +182,7 @@
- # Python Package Settings
- python_min_version = parse_version("3.8")
- # Newest Python version not supported/tested by Cantera
--python_max_version = parse_version("3.14")
-+python_max_version = parse_version("3.15")
- # The string is used to set python_requires in setup.cfg.in
- py_requires_ver_str = f">={python_min_version},<{python_max_version}"
-
diff --git a/sci-libs/cantera/files/cantera-3.1.0_env.patch b/sci-libs/cantera/files/cantera-3.2.0_env.patch
index 31766f1afb13..31766f1afb13 100644
--- a/sci-libs/cantera/files/cantera-3.1.0_env.patch
+++ b/sci-libs/cantera/files/cantera-3.2.0_env.patch
diff --git a/sci-libs/cantera/files/cantera-3.2.0_fix_species_slicing_error_numpy-2.4.patch b/sci-libs/cantera/files/cantera-3.2.0_fix_species_slicing_error_numpy-2.4.patch
new file mode 100644
index 000000000000..2c2c019223ec
--- /dev/null
+++ b/sci-libs/cantera/files/cantera-3.2.0_fix_species_slicing_error_numpy-2.4.patch
@@ -0,0 +1,48 @@
+The patch is based on upstream commits:
+https://github.com/Cantera/cantera/commit/7f7f37255dfa561c518061a816d9e4ed67dfe1a4
+https://github.com/Cantera/cantera/commit/3d86636ee4c231def3097d117f9679e83a1f6dde
+The upstream issue:
+https://github.com/Cantera/cantera/issues/2114
+
+diff '--color=auto' -Naur a/interfaces/cython/cantera/solutionbase.pyx b/interfaces/cython/cantera/solutionbase.pyx
+--- a/interfaces/cython/cantera/solutionbase.pyx
++++ b/interfaces/cython/cantera/solutionbase.pyx
+@@ -54,7 +54,7 @@
+ cxx_soln.get().setKinetics(newKinetics(stringify("none")))
+ cxx_soln.get().setTransportModel(stringify("none"))
+ _assign_Solution(self, cxx_soln, True)
+- self._selected_species = np.ndarray(0, dtype=np.uint64)
++ self._selected_species = np.ndarray(0, dtype=np.intp)
+
+ def _cinit(self, infile="", name="", adjacent=(), origin=None, yaml=None,
+ thermo=None, species=(), kinetics=None, reactions=(), **kwargs):
+@@ -82,7 +82,7 @@
+ _assign_Solution(self, CxxNewSolution(), True)
+ self._init_parts(thermo, species, kinetics, transport, adjacent, reactions)
+
+- self._selected_species = np.ndarray(0, dtype=np.uint64)
++ self._selected_species = np.ndarray(0, dtype=np.intp)
+
+ def __init__(self, *args, **kwargs):
+ if isinstance(self, Transport) and kwargs.get("init", True):
+@@ -395,9 +395,8 @@
+ def __set__(self, species):
+ if isinstance(species, (str, int)):
+ species = (species,)
+- self._selected_species.resize(len(species))
+- for i,spec in enumerate(species):
+- self._selected_species[i] = self.species_index(spec)
++ selection = [self.species_index(spec) for spec in species]
++ self._selected_species = np.array(selection, dtype=np.intp)
+
+ def __getstate__(self):
+ """Save complete information of the current phase for pickling."""
+@@ -480,7 +479,7 @@
+
+ cdef _SolutionBase soln = cls(init=False)
+ _assign_Solution(soln, cxx_soln, True)
+- soln._selected_species = np.ndarray(0, dtype=np.uint64)
++ soln._selected_species = np.ndarray(0, dtype=np.intp)
+
+ cdef InterfacePhase iface
+ if isinstance(soln, Interface):
diff --git a/sci-libs/gdal/Manifest b/sci-libs/gdal/Manifest
index 16331f5cf9fa..b72f3e8c1d16 100644
--- a/sci-libs/gdal/Manifest
+++ b/sci-libs/gdal/Manifest
@@ -4,6 +4,9 @@ DIST gdal-3.13.1.tar.xz 9957916 BLAKE2B 582bea82ed21059c8b3348f91806842f0ee5337e
DIST gdal-3.13.1.tar.xz.sig 566 BLAKE2B f60b2c5dd5bd55c84aabf5f0f5b2189f2793c49eab7083fe79c308697ade74c2e374beff2a78d6d80c75a74aa47dc3360f3a6bd63191bfdba9b51b77d449690d SHA512 6fa6a8c1bcfb0e69135702d4ee46aa70d0623bd0db933c6844691b08a2a4bbc94fea70ed0c0c1bc0906c551b20186e369cff48eab971fec7c49f82b1305d9b36
DIST gdal-3.13.2.tar.xz 9989660 BLAKE2B 6c22f3a19b28c67c03db83b8138283955371d1a939a1cfdeadd2fa646fa8fb760961f227ba4c819cb2386bc372371352a8c5e45c35ed552d91738590cee22013 SHA512 cef8ff877006dc3c112012edcb8c164e47b2295fca1985ba84e21588f4457aeb1ec9b33487291b2f72686c6d06ecf6144cc6d03fee553caa7ce7165094e88344
DIST gdal-3.13.2.tar.xz.sig 566 BLAKE2B a94d69384c2631e921cfcb9172ebc10daaa3d0f20ab43a9c1c11760d404fa2687870f5da8322ab7464beeabf5ef8560e3eb05ca8f1100deb20518ae4fbd54ce5 SHA512 7efe2dd6d0758a3782bad2acb8c4e5e6eff19e2cef256c4bee4e368b4656c767b288c662852e239bc05bd0afd7d35cc1feeb701bf6137b27dd23f1e7166be9e6
+DIST gdal-3.13.3.tar.xz 9982976 BLAKE2B 21e35a6318321155df27a2c55a4ca6b98f9a724ff7c5cb68866428ba6675aa017f21de1a3f1562cf506e288e23748520c87e0184a495147eb4d91ffc0e534c72 SHA512 e557a38a8bc0f2f1e40c0ca980db00ed22137a610dfdb16d19b18ce12100916bfa5c1fa75d702eb2e26a4e98cf868c2229551bfe2784d6e1131451f758b205dd
+DIST gdal-3.13.3.tar.xz.sig 566 BLAKE2B 43ba8ef43ac30f52589e01d5ad6a29932ef3204e9dd0b28fa23b391410e33d5c37a0edaad2cfd9f6a7c233f0ae3021caa24a08597abbecfeb9b54e72bdb2f19c SHA512 fcb0176abdd48b1a7e98ba8c6aa7edf5444eeb85686c4a413100421df182e39af40ccd1659f0a04c11b8da1102b2d78c48ed669163b387ca00faf160bcb7b05d
DIST gdalautotest-3.12.4.zip 23266101 BLAKE2B 4425fed6d5a17ae0a222a37e581923015054141d236f15b71179cd55efc0fcee7ec1b572e9af2c2a6c9cf54807a0753e90b7b9cd6d7fbd8ca93beab5a8b75cb2 SHA512 19eef02db070ddf71c213311e702f4a15b2d3dc86a55de6edb22d38396bc477c2da0634035e3186c5172e94bed526b6057e2e8a6c17b4d786ada116ceef41aba
DIST gdalautotest-3.13.1.zip 23833294 BLAKE2B c2669145d7b40a5797b1dc6ba3796a1cf8036e2b0af9c50e37165770689f28861ecf0c28a243adf7682b88db668e07c83394b5248abc6f349ce5ab8fc092f41d SHA512 52b7e0769d6dae1cb2c25dd1095a17c7189fe4c917ba5a3da4df28ff6aef52fa31be98fff5e1cefd29952d1dae070b56ed54ce5165a014111ef77ba225eb69d4
DIST gdalautotest-3.13.2.zip 23847042 BLAKE2B 87c1c40050b360a537b7904c79f63532977d824677c40211f7ca62b83d519a0a52fd78cd26def01d2edfe7dc9d1797827688615781e9fc94ef5190e5b8c0a930 SHA512 c940abc2ea0953c9a6065cce139346aad97e525ee7355826d919d81048f3aacda3f0ea06e563e35a444dd22c1566bfe33430c13deab276794374a2c59859fa20
+DIST gdalautotest-3.13.3.zip 23847761 BLAKE2B 6ab9b5a733d49f06fad93216427fb34c368d002afc7bae31402dd6ec31dcd847be32cb2fe8b5ecad0b28cf83d0899e5b8e01b5dbd6fb4e769e4362751b8e693d SHA512 4f235718cdeac3a00a69f3b0b1d6942fd5380443164ac0d0bd2910a9a96735db97e6058222276f8b5be0474e2826c4fc13e9f1fce2d9717f46697341f76e624a
diff --git a/sci-libs/gdal/gdal-3.13.3.ebuild b/sci-libs/gdal/gdal-3.13.3.ebuild
new file mode 100644
index 000000000000..a09accb85816
--- /dev/null
+++ b/sci-libs/gdal/gdal-3.13.3.ebuild
@@ -0,0 +1,529 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_EXT=1
+DISTUTILS_OPTIONAL=1
+PYTHON_COMPAT=( python3_{13..14} )
+inherit cmake distutils-r1 flag-o-matic java-pkg-opt-2 unpacker verify-sig
+
+DESCRIPTION="Translator library for raster geospatial data formats (includes OGR support)"
+HOMEPAGE="https://gdal.org/"
+SRC_URI="
+ https://download.osgeo.org/${PN}/${PV}/${P}.tar.xz
+ test? ( https://download.osgeo.org/${PN}/${PV}/${PN}autotest-${PV}.zip )
+ verify-sig? ( https://download.osgeo.org/${PN}/${PV}/${P}.tar.xz.sig )
+"
+
+LICENSE="BSD Info-ZIP MIT"
+SLOT="0/39" # subslot is libgdal.so.<SONAME> (and GDAL_SOVERSION in gdal.cmake)
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="
+ archive armadillo avif blosc cryptopp +curl cpu_flags_arm_neon cpu_flags_x86_avx
+ cpu_flags_x86_avx2 cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse4_1
+ cpu_flags_x86_ssse3 exprtk fits geos gif gml hdf5 heif java jpeg2k jpegxl lerc
+ libaec libdeflate lz4 lzma mongodb +muparser mysql netcdf odbc openexr oracle
+ parquet pdf png postgres python qhull spatialite sqlite system-tiff test +tools
+ webp xls zstd
+"
+
+# jpegxl isn't supported for system tiff
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ spatialite? ( sqlite )
+ jpegxl? ( !system-tiff )
+"
+
+RESTRICT="!test? ( test )"
+
+COMMON_DEPEND="
+ dev-libs/expat
+ dev-libs/json-c:=
+ dev-libs/libxml2:2=
+ dev-libs/openssl:=
+ media-libs/libjpeg-turbo:=
+ >=sci-libs/proj-6.0.0:=[tiff]
+ virtual/minizip:=
+ archive? ( app-arch/libarchive:= )
+ armadillo? ( sci-libs/armadillo:=[lapack] )
+ avif? ( media-libs/libavif:= )
+ blosc? ( dev-libs/c-blosc:= )
+ cryptopp? ( dev-libs/crypto++:= )
+ curl? ( net-misc/curl )
+ fits? ( sci-libs/cfitsio:= )
+ geos? ( >=sci-libs/geos-3.8.0 )
+ gif? ( media-libs/giflib:= )
+ gml? ( >=dev-libs/xerces-c-3.1:= )
+ heif? ( media-libs/libheif:= )
+ hdf5? ( >=sci-libs/hdf5-1.6.4:=[cxx,szip] )
+ java? (
+ >=virtual/jdk-1.8:*
+ )
+ jpeg2k? ( media-libs/openjpeg:2= )
+ jpegxl? ( media-libs/libjxl:= )
+ lerc? ( media-libs/lerc:= )
+ libaec? ( sci-libs/libaec:= )
+ libdeflate? ( app-arch/libdeflate )
+ lz4? ( app-arch/lz4:= )
+ lzma? ( || (
+ app-arch/xz-utils
+ app-arch/lzma
+ ) )
+ mongodb? ( dev-libs/mongo-cxx-driver:= )
+ muparser? ( dev-cpp/muParser:= )
+ mysql? ( dev-db/mysql-connector-c:= )
+ netcdf? ( sci-libs/netcdf:= )
+ odbc? ( dev-db/unixODBC )
+ openexr? ( media-libs/openexr:= )
+ oracle? ( dev-db/oracle-instantclient:= )
+ parquet? ( dev-libs/apache-arrow:=[compute,dataset,parquet,lz4?,zlib,zstd?] )
+ pdf? ( app-text/poppler:= )
+ png? ( media-libs/libpng:= )
+ postgres? ( >=dev-db/postgresql-8.4:= )
+ qhull? ( media-libs/qhull:= )
+ spatialite? ( dev-db/spatialite )
+ sqlite? (
+ >=dev-db/sqlite-3.31:3
+ dev-libs/libpcre2:=
+ )
+ system-tiff? (
+ media-libs/tiff:=[jpeg]
+ >=sci-libs/libgeotiff-1.5.1-r1:=
+ )
+ webp? ( media-libs/libwebp:= )
+ xls? ( dev-libs/freexl )
+ zstd? ( app-arch/zstd:= )
+"
+RDEPEND="${COMMON_DEPEND}
+ java? ( >=virtual/jre-1.8:* )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/numpy[${PYTHON_USEDEP}]
+ ')
+ )
+"
+DEPEND="${COMMON_DEPEND}
+ exprtk? ( dev-cpp/exprtk )
+ test? ( dev-cpp/gtest )
+"
+BDEPEND="
+ virtual/pkgconfig
+ java? (
+ >=dev-java/ant-1.10.14-r3:0
+ dev-lang/swig
+ )
+ python? (
+ ${DISTUTILS_DEPS}
+ dev-lang/swig
+ $(python_gen_cond_dep '
+ dev-python/numpy[${PYTHON_USEDEP}]
+ test? (
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ >=dev-python/pytest-6.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-env[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ parquet? ( dev-python/pyarrow[parquet,${PYTHON_USEDEP}] )
+ )
+ ')
+ )
+ test? ( app-arch/unzip )
+ verify-sig? ( sec-keys/openpgp-keys-gdal )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/gdal.asc
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ _wstat64 # Windows LFS
+)
+
+EPYTEST_PLUGINS=( pytest-env )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+# distutils_enable_tests unconditionally touches BDEPEND
+
+pkg_setup() {
+ use java && java-pkg-opt-2_pkg_setup
+}
+
+src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}/${P}.tar.xz" "${DISTDIR}/${P}.tar.xz.sig"
+ fi
+
+ # unpacker mishandles .sig files
+ unpack ${P}.tar.xz
+ use test && unpack_zip gdalautotest-${PV}.zip
+}
+
+src_prepare() {
+ if use test ; then
+ mv "${WORKDIR}"/gdalautotest-${PV} "${S}"/autotest || die
+ fi
+ java-pkg-opt-2_src_prepare
+ cmake_src_prepare
+}
+
+python_configure_all() {
+ local -x BUILD_DIR="${S}_python"
+ # Generate required files with cmake and then use distutils-r1 to generate wheels
+ # https://github.com/OSGeo/gdal/issues/9965#issuecomment-2159222393
+ mycmakeargs+=( -DBUILD_PYTHON_BINDINGS=ON )
+ cmake_src_configure
+ cmake_build python_generated_files
+ cmake_build generate_gdal_version_h
+ sed -E -e "/(library_dirs|include_dirs) =/ { s|${BUILD_DIR}|${cmake_build_dir}| } " \
+ -i "${BUILD_DIR}/swig/python/setup.py" || die
+}
+
+src_configure() {
+ # sanity check subslot to give a friendly reminder to would-be drive by bumpers
+ local detected_soversion
+ detected_soversion="$(sed -n -e 's/set(GDAL_SOVERSION \(.*\))/\1/p' gdal.cmake)"
+ if [[ "${SLOT#0/}" != "${detected_soversion}" ]]; then
+ die "Subslot ${SLOT#0/} doesn't match upstream specified set(GDAL_SOVERSION ${detected_soversion}) in gdal.cmake."
+ fi
+
+ # ODR violations
+ filter-lto
+
+ local mycmakeargs=(
+ # https://gdal.org/en/stable/development/building_from_source.html
+
+ -DBUILD_APPS=$(usex tools)
+ -DBUILD_TESTING=$(usex test)
+ -DENABLE_GNM=ON
+ -DENABLE_IPO=OFF
+ -DENABLE_PAM=ON # Persistent Auxiliary Metadata (not Pluggable Authentication Modules!)
+ -DOGR_ENABLE_DRIVER_SQLITE=$(usex sqlite)
+ -DGDAL_ENABLE_PLUGINS=OFF
+ -DGDAL_ENABLE_PLUGINS_NO_DEPS=OFF
+ -DGDAL_BUILD_OPTIONAL_DRIVERS=ON
+ -DOGR_BUILD_OPTIONAL_DRIVERS=ON
+ -DGDAL_USE_EXTERNAL_LIBS=ON
+ -DGDAL_USE_INTERNAL_LIBS=OFF
+ -DUSE_CCACHE=OFF
+ -DUSE_PRECOMPILED_HEADERS=OFF
+
+ # bug #844874 and bug #845150
+ -DCMAKE_INSTALL_INCLUDEDIR="include/gdal"
+
+ -DGDAL_FIND_PACKAGE_PROJ_MODE=CONFIG
+
+ # Options here are generally off because of one of:
+ # - Not yet packaged dependencies
+ #
+ # - Off for autotools build and didn't want more churn by
+ # enabling during port to CMake. Feel free to request them
+ # being turned on if useful for you.
+ #
+ # See cmake/helpers/CheckDependentLibraries.cmake for options
+ # *_*_package(Option) -> GDAL_USE_OPTION
+ -DGDAL_USE_ADBCDRIVERMANAGER=OFF
+ -DGDAL_USE_ARCHIVE=$(usex archive)
+ -DGDAL_USE_ARMADILLO=$(usex armadillo)
+ -DGDAL_USE_AVIF=$(usex avif)
+ -DGDAL_USE_ARROW=$(usex parquet)
+ -DGDAL_USE_BASISU=OFF
+ -DGDAL_USE_BLOSC=$(usex blosc)
+ -DGDAL_USE_BRUNSLI=OFF
+ -DGDAL_USE_CRNLIB=OFF
+ -DGDAL_USE_CFITSIO=$(usex fits)
+ -DGDAL_USE_CURL=$(usex curl)
+ -DGDAL_USE_CRYPTOPP=$(usex cryptopp)
+ -DGDAL_USE_DEFLATE=$(usex libdeflate) # complements zlib
+ -DGDAL_USE_ECW=OFF
+ -DGDAL_USE_EXPAT=ON
+ -DGDAL_USE_EXPRTK=$(usex exprtk)
+ -DGDAL_USE_FILEGDB=OFF
+ -DGDAL_USE_FREEXL=$(usex xls)
+ -DGDAL_USE_FYBA=OFF
+
+ -DGDAL_USE_GEOTIFF=$(usex system-tiff)
+ -DGDAL_USE_GEOTIFF_INTERNAL=$(usex !system-tiff)
+
+ -DGDAL_USE_GEOS=$(usex geos)
+ -DGDAL_USE_GIF=$(usex gif)
+ -DGDAL_USE_GTA=OFF
+ -DGDAL_USE_HEIF=$(usex heif)
+ -DGDAL_USE_HDF4=OFF
+ -DGDAL_USE_HDF5=$(usex hdf5)
+ -DGDAL_USE_HDFS=OFF
+ -DGDAL_USE_ICONV=ON # TODO dep
+ -DGDAL_USE_IDB=OFF
+ -DGDAL_USE_JPEG=ON # bug #965329
+
+ # https://gdal.org/build_hints.html#jpeg12
+ # Independent of whether using system libjpeg
+ -DGDAL_USE_JPEG12_INTERNAL=ON
+
+ -DGDAL_USE_JSONC=ON
+ -DGDAL_USE_JXL=$(usex jpegxl)
+ -DGDAL_USE_JXL_THREADS=$(usex jpegxl)
+ -DGDAL_USE_KDU=OFF
+ -DGDAL_USE_KEA=OFF
+ -DGDAL_USE_LERC=$(usex lerc)
+ -DGDAL_USE_LIBAEC=$(usex libaec)
+ -DGDAL_USE_LIBKML=OFF
+ -DGDAL_USE_LIBLZMA=$(usex lzma)
+ -DGDAL_USE_LIBQB3=OFF
+ -DGDAL_USE_LIBXML2=ON
+ -DGDAL_USE_LZ4=$(usex lz4) # FIXME
+ -DGDAL_USE_MONGOCXX=$(usex mongodb)
+ -DGDAL_USE_MRSID=OFF
+ -DGDAL_USE_MSSQL_NCLI=OFF
+ -DGDAL_USE_MSSQL_ODBC=OFF
+ -DGDAL_USE_MUPARSER=$(usex muparser)
+ -DGDAL_USE_MYSQL=$(usex mysql)
+ -DGDAL_USE_NETCDF=$(usex netcdf)
+ -DGDAL_USE_ODBC=$(usex odbc)
+ -DGDAL_USE_ODBCCPP=OFF
+
+ # unpackaged
+ -DGDAL_USE_OPENCAD=OFF
+ -DGDAL_USE_OPENCAD_INTERNAL=ON
+
+ -DGDAL_USE_OPENDRIVE=OFF
+ -DGDAL_USE_OPENEXR=$(usex openexr)
+ -DGDAL_USE_OPENJPEG=$(usex jpeg2k)
+ -DGDAL_USE_OPENSSL=ON
+ -DGDAL_USE_ORACLE=$(usex oracle)
+ -DGDAL_USE_PARQUET=$(usex parquet)
+ -DGDAL_USE_PCRE2=ON
+ -DGDAL_USE_PDFIUM=OFF
+
+ # Enable internal implementation so that tests pass with the use disabled
+ -DGDAL_USE_PNG=$(usex png)
+ -DGDAL_USE_PNG_INTERNAL=$(usex !png)
+
+ -DGDAL_USE_PODOFO=OFF
+ -DGDAL_USE_POPPLER=$(usex pdf)
+ -DGDAL_USE_POSTGRESQL=$(usex postgres)
+ -DGDAL_USE_QHULL=$(usex qhull)
+ -DGDAL_USE_RASTERLITE2=OFF
+
+ # upstream recommends using the internal implementation
+ # bug #935567
+ -DGDAL_USE_SHAPELIB=OFF
+ -DGDAL_USE_SHAPELIB_INTERNAL=ON
+
+ -DGDAL_USE_SPATIALITE=$(usex spatialite)
+ -DGDAL_USE_SQLITE3=$(usex sqlite)
+ -DGDAL_USE_SFCGAL=OFF
+ -DGDAL_USE_TEIGHA=OFF
+
+ -DGDAL_USE_TIFF=$(usex system-tiff)
+ -DGDAL_USE_TIFF_INTERNAL=$(usex !system-tiff)
+
+ -DGDAL_USE_WEBP=$(usex webp)
+ -DGDAL_USE_XERCESC=$(usex gml)
+ -DGDAL_USE_ZLIB=ON
+ -DGDAL_USE_ZSTD=$(usex zstd)
+
+ # Bindings
+ -DBUILD_PYTHON_BINDINGS=OFF # handled separately
+ -DBUILD_JAVA_BINDINGS=$(usex java)
+ # bug #845369
+ -DBUILD_CSHARP_BINDINGS=OFF
+
+ # Handled differently from x86
+ # First checks if the platform supports neon and if it supports the option will be available
+ # See SSE2NEON_COMPILES in CMakeLists.txt and gdal.cmake
+ -DGDAL_ENABLE_ARM_NEON_OPTIMIZATIONS=$(usex cpu_flags_arm_neon)
+ )
+
+ if use x86 || use amd64 ; then
+ mycmakeargs+=(
+ # Check work/gdal-3.5.0_build/CMakeCache.txt after configure
+ # and https://github.com/OSGeo/gdal/blob/master/cmake/helpers/CheckCompilerMachineOption.cmake#L71
+ # Commented out: not (yet?) implemented upstream.
+ #
+ # check_compiler_machine_option(flag <instruction set>) -> -Dtest_<instruction set>
+ -Dtest_avx=$(usex cpu_flags_x86_avx)
+ -Dtest_avx2=$(usex cpu_flags_x86_avx2)
+ -Dtest_sse=$(usex cpu_flags_x86_sse)
+ -Dtest_sse2=$(usex cpu_flags_x86_sse2)
+ #-Dtest_sse3=$(usex cpu_flags_x86_sse3)
+ -Dtest_sse4.1=$(usex cpu_flags_x86_sse4_1)
+ #-Dtest_sse4.2=$(usex cpu_flags_x86_sse4_2)
+ #-Dtest_sse4a=$(usex cpu_flags_x86_sse4a)
+ -Dtest_ssse3=$(usex cpu_flags_x86_ssse3)
+ #-Dtest_fma4=$(usex cpu_flags_x86_fma4)
+ #-Dtest_xop=$(usex cpu_flags_x86_xop)
+ )
+ fi
+
+ if use test ; then
+ mycmakeargs+=( -DUSE_EXTERNAL_GTEST=ON )
+ fi
+
+ cmake_src_configure
+
+ local cmake_build_dir="${BUILD_DIR}"
+ use python && distutils-r1_src_configure
+}
+
+python_compile() {
+ pushd "${S}_python/swig/python" >/dev/null || die
+ distutils-r1_python_compile
+ popd >/dev/null || die
+}
+
+src_compile() {
+ cmake_src_compile
+
+ local -x PATH="${BUILD_DIR}/apps:${PATH}"
+ local -x LD_LIBRARY_PATH="${BUILD_DIR}:${LD_LIBRARY_PATH}"
+ use python && distutils-r1_src_compile
+}
+
+python_test() {
+ local -x GDAL_DATA="${S}/data"
+
+ # note: testpaths in pytest.ini will fight EPYTEST_IGNORE
+ EPYTEST_IGNORE=(
+ # network-sandbox and deselecting tests turns into whac-a-mole with their interdependencies
+ "gcore/vsis3.py"
+ # All tests require network-sandbox
+ "ogr/ogr_ngw.py"
+ )
+
+ use !muparser && EPYTEST_IGNORE+=( "gdrivers/vrtpansharpen.py" )
+ use !pdf && EPYTEST_IGNORE+=( "gdrivers/pdf.py" )
+
+ EPYTEST_DESELECT=(
+ # network-sandbox
+ "gcore/basic_test.py::test_hint_http"
+ "gcore/tiff_read.py::test_tiff_read_strace_check"
+ "gcore/vsioss.py::test_vsioss_6"
+ "gdrivers/gdalhttp.py::test_http_ssl_verifystatus"
+ "gdrivers/hdf5multidim.py::test_hdf5_multimdim_eos_grid_dimension_list"
+ "gdrivers/jp2openjpeg.py::test_jp2openjpeg_45"
+ "gdrivers/vrtrawlink.py::test_vrtrawlink_GDAL_VRT_RAWRASTERBAND_ALLOWED_SOURCE_ONLY_REMOTE_accepted"
+ "gdrivers/wms.py::test_wms_8"
+ "gdrivers/zarr_driver.py::test_zarr_write_error_at_close_on_array"
+ "gdrivers/zarr_driver.py::test_zarr_write_error_at_close_on_group"
+ "ogr/ogr_csv.py::test_ogr_csv_schema_override"
+ "ogr/ogr_geojson.py::test_ogr_geojson_schema_override"
+ "ogr/ogr_gml.py::test_ogr_gml_type_override"
+ "ogr/ogr_gmlas.py::test_ogr_gmlas_billion_laugh"
+ "ogr/ogr_gmlas.py::test_ogr_gmlas_datetime"
+ "ogr/ogr_parquet.py::test_ogr_parquet_coordinate_epoch"
+ "ogr/ogr_parquet.py::test_ogr_parquet_crs_identification_on_write"
+ "ogr/ogr_parquet.py::test_ogr_parquet_edges"
+ "ogr/ogr_parquet.py::test_ogr_parquet_geoarrow"
+ "ogr/ogr_parquet.py::test_ogr_parquet_geometry_types"
+ "ogr/ogr_parquet.py::test_ogr_parquet_polygon_orientation"
+ "ogr/ogr_sqlite.py::test_ogr_sqlite_schema_override"
+ "pyscripts/test_validate_geoparquet.py::test_validate_geoparquet_ok"
+ "utilities/test_gdalinfo_lib.py::test_gdalinfo_lib_2"
+ "utilities/test_gdalinfo_lib.py::test_gdalinfo_lib_5"
+ "utilities/test_gdalinfo_lib.py::test_gdalinfo_lib_json_color_table_and_rat"
+ "utilities/test_ogrinfo_lib.py::test_ogrinfo_lib_extent3D"
+ "utilities/test_ogrinfo_lib.py::test_ogrinfo_lib_json_relationships"
+ "utilities/test_ogrinfo_lib.py::test_ogrinfo_lib_json_validate"
+
+ # sandbox interferes with strace?
+ "gcore/basic_test.py::test_basic_test_strace_non_existing_file"
+
+ # Breaks due to other deselects.
+ "ogr/ogr_gpkg.py::test_ogr_gpkg_immutable"
+ "ogr/ogr_gpkg.py::test_ogr_gpkg_nolock"
+ "ogr/ogr_parquet.py::test_ogr_parquet_read_large_binary_or_string_for_geometry"
+ "ogr/ogr_parquet.py::test_ogr_parquet_write_arrow_rewind_polygon"
+ "ogr/ogr_parquet.py::test_ogr_parquet_bbox_float32"
+ "ogr/ogr_sqlite.py::test_ogr_sqlite_34"
+
+ # Fails on new poppler versions due to checksum check
+ "gdrivers/pdf.py::test_pdf_extra_rasters[POPPLER]"
+
+ # flaky
+ "gdrivers/kmlsuperoverlay.py::test_kmlsuperoverlay_8"
+ )
+
+ if use !armadillo; then
+ EPYTEST_DESELECT+=(
+ # AssertionError: (1634, (3456541.352648813, 5640759.820845713, 0.0))
+ "gcore/transformer.py::test_transformer_tps_precision"
+ )
+ fi
+
+ if use !sqlite; then
+ EPYTEST_DESELECT+=(
+ # implicit sqlite requirement for the test (or the wms (curl) driver)?
+ "gdrivers/ogcapi.py::test_ogr_ogcapi_vector_tiles"
+ # expects sqlite being enabled in a warning message
+ "utilities/test_gdalalg_vector_rasterize.py::test_gdalalg_vector_rasterize"
+ )
+ fi
+
+ pushd "${S}_python/autotest" >/dev/null || die
+ # https://github.com/OSGeo/gdal/tree/v3.11.3/autotest#gdals-tests-are-not-independent
+ # So run directories separately with reruns to maximise chances without excluding every test
+ #
+ # See pytest_dirs in autotest/CMakeLists.txt.
+ # benchmark excluded on purpose as it uses pytest-benchmark
+ # gdrivers excluded as its especially flaky with excluding tests
+ # gnm excluded as you need to exclude 99% of it leaving only one or two tests
+ local failures=()
+ for pytest_dir in alg gcore gdrivers ogr osr pyscripts utilities; do
+ nonfatal epytest ${pytest_dir}
+ [[ ${?} != 0 ]] && failures+=( ${pytest_dir} )
+ done
+ popd >/dev/null || die
+
+ if [[ ${#failures} -gt 0 ]]; then
+ die "pytest failures: ${failures[@]}"
+ fi
+}
+
+src_test() {
+ local -x GDAL_RUN_SLOW_TESTS=0
+ local -x GDAL_DOWNLOAD_TEST_DATA=0 # tests relying on downloaded data **may** be skipped
+
+ cmake_src_test
+
+ local -x PATH="${BUILD_DIR}/apps:${PATH}"
+ local -x LD_LIBRARY_PATH="${BUILD_DIR}:${LD_LIBRARY_PATH}"
+ use python && distutils-r1_src_test
+}
+
+python_install() {
+ pushd "${S}_python/swig/python" >/dev/null || die
+ distutils-r1_python_install
+ popd >/dev/null || die
+}
+
+src_install() {
+ cmake_src_install
+
+ if use java; then
+ # Move the native library into the proper place for Gentoo. The
+ # library in ${ED} has already had its RPATH fixed, so we use it
+ # rather than ${BUILD_DIR}/swig/java/libgdalalljni.so.
+ java-pkg_doso "${ED}/usr/$(get_libdir)/jni/libgdalalljni.so"
+ rm -rf "${ED}/usr/$(get_libdir)/jni" || die
+ fi
+
+ use python && distutils-r1_src_install
+}
+
+pkg_postinst() {
+ elog "Check available image and data formats after building with"
+ if use tools; then
+ elog "gdal info --formats"
+ else
+ elog "gdal-config --formats"
+ fi
+
+ if use java; then
+ elog
+ elog "To use the Java bindings, you need to pass the following to java:"
+ elog " -Djava.library.path=$(java-config -i gdal)"
+ fi
+}
diff --git a/sci-mathematics/mathmod/files/mathmod-13.0-fix_comparison.patch b/sci-mathematics/mathmod/files/mathmod-13.0-fix_comparison.patch
new file mode 100644
index 000000000000..53a74cef6f05
--- /dev/null
+++ b/sci-mathematics/mathmod/files/mathmod-13.0-fix_comparison.patch
@@ -0,0 +1,24 @@
+backport https://github.com/parisolab/mathmod/commit/ddf9239f10fb0e07603297c06a23b7adeae8e323.patch
+see also https://github.com/parisolab/mathmod/issues/303
+fix comparison for clang
+--- a/ui_modules/mathmod.cpp
++++ b/ui_modules/mathmod.cpp
+@@ -1665,7 +1665,7 @@ void MathMod::CopyData(ObjectProperties *scene)
+ {
+ glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo[1]);
+- if(scene->VertxNumber>previousVertxNumber>0)
++ if((scene->VertxNumber>previousVertxNumber) && (scene->VertxNumber>0))
+ {
+ glBufferData(GL_ARRAY_BUFFER, sizeof(GL_FLOAT)*10*(scene->VertxNumber+(12+60+36)), scene->ArrayNorVer_localPt, GL_STATIC_DRAW);
+ previousVertxNumber = scene->VertxNumber;
+@@ -1676,7 +1676,8 @@ void MathMod::CopyData(ObjectProperties *scene)
+ previousVertxNumber = scene->VertxNumber;
+ }
+
+- if((scene->PolyNumber + scene->NbPolygnNbVertexPtMinSize)>previousPolyNumberNbPolygnNbVertexPtMin)
++ if(((scene->PolyNumber + scene->NbPolygnNbVertexPtMinSize)>previousPolyNumberNbPolygnNbVertexPtMin) &&
++ ((scene->PolyNumber + scene->NbPolygnNbVertexPtMinSize)>0))
+ {
+ glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(GLuint)*(scene->PolyNumber + scene->NbPolygnNbVertexPtMinSize), scene->PolyIndices_localPt, GL_STATIC_DRAW);
+ previousPolyNumberNbPolygnNbVertexPtMin = (scene->PolyNumber + scene->NbPolygnNbVertexPtMinSize);
diff --git a/sci-mathematics/mathmod/mathmod-13.0-r1.ebuild b/sci-mathematics/mathmod/mathmod-13.0-r1.ebuild
index b7ab90667be8..c09e64d86336 100644
--- a/sci-mathematics/mathmod/mathmod-13.0-r1.ebuild
+++ b/sci-mathematics/mathmod/mathmod-13.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -22,9 +22,10 @@ RDEPEND="
DEPEND="${RDEPEND}"
PATCHES=(
- # both merged
+ # all in master
"${FILESDIR}"/${PN}-13.0-missing_include.patch
"${FILESDIR}"/${PN}-13.0-fix_cxx20.patch
+ "${FILESDIR}"/${PN}-13.0-fix_comparison.patch
)
src_configure() {
diff --git a/sec-keys/openpgp-keys-libvirt/openpgp-keys-libvirt-20260831.ebuild b/sec-keys/openpgp-keys-libvirt/openpgp-keys-libvirt-20260831.ebuild
index c9450d4f6156..9dd76f2eae76 100644
--- a/sec-keys/openpgp-keys-libvirt/openpgp-keys-libvirt-20260831.ebuild
+++ b/sec-keys/openpgp-keys-libvirt/openpgp-keys-libvirt-20260831.ebuild
@@ -14,4 +14,4 @@ HOMEPAGE="https://www.libvirt.org/ https://gitlab.com/libvirt/libvirt/"
SRC_URI="https://download.libvirt.org/gpg_key.asc -> ${P}-gpg_key.asc"
SLOT="0"
-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"
diff --git a/sec-keys/openpgp-keys-mysql/Manifest b/sec-keys/openpgp-keys-mysql/Manifest
index 7301a906069d..55cb568bea7a 100644
--- a/sec-keys/openpgp-keys-mysql/Manifest
+++ b/sec-keys/openpgp-keys-mysql/Manifest
@@ -1,2 +1 @@
-DIST openpgp-keys-mysql-20231023.asc 3175 BLAKE2B 76ade4b39a24a03c6ebb0ada25207f86a9461bff1a1b62a118f061099e5272aa00564aa23ec91d7a2033d23905db00f6e2d012a4ed662d9929bb72ad2c47a233 SHA512 0731cc973718379968056bb18e117cfe161781715a928a3eefbff852b34ec9cd7aad7627e70759468711fee05d4bbfdbaba761cdead16247510f5209ba180c7f
DIST openpgp-keys-mysql-ubuntu-20250120.asc 5575 BLAKE2B 0d9df9641a9197ebf44fc668e7a34445c78d4f381387c0fbaa844a2072a97f8a21331820b9117e33dd18f98e53b9d3cadc27d35fb79428046b9ff3eaea44b603 SHA512 b766eb75aa41a65cb1bd40dd42a4d0b3cd91a238d3e95d8f614c549ae60202183d54de2ad80179465e795bc68abdf029847a2c7d0dfcf51cba0b9a3d1198d1bb
diff --git a/sec-keys/openpgp-keys-mysql/openpgp-keys-mysql-20231023.ebuild b/sec-keys/openpgp-keys-mysql/openpgp-keys-mysql-20231023.ebuild
deleted file mode 100644
index a9fdebb275cb..000000000000
--- a/sec-keys/openpgp-keys-mysql/openpgp-keys-mysql-20231023.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DESCRIPTION="OpenPGP keys used to sign MySQL releases"
-HOMEPAGE="https://dev.mysql.com/doc/refman/8.4/en/checking-gpg-signature.html"
-SRC_URI="https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 -> ${P}.asc"
-S="${WORKDIR}"
-
-LICENSE="public-domain"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-src_install() {
- local files=( ${A} )
-
- insinto /usr/share/openpgp-keys
- newins - mysql.asc < <(cat "${files[@]/#/${DISTDIR}/}" || die)
-}
diff --git a/sec-keys/openpgp-keys-openvpn/openpgp-keys-openvpn-202600704.ebuild b/sec-keys/openpgp-keys-openvpn/openpgp-keys-openvpn-202600704.ebuild
index 5551b85d5fee..c548470860df 100644
--- a/sec-keys/openpgp-keys-openvpn/openpgp-keys-openvpn-202600704.ebuild
+++ b/sec-keys/openpgp-keys-openvpn/openpgp-keys-openvpn-202600704.ebuild
@@ -13,4 +13,4 @@ DESCRIPTION="OpenPGP keys used for OpenVPN releases"
HOMEPAGE="https://community.openvpn.net/Downloads/Verify%20signature"
SLOT="0"
-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"
diff --git a/sys-apps/amdgpu_top/amdgpu_top-0.11.5.ebuild b/sys-apps/amdgpu_top/amdgpu_top-0.11.5.ebuild
index ef8c0482f5cb..cb0133a9032c 100644
--- a/sys-apps/amdgpu_top/amdgpu_top-0.11.5.ebuild
+++ b/sys-apps/amdgpu_top/amdgpu_top-0.11.5.ebuild
@@ -30,7 +30,7 @@ LICENSE+="
UbuntuFontLicense-1.0 Unicode-3.0 ZLIB
"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="amd64 ~arm64"
IUSE="man"
diff --git a/sys-boot/limine/Manifest b/sys-boot/limine/Manifest
index 2e3270792dc9..46c060b098d0 100644
--- a/sys-boot/limine/Manifest
+++ b/sys-boot/limine/Manifest
@@ -1 +1 @@
-DIST limine-12.6.1.tar.gz 724863 BLAKE2B 4743aa2fd7ebc1914f1101e00a5b0aa2df75446e741489d85e4b17b1fe8921f62929461d01ada4eff6d8fa9c47adeb2a772f45daaaf389995af8626093d7987e SHA512 23a888f5db7b835ae1fd9bcc7fbe02f73298cac2bcd76414f3adf48958be842620366c536421585d07e615ba77d0a1e48c2c62cb6abeea954a41df67edc27663
+DIST limine-12.9.0.tar.gz 733599 BLAKE2B 82bd8848dcfbf2982014d655a109810e8df2cc6a50d29dad97da9aa4d85b3609ec7d97481092fa214f306efc54fe4897dcd3fee5422f32c52bc9cc19b5cc346a SHA512 98e77c9c3788a9b0ef267a051eae714f1668752b76328dc6c6516a7edfd297b742351f4623fa7c194a42e5fa5df1adcd942bc1bd035534c901817df2e7d23ecc
diff --git a/sys-boot/limine/limine-12.6.1.ebuild b/sys-boot/limine/limine-12.9.0.ebuild
index e5a5e9f35a54..e5a5e9f35a54 100644
--- a/sys-boot/limine/limine-12.6.1.ebuild
+++ b/sys-boot/limine/limine-12.9.0.ebuild
diff --git a/sys-cluster/prrte/prrte-4.1.0.ebuild b/sys-cluster/prrte/prrte-4.1.0-r1.ebuild
index 3cb08ca1d69a..d8161140a0a0 100644
--- a/sys-cluster/prrte/prrte-4.1.0.ebuild
+++ b/sys-cluster/prrte/prrte-4.1.0-r1.ebuild
@@ -37,7 +37,11 @@ src_configure() {
# https://github.com/openpmix/openpmix/issues/3350
filter-lto
- econf
+ econf --without-legacy-tools
+
+ # do not install conflicting pterm man page #981014
+ sed -i 's/pterm.1//' docs/Makefile || die
+ sed -i 's/prun.1 \\/prun.1/' docs/Makefile || die
}
src_install() {
diff --git a/sys-process/atop/Manifest b/sys-process/atop/Manifest
index d54947935b6f..eeeb290a2ca7 100644
--- a/sys-process/atop/Manifest
+++ b/sys-process/atop/Manifest
@@ -1,2 +1,3 @@
DIST atop-2.12.1.tar.gz 336538 BLAKE2B 5a7de979f6a919415cea7e68b2410f7d0f75b887ec1841e5061d2db3010f04335b9fa921d1c0fc78866b93e2808a6771a50caede920c465fc294007f88f1a58e SHA512 e01db51bf025598e7bad585f62761e10d23a77f6c7be96418bc8919a72c74628851ae5cbdc0c12ed752f80b44f5b72f2102692dbbb3210cacc59b32340107ce7
+DIST atop-2.13.0.tar.gz 354561 BLAKE2B 7b1a86b2025c304c804392c2da526cba90e4c77628c0c7a8a954c1290a3add888ab9b252bceb7ad0ed43d70c912ffb857d677f0e10d270fe025b28d32e0e0a82 SHA512 646e5c2d224fafd7635395cef6b5ad173dda872b8c39c120e0e31b9634a4b04174b7e5ce6885fc6c35e72c11a41f450a2c29fc648512b81f11cf55532b19220d
DIST netatop-3.2.2.tar.gz 23977 BLAKE2B cf360071e56593251df4249d2c7ec8a1c823c71a4d96e5b7f5d02ab0dc8388eb22d34c4120924c5a5ecc9b4d610a14785e5002bc3b888aa4c66d8c73454a0900 SHA512 59ff6daf56f73578cfc7b48085747d3f2917589203196396dde6036c33da0dbce4b67b58c141545a785beb31ebeb35936d96bb6ff3b6071e95315a32e20d6093
diff --git a/sys-process/atop/atop-2.13.0.ebuild b/sys-process/atop/atop-2.13.0.ebuild
new file mode 100644
index 000000000000..cfca17fd76a3
--- /dev/null
+++ b/sys-process/atop/atop-2.13.0.ebuild
@@ -0,0 +1,151 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Check on bumps of atop
+# https://www.atoptool.nl/downloadnetatop.php
+NETATOP_VER=3.2.2
+
+# Controls 'netatop' kernel module
+MODULES_OPTIONAL_IUSE="modules"
+NETATOP_P=netatop-${NETATOP_VER}
+NETATOP_S="${WORKDIR}"/${NETATOP_P}
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit linux-mod-r1 python-single-r1 systemd toolchain-funcs flag-o-matic
+
+DESCRIPTION="Resource-specific view of processes"
+HOMEPAGE="https://www.atoptool.nl/ https://github.com/Atoptool/atop"
+SRC_URI="
+ https://www.atoptool.nl/download/${P}.tar.gz
+ modules? ( https://www.atoptool.nl/download/${NETATOP_P}.tar.gz )
+"
+
+# Module is GPL-2 as well
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~x86"
+IUSE="video_cards_nvidia"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ dev-libs/glib
+ sys-libs/ncurses:=
+ virtual/zlib:=
+ >=sys-process/acct-6.6.4-r1
+ video_cards_nvidia? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/nvidia-ml-py[${PYTHON_USEDEP}]
+ ')
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.12.0-respect-opt.patch
+ "${FILESDIR}"/${PN}-2.13.0-build.patch
+)
+
+pkg_setup() {
+ if use modules; then
+ linux-mod-r1_pkg_setup
+ fi
+
+ if use video_cards_nvidia ; then
+ python-single-r1_pkg_setup
+ fi
+}
+
+pkg_pretend() {
+ if use kernel_linux ; then
+ CONFIG_CHECK="~BSD_PROCESS_ACCT"
+ check_extra_config
+ fi
+}
+
+src_prepare() {
+ append-cflags -std=gnu17 # bug #945250
+ default
+
+ if use modules ; then
+ cd "${WORKDIR}"/${NETATOP_P} || die
+ eapply "${FILESDIR}/netatop-3.2.2-strict-prototype.patch"
+
+ sed \
+ -e "s#\`uname -r\`#${KV_FULL}#g" \
+ -e "s#\$(shell uname -r)#${KV_FULL}#g" \
+ -i Makefile || die
+
+ grep -rq "uname -r" && die "found uname calls"
+
+ cd "${S}" || die
+ fi
+
+ tc-export CC PKG_CONFIG
+
+ # bug #191926
+ sed -i 's: root : :' atop.cronsysv || die
+
+ # Prefixify
+ sed -i "s:/\(usr\|etc\|var\):${EPREFIX}/\1:g" Makefile || die
+}
+
+src_compile() {
+ default
+
+ local modlist=( "netatop=:../${NETATOP_P}::netatop.ko" )
+ linux-mod-r1_src_compile
+
+ if use modules ; then
+ # Don't let the Makefile try to build the module for us
+ emake -C "${NETATOP_S}" netatopd
+ fi
+}
+
+src_install() {
+ linux-mod-r1_src_install
+
+ if use modules ; then
+ dosbin "${NETATOP_S}"/netatopd
+ doman "${NETATOP_S}"/man/*
+
+ systemd_dounit "${NETATOP_S}"/netatop.service
+
+ newinitd "${NETATOP_S}"/netatop.rc netatop
+ fi
+
+ emake DESTDIR="${D}" genericinstall
+
+ if use video_cards_nvidia ; then
+ systemd_dounit "${S}"/atopgpu.service
+
+ newinitd "${FILESDIR}"/atopgpud.initd atopgpud
+
+ python_fix_shebang "${ED}/usr/sbin/atopgpud"
+ else
+ rm "${ED}"/usr/sbin/atopgpud || die
+ fi
+
+ # useless -${PV} copies ?
+ rm "${ED}"/usr/bin/atop*-${PV} || die
+
+ newinitd atop.rc.openrc ${PN}
+ newinitd atopacct.rc.openrc atopacct
+
+ systemd_dounit "${S}"/${PN}.service
+ systemd_dounit "${S}"/atopacct.service
+
+ dodoc atop.cronsysv AUTHORS README
+
+ exeinto /usr/share/${PN}
+ doexe ${PN}.daily
+
+ insinto /etc/default
+ newins ${PN}{.default,}
+
+ keepdir /var/log/${PN}
+}
diff --git a/sys-process/atop/files/atop-2.13.0-build.patch b/sys-process/atop/files/atop-2.13.0-build.patch
new file mode 100644
index 000000000000..c09ed5eab31f
--- /dev/null
+++ b/sys-process/atop/files/atop-2.13.0-build.patch
@@ -0,0 +1,54 @@
+From e0266fa48b484386b5ebeba8b3d1957ac09f013c Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sun, 11 Aug 2024 22:04:15 +0100
+Subject: [PATCH] Respect *FLAGS, use pkg-config
+
+* Respect CFLAGS
+* Use pkg-config instead of hardcoding -lncursesw (in particular, this
+ is needed if a distribution has 'split tinfo')
+
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ Makefile | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 8ead5e9..968f13f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -22,7 +22,7 @@ PMPATHD = /usr/lib/systemd/system-sleep
+
+ PKG_CONFIG ?= pkg-config
+
+-override CFLAGS := -I. -Wall $(shell $(PKG_CONFIG) --cflags glib-2.0) -Wmissing-prototypes -Wmissing-declarations -Wformat-security $(CFLAGS) # -DNOPERFEVENT # -DHTTPSTATS
++override CFLAGS := -I. -Wall $(shell $(PKG_CONFIG) --cflags glib-2.0) $(shell $(PKG_CONFIG) --cflags ncursesw) -Wmissing-prototypes -Wmissing-declarations -Wformat-security $(CFLAGS) # -DNOPERFEVENT # -DHTTPSTATS
+
+ CC_CHECK := $(shell echo | $(CC) -dM -E - | grep -q __clang__ && echo clang || echo gcc)
+ ifeq ($(CC_CHECK),gcc)
+@@ -43,19 +43,19 @@ VERS = $(shell ./atop -V 2>/dev/null| sed -e 's/^[^ ]* //' -e 's/ .*//')
+ all: atop atopsar atopacctd atopconvert atopcat atophide
+
+ atop: atop.o $(ALLMODS) Makefile
+- $(CC) atop.o $(ALLMODS) -o atop -lncursesw -lz -lm -lrt $(LDFLAGS)
++ $(CC) $(CFLAGS) atop.o $(ALLMODS) -o atop $(shell ${PKG_CONFIG} --libs ncursesw) -lz -lm -lrt $(LDFLAGS)
+
+ atopsar: atop
+ ln -sf atop atopsar
+
+ atopacctd: atopacctd.o netlink.o
+- $(CC) atopacctd.o netlink.o -o atopacctd $(LDFLAGS)
++ $(CC) $(CFLAGS) atopacctd.o netlink.o -o atopacctd $(LDFLAGS)
+
+ atopconvert: atopconvert.o
+- $(CC) atopconvert.o -o atopconvert -lz $(LDFLAGS)
++ $(CC) $(CFLAGS) atopconvert.o -o atopconvert -lz $(LDFLAGS)
+
+ atopcat: atopcat.o
+- $(CC) atopcat.o -o atopcat $(LDFLAGS)
++ $(CC) $(CFLAGS) atopcat.o -o atopcat $(LDFLAGS)
+
+ atophide: atophide.o
+ $(CC) atophide.o -o atophide -lz $(LDFLAGS)
+--
+2.55.0
+
diff --git a/sys-process/atop/files/netatop-3.2.2-strict-prototype.patch b/sys-process/atop/files/netatop-3.2.2-strict-prototype.patch
index 3cb1d6fc5040..65a6a7c59ed3 100644
--- a/sys-process/atop/files/netatop-3.2.2-strict-prototype.patch
+++ b/sys-process/atop/files/netatop-3.2.2-strict-prototype.patch
@@ -1,9 +1,14 @@
Fix for strict prototypes error: declarations are fine,
definitions are missing void
https://bugs.gentoo.org/949835
---- a/netatop.c 2024-06-01 15:19:08.000000000 +0400
-+++ b/netatop.c 2025-02-16 15:48:07.094848633 +0400
-@@ -1053,7 +1053,7 @@
+
+Replace the deprecated init_module() and cleanup_module() entry points
+with the module_init() and module_exit() macros.
+https://bugs.gentoo.org/959282
+diff --git a/netatop.c b/netatop.c
+--- a/netatop.c
++++ b/netatop.c
+@@ -1053,7 +1053,7 @@ garbage_collector(void)
** can be found at the head
*/
static void
@@ -12,7 +17,7 @@ https://bugs.gentoo.org/949835
{
unsigned long flags;
struct taskinfo *tip;
-@@ -1087,7 +1087,7 @@
+@@ -1087,7 +1087,7 @@ gctaskexit()
** cleanup sockinfo structures that are connected to finished processes
*/
static void
@@ -21,7 +26,7 @@ https://bugs.gentoo.org/949835
{
int i;
struct sockinfo *sip, *sipsave;
-@@ -1300,7 +1300,7 @@
+@@ -1300,7 +1300,7 @@ gcsockinfo()
** remove taskinfo structures of finished tasks from hash list
*/
static void
@@ -30,7 +35,7 @@ https://bugs.gentoo.org/949835
{
int i;
struct taskinfo *tip, *tipsave;
-@@ -1376,7 +1376,7 @@
+@@ -1376,7 +1376,7 @@ gctaskinfo()
** remove all sockinfo structs
*/
static void
@@ -39,7 +44,7 @@ https://bugs.gentoo.org/949835
{
struct sockinfo *sip, *sipsave;
int i;
-@@ -1404,7 +1404,7 @@
+@@ -1404,7 +1404,7 @@ wipesockinfo()
** remove all taskinfo structs from hash list
*/
static void
@@ -48,7 +53,7 @@ https://bugs.gentoo.org/949835
{
struct taskinfo *tip, *tipsave;
int i;
-@@ -1432,7 +1432,7 @@
+@@ -1432,7 +1432,7 @@ wipetaskinfo()
** remove all taskinfo structs from exit list
*/
static void
@@ -57,21 +62,32 @@ https://bugs.gentoo.org/949835
{
gctaskexit();
}
-@@ -1768,7 +1768,7 @@
+@@ -1767,8 +1767,8 @@ static struct pernet_operations netatop_net_ops = {
+ /*
** called when module loaded
*/
- int
+-int
-init_module()
-+init_module(void)
++static int __init
++netatop_init(void)
{
int i;
-@@ -1869,7 +1869,7 @@
+@@ -1868,8 +1868,8 @@ init_module()
+ /*
** called when module unloaded
*/
- void
+-void
-cleanup_module()
-+cleanup_module(void)
++static void __exit
++netatop_exit(void)
{
/*
** tell kernel daemon to stop
+@@ -1903,3 +1903,6 @@ cleanup_module()
+ kmem_cache_destroy(ticache);
+ kmem_cache_destroy(sicache);
+ }
++
++module_init(netatop_init)
++module_exit(netatop_exit)
diff --git a/www-nginx/ngx-lua-upstream/ngx-lua-upstream-0.07.ebuild b/www-nginx/ngx-lua-upstream/ngx-lua-upstream-0.07.ebuild
index e45a9748167f..d47d4e6abf7c 100644
--- a/www-nginx/ngx-lua-upstream/ngx-lua-upstream-0.07.ebuild
+++ b/www-nginx/ngx-lua-upstream/ngx-lua-upstream-0.07.ebuild
@@ -39,7 +39,7 @@ PATCHES=(
)
src_configure() {
- ngx_mod_append_libs "$(lua_get_LIBS)"
+ ngx_mod_append_ldflags "$(lua_get_LIBS)"
append-cflags "$(lua_get_CFLAGS)"
nginx-module_src_configure
diff --git a/www-nginx/njs/Manifest b/www-nginx/njs/Manifest
index 336d28102ca6..1009dc26d07f 100644
--- a/www-nginx/njs/Manifest
+++ b/www-nginx/njs/Manifest
@@ -1 +1,2 @@
DIST njs-0.9.9.tar.gz 994273 BLAKE2B c37d9054f7691fe38b6ee750b32964315dd19c62f0ce3b91bed9ce009760f86234cb6280301560753dbdfccef73ff3d88898fcd23a415ec265249ac2eaaed511 SHA512 67b921c127fabb0ac0a8e53f63291af3227db0d2a9d67f32bfc853072403d9634f19ef736513a4007673fc98e1d3be8a5b3ac4832b04956852e43706891c38be
+DIST njs-1.0.1.tar.gz 1003218 BLAKE2B f4f11b9bdfbc5e92a2b51ed3d92d639e9c0072a41bf54886ffe533c8c1993743ed4f8b77ed34fc1f2e222957f7228a76039c201659893bb978a79bb255f12290 SHA512 4531873957ec947e7e4c36d2713efff624aead0de1f3a8978efd3a06c1fdfd07fc848dcfb4cb284149b5ed91ba3f00030fe49c17f5d1aabda7efc1d38da31bda
diff --git a/www-nginx/njs/njs-1.0.1.ebuild b/www-nginx/njs/njs-1.0.1.ebuild
new file mode 100644
index 000000000000..7c28524a6492
--- /dev/null
+++ b/www-nginx/njs/njs-1.0.1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+NGINX_MOD_CONFIG_DIR="nginx"
+
+inherit edo nginx-module toolchain-funcs
+
+DESCRIPTION="A subset of JavaScript language to use in NGINX"
+HOMEPAGE="https://github.com/nginx/njs https://nginx.org/en/docs/njs/"
+SRC_URI="
+ https://github.com/nginx/njs/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+IUSE="tools +ssl +xml +zlib"
+
+RDEPEND="
+ dev-libs/quickjs-ng:=
+ tools? (
+ dev-libs/libpcre2:=
+ sys-libs/readline:=
+ )
+ ssl? ( dev-libs/openssl:= )
+ xml? (
+ dev-libs/libxml2:=
+ dev-libs/libxslt:=
+ )
+ zlib? ( virtual/zlib:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_configure() {
+ ## The core part, i.e. libnjs and libqjs.
+ local myargs=(
+ --build-dir=build
+ --cc="$(tc-getCC)"
+ --ld-opt="${LDFLAGS}"
+ --ar="$(tc-getAR)"
+ )
+
+ local nocliargs=(
+ --no-openssl
+ --no-libxml2
+ --no-zlib
+ )
+
+ if use tools; then
+ use !ssl && myargs+=( '--no-openssl' )
+ use !xml && myargs+=( '--no-libxml2' )
+ use !zlib && myargs+=( '--no-zlib' )
+ else
+ myargs+=( "${nocliargs[@]}" )
+ fi
+
+ edo ./configure "${myargs[@]}"
+
+ ## The NGINX module part.
+ # Build the stream module unconditionally.
+ sed -i "s/\\\$STREAM/YES/" nginx/config ||
+ die "sed failed"
+
+ # Export PKG_CONFIG for pkg-config-based QuickJS-NG detection.
+ tc-export PKG_CONFIG
+
+ if use ssl; then
+ # Because NGINX build system refuses to link OPENSSL and ZLIB normally
+ # like other libraries.
+ ngx_mod_link_lib openssl
+ else
+ local -x NJS_OPENSSL=NO
+ fi
+
+ if use zlib; then
+ # Ditto.
+ ngx_mod_link_lib zlib
+ else
+ local -x NJS_ZLIB=NO
+ fi
+
+ use !xml && local -x NJS_LIBXSLT=NO
+
+ nginx-module_src_configure
+}
+
+src_compile() {
+ # Build the core first.
+ if use tools; then
+ emake
+ else
+ emake libnjs libqjs
+ fi
+
+ nginx-module_src_compile
+}
+
+src_install() {
+ use tools && dobin build/njs
+
+ nginx-module_src_install
+}
diff --git a/www-servers/nginx/Manifest b/www-servers/nginx/Manifest
index cbed86557ea8..de212e00b639 100644
--- a/www-servers/nginx/Manifest
+++ b/www-servers/nginx/Manifest
@@ -1,45 +1,5 @@
-DIST modsecurity-nginx-1.0.3.tar.gz 34063 BLAKE2B 859a29eb7f67d53a818578f1008f0d0debbe37c205bb7c6e79594d8b1a6a0d93988880d35f607ef05ef6d73c9aa887baebfd2c54aca894969beeed4bfe576f37 SHA512 20495884c6b3594edf879a19fd7445f2e74a1628789decd146b3c712764b0507e440a84a64aab619461b044f98b8d641913cfad57a6d0002e7061716bdfe84fc
-DIST nginx-1.26.3.tar.gz 1260179 BLAKE2B 4ef731070e986d98fc1984717dec7fb766ed1a02b196c3ae9a69deea7093d17253b46c06f4eb812a19187be49e42c1a485a54ba3e2e639b5084ef2b0e2287212 SHA512 cd780e495796bf7413e54a6730d11d55127b0ca6563acf5c75eb2698f62cddbbf5ba61820c57b2316c0bb789fcfd17f98a27a84b525ed50f304d1b1043ffa05d
-DIST nginx-1.27.5.tar.gz 1279891 BLAKE2B 6d7fd563d201e8ed985810e418f9981fd0adedf7b40bb3cf8278819a88ecaea148df7df69ff0240cfd028df86d92734e9d20449c2178d3e4b82e78bb0cef3e36 SHA512 5130bc2ec08a962b631ceb741ecb3dc0d84423ca50afb713d9c52c13af1e1bf5e2b0be226936d6dfbc7c2a45b44726ba478a571c6032099bc8ece85fe015ccbc
-DIST nginx-1.29.5.tar.gz 1310203 BLAKE2B 15fd97ce91dcc9b2f882adcafbc6e265e02493bbc0ee0b37b30ac619bc7488a153dafccc1b25cdffa86c5279291345350396984fb6e57a438468424357c31b33 SHA512 721b5f8d5484b4508c3fffc5aa8239212266ad8635ea9e5b2c3d5f0349e0846ab9dd3c1e1409435b30989aa83d4b65113a8ab8854fff725c55b9043f17435235
-DIST nginx-1.29.7.tar.gz 1323485 BLAKE2B 24676ec144681fc82da5c8377b534c42be0f8334af9a3561a56c3b49b3c9e17f91a05553459319e9da4d512fffe8bbba6c6f935cf28e2cfb42773b6e456af856 SHA512 00a39c8e79c98b86f814720c9f1bd87d6ec608c436f6b6dfe18c69e7ac12cb6d04f8717976653b782b59ef5b8dbf3c97c6b577b2e2c33423dd13fbe222ec9e86
-DIST nginx-1.30.0.tar.gz 1324188 BLAKE2B 6a0241e636b087f95a34acc3ddb2c281aacd5e465b2ec02195912acb183a451c2e7124674911b0d54bc02a953adb4942a1965eb371869fb0ddc6313a05b2b572 SHA512 9df502279583ea305e2d7a4cbe67c54cbcdb880f1caf010d582eea8839bda3bc6dd5e244bb79e848a70ad0c9fda9927cb8d9d8c5fc1bc49acc2da9e734543d7c
-DIST nginx-1.30.2.tar.gz 1325247 BLAKE2B 0800ae2326753e2b6d551b03aaad8f2c0fecdce5d34c5497175ff173bcade0dfaf5f24ab3074fcdfe44ef60820e8e901f0461f4c0917cd07b5401424a5f8d64c SHA512 dbba779a15595a77f340795c3a06bf5f846f351a14738f36085b3251f053c6b2946f112640754b8470b541ca45319fb599111cffc06e5cf2ac2384e64d16348c
-DIST nginx-1.30.3.tar.gz 1325830 BLAKE2B b50e47d3ef339f961f08eea4b2a2fe9067d4f346fc0f4659720c751e19fc08d66351f08c9af49e9eeb09e0b4bfa374edc573dbc865a1bcf6e4dd22f4325c54f4 SHA512 13b479cb2e80bbe7e0b977bd762e70b0cb95c7ce5dc80da61ab59fbcf2da19eca266dc82a8ef1a8b8c8c19c22948abd1aa6a3817bf490880ae175f7e2f692495
DIST nginx-1.30.4.tar.gz 1328314 BLAKE2B dfcc320f6798fd8991d73c44e5cde53f839dd43d8f169274a8e804c5aa3e7ed447f167a6d47b27caba8bbb11f34ea2cfe9ef685c6c9fba274bca6e3ed1232978 SHA512 48c21de65fa188137a4088d02c28e2533a7164040bf19281637e025012e6d03afcacb0ee15463a107685a2a221037f24ce15fc89c46b6f7a36b94443d3993bf1
-DIST nginx-1.31.1.tar.gz 1337505 BLAKE2B 855145c876537eac36cdcc1e6e3c83c9e2880769a14c3588a7413ebe2c8b8505c4541835027bd294e40a295611b6a701d4db362a6c2ce4d2ea30c9ae02e620ef SHA512 054f2aa86eff18b0633e80329d8595bf66d937b0bb55a90d4bbb4d64ece90b49429d9a572c31d8d8a4cdd019ffcc2b9fea3c10d2ff87e7005baa47335d9121f1
-DIST nginx-1.31.2.tar.gz 1339618 BLAKE2B b5b692269ee827a9e874a4aad8b3d8a71dad545d354e1732f1001de58727d37b96f441048f7834afea86d709d26b4600a72a60eb3d2574bca06e01ff03d1bba9 SHA512 590fcb78b0abe51c2810fd9cce4618c2871fce9cceda7e1f7e401979df793afd3fd89b26db369e269db62ea7fa73c447f45db4b08747219690f387e319afcdd0
DIST nginx-1.31.3.tar.gz 1344885 BLAKE2B 490a9af0d264ab23932e30f5c88b15675f2682bee66a678e1449a20adb63ab1e77b64cdcea7dad581c63234f3fdb31c1bb82da7f042fca3c146dbda5e5a04113 SHA512 ecd1acc9e02fc7ae800607850e1f057f84e1ec32525f19e64235dc6f45e5731fdb19dac91a2f83207e9c0de77b6756341ad41ba806e6c7773898797568a1bdfa
-DIST nginx-auth-ldap-42d195d7a7575ebab1c369ad3fc5d78dc2c2669c.tar.gz 18457 BLAKE2B 22225ca9e5299b20ab5a93a001cac48e446bd86b3a24ac49e716bc975b128890bdb4b0dbbf5730fbaaeadfd958160093c7a6af798dd0e6de27062f149a760333 SHA512 ec59637fda5acac053e815cb1d04b545fc6b765e5ec63d8c2c9c301abad87afaa2698145acac08e9e14c91e1423ebff7aff0cca2b940b19ccccbf4cf53973269
-DIST nginx-tests-0b5ec15c62ed.tar.gz 282652 BLAKE2B af41397f88f7aa969749c6dd9a77c58d1835bca24fe764dd0af328d621817f5fb89b3f5b5c0fbd1e7db53d51365e9098b020005e27a531649bd8a51a05b3cbb0 SHA512 c376d23c7001c5203428b664c388e97956cdda8365eb7df57db0da5146d0806f5c35cd1352260d6803d55542f46a90da4a604ebf971055caa77dd6106930558e
-DIST nginx-tests-0f72f59c40de9977bd8f3deff5d200e761b8b683.tar.gz 342145 BLAKE2B b89aea07ef6df58e36448dd43c891dbbc850ea378a53c7d945f743e359d2f7dbb626d694bab67459801a476bbacea4cd5a4928cb91ae2766ab6a675f2873e843 SHA512 c88e0384c76eaff380f37bb4210ae3ca5c2557758cdad132eff68e05ed4ef307d987a5d283f0778ee49d3ba76406e5b94e68a9119ca4f7f597188e0fd3c9c0ca
-DIST nginx-tests-2993130953b28ff4d64ea75b5bd35c92c7e510f7.tar.gz 328153 BLAKE2B 1ed978c53adce580be0d77872edcc3f93097d47c447ec4984b775d80437249f896ab3422248218d4316a49d189c6a28c773e9624adef54b7c077739f1f064599 SHA512 30686b78f64f557b6d1a79280cb165c9a818b0e83578d371370099e6f5bb7769bb4842937bfe61a459678e29cf4d680be8ce5a5c63c1b9aa87989be81e6f80df
+DIST nginx-1.31.5.tar.gz 1371858 BLAKE2B 0496e78644687116ea7a863bff318e612924f2cf0cae44c8774a02a7893a441b694dec38dd2c9d05aed4898b0003ee92c69f8cdcd207fc0f513a42e228d55af5 SHA512 282d4504fb99e11d1b1a946ea67dc5573506aa89ec75bcd12fbca54693b6e2b1cf3f59853d2e13f4e31c25a0ec1b2ebf248912ff7a24d7e27d7221aa478f0c2f
DIST nginx-tests-466b8e27b9963b307ea6d4a198268d3d6a325ba6.tar.gz 351518 BLAKE2B d384209f2f8c7921dfbb904a5362477b1a1782222d11254a81fc7d3f8c1de487cfa568efcdb904f2785b4927c63d6abcbc8cbf3b2c85b9aba4a0c03fc74f06b5 SHA512 e63728d1063160d86e8bcb141bce68fb84ee2c01058bf308095905162f8dea2852efd5acaef87614a2c41dcfd53ab9e79c4143f223616972fdc24cf1fd1aa6e3
-DIST nginx-tests-4d1de3f357afeb91865d024b27516d6b67aad86e.tar.gz 349966 BLAKE2B 00c379997252506e7b2c29b8815455ede0b368f89b9e7ea69b090086e565e988542ab34fcef4764ca2d222457a2808e38d38eb3392bc1ddc8b041b388bcc774c SHA512 60a42f953f73bf375ea70105bbe1df9d55eb2230a5d9fd7d5ca1db5b5f6a012c87426b7ab80b6704122cad369c0cfe4f3f3bc148c6763e955bd603db0e33df04
-DIST nginx-tests-56ae49add9286d2e896a22bcfb880c7ea7c3964e.tar.gz 350052 BLAKE2B 572593991c083042304fdddd9deb9a6a7aeeb0d5cab4e2f21d1ca03085c7ee29428943c174e659df2f274f2bcfc32a1855fb05be4f43a8566ad85556029ce6f9 SHA512 603b81407604af1615de31d44dd7f25ae5dfd59dbb19214b1397359e3c36a0e880ed90a08118b4f201dc17b65d36a4f4a054ce868c9f7b06d9bf35cebb7aeeff
-DIST nginx-tests-cf90a22921652731302e8a4dc2a88049c723377d.tar.gz 340698 BLAKE2B e9674d915d51ca79b8c405f5bb7dd3e148473338b2f25799fb51092858385defbd5bf6da150d20280a338f5d838d90966fa23ced7101224a292aec200a53d1c2 SHA512 aa756ac38249fa9dc1c54588ef826146024b7bcf5fe7a2fe1d82a46d55597653c41146ba3e743f954ed8ec7380698ecec31893b4fd7d3942f332304d6afe4c47
-DIST nginx-vod-module-1.33.tar.gz 471858 BLAKE2B fa5cb9fd185b30c5c53b25a6f103213b3d04dac5d2d81db72f9749a51548e09e3e17dccc636d748aff8d21c6623484c77fdeb10d70854480759665d140d42e0e SHA512 29ef77f1bbdb2410ff317ebdd7434f31b8ec370ae6b617b92e745e87c11bc820b451181d1d2b57156b414348da14ac448b689b32b17ab418144292eda094512d
-DIST nginx_http_sticky_module_ng-1.2.6-10-g08a395c66e42.tar.bz2 124047 BLAKE2B d37ef9a15c91abe3c6258e420d1f99fa452f9d9966a0e13102174973314a3bac5413957a5fe632a9dcb1163b3be5df8116e05cc053ee061e19319ec25f341570 SHA512 6c1bfdcf89884b2855d51ae7da0f6e53a4ca3629e1aaf58433b70c07dcb2af797ba6e87d9b3eb4fe2fb6d4d697e862f2b4c2f8d8b3fdaea201740c97ec936529
-DIST ngx_brotli-1.0.0rc.tar.gz 16207 BLAKE2B 450d0ea693bd98d4a1b615f2cdcaad41ccd28266f6d80beec7fe77fe750ab8c5d1bb55aabe15161b9b6d819d2b4d99a7774f2706f2f6fd084b52a7c7dddbc00c SHA512 05a880d5e48ac83be84498ed41fb4750211b827a9d7541acfd6ef494e5205a6e853d5594bfec3ab4ae668ea3f803e4f4b0ba550c76811971c8e266e42663c56d
-DIST ngx_devel_kit-0.3.1.tar.gz 66542 BLAKE2B 8242d884464d99a131a48f599f9d0c2b546610f73f646e7eb0dcfdb98220810d949189cffa721360ddbe3b7b8adc8b678a848b9d1a56db6c62fd4439ecb63d24 SHA512 de1e3349d8dd08e5982279b2219dc8a8006739f0409b8e0f5c50d93434beff1fbafba43e9c5ac85a5fab90afc5c0a7244a340610339c36f82f2cba7233e72de9
-DIST ngx_http_auth_pam-1.5.2.tar.gz 7016 BLAKE2B 1efc8d2d12aa09a2b2a36f6f6d0132ac21fcd1720a2843ce598450198e2b7fe902e9ded15a78b66e8a897e811faa872e4e391bf211c795e320c1ccd57607c319 SHA512 b82e401533c44298c41bc9a1caaf3f7850e42da151c06a77a927f817810ebf5ce01c49ca81de42c326345765c784bb55e28fbf0f6a5500626f51e58a216b53c4
-DIST ngx_http_cache_purge-2.3.tar.gz 12248 BLAKE2B f83b267f4c19a9d4af5964522695814c164d200ecd4108bf8f6b5c21388eba8af989bdda646dee18a03174211e8c090a04736bbeb44043cb0e19fbccdc66278e SHA512 50a31dbf2216a6fae74a186af56dec4600cf55777e76a10ac0075f609e7737135aab063a64f2590dddcd0369ebebd4a523027f3d9ebcca74f7b4355be1c5dcc0
-DIST ngx_http_cache_purge-2.5.3.tar.gz 17156 BLAKE2B 50aaaa0bb89975cc912845909085b80c6bcc9adf73b619a7a3034ccf19bee64c891dc15310e0e09e1601125ab5809a33a5af18413d8d5717090c631f31174eec SHA512 aebc9b19a3e7dda3b57e6bd6d86a5ab66d25e05cf5c6c99c71234c789700eb9da8e29529b8b2abf3d775ff3c2610e695fc88e647738769f0d3730bcafc3be38b
-DIST ngx_http_dav_ext-3.0.0.tar.gz 14558 BLAKE2B 0d370bfe34600d43a540dd19a386aa52ce135b2eae14e4e108a359d5ff3405939130d1c802062c7523057ec35d38322d3fbed8c13deb58ce7a08ebf9e3f106d4 SHA512 d0193ba90f1ef46c4e470630c4394bdf99d94fd2e3bd8be6cb2ba1655ec59944b1269025f032b79dc2c6dad366e54389ef6a6da2ddeb91d535a4027f2162fbde
-DIST ngx_http_echo-0.63.tar.gz 53421 BLAKE2B 613d4f265b9bcf9b4a44a18749314075e797dca4b350e6c4bc2e7ddd52edadc52660504ee57d0c859ec0a20f6b2e425727e5ec4b30282e67498010fc8d959baa SHA512 c325ac4e3f3f735739e156d8c7ada503b34475c62533b4830231ff1b42c25cb0c841aae06b3448b589c2ab35da8d211436ed194d6fd062cad925af8152c5e789
-DIST ngx_http_fancyindex-0.4.4.tar.gz 26292 BLAKE2B a1ed76cb31cd4f7a349bcbe63d75f8e00331d0ba4ee9b7b1df41dac77fe64ebe6c72a6fd5f6ebc9de53e8d3a8a2ad5185fbaa533d8ff008fcf92f6956f267d80 SHA512 bf8ebb188c10fee5e6ebcb338fe20fdf859bb88d9b2b0e3da6f3e2f1847738d30760d2642d0dfe257092bdf2399b561631556a3a8e2fb33dc9cd0c59d371c173
-DIST ngx_http_geoip2_module-3.4.tar.gz 8877 BLAKE2B cd59ebbd2ca47f6af0b22b8b91768053d2c991f7adf19941625e3570d81dcb73989101795d641e4efce1eed37d454bca73d603b5d0e4511e3bd63100c7acf750 SHA512 18dea21e5ae2647bea1fc448058a1b773c936917245edef8d861d5e23ed92e9a3b1ec4ef43ffb2ece7b5899d787910adcf4fbd39f84d7e8d7c54759e2fee5b72
-DIST ngx_http_headers_more-0.34.tar.gz 28827 BLAKE2B 48badf603b93601b11c837057760f768ef2579062786bb366795617635747b654cecafa3a230eec1a3e442ab768fb068867ceb93385b14b6452b621764acfd3f SHA512 2c0c140feeb29f0154a223dc3020ff956f894d63e0232a7bc0ca33fcb26f8b807bda868159ae30b6cac7456ec25b831c3d299ea18e234202ae5d14c1ff471a4b
-DIST ngx_http_lua-0.10.25.tar.gz 725616 BLAKE2B b7b766adb76d39edf4ed1fcebea4d696c30b53885923c12e06b6417a63ad5c7e7d926bab8c865b5900b92b3b43126b4d30f92ac6ec941e733f197e5295a0f406 SHA512 01943f2b789b4e385592707f2769a5f4da668415ef9bd0c5263face2fb4146a28137fb8ab8b55056240dad034780601b7966913951cc0c77f4b3aa9eab50ae40
-DIST ngx_http_naxsi-4140b2ded624eb36f04c783c460379b9403012d0.tar.gz 166325 BLAKE2B f80353bfc1f3fc009b847de1c1c5d623a84682efc588649cbd156f669336c95f337442ebf350c79321bf59477215f083817929f13550b22dc7f393583aa16ba1 SHA512 6d6565189d9fabdcf318270107455bb4915d2a43284fb2f77b5cf025a4b4843e990c1c1dbc254e0f3879ca7d30ac7bcd7eb8637f491d5b7f05193aa9865be7cc
-DIST ngx_http_naxsi_libinjection-49904c42a6e68dc8f16c022c693e897e4010a06c.tar.gz 2123473 BLAKE2B 69208f09ca9f10f59f53a3e949894ebc6e51b0ed5708e551759fd8fbc002c83f5a0462fd22eaf52cae290992633729f47403b33c41539437e40700fb7763ac2a SHA512 ed643aaed8d70dae028ec3df48be3aa2c03955073039cd14fb6187bf162cfee9131ab3e5900ddc349526b171f4da0e01e13b39a669cb85838c1f254476a3c1b8
-DIST ngx_http_push_stream-8c02220d484d7848bc8e3a6d9b1c616987e86f66.tar.gz 196994 BLAKE2B 90baeb4fb03aeb309bcf1a987420067ca81843ff9b85b8fc26ba703741571e631826e5928a439a3ae79f2f5e369a3acb2cd803789308642ae757d67722ac7f33 SHA512 ad5424d65909d1cf0c2b64d7a4bc3123f4d3e240f1c9d611f6b6fc41167d169f474c723b1c327d42bd295f973a6365ad32e3f095b8c7c7cddc7e54aea138ca31
-DIST ngx_http_slowfs_cache-1.10.tar.gz 11809 BLAKE2B 54ec1bd0d1cc43cdaafc93ebd46b33374c57351c7f022eae0351d6961680abb03d896e7f058e67c43c4fee300253354feccb92d00e62bf91250e251e1860ec03 SHA512 fbc9609a8d6913aeefe535f206b9e53477503f131934ead2ae5a6169e395af2f5fb54778704824d5eeb22a4ef40a11ebbcde580db62a631f70edcc2cfc06b15d
-DIST ngx_http_upload_progress-68b3ab3b64a0cee7f785d161401c8be357bbed12.tar.gz 17379 BLAKE2B 4790657b3f207eca460a26f5c4d1139dcd495e29fffedab8d716105e6dc3039cbeeecf5f6005d364470951e25b472860b46e3e08bc9573a5a7b4a23f53532f8a SHA512 6603e15aa33edca5e647fd04b4f008f1729c78c527be262ef481890f37a6d57e89609cebfb7459fad18b249024fbe3722e09473987401e8d8dfdd7cf50e4df4f
-DIST ngx_http_upstream_check-9aecf15ec379fe98f62355c57b60c0bc83296f04.tar.gz 130073 BLAKE2B 3c93cef79425a46e22ae39adf13d5ebb0e5d36f5d6be8555ec068dd0017918f5355d82fbbe90ba934e58c52e89c2096e24012f75390c7159d1ebacfaaa112308 SHA512 fad2a0d3ac332b6e67c52e3525f6df8a432df3e92bc173190b8107fba7f24476ab9dae4824630299af68c15e856409bd47a3a79fb5b65e03a5133eb90142b8fc
-DIST ngx_http_vhost_traffic_status-0.2.1.tar.gz 179679 BLAKE2B 3f0f950745695997232f4ae07487e58d798a3a4f2cd0ba8d922865a39e010e1282932469fbeee615a115358f1e9e36f67876fa507fbefb7c146d701ea68a864d SHA512 fadd4727ffc56111b443364d90e5b0597f09b25006404b11377586f0ed754f5a85e0b84796360be927bd455f43eb28e18004991f086b611146cd340937a6e5e9
-DIST ngx_memc_module-0.19.tar.gz 34654 BLAKE2B 536384c264d88535179634d459d3a47b1d9b11885fbce46fbe9fa4df3dce365320b5963c56aecde3b0039d4f9954943d95f25c5f4fada6256861257f82ebbb12 SHA512 a64ec8dffcd011db2cd12b501271bf5c408f2f31fd2bf477b8db4e88adc5bb5732c4c2181ed8378cab6a937869d8f747ef52b22fe256c90df8440b91890edbe7
-DIST ngx_metrics-0.1.1.tar.gz 2964 BLAKE2B 95d71ea26c949c345b83e353bd66a20df18cc8b2b93f692615a1b39c1f327393647f80e7a27e6929799a6e7e3469b61e1cd72f7821f7a820da4dd7cd9a96d85c SHA512 d36a8fb0104c83b6b564e03b351aa750cab08650264c74d6f786af357bfb7006b531a93270dd961896ea8dafe27e5db8548ede714c5f52c4742876bc73af4b5e
-DIST ngx_mogilefs_module-1.0.4.tar.gz 11208 BLAKE2B e0729b66554c8890727190a624d4c9aef6499dfc2e301541a9bfc15690caf6d3155c8a4b8f7a1555a7655b47aa0cd1b797aeb8ba82efa92ab80808218a0bdcff SHA512 b8cb7eaf6274f4e2247dbcb39db05072d2b2d4361256a325fafab5533d7ce0c4ae9e2905b954dfcfa4789c9cab5cccf2ac1c3a1f02f6a327ed95b562d7773ed1
-DIST ngx_rtmp-1.2.2.tar.gz 519934 BLAKE2B 8745816b879f506720955d6c7e5e8af036e88b3601a680071ffb255a3ec31d69e132b5cc8b493202fa985eb30b8529428f683b5154a0054c0ee990d3185c7abf SHA512 3f8c803221854c4b1a06aadc6313fbfec74bd7179c0ee51d4365b26ffa8875881a6e1e48f777a9c9efbb9170ab7478a82920d5448a2c2df485503d37bb03ab81
-DIST njs-0.8.10.tar.gz 942446 BLAKE2B cad84d599f223e143f9e21ec01e40d0aa14a97b6ca2c1e9e2a17cd0806699e1ba04bb03b0840c6bcf0198d38fd3a11adf3f442bf7399fe16933e7ec5fec0672b SHA512 71bcd596383ff501514adcf9baa0fd4d5cd0d3b53b2cdeee7e64b094ba12f6ee0f8fe99849dd8ad71afb6212566253ebdca2b83713d026ddfed3fe7902a5e906
+DIST nginx-tests-9f1db4a63b14d2898652493735987d30ea61736f.tar.gz 355301 BLAKE2B aaf61ab18487b13ea8e8b2c7efbda3a9bea7b6b8b26736eeaecedca6b7cafb46b9edd6ce23096aa0000ec781ed9f3f9cb185733ea8e8b713b1526db565371fd7 SHA512 ab2fcb261e68ea65ef7424a597e61a8cf72a0dcc3ac12efcff1d54a29181fa686dd9bd890cf4980d9a9689109ca25896a958f7274370039ee342d54354037881
diff --git a/www-servers/nginx/files/http_brotli-detect-brotli-r3.patch b/www-servers/nginx/files/http_brotli-detect-brotli-r3.patch
deleted file mode 100644
index 9ccb8c2379fb..000000000000
--- a/www-servers/nginx/files/http_brotli-detect-brotli-r3.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- a/filter/config
-+++ b/filter/config
-@@ -42,22 +42,13 @@ fi
- ngx_module_type=HTTP_FILTER
- ngx_module_name=ngx_http_brotli_filter_module
-
--brotli="$ngx_addon_dir/deps/brotli/c"
--if [ ! -f "$brotli/include/brotli/encode.h" ]; then
-- brotli="/usr/local"
--fi
--if [ ! -f "$brotli/include/brotli/encode.h" ]; then
-- brotli="/usr"
--fi
-+brotli=$(pkg-config --variable=prefix libbrotlienc)
-+
- if [ ! -f "$brotli/include/brotli/encode.h" ]; then
- cat << END
-
- $0: error: \
--Brotli library is missing from the $brotli directory.
--
--Please make sure that the git submodule has been checked out:
--
-- cd $ngx_addon_dir && git submodule update --init && cd $PWD
-+Brotli library not found. Don't you have app-arch/brotli installed?
-
- END
- exit 1
diff --git a/www-servers/nginx/files/http_cache_purge-1.11.6+.patch b/www-servers/nginx/files/http_cache_purge-1.11.6+.patch
deleted file mode 100644
index c4596bf97ad1..000000000000
--- a/www-servers/nginx/files/http_cache_purge-1.11.6+.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Fix compatibility with nginx-1.11.6+
-
-https://github.com/FRiCKLE/ngx_cache_purge/pull/51
-
----
- ngx_cache_purge_module.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/ngx_cache_purge_module.c
-+++ b/ngx_cache_purge_module.c
-@@ -492,7 +492,11 @@ typedef struct {
- ngx_str_t body_source;
- # endif /* nginx_version < 1007008 */
-
-+# if (nginx_version >= 1011006)
-+ ngx_http_complex_value_t *method;
-+# else
- ngx_str_t method;
-+# endif /* nginx_version >= 1011006 */
- ngx_str_t location;
- ngx_str_t url;
-
diff --git a/www-servers/nginx/files/http_security-nginx-1.26.2.patch b/www-servers/nginx/files/http_security-nginx-1.26.2.patch
deleted file mode 100644
index 26e3ea6046f0..000000000000
--- a/www-servers/nginx/files/http_security-nginx-1.26.2.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 7d37ace7431ea9704faa98f29876bcd72ef4b1ff Mon Sep 17 00:00:00 2001
-From: Ervin Hegedus <airween@gmail.com>
-Date: Tue, 23 Apr 2024 21:42:02 +0200
-Subject: [PATCH] fix: Added missing header for conftest
-
----
- config | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/config b/config
-index c6e7467..3bf06a8 100644
---- a/config
-+++ b/config
-@@ -10,7 +10,8 @@
-
- ngx_feature_name=
- ngx_feature_run=no
--ngx_feature_incs="#include <modsecurity/modsecurity.h>"
-+ngx_feature_incs="#include <modsecurity/modsecurity.h>
-+#include <stdio.h>"
- ngx_feature_libs="-lmodsecurity"
- ngx_feature_test='printf("hello");'
- ngx_modsecurity_opt_I=
---
-2.26.2
-
diff --git a/www-servers/nginx/files/http_sticky-nginx-1.23.0.patch b/www-servers/nginx/files/http_sticky-nginx-1.23.0.patch
deleted file mode 100644
index da6126eacabb..000000000000
--- a/www-servers/nginx/files/http_sticky-nginx-1.23.0.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 105c946c0c1af93099502417784888acf60da540 Mon Sep 17 00:00:00 2001
-From: Younes El-karama <yelkarama@gmail.com>
-Date: Sat, 2 Jul 2022 04:56:12 +0000
-Subject: [PATCH] make it compatible with nginx 1.23
-
----
- ngx_http_sticky_module.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ngx_http_sticky_module.c b/ngx_http_sticky_module.c
-index c9a0a04..37b5bc3 100644
---- a/ngx_http_sticky_module.c
-+++ b/ngx_http_sticky_module.c
-@@ -204,7 +204,7 @@ static ngx_int_t ngx_http_init_sticky_peer(ngx_http_request_t *r, ngx_http_upstr
- iphp->request = r;
-
- /* check weather a cookie is present or not and save it */
-- if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
-+ if (ngx_http_parse_multi_header_lines(r, r->headers_in.cookie, &iphp->sticky_conf->cookie_name, &route) != NULL) {
- /* a route cookie has been found. Let's give it a try */
- ngx_log_debug(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "[sticky/init_sticky_peer] got cookie route=%V, let's try to find a matching peer", &route);
-
---
-2.36.1
-
diff --git a/www-servers/nginx/files/http_uploadprogress-nginx-1.23.0.patch b/www-servers/nginx/files/http_uploadprogress-nginx-1.23.0.patch
deleted file mode 100644
index 3635aa45b53d..000000000000
--- a/www-servers/nginx/files/http_uploadprogress-nginx-1.23.0.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-diff -pNura http-uploadprogress.orig/ngx_http_uploadprogress_module.c http-uploadprogress/ngx_http_uploadprogress_module.c
---- http-uploadprogress.orig/ngx_http_uploadprogress_module.c 2020-10-03 02:05:45.000000000 +0700
-+++ http-uploadprogress/ngx_http_uploadprogress_module.c 2022-06-24 16:24:16.196626939 +0700
-@@ -550,12 +550,12 @@ ngx_http_reportuploads_handler(ngx_http_
- ngx_chain_t out;
- ngx_int_t rc, found=0, done=0, err_status=0;
- off_t rest=0, length=0;
-- ngx_uint_t len, i;
-+ ngx_uint_t len;
- ngx_slab_pool_t *shpool;
- ngx_http_uploadprogress_conf_t *upcf;
- ngx_http_uploadprogress_ctx_t *ctx;
- ngx_http_uploadprogress_node_t *up;
-- ngx_table_elt_t *expires, *cc, **ccp;
-+ ngx_table_elt_t *expires, *cc;
- ngx_http_uploadprogress_state_t state;
- ngx_http_uploadprogress_template_t *t;
-
-@@ -628,6 +628,7 @@ ngx_http_reportuploads_handler(ngx_http_
- }
-
- r->headers_out.expires = expires;
-+ expires->next = NULL;
-
- expires->hash = 1;
- expires->key.len = sizeof("Expires") - 1;
-@@ -637,37 +638,30 @@ ngx_http_reportuploads_handler(ngx_http_
- len = sizeof("Mon, 28 Sep 1970 06:00:00 GMT");
- expires->value.len = len - 1;
-
-- ccp = r->headers_out.cache_control.elts;
-- if (ccp == NULL) {
-+ cc = r->headers_out.cache_control;
-
-- if (ngx_array_init(&r->headers_out.cache_control, r->pool,
-- 1, sizeof(ngx_table_elt_t *))
-- != NGX_OK) {
-- return NGX_HTTP_INTERNAL_SERVER_ERROR;
-- }
--
-- ccp = ngx_array_push(&r->headers_out.cache_control);
-- if (ccp == NULL) {
-- return NGX_HTTP_INTERNAL_SERVER_ERROR;
-- }
-+ if (cc == NULL) {
-
- cc = ngx_list_push(&r->headers_out.headers);
- if (cc == NULL) {
-+ expires->hash = 0;
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
- }
-
-+ r->headers_out.cache_control = cc;
-+ cc->next = NULL;
-+
- cc->hash = 1;
- cc->key.len = sizeof("Cache-Control") - 1;
- cc->key.data = (u_char *) "Cache-Control";
-
-- *ccp = cc;
--
- } else {
-- for (i = 1; i < r->headers_out.cache_control.nelts; i++) {
-- ccp[i]->hash = 0;
-+ for (cc = cc->next; cc; cc = cc->next) {
-+ cc->hash = 0;
- }
-
-- cc = ccp[0];
-+ cc = r->headers_out.cache_control;
-+ cc->next = NULL;
- }
-
- expires->value.data = (u_char *) "Thu, 01 Jan 1970 00:00:01 GMT";
diff --git a/www-servers/nginx/files/http_upstream_check-nginx-1.11.5+.patch b/www-servers/nginx/files/http_upstream_check-nginx-1.11.5+.patch
deleted file mode 100644
index a894bde8ec34..000000000000
--- a/www-servers/nginx/files/http_upstream_check-nginx-1.11.5+.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-Upstream: https://github.com/yaoweibin/nginx_upstream_check_module/pull/119
-
-diff --git src/http/modules/ngx_http_upstream_hash_module.c src/http/modules/ngx_http_upstream_hash_module.c
-index 6c28c64..a187887 100644
---- src/http/modules/ngx_http_upstream_hash_module.c
-+++ src/http/modules/ngx_http_upstream_hash_module.c
-@@ -9,6 +9,9 @@
- #include <ngx_core.h>
- #include <ngx_http.h>
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+#include "ngx_http_upstream_check_module.h"
-+#endif
-
- typedef struct {
- uint32_t hash;
-@@ -235,6 +238,16 @@ ngx_http_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data)
- goto next;
- }
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
-+ "get hash peer, check_index: %ui",
-+ peer->check_index);
-+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
-+ goto next;
-+ }
-+#endif
-+
-+
- if (peer->max_fails
- && peer->fails >= peer->max_fails
- && now - peer->checked <= peer->fail_timeout)
-@@ -538,6 +551,15 @@ ngx_http_upstream_get_chash_peer(ngx_peer_connection_t *pc, void *data)
- continue;
- }
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
-+ "get consistent_hash peer, check_index: %ui",
-+ peer->check_index);
-+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
-+ continue;
-+ }
-+#endif
-+
- if (peer->server.len != server->len
- || ngx_strncmp(peer->server.data, server->data, server->len)
- != 0)
-diff --git src/http/modules/ngx_http_upstream_ip_hash_module.c src/http/modules/ngx_http_upstream_ip_hash_module.c
-index 296108f..135ce5d 100644
---- src/http/modules/ngx_http_upstream_ip_hash_module.c
-+++ src/http/modules/ngx_http_upstream_ip_hash_module.c
-@@ -9,6 +9,9 @@
- #include <ngx_core.h>
- #include <ngx_http.h>
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+#include "ngx_http_upstream_check_module.h"
-+#endif
-
- typedef struct {
- /* the round robin data must be first */
-@@ -205,6 +208,15 @@ ngx_http_upstream_get_ip_hash_peer(ngx_peer_connection_t *pc, void *data)
- goto next;
- }
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
-+ "get ip_hash peer, check_index: %ui",
-+ peer->check_index);
-+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
-+ goto next;
-+ }
-+#endif
-+
- if (peer->max_fails
- && peer->fails >= peer->max_fails
- && now - peer->checked <= peer->fail_timeout)
-diff --git src/http/modules/ngx_http_upstream_least_conn_module.c src/http/modules/ngx_http_upstream_least_conn_module.c
-index ebe0627..94f1883 100644
---- src/http/modules/ngx_http_upstream_least_conn_module.c
-+++ src/http/modules/ngx_http_upstream_least_conn_module.c
-@@ -9,6 +9,10 @@
- #include <ngx_core.h>
- #include <ngx_http.h>
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+#include "ngx_http_upstream_check_module.h"
-+#endif
-+
-
- static ngx_int_t ngx_http_upstream_init_least_conn_peer(ngx_http_request_t *r,
- ngx_http_upstream_srv_conf_t *us);
-@@ -147,6 +151,16 @@ ngx_http_upstream_get_least_conn_peer(ngx_peer_connection_t *pc, void *data)
- continue;
- }
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
-+ "get least_conn peer, check_index: %ui",
-+ peer->check_index);
-+
-+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
-+ continue;
-+ }
-+#endif
-+
- if (peer->max_fails
- && peer->fails >= peer->max_fails
- && now - peer->checked <= peer->fail_timeout)
-@@ -202,6 +216,16 @@ ngx_http_upstream_get_least_conn_peer(ngx_peer_connection_t *pc, void *data)
- continue;
- }
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
-+ "get least_conn peer, check_index: %ui",
-+ peer->check_index);
-+
-+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
-+ continue;
-+ }
-+#endif
-+
- if (peer->conns * best->weight != best->conns * peer->weight) {
- continue;
- }
-diff --git src/http/ngx_http_upstream_round_robin.c src/http/ngx_http_upstream_round_robin.c
-index 0137bf6..99f0923 100644
---- src/http/ngx_http_upstream_round_robin.c
-+++ src/http/ngx_http_upstream_round_robin.c
-@@ -9,6 +9,9 @@
- #include <ngx_core.h>
- #include <ngx_http.h>
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+#include "ngx_http_upstream_check_module.h"
-+#endif
-
- #define ngx_http_upstream_tries(p) ((p)->number \
- + ((p)->next ? (p)->next->number : 0))
-@@ -97,7 +100,14 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
- peer[n].fail_timeout = server[i].fail_timeout;
- peer[n].down = server[i].down;
- peer[n].server = server[i].name;
--
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ if (!server[i].down) {
-+ peer[n].check_index =
-+ ngx_http_upstream_check_add_peer(cf, us, &server[i].addrs[j]);
-+ } else {
-+ peer[n].check_index = (ngx_uint_t) NGX_ERROR;
-+ }
-+#endif
- *peerp = &peer[n];
- peerp = &peer[n].next;
- n++;
-@@ -161,7 +171,15 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
- peer[n].fail_timeout = server[i].fail_timeout;
- peer[n].down = server[i].down;
- peer[n].server = server[i].name;
--
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ if (!server[i].down) {
-+ peer[n].check_index =
-+ ngx_http_upstream_check_add_peer(cf, us, &server[i].addrs[j]);
-+ }
-+ else {
-+ peer[n].check_index = (ngx_uint_t) NGX_ERROR;
-+ }
-+#endif
- *peerp = &peer[n];
- peerp = &peer[n].next;
- n++;
-@@ -228,6 +246,9 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
- peer[i].max_conns = 0;
- peer[i].max_fails = 1;
- peer[i].fail_timeout = 10;
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ peer[i].check_index = (ngx_uint_t) NGX_ERROR;
-+#endif
- *peerp = &peer[i];
- peerp = &peer[i].next;
- }
-@@ -344,6 +365,9 @@ ngx_http_upstream_create_round_robin_peer(ngx_http_request_t *r,
- peer[0].max_conns = 0;
- peer[0].max_fails = 1;
- peer[0].fail_timeout = 10;
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ peer[0].check_index = (ngx_uint_t) NGX_ERROR;
-+#endif
- peers->peer = peer;
-
- } else {
-@@ -378,6 +402,9 @@ ngx_http_upstream_create_round_robin_peer(ngx_http_request_t *r,
- peer[i].max_conns = 0;
- peer[i].max_fails = 1;
- peer[i].fail_timeout = 10;
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ peer[i].check_index = (ngx_uint_t) NGX_ERROR;
-+#endif
- *peerp = &peer[i];
- peerp = &peer[i].next;
- }
-@@ -443,6 +470,12 @@ ngx_http_upstream_get_round_robin_peer(ngx_peer_connection_t *pc, void *data)
- goto failed;
- }
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
-+ goto failed;
-+ }
-+#endif
-+
- rrp->current = peer;
-
- } else {
-@@ -537,6 +570,12 @@ ngx_http_upstream_get_peer(ngx_http_upstream_rr_peer_data_t *rrp)
- continue;
- }
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ if (ngx_http_upstream_check_peer_down(peer->check_index)) {
-+ continue;
-+ }
-+#endif
-+
- if (peer->max_fails
- && peer->fails >= peer->max_fails
- && now - peer->checked <= peer->fail_timeout)
-diff --git src/http/ngx_http_upstream_round_robin.h src/http/ngx_http_upstream_round_robin.h
-index 45f258d..dee91d0 100644
---- src/http/ngx_http_upstream_round_robin.h
-+++ src/http/ngx_http_upstream_round_robin.h
-@@ -38,6 +38,10 @@ struct ngx_http_upstream_rr_peer_s {
- ngx_msec_t slow_start;
- ngx_msec_t start_time;
-
-+#if (NGX_HTTP_UPSTREAM_CHECK)
-+ ngx_uint_t check_index;
-+#endif
-+
- ngx_uint_t down;
-
- #if (NGX_HTTP_SSL || NGX_COMPAT)
diff --git a/www-servers/nginx/files/nginx-1.23.2-mod_auth_ldap-fix.patch b/www-servers/nginx/files/nginx-1.23.2-mod_auth_ldap-fix.patch
deleted file mode 100644
index b3b4cf4b33c4..000000000000
--- a/www-servers/nginx/files/nginx-1.23.2-mod_auth_ldap-fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From f0a5f61d9aad59c23e2c877094a8f17c43bee5b5 Mon Sep 17 00:00:00 2001
-From: freultwah <631910+freultwah@users.noreply.github.com>
-Date: Tue, 23 Aug 2022 18:09:45 +0300
-Subject: [PATCH] Make the module not crash with nginx >1.23.*
-
----
- ngx_http_auth_ldap_module.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/ngx_http_auth_ldap_module.c b/ngx_http_auth_ldap_module.c
-index 2f4e592..83b481c 100644
---- a/ngx_http_auth_ldap_module.c
-+++ b/ngx_http_auth_ldap_module.c
-@@ -1779,6 +1779,7 @@ ngx_http_auth_ldap_set_realm(ngx_http_request_t *r, ngx_str_t *realm)
- }
-
- r->headers_out.www_authenticate->hash = 1;
-+ r->headers_out.www_authenticate->next = NULL;
- r->headers_out.www_authenticate->key.len = sizeof("WWW-Authenticate") - 1;
- r->headers_out.www_authenticate->key.data = (u_char *) "WWW-Authenticate";
- r->headers_out.www_authenticate->value = *realm;
diff --git a/www-servers/nginx/files/nginx-1.4.1-fix-perl-install-path.patch b/www-servers/nginx/files/nginx-1.4.1-fix-perl-install-path.patch
deleted file mode 100644
index 601a79ba8a0f..000000000000
--- a/www-servers/nginx/files/nginx-1.4.1-fix-perl-install-path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/auto/lib/perl/make b/auto/lib/perl/make
-index 260bd95..857ece6 100644
---- a/auto/lib/perl/make
-+++ b/auto/lib/perl/make
-@@ -35,6 +35,8 @@ $NGX_OBJS/src/http/modules/perl/Makefile: \\
- NGX_DEPS="\$(CORE_DEPS) \$(HTTP_DEPS)" \\
- $NGX_PERL Makefile.PL \\
- LIB=$NGX_PERL_MODULES \\
-+ PREFIX=$NGX_PREFIX \\
-+ INSTALLDIRS=vendor \\
- INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN
-
- END
diff --git a/www-servers/nginx/files/nginx.conf-r3 b/www-servers/nginx/files/nginx.conf-r3
deleted file mode 100644
index f851bbf8934e..000000000000
--- a/www-servers/nginx/files/nginx.conf-r3
+++ /dev/null
@@ -1,72 +0,0 @@
-user nginx nginx;
-worker_processes 1;
-
-error_log /var/log/nginx/error_log info;
-
-events {
- worker_connections 1024;
- use epoll;
-}
-
-http {
- include /etc/nginx/mime.types.nginx;
- types_hash_max_size 4096;
- default_type application/octet-stream;
-
- log_format main
- '$remote_addr - $remote_user [$time_local] '
- '"$request" $status $bytes_sent '
- '"$http_referer" "$http_user_agent" '
- '"$gzip_ratio"';
-
- client_header_timeout 10m;
- client_body_timeout 10m;
- send_timeout 10m;
-
- connection_pool_size 256;
- client_header_buffer_size 1k;
- large_client_header_buffers 4 2k;
- request_pool_size 4k;
-
- gzip off;
-
- output_buffers 1 32k;
- postpone_output 1460;
-
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
-
- keepalive_timeout 75 20;
-
- ignore_invalid_headers on;
-
- index index.html;
-
- server {
- listen 127.0.0.1;
- server_name localhost;
-
- access_log /var/log/nginx/localhost.access_log main;
- error_log /var/log/nginx/localhost.error_log info;
-
- root /var/www/localhost/htdocs;
- }
-
- # SSL example
- #server {
- # listen 127.0.0.1:443;
- # server_name localhost;
-
- # ssl on;
- # ssl_certificate /etc/ssl/nginx/nginx.pem;
- # ssl_certificate_key /etc/ssl/nginx/nginx.key;
-
- # access_log /var/log/nginx/localhost.ssl_access_log main;
- # error_log /var/log/nginx/localhost.ssl_error_log info;
-
- # root /var/www/localhost/htdocs;
- #}
-
- include /etc/nginx/*_vhost.conf;
-}
diff --git a/www-servers/nginx/files/nginx.confd b/www-servers/nginx/files/nginx.confd
deleted file mode 100644
index 478ad588f4e4..000000000000
--- a/www-servers/nginx/files/nginx.confd
+++ /dev/null
@@ -1,35 +0,0 @@
-# /etc/conf.d/nginx
-
-# Configuration file
-#NGINX_CONFIGFILE="/etc/nginx/nginx.conf"
-
-# PID file
-# If you should ever change this, remember to update
-# "/etc/logrotate.d/nginx", too.
-#NGINX_PIDFILE="/run/nginx/nginx.pid"
-
-# User to run nginx as
-# If you should ever change this, make sure this user has
-# execution permission on any of your log directories
-# (/var/log/nginx per default) but do NOT forget other log directories
-# one of your vhost(s) maybe using or logging after logrotation will
-# be broken).
-#NGINX_USER="nginx"
-
-# Group to run nginx as
-# See the note above regarding NGINX_USER.
-#NGINX_GROUP="nginx"
-
-# You can use this configuration option to pass additional options to the
-# start-stop-daemon, see start-stop-daemon(8) for more details.
-# Per default we wait 1000ms after we have started the service to ensure
-# that the daemon is really up and running.
-#NGINX_SSDARGS="--wait 1000"
-
-# The termination timeout (start-stop-daemon parameter "retry") ensures
-# that the service will be terminated within a given time (60 + 5 seconds
-# per default) when you are stopping the service.
-#NGINX_TERMTIMEOUT="TERM/60/KILL/5"
-
-# Run master process as user (requires configuration with setcap)
-#command_user="${NGINX_USER:-nginx}"
diff --git a/www-servers/nginx/files/nginx.initd-r4 b/www-servers/nginx/files/nginx.initd-r4
deleted file mode 100644
index c9896289975f..000000000000
--- a/www-servers/nginx/files/nginx.initd-r4
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-extra_commands="configtest"
-extra_started_commands="upgrade reload"
-
-description="Robust, small and high performance http and reverse proxy server"
-description_configtest="Run nginx' internal config check."
-description_upgrade="Upgrade the nginx binary without losing connections."
-description_reload="Reload the nginx configuration without losing connections."
-
-NGINX_CONFIGFILE=${NGINX_CONFIGFILE:-/etc/nginx/nginx.conf}
-
-command="/usr/sbin/nginx"
-command_args="-c \"${NGINX_CONFIGFILE}\""
-start_stop_daemon_args=${NGINX_SSDARGS:-"--wait 1000"}
-pidfile=${NGINX_PIDFILE:-/run/nginx/nginx.pid}
-user=${NGINX_USER:-nginx}
-group=${NGINX_GROUP:-nginx}
-retry=${NGINX_TERMTIMEOUT:-"TERM/60/KILL/5"}
-
-depend() {
- need net
- use dns logger netmount
-}
-
-start_pre() {
- mkdir -m 0775 -p "/run/nginx"
- chown -R "${user}:${group}" "/run/nginx"
- if [ "${RC_CMD}" != "restart" ]; then
- configtest || return 1
- fi
-}
-
-stop_pre() {
- if [ "${RC_CMD}" = "restart" ]; then
- configtest || return 1
- fi
-}
-
-stop_post() {
- rm -f ${pidfile}
-}
-
-reload() {
- configtest || return 1
- ebegin "Refreshing nginx' configuration"
- start-stop-daemon --signal SIGHUP --pidfile "${pidfile}"
- eend $? "Failed to reload nginx"
-}
-
-upgrade() {
- configtest || return 1
- ebegin "Upgrading nginx"
-
- einfo "Sending USR2 to old binary"
- start-stop-daemon --signal SIGUSR2 --pidfile "${pidfile}"
-
- einfo "Sleeping 3 seconds before pid-files checking"
- sleep 3
-
- if [ ! -f "${pidfile}.oldbin" ]; then
- eerror "File with old pid not found"
- return 1
- fi
-
- if [ ! -f "${pidfile}" ]; then
- eerror "New binary failed to start"
- return 1
- fi
-
- einfo "Sleeping 3 seconds before WINCH"
- sleep 3
- # Cannot send "WINCH" using start-stop-daemon yet, https://bugs.gentoo.org/604986
- kill -WINCH $(cat "${pidfile}.oldbin")
-
- einfo "Sending QUIT to old binary"
- start-stop-daemon --signal SIGQUIT --pidfile "${pidfile}.oldbin"
-
- einfo "Upgrade completed"
- eend $? "Upgrade failed"
-}
-
-configtest() {
- ebegin "Checking nginx' configuration"
- ${command} -c "${NGINX_CONFIGFILE}" -t -q
-
- if [ $? -ne 0 ]; then
- ${command} -c "${NGINX_CONFIGFILE}" -t
- fi
-
- eend $? "failed, please correct errors above"
-}
diff --git a/www-servers/nginx/files/nginx.logrotate-r1 b/www-servers/nginx/files/nginx.logrotate-r1
deleted file mode 100644
index 81eca0168ced..000000000000
--- a/www-servers/nginx/files/nginx.logrotate-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-/var/log/nginx/*_log {
- missingok
- delaycompress
- sharedscripts
- postrotate
- test -r /run/nginx/nginx.pid && kill -USR1 `cat /run/nginx/nginx.pid`
- endscript
-}
diff --git a/www-servers/nginx/files/nginx.service-r1 b/www-servers/nginx/files/nginx.service-r1
deleted file mode 100644
index 74b023147587..000000000000
--- a/www-servers/nginx/files/nginx.service-r1
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=The nginx HTTP and reverse proxy server
-After=network.target remote-fs.target nss-lookup.target
-
-[Service]
-Type=forking
-PIDFile=/run/nginx/nginx.pid
-RuntimeDirectory=nginx
-ExecStartPre=/usr/sbin/nginx -t
-ExecStart=/usr/sbin/nginx
-ExecStartPost=/bin/sleep 0.1
-ExecReload=/bin/kill -HUP $MAINPID
-ExecStop=/bin/kill -QUIT $MAINPID
-
-[Install]
-WantedBy=multi-user.target
diff --git a/www-servers/nginx/metadata.xml b/www-servers/nginx/metadata.xml
index 3daca06282e5..0de0911ef53c 100644
--- a/www-servers/nginx/metadata.xml
+++ b/www-servers/nginx/metadata.xml
@@ -25,16 +25,6 @@
<flag name="stream">
Enable generic TCP/UDP proxying and load balancing
</flag>
- <flag name="http2">Enable HTTP2 module support</flag>
- <flag name="http3">Enable HTTP3 module support</flag>
- <flag name="http-cache">Enable HTTP cache support</flag>
- <flag name="ktls">Enable Kernel TLS offload (kTLS)</flag>
- <flag name="pcre-jit">Enable JIT for pcre</flag>
- <flag name="pcre2">Enable support for pcre2</flag>
- <flag name="ssl">
- Enable HTTPS module for http. Enable SSL/TLS support for POP3/IMAP/SMTP for mail.
- </flag>
- <flag name="rtmp">NGINX-based Media Streaming Server</flag>
</use>
<upstream>
<remote-id type="cpe">cpe:/a:f5:nginx</remote-id>
diff --git a/www-servers/nginx/nginx-1.26.3-r2.ebuild b/www-servers/nginx/nginx-1.26.3-r2.ebuild
deleted file mode 100644
index 90a8eb479812..000000000000
--- a/www-servers/nginx/nginx-1.26.3-r2.ebuild
+++ /dev/null
@@ -1,1144 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Maintainer notes:
-# - http_rewrite-independent pcre-support makes sense for matching locations without an actual rewrite
-# - any http-module activates the main http-functionality and overrides USE=-http
-# - keep the following requirements in mind before adding external modules:
-# * alive upstream
-# * sane packaging
-# * builds cleanly
-# * does not need a patch for nginx core
-# - Update NGINX_TESTS_REV to the current available revision and run tests.
-# - TODO: test the google-perftools module (included in vanilla tarball)
-
-# prevent perl-module from adding automagic perl DEPENDs
-GENTOO_DEPEND_ON_PERL="no"
-
-# devel_kit (https://github.com/simpl/ngx_devel_kit, BSD license)
-DEVEL_KIT_MODULE_PV="0.3.1"
-DEVEL_KIT_MODULE_P="ngx_devel_kit-${DEVEL_KIT_MODULE_PV}"
-DEVEL_KIT_MODULE_URI="https://github.com/simpl/ngx_devel_kit/archive/v${DEVEL_KIT_MODULE_PV}.tar.gz"
-DEVEL_KIT_MODULE_WD="${WORKDIR}/ngx_devel_kit-${DEVEL_KIT_MODULE_PV}"
-
-# ngx_brotli (https://github.com/google/ngx_brotli, BSD-2)
-HTTP_BROTLI_MODULE_PV="1.0.0rc"
-HTTP_BROTLI_MODULE_P="ngx_brotli-${HTTP_BROTLI_MODULE_PV}"
-HTTP_BROTLI_MODULE_URI="https://github.com/google/ngx_brotli/archive/v${HTTP_BROTLI_MODULE_PV}.tar.gz"
-HTTP_BROTLI_MODULE_WD="${WORKDIR}/ngx_brotli-${HTTP_BROTLI_MODULE_PV}"
-
-# http_uploadprogress (https://github.com/masterzen/nginx-upload-progress-module, BSD-2 license)
-HTTP_UPLOAD_PROGRESS_MODULE_PV="68b3ab3b64a0cee7f785d161401c8be357bbed12"
-HTTP_UPLOAD_PROGRESS_MODULE_P="ngx_http_upload_progress-${HTTP_UPLOAD_PROGRESS_MODULE_PV}"
-HTTP_UPLOAD_PROGRESS_MODULE_URI="https://github.com/masterzen/nginx-upload-progress-module/archive/${HTTP_UPLOAD_PROGRESS_MODULE_PV}.tar.gz"
-HTTP_UPLOAD_PROGRESS_MODULE_WD="${WORKDIR}/nginx-upload-progress-module-${HTTP_UPLOAD_PROGRESS_MODULE_PV}"
-
-# http_headers_more (https://github.com/openresty/headers-more-nginx-module, BSD license)
-HTTP_HEADERS_MORE_MODULE_PV="0.34"
-HTTP_HEADERS_MORE_MODULE_P="ngx_http_headers_more-${HTTP_HEADERS_MORE_MODULE_PV}"
-HTTP_HEADERS_MORE_MODULE_URI="https://github.com/openresty/headers-more-nginx-module/archive/v${HTTP_HEADERS_MORE_MODULE_PV}.tar.gz"
-HTTP_HEADERS_MORE_MODULE_WD="${WORKDIR}/headers-more-nginx-module-${HTTP_HEADERS_MORE_MODULE_PV}"
-
-# http_cache_purge (http://labs.frickle.com/nginx_ngx_cache_purge/, https://github.com/FRiCKLE/ngx_cache_purge, BSD-2 license)
-HTTP_CACHE_PURGE_MODULE_PV="2.3"
-HTTP_CACHE_PURGE_MODULE_P="ngx_http_cache_purge-${HTTP_CACHE_PURGE_MODULE_PV}"
-HTTP_CACHE_PURGE_MODULE_URI="http://labs.frickle.com/files/ngx_cache_purge-${HTTP_CACHE_PURGE_MODULE_PV}.tar.gz"
-HTTP_CACHE_PURGE_MODULE_WD="${WORKDIR}/ngx_cache_purge-${HTTP_CACHE_PURGE_MODULE_PV}"
-
-# http_slowfs_cache (http://labs.frickle.com/nginx_ngx_slowfs_cache/, BSD-2 license)
-HTTP_SLOWFS_CACHE_MODULE_PV="1.10"
-HTTP_SLOWFS_CACHE_MODULE_P="ngx_http_slowfs_cache-${HTTP_SLOWFS_CACHE_MODULE_PV}"
-HTTP_SLOWFS_CACHE_MODULE_URI="http://labs.frickle.com/files/ngx_slowfs_cache-${HTTP_SLOWFS_CACHE_MODULE_PV}.tar.gz"
-HTTP_SLOWFS_CACHE_MODULE_WD="${WORKDIR}/ngx_slowfs_cache-${HTTP_SLOWFS_CACHE_MODULE_PV}"
-
-# http_fancyindex (https://github.com/aperezdc/ngx-fancyindex, BSD license)
-HTTP_FANCYINDEX_MODULE_PV="0.4.4"
-HTTP_FANCYINDEX_MODULE_P="ngx_http_fancyindex-${HTTP_FANCYINDEX_MODULE_PV}"
-HTTP_FANCYINDEX_MODULE_URI="https://github.com/aperezdc/ngx-fancyindex/archive/v${HTTP_FANCYINDEX_MODULE_PV}.tar.gz"
-HTTP_FANCYINDEX_MODULE_WD="${WORKDIR}/ngx-fancyindex-${HTTP_FANCYINDEX_MODULE_PV}"
-
-# http_lua (https://github.com/openresty/lua-nginx-module, BSD license)
-HTTP_LUA_MODULE_PV="0.10.25"
-HTTP_LUA_MODULE_P="ngx_http_lua-${HTTP_LUA_MODULE_PV}"
-HTTP_LUA_MODULE_URI="https://github.com/openresty/lua-nginx-module/archive/v${HTTP_LUA_MODULE_PV}.tar.gz"
-HTTP_LUA_MODULE_WD="${WORKDIR}/lua-nginx-module-${HTTP_LUA_MODULE_PV}"
-LUA_COMPAT=( lua5-{1,3,4} luajit )
-
-# http_auth_pam (https://github.com/stogh/ngx_http_auth_pam_module/, http://web.iti.upv.es/~sto/nginx/, BSD-2 license)
-HTTP_AUTH_PAM_MODULE_PV="1.5.2"
-HTTP_AUTH_PAM_MODULE_P="ngx_http_auth_pam-${HTTP_AUTH_PAM_MODULE_PV}"
-HTTP_AUTH_PAM_MODULE_URI="https://github.com/stogh/ngx_http_auth_pam_module/archive/v${HTTP_AUTH_PAM_MODULE_PV}.tar.gz"
-HTTP_AUTH_PAM_MODULE_WD="${WORKDIR}/ngx_http_auth_pam_module-${HTTP_AUTH_PAM_MODULE_PV}"
-
-# http_upstream_check (https://github.com/yaoweibin/nginx_upstream_check_module, BSD license)
-HTTP_UPSTREAM_CHECK_MODULE_PV="9aecf15ec379fe98f62355c57b60c0bc83296f04"
-HTTP_UPSTREAM_CHECK_MODULE_P="ngx_http_upstream_check-${HTTP_UPSTREAM_CHECK_MODULE_PV}"
-HTTP_UPSTREAM_CHECK_MODULE_URI="https://github.com/yaoweibin/nginx_upstream_check_module/archive/${HTTP_UPSTREAM_CHECK_MODULE_PV}.tar.gz"
-HTTP_UPSTREAM_CHECK_MODULE_WD="${WORKDIR}/nginx_upstream_check_module-${HTTP_UPSTREAM_CHECK_MODULE_PV}"
-
-# http_metrics (https://github.com/zenops/ngx_metrics, BSD license)
-HTTP_METRICS_MODULE_PV="0.1.1"
-HTTP_METRICS_MODULE_P="ngx_metrics-${HTTP_METRICS_MODULE_PV}"
-HTTP_METRICS_MODULE_URI="https://github.com/liquidm/ngx_metrics/archive/v${HTTP_METRICS_MODULE_PV}.tar.gz"
-HTTP_METRICS_MODULE_WD="${WORKDIR}/ngx_metrics-${HTTP_METRICS_MODULE_PV}"
-
-# http_vhost_traffic_status (https://github.com/vozlt/nginx-module-vts, BSD license)
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV="0.2.1"
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_P="ngx_http_vhost_traffic_status-${HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV}"
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_URI="https://github.com/vozlt/nginx-module-vts/archive/v${HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV}.tar.gz"
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_WD="${WORKDIR}/nginx-module-vts-${HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV}"
-
-# naxsi-core (https://github.com/wargio/naxsi, GPL-3)
-HTTP_NAXSI_MODULE_PV="4140b2ded624eb36f04c783c460379b9403012d0"
-HTTP_NAXSI_MODULE_P="ngx_http_naxsi-${HTTP_NAXSI_MODULE_PV}"
-HTTP_NAXSI_MODULE_URI="https://github.com/wargio/naxsi/archive/${HTTP_NAXSI_MODULE_PV}.tar.gz"
-HTTP_NAXSI_MODULE_WD="${WORKDIR}/naxsi-${HTTP_NAXSI_MODULE_PV}/naxsi_src"
-HTTP_NAXSI_LIBINJECTION_MODULE_PV="49904c42a6e68dc8f16c022c693e897e4010a06c"
-HTTP_NAXSI_LIBINJECTION_MODULE_P="ngx_http_naxsi_libinjection-${HTTP_NAXSI_LIBINJECTION_MODULE_PV}"
-HTTP_NAXSI_LIBINJECTION_MODULE_URI="https://github.com/libinjection/libinjection/archive/${HTTP_NAXSI_LIBINJECTION_MODULE_PV}.tar.gz"
-
-# nginx-rtmp-module (https://github.com/arut/nginx-rtmp-module, BSD license)
-RTMP_MODULE_PV="1.2.2"
-RTMP_MODULE_P="ngx_rtmp-${RTMP_MODULE_PV}"
-RTMP_MODULE_URI="https://github.com/arut/nginx-rtmp-module/archive/v${RTMP_MODULE_PV}.tar.gz"
-RTMP_MODULE_WD="${WORKDIR}/nginx-rtmp-module-${RTMP_MODULE_PV}"
-
-# nginx-dav-ext-module (https://github.com/arut/nginx-dav-ext-module, BSD license)
-HTTP_DAV_EXT_MODULE_PV="3.0.0"
-HTTP_DAV_EXT_MODULE_P="ngx_http_dav_ext-${HTTP_DAV_EXT_MODULE_PV}"
-HTTP_DAV_EXT_MODULE_URI="https://github.com/arut/nginx-dav-ext-module/archive/v${HTTP_DAV_EXT_MODULE_PV}.tar.gz"
-HTTP_DAV_EXT_MODULE_WD="${WORKDIR}/nginx-dav-ext-module-${HTTP_DAV_EXT_MODULE_PV}"
-
-# echo-nginx-module (https://github.com/openresty/echo-nginx-module, BSD license)
-HTTP_ECHO_MODULE_PV="0.63"
-HTTP_ECHO_MODULE_P="ngx_http_echo-${HTTP_ECHO_MODULE_PV}"
-HTTP_ECHO_MODULE_URI="https://github.com/openresty/echo-nginx-module/archive/v${HTTP_ECHO_MODULE_PV}.tar.gz"
-HTTP_ECHO_MODULE_WD="${WORKDIR}/echo-nginx-module-${HTTP_ECHO_MODULE_PV}"
-
-# modsecurity for nginx (https://github.com/SpiderLabs/ModSecurity-nginx, https://github.com/SpiderLabs/ModSecurity, Apache-2.0)
-HTTP_SECURITY_MODULE_PV="1.0.3"
-HTTP_SECURITY_MODULE_P="modsecurity-nginx-${HTTP_SECURITY_MODULE_PV}"
-HTTP_SECURITY_MODULE_URI="https://github.com/SpiderLabs/ModSecurity-nginx/archive/refs/tags/v${HTTP_SECURITY_MODULE_PV}.tar.gz"
-HTTP_SECURITY_MODULE_WD="${WORKDIR}/ModSecurity-nginx-${HTTP_SECURITY_MODULE_PV}"
-
-# push-stream-module (http://www.nginxpushstream.com, https://github.com/wandenberg/nginx-push-stream-module, GPL-3)
-HTTP_PUSH_STREAM_MODULE_PV="8c02220d484d7848bc8e3a6d9b1c616987e86f66"
-HTTP_PUSH_STREAM_MODULE_P="ngx_http_push_stream-${HTTP_PUSH_STREAM_MODULE_PV}"
-HTTP_PUSH_STREAM_MODULE_URI="https://github.com/wandenberg/nginx-push-stream-module/archive/${HTTP_PUSH_STREAM_MODULE_PV}.tar.gz"
-HTTP_PUSH_STREAM_MODULE_WD="${WORKDIR}/nginx-push-stream-module-${HTTP_PUSH_STREAM_MODULE_PV}"
-
-# sticky-module (https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng, BSD-2)
-HTTP_STICKY_MODULE_PV="1.2.6-10-g08a395c66e42"
-HTTP_STICKY_MODULE_P="nginx_http_sticky_module_ng-${HTTP_STICKY_MODULE_PV}"
-HTTP_STICKY_MODULE_URI="https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/${HTTP_STICKY_MODULE_PV}.tar.bz2"
-HTTP_STICKY_MODULE_WD="${WORKDIR}/nginx-goodies-nginx-sticky-module-ng-08a395c66e42"
-
-# mogilefs-module (https://github.com/vkholodkov/nginx-mogilefs-module, BSD-2)
-HTTP_MOGILEFS_MODULE_PV="1.0.4"
-HTTP_MOGILEFS_MODULE_P="ngx_mogilefs_module-${HTTP_MOGILEFS_MODULE_PV}"
-HTTP_MOGILEFS_MODULE_URI="https://github.com/vkholodkov/nginx-mogilefs-module/archive/${HTTP_MOGILEFS_MODULE_PV}.tar.gz"
-HTTP_MOGILEFS_MODULE_WD="${WORKDIR}/nginx_mogilefs_module-${HTTP_MOGILEFS_MODULE_PV}"
-
-# memc-module (https://github.com/openresty/memc-nginx-module, BSD-2)
-HTTP_MEMC_MODULE_PV="0.19"
-HTTP_MEMC_MODULE_P="ngx_memc_module-${HTTP_MEMC_MODULE_PV}"
-HTTP_MEMC_MODULE_URI="https://github.com/openresty/memc-nginx-module/archive/v${HTTP_MEMC_MODULE_PV}.tar.gz"
-HTTP_MEMC_MODULE_WD="${WORKDIR}/memc-nginx-module-${HTTP_MEMC_MODULE_PV}"
-
-# nginx-ldap-auth-module (https://github.com/kvspb/nginx-auth-ldap, BSD-2)
-HTTP_LDAP_MODULE_PV="42d195d7a7575ebab1c369ad3fc5d78dc2c2669c"
-HTTP_LDAP_MODULE_P="nginx-auth-ldap-${HTTP_LDAP_MODULE_PV}"
-HTTP_LDAP_MODULE_URI="https://github.com/kvspb/nginx-auth-ldap/archive/${HTTP_LDAP_MODULE_PV}.tar.gz"
-HTTP_LDAP_MODULE_WD="${WORKDIR}/nginx-auth-ldap-${HTTP_LDAP_MODULE_PV}"
-
-# nginx-vod-module (https://github.com/kaltura/nginx-vod-module, AGPL-3+)
-HTTP_VOD_MODULE_PV="1.33"
-HTTP_VOD_MODULE_P="nginx-vod-module-${HTTP_VOD_MODULE_PV}"
-HTTP_VOD_MODULE_URI="https://github.com/kaltura/nginx-vod-module/archive/${HTTP_VOD_MODULE_PV}.tar.gz"
-HTTP_VOD_MODULE_WD="${WORKDIR}/nginx-vod-module-${HTTP_VOD_MODULE_PV}"
-
-# geoip2 (https://github.com/leev/ngx_http_geoip2_module, BSD-2)
-GEOIP2_MODULE_PV="3.4"
-GEOIP2_MODULE_P="ngx_http_geoip2_module-${GEOIP2_MODULE_PV}"
-GEOIP2_MODULE_URI="https://github.com/leev/ngx_http_geoip2_module/archive/${GEOIP2_MODULE_PV}.tar.gz"
-GEOIP2_MODULE_WD="${WORKDIR}/ngx_http_geoip2_module-${GEOIP2_MODULE_PV}"
-
-# njs-module (https://github.com/nginx/njs, as-is)
-NJS_MODULE_PV="0.8.10"
-NJS_MODULE_P="njs-${NJS_MODULE_PV}"
-NJS_MODULE_URI="https://github.com/nginx/njs/archive/${NJS_MODULE_PV}.tar.gz"
-NJS_MODULE_WD="${WORKDIR}/njs-${NJS_MODULE_PV}"
-
-# nginx-tests (http://hg.nginx.org/nginx-tests, BSD-2)
-NGINX_TESTS_REV="0b5ec15c62ed"
-
-# We handle deps below ourselves
-SSL_DEPS_SKIP=1
-AUTOTOOLS_AUTO_DEPEND="no"
-
-inherit autotools lua-single multiprocessing ssl-cert toolchain-funcs perl-module systemd pax-utils
-
-DESCRIPTION="Robust, small and high performance http and reverse proxy server"
-HOMEPAGE="https://nginx.org"
-SRC_URI="https://nginx.org/download/${P}.tar.gz
- ${DEVEL_KIT_MODULE_URI} -> ${DEVEL_KIT_MODULE_P}.tar.gz
- nginx_modules_http_auth_ldap? ( ${HTTP_LDAP_MODULE_URI} -> ${HTTP_LDAP_MODULE_P}.tar.gz )
- nginx_modules_http_auth_pam? ( ${HTTP_AUTH_PAM_MODULE_URI} -> ${HTTP_AUTH_PAM_MODULE_P}.tar.gz )
- nginx_modules_http_brotli? ( ${HTTP_BROTLI_MODULE_URI} -> ${HTTP_BROTLI_MODULE_P}.tar.gz )
- nginx_modules_http_cache_purge? ( ${HTTP_CACHE_PURGE_MODULE_URI} -> ${HTTP_CACHE_PURGE_MODULE_P}.tar.gz )
- nginx_modules_http_dav_ext? ( ${HTTP_DAV_EXT_MODULE_URI} -> ${HTTP_DAV_EXT_MODULE_P}.tar.gz )
- nginx_modules_http_echo? ( ${HTTP_ECHO_MODULE_URI} -> ${HTTP_ECHO_MODULE_P}.tar.gz )
- nginx_modules_http_fancyindex? ( ${HTTP_FANCYINDEX_MODULE_URI} -> ${HTTP_FANCYINDEX_MODULE_P}.tar.gz )
- nginx_modules_http_geoip2? ( ${GEOIP2_MODULE_URI} -> ${GEOIP2_MODULE_P}.tar.gz )
- nginx_modules_http_headers_more? ( ${HTTP_HEADERS_MORE_MODULE_URI} -> ${HTTP_HEADERS_MORE_MODULE_P}.tar.gz )
- nginx_modules_http_javascript? ( ${NJS_MODULE_URI} -> ${NJS_MODULE_P}.tar.gz )
- nginx_modules_http_lua? ( ${HTTP_LUA_MODULE_URI} -> ${HTTP_LUA_MODULE_P}.tar.gz )
- nginx_modules_http_memc? ( ${HTTP_MEMC_MODULE_URI} -> ${HTTP_MEMC_MODULE_P}.tar.gz )
- nginx_modules_http_metrics? ( ${HTTP_METRICS_MODULE_URI} -> ${HTTP_METRICS_MODULE_P}.tar.gz )
- nginx_modules_http_mogilefs? ( ${HTTP_MOGILEFS_MODULE_URI} -> ${HTTP_MOGILEFS_MODULE_P}.tar.gz )
- nginx_modules_http_naxsi? (
- ${HTTP_NAXSI_MODULE_URI} -> ${HTTP_NAXSI_MODULE_P}.tar.gz
- ${HTTP_NAXSI_LIBINJECTION_MODULE_URI} -> ${HTTP_NAXSI_LIBINJECTION_MODULE_P}.tar.gz
- )
- nginx_modules_http_push_stream? ( ${HTTP_PUSH_STREAM_MODULE_URI} -> ${HTTP_PUSH_STREAM_MODULE_P}.tar.gz )
- nginx_modules_http_security? ( ${HTTP_SECURITY_MODULE_URI} -> ${HTTP_SECURITY_MODULE_P}.tar.gz )
- nginx_modules_http_slowfs_cache? ( ${HTTP_SLOWFS_CACHE_MODULE_URI} -> ${HTTP_SLOWFS_CACHE_MODULE_P}.tar.gz )
- nginx_modules_http_sticky? ( ${HTTP_STICKY_MODULE_URI} -> ${HTTP_STICKY_MODULE_P}.tar.bz2 )
- nginx_modules_http_upload_progress? ( ${HTTP_UPLOAD_PROGRESS_MODULE_URI} -> ${HTTP_UPLOAD_PROGRESS_MODULE_P}.tar.gz )
- nginx_modules_http_upstream_check? ( ${HTTP_UPSTREAM_CHECK_MODULE_URI} -> ${HTTP_UPSTREAM_CHECK_MODULE_P}.tar.gz )
- nginx_modules_http_vhost_traffic_status? ( ${HTTP_VHOST_TRAFFIC_STATUS_MODULE_URI} -> ${HTTP_VHOST_TRAFFIC_STATUS_MODULE_P}.tar.gz )
- nginx_modules_http_vod? ( ${HTTP_VOD_MODULE_URI} -> ${HTTP_VOD_MODULE_P}.tar.gz )
- nginx_modules_stream_geoip2? ( ${GEOIP2_MODULE_URI} -> ${GEOIP2_MODULE_P}.tar.gz )
- nginx_modules_stream_javascript? ( ${NJS_MODULE_URI} -> ${NJS_MODULE_P}.tar.gz )
- rtmp? ( ${RTMP_MODULE_URI} -> ${RTMP_MODULE_P}.tar.gz )
- test? ( https://hg.nginx.org/nginx-tests/archive/${NGINX_TESTS_REV}.tar.gz -> nginx-tests-${NGINX_TESTS_REV}.tar.gz )"
-
-LICENSE="BSD-2 BSD SSLeay MIT GPL-2 GPL-2+
- nginx_modules_http_security? ( Apache-2.0 )
- nginx_modules_http_push_stream? ( GPL-3 )"
-
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv x86"
-
-RESTRICT="!test? ( test )"
-
-NGINX_MODULES_STD="access auth_basic autoindex browser charset empty_gif
- fastcgi geo grpc gzip limit_req limit_conn map memcached mirror
- proxy referer rewrite scgi ssi split_clients upstream_hash
- upstream_ip_hash upstream_keepalive upstream_least_conn
- upstream_zone userid uwsgi"
-NGINX_MODULES_OPT="addition auth_request dav degradation flv geoip gunzip
- gzip_static image_filter mp4 perl random_index realip secure_link
- slice stub_status sub xslt"
-NGINX_MODULES_STREAM_STD="access geo limit_conn map return split_clients
- upstream_hash upstream_least_conn upstream_zone"
-NGINX_MODULES_STREAM_OPT="geoip realip ssl_preread"
-NGINX_MODULES_MAIL="imap pop3 smtp"
-NGINX_MODULES_3RD="
- http_auth_ldap
- http_auth_pam
- http_brotli
- http_cache_purge
- http_dav_ext
- http_echo
- http_fancyindex
- http_geoip2
- http_headers_more
- http_javascript
- http_lua
- http_memc
- http_metrics
- http_mogilefs
- http_naxsi
- http_push_stream
- http_security
- http_slowfs_cache
- http_sticky
- http_upload_progress
- http_upstream_check
- http_vhost_traffic_status
- http_vod
- stream_geoip2
- stream_javascript
-"
-
-IUSE="aio debug +http +http2 http3 +http-cache ktls libatomic pcre +pcre2 pcre-jit rtmp selinux ssl test threads vim-syntax"
-
-for mod in $NGINX_MODULES_STD; do
- IUSE="${IUSE} +nginx_modules_http_${mod}"
-done
-
-for mod in $NGINX_MODULES_OPT; do
- IUSE="${IUSE} nginx_modules_http_${mod}"
-done
-
-for mod in $NGINX_MODULES_STREAM_STD; do
- IUSE="${IUSE} nginx_modules_stream_${mod}"
-done
-
-for mod in $NGINX_MODULES_STREAM_OPT; do
- IUSE="${IUSE} nginx_modules_stream_${mod}"
-done
-
-for mod in $NGINX_MODULES_MAIL; do
- IUSE="${IUSE} nginx_modules_mail_${mod}"
-done
-
-for mod in $NGINX_MODULES_3RD; do
- IUSE="${IUSE} nginx_modules_${mod}"
-done
-
-# Add so we can warn users updating about config changes
-# @TODO: jbergstroem: remove on next release series
-IUSE="${IUSE} nginx_modules_http_spdy"
-
-CDEPEND="
- acct-group/nginx
- acct-user/nginx
- virtual/libcrypt:=
- pcre? ( dev-libs/libpcre:= )
- pcre2? ( dev-libs/libpcre2:= )
- pcre-jit? ( dev-libs/libpcre:=[jit] )
- ssl? (
- dev-libs/openssl:0=
- )
- http2? (
- >=dev-libs/openssl-1.0.1c:0=
- )
- http-cache? (
- dev-libs/openssl:0=
- )
- ktls? (
- >=dev-libs/openssl-3:0=[ktls]
- )
- nginx_modules_http_brotli? ( app-arch/brotli:= )
- nginx_modules_http_geoip? ( dev-libs/geoip )
- nginx_modules_http_geoip2? ( dev-libs/libmaxminddb:= )
- nginx_modules_http_gunzip? ( virtual/zlib:= )
- nginx_modules_http_gzip? ( virtual/zlib:= )
- nginx_modules_http_gzip_static? ( virtual/zlib:= )
- nginx_modules_http_image_filter? ( media-libs/gd:=[jpeg,png] )
- nginx_modules_http_perl? ( >=dev-lang/perl-5.8:= )
- nginx_modules_http_rewrite? ( dev-libs/libpcre:= )
- nginx_modules_http_secure_link? ( dev-libs/openssl:0= )
- nginx_modules_http_xslt? ( dev-libs/libxml2:= dev-libs/libxslt )
- nginx_modules_http_lua? ( ${LUA_DEPS} )
- nginx_modules_http_auth_pam? ( sys-libs/pam )
- nginx_modules_http_metrics? ( dev-libs/yajl:= )
- nginx_modules_http_dav_ext? ( dev-libs/libxml2:= )
- nginx_modules_http_security? ( dev-libs/modsecurity:= )
- nginx_modules_http_auth_ldap? ( net-nds/openldap:=[ssl?] )
- nginx_modules_http_vod? ( media-video/ffmpeg:0= )
- nginx_modules_stream_geoip? ( dev-libs/geoip )
- nginx_modules_stream_geoip2? ( dev-libs/libmaxminddb:= )"
-RDEPEND="${CDEPEND}
- app-misc/mime-types[nginx]
- selinux? ( sec-policy/selinux-nginx )
- !www-servers/nginx:mainline"
-DEPEND="${CDEPEND}
- arm? ( dev-libs/libatomic_ops )
- libatomic? ( dev-libs/libatomic_ops )"
-BDEPEND="
- nginx_modules_http_brotli? ( virtual/pkgconfig )
- test? (
- dev-lang/perl
- dev-perl/Cache-Memcached
- dev-perl/Cache-Memcached-Fast
- dev-perl/CryptX
- dev-perl/FCGI
- dev-perl/GD
- dev-perl/Net-SSLeay
- )"
-# Unpackaged perl modules which would be used by tests
-# Protocol::WebSocket
-# SCGI
-
-# Uwsgi doesn't start in tests
-# www-servers/uwsgi
-
-PDEPEND="vim-syntax? ( app-vim/nginx-syntax )"
-
-REQUIRED_USE="pcre-jit? ( pcre )
- ktls? ( ssl )
- nginx_modules_http_fancyindex? ( nginx_modules_http_addition )
- nginx_modules_http_grpc? ( http2 )
- nginx_modules_http_lua? (
- ${LUA_REQUIRED_USE}
- nginx_modules_http_rewrite
- pcre
- !pcre2
- )
- nginx_modules_http_naxsi? ( nginx_modules_http_rewrite pcre )
- nginx_modules_http_dav_ext? ( nginx_modules_http_dav nginx_modules_http_xslt )
- nginx_modules_http_metrics? ( nginx_modules_http_stub_status )
- nginx_modules_http_security? ( pcre )
- nginx_modules_http_push_stream? ( ssl )
- nginx_modules_http_vod? ( threads )"
-
-pkg_setup() {
- NGINX_HOME="/var/lib/nginx"
- NGINX_HOME_TMP="${NGINX_HOME}/tmp"
-
- if use libatomic; then
- ewarn "GCC 4.1+ features built-in atomic operations."
- ewarn "Using libatomic_ops is only needed if using"
- ewarn "a different compiler or a GCC prior to 4.1"
- fi
-
- if [[ -n $NGINX_ADD_MODULES ]]; then
- ewarn "You are building custom modules via \$NGINX_ADD_MODULES!"
- ewarn "This nginx installation is not supported!"
- ewarn "Make sure you can reproduce the bug without those modules"
- ewarn "_before_ reporting bugs."
- fi
-
- if use !http; then
- ewarn "To actually disable all http-functionality you also have to disable"
- ewarn "all nginx http modules."
- fi
-
- if use nginx_modules_http_mogilefs && use threads; then
- eerror "mogilefs won't compile with threads support."
- eerror "Please disable either flag and try again."
- die "Can't compile mogilefs with threads support"
- fi
-
- use nginx_modules_http_lua && lua-single_pkg_setup
-}
-
-src_prepare() {
- eapply "${FILESDIR}/${PN}-1.4.1-fix-perl-install-path.patch"
- eapply "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-
- if use nginx_modules_http_auth_ldap; then
- cd "${HTTP_LDAP_MODULE_WD}" || die
- eapply "${FILESDIR}/${PN}-1.23.2-mod_auth_ldap-fix.patch"
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_javascript; then
- cd "${NJS_MODULE_WD}" || die
- sed -e 's/-Werror//g' -i auto/cc || die
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_sticky; then
- cd "${HTTP_STICKY_MODULE_WD}" || die
- eapply "${FILESDIR}"/http_sticky-nginx-1.23.0.patch
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_naxsi; then
- cd "${HTTP_NAXSI_MODULE_WD}" || die
- rm -r libinjection || die
- mv ../../libinjection-${HTTP_NAXSI_LIBINJECTION_MODULE_PV} libinjection || die
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_brotli; then
- cd "${HTTP_BROTLI_MODULE_WD}" || die
- eapply "${FILESDIR}"/http_brotli-detect-brotli-r3.patch
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_upstream_check; then
- eapply -p0 "${FILESDIR}"/http_upstream_check-nginx-1.11.5+.patch
- fi
-
- if use nginx_modules_http_cache_purge; then
- cd "${HTTP_CACHE_PURGE_MODULE_WD}" || die
- eapply "${FILESDIR}"/http_cache_purge-1.11.6+.patch
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_upload_progress; then
- cd "${HTTP_UPLOAD_PROGRESS_MODULE_WD}" || die
- eapply "${FILESDIR}"/http_uploadprogress-nginx-1.23.0.patch
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_security ; then
- cd "${HTTP_SECURITY_MODULE_WD}" || die
- eapply "${FILESDIR}/http_security-nginx-1.26.2.patch"
- cd "${S}" || die
- fi
-
- find auto/ -type f -print0 | xargs -0 sed -i 's:\&\& make:\&\& \\$(MAKE):' || die
- # We have config protection, don't rename etc files
- sed -i 's:.default::' auto/install || die
- # remove useless files
- sed -i -e '/koi-/d' -e '/win-/d' auto/install || die
-
- # don't install to /etc/nginx/ if not in use
- local module
- for module in fastcgi scgi uwsgi ; do
- if ! use nginx_modules_http_${module}; then
- sed -i -e "/${module}/d" auto/install || die
- fi
- done
-
- eapply_user
-}
-
-src_configure() {
- local myconf=() http_enabled= mail_enabled= stream_enabled=
-
- use aio && myconf+=( --with-file-aio )
- use debug && myconf+=( --with-debug )
- use http2 && myconf+=( --with-http_v2_module )
- use http3 && myconf+=( --with-http_v3_module )
- use ktls && myconf+=( --with-openssl-opt=enable-ktls )
- use libatomic && myconf+=( --with-libatomic )
- use pcre && myconf+=( --with-pcre --without-pcre2 )
- use pcre-jit && myconf+=( --with-pcre-jit )
- use threads && myconf+=( --with-threads )
-
- # HTTP modules
- for mod in $NGINX_MODULES_STD; do
- if use nginx_modules_http_${mod}; then
- http_enabled=1
- else
- myconf+=( --without-http_${mod}_module )
- fi
- done
-
- for mod in $NGINX_MODULES_OPT; do
- if use nginx_modules_http_${mod}; then
- http_enabled=1
- myconf+=( --with-http_${mod}_module )
- fi
- done
-
- if use nginx_modules_http_fastcgi; then
- myconf+=( --with-http_realip_module )
- fi
-
- # third-party modules
- if use nginx_modules_http_upload_progress; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_UPLOAD_PROGRESS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_headers_more; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_HEADERS_MORE_MODULE_WD} )
- fi
-
- if use nginx_modules_http_cache_purge; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_CACHE_PURGE_MODULE_WD} )
- fi
-
- if use nginx_modules_http_slowfs_cache; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_SLOWFS_CACHE_MODULE_WD} )
- fi
-
- if use nginx_modules_http_fancyindex; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_FANCYINDEX_MODULE_WD} )
- fi
-
- if use nginx_modules_http_lua; then
- http_enabled=1
- export LUAJIT_LIB=$(dirname $(lua_get_shared_lib))
- export LUAJIT_INC=$(lua_get_include_dir)
- myconf+=( --add-module=${DEVEL_KIT_MODULE_WD} )
- myconf+=( --add-module=${HTTP_LUA_MODULE_WD} )
- fi
-
- if use nginx_modules_http_auth_pam; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_AUTH_PAM_MODULE_WD} )
- fi
-
- if use nginx_modules_http_upstream_check; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_UPSTREAM_CHECK_MODULE_WD} )
- fi
-
- if use nginx_modules_http_metrics; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_METRICS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_naxsi ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_NAXSI_MODULE_WD} )
- fi
-
- if use rtmp ; then
- http_enabled=1
- myconf+=( --add-module=${RTMP_MODULE_WD} )
- fi
-
- if use nginx_modules_http_dav_ext ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_DAV_EXT_MODULE_WD} )
- fi
-
- if use nginx_modules_http_echo ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_ECHO_MODULE_WD} )
- fi
-
- if use nginx_modules_http_security ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_SECURITY_MODULE_WD} )
- fi
-
- if use nginx_modules_http_push_stream ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_PUSH_STREAM_MODULE_WD} )
- fi
-
- if use nginx_modules_http_sticky ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_STICKY_MODULE_WD} )
- fi
-
- if use nginx_modules_http_mogilefs ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_MOGILEFS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_memc ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_MEMC_MODULE_WD} )
- fi
-
- if use nginx_modules_http_auth_ldap; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_LDAP_MODULE_WD} )
- fi
-
- if use nginx_modules_http_vhost_traffic_status; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_VHOST_TRAFFIC_STATUS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_geoip2 || use nginx_modules_stream_geoip2; then
- myconf+=( --add-module=${GEOIP2_MODULE_WD} )
- fi
-
- if use nginx_modules_http_javascript || use nginx_modules_stream_javascript; then
- myconf+=( --add-module="${NJS_MODULE_WD}/nginx" )
- fi
-
- if use nginx_modules_http_brotli; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_BROTLI_MODULE_WD} )
- fi
-
- if use http || use http-cache || use http2 || use http3 || use nginx_modules_http_javascript; then
- http_enabled=1
- fi
-
- if use nginx_modules_http_vod; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_VOD_MODULE_WD} )
- fi
-
- if [ $http_enabled ]; then
- use http-cache || myconf+=( --without-http-cache )
- use ssl && myconf+=( --with-http_ssl_module )
- else
- myconf+=( --without-http --without-http-cache )
- fi
-
- # Stream modules
- for mod in $NGINX_MODULES_STREAM_STD; do
- if use nginx_modules_stream_${mod}; then
- stream_enabled=1
- else
- myconf+=( --without-stream_${mod}_module )
- fi
- done
-
- for mod in $NGINX_MODULES_STREAM_OPT; do
- if use nginx_modules_stream_${mod}; then
- stream_enabled=1
- myconf+=( --with-stream_${mod}_module )
- fi
- done
-
- if use nginx_modules_stream_geoip2 || use nginx_modules_stream_javascript; then
- stream_enabled=1
- fi
-
- if [ $stream_enabled ]; then
- myconf+=( --with-stream )
- use ssl && myconf+=( --with-stream_ssl_module )
- fi
-
- # MAIL modules
- for mod in $NGINX_MODULES_MAIL; do
- if use nginx_modules_mail_${mod}; then
- mail_enabled=1
- else
- myconf+=( --without-mail_${mod}_module )
- fi
- done
-
- if [ $mail_enabled ]; then
- myconf+=( --with-mail )
- use ssl && myconf+=( --with-mail_ssl_module )
- fi
-
- # custom modules
- for mod in $NGINX_ADD_MODULES; do
- myconf+=( --add-module=${mod} )
- done
-
- # https://bugs.gentoo.org/286772
- export LANG=C LC_ALL=C
- tc-export AR CC
-
- if ! use prefix; then
- myconf+=( --user=${PN} )
- myconf+=( --group=${PN} )
- fi
-
- if [[ -n "${EXTRA_ECONF}" ]]; then
- myconf+=( ${EXTRA_ECONF} )
- ewarn "EXTRA_ECONF applied. Now you are on your own, good luck!"
- fi
-
- ./configure \
- --prefix="${EPREFIX}"/usr \
- --conf-path="${EPREFIX}"/etc/${PN}/${PN}.conf \
- --error-log-path="${EPREFIX}"/var/log/${PN}/error_log \
- --pid-path="${EPREFIX}"/run/${PN}/${PN}.pid \
- --lock-path="${EPREFIX}"/run/lock/${PN}.lock \
- --with-cc-opt="-I${ESYSROOT}/usr/include" \
- --with-ld-opt="-L${ESYSROOT}/usr/$(get_libdir)" \
- --http-log-path="${EPREFIX}"/var/log/${PN}/access_log \
- --http-client-body-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/client \
- --http-proxy-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/proxy \
- --http-fastcgi-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/fastcgi \
- --http-scgi-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/scgi \
- --http-uwsgi-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/uwsgi \
- --with-compat \
- "${myconf[@]}" || die "configure failed"
-
- # A purely cosmetic change that makes nginx -V more readable. This can be
- # good if people outside the gentoo community would troubleshoot and
- # question the users setup.
- sed -i -e "s|${WORKDIR}|external_module|g" objs/ngx_auto_config.h || die
-}
-
-src_compile() {
- # https://bugs.gentoo.org/286772
- export LANG=C LC_ALL=C
- emake LINK="${CC} ${LDFLAGS}" OTHERLDFLAGS="${LDFLAGS}"
-}
-
-src_install() {
- emake DESTDIR="${D}" install
-
- cp "${FILESDIR}"/nginx.conf-r3 "${ED}"/etc/nginx/nginx.conf || die
-
- newinitd "${FILESDIR}"/nginx.initd-r4 nginx
- newconfd "${FILESDIR}"/nginx.confd nginx
-
- systemd_newunit "${FILESDIR}"/nginx.service-r1 nginx.service
-
- doman man/nginx.8
- dodoc CHANGES* README
-
- # just keepdir. do not copy the default htdocs files (bug #449136)
- keepdir /var/www/localhost
- rm -rf "${ED}"/usr/html || die
-
- # set up a list of directories to keep
- local keepdir_list="${NGINX_HOME_TMP}"/client
- local module
- for module in proxy fastcgi scgi uwsgi; do
- use nginx_modules_http_${module} && keepdir_list+=" ${NGINX_HOME_TMP}/${module}"
- done
-
- keepdir /var/log/nginx ${keepdir_list}
-
- # this solves a problem with SELinux where nginx doesn't see the directories
- # as root and tries to create them as nginx
- fperms 0750 "${NGINX_HOME_TMP}"
- fowners ${PN}:0 "${NGINX_HOME_TMP}"
-
- fperms 0700 ${keepdir_list}
- fowners ${PN}:${PN} ${keepdir_list}
-
- fperms 0710 /var/log/nginx
- fowners 0:${PN} /var/log/nginx
-
- # logrotate
- insinto /etc/logrotate.d
- newins "${FILESDIR}"/nginx.logrotate-r1 nginx
-
- # Don't create /run
- rm -rf "${ED}"/run || die
-
- if use lua_single_target_luajit; then
- pax-mark m "${ED}/usr/sbin/nginx"
- fi
-
- if use nginx_modules_http_perl; then
- cd "${S}"/objs/src/http/modules/perl/ || die
- emake DESTDIR="${D}" INSTALLDIRS=vendor
- perl_delete_localpod
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_cache_purge; then
- docinto ${HTTP_CACHE_PURGE_MODULE_P}
- dodoc "${HTTP_CACHE_PURGE_MODULE_WD}"/{CHANGES,README.md,TODO.md}
- fi
-
- if use nginx_modules_http_slowfs_cache; then
- docinto ${HTTP_SLOWFS_CACHE_MODULE_P}
- dodoc "${HTTP_SLOWFS_CACHE_MODULE_WD}"/{CHANGES,README.md}
- fi
-
- if use nginx_modules_http_fancyindex; then
- docinto ${HTTP_FANCYINDEX_MODULE_P}
- dodoc "${HTTP_FANCYINDEX_MODULE_WD}"/README.rst
- fi
-
- if use nginx_modules_http_lua; then
- docinto ${HTTP_LUA_MODULE_P}
- dodoc "${HTTP_LUA_MODULE_WD}"/README.markdown
- insinto /etc/nginx
- newins - 00-config.lua_vhost.conf <<-EOF
- lua_package_path "/etc/nginx/?.lua;;";
- EOF
- insinto /etc/nginx/resty
- touch "${ED}"/etc/nginx/resty/core.lua
- fi
-
- if use nginx_modules_http_auth_pam; then
- docinto ${HTTP_AUTH_PAM_MODULE_P}
- dodoc "${HTTP_AUTH_PAM_MODULE_WD}"/{README.md,ChangeLog}
- fi
-
- if use nginx_modules_http_upstream_check; then
- docinto ${HTTP_UPSTREAM_CHECK_MODULE_P}
- dodoc "${HTTP_UPSTREAM_CHECK_MODULE_WD}"/{README,CHANGES}
- fi
-
- if use nginx_modules_http_naxsi; then
- insinto /etc/nginx/naxsi
- doins "${HTTP_NAXSI_MODULE_WD}"/../distros/nginx/*
- doins "${HTTP_NAXSI_MODULE_WD}"/../naxsi_rules/naxsi_core.rules
- doins -r "${HTTP_NAXSI_MODULE_WD}"/../naxsi_rules/blocking
- doins -r "${HTTP_NAXSI_MODULE_WD}"/../naxsi_rules/whitelists
- fi
-
- if use rtmp; then
- docinto ${RTMP_MODULE_P}
- dodoc "${RTMP_MODULE_WD}"/{AUTHORS,README.md,stat.xsl}
- fi
-
- if use nginx_modules_http_dav_ext; then
- docinto ${HTTP_DAV_EXT_MODULE_P}
- dodoc "${HTTP_DAV_EXT_MODULE_WD}"/README.rst
- fi
-
- if use nginx_modules_http_echo; then
- docinto ${HTTP_ECHO_MODULE_P}
- dodoc "${HTTP_ECHO_MODULE_WD}"/README.markdown
- fi
-
- if use nginx_modules_http_security; then
- docinto ${HTTP_SECURITY_MODULE_P}
- dodoc "${HTTP_SECURITY_MODULE_WD}"/{AUTHORS,CHANGES,README.md}
- fi
-
- if use nginx_modules_http_push_stream; then
- docinto ${HTTP_PUSH_STREAM_MODULE_P}
- dodoc "${HTTP_PUSH_STREAM_MODULE_WD}"/{AUTHORS,CHANGELOG.textile,README.textile}
- fi
-
- if use nginx_modules_http_sticky; then
- docinto ${HTTP_STICKY_MODULE_P}
- dodoc "${HTTP_STICKY_MODULE_WD}"/{README.md,Changelog.txt,docs/sticky.pdf}
- fi
-
- if use nginx_modules_http_memc; then
- docinto ${HTTP_MEMC_MODULE_P}
- dodoc "${HTTP_MEMC_MODULE_WD}"/README.markdown
- fi
-
- if use nginx_modules_http_auth_ldap; then
- docinto ${HTTP_LDAP_MODULE_P}
- dodoc "${HTTP_LDAP_MODULE_WD}"/example.conf
- fi
-
- if use nginx_modules_http_vod; then
- docinto ${HTTP_VOD_MODULE_P}
- dodoc "${HTTP_VOD_MODULE_WD}"/{CHANGELOG,README}.md
- fi
-}
-
-src_test() {
- pushd "${WORKDIR}"/nginx-tests-"${NGINX_TESTS_REV}" > /dev/null || die
-
- # FIXME: unsure why uwsgi fails to start
- rm uwsgi*.t || die
-
- local -x TEST_NGINX_BINARY="${S}/objs/nginx"
- local -x TEST_NGINX_VERBOSE=1
-
- prove -v -j $(makeopts_jobs) . || die
- popd > /dev/null || die
-}
-
-pkg_postinst() {
- if use ssl; then
- if [[ ! -f "${EROOT}"/etc/ssl/${PN}/${PN}.key ]]; then
- install_cert /etc/ssl/${PN}/${PN}
- use prefix || chown ${PN}:${PN} "${EROOT}"/etc/ssl/${PN}/${PN}.{crt,csr,key,pem}
- fi
- fi
-
- if use nginx_modules_http_spdy; then
- ewarn ""
- ewarn "In nginx 1.9.5 the spdy module was superseded by http2."
- ewarn "Update your configs and package.use accordingly."
- fi
-
- if use nginx_modules_http_lua; then
- ewarn ""
- ewarn "While you can build lua 3rd party module against ${P}"
- ewarn "the author warns that >=${PN}-1.11.11 is still not an"
- ewarn "officially supported target yet. You are on your own."
- ewarn "Expect runtime failures, memory leaks and other problems!"
- fi
-
- if use nginx_modules_http_lua && use http2; then
- ewarn ""
- ewarn "Lua 3rd party module author warns against using ${P} with"
- ewarn "NGINX_MODULES_HTTP=\"lua http2\". For more info, see https://git.io/OldLsg"
- fi
-
- local _n_permission_layout_checks=0
- local _has_to_adjust_permissions=0
- local _has_to_show_permission_warning=0
-
- # Defaults to 1 to inform people doing a fresh installation
- # that we ship modified {scgi,uwsgi,fastcgi}_params files
- local _has_to_show_httpoxy_mitigation_notice=1
-
- local _replacing_version=
- for _replacing_version in ${REPLACING_VERSIONS}; do
- _n_permission_layout_checks=$((${_n_permission_layout_checks}+1))
-
- if [[ ${_n_permission_layout_checks} -gt 1 ]]; then
- # Should never happen:
- # Package is abusing slots but doesn't allow multiple parallel installations.
- # If we run into this situation it is unsafe to automatically adjust any
- # permission...
- _has_to_show_permission_warning=1
-
- ewarn "Replacing multiple ${PN}' versions is unsupported! " \
- "You will have to adjust permissions on your own."
-
- break
- fi
-
- local _replacing_version_branch=$(ver_cut 1-2 "${_replacing_version}")
- debug-print "Updating an existing installation (v${_replacing_version}; branch '${_replacing_version_branch}') ..."
-
- # Do we need to adjust permissions to fix CVE-2013-0337 (bug #458726, #469094)?
- # This was before we introduced multiple nginx versions so we
- # do not need to distinguish between stable and mainline
- local _need_to_fix_CVE2013_0337=1
-
- if ver_test ${_replacing_version} -ge 1.4.1-r2; then
- # We are updating an installation which should already be fixed
- _need_to_fix_CVE2013_0337=0
- debug-print "Skipping CVE-2013-0337 ... existing installation should not be affected!"
- else
- _has_to_adjust_permissions=1
- debug-print "Need to adjust permissions to fix CVE-2013-0337!"
- fi
-
- # Do we need to inform about HTTPoxy mitigation?
- # In repository since commit 8be44f76d4ac02cebcd1e0e6e6284bb72d054b0f
- if ver_test ${_replacing_version_branch} -lt 1.10; then
- # Updating from <1.10
- _has_to_show_httpoxy_mitigation_notice=1
- debug-print "Need to inform about HTTPoxy mitigation!"
- else
- # Updating from >=1.10
- local _fixed_in_pvr=
- case "${_replacing_version_branch}" in
- "1.10")
- _fixed_in_pvr="1.10.1-r2"
- ;;
- "1.11")
- _fixed_in_pvr="1.11.3-r1"
- ;;
- *)
- # This should be any future branch.
- # If we run this code it is safe to assume that the user has
- # already seen the HTTPoxy mitigation notice because he/she is doing
- # an update from previous version where we have already shown
- # the warning. Otherwise, we wouldn't hit this code path ...
- _fixed_in_pvr=
- esac
-
- if [[ -z "${_fixed_in_pvr}" ]] || ver_test ${_replacing_version} -ge ${_fixed_in_pvr}; then
- # We are updating an installation where we already informed
- # that we are mitigating HTTPoxy per default
- _has_to_show_httpoxy_mitigation_notice=0
- debug-print "No need to inform about HTTPoxy mitigation ... information was already shown for existing installation!"
- else
- _has_to_show_httpoxy_mitigation_notice=1
- debug-print "Need to inform about HTTPoxy mitigation!"
- fi
- fi
-
- # Do we need to adjust permissions to fix CVE-2016-1247 (bug #605008)?
- # All branches up to 1.11 are affected
- local _need_to_fix_CVE2016_1247=1
-
- if ver_test ${_replacing_version_branch} -lt 1.10; then
- # Updating from <1.10
- _has_to_adjust_permissions=1
- debug-print "Need to adjust permissions to fix CVE-2016-1247!"
- else
- # Updating from >=1.10
- local _fixed_in_pvr=
- case "${_replacing_version_branch}" in
- "1.10")
- _fixed_in_pvr="1.10.2-r3"
- ;;
- "1.11")
- _fixed_in_pvr="1.11.6-r1"
- ;;
- *)
- # This should be any future branch.
- # If we run this code it is safe to assume that we have already
- # adjusted permissions or were never affected because user is
- # doing an update from previous version which was safe or did
- # the adjustments. Otherwise, we wouldn't hit this code path ...
- _fixed_in_pvr=
- esac
-
- if [[ -z "${_fixed_in_pvr}" ]] || ver_test ${_replacing_version} -ge ${_fixed_in_pvr}; then
- # We are updating an installation which should already be adjusted
- # or which was never affected
- _need_to_fix_CVE2016_1247=0
- debug-print "Skipping CVE-2016-1247 ... existing installation should not be affected!"
- else
- _has_to_adjust_permissions=1
- debug-print "Need to adjust permissions to fix CVE-2016-1247!"
- fi
- fi
- done
-
- if [[ ${_has_to_adjust_permissions} -eq 1 ]]; then
- # We do not DIE when chmod/chown commands are failing because
- # package is already merged on user's system at this stage
- # and we cannot retry without losing the information that
- # the existing installation needs to adjust permissions.
- # Instead we are going to a show a big warning ...
-
- if [[ ${_has_to_show_permission_warning} -eq 0 ]] && [[ ${_need_to_fix_CVE2013_0337} -eq 1 ]]; then
- ewarn ""
- ewarn "The world-readable bit (if set) has been removed from the"
- ewarn "following directories to mitigate a security bug"
- ewarn "(CVE-2013-0337, bug #458726):"
- ewarn ""
- ewarn " ${EPREFIX}/var/log/nginx"
- ewarn " ${EPREFIX}${NGINX_HOME_TMP}/{,client,proxy,fastcgi,scgi,uwsgi}"
- ewarn ""
- ewarn "Check if this is correct for your setup before restarting nginx!"
- ewarn "This is a one-time change and will not happen on subsequent updates."
- ewarn "Furthermore nginx' temp directories got moved to '${EPREFIX}${NGINX_HOME_TMP}'"
- chmod o-rwx \
- "${EPREFIX}"/var/log/nginx \
- "${EPREFIX}"${NGINX_HOME_TMP}/{,client,proxy,fastcgi,scgi,uwsgi} || \
- _has_to_show_permission_warning=1
- fi
-
- if [[ ${_has_to_show_permission_warning} -eq 0 ]] && [[ ${_need_to_fix_CVE2016_1247} -eq 1 ]]; then
- ewarn ""
- ewarn "The permissions on the following directory have been reset in"
- ewarn "order to mitigate a security bug (CVE-2016-1247, bug #605008):"
- ewarn ""
- ewarn " ${EPREFIX}/var/log/nginx"
- ewarn ""
- ewarn "Check if this is correct for your setup before restarting nginx!"
- ewarn "Also ensure that no other log directory used by any of your"
- ewarn "vhost(s) is not writeable for nginx user. Any of your log files"
- ewarn "used by nginx can be abused to escalate privileges!"
- ewarn "This is a one-time change and will not happen on subsequent updates."
- chown 0:nginx "${EPREFIX}"/var/log/nginx || _has_to_show_permission_warning=1
- chmod 710 "${EPREFIX}"/var/log/nginx || _has_to_show_permission_warning=1
- fi
-
- if [[ ${_has_to_show_permission_warning} -eq 1 ]]; then
- # Should never happen ...
- ewarn ""
- ewarn "*************************************************************"
- ewarn "*************** W A R N I N G ***************"
- ewarn "*************************************************************"
- ewarn "The one-time only attempt to adjust permissions of the"
- ewarn "existing nginx installation failed. Be aware that we will not"
- ewarn "try to adjust the same permissions again because now you are"
- ewarn "using a nginx version where we expect that the permissions"
- ewarn "are already adjusted or that you know what you are doing and"
- ewarn "want to keep custom permissions."
- ewarn ""
- fi
- fi
-
- # Sanity check for CVE-2016-1247
- # Required to warn users who received the warning above and thought
- # they could fix it by unmerging and re-merging the package or have
- # unmerged a affected installation on purpose in the past leaving
- # /var/log/nginx on their system due to keepdir/non-empty folder
- # and are now installing the package again.
- local _sanity_check_testfile=$(mktemp --dry-run "${EPREFIX}"/var/log/nginx/.CVE-2016-1247.XXXXXXXXX)
- su -s /bin/sh -c "touch ${_sanity_check_testfile}" nginx >&/dev/null
- if [ $? -eq 0 ] ; then
- # Cleanup -- no reason to die here!
- rm -f "${_sanity_check_testfile}"
-
- ewarn ""
- ewarn "*************************************************************"
- ewarn "*************** W A R N I N G ***************"
- ewarn "*************************************************************"
- ewarn "Looks like your installation is vulnerable to CVE-2016-1247"
- ewarn "(bug #605008) because nginx user is able to create files in"
- ewarn ""
- ewarn " ${EPREFIX}/var/log/nginx"
- ewarn ""
- ewarn "Also ensure that no other log directory used by any of your"
- ewarn "vhost(s) is not writeable for nginx user. Any of your log files"
- ewarn "used by nginx can be abused to escalate privileges!"
- fi
-
- if [[ ${_has_to_show_httpoxy_mitigation_notice} -eq 1 ]]; then
- # HTTPoxy mitigation
- ewarn ""
- ewarn "This nginx installation comes with a mitigation for the HTTPoxy"
- ewarn "vulnerability for FastCGI, SCGI and uWSGI applications by setting"
- ewarn "the HTTP_PROXY parameter to an empty string per default when you"
- ewarn "are sourcing one of the default"
- ewarn ""
- ewarn " - 'fastcgi_params' or 'fastcgi.conf'"
- ewarn " - 'scgi_params'"
- ewarn " - 'uwsgi_params'"
- ewarn ""
- ewarn "files in your server block(s)."
- ewarn ""
- ewarn "If this is causing any problems for you make sure that you are sourcing the"
- ewarn "default parameters _before_ you set your own values."
- ewarn "If you are relying on user-supplied proxy values you have to remove the"
- ewarn "correlating lines from the file(s) mentioned above."
- ewarn ""
- fi
-}
diff --git a/www-servers/nginx/nginx-1.27.5-r1.ebuild b/www-servers/nginx/nginx-1.27.5-r1.ebuild
deleted file mode 100644
index a5ac25de4edd..000000000000
--- a/www-servers/nginx/nginx-1.27.5-r1.ebuild
+++ /dev/null
@@ -1,1132 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Maintainer notes:
-# - http_rewrite-independent pcre-support makes sense for matching locations without an actual rewrite
-# - any http-module activates the main http-functionality and overrides USE=-http
-# - keep the following requirements in mind before adding external modules:
-# * alive upstream
-# * sane packaging
-# * builds cleanly
-# * does not need a patch for nginx core
-# - Update NGINX_TESTS_REV to the current available revision and run tests.
-# - TODO: test the google-perftools module (included in vanilla tarball)
-
-# prevent perl-module from adding automagic perl DEPENDs
-GENTOO_DEPEND_ON_PERL="no"
-
-# devel_kit (https://github.com/simpl/ngx_devel_kit, BSD license)
-DEVEL_KIT_MODULE_PV="0.3.1"
-DEVEL_KIT_MODULE_P="ngx_devel_kit-${DEVEL_KIT_MODULE_PV}"
-DEVEL_KIT_MODULE_URI="https://github.com/simpl/ngx_devel_kit/archive/v${DEVEL_KIT_MODULE_PV}.tar.gz"
-DEVEL_KIT_MODULE_WD="${WORKDIR}/ngx_devel_kit-${DEVEL_KIT_MODULE_PV}"
-
-# ngx_brotli (https://github.com/google/ngx_brotli, BSD-2)
-HTTP_BROTLI_MODULE_PV="1.0.0rc"
-HTTP_BROTLI_MODULE_P="ngx_brotli-${HTTP_BROTLI_MODULE_PV}"
-HTTP_BROTLI_MODULE_URI="https://github.com/google/ngx_brotli/archive/v${HTTP_BROTLI_MODULE_PV}.tar.gz"
-HTTP_BROTLI_MODULE_WD="${WORKDIR}/ngx_brotli-${HTTP_BROTLI_MODULE_PV}"
-
-# http_uploadprogress (https://github.com/masterzen/nginx-upload-progress-module, BSD-2 license)
-HTTP_UPLOAD_PROGRESS_MODULE_PV="68b3ab3b64a0cee7f785d161401c8be357bbed12"
-HTTP_UPLOAD_PROGRESS_MODULE_P="ngx_http_upload_progress-${HTTP_UPLOAD_PROGRESS_MODULE_PV}"
-HTTP_UPLOAD_PROGRESS_MODULE_URI="https://github.com/masterzen/nginx-upload-progress-module/archive/${HTTP_UPLOAD_PROGRESS_MODULE_PV}.tar.gz"
-HTTP_UPLOAD_PROGRESS_MODULE_WD="${WORKDIR}/nginx-upload-progress-module-${HTTP_UPLOAD_PROGRESS_MODULE_PV}"
-
-# http_headers_more (https://github.com/openresty/headers-more-nginx-module, BSD license)
-HTTP_HEADERS_MORE_MODULE_PV="0.34"
-HTTP_HEADERS_MORE_MODULE_P="ngx_http_headers_more-${HTTP_HEADERS_MORE_MODULE_PV}"
-HTTP_HEADERS_MORE_MODULE_URI="https://github.com/openresty/headers-more-nginx-module/archive/v${HTTP_HEADERS_MORE_MODULE_PV}.tar.gz"
-HTTP_HEADERS_MORE_MODULE_WD="${WORKDIR}/headers-more-nginx-module-${HTTP_HEADERS_MORE_MODULE_PV}"
-
-# http_cache_purge (https://github.com/nginx-modules/ngx_cache_purge, BSD-2 license)
-HTTP_CACHE_PURGE_MODULE_PV="2.5.3"
-HTTP_CACHE_PURGE_MODULE_P="ngx_http_cache_purge-${HTTP_CACHE_PURGE_MODULE_PV}"
-HTTP_CACHE_PURGE_MODULE_URI="https://github.com/nginx-modules/ngx_cache_purge/archive/refs/tags/${HTTP_CACHE_PURGE_MODULE_PV}.tar.gz"
-HTTP_CACHE_PURGE_MODULE_WD="${WORKDIR}/ngx_cache_purge-${HTTP_CACHE_PURGE_MODULE_PV}"
-
-# http_slowfs_cache (http://labs.frickle.com/nginx_ngx_slowfs_cache/, BSD-2 license)
-HTTP_SLOWFS_CACHE_MODULE_PV="1.10"
-HTTP_SLOWFS_CACHE_MODULE_P="ngx_http_slowfs_cache-${HTTP_SLOWFS_CACHE_MODULE_PV}"
-HTTP_SLOWFS_CACHE_MODULE_URI="http://labs.frickle.com/files/ngx_slowfs_cache-${HTTP_SLOWFS_CACHE_MODULE_PV}.tar.gz"
-HTTP_SLOWFS_CACHE_MODULE_WD="${WORKDIR}/ngx_slowfs_cache-${HTTP_SLOWFS_CACHE_MODULE_PV}"
-
-# http_fancyindex (https://github.com/aperezdc/ngx-fancyindex, BSD license)
-HTTP_FANCYINDEX_MODULE_PV="0.4.4"
-HTTP_FANCYINDEX_MODULE_P="ngx_http_fancyindex-${HTTP_FANCYINDEX_MODULE_PV}"
-HTTP_FANCYINDEX_MODULE_URI="https://github.com/aperezdc/ngx-fancyindex/archive/v${HTTP_FANCYINDEX_MODULE_PV}.tar.gz"
-HTTP_FANCYINDEX_MODULE_WD="${WORKDIR}/ngx-fancyindex-${HTTP_FANCYINDEX_MODULE_PV}"
-
-# http_lua (https://github.com/openresty/lua-nginx-module, BSD license)
-HTTP_LUA_MODULE_PV="0.10.25"
-HTTP_LUA_MODULE_P="ngx_http_lua-${HTTP_LUA_MODULE_PV}"
-HTTP_LUA_MODULE_URI="https://github.com/openresty/lua-nginx-module/archive/v${HTTP_LUA_MODULE_PV}.tar.gz"
-HTTP_LUA_MODULE_WD="${WORKDIR}/lua-nginx-module-${HTTP_LUA_MODULE_PV}"
-LUA_COMPAT=( lua5-{1,3,4} luajit )
-
-# http_auth_pam (https://github.com/stogh/ngx_http_auth_pam_module/, http://web.iti.upv.es/~sto/nginx/, BSD-2 license)
-HTTP_AUTH_PAM_MODULE_PV="1.5.2"
-HTTP_AUTH_PAM_MODULE_P="ngx_http_auth_pam-${HTTP_AUTH_PAM_MODULE_PV}"
-HTTP_AUTH_PAM_MODULE_URI="https://github.com/stogh/ngx_http_auth_pam_module/archive/v${HTTP_AUTH_PAM_MODULE_PV}.tar.gz"
-HTTP_AUTH_PAM_MODULE_WD="${WORKDIR}/ngx_http_auth_pam_module-${HTTP_AUTH_PAM_MODULE_PV}"
-
-# http_upstream_check (https://github.com/yaoweibin/nginx_upstream_check_module, BSD license)
-HTTP_UPSTREAM_CHECK_MODULE_PV="9aecf15ec379fe98f62355c57b60c0bc83296f04"
-HTTP_UPSTREAM_CHECK_MODULE_P="ngx_http_upstream_check-${HTTP_UPSTREAM_CHECK_MODULE_PV}"
-HTTP_UPSTREAM_CHECK_MODULE_URI="https://github.com/yaoweibin/nginx_upstream_check_module/archive/${HTTP_UPSTREAM_CHECK_MODULE_PV}.tar.gz"
-HTTP_UPSTREAM_CHECK_MODULE_WD="${WORKDIR}/nginx_upstream_check_module-${HTTP_UPSTREAM_CHECK_MODULE_PV}"
-
-# http_metrics (https://github.com/zenops/ngx_metrics, BSD license)
-HTTP_METRICS_MODULE_PV="0.1.1"
-HTTP_METRICS_MODULE_P="ngx_metrics-${HTTP_METRICS_MODULE_PV}"
-HTTP_METRICS_MODULE_URI="https://github.com/liquidm/ngx_metrics/archive/v${HTTP_METRICS_MODULE_PV}.tar.gz"
-HTTP_METRICS_MODULE_WD="${WORKDIR}/ngx_metrics-${HTTP_METRICS_MODULE_PV}"
-
-# http_vhost_traffic_status (https://github.com/vozlt/nginx-module-vts, BSD license)
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV="0.2.1"
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_P="ngx_http_vhost_traffic_status-${HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV}"
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_URI="https://github.com/vozlt/nginx-module-vts/archive/v${HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV}.tar.gz"
-HTTP_VHOST_TRAFFIC_STATUS_MODULE_WD="${WORKDIR}/nginx-module-vts-${HTTP_VHOST_TRAFFIC_STATUS_MODULE_PV}"
-
-# naxsi-core (https://github.com/wargio/naxsi, GPL-3)
-HTTP_NAXSI_MODULE_PV="4140b2ded624eb36f04c783c460379b9403012d0"
-HTTP_NAXSI_MODULE_P="ngx_http_naxsi-${HTTP_NAXSI_MODULE_PV}"
-HTTP_NAXSI_MODULE_URI="https://github.com/wargio/naxsi/archive/${HTTP_NAXSI_MODULE_PV}.tar.gz"
-HTTP_NAXSI_MODULE_WD="${WORKDIR}/naxsi-${HTTP_NAXSI_MODULE_PV}/naxsi_src"
-HTTP_NAXSI_LIBINJECTION_MODULE_PV="49904c42a6e68dc8f16c022c693e897e4010a06c"
-HTTP_NAXSI_LIBINJECTION_MODULE_P="ngx_http_naxsi_libinjection-${HTTP_NAXSI_LIBINJECTION_MODULE_PV}"
-HTTP_NAXSI_LIBINJECTION_MODULE_URI="https://github.com/libinjection/libinjection/archive/${HTTP_NAXSI_LIBINJECTION_MODULE_PV}.tar.gz"
-
-# nginx-rtmp-module (https://github.com/arut/nginx-rtmp-module, BSD license)
-RTMP_MODULE_PV="1.2.2"
-RTMP_MODULE_P="ngx_rtmp-${RTMP_MODULE_PV}"
-RTMP_MODULE_URI="https://github.com/arut/nginx-rtmp-module/archive/v${RTMP_MODULE_PV}.tar.gz"
-RTMP_MODULE_WD="${WORKDIR}/nginx-rtmp-module-${RTMP_MODULE_PV}"
-
-# nginx-dav-ext-module (https://github.com/arut/nginx-dav-ext-module, BSD license)
-HTTP_DAV_EXT_MODULE_PV="3.0.0"
-HTTP_DAV_EXT_MODULE_P="ngx_http_dav_ext-${HTTP_DAV_EXT_MODULE_PV}"
-HTTP_DAV_EXT_MODULE_URI="https://github.com/arut/nginx-dav-ext-module/archive/v${HTTP_DAV_EXT_MODULE_PV}.tar.gz"
-HTTP_DAV_EXT_MODULE_WD="${WORKDIR}/nginx-dav-ext-module-${HTTP_DAV_EXT_MODULE_PV}"
-
-# echo-nginx-module (https://github.com/openresty/echo-nginx-module, BSD license)
-HTTP_ECHO_MODULE_PV="0.63"
-HTTP_ECHO_MODULE_P="ngx_http_echo-${HTTP_ECHO_MODULE_PV}"
-HTTP_ECHO_MODULE_URI="https://github.com/openresty/echo-nginx-module/archive/v${HTTP_ECHO_MODULE_PV}.tar.gz"
-HTTP_ECHO_MODULE_WD="${WORKDIR}/echo-nginx-module-${HTTP_ECHO_MODULE_PV}"
-
-# modsecurity for nginx (https://github.com/SpiderLabs/ModSecurity-nginx, https://github.com/SpiderLabs/ModSecurity, Apache-2.0)
-HTTP_SECURITY_MODULE_PV="1.0.3"
-HTTP_SECURITY_MODULE_P="modsecurity-nginx-${HTTP_SECURITY_MODULE_PV}"
-HTTP_SECURITY_MODULE_URI="https://github.com/SpiderLabs/ModSecurity-nginx/archive/refs/tags/v${HTTP_SECURITY_MODULE_PV}.tar.gz"
-HTTP_SECURITY_MODULE_WD="${WORKDIR}/ModSecurity-nginx-${HTTP_SECURITY_MODULE_PV}"
-
-# push-stream-module (http://www.nginxpushstream.com, https://github.com/wandenberg/nginx-push-stream-module, GPL-3)
-HTTP_PUSH_STREAM_MODULE_PV="8c02220d484d7848bc8e3a6d9b1c616987e86f66"
-HTTP_PUSH_STREAM_MODULE_P="ngx_http_push_stream-${HTTP_PUSH_STREAM_MODULE_PV}"
-HTTP_PUSH_STREAM_MODULE_URI="https://github.com/wandenberg/nginx-push-stream-module/archive/${HTTP_PUSH_STREAM_MODULE_PV}.tar.gz"
-HTTP_PUSH_STREAM_MODULE_WD="${WORKDIR}/nginx-push-stream-module-${HTTP_PUSH_STREAM_MODULE_PV}"
-
-# sticky-module (https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng, BSD-2)
-HTTP_STICKY_MODULE_PV="1.2.6-10-g08a395c66e42"
-HTTP_STICKY_MODULE_P="nginx_http_sticky_module_ng-${HTTP_STICKY_MODULE_PV}"
-HTTP_STICKY_MODULE_URI="https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/${HTTP_STICKY_MODULE_PV}.tar.bz2"
-HTTP_STICKY_MODULE_WD="${WORKDIR}/nginx-goodies-nginx-sticky-module-ng-08a395c66e42"
-
-# mogilefs-module (https://github.com/vkholodkov/nginx-mogilefs-module, BSD-2)
-HTTP_MOGILEFS_MODULE_PV="1.0.4"
-HTTP_MOGILEFS_MODULE_P="ngx_mogilefs_module-${HTTP_MOGILEFS_MODULE_PV}"
-HTTP_MOGILEFS_MODULE_URI="https://github.com/vkholodkov/nginx-mogilefs-module/archive/${HTTP_MOGILEFS_MODULE_PV}.tar.gz"
-HTTP_MOGILEFS_MODULE_WD="${WORKDIR}/nginx_mogilefs_module-${HTTP_MOGILEFS_MODULE_PV}"
-
-# memc-module (https://github.com/openresty/memc-nginx-module, BSD-2)
-HTTP_MEMC_MODULE_PV="0.19"
-HTTP_MEMC_MODULE_P="ngx_memc_module-${HTTP_MEMC_MODULE_PV}"
-HTTP_MEMC_MODULE_URI="https://github.com/openresty/memc-nginx-module/archive/v${HTTP_MEMC_MODULE_PV}.tar.gz"
-HTTP_MEMC_MODULE_WD="${WORKDIR}/memc-nginx-module-${HTTP_MEMC_MODULE_PV}"
-
-# nginx-ldap-auth-module (https://github.com/kvspb/nginx-auth-ldap, BSD-2)
-HTTP_LDAP_MODULE_PV="42d195d7a7575ebab1c369ad3fc5d78dc2c2669c"
-HTTP_LDAP_MODULE_P="nginx-auth-ldap-${HTTP_LDAP_MODULE_PV}"
-HTTP_LDAP_MODULE_URI="https://github.com/kvspb/nginx-auth-ldap/archive/${HTTP_LDAP_MODULE_PV}.tar.gz"
-HTTP_LDAP_MODULE_WD="${WORKDIR}/nginx-auth-ldap-${HTTP_LDAP_MODULE_PV}"
-
-# nginx-vod-module (https://github.com/kaltura/nginx-vod-module, AGPL-3+)
-HTTP_VOD_MODULE_PV="1.33"
-HTTP_VOD_MODULE_P="nginx-vod-module-${HTTP_VOD_MODULE_PV}"
-HTTP_VOD_MODULE_URI="https://github.com/kaltura/nginx-vod-module/archive/${HTTP_VOD_MODULE_PV}.tar.gz"
-HTTP_VOD_MODULE_WD="${WORKDIR}/nginx-vod-module-${HTTP_VOD_MODULE_PV}"
-
-# geoip2 (https://github.com/leev/ngx_http_geoip2_module, BSD-2)
-GEOIP2_MODULE_PV="3.4"
-GEOIP2_MODULE_P="ngx_http_geoip2_module-${GEOIP2_MODULE_PV}"
-GEOIP2_MODULE_URI="https://github.com/leev/ngx_http_geoip2_module/archive/${GEOIP2_MODULE_PV}.tar.gz"
-GEOIP2_MODULE_WD="${WORKDIR}/ngx_http_geoip2_module-${GEOIP2_MODULE_PV}"
-
-# njs-module (https://github.com/nginx/njs, as-is)
-NJS_MODULE_PV="0.8.10"
-NJS_MODULE_P="njs-${NJS_MODULE_PV}"
-NJS_MODULE_URI="https://github.com/nginx/njs/archive/${NJS_MODULE_PV}.tar.gz"
-NJS_MODULE_WD="${WORKDIR}/njs-${NJS_MODULE_PV}"
-
-# nginx-tests (http://hg.nginx.org/nginx-tests, BSD-2)
-NGINX_TESTS_REV="0b5ec15c62ed"
-
-# We handle deps below ourselves
-SSL_DEPS_SKIP=1
-AUTOTOOLS_AUTO_DEPEND="no"
-
-inherit autotools lua-single multiprocessing ssl-cert toolchain-funcs perl-module systemd pax-utils
-
-DESCRIPTION="Robust, small and high performance http and reverse proxy server"
-HOMEPAGE="https://nginx.org"
-SRC_URI="https://nginx.org/download/${P}.tar.gz
- ${DEVEL_KIT_MODULE_URI} -> ${DEVEL_KIT_MODULE_P}.tar.gz
- nginx_modules_http_auth_ldap? ( ${HTTP_LDAP_MODULE_URI} -> ${HTTP_LDAP_MODULE_P}.tar.gz )
- nginx_modules_http_auth_pam? ( ${HTTP_AUTH_PAM_MODULE_URI} -> ${HTTP_AUTH_PAM_MODULE_P}.tar.gz )
- nginx_modules_http_brotli? ( ${HTTP_BROTLI_MODULE_URI} -> ${HTTP_BROTLI_MODULE_P}.tar.gz )
- nginx_modules_http_cache_purge? ( ${HTTP_CACHE_PURGE_MODULE_URI} -> ${HTTP_CACHE_PURGE_MODULE_P}.tar.gz )
- nginx_modules_http_dav_ext? ( ${HTTP_DAV_EXT_MODULE_URI} -> ${HTTP_DAV_EXT_MODULE_P}.tar.gz )
- nginx_modules_http_echo? ( ${HTTP_ECHO_MODULE_URI} -> ${HTTP_ECHO_MODULE_P}.tar.gz )
- nginx_modules_http_fancyindex? ( ${HTTP_FANCYINDEX_MODULE_URI} -> ${HTTP_FANCYINDEX_MODULE_P}.tar.gz )
- nginx_modules_http_geoip2? ( ${GEOIP2_MODULE_URI} -> ${GEOIP2_MODULE_P}.tar.gz )
- nginx_modules_http_headers_more? ( ${HTTP_HEADERS_MORE_MODULE_URI} -> ${HTTP_HEADERS_MORE_MODULE_P}.tar.gz )
- nginx_modules_http_javascript? ( ${NJS_MODULE_URI} -> ${NJS_MODULE_P}.tar.gz )
- nginx_modules_http_lua? ( ${HTTP_LUA_MODULE_URI} -> ${HTTP_LUA_MODULE_P}.tar.gz )
- nginx_modules_http_memc? ( ${HTTP_MEMC_MODULE_URI} -> ${HTTP_MEMC_MODULE_P}.tar.gz )
- nginx_modules_http_metrics? ( ${HTTP_METRICS_MODULE_URI} -> ${HTTP_METRICS_MODULE_P}.tar.gz )
- nginx_modules_http_mogilefs? ( ${HTTP_MOGILEFS_MODULE_URI} -> ${HTTP_MOGILEFS_MODULE_P}.tar.gz )
- nginx_modules_http_naxsi? (
- ${HTTP_NAXSI_MODULE_URI} -> ${HTTP_NAXSI_MODULE_P}.tar.gz
- ${HTTP_NAXSI_LIBINJECTION_MODULE_URI} -> ${HTTP_NAXSI_LIBINJECTION_MODULE_P}.tar.gz
- )
- nginx_modules_http_push_stream? ( ${HTTP_PUSH_STREAM_MODULE_URI} -> ${HTTP_PUSH_STREAM_MODULE_P}.tar.gz )
- nginx_modules_http_security? ( ${HTTP_SECURITY_MODULE_URI} -> ${HTTP_SECURITY_MODULE_P}.tar.gz )
- nginx_modules_http_slowfs_cache? ( ${HTTP_SLOWFS_CACHE_MODULE_URI} -> ${HTTP_SLOWFS_CACHE_MODULE_P}.tar.gz )
- nginx_modules_http_sticky? ( ${HTTP_STICKY_MODULE_URI} -> ${HTTP_STICKY_MODULE_P}.tar.bz2 )
- nginx_modules_http_upload_progress? ( ${HTTP_UPLOAD_PROGRESS_MODULE_URI} -> ${HTTP_UPLOAD_PROGRESS_MODULE_P}.tar.gz )
- nginx_modules_http_upstream_check? ( ${HTTP_UPSTREAM_CHECK_MODULE_URI} -> ${HTTP_UPSTREAM_CHECK_MODULE_P}.tar.gz )
- nginx_modules_http_vhost_traffic_status? ( ${HTTP_VHOST_TRAFFIC_STATUS_MODULE_URI} -> ${HTTP_VHOST_TRAFFIC_STATUS_MODULE_P}.tar.gz )
- nginx_modules_http_vod? ( ${HTTP_VOD_MODULE_URI} -> ${HTTP_VOD_MODULE_P}.tar.gz )
- nginx_modules_stream_geoip2? ( ${GEOIP2_MODULE_URI} -> ${GEOIP2_MODULE_P}.tar.gz )
- nginx_modules_stream_javascript? ( ${NJS_MODULE_URI} -> ${NJS_MODULE_P}.tar.gz )
- rtmp? ( ${RTMP_MODULE_URI} -> ${RTMP_MODULE_P}.tar.gz )
- test? ( https://hg.nginx.org/nginx-tests/archive/${NGINX_TESTS_REV}.tar.gz -> nginx-tests-${NGINX_TESTS_REV}.tar.gz )"
-
-LICENSE="BSD-2 BSD SSLeay MIT GPL-2 GPL-2+
- nginx_modules_http_security? ( Apache-2.0 )
- nginx_modules_http_push_stream? ( GPL-3 )"
-
-SLOT="mainline"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
-
-NGINX_MODULES_STD="access auth_basic autoindex browser charset empty_gif
- fastcgi geo grpc gzip limit_req limit_conn map memcached mirror
- proxy referer rewrite scgi ssi split_clients upstream_hash
- upstream_ip_hash upstream_keepalive upstream_least_conn
- upstream_zone userid uwsgi"
-NGINX_MODULES_OPT="addition auth_request dav degradation flv geoip gunzip
- gzip_static image_filter mp4 perl random_index realip secure_link
- slice stub_status sub xslt"
-NGINX_MODULES_STREAM_STD="access geo limit_conn map return split_clients
- upstream_hash upstream_least_conn upstream_zone"
-NGINX_MODULES_STREAM_OPT="geoip realip ssl_preread"
-NGINX_MODULES_MAIL="imap pop3 smtp"
-NGINX_MODULES_3RD="
- http_auth_ldap
- http_auth_pam
- http_brotli
- http_cache_purge
- http_dav_ext
- http_echo
- http_fancyindex
- http_geoip2
- http_headers_more
- http_javascript
- http_lua
- http_memc
- http_metrics
- http_mogilefs
- http_naxsi
- http_push_stream
- http_security
- http_slowfs_cache
- http_sticky
- http_upload_progress
- http_upstream_check
- http_vhost_traffic_status
- http_vod
- stream_geoip2
- stream_javascript
-"
-
-RESTRICT="!test? ( test )"
-
-IUSE="aio debug +http +http2 http3 +http-cache ktls libatomic pcre +pcre2 pcre-jit rtmp selinux ssl test threads vim-syntax"
-
-for mod in $NGINX_MODULES_STD; do
- IUSE="${IUSE} +nginx_modules_http_${mod}"
-done
-
-for mod in $NGINX_MODULES_OPT; do
- IUSE="${IUSE} nginx_modules_http_${mod}"
-done
-
-for mod in $NGINX_MODULES_STREAM_STD; do
- IUSE="${IUSE} nginx_modules_stream_${mod}"
-done
-
-for mod in $NGINX_MODULES_STREAM_OPT; do
- IUSE="${IUSE} nginx_modules_stream_${mod}"
-done
-
-for mod in $NGINX_MODULES_MAIL; do
- IUSE="${IUSE} nginx_modules_mail_${mod}"
-done
-
-for mod in $NGINX_MODULES_3RD; do
- IUSE="${IUSE} nginx_modules_${mod}"
-done
-
-# Add so we can warn users updating about config changes
-# @TODO: jbergstroem: remove on next release series
-IUSE="${IUSE} nginx_modules_http_spdy"
-
-CDEPEND="
- acct-group/nginx
- acct-user/nginx
- virtual/libcrypt:=
- pcre? ( dev-libs/libpcre:= )
- pcre2? ( dev-libs/libpcre2:= )
- pcre-jit? ( dev-libs/libpcre:=[jit] )
- ssl? (
- dev-libs/openssl:0=
- )
- http2? (
- >=dev-libs/openssl-1.0.1c:0=
- )
- http-cache? (
- dev-libs/openssl:0=
- )
- ktls? (
- >=dev-libs/openssl-3:0=[ktls]
- )
- nginx_modules_http_brotli? ( app-arch/brotli:= )
- nginx_modules_http_geoip? ( dev-libs/geoip )
- nginx_modules_http_geoip2? ( dev-libs/libmaxminddb:= )
- nginx_modules_http_gunzip? ( virtual/zlib:= )
- nginx_modules_http_gzip? ( virtual/zlib:= )
- nginx_modules_http_gzip_static? ( virtual/zlib:= )
- nginx_modules_http_image_filter? ( media-libs/gd:=[jpeg,png] )
- nginx_modules_http_perl? ( >=dev-lang/perl-5.8:= )
- nginx_modules_http_rewrite? ( dev-libs/libpcre:= )
- nginx_modules_http_secure_link? ( dev-libs/openssl:0= )
- nginx_modules_http_xslt? ( dev-libs/libxml2:= dev-libs/libxslt )
- nginx_modules_http_lua? ( ${LUA_DEPS} )
- nginx_modules_http_auth_pam? ( sys-libs/pam )
- nginx_modules_http_metrics? ( dev-libs/yajl:= )
- nginx_modules_http_dav_ext? ( dev-libs/libxml2:= )
- nginx_modules_http_security? ( dev-libs/modsecurity:= )
- nginx_modules_http_auth_ldap? ( net-nds/openldap:=[ssl?] )
- nginx_modules_http_vod? ( media-video/ffmpeg:0= )
- nginx_modules_stream_geoip? ( dev-libs/geoip )
- nginx_modules_stream_geoip2? ( dev-libs/libmaxminddb:= )"
-RDEPEND="${CDEPEND}
- app-misc/mime-types[nginx]
- selinux? ( sec-policy/selinux-nginx )
- !www-servers/nginx:0"
-DEPEND="${CDEPEND}
- arm? ( dev-libs/libatomic_ops )
- libatomic? ( dev-libs/libatomic_ops )"
-BDEPEND="
- nginx_modules_http_brotli? ( virtual/pkgconfig )
- test? (
- dev-lang/perl
- dev-perl/Cache-Memcached
- dev-perl/Cache-Memcached-Fast
- dev-perl/CryptX
- dev-perl/FCGI
- dev-perl/GD
- dev-perl/Net-SSLeay
- )"
-# Unpackaged perl modules which would be used by tests
-# Protocol::WebSocket
-# SCGI
-
-# Uwsgi doesn't start in tests
-# www-servers/uwsgi
-
-PDEPEND="vim-syntax? ( app-vim/nginx-syntax )"
-
-REQUIRED_USE="pcre-jit? ( pcre )
- ktls? ( ssl )
- nginx_modules_http_fancyindex? ( nginx_modules_http_addition )
- nginx_modules_http_grpc? ( http2 )
- nginx_modules_http_lua? (
- ${LUA_REQUIRED_USE}
- nginx_modules_http_rewrite
- pcre
- !pcre2
- )
- nginx_modules_http_naxsi? ( nginx_modules_http_rewrite pcre )
- nginx_modules_http_dav_ext? ( nginx_modules_http_dav nginx_modules_http_xslt )
- nginx_modules_http_metrics? ( nginx_modules_http_stub_status )
- nginx_modules_http_security? ( pcre )
- nginx_modules_http_push_stream? ( ssl )
- nginx_modules_http_vod? ( threads )"
-
-pkg_setup() {
- NGINX_HOME="/var/lib/nginx"
- NGINX_HOME_TMP="${NGINX_HOME}/tmp"
-
- if use libatomic; then
- ewarn "GCC 4.1+ features built-in atomic operations."
- ewarn "Using libatomic_ops is only needed if using"
- ewarn "a different compiler or a GCC prior to 4.1"
- fi
-
- if [[ -n $NGINX_ADD_MODULES ]]; then
- ewarn "You are building custom modules via \$NGINX_ADD_MODULES!"
- ewarn "This nginx installation is not supported!"
- ewarn "Make sure you can reproduce the bug without those modules"
- ewarn "_before_ reporting bugs."
- fi
-
- if use !http; then
- ewarn "To actually disable all http-functionality you also have to disable"
- ewarn "all nginx http modules."
- fi
-
- if use nginx_modules_http_mogilefs && use threads; then
- eerror "mogilefs won't compile with threads support."
- eerror "Please disable either flag and try again."
- die "Can't compile mogilefs with threads support"
- fi
-
- use nginx_modules_http_lua && lua-single_pkg_setup
-}
-
-src_prepare() {
- eapply "${FILESDIR}/${PN}-1.4.1-fix-perl-install-path.patch"
- eapply "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-
- if use nginx_modules_http_auth_ldap; then
- cd "${HTTP_LDAP_MODULE_WD}" || die
- eapply "${FILESDIR}/${PN}-1.23.2-mod_auth_ldap-fix.patch"
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_javascript; then
- cd "${NJS_MODULE_WD}" || die
- sed -e 's/-Werror//g' -i auto/cc || die
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_sticky; then
- cd "${HTTP_STICKY_MODULE_WD}" || die
- eapply "${FILESDIR}"/http_sticky-nginx-1.23.0.patch
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_naxsi; then
- cd "${HTTP_NAXSI_MODULE_WD}" || die
- rm -r libinjection || die
- mv ../../libinjection-${HTTP_NAXSI_LIBINJECTION_MODULE_PV} libinjection || die
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_brotli; then
- cd "${HTTP_BROTLI_MODULE_WD}" || die
- eapply "${FILESDIR}"/http_brotli-detect-brotli-r3.patch
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_upstream_check; then
- eapply -p0 "${FILESDIR}"/http_upstream_check-nginx-1.11.5+.patch
- fi
-
- if use nginx_modules_http_upload_progress; then
- cd "${HTTP_UPLOAD_PROGRESS_MODULE_WD}" || die
- eapply "${FILESDIR}"/http_uploadprogress-nginx-1.23.0.patch
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_security ; then
- cd "${HTTP_SECURITY_MODULE_WD}" || die
- eapply "${FILESDIR}/http_security-nginx-1.26.2.patch"
- cd "${S}" || die
- fi
-
- find auto/ -type f -print0 | xargs -0 sed -i 's:\&\& make:\&\& \\$(MAKE):' || die
- # We have config protection, don't rename etc files
- sed -i 's:.default::' auto/install || die
- # remove useless files
- sed -i -e '/koi-/d' -e '/win-/d' auto/install || die
-
- # don't install to /etc/nginx/ if not in use
- local module
- for module in fastcgi scgi uwsgi ; do
- if ! use nginx_modules_http_${module}; then
- sed -i -e "/${module}/d" auto/install || die
- fi
- done
-
- eapply_user
-}
-
-src_configure() {
- local myconf=() http_enabled= mail_enabled= stream_enabled=
-
- use aio && myconf+=( --with-file-aio )
- use debug && myconf+=( --with-debug )
- use http2 && myconf+=( --with-http_v2_module )
- use http3 && myconf+=( --with-http_v3_module )
- use ktls && myconf+=( --with-openssl-opt=enable-ktls )
- use libatomic && myconf+=( --with-libatomic )
- use pcre && myconf+=( --with-pcre --without-pcre2 )
- use pcre-jit && myconf+=( --with-pcre-jit )
- use threads && myconf+=( --with-threads )
-
- # HTTP modules
- for mod in $NGINX_MODULES_STD; do
- if use nginx_modules_http_${mod}; then
- http_enabled=1
- else
- myconf+=( --without-http_${mod}_module )
- fi
- done
-
- for mod in $NGINX_MODULES_OPT; do
- if use nginx_modules_http_${mod}; then
- http_enabled=1
- myconf+=( --with-http_${mod}_module )
- fi
- done
-
- if use nginx_modules_http_fastcgi; then
- myconf+=( --with-http_realip_module )
- fi
-
- # third-party modules
- if use nginx_modules_http_upload_progress; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_UPLOAD_PROGRESS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_headers_more; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_HEADERS_MORE_MODULE_WD} )
- fi
-
- if use nginx_modules_http_cache_purge; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_CACHE_PURGE_MODULE_WD} )
- fi
-
- if use nginx_modules_http_slowfs_cache; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_SLOWFS_CACHE_MODULE_WD} )
- fi
-
- if use nginx_modules_http_fancyindex; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_FANCYINDEX_MODULE_WD} )
- fi
-
- if use nginx_modules_http_lua; then
- http_enabled=1
- export LUAJIT_LIB=$(dirname $(lua_get_shared_lib))
- export LUAJIT_INC=$(lua_get_include_dir)
- myconf+=( --add-module=${DEVEL_KIT_MODULE_WD} )
- myconf+=( --add-module=${HTTP_LUA_MODULE_WD} )
- fi
-
- if use nginx_modules_http_auth_pam; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_AUTH_PAM_MODULE_WD} )
- fi
-
- if use nginx_modules_http_upstream_check; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_UPSTREAM_CHECK_MODULE_WD} )
- fi
-
- if use nginx_modules_http_metrics; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_METRICS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_naxsi ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_NAXSI_MODULE_WD} )
- fi
-
- if use rtmp ; then
- http_enabled=1
- myconf+=( --add-module=${RTMP_MODULE_WD} )
- fi
-
- if use nginx_modules_http_dav_ext ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_DAV_EXT_MODULE_WD} )
- fi
-
- if use nginx_modules_http_echo ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_ECHO_MODULE_WD} )
- fi
-
- if use nginx_modules_http_security ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_SECURITY_MODULE_WD} )
- fi
-
- if use nginx_modules_http_push_stream ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_PUSH_STREAM_MODULE_WD} )
- fi
-
- if use nginx_modules_http_sticky ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_STICKY_MODULE_WD} )
- fi
-
- if use nginx_modules_http_mogilefs ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_MOGILEFS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_memc ; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_MEMC_MODULE_WD} )
- fi
-
- if use nginx_modules_http_auth_ldap; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_LDAP_MODULE_WD} )
- fi
-
- if use nginx_modules_http_vhost_traffic_status; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_VHOST_TRAFFIC_STATUS_MODULE_WD} )
- fi
-
- if use nginx_modules_http_geoip2 || use nginx_modules_stream_geoip2; then
- myconf+=( --add-module=${GEOIP2_MODULE_WD} )
- fi
-
- if use nginx_modules_http_javascript || use nginx_modules_stream_javascript; then
- myconf+=( --add-module="${NJS_MODULE_WD}/nginx" )
- fi
-
- if use nginx_modules_http_brotli; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_BROTLI_MODULE_WD} )
- fi
-
- if use http || use http-cache || use http2 || use http3 || use nginx_modules_http_javascript; then
- http_enabled=1
- fi
-
- if use nginx_modules_http_vod; then
- http_enabled=1
- myconf+=( --add-module=${HTTP_VOD_MODULE_WD} )
- fi
-
- if [ $http_enabled ]; then
- use http-cache || myconf+=( --without-http-cache )
- use ssl && myconf+=( --with-http_ssl_module )
- else
- myconf+=( --without-http --without-http-cache )
- fi
-
- # Stream modules
- for mod in $NGINX_MODULES_STREAM_STD; do
- if use nginx_modules_stream_${mod}; then
- stream_enabled=1
- else
- myconf+=( --without-stream_${mod}_module )
- fi
- done
-
- for mod in $NGINX_MODULES_STREAM_OPT; do
- if use nginx_modules_stream_${mod}; then
- stream_enabled=1
- myconf+=( --with-stream_${mod}_module )
- fi
- done
-
- if use nginx_modules_stream_geoip2 || use nginx_modules_stream_javascript; then
- stream_enabled=1
- fi
-
- if [ $stream_enabled ]; then
- myconf+=( --with-stream )
- use ssl && myconf+=( --with-stream_ssl_module )
- fi
-
- # MAIL modules
- for mod in $NGINX_MODULES_MAIL; do
- if use nginx_modules_mail_${mod}; then
- mail_enabled=1
- else
- myconf+=( --without-mail_${mod}_module )
- fi
- done
-
- if [ $mail_enabled ]; then
- myconf+=( --with-mail )
- use ssl && myconf+=( --with-mail_ssl_module )
- fi
-
- # custom modules
- for mod in $NGINX_ADD_MODULES; do
- myconf+=( --add-module=${mod} )
- done
-
- # https://bugs.gentoo.org/286772
- export LANG=C LC_ALL=C
- tc-export AR CC
-
- if ! use prefix; then
- myconf+=( --user=${PN} )
- myconf+=( --group=${PN} )
- fi
-
- if [[ -n "${EXTRA_ECONF}" ]]; then
- myconf+=( ${EXTRA_ECONF} )
- ewarn "EXTRA_ECONF applied. Now you are on your own, good luck!"
- fi
-
- ./configure \
- --prefix="${EPREFIX}"/usr \
- --conf-path="${EPREFIX}"/etc/${PN}/${PN}.conf \
- --error-log-path="${EPREFIX}"/var/log/${PN}/error_log \
- --pid-path="${EPREFIX}"/run/${PN}/${PN}.pid \
- --lock-path="${EPREFIX}"/run/lock/${PN}.lock \
- --with-cc-opt="-I${ESYSROOT}/usr/include" \
- --with-ld-opt="-L${ESYSROOT}/usr/$(get_libdir)" \
- --http-log-path="${EPREFIX}"/var/log/${PN}/access_log \
- --http-client-body-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/client \
- --http-proxy-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/proxy \
- --http-fastcgi-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/fastcgi \
- --http-scgi-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/scgi \
- --http-uwsgi-temp-path="${EPREFIX}${NGINX_HOME_TMP}"/uwsgi \
- --with-compat \
- "${myconf[@]}" || die "configure failed"
-
- # A purely cosmetic change that makes nginx -V more readable. This can be
- # good if people outside the gentoo community would troubleshoot and
- # question the users setup.
- sed -i -e "s|${WORKDIR}|external_module|g" objs/ngx_auto_config.h || die
-}
-
-src_compile() {
- # https://bugs.gentoo.org/286772
- export LANG=C LC_ALL=C
- emake LINK="${CC} ${LDFLAGS}" OTHERLDFLAGS="${LDFLAGS}"
-}
-
-src_install() {
- emake DESTDIR="${D}" install
-
- cp "${FILESDIR}"/nginx.conf-r3 "${ED}"/etc/nginx/nginx.conf || die
-
- newinitd "${FILESDIR}"/nginx.initd-r4 nginx
- newconfd "${FILESDIR}"/nginx.confd nginx
-
- systemd_newunit "${FILESDIR}"/nginx.service-r1 nginx.service
-
- doman man/nginx.8
- dodoc CHANGES* README.md
-
- # just keepdir. do not copy the default htdocs files (bug #449136)
- keepdir /var/www/localhost
- rm -rf "${ED}"/usr/html || die
-
- # set up a list of directories to keep
- local keepdir_list="${NGINX_HOME_TMP}"/client
- local module
- for module in proxy fastcgi scgi uwsgi; do
- use nginx_modules_http_${module} && keepdir_list+=" ${NGINX_HOME_TMP}/${module}"
- done
-
- keepdir /var/log/nginx ${keepdir_list}
-
- # this solves a problem with SELinux where nginx doesn't see the directories
- # as root and tries to create them as nginx
- fperms 0750 "${NGINX_HOME_TMP}"
- fowners ${PN}:0 "${NGINX_HOME_TMP}"
-
- fperms 0700 ${keepdir_list}
- fowners ${PN}:${PN} ${keepdir_list}
-
- fperms 0710 /var/log/nginx
- fowners 0:${PN} /var/log/nginx
-
- # logrotate
- insinto /etc/logrotate.d
- newins "${FILESDIR}"/nginx.logrotate-r1 nginx
-
- # Don't create /run
- rm -rf "${ED}"/run || die
-
- if use lua_single_target_luajit; then
- pax-mark m "${ED}/usr/sbin/nginx"
- fi
-
- if use nginx_modules_http_perl; then
- cd "${S}"/objs/src/http/modules/perl/ || die
- emake DESTDIR="${D}" INSTALLDIRS=vendor
- perl_delete_localpod
- cd "${S}" || die
- fi
-
- if use nginx_modules_http_cache_purge; then
- docinto ${HTTP_CACHE_PURGE_MODULE_P}
- dodoc "${HTTP_CACHE_PURGE_MODULE_WD}"/{CHANGES,README.md}
- fi
-
- if use nginx_modules_http_slowfs_cache; then
- docinto ${HTTP_SLOWFS_CACHE_MODULE_P}
- dodoc "${HTTP_SLOWFS_CACHE_MODULE_WD}"/{CHANGES,README.md}
- fi
-
- if use nginx_modules_http_fancyindex; then
- docinto ${HTTP_FANCYINDEX_MODULE_P}
- dodoc "${HTTP_FANCYINDEX_MODULE_WD}"/README.rst
- fi
-
- if use nginx_modules_http_lua; then
- docinto ${HTTP_LUA_MODULE_P}
- dodoc "${HTTP_LUA_MODULE_WD}"/README.markdown
- fi
-
- if use nginx_modules_http_auth_pam; then
- docinto ${HTTP_AUTH_PAM_MODULE_P}
- dodoc "${HTTP_AUTH_PAM_MODULE_WD}"/{README.md,ChangeLog}
- fi
-
- if use nginx_modules_http_upstream_check; then
- docinto ${HTTP_UPSTREAM_CHECK_MODULE_P}
- dodoc "${HTTP_UPSTREAM_CHECK_MODULE_WD}"/{README,CHANGES}
- fi
-
- if use nginx_modules_http_naxsi; then
- insinto /etc/nginx/naxsi
- doins "${HTTP_NAXSI_MODULE_WD}"/../distros/nginx/*
- doins "${HTTP_NAXSI_MODULE_WD}"/../naxsi_rules/naxsi_core.rules
- doins -r "${HTTP_NAXSI_MODULE_WD}"/../naxsi_rules/blocking
- doins -r "${HTTP_NAXSI_MODULE_WD}"/../naxsi_rules/whitelists
- fi
-
- if use rtmp; then
- docinto ${RTMP_MODULE_P}
- dodoc "${RTMP_MODULE_WD}"/{AUTHORS,README.md,stat.xsl}
- fi
-
- if use nginx_modules_http_dav_ext; then
- docinto ${HTTP_DAV_EXT_MODULE_P}
- dodoc "${HTTP_DAV_EXT_MODULE_WD}"/README.rst
- fi
-
- if use nginx_modules_http_echo; then
- docinto ${HTTP_ECHO_MODULE_P}
- dodoc "${HTTP_ECHO_MODULE_WD}"/README.markdown
- fi
-
- if use nginx_modules_http_security; then
- docinto ${HTTP_SECURITY_MODULE_P}
- dodoc "${HTTP_SECURITY_MODULE_WD}"/{AUTHORS,CHANGES,README.md}
- fi
-
- if use nginx_modules_http_push_stream; then
- docinto ${HTTP_PUSH_STREAM_MODULE_P}
- dodoc "${HTTP_PUSH_STREAM_MODULE_WD}"/{AUTHORS,CHANGELOG.textile,README.textile}
- fi
-
- if use nginx_modules_http_sticky; then
- docinto ${HTTP_STICKY_MODULE_P}
- dodoc "${HTTP_STICKY_MODULE_WD}"/{README.md,Changelog.txt,docs/sticky.pdf}
- fi
-
- if use nginx_modules_http_memc; then
- docinto ${HTTP_MEMC_MODULE_P}
- dodoc "${HTTP_MEMC_MODULE_WD}"/README.markdown
- fi
-
- if use nginx_modules_http_auth_ldap; then
- docinto ${HTTP_LDAP_MODULE_P}
- dodoc "${HTTP_LDAP_MODULE_WD}"/example.conf
- fi
-
- if use nginx_modules_http_vod; then
- docinto ${HTTP_VOD_MODULE_P}
- dodoc "${HTTP_VOD_MODULE_WD}"/{CHANGELOG,README}.md
- fi
-}
-
-src_test() {
- pushd "${WORKDIR}"/nginx-tests-"${NGINX_TESTS_REV}" > /dev/null || die
-
- # FIXME: unsure why uwsgi fails to start
- rm uwsgi*.t || die
-
- local -x TEST_NGINX_BINARY="${S}/objs/nginx"
- local -x TEST_NGINX_VERBOSE=1
-
- prove -v -j $(makeopts_jobs) . || die
- popd > /dev/null || die
-}
-
-pkg_postinst() {
- if use ssl; then
- if [[ ! -f "${EROOT}"/etc/ssl/${PN}/${PN}.key ]]; then
- install_cert /etc/ssl/${PN}/${PN}
- use prefix || chown ${PN}:${PN} "${EROOT}"/etc/ssl/${PN}/${PN}.{crt,csr,key,pem}
- fi
- fi
-
- if use nginx_modules_http_spdy; then
- ewarn ""
- ewarn "In nginx 1.9.5 the spdy module was superseded by http2."
- ewarn "Update your configs and package.use accordingly."
- fi
-
- if use nginx_modules_http_lua; then
- ewarn ""
- ewarn "While you can build lua 3rd party module against ${P}"
- ewarn "the author warns that >=${PN}-1.11.11 is still not an"
- ewarn "officially supported target yet. You are on your own."
- ewarn "Expect runtime failures, memory leaks and other problems!"
- fi
-
- if use nginx_modules_http_lua && use http2; then
- ewarn ""
- ewarn "Lua 3rd party module author warns against using ${P} with"
- ewarn "NGINX_MODULES_HTTP=\"lua http2\". For more info, see https://git.io/OldLsg"
- fi
-
- local _n_permission_layout_checks=0
- local _has_to_adjust_permissions=0
- local _has_to_show_permission_warning=0
-
- # Defaults to 1 to inform people doing a fresh installation
- # that we ship modified {scgi,uwsgi,fastcgi}_params files
- local _has_to_show_httpoxy_mitigation_notice=1
-
- local _replacing_version=
- for _replacing_version in ${REPLACING_VERSIONS}; do
- _n_permission_layout_checks=$((${_n_permission_layout_checks}+1))
-
- if [[ ${_n_permission_layout_checks} -gt 1 ]]; then
- # Should never happen:
- # Package is abusing slots but doesn't allow multiple parallel installations.
- # If we run into this situation it is unsafe to automatically adjust any
- # permission...
- _has_to_show_permission_warning=1
-
- ewarn "Replacing multiple ${PN}' versions is unsupported! " \
- "You will have to adjust permissions on your own."
-
- break
- fi
-
- local _replacing_version_branch=$(ver_cut 1-2 "${_replacing_version}")
- debug-print "Updating an existing installation (v${_replacing_version}; branch '${_replacing_version_branch}') ..."
-
- # Do we need to adjust permissions to fix CVE-2013-0337 (bug #458726, #469094)?
- # This was before we introduced multiple nginx versions so we
- # do not need to distinguish between stable and mainline
- local _need_to_fix_CVE2013_0337=1
-
- if ver_test ${_replacing_version} -ge 1.4.1-r2; then
- # We are updating an installation which should already be fixed
- _need_to_fix_CVE2013_0337=0
- debug-print "Skipping CVE-2013-0337 ... existing installation should not be affected!"
- else
- _has_to_adjust_permissions=1
- debug-print "Need to adjust permissions to fix CVE-2013-0337!"
- fi
-
- # Do we need to inform about HTTPoxy mitigation?
- # In repository since commit 8be44f76d4ac02cebcd1e0e6e6284bb72d054b0f
- if ver_test ${_replacing_version_branch} -lt 1.10; then
- # Updating from <1.10
- _has_to_show_httpoxy_mitigation_notice=1
- debug-print "Need to inform about HTTPoxy mitigation!"
- else
- # Updating from >=1.10
- local _fixed_in_pvr=
- case "${_replacing_version_branch}" in
- "1.10")
- _fixed_in_pvr="1.10.1-r2"
- ;;
- "1.11")
- _fixed_in_pvr="1.11.3-r1"
- ;;
- *)
- # This should be any future branch.
- # If we run this code it is safe to assume that the user has
- # already seen the HTTPoxy mitigation notice because he/she is doing
- # an update from previous version where we have already shown
- # the warning. Otherwise, we wouldn't hit this code path ...
- _fixed_in_pvr=
- esac
-
- if [[ -z "${_fixed_in_pvr}" ]] || ver_test ${_replacing_version} -ge ${_fixed_in_pvr}; then
- # We are updating an installation where we already informed
- # that we are mitigating HTTPoxy per default
- _has_to_show_httpoxy_mitigation_notice=0
- debug-print "No need to inform about HTTPoxy mitigation ... information was already shown for existing installation!"
- else
- _has_to_show_httpoxy_mitigation_notice=1
- debug-print "Need to inform about HTTPoxy mitigation!"
- fi
- fi
-
- # Do we need to adjust permissions to fix CVE-2016-1247 (bug #605008)?
- # All branches up to 1.11 are affected
- local _need_to_fix_CVE2016_1247=1
-
- if ver_test ${_replacing_version_branch} -lt 1.10; then
- # Updating from <1.10
- _has_to_adjust_permissions=1
- debug-print "Need to adjust permissions to fix CVE-2016-1247!"
- else
- # Updating from >=1.10
- local _fixed_in_pvr=
- case "${_replacing_version_branch}" in
- "1.10")
- _fixed_in_pvr="1.10.2-r3"
- ;;
- "1.11")
- _fixed_in_pvr="1.11.6-r1"
- ;;
- *)
- # This should be any future branch.
- # If we run this code it is safe to assume that we have already
- # adjusted permissions or were never affected because user is
- # doing an update from previous version which was safe or did
- # the adjustments. Otherwise, we wouldn't hit this code path ...
- _fixed_in_pvr=
- esac
-
- if [[ -z "${_fixed_in_pvr}" ]] || ver_test ${_replacing_version} -ge ${_fixed_in_pvr}; then
- # We are updating an installation which should already be adjusted
- # or which was never affected
- _need_to_fix_CVE2016_1247=0
- debug-print "Skipping CVE-2016-1247 ... existing installation should not be affected!"
- else
- _has_to_adjust_permissions=1
- debug-print "Need to adjust permissions to fix CVE-2016-1247!"
- fi
- fi
- done
-
- if [[ ${_has_to_adjust_permissions} -eq 1 ]]; then
- # We do not DIE when chmod/chown commands are failing because
- # package is already merged on user's system at this stage
- # and we cannot retry without losing the information that
- # the existing installation needs to adjust permissions.
- # Instead we are going to a show a big warning ...
-
- if [[ ${_has_to_show_permission_warning} -eq 0 ]] && [[ ${_need_to_fix_CVE2013_0337} -eq 1 ]]; then
- ewarn ""
- ewarn "The world-readable bit (if set) has been removed from the"
- ewarn "following directories to mitigate a security bug"
- ewarn "(CVE-2013-0337, bug #458726):"
- ewarn ""
- ewarn " ${EPREFIX}/var/log/nginx"
- ewarn " ${EPREFIX}${NGINX_HOME_TMP}/{,client,proxy,fastcgi,scgi,uwsgi}"
- ewarn ""
- ewarn "Check if this is correct for your setup before restarting nginx!"
- ewarn "This is a one-time change and will not happen on subsequent updates."
- ewarn "Furthermore nginx' temp directories got moved to '${EPREFIX}${NGINX_HOME_TMP}'"
- chmod o-rwx \
- "${EPREFIX}"/var/log/nginx \
- "${EPREFIX}"${NGINX_HOME_TMP}/{,client,proxy,fastcgi,scgi,uwsgi} || \
- _has_to_show_permission_warning=1
- fi
-
- if [[ ${_has_to_show_permission_warning} -eq 0 ]] && [[ ${_need_to_fix_CVE2016_1247} -eq 1 ]]; then
- ewarn ""
- ewarn "The permissions on the following directory have been reset in"
- ewarn "order to mitigate a security bug (CVE-2016-1247, bug #605008):"
- ewarn ""
- ewarn " ${EPREFIX}/var/log/nginx"
- ewarn ""
- ewarn "Check if this is correct for your setup before restarting nginx!"
- ewarn "Also ensure that no other log directory used by any of your"
- ewarn "vhost(s) is not writeable for nginx user. Any of your log files"
- ewarn "used by nginx can be abused to escalate privileges!"
- ewarn "This is a one-time change and will not happen on subsequent updates."
- chown 0:nginx "${EPREFIX}"/var/log/nginx || _has_to_show_permission_warning=1
- chmod 710 "${EPREFIX}"/var/log/nginx || _has_to_show_permission_warning=1
- fi
-
- if [[ ${_has_to_show_permission_warning} -eq 1 ]]; then
- # Should never happen ...
- ewarn ""
- ewarn "*************************************************************"
- ewarn "*************** W A R N I N G ***************"
- ewarn "*************************************************************"
- ewarn "The one-time only attempt to adjust permissions of the"
- ewarn "existing nginx installation failed. Be aware that we will not"
- ewarn "try to adjust the same permissions again because now you are"
- ewarn "using a nginx version where we expect that the permissions"
- ewarn "are already adjusted or that you know what you are doing and"
- ewarn "want to keep custom permissions."
- ewarn ""
- fi
- fi
-
- # Sanity check for CVE-2016-1247
- # Required to warn users who received the warning above and thought
- # they could fix it by unmerging and re-merging the package or have
- # unmerged a affected installation on purpose in the past leaving
- # /var/log/nginx on their system due to keepdir/non-empty folder
- # and are now installing the package again.
- local _sanity_check_testfile=$(mktemp --dry-run "${EPREFIX}"/var/log/nginx/.CVE-2016-1247.XXXXXXXXX)
- su -s /bin/sh -c "touch ${_sanity_check_testfile}" nginx >&/dev/null
- if [ $? -eq 0 ] ; then
- # Cleanup -- no reason to die here!
- rm -f "${_sanity_check_testfile}"
-
- ewarn ""
- ewarn "*************************************************************"
- ewarn "*************** W A R N I N G ***************"
- ewarn "*************************************************************"
- ewarn "Looks like your installation is vulnerable to CVE-2016-1247"
- ewarn "(bug #605008) because nginx user is able to create files in"
- ewarn ""
- ewarn " ${EPREFIX}/var/log/nginx"
- ewarn ""
- ewarn "Also ensure that no other log directory used by any of your"
- ewarn "vhost(s) is not writeable for nginx user. Any of your log files"
- ewarn "used by nginx can be abused to escalate privileges!"
- fi
-
- if [[ ${_has_to_show_httpoxy_mitigation_notice} -eq 1 ]]; then
- # HTTPoxy mitigation
- ewarn ""
- ewarn "This nginx installation comes with a mitigation for the HTTPoxy"
- ewarn "vulnerability for FastCGI, SCGI and uWSGI applications by setting"
- ewarn "the HTTP_PROXY parameter to an empty string per default when you"
- ewarn "are sourcing one of the default"
- ewarn ""
- ewarn " - 'fastcgi_params' or 'fastcgi.conf'"
- ewarn " - 'scgi_params'"
- ewarn " - 'uwsgi_params'"
- ewarn ""
- ewarn "files in your server block(s)."
- ewarn ""
- ewarn "If this is causing any problems for you make sure that you are sourcing the"
- ewarn "default parameters _before_ you set your own values."
- ewarn "If you are relying on user-supplied proxy values you have to remove the"
- ewarn "correlating lines from the file(s) mentioned above."
- ewarn ""
- fi
-}
diff --git a/www-servers/nginx/nginx-1.29.5-r2.ebuild b/www-servers/nginx/nginx-1.29.5-r2.ebuild
deleted file mode 100644
index 240087847cb2..000000000000
--- a/www-servers/nginx/nginx-1.29.5-r2.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-NGINX_SUBSYSTEMS=(+http stream mail)
-NGINX_MODULES=(
- +http_{charset,gzip,ssi,userid,access,auth_basic,mirror,autoindex,geo,map}
- +http_{split_clients,referer,rewrite,proxy,fastcgi,uwsgi,scgi,grpc}
- +http_{memcached,limit_conn,limit_req,empty_gif,browser,upstream_hash}
- +http_{upstream_ip_hash,upstream_least_conn,upstream_random}
- +http_{upstream_keepalive,upstream_zone}
- http_{ssl,v2,v3,realip,addition,xslt,image_filter,geoip,sub,dav,flv,mp4}
- http_{gunzip,gzip_static,auth_request,random_index,secure_link,degradation}
- http_{slice,stub_status,perl}
- +mail_{pop3,imap,smtp}
- mail_ssl
- +stream_{limit_conn,access,geo,map,split_clients,return,pass,set}
- +stream_{upstream_hash,upstream_least_conn,upstream_random,upstream_zone}
- stream_{ssl,realip,geoip,ssl_preread}
-)
-NGINX_TESTS_COMMIT=2993130953b28ff4d64ea75b5bd35c92c7e510f7
-NGINX_MISC_FILES=(
- nginx-{r2.logrotate,r2.service,r4.conf,r6.initd,r1.confd,r1.tmpfiles}
-)
-
-inherit nginx
-
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv x86"
-
-PATCHES=(
- "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-)
diff --git a/www-servers/nginx/nginx-1.29.7-r3.ebuild b/www-servers/nginx/nginx-1.29.7-r3.ebuild
deleted file mode 100644
index 715a6bfcd781..000000000000
--- a/www-servers/nginx/nginx-1.29.7-r3.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
-
-NGINX_SUBSYSTEMS=(+http stream mail)
-NGINX_MODULES=(
- +http_{charset,gzip,ssi,userid,access,auth_basic,mirror,autoindex,geo,map}
- +http_{split_clients,referer,rewrite,proxy,fastcgi,uwsgi,scgi,grpc}
- +http_{memcached,limit_conn,limit_req,empty_gif,browser,upstream_hash}
- +http_{upstream_ip_hash,upstream_least_conn,upstream_random}
- +http_{upstream_keepalive,upstream_zone}
- http_{ssl,v2,v3,realip,addition,xslt,image_filter,geoip,sub,dav,flv,mp4}
- http_{gunzip,gzip_static,auth_request,random_index,secure_link,degradation}
- http_{slice,stub_status,perl}
- +mail_{pop3,imap,smtp}
- mail_ssl
- +stream_{limit_conn,access,geo,map,split_clients,return,pass,set}
- +stream_{upstream_hash,upstream_least_conn,upstream_random,upstream_zone}
- stream_{ssl,realip,geoip,ssl_preread}
-)
-NGINX_TESTS_COMMIT=cf90a22921652731302e8a4dc2a88049c723377d
-NGINX_MISC_FILES=(
- nginx-{r2.logrotate,r2.service,r5.conf,r6.initd,r1.confd,r1.tmpfiles}
-)
-NGINX_SUPPORT_MODULE_STUBS=1
-
-inherit nginx
-
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
-
-PATCHES=(
- "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-)
diff --git a/www-servers/nginx/nginx-1.30.0-r2.ebuild b/www-servers/nginx/nginx-1.30.0-r2.ebuild
deleted file mode 100644
index 1171b19ee0ad..000000000000
--- a/www-servers/nginx/nginx-1.30.0-r2.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
-
-NGINX_SUBSYSTEMS=(+http stream mail)
-NGINX_MODULES=(
- +http_{charset,gzip,ssi,userid,access,auth_basic,mirror,autoindex,geo,map}
- +http_{split_clients,referer,rewrite,proxy,fastcgi,uwsgi,scgi,grpc}
- +http_{memcached,limit_conn,limit_req,empty_gif,browser,upstream_hash}
- +http_{upstream_ip_hash,upstream_least_conn,upstream_random}
- +http_{upstream_keepalive,upstream_zone}
- http_{ssl,v2,v3,realip,addition,xslt,image_filter,geoip,sub,dav,flv,mp4}
- http_{gunzip,gzip_static,auth_request,random_index,secure_link,degradation}
- http_{slice,stub_status,perl}
- +mail_{pop3,imap,smtp}
- mail_ssl
- +stream_{limit_conn,access,geo,map,split_clients,return,pass,set}
- +stream_{upstream_hash,upstream_least_conn,upstream_random,upstream_zone}
- stream_{ssl,realip,geoip,ssl_preread}
-)
-NGINX_TESTS_COMMIT=0f72f59c40de9977bd8f3deff5d200e761b8b683
-NGINX_MISC_FILES=(
- nginx-{r2.logrotate,r2.service,r5.conf,r6.initd,r1.confd,r1.tmpfiles}
-)
-NGINX_SUPPORT_MODULE_STUBS=1
-
-inherit nginx
-
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
-
-PATCHES=(
- "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-)
diff --git a/www-servers/nginx/nginx-1.30.2-r2.ebuild b/www-servers/nginx/nginx-1.30.2-r2.ebuild
deleted file mode 100644
index 8021ac960114..000000000000
--- a/www-servers/nginx/nginx-1.30.2-r2.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
-
-NGINX_SUBSYSTEMS=(+http stream mail)
-NGINX_MODULES=(
- +http_{charset,gzip,ssi,userid,access,auth_basic,mirror,autoindex,geo,map}
- +http_{split_clients,referer,rewrite,proxy,fastcgi,uwsgi,scgi,grpc}
- +http_{memcached,limit_conn,limit_req,empty_gif,browser,upstream_hash}
- +http_{upstream_ip_hash,upstream_least_conn,upstream_random}
- +http_{upstream_keepalive,upstream_zone}
- http_{ssl,v2,v3,realip,addition,xslt,image_filter,geoip,sub,dav,flv,mp4}
- http_{gunzip,gzip_static,auth_request,random_index,secure_link,degradation}
- http_{slice,stub_status,perl}
- +mail_{pop3,imap,smtp}
- mail_ssl
- +stream_{limit_conn,access,geo,map,split_clients,return,pass,set}
- +stream_{upstream_hash,upstream_least_conn,upstream_random,upstream_zone}
- stream_{ssl,realip,geoip,ssl_preread}
-)
-NGINX_TESTS_COMMIT=0f72f59c40de9977bd8f3deff5d200e761b8b683
-NGINX_MISC_FILES=(
- nginx-{r2.logrotate,r2.service,r5.conf,r6.initd,r1.confd,r1.tmpfiles}
-)
-NGINX_SUPPORT_MODULE_STUBS=1
-
-inherit nginx
-
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv x86"
-
-PATCHES=(
- "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-)
diff --git a/www-servers/nginx/nginx-1.30.3-r2.ebuild b/www-servers/nginx/nginx-1.30.3-r2.ebuild
deleted file mode 100644
index 8021ac960114..000000000000
--- a/www-servers/nginx/nginx-1.30.3-r2.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
-
-NGINX_SUBSYSTEMS=(+http stream mail)
-NGINX_MODULES=(
- +http_{charset,gzip,ssi,userid,access,auth_basic,mirror,autoindex,geo,map}
- +http_{split_clients,referer,rewrite,proxy,fastcgi,uwsgi,scgi,grpc}
- +http_{memcached,limit_conn,limit_req,empty_gif,browser,upstream_hash}
- +http_{upstream_ip_hash,upstream_least_conn,upstream_random}
- +http_{upstream_keepalive,upstream_zone}
- http_{ssl,v2,v3,realip,addition,xslt,image_filter,geoip,sub,dav,flv,mp4}
- http_{gunzip,gzip_static,auth_request,random_index,secure_link,degradation}
- http_{slice,stub_status,perl}
- +mail_{pop3,imap,smtp}
- mail_ssl
- +stream_{limit_conn,access,geo,map,split_clients,return,pass,set}
- +stream_{upstream_hash,upstream_least_conn,upstream_random,upstream_zone}
- stream_{ssl,realip,geoip,ssl_preread}
-)
-NGINX_TESTS_COMMIT=0f72f59c40de9977bd8f3deff5d200e761b8b683
-NGINX_MISC_FILES=(
- nginx-{r2.logrotate,r2.service,r5.conf,r6.initd,r1.confd,r1.tmpfiles}
-)
-NGINX_SUPPORT_MODULE_STUBS=1
-
-inherit nginx
-
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv x86"
-
-PATCHES=(
- "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-)
diff --git a/www-servers/nginx/nginx-1.31.2-r2.ebuild b/www-servers/nginx/nginx-1.31.2-r2.ebuild
deleted file mode 100644
index 15ee7e9939cc..000000000000
--- a/www-servers/nginx/nginx-1.31.2-r2.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-NGINX_SUBSYSTEMS=(+http stream mail)
-NGINX_MODULES=(
- +http_{charset,gzip,ssi,userid,access,auth_basic,mirror,autoindex,geo,map}
- +http_{split_clients,referer,rewrite,proxy,fastcgi,uwsgi,scgi,grpc}
- +http_{memcached,limit_conn,limit_req,empty_gif,browser,upstream_hash}
- +http_{upstream_ip_hash,upstream_least_conn,upstream_random}
- +http_{upstream_keepalive,upstream_zone}
- http_{ssl,v2,v3,realip,addition,xslt,image_filter,geoip,sub,dav,flv,mp4}
- http_{gunzip,gzip_static,auth_request,random_index,secure_link,degradation}
- http_{slice,stub_status,perl}
- +mail_{pop3,imap,smtp}
- mail_ssl
- +stream_{limit_conn,access,geo,map,split_clients,return,pass,set}
- +stream_{upstream_hash,upstream_least_conn,upstream_random,upstream_zone}
- stream_{ssl,realip,geoip,ssl_preread}
-)
-NGINX_TESTS_COMMIT=56ae49add9286d2e896a22bcfb880c7ea7c3964e
-NGINX_MISC_FILES=(
- nginx-{r2.logrotate,r2.service,r5.conf,r6.initd,r1.confd,r1.tmpfiles}
-)
-NGINX_SUPPORT_MODULE_STUBS=1
-
-inherit nginx
-
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv x86"
-
-PATCHES=(
- "${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"
-)
-
-src_prepare() {
- nginx_src_prepare
-
- if use test ; then
- # Fails with network-sandbox (bug #976129)
- rm "${NGX_TESTS_S}"/tunnel_next_upstream.t || die
- fi
-}
diff --git a/www-servers/nginx/nginx-1.31.1-r2.ebuild b/www-servers/nginx/nginx-1.31.5.ebuild
index a08001ea0e0f..97a69df54798 100644
--- a/www-servers/nginx/nginx-1.31.1-r2.ebuild
+++ b/www-servers/nginx/nginx-1.31.5.ebuild
@@ -19,7 +19,7 @@ NGINX_MODULES=(
+stream_{upstream_hash,upstream_least_conn,upstream_random,upstream_zone}
stream_{ssl,realip,geoip,ssl_preread}
)
-NGINX_TESTS_COMMIT=4d1de3f357afeb91865d024b27516d6b67aad86e
+NGINX_TESTS_COMMIT=9f1db4a63b14d2898652493735987d30ea61736f
NGINX_MISC_FILES=(
nginx-{r2.logrotate,r2.service,r5.conf,r6.initd,r1.confd,r1.tmpfiles}
)
@@ -27,7 +27,7 @@ NGINX_SUPPORT_MODULE_STUBS=1
inherit nginx
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
PATCHES=(
"${FILESDIR}/${PN}-httpoxy-mitigation-r1.patch"