From cad825a875a2121b1dae18675214afe9d50e2d64 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Feb 2025 10:40:07 +0300 Subject: [PATCH] Sync with portage [Fri Feb 14 10:40:06 MSK 2025]. --- Manifest | 30 +- Manifest.files.gz | Bin 30162 -> 30112 bytes app-accessibility/Manifest.gz | Bin 4227 -> 4227 bytes app-accessibility/emacspeak-ss/Manifest | 2 + .../emacspeak-ss/emacspeak-ss-1.9.1-r2.ebuild | 34 + .../emacspeak-ss-1.9.1-missing-includes.patch | 13 + app-accessibility/kontrast/Manifest | 2 - .../kontrast/kontrast-24.12.1.ebuild | 32 - app-accessibility/sphinx2/Manifest | 2 + .../sphinx2/files/sphinx2-0.6-c99.patch | 500 + .../sphinx2/sphinx2-0.6-r2.ebuild | 39 + app-admin/Manifest.gz | Bin 32725 -> 32714 bytes app-admin/aws-session-manager-plugin/Manifest | 4 +- ...s-session-manager-plugin-1.2.707.0.ebuild} | 0 app-admin/awscli/Manifest | 22 +- ...i-1.37.12.ebuild => awscli-1.37.16.ebuild} | 0 ...i-1.37.13.ebuild => awscli-1.37.17.ebuild} | 0 ...i-1.37.14.ebuild => awscli-1.37.18.ebuild} | 0 ...i-1.37.15.ebuild => awscli-1.37.19.ebuild} | 0 app-admin/awscli/awscli-1.37.2.ebuild | 95 - app-admin/awscli/awscli-1.37.20.ebuild | 95 + app-admin/awscli/awscli-1.37.6.ebuild | 2 +- app-admin/bitwarden-desktop-bin/Manifest | 2 + .../bitwarden-desktop-bin-2025.1.4.ebuild | 89 + app-admin/conky/Manifest | 4 +- app-admin/conky/conky-1.21.9.ebuild | 251 - app-admin/conky/conky-1.22.0.ebuild | 2 +- app-admin/entr/Manifest | 2 + app-admin/entr/entr-5.7.ebuild | 38 + app-admin/kio-admin/Manifest | 2 - app-admin/kio-admin/kio-admin-24.12.1.ebuild | 25 - app-admin/linode-cli/Manifest | 8 +- app-admin/linode-cli/linode-cli-5.54.0.ebuild | 45 - app-admin/linode-cli/linode-cli-5.55.0.ebuild | 45 - app-admin/linode-cli/linode-cli-5.56.0.ebuild | 45 - app-admin/linode-cli/linode-cli-5.56.2.ebuild | 45 + app-admin/logsurfer+/Manifest | 2 + .../logsurfer+/files/logsurfer+-1.8-C23.patch | 346 + app-admin/logsurfer+/logsurfer+-1.8-r6.ebuild | 58 + app-admin/opentofu/Manifest | 20 +- app-admin/opentofu/opentofu-1.6.0.ebuild | 40 - app-admin/opentofu/opentofu-1.6.1.ebuild | 40 - app-admin/opentofu/opentofu-1.6.2.ebuild | 40 - app-admin/opentofu/opentofu-1.7.1.ebuild | 40 - app-admin/opentofu/opentofu-1.7.2.ebuild | 40 - app-admin/opentofu/opentofu-1.8.1.ebuild | 40 - app-admin/opentofu/opentofu-1.8.8.ebuild | 2 +- app-admin/salt/Manifest | 2 +- app-admin/salt/salt-3007.1-r1.ebuild | 4 +- app-admin/setools/Manifest | 4 +- app-admin/setools/setools-4.5.1.ebuild | 2 +- app-admin/setools/setools-9999.ebuild | 2 +- app-admin/terraform/Manifest | 3 + app-admin/terraform/terraform-1.10.5.ebuild | 42 + app-arch/Manifest.gz | Bin 18264 -> 18263 bytes app-arch/libdeflate/Manifest | 2 +- app-arch/libdeflate/libdeflate-1.23.ebuild | 2 +- app-arch/par2cmdline/Manifest | 1 - .../par2cmdline/par2cmdline-0.8.1-r1.ebuild | 30 - app-arch/patool/Manifest | 5 +- .../patool-3.1.0-fix-file-5.46-compat.patch | 189 + app-arch/patool/patool-3.0.3.ebuild | 7 +- app-arch/patool/patool-3.1.0.ebuild | 132 + app-arch/torrentzip/Manifest | 2 +- app-arch/torrentzip/torrentzip-1.3.ebuild | 4 +- app-arch/xz-utils/Manifest | 6 +- app-arch/xz-utils/xz-utils-5.6.4.ebuild | 4 - app-arch/xz-utils/xz-utils-5.7.1_alpha.ebuild | 4 - app-arch/xz-utils/xz-utils-9999.ebuild | 6 +- app-backup/Manifest.gz | Bin 7874 -> 7877 bytes app-backup/borgmatic/Manifest | 4 +- app-backup/borgmatic/borgmatic-1.9.10.ebuild | 84 + app-backup/borgmatic/borgmatic-1.9.4.ebuild | 85 - app-benchmarks/Manifest.gz | Bin 4848 -> 4841 bytes app-benchmarks/i7z/Manifest | 3 +- app-benchmarks/i7z/i7z-93_p20131012-r2.ebuild | 67 - app-benchmarks/i7z/i7z-93_p20131012-r3.ebuild | 2 +- app-cdr/Manifest.gz | Bin 7494 -> 7499 bytes app-cdr/ccd2iso/Manifest | 1 + app-cdr/ccd2iso/ccd2iso-0.3-r2.ebuild | 22 + app-cdr/cue2toc/Manifest | 1 + app-cdr/cue2toc/cue2toc-0.4-r2.ebuild | 23 + app-cdr/dolphin-plugins-mountiso/Manifest | 2 - .../dolphin-plugins-mountiso-24.12.1.ebuild | 58 - app-cdr/isoimagewriter/Manifest | 2 - .../isoimagewriter-24.12.1.ebuild | 30 - app-containers/Manifest.gz | Bin 9386 -> 9390 bytes .../amazon-ecr-credential-helper/Manifest | 2 + .../amazon-ecr-credential-helper-0.9.1.ebuild | 29 + app-containers/incus/Manifest | 3 - app-containers/incus/incus-6.7.ebuild | 216 - app-containers/lxc/Manifest | 3 - app-containers/lxc/lxc-6.0.2.ebuild | 175 - app-containers/podman/Manifest | 2 +- .../files/podman-restart-5.0.0_rc4.initd | 10 +- app-crypt/Manifest.gz | Bin 25064 -> 25057 bytes app-crypt/badkeys/Manifest | 2 + app-crypt/badkeys/badkeys-0.0.13.ebuild | 26 + app-crypt/gpa/Manifest | 3 + app-crypt/gpa/files/gpa-0.11.0-c99.patch | 17 + app-crypt/gpa/gpa-0.11.0.ebuild | 44 + app-crypt/gpgme/Manifest | 3 + app-crypt/gpgme/gpgme-1.24.2.ebuild | 178 + app-crypt/hashalot/Manifest | 1 + app-crypt/hashalot/hashalot-0.3-r3.ebuild | 21 + app-crypt/keysmith/Manifest | 2 - app-crypt/keysmith/keysmith-24.12.1.ebuild | 37 - app-crypt/rpm-sequoia/Manifest | 117 +- .../rpm-sequoia/rpm-sequoia-1.6.0-r1.ebuild | 305 - .../rpm-sequoia/rpm-sequoia-1.7.0-r1.ebuild | 4 +- app-crypt/sequoia-chameleon-gnupg/Manifest | 80 +- .../sequoia-chameleon-gnupg-0.10.1-r1.ebuild | 451 - .../sequoia-chameleon-gnupg-0.11.2.ebuild | 2 +- app-crypt/sequoia-sq/Manifest | 56 +- app-crypt/sequoia-sq/sequoia-sq-1.0.0.ebuild | 603 -- app-crypt/sequoia-sq/sequoia-sq-1.1.0.ebuild | 2 +- app-crypt/sequoia-sqv/Manifest | 2 +- .../sequoia-sqv/sequoia-sqv-1.2.1-r1.ebuild | 4 +- app-editors/Manifest.gz | Bin 14105 -> 14105 bytes app-editors/emacs/Manifest | 8 +- app-editors/emacs/emacs-26.3-r21.ebuild | 2 +- app-editors/emacs/emacs-27.2-r19.ebuild | 2 +- app-editors/emacs/emacs-28.2-r15.ebuild | 2 +- app-editors/emacs/emacs-29.4-r1.ebuild | 2 +- app-editors/ghostwriter/Manifest | 2 - .../ghostwriter/ghostwriter-24.12.1.ebuild | 40 - app-editors/gnome-text-editor/Manifest | 2 +- .../gnome-text-editor-47.2.ebuild | 2 +- app-editors/logseq-desktop-bin/Manifest | 4 +- .../logseq-desktop-bin-0.10.9-r1.ebuild | 96 + .../logseq-desktop-bin-0.10.9.ebuild | 91 - app-editors/logseq-desktop-bin/metadata.xml | 3 + app-editors/neovim/Manifest | 2 + app-editors/neovim/neovim-0.10.4.ebuild | 127 + app-editors/vscode/Manifest | 16 +- ...ode-1.96.4.ebuild => vscode-1.97.1.ebuild} | 0 ...ode-1.97.0.ebuild => vscode-1.97.2.ebuild} | 0 app-editors/vscodium/Manifest | 10 +- ...17.ebuild => vscodium-1.97.1.25044.ebuild} | 0 app-editors/wily/Manifest | 2 + app-editors/wily/files/wily-1.0-C23.patch | 101 + app-editors/wily/wily-1.0-r3.ebuild | 48 + app-editors/zed/Manifest | 6 +- app-editors/zed/zed-0.172.10.ebuild | 210 + app-editors/zed/zed-0.172.8.ebuild | 210 - app-emacs/Manifest.gz | Bin 76790 -> 76785 bytes app-emacs/ghub/Manifest | 2 + app-emacs/ghub/ghub-4.2.1.ebuild | 46 + app-emacs/multiple-cursors/Manifest | 2 + .../multiple-cursors-1.5.0.ebuild | 32 + app-emacs/nxml-libvirt-schemas/Manifest | 10 +- .../nxml-libvirt-schemas-10.0.0.ebuild | 45 - .../nxml-libvirt-schemas-10.1.0.ebuild | 45 - .../nxml-libvirt-schemas-11.0.0.ebuild | 45 + .../nxml-libvirt-schemas-9.8.0.ebuild | 45 - .../nxml-libvirt-schemas-9.9.0.ebuild | 45 - app-emacs/parsebib/Manifest | 2 + app-emacs/parsebib/parsebib-6.6.ebuild | 28 + app-emulation/86Box/86Box-4.2.1-r1.ebuild | 75 + app-emulation/86Box/86Box-4.2.1.ebuild | 73 - app-emulation/86Box/Manifest | 4 +- app-emulation/86Box/metadata.xml | 1 + app-emulation/Manifest.gz | Bin 15361 -> 15328 bytes app-emulation/dxvk/Manifest | 2 +- app-emulation/dxvk/metadata.xml | 3 +- app-emulation/libvirt/Manifest | 21 +- ...-error-in-udevListInterfacesByStatus.patch | 42 - ...-negative-array-lengths-before-alloc.patch | 222 - ....0-Fix-paths-in-libvirt-guests.sh.in.patch | 29 + ...ibxml-xmlsave.h-for-xmlIndentTreeOut.patch | 36 - .../libvirt-9.4.0-do-not-use-sysconfig.patch | 209 - .../libvirt/libvirt-10.1.0-r4.ebuild | 392 - .../libvirt/libvirt-10.10.0-r1.ebuild | 5 +- app-emulation/libvirt/libvirt-11.0.0.ebuild | 394 + app-emulation/libvirt/libvirt-9.8.0-r5.ebuild | 383 - app-emulation/libvirt/libvirt-9.9.0-r5.ebuild | 384 - app-emulation/libvirt/libvirt-9999.ebuild | 20 +- app-emulation/qemu/Manifest | 2 +- app-emulation/qemu/qemu-9.1.2.ebuild | 2 +- app-emulation/ruffle/Manifest | 2 +- .../ruffle/ruffle-0_p20250124.ebuild | 2 +- app-emulation/virtiofsd/Manifest | 8 +- .../virtiofsd/virtiofsd-1.10.0-r1.ebuild | 148 - .../virtiofsd/virtiofsd-1.10.0-r2.ebuild | 151 + .../virtiofsd/virtiofsd-1.10.1-r1.ebuild | 148 - .../virtiofsd/virtiofsd-1.10.1-r2.ebuild | 151 + .../virtiofsd/virtiofsd-1.11.1-r1.ebuild | 163 - .../virtiofsd/virtiofsd-1.11.1-r2.ebuild | 166 + app-emulation/virtiofsd/virtiofsd-9999.ebuild | 7 +- app-emulation/virtualbox-kvm/Manifest | 4 + .../virtualbox-kvm-7.1.6a_pre20250207.ebuild | 788 ++ app-emulation/vkd3d-proton/Manifest | 2 +- app-emulation/vkd3d-proton/metadata.xml | 3 +- app-emulation/wine-gecko/Manifest | 5 - .../wine-gecko/wine-gecko-2.47.2.ebuild | 42 - app-emulation/wine-mono/Manifest | 9 - .../wine-mono/wine-mono-7.0.0.ebuild | 33 - .../wine-mono/wine-mono-9.2.0.ebuild | 33 - .../wine-mono/wine-mono-9.3.0.ebuild | 33 - app-emulation/wine-proton/Manifest | 17 +- ...ine-proton-7.0.4-restore-menubuilder.patch | 14 - .../files/wine-proton-7.0.4-unwind.patch | 40 - .../wine-proton-7.0.6-mingw64-11.0.0.patch | 20 - .../files/wine-proton-7.0.6-vulkan-libm.patch | 12 - .../wine-proton-9.0.4-binutils2.44.patch | 105 + app-emulation/wine-proton/metadata.xml | 4 +- .../wine-proton/wine-proton-7.0.6.ebuild | 390 - .../wine-proton/wine-proton-8.0.5c.ebuild | 3 +- .../wine-proton/wine-proton-9.0.2.ebuild | 3 +- .../wine-proton/wine-proton-9.0.4.ebuild | 3 +- .../wine-proton/wine-proton-9999.ebuild | 3 +- app-emulation/wine-staging/Manifest | 22 +- .../wine-staging-10.0-binutils2.44.patch | 105 + app-emulation/wine-staging/metadata.xml | 3 +- .../wine-staging/wine-staging-10.0.ebuild | 1 + .../wine-staging/wine-staging-10.1.ebuild | 483 + .../wine-staging/wine-staging-9.0.ebuild | 3 +- .../wine-staging/wine-staging-9.19.ebuild | 482 - .../wine-staging/wine-staging-9.20.ebuild | 482 - .../wine-staging/wine-staging-9.21.ebuild | 482 - .../wine-staging/wine-staging-9.22.ebuild | 482 - app-emulation/wine-vanilla/Manifest | 14 +- .../wine-vanilla-10.0-binutils2.44.patch | 105 + .../files/wine-vanilla-7.0-unwind.patch | 40 - app-emulation/wine-vanilla/metadata.xml | 4 +- .../wine-vanilla/wine-vanilla-10.0.ebuild | 3 +- .../wine-vanilla/wine-vanilla-10.1.ebuild | 1 + .../wine-vanilla/wine-vanilla-7.0.2.ebuild | 394 - .../wine-vanilla/wine-vanilla-8.0.2.ebuild | 3 +- .../wine-vanilla/wine-vanilla-9.0.ebuild | 3 +- app-emulation/xen-tools/Manifest | 6 +- .../edk2-202202-binutils-2.41-textrels.patch | 21 + .../files/xen-tools-4.19.1-gnu17.patch | 10 + .../xen-tools/xen-tools-4.18.4_pre1.ebuild | 22 +- .../xen-tools/xen-tools-4.19.1.ebuild | 15 + app-i18n/Manifest.gz | Bin 16866 -> 17034 bytes app-i18n/fcitx-anthy/Manifest | 2 + app-i18n/fcitx-anthy/fcitx-anthy-5.1.6.ebuild | 32 + app-i18n/fcitx-chewing/Manifest | 2 + .../fcitx-chewing/fcitx-chewing-5.1.7.ebuild | 26 + app-i18n/fcitx-chinese-addons/Manifest | 2 + .../fcitx-chinese-addons-5.1.8.ebuild | 62 + app-i18n/fcitx-configtool/Manifest | 2 + .../fcitx-configtool-5.1.8.ebuild | 71 + app-i18n/fcitx-hangul/Manifest | 2 + .../fcitx-hangul/fcitx-hangul-5.1.6.ebuild | 31 + app-i18n/fcitx-lua/Manifest | 2 + app-i18n/fcitx-lua/fcitx-lua-5.0.14.ebuild | 45 + app-i18n/fcitx-m17n/Manifest | 2 + app-i18n/fcitx-m17n/fcitx-m17n-5.1.3.ebuild | 40 + app-i18n/fcitx-qt/Manifest | 2 + app-i18n/fcitx-qt/fcitx-qt-5.1.9.ebuild | 65 + app-i18n/fcitx-rime/Manifest | 2 + app-i18n/fcitx-rime/fcitx-rime-5.1.10.ebuild | 30 + app-i18n/fcitx-sayura/Manifest | 2 + .../fcitx-sayura/fcitx-sayura-5.1.3.ebuild | 24 + app-i18n/fcitx-table-extra/Manifest | 2 + .../fcitx-table-extra-5.1.7.ebuild | 28 + app-i18n/fcitx-table-other/Manifest | 2 + .../fcitx-table-other-5.1.4.ebuild | 27 + app-i18n/fcitx-unikey/Manifest | 2 + .../fcitx-unikey/fcitx-unikey-5.1.6.ebuild | 50 + app-i18n/fcitx/Manifest | 3 + app-i18n/fcitx/fcitx-5.1.12.ebuild | 125 + ....1.12-make-x11-dependencies-optional.patch | 24 + app-i18n/gnulib-l10n/Manifest | 3 + .../gnulib-l10n/gnulib-l10n-20241231.ebuild | 28 + app-i18n/gnulib-l10n/metadata.xml | 9 + app-i18n/ibus-hangul/Manifest | 2 +- app-i18n/ibus-hangul/ibus-hangul-1.5.5.ebuild | 4 +- app-i18n/ibus/Manifest | 2 +- app-i18n/ibus/ibus-1.5.31-r1.ebuild | 2 +- app-i18n/jfbterm/Manifest | 3 + .../jfbterm/files/jfbterm-0.4.7-fonts.patch | 15 + .../files/jfbterm-0.4.7-gettimeoftheday.patch | 43 + app-i18n/jfbterm/jfbterm-0.4.7-r5.ebuild | 64 + app-i18n/libime/Manifest | 2 + app-i18n/libime/libime-1.1.10.ebuild | 50 + app-i18n/librime/Manifest | 6 +- app-i18n/librime/librime-1.11.2.ebuild | 48 - app-i18n/librime/librime-1.13.0.ebuild | 48 + app-i18n/librime/librime-1.7.3-r1.ebuild | 74 - app-i18n/opencc/Manifest | 7 +- .../opencc/files/opencc-1.1.9-python.patch | 162 + app-i18n/opencc/opencc-1.1.4.ebuild | 69 - app-i18n/opencc/opencc-1.1.7-r1.ebuild | 125 - app-i18n/opencc/opencc-1.1.7-r2.ebuild | 121 + app-i18n/opencc/opencc-1.1.9.ebuild | 122 + app-i18n/rime-data/Manifest | 22 + .../rime-data/rime-data-1.0.20250124.ebuild | 84 + app-i18n/xvnkb/Manifest | 6 +- app-i18n/xvnkb/files/config.h.in | 5 + app-i18n/xvnkb/files/meson.build | 72 + app-i18n/xvnkb/files/meson.options | 20 + app-i18n/xvnkb/xvnkb-0.2.11-r1.ebuild | 59 + app-i18n/xvnkb/xvnkb-0.2.11.ebuild | 4 +- app-misc/Manifest.gz | Bin 50212 -> 50208 bytes app-misc/asciinema/Manifest | 2 +- app-misc/asciinema/asciinema-2.4.0.ebuild | 4 +- app-misc/boxes/Manifest | 4 - app-misc/boxes/boxes-2.2.1.ebuild | 47 - app-misc/boxes/boxes-2.3.0.ebuild | 52 - app-misc/broot/Manifest | 3 + app-misc/broot/broot-1.44.7.ebuild | 64 + app-misc/dateutils/Manifest | 4 +- app-misc/dateutils/dateutils-0.4.10.ebuild | 4 +- ...14.patch => dateutils-0.4.10-gcc-14.patch} | 0 app-misc/fastfetch/Manifest | 4 +- app-misc/fastfetch/fastfetch-2.30.1.ebuild | 111 - app-misc/fastfetch/fastfetch-2.36.1.ebuild | 126 + app-misc/francis/Manifest | 2 - app-misc/francis/francis-24.12.1.ebuild | 29 - app-misc/tmuxp/Manifest | 2 + app-misc/tmuxp/tmuxp-1.52.2.ebuild | 54 + app-office/Manifest.gz | Bin 8442 -> 8443 bytes app-office/calligra/Manifest | 2 + app-office/calligra/calligra-24.12.2.ebuild | 139 + app-office/kmymoney/Manifest | 4 +- app-office/kmymoney/kmymoney-5.1.92.ebuild | 126 + app-office/kmymoney/metadata.xml | 5 +- app-office/ledger/Manifest | 3 +- app-office/ledger/ledger-3.3.2-r1.ebuild | 116 - app-office/ledger/ledger-3.3.2-r2.ebuild | 4 +- app-office/libalkimia/Manifest | 5 +- .../files/libalkimia-8.1.92-pkgconfig.patch | 25 + .../libalkimia-8.1.92_p20250211.ebuild | 62 + app-office/libalkimia/metadata.xml | 3 +- app-office/libreoffice-bin/Manifest | 4 + .../libreoffice-bin-24.8.4.ebuild | 126 + .../libreoffice-bin-25.2.0.ebuild | 126 + app-office/merkuro/Manifest | 2 - app-office/merkuro/merkuro-24.12.1.ebuild | 68 - app-office/scribus/Manifest | 5 +- .../files/scribus-1.7.0-poppler-25.02.0.patch | 162 + app-office/scribus/scribus-1.6.3.ebuild | 2 +- app-office/scribus/scribus-1.7.0.ebuild | 1 + app-portage/Manifest.gz | Bin 9747 -> 9756 bytes app-portage/cpuid2cpuflags/Manifest | 2 + .../cpuid2cpuflags/cpuid2cpuflags-15.ebuild | 14 + app-portage/elogv/Manifest | 2 + app-portage/elogv/elogv-0.8.4.ebuild | 56 + app-portage/pycargoebuild/Manifest | 4 +- .../pycargoebuild/pycargoebuild-0.13.4.ebuild | 32 - .../pycargoebuild/pycargoebuild-0.13.5.ebuild | 2 +- app-shells/Manifest.gz | Bin 10639 -> 10647 bytes app-shells/bash/Manifest | 4 + .../bash/bash-5.3_beta_p20250210.ebuild | 414 + .../bash/bash-5.3_beta_p20250212.ebuild | 414 + app-shells/fzf/Manifest | 3 + app-shells/fzf/fzf-0.59.0.ebuild | 72 + app-shells/rc/Manifest | 3 + app-shells/rc/files/rc-1.7.4-C23.patch | 30 + app-shells/rc/files/rc-1.7.4-libedit.patch | 17 + app-shells/rc/rc-1.7.4-r3.ebuild | 55 + app-shells/zoxide/Manifest | 82 + app-shells/zoxide/zoxide-0.9.7.ebuild | 178 + app-text/Manifest.gz | Bin 50285 -> 50116 bytes app-text/chasen/Manifest | 2 + app-text/chasen/chasen-2.4.5-r1.ebuild | 62 + app-text/chasen/files/chasen-2.4.5-c23.patch | 79 + app-text/fbreader/Manifest | 4 - app-text/fbreader/fbreader-0.99.4-r6.ebuild | 87 - app-text/fbreader/metadata.xml | 10 - app-text/htp/Manifest | 2 +- app-text/htp/htp-1.19-r1.ebuild | 4 +- app-text/libspelling/Manifest | 2 +- .../libspelling/libspelling-0.4.5-r1.ebuild | 2 +- app-text/pandoc-bin/Manifest | 6 +- app-text/pandoc-bin/pandoc-bin-3.5.ebuild | 62 - app-text/pandoc-bin/pandoc-bin-3.6.3.ebuild | 67 + app-text/pdfpc/Manifest | 7 +- .../pdfpc/files/pdfpc-4.6.0-no-movies.patch | 59 - .../pdfpc/files/pdfpc-4.6.0-vala-0.56.7.patch | 31 - .../files/pdfpc-4.6.0-webkit2gtk-4.1.patch | 22 - app-text/pdfpc/pdfpc-4.6.0-r2.ebuild | 92 - app-text/pdfpc/pdfpc-4.7.0.ebuild | 2 +- app-text/poppler/Manifest | 5 +- app-text/poppler/poppler-25.02.0.ebuild | 157 + app-text/poppler/poppler-9999.ebuild | 2 +- app-text/qpdf/Manifest | 7 +- .../qpdf/files/qpdf-11.10.0-zopfli-inc.patch | 38 + app-text/qpdf/metadata.xml | 6 + app-text/qpdf/qpdf-11.10.0.ebuild | 106 + app-text/zathura-cb/Manifest | 2 +- app-text/zathura-cb/zathura-cb-0.1.11.ebuild | 4 +- dev-ada/Manifest.gz | Bin 5239 -> 5238 bytes dev-ada/gnatdoc/Manifest | 4 +- dev-ada/gnatdoc/gnatdoc-24.0.0-r1.ebuild | 46 + dev-ada/gnatdoc/gnatdoc-24.0.0.ebuild | 46 - dev-ada/gnatdoc/gnatdoc-25.0.0-r1.ebuild | 73 + dev-ada/gnatdoc/gnatdoc-25.0.0.ebuild | 73 - dev-ada/gpr/Manifest | 2 + dev-ada/gpr/gpr-24.2.0.ebuild | 70 + dev-ada/lal-refactor/Manifest | 2 + .../lal-refactor/lal-refactor-25.0.0.ebuild | 57 + dev-build/Manifest.gz | Bin 7376 -> 7389 bytes dev-build/bazel-buildtools/Manifest | 4 +- ...2.ebuild => bazel-buildtools-8.0.3.ebuild} | 0 .../dolphin-plugins-makefileactions/Manifest | 2 - ...hin-plugins-makefileactions-24.12.1.ebuild | 60 - dev-build/just/Manifest | 43 + dev-build/just/just-1.39.0.ebuild | 223 + dev-build/muon/Manifest | 2 + dev-build/muon/muon-0.4.0.ebuild | 67 + dev-build/rocm-cmake/Manifest | 2 + dev-build/rocm-cmake/rocm-cmake-6.3.2.ebuild | 35 + dev-cpp/Manifest.gz | Bin 16831 -> 16836 bytes dev-cpp/asio/Manifest | 4 - dev-cpp/asio/asio-1.28.1.ebuild | 65 - dev-cpp/asio/asio-1.30.1.ebuild | 58 - dev-cpp/cctz/Manifest | 2 - dev-cpp/cctz/cctz-2.3_p20230228.ebuild | 32 - dev-cpp/cpp-httplib/Manifest | 5 +- dev-cpp/cpp-httplib/cpp-httplib-0.18.0.ebuild | 92 - dev-cpp/cpp-httplib/cpp-httplib-0.18.6.ebuild | 96 + .../files/cpp-httplib-0.18.6-onlinetest.patch | 13 + dev-cpp/rapidfuzz-cpp/Manifest | 4 +- .../rapidfuzz-cpp/rapidfuzz-cpp-3.3.1.ebuild | 2 +- .../rapidfuzz-cpp/rapidfuzz-cpp-3.3.2.ebuild | 32 + dev-cpp/sol2/Manifest | 1 - dev-cpp/sol2/sol2-3.3.1.ebuild | 67 - dev-cpp/yaml-cpp/Manifest | 5 - .../files/yaml-cpp-0.7.0-cmake-paths.patch | 101 - .../yaml-cpp/files/yaml-cpp-0.7.0-gtest.patch | 33 - .../files/yaml-cpp-0.7.0-install-paths.patch | 25 - dev-cpp/yaml-cpp/yaml-cpp-0.7.0-r2.ebuild | 35 - dev-db/Manifest.gz | Bin 16766 -> 16780 bytes dev-db/duckdb/Manifest | 3 + dev-db/duckdb/duckdb-1.2.0.ebuild | 23 + dev-db/duckdb/metadata.xml | 11 + dev-db/mongodb-compass-bin/Manifest | 2 + .../mongodb-compass-bin-1.45.3.ebuild | 56 + dev-db/mycli/Manifest | 2 +- dev-db/mycli/mycli-1.29.2.ebuild | 2 +- dev-db/postgresql/Manifest | 12 +- dev-db/postgresql/postgresql-12.22.ebuild | 445 - dev-db/postgresql/postgresql-13.19.ebuild | 457 + dev-db/postgresql/postgresql-14.16.ebuild | 457 + dev-db/postgresql/postgresql-15.11.ebuild | 459 + dev-db/postgresql/postgresql-16.7.ebuild | 460 + dev-db/postgresql/postgresql-17.3.ebuild | 477 + dev-db/spatialite/Manifest | 2 + .../spatialite-5.1.0-macro-surgery.patch | 80 + dev-db/spatialite/spatialite-5.1.0-r2.ebuild | 63 + dev-db/sqlite/Manifest | 7 +- .../sqlite/files/sqlite-3.49.0-cppflags.patch | 75 + dev-db/sqlite/sqlite-3.48.0-r1.ebuild | 431 - dev-db/sqlite/sqlite-3.49.0.ebuild | 432 + dev-db/sqlmap/Manifest | 4 +- dev-db/sqlmap/sqlmap-1.8.9.ebuild | 60 - dev-db/sqlmap/sqlmap-1.9.ebuild | 60 + dev-db/timescaledb/Manifest | 4 +- ....18.0.ebuild => timescaledb-2.18.1.ebuild} | 0 dev-db/tora/Manifest | 4 - dev-db/tora/files/tora-3.2-qt-includes.patch | 61 - dev-db/tora/metadata.xml | 15 - dev-db/tora/tora-3.2-r2.ebuild | 87 - dev-debug/Manifest.gz | Bin 4195 -> 4198 bytes dev-debug/gdb/Manifest | 8 +- dev-debug/gdb/gdb-15.2-r101.ebuild | 6 +- dev-debug/gdb/gdb-16.1.ebuild | 354 - dev-debug/gdb/gdb-16.2.ebuild | 2 +- dev-debug/gdb/gdb-9999.ebuild | 4 +- dev-debug/gprofng-gui/Manifest | 2 + dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild | 35 + dev-debug/valgrind/Manifest | 6 +- dev-debug/valgrind/valgrind-3.23.0_p3.ebuild | 4 +- dev-debug/valgrind/valgrind-3.24.0.ebuild | 4 +- dev-debug/valgrind/valgrind-3.24.0_p1.ebuild | 2 + dev-dotnet/Manifest.gz | Bin 3806 -> 3806 bytes dev-dotnet/fsautocomplete/Manifest | 3 + .../fsautocomplete-0.76.1.ebuild | 281 + dev-games/Manifest.gz | Bin 5728 -> 5735 bytes dev-games/libnw/Manifest | 4 +- dev-games/libnw/files/libnw-1.30.02-C23.patch | 210 + dev-games/libnw/libnw-1.30.02-r1.ebuild | 3 +- dev-games/libnw/libnw-1.30.02-r2.ebuild | 44 + dev-java/Manifest.gz | Bin 55395 -> 55385 bytes dev-java/checker-framework-qual/Manifest | 4 +- .../checker-framework-qual-3.48.3.ebuild | 23 - .../checker-framework-qual-3.48.4.ebuild | 2 +- dev-java/jol-core/Manifest | 4 +- dev-java/jol-core/jol-core-0.16-r1.ebuild | 40 - dev-java/jol-core/jol-core-0.17.ebuild | 2 +- dev-java/openjdk-bin/Manifest | 14 +- ...a.ebuild => openjdk-bin-25_p9_beta.ebuild} | 0 dev-java/openjdk/Manifest | 4 +- ...njdk-25_p8.ebuild => openjdk-25_p9.ebuild} | 0 dev-java/protobuf-java/Manifest | 2 +- .../protobuf-java/protobuf-java-4.29.3.ebuild | 2 +- dev-java/stax2-api/Manifest | 4 +- dev-java/stax2-api/stax2-api-4.2.1-r1.ebuild | 35 - dev-java/stax2-api/stax2-api-4.2.2.ebuild | 26 + dev-lang/Manifest.gz | Bin 22652 -> 22651 bytes dev-lang/crystal/Manifest | 3 + dev-lang/crystal/crystal-1.15.1.ebuild | 126 + dev-lang/dafny/Manifest | 3 + dev-lang/dafny/dafny-4.10.0.ebuild | 627 ++ dev-lang/execline/Manifest | 2 +- dev-lang/execline/execline-2.9.6.1.ebuild | 4 +- dev-lang/go/Manifest | 4 +- dev-lang/go/go-1.22.12.ebuild | 2 +- dev-lang/go/go-1.23.6.ebuild | 2 +- dev-lang/mmix/Manifest | 4 +- .../files/mmix-20160804-implicit-int.patch | 27 + dev-lang/mmix/mmix-20160804-r1.ebuild | 17 +- dev-lang/mmix/mmix-20160804-r2.ebuild | 49 + dev-lang/nim/Manifest | 3 + .../files/nim-2.2.2-testament-skipfile.txt | 87 + dev-lang/nim/nim-2.2.2.ebuild | 188 + dev-lang/nprolog/Manifest | 2 + dev-lang/nprolog/nprolog-3.90.ebuild | 58 + dev-lang/orc/Manifest | 2 +- dev-lang/orc/orc-0.4.40-r1.ebuild | 2 +- dev-lang/pypy/Manifest | 4 +- ...3.18.ebuild => pypy-3.11.7.3.18_p1.ebuild} | 0 dev-lang/pypy3-exe/Manifest | 4 +- .../pypy3-exe/pypy3-exe-3.11.7.3.18.ebuild | 2 +- dev-lang/python/Manifest | 5 + .../python/python-3.14.0_alpha5-r100.ebuild | 635 ++ dev-lang/python/python-3.14.0_alpha5.ebuild | 630 ++ dev-lang/rust-bin/Manifest | 34 +- dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild | 234 - dev-lang/rust-bin/rust-bin-1.71.1-r101.ebuild | 234 - dev-lang/rust-bin/rust-bin-1.71.1-r102.ebuild | 233 + dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild | 244 - dev-lang/rust-bin/rust-bin-1.74.1-r101.ebuild | 244 - dev-lang/rust-bin/rust-bin-1.74.1-r102.ebuild | 243 + dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild | 244 - dev-lang/rust-bin/rust-bin-1.75.0-r101.ebuild | 244 - dev-lang/rust-bin/rust-bin-1.75.0-r102.ebuild | 243 + dev-lang/rust-bin/rust-bin-1.76.0-r100.ebuild | 233 - dev-lang/rust-bin/rust-bin-1.76.0-r101.ebuild | 232 + dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild | 246 - dev-lang/rust-bin/rust-bin-1.77.1-r101.ebuild | 246 - dev-lang/rust-bin/rust-bin-1.77.1-r102.ebuild | 245 + dev-lang/rust-bin/rust-bin-1.78.0-r100.ebuild | 249 - dev-lang/rust-bin/rust-bin-1.78.0-r101.ebuild | 248 + dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild | 249 - dev-lang/rust-bin/rust-bin-1.79.0-r101.ebuild | 249 - dev-lang/rust-bin/rust-bin-1.79.0-r102.ebuild | 248 + dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild | 253 - dev-lang/rust-bin/rust-bin-1.80.1-r101.ebuild | 253 - dev-lang/rust-bin/rust-bin-1.80.1-r102.ebuild | 252 + dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild | 251 - dev-lang/rust-bin/rust-bin-1.81.0-r101.ebuild | 251 - dev-lang/rust-bin/rust-bin-1.81.0-r102.ebuild | 250 + dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild | 253 - dev-lang/rust-bin/rust-bin-1.82.0-r101.ebuild | 253 - dev-lang/rust-bin/rust-bin-1.82.0-r102.ebuild | 252 + dev-lang/rust-bin/rust-bin-1.83.0-r1.ebuild | 252 + dev-lang/rust-bin/rust-bin-1.83.0.ebuild | 253 - dev-lang/rust-bin/rust-bin-1.84.0-r1.ebuild | 252 + dev-lang/rust-bin/rust-bin-1.84.0.ebuild | 253 - dev-lang/rust-bin/rust-bin-1.84.1-r1.ebuild | 252 + dev-lang/rust-bin/rust-bin-1.84.1.ebuild | 253 - dev-lang/rust/Manifest | 27 +- dev-lang/rust/rust-1.71.1-r100.ebuild | 711 -- dev-lang/rust/rust-1.71.1-r101.ebuild | 710 ++ dev-lang/rust/rust-1.74.1-r100.ebuild | 1023 --- dev-lang/rust/rust-1.74.1-r101.ebuild | 1022 +++ dev-lang/rust/rust-1.75.0-r100.ebuild | 743 -- dev-lang/rust/rust-1.75.0-r101.ebuild | 742 ++ dev-lang/rust/rust-1.76.0-r100.ebuild | 660 -- dev-lang/rust/rust-1.76.0-r101.ebuild | 659 ++ dev-lang/rust/rust-1.77.1-r100.ebuild | 742 -- dev-lang/rust/rust-1.77.1-r101.ebuild | 741 ++ dev-lang/rust/rust-1.78.0-r100.ebuild | 745 -- dev-lang/rust/rust-1.78.0-r101.ebuild | 744 ++ dev-lang/rust/rust-1.79.0-r100.ebuild | 745 -- dev-lang/rust/rust-1.79.0-r101.ebuild | 744 ++ dev-lang/rust/rust-1.80.1-r100.ebuild | 742 -- dev-lang/rust/rust-1.80.1-r101.ebuild | 741 ++ dev-lang/rust/rust-1.81.0-r100.ebuild | 746 -- dev-lang/rust/rust-1.81.0-r101.ebuild | 745 ++ dev-lang/rust/rust-1.82.0-r100.ebuild | 756 -- dev-lang/rust/rust-1.82.0-r101.ebuild | 757 -- dev-lang/rust/rust-1.82.0-r102.ebuild | 756 ++ dev-lang/rust/rust-1.83.0-r1.ebuild | 739 -- dev-lang/rust/rust-1.83.0-r2.ebuild | 738 ++ dev-lang/rust/rust-1.84.0-r1.ebuild | 704 ++ dev-lang/rust/rust-1.84.0.ebuild | 741 -- dev-lang/rust/rust-1.84.1-r1.ebuild | 704 ++ dev-lang/rust/rust-1.84.1.ebuild | 741 -- dev-lang/spark/Manifest | 6 +- .../spark/files/spark-2024.01.11-gentoo.patch | 21 + dev-lang/spark/metadata.xml | 3 + dev-lang/spark/spark-2024.01.11-r1.ebuild | 105 + dev-lang/spidermonkey/Manifest | 4 +- .../spidermonkey/spidermonkey-128.5.0.ebuild | 478 - .../spidermonkey/spidermonkey-128.7.0.ebuild | 473 + dev-lang/tcl/Manifest | 2 +- dev-lang/tcl/tcl-8.6.15.ebuild | 4 +- dev-lang/tk/Manifest | 2 +- dev-lang/tk/tk-8.6.15.ebuild | 4 +- dev-lang/xsb/Manifest | 4 +- .../xsb/files/xsb-4.0.0-gcc14-build-fix.patch | 11 + dev-lang/xsb/files/xsb-4.0.0-gcc14-sql.patch | 16 + dev-lang/xsb/xsb-4.0.0-r1.ebuild | 223 - dev-lang/xsb/xsb-4.0.0-r2.ebuild | 225 + dev-libs/Manifest.gz | Bin 100012 -> 99534 bytes dev-libs/apache-arrow/Manifest | 7 +- .../apache-arrow/apache-arrow-18.0.0.ebuild | 127 - .../apache-arrow-18.1.0-r2.ebuild | 128 - .../apache-arrow/apache-arrow-19.0.0.ebuild | 2 +- dev-libs/appstream/Manifest | 2 +- dev-libs/appstream/appstream-1.0.4.ebuild | 28 +- dev-libs/bglibs/Manifest | 2 +- dev-libs/bglibs/bglibs-2.04-r3.ebuild | 15 +- dev-libs/c-blosc2/Manifest | 2 + dev-libs/c-blosc2/c-blosc2-2.16.0.ebuild | 63 + dev-libs/ell/Manifest | 2 + dev-libs/ell/ell-0.72.ebuild | 59 + dev-libs/flatbuffers/Manifest | 8 +- .../flatbuffers/flatbuffers-24.12.23.ebuild | 33 - .../flatbuffers/flatbuffers-25.1.24.ebuild | 2 +- ...1.21.ebuild => flatbuffers-25.2.10.ebuild} | 0 dev-libs/gumbo/Manifest | 4 +- dev-libs/gumbo/gumbo-0.12.2.ebuild | 41 - dev-libs/gumbo/gumbo-0.13.0.ebuild | 41 + dev-libs/hipother/Manifest | 2 + dev-libs/hipother/hipother-6.3.2.ebuild | 22 + dev-libs/imath/Manifest | 2 +- dev-libs/imath/imath-3.1.12.ebuild | 2 +- dev-libs/isa-l/Manifest | 2 +- dev-libs/isa-l/isa-l-2.31.0.ebuild | 4 +- dev-libs/kirigami-addons/Manifest | 2 - .../kirigami-addons-1.5.0.ebuild | 44 - dev-libs/kopeninghours/Manifest | 2 - .../kopeninghours-24.12.1.ebuild | 63 - dev-libs/kosmindoormap/Manifest | 2 - .../kosmindoormap-24.12.1.ebuild | 48 - dev-libs/kpublictransport/Manifest | 2 - .../kpublictransport-24.12.1.ebuild | 39 - dev-libs/kqoauth/Manifest | 3 - dev-libs/kqoauth/kqoauth-0.98-r3.ebuild | 53 - dev-libs/kqoauth/metadata.xml | 15 - dev-libs/kweathercore/Manifest | 2 - .../kweathercore/kweathercore-24.12.1.ebuild | 32 - dev-libs/libcdio-paranoia/Manifest | 4 +- .../libcdio-paranoia-2.0.2.ebuild | 69 + dev-libs/libcdio-paranoia/metadata.xml | 14 +- dev-libs/libcdio/Manifest | 4 +- dev-libs/libcdio/libcdio-2.2.0.ebuild | 81 + dev-libs/libcdio/metadata.xml | 5 +- dev-libs/libei/Manifest | 2 + dev-libs/libei/libei-1.4.0.ebuild | 100 + dev-libs/libffi/Manifest | 7 +- ...fi64-calls-with-6-gp-and-some-sse-re.patch | 38 + dev-libs/libffi/libffi-3.4.6-r3.ebuild | 2 +- dev-libs/libffi/libffi-3.4.7.ebuild | 87 + dev-libs/libffi/libffi-9999.ebuild | 6 +- dev-libs/libical/Manifest | 2 +- dev-libs/libical/libical-3.0.19.ebuild | 2 +- dev-libs/libinput/Manifest | 2 +- dev-libs/libinput/libinput-1.27.1.ebuild | 2 +- dev-libs/libintl/Manifest | 6 +- dev-libs/libintl/libintl-0.23.1.ebuild | 105 + dev-libs/libintl/libintl-0.23.ebuild | 105 - dev-libs/libpcre2/Manifest | 13 +- .../libpcre2-10.43-fix-loong-sljit.patch | 30 - dev-libs/libpcre2/libpcre2-10.42-r1.ebuild | 97 - dev-libs/libpcre2/libpcre2-10.42-r2.ebuild | 96 - dev-libs/libpcre2/libpcre2-10.43.ebuild | 96 - dev-libs/libpcre2/libpcre2-10.44-r1.ebuild | 4 +- dev-libs/libpcre2/libpcre2-10.45.ebuild | 102 + dev-libs/libtasn1/Manifest | 3 + dev-libs/libtasn1/libtasn1-4.20.0.ebuild | 54 + dev-libs/libvformat/Manifest | 3 + .../files/libvformat-1.13-time_t.patch | 33 + dev-libs/libvformat/libvformat-1.13-r3.ebuild | 37 + dev-libs/libxml2/Manifest | 4 - dev-libs/libxml2/libxml2-2.11.8.ebuild | 200 - dev-libs/libxml2/libxml2-2.12.8.ebuild | 196 - dev-libs/mimalloc/Manifest | 2 - dev-libs/mimalloc/mimalloc-2.1.8.ebuild | 35 - dev-libs/nspr/Manifest | 2 - dev-libs/nspr/nspr-4.35-r2.ebuild | 178 - dev-libs/openct/Manifest | 2 + .../openct-0.6.20-incompatible-pointers.patch | 26 + dev-libs/openct/openct-0.6.20-r6.ebuild | 89 + dev-libs/openssl/Manifest | 17 +- dev-libs/openssl/openssl-3.0.16.ebuild | 288 + dev-libs/openssl/openssl-3.1.8.ebuild | 289 + dev-libs/openssl/openssl-3.2.4.ebuild | 296 + dev-libs/openssl/openssl-3.3.2-r2.ebuild | 2 +- dev-libs/openssl/openssl-3.3.3.ebuild | 297 + dev-libs/openssl/openssl-3.4.1.ebuild | 293 + dev-libs/poco/Manifest | 6 +- dev-libs/poco/poco-1.12.4.ebuild | 146 - dev-libs/poco/poco-1.14.0-r1.ebuild | 2 +- dev-libs/poco/poco-1.14.1.ebuild | 138 + dev-libs/protobuf-c/Manifest | 2 + dev-libs/protobuf-c/protobuf-c-1.5.1.ebuild | 54 + dev-libs/qcoro5/Manifest | 3 - dev-libs/qcoro5/metadata.xml | 18 - dev-libs/qcoro5/qcoro5-0.10.0-r1.ebuild | 71 - dev-libs/qoauth/Manifest | 5 - .../files/qoauth-1.0.1-disable-ft.patch | 20 - .../files/qoauth-2.0.1_pre20160315-prf.patch | 15 - dev-libs/qoauth/metadata.xml | 5 - .../qoauth/qoauth-2.0.1_pre20160315-r3.ebuild | 67 - dev-libs/qxlsx/Manifest | 2 +- dev-libs/qxlsx/qxlsx-1.5.0.ebuild | 4 +- dev-libs/rocdbgapi/Manifest | 8 +- dev-libs/rocdbgapi/rocdbgapi-5.7.1.ebuild | 4 +- dev-libs/rocdbgapi/rocdbgapi-6.1.1.ebuild | 4 +- dev-libs/rocdbgapi/rocdbgapi-6.3.0.ebuild | 4 +- dev-libs/rocdbgapi/rocdbgapi-6.3.2.ebuild | 67 + dev-libs/rocm-comgr/Manifest | 30 +- ...MGR-changes-needed-for-upstream-llvm.patch | 66 - .../files/rocm-comgr-4.5.2-dependencies.patch | 53 - .../rocm-comgr-5.1.3-clang-fix-include.patch | 12 - .../files/rocm-comgr-5.1.3-clang-link.patch | 17 - .../rocm-comgr-5.1.3-llvm-15-args-changed | 20 - .../rocm-comgr-5.1.3-llvm-15-remove-zlib-gnu | 17 - ...omgr-5.3.3-HIPIncludePath-not-needed.patch | 15 - .../files/rocm-comgr-5.3.3-fix-tests.patch | 17 - ...rocm-comgr-5.3.3-fno-stack-protector.patch | 14 - .../rocm-comgr-5.3.3-remove-h-option.patch | 43 - .../files/rocm-comgr-5.5.1-fix-tests.patch | 17 - .../files/rocm-comgr-5.5.1-lld-include.patch | 22 - .../files/rocm-comgr-5.5.1-nullopt.patch | 23 - .../files/rocm-comgr-5.5.1-opt_mrelax.patch | 23 - .../rocm-comgr-5.5.1-subtargetfeatures.patch | 26 - .../files/rocm-comgr-6.3.2-rocm_path.patch | 14 + .../rocm-comgr/rocm-comgr-5.1.3-r3.ebuild | 60 - .../rocm-comgr/rocm-comgr-5.3.3-r2.ebuild | 62 - .../rocm-comgr/rocm-comgr-5.4.3-r1.ebuild | 61 - dev-libs/rocm-comgr/rocm-comgr-5.5.1.ebuild | 64 - dev-libs/rocm-comgr/rocm-comgr-5.7.1.ebuild | 6 +- dev-libs/rocm-comgr/rocm-comgr-6.3.0.ebuild | 88 - .../rocm-comgr/rocm-comgr-6.3.2-r1.ebuild | 90 + dev-libs/rocm-device-libs/Manifest | 13 +- .../rocm-device-libs-5.1.3-llvm-link.patch | 13 - ...m-device-libs-5.1.3-test-bitcode-dir.patch | 24 - ...4.3-Revert-Update-counters-for-gfx11.patch | 216 - .../rocm-device-libs-5.1.3-r1.ebuild | 47 - .../rocm-device-libs-5.3.3.ebuild | 47 - .../rocm-device-libs-5.4.3.ebuild | 48 - .../rocm-device-libs-5.5.1.ebuild | 49 - .../rocm-device-libs-6.3.2.ebuild | 99 + dev-libs/rocm-opencl-runtime/Manifest | 20 +- .../files/rocclr-5.3.3-fix-include.patch | 218 - .../files/rocclr-5.3.3-gcc13.patch | 27 - ...ntime-3.5.0-do-not-install-libopencl.patch | 14 - ...m-opencl-runtime-5.0.2-enable-gfx800.patch | 16 - ...m-opencl-runtime-5.1.3-remove-clinfo.patch | 24 - .../rocm-opencl-runtime-5.3.3-gcc13.patch | 27 - .../rocm-opencl-runtime-5.1.3.ebuild | 130 - .../rocm-opencl-runtime-5.3.3-r1.ebuild | 118 - .../rocm-opencl-runtime-5.4.3-r1.ebuild | 136 - .../rocm-opencl-runtime-5.5.1.ebuild | 133 - .../rocm-opencl-runtime-6.3.2.ebuild | 101 + dev-libs/rocr-runtime/Manifest | 11 +- ...cr-runtime-5.0.1-cmake-install-paths.patch | 42 - .../rocr-runtime/rocr-runtime-5.1.3-r1.ebuild | 51 - .../rocr-runtime/rocr-runtime-5.3.3-r1.ebuild | 52 - .../rocr-runtime/rocr-runtime-5.4.3-r1.ebuild | 57 - .../rocr-runtime/rocr-runtime-5.5.1.ebuild | 52 - .../rocr-runtime/rocr-runtime-6.3.2.ebuild | 68 + dev-libs/roct-thunk-interface/Manifest | 10 +- .../roct-thunk-interface-5.1.3.ebuild | 40 - .../roct-thunk-interface-5.3.3.ebuild | 40 - .../roct-thunk-interface-5.4.3.ebuild | 40 - .../roct-thunk-interface-5.5.1.ebuild | 39 - .../roct-thunk-interface-6.3.2.ebuild | 92 + dev-libs/simdjson/Manifest | 2 + dev-libs/simdjson/simdjson-3.12.1-r1.ebuild | 105 + dev-libs/skalibs/Manifest | 2 +- dev-libs/skalibs/skalibs-2.14.3.0.ebuild | 4 +- dev-libs/tre/Manifest | 7 +- dev-libs/tre/files/0.8.0-pkgcfg.patch | 2 + dev-libs/tre/tre-0.8.0_p20210321-r1.ebuild | 115 - dev-libs/tre/tre-0.8.0_p20210321-r2.ebuild | 106 - dev-libs/tre/tre-0.8.0_p20210321-r3.ebuild | 109 - dev-libs/tre/tre-0.9.0-r1.ebuild | 103 + dev-libs/tree-sitter-bash/Manifest | 2 + .../tree-sitter-bash-0.23.3.ebuild | 15 + dev-libs/tree-sitter-c/Manifest | 8 + .../tree-sitter-c/tree-sitter-c-0.23.2.ebuild | 15 + .../tree-sitter-c/tree-sitter-c-0.23.3.ebuild | 15 + .../tree-sitter-c/tree-sitter-c-0.23.4.ebuild | 15 + .../tree-sitter-c/tree-sitter-c-0.23.5.ebuild | 15 + dev-libs/tree-sitter-css/Manifest | 2 + .../tree-sitter-css-0.23.2.ebuild | 19 + dev-libs/tree-sitter-go/Manifest | 2 + .../tree-sitter-go-0.23.4.ebuild | 13 + dev-libs/tree-sitter-html/Manifest | 2 + .../tree-sitter-html-0.23.2.ebuild | 15 + dev-libs/tree-sitter-javascript/Manifest | 2 + .../tree-sitter-javascript-0.23.1.ebuild | 15 + dev-libs/tree-sitter-json/Manifest | 2 + .../tree-sitter-json-0.24.8.ebuild | 15 + dev-libs/tree-sitter-python/Manifest | 2 + .../tree-sitter-python-0.23.6.ebuild | 15 + dev-libs/tree-sitter-rust/Manifest | 2 + .../tree-sitter-rust-0.23.2.ebuild | 15 + dev-libs/tree-sitter/Manifest | 4 +- .../tree-sitter/tree-sitter-0.24.3.ebuild | 4 +- .../tree-sitter/tree-sitter-0.25.1.ebuild | 50 + dev-lisp/Manifest.gz | Bin 3373 -> 3374 bytes dev-lisp/c2ffi/Manifest | 2 +- .../c2ffi/c2ffi-18.1.0.20240926-r1.ebuild | 31 + dev-lisp/c2ffi/c2ffi-18.1.0.20240926.ebuild | 22 - dev-ml/Manifest.gz | Bin 39794 -> 39788 bytes dev-ml/llvm/Manifest | 7 + dev-ml/llvm/llvm-20.1.0_rc2.ebuild | 107 + dev-ml/llvm/llvm-21.0.0_pre20250208.ebuild | 107 + dev-ml/llvm/llvm-21.0.0_pre20250211.ebuild | 107 + dev-ml/reason/Manifest | 2 + dev-ml/reason/reason-3.15.0.ebuild | 46 + .../Business-ISBN-Data-20250205.1.0.ebuild | 37 + dev-perl/Business-ISBN-Data/Manifest | 2 + .../Business-ISSN/Business-ISSN-1.8.0.ebuild | 36 + dev-perl/Business-ISSN/Manifest | 2 + .../Crypt-URandom-0.530.0.ebuild | 27 + dev-perl/Crypt-URandom/Manifest | 2 + dev-perl/CryptX/CryptX-0.85.0.ebuild | 51 + dev-perl/CryptX/Manifest | 3 + .../files/CryptX-0.85.0-respect-flags.patch | 23 + ...Glib-Object-Introspection-0.51.0-r1.ebuild | 38 + dev-perl/Glib-Object-Introspection/Manifest | 2 + ...ion-0.51.0-new-gobject-introspection.patch | 50 + .../IO-Interactive-1.26.0.ebuild | 25 + dev-perl/IO-Interactive/Manifest | 2 + dev-perl/MIME-Types/MIME-Types-2.270.0.ebuild | 22 + dev-perl/MIME-Types/Manifest | 2 + .../Mail-DMARC/Mail-DMARC-1.202.502.30.ebuild | 89 + dev-perl/Mail-DMARC/Manifest | 2 + dev-perl/Manifest.gz | Bin 288046 -> 288073 bytes dev-perl/Net-SSLeay/Manifest | 3 +- dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild | 4 +- ...Net-SSLeay-1.940.0-openssl-3.4-tests.patch | 29 + dev-perl/Perl-Version/Manifest | 2 + .../Perl-Version/Perl-Version-1.18.0.ebuild | 32 + dev-perl/Sys-Virt/Manifest | 4 +- dev-perl/Sys-Virt/Sys-Virt-10.9.0.ebuild | 4 +- dev-perl/Sys-Virt/Sys-Virt-11.0.0.ebuild | 40 + dev-perl/Text-CSV_XS/Manifest | 2 + .../Text-CSV_XS/Text-CSV_XS-1.600.0.ebuild | 30 + dev-perl/XS-Parse-Sublike/Manifest | 2 + .../XS-Parse-Sublike-0.370.0.ebuild | 25 + dev-perl/YAML-LibYAML/Manifest | 2 + .../YAML-LibYAML/YAML-LibYAML-0.903.0.ebuild | 14 + dev-php/Manifest.gz | Bin 19145 -> 19146 bytes dev-php/pecl-ssh2/Manifest | 4 +- dev-php/pecl-ssh2/pecl-ssh2-1.4.1-r1.ebuild | 19 + dev-php/pecl-ssh2/pecl-ssh2-1.4.1.ebuild | 19 - dev-php/pecl-ssh2/pecl-ssh2-9999.ebuild | 4 +- dev-php/pecl-stomp/Manifest | 2 +- dev-php/pecl-stomp/pecl-stomp-2.0.3-r1.ebuild | 28 - dev-php/pecl-stomp/pecl-stomp-2.0.3-r2.ebuild | 28 + dev-python/Manifest.gz | Bin 274589 -> 274677 bytes dev-python/aiohappyeyeballs/Manifest | 2 + .../aiohappyeyeballs-2.4.6.ebuild | 36 + dev-python/aioresponses/Manifest | 4 +- .../aioresponses/aioresponses-0.7.7.ebuild | 39 - .../aioresponses/aioresponses-0.7.8.ebuild | 2 +- dev-python/aiounittest/Manifest | 2 + .../aiounittest/aiounittest-1.4.3.ebuild | 29 + dev-python/alembic/Manifest | 4 +- dev-python/alembic/alembic-1.14.0.ebuild | 47 - dev-python/alembic/alembic-1.14.1.ebuild | 2 +- dev-python/apsw/Manifest | 2 + dev-python/apsw/apsw-3.49.0.0.ebuild | 52 + dev-python/atpublic/Manifest | 6 +- dev-python/atpublic/atpublic-4.1.0.ebuild | 32 - dev-python/atpublic/atpublic-5.0.ebuild | 27 - dev-python/atpublic/atpublic-5.1.ebuild | 2 +- dev-python/bincopy/Manifest | 4 +- dev-python/bincopy/bincopy-20.0.0.ebuild | 27 - dev-python/bincopy/bincopy-20.1.0.ebuild | 2 +- dev-python/boto3/Manifest | 22 +- ...o3-1.36.12.ebuild => boto3-1.36.16.ebuild} | 0 ...o3-1.36.13.ebuild => boto3-1.36.17.ebuild} | 0 ...o3-1.36.14.ebuild => boto3-1.36.18.ebuild} | 0 ...o3-1.36.15.ebuild => boto3-1.36.19.ebuild} | 0 dev-python/boto3/boto3-1.36.2.ebuild | 53 - dev-python/boto3/boto3-1.36.20.ebuild | 53 + dev-python/boto3/boto3-1.36.6.ebuild | 2 +- dev-python/botocore/Manifest | 22 +- ...1.36.12.ebuild => botocore-1.36.16.ebuild} | 0 ...1.36.13.ebuild => botocore-1.36.17.ebuild} | 0 ...1.36.14.ebuild => botocore-1.36.18.ebuild} | 0 ...1.36.15.ebuild => botocore-1.36.19.ebuild} | 0 dev-python/botocore/botocore-1.36.2.ebuild | 67 - dev-python/botocore/botocore-1.36.20.ebuild | 67 + dev-python/botocore/botocore-1.36.6.ebuild | 2 +- dev-python/cachetools/Manifest | 4 +- dev-python/cachetools/cachetools-5.5.0.ebuild | 21 - dev-python/cachetools/cachetools-5.5.1.ebuild | 2 +- dev-python/cfn-lint/Manifest | 6 +- dev-python/cfn-lint/cfn-lint-1.22.3.ebuild | 70 - dev-python/cfn-lint/cfn-lint-1.22.7.ebuild | 2 +- dev-python/cfn-lint/cfn-lint-1.25.1.ebuild | 70 + dev-python/clang/Manifest | 7 + dev-python/clang/clang-20.1.0_rc2.ebuild | 53 + .../clang/clang-21.0.0_pre20250208.ebuild | 53 + .../clang/clang-21.0.0_pre20250211.ebuild | 53 + dev-python/coverage/Manifest | 4 + dev-python/coverage/coverage-7.6.11.ebuild | 111 + dev-python/coverage/coverage-7.6.12.ebuild | 111 + dev-python/cppy/Manifest | 2 + dev-python/cppy/cppy-1.3.1.ebuild | 28 + dev-python/cramjam/Manifest | 2 +- dev-python/cramjam/cramjam-2.9.1.ebuild | 2 +- dev-python/cryptography/Manifest | 8 + .../cryptography/cryptography-44.0.1.ebuild | 135 + dev-python/cwcwidth/Manifest | 2 + dev-python/cwcwidth/cwcwidth-0.1.10.ebuild | 35 + dev-python/cython/Manifest | 2 + dev-python/cython/cython-3.0.12.ebuild | 84 + dev-python/dependency-groups/Manifest | 3 + .../dependency-groups-1.3.0.ebuild | 28 + dev-python/dependency-groups/metadata.xml | 12 + dev-python/deprecated/Manifest | 4 +- .../deprecated/deprecated-1.2.15.ebuild | 26 - .../deprecated/deprecated-1.2.17.ebuild | 2 +- dev-python/elasticsearch/Manifest | 4 +- .../elasticsearch/elasticsearch-8.17.0.ebuild | 76 - .../elasticsearch/elasticsearch-8.17.1.ebuild | 2 +- dev-python/ensurepip-pip/Manifest | 2 + .../ensurepip-pip/ensurepip-pip-25.0.1.ebuild | 20 + dev-python/environs/Manifest | 8 +- dev-python/environs/environs-11.2.1.ebuild | 39 - dev-python/environs/environs-12.0.0.ebuild | 39 - dev-python/environs/environs-14.0.0.ebuild | 42 - dev-python/environs/environs-14.1.1.ebuild | 45 + dev-python/evdev/Manifest | 2 + dev-python/evdev/evdev-1.9.0.ebuild | 44 + dev-python/executing/Manifest | 2 +- dev-python/executing/executing-2.2.0.ebuild | 2 +- dev-python/faker/Manifest | 10 +- dev-python/faker/faker-33.3.1.ebuild | 43 - dev-python/faker/faker-35.0.0.ebuild | 2 +- dev-python/faker/faker-35.2.2.ebuild | 43 + dev-python/faker/faker-36.1.0.ebuild | 42 + dev-python/faker/faker-36.1.1.ebuild | 42 + dev-python/fakeredis/Manifest | 2 + dev-python/fakeredis/fakeredis-2.27.0.ebuild | 99 + dev-python/filelock/Manifest | 4 +- dev-python/filelock/filelock-3.16.1.ebuild | 31 - dev-python/filelock/filelock-3.17.0.ebuild | 2 +- dev-python/fixtures/Manifest | 4 + dev-python/fixtures/fixtures-4.2.3.ebuild | 28 + dev-python/fixtures/fixtures-4.2.4_p1.ebuild | 28 + dev-python/flatbuffers/Manifest | 8 +- .../flatbuffers/flatbuffers-24.12.23.ebuild | 46 - .../flatbuffers/flatbuffers-25.1.24.ebuild | 2 +- ...1.21.ebuild => flatbuffers-25.2.10.ebuild} | 0 dev-python/fonttools/Manifest | 4 +- dev-python/fonttools/fonttools-4.55.6.ebuild | 2 +- dev-python/fonttools/fonttools-4.56.0.ebuild | 99 + dev-python/fpylll/Manifest | 4 +- dev-python/fpylll/fpylll-0.6.2.ebuild | 41 - dev-python/fpylll/fpylll-0.6.3.ebuild | 2 +- dev-python/gdb-pt-dump/Manifest | 4 +- .../gdb-pt-dump-0.0.0_p20250105.ebuild | 31 + .../gdb-pt-dump/gdb-pt-dump-9999.ebuild | 4 +- dev-python/google-api-python-client/Manifest | 2 + .../google-api-python-client-2.161.0.ebuild | 50 + dev-python/google-auth/Manifest | 4 +- .../google-auth/google-auth-2.37.0.ebuild | 65 - .../google-auth/google-auth-2.38.0.ebuild | 2 +- dev-python/googleapis-common-protos/Manifest | 2 + .../googleapis-common-protos-1.67.0.ebuild | 31 + dev-python/griffe/Manifest | 4 +- dev-python/griffe/griffe-1.5.5.ebuild | 49 - dev-python/griffe/griffe-1.5.7.ebuild | 49 + dev-python/grpcio/Manifest | 2 +- dev-python/grpcio/grpcio-1.68.1.ebuild | 2 +- dev-python/gst-python/Manifest | 2 +- .../gst-python/gst-python-1.24.11.ebuild | 2 +- dev-python/hpack/Manifest | 4 +- dev-python/hpack/hpack-4.0.0-r1.ebuild | 35 - dev-python/hpack/hpack-4.1.0.ebuild | 2 +- dev-python/hyperframe/Manifest | 4 +- .../hyperframe/hyperframe-6.0.1-r1.ebuild | 22 - dev-python/hyperframe/hyperframe-6.1.0.ebuild | 2 +- dev-python/hypothesis/Manifest | 12 +- .../hypothesis/hypothesis-6.123.17.ebuild | 104 - .../hypothesis/hypothesis-6.124.3.ebuild | 2 +- .../hypothesis/hypothesis-6.124.7.ebuild | 104 - .../hypothesis/hypothesis-6.125.0.ebuild | 104 - .../hypothesis/hypothesis-6.125.1.ebuild | 104 - .../hypothesis/hypothesis-6.125.3.ebuild | 110 + dev-python/icalendar/Manifest | 4 +- dev-python/icalendar/icalendar-6.1.0.ebuild | 43 - dev-python/icalendar/icalendar-6.1.1.ebuild | 2 +- dev-python/id/Manifest | 2 +- dev-python/id/id-1.5.0.ebuild | 2 +- dev-python/identify/Manifest | 6 +- dev-python/identify/identify-2.6.5.ebuild | 29 - dev-python/identify/identify-2.6.6.ebuild | 2 +- dev-python/identify/identify-2.6.7.ebuild | 29 + dev-python/importlib-metadata/Manifest | 4 +- .../importlib-metadata-8.5.0.ebuild | 51 - .../importlib-metadata-8.6.1.ebuild | 2 +- dev-python/inline-snapshot/Manifest | 2 + .../inline-snapshot-0.20.2.ebuild | 63 + dev-python/josepy/Manifest | 6 +- dev-python/josepy/josepy-1.14.0.ebuild | 33 - dev-python/josepy/josepy-1.15.0.ebuild | 2 +- dev-python/josepy/josepy-2.0.0.ebuild | 32 + dev-python/jsonschema-path/Manifest | 4 +- .../jsonschema-path-0.3.3.ebuild | 47 - .../jsonschema-path-0.3.4.ebuild | 2 +- dev-python/legacy-cgi/Manifest | 2 +- dev-python/legacy-cgi/legacy-cgi-2.6.2.ebuild | 2 +- dev-python/libvirt-python/Manifest | 14 +- .../libvirt-python-10.1.0.ebuild | 64 - .../libvirt-python-10.10.0.ebuild | 4 +- .../libvirt-python-11.0.0.ebuild | 64 + .../libvirt-python-9.8.0.ebuild | 65 - .../libvirt-python-9.9.0.ebuild | 65 - dev-python/lit/Manifest | 7 + dev-python/lit/lit-20.1.0_rc2.ebuild | 45 + dev-python/lit/lit-21.0.0_pre20250208.ebuild | 45 + dev-python/lit/lit-21.0.0_pre20250211.ebuild | 45 + dev-python/lxml/Manifest | 2 + dev-python/lxml/lxml-5.3.1.ebuild | 119 + dev-python/markdown2/Manifest | 4 +- dev-python/markdown2/markdown2-2.5.2.ebuild | 31 - dev-python/markdown2/markdown2-2.5.3.ebuild | 2 +- dev-python/mcbootflash/Manifest | 6 +- .../mcbootflash/mcbootflash-10.0.0-r1.ebuild | 37 - .../mcbootflash/mcbootflash-10.1.0.ebuild | 37 - .../mcbootflash/mcbootflash-10.1.1.ebuild | 2 +- dev-python/mkdocs-autorefs/Manifest | 4 +- .../mkdocs-autorefs-1.2.0.ebuild | 34 - .../mkdocs-autorefs-1.3.1.ebuild | 34 + dev-python/mkdocs-material/Manifest | 4 + .../mkdocs-material-9.6.3.ebuild | 67 + .../mkdocs-material-9.6.4.ebuild | 67 + dev-python/mkdocs-static-i18n/Manifest | 4 +- .../mkdocs-static-i18n-1.2.3.ebuild | 32 - .../mkdocs-static-i18n-1.3.0.ebuild | 2 +- dev-python/mkdocstrings-python/Manifest | 14 +- .../mkdocstrings-python-1.13.0.ebuild | 48 - ...uild => mkdocstrings-python-1.14.6.ebuild} | 0 ...uild => mkdocstrings-python-1.14.7.ebuild} | 0 ...uild => mkdocstrings-python-1.15.0.ebuild} | 0 dev-python/moto/Manifest | 4 +- dev-python/moto/moto-5.0.26.ebuild | 132 - dev-python/moto/moto-5.0.27.ebuild | 2 +- dev-python/mpmath/Manifest | 2 +- dev-python/mpmath/mpmath-1.4.0_alpha3.ebuild | 2 +- dev-python/myst-parser/Manifest | 2 + .../myst-parser/myst-parser-4.0.1.ebuild | 63 + dev-python/nox/Manifest | 4 +- dev-python/nox/nox-2024.04.15.ebuild | 67 - dev-python/nox/nox-2025.02.09.ebuild | 73 + dev-python/nuitka/Manifest | 2 + dev-python/nuitka/nuitka-2.6.5.ebuild | 55 + dev-python/numpy/Manifest | 8 +- dev-python/numpy/numpy-2.2.0.ebuild | 194 - dev-python/numpy/numpy-2.2.1.ebuild | 191 - dev-python/numpy/numpy-2.2.2.ebuild | 2 +- dev-python/numpy/numpy-2.2.3.ebuild | 192 + dev-python/orjson/Manifest | 2 +- dev-python/orjson/orjson-3.10.15.ebuild | 2 +- dev-python/oslo-utils/Manifest | 2 + dev-python/oslo-utils/oslo-utils-8.1.0.ebuild | 67 + dev-python/owslib/Manifest | 4 +- dev-python/owslib/owslib-0.32.0.ebuild | 51 - dev-python/owslib/owslib-0.32.1.ebuild | 2 +- dev-python/pbs-installer/Manifest | 4 +- ...ebuild => pbs-installer-2025.02.12.ebuild} | 0 dev-python/pikepdf/Manifest | 2 + dev-python/pikepdf/pikepdf-9.5.2.ebuild | 74 + dev-python/pip/Manifest | 2 + dev-python/pip/pip-25.0.1.ebuild | 170 + dev-python/prettytable/Manifest | 4 +- .../prettytable/prettytable-3.12.0.ebuild | 39 - .../prettytable/prettytable-3.13.0.ebuild | 2 +- dev-python/prompt-toolkit/Manifest | 4 +- .../prompt-toolkit-3.0.48.ebuild | 30 - .../prompt-toolkit-3.0.50.ebuild | 2 +- dev-python/psutil/Manifest | 2 + dev-python/psutil/psutil-7.0.0.ebuild | 91 + dev-python/pyarrow/Manifest | 6 +- dev-python/pyarrow/pyarrow-18.0.0.ebuild | 111 - dev-python/pyarrow/pyarrow-18.1.0.ebuild | 112 - dev-python/pyarrow/pyarrow-19.0.0.ebuild | 2 +- dev-python/pycpio/Manifest | 4 +- dev-python/pycpio/pycpio-1.4.1.ebuild | 30 - dev-python/pycpio/pycpio-1.4.2.ebuild | 2 +- dev-python/pydantic-core/Manifest | 7 +- .../pydantic-core/pydantic-core-2.28.0.ebuild | 168 - .../pydantic-core/pydantic-core-2.29.0.ebuild | 168 + dev-python/pydantic/Manifest | 8 +- dev-python/pydantic/pydantic-2.10.5.ebuild | 65 - dev-python/pydantic/pydantic-2.10.6.ebuild | 2 +- .../pydantic/pydantic-2.11.0_alpha1.ebuild | 65 - .../pydantic/pydantic-2.11.0_alpha2.ebuild | 65 + dev-python/pyfzf/Manifest | 2 +- dev-python/pyfzf/pyfzf-0.3.1.ebuild | 2 +- dev-python/pyghmi/Manifest | 2 + dev-python/pyghmi/pyghmi-1.5.76.ebuild | 33 + dev-python/pyglet/Manifest | 4 +- dev-python/pyglet/pyglet-2.0.21.ebuild | 79 - dev-python/pyglet/pyglet-2.1.2.ebuild | 2 +- dev-python/pymediainfo/Manifest | 4 + .../pymediainfo/pymediainfo-7.0.0.ebuild | 34 + .../pymediainfo/pymediainfo-7.0.1.ebuild | 34 + dev-python/pymongo/Manifest | 8 +- dev-python/pymongo/pymongo-4.10.0.ebuild | 228 - dev-python/pymongo/pymongo-4.11.1.ebuild | 237 + dev-python/pymongo/pymongo-4.9.1.ebuild | 228 - dev-python/pymongo/pymongo-4.9.2.ebuild | 228 - dev-python/pyopengl-accelerate/Manifest | 4 +- .../pyopengl-accelerate-3.1.8-r1.ebuild | 81 - .../pyopengl-accelerate-3.1.9.ebuild | 2 +- dev-python/pyopengl/Manifest | 2 +- dev-python/pyopengl/pyopengl-3.1.9.ebuild | 2 +- dev-python/pypdf/Manifest | 2 + dev-python/pypdf/pypdf-5.3.0.ebuild | 56 + dev-python/pyphen/Manifest | 4 +- dev-python/pyphen/pyphen-0.17.0.ebuild | 25 - dev-python/pyphen/pyphen-0.17.2.ebuild | 2 +- dev-python/pyproject-api/Manifest | 4 +- .../pyproject-api/pyproject-api-1.8.0.ebuild | 43 - .../pyproject-api/pyproject-api-1.9.0.ebuild | 2 +- dev-python/pypy-exe/Manifest | 4 +- dev-python/pypy-exe/pypy-exe-7.3.18.ebuild | 2 +- dev-python/pypy3/Manifest | 1 + dev-python/pypy3/pypy3-7.3.18-r100.ebuild | 18 + dev-python/pypy3_10-exe/Manifest | 4 +- .../pypy3_10-exe/pypy3_10-exe-7.3.18.ebuild | 2 +- dev-python/pyqt5/Manifest | 4 +- dev-python/pyqt5/metadata.xml | 3 - dev-python/pyqt5/pyqt5-5.15.11.ebuild | 18 +- dev-python/pysol-cards/Manifest | 2 + .../pysol-cards/pysol-cards-0.18.1.ebuild | 25 + dev-python/pytest-aiohttp/Manifest | 4 +- .../pytest-aiohttp-1.0.5.ebuild | 37 - .../pytest-aiohttp-1.1.0.ebuild | 2 +- dev-python/pytest-check/Manifest | 4 + .../pytest-check/pytest-check-2.4.2.ebuild | 26 + .../pytest-check/pytest-check-2.5.0.ebuild | 28 + dev-python/pytest-datadir/Manifest | 2 + .../pytest-datadir-1.6.1.ebuild | 28 + dev-python/pytest-django/Manifest | 2 + .../pytest-django/pytest-django-4.10.0.ebuild | 51 + dev-python/pytest-httpserver/Manifest | 4 +- .../pytest-httpserver-1.1.0.ebuild | 39 - .../pytest-httpserver-1.1.1.ebuild | 2 +- dev-python/python-lsp-server/Manifest | 2 + .../python-lsp-server-1.12.2.ebuild | 90 + dev-python/qtpy/Manifest | 6 +- dev-python/qtpy/metadata.xml | 1 + dev-python/qtpy/qtpy-2.4.2.ebuild | 8 +- dev-python/qtpy/qtpy-2.4.3.ebuild | 184 + dev-python/recurring-ical-events/Manifest | 14 +- .../recurring-ical-events-3.3.3.ebuild | 45 - .../recurring-ical-events-3.3.4.ebuild | 45 - .../recurring-ical-events-3.4.0.ebuild | 45 - ...ild => recurring-ical-events-3.5.0.ebuild} | 0 .../recurring-ical-events-3.5.1.ebuild | 40 + .../recurring-ical-events-3.5.2.ebuild | 40 + dev-python/reportlab/Manifest | 2 + dev-python/reportlab/reportlab-4.3.1.ebuild | 53 + dev-python/scipy/Manifest | 2 +- dev-python/scipy/scipy-1.15.1.ebuild | 2 +- dev-python/selenium/Manifest | 2 +- dev-python/selenium/selenium-4.28.1.ebuild | 2 +- dev-python/semver/Manifest | 4 +- dev-python/semver/semver-3.0.2.ebuild | 29 - dev-python/semver/semver-3.0.4.ebuild | 2 +- dev-python/sphinx-autoapi/Manifest | 2 + .../sphinx-autoapi-3.5.0.ebuild | 51 + dev-python/sphinx-gallery/Manifest | 2 + .../sphinx-gallery-0.19.0.ebuild | 51 + dev-python/sphinxygen/Manifest | 4 +- .../sphinxygen/sphinxygen-1.0.10.ebuild | 2 +- dev-python/sphinxygen/sphinxygen-1.0.6.ebuild | 35 - dev-python/sqlglot/Manifest | 2 + dev-python/sqlglot/sqlglot-26.6.0.ebuild | 177 + dev-python/sshtunnel/Manifest | 2 +- dev-python/sshtunnel/sshtunnel-0.4.0.ebuild | 4 +- dev-python/starlette/Manifest | 4 +- dev-python/starlette/starlette-0.44.0.ebuild | 57 - dev-python/starlette/starlette-0.45.3.ebuild | 2 +- dev-python/tox/Manifest | 4 +- dev-python/tox/tox-4.23.2.ebuild | 98 - dev-python/tox/tox-4.24.1.ebuild | 2 +- dev-python/translate-toolkit/Manifest | 2 + .../translate-toolkit-3.14.8.ebuild | 119 + dev-python/tree-sitter/Manifest | 4 +- .../tree-sitter/tree-sitter-0.23.1.ebuild | 4 +- .../tree-sitter/tree-sitter-0.24.0.ebuild | 66 + dev-python/trimesh/Manifest | 2 + dev-python/trimesh/trimesh-4.6.2.ebuild | 80 + dev-python/truststore/Manifest | 2 + .../truststore/truststore-0.10.1.ebuild | 47 + dev-python/twine/Manifest | 2 +- dev-python/twine/twine-6.1.0.ebuild | 2 +- dev-python/types-setuptools/Manifest | 4 +- .../types-setuptools-75.6.0.20241223.ebuild | 16 - .../types-setuptools-75.8.0.20250210.ebuild | 16 + dev-python/tzlocal/Manifest | 2 + dev-python/tzlocal/tzlocal-5.3.ebuild | 32 + dev-python/virtualenv/Manifest | 2 + .../virtualenv/virtualenv-20.29.2.ebuild | 118 + dev-python/virtualenvwrapper/Manifest | 2 + .../virtualenvwrapper-6.1.1.ebuild | 98 + dev-python/websockets/Manifest | 2 +- dev-python/websockets/websockets-14.2.ebuild | 2 +- dev-python/xlsxwriter/Manifest | 4 +- dev-python/xlsxwriter/xlsxwriter-3.2.0.ebuild | 33 - dev-python/xlsxwriter/xlsxwriter-3.2.1.ebuild | 2 +- dev-python/zeroconf/Manifest | 4 + dev-python/zeroconf/zeroconf-0.143.1.ebuild | 60 + dev-python/zeroconf/zeroconf-0.144.1.ebuild | 60 + dev-qt/Manifest.gz | Bin 11908 -> 11738 bytes dev-qt/qt-creator/Manifest | 2 +- dev-qt/qt-creator/qt-creator-15.0.1.ebuild | 2 +- dev-qt/qtstyleplugins/Manifest | 4 - .../files/fix-build-qt5.15.patch | 47 - dev-qt/qtstyleplugins/metadata.xml | 11 - .../qtstyleplugins-5.0.0_p20170311-r1.ebuild | 46 - dev-qt/qtwebengine/Manifest | 3 +- .../files/qtwebengine-6.8.2-glibc2.41.patch | 22 + .../qtwebengine/qtwebengine-6.8.2-r1.ebuild | 336 + dev-qt/qtwebengine/qtwebengine-6.8.2.ebuild | 335 - dev-ruby/Manifest.gz | Bin 112159 -> 112002 bytes dev-ruby/activesupport/Manifest | 2 +- .../activesupport-6.1.7.10.ebuild | 4 +- dev-ruby/dust/Manifest | 3 - dev-ruby/dust/dust-0.1.7-r3.ebuild | 30 - dev-ruby/dust/metadata.xml | 8 - dev-ruby/fakefs/Manifest | 4 +- dev-ruby/fakefs/fakefs-2.7.1.ebuild | 4 +- dev-ruby/fakefs/fakefs-3.0.0.ebuild | 52 + dev-ruby/http-cookie/Manifest | 2 +- dev-ruby/http-cookie/http-cookie-1.0.7.ebuild | 4 +- dev-ruby/io-event/Manifest | 2 +- dev-ruby/io-event/io-event-1.6.5-r1.ebuild | 4 +- dev-ruby/mysql2/Manifest | 2 +- dev-ruby/mysql2/mysql2-0.5.6.ebuild | 4 +- dev-ruby/net-imap/Manifest | 10 +- dev-ruby/net-imap/net-imap-0.4.18.ebuild | 39 - dev-ruby/net-imap/net-imap-0.4.19.ebuild | 39 + dev-ruby/net-imap/net-imap-0.5.3.ebuild | 42 - dev-ruby/net-imap/net-imap-0.5.4.ebuild | 42 - dev-ruby/net-imap/net-imap-0.5.6.ebuild | 42 + dev-ruby/nokogiri/Manifest | 2 +- dev-ruby/nokogiri/nokogiri-1.16.8.ebuild | 2 +- dev-ruby/ox/Manifest | 2 + dev-ruby/ox/ox-2.14.22.ebuild | 28 + dev-ruby/rack/Manifest | 12 +- dev-ruby/rack/rack-2.2.10.ebuild | 2 +- dev-ruby/rack/rack-2.2.11.ebuild | 57 + dev-ruby/rack/rack-3.0.10.ebuild | 2 +- dev-ruby/rack/rack-3.0.12.ebuild | 45 + dev-ruby/rack/rack-3.1.10.ebuild | 49 + dev-ruby/rack/rack-3.1.8.ebuild | 2 +- dev-ruby/rdoc/Manifest | 2 +- dev-ruby/rdoc/rdoc-6.8.1.ebuild | 4 +- dev-ruby/sshkit/Manifest | 8 +- dev-ruby/sshkit/sshkit-1.22.2.ebuild | 44 - dev-ruby/sshkit/sshkit-1.23.0.ebuild | 45 - dev-ruby/sshkit/sshkit-1.23.2.ebuild | 4 +- dev-ruby/sshkit/sshkit-1.24.0.ebuild | 47 + dev-ruby/timers/Manifest | 2 + dev-ruby/timers/timers-4.4.0.ebuild | 31 + dev-ruby/webmock/Manifest | 6 +- dev-ruby/webmock/webmock-3.23.0.ebuild | 67 - dev-ruby/webmock/webmock-3.23.1.ebuild | 67 - dev-ruby/webmock/webmock-3.25.0.ebuild | 71 + dev-tcltk/Manifest.gz | Bin 5482 -> 5478 bytes dev-tcltk/bwidget/Manifest | 2 +- dev-tcltk/bwidget/bwidget-1.9.16.ebuild | 4 +- dev-tcltk/itk/Manifest | 2 +- dev-tcltk/itk/itk-4.2.3-r1.ebuild | 76 - dev-tcltk/itk/itk-4.2.3-r2.ebuild | 76 + dev-tcltk/tcl3d/Manifest | 2 +- dev-tcltk/tcl3d/tcl3d-0.9.5.ebuild | 4 +- dev-tcltk/tclx/Manifest | 2 +- dev-tcltk/tclx/tclx-8.6.3.ebuild | 4 +- dev-tcltk/thread/Manifest | 2 +- dev-tcltk/thread/thread-2.8.9.ebuild | 4 +- dev-tcltk/tkdnd/Manifest | 2 +- dev-tcltk/tkdnd/tkdnd-2.9.4-r1.ebuild | 4 +- dev-tcltk/tkimg/Manifest | 2 +- dev-tcltk/tkimg/tkimg-1.4.16.ebuild | 4 +- dev-util/Manifest.gz | Bin 65127 -> 65135 bytes dev-util/Tensile/Manifest | 14 +- dev-util/Tensile/Tensile-5.1.3-r3.ebuild | 88 - dev-util/Tensile/Tensile-5.4.2-r2.ebuild | 119 - dev-util/Tensile/Tensile-6.3.2.ebuild | 140 + .../files/Tensile-5.0.2-fix-arch-parse.patch | 12 - .../Tensile/files/Tensile-5.0.2-gfx1031.patch | 104 - .../files/Tensile-5.0.2-use-ninja.patch | 21 - .../files/Tensile-5.1.3-gentoopath.patch | 75 - .../files/Tensile-5.4.2-gentoopath.patch | 67 - .../Tensile/files/Tensile-5.4.2-gfx1031.patch | 88 - ...cmake-name-for-msgpack-cxx-6-release.patch | 13 - dev-util/azuredatastudio/Manifest | 4 +- .../azuredatastudio-1.50.0-r1.ebuild | 112 + .../azuredatastudio-1.50.0.ebuild | 107 - .../azuredatastudio-1.51.1.ebuild | 112 + dev-util/bear/Manifest | 2 - dev-util/bear/bear-3.1.4-r2.ebuild | 115 - dev-util/cargo-nextest/Manifest | 465 +- .../cargo-nextest-0.9.67-r1.ebuild | 411 - .../cargo-nextest-0.9.72-r1.ebuild | 402 - .../cargo-nextest/cargo-nextest-0.9.88.ebuild | 456 + dev-util/clion/Manifest | 2 +- dev-util/clion/metadata.xml | 4 - dev-util/cutter/Manifest | 3 +- dev-util/cutter/cutter-2.3.4-r2.ebuild | 2 +- dev-util/cutter/cutter-2.3.4.ebuild | 63 - dev-util/diffoscope/Manifest | 2 + dev-util/diffoscope/diffoscope-288.ebuild | 140 + dev-util/difftastic/Manifest | 77 + dev-util/difftastic/difftastic-0.63.0.ebuild | 227 + dev-util/fq/Manifest | 15 +- dev-util/fq/fq-0.10.0.ebuild | 40 - dev-util/fq/fq-0.11.0.ebuild | 40 - dev-util/fq/fq-0.12.0.ebuild | 40 - dev-util/fq/fq-0.14.0.ebuild | 40 + dev-util/fq/fq-0.9.0.ebuild | 40 - dev-util/fuzz/Manifest | 3 +- dev-util/fuzz/files/fuzz-0.6-musl.patch | 34 + dev-util/fuzz/fuzz-0.6-r3.ebuild | 36 - dev-util/fuzz/fuzz-0.6-r4.ebuild | 39 + dev-util/github-cli/Manifest | 6 +- dev-util/github-cli/github-cli-2.52.0.ebuild | 60 - dev-util/github-cli/github-cli-2.66.1.ebuild | 44 + dev-util/hip/Manifest | 59 +- .../hip-4.2.0-cancel-hcc-header-removal.patch | 18 - .../hip/files/hip-4.2.0-config-cmake-in.patch | 15 - .../hip/files/hip-5.0.1-DisableTest.patch | 32 - .../files/hip-5.0.1-hip_vector_types.patch | 11 - .../hip/files/hip-5.0.2-correct-ldflag.patch | 18 - .../hip/files/hip-5.0.2-set-build-id.patch | 20 - ...SWDEV-316128-HIP-surface-API-support.patch | 35 - .../files/hip-5.1.3-clang-include-path.patch | 12 - ....1.3-correct-sample-install-location.patch | 13 - .../files/hip-5.1.3-fix-hip_prof_gen.patch | 38 - .../files/hip-5.1.3-fno-stack-protector.patch | 16 - .../hip-5.1.3-llvm-15-noinline-keyword.patch | 21 - ...-5.1.3-remove-cmake-doxygen-commands.patch | 21 - dev-util/hip/files/hip-5.1.3-rocm-path.patch | 13 - ...M-pkg-search-directly-using-find_dep.patch | 163 - ...cc-fails-to-parse-version-of-clang-i.patch | 70 - ...55608-Remove-clang-include-path-2996.patch | 51 - ...oved-relative-path-based-CLANG-inclu.patch | 173 - .../hip/files/hip-5.3.3-correct-ldflag.patch | 20 - .../hip/files/hip-5.3.3-disable-Werror.patch | 16 - ...-5.3.3-remove-cmake-doxygen-commands.patch | 21 - .../hip/files/hip-5.4.3-clang-include.patch | 30 - .../hip/files/hip-5.4.3-clang-version.patch | 70 - .../hip/files/hip-5.4.3-correct-ldflag.patch | 20 - ...p-5.4.3-fix-HIP_CLANG_PATH-detection.patch | 26 - .../hip/files/hip-5.5.1-disable-Werror.patch | 18 - dev-util/hip/files/hipvars-5.1.3.pm | 21 - dev-util/hip/files/hipvars-5.3.3.pm | 20 - dev-util/hip/files/hipvars.pm | 20 - .../hip/files/rocclr-5.3.3-fix-include.patch | 218 - dev-util/hip/files/rocclr-5.3.3-gcc13.patch | 27 - dev-util/hip/hip-5.1.3-r4.ebuild | 177 - dev-util/hip/hip-5.3.3-r3.ebuild | 154 - dev-util/hip/hip-5.4.3.ebuild | 152 - dev-util/hip/hip-5.5.1.ebuild | 152 - dev-util/hip/hip-5.7.1-r2.ebuild | 5 +- dev-util/hip/hip-6.3.2.ebuild | 255 + dev-util/hipcc/Manifest | 2 + dev-util/hipcc/hipcc-6.3.2.ebuild | 85 + dev-util/hipify-clang/Manifest | 2 + .../hipify-clang/hipify-clang-6.3.2.ebuild | 58 + dev-util/hyprwayland-scanner/Manifest | 4 +- .../hyprwayland-scanner-0.4.0.ebuild | 37 - .../hyprwayland-scanner-0.4.4.ebuild | 37 + dev-util/idea-community/Manifest | 6 +- .../idea-community-2024.3.2.2.ebuild | 180 - .../idea-community-2024.3.3.ebuild | 180 + dev-util/imediff/Manifest | 2 + dev-util/imediff/imediff-3.4.0.ebuild | 35 + dev-util/kdevelop-php/Manifest | 2 - .../kdevelop-php/kdevelop-php-24.12.1.ebuild | 51 - dev-util/kdevelop-python/Manifest | 2 - .../kdevelop-python-24.12.1.ebuild | 48 - dev-util/kdevelop/Manifest | 2 - dev-util/kdevelop/kdevelop-24.12.1.ebuild | 122 - dev-util/kio-perldoc/Manifest | 2 - .../kio-perldoc/kio-perldoc-24.12.1.ebuild | 23 - dev-util/librnp/Manifest | 1 - dev-util/librnp/librnp-0.17.1-r1.ebuild | 85 - dev-util/massif-visualizer/Manifest | 2 - .../massif-visualizer-24.12.1.ebuild | 43 - dev-util/mesa_clc/Manifest | 2 + dev-util/mesa_clc/mesa_clc-25.0.0_rc3.ebuild | 95 + dev-util/nvidia-cuda-toolkit/Manifest | 3 +- .../nvidia-cuda-toolkit-glibc-2.41.patch | 72 + .../nvidia-cuda-toolkit-12.6.1-r1.ebuild | 333 + .../nvidia-cuda-toolkit-12.6.1.ebuild | 328 - dev-util/pkgcheck/Manifest | 2 +- dev-util/pkgcheck/pkgcheck-0.10.33-r1.ebuild | 93 + dev-util/pkgcheck/pkgcheck-0.10.33.ebuild | 93 - dev-util/pkgdiff/Manifest | 2 +- dev-util/pkgdiff/pkgdiff-1.8.ebuild | 2 +- dev-util/rgbds/Manifest | 4 +- dev-util/rgbds/rgbds-0.9.1.ebuild | 50 + dev-util/rgbds/rgbds-9999.ebuild | 4 +- dev-util/rizin/Manifest | 3 - dev-util/rizin/rizin-0.7.3-r2.ebuild | 101 - dev-util/rocm-smi/Manifest | 6 +- .../files/rocm-smi-5.0.2-gcc12-memcpy.patch | 19 - dev-util/rocm-smi/rocm-smi-5.4.2-r1.ebuild | 58 - dev-util/rocm-smi/rocm-smi-5.7.1-r2.ebuild | 60 - dev-util/rocm-smi/rocm-smi-6.3.2.ebuild | 60 + dev-util/rocm_bandwidth_test/Manifest | 6 +- .../rocm_bandwidth_test-5.3.3.ebuild | 26 - .../rocm_bandwidth_test-5.4.3.ebuild | 26 - .../rocm_bandwidth_test-6.3.2.ebuild | 18 + dev-util/rocminfo/Manifest | 2 + dev-util/rocminfo/rocminfo-6.3.2.ebuild | 48 + dev-util/rocprofiler/Manifest | 5 +- .../rocprofiler-5.0.2-gentoo-location.patch | 59 - .../rocprofiler/rocprofiler-5.1.3-r1.ebuild | 60 - .../rocprofiler/rocprofiler-5.3.3-r1.ebuild | 9 +- dev-util/roctracer/Manifest | 16 +- .../files/roctracer-4.3.0-glibc-2.34.patch | 35 - .../files/roctracer-5.0.2-Werror.patch | 18 - .../files/roctracer-5.0.2-headers.patch | 36 - .../files/roctracer-5.0.2-strip-license.patch | 14 - .../files/roctracer-5.1.3-no-aqlprofile.patch | 39 - .../files/roctracer-5.3.3-Werror.patch | 15 - ...acer-5.3.3-do-not-install-test-files.patch | 37 - .../roctracer-5.3.3-flat-lib-layout.patch | 34 - dev-util/roctracer/roctracer-5.1.3-r1.ebuild | 78 - dev-util/roctracer/roctracer-5.3.3-r1.ebuild | 66 - dev-util/roctracer/roctracer-6.3.2.ebuild | 110 + dev-util/rr/Manifest | 4 +- dev-util/rr/rr-5.9.0.ebuild | 100 + dev-util/rr/rr-9999.ebuild | 10 +- dev-util/rt-tests/Manifest | 3 +- .../rt-tests/files/rt-tests-2.8-glibc.patch | 55 + dev-util/rt-tests/rt-tests-2.8.ebuild | 6 +- dev-util/ruff/Manifest | 210 +- dev-util/ruff/ruff-0.8.2.ebuild | 532 -- dev-util/ruff/ruff-0.8.4.ebuild | 533 -- dev-util/ruff/ruff-0.9.6.ebuild | 540 ++ dev-util/selenium-manager/Manifest | 2 +- .../selenium-manager-4.28.0.ebuild | 2 +- dev-util/tkdiff/Manifest | 2 +- dev-util/tkdiff/tkdiff-5.7.ebuild | 4 +- dev-util/tree-sitter-cli/Manifest | 5 +- .../tree-sitter-cli-0.24.3-r1.ebuild | 4 +- .../tree-sitter-cli-0.25.1.ebuild | 34 + dev-util/xxdiff/Manifest | 8 +- .../files/xxdiff-4.0.1-no-throw-in-dtor.patch | 16 - .../files/xxdiff-4.0.1_p20170622-cxx11.patch | 11 - dev-util/xxdiff/metadata.xml | 5 +- .../xxdiff/xxdiff-4.0.1_p20170622-r1.ebuild | 59 - dev-util/xxdiff/xxdiff-5.1_p20241118.ebuild | 78 + dev-vcs/Manifest.gz | Bin 12022 -> 12020 bytes dev-vcs/git-cola/Manifest | 2 + dev-vcs/git-cola/git-cola-4.11.0.ebuild | 80 + dev-vcs/sourcegit/Manifest | 47 +- dev-vcs/sourcegit/sourcegit-2025.04.ebuild | 147 + dev-vcs/sourcegit/sourcegit-8.40.ebuild | 132 - dev-vcs/sourcegit/sourcegit-8.44.ebuild | 137 - dev-vcs/stgit/Manifest | 127 - dev-vcs/stgit/stgit-2.4.11-r1.ebuild | 211 - dev-vcs/stgit/stgit-2.4.13.ebuild | 229 - dev-vcs/topgit/Manifest | 2 + dev-vcs/topgit/topgit-0.19.14.ebuild | 38 + dev-vcs/tortoisehg/Manifest | 4 +- dev-vcs/tortoisehg/tortoisehg-6.9.ebuild | 1 - dev-vcs/tortoisehg/tortoisehg-9999.ebuild | 1 - eclass/Manifest.gz | Bin 40196 -> 40361 bytes eclass/eapi9-ver.eclass | 50 + eclass/ecm.eclass | 39 +- eclass/go-env.eclass | 10 +- eclass/llvm.org.eclass | 6 + eclass/plasma.kde.org.eclass | 4 +- eclass/postgres.eclass | 4 +- eclass/toolchain.eclass | 4 +- games-arcade/Manifest.gz | Bin 20104 -> 20104 bytes games-arcade/moleinvasion/Manifest | 3 +- .../files/moleinvasion-0.4-gcc14.patch | 29 + .../moleinvasion/moleinvasion-0.4-r3.ebuild | 59 - .../moleinvasion/moleinvasion-0.4-r4.ebuild | 60 + games-arcade/osu-lazer/Manifest | 87 - .../osu-lazer/osu-lazer-2024.906.2.ebuild | 444 - games-board/Manifest.gz | Bin 9879 -> 9878 bytes games-board/xscrabble/Manifest | 4 +- .../files/xscrabble-2.10-ranlib.patch | 13 + .../xscrabble/xscrabble-2.10-r4.ebuild | 101 - .../xscrabble/xscrabble-2.10-r5.ebuild | 111 + games-emulation/Manifest.gz | Bin 12076 -> 12072 bytes games-emulation/bsnes-jg/Manifest | 4 +- .../bsnes-jg/bsnes-jg-1.2.0.ebuild | 46 - .../bsnes-jg/bsnes-jg-2.0.1.ebuild | 79 + games-emulation/cega-jg/Manifest | 2 - games-emulation/cega-jg/cega-jg-0.5.2.ebuild | 46 - games-emulation/gambatte-jg/Manifest | 2 - .../gambatte-jg/gambatte-jg-0.5.1.ebuild | 46 - games-emulation/geolith-jg/Manifest | 2 - .../geolith-jg/geolith-jg-0.1.0.ebuild | 51 - games-emulation/mednafen-jg/Manifest | 6 +- .../mednafen-jg/mednafen-jg-1.32.0.ebuild | 68 - .../mednafen-jg/mednafen-jg-1.32.1-r1.ebuild | 69 + .../mednafen-jg/mednafen-jg-1.32.1.ebuild | 68 - .../mednafen-jg/mednafen-jg-9999.ebuild | 3 +- games-emulation/melonds/Manifest | 6 +- .../melonds/melonds-0.9.5_p20241113.ebuild | 2 + games-emulation/melonds/melonds-1.0_rc.ebuild | 2 + games-emulation/melonds/melonds-9999.ebuild | 21 +- games-emulation/mgba-jg/Manifest | 2 - games-emulation/mgba-jg/mgba-jg-0.10.3.ebuild | 45 - games-emulation/nestopia-jg/Manifest | 5 +- .../nestopia-jg/nestopia-jg-1.52.1.ebuild | 45 - ....52.0.ebuild => nestopia-jg-1.53.0.ebuild} | 0 games-emulation/prosystem-jg/Manifest | 2 + .../prosystem-jg/prosystem-jg-1.5.3.ebuild | 45 + games-emulation/rmg/Manifest | 9 +- games-emulation/rmg/metadata.xml | 3 +- games-emulation/rmg/rmg-0.6.5-r1.ebuild | 146 - games-emulation/rmg/rmg-0.6.6-r1.ebuild | 150 - games-emulation/rmg/rmg-0.7.3.ebuild | 140 + games-emulation/rmg/rmg-9999.ebuild | 13 +- games-emulation/sameboy-jg/Manifest | 2 - .../sameboy-jg/sameboy-jg-0.16.6.ebuild | 49 - games-emulation/vecx-jg/Manifest | 2 + games-emulation/vecx-jg/vecx-jg-1.2.3.ebuild | 46 + games-engines/Manifest.gz | Bin 3704 -> 3706 bytes games-engines/fheroes2/Manifest | 2 - games-engines/fheroes2/fheroes2-1.1.4.ebuild | 81 - games-puzzle/Manifest.gz | Bin 16470 -> 16467 bytes games-puzzle/skladnik/Manifest | 2 - games-puzzle/skladnik/skladnik-24.12.1.ebuild | 33 - games-server/Manifest.gz | Bin 1896 -> 1896 bytes games-server/crossfire-server/Manifest | 5 + .../crossfire-server-1.75.0-r1.ebuild | 56 + .../crossfire-server-1.75.0-format.patch | 11 + ...er-1.75.0-incompatible-func-pointers.patch | 175 + games-sports/Manifest.gz | Bin 2074 -> 2073 bytes games-sports/foobillard/Manifest | 6 +- .../files/foobillard-3.0a-c99.patch | 14 + .../files/foobillard-3.0a-musl.patch | 14 + .../files/foobillard-3.0a-pointer-types.patch | 36 + .../files/foobillard-3.0a-queue.patch | 13 + .../foobillard/foobillard-3.0a-r1.ebuild | 68 - .../foobillard/foobillard-3.0a-r2.ebuild | 72 + games-util/Manifest.gz | Bin 7897 -> 7891 bytes games-util/cartridges/Manifest | 6 +- .../cartridges/cartridges-2.11-r1.ebuild | 63 + games-util/cartridges/cartridges-2.11.ebuild | 62 - .../cartridges/cartridges-2.9.3-r1.ebuild | 63 + games-util/cartridges/cartridges-2.9.3.ebuild | 62 - games-util/cartridges/cartridges-9999.ebuild | 3 +- games-util/qstat/Manifest | 5 +- .../files/qstat-2.14-unneeded-cast.patch | 14 + games-util/qstat/qstat-2.14-r1.ebuild | 48 + games-util/qstat/qstat-2.14.ebuild | 43 - games-util/qstat/qstat-2.17.ebuild | 43 + gui-apps/Manifest.gz | Bin 5052 -> 5051 bytes gui-apps/waypipe/Manifest | 4 +- gui-apps/waypipe/waypipe-0.9.1.ebuild | 4 +- gui-apps/waypipe/waypipe-0.9.2.ebuild | 4 +- gui-apps/wf-recorder/Manifest | 2 + .../files/wf-recorder-0.5.0-ffmpeg-7.patch | 26 + .../wf-recorder/wf-recorder-0.5.0-r1.ebuild | 49 + kde-apps/Manifest.gz | Bin 36044 -> 36048 bytes .../akonadi-calendar-tools-common/Manifest | 2 - ...onadi-calendar-tools-common-24.12.1.ebuild | 17 - kde-apps/akonadi-calendar/Manifest | 2 - .../akonadi-calendar-24.12.1.ebuild | 49 - kde-apps/akonadi-contacts/Manifest | 2 - .../akonadi-contacts-24.12.1.ebuild | 45 - kde-apps/akonadi-import-wizard/Manifest | 2 - .../akonadi-import-wizard-24.12.1.ebuild | 42 - kde-apps/akonadi-mime/Manifest | 2 - .../akonadi-mime/akonadi-mime-24.12.1.ebuild | 36 - kde-apps/akonadi-search/Manifest | 2 - .../akonadi-search-24.12.1.ebuild | 54 - kde-apps/akonadi/Manifest | 2 - kde-apps/akonadi/akonadi-24.12.1.ebuild | 62 - kde-apps/akonadiconsole/Manifest | 2 - .../akonadiconsole-24.12.1.ebuild | 46 - kde-apps/akregator/Manifest | 2 - kde-apps/akregator/akregator-24.12.1.ebuild | 62 - kde-apps/ark/Manifest | 2 - kde-apps/ark/ark-24.12.1.ebuild | 80 - kde-apps/artikulate/Manifest | 2 - kde-apps/artikulate/artikulate-24.12.1.ebuild | 46 - kde-apps/audiocd-kio/Manifest | 2 - .../audiocd-kio/audiocd-kio-24.12.1.ebuild | 49 - kde-apps/baloo-widgets/Manifest | 2 - .../baloo-widgets-24.12.1.ebuild | 32 - kde-apps/blinken/Manifest | 2 - kde-apps/blinken/blinken-24.12.1.ebuild | 36 - kde-apps/bomber/Manifest | 2 - kde-apps/bomber/bomber-24.12.1.ebuild | 34 - kde-apps/bovo/Manifest | 2 - kde-apps/bovo/bovo-24.12.1.ebuild | 34 - kde-apps/calendarjanitor/Manifest | 2 - .../calendarjanitor-24.12.1.ebuild | 40 - kde-apps/calendarsupport/Manifest | 2 - .../calendarsupport-24.12.1.ebuild | 42 - kde-apps/cervisia/Manifest | 2 - kde-apps/cervisia/cervisia-24.12.1.ebuild | 42 - kde-apps/dolphin-plugins-common/Manifest | 2 - .../dolphin-plugins-common-24.12.1.ebuild | 19 - kde-apps/dolphin-plugins-dropbox/Manifest | 2 - .../dolphin-plugins-dropbox-24.12.1.ebuild | 56 - kde-apps/dolphin-plugins-git/Manifest | 2 - .../dolphin-plugins-git-24.12.1.ebuild | 58 - kde-apps/dolphin-plugins-mercurial/Manifest | 2 - .../dolphin-plugins-mercurial-24.12.1.ebuild | 63 - kde-apps/dolphin-plugins-subversion/Manifest | 2 - .../dolphin-plugins-subversion-24.12.1.ebuild | 59 - kde-apps/dolphin/Manifest | 2 - kde-apps/dolphin/dolphin-24.12.1.ebuild | 91 - kde-apps/dragon/Manifest | 2 - kde-apps/dragon/dragon-24.12.1.ebuild | 38 - kde-apps/eventviews/Manifest | 2 - kde-apps/eventviews/eventviews-24.12.1.ebuild | 44 - kde-apps/ffmpegthumbs-common/Manifest | 2 - .../ffmpegthumbs-common-24.12.1.ebuild | 23 - kde-apps/ffmpegthumbs/Manifest | 2 - .../ffmpegthumbs/ffmpegthumbs-24.12.1.ebuild | 35 - kde-apps/filelight/Manifest | 2 - kde-apps/filelight/filelight-24.12.1.ebuild | 41 - kde-apps/granatier/Manifest | 2 - kde-apps/granatier/granatier-24.12.1.ebuild | 33 - kde-apps/grantlee-editor/Manifest | 2 - .../grantlee-editor-24.12.1.ebuild | 40 - kde-apps/grantleetheme/Manifest | 2 - .../grantleetheme-24.12.1.ebuild | 37 - kde-apps/gwenview/Manifest | 2 - kde-apps/gwenview/gwenview-24.12.1.ebuild | 110 - kde-apps/incidenceeditor/Manifest | 2 - .../incidenceeditor-24.12.1.ebuild | 67 - kde-apps/juk/Manifest | 2 - kde-apps/juk/juk-24.12.1.ebuild | 45 - kde-apps/k3b/Manifest | 2 - kde-apps/k3b/k3b-24.12.1.ebuild | 110 - kde-apps/kaccounts-integration/Manifest | 2 - .../kaccounts-integration-24.12.1.ebuild | 49 - kde-apps/kaccounts-providers/Manifest | 2 - .../kaccounts-providers-24.12.1.ebuild | 35 - kde-apps/kaddressbook/Manifest | 2 - .../kaddressbook/kaddressbook-24.12.1.ebuild | 70 - kde-apps/kajongg/Manifest | 2 - kde-apps/kajongg/kajongg-24.12.1.ebuild | 47 - kde-apps/kalarm/Manifest | 2 - kde-apps/kalarm/kalarm-24.12.1.ebuild | 87 - kde-apps/kalgebra/Manifest | 2 - kde-apps/kalgebra/kalgebra-24.12.1.ebuild | 49 - kde-apps/kamera/Manifest | 2 - kde-apps/kamera/kamera-24.12.1.ebuild | 34 - kde-apps/kamoso/Manifest | 2 - kde-apps/kamoso/kamoso-24.12.1.ebuild | 46 - kde-apps/kanagram/Manifest | 2 - kde-apps/kanagram/kanagram-24.12.1.ebuild | 46 - kde-apps/kapman/Manifest | 2 - kde-apps/kapman/kapman-24.12.1.ebuild | 33 - kde-apps/kapptemplate/Manifest | 2 - .../kapptemplate/kapptemplate-24.12.1.ebuild | 32 - kde-apps/kate-addons/Manifest | 2 - .../kate-addons/kate-addons-24.12.1.ebuild | 100 - kde-apps/kate-common/Manifest | 2 - .../kate-common/kate-common-24.12.1.ebuild | 19 - kde-apps/kate-lib/Manifest | 2 - kde-apps/kate-lib/kate-lib-24.12.1.ebuild | 69 - kde-apps/kate/Manifest | 2 - kde-apps/kate/kate-24.12.1.ebuild | 61 - kde-apps/katomic/Manifest | 2 - kde-apps/katomic/katomic-24.12.1.ebuild | 33 - kde-apps/kbackup/Manifest | 2 - kde-apps/kbackup/kbackup-24.12.1.ebuild | 38 - kde-apps/kblackbox/Manifest | 2 - kde-apps/kblackbox/kblackbox-24.12.1.ebuild | 36 - kde-apps/kblocks/Manifest | 2 - kde-apps/kblocks/kblocks-24.12.1.ebuild | 34 - kde-apps/kbounce/Manifest | 2 - kde-apps/kbounce/kbounce-24.12.1.ebuild | 37 - kde-apps/kbreakout/Manifest | 2 - kde-apps/kbreakout/kbreakout-24.12.1.ebuild | 33 - kde-apps/kbruch/Manifest | 2 - kde-apps/kbruch/kbruch-24.12.1.ebuild | 29 - kde-apps/kcachegrind/Manifest | 2 - .../kcachegrind/kcachegrind-24.12.1.ebuild | 36 - kde-apps/kcalc/Manifest | 2 - kde-apps/kcalc/kcalc-24.12.1.ebuild | 36 - kde-apps/kcalutils/Manifest | 2 - kde-apps/kcalutils/kcalutils-24.12.1.ebuild | 34 - kde-apps/kcharselect/Manifest | 2 - .../kcharselect/kcharselect-24.12.1.ebuild | 31 - kde-apps/kcolorchooser/Manifest | 2 - .../kcolorchooser-24.12.1.ebuild | 24 - kde-apps/kcron/Manifest | 2 - kde-apps/kcron/kcron-24.12.1.ebuild | 34 - kde-apps/kde-apps-meta/Manifest | 1 - .../kde-apps-meta-24.12.1.ebuild | 26 - kde-apps/kde-dev-scripts/Manifest | 2 - .../kde-dev-scripts-24.12.1.ebuild | 28 - kde-apps/kde-dev-utils/Manifest | 2 - .../kde-dev-utils-24.12.1.ebuild | 30 - kde-apps/kdeaccessibility-meta/Manifest | 1 - .../kdeaccessibility-meta-24.12.1.ebuild | 19 - kde-apps/kdeadmin-meta/Manifest | 1 - .../kdeadmin-meta-24.12.1.ebuild | 18 - kde-apps/kdebugsettings/Manifest | 2 - .../kdebugsettings-24.12.1.ebuild | 34 - kde-apps/kdecore-meta/Manifest | 1 - .../kdecore-meta/kdecore-meta-24.12.1.ebuild | 32 - kde-apps/kdeedu-data/Manifest | 2 - .../kdeedu-data/kdeedu-data-24.12.1.ebuild | 18 - kde-apps/kdeedu-meta/Manifest | 1 - .../kdeedu-meta/kdeedu-meta-24.12.1.ebuild | 42 - kde-apps/kdegames-meta/Manifest | 1 - .../kdegames-meta-24.12.1.ebuild | 60 - kde-apps/kdegraphics-meta/Manifest | 1 - .../kdegraphics-meta-24.12.1.ebuild | 34 - kde-apps/kdegraphics-mobipocket/Manifest | 2 - .../kdegraphics-mobipocket-24.12.1.ebuild | 21 - kde-apps/kdemultimedia-meta/Manifest | 1 - .../kdemultimedia-meta-24.12.1.ebuild | 32 - kde-apps/kdenetwork-filesharing/Manifest | 2 - .../kdenetwork-filesharing-24.12.1.ebuild | 39 - kde-apps/kdenetwork-meta/Manifest | 1 - .../kdenetwork-meta-24.12.1.ebuild | 36 - kde-apps/kdenlive/Manifest | 2 - kde-apps/kdenlive/kdenlive-24.12.1.ebuild | 76 - kde-apps/kdepim-addons/Manifest | 2 - .../kdepim-addons-24.12.1.ebuild | 87 - kde-apps/kdepim-meta/Manifest | 1 - .../kdepim-meta/kdepim-meta-24.12.1.ebuild | 73 - kde-apps/kdepim-runtime/Manifest | 2 - .../kdepim-runtime-24.12.1.ebuild | 83 - kde-apps/kdesdk-meta/Manifest | 1 - .../kdesdk-meta/kdesdk-meta-24.12.1.ebuild | 37 - kde-apps/kdesdk-thumbnailers-common/Manifest | 2 - .../kdesdk-thumbnailers-common-24.12.1.ebuild | 21 - kde-apps/kdesdk-thumbnailers/Manifest | 2 - .../kdesdk-thumbnailers-24.12.1.ebuild | 36 - kde-apps/kdeutils-meta/Manifest | 1 - .../kdeutils-meta-24.12.1.ebuild | 53 - kde-apps/kdf/Manifest | 2 - kde-apps/kdf/kdf-24.12.1.ebuild | 38 - kde-apps/kdialog/Manifest | 2 - kde-apps/kdialog/kdialog-24.12.1.ebuild | 43 - kde-apps/kdiamond/Manifest | 2 - kde-apps/kdiamond/kdiamond-24.12.1.ebuild | 34 - kde-apps/keditbookmarks/Manifest | 2 - .../keditbookmarks-24.12.1.ebuild | 48 - kde-apps/kfind/Manifest | 2 - kde-apps/kfind/kfind-24.12.1.ebuild | 38 - kde-apps/kfloppy/Manifest | 2 - kde-apps/kfloppy/kfloppy-23.04.3.ebuild | 40 - kde-apps/kfourinline/Manifest | 2 - .../kfourinline/kfourinline-24.12.1.ebuild | 34 - kde-apps/kgeography/Manifest | 2 - kde-apps/kgeography/kgeography-24.12.1.ebuild | 31 - kde-apps/kget/Manifest | 2 - kde-apps/kget/kget-24.12.1.ebuild | 70 - kde-apps/kgoldrunner/Manifest | 2 - .../kgoldrunner/kgoldrunner-24.12.1.ebuild | 40 - kde-apps/kgpg/Manifest | 2 - kde-apps/kgpg/kgpg-24.12.1.ebuild | 49 - kde-apps/khangman/Manifest | 2 - kde-apps/khangman/khangman-24.12.1.ebuild | 38 - kde-apps/khelpcenter/Manifest | 2 - .../khelpcenter/khelpcenter-24.12.1.ebuild | 41 - kde-apps/kidentitymanagement/Manifest | 2 - .../kidentitymanagement-24.12.1.ebuild | 36 - kde-apps/kig/Manifest | 2 - kde-apps/kig/kig-24.12.1.ebuild | 72 - kde-apps/kigo/Manifest | 2 - kde-apps/kigo/kigo-24.12.1.ebuild | 41 - kde-apps/killbots/Manifest | 2 - kde-apps/killbots/killbots-24.12.1.ebuild | 37 - kde-apps/kimagemapeditor/Manifest | 2 - .../kimagemapeditor-24.12.1.ebuild | 33 - kde-apps/kimap/Manifest | 2 - kde-apps/kimap/kimap-24.12.1.ebuild | 41 - kde-apps/kio-extras/Manifest | 2 - kde-apps/kio-extras/kio-extras-24.12.1.ebuild | 99 - kde-apps/kiriki/Manifest | 2 - kde-apps/kiriki/kiriki-24.12.1.ebuild | 33 - kde-apps/kiten/Manifest | 2 - kde-apps/kiten/kiten-24.12.1.ebuild | 41 - kde-apps/kitinerary/Manifest | 2 - kde-apps/kitinerary/kitinerary-24.12.1.ebuild | 48 - kde-apps/kjumpingcube/Manifest | 2 - .../kjumpingcube/kjumpingcube-24.12.1.ebuild | 38 - kde-apps/kldap/Manifest | 2 - kde-apps/kldap/kldap-24.12.1.ebuild | 30 - kde-apps/kleopatra/Manifest | 2 - kde-apps/kleopatra/kleopatra-24.12.1.ebuild | 68 - kde-apps/klettres/Manifest | 2 - kde-apps/klettres/klettres-24.12.1.ebuild | 32 - kde-apps/klickety/Manifest | 2 - kde-apps/klickety/klickety-24.12.1.ebuild | 40 - kde-apps/klines/Manifest | 2 - kde-apps/klines/klines-24.12.1.ebuild | 37 - kde-apps/kmag/Manifest | 2 - kde-apps/kmag/kmag-24.12.1.ebuild | 38 - kde-apps/kmahjongg/Manifest | 2 - kde-apps/kmahjongg/kmahjongg-24.12.1.ebuild | 36 - kde-apps/kmail-account-wizard/Manifest | 2 - .../kmail-account-wizard-24.12.1.ebuild | 52 - kde-apps/kmail/Manifest | 2 - kde-apps/kmail/kmail-24.12.1.ebuild | 119 - kde-apps/kmailtransport/Manifest | 2 - .../kmailtransport-24.12.1.ebuild | 37 - kde-apps/kmbox/Manifest | 2 - kde-apps/kmbox/kmbox-24.12.1.ebuild | 20 - kde-apps/kmime/Manifest | 2 - kde-apps/kmime/kmime-24.12.1.ebuild | 24 - kde-apps/kmines/Manifest | 2 - kde-apps/kmines/kmines-24.12.1.ebuild | 36 - kde-apps/kmousetool/Manifest | 2 - kde-apps/kmousetool/kmousetool-24.12.1.ebuild | 38 - kde-apps/kmouth/Manifest | 2 - kde-apps/kmouth/kmouth-24.12.1.ebuild | 32 - kde-apps/kmplot/Manifest | 2 - kde-apps/kmplot/kmplot-24.12.1.ebuild | 37 - kde-apps/knavalbattle/Manifest | 2 - .../knavalbattle/knavalbattle-24.12.1.ebuild | 39 - kde-apps/knetwalk/Manifest | 2 - kde-apps/knetwalk/knetwalk-24.12.1.ebuild | 37 - kde-apps/knights/Manifest | 2 - kde-apps/knights/knights-24.12.1.ebuild | 58 - kde-apps/kolf/Manifest | 2 - kde-apps/kolf/kolf-24.12.1.ebuild | 39 - kde-apps/kollision/Manifest | 2 - kde-apps/kollision/kollision-24.12.1.ebuild | 33 - kde-apps/kolourpaint/Manifest | 2 - .../kolourpaint/kolourpaint-24.12.1.ebuild | 43 - kde-apps/kompare/Manifest | 2 - kde-apps/kompare/kompare-24.12.1.ebuild | 38 - kde-apps/konqueror/Manifest | 2 - kde-apps/konqueror/konqueror-24.12.1.ebuild | 85 - kde-apps/konquest/Manifest | 2 - kde-apps/konquest/konquest-24.12.1.ebuild | 36 - kde-apps/konsole/Manifest | 2 - kde-apps/konsole/konsole-24.12.1.ebuild | 65 - kde-apps/konsolekalendar/Manifest | 2 - .../konsolekalendar-24.12.1.ebuild | 37 - kde-apps/kontact/Manifest | 2 - kde-apps/kontact/kontact-24.12.1.ebuild | 44 - kde-apps/kontactinterface/Manifest | 2 - .../kontactinterface-24.12.1.ebuild | 28 - kde-apps/korganizer/Manifest | 2 - kde-apps/korganizer/korganizer-24.12.1.ebuild | 79 - kde-apps/kpat/Manifest | 2 - kde-apps/kpat/kpat-24.12.1.ebuild | 50 - kde-apps/kpimtextedit/Manifest | 2 - .../kpimtextedit/kpimtextedit-24.12.1.ebuild | 42 - kde-apps/kpkpass/Manifest | 2 - kde-apps/kpkpass/kpkpass-24.12.1.ebuild | 24 - kde-apps/kqtquickcharts/Manifest | 2 - .../kqtquickcharts-24.12.1.ebuild | 20 - kde-apps/krdc/Manifest | 2 - kde-apps/krdc/krdc-24.12.1.ebuild | 62 - kde-apps/kreversi/Manifest | 2 - kde-apps/kreversi/kreversi-24.12.1.ebuild | 41 - kde-apps/krfb/Manifest | 2 - kde-apps/krfb/krfb-24.12.1.ebuild | 63 - kde-apps/kruler/Manifest | 2 - kde-apps/kruler/kruler-24.12.1.ebuild | 45 - kde-apps/kshisen/Manifest | 2 - kde-apps/kshisen/kshisen-24.12.1.ebuild | 34 - kde-apps/ksirk/Manifest | 2 - kde-apps/ksirk/ksirk-24.12.1.ebuild | 37 - kde-apps/ksmtp/Manifest | 2 - kde-apps/ksmtp/ksmtp-24.12.1.ebuild | 29 - kde-apps/ksnakeduel/Manifest | 2 - kde-apps/ksnakeduel/ksnakeduel-24.12.1.ebuild | 38 - kde-apps/kspaceduel/Manifest | 2 - kde-apps/kspaceduel/kspaceduel-24.12.1.ebuild | 33 - kde-apps/ksquares/Manifest | 2 - kde-apps/ksquares/ksquares-24.12.1.ebuild | 33 - kde-apps/ksudoku/Manifest | 2 - kde-apps/ksudoku/ksudoku-24.12.1.ebuild | 41 - kde-apps/ksystemlog/Manifest | 2 - kde-apps/ksystemlog/ksystemlog-24.12.1.ebuild | 62 - kde-apps/kteatime/Manifest | 2 - kde-apps/kteatime/kteatime-24.12.1.ebuild | 33 - kde-apps/ktimer/Manifest | 2 - kde-apps/ktimer/ktimer-24.12.1.ebuild | 32 - kde-apps/ktouch/Manifest | 2 - kde-apps/ktouch/ktouch-24.12.1.ebuild | 63 - kde-apps/ktuberling/Manifest | 2 - kde-apps/ktuberling/ktuberling-24.12.1.ebuild | 37 - kde-apps/kturtle/Manifest | 2 - kde-apps/kturtle/kturtle-24.12.1.ebuild | 33 - kde-apps/kubrick/Manifest | 2 - kde-apps/kubrick/kubrick-24.12.1.ebuild | 37 - kde-apps/kwalletmanager/Manifest | 2 - .../kwalletmanager-24.12.1.ebuild | 40 - kde-apps/kwave/Manifest | 1 - kde-apps/kwave/kwave-24.12.1-r1.ebuild | 89 - kde-apps/kwordquiz/Manifest | 2 - kde-apps/kwordquiz/kwordquiz-24.12.1.ebuild | 35 - kde-apps/kwrite/Manifest | 2 - kde-apps/kwrite/kwrite-24.12.1.ebuild | 57 - kde-apps/libgravatar/Manifest | 2 - .../libgravatar/libgravatar-24.12.1.ebuild | 37 - kde-apps/libkcddb-common/Manifest | 2 - .../libkcddb-common-24.12.1.ebuild | 24 - kde-apps/libkcddb/Manifest | 2 - kde-apps/libkcddb/libkcddb-24.12.1.ebuild | 55 - kde-apps/libkcompactdisc/Manifest | 2 - .../libkcompactdisc-24.12.1.ebuild | 32 - kde-apps/libkdcraw/Manifest | 2 - kde-apps/libkdcraw/libkdcraw-24.12.1.ebuild | 21 - kde-apps/libkdegames/Manifest | 2 - .../libkdegames/libkdegames-24.12.1.ebuild | 45 - kde-apps/libkdepim/Manifest | 2 - kde-apps/libkdepim/libkdepim-24.12.1.ebuild | 27 - kde-apps/libkeduvocdocument/Manifest | 2 - .../libkeduvocdocument-24.12.1.ebuild | 25 - kde-apps/libkexiv2/Manifest | 2 - kde-apps/libkexiv2/libkexiv2-24.12.1.ebuild | 21 - kde-apps/libkgapi/Manifest | 2 - kde-apps/libkgapi/libkgapi-24.12.1.ebuild | 37 - kde-apps/libkleo/Manifest | 2 - kde-apps/libkleo/libkleo-24.12.1.ebuild | 36 - kde-apps/libkmahjongg/Manifest | 2 - .../libkmahjongg/libkmahjongg-24.12.1.ebuild | 27 - kde-apps/libkomparediff2/Manifest | 2 - .../libkomparediff2-24.12.1.ebuild | 27 - kde-apps/libksane-common/Manifest | 2 - .../libksane-common-24.12.1.ebuild | 23 - kde-apps/libksane/Manifest | 2 - kde-apps/libksane/libksane-24.12.1.ebuild | 45 - kde-apps/libksieve/Manifest | 2 - kde-apps/libksieve/libksieve-24.12.1.ebuild | 56 - kde-apps/libktnef/Manifest | 2 - kde-apps/libktnef/libktnef-24.12.1.ebuild | 28 - kde-apps/lokalize/Manifest | 2 - kde-apps/lokalize/lokalize-24.12.1.ebuild | 66 - kde-apps/lskat/Manifest | 2 - kde-apps/lskat/lskat-24.12.1.ebuild | 36 - kde-apps/mailcommon/Manifest | 2 - kde-apps/mailcommon/mailcommon-24.12.1.ebuild | 64 - kde-apps/mailimporter/Manifest | 2 - .../mailimporter/mailimporter-24.12.1.ebuild | 32 - kde-apps/mbox-importer/Manifest | 2 - .../mbox-importer-24.12.1.ebuild | 33 - kde-apps/messagelib/Manifest | 2 - kde-apps/messagelib/messagelib-24.12.1.ebuild | 77 - kde-apps/mimetreeparser/Manifest | 2 - .../mimetreeparser-24.12.1.ebuild | 34 - kde-apps/okular/Manifest | 2 - kde-apps/okular/okular-24.12.1.ebuild | 99 - kde-apps/palapeli/Manifest | 2 - kde-apps/palapeli/palapeli-24.12.1.ebuild | 38 - kde-apps/parley/Manifest | 2 - kde-apps/parley/parley-24.12.1.ebuild | 65 - kde-apps/picmi/Manifest | 2 - kde-apps/picmi/picmi-24.12.1.ebuild | 36 - kde-apps/pim-data-exporter/Manifest | 2 - .../pim-data-exporter-24.12.1.ebuild | 58 - kde-apps/pim-sieve-editor/Manifest | 2 - .../pim-sieve-editor-24.12.1.ebuild | 52 - kde-apps/pimcommon/Manifest | 2 - kde-apps/pimcommon/pimcommon-24.12.1.ebuild | 64 - kde-apps/poxml/Manifest | 2 - kde-apps/poxml/poxml-24.12.1.ebuild | 22 - kde-apps/rocs/Manifest | 2 - kde-apps/rocs/rocs-24.12.1.ebuild | 48 - kde-apps/signon-kwallet-extension/Manifest | 2 - .../signon-kwallet-extension-24.12.1.ebuild | 20 - kde-apps/spectacle/Manifest | 2 - kde-apps/spectacle/spectacle-24.12.1.ebuild | 72 - kde-apps/svgpart/Manifest | 2 - kde-apps/svgpart/svgpart-24.12.1.ebuild | 26 - kde-apps/sweeper/Manifest | 2 - kde-apps/sweeper/sweeper-24.12.1.ebuild | 32 - kde-apps/thumbnailers/Manifest | 1 - .../thumbnailers/thumbnailers-24.12.1.ebuild | 21 - kde-apps/umbrello/Manifest | 2 - kde-apps/umbrello/umbrello-24.12.1.ebuild | 71 - kde-apps/yakuake/Manifest | 2 - kde-apps/yakuake/yakuake-24.12.1.ebuild | 59 - kde-misc/Manifest.gz | Bin 3893 -> 3893 bytes kde-misc/colord-kde/Manifest | 2 - kde-misc/colord-kde/colord-kde-24.12.1.ebuild | 58 - kde-misc/kclock/Manifest | 2 - kde-misc/kclock/kclock-24.12.1.ebuild | 34 - kde-misc/kdeconnect/Manifest | 2 - kde-misc/kdeconnect/kdeconnect-24.12.1.ebuild | 108 - kde-misc/kdiff3/Manifest | 2 +- kde-misc/kdiff3/kdiff3-1.12.0.ebuild | 4 +- kde-misc/kio-gdrive-common/Manifest | 2 - .../kio-gdrive-common-24.12.1.ebuild | 45 - kde-misc/kio-gdrive/Manifest | 2 - kde-misc/kio-gdrive/kio-gdrive-24.12.1.ebuild | 59 - kde-misc/kweather/Manifest | 2 - kde-misc/kweather/kweather-24.12.1.ebuild | 52 - kde-misc/markdownpart/Manifest | 2 - .../markdownpart/markdownpart-24.12.1.ebuild | 28 - kde-misc/skanlite/Manifest | 2 - kde-misc/skanlite/skanlite-24.12.1.ebuild | 35 - kde-misc/zanshin/Manifest | 2 - kde-misc/zanshin/zanshin-24.12.1.ebuild | 59 - kde-plasma/Manifest.gz | Bin 11631 -> 11632 bytes kde-plasma/bluedevil/Manifest | 2 + kde-plasma/bluedevil/bluedevil-6.3.0.ebuild | 41 + kde-plasma/breeze-grub/Manifest | 2 + .../breeze-grub/breeze-grub-6.3.0.ebuild | 22 + kde-plasma/breeze-gtk/Manifest | 2 + kde-plasma/breeze-gtk/breeze-gtk-6.3.0.ebuild | 31 + kde-plasma/breeze-plymouth/Manifest | 2 + .../breeze-plymouth-6.3.0.ebuild | 27 + kde-plasma/breeze/Manifest | 2 + kde-plasma/breeze/breeze-6.3.0.ebuild | 68 + kde-plasma/discover/Manifest | 2 + kde-plasma/discover/discover-6.3.0.ebuild | 98 + kde-plasma/drkonqi/Manifest | 2 + kde-plasma/drkonqi/drkonqi-6.3.0.ebuild | 85 + kde-plasma/flatpak-kcm/Manifest | 2 + .../flatpak-kcm/flatpak-kcm-6.3.0.ebuild | 34 + kde-plasma/kactivitymanagerd/Manifest | 2 + .../kactivitymanagerd-6.3.0.ebuild | 33 + kde-plasma/kde-cli-tools-common/Manifest | 2 + .../kde-cli-tools-common-6.3.0.ebuild | 14 + kde-plasma/kde-cli-tools/Manifest | 2 + .../kde-cli-tools/kde-cli-tools-6.3.0.ebuild | 49 + kde-plasma/kde-gtk-config/Manifest | 2 + .../kde-gtk-config-6.3.0.ebuild | 42 + kde-plasma/kdecoration/Manifest | 2 + .../kdecoration/kdecoration-6.3.0.ebuild | 22 + kde-plasma/kdeplasma-addons/Manifest | 2 + .../kdeplasma-addons-6.3.0.ebuild | 72 + kde-plasma/kdesu-gui/Manifest | 2 + kde-plasma/kdesu-gui/kdesu-gui-6.3.0.ebuild | 54 + kde-plasma/keditfiletype/Manifest | 2 + .../keditfiletype/keditfiletype-6.3.0.ebuild | 49 + kde-plasma/kgamma/Manifest | 2 + kde-plasma/kgamma/kgamma-6.3.0.ebuild | 30 + kde-plasma/kglobalacceld/Manifest | 2 + .../kglobalacceld/kglobalacceld-6.3.0.ebuild | 53 + kde-plasma/kinfocenter/Manifest | 2 + .../kinfocenter/kinfocenter-6.3.0.ebuild | 92 + kde-plasma/kmenuedit/Manifest | 2 + kde-plasma/kmenuedit/kmenuedit-6.3.0.ebuild | 38 + kde-plasma/kpipewire/Manifest | 2 + kde-plasma/kpipewire/kpipewire-6.3.0.ebuild | 43 + kde-plasma/krdp/Manifest | 2 + kde-plasma/krdp/krdp-6.3.0.ebuild | 50 + kde-plasma/kscreen/Manifest | 2 + kde-plasma/kscreen/kscreen-6.3.0.ebuild | 56 + kde-plasma/kscreenlocker/Manifest | 2 + .../kscreenlocker/kscreenlocker-6.3.0.ebuild | 78 + kde-plasma/ksshaskpass/Manifest | 2 + .../ksshaskpass/ksshaskpass-6.3.0.ebuild | 49 + kde-plasma/ksystemstats/Manifest | 2 + .../ksystemstats/ksystemstats-6.3.0.ebuild | 47 + kde-plasma/kwallet-pam/Manifest | 2 + .../kwallet-pam/kwallet-pam-6.3.0.ebuild | 36 + kde-plasma/kwayland-integration/Manifest | 2 + .../kwayland-integration-6.3.0.ebuild | 48 + kde-plasma/kwayland/Manifest | 2 + kde-plasma/kwayland/kwayland-6.3.0.ebuild | 42 + kde-plasma/kwin/Manifest | 3 + .../kwin/files/kwin-6.3.0-crashfix.patch | 29 + kde-plasma/kwin/kwin-6.3.0-r1.ebuild | 149 + kde-plasma/kwrited/Manifest | 2 + kde-plasma/kwrited/kwrited-6.3.0.ebuild | 25 + kde-plasma/layer-shell-qt/Manifest | 2 + .../layer-shell-qt-6.3.0.ebuild | 31 + kde-plasma/libkscreen/Manifest | 2 + kde-plasma/libkscreen/libkscreen-6.3.0.ebuild | 37 + kde-plasma/libksysguard/Manifest | 2 + .../libksysguard/libksysguard-6.3.0.ebuild | 54 + kde-plasma/libplasma/Manifest | 2 + kde-plasma/libplasma/libplasma-6.3.0.ebuild | 66 + kde-plasma/milou/Manifest | 2 + kde-plasma/milou/milou-6.3.0.ebuild | 28 + kde-plasma/ocean-sound-theme/Manifest | 2 + .../ocean-sound-theme-6.3.0.ebuild | 15 + kde-plasma/oxygen-sounds/Manifest | 2 + .../oxygen-sounds/oxygen-sounds-6.3.0.ebuild | 15 + kde-plasma/oxygen/Manifest | 2 + kde-plasma/oxygen/oxygen-6.3.0.ebuild | 72 + kde-plasma/plasma-activities-stats/Manifest | 2 + .../plasma-activities-stats-6.3.0.ebuild | 26 + kde-plasma/plasma-activities/Manifest | 2 + .../plasma-activities-6.3.0.ebuild | 28 + .../plasma-browser-integration/Manifest | 3 + ...ntegration-6.3.0-fix-missing-include.patch | 27 + .../plasma-browser-integration-6.3.0.ebuild | 49 + kde-plasma/plasma-desktop/Manifest | 2 + .../plasma-desktop-6.3.0.ebuild | 189 + kde-plasma/plasma-disks/Manifest | 2 + .../plasma-disks/plasma-disks-6.3.0.ebuild | 39 + kde-plasma/plasma-firewall/Manifest | 2 + .../plasma-firewall-6.3.0.ebuild | 60 + kde-plasma/plasma-integration/Manifest | 2 + .../plasma-integration-6.3.0.ebuild | 87 + kde-plasma/plasma-login-sessions/Manifest | 2 + .../plasma-login-sessions-6.3.0.ebuild | 44 + kde-plasma/plasma-meta/Manifest | 1 + .../plasma-meta/plasma-meta-6.3.0.ebuild | 151 + kde-plasma/plasma-nm/Manifest | 2 + kde-plasma/plasma-nm/plasma-nm-6.3.0.ebuild | 76 + kde-plasma/plasma-pa/Manifest | 2 + kde-plasma/plasma-pa/plasma-pa-6.3.0.ebuild | 44 + kde-plasma/plasma-sdk/Manifest | 2 + kde-plasma/plasma-sdk/plasma-sdk-6.3.0.ebuild | 42 + kde-plasma/plasma-systemmonitor/Manifest | 2 + .../plasma-systemmonitor-6.3.0.ebuild | 42 + kde-plasma/plasma-thunderbolt/Manifest | 2 + .../plasma-thunderbolt-6.3.0.ebuild | 36 + kde-plasma/plasma-vault/Manifest | 2 + .../plasma-vault/plasma-vault-6.3.0.ebuild | 49 + kde-plasma/plasma-welcome/Manifest | 2 + .../plasma-welcome-6.3.0.ebuild | 36 + .../plasma-workspace-wallpapers/Manifest | 2 + .../plasma-workspace-wallpapers-6.3.0.ebuild | 19 + kde-plasma/plasma-workspace/Manifest | 2 + .../plasma-workspace-6.3.0.ebuild | 216 + kde-plasma/plasma5support/Manifest | 4 +- kde-plasma/plasma5support/metadata.xml | 3 + .../plasma5support-6.3.0.ebuild | 50 + kde-plasma/plymouth-kcm/Manifest | 2 + .../plymouth-kcm/plymouth-kcm-6.3.0.ebuild | 35 + kde-plasma/polkit-kde-agent/Manifest | 2 + .../polkit-kde-agent-6.3.0.ebuild | 33 + kde-plasma/powerdevil/Manifest | 2 + kde-plasma/powerdevil/powerdevil-6.3.0.ebuild | 94 + kde-plasma/print-manager/Manifest | 2 + .../print-manager/print-manager-6.3.0.ebuild | 67 + kde-plasma/qqc2-breeze-style/Manifest | 2 + .../qqc2-breeze-style-6.3.0.ebuild | 28 + kde-plasma/sddm-kcm/Manifest | 2 + kde-plasma/sddm-kcm/sddm-kcm-6.3.0.ebuild | 39 + kde-plasma/systemsettings/Manifest | 2 + .../systemsettings-6.3.0.ebuild | 51 + kde-plasma/wacomtablet/Manifest | 2 + .../wacomtablet/wacomtablet-6.3.0.ebuild | 55 + kde-plasma/xdg-desktop-portal-kde/Manifest | 2 + .../xdg-desktop-portal-kde-6.3.0.ebuild | 65 + llvm-core/Manifest.gz | Bin 2541 -> 2536 bytes llvm-core/clang-common/Manifest | 7 + .../clang-common-20.1.0_rc2.ebuild | 310 + .../clang-common-21.0.0_pre20250208.ebuild | 310 + .../clang-common-21.0.0_pre20250211.ebuild | 310 + llvm-core/clang-runtime/Manifest | 3 + .../clang-runtime-20.1.0_rc2.ebuild | 30 + .../clang-runtime-21.0.0_pre20250208.ebuild | 30 + .../clang-runtime-21.0.0_pre20250211.ebuild | 30 + llvm-core/clang/Manifest | 7 + llvm-core/clang/clang-20.1.0_rc2.ebuild | 464 + .../clang/clang-21.0.0_pre20250208.ebuild | 464 + .../clang/clang-21.0.0_pre20250211.ebuild | 464 + llvm-core/libclc/Manifest | 7 + llvm-core/libclc/libclc-20.1.0_rc2.ebuild | 61 + .../libclc/libclc-21.0.0_pre20250208.ebuild | 61 + .../libclc/libclc-21.0.0_pre20250211.ebuild | 61 + llvm-core/lld/Manifest | 7 + llvm-core/lld/lld-20.1.0_rc2.ebuild | 89 + llvm-core/lld/lld-21.0.0_pre20250208.ebuild | 89 + llvm-core/lld/lld-21.0.0_pre20250211.ebuild | 89 + llvm-core/lldb/Manifest | 7 + llvm-core/lldb/lldb-20.1.0_rc2.ebuild | 111 + llvm-core/lldb/lldb-21.0.0_pre20250208.ebuild | 111 + llvm-core/lldb/lldb-21.0.0_pre20250211.ebuild | 115 + llvm-core/llvm-common/Manifest | 7 + .../llvm-common/llvm-common-20.1.0_rc2.ebuild | 53 + .../llvm-common-21.0.0_pre20250208.ebuild | 53 + .../llvm-common-21.0.0_pre20250211.ebuild | 53 + llvm-core/llvm/Manifest | 7 + llvm-core/llvm/llvm-20.1.0_rc2.ebuild | 559 ++ llvm-core/llvm/llvm-21.0.0_pre20250208.ebuild | 559 ++ llvm-core/llvm/llvm-21.0.0_pre20250211.ebuild | 559 ++ llvm-core/mlir/Manifest | 9 +- llvm-core/mlir/mlir-20.1.0_rc2.ebuild | 196 + llvm-core/mlir/mlir-21.0.0.9999.ebuild | 10 +- llvm-core/mlir/mlir-21.0.0_pre20250208.ebuild | 196 + llvm-core/mlir/mlir-21.0.0_pre20250211.ebuild | 204 + llvm-core/polly/Manifest | 7 + llvm-core/polly/polly-20.1.0_rc2.ebuild | 59 + .../polly/polly-21.0.0_pre20250208.ebuild | 59 + .../polly/polly-21.0.0_pre20250211.ebuild | 59 + llvm-runtimes/Manifest.gz | Bin 1559 -> 1561 bytes llvm-runtimes/compiler-rt-sanitizers/Manifest | 7 + .../compiler-rt-sanitizers-20.1.0_rc2.ebuild | 222 + ...er-rt-sanitizers-21.0.0_pre20250208.ebuild | 222 + ...er-rt-sanitizers-21.0.0_pre20250211.ebuild | 222 + llvm-runtimes/compiler-rt/Manifest | 7 + .../compiler-rt/compiler-rt-20.1.0_rc2.ebuild | 175 + .../compiler-rt-21.0.0_pre20250208.ebuild | 175 + .../compiler-rt-21.0.0_pre20250211.ebuild | 175 + llvm-runtimes/libcxx/Manifest | 7 + llvm-runtimes/libcxx/libcxx-20.1.0_rc2.ebuild | 208 + .../libcxx/libcxx-21.0.0_pre20250208.ebuild | 208 + .../libcxx/libcxx-21.0.0_pre20250211.ebuild | 208 + llvm-runtimes/libcxxabi/Manifest | 7 + .../libcxxabi/libcxxabi-20.1.0_rc2.ebuild | 109 + .../libcxxabi-21.0.0_pre20250208.ebuild | 109 + .../libcxxabi-21.0.0_pre20250211.ebuild | 109 + llvm-runtimes/libgcc/Manifest | 7 + llvm-runtimes/libgcc/libgcc-20.1.0_rc2.ebuild | 155 + .../libgcc/libgcc-21.0.0_pre20250208.ebuild | 155 + .../libgcc/libgcc-21.0.0_pre20250211.ebuild | 155 + llvm-runtimes/libunwind/Manifest | 7 + .../libunwind/libunwind-20.1.0_rc2.ebuild | 128 + .../libunwind-21.0.0_pre20250208.ebuild | 128 + .../libunwind-21.0.0_pre20250211.ebuild | 128 + llvm-runtimes/offload/Manifest | 9 +- .../offload/offload-20.1.0_rc2.ebuild | 148 + .../offload/offload-21.0.0.9999.ebuild | 11 +- .../offload/offload-21.0.0_pre20250208.ebuild | 139 + .../offload/offload-21.0.0_pre20250211.ebuild | 139 + llvm-runtimes/openmp/Manifest | 7 + llvm-runtimes/openmp/openmp-20.1.0_rc2.ebuild | 88 + .../openmp/openmp-21.0.0_pre20250208.ebuild | 88 + .../openmp/openmp-21.0.0_pre20250211.ebuild | 88 + lxqt-base/Manifest.gz | Bin 3074 -> 3070 bytes lxqt-base/lxqt-config/Manifest | 2 + .../lxqt-config/lxqt-config-2.1.1.ebuild | 62 + mail-client/Manifest.gz | Bin 3372 -> 3373 bytes mail-client/alpine/Manifest | 2 +- mail-client/alpine/alpine-2.26-r5.ebuild | 11 +- mail-client/roundcube/Manifest | 4 +- mail-client/roundcube/roundcube-1.6.10.ebuild | 97 + mail-client/roundcube/roundcube-1.6.9.ebuild | 97 - mail-client/thunderbird-bin/Manifest | 134 - .../thunderbird-bin-128.5.2.ebuild | 274 - .../thunderbird-bin-128.6.0.ebuild | 274 - mail-client/thunderbird/Manifest | 265 - .../thunderbird/thunderbird-128.5.0.ebuild | 1163 --- .../thunderbird/thunderbird-128.5.1.ebuild | 1163 --- .../thunderbird/thunderbird-128.5.2.ebuild | 1163 --- .../thunderbird/thunderbird-128.6.0.ebuild | 1163 --- mail-filter/Manifest.gz | Bin 8538 -> 8538 bytes mail-filter/rblcheck/Manifest | 2 + .../files/rblcheck-1.5-autoconf.patch | 69 + mail-filter/rblcheck/rblcheck-1.5-r3.ebuild | 30 + mail-mta/Manifest.gz | Bin 2380 -> 2378 bytes mail-mta/postfix/Manifest | 4 +- ...ebuild => postfix-3.10_pre20250207.ebuild} | 0 media-fonts/Manifest.gz | Bin 37580 -> 37573 bytes media-fonts/source-code-pro/Manifest | 4 +- .../source-code-pro-2.038.ebuild | 39 - .../source-code-pro-2.042-r1.ebuild | 40 + .../source-code-pro-2.042.ebuild | 38 - media-fonts/source-han-sans/Manifest | 2 +- .../source-han-sans-2.004-r1.ebuild | 48 + .../source-han-sans-2.004.ebuild | 46 - media-fonts/source-sans/Manifest | 2 +- .../source-sans/source-sans-3.052-r1.ebuild | 39 + .../source-sans/source-sans-3.052.ebuild | 37 - media-fonts/source-serif/Manifest | 2 +- .../source-serif/source-serif-4.005-r1.ebuild | 39 + .../source-serif/source-serif-4.005.ebuild | 37 - media-fonts/terminus-font/Manifest | 2 +- .../terminus-font-4.49.1-r1.ebuild | 101 - .../terminus-font-4.49.1-r2.ebuild | 103 + media-gfx/Manifest.gz | Bin 38373 -> 38374 bytes media-gfx/blender/Manifest | 2 +- media-gfx/blender/blender-4.2.4.ebuild | 4 +- media-gfx/fotema/Manifest | 3 + media-gfx/fotema/fotema-1.19.2.ebuild | 91 + media-gfx/gimp/Manifest | 2 +- media-gfx/gimp/gimp-2.10.38-r1.ebuild | 7 +- media-gfx/kgraphviewer/Manifest | 2 - .../kgraphviewer/kgraphviewer-24.12.1.ebuild | 34 - media-gfx/kio-blender-thumbnailer/Manifest | 2 - .../kio-blender-thumbnailer-24.12.1.ebuild | 36 - media-gfx/kio-mobi-thumbnailer/Manifest | 2 - .../kio-mobi-thumbnailer-24.12.1.ebuild | 42 - media-gfx/kio-ps-thumbnailer/Manifest | 2 - .../kio-ps-thumbnailer-24.12.1.ebuild | 43 - media-gfx/kio-raw-thumbnailer/Manifest | 2 - .../kio-raw-thumbnailer-24.12.1.ebuild | 43 - media-gfx/libimagequant/Manifest | 22 + .../libimagequant/libimagequant-4.3.4.ebuild | 71 + media-gfx/librecad/Manifest | 2 +- media-gfx/librecad/librecad-2.2.1.ebuild | 2 +- media-gfx/netgen/Manifest | 3 +- .../netgen-6.2.2406-link-against-jpeg.patch | 30 + media-gfx/netgen/netgen-6.2.2406.ebuild | 1 + media-gfx/sane-frontends/Manifest | 5 +- media-gfx/sane-frontends/files/gimp-2.0.m4 | 180 + media-gfx/sane-frontends/files/gtk-2.0.m4 | 189 + .../files/sane-frontends-1.0.14-c99.patch | 51 + .../sane-frontends-1.0.14-r6.ebuild | 63 - .../sane-frontends-1.0.14-r7.ebuild | 76 + media-gfx/scrot/Manifest | 2 +- media-gfx/scrot/scrot-1.11.1.ebuild | 4 +- media-gfx/skanpage/Manifest | 2 - media-gfx/skanpage/skanpage-24.12.1.ebuild | 49 - media-gfx/symboleditor/Manifest | 4 +- media-gfx/symboleditor/metadata.xml | 3 +- .../symboleditor/symboleditor-2.1.0.ebuild | 43 - media-gfx/xloadimage/Manifest | 2 + ...4.1-fix-incomp-function-pointer-musl.patch | 14 + .../xloadimage/xloadimage-4.1-r18.ebuild | 97 + media-libs/Manifest.gz | Bin 69782 -> 69780 bytes media-libs/alsa-lib/Manifest | 2 +- media-libs/alsa-lib/alsa-lib-1.2.13-r2.ebuild | 2 +- media-libs/alsa-ucm-conf/Manifest | 2 +- .../alsa-ucm-conf/alsa-ucm-conf-1.2.13.ebuild | 2 +- media-libs/amdgpu-pro-vulkan/Manifest | 6 +- .../amdgpu-pro-vulkan-24.10.0.1787253.ebuild | 128 - .../amdgpu-pro-vulkan-24.30.2111292.ebuild | 127 + media-libs/amf-headers/Manifest | 8 +- .../amf-headers/amf-headers-1.4.33.ebuild | 7 +- .../amf-headers/amf-headers-1.4.34.ebuild | 4 +- .../amf-headers/amf-headers-1.4.35.ebuild | 33 + .../amf-headers/amf-headers-1.4.36.ebuild | 33 + media-libs/blib/Manifest | 2 + media-libs/blib/blib-1.1.7-r4.ebuild | 63 + media-libs/blib/files/blib-1.1.7-C23.patch | 105 + media-libs/flac/Manifest | 4 +- media-libs/flac/flac-1.4.3.ebuild | 4 +- media-libs/flac/flac-1.5.0.ebuild | 82 + media-libs/ftgl/Manifest | 2 +- media-libs/ftgl/ftgl-2.1.3_rc5-r3.ebuild | 2 +- media-libs/gst-plugins-bad/Manifest | 2 +- .../gst-plugins-bad-1.24.11.ebuild | 2 +- media-libs/gst-plugins-base/Manifest | 2 +- .../gst-plugins-base-1.24.11.ebuild | 2 +- media-libs/gst-plugins-good/Manifest | 2 +- .../gst-plugins-good-1.24.11.ebuild | 2 +- media-libs/gst-plugins-ugly/Manifest | 2 +- .../gst-plugins-ugly-1.24.11.ebuild | 2 +- media-libs/gst-rtsp-server/Manifest | 2 +- .../gst-rtsp-server-1.24.11.ebuild | 2 +- .../gstreamer-editing-services/Manifest | 2 +- .../gstreamer-editing-services-1.24.11.ebuild | 2 +- media-libs/gstreamer/Manifest | 2 +- media-libs/gstreamer/gstreamer-1.24.11.ebuild | 2 +- media-libs/ksanecore-common/Manifest | 2 - .../ksanecore-common-24.12.1.ebuild | 17 - media-libs/ksanecore/Manifest | 2 - media-libs/ksanecore/ksanecore-24.12.1.ebuild | 30 - media-libs/lcms/Manifest | 2 + media-libs/lcms/lcms-2.17.ebuild | 49 + media-libs/lib3mf/Manifest | 2 +- media-libs/lib3mf/lib3mf-2.3.2.ebuild | 2 +- media-libs/libexif/Manifest | 2 + media-libs/libexif/libexif-0.6.25.ebuild | 57 + media-libs/libfishsound/Manifest | 4 +- .../libfishsound-1.0.0-oggz-interop.patch | 102 + .../libfishsound/libfishsound-1.0.0-r1.ebuild | 48 - .../libfishsound/libfishsound-1.0.0-r2.ebuild | 52 - .../libfishsound/libfishsound-1.0.0-r3.ebuild | 53 + media-libs/libggiwmh/Manifest | 1 + .../libggiwmh/libggiwmh-0.3.2-r2.ebuild | 45 + media-libs/libifp/Manifest | 3 + .../libifp/files/libifp-1.0.0.2-c23.patch | 25 + .../files/libifp-1.0.0.2-configure.patch | 50 + media-libs/libifp/libifp-1.0.0.2-r2.ebuild | 63 + media-libs/libopenraw/Manifest | 1 + .../libopenraw/libopenraw-0.3.7-r2.ebuild | 76 + media-libs/libpng/Manifest | 12 +- media-libs/libpng/libpng-1.6.40-r1.ebuild | 67 - media-libs/libpng/libpng-1.6.42.ebuild | 70 - media-libs/libpng/libpng-1.6.43.ebuild | 70 - media-libs/libpng/libpng-1.6.46.ebuild | 69 + media-libs/libva-intel-media-driver/Manifest | 2 + .../libva-intel-media-driver-25.1.1.ebuild | 57 + media-libs/mesa/Manifest | 2 + media-libs/mesa/mesa-25.0.0_rc3.ebuild | 504 + media-libs/openal/Manifest | 2 +- media-libs/openal/openal-1.24.2.ebuild | 2 +- media-libs/opencolorio/Manifest | 2 +- .../opencolorio/opencolorio-2.4.1.ebuild | 2 +- media-libs/openexr/Manifest | 2 +- media-libs/openexr/openexr-3.3.2-r1.ebuild | 2 +- media-libs/openh264/Manifest | 5 +- media-libs/openh264/openh264-2.4.1.ebuild | 134 - media-libs/openh264/openh264-2.6.0.ebuild | 132 + media-libs/partio/Manifest | 2 +- media-libs/partio/partio-1.17.3.ebuild | 2 +- media-libs/tiff-compat/Manifest | 4 +- .../tiff-compat/files/tiff-4.4.0-C23.patch | 52 + .../tiff-compat/tiff-compat-4.4.0-r1.ebuild | 4 +- .../tiff-compat/tiff-compat-4.4.0-r2.ebuild | 96 + media-libs/vigra/Manifest | 2 +- media-libs/vigra/vigra-1.12.1.ebuild | 4 +- media-plugins/Manifest.gz | Bin 44455 -> 44313 bytes media-plugins/gst-plugins-a52dec/Manifest | 2 +- .../gst-plugins-a52dec-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-amr/Manifest | 2 +- .../gst-plugins-amr-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-aom/Manifest | 2 +- .../gst-plugins-aom-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-assrender/Manifest | 2 +- .../gst-plugins-assrender-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-bluez/Manifest | 2 +- .../gst-plugins-bluez-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-bs2b/Manifest | 2 +- .../gst-plugins-bs2b-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-cdio/Manifest | 2 +- .../gst-plugins-cdio-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-cdparanoia/Manifest | 2 +- .../gst-plugins-cdparanoia-1.24.11.ebuild | 2 +- .../gst-plugins-chromaprint/Manifest | 2 +- .../gst-plugins-chromaprint-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-dash/Manifest | 2 +- .../gst-plugins-dash-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-dtls/Manifest | 2 +- .../gst-plugins-dtls-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-dts/Manifest | 2 +- .../gst-plugins-dts-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-dv/Manifest | 2 +- .../gst-plugins-dv-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-dvb/Manifest | 2 +- .../gst-plugins-dvb-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-dvdread/Manifest | 2 +- .../gst-plugins-dvdread-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-faac/Manifest | 2 +- .../gst-plugins-faac-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-faad/Manifest | 2 +- .../gst-plugins-faad-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-flac/Manifest | 2 +- .../gst-plugins-flac-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-gdkpixbuf/Manifest | 2 +- .../gst-plugins-gdkpixbuf-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-gtk/Manifest | 2 +- .../gst-plugins-gtk-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-hls/Manifest | 2 +- .../gst-plugins-hls-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-jack/Manifest | 2 +- .../gst-plugins-jack-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-jpeg/Manifest | 2 +- .../gst-plugins-jpeg-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-kate/Manifest | 7 - .../gst-plugins-kate-1.22.11.ebuild | 13 - .../gst-plugins-kate-1.22.12.ebuild | 13 - .../gst-plugins-kate-1.24.10.ebuild | 13 - media-plugins/gst-plugins-kate/metadata.xml | 8 - media-plugins/gst-plugins-ladspa/Manifest | 2 +- .../gst-plugins-ladspa-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-lame/Manifest | 2 +- .../gst-plugins-lame-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-ldac/Manifest | 2 +- .../gst-plugins-ldac-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-libav/Manifest | 2 +- .../gst-plugins-libav-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-libde265/Manifest | 2 +- .../gst-plugins-libde265-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-libpng/Manifest | 2 +- .../gst-plugins-libpng-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-libvisual/Manifest | 2 +- .../gst-plugins-libvisual-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-lv2/Manifest | 2 +- .../gst-plugins-lv2-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-meta/Manifest | 2 +- .../gst-plugins-meta-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-modplug/Manifest | 2 +- .../gst-plugins-modplug-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-mpeg2dec/Manifest | 2 +- .../gst-plugins-mpeg2dec-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-mpeg2enc/Manifest | 2 +- .../gst-plugins-mpeg2enc-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-mpg123/Manifest | 2 +- .../gst-plugins-mpg123-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-mplex/Manifest | 2 +- .../gst-plugins-mplex-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-neon/Manifest | 2 +- .../gst-plugins-neon-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-openaptx/Manifest | 2 +- .../gst-plugins-openaptx-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-openh264/Manifest | 2 +- .../gst-plugins-openh264-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-opus/Manifest | 2 +- .../gst-plugins-opus-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-oss/Manifest | 2 +- .../gst-plugins-oss-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-pulse/Manifest | 2 +- .../gst-plugins-pulse-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-raw1394/Manifest | 2 +- .../gst-plugins-raw1394-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-resindvd/Manifest | 2 +- .../gst-plugins-resindvd-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-rtmp/Manifest | 2 +- .../gst-plugins-rtmp-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-shout2/Manifest | 2 +- .../gst-plugins-shout2-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-sidplay/Manifest | 2 +- .../gst-plugins-sidplay-1.24.11.ebuild | 2 +- .../gst-plugins-smoothstreaming/Manifest | 2 +- ...gst-plugins-smoothstreaming-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-soundtouch/Manifest | 2 +- .../gst-plugins-soundtouch-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-soup/Manifest | 2 +- .../gst-plugins-soup-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-speex/Manifest | 2 +- .../gst-plugins-speex-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-srtp/Manifest | 2 +- .../gst-plugins-srtp-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-taglib/Manifest | 2 +- .../gst-plugins-taglib-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-twolame/Manifest | 2 +- .../gst-plugins-twolame-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-uvch264/Manifest | 2 +- .../gst-plugins-uvch264-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-v4l2/Manifest | 2 +- .../gst-plugins-v4l2-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-vaapi/Manifest | 2 +- .../gst-plugins-vaapi-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-voaacenc/Manifest | 2 +- .../gst-plugins-voaacenc-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-voamrwbenc/Manifest | 2 +- .../gst-plugins-voamrwbenc-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-vpx/Manifest | 2 +- .../gst-plugins-vpx-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-wavpack/Manifest | 2 +- .../gst-plugins-wavpack-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-x264/Manifest | 2 +- .../gst-plugins-x264-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-x265/Manifest | 2 +- .../gst-plugins-x265-1.24.11.ebuild | 2 +- media-plugins/gst-plugins-ximagesrc/Manifest | 2 +- .../gst-plugins-ximagesrc-1.24.11.ebuild | 2 +- media-plugins/mpg123-output-plugins/Manifest | 2 + .../mpg123-output-plugins-1.32.10.ebuild | 102 + media-radio/Manifest.gz | Bin 5204 -> 5201 bytes media-radio/grig/Manifest | 2 +- media-radio/grig/grig-0.9.0.ebuild | 3 +- media-sound/Manifest.gz | Bin 57275 -> 57232 bytes media-sound/abcmidi/Manifest | 4 +- ...02.02.ebuild => abcmidi-2025.02.07.ebuild} | 0 media-sound/alsa-utils/Manifest | 2 +- .../alsa-utils/alsa-utils-1.2.13-r2.ebuild | 2 +- media-sound/audex/Manifest | 2 - media-sound/audex/audex-24.12.1.ebuild | 40 - media-sound/aumix/Manifest | 3 +- media-sound/aumix/aumix-2.9.1-r1.ebuild | 58 + media-sound/aumix/aumix-2.9.1.ebuild | 56 - .../files/aumix-2.9.1-gcc14-build-fix.patch | 53 + media-sound/cantata/Manifest | 6 +- media-sound/cantata/cantata-3.3.0.ebuild | 105 + .../files/cantata-3.3.0-cdparanoia.patch | 29 + .../files/cantata-3.3.0-rm-vendor.patch | 217 + media-sound/cantata/metadata.xml | 4 +- media-sound/chuck/Manifest | 4 - media-sound/chuck/chuck-1.5.4.2.ebuild | 70 - media-sound/chuck/chuck-1.5.4.3.ebuild | 70 - media-sound/clementine/Manifest | 8 +- .../clementine/clementine-1.4.0_rc2-r5.ebuild | 170 - .../clementine/clementine-1.4.1_p28.ebuild | 2 +- .../files/clementine-1.4.0_rc2-absl.patch | 15 - .../files/clementine-1.4.0_rc2-c17.patch | 67 - .../files/clementine-1.4.0_rc2-lz.patch | 33 - .../clementine-1.4.0_rc2-projectm-dir.patch | 53 - media-sound/elisa/Manifest | 2 - media-sound/elisa/elisa-24.12.1.ebuild | 57 - media-sound/fapg/Manifest | 2 +- media-sound/fapg/fapg-0.45.ebuild | 2 +- media-sound/gstreamripper/Manifest | 3 +- .../files/gstreamripper-0.2-C23-fixes.patch | 62 + .../gstreamripper/gstreamripper-0.2-r1.ebuild | 44 - .../gstreamripper/gstreamripper-0.2-r2.ebuild | 52 + media-sound/jack-rack/Manifest | 2 + .../files/jack-rack-1.4.8_rc1-C23.patch | 59 + .../jack-rack/jack-rack-1.4.8_rc1-r2.ebuild | 66 + media-sound/kasts/Manifest | 2 - media-sound/kasts/kasts-24.12.1.ebuild | 51 - media-sound/kid3/Manifest | 2 + .../kid3/files/kid3-3.9.6-no-ndebug.patch | 54 + media-sound/kid3/kid3-3.9.6-r1.ebuild | 96 + media-sound/krecorder/Manifest | 2 - .../krecorder/krecorder-24.12.1.ebuild | 30 - media-sound/mac/Manifest | 4 +- media-sound/mac/mac-10.87.ebuild | 2 +- media-sound/mac/mac-10.93.ebuild | 28 + media-sound/mixxx/Manifest | 9 +- ...xxx-2.5.0-fix-strict-aliasing-kaitai.patch | 115 + .../mixxx/files/mixxx-2.5.0-tests.patch | 444 + media-sound/mixxx/files/mixxx-9999-docs.patch | 28 - media-sound/mixxx/metadata.xml | 6 +- media-sound/mixxx/mixxx-2.5.0.ebuild | 172 + media-sound/mixxx/mixxx-9999.ebuild | 159 +- media-sound/mpg123-base/Manifest | 2 + .../mpg123-base/mpg123-base-1.32.10.ebuild | 109 + media-sound/picard/Manifest | 4 +- ...ard-2.13.1.ebuild => picard-2.13.2.ebuild} | 0 media-sound/qjackctl/Manifest | 3 +- media-sound/qjackctl/qjackctl-1.0.3-r1.ebuild | 2 +- media-sound/qjackctl/qjackctl-1.0.3.ebuild | 47 - media-sound/qpwgraph/Manifest | 4 +- media-sound/qpwgraph/qpwgraph-0.7.8.ebuild | 44 - media-sound/qpwgraph/qpwgraph-0.8.1.ebuild | 43 + media-sound/qtractor/Manifest | 2 + media-sound/qtractor/qtractor-1.5.3.ebuild | 100 + media-sound/schismtracker/Manifest | 4 +- ...2.ebuild => schismtracker-20250208.ebuild} | 0 media-sound/scream/Manifest | 3 +- .../scream/files/scream-4.0-gcc15.patch | 11 + media-sound/scream/scream-4.0.ebuild | 6 +- media-sound/spotify/Manifest | 2 +- media-sound/spotify/files/spotify-wrapper | 2 +- media-sound/strawberry/Manifest | 2 +- .../strawberry/strawberry-1.2.6.ebuild | 2 +- media-sound/upmpdcli/Manifest | 6 +- media-sound/upmpdcli/upmpdcli-1.8.18.ebuild | 37 - media-sound/upmpdcli/upmpdcli-1.9.0.ebuild | 4 +- media-sound/upmpdcli/upmpdcli-1.9.1.ebuild | 37 + media-sound/zynaddsubfx/Manifest | 2 +- .../zynaddsubfx/zynaddsubfx-3.0.6-r6.ebuild | 2 +- media-tv/Manifest.gz | Bin 3435 -> 3433 bytes media-tv/plex-media-server/Manifest | 2 +- .../plex-media-server-1.41.3.9314.ebuild | 2 +- media-video/Manifest.gz | Bin 23203 -> 22867 bytes media-video/aegisub/Manifest | 4 +- media-video/aegisub/aegisub-3.4.2.ebuild | 1 + media-video/aegisub/aegisub-9999.ebuild | 3 +- media-video/amdgpu-pro-amf/Manifest | 6 +- .../amdgpu-pro-amf-1.4.34.1787253.ebuild | 74 - .../amdgpu-pro-amf-1.4.36.2111292.ebuild | 74 + media-video/ffmpeg-chromium/Manifest | 2 + .../ffmpeg-chromium-135.ebuild | 239 + media-video/ffmpeg/Manifest | 9 +- media-video/ffmpeg/ffmpeg-4.4.5-r1.ebuild | 2 +- media-video/ffmpeg/ffmpeg-7.1.ebuild | 625 ++ media-video/ffmpeg/ffmpeg-9999.ebuild | 35 +- media-video/makemkv/Manifest | 3 + media-video/makemkv/makemkv-1.17.9.ebuild | 126 + media-video/mkvalidator/Manifest | 4 +- media-video/mkvalidator/metadata.xml | 4 + .../mkvalidator/mkvalidator-0.6.0.ebuild | 31 + media-video/mplayer/Manifest | 2 +- .../mplayer/mplayer-1.5_p20241125.ebuild | 6 +- media-video/obs-studio/Manifest | 4 +- .../obs-studio/obs-studio-31.0.1.ebuild | 275 + media-video/obs-studio/obs-studio-9999.ebuild | 10 +- media-video/vidify-audiosync/Manifest | 3 - media-video/vidify-audiosync/metadata.xml | 17 - .../vidify-audiosync-0.3.0-r2.ebuild | 47 - media-video/vidify/Manifest | 5 - .../vidify/files/vidify-2.2.6-python310.patch | 16 - .../vidify/files/vidify-2.2.6-yt-dlp.patch | 122 - media-video/vidify/metadata.xml | 24 - media-video/vidify/vidify-2.2.6-r3.ebuild | 84 - media-video/vlc/Manifest | 9 +- .../vlc-3.0.21-vaapi-without-ffmpeg4.patch | 18 - media-video/vlc/vlc-3.0.21-r1.ebuild | 514 -- media-video/vlc/vlc-3.0.21.ebuild | 516 -- media-video/vlc/vlc-3.0.21_p20250212.ebuild | 498 + media-video/vlc/vlc-3.0.9999.ebuild | 3 +- media-video/vlc/vlc-9999.ebuild | 3 +- media-video/wireplumber/Manifest | 2 + .../wireplumber/wireplumber-0.5.8.ebuild | 130 + media-video/yle-dl/Manifest | 2 - media-video/yle-dl/yle-dl-20240927.ebuild | 57 - metadata/Manifest.gz | Bin 13736 -> 13733 bytes metadata/dtd/timestamp.chk | 2 +- metadata/glsa/Manifest | 28 +- metadata/glsa/timestamp.chk | 2 +- metadata/license-mapping.conf | 1 + metadata/md5-cache/Manifest.gz | Bin 28717 -> 28733 bytes .../md5-cache/app-accessibility/Manifest.gz | Bin 6739 -> 6882 bytes .../app-accessibility/emacspeak-ss-1.9.1-r2 | 12 + .../app-accessibility/kontrast-24.08.3 | 2 +- .../app-accessibility/kontrast-24.12.1 | 16 - .../app-accessibility/kontrast-24.12.2 | 2 +- .../app-accessibility/sphinx2-0.6-r2 | 12 + metadata/md5-cache/app-admin/Manifest.gz | Bin 60717 -> 59744 bytes .../aws-session-manager-plugin-1.2.694.0 | 13 - .../aws-session-manager-plugin-1.2.707.0 | 13 + metadata/md5-cache/app-admin/awscli-1.37.12 | 16 - metadata/md5-cache/app-admin/awscli-1.37.13 | 16 - metadata/md5-cache/app-admin/awscli-1.37.14 | 16 - metadata/md5-cache/app-admin/awscli-1.37.15 | 16 - metadata/md5-cache/app-admin/awscli-1.37.16 | 16 + metadata/md5-cache/app-admin/awscli-1.37.17 | 16 + metadata/md5-cache/app-admin/awscli-1.37.18 | 16 + metadata/md5-cache/app-admin/awscli-1.37.19 | 16 + metadata/md5-cache/app-admin/awscli-1.37.2 | 16 - metadata/md5-cache/app-admin/awscli-1.37.20 | 16 + metadata/md5-cache/app-admin/awscli-1.37.6 | 4 +- .../app-admin/bitwarden-desktop-bin-2025.1.4 | 13 + metadata/md5-cache/app-admin/calamares-3.3.13 | 2 +- .../md5-cache/app-admin/calamares-3.3.6-r2 | 2 +- metadata/md5-cache/app-admin/cli53-0.8.18 | 2 +- metadata/md5-cache/app-admin/conky-1.21.9 | 18 - metadata/md5-cache/app-admin/conky-1.22.0 | 4 +- metadata/md5-cache/app-admin/consul-1.18.1 | 2 +- metadata/md5-cache/app-admin/consul-1.18.2 | 2 +- metadata/md5-cache/app-admin/consul-1.19.1 | 2 +- metadata/md5-cache/app-admin/consul-1.20.1 | 2 +- metadata/md5-cache/app-admin/consul-1.20.2 | 2 +- .../consul-replicate-0.4.0_p20211027 | 2 +- .../app-admin/consul-template-0.37.4 | 2 +- metadata/md5-cache/app-admin/cronlocker-0.5.0 | 2 +- .../md5-cache/app-admin/docker-bench-0.5.0 | 2 +- metadata/md5-cache/app-admin/doctl-1.78.0 | 2 +- metadata/md5-cache/app-admin/doctl-1.79.0 | 2 +- metadata/md5-cache/app-admin/doctl-9999 | 2 +- metadata/md5-cache/app-admin/entr-5.7 | 14 + metadata/md5-cache/app-admin/exo-1.83.0 | 2 +- metadata/md5-cache/app-admin/filebeat-7.17.16 | 2 +- metadata/md5-cache/app-admin/filebeat-7.17.25 | 2 +- .../app-admin/git-credential-gopass-1.15.14 | 2 +- .../app-admin/git-credential-gopass-1.15.15 | 2 +- metadata/md5-cache/app-admin/gopass-1.15.14 | 2 +- metadata/md5-cache/app-admin/gopass-1.15.15 | 2 +- .../md5-cache/app-admin/gopass-hibp-1.15.14 | 2 +- .../md5-cache/app-admin/gopass-hibp-1.15.15 | 2 +- .../app-admin/gopass-jsonapi-1.15.14 | 2 +- .../app-admin/gopass-jsonapi-1.15.15 | 2 +- .../app-admin/gopass-summon-provider-1.15.14 | 2 +- .../app-admin/gopass-summon-provider-1.15.15 | 2 +- metadata/md5-cache/app-admin/hcloud-1.49.0 | 2 +- metadata/md5-cache/app-admin/hcloud-1.50.0 | 2 +- metadata/md5-cache/app-admin/helm-3.13.2 | 2 +- metadata/md5-cache/app-admin/helm-3.15.2 | 2 +- metadata/md5-cache/app-admin/helm-3.15.4 | 2 +- .../md5-cache/app-admin/kio-admin-24.08.3 | 2 +- .../md5-cache/app-admin/kio-admin-24.12.1 | 16 - .../md5-cache/app-admin/kio-admin-24.12.2 | 2 +- metadata/md5-cache/app-admin/kube-bench-0.6.8 | 2 +- metadata/md5-cache/app-admin/kubectx-0.9.4 | 2 +- .../md5-cache/app-admin/linode-cli-5.54.0 | 16 - .../md5-cache/app-admin/linode-cli-5.55.0 | 16 - .../md5-cache/app-admin/linode-cli-5.56.0 | 16 - .../md5-cache/app-admin/linode-cli-5.56.2 | 16 + .../md5-cache/app-admin/logsurfer+-1.8-r6 | 14 + metadata/md5-cache/app-admin/mtail-3.0.0_rc36 | 2 +- metadata/md5-cache/app-admin/opentofu-1.6.0 | 13 - metadata/md5-cache/app-admin/opentofu-1.6.1 | 13 - metadata/md5-cache/app-admin/opentofu-1.6.2 | 13 - metadata/md5-cache/app-admin/opentofu-1.7.1 | 13 - metadata/md5-cache/app-admin/opentofu-1.7.2 | 13 - metadata/md5-cache/app-admin/opentofu-1.8.1 | 13 - metadata/md5-cache/app-admin/opentofu-1.8.8 | 6 +- metadata/md5-cache/app-admin/opentofu-1.9.0 | 2 +- metadata/md5-cache/app-admin/salt-3007.1-r1 | 4 +- metadata/md5-cache/app-admin/serf-0.10.1 | 2 +- metadata/md5-cache/app-admin/serf-0.10.1-r1 | 2 +- metadata/md5-cache/app-admin/setools-4.5.1 | 12 +- metadata/md5-cache/app-admin/setools-9999 | 12 +- .../systemdgenie-0.100.0_pre20241202 | 2 +- metadata/md5-cache/app-admin/terraform-1.10.5 | 13 + metadata/md5-cache/app-admin/terraform-1.9.5 | 2 +- metadata/md5-cache/app-admin/terraform-1.9.8 | 2 +- metadata/md5-cache/app-admin/vault-1.15.6 | 2 +- metadata/md5-cache/app-admin/vault-1.18.3 | 2 +- metadata/md5-cache/app-admin/vault-1.18.4 | 2 +- metadata/md5-cache/app-arch/Manifest.gz | Bin 29084 -> 29083 bytes metadata/md5-cache/app-arch/gxz-0.5.12 | 2 +- metadata/md5-cache/app-arch/libdeflate-1.23 | 4 +- .../md5-cache/app-arch/par2cmdline-0.8.1-r1 | 12 - metadata/md5-cache/app-arch/patool-3.0.3 | 4 +- metadata/md5-cache/app-arch/patool-3.1.0 | 16 + metadata/md5-cache/app-arch/torrentzip-1.3 | 4 +- metadata/md5-cache/app-arch/xz-utils-5.6.4 | 2 +- .../md5-cache/app-arch/xz-utils-5.7.1_alpha | 2 +- metadata/md5-cache/app-arch/xz-utils-9999 | 2 +- metadata/md5-cache/app-backup/Manifest.gz | Bin 12399 -> 12403 bytes .../md5-cache/app-backup/borgmatic-1.9.10 | 16 + metadata/md5-cache/app-backup/borgmatic-1.9.4 | 16 - .../app-backup/consul-backinator-1.6.6 | 2 +- metadata/md5-cache/app-backup/kup-0.10.0 | 2 +- metadata/md5-cache/app-backup/restic-0.16.5 | 2 +- metadata/md5-cache/app-backup/restic-0.17.0 | 2 +- metadata/md5-cache/app-backup/restic-0.17.1 | 2 +- metadata/md5-cache/app-backup/restic-0.17.2 | 2 +- metadata/md5-cache/app-backup/restic-0.17.3 | 2 +- metadata/md5-cache/app-benchmarks/Manifest.gz | Bin 6889 -> 6720 bytes metadata/md5-cache/app-benchmarks/hey-0.1.2 | 2 +- .../app-benchmarks/i7z-93_p20131012-r2 | 15 - .../app-benchmarks/i7z-93_p20131012-r3 | 4 +- metadata/md5-cache/app-cdr/Manifest.gz | Bin 8957 -> 8960 bytes metadata/md5-cache/app-cdr/ccd2iso-0.3-r2 | 12 + metadata/md5-cache/app-cdr/cue2toc-0.4-r2 | 13 + .../app-cdr/dolphin-plugins-mountiso-24.08.3 | 2 +- .../app-cdr/dolphin-plugins-mountiso-24.12.1 | 16 - .../app-cdr/dolphin-plugins-mountiso-24.12.2 | 2 +- .../md5-cache/app-cdr/isoimagewriter-24.08.3 | 2 +- .../md5-cache/app-cdr/isoimagewriter-24.12.1 | 16 - .../md5-cache/app-cdr/isoimagewriter-24.12.2 | 2 +- metadata/md5-cache/app-cdr/kcdemu-0.9 | 2 +- metadata/md5-cache/app-containers/Manifest.gz | Bin 23026 -> 22889 bytes .../amazon-ecr-credential-helper-0.9.0 | 2 +- .../amazon-ecr-credential-helper-0.9.1 | 13 + .../md5-cache/app-containers/buildah-1.37.5 | 2 +- .../md5-cache/app-containers/buildah-1.38.0 | 2 +- .../md5-cache/app-containers/buildah-1.38.1 | 2 +- .../md5-cache/app-containers/buildah-9999 | 2 +- .../md5-cache/app-containers/cadvisor-0.36.0 | 2 +- .../md5-cache/app-containers/cadvisor-0.49.2 | 2 +- .../app-containers/cni-plugins-1.3.0 | 2 +- .../app-containers/cni-plugins-1.5.1 | 2 +- .../app-containers/cni-plugins-1.6.1 | 2 +- .../md5-cache/app-containers/containerd-2.0.1 | 2 +- .../md5-cache/app-containers/containerd-2.0.2 | 2 +- .../md5-cache/app-containers/cosign-2.2.4 | 2 +- .../md5-cache/app-containers/cosign-2.4.0 | 2 +- .../md5-cache/app-containers/cri-o-1.31.2 | 2 +- .../md5-cache/app-containers/cri-o-1.31.4 | 2 +- .../md5-cache/app-containers/cri-tools-1.27.0 | 2 +- .../md5-cache/app-containers/cri-tools-1.32.0 | 2 +- .../app-containers/distrobuilder-2.1 | 2 +- .../app-containers/distrobuilder-3.0-r1 | 2 +- .../app-containers/distrobuilder-3.1 | 2 +- .../md5-cache/app-containers/docker-27.4.1-r1 | 2 +- .../md5-cache/app-containers/docker-27.5.0 | 2 +- .../md5-cache/app-containers/docker-27.5.1 | 2 +- .../app-containers/docker-buildx-0.11.2 | 2 +- .../app-containers/docker-buildx-0.14.0 | 2 +- .../app-containers/docker-buildx-0.19.1 | 2 +- .../app-containers/docker-buildx-9999 | 2 +- .../app-containers/docker-cli-27.4.1 | 2 +- .../app-containers/docker-cli-27.5.0 | 2 +- .../app-containers/docker-cli-27.5.1 | 2 +- .../app-containers/docker-compose-2.28.1 | 2 +- .../app-containers/docker-compose-2.32.1 | 2 +- .../app-containers/docker-compose-2.32.3 | 2 +- .../docker-credential-helpers-0.8.2 | 2 +- .../docker-proxy-0.8.0_p20230118 | 2 +- .../app-containers/docker-pushrm-1.9.0 | 2 +- .../app-containers/docker-registry-2.8.2 | 2 +- .../app-containers/docker-registry-3.0.0_rc2 | 2 +- .../app-containers/docker-swarm-1.2.9 | 2 +- .../md5-cache/app-containers/earthly-0.8.15 | 2 +- .../md5-cache/app-containers/flannel-0.17.0 | 2 +- .../md5-cache/app-containers/flannel-0.20.0 | 2 +- .../md5-cache/app-containers/flannel-0.26.3 | 2 +- .../md5-cache/app-containers/grype-0.59.1 | 2 +- .../md5-cache/app-containers/grype-0.61.0 | 2 +- .../md5-cache/app-containers/grype-0.72.0 | 2 +- .../md5-cache/app-containers/grype-0.73.0 | 2 +- .../md5-cache/app-containers/grype-0.79.3 | 2 +- .../md5-cache/app-containers/grype-0.86.1 | 2 +- metadata/md5-cache/app-containers/img-0.5.11 | 2 +- metadata/md5-cache/app-containers/incus-6.0.2 | 2 +- metadata/md5-cache/app-containers/incus-6.0.3 | 2 +- metadata/md5-cache/app-containers/incus-6.7 | 16 - metadata/md5-cache/app-containers/incus-6.8 | 2 +- .../md5-cache/app-containers/incus-6.9-r2 | 2 +- metadata/md5-cache/app-containers/k3d-5.6.0 | 2 +- metadata/md5-cache/app-containers/k3d-5.7.3 | 2 +- metadata/md5-cache/app-containers/k3d-5.7.5 | 2 +- .../md5-cache/app-containers/kompose-1.26.1 | 2 +- metadata/md5-cache/app-containers/lxc-6.0.2 | 16 - .../md5-cache/app-containers/lxd-5.0.3-r2 | 2 +- .../md5-cache/app-containers/lxd-5.21.1-r1 | 2 +- metadata/md5-cache/app-containers/lxd-6.1 | 2 +- .../md5-cache/app-containers/nerdctl-2.0.2 | 2 +- .../md5-cache/app-containers/nerdctl-2.0.3 | 2 +- .../nvidia-container-toolkit-1.17.3 | 2 +- .../nvidia-container-toolkit-9999 | 2 +- .../md5-cache/app-containers/podman-5.2.5 | 2 +- .../md5-cache/app-containers/podman-5.3.0 | 2 +- .../md5-cache/app-containers/podman-5.3.2 | 2 +- metadata/md5-cache/app-containers/podman-9999 | 2 +- .../app-containers/podman-tui-0.18.0 | 2 +- .../md5-cache/app-containers/podman-tui-1.0.0 | 2 +- .../md5-cache/app-containers/podman-tui-1.0.1 | 2 +- .../md5-cache/app-containers/podman-tui-1.1.0 | 2 +- .../md5-cache/app-containers/podman-tui-9999 | 2 +- .../md5-cache/app-containers/reg-0.16.1-r1 | 2 +- metadata/md5-cache/app-containers/runc-1.2.4 | 2 +- .../md5-cache/app-containers/skopeo-1.15.1 | 2 +- .../md5-cache/app-containers/skopeo-1.17.0 | 2 +- metadata/md5-cache/app-containers/skopeo-9999 | 2 +- metadata/md5-cache/app-containers/snapd-2.63 | 2 +- metadata/md5-cache/app-containers/syft-0.75.0 | 2 +- metadata/md5-cache/app-containers/syft-0.76.0 | 2 +- metadata/md5-cache/app-containers/syft-0.94.0 | 2 +- metadata/md5-cache/app-containers/syft-0.95.0 | 2 +- metadata/md5-cache/app-containers/syft-1.18.1 | 2 +- metadata/md5-cache/app-containers/syft-1.9.0 | 2 +- metadata/md5-cache/app-containers/umoci-0.4.6 | 2 +- metadata/md5-cache/app-containers/umoci-0.4.7 | 2 +- metadata/md5-cache/app-crypt/Manifest.gz | Bin 37369 -> 37375 bytes metadata/md5-cache/app-crypt/age-1.1.1 | 2 +- metadata/md5-cache/app-crypt/age-1.1.1-r1 | 2 +- metadata/md5-cache/app-crypt/badkeys-0.0.13 | 17 + metadata/md5-cache/app-crypt/cfssl-1.6.5 | 2 +- metadata/md5-cache/app-crypt/gocryptfs-2.4.0 | 2 +- metadata/md5-cache/app-crypt/gocryptfs-2.5.1 | 2 +- metadata/md5-cache/app-crypt/gpa-0.11.0 | 16 + metadata/md5-cache/app-crypt/gpgme-1.24.2 | 17 + metadata/md5-cache/app-crypt/hashalot-0.3-r3 | 12 + metadata/md5-cache/app-crypt/kbfs-6.0.2 | 2 +- metadata/md5-cache/app-crypt/kbfs-6.2.4 | 2 +- metadata/md5-cache/app-crypt/kbfs-9999 | 2 +- metadata/md5-cache/app-crypt/keybase-6.0.2 | 2 +- metadata/md5-cache/app-crypt/keybase-6.2.4 | 2 +- metadata/md5-cache/app-crypt/keybase-9999 | 2 +- metadata/md5-cache/app-crypt/keysmith-24.08.3 | 2 +- metadata/md5-cache/app-crypt/keysmith-24.12.1 | 17 - metadata/md5-cache/app-crypt/keysmith-24.12.2 | 2 +- .../md5-cache/app-crypt/rpm-sequoia-1.6.0-r1 | 16 - .../md5-cache/app-crypt/rpm-sequoia-1.7.0-r1 | 8 +- metadata/md5-cache/app-crypt/sbctl-0.15.4 | 2 +- metadata/md5-cache/app-crypt/sbctl-0.16 | 2 +- .../sequoia-chameleon-gnupg-0.10.1-r1 | 17 - .../app-crypt/sequoia-chameleon-gnupg-0.11.2 | 8 +- metadata/md5-cache/app-crypt/sequoia-sq-1.0.0 | 16 - metadata/md5-cache/app-crypt/sequoia-sq-1.1.0 | 8 +- .../md5-cache/app-crypt/sequoia-sqv-1.2.1-r1 | 8 +- .../app-crypt/yubihsm-connector-3.0.4 | 2 +- metadata/md5-cache/app-dicts/Manifest.gz | Bin 33710 -> 33715 bytes metadata/md5-cache/app-dicts/dikt-3 | 2 +- metadata/md5-cache/app-editors/Manifest.gz | Bin 25216 -> 25402 bytes metadata/md5-cache/app-editors/emacs-26.3-r21 | 4 +- metadata/md5-cache/app-editors/emacs-27.2-r19 | 4 +- metadata/md5-cache/app-editors/emacs-28.2-r15 | 4 +- metadata/md5-cache/app-editors/emacs-29.4-r1 | 4 +- .../md5-cache/app-editors/ghostwriter-24.08.3 | 2 +- .../md5-cache/app-editors/ghostwriter-24.12.1 | 16 - .../md5-cache/app-editors/ghostwriter-24.12.2 | 2 +- .../app-editors/gnome-text-editor-47.2 | 4 +- metadata/md5-cache/app-editors/kile-2.9.94 | 2 +- .../app-editors/logseq-desktop-bin-0.10.9 | 16 - .../app-editors/logseq-desktop-bin-0.10.9-r1 | 16 + .../md5-cache/app-editors/micro-2.0.13-r1 | 2 +- metadata/md5-cache/app-editors/neovim-0.10.4 | 18 + metadata/md5-cache/app-editors/okteta-0.26.18 | 2 +- metadata/md5-cache/app-editors/okteta-0.26.19 | 2 +- metadata/md5-cache/app-editors/vscode-1.96.4 | 15 - metadata/md5-cache/app-editors/vscode-1.97.0 | 15 - metadata/md5-cache/app-editors/vscode-1.97.1 | 15 + metadata/md5-cache/app-editors/vscode-1.97.2 | 15 + .../app-editors/vscodium-1.96.4.25017 | 15 - .../app-editors/vscodium-1.97.1.25044 | 15 + metadata/md5-cache/app-editors/wily-1.0-r3 | 14 + metadata/md5-cache/app-editors/zed-0.172.10 | 17 + metadata/md5-cache/app-editors/zed-0.172.8 | 17 - metadata/md5-cache/app-emacs/Manifest.gz | Bin 101871 -> 101878 bytes metadata/md5-cache/app-emacs/ghub-4.2.1 | 13 + .../app-emacs/multiple-cursors-1.5.0 | 13 + .../app-emacs/nxml-libvirt-schemas-10.0.0 | 13 - .../app-emacs/nxml-libvirt-schemas-10.1.0 | 13 - .../app-emacs/nxml-libvirt-schemas-11.0.0 | 13 + .../app-emacs/nxml-libvirt-schemas-9.8.0 | 13 - .../app-emacs/nxml-libvirt-schemas-9.9.0 | 13 - metadata/md5-cache/app-emacs/parsebib-6.6 | 15 + metadata/md5-cache/app-emulation/86Box-4.2.1 | 15 - .../md5-cache/app-emulation/86Box-4.2.1-r1 | 15 + metadata/md5-cache/app-emulation/Manifest.gz | Bin 36036 -> 34465 bytes .../md5-cache/app-emulation/libvirt-10.1.0-r4 | 18 - .../app-emulation/libvirt-10.10.0-r1 | 4 +- .../md5-cache/app-emulation/libvirt-11.0.0 | 18 + .../md5-cache/app-emulation/libvirt-9.8.0-r5 | 18 - .../md5-cache/app-emulation/libvirt-9.9.0-r5 | 18 - metadata/md5-cache/app-emulation/libvirt-9999 | 2 +- metadata/md5-cache/app-emulation/qemu-9.1.2 | 4 +- .../app-emulation/ruffle-0_p20250124 | 4 +- .../app-emulation/virtiofsd-1.10.0-r1 | 15 - .../app-emulation/virtiofsd-1.10.0-r2 | 15 + .../app-emulation/virtiofsd-1.10.1-r1 | 15 - .../app-emulation/virtiofsd-1.10.1-r2 | 15 + .../app-emulation/virtiofsd-1.11.1-r1 | 15 - .../app-emulation/virtiofsd-1.11.1-r2 | 15 + .../md5-cache/app-emulation/virtiofsd-9999 | 4 +- .../virtualbox-kvm-7.1.6a_pre20250207 | 18 + .../md5-cache/app-emulation/wine-gecko-2.47.2 | 11 - .../md5-cache/app-emulation/wine-mono-7.0.0 | 10 - .../md5-cache/app-emulation/wine-mono-9.2.0 | 10 - .../md5-cache/app-emulation/wine-mono-9.3.0 | 10 - .../md5-cache/app-emulation/wine-proton-7.0.6 | 18 - .../app-emulation/wine-proton-8.0.5c | 2 +- .../md5-cache/app-emulation/wine-proton-9.0.2 | 2 +- .../md5-cache/app-emulation/wine-proton-9.0.4 | 2 +- .../md5-cache/app-emulation/wine-proton-9999 | 2 +- .../md5-cache/app-emulation/wine-staging-10.0 | 2 +- .../md5-cache/app-emulation/wine-staging-10.1 | 18 + .../md5-cache/app-emulation/wine-staging-9.0 | 2 +- .../md5-cache/app-emulation/wine-staging-9.19 | 18 - .../md5-cache/app-emulation/wine-staging-9.20 | 18 - .../md5-cache/app-emulation/wine-staging-9.21 | 18 - .../md5-cache/app-emulation/wine-staging-9.22 | 18 - .../md5-cache/app-emulation/wine-vanilla-10.0 | 4 +- .../md5-cache/app-emulation/wine-vanilla-10.1 | 2 +- .../app-emulation/wine-vanilla-7.0.2 | 18 - .../app-emulation/wine-vanilla-8.0.2 | 2 +- .../md5-cache/app-emulation/wine-vanilla-9.0 | 2 +- .../app-emulation/xen-tools-4.18.4_pre1 | 2 +- .../md5-cache/app-emulation/xen-tools-4.19.1 | 2 +- metadata/md5-cache/app-i18n/Manifest.gz | Bin 23575 -> 26469 bytes metadata/md5-cache/app-i18n/fcitx-5.1.12 | 18 + metadata/md5-cache/app-i18n/fcitx-anthy-5.1.6 | 17 + .../md5-cache/app-i18n/fcitx-chewing-5.1.7 | 15 + .../app-i18n/fcitx-chinese-addons-5.1.8 | 18 + .../md5-cache/app-i18n/fcitx-configtool-5.1.8 | 16 + .../md5-cache/app-i18n/fcitx-hangul-5.1.6 | 15 + metadata/md5-cache/app-i18n/fcitx-lua-5.0.14 | 18 + metadata/md5-cache/app-i18n/fcitx-m17n-5.1.3 | 16 + metadata/md5-cache/app-i18n/fcitx-qt-5.1.9 | 16 + metadata/md5-cache/app-i18n/fcitx-rime-5.1.10 | 15 + .../md5-cache/app-i18n/fcitx-sayura-5.1.3 | 15 + .../app-i18n/fcitx-table-extra-5.1.7 | 15 + .../app-i18n/fcitx-table-other-5.1.4 | 15 + .../md5-cache/app-i18n/fcitx-unikey-5.1.6 | 17 + .../md5-cache/app-i18n/gnulib-l10n-20241231 | 11 + metadata/md5-cache/app-i18n/ibus-1.5.31-r1 | 10 +- metadata/md5-cache/app-i18n/ibus-hangul-1.5.5 | 4 +- metadata/md5-cache/app-i18n/jfbterm-0.4.7-r5 | 14 + metadata/md5-cache/app-i18n/libime-1.1.10 | 16 + metadata/md5-cache/app-i18n/librime-1.11.2 | 16 - metadata/md5-cache/app-i18n/librime-1.13.0 | 16 + metadata/md5-cache/app-i18n/librime-1.7.3-r1 | 16 - metadata/md5-cache/app-i18n/opencc-1.1.4 | 16 - metadata/md5-cache/app-i18n/opencc-1.1.7-r1 | 17 - metadata/md5-cache/app-i18n/opencc-1.1.7-r2 | 17 + metadata/md5-cache/app-i18n/opencc-1.1.9 | 17 + .../md5-cache/app-i18n/rime-data-1.0.20250124 | 10 + .../app-i18n/transifex-client-1.6.14 | 2 +- .../app-i18n/transifex-client-1.6.17 | 2 +- metadata/md5-cache/app-i18n/xvnkb-0.2.11 | 4 +- metadata/md5-cache/app-i18n/xvnkb-0.2.11-r1 | 15 + metadata/md5-cache/app-metrics/Manifest.gz | Bin 12646 -> 12671 bytes .../md5-cache/app-metrics/alertmanager-0.24.0 | 2 +- .../md5-cache/app-metrics/alertmanager-0.26.0 | 2 +- .../md5-cache/app-metrics/alertmanager-0.28.0 | 2 +- .../app-metrics/bind_exporter-0.6.1-r1 | 2 +- .../md5-cache/app-metrics/bind_exporter-0.8.0 | 2 +- .../app-metrics/blackbox_exporter-0.24.0 | 2 +- .../app-metrics/blackbox_exporter-0.25.0 | 2 +- .../app-metrics/burrow_exporter-0.0.6-r2 | 2 +- .../app-metrics/carbonapi-booking-0.3.0-r1 | 2 +- .../app-metrics/ceph_exporter-4.1.1-r1 | 2 +- .../md5-cache/app-metrics/ceph_exporter-4.2.5 | 2 +- .../app-metrics/chrony_exporter-0.10.1 | 2 +- .../app-metrics/chrony_exporter-0.11.0 | 2 +- .../app-metrics/consul_exporter-0.13.0 | 2 +- .../app-metrics/consul_exporter-0.7.1 | 2 +- .../app-metrics/dnsmasq_exporter-0.2.0-r1 | 2 +- .../app-metrics/dnsmasq_exporter-0.3.0 | 2 +- .../app-metrics/elasticsearch_exporter-1.3.0 | 2 +- .../app-metrics/elasticsearch_exporter-1.8.0 | 2 +- .../exabgp_exporter-1.0.0_p20200718 | 2 +- .../app-metrics/exabgp_exporter-1.1.3 | 2 +- .../fritzbox_smarthome_exporter-0.0.8 | 2 +- .../fritzbox_smarthome_exporter-0.4.3 | 2 +- .../app-metrics/github-exporter-1.0.3 | 2 +- .../app-metrics/github-exporter-1.3.1 | 2 +- .../md5-cache/app-metrics/go-carbon-0.17.1 | 2 +- .../md5-cache/app-metrics/go-carbon-0.17.3 | 2 +- .../app-metrics/grok_exporter-1.0.0_rc5 | 2 +- .../app-metrics/memcached_exporter-0.10.0 | 2 +- .../app-metrics/memcached_exporter-0.15.0 | 2 +- .../app-metrics/mongodb_exporter-0.39.0 | 2 +- .../app-metrics/mongodb_exporter-0.43.1 | 2 +- .../mysqld_exporter-0.12.1_p20200622 | 2 +- .../app-metrics/mysqld_exporter-0.14.0 | 2 +- .../mysqld_exporter-0.14.0_p20221209 | 2 +- .../mysqld_exporter-0.14.0_p20230328 | 2 +- .../app-metrics/nftables-exporter-0.2.7 | 2 +- .../app-metrics/nftables-exporter-0.3.1 | 2 +- .../app-metrics/nginx-vts-exporter-0.10.7-r1 | 2 +- .../app-metrics/nginx-vts-exporter-0.10.8 | 2 +- .../md5-cache/app-metrics/node_exporter-1.8.1 | 2 +- .../md5-cache/app-metrics/node_exporter-1.8.2 | 2 +- .../md5-cache/app-metrics/node_exporter-9999 | 2 +- .../app-metrics/openvpn_exporter-0.3.0 | 2 +- .../app-metrics/postfix_exporter-0.3.0 | 2 +- .../app-metrics/postgres_exporter-0.15.0 | 2 +- .../app-metrics/postgres_exporter-0.16.0 | 2 +- .../app-metrics/process-exporter-0.7.10 | 2 +- .../app-metrics/process-exporter-0.8.5 | 2 +- .../md5-cache/app-metrics/prom2json-1.3.0 | 2 +- .../md5-cache/app-metrics/prom2json-1.4.1 | 2 +- .../md5-cache/app-metrics/prometheus-2.52.0 | 2 +- .../md5-cache/app-metrics/prometheus-3.1.0 | 2 +- .../app-metrics/prometheus-lvm-exporter-0.3.2 | 2 +- .../app-metrics/prometheus-lvm-exporter-0.3.3 | 2 +- .../prometheus-podman-exporter-1.10.1 | 2 +- .../prometheus-podman-exporter-1.11.0 | 2 +- .../prometheus-podman-exporter-1.12.0 | 2 +- .../prometheus-podman-exporter-9999 | 2 +- .../md5-cache/app-metrics/pushgateway-1.11.0 | 2 +- .../md5-cache/app-metrics/pushgateway-1.5.1 | 2 +- .../app-metrics/rabbitmq_exporter-1.0.0 | 2 +- .../app-metrics/redis_exporter-1.61.0 | 2 +- .../app-metrics/redis_exporter-1.67.0 | 2 +- .../app-metrics/smartctl_exporter-0.12.0-r1 | 2 +- .../app-metrics/snmp_exporter-0.24.1 | 2 +- .../app-metrics/snmp_exporter-0.27.0 | 2 +- .../app-metrics/uwsgi_exporter-1.1.0 | 2 +- .../app-metrics/vault_exporter-0.1.3 | 2 +- metadata/md5-cache/app-misc/Manifest.gz | Bin 73501 -> 73342 bytes metadata/md5-cache/app-misc/asciinema-2.4.0 | 10 +- metadata/md5-cache/app-misc/boxes-2.2.1 | 16 - metadata/md5-cache/app-misc/boxes-2.3.0 | 16 - metadata/md5-cache/app-misc/broot-1.44.7 | 15 + metadata/md5-cache/app-misc/dasel-2.7.0 | 2 +- metadata/md5-cache/app-misc/dateutils-0.4.10 | 2 +- metadata/md5-cache/app-misc/faq-0.0.7 | 2 +- metadata/md5-cache/app-misc/fastfetch-2.30.1 | 17 - metadata/md5-cache/app-misc/fastfetch-2.36.1 | 17 + metadata/md5-cache/app-misc/francis-24.12.1 | 16 - metadata/md5-cache/app-misc/francis-24.12.2 | 2 +- metadata/md5-cache/app-misc/fx-35.0.0 | 2 +- metadata/md5-cache/app-misc/go-jira-1.0.28 | 2 +- metadata/md5-cache/app-misc/gojq-0.12.16 | 2 +- metadata/md5-cache/app-misc/gojq-0.12.17 | 2 +- metadata/md5-cache/app-misc/jp-0.2.1 | 2 +- metadata/md5-cache/app-misc/jpipe-0.2.0-r1 | 2 +- metadata/md5-cache/app-misc/mkcert-1.4.4 | 2 +- metadata/md5-cache/app-misc/notary-0.7.0 | 2 +- metadata/md5-cache/app-misc/pet-0.4.0 | 2 +- metadata/md5-cache/app-misc/rtlamr-0.9.3 | 2 +- metadata/md5-cache/app-misc/siegfried-1.11.0 | 2 +- metadata/md5-cache/app-misc/siegfried-1.11.1 | 2 +- .../md5-cache/app-misc/siegfried-1.11.1_rc4 | 2 +- metadata/md5-cache/app-misc/spire-1.11.1 | 2 +- metadata/md5-cache/app-misc/spire-1.8.7 | 2 +- metadata/md5-cache/app-misc/tmuxp-1.52.2 | 16 + .../md5-cache/app-misc/wally-cli-2.0.1-r1 | 2 +- metadata/md5-cache/app-misc/yq-go-4.44.3 | 2 +- metadata/md5-cache/app-misc/yq-go-4.44.5 | 2 +- metadata/md5-cache/app-misc/yq-go-4.45.1 | 2 +- metadata/md5-cache/app-office/Manifest.gz | Bin 13988 -> 14484 bytes .../md5-cache/app-office/calligra-24.12.2 | 17 + .../md5-cache/app-office/calligra-4.0.1-r1 | 2 +- .../app-office/calligraplan-3.3.0-r1 | 2 +- metadata/md5-cache/app-office/kmymoney-5.1.3 | 2 +- metadata/md5-cache/app-office/kmymoney-5.1.92 | 18 + metadata/md5-cache/app-office/kraft-1.0 | 2 +- .../app-office/ktimetracker-5.0.1-r1 | 2 +- .../app-office/ktimetracker-6.0.0_pre20250109 | 2 +- metadata/md5-cache/app-office/ledger-3.3.2-r1 | 17 - metadata/md5-cache/app-office/ledger-3.3.2-r2 | 4 +- .../md5-cache/app-office/libalkimia-8.1.2-r2 | 2 +- .../app-office/libalkimia-8.1.92_p20250211 | 17 + .../app-office/libreoffice-bin-24.8.4 | 16 + .../app-office/libreoffice-bin-25.2.0 | 16 + metadata/md5-cache/app-office/merkuro-24.08.3 | 2 +- metadata/md5-cache/app-office/merkuro-24.12.1 | 17 - metadata/md5-cache/app-office/merkuro-24.12.2 | 2 +- metadata/md5-cache/app-office/scribus-1.6.3 | 4 +- metadata/md5-cache/app-office/scribus-1.7.0 | 2 +- metadata/md5-cache/app-office/skrooge-2.33.0 | 2 +- metadata/md5-cache/app-office/skrooge-25.1.0 | 2 +- metadata/md5-cache/app-portage/Manifest.gz | Bin 17792 -> 17943 bytes .../md5-cache/app-portage/cpuid2cpuflags-15 | 9 + metadata/md5-cache/app-portage/elogv-0.8.4 | 16 + metadata/md5-cache/app-portage/golop-0.2.1-r1 | 2 +- metadata/md5-cache/app-portage/kuroo-1.2.3-r1 | 2 +- metadata/md5-cache/app-portage/kuroo-9999 | 2 +- metadata/md5-cache/app-portage/pgo-0.0.2 | 2 +- metadata/md5-cache/app-portage/pgo-0.0.3 | 2 +- .../app-portage/pycargoebuild-0.13.4 | 16 - .../app-portage/pycargoebuild-0.13.5 | 4 +- metadata/md5-cache/app-shells/Manifest.gz | Bin 20068 -> 20851 bytes .../app-shells/bash-5.3_beta_p20250210 | 14 + .../app-shells/bash-5.3_beta_p20250212 | 14 + metadata/md5-cache/app-shells/fzf-0.56.3 | 2 +- metadata/md5-cache/app-shells/fzf-0.57.0 | 2 +- metadata/md5-cache/app-shells/fzf-0.59.0 | 13 + metadata/md5-cache/app-shells/peco-0.5.10 | 2 +- metadata/md5-cache/app-shells/peco-9999 | 2 +- metadata/md5-cache/app-shells/rc-1.7.4-r3 | 15 + metadata/md5-cache/app-shells/zoxide-0.9.7 | 13 + metadata/md5-cache/app-text/Manifest.gz | Bin 79697 -> 79841 bytes metadata/md5-cache/app-text/chasen-2.4.5-r1 | 17 + .../md5-cache/app-text/fbreader-0.99.4-r6 | 15 - metadata/md5-cache/app-text/htp-1.19-r1 | 2 +- metadata/md5-cache/app-text/kbibtex-0.10.0 | 2 +- .../app-text/kbibtex-0.10.50_pre20250205 | 2 +- .../md5-cache/app-text/libspelling-0.4.5-r1 | 4 +- metadata/md5-cache/app-text/marknote-1.3.0 | 2 +- metadata/md5-cache/app-text/pandoc-bin-3.5 | 11 - metadata/md5-cache/app-text/pandoc-bin-3.6.3 | 11 + metadata/md5-cache/app-text/pdfpc-4.6.0-r2 | 15 - metadata/md5-cache/app-text/pdfpc-4.7.0 | 4 +- metadata/md5-cache/app-text/poppler-25.02.0 | 16 + metadata/md5-cache/app-text/poppler-9999 | 2 +- metadata/md5-cache/app-text/qpdf-11.10.0 | 16 + metadata/md5-cache/app-text/vgrep-2.8.0 | 2 +- metadata/md5-cache/app-text/yamlfmt-0.13.0 | 2 +- metadata/md5-cache/app-text/yamlfmt-0.14.0 | 2 +- metadata/md5-cache/app-text/yamlfmt-0.15.0 | 2 +- metadata/md5-cache/app-text/zathura-cb-0.1.11 | 4 +- metadata/md5-cache/dev-ada/Manifest.gz | Bin 8866 -> 9196 bytes metadata/md5-cache/dev-ada/gnatdoc-24.0.0 | 16 - metadata/md5-cache/dev-ada/gnatdoc-24.0.0-r1 | 16 + metadata/md5-cache/dev-ada/gnatdoc-25.0.0 | 15 - metadata/md5-cache/dev-ada/gnatdoc-25.0.0-r1 | 15 + metadata/md5-cache/dev-ada/gpr-24.2.0 | 15 + .../md5-cache/dev-ada/lal-refactor-25.0.0 | 15 + metadata/md5-cache/dev-build/Manifest.gz | Bin 19656 -> 19978 bytes .../dev-build/bazel-buildtools-7.3.1 | 2 +- .../dev-build/bazel-buildtools-8.0.0 | 2 +- .../dev-build/bazel-buildtools-8.0.1 | 2 +- .../dev-build/bazel-buildtools-8.0.2 | 13 - .../dev-build/bazel-buildtools-8.0.3 | 13 + metadata/md5-cache/dev-build/bazelisk-1.24.1 | 2 +- metadata/md5-cache/dev-build/bazelisk-1.25.0 | 2 +- metadata/md5-cache/dev-build/dagger-0.9.8 | 2 +- .../dolphin-plugins-makefileactions-24.08.3 | 2 +- .../dolphin-plugins-makefileactions-24.12.1 | 16 - .../dolphin-plugins-makefileactions-24.12.2 | 2 +- metadata/md5-cache/dev-build/just-1.39.0 | 13 + metadata/md5-cache/dev-build/mage-1.11.0 | 2 +- metadata/md5-cache/dev-build/mage-1.13.0 | 2 +- metadata/md5-cache/dev-build/mage-1.15.0 | 2 +- metadata/md5-cache/dev-build/melange-0.18.3 | 2 +- metadata/md5-cache/dev-build/muon-0.4.0 | 16 + metadata/md5-cache/dev-build/rocm-cmake-6.3.2 | 13 + metadata/md5-cache/dev-cpp/Manifest.gz | Bin 31361 -> 30723 bytes metadata/md5-cache/dev-cpp/asio-1.28.1 | 15 - metadata/md5-cache/dev-cpp/asio-1.30.1 | 15 - metadata/md5-cache/dev-cpp/cctz-2.3_p20230228 | 14 - metadata/md5-cache/dev-cpp/cpp-httplib-0.18.0 | 17 - metadata/md5-cache/dev-cpp/cpp-httplib-0.18.6 | 17 + .../md5-cache/dev-cpp/rapidfuzz-cpp-3.3.1 | 4 +- .../md5-cache/dev-cpp/rapidfuzz-cpp-3.3.2 | 14 + metadata/md5-cache/dev-cpp/sol2-3.3.1 | 16 - metadata/md5-cache/dev-cpp/yaml-cpp-0.7.0-r2 | 15 - metadata/md5-cache/dev-db/Manifest.gz | Bin 32265 -> 33218 bytes metadata/md5-cache/dev-db/citus-12.0.1 | 2 +- metadata/md5-cache/dev-db/citus-12.1.6 | 2 +- metadata/md5-cache/dev-db/citus-12.1.7 | 2 +- metadata/md5-cache/dev-db/citus-13.0.1 | 2 +- metadata/md5-cache/dev-db/citus-9999 | 2 +- metadata/md5-cache/dev-db/duckdb-1.2.0 | 13 + metadata/md5-cache/dev-db/etcd-3.4.31 | 2 +- metadata/md5-cache/dev-db/etcd-3.5.12 | 2 +- metadata/md5-cache/dev-db/etcd-3.5.15 | 2 +- metadata/md5-cache/dev-db/etcd-3.5.17 | 2 +- metadata/md5-cache/dev-db/etcd-3.5.18 | 2 +- metadata/md5-cache/dev-db/futuresql-0.1.1 | 2 +- metadata/md5-cache/dev-db/influx-cli-2.7.3 | 2 +- metadata/md5-cache/dev-db/influxdb-1.8.10 | 2 +- metadata/md5-cache/dev-db/influxdb-2.7.10-r1 | 2 +- metadata/md5-cache/dev-db/influxdb-2.7.11 | 2 +- .../dev-db/mongodb-compass-bin-1.45.3 | 13 + metadata/md5-cache/dev-db/mycli-1.29.2 | 4 +- .../md5-cache/dev-db/percona-toolkit-3.5.7 | 2 +- .../md5-cache/dev-db/percona-toolkit-3.6.0 | 2 +- metadata/md5-cache/dev-db/pg_background-1.2 | 2 +- metadata/md5-cache/dev-db/pglogical-2.4.4 | 8 +- metadata/md5-cache/dev-db/pgmodeler-0.9.4 | 8 +- metadata/md5-cache/dev-db/pgpool2-4.3.10 | 8 +- metadata/md5-cache/dev-db/pgpool2-4.3.8 | 8 +- metadata/md5-cache/dev-db/pgpool2-4.4.4 | 8 +- metadata/md5-cache/dev-db/pgpool2-4.4.5 | 8 +- metadata/md5-cache/dev-db/pgpool2-4.4.7 | 8 +- metadata/md5-cache/dev-db/pgpool2-9999 | 8 +- metadata/md5-cache/dev-db/pgrouting-3.6.2 | 8 +- metadata/md5-cache/dev-db/pgrouting-3.7.0 | 2 +- metadata/md5-cache/dev-db/pgtap-1.3.1 | 8 +- metadata/md5-cache/dev-db/pgtap-1.3.3 | 8 +- metadata/md5-cache/dev-db/plr-8.4.5 | 10 +- metadata/md5-cache/dev-db/plr-8.4.6 | 10 +- metadata/md5-cache/dev-db/postgis-3.3.7-r1 | 10 +- metadata/md5-cache/dev-db/postgis-3.3.8 | 10 +- metadata/md5-cache/dev-db/postgis-3.4.3-r1 | 10 +- metadata/md5-cache/dev-db/postgis-3.4.4 | 10 +- metadata/md5-cache/dev-db/postgis-3.5.0-r1 | 10 +- metadata/md5-cache/dev-db/postgis-3.5.1 | 10 +- metadata/md5-cache/dev-db/postgis-3.5.2 | 10 +- metadata/md5-cache/dev-db/postgresql-12.22 | 16 - metadata/md5-cache/dev-db/postgresql-13.19 | 16 + metadata/md5-cache/dev-db/postgresql-14.16 | 16 + metadata/md5-cache/dev-db/postgresql-15.11 | 16 + metadata/md5-cache/dev-db/postgresql-16.7 | 16 + metadata/md5-cache/dev-db/postgresql-17.3 | 16 + metadata/md5-cache/dev-db/repmgr-5.5.0 | 2 +- metadata/md5-cache/dev-db/rqlite-8.36.10 | 2 +- metadata/md5-cache/dev-db/rqlite-8.36.2 | 2 +- metadata/md5-cache/dev-db/rqlite-8.36.3 | 2 +- metadata/md5-cache/dev-db/rqlite-8.36.5 | 2 +- metadata/md5-cache/dev-db/rqlite-8.36.6 | 2 +- metadata/md5-cache/dev-db/rqlite-8.36.8 | 2 +- metadata/md5-cache/dev-db/slony1-2.2.10-r1 | 10 +- metadata/md5-cache/dev-db/spatialite-5.1.0-r2 | 17 + metadata/md5-cache/dev-db/sqlite-3.48.0-r1 | 15 - metadata/md5-cache/dev-db/sqlite-3.49.0 | 16 + metadata/md5-cache/dev-db/sqlmap-1.8.9 | 14 - metadata/md5-cache/dev-db/sqlmap-1.9 | 14 + metadata/md5-cache/dev-db/timescaledb-2.17.2 | 2 +- metadata/md5-cache/dev-db/timescaledb-2.18.0 | 16 - metadata/md5-cache/dev-db/timescaledb-2.18.1 | 16 + metadata/md5-cache/dev-db/tora-3.2-r2 | 17 - metadata/md5-cache/dev-debug/Manifest.gz | Bin 10104 -> 10111 bytes metadata/md5-cache/dev-debug/gdb-15.2-r101 | 8 +- metadata/md5-cache/dev-debug/gdb-16.1 | 17 - metadata/md5-cache/dev-debug/gdb-16.2 | 6 +- metadata/md5-cache/dev-debug/gdb-9999 | 6 +- metadata/md5-cache/dev-debug/gprofng-gui-2.0 | 13 + metadata/md5-cache/dev-debug/kdbg-3.1.0 | 2 +- .../md5-cache/dev-debug/valgrind-3.23.0_p3 | 2 +- metadata/md5-cache/dev-debug/valgrind-3.24.0 | 2 +- .../md5-cache/dev-debug/valgrind-3.24.0_p1 | 2 +- metadata/md5-cache/dev-dotnet/Manifest.gz | Bin 8885 -> 9053 bytes .../dev-dotnet/fsautocomplete-0.76.1 | 15 + metadata/md5-cache/dev-embedded/Manifest.gz | Bin 12843 -> 12842 bytes .../dev-embedded/arduino-builder-1.5.4-r1 | 2 +- metadata/md5-cache/dev-games/Manifest.gz | Bin 8764 -> 8930 bytes metadata/md5-cache/dev-games/libnw-1.30.02-r1 | 2 +- metadata/md5-cache/dev-games/libnw-1.30.02-r2 | 13 + metadata/md5-cache/dev-go/Manifest.gz | Bin 6661 -> 6669 bytes metadata/md5-cache/dev-go/delve-1.20.2 | 2 +- metadata/md5-cache/dev-go/delve-1.21.2 | 2 +- metadata/md5-cache/dev-go/delve-1.22.1 | 2 +- metadata/md5-cache/dev-go/delve-1.23.1 | 2 +- metadata/md5-cache/dev-go/delve-1.24.0 | 2 +- metadata/md5-cache/dev-go/enumer-1.5.10 | 2 +- .../md5-cache/dev-go/get-ego-vendor-0.2.0 | 2 +- metadata/md5-cache/dev-go/go-bindata-3.1.3 | 2 +- .../dev-go/go-colortext-0_pre20150720 | 2 +- metadata/md5-cache/dev-go/go-critic-0.6.4 | 2 +- .../dev-go/go-license-detector-4.3.0 | 2 +- metadata/md5-cache/dev-go/go-licenses-1.2.1 | 2 +- metadata/md5-cache/dev-go/go-licenses-1.6.0 | 2 +- metadata/md5-cache/dev-go/go-md2man-2.0.2 | 2 +- metadata/md5-cache/dev-go/go-md2man-2.0.3 | 2 +- metadata/md5-cache/dev-go/go-tools-0.1.10 | 2 +- metadata/md5-cache/dev-go/go-tools-0.20.0 | 2 +- metadata/md5-cache/dev-go/go-tools-0.24.0 | 2 +- metadata/md5-cache/dev-go/go-tools-0.28.0 | 2 +- .../md5-cache/dev-go/go-tour-0_pre20200201 | 2 +- metadata/md5-cache/dev-go/gocov-1.1.0 | 2 +- metadata/md5-cache/dev-go/gogo-protobuf-1.3.2 | 2 +- .../md5-cache/dev-go/golangci-lint-1.50.1-r1 | 2 +- .../md5-cache/dev-go/golangci-lint-1.55.2 | 2 +- .../md5-cache/dev-go/golangci-lint-1.56.2 | 2 +- .../md5-cache/dev-go/golangci-lint-1.59.1 | 2 +- .../md5-cache/dev-go/golangci-lint-1.61.0 | 2 +- .../md5-cache/dev-go/gom-0_pre20151110-r1 | 2 +- metadata/md5-cache/dev-go/gopls-0.14.2 | 2 +- metadata/md5-cache/dev-go/gopls-0.17.0 | 2 +- metadata/md5-cache/dev-go/gopls-0.17.1 | 2 +- metadata/md5-cache/dev-go/gopls-0.9.5 | 2 +- metadata/md5-cache/dev-go/goversion-1.2.0-r1 | 2 +- metadata/md5-cache/dev-go/gox-1.0.1 | 2 +- .../md5-cache/dev-go/licenseclassifier-2.0.0 | 2 +- metadata/md5-cache/dev-go/lichen-0.1.7 | 2 +- metadata/md5-cache/dev-go/protobuf-go-1.30.0 | 2 +- metadata/md5-cache/dev-go/vend-1.0.3 | 2 +- metadata/md5-cache/dev-java/Manifest.gz | Bin 74661 -> 74312 bytes .../dev-java/checker-framework-qual-3.48.3 | 14 - .../dev-java/checker-framework-qual-3.48.4 | 4 +- metadata/md5-cache/dev-java/jol-core-0.16-r1 | 15 - metadata/md5-cache/dev-java/jol-core-0.17 | 4 +- metadata/md5-cache/dev-java/openjdk-25_p8 | 16 - metadata/md5-cache/dev-java/openjdk-25_p9 | 16 + .../md5-cache/dev-java/openjdk-bin-25_p8_beta | 16 - .../md5-cache/dev-java/openjdk-bin-25_p9_beta | 16 + .../md5-cache/dev-java/protobuf-java-4.29.3 | 4 +- .../md5-cache/dev-java/stax2-api-4.2.1-r1 | 14 - metadata/md5-cache/dev-java/stax2-api-4.2.2 | 14 + metadata/md5-cache/dev-lang/Manifest.gz | Bin 55386 -> 56397 bytes metadata/md5-cache/dev-lang/abs-2.6.0 | 2 +- metadata/md5-cache/dev-lang/crystal-1.15.1 | 16 + metadata/md5-cache/dev-lang/cue-0.7.0 | 2 +- metadata/md5-cache/dev-lang/dafny-4.10.0 | 16 + metadata/md5-cache/dev-lang/execline-2.9.6.1 | 4 +- metadata/md5-cache/dev-lang/gnat-gpl-2021-r5 | 2 +- metadata/md5-cache/dev-lang/go-1.22.11-r1 | 2 +- metadata/md5-cache/dev-lang/go-1.22.12 | 6 +- metadata/md5-cache/dev-lang/go-1.23.5-r1 | 2 +- metadata/md5-cache/dev-lang/go-1.23.6 | 6 +- metadata/md5-cache/dev-lang/go-9999 | 2 +- metadata/md5-cache/dev-lang/mmix-20160804-r1 | 4 +- metadata/md5-cache/dev-lang/mmix-20160804-r2 | 14 + metadata/md5-cache/dev-lang/nim-2.2.2 | 14 + metadata/md5-cache/dev-lang/nprolog-3.90 | 12 + metadata/md5-cache/dev-lang/orc-0.4.40-r1 | 4 +- metadata/md5-cache/dev-lang/php-8.3.16 | 2 +- metadata/md5-cache/dev-lang/pypy-3.11.7.3.18 | 14 - .../md5-cache/dev-lang/pypy-3.11.7.3.18_p1 | 14 + .../md5-cache/dev-lang/pypy3-exe-3.11.7.3.18 | 4 +- .../md5-cache/dev-lang/python-3.14.0_alpha5 | 16 + .../dev-lang/python-3.14.0_alpha5-r100 | 16 + metadata/md5-cache/dev-lang/rust-1.71.1-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.71.1-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.74.1-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.74.1-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.75.0-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.75.0-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.76.0-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.76.0-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.77.1-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.77.1-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.78.0-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.78.0-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.79.0-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.79.0-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.80.1-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.80.1-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.81.0-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.81.0-r101 | 17 + metadata/md5-cache/dev-lang/rust-1.82.0-r100 | 17 - metadata/md5-cache/dev-lang/rust-1.82.0-r101 | 17 - metadata/md5-cache/dev-lang/rust-1.82.0-r102 | 17 + metadata/md5-cache/dev-lang/rust-1.83.0-r1 | 17 - metadata/md5-cache/dev-lang/rust-1.83.0-r2 | 17 + metadata/md5-cache/dev-lang/rust-1.84.0 | 17 - metadata/md5-cache/dev-lang/rust-1.84.0-r1 | 17 + metadata/md5-cache/dev-lang/rust-1.84.1 | 17 - metadata/md5-cache/dev-lang/rust-1.84.1-r1 | 17 + .../md5-cache/dev-lang/rust-bin-1.71.1-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.71.1-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.71.1-r102 | 16 + .../md5-cache/dev-lang/rust-bin-1.74.1-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.74.1-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.74.1-r102 | 16 + .../md5-cache/dev-lang/rust-bin-1.75.0-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.75.0-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.75.0-r102 | 16 + .../md5-cache/dev-lang/rust-bin-1.76.0-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.76.0-r101 | 16 + .../md5-cache/dev-lang/rust-bin-1.77.1-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.77.1-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.77.1-r102 | 16 + .../md5-cache/dev-lang/rust-bin-1.78.0-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.78.0-r101 | 16 + .../md5-cache/dev-lang/rust-bin-1.79.0-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.79.0-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.79.0-r102 | 16 + .../md5-cache/dev-lang/rust-bin-1.80.1-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.80.1-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.80.1-r102 | 16 + .../md5-cache/dev-lang/rust-bin-1.81.0-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.81.0-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.81.0-r102 | 16 + .../md5-cache/dev-lang/rust-bin-1.82.0-r100 | 16 - .../md5-cache/dev-lang/rust-bin-1.82.0-r101 | 16 - .../md5-cache/dev-lang/rust-bin-1.82.0-r102 | 16 + metadata/md5-cache/dev-lang/rust-bin-1.83.0 | 16 - .../md5-cache/dev-lang/rust-bin-1.83.0-r1 | 16 + metadata/md5-cache/dev-lang/rust-bin-1.84.0 | 16 - .../md5-cache/dev-lang/rust-bin-1.84.0-r1 | 16 + metadata/md5-cache/dev-lang/rust-bin-1.84.1 | 16 - .../md5-cache/dev-lang/rust-bin-1.84.1-r1 | 16 + .../md5-cache/dev-lang/spark-2024.01.11-r1 | 16 + .../md5-cache/dev-lang/spidermonkey-128.5.0 | 17 - .../md5-cache/dev-lang/spidermonkey-128.7.0 | 17 + metadata/md5-cache/dev-lang/tcl-8.6.15 | 4 +- metadata/md5-cache/dev-lang/tk-8.6.15 | 4 +- metadata/md5-cache/dev-lang/xsb-4.0.0-r1 | 15 - metadata/md5-cache/dev-lang/xsb-4.0.0-r2 | 15 + metadata/md5-cache/dev-libs/Manifest.gz | Bin 185465 -> 184769 bytes .../md5-cache/dev-libs/apache-arrow-18.0.0 | 17 - .../md5-cache/dev-libs/apache-arrow-18.1.0-r2 | 17 - .../md5-cache/dev-libs/apache-arrow-19.0.0 | 4 +- metadata/md5-cache/dev-libs/appstream-1.0.4 | 10 +- metadata/md5-cache/dev-libs/bglibs-2.04-r3 | 2 +- metadata/md5-cache/dev-libs/c-blosc2-2.16.0 | 17 + metadata/md5-cache/dev-libs/ell-0.72 | 14 + .../md5-cache/dev-libs/flatbuffers-24.12.23 | 14 - .../md5-cache/dev-libs/flatbuffers-25.1.21 | 14 - .../md5-cache/dev-libs/flatbuffers-25.1.24 | 4 +- .../md5-cache/dev-libs/flatbuffers-25.2.10 | 14 + metadata/md5-cache/dev-libs/gumbo-0.12.2 | 15 - metadata/md5-cache/dev-libs/gumbo-0.13.0 | 15 + metadata/md5-cache/dev-libs/hipother-6.3.2 | 10 + metadata/md5-cache/dev-libs/imath-3.1.12 | 4 +- metadata/md5-cache/dev-libs/isa-l-2.31.0 | 4 +- metadata/md5-cache/dev-libs/kdiagram-2.8.0 | 2 +- metadata/md5-cache/dev-libs/kdiagram-3.0.1 | 2 +- .../md5-cache/dev-libs/kirigami-addons-1.5.0 | 17 - .../md5-cache/dev-libs/kirigami-addons-1.6.0 | 2 +- .../md5-cache/dev-libs/kirigami-addons-1.7.0 | 2 +- .../md5-cache/dev-libs/kopeninghours-24.08.3 | 2 +- .../md5-cache/dev-libs/kopeninghours-24.12.1 | 18 - .../md5-cache/dev-libs/kopeninghours-24.12.2 | 2 +- .../md5-cache/dev-libs/kosmindoormap-24.08.3 | 2 +- .../md5-cache/dev-libs/kosmindoormap-24.12.1 | 17 - .../md5-cache/dev-libs/kosmindoormap-24.12.2 | 2 +- .../dev-libs/kpublictransport-24.08.3 | 2 +- .../dev-libs/kpublictransport-24.12.1 | 17 - .../dev-libs/kpublictransport-24.12.2 | 2 +- metadata/md5-cache/dev-libs/kqoauth-0.98-r3 | 13 - metadata/md5-cache/dev-libs/ktextaddons-1.5.4 | 2 +- .../md5-cache/dev-libs/kweathercore-24.08.3 | 2 +- .../md5-cache/dev-libs/kweathercore-24.12.1 | 16 - .../md5-cache/dev-libs/kweathercore-24.12.2 | 2 +- metadata/md5-cache/dev-libs/libcdio-2.2.0 | 16 + .../md5-cache/dev-libs/libcdio-paranoia-2.0.2 | 16 + metadata/md5-cache/dev-libs/libei-1.4.0 | 16 + metadata/md5-cache/dev-libs/libffi-3.4.6-r3 | 4 +- metadata/md5-cache/dev-libs/libffi-3.4.7 | 14 + metadata/md5-cache/dev-libs/libffi-9999 | 4 +- metadata/md5-cache/dev-libs/libical-3.0.19 | 4 +- metadata/md5-cache/dev-libs/libinput-1.27.1 | 4 +- metadata/md5-cache/dev-libs/libintl-0.23 | 15 - metadata/md5-cache/dev-libs/libintl-0.23.1 | 15 + metadata/md5-cache/dev-libs/libpcre2-10.42-r1 | 16 - metadata/md5-cache/dev-libs/libpcre2-10.42-r2 | 16 - metadata/md5-cache/dev-libs/libpcre2-10.43 | 16 - metadata/md5-cache/dev-libs/libpcre2-10.44-r1 | 4 +- metadata/md5-cache/dev-libs/libpcre2-10.45 | 16 + metadata/md5-cache/dev-libs/libtasn1-4.20.0 | 14 + .../md5-cache/dev-libs/libvformat-1.13-r3 | 12 + metadata/md5-cache/dev-libs/libxml2-2.11.8 | 17 - metadata/md5-cache/dev-libs/libxml2-2.12.8 | 17 - metadata/md5-cache/dev-libs/mimalloc-2.1.8 | 15 - metadata/md5-cache/dev-libs/nspr-4.35-r2 | 13 - metadata/md5-cache/dev-libs/openct-0.6.20-r6 | 15 + metadata/md5-cache/dev-libs/openssl-3.0.16 | 17 + metadata/md5-cache/dev-libs/openssl-3.1.8 | 17 + metadata/md5-cache/dev-libs/openssl-3.2.4 | 17 + metadata/md5-cache/dev-libs/openssl-3.3.2-r2 | 4 +- metadata/md5-cache/dev-libs/openssl-3.3.3 | 17 + metadata/md5-cache/dev-libs/openssl-3.4.1 | 16 + metadata/md5-cache/dev-libs/poco-1.12.4 | 17 - metadata/md5-cache/dev-libs/poco-1.14.0-r1 | 4 +- metadata/md5-cache/dev-libs/poco-1.14.1 | 17 + metadata/md5-cache/dev-libs/protobuf-c-1.5.1 | 15 + metadata/md5-cache/dev-libs/qcoro5-0.10.0-r1 | 17 - .../dev-libs/qoauth-2.0.1_pre20160315-r3 | 16 - metadata/md5-cache/dev-libs/qxlsx-1.5.0 | 4 +- metadata/md5-cache/dev-libs/rocdbgapi-5.7.1 | 8 +- metadata/md5-cache/dev-libs/rocdbgapi-6.1.1 | 8 +- metadata/md5-cache/dev-libs/rocdbgapi-6.3.0 | 8 +- metadata/md5-cache/dev-libs/rocdbgapi-6.3.2 | 15 + .../md5-cache/dev-libs/rocm-comgr-5.1.3-r3 | 14 - .../md5-cache/dev-libs/rocm-comgr-5.3.3-r2 | 16 - .../md5-cache/dev-libs/rocm-comgr-5.4.3-r1 | 16 - metadata/md5-cache/dev-libs/rocm-comgr-5.5.1 | 16 - metadata/md5-cache/dev-libs/rocm-comgr-5.7.1 | 6 +- metadata/md5-cache/dev-libs/rocm-comgr-6.3.0 | 17 - .../md5-cache/dev-libs/rocm-comgr-6.3.2-r1 | 17 + .../dev-libs/rocm-device-libs-5.1.3-r1 | 16 - .../md5-cache/dev-libs/rocm-device-libs-5.3.3 | 16 - .../md5-cache/dev-libs/rocm-device-libs-5.4.3 | 16 - .../md5-cache/dev-libs/rocm-device-libs-5.5.1 | 16 - .../md5-cache/dev-libs/rocm-device-libs-6.3.2 | 15 + .../dev-libs/rocm-opencl-runtime-5.1.3 | 16 - .../dev-libs/rocm-opencl-runtime-5.3.3-r1 | 16 - .../dev-libs/rocm-opencl-runtime-5.4.3-r1 | 16 - .../dev-libs/rocm-opencl-runtime-5.5.1 | 16 - .../dev-libs/rocm-opencl-runtime-6.3.2 | 16 + .../md5-cache/dev-libs/rocr-runtime-5.1.3-r1 | 14 - .../md5-cache/dev-libs/rocr-runtime-5.3.3-r1 | 15 - .../md5-cache/dev-libs/rocr-runtime-5.4.3-r1 | 15 - .../md5-cache/dev-libs/rocr-runtime-5.5.1 | 15 - .../md5-cache/dev-libs/rocr-runtime-6.3.2 | 16 + .../dev-libs/roct-thunk-interface-5.1.3 | 14 - .../dev-libs/roct-thunk-interface-5.3.3 | 14 - .../dev-libs/roct-thunk-interface-5.4.3 | 14 - .../dev-libs/roct-thunk-interface-5.5.1 | 14 - .../dev-libs/roct-thunk-interface-6.3.2 | 17 + .../md5-cache/dev-libs/simdjson-3.12.1-r1 | 16 + metadata/md5-cache/dev-libs/skalibs-2.14.3.0 | 4 +- .../md5-cache/dev-libs/tre-0.8.0_p20210321-r1 | 16 - .../md5-cache/dev-libs/tre-0.8.0_p20210321-r2 | 16 - .../md5-cache/dev-libs/tre-0.8.0_p20210321-r3 | 16 - metadata/md5-cache/dev-libs/tre-0.9.0-r1 | 16 + .../md5-cache/dev-libs/tree-sitter-0.24.3 | 4 +- .../md5-cache/dev-libs/tree-sitter-0.25.1 | 12 + .../dev-libs/tree-sitter-bash-0.23.3 | 17 + .../md5-cache/dev-libs/tree-sitter-c-0.23.2 | 17 + .../md5-cache/dev-libs/tree-sitter-c-0.23.3 | 17 + .../md5-cache/dev-libs/tree-sitter-c-0.23.4 | 17 + .../md5-cache/dev-libs/tree-sitter-c-0.23.5 | 17 + .../md5-cache/dev-libs/tree-sitter-css-0.23.2 | 14 + .../md5-cache/dev-libs/tree-sitter-go-0.23.4 | 14 + .../dev-libs/tree-sitter-html-0.23.2 | 17 + .../dev-libs/tree-sitter-javascript-0.23.1 | 17 + .../dev-libs/tree-sitter-json-0.24.8 | 17 + .../dev-libs/tree-sitter-python-0.23.6 | 17 + .../dev-libs/tree-sitter-rust-0.23.2 | 17 + metadata/md5-cache/dev-lisp/Manifest.gz | Bin 5840 -> 5846 bytes .../md5-cache/dev-lisp/c2ffi-18.1.0.20240926 | 14 - .../dev-lisp/c2ffi-18.1.0.20240926-r1 | 16 + metadata/md5-cache/dev-ml/Manifest.gz | Bin 107169 -> 107780 bytes metadata/md5-cache/dev-ml/llvm-15.0.7 | 2 +- metadata/md5-cache/dev-ml/llvm-16.0.6 | 2 +- metadata/md5-cache/dev-ml/llvm-17.0.6 | 2 +- metadata/md5-cache/dev-ml/llvm-18.1.8 | 2 +- metadata/md5-cache/dev-ml/llvm-19.1.4 | 2 +- metadata/md5-cache/dev-ml/llvm-19.1.7 | 2 +- .../md5-cache/dev-ml/llvm-20.0.0_pre20250125 | 2 +- metadata/md5-cache/dev-ml/llvm-20.1.0_rc1 | 2 +- metadata/md5-cache/dev-ml/llvm-20.1.0_rc2 | 16 + metadata/md5-cache/dev-ml/llvm-21.0.0.9999 | 2 +- .../md5-cache/dev-ml/llvm-21.0.0_pre20250201 | 2 +- .../md5-cache/dev-ml/llvm-21.0.0_pre20250208 | 16 + .../md5-cache/dev-ml/llvm-21.0.0_pre20250211 | 16 + metadata/md5-cache/dev-ml/reason-3.15.0 | 15 + .../dev-perl/Business-ISBN-Data-20250205.1.0 | 16 + .../md5-cache/dev-perl/Business-ISSN-1.8.0 | 16 + .../md5-cache/dev-perl/Crypt-URandom-0.530.0 | 16 + metadata/md5-cache/dev-perl/CryptX-0.85.0 | 16 + .../Glib-Object-Introspection-0.51.0-r1 | 16 + .../md5-cache/dev-perl/IO-Interactive-1.26.0 | 16 + .../md5-cache/dev-perl/MIME-Types-2.270.0 | 16 + .../dev-perl/Mail-DMARC-1.202.502.30 | 16 + metadata/md5-cache/dev-perl/Manifest.gz | Bin 312572 -> 314656 bytes .../md5-cache/dev-perl/Net-SSLeay-1.940.0 | 2 +- .../md5-cache/dev-perl/Perl-Version-1.18.0 | 16 + metadata/md5-cache/dev-perl/Sys-Virt-10.9.0 | 4 +- metadata/md5-cache/dev-perl/Sys-Virt-11.0.0 | 16 + .../md5-cache/dev-perl/Text-CSV_XS-1.600.0 | 16 + .../dev-perl/XS-Parse-Sublike-0.370.0 | 16 + .../md5-cache/dev-perl/YAML-LibYAML-0.903.0 | 16 + metadata/md5-cache/dev-php/Manifest.gz | Bin 27589 -> 27584 bytes metadata/md5-cache/dev-php/pecl-ssh2-1.4.1 | 16 - metadata/md5-cache/dev-php/pecl-ssh2-1.4.1-r1 | 16 + metadata/md5-cache/dev-php/pecl-ssh2-9999 | 4 +- .../md5-cache/dev-php/pecl-stomp-2.0.3-r1 | 17 - .../md5-cache/dev-php/pecl-stomp-2.0.3-r2 | 17 + metadata/md5-cache/dev-python/Manifest.gz | Bin 381833 -> 383373 bytes .../dev-python/aiohappyeyeballs-2.4.6 | 16 + .../md5-cache/dev-python/aioresponses-0.7.7 | 16 - .../md5-cache/dev-python/aioresponses-0.7.8 | 4 +- .../md5-cache/dev-python/aiounittest-1.4.3 | 16 + metadata/md5-cache/dev-python/alembic-1.14.0 | 16 - metadata/md5-cache/dev-python/alembic-1.14.1 | 4 +- metadata/md5-cache/dev-python/apsw-3.49.0.0 | 16 + metadata/md5-cache/dev-python/atpublic-4.1.0 | 16 - metadata/md5-cache/dev-python/atpublic-5.0 | 16 - metadata/md5-cache/dev-python/atpublic-5.1 | 4 +- metadata/md5-cache/dev-python/bincopy-20.0.0 | 16 - metadata/md5-cache/dev-python/bincopy-20.1.0 | 4 +- metadata/md5-cache/dev-python/boto3-1.36.12 | 16 - metadata/md5-cache/dev-python/boto3-1.36.13 | 16 - metadata/md5-cache/dev-python/boto3-1.36.14 | 16 - metadata/md5-cache/dev-python/boto3-1.36.15 | 16 - metadata/md5-cache/dev-python/boto3-1.36.16 | 16 + metadata/md5-cache/dev-python/boto3-1.36.17 | 16 + metadata/md5-cache/dev-python/boto3-1.36.18 | 16 + metadata/md5-cache/dev-python/boto3-1.36.19 | 16 + metadata/md5-cache/dev-python/boto3-1.36.2 | 16 - metadata/md5-cache/dev-python/boto3-1.36.20 | 16 + metadata/md5-cache/dev-python/boto3-1.36.6 | 4 +- .../md5-cache/dev-python/botocore-1.36.12 | 16 - .../md5-cache/dev-python/botocore-1.36.13 | 16 - .../md5-cache/dev-python/botocore-1.36.14 | 16 - .../md5-cache/dev-python/botocore-1.36.15 | 16 - .../md5-cache/dev-python/botocore-1.36.16 | 16 + .../md5-cache/dev-python/botocore-1.36.17 | 16 + .../md5-cache/dev-python/botocore-1.36.18 | 16 + .../md5-cache/dev-python/botocore-1.36.19 | 16 + metadata/md5-cache/dev-python/botocore-1.36.2 | 16 - .../md5-cache/dev-python/botocore-1.36.20 | 16 + metadata/md5-cache/dev-python/botocore-1.36.6 | 4 +- .../md5-cache/dev-python/cachetools-5.5.0 | 16 - .../md5-cache/dev-python/cachetools-5.5.1 | 4 +- metadata/md5-cache/dev-python/cfn-lint-1.22.3 | 16 - metadata/md5-cache/dev-python/cfn-lint-1.22.7 | 4 +- metadata/md5-cache/dev-python/cfn-lint-1.25.1 | 16 + metadata/md5-cache/dev-python/clang-15.0.7 | 2 +- metadata/md5-cache/dev-python/clang-16.0.6 | 2 +- metadata/md5-cache/dev-python/clang-17.0.6 | 2 +- metadata/md5-cache/dev-python/clang-18.1.8 | 2 +- metadata/md5-cache/dev-python/clang-19.1.4 | 2 +- metadata/md5-cache/dev-python/clang-19.1.7 | 2 +- .../dev-python/clang-20.0.0_pre20250125 | 2 +- .../md5-cache/dev-python/clang-20.1.0_rc1 | 2 +- .../md5-cache/dev-python/clang-20.1.0_rc2 | 16 + .../md5-cache/dev-python/clang-21.0.0.9999 | 2 +- .../dev-python/clang-21.0.0_pre20250201 | 2 +- .../dev-python/clang-21.0.0_pre20250208 | 16 + .../dev-python/clang-21.0.0_pre20250211 | 16 + metadata/md5-cache/dev-python/coverage-7.6.11 | 17 + metadata/md5-cache/dev-python/coverage-7.6.12 | 17 + metadata/md5-cache/dev-python/cppy-1.3.1 | 16 + metadata/md5-cache/dev-python/cramjam-2.9.1 | 4 +- .../md5-cache/dev-python/cryptography-44.0.1 | 17 + metadata/md5-cache/dev-python/cwcwidth-0.1.10 | 17 + metadata/md5-cache/dev-python/cython-3.0.12 | 17 + .../dev-python/dependency-groups-1.3.0 | 16 + .../md5-cache/dev-python/deprecated-1.2.15 | 16 - .../md5-cache/dev-python/deprecated-1.2.17 | 4 +- .../md5-cache/dev-python/elasticsearch-8.17.0 | 16 - .../md5-cache/dev-python/elasticsearch-8.17.1 | 4 +- .../md5-cache/dev-python/ensurepip-pip-25.0.1 | 11 + metadata/md5-cache/dev-python/environs-11.2.1 | 16 - metadata/md5-cache/dev-python/environs-12.0.0 | 16 - metadata/md5-cache/dev-python/environs-14.0.0 | 16 - metadata/md5-cache/dev-python/environs-14.1.1 | 16 + metadata/md5-cache/dev-python/evdev-1.9.0 | 17 + metadata/md5-cache/dev-python/executing-2.2.0 | 4 +- metadata/md5-cache/dev-python/faker-33.3.1 | 16 - metadata/md5-cache/dev-python/faker-35.0.0 | 4 +- metadata/md5-cache/dev-python/faker-35.2.2 | 16 + metadata/md5-cache/dev-python/faker-36.1.0 | 16 + metadata/md5-cache/dev-python/faker-36.1.1 | 16 + .../md5-cache/dev-python/fakeredis-2.27.0 | 16 + metadata/md5-cache/dev-python/filelock-3.16.1 | 16 - metadata/md5-cache/dev-python/filelock-3.17.0 | 4 +- metadata/md5-cache/dev-python/fixtures-4.2.3 | 16 + .../md5-cache/dev-python/fixtures-4.2.4_p1 | 16 + .../md5-cache/dev-python/flatbuffers-24.12.23 | 16 - .../md5-cache/dev-python/flatbuffers-25.1.21 | 16 - .../md5-cache/dev-python/flatbuffers-25.1.24 | 4 +- .../md5-cache/dev-python/flatbuffers-25.2.10 | 16 + .../md5-cache/dev-python/fonttools-4.55.6 | 4 +- .../md5-cache/dev-python/fonttools-4.56.0 | 17 + metadata/md5-cache/dev-python/fpylll-0.6.2 | 17 - metadata/md5-cache/dev-python/fpylll-0.6.3 | 4 +- .../dev-python/gdb-pt-dump-0.0.0_p20250105 | 15 + .../md5-cache/dev-python/gdb-pt-dump-9999 | 2 +- .../google-api-python-client-2.161.0 | 16 + .../md5-cache/dev-python/google-auth-2.37.0 | 16 - .../md5-cache/dev-python/google-auth-2.38.0 | 4 +- .../googleapis-common-protos-1.67.0 | 16 + metadata/md5-cache/dev-python/griffe-1.5.5 | 16 - metadata/md5-cache/dev-python/griffe-1.5.7 | 16 + metadata/md5-cache/dev-python/grpcio-1.68.1 | 4 +- .../md5-cache/dev-python/gst-python-1.24.11 | 4 +- metadata/md5-cache/dev-python/hpack-4.0.0-r1 | 16 - metadata/md5-cache/dev-python/hpack-4.1.0 | 4 +- .../md5-cache/dev-python/hyperframe-6.0.1-r1 | 16 - .../md5-cache/dev-python/hyperframe-6.1.0 | 4 +- .../md5-cache/dev-python/hypothesis-6.123.17 | 16 - .../md5-cache/dev-python/hypothesis-6.124.3 | 4 +- .../md5-cache/dev-python/hypothesis-6.124.7 | 16 - .../md5-cache/dev-python/hypothesis-6.125.0 | 16 - .../md5-cache/dev-python/hypothesis-6.125.1 | 16 - .../md5-cache/dev-python/hypothesis-6.125.3 | 16 + metadata/md5-cache/dev-python/icalendar-6.1.0 | 16 - metadata/md5-cache/dev-python/icalendar-6.1.1 | 4 +- metadata/md5-cache/dev-python/id-1.5.0 | 4 +- metadata/md5-cache/dev-python/identify-2.6.5 | 16 - metadata/md5-cache/dev-python/identify-2.6.6 | 4 +- metadata/md5-cache/dev-python/identify-2.6.7 | 16 + .../dev-python/importlib-metadata-8.5.0 | 16 - .../dev-python/importlib-metadata-8.6.1 | 4 +- .../dev-python/inline-snapshot-0.20.2 | 16 + metadata/md5-cache/dev-python/josepy-1.14.0 | 16 - metadata/md5-cache/dev-python/josepy-1.15.0 | 4 +- metadata/md5-cache/dev-python/josepy-2.0.0 | 16 + .../dev-python/jsonschema-path-0.3.3 | 16 - .../dev-python/jsonschema-path-0.3.4 | 4 +- .../md5-cache/dev-python/legacy-cgi-2.6.2 | 4 +- .../dev-python/libvirt-python-10.1.0 | 17 - .../dev-python/libvirt-python-10.10.0 | 4 +- .../dev-python/libvirt-python-11.0.0 | 17 + .../md5-cache/dev-python/libvirt-python-9.8.0 | 17 - .../md5-cache/dev-python/libvirt-python-9.9.0 | 17 - metadata/md5-cache/dev-python/lit-15.0.7 | 2 +- metadata/md5-cache/dev-python/lit-16.0.6 | 2 +- metadata/md5-cache/dev-python/lit-17.0.6 | 2 +- metadata/md5-cache/dev-python/lit-18.1.8 | 2 +- metadata/md5-cache/dev-python/lit-19.1.4 | 2 +- metadata/md5-cache/dev-python/lit-19.1.7 | 2 +- .../dev-python/lit-20.0.0_pre20250125 | 2 +- metadata/md5-cache/dev-python/lit-20.1.0_rc1 | 2 +- metadata/md5-cache/dev-python/lit-20.1.0_rc2 | 15 + metadata/md5-cache/dev-python/lit-21.0.0.9999 | 2 +- .../dev-python/lit-21.0.0_pre20250201 | 2 +- .../dev-python/lit-21.0.0_pre20250208 | 15 + .../dev-python/lit-21.0.0_pre20250211 | 15 + metadata/md5-cache/dev-python/lxml-5.3.1 | 17 + metadata/md5-cache/dev-python/markdown2-2.5.2 | 16 - metadata/md5-cache/dev-python/markdown2-2.5.3 | 4 +- .../dev-python/mcbootflash-10.0.0-r1 | 16 - .../md5-cache/dev-python/mcbootflash-10.1.0 | 16 - .../md5-cache/dev-python/mcbootflash-10.1.1 | 4 +- .../dev-python/mkdocs-autorefs-1.2.0 | 16 - .../dev-python/mkdocs-autorefs-1.3.1 | 16 + .../dev-python/mkdocs-material-9.6.3 | 16 + .../dev-python/mkdocs-material-9.6.4 | 16 + .../dev-python/mkdocs-static-i18n-1.2.3 | 16 - .../dev-python/mkdocs-static-i18n-1.3.0 | 4 +- .../dev-python/mkdocstrings-python-1.13.0 | 16 - .../dev-python/mkdocstrings-python-1.14.3 | 16 - .../dev-python/mkdocstrings-python-1.14.4 | 16 - .../dev-python/mkdocstrings-python-1.14.5 | 16 - .../dev-python/mkdocstrings-python-1.14.6 | 16 + .../dev-python/mkdocstrings-python-1.14.7 | 16 + .../dev-python/mkdocstrings-python-1.15.0 | 16 + metadata/md5-cache/dev-python/moto-5.0.26 | 16 - metadata/md5-cache/dev-python/moto-5.0.27 | 4 +- .../md5-cache/dev-python/mpmath-1.4.0_alpha3 | 4 +- .../md5-cache/dev-python/myst-parser-4.0.1 | 16 + metadata/md5-cache/dev-python/nox-2024.04.15 | 16 - metadata/md5-cache/dev-python/nox-2025.02.09 | 16 + metadata/md5-cache/dev-python/nuitka-2.6.5 | 16 + metadata/md5-cache/dev-python/numpy-2.2.0 | 17 - metadata/md5-cache/dev-python/numpy-2.2.1 | 17 - metadata/md5-cache/dev-python/numpy-2.2.2 | 4 +- metadata/md5-cache/dev-python/numpy-2.2.3 | 17 + metadata/md5-cache/dev-python/orjson-3.10.15 | 4 +- .../md5-cache/dev-python/oslo-utils-8.1.0 | 16 + metadata/md5-cache/dev-python/owslib-0.32.0 | 16 - metadata/md5-cache/dev-python/owslib-0.32.1 | 4 +- .../dev-python/pbs-installer-2025.01.06 | 16 - .../dev-python/pbs-installer-2025.02.12 | 16 + metadata/md5-cache/dev-python/pikepdf-9.5.2 | 17 + metadata/md5-cache/dev-python/pip-25.0.1 | 16 + .../md5-cache/dev-python/prettytable-3.12.0 | 16 - .../md5-cache/dev-python/prettytable-3.13.0 | 4 +- .../dev-python/prompt-toolkit-3.0.48 | 16 - .../dev-python/prompt-toolkit-3.0.50 | 4 +- metadata/md5-cache/dev-python/psutil-7.0.0 | 17 + metadata/md5-cache/dev-python/pyarrow-18.0.0 | 17 - metadata/md5-cache/dev-python/pyarrow-18.1.0 | 17 - metadata/md5-cache/dev-python/pyarrow-19.0.0 | 4 +- metadata/md5-cache/dev-python/pycpio-1.4.1 | 16 - metadata/md5-cache/dev-python/pycpio-1.4.2 | 4 +- metadata/md5-cache/dev-python/pydantic-2.10.5 | 16 - metadata/md5-cache/dev-python/pydantic-2.10.6 | 4 +- .../dev-python/pydantic-2.11.0_alpha1 | 16 - .../dev-python/pydantic-2.11.0_alpha2 | 16 + .../md5-cache/dev-python/pydantic-core-2.28.0 | 17 - .../md5-cache/dev-python/pydantic-core-2.29.0 | 17 + metadata/md5-cache/dev-python/pyfzf-0.3.1 | 4 +- metadata/md5-cache/dev-python/pyghmi-1.5.76 | 16 + metadata/md5-cache/dev-python/pyglet-2.0.21 | 16 - metadata/md5-cache/dev-python/pyglet-2.1.2 | 4 +- metadata/md5-cache/dev-python/pygresql-6.0.1 | 10 +- .../md5-cache/dev-python/pymediainfo-7.0.0 | 16 + .../md5-cache/dev-python/pymediainfo-7.0.1 | 16 + metadata/md5-cache/dev-python/pymongo-4.10.0 | 17 - metadata/md5-cache/dev-python/pymongo-4.11.1 | 17 + metadata/md5-cache/dev-python/pymongo-4.9.1 | 17 - metadata/md5-cache/dev-python/pymongo-4.9.2 | 17 - metadata/md5-cache/dev-python/pyopengl-3.1.9 | 4 +- .../dev-python/pyopengl-accelerate-3.1.8-r1 | 17 - .../dev-python/pyopengl-accelerate-3.1.9 | 4 +- metadata/md5-cache/dev-python/pypdf-5.3.0 | 16 + metadata/md5-cache/dev-python/pyphen-0.17.0 | 16 - metadata/md5-cache/dev-python/pyphen-0.17.2 | 4 +- .../md5-cache/dev-python/pyproject-api-1.8.0 | 16 - .../md5-cache/dev-python/pyproject-api-1.9.0 | 4 +- metadata/md5-cache/dev-python/pypy-exe-7.3.18 | 4 +- .../md5-cache/dev-python/pypy3-7.3.18-r100 | 9 + .../md5-cache/dev-python/pypy3_10-exe-7.3.18 | 4 +- metadata/md5-cache/dev-python/pyqt5-5.15.11 | 10 +- .../md5-cache/dev-python/pysol-cards-0.18.1 | 16 + .../md5-cache/dev-python/pytest-aiohttp-1.0.5 | 16 - .../md5-cache/dev-python/pytest-aiohttp-1.1.0 | 4 +- .../md5-cache/dev-python/pytest-check-2.4.2 | 16 + .../md5-cache/dev-python/pytest-check-2.5.0 | 16 + .../md5-cache/dev-python/pytest-datadir-1.6.1 | 16 + .../md5-cache/dev-python/pytest-django-4.10.0 | 16 + .../dev-python/pytest-httpserver-1.1.0 | 16 - .../dev-python/pytest-httpserver-1.1.1 | 4 +- .../dev-python/python-lsp-server-1.12.2 | 16 + metadata/md5-cache/dev-python/qtpy-2.4.2 | 6 +- metadata/md5-cache/dev-python/qtpy-2.4.3 | 16 + .../dev-python/recurring-ical-events-3.3.3 | 16 - .../dev-python/recurring-ical-events-3.3.4 | 16 - .../dev-python/recurring-ical-events-3.4.0 | 16 - .../dev-python/recurring-ical-events-3.4.1 | 16 - .../dev-python/recurring-ical-events-3.5.0 | 16 + .../dev-python/recurring-ical-events-3.5.1 | 16 + .../dev-python/recurring-ical-events-3.5.2 | 16 + metadata/md5-cache/dev-python/reportlab-4.3.1 | 16 + metadata/md5-cache/dev-python/scipy-1.15.1 | 4 +- metadata/md5-cache/dev-python/selenium-4.28.1 | 4 +- metadata/md5-cache/dev-python/semver-3.0.2 | 16 - metadata/md5-cache/dev-python/semver-3.0.4 | 4 +- .../md5-cache/dev-python/sphinx-autoapi-3.5.0 | 16 + .../dev-python/sphinx-gallery-0.19.0 | 16 + .../md5-cache/dev-python/sphinxygen-1.0.10 | 4 +- .../md5-cache/dev-python/sphinxygen-1.0.6 | 16 - metadata/md5-cache/dev-python/sqlglot-26.6.0 | 17 + metadata/md5-cache/dev-python/sshtunnel-0.4.0 | 4 +- .../md5-cache/dev-python/starlette-0.44.0 | 16 - .../md5-cache/dev-python/starlette-0.45.3 | 4 +- metadata/md5-cache/dev-python/tox-4.23.2 | 16 - metadata/md5-cache/dev-python/tox-4.24.1 | 4 +- .../dev-python/translate-toolkit-3.14.8 | 16 + .../md5-cache/dev-python/tree-sitter-0.23.1 | 4 +- .../md5-cache/dev-python/tree-sitter-0.24.0 | 17 + metadata/md5-cache/dev-python/trimesh-4.6.2 | 16 + .../md5-cache/dev-python/truststore-0.10.1 | 17 + metadata/md5-cache/dev-python/twine-6.1.0 | 4 +- .../types-setuptools-75.6.0.20241223 | 15 - .../types-setuptools-75.8.0.20250210 | 15 + metadata/md5-cache/dev-python/tzlocal-5.3 | 16 + .../md5-cache/dev-python/virtualenv-20.29.2 | 16 + .../dev-python/virtualenvwrapper-6.1.1 | 16 + metadata/md5-cache/dev-python/websockets-14.2 | 4 +- .../md5-cache/dev-python/xlsxwriter-3.2.0 | 16 - .../md5-cache/dev-python/xlsxwriter-3.2.1 | 4 +- .../md5-cache/dev-python/zeroconf-0.143.1 | 17 + .../md5-cache/dev-python/zeroconf-0.144.1 | 17 + metadata/md5-cache/dev-qt/Manifest.gz | Bin 35928 -> 35762 bytes .../md5-cache/dev-qt/qt-creator-15.0.0-r1 | 2 +- metadata/md5-cache/dev-qt/qt-creator-15.0.1 | 6 +- metadata/md5-cache/dev-qt/qt-creator-9999 | 2 +- .../dev-qt/qtstyleplugins-5.0.0_p20170311-r1 | 13 - metadata/md5-cache/dev-qt/qtwebengine-6.8.2 | 17 - .../md5-cache/dev-qt/qtwebengine-6.8.2-r1 | 17 + metadata/md5-cache/dev-ruby/Manifest.gz | Bin 228244 -> 228540 bytes .../md5-cache/dev-ruby/activesupport-6.1.7.10 | 4 +- metadata/md5-cache/dev-ruby/dust-0.1.7-r3 | 17 - metadata/md5-cache/dev-ruby/fakefs-2.7.1 | 4 +- metadata/md5-cache/dev-ruby/fakefs-3.0.0 | 17 + metadata/md5-cache/dev-ruby/http-cookie-1.0.7 | 4 +- metadata/md5-cache/dev-ruby/io-event-1.6.5-r1 | 4 +- metadata/md5-cache/dev-ruby/mysql2-0.5.6 | 4 +- metadata/md5-cache/dev-ruby/net-imap-0.4.18 | 17 - metadata/md5-cache/dev-ruby/net-imap-0.4.19 | 17 + metadata/md5-cache/dev-ruby/net-imap-0.5.3 | 17 - metadata/md5-cache/dev-ruby/net-imap-0.5.4 | 17 - metadata/md5-cache/dev-ruby/net-imap-0.5.6 | 17 + metadata/md5-cache/dev-ruby/nokogiri-1.16.8 | 4 +- metadata/md5-cache/dev-ruby/ox-2.14.22 | 17 + metadata/md5-cache/dev-ruby/rack-2.2.10 | 4 +- metadata/md5-cache/dev-ruby/rack-2.2.11 | 17 + metadata/md5-cache/dev-ruby/rack-3.0.10 | 4 +- metadata/md5-cache/dev-ruby/rack-3.0.12 | 17 + metadata/md5-cache/dev-ruby/rack-3.1.10 | 17 + metadata/md5-cache/dev-ruby/rack-3.1.8 | 4 +- metadata/md5-cache/dev-ruby/rdoc-6.8.1 | 4 +- metadata/md5-cache/dev-ruby/sshkit-1.22.2 | 17 - metadata/md5-cache/dev-ruby/sshkit-1.23.0 | 17 - metadata/md5-cache/dev-ruby/sshkit-1.23.2 | 4 +- metadata/md5-cache/dev-ruby/sshkit-1.24.0 | 17 + metadata/md5-cache/dev-ruby/timers-4.4.0 | 17 + metadata/md5-cache/dev-ruby/webmock-3.23.0 | 17 - metadata/md5-cache/dev-ruby/webmock-3.23.1 | 17 - metadata/md5-cache/dev-ruby/webmock-3.25.0 | 17 + metadata/md5-cache/dev-tcltk/Manifest.gz | Bin 9145 -> 9147 bytes metadata/md5-cache/dev-tcltk/bwidget-1.9.16 | 4 +- metadata/md5-cache/dev-tcltk/itk-4.2.3-r1 | 16 - metadata/md5-cache/dev-tcltk/itk-4.2.3-r2 | 16 + metadata/md5-cache/dev-tcltk/tcl3d-0.9.5 | 4 +- metadata/md5-cache/dev-tcltk/tclx-8.6.3 | 4 +- metadata/md5-cache/dev-tcltk/thread-2.8.9 | 4 +- metadata/md5-cache/dev-tcltk/tkdnd-2.9.4-r1 | 4 +- metadata/md5-cache/dev-tcltk/tkimg-1.4.16 | 4 +- metadata/md5-cache/dev-util/Manifest.gz | Bin 141903 -> 140133 bytes metadata/md5-cache/dev-util/Tensile-5.1.3-r3 | 17 - metadata/md5-cache/dev-util/Tensile-5.4.2-r2 | 17 - metadata/md5-cache/dev-util/Tensile-6.3.2 | 17 + metadata/md5-cache/dev-util/act-0.2.59 | 2 +- metadata/md5-cache/dev-util/act-0.2.64 | 2 +- .../md5-cache/dev-util/azuredatastudio-1.50.0 | 17 - .../dev-util/azuredatastudio-1.50.0-r1 | 17 + .../md5-cache/dev-util/azuredatastudio-1.51.1 | 17 + metadata/md5-cache/dev-util/bear-3.1.4-r2 | 16 - .../dev-util/cargo-nextest-0.9.67-r1 | 13 - .../dev-util/cargo-nextest-0.9.72-r1 | 13 - .../md5-cache/dev-util/cargo-nextest-0.9.88 | 15 + metadata/md5-cache/dev-util/clair-4.4.4 | 2 +- metadata/md5-cache/dev-util/cutter-2.3.4 | 16 - metadata/md5-cache/dev-util/cutter-2.3.4-r2 | 4 +- metadata/md5-cache/dev-util/datree-1.9.19 | 2 +- metadata/md5-cache/dev-util/diffoscope-288 | 16 + metadata/md5-cache/dev-util/difftastic-0.63.0 | 13 + .../dev-util/docker-distribution-pruner-0.2.0 | 2 +- metadata/md5-cache/dev-util/drone-2.18.0 | 2 +- metadata/md5-cache/dev-util/drone-cli-1.7.0 | 2 +- metadata/md5-cache/dev-util/fq-0.10.0 | 14 - metadata/md5-cache/dev-util/fq-0.11.0 | 14 - metadata/md5-cache/dev-util/fq-0.12.0 | 14 - metadata/md5-cache/dev-util/fq-0.13.0 | 2 +- metadata/md5-cache/dev-util/fq-0.14.0 | 14 + metadata/md5-cache/dev-util/fq-0.9.0 | 14 - metadata/md5-cache/dev-util/fuzz-0.6-r3 | 14 - metadata/md5-cache/dev-util/fuzz-0.6-r4 | 14 + metadata/md5-cache/dev-util/github-cli-2.52.0 | 14 - metadata/md5-cache/dev-util/github-cli-2.65.0 | 2 +- metadata/md5-cache/dev-util/github-cli-2.66.1 | 14 + metadata/md5-cache/dev-util/github-cli-9999 | 2 +- .../md5-cache/dev-util/gitlab-ci-linter-2.2.0 | 2 +- metadata/md5-cache/dev-util/gitlab-cli-1.51.0 | 2 +- metadata/md5-cache/dev-util/gitlab-cli-1.52.0 | 2 +- .../md5-cache/dev-util/gitlab-runner-17.6.1 | 2 +- .../md5-cache/dev-util/gitlab-runner-17.7.0 | 2 +- .../md5-cache/dev-util/gitlab-runner-17.7.1 | 2 +- .../md5-cache/dev-util/gitlab-runner-17.8.2 | 2 +- .../md5-cache/dev-util/gitlab-runner-17.8.3 | 2 +- metadata/md5-cache/dev-util/hip-5.1.3-r4 | 15 - metadata/md5-cache/dev-util/hip-5.3.3-r3 | 15 - metadata/md5-cache/dev-util/hip-5.4.3 | 15 - metadata/md5-cache/dev-util/hip-5.5.1 | 15 - metadata/md5-cache/dev-util/hip-5.7.1-r2 | 6 +- metadata/md5-cache/dev-util/hip-6.3.2 | 17 + metadata/md5-cache/dev-util/hipcc-6.3.2 | 17 + .../md5-cache/dev-util/hipify-clang-6.3.2 | 15 + .../dev-util/hyprwayland-scanner-0.4.0 | 14 - .../dev-util/hyprwayland-scanner-0.4.4 | 14 + .../dev-util/idea-community-2024.3.2.2 | 17 - .../dev-util/idea-community-2024.3.3 | 17 + metadata/md5-cache/dev-util/imediff-3.4.0 | 17 + metadata/md5-cache/dev-util/jfrog-cli-1.54.1 | 2 +- metadata/md5-cache/dev-util/jfrog-cli-2.54.0 | 2 +- metadata/md5-cache/dev-util/jfrog-cli-2.72.1 | 2 +- metadata/md5-cache/dev-util/jfrog-cli-2.72.2 | 2 +- metadata/md5-cache/dev-util/jfrog-cli-2.72.3 | 2 +- metadata/md5-cache/dev-util/jfrog-cli-2.73.2 | 2 +- metadata/md5-cache/dev-util/kafkactl-5.4.0 | 2 +- metadata/md5-cache/dev-util/kdevelop-24.08.3 | 2 +- metadata/md5-cache/dev-util/kdevelop-24.12.1 | 18 - metadata/md5-cache/dev-util/kdevelop-24.12.2 | 2 +- .../md5-cache/dev-util/kdevelop-pg-qt-2.3.0 | 2 +- .../md5-cache/dev-util/kdevelop-php-24.08.3 | 2 +- .../md5-cache/dev-util/kdevelop-php-24.12.1 | 17 - .../md5-cache/dev-util/kdevelop-php-24.12.2 | 2 +- .../dev-util/kdevelop-python-24.08.3 | 2 +- .../dev-util/kdevelop-python-24.12.1 | 18 - .../dev-util/kdevelop-python-24.12.2 | 2 +- .../md5-cache/dev-util/kio-perldoc-24.08.3 | 2 +- .../md5-cache/dev-util/kio-perldoc-24.12.1 | 16 - .../md5-cache/dev-util/kio-perldoc-24.12.2 | 2 +- metadata/md5-cache/dev-util/kube-linter-0.3.0 | 2 +- metadata/md5-cache/dev-util/kubeval-0.16.1 | 2 +- metadata/md5-cache/dev-util/librnp-0.17.1-r1 | 16 - .../dev-util/local-log4j-vuln-scanner-0.10 | 2 +- .../md5-cache/dev-util/log4shelldetect-0.0.7 | 2 +- .../dev-util/massif-visualizer-24.08.3 | 2 +- .../dev-util/massif-visualizer-24.12.1 | 17 - .../dev-util/massif-visualizer-24.12.2 | 2 +- .../md5-cache/dev-util/mesa_clc-25.0.0_rc3 | 16 + .../dev-util/nvidia-cuda-toolkit-12.6.1 | 15 - .../dev-util/nvidia-cuda-toolkit-12.6.1-r1 | 15 + metadata/md5-cache/dev-util/packer-1.11.0 | 2 +- metadata/md5-cache/dev-util/packer-1.9.5 | 2 +- metadata/md5-cache/dev-util/pkgcheck-0.10.33 | 16 - .../md5-cache/dev-util/pkgcheck-0.10.33-r1 | 16 + metadata/md5-cache/dev-util/pkgdiff-1.8 | 4 +- metadata/md5-cache/dev-util/promu-0.15.0 | 2 +- metadata/md5-cache/dev-util/promu-0.17.0 | 2 +- metadata/md5-cache/dev-util/promu-9999 | 2 +- metadata/md5-cache/dev-util/rgbds-0.9.1 | 14 + metadata/md5-cache/dev-util/rgbds-9999 | 2 +- metadata/md5-cache/dev-util/rizin-0.7.3-r2 | 16 - metadata/md5-cache/dev-util/rocm-smi-5.4.2-r1 | 15 - metadata/md5-cache/dev-util/rocm-smi-5.7.1-r2 | 15 - metadata/md5-cache/dev-util/rocm-smi-6.3.2 | 15 + .../dev-util/rocm_bandwidth_test-5.3.3 | 14 - .../dev-util/rocm_bandwidth_test-5.4.3 | 14 - .../dev-util/rocm_bandwidth_test-6.3.2 | 14 + metadata/md5-cache/dev-util/rocminfo-6.3.2 | 16 + .../md5-cache/dev-util/rocprofiler-5.1.3-r1 | 14 - .../md5-cache/dev-util/rocprofiler-5.3.3-r1 | 6 +- .../md5-cache/dev-util/roctracer-5.1.3-r1 | 14 - .../md5-cache/dev-util/roctracer-5.3.3-r1 | 16 - metadata/md5-cache/dev-util/roctracer-6.3.2 | 16 + metadata/md5-cache/dev-util/rr-5.9.0 | 17 + metadata/md5-cache/dev-util/rr-9999 | 6 +- metadata/md5-cache/dev-util/rt-tests-2.8 | 2 +- metadata/md5-cache/dev-util/ruff-0.8.2 | 15 - metadata/md5-cache/dev-util/ruff-0.8.4 | 15 - metadata/md5-cache/dev-util/ruff-0.9.6 | 15 + metadata/md5-cache/dev-util/runme-2.0.5 | 2 +- .../dev-util/selenium-manager-4.28.0 | 4 +- metadata/md5-cache/dev-util/sh-3.7.0 | 2 +- metadata/md5-cache/dev-util/sh-3.8.0 | 2 +- metadata/md5-cache/dev-util/sh-3.9.0 | 2 +- metadata/md5-cache/dev-util/src-cli-4.4.0 | 2 +- metadata/md5-cache/dev-util/src-cli-4.5.0 | 2 +- metadata/md5-cache/dev-util/src-cli-5.0.2-r1 | 2 +- metadata/md5-cache/dev-util/src-cli-5.1.2 | 2 +- metadata/md5-cache/dev-util/src-cli-5.2.0 | 2 +- .../md5-cache/dev-util/stripe-mock-0.192.0 | 2 +- metadata/md5-cache/dev-util/tea-0.9.2-r1 | 2 +- metadata/md5-cache/dev-util/tkdiff-5.7 | 4 +- .../dev-util/tree-sitter-cli-0.24.3-r1 | 4 +- .../md5-cache/dev-util/tree-sitter-cli-0.25.1 | 15 + .../dev-util/web_page_replay_go-20221028 | 2 +- metadata/md5-cache/dev-util/webhook-2.7.0 | 2 +- metadata/md5-cache/dev-util/webhook-2.8.1 | 2 +- metadata/md5-cache/dev-util/woke-0.19.0 | 2 +- .../dev-util/xxdiff-4.0.1_p20170622-r1 | 13 - .../md5-cache/dev-util/xxdiff-5.1_p20241118 | 16 + metadata/md5-cache/dev-vcs/Manifest.gz | Bin 21973 -> 21798 bytes metadata/md5-cache/dev-vcs/git-cola-4.11.0 | 17 + metadata/md5-cache/dev-vcs/git-lfs-3.5.1 | 2 +- metadata/md5-cache/dev-vcs/git-lfs-3.6.1 | 2 +- metadata/md5-cache/dev-vcs/git-lfs-9999 | 2 +- metadata/md5-cache/dev-vcs/git-sizer-1.5.0 | 2 +- metadata/md5-cache/dev-vcs/hub-2.14.2-r1 | 2 +- metadata/md5-cache/dev-vcs/kdesvn-2.1.0-r1 | 2 +- metadata/md5-cache/dev-vcs/lab-0.25.1 | 2 +- metadata/md5-cache/dev-vcs/reposurgeon-4.27 | 2 +- metadata/md5-cache/dev-vcs/sourcegit-2025.04 | 16 + metadata/md5-cache/dev-vcs/sourcegit-8.40 | 16 - metadata/md5-cache/dev-vcs/sourcegit-8.44 | 16 - metadata/md5-cache/dev-vcs/stgit-2.4.11-r1 | 14 - metadata/md5-cache/dev-vcs/stgit-2.4.13 | 14 - metadata/md5-cache/dev-vcs/topgit-0.19.14 | 13 + metadata/md5-cache/dev-vcs/tortoisehg-6.9 | 6 +- metadata/md5-cache/dev-vcs/tortoisehg-9999 | 2 +- metadata/md5-cache/games-arcade/Manifest.gz | Bin 22289 -> 22112 bytes .../games-arcade/moleinvasion-0.4-r3 | 14 - .../games-arcade/moleinvasion-0.4-r4 | 14 + .../games-arcade/osu-lazer-2024.906.2 | 15 - metadata/md5-cache/games-board/Manifest.gz | Bin 12509 -> 12513 bytes .../md5-cache/games-board/xscrabble-2.10-r4 | 15 - .../md5-cache/games-board/xscrabble-2.10-r5 | 15 + .../md5-cache/games-emulation/Manifest.gz | Bin 22561 -> 21576 bytes .../md5-cache/games-emulation/bsnes-jg-1.2.0 | 14 - .../md5-cache/games-emulation/bsnes-jg-2.0.1 | 16 + .../md5-cache/games-emulation/cega-jg-0.5.2 | 14 - .../games-emulation/gambatte-jg-0.5.1 | 14 - .../games-emulation/geolith-jg-0.1.0 | 14 - .../games-emulation/mednafen-jg-1.32.0 | 15 - .../games-emulation/mednafen-jg-1.32.1 | 15 - .../games-emulation/mednafen-jg-1.32.1-r1 | 15 + .../games-emulation/mednafen-jg-9999 | 6 +- .../games-emulation/melonds-0.9.5_p20241113 | 2 +- .../md5-cache/games-emulation/melonds-1.0_rc | 2 +- .../md5-cache/games-emulation/melonds-9999 | 6 +- .../md5-cache/games-emulation/mgba-jg-0.10.3 | 14 - .../games-emulation/nestopia-jg-1.52.0 | 14 - .../games-emulation/nestopia-jg-1.52.1 | 14 - .../games-emulation/nestopia-jg-1.53.0 | 14 + .../games-emulation/prosystem-jg-1.5.3 | 14 + .../md5-cache/games-emulation/rmg-0.6.5-r1 | 16 - .../md5-cache/games-emulation/rmg-0.6.6-r1 | 16 - metadata/md5-cache/games-emulation/rmg-0.7.3 | 16 + metadata/md5-cache/games-emulation/rmg-9999 | 8 +- .../games-emulation/sameboy-jg-0.16.6 | 14 - .../md5-cache/games-emulation/vecx-jg-1.2.3 | 14 + metadata/md5-cache/games-engines/Manifest.gz | Bin 5885 -> 5727 bytes .../md5-cache/games-engines/fheroes2-1.1.4 | 17 - metadata/md5-cache/games-kids/Manifest.gz | Bin 1057 -> 1060 bytes metadata/md5-cache/games-kids/gcompris-25.0 | 2 +- metadata/md5-cache/games-puzzle/Manifest.gz | Bin 18266 -> 18101 bytes .../md5-cache/games-puzzle/skladnik-24.08.3 | 2 +- .../md5-cache/games-puzzle/skladnik-24.12.1 | 16 - .../md5-cache/games-puzzle/skladnik-24.12.2 | 2 +- metadata/md5-cache/games-server/Manifest.gz | Bin 1748 -> 1913 bytes .../games-server/crossfire-server-1.75.0-r1 | 12 + metadata/md5-cache/games-sports/Manifest.gz | Bin 1925 -> 1929 bytes .../md5-cache/games-sports/foobillard-3.0a-r1 | 15 - .../md5-cache/games-sports/foobillard-3.0a-r2 | 15 + metadata/md5-cache/games-util/Manifest.gz | Bin 10991 -> 11146 bytes metadata/md5-cache/games-util/cartridges-2.11 | 17 - .../md5-cache/games-util/cartridges-2.11-r1 | 17 + .../md5-cache/games-util/cartridges-2.9.3 | 17 - .../md5-cache/games-util/cartridges-2.9.3-r1 | 17 + metadata/md5-cache/games-util/cartridges-9999 | 6 +- metadata/md5-cache/games-util/qstat-2.14 | 14 - metadata/md5-cache/games-util/qstat-2.14-r1 | 14 + metadata/md5-cache/games-util/qstat-2.17 | 14 + metadata/md5-cache/gui-apps/Manifest.gz | Bin 13375 -> 13537 bytes .../md5-cache/gui-apps/liquidshell-1.10.0 | 2 +- metadata/md5-cache/gui-apps/waypipe-0.9.1 | 4 +- metadata/md5-cache/gui-apps/waypipe-0.9.2 | 4 +- .../md5-cache/gui-apps/wf-recorder-0.5.0-r1 | 15 + .../gui-apps/xwaylandvideobridge-0.4.0-r1 | 2 +- metadata/md5-cache/kde-apps/Manifest.gz | Bin 103286 -> 70545 bytes metadata/md5-cache/kde-apps/akonadi-24.08.3 | 2 +- metadata/md5-cache/kde-apps/akonadi-24.12.1 | 18 - metadata/md5-cache/kde-apps/akonadi-24.12.2 | 2 +- .../kde-apps/akonadi-calendar-24.08.3 | 2 +- .../kde-apps/akonadi-calendar-24.12.1 | 17 - .../kde-apps/akonadi-calendar-24.12.2 | 2 +- .../akonadi-calendar-tools-common-24.12.1 | 14 - .../kde-apps/akonadi-contacts-24.08.3 | 2 +- .../kde-apps/akonadi-contacts-24.12.1 | 17 - .../kde-apps/akonadi-contacts-24.12.2 | 2 +- .../kde-apps/akonadi-import-wizard-24.08.3 | 2 +- .../kde-apps/akonadi-import-wizard-24.12.1 | 16 - .../kde-apps/akonadi-import-wizard-24.12.2 | 2 +- .../md5-cache/kde-apps/akonadi-mime-24.08.3 | 2 +- .../md5-cache/kde-apps/akonadi-mime-24.12.1 | 17 - .../md5-cache/kde-apps/akonadi-mime-24.12.2 | 2 +- .../md5-cache/kde-apps/akonadi-notes-24.08.3 | 2 +- .../md5-cache/kde-apps/akonadi-search-24.08.3 | 2 +- .../md5-cache/kde-apps/akonadi-search-24.12.1 | 17 - .../md5-cache/kde-apps/akonadi-search-24.12.2 | 2 +- .../md5-cache/kde-apps/akonadiconsole-24.08.3 | 2 +- .../md5-cache/kde-apps/akonadiconsole-24.12.1 | 16 - .../md5-cache/kde-apps/akonadiconsole-24.12.2 | 2 +- metadata/md5-cache/kde-apps/akregator-24.08.3 | 2 +- metadata/md5-cache/kde-apps/akregator-24.12.1 | 17 - metadata/md5-cache/kde-apps/akregator-24.12.2 | 2 +- metadata/md5-cache/kde-apps/analitza-24.12.1 | 2 +- metadata/md5-cache/kde-apps/analitza-24.12.2 | 2 +- metadata/md5-cache/kde-apps/ark-24.08.3 | 2 +- metadata/md5-cache/kde-apps/ark-24.12.1 | 17 - metadata/md5-cache/kde-apps/ark-24.12.2 | 2 +- .../md5-cache/kde-apps/artikulate-24.08.3 | 2 +- .../md5-cache/kde-apps/artikulate-24.12.1 | 17 - .../md5-cache/kde-apps/artikulate-24.12.2 | 2 +- .../md5-cache/kde-apps/audiocd-kio-24.08.3 | 2 +- .../md5-cache/kde-apps/audiocd-kio-24.12.1 | 16 - .../md5-cache/kde-apps/audiocd-kio-24.12.2 | 2 +- .../md5-cache/kde-apps/baloo-widgets-24.08.3 | 2 +- .../md5-cache/kde-apps/baloo-widgets-24.12.1 | 17 - .../md5-cache/kde-apps/baloo-widgets-24.12.2 | 2 +- metadata/md5-cache/kde-apps/blinken-24.08.3 | 2 +- metadata/md5-cache/kde-apps/blinken-24.12.1 | 16 - metadata/md5-cache/kde-apps/blinken-24.12.2 | 2 +- metadata/md5-cache/kde-apps/bomber-24.08.3 | 2 +- metadata/md5-cache/kde-apps/bomber-24.12.1 | 16 - metadata/md5-cache/kde-apps/bomber-24.12.2 | 2 +- metadata/md5-cache/kde-apps/bovo-24.08.3 | 2 +- metadata/md5-cache/kde-apps/bovo-24.12.1 | 16 - metadata/md5-cache/kde-apps/bovo-24.12.2 | 2 +- .../kde-apps/calendarjanitor-24.08.3 | 2 +- .../kde-apps/calendarjanitor-24.12.1 | 16 - .../kde-apps/calendarjanitor-24.12.2 | 2 +- .../kde-apps/calendarsupport-24.08.3 | 2 +- .../kde-apps/calendarsupport-24.12.1 | 16 - .../kde-apps/calendarsupport-24.12.2 | 2 +- metadata/md5-cache/kde-apps/cantor-24.12.1 | 2 +- metadata/md5-cache/kde-apps/cantor-24.12.2 | 2 +- metadata/md5-cache/kde-apps/cervisia-24.08.3 | 2 +- metadata/md5-cache/kde-apps/cervisia-24.12.1 | 16 - metadata/md5-cache/kde-apps/cervisia-24.12.2 | 2 +- metadata/md5-cache/kde-apps/dolphin-24.08.3 | 2 +- metadata/md5-cache/kde-apps/dolphin-24.12.1 | 17 - metadata/md5-cache/kde-apps/dolphin-24.12.2 | 2 +- .../kde-apps/dolphin-plugins-common-24.12.1 | 13 - .../kde-apps/dolphin-plugins-dropbox-24.08.3 | 2 +- .../kde-apps/dolphin-plugins-dropbox-24.12.1 | 16 - .../kde-apps/dolphin-plugins-dropbox-24.12.2 | 2 +- .../kde-apps/dolphin-plugins-git-24.08.3 | 2 +- .../kde-apps/dolphin-plugins-git-24.12.1 | 16 - .../kde-apps/dolphin-plugins-git-24.12.2 | 2 +- .../dolphin-plugins-mercurial-24.08.3 | 2 +- .../dolphin-plugins-mercurial-24.12.1 | 16 - .../dolphin-plugins-mercurial-24.12.2 | 2 +- .../dolphin-plugins-subversion-24.08.3 | 2 +- .../dolphin-plugins-subversion-24.12.1 | 16 - .../dolphin-plugins-subversion-24.12.2 | 2 +- metadata/md5-cache/kde-apps/dragon-24.08.3 | 2 +- metadata/md5-cache/kde-apps/dragon-24.12.1 | 16 - metadata/md5-cache/kde-apps/dragon-24.12.2 | 2 +- .../md5-cache/kde-apps/eventviews-24.08.3 | 2 +- .../md5-cache/kde-apps/eventviews-24.12.1 | 17 - .../md5-cache/kde-apps/eventviews-24.12.2 | 2 +- .../md5-cache/kde-apps/ffmpegthumbs-24.08.3 | 2 +- .../md5-cache/kde-apps/ffmpegthumbs-24.12.1 | 16 - .../md5-cache/kde-apps/ffmpegthumbs-24.12.2 | 2 +- .../kde-apps/ffmpegthumbs-common-24.12.1 | 13 - metadata/md5-cache/kde-apps/filelight-24.08.3 | 2 +- metadata/md5-cache/kde-apps/filelight-24.12.1 | 17 - metadata/md5-cache/kde-apps/filelight-24.12.2 | 2 +- metadata/md5-cache/kde-apps/granatier-24.08.3 | 2 +- metadata/md5-cache/kde-apps/granatier-24.12.1 | 16 - metadata/md5-cache/kde-apps/granatier-24.12.2 | 2 +- .../kde-apps/grantlee-editor-24.08.3 | 2 +- .../kde-apps/grantlee-editor-24.12.1 | 16 - .../kde-apps/grantlee-editor-24.12.2 | 2 +- .../md5-cache/kde-apps/grantleetheme-24.08.3 | 2 +- .../md5-cache/kde-apps/grantleetheme-24.12.1 | 17 - .../md5-cache/kde-apps/grantleetheme-24.12.2 | 2 +- metadata/md5-cache/kde-apps/gwenview-24.08.3 | 2 +- metadata/md5-cache/kde-apps/gwenview-24.12.1 | 17 - metadata/md5-cache/kde-apps/gwenview-24.12.2 | 2 +- .../kde-apps/incidenceeditor-24.08.3 | 2 +- .../kde-apps/incidenceeditor-24.12.1 | 17 - .../kde-apps/incidenceeditor-24.12.2 | 2 +- metadata/md5-cache/kde-apps/juk-24.08.3 | 2 +- metadata/md5-cache/kde-apps/juk-24.12.1 | 17 - metadata/md5-cache/kde-apps/juk-24.12.2 | 2 +- metadata/md5-cache/kde-apps/k3b-24.08.3 | 2 +- metadata/md5-cache/kde-apps/k3b-24.12.1 | 18 - metadata/md5-cache/kde-apps/k3b-24.12.2 | 2 +- .../kde-apps/kaccounts-integration-24.08.3-r1 | 2 +- .../kde-apps/kaccounts-integration-24.12.1 | 18 - .../kde-apps/kaccounts-integration-24.12.2 | 2 +- .../kde-apps/kaccounts-providers-24.08.3 | 2 +- .../kde-apps/kaccounts-providers-24.12.1 | 16 - .../kde-apps/kaccounts-providers-24.12.2 | 2 +- .../md5-cache/kde-apps/kaddressbook-24.08.3 | 2 +- .../md5-cache/kde-apps/kaddressbook-24.12.1 | 17 - .../md5-cache/kde-apps/kaddressbook-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kajongg-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kajongg-24.12.1 | 17 - metadata/md5-cache/kde-apps/kajongg-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kalarm-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kalarm-24.12.1 | 16 - metadata/md5-cache/kde-apps/kalarm-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kalgebra-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kalgebra-24.12.1 | 16 - metadata/md5-cache/kde-apps/kalgebra-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kalzium-24.12.1 | 2 +- metadata/md5-cache/kde-apps/kalzium-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kamera-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kamera-24.12.1 | 16 - metadata/md5-cache/kde-apps/kamera-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kamoso-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kamoso-24.12.1 | 17 - metadata/md5-cache/kde-apps/kamoso-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kanagram-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kanagram-24.12.1 | 16 - metadata/md5-cache/kde-apps/kanagram-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kapman-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kapman-24.12.1 | 16 - metadata/md5-cache/kde-apps/kapman-24.12.2 | 2 +- .../md5-cache/kde-apps/kapptemplate-24.08.3 | 2 +- .../md5-cache/kde-apps/kapptemplate-24.12.1 | 17 - .../md5-cache/kde-apps/kapptemplate-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kate-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kate-24.12.1 | 16 - metadata/md5-cache/kde-apps/kate-24.12.2 | 2 +- .../md5-cache/kde-apps/kate-addons-24.08.3 | 2 +- .../md5-cache/kde-apps/kate-addons-24.12.1 | 17 - .../md5-cache/kde-apps/kate-addons-24.12.2 | 2 +- .../md5-cache/kde-apps/kate-common-24.12.1 | 14 - metadata/md5-cache/kde-apps/kate-lib-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kate-lib-24.12.1 | 17 - metadata/md5-cache/kde-apps/kate-lib-24.12.2 | 2 +- metadata/md5-cache/kde-apps/katomic-24.08.3 | 2 +- metadata/md5-cache/kde-apps/katomic-24.12.1 | 16 - metadata/md5-cache/kde-apps/katomic-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kbackup-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kbackup-24.12.1 | 16 - metadata/md5-cache/kde-apps/kbackup-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kblackbox-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kblackbox-24.12.1 | 16 - metadata/md5-cache/kde-apps/kblackbox-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kblocks-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kblocks-24.12.1 | 17 - metadata/md5-cache/kde-apps/kblocks-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kbounce-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kbounce-24.12.1 | 16 - metadata/md5-cache/kde-apps/kbounce-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kbreakout-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kbreakout-24.12.1 | 16 - metadata/md5-cache/kde-apps/kbreakout-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kbruch-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kbruch-24.12.1 | 16 - metadata/md5-cache/kde-apps/kbruch-24.12.2 | 2 +- .../md5-cache/kde-apps/kcachegrind-24.08.3 | 2 +- .../md5-cache/kde-apps/kcachegrind-24.12.1 | 16 - .../md5-cache/kde-apps/kcachegrind-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kcalc-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kcalc-24.12.1 | 17 - metadata/md5-cache/kde-apps/kcalc-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kcalutils-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kcalutils-24.12.1 | 17 - metadata/md5-cache/kde-apps/kcalutils-24.12.2 | 2 +- .../md5-cache/kde-apps/kcharselect-24.08.3 | 2 +- .../md5-cache/kde-apps/kcharselect-24.12.1 | 16 - .../md5-cache/kde-apps/kcharselect-24.12.2 | 2 +- .../md5-cache/kde-apps/kcolorchooser-24.08.3 | 2 +- .../md5-cache/kde-apps/kcolorchooser-24.12.1 | 16 - .../md5-cache/kde-apps/kcolorchooser-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kcron-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kcron-24.12.1 | 16 - metadata/md5-cache/kde-apps/kcron-24.12.2 | 2 +- .../md5-cache/kde-apps/kde-apps-meta-24.12.1 | 10 - .../kde-apps/kde-dev-scripts-24.08.3 | 2 +- .../kde-apps/kde-dev-scripts-24.12.1 | 16 - .../kde-apps/kde-dev-scripts-24.12.2 | 2 +- .../md5-cache/kde-apps/kde-dev-utils-24.08.3 | 2 +- .../md5-cache/kde-apps/kde-dev-utils-24.12.1 | 16 - .../md5-cache/kde-apps/kde-dev-utils-24.12.2 | 2 +- .../kde-apps/kdeaccessibility-meta-24.12.1 | 9 - .../md5-cache/kde-apps/kdeadmin-meta-24.12.1 | 10 - .../md5-cache/kde-apps/kdebugsettings-24.08.3 | 2 +- .../md5-cache/kde-apps/kdebugsettings-24.12.1 | 17 - .../md5-cache/kde-apps/kdebugsettings-24.12.2 | 2 +- .../md5-cache/kde-apps/kdecore-meta-24.12.1 | 10 - .../md5-cache/kde-apps/kdeedu-data-24.12.1 | 12 - .../md5-cache/kde-apps/kdeedu-meta-24.12.1 | 10 - .../md5-cache/kde-apps/kdegames-meta-24.12.1 | 10 - .../kde-apps/kdegraphics-meta-24.12.1 | 10 - .../kde-apps/kdegraphics-mobipocket-24.08.3 | 2 +- .../kde-apps/kdegraphics-mobipocket-24.12.1 | 16 - .../kde-apps/kdegraphics-mobipocket-24.12.2 | 2 +- .../kde-apps/kdemultimedia-meta-24.12.1 | 10 - .../kde-apps/kdenetwork-filesharing-24.08.3 | 2 +- .../kde-apps/kdenetwork-filesharing-24.12.1 | 16 - .../kde-apps/kdenetwork-filesharing-24.12.2 | 2 +- .../kde-apps/kdenetwork-meta-24.12.1 | 10 - metadata/md5-cache/kde-apps/kdenlive-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kdenlive-24.12.1 | 17 - metadata/md5-cache/kde-apps/kdenlive-24.12.2 | 2 +- .../md5-cache/kde-apps/kdepim-addons-24.08.3 | 2 +- .../md5-cache/kde-apps/kdepim-addons-24.12.1 | 17 - .../md5-cache/kde-apps/kdepim-addons-24.12.2 | 2 +- .../md5-cache/kde-apps/kdepim-meta-24.12.1 | 10 - .../md5-cache/kde-apps/kdepim-runtime-24.08.3 | 2 +- .../md5-cache/kde-apps/kdepim-runtime-24.12.1 | 17 - .../md5-cache/kde-apps/kdepim-runtime-24.12.2 | 2 +- .../md5-cache/kde-apps/kdesdk-meta-24.12.1 | 10 - .../kde-apps/kdesdk-thumbnailers-24.08.3 | 2 +- .../kde-apps/kdesdk-thumbnailers-24.12.1 | 16 - .../kde-apps/kdesdk-thumbnailers-24.12.2 | 2 +- .../kdesdk-thumbnailers-common-24.12.1 | 13 - .../md5-cache/kde-apps/kdeutils-meta-24.12.1 | 10 - metadata/md5-cache/kde-apps/kdf-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kdf-24.12.1 | 16 - metadata/md5-cache/kde-apps/kdf-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kdialog-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kdialog-24.12.1 | 16 - metadata/md5-cache/kde-apps/kdialog-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kdiamond-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kdiamond-24.12.1 | 16 - metadata/md5-cache/kde-apps/kdiamond-24.12.2 | 2 +- .../md5-cache/kde-apps/keditbookmarks-24.08.3 | 2 +- .../md5-cache/kde-apps/keditbookmarks-24.12.1 | 17 - .../md5-cache/kde-apps/keditbookmarks-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kfind-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kfind-24.12.1 | 16 - metadata/md5-cache/kde-apps/kfind-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kfloppy-23.04.3 | 16 - .../kde-apps/kfloppy-23.07.70_pre20241222 | 2 +- .../md5-cache/kde-apps/kfourinline-24.08.3 | 2 +- .../md5-cache/kde-apps/kfourinline-24.12.1 | 16 - .../md5-cache/kde-apps/kfourinline-24.12.2 | 2 +- .../md5-cache/kde-apps/kgeography-24.08.3 | 2 +- .../md5-cache/kde-apps/kgeography-24.12.1 | 16 - .../md5-cache/kde-apps/kgeography-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kget-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kget-24.12.1 | 17 - metadata/md5-cache/kde-apps/kget-24.12.2 | 2 +- .../md5-cache/kde-apps/kgoldrunner-24.08.3 | 2 +- .../md5-cache/kde-apps/kgoldrunner-24.12.1 | 16 - .../md5-cache/kde-apps/kgoldrunner-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kgpg-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kgpg-24.12.1 | 16 - metadata/md5-cache/kde-apps/kgpg-24.12.2 | 2 +- metadata/md5-cache/kde-apps/khangman-24.08.3 | 2 +- metadata/md5-cache/kde-apps/khangman-24.12.1 | 16 - metadata/md5-cache/kde-apps/khangman-24.12.2 | 2 +- .../md5-cache/kde-apps/khelpcenter-24.08.3 | 2 +- .../md5-cache/kde-apps/khelpcenter-24.12.1 | 16 - .../md5-cache/kde-apps/khelpcenter-24.12.2 | 2 +- .../kde-apps/kidentitymanagement-24.08.3 | 2 +- .../kde-apps/kidentitymanagement-24.12.1 | 17 - .../kde-apps/kidentitymanagement-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kig-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kig-24.12.1 | 18 - metadata/md5-cache/kde-apps/kig-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kigo-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kigo-24.12.1 | 16 - metadata/md5-cache/kde-apps/kigo-24.12.2 | 2 +- metadata/md5-cache/kde-apps/killbots-24.08.3 | 2 +- metadata/md5-cache/kde-apps/killbots-24.12.1 | 16 - metadata/md5-cache/kde-apps/killbots-24.12.2 | 2 +- .../kde-apps/kimagemapeditor-24.08.3 | 2 +- .../kde-apps/kimagemapeditor-24.12.1 | 16 - .../kde-apps/kimagemapeditor-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kimap-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kimap-24.12.1 | 17 - metadata/md5-cache/kde-apps/kimap-24.12.2 | 2 +- .../md5-cache/kde-apps/kio-extras-24.08.3 | 2 +- .../md5-cache/kde-apps/kio-extras-24.12.1 | 17 - .../md5-cache/kde-apps/kio-extras-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kiriki-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kiriki-24.12.1 | 16 - metadata/md5-cache/kde-apps/kiriki-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kiten-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kiten-24.12.1 | 16 - metadata/md5-cache/kde-apps/kiten-24.12.2 | 2 +- .../md5-cache/kde-apps/kitinerary-24.08.3 | 2 +- .../md5-cache/kde-apps/kitinerary-24.12.1 | 17 - .../md5-cache/kde-apps/kitinerary-24.12.2 | 2 +- .../md5-cache/kde-apps/kjumpingcube-24.08.3 | 2 +- .../md5-cache/kde-apps/kjumpingcube-24.12.1 | 16 - .../md5-cache/kde-apps/kjumpingcube-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kldap-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kldap-24.12.1 | 17 - metadata/md5-cache/kde-apps/kldap-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kleopatra-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kleopatra-24.12.1 | 17 - metadata/md5-cache/kde-apps/kleopatra-24.12.2 | 2 +- metadata/md5-cache/kde-apps/klettres-24.08.3 | 2 +- metadata/md5-cache/kde-apps/klettres-24.12.1 | 16 - metadata/md5-cache/kde-apps/klettres-24.12.2 | 2 +- metadata/md5-cache/kde-apps/klickety-24.08.3 | 2 +- metadata/md5-cache/kde-apps/klickety-24.12.1 | 16 - metadata/md5-cache/kde-apps/klickety-24.12.2 | 2 +- metadata/md5-cache/kde-apps/klines-24.08.3 | 2 +- metadata/md5-cache/kde-apps/klines-24.12.1 | 16 - metadata/md5-cache/kde-apps/klines-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmag-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmag-24.12.1 | 16 - metadata/md5-cache/kde-apps/kmag-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmahjongg-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmahjongg-24.12.1 | 16 - metadata/md5-cache/kde-apps/kmahjongg-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmail-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmail-24.12.1 | 17 - metadata/md5-cache/kde-apps/kmail-24.12.2 | 2 +- .../kde-apps/kmail-account-wizard-24.08.3 | 2 +- .../kde-apps/kmail-account-wizard-24.12.1 | 17 - .../kde-apps/kmail-account-wizard-24.12.2 | 2 +- .../md5-cache/kde-apps/kmailtransport-24.08.3 | 2 +- .../md5-cache/kde-apps/kmailtransport-24.12.1 | 17 - .../md5-cache/kde-apps/kmailtransport-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmbox-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmbox-24.12.1 | 17 - metadata/md5-cache/kde-apps/kmbox-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmime-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmime-24.12.1 | 17 - metadata/md5-cache/kde-apps/kmime-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmines-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmines-24.12.1 | 16 - metadata/md5-cache/kde-apps/kmines-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmix-24.12.1 | 2 +- metadata/md5-cache/kde-apps/kmix-24.12.2 | 2 +- .../md5-cache/kde-apps/kmousetool-24.08.3 | 2 +- .../md5-cache/kde-apps/kmousetool-24.12.1 | 16 - .../md5-cache/kde-apps/kmousetool-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmouth-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmouth-24.12.1 | 16 - metadata/md5-cache/kde-apps/kmouth-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kmplot-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kmplot-24.12.1 | 16 - metadata/md5-cache/kde-apps/kmplot-24.12.2 | 2 +- .../md5-cache/kde-apps/knavalbattle-24.08.3 | 2 +- .../md5-cache/kde-apps/knavalbattle-24.12.1 | 16 - .../md5-cache/kde-apps/knavalbattle-24.12.2 | 2 +- metadata/md5-cache/kde-apps/knetwalk-24.08.3 | 2 +- metadata/md5-cache/kde-apps/knetwalk-24.12.1 | 17 - metadata/md5-cache/kde-apps/knetwalk-24.12.2 | 2 +- metadata/md5-cache/kde-apps/knights-24.08.3 | 2 +- metadata/md5-cache/kde-apps/knights-24.12.1 | 16 - metadata/md5-cache/kde-apps/knights-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kolf-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kolf-24.12.1 | 16 - metadata/md5-cache/kde-apps/kolf-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kollision-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kollision-24.12.1 | 16 - metadata/md5-cache/kde-apps/kollision-24.12.2 | 2 +- .../md5-cache/kde-apps/kolourpaint-24.08.3 | 2 +- .../md5-cache/kde-apps/kolourpaint-24.12.1 | 16 - .../md5-cache/kde-apps/kolourpaint-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kompare-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kompare-24.12.1 | 16 - metadata/md5-cache/kde-apps/kompare-24.12.2 | 2 +- metadata/md5-cache/kde-apps/konqueror-24.08.3 | 2 +- metadata/md5-cache/kde-apps/konqueror-24.12.1 | 17 - metadata/md5-cache/kde-apps/konqueror-24.12.2 | 2 +- metadata/md5-cache/kde-apps/konquest-24.08.3 | 2 +- metadata/md5-cache/kde-apps/konquest-24.12.1 | 16 - metadata/md5-cache/kde-apps/konquest-24.12.2 | 2 +- metadata/md5-cache/kde-apps/konsole-24.08.3 | 2 +- metadata/md5-cache/kde-apps/konsole-24.12.1 | 17 - metadata/md5-cache/kde-apps/konsole-24.12.2 | 2 +- .../kde-apps/konsolekalendar-24.08.3 | 2 +- .../kde-apps/konsolekalendar-24.12.1 | 16 - .../kde-apps/konsolekalendar-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kontact-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kontact-24.12.1 | 16 - metadata/md5-cache/kde-apps/kontact-24.12.2 | 2 +- .../kde-apps/kontactinterface-24.08.3 | 2 +- .../kde-apps/kontactinterface-24.12.1 | 16 - .../kde-apps/kontactinterface-24.12.2 | 2 +- .../md5-cache/kde-apps/korganizer-24.08.3 | 2 +- .../md5-cache/kde-apps/korganizer-24.12.1 | 17 - .../md5-cache/kde-apps/korganizer-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kpat-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kpat-24.12.1 | 17 - metadata/md5-cache/kde-apps/kpat-24.12.2 | 2 +- .../md5-cache/kde-apps/kpimtextedit-24.08.3 | 2 +- .../md5-cache/kde-apps/kpimtextedit-24.12.1 | 17 - .../md5-cache/kde-apps/kpimtextedit-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kpkpass-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kpkpass-24.12.1 | 17 - metadata/md5-cache/kde-apps/kpkpass-24.12.2 | 2 +- .../md5-cache/kde-apps/kqtquickcharts-24.08.3 | 2 +- .../md5-cache/kde-apps/kqtquickcharts-24.12.1 | 16 - .../md5-cache/kde-apps/kqtquickcharts-24.12.2 | 2 +- metadata/md5-cache/kde-apps/krdc-24.08.3 | 2 +- metadata/md5-cache/kde-apps/krdc-24.12.1 | 16 - metadata/md5-cache/kde-apps/krdc-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kreversi-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kreversi-24.12.1 | 16 - metadata/md5-cache/kde-apps/kreversi-24.12.2 | 2 +- metadata/md5-cache/kde-apps/krfb-24.08.3 | 2 +- metadata/md5-cache/kde-apps/krfb-24.12.1 | 16 - metadata/md5-cache/kde-apps/krfb-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kruler-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kruler-24.12.1 | 16 - metadata/md5-cache/kde-apps/kruler-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kshisen-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kshisen-24.12.1 | 16 - metadata/md5-cache/kde-apps/kshisen-24.12.2 | 2 +- metadata/md5-cache/kde-apps/ksirk-24.08.3 | 2 +- metadata/md5-cache/kde-apps/ksirk-24.12.1 | 16 - metadata/md5-cache/kde-apps/ksirk-24.12.2 | 2 +- metadata/md5-cache/kde-apps/ksmtp-24.08.3 | 2 +- metadata/md5-cache/kde-apps/ksmtp-24.12.1 | 17 - metadata/md5-cache/kde-apps/ksmtp-24.12.2 | 2 +- .../md5-cache/kde-apps/ksnakeduel-24.08.3 | 2 +- .../md5-cache/kde-apps/ksnakeduel-24.12.1 | 16 - .../md5-cache/kde-apps/ksnakeduel-24.12.2 | 2 +- .../md5-cache/kde-apps/kspaceduel-24.08.3 | 2 +- .../md5-cache/kde-apps/kspaceduel-24.12.1 | 16 - .../md5-cache/kde-apps/kspaceduel-24.12.2 | 2 +- metadata/md5-cache/kde-apps/ksquares-24.08.3 | 2 +- metadata/md5-cache/kde-apps/ksquares-24.12.1 | 16 - metadata/md5-cache/kde-apps/ksquares-24.12.2 | 2 +- metadata/md5-cache/kde-apps/ksudoku-24.08.3 | 2 +- metadata/md5-cache/kde-apps/ksudoku-24.12.1 | 16 - metadata/md5-cache/kde-apps/ksudoku-24.12.2 | 2 +- .../md5-cache/kde-apps/ksystemlog-24.08.3 | 2 +- .../md5-cache/kde-apps/ksystemlog-24.12.1 | 17 - .../md5-cache/kde-apps/ksystemlog-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kteatime-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kteatime-24.12.1 | 16 - metadata/md5-cache/kde-apps/kteatime-24.12.2 | 2 +- metadata/md5-cache/kde-apps/ktimer-24.08.3 | 2 +- metadata/md5-cache/kde-apps/ktimer-24.12.1 | 16 - metadata/md5-cache/kde-apps/ktimer-24.12.2 | 2 +- metadata/md5-cache/kde-apps/ktouch-24.08.3 | 2 +- metadata/md5-cache/kde-apps/ktouch-24.12.1 | 16 - metadata/md5-cache/kde-apps/ktouch-24.12.2 | 2 +- .../md5-cache/kde-apps/ktuberling-24.08.3 | 2 +- .../md5-cache/kde-apps/ktuberling-24.12.1 | 16 - .../md5-cache/kde-apps/ktuberling-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kturtle-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kturtle-24.12.1 | 16 - metadata/md5-cache/kde-apps/kturtle-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kubrick-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kubrick-24.12.1 | 16 - metadata/md5-cache/kde-apps/kubrick-24.12.2 | 2 +- .../md5-cache/kde-apps/kwalletmanager-24.08.3 | 2 +- .../md5-cache/kde-apps/kwalletmanager-24.12.1 | 16 - .../md5-cache/kde-apps/kwalletmanager-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kwave-24.12.1 | 2 +- metadata/md5-cache/kde-apps/kwave-24.12.1-r1 | 17 - metadata/md5-cache/kde-apps/kwave-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kwordquiz-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kwordquiz-24.12.1 | 17 - metadata/md5-cache/kde-apps/kwordquiz-24.12.2 | 2 +- metadata/md5-cache/kde-apps/kwrite-24.08.3 | 2 +- metadata/md5-cache/kde-apps/kwrite-24.12.1 | 16 - metadata/md5-cache/kde-apps/kwrite-24.12.2 | 2 +- .../md5-cache/kde-apps/libgravatar-24.08.3 | 2 +- .../md5-cache/kde-apps/libgravatar-24.12.1 | 17 - .../md5-cache/kde-apps/libgravatar-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libkcddb-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libkcddb-24.12.1 | 17 - metadata/md5-cache/kde-apps/libkcddb-24.12.2 | 2 +- .../kde-apps/libkcddb-common-24.12.1 | 14 - .../kde-apps/libkcompactdisc-24.08.3 | 2 +- .../kde-apps/libkcompactdisc-24.12.1 | 17 - .../kde-apps/libkcompactdisc-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libkdcraw-23.08.5 | 2 +- metadata/md5-cache/kde-apps/libkdcraw-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libkdcraw-24.12.1 | 16 - metadata/md5-cache/kde-apps/libkdcraw-24.12.2 | 2 +- .../md5-cache/kde-apps/libkdegames-24.08.3 | 2 +- .../md5-cache/kde-apps/libkdegames-24.12.1 | 17 - .../md5-cache/kde-apps/libkdegames-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libkdepim-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libkdepim-24.12.1 | 17 - metadata/md5-cache/kde-apps/libkdepim-24.12.2 | 2 +- .../kde-apps/libkeduvocdocument-24.08.3 | 2 +- .../kde-apps/libkeduvocdocument-24.12.1 | 17 - .../kde-apps/libkeduvocdocument-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libkexiv2-23.08.5 | 2 +- metadata/md5-cache/kde-apps/libkexiv2-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libkexiv2-24.12.1 | 16 - metadata/md5-cache/kde-apps/libkexiv2-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libkgapi-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libkgapi-24.12.1 | 17 - metadata/md5-cache/kde-apps/libkgapi-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libkleo-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libkleo-24.12.1 | 17 - metadata/md5-cache/kde-apps/libkleo-24.12.2 | 2 +- .../md5-cache/kde-apps/libkmahjongg-24.08.3 | 2 +- .../md5-cache/kde-apps/libkmahjongg-24.12.1 | 16 - .../md5-cache/kde-apps/libkmahjongg-24.12.2 | 2 +- .../kde-apps/libkomparediff2-24.08.3 | 2 +- .../kde-apps/libkomparediff2-24.12.1 | 17 - .../kde-apps/libkomparediff2-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libksane-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libksane-24.12.1 | 16 - metadata/md5-cache/kde-apps/libksane-24.12.2 | 2 +- .../kde-apps/libksane-common-24.12.1 | 13 - metadata/md5-cache/kde-apps/libksieve-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libksieve-24.12.1 | 17 - metadata/md5-cache/kde-apps/libksieve-24.12.2 | 2 +- metadata/md5-cache/kde-apps/libktnef-24.08.3 | 2 +- metadata/md5-cache/kde-apps/libktnef-24.12.1 | 17 - metadata/md5-cache/kde-apps/libktnef-24.12.2 | 2 +- metadata/md5-cache/kde-apps/lokalize-24.08.3 | 2 +- metadata/md5-cache/kde-apps/lokalize-24.12.1 | 18 - metadata/md5-cache/kde-apps/lokalize-24.12.2 | 2 +- metadata/md5-cache/kde-apps/lskat-24.08.3 | 2 +- metadata/md5-cache/kde-apps/lskat-24.12.1 | 16 - metadata/md5-cache/kde-apps/lskat-24.12.2 | 2 +- .../md5-cache/kde-apps/mailcommon-24.08.3 | 2 +- .../md5-cache/kde-apps/mailcommon-24.12.1 | 17 - .../md5-cache/kde-apps/mailcommon-24.12.2 | 2 +- .../md5-cache/kde-apps/mailimporter-24.08.3 | 2 +- .../md5-cache/kde-apps/mailimporter-24.12.1 | 17 - .../md5-cache/kde-apps/mailimporter-24.12.2 | 2 +- metadata/md5-cache/kde-apps/marble-24.12.1-r1 | 2 +- metadata/md5-cache/kde-apps/marble-24.12.2 | 2 +- .../md5-cache/kde-apps/mbox-importer-24.08.3 | 2 +- .../md5-cache/kde-apps/mbox-importer-24.12.1 | 16 - .../md5-cache/kde-apps/mbox-importer-24.12.2 | 2 +- .../md5-cache/kde-apps/messagelib-24.08.3 | 2 +- .../md5-cache/kde-apps/messagelib-24.12.1 | 17 - .../md5-cache/kde-apps/messagelib-24.12.2 | 2 +- .../md5-cache/kde-apps/mimetreeparser-24.08.3 | 2 +- .../md5-cache/kde-apps/mimetreeparser-24.12.1 | 17 - .../md5-cache/kde-apps/mimetreeparser-24.12.2 | 2 +- metadata/md5-cache/kde-apps/minuet-24.12.1 | 2 +- metadata/md5-cache/kde-apps/minuet-24.12.2 | 2 +- metadata/md5-cache/kde-apps/okular-24.08.3 | 2 +- metadata/md5-cache/kde-apps/okular-24.12.1 | 17 - metadata/md5-cache/kde-apps/okular-24.12.2 | 2 +- metadata/md5-cache/kde-apps/palapeli-24.08.3 | 2 +- metadata/md5-cache/kde-apps/palapeli-24.12.1 | 16 - metadata/md5-cache/kde-apps/palapeli-24.12.2 | 2 +- metadata/md5-cache/kde-apps/parley-24.08.3 | 2 +- metadata/md5-cache/kde-apps/parley-24.12.1 | 16 - metadata/md5-cache/kde-apps/parley-24.12.2 | 2 +- metadata/md5-cache/kde-apps/picmi-24.08.3 | 2 +- metadata/md5-cache/kde-apps/picmi-24.12.1 | 17 - metadata/md5-cache/kde-apps/picmi-24.12.2 | 2 +- .../kde-apps/pim-data-exporter-24.08.3 | 2 +- .../kde-apps/pim-data-exporter-24.12.1 | 17 - .../kde-apps/pim-data-exporter-24.12.2 | 2 +- .../kde-apps/pim-sieve-editor-24.08.3 | 2 +- .../kde-apps/pim-sieve-editor-24.12.1 | 17 - .../kde-apps/pim-sieve-editor-24.12.2 | 2 +- metadata/md5-cache/kde-apps/pimcommon-24.08.3 | 2 +- metadata/md5-cache/kde-apps/pimcommon-24.12.1 | 17 - metadata/md5-cache/kde-apps/pimcommon-24.12.2 | 2 +- metadata/md5-cache/kde-apps/poxml-24.08.3 | 2 +- metadata/md5-cache/kde-apps/poxml-24.12.1 | 16 - metadata/md5-cache/kde-apps/poxml-24.12.2 | 2 +- metadata/md5-cache/kde-apps/rocs-24.08.3 | 2 +- metadata/md5-cache/kde-apps/rocs-24.12.1 | 17 - metadata/md5-cache/kde-apps/rocs-24.12.2 | 2 +- .../kde-apps/signon-kwallet-extension-24.08.3 | 2 +- .../kde-apps/signon-kwallet-extension-24.12.1 | 16 - .../kde-apps/signon-kwallet-extension-24.12.2 | 2 +- metadata/md5-cache/kde-apps/spectacle-24.08.3 | 2 +- metadata/md5-cache/kde-apps/spectacle-24.12.1 | 17 - metadata/md5-cache/kde-apps/spectacle-24.12.2 | 2 +- metadata/md5-cache/kde-apps/step-24.12.1 | 2 +- metadata/md5-cache/kde-apps/step-24.12.2 | 2 +- metadata/md5-cache/kde-apps/svgpart-24.08.3 | 2 +- metadata/md5-cache/kde-apps/svgpart-24.12.1 | 16 - metadata/md5-cache/kde-apps/svgpart-24.12.2 | 2 +- metadata/md5-cache/kde-apps/sweeper-24.08.3 | 2 +- metadata/md5-cache/kde-apps/sweeper-24.12.1 | 16 - metadata/md5-cache/kde-apps/sweeper-24.12.2 | 2 +- .../md5-cache/kde-apps/thumbnailers-24.12.1 | 10 - metadata/md5-cache/kde-apps/umbrello-24.08.3 | 2 +- metadata/md5-cache/kde-apps/umbrello-24.12.1 | 17 - metadata/md5-cache/kde-apps/umbrello-24.12.2 | 2 +- metadata/md5-cache/kde-apps/yakuake-24.08.3 | 2 +- metadata/md5-cache/kde-apps/yakuake-24.12.1 | 16 - metadata/md5-cache/kde-apps/yakuake-24.12.2 | 2 +- metadata/md5-cache/kde-frameworks/Manifest.gz | Bin 34127 -> 34145 bytes .../md5-cache/kde-frameworks/attica-5.116.0 | 2 +- .../md5-cache/kde-frameworks/attica-6.10.0 | 2 +- .../md5-cache/kde-frameworks/attica-6.9.0 | 2 +- .../md5-cache/kde-frameworks/baloo-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/baloo-6.9.0 | 2 +- .../md5-cache/kde-frameworks/bluez-qt-6.10.0 | 2 +- .../md5-cache/kde-frameworks/bluez-qt-6.9.0 | 2 +- .../frameworkintegration-5.116.0 | 2 +- .../frameworkintegration-6.10.0 | 2 +- .../kde-frameworks/frameworkintegration-6.9.0 | 2 +- .../md5-cache/kde-frameworks/karchive-5.116.0 | 2 +- .../md5-cache/kde-frameworks/karchive-6.10.0 | 2 +- .../md5-cache/kde-frameworks/karchive-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kauth-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kauth-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/kauth-6.9.0 | 2 +- .../kde-frameworks/kbookmarks-5.116.0 | 2 +- .../kde-frameworks/kbookmarks-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kbookmarks-6.9.0 | 2 +- .../kde-frameworks/kcalendarcore-5.116.0 | 2 +- .../kde-frameworks/kcalendarcore-6.10.0 | 2 +- .../kde-frameworks/kcalendarcore-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kcmutils-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kcmutils-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kcmutils-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kcodecs-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kcodecs-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kcodecs-6.9.0 | 2 +- .../kde-frameworks/kcolorscheme-6.10.0 | 2 +- .../kde-frameworks/kcolorscheme-6.9.0 | 2 +- .../kde-frameworks/kcompletion-5.116.0 | 2 +- .../kde-frameworks/kcompletion-6.10.0 | 2 +- .../kde-frameworks/kcompletion-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kconfig-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kconfig-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kconfig-6.9.0 | 2 +- .../kde-frameworks/kconfigwidgets-5.116.0 | 2 +- .../kde-frameworks/kconfigwidgets-6.10.0 | 2 +- .../kde-frameworks/kconfigwidgets-6.9.0 | 2 +- .../kde-frameworks/kcontacts-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kcontacts-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kcontacts-6.9.0 | 2 +- .../kde-frameworks/kcoreaddons-5.116.0 | 2 +- .../kde-frameworks/kcoreaddons-6.10.0 | 2 +- .../kde-frameworks/kcoreaddons-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kcrash-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kcrash-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kcrash-6.9.0 | 2 +- metadata/md5-cache/kde-frameworks/kdav-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/kdav-6.9.0 | 2 +- .../kde-frameworks/kdbusaddons-5.116.0 | 2 +- .../kde-frameworks/kdbusaddons-6.10.0 | 2 +- .../kde-frameworks/kdbusaddons-6.9.0 | 2 +- .../kde-frameworks/kdeclarative-5.116.0 | 2 +- .../kde-frameworks/kdeclarative-6.10.0 | 2 +- .../kde-frameworks/kdeclarative-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kded-5.116.0 | 2 +- metadata/md5-cache/kde-frameworks/kded-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/kded-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kdesu-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kdesu-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/kdesu-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kdnssd-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kdnssd-6.9.0 | 2 +- .../kde-frameworks/kdoctools-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kdoctools-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kdoctools-6.9.0 | 2 +- .../kde-frameworks/kfilemetadata-5.116.0 | 2 +- .../kde-frameworks/kfilemetadata-6.10.0 | 2 +- .../kde-frameworks/kfilemetadata-6.9.0 | 2 +- .../kde-frameworks/kglobalaccel-5.116.0 | 2 +- .../kde-frameworks/kglobalaccel-5.116.0-r1 | 2 +- .../kde-frameworks/kglobalaccel-6.10.0 | 2 +- .../kde-frameworks/kglobalaccel-6.9.0 | 2 +- .../kde-frameworks/kguiaddons-5.116.0 | 2 +- .../kde-frameworks/kguiaddons-5.116.0-r1 | 2 +- .../kde-frameworks/kguiaddons-6.10.0 | 2 +- .../kde-frameworks/kguiaddons-6.9.0-r1 | 2 +- .../kde-frameworks/kholidays-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kholidays-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kholidays-6.9.0 | 2 +- .../md5-cache/kde-frameworks/ki18n-5.116.0 | 2 +- .../md5-cache/kde-frameworks/ki18n-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/ki18n-6.9.0 | 2 +- .../kde-frameworks/kiconthemes-5.116.0 | 2 +- .../kde-frameworks/kiconthemes-6.10.0 | 2 +- .../kde-frameworks/kiconthemes-6.9.0 | 2 +- .../kde-frameworks/kidletime-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kidletime-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kidletime-6.9.0 | 2 +- .../kde-frameworks/kimageformats-5.116.0-r1 | 2 +- .../kde-frameworks/kimageformats-6.10.0 | 2 +- .../kde-frameworks/kimageformats-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kinit-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kio-5.116.0-r3 | 2 +- metadata/md5-cache/kde-frameworks/kio-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/kio-6.9.0 | 2 +- .../kde-frameworks/kirigami-5.116.0-r2 | 2 +- .../md5-cache/kde-frameworks/kirigami-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kirigami-6.9.0 | 2 +- .../kde-frameworks/kitemmodels-5.116.0 | 2 +- .../kde-frameworks/kitemmodels-6.10.0 | 2 +- .../kde-frameworks/kitemmodels-6.9.0 | 2 +- .../kde-frameworks/kitemviews-5.116.0 | 2 +- .../kde-frameworks/kitemviews-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kitemviews-6.9.0 | 2 +- .../kde-frameworks/kjobwidgets-5.116.0 | 2 +- .../kde-frameworks/kjobwidgets-6.10.0 | 2 +- .../kde-frameworks/kjobwidgets-6.9.0 | 2 +- .../kde-frameworks/knewstuff-5.116.0 | 2 +- .../md5-cache/kde-frameworks/knewstuff-6.10.0 | 2 +- .../md5-cache/kde-frameworks/knewstuff-6.9.0 | 2 +- .../kde-frameworks/knotifications-5.116.0 | 2 +- .../kde-frameworks/knotifications-6.10.0 | 2 +- .../kde-frameworks/knotifications-6.9.0 | 2 +- .../kde-frameworks/knotifyconfig-5.116.0 | 2 +- .../kde-frameworks/knotifyconfig-6.10.0 | 2 +- .../kde-frameworks/knotifyconfig-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kpackage-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kpackage-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kpackage-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kparts-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kparts-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kparts-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kpeople-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kpeople-6.9.0 | 2 +- .../kde-frameworks/kplotting-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kplotting-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kplotting-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kpty-5.116.0 | 2 +- metadata/md5-cache/kde-frameworks/kpty-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/kpty-6.9.0 | 2 +- .../kde-frameworks/kquickcharts-6.10.0 | 2 +- .../kde-frameworks/kquickcharts-6.9.0 | 2 +- .../md5-cache/kde-frameworks/krunner-6.10.0 | 2 +- .../md5-cache/kde-frameworks/krunner-6.9.0 | 2 +- .../kde-frameworks/kservice-5.116.0-r1 | 2 +- .../md5-cache/kde-frameworks/kservice-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kservice-6.9.0 | 2 +- .../kde-frameworks/kstatusnotifieritem-6.10.0 | 2 +- .../kde-frameworks/kstatusnotifieritem-6.9.0 | 2 +- metadata/md5-cache/kde-frameworks/ksvg-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/ksvg-6.9.0 | 2 +- .../kde-frameworks/ktexteditor-5.116.0 | 2 +- .../kde-frameworks/ktexteditor-6.10.0 | 2 +- .../kde-frameworks/ktexteditor-6.9.0 | 2 +- .../kde-frameworks/ktexttemplate-6.10.0 | 2 +- .../kde-frameworks/ktexttemplate-6.9.0 | 2 +- .../kde-frameworks/ktextwidgets-5.116.0 | 2 +- .../kde-frameworks/ktextwidgets-6.10.0 | 2 +- .../kde-frameworks/ktextwidgets-6.9.0 | 2 +- .../kde-frameworks/kunitconversion-6.10.0 | 2 +- .../kde-frameworks/kunitconversion-6.9.0 | 2 +- .../kde-frameworks/kuserfeedback-6.10.0 | 2 +- .../kde-frameworks/kuserfeedback-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kwallet-5.116.0 | 2 +- .../kde-frameworks/kwallet-5.116.0-r1 | 2 +- .../md5-cache/kde-frameworks/kwallet-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kwallet-6.9.0 | 2 +- .../kde-frameworks/kwidgetsaddons-5.116.0 | 2 +- .../kde-frameworks/kwidgetsaddons-6.10.0 | 2 +- .../kde-frameworks/kwidgetsaddons-6.9.0 | 2 +- .../kde-frameworks/kwindowsystem-5.116.0 | 2 +- .../kde-frameworks/kwindowsystem-6.10.0 | 2 +- .../kde-frameworks/kwindowsystem-6.9.0 | 2 +- .../md5-cache/kde-frameworks/kxmlgui-5.116.0 | 2 +- .../md5-cache/kde-frameworks/kxmlgui-6.10.0 | 2 +- .../md5-cache/kde-frameworks/kxmlgui-6.9.0 | 2 +- .../kde-frameworks/modemmanager-qt-6.10.0 | 2 +- .../kde-frameworks/modemmanager-qt-6.9.0 | 2 +- .../kde-frameworks/networkmanager-qt-6.10.0 | 2 +- .../kde-frameworks/networkmanager-qt-6.9.0 | 2 +- .../md5-cache/kde-frameworks/prison-5.116.0 | 2 +- .../md5-cache/kde-frameworks/prison-6.10.0 | 2 +- .../md5-cache/kde-frameworks/prison-6.9.0 | 2 +- .../kde-frameworks/purpose-5.116.0-r2 | 2 +- .../md5-cache/kde-frameworks/purpose-6.10.0 | 2 +- .../md5-cache/kde-frameworks/purpose-6.9.0 | 2 +- .../kde-frameworks/qqc2-desktop-style-5.116.1 | 2 +- .../kde-frameworks/qqc2-desktop-style-6.10.0 | 2 +- .../kde-frameworks/qqc2-desktop-style-6.9.0 | 2 +- .../md5-cache/kde-frameworks/solid-5.116.0-r1 | 2 +- .../md5-cache/kde-frameworks/solid-6.10.0 | 2 +- metadata/md5-cache/kde-frameworks/solid-6.9.1 | 2 +- .../md5-cache/kde-frameworks/sonnet-5.116.0 | 2 +- .../md5-cache/kde-frameworks/sonnet-6.10.0 | 2 +- .../md5-cache/kde-frameworks/sonnet-6.9.0 | 2 +- .../kde-frameworks/syndication-6.10.0 | 2 +- .../kde-frameworks/syndication-6.9.0 | 2 +- .../syntax-highlighting-5.116.0 | 2 +- .../kde-frameworks/syntax-highlighting-6.10.0 | 2 +- .../kde-frameworks/syntax-highlighting-6.9.0 | 2 +- .../kde-frameworks/threadweaver-5.116.0 | 2 +- .../kde-frameworks/threadweaver-6.10.0 | 2 +- .../kde-frameworks/threadweaver-6.9.0 | 2 +- metadata/md5-cache/kde-misc/Manifest.gz | Bin 7011 -> 5563 bytes metadata/md5-cache/kde-misc/basket-2.49b | 2 +- .../md5-cache/kde-misc/colord-kde-24.08.3 | 2 +- .../md5-cache/kde-misc/colord-kde-24.12.1 | 16 - .../md5-cache/kde-misc/colord-kde-24.12.2 | 2 +- metadata/md5-cache/kde-misc/kclock-24.08.3 | 2 +- metadata/md5-cache/kde-misc/kclock-24.12.1 | 16 - metadata/md5-cache/kde-misc/kclock-24.12.2 | 2 +- .../md5-cache/kde-misc/kdeconnect-24.08.3 | 2 +- .../md5-cache/kde-misc/kdeconnect-24.12.1 | 17 - .../md5-cache/kde-misc/kdeconnect-24.12.2 | 2 +- metadata/md5-cache/kde-misc/kdiff3-1.11.5 | 2 +- metadata/md5-cache/kde-misc/kdiff3-1.12.0 | 6 +- metadata/md5-cache/kde-misc/kdirstat-3.4.3 | 2 +- metadata/md5-cache/kde-misc/kio-fuse-5.1.0-r1 | 2 +- .../md5-cache/kde-misc/kio-gdrive-24.08.3 | 2 +- .../md5-cache/kde-misc/kio-gdrive-24.12.1 | 17 - .../md5-cache/kde-misc/kio-gdrive-24.12.2 | 2 +- .../kde-misc/kio-gdrive-common-24.12.1 | 14 - .../kde-misc/kio-gopher-0.1.99_p20240906 | 2 +- .../kde-misc/kio-stash-1.0_p20240906 | 2 +- .../kde-misc/krename-5.0.60_pre20240906 | 2 +- .../kde-misc/krunner-vscodeprojects-2.0.2 | 2 +- metadata/md5-cache/kde-misc/krusader-2.9.0 | 2 +- metadata/md5-cache/kde-misc/kweather-24.08.3 | 2 +- metadata/md5-cache/kde-misc/kweather-24.12.1 | 16 - metadata/md5-cache/kde-misc/kweather-24.12.2 | 2 +- .../md5-cache/kde-misc/markdownpart-24.08.3 | 2 +- .../md5-cache/kde-misc/markdownpart-24.12.1 | 16 - .../md5-cache/kde-misc/markdownpart-24.12.2 | 2 +- metadata/md5-cache/kde-misc/plasma-pass-1.2.2 | 2 +- metadata/md5-cache/kde-misc/rsibreak-0.12.15 | 2 +- metadata/md5-cache/kde-misc/skanlite-24.08.3 | 2 +- metadata/md5-cache/kde-misc/skanlite-24.12.1 | 17 - metadata/md5-cache/kde-misc/skanlite-24.12.2 | 2 +- metadata/md5-cache/kde-misc/tellico-4.0.1 | 2 +- metadata/md5-cache/kde-misc/tellico-4.1 | 2 +- metadata/md5-cache/kde-misc/zanshin-24.08.3 | 2 +- metadata/md5-cache/kde-misc/zanshin-24.12.1 | 17 - metadata/md5-cache/kde-misc/zanshin-24.12.2 | 2 +- metadata/md5-cache/kde-plasma/Manifest.gz | Bin 12169 -> 23181 bytes metadata/md5-cache/kde-plasma/bluedevil-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/bluedevil-6.3.0 | 16 + metadata/md5-cache/kde-plasma/breeze-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/breeze-6.3.0 | 16 + .../md5-cache/kde-plasma/breeze-grub-6.2.5 | 2 +- .../md5-cache/kde-plasma/breeze-grub-6.3.0 | 12 + .../md5-cache/kde-plasma/breeze-gtk-6.2.5 | 2 +- .../md5-cache/kde-plasma/breeze-gtk-6.3.0 | 16 + .../kde-plasma/breeze-plymouth-6.2.5 | 2 +- .../kde-plasma/breeze-plymouth-6.3.0 | 14 + metadata/md5-cache/kde-plasma/discover-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/discover-6.3.0 | 17 + metadata/md5-cache/kde-plasma/drkonqi-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/drkonqi-6.3.0 | 18 + .../md5-cache/kde-plasma/flatpak-kcm-6.2.5 | 2 +- .../md5-cache/kde-plasma/flatpak-kcm-6.3.0 | 16 + .../kde-plasma/kactivitymanagerd-6.2.5 | 2 +- .../kde-plasma/kactivitymanagerd-6.3.0 | 16 + .../md5-cache/kde-plasma/kde-cli-tools-6.2.5 | 2 +- .../md5-cache/kde-plasma/kde-cli-tools-6.3.0 | 16 + .../kde-plasma/kde-cli-tools-common-6.2.5 | 2 +- .../kde-plasma/kde-cli-tools-common-6.3.0 | 14 + .../md5-cache/kde-plasma/kde-gtk-config-6.2.5 | 2 +- .../md5-cache/kde-plasma/kde-gtk-config-6.3.0 | 16 + .../md5-cache/kde-plasma/kdecoration-6.2.5 | 2 +- .../md5-cache/kde-plasma/kdecoration-6.3.0 | 16 + .../kde-plasma/kdeplasma-addons-6.2.5 | 2 +- .../kde-plasma/kdeplasma-addons-6.3.0 | 17 + metadata/md5-cache/kde-plasma/kdesu-gui-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kdesu-gui-6.3.0 | 15 + .../md5-cache/kde-plasma/keditfiletype-6.2.5 | 2 +- .../md5-cache/kde-plasma/keditfiletype-6.3.0 | 17 + metadata/md5-cache/kde-plasma/kgamma-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kgamma-6.3.0 | 16 + .../md5-cache/kde-plasma/kglobalacceld-6.2.5 | 2 +- .../md5-cache/kde-plasma/kglobalacceld-6.3.0 | 17 + .../md5-cache/kde-plasma/kinfocenter-6.2.5 | 2 +- .../md5-cache/kde-plasma/kinfocenter-6.3.0 | 16 + metadata/md5-cache/kde-plasma/kmenuedit-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kmenuedit-6.3.0 | 16 + metadata/md5-cache/kde-plasma/kpipewire-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kpipewire-6.3.0 | 17 + metadata/md5-cache/kde-plasma/krdp-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/krdp-6.3.0 | 17 + metadata/md5-cache/kde-plasma/kscreen-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kscreen-6.3.0 | 17 + .../md5-cache/kde-plasma/kscreenlocker-6.2.5 | 2 +- .../md5-cache/kde-plasma/kscreenlocker-6.3.0 | 17 + .../md5-cache/kde-plasma/ksshaskpass-6.2.5 | 2 +- .../md5-cache/kde-plasma/ksshaskpass-6.3.0 | 16 + .../md5-cache/kde-plasma/ksystemstats-6.2.5 | 2 +- .../md5-cache/kde-plasma/ksystemstats-6.3.0 | 16 + .../md5-cache/kde-plasma/kwallet-pam-6.2.5 | 2 +- .../md5-cache/kde-plasma/kwallet-pam-6.3.0 | 15 + .../md5-cache/kde-plasma/kwayland-5.116.0 | 2 +- .../md5-cache/kde-plasma/kwayland-5.116.0-r1 | 2 +- metadata/md5-cache/kde-plasma/kwayland-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kwayland-6.3.0 | 16 + .../kde-plasma/kwayland-integration-6.2.5 | 2 +- .../kde-plasma/kwayland-integration-6.3.0 | 16 + metadata/md5-cache/kde-plasma/kwin-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kwin-6.3.0-r1 | 17 + metadata/md5-cache/kde-plasma/kwrited-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/kwrited-6.3.0 | 15 + .../md5-cache/kde-plasma/layer-shell-qt-6.2.5 | 2 +- .../md5-cache/kde-plasma/layer-shell-qt-6.3.0 | 15 + .../md5-cache/kde-plasma/libkscreen-6.2.5 | 2 +- .../md5-cache/kde-plasma/libkscreen-6.3.0 | 16 + .../md5-cache/kde-plasma/libksysguard-6.2.5 | 2 +- .../md5-cache/kde-plasma/libksysguard-6.3.0 | 17 + metadata/md5-cache/kde-plasma/libplasma-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/libplasma-6.3.0 | 16 + metadata/md5-cache/kde-plasma/milou-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/milou-6.3.0 | 16 + .../kde-plasma/ocean-sound-theme-6.2.5 | 2 +- .../kde-plasma/ocean-sound-theme-6.3.0 | 15 + metadata/md5-cache/kde-plasma/oxygen-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/oxygen-6.3.0 | 15 + .../md5-cache/kde-plasma/oxygen-sounds-6.2.5 | 2 +- .../md5-cache/kde-plasma/oxygen-sounds-6.3.0 | 15 + .../kde-plasma/plasma-activities-5.116.0 | 2 +- .../kde-plasma/plasma-activities-6.2.5 | 2 +- .../kde-plasma/plasma-activities-6.3.0 | 16 + .../kde-plasma/plasma-activities-stats-6.2.5 | 2 +- .../kde-plasma/plasma-activities-stats-6.3.0 | 16 + .../plasma-browser-integration-6.2.5 | 2 +- .../plasma-browser-integration-6.3.0 | 16 + .../kde-plasma/plasma-desktop-6.2.5-r1 | 2 +- .../md5-cache/kde-plasma/plasma-desktop-6.3.0 | 17 + .../md5-cache/kde-plasma/plasma-disks-6.2.5 | 2 +- .../md5-cache/kde-plasma/plasma-disks-6.3.0 | 16 + .../kde-plasma/plasma-firewall-6.2.5 | 2 +- .../kde-plasma/plasma-firewall-6.3.0 | 18 + .../kde-plasma/plasma-integration-6.2.5 | 2 +- .../kde-plasma/plasma-integration-6.3.0 | 18 + .../kde-plasma/plasma-login-sessions-6.2.5 | 2 +- .../kde-plasma/plasma-login-sessions-6.3.0 | 15 + .../md5-cache/kde-plasma/plasma-meta-6.3.0 | 13 + metadata/md5-cache/kde-plasma/plasma-nm-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/plasma-nm-6.3.0 | 17 + metadata/md5-cache/kde-plasma/plasma-pa-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/plasma-pa-6.3.0 | 17 + .../md5-cache/kde-plasma/plasma-sdk-6.2.5 | 2 +- .../md5-cache/kde-plasma/plasma-sdk-6.3.0 | 17 + .../kde-plasma/plasma-systemmonitor-6.2.5 | 2 +- .../kde-plasma/plasma-systemmonitor-6.3.0 | 16 + .../kde-plasma/plasma-thunderbolt-6.2.5 | 2 +- .../kde-plasma/plasma-thunderbolt-6.3.0 | 17 + .../md5-cache/kde-plasma/plasma-vault-6.2.5 | 2 +- .../md5-cache/kde-plasma/plasma-vault-6.3.0 | 16 + .../md5-cache/kde-plasma/plasma-welcome-6.2.5 | 2 +- .../md5-cache/kde-plasma/plasma-welcome-6.3.0 | 16 + .../kde-plasma/plasma-workspace-6.2.5 | 2 +- .../kde-plasma/plasma-workspace-6.3.0 | 17 + .../plasma-workspace-wallpapers-6.2.5 | 2 +- .../plasma-workspace-wallpapers-6.3.0 | 13 + .../md5-cache/kde-plasma/plasma5support-6.2.5 | 2 +- .../md5-cache/kde-plasma/plasma5support-6.3.0 | 16 + .../md5-cache/kde-plasma/plymouth-kcm-6.2.5 | 2 +- .../md5-cache/kde-plasma/plymouth-kcm-6.3.0 | 16 + .../kde-plasma/polkit-kde-agent-5.27.11 | 2 +- .../kde-plasma/polkit-kde-agent-6.2.5 | 2 +- .../kde-plasma/polkit-kde-agent-6.3.0 | 16 + .../md5-cache/kde-plasma/powerdevil-6.2.5 | 2 +- .../md5-cache/kde-plasma/powerdevil-6.3.0 | 17 + .../md5-cache/kde-plasma/print-manager-6.2.5 | 2 +- .../md5-cache/kde-plasma/print-manager-6.3.0 | 16 + .../kde-plasma/qqc2-breeze-style-6.2.5 | 2 +- .../kde-plasma/qqc2-breeze-style-6.3.0 | 16 + metadata/md5-cache/kde-plasma/sddm-kcm-6.2.5 | 2 +- metadata/md5-cache/kde-plasma/sddm-kcm-6.3.0 | 16 + .../md5-cache/kde-plasma/systemsettings-6.2.5 | 2 +- .../md5-cache/kde-plasma/systemsettings-6.3.0 | 16 + .../md5-cache/kde-plasma/wacomtablet-6.2.5 | 2 +- .../md5-cache/kde-plasma/wacomtablet-6.3.0 | 16 + .../kde-plasma/xdg-desktop-portal-kde-6.2.5 | 2 +- .../kde-plasma/xdg-desktop-portal-kde-6.3.0 | 17 + metadata/md5-cache/llvm-core/Manifest.gz | Bin 19137 -> 23922 bytes metadata/md5-cache/llvm-core/clang-15.0.7-r3 | 2 +- metadata/md5-cache/llvm-core/clang-16.0.6 | 2 +- metadata/md5-cache/llvm-core/clang-17.0.6 | 2 +- metadata/md5-cache/llvm-core/clang-18.1.8-r6 | 2 +- metadata/md5-cache/llvm-core/clang-19.1.4 | 2 +- metadata/md5-cache/llvm-core/clang-19.1.7 | 2 +- .../llvm-core/clang-20.0.0_pre20250125 | 2 +- metadata/md5-cache/llvm-core/clang-20.1.0_rc1 | 2 +- metadata/md5-cache/llvm-core/clang-20.1.0_rc2 | 17 + .../md5-cache/llvm-core/clang-21.0.0.9999 | 2 +- .../llvm-core/clang-21.0.0_pre20250201 | 2 +- .../llvm-core/clang-21.0.0_pre20250208 | 17 + .../llvm-core/clang-21.0.0_pre20250211 | 17 + .../llvm-core/clang-common-15.0.7-r10 | 2 +- .../llvm-core/clang-common-16.0.6-r6 | 2 +- .../llvm-core/clang-common-17.0.6-r10 | 2 +- .../llvm-core/clang-common-17.0.6-r9 | 2 +- .../llvm-core/clang-common-18.1.8-r3 | 2 +- .../md5-cache/llvm-core/clang-common-19.1.4 | 2 +- .../md5-cache/llvm-core/clang-common-19.1.7 | 2 +- .../llvm-core/clang-common-20.0.0_pre20250125 | 2 +- .../llvm-core/clang-common-20.1.0_rc1 | 2 +- .../llvm-core/clang-common-20.1.0_rc2 | 14 + .../llvm-core/clang-common-21.0.0.9999 | 2 +- .../llvm-core/clang-common-21.0.0_pre20250201 | 2 +- .../llvm-core/clang-common-21.0.0_pre20250208 | 13 + .../llvm-core/clang-common-21.0.0_pre20250211 | 13 + .../llvm-core/clang-runtime-20.1.0_rc2 | 12 + .../clang-runtime-21.0.0_pre20250208 | 12 + .../clang-runtime-21.0.0_pre20250211 | 12 + metadata/md5-cache/llvm-core/libclc-15.0.7 | 2 +- metadata/md5-cache/llvm-core/libclc-16.0.6 | 2 +- metadata/md5-cache/llvm-core/libclc-17.0.6 | 2 +- metadata/md5-cache/llvm-core/libclc-18.1.8 | 2 +- metadata/md5-cache/llvm-core/libclc-19.1.4 | 2 +- metadata/md5-cache/llvm-core/libclc-19.1.7 | 2 +- .../llvm-core/libclc-20.0.0_pre20250125 | 2 +- .../md5-cache/llvm-core/libclc-20.1.0_rc1 | 2 +- .../md5-cache/llvm-core/libclc-20.1.0_rc2 | 13 + .../md5-cache/llvm-core/libclc-21.0.0.9999 | 2 +- .../llvm-core/libclc-21.0.0_pre20250201 | 2 +- .../llvm-core/libclc-21.0.0_pre20250208 | 13 + .../llvm-core/libclc-21.0.0_pre20250211 | 13 + metadata/md5-cache/llvm-core/lld-15.0.7 | 2 +- metadata/md5-cache/llvm-core/lld-16.0.6 | 2 +- metadata/md5-cache/llvm-core/lld-17.0.6 | 2 +- metadata/md5-cache/llvm-core/lld-18.1.8 | 2 +- metadata/md5-cache/llvm-core/lld-19.1.4 | 2 +- metadata/md5-cache/llvm-core/lld-19.1.7 | 2 +- .../llvm-core/lld-20.0.0_pre20250125 | 2 +- metadata/md5-cache/llvm-core/lld-20.1.0_rc1 | 2 +- metadata/md5-cache/llvm-core/lld-20.1.0_rc2 | 16 + metadata/md5-cache/llvm-core/lld-21.0.0.9999 | 2 +- .../llvm-core/lld-21.0.0_pre20250201 | 2 +- .../llvm-core/lld-21.0.0_pre20250208 | 16 + .../llvm-core/lld-21.0.0_pre20250211 | 16 + metadata/md5-cache/llvm-core/lldb-15.0.7 | 2 +- metadata/md5-cache/llvm-core/lldb-16.0.6-r1 | 2 +- metadata/md5-cache/llvm-core/lldb-17.0.6 | 2 +- metadata/md5-cache/llvm-core/lldb-18.1.8 | 2 +- metadata/md5-cache/llvm-core/lldb-19.1.4 | 2 +- metadata/md5-cache/llvm-core/lldb-19.1.7 | 2 +- .../llvm-core/lldb-20.0.0_pre20250125 | 2 +- metadata/md5-cache/llvm-core/lldb-20.1.0_rc1 | 2 +- metadata/md5-cache/llvm-core/lldb-20.1.0_rc2 | 16 + metadata/md5-cache/llvm-core/lldb-21.0.0.9999 | 2 +- .../llvm-core/lldb-21.0.0_pre20250201 | 2 +- .../llvm-core/lldb-21.0.0_pre20250208 | 16 + .../llvm-core/lldb-21.0.0_pre20250211 | 16 + metadata/md5-cache/llvm-core/llvm-15.0.7-r7 | 2 +- metadata/md5-cache/llvm-core/llvm-16.0.6-r5 | 2 +- metadata/md5-cache/llvm-core/llvm-17.0.6-r3 | 2 +- metadata/md5-cache/llvm-core/llvm-18.1.8-r6 | 2 +- metadata/md5-cache/llvm-core/llvm-19.1.4 | 2 +- metadata/md5-cache/llvm-core/llvm-19.1.7 | 2 +- .../llvm-core/llvm-20.0.0_pre20250125 | 2 +- metadata/md5-cache/llvm-core/llvm-20.1.0_rc1 | 2 +- metadata/md5-cache/llvm-core/llvm-20.1.0_rc2 | 17 + metadata/md5-cache/llvm-core/llvm-21.0.0.9999 | 2 +- .../llvm-core/llvm-21.0.0_pre20250201 | 2 +- .../llvm-core/llvm-21.0.0_pre20250208 | 17 + .../llvm-core/llvm-21.0.0_pre20250211 | 17 + .../md5-cache/llvm-core/llvm-common-15.0.7 | 2 +- .../md5-cache/llvm-core/llvm-common-16.0.6 | 2 +- .../md5-cache/llvm-core/llvm-common-17.0.6 | 2 +- .../md5-cache/llvm-core/llvm-common-18.1.8 | 2 +- .../md5-cache/llvm-core/llvm-common-19.1.4 | 2 +- .../md5-cache/llvm-core/llvm-common-19.1.7 | 2 +- .../llvm-core/llvm-common-20.0.0_pre20250125 | 2 +- .../llvm-core/llvm-common-20.1.0_rc1 | 2 +- .../llvm-core/llvm-common-20.1.0_rc2 | 13 + .../llvm-core/llvm-common-21.0.0.9999 | 2 +- .../llvm-core/llvm-common-21.0.0_pre20250201 | 2 +- .../llvm-core/llvm-common-21.0.0_pre20250208 | 13 + .../llvm-core/llvm-common-21.0.0_pre20250211 | 13 + .../llvm-core/mlir-20.0.0_pre20250125 | 2 +- metadata/md5-cache/llvm-core/mlir-20.1.0_rc1 | 2 +- metadata/md5-cache/llvm-core/mlir-20.1.0_rc2 | 15 + metadata/md5-cache/llvm-core/mlir-21.0.0.9999 | 4 +- .../llvm-core/mlir-21.0.0_pre20250201 | 2 +- .../llvm-core/mlir-21.0.0_pre20250208 | 15 + .../llvm-core/mlir-21.0.0_pre20250211 | 15 + .../llvm-core/polly-20.0.0_pre20250125 | 2 +- metadata/md5-cache/llvm-core/polly-20.1.0_rc1 | 2 +- metadata/md5-cache/llvm-core/polly-20.1.0_rc2 | 15 + .../md5-cache/llvm-core/polly-21.0.0.9999 | 2 +- .../llvm-core/polly-21.0.0_pre20250201 | 2 +- .../llvm-core/polly-21.0.0_pre20250208 | 15 + .../llvm-core/polly-21.0.0_pre20250211 | 15 + metadata/md5-cache/llvm-runtimes/Manifest.gz | Bin 12119 -> 16013 bytes .../llvm-runtimes/compiler-rt-15.0.7-r1 | 2 +- .../llvm-runtimes/compiler-rt-15.0.7-r2 | 2 +- .../llvm-runtimes/compiler-rt-16.0.6-r5 | 2 +- .../llvm-runtimes/compiler-rt-16.0.6-r6 | 2 +- .../llvm-runtimes/compiler-rt-17.0.6-r1 | 2 +- .../llvm-runtimes/compiler-rt-17.0.6-r2 | 2 +- .../llvm-runtimes/compiler-rt-18.1.8-r1 | 2 +- .../llvm-runtimes/compiler-rt-18.1.8-r2 | 2 +- .../llvm-runtimes/compiler-rt-19.1.4 | 2 +- .../llvm-runtimes/compiler-rt-19.1.7 | 2 +- .../compiler-rt-20.0.0_pre20250125 | 2 +- .../llvm-runtimes/compiler-rt-20.1.0_rc1 | 2 +- .../llvm-runtimes/compiler-rt-20.1.0_rc2 | 15 + .../llvm-runtimes/compiler-rt-21.0.0.9999 | 2 +- .../compiler-rt-21.0.0_pre20250201 | 2 +- .../compiler-rt-21.0.0_pre20250208 | 15 + .../compiler-rt-21.0.0_pre20250211 | 15 + .../compiler-rt-sanitizers-15.0.7-r1 | 2 +- .../compiler-rt-sanitizers-16.0.6-r1 | 2 +- .../compiler-rt-sanitizers-17.0.6-r1 | 2 +- .../compiler-rt-sanitizers-18.1.8-r6 | 2 +- .../compiler-rt-sanitizers-19.1.4 | 2 +- .../compiler-rt-sanitizers-19.1.7 | 2 +- .../compiler-rt-sanitizers-20.0.0_pre20250125 | 2 +- .../compiler-rt-sanitizers-20.1.0_rc1 | 2 +- .../compiler-rt-sanitizers-20.1.0_rc2 | 15 + .../compiler-rt-sanitizers-21.0.0.9999 | 2 +- .../compiler-rt-sanitizers-21.0.0_pre20250201 | 2 +- .../compiler-rt-sanitizers-21.0.0_pre20250208 | 15 + .../compiler-rt-sanitizers-21.0.0_pre20250211 | 15 + .../md5-cache/llvm-runtimes/libcxx-15.0.7-r1 | 2 +- .../md5-cache/llvm-runtimes/libcxx-16.0.6 | 2 +- .../md5-cache/llvm-runtimes/libcxx-17.0.6 | 2 +- .../md5-cache/llvm-runtimes/libcxx-18.1.8 | 2 +- .../md5-cache/llvm-runtimes/libcxx-19.1.4 | 2 +- .../md5-cache/llvm-runtimes/libcxx-19.1.7 | 2 +- .../llvm-runtimes/libcxx-20.0.0_pre20250125 | 2 +- .../md5-cache/llvm-runtimes/libcxx-20.1.0_rc1 | 2 +- .../md5-cache/llvm-runtimes/libcxx-20.1.0_rc2 | 16 + .../llvm-runtimes/libcxx-21.0.0.9999 | 2 +- .../llvm-runtimes/libcxx-21.0.0_pre20250201 | 2 +- .../llvm-runtimes/libcxx-21.0.0_pre20250208 | 16 + .../llvm-runtimes/libcxx-21.0.0_pre20250211 | 16 + .../md5-cache/llvm-runtimes/libcxxabi-15.0.7 | 2 +- .../md5-cache/llvm-runtimes/libcxxabi-16.0.6 | 2 +- .../md5-cache/llvm-runtimes/libcxxabi-17.0.6 | 2 +- .../md5-cache/llvm-runtimes/libcxxabi-18.1.8 | 2 +- .../md5-cache/llvm-runtimes/libcxxabi-19.1.4 | 2 +- .../md5-cache/llvm-runtimes/libcxxabi-19.1.7 | 2 +- .../libcxxabi-20.0.0_pre20250125 | 2 +- .../llvm-runtimes/libcxxabi-20.1.0_rc1 | 2 +- .../llvm-runtimes/libcxxabi-20.1.0_rc2 | 16 + .../llvm-runtimes/libcxxabi-21.0.0.9999 | 2 +- .../libcxxabi-21.0.0_pre20250201 | 2 +- .../libcxxabi-21.0.0_pre20250208 | 16 + .../libcxxabi-21.0.0_pre20250211 | 16 + .../md5-cache/llvm-runtimes/libgcc-19.1.7 | 2 +- .../llvm-runtimes/libgcc-20.0.0_pre20250125 | 2 +- .../md5-cache/llvm-runtimes/libgcc-20.1.0_rc1 | 2 +- .../md5-cache/llvm-runtimes/libgcc-20.1.0_rc2 | 15 + .../llvm-runtimes/libgcc-21.0.0.9999 | 2 +- .../llvm-runtimes/libgcc-21.0.0_pre20250201 | 2 +- .../llvm-runtimes/libgcc-21.0.0_pre20250208 | 15 + .../llvm-runtimes/libgcc-21.0.0_pre20250211 | 15 + .../md5-cache/llvm-runtimes/libunwind-15.0.7 | 2 +- .../llvm-runtimes/libunwind-16.0.6-r1 | 2 +- .../md5-cache/llvm-runtimes/libunwind-17.0.6 | 2 +- .../md5-cache/llvm-runtimes/libunwind-18.1.8 | 2 +- .../md5-cache/llvm-runtimes/libunwind-19.1.4 | 2 +- .../md5-cache/llvm-runtimes/libunwind-19.1.7 | 2 +- .../libunwind-20.0.0_pre20250125 | 2 +- .../llvm-runtimes/libunwind-20.1.0_rc1 | 2 +- .../llvm-runtimes/libunwind-20.1.0_rc2 | 16 + .../llvm-runtimes/libunwind-21.0.0.9999 | 2 +- .../libunwind-21.0.0_pre20250201 | 2 +- .../libunwind-21.0.0_pre20250208 | 16 + .../libunwind-21.0.0_pre20250211 | 16 + .../md5-cache/llvm-runtimes/offload-19.1.7 | 2 +- .../llvm-runtimes/offload-20.0.0_pre20250125 | 2 +- .../llvm-runtimes/offload-20.1.0_rc1 | 2 +- .../llvm-runtimes/offload-20.1.0_rc2 | 15 + .../llvm-runtimes/offload-21.0.0.9999 | 8 +- .../llvm-runtimes/offload-21.0.0_pre20250201 | 2 +- .../llvm-runtimes/offload-21.0.0_pre20250208 | 15 + .../llvm-runtimes/offload-21.0.0_pre20250211 | 15 + .../md5-cache/llvm-runtimes/openmp-15.0.7-r6 | 2 +- .../md5-cache/llvm-runtimes/openmp-16.0.6 | 2 +- .../md5-cache/llvm-runtimes/openmp-17.0.6 | 2 +- .../md5-cache/llvm-runtimes/openmp-18.1.8 | 2 +- .../md5-cache/llvm-runtimes/openmp-19.1.4 | 2 +- .../md5-cache/llvm-runtimes/openmp-19.1.7 | 2 +- .../llvm-runtimes/openmp-20.0.0_pre20250125 | 2 +- .../md5-cache/llvm-runtimes/openmp-20.1.0_rc1 | 2 +- .../md5-cache/llvm-runtimes/openmp-20.1.0_rc2 | 16 + .../llvm-runtimes/openmp-21.0.0.9999 | 2 +- .../llvm-runtimes/openmp-21.0.0_pre20250201 | 2 +- .../llvm-runtimes/openmp-21.0.0_pre20250208 | 16 + .../llvm-runtimes/openmp-21.0.0_pre20250211 | 16 + metadata/md5-cache/lxqt-base/Manifest.gz | Bin 5808 -> 5968 bytes .../md5-cache/lxqt-base/lxqt-config-2.1.1 | 16 + metadata/md5-cache/mail-client/Manifest.gz | Bin 7797 -> 6832 bytes metadata/md5-cache/mail-client/aerc-0.18.2 | 2 +- metadata/md5-cache/mail-client/aerc-0.20.1 | 2 +- metadata/md5-cache/mail-client/aerc-9999 | 2 +- metadata/md5-cache/mail-client/alpine-2.26-r5 | 2 +- .../md5-cache/mail-client/roundcube-1.6.10 | 15 + .../md5-cache/mail-client/roundcube-1.6.9 | 15 - .../md5-cache/mail-client/thunderbird-128.5.0 | 17 - .../md5-cache/mail-client/thunderbird-128.5.1 | 17 - .../md5-cache/mail-client/thunderbird-128.5.2 | 17 - .../md5-cache/mail-client/thunderbird-128.6.0 | 17 - .../mail-client/thunderbird-bin-128.5.2 | 16 - .../mail-client/thunderbird-bin-128.6.0 | 16 - metadata/md5-cache/mail-filter/Manifest.gz | Bin 13587 -> 13759 bytes .../mail-filter/opensmtpd-filter-rspamd-0.1.8 | 2 +- .../mail-filter/postforward-1.1.1-r1 | 2 +- .../md5-cache/mail-filter/rblcheck-1.5-r3 | 12 + metadata/md5-cache/mail-mta/Manifest.gz | Bin 4534 -> 4539 bytes .../mail-mta/postfix-3.10_pre20250206 | 16 - .../mail-mta/postfix-3.10_pre20250207 | 16 + .../mail-mta/proton-mail-bridge-3.10.0-r1 | 2 +- .../mail-mta/proton-mail-bridge-3.15.1 | 2 +- .../mail-mta/proton-mail-bridge-3.15.1-r1 | 2 +- metadata/md5-cache/media-fonts/Manifest.gz | Bin 40954 -> 40800 bytes .../media-fonts/source-code-pro-2.038 | 15 - .../media-fonts/source-code-pro-2.042 | 15 - .../media-fonts/source-code-pro-2.042-r1 | 15 + .../media-fonts/source-han-sans-2.004 | 15 - .../media-fonts/source-han-sans-2.004-r1 | 15 + .../md5-cache/media-fonts/source-sans-3.052 | 15 - .../media-fonts/source-sans-3.052-r1 | 15 + .../md5-cache/media-fonts/source-serif-4.005 | 15 - .../media-fonts/source-serif-4.005-r1 | 15 + .../media-fonts/terminus-font-4.49.1-r1 | 14 - .../media-fonts/terminus-font-4.49.1-r2 | 14 + metadata/md5-cache/media-gfx/Manifest.gz | Bin 61472 -> 60835 bytes metadata/md5-cache/media-gfx/blender-4.2.4 | 4 +- metadata/md5-cache/media-gfx/digikam-8.5.0-r1 | 2 +- metadata/md5-cache/media-gfx/fotema-1.19.2 | 15 + metadata/md5-cache/media-gfx/gimp-2.10.38-r1 | 6 +- metadata/md5-cache/media-gfx/kgeotag-1.7.0 | 2 +- .../md5-cache/media-gfx/kgraphviewer-24.08.3 | 2 +- .../md5-cache/media-gfx/kgraphviewer-24.12.1 | 16 - .../md5-cache/media-gfx/kgraphviewer-24.12.2 | 2 +- .../media-gfx/kio-blender-thumbnailer-24.08.3 | 2 +- .../media-gfx/kio-blender-thumbnailer-24.12.1 | 16 - .../media-gfx/kio-blender-thumbnailer-24.12.2 | 2 +- .../media-gfx/kio-mobi-thumbnailer-24.08.3 | 2 +- .../media-gfx/kio-mobi-thumbnailer-24.12.1 | 16 - .../media-gfx/kio-mobi-thumbnailer-24.12.2 | 2 +- .../media-gfx/kio-ps-thumbnailer-24.08.3 | 2 +- .../media-gfx/kio-ps-thumbnailer-24.12.1 | 16 - .../media-gfx/kio-ps-thumbnailer-24.12.2 | 2 +- .../media-gfx/kio-raw-thumbnailer-24.08.3 | 2 +- .../media-gfx/kio-raw-thumbnailer-24.12.1 | 16 - .../media-gfx/kio-raw-thumbnailer-24.12.2 | 2 +- .../md5-cache/media-gfx/kphotoalbum-6.0.1 | 2 +- metadata/md5-cache/media-gfx/krita-5.2.6 | 2 +- metadata/md5-cache/media-gfx/krita-5.2.9 | 2 +- metadata/md5-cache/media-gfx/kuickshow-0.10.2 | 2 +- .../media-gfx/kxstitch-3.0.0_pre20250110 | 2 +- .../md5-cache/media-gfx/libimagequant-4.3.4 | 13 + metadata/md5-cache/media-gfx/librecad-2.2.1 | 2 +- metadata/md5-cache/media-gfx/netgen-6.2.2406 | 2 +- .../md5-cache/media-gfx/okularpart-23.08.5-r1 | 2 +- .../media-gfx/sane-frontends-1.0.14-r6 | 13 - .../media-gfx/sane-frontends-1.0.14-r7 | 16 + metadata/md5-cache/media-gfx/scrot-1.11.1 | 4 +- metadata/md5-cache/media-gfx/skanpage-24.08.3 | 2 +- metadata/md5-cache/media-gfx/skanpage-24.12.1 | 16 - metadata/md5-cache/media-gfx/skanpage-24.12.2 | 2 +- .../md5-cache/media-gfx/symboleditor-2.1.0 | 16 - .../media-gfx/symboleditor-3.0.0_pre20250127 | 2 +- .../md5-cache/media-gfx/xloadimage-4.1-r18 | 15 + metadata/md5-cache/media-libs/Manifest.gz | Bin 117906 -> 119063 bytes .../md5-cache/media-libs/alsa-lib-1.2.13-r2 | 4 +- .../md5-cache/media-libs/alsa-ucm-conf-1.2.13 | 4 +- .../amdgpu-pro-vulkan-24.10.0.1787253 | 15 - .../amdgpu-pro-vulkan-24.30.2111292 | 15 + .../md5-cache/media-libs/amf-headers-1.4.33 | 2 +- .../md5-cache/media-libs/amf-headers-1.4.34 | 4 +- .../md5-cache/media-libs/amf-headers-1.4.35 | 9 + .../md5-cache/media-libs/amf-headers-1.4.36 | 9 + metadata/md5-cache/media-libs/blib-1.1.7-r4 | 15 + metadata/md5-cache/media-libs/flac-1.4.3 | 2 +- metadata/md5-cache/media-libs/flac-1.5.0 | 16 + .../md5-cache/media-libs/ftgl-2.1.3_rc5-r3 | 4 +- .../media-libs/gst-plugins-bad-1.24.11 | 4 +- .../media-libs/gst-plugins-base-1.24.11 | 4 +- .../media-libs/gst-plugins-good-1.24.11 | 4 +- .../media-libs/gst-plugins-ugly-1.24.11 | 4 +- .../media-libs/gst-rtsp-server-1.24.11 | 4 +- .../md5-cache/media-libs/gstreamer-1.24.11 | 4 +- .../gstreamer-editing-services-1.24.11 | 4 +- .../media-libs/kquickimageeditor-0.4.0 | 2 +- .../media-libs/kquickimageeditor-0.5.0 | 2 +- .../md5-cache/media-libs/ksanecore-24.08.3 | 2 +- .../md5-cache/media-libs/ksanecore-24.12.1 | 16 - .../md5-cache/media-libs/ksanecore-24.12.2 | 2 +- .../media-libs/ksanecore-common-24.12.1 | 13 - metadata/md5-cache/media-libs/lcms-2.17 | 16 + metadata/md5-cache/media-libs/lib3mf-2.3.2 | 4 +- metadata/md5-cache/media-libs/libexif-0.6.25 | 15 + .../media-libs/libfishsound-1.0.0-r1 | 14 - .../media-libs/libfishsound-1.0.0-r2 | 14 - .../media-libs/libfishsound-1.0.0-r3 | 14 + .../md5-cache/media-libs/libggiwmh-0.3.2-r2 | 15 + .../md5-cache/media-libs/libifp-1.0.0.2-r2 | 15 + .../md5-cache/media-libs/libopenraw-0.3.7-r2 | 16 + .../md5-cache/media-libs/libpng-1.6.40-r1 | 15 - metadata/md5-cache/media-libs/libpng-1.6.42 | 16 - metadata/md5-cache/media-libs/libpng-1.6.43 | 16 - metadata/md5-cache/media-libs/libpng-1.6.46 | 16 + .../media-libs/libqaccessibilityclient-0.6.0 | 2 +- .../libva-intel-media-driver-25.1.1 | 16 + metadata/md5-cache/media-libs/mesa-25.0.0_rc3 | 17 + metadata/md5-cache/media-libs/mpvqt-1.0.1 | 2 +- metadata/md5-cache/media-libs/openal-1.24.2 | 4 +- .../md5-cache/media-libs/opencolorio-2.4.1 | 4 +- .../md5-cache/media-libs/openexr-3.3.2-r1 | 4 +- metadata/md5-cache/media-libs/openh264-2.4.1 | 14 - metadata/md5-cache/media-libs/openh264-2.6.0 | 14 + metadata/md5-cache/media-libs/partio-1.17.3 | 4 +- .../md5-cache/media-libs/pulseaudio-qt-1.6.1 | 2 +- .../md5-cache/media-libs/pulseaudio-qt-1.7.0 | 2 +- .../md5-cache/media-libs/tiff-compat-4.4.0-r1 | 6 +- .../md5-cache/media-libs/tiff-compat-4.4.0-r2 | 17 + metadata/md5-cache/media-libs/vigra-1.12.1 | 4 +- metadata/md5-cache/media-plugins/Manifest.gz | Bin 79405 -> 79048 bytes .../media-plugins/gst-plugins-a52dec-1.24.11 | 4 +- .../media-plugins/gst-plugins-amr-1.24.11 | 4 +- .../media-plugins/gst-plugins-aom-1.24.11 | 4 +- .../gst-plugins-assrender-1.24.11 | 4 +- .../media-plugins/gst-plugins-bluez-1.24.11 | 4 +- .../media-plugins/gst-plugins-bs2b-1.24.11 | 4 +- .../media-plugins/gst-plugins-cdio-1.24.11 | 4 +- .../gst-plugins-cdparanoia-1.24.11 | 4 +- .../gst-plugins-chromaprint-1.24.11 | 4 +- .../media-plugins/gst-plugins-dash-1.24.11 | 4 +- .../media-plugins/gst-plugins-dtls-1.24.11 | 4 +- .../media-plugins/gst-plugins-dts-1.24.11 | 4 +- .../media-plugins/gst-plugins-dv-1.24.11 | 4 +- .../media-plugins/gst-plugins-dvb-1.24.11 | 4 +- .../media-plugins/gst-plugins-dvdread-1.24.11 | 4 +- .../media-plugins/gst-plugins-faac-1.24.11 | 4 +- .../media-plugins/gst-plugins-faad-1.24.11 | 4 +- .../media-plugins/gst-plugins-flac-1.24.11 | 4 +- .../gst-plugins-gdkpixbuf-1.24.11 | 4 +- .../media-plugins/gst-plugins-gtk-1.24.11 | 4 +- .../media-plugins/gst-plugins-hls-1.24.11 | 4 +- .../media-plugins/gst-plugins-jack-1.24.11 | 4 +- .../media-plugins/gst-plugins-jpeg-1.24.11 | 4 +- .../media-plugins/gst-plugins-kate-1.22.11 | 16 - .../media-plugins/gst-plugins-kate-1.22.12 | 16 - .../media-plugins/gst-plugins-kate-1.24.10 | 16 - .../media-plugins/gst-plugins-ladspa-1.24.11 | 4 +- .../media-plugins/gst-plugins-lame-1.24.11 | 4 +- .../media-plugins/gst-plugins-ldac-1.24.11 | 4 +- .../media-plugins/gst-plugins-libav-1.24.11 | 4 +- .../gst-plugins-libde265-1.24.11 | 4 +- .../media-plugins/gst-plugins-libpng-1.24.11 | 4 +- .../gst-plugins-libvisual-1.24.11 | 4 +- .../media-plugins/gst-plugins-lv2-1.24.11 | 4 +- .../media-plugins/gst-plugins-meta-1.24.11 | 4 +- .../media-plugins/gst-plugins-modplug-1.24.11 | 4 +- .../gst-plugins-mpeg2dec-1.24.11 | 4 +- .../gst-plugins-mpeg2enc-1.24.11 | 4 +- .../media-plugins/gst-plugins-mpg123-1.24.11 | 4 +- .../media-plugins/gst-plugins-mplex-1.24.11 | 4 +- .../media-plugins/gst-plugins-neon-1.24.11 | 4 +- .../gst-plugins-openaptx-1.24.11 | 4 +- .../gst-plugins-openh264-1.24.11 | 4 +- .../media-plugins/gst-plugins-opus-1.24.11 | 4 +- .../media-plugins/gst-plugins-oss-1.24.11 | 4 +- .../media-plugins/gst-plugins-pulse-1.24.11 | 4 +- .../media-plugins/gst-plugins-raw1394-1.24.11 | 4 +- .../gst-plugins-resindvd-1.24.11 | 4 +- .../media-plugins/gst-plugins-rtmp-1.24.11 | 4 +- .../media-plugins/gst-plugins-shout2-1.24.11 | 4 +- .../media-plugins/gst-plugins-sidplay-1.24.11 | 4 +- .../gst-plugins-smoothstreaming-1.24.11 | 4 +- .../gst-plugins-soundtouch-1.24.11 | 4 +- .../media-plugins/gst-plugins-soup-1.24.11 | 4 +- .../media-plugins/gst-plugins-speex-1.24.11 | 4 +- .../media-plugins/gst-plugins-srtp-1.24.11 | 4 +- .../media-plugins/gst-plugins-taglib-1.24.11 | 4 +- .../media-plugins/gst-plugins-twolame-1.24.11 | 4 +- .../media-plugins/gst-plugins-uvch264-1.24.11 | 4 +- .../media-plugins/gst-plugins-v4l2-1.24.11 | 4 +- .../media-plugins/gst-plugins-vaapi-1.24.11 | 4 +- .../gst-plugins-voaacenc-1.24.11 | 4 +- .../gst-plugins-voamrwbenc-1.24.11 | 4 +- .../media-plugins/gst-plugins-vpx-1.24.11 | 4 +- .../media-plugins/gst-plugins-wavpack-1.24.11 | 4 +- .../media-plugins/gst-plugins-x264-1.24.11 | 4 +- .../media-plugins/gst-plugins-x265-1.24.11 | 4 +- .../gst-plugins-ximagesrc-1.24.11 | 4 +- .../mpg123-output-plugins-1.32.10 | 15 + metadata/md5-cache/media-radio/Manifest.gz | Bin 8057 -> 8059 bytes metadata/md5-cache/media-radio/grig-0.9.0 | 4 +- metadata/md5-cache/media-sound/Manifest.gz | Bin 76195 -> 76034 bytes .../md5-cache/media-sound/abcmidi-2025.02.02 | 13 - .../md5-cache/media-sound/abcmidi-2025.02.07 | 13 + .../media-sound/alsa-utils-1.2.13-r2 | 4 +- metadata/md5-cache/media-sound/audex-24.08.3 | 2 +- metadata/md5-cache/media-sound/audex-24.12.1 | 17 - metadata/md5-cache/media-sound/audex-24.12.2 | 2 +- metadata/md5-cache/media-sound/aumix-2.9.1 | 15 - metadata/md5-cache/media-sound/aumix-2.9.1-r1 | 15 + metadata/md5-cache/media-sound/cantata-3.3.0 | 17 + metadata/md5-cache/media-sound/chuck-1.5.4.2 | 15 - metadata/md5-cache/media-sound/chuck-1.5.4.3 | 15 - .../media-sound/clementine-1.4.0_rc2-r5 | 18 - .../media-sound/clementine-1.4.1_p28 | 4 +- metadata/md5-cache/media-sound/elisa-24.08.3 | 2 +- metadata/md5-cache/media-sound/elisa-24.12.1 | 17 - metadata/md5-cache/media-sound/elisa-24.12.2 | 2 +- metadata/md5-cache/media-sound/fapg-0.45 | 4 +- .../media-sound/gstreamripper-0.2-r1 | 14 - .../media-sound/gstreamripper-0.2-r2 | 14 + .../media-sound/jack-rack-1.4.8_rc1-r2 | 15 + metadata/md5-cache/media-sound/kasts-24.08.3 | 2 +- metadata/md5-cache/media-sound/kasts-24.12.1 | 16 - metadata/md5-cache/media-sound/kasts-24.12.2 | 2 +- metadata/md5-cache/media-sound/kid3-3.9.6-r1 | 18 + .../md5-cache/media-sound/krecorder-24.08.3 | 2 +- .../md5-cache/media-sound/krecorder-24.12.1 | 16 - .../md5-cache/media-sound/krecorder-24.12.2 | 2 +- metadata/md5-cache/media-sound/mac-10.87 | 4 +- metadata/md5-cache/media-sound/mac-10.93 | 12 + metadata/md5-cache/media-sound/mixxx-2.5.0 | 18 + metadata/md5-cache/media-sound/mixxx-9999 | 14 +- .../md5-cache/media-sound/mpg123-base-1.32.10 | 16 + metadata/md5-cache/media-sound/picard-2.13.1 | 18 - metadata/md5-cache/media-sound/picard-2.13.2 | 18 + metadata/md5-cache/media-sound/qjackctl-1.0.3 | 16 - .../md5-cache/media-sound/qjackctl-1.0.3-r1 | 4 +- metadata/md5-cache/media-sound/qpwgraph-0.7.8 | 16 - metadata/md5-cache/media-sound/qpwgraph-0.8.1 | 16 + metadata/md5-cache/media-sound/qtractor-1.5.3 | 17 + .../media-sound/schismtracker-20250202 | 15 - .../media-sound/schismtracker-20250208 | 15 + metadata/md5-cache/media-sound/scream-4.0 | 2 +- .../md5-cache/media-sound/strawberry-1.2.6 | 4 +- .../md5-cache/media-sound/upmpdcli-1.8.18 | 15 - metadata/md5-cache/media-sound/upmpdcli-1.9.0 | 4 +- metadata/md5-cache/media-sound/upmpdcli-1.9.1 | 15 + .../media-sound/zynaddsubfx-3.0.6-r6 | 4 +- metadata/md5-cache/media-tv/Manifest.gz | Bin 4331 -> 4329 bytes .../media-tv/plex-media-server-1.41.3.9314 | 4 +- metadata/md5-cache/media-video/Manifest.gz | Bin 39744 -> 40036 bytes metadata/md5-cache/media-video/aegisub-3.4.2 | 2 +- metadata/md5-cache/media-video/aegisub-9999 | 2 +- .../media-video/amdgpu-pro-amf-1.4.34.1787253 | 15 - .../media-video/amdgpu-pro-amf-1.4.36.2111292 | 15 + .../md5-cache/media-video/ffmpeg-4.4.5-r1 | 4 +- metadata/md5-cache/media-video/ffmpeg-7.1 | 17 + metadata/md5-cache/media-video/ffmpeg-9999 | 14 +- .../md5-cache/media-video/ffmpeg-chromium-135 | 17 + .../media-video/kaffeine-2.1.0_pre20241125 | 2 +- metadata/md5-cache/media-video/makemkv-1.17.9 | 17 + .../md5-cache/media-video/mkvalidator-0.6.0 | 12 + .../media-video/mplayer-1.5_p20241125 | 2 +- .../md5-cache/media-video/obs-studio-31.0.1 | 17 + .../md5-cache/media-video/obs-studio-9999 | 4 +- .../media-video/subtitlecomposer-0.8.1 | 2 +- .../md5-cache/media-video/vidify-2.2.6-r3 | 17 - .../media-video/vidify-audiosync-0.3.0-r2 | 17 - metadata/md5-cache/media-video/vlc-3.0.21 | 18 - metadata/md5-cache/media-video/vlc-3.0.21-r1 | 18 - .../media-video/vlc-3.0.21_p20250212 | 18 + metadata/md5-cache/media-video/vlc-3.0.9999 | 2 +- metadata/md5-cache/media-video/vlc-9999 | 2 +- .../md5-cache/media-video/wireplumber-0.5.8 | 17 + .../md5-cache/media-video/yle-dl-20240927 | 17 - metadata/md5-cache/net-analyzer/Manifest.gz | Bin 65167 -> 65634 bytes .../md5-cache/net-analyzer/chronograf-1.8.5 | 2 +- .../md5-cache/net-analyzer/firewalk-5.0-r3 | 14 + .../md5-cache/net-analyzer/gvm-libs-22.15.0 | 16 - .../md5-cache/net-analyzer/gvm-libs-22.15.1 | 16 + .../md5-cache/net-analyzer/iplog-2.2.3-r4 | 14 + .../md5-cache/net-analyzer/ippl-1.4.14-r7 | 13 + metadata/md5-cache/net-analyzer/isic-0.07-r3 | 13 + .../md5-cache/net-analyzer/kapacitor-1.5.5 | 2 +- metadata/md5-cache/net-analyzer/nast-0.2.0-r3 | 15 - metadata/md5-cache/net-analyzer/nast-0.2.0-r4 | 15 + .../net-analyzer/netdata-go-plugin-0.58.1-r1 | 2 +- .../net-analyzer/netdata-go-plugin-1.47.5 | 2 +- .../net-analyzer/opsgenie-lamp-3.1.4 | 2 +- .../md5-cache/net-analyzer/pinger-0.33-r1 | 16 - .../md5-cache/net-analyzer/pinger-0.33-r2 | 16 + .../md5-cache/net-analyzer/telegraf-1.18.3 | 2 +- .../md5-cache/net-analyzer/telegraf-1.26.3-r1 | 2 +- .../md5-cache/net-analyzer/termshark-2.4.0 | 2 +- metadata/md5-cache/net-analyzer/vnstat-2.13 | 16 + .../net-analyzer/yersinia-0.8.2_p20221119 | 2 +- metadata/md5-cache/net-analyzer/zabbix-5.0.45 | 2 +- metadata/md5-cache/net-analyzer/zabbix-5.0.46 | 2 +- metadata/md5-cache/net-analyzer/zabbix-6.0.37 | 2 +- metadata/md5-cache/net-analyzer/zabbix-6.0.38 | 2 +- metadata/md5-cache/net-analyzer/zabbix-6.4.20 | 2 +- metadata/md5-cache/net-analyzer/zabbix-6.4.21 | 2 +- metadata/md5-cache/net-analyzer/zabbix-7.0.7 | 17 - metadata/md5-cache/net-analyzer/zabbix-7.0.8 | 2 +- metadata/md5-cache/net-analyzer/zabbix-7.0.9 | 2 +- metadata/md5-cache/net-analyzer/zabbix-7.2.1 | 17 - metadata/md5-cache/net-analyzer/zabbix-7.2.2 | 2 +- metadata/md5-cache/net-analyzer/zabbix-7.2.3 | 2 +- metadata/md5-cache/net-dialup/Manifest.gz | Bin 6447 -> 6612 bytes metadata/md5-cache/net-dialup/mwavem-2.0-r3 | 12 + metadata/md5-cache/net-dns/Manifest.gz | Bin 14204 -> 14033 bytes metadata/md5-cache/net-dns/coredns-1.11.2-r1 | 2 +- metadata/md5-cache/net-dns/coredns-1.11.3 | 2 +- metadata/md5-cache/net-dns/coredns-1.11.4 | 2 +- metadata/md5-cache/net-dns/coredns-1.12.0 | 2 +- metadata/md5-cache/net-dns/coredns-9999 | 2 +- .../md5-cache/net-dns/dnscrypt-proxy-2.1.5 | 2 +- .../md5-cache/net-dns/dnscrypt-proxy-2.1.7 | 2 +- .../md5-cache/net-dns/dnscrypt-proxy-9999 | 2 +- metadata/md5-cache/net-dns/doggo-1.0.5 | 2 +- metadata/md5-cache/net-dns/idnkit-2.3-r1 | 13 - metadata/md5-cache/net-dns/idnkit-2.3-r2 | 13 + metadata/md5-cache/net-dns/pdns-4.9.2 | 17 - metadata/md5-cache/net-dns/pdns-4.9.4 | 17 + .../md5-cache/net-dns/pdns-recursor-5.0.9-r1 | 17 - metadata/md5-cache/net-fs/Manifest.gz | Bin 6178 -> 6177 bytes .../md5-cache/net-fs/mc-2021.03.23.05.46.11 | 2 +- metadata/md5-cache/net-im/Manifest.gz | Bin 15370 -> 14507 bytes metadata/md5-cache/net-im/dianara-1.4.2 | 13 - metadata/md5-cache/net-im/discord-0.0.84 | 15 - metadata/md5-cache/net-im/discord-0.0.85 | 15 + metadata/md5-cache/net-im/fractal-10 | 15 - metadata/md5-cache/net-im/fractal-10-r1 | 15 + metadata/md5-cache/net-im/fractal-10.1 | 15 + .../net-im/mattermost-desktop-bin-5.11.0 | 13 + .../net-im/mattermost-desktop-bin-5.11.0_rc1 | 12 - .../net-im/mattermost-desktop-bin-5.9.2 | 13 - metadata/md5-cache/net-im/neochat-24.08.3 | 2 +- metadata/md5-cache/net-im/neochat-24.12.1 | 17 - metadata/md5-cache/net-im/neochat-24.12.2 | 2 +- metadata/md5-cache/net-im/psi-1.5-r2 | 17 - metadata/md5-cache/net-im/psi-9999 | 16 - metadata/md5-cache/net-im/psimedia-9999 | 14 - metadata/md5-cache/net-im/synapse-1.124.0 | 17 + .../net-im/telegram-desktop-bin-5.10.3 | 13 - .../net-im/telegram-desktop-bin-5.10.7 | 13 + metadata/md5-cache/net-im/tokodon-24.08.3 | 2 +- metadata/md5-cache/net-im/tokodon-24.12.1 | 17 - metadata/md5-cache/net-im/tokodon-24.12.2 | 2 +- metadata/md5-cache/net-irc/Manifest.gz | Bin 12276 -> 11787 bytes metadata/md5-cache/net-irc/ergo-2.13.0 | 15 - metadata/md5-cache/net-irc/ergo-2.13.1 | 15 - metadata/md5-cache/net-irc/ergo-2.14.0 | 2 +- metadata/md5-cache/net-irc/ergo-2.15.0 | 15 + metadata/md5-cache/net-irc/inspircd-4.2.0 | 15 - .../md5-cache/net-irc/iroffer-dinoex-3.32-r2 | 15 - .../md5-cache/net-irc/iroffer-dinoex-3.32-r3 | 15 + .../md5-cache/net-irc/iroffer-dinoex-3.33 | 15 + metadata/md5-cache/net-irc/irssi-1.4.4-r1 | 15 - .../md5-cache/net-irc/konversation-24.08.3 | 2 +- .../md5-cache/net-irc/konversation-24.12.1 | 16 - .../md5-cache/net-irc/konversation-24.12.2 | 2 +- metadata/md5-cache/net-irc/senpai-0.2.0 | 2 +- metadata/md5-cache/net-irc/senpai-0.3.0 | 2 +- metadata/md5-cache/net-irc/soju-0.8.2-r1 | 2 +- metadata/md5-cache/net-libs/Manifest.gz | Bin 55468 -> 55445 bytes metadata/md5-cache/net-libs/davix-0.8.10 | 17 + metadata/md5-cache/net-libs/davix-0.8.9 | 17 - metadata/md5-cache/net-libs/davix-9999 | 16 + metadata/md5-cache/net-libs/gnutls-3.8.9 | 17 + .../kdsoap-ws-discovery-client-0.4.0-r1 | 2 +- .../md5-cache/net-libs/libktorrent-24.08.3-r1 | 2 +- .../md5-cache/net-libs/libktorrent-24.12.1 | 17 - .../md5-cache/net-libs/libktorrent-24.12.2 | 2 +- metadata/md5-cache/net-libs/libnpupnp-6.1.3 | 14 - metadata/md5-cache/net-libs/libnpupnp-6.2.0 | 4 +- metadata/md5-cache/net-libs/libquotient-0.9.2 | 4 +- metadata/md5-cache/net-libs/nodejs-22.13.1 | 4 +- metadata/md5-cache/net-libs/xdp-tools-1.4.3 | 4 +- metadata/md5-cache/net-mail/Manifest.gz | Bin 21574 -> 21574 bytes metadata/md5-cache/net-mail/automx2-2025.1 | 4 +- metadata/md5-cache/net-misc/Manifest.gz | Bin 94963 -> 93837 bytes metadata/md5-cache/net-misc/anydesk-6.3.2 | 14 - metadata/md5-cache/net-misc/anydesk-6.4.0 | 14 + metadata/md5-cache/net-misc/asterisk-18.25.0 | 17 - metadata/md5-cache/net-misc/asterisk-18.26.0 | 17 - metadata/md5-cache/net-misc/asterisk-18.26.1 | 17 + .../md5-cache/net-misc/asterisk-20.10.0-r1 | 17 - metadata/md5-cache/net-misc/asterisk-20.11.0 | 17 - metadata/md5-cache/net-misc/asterisk-20.11.1 | 17 + metadata/md5-cache/net-misc/asterisk-21.6.0 | 17 - metadata/md5-cache/net-misc/asterisk-21.6.1 | 17 + .../md5-cache/net-misc/asterisk-22.0.0-r1 | 17 - metadata/md5-cache/net-misc/asterisk-22.1.0 | 17 - metadata/md5-cache/net-misc/asterisk-22.1.1 | 17 + metadata/md5-cache/net-misc/croc-10.0.12 | 2 +- metadata/md5-cache/net-misc/croc-10.0.13 | 2 +- metadata/md5-cache/net-misc/croc-10.1.0 | 2 +- metadata/md5-cache/net-misc/croc-10.1.1 | 2 +- metadata/md5-cache/net-misc/curl-8.12.0-r1 | 17 + metadata/md5-cache/net-misc/dhcpcd-10.0.10 | 15 - metadata/md5-cache/net-misc/dhcpcd-10.0.6-r2 | 15 - metadata/md5-cache/net-misc/dhcpcd-10.0.6-r3 | 15 - metadata/md5-cache/net-misc/dhcpcd-10.0.8 | 15 - metadata/md5-cache/net-misc/dhcpcd-10.1.0-r1 | 15 + metadata/md5-cache/net-misc/dhcpcd-10.2.0 | 15 + .../net-misc/fatrat-1.2.0_beta2_p20161204 | 15 - metadata/md5-cache/net-misc/geoipupdate-4.9.0 | 2 +- metadata/md5-cache/net-misc/geoipupdate-6.0.0 | 2 +- metadata/md5-cache/net-misc/geoipupdate-6.1.0 | 2 +- metadata/md5-cache/net-misc/icingadb-1.1.0 | 2 +- metadata/md5-cache/net-misc/icingadb-1.1.1 | 2 +- metadata/md5-cache/net-misc/icingadb-1.2.0 | 2 +- .../md5-cache/net-misc/kio-zeroconf-24.08.3 | 2 +- .../md5-cache/net-misc/kio-zeroconf-24.12.1 | 16 - .../md5-cache/net-misc/kio-zeroconf-24.12.2 | 2 +- .../net-misc/kio-zeroconf-common-24.12.1 | 13 - .../md5-cache/net-misc/lyricwikia-0.1.11-r1 | 17 - .../md5-cache/net-misc/lyricwikia-0.1.11-r2 | 17 - metadata/md5-cache/net-misc/memcached-1.6.27 | 2 +- metadata/md5-cache/net-misc/memcached-1.6.31 | 2 +- metadata/md5-cache/net-misc/nx-3.5.99.26 | 2 +- metadata/md5-cache/net-misc/nx-3.5.99.27 | 2 +- .../net-misc/openrdap-0.9.0_p20191017-r1 | 2 +- metadata/md5-cache/net-misc/rclone-1.68.2 | 2 +- metadata/md5-cache/net-misc/rclone-1.69.0 | 2 +- metadata/md5-cache/net-misc/scponly-4.8-r8 | 15 - metadata/md5-cache/net-misc/scponly-4.8-r9 | 16 + metadata/md5-cache/net-misc/smb4k-3.2.92 | 2 +- metadata/md5-cache/net-misc/smb4k-4.0.0 | 16 + metadata/md5-cache/net-misc/smbc-1.2.2-r3 | 15 - metadata/md5-cache/net-misc/smbc-1.2.2-r4 | 15 + metadata/md5-cache/net-misc/tigervnc-1.14.90 | 17 - metadata/md5-cache/net-misc/tigervnc-1.15.0 | 17 + .../net-misc/tigervnc-xorg-module-1.14.90 | 9 - .../net-misc/tigervnc-xorg-module-1.15.0 | 9 + metadata/md5-cache/net-misc/turbovnc-3.1.3 | 16 - metadata/md5-cache/net-misc/turbovnc-3.1.4 | 16 + .../md5-cache/net-misc/turbovnc-3.2_beta1 | 15 + metadata/md5-cache/net-misc/websocketd-0.4.1 | 2 +- metadata/md5-cache/net-misc/zssh-1.5c-r2 | 14 - metadata/md5-cache/net-misc/zssh-1.5c-r3 | 15 + metadata/md5-cache/net-news/Manifest.gz | Bin 3374 -> 3218 bytes metadata/md5-cache/net-news/alligator-24.08.3 | 2 +- metadata/md5-cache/net-news/alligator-24.12.1 | 17 - metadata/md5-cache/net-news/alligator-24.12.2 | 2 +- metadata/md5-cache/net-news/sfeed-2.1 | 4 +- metadata/md5-cache/net-nntp/Manifest.gz | Bin 2662 -> 2666 bytes .../md5-cache/net-nntp/leafnode-1.11.11-r1 | 12 - .../md5-cache/net-nntp/leafnode-1.11.11-r2 | 15 + metadata/md5-cache/net-nntp/leafnode-1.12.0 | 11 - .../md5-cache/net-nntp/leafnode-1.12.0-r1 | 14 + metadata/md5-cache/net-nntp/slrn-1.0.3-r2 | 2 +- metadata/md5-cache/net-p2p/Manifest.gz | Bin 12706 -> 12724 bytes metadata/md5-cache/net-p2p/bitcoin-core-28.1 | 4 +- metadata/md5-cache/net-p2p/energi3-3.0.8 | 2 +- metadata/md5-cache/net-p2p/energi3-3.1.0 | 2 +- metadata/md5-cache/net-p2p/energi3-9999 | 2 +- .../md5-cache/net-p2p/go-ethereum-1.10.18 | 2 +- .../md5-cache/net-p2p/go-ethereum-1.13.14 | 2 +- .../md5-cache/net-p2p/go-ethereum-1.14.11 | 2 +- .../md5-cache/net-p2p/go-ethereum-1.14.12 | 2 +- .../md5-cache/net-p2p/go-ethereum-1.14.13 | 14 + metadata/md5-cache/net-p2p/go-ethereum-1.14.7 | 2 +- metadata/md5-cache/net-p2p/go-ethereum-1.14.8 | 2 +- metadata/md5-cache/net-p2p/go-ethereum-1.15.1 | 14 + .../md5-cache/net-p2p/gtk-gnutella-1.2.2-r1 | 2 +- metadata/md5-cache/net-p2p/gtk-gnutella-1.2.3 | 2 +- metadata/md5-cache/net-p2p/ktorrent-24.08.3 | 2 +- metadata/md5-cache/net-p2p/ktorrent-24.12.1 | 17 - metadata/md5-cache/net-p2p/ktorrent-24.12.2 | 2 +- metadata/md5-cache/net-p2p/kubo-0.28.0 | 2 +- metadata/md5-cache/net-p2p/kubo-0.29.0-r1 | 2 +- metadata/md5-cache/net-p2p/kubo-0.30.0 | 2 +- metadata/md5-cache/net-p2p/kubo-0.31.0 | 2 +- .../md5-cache/net-p2p/mktorrent-1.1_p20210130 | 14 - .../net-p2p/mktorrent-1.1_p20210130-r1 | 4 +- metadata/md5-cache/net-p2p/syncthing-1.27.10 | 2 +- metadata/md5-cache/net-p2p/syncthing-1.27.12 | 2 +- metadata/md5-cache/net-p2p/syncthing-1.27.9 | 2 +- metadata/md5-cache/net-print/Manifest.gz | Bin 10083 -> 10247 bytes .../md5-cache/net-print/libinklevel-0.9.3 | 4 +- .../md5-cache/net-print/libinklevel-0.9.7 | 15 + metadata/md5-cache/net-proxy/Manifest.gz | Bin 10459 -> 10619 bytes .../net-proxy/haproxy-dataplaneapi-3.0.3 | 2 +- metadata/md5-cache/net-proxy/lyrebird-0.4.0 | 2 +- metadata/md5-cache/net-proxy/lyrebird-0.5.0 | 2 +- .../md5-cache/net-proxy/squidguard-1.6.0-r2 | 15 + metadata/md5-cache/net-vpn/Manifest.gz | Bin 16953 -> 17284 bytes .../md5-cache/net-vpn/eduvpn-common-1.2.0 | 2 +- .../md5-cache/net-vpn/eduvpn-common-2.0.2 | 2 +- .../md5-cache/net-vpn/eduvpn-common-2.1.0 | 2 +- metadata/md5-cache/net-vpn/fp-multiuser-0.0.2 | 2 +- metadata/md5-cache/net-vpn/frp-0.56.0 | 2 +- metadata/md5-cache/net-vpn/frp-0.58.1 | 2 +- metadata/md5-cache/net-vpn/frp-0.60.0 | 2 +- metadata/md5-cache/net-vpn/frp-0.61.1 | 2 +- metadata/md5-cache/net-vpn/headscale-0.22.3 | 2 +- metadata/md5-cache/net-vpn/pptpd-1.4.0-r5 | 15 + metadata/md5-cache/net-vpn/riseup-vpn-0.24.5 | 2 +- metadata/md5-cache/net-vpn/riseup-vpn-0.24.8 | 2 +- metadata/md5-cache/net-vpn/tailscale-1.78.1 | 2 +- metadata/md5-cache/net-vpn/tailscale-1.78.3 | 2 +- metadata/md5-cache/net-vpn/tailscale-1.80.1 | 14 + metadata/md5-cache/net-wireless/Manifest.gz | Bin 25153 -> 25308 bytes metadata/md5-cache/net-wireless/iwd-3.4 | 15 + metadata/md5-cache/sci-astronomy/Manifest.gz | Bin 8072 -> 8072 bytes .../sci-astronomy/calcmysky-0.3.3-r1 | 4 +- .../md5-cache/sci-astronomy/kstars-3.7.4-r1 | 2 +- metadata/md5-cache/sci-astronomy/kstars-3.7.5 | 2 +- .../md5-cache/sci-astronomy/stellarium-24.4 | 4 +- metadata/md5-cache/sci-biology/Manifest.gz | Bin 22321 -> 22489 bytes .../md5-cache/sci-biology/augustus-3.4.0-r3 | 2 +- metadata/md5-cache/sci-biology/augustus-3.5.0 | 16 + .../md5-cache/sci-calculators/Manifest.gz | Bin 4378 -> 4375 bytes .../sci-calculators/keurocalc-1.3.0_p20241225 | 2 +- metadata/md5-cache/sci-chemistry/Manifest.gz | Bin 11528 -> 11693 bytes .../sci-chemistry/gperiodic-3.0.3-r1 | 15 + .../md5-cache/sci-electronics/Manifest.gz | Bin 12967 -> 12643 bytes .../md5-cache/sci-electronics/gazebo-11.13.0 | 16 - .../md5-cache/sci-electronics/gazebo-11.14.0 | 16 - .../md5-cache/sci-electronics/ktechlab-0.51.0 | 2 +- .../md5-cache/sci-geosciences/Manifest.gz | Bin 10959 -> 11289 bytes .../harmonics-dwf-free-20241229 | 9 + .../sci-geosciences/tcd-utils-20240222 | 11 + metadata/md5-cache/sci-libs/Manifest.gz | Bin 77251 -> 76899 bytes metadata/md5-cache/sci-libs/armadillo-14.2.3 | 17 + metadata/md5-cache/sci-libs/fplll-5.4.5 | 13 - metadata/md5-cache/sci-libs/gdal-3.8.0-r1 | 17 - metadata/md5-cache/sci-libs/gdal-3.8.5 | 17 - metadata/md5-cache/sci-libs/gdal-3.9.0 | 17 - metadata/md5-cache/sci-libs/gdal-3.9.1-r1 | 17 - metadata/md5-cache/sci-libs/gdal-3.9.3 | 17 + metadata/md5-cache/sci-libs/hipBLAS-5.1.3 | 16 - metadata/md5-cache/sci-libs/hipBLAS-5.4.2 | 16 - metadata/md5-cache/sci-libs/hipBLAS-6.3.2 | 16 + .../md5-cache/sci-libs/hipBLAS-common-6.3.2 | 12 + metadata/md5-cache/sci-libs/hipBLASLt-6.3.2 | 17 + metadata/md5-cache/sci-libs/hipCUB-5.1.3 | 17 - metadata/md5-cache/sci-libs/hipCUB-6.3.2 | 17 + metadata/md5-cache/sci-libs/hipFFT-5.1.3-r1 | 17 - metadata/md5-cache/sci-libs/hipFFT-6.3.2 | 17 + metadata/md5-cache/sci-libs/hipRAND-5.6.0-r1 | 17 - metadata/md5-cache/sci-libs/hipRAND-6.3.2 | 17 + metadata/md5-cache/sci-libs/hipSOLVER-6.3.2 | 17 + .../md5-cache/sci-libs/hipSPARSE-5.1.3-r1 | 17 - metadata/md5-cache/sci-libs/mc-1.5 | 15 - metadata/md5-cache/sci-libs/mc-1.5-r1 | 15 + metadata/md5-cache/sci-libs/miopen-5.1.3-r1 | 16 - metadata/md5-cache/sci-libs/miopen-6.3.2 | 17 + metadata/md5-cache/sci-libs/pgplot-5.2.2-r9 | 15 + metadata/md5-cache/sci-libs/rocBLAS-5.1.3-r4 | 16 - metadata/md5-cache/sci-libs/rocBLAS-5.4.2-r3 | 16 - metadata/md5-cache/sci-libs/rocBLAS-6.3.2 | 16 + metadata/md5-cache/sci-libs/rocFFT-5.1.3-r1 | 17 - metadata/md5-cache/sci-libs/rocFFT-6.3.2 | 17 + metadata/md5-cache/sci-libs/rocPRIM-5.1.3 | 17 - metadata/md5-cache/sci-libs/rocPRIM-6.3.2 | 17 + metadata/md5-cache/sci-libs/rocRAND-5.1.3 | 17 - metadata/md5-cache/sci-libs/rocRAND-5.6.0-r1 | 17 - metadata/md5-cache/sci-libs/rocRAND-6.3.2 | 17 + .../md5-cache/sci-libs/rocSOLVER-5.1.3-r1 | 17 - metadata/md5-cache/sci-libs/rocSOLVER-5.4.2 | 17 - metadata/md5-cache/sci-libs/rocSOLVER-6.3.2 | 17 + .../md5-cache/sci-libs/rocSPARSE-5.1.3-r1 | 17 - metadata/md5-cache/sci-libs/rocSPARSE-6.3.2 | 17 + metadata/md5-cache/sci-libs/rocThrust-5.1.3 | 17 - metadata/md5-cache/sci-libs/rocThrust-6.3.2 | 17 + metadata/md5-cache/sci-libs/rocWMMA-6.3.2 | 16 + metadata/md5-cache/sci-libs/superlu-4.3-r3 | 16 - metadata/md5-cache/sci-libs/superlu-4.3-r4 | 16 + .../md5-cache/sci-libs/transformers-4.47.1 | 16 + .../md5-cache/sci-mathematics/4ti2-1.6.10 | 14 + .../md5-cache/sci-mathematics/Manifest.gz | Bin 32636 -> 32799 bytes metadata/md5-cache/sci-mathematics/coq-8.17.1 | 16 + metadata/md5-cache/sci-mathematics/coq-8.19.2 | 4 +- metadata/md5-cache/sci-mathematics/coq-8.20.0 | 4 +- .../sci-mathematics/easycrypt-2024.01-r1 | 15 - .../md5-cache/sci-mathematics/manifold-3.0.1 | 4 +- .../md5-cache/sci-mathematics/rkward-0.8.0 | 2 +- .../md5-cache/sci-mathematics/verifpal-0.27.0 | 2 +- .../sci-mathematics/why3-for-spark-2023.12.13 | 17 - .../why3-for-spark-2023.12.13-r2 | 17 + metadata/md5-cache/sci-physics/Manifest.gz | Bin 12248 -> 12082 bytes metadata/md5-cache/sci-physics/root-6.30.08 | 18 - metadata/md5-cache/sci-physics/root-6.32.06 | 18 - metadata/md5-cache/sci-physics/root-6.32.08 | 18 - metadata/md5-cache/sci-physics/root-6.32.10 | 18 + metadata/md5-cache/sci-physics/root-6.34.04 | 18 + metadata/md5-cache/sci-physics/yoda-9999 | 6 +- .../md5-cache/sci-visualization/Manifest.gz | Bin 6081 -> 6396 bytes .../md5-cache/sci-visualization/gle-4.3.5 | 15 + .../md5-cache/sci-visualization/gwyddion-2.67 | 16 + .../sci-visualization/labplot-2.11.1 | 2 +- .../md5-cache/sci-visualization/labplot-9999 | 2 +- metadata/md5-cache/sec-keys/Manifest.gz | Bin 34988 -> 35967 bytes .../openpgp-keys-apache-tomcat-10.1.34 | 4 +- .../openpgp-keys-apache-tomcat-10.1.35 | 9 + .../openpgp-keys-apache-tomcat-11.0.3 | 9 + .../openpgp-keys-apache-tomcat-9.0.98 | 4 +- .../openpgp-keys-apache-tomcat-9.0.99 | 9 + .../openpgp-keys-gentoo-developers-20250203 | 14 + .../sec-keys/openpgp-keys-libtasn1-20250209 | 9 + .../openpgp-keys-nicholaswilson-20250209 | 9 + metadata/md5-cache/sys-apps/Manifest.gz | Bin 96588 -> 99465 bytes metadata/md5-cache/sys-apps/amdgpu_top-0.10.3 | 15 + metadata/md5-cache/sys-apps/apparmor-3.1.4 | 15 - metadata/md5-cache/sys-apps/apparmor-3.1.4-r2 | 15 + .../sys-apps/audio-entropyd-2.0.3-r1 | 15 - .../sys-apps/audio-entropyd-2.0.3-r2 | 15 + metadata/md5-cache/sys-apps/bat-0.25.0 | 15 + metadata/md5-cache/sys-apps/checkpolicy-3.8 | 15 + metadata/md5-cache/sys-apps/dbus-1.16.0 | 16 + metadata/md5-cache/sys-apps/diffutils-3.11 | 13 - metadata/md5-cache/sys-apps/diffutils-3.11-r1 | 14 + metadata/md5-cache/sys-apps/earlyoom-1.7-r1 | 2 +- metadata/md5-cache/sys-apps/earlyoom-9999 | 2 +- metadata/md5-cache/sys-apps/ed-1.20.2 | 2 +- metadata/md5-cache/sys-apps/gawk-5.3.1 | 4 +- metadata/md5-cache/sys-apps/goawk-1.27.0 | 2 +- metadata/md5-cache/sys-apps/goawk-1.29.0 | 2 +- metadata/md5-cache/sys-apps/goawk-1.29.1 | 2 +- metadata/md5-cache/sys-apps/iproute2-6.11.0 | 16 - metadata/md5-cache/sys-apps/iproute2-6.13.0 | 16 + metadata/md5-cache/sys-apps/iproute2-6.9.0 | 16 - metadata/md5-cache/sys-apps/iproute2-9999 | 2 +- .../md5-cache/sys-apps/mawk-1.3.4_p20240905 | 4 +- .../md5-cache/sys-apps/mawk-1.3.4_p20250131 | 4 +- metadata/md5-cache/sys-apps/mcstrans-3.7-r1 | 4 +- metadata/md5-cache/sys-apps/mcstrans-3.8 | 13 + .../md5-cache/sys-apps/memtest86-bin-11.1 | 14 - .../md5-cache/sys-apps/memtest86-bin-11.2 | 14 + metadata/md5-cache/sys-apps/moar-1.30.0 | 2 +- metadata/md5-cache/sys-apps/moar-1.31.2 | 2 +- metadata/md5-cache/sys-apps/nawk-20230909-r1 | 4 +- metadata/md5-cache/sys-apps/nawk-20250116 | 12 + .../md5-cache/sys-apps/pandora_box-0.12.0-r1 | 13 - .../md5-cache/sys-apps/pandora_box-0.13.0 | 13 + .../md5-cache/sys-apps/pandora_box-0.14.0-r1 | 13 + metadata/md5-cache/sys-apps/pcsc-tools-1.7.2 | 15 + metadata/md5-cache/sys-apps/pkgcore-0.12.29 | 4 +- .../md5-cache/sys-apps/policycoreutils-3.7 | 4 +- .../md5-cache/sys-apps/policycoreutils-3.8 | 17 + .../md5-cache/sys-apps/policycoreutils-9999 | 10 +- metadata/md5-cache/sys-apps/pv-1.9.31 | 15 + metadata/md5-cache/sys-apps/restorecond-3.7 | 4 +- metadata/md5-cache/sys-apps/restorecond-3.8 | 14 + metadata/md5-cache/sys-apps/rootlesskit-2.0.2 | 2 +- metadata/md5-cache/sys-apps/s6-2.13.1.0 | 4 +- .../md5-cache/sys-apps/s6-linux-init-1.1.2.1 | 4 +- .../md5-cache/sys-apps/s6-linux-utils-2.6.2.1 | 4 +- .../sys-apps/s6-portable-utils-2.3.0.4 | 4 +- metadata/md5-cache/sys-apps/s6-rc-0.5.5.0 | 4 +- metadata/md5-cache/sys-apps/secilc-3.7 | 4 +- metadata/md5-cache/sys-apps/secilc-3.8 | 15 + .../md5-cache/sys-apps/selinux-python-3.7-r1 | 4 +- .../md5-cache/sys-apps/selinux-python-3.8 | 17 + .../md5-cache/sys-apps/selinux-python-9999 | 12 +- .../md5-cache/sys-apps/semodule-utils-3.7 | 4 +- .../md5-cache/sys-apps/semodule-utils-3.8 | 13 + metadata/md5-cache/sys-apps/syd-3.30.0 | 16 - metadata/md5-cache/sys-apps/syd-3.31.0 | 16 + metadata/md5-cache/sys-apps/syd-3.32.1 | 16 + .../md5-cache/sys-apps/systemd-utils-254.22 | 4 +- metadata/md5-cache/sys-apps/sysvinit-3.14 | 15 + metadata/md5-cache/sys-apps/tuned-2.25.1 | 16 + metadata/md5-cache/sys-apps/usbredir-0.15.0 | 16 + metadata/md5-cache/sys-apps/which-2.23 | 11 + metadata/md5-cache/sys-auth/Manifest.gz | Bin 14318 -> 14643 bytes metadata/md5-cache/sys-auth/docker_auth-1.9.0 | 2 +- .../sys-auth/google-authenticator-1.11 | 14 + .../md5-cache/sys-auth/nss-pam-ldapd-0.9.13 | 17 + .../md5-cache/sys-auth/pam_mysql-0.8.2-r1 | 15 - .../md5-cache/sys-auth/pam_mysql-0.8.2-r2 | 15 + metadata/md5-cache/sys-block/Manifest.gz | Bin 17352 -> 17195 bytes .../md5-cache/sys-block/endpoint-0.1.0-r1 | 12 - .../md5-cache/sys-block/endpoint-0.1.0-r2 | 12 + metadata/md5-cache/sys-block/mbuffer-20241007 | 4 +- .../sys-block/partitionmanager-24.08.3 | 2 +- .../sys-block/partitionmanager-24.12.1 | 16 - .../sys-block/partitionmanager-24.12.2 | 2 +- metadata/md5-cache/sys-cluster/Manifest.gz | Bin 26532 -> 26502 bytes .../md5-cache/sys-cluster/cilium-cli-0.12.1 | 2 +- .../md5-cache/sys-cluster/cilium-cli-0.13.0 | 2 +- .../md5-cache/sys-cluster/cilium-cli-0.16.16 | 2 +- metadata/md5-cache/sys-cluster/flux-0.41.2 | 2 +- metadata/md5-cache/sys-cluster/flux-2.3.0 | 2 +- metadata/md5-cache/sys-cluster/flux-2.4.0 | 2 +- metadata/md5-cache/sys-cluster/gmqtt-0.5.0 | 2 +- metadata/md5-cache/sys-cluster/hubble-0.10.0 | 2 +- metadata/md5-cache/sys-cluster/k3s-1.25.4_p1 | 2 +- metadata/md5-cache/sys-cluster/k9scli-0.32.4 | 2 +- metadata/md5-cache/sys-cluster/kops-1.28.2 | 2 +- metadata/md5-cache/sys-cluster/kops-1.30.0 | 2 +- .../sys-cluster/kube-apiserver-1.29.13 | 2 +- .../sys-cluster/kube-apiserver-1.30.8 | 2 +- .../sys-cluster/kube-apiserver-1.30.9 | 2 +- .../sys-cluster/kube-apiserver-1.31.4 | 2 +- .../sys-cluster/kube-apiserver-1.31.5 | 2 +- .../sys-cluster/kube-apiserver-1.32.1 | 2 +- .../kube-controller-manager-1.29.13 | 2 +- .../kube-controller-manager-1.30.8 | 2 +- .../kube-controller-manager-1.30.9 | 2 +- .../kube-controller-manager-1.31.4 | 2 +- .../kube-controller-manager-1.31.5 | 2 +- .../kube-controller-manager-1.32.1 | 2 +- .../md5-cache/sys-cluster/kube-proxy-1.29.13 | 2 +- .../md5-cache/sys-cluster/kube-proxy-1.30.8 | 2 +- .../md5-cache/sys-cluster/kube-proxy-1.30.9 | 2 +- .../md5-cache/sys-cluster/kube-proxy-1.31.4 | 2 +- .../md5-cache/sys-cluster/kube-proxy-1.31.5 | 2 +- .../md5-cache/sys-cluster/kube-proxy-1.32.1 | 2 +- .../md5-cache/sys-cluster/kube-router-1.1.1 | 2 +- .../md5-cache/sys-cluster/kube-router-1.2.2 | 2 +- .../md5-cache/sys-cluster/kube-router-1.5.0 | 2 +- .../md5-cache/sys-cluster/kube-router-1.6.0 | 2 +- .../sys-cluster/kube-scheduler-1.29.13 | 2 +- .../sys-cluster/kube-scheduler-1.30.8 | 2 +- .../sys-cluster/kube-scheduler-1.30.9 | 2 +- .../sys-cluster/kube-scheduler-1.31.4 | 2 +- .../sys-cluster/kube-scheduler-1.31.5 | 2 +- .../sys-cluster/kube-scheduler-1.32.1 | 2 +- .../md5-cache/sys-cluster/kubeadm-1.29.13 | 2 +- metadata/md5-cache/sys-cluster/kubeadm-1.30.8 | 2 +- metadata/md5-cache/sys-cluster/kubeadm-1.30.9 | 2 +- metadata/md5-cache/sys-cluster/kubeadm-1.31.4 | 2 +- metadata/md5-cache/sys-cluster/kubeadm-1.31.5 | 2 +- metadata/md5-cache/sys-cluster/kubeadm-1.32.1 | 2 +- .../md5-cache/sys-cluster/kubectl-1.29.13 | 2 +- metadata/md5-cache/sys-cluster/kubectl-1.30.8 | 2 +- metadata/md5-cache/sys-cluster/kubectl-1.30.9 | 2 +- metadata/md5-cache/sys-cluster/kubectl-1.31.4 | 2 +- metadata/md5-cache/sys-cluster/kubectl-1.31.5 | 2 +- metadata/md5-cache/sys-cluster/kubectl-1.32.1 | 2 +- .../md5-cache/sys-cluster/kubelet-1.29.13 | 2 +- metadata/md5-cache/sys-cluster/kubelet-1.30.8 | 2 +- metadata/md5-cache/sys-cluster/kubelet-1.30.9 | 2 +- metadata/md5-cache/sys-cluster/kubelet-1.31.4 | 2 +- metadata/md5-cache/sys-cluster/kubelet-1.31.5 | 2 +- metadata/md5-cache/sys-cluster/kubelet-1.32.1 | 2 +- .../md5-cache/sys-cluster/kubeletctl-1.12 | 2 +- .../md5-cache/sys-cluster/kubeletctl-1.13 | 2 +- .../md5-cache/sys-cluster/kubelogin-1.30.1 | 2 +- .../md5-cache/sys-cluster/kubelogin-1.31.0 | 2 +- .../md5-cache/sys-cluster/kubeseal-0.27.2 | 2 +- .../md5-cache/sys-cluster/kubeseal-0.27.3 | 2 +- .../md5-cache/sys-cluster/minikube-1.34.0 | 2 +- metadata/md5-cache/sys-cluster/nomad-1.6.1 | 2 +- .../sys-cluster/rocm-k8s-device-plugin-0.3.0 | 2 +- .../sys-cluster/rocm-k8s-device-plugin-0.5.0 | 2 +- metadata/md5-cache/sys-cluster/teleport-4.1.4 | 2 +- metadata/md5-cache/sys-cluster/virtctl-1.4.0 | 2 +- metadata/md5-cache/sys-cluster/zetcd-0.0.4-r2 | 2 +- .../md5-cache/sys-cluster/zookeepercli-1.0.11 | 2 +- metadata/md5-cache/sys-devel/Manifest.gz | Bin 24510 -> 25539 bytes metadata/md5-cache/sys-devel/binutils-2.42-r2 | 2 +- metadata/md5-cache/sys-devel/binutils-2.43-r2 | 2 +- .../md5-cache/sys-devel/binutils-2.43.9999 | 2 +- metadata/md5-cache/sys-devel/binutils-2.44 | 2 +- .../md5-cache/sys-devel/binutils-2.44.9999 | 2 +- metadata/md5-cache/sys-devel/binutils-9999 | 2 +- .../sys-devel/binutils-hppa64-2.42-r2 | 2 +- .../sys-devel/binutils-hppa64-2.43-r2 | 2 +- .../md5-cache/sys-devel/binutils-hppa64-2.44 | 2 +- .../md5-cache/sys-devel/binutils-hppa64-9999 | 2 +- metadata/md5-cache/sys-devel/dev86-0.16.21-r3 | 2 +- metadata/md5-cache/sys-devel/dev86-1.0.1 | 13 + metadata/md5-cache/sys-devel/gcc-10.5.0 | 4 +- metadata/md5-cache/sys-devel/gcc-11.5.0 | 4 +- metadata/md5-cache/sys-devel/gcc-12.4.0 | 4 +- .../md5-cache/sys-devel/gcc-12.4.1_p20241219 | 4 +- .../md5-cache/sys-devel/gcc-12.4.1_p20250116 | 4 +- .../md5-cache/sys-devel/gcc-12.4.1_p20250123 | 4 +- .../md5-cache/sys-devel/gcc-12.4.1_p20250130 | 4 +- .../md5-cache/sys-devel/gcc-12.4.1_p20250206 | 16 + metadata/md5-cache/sys-devel/gcc-12.5.9999 | 4 +- metadata/md5-cache/sys-devel/gcc-13.2.0 | 4 +- .../md5-cache/sys-devel/gcc-13.3.1_p20241220 | 4 +- .../md5-cache/sys-devel/gcc-13.3.1_p20250117 | 4 +- .../md5-cache/sys-devel/gcc-13.3.1_p20250124 | 4 +- .../md5-cache/sys-devel/gcc-13.3.1_p20250131 | 4 +- .../md5-cache/sys-devel/gcc-13.3.1_p20250207 | 16 + metadata/md5-cache/sys-devel/gcc-13.4.9999 | 4 +- .../md5-cache/sys-devel/gcc-14.2.1_p20241221 | 4 +- .../md5-cache/sys-devel/gcc-14.2.1_p20250118 | 4 +- .../md5-cache/sys-devel/gcc-14.2.1_p20250125 | 4 +- .../md5-cache/sys-devel/gcc-14.2.1_p20250201 | 4 +- .../md5-cache/sys-devel/gcc-14.2.1_p20250208 | 16 + metadata/md5-cache/sys-devel/gcc-14.3.9999 | 4 +- .../sys-devel/gcc-15.0.0_pre20250112-r3 | 4 +- .../sys-devel/gcc-15.0.1_pre20250119 | 4 +- .../sys-devel/gcc-15.0.1_pre20250126 | 4 +- .../sys-devel/gcc-15.0.1_pre20250202 | 4 +- .../sys-devel/gcc-15.0.1_pre20250209 | 16 + metadata/md5-cache/sys-devel/gcc-15.0.9999 | 4 +- metadata/md5-cache/sys-devel/gcc-8.5.0-r2 | 4 +- metadata/md5-cache/sys-devel/gcc-9.5.0 | 4 +- .../md5-cache/sys-devel/gettext-0.22.5-r1 | 4 +- metadata/md5-cache/sys-devel/gettext-0.23 | 16 - metadata/md5-cache/sys-devel/gettext-0.23.1 | 16 + metadata/md5-cache/sys-devel/kgcc64-10.5.0 | 2 +- metadata/md5-cache/sys-devel/kgcc64-11.5.0 | 2 +- metadata/md5-cache/sys-devel/kgcc64-12.4.0 | 2 +- .../sys-devel/kgcc64-12.4.1_p20241031 | 2 +- .../sys-devel/kgcc64-12.4.1_p20241114 | 2 +- .../sys-devel/kgcc64-12.4.1_p20241219 | 2 +- .../sys-devel/kgcc64-13.3.1_p20241025 | 2 +- .../sys-devel/kgcc64-13.3.1_p20241115 | 2 +- .../sys-devel/kgcc64-13.3.1_p20241220 | 2 +- .../sys-devel/kgcc64-14.2.1_p20241116 | 2 +- .../sys-devel/kgcc64-14.2.1_p20241221 | 2 +- .../sys-devel/multilib-gcc-wrapper-0-r2 | 2 +- .../md5-cache/sys-devel/patch-2.7.6_p20250206 | 4 +- metadata/md5-cache/sys-devel/patch-9999 | 4 +- metadata/md5-cache/sys-devel/smatch-1.72 | 14 - metadata/md5-cache/sys-devel/smatch-1.72-r2 | 14 + metadata/md5-cache/sys-devel/smatch-1.73-r1 | 14 + metadata/md5-cache/sys-devel/smatch-9999 | 6 +- metadata/md5-cache/sys-firmware/Manifest.gz | Bin 7415 -> 7255 bytes metadata/md5-cache/sys-firmware/edk2-202405 | 14 - metadata/md5-cache/sys-firmware/edk2-202408 | 4 +- .../md5-cache/sys-firmware/edk2-bin-202408 | 4 +- .../intel-microcode-20240813_p20240815 | 17 - .../intel-microcode-20250211_p20250211 | 17 + metadata/md5-cache/sys-fs/Manifest.gz | Bin 37577 -> 37895 bytes .../md5-cache/sys-fs/bcachefs-tools-1.20.0 | 17 + metadata/md5-cache/sys-fs/duf-0.8.1 | 2 +- metadata/md5-cache/sys-fs/e2tools-0.1.2 | 13 + metadata/md5-cache/sys-fs/exfatprogs-1.2.5 | 10 - metadata/md5-cache/sys-fs/exfatprogs-1.2.7 | 10 + metadata/md5-cache/sys-fs/exfatprogs-9999 | 4 +- metadata/md5-cache/sys-fs/fscrypt-0.3.4 | 2 +- metadata/md5-cache/sys-fs/go-mtpfs-1.0.0 | 2 +- metadata/md5-cache/sys-fs/lxcfs-6.0.2 | 16 - metadata/md5-cache/sys-fs/mdadm-4.3-r1 | 4 +- metadata/md5-cache/sys-fs/mdadm-4.4 | 17 + metadata/md5-cache/sys-kernel/Manifest.gz | Bin 27491 -> 30199 bytes metadata/md5-cache/sys-kernel/dracut-106 | 17 - metadata/md5-cache/sys-kernel/dracut-106-r1 | 17 + .../sys-kernel/gentoo-kernel-6.12.13 | 18 + .../md5-cache/sys-kernel/gentoo-kernel-6.13.2 | 18 + .../md5-cache/sys-kernel/gentoo-kernel-6.6.76 | 18 + .../md5-cache/sys-kernel/gentoo-kernel-6.6.77 | 18 + .../sys-kernel/gentoo-kernel-bin-6.12.13 | 17 + .../sys-kernel/gentoo-kernel-bin-6.13.2 | 17 + .../sys-kernel/gentoo-kernel-bin-6.6.76 | 17 + .../sys-kernel/gentoo-kernel-bin-6.6.77 | 17 + .../sys-kernel/gentoo-sources-6.12.10 | 14 - .../sys-kernel/gentoo-sources-6.12.13 | 14 + .../sys-kernel/gentoo-sources-6.13.2 | 14 + .../sys-kernel/gentoo-sources-6.6.76 | 14 + .../sys-kernel/gentoo-sources-6.6.77 | 14 + .../md5-cache/sys-kernel/git-sources-6.14_rc2 | 15 + .../sys-kernel/linux-firmware-20241110 | 17 - .../sys-kernel/linux-firmware-20250211 | 17 + metadata/md5-cache/sys-kernel/scx-1.0.9 | 16 + .../sys-kernel/vanilla-kernel-6.12.13 | 18 + .../sys-kernel/vanilla-kernel-6.13.2 | 18 + .../sys-kernel/vanilla-kernel-6.6.76 | 18 + .../sys-kernel/vanilla-kernel-6.6.77 | 18 + .../sys-kernel/vanilla-sources-6.12.12 | 14 - .../sys-kernel/vanilla-sources-6.12.13 | 14 + .../sys-kernel/vanilla-sources-6.13.1 | 14 - .../sys-kernel/vanilla-sources-6.13.2 | 14 + .../sys-kernel/vanilla-sources-6.6.75 | 14 - .../sys-kernel/vanilla-sources-6.6.77 | 14 + metadata/md5-cache/sys-libs/Manifest.gz | Bin 33015 -> 34443 bytes metadata/md5-cache/sys-libs/kpmcore-24.08.3 | 2 +- metadata/md5-cache/sys-libs/kpmcore-24.12.1 | 16 - metadata/md5-cache/sys-libs/kpmcore-24.12.2 | 2 +- metadata/md5-cache/sys-libs/libselinux-3.8 | 16 + metadata/md5-cache/sys-libs/libsemanage-3.7 | 4 +- metadata/md5-cache/sys-libs/libsemanage-3.8 | 17 + metadata/md5-cache/sys-libs/libsemanage-9999 | 10 +- metadata/md5-cache/sys-libs/libsepol-3.8 | 13 + metadata/md5-cache/sys-libs/liburing-2.9 | 15 + metadata/md5-cache/sys-libs/libxcrypt-4.4.38 | 16 + metadata/md5-cache/sys-libs/lwp-2.8-r1 | 9 + metadata/md5-cache/sys-libs/musl-1.2.3-r10 | 15 + metadata/md5-cache/sys-libs/musl-1.2.4-r4 | 15 + metadata/md5-cache/sys-libs/musl-1.2.5-r3 | 15 + .../md5-cache/sys-libs/timezone-data-2025a | 4 +- metadata/md5-cache/sys-libs/zlib-ng-2.2.4 | 16 + metadata/md5-cache/sys-process/Manifest.gz | Bin 16921 -> 17251 bytes metadata/md5-cache/sys-process/ctop-0.7.7 | 2 +- metadata/md5-cache/sys-process/fcron-3.3.2 | 15 + metadata/md5-cache/sys-process/fcron-3.3.3 | 15 + .../md5-cache/sys-process/iotop-0.6_p20230124 | 10 +- metadata/md5-cache/virtual/Manifest.gz | Bin 38054 -> 38684 bytes .../md5-cache/virtual/dist-kernel-6.12.13 | 7 + metadata/md5-cache/virtual/dist-kernel-6.13.2 | 7 + metadata/md5-cache/virtual/dist-kernel-6.6.76 | 7 + metadata/md5-cache/virtual/dist-kernel-6.6.77 | 7 + metadata/md5-cache/www-apache/Manifest.gz | Bin 7282 -> 7275 bytes .../www-apache/modsecurity-crs-3.3.7 | 4 +- .../www-apache/modsecurity-crs-4.8.0 | 4 +- .../md5-cache/www-apache/passenger-6.0.24 | 4 +- metadata/md5-cache/www-apps/Manifest.gz | Bin 26730 -> 26875 bytes .../www-apps/chromedriver-bin-133.0.6943.53 | 12 - .../www-apps/chromedriver-bin-133.0.6943.98 | 12 + metadata/md5-cache/www-apps/gitea-1.22.6 | 2 +- metadata/md5-cache/www-apps/gitea-1.23.0 | 17 - metadata/md5-cache/www-apps/gitea-1.23.3 | 17 + metadata/md5-cache/www-apps/hugo-0.127.0 | 2 +- metadata/md5-cache/www-apps/hugo-0.129.0 | 2 +- metadata/md5-cache/www-apps/hugo-0.131.0 | 2 +- metadata/md5-cache/www-apps/mediawiki-1.42.5 | 16 + metadata/md5-cache/www-apps/miniflux-2.2.3 | 2 +- metadata/md5-cache/www-apps/miniflux-2.2.4 | 2 +- metadata/md5-cache/www-apps/moodle-4.3.10 | 14 + metadata/md5-cache/www-apps/moodle-4.3.9 | 14 - metadata/md5-cache/www-apps/moodle-4.4.5 | 14 - metadata/md5-cache/www-apps/moodle-4.4.6 | 14 + metadata/md5-cache/www-apps/moodle-4.5.1 | 14 - metadata/md5-cache/www-apps/moodle-4.5.2 | 14 + .../www-apps/prowlarr-bin-1.31.0.4941 | 14 - .../www-apps/prowlarr-bin-1.31.1.4959 | 14 + .../md5-cache/www-apps/radarr-bin-5.18.4.9674 | 14 - .../md5-cache/www-apps/radarr-bin-5.19.0.9697 | 14 + .../md5-cache/www-apps/sonarr-bin-4.0.12.2900 | 14 - .../md5-cache/www-apps/sonarr-bin-4.0.13.2932 | 14 + metadata/md5-cache/www-apps/trickster-1.1.5 | 2 +- metadata/md5-cache/www-apps/wordpress-6.7.1 | 14 - metadata/md5-cache/www-apps/wordpress-6.7.2 | 14 + metadata/md5-cache/www-client/Manifest.gz | Bin 14031 -> 11901 bytes .../www-client/chromium-132.0.6834.159 | 17 - .../www-client/chromium-132.0.6834.83 | 17 - .../www-client/chromium-133.0.6943.27 | 17 - .../www-client/chromium-133.0.6943.53 | 2 +- .../www-client/chromium-133.0.6943.98 | 17 + .../www-client/chromium-134.0.6998.15 | 17 + .../www-client/chromium-134.0.6998.3 | 17 - .../www-client/chromium-135.0.6999.2 | 16 + .../md5-cache/www-client/falkon-24.08.3-r3 | 2 +- metadata/md5-cache/www-client/falkon-24.12.1 | 18 - metadata/md5-cache/www-client/falkon-24.12.2 | 2 +- metadata/md5-cache/www-client/firefox-128.5.0 | 17 - metadata/md5-cache/www-client/firefox-128.5.1 | 17 - metadata/md5-cache/www-client/firefox-128.6.0 | 17 - metadata/md5-cache/www-client/firefox-133.0.3 | 17 - metadata/md5-cache/www-client/firefox-134.0 | 17 - metadata/md5-cache/www-client/firefox-134.0.1 | 17 - metadata/md5-cache/www-client/firefox-134.0.2 | 17 - .../md5-cache/www-client/firefox-bin-128.5.2 | 16 - .../md5-cache/www-client/firefox-bin-128.6.0 | 16 - .../md5-cache/www-client/firefox-bin-133.0.3 | 16 - .../md5-cache/www-client/firefox-bin-134.0 | 16 - .../md5-cache/www-client/firefox-bin-134.0.1 | 16 - .../md5-cache/www-client/firefox-bin-134.0.2 | 16 - .../www-client/google-chrome-133.0.6943.53 | 15 - .../www-client/google-chrome-133.0.6943.98 | 15 + .../google-chrome-beta-134.0.6998.15 | 15 + .../google-chrome-beta-134.0.6998.3 | 15 - .../www-client/microsoft-edge-132.0.2957.140 | 15 - .../www-client/microsoft-edge-133.0.3065.59 | 15 + .../microsoft-edge-beta-133.0.3065.31 | 15 - .../microsoft-edge-beta-133.0.3065.59 | 15 + .../microsoft-edge-dev-134.0.3081.2 | 15 - .../microsoft-edge-dev-134.0.3124.5 | 15 + .../md5-cache/www-client/opera-116.0.5366.127 | 15 + .../md5-cache/www-client/opera-116.0.5366.71 | 15 - .../www-client/opera-developer-118.0.5419.0 | 15 - .../www-client/opera-developer-118.0.5439.0 | 15 + .../md5-cache/www-client/seamonkey-2.53.20 | 17 + metadata/md5-cache/www-client/tangram-3.3 | 15 + .../md5-cache/www-client/vivaldi-7.0.3495.29 | 15 - .../md5-cache/www-client/vivaldi-7.1.3570.42 | 15 - .../md5-cache/www-client/vivaldi-7.1.3570.47 | 15 + .../md5-cache/www-client/vivaldi-7.1.3570.50 | 15 + .../www-client/vivaldi-snapshot-7.1.3570.27 | 15 - .../www-client/vivaldi-snapshot-7.2.3597.3 | 15 + metadata/md5-cache/www-misc/Manifest.gz | Bin 3589 -> 3749 bytes metadata/md5-cache/www-misc/monitorix-3.16.0 | 13 + metadata/md5-cache/www-plugins/Manifest.gz | Bin 1743 -> 1753 bytes .../md5-cache/www-plugins/browserpass-3.1.0 | 2 +- .../chrome-binary-plugins-133.0.6943.53 | 13 - .../chrome-binary-plugins-133.0.6943.98 | 13 + .../chrome-binary-plugins-134.0.6998.15_beta | 13 + .../chrome-binary-plugins-134.0.6998.3_beta | 13 - metadata/md5-cache/www-servers/Manifest.gz | Bin 7672 -> 8163 bytes metadata/md5-cache/www-servers/caddy-2.7.6-r2 | 2 +- metadata/md5-cache/www-servers/caddy-2.8.4 | 2 +- metadata/md5-cache/www-servers/caddy-2.9.0 | 2 +- metadata/md5-cache/www-servers/caddy-9999 | 2 +- metadata/md5-cache/www-servers/tomcat-10.1.35 | 16 + metadata/md5-cache/www-servers/tomcat-11.0.3 | 16 + metadata/md5-cache/www-servers/tomcat-9.0.99 | 16 + metadata/md5-cache/www-servers/uwsgi-2.0.23 | 2 +- metadata/md5-cache/www-servers/uwsgi-2.0.27 | 2 +- metadata/md5-cache/x11-apps/Manifest.gz | Bin 15853 -> 15854 bytes metadata/md5-cache/x11-apps/xinit-1.4.3 | 4 +- metadata/md5-cache/x11-drivers/Manifest.gz | Bin 5940 -> 5939 bytes .../x11-drivers/xf86-input-synaptics-1.10.0 | 4 +- .../x11-drivers/xf86-video-ast-1.2.0 | 4 +- metadata/md5-cache/x11-libs/Manifest.gz | Bin 25343 -> 25821 bytes .../md5-cache/x11-libs/libxkbcommon-1.8.0 | 16 + metadata/md5-cache/x11-libs/qwt-6.2.0-r4 | 16 + metadata/md5-cache/x11-libs/wxGTK-3.0.4-r6 | 16 + metadata/md5-cache/x11-misc/Manifest.gz | Bin 58821 -> 58812 bytes .../x11-misc/kronometer-2.3.70_pre20240906 | 2 +- metadata/md5-cache/x11-misc/qt5ct-1.9 | 14 + metadata/md5-cache/x11-misc/shutter-0.99.4-r1 | 16 - .../md5-cache/x11-misc/trayer-srg-1.1.8-r1 | 14 - .../md5-cache/x11-misc/trayer-srg-1.1.8-r2 | 2 +- metadata/md5-cache/x11-misc/viewglob-2.0.4-r1 | 6 +- .../md5-cache/x11-misc/xkeyboard-config-2.44 | 14 + metadata/md5-cache/x11-terms/Manifest.gz | Bin 10454 -> 9801 bytes metadata/md5-cache/x11-terms/kitty-0.35.2 | 2 +- metadata/md5-cache/x11-terms/kitty-0.38.1 | 2 +- metadata/md5-cache/x11-terms/kitty-0.39.0 | 18 - metadata/md5-cache/x11-terms/kitty-0.39.1 | 6 +- metadata/md5-cache/x11-terms/kitty-9999 | 2 +- .../x11-terms/kitty-shell-integration-0.39.0 | 10 - .../x11-terms/kitty-shell-integration-0.39.1 | 4 +- .../md5-cache/x11-terms/kitty-terminfo-0.39.0 | 11 - .../md5-cache/x11-terms/kitty-terminfo-0.39.1 | 4 +- metadata/md5-cache/x11-terms/terminator-2.1.3 | 17 - metadata/md5-cache/x11-themes/Manifest.gz | Bin 27553 -> 28030 bytes .../x11-themes/fluent-icon-theme-2025.02.10 | 15 + .../x11-themes/gtk-engines-2.20.2-r102 | 17 + .../x11-themes/gtk-engines-rezlooks-0.6-r1 | 14 - .../x11-themes/gtk-engines-rezlooks-0.6-r2 | 14 + .../x11-themes/gtk-engines-rezlooks-0.6.1 | 14 + metadata/md5-cache/x11-wm/Manifest.gz | Bin 15232 -> 15234 bytes metadata/md5-cache/x11-wm/fvwm3-1.1.1-r1 | 2 +- metadata/md5-cache/x11-wm/fvwm3-9999 | 2 +- metadata/md5-cache/xfce-base/Manifest.gz | Bin 6622 -> 6951 bytes metadata/md5-cache/xfce-base/thunar-4.20.2 | 15 + .../md5-cache/xfce-base/xfce4-settings-4.20.1 | 16 + metadata/md5-cache/xfce-extra/Manifest.gz | Bin 10020 -> 10014 bytes .../xfce-extra/thunar-shares-plugin-0.4.0 | 4 +- metadata/news/Manifest | 28 +- metadata/news/timestamp.chk | 2 +- metadata/timestamp | 2 +- metadata/timestamp.calculate | 8174 ++++++++--------- metadata/timestamp.chk | 2 +- metadata/timestamp.commit | 2 +- metadata/timestamp.x | 2 +- metadata/xml-schema/timestamp.chk | 2 +- net-analyzer/Manifest.gz | Bin 43581 -> 43577 bytes net-analyzer/firewalk/Manifest | 2 + .../firewalk/files/firewalk-5.0-signal.patch | 36 + net-analyzer/firewalk/firewalk-5.0-r3.ebuild | 42 + net-analyzer/gvm-libs/Manifest | 4 +- net-analyzer/gvm-libs/gvm-libs-22.15.0.ebuild | 124 - net-analyzer/gvm-libs/gvm-libs-22.15.1.ebuild | 124 + net-analyzer/iplog/Manifest | 2 + .../iplog/files/iplog-2.2.3-C23.patch | 36 + net-analyzer/iplog/iplog-2.2.3-r4.ebuild | 41 + net-analyzer/ippl/Manifest | 2 + .../ippl/files/ippl-1.4.14-musl.patch | 301 + net-analyzer/ippl/ippl-1.4.14-r7.ebuild | 53 + net-analyzer/isic/Manifest | 2 + .../isic/files/isic-0.07-configure.patch | 39 + net-analyzer/isic/isic-0.07-r3.ebuild | 35 + net-analyzer/nast/Manifest | 4 +- .../nast/files/0001-Fix-signal-handler.patch | 43 + .../files/0002-Fix-Wformat-security.patch | 58 + net-analyzer/nast/nast-0.2.0-r3.ebuild | 47 - net-analyzer/nast/nast-0.2.0-r4.ebuild | 49 + net-analyzer/pinger/Manifest | 4 +- ....33-interface_ncurses-fix-C23-compat.patch | 39 + ...terface_ncurses-fix-Wformat-security.patch | 60 + net-analyzer/pinger/pinger-0.33-r1.ebuild | 57 - net-analyzer/pinger/pinger-0.33-r2.ebuild | 59 + net-analyzer/vnstat/Manifest | 3 + net-analyzer/vnstat/vnstat-2.13.ebuild | 90 + net-analyzer/yersinia/Manifest | 3 +- .../yersinia/files/yersinia-0.8.2-C23.patch | 12 + .../yersinia/yersinia-0.8.2_p20221119.ebuild | 3 +- net-analyzer/zabbix/Manifest | 6 - net-analyzer/zabbix/zabbix-7.0.7.ebuild | 371 - net-analyzer/zabbix/zabbix-7.2.1.ebuild | 371 - net-dialup/Manifest.gz | Bin 5054 -> 5053 bytes net-dialup/mwavem/Manifest | 3 + net-dialup/mwavem/files/mwavem-2.0-C23.patch | 128 + .../mwavem/files/mwavem-2.0-pthread.patch | 14 + net-dialup/mwavem/mwavem-2.0-r3.ebuild | 57 + net-dns/Manifest.gz | Bin 7878 -> 7876 bytes net-dns/idnkit/Manifest | 3 +- .../idnkit-2.3-incompatible-pointers.patch | 29 + net-dns/idnkit/idnkit-2.3-r1.ebuild | 30 - net-dns/idnkit/idnkit-2.3-r2.ebuild | 32 + net-dns/pdns-recursor/Manifest | 27 - net-dns/pdns-recursor/files/pdns-recursor-r2 | 47 - .../pdns-recursor-5.0.9-r1.ebuild | 134 - net-dns/pdns/Manifest | 4 +- net-dns/pdns/pdns-4.9.2.ebuild | 165 - net-dns/pdns/pdns-4.9.4.ebuild | 165 + net-im/Manifest.gz | Bin 8924 -> 8429 bytes net-im/dianara/Manifest | 3 - net-im/dianara/dianara-1.4.2.ebuild | 43 - net-im/dianara/metadata.xml | 9 - net-im/discord/Manifest | 4 +- ...rd-0.0.84.ebuild => discord-0.0.85.ebuild} | 0 net-im/fractal/Manifest | 5 +- net-im/fractal/fractal-10-r1.ebuild | 123 + net-im/fractal/fractal-10.1.ebuild | 102 + net-im/fractal/fractal-10.ebuild | 122 - net-im/mattermost-desktop-bin/Manifest | 9 +- ...d => mattermost-desktop-bin-5.11.0.ebuild} | 0 .../mattermost-desktop-bin-5.9.2.ebuild | 95 - net-im/neochat/Manifest | 2 - net-im/neochat/neochat-24.12.1.ebuild | 66 - net-im/psi/Manifest | 5 - net-im/psi/metadata.xml | 29 - net-im/psi/psi-1.5-r2.ebuild | 119 - net-im/psi/psi-9999.ebuild | 163 - net-im/psimedia/Manifest | 2 - net-im/psimedia/metadata.xml | 18 - net-im/psimedia/psimedia-9999.ebuild | 41 - net-im/synapse/Manifest | 4 + net-im/synapse/synapse-1.124.0.ebuild | 229 + net-im/telegram-desktop-bin/Manifest | 6 +- ...ild => telegram-desktop-bin-5.10.7.ebuild} | 0 net-im/tokodon/Manifest | 2 - net-im/tokodon/tokodon-24.12.1.ebuild | 58 - net-irc/Manifest.gz | Bin 7909 -> 7909 bytes net-irc/ergo/Manifest | 6 +- net-irc/ergo/ergo-2.13.0.ebuild | 78 - net-irc/ergo/ergo-2.13.1.ebuild | 78 - net-irc/ergo/ergo-2.15.0.ebuild | 78 + net-irc/inspircd/Manifest | 3 - net-irc/inspircd/inspircd-4.2.0.ebuild | 113 - net-irc/iroffer-dinoex/Manifest | 6 +- .../iroffer-dinoex-3.32-r2.ebuild | 118 - .../iroffer-dinoex-3.32-r3.ebuild | 118 + .../iroffer-dinoex/iroffer-dinoex-3.33.ebuild | 118 + net-irc/iroffer-dinoex/metadata.xml | 3 + net-irc/irssi/Manifest | 3 - ...-1.4.4-fix-usage-of-type-in-ExtUtils.patch | 43 - net-irc/irssi/irssi-1.4.4-r1.ebuild | 72 - net-irc/konversation/Manifest | 2 - .../konversation/konversation-24.12.1.ebuild | 71 - net-libs/Manifest.gz | Bin 30635 -> 30653 bytes net-libs/davix/Manifest | 5 +- ...davix-0.8.9.ebuild => davix-0.8.10.ebuild} | 0 net-libs/davix/davix-9999.ebuild | 92 + net-libs/gnutls/Manifest | 3 + net-libs/gnutls/gnutls-3.8.9.ebuild | 161 + net-libs/libktorrent/Manifest | 2 - .../libktorrent/libktorrent-24.12.1.ebuild | 66 - net-libs/libnpupnp/Manifest | 4 +- net-libs/libnpupnp/libnpupnp-6.1.3.ebuild | 22 - net-libs/libnpupnp/libnpupnp-6.2.0.ebuild | 4 +- net-libs/libquotient/Manifest | 2 +- net-libs/libquotient/libquotient-0.9.2.ebuild | 2 +- net-libs/nodejs/Manifest | 2 +- net-libs/nodejs/nodejs-22.13.1.ebuild | 2 +- net-libs/xdp-tools/Manifest | 2 +- net-libs/xdp-tools/xdp-tools-1.4.3.ebuild | 2 +- net-mail/Manifest.gz | Bin 14412 -> 14405 bytes net-mail/automx2/Manifest | 2 +- net-mail/automx2/automx2-2025.1.ebuild | 2 +- net-misc/Manifest.gz | Bin 54184 -> 53638 bytes net-misc/anydesk/Manifest | 4 +- net-misc/anydesk/anydesk-6.3.2.ebuild | 102 - net-misc/anydesk/anydesk-6.4.0.ebuild | 99 + net-misc/asterisk/Manifest | 21 +- net-misc/asterisk/asterisk-18.25.0.ebuild | 371 - net-misc/asterisk/asterisk-18.26.0.ebuild | 375 - net-misc/asterisk/asterisk-18.26.1.ebuild | 375 + net-misc/asterisk/asterisk-20.10.0-r1.ebuild | 371 - net-misc/asterisk/asterisk-20.11.0.ebuild | 371 - net-misc/asterisk/asterisk-20.11.1.ebuild | 371 + net-misc/asterisk/asterisk-21.6.0.ebuild | 358 - net-misc/asterisk/asterisk-21.6.1.ebuild | 358 + net-misc/asterisk/asterisk-22.0.0-r1.ebuild | 358 - net-misc/asterisk/asterisk-22.1.0.ebuild | 358 - net-misc/asterisk/asterisk-22.1.1.ebuild | 358 + net-misc/curl/Manifest | 2 + net-misc/curl/curl-8.12.0-r1.ebuild | 389 + net-misc/curl/files/curl-8.12.0-multi.patch | 136 + net-misc/dhcpcd/Manifest | 14 +- net-misc/dhcpcd/dhcpcd-10.0.10.ebuild | 172 - net-misc/dhcpcd/dhcpcd-10.0.6-r2.ebuild | 170 - net-misc/dhcpcd/dhcpcd-10.0.6-r3.ebuild | 178 - net-misc/dhcpcd/dhcpcd-10.0.8.ebuild | 176 - net-misc/dhcpcd/dhcpcd-10.1.0-r1.ebuild | 173 + net-misc/dhcpcd/dhcpcd-10.2.0.ebuild | 173 + .../dhcpcd/files/dhcpcd-10.0.6-crash.patch | 46 - .../files/dhcpcd-10.0.6-rebinding.patch | 46 - .../dhcpcd-10.1.0-seccomp-glibc-2.41.patch | 28 + .../files/dhcpcd-10.2.0-no-ipv6-build.patch | 110 + net-misc/ethflop/Manifest.gz | Bin 1410 -> 0 bytes .../files/ethflop-20240916-makefile.patch | 11 - net-misc/ethflop/files/ethflopd.confd | 8 - net-misc/ethflop/files/ethflopd.initd | 11 - net-misc/ethflop/files/ethflopd.service-r1 | 10 - net-misc/ethflop/metadata.xml | 22 - net-misc/fatrat/Manifest | 5 - .../fatrat-1.2.0_beta2_p20161204.ebuild | 75 - .../fatrat-1.2.0_beta2_p20150803-build.patch | 13 - ...fatrat-1.2.0_beta2_p20161204-qt-5.15.patch | 12 - net-misc/fatrat/metadata.xml | 11 - net-misc/kio-zeroconf-common/Manifest | 2 - .../kio-zeroconf-common-24.12.1.ebuild | 24 - net-misc/kio-zeroconf/Manifest | 2 - .../kio-zeroconf/kio-zeroconf-24.12.1.ebuild | 39 - net-misc/lyricwikia/Manifest | 5 - .../lyricwikia-0.1.11-skip-online-test.patch | 14 - .../lyricwikia/lyricwikia-0.1.11-r1.ebuild | 48 - .../lyricwikia/lyricwikia-0.1.11-r2.ebuild | 48 - net-misc/lyricwikia/metadata.xml | 13 - net-misc/memcached/Manifest | 4 +- net-misc/memcached/memcached-1.6.27.ebuild | 4 + net-misc/memcached/memcached-1.6.31.ebuild | 6 +- net-misc/nx/Manifest | 5 +- .../nx/files/nx-3.5.99.26-gcc14-access.patch | 28 + net-misc/nx/nx-3.5.99.26.ebuild | 3 +- net-misc/nx/nx-3.5.99.27.ebuild | 1 + net-misc/scponly/Manifest | 5 +- net-misc/scponly/files/scponly-4.8-C23.patch | 26 + net-misc/scponly/metadata.xml | 1 + net-misc/scponly/scponly-4.8-r8.ebuild | 245 - net-misc/scponly/scponly-4.8-r9.ebuild | 252 + net-misc/smb4k/Manifest | 2 + net-misc/smb4k/smb4k-4.0.0.ebuild | 77 + net-misc/smbc/Manifest | 4 +- .../smbc/files/0001-Fix-signal-handlers.patch | 104 + .../files/0002-Fix-Wformat-security.patch | 150 + net-misc/smbc/smbc-1.2.2-r3.ebuild | 49 - net-misc/smbc/smbc-1.2.2-r4.ebuild | 54 + net-misc/tigervnc-xorg-module/Manifest | 2 +- ...ild => tigervnc-xorg-module-1.15.0.ebuild} | 0 net-misc/tigervnc/Manifest | 4 +- ...-1.14.90.ebuild => tigervnc-1.15.0.ebuild} | 0 net-misc/turbovnc/Manifest | 11 +- net-misc/turbovnc/metadata.xml | 1 + net-misc/turbovnc/turbovnc-3.1.3.ebuild | 147 - net-misc/turbovnc/turbovnc-3.1.4.ebuild | 147 + net-misc/turbovnc/turbovnc-3.2_beta1.ebuild | 167 + net-misc/zssh/Manifest | 3 +- net-misc/zssh/files/zssh-1.5c-C23.patch | 178 + net-misc/zssh/zssh-1.5c-r2.ebuild | 45 - net-misc/zssh/zssh-1.5c-r3.ebuild | 50 + net-news/Manifest.gz | Bin 2219 -> 2220 bytes net-news/alligator/Manifest | 2 - net-news/alligator/alligator-24.12.1.ebuild | 29 - net-news/sfeed/Manifest | 2 +- net-news/sfeed/sfeed-2.1.ebuild | 2 +- net-nntp/Manifest.gz | Bin 1369 -> 1374 bytes net-nntp/leafnode/Manifest | 5 +- .../files/leafnode-1.11.11-configure.patch | 12 + net-nntp/leafnode/leafnode-1.11.11-r1.ebuild | 49 - net-nntp/leafnode/leafnode-1.11.11-r2.ebuild | 62 + net-nntp/leafnode/leafnode-1.12.0-r1.ebuild | 57 + net-nntp/leafnode/leafnode-1.12.0.ebuild | 46 - net-nntp/slrn/Manifest | 2 +- net-nntp/slrn/slrn-1.0.3-r2.ebuild | 6 +- net-p2p/Manifest.gz | Bin 6283 -> 6265 bytes net-p2p/bitcoin-core/Manifest | 2 +- net-p2p/bitcoin-core/bitcoin-core-28.1.ebuild | 2 +- net-p2p/go-ethereum/Manifest | 4 + .../go-ethereum/go-ethereum-1.14.13.ebuild | 52 + net-p2p/go-ethereum/go-ethereum-1.15.1.ebuild | 51 + net-p2p/gtk-gnutella/Manifest | 4 +- .../gtk-gnutella/gtk-gnutella-1.2.2-r1.ebuild | 8 +- .../gtk-gnutella/gtk-gnutella-1.2.3.ebuild | 8 +- net-p2p/ktorrent/Manifest | 2 - net-p2p/ktorrent/ktorrent-24.12.1.ebuild | 91 - net-p2p/mktorrent/Manifest | 3 +- .../mktorrent-1.1_p20210130-r1.ebuild | 2 +- .../mktorrent/mktorrent-1.1_p20210130.ebuild | 45 - net-print/Manifest.gz | Bin 6419 -> 6421 bytes net-print/libinklevel/Manifest | 5 +- .../libinklevel-0.9.7-disable-docs.patch | 16 + .../libinklevel/libinklevel-0.9.3.ebuild | 4 +- .../libinklevel/libinklevel-0.9.7.ebuild | 41 + net-proxy/Manifest.gz | Bin 5547 -> 5547 bytes net-proxy/squidguard/Manifest | 4 +- .../files/squidguard-1.6.0-C23.patch | 37 + .../files/squidguard-1.6.0-stdlib.patch | 40 +- .../squidguard/squidguard-1.6.0-r2.ebuild | 104 + net-vpn/Manifest.gz | Bin 8234 -> 8231 bytes net-vpn/pptpd/Manifest | 2 + net-vpn/pptpd/files/pptpd-1.4.0-logwtmp.patch | 25 + net-vpn/pptpd/pptpd-1.4.0-r5.ebuild | 83 + net-vpn/tailscale/Manifest | 3 + net-vpn/tailscale/tailscale-1.80.1.ebuild | 63 + net-wireless/Manifest.gz | Bin 13882 -> 13884 bytes net-wireless/iwd/Manifest | 2 + net-wireless/iwd/iwd-3.4.ebuild | 167 + profiles/Manifest.gz | Bin 238123 -> 238754 bytes profiles/arch/amd64/package.use.mask | 5 - profiles/arch/amd64/package.use.stable.mask | 8 + profiles/arch/base/package.use.mask | 5 - profiles/arch/base/package.use.stable.mask | 6 +- profiles/arch/loong/package.use.mask | 5 - profiles/arch/mips/package.use.mask | 2 +- profiles/arch/x86/package.use.mask | 5 - profiles/arch/x86/package.use.stable.mask | 4 + profiles/base/package.use.mask | 10 + .../default/linux/amd64/23.0/musl/llvm/parent | 2 +- .../amd64/23.0/split-usr/musl/llvm/parent | 2 +- .../default/linux/arm64/23.0/musl/llvm/parent | 2 +- .../arm64/23.0/split-usr/musl/llvm/parent | 2 +- profiles/default/linux/package.mask | 6 + profiles/default/linux/packages.build | 1 + profiles/desc/cpu_flags_arm.desc | 3 +- profiles/features/musl/llvm/eapi | 1 + profiles/features/musl/llvm/package.mask | 10 + profiles/features/musl/llvm/parent | 2 + profiles/package.mask | 162 +- profiles/use.local.desc | 51 +- sci-astronomy/Manifest.gz | Bin 6194 -> 6193 bytes sci-astronomy/calcmysky/Manifest | 2 +- .../calcmysky/calcmysky-0.3.3-r1.ebuild | 2 +- sci-astronomy/stellarium/Manifest | 2 +- .../stellarium/stellarium-24.4.ebuild | 4 +- sci-biology/Manifest.gz | Bin 19010 -> 19019 bytes sci-biology/augustus/Manifest | 6 +- sci-biology/augustus/augustus-3.4.0-r3.ebuild | 6 +- sci-biology/augustus/augustus-3.5.0.ebuild | 94 + .../augustus-3.4.0-missing-cstdint.patch | 39 + .../files/augustus-3.5.0-fix-gcc15.patch | 20 + sci-chemistry/Manifest.gz | Bin 8220 -> 8219 bytes sci-chemistry/gperiodic/Manifest | 2 + ...periodic-3.0.3-incompatible-pointers.patch | 13 + .../gperiodic/gperiodic-3.0.3-r1.ebuild | 47 + sci-electronics/Manifest.gz | Bin 8704 -> 8708 bytes sci-electronics/gazebo/Manifest | 8 - sci-electronics/gazebo/files/boost.patch | 49 - sci-electronics/gazebo/files/boost186.patch | 23 - sci-electronics/gazebo/files/gv10.patch | 45 - sci-electronics/gazebo/files/protobuf.patch | 226 - sci-electronics/gazebo/gazebo-11.13.0.ebuild | 84 - sci-electronics/gazebo/gazebo-11.14.0.ebuild | 86 - sci-geosciences/Manifest.gz | Bin 7711 -> 7705 bytes sci-geosciences/harmonics-dwf-free/Manifest | 2 + .../harmonics-dwf-free-20241229.ebuild | 20 + sci-geosciences/tcd-utils/Manifest | 2 + .../tcd-utils/tcd-utils-20240222.ebuild | 15 + sci-libs/Manifest.gz | Bin 43350 -> 43343 bytes sci-libs/armadillo/Manifest | 2 + sci-libs/armadillo/armadillo-14.2.3.ebuild | 132 + sci-libs/fplll/Manifest | 2 - sci-libs/fplll/fplll-5.4.5.ebuild | 29 - sci-libs/gdal/Manifest | 20 +- sci-libs/gdal/files/gdal-3.7.0-zlib-OF.patch | 51 - sci-libs/gdal/files/gdal-3.8.0-java21.patch | 20 - .../files/gdal-3.8.0-libxml2-2.12-1.patch | 22 - .../files/gdal-3.8.0-libxml2-2.12-2.patch | 27 - .../files/gdal-3.8.5-poppler-24.05.0.patch | 23 - .../gdal/files/gdal-3.9.3-poppler-25.02.patch | 240 + .../gdal-3.9.3-poppler-autotest-25.02.patch | 23 + sci-libs/gdal/gdal-3.8.0-r1.ebuild | 288 - sci-libs/gdal/gdal-3.8.5.ebuild | 287 - sci-libs/gdal/gdal-3.9.0.ebuild | 286 - sci-libs/gdal/gdal-3.9.1-r1.ebuild | 288 - sci-libs/gdal/gdal-3.9.3.ebuild | 289 + sci-libs/hipBLAS-common/Manifest | 2 + .../hipBLAS-common-6.3.2.ebuild | 16 + sci-libs/hipBLAS/Manifest | 6 +- sci-libs/hipBLAS/hipBLAS-5.1.3.ebuild | 44 - sci-libs/hipBLAS/hipBLAS-5.4.2.ebuild | 35 - sci-libs/hipBLAS/hipBLAS-6.3.2.ebuild | 46 + sci-libs/hipBLASLt/Manifest | 2 + sci-libs/hipBLASLt/hipBLASLt-6.3.2.ebuild | 140 + sci-libs/hipCUB/Manifest | 5 +- .../hipCUB-4.3.0-add-memory-header.patch | 12 - sci-libs/hipCUB/hipCUB-5.1.3.ebuild | 71 - sci-libs/hipCUB/hipCUB-6.3.2.ebuild | 58 + sci-libs/hipFFT/Manifest | 6 +- ...ipFFT-5.1.3-gentoo-install-locations.patch | 29 - .../files/hipFFT-5.1.3_hip-config.patch | 90 - sci-libs/hipFFT/hipFFT-5.1.3-r1.ebuild | 44 - sci-libs/hipFFT/hipFFT-6.3.2.ebuild | 40 + sci-libs/hipRAND/Manifest | 4 +- sci-libs/hipRAND/hipRAND-5.6.0-r1.ebuild | 35 - sci-libs/hipRAND/hipRAND-6.3.2.ebuild | 38 + sci-libs/hipSOLVER/Manifest | 2 + sci-libs/hipSOLVER/hipSOLVER-6.3.2.ebuild | 49 + sci-libs/hipSPARSE/Manifest | 3 - ...ARSE-5.0.2-remove-matrices-unpacking.patch | 126 - sci-libs/hipSPARSE/hipSPARSE-5.1.3-r1.ebuild | 99 - sci-libs/mc/Manifest | 3 +- sci-libs/mc/files/mc-1.5-missing-decl.patch | 13 + sci-libs/mc/mc-1.5-r1.ebuild | 83 + sci-libs/mc/mc-1.5.ebuild | 82 - sci-libs/miopen/Manifest | 8 +- .../miopen-5.0.2-strip-xnack-in-flags.patch | 20 - ...oid-metadata-error-for-vanilla-clang.patch | 183 - .../miopen-5.1.3-deprecate-clang-ocl.patch | 55 - .../miopen/files/miopen-5.1.3-gfx1031.patch | 375 - sci-libs/miopen/miopen-5.1.3-r1.ebuild | 110 - sci-libs/miopen/miopen-6.3.2.ebuild | 134 + sci-libs/pgplot/Manifest | 2 + sci-libs/pgplot/files/pgplot-C99.patch | 331 + sci-libs/pgplot/pgplot-5.2.2-r9.ebuild | 177 + sci-libs/rocBLAS/Manifest | 13 +- ...cBLAS-4.3.0-fix-glibc-2.32-and-above.patch | 25 - ...2-change-default-Tensile-library-dir.patch | 47 - .../rocBLAS-5.0.2-cpp_lib_filesystem.patch | 50 - .../rocBLAS-5.0.2-unbundle-Tensile.patch | 25 - .../rocBLAS-5.4.2-unbundle-Tensile.patch | 26 - sci-libs/rocBLAS/rocBLAS-5.1.3-r4.ebuild | 114 - sci-libs/rocBLAS/rocBLAS-5.4.2-r3.ebuild | 107 - sci-libs/rocBLAS/rocBLAS-6.3.2.ebuild | 127 + sci-libs/rocFFT/Manifest | 8 +- .../rocFFT-4.2.0-add-functional-header.patch | 12 - .../files/rocFFT-5.0.2-add-math-header.patch | 12 - .../rocFFT-5.1.3-add-stdexcept-header.patch | 11 - .../files/rocFFT-5.1.3-unbundle-sqlite.patch | 67 - sci-libs/rocFFT/rocFFT-5.1.3-r1.ebuild | 145 - sci-libs/rocFFT/rocFFT-6.3.2.ebuild | 151 + sci-libs/rocPRIM/Manifest | 4 +- sci-libs/rocPRIM/rocPRIM-5.1.3.ebuild | 74 - sci-libs/rocPRIM/rocPRIM-6.3.2.ebuild | 70 + sci-libs/rocRAND/Manifest | 9 +- .../files/rocRAND-5.1.3_no-symlink.patch | 38 - .../files/rocRAND-5.1.3_stdint-gcc13.patch | 33 - sci-libs/rocRAND/rocRAND-5.1.3.ebuild | 79 - sci-libs/rocRAND/rocRAND-5.6.0-r1.ebuild | 63 - sci-libs/rocRAND/rocRAND-6.3.2.ebuild | 65 + sci-libs/rocSOLVER/Manifest | 9 +- .../rocSOLVER-4.2.0-add-stdint-header.patch | 12 - .../files/rocSOLVER-5.0.2-libfmt8.patch | 173 - .../files/rocSOLVER-5.4.2-libfmt9.patch | 34 - sci-libs/rocSOLVER/rocSOLVER-5.1.3-r1.ebuild | 78 - sci-libs/rocSOLVER/rocSOLVER-5.4.2.ebuild | 68 - sci-libs/rocSOLVER/rocSOLVER-6.3.2.ebuild | 70 + sci-libs/rocSPARSE/Manifest | 7 +- .../rocSPARSE-5.0.2-enable-gfx1031.patch | 13 - ...SPARSE-5.0.2-remove-incorrect-assert.patch | 34 - ...ARSE-5.0.2-remove-matrices-unpacking.patch | 42 - sci-libs/rocSPARSE/rocSPARSE-5.1.3-r1.ebuild | 136 - sci-libs/rocSPARSE/rocSPARSE-6.3.2.ebuild | 123 + sci-libs/rocThrust/Manifest | 4 +- sci-libs/rocThrust/rocThrust-5.1.3.ebuild | 74 - sci-libs/rocThrust/rocThrust-6.3.2.ebuild | 72 + sci-libs/rocWMMA/Manifest | 2 + sci-libs/rocWMMA/rocWMMA-6.3.2.ebuild | 74 + sci-libs/superlu/Manifest | 2 +- sci-libs/superlu/superlu-4.3-r3.ebuild | 86 - sci-libs/superlu/superlu-4.3-r4.ebuild | 87 + sci-libs/transformers/Manifest | 2 + .../transformers/transformers-4.47.1.ebuild | 117 + sci-mathematics/4ti2/4ti2-1.6.10.ebuild | 47 + sci-mathematics/4ti2/Manifest | 4 + .../4ti2/files/4ti2-1.6.10-slibtool.patch | 78 + sci-mathematics/Manifest.gz | Bin 19532 -> 19533 bytes sci-mathematics/coq/Manifest | 6 +- sci-mathematics/coq/coq-8.17.1.ebuild | 122 + sci-mathematics/coq/coq-8.19.2.ebuild | 4 +- sci-mathematics/coq/coq-8.20.0.ebuild | 4 +- sci-mathematics/easycrypt/Manifest | 2 - .../easycrypt/easycrypt-2024.01-r1.ebuild | 50 - sci-mathematics/manifold/Manifest | 2 +- .../manifold/manifold-3.0.1.ebuild | 2 +- sci-mathematics/why3-for-spark/Manifest | 3 +- .../why3-for-spark-2023.12.13-spark.patch | 11 + .../why3-for-spark-2023.12.13-r2.ebuild | 129 + .../why3-for-spark-2023.12.13.ebuild | 127 - sci-physics/Manifest.gz | Bin 4201 -> 4201 bytes sci-physics/root/Manifest | 12 +- sci-physics/root/metadata.xml | 1 - sci-physics/root/root-6.30.08.ebuild | 344 - sci-physics/root/root-6.32.06.ebuild | 331 - sci-physics/root/root-6.32.08.ebuild | 331 - sci-physics/root/root-6.32.10.ebuild | 331 + sci-physics/root/root-6.34.04.ebuild | 326 + sci-physics/yoda/Manifest | 2 +- sci-physics/yoda/yoda-9999.ebuild | 5 + sci-visualization/Manifest.gz | Bin 4352 -> 4344 bytes sci-visualization/gle/Manifest | 3 + sci-visualization/gle/gle-4.3.5.ebuild | 89 + sci-visualization/gwyddion/Manifest | 2 + .../gwyddion/gwyddion-2.67.ebuild | 89 + sec-keys/Manifest.gz | Bin 28264 -> 28428 bytes sec-keys/openpgp-keys-apache-tomcat/Manifest | 10 +- .../openpgp-keys-apache-tomcat-10.1.34.ebuild | 4 +- .../openpgp-keys-apache-tomcat-10.1.35.ebuild | 19 + .../openpgp-keys-apache-tomcat-11.0.3.ebuild | 19 + .../openpgp-keys-apache-tomcat-9.0.98.ebuild | 4 +- .../openpgp-keys-apache-tomcat-9.0.99.ebuild | 19 + .../openpgp-keys-gentoo-developers/Manifest | 2 + ...pgp-keys-gentoo-developers-20250203.ebuild | 236 + sec-keys/openpgp-keys-libtasn1/Manifest | 5 + .../openpgp-keys-libtasn1-20250209.ebuild | 25 + sec-keys/openpgp-keys-nicholaswilson/Manifest | 3 + .../openpgp-keys-nicholaswilson/metadata.xml | 9 + ...penpgp-keys-nicholaswilson-20250209.ebuild | 22 + sys-apps/Manifest.gz | Bin 51506 -> 51542 bytes sys-apps/amdgpu_top/Manifest | 76 + sys-apps/amdgpu_top/amdgpu_top-0.10.3.ebuild | 499 + sys-apps/apparmor/Manifest | 3 +- sys-apps/apparmor/apparmor-3.1.4-r2.ebuild | 95 + sys-apps/apparmor/apparmor-3.1.4.ebuild | 94 - .../apparmor-3.1.4-fix-hardcoded-path.patch | 34 + sys-apps/audio-entropyd/Manifest | 4 +- .../audio-entropyd-2.0.3-r1.ebuild | 45 - .../audio-entropyd-2.0.3-r2.ebuild | 45 + .../files/audio-entropyd-2.0.1-uclibc.patch | 27 - ...entropyd-2.0.3-incompatible-pointers.patch | 14 + sys-apps/bat/Manifest | 118 + sys-apps/bat/bat-0.25.0.ebuild | 282 + sys-apps/checkpolicy/Manifest | 2 + sys-apps/checkpolicy/checkpolicy-3.8.ebuild | 53 + sys-apps/dbus/Manifest | 3 + sys-apps/dbus/dbus-1.16.0.ebuild | 221 + .../files/dbus-1.16.0-enable-elogind.patch | 103 + sys-apps/diffutils/Manifest | 2 +- sys-apps/diffutils/diffutils-3.11-r1.ebuild | 61 + sys-apps/diffutils/diffutils-3.11.ebuild | 58 - sys-apps/ed/Manifest | 2 +- sys-apps/ed/ed-1.20.2.ebuild | 4 +- sys-apps/gawk/Manifest | 2 +- sys-apps/gawk/gawk-5.3.1.ebuild | 27 - sys-apps/iproute2/Manifest | 7 +- sys-apps/iproute2/iproute2-6.11.0.ebuild | 214 - sys-apps/iproute2/iproute2-6.13.0.ebuild | 213 + sys-apps/iproute2/iproute2-6.9.0.ebuild | 213 - sys-apps/iproute2/iproute2-9999.ebuild | 3 +- sys-apps/mawk/Manifest | 4 +- sys-apps/mawk/mawk-1.3.4_p20240905.ebuild | 14 +- sys-apps/mawk/mawk-1.3.4_p20250131.ebuild | 12 - sys-apps/mcstrans/Manifest | 4 +- sys-apps/mcstrans/mcstrans-3.7-r1.ebuild | 4 +- sys-apps/mcstrans/mcstrans-3.8.ebuild | 51 + sys-apps/memtest86-bin/Manifest | 4 +- .../memtest86-bin/memtest86-bin-11.1.ebuild | 46 - .../memtest86-bin/memtest86-bin-11.2.ebuild | 46 + sys-apps/nawk/Manifest | 4 +- sys-apps/nawk/nawk-20230909-r1.ebuild | 16 +- sys-apps/nawk/nawk-20250116.ebuild | 43 + sys-apps/pandora_box/Manifest | 19 +- .../pandora_box/pandora_box-0.12.0-r1.ebuild | 134 - .../pandora_box/pandora_box-0.13.0.ebuild | 122 + .../pandora_box/pandora_box-0.14.0-r1.ebuild | 122 + sys-apps/pcsc-tools/Manifest | 2 + sys-apps/pcsc-tools/pcsc-tools-1.7.2.ebuild | 67 + sys-apps/pkgcore/Manifest | 2 +- sys-apps/pkgcore/pkgcore-0.12.29.ebuild | 2 +- sys-apps/policycoreutils/Manifest | 6 +- .../policycoreutils-3.7.ebuild | 4 +- .../policycoreutils-3.8.ebuild | 168 + .../policycoreutils-9999.ebuild | 4 +- sys-apps/pv/Manifest | 3 + sys-apps/pv/pv-1.9.31.ebuild | 59 + sys-apps/restorecond/Manifest | 4 +- sys-apps/restorecond/restorecond-3.7.ebuild | 4 +- sys-apps/restorecond/restorecond-3.8.ebuild | 53 + sys-apps/s6-linux-init/Manifest | 2 +- .../s6-linux-init-1.1.2.1.ebuild | 4 +- sys-apps/s6-linux-utils/Manifest | 2 +- .../s6-linux-utils-2.6.2.1.ebuild | 4 +- sys-apps/s6-portable-utils/Manifest | 2 +- .../s6-portable-utils-2.3.0.4.ebuild | 4 +- sys-apps/s6-rc/Manifest | 2 +- sys-apps/s6-rc/s6-rc-0.5.5.0.ebuild | 4 +- sys-apps/s6/Manifest | 2 +- sys-apps/s6/s6-2.13.1.0.ebuild | 4 +- sys-apps/secilc/Manifest | 4 +- sys-apps/secilc/secilc-3.7.ebuild | 4 +- sys-apps/secilc/secilc-3.8.ebuild | 37 + sys-apps/selinux-python/Manifest | 6 +- .../selinux-python-3.7-r1.ebuild | 4 +- .../selinux-python/selinux-python-3.8.ebuild | 117 + .../selinux-python/selinux-python-9999.ebuild | 4 +- sys-apps/semodule-utils/Manifest | 4 +- .../semodule-utils/semodule-utils-3.7.ebuild | 4 +- .../semodule-utils/semodule-utils-3.8.ebuild | 42 + sys-apps/syd/Manifest | 44 +- sys-apps/syd/syd-3.30.0.ebuild | 328 - sys-apps/syd/syd-3.31.0.ebuild | 336 + sys-apps/syd/syd-3.32.1.ebuild | 336 + sys-apps/systemd-utils/Manifest | 2 +- .../systemd-utils/systemd-utils-254.22.ebuild | 4 +- sys-apps/sysvinit/Manifest | 3 + sys-apps/sysvinit/sysvinit-3.14.ebuild | 184 + sys-apps/tuned/Manifest | 2 + sys-apps/tuned/tuned-2.25.1.ebuild | 70 + sys-apps/usbredir/Manifest | 2 + sys-apps/usbredir/usbredir-0.15.0.ebuild | 41 + sys-apps/which/Manifest | 2 + sys-apps/which/which-2.23.ebuild | 20 + sys-auth/Manifest.gz | Bin 9263 -> 9266 bytes sys-auth/google-authenticator/Manifest | 2 + .../google-authenticator-1.11.ebuild | 51 + sys-auth/nss-pam-ldapd/Manifest | 2 + .../nss-pam-ldapd/nss-pam-ldapd-0.9.13.ebuild | 171 + sys-auth/pam_mysql/Manifest | 4 +- sys-auth/pam_mysql/metadata.xml | 1 + sys-auth/pam_mysql/pam_mysql-0.8.2-r1.ebuild | 47 - sys-auth/pam_mysql/pam_mysql-0.8.2-r2.ebuild | 51 + sys-block/Manifest.gz | Bin 10891 -> 10887 bytes sys-block/endpoint/Manifest | 4 +- sys-block/endpoint/endpoint-0.1.0-r1.ebuild | 31 - sys-block/endpoint/endpoint-0.1.0-r2.ebuild | 33 + .../endpoint/files/endpoint-0.1.0-ar.patch | 32 + .../files/endpoint-0.1.0-impl-exit.patch | 12 + sys-block/mbuffer/Manifest | 2 +- sys-block/mbuffer/mbuffer-20241007.ebuild | 2 +- sys-block/partitionmanager/Manifest | 2 - .../partitionmanager-24.12.1.ebuild | 36 - sys-devel/Manifest.gz | Bin 6222 -> 6224 bytes sys-devel/binutils-hppa64/Manifest | 8 +- .../binutils-hppa64-2.42-r2.ebuild | 4 +- .../binutils-hppa64-2.43-r2.ebuild | 4 +- .../binutils-hppa64-2.44.ebuild | 2 +- .../binutils-hppa64-9999.ebuild | 2 +- sys-devel/binutils/Manifest | 12 +- sys-devel/binutils/binutils-2.42-r2.ebuild | 4 +- sys-devel/binutils/binutils-2.43-r2.ebuild | 2 +- sys-devel/binutils/binutils-2.43.9999.ebuild | 2 +- sys-devel/binutils/binutils-2.44.9999.ebuild | 2 +- sys-devel/binutils/binutils-2.44.ebuild | 2 +- sys-devel/binutils/binutils-9999.ebuild | 2 +- sys-devel/dev86/Manifest | 7 +- sys-devel/dev86/dev86-0.16.21-r3.ebuild | 11 +- sys-devel/dev86/dev86-1.0.1.ebuild | 69 + .../dev86/files/dev86-1.0.1-makefile.patch | 66 + sys-devel/dev86/metadata.xml | 1 + sys-devel/gcc/Manifest | 10 + sys-devel/gcc/gcc-12.4.1_p20250206.ebuild | 65 + sys-devel/gcc/gcc-13.3.1_p20250207.ebuild | 66 + sys-devel/gcc/gcc-14.2.1_p20250208.ebuild | 54 + sys-devel/gcc/gcc-15.0.1_pre20250209.ebuild | 53 + sys-devel/gettext/Manifest | 8 +- sys-devel/gettext/gettext-0.22.5-r1.ebuild | 4 +- sys-devel/gettext/gettext-0.23.1.ebuild | 199 + sys-devel/gettext/gettext-0.23.ebuild | 200 - sys-devel/multilib-gcc-wrapper/Manifest | 2 +- .../multilib-gcc-wrapper-0-r2.ebuild | 4 +- sys-devel/patch/Manifest | 6 +- ...patch-2.7.6-ndebug-assert-hash-table.patch | 3 + sys-devel/patch/patch-2.7.6_p20250206.ebuild | 2 +- sys-devel/patch/patch-9999.ebuild | 11 +- sys-devel/smatch/Manifest | 9 +- sys-devel/smatch/files/smatch-1.72-C23.patch | 20 + .../smatch-1.72-function-prototype.patch | 54 + .../smatch/files/smatch-1.72-make-deps.patch | 14 + sys-devel/smatch/smatch-1.72-r2.ebuild | 74 + sys-devel/smatch/smatch-1.72.ebuild | 69 - sys-devel/smatch/smatch-1.73-r1.ebuild | 73 + sys-devel/smatch/smatch-9999.ebuild | 12 +- sys-firmware/Manifest.gz | Bin 4398 -> 4398 bytes sys-firmware/edk2-bin/Manifest | 2 +- sys-firmware/edk2-bin/edk2-bin-202408.ebuild | 2 +- sys-firmware/edk2/Manifest | 6 +- sys-firmware/edk2/edk2-202405.ebuild | 162 - sys-firmware/edk2/edk2-202408.ebuild | 2 +- sys-firmware/intel-microcode/Manifest | 6 +- .../intel-microcode-20240813_p20240815.ebuild | 338 - .../intel-microcode-20250211_p20250211.ebuild | 338 + sys-fs/Manifest.gz | Bin 22216 -> 22224 bytes sys-fs/bcachefs-tools/Manifest | 3 + .../bcachefs-tools-1.20.0.ebuild | 230 + sys-fs/e2tools/Manifest | 4 +- sys-fs/e2tools/e2tools-0.1.2.ebuild | 22 + sys-fs/e2tools/metadata.xml | 2 +- sys-fs/exfatprogs/Manifest | 6 +- sys-fs/exfatprogs/exfatprogs-1.2.5.ebuild | 26 - sys-fs/exfatprogs/exfatprogs-1.2.7.ebuild | 26 + sys-fs/exfatprogs/exfatprogs-9999.ebuild | 4 +- sys-fs/lxcfs/Manifest | 3 - sys-fs/lxcfs/lxcfs-6.0.2.ebuild | 80 - sys-fs/mdadm/Manifest | 10 +- .../mdadm-4.3-do-not-call-gcc-directly.patch | 53 + .../mdadm/files/mdadm-4.3-musl-basename.patch | 19 + .../mdadm/files/mdadm-4.3-musl-include.patch | 14 + sys-fs/mdadm/mdadm-4.3-r1.ebuild | 7 +- sys-fs/mdadm/mdadm-4.4.ebuild | 122 + sys-fs/mdadm/metadata.xml | 1 + sys-kernel/Manifest.gz | Bin 5410 -> 5401 bytes sys-kernel/dracut/Manifest | 3 +- sys-kernel/dracut/dracut-106-r1.ebuild | 235 + sys-kernel/dracut/dracut-106.ebuild | 233 - .../files/dracut-106-fix-rngd-module.patch | 14 + sys-kernel/gentoo-kernel-bin/Manifest | 28 + .../gentoo-kernel-bin-6.12.13.ebuild | 184 + .../gentoo-kernel-bin-6.13.2.ebuild | 184 + .../gentoo-kernel-bin-6.6.76.ebuild | 183 + .../gentoo-kernel-bin-6.6.77.ebuild | 183 + sys-kernel/gentoo-kernel/Manifest | 20 + .../gentoo-kernel-6.12.13.ebuild | 144 + .../gentoo-kernel/gentoo-kernel-6.13.2.ebuild | 144 + .../gentoo-kernel/gentoo-kernel-6.6.76.ebuild | 144 + .../gentoo-kernel/gentoo-kernel-6.6.77.ebuild | 144 + sys-kernel/gentoo-sources/Manifest | 20 +- .../gentoo-sources-6.12.10.ebuild | 37 - .../gentoo-sources-6.12.13.ebuild | 37 + .../gentoo-sources-6.13.2.ebuild | 37 + .../gentoo-sources-6.6.76.ebuild | 27 + .../gentoo-sources-6.6.77.ebuild | 27 + sys-kernel/git-sources/Manifest | 2 + .../git-sources/git-sources-6.14_rc2.ebuild | 39 + sys-kernel/linux-firmware/Manifest | 4 +- .../linux-firmware-20241110.ebuild | 406 - .../linux-firmware-20250211.ebuild | 406 + sys-kernel/scx/Manifest | 3 + sys-kernel/scx/scx-1.0.9.ebuild | 129 + sys-kernel/vanilla-kernel/Manifest | 12 + .../vanilla-kernel-6.12.13.ebuild | 135 + .../vanilla-kernel-6.13.2.ebuild | 135 + .../vanilla-kernel-6.6.76.ebuild | 135 + .../vanilla-kernel-6.6.77.ebuild | 135 + sys-kernel/vanilla-sources/Manifest | 12 +- ....ebuild => vanilla-sources-6.12.13.ebuild} | 0 ...1.ebuild => vanilla-sources-6.13.2.ebuild} | 0 ...5.ebuild => vanilla-sources-6.6.77.ebuild} | 0 sys-libs/Manifest.gz | Bin 13760 -> 13764 bytes sys-libs/kpmcore/Manifest | 2 - sys-libs/kpmcore/kpmcore-24.12.1.ebuild | 31 - sys-libs/libselinux/Manifest | 2 + sys-libs/libselinux/libselinux-3.8.ebuild | 164 + sys-libs/libsemanage/Manifest | 6 +- sys-libs/libsemanage/libsemanage-3.7.ebuild | 4 +- sys-libs/libsemanage/libsemanage-3.8.ebuild | 117 + sys-libs/libsemanage/libsemanage-9999.ebuild | 4 +- sys-libs/libsepol/Manifest | 2 + sys-libs/libsepol/libsepol-3.8.ebuild | 55 + sys-libs/liburing/Manifest | 2 + sys-libs/liburing/liburing-2.9.ebuild | 86 + sys-libs/libxcrypt/Manifest | 2 + sys-libs/libxcrypt/libxcrypt-4.4.38.ebuild | 250 + sys-libs/lwp/Manifest | 2 + sys-libs/lwp/files/lwp-2.8-bool.patch | 14 + sys-libs/lwp/lwp-2.8-r1.ebuild | 22 + sys-libs/musl/Manifest | 4 + .../files/musl-iconv-out-of-bound-fix.patch | 76 + sys-libs/musl/musl-1.2.3-r10.ebuild | 219 + sys-libs/musl/musl-1.2.4-r4.ebuild | 209 + sys-libs/musl/musl-1.2.5-r3.ebuild | 210 + sys-libs/timezone-data/Manifest | 2 +- .../timezone-data/timezone-data-2025a.ebuild | 2 +- sys-libs/zlib-ng/Manifest | 2 + sys-libs/zlib-ng/zlib-ng-2.2.4.ebuild | 86 + sys-process/Manifest.gz | Bin 10298 -> 10296 bytes sys-process/fcron/Manifest | 5 + sys-process/fcron/fcron-3.3.2.ebuild | 256 + sys-process/fcron/fcron-3.3.3.ebuild | 255 + .../fcron/files/fcron-3.3.2-time_t.patch | 22 + sys-process/iotop/Manifest | 2 +- sys-process/iotop/iotop-0.6_p20230124.ebuild | 4 +- virtual/Manifest.gz | Bin 28222 -> 28222 bytes virtual/dist-kernel/Manifest | 4 + .../dist-kernel/dist-kernel-6.12.13.ebuild | 16 + virtual/dist-kernel/dist-kernel-6.13.2.ebuild | 16 + virtual/dist-kernel/dist-kernel-6.6.76.ebuild | 16 + virtual/dist-kernel/dist-kernel-6.6.77.ebuild | 16 + www-apache/Manifest.gz | Bin 5732 -> 5733 bytes www-apache/mod_tls/Manifest | 1 + www-apache/mod_tls/files/mod_tls.conf | 5 + www-apache/modsecurity-crs/Manifest | 4 +- .../modsecurity-crs-3.3.7.ebuild | 4 +- .../modsecurity-crs-4.8.0.ebuild | 4 +- www-apache/passenger/Manifest | 2 +- www-apache/passenger/passenger-6.0.24.ebuild | 2 +- www-apps/Manifest.gz | Bin 13136 -> 13134 bytes www-apps/chromedriver-bin/Manifest | 4 +- ... => chromedriver-bin-133.0.6943.98.ebuild} | 0 www-apps/gitea/Manifest | 4 +- ...itea-1.23.0.ebuild => gitea-1.23.3.ebuild} | 0 www-apps/mediawiki/Manifest | 2 + www-apps/mediawiki/mediawiki-1.42.5.ebuild | 92 + www-apps/moodle/Manifest | 12 +- www-apps/moodle/moodle-4.3.10.ebuild | 123 + www-apps/moodle/moodle-4.3.9.ebuild | 123 - www-apps/moodle/moodle-4.4.5.ebuild | 124 - www-apps/moodle/moodle-4.4.6.ebuild | 124 + www-apps/moodle/moodle-4.5.1.ebuild | 124 - www-apps/moodle/moodle-4.5.2.ebuild | 124 + www-apps/prowlarr-bin/Manifest | 14 +- ...ebuild => prowlarr-bin-1.31.1.4959.ebuild} | 0 www-apps/radarr-bin/Manifest | 14 +- .../radarr-bin/radarr-bin-5.18.4.9674.ebuild | 77 - .../radarr-bin/radarr-bin-5.19.0.9697.ebuild | 77 + www-apps/sonarr-bin/Manifest | 12 +- .../sonarr-bin/sonarr-bin-4.0.12.2900.ebuild | 73 - .../sonarr-bin/sonarr-bin-4.0.13.2932.ebuild | 73 + www-apps/wordpress/Manifest | 4 +- www-apps/wordpress/wordpress-6.7.1.ebuild | 58 - www-apps/wordpress/wordpress-6.7.2.ebuild | 58 + www-client/Manifest.gz | Bin 6214 -> 6207 bytes www-client/chromium/Manifest | 32 +- .../chromium/chromium-132.0.6834.159.ebuild | 1432 --- .../chromium/chromium-132.0.6834.83.ebuild | 1454 --- .../chromium/chromium-133.0.6943.27.ebuild | 1434 --- .../chromium/chromium-133.0.6943.53.ebuild | 1 + .../chromium/chromium-133.0.6943.98.ebuild | 1441 +++ .../chromium/chromium-134.0.6998.15.ebuild | 1535 ++++ .../chromium/chromium-134.0.6998.3.ebuild | 1528 --- .../chromium/chromium-135.0.6999.2.ebuild | 1529 +++ .../chromium-134-map_droppable-glibc.patch | 35 + .../chromium-135-fix-non-wayland-build.patch | 45 + www-client/falkon/Manifest | 2 - www-client/falkon/falkon-24.12.1.ebuild | 82 - www-client/firefox-bin/Manifest | 600 -- .../firefox-bin/firefox-bin-128.5.2.ebuild | 364 - .../firefox-bin/firefox-bin-128.6.0.ebuild | 364 - .../firefox-bin/firefox-bin-133.0.3.ebuild | 364 - .../firefox-bin/firefox-bin-134.0.1.ebuild | 364 - .../firefox-bin/firefox-bin-134.0.2.ebuild | 364 - .../firefox-bin/firefox-bin-134.0.ebuild | 364 - www-client/firefox/Manifest | 721 +- www-client/firefox/firefox-128.5.0.ebuild | 1369 --- www-client/firefox/firefox-128.5.1.ebuild | 1369 --- www-client/firefox/firefox-128.6.0.ebuild | 1376 --- www-client/firefox/firefox-133.0.3.ebuild | 1371 --- www-client/firefox/firefox-134.0.1.ebuild | 1371 --- www-client/firefox/firefox-134.0.2.ebuild | 1371 --- www-client/firefox/firefox-134.0.ebuild | 1371 --- www-client/firefox/metadata.xml | 1 - www-client/google-chrome-beta/Manifest | 4 +- ...> google-chrome-beta-134.0.6998.15.ebuild} | 0 www-client/google-chrome/Manifest | 4 +- ...ild => google-chrome-133.0.6943.98.ebuild} | 0 www-client/microsoft-edge-beta/Manifest | 4 +- ... microsoft-edge-beta-133.0.3065.59.ebuild} | 0 www-client/microsoft-edge-dev/Manifest | 4 +- ...=> microsoft-edge-dev-134.0.3124.5.ebuild} | 0 www-client/microsoft-edge/Manifest | 4 +- ...ld => microsoft-edge-133.0.3065.59.ebuild} | 0 www-client/opera-developer/Manifest | 4 +- ...ld => opera-developer-118.0.5439.0.ebuild} | 0 www-client/opera/Manifest | 4 +- ....71.ebuild => opera-116.0.5366.127.ebuild} | 0 www-client/seamonkey/Manifest | 4 + www-client/seamonkey/seamonkey-2.53.20.ebuild | 540 ++ www-client/tangram/Manifest | 3 + www-client/tangram/tangram-3.3.ebuild | 64 + www-client/vivaldi-snapshot/Manifest | 8 +- ...ild => vivaldi-snapshot-7.2.3597.3.ebuild} | 0 www-client/vivaldi/Manifest | 16 +- www-client/vivaldi/vivaldi-7.0.3495.29.ebuild | 220 - www-client/vivaldi/vivaldi-7.1.3570.47.ebuild | 220 + ...0.42.ebuild => vivaldi-7.1.3570.50.ebuild} | 0 www-misc/Manifest.gz | Bin 2586 -> 2585 bytes www-misc/monitorix/Manifest | 2 + www-misc/monitorix/monitorix-3.16.0.ebuild | 117 + www-plugins/Manifest.gz | Bin 1077 -> 1073 bytes www-plugins/chrome-binary-plugins/Manifest | 8 +- ...hrome-binary-plugins-133.0.6943.98.ebuild} | 0 ...-binary-plugins-134.0.6998.15_beta.ebuild} | 0 www-servers/Manifest.gz | Bin 4372 -> 4375 bytes www-servers/tomcat/Manifest | 9 + www-servers/tomcat/tomcat-10.1.35.ebuild | 179 + www-servers/tomcat/tomcat-11.0.3.ebuild | 185 + www-servers/tomcat/tomcat-9.0.99.ebuild | 172 + x11-apps/Manifest.gz | Bin 13856 -> 13859 bytes x11-apps/xinit/Manifest | 2 +- x11-apps/xinit/xinit-1.4.3.ebuild | 2 +- x11-drivers/Manifest.gz | Bin 4207 -> 4212 bytes x11-drivers/xf86-input-synaptics/Manifest | 2 +- .../xf86-input-synaptics-1.10.0.ebuild | 2 +- x11-drivers/xf86-video-ast/Manifest | 2 +- .../xf86-video-ast-1.2.0.ebuild | 2 +- x11-libs/Manifest.gz | Bin 17671 -> 17664 bytes x11-libs/libxkbcommon/Manifest | 2 + .../libxkbcommon/libxkbcommon-1.8.0.ebuild | 72 + x11-libs/qwt/Manifest | 1 + x11-libs/qwt/qwt-6.2.0-r4.ebuild | 157 + x11-libs/wxGTK/Manifest | 1 + x11-libs/wxGTK/wxGTK-3.0.4-r6.ebuild | 130 + x11-misc/Manifest.gz | Bin 46496 -> 46510 bytes x11-misc/qt5ct/Manifest | 2 + x11-misc/qt5ct/qt5ct-1.9.ebuild | 45 + x11-misc/shutter/Manifest | 2 - x11-misc/shutter/shutter-0.99.4-r1.ebuild | 91 - x11-misc/trayer-srg/Manifest | 4 +- .../files/trayer-srg-1.1.8-fix-define.patch | 13 + .../trayer-srg/trayer-srg-1.1.8-r1.ebuild | 38 - .../trayer-srg/trayer-srg-1.1.8-r2.ebuild | 7 +- x11-misc/viewglob/Manifest | 3 +- .../viewglob/files/viewglob-2.0.4-C23.patch | 56 + x11-misc/viewglob/viewglob-2.0.4-r1.ebuild | 7 +- x11-misc/xkeyboard-config/Manifest | 2 + .../xkeyboard-config-2.44.ebuild | 66 + x11-terms/Manifest.gz | Bin 5044 -> 5051 bytes x11-terms/kitty-shell-integration/Manifest | 4 +- .../kitty-shell-integration-0.39.0.ebuild | 37 - .../kitty-shell-integration-0.39.1.ebuild | 2 +- x11-terms/kitty-terminfo/Manifest | 4 +- .../kitty-terminfo-0.39.0.ebuild | 23 - .../kitty-terminfo-0.39.1.ebuild | 2 +- x11-terms/kitty/Manifest | 6 +- x11-terms/kitty/kitty-0.39.0.ebuild | 187 - x11-terms/kitty/kitty-0.39.1.ebuild | 2 +- x11-terms/terminator/Manifest | 3 - x11-terms/terminator/terminator-2.1.3.ebuild | 64 - x11-themes/Manifest.gz | Bin 20747 -> 20747 bytes x11-themes/fluent-icon-theme/Manifest | 2 + .../fluent-icon-theme-2025.02.10.ebuild | 60 + x11-themes/gtk-engines-rezlooks/Manifest | 7 +- ...es-rezlooks-0.6-implicit-declaration.patch | 14 + .../gtk-engines-rezlooks-0.6-r1.ebuild | 45 - .../gtk-engines-rezlooks-0.6-r2.ebuild | 45 + .../gtk-engines-rezlooks-0.6.1.ebuild | 34 + x11-themes/gtk-engines-rezlooks/metadata.xml | 3 + x11-themes/gtk-engines/Manifest | 2 + .../files/gtk-engines-2.20.2-lua.patch | 69 + .../gtk-engines-2.20.2-r102.ebuild | 69 + xfce-base/Manifest.gz | Bin 3047 -> 3046 bytes xfce-base/thunar/Manifest | 2 + xfce-base/thunar/thunar-4.20.2.ebuild | 86 + xfce-base/xfce4-settings/Manifest | 2 + .../xfce4-settings-4.20.1.ebuild | 97 + xfce-extra/Manifest.gz | Bin 8234 -> 8231 bytes xfce-extra/thunar-shares-plugin/Manifest | 2 +- .../thunar-shares-plugin-0.4.0.ebuild | 2 +- 7214 files changed, 118981 insertions(+), 126326 deletions(-) create mode 100644 app-accessibility/emacspeak-ss/emacspeak-ss-1.9.1-r2.ebuild create mode 100644 app-accessibility/emacspeak-ss/files/emacspeak-ss-1.9.1-missing-includes.patch delete mode 100644 app-accessibility/kontrast/kontrast-24.12.1.ebuild create mode 100644 app-accessibility/sphinx2/files/sphinx2-0.6-c99.patch create mode 100644 app-accessibility/sphinx2/sphinx2-0.6-r2.ebuild rename app-admin/aws-session-manager-plugin/{aws-session-manager-plugin-1.2.694.0.ebuild => aws-session-manager-plugin-1.2.707.0.ebuild} (100%) rename app-admin/awscli/{awscli-1.37.12.ebuild => awscli-1.37.16.ebuild} (100%) rename app-admin/awscli/{awscli-1.37.13.ebuild => awscli-1.37.17.ebuild} (100%) rename app-admin/awscli/{awscli-1.37.14.ebuild => awscli-1.37.18.ebuild} (100%) rename app-admin/awscli/{awscli-1.37.15.ebuild => awscli-1.37.19.ebuild} (100%) delete mode 100644 app-admin/awscli/awscli-1.37.2.ebuild create mode 100644 app-admin/awscli/awscli-1.37.20.ebuild create mode 100644 app-admin/bitwarden-desktop-bin/bitwarden-desktop-bin-2025.1.4.ebuild delete mode 100644 app-admin/conky/conky-1.21.9.ebuild create mode 100644 app-admin/entr/entr-5.7.ebuild delete mode 100644 app-admin/kio-admin/kio-admin-24.12.1.ebuild delete mode 100644 app-admin/linode-cli/linode-cli-5.54.0.ebuild delete mode 100644 app-admin/linode-cli/linode-cli-5.55.0.ebuild delete mode 100644 app-admin/linode-cli/linode-cli-5.56.0.ebuild create mode 100644 app-admin/linode-cli/linode-cli-5.56.2.ebuild create mode 100644 app-admin/logsurfer+/files/logsurfer+-1.8-C23.patch create mode 100644 app-admin/logsurfer+/logsurfer+-1.8-r6.ebuild delete mode 100644 app-admin/opentofu/opentofu-1.6.0.ebuild delete mode 100644 app-admin/opentofu/opentofu-1.6.1.ebuild delete mode 100644 app-admin/opentofu/opentofu-1.6.2.ebuild delete mode 100644 app-admin/opentofu/opentofu-1.7.1.ebuild delete mode 100644 app-admin/opentofu/opentofu-1.7.2.ebuild delete mode 100644 app-admin/opentofu/opentofu-1.8.1.ebuild create mode 100644 app-admin/terraform/terraform-1.10.5.ebuild delete mode 100644 app-arch/par2cmdline/par2cmdline-0.8.1-r1.ebuild create mode 100644 app-arch/patool/files/patool-3.1.0-fix-file-5.46-compat.patch create mode 100644 app-arch/patool/patool-3.1.0.ebuild create mode 100644 app-backup/borgmatic/borgmatic-1.9.10.ebuild delete mode 100644 app-backup/borgmatic/borgmatic-1.9.4.ebuild delete mode 100644 app-benchmarks/i7z/i7z-93_p20131012-r2.ebuild create mode 100644 app-cdr/ccd2iso/ccd2iso-0.3-r2.ebuild create mode 100644 app-cdr/cue2toc/cue2toc-0.4-r2.ebuild delete mode 100644 app-cdr/dolphin-plugins-mountiso/dolphin-plugins-mountiso-24.12.1.ebuild delete mode 100644 app-cdr/isoimagewriter/isoimagewriter-24.12.1.ebuild create mode 100644 app-containers/amazon-ecr-credential-helper/amazon-ecr-credential-helper-0.9.1.ebuild delete mode 100644 app-containers/incus/incus-6.7.ebuild delete mode 100644 app-containers/lxc/lxc-6.0.2.ebuild create mode 100644 app-crypt/badkeys/badkeys-0.0.13.ebuild create mode 100644 app-crypt/gpa/files/gpa-0.11.0-c99.patch create mode 100644 app-crypt/gpa/gpa-0.11.0.ebuild create mode 100644 app-crypt/gpgme/gpgme-1.24.2.ebuild create mode 100644 app-crypt/hashalot/hashalot-0.3-r3.ebuild delete mode 100644 app-crypt/keysmith/keysmith-24.12.1.ebuild delete mode 100644 app-crypt/rpm-sequoia/rpm-sequoia-1.6.0-r1.ebuild delete mode 100644 app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.10.1-r1.ebuild delete mode 100644 app-crypt/sequoia-sq/sequoia-sq-1.0.0.ebuild delete mode 100644 app-editors/ghostwriter/ghostwriter-24.12.1.ebuild create mode 100644 app-editors/logseq-desktop-bin/logseq-desktop-bin-0.10.9-r1.ebuild delete mode 100644 app-editors/logseq-desktop-bin/logseq-desktop-bin-0.10.9.ebuild create mode 100644 app-editors/neovim/neovim-0.10.4.ebuild rename app-editors/vscode/{vscode-1.96.4.ebuild => vscode-1.97.1.ebuild} (100%) rename app-editors/vscode/{vscode-1.97.0.ebuild => vscode-1.97.2.ebuild} (100%) rename app-editors/vscodium/{vscodium-1.96.4.25017.ebuild => vscodium-1.97.1.25044.ebuild} (100%) create mode 100644 app-editors/wily/files/wily-1.0-C23.patch create mode 100644 app-editors/wily/wily-1.0-r3.ebuild create mode 100644 app-editors/zed/zed-0.172.10.ebuild delete mode 100644 app-editors/zed/zed-0.172.8.ebuild create mode 100644 app-emacs/ghub/ghub-4.2.1.ebuild create mode 100644 app-emacs/multiple-cursors/multiple-cursors-1.5.0.ebuild delete mode 100644 app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.0.0.ebuild delete mode 100644 app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.1.0.ebuild create mode 100644 app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-11.0.0.ebuild delete mode 100644 app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.8.0.ebuild delete mode 100644 app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.9.0.ebuild create mode 100644 app-emacs/parsebib/parsebib-6.6.ebuild create mode 100644 app-emulation/86Box/86Box-4.2.1-r1.ebuild delete mode 100644 app-emulation/86Box/86Box-4.2.1.ebuild delete mode 100644 app-emulation/libvirt/files/libvirt-10.1.0-Fix-off-by-one-error-in-udevListInterfacesByStatus.patch delete mode 100644 app-emulation/libvirt/files/libvirt-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch create mode 100644 app-emulation/libvirt/files/libvirt-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch delete mode 100644 app-emulation/libvirt/files/libvirt-9.10.0-virxml-include-libxml-xmlsave.h-for-xmlIndentTreeOut.patch delete mode 100644 app-emulation/libvirt/files/libvirt-9.4.0-do-not-use-sysconfig.patch delete mode 100644 app-emulation/libvirt/libvirt-10.1.0-r4.ebuild create mode 100644 app-emulation/libvirt/libvirt-11.0.0.ebuild delete mode 100644 app-emulation/libvirt/libvirt-9.8.0-r5.ebuild delete mode 100644 app-emulation/libvirt/libvirt-9.9.0-r5.ebuild delete mode 100644 app-emulation/virtiofsd/virtiofsd-1.10.0-r1.ebuild create mode 100644 app-emulation/virtiofsd/virtiofsd-1.10.0-r2.ebuild delete mode 100644 app-emulation/virtiofsd/virtiofsd-1.10.1-r1.ebuild create mode 100644 app-emulation/virtiofsd/virtiofsd-1.10.1-r2.ebuild delete mode 100644 app-emulation/virtiofsd/virtiofsd-1.11.1-r1.ebuild create mode 100644 app-emulation/virtiofsd/virtiofsd-1.11.1-r2.ebuild create mode 100644 app-emulation/virtualbox-kvm/virtualbox-kvm-7.1.6a_pre20250207.ebuild delete mode 100644 app-emulation/wine-gecko/wine-gecko-2.47.2.ebuild delete mode 100644 app-emulation/wine-mono/wine-mono-7.0.0.ebuild delete mode 100644 app-emulation/wine-mono/wine-mono-9.2.0.ebuild delete mode 100644 app-emulation/wine-mono/wine-mono-9.3.0.ebuild delete mode 100644 app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch delete mode 100644 app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch delete mode 100644 app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch delete mode 100644 app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch create mode 100644 app-emulation/wine-proton/files/wine-proton-9.0.4-binutils2.44.patch delete mode 100644 app-emulation/wine-proton/wine-proton-7.0.6.ebuild create mode 100644 app-emulation/wine-staging/files/wine-staging-10.0-binutils2.44.patch create mode 100644 app-emulation/wine-staging/wine-staging-10.1.ebuild delete mode 100644 app-emulation/wine-staging/wine-staging-9.19.ebuild delete mode 100644 app-emulation/wine-staging/wine-staging-9.20.ebuild delete mode 100644 app-emulation/wine-staging/wine-staging-9.21.ebuild delete mode 100644 app-emulation/wine-staging/wine-staging-9.22.ebuild create mode 100644 app-emulation/wine-vanilla/files/wine-vanilla-10.0-binutils2.44.patch delete mode 100644 app-emulation/wine-vanilla/files/wine-vanilla-7.0-unwind.patch delete mode 100644 app-emulation/wine-vanilla/wine-vanilla-7.0.2.ebuild create mode 100644 app-emulation/xen-tools/files/edk2-202202-binutils-2.41-textrels.patch create mode 100644 app-emulation/xen-tools/files/xen-tools-4.19.1-gnu17.patch create mode 100644 app-i18n/fcitx-anthy/fcitx-anthy-5.1.6.ebuild create mode 100644 app-i18n/fcitx-chewing/fcitx-chewing-5.1.7.ebuild create mode 100644 app-i18n/fcitx-chinese-addons/fcitx-chinese-addons-5.1.8.ebuild create mode 100644 app-i18n/fcitx-configtool/fcitx-configtool-5.1.8.ebuild create mode 100644 app-i18n/fcitx-hangul/fcitx-hangul-5.1.6.ebuild create mode 100644 app-i18n/fcitx-lua/fcitx-lua-5.0.14.ebuild create mode 100644 app-i18n/fcitx-m17n/fcitx-m17n-5.1.3.ebuild create mode 100644 app-i18n/fcitx-qt/fcitx-qt-5.1.9.ebuild create mode 100644 app-i18n/fcitx-rime/fcitx-rime-5.1.10.ebuild create mode 100644 app-i18n/fcitx-sayura/fcitx-sayura-5.1.3.ebuild create mode 100644 app-i18n/fcitx-table-extra/fcitx-table-extra-5.1.7.ebuild create mode 100644 app-i18n/fcitx-table-other/fcitx-table-other-5.1.4.ebuild create mode 100644 app-i18n/fcitx-unikey/fcitx-unikey-5.1.6.ebuild create mode 100644 app-i18n/fcitx/fcitx-5.1.12.ebuild create mode 100644 app-i18n/fcitx/files/fcitx-5.1.12-make-x11-dependencies-optional.patch create mode 100644 app-i18n/gnulib-l10n/Manifest create mode 100644 app-i18n/gnulib-l10n/gnulib-l10n-20241231.ebuild create mode 100644 app-i18n/gnulib-l10n/metadata.xml create mode 100644 app-i18n/jfbterm/files/jfbterm-0.4.7-fonts.patch create mode 100644 app-i18n/jfbterm/files/jfbterm-0.4.7-gettimeoftheday.patch create mode 100644 app-i18n/jfbterm/jfbterm-0.4.7-r5.ebuild create mode 100644 app-i18n/libime/libime-1.1.10.ebuild delete mode 100644 app-i18n/librime/librime-1.11.2.ebuild create mode 100644 app-i18n/librime/librime-1.13.0.ebuild delete mode 100644 app-i18n/librime/librime-1.7.3-r1.ebuild create mode 100644 app-i18n/opencc/files/opencc-1.1.9-python.patch delete mode 100644 app-i18n/opencc/opencc-1.1.4.ebuild delete mode 100644 app-i18n/opencc/opencc-1.1.7-r1.ebuild create mode 100644 app-i18n/opencc/opencc-1.1.7-r2.ebuild create mode 100644 app-i18n/opencc/opencc-1.1.9.ebuild create mode 100644 app-i18n/rime-data/rime-data-1.0.20250124.ebuild create mode 100644 app-i18n/xvnkb/files/config.h.in create mode 100644 app-i18n/xvnkb/files/meson.build create mode 100644 app-i18n/xvnkb/files/meson.options create mode 100644 app-i18n/xvnkb/xvnkb-0.2.11-r1.ebuild delete mode 100644 app-misc/boxes/boxes-2.2.1.ebuild delete mode 100644 app-misc/boxes/boxes-2.3.0.ebuild create mode 100644 app-misc/broot/broot-1.44.7.ebuild rename app-misc/dateutils/files/{dateutils-4.10-gcc-14.patch => dateutils-0.4.10-gcc-14.patch} (100%) delete mode 100644 app-misc/fastfetch/fastfetch-2.30.1.ebuild create mode 100644 app-misc/fastfetch/fastfetch-2.36.1.ebuild delete mode 100644 app-misc/francis/francis-24.12.1.ebuild create mode 100644 app-misc/tmuxp/tmuxp-1.52.2.ebuild create mode 100644 app-office/calligra/calligra-24.12.2.ebuild create mode 100644 app-office/kmymoney/kmymoney-5.1.92.ebuild delete mode 100644 app-office/ledger/ledger-3.3.2-r1.ebuild create mode 100644 app-office/libalkimia/files/libalkimia-8.1.92-pkgconfig.patch create mode 100644 app-office/libalkimia/libalkimia-8.1.92_p20250211.ebuild create mode 100644 app-office/libreoffice-bin/libreoffice-bin-24.8.4.ebuild create mode 100644 app-office/libreoffice-bin/libreoffice-bin-25.2.0.ebuild delete mode 100644 app-office/merkuro/merkuro-24.12.1.ebuild create mode 100644 app-office/scribus/files/scribus-1.7.0-poppler-25.02.0.patch create mode 100644 app-portage/cpuid2cpuflags/cpuid2cpuflags-15.ebuild create mode 100644 app-portage/elogv/elogv-0.8.4.ebuild delete mode 100644 app-portage/pycargoebuild/pycargoebuild-0.13.4.ebuild create mode 100644 app-shells/bash/bash-5.3_beta_p20250210.ebuild create mode 100644 app-shells/bash/bash-5.3_beta_p20250212.ebuild create mode 100644 app-shells/fzf/fzf-0.59.0.ebuild create mode 100644 app-shells/rc/files/rc-1.7.4-C23.patch create mode 100644 app-shells/rc/files/rc-1.7.4-libedit.patch create mode 100644 app-shells/rc/rc-1.7.4-r3.ebuild create mode 100644 app-shells/zoxide/zoxide-0.9.7.ebuild create mode 100644 app-text/chasen/chasen-2.4.5-r1.ebuild create mode 100644 app-text/chasen/files/chasen-2.4.5-c23.patch delete mode 100644 app-text/fbreader/Manifest delete mode 100644 app-text/fbreader/fbreader-0.99.4-r6.ebuild delete mode 100644 app-text/fbreader/metadata.xml delete mode 100644 app-text/pandoc-bin/pandoc-bin-3.5.ebuild create mode 100644 app-text/pandoc-bin/pandoc-bin-3.6.3.ebuild delete mode 100644 app-text/pdfpc/files/pdfpc-4.6.0-no-movies.patch delete mode 100644 app-text/pdfpc/files/pdfpc-4.6.0-vala-0.56.7.patch delete mode 100644 app-text/pdfpc/files/pdfpc-4.6.0-webkit2gtk-4.1.patch delete mode 100644 app-text/pdfpc/pdfpc-4.6.0-r2.ebuild create mode 100644 app-text/poppler/poppler-25.02.0.ebuild create mode 100644 app-text/qpdf/files/qpdf-11.10.0-zopfli-inc.patch create mode 100644 app-text/qpdf/qpdf-11.10.0.ebuild create mode 100644 dev-ada/gnatdoc/gnatdoc-24.0.0-r1.ebuild delete mode 100644 dev-ada/gnatdoc/gnatdoc-24.0.0.ebuild create mode 100644 dev-ada/gnatdoc/gnatdoc-25.0.0-r1.ebuild delete mode 100644 dev-ada/gnatdoc/gnatdoc-25.0.0.ebuild create mode 100644 dev-ada/gpr/gpr-24.2.0.ebuild create mode 100644 dev-ada/lal-refactor/lal-refactor-25.0.0.ebuild rename dev-build/bazel-buildtools/{bazel-buildtools-8.0.2.ebuild => bazel-buildtools-8.0.3.ebuild} (100%) delete mode 100644 dev-build/dolphin-plugins-makefileactions/dolphin-plugins-makefileactions-24.12.1.ebuild create mode 100644 dev-build/just/just-1.39.0.ebuild create mode 100644 dev-build/muon/muon-0.4.0.ebuild create mode 100644 dev-build/rocm-cmake/rocm-cmake-6.3.2.ebuild delete mode 100644 dev-cpp/asio/asio-1.28.1.ebuild delete mode 100644 dev-cpp/asio/asio-1.30.1.ebuild delete mode 100644 dev-cpp/cctz/cctz-2.3_p20230228.ebuild delete mode 100644 dev-cpp/cpp-httplib/cpp-httplib-0.18.0.ebuild create mode 100644 dev-cpp/cpp-httplib/cpp-httplib-0.18.6.ebuild create mode 100644 dev-cpp/cpp-httplib/files/cpp-httplib-0.18.6-onlinetest.patch create mode 100644 dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.2.ebuild delete mode 100644 dev-cpp/sol2/sol2-3.3.1.ebuild delete mode 100644 dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-cmake-paths.patch delete mode 100644 dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-gtest.patch delete mode 100644 dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-install-paths.patch delete mode 100644 dev-cpp/yaml-cpp/yaml-cpp-0.7.0-r2.ebuild create mode 100644 dev-db/duckdb/Manifest create mode 100644 dev-db/duckdb/duckdb-1.2.0.ebuild create mode 100644 dev-db/duckdb/metadata.xml create mode 100644 dev-db/mongodb-compass-bin/mongodb-compass-bin-1.45.3.ebuild delete mode 100644 dev-db/postgresql/postgresql-12.22.ebuild create mode 100644 dev-db/postgresql/postgresql-13.19.ebuild create mode 100644 dev-db/postgresql/postgresql-14.16.ebuild create mode 100644 dev-db/postgresql/postgresql-15.11.ebuild create mode 100644 dev-db/postgresql/postgresql-16.7.ebuild create mode 100644 dev-db/postgresql/postgresql-17.3.ebuild create mode 100644 dev-db/spatialite/files/spatialite-5.1.0-macro-surgery.patch create mode 100644 dev-db/spatialite/spatialite-5.1.0-r2.ebuild create mode 100644 dev-db/sqlite/files/sqlite-3.49.0-cppflags.patch delete mode 100644 dev-db/sqlite/sqlite-3.48.0-r1.ebuild create mode 100644 dev-db/sqlite/sqlite-3.49.0.ebuild delete mode 100644 dev-db/sqlmap/sqlmap-1.8.9.ebuild create mode 100644 dev-db/sqlmap/sqlmap-1.9.ebuild rename dev-db/timescaledb/{timescaledb-2.18.0.ebuild => timescaledb-2.18.1.ebuild} (100%) delete mode 100644 dev-db/tora/Manifest delete mode 100644 dev-db/tora/files/tora-3.2-qt-includes.patch delete mode 100644 dev-db/tora/metadata.xml delete mode 100644 dev-db/tora/tora-3.2-r2.ebuild delete mode 100644 dev-debug/gdb/gdb-16.1.ebuild create mode 100644 dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild create mode 100644 dev-dotnet/fsautocomplete/fsautocomplete-0.76.1.ebuild create mode 100644 dev-games/libnw/files/libnw-1.30.02-C23.patch create mode 100644 dev-games/libnw/libnw-1.30.02-r2.ebuild delete mode 100644 dev-java/checker-framework-qual/checker-framework-qual-3.48.3.ebuild delete mode 100644 dev-java/jol-core/jol-core-0.16-r1.ebuild rename dev-java/openjdk-bin/{openjdk-bin-25_p8_beta.ebuild => openjdk-bin-25_p9_beta.ebuild} (100%) rename dev-java/openjdk/{openjdk-25_p8.ebuild => openjdk-25_p9.ebuild} (100%) delete mode 100644 dev-java/stax2-api/stax2-api-4.2.1-r1.ebuild create mode 100644 dev-java/stax2-api/stax2-api-4.2.2.ebuild create mode 100644 dev-lang/crystal/crystal-1.15.1.ebuild create mode 100644 dev-lang/dafny/dafny-4.10.0.ebuild create mode 100644 dev-lang/mmix/files/mmix-20160804-implicit-int.patch create mode 100644 dev-lang/mmix/mmix-20160804-r2.ebuild create mode 100644 dev-lang/nim/files/nim-2.2.2-testament-skipfile.txt create mode 100644 dev-lang/nim/nim-2.2.2.ebuild create mode 100644 dev-lang/nprolog/nprolog-3.90.ebuild rename dev-lang/pypy/{pypy-3.11.7.3.18.ebuild => pypy-3.11.7.3.18_p1.ebuild} (100%) create mode 100644 dev-lang/python/python-3.14.0_alpha5-r100.ebuild create mode 100644 dev-lang/python/python-3.14.0_alpha5.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.71.1-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.71.1-r102.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.74.1-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.74.1-r102.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.75.0-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.75.0-r102.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.76.0-r100.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.76.0-r101.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.77.1-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.77.1-r102.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.78.0-r100.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.78.0-r101.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.79.0-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.79.0-r102.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.80.1-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.80.1-r102.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.81.0-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.81.0-r102.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.82.0-r101.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.82.0-r102.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.83.0-r1.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.83.0.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.84.0-r1.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.84.0.ebuild create mode 100644 dev-lang/rust-bin/rust-bin-1.84.1-r1.ebuild delete mode 100644 dev-lang/rust-bin/rust-bin-1.84.1.ebuild delete mode 100644 dev-lang/rust/rust-1.71.1-r100.ebuild create mode 100644 dev-lang/rust/rust-1.71.1-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.74.1-r100.ebuild create mode 100644 dev-lang/rust/rust-1.74.1-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.75.0-r100.ebuild create mode 100644 dev-lang/rust/rust-1.75.0-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.76.0-r100.ebuild create mode 100644 dev-lang/rust/rust-1.76.0-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.77.1-r100.ebuild create mode 100644 dev-lang/rust/rust-1.77.1-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.78.0-r100.ebuild create mode 100644 dev-lang/rust/rust-1.78.0-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.79.0-r100.ebuild create mode 100644 dev-lang/rust/rust-1.79.0-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.80.1-r100.ebuild create mode 100644 dev-lang/rust/rust-1.80.1-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.81.0-r100.ebuild create mode 100644 dev-lang/rust/rust-1.81.0-r101.ebuild delete mode 100644 dev-lang/rust/rust-1.82.0-r100.ebuild delete mode 100644 dev-lang/rust/rust-1.82.0-r101.ebuild create mode 100644 dev-lang/rust/rust-1.82.0-r102.ebuild delete mode 100644 dev-lang/rust/rust-1.83.0-r1.ebuild create mode 100644 dev-lang/rust/rust-1.83.0-r2.ebuild create mode 100644 dev-lang/rust/rust-1.84.0-r1.ebuild delete mode 100644 dev-lang/rust/rust-1.84.0.ebuild create mode 100644 dev-lang/rust/rust-1.84.1-r1.ebuild delete mode 100644 dev-lang/rust/rust-1.84.1.ebuild create mode 100644 dev-lang/spark/files/spark-2024.01.11-gentoo.patch create mode 100644 dev-lang/spark/spark-2024.01.11-r1.ebuild delete mode 100644 dev-lang/spidermonkey/spidermonkey-128.5.0.ebuild create mode 100644 dev-lang/spidermonkey/spidermonkey-128.7.0.ebuild create mode 100644 dev-lang/xsb/files/xsb-4.0.0-gcc14-build-fix.patch create mode 100644 dev-lang/xsb/files/xsb-4.0.0-gcc14-sql.patch delete mode 100644 dev-lang/xsb/xsb-4.0.0-r1.ebuild create mode 100644 dev-lang/xsb/xsb-4.0.0-r2.ebuild delete mode 100644 dev-libs/apache-arrow/apache-arrow-18.0.0.ebuild delete mode 100644 dev-libs/apache-arrow/apache-arrow-18.1.0-r2.ebuild create mode 100644 dev-libs/c-blosc2/c-blosc2-2.16.0.ebuild create mode 100644 dev-libs/ell/ell-0.72.ebuild delete mode 100644 dev-libs/flatbuffers/flatbuffers-24.12.23.ebuild rename dev-libs/flatbuffers/{flatbuffers-25.1.21.ebuild => flatbuffers-25.2.10.ebuild} (100%) delete mode 100644 dev-libs/gumbo/gumbo-0.12.2.ebuild create mode 100644 dev-libs/gumbo/gumbo-0.13.0.ebuild create mode 100644 dev-libs/hipother/hipother-6.3.2.ebuild delete mode 100644 dev-libs/kirigami-addons/kirigami-addons-1.5.0.ebuild delete mode 100644 dev-libs/kopeninghours/kopeninghours-24.12.1.ebuild delete mode 100644 dev-libs/kosmindoormap/kosmindoormap-24.12.1.ebuild delete mode 100644 dev-libs/kpublictransport/kpublictransport-24.12.1.ebuild delete mode 100644 dev-libs/kqoauth/Manifest delete mode 100644 dev-libs/kqoauth/kqoauth-0.98-r3.ebuild delete mode 100644 dev-libs/kqoauth/metadata.xml delete mode 100644 dev-libs/kweathercore/kweathercore-24.12.1.ebuild create mode 100644 dev-libs/libcdio-paranoia/libcdio-paranoia-2.0.2.ebuild create mode 100644 dev-libs/libcdio/libcdio-2.2.0.ebuild create mode 100644 dev-libs/libei/libei-1.4.0.ebuild create mode 100644 dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch create mode 100644 dev-libs/libffi/libffi-3.4.7.ebuild create mode 100644 dev-libs/libintl/libintl-0.23.1.ebuild delete mode 100644 dev-libs/libintl/libintl-0.23.ebuild delete mode 100644 dev-libs/libpcre2/files/libpcre2-10.43-fix-loong-sljit.patch delete mode 100644 dev-libs/libpcre2/libpcre2-10.42-r1.ebuild delete mode 100644 dev-libs/libpcre2/libpcre2-10.42-r2.ebuild delete mode 100644 dev-libs/libpcre2/libpcre2-10.43.ebuild create mode 100644 dev-libs/libpcre2/libpcre2-10.45.ebuild create mode 100644 dev-libs/libtasn1/libtasn1-4.20.0.ebuild create mode 100644 dev-libs/libvformat/files/libvformat-1.13-time_t.patch create mode 100644 dev-libs/libvformat/libvformat-1.13-r3.ebuild delete mode 100644 dev-libs/libxml2/libxml2-2.11.8.ebuild delete mode 100644 dev-libs/libxml2/libxml2-2.12.8.ebuild delete mode 100644 dev-libs/mimalloc/mimalloc-2.1.8.ebuild delete mode 100644 dev-libs/nspr/nspr-4.35-r2.ebuild create mode 100644 dev-libs/openct/files/openct-0.6.20-incompatible-pointers.patch create mode 100644 dev-libs/openct/openct-0.6.20-r6.ebuild create mode 100644 dev-libs/openssl/openssl-3.0.16.ebuild create mode 100644 dev-libs/openssl/openssl-3.1.8.ebuild create mode 100644 dev-libs/openssl/openssl-3.2.4.ebuild create mode 100644 dev-libs/openssl/openssl-3.3.3.ebuild create mode 100644 dev-libs/openssl/openssl-3.4.1.ebuild delete mode 100644 dev-libs/poco/poco-1.12.4.ebuild create mode 100644 dev-libs/poco/poco-1.14.1.ebuild create mode 100644 dev-libs/protobuf-c/protobuf-c-1.5.1.ebuild delete mode 100644 dev-libs/qcoro5/Manifest delete mode 100644 dev-libs/qcoro5/metadata.xml delete mode 100644 dev-libs/qcoro5/qcoro5-0.10.0-r1.ebuild delete mode 100644 dev-libs/qoauth/Manifest delete mode 100644 dev-libs/qoauth/files/qoauth-1.0.1-disable-ft.patch delete mode 100644 dev-libs/qoauth/files/qoauth-2.0.1_pre20160315-prf.patch delete mode 100644 dev-libs/qoauth/metadata.xml delete mode 100644 dev-libs/qoauth/qoauth-2.0.1_pre20160315-r3.ebuild create mode 100644 dev-libs/rocdbgapi/rocdbgapi-6.3.2.ebuild delete mode 100644 dev-libs/rocm-comgr/files/0001-COMGR-changes-needed-for-upstream-llvm.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-4.5.2-dependencies.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-fix-include.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-link.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-args-changed delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-remove-zlib-gnu delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-remove-h-option.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-fix-tests.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-lld-include.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-nullopt.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-opt_mrelax.patch delete mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-subtargetfeatures.patch create mode 100644 dev-libs/rocm-comgr/files/rocm-comgr-6.3.2-rocm_path.patch delete mode 100644 dev-libs/rocm-comgr/rocm-comgr-5.1.3-r3.ebuild delete mode 100644 dev-libs/rocm-comgr/rocm-comgr-5.3.3-r2.ebuild delete mode 100644 dev-libs/rocm-comgr/rocm-comgr-5.4.3-r1.ebuild delete mode 100644 dev-libs/rocm-comgr/rocm-comgr-5.5.1.ebuild delete mode 100644 dev-libs/rocm-comgr/rocm-comgr-6.3.0.ebuild create mode 100644 dev-libs/rocm-comgr/rocm-comgr-6.3.2-r1.ebuild delete mode 100644 dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-llvm-link.patch delete mode 100644 dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-test-bitcode-dir.patch delete mode 100644 dev-libs/rocm-device-libs/files/rocm-device-libs-5.4.3-Revert-Update-counters-for-gfx11.patch delete mode 100644 dev-libs/rocm-device-libs/rocm-device-libs-5.1.3-r1.ebuild delete mode 100644 dev-libs/rocm-device-libs/rocm-device-libs-5.3.3.ebuild delete mode 100644 dev-libs/rocm-device-libs/rocm-device-libs-5.4.3.ebuild delete mode 100644 dev-libs/rocm-device-libs/rocm-device-libs-5.5.1.ebuild create mode 100644 dev-libs/rocm-device-libs/rocm-device-libs-6.3.2.ebuild delete mode 100644 dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-fix-include.patch delete mode 100644 dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-gcc13.patch delete mode 100644 dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-3.5.0-do-not-install-libopencl.patch delete mode 100644 dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.0.2-enable-gfx800.patch delete mode 100644 dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.1.3-remove-clinfo.patch delete mode 100644 dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.3.3-gcc13.patch delete mode 100644 dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.1.3.ebuild delete mode 100644 dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.3.3-r1.ebuild delete mode 100644 dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.4.3-r1.ebuild delete mode 100644 dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.5.1.ebuild create mode 100644 dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.3.2.ebuild delete mode 100644 dev-libs/rocr-runtime/files/rocr-runtime-5.0.1-cmake-install-paths.patch delete mode 100644 dev-libs/rocr-runtime/rocr-runtime-5.1.3-r1.ebuild delete mode 100644 dev-libs/rocr-runtime/rocr-runtime-5.3.3-r1.ebuild delete mode 100644 dev-libs/rocr-runtime/rocr-runtime-5.4.3-r1.ebuild delete mode 100644 dev-libs/rocr-runtime/rocr-runtime-5.5.1.ebuild create mode 100644 dev-libs/rocr-runtime/rocr-runtime-6.3.2.ebuild delete mode 100644 dev-libs/roct-thunk-interface/roct-thunk-interface-5.1.3.ebuild delete mode 100644 dev-libs/roct-thunk-interface/roct-thunk-interface-5.3.3.ebuild delete mode 100644 dev-libs/roct-thunk-interface/roct-thunk-interface-5.4.3.ebuild delete mode 100644 dev-libs/roct-thunk-interface/roct-thunk-interface-5.5.1.ebuild create mode 100644 dev-libs/roct-thunk-interface/roct-thunk-interface-6.3.2.ebuild create mode 100644 dev-libs/simdjson/simdjson-3.12.1-r1.ebuild delete mode 100644 dev-libs/tre/tre-0.8.0_p20210321-r1.ebuild delete mode 100644 dev-libs/tre/tre-0.8.0_p20210321-r2.ebuild delete mode 100644 dev-libs/tre/tre-0.8.0_p20210321-r3.ebuild create mode 100644 dev-libs/tre/tre-0.9.0-r1.ebuild create mode 100644 dev-libs/tree-sitter-bash/tree-sitter-bash-0.23.3.ebuild create mode 100644 dev-libs/tree-sitter-c/tree-sitter-c-0.23.2.ebuild create mode 100644 dev-libs/tree-sitter-c/tree-sitter-c-0.23.3.ebuild create mode 100644 dev-libs/tree-sitter-c/tree-sitter-c-0.23.4.ebuild create mode 100644 dev-libs/tree-sitter-c/tree-sitter-c-0.23.5.ebuild create mode 100644 dev-libs/tree-sitter-css/tree-sitter-css-0.23.2.ebuild create mode 100644 dev-libs/tree-sitter-go/tree-sitter-go-0.23.4.ebuild create mode 100644 dev-libs/tree-sitter-html/tree-sitter-html-0.23.2.ebuild create mode 100644 dev-libs/tree-sitter-javascript/tree-sitter-javascript-0.23.1.ebuild create mode 100644 dev-libs/tree-sitter-json/tree-sitter-json-0.24.8.ebuild create mode 100644 dev-libs/tree-sitter-python/tree-sitter-python-0.23.6.ebuild create mode 100644 dev-libs/tree-sitter-rust/tree-sitter-rust-0.23.2.ebuild create mode 100644 dev-libs/tree-sitter/tree-sitter-0.25.1.ebuild create mode 100644 dev-lisp/c2ffi/c2ffi-18.1.0.20240926-r1.ebuild delete mode 100644 dev-lisp/c2ffi/c2ffi-18.1.0.20240926.ebuild create mode 100644 dev-ml/llvm/llvm-20.1.0_rc2.ebuild create mode 100644 dev-ml/llvm/llvm-21.0.0_pre20250208.ebuild create mode 100644 dev-ml/llvm/llvm-21.0.0_pre20250211.ebuild create mode 100644 dev-ml/reason/reason-3.15.0.ebuild create mode 100644 dev-perl/Business-ISBN-Data/Business-ISBN-Data-20250205.1.0.ebuild create mode 100644 dev-perl/Business-ISSN/Business-ISSN-1.8.0.ebuild create mode 100644 dev-perl/Crypt-URandom/Crypt-URandom-0.530.0.ebuild create mode 100644 dev-perl/CryptX/CryptX-0.85.0.ebuild create mode 100644 dev-perl/CryptX/files/CryptX-0.85.0-respect-flags.patch create mode 100644 dev-perl/Glib-Object-Introspection/Glib-Object-Introspection-0.51.0-r1.ebuild create mode 100644 dev-perl/Glib-Object-Introspection/files/Glib-Object-Introspection-0.51.0-new-gobject-introspection.patch create mode 100644 dev-perl/IO-Interactive/IO-Interactive-1.26.0.ebuild create mode 100644 dev-perl/MIME-Types/MIME-Types-2.270.0.ebuild create mode 100644 dev-perl/Mail-DMARC/Mail-DMARC-1.202.502.30.ebuild create mode 100644 dev-perl/Net-SSLeay/files/Net-SSLeay-1.940.0-openssl-3.4-tests.patch create mode 100644 dev-perl/Perl-Version/Perl-Version-1.18.0.ebuild create mode 100644 dev-perl/Sys-Virt/Sys-Virt-11.0.0.ebuild create mode 100644 dev-perl/Text-CSV_XS/Text-CSV_XS-1.600.0.ebuild create mode 100644 dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.370.0.ebuild create mode 100644 dev-perl/YAML-LibYAML/YAML-LibYAML-0.903.0.ebuild create mode 100644 dev-php/pecl-ssh2/pecl-ssh2-1.4.1-r1.ebuild delete mode 100644 dev-php/pecl-ssh2/pecl-ssh2-1.4.1.ebuild delete mode 100644 dev-php/pecl-stomp/pecl-stomp-2.0.3-r1.ebuild create mode 100644 dev-php/pecl-stomp/pecl-stomp-2.0.3-r2.ebuild create mode 100644 dev-python/aiohappyeyeballs/aiohappyeyeballs-2.4.6.ebuild delete mode 100644 dev-python/aioresponses/aioresponses-0.7.7.ebuild create mode 100644 dev-python/aiounittest/aiounittest-1.4.3.ebuild delete mode 100644 dev-python/alembic/alembic-1.14.0.ebuild create mode 100644 dev-python/apsw/apsw-3.49.0.0.ebuild delete mode 100644 dev-python/atpublic/atpublic-4.1.0.ebuild delete mode 100644 dev-python/atpublic/atpublic-5.0.ebuild delete mode 100644 dev-python/bincopy/bincopy-20.0.0.ebuild rename dev-python/boto3/{boto3-1.36.12.ebuild => boto3-1.36.16.ebuild} (100%) rename dev-python/boto3/{boto3-1.36.13.ebuild => boto3-1.36.17.ebuild} (100%) rename dev-python/boto3/{boto3-1.36.14.ebuild => boto3-1.36.18.ebuild} (100%) rename dev-python/boto3/{boto3-1.36.15.ebuild => boto3-1.36.19.ebuild} (100%) delete mode 100644 dev-python/boto3/boto3-1.36.2.ebuild create mode 100644 dev-python/boto3/boto3-1.36.20.ebuild rename dev-python/botocore/{botocore-1.36.12.ebuild => botocore-1.36.16.ebuild} (100%) rename dev-python/botocore/{botocore-1.36.13.ebuild => botocore-1.36.17.ebuild} (100%) rename dev-python/botocore/{botocore-1.36.14.ebuild => botocore-1.36.18.ebuild} (100%) rename dev-python/botocore/{botocore-1.36.15.ebuild => botocore-1.36.19.ebuild} (100%) delete mode 100644 dev-python/botocore/botocore-1.36.2.ebuild create mode 100644 dev-python/botocore/botocore-1.36.20.ebuild delete mode 100644 dev-python/cachetools/cachetools-5.5.0.ebuild delete mode 100644 dev-python/cfn-lint/cfn-lint-1.22.3.ebuild create mode 100644 dev-python/cfn-lint/cfn-lint-1.25.1.ebuild create mode 100644 dev-python/clang/clang-20.1.0_rc2.ebuild create mode 100644 dev-python/clang/clang-21.0.0_pre20250208.ebuild create mode 100644 dev-python/clang/clang-21.0.0_pre20250211.ebuild create mode 100644 dev-python/coverage/coverage-7.6.11.ebuild create mode 100644 dev-python/coverage/coverage-7.6.12.ebuild create mode 100644 dev-python/cppy/cppy-1.3.1.ebuild create mode 100644 dev-python/cryptography/cryptography-44.0.1.ebuild create mode 100644 dev-python/cwcwidth/cwcwidth-0.1.10.ebuild create mode 100644 dev-python/cython/cython-3.0.12.ebuild create mode 100644 dev-python/dependency-groups/Manifest create mode 100644 dev-python/dependency-groups/dependency-groups-1.3.0.ebuild create mode 100644 dev-python/dependency-groups/metadata.xml delete mode 100644 dev-python/deprecated/deprecated-1.2.15.ebuild delete mode 100644 dev-python/elasticsearch/elasticsearch-8.17.0.ebuild create mode 100644 dev-python/ensurepip-pip/ensurepip-pip-25.0.1.ebuild delete mode 100644 dev-python/environs/environs-11.2.1.ebuild delete mode 100644 dev-python/environs/environs-12.0.0.ebuild delete mode 100644 dev-python/environs/environs-14.0.0.ebuild create mode 100644 dev-python/environs/environs-14.1.1.ebuild create mode 100644 dev-python/evdev/evdev-1.9.0.ebuild delete mode 100644 dev-python/faker/faker-33.3.1.ebuild create mode 100644 dev-python/faker/faker-35.2.2.ebuild create mode 100644 dev-python/faker/faker-36.1.0.ebuild create mode 100644 dev-python/faker/faker-36.1.1.ebuild create mode 100644 dev-python/fakeredis/fakeredis-2.27.0.ebuild delete mode 100644 dev-python/filelock/filelock-3.16.1.ebuild create mode 100644 dev-python/fixtures/fixtures-4.2.3.ebuild create mode 100644 dev-python/fixtures/fixtures-4.2.4_p1.ebuild delete mode 100644 dev-python/flatbuffers/flatbuffers-24.12.23.ebuild rename dev-python/flatbuffers/{flatbuffers-25.1.21.ebuild => flatbuffers-25.2.10.ebuild} (100%) create mode 100644 dev-python/fonttools/fonttools-4.56.0.ebuild delete mode 100644 dev-python/fpylll/fpylll-0.6.2.ebuild create mode 100644 dev-python/gdb-pt-dump/gdb-pt-dump-0.0.0_p20250105.ebuild create mode 100644 dev-python/google-api-python-client/google-api-python-client-2.161.0.ebuild delete mode 100644 dev-python/google-auth/google-auth-2.37.0.ebuild create mode 100644 dev-python/googleapis-common-protos/googleapis-common-protos-1.67.0.ebuild delete mode 100644 dev-python/griffe/griffe-1.5.5.ebuild create mode 100644 dev-python/griffe/griffe-1.5.7.ebuild delete mode 100644 dev-python/hpack/hpack-4.0.0-r1.ebuild delete mode 100644 dev-python/hyperframe/hyperframe-6.0.1-r1.ebuild delete mode 100644 dev-python/hypothesis/hypothesis-6.123.17.ebuild delete mode 100644 dev-python/hypothesis/hypothesis-6.124.7.ebuild delete mode 100644 dev-python/hypothesis/hypothesis-6.125.0.ebuild delete mode 100644 dev-python/hypothesis/hypothesis-6.125.1.ebuild create mode 100644 dev-python/hypothesis/hypothesis-6.125.3.ebuild delete mode 100644 dev-python/icalendar/icalendar-6.1.0.ebuild delete mode 100644 dev-python/identify/identify-2.6.5.ebuild create mode 100644 dev-python/identify/identify-2.6.7.ebuild delete mode 100644 dev-python/importlib-metadata/importlib-metadata-8.5.0.ebuild create mode 100644 dev-python/inline-snapshot/inline-snapshot-0.20.2.ebuild delete mode 100644 dev-python/josepy/josepy-1.14.0.ebuild create mode 100644 dev-python/josepy/josepy-2.0.0.ebuild delete mode 100644 dev-python/jsonschema-path/jsonschema-path-0.3.3.ebuild delete mode 100644 dev-python/libvirt-python/libvirt-python-10.1.0.ebuild create mode 100644 dev-python/libvirt-python/libvirt-python-11.0.0.ebuild delete mode 100644 dev-python/libvirt-python/libvirt-python-9.8.0.ebuild delete mode 100644 dev-python/libvirt-python/libvirt-python-9.9.0.ebuild create mode 100644 dev-python/lit/lit-20.1.0_rc2.ebuild create mode 100644 dev-python/lit/lit-21.0.0_pre20250208.ebuild create mode 100644 dev-python/lit/lit-21.0.0_pre20250211.ebuild create mode 100644 dev-python/lxml/lxml-5.3.1.ebuild delete mode 100644 dev-python/markdown2/markdown2-2.5.2.ebuild delete mode 100644 dev-python/mcbootflash/mcbootflash-10.0.0-r1.ebuild delete mode 100644 dev-python/mcbootflash/mcbootflash-10.1.0.ebuild delete mode 100644 dev-python/mkdocs-autorefs/mkdocs-autorefs-1.2.0.ebuild create mode 100644 dev-python/mkdocs-autorefs/mkdocs-autorefs-1.3.1.ebuild create mode 100644 dev-python/mkdocs-material/mkdocs-material-9.6.3.ebuild create mode 100644 dev-python/mkdocs-material/mkdocs-material-9.6.4.ebuild delete mode 100644 dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.2.3.ebuild delete mode 100644 dev-python/mkdocstrings-python/mkdocstrings-python-1.13.0.ebuild rename dev-python/mkdocstrings-python/{mkdocstrings-python-1.14.3.ebuild => mkdocstrings-python-1.14.6.ebuild} (100%) rename dev-python/mkdocstrings-python/{mkdocstrings-python-1.14.4.ebuild => mkdocstrings-python-1.14.7.ebuild} (100%) rename dev-python/mkdocstrings-python/{mkdocstrings-python-1.14.5.ebuild => mkdocstrings-python-1.15.0.ebuild} (100%) delete mode 100644 dev-python/moto/moto-5.0.26.ebuild create mode 100644 dev-python/myst-parser/myst-parser-4.0.1.ebuild delete mode 100644 dev-python/nox/nox-2024.04.15.ebuild create mode 100644 dev-python/nox/nox-2025.02.09.ebuild create mode 100644 dev-python/nuitka/nuitka-2.6.5.ebuild delete mode 100644 dev-python/numpy/numpy-2.2.0.ebuild delete mode 100644 dev-python/numpy/numpy-2.2.1.ebuild create mode 100644 dev-python/numpy/numpy-2.2.3.ebuild create mode 100644 dev-python/oslo-utils/oslo-utils-8.1.0.ebuild delete mode 100644 dev-python/owslib/owslib-0.32.0.ebuild rename dev-python/pbs-installer/{pbs-installer-2025.01.06.ebuild => pbs-installer-2025.02.12.ebuild} (100%) create mode 100644 dev-python/pikepdf/pikepdf-9.5.2.ebuild create mode 100644 dev-python/pip/pip-25.0.1.ebuild delete mode 100644 dev-python/prettytable/prettytable-3.12.0.ebuild delete mode 100644 dev-python/prompt-toolkit/prompt-toolkit-3.0.48.ebuild create mode 100644 dev-python/psutil/psutil-7.0.0.ebuild delete mode 100644 dev-python/pyarrow/pyarrow-18.0.0.ebuild delete mode 100644 dev-python/pyarrow/pyarrow-18.1.0.ebuild delete mode 100644 dev-python/pycpio/pycpio-1.4.1.ebuild delete mode 100644 dev-python/pydantic-core/pydantic-core-2.28.0.ebuild create mode 100644 dev-python/pydantic-core/pydantic-core-2.29.0.ebuild delete mode 100644 dev-python/pydantic/pydantic-2.10.5.ebuild delete mode 100644 dev-python/pydantic/pydantic-2.11.0_alpha1.ebuild create mode 100644 dev-python/pydantic/pydantic-2.11.0_alpha2.ebuild create mode 100644 dev-python/pyghmi/pyghmi-1.5.76.ebuild delete mode 100644 dev-python/pyglet/pyglet-2.0.21.ebuild create mode 100644 dev-python/pymediainfo/pymediainfo-7.0.0.ebuild create mode 100644 dev-python/pymediainfo/pymediainfo-7.0.1.ebuild delete mode 100644 dev-python/pymongo/pymongo-4.10.0.ebuild create mode 100644 dev-python/pymongo/pymongo-4.11.1.ebuild delete mode 100644 dev-python/pymongo/pymongo-4.9.1.ebuild delete mode 100644 dev-python/pymongo/pymongo-4.9.2.ebuild delete mode 100644 dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.8-r1.ebuild create mode 100644 dev-python/pypdf/pypdf-5.3.0.ebuild delete mode 100644 dev-python/pyphen/pyphen-0.17.0.ebuild delete mode 100644 dev-python/pyproject-api/pyproject-api-1.8.0.ebuild create mode 100644 dev-python/pypy3/pypy3-7.3.18-r100.ebuild create mode 100644 dev-python/pysol-cards/pysol-cards-0.18.1.ebuild delete mode 100644 dev-python/pytest-aiohttp/pytest-aiohttp-1.0.5.ebuild create mode 100644 dev-python/pytest-check/pytest-check-2.4.2.ebuild create mode 100644 dev-python/pytest-check/pytest-check-2.5.0.ebuild create mode 100644 dev-python/pytest-datadir/pytest-datadir-1.6.1.ebuild create mode 100644 dev-python/pytest-django/pytest-django-4.10.0.ebuild delete mode 100644 dev-python/pytest-httpserver/pytest-httpserver-1.1.0.ebuild create mode 100644 dev-python/python-lsp-server/python-lsp-server-1.12.2.ebuild create mode 100644 dev-python/qtpy/qtpy-2.4.3.ebuild delete mode 100644 dev-python/recurring-ical-events/recurring-ical-events-3.3.3.ebuild delete mode 100644 dev-python/recurring-ical-events/recurring-ical-events-3.3.4.ebuild delete mode 100644 dev-python/recurring-ical-events/recurring-ical-events-3.4.0.ebuild rename dev-python/recurring-ical-events/{recurring-ical-events-3.4.1.ebuild => recurring-ical-events-3.5.0.ebuild} (100%) create mode 100644 dev-python/recurring-ical-events/recurring-ical-events-3.5.1.ebuild create mode 100644 dev-python/recurring-ical-events/recurring-ical-events-3.5.2.ebuild create mode 100644 dev-python/reportlab/reportlab-4.3.1.ebuild delete mode 100644 dev-python/semver/semver-3.0.2.ebuild create mode 100644 dev-python/sphinx-autoapi/sphinx-autoapi-3.5.0.ebuild create mode 100644 dev-python/sphinx-gallery/sphinx-gallery-0.19.0.ebuild delete mode 100644 dev-python/sphinxygen/sphinxygen-1.0.6.ebuild create mode 100644 dev-python/sqlglot/sqlglot-26.6.0.ebuild delete mode 100644 dev-python/starlette/starlette-0.44.0.ebuild delete mode 100644 dev-python/tox/tox-4.23.2.ebuild create mode 100644 dev-python/translate-toolkit/translate-toolkit-3.14.8.ebuild create mode 100644 dev-python/tree-sitter/tree-sitter-0.24.0.ebuild create mode 100644 dev-python/trimesh/trimesh-4.6.2.ebuild create mode 100644 dev-python/truststore/truststore-0.10.1.ebuild delete mode 100644 dev-python/types-setuptools/types-setuptools-75.6.0.20241223.ebuild create mode 100644 dev-python/types-setuptools/types-setuptools-75.8.0.20250210.ebuild create mode 100644 dev-python/tzlocal/tzlocal-5.3.ebuild create mode 100644 dev-python/virtualenv/virtualenv-20.29.2.ebuild create mode 100644 dev-python/virtualenvwrapper/virtualenvwrapper-6.1.1.ebuild delete mode 100644 dev-python/xlsxwriter/xlsxwriter-3.2.0.ebuild create mode 100644 dev-python/zeroconf/zeroconf-0.143.1.ebuild create mode 100644 dev-python/zeroconf/zeroconf-0.144.1.ebuild delete mode 100644 dev-qt/qtstyleplugins/Manifest delete mode 100644 dev-qt/qtstyleplugins/files/fix-build-qt5.15.patch delete mode 100644 dev-qt/qtstyleplugins/metadata.xml delete mode 100644 dev-qt/qtstyleplugins/qtstyleplugins-5.0.0_p20170311-r1.ebuild create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.8.2-glibc2.41.patch create mode 100644 dev-qt/qtwebengine/qtwebengine-6.8.2-r1.ebuild delete mode 100644 dev-qt/qtwebengine/qtwebengine-6.8.2.ebuild delete mode 100644 dev-ruby/dust/Manifest delete mode 100644 dev-ruby/dust/dust-0.1.7-r3.ebuild delete mode 100644 dev-ruby/dust/metadata.xml create mode 100644 dev-ruby/fakefs/fakefs-3.0.0.ebuild delete mode 100644 dev-ruby/net-imap/net-imap-0.4.18.ebuild create mode 100644 dev-ruby/net-imap/net-imap-0.4.19.ebuild delete mode 100644 dev-ruby/net-imap/net-imap-0.5.3.ebuild delete mode 100644 dev-ruby/net-imap/net-imap-0.5.4.ebuild create mode 100644 dev-ruby/net-imap/net-imap-0.5.6.ebuild create mode 100644 dev-ruby/ox/ox-2.14.22.ebuild create mode 100644 dev-ruby/rack/rack-2.2.11.ebuild create mode 100644 dev-ruby/rack/rack-3.0.12.ebuild create mode 100644 dev-ruby/rack/rack-3.1.10.ebuild delete mode 100644 dev-ruby/sshkit/sshkit-1.22.2.ebuild delete mode 100644 dev-ruby/sshkit/sshkit-1.23.0.ebuild create mode 100644 dev-ruby/sshkit/sshkit-1.24.0.ebuild create mode 100644 dev-ruby/timers/timers-4.4.0.ebuild delete mode 100644 dev-ruby/webmock/webmock-3.23.0.ebuild delete mode 100644 dev-ruby/webmock/webmock-3.23.1.ebuild create mode 100644 dev-ruby/webmock/webmock-3.25.0.ebuild delete mode 100644 dev-tcltk/itk/itk-4.2.3-r1.ebuild create mode 100644 dev-tcltk/itk/itk-4.2.3-r2.ebuild delete mode 100644 dev-util/Tensile/Tensile-5.1.3-r3.ebuild delete mode 100644 dev-util/Tensile/Tensile-5.4.2-r2.ebuild create mode 100644 dev-util/Tensile/Tensile-6.3.2.ebuild delete mode 100644 dev-util/Tensile/files/Tensile-5.0.2-fix-arch-parse.patch delete mode 100644 dev-util/Tensile/files/Tensile-5.0.2-gfx1031.patch delete mode 100644 dev-util/Tensile/files/Tensile-5.0.2-use-ninja.patch delete mode 100644 dev-util/Tensile/files/Tensile-5.1.3-gentoopath.patch delete mode 100644 dev-util/Tensile/files/Tensile-5.4.2-gentoopath.patch delete mode 100644 dev-util/Tensile/files/Tensile-5.4.2-gfx1031.patch delete mode 100644 dev-util/Tensile/files/Tensile-change-cmake-name-for-msgpack-cxx-6-release.patch create mode 100644 dev-util/azuredatastudio/azuredatastudio-1.50.0-r1.ebuild delete mode 100644 dev-util/azuredatastudio/azuredatastudio-1.50.0.ebuild create mode 100644 dev-util/azuredatastudio/azuredatastudio-1.51.1.ebuild delete mode 100644 dev-util/bear/bear-3.1.4-r2.ebuild delete mode 100644 dev-util/cargo-nextest/cargo-nextest-0.9.67-r1.ebuild delete mode 100644 dev-util/cargo-nextest/cargo-nextest-0.9.72-r1.ebuild create mode 100644 dev-util/cargo-nextest/cargo-nextest-0.9.88.ebuild delete mode 100644 dev-util/cutter/cutter-2.3.4.ebuild create mode 100644 dev-util/diffoscope/diffoscope-288.ebuild create mode 100644 dev-util/difftastic/difftastic-0.63.0.ebuild delete mode 100644 dev-util/fq/fq-0.10.0.ebuild delete mode 100644 dev-util/fq/fq-0.11.0.ebuild delete mode 100644 dev-util/fq/fq-0.12.0.ebuild create mode 100644 dev-util/fq/fq-0.14.0.ebuild delete mode 100644 dev-util/fq/fq-0.9.0.ebuild create mode 100644 dev-util/fuzz/files/fuzz-0.6-musl.patch delete mode 100644 dev-util/fuzz/fuzz-0.6-r3.ebuild create mode 100644 dev-util/fuzz/fuzz-0.6-r4.ebuild delete mode 100644 dev-util/github-cli/github-cli-2.52.0.ebuild create mode 100644 dev-util/github-cli/github-cli-2.66.1.ebuild delete mode 100644 dev-util/hip/files/hip-4.2.0-cancel-hcc-header-removal.patch delete mode 100644 dev-util/hip/files/hip-4.2.0-config-cmake-in.patch delete mode 100644 dev-util/hip/files/hip-5.0.1-DisableTest.patch delete mode 100644 dev-util/hip/files/hip-5.0.1-hip_vector_types.patch delete mode 100644 dev-util/hip/files/hip-5.0.2-correct-ldflag.patch delete mode 100644 dev-util/hip/files/hip-5.0.2-set-build-id.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-0001-SWDEV-316128-HIP-surface-API-support.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-clang-include-path.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-correct-sample-install-location.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-fix-hip_prof_gen.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-fno-stack-protector.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-llvm-15-noinline-keyword.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-remove-cmake-doxygen-commands.patch delete mode 100644 dev-util/hip/files/hip-5.1.3-rocm-path.patch delete mode 100644 dev-util/hip/files/hip-5.3.3-0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch delete mode 100644 dev-util/hip/files/hip-5.3.3-0002-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch delete mode 100644 dev-util/hip/files/hip-5.3.3-0003-SWDEV-355608-Remove-clang-include-path-2996.patch delete mode 100644 dev-util/hip/files/hip-5.3.3-0004-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch delete mode 100644 dev-util/hip/files/hip-5.3.3-correct-ldflag.patch delete mode 100644 dev-util/hip/files/hip-5.3.3-disable-Werror.patch delete mode 100644 dev-util/hip/files/hip-5.3.3-remove-cmake-doxygen-commands.patch delete mode 100644 dev-util/hip/files/hip-5.4.3-clang-include.patch delete mode 100644 dev-util/hip/files/hip-5.4.3-clang-version.patch delete mode 100644 dev-util/hip/files/hip-5.4.3-correct-ldflag.patch delete mode 100644 dev-util/hip/files/hip-5.4.3-fix-HIP_CLANG_PATH-detection.patch delete mode 100644 dev-util/hip/files/hip-5.5.1-disable-Werror.patch delete mode 100644 dev-util/hip/files/hipvars-5.1.3.pm delete mode 100644 dev-util/hip/files/hipvars-5.3.3.pm delete mode 100644 dev-util/hip/files/hipvars.pm delete mode 100644 dev-util/hip/files/rocclr-5.3.3-fix-include.patch delete mode 100644 dev-util/hip/files/rocclr-5.3.3-gcc13.patch delete mode 100644 dev-util/hip/hip-5.1.3-r4.ebuild delete mode 100644 dev-util/hip/hip-5.3.3-r3.ebuild delete mode 100644 dev-util/hip/hip-5.4.3.ebuild delete mode 100644 dev-util/hip/hip-5.5.1.ebuild create mode 100644 dev-util/hip/hip-6.3.2.ebuild create mode 100644 dev-util/hipcc/hipcc-6.3.2.ebuild create mode 100644 dev-util/hipify-clang/hipify-clang-6.3.2.ebuild delete mode 100644 dev-util/hyprwayland-scanner/hyprwayland-scanner-0.4.0.ebuild create mode 100644 dev-util/hyprwayland-scanner/hyprwayland-scanner-0.4.4.ebuild delete mode 100644 dev-util/idea-community/idea-community-2024.3.2.2.ebuild create mode 100644 dev-util/idea-community/idea-community-2024.3.3.ebuild create mode 100644 dev-util/imediff/imediff-3.4.0.ebuild delete mode 100644 dev-util/kdevelop-php/kdevelop-php-24.12.1.ebuild delete mode 100644 dev-util/kdevelop-python/kdevelop-python-24.12.1.ebuild delete mode 100644 dev-util/kdevelop/kdevelop-24.12.1.ebuild delete mode 100644 dev-util/kio-perldoc/kio-perldoc-24.12.1.ebuild delete mode 100644 dev-util/librnp/librnp-0.17.1-r1.ebuild delete mode 100644 dev-util/massif-visualizer/massif-visualizer-24.12.1.ebuild create mode 100644 dev-util/mesa_clc/mesa_clc-25.0.0_rc3.ebuild create mode 100644 dev-util/nvidia-cuda-toolkit/files/nvidia-cuda-toolkit-glibc-2.41.patch create mode 100644 dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.6.1-r1.ebuild delete mode 100644 dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.6.1.ebuild create mode 100644 dev-util/pkgcheck/pkgcheck-0.10.33-r1.ebuild delete mode 100644 dev-util/pkgcheck/pkgcheck-0.10.33.ebuild create mode 100644 dev-util/rgbds/rgbds-0.9.1.ebuild delete mode 100644 dev-util/rizin/rizin-0.7.3-r2.ebuild delete mode 100644 dev-util/rocm-smi/files/rocm-smi-5.0.2-gcc12-memcpy.patch delete mode 100644 dev-util/rocm-smi/rocm-smi-5.4.2-r1.ebuild delete mode 100644 dev-util/rocm-smi/rocm-smi-5.7.1-r2.ebuild create mode 100644 dev-util/rocm-smi/rocm-smi-6.3.2.ebuild delete mode 100644 dev-util/rocm_bandwidth_test/rocm_bandwidth_test-5.3.3.ebuild delete mode 100644 dev-util/rocm_bandwidth_test/rocm_bandwidth_test-5.4.3.ebuild create mode 100644 dev-util/rocm_bandwidth_test/rocm_bandwidth_test-6.3.2.ebuild create mode 100644 dev-util/rocminfo/rocminfo-6.3.2.ebuild delete mode 100644 dev-util/rocprofiler/files/rocprofiler-5.0.2-gentoo-location.patch delete mode 100644 dev-util/rocprofiler/rocprofiler-5.1.3-r1.ebuild delete mode 100644 dev-util/roctracer/files/roctracer-4.3.0-glibc-2.34.patch delete mode 100644 dev-util/roctracer/files/roctracer-5.0.2-Werror.patch delete mode 100644 dev-util/roctracer/files/roctracer-5.0.2-headers.patch delete mode 100644 dev-util/roctracer/files/roctracer-5.0.2-strip-license.patch delete mode 100644 dev-util/roctracer/files/roctracer-5.1.3-no-aqlprofile.patch delete mode 100644 dev-util/roctracer/files/roctracer-5.3.3-Werror.patch delete mode 100644 dev-util/roctracer/files/roctracer-5.3.3-do-not-install-test-files.patch delete mode 100644 dev-util/roctracer/files/roctracer-5.3.3-flat-lib-layout.patch delete mode 100644 dev-util/roctracer/roctracer-5.1.3-r1.ebuild delete mode 100644 dev-util/roctracer/roctracer-5.3.3-r1.ebuild create mode 100644 dev-util/roctracer/roctracer-6.3.2.ebuild create mode 100644 dev-util/rr/rr-5.9.0.ebuild create mode 100644 dev-util/rt-tests/files/rt-tests-2.8-glibc.patch delete mode 100644 dev-util/ruff/ruff-0.8.2.ebuild delete mode 100644 dev-util/ruff/ruff-0.8.4.ebuild create mode 100644 dev-util/ruff/ruff-0.9.6.ebuild create mode 100644 dev-util/tree-sitter-cli/tree-sitter-cli-0.25.1.ebuild delete mode 100644 dev-util/xxdiff/files/xxdiff-4.0.1-no-throw-in-dtor.patch delete mode 100644 dev-util/xxdiff/files/xxdiff-4.0.1_p20170622-cxx11.patch delete mode 100644 dev-util/xxdiff/xxdiff-4.0.1_p20170622-r1.ebuild create mode 100644 dev-util/xxdiff/xxdiff-5.1_p20241118.ebuild create mode 100644 dev-vcs/git-cola/git-cola-4.11.0.ebuild create mode 100644 dev-vcs/sourcegit/sourcegit-2025.04.ebuild delete mode 100644 dev-vcs/sourcegit/sourcegit-8.40.ebuild delete mode 100644 dev-vcs/sourcegit/sourcegit-8.44.ebuild delete mode 100644 dev-vcs/stgit/stgit-2.4.11-r1.ebuild delete mode 100644 dev-vcs/stgit/stgit-2.4.13.ebuild create mode 100644 dev-vcs/topgit/topgit-0.19.14.ebuild create mode 100644 eclass/eapi9-ver.eclass create mode 100644 games-arcade/moleinvasion/files/moleinvasion-0.4-gcc14.patch delete mode 100644 games-arcade/moleinvasion/moleinvasion-0.4-r3.ebuild create mode 100644 games-arcade/moleinvasion/moleinvasion-0.4-r4.ebuild delete mode 100644 games-arcade/osu-lazer/osu-lazer-2024.906.2.ebuild create mode 100644 games-board/xscrabble/files/xscrabble-2.10-ranlib.patch delete mode 100644 games-board/xscrabble/xscrabble-2.10-r4.ebuild create mode 100644 games-board/xscrabble/xscrabble-2.10-r5.ebuild delete mode 100644 games-emulation/bsnes-jg/bsnes-jg-1.2.0.ebuild create mode 100644 games-emulation/bsnes-jg/bsnes-jg-2.0.1.ebuild delete mode 100644 games-emulation/cega-jg/cega-jg-0.5.2.ebuild delete mode 100644 games-emulation/gambatte-jg/gambatte-jg-0.5.1.ebuild delete mode 100644 games-emulation/geolith-jg/geolith-jg-0.1.0.ebuild delete mode 100644 games-emulation/mednafen-jg/mednafen-jg-1.32.0.ebuild create mode 100644 games-emulation/mednafen-jg/mednafen-jg-1.32.1-r1.ebuild delete mode 100644 games-emulation/mednafen-jg/mednafen-jg-1.32.1.ebuild delete mode 100644 games-emulation/mgba-jg/mgba-jg-0.10.3.ebuild delete mode 100644 games-emulation/nestopia-jg/nestopia-jg-1.52.1.ebuild rename games-emulation/nestopia-jg/{nestopia-jg-1.52.0.ebuild => nestopia-jg-1.53.0.ebuild} (100%) create mode 100644 games-emulation/prosystem-jg/prosystem-jg-1.5.3.ebuild delete mode 100644 games-emulation/rmg/rmg-0.6.5-r1.ebuild delete mode 100644 games-emulation/rmg/rmg-0.6.6-r1.ebuild create mode 100644 games-emulation/rmg/rmg-0.7.3.ebuild delete mode 100644 games-emulation/sameboy-jg/sameboy-jg-0.16.6.ebuild create mode 100644 games-emulation/vecx-jg/vecx-jg-1.2.3.ebuild delete mode 100644 games-engines/fheroes2/fheroes2-1.1.4.ebuild delete mode 100644 games-puzzle/skladnik/skladnik-24.12.1.ebuild create mode 100644 games-server/crossfire-server/crossfire-server-1.75.0-r1.ebuild create mode 100644 games-server/crossfire-server/files/crossfire-server-1.75.0-format.patch create mode 100644 games-server/crossfire-server/files/crossfire-server-1.75.0-incompatible-func-pointers.patch create mode 100644 games-sports/foobillard/files/foobillard-3.0a-c99.patch create mode 100644 games-sports/foobillard/files/foobillard-3.0a-musl.patch create mode 100644 games-sports/foobillard/files/foobillard-3.0a-pointer-types.patch create mode 100644 games-sports/foobillard/files/foobillard-3.0a-queue.patch delete mode 100644 games-sports/foobillard/foobillard-3.0a-r1.ebuild create mode 100644 games-sports/foobillard/foobillard-3.0a-r2.ebuild create mode 100644 games-util/cartridges/cartridges-2.11-r1.ebuild delete mode 100644 games-util/cartridges/cartridges-2.11.ebuild create mode 100644 games-util/cartridges/cartridges-2.9.3-r1.ebuild delete mode 100644 games-util/cartridges/cartridges-2.9.3.ebuild create mode 100644 games-util/qstat/files/qstat-2.14-unneeded-cast.patch create mode 100644 games-util/qstat/qstat-2.14-r1.ebuild delete mode 100644 games-util/qstat/qstat-2.14.ebuild create mode 100644 games-util/qstat/qstat-2.17.ebuild create mode 100644 gui-apps/wf-recorder/files/wf-recorder-0.5.0-ffmpeg-7.patch create mode 100644 gui-apps/wf-recorder/wf-recorder-0.5.0-r1.ebuild delete mode 100644 kde-apps/akonadi-calendar-tools-common/akonadi-calendar-tools-common-24.12.1.ebuild delete mode 100644 kde-apps/akonadi-calendar/akonadi-calendar-24.12.1.ebuild delete mode 100644 kde-apps/akonadi-contacts/akonadi-contacts-24.12.1.ebuild delete mode 100644 kde-apps/akonadi-import-wizard/akonadi-import-wizard-24.12.1.ebuild delete mode 100644 kde-apps/akonadi-mime/akonadi-mime-24.12.1.ebuild delete mode 100644 kde-apps/akonadi-search/akonadi-search-24.12.1.ebuild delete mode 100644 kde-apps/akonadi/akonadi-24.12.1.ebuild delete mode 100644 kde-apps/akonadiconsole/akonadiconsole-24.12.1.ebuild delete mode 100644 kde-apps/akregator/akregator-24.12.1.ebuild delete mode 100644 kde-apps/ark/ark-24.12.1.ebuild delete mode 100644 kde-apps/artikulate/artikulate-24.12.1.ebuild delete mode 100644 kde-apps/audiocd-kio/audiocd-kio-24.12.1.ebuild delete mode 100644 kde-apps/baloo-widgets/baloo-widgets-24.12.1.ebuild delete mode 100644 kde-apps/blinken/blinken-24.12.1.ebuild delete mode 100644 kde-apps/bomber/bomber-24.12.1.ebuild delete mode 100644 kde-apps/bovo/bovo-24.12.1.ebuild delete mode 100644 kde-apps/calendarjanitor/calendarjanitor-24.12.1.ebuild delete mode 100644 kde-apps/calendarsupport/calendarsupport-24.12.1.ebuild delete mode 100644 kde-apps/cervisia/cervisia-24.12.1.ebuild delete mode 100644 kde-apps/dolphin-plugins-common/dolphin-plugins-common-24.12.1.ebuild delete mode 100644 kde-apps/dolphin-plugins-dropbox/dolphin-plugins-dropbox-24.12.1.ebuild delete mode 100644 kde-apps/dolphin-plugins-git/dolphin-plugins-git-24.12.1.ebuild delete mode 100644 kde-apps/dolphin-plugins-mercurial/dolphin-plugins-mercurial-24.12.1.ebuild delete mode 100644 kde-apps/dolphin-plugins-subversion/dolphin-plugins-subversion-24.12.1.ebuild delete mode 100644 kde-apps/dolphin/dolphin-24.12.1.ebuild delete mode 100644 kde-apps/dragon/dragon-24.12.1.ebuild delete mode 100644 kde-apps/eventviews/eventviews-24.12.1.ebuild delete mode 100644 kde-apps/ffmpegthumbs-common/ffmpegthumbs-common-24.12.1.ebuild delete mode 100644 kde-apps/ffmpegthumbs/ffmpegthumbs-24.12.1.ebuild delete mode 100644 kde-apps/filelight/filelight-24.12.1.ebuild delete mode 100644 kde-apps/granatier/granatier-24.12.1.ebuild delete mode 100644 kde-apps/grantlee-editor/grantlee-editor-24.12.1.ebuild delete mode 100644 kde-apps/grantleetheme/grantleetheme-24.12.1.ebuild delete mode 100644 kde-apps/gwenview/gwenview-24.12.1.ebuild delete mode 100644 kde-apps/incidenceeditor/incidenceeditor-24.12.1.ebuild delete mode 100644 kde-apps/juk/juk-24.12.1.ebuild delete mode 100644 kde-apps/k3b/k3b-24.12.1.ebuild delete mode 100644 kde-apps/kaccounts-integration/kaccounts-integration-24.12.1.ebuild delete mode 100644 kde-apps/kaccounts-providers/kaccounts-providers-24.12.1.ebuild delete mode 100644 kde-apps/kaddressbook/kaddressbook-24.12.1.ebuild delete mode 100644 kde-apps/kajongg/kajongg-24.12.1.ebuild delete mode 100644 kde-apps/kalarm/kalarm-24.12.1.ebuild delete mode 100644 kde-apps/kalgebra/kalgebra-24.12.1.ebuild delete mode 100644 kde-apps/kamera/kamera-24.12.1.ebuild delete mode 100644 kde-apps/kamoso/kamoso-24.12.1.ebuild delete mode 100644 kde-apps/kanagram/kanagram-24.12.1.ebuild delete mode 100644 kde-apps/kapman/kapman-24.12.1.ebuild delete mode 100644 kde-apps/kapptemplate/kapptemplate-24.12.1.ebuild delete mode 100644 kde-apps/kate-addons/kate-addons-24.12.1.ebuild delete mode 100644 kde-apps/kate-common/kate-common-24.12.1.ebuild delete mode 100644 kde-apps/kate-lib/kate-lib-24.12.1.ebuild delete mode 100644 kde-apps/kate/kate-24.12.1.ebuild delete mode 100644 kde-apps/katomic/katomic-24.12.1.ebuild delete mode 100644 kde-apps/kbackup/kbackup-24.12.1.ebuild delete mode 100644 kde-apps/kblackbox/kblackbox-24.12.1.ebuild delete mode 100644 kde-apps/kblocks/kblocks-24.12.1.ebuild delete mode 100644 kde-apps/kbounce/kbounce-24.12.1.ebuild delete mode 100644 kde-apps/kbreakout/kbreakout-24.12.1.ebuild delete mode 100644 kde-apps/kbruch/kbruch-24.12.1.ebuild delete mode 100644 kde-apps/kcachegrind/kcachegrind-24.12.1.ebuild delete mode 100644 kde-apps/kcalc/kcalc-24.12.1.ebuild delete mode 100644 kde-apps/kcalutils/kcalutils-24.12.1.ebuild delete mode 100644 kde-apps/kcharselect/kcharselect-24.12.1.ebuild delete mode 100644 kde-apps/kcolorchooser/kcolorchooser-24.12.1.ebuild delete mode 100644 kde-apps/kcron/kcron-24.12.1.ebuild delete mode 100644 kde-apps/kde-apps-meta/kde-apps-meta-24.12.1.ebuild delete mode 100644 kde-apps/kde-dev-scripts/kde-dev-scripts-24.12.1.ebuild delete mode 100644 kde-apps/kde-dev-utils/kde-dev-utils-24.12.1.ebuild delete mode 100644 kde-apps/kdeaccessibility-meta/kdeaccessibility-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdeadmin-meta/kdeadmin-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdebugsettings/kdebugsettings-24.12.1.ebuild delete mode 100644 kde-apps/kdecore-meta/kdecore-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdeedu-data/kdeedu-data-24.12.1.ebuild delete mode 100644 kde-apps/kdeedu-meta/kdeedu-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdegames-meta/kdegames-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdegraphics-meta/kdegraphics-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdegraphics-mobipocket/kdegraphics-mobipocket-24.12.1.ebuild delete mode 100644 kde-apps/kdemultimedia-meta/kdemultimedia-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdenetwork-filesharing/kdenetwork-filesharing-24.12.1.ebuild delete mode 100644 kde-apps/kdenetwork-meta/kdenetwork-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdenlive/kdenlive-24.12.1.ebuild delete mode 100644 kde-apps/kdepim-addons/kdepim-addons-24.12.1.ebuild delete mode 100644 kde-apps/kdepim-meta/kdepim-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdepim-runtime/kdepim-runtime-24.12.1.ebuild delete mode 100644 kde-apps/kdesdk-meta/kdesdk-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdesdk-thumbnailers-common/kdesdk-thumbnailers-common-24.12.1.ebuild delete mode 100644 kde-apps/kdesdk-thumbnailers/kdesdk-thumbnailers-24.12.1.ebuild delete mode 100644 kde-apps/kdeutils-meta/kdeutils-meta-24.12.1.ebuild delete mode 100644 kde-apps/kdf/kdf-24.12.1.ebuild delete mode 100644 kde-apps/kdialog/kdialog-24.12.1.ebuild delete mode 100644 kde-apps/kdiamond/kdiamond-24.12.1.ebuild delete mode 100644 kde-apps/keditbookmarks/keditbookmarks-24.12.1.ebuild delete mode 100644 kde-apps/kfind/kfind-24.12.1.ebuild delete mode 100644 kde-apps/kfloppy/kfloppy-23.04.3.ebuild delete mode 100644 kde-apps/kfourinline/kfourinline-24.12.1.ebuild delete mode 100644 kde-apps/kgeography/kgeography-24.12.1.ebuild delete mode 100644 kde-apps/kget/kget-24.12.1.ebuild delete mode 100644 kde-apps/kgoldrunner/kgoldrunner-24.12.1.ebuild delete mode 100644 kde-apps/kgpg/kgpg-24.12.1.ebuild delete mode 100644 kde-apps/khangman/khangman-24.12.1.ebuild delete mode 100644 kde-apps/khelpcenter/khelpcenter-24.12.1.ebuild delete mode 100644 kde-apps/kidentitymanagement/kidentitymanagement-24.12.1.ebuild delete mode 100644 kde-apps/kig/kig-24.12.1.ebuild delete mode 100644 kde-apps/kigo/kigo-24.12.1.ebuild delete mode 100644 kde-apps/killbots/killbots-24.12.1.ebuild delete mode 100644 kde-apps/kimagemapeditor/kimagemapeditor-24.12.1.ebuild delete mode 100644 kde-apps/kimap/kimap-24.12.1.ebuild delete mode 100644 kde-apps/kio-extras/kio-extras-24.12.1.ebuild delete mode 100644 kde-apps/kiriki/kiriki-24.12.1.ebuild delete mode 100644 kde-apps/kiten/kiten-24.12.1.ebuild delete mode 100644 kde-apps/kitinerary/kitinerary-24.12.1.ebuild delete mode 100644 kde-apps/kjumpingcube/kjumpingcube-24.12.1.ebuild delete mode 100644 kde-apps/kldap/kldap-24.12.1.ebuild delete mode 100644 kde-apps/kleopatra/kleopatra-24.12.1.ebuild delete mode 100644 kde-apps/klettres/klettres-24.12.1.ebuild delete mode 100644 kde-apps/klickety/klickety-24.12.1.ebuild delete mode 100644 kde-apps/klines/klines-24.12.1.ebuild delete mode 100644 kde-apps/kmag/kmag-24.12.1.ebuild delete mode 100644 kde-apps/kmahjongg/kmahjongg-24.12.1.ebuild delete mode 100644 kde-apps/kmail-account-wizard/kmail-account-wizard-24.12.1.ebuild delete mode 100644 kde-apps/kmail/kmail-24.12.1.ebuild delete mode 100644 kde-apps/kmailtransport/kmailtransport-24.12.1.ebuild delete mode 100644 kde-apps/kmbox/kmbox-24.12.1.ebuild delete mode 100644 kde-apps/kmime/kmime-24.12.1.ebuild delete mode 100644 kde-apps/kmines/kmines-24.12.1.ebuild delete mode 100644 kde-apps/kmousetool/kmousetool-24.12.1.ebuild delete mode 100644 kde-apps/kmouth/kmouth-24.12.1.ebuild delete mode 100644 kde-apps/kmplot/kmplot-24.12.1.ebuild delete mode 100644 kde-apps/knavalbattle/knavalbattle-24.12.1.ebuild delete mode 100644 kde-apps/knetwalk/knetwalk-24.12.1.ebuild delete mode 100644 kde-apps/knights/knights-24.12.1.ebuild delete mode 100644 kde-apps/kolf/kolf-24.12.1.ebuild delete mode 100644 kde-apps/kollision/kollision-24.12.1.ebuild delete mode 100644 kde-apps/kolourpaint/kolourpaint-24.12.1.ebuild delete mode 100644 kde-apps/kompare/kompare-24.12.1.ebuild delete mode 100644 kde-apps/konqueror/konqueror-24.12.1.ebuild delete mode 100644 kde-apps/konquest/konquest-24.12.1.ebuild delete mode 100644 kde-apps/konsole/konsole-24.12.1.ebuild delete mode 100644 kde-apps/konsolekalendar/konsolekalendar-24.12.1.ebuild delete mode 100644 kde-apps/kontact/kontact-24.12.1.ebuild delete mode 100644 kde-apps/kontactinterface/kontactinterface-24.12.1.ebuild delete mode 100644 kde-apps/korganizer/korganizer-24.12.1.ebuild delete mode 100644 kde-apps/kpat/kpat-24.12.1.ebuild delete mode 100644 kde-apps/kpimtextedit/kpimtextedit-24.12.1.ebuild delete mode 100644 kde-apps/kpkpass/kpkpass-24.12.1.ebuild delete mode 100644 kde-apps/kqtquickcharts/kqtquickcharts-24.12.1.ebuild delete mode 100644 kde-apps/krdc/krdc-24.12.1.ebuild delete mode 100644 kde-apps/kreversi/kreversi-24.12.1.ebuild delete mode 100644 kde-apps/krfb/krfb-24.12.1.ebuild delete mode 100644 kde-apps/kruler/kruler-24.12.1.ebuild delete mode 100644 kde-apps/kshisen/kshisen-24.12.1.ebuild delete mode 100644 kde-apps/ksirk/ksirk-24.12.1.ebuild delete mode 100644 kde-apps/ksmtp/ksmtp-24.12.1.ebuild delete mode 100644 kde-apps/ksnakeduel/ksnakeduel-24.12.1.ebuild delete mode 100644 kde-apps/kspaceduel/kspaceduel-24.12.1.ebuild delete mode 100644 kde-apps/ksquares/ksquares-24.12.1.ebuild delete mode 100644 kde-apps/ksudoku/ksudoku-24.12.1.ebuild delete mode 100644 kde-apps/ksystemlog/ksystemlog-24.12.1.ebuild delete mode 100644 kde-apps/kteatime/kteatime-24.12.1.ebuild delete mode 100644 kde-apps/ktimer/ktimer-24.12.1.ebuild delete mode 100644 kde-apps/ktouch/ktouch-24.12.1.ebuild delete mode 100644 kde-apps/ktuberling/ktuberling-24.12.1.ebuild delete mode 100644 kde-apps/kturtle/kturtle-24.12.1.ebuild delete mode 100644 kde-apps/kubrick/kubrick-24.12.1.ebuild delete mode 100644 kde-apps/kwalletmanager/kwalletmanager-24.12.1.ebuild delete mode 100644 kde-apps/kwave/kwave-24.12.1-r1.ebuild delete mode 100644 kde-apps/kwordquiz/kwordquiz-24.12.1.ebuild delete mode 100644 kde-apps/kwrite/kwrite-24.12.1.ebuild delete mode 100644 kde-apps/libgravatar/libgravatar-24.12.1.ebuild delete mode 100644 kde-apps/libkcddb-common/libkcddb-common-24.12.1.ebuild delete mode 100644 kde-apps/libkcddb/libkcddb-24.12.1.ebuild delete mode 100644 kde-apps/libkcompactdisc/libkcompactdisc-24.12.1.ebuild delete mode 100644 kde-apps/libkdcraw/libkdcraw-24.12.1.ebuild delete mode 100644 kde-apps/libkdegames/libkdegames-24.12.1.ebuild delete mode 100644 kde-apps/libkdepim/libkdepim-24.12.1.ebuild delete mode 100644 kde-apps/libkeduvocdocument/libkeduvocdocument-24.12.1.ebuild delete mode 100644 kde-apps/libkexiv2/libkexiv2-24.12.1.ebuild delete mode 100644 kde-apps/libkgapi/libkgapi-24.12.1.ebuild delete mode 100644 kde-apps/libkleo/libkleo-24.12.1.ebuild delete mode 100644 kde-apps/libkmahjongg/libkmahjongg-24.12.1.ebuild delete mode 100644 kde-apps/libkomparediff2/libkomparediff2-24.12.1.ebuild delete mode 100644 kde-apps/libksane-common/libksane-common-24.12.1.ebuild delete mode 100644 kde-apps/libksane/libksane-24.12.1.ebuild delete mode 100644 kde-apps/libksieve/libksieve-24.12.1.ebuild delete mode 100644 kde-apps/libktnef/libktnef-24.12.1.ebuild delete mode 100644 kde-apps/lokalize/lokalize-24.12.1.ebuild delete mode 100644 kde-apps/lskat/lskat-24.12.1.ebuild delete mode 100644 kde-apps/mailcommon/mailcommon-24.12.1.ebuild delete mode 100644 kde-apps/mailimporter/mailimporter-24.12.1.ebuild delete mode 100644 kde-apps/mbox-importer/mbox-importer-24.12.1.ebuild delete mode 100644 kde-apps/messagelib/messagelib-24.12.1.ebuild delete mode 100644 kde-apps/mimetreeparser/mimetreeparser-24.12.1.ebuild delete mode 100644 kde-apps/okular/okular-24.12.1.ebuild delete mode 100644 kde-apps/palapeli/palapeli-24.12.1.ebuild delete mode 100644 kde-apps/parley/parley-24.12.1.ebuild delete mode 100644 kde-apps/picmi/picmi-24.12.1.ebuild delete mode 100644 kde-apps/pim-data-exporter/pim-data-exporter-24.12.1.ebuild delete mode 100644 kde-apps/pim-sieve-editor/pim-sieve-editor-24.12.1.ebuild delete mode 100644 kde-apps/pimcommon/pimcommon-24.12.1.ebuild delete mode 100644 kde-apps/poxml/poxml-24.12.1.ebuild delete mode 100644 kde-apps/rocs/rocs-24.12.1.ebuild delete mode 100644 kde-apps/signon-kwallet-extension/signon-kwallet-extension-24.12.1.ebuild delete mode 100644 kde-apps/spectacle/spectacle-24.12.1.ebuild delete mode 100644 kde-apps/svgpart/svgpart-24.12.1.ebuild delete mode 100644 kde-apps/sweeper/sweeper-24.12.1.ebuild delete mode 100644 kde-apps/thumbnailers/thumbnailers-24.12.1.ebuild delete mode 100644 kde-apps/umbrello/umbrello-24.12.1.ebuild delete mode 100644 kde-apps/yakuake/yakuake-24.12.1.ebuild delete mode 100644 kde-misc/colord-kde/colord-kde-24.12.1.ebuild delete mode 100644 kde-misc/kclock/kclock-24.12.1.ebuild delete mode 100644 kde-misc/kdeconnect/kdeconnect-24.12.1.ebuild delete mode 100644 kde-misc/kio-gdrive-common/kio-gdrive-common-24.12.1.ebuild delete mode 100644 kde-misc/kio-gdrive/kio-gdrive-24.12.1.ebuild delete mode 100644 kde-misc/kweather/kweather-24.12.1.ebuild delete mode 100644 kde-misc/markdownpart/markdownpart-24.12.1.ebuild delete mode 100644 kde-misc/skanlite/skanlite-24.12.1.ebuild delete mode 100644 kde-misc/zanshin/zanshin-24.12.1.ebuild create mode 100644 kde-plasma/bluedevil/bluedevil-6.3.0.ebuild create mode 100644 kde-plasma/breeze-grub/breeze-grub-6.3.0.ebuild create mode 100644 kde-plasma/breeze-gtk/breeze-gtk-6.3.0.ebuild create mode 100644 kde-plasma/breeze-plymouth/breeze-plymouth-6.3.0.ebuild create mode 100644 kde-plasma/breeze/breeze-6.3.0.ebuild create mode 100644 kde-plasma/discover/discover-6.3.0.ebuild create mode 100644 kde-plasma/drkonqi/drkonqi-6.3.0.ebuild create mode 100644 kde-plasma/flatpak-kcm/flatpak-kcm-6.3.0.ebuild create mode 100644 kde-plasma/kactivitymanagerd/kactivitymanagerd-6.3.0.ebuild create mode 100644 kde-plasma/kde-cli-tools-common/kde-cli-tools-common-6.3.0.ebuild create mode 100644 kde-plasma/kde-cli-tools/kde-cli-tools-6.3.0.ebuild create mode 100644 kde-plasma/kde-gtk-config/kde-gtk-config-6.3.0.ebuild create mode 100644 kde-plasma/kdecoration/kdecoration-6.3.0.ebuild create mode 100644 kde-plasma/kdeplasma-addons/kdeplasma-addons-6.3.0.ebuild create mode 100644 kde-plasma/kdesu-gui/kdesu-gui-6.3.0.ebuild create mode 100644 kde-plasma/keditfiletype/keditfiletype-6.3.0.ebuild create mode 100644 kde-plasma/kgamma/kgamma-6.3.0.ebuild create mode 100644 kde-plasma/kglobalacceld/kglobalacceld-6.3.0.ebuild create mode 100644 kde-plasma/kinfocenter/kinfocenter-6.3.0.ebuild create mode 100644 kde-plasma/kmenuedit/kmenuedit-6.3.0.ebuild create mode 100644 kde-plasma/kpipewire/kpipewire-6.3.0.ebuild create mode 100644 kde-plasma/krdp/krdp-6.3.0.ebuild create mode 100644 kde-plasma/kscreen/kscreen-6.3.0.ebuild create mode 100644 kde-plasma/kscreenlocker/kscreenlocker-6.3.0.ebuild create mode 100644 kde-plasma/ksshaskpass/ksshaskpass-6.3.0.ebuild create mode 100644 kde-plasma/ksystemstats/ksystemstats-6.3.0.ebuild create mode 100644 kde-plasma/kwallet-pam/kwallet-pam-6.3.0.ebuild create mode 100644 kde-plasma/kwayland-integration/kwayland-integration-6.3.0.ebuild create mode 100644 kde-plasma/kwayland/kwayland-6.3.0.ebuild create mode 100644 kde-plasma/kwin/files/kwin-6.3.0-crashfix.patch create mode 100644 kde-plasma/kwin/kwin-6.3.0-r1.ebuild create mode 100644 kde-plasma/kwrited/kwrited-6.3.0.ebuild create mode 100644 kde-plasma/layer-shell-qt/layer-shell-qt-6.3.0.ebuild create mode 100644 kde-plasma/libkscreen/libkscreen-6.3.0.ebuild create mode 100644 kde-plasma/libksysguard/libksysguard-6.3.0.ebuild create mode 100644 kde-plasma/libplasma/libplasma-6.3.0.ebuild create mode 100644 kde-plasma/milou/milou-6.3.0.ebuild create mode 100644 kde-plasma/ocean-sound-theme/ocean-sound-theme-6.3.0.ebuild create mode 100644 kde-plasma/oxygen-sounds/oxygen-sounds-6.3.0.ebuild create mode 100644 kde-plasma/oxygen/oxygen-6.3.0.ebuild create mode 100644 kde-plasma/plasma-activities-stats/plasma-activities-stats-6.3.0.ebuild create mode 100644 kde-plasma/plasma-activities/plasma-activities-6.3.0.ebuild create mode 100644 kde-plasma/plasma-browser-integration/files/plasma-browser-integration-6.3.0-fix-missing-include.patch create mode 100644 kde-plasma/plasma-browser-integration/plasma-browser-integration-6.3.0.ebuild create mode 100644 kde-plasma/plasma-desktop/plasma-desktop-6.3.0.ebuild create mode 100644 kde-plasma/plasma-disks/plasma-disks-6.3.0.ebuild create mode 100644 kde-plasma/plasma-firewall/plasma-firewall-6.3.0.ebuild create mode 100644 kde-plasma/plasma-integration/plasma-integration-6.3.0.ebuild create mode 100644 kde-plasma/plasma-login-sessions/plasma-login-sessions-6.3.0.ebuild create mode 100644 kde-plasma/plasma-meta/plasma-meta-6.3.0.ebuild create mode 100644 kde-plasma/plasma-nm/plasma-nm-6.3.0.ebuild create mode 100644 kde-plasma/plasma-pa/plasma-pa-6.3.0.ebuild create mode 100644 kde-plasma/plasma-sdk/plasma-sdk-6.3.0.ebuild create mode 100644 kde-plasma/plasma-systemmonitor/plasma-systemmonitor-6.3.0.ebuild create mode 100644 kde-plasma/plasma-thunderbolt/plasma-thunderbolt-6.3.0.ebuild create mode 100644 kde-plasma/plasma-vault/plasma-vault-6.3.0.ebuild create mode 100644 kde-plasma/plasma-welcome/plasma-welcome-6.3.0.ebuild create mode 100644 kde-plasma/plasma-workspace-wallpapers/plasma-workspace-wallpapers-6.3.0.ebuild create mode 100644 kde-plasma/plasma-workspace/plasma-workspace-6.3.0.ebuild create mode 100644 kde-plasma/plasma5support/plasma5support-6.3.0.ebuild create mode 100644 kde-plasma/plymouth-kcm/plymouth-kcm-6.3.0.ebuild create mode 100644 kde-plasma/polkit-kde-agent/polkit-kde-agent-6.3.0.ebuild create mode 100644 kde-plasma/powerdevil/powerdevil-6.3.0.ebuild create mode 100644 kde-plasma/print-manager/print-manager-6.3.0.ebuild create mode 100644 kde-plasma/qqc2-breeze-style/qqc2-breeze-style-6.3.0.ebuild create mode 100644 kde-plasma/sddm-kcm/sddm-kcm-6.3.0.ebuild create mode 100644 kde-plasma/systemsettings/systemsettings-6.3.0.ebuild create mode 100644 kde-plasma/wacomtablet/wacomtablet-6.3.0.ebuild create mode 100644 kde-plasma/xdg-desktop-portal-kde/xdg-desktop-portal-kde-6.3.0.ebuild create mode 100644 llvm-core/clang-common/clang-common-20.1.0_rc2.ebuild create mode 100644 llvm-core/clang-common/clang-common-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/clang-common/clang-common-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/clang-runtime/clang-runtime-20.1.0_rc2.ebuild create mode 100644 llvm-core/clang-runtime/clang-runtime-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/clang-runtime/clang-runtime-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/clang/clang-20.1.0_rc2.ebuild create mode 100644 llvm-core/clang/clang-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/clang/clang-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/libclc/libclc-20.1.0_rc2.ebuild create mode 100644 llvm-core/libclc/libclc-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/libclc/libclc-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/lld/lld-20.1.0_rc2.ebuild create mode 100644 llvm-core/lld/lld-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/lld/lld-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/lldb/lldb-20.1.0_rc2.ebuild create mode 100644 llvm-core/lldb/lldb-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/lldb/lldb-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/llvm-common/llvm-common-20.1.0_rc2.ebuild create mode 100644 llvm-core/llvm-common/llvm-common-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/llvm-common/llvm-common-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/llvm/llvm-20.1.0_rc2.ebuild create mode 100644 llvm-core/llvm/llvm-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/llvm/llvm-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/mlir/mlir-20.1.0_rc2.ebuild create mode 100644 llvm-core/mlir/mlir-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/mlir/mlir-21.0.0_pre20250211.ebuild create mode 100644 llvm-core/polly/polly-20.1.0_rc2.ebuild create mode 100644 llvm-core/polly/polly-21.0.0_pre20250208.ebuild create mode 100644 llvm-core/polly/polly-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/compiler-rt-sanitizers/compiler-rt-sanitizers-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/compiler-rt-sanitizers/compiler-rt-sanitizers-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/compiler-rt-sanitizers/compiler-rt-sanitizers-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/compiler-rt/compiler-rt-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/compiler-rt/compiler-rt-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/compiler-rt/compiler-rt-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/libcxx/libcxx-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/libcxx/libcxx-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/libcxx/libcxx-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/libcxxabi/libcxxabi-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/libcxxabi/libcxxabi-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/libcxxabi/libcxxabi-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/libgcc/libgcc-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/libgcc/libgcc-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/libgcc/libgcc-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/libunwind/libunwind-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/libunwind/libunwind-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/libunwind/libunwind-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/offload/offload-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/offload/offload-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/offload/offload-21.0.0_pre20250211.ebuild create mode 100644 llvm-runtimes/openmp/openmp-20.1.0_rc2.ebuild create mode 100644 llvm-runtimes/openmp/openmp-21.0.0_pre20250208.ebuild create mode 100644 llvm-runtimes/openmp/openmp-21.0.0_pre20250211.ebuild create mode 100644 lxqt-base/lxqt-config/lxqt-config-2.1.1.ebuild create mode 100644 mail-client/roundcube/roundcube-1.6.10.ebuild delete mode 100644 mail-client/roundcube/roundcube-1.6.9.ebuild delete mode 100644 mail-client/thunderbird-bin/thunderbird-bin-128.5.2.ebuild delete mode 100644 mail-client/thunderbird-bin/thunderbird-bin-128.6.0.ebuild delete mode 100644 mail-client/thunderbird/thunderbird-128.5.0.ebuild delete mode 100644 mail-client/thunderbird/thunderbird-128.5.1.ebuild delete mode 100644 mail-client/thunderbird/thunderbird-128.5.2.ebuild delete mode 100644 mail-client/thunderbird/thunderbird-128.6.0.ebuild create mode 100644 mail-filter/rblcheck/files/rblcheck-1.5-autoconf.patch create mode 100644 mail-filter/rblcheck/rblcheck-1.5-r3.ebuild rename mail-mta/postfix/{postfix-3.10_pre20250206.ebuild => postfix-3.10_pre20250207.ebuild} (100%) delete mode 100644 media-fonts/source-code-pro/source-code-pro-2.038.ebuild create mode 100644 media-fonts/source-code-pro/source-code-pro-2.042-r1.ebuild delete mode 100644 media-fonts/source-code-pro/source-code-pro-2.042.ebuild create mode 100644 media-fonts/source-han-sans/source-han-sans-2.004-r1.ebuild delete mode 100644 media-fonts/source-han-sans/source-han-sans-2.004.ebuild create mode 100644 media-fonts/source-sans/source-sans-3.052-r1.ebuild delete mode 100644 media-fonts/source-sans/source-sans-3.052.ebuild create mode 100644 media-fonts/source-serif/source-serif-4.005-r1.ebuild delete mode 100644 media-fonts/source-serif/source-serif-4.005.ebuild delete mode 100644 media-fonts/terminus-font/terminus-font-4.49.1-r1.ebuild create mode 100644 media-fonts/terminus-font/terminus-font-4.49.1-r2.ebuild create mode 100644 media-gfx/fotema/fotema-1.19.2.ebuild delete mode 100644 media-gfx/kgraphviewer/kgraphviewer-24.12.1.ebuild delete mode 100644 media-gfx/kio-blender-thumbnailer/kio-blender-thumbnailer-24.12.1.ebuild delete mode 100644 media-gfx/kio-mobi-thumbnailer/kio-mobi-thumbnailer-24.12.1.ebuild delete mode 100644 media-gfx/kio-ps-thumbnailer/kio-ps-thumbnailer-24.12.1.ebuild delete mode 100644 media-gfx/kio-raw-thumbnailer/kio-raw-thumbnailer-24.12.1.ebuild create mode 100644 media-gfx/libimagequant/libimagequant-4.3.4.ebuild create mode 100644 media-gfx/netgen/files/netgen-6.2.2406-link-against-jpeg.patch create mode 100644 media-gfx/sane-frontends/files/gimp-2.0.m4 create mode 100644 media-gfx/sane-frontends/files/gtk-2.0.m4 create mode 100644 media-gfx/sane-frontends/files/sane-frontends-1.0.14-c99.patch delete mode 100644 media-gfx/sane-frontends/sane-frontends-1.0.14-r6.ebuild create mode 100644 media-gfx/sane-frontends/sane-frontends-1.0.14-r7.ebuild delete mode 100644 media-gfx/skanpage/skanpage-24.12.1.ebuild delete mode 100644 media-gfx/symboleditor/symboleditor-2.1.0.ebuild create mode 100644 media-gfx/xloadimage/files/xloadimage-4.1-fix-incomp-function-pointer-musl.patch create mode 100644 media-gfx/xloadimage/xloadimage-4.1-r18.ebuild delete mode 100644 media-libs/amdgpu-pro-vulkan/amdgpu-pro-vulkan-24.10.0.1787253.ebuild create mode 100644 media-libs/amdgpu-pro-vulkan/amdgpu-pro-vulkan-24.30.2111292.ebuild create mode 100644 media-libs/amf-headers/amf-headers-1.4.35.ebuild create mode 100644 media-libs/amf-headers/amf-headers-1.4.36.ebuild create mode 100644 media-libs/blib/blib-1.1.7-r4.ebuild create mode 100644 media-libs/blib/files/blib-1.1.7-C23.patch create mode 100644 media-libs/flac/flac-1.5.0.ebuild delete mode 100644 media-libs/ksanecore-common/ksanecore-common-24.12.1.ebuild delete mode 100644 media-libs/ksanecore/ksanecore-24.12.1.ebuild create mode 100644 media-libs/lcms/lcms-2.17.ebuild create mode 100644 media-libs/libexif/libexif-0.6.25.ebuild create mode 100644 media-libs/libfishsound/files/libfishsound-1.0.0-oggz-interop.patch delete mode 100644 media-libs/libfishsound/libfishsound-1.0.0-r1.ebuild delete mode 100644 media-libs/libfishsound/libfishsound-1.0.0-r2.ebuild create mode 100644 media-libs/libfishsound/libfishsound-1.0.0-r3.ebuild create mode 100644 media-libs/libggiwmh/libggiwmh-0.3.2-r2.ebuild create mode 100644 media-libs/libifp/files/libifp-1.0.0.2-c23.patch create mode 100644 media-libs/libifp/files/libifp-1.0.0.2-configure.patch create mode 100644 media-libs/libifp/libifp-1.0.0.2-r2.ebuild create mode 100644 media-libs/libopenraw/libopenraw-0.3.7-r2.ebuild delete mode 100644 media-libs/libpng/libpng-1.6.40-r1.ebuild delete mode 100644 media-libs/libpng/libpng-1.6.42.ebuild delete mode 100644 media-libs/libpng/libpng-1.6.43.ebuild create mode 100644 media-libs/libpng/libpng-1.6.46.ebuild create mode 100644 media-libs/libva-intel-media-driver/libva-intel-media-driver-25.1.1.ebuild create mode 100644 media-libs/mesa/mesa-25.0.0_rc3.ebuild delete mode 100644 media-libs/openh264/openh264-2.4.1.ebuild create mode 100644 media-libs/openh264/openh264-2.6.0.ebuild create mode 100644 media-libs/tiff-compat/files/tiff-4.4.0-C23.patch create mode 100644 media-libs/tiff-compat/tiff-compat-4.4.0-r2.ebuild delete mode 100644 media-plugins/gst-plugins-kate/Manifest delete mode 100644 media-plugins/gst-plugins-kate/gst-plugins-kate-1.22.11.ebuild delete mode 100644 media-plugins/gst-plugins-kate/gst-plugins-kate-1.22.12.ebuild delete mode 100644 media-plugins/gst-plugins-kate/gst-plugins-kate-1.24.10.ebuild delete mode 100644 media-plugins/gst-plugins-kate/metadata.xml create mode 100644 media-plugins/mpg123-output-plugins/mpg123-output-plugins-1.32.10.ebuild rename media-sound/abcmidi/{abcmidi-2025.02.02.ebuild => abcmidi-2025.02.07.ebuild} (100%) delete mode 100644 media-sound/audex/audex-24.12.1.ebuild create mode 100644 media-sound/aumix/aumix-2.9.1-r1.ebuild delete mode 100644 media-sound/aumix/aumix-2.9.1.ebuild create mode 100644 media-sound/aumix/files/aumix-2.9.1-gcc14-build-fix.patch create mode 100644 media-sound/cantata/cantata-3.3.0.ebuild create mode 100644 media-sound/cantata/files/cantata-3.3.0-cdparanoia.patch create mode 100644 media-sound/cantata/files/cantata-3.3.0-rm-vendor.patch delete mode 100644 media-sound/chuck/chuck-1.5.4.2.ebuild delete mode 100644 media-sound/chuck/chuck-1.5.4.3.ebuild delete mode 100644 media-sound/clementine/clementine-1.4.0_rc2-r5.ebuild delete mode 100644 media-sound/clementine/files/clementine-1.4.0_rc2-absl.patch delete mode 100644 media-sound/clementine/files/clementine-1.4.0_rc2-c17.patch delete mode 100644 media-sound/clementine/files/clementine-1.4.0_rc2-lz.patch delete mode 100644 media-sound/clementine/files/clementine-1.4.0_rc2-projectm-dir.patch delete mode 100644 media-sound/elisa/elisa-24.12.1.ebuild create mode 100644 media-sound/gstreamripper/files/gstreamripper-0.2-C23-fixes.patch delete mode 100644 media-sound/gstreamripper/gstreamripper-0.2-r1.ebuild create mode 100644 media-sound/gstreamripper/gstreamripper-0.2-r2.ebuild create mode 100644 media-sound/jack-rack/files/jack-rack-1.4.8_rc1-C23.patch create mode 100644 media-sound/jack-rack/jack-rack-1.4.8_rc1-r2.ebuild delete mode 100644 media-sound/kasts/kasts-24.12.1.ebuild create mode 100644 media-sound/kid3/files/kid3-3.9.6-no-ndebug.patch create mode 100644 media-sound/kid3/kid3-3.9.6-r1.ebuild delete mode 100644 media-sound/krecorder/krecorder-24.12.1.ebuild create mode 100644 media-sound/mac/mac-10.93.ebuild create mode 100644 media-sound/mixxx/files/mixxx-2.5.0-fix-strict-aliasing-kaitai.patch create mode 100644 media-sound/mixxx/files/mixxx-2.5.0-tests.patch delete mode 100644 media-sound/mixxx/files/mixxx-9999-docs.patch create mode 100644 media-sound/mixxx/mixxx-2.5.0.ebuild create mode 100644 media-sound/mpg123-base/mpg123-base-1.32.10.ebuild rename media-sound/picard/{picard-2.13.1.ebuild => picard-2.13.2.ebuild} (100%) delete mode 100644 media-sound/qjackctl/qjackctl-1.0.3.ebuild delete mode 100644 media-sound/qpwgraph/qpwgraph-0.7.8.ebuild create mode 100644 media-sound/qpwgraph/qpwgraph-0.8.1.ebuild create mode 100644 media-sound/qtractor/qtractor-1.5.3.ebuild rename media-sound/schismtracker/{schismtracker-20250202.ebuild => schismtracker-20250208.ebuild} (100%) create mode 100644 media-sound/scream/files/scream-4.0-gcc15.patch delete mode 100644 media-sound/upmpdcli/upmpdcli-1.8.18.ebuild create mode 100644 media-sound/upmpdcli/upmpdcli-1.9.1.ebuild delete mode 100644 media-video/amdgpu-pro-amf/amdgpu-pro-amf-1.4.34.1787253.ebuild create mode 100644 media-video/amdgpu-pro-amf/amdgpu-pro-amf-1.4.36.2111292.ebuild create mode 100644 media-video/ffmpeg-chromium/ffmpeg-chromium-135.ebuild create mode 100644 media-video/ffmpeg/ffmpeg-7.1.ebuild create mode 100644 media-video/makemkv/makemkv-1.17.9.ebuild create mode 100644 media-video/mkvalidator/mkvalidator-0.6.0.ebuild create mode 100644 media-video/obs-studio/obs-studio-31.0.1.ebuild delete mode 100644 media-video/vidify-audiosync/Manifest delete mode 100644 media-video/vidify-audiosync/metadata.xml delete mode 100644 media-video/vidify-audiosync/vidify-audiosync-0.3.0-r2.ebuild delete mode 100644 media-video/vidify/Manifest delete mode 100644 media-video/vidify/files/vidify-2.2.6-python310.patch delete mode 100644 media-video/vidify/files/vidify-2.2.6-yt-dlp.patch delete mode 100644 media-video/vidify/metadata.xml delete mode 100644 media-video/vidify/vidify-2.2.6-r3.ebuild delete mode 100644 media-video/vlc/files/vlc-3.0.21-vaapi-without-ffmpeg4.patch delete mode 100644 media-video/vlc/vlc-3.0.21-r1.ebuild delete mode 100644 media-video/vlc/vlc-3.0.21.ebuild create mode 100644 media-video/vlc/vlc-3.0.21_p20250212.ebuild create mode 100644 media-video/wireplumber/wireplumber-0.5.8.ebuild delete mode 100644 media-video/yle-dl/yle-dl-20240927.ebuild create mode 100644 metadata/md5-cache/app-accessibility/emacspeak-ss-1.9.1-r2 delete mode 100644 metadata/md5-cache/app-accessibility/kontrast-24.12.1 create mode 100644 metadata/md5-cache/app-accessibility/sphinx2-0.6-r2 delete mode 100644 metadata/md5-cache/app-admin/aws-session-manager-plugin-1.2.694.0 create mode 100644 metadata/md5-cache/app-admin/aws-session-manager-plugin-1.2.707.0 delete mode 100644 metadata/md5-cache/app-admin/awscli-1.37.12 delete mode 100644 metadata/md5-cache/app-admin/awscli-1.37.13 delete mode 100644 metadata/md5-cache/app-admin/awscli-1.37.14 delete mode 100644 metadata/md5-cache/app-admin/awscli-1.37.15 create mode 100644 metadata/md5-cache/app-admin/awscli-1.37.16 create mode 100644 metadata/md5-cache/app-admin/awscli-1.37.17 create mode 100644 metadata/md5-cache/app-admin/awscli-1.37.18 create mode 100644 metadata/md5-cache/app-admin/awscli-1.37.19 delete mode 100644 metadata/md5-cache/app-admin/awscli-1.37.2 create mode 100644 metadata/md5-cache/app-admin/awscli-1.37.20 create mode 100644 metadata/md5-cache/app-admin/bitwarden-desktop-bin-2025.1.4 delete mode 100644 metadata/md5-cache/app-admin/conky-1.21.9 create mode 100644 metadata/md5-cache/app-admin/entr-5.7 delete mode 100644 metadata/md5-cache/app-admin/kio-admin-24.12.1 delete mode 100644 metadata/md5-cache/app-admin/linode-cli-5.54.0 delete mode 100644 metadata/md5-cache/app-admin/linode-cli-5.55.0 delete mode 100644 metadata/md5-cache/app-admin/linode-cli-5.56.0 create mode 100644 metadata/md5-cache/app-admin/linode-cli-5.56.2 create mode 100644 metadata/md5-cache/app-admin/logsurfer+-1.8-r6 delete mode 100644 metadata/md5-cache/app-admin/opentofu-1.6.0 delete mode 100644 metadata/md5-cache/app-admin/opentofu-1.6.1 delete mode 100644 metadata/md5-cache/app-admin/opentofu-1.6.2 delete mode 100644 metadata/md5-cache/app-admin/opentofu-1.7.1 delete mode 100644 metadata/md5-cache/app-admin/opentofu-1.7.2 delete mode 100644 metadata/md5-cache/app-admin/opentofu-1.8.1 create mode 100644 metadata/md5-cache/app-admin/terraform-1.10.5 delete mode 100644 metadata/md5-cache/app-arch/par2cmdline-0.8.1-r1 create mode 100644 metadata/md5-cache/app-arch/patool-3.1.0 create mode 100644 metadata/md5-cache/app-backup/borgmatic-1.9.10 delete mode 100644 metadata/md5-cache/app-backup/borgmatic-1.9.4 delete mode 100644 metadata/md5-cache/app-benchmarks/i7z-93_p20131012-r2 create mode 100644 metadata/md5-cache/app-cdr/ccd2iso-0.3-r2 create mode 100644 metadata/md5-cache/app-cdr/cue2toc-0.4-r2 delete mode 100644 metadata/md5-cache/app-cdr/dolphin-plugins-mountiso-24.12.1 delete mode 100644 metadata/md5-cache/app-cdr/isoimagewriter-24.12.1 create mode 100644 metadata/md5-cache/app-containers/amazon-ecr-credential-helper-0.9.1 delete mode 100644 metadata/md5-cache/app-containers/incus-6.7 delete mode 100644 metadata/md5-cache/app-containers/lxc-6.0.2 create mode 100644 metadata/md5-cache/app-crypt/badkeys-0.0.13 create mode 100644 metadata/md5-cache/app-crypt/gpa-0.11.0 create mode 100644 metadata/md5-cache/app-crypt/gpgme-1.24.2 create mode 100644 metadata/md5-cache/app-crypt/hashalot-0.3-r3 delete mode 100644 metadata/md5-cache/app-crypt/keysmith-24.12.1 delete mode 100644 metadata/md5-cache/app-crypt/rpm-sequoia-1.6.0-r1 delete mode 100644 metadata/md5-cache/app-crypt/sequoia-chameleon-gnupg-0.10.1-r1 delete mode 100644 metadata/md5-cache/app-crypt/sequoia-sq-1.0.0 delete mode 100644 metadata/md5-cache/app-editors/ghostwriter-24.12.1 delete mode 100644 metadata/md5-cache/app-editors/logseq-desktop-bin-0.10.9 create mode 100644 metadata/md5-cache/app-editors/logseq-desktop-bin-0.10.9-r1 create mode 100644 metadata/md5-cache/app-editors/neovim-0.10.4 delete mode 100644 metadata/md5-cache/app-editors/vscode-1.96.4 delete mode 100644 metadata/md5-cache/app-editors/vscode-1.97.0 create mode 100644 metadata/md5-cache/app-editors/vscode-1.97.1 create mode 100644 metadata/md5-cache/app-editors/vscode-1.97.2 delete mode 100644 metadata/md5-cache/app-editors/vscodium-1.96.4.25017 create mode 100644 metadata/md5-cache/app-editors/vscodium-1.97.1.25044 create mode 100644 metadata/md5-cache/app-editors/wily-1.0-r3 create mode 100644 metadata/md5-cache/app-editors/zed-0.172.10 delete mode 100644 metadata/md5-cache/app-editors/zed-0.172.8 create mode 100644 metadata/md5-cache/app-emacs/ghub-4.2.1 create mode 100644 metadata/md5-cache/app-emacs/multiple-cursors-1.5.0 delete mode 100644 metadata/md5-cache/app-emacs/nxml-libvirt-schemas-10.0.0 delete mode 100644 metadata/md5-cache/app-emacs/nxml-libvirt-schemas-10.1.0 create mode 100644 metadata/md5-cache/app-emacs/nxml-libvirt-schemas-11.0.0 delete mode 100644 metadata/md5-cache/app-emacs/nxml-libvirt-schemas-9.8.0 delete mode 100644 metadata/md5-cache/app-emacs/nxml-libvirt-schemas-9.9.0 create mode 100644 metadata/md5-cache/app-emacs/parsebib-6.6 delete mode 100644 metadata/md5-cache/app-emulation/86Box-4.2.1 create mode 100644 metadata/md5-cache/app-emulation/86Box-4.2.1-r1 delete mode 100644 metadata/md5-cache/app-emulation/libvirt-10.1.0-r4 create mode 100644 metadata/md5-cache/app-emulation/libvirt-11.0.0 delete mode 100644 metadata/md5-cache/app-emulation/libvirt-9.8.0-r5 delete mode 100644 metadata/md5-cache/app-emulation/libvirt-9.9.0-r5 delete mode 100644 metadata/md5-cache/app-emulation/virtiofsd-1.10.0-r1 create mode 100644 metadata/md5-cache/app-emulation/virtiofsd-1.10.0-r2 delete mode 100644 metadata/md5-cache/app-emulation/virtiofsd-1.10.1-r1 create mode 100644 metadata/md5-cache/app-emulation/virtiofsd-1.10.1-r2 delete mode 100644 metadata/md5-cache/app-emulation/virtiofsd-1.11.1-r1 create mode 100644 metadata/md5-cache/app-emulation/virtiofsd-1.11.1-r2 create mode 100644 metadata/md5-cache/app-emulation/virtualbox-kvm-7.1.6a_pre20250207 delete mode 100644 metadata/md5-cache/app-emulation/wine-gecko-2.47.2 delete mode 100644 metadata/md5-cache/app-emulation/wine-mono-7.0.0 delete mode 100644 metadata/md5-cache/app-emulation/wine-mono-9.2.0 delete mode 100644 metadata/md5-cache/app-emulation/wine-mono-9.3.0 delete mode 100644 metadata/md5-cache/app-emulation/wine-proton-7.0.6 create mode 100644 metadata/md5-cache/app-emulation/wine-staging-10.1 delete mode 100644 metadata/md5-cache/app-emulation/wine-staging-9.19 delete mode 100644 metadata/md5-cache/app-emulation/wine-staging-9.20 delete mode 100644 metadata/md5-cache/app-emulation/wine-staging-9.21 delete mode 100644 metadata/md5-cache/app-emulation/wine-staging-9.22 delete mode 100644 metadata/md5-cache/app-emulation/wine-vanilla-7.0.2 create mode 100644 metadata/md5-cache/app-i18n/fcitx-5.1.12 create mode 100644 metadata/md5-cache/app-i18n/fcitx-anthy-5.1.6 create mode 100644 metadata/md5-cache/app-i18n/fcitx-chewing-5.1.7 create mode 100644 metadata/md5-cache/app-i18n/fcitx-chinese-addons-5.1.8 create mode 100644 metadata/md5-cache/app-i18n/fcitx-configtool-5.1.8 create mode 100644 metadata/md5-cache/app-i18n/fcitx-hangul-5.1.6 create mode 100644 metadata/md5-cache/app-i18n/fcitx-lua-5.0.14 create mode 100644 metadata/md5-cache/app-i18n/fcitx-m17n-5.1.3 create mode 100644 metadata/md5-cache/app-i18n/fcitx-qt-5.1.9 create mode 100644 metadata/md5-cache/app-i18n/fcitx-rime-5.1.10 create mode 100644 metadata/md5-cache/app-i18n/fcitx-sayura-5.1.3 create mode 100644 metadata/md5-cache/app-i18n/fcitx-table-extra-5.1.7 create mode 100644 metadata/md5-cache/app-i18n/fcitx-table-other-5.1.4 create mode 100644 metadata/md5-cache/app-i18n/fcitx-unikey-5.1.6 create mode 100644 metadata/md5-cache/app-i18n/gnulib-l10n-20241231 create mode 100644 metadata/md5-cache/app-i18n/jfbterm-0.4.7-r5 create mode 100644 metadata/md5-cache/app-i18n/libime-1.1.10 delete mode 100644 metadata/md5-cache/app-i18n/librime-1.11.2 create mode 100644 metadata/md5-cache/app-i18n/librime-1.13.0 delete mode 100644 metadata/md5-cache/app-i18n/librime-1.7.3-r1 delete mode 100644 metadata/md5-cache/app-i18n/opencc-1.1.4 delete mode 100644 metadata/md5-cache/app-i18n/opencc-1.1.7-r1 create mode 100644 metadata/md5-cache/app-i18n/opencc-1.1.7-r2 create mode 100644 metadata/md5-cache/app-i18n/opencc-1.1.9 create mode 100644 metadata/md5-cache/app-i18n/rime-data-1.0.20250124 create mode 100644 metadata/md5-cache/app-i18n/xvnkb-0.2.11-r1 delete mode 100644 metadata/md5-cache/app-misc/boxes-2.2.1 delete mode 100644 metadata/md5-cache/app-misc/boxes-2.3.0 create mode 100644 metadata/md5-cache/app-misc/broot-1.44.7 delete mode 100644 metadata/md5-cache/app-misc/fastfetch-2.30.1 create mode 100644 metadata/md5-cache/app-misc/fastfetch-2.36.1 delete mode 100644 metadata/md5-cache/app-misc/francis-24.12.1 create mode 100644 metadata/md5-cache/app-misc/tmuxp-1.52.2 create mode 100644 metadata/md5-cache/app-office/calligra-24.12.2 create mode 100644 metadata/md5-cache/app-office/kmymoney-5.1.92 delete mode 100644 metadata/md5-cache/app-office/ledger-3.3.2-r1 create mode 100644 metadata/md5-cache/app-office/libalkimia-8.1.92_p20250211 create mode 100644 metadata/md5-cache/app-office/libreoffice-bin-24.8.4 create mode 100644 metadata/md5-cache/app-office/libreoffice-bin-25.2.0 delete mode 100644 metadata/md5-cache/app-office/merkuro-24.12.1 create mode 100644 metadata/md5-cache/app-portage/cpuid2cpuflags-15 create mode 100644 metadata/md5-cache/app-portage/elogv-0.8.4 delete mode 100644 metadata/md5-cache/app-portage/pycargoebuild-0.13.4 create mode 100644 metadata/md5-cache/app-shells/bash-5.3_beta_p20250210 create mode 100644 metadata/md5-cache/app-shells/bash-5.3_beta_p20250212 create mode 100644 metadata/md5-cache/app-shells/fzf-0.59.0 create mode 100644 metadata/md5-cache/app-shells/rc-1.7.4-r3 create mode 100644 metadata/md5-cache/app-shells/zoxide-0.9.7 create mode 100644 metadata/md5-cache/app-text/chasen-2.4.5-r1 delete mode 100644 metadata/md5-cache/app-text/fbreader-0.99.4-r6 delete mode 100644 metadata/md5-cache/app-text/pandoc-bin-3.5 create mode 100644 metadata/md5-cache/app-text/pandoc-bin-3.6.3 delete mode 100644 metadata/md5-cache/app-text/pdfpc-4.6.0-r2 create mode 100644 metadata/md5-cache/app-text/poppler-25.02.0 create mode 100644 metadata/md5-cache/app-text/qpdf-11.10.0 delete mode 100644 metadata/md5-cache/dev-ada/gnatdoc-24.0.0 create mode 100644 metadata/md5-cache/dev-ada/gnatdoc-24.0.0-r1 delete mode 100644 metadata/md5-cache/dev-ada/gnatdoc-25.0.0 create mode 100644 metadata/md5-cache/dev-ada/gnatdoc-25.0.0-r1 create mode 100644 metadata/md5-cache/dev-ada/gpr-24.2.0 create mode 100644 metadata/md5-cache/dev-ada/lal-refactor-25.0.0 delete mode 100644 metadata/md5-cache/dev-build/bazel-buildtools-8.0.2 create mode 100644 metadata/md5-cache/dev-build/bazel-buildtools-8.0.3 delete mode 100644 metadata/md5-cache/dev-build/dolphin-plugins-makefileactions-24.12.1 create mode 100644 metadata/md5-cache/dev-build/just-1.39.0 create mode 100644 metadata/md5-cache/dev-build/muon-0.4.0 create mode 100644 metadata/md5-cache/dev-build/rocm-cmake-6.3.2 delete mode 100644 metadata/md5-cache/dev-cpp/asio-1.28.1 delete mode 100644 metadata/md5-cache/dev-cpp/asio-1.30.1 delete mode 100644 metadata/md5-cache/dev-cpp/cctz-2.3_p20230228 delete mode 100644 metadata/md5-cache/dev-cpp/cpp-httplib-0.18.0 create mode 100644 metadata/md5-cache/dev-cpp/cpp-httplib-0.18.6 create mode 100644 metadata/md5-cache/dev-cpp/rapidfuzz-cpp-3.3.2 delete mode 100644 metadata/md5-cache/dev-cpp/sol2-3.3.1 delete mode 100644 metadata/md5-cache/dev-cpp/yaml-cpp-0.7.0-r2 create mode 100644 metadata/md5-cache/dev-db/duckdb-1.2.0 create mode 100644 metadata/md5-cache/dev-db/mongodb-compass-bin-1.45.3 delete mode 100644 metadata/md5-cache/dev-db/postgresql-12.22 create mode 100644 metadata/md5-cache/dev-db/postgresql-13.19 create mode 100644 metadata/md5-cache/dev-db/postgresql-14.16 create mode 100644 metadata/md5-cache/dev-db/postgresql-15.11 create mode 100644 metadata/md5-cache/dev-db/postgresql-16.7 create mode 100644 metadata/md5-cache/dev-db/postgresql-17.3 create mode 100644 metadata/md5-cache/dev-db/spatialite-5.1.0-r2 delete mode 100644 metadata/md5-cache/dev-db/sqlite-3.48.0-r1 create mode 100644 metadata/md5-cache/dev-db/sqlite-3.49.0 delete mode 100644 metadata/md5-cache/dev-db/sqlmap-1.8.9 create mode 100644 metadata/md5-cache/dev-db/sqlmap-1.9 delete mode 100644 metadata/md5-cache/dev-db/timescaledb-2.18.0 create mode 100644 metadata/md5-cache/dev-db/timescaledb-2.18.1 delete mode 100644 metadata/md5-cache/dev-db/tora-3.2-r2 delete mode 100644 metadata/md5-cache/dev-debug/gdb-16.1 create mode 100644 metadata/md5-cache/dev-debug/gprofng-gui-2.0 create mode 100644 metadata/md5-cache/dev-dotnet/fsautocomplete-0.76.1 create mode 100644 metadata/md5-cache/dev-games/libnw-1.30.02-r2 delete mode 100644 metadata/md5-cache/dev-java/checker-framework-qual-3.48.3 delete mode 100644 metadata/md5-cache/dev-java/jol-core-0.16-r1 delete mode 100644 metadata/md5-cache/dev-java/openjdk-25_p8 create mode 100644 metadata/md5-cache/dev-java/openjdk-25_p9 delete mode 100644 metadata/md5-cache/dev-java/openjdk-bin-25_p8_beta create mode 100644 metadata/md5-cache/dev-java/openjdk-bin-25_p9_beta delete mode 100644 metadata/md5-cache/dev-java/stax2-api-4.2.1-r1 create mode 100644 metadata/md5-cache/dev-java/stax2-api-4.2.2 create mode 100644 metadata/md5-cache/dev-lang/crystal-1.15.1 create mode 100644 metadata/md5-cache/dev-lang/dafny-4.10.0 create mode 100644 metadata/md5-cache/dev-lang/mmix-20160804-r2 create mode 100644 metadata/md5-cache/dev-lang/nim-2.2.2 create mode 100644 metadata/md5-cache/dev-lang/nprolog-3.90 delete mode 100644 metadata/md5-cache/dev-lang/pypy-3.11.7.3.18 create mode 100644 metadata/md5-cache/dev-lang/pypy-3.11.7.3.18_p1 create mode 100644 metadata/md5-cache/dev-lang/python-3.14.0_alpha5 create mode 100644 metadata/md5-cache/dev-lang/python-3.14.0_alpha5-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.71.1-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.71.1-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.74.1-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.74.1-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.75.0-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.75.0-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.76.0-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.76.0-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.77.1-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.77.1-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.78.0-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.78.0-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.79.0-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.79.0-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.80.1-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.80.1-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.81.0-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-1.81.0-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.82.0-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.82.0-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-1.82.0-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.83.0-r1 create mode 100644 metadata/md5-cache/dev-lang/rust-1.83.0-r2 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.84.0 create mode 100644 metadata/md5-cache/dev-lang/rust-1.84.0-r1 delete mode 100644 metadata/md5-cache/dev-lang/rust-1.84.1 create mode 100644 metadata/md5-cache/dev-lang/rust-1.84.1-r1 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.71.1-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.71.1-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.71.1-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.74.1-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.74.1-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.74.1-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.75.0-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.75.0-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.75.0-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.76.0-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.76.0-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.77.1-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.77.1-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.77.1-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.78.0-r100 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.78.0-r101 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.79.0-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.79.0-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.79.0-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.80.1-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.80.1-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.80.1-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.81.0-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.81.0-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.81.0-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.82.0-r100 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.82.0-r101 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.82.0-r102 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.83.0 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.83.0-r1 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.84.0 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.84.0-r1 delete mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.84.1 create mode 100644 metadata/md5-cache/dev-lang/rust-bin-1.84.1-r1 create mode 100644 metadata/md5-cache/dev-lang/spark-2024.01.11-r1 delete mode 100644 metadata/md5-cache/dev-lang/spidermonkey-128.5.0 create mode 100644 metadata/md5-cache/dev-lang/spidermonkey-128.7.0 delete mode 100644 metadata/md5-cache/dev-lang/xsb-4.0.0-r1 create mode 100644 metadata/md5-cache/dev-lang/xsb-4.0.0-r2 delete mode 100644 metadata/md5-cache/dev-libs/apache-arrow-18.0.0 delete mode 100644 metadata/md5-cache/dev-libs/apache-arrow-18.1.0-r2 create mode 100644 metadata/md5-cache/dev-libs/c-blosc2-2.16.0 create mode 100644 metadata/md5-cache/dev-libs/ell-0.72 delete mode 100644 metadata/md5-cache/dev-libs/flatbuffers-24.12.23 delete mode 100644 metadata/md5-cache/dev-libs/flatbuffers-25.1.21 create mode 100644 metadata/md5-cache/dev-libs/flatbuffers-25.2.10 delete mode 100644 metadata/md5-cache/dev-libs/gumbo-0.12.2 create mode 100644 metadata/md5-cache/dev-libs/gumbo-0.13.0 create mode 100644 metadata/md5-cache/dev-libs/hipother-6.3.2 delete mode 100644 metadata/md5-cache/dev-libs/kirigami-addons-1.5.0 delete mode 100644 metadata/md5-cache/dev-libs/kopeninghours-24.12.1 delete mode 100644 metadata/md5-cache/dev-libs/kosmindoormap-24.12.1 delete mode 100644 metadata/md5-cache/dev-libs/kpublictransport-24.12.1 delete mode 100644 metadata/md5-cache/dev-libs/kqoauth-0.98-r3 delete mode 100644 metadata/md5-cache/dev-libs/kweathercore-24.12.1 create mode 100644 metadata/md5-cache/dev-libs/libcdio-2.2.0 create mode 100644 metadata/md5-cache/dev-libs/libcdio-paranoia-2.0.2 create mode 100644 metadata/md5-cache/dev-libs/libei-1.4.0 create mode 100644 metadata/md5-cache/dev-libs/libffi-3.4.7 delete mode 100644 metadata/md5-cache/dev-libs/libintl-0.23 create mode 100644 metadata/md5-cache/dev-libs/libintl-0.23.1 delete mode 100644 metadata/md5-cache/dev-libs/libpcre2-10.42-r1 delete mode 100644 metadata/md5-cache/dev-libs/libpcre2-10.42-r2 delete mode 100644 metadata/md5-cache/dev-libs/libpcre2-10.43 create mode 100644 metadata/md5-cache/dev-libs/libpcre2-10.45 create mode 100644 metadata/md5-cache/dev-libs/libtasn1-4.20.0 create mode 100644 metadata/md5-cache/dev-libs/libvformat-1.13-r3 delete mode 100644 metadata/md5-cache/dev-libs/libxml2-2.11.8 delete mode 100644 metadata/md5-cache/dev-libs/libxml2-2.12.8 delete mode 100644 metadata/md5-cache/dev-libs/mimalloc-2.1.8 delete mode 100644 metadata/md5-cache/dev-libs/nspr-4.35-r2 create mode 100644 metadata/md5-cache/dev-libs/openct-0.6.20-r6 create mode 100644 metadata/md5-cache/dev-libs/openssl-3.0.16 create mode 100644 metadata/md5-cache/dev-libs/openssl-3.1.8 create mode 100644 metadata/md5-cache/dev-libs/openssl-3.2.4 create mode 100644 metadata/md5-cache/dev-libs/openssl-3.3.3 create mode 100644 metadata/md5-cache/dev-libs/openssl-3.4.1 delete mode 100644 metadata/md5-cache/dev-libs/poco-1.12.4 create mode 100644 metadata/md5-cache/dev-libs/poco-1.14.1 create mode 100644 metadata/md5-cache/dev-libs/protobuf-c-1.5.1 delete mode 100644 metadata/md5-cache/dev-libs/qcoro5-0.10.0-r1 delete mode 100644 metadata/md5-cache/dev-libs/qoauth-2.0.1_pre20160315-r3 create mode 100644 metadata/md5-cache/dev-libs/rocdbgapi-6.3.2 delete mode 100644 metadata/md5-cache/dev-libs/rocm-comgr-5.1.3-r3 delete mode 100644 metadata/md5-cache/dev-libs/rocm-comgr-5.3.3-r2 delete mode 100644 metadata/md5-cache/dev-libs/rocm-comgr-5.4.3-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocm-comgr-5.5.1 delete mode 100644 metadata/md5-cache/dev-libs/rocm-comgr-6.3.0 create mode 100644 metadata/md5-cache/dev-libs/rocm-comgr-6.3.2-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocm-device-libs-5.1.3-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocm-device-libs-5.3.3 delete mode 100644 metadata/md5-cache/dev-libs/rocm-device-libs-5.4.3 delete mode 100644 metadata/md5-cache/dev-libs/rocm-device-libs-5.5.1 create mode 100644 metadata/md5-cache/dev-libs/rocm-device-libs-6.3.2 delete mode 100644 metadata/md5-cache/dev-libs/rocm-opencl-runtime-5.1.3 delete mode 100644 metadata/md5-cache/dev-libs/rocm-opencl-runtime-5.3.3-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocm-opencl-runtime-5.4.3-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocm-opencl-runtime-5.5.1 create mode 100644 metadata/md5-cache/dev-libs/rocm-opencl-runtime-6.3.2 delete mode 100644 metadata/md5-cache/dev-libs/rocr-runtime-5.1.3-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocr-runtime-5.3.3-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocr-runtime-5.4.3-r1 delete mode 100644 metadata/md5-cache/dev-libs/rocr-runtime-5.5.1 create mode 100644 metadata/md5-cache/dev-libs/rocr-runtime-6.3.2 delete mode 100644 metadata/md5-cache/dev-libs/roct-thunk-interface-5.1.3 delete mode 100644 metadata/md5-cache/dev-libs/roct-thunk-interface-5.3.3 delete mode 100644 metadata/md5-cache/dev-libs/roct-thunk-interface-5.4.3 delete mode 100644 metadata/md5-cache/dev-libs/roct-thunk-interface-5.5.1 create mode 100644 metadata/md5-cache/dev-libs/roct-thunk-interface-6.3.2 create mode 100644 metadata/md5-cache/dev-libs/simdjson-3.12.1-r1 delete mode 100644 metadata/md5-cache/dev-libs/tre-0.8.0_p20210321-r1 delete mode 100644 metadata/md5-cache/dev-libs/tre-0.8.0_p20210321-r2 delete mode 100644 metadata/md5-cache/dev-libs/tre-0.8.0_p20210321-r3 create mode 100644 metadata/md5-cache/dev-libs/tre-0.9.0-r1 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-0.25.1 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-bash-0.23.3 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-c-0.23.2 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-c-0.23.3 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-c-0.23.4 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-c-0.23.5 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-css-0.23.2 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-go-0.23.4 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-html-0.23.2 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-javascript-0.23.1 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-json-0.24.8 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-python-0.23.6 create mode 100644 metadata/md5-cache/dev-libs/tree-sitter-rust-0.23.2 delete mode 100644 metadata/md5-cache/dev-lisp/c2ffi-18.1.0.20240926 create mode 100644 metadata/md5-cache/dev-lisp/c2ffi-18.1.0.20240926-r1 create mode 100644 metadata/md5-cache/dev-ml/llvm-20.1.0_rc2 create mode 100644 metadata/md5-cache/dev-ml/llvm-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/dev-ml/llvm-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/dev-ml/reason-3.15.0 create mode 100644 metadata/md5-cache/dev-perl/Business-ISBN-Data-20250205.1.0 create mode 100644 metadata/md5-cache/dev-perl/Business-ISSN-1.8.0 create mode 100644 metadata/md5-cache/dev-perl/Crypt-URandom-0.530.0 create mode 100644 metadata/md5-cache/dev-perl/CryptX-0.85.0 create mode 100644 metadata/md5-cache/dev-perl/Glib-Object-Introspection-0.51.0-r1 create mode 100644 metadata/md5-cache/dev-perl/IO-Interactive-1.26.0 create mode 100644 metadata/md5-cache/dev-perl/MIME-Types-2.270.0 create mode 100644 metadata/md5-cache/dev-perl/Mail-DMARC-1.202.502.30 create mode 100644 metadata/md5-cache/dev-perl/Perl-Version-1.18.0 create mode 100644 metadata/md5-cache/dev-perl/Sys-Virt-11.0.0 create mode 100644 metadata/md5-cache/dev-perl/Text-CSV_XS-1.600.0 create mode 100644 metadata/md5-cache/dev-perl/XS-Parse-Sublike-0.370.0 create mode 100644 metadata/md5-cache/dev-perl/YAML-LibYAML-0.903.0 delete mode 100644 metadata/md5-cache/dev-php/pecl-ssh2-1.4.1 create mode 100644 metadata/md5-cache/dev-php/pecl-ssh2-1.4.1-r1 delete mode 100644 metadata/md5-cache/dev-php/pecl-stomp-2.0.3-r1 create mode 100644 metadata/md5-cache/dev-php/pecl-stomp-2.0.3-r2 create mode 100644 metadata/md5-cache/dev-python/aiohappyeyeballs-2.4.6 delete mode 100644 metadata/md5-cache/dev-python/aioresponses-0.7.7 create mode 100644 metadata/md5-cache/dev-python/aiounittest-1.4.3 delete mode 100644 metadata/md5-cache/dev-python/alembic-1.14.0 create mode 100644 metadata/md5-cache/dev-python/apsw-3.49.0.0 delete mode 100644 metadata/md5-cache/dev-python/atpublic-4.1.0 delete mode 100644 metadata/md5-cache/dev-python/atpublic-5.0 delete mode 100644 metadata/md5-cache/dev-python/bincopy-20.0.0 delete mode 100644 metadata/md5-cache/dev-python/boto3-1.36.12 delete mode 100644 metadata/md5-cache/dev-python/boto3-1.36.13 delete mode 100644 metadata/md5-cache/dev-python/boto3-1.36.14 delete mode 100644 metadata/md5-cache/dev-python/boto3-1.36.15 create mode 100644 metadata/md5-cache/dev-python/boto3-1.36.16 create mode 100644 metadata/md5-cache/dev-python/boto3-1.36.17 create mode 100644 metadata/md5-cache/dev-python/boto3-1.36.18 create mode 100644 metadata/md5-cache/dev-python/boto3-1.36.19 delete mode 100644 metadata/md5-cache/dev-python/boto3-1.36.2 create mode 100644 metadata/md5-cache/dev-python/boto3-1.36.20 delete mode 100644 metadata/md5-cache/dev-python/botocore-1.36.12 delete mode 100644 metadata/md5-cache/dev-python/botocore-1.36.13 delete mode 100644 metadata/md5-cache/dev-python/botocore-1.36.14 delete mode 100644 metadata/md5-cache/dev-python/botocore-1.36.15 create mode 100644 metadata/md5-cache/dev-python/botocore-1.36.16 create mode 100644 metadata/md5-cache/dev-python/botocore-1.36.17 create mode 100644 metadata/md5-cache/dev-python/botocore-1.36.18 create mode 100644 metadata/md5-cache/dev-python/botocore-1.36.19 delete mode 100644 metadata/md5-cache/dev-python/botocore-1.36.2 create mode 100644 metadata/md5-cache/dev-python/botocore-1.36.20 delete mode 100644 metadata/md5-cache/dev-python/cachetools-5.5.0 delete mode 100644 metadata/md5-cache/dev-python/cfn-lint-1.22.3 create mode 100644 metadata/md5-cache/dev-python/cfn-lint-1.25.1 create mode 100644 metadata/md5-cache/dev-python/clang-20.1.0_rc2 create mode 100644 metadata/md5-cache/dev-python/clang-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/dev-python/clang-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/dev-python/coverage-7.6.11 create mode 100644 metadata/md5-cache/dev-python/coverage-7.6.12 create mode 100644 metadata/md5-cache/dev-python/cppy-1.3.1 create mode 100644 metadata/md5-cache/dev-python/cryptography-44.0.1 create mode 100644 metadata/md5-cache/dev-python/cwcwidth-0.1.10 create mode 100644 metadata/md5-cache/dev-python/cython-3.0.12 create mode 100644 metadata/md5-cache/dev-python/dependency-groups-1.3.0 delete mode 100644 metadata/md5-cache/dev-python/deprecated-1.2.15 delete mode 100644 metadata/md5-cache/dev-python/elasticsearch-8.17.0 create mode 100644 metadata/md5-cache/dev-python/ensurepip-pip-25.0.1 delete mode 100644 metadata/md5-cache/dev-python/environs-11.2.1 delete mode 100644 metadata/md5-cache/dev-python/environs-12.0.0 delete mode 100644 metadata/md5-cache/dev-python/environs-14.0.0 create mode 100644 metadata/md5-cache/dev-python/environs-14.1.1 create mode 100644 metadata/md5-cache/dev-python/evdev-1.9.0 delete mode 100644 metadata/md5-cache/dev-python/faker-33.3.1 create mode 100644 metadata/md5-cache/dev-python/faker-35.2.2 create mode 100644 metadata/md5-cache/dev-python/faker-36.1.0 create mode 100644 metadata/md5-cache/dev-python/faker-36.1.1 create mode 100644 metadata/md5-cache/dev-python/fakeredis-2.27.0 delete mode 100644 metadata/md5-cache/dev-python/filelock-3.16.1 create mode 100644 metadata/md5-cache/dev-python/fixtures-4.2.3 create mode 100644 metadata/md5-cache/dev-python/fixtures-4.2.4_p1 delete mode 100644 metadata/md5-cache/dev-python/flatbuffers-24.12.23 delete mode 100644 metadata/md5-cache/dev-python/flatbuffers-25.1.21 create mode 100644 metadata/md5-cache/dev-python/flatbuffers-25.2.10 create mode 100644 metadata/md5-cache/dev-python/fonttools-4.56.0 delete mode 100644 metadata/md5-cache/dev-python/fpylll-0.6.2 create mode 100644 metadata/md5-cache/dev-python/gdb-pt-dump-0.0.0_p20250105 create mode 100644 metadata/md5-cache/dev-python/google-api-python-client-2.161.0 delete mode 100644 metadata/md5-cache/dev-python/google-auth-2.37.0 create mode 100644 metadata/md5-cache/dev-python/googleapis-common-protos-1.67.0 delete mode 100644 metadata/md5-cache/dev-python/griffe-1.5.5 create mode 100644 metadata/md5-cache/dev-python/griffe-1.5.7 delete mode 100644 metadata/md5-cache/dev-python/hpack-4.0.0-r1 delete mode 100644 metadata/md5-cache/dev-python/hyperframe-6.0.1-r1 delete mode 100644 metadata/md5-cache/dev-python/hypothesis-6.123.17 delete mode 100644 metadata/md5-cache/dev-python/hypothesis-6.124.7 delete mode 100644 metadata/md5-cache/dev-python/hypothesis-6.125.0 delete mode 100644 metadata/md5-cache/dev-python/hypothesis-6.125.1 create mode 100644 metadata/md5-cache/dev-python/hypothesis-6.125.3 delete mode 100644 metadata/md5-cache/dev-python/icalendar-6.1.0 delete mode 100644 metadata/md5-cache/dev-python/identify-2.6.5 create mode 100644 metadata/md5-cache/dev-python/identify-2.6.7 delete mode 100644 metadata/md5-cache/dev-python/importlib-metadata-8.5.0 create mode 100644 metadata/md5-cache/dev-python/inline-snapshot-0.20.2 delete mode 100644 metadata/md5-cache/dev-python/josepy-1.14.0 create mode 100644 metadata/md5-cache/dev-python/josepy-2.0.0 delete mode 100644 metadata/md5-cache/dev-python/jsonschema-path-0.3.3 delete mode 100644 metadata/md5-cache/dev-python/libvirt-python-10.1.0 create mode 100644 metadata/md5-cache/dev-python/libvirt-python-11.0.0 delete mode 100644 metadata/md5-cache/dev-python/libvirt-python-9.8.0 delete mode 100644 metadata/md5-cache/dev-python/libvirt-python-9.9.0 create mode 100644 metadata/md5-cache/dev-python/lit-20.1.0_rc2 create mode 100644 metadata/md5-cache/dev-python/lit-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/dev-python/lit-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/dev-python/lxml-5.3.1 delete mode 100644 metadata/md5-cache/dev-python/markdown2-2.5.2 delete mode 100644 metadata/md5-cache/dev-python/mcbootflash-10.0.0-r1 delete mode 100644 metadata/md5-cache/dev-python/mcbootflash-10.1.0 delete mode 100644 metadata/md5-cache/dev-python/mkdocs-autorefs-1.2.0 create mode 100644 metadata/md5-cache/dev-python/mkdocs-autorefs-1.3.1 create mode 100644 metadata/md5-cache/dev-python/mkdocs-material-9.6.3 create mode 100644 metadata/md5-cache/dev-python/mkdocs-material-9.6.4 delete mode 100644 metadata/md5-cache/dev-python/mkdocs-static-i18n-1.2.3 delete mode 100644 metadata/md5-cache/dev-python/mkdocstrings-python-1.13.0 delete mode 100644 metadata/md5-cache/dev-python/mkdocstrings-python-1.14.3 delete mode 100644 metadata/md5-cache/dev-python/mkdocstrings-python-1.14.4 delete mode 100644 metadata/md5-cache/dev-python/mkdocstrings-python-1.14.5 create mode 100644 metadata/md5-cache/dev-python/mkdocstrings-python-1.14.6 create mode 100644 metadata/md5-cache/dev-python/mkdocstrings-python-1.14.7 create mode 100644 metadata/md5-cache/dev-python/mkdocstrings-python-1.15.0 delete mode 100644 metadata/md5-cache/dev-python/moto-5.0.26 create mode 100644 metadata/md5-cache/dev-python/myst-parser-4.0.1 delete mode 100644 metadata/md5-cache/dev-python/nox-2024.04.15 create mode 100644 metadata/md5-cache/dev-python/nox-2025.02.09 create mode 100644 metadata/md5-cache/dev-python/nuitka-2.6.5 delete mode 100644 metadata/md5-cache/dev-python/numpy-2.2.0 delete mode 100644 metadata/md5-cache/dev-python/numpy-2.2.1 create mode 100644 metadata/md5-cache/dev-python/numpy-2.2.3 create mode 100644 metadata/md5-cache/dev-python/oslo-utils-8.1.0 delete mode 100644 metadata/md5-cache/dev-python/owslib-0.32.0 delete mode 100644 metadata/md5-cache/dev-python/pbs-installer-2025.01.06 create mode 100644 metadata/md5-cache/dev-python/pbs-installer-2025.02.12 create mode 100644 metadata/md5-cache/dev-python/pikepdf-9.5.2 create mode 100644 metadata/md5-cache/dev-python/pip-25.0.1 delete mode 100644 metadata/md5-cache/dev-python/prettytable-3.12.0 delete mode 100644 metadata/md5-cache/dev-python/prompt-toolkit-3.0.48 create mode 100644 metadata/md5-cache/dev-python/psutil-7.0.0 delete mode 100644 metadata/md5-cache/dev-python/pyarrow-18.0.0 delete mode 100644 metadata/md5-cache/dev-python/pyarrow-18.1.0 delete mode 100644 metadata/md5-cache/dev-python/pycpio-1.4.1 delete mode 100644 metadata/md5-cache/dev-python/pydantic-2.10.5 delete mode 100644 metadata/md5-cache/dev-python/pydantic-2.11.0_alpha1 create mode 100644 metadata/md5-cache/dev-python/pydantic-2.11.0_alpha2 delete mode 100644 metadata/md5-cache/dev-python/pydantic-core-2.28.0 create mode 100644 metadata/md5-cache/dev-python/pydantic-core-2.29.0 create mode 100644 metadata/md5-cache/dev-python/pyghmi-1.5.76 delete mode 100644 metadata/md5-cache/dev-python/pyglet-2.0.21 create mode 100644 metadata/md5-cache/dev-python/pymediainfo-7.0.0 create mode 100644 metadata/md5-cache/dev-python/pymediainfo-7.0.1 delete mode 100644 metadata/md5-cache/dev-python/pymongo-4.10.0 create mode 100644 metadata/md5-cache/dev-python/pymongo-4.11.1 delete mode 100644 metadata/md5-cache/dev-python/pymongo-4.9.1 delete mode 100644 metadata/md5-cache/dev-python/pymongo-4.9.2 delete mode 100644 metadata/md5-cache/dev-python/pyopengl-accelerate-3.1.8-r1 create mode 100644 metadata/md5-cache/dev-python/pypdf-5.3.0 delete mode 100644 metadata/md5-cache/dev-python/pyphen-0.17.0 delete mode 100644 metadata/md5-cache/dev-python/pyproject-api-1.8.0 create mode 100644 metadata/md5-cache/dev-python/pypy3-7.3.18-r100 create mode 100644 metadata/md5-cache/dev-python/pysol-cards-0.18.1 delete mode 100644 metadata/md5-cache/dev-python/pytest-aiohttp-1.0.5 create mode 100644 metadata/md5-cache/dev-python/pytest-check-2.4.2 create mode 100644 metadata/md5-cache/dev-python/pytest-check-2.5.0 create mode 100644 metadata/md5-cache/dev-python/pytest-datadir-1.6.1 create mode 100644 metadata/md5-cache/dev-python/pytest-django-4.10.0 delete mode 100644 metadata/md5-cache/dev-python/pytest-httpserver-1.1.0 create mode 100644 metadata/md5-cache/dev-python/python-lsp-server-1.12.2 create mode 100644 metadata/md5-cache/dev-python/qtpy-2.4.3 delete mode 100644 metadata/md5-cache/dev-python/recurring-ical-events-3.3.3 delete mode 100644 metadata/md5-cache/dev-python/recurring-ical-events-3.3.4 delete mode 100644 metadata/md5-cache/dev-python/recurring-ical-events-3.4.0 delete mode 100644 metadata/md5-cache/dev-python/recurring-ical-events-3.4.1 create mode 100644 metadata/md5-cache/dev-python/recurring-ical-events-3.5.0 create mode 100644 metadata/md5-cache/dev-python/recurring-ical-events-3.5.1 create mode 100644 metadata/md5-cache/dev-python/recurring-ical-events-3.5.2 create mode 100644 metadata/md5-cache/dev-python/reportlab-4.3.1 delete mode 100644 metadata/md5-cache/dev-python/semver-3.0.2 create mode 100644 metadata/md5-cache/dev-python/sphinx-autoapi-3.5.0 create mode 100644 metadata/md5-cache/dev-python/sphinx-gallery-0.19.0 delete mode 100644 metadata/md5-cache/dev-python/sphinxygen-1.0.6 create mode 100644 metadata/md5-cache/dev-python/sqlglot-26.6.0 delete mode 100644 metadata/md5-cache/dev-python/starlette-0.44.0 delete mode 100644 metadata/md5-cache/dev-python/tox-4.23.2 create mode 100644 metadata/md5-cache/dev-python/translate-toolkit-3.14.8 create mode 100644 metadata/md5-cache/dev-python/tree-sitter-0.24.0 create mode 100644 metadata/md5-cache/dev-python/trimesh-4.6.2 create mode 100644 metadata/md5-cache/dev-python/truststore-0.10.1 delete mode 100644 metadata/md5-cache/dev-python/types-setuptools-75.6.0.20241223 create mode 100644 metadata/md5-cache/dev-python/types-setuptools-75.8.0.20250210 create mode 100644 metadata/md5-cache/dev-python/tzlocal-5.3 create mode 100644 metadata/md5-cache/dev-python/virtualenv-20.29.2 create mode 100644 metadata/md5-cache/dev-python/virtualenvwrapper-6.1.1 delete mode 100644 metadata/md5-cache/dev-python/xlsxwriter-3.2.0 create mode 100644 metadata/md5-cache/dev-python/zeroconf-0.143.1 create mode 100644 metadata/md5-cache/dev-python/zeroconf-0.144.1 delete mode 100644 metadata/md5-cache/dev-qt/qtstyleplugins-5.0.0_p20170311-r1 delete mode 100644 metadata/md5-cache/dev-qt/qtwebengine-6.8.2 create mode 100644 metadata/md5-cache/dev-qt/qtwebengine-6.8.2-r1 delete mode 100644 metadata/md5-cache/dev-ruby/dust-0.1.7-r3 create mode 100644 metadata/md5-cache/dev-ruby/fakefs-3.0.0 delete mode 100644 metadata/md5-cache/dev-ruby/net-imap-0.4.18 create mode 100644 metadata/md5-cache/dev-ruby/net-imap-0.4.19 delete mode 100644 metadata/md5-cache/dev-ruby/net-imap-0.5.3 delete mode 100644 metadata/md5-cache/dev-ruby/net-imap-0.5.4 create mode 100644 metadata/md5-cache/dev-ruby/net-imap-0.5.6 create mode 100644 metadata/md5-cache/dev-ruby/ox-2.14.22 create mode 100644 metadata/md5-cache/dev-ruby/rack-2.2.11 create mode 100644 metadata/md5-cache/dev-ruby/rack-3.0.12 create mode 100644 metadata/md5-cache/dev-ruby/rack-3.1.10 delete mode 100644 metadata/md5-cache/dev-ruby/sshkit-1.22.2 delete mode 100644 metadata/md5-cache/dev-ruby/sshkit-1.23.0 create mode 100644 metadata/md5-cache/dev-ruby/sshkit-1.24.0 create mode 100644 metadata/md5-cache/dev-ruby/timers-4.4.0 delete mode 100644 metadata/md5-cache/dev-ruby/webmock-3.23.0 delete mode 100644 metadata/md5-cache/dev-ruby/webmock-3.23.1 create mode 100644 metadata/md5-cache/dev-ruby/webmock-3.25.0 delete mode 100644 metadata/md5-cache/dev-tcltk/itk-4.2.3-r1 create mode 100644 metadata/md5-cache/dev-tcltk/itk-4.2.3-r2 delete mode 100644 metadata/md5-cache/dev-util/Tensile-5.1.3-r3 delete mode 100644 metadata/md5-cache/dev-util/Tensile-5.4.2-r2 create mode 100644 metadata/md5-cache/dev-util/Tensile-6.3.2 delete mode 100644 metadata/md5-cache/dev-util/azuredatastudio-1.50.0 create mode 100644 metadata/md5-cache/dev-util/azuredatastudio-1.50.0-r1 create mode 100644 metadata/md5-cache/dev-util/azuredatastudio-1.51.1 delete mode 100644 metadata/md5-cache/dev-util/bear-3.1.4-r2 delete mode 100644 metadata/md5-cache/dev-util/cargo-nextest-0.9.67-r1 delete mode 100644 metadata/md5-cache/dev-util/cargo-nextest-0.9.72-r1 create mode 100644 metadata/md5-cache/dev-util/cargo-nextest-0.9.88 delete mode 100644 metadata/md5-cache/dev-util/cutter-2.3.4 create mode 100644 metadata/md5-cache/dev-util/diffoscope-288 create mode 100644 metadata/md5-cache/dev-util/difftastic-0.63.0 delete mode 100644 metadata/md5-cache/dev-util/fq-0.10.0 delete mode 100644 metadata/md5-cache/dev-util/fq-0.11.0 delete mode 100644 metadata/md5-cache/dev-util/fq-0.12.0 create mode 100644 metadata/md5-cache/dev-util/fq-0.14.0 delete mode 100644 metadata/md5-cache/dev-util/fq-0.9.0 delete mode 100644 metadata/md5-cache/dev-util/fuzz-0.6-r3 create mode 100644 metadata/md5-cache/dev-util/fuzz-0.6-r4 delete mode 100644 metadata/md5-cache/dev-util/github-cli-2.52.0 create mode 100644 metadata/md5-cache/dev-util/github-cli-2.66.1 delete mode 100644 metadata/md5-cache/dev-util/hip-5.1.3-r4 delete mode 100644 metadata/md5-cache/dev-util/hip-5.3.3-r3 delete mode 100644 metadata/md5-cache/dev-util/hip-5.4.3 delete mode 100644 metadata/md5-cache/dev-util/hip-5.5.1 create mode 100644 metadata/md5-cache/dev-util/hip-6.3.2 create mode 100644 metadata/md5-cache/dev-util/hipcc-6.3.2 create mode 100644 metadata/md5-cache/dev-util/hipify-clang-6.3.2 delete mode 100644 metadata/md5-cache/dev-util/hyprwayland-scanner-0.4.0 create mode 100644 metadata/md5-cache/dev-util/hyprwayland-scanner-0.4.4 delete mode 100644 metadata/md5-cache/dev-util/idea-community-2024.3.2.2 create mode 100644 metadata/md5-cache/dev-util/idea-community-2024.3.3 create mode 100644 metadata/md5-cache/dev-util/imediff-3.4.0 delete mode 100644 metadata/md5-cache/dev-util/kdevelop-24.12.1 delete mode 100644 metadata/md5-cache/dev-util/kdevelop-php-24.12.1 delete mode 100644 metadata/md5-cache/dev-util/kdevelop-python-24.12.1 delete mode 100644 metadata/md5-cache/dev-util/kio-perldoc-24.12.1 delete mode 100644 metadata/md5-cache/dev-util/librnp-0.17.1-r1 delete mode 100644 metadata/md5-cache/dev-util/massif-visualizer-24.12.1 create mode 100644 metadata/md5-cache/dev-util/mesa_clc-25.0.0_rc3 delete mode 100644 metadata/md5-cache/dev-util/nvidia-cuda-toolkit-12.6.1 create mode 100644 metadata/md5-cache/dev-util/nvidia-cuda-toolkit-12.6.1-r1 delete mode 100644 metadata/md5-cache/dev-util/pkgcheck-0.10.33 create mode 100644 metadata/md5-cache/dev-util/pkgcheck-0.10.33-r1 create mode 100644 metadata/md5-cache/dev-util/rgbds-0.9.1 delete mode 100644 metadata/md5-cache/dev-util/rizin-0.7.3-r2 delete mode 100644 metadata/md5-cache/dev-util/rocm-smi-5.4.2-r1 delete mode 100644 metadata/md5-cache/dev-util/rocm-smi-5.7.1-r2 create mode 100644 metadata/md5-cache/dev-util/rocm-smi-6.3.2 delete mode 100644 metadata/md5-cache/dev-util/rocm_bandwidth_test-5.3.3 delete mode 100644 metadata/md5-cache/dev-util/rocm_bandwidth_test-5.4.3 create mode 100644 metadata/md5-cache/dev-util/rocm_bandwidth_test-6.3.2 create mode 100644 metadata/md5-cache/dev-util/rocminfo-6.3.2 delete mode 100644 metadata/md5-cache/dev-util/rocprofiler-5.1.3-r1 delete mode 100644 metadata/md5-cache/dev-util/roctracer-5.1.3-r1 delete mode 100644 metadata/md5-cache/dev-util/roctracer-5.3.3-r1 create mode 100644 metadata/md5-cache/dev-util/roctracer-6.3.2 create mode 100644 metadata/md5-cache/dev-util/rr-5.9.0 delete mode 100644 metadata/md5-cache/dev-util/ruff-0.8.2 delete mode 100644 metadata/md5-cache/dev-util/ruff-0.8.4 create mode 100644 metadata/md5-cache/dev-util/ruff-0.9.6 create mode 100644 metadata/md5-cache/dev-util/tree-sitter-cli-0.25.1 delete mode 100644 metadata/md5-cache/dev-util/xxdiff-4.0.1_p20170622-r1 create mode 100644 metadata/md5-cache/dev-util/xxdiff-5.1_p20241118 create mode 100644 metadata/md5-cache/dev-vcs/git-cola-4.11.0 create mode 100644 metadata/md5-cache/dev-vcs/sourcegit-2025.04 delete mode 100644 metadata/md5-cache/dev-vcs/sourcegit-8.40 delete mode 100644 metadata/md5-cache/dev-vcs/sourcegit-8.44 delete mode 100644 metadata/md5-cache/dev-vcs/stgit-2.4.11-r1 delete mode 100644 metadata/md5-cache/dev-vcs/stgit-2.4.13 create mode 100644 metadata/md5-cache/dev-vcs/topgit-0.19.14 delete mode 100644 metadata/md5-cache/games-arcade/moleinvasion-0.4-r3 create mode 100644 metadata/md5-cache/games-arcade/moleinvasion-0.4-r4 delete mode 100644 metadata/md5-cache/games-arcade/osu-lazer-2024.906.2 delete mode 100644 metadata/md5-cache/games-board/xscrabble-2.10-r4 create mode 100644 metadata/md5-cache/games-board/xscrabble-2.10-r5 delete mode 100644 metadata/md5-cache/games-emulation/bsnes-jg-1.2.0 create mode 100644 metadata/md5-cache/games-emulation/bsnes-jg-2.0.1 delete mode 100644 metadata/md5-cache/games-emulation/cega-jg-0.5.2 delete mode 100644 metadata/md5-cache/games-emulation/gambatte-jg-0.5.1 delete mode 100644 metadata/md5-cache/games-emulation/geolith-jg-0.1.0 delete mode 100644 metadata/md5-cache/games-emulation/mednafen-jg-1.32.0 delete mode 100644 metadata/md5-cache/games-emulation/mednafen-jg-1.32.1 create mode 100644 metadata/md5-cache/games-emulation/mednafen-jg-1.32.1-r1 delete mode 100644 metadata/md5-cache/games-emulation/mgba-jg-0.10.3 delete mode 100644 metadata/md5-cache/games-emulation/nestopia-jg-1.52.0 delete mode 100644 metadata/md5-cache/games-emulation/nestopia-jg-1.52.1 create mode 100644 metadata/md5-cache/games-emulation/nestopia-jg-1.53.0 create mode 100644 metadata/md5-cache/games-emulation/prosystem-jg-1.5.3 delete mode 100644 metadata/md5-cache/games-emulation/rmg-0.6.5-r1 delete mode 100644 metadata/md5-cache/games-emulation/rmg-0.6.6-r1 create mode 100644 metadata/md5-cache/games-emulation/rmg-0.7.3 delete mode 100644 metadata/md5-cache/games-emulation/sameboy-jg-0.16.6 create mode 100644 metadata/md5-cache/games-emulation/vecx-jg-1.2.3 delete mode 100644 metadata/md5-cache/games-engines/fheroes2-1.1.4 delete mode 100644 metadata/md5-cache/games-puzzle/skladnik-24.12.1 create mode 100644 metadata/md5-cache/games-server/crossfire-server-1.75.0-r1 delete mode 100644 metadata/md5-cache/games-sports/foobillard-3.0a-r1 create mode 100644 metadata/md5-cache/games-sports/foobillard-3.0a-r2 delete mode 100644 metadata/md5-cache/games-util/cartridges-2.11 create mode 100644 metadata/md5-cache/games-util/cartridges-2.11-r1 delete mode 100644 metadata/md5-cache/games-util/cartridges-2.9.3 create mode 100644 metadata/md5-cache/games-util/cartridges-2.9.3-r1 delete mode 100644 metadata/md5-cache/games-util/qstat-2.14 create mode 100644 metadata/md5-cache/games-util/qstat-2.14-r1 create mode 100644 metadata/md5-cache/games-util/qstat-2.17 create mode 100644 metadata/md5-cache/gui-apps/wf-recorder-0.5.0-r1 delete mode 100644 metadata/md5-cache/kde-apps/akonadi-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akonadi-calendar-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akonadi-calendar-tools-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akonadi-contacts-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akonadi-import-wizard-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akonadi-mime-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akonadi-search-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akonadiconsole-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/akregator-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ark-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/artikulate-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/audiocd-kio-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/baloo-widgets-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/blinken-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/bomber-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/bovo-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/calendarjanitor-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/calendarsupport-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/cervisia-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/dolphin-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/dolphin-plugins-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/dolphin-plugins-dropbox-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/dolphin-plugins-git-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/dolphin-plugins-mercurial-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/dolphin-plugins-subversion-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/dragon-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/eventviews-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ffmpegthumbs-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ffmpegthumbs-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/filelight-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/granatier-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/grantlee-editor-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/grantleetheme-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/gwenview-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/incidenceeditor-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/juk-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/k3b-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kaccounts-integration-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kaccounts-providers-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kaddressbook-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kajongg-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kalarm-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kalgebra-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kamera-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kamoso-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kanagram-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kapman-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kapptemplate-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kate-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kate-addons-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kate-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kate-lib-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/katomic-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kbackup-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kblackbox-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kblocks-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kbounce-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kbreakout-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kbruch-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kcachegrind-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kcalc-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kcalutils-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kcharselect-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kcolorchooser-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kcron-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kde-apps-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kde-dev-scripts-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kde-dev-utils-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdeaccessibility-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdeadmin-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdebugsettings-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdecore-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdeedu-data-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdeedu-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdegames-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdegraphics-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdegraphics-mobipocket-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdemultimedia-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdenetwork-filesharing-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdenetwork-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdenlive-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdepim-addons-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdepim-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdepim-runtime-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdesdk-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdesdk-thumbnailers-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdesdk-thumbnailers-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdeutils-meta-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdf-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdialog-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kdiamond-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/keditbookmarks-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kfind-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kfloppy-23.04.3 delete mode 100644 metadata/md5-cache/kde-apps/kfourinline-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kgeography-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kget-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kgoldrunner-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kgpg-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/khangman-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/khelpcenter-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kidentitymanagement-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kig-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kigo-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/killbots-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kimagemapeditor-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kimap-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kio-extras-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kiriki-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kiten-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kitinerary-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kjumpingcube-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kldap-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kleopatra-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/klettres-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/klickety-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/klines-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmag-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmahjongg-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmail-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmail-account-wizard-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmailtransport-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmbox-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmime-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmines-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmousetool-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmouth-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kmplot-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/knavalbattle-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/knetwalk-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/knights-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kolf-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kollision-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kolourpaint-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kompare-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/konqueror-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/konquest-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/konsole-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/konsolekalendar-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kontact-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kontactinterface-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/korganizer-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kpat-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kpimtextedit-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kpkpass-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kqtquickcharts-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/krdc-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kreversi-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/krfb-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kruler-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kshisen-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ksirk-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ksmtp-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ksnakeduel-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kspaceduel-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ksquares-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ksudoku-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ksystemlog-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kteatime-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ktimer-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ktouch-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/ktuberling-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kturtle-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kubrick-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kwalletmanager-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kwave-24.12.1-r1 delete mode 100644 metadata/md5-cache/kde-apps/kwordquiz-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/kwrite-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libgravatar-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkcddb-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkcddb-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkcompactdisc-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkdcraw-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkdegames-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkdepim-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkeduvocdocument-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkexiv2-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkgapi-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkleo-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkmahjongg-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libkomparediff2-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libksane-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libksane-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libksieve-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/libktnef-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/lokalize-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/lskat-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/mailcommon-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/mailimporter-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/mbox-importer-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/messagelib-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/mimetreeparser-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/okular-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/palapeli-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/parley-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/picmi-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/pim-data-exporter-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/pim-sieve-editor-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/pimcommon-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/poxml-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/rocs-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/signon-kwallet-extension-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/spectacle-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/svgpart-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/sweeper-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/thumbnailers-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/umbrello-24.12.1 delete mode 100644 metadata/md5-cache/kde-apps/yakuake-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/colord-kde-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/kclock-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/kdeconnect-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/kio-gdrive-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/kio-gdrive-common-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/kweather-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/markdownpart-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/skanlite-24.12.1 delete mode 100644 metadata/md5-cache/kde-misc/zanshin-24.12.1 create mode 100644 metadata/md5-cache/kde-plasma/bluedevil-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/breeze-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/breeze-grub-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/breeze-gtk-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/breeze-plymouth-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/discover-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/drkonqi-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/flatpak-kcm-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kactivitymanagerd-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kde-cli-tools-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kde-cli-tools-common-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kde-gtk-config-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kdecoration-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kdeplasma-addons-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kdesu-gui-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/keditfiletype-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kgamma-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kglobalacceld-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kinfocenter-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kmenuedit-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kpipewire-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/krdp-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kscreen-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kscreenlocker-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/ksshaskpass-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/ksystemstats-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kwallet-pam-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kwayland-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kwayland-integration-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/kwin-6.3.0-r1 create mode 100644 metadata/md5-cache/kde-plasma/kwrited-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/layer-shell-qt-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/libkscreen-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/libksysguard-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/libplasma-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/milou-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/ocean-sound-theme-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/oxygen-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/oxygen-sounds-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-activities-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-activities-stats-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-browser-integration-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-desktop-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-disks-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-firewall-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-integration-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-login-sessions-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-meta-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-nm-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-pa-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-sdk-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-systemmonitor-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-thunderbolt-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-vault-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-welcome-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-workspace-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma-workspace-wallpapers-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plasma5support-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/plymouth-kcm-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/polkit-kde-agent-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/powerdevil-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/print-manager-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/qqc2-breeze-style-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/sddm-kcm-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/systemsettings-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/wacomtablet-6.3.0 create mode 100644 metadata/md5-cache/kde-plasma/xdg-desktop-portal-kde-6.3.0 create mode 100644 metadata/md5-cache/llvm-core/clang-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/clang-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/clang-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/clang-common-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/clang-common-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/clang-common-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/clang-runtime-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/clang-runtime-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/clang-runtime-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/libclc-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/libclc-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/libclc-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/lld-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/lld-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/lld-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/lldb-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/lldb-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/lldb-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/llvm-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/llvm-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/llvm-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/llvm-common-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/llvm-common-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/llvm-common-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/mlir-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/mlir-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/mlir-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-core/polly-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-core/polly-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-core/polly-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/compiler-rt-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/compiler-rt-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/compiler-rt-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/compiler-rt-sanitizers-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/compiler-rt-sanitizers-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/compiler-rt-sanitizers-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/libcxx-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/libcxx-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/libcxx-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/libcxxabi-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/libcxxabi-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/libcxxabi-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/libgcc-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/libgcc-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/libgcc-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/libunwind-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/libunwind-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/libunwind-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/offload-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/offload-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/offload-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/llvm-runtimes/openmp-20.1.0_rc2 create mode 100644 metadata/md5-cache/llvm-runtimes/openmp-21.0.0_pre20250208 create mode 100644 metadata/md5-cache/llvm-runtimes/openmp-21.0.0_pre20250211 create mode 100644 metadata/md5-cache/lxqt-base/lxqt-config-2.1.1 create mode 100644 metadata/md5-cache/mail-client/roundcube-1.6.10 delete mode 100644 metadata/md5-cache/mail-client/roundcube-1.6.9 delete mode 100644 metadata/md5-cache/mail-client/thunderbird-128.5.0 delete mode 100644 metadata/md5-cache/mail-client/thunderbird-128.5.1 delete mode 100644 metadata/md5-cache/mail-client/thunderbird-128.5.2 delete mode 100644 metadata/md5-cache/mail-client/thunderbird-128.6.0 delete mode 100644 metadata/md5-cache/mail-client/thunderbird-bin-128.5.2 delete mode 100644 metadata/md5-cache/mail-client/thunderbird-bin-128.6.0 create mode 100644 metadata/md5-cache/mail-filter/rblcheck-1.5-r3 delete mode 100644 metadata/md5-cache/mail-mta/postfix-3.10_pre20250206 create mode 100644 metadata/md5-cache/mail-mta/postfix-3.10_pre20250207 delete mode 100644 metadata/md5-cache/media-fonts/source-code-pro-2.038 delete mode 100644 metadata/md5-cache/media-fonts/source-code-pro-2.042 create mode 100644 metadata/md5-cache/media-fonts/source-code-pro-2.042-r1 delete mode 100644 metadata/md5-cache/media-fonts/source-han-sans-2.004 create mode 100644 metadata/md5-cache/media-fonts/source-han-sans-2.004-r1 delete mode 100644 metadata/md5-cache/media-fonts/source-sans-3.052 create mode 100644 metadata/md5-cache/media-fonts/source-sans-3.052-r1 delete mode 100644 metadata/md5-cache/media-fonts/source-serif-4.005 create mode 100644 metadata/md5-cache/media-fonts/source-serif-4.005-r1 delete mode 100644 metadata/md5-cache/media-fonts/terminus-font-4.49.1-r1 create mode 100644 metadata/md5-cache/media-fonts/terminus-font-4.49.1-r2 create mode 100644 metadata/md5-cache/media-gfx/fotema-1.19.2 delete mode 100644 metadata/md5-cache/media-gfx/kgraphviewer-24.12.1 delete mode 100644 metadata/md5-cache/media-gfx/kio-blender-thumbnailer-24.12.1 delete mode 100644 metadata/md5-cache/media-gfx/kio-mobi-thumbnailer-24.12.1 delete mode 100644 metadata/md5-cache/media-gfx/kio-ps-thumbnailer-24.12.1 delete mode 100644 metadata/md5-cache/media-gfx/kio-raw-thumbnailer-24.12.1 create mode 100644 metadata/md5-cache/media-gfx/libimagequant-4.3.4 delete mode 100644 metadata/md5-cache/media-gfx/sane-frontends-1.0.14-r6 create mode 100644 metadata/md5-cache/media-gfx/sane-frontends-1.0.14-r7 delete mode 100644 metadata/md5-cache/media-gfx/skanpage-24.12.1 delete mode 100644 metadata/md5-cache/media-gfx/symboleditor-2.1.0 create mode 100644 metadata/md5-cache/media-gfx/xloadimage-4.1-r18 delete mode 100644 metadata/md5-cache/media-libs/amdgpu-pro-vulkan-24.10.0.1787253 create mode 100644 metadata/md5-cache/media-libs/amdgpu-pro-vulkan-24.30.2111292 create mode 100644 metadata/md5-cache/media-libs/amf-headers-1.4.35 create mode 100644 metadata/md5-cache/media-libs/amf-headers-1.4.36 create mode 100644 metadata/md5-cache/media-libs/blib-1.1.7-r4 create mode 100644 metadata/md5-cache/media-libs/flac-1.5.0 delete mode 100644 metadata/md5-cache/media-libs/ksanecore-24.12.1 delete mode 100644 metadata/md5-cache/media-libs/ksanecore-common-24.12.1 create mode 100644 metadata/md5-cache/media-libs/lcms-2.17 create mode 100644 metadata/md5-cache/media-libs/libexif-0.6.25 delete mode 100644 metadata/md5-cache/media-libs/libfishsound-1.0.0-r1 delete mode 100644 metadata/md5-cache/media-libs/libfishsound-1.0.0-r2 create mode 100644 metadata/md5-cache/media-libs/libfishsound-1.0.0-r3 create mode 100644 metadata/md5-cache/media-libs/libggiwmh-0.3.2-r2 create mode 100644 metadata/md5-cache/media-libs/libifp-1.0.0.2-r2 create mode 100644 metadata/md5-cache/media-libs/libopenraw-0.3.7-r2 delete mode 100644 metadata/md5-cache/media-libs/libpng-1.6.40-r1 delete mode 100644 metadata/md5-cache/media-libs/libpng-1.6.42 delete mode 100644 metadata/md5-cache/media-libs/libpng-1.6.43 create mode 100644 metadata/md5-cache/media-libs/libpng-1.6.46 create mode 100644 metadata/md5-cache/media-libs/libva-intel-media-driver-25.1.1 create mode 100644 metadata/md5-cache/media-libs/mesa-25.0.0_rc3 delete mode 100644 metadata/md5-cache/media-libs/openh264-2.4.1 create mode 100644 metadata/md5-cache/media-libs/openh264-2.6.0 create mode 100644 metadata/md5-cache/media-libs/tiff-compat-4.4.0-r2 delete mode 100644 metadata/md5-cache/media-plugins/gst-plugins-kate-1.22.11 delete mode 100644 metadata/md5-cache/media-plugins/gst-plugins-kate-1.22.12 delete mode 100644 metadata/md5-cache/media-plugins/gst-plugins-kate-1.24.10 create mode 100644 metadata/md5-cache/media-plugins/mpg123-output-plugins-1.32.10 delete mode 100644 metadata/md5-cache/media-sound/abcmidi-2025.02.02 create mode 100644 metadata/md5-cache/media-sound/abcmidi-2025.02.07 delete mode 100644 metadata/md5-cache/media-sound/audex-24.12.1 delete mode 100644 metadata/md5-cache/media-sound/aumix-2.9.1 create mode 100644 metadata/md5-cache/media-sound/aumix-2.9.1-r1 create mode 100644 metadata/md5-cache/media-sound/cantata-3.3.0 delete mode 100644 metadata/md5-cache/media-sound/chuck-1.5.4.2 delete mode 100644 metadata/md5-cache/media-sound/chuck-1.5.4.3 delete mode 100644 metadata/md5-cache/media-sound/clementine-1.4.0_rc2-r5 delete mode 100644 metadata/md5-cache/media-sound/elisa-24.12.1 delete mode 100644 metadata/md5-cache/media-sound/gstreamripper-0.2-r1 create mode 100644 metadata/md5-cache/media-sound/gstreamripper-0.2-r2 create mode 100644 metadata/md5-cache/media-sound/jack-rack-1.4.8_rc1-r2 delete mode 100644 metadata/md5-cache/media-sound/kasts-24.12.1 create mode 100644 metadata/md5-cache/media-sound/kid3-3.9.6-r1 delete mode 100644 metadata/md5-cache/media-sound/krecorder-24.12.1 create mode 100644 metadata/md5-cache/media-sound/mac-10.93 create mode 100644 metadata/md5-cache/media-sound/mixxx-2.5.0 create mode 100644 metadata/md5-cache/media-sound/mpg123-base-1.32.10 delete mode 100644 metadata/md5-cache/media-sound/picard-2.13.1 create mode 100644 metadata/md5-cache/media-sound/picard-2.13.2 delete mode 100644 metadata/md5-cache/media-sound/qjackctl-1.0.3 delete mode 100644 metadata/md5-cache/media-sound/qpwgraph-0.7.8 create mode 100644 metadata/md5-cache/media-sound/qpwgraph-0.8.1 create mode 100644 metadata/md5-cache/media-sound/qtractor-1.5.3 delete mode 100644 metadata/md5-cache/media-sound/schismtracker-20250202 create mode 100644 metadata/md5-cache/media-sound/schismtracker-20250208 delete mode 100644 metadata/md5-cache/media-sound/upmpdcli-1.8.18 create mode 100644 metadata/md5-cache/media-sound/upmpdcli-1.9.1 delete mode 100644 metadata/md5-cache/media-video/amdgpu-pro-amf-1.4.34.1787253 create mode 100644 metadata/md5-cache/media-video/amdgpu-pro-amf-1.4.36.2111292 create mode 100644 metadata/md5-cache/media-video/ffmpeg-7.1 create mode 100644 metadata/md5-cache/media-video/ffmpeg-chromium-135 create mode 100644 metadata/md5-cache/media-video/makemkv-1.17.9 create mode 100644 metadata/md5-cache/media-video/mkvalidator-0.6.0 create mode 100644 metadata/md5-cache/media-video/obs-studio-31.0.1 delete mode 100644 metadata/md5-cache/media-video/vidify-2.2.6-r3 delete mode 100644 metadata/md5-cache/media-video/vidify-audiosync-0.3.0-r2 delete mode 100644 metadata/md5-cache/media-video/vlc-3.0.21 delete mode 100644 metadata/md5-cache/media-video/vlc-3.0.21-r1 create mode 100644 metadata/md5-cache/media-video/vlc-3.0.21_p20250212 create mode 100644 metadata/md5-cache/media-video/wireplumber-0.5.8 delete mode 100644 metadata/md5-cache/media-video/yle-dl-20240927 create mode 100644 metadata/md5-cache/net-analyzer/firewalk-5.0-r3 delete mode 100644 metadata/md5-cache/net-analyzer/gvm-libs-22.15.0 create mode 100644 metadata/md5-cache/net-analyzer/gvm-libs-22.15.1 create mode 100644 metadata/md5-cache/net-analyzer/iplog-2.2.3-r4 create mode 100644 metadata/md5-cache/net-analyzer/ippl-1.4.14-r7 create mode 100644 metadata/md5-cache/net-analyzer/isic-0.07-r3 delete mode 100644 metadata/md5-cache/net-analyzer/nast-0.2.0-r3 create mode 100644 metadata/md5-cache/net-analyzer/nast-0.2.0-r4 delete mode 100644 metadata/md5-cache/net-analyzer/pinger-0.33-r1 create mode 100644 metadata/md5-cache/net-analyzer/pinger-0.33-r2 create mode 100644 metadata/md5-cache/net-analyzer/vnstat-2.13 delete mode 100644 metadata/md5-cache/net-analyzer/zabbix-7.0.7 delete mode 100644 metadata/md5-cache/net-analyzer/zabbix-7.2.1 create mode 100644 metadata/md5-cache/net-dialup/mwavem-2.0-r3 delete mode 100644 metadata/md5-cache/net-dns/idnkit-2.3-r1 create mode 100644 metadata/md5-cache/net-dns/idnkit-2.3-r2 delete mode 100644 metadata/md5-cache/net-dns/pdns-4.9.2 create mode 100644 metadata/md5-cache/net-dns/pdns-4.9.4 delete mode 100644 metadata/md5-cache/net-dns/pdns-recursor-5.0.9-r1 delete mode 100644 metadata/md5-cache/net-im/dianara-1.4.2 delete mode 100644 metadata/md5-cache/net-im/discord-0.0.84 create mode 100644 metadata/md5-cache/net-im/discord-0.0.85 delete mode 100644 metadata/md5-cache/net-im/fractal-10 create mode 100644 metadata/md5-cache/net-im/fractal-10-r1 create mode 100644 metadata/md5-cache/net-im/fractal-10.1 create mode 100644 metadata/md5-cache/net-im/mattermost-desktop-bin-5.11.0 delete mode 100644 metadata/md5-cache/net-im/mattermost-desktop-bin-5.11.0_rc1 delete mode 100644 metadata/md5-cache/net-im/mattermost-desktop-bin-5.9.2 delete mode 100644 metadata/md5-cache/net-im/neochat-24.12.1 delete mode 100644 metadata/md5-cache/net-im/psi-1.5-r2 delete mode 100644 metadata/md5-cache/net-im/psi-9999 delete mode 100644 metadata/md5-cache/net-im/psimedia-9999 create mode 100644 metadata/md5-cache/net-im/synapse-1.124.0 delete mode 100644 metadata/md5-cache/net-im/telegram-desktop-bin-5.10.3 create mode 100644 metadata/md5-cache/net-im/telegram-desktop-bin-5.10.7 delete mode 100644 metadata/md5-cache/net-im/tokodon-24.12.1 delete mode 100644 metadata/md5-cache/net-irc/ergo-2.13.0 delete mode 100644 metadata/md5-cache/net-irc/ergo-2.13.1 create mode 100644 metadata/md5-cache/net-irc/ergo-2.15.0 delete mode 100644 metadata/md5-cache/net-irc/inspircd-4.2.0 delete mode 100644 metadata/md5-cache/net-irc/iroffer-dinoex-3.32-r2 create mode 100644 metadata/md5-cache/net-irc/iroffer-dinoex-3.32-r3 create mode 100644 metadata/md5-cache/net-irc/iroffer-dinoex-3.33 delete mode 100644 metadata/md5-cache/net-irc/irssi-1.4.4-r1 delete mode 100644 metadata/md5-cache/net-irc/konversation-24.12.1 create mode 100644 metadata/md5-cache/net-libs/davix-0.8.10 delete mode 100644 metadata/md5-cache/net-libs/davix-0.8.9 create mode 100644 metadata/md5-cache/net-libs/davix-9999 create mode 100644 metadata/md5-cache/net-libs/gnutls-3.8.9 delete mode 100644 metadata/md5-cache/net-libs/libktorrent-24.12.1 delete mode 100644 metadata/md5-cache/net-libs/libnpupnp-6.1.3 delete mode 100644 metadata/md5-cache/net-misc/anydesk-6.3.2 create mode 100644 metadata/md5-cache/net-misc/anydesk-6.4.0 delete mode 100644 metadata/md5-cache/net-misc/asterisk-18.25.0 delete mode 100644 metadata/md5-cache/net-misc/asterisk-18.26.0 create mode 100644 metadata/md5-cache/net-misc/asterisk-18.26.1 delete mode 100644 metadata/md5-cache/net-misc/asterisk-20.10.0-r1 delete mode 100644 metadata/md5-cache/net-misc/asterisk-20.11.0 create mode 100644 metadata/md5-cache/net-misc/asterisk-20.11.1 delete mode 100644 metadata/md5-cache/net-misc/asterisk-21.6.0 create mode 100644 metadata/md5-cache/net-misc/asterisk-21.6.1 delete mode 100644 metadata/md5-cache/net-misc/asterisk-22.0.0-r1 delete mode 100644 metadata/md5-cache/net-misc/asterisk-22.1.0 create mode 100644 metadata/md5-cache/net-misc/asterisk-22.1.1 create mode 100644 metadata/md5-cache/net-misc/curl-8.12.0-r1 delete mode 100644 metadata/md5-cache/net-misc/dhcpcd-10.0.10 delete mode 100644 metadata/md5-cache/net-misc/dhcpcd-10.0.6-r2 delete mode 100644 metadata/md5-cache/net-misc/dhcpcd-10.0.6-r3 delete mode 100644 metadata/md5-cache/net-misc/dhcpcd-10.0.8 create mode 100644 metadata/md5-cache/net-misc/dhcpcd-10.1.0-r1 create mode 100644 metadata/md5-cache/net-misc/dhcpcd-10.2.0 delete mode 100644 metadata/md5-cache/net-misc/fatrat-1.2.0_beta2_p20161204 delete mode 100644 metadata/md5-cache/net-misc/kio-zeroconf-24.12.1 delete mode 100644 metadata/md5-cache/net-misc/kio-zeroconf-common-24.12.1 delete mode 100644 metadata/md5-cache/net-misc/lyricwikia-0.1.11-r1 delete mode 100644 metadata/md5-cache/net-misc/lyricwikia-0.1.11-r2 delete mode 100644 metadata/md5-cache/net-misc/scponly-4.8-r8 create mode 100644 metadata/md5-cache/net-misc/scponly-4.8-r9 create mode 100644 metadata/md5-cache/net-misc/smb4k-4.0.0 delete mode 100644 metadata/md5-cache/net-misc/smbc-1.2.2-r3 create mode 100644 metadata/md5-cache/net-misc/smbc-1.2.2-r4 delete mode 100644 metadata/md5-cache/net-misc/tigervnc-1.14.90 create mode 100644 metadata/md5-cache/net-misc/tigervnc-1.15.0 delete mode 100644 metadata/md5-cache/net-misc/tigervnc-xorg-module-1.14.90 create mode 100644 metadata/md5-cache/net-misc/tigervnc-xorg-module-1.15.0 delete mode 100644 metadata/md5-cache/net-misc/turbovnc-3.1.3 create mode 100644 metadata/md5-cache/net-misc/turbovnc-3.1.4 create mode 100644 metadata/md5-cache/net-misc/turbovnc-3.2_beta1 delete mode 100644 metadata/md5-cache/net-misc/zssh-1.5c-r2 create mode 100644 metadata/md5-cache/net-misc/zssh-1.5c-r3 delete mode 100644 metadata/md5-cache/net-news/alligator-24.12.1 delete mode 100644 metadata/md5-cache/net-nntp/leafnode-1.11.11-r1 create mode 100644 metadata/md5-cache/net-nntp/leafnode-1.11.11-r2 delete mode 100644 metadata/md5-cache/net-nntp/leafnode-1.12.0 create mode 100644 metadata/md5-cache/net-nntp/leafnode-1.12.0-r1 create mode 100644 metadata/md5-cache/net-p2p/go-ethereum-1.14.13 create mode 100644 metadata/md5-cache/net-p2p/go-ethereum-1.15.1 delete mode 100644 metadata/md5-cache/net-p2p/ktorrent-24.12.1 delete mode 100644 metadata/md5-cache/net-p2p/mktorrent-1.1_p20210130 create mode 100644 metadata/md5-cache/net-print/libinklevel-0.9.7 create mode 100644 metadata/md5-cache/net-proxy/squidguard-1.6.0-r2 create mode 100644 metadata/md5-cache/net-vpn/pptpd-1.4.0-r5 create mode 100644 metadata/md5-cache/net-vpn/tailscale-1.80.1 create mode 100644 metadata/md5-cache/net-wireless/iwd-3.4 create mode 100644 metadata/md5-cache/sci-biology/augustus-3.5.0 create mode 100644 metadata/md5-cache/sci-chemistry/gperiodic-3.0.3-r1 delete mode 100644 metadata/md5-cache/sci-electronics/gazebo-11.13.0 delete mode 100644 metadata/md5-cache/sci-electronics/gazebo-11.14.0 create mode 100644 metadata/md5-cache/sci-geosciences/harmonics-dwf-free-20241229 create mode 100644 metadata/md5-cache/sci-geosciences/tcd-utils-20240222 create mode 100644 metadata/md5-cache/sci-libs/armadillo-14.2.3 delete mode 100644 metadata/md5-cache/sci-libs/fplll-5.4.5 delete mode 100644 metadata/md5-cache/sci-libs/gdal-3.8.0-r1 delete mode 100644 metadata/md5-cache/sci-libs/gdal-3.8.5 delete mode 100644 metadata/md5-cache/sci-libs/gdal-3.9.0 delete mode 100644 metadata/md5-cache/sci-libs/gdal-3.9.1-r1 create mode 100644 metadata/md5-cache/sci-libs/gdal-3.9.3 delete mode 100644 metadata/md5-cache/sci-libs/hipBLAS-5.1.3 delete mode 100644 metadata/md5-cache/sci-libs/hipBLAS-5.4.2 create mode 100644 metadata/md5-cache/sci-libs/hipBLAS-6.3.2 create mode 100644 metadata/md5-cache/sci-libs/hipBLAS-common-6.3.2 create mode 100644 metadata/md5-cache/sci-libs/hipBLASLt-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/hipCUB-5.1.3 create mode 100644 metadata/md5-cache/sci-libs/hipCUB-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/hipFFT-5.1.3-r1 create mode 100644 metadata/md5-cache/sci-libs/hipFFT-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/hipRAND-5.6.0-r1 create mode 100644 metadata/md5-cache/sci-libs/hipRAND-6.3.2 create mode 100644 metadata/md5-cache/sci-libs/hipSOLVER-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/hipSPARSE-5.1.3-r1 delete mode 100644 metadata/md5-cache/sci-libs/mc-1.5 create mode 100644 metadata/md5-cache/sci-libs/mc-1.5-r1 delete mode 100644 metadata/md5-cache/sci-libs/miopen-5.1.3-r1 create mode 100644 metadata/md5-cache/sci-libs/miopen-6.3.2 create mode 100644 metadata/md5-cache/sci-libs/pgplot-5.2.2-r9 delete mode 100644 metadata/md5-cache/sci-libs/rocBLAS-5.1.3-r4 delete mode 100644 metadata/md5-cache/sci-libs/rocBLAS-5.4.2-r3 create mode 100644 metadata/md5-cache/sci-libs/rocBLAS-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/rocFFT-5.1.3-r1 create mode 100644 metadata/md5-cache/sci-libs/rocFFT-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/rocPRIM-5.1.3 create mode 100644 metadata/md5-cache/sci-libs/rocPRIM-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/rocRAND-5.1.3 delete mode 100644 metadata/md5-cache/sci-libs/rocRAND-5.6.0-r1 create mode 100644 metadata/md5-cache/sci-libs/rocRAND-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/rocSOLVER-5.1.3-r1 delete mode 100644 metadata/md5-cache/sci-libs/rocSOLVER-5.4.2 create mode 100644 metadata/md5-cache/sci-libs/rocSOLVER-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/rocSPARSE-5.1.3-r1 create mode 100644 metadata/md5-cache/sci-libs/rocSPARSE-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/rocThrust-5.1.3 create mode 100644 metadata/md5-cache/sci-libs/rocThrust-6.3.2 create mode 100644 metadata/md5-cache/sci-libs/rocWMMA-6.3.2 delete mode 100644 metadata/md5-cache/sci-libs/superlu-4.3-r3 create mode 100644 metadata/md5-cache/sci-libs/superlu-4.3-r4 create mode 100644 metadata/md5-cache/sci-libs/transformers-4.47.1 create mode 100644 metadata/md5-cache/sci-mathematics/4ti2-1.6.10 create mode 100644 metadata/md5-cache/sci-mathematics/coq-8.17.1 delete mode 100644 metadata/md5-cache/sci-mathematics/easycrypt-2024.01-r1 delete mode 100644 metadata/md5-cache/sci-mathematics/why3-for-spark-2023.12.13 create mode 100644 metadata/md5-cache/sci-mathematics/why3-for-spark-2023.12.13-r2 delete mode 100644 metadata/md5-cache/sci-physics/root-6.30.08 delete mode 100644 metadata/md5-cache/sci-physics/root-6.32.06 delete mode 100644 metadata/md5-cache/sci-physics/root-6.32.08 create mode 100644 metadata/md5-cache/sci-physics/root-6.32.10 create mode 100644 metadata/md5-cache/sci-physics/root-6.34.04 create mode 100644 metadata/md5-cache/sci-visualization/gle-4.3.5 create mode 100644 metadata/md5-cache/sci-visualization/gwyddion-2.67 create mode 100644 metadata/md5-cache/sec-keys/openpgp-keys-apache-tomcat-10.1.35 create mode 100644 metadata/md5-cache/sec-keys/openpgp-keys-apache-tomcat-11.0.3 create mode 100644 metadata/md5-cache/sec-keys/openpgp-keys-apache-tomcat-9.0.99 create mode 100644 metadata/md5-cache/sec-keys/openpgp-keys-gentoo-developers-20250203 create mode 100644 metadata/md5-cache/sec-keys/openpgp-keys-libtasn1-20250209 create mode 100644 metadata/md5-cache/sec-keys/openpgp-keys-nicholaswilson-20250209 create mode 100644 metadata/md5-cache/sys-apps/amdgpu_top-0.10.3 delete mode 100644 metadata/md5-cache/sys-apps/apparmor-3.1.4 create mode 100644 metadata/md5-cache/sys-apps/apparmor-3.1.4-r2 delete mode 100644 metadata/md5-cache/sys-apps/audio-entropyd-2.0.3-r1 create mode 100644 metadata/md5-cache/sys-apps/audio-entropyd-2.0.3-r2 create mode 100644 metadata/md5-cache/sys-apps/bat-0.25.0 create mode 100644 metadata/md5-cache/sys-apps/checkpolicy-3.8 create mode 100644 metadata/md5-cache/sys-apps/dbus-1.16.0 delete mode 100644 metadata/md5-cache/sys-apps/diffutils-3.11 create mode 100644 metadata/md5-cache/sys-apps/diffutils-3.11-r1 delete mode 100644 metadata/md5-cache/sys-apps/iproute2-6.11.0 create mode 100644 metadata/md5-cache/sys-apps/iproute2-6.13.0 delete mode 100644 metadata/md5-cache/sys-apps/iproute2-6.9.0 create mode 100644 metadata/md5-cache/sys-apps/mcstrans-3.8 delete mode 100644 metadata/md5-cache/sys-apps/memtest86-bin-11.1 create mode 100644 metadata/md5-cache/sys-apps/memtest86-bin-11.2 create mode 100644 metadata/md5-cache/sys-apps/nawk-20250116 delete mode 100644 metadata/md5-cache/sys-apps/pandora_box-0.12.0-r1 create mode 100644 metadata/md5-cache/sys-apps/pandora_box-0.13.0 create mode 100644 metadata/md5-cache/sys-apps/pandora_box-0.14.0-r1 create mode 100644 metadata/md5-cache/sys-apps/pcsc-tools-1.7.2 create mode 100644 metadata/md5-cache/sys-apps/policycoreutils-3.8 create mode 100644 metadata/md5-cache/sys-apps/pv-1.9.31 create mode 100644 metadata/md5-cache/sys-apps/restorecond-3.8 create mode 100644 metadata/md5-cache/sys-apps/secilc-3.8 create mode 100644 metadata/md5-cache/sys-apps/selinux-python-3.8 create mode 100644 metadata/md5-cache/sys-apps/semodule-utils-3.8 delete mode 100644 metadata/md5-cache/sys-apps/syd-3.30.0 create mode 100644 metadata/md5-cache/sys-apps/syd-3.31.0 create mode 100644 metadata/md5-cache/sys-apps/syd-3.32.1 create mode 100644 metadata/md5-cache/sys-apps/sysvinit-3.14 create mode 100644 metadata/md5-cache/sys-apps/tuned-2.25.1 create mode 100644 metadata/md5-cache/sys-apps/usbredir-0.15.0 create mode 100644 metadata/md5-cache/sys-apps/which-2.23 create mode 100644 metadata/md5-cache/sys-auth/google-authenticator-1.11 create mode 100644 metadata/md5-cache/sys-auth/nss-pam-ldapd-0.9.13 delete mode 100644 metadata/md5-cache/sys-auth/pam_mysql-0.8.2-r1 create mode 100644 metadata/md5-cache/sys-auth/pam_mysql-0.8.2-r2 delete mode 100644 metadata/md5-cache/sys-block/endpoint-0.1.0-r1 create mode 100644 metadata/md5-cache/sys-block/endpoint-0.1.0-r2 delete mode 100644 metadata/md5-cache/sys-block/partitionmanager-24.12.1 create mode 100644 metadata/md5-cache/sys-devel/dev86-1.0.1 create mode 100644 metadata/md5-cache/sys-devel/gcc-12.4.1_p20250206 create mode 100644 metadata/md5-cache/sys-devel/gcc-13.3.1_p20250207 create mode 100644 metadata/md5-cache/sys-devel/gcc-14.2.1_p20250208 create mode 100644 metadata/md5-cache/sys-devel/gcc-15.0.1_pre20250209 delete mode 100644 metadata/md5-cache/sys-devel/gettext-0.23 create mode 100644 metadata/md5-cache/sys-devel/gettext-0.23.1 delete mode 100644 metadata/md5-cache/sys-devel/smatch-1.72 create mode 100644 metadata/md5-cache/sys-devel/smatch-1.72-r2 create mode 100644 metadata/md5-cache/sys-devel/smatch-1.73-r1 delete mode 100644 metadata/md5-cache/sys-firmware/edk2-202405 delete mode 100644 metadata/md5-cache/sys-firmware/intel-microcode-20240813_p20240815 create mode 100644 metadata/md5-cache/sys-firmware/intel-microcode-20250211_p20250211 create mode 100644 metadata/md5-cache/sys-fs/bcachefs-tools-1.20.0 create mode 100644 metadata/md5-cache/sys-fs/e2tools-0.1.2 delete mode 100644 metadata/md5-cache/sys-fs/exfatprogs-1.2.5 create mode 100644 metadata/md5-cache/sys-fs/exfatprogs-1.2.7 delete mode 100644 metadata/md5-cache/sys-fs/lxcfs-6.0.2 create mode 100644 metadata/md5-cache/sys-fs/mdadm-4.4 delete mode 100644 metadata/md5-cache/sys-kernel/dracut-106 create mode 100644 metadata/md5-cache/sys-kernel/dracut-106-r1 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-6.12.13 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-6.13.2 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-6.6.76 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-6.6.77 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-bin-6.12.13 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-bin-6.13.2 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-bin-6.6.76 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-kernel-bin-6.6.77 delete mode 100644 metadata/md5-cache/sys-kernel/gentoo-sources-6.12.10 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-sources-6.12.13 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-sources-6.13.2 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-sources-6.6.76 create mode 100644 metadata/md5-cache/sys-kernel/gentoo-sources-6.6.77 create mode 100644 metadata/md5-cache/sys-kernel/git-sources-6.14_rc2 delete mode 100644 metadata/md5-cache/sys-kernel/linux-firmware-20241110 create mode 100644 metadata/md5-cache/sys-kernel/linux-firmware-20250211 create mode 100644 metadata/md5-cache/sys-kernel/scx-1.0.9 create mode 100644 metadata/md5-cache/sys-kernel/vanilla-kernel-6.12.13 create mode 100644 metadata/md5-cache/sys-kernel/vanilla-kernel-6.13.2 create mode 100644 metadata/md5-cache/sys-kernel/vanilla-kernel-6.6.76 create mode 100644 metadata/md5-cache/sys-kernel/vanilla-kernel-6.6.77 delete mode 100644 metadata/md5-cache/sys-kernel/vanilla-sources-6.12.12 create mode 100644 metadata/md5-cache/sys-kernel/vanilla-sources-6.12.13 delete mode 100644 metadata/md5-cache/sys-kernel/vanilla-sources-6.13.1 create mode 100644 metadata/md5-cache/sys-kernel/vanilla-sources-6.13.2 delete mode 100644 metadata/md5-cache/sys-kernel/vanilla-sources-6.6.75 create mode 100644 metadata/md5-cache/sys-kernel/vanilla-sources-6.6.77 delete mode 100644 metadata/md5-cache/sys-libs/kpmcore-24.12.1 create mode 100644 metadata/md5-cache/sys-libs/libselinux-3.8 create mode 100644 metadata/md5-cache/sys-libs/libsemanage-3.8 create mode 100644 metadata/md5-cache/sys-libs/libsepol-3.8 create mode 100644 metadata/md5-cache/sys-libs/liburing-2.9 create mode 100644 metadata/md5-cache/sys-libs/libxcrypt-4.4.38 create mode 100644 metadata/md5-cache/sys-libs/lwp-2.8-r1 create mode 100644 metadata/md5-cache/sys-libs/musl-1.2.3-r10 create mode 100644 metadata/md5-cache/sys-libs/musl-1.2.4-r4 create mode 100644 metadata/md5-cache/sys-libs/musl-1.2.5-r3 create mode 100644 metadata/md5-cache/sys-libs/zlib-ng-2.2.4 create mode 100644 metadata/md5-cache/sys-process/fcron-3.3.2 create mode 100644 metadata/md5-cache/sys-process/fcron-3.3.3 create mode 100644 metadata/md5-cache/virtual/dist-kernel-6.12.13 create mode 100644 metadata/md5-cache/virtual/dist-kernel-6.13.2 create mode 100644 metadata/md5-cache/virtual/dist-kernel-6.6.76 create mode 100644 metadata/md5-cache/virtual/dist-kernel-6.6.77 delete mode 100644 metadata/md5-cache/www-apps/chromedriver-bin-133.0.6943.53 create mode 100644 metadata/md5-cache/www-apps/chromedriver-bin-133.0.6943.98 delete mode 100644 metadata/md5-cache/www-apps/gitea-1.23.0 create mode 100644 metadata/md5-cache/www-apps/gitea-1.23.3 create mode 100644 metadata/md5-cache/www-apps/mediawiki-1.42.5 create mode 100644 metadata/md5-cache/www-apps/moodle-4.3.10 delete mode 100644 metadata/md5-cache/www-apps/moodle-4.3.9 delete mode 100644 metadata/md5-cache/www-apps/moodle-4.4.5 create mode 100644 metadata/md5-cache/www-apps/moodle-4.4.6 delete mode 100644 metadata/md5-cache/www-apps/moodle-4.5.1 create mode 100644 metadata/md5-cache/www-apps/moodle-4.5.2 delete mode 100644 metadata/md5-cache/www-apps/prowlarr-bin-1.31.0.4941 create mode 100644 metadata/md5-cache/www-apps/prowlarr-bin-1.31.1.4959 delete mode 100644 metadata/md5-cache/www-apps/radarr-bin-5.18.4.9674 create mode 100644 metadata/md5-cache/www-apps/radarr-bin-5.19.0.9697 delete mode 100644 metadata/md5-cache/www-apps/sonarr-bin-4.0.12.2900 create mode 100644 metadata/md5-cache/www-apps/sonarr-bin-4.0.13.2932 delete mode 100644 metadata/md5-cache/www-apps/wordpress-6.7.1 create mode 100644 metadata/md5-cache/www-apps/wordpress-6.7.2 delete mode 100644 metadata/md5-cache/www-client/chromium-132.0.6834.159 delete mode 100644 metadata/md5-cache/www-client/chromium-132.0.6834.83 delete mode 100644 metadata/md5-cache/www-client/chromium-133.0.6943.27 create mode 100644 metadata/md5-cache/www-client/chromium-133.0.6943.98 create mode 100644 metadata/md5-cache/www-client/chromium-134.0.6998.15 delete mode 100644 metadata/md5-cache/www-client/chromium-134.0.6998.3 create mode 100644 metadata/md5-cache/www-client/chromium-135.0.6999.2 delete mode 100644 metadata/md5-cache/www-client/falkon-24.12.1 delete mode 100644 metadata/md5-cache/www-client/firefox-128.5.0 delete mode 100644 metadata/md5-cache/www-client/firefox-128.5.1 delete mode 100644 metadata/md5-cache/www-client/firefox-128.6.0 delete mode 100644 metadata/md5-cache/www-client/firefox-133.0.3 delete mode 100644 metadata/md5-cache/www-client/firefox-134.0 delete mode 100644 metadata/md5-cache/www-client/firefox-134.0.1 delete mode 100644 metadata/md5-cache/www-client/firefox-134.0.2 delete mode 100644 metadata/md5-cache/www-client/firefox-bin-128.5.2 delete mode 100644 metadata/md5-cache/www-client/firefox-bin-128.6.0 delete mode 100644 metadata/md5-cache/www-client/firefox-bin-133.0.3 delete mode 100644 metadata/md5-cache/www-client/firefox-bin-134.0 delete mode 100644 metadata/md5-cache/www-client/firefox-bin-134.0.1 delete mode 100644 metadata/md5-cache/www-client/firefox-bin-134.0.2 delete mode 100644 metadata/md5-cache/www-client/google-chrome-133.0.6943.53 create mode 100644 metadata/md5-cache/www-client/google-chrome-133.0.6943.98 create mode 100644 metadata/md5-cache/www-client/google-chrome-beta-134.0.6998.15 delete mode 100644 metadata/md5-cache/www-client/google-chrome-beta-134.0.6998.3 delete mode 100644 metadata/md5-cache/www-client/microsoft-edge-132.0.2957.140 create mode 100644 metadata/md5-cache/www-client/microsoft-edge-133.0.3065.59 delete mode 100644 metadata/md5-cache/www-client/microsoft-edge-beta-133.0.3065.31 create mode 100644 metadata/md5-cache/www-client/microsoft-edge-beta-133.0.3065.59 delete mode 100644 metadata/md5-cache/www-client/microsoft-edge-dev-134.0.3081.2 create mode 100644 metadata/md5-cache/www-client/microsoft-edge-dev-134.0.3124.5 create mode 100644 metadata/md5-cache/www-client/opera-116.0.5366.127 delete mode 100644 metadata/md5-cache/www-client/opera-116.0.5366.71 delete mode 100644 metadata/md5-cache/www-client/opera-developer-118.0.5419.0 create mode 100644 metadata/md5-cache/www-client/opera-developer-118.0.5439.0 create mode 100644 metadata/md5-cache/www-client/seamonkey-2.53.20 create mode 100644 metadata/md5-cache/www-client/tangram-3.3 delete mode 100644 metadata/md5-cache/www-client/vivaldi-7.0.3495.29 delete mode 100644 metadata/md5-cache/www-client/vivaldi-7.1.3570.42 create mode 100644 metadata/md5-cache/www-client/vivaldi-7.1.3570.47 create mode 100644 metadata/md5-cache/www-client/vivaldi-7.1.3570.50 delete mode 100644 metadata/md5-cache/www-client/vivaldi-snapshot-7.1.3570.27 create mode 100644 metadata/md5-cache/www-client/vivaldi-snapshot-7.2.3597.3 create mode 100644 metadata/md5-cache/www-misc/monitorix-3.16.0 delete mode 100644 metadata/md5-cache/www-plugins/chrome-binary-plugins-133.0.6943.53 create mode 100644 metadata/md5-cache/www-plugins/chrome-binary-plugins-133.0.6943.98 create mode 100644 metadata/md5-cache/www-plugins/chrome-binary-plugins-134.0.6998.15_beta delete mode 100644 metadata/md5-cache/www-plugins/chrome-binary-plugins-134.0.6998.3_beta create mode 100644 metadata/md5-cache/www-servers/tomcat-10.1.35 create mode 100644 metadata/md5-cache/www-servers/tomcat-11.0.3 create mode 100644 metadata/md5-cache/www-servers/tomcat-9.0.99 create mode 100644 metadata/md5-cache/x11-libs/libxkbcommon-1.8.0 create mode 100644 metadata/md5-cache/x11-libs/qwt-6.2.0-r4 create mode 100644 metadata/md5-cache/x11-libs/wxGTK-3.0.4-r6 create mode 100644 metadata/md5-cache/x11-misc/qt5ct-1.9 delete mode 100644 metadata/md5-cache/x11-misc/shutter-0.99.4-r1 delete mode 100644 metadata/md5-cache/x11-misc/trayer-srg-1.1.8-r1 create mode 100644 metadata/md5-cache/x11-misc/xkeyboard-config-2.44 delete mode 100644 metadata/md5-cache/x11-terms/kitty-0.39.0 delete mode 100644 metadata/md5-cache/x11-terms/kitty-shell-integration-0.39.0 delete mode 100644 metadata/md5-cache/x11-terms/kitty-terminfo-0.39.0 delete mode 100644 metadata/md5-cache/x11-terms/terminator-2.1.3 create mode 100644 metadata/md5-cache/x11-themes/fluent-icon-theme-2025.02.10 create mode 100644 metadata/md5-cache/x11-themes/gtk-engines-2.20.2-r102 delete mode 100644 metadata/md5-cache/x11-themes/gtk-engines-rezlooks-0.6-r1 create mode 100644 metadata/md5-cache/x11-themes/gtk-engines-rezlooks-0.6-r2 create mode 100644 metadata/md5-cache/x11-themes/gtk-engines-rezlooks-0.6.1 create mode 100644 metadata/md5-cache/xfce-base/thunar-4.20.2 create mode 100644 metadata/md5-cache/xfce-base/xfce4-settings-4.20.1 create mode 100644 net-analyzer/firewalk/files/firewalk-5.0-signal.patch create mode 100644 net-analyzer/firewalk/firewalk-5.0-r3.ebuild delete mode 100644 net-analyzer/gvm-libs/gvm-libs-22.15.0.ebuild create mode 100644 net-analyzer/gvm-libs/gvm-libs-22.15.1.ebuild create mode 100644 net-analyzer/iplog/files/iplog-2.2.3-C23.patch create mode 100644 net-analyzer/iplog/iplog-2.2.3-r4.ebuild create mode 100644 net-analyzer/ippl/files/ippl-1.4.14-musl.patch create mode 100644 net-analyzer/ippl/ippl-1.4.14-r7.ebuild create mode 100644 net-analyzer/isic/files/isic-0.07-configure.patch create mode 100644 net-analyzer/isic/isic-0.07-r3.ebuild create mode 100644 net-analyzer/nast/files/0001-Fix-signal-handler.patch create mode 100644 net-analyzer/nast/files/0002-Fix-Wformat-security.patch delete mode 100644 net-analyzer/nast/nast-0.2.0-r3.ebuild create mode 100644 net-analyzer/nast/nast-0.2.0-r4.ebuild create mode 100644 net-analyzer/pinger/files/pinger-0.33-interface_ncurses-fix-C23-compat.patch create mode 100644 net-analyzer/pinger/files/pinger-0.33-interface_ncurses-fix-Wformat-security.patch delete mode 100644 net-analyzer/pinger/pinger-0.33-r1.ebuild create mode 100644 net-analyzer/pinger/pinger-0.33-r2.ebuild create mode 100644 net-analyzer/vnstat/vnstat-2.13.ebuild create mode 100644 net-analyzer/yersinia/files/yersinia-0.8.2-C23.patch delete mode 100644 net-analyzer/zabbix/zabbix-7.0.7.ebuild delete mode 100644 net-analyzer/zabbix/zabbix-7.2.1.ebuild create mode 100644 net-dialup/mwavem/files/mwavem-2.0-C23.patch create mode 100644 net-dialup/mwavem/files/mwavem-2.0-pthread.patch create mode 100644 net-dialup/mwavem/mwavem-2.0-r3.ebuild create mode 100644 net-dns/idnkit/files/idnkit-2.3-incompatible-pointers.patch delete mode 100644 net-dns/idnkit/idnkit-2.3-r1.ebuild create mode 100644 net-dns/idnkit/idnkit-2.3-r2.ebuild delete mode 100644 net-dns/pdns-recursor/files/pdns-recursor-r2 delete mode 100644 net-dns/pdns-recursor/pdns-recursor-5.0.9-r1.ebuild delete mode 100644 net-dns/pdns/pdns-4.9.2.ebuild create mode 100644 net-dns/pdns/pdns-4.9.4.ebuild delete mode 100644 net-im/dianara/Manifest delete mode 100644 net-im/dianara/dianara-1.4.2.ebuild delete mode 100644 net-im/dianara/metadata.xml rename net-im/discord/{discord-0.0.84.ebuild => discord-0.0.85.ebuild} (100%) create mode 100644 net-im/fractal/fractal-10-r1.ebuild create mode 100644 net-im/fractal/fractal-10.1.ebuild delete mode 100644 net-im/fractal/fractal-10.ebuild rename net-im/mattermost-desktop-bin/{mattermost-desktop-bin-5.11.0_rc1.ebuild => mattermost-desktop-bin-5.11.0.ebuild} (100%) delete mode 100644 net-im/mattermost-desktop-bin/mattermost-desktop-bin-5.9.2.ebuild delete mode 100644 net-im/neochat/neochat-24.12.1.ebuild delete mode 100644 net-im/psi/Manifest delete mode 100644 net-im/psi/metadata.xml delete mode 100644 net-im/psi/psi-1.5-r2.ebuild delete mode 100644 net-im/psi/psi-9999.ebuild delete mode 100644 net-im/psimedia/Manifest delete mode 100644 net-im/psimedia/metadata.xml delete mode 100644 net-im/psimedia/psimedia-9999.ebuild create mode 100644 net-im/synapse/synapse-1.124.0.ebuild rename net-im/telegram-desktop-bin/{telegram-desktop-bin-5.10.3.ebuild => telegram-desktop-bin-5.10.7.ebuild} (100%) delete mode 100644 net-im/tokodon/tokodon-24.12.1.ebuild delete mode 100644 net-irc/ergo/ergo-2.13.0.ebuild delete mode 100644 net-irc/ergo/ergo-2.13.1.ebuild create mode 100644 net-irc/ergo/ergo-2.15.0.ebuild delete mode 100644 net-irc/inspircd/inspircd-4.2.0.ebuild delete mode 100644 net-irc/iroffer-dinoex/iroffer-dinoex-3.32-r2.ebuild create mode 100644 net-irc/iroffer-dinoex/iroffer-dinoex-3.32-r3.ebuild create mode 100644 net-irc/iroffer-dinoex/iroffer-dinoex-3.33.ebuild delete mode 100644 net-irc/irssi/files/irssi-1.4.4-fix-usage-of-type-in-ExtUtils.patch delete mode 100644 net-irc/irssi/irssi-1.4.4-r1.ebuild delete mode 100644 net-irc/konversation/konversation-24.12.1.ebuild rename net-libs/davix/{davix-0.8.9.ebuild => davix-0.8.10.ebuild} (100%) create mode 100644 net-libs/davix/davix-9999.ebuild create mode 100644 net-libs/gnutls/gnutls-3.8.9.ebuild delete mode 100644 net-libs/libktorrent/libktorrent-24.12.1.ebuild delete mode 100644 net-libs/libnpupnp/libnpupnp-6.1.3.ebuild delete mode 100644 net-misc/anydesk/anydesk-6.3.2.ebuild create mode 100644 net-misc/anydesk/anydesk-6.4.0.ebuild delete mode 100644 net-misc/asterisk/asterisk-18.25.0.ebuild delete mode 100644 net-misc/asterisk/asterisk-18.26.0.ebuild create mode 100644 net-misc/asterisk/asterisk-18.26.1.ebuild delete mode 100644 net-misc/asterisk/asterisk-20.10.0-r1.ebuild delete mode 100644 net-misc/asterisk/asterisk-20.11.0.ebuild create mode 100644 net-misc/asterisk/asterisk-20.11.1.ebuild delete mode 100644 net-misc/asterisk/asterisk-21.6.0.ebuild create mode 100644 net-misc/asterisk/asterisk-21.6.1.ebuild delete mode 100644 net-misc/asterisk/asterisk-22.0.0-r1.ebuild delete mode 100644 net-misc/asterisk/asterisk-22.1.0.ebuild create mode 100644 net-misc/asterisk/asterisk-22.1.1.ebuild create mode 100644 net-misc/curl/curl-8.12.0-r1.ebuild create mode 100644 net-misc/curl/files/curl-8.12.0-multi.patch delete mode 100644 net-misc/dhcpcd/dhcpcd-10.0.10.ebuild delete mode 100644 net-misc/dhcpcd/dhcpcd-10.0.6-r2.ebuild delete mode 100644 net-misc/dhcpcd/dhcpcd-10.0.6-r3.ebuild delete mode 100644 net-misc/dhcpcd/dhcpcd-10.0.8.ebuild create mode 100644 net-misc/dhcpcd/dhcpcd-10.1.0-r1.ebuild create mode 100644 net-misc/dhcpcd/dhcpcd-10.2.0.ebuild delete mode 100644 net-misc/dhcpcd/files/dhcpcd-10.0.6-crash.patch delete mode 100644 net-misc/dhcpcd/files/dhcpcd-10.0.6-rebinding.patch create mode 100644 net-misc/dhcpcd/files/dhcpcd-10.1.0-seccomp-glibc-2.41.patch create mode 100644 net-misc/dhcpcd/files/dhcpcd-10.2.0-no-ipv6-build.patch delete mode 100644 net-misc/ethflop/Manifest.gz delete mode 100644 net-misc/ethflop/files/ethflop-20240916-makefile.patch delete mode 100644 net-misc/ethflop/files/ethflopd.confd delete mode 100644 net-misc/ethflop/files/ethflopd.initd delete mode 100644 net-misc/ethflop/files/ethflopd.service-r1 delete mode 100644 net-misc/ethflop/metadata.xml delete mode 100644 net-misc/fatrat/Manifest delete mode 100644 net-misc/fatrat/fatrat-1.2.0_beta2_p20161204.ebuild delete mode 100644 net-misc/fatrat/files/fatrat-1.2.0_beta2_p20150803-build.patch delete mode 100644 net-misc/fatrat/files/fatrat-1.2.0_beta2_p20161204-qt-5.15.patch delete mode 100644 net-misc/fatrat/metadata.xml delete mode 100644 net-misc/kio-zeroconf-common/kio-zeroconf-common-24.12.1.ebuild delete mode 100644 net-misc/kio-zeroconf/kio-zeroconf-24.12.1.ebuild delete mode 100644 net-misc/lyricwikia/Manifest delete mode 100644 net-misc/lyricwikia/files/lyricwikia-0.1.11-skip-online-test.patch delete mode 100644 net-misc/lyricwikia/lyricwikia-0.1.11-r1.ebuild delete mode 100644 net-misc/lyricwikia/lyricwikia-0.1.11-r2.ebuild delete mode 100644 net-misc/lyricwikia/metadata.xml create mode 100644 net-misc/nx/files/nx-3.5.99.26-gcc14-access.patch create mode 100644 net-misc/scponly/files/scponly-4.8-C23.patch delete mode 100644 net-misc/scponly/scponly-4.8-r8.ebuild create mode 100644 net-misc/scponly/scponly-4.8-r9.ebuild create mode 100644 net-misc/smb4k/smb4k-4.0.0.ebuild create mode 100644 net-misc/smbc/files/0001-Fix-signal-handlers.patch create mode 100644 net-misc/smbc/files/0002-Fix-Wformat-security.patch delete mode 100644 net-misc/smbc/smbc-1.2.2-r3.ebuild create mode 100644 net-misc/smbc/smbc-1.2.2-r4.ebuild rename net-misc/tigervnc-xorg-module/{tigervnc-xorg-module-1.14.90.ebuild => tigervnc-xorg-module-1.15.0.ebuild} (100%) rename net-misc/tigervnc/{tigervnc-1.14.90.ebuild => tigervnc-1.15.0.ebuild} (100%) delete mode 100644 net-misc/turbovnc/turbovnc-3.1.3.ebuild create mode 100644 net-misc/turbovnc/turbovnc-3.1.4.ebuild create mode 100644 net-misc/turbovnc/turbovnc-3.2_beta1.ebuild create mode 100644 net-misc/zssh/files/zssh-1.5c-C23.patch delete mode 100644 net-misc/zssh/zssh-1.5c-r2.ebuild create mode 100644 net-misc/zssh/zssh-1.5c-r3.ebuild delete mode 100644 net-news/alligator/alligator-24.12.1.ebuild create mode 100644 net-nntp/leafnode/files/leafnode-1.11.11-configure.patch delete mode 100644 net-nntp/leafnode/leafnode-1.11.11-r1.ebuild create mode 100644 net-nntp/leafnode/leafnode-1.11.11-r2.ebuild create mode 100644 net-nntp/leafnode/leafnode-1.12.0-r1.ebuild delete mode 100644 net-nntp/leafnode/leafnode-1.12.0.ebuild create mode 100644 net-p2p/go-ethereum/go-ethereum-1.14.13.ebuild create mode 100644 net-p2p/go-ethereum/go-ethereum-1.15.1.ebuild delete mode 100644 net-p2p/ktorrent/ktorrent-24.12.1.ebuild delete mode 100644 net-p2p/mktorrent/mktorrent-1.1_p20210130.ebuild create mode 100644 net-print/libinklevel/files/libinklevel-0.9.7-disable-docs.patch create mode 100644 net-print/libinklevel/libinklevel-0.9.7.ebuild create mode 100644 net-proxy/squidguard/files/squidguard-1.6.0-C23.patch create mode 100644 net-proxy/squidguard/squidguard-1.6.0-r2.ebuild create mode 100644 net-vpn/pptpd/files/pptpd-1.4.0-logwtmp.patch create mode 100644 net-vpn/pptpd/pptpd-1.4.0-r5.ebuild create mode 100644 net-vpn/tailscale/tailscale-1.80.1.ebuild create mode 100644 net-wireless/iwd/iwd-3.4.ebuild create mode 100644 profiles/features/musl/llvm/eapi create mode 100644 profiles/features/musl/llvm/package.mask create mode 100644 profiles/features/musl/llvm/parent create mode 100644 sci-biology/augustus/augustus-3.5.0.ebuild create mode 100644 sci-biology/augustus/files/augustus-3.4.0-missing-cstdint.patch create mode 100644 sci-biology/augustus/files/augustus-3.5.0-fix-gcc15.patch create mode 100644 sci-chemistry/gperiodic/files/gperiodic-3.0.3-incompatible-pointers.patch create mode 100644 sci-chemistry/gperiodic/gperiodic-3.0.3-r1.ebuild delete mode 100644 sci-electronics/gazebo/files/boost.patch delete mode 100644 sci-electronics/gazebo/files/boost186.patch delete mode 100644 sci-electronics/gazebo/files/gv10.patch delete mode 100644 sci-electronics/gazebo/files/protobuf.patch delete mode 100644 sci-electronics/gazebo/gazebo-11.13.0.ebuild delete mode 100644 sci-electronics/gazebo/gazebo-11.14.0.ebuild create mode 100644 sci-geosciences/harmonics-dwf-free/harmonics-dwf-free-20241229.ebuild create mode 100644 sci-geosciences/tcd-utils/tcd-utils-20240222.ebuild create mode 100644 sci-libs/armadillo/armadillo-14.2.3.ebuild delete mode 100644 sci-libs/fplll/fplll-5.4.5.ebuild delete mode 100644 sci-libs/gdal/files/gdal-3.7.0-zlib-OF.patch delete mode 100644 sci-libs/gdal/files/gdal-3.8.0-java21.patch delete mode 100644 sci-libs/gdal/files/gdal-3.8.0-libxml2-2.12-1.patch delete mode 100644 sci-libs/gdal/files/gdal-3.8.0-libxml2-2.12-2.patch delete mode 100644 sci-libs/gdal/files/gdal-3.8.5-poppler-24.05.0.patch create mode 100644 sci-libs/gdal/files/gdal-3.9.3-poppler-25.02.patch create mode 100644 sci-libs/gdal/files/gdal-3.9.3-poppler-autotest-25.02.patch delete mode 100644 sci-libs/gdal/gdal-3.8.0-r1.ebuild delete mode 100644 sci-libs/gdal/gdal-3.8.5.ebuild delete mode 100644 sci-libs/gdal/gdal-3.9.0.ebuild delete mode 100644 sci-libs/gdal/gdal-3.9.1-r1.ebuild create mode 100644 sci-libs/gdal/gdal-3.9.3.ebuild create mode 100644 sci-libs/hipBLAS-common/hipBLAS-common-6.3.2.ebuild delete mode 100644 sci-libs/hipBLAS/hipBLAS-5.1.3.ebuild delete mode 100644 sci-libs/hipBLAS/hipBLAS-5.4.2.ebuild create mode 100644 sci-libs/hipBLAS/hipBLAS-6.3.2.ebuild create mode 100644 sci-libs/hipBLASLt/hipBLASLt-6.3.2.ebuild delete mode 100644 sci-libs/hipCUB/files/hipCUB-4.3.0-add-memory-header.patch delete mode 100644 sci-libs/hipCUB/hipCUB-5.1.3.ebuild create mode 100644 sci-libs/hipCUB/hipCUB-6.3.2.ebuild delete mode 100644 sci-libs/hipFFT/files/hipFFT-5.1.3-gentoo-install-locations.patch delete mode 100644 sci-libs/hipFFT/files/hipFFT-5.1.3_hip-config.patch delete mode 100644 sci-libs/hipFFT/hipFFT-5.1.3-r1.ebuild create mode 100644 sci-libs/hipFFT/hipFFT-6.3.2.ebuild delete mode 100644 sci-libs/hipRAND/hipRAND-5.6.0-r1.ebuild create mode 100644 sci-libs/hipRAND/hipRAND-6.3.2.ebuild create mode 100644 sci-libs/hipSOLVER/hipSOLVER-6.3.2.ebuild delete mode 100644 sci-libs/hipSPARSE/files/hipSPARSE-5.0.2-remove-matrices-unpacking.patch delete mode 100644 sci-libs/hipSPARSE/hipSPARSE-5.1.3-r1.ebuild create mode 100644 sci-libs/mc/files/mc-1.5-missing-decl.patch create mode 100644 sci-libs/mc/mc-1.5-r1.ebuild delete mode 100644 sci-libs/mc/mc-1.5.ebuild delete mode 100644 sci-libs/miopen/files/miopen-5.0.2-strip-xnack-in-flags.patch delete mode 100644 sci-libs/miopen/files/miopen-5.1.3-avoid-metadata-error-for-vanilla-clang.patch delete mode 100644 sci-libs/miopen/files/miopen-5.1.3-deprecate-clang-ocl.patch delete mode 100644 sci-libs/miopen/files/miopen-5.1.3-gfx1031.patch delete mode 100644 sci-libs/miopen/miopen-5.1.3-r1.ebuild create mode 100644 sci-libs/miopen/miopen-6.3.2.ebuild create mode 100644 sci-libs/pgplot/files/pgplot-C99.patch create mode 100644 sci-libs/pgplot/pgplot-5.2.2-r9.ebuild delete mode 100644 sci-libs/rocBLAS/files/rocBLAS-4.3.0-fix-glibc-2.32-and-above.patch delete mode 100644 sci-libs/rocBLAS/files/rocBLAS-5.0.2-change-default-Tensile-library-dir.patch delete mode 100644 sci-libs/rocBLAS/files/rocBLAS-5.0.2-cpp_lib_filesystem.patch delete mode 100644 sci-libs/rocBLAS/files/rocBLAS-5.0.2-unbundle-Tensile.patch delete mode 100644 sci-libs/rocBLAS/files/rocBLAS-5.4.2-unbundle-Tensile.patch delete mode 100644 sci-libs/rocBLAS/rocBLAS-5.1.3-r4.ebuild delete mode 100644 sci-libs/rocBLAS/rocBLAS-5.4.2-r3.ebuild create mode 100644 sci-libs/rocBLAS/rocBLAS-6.3.2.ebuild delete mode 100644 sci-libs/rocFFT/files/rocFFT-4.2.0-add-functional-header.patch delete mode 100644 sci-libs/rocFFT/files/rocFFT-5.0.2-add-math-header.patch delete mode 100644 sci-libs/rocFFT/files/rocFFT-5.1.3-add-stdexcept-header.patch delete mode 100644 sci-libs/rocFFT/files/rocFFT-5.1.3-unbundle-sqlite.patch delete mode 100644 sci-libs/rocFFT/rocFFT-5.1.3-r1.ebuild create mode 100644 sci-libs/rocFFT/rocFFT-6.3.2.ebuild delete mode 100644 sci-libs/rocPRIM/rocPRIM-5.1.3.ebuild create mode 100644 sci-libs/rocPRIM/rocPRIM-6.3.2.ebuild delete mode 100644 sci-libs/rocRAND/files/rocRAND-5.1.3_no-symlink.patch delete mode 100644 sci-libs/rocRAND/files/rocRAND-5.1.3_stdint-gcc13.patch delete mode 100644 sci-libs/rocRAND/rocRAND-5.1.3.ebuild delete mode 100644 sci-libs/rocRAND/rocRAND-5.6.0-r1.ebuild create mode 100644 sci-libs/rocRAND/rocRAND-6.3.2.ebuild delete mode 100644 sci-libs/rocSOLVER/files/rocSOLVER-4.2.0-add-stdint-header.patch delete mode 100644 sci-libs/rocSOLVER/files/rocSOLVER-5.0.2-libfmt8.patch delete mode 100644 sci-libs/rocSOLVER/files/rocSOLVER-5.4.2-libfmt9.patch delete mode 100644 sci-libs/rocSOLVER/rocSOLVER-5.1.3-r1.ebuild delete mode 100644 sci-libs/rocSOLVER/rocSOLVER-5.4.2.ebuild create mode 100644 sci-libs/rocSOLVER/rocSOLVER-6.3.2.ebuild delete mode 100644 sci-libs/rocSPARSE/files/rocSPARSE-5.0.2-enable-gfx1031.patch delete mode 100644 sci-libs/rocSPARSE/files/rocSPARSE-5.0.2-remove-incorrect-assert.patch delete mode 100644 sci-libs/rocSPARSE/files/rocSPARSE-5.0.2-remove-matrices-unpacking.patch delete mode 100644 sci-libs/rocSPARSE/rocSPARSE-5.1.3-r1.ebuild create mode 100644 sci-libs/rocSPARSE/rocSPARSE-6.3.2.ebuild delete mode 100644 sci-libs/rocThrust/rocThrust-5.1.3.ebuild create mode 100644 sci-libs/rocThrust/rocThrust-6.3.2.ebuild create mode 100644 sci-libs/rocWMMA/rocWMMA-6.3.2.ebuild delete mode 100644 sci-libs/superlu/superlu-4.3-r3.ebuild create mode 100644 sci-libs/superlu/superlu-4.3-r4.ebuild create mode 100644 sci-libs/transformers/transformers-4.47.1.ebuild create mode 100644 sci-mathematics/4ti2/4ti2-1.6.10.ebuild create mode 100644 sci-mathematics/4ti2/files/4ti2-1.6.10-slibtool.patch create mode 100644 sci-mathematics/coq/coq-8.17.1.ebuild delete mode 100644 sci-mathematics/easycrypt/easycrypt-2024.01-r1.ebuild create mode 100644 sci-mathematics/why3-for-spark/files/why3-for-spark-2023.12.13-spark.patch create mode 100644 sci-mathematics/why3-for-spark/why3-for-spark-2023.12.13-r2.ebuild delete mode 100644 sci-mathematics/why3-for-spark/why3-for-spark-2023.12.13.ebuild delete mode 100644 sci-physics/root/root-6.30.08.ebuild delete mode 100644 sci-physics/root/root-6.32.06.ebuild delete mode 100644 sci-physics/root/root-6.32.08.ebuild create mode 100644 sci-physics/root/root-6.32.10.ebuild create mode 100644 sci-physics/root/root-6.34.04.ebuild create mode 100644 sci-visualization/gle/gle-4.3.5.ebuild create mode 100644 sci-visualization/gwyddion/gwyddion-2.67.ebuild create mode 100644 sec-keys/openpgp-keys-apache-tomcat/openpgp-keys-apache-tomcat-10.1.35.ebuild create mode 100644 sec-keys/openpgp-keys-apache-tomcat/openpgp-keys-apache-tomcat-11.0.3.ebuild create mode 100644 sec-keys/openpgp-keys-apache-tomcat/openpgp-keys-apache-tomcat-9.0.99.ebuild create mode 100644 sec-keys/openpgp-keys-gentoo-developers/openpgp-keys-gentoo-developers-20250203.ebuild create mode 100644 sec-keys/openpgp-keys-libtasn1/openpgp-keys-libtasn1-20250209.ebuild create mode 100644 sec-keys/openpgp-keys-nicholaswilson/Manifest create mode 100644 sec-keys/openpgp-keys-nicholaswilson/metadata.xml create mode 100644 sec-keys/openpgp-keys-nicholaswilson/openpgp-keys-nicholaswilson-20250209.ebuild create mode 100644 sys-apps/amdgpu_top/amdgpu_top-0.10.3.ebuild create mode 100644 sys-apps/apparmor/apparmor-3.1.4-r2.ebuild delete mode 100644 sys-apps/apparmor/apparmor-3.1.4.ebuild create mode 100644 sys-apps/apparmor/files/apparmor-3.1.4-fix-hardcoded-path.patch delete mode 100644 sys-apps/audio-entropyd/audio-entropyd-2.0.3-r1.ebuild create mode 100644 sys-apps/audio-entropyd/audio-entropyd-2.0.3-r2.ebuild delete mode 100644 sys-apps/audio-entropyd/files/audio-entropyd-2.0.1-uclibc.patch create mode 100644 sys-apps/audio-entropyd/files/audio-entropyd-2.0.3-incompatible-pointers.patch create mode 100644 sys-apps/bat/bat-0.25.0.ebuild create mode 100644 sys-apps/checkpolicy/checkpolicy-3.8.ebuild create mode 100644 sys-apps/dbus/dbus-1.16.0.ebuild create mode 100644 sys-apps/dbus/files/dbus-1.16.0-enable-elogind.patch create mode 100644 sys-apps/diffutils/diffutils-3.11-r1.ebuild delete mode 100644 sys-apps/diffutils/diffutils-3.11.ebuild delete mode 100644 sys-apps/iproute2/iproute2-6.11.0.ebuild create mode 100644 sys-apps/iproute2/iproute2-6.13.0.ebuild delete mode 100644 sys-apps/iproute2/iproute2-6.9.0.ebuild create mode 100644 sys-apps/mcstrans/mcstrans-3.8.ebuild delete mode 100644 sys-apps/memtest86-bin/memtest86-bin-11.1.ebuild create mode 100644 sys-apps/memtest86-bin/memtest86-bin-11.2.ebuild create mode 100644 sys-apps/nawk/nawk-20250116.ebuild delete mode 100644 sys-apps/pandora_box/pandora_box-0.12.0-r1.ebuild create mode 100644 sys-apps/pandora_box/pandora_box-0.13.0.ebuild create mode 100644 sys-apps/pandora_box/pandora_box-0.14.0-r1.ebuild create mode 100644 sys-apps/pcsc-tools/pcsc-tools-1.7.2.ebuild create mode 100644 sys-apps/policycoreutils/policycoreutils-3.8.ebuild create mode 100644 sys-apps/pv/pv-1.9.31.ebuild create mode 100644 sys-apps/restorecond/restorecond-3.8.ebuild create mode 100644 sys-apps/secilc/secilc-3.8.ebuild create mode 100644 sys-apps/selinux-python/selinux-python-3.8.ebuild create mode 100644 sys-apps/semodule-utils/semodule-utils-3.8.ebuild delete mode 100644 sys-apps/syd/syd-3.30.0.ebuild create mode 100644 sys-apps/syd/syd-3.31.0.ebuild create mode 100644 sys-apps/syd/syd-3.32.1.ebuild create mode 100644 sys-apps/sysvinit/sysvinit-3.14.ebuild create mode 100644 sys-apps/tuned/tuned-2.25.1.ebuild create mode 100644 sys-apps/usbredir/usbredir-0.15.0.ebuild create mode 100644 sys-apps/which/which-2.23.ebuild create mode 100644 sys-auth/google-authenticator/google-authenticator-1.11.ebuild create mode 100644 sys-auth/nss-pam-ldapd/nss-pam-ldapd-0.9.13.ebuild delete mode 100644 sys-auth/pam_mysql/pam_mysql-0.8.2-r1.ebuild create mode 100644 sys-auth/pam_mysql/pam_mysql-0.8.2-r2.ebuild delete mode 100644 sys-block/endpoint/endpoint-0.1.0-r1.ebuild create mode 100644 sys-block/endpoint/endpoint-0.1.0-r2.ebuild create mode 100644 sys-block/endpoint/files/endpoint-0.1.0-ar.patch create mode 100644 sys-block/endpoint/files/endpoint-0.1.0-impl-exit.patch delete mode 100644 sys-block/partitionmanager/partitionmanager-24.12.1.ebuild create mode 100644 sys-devel/dev86/dev86-1.0.1.ebuild create mode 100644 sys-devel/dev86/files/dev86-1.0.1-makefile.patch create mode 100644 sys-devel/gcc/gcc-12.4.1_p20250206.ebuild create mode 100644 sys-devel/gcc/gcc-13.3.1_p20250207.ebuild create mode 100644 sys-devel/gcc/gcc-14.2.1_p20250208.ebuild create mode 100644 sys-devel/gcc/gcc-15.0.1_pre20250209.ebuild create mode 100644 sys-devel/gettext/gettext-0.23.1.ebuild delete mode 100644 sys-devel/gettext/gettext-0.23.ebuild create mode 100644 sys-devel/smatch/files/smatch-1.72-C23.patch create mode 100644 sys-devel/smatch/files/smatch-1.72-function-prototype.patch create mode 100644 sys-devel/smatch/files/smatch-1.72-make-deps.patch create mode 100644 sys-devel/smatch/smatch-1.72-r2.ebuild delete mode 100644 sys-devel/smatch/smatch-1.72.ebuild create mode 100644 sys-devel/smatch/smatch-1.73-r1.ebuild delete mode 100644 sys-firmware/edk2/edk2-202405.ebuild delete mode 100644 sys-firmware/intel-microcode/intel-microcode-20240813_p20240815.ebuild create mode 100644 sys-firmware/intel-microcode/intel-microcode-20250211_p20250211.ebuild create mode 100644 sys-fs/bcachefs-tools/bcachefs-tools-1.20.0.ebuild create mode 100644 sys-fs/e2tools/e2tools-0.1.2.ebuild delete mode 100644 sys-fs/exfatprogs/exfatprogs-1.2.5.ebuild create mode 100644 sys-fs/exfatprogs/exfatprogs-1.2.7.ebuild delete mode 100644 sys-fs/lxcfs/lxcfs-6.0.2.ebuild create mode 100644 sys-fs/mdadm/files/mdadm-4.3-do-not-call-gcc-directly.patch create mode 100644 sys-fs/mdadm/files/mdadm-4.3-musl-basename.patch create mode 100644 sys-fs/mdadm/files/mdadm-4.3-musl-include.patch create mode 100644 sys-fs/mdadm/mdadm-4.4.ebuild create mode 100644 sys-kernel/dracut/dracut-106-r1.ebuild delete mode 100644 sys-kernel/dracut/dracut-106.ebuild create mode 100644 sys-kernel/dracut/files/dracut-106-fix-rngd-module.patch create mode 100644 sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-6.12.13.ebuild create mode 100644 sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-6.13.2.ebuild create mode 100644 sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-6.6.76.ebuild create mode 100644 sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-6.6.77.ebuild create mode 100644 sys-kernel/gentoo-kernel/gentoo-kernel-6.12.13.ebuild create mode 100644 sys-kernel/gentoo-kernel/gentoo-kernel-6.13.2.ebuild create mode 100644 sys-kernel/gentoo-kernel/gentoo-kernel-6.6.76.ebuild create mode 100644 sys-kernel/gentoo-kernel/gentoo-kernel-6.6.77.ebuild delete mode 100644 sys-kernel/gentoo-sources/gentoo-sources-6.12.10.ebuild create mode 100644 sys-kernel/gentoo-sources/gentoo-sources-6.12.13.ebuild create mode 100644 sys-kernel/gentoo-sources/gentoo-sources-6.13.2.ebuild create mode 100644 sys-kernel/gentoo-sources/gentoo-sources-6.6.76.ebuild create mode 100644 sys-kernel/gentoo-sources/gentoo-sources-6.6.77.ebuild create mode 100644 sys-kernel/git-sources/git-sources-6.14_rc2.ebuild delete mode 100644 sys-kernel/linux-firmware/linux-firmware-20241110.ebuild create mode 100644 sys-kernel/linux-firmware/linux-firmware-20250211.ebuild create mode 100644 sys-kernel/scx/scx-1.0.9.ebuild create mode 100644 sys-kernel/vanilla-kernel/vanilla-kernel-6.12.13.ebuild create mode 100644 sys-kernel/vanilla-kernel/vanilla-kernel-6.13.2.ebuild create mode 100644 sys-kernel/vanilla-kernel/vanilla-kernel-6.6.76.ebuild create mode 100644 sys-kernel/vanilla-kernel/vanilla-kernel-6.6.77.ebuild rename sys-kernel/vanilla-sources/{vanilla-sources-6.12.12.ebuild => vanilla-sources-6.12.13.ebuild} (100%) rename sys-kernel/vanilla-sources/{vanilla-sources-6.13.1.ebuild => vanilla-sources-6.13.2.ebuild} (100%) rename sys-kernel/vanilla-sources/{vanilla-sources-6.6.75.ebuild => vanilla-sources-6.6.77.ebuild} (100%) delete mode 100644 sys-libs/kpmcore/kpmcore-24.12.1.ebuild create mode 100644 sys-libs/libselinux/libselinux-3.8.ebuild create mode 100644 sys-libs/libsemanage/libsemanage-3.8.ebuild create mode 100644 sys-libs/libsepol/libsepol-3.8.ebuild create mode 100644 sys-libs/liburing/liburing-2.9.ebuild create mode 100644 sys-libs/libxcrypt/libxcrypt-4.4.38.ebuild create mode 100644 sys-libs/lwp/files/lwp-2.8-bool.patch create mode 100644 sys-libs/lwp/lwp-2.8-r1.ebuild create mode 100644 sys-libs/musl/files/musl-iconv-out-of-bound-fix.patch create mode 100644 sys-libs/musl/musl-1.2.3-r10.ebuild create mode 100644 sys-libs/musl/musl-1.2.4-r4.ebuild create mode 100644 sys-libs/musl/musl-1.2.5-r3.ebuild create mode 100644 sys-libs/zlib-ng/zlib-ng-2.2.4.ebuild create mode 100644 sys-process/fcron/fcron-3.3.2.ebuild create mode 100644 sys-process/fcron/fcron-3.3.3.ebuild create mode 100644 sys-process/fcron/files/fcron-3.3.2-time_t.patch create mode 100644 virtual/dist-kernel/dist-kernel-6.12.13.ebuild create mode 100644 virtual/dist-kernel/dist-kernel-6.13.2.ebuild create mode 100644 virtual/dist-kernel/dist-kernel-6.6.76.ebuild create mode 100644 virtual/dist-kernel/dist-kernel-6.6.77.ebuild create mode 100644 www-apache/mod_tls/files/mod_tls.conf rename www-apps/chromedriver-bin/{chromedriver-bin-133.0.6943.53.ebuild => chromedriver-bin-133.0.6943.98.ebuild} (100%) rename www-apps/gitea/{gitea-1.23.0.ebuild => gitea-1.23.3.ebuild} (100%) create mode 100644 www-apps/mediawiki/mediawiki-1.42.5.ebuild create mode 100644 www-apps/moodle/moodle-4.3.10.ebuild delete mode 100644 www-apps/moodle/moodle-4.3.9.ebuild delete mode 100644 www-apps/moodle/moodle-4.4.5.ebuild create mode 100644 www-apps/moodle/moodle-4.4.6.ebuild delete mode 100644 www-apps/moodle/moodle-4.5.1.ebuild create mode 100644 www-apps/moodle/moodle-4.5.2.ebuild rename www-apps/prowlarr-bin/{prowlarr-bin-1.31.0.4941.ebuild => prowlarr-bin-1.31.1.4959.ebuild} (100%) delete mode 100644 www-apps/radarr-bin/radarr-bin-5.18.4.9674.ebuild create mode 100644 www-apps/radarr-bin/radarr-bin-5.19.0.9697.ebuild delete mode 100644 www-apps/sonarr-bin/sonarr-bin-4.0.12.2900.ebuild create mode 100644 www-apps/sonarr-bin/sonarr-bin-4.0.13.2932.ebuild delete mode 100644 www-apps/wordpress/wordpress-6.7.1.ebuild create mode 100644 www-apps/wordpress/wordpress-6.7.2.ebuild delete mode 100644 www-client/chromium/chromium-132.0.6834.159.ebuild delete mode 100644 www-client/chromium/chromium-132.0.6834.83.ebuild delete mode 100644 www-client/chromium/chromium-133.0.6943.27.ebuild create mode 100644 www-client/chromium/chromium-133.0.6943.98.ebuild create mode 100644 www-client/chromium/chromium-134.0.6998.15.ebuild delete mode 100644 www-client/chromium/chromium-134.0.6998.3.ebuild create mode 100644 www-client/chromium/chromium-135.0.6999.2.ebuild create mode 100644 www-client/chromium/files/chromium-134-map_droppable-glibc.patch create mode 100644 www-client/chromium/files/chromium-135-fix-non-wayland-build.patch delete mode 100644 www-client/falkon/falkon-24.12.1.ebuild delete mode 100644 www-client/firefox-bin/firefox-bin-128.5.2.ebuild delete mode 100644 www-client/firefox-bin/firefox-bin-128.6.0.ebuild delete mode 100644 www-client/firefox-bin/firefox-bin-133.0.3.ebuild delete mode 100644 www-client/firefox-bin/firefox-bin-134.0.1.ebuild delete mode 100644 www-client/firefox-bin/firefox-bin-134.0.2.ebuild delete mode 100644 www-client/firefox-bin/firefox-bin-134.0.ebuild delete mode 100644 www-client/firefox/firefox-128.5.0.ebuild delete mode 100644 www-client/firefox/firefox-128.5.1.ebuild delete mode 100644 www-client/firefox/firefox-128.6.0.ebuild delete mode 100644 www-client/firefox/firefox-133.0.3.ebuild delete mode 100644 www-client/firefox/firefox-134.0.1.ebuild delete mode 100644 www-client/firefox/firefox-134.0.2.ebuild delete mode 100644 www-client/firefox/firefox-134.0.ebuild rename www-client/google-chrome-beta/{google-chrome-beta-134.0.6998.3.ebuild => google-chrome-beta-134.0.6998.15.ebuild} (100%) rename www-client/google-chrome/{google-chrome-133.0.6943.53.ebuild => google-chrome-133.0.6943.98.ebuild} (100%) rename www-client/microsoft-edge-beta/{microsoft-edge-beta-133.0.3065.31.ebuild => microsoft-edge-beta-133.0.3065.59.ebuild} (100%) rename www-client/microsoft-edge-dev/{microsoft-edge-dev-134.0.3081.2.ebuild => microsoft-edge-dev-134.0.3124.5.ebuild} (100%) rename www-client/microsoft-edge/{microsoft-edge-132.0.2957.140.ebuild => microsoft-edge-133.0.3065.59.ebuild} (100%) rename www-client/opera-developer/{opera-developer-118.0.5419.0.ebuild => opera-developer-118.0.5439.0.ebuild} (100%) rename www-client/opera/{opera-116.0.5366.71.ebuild => opera-116.0.5366.127.ebuild} (100%) create mode 100644 www-client/seamonkey/seamonkey-2.53.20.ebuild create mode 100644 www-client/tangram/tangram-3.3.ebuild rename www-client/vivaldi-snapshot/{vivaldi-snapshot-7.1.3570.27.ebuild => vivaldi-snapshot-7.2.3597.3.ebuild} (100%) delete mode 100644 www-client/vivaldi/vivaldi-7.0.3495.29.ebuild create mode 100644 www-client/vivaldi/vivaldi-7.1.3570.47.ebuild rename www-client/vivaldi/{vivaldi-7.1.3570.42.ebuild => vivaldi-7.1.3570.50.ebuild} (100%) create mode 100644 www-misc/monitorix/monitorix-3.16.0.ebuild rename www-plugins/chrome-binary-plugins/{chrome-binary-plugins-133.0.6943.53.ebuild => chrome-binary-plugins-133.0.6943.98.ebuild} (100%) rename www-plugins/chrome-binary-plugins/{chrome-binary-plugins-134.0.6998.3_beta.ebuild => chrome-binary-plugins-134.0.6998.15_beta.ebuild} (100%) create mode 100644 www-servers/tomcat/tomcat-10.1.35.ebuild create mode 100644 www-servers/tomcat/tomcat-11.0.3.ebuild create mode 100644 www-servers/tomcat/tomcat-9.0.99.ebuild create mode 100644 x11-libs/libxkbcommon/libxkbcommon-1.8.0.ebuild create mode 100644 x11-libs/qwt/qwt-6.2.0-r4.ebuild create mode 100644 x11-libs/wxGTK/wxGTK-3.0.4-r6.ebuild create mode 100644 x11-misc/qt5ct/qt5ct-1.9.ebuild delete mode 100644 x11-misc/shutter/shutter-0.99.4-r1.ebuild create mode 100644 x11-misc/trayer-srg/files/trayer-srg-1.1.8-fix-define.patch delete mode 100644 x11-misc/trayer-srg/trayer-srg-1.1.8-r1.ebuild create mode 100644 x11-misc/viewglob/files/viewglob-2.0.4-C23.patch create mode 100644 x11-misc/xkeyboard-config/xkeyboard-config-2.44.ebuild delete mode 100644 x11-terms/kitty-shell-integration/kitty-shell-integration-0.39.0.ebuild delete mode 100644 x11-terms/kitty-terminfo/kitty-terminfo-0.39.0.ebuild delete mode 100644 x11-terms/kitty/kitty-0.39.0.ebuild delete mode 100644 x11-terms/terminator/terminator-2.1.3.ebuild create mode 100644 x11-themes/fluent-icon-theme/fluent-icon-theme-2025.02.10.ebuild create mode 100644 x11-themes/gtk-engines-rezlooks/files/gtk-engines-rezlooks-0.6-implicit-declaration.patch delete mode 100644 x11-themes/gtk-engines-rezlooks/gtk-engines-rezlooks-0.6-r1.ebuild create mode 100644 x11-themes/gtk-engines-rezlooks/gtk-engines-rezlooks-0.6-r2.ebuild create mode 100644 x11-themes/gtk-engines-rezlooks/gtk-engines-rezlooks-0.6.1.ebuild create mode 100644 x11-themes/gtk-engines/files/gtk-engines-2.20.2-lua.patch create mode 100644 x11-themes/gtk-engines/gtk-engines-2.20.2-r102.ebuild create mode 100644 xfce-base/thunar/thunar-4.20.2.ebuild create mode 100644 xfce-base/xfce4-settings/xfce4-settings-4.20.1.ebuild diff --git a/Manifest b/Manifest index 0af7ff71a55b..059ed0b0492f 100644 --- a/Manifest +++ b/Manifest @@ -1,23 +1,23 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 -MANIFEST Manifest.files.gz 30162 BLAKE2B 75505553b68c340c311b6ee63e9a509c1c42b19cef9d6f6b5bb920d1cfbe5afed2613ac97711d0c6d6d55f85103b408844354f99a09e3c6b1c33022400291eaf SHA512 8569a2df8d48ab50a524ebd57f7fd197a8affb6a3f9e743673e88c7aa2319b07a95541cacf0453abc2f34979016e6d72d7bf39d0cb98b83dd506b5861279d2b1 -TIMESTAMP 2025-02-07T23:40:35Z +MANIFEST Manifest.files.gz 30112 BLAKE2B 96bebbecfbbc29ea536078a6a2f1308aed22a4129ab13d06dd044d2e64455c99dd65907ce6512e5eded644dee98c7244b7f520423c9270876a096a0cc66538d1 SHA512 4d3378b9c95bf12c7c191807e28c809559f7d8d29fe862ef485eccca1c490f9d0d34eaa008d8726227adfd06a9a76872bafbfcb0ff4c2d2e55fb55edd932bbd7 +TIMESTAMP 2025-02-14T07:10:12Z -----BEGIN PGP SIGNATURE----- -iQKTBAEBCgB9FiEE4dartjv8+0ugL98c7FkO6skYklAFAmemmfNfFIAAAAAALgAo +iQKTBAEBCgB9FiEE4dartjv8+0ugL98c7FkO6skYklAFAmeu7FRfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEUx RDZBQkI2M0JGQ0ZCNEJBMDJGREYxQ0VDNTkwRUVBQzkxODkyNTAACgkQ7FkO6skY -klDJVg//fw3rPU15OIT5Y4ln+8SDMdQmH5FBldL8l+dNvsxD20SaZNgeYJZCNGWT -7GRly8PWpANzh1hD14hdot/LmWcjgHfQ66goO3BnmBMYteaO0nJfb4VOSV7E7a3Q -JwN/xTom1bWD2NKqAL4XAEyZC9HoPqc3Ka8fs23c74dRdiz63HCqPJCJG9BVVSX3 -uqn8xBL5qoe1oNFJazZGIXxUXXiE8sQDUiLkANLkcDeT8N5HR9jBUWft0ommdwOx -GMSMuI1ZWCNJ0HBCGTZfVHnzjbggmDxbnDYBZOM5iCTRBck/Hf/1IaYHo0LgIhUE -9jaw6kpbN27TQVKSmUCdIE9EoSNBcxDuWUWHE9g+GOTSfy2NwEj8ig8TWD9v2ViX -dGkA2SifEylvnTdJ9FNKq9Ccn0LIoggGsP+8634c5II8Bw1RrrIPY2v83q5HENq3 -gSxdY/9p9JDZV2H6GAV79q53XwKw2tiWYFeF5oB8LGnp1UMFM7fkKhJ7TAWHoLUm -mf364AqIMN96QDpJZHxnmStOvU83jWcv0jdwJv3lEJ+w0CFmZfpqUn9tMpAERty1 -tKAszMkKudEGntPDNLjow6t/p4hZYQw0DKQ8KNSQB9978V5iYlUUpdIhIR4c9ez4 -jT84Jofx0WM87q/kkhCo4iAznZPi5VThiYXoV5ZUDA7u+2Lj9RM= -=vew+ +klBSNw/+JZGq4myziYf60zyObfFA/QOZYyw3vO3d3TGNce6UlJlWnDcUZV1vI/8N +BaVvYNSW7gLTztzuYShxm2fiqbun7z83ZuTicOmUxL0QZ3jxaW+P6yfJtMxtrZPS +kcG6kafRZS9rZ/TwfEjrSOJyDYKG/mS5+t84Ipl3TXhENiVJftWo2tnHVgvSin0O ++9DDYzyhjhPEGOrqVZ54dRiNLAF14xfA7siEyJgRas+qVSciNzJBxpMHQThn2YOB +xzZeKEUnUdEg2mb+Xn4wceGA4t42EThfoW6n6MsM+C5TZFIfOG/C/AEG3y8jlZnK +xv5D2SmQsghq4TSm0G0fS9EZQMhR4ba067xGdle19Ah8TeuOjNetwaLtGIs74RxA +hyC5IrJyccc4jwOlgSxC+Ua3EJSU60Sxd+Ho7yHZQeoaa1K7FWafEOhn7hcCqbyQ +j13pa5N9mp+/5ww921J/uvHwXGCJNktghgkNYi/rpDU81Y1uTuGbGnopjuo6D43g +XHfRaVhXBhqppl4852Af76B4XqCJDKqGeib7EHyH8IHTxP+jWUpe4kLs7XteIbwS +Nm06KfPF/oQk/jDE3Fa/+SGxGGo7JVR0sLhvWOqOzzVshm8C1JzxCjQBkicZdI3V +k/xi/2b+QW1wgibbSYhVfkNg37K09ijCJmD2bIjTYLDoySKLlO8= +=bblx -----END PGP SIGNATURE----- diff --git a/Manifest.files.gz b/Manifest.files.gz index b107d228379e551b23fcdcadaad40659dbb8f8be..33a100c3248df605c7c3a64af84c19273582a7b7 100644 GIT binary patch literal 30112 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 TqeDaE_OJg3=BIhpC)xl2)-5NG literal 30162 zcmV(;K-<3`iwFP!00002|8%|Ewk1cBUH8tfsCSKOg}aAe;;}hMNgR@>F(mzf-=Zqj z2_%?ER9ExsHD^F|E*mX%5ke-;**n7BY}s1oX6FCtpa1WF{?lJ~U;Fz%{rLNjKV8?K z{^S4l&;RRxj{osbp|lW>H1~DqtBlp+D7m!zI*xiCX&kxab=~tCwV&Y*@odL=%(mun z?$TGBtL$;adCuNeKlhHIrP1!X?xUo==6%+)_BzKr#^P^A;iqG`M;;-afBL`vmw(P7 z{weku<5lueO6>eb%kd1?sz;dn?)|7KrFHE#=gw!E=T&ApSKeV<$Jo8aGS1c7o!iOB zA7{+rjO~u0mU8b|<2m_rJg>QTF17EY#eB@`x>k;5uK)0#T%%v-_b{7ZzgYJ==MgbhKR4dF*}M z{L~dnPP>N28l2@`qn~l}7kBiT+f`~l&pYk8;+f}F?^I(xkJ{sEr5zXF8N)votXxOE z`&jFq^~&*z*OgmZ{(0;f*I9Pl^*WFHyw(oA-8|7b%AVn8ZSxt?e5ZS1@GQ}^J9 zS5BeUc?3SYFE@q%aKyD{Ovjmy&QFyP%KrZr>|gfRf7;`>FJIT6>Uo8?Wr{0Z`&gL` zi7T?N;r9LR#hzDeX%4o zzy0z*{_p+gFZcfS$3Ok$zyArJJ&t!9t&P{}Y!gp06UKe@s-}FLJojcha^R!+uyz!7zqXfU`|a2L{nM(ImOglPZ&%y-?y-)Z_RTKe z8vk_zPMt4V7|yYe(s8w#4!(Kex;S&}S1BEM!HW2aJc$`+YpEJ-5| zpbm%&4B+|4#gYS)YYi|x&OYvzuQQE;ryL!pAT+Wwsir={x`FyRKCId=zx#I`nGucyz?5PmC81ab&gmrpl*zu=dmMEfC$yk6I0@g&tB%{E!obA zTjpK}7Yo>LnYebJ1t25hUSkaK9b``TMXVVI>$S#CKo?eUl(w#;r&Z23SWE!#9xH&C z#QYUkz5-vl04?Iib*Fpx*?1s!K9yr#1iRxr`HXy|*jIrBToqvG*WKzB4i*J4iagzk zb?r6t)IU9{AtlrB=o(TT-f&l4_CZ^lHB`!vyJOG z2x$baeL)xq@UiZmE9kWG;3v!(oxRa?iMvGVIWSm)60ju(!2Y>XHRkO^t*L)ark;#$=UoH2mS1GWgf60KTzS+%b}_V=Irk1v1Q zzkXW0fCIj*U902h6ZFV1yLc{rbEi~@{{x#16?nhdpopE%21BX9N5kscAl`KVl1-K& zl#ufY&8l(kQ3;p03x?t&!x-xjkJygbd18SDlS#+g|5&@L;y=e6{Yp@#bQ8+im3&`u z6Tx)`TzK&IuoCzuab)166aK@}!ecO@NMy$X7C{iW11BJ;7j&!~6Zc7N!H60h2|uZA z^srJV-u0;U+%IeQGt2hn`){8YuC)&~hx6Cf`DiSh$OStlJgj{kiy$)jcYrNDp^vZ0 z(q}ACUpq?-2b==f4@QiQskN|9z_ITR%bCDdJ3^j02=j2hNkH9K8Z!_)AkSmI!CamT z-kf-evOD4Wfu30r&vP*+ZfQ}8^+o9NSGt`bM48e;5k=6 zGuRd)(FlWt#}eY}HK2cs=jp6voDz^(U)JsW{OgOY#d5wAnKb9TI@kgmts4p+0FyYN zN4(1gB5fWDlGNb^&@fi=%16Y7vi3qyypI(wSpUlWufZ1i)wy`?(Hh$j;kM}x<=9ta z3FC%aq%;9iyfMESTUK@iq|1RC$!i^1R>*r3d;nNz5&z*lu%yVsf+!L=!ZM8OB)(%- ziRGNB=eq!;Gvt~%;_G)rs3P1u&q1CRd=kQ+<7lwAHvrF`3l;PGe~p+ z!-L4iHo(;2jQ1Xd>j3jc$n^-7Tcy>1tlF8{iQhnahC&Qj2Q@J96Br|IV^8-65}<~Q z2ZBxq&~=Rfm*B5hLw@}ZgnmPV>lI;m@B{cha*lAzhQe~zeWQo~X&(GK1C0Lw$yvRZ zRog$$zy8#}|I23|J^7M%C!KeM^XGWCo4`%*BHU#lAGY6fX6Yv342^T_eh@T(GmseY zPtbwJ%VVYY;wQ)8tpmXf){Xy7aX9ldiq{?H%M|(+;uv(|yp6&_? z!~M@XF&n9PpXDC-1fA+w5gH@vd|YAPsAde8{+&V+HR;I7s-yjIW?lGiVXlQ9(Q} z>W@H71sWy!w%{G)&Qd4KiMU?*<_lE>+dNs++%tH=lIBt2 z?n;U?@O(2XigI4?Dw%&k_TB$jIY=J>f#N;*^#)qBQ{yiD+6C(4N(i@MSWmcSI`4vA z!E(?hAl(Lurx}TJ5gCJkJ2HeIs0TKCRIZ2L!K(lrUIxvwg^s}U@TIf8tlam1`{l={ zMT=m^yS;^7q45_l756EquAIx z3`5#RR6vB_{rsl|kxMXG;yvL8b+rs(gN1E=QYgs(n|MFqogIMX%`jX*Jn?+zL`uh! zi4I47Diknn}10IdlO&x&j5+GS9o=7!7WPah>>C zI0*NLLSTZ|6<#0N;59BN2)2@47_`G$6Hl6WYH9INn7C{@8YCsZd1(Zf*pLBNG10{L z#RGf7lsdc^x^~0B&V)4)ydpw45749%Tng4hcyCCS)|D&Gq)$F`Dw&`JF`q3XK?)3M z9qGXS3FmC`A~@lvyb<>HvTEPvXJA9eeMrnfZa^RS2rR5*KMT;pn6MGkYN&b0$tApJ z=_IrY?#6!t5j!LqB9sAYyc^koyW-Ac9pEvVYZNepAaB+OKqXd`7$VfOo)Dk{S{!VPqZJAfPgc1LyKYP zaU%9yLR^tx6ya=0*m)4PDxt4n*T>t1-UPyhutSh;e4V&PsJLJUm>k3-C4L?911O;d;V3FkzMI$qx&%T* zHoHPJ?JRBrY1uf?Yl*%AH)^S0hGL?b8t%M#QFakZuprni^L{Vu_EVp~z8G7*jt^Oo z#;yV+NJhvK>h$1SDvmIY%(C3a#ebTjRJ+;TMJ$XBFF7E)*FrM^f;(MjUx_#Z729S3 zp_e8{fSeQ7NStm+G%PH{0GNPsGR zsY3sOh>8I<{0xmskcjBu>)5>Moq_&gR{xqv&Qgxb(_VNEp|cQKF|byq7Fc*bqJAN0 zBP1}ujfthf6NGL|sqGx|W#xX|U-$eRNDEu~9!D`T0^Bu$kP=~tL}ZW(vWCzs`}Q~j z_(Bg>sr7N7WuS%`S8=~{LzY}17;v*AiU2=k-9VC>+Tb4t_%?&?j=v*3#=Q%~nUHaI z5cw@xxe3vjcFKj2g1Zv(;QdgSEBGv!OjcQC_z!;zsa9hko7wg2dHe@pYQCUucYTBp z3WBho+3DVm%xHufK~SPS0@qvsI59S2=YBP~``h>Z^RHiCTotDB?x{!efG6DOh74Te zJh^H}z(qf@!A*6NiKSO*Xz2kBWhH@9oDM_CCgGr)_W^-HAOKqPZmZ!sNC$8`+-Iuh z+cv>DLa)FZWFWQzNxR<`E`tv@T7LEj(a0W0fu*b-_TAtbxMip(L?aw5Br&;AlOUqX9vQlRCX z>p~wr-hk=g6a7M3KZJor**-U~ylxno#{~xtL!0Uu18f{+AqHX~rT{k117cww{eok?2UCEY<$##*ezEZYC3y^VH~#(hgbdz=*fr}D z;r1+_vZJt3K>U?}d3Zp8(Wnefsv?Nd$^k2wu-}qH#^LimvZM~-07rrcp9B}Q{(NC= zU;8gVzI_(*@YMHJOAW09IHm@eUr)01*bzKJGGroFfXNn6EUbdZt$YEdH-tEN>It~B z;cRJ(FoggUM>F!$g`ias@DQSyPQuRButkgul7-{!YmT;S$&iLOg#g)$g&&(40gQM` z1JYI|(E$h88B|&aMsk(&9DD_v3cW=hOE{M27+8@szYL zg9?7*idZk)zFr6?mWMcyk@82beLoTuj-n?7*&k6PnVf`qbP((?I~7=4jJpya6HEtj zeS7{**xSH1)bEC@-q=RGdPK>q zk|3wZLDVmZ^OiJHQS()1J}!9Lee3uH705qcxg-?Vn!_x)5gC5}ELMkO_O&F!Y!Cbg z3%*wcYcQg#w&fwvAn5a3V8srH=fgO9xtj_75EI~ezob5X`Zm6N-M{?x+t2&6CjGc{ zfoKTdcOgJ5Q0|Cq1~?Qvj+`LdK8R7~7)z+Anj2$*8$kh7LFUW|B78T%f8#Ra9Fefs z@vnz-AfQ1@poG|H_8(G^jyv(-gdD{6n^M4qayBs(@3X)otD=3Ya*I{Dtv; zyYDaa^Qtv?!rQ7<6|h|)fNQ}%h#X%q#P_zR<%CZ8R!0bFjg2zL8_|(n{BWcQs)v?HM9)9Q~XrS6Wdg1Lr zY8KP88{o;Ki6f^F0GHr{|ySA)0NO83n+BY~=1W!EGMg9g$@Ovj z#+6`XBv>GN`dM$QaBu>oIRU+Uns;czY%NFwU%q%W_8SUa0MgEDOi!laxa}<}5V;{# zP*zCtXxL;Wbc5O`NC4FIPymRR8<3x*;2fBZVhw_Ri7+{tbq;e}_e6v82vu0bdHePt zekzJZ}3pHL;J_~D^8>SpqHIED&@ z#YC&)A{JYLy)YzYD5!Jsgv-Q*+uc5_dr@=PiL_l0Z7iM z4q%vtxIMOOh%TPuG@~DTIZP$Z&;S>x^^nbDj{*A0OYJLL$ziEbf6_f^hYFG7U)jhT zf@~7J_r&6Y5gre;hReO3leWZagRw}d27R8|KjmL;~eI171@~1Le$39QW{a4d4jIU>@w86U76CP6QA{3=i{p*?#@&{`&PL z19E)K91)lT(Gdv+Y8$Btiv$eQ$SH%{2v1LK;gHz_(hUhFe1;wKCfIk_8j*K_ODtnB zIos|B!#oeJ8Cj-KyDQ#-0!p6c#0JZUZ;sSg>+h#l<-(Q1MulUAp3LHcNE2*jq8tl< z1y_sDiCKo1?IT@k<2@{LL+K;Zqk@G9M%*H>KsnISkaKvrr_=b;2)f7`I0I&iUMzku z2J>QVKVCtNul;a7dZ98aF4H@L3Hega#@BQrJv$34gGVI1kQkQMea~57?4AZfD7KCS z1eYy^*sOW&yi~l%~#;UvIVss~(SK=9mtB&T@`a z5Mle;_t}X6EJgFUD~dYtM68Eqcw_v1-$uZJ zqCjLLT61vHA;{%(<9WXH<4A>xC1h^2Z+Yhi5Zh?J5L(pc(soN^Wad#Y($2pn| zp7?qY=J3za5!E;Qwk^ovgGPNZw7>r`*A~N>-cR|EH}e9eQqC9&VG{K0fCNDkirJqh zN#2X6F=~bb^!?l%*tn;mZZQOureg~@qy~D{kK2&mjH_Wze5@!DnW2fd3uC6 ze?K;anXZdy$j8G!2;Ja(#?;g=>BeRz_CBTIXhZ_XHbDtxz(!V0jDj!k?*Ps6Mun2X`^h8q%9&aEXtZ3)0Pgzi|Mm+YxieJKd6@AAFE z>cIe2=mk~3&5rVqNr;+pJT*|0@Q4y8AVF+9#u4vx1AauFWMr|cIyo4@?> znkY)|OilKW+kxV6!@~36U#1z-Kyw=IE*4~s4ZVf?!v(D&fKUKamiEw2CZeuc0cJg(0j#gCtpR1wtoNOB12J3{ThuD~U*+JAsh}FhaMp z^(^>4Kd;#uFH2TGJ!gF*p0 zP&O>nocD3!18}iorTpZF!Q^{cSVy2*c>!)j7%Te1`EVEa+~Om=H)EGTQF%LjhX+1Z znmk+T8TzvzgJ+HCUf{suXI{7-pv1NGvY22t>l)3Hu~97L!qQ!}zDBC@9U?$c5<*ST zb?~ZH&y(f4?u17dmKBOH(MRW~FN^l=$ItsSOH1uTLNcDk4up%vJ?BL%BS;dAC%S+D zcHYFxgg!_c)0%M;L4lU7$o3c&z5)<`UbX$x(396osmJxHu4uqC5g2H1 z5BQOYXD}lSLP}@V*)THRs#VL>>LktseDOdO!|>SZ;StG|g6AS5o%tX@zg_w7JO25wweChTE*mnFKA0bYpr2cU)S8d}p_aFbD;k2y*bQM*ad>EtWN^yl1db0Zj#Z+sG0<*&*!1hnE$q zY|});BS5!gWLrI4>}-ji#M~AH;Ovl;oa{croKX_E+c3Lc!kdmdkc|zHhA3Lkk^BQ( z%;FP_x?XS_LM2=+_FRt>8t!>ohLHe|!-KhX2i6U83+K2A@XH3Pnd5oyT5;qZp7M$T zrXq$5;p1jAZfqC`c!9OQe0%9TINmcu`M|gu%n#Cv*+-du7)Zj?e1Eox_{nDDm-!Ja ztQ1PO6LHu$m~T*27eghwsPSIbL0uTcCU(Fec`Ni55ndxfdxAA;%bXxhFs%0~EUZW3 zoA)014r~(p07KySc~ur-n=1#mOr(^FU&3X&S(lrTV4R>LP7cmaD2 zWl)yQh1YKU|5P@^-jvH`6F9@Qw2@k|F!M6_Sm@vrv?{CfY%;)o zx^DhyB9^fW`%61ui-ixlyj5!n4)1A8HY0)@v=W z-T>nMVPnj&)*>$c!<%~|th*gO1R6McgHfEeug$9|c45`QCL)BDDLxR-vTz{lvS7qR z6DVYCPa0+&D|ph~tt<19&Vq8{p$=2}edCrjv+fK0+ZccF5bg7#{ULTj_4E7j%98}0 zC?~|!u&k?eKn-q?58c*Egk~A8eT!!^r(QOC^r*dz2DO3*Ac*eaSrF@0EfpWIe$8df zZ60aiYo2}A6G1fy$!snL1lQqR->XXr6pd#ihSvs98F;|nR-5su9+=%drKey7JcZh$ z-*903kw=cV?W-O|qrE-uMc5{e18M;$MV_GP?g zZmko1_s{783elQC)7sOLgW8STt|yOy%eJ&+OUNScYCQ@uRdV;(PPQ8uV`FRWc*w|L zh@35yFx4AA69+LdV?7{xQi3%y_Yj|U`s zYTQBqrW5Qz9nn6bRs-L4D1*!LXcmC=91L#;PcTC(&(G5%dJ{7E1V){#p~Vr-)9SOn zURUkcmnwx+)BBo1qF)s zAqoM_1j?VcaVkE&r2##h&64T`o(5-o5b-@|$MPMJFbw+7-0~L?`kjjD=njr`4;JWqzo}OjG6Oc8m8c-GRr}|b7V{bHuVANCoRG!P@O zcqH-0^18$|&2A#*6pS%3LdNK~F9{REJ})I%#~g!IlQ_-5dj|dzjDm0H1CaD}AnCEL z^R9Cs%!m=nx66h_v<9CtJu};(K6?fZ+!@e2o^w>>)rm$uEx8I-pe2YI9MIa6ZmD&E zbvy+OFx|E4G3|CYAK0JziO);+3mWQk5NPHrK6L9rp`Rds@<5IfP%vJoJH7`o10TY8 zGnfq@GQWFF4}>;+^-$e|a!?T@YTIB&y_z-aR{vQ!4Bsok%7r?o75=>Er9}_q%&-Gw zy$R3zY!Q8NU2s&Q(LzwH%POXRqDU)*Crlm@?mI6`stJ;2Org{lznOlY*Kk03k0%Kk zSj#$z*~Bxm_{jnwLf)MfKRh0;T2**Zqx+aIQQ()qzNi88GzE(&!`c!yG_9zo1?pF5Ui5sr1gAbFLhveiQrc8I$rC9^i z{hD|2?aB$?e5-_kw!jSdeOrweyMjN!29YXuZzgMh9KArSC6EwIjfZli8+&D2FTkVX z@75>cIPix}>?AUPBGL_~Vi0s8!ic@w`oP|*2W}@o*zOfy*6iPY{Pm>{H`*BZuA&Tl z9?d_+m@o^7bU+29v5|gvhi=+rsXR0RNP`NA0M2J??I_k{Gz zDa(`K8n(SHRP*#2u~1C zB&pLP!i_sMk5>S-!?;2ufo<7S=lGA1;Af)LdnrdXa~YOO>uexevuOx)IQDg0R)XuZ zISUO=$N@hW{E_cv>46qu;v5;F(1?lKc4&eK<_T*{NWT(>at3n?9=x(EkyrymYA9W_ zHOlPsl70Ve{M*Z-0p{<9hWUmDrt5l;DBL63@NfCOX9XwQ45g1ASi(!;ah9LpU|`|4 zlXp8T1$ZbbzaP2;n2F)N%~|02Evu4U09L0n zZ<>ko1LnC?=c{g_Y2q38jN3Eeye!E?YoY!!`q);lY)QnKEso?9ARyV!BqA28-jQ=` z3BLyfz&qMWRBVq;#Fth3b^dk#^is_6F?Wl52Sjx3+F#ISC+s|$gV=fAtR1v96#E#Q zmJwHX*oxyBF0;Bh)@KUD;jAX!zgx3!sY0-LCzksqoAzV>{c~eMY436Xt^!`Ndw^F9SE^{;Hf`-s9+LzO4zgrc0jMPaL$8%nIQ2qNp2+$ItvCP^k1dk* zdk!49ahHn5bruX>&m-sgJ_V(LG>~&R|A3|+Iaodd3$=l=*W11kYbUTm@CnPXQGn;D zMBLL;sZ1X*$+L=o(I${f3Eh9ORyjDnM;o+8L**Q5tie^|1wU;egV`Y}HA zHQKLcYmAME5Fa2{7SkLXf#un_is6IdjU@xpI%{mp7jO}+lY}P1iy;#ksPN#(ZmZ!r zPewlg=XcCj968bGgr)HOjg0{E&!5tQP!57x? z+mA1w`EB7DKa4+FhA|>vgjmA%?>k`o1NgStuMy?UR;@lSkQ0O@q8<)^}5hN z)_L3)ya-PDN;&@aQvDL*@j-h|TVFh}3`jz>2xKckiO|A4ur;5&VCM}@1VlCqo$|B{ zJdF;JU!?MW4zTRXuf%gie$N4}4r#fq%#Gtfb_2tpIO4^wQ+d}w^XKzTdqNDsqlS*$ zMCH?10g3Mzwxb)4qgKsy8crVsI}?1EB_*kPuw)zh?Eu%f3yLQ!(8;Ze4wLPv*(*lTTxNEMp!VK^j=^0X&% znNqDcIzOI}HAE`7a~+O~Xpj)_vmv`T;R6f!AlIKms6Y4l$KJd%m5&E2P>$l*i)Mq= ziPXd!Y-dBd6dczmhD?IZx(20i!WF=4KqI?>Z{6TkgpYt7Z$Mrz0evCXEF3~+4V-qo3 z3nr>q%5t`ZUD`5rha0Ws z;2#CAg#fubjVjs%@44_MaJe^5e4PEVD$uC}*4MAwJa4op1`>P|ykIWjb>YUh{{7{g zz18bO!7{S2TG0d_6XS!EDeQdn z99;0YF1uji1Q3dRKlKkvAjbsgxmKEEsp~5JeH@nc5pWJf28<_FxF>>WLluVSV#S(N z{(-n;`H3X_jadtVJem*B#F&%a62OcH#T^8(6X7b3Dw@a)hyWy$4}cyi{a^~3;wJ{5(-B4v+$E>PO+v=bzc$*cfKsj8wsGY)_$=Pj+3&&cFFjq_HO)kc5YZAP+5q_oRg!wy{vd>SecR*GBNAF@wJAVQ<_ zy45FF>~91r?lvbF`# zXu;aKBdU&&Dv3d@ooU(3ZezWp%HYId+5-#NkBx>;sd%UbzIvAS@VoeMJ6kcZuycgz z@#j$f2j`u-{n;TPQ@wDM>v&zb`7B!8S$MGOu$V zZw>Dr<>F<0NC3a@>`7khRyRLWw`w9J-u@qOfD#yxOY7cx%XWfyyZJ2I#1m!Km+Y{@ z&UDpsxS9^@K|}R>Nj6W1SS63Tw%PNKqn&qncS@3x|I zTH*3A5K!OqyW27)A}#UKM&xGWXR;B;L)p_(j@(g#$qs&N*l^Gw=fE?d^mj2Slka`u zMtR!%Inrk3Sk<>eq6P!DW~=m#)0nfJ=QG2Tk6BOo{U$0T3w@LGY3}FD0;o74+?VO3 z5}cQ^o(iIaH9Wg>{~)-Vl~v*clLQ6m&B>m2Qxgha@bLavhx_}g{h_(h-of{bE|Mw< z#wpb&%6$Y zqCodqq{~5V6Z~PvQ?e@us`jR>Cef%n`nHt*%vcSr+SM2Ak%E)hIdl8zbfJA@Sp*TMJV6J$)i9XZ(_hj&^aOZ53Bau=U9p& zxIQ$5+GCh));@;wA`eelmjjDbPZmxA_w4C2_t*!_P_-O}-5>`6@CIs}@)aAPC)4C7 zdfoAKP-bmNKd`--u#d}w$aCfhCxrjOp5L1bJozlPzc?IOxFBc}GZK;hwo|f3M<1_l zNzmR8J_N)ttk^;z;zM%c8M}-UA>d0bZinl6aO!BE?D;mh58JlZKc)p1R7{rE%GMNne6|D6Lo_58(3Uq9a${c7GAxr;OcMjAh|G|U#U+oIE#AD z24ky&M_3Mo-VO%29p{5bJVhWk!sWPZa3@-s7Yx6Tz~G5Hu3|kYfdUgH$|k3|lwoT% zD$zDavoy~*8!5}{!hQetm*4i+FaPp+?Hu^{Uc7eWNz0wu;TeLsZLYCu`oLElPUonl z)NSR49`T*`nKwIN>>}spV&C`a*jIr7A+jMF&!A$8{aKTG077?3kE@7qH3!Pp|- z7VwHZfHLQ%0do`2WZ6I~xI)e)x6^dkU>%E$sX_G|S(_|x0E|E!2dza%q?@QeWh$W& zv!_XxafE>4C_FWa)~?1raIWqd-5bD#YPA(|6hC*+3$jW40E!l2JOuk)oKUcx#dFno zg<&LF$hvHcv?n^%VMieV%~=&eP;t`2hU>*;5|sElEXvbR34!b4X_asNOn+FnFaNGu z0L-8UX$ab7)>RV|rsip0fP5amEwHBqx1 z@OPLIxLG0=v6KRm;JC?F`xI{n>9ayna*)+d{s*0V}+-3Z71lAlQGR6I+WMSN4^CxnpRBT z&ACp2J^a1=1xh))Ly8Cw*S4G)h0OZ%lms?MTA#!ICWitITN8T5$+nI1c{~BjF6Wk7FS8syHT&{Xj26Lt+tMnX^0^Dp=!od zXmxO5hY&@ms+AMAt$Tup<=Zel45++>lNm2!ts_xNV?SYj%>n+v-NEPVfpY39DS~}I zDpJtd>dxXD^--6w&0`{16MK&4ejgyiYg)in6GnzoYrdQ5@(4R+89WOyH7Td&|8tZ< zDXNZ8khxYJu7n>Sro;Kqs7;8f!yQ3GPgybbbvbdV!ncME=3dRfBEpzi@&3AM`|r5v z>&bjRKeV}6;>DL$%NPjUxTjNZn&TvS7<)G(1g?0m3Yc1pZS0;Q5ZrALcA9>EDx#hC zj)u67he4yiEDb8S=|}u36Pw$5R2bU64A6b(2PScmzn7zr9MayOvvg1z)#=2~ z@!l*7vabk6+q`%5XOJn&0XKy5hm8t#Fc%>gl=48lS{DX%S)laHAv~=TAlT@V{9L~r z4w|Mj`S_e0w@r?IJ!}>{iU})r-pLTblA7a>>-NVw=j+2oCBp;bB7llOw@nZdu5)1( z<*DjET)e}1Vvq~VhsKjcg9EX#0NG%Pr)d=Dc;x$dnoN){x8n~as)s`(ocQQuH_ReB zS73J~V?Ex-p|DuV##5qCorjn|JeEA5jTqHc6eqZsNpKsry+kM!7Rouoe678Igni_R zfs?I@Xb2(%ZV5GD^-DIFZKq?CSpk3mu%j;>4)~##@-M%A`FDKu_)t%eQi_h{wN2oB z#!zMXM2IRoOEt7CD{ZY_O8`V(GK*S%LM%A{YMHiGYp@4-RuJ-3v_A z2Cl5xNYkSWMaBBQ`6z+qvg_=|IEoE~eB#{hkb~`l!}1nj06O6SPa)vIVu6zDna*Yl z^Xcs^03tw5yj*xn`SWn)=xi_5GaRI)M}`wJQfMvb{^i zMw1b&zpEZ&^VFARAl)vI_c&@vZ?J|AA43O(yq@3b*0~IOM~mZXTfCosJ=U9t?R_FX zP^M!LEWm%Bcw6x1G>8S_CQG|+YmTnN5f;tWWQ84PX$Sq83!Xt_s`c}l{p(LJ`Q7kg zPBZQRe8QoKRbDi4Tl{;BD0y>o9jnPdl#Kp6=;26*g%M&eXabZFUh5E7t1O(TF=6eF zhj4JAY{Ypx(Bc?x8>VomZLY$bOxif!&k|Ufya;~|b-gXud8Ru-8J!Z1SwkBfei(=# zEeC7m3GKv>YI=Lx22_XfVJ`&nUO*lk@99yzeXa zFKhqNGgCP}48$@QZD-!ihaFJ+Va_7k;TzD~=LO^w-z%e(@uSl`3eI;#_? z0^R&o+|)5n;MzXUr-={o+~L6vbGa-kZ}D)XqXSOLlQR8>sM@AFgKe~9%fp-z4c>R> zvU_RJO=MSL_T&{`JdaaNypRaBUs}#cCak%mKbDg$CaahoiZmRl8mptdiiOkNS-J<$ z&6}b1GgwIEik}zl{*FHQ*Ke=)9asbS;p{3Sf_VSqIDWqw0Op)!R+4YfiPef8qaaFF z@%FdWZRK!u@x~$G$hE;QY->B5G{3yyC7D%sST|vRJH*5JO(A$Hc&o~tEaB-Uc<^>W zFE>B}9Z1f@y9|C`$c?`6UOt?_dnPiWI%8q^Ijcv*ZO^E}7!IEWf(ful{A!yrj_d#l zq8@?|p|;@{$cogDG_`yo*5~m&9){mGL$v9TZU7dnA%y;(0I-XJa0To9yk@_A?Z5u?Dh|qr$sTe5SOgz{ zPkG;m@W0Cy0qPSkAo$WC4hY>7xq?wbot|R@Q0n zZmZrA#XEk>2UIR<&bi=V=s4d-OTLGrsST+~S~dCBAFhqL*wU*`V#*VoII zARQl!t(>A&u@yT#V<;TTb$IEUbkqj7;4HO?T~teZipOzoZT7mzD%^T`p95O2JLp%x z_f1sCTjO=nVIHQW8}Gb{-6yF#Mfn{uYJllD{?chuo5Sg5cW)sfQ zy3vy;HPn%dJ>A)2_=b%vVsx?wv^ojm>BO~*%{hhFuuqdGHp|PeI)S=FWkY=dt~F80 zh)j(g)du($%e~lnkt)ft|Mv5bFR#M`oX!2AUTZvUC7vin2VC?2Dj&_C?7HxJ zxnZ}GVM;FhbzKTYmS_zp@#v5Y zE^ve&?W=Stn&q@B$ZHT46Q8(2WV=Vbe(2*3hF|}_{+(=*H?Y0akEv&%?Ye;vqw!Kd zUfAnsjyMA_0~<@FW?LaL>%vlO>1VO;bwC6%?83(?pwK(CWi!0o_BYSv>*1 zEL0jetK(Fb%r3sggJf6T@ZP4z2f#&8yDa!&Wh$Ked@lN24-gPw(`=p%IaV7Rw*dM? zr!V3vVw$IF*{HJ4)5hT6PnoBOhtX#7quX_|99VomH(A~*<&TT@-+ugY(bC66I8Juj zH&ag4O7LNVgPD;?upjm@d7+&nrMz+~?d9BAu&rBtRGOEeSkMJvc)6ih%;MPz2I|#0 zV3qDqcv~Y5>m%&CwG>%>07*R7`=Y6%ZI^L;O7=XFPxRi)&c_F5Bp;qVJ-tZFq@6(F zoE`$CQ-GZ2TAo0qqH=_%g9^|tYUS-rqYOdLqnI1^t}p8k*X6t%1j7eh`>B8V`sexe z%l`StYp?BxOc5p;A!iQDTkzheLCE;?E}GC6a5%o>Ey_a5tA1i9nN6(oCTq0 zhryMl&Cl!s{HZ=S!FjPSLLRCgtRl3C1cbE7etLp%yeW5!7%(IF?1bkdfh^ZLXE?mN z5c6y&0NSmf8}~&R@Y(|Q!wF;A`p9js+qE2Bn2%LdD6+BsMf>m05gaWTT@kbYZmhGn>FEexT?DqqgZS`XZKRTfP%=jp2dYX%|ozC;< z&YrYd#=8k|H1^UK#_cG$yDq0xI}0V+!tNzOzgKrRo4i*A$K!S~dTz_xe&EFf5s<~p zuM@EM)(Srqt8lvP(Thj5r7A*_&qI8`SQqMQWhbcZ;CObkNR3E-uBUAaqHWQoDO`_) zJo7FDRj3l$G#aN8zGOr|C!X7!lO08Q9p^Jc!jcz4J|f21HvJh}YGxV+;T7SC z)a_tMr_1rO!^3Ip@Gav(Fj>y0B;M{Zl11Ezu);RVp_i-_2bDVyTQyWEcIXXcXGHM^ za~xnU(c8=8oII4TFd!?bwr^YpF$)45=KtD41Xnv?vv=BCn%8~e<>khXUYMSXcu)59=o`m@ z$YS>n!*%$+7qFO|IU$|hgoiC+-a8h(9WOgV;7W+b`p!JOXsTKPCZ!8Dpza(0d~S`q zy^D%fdzu!!>0=|z2n0?5P!U)#RK1MtV3!fI>9Q5Tu@+v)i(CgNK_JJ5-;RcW<=Uot zxK-K9wUHyQ>-LxX?=SNGaFRW>~Y&pU0u zYhI&i<*p!m*=+Ct5&P*3g87_cA?KfxD_BTya?^qtWqTXWr`;;=Fi}Bc4C`toRHzYxN#PFRxZ`7-O+e0!~sg zVT=%Z%3C}9GI`s0d8X2CM6&g-1zq91EPE>vpK{{}BdX7|rtO5y%MP|PdL?swqaOWs z8nJiAS6uscj?9SGeb?!oGp6CYTVq0;t|9Ta>pQ znFSDD&%{t~xHs|L&VVY$e5E<9y)N4?Uw`|{m!DtSht4y9m|rA+*u`13m!^YMi{-K% z`F8Hu4B3vZi-kEH_QcpzQ4U>?1qa|0woZ$Kdpb+q2v0%^r4k0e8tRiT%2A-~0OV?Pcchhr0UW zDzq9@VrEv&2CUMXkt{0pjRlTdT)`)>#zh zz3bU7P>XlR>$?5;+vlKgrVqDs<30}G_P#6_eKSn}725@m%@8~+8stq88>`;7ilM{P z2%0vKA<~2QzL`Ts)-~c@@+w;ExL_*F#!c81#%p>XA$iDEAzF_7HnV%YB|e7reI8R- zJ=mU6jyC^RnLYBVIuq!0HsNzk^2sy7rLCu#*`t=rYp}alRuMS)zN>kM34euELY6Kk zc6i<4Q7nRuNW_+itxn9D-iq-DaQoYrwZFY+gm`>NPeyju2^jFGm{GyRFK?>Y6Q8sX z95UjphF~&Z&bqw)sG!rmYiRzS6Ri4%wg0g?X$1=~(dO_mkb27S#Bom_Heo+BXA_+s z`oA{~IX(p52v~sKUIT79i?zAPJp{+Fcgvi2PQTw~9v$A~{HfR$2;v}je7}_9O+bKm z^e&0vJu!~k@QMXv$I;C(54$6fTo|qml@P^weq6U7ef1Y%6)fTTke&?1IhXiPbm05& z0==iB=efe;9ypozk?p6Nd1nb|v!y6T7@1d(JB<(OJDk)&KrL1~bh}?oi8RkXssf0| zAEUz!Z3^`akPoKZ*fN*A%yCrUEO++Pp`7Ru zL@a{lKvmsqG;d{sm_1_%yex(o;sruEWl@|kdjm4gMz%r15j*#XQnsJ>k3aXH``3T_ z?=LDIAN_EPt@rR+FkcST__1KD2sRr^PTb*ij0%Q5q^R+DMw6VV058l1(+IPN#Q`09 zdpkwbNSW=2*O#@A8~o-J1YW zJZ?B{1ptpY<~&UA@rUQiP8*q?dq2GR&O{NE%yH8Wwdu}9c!qd+7jxQt_Vij&t0}^^ zIi2W+ndgrcyDl7l`t{{HcyRJPj++L@MW&ntTg`r-_}C4> zu+iCVa6gMVvC`3{T25d3Sh?`5+6!f?(8>2D15XMJGyq9=G0*8_QjqrW%(eyd$nj1f zGn~PJdTj7^hUuCRF^AG0#cLk{a3ISBPV}y5o!CaIdwCh{-3ojhG7W%RMtP;nCWrMw zB0Se6-z4-6)PUrCy4LiZ{vOkQ63)6%)=xdc#visL# z>JsMkV#IABZH!)jRBn4`lAJC$`X1C=pO@_Z@_qknf0=LU0pa_d$p;ADAl?>i!yihIPS`jF7!U=6E`XpFW&u-um*g%H~BR`RSGP%pNhCoks6%=)^^5qo(xS zcVG+K;YAUAbVdHYx4s~^FAwCx^1Q{l^{7X$;k@dDu9(Gw0g1rPW{NWf(`1*0Xonro z^)wyq%sgSRE^AS|aQ7*sfqWzQiX+@E@W{$B7IJ%0wf6#l96tQ4+lz)zA4+6+BtpvN zodwU`!PzH493k`1YAOWS8M9dqWX1=vI8G-onIPFH%Hh3Od2ENb;fTwVuVyt1G7$c< zhZ&{)yTCS$*cO^Mmve9I13!N&{p-6Qw#pR9SGS%iYAD;Y(kId8P4L#EdvcPF06`nK zg&!fEsy6^me|c`~*wgbPWao7~GWi63PUkwKA}qd`z>S59goq4r+E$jmtk{p2d6VJ8 zoU!e|k;|eS@9`wW^t;%52e)h^-3~zm(IlB>J_aD>oa7AoZqI#z*bW>YQUw2p`8yud znUYV@pEG{Eb->xN(RH${v)S!oMT>*R-*2w<4l+kWdMBm{NQeh2%4CeEy1}{l3-W7+IzoHEk^*N@;%b$#kO@FZg6ql7L&IIt_7x4A&vHp3< zUM>pa9X?cfI42B=;N6wpnc`j3>;@qiAspg!7lRz9U`Fs*zyp7U5Woqy_F4L zW>LM@t2v6`a55h<%3`ZK5IZ0XPE0mULZ-Vn*BHw1X)(D8Z6{*WTF`tV&v4V0ndd^(&$LbyF>MM{}XwGa)`kFEh`G_nin zX4|~C3*5_zsC)N#KJB>PuaRMF<@U-}yLzn3aw=+u#R2(;*N-_rlV}PBjtN`6-aIqe zH-CD5qPw324=2T@=RzzCXT4quFBmfa%K@Rc2N;JfvnVOgvRi=LTASjnoKF13BX|R3 zy|);{I$5ngy_211wcHs+q5Q$Aao*31=26SbjFj`^?V(macrlyj(?@e4RwW{z@p7^f zc5^Kv8QVLn*NPs=EUxWMrW1pi&1XQ|fl}hAtNqH~7vjGnN`emt2?XSSXM#OF$F6Nq86Ofy+B-@8!j>1i+_I zdq!`yabzi!kaur(;1?%&C)?ofiQf$;PMQVEeZ#2oPN1aV_oqoW^>|R ze~COEEJKUVB7$X_6~$w2XS%cR(>C49=JM-dDPF7#$MxzF)WvXU;k-<~A1~tR=l!p* zYZg9?GzGaIKI)B^Ru|l(<=<(Lc|6Y$y)d=qD_Tv_4j4wZZScBz$*gRP!HI(cSf#kN7fyQ2Quu8 zfA!+^^H#gyVd-$Rc(C!!0gBb$JLk&Xra8S;xtiy;wVtTvKz|vyRINHX2PdxmY3vR! zYxeUCJqsUaK6Rp44#4#?%P}!z0`tK`TLj=09ioIya?qHzLx_A027i0sWtXLR%Um|9*aQt;+CpcBR zz4U8gk1uxiOZ>cKC4T5_^dJ&n4YtmC`FKK(*+uE)3OHN5y_&Y#n+bhLUKVqk!G~#B zByN|5%n9^>92A>KZGAEWF2_s+yO?;a=N@^MavVJ0X(yxw4Wsn;^Ur9%eeMLviy(}1 zL3Et+e_zfIAl^NfR}9a7ya=jC=j=QA3AT@7HVcJZKN~EZpoY0FxV~)8!#&8hrKR>% z-(CUZSuF7aI_aq;v1Gq2+4nCmr7#Y;{ZOB9UtPoXu+j!`FE(_%u1WWJJ3-Pj3j0Js z5pNT&W<)QqQ8!EIC0$Nqa=;k|XIVcS9UgSSp0YFTRLmP^Ljko?AKgYeDD_@7Ed>F8o^TO_am;<`K42ze` z9tzu=t_E|?5g`Z>hw|}OALOn#Qugq=Xy5++Z!eu@A8z!$R5;$Uimtv?cc<4X8-l=# z=$+oVOYCcBeY}@=+RUCkK?~9Y>kfWDi1M<*>gCX$D_4-(`+0HdUAN5@qw{Z8QF_W; zphhVF_C95@EJv|tLI<(zv_UpIrPLe;YRb|JaCDkRxFklb&XG|KRz#=Uf_VTeJ@X1% z^=cmH^*vO~hB*fkJJWJbydpa*_b~aJE7aCqAnbi!w7-4(@_Iechl|RcU-6{@TRcv)TkjW@d)|b8THBlG_Jx9i+S{IMZaSm|Sa=A5#o}OMdpS;v4xJa0 zucylE@ zAyC3>Hfk>9z9TEWy&i}6GU;X*^R29u+3cF9z<%(p64o4{tt+F$#wO-$d2IZ z7ep_ye_uFnIQVzUy{`||eYrenZX1A|f}V%7ghIB{=|E#70ACQD&V;H>Uh!g@%FA)k zp6Zv?6B6abR3VaR1227P9^9s9?vj=9aFyH~9E&#W9%rGhh!nul+xa@y9-Yv8HK+4- znXAK-@58Eoy zKeRx(=^Y;@YTHYd@RSdW_Wj%a}W_GxD2^z4a+_MU*QOWwqHB(tY8{@)UEqs0!eN>J2WM_A8d zQ%K0Vu9w7l2g2>>;pUkd5fR|=mKlcty|3D@^UI(6uRp$j`}x~XpJOOk{b7d3b88IW zjbKt7JD8m%OJM3V7~%k^j#Ry-*zpA3oA~>sk8pG#Pbz#sfQWeIx%M~1m7c3^2=w>~ z^w&!mc7_rYQ?}${fI4s**0zneu0}T92|r=W6|&QW>@z#e3_mArbx*rX?eOHuFdf*m zbv4iI9vcL`M>64)A$ZyEvDtq6Uhs2V*8wu+vi;dpHMbTjvkA2j>Dm>GQ&kFW`nwhlboXg{ zFhBs?r;nNz_n@PXOQb=^e~Mv06`OZG>hV{Ux8xLH$bY_c8Z!9gxcZSCi3 z9KY6Z;2N7cRgOL9?nOay@P}wHNGPiLYvBnJzq)oHYW^ImjPUPA&<)(Sk5!EEo@3V* z%U*z2g=^QX*Uw$KoiAVCDr@njL9&F4C`)FPZrgWbQ%k=TYG)6r63Pxc)%k)Us3Ziv z@4zoRISEzH7+YcUl7W|}uNWuwSZ#R_{VQrjMCNod19~}Djbm4F(sB~WA-%;Y^qDK4<1C~fpz-wR3h+hZmB;jA(d`dm$wL>wArlDBd|EXP2 z+pTR}P$;x09idn@yXAGDWi8z=^S4i&*MHuC$ctX0H%4slqUSt`)`q&vWGBvOLt#vq zfwLOc?%L4EjP(Tg@48*^FrG;suV`?$@iq-z`b#+RUsBr@I#k?IJ@`8or{%&DZ~%%x z>K_+*v3W;$`wSQP=G4E!RM5-!%2~GM&`L>AdXD|I+gdPmqZ|zu60NTvih9F+; z%E8&zoQtPYvF@lmPj)Je)vL#$gdjoXZO?&1x?%3qn^5@qDr=grVZ8vx=W?um7-!kx z#wH`nPd#{m>v$#SFEHpo+t*D-v$GXL79DHpDeaodZYmsV)4l8)s0#jF3IPJjd``o(yc~0Ey+Lpi_^ya9}3b|<3AHbQX zc5UlQo_rgmI7!PQRc3P6F`JaS%sVVfXOO%-^ss!moo2SmX>6q^_!a8guKVHgKwF3B zQFU&$2)9o%(eh|nCC}syl>YO)Mpe~^^)Bxp^>P5?I;W#}2lPRA>EnA3?7s13;q}q} z-7S0{FE~Z@!E1y9)Nz!9ox~B}*!EA!YxtrS0M0n@CwHxv7X%67Ek3t%?5u##(@9LV z)~3(n{7PJ7Z*#C-UG-HJ@kkwefMM)96N2){xYqW)m{hY91g|>(rt5>wqOX&VF4}MP z8&R%)dq1iXg7I?iUe4uCWrfeunZ5J-u2~AlVh=ZXclTUncupXhWYU>7$Aef+$cOzW zmIQjRCAQ2p91rzA-l_oKiGeKjQqEQE+ua zDb>L-)w-`|tq^STus1c^Jf&@%&fbc)D+k!M5F_Yc+DTa*(|PK#-;yHP(1q+^$5bA_ z$GehbD+{dk(ezty_pJ_=Uf(w_fa4(6jY>X1UEyv{&wx4AG9$N{-K+nv+YKE$Y@C1v z4m}p^^nqbI7ICMyHT(USfBtyiYt~Pmu`Q@TQtcy9BaQ97e2#*5)F8=C&2^xU11och zLs;5e{hLX7z`ZRc%9D_NYF(j&8yhJFO&ODc0f+OsVo z>Snhjp5ILKIvfKTbthd`uR1gGftog6s{RB5PG6lxMW2;8**B=&lHu?En6C{`1CEVF^zla@iZT zZgi@W*DTg`Dk`$+@y>w&K5{C6tJU!vR+#L2WfmjFWW9C$UaiShkR%asW{$WHN)hAe z*S$PzE3{X`-*Y<74)NsMwD=r6NJ?rs{Kh-6^qn2>+U(kbAt+hAiS2gIu>K`LYOt6u zMlx!{q2Ssji>k6#WhNbp+*gLyks9sjanXMN^7&K$=k1)r z;a_BkL8O%(wXObi)}R4%PJmhrOLLp(0Sal703w=#^jcE0j|RM=aSn#F9dLI=m=4zb z$^%mEGyoqH_%K280XPOj-&bp8iFrfi6{o(QokhT{XbsiK0c3!j=yg)qQ8$rX&zwv4 z+pWG|_ddPNg?w~Nzwk0U)1t3RR>*t39NW&ToMjNyGrmAS?E5^m>+6aSuQG$_;-yXI zkAMF7iO5sTFD7Y|dQ@)Ds~p zE$`9O1{n!jITh^HG5Tyyxs!UJGbf2j^R6jpt4puqzHbrlgn(3=TDz@<_o=b`@?4B* z_uiHjcwe+Xzy0#jbc2ZcOr*PgOo4#yHlk?W2ndw7F_# zbM2r;=l8w9+#xZ^`HZt@7^B1Du-d~nwYUP&_8#>+A|OEIr31(&dVmjkiOx&bK(}f+ z!2y>7UcEGpvz~El(I=Z$Fv@wR>JhvgDcq~#yPaUDzVFiS*}OR{!*Pepv5c%|o-@|Y zc{pm`2altcE=P9%xMuD1m;US9rNVhV^QaEvmshclP~>~{-L0PAa@gYC0bcNTwh-@~ zFz;Sgh1xL9QuS?taMIM&*d|z40CVjeA3L;(Bepf>#(N^=zDPtM=u~w>Lep7fR~T7~qGM$l7g!QE!#@cZa&k62a-u z02QpnpM$FJ*ug zt6Eb;YVfTlZOGoGgqUrv>C}W&0135C{cWf9&uad?30=qYWlnUJUPdqggG~>`OqFHQ z%A03i}JAv8Pb27@Ae!5@aViixMQM41%a<;^DDfzNXZ zdwAOstP|L^e%b*I=Hx{bHmuSHC6Wd9;!MkJnU|Q7`p0z}^RM}4F1Nk-qiC##G@jbncFfz>3Gb@Ol%hBoL@f#K>Q0v5TJL8i@CL*sJdzw@8`g(6tt zUc!mCMKrMG$;r3YJvcf3YA$k<@dM=sDSPLmYql+~Z^sD`({ZrE}tsJK!uSYAuk zxrQ+}u-P8w<|1A&+`gvD5!924i1|oIb8&Kc!B*#jYDU*jA8*>w(iZo7taw>JZNxNCyouLR@E5N&=3} zJF*4@#8O};S~zjI4fK%>DeBGuH~AZ=bZzaZbIJN`gbx;MkVMmNf33F5$?3SP>y}_; z1CLB%`tbfQzOCC2?QHQ0)jW2jrLG55^XwCME~jgjVMB8UKh_AiKWxa=!lw-lTb0=t z&;liO1>Lu({Lam0o$EfcYDv(O7QWrexw;fx$eT6ZD*%c+*tGqi1u`sWq9(~C0U^9% z1)tW{EkX9t$4j$~gEvMXNz)seuGBDuIk7v3HZ<(ywo02;GS&PDmxCCbb_Ix&LM%Fx za59$X#N>}Gckb=ulKncr{`W1a<^A;%rs{K_Q&V%!!A$j&0jJvtcV9@7Wdt{l8sycT z914XeT2&qu0^wa=xU^$$wvz7}zNqr9mtf_8x04&dMhn*3PEk;qv_3e%wQ4N^7_cc>-m6}9 z3Mr|S?{x$*PW2@oc3ax9B;U7H`%x}e=Z_a%>$IPCc6VEw=TbKWGO7SH+iFrynjomZ zS?x!5jK;>mynCNV6q>5G%?&JaX^1^l0N%H%MUJg_PV5n#)W!xQz(&2Fy!bxAVvX6K zs{Oak$OVECAxChqoKBZJIGMk?0Wy)#>9RW`cMkBj#Em%rao2VwZxZ%UrLZ8%pHF7L1%UBdY7 zK~+2@mx(>XBi@WI<0|xXAl2VI$0f(<4hBdIw6$|=IO(ajZ5`k@6ERtXUQP9yrQhL= zyQY5NK$ztH2x$Yn+6I`=`z@_ew95>(2o<%em1*W+D*Ut`iXDT*eOs4G)w=p^wt2<_ zfN$(1%k-#Kp#vH9B)nGb>Byhgttq;VA3PwCq^K4h`}VeIU%&JpT0p|~k_ve5Jw$D< zyG*F+$=>11MDcJmmD#sj@3#q5EH?i*_ORt)BWzK$HQGj|lSU(;)=hz3Rnc^Rv7)aV zUp)xUaX~*XCB2ot*7PE~>v2M%6%mp(;KbPm00IL6!_>5;sN?G7XSGtc*G|PeyGy(h z+Lf^fZF*a!8U`P37AAVxYuX~OLgEnBNVErRa|)cFBxs&+Y&P}=*?z9uU!T5y`?G$2 zFA=?9wV;l$H;`A+vGdHf06Qx)6bJ%naunh7M0e+vmw}IELuZD|(4sqn4jN}$ax)ZG z2lHM^CLMj}`|l;ozaXe=UCvMB9N99ee}PikPv4-ZxJI^9T+#nhwD0sHS_`PMD-90C z8ep}&k*TBi*X$V%=S2jJK?kR#Chg&1*RD1{c+uf#Wy{oahcOdq8@Tk!I!)WI2gbS& zH3FY&_V?d^|GWNP`!DlNDd6SSV0Qa#H#qRd3ChIoFox)+1$h&I@v^oJ0|J7WzwZ|H zFEnbYQ_FKit4tdCR%aMDzhJQg2WSL2?O#%YYkr8UmCKGE>HP%_JP+1hnHNp zrgdX!n+(1_wv`!Oq+5RN|2F{uSd=%#YmT=m-!<=jB6t-sM=vYsgLk@{f6M zr(}N)(C&Aa`AuJ!IXU>{ebwH53sZa<-j2#Otx`03yYKd7lJ56|6az?S(d>gF4zc-F z3{Zqp^YSGIKX?pPa0_W5kaivBYruw$#I!qm9wGJQ0-Y8QqI9$Px3qJH&3t^#{@_x> z`^B2#?iTPiuUt;7SPw`Fw-rYd>~AGkjMKbf?@~VC8n8)_Wbpn))W$Ca>a)MYS#)Z* zDMf=jhxX2(79_C;U|`ETTfjO5>Eh#}{Y1C!AP~H0? (>qyXUR>uB1Jy7mj f9 zmTk_vY_MqP*dQAR_r?P zk+dH($g|lGuJAa4Vn&_XU_u%J+Dt$17#!8ISnCbcDHK#2q3Bq6Ef3LDc?=*j$KNUU zc{}A&EYeh$l>OJVH_>xI!;fpz6K5*vrLED&Rr|>W)%o0MWBHwdV9Op<-NmoV zG0@wh+a)M>FYT$x;2?J-QUzTAx>lrNI?x=_|2691cpqklRCN+O_+-)|luKTFKugl;p=Ds<(^sq0F4ObuR!Qs%3ZUc;_~jYcAsmK~OzE`nnTK~P|` zyZSbcS*X@cTHw$>4k+2%%BEfP&@Jc$WVd*K-mLz2X9UD|Lqlr?sj3pogm&vKm#Wlr zKb<5}Qz=?Xh3+05L9&l!MC+(P>)bwRQ@4vO1GP+o_WwodV)c1t*%~B!A9*;ahAi*3~LQ* ztYg!*Q8UdY2f67qP!vzozhNHFsaktp%iL7{ZLZ%0CMw-)L$@98&|UFk*mY=LcQ@+a zoC$8AXhDE^C|llcme1x&hnT3j&6B?aR}P6PJzYBHHOqNtlG^v|QpjvRa5k3zfxH z(5NhlgQ3*crV*O`AY_W{D6`fz^Y+H?F@tb6TWtt64ktRJ)a_i=G-ObRV!{Mod5=!KnK>(#Bpe-<~-lr4ghIMw!Etc3+*1;OFNbgnZ>JzY$e|=@O9~a zDqo{Wnw9x*pEqgQJ20Mf-oVqX!7mcK${7}$KStxA7vA)(t`L_Q5|}mPrH-Vix?2Fn8;cY8y+?s=;He)Ns955sI#x z3DRfhEM4H^pqr_lhuztwm=$+QmvWZMc>@(;%tZ|;7%*FyB;Vj9Y*t>S({s})r*uZ8 z&LL(jlbV=Sw&oZwhYBbZ&yS1t1MJw3{lynkpHyvj)WzMkk|GL>$yaWJO_)YnQsZiv z6o{q1zZ@g}d=+Hic7y$pmVRfu9jdENe)FB2(5d=S6GX0ED;AEK;Otm}#7@(bf!pJN zf~q~$&^E`PFR$AQ&%OrtTr)l@+iU#~5T>nU(i@ zTb6L{9Mv=00{~Cy_hr$PH)a`H8Dv$^iMg{h;6V+kakZl5Zl9b9@G*KKJm#FMxN;;3Ld zyC=QrKbw=fj-Bwji+Ba--o=QDi1N<5;`89aOG&7dMmx)RTeM&1yH3A0qR+jy^h(L~G}&RdnG5!5$3Dx0=bOUS)NTVH!U?2Zns;7n1}-kd13QTbLk z8JbOys!MQdMu6rKIL*W=Zyz4ZChdUXs!y4hrzWoE-`Xmo-zRVM&6h zLvXc+JC40uHX9rK)0rd%Z-UuV(pN@P5J#Oh-jBA!3Th8^r$Cm4FZFTR-kg=}Lw~sg z%>oM3ojzpuvQFF!IMmuYtaRrT5;~=FeWq&Rk+ih>{ zOg|g>m9q!@h}q)uM!F7V!Ke39(9u)H@oBRdiB!oqjjPhkiUQVMXNI9u)60s1>wc!v z|FX?MS%rMHC;Qu#m?I%-mZiY8W;9?PrJJ*vmPiNCyG$_Z%ZqutSfFO_iAO!276hq&H zyLMtUy(Xcv#DuE!pmv-}m@79^Y(+h+cGS}*isCj95{BDW~fefXpUE4_j+I*YDzp1?x9B1tx36!9r`_T7L{kRLeXIA z7IXk!)0C(hD9~_M?ba@E7%|a@GI< diff --git a/app-accessibility/Manifest.gz b/app-accessibility/Manifest.gz index fd822412d24a65af443fae048f6c5a4aa35ed276..59fe6cefc72d8048430140ecf0e451a2e2ff93bf 100644 GIT binary patch literal 4227 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 ZI85vz% + #include + #include ++#include ++#include + + #define DEFAULT_DEVICE "/dev/ttyS0" + #define MAXCHARS 128 diff --git a/app-accessibility/kontrast/Manifest b/app-accessibility/kontrast/Manifest index c3d0e7330fc9..131133df436e 100644 --- a/app-accessibility/kontrast/Manifest +++ b/app-accessibility/kontrast/Manifest @@ -1,7 +1,5 @@ DIST kontrast-24.08.3.tar.xz 216192 BLAKE2B a645d18ad35da68078e811719aef0891274b711f1c6b7e4243fce28c3b3387a3583f441c50a9350525e5dc975ae392f7561de776dbbb7f3020fc2f6f384347fa SHA512 739dbcdaac77642eb3cf1b70fc163802ebf89071c10db5d2fd5ee7ce170a0648146634b5fde1570d760be92c13f7b727ae6d84b66b512ac1d2b94437ab3c1c4e -DIST kontrast-24.12.1.tar.xz 217316 BLAKE2B 6e402cb7f7061f14dc07670213ec1c166c8050b04af499b28ae7567f5a2ce606dff750ac31869c1b864cf9b39d997c94d455045b782518fb2ed5454c63d3e4d8 SHA512 88221c514c28c4055e7c7bd6edf230dfffae8f43a624417dccb7ad62a03db861cb2c310085071963b883b55c5f3bb23085d477fbb6aa152604b2e9453fa36a62 DIST kontrast-24.12.2.tar.xz 217324 BLAKE2B 4ec9743ab06931867606d88731e1781a5a6ae4f8be0ea121c36f07a399dad18b7e2924dce6afa9e15499672049de294c000eec90e0feafd8a7b150f50be3ae63 SHA512 56cc0bacc57936156347d61235e35032715b3425fb2170265077b1370e78ed88c6d378e1370db4760f41b65e6c8f0a96174f988254f36434cb159e6d20c74a3e EBUILD kontrast-24.08.3.ebuild 722 BLAKE2B 99252bcebb7d642bf05fb9f0087212568f0e6cb4e92c3be6df8e88df7acec50ab02d02873c3573c0ed2b8657c95f5d6de6ae93ccb835da9e3efe10a37ed40081 SHA512 d625eaf5e3b6d5a46577fb318757423ad22f29eede9fd2c5b4603594d8303f74a7b559da39534b3b450aba21baa62ce1ec18e7a06ddb972af1af0053e240d4d0 -EBUILD kontrast-24.12.1.ebuild 767 BLAKE2B fa9ba1f2316bd760b37f71a772b6e8a1d105ac53685bd1571d88acd86a5fb544c1f1b0e1e07ddf7f8bcc375852f00cbdb402b6c70476fa3e5c98e24d7575ab0d SHA512 19b066c2482b763356424e7fd562d76baa0af426919d200f048d8978e0ea723a2d1764107744a742c156437b343bb2c2a9657b79d278bb55ec3c79c0aec0ae72 EBUILD kontrast-24.12.2.ebuild 767 BLAKE2B fa9ba1f2316bd760b37f71a772b6e8a1d105ac53685bd1571d88acd86a5fb544c1f1b0e1e07ddf7f8bcc375852f00cbdb402b6c70476fa3e5c98e24d7575ab0d SHA512 19b066c2482b763356424e7fd562d76baa0af426919d200f048d8978e0ea723a2d1764107744a742c156437b343bb2c2a9657b79d278bb55ec3c79c0aec0ae72 MISC metadata.xml 384 BLAKE2B 769505c8a869e842511bb7202a31c4ac5d89dbf378199f669bfe7038d27aa63febbf2eedf8ea767545e1ab99be1718c9d67ff506842e2b624f512a98efcb0de4 SHA512 52a7f09822301efe07ad292d16d6625a22da14febe2236e69dfe7e7088750d2d2095d765a65466d80285d3b87ef8979ed0e75956f3cb9cd52127994b23de3c75 diff --git a/app-accessibility/kontrast/kontrast-24.12.1.ebuild b/app-accessibility/kontrast/kontrast-24.12.1.ebuild deleted file mode 100644 index a13d7f3a7a90..000000000000 --- a/app-accessibility/kontrast/kontrast-24.12.1.ebuild +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -ECM_HANDBOOK="forceoptional" -KFMIN=6.7.0 -QTMIN=6.7.2 -inherit ecm gear.kde.org - -DESCRIPTION="Tool to check contrast for colors to verify they are correctly accessible" -HOMEPAGE="https://apps.kde.org/kontrast/" - -LICENSE="GPL-3+" -SLOT="6" -KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" -IUSE="" - -DEPEND=" - dev-db/futuresql - dev-libs/qcoro - >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,sql,widgets] - >=dev-qt/qtdeclarative-${QTMIN}:6 - >=dev-qt/qtsvg-${QTMIN}:6 - >=kde-frameworks/kcoreaddons-${KFMIN}:6 - >=kde-frameworks/kcrash-${KFMIN}:6 - >=kde-frameworks/ki18n-${KFMIN}:6 - >=kde-frameworks/kirigami-${KFMIN}:6 -" -RDEPEND="${DEPEND} - kde-plasma/xdg-desktop-portal-kde:* -" diff --git a/app-accessibility/sphinx2/Manifest b/app-accessibility/sphinx2/Manifest index f42fb5af32b5..4bfcd9fcc120 100644 --- a/app-accessibility/sphinx2/Manifest +++ b/app-accessibility/sphinx2/Manifest @@ -1,4 +1,6 @@ AUX sphinx2-0.6-as-needed.patch 776 BLAKE2B 831ae9cc8e1ed018eecb03f29c6dbe349b09d2ecaa6cdcd879613d372f437629d8e352b140c934a9f42c0192f34d29ebb81a2d74eb9b61948f926d510c9410f0 SHA512 2e4e48041e7eb79acd84a384943ebfbb0be17faab404b7d05b09d95ee5313730e6bd3026443ebe01bb79edb0c3bbcee3ec0b207978a1f0a30df4e0af54c11187 +AUX sphinx2-0.6-c99.patch 15430 BLAKE2B 9351b580babd2fc6e27468e46c5b0803cd9f72a7b2346db0c2bfd6fe10f7a4c685adaf529fa1927dda7fc3a26959521a1726fba47057748cbca3d427602fa0de SHA512 240e9191ed4faedb780549f061df5b0439bce59c0968c22b950c1ef1773e146a0ab0fd238078c6dcd9789847ffb7aa224a78d31277399ff365fdd03903deb183 DIST sphinx2-0.6.tar.gz 6883359 BLAKE2B 7e5da2f05d2ff92fd2c21a64c76954ff00104adcb81548ccfc19da4fc4995c59a494461f4343ae3b6799526d3f3f3a3c0051a6030af4cc9873d5cd5258fe30a6 SHA512 98e66cedf8a147aee7871df85ee45f58ab76637d26163cbb30ee9554638b503f52c9b14f4f3b64bbb49bb84282e399451a0f9a8622b6e7e545889773d72ba5d4 EBUILD sphinx2-0.6-r1.ebuild 753 BLAKE2B cd8502f483c63464c424fbef7cf0ca3573dbb3965e61e0cc71e3cc3dc23c900ef5a9b4b626a4ff909464e4f6943639f430bc4f37eca1003165c46e5d6384e947 SHA512 32f65d2a17b7317c76ccd1d278bc93c4ed590869a05d7f916c285a3834e1173309db7cd5b2cc697c1e2ffa9e13daea903936921fb22f8ff79d55bcbde90ee925 +EBUILD sphinx2-0.6-r2.ebuild 784 BLAKE2B 8d6ef2531f3449be07e28fa88e73d7659cc98da9249322e9c09b1fad3ad8299ff4ec17f020d57e705d2dcfad1ee31e13cde8412405f3cb05c1831f0d4752bf51 SHA512 f040348dfcd5d53ccedf90a3e50cba39c6ff0189cb098de980f01984149cafb88d6b3124835038468bf320116b37cc8f5f9cd3d1a648afa2e6a2bc49dccda79b MISC metadata.xml 463 BLAKE2B 609aa2916fccaea3a342fdd48ccb1f98b263100501a9b6be3202118f0f2b08e171588d0f943be6b4debc1673e5b2014c0be5aa6f1bc7537b8b53518700679e90 SHA512 f7e5925996715ddc26a8918c2bf1e48f125162f8a7ce606525e7b5e25e19cb12ecfbe9f9554129bfea5f55fa7bb67e7d5a56d0087f7e3d86a37dde532c76ab9b diff --git a/app-accessibility/sphinx2/files/sphinx2-0.6-c99.patch b/app-accessibility/sphinx2/files/sphinx2-0.6-c99.patch new file mode 100644 index 000000000000..4ef7e37b97a7 --- /dev/null +++ b/app-accessibility/sphinx2/files/sphinx2-0.6-c99.patch @@ -0,0 +1,500 @@ +bug https://bugs.gentoo.org/943765 +bug https://bugs.gentoo.org/919360 +bug https://bugs.gentoo.org/880537 +Port to C23 (and, accidentally, to C99) of codebase, plus one mistype in define guard +--- a/configure.in 2024-12-29 18:59:29.315644986 +0400 ++++ b/configure.in 2024-12-29 18:59:49.600524367 +0400 +@@ -12,6 +12,7 @@ + AC_HEADER_STDC + AC_WORDS_BIGENDIAN + AC_TYPE_SIGNAL ++AC_USE_SYSTEM_EXTENSIONS + + hmmdata=`ls -1 $srcdir/model/hmm/6k | egrep -v '(Makefile|CVS)'` + hmmdata=`echo $hmmdata` +diff -ur a/src/examples/clicore.c b/src/examples/clicore.c +--- a/src/examples/clicore.c 2024-12-29 17:02:47.003099554 +0400 ++++ b/src/examples/clicore.c 2024-12-29 17:16:06.292289840 +0400 +@@ -323,7 +323,7 @@ + memcpy (&addr.sin_addr, hp->h_addr, hp->h_length); + addr.sin_port = htons((u_short) port); + +- if (connect (conn_sd, &addr, sizeof(addr)) == 0) ++ if (connect (conn_sd, (struct sockaddr *)(&addr), sizeof(addr)) == 0) + break; + print_errno ("connect"); + cli_close (conn_sd); +diff -ur a/src/examples/srvcore.c b/src/examples/srvcore.c +--- a/src/examples/srvcore.c 2024-12-29 17:02:47.003099554 +0400 ++++ b/src/examples/srvcore.c 2024-12-29 17:16:22.164194331 +0400 +@@ -381,7 +381,7 @@ + + ERRLOG((stderr, "%s(%d): Listening at port %d\n", __FILE__, __LINE__, bindport)); + +- if ((conn_sd = accept (listen_sd, &address, &address_len)) == INVALID_SOCKET) { ++ if ((conn_sd = accept (listen_sd, (struct sockaddr *)(&address), &address_len)) == INVALID_SOCKET) { + print_errno ("conn_accept"); + return INVALID_SOCKET; + } +diff -ur a/src/libsphinx2/include/c.h b/src/libsphinx2/include/c.h +--- a/src/libsphinx2/include/c.h 2024-12-29 17:22:38.269931119 +0400 ++++ b/src/libsphinx2/include/c.h 2001-12-11 04:24:48.000000000 +0400 +@@ -85,7 +85,7 @@ + #define CERROR (-1) + + #ifndef bool +-typedef enum { false = 0, true = 1 } bool; ++#include + #endif /* bool */ + + #define sizeofS(string) (sizeof(string) - 1) +diff -ur a/src/libsphinx2ad/ad_oss.c b/src/libsphinx2ad/ad_oss.c +--- a/src/libsphinx2ad/ad_oss.c 2024-12-29 17:02:47.002099560 +0400 ++++ b/src/libsphinx2ad/ad_oss.c 2024-12-29 17:05:05.392266798 +0400 +@@ -230,7 +230,7 @@ + } + + if ((handle = (ad_rec_t *) calloc (1, sizeof(ad_rec_t))) == NULL) { +- fprintf(stderr, "calloc(%d) failed\n", sizeof(ad_rec_t)); ++ fprintf(stderr, "calloc(%ld) failed\n", sizeof(ad_rec_t)); + abort(); + } + +diff -ur a/src/libsphinx2/get_a_word.c b/src/libsphinx2/get_a_word.c +--- a/src/libsphinx2/get_a_word.c 2024-12-29 17:37:40.712568800 +0400 ++++ b/src/libsphinx2/get_a_word.c 2024-12-29 17:40:42.677508705 +0400 +@@ -46,8 +46,7 @@ + #include + + /* default: more_separator = ' ' */ +-char *get_a_word (line, word, more_separator) +-char *line, *word, more_separator; ++char *get_a_word (char *line, char* word, char more_separator) + { + register int i; + +diff -ur a/src/libsphinx2/resfft.c b/src/libsphinx2/resfft.c +--- a/src/libsphinx2/resfft.c 2024-12-29 17:37:40.712568800 +0400 ++++ b/src/libsphinx2/resfft.c 2024-12-29 17:39:14.910020022 +0400 +@@ -36,6 +36,9 @@ + #include + #include + ++//declaring before defining ++void rsfft (float *x, int n, int m); ++ + /************************************************************************ + * + * This work was supported in part by funding from the Defense Advanced +diff -ur a/src/libsphinx2/list.c b/src/libsphinx2/list.c +--- a/src/libsphinx2/list.c 2024-12-29 17:43:46.365438572 +0400 ++++ b/src/libsphinx2/list.c 2024-12-29 18:04:59.159919708 +0400 +@@ -50,7 +50,7 @@ + #define ERR_ARG 1 + #define ERR_MALLOC 2 + +-static int32 exception(); ++static int32 exception(char *rname, char *s, int32 exc); + + /* NEW_LIST + *-----------------------------------------------------------* +diff -ur a/src/libsphinx2/lm_3g.c b/src/libsphinx2/lm_3g.c +--- a/src/libsphinx2/lm_3g.c 2024-12-29 17:43:46.365438572 +0400 ++++ b/src/libsphinx2/lm_3g.c 2024-12-29 18:03:34.688423361 +0400 +@@ -446,12 +446,7 @@ + * returns a pointer to a new language model record. The size is passed in + * as a parameter. + */ +-lm_t * +-NewModel (n_ug, n_bg, n_tg, n_dict) +- int32 n_ug; +- int32 n_bg; +- int32 n_tg; +- int32 n_dict; ++lm_t *NewModel (int32 n_ug, int32 n_bg, int32 n_tg, int32 n_dict) + { + lm_t *model; + +@@ -1340,8 +1335,7 @@ + * dict base wid; check if present in LM. + * return TRUE if present, FALSE otherwise. + */ +-int32 dictwd_in_lm (wid) +- int32 wid; ++int32 dictwd_in_lm (int32 wid) + { + return (lmp->dictwid_map[wid] >= 0); + } +diff -ur a/src/libsphinx2/pconf.c b/src/libsphinx2/pconf.c +--- a/src/libsphinx2/pconf.c 2024-12-29 17:43:46.365438572 +0400 ++++ b/src/libsphinx2/pconf.c 2024-12-29 17:44:17.791255490 +0400 +@@ -201,7 +201,6 @@ + static char * + env_scan(char const *str) + { +- extern char *getenv(); + char buf[1024]; /* buffer for temp use */ + register char *p = buf; /* holds place in the buffer */ + char var[50]; /* holds the name of the env variable */ +diff -ur a/src/libsphinx2/prime.c b/src/libsphinx2/prime.c +--- a/src/libsphinx2/prime.c 2024-12-29 17:43:46.365438572 +0400 ++++ b/src/libsphinx2/prime.c 2024-12-29 17:45:06.343972631 +0400 +@@ -39,12 +39,11 @@ + #include + #include + +-int32 primeNext (val) ++int32 primeNext (int32 val) + /*--------------------------------------* + * Decsription + * Return a prime number greater than or equal to val + */ +-int32 val; + { + int32 maxFactor; + int32 i; +diff -ur a/src/libsphinx2/resfft.c b/src/libsphinx2/resfft.c +--- a/src/libsphinx2/resfft.c 2024-12-29 17:43:46.367438560 +0400 ++++ b/src/libsphinx2/resfft.c 2024-12-29 18:05:34.888706678 +0400 +@@ -68,8 +68,6 @@ + float b0, yt, *y; + double e; + +- void rsfft(); +- + n2 = n; + n4 = n2 / 2; + for (b0 = 0, i = 1; i < n2; i += 2) +diff -ur a/src/libsphinx2/time_align.c b/src/libsphinx2/time_align.c +--- a/src/libsphinx2/time_align.c 2024-12-29 17:43:46.365438572 +0400 ++++ b/src/libsphinx2/time_align.c 2024-12-29 18:01:25.144195756 +0400 +@@ -2455,7 +2455,7 @@ + va_traverse_back_trace(BACK_POINTER_T *bp_table, + int bp_idx, + int *score, +- void (*segment_op)(), ++ void (*segment_op)(int id, int begin, int end, int score, va_list ap), + va_list ap) + { + int prior_end; +@@ -2491,7 +2491,7 @@ + traverse_back_trace(BACK_POINTER_T *bp_table, + int bp_idx, + int *score, +- void (*segment_op)(), ++ void (*segment_op)(int id, int begin, int end, int score, va_list ap), + ...) + { + int rv; +diff -ur a/src/libsphinx2/util.c b/src/libsphinx2/util.c +--- a/src/libsphinx2/util.c 2024-12-29 17:43:46.365438572 +0400 ++++ b/src/libsphinx2/util.c 2024-12-29 17:46:59.345314305 +0400 +@@ -41,11 +41,10 @@ + + #include "s2types.h" + +-void swapLong(intp) ++void swapLong(int32 *intp) + /*------------------------------------------------------------* + * Swap the int32 integer at intp + */ +-int32 *intp; + { + *intp = ((*intp << 24) & 0xFF000000) | + ((*intp << 8) & 0x00FF0000) | +@@ -53,9 +52,7 @@ + ((*intp >> 24) & 0x000000FF); + } + +-void swapShortBuf (p, cnt) +-int16 *p; +-int32 cnt; ++void swapShortBuf (int16 *p, int32 cnt) + { + while (cnt-- > 0) { + *p = ((*p << 8) & 0x0FF00) | +@@ -64,9 +61,7 @@ + } + } + +-void swapLongBuf (p, cnt) +-int32 *p; +-int32 cnt; ++void swapLongBuf (int32 *p, int32 cnt) + { + while (cnt-- > 0) { + *p = ((*p << 24) & 0xFF000000) | +diff -ur a/src/libsphinx2/uttproc.c b/src/libsphinx2/uttproc.c +--- a/src/libsphinx2/uttproc.c 2024-12-29 17:43:46.366438566 +0400 ++++ b/src/libsphinx2/uttproc.c 2024-12-29 17:49:57.818349115 +0400 +@@ -2060,9 +2060,14 @@ + search_hyp_t *uttproc_allphone_file (char const *utt) + { + int32 nfr; +- extern search_hyp_t *allphone_utt(); ++ extern search_hyp_t *allphone_utt(int32 nfr, ++ float *cep, ++ float *dcep, ++ float *dcep_80ms, ++ float *pcep, ++ float *ddcep); + extern char *build_uttid (const char *utt); /* in fbs_main.c */ +- extern int32 utt_file2feat(); /* in fbs_main.c */ ++ extern int32 utt_file2feat(char *utt, int32 nosearch); /* in fbs_main.c */ + search_hyp_t *hyplist, *h; + + build_uttid (utt); +diff -ur a/include/err.h b/include/err.h +--- a/include/err.h 2024-12-29 18:10:58.131814449 +0400 ++++ b/include/err.h 2024-12-29 18:11:05.778769777 +0400 +@@ -52,7 +52,7 @@ + + + #ifndef _LIBUTIL_ERR_H_ +-#define _LIBUTIL_ERR_H ++#define _LIBUTIL_ERR_H_ + + #include + #include +diff -ur a/src/examples/lm3g2dmp.c b/src/examples/lm3g2dmp.c +--- a/src/examples/lm3g2dmp.c 2024-12-29 18:10:58.180814163 +0400 ++++ b/src/examples/lm3g2dmp.c 2024-12-29 18:27:31.906999550 +0400 +@@ -226,21 +226,21 @@ + #define TG_PROB_F(m,t) ((m)->prob3[(m)->trigrams[t].prob3].f) + #define TG_PROB_L(m,t) ((m)->prob3[(m)->trigrams[t].prob3].l) + +-extern char *salloc(); ++extern char *salloc(char const *); + +-extern char *listelem_alloc (); +-extern void listelem_free (); ++extern char *listelem_alloc (int32 elem_size); ++extern void listelem_free (void *elem, int32 elem_size); + + static char *start_sym = ""; + static char *end_sym = ""; + static char *darpa_hdr = "Darpa Trigram LM"; + +-static int32 lmname_to_id (); +-static int32 lm3g_load (); +-static int32 lm3g_dump (); +-static void lm_set_param (); +-static void lm3g2dmp_lm_add (); +-static int32 lm3g2dmp_lm_delete (); ++static int32 lmname_to_id (char const * name); ++static int32 lm3g_load (char *file, lm_t *model, char *lmfile, int32 mtime); ++static int32 lm3g_dump (char *file, lm_t *model, char *lmfile, int32 mtime); ++static void lm_set_param (lm_t *model, double lw, double uw, double wip, int32 word_pair); ++static void lm3g2dmp_lm_add (char const *lmname, lm_t *model, double lw, double uw, double wip); ++static int32 lm3g2dmp_lm_delete (char const * name); + + /* Structure for maintaining multiple, named LMs */ + static struct lmset_s { +@@ -304,8 +304,7 @@ + * Initialize sorted list with the 0-th entry = MIN_PROB_F, which may be needed + * to replace spurious values in the Darpa LM file. + */ +-static void init_sorted_list (l) +- sorted_list_t *l; ++static void init_sorted_list (sorted_list_t *l) + { + l->list = + (sorted_entry_t *) CM_calloc (MAX_SORTED_ENTRIES, sizeof (sorted_entry_t)); +@@ -315,14 +314,12 @@ + l->free = 1; + } + +-static void free_sorted_list (l) +- sorted_list_t *l; ++static void free_sorted_list (sorted_list_t *l) + { + free (l->list); + } + +-static log_t *vals_in_sorted_list (l) +- sorted_list_t *l; ++static log_t *vals_in_sorted_list (sorted_list_t *l) + { + log_t *vals; + int32 i; +@@ -333,9 +330,7 @@ + return (vals); + } + +-static int32 sorted_id (l, val) +- sorted_list_t *l; +- float *val; ++static int32 sorted_id (sorted_list_t *l, float *val) + { + int32 i = 0; + +@@ -378,8 +373,7 @@ + /* + * allocate, initialize and return pointer to an array of unigram entries. + */ +-static unigram_t *NewUnigramTable (n_ug) +- int32 n_ug; ++static unigram_t *NewUnigramTable (int32 n_ug) + { + unigram_t *table; + int32 i; +@@ -398,11 +392,7 @@ + * as a parameter. + */ + static lm_t * +-lm3g2dmp_NewModel (n_ug, n_bg, n_tg, n_dict) +- int32 n_ug; +- int32 n_bg; +- int32 n_tg; +- int32 n_dict; ++lm3g2dmp_NewModel (int32 n_ug, int32 n_bg, int32 n_tg, int32 n_dict) + { + lm_t *model; + int32 i; +@@ -464,9 +454,8 @@ + /* + * Read and return #unigrams, #bigrams, #trigrams as stated in input file. + */ +-static void ReadNgramCounts (fp, n_ug, n_bg, n_tg) +- FILE *fp; +- int32 *n_ug, *n_bg, *n_tg; /* return the info here */ ++static void ReadNgramCounts (FILE *fp, int32 *n_ug, int32* n_bg, int32* n_tg) ++ /* return the info here */ + { + char string[256]; + int32 ngram, ngram_cnt; +@@ -510,9 +499,8 @@ + * entry to this procedure, the file pointer is positioned just after the + * header line '\1-grams:'. + */ +-static void ReadUnigrams (fp, model) +- FILE *fp; /* input file */ +- lm_t *model; /* to be filled in */ ++static void ReadUnigrams (FILE *fp, lm_t *model) ++ /* to be filled in */ + { + char string[256]; + char name[128]; +@@ -764,9 +752,7 @@ + } + } + +-static FILE *lm_file_open (filename, usepipe) +- char *filename; +- int32 usepipe; ++static FILE *lm_file_open (char *filename, int32 usepipe) + { + char command[1024]; + FILE *fp; +@@ -1231,16 +1217,12 @@ + /* + * dict base wid; check if present in LM. return TRUE if present, FALSE otherwise. + */ +-static int32 lm3g2dmp_dictwd_in_lm (wid) +- int32 wid; ++static int32 lm3g2dmp_dictwd_in_lm (int32 wid) + { + return (lmp->dictwid_map[wid] >= 0); + } + +-static int32 fread_int32(fp, min, max, name) +- FILE *fp; +- int32 min, max; +- char *name; ++static int32 fread_int32(FILE *fp, int32 min, int32 max, char *name) + { + int32 k; + +@@ -1252,17 +1234,13 @@ + return (k); + } + +-static void fwrite_int32 (fp, val) +- FILE *fp; +- int32 val; ++static void fwrite_int32 (FILE *fp, int32 val) + { + SWAP_LE_32(&val); + fwrite (&val, sizeof(int32), 1, fp); + } + +-static void fwrite_ug (fp, ug) +- FILE *fp; +- unigram_t *ug; ++static void fwrite_ug (FILE *fp, unigram_t *ug) + { + unigram_t tmp_ug = *ug; + +@@ -1273,9 +1251,7 @@ + fwrite (&tmp_ug, sizeof(unigram_t), 1, fp); + } + +-static void fwrite_bg (fp, bg) +- FILE *fp; +- bigram_t *bg; ++static void fwrite_bg (FILE *fp, bigram_t *bg) + { + bigram_t tmp_bg = *bg; + +@@ -1286,9 +1262,7 @@ + fwrite (&tmp_bg, sizeof(bigram_t), 1, fp); + } + +-static void fwrite_tg (fp, tg) +- FILE *fp; +- trigram_t *tg; ++static void fwrite_tg (FILE *fp, trigram_t *tg) + { + trigram_t tmp_tg = *tg; + +@@ -1301,11 +1275,9 @@ + * Load pre-compiled trigram LM file, if it exists, into model. If file + * does not exist return 0. Otherwise, if successful, return 1. + */ +-static int32 lm3g_load (file, model, lmfile, mtime) +- char *file; +- lm_t *model; +- char *lmfile; /* the original Darpa LM filename */ +- int32 mtime; /* original LM file last modification timestamp */ ++static int32 lm3g_load (char *file, lm_t *model, char *lmfile, int32 mtime) ++ /* char *lmfile - the original Darpa LM filename */ ++ /* int32 mtime - original LM file last modification timestamp */ + { + int32 i, j, k, vn, ts, err; + FILE *fp; +@@ -1528,11 +1500,10 @@ + * Dump internal LM to file. Format described above. + * Remember to swap bytes if necessary. + */ +-static int32 lm3g_dump (file, model, lmfile, mtime) +- char *file; /* output file */ +- lm_t *model; +- char *lmfile; /* original Darpa LM filename */ +- int32 mtime; /* lmfile last mod time */ ++static int32 lm3g_dump (char *file, lm_t *model, char *lmfile, int32 mtime) ++ /* char *file output file */ ++ /* char *lmfile original Darpa LM filename */ ++ /*int32 mtime lmfile last mod time */ + { + int32 i, k; + FILE *fp; +@@ -1685,9 +1656,7 @@ + } + } + +-int main (argc, argv) +- int32 argc; +- char *argv[]; ++int main (int32 argc, char *argv[]) + { + char *lmfile; + float64 lw, uw, wip; +@@ -1945,7 +1914,7 @@ + lm3g2dmp_get_current_lmname (); + lm3g2dmp_lm_get_current (); + lm3g2dmp_get_n_lm (); +- lm3g2dmp_dictwd_in_lm (); ++ lm3g2dmp_dictwd_in_lm (0); + lm3g2dmp_lmSetStartSym (""); + lm3g2dmp_lmSetEndSym (""); + lm3g2dmp_lm3g_ug_score (0); diff --git a/app-accessibility/sphinx2/sphinx2-0.6-r2.ebuild b/app-accessibility/sphinx2/sphinx2-0.6-r2.ebuild new file mode 100644 index 000000000000..6a9986ef0f55 --- /dev/null +++ b/app-accessibility/sphinx2/sphinx2-0.6-r2.ebuild @@ -0,0 +1,39 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +MY_P=${P/_/} + +DESCRIPTION="CMU Speech Recognition-engine" +HOMEPAGE="https://cmusphinx.github.io" +SRC_URI="https://downloads.sourceforge.net/cmusphinx/${P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="amd64 ppc x86" + +DOCS=( AUTHORS ChangeLog README NEWS + doc/{README.{bin,lib},SCHMM_format,filler.dict,phoneset{,-old}} ) +HTML_DOCS=( doc/{phoneset_s2,sphinx2}.html ) + +PATCHES=( + "${FILESDIR}"/${P}-as-needed.patch + "${FILESDIR}"/${P}-c99.patch +) + +src_prepare() { + default + mv configure.{in,ac} || die + eautoreconf +} + +src_install() { + default + + rm -r "${ED}/usr/share/${PN}/doc" || die + find "${ED}" -name '*.la' -delete || die +} diff --git a/app-admin/Manifest.gz b/app-admin/Manifest.gz index 3adbe71a8211d8954e5b73c2437ed582240cb913..509dd0ea87bdf7ce86c6bad3500fbda8a28d1cc5 100644 GIT binary patch delta 32627 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 delta 32643 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 C7JnoF diff --git a/app-admin/aws-session-manager-plugin/Manifest b/app-admin/aws-session-manager-plugin/Manifest index 5aa3a18806a6..75763c9a7459 100644 --- a/app-admin/aws-session-manager-plugin/Manifest +++ b/app-admin/aws-session-manager-plugin/Manifest @@ -1,3 +1,3 @@ -DIST aws-session-manager-plugin-1.2.694.0.tar.gz 35491825 BLAKE2B 134c4a83a5e906206bd0665509d96ed77d5f2c2ea3ca58d9ba776328a36c1eb018674d77d63719c6ba2d00006a60d8e6ccf62f828fca84fdfe7b6b3d5a2a22b9 SHA512 64372b552a7e6d534de886ea1fba26292c1ff71fdc658becbc3ea0ecf7e000de0c69a931ddcaf3d44f50ddc9c331233b169575534d3a46e2cdd9c711d2e21483 -EBUILD aws-session-manager-plugin-1.2.694.0.ebuild 854 BLAKE2B cc3b63a14fa84580b4b5145081c601ca331d3ef71d0829a6280feea599273af2a680764657ce65365b1fdbd95743934bd8eaa928658954f423721b186552dc93 SHA512 8cbbf6d3972b821035e53bf12b1926372d4139ccd9cd6ebffe94c8baf92a2d9638287ce213427cb19cf2670d21f096bebd47b61425c7c4747e51025b34deef50 +DIST aws-session-manager-plugin-1.2.707.0.tar.gz 35492492 BLAKE2B a494dd6fd5ab7736332579d01141510c5c011b1fb2ee6b6544b509b4ea4db8ac499b654ab0824b9d63d0c2fa07775408121449f28f73a07f4f769ca7695358df SHA512 5525315ae2f95ce0ea146d2b2b5b74a05c6be70a96e6f11aab4bf261cdd2f869697b63363d50d7d6b5eec850e4f9fca5f17379e6e6b6c44b7d9963010dd2d014 +EBUILD aws-session-manager-plugin-1.2.707.0.ebuild 854 BLAKE2B cc3b63a14fa84580b4b5145081c601ca331d3ef71d0829a6280feea599273af2a680764657ce65365b1fdbd95743934bd8eaa928658954f423721b186552dc93 SHA512 8cbbf6d3972b821035e53bf12b1926372d4139ccd9cd6ebffe94c8baf92a2d9638287ce213427cb19cf2670d21f096bebd47b61425c7c4747e51025b34deef50 MISC metadata.xml 443 BLAKE2B 6eaf1028fe3289e5cac3978eeb4a0efadf105e584118c638246b36be26da551233945c67ea0b416ecad987d13d7c09ecf6f62f361c42807e81d630fb1d6ca15c SHA512 f185def4db1a8555541e195fe3cf450e3fd4f78754cb4d18379665c0137ec976c1e57e30311bd1d8f2a8db23072d72b378d2727a8008240e7d184ee78ce042e3 diff --git a/app-admin/aws-session-manager-plugin/aws-session-manager-plugin-1.2.694.0.ebuild b/app-admin/aws-session-manager-plugin/aws-session-manager-plugin-1.2.707.0.ebuild similarity index 100% rename from app-admin/aws-session-manager-plugin/aws-session-manager-plugin-1.2.694.0.ebuild rename to app-admin/aws-session-manager-plugin/aws-session-manager-plugin-1.2.707.0.ebuild diff --git a/app-admin/awscli/Manifest b/app-admin/awscli/Manifest index 11ad85c3cc74..115c2503756f 100644 --- a/app-admin/awscli/Manifest +++ b/app-admin/awscli/Manifest @@ -1,15 +1,15 @@ DIST aws-cli-1.37.11.gh.tar.gz 2900600 BLAKE2B eed7e50f8b481fa3f7ff1cbb4d6c953545b6d5285decd84ed75b29f89c5a182ed9db299d9cbba8ad75ef6c31da25f80559c55bc9a868d25cf6dea815bd57265e SHA512 a445764336804219cbe18a5f2b929c956c67d63958b4b01b7a4a263801061223941b92e551f223d4966a68d95c711933db0de2e6043c4c85e79376b973088c51 -DIST aws-cli-1.37.12.gh.tar.gz 2902903 BLAKE2B 8e158ae2c09f62b58f56b0549ed0f183c415ad6b0b35fbe7a0c767bd221d5cb113e118778e3445ad456a74a0d8be2701cc1853f84d7bf84f4a29b7ce537dc0bd SHA512 f2ec305a52d5d232e13a5d917f6e5934f5083c39b7ca38bc506ddb02bdf6f9bcccd285710233fec1a75c34cdcbb74c98b523596563ed65dad1dd3d6cab0c0238 -DIST aws-cli-1.37.13.gh.tar.gz 2903211 BLAKE2B 506a7b91bbeee488147c739d254d4a00a6e7ac6357df9c02caccfffddadc45839f47dd73c87d83814798a068efd5ad9b6c1b718bf56cd4e5f93b81d9fccde220 SHA512 8b92f600680a1f67536d27301bf6a6f8c7318c65a24d2a2af155a177ea7e68f5370a3b6ba20c46c87bcc30b58277afa69714a54d33c34cc73b67605cea909ead -DIST aws-cli-1.37.14.gh.tar.gz 2903307 BLAKE2B f599c398df4c205f49057d6232db3fb13887bcd301129767b4881dcae5f2637ff7c2b0ec20b345485adf90c1d07c93538886d116b20cd3e6acf2518f9a386604 SHA512 2bfcddb3562616e7dcd7aebb576a02a9bf73d471494ee06d9671967a4b326a7078a2874050613bcdeb26686d06c6873bb8c3df61a405144199118a67c9f237e0 -DIST aws-cli-1.37.15.gh.tar.gz 2903471 BLAKE2B 27ca0f528240435ec65e8cea7b95aa8689bff42004547e94373d264e56d4fb5e441b9d2642798c573f45ebee0c17830e51edf44ff2ebb69bb604998d9d8259e6 SHA512 6cdd76fb86404746a66c89dcefbb19692517d0f090d62c900e4b32e7676be5cd299980b76276dd31279d01ce489d44f8a4949bae2d08ff172250666596bee2ed -DIST aws-cli-1.37.2.gh.tar.gz 2882709 BLAKE2B be8e03342f8c105646c7a92bd9f4716952700cb1cee883669b532851f73b896dd3f55266851db0351348ca50e3d96ec78f296327545eaac1e5d4ceba58a71eeb SHA512 492ac75a47187a5579cae3211b7e4b9df34c7fcab8903cc52a61cc9dc6238f32268a04e45eb4edead76504636a85987355d4bf71f700df7c14dc215b45e8058b +DIST aws-cli-1.37.16.gh.tar.gz 2903703 BLAKE2B 0d3333bef89222e9e84de2c469a98c6fd19177ba6c7e69278e43f459f1909d67e07cdc4150189dd3fd2ce1573ae43a22c944d172738de6102ecf7c7ea00404cf SHA512 d9916ecfedd8bd9086608b6350f95374efad96f3af6adc8b372a254021e4b9f00c43a7c5759cd74f20082f60806fc6eb13d8daf7569fad303995f6d180958cb9 +DIST aws-cli-1.37.17.gh.tar.gz 2903616 BLAKE2B a3c3001dd4d4bc4051890bdeaf4012bd65ffcd2ff46d539f4898bb309b23211c6e58191ea7cd0f2887b9758a921d0217e008b5266b481ae927e183041c74bd54 SHA512 50559feb24eac2bb8c072e51b2d0540b581074b76f18268fe49e08e667b08471128edeac823143e17061a5b0e70410f9e2406b1c1f2a7f6fcb3caf3e7bd82e16 +DIST aws-cli-1.37.18.gh.tar.gz 2904282 BLAKE2B 2f1f62dfe2737a42d4d1d3e969462a02bd7f619aa11a31ad723546bd780c66e8f9a17afd7b82af0b67915ba6ff326e7dc1ae396a2f8670c20e57462f137119a0 SHA512 7d4dcc0619cb215d6c49c4d2b45cc3a7919a05bcc246b70d774a960a23a1689ce201aa3be0737324d8b727acb04d39a1ea952c0214b7797bc458be47cfbfd012 +DIST aws-cli-1.37.19.gh.tar.gz 2905629 BLAKE2B 0d5027985f4d9da2897a000d10ea6b75e2ae70da87c7f9e494305cc745f5146cf02ed0e35d34cd7a0ca041ab64db95e79e0fc0f8b7030598d7375dbebc43f557 SHA512 525787e13e864df51fc3b86c35dedbdea5d5cacfdc384f5c536aca44f54b83590cc7adb3a05921445a43a133c4ecf837fed341bfb841c539ad62f69f07a992f9 +DIST aws-cli-1.37.20.gh.tar.gz 2906150 BLAKE2B cd934eae7267a8a7cb83bb4e79f53a78b34e2f9391973e7b9aa092b0d2e7ee882cab3cae06f93e6de9645ebf92f27944cfde0a6facb0aa92f6057d236d309f5a SHA512 b3ca3073e5c4e815e5a6c343e8cb896f96510163535b89dc171251779f5fd7cd21cbcba086f541bc721d8343c2a5271a84776a2b3f7cb1c03a84b1ee0fdbdd56 DIST aws-cli-1.37.6.gh.tar.gz 2896548 BLAKE2B c160d981fc9d2a9c3de69b6d7dfc9fc699ad9ebbd7bd81808a74371059362ee7616a00c1c4d61674f4d9e8ebb35c3047c11d43c8c4bbf4ad63e65771462cc556 SHA512 475637e353afef4177d9375f2b8f9c86732ff55040ee1dfdc307a5c7fb6392db983e75324ebabe8016fb5c8712c1433a194a0cff65eda1f930a86b9357aafe28 EBUILD awscli-1.37.11.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb -EBUILD awscli-1.37.12.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb -EBUILD awscli-1.37.13.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb -EBUILD awscli-1.37.14.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb -EBUILD awscli-1.37.15.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb -EBUILD awscli-1.37.2.ebuild 3162 BLAKE2B 099b63681a7300c07c777d38f73edb68bb3d6421c65bf17e778a168441dcdd363e259fc399f7a83598e536bf27f534ccfdf960d1b356f180771b4774962df246 SHA512 662f08a57b1fe95a8fed4bd9c477b865526debd60be4d8164ef0a8fdeb7c4ef0cd71aef17b16717fbf189db283c13ddc13a3ee0c25f0541888f829b0449b134f -EBUILD awscli-1.37.6.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb +EBUILD awscli-1.37.16.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb +EBUILD awscli-1.37.17.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb +EBUILD awscli-1.37.18.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb +EBUILD awscli-1.37.19.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb +EBUILD awscli-1.37.20.ebuild 3169 BLAKE2B 5e19b6d6b837a3f62a7f54c25b76d2dcebbd709ada36d473cee53d0cfc2aa7b3de92cb12db09be4fafbd0b5c303761436b25bf3b4afe16cf0119481959e2b9c2 SHA512 0d30f1cd05a160c7d70f85cc5887d9333b9512421c74d394cae05799229c74c2edb307434f90b64353cd8963b85889546df20e3bf5e7a3fa8953ae2b4a6cecdb +EBUILD awscli-1.37.6.ebuild 3162 BLAKE2B 099b63681a7300c07c777d38f73edb68bb3d6421c65bf17e778a168441dcdd363e259fc399f7a83598e536bf27f534ccfdf960d1b356f180771b4774962df246 SHA512 662f08a57b1fe95a8fed4bd9c477b865526debd60be4d8164ef0a8fdeb7c4ef0cd71aef17b16717fbf189db283c13ddc13a3ee0c25f0541888f829b0449b134f MISC metadata.xml 385 BLAKE2B 5accfb180a91179cc6df539d42d1de06be3ebfec73f3edb719f5d59576103b9a8cb0c7c524c1042630e0cf99f068939a19f04c7b1b4a2acf9e072369df80d913 SHA512 ccb3d516326c5dbdf53068372ce25baecc137d21a04516374362212b969cc928dacbf743b4953da33f28482905798f069d09d19c88d9913f2b32648db25115ab diff --git a/app-admin/awscli/awscli-1.37.12.ebuild b/app-admin/awscli/awscli-1.37.16.ebuild similarity index 100% rename from app-admin/awscli/awscli-1.37.12.ebuild rename to app-admin/awscli/awscli-1.37.16.ebuild diff --git a/app-admin/awscli/awscli-1.37.13.ebuild b/app-admin/awscli/awscli-1.37.17.ebuild similarity index 100% rename from app-admin/awscli/awscli-1.37.13.ebuild rename to app-admin/awscli/awscli-1.37.17.ebuild diff --git a/app-admin/awscli/awscli-1.37.14.ebuild b/app-admin/awscli/awscli-1.37.18.ebuild similarity index 100% rename from app-admin/awscli/awscli-1.37.14.ebuild rename to app-admin/awscli/awscli-1.37.18.ebuild diff --git a/app-admin/awscli/awscli-1.37.15.ebuild b/app-admin/awscli/awscli-1.37.19.ebuild similarity index 100% rename from app-admin/awscli/awscli-1.37.15.ebuild rename to app-admin/awscli/awscli-1.37.19.ebuild diff --git a/app-admin/awscli/awscli-1.37.2.ebuild b/app-admin/awscli/awscli-1.37.2.ebuild deleted file mode 100644 index 2bb0ee1db5bd..000000000000 --- a/app-admin/awscli/awscli-1.37.2.ebuild +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} ) - -inherit bash-completion-r1 distutils-r1 - -MY_P=aws-cli-${PV} -DESCRIPTION="Universal Command Line Environment for AWS" -HOMEPAGE=" - https://github.com/aws/aws-cli/ - https://pypi.org/project/awscli/ -" -SRC_URI=" - https://github.com/aws/aws-cli/archive/${PV}.tar.gz - -> ${MY_P}.gh.tar.gz -" -S=${WORKDIR}/${MY_P} - -LICENSE="Apache-2.0" -SLOT="0" -KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86" - -# botocore is x.(y-1).z -BOTOCORE_PV="$(ver_cut 1).$(( $(ver_cut 2) - 1)).$(ver_cut 3-)" -RDEPEND=" - >=dev-python/botocore-${BOTOCORE_PV}[${PYTHON_USEDEP}] - dev-python/colorama[${PYTHON_USEDEP}] - dev-python/docutils[${PYTHON_USEDEP}] - dev-python/rsa[${PYTHON_USEDEP}] - >=dev-python/s3transfer-0.11.0[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - !app-admin/awscli-bin -" -BDEPEND=" - test? ( - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pytest-forked[${PYTHON_USEDEP}] - ) -" - -EPYTEST_XDIST=1 -distutils_enable_tests pytest - -src_prepare() { - # 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 - # strip overzealous upper bounds on requirements - sed -i -e 's:,<[0-9.]*::' -e 's:==:>=:' setup.py || die - distutils-r1_src_prepare -} - -python_test() { - local serial_tests=( - tests/functional/ecs/test_execute_command.py::TestExecuteCommand::test_execute_command_success - tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_{fails,success} - tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_with_new_version_plugin_success - tests/unit/customizations/codeartifact/test_adapter_login.py::TestDotNetLogin::test_login_dotnet_sources_listed_with_backtracking - tests/unit/customizations/codeartifact/test_adapter_login.py::TestDotNetLogin::test_login_dotnet_sources_listed_with_backtracking_windows - tests/unit/customizations/codeartifact/test_adapter_login.py::TestNuGetLogin::test_login_nuget_sources_listed_with_backtracking - tests/unit/customizations/ecs/test_executecommand_startsession.py::TestExecuteCommand::test_execute_command_success - tests/unit/customizations/test_sessionmanager.py - tests/unit/test_compat.py::TestIgnoreUserSignals - tests/unit/test_help.py - tests/unit/test_utils.py::TestIgnoreCtrlC::test_ctrl_c_is_ignored - ) - local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 - EPYTEST_XDIST= epytest "${serial_tests[@]}" - - local EPYTEST_DESELECT=( - "${serial_tests[@]}" - - # flaky (some ordering?) - tests/functional/s3/test_cp_command.py::TestCPCommand::test_multipart_upload_with_checksum_algorithm_crc32 - ) - # integration tests require AWS credentials and Internet access - epytest tests/{functional,unit} -} - -python_install_all() { - newbashcomp bin/aws_bash_completer aws - - insinto /usr/share/zsh/site-functions - newins bin/aws_zsh_completer.sh _aws - - distutils-r1_python_install_all - - rm "${ED}"/usr/bin/{aws.cmd,aws_bash_completer,aws_zsh_completer.sh} || die -} diff --git a/app-admin/awscli/awscli-1.37.20.ebuild b/app-admin/awscli/awscli-1.37.20.ebuild new file mode 100644 index 000000000000..4a8e0ae852e0 --- /dev/null +++ b/app-admin/awscli/awscli-1.37.20.ebuild @@ -0,0 +1,95 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..13} ) + +inherit bash-completion-r1 distutils-r1 + +MY_P=aws-cli-${PV} +DESCRIPTION="Universal Command Line Environment for AWS" +HOMEPAGE=" + https://github.com/aws/aws-cli/ + https://pypi.org/project/awscli/ +" +SRC_URI=" + https://github.com/aws/aws-cli/archive/${PV}.tar.gz + -> ${MY_P}.gh.tar.gz +" +S=${WORKDIR}/${MY_P} + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86" + +# botocore is x.(y-1).z +BOTOCORE_PV="$(ver_cut 1).$(( $(ver_cut 2) - 1)).$(ver_cut 3-)" +RDEPEND=" + >=dev-python/botocore-${BOTOCORE_PV}[${PYTHON_USEDEP}] + dev-python/colorama[${PYTHON_USEDEP}] + dev-python/docutils[${PYTHON_USEDEP}] + dev-python/rsa[${PYTHON_USEDEP}] + >=dev-python/s3transfer-0.11.0[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + !app-admin/awscli-bin +" +BDEPEND=" + test? ( + dev-python/packaging[${PYTHON_USEDEP}] + dev-python/pytest-forked[${PYTHON_USEDEP}] + ) +" + +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_prepare() { + # 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 + # strip overzealous upper bounds on requirements + sed -i -e 's:,<[0-9.]*::' -e 's:==:>=:' setup.py || die + distutils-r1_src_prepare +} + +python_test() { + local serial_tests=( + tests/functional/ecs/test_execute_command.py::TestExecuteCommand::test_execute_command_success + tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_{fails,success} + tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_with_new_version_plugin_success + tests/unit/customizations/codeartifact/test_adapter_login.py::TestDotNetLogin::test_login_dotnet_sources_listed_with_backtracking + tests/unit/customizations/codeartifact/test_adapter_login.py::TestDotNetLogin::test_login_dotnet_sources_listed_with_backtracking_windows + tests/unit/customizations/codeartifact/test_adapter_login.py::TestNuGetLogin::test_login_nuget_sources_listed_with_backtracking + tests/unit/customizations/ecs/test_executecommand_startsession.py::TestExecuteCommand::test_execute_command_success + tests/unit/customizations/test_sessionmanager.py + tests/unit/test_compat.py::TestIgnoreUserSignals + tests/unit/test_help.py + tests/unit/test_utils.py::TestIgnoreCtrlC::test_ctrl_c_is_ignored + ) + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + EPYTEST_XDIST= epytest "${serial_tests[@]}" + + local EPYTEST_DESELECT=( + "${serial_tests[@]}" + + # flaky (some ordering?) + tests/functional/s3/test_cp_command.py::TestCPCommand::test_multipart_upload_with_checksum_algorithm_crc32 + ) + # integration tests require AWS credentials and Internet access + epytest tests/{functional,unit} +} + +python_install_all() { + newbashcomp bin/aws_bash_completer aws + + insinto /usr/share/zsh/site-functions + newins bin/aws_zsh_completer.sh _aws + + distutils-r1_python_install_all + + rm "${ED}"/usr/bin/{aws.cmd,aws_bash_completer,aws_zsh_completer.sh} || die +} diff --git a/app-admin/awscli/awscli-1.37.6.ebuild b/app-admin/awscli/awscli-1.37.6.ebuild index 4a8e0ae852e0..2bb0ee1db5bd 100644 --- a/app-admin/awscli/awscli-1.37.6.ebuild +++ b/app-admin/awscli/awscli-1.37.6.ebuild @@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P} LICENSE="Apache-2.0" SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86" +KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86" # botocore is x.(y-1).z BOTOCORE_PV="$(ver_cut 1).$(( $(ver_cut 2) - 1)).$(ver_cut 3-)" diff --git a/app-admin/bitwarden-desktop-bin/Manifest b/app-admin/bitwarden-desktop-bin/Manifest index da26e7c02edb..d8a065ecf656 100644 --- a/app-admin/bitwarden-desktop-bin/Manifest +++ b/app-admin/bitwarden-desktop-bin/Manifest @@ -1,5 +1,7 @@ DIST Bitwarden-2024.12.0-amd64.deb 84480428 BLAKE2B 3cb771978fd2c0ded6bc79fee0beb23e187a0c2c69fe6213ea982929ffbc085155c147ff8729251f4a840bc871e33e5f7b07499d5a2cf4a16d1146e357a0d8f8 SHA512 649686f4cdd6269fabce9af8a1532ea343ac5cedf7a267818ea4ea173220d24d129019b31641bd98d61a3809a02562ce87b0738d842c53bdfa0374889ba69025 DIST Bitwarden-2025.1.1-amd64.deb 84562628 BLAKE2B 2f51e747992ff8c86f3b90fcef004b26b93cd4ae4f8d290d39d48044d2ef38f64049379f86cdbe5793af3a1267da7f3cd740f3e00ec29a799fdd18b6cc57f0d2 SHA512 ae85d71b84535196988b2a60918b04e5db0e1512c5405729664251534a3c44c34a7bb81a24548436fe78b3197bae50487fd50cf290e8da2016388f8fb0b125cc +DIST Bitwarden-2025.1.4-amd64.deb 84416978 BLAKE2B 4ded129bf6ca49142281968a3197f5e14955b783be6b7087c73e504564d267a71f5d7ecffd3902f003cbaa393396813861add7b253b8ad3b36945c65e2af24b6 SHA512 5f64aa8f36688705e7299d8d3399c80f6815a8e1133a39ec6e4b09ee908d78949e8d8a5ef09e38d6e824ae1d4356871ac3e0b997093186033ad604c1b63aca99 EBUILD bitwarden-desktop-bin-2024.12.0.ebuild 1787 BLAKE2B f29cb51f98a68d540a4008be21f1f16b605f432206cb99a798d768e08709ca135778708d35b8dbb0ca0778d594ae87c84546b3bb866cb2a953bdc32ffb64b818 SHA512 525f677a03d1602656d937612567acc043b5bff49a80a44fa74f8b759962d2d744ca32377b8905489060fcff4bcac1d4206489b14c0b96c8a7a1f03579b06b16 EBUILD bitwarden-desktop-bin-2025.1.1.ebuild 1787 BLAKE2B 978231d87de8dbae46d8af22dd4afda78b8fc08a5de4634c4b8a9de148d50cb42b0f2a3f734e4c8c264d0a8c00a8f436f52394840241a3fe29a66f520426a411 SHA512 7951b8cf0e16ae63db3e2ae64068a6de3de38145355496782c16be34d8200c30c2430b73e95d3cd62e4475b2c42b4978f94674f57366755dddbaf28e9dfddd77 +EBUILD bitwarden-desktop-bin-2025.1.4.ebuild 1787 BLAKE2B 978231d87de8dbae46d8af22dd4afda78b8fc08a5de4634c4b8a9de148d50cb42b0f2a3f734e4c8c264d0a8c00a8f436f52394840241a3fe29a66f520426a411 SHA512 7951b8cf0e16ae63db3e2ae64068a6de3de38145355496782c16be34d8200c30c2430b73e95d3cd62e4475b2c42b4978f94674f57366755dddbaf28e9dfddd77 MISC metadata.xml 323 BLAKE2B 3f1affe8fb7b242a0ea072faaebcccd37bf005ee68c7519857701c37fe6a11b0dffe1692af141b54218367ee8c8361cb0e6608621453d424d52b061b569563d1 SHA512 95ab28dcb844ac6d2ba4573699e86a4c303aa46b4c2eddf1273ecf37a3bbb751b9a478b535fbdcbc12424bc4f826b4b0781cfb8079e5563ed41f12ce68b35908 diff --git a/app-admin/bitwarden-desktop-bin/bitwarden-desktop-bin-2025.1.4.ebuild b/app-admin/bitwarden-desktop-bin/bitwarden-desktop-bin-2025.1.4.ebuild new file mode 100644 index 000000000000..574698433c27 --- /dev/null +++ b/app-admin/bitwarden-desktop-bin/bitwarden-desktop-bin-2025.1.4.ebuild @@ -0,0 +1,89 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop unpacker xdg-utils + +DESCRIPTION="Bitwarden password manager desktop client" +HOMEPAGE="https://bitwarden.com/" +SRC_URI="https://github.com/bitwarden/clients/releases/download/desktop-v${PV}/Bitwarden-${PV}-amd64.deb" +S="${WORKDIR}" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64" + +RDEPEND=" + >=app-accessibility/at-spi2-core-2.46.0:2 + app-crypt/libsecret + dev-libs/expat + dev-libs/glib + dev-libs/nspr + dev-libs/nss + dev-libs/wayland + media-libs/alsa-lib + media-libs/mesa + net-print/cups + sys-apps/dbus + sys-apps/util-linux + sys-libs/glibc + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3 + x11-libs/libdrm + x11-libs/libX11 + x11-libs/libxcb + x11-libs/libXcomposite + x11-libs/libXcursor + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXi + x11-libs/libxkbcommon + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXScrnSaver + x11-libs/libxshmfence + x11-libs/libXtst + x11-libs/pango +" +IDEPEND=" + dev-util/desktop-file-utils + dev-util/gtk-update-icon-cache +" + +QA_PREBUILT=" + opt/Bitwarden/*.so* + opt/Bitwarden/bitwarden + opt/Bitwarden/bitwarden-app + opt/Bitwarden/chrome-sandbox + opt/Bitwarden/chrome_crashpad_handler +" + +src_install() { + insinto /opt + doins -r opt/Bitwarden + fperms 755 /opt/Bitwarden/bitwarden \ + /opt/Bitwarden/bitwarden-app + fperms 4755 /opt/Bitwarden/chrome-sandbox + + domenu usr/share/applications/bitwarden.desktop + + local x + for x in 16 32 64 128 256 512; do + doicon -s ${x} usr/share/icons/hicolor/${x}*/* + done + + dosym -r "/opt/Bitwarden/bitwarden" "usr/bin/${PN}" +} + +pkg_postinst() { + xdg_desktop_database_update + xdg_icon_cache_update +} + +pkg_postrm() { + xdg_desktop_database_update + xdg_icon_cache_update +} diff --git a/app-admin/conky/Manifest b/app-admin/conky/Manifest index 258165564ed1..586c45527a4d 100644 --- a/app-admin/conky/Manifest +++ b/app-admin/conky/Manifest @@ -1,7 +1,5 @@ DIST conky-1.21.7.tar.gz 1961997 BLAKE2B 80ca17e0d1065655c410d8108668b3f09df574b761d57e374a2d51c946b51bd1ce4d29d320def0a197d465401cb4a665fb84a394406611903877c0acf42b4ad3 SHA512 52b6621e3e693654610ebd1b9e1adbeaec2ae2a2aaed4b038882a6825e6573f4afdea85f9156e1ffaa5999e30b3b05170b6b101f415980f0edab5c85151e9e6c -DIST conky-1.21.9.tar.gz 1966277 BLAKE2B 90735ab5e4a42f31ccc12c27fa7a5ca35c6c6cc93d97a06d33f37ee7f1300e7c4546ed34f348338661c8efe7a598b32564977ded2f28dc48a0133696031fee69 SHA512 649b7cb2ab482bae33010239ee96deb08a5f3b6954e55e6380f45d753a7690ac446f4471682e293b25f94c3c68e7d5373f5b63a42fec69392e34c4336c6f1b96 DIST conky-1.22.0.tar.gz 2030830 BLAKE2B b262b76fac24d74db0fe099e6e1c54be463d9453c5e9bcb9de33beeccda9e7b063287c189018f673bf0fc1d46029de9ac4f6c333c579b3f7fc86e2a7866e761e SHA512 df110bbec225127b6b9e2cb8998a21d99beb00225c7df6a6d35d6758135c8882d3e06c796f5c94eec7653da73af32f7a87ae631755b0e715306799f89de63cdd EBUILD conky-1.21.7.ebuild 6191 BLAKE2B 73e7886b22f926d38e91a5df4963f6a516fd79cd01dcd7dc88b432e9b4301d00b49f3448200c14ee03420bffcee24b966cdf54fbcabd013917a44ad56174e9f6 SHA512 db3bca80c15821fc298092144e2898a2d048a18281d780df6c9f5c7d2a387af5db295da7cc406fdffd7acfde38ceb8d4a89191bd3ed7c6112c52981c1eff4fd7 -EBUILD conky-1.21.9.ebuild 6195 BLAKE2B 1699bcadd7599c8a344a3ad12b329abbfd099cb3e1a47616b3639ff3f44f0430c77055bc6b49b05b110f563af1e7a4cd7973c00f69a4125bc4d5df5cee7b3456 SHA512 770140c4808a1ec0031c4278340606dd03a1d7cd60cb84f6c152b177509d5e0a57b0fab1b69679303b9a9ea1c3210bac59086fdb4bbc275cdd32abaf327a0a7d -EBUILD conky-1.22.0.ebuild 6193 BLAKE2B 121e23a4eb7ba66f96f23526a965c9cb7f8b6c7734aa6c0b742903e1c8be2661e7bc2d7149c32e5e9841a2ff0a556a7d15f4134232a98bd34e918f13d12c635f SHA512 854c19d40d17d9fc4949cb448ffc7e321a0e751e0e0e660dee7533cd2c7e20fde39e5f95df217dc35161d667043f8e68adcf2e6ce8695f5f4e24b573ffbc15e4 +EBUILD conky-1.22.0.ebuild 6190 BLAKE2B 406bb475ed1a912d5bad442e21b8b6b00a8ddd4aed931d00227201e281fa700bcf3b40a735bacd3de047b6848761ea6ff67a94df16e85ca5268d2cf3cc1854f7 SHA512 dfcb5a294ed706d892cfb96de56920bbbf0ed30df968777f11423728f7742ce327c938e347cc92f53564fc8810e545c5fae53433c178d72349c7a1059ad9e5f6 MISC metadata.xml 2706 BLAKE2B ccd856ef7d804a1d4cea72124dc575dc3b94b6cad0b98b4bff8248f70f84b1705d862a58b0c98d1a67ea17c412e7d967a32d31678e8b51d5234c215d54389a57 SHA512 65bd968350ff45ed491a2cc36bb7d5640e38f3a4b4a0e0e3fe22d4e74563c2bf2a3d9f3cd9f3c67a0e9f8b756c387f72fcf8581c6876941112470f7f04e47ddf diff --git a/app-admin/conky/conky-1.21.9.ebuild b/app-admin/conky/conky-1.21.9.ebuild deleted file mode 100644 index 9598436ba46d..000000000000 --- a/app-admin/conky/conky-1.21.9.ebuild +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LUA_COMPAT=( lua5-4 ) -PYTHON_COMPAT=( python3_{10,11,12} ) - -inherit cmake linux-info lua-single python-any-r1 readme.gentoo-r1 xdg - -DESCRIPTION="An advanced, highly configurable system monitor for X" -HOMEPAGE="https://github.com/brndnmtthws/conky" -SRC_URI="https://github.com/brndnmtthws/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="GPL-3 BSD LGPL-2.1 MIT" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86" -IUSE="apcupsd bundled-toluapp cmus colour-name-map curl doc extras hddtemp ical - iconv imlib intel-backlight iostats irc lua-cairo lua-cairo-xlib - lua-imlib lua-rsvg math moc mouse-events mpd mysql ncurses nvidia - +portmon pulseaudio rss systemd test thinkpad truetype wayland webserver - wifi X xinerama xinput xmms2" -RESTRICT="!test? ( test )" - -# Note: toluapp is bundled in conky since 1.11.2 -# Note: maintainer mode "-DMAINTAINER_MODE=yes" sets CMAKE_BUILD_TYPE Debug -# which creates debug symbols and enables "-DBUILD_TESTS" which also -# results in conky_core debug library getting installed - -COMMON_DEPEND=" - curl? ( net-misc/curl ) - ical? ( dev-libs/libical:= ) - iconv? ( virtual/libiconv ) - imlib? ( >=media-libs/imlib2-1.11.0[X] ) - irc? ( net-libs/libircclient ) - lua-cairo? ( x11-libs/cairo[X?] ) - lua-cairo-xlib? ( x11-libs/cairo[X] ) - lua-imlib? ( >=media-libs/imlib2-1.11.0[X] ) - lua-rsvg? ( gnome-base/librsvg ) - mysql? ( dev-db/mysql-connector-c ) - ncurses? ( sys-libs/ncurses:= ) - nvidia? ( x11-drivers/nvidia-drivers[tools,static-libs] ) - pulseaudio? ( media-libs/libpulse ) - rss? ( - dev-libs/libxml2 - dev-libs/glib:2 - ) - systemd? ( sys-apps/systemd ) - truetype? ( - x11-libs/libXft - >=media-libs/freetype-2 - ) - wayland? ( - dev-libs/wayland - x11-libs/pango - ) - wifi? ( net-wireless/wireless-tools ) - webserver? ( net-libs/libmicrohttpd:= ) - X? ( - x11-libs/libXdamage - x11-libs/libXfixes - x11-libs/libXext - x11-libs/libXi - x11-libs/libX11 - ) - xinerama? ( x11-libs/libXinerama ) - xmms2? ( media-sound/xmms2 ) - ${LUA_DEPS} -" -RDEPEND=" - ${COMMON_DEPEND} - apcupsd? ( sys-power/apcupsd ) - cmus? ( media-sound/cmus ) - hddtemp? ( app-admin/hddtemp ) - moc? ( media-sound/moc ) -" -DEPEND=" - ${COMMON_DEPEND} - test? ( - dev-cpp/catch - ) - wayland? ( - dev-libs/wayland-protocols - ) -" -BDEPEND=" - colour-name-map? ( - dev-util/gperf - ) - doc? ( - virtual/pandoc - $(python_gen_any_dep ' - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/jinja2[${PYTHON_USEDEP}] - ') - ) - extras? ( - $(python_gen_any_dep ' - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/jinja2[${PYTHON_USEDEP}] - ') - ) - wayland? ( dev-util/wayland-scanner ) -" - -python_check_deps() { - use doc || use extras || return 0 - python_has_version -b "dev-python/pyyaml[${PYTHON_USEDEP}]" && - python_has_version -b "dev-python/jinja2[${PYTHON_USEDEP}]" -} - -REQUIRED_USE=" - ${LUA_REQUIRED_USE} - imlib? ( X ) - lua-cairo? ( || ( X wayland ) bundled-toluapp ) - lua-cairo-xlib? ( X bundled-toluapp ) - lua-imlib? ( X bundled-toluapp ) - lua-rsvg? ( || ( X wayland ) bundled-toluapp ) - mouse-events? ( X wayland ) - nvidia? ( X ) - rss? ( curl ) - truetype? ( X ) - xinerama? ( X ) - xinput? ( X ) -" - -CONFIG_CHECK="~IPV6" - -DOCS=( README.md AUTHORS ) - -DISABLE_AUTOFORMATTING="yes" -DOC_CONTENTS="You can find sample configurations at /usr/share/doc/${PF}. -To customize, copy to \${XDG_CONFIG_HOME}/conky/conky.conf and edit it to your liking. - -There are pretty html docs available at https://conky.cc/. - -Also see https://github.com/brndnmtthws/conky/wiki or https://wiki.gentoo.org/wiki/Conky" - -pkg_setup() { - linux-info_pkg_setup - lua-single_pkg_setup - if use doc || use extras; then - python-any-r1_pkg_setup - fi -} - -src_prepare() { - # pin lua 5.4 - sed -i -e 's|Lua "5.3" REQUIRED|Lua "5.4" EXACT|g' \ - cmake/ConkyPlatformChecks.cmake || die "ConkyPlatformChecks.cmake" - - cmake_src_prepare - xdg_environment_reset -} - -src_configure() { - local mycmakeargs=() - - if use X; then - mycmakeargs+=( - -DOWN_WINDOW=yes - -DBUILD_XDAMAGE=yes - -DBUILD_XFIXES=yes - -DBUILD_ARGB=yes - -DBUILD_XDBE=yes - -DBUILD_XSHAPE=yes - -DBUILD_X11=yes - ) - else - mycmakeargs+=( - -DBUILD_X11=no - ) - fi - - mycmakeargs+=( - -DBUILD_APCUPSD=$(usex apcupsd) - -DBUILD_AUDACIOUS=no - -DBUILD_BUILTIN_CONFIG=yes - -DBUILD_CMUS=$(usex cmus) - -DBUILD_COLOUR_NAME_MAP=$(usex colour-name-map) - -DBUILD_CURL=$(usex curl) - -DBUILD_DOCS=$(usex doc) - -DBUILD_EXTRAS=$(usex extras) - -DBUILD_HDDTEMP=$(usex hddtemp) - -DBUILD_HTTP=$(usex webserver) - -DBUILD_I18N=yes - -DBUILD_IBM=$(usex thinkpad) - -DBUILD_ICAL=$(usex ical) - -DBUILD_ICONV=$(usex iconv) - -DBUILD_IMLIB2=$(usex imlib) - -DBUILD_INTEL_BACKLIGHT=$(usex intel-backlight) - -DBUILD_IOSTATS=$(usex iostats) - -DBUILD_IPV6=yes - -DBUILD_IRC=$(usex irc) - -DBUILD_JOURNAL=$(usex systemd) - -DBUILD_LUA_CAIRO=$(usex lua-cairo) - -DBUILD_LUA_CAIRO_XLIB=$(usex lua-cairo-xlib) - -DBUILD_LUA_IMLIB2=$(usex lua-imlib) - -DBUILD_LUA_RSVG=$(usex lua-rsvg) - -DBUILD_MATH=$(usex math) - -DBUILD_MOC=$(usex moc) - -DBUILD_MOUSE_EVENTS=$(usex mouse-events) - -DBUILD_MPD=$(usex mpd) - -DBUILD_MYSQL=$(usex mysql) - -DBUILD_NCURSES=$(usex ncurses) - -DBUILD_NVIDIA=$(usex nvidia) - -DBUILD_OLD_CONFIG=yes - -DBUILD_PORT_MONITORS=$(usex portmon) - -DBUILD_PULSEAUDIO=$(usex pulseaudio) - -DBUILD_RSS=$(usex rss) - -DBUILD_TESTS=$(usex test) - -DBUILD_WAYLAND=$(usex wayland) - -DBUILD_WLAN=$(usex wifi) - -DBUILD_XFT=$(usex truetype) - -DBUILD_XINERAMA=$(usex xinerama) - -DBUILD_XINPUT=$(usex xinput) - -DBUILD_XMMS2=$(usex xmms2) - -DDOC_PATH=/usr/share/doc/${PF} - -DMAINTAINER_MODE=no - -DRELEASE=yes - ) - - if use doc || use extras; then - mycmakeargs+=( -DPython3_EXECUTABLE="${PYTHON}" ) - fi - - cmake_src_configure -} - -src_install() { - cmake_src_install - - if use extras; then - insinto /usr/share/vim/vimfiles/ftdetect - doins "${S}"/extras/vim/ftdetect/conkyrc.vim - - insinto /usr/share/vim/vimfiles/syntax - doins "${BUILD_DIR}"/extras/vim/syntax/conkyrc.vim - - insinto /usr/share/nano/ - doins "${BUILD_DIR}"/extras/nano/conky.nanorc - fi - - readme.gentoo_create_doc -} - -pkg_postinst() { - readme.gentoo_print_elog - - xdg_pkg_postinst -} diff --git a/app-admin/conky/conky-1.22.0.ebuild b/app-admin/conky/conky-1.22.0.ebuild index 3d106fec1f7d..8b0c49ed4571 100644 --- a/app-admin/conky/conky-1.22.0.ebuild +++ b/app-admin/conky/conky-1.22.0.ebuild @@ -14,7 +14,7 @@ SRC_URI="https://github.com/brndnmtthws/${PN}/archive/v${PV}.tar.gz -> ${P}.tar. LICENSE="GPL-3 BSD LGPL-2.1 MIT" SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86" +KEYWORDS="~alpha amd64 ~arm ~arm64 ~ppc ppc64 ~riscv ~sparc x86" IUSE="apcupsd bundled-toluapp cmus colour-name-map curl doc extras hddtemp ical iconv imlib intel-backlight iostats irc lua-cairo lua-cairo-xlib lua-imlib lua-rsvg math moc mouse-events mpd mysql ncurses nvidia diff --git a/app-admin/entr/Manifest b/app-admin/entr/Manifest index 0d4c83b4810d..14de68e9a95e 100644 --- a/app-admin/entr/Manifest +++ b/app-admin/entr/Manifest @@ -1,3 +1,5 @@ DIST entr-5.6.tar.gz 23370 BLAKE2B 52b2e2d49d550c7ba82199cc70500598c50809136bc9bed881174ab59806802ac09cf7ff32f0476eeb66ee9fdb87bef72dbf28bfd4495f0301ee80809800dbfa SHA512 9c65449b6fd7e172fde23a6d4d776b6fdbcec210ef54234db0af056e481acd11f53f9b25432a278435943bd998be734fcd997b5debdcace58112ac99d103f653 +DIST entr-5.7.tar.gz 23587 BLAKE2B 497ac54042fd6d54f7c0f4401e2038d1f0f8e55277efb54389cd9c9635d2caf77e80d042456ac06cfe937ec88111cdebaaf8f6133cdddadcdb65d11442b9fe82 SHA512 a267fdc3a9aeb84823e14167a7aed32d682d200e72409f896e95aea3cb22e5185e1ee1c49726435d66953baae6444d49111e0c6a0af66895bdef0fccd3320446 EBUILD entr-5.6.ebuild 711 BLAKE2B 78753c2decd36ba0eac8f1f479c1cd357c929dfba1e02f26b4e7efe1b10b30a1067fbb84076968a4668e745d0f83c45ec5dfc48b1d125266adcd9ce64113eeb7 SHA512 e29ea3a0a3d949e35350905f1008ab1314ed69ba654dce1da9871be14dba5a646a0b0ae089c43c1dc9055f11b677752552da4efddb29c2ff6ac250cb7c8ff26b +EBUILD entr-5.7.ebuild 717 BLAKE2B c943fa308c023ee30288efc55f06e9af80b9c5060235c7a3e3426cdbb575f95e2a04fe4b229179da6770f0a69f3b69a6f778734ebc7354da83134d715a85d5f4 SHA512 9c84baf02a91fec8aa4612f7dc20b2f0001beb4a30023b1c1cd8468cbfac3435edba45038597b9609e4a6077b5af8029da881a46dc6bc1a2db2dea6e1774870a MISC metadata.xml 449 BLAKE2B 5a03f1f771985a3877ad95b143ae9959ed2850170880fe4af3b4319e50248faa99e11b8fdc9d59e608f398b8c93efcd2b7a15612df5a516256e8e6dfb61452c8 SHA512 4b6d9eb9a9bb61185b3da9ec12cf9584a26daa3cab3bcfaabcad057dd08cace027f348e4e2600dc306eae23be71c894bec7426ca872b1f7a0d341664bcb53721 diff --git a/app-admin/entr/entr-5.7.ebuild b/app-admin/entr/entr-5.7.ebuild new file mode 100644 index 000000000000..7a4e050a9262 --- /dev/null +++ b/app-admin/entr/entr-5.7.ebuild @@ -0,0 +1,38 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit edo toolchain-funcs + +DESCRIPTION="Run arbitrary commands when files change" +HOMEPAGE=" + https://eradman.com/entrproject/ + https://github.com/eradman/entr +" +SRC_URI="https://eradman.com/entrproject/code/${P}.tar.gz" + +LICENSE="ISC" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +BDEPEND=" + test? ( + app-alternatives/awk[gawk] + app-editors/vim + app-misc/tmux + dev-vcs/git + sys-apps/file + ) +" + +src_configure() { + tc-export CC + export PREFIX="${EPREFIX}/usr" + export SHELL="${BROOT}/bin/bash" + export TMUX_TMPDIR="${T}" + + edo ./configure +} diff --git a/app-admin/kio-admin/Manifest b/app-admin/kio-admin/Manifest index f749efda1de4..89f8db79c5ea 100644 --- a/app-admin/kio-admin/Manifest +++ b/app-admin/kio-admin/Manifest @@ -1,7 +1,5 @@ DIST kio-admin-24.08.3.tar.xz 38688 BLAKE2B ededa0da867c76e45efec80d60e8f4c720fe7fa663d574dd910a35d5f7b77e8b8b5d23f0322b2f635dc34f7318351400e9c9f9e032f014a68ec3ecbf86f4054b SHA512 d357ce492798cbcc1f91933c0ded5c3d1c80c9fdb9d53a7e9c98038cf87825ccc10608c763e66b46410508d9afb52a9f93623e4dcad647657d0c5237395dc1b1 -DIST kio-admin-24.12.1.tar.xz 39084 BLAKE2B 1c3339c46a49781ed4d315121e8b9523f219b423159cd11be22161da92689d3d49e6176e270bb8aeaa13ac1dc9d76cb35849ddd5366ca28189259764d92772dc SHA512 dcae417fe3befff12ac575d5830c3c8944ba3cfe84042c4e8dd60c7936e496f83cade3e718651b955d507f9a9e5e9466918d406db179a236e742d4749d7e8fdd DIST kio-admin-24.12.2.tar.xz 39088 BLAKE2B 1020d07b5e4934b704c956cc3e0d2b8f6a0b46aec517b7ceb030f467c6ca6933c01c66b90f711e73f1c9e42c11e106208cda226f407a5676381bcc771d0be86d SHA512 010ffe6bb88fc12d53fcdc0720a77ac2fe83565a3696992cce5bfce35b6f76deac3dca31e396ce7ca6ec6d7873033eaf79e1eb83dc03b124f76c0f13bc850643 EBUILD kio-admin-24.08.3.ebuild 631 BLAKE2B bad00771285e4dcdf8cfca569aff1aacdcf4a9fdfdb9b070cb81c844b38139013928409f07f669357b84d3a68365defe372bd00f87b8f8a2b20eda073b39c2ec SHA512 aeafb9a9a1f29a07142018fb785d7cbc945df6cc311784529a1871836bd2ecb94c5b9a82960850710fea601742e6c8932698625c919f5c1152677863ad3b5387 -EBUILD kio-admin-24.12.1.ebuild 640 BLAKE2B 91e6df318042493471265de28c1f153c08f0af50cbdbe008dce9274f0fecb6f4d8be4cec39424ba36e0c7137fcf95233f283381fafb45956e1ae94d7b971712b SHA512 e66923f94be9def9acc94c3d8955f2864720c43a1d2ed396072dd07c19e53cfed9f61f41dd931bc74d17fbb2fa51e66004e9c71f7817080eac10b6448bc2ba7c EBUILD kio-admin-24.12.2.ebuild 640 BLAKE2B 91e6df318042493471265de28c1f153c08f0af50cbdbe008dce9274f0fecb6f4d8be4cec39424ba36e0c7137fcf95233f283381fafb45956e1ae94d7b971712b SHA512 e66923f94be9def9acc94c3d8955f2864720c43a1d2ed396072dd07c19e53cfed9f61f41dd931bc74d17fbb2fa51e66004e9c71f7817080eac10b6448bc2ba7c MISC metadata.xml 409 BLAKE2B 806cca01eabcbaa961a219c8df865253d5eb4aac6f2d80a08715606ec9ac883990b8ce2ace14b53c47a81f4b061cdc489490c6d8bf8cf2dc53e16027675b1f12 SHA512 d3f45492aab35f8938f1ad59bb40a49a554e0da3fd530ff2d478911f323ad92badeabccae3c32f7256cd140cb3caac9d2bdb3e762becc2be1d0bb012e735c5a8 diff --git a/app-admin/kio-admin/kio-admin-24.12.1.ebuild b/app-admin/kio-admin/kio-admin-24.12.1.ebuild deleted file mode 100644 index f952f5f81dfb..000000000000 --- a/app-admin/kio-admin/kio-admin-24.12.1.ebuild +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2024-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -KDE_ORG_CATEGORY="system" -KFMIN=6.7.0 -QTMIN=6.7.2 -inherit ecm gear.kde.org - -DESCRIPTION="Manage files as administrator using the admin:// KIO protocol" -HOMEPAGE="https://invent.kde.org/system/kio-admin" - -LICENSE="BSD CC0-1.0 FSFAP GPL-2 GPL-3" -SLOT="6" -KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" - -DEPEND=" - >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,widgets] - >=kde-frameworks/kcoreaddons-${KFMIN}:6 - >=kde-frameworks/ki18n-${KFMIN}:6 - >=kde-frameworks/kio-${KFMIN}:6 - >=sys-auth/polkit-qt-0.175[qt6(+)] -" -RDEPEND="${DEPEND}" diff --git a/app-admin/linode-cli/Manifest b/app-admin/linode-cli/Manifest index 454718969f40..e02c9f477b1b 100644 --- a/app-admin/linode-cli/Manifest +++ b/app-admin/linode-cli/Manifest @@ -1,9 +1,5 @@ -DIST linode_cli-5.54.0.tar.gz 153961 BLAKE2B ae147c7c29532d53e8230e8374acb5727791f07f3177720637d7b23d1169821b2a65975b6e22f45bb53f69d241525ecb081a18f854d3d904da9de406f27f146f SHA512 7cad0e899ebced5c27923f4b8ea6fc4c854f90f7925ff5e8e010565ec51f20c75976a0efacfebceb78c4befa0e64ea0a2c896bb82f541903413fe96c8b0c68e1 -DIST linode_cli-5.55.0.tar.gz 159746 BLAKE2B 1ef914ec316bebb40961f075c528d8311c21030bcc643e45e18e187cce8d52f2a79629be7482778e5f0061c3db143685b5899e7e0c563f0565bbad3390dc3783 SHA512 37b88fbdbc66a6057a3b50379928d7f0547136aa8d068109b2dd3d2c6969698598a26c84b1f7494952795dc52a7ab05e2240680d86e88c85007df1e53445052d -DIST linode_cli-5.56.0.tar.gz 160792 BLAKE2B 25d2099d0363e699444245a939ede518530f1dda63a063db74b34650f7f7d76cf1f0d630cc01ca6dbeaed659a10f1429792d06615db4f773669234267f608d24 SHA512 5f3b075479a00b3d8c210c98040029bf44b10dc505a711e373bab49b53556a4ae4d26799a998c0354b562bfa1bbdbfa6d4b965c52d8c9bd57fae8d3c1eb27e72 DIST linode_cli-5.56.1.tar.gz 161059 BLAKE2B 20c0f3de96dd40745265a42b0c9736b6aa59915247170e84624eb21c097306e33c592b730687b11e7e5cdf795f0b313aadc45fd72af72d1e5f76256cea79d4dd SHA512 f711ca0756d4ca0d84c769c4ab5cad747efb3e3e256f484ebb9a44686218fd912d3df7538d03c3e447b16a215c8ca304ec2060562a66a2744128f85e6a1fa2a2 -EBUILD linode-cli-5.54.0.ebuild 1338 BLAKE2B 8cdcd6d7ad933ac3ee00ad19a9f900961de75404b4e9b36f8043cca9e76e6db846c1ec4a9490901edd15cba501fcf9671a808444f144962b63574c60281343cd SHA512 396a0108dfddab2e2c5ba57caec6d599d3723807cce301a2545415f0e0c625e6f0c0e846b2b243bba459695928c360c35ed04ea027ac236c450530458c6893d9 -EBUILD linode-cli-5.55.0.ebuild 1338 BLAKE2B 8cdcd6d7ad933ac3ee00ad19a9f900961de75404b4e9b36f8043cca9e76e6db846c1ec4a9490901edd15cba501fcf9671a808444f144962b63574c60281343cd SHA512 396a0108dfddab2e2c5ba57caec6d599d3723807cce301a2545415f0e0c625e6f0c0e846b2b243bba459695928c360c35ed04ea027ac236c450530458c6893d9 -EBUILD linode-cli-5.56.0.ebuild 1338 BLAKE2B be1fab9cdec25c42418e83f0247f5fb926486643e78cf6cb3c2e4c2ad3030fac672ebeb7bce3bfc6b86ad8d08aa9b1deb597ce166390953c56cb07b8ae3e1f2a SHA512 65b66bfe07cf7f17711a8c29dd3dc91fab6b3af3b4b7219200e7dbc6f0030feabd7afc21d12f5f37824b2dfd72538fb4499e677380a04f6ed3c3ed7cad23c32e +DIST linode_cli-5.56.2.tar.gz 161397 BLAKE2B 0cb43fdb4a9d722466d97b093495879ef114542ce39f4dd93be086ff4b1436ce354a01ffe5c6e865a8ffea564b60767e54a960a42fcb639384e61f21b5e11b4a SHA512 1e5234eb4ac962d5255d3b3809dbe00d3803e374b16cd1c590668c985ef032b96745f361172e96ad8b4e434ad2963174ec702497e753ba0a346074966df6f510 EBUILD linode-cli-5.56.1.ebuild 1338 BLAKE2B be1fab9cdec25c42418e83f0247f5fb926486643e78cf6cb3c2e4c2ad3030fac672ebeb7bce3bfc6b86ad8d08aa9b1deb597ce166390953c56cb07b8ae3e1f2a SHA512 65b66bfe07cf7f17711a8c29dd3dc91fab6b3af3b4b7219200e7dbc6f0030feabd7afc21d12f5f37824b2dfd72538fb4499e677380a04f6ed3c3ed7cad23c32e +EBUILD linode-cli-5.56.2.ebuild 1345 BLAKE2B 82595a8b6352f8045f8cc6cc3470c9a03be52cb4555c390ad813398b12d2d198925594e6500fdfbbf23e6eb0e6b04e2fef5569ec1e3192f6d2f8393b1915b273 SHA512 bc3c2f4051fd3b62c4de2622e52c9773d63e0db621c3dbe11172f185b4a218b2af10ba0459261e99850eb9fca5783d10b02540fa969d9a0b33e1d91f1b67511e MISC metadata.xml 483 BLAKE2B 7b3a4b824e16ba32424777359d0daf09d17cc498a06f9ce5acfd7baec80ffea26220145676f37edfe46302257fd0a2bc5071d60f955dc19cda582419b2027f5c SHA512 33c8fae2235a7a6d2653a4db3341b2d69e390ed6dfa33868dd7e6b3a384f78013ae3c42a91d8eddd25929086f7705ce0869a34e28eedadb497e286ae59570be4 diff --git a/app-admin/linode-cli/linode-cli-5.54.0.ebuild b/app-admin/linode-cli/linode-cli-5.54.0.ebuild deleted file mode 100644 index 21d1ca44d811..000000000000 --- a/app-admin/linode-cli/linode-cli-5.54.0.ebuild +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..12} ) -DISTUTILS_USE_PEP517=setuptools -inherit distutils-r1 pypi shell-completion - -DESCRIPTION="Official command-line interface for interacting with the Linode API" -HOMEPAGE="https://github.com/linode/linode-cli https://www.linode.com/" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="~amd64" - -# Tests require network, a linode account and an API key. -# WARNING: tests will incur costs and will wipe the account. -RESTRICT="test" - -RDEPEND=" - dev-python/boto3[${PYTHON_USEDEP}] - >=dev-python/linode-metadata-0.3[${PYTHON_USEDEP}] - dev-python/openapi3[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - dev-python/rich[${PYTHON_USEDEP}] - "${T}/${PN}".bash || die - PYTHONPATH=. ${EPYTHON} linodecli completion fish > "${T}/${PN}".fish || die - - newbashcomp "${T}/${PN}".bash ${PN} - newfishcomp "${T}/${PN}".fish ${PN} - - dosym ${PN} "$(get_bashcompdir)"/linode - dosym ${PN} "$(get_bashcompdir)"/lin - dosym ${PN} "$(get_fishcompdir)"/linode - dosym ${PN} "$(get_fishcompdir)"/lin -} diff --git a/app-admin/linode-cli/linode-cli-5.55.0.ebuild b/app-admin/linode-cli/linode-cli-5.55.0.ebuild deleted file mode 100644 index 21d1ca44d811..000000000000 --- a/app-admin/linode-cli/linode-cli-5.55.0.ebuild +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..12} ) -DISTUTILS_USE_PEP517=setuptools -inherit distutils-r1 pypi shell-completion - -DESCRIPTION="Official command-line interface for interacting with the Linode API" -HOMEPAGE="https://github.com/linode/linode-cli https://www.linode.com/" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="~amd64" - -# Tests require network, a linode account and an API key. -# WARNING: tests will incur costs and will wipe the account. -RESTRICT="test" - -RDEPEND=" - dev-python/boto3[${PYTHON_USEDEP}] - >=dev-python/linode-metadata-0.3[${PYTHON_USEDEP}] - dev-python/openapi3[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - dev-python/rich[${PYTHON_USEDEP}] - "${T}/${PN}".bash || die - PYTHONPATH=. ${EPYTHON} linodecli completion fish > "${T}/${PN}".fish || die - - newbashcomp "${T}/${PN}".bash ${PN} - newfishcomp "${T}/${PN}".fish ${PN} - - dosym ${PN} "$(get_bashcompdir)"/linode - dosym ${PN} "$(get_bashcompdir)"/lin - dosym ${PN} "$(get_fishcompdir)"/linode - dosym ${PN} "$(get_fishcompdir)"/lin -} diff --git a/app-admin/linode-cli/linode-cli-5.56.0.ebuild b/app-admin/linode-cli/linode-cli-5.56.0.ebuild deleted file mode 100644 index 1353a61b0c36..000000000000 --- a/app-admin/linode-cli/linode-cli-5.56.0.ebuild +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2023-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..13} ) -DISTUTILS_USE_PEP517=setuptools -inherit distutils-r1 pypi shell-completion - -DESCRIPTION="Official command-line interface for interacting with the Linode API" -HOMEPAGE="https://github.com/linode/linode-cli https://www.linode.com/" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="~amd64" - -# Tests require network, a linode account and an API key. -# WARNING: tests will incur costs and will wipe the account. -RESTRICT="test" - -RDEPEND=" - dev-python/boto3[${PYTHON_USEDEP}] - >=dev-python/linode-metadata-0.3[${PYTHON_USEDEP}] - dev-python/openapi3[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - dev-python/rich[${PYTHON_USEDEP}] - "${T}/${PN}".bash || die - PYTHONPATH=. ${EPYTHON} linodecli completion fish > "${T}/${PN}".fish || die - - newbashcomp "${T}/${PN}".bash ${PN} - newfishcomp "${T}/${PN}".fish ${PN} - - dosym ${PN} "$(get_bashcompdir)"/linode - dosym ${PN} "$(get_bashcompdir)"/lin - dosym ${PN} "$(get_fishcompdir)"/linode - dosym ${PN} "$(get_fishcompdir)"/lin -} diff --git a/app-admin/linode-cli/linode-cli-5.56.2.ebuild b/app-admin/linode-cli/linode-cli-5.56.2.ebuild new file mode 100644 index 000000000000..0263b0a8c3d6 --- /dev/null +++ b/app-admin/linode-cli/linode-cli-5.56.2.ebuild @@ -0,0 +1,45 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +DISTUTILS_USE_PEP517=setuptools +inherit distutils-r1 pypi shell-completion + +DESCRIPTION="Official command-line interface for interacting with the Linode API" +HOMEPAGE="https://github.com/linode/linode-cli https://www.linode.com/" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64" + +# Tests require network, a linode account and an API key. +# WARNING: tests will incur costs and will wipe the account. +RESTRICT="test" + +RDEPEND=" + >=dev-python/boto3-1.36[${PYTHON_USEDEP}] + >=dev-python/linode-metadata-0.3[${PYTHON_USEDEP}] + dev-python/openapi3[${PYTHON_USEDEP}] + dev-python/packaging[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + dev-python/rich[${PYTHON_USEDEP}] + "${T}/${PN}".bash || die + PYTHONPATH=. ${EPYTHON} linodecli completion fish > "${T}/${PN}".fish || die + + newbashcomp "${T}/${PN}".bash ${PN} + newfishcomp "${T}/${PN}".fish ${PN} + + dosym ${PN} "$(get_bashcompdir)"/linode + dosym ${PN} "$(get_bashcompdir)"/lin + dosym ${PN} "$(get_fishcompdir)"/linode + dosym ${PN} "$(get_fishcompdir)"/lin +} diff --git a/app-admin/logsurfer+/Manifest b/app-admin/logsurfer+/Manifest index a5f86424304d..f1840820ada3 100644 --- a/app-admin/logsurfer+/Manifest +++ b/app-admin/logsurfer+/Manifest @@ -1,6 +1,8 @@ +AUX logsurfer+-1.8-C23.patch 10569 BLAKE2B cb4393f699445396dbe8aeae0ac87f67ed2aa04e65fbf96e857cb6d79a28d5aee9c719d6f1dc510514186e38578bdfccbfe6857d3a749ba060b537f803a791e6 SHA512 47b25effdd8ddfddb4afa11a5f8b9b8e59e0ac0ef4db62c93e6d84dd0caca82a121627d3e637c173e1f5df7057865dae2036f0098b8386ace8c4b7863cbc47e0 AUX logsurfer+-1.8-fix-declaration-of-check_context_linelimit.patch 857 BLAKE2B e9840db3760acd7602dd77f187c2d13627f6083bf2a2cb37fbe9224115ec6a37c38dfce490ef4c1b1560645d92c8feeb6234a5b79b545bf9f5f9bfca3ca66853 SHA512 122b2932a4d48077b51271c012d43977d344e26c2c607c70df7c720edee2a186e4c5480e6b0d258e5874d9a797991c04bbe2186a622076e09958f87b81b8c704 AUX logsurfer-1.8.initd-r1 785 BLAKE2B c221acc6d565c6bef69e2b0e107d1d7e5b2fd03d7a645cbcf72b04ec903d3dd4fd031f3ba1f310b8cb0b6f1f8c936a1d3c605602a65682d09a3c4b86ced98f22 SHA512 dc02f6f317437adfe216992a0095912e73f9ad5abcbd2912bb4cdf0d71c4e0653eaeb14f3ff7164d20f1dee168c7b5352a3db96b9520a711e5f7ef04eca9e800 AUX logsurfer.confd 106 BLAKE2B 3b43cc5e0782c3b34dca3ae607cf38db2128d09a11770efc013501368483134a4e6741c14533dfd59b05cce06e5498ba3a1321c330fe43915f588c5fef4bd3d1 SHA512 872004ae1aedc3adb550da30ebc544ccbf11af5ad399bb9788a4db336138c3f5ec03c3704eaaa2cecb0559de6a2bcab9e96da062e6af9a6daa22afdec709a43a DIST logsurfer-1.8.tar.gz 197507 BLAKE2B caa824ef486d8f48f39e6e1309d2dbccace4e91910b94267d50ab9dc022371bade87c251d87c4818d900ce2a72141f2ac4d0b4cccf4b2850e594951c77df2c0e SHA512 975b1353d067cee3a47fb555013ad86cf404863bcd044a46a7b8314670613b89720e4c21ac9c1389f930be964e4694ee6863ce72e289054ffacf9c62565ffa30 EBUILD logsurfer+-1.8-r5.ebuild 905 BLAKE2B ff291253c74d5b573fcd066cae7d71b27ce966ed2de6d311fb8ec01b9689f5f51e75f52b733141077eb6b7195ac26d739e6706ce1202429d7264bbd29761b847 SHA512 68c1d5dfd07e4dc4951995f39660307badc96e6569698b68b3bc0252034085aeac0e8495c89d87d956a4d6a56aed904f80bb3f56e0ad4617b68f0866c5264514 +EBUILD logsurfer+-1.8-r6.ebuild 1023 BLAKE2B 0d21ee057e48e68d61f5748ea751ab626eab5a8bf6cc16bac07d61143d4a50abdd6481f929831b6f389d5efc27040a67e4e4bbf8163eff171af22bd69a615303 SHA512 55917465d02d194a0113486364b218edd1b8836127a1c9c5e55856f4b3f86662eb05475200e00d45f784d33dd52d99ba9365c7e0d7bbb3b1e078e946052126d5 MISC metadata.xml 247 BLAKE2B 227b2440b4cdea7b4d0363eb97d6a8c758713c69bbc7f9cf3a2b77bc42186357947aa93de72ac0243b9372e0d32c95542b111bc474cba1c81db6221855253220 SHA512 a3263cfc76fd2c6b8eafa54741e2d9baf3bbd492812588e1fdb1cd1277baeaf2136e1e291c2a7248699ec76c046f9074a45fab2515bb010532b6510bb56274f4 diff --git a/app-admin/logsurfer+/files/logsurfer+-1.8-C23.patch b/app-admin/logsurfer+/files/logsurfer+-1.8-C23.patch new file mode 100644 index 000000000000..dbef7cc1fdf1 --- /dev/null +++ b/app-admin/logsurfer+/files/logsurfer+-1.8-C23.patch @@ -0,0 +1,346 @@ +https://bugs.gentoo.org/905941 +Deal with consequences of autoreconf, let errors propagate +--- a/Makefile.in ++++ b/Makefile.in +@@ -92,28 +92,28 @@ + all install: Makefile config.h + for subdir in $(SUBDIRS); do \ + echo making $@ in $$subdir ; \ +- (cd $$subdir; $(MAKE) $(MDEFINES) $@); \ ++ $(MAKE) -C $$subdir $(MDEFINES) $@; \ + done + + clean: + for subdir in $(SUBDIRS); do \ + echo making $@ in $$subdir ; \ +- (cd $$subdir; $(MAKE) $@); \ ++ $(MAKE) -C $$subdir $@; \ + done + + distclean: + $(RM) Makefile config.h config.cache config.log config.status stamp-h + for subdir in $(SUBDIRS); do \ + echo making $@ in $$subdir ; \ +- (cd $$subdir; $(MAKE) $@); \ ++ $(MAKE) -C $$subdir $@; \ + done + +-${srcdir}/configure: configure.in ++${srcdir}/configure: configure.ac + cd ${srcdir} && autoconf + + # autoheader might not change config.h.in, so touch a stamp file. + ${srcdir}/config.h.in: stamp-h.in +-${srcdir}/stamp-h.in: configure.in ++${srcdir}/stamp-h.in: configure.ac + cd ${srcdir} && autoheader + echo timestamp > ${srcdir}/stamp-h.in + +Fix all implicit declarations by filling them and reordering +type definitions. Ought to be a header. +https://bugs.gentoo.org/943896 +--- a/exit.c ++++ b/src/exit.c +@@ -243,7 +243,7 @@ + * catch the dump signal, write a message and dump the state + */ + void +-dump_data() ++dump_data(int) + { + (void) fprintf(stderr, "dumping state to %s\n", dumpfile_name); + real_dump_data(); +@@ -307,8 +307,7 @@ + * exit the program... + */ + void +-logsurfer_exit(sig) +- int sig; ++logsurfer_exit(int sig) + /* ARGSUSED */ + { + struct context *this_context, *next_context; +@@ -322,7 +321,7 @@ + if (exit_silent) + real_dump_data(); + else +- dump_data(); ++ dump_data(sig); + + /* check for timeouts */ + if (!exit_silent) +--- a/exit.h ++++ b/src/exit.h +@@ -6,7 +6,7 @@ + + #if __STDC__ + +-void dump_data(); ++void dump_data(int); + void real_dump_data(); + void cleanup_memory(); + void logsurfer_exit(int); +--- a/regex.c ++++ b/src/regex.c +@@ -837,13 +837,46 @@ + "Unmatched ) or \\)", /* REG_ERPAREN */ + }; + ++ ++/* Since we have one byte reserved for the register number argument to ++ {start,stop}_memory, the maximum number of groups we can report ++ things about is what fits in that byte. */ ++#define MAX_REGNUM 255 ++ ++/* But patterns can have more than `MAX_REGNUM' registers. We just ++ ignore the excess. */ ++typedef unsigned regnum_t; ++ ++/* Since offsets can go either forwards or backwards, this type needs to ++ be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1. */ ++typedef int pattern_offset_t; ++ ++typedef struct ++{ ++ pattern_offset_t begalt_offset; ++ pattern_offset_t fixup_alt_jump; ++ pattern_offset_t inner_group_offset; ++ pattern_offset_t laststart_offset; ++ regnum_t regnum; ++} compile_stack_elt_t; ++ ++typedef struct ++{ ++ compile_stack_elt_t *stack; ++ unsigned size; ++ unsigned avail; /* Offset of next open position. */ ++} compile_stack_type; ++ + /* Subroutine declarations and macros for regex_compile. */ + +-static void store_op1 (), store_op2 (); +-static void insert_op1 (), insert_op2 (); +-static boolean at_begline_loc_p (), at_endline_loc_p (); +-static boolean group_in_compile_stack (); +-static reg_errcode_t compile_range (); ++static void store_op1 (re_opcode_t op, unsigned char *loc, int arg); ++static void store_op2 (re_opcode_t op, unsigned char *loc, int arg1, int arg2); ++static void insert_op1 (re_opcode_t op, unsigned char *loc, int arg, unsigned char *end); ++static void insert_op2 (re_opcode_t op, unsigned char *loc, int arg1, int arg2, unsigned char *end); ++static boolean at_begline_loc_p (const char *pattern, const char *p, reg_syntax_t syntax); ++static boolean at_endline_loc_p (const char *p, const char *pend, int syntax); ++static boolean group_in_compile_stack (compile_stack_type compile_stack, regnum_t regnum); ++static reg_errcode_t compile_range (const char **p_ptr, const char *pend, char *translate, reg_syntax_t syntax, unsigned char *b); + + /* Fetch the next character in the uncompiled pattern---translating it + if necessary. Also cast from a signed character in the constant +@@ -964,40 +997,8 @@ + } while (0) + + +-/* Since we have one byte reserved for the register number argument to +- {start,stop}_memory, the maximum number of groups we can report +- things about is what fits in that byte. */ +-#define MAX_REGNUM 255 +- +-/* But patterns can have more than `MAX_REGNUM' registers. We just +- ignore the excess. */ +-typedef unsigned regnum_t; +- +- + /* Macros for the compile stack. */ + +-/* Since offsets can go either forwards or backwards, this type needs to +- be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1. */ +-typedef int pattern_offset_t; +- +-typedef struct +-{ +- pattern_offset_t begalt_offset; +- pattern_offset_t fixup_alt_jump; +- pattern_offset_t inner_group_offset; +- pattern_offset_t laststart_offset; +- regnum_t regnum; +-} compile_stack_elt_t; +- +- +-typedef struct +-{ +- compile_stack_elt_t *stack; +- unsigned size; +- unsigned avail; /* Offset of next open position. */ +-} compile_stack_type; +- +- + #define INIT_COMPILE_STACK_SIZE 32 + + #define COMPILE_STACK_EMPTY (compile_stack.avail == 0) +@@ -2060,10 +2061,7 @@ + /* Store OP at LOC followed by two-byte integer parameter ARG. */ + + static void +-store_op1 (op, loc, arg) +- re_opcode_t op; +- unsigned char *loc; +- int arg; ++store_op1 (re_opcode_t op, unsigned char *loc, int arg) + { + *loc = (unsigned char) op; + STORE_NUMBER (loc + 1, arg); +@@ -2073,10 +2071,7 @@ + /* Like `store_op1', but for two two-byte parameters ARG1 and ARG2. */ + + static void +-store_op2 (op, loc, arg1, arg2) +- re_opcode_t op; +- unsigned char *loc; +- int arg1, arg2; ++store_op2 (re_opcode_t op, unsigned char *loc, int arg1, int arg2) + { + *loc = (unsigned char) op; + STORE_NUMBER (loc + 1, arg1); +@@ -2088,11 +2083,7 @@ + for OP followed by two-byte integer parameter ARG. */ + + static void +-insert_op1 (op, loc, arg, end) +- re_opcode_t op; +- unsigned char *loc; +- int arg; +- unsigned char *end; ++insert_op1 (re_opcode_t op, unsigned char *loc, int arg, unsigned char *end) + { + register unsigned char *pfrom = end; + register unsigned char *pto = end + 3; +@@ -2107,11 +2098,7 @@ + /* Like `insert_op1', but for two two-byte parameters ARG1 and ARG2. */ + + static void +-insert_op2 (op, loc, arg1, arg2, end) +- re_opcode_t op; +- unsigned char *loc; +- int arg1, arg2; +- unsigned char *end; ++insert_op2 (re_opcode_t op, unsigned char *loc, int arg1, int arg2, unsigned char *end) + { + register unsigned char *pfrom = end; + register unsigned char *pto = end + 5; +@@ -2128,9 +2115,7 @@ + least one character before the ^. */ + + static boolean +-at_begline_loc_p (pattern, p, syntax) +- const char *pattern, *p; +- reg_syntax_t syntax; ++at_begline_loc_p (const char *pattern, const char *p, reg_syntax_t syntax) + { + const char *prev = p - 2; + boolean prev_prev_backslash = prev > pattern && prev[-1] == '\\'; +@@ -2147,9 +2132,7 @@ + at least one character after the $, i.e., `P < PEND'. */ + + static boolean +-at_endline_loc_p (p, pend, syntax) +- const char *p, *pend; +- int syntax; ++at_endline_loc_p (const char *p, const char *pend, int syntax) + { + const char *next = p; + boolean next_backslash = *next == '\\'; +@@ -2169,9 +2152,7 @@ + false if it's not. */ + + static boolean +-group_in_compile_stack (compile_stack, regnum) +- compile_stack_type compile_stack; +- regnum_t regnum; ++group_in_compile_stack (compile_stack_type compile_stack, regnum_t regnum) + { + int this_element; + +@@ -2197,11 +2178,7 @@ + `regex_compile' itself. */ + + static reg_errcode_t +-compile_range (p_ptr, pend, translate, syntax, b) +- const char **p_ptr, *pend; +- char *translate; +- reg_syntax_t syntax; +- unsigned char *b; ++compile_range (const char **p_ptr, const char *pend, char *translate, reg_syntax_t syntax, unsigned char *b) + { + unsigned this_char; + +@@ -2989,13 +2966,6 @@ + return -1; + } /* re_search_2 */ + +-/* Declarations and macros for re_match_2. */ +- +-static int bcmp_translate (); +-static boolean alt_match_null_string_p (), +- common_op_match_null_string_p (), +- group_match_null_string_p (); +- + /* Structure for per-register (a.k.a. per-group) information. + This must not be longer than one word, because we push this value + onto the failure stack. Other register information, such as the +@@ -3022,6 +2992,13 @@ + } bits; + } register_info_type; + ++/* Declarations and macros for re_match_2. */ ++ ++static int bcmp_translate (unsigned char *s1, unsigned char *s2, int len, char *translate); ++static boolean alt_match_null_string_p (unsigned char *p, unsigned char *end, register_info_type *reg_info); ++static boolean common_op_match_null_string_p (unsigned char **p, unsigned char *end, register_info_type *reg_info); ++static boolean group_match_null_string_p (unsigned char **p, unsigned char *end, register_info_type *reg_info); ++ + #define REG_MATCH_NULL_STRING_P(R) ((R).bits.match_null_string_p) + #define IS_ACTIVE(R) ((R).bits.is_active) + #define MATCHED_SOMETHING(R) ((R).bits.matched_something) +@@ -4354,9 +4331,7 @@ + We don't handle duplicates properly (yet). */ + + static boolean +-group_match_null_string_p (p, end, reg_info) +- unsigned char **p, *end; +- register_info_type *reg_info; ++group_match_null_string_p (unsigned char **p, unsigned char *end, register_info_type *reg_info) + { + int mcnt; + /* Point to after the args to the start_memory. */ +@@ -4463,9 +4438,7 @@ + byte past the last. The alternative can contain groups. */ + + static boolean +-alt_match_null_string_p (p, end, reg_info) +- unsigned char *p, *end; +- register_info_type *reg_info; ++alt_match_null_string_p (unsigned char *p, unsigned char *end, register_info_type *reg_info) + { + int mcnt; + unsigned char *p1 = p; +@@ -4500,9 +4473,7 @@ + Sets P to one after the op and its arguments, if any. */ + + static boolean +-common_op_match_null_string_p (p, end, reg_info) +- unsigned char **p, *end; +- register_info_type *reg_info; ++common_op_match_null_string_p (unsigned char **p, unsigned char *end, register_info_type *reg_info) + { + int mcnt; + boolean ret; +@@ -4588,10 +4559,7 @@ + bytes; nonzero otherwise. */ + + static int +-bcmp_translate (s1, s2, len, translate) +- unsigned char *s1, *s2; +- register int len; +- char *translate; ++bcmp_translate (unsigned char *s1, unsigned char *s2, int len, char *translate) + { + register unsigned char *p1 = s1, *p2 = s2; + while (len) diff --git a/app-admin/logsurfer+/logsurfer+-1.8-r6.ebuild b/app-admin/logsurfer+/logsurfer+-1.8-r6.ebuild new file mode 100644 index 000000000000..24ab8341c120 --- /dev/null +++ b/app-admin/logsurfer+/logsurfer+-1.8-r6.ebuild @@ -0,0 +1,58 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_P="${P/+/}" + +inherit toolchain-funcs autotools + +DESCRIPTION="Real Time Log Monitoring and Alerting" +HOMEPAGE="https://crypt.gen.nz/logsurfer/" +SRC_URI="https://downloads.sourceforge.net/logsurfer/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="freedist GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~x86" +RESTRICT="bindist" #444330 + +RDEPEND=" + acct-group/logsurfer + acct-user/logsurfer +" + +PATCHES=( + "${FILESDIR}/${P}-fix-declaration-of-check_context_linelimit.patch" + "${FILESDIR}/${P}-C23.patch" +) + +src_prepare() { + default + + #https://bugs.gentoo.org/905941 + eautoreconf +} + +src_configure() { + local myeconfargs=( + --with-etcdir=/etc + ) + + econf "${myeconfargs[@]}" +} + +src_compile() { + tc-export CC + default +} + +src_install() { + dobin src/logsurfer + doman man/logsurfer.1 man/logsurfer.conf.4 + + newinitd "${FILESDIR}"/logsurfer-1.8.initd-r1 logsurfer + newconfd "${FILESDIR}"/logsurfer.confd logsurfer + + einstalldocs +} diff --git a/app-admin/opentofu/Manifest b/app-admin/opentofu/Manifest index 8aed6c700c91..3ed310877378 100644 --- a/app-admin/opentofu/Manifest +++ b/app-admin/opentofu/Manifest @@ -1,25 +1,7 @@ -DIST opentofu-1.6.0-deps.tar.xz 332007504 BLAKE2B 1c2a7d2350944d34308baa0566977aad914b3c4f989ba90d51cb52e3001d11e56952906b0dab7adc5cef261290b748c0567e35c66f6701d62d750e18d0acea5f SHA512 5c5644b2caef5439e50865569abec133ba57a6e6581d8f8d38500671818079b471afcd86422858475b1ca912bdb75fe0b91227012f5c597bcaabe1a215b2eb09 -DIST opentofu-1.6.0.tar.gz 3696642 BLAKE2B e224ce14f04d07638d03b9a11ab251cd820acc86774f9c82f38f5bcfc38b62bbdbc70377e722a4dd2bd65f917ba0fc200ccaaeafdbd9430af66586491c7627eb SHA512 758f4ff79e526e9494e1e98dd927dbeb803b45df1f8bc15c3a9bca8343d7285b9130bfe5f19f6ddd7fd403b72d852b0d51542c058174e4bd5eed3c729b394bdb -DIST opentofu-1.6.1-deps.tar.xz 332000152 BLAKE2B bfa5bee3c7ba8cc79cd8f81137fb611abce0b806813475deab0e5546542910cc391252ebb3054badf3a8bfe17f25d30ce570065591aaa6148ad6bd7c42aa8e2e SHA512 10e5519b1be53a5ec1191dec8f73960da72ca53cc5284ef9a72139ce0e1db2a9213fbed696088644414ef0fb589c26a7980f695b79192f0e5f039f3dfcfc91e8 -DIST opentofu-1.6.1.tar.gz 3709010 BLAKE2B 3d172a4228ff10608dc74da6980eda38ec9afa13ac4bbfeb4ae3fb3142af81fc30988a99fea01ee7988b7ad057efbe1b270b4b880e4152ec3d87939f29ae8614 SHA512 6d98e5f03340853ad3f516ad890fe297c4239c03c0c5d4b0e7efc490b734ce2948bbd3ee5d1375d9eade2ea4a6ef71dbb22a5dd48fc81df5a9440ce73090a92e -DIST opentofu-1.6.2-deps.tar.xz 106556484 BLAKE2B fe6ed9507aa3589e34f8c3189d6ee03044b6397a650663c9746c94e45066dbc6e15529f9b4ed3c57649083580a7589596c0b710fdcf0ec832816e76d5137607e SHA512 d8c2e66ab9254d0031aa8fd7dc6fb0ef1aa748282a0b7d9d277398c2f50bceb097b52389a19b70c67d5d0abba9ef289f3d19a786436f16f7549b293bf6b46a48 -DIST opentofu-1.6.2.tar.gz 3708735 BLAKE2B 07c48de78e5510c87413447bf2393ee3e93a91ea562a28849e9db6342eccb7b85745cea0aaa3d8e3861a10127905f4b3614b77863b62a21a0a8c8f5163afac22 SHA512 25fac0e6837f2d125d35f780c3091139819a00ae3f96c2e62a1c3c544e425a60c9880c84b4e1aa6727771c5523c81e8dbab38d5151b854bbc470d7819746567c -DIST opentofu-1.7.1-deps.tar.xz 107794272 BLAKE2B cf06be88cdfe1e2b12d9f5b6c3576bb5d5fab9a05041fa60ad98a094778ab937efb5d2cc0f535f6212ed233188a4c620cc4ac80b5f58306b2dc92399d138c8b1 SHA512 d9e950cf196b93d75211593b372ecf46a6933f05a653e63c60bb1813530ddf39edce5236f1dcdc815812fbbe2b7721c237ca0cc36f3fcded523e1d213ba7ed7f -DIST opentofu-1.7.1.tar.gz 3890267 BLAKE2B c82bd4a99eb904a2dddc1c38c7a67680b3a51eb9a4a23ff618d038c4b467c7666a9801c7fb205d2f93b60ec8137a28b193347c0be43357a7397a0d98b8e1cf06 SHA512 11573449cf73e44352124463bb2dfe890688fc0bb1a232fb57a16872612c562e0fe08ed926635fc21063118d83a120febd156073c23d8dc3294e00035c660ad6 -DIST opentofu-1.7.2-deps.tar.xz 107787580 BLAKE2B 10d7f8e114ca43964de34f4ecc7d8ada24f5ac069a7568a7b843e6c6d194e767deb254af00ce722ab82ed30eb80b34689c4e004b775edbbb07c34666f1436680 SHA512 7530197f99a1dc4d0a779edff466715039bd7d5fcaa70a5158cbde33256b0d90e9f2a1f47411c13f62a257f5baf6816fec5692b9e0ec01d2704c04d5935b59b9 -DIST opentofu-1.7.2.tar.gz 3890420 BLAKE2B 7e234b535cd76b8716ed69271fd2ba13670c7ab7ae5fcff8c1e5a16097a518eee2d437772ae90b680e38adf5e64d77fdfa543f087492a36eb866405500eb3cc4 SHA512 49f93c1f7e1469b69a784424b724460c199e54c351801ef7ad3db1fea24089b585a5cf9ffef90b45ba2713d853b8d99828ceffa7c3469737bcd201b6ce34f362 -DIST opentofu-1.8.1-deps.tar.xz 107813812 BLAKE2B 965afc691f6cab85774ca543088bd6dbfb37af22ed59a4fefd8b352924435d2569c7968475d272ead6d710e4279956aecd6f3a6a1421ee1ffc758255918f0399 SHA512 af429415110dfc19cb588390d49cc0aad057505d6de3897cb52d996473d81f294f239cc1a767682355d97fd292c7c1cf56e42f8127375eff9c3affdbc372fbcc -DIST opentofu-1.8.1.tar.gz 3995189 BLAKE2B d6bfd35172960180defee30e0fa3135f6aac5017d307f236145931cc134c58b123a1e368278e2fcce613a184c90b1ae3fb15a0e4da32c4fbf2e291b8f4c2251d SHA512 c6bb6cab979cb5bb53eb53eea6c1a0b2766b06fd5c66564597b3df8d4561d2b2af3f5a4804f3427da3addc11c12b99ef913637b2126452f5f2168d88a06af478 DIST opentofu-1.8.8-deps.tar.xz 107062472 BLAKE2B e1ad2b7e7a28fd8040b3bef000b795fff501b06c443e657b75e9489d4ad2c747670d9e9fc75e796590513cdae7eb59c33aa7786ca7fe6dc31a2325c2d7028b5c SHA512 b497ac10ae7b8d9b44645c159af625336e50678707ca8cb69af15f1fae62dbfdcd1e537c8a3adff368947fc5d6269c6a964c51fa19108f602018045aa4e12d84 DIST opentofu-1.8.8.tar.gz 4007751 BLAKE2B 7aff3cf4c01bf253975d50ac7d398299b881952bb9f8bffaf8548a6cef2e8f2b89249e9d8f7345ac284ed46fd152815d051a21598e2f1f1e5029a39c23764581 SHA512 ec58bac2cd2fc17879425631d5af2c660e9d42406f06254b3b4ffda8ebc30d9359c9d0491c8a53944ccb9ae4110ab9b658b43fc113e80c8cec18e854fb3a68d9 DIST opentofu-1.9.0-deps.tar.xz 107229436 BLAKE2B f0c2074cccdd7be8504eaf1e389a6bb1fec12a2a2a5bba88ae281527611eb3a0a8f3a5d2bbddbd76edce710641367ed8d878db54ab070946d04cbeb3f680c72c SHA512 dac5c4d1238641bcdb1fa37ff53d92924f424330e7c46d60ad14cf5c1e8f33267690468f11e4e4b853cdc8f06937f07200373bbbe845b4faaee1a5b086b10c33 DIST opentofu-1.9.0.tar.gz 4126960 BLAKE2B da87112a68f35689297bdaab261fd8916160fea9154da2578bb037fa21dc416b24233fbf5144d03cff73677cbaabdc019d10c8d60816e7ecae0ceabcc1fcfc62 SHA512 3b8219f778ede549def2d112c4939a95aa0484689e739b30a5e81bc723cc6ea7284eb6dc83001d415451dba39ecfaa4855a682ce2ea2e716bba385df2e8e0a08 -EBUILD opentofu-1.6.0.ebuild 844 BLAKE2B bdfa0b0c680d11a0dc80829f2acfbbd919efd06d6f5a2fc1478455a15e1aa8d1fbf633a23f9479677449a1561a2bc56c85766f94d0561a5df211116c1a395e50 SHA512 54b6886c941cb45f8965816bc2ecd161d2efa79348adf42b3f12bc1217d13f7de47a1a09deff7836864ccf76a7ef198320e7fbe506ed7c4489c494fc20026cc9 -EBUILD opentofu-1.6.1.ebuild 844 BLAKE2B bdfa0b0c680d11a0dc80829f2acfbbd919efd06d6f5a2fc1478455a15e1aa8d1fbf633a23f9479677449a1561a2bc56c85766f94d0561a5df211116c1a395e50 SHA512 54b6886c941cb45f8965816bc2ecd161d2efa79348adf42b3f12bc1217d13f7de47a1a09deff7836864ccf76a7ef198320e7fbe506ed7c4489c494fc20026cc9 -EBUILD opentofu-1.6.2.ebuild 844 BLAKE2B bdfa0b0c680d11a0dc80829f2acfbbd919efd06d6f5a2fc1478455a15e1aa8d1fbf633a23f9479677449a1561a2bc56c85766f94d0561a5df211116c1a395e50 SHA512 54b6886c941cb45f8965816bc2ecd161d2efa79348adf42b3f12bc1217d13f7de47a1a09deff7836864ccf76a7ef198320e7fbe506ed7c4489c494fc20026cc9 -EBUILD opentofu-1.7.1.ebuild 843 BLAKE2B 0a99d5633a6618a80eed527dd728813aaff3f13457aa9b408d8a32d8c223bfddd744066ed571757f8b5df51e9428776ccbcb53518e0ccf6e7d7b19b81e53caa9 SHA512 b74bdcdcb1134fdf2836a97d116da1e79619e279478d2af231111ce76b2242cdfc543786f4538aeb944c169db0256f65373168ecc9593489908ca7d28a9d4066 -EBUILD opentofu-1.7.2.ebuild 844 BLAKE2B bdfa0b0c680d11a0dc80829f2acfbbd919efd06d6f5a2fc1478455a15e1aa8d1fbf633a23f9479677449a1561a2bc56c85766f94d0561a5df211116c1a395e50 SHA512 54b6886c941cb45f8965816bc2ecd161d2efa79348adf42b3f12bc1217d13f7de47a1a09deff7836864ccf76a7ef198320e7fbe506ed7c4489c494fc20026cc9 -EBUILD opentofu-1.8.1.ebuild 844 BLAKE2B bdfa0b0c680d11a0dc80829f2acfbbd919efd06d6f5a2fc1478455a15e1aa8d1fbf633a23f9479677449a1561a2bc56c85766f94d0561a5df211116c1a395e50 SHA512 54b6886c941cb45f8965816bc2ecd161d2efa79348adf42b3f12bc1217d13f7de47a1a09deff7836864ccf76a7ef198320e7fbe506ed7c4489c494fc20026cc9 -EBUILD opentofu-1.8.8.ebuild 844 BLAKE2B f0c5a632227897f3059ecd08bff7f3c1d3c46a8b2ac091946f00638032706585a923f4713129e00e1283df96fbc6ef21bb9624277c8815ecccb0597c6492400a SHA512 c72536effc730069f7c8f3f774d9394bff93fdb96a65fa0ee985a507f202083e4dccc4d8a0354da089b872b8e71c40acbb5755ced700a1543e7f5ad2cc6b9433 +EBUILD opentofu-1.8.8.ebuild 843 BLAKE2B 0a99d5633a6618a80eed527dd728813aaff3f13457aa9b408d8a32d8c223bfddd744066ed571757f8b5df51e9428776ccbcb53518e0ccf6e7d7b19b81e53caa9 SHA512 b74bdcdcb1134fdf2836a97d116da1e79619e279478d2af231111ce76b2242cdfc543786f4538aeb944c169db0256f65373168ecc9593489908ca7d28a9d4066 EBUILD opentofu-1.9.0.ebuild 844 BLAKE2B f0c5a632227897f3059ecd08bff7f3c1d3c46a8b2ac091946f00638032706585a923f4713129e00e1283df96fbc6ef21bb9624277c8815ecccb0597c6492400a SHA512 c72536effc730069f7c8f3f774d9394bff93fdb96a65fa0ee985a507f202083e4dccc4d8a0354da089b872b8e71c40acbb5755ced700a1543e7f5ad2cc6b9433 MISC metadata.xml 417 BLAKE2B 82486cb8f3504862ce7658f0d54141e559a952874ec92697e7bd03f7f7a1e4a3df90a20158c8be6b4bb42d9c4e9de49c27754589e909a4e32ec52950a3d169bd SHA512 2a347bf9bd1be70d9e1853ae802091fcbea299a15fe4c170aacba005e7528c3b9c784d2b34bfff015f1b531648e6fb2e73ff3fb9d158df0991b3348a91f74eb6 diff --git a/app-admin/opentofu/opentofu-1.6.0.ebuild b/app-admin/opentofu/opentofu-1.6.0.ebuild deleted file mode 100644 index 544c2e0b5f16..000000000000 --- a/app-admin/opentofu/opentofu-1.6.0.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -inherit go-module - -DESCRIPTION="The open source infrastructure as code tool" -HOMEPAGE="https://www.opentofu.org/" -SRC_URI="https://github.com/opentofu/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" -SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" - -LICENSE="Apache-2.0 BSD BSD-2 MPL-2.0 MIT ISC" -SLOT="0" -KEYWORDS="~amd64" - -BDEPEND="dev-go/gox" - -RESTRICT="test" - -DOCS=( {README,CHANGELOG}.md ) - -src_compile() { - export CGO_ENABLED=0 - gox \ - -os=$(go env GOOS) \ - -arch=$(go env GOARCH) \ - -output bin/tofu \ - -verbose \ - ./cmd/tofu || die -} - -src_install() { - dobin bin/* - einstalldocs -} - -pkg_postinst() { - elog "If you would like to install shell completions please run:" - elog " tofu -install-autocomplete" -} diff --git a/app-admin/opentofu/opentofu-1.6.1.ebuild b/app-admin/opentofu/opentofu-1.6.1.ebuild deleted file mode 100644 index 544c2e0b5f16..000000000000 --- a/app-admin/opentofu/opentofu-1.6.1.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -inherit go-module - -DESCRIPTION="The open source infrastructure as code tool" -HOMEPAGE="https://www.opentofu.org/" -SRC_URI="https://github.com/opentofu/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" -SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" - -LICENSE="Apache-2.0 BSD BSD-2 MPL-2.0 MIT ISC" -SLOT="0" -KEYWORDS="~amd64" - -BDEPEND="dev-go/gox" - -RESTRICT="test" - -DOCS=( {README,CHANGELOG}.md ) - -src_compile() { - export CGO_ENABLED=0 - gox \ - -os=$(go env GOOS) \ - -arch=$(go env GOARCH) \ - -output bin/tofu \ - -verbose \ - ./cmd/tofu || die -} - -src_install() { - dobin bin/* - einstalldocs -} - -pkg_postinst() { - elog "If you would like to install shell completions please run:" - elog " tofu -install-autocomplete" -} diff --git a/app-admin/opentofu/opentofu-1.6.2.ebuild b/app-admin/opentofu/opentofu-1.6.2.ebuild deleted file mode 100644 index 544c2e0b5f16..000000000000 --- a/app-admin/opentofu/opentofu-1.6.2.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -inherit go-module - -DESCRIPTION="The open source infrastructure as code tool" -HOMEPAGE="https://www.opentofu.org/" -SRC_URI="https://github.com/opentofu/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" -SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" - -LICENSE="Apache-2.0 BSD BSD-2 MPL-2.0 MIT ISC" -SLOT="0" -KEYWORDS="~amd64" - -BDEPEND="dev-go/gox" - -RESTRICT="test" - -DOCS=( {README,CHANGELOG}.md ) - -src_compile() { - export CGO_ENABLED=0 - gox \ - -os=$(go env GOOS) \ - -arch=$(go env GOARCH) \ - -output bin/tofu \ - -verbose \ - ./cmd/tofu || die -} - -src_install() { - dobin bin/* - einstalldocs -} - -pkg_postinst() { - elog "If you would like to install shell completions please run:" - elog " tofu -install-autocomplete" -} diff --git a/app-admin/opentofu/opentofu-1.7.1.ebuild b/app-admin/opentofu/opentofu-1.7.1.ebuild deleted file mode 100644 index 5c4750a94a3f..000000000000 --- a/app-admin/opentofu/opentofu-1.7.1.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -inherit go-module - -DESCRIPTION="The open source infrastructure as code tool" -HOMEPAGE="https://www.opentofu.org/" -SRC_URI="https://github.com/opentofu/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" -SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" - -LICENSE="Apache-2.0 BSD BSD-2 MPL-2.0 MIT ISC" -SLOT="0" -KEYWORDS="amd64" - -BDEPEND="dev-go/gox" - -RESTRICT="test" - -DOCS=( {README,CHANGELOG}.md ) - -src_compile() { - export CGO_ENABLED=0 - gox \ - -os=$(go env GOOS) \ - -arch=$(go env GOARCH) \ - -output bin/tofu \ - -verbose \ - ./cmd/tofu || die -} - -src_install() { - dobin bin/* - einstalldocs -} - -pkg_postinst() { - elog "If you would like to install shell completions please run:" - elog " tofu -install-autocomplete" -} diff --git a/app-admin/opentofu/opentofu-1.7.2.ebuild b/app-admin/opentofu/opentofu-1.7.2.ebuild deleted file mode 100644 index 544c2e0b5f16..000000000000 --- a/app-admin/opentofu/opentofu-1.7.2.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -inherit go-module - -DESCRIPTION="The open source infrastructure as code tool" -HOMEPAGE="https://www.opentofu.org/" -SRC_URI="https://github.com/opentofu/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" -SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" - -LICENSE="Apache-2.0 BSD BSD-2 MPL-2.0 MIT ISC" -SLOT="0" -KEYWORDS="~amd64" - -BDEPEND="dev-go/gox" - -RESTRICT="test" - -DOCS=( {README,CHANGELOG}.md ) - -src_compile() { - export CGO_ENABLED=0 - gox \ - -os=$(go env GOOS) \ - -arch=$(go env GOARCH) \ - -output bin/tofu \ - -verbose \ - ./cmd/tofu || die -} - -src_install() { - dobin bin/* - einstalldocs -} - -pkg_postinst() { - elog "If you would like to install shell completions please run:" - elog " tofu -install-autocomplete" -} diff --git a/app-admin/opentofu/opentofu-1.8.1.ebuild b/app-admin/opentofu/opentofu-1.8.1.ebuild deleted file mode 100644 index 544c2e0b5f16..000000000000 --- a/app-admin/opentofu/opentofu-1.8.1.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -inherit go-module - -DESCRIPTION="The open source infrastructure as code tool" -HOMEPAGE="https://www.opentofu.org/" -SRC_URI="https://github.com/opentofu/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" -SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" - -LICENSE="Apache-2.0 BSD BSD-2 MPL-2.0 MIT ISC" -SLOT="0" -KEYWORDS="~amd64" - -BDEPEND="dev-go/gox" - -RESTRICT="test" - -DOCS=( {README,CHANGELOG}.md ) - -src_compile() { - export CGO_ENABLED=0 - gox \ - -os=$(go env GOOS) \ - -arch=$(go env GOARCH) \ - -output bin/tofu \ - -verbose \ - ./cmd/tofu || die -} - -src_install() { - dobin bin/* - einstalldocs -} - -pkg_postinst() { - elog "If you would like to install shell completions please run:" - elog " tofu -install-autocomplete" -} diff --git a/app-admin/opentofu/opentofu-1.8.8.ebuild b/app-admin/opentofu/opentofu-1.8.8.ebuild index d80ebed9007a..5c4750a94a3f 100644 --- a/app-admin/opentofu/opentofu-1.8.8.ebuild +++ b/app-admin/opentofu/opentofu-1.8.8.ebuild @@ -11,7 +11,7 @@ SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" LICENSE="Apache-2.0 BSD BSD-2 MPL-2.0 MIT ISC" SLOT="0" -KEYWORDS="~amd64" +KEYWORDS="amd64" BDEPEND="dev-go/gox" diff --git a/app-admin/salt/Manifest b/app-admin/salt/Manifest index e441a29fc553..910747cfeeb4 100644 --- a/app-admin/salt/Manifest +++ b/app-admin/salt/Manifest @@ -33,6 +33,6 @@ EBUILD salt-3006.5-r1.ebuild 15197 BLAKE2B bdc3934197b14ca3da055733e8bb04e494099 EBUILD salt-3006.7-r1.ebuild 15501 BLAKE2B 8e9324f3be043a58f37a746a0de56d698c11afe6713bc84ce40c966bf4282f153fd903441ca3e3f556f07d1bff7e2f3eab62f427dee050a5f7eb637e680bdc35 SHA512 b5639f4c18b6a0e62b7bc44ad2af4157248e476d9b4f6bd3ffabe2139ef914a7c75288975827060de575bd588d3a04f159ca880c34f2c6aa4f6b8d61ef9470b4 EBUILD salt-3006.9-r2.ebuild 19256 BLAKE2B baef6e95432d1d236762d3cf24526501be03240024073b808c95005dd99d73458f1f133e793abddc29af791e9d8ecb2d4e97912f7cdeb97381a0398513f02624 SHA512 ab48014733269b5dadc855d68dd316ca94f0e7458e0ba6436e97d28cac14e3308c8444217eeb706b1676fb0eea296ab6d53f08ade62f6192a269f1855489ad89 EBUILD salt-3007.0-r1.ebuild 30876 BLAKE2B 1ebe8d31ef34bb73dc1785fc0dbad58495a4eef02e657b04abc0986778c110b46ca405dec4f52cd86179076b917e84d0b64ee903e42cbb02966017c73731559e SHA512 508ac0783aae95184ab4e123dbc819e9ee02f23dd6f593d0d266fa73214a43ff1f442f3c184d24723ac89a4158d3e2c3085f895411e8819c85d890cf652d67fe -EBUILD salt-3007.1-r1.ebuild 30973 BLAKE2B 88bdd4536256af5d80d338289ced21522c2c9ba09a2bd6b5cc7e18d6ae0c594a9e71023f9a8408ac80a3fdb20ec85dc4e7387ab0608d3b0e9f7bd96e0c60e93b SHA512 2bf4931eb20f473b6ed8a822707c7ae4bdc81f07025eae3a50eddef0b58821e8145a4c843ff8f54cbd245cbbe16f4bd781b8dc52a82404a3b18bc3118f112a89 +EBUILD salt-3007.1-r1.ebuild 30972 BLAKE2B 14b67da69e19a03db193f4c891c72c9b104d7437951df7554aa6d338375b161ff62dbb8c7a34e9050381f30c78bc4b30f49ff9ee124810e3cb5fe4096b5ea550 SHA512 1fc43370620c6a5ab74ce7b5943e8dbeb13901c86c0fd3b77f4f02768b71162dcaf26b6df7579011654046ea963b07e2002ec19a8ad60b45e8dc3e186c1c7cb9 EBUILD salt-3007.1-r2.ebuild 31090 BLAKE2B 43ed7931b6859ba5f12bd21b811afc71b4ac5d027710db58ce7aba2c27e67d7519b2c49b487e2153e47f505730fa3485f073f45b4c1d37a9343085dee7c9a8dc SHA512 39cdbffa03f68bb284183355610438729094a976bf01f488ca2fcc90365e67559d589b087002b59119929ce82474eb246fbdda0877dde5e5baa332049cc581c2 MISC metadata.xml 2244 BLAKE2B 2c67e0828b71051c1c542b1e2142d93d623c28f30e36b59442dda3966f18ef2ae1111a263f1faf56c288c927c7db13736cfa68111248e84378fab23043d49e02 SHA512 89e46a1379b2cf95aff0af082f989cb50a1a769240407fbe6a43de1a3f312be5b690f30d1349aa659268fcf3818a2d829fcff18fd11988b161038cb19e13bde5 diff --git a/app-admin/salt/salt-3007.1-r1.ebuild b/app-admin/salt/salt-3007.1-r1.ebuild index 0e799b439510..7f4b60bd59a6 100644 --- a/app-admin/salt/salt-3007.1-r1.ebuild +++ b/app-admin/salt/salt-3007.1-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -17,7 +17,7 @@ if [[ ${PV} == 9999* ]]; then EGIT_BRANCH="develop" else inherit pypi - KEYWORDS="~amd64 ~riscv x86" + KEYWORDS="amd64 ~riscv x86" fi LICENSE="Apache-2.0" diff --git a/app-admin/setools/Manifest b/app-admin/setools/Manifest index 5b76ba754a10..e519d0820e3f 100644 --- a/app-admin/setools/Manifest +++ b/app-admin/setools/Manifest @@ -2,6 +2,6 @@ AUX setools-4.5.1-remove-gui.patch 1194 BLAKE2B 39c9fe32301b065bee51358694f4f79d DIST setools-4.4.4.tar.bz2 262867 BLAKE2B d64605ef050a2d51531e2a180bff086da536aa8d5e5c8cb96a81e137f575d089f9e9ec117cf0de9864f07174d92258b27ebf8fbc462714ef50bbd6d9f80d0a60 SHA512 ef72a7244ba0c724c4aea3afc40d71427e9c0592715f81cccaa8917e96836a88807ea78039c11c261dd3b4d72294accd76ab4bd37447cd500772030245db3c6e DIST setools-4.5.1.tar.bz2 264998 BLAKE2B 479cec6f541c1e7125d641928ba49aee949e538612a478840cec2d70106dcf9f7fa5b8049c9d18c560587670ee624a3a744714667d52b99cff24c51e72026db7 SHA512 1045c223423fcb056ffbc2f93c4dc0ccc6ae078ce7d2acbe3a3c65de19440fe801b5b9f71038cde62bf9851f52d868c845aafbe33691ee531cf9854217e061d8 EBUILD setools-4.4.4.ebuild 1353 BLAKE2B 87f4801abbcf91b3ef920460cb806b2bc51114b45619e2f51404e7959ed704b76a6d3c752d8ecef4cabd17514a83b1ec70c28202980d3a0333d8f5e7a176d90f SHA512 87493707fec2369723ac3f433fd73531d5db6baa1d54dc02d302ed9e73229f4a60f1c0aebd89cc84c7d82a1ce9a4b2a552c13d2373b36f15aee28f14eeb50ecf -EBUILD setools-4.5.1.ebuild 1502 BLAKE2B 32e1a2bc39187418de801a0314eec4142f97212efa43d00ab0cc42ac1b3ee0a76820dc65f07504c277b49137b3ddc2d922dd76e65c6606073c194895fc5a4e94 SHA512 d4b073d0229a6a919d88b0e9ae131dce83c67c7220eb19206bdab408a0d5f4171e17ea100eee7704899e739e0a2bcaca0fb17a5e7a241599ebdac7b537d95add -EBUILD setools-9999.ebuild 1511 BLAKE2B 3271aba051e17a4484304840b05486555814832a043f58a640515cdde7f72955cddc30a6f7a27fa01914465b5c9ab9aa8607114f4554c8398a9aaca5fa1cc4e6 SHA512 1a9a5fefa0c83f01358a5f31cd6929bf0e2b607669a24669e0575bdc144b7c07db36b62ff2ee392cfaabab89500e2b6a1532e07935ded45f04a9e8902c06f862 +EBUILD setools-4.5.1.ebuild 1502 BLAKE2B 1a162b03b4aea530bbf9fe8ece3559b300397e4343d79e668750e715c09f1468b2454547dab3052f096b74d4016d43fe23aa71b2572f690a778def0c5f0cf945 SHA512 cdef256be77693b832e6e7547cfae42d82a0192af3076dab0b4fed1c1e8e5de9b511207cffdbdd87e034885df07fe191265752c72f97042d0b72b7438480abc8 +EBUILD setools-9999.ebuild 1511 BLAKE2B 58e54e141ff3fddf463d6d7af209101becad64a1b8242f539d63b7da725eecf70912f637baaa6323f352667a490e125590f6382ba5787a2d9679a590bf6a5e86 SHA512 d8b438442b814ddaca387c5f975e0ee20bc1518aa73b659ed44d89d314d2b8da5756534ce49963b956b8c1d6b5932172079c07c89d153f3f619cc1f3b7eb8853 MISC metadata.xml 335 BLAKE2B 81a7604472415bdf249d90f69e80a7a7c66f23597cba3005fc1fc825012ffdeb29bcb3f8f8b028ee35e0a076fe4863c25d79077718b28d5f658e68df2a703c5b SHA512 9115e12f13e78b8f63ec90a2ed71c5c731781415a77c2fd06bba358240261bf83183f14f2d38e5e9ffcafaee56de4df224b517afceb536d8e1e6af6f1eaa0938 diff --git a/app-admin/setools/setools-4.5.1.ebuild b/app-admin/setools/setools-4.5.1.ebuild index 3bf6621425a8..026a341e6caf 100644 --- a/app-admin/setools/setools-4.5.1.ebuild +++ b/app-admin/setools/setools-4.5.1.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_EXT=1 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_COMPAT=( python3_{10..13} ) inherit distutils-r1 diff --git a/app-admin/setools/setools-9999.ebuild b/app-admin/setools/setools-9999.ebuild index c7c56b0bb408..052075285d71 100644 --- a/app-admin/setools/setools-9999.ebuild +++ b/app-admin/setools/setools-9999.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_EXT=1 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_COMPAT=( python3_{10..13} ) inherit distutils-r1 diff --git a/app-admin/terraform/Manifest b/app-admin/terraform/Manifest index 18de6cb8fb69..4d446e8cb3e2 100644 --- a/app-admin/terraform/Manifest +++ b/app-admin/terraform/Manifest @@ -1,7 +1,10 @@ +DIST terraform-1.10.5-deps.tar.xz 107373464 BLAKE2B 416637bfbb61ad5cdf867a265af26d2329e35dc6e92f02228df5dbd4245c36598fa9e92a2c5c05e4540bef549416ce09829f67fc790b51251a135ddee55e63c4 SHA512 5a8ee286b1eeebdf55f650fbdabeed10e83b1dfeabab0ad1f51245682320218dd2a2e32b287a58ffe7f4bc41cc0dd2d176a3c70c50e1d055b1bf1b138b2ec6f9 +DIST terraform-1.10.5.tar.gz 6853436 BLAKE2B a798a6aefd46a85ef78356f3771066a1fe9d621128a30a7e7b394f32801cdc45f554401967a7563167a217801d5b2e4deaa1aba723638c2b4b2ace4f0f535411 SHA512 8d2f2b5ad929cabe2f2122f1b6c6c8e9c508e374a927db75dfe15a48024d3a5c578843b97571f5e30db43ea145900c6778cbcae7e43bfafb54896abe04520922 DIST terraform-1.9.5-deps.tar.xz 108369816 BLAKE2B 8476a09ad400818ec95bf1457003aeab1f76cd85b9ffa07e27be58eb63469a2bd1f7c0ddaa3903ec8e1641541d091367b333772bf37026611743aea82c1cfcf2 SHA512 b2c477180aeab5c3c51acb6960a3fea1f793a22fa9529b474d9b1ebc82bc62aed5ff2ab4567838666bb1ee4cbfe4ff0dd528d8f55853dadcc2a96a2a889fc996 DIST terraform-1.9.5.tar.gz 6568796 BLAKE2B 7dde80aef2c189942c6e23e2162a7e1f97d56ee78e7106c247600fe9437bcd63cce28003d2ac7dcb474fc91b9953d4bf953ed0e4bad68cc60ed8e1cd2d641e48 SHA512 422b7f288306d76cc82875e8514df37aa36c6cd97860f3f9a5e3770ec56f395cf1ffcc65e3211044c01d0f75b4331960720f8672efff7821a9d7f63f65999a6a DIST terraform-1.9.8-deps.tar.xz 107050652 BLAKE2B dfc98d9c58d981899d97278b98071d857c21ad5812f6aa3889befef4ffd0527a94af9e53a842d86826c66fcacdfcc8b265cde282cf161ae42c48966c69331a54 SHA512 982d7672f48632085ca90c2b1182cdc9a031fbc8d5a6b724578cb407f183f5185e0b1387906c171bd5ee6cbad7a8ef1c4810e5f8ef0fd424bf2e654201ad1700 DIST terraform-1.9.8.tar.gz 6646861 BLAKE2B cadb58e748d41e50cde5fedd362a7558b4122fe33c428c9e841706cdb47426a9ae614fce10ea7ba4b04baa8379ff919707d71776d954754456e42d4e041c32a1 SHA512 dc369d612f8ea463e38538bb144d679b6fe4df2f554ec4715b669abee3d8045076a79d589e1ff950dba4e4aab84ef7a7656dd6d6be278d8b5468aeabd183d818 +EBUILD terraform-1.10.5.ebuild 945 BLAKE2B 79f44e8bac856a894f99110ad8ae874710d71ded82bb5c9faf323e932a09bbd19c06c3d2e7ee273560f73e76195da7aaf30ba62166b15da4733edb4bd65638fd SHA512 a3ad330cbad947725eb76f180c023d94c7494a2a2405b6f379519c98319f4e561f6d0f2a6bc1a25af510287778b48f7b9f902cc74c6f3bd64ed01ab89bbed52e EBUILD terraform-1.9.5.ebuild 876 BLAKE2B 841a5d7654dd92da6e4ecf4473d9daeb6085026ddcd42adcc5c1992b2ddd3931e4c52e8a5922df3a9ca325cc1353eee0ab5698285ca9268852b29bf95c14ef5c SHA512 2a70783aed35558ab923f3bdef52aec9f889989cc3f9e12d6673e9ed2c8fd9f83d6eb27e6310c30ad2435b0cd988e8aac29f5a6eb1a3c15d74186b2994694674 EBUILD terraform-1.9.8.ebuild 877 BLAKE2B ed81e582aaf9f0da4617e628176f86712272eec094ee4d19c7374c0a247248efb24e2f3688b3db40da85fa170db1de3011ede5240a109168d31f15a69298dd4f SHA512 e443ae4e74edb1cb95279590d4b733376d636f67a6d36757a7f8cafa236576d7e19cab06310b149c175ba19f6c7d049a8fd8cfe8d902a7b6327aef1cc043af85 MISC metadata.xml 1076 BLAKE2B 85b510c328c94106cb16527407d4694f6acc80d5aaa7ed677efc438be3522e52befc910b5b8805d2d1705bf1b0b220ed631e40bdbb1297779e96917158977f1a SHA512 06a6e462631d6ae026a127ea4c3f1cba4d84651d03011e08fa028adf2fbcb7dfbcd003d132d4a0ae58b7addafa5588270c3155d0cc400a3730628bd8bd716d95 diff --git a/app-admin/terraform/terraform-1.10.5.ebuild b/app-admin/terraform/terraform-1.10.5.ebuild new file mode 100644 index 000000000000..ffdf655dd6a1 --- /dev/null +++ b/app-admin/terraform/terraform-1.10.5.ebuild @@ -0,0 +1,42 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit go-module + +DESCRIPTION="A tool for building, changing, and combining infrastructure safely" +HOMEPAGE="https://www.terraform.io/" +SRC_URI="https://github.com/hashicorp/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" +SRC_URI+=" https://dev.gentoo.org/~williamh/dist/${P}-deps.tar.xz" + +LICENSE="BUSL-1.1" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~riscv" + +BDEPEND="dev-go/gox" + +RESTRICT="test" + +DOCS=( {README,CHANGELOG}.md ) + +src_compile() { + export CGO_ENABLED=0 + LD_FLAGS="-X 'github.com/hashicorp/terraform/version.dev=no'" + gox \ + -os=$(go env GOOS) \ + -arch=$(go env GOARCH) \ + -ldflags "${LD_FLAGS}" \ + -output bin/terraform \ + -verbose \ + . || die +} + +src_install() { + dobin bin/* + einstalldocs +} + +pkg_postinst() { + elog "If you would like to install shell completions please run:" + elog " terraform -install-autocomplete" +} diff --git a/app-arch/Manifest.gz b/app-arch/Manifest.gz index 0cb6dd7fba6122444a6e7abb7f2526e5d7ee26b7..e157131d2da520dd827c1fdb337386089220d579 100644 GIT binary patch literal 18263 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

D=pDjTVpr}3}($QcfF^S6!?7y-n- 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 bgwYgEmBlF2rYfUS{6GAEeS~%=9)bV>I;ow` diff --git a/app-arch/libdeflate/Manifest b/app-arch/libdeflate/Manifest index bdac2bd1bfd0..68c20b2fc383 100644 --- a/app-arch/libdeflate/Manifest +++ b/app-arch/libdeflate/Manifest @@ -2,6 +2,6 @@ AUX libdeflate-1.19-make-gzip-tests-conditional.patch 1376 BLAKE2B 9480aed1f1a31 DIST libdeflate-1.21.tar.gz 195361 BLAKE2B 8d1f2a71cb6a0823ab93631720f9807a6907f1d92490bb258b9bfcf9daf08b517eab3bdee064326a4274d7b193cffbafa24037e2be2503c17fa8daddef5cfff5 SHA512 7cd9bc91992ef824a0fdf175b0da081b8381decc325013477a3fbfcfe6cf240f66cedbeec830a51343fedb8c27c76fba8782c1aed3fc538e3afd6c9f8cdc90fb DIST libdeflate-1.23.tar.gz 197519 BLAKE2B 6921aaf0fde3a2c1a8b04484879c64c2da2ee499353927fa20e8816932a4ccdc53af302f978eb099ee01f1a4c2ac5184529886d1c2a7adcb388ddd9fbd2b078f SHA512 c1effb9c5ee8d65bc12ae3d0669a4a394acace13cc146300ed24a7f12a0ec058f66729e1ffbae268711bdcc4151143752ab2d56a099dd6394b2735e8e2f1b671 EBUILD libdeflate-1.21.ebuild 1293 BLAKE2B d992c63d6b7a460bc2a18350ef2db232e3ff487ef15d6965907f1e3981b7e1b2ff8a61be0391962da123b656654c26fcc22fa97bac19a1e761474259ba01f40a SHA512 b056e0d5958b064122e5698a0adf04b46b43083821b7d8b79fd75c08f10453bbe38f71a6b63cb107e810461ccc6302079ac1930d9efc3f6c8d0edf3ef6a66d96 -EBUILD libdeflate-1.23.ebuild 1300 BLAKE2B b1bd76d30b74777a664a2aa9deb343eccc43c0d935e8b9c77d497a0760e6c1501128bb18d7cd8a6b9e404711c15d34b5fdeccb4717fda002e47f0749ff37f311 SHA512 1ff8aa4c98d612a73b670d71d815f4630e42559cffc876f4fcc5a57084afb5eaadc0b6383a12cc7a8cd528adbc2c7479c63f883fa96131cb4c81d8143210e449 +EBUILD libdeflate-1.23.ebuild 1296 BLAKE2B 295e6d3a4770036e64a27fe26d79e0cca514dda01ac3df5bf3bfadda0e8d8c637e460cf0acba7f4ceba42111b9bb0e6ddd7bc36428e3a48b9f56c281ddf1318f SHA512 8339af9e93558dc846d9f398f57fc175cfbc8d44eb2fe8bd8dba0f61911fc8b259769743449c7d5441c693ccf78272d190ef310958b1f2597d4df8c66cc2b329 EBUILD libdeflate-9999.ebuild 1294 BLAKE2B 250c4adc569764c4fb38443794103228498299c751912c20735fb72c39a6552492683a9a825535ab7681b509b71b6d830dfa35576d9064f4ba6c48349494087b SHA512 e22adbc6e3cc0b7030ef3eac3d0c391a87f66663161c8f302a84e00b62d5f56c6610cc1c64eefbff2944efb31480d418acce59c3b69b65cc2d99ce0107ad5b06 MISC metadata.xml 677 BLAKE2B ef9eee70214885dc6195ac1d8a8396c2022ab40e3bf35765ec58f1bc78b771973d0ea304aee25d625b7fe938f709cc1b4fe195f4f7e3ccc22ad2b197a8056f01 SHA512 812274509ca55d81b117ca61ed175ed3dcc3d83fa1bf6ee3fc5a72fbd4833e1be0f9789cefcebc206b3f9171f25c06df370f20446a4300a3d0040f8efde8ab60 diff --git a/app-arch/libdeflate/libdeflate-1.23.ebuild b/app-arch/libdeflate/libdeflate-1.23.ebuild index 782a8b4efe16..4f1b5bf2903e 100644 --- a/app-arch/libdeflate/libdeflate-1.23.ebuild +++ b/app-arch/libdeflate/libdeflate-1.23.ebuild @@ -13,7 +13,7 @@ if [[ ${PV} == *9999* ]]; then EGIT_REPO_URI="https://github.com/ebiggers/libdeflate.git" else SRC_URI="https://github.com/ebiggers/libdeflate/archive/v${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" fi LICENSE="MIT" diff --git a/app-arch/par2cmdline/Manifest b/app-arch/par2cmdline/Manifest index 799641623d39..d80e0e01debc 100644 --- a/app-arch/par2cmdline/Manifest +++ b/app-arch/par2cmdline/Manifest @@ -1,5 +1,4 @@ AUX par2cmdline-0.8.1-big-endian.patch 2911 BLAKE2B 749e0f955997d52da1b676d750057724e78302cdf70bff777b1bbf68945faedabbd050339950a96121a4aa197af0b0520a4e9665f3d3767fbacdf60a6baa2f55 SHA512 4186f8b3506dab8128abae28549fd2af4200aa656c65682fe68f02c04c1b0bc45144d24851ff54ef82ac4d40d7f1eb3ae9fae31d426a1092447cee339e3c0016 DIST par2cmdline-0.8.1.tar.bz2 3213343 BLAKE2B 4778fd32012c61739e04a4e564eaedf48527c04b0d83c5467c34808913e81cd5459a6a5bfabe79ca74f520761ebd3592e80b714f3ef45cc98866da919757a176 SHA512 b33ee654bd14269afb02d48175abf183281270c3e0dad9ffcaa0aa69c4271715a85e550d6d56fe5460ebfe9a37dc53b7d2210cd79a6f55d3921dc5dd5972c846 -EBUILD par2cmdline-0.8.1-r1.ebuild 730 BLAKE2B 5f65c18c03a8a1328b09a302dd176d9ca01b03e78d0b1722b03b8559aa78ba6559fab139afafdf2f6ea0a4daf496d9099a80a371a96e8488e123f620b41258bb SHA512 cefef3a28ee98a32c0370a5931d63bcf8cea3412ab612d5a4742e8679805c6fde9722e51040e46764ed5c2db61c0a4463123ee5e9a8dec9e5fd9c4c538dc6b03 EBUILD par2cmdline-0.8.1-r2.ebuild 709 BLAKE2B f8b4d6868d925d7131f59c8fe6761d9e13fbfdd376b82d1dc49a620d112cb8997d635bc03b991d49fe41e0372c7e28c11a14aad039536ccfdce46b4a1f799ce9 SHA512 7369609ef362a18a83ad21296b4d7b62f440497d0a6750ab38647eb0bc3ce95f84983b7663d292ebaccd517517d9411df9c140c2d4cf14c6aed00e35297f3a0a MISC metadata.xml 313 BLAKE2B 13e31cd90dad938be801aba6086fa8234878f9b691decd84e1fb56108a10e368c6442098b8574874f5c405f33d85c6236eb30e21e8f57e7e7c09deefe541a1d8 SHA512 88cd31f008359d686c66f9813f498c5c4c3f7662a5acfe5c7eac7c244bc0688fc544b36dd711c1949624c186e143f0d46e9c636b7ff54f401f67d95f3d33d69d diff --git a/app-arch/par2cmdline/par2cmdline-0.8.1-r1.ebuild b/app-arch/par2cmdline/par2cmdline-0.8.1-r1.ebuild deleted file mode 100644 index 2c68a78dc0f9..000000000000 --- a/app-arch/par2cmdline/par2cmdline-0.8.1-r1.ebuild +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit toolchain-funcs - -DESCRIPTION="A PAR-2.0 file verification and repair tool" -HOMEPAGE="https://github.com/Parchive/par2cmdline" -SRC_URI="https://github.com/Parchive/${PN}/releases/download/v${PV}/${P}.tar.bz2" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="amd64 ~arm ~hppa ppc ~ppc64 x86 ~amd64-linux ~x86-linux ~ppc-macos" -IUSE="openmp" - -PATCHES=( "${FILESDIR}"/${P}-big-endian.patch ) - -pkg_pretend() { - [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp -} - -pkg_setup() { - [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp -} - -src_test() { - # test22 fails when run in parallel - emake -j1 check -} diff --git a/app-arch/patool/Manifest b/app-arch/patool/Manifest index 8933c0941296..214ea4e900cd 100644 --- a/app-arch/patool/Manifest +++ b/app-arch/patool/Manifest @@ -1,5 +1,8 @@ +AUX patool-3.1.0-fix-file-5.46-compat.patch 9022 BLAKE2B 1f383807ed199d3b5208279c00319281ed71257d9101d8a66019d188c7ee78d879666c43399b44d9af8ed74dedf7a4f89b30e98f1f22c4c3ec9876f588b3813e SHA512 3f4e4535925d62474f7d6c2df71d89ba3c036531c70aa49c57ab858378a81efd88fad3138fbfc7a1db2bc602431de8b83bb50594afc84435857051c28e868433 DIST patool-2.4.0.tar.gz 1996705 BLAKE2B b84fd4c469741de76ceeee90974cec71ba5bc123d31f6a1dd60cf3c336dcfd7da1def7fec2bbec27ce181d97c5dff96f15c1d4714b722718a1439749f7cee077 SHA512 bf6d680613fb996b3c0b12075a85acec1edd468b8cb58cafd233b31847a2b9c490d21c6d906e737218ca68f08d1cdce4a18a3e57e353a970be58da4e2ff0d794 DIST patool-3.0.3.tar.gz 2003565 BLAKE2B 988b918f52c5f050c78fdd16351d95c2c23351e8e5e92c884e3ab32f9d0cfc33140db96ce309bb3e465c1a51fbade0c530cbfef3f222dcf89f26d4d35d67bf88 SHA512 c81d13f0183432ba4f3b98951b4f5716a95396eec063b09435c0e3cdf88734107e8a8b647ff6ffe84ea808cc12882b823f95b4edf871874913ca127597fe7348 +DIST patool-3.1.0.tar.gz 2006989 BLAKE2B b264c125e7454d677084a17b7e27daab437057750bce7646b451cd3e33b718e8c720ac64a1c05c8b55b4918ca89455698e7829ce5bd1fe0f951c8e2300fe3d73 SHA512 75912a5545f52226e07fe1f34b3c8c9af48e1b2f21da96380e41c0c397cf79a774d041f1d29b643d645f6d5213f0e66b07a26018e1286f7b2760c7bd8a1f6ec9 EBUILD patool-2.4.0.ebuild 2552 BLAKE2B 626b08c1d3b89d54af16df64814103d12b92d8dd596f30647b82f58ef7d62e9d835e555a1794440462b93afea4bbe03a3cab247fd1723034df1b6cb40f794d28 SHA512 582aa05d32792f789565cb03ea57ab8bf10330e495ff0a4e70ee0a2cf8ac0489ea4e0e53094719d1efbe2bf70a49f625563cd51ccdfe89c58cfe977f74e5fceb -EBUILD patool-3.0.3.ebuild 2554 BLAKE2B 841b4b85c155ce6e7b7e7de9026e65c68fc26e1f426323045738185860f73658d2f9a7db55b0bfec373573b9aec957889b5f081f7a5bd2994d1e9333c69a7b65 SHA512 eef6c743f84ace9db290d9e30b1b4303590faf44bfc35209c7812de3103b2169784927cd8a2ff15ef45ba8a3563b360a5c309b6379accbadc22ece3874dd09e9 +EBUILD patool-3.0.3.ebuild 2702 BLAKE2B 14819ccdbf5bbe28d540fda467da2ac97f2fb84d688adc50a19fb1e18e868d6ddee6dc626408276d2e5a9a3918755280beffa05974b138b5259cd0222d079b48 SHA512 973970abb3f3806a752c904ba78fbffa8bc3644ad04b381ea302d888a35b27189dac5d415d8ca8a39b0442374f82386ac1c04e9de8b3244e27ae306aa74f9b53 +EBUILD patool-3.1.0.ebuild 2622 BLAKE2B 8966830e57650387caa19839cca506f5871be43147a4f3cdf490e23d9398c9b92afefcbc7691dc07069452fd2b66f357045398aee4c9eb5648202e74575111d6 SHA512 92888f1df32a0e024ff200c1fbfde9e295f90edd0a95b15610bad2226d0db0b5a8ae4be62b5fd96efd26601274b88ac89134d11592d444e91e4ec7711a24e3fc MISC metadata.xml 539 BLAKE2B b19f1ad36967b42e152a23108851ad6eabcd7f44fd1faeeb4c345ff812b97d4b4079afc83653c1fd0dd005943a152cba44210132389e1ec956a434d24e97486d SHA512 b557ec32ca1211faa72e108a7f769f4ffb3a08075a4010aee2f9ced79a9f7f8c26f60bf26e2587d4a0cbb3cf6d52ea52d9102407ed548cdd41f53c67dd10d7bb diff --git a/app-arch/patool/files/patool-3.1.0-fix-file-5.46-compat.patch b/app-arch/patool/files/patool-3.1.0-fix-file-5.46-compat.patch new file mode 100644 index 000000000000..6d9aeec17639 --- /dev/null +++ b/app-arch/patool/files/patool-3.1.0-fix-file-5.46-compat.patch @@ -0,0 +1,189 @@ +https://github.com/wummel/patool/pull/173 + +Used the above PR but removed changes that aren't 100% required. + +From d10324eac4429ff3d7d38ad24a19210699229e07 Mon Sep 17 00:00:00 2001 +From: Alfred Wingate +Date: Wed, 11 Dec 2024 06:34:36 +0200 +Subject: [PATCH 1/4] Use application/gzip as the preferred mimetype for gzip + +Signed-off-by: Alfred Wingate +--- a/patoolib/__init__.py ++++ b/patoolib/__init__.py +@@ -127,7 +127,6 @@ + 'application/x-cpio': 'cpio', + 'application/x-debian-package': 'deb', + 'application/x-dms': 'dms', +- 'application/x-gzip': 'gzip', + 'application/x-iso9660-image': 'iso', + 'application/x-lz4': 'lz4', + 'application/x-lzop': 'lzop', +--- a/patoolib/mime.py ++++ b/patoolib/mime.py +@@ -135,9 +135,11 @@ def guess_mime(filename: str) -> tuple[str | None, str | None]: + Mime2Encoding: dict[str, str] = dict( + [(_val, _key) for _key, _val in Encoding2Mime.items()] + ) +-# libmagic before version 5.14 identified .gz files as application/x-gzip +-Mime2Encoding['application/x-gzip'] = 'gzip' + ++LegacyMimeType: dict[str, str] = { ++ # libmagic before version 5.14 identified .gz files as application/x-gzip ++ 'application/x-gzip': "application/gzip", ++} + + def guess_mime_mimedb(filename: str) -> tuple[str | None, str | None]: + """Guess MIME type from given filename. +@@ -192,6 +194,10 @@ def guess_mime_file(filename: str) -> tuple[str | None, str | None]: + except (OSError, subprocess.CalledProcessError) as err: + log_warning(f"error executing {cmd}: {err}") + mime2 = None ++ ++ if mime2 in LegacyMimeType: ++ mime2 = LegacyMimeType[mime2] ++ + # Some file(1) implementations return an empty or unknown mime type + # when the uncompressor program is not installed, other + # implementation return the original file type. +@@ -227,6 +233,10 @@ def guess_mime_file_mime( + except OSError as err: + # ignore errors, as file(1) is only a fallback + log_warning(f"error executing {cmd}: {err}") ++ ++ if mime in LegacyMimeType: ++ mime = LegacyMimeType[mime] ++ + if mime not in ArchiveMimetypes: + mime, encoding = None, None + return mime, encoding +@@ -253,7 +263,7 @@ def get_file_mime_encoding(parts: Sequence[str]) -> str | None: + "cpio archive": "application/x-cpio", + "ASCII cpio archive": "application/x-cpio", + "Debian binary package": "application/x-debian-package", +- "gzip compressed data": "application/x-gzip", ++ "gzip compressed data": "application/gzip", + "LZMA compressed data": "application/x-lzma", + "LRZIP compressed data": "application/x-lrzip", + "lzop compressed data": "application/x-lzop", +--- a/tests/test_mime.py ++++ b/tests/test_mime.py +@@ -81,8 +81,8 @@ def test_mime_file(self): + self.mime_test_file("t.cpio.foo", "application/x-cpio") + self.mime_test_file("t.deb", "application/x-debian-package") + self.mime_test_file("t.deb.foo", "application/x-debian-package") +- self.mime_test_file("t.txt.gz", ("application/gzip", "application/x-gzip")) +- self.mime_test_file("t.txt.gz.foo", ("application/gzip", "application/x-gzip")) ++ self.mime_test_file("t.txt.gz", "application/gzip") ++ self.mime_test_file("t.txt.gz.foo", "application/gzip") + self.mime_test_file("t.jar", "application/zip") + self.mime_test_file("t.jar.foo", "application/zip") + self.mime_test_file("t.txt.lzma", "application/x-lzma") + +From e7501d1c7805696ff5b2ecc779f7a56ab2425c3f Mon Sep 17 00:00:00 2001 +From: Alfred Wingate +Date: Wed, 11 Dec 2024 06:37:54 +0200 +Subject: [PATCH 2/4] Change rar mime type to application/vnd.rar + +https://github.com/file/file/commit/d46a1f3dbbf58eb510c1779b8bdcc59d5ee24ab9 +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1068700 + +Signed-off-by: Alfred Wingate +--- a/patoolib/__init__.py ++++ b/patoolib/__init__.py +@@ -136,7 +136,6 @@ + 'application/x-lrzip': 'lrzip', + 'application/x-lzh': 'lzh', + 'application/x-ms-wim': 'wim', +- 'application/x-rar': 'rar', + 'application/x-redhat-package-manager': 'rpm', + 'application/x-rpm': 'rpm', + 'application/x-rzip': 'rzip', +@@ -147,6 +146,7 @@ + 'application/x-xz': 'xz', + 'application/x-zip-compressed': 'zip', + 'application/x-zoo': 'zoo', ++ 'application/vnd.rar': 'rar', + 'application/zip': 'zip', + 'application/zpaq': 'zpaq', + "application/zstd": "zstd", +--- a/patoolib/mime.py ++++ b/patoolib/mime.py +@@ -54,8 +54,8 @@ def add_mimedb_data(mimedb: mimetypes.MimeTypes) -> None: + add_mimetype(mimedb, 'application/x-lzma', '.lzma') + add_mimetype(mimedb, 'application/x-xz', '.xz') + add_mimetype(mimedb, 'application/java-archive', '.jar') +- add_mimetype(mimedb, 'application/x-rar', '.rar') +- add_mimetype(mimedb, 'application/x-rar', '.cbr') ++ add_mimetype(mimedb, 'application/vnd.rar', '.rar') ++ add_mimetype(mimedb, 'application/vnd.rar', '.cbr') + add_mimetype(mimedb, 'application/x-7z-compressed', '.7z') + add_mimetype(mimedb, 'application/x-7z-compressed', '.cb7') + add_mimetype(mimedb, 'application/x-cab', '.cab') +@@ -139,8 +139,11 @@ def guess_mime(filename: str) -> tuple[str | None, str | None]: + LegacyMimeType: dict[str, str] = { + # libmagic before version 5.14 identified .gz files as application/x-gzip + 'application/x-gzip': "application/gzip", ++ # libmagic before version 5.46 identified .rar files as application/x-rar ++ 'application/x-rar': "application/vnd.rar", + } + ++ + def guess_mime_mimedb(filename: str) -> tuple[str | None, str | None]: + """Guess MIME type from given filename. + @return: tuple (mime, encoding) +@@ -268,7 +271,7 @@ def get_file_mime_encoding(parts: Sequence[str]) -> str | None: + "LRZIP compressed data": "application/x-lrzip", + "lzop compressed data": "application/x-lzop", + "Microsoft Cabinet archive data": "application/vnd.ms-cab-compressed", +- "RAR archive data": "application/x-rar", ++ "RAR archive data": "application/vnd.rar", + "RPM ": "application/x-redhat-package-manager", + "POSIX tar archive": "application/x-tar", + "xz compressed data": "application/x-xz", +--- a/tests/test_mime.py ++++ b/tests/test_mime.py +@@ -91,10 +91,10 @@ def test_mime_file(self): + self.mime_test_file("t.txt.lz.foo", "application/x-lzip") + self.mime_test_file("t.txt.lzo", "application/x-lzop") + self.mime_test_file("t.txt.lzo.foo", "application/x-lzop") +- self.mime_test_file("t.rar", "application/x-rar") +- self.mime_test_file("t.rar.foo", "application/x-rar") +- self.mime_test_file("t.cbr", "application/x-rar") +- self.mime_test_file("t.cbr.foo", "application/x-rar") ++ self.mime_test_file("t.rar", "application/vnd.rar") ++ self.mime_test_file("t.rar.foo", "application/vnd.rar") ++ self.mime_test_file("t.cbr", "application/vnd.rar") ++ self.mime_test_file("t.cbr.foo", "application/vnd.rar") + self.mime_test_file("t.rpm", "application/x-rpm") + self.mime_test_file("t.rpm.foo", "application/x-rpm") + self.mime_test_file("t.tar", "application/x-tar") +@@ -197,8 +197,8 @@ def test_nested_gzip(self): + """Test mime detection of archives with double compression""" + # We won't extract this with rar, as it doesn't support archives wrapped in gzip + # compression, but we will recognize the archive as a gzip-wrapped rar-file +- self.mime_test_file("t.rar.gz", "application/x-rar", "gzip") +- self.mime_test_file("t.rar.gz.foo", "application/x-rar", "gzip") ++ self.mime_test_file("t.rar.gz", "application/vnd.rar", "gzip") ++ self.mime_test_file("t.rar.gz.foo", "application/vnd.rar", "gzip") + + @needs_program('file') + @needs_program('gzip') +@@ -237,7 +237,7 @@ def test_mime_mimedb(self): + self.mime_test_mimedb("t .bz2", "application/x-bzip2") + self.mime_test_mimedb("t .bz3", "application/x-bzip3") + self.mime_test_mimedb("t.cab", "application/x-cab") +- self.mime_test_mimedb("t.cbr", ("application/rar", "application/x-rar")) ++ self.mime_test_mimedb("t.cbr", ("application/rar", "application/vnd.rar")) + self.mime_test_mimedb("t.cpio", "application/x-cpio") + self.mime_test_mimedb("t.deb", "application/x-debian-package") + self.mime_test_mimedb("t.gz", "application/gzip") +@@ -247,7 +247,7 @@ def test_mime_mimedb(self): + self.mime_test_mimedb("t.txt.lz", "application/x-lzip") + self.mime_test_mimedb("t.txt.lz4", "application/x-lz4") + self.mime_test_mimedb("t.lzo", "application/x-lzop") +- self.mime_test_mimedb("t.rar", ("application/rar", "application/x-rar")) ++ self.mime_test_mimedb("t.rar", ("application/rar", "application/vnd.rar")) + self.mime_test_mimedb( + "t.rpm", ("application/x-redhat-package-manager", "application/x-rpm") + ) + diff --git a/app-arch/patool/patool-3.0.3.ebuild b/app-arch/patool/patool-3.0.3.ebuild index 9fcc78d0b714..8e8053efb9bf 100644 --- a/app-arch/patool/patool-3.0.3.ebuild +++ b/app-arch/patool/patool-3.0.3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -13,7 +13,7 @@ HOMEPAGE="https://wummel.github.io/patool/" LICENSE="GPL-3" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="amd64 x86" BDEPEND=" test? ( @@ -108,6 +108,9 @@ python_test() { "tests/archives/test_arc.py" # Error: 1002 (invalid input file) "tests/archives/test_mac.py" + # Broken due mime type change for rar in file-5.46 + # https://github.com/wummel/patool/pull/173 + "tests/test_mime.py::TestMime::test_nested_gzip" ) if use elibc_musl; then diff --git a/app-arch/patool/patool-3.1.0.ebuild b/app-arch/patool/patool-3.1.0.ebuild new file mode 100644 index 000000000000..19470cd52d22 --- /dev/null +++ b/app-arch/patool/patool-3.1.0.ebuild @@ -0,0 +1,132 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..13} ) + +inherit distutils-r1 pypi + +DESCRIPTION="Portable archive file manager" +HOMEPAGE="https://wummel.github.io/patool/" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +BDEPEND=" + test? ( + app-arch/arj + app-arch/bzip2 + app-arch/bzip3 + app-arch/cabextract + app-alternatives/cpio + app-arch/dpkg + app-arch/gzip + app-arch/lbzip2 + app-arch/lcab + app-arch/lha + app-arch/libarchive + app-arch/lz4 + app-arch/lzip + app-arch/lzop + app-arch/ncompress + app-arch/p7zip[rar] + app-arch/pbzip2 + app-arch/pdlzip + app-arch/pigz + app-arch/plzip + app-arch/rpm + app-arch/rzip + app-arch/sharutils + app-arch/tar + app-arch/unace + app-arch/unadf + app-arch/unzip + app-arch/xdms + app-arch/xz-utils + app-arch/zip + app-arch/zopfli + app-arch/zpaq + app-arch/zstd + app-cdr/cdrtools + dev-libs/chmlib + media-libs/flac + media-sound/shorten + sys-apps/diffutils + sys-apps/file + sys-apps/grep + !elibc_musl? ( app-arch/rar ) + !x86? ( + app-arch/clzip + app-arch/lrzip + app-arch/unar + ) + ) +" +# Test dependencies which are packaged but can't be tested for various reasons. +# app-arch/arc +# app-arch/zoo +# media-sound/mac + +# app-arch/rar is masked on musl +# app-arch/clzip is unkeyworded on x86 +# app-arch/lrzip bug #916317 on x86 +# app-arch/unar is unkeyworded on x86 + +# Unpackaged testable dependencies +# archmage +# genisoimage +# lhasa +# nomarch +# pdzip2 +# py_{bz2,echo,gzip,tarfile,zipfile} +# rpm2cpio +# rzip +# star +# unalz +# uncompress.real +# 7zz ( app-arch/7zip:guru ) + +distutils_enable_tests pytest + +PATCHES=( + "${FILESDIR}"/patool-3.1.0-fix-file-5.46-compat.patch +) + +src_install() { + distutils-r1_src_install + + einstalldocs + doman doc/patool.1 +} + +python_test() { + local EPYTEST_IGNORE=( + # zoo emits a non-zero exit status on a possibly false consistency check + # Zoo: WARNING: Archive header failed consistency check. + "tests/archives/test_zoo.py" + # Doesn't accept long arguments, such as those that files in ${S} would have. + # Too long argument: /var/tmp/portage/app-arch/patool-1.12_p20230424/work/patool-ab64562c8cdac34dfd69fcb6e30c8c0014282d11/tests/data/p.arc.foo + "tests/archives/test_arc.py" + # Error: 1002 (invalid input file) + "tests/archives/test_mac.py" + ) + + if use elibc_musl; then + EPYTEST_IGNORE+=( + "tests/archives/test_rar.py" + ) + fi + + if use x86; then + EPYTEST_IGNORE+=( + "tests/archives/test_clzip.py" + # bug #916317 + "tests/archives/test_lrzip.py::TestLrzip::test_lrzip" + ) + fi + + epytest +} diff --git a/app-arch/torrentzip/Manifest b/app-arch/torrentzip/Manifest index 32f16d094b75..7d021d6a169e 100644 --- a/app-arch/torrentzip/Manifest +++ b/app-arch/torrentzip/Manifest @@ -1,3 +1,3 @@ DIST trrntzip-1.3.tar.gz 67297 BLAKE2B c77fd134cfd3ab30f46b66f4b3dd36b899ee6267b17100b1ad15bdf5c6beddaea94fe22d23f1a81de85522768d76401f0192d0deac2ff75edc816510c8069e2c SHA512 c21ed6ac4dacd652e2a67b700741d70dd9da699259bd299ca177c741111f92e70eef0b3ad2ced54b5635780cab2b4c46b3f9c258dfa18bdde24e2718c38339be -EBUILD torrentzip-1.3.ebuild 896 BLAKE2B 722fcd384499449d217391aff9fb0dcf154892342b4ccf2016c60ce8bcd53270984fa93dbeffc33c754998fbba5042eb5c188ac3eee6b934f3ad0e8b86b9e3a5 SHA512 7650a25ae9480d95cded632bf44111e8d6b0d7bc4f6bbf20d13ed585fade3bcfa4fc60f2778b632a07e560934760846cc842b4a785e8f767f7365af6b0b73354 +EBUILD torrentzip-1.3.ebuild 896 BLAKE2B 46d215f14f57e834921d567f9af9b133518d83fd04248a798ba3881402f4bd58fa0bfc1af404679ddbfa2b1ff467fa6d8deaa64c6bd09778b638f49f3d7c20d0 SHA512 3910e014931d67f9efe86c05e485e256f6aee8c328465b81f7604b12d1bebc7d973a2b677d41ee369ce1f4f8c1cee3d853f0c18b14b3f15c819378a5fab9d676 MISC metadata.xml 928 BLAKE2B b0a650f0cd81be849f08bd6f078035ae7b56967034b3b9ba534da5d046936f7b27e819dc05ee94b2b8d95ca54ceafb8b521f7121eec0f4d5c4fdd0d8ac141ede SHA512 101e70ac70fdc24294dae2f18057c84e75dd0c776689883ea630f2dcd4ddd2b3da1f7e6643ffc5fd1aed2f5e355aa6700174bca0c16eb1fa84d9f531d7eba064 diff --git a/app-arch/torrentzip/torrentzip-1.3.ebuild b/app-arch/torrentzip/torrentzip-1.3.ebuild index 7a3ce63d28a3..f687ce654f88 100644 --- a/app-arch/torrentzip/torrentzip-1.3.ebuild +++ b/app-arch/torrentzip/torrentzip-1.3.ebuild @@ -1,9 +1,9 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_COMPAT=( python3_{10..13} ) inherit cmake python-any-r1 MY_P="trrntzip-${PV}" diff --git a/app-arch/xz-utils/Manifest b/app-arch/xz-utils/Manifest index b126a4eb5e1d..72e3a2a5e7b6 100644 --- a/app-arch/xz-utils/Manifest +++ b/app-arch/xz-utils/Manifest @@ -11,7 +11,7 @@ DIST xz-5.7.1alpha.tar.gz.sig 566 BLAKE2B 33c23b3aace6856f67b927d2f5b46f60f1e96e EBUILD xz-utils-5.4.7-r1.ebuild 4421 BLAKE2B 1815a71ccbdda839d2659735fe14084274425e571f9de4b617c5d977fd2b54f420cc0f0bbb3604660fd9e2af4074e20bb23095ce694157025f03886e861d407e SHA512 17c066a72cb79c1e558bebdd37bafa04b2b34be1249dc24568d4c8622013ebdfcfd922542d171e2ac09276bac2eb97e8a19d7b9a577c7f5aafc815ebef692f3f EBUILD xz-utils-5.6.2-r1.ebuild 5843 BLAKE2B 4d0f1c5bd9e20d77523902b1c31b3bfea0c46e58a01b3d80c467d0898dc2b5302294c13d180a5bf26c9f52278014895a11496b8d11fe6ddba6187d352d200e16 SHA512 6b98fc14326aab5526b0dd6e812fe97e31bef5cd6c8e5f712eecee5bc3635b9c11ef303a119a9bfe6d605bbdf7045e70b758b9915a357d4f653531c436bf1faa EBUILD xz-utils-5.6.3.ebuild 5652 BLAKE2B 9f7575f9b8c79cb3c98a3d29351d8441edef4d100d828a534be7141bbebfabe4976a333d412588503199dd272749e14a11543f412d683617d25b87da0ac17770 SHA512 dd4846591d25f47becb33ab215a1210a6d0a35ecc6ac6286b2a9ca33f31dd9d107a221d377229cebbcd1d43f2263e6d67a49b2d6b870fa02f1d30c841918d9f0 -EBUILD xz-utils-5.6.4.ebuild 5660 BLAKE2B 4e62028da13820e4174602db6004ef711e8d3b33fd6fea66d79045ceed91b76b5e5fb57ba661b034ac3406312b03ca2ed23f0fe07a088eba29c0bd8962eda9b3 SHA512 9a6d02248f2a9c1a853a3bc33f608732cc33c20376a9e1d37cbd656f5e86d199e74cb2b369ea847d46deabb77c8ac543d3012f9c7e698242527beb598d8ba709 -EBUILD xz-utils-5.7.1_alpha.ebuild 5660 BLAKE2B 4e62028da13820e4174602db6004ef711e8d3b33fd6fea66d79045ceed91b76b5e5fb57ba661b034ac3406312b03ca2ed23f0fe07a088eba29c0bd8962eda9b3 SHA512 9a6d02248f2a9c1a853a3bc33f608732cc33c20376a9e1d37cbd656f5e86d199e74cb2b369ea847d46deabb77c8ac543d3012f9c7e698242527beb598d8ba709 -EBUILD xz-utils-9999.ebuild 5660 BLAKE2B 261a1ae99fb87285ffa034fc4e737806a784b46316753820e438a40dcbd8e37d469e3dea82cf6dbf8d185caba6e0c2149212776259509d7057f298c1e2af5baf SHA512 934121468e1e1d1b0a2ddbaa8db03745546d4b244e138cd480dddd5bc4c95a0694ac4e76a859759d77ce3f0ea11a43abbaeb3506704b6d46707ee3cf2f189743 +EBUILD xz-utils-5.6.4.ebuild 5498 BLAKE2B 1de799651067267083537e310098a03d6f77be38efd752e1f71d513c6ec5310dd8cd846e1bf2a83c5e21701777b6125d24e1cfae12c8e09d9601539c4e626945 SHA512 7bfa4f0f03b0fdc4c9afb07b017cb5d79d8e4d3f907f503ec4f2aa861d8dafb0dc7bca259e06383248846c27afba39710740fdf9263c9c83a0bf7102bef4339c +EBUILD xz-utils-5.7.1_alpha.ebuild 5498 BLAKE2B 1de799651067267083537e310098a03d6f77be38efd752e1f71d513c6ec5310dd8cd846e1bf2a83c5e21701777b6125d24e1cfae12c8e09d9601539c4e626945 SHA512 7bfa4f0f03b0fdc4c9afb07b017cb5d79d8e4d3f907f503ec4f2aa861d8dafb0dc7bca259e06383248846c27afba39710740fdf9263c9c83a0bf7102bef4339c +EBUILD xz-utils-9999.ebuild 5498 BLAKE2B 1de799651067267083537e310098a03d6f77be38efd752e1f71d513c6ec5310dd8cd846e1bf2a83c5e21701777b6125d24e1cfae12c8e09d9601539c4e626945 SHA512 7bfa4f0f03b0fdc4c9afb07b017cb5d79d8e4d3f907f503ec4f2aa861d8dafb0dc7bca259e06383248846c27afba39710740fdf9263c9c83a0bf7102bef4339c MISC metadata.xml 748 BLAKE2B fe48d0e6b5aac2c843670597f0daa0202af709c27fe81889da8e4ef6877e35b30009b72831bc737b1078954b6494b508fa1b59305fdaf795db8801d20d9a0638 SHA512 6e64f0053489389818430808acb32cc1d3b33013978adf4952fbf57ab555e0710a106623ac1eb67405f1dd91c33397c5c70bddc9c5015878f280266b29b4e189 diff --git a/app-arch/xz-utils/xz-utils-5.6.4.ebuild b/app-arch/xz-utils/xz-utils-5.6.4.ebuild index c27c74e7eeef..9ee03ab5b7df 100644 --- a/app-arch/xz-utils/xz-utils-5.6.4.ebuild +++ b/app-arch/xz-utils/xz-utils-5.6.4.ebuild @@ -66,10 +66,6 @@ src_prepare() { } multilib_src_configure() { - # Workaround for bug #934370 (libtool-2.5.0), drop when dist tarball - # uses newer libtool with the fix. - export ac_cv_prog_ac_ct_FILECMD='file' FILECMD='file' - local myconf=( --enable-threads $(multilib_native_use_enable doc) diff --git a/app-arch/xz-utils/xz-utils-5.7.1_alpha.ebuild b/app-arch/xz-utils/xz-utils-5.7.1_alpha.ebuild index c27c74e7eeef..9ee03ab5b7df 100644 --- a/app-arch/xz-utils/xz-utils-5.7.1_alpha.ebuild +++ b/app-arch/xz-utils/xz-utils-5.7.1_alpha.ebuild @@ -66,10 +66,6 @@ src_prepare() { } multilib_src_configure() { - # Workaround for bug #934370 (libtool-2.5.0), drop when dist tarball - # uses newer libtool with the fix. - export ac_cv_prog_ac_ct_FILECMD='file' FILECMD='file' - local myconf=( --enable-threads $(multilib_native_use_enable doc) diff --git a/app-arch/xz-utils/xz-utils-9999.ebuild b/app-arch/xz-utils/xz-utils-9999.ebuild index 0a33785a8c4f..9ee03ab5b7df 100644 --- a/app-arch/xz-utils/xz-utils-9999.ebuild +++ b/app-arch/xz-utils/xz-utils-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # Remember: we cannot leverage autotools in this ebuild in order @@ -66,10 +66,6 @@ src_prepare() { } multilib_src_configure() { - # Workaround for bug #934370 (libtool-2.5.0), drop when dist tarball - # uses newer libtool with the fix. - export ac_cv_prog_ac_ct_FILECMD='file' FILECMD='file' - local myconf=( --enable-threads $(multilib_native_use_enable doc) diff --git a/app-backup/Manifest.gz b/app-backup/Manifest.gz index b828b4adf5434742bd26018109bcea9856e0fbfb..3359c3fea7df816963a65858b52c617ed248d529 100644 GIT binary patch delta 7258 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 diff --git a/app-backup/borgmatic/Manifest b/app-backup/borgmatic/Manifest index b4de8a1e3e11..427407add25a 100644 --- a/app-backup/borgmatic/Manifest +++ b/app-backup/borgmatic/Manifest @@ -1,10 +1,10 @@ AUX borgmatic-1.7.14-systemd_service_bin_path.patch 604 BLAKE2B 534a545b5a8d65c6e46102a5e558c25444d82dd3679b81c0ba50c72dfec8ce8f935fdcb558ff61fec7bf30409b4b9809d76e7488554f4461c4b5eac035a60c07 SHA512 9b4c65b249a033f17b68c5209c0132bd94e310d46193a9a85090cb8520220705aacd91c19d713e11e6955c1e0b1e09823abcaf8164ab0f162ff9a62652bb7e56 AUX borgmatic-1.9.3-no_test_coverage.patch 456 BLAKE2B 57964d3d23cd298181619aff5529d0574d70fe9ce002fedd7c9618ff36f89227acc9ba8719eedd0eff5b72f61a56d2de119f7c03d40164b7c01d93f95d6a0509 SHA512 9db6c1c51bfc44ad45891bbf65512fd243ceb8869f103f316f4817b4fae226863e0a02fdaa7ae7cb6ccffd187007b833c0ae671a881e4881b3dec29063cc6e8a -DIST borgmatic-1.9.4.tar.gz 635562 BLAKE2B aac7cea7c7b9537a1f13f6cdd5fc15c3a7d439f9c609a3b05aeb0c10a844f479f0f3a1ec9470283b38594646985cc87c45445602e264f2e8fbabb509691feab4 SHA512 db258ebaa87ac88873c73ab750b7f72278376679c3641c91f4d3565d690a9cb25be5df94bb94aead83f09b27a1d41edbb7e457261440c33fddc9fde3477e7006 +DIST borgmatic-1.9.10.tar.gz 646658 BLAKE2B 8eec2cea8e1001c7d55aef6e267aa18a4db67e33c61a28fe072bbbe99df305672e0e6b4187f5ace470add162298f9facbd805924d486358bca41bfa02538f3c0 SHA512 0d15ce4a3b71ceebfb3185130a9dcdfb80a23111396a9d2f39cae2c69f3eaba54e4005ad13fcce6c728aaf1179fc44a85ab2db1efb3824c7a33743ebaed3a954 DIST borgmatic-1.9.5.tar.gz 638074 BLAKE2B 9947a443bcdd04abe29a3eaf3f790491cddc8283d6e09b56cb3b2aed97e0a424e0251aa9b19b3b5687416f59dec2944ed6d41c99df6e7790fa54a5b2608af0bf SHA512 9ab23865aeef61399a85532450cf7c9bc853a95560d383c83d43966eba0a66718976abdfcb2feec104c8941c0acd5406e2f1812be31b0f4baa76caf6a8ae81c9 DIST borgmatic-1.9.6.tar.gz 640257 BLAKE2B 6d95fe1d12fa401b25d00187a20520003ebc05ceb481add6c0706fcc6bb40f275830cd35f3fa90ea3680457e93a33bf21abb7f3d6423c9268c95b4e356587fdc SHA512 ff2050dcde579e5dffeef915bead5672158387c9a883d9f5b996ba8e804e37d9445b07839f84959cae2b367735f742cab83e143b363cedbb61f38621e2b0a95b DIST borgmatic-1.9.8.tar.gz 642464 BLAKE2B 0473e440d8beb99adac1fcf6c3628f12ca1b9b4337190eaac5aa6cb4726a2be9ada56f1a25be9369cf5a36e5bd53bf2070c2f1579c96bc7375cf5f184a7129af SHA512 a4c524ddddae99d4a244e6d6d7c8d91ea980b29267b2bca8c8dcf45087fa70039088c225a5144e072e5453a76dfbdca61f7718eba4c558d94226222574e9e09a -EBUILD borgmatic-1.9.4.ebuild 2203 BLAKE2B d60948389b067ef922d811990bafc5c61b8b7df2a11fe5af93047c586a652c83ca2f98ab9fb07fa02e31532b5795705b35e9d5cdc4a1046b44bd49103d63cd0d SHA512 63054790f40a697cb940b682b2eb768b6a3da6dd89434b14173ecbbcfb22bcba587d3ef148fdb8a936612959ebb199082bbe3822a87c8539c11fe19351e0a7ce +EBUILD borgmatic-1.9.10.ebuild 2159 BLAKE2B 83e187ecb5fd9262238e60997b0812602dd0aac1922e323112bc6be952cacd40f7f73e7e81baf49bc0f31d6dc2c7215d2dd41f2c61cc538ffb5c87f44c1dc63b SHA512 c47c01a4f87fb65ddddc2a154d8eee67862575df711f3d5fb7fd64040595b4e1eabbdb11ad80dc1db4edea252a4dc48b537b495ed01c729c90d4d6b41ed85340 EBUILD borgmatic-1.9.5.ebuild 2158 BLAKE2B 7e1f3e9a76faf19c91f32e2af5b815c13dc1cb3c1e4fd934cd0347778123175bbe02113dbb13d19481c2696fbe03ab02476aef5705906ceaebcd95bb3eb189cc SHA512 2ac661139a03a726e2a74db9884cdad4cf9da5bf235eedd61b852f2d3977f79e5bfe2c2585aac10e88eba4d8bcdbcb01204e9adeb512aefa77c250037c3aab1a EBUILD borgmatic-1.9.6.ebuild 2159 BLAKE2B 83e187ecb5fd9262238e60997b0812602dd0aac1922e323112bc6be952cacd40f7f73e7e81baf49bc0f31d6dc2c7215d2dd41f2c61cc538ffb5c87f44c1dc63b SHA512 c47c01a4f87fb65ddddc2a154d8eee67862575df711f3d5fb7fd64040595b4e1eabbdb11ad80dc1db4edea252a4dc48b537b495ed01c729c90d4d6b41ed85340 EBUILD borgmatic-1.9.8.ebuild 2159 BLAKE2B 83e187ecb5fd9262238e60997b0812602dd0aac1922e323112bc6be952cacd40f7f73e7e81baf49bc0f31d6dc2c7215d2dd41f2c61cc538ffb5c87f44c1dc63b SHA512 c47c01a4f87fb65ddddc2a154d8eee67862575df711f3d5fb7fd64040595b4e1eabbdb11ad80dc1db4edea252a4dc48b537b495ed01c729c90d4d6b41ed85340 diff --git a/app-backup/borgmatic/borgmatic-1.9.10.ebuild b/app-backup/borgmatic/borgmatic-1.9.10.ebuild new file mode 100644 index 000000000000..dea28ebb55e3 --- /dev/null +++ b/app-backup/borgmatic/borgmatic-1.9.10.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +DISTUTILS_SINGLE_IMPL=1 +DISTUTILS_USE_PEP517=setuptools + +inherit distutils-r1 systemd pypi + +DESCRIPTION="Automatically create, prune and verify backups with borgbackup" +HOMEPAGE=" + https://torsion.org/borgmatic/ + https://projects.torsion.org/borgmatic-collective/borgmatic +" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~riscv" +IUSE="apprise" + +# borg is called as an external tool, hence no pythonic stuff +RDEPEND=" + app-backup/borgbackup + $(python_gen_cond_dep ' + dev-python/jsonschema[${PYTHON_USEDEP}] + dev-python/packaging[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + dev-python/ruamel-yaml[${PYTHON_USEDEP}] + ') + apprise? ( $(python_gen_cond_dep ' + dev-python/apprise[${PYTHON_USEDEP}] + ') ) +" +BDEPEND=" + test? ( + ${RDEPEND} + $(python_gen_cond_dep ' + dev-python/apprise[${PYTHON_USEDEP}] + >=dev-python/flexmock-0.10.10[${PYTHON_USEDEP}] + ') + ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.7.14-systemd_service_bin_path.patch + "${FILESDIR}"/${PN}-1.9.3-no_test_coverage.patch +) + +EPYTEST_DESELECT=( + # A fragile test whose only purpose is to make sure the NEWS file + # has been updated for the current version. + tests/integration/commands/test_borgmatic.py::test_borgmatic_version_matches_news_version +) + +distutils_enable_tests pytest + +src_install() { + distutils-r1_src_install + systemd_dounit sample/systemd/borgmatic.{service,timer} + keepdir /etc/borgmatic +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + elog "To generate a sample configuration file, run:" + elog " ${PN} config generate" + elog + elog "Systemd users wishing to periodically run ${PN} can use the provided timer and service units." + else + local oldver + for oldver in ${REPLACING_VERSIONS}; do + if ver_test "${oldver}" -lt 1.9.0; then + ewarn "Please be warned that ${PN}-1.9.0 has introduced several breaking changes." + ewarn "For details, please see" + ewarn + ewarn " https://github.com/borgmatic-collective/borgmatic/releases/tag/1.9.0" + ewarn + break + fi + done + fi +} diff --git a/app-backup/borgmatic/borgmatic-1.9.4.ebuild b/app-backup/borgmatic/borgmatic-1.9.4.ebuild deleted file mode 100644 index 1e9c83f8a70d..000000000000 --- a/app-backup/borgmatic/borgmatic-1.9.4.ebuild +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..13} ) -DISTUTILS_SINGLE_IMPL=1 -DISTUTILS_USE_PEP517=setuptools - -inherit distutils-r1 systemd pypi - -DESCRIPTION="Automatically create, prune and verify backups with borgbackup" -HOMEPAGE=" - https://torsion.org/borgmatic/ - https://projects.torsion.org/borgmatic-collective/borgmatic -" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="amd64 ~arm ~arm64 ~riscv" -IUSE="apprise" - -# borg is called as an external tool, hence no pythonic stuff -RDEPEND=" - app-backup/borgbackup - $(python_gen_cond_dep ' - -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 P>2LlY$nH)cW+DIpk2Fe5 literal 4848 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 VvReWTkxT!l{{h2P4sD1v002mlT~Po4 literal 7494 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 QF8!bW2Op*5j)ye>0IS_e@Bjb+ diff --git a/app-cdr/ccd2iso/Manifest b/app-cdr/ccd2iso/Manifest index 2b551ee970eb..0e122f2e6d1c 100644 --- a/app-cdr/ccd2iso/Manifest +++ b/app-cdr/ccd2iso/Manifest @@ -1,4 +1,5 @@ AUX ccd2iso-0.3-headers.patch 240 BLAKE2B 536e0114f0485ae4e79f8801f737c380cafdc37c6d2dc1f272415385324839cfddd56af7f07085bfb181ae1a1e05531ecc6869b6f66b35dd89c8c9d50a1ead1e SHA512 e0d334fb378d5ad0dc25653ab810d3c55a0f8c19a03b4b2180352a20e2b9e405209b37448f57a72fd7c2628601e6f5528118db3fe9e431d580c7d9443bb440a3 DIST ccd2iso-0.3.tar.gz 158221 BLAKE2B 5cb83f62f6b98e725c5c30e58e9082fd6eff612169d3b8fe0d244bd567f7319879c99792400f788b736874f5ae026ed53154b8e5599f82fbfea879e634f8f155 SHA512 40e0e5bd792c851dd0549a08a3a0d7226cc05893316dc9575d4c9131dce758d992081355de569e3e66dca310545bf3a17c1cd6431ab97e790fdbe5b19c09adc1 EBUILD ccd2iso-0.3-r1.ebuild 432 BLAKE2B d9df41337227204fbeefcdf48cae35e0daee837811a705b9f8f6369dda5a813c460e56a96b579636dfb36a0b87df95aa3a46e7fe62b3891ed0b03c37a3e94f1a SHA512 f8da357e4f08d41edb67f5fee5f702c9cc162e3a5ac0b1b30f1ca2b9f53368d72573d77558d4209a5ad8a12322e91c76964782c4114ac855ca46bc9e865c828f +EBUILD ccd2iso-0.3-r2.ebuild 532 BLAKE2B 1c70a655ca4488af18da5b4c395247336dbea2d01a1c28f08c0ca86766e3bd30d2c762dee45e7fb343bc18ee7ca108a44aa37f5dfcca80b8f85dbede95ffe60e SHA512 8b9889f1aeccb0d67e3e24c11ac37f444e1f6d3eae82ebe5b1d3ab1728796038667a48f8a291eeee863c3960eb39c5a1c79b01e90f82011fea261f8e7e225cad MISC metadata.xml 243 BLAKE2B 1ebc64c54e4359596f57f068fa5b1d68c709b51b19b8e770bb26b2cb8d5511c2743e6f7be5c941470a7bfcda4b77d3665af67c3effba0bd453b44d5b19bb9f12 SHA512 5df241e7491038cca5badda5347325a856c5b936a7cc9e68530352b53294eb7ca7c3abdfda754c7178308408bd2b0000dcf4224ba4f86a608c5a48dab703290e diff --git a/app-cdr/ccd2iso/ccd2iso-0.3-r2.ebuild b/app-cdr/ccd2iso/ccd2iso-0.3-r2.ebuild new file mode 100644 index 000000000000..094ca6621dcb --- /dev/null +++ b/app-cdr/ccd2iso/ccd2iso-0.3-r2.ebuild @@ -0,0 +1,22 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="Convert CD images from ccd (CloneCD) to iso" +HOMEPAGE="https://sourceforge.net/projects/ccd2iso/" +SRC_URI="https://downloads.sourceforge.net/ccd2iso/${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" + +PATCHES=( "${FILESDIR}"/${P}-headers.patch ) + +src_prepare() { + default + #C99 https://bugs.gentoo.org/900126 + eautoreconf +} diff --git a/app-cdr/cue2toc/Manifest b/app-cdr/cue2toc/Manifest index fc00cca406ac..f493bef92016 100644 --- a/app-cdr/cue2toc/Manifest +++ b/app-cdr/cue2toc/Manifest @@ -1,3 +1,4 @@ DIST cue2toc-0.4.tar.gz 76689 BLAKE2B f5171457f0061ca1062501b54dc360b8b76a3fb402a0041fa0db4541eb41ebc04e332fafa918fac7d7ace9e50348d867ecb9e41ee09c8b3d5e621fa64a72de2e SHA512 37fd4680890a38681331d4fb83a37daa9ddc39e45b2822930328796f1f57ac39635c609b27340b1ab06dd5b73720e77d96b601d1ee994c5ce836077a368cd95d EBUILD cue2toc-0.4-r1.ebuild 389 BLAKE2B 24c13a50260189777fbfecfeb39ccc72b0b1a1208da43368b690b04c92c5380b3a53241e813a2572698f9adeef60858bf2c16a7d4881eb54b78f280ba760137b SHA512 c968615d3129f3d327a0aa2c0ae764dd5902eaab15eee1c7b187ec5dd116ef6a3de7f18debc5a2bea9c213238d41231d482e694eb2b8c5fbd055c6624a1e60f6 +EBUILD cue2toc-0.4-r2.ebuild 519 BLAKE2B ea3783bd4033c98ebaf8cfe4de12b56b6c5a431ec7a4c1cc59260e76eab4b9d29a14d315767cc71f517ff36b396c67b7bfbd51309aa56fab2973b66a65f38730 SHA512 cf54dee520186a7add68457e9b681c3112d9d0ab1945c5b60fb71142354186095d68a3ee70e009aa001f613b5e95443719f46bd23562c779e27c0885ed5ab168 MISC metadata.xml 725 BLAKE2B f02db6e63eee5f2c9d424ba1913e7d22617772d516e647f61ee30445aad99cd1ac610dbcd1fda985b9f5bb835a39961ffb0e7e3a9c6af99f4578d780320010e4 SHA512 97403e9443a61cf67e199289e7ff32c319be23b62ddf36c9a5123b4879a93ed3d90e8e5a407e6b68eb5ae6c812f83c25b06d2521e31a9a5a88b4645cc22df8c7 diff --git a/app-cdr/cue2toc/cue2toc-0.4-r2.ebuild b/app-cdr/cue2toc/cue2toc-0.4-r2.ebuild new file mode 100644 index 000000000000..9095e08bd0a6 --- /dev/null +++ b/app-cdr/cue2toc/cue2toc-0.4-r2.ebuild @@ -0,0 +1,23 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="Convert CUE files to cdrdao's TOC format" +HOMEPAGE="https://cue2toc.sourceforge.net/" +SRC_URI="https://downloads.sourceforge.net/cue2toc/${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ppc ~ppc64 ~sparc ~x86" + +DEPEND="!!app-cdr/cdrdao" + +src_prepare() { + default + + #bug https://bugs.gentoo.org/900128, implicit defines in configure + eautoreconf +} diff --git a/app-cdr/dolphin-plugins-mountiso/Manifest b/app-cdr/dolphin-plugins-mountiso/Manifest index 4e65a62d39d0..6997d21d74fd 100644 --- a/app-cdr/dolphin-plugins-mountiso/Manifest +++ b/app-cdr/dolphin-plugins-mountiso/Manifest @@ -1,7 +1,5 @@ DIST dolphin-plugins-24.08.3.tar.xz 317540 BLAKE2B 54fa2e13be2cceb53b12b1edb2d6d7c1793f6ba2bbec67e9e00121b33683aa6bd4895392cbdf5aa7627958c6323984ae3db8b5bbf6b14faba86b13181e0a2614 SHA512 05da7ac7b3ebe085cf0808d8e1eba49372bfeb1488800f40c1d0b9025e743efede1200095a1e660c1d538b2cc1b19f0f717f3d0723043517859f5c2015f961ce -DIST dolphin-plugins-24.12.1.tar.xz 319152 BLAKE2B afb5d587e38d1fc24117a083eedc5d970ceeed93e0bbfe13fb991a85046224730c5a1490337ac82a04b613c216f1dd6be07de514c664c80e2e5a0f70bd7615cc SHA512 ebae4d9d363f6928eb89ceede74ca0cc3e0707f81fe782b07fb4d4e3c06bcb266f4981bc5f0374b76bf55b8e86d427bbab0a0fbf82552a288ab8ddb9916f5df9 DIST dolphin-plugins-24.12.2.tar.xz 319000 BLAKE2B 6196e9eaec24106ff31ed5251bc21b5d9b493eb0d1e6ac916f869ab43694d4f214d045ba97ad9db0539cfcef5c4398a43c0c257f2ce5cae405608d7508939fa7 SHA512 78843785e35631ee6cdbe4fa9c259960029e01a0ad6eb28858a320187ebf47df9999b0766fc423383313db2852a9a35079a2317881ecb301c0fa48db902868e6 EBUILD dolphin-plugins-mountiso-24.08.3.ebuild 1308 BLAKE2B b33795c8727883944f6f7f0d061a90deadb35a4e519ba2ccedee7e5d5cf33f4d1b46afa91b8478d9243d7da549e721a0b7fdc1169a8f0381a413ff04b1b6d7d5 SHA512 b742d6837fb01cb0137f763bfb776ce8e83ef4e3ff1b8ae98942e73e18d1ebb77a8723816e42e29320495180211c9c9a98297b9e5244db935c844f68db54e23d -EBUILD dolphin-plugins-mountiso-24.12.1.ebuild 1310 BLAKE2B 37bdeaee6ed93ac8df203cff9e05647dc2a18f1383932aa567a1910546b16079c9967a999f3b264ceaa06ae7329329259b8596e9673ad2bdd9e6dd56a0c9565e SHA512 117580010f3fc59fd310adaf6b4c986b1cd537b110a6448c13b2b7f64c8d948b39ed9566c9221f32de04d14373aff6d84b8b0506b8322539cea0a1e27342d25c EBUILD dolphin-plugins-mountiso-24.12.2.ebuild 1310 BLAKE2B 37bdeaee6ed93ac8df203cff9e05647dc2a18f1383932aa567a1910546b16079c9967a999f3b264ceaa06ae7329329259b8596e9673ad2bdd9e6dd56a0c9565e SHA512 117580010f3fc59fd310adaf6b4c986b1cd537b110a6448c13b2b7f64c8d948b39ed9566c9221f32de04d14373aff6d84b8b0506b8322539cea0a1e27342d25c MISC metadata.xml 410 BLAKE2B 19c3aebce470d75ce9a551aa1100eec6faaf74fa06e74159d859ec31732a3a80170ecfbfe08edd931f9be9a00473ed6485bc2e23a65f7fe18339103cdc909f49 SHA512 752a847319ebf8d110347da3e6949f0ca6847c18453bf2b9a465a8415c79f37b4aefb03cc7fcf6874039c38ff4ee375715892a616c2766e1fd689c18c8b05c10 diff --git a/app-cdr/dolphin-plugins-mountiso/dolphin-plugins-mountiso-24.12.1.ebuild b/app-cdr/dolphin-plugins-mountiso/dolphin-plugins-mountiso-24.12.1.ebuild deleted file mode 100644 index 73645584218b..000000000000 --- a/app-cdr/dolphin-plugins-mountiso/dolphin-plugins-mountiso-24.12.1.ebuild +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -KDE_ORG_CATEGORY="sdk" -KDE_ORG_NAME="dolphin-plugins" -MY_PLUGIN_NAME="mountiso" -KFMIN=6.7.0 -PVCUT=$(ver_cut 1-3) -QTMIN=6.7.2 -inherit ecm gear.kde.org - -DESCRIPTION="Dolphin plugin for ISO loopback device mounting" -HOMEPAGE="https://apps.kde.org/dolphin_plugins/" - -LICENSE="GPL-2+" -SLOT="6" -KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" -IUSE="" - -DEPEND=" - >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,widgets] - >=kde-apps/dolphin-${PVCUT}:6 - >=kde-frameworks/kcompletion-${KFMIN}:6 - >=kde-frameworks/kconfig-${KFMIN}:6 - >=kde-frameworks/kcoreaddons-${KFMIN}:6 - >=kde-frameworks/ki18n-${KFMIN}:6 - >=kde-frameworks/kio-${KFMIN}:6 - >=kde-frameworks/ktextwidgets-${KFMIN}:6 - >=kde-frameworks/solid-${KFMIN}:6 -" -RDEPEND="${DEPEND} - >=kde-apps/dolphin-plugins-common-${PV} -" - -src_prepare() { - ecm_src_prepare - ecm_punt_po_install - # qtconcurrent only required by git - ecm_punt_qt_module Concurrent - # kxmlgui, qtnetwork only required by dropbox - ecm_punt_qt_module Network - ecm_punt_kf_module XmlGui -} - -src_configure() { - local mycmakeargs=( - -DBUILD_${MY_PLUGIN_NAME}=ON - -DBUILD_bazaar=OFF - -DBUILD_dropbox=OFF - -DBUILD_git=OFF - -DBUILD_hg=OFF - -DBUILD_makefileactions=OFF - -DBUILD_svn=OFF - ) - ecm_src_configure -} diff --git a/app-cdr/isoimagewriter/Manifest b/app-cdr/isoimagewriter/Manifest index e454c02d4d4a..f10b1408e303 100644 --- a/app-cdr/isoimagewriter/Manifest +++ b/app-cdr/isoimagewriter/Manifest @@ -1,7 +1,5 @@ DIST isoimagewriter-24.08.3.tar.xz 467764 BLAKE2B bb01dc2308dfffb6a42fcfbfbb937371afbc5f4c2b1cb894591f087cf89343134e88b5d769fa74321dbf243497663e8f6b5efec0f94a494cf1b74bd91651b8fb SHA512 c566e8b8c35f08c21e243e0623fe8775c30fc7489887ecfcd9c8148a835c79bf2156811f56656e5f5affe084d158da3629b267b67fab51bbab8133e5e09ec540 -DIST isoimagewriter-24.12.1.tar.xz 468072 BLAKE2B 9b45d55037834a4d6e23f56609d26a630029ef372183396083f681c69a373a71290a0e1349423f2745147c6c219f8a1103b31c6e3fc1de4a881123564cdfc53e SHA512 ae1dab2ca9fc8676a64c68a9dbc1750c7e57ad56e1d0debdabfec186429ab51c471ea4f8d656deeb5f68778f097e6625f8a500a5a83766d2699470e77ffe3556 DIST isoimagewriter-24.12.2.tar.xz 467884 BLAKE2B f025914299e496ea2c569db67c9729ea51623c307e0fd9068869b98dba59f0028b9d02871773aee6f805dca25c10444fd65c11c9aa3f4a0a7e13623572d609da SHA512 d46697e13c632139f052925273238d950c7d6aac144879fd9fccfe5c79928f94aa7ca1967914ba7e3358a052f7462190d853f119b97983e33a1263f0fe131aea EBUILD isoimagewriter-24.08.3.ebuild 710 BLAKE2B 698a90d848e18e207b1e4877a1b94a8dc112d9c416139fffbd51a4c7b109f1a80749208eccc97906e46b4b7dcb9c9b95e6b8d42075dde9557533081997c8bc4a SHA512 d8bc505ed745bd8f9c6a9afef76a65cdf2db92049af54ff9f825b3f392bac2b9214d382dae3052cc31a244cfa3c6bb71df26b4614800f090b7b999bb5ced797f -EBUILD isoimagewriter-24.12.1.ebuild 712 BLAKE2B 7ac6813d8f4066815509471e0b11f4d85d314834df25e1560a1d60b09bd72757c02d7e99cc7bab68faa4c1c0126ab8a5b6722813c158724fe870d51dba3e1ff4 SHA512 3e951be757df4e03ab29e8af68bfe1624dd265ca695c4c5891d6ef6d496c12a1749c0734fb9a5389a96b1c4d5123c29027be77f3e591ca2f7c56cdd7cbae0765 EBUILD isoimagewriter-24.12.2.ebuild 712 BLAKE2B 7ac6813d8f4066815509471e0b11f4d85d314834df25e1560a1d60b09bd72757c02d7e99cc7bab68faa4c1c0126ab8a5b6722813c158724fe870d51dba3e1ff4 SHA512 3e951be757df4e03ab29e8af68bfe1624dd265ca695c4c5891d6ef6d496c12a1749c0734fb9a5389a96b1c4d5123c29027be77f3e591ca2f7c56cdd7cbae0765 MISC metadata.xml 318 BLAKE2B 922a5e32e706b2976c5f359a14194d268d3f499398576c80ce5fad8c0fcea0fbf048de4480a80a6a1889c88b8b6c14147654a3ab4d5ffbcc258c2290da63f6d1 SHA512 614cb8dda7ad2088e5d6ef39b449bb4be0ac72cd0231c320188d76d1816dce6490c5114bb4798112c4b11d99d30a9e82ff8fcf08ffa8c049589682a5e38208f6 diff --git a/app-cdr/isoimagewriter/isoimagewriter-24.12.1.ebuild b/app-cdr/isoimagewriter/isoimagewriter-24.12.1.ebuild deleted file mode 100644 index f4033b091f90..000000000000 --- a/app-cdr/isoimagewriter/isoimagewriter-24.12.1.ebuild +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -KFMIN=6.7.0 -QTMIN=6.7.2 -inherit ecm gear.kde.org - -DESCRIPTION="Write hybrid ISO files onto a USB disk" -HOMEPAGE="https://community.kde.org/ISOImageWriter" - -LICENSE="GPL-3" -SLOT="6" -KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" -IUSE="" - -DEPEND=" - >=app-crypt/gpgme-1.23.1-r1:=[cxx(+),qt6] - >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,network,widgets] - >=kde-frameworks/karchive-${KFMIN}:6 - >=kde-frameworks/kcrash-${KFMIN}:6 - >=kde-frameworks/kcoreaddons-${KFMIN}:6 - >=kde-frameworks/ki18n-${KFMIN}:6 - >=kde-frameworks/kiconthemes-${KFMIN}:6 - >=kde-frameworks/solid-${KFMIN}:6 -" -RDEPEND="${DEPEND} - sys-fs/udisks:2 -" diff --git a/app-containers/Manifest.gz b/app-containers/Manifest.gz index 29ace039280f0f3812caafca7e5d42774d5be46d..ec1f2cc9afc1638e2d2cf958e50fa0df0814365f 100644 GIT binary patch literal 9390 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 literal 9386 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 diff --git a/app-containers/amazon-ecr-credential-helper/Manifest b/app-containers/amazon-ecr-credential-helper/Manifest index d7cb12721aef..5f83483ce060 100644 --- a/app-containers/amazon-ecr-credential-helper/Manifest +++ b/app-containers/amazon-ecr-credential-helper/Manifest @@ -1,4 +1,6 @@ DIST amazon-ecr-credential-helper-0.9.0-deps.tar.xz 1473848 BLAKE2B 2c16b90951eb62d272b770acf83cd317aa04823277bdce858e4a2741122750199e761cfaaf2a5e477c5ff58209d4a656790a65473400edd1086559dc24ce7c8d SHA512 9830c4eb4cd2fe80a317a09f6bbad0a40493233a49f40d382fff50c438632762f98f23cb4f16340848ae5b67c0b9d3bf569250a1077107e1ceee4afcb83bb4f9 DIST amazon-ecr-credential-helper-0.9.0.tar.gz 1934543 BLAKE2B 75a247fa8ba395de2274fcef45344ecf9918e032ce365a00cadde17f6f306197729fc77959306ccd11ddfb02272749f42b3f15e587e0eec4772576eb0a84c183 SHA512 354be080bbe83065191efc7c2814cae739944d9405f6472ca99f2a2b00365689ef33361dc1da6ae2e816e6544beb7f8947352752568736382bfb4d976cac7a74 +DIST amazon-ecr-credential-helper-0.9.1.tar.gz 1948688 BLAKE2B c6c07fe93f7e0ab08d3e53a258d0a64e632c90edb441e672a22fb3a91d67598b25d4304498d4a2dd6b90366300dae9ca39340c4caf15e9aba330c167393469e2 SHA512 6550f33d8de505f41af6bfbaeac0905dedb13aa4913ab64bcdb3dba99e348aaa9c667992d548f527c71752611c80c9937fd0b941792453bbd22a5ebd6d4c1a57 EBUILD amazon-ecr-credential-helper-0.9.0.ebuild 770 BLAKE2B 7bfdaaee09426b62eb89e4a5337d9ea6c4aa8ff7abc74f66394f88918e2dcd5d1ae1035a7f72c6ab72e7bdd2da717d8e3a85ea8c115907d4ec3407f5571afa51 SHA512 bde8c3eecf00f8ea2e80ffa5a101f755713a45db88bdf50c98d8bcec10e5684c6658fa1ebfcdb2a65916ad775a9a3bed6cbe5c585a889c093489a4717c6fe5bb +EBUILD amazon-ecr-credential-helper-0.9.1.ebuild 664 BLAKE2B 9453a55a0edfa48ffb693d023d82c4071474006e1f3c32962ee4218dc786d2cb6de497a64e93552a48423c28cc72b28c75d9d98f6afbc033651184af5e655d39 SHA512 d8f9c47d3b197907be2b2a423d74b02ca4d5d003ae5e7c5326d8bd1c44d1f55ec32258c25bc668956840ae2e58e78ba5a5d2c28f4f7d64b51720b24e15145b53 MISC metadata.xml 456 BLAKE2B e531fbcef503889e222e7c8a2732f8079d39030bac2d48c27b853db905a585f7e54cfa1e73abe0546b640475d11a0dab0701d0bb1203f839960373e0c6cabf5d SHA512 a9d4fd8de48fe7c3bebf96b3133ce5cd51ab806947fb3036d766687726c14b84067771e304aa76f1ead0b6d4de4c0e34d481826bcd76a95e96064f3a0aab1a87 diff --git a/app-containers/amazon-ecr-credential-helper/amazon-ecr-credential-helper-0.9.1.ebuild b/app-containers/amazon-ecr-credential-helper/amazon-ecr-credential-helper-0.9.1.ebuild new file mode 100644 index 000000000000..e3b165f88fff --- /dev/null +++ b/app-containers/amazon-ecr-credential-helper/amazon-ecr-credential-helper-0.9.1.ebuild @@ -0,0 +1,29 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit go-module + +DESCRIPTION="Automatically gets credentials for Amazon ECR on docker push/docker pull" +HOMEPAGE="https://github.com/awslabs/amazon-ecr-credential-helper" +SRC_URI="https://${PN}-releases.s3.us-east-2.amazonaws.com/${PV}/release.tar.gz -> ${P}.tar.gz" +S=${WORKDIR}/ecr-login + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" + +src_compile() { + ego build ./cli/docker-credential-ecr-login +} + +src_test() { + ego test ./... +} + +src_install() { + dobin docker-credential-ecr-login + doman ../docs/docker-credential-ecr-login.1 + dodoc ../README.md +} diff --git a/app-containers/incus/Manifest b/app-containers/incus/Manifest index 7a5c89a7aeb5..d71eb45e0e16 100644 --- a/app-containers/incus/Manifest +++ b/app-containers/incus/Manifest @@ -13,15 +13,12 @@ DIST incus-6.0.2.tar.xz 11197324 BLAKE2B fa15816ea05865ce48f7cb668c3138d2d186a18 DIST incus-6.0.2.tar.xz.asc 833 BLAKE2B bcdeb0d2a3684dcdcb620166865523a2e9eb595f0e7760f05a06ea0608dc4fc7111b75206fe62a63cfd90a0d0ec79206404994e53770d5e35a639a67e1ad753c SHA512 18587ddc7b7cb41418ee0e7a43875663e71c9d39a505fd55bc29fe83717b5d5cdc876c46912561610735ddf80462631716354a943a272ae5ccf0ee495aff1c1c DIST incus-6.0.3.tar.xz 11916020 BLAKE2B d3d998bd50124604c52ff007eefed586c216ce1a0a77d45724fd489db1d93f2fa304f5d6e1c368ff2dd4d1170b24605fd24bbf2a6e4506207686ca392936c200 SHA512 6a879e6634cf545b4c427800d923a32e5fe58a6eaf220ad8d0cb08e0ced5e6c4be09274ae095bb9dae25a55445462ea83d3d9235f67bbb9896944f596bf17e1a DIST incus-6.0.3.tar.xz.asc 833 BLAKE2B 38835ab036709161150992cb40df4ff1ae1887d4f3e0b037d0415f75d2bb711cb3c5945bffe1b91d289acfb7e19e726964278e5c2ab31731ba9f7534f139dec7 SHA512 7d5360ab91aafe1d047a60e38a07e24c3c7b158e753087a943ec5e59d6a27c19a872080c9007b6cf592040d3408845bc188d76f6e732408d0680a3782cebce47 -DIST incus-6.7.tar.xz 11313960 BLAKE2B c55ec6c584eeb6123d707b628ff27f96f6555ad5d17a720c55cc69cfb2abee9c6692544fba63ec2c63c5c8cb0d68baf0c9fadc2bb538dfce20362097fa3809ee SHA512 4b7e9af926d6132f63cbc53466d98691b2fb182a1900cf4ac5964df8678829da0241c4a468cfe3e49d448ecb25d2e8b1be0f52ac71c176a87d554fcd59ab5f97 -DIST incus-6.7.tar.xz.asc 833 BLAKE2B 6c72ca10f20f55607b1059bf908e4b36d81b499c2b6e329855c8769cafe9def44bf8cc6a320718150192daf6e820f6e42beb1b9e7a90f794b9c906734b0ba742 SHA512 dd6d55f8f3e8538f8050fce0124bbab1495978ad1ccee954a3d38cc1bb33c0a8f9f6a7f673e7e0942e9bc732a2acdbcb71245c110eb091ef0b53015ef05e9d74 DIST incus-6.8.tar.xz 11403916 BLAKE2B 09d8e2a8619a040550600234d7fe2e65eea8c6a7054e0b790f3774721ad5de982dee5d0151f8141cda0f5c6b9d63e18b1c4964e4027bf9470ed44a28d482f999 SHA512 c7b0cc22014f482981777f3cef3b0064c02b46c7ced4e8572fd9548eec45a0d87ac868e94ab8d2af80eb24986db64a930ac578c8555e2759022cad559b74ac5c DIST incus-6.8.tar.xz.asc 833 BLAKE2B 77b937177b4239da27478ff7826c633d34ee3b5e02e988387fdc63ff43fad307786c27dee2c3cefb8c4129ce8777fad3361c2e2a86152d202c55231d4105d7a8 SHA512 3111e196da18d362c2e60482e313da888ba6ffba1b5ae134bf9d7e89951ebf6d2b2af922d78ee6fd2e9b51bffea5ccadd0d11bf0a3527d07d8351733ce66f2e3 DIST incus-6.9.tar.xz 11444156 BLAKE2B 440e9ee9422935d68a52370406c1259ad226db680241000ec27633ef213c86cf8dfa49954c9ade4438b4f14ba9f301869a8b18c588edf5ed3439a85fd4a40fc8 SHA512 f8d704a76455fe4073a1fd67aea6dfd4af35d624aa0e91bb568871d5006ec49d9a7e5a19826c58ea300aa28c081e42ae98960f1c6d78a883434c4fd427a0a67b DIST incus-6.9.tar.xz.asc 833 BLAKE2B 8051c12f9451b4e0300c2d3eea44743fcb61fc77181d1bc289aa85a5aeeba18b1866d84e387cc99f05996333f869738e8930ee63f28ea12b06ec3cd7bb2bd8c3 SHA512 6ef81ff6432333629888309e8b7ac48d4e92d80da77fe8fcabf248bd1c8927b4d180f9893a8895e7fbc32b8b1dec99388b154bf201275d77660af339f47ca2a2 EBUILD incus-6.0.2.ebuild 6083 BLAKE2B c9caaeb98078d7dad8bb277196fbe651eb956020bb933fdbd7d84a1f7caef1c2450d7bb31cfb9ea7717d768bf8cd4dde45c68f81508783e15150b56efc492c79 SHA512 0c6cb9391eaff33920b0e18daf1dc3299db0be2f451a547aa146fdbe85d0b3bafea31cf09f8fb744ec305de41d9ac7c3978ff1bc33aeafd0b8c5794817be3d8f EBUILD incus-6.0.3.ebuild 6271 BLAKE2B c6e13a1cc4efd21365cef8837fd5ca25578fb197a412d8071a58f59d7c1fe39d0c3788bb77563099d6cbc5e13499f34a1026dacf3e213b144d2b50b4ecb355f4 SHA512 275d5a6a9d500ba9895d0d0d99f75eb6ef0d6a6e2d7688d9d5d9d32241b0c2721f5bfb620df80043d1ff281e7e115b6294d0e5fc8abea54387c5e2dccf9038f2 -EBUILD incus-6.7.ebuild 6173 BLAKE2B 1ac2d20ccfafee4697587c57ea676835fbfe84d70e4154c33ef8316fd1066f328a44c7b41bc84ec971271ade061b4f09f616c7fc746b22664f45b703fe2f25a3 SHA512 2037e19a3a43be689f666b3d794be77627cfa6da9aff0fb03f5340628ffd8fae375ec9c130f2cfb3f3ffb5c89d6968eeaebcd0e36a881654633809dd18c96c72 EBUILD incus-6.8.ebuild 6383 BLAKE2B 5b00f4b6de57500591485d076152684d5b841d2e4ead9c245607b1c4919fea96d88cfe84896b66c86dfb2049a9f17b2832cedf6a968801f0bd1ba9c8d7075b91 SHA512 7bf9f2b7e203522178a5569faf332bb309d0b68e3d5e27224c111fec441d1ee847a0d3e58c344fa6409bb72fd2884ec3fd1fe94d86fbafe9cc137595ba1ba42a EBUILD incus-6.9-r2.ebuild 6264 BLAKE2B 5398823be9914419a23523ea1dd6c4cc457c47241f7782d018dd93fe9e0d39ecb9464a0c692d353de0765baaf854b479e9631fe87d78d92c3120ade63d88221f SHA512 15fb681af83e9e7112bcce4f6cd271d9cce4198c86f3fe980e9cc8c2e6798ec43ce45262e0a98942d44c299355f641c2c228ccc4c2b23ba7e2e63e2aa1b16957 MISC metadata.xml 1696 BLAKE2B d15b2a9b4a9f2197369466403fe00ff6a2a10d3d2b86e2f306a7eeaad4ef3eb6709c22b08df6dc4a8fa0f6d9468da6a240fca27d587c222f081644b8e303da6f SHA512 e07b3700562381e6634ae5bb50163c63fdec2e2798c055da53bd1e84e65a394482b4b95a57effac61f037ecee91440e1d3d608322978846b7c6c5e200e503f0f diff --git a/app-containers/incus/incus-6.7.ebuild b/app-containers/incus/incus-6.7.ebuild deleted file mode 100644 index a9c0723f61be..000000000000 --- a/app-containers/incus/incus-6.7.ebuild +++ /dev/null @@ -1,216 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit go-module linux-info optfeature systemd toolchain-funcs verify-sig - -DESCRIPTION="Modern, secure and powerful system container and virtual machine manager" -HOMEPAGE="https://linuxcontainers.org/incus/introduction/ https://github.com/lxc/incus" -SRC_URI="https://linuxcontainers.org/downloads/incus/${P}.tar.xz - verify-sig? ( https://linuxcontainers.org/downloads/incus/${P}.tar.xz.asc )" - -LICENSE="Apache-2.0 BSD LGPL-3 MIT" -SLOT="0/stable" -KEYWORDS="~amd64 ~arm64" -IUSE="apparmor fuidshift nls" - -DEPEND="acct-group/incus - acct-group/incus-admin - app-arch/xz-utils - >=app-containers/lxc-5.0.0:=[apparmor?,seccomp(+)] - dev-db/sqlite:3 - >=dev-libs/cowsql-1.15.6 - dev-libs/lzo - >=dev-libs/raft-0.22.1:=[lz4] - >=dev-util/xdelta-3.0[lzma(+)] - net-dns/dnsmasq[dhcp] - sys-libs/libcap - virtual/udev" -RDEPEND="${DEPEND} - fuidshift? ( !app-containers/lxd ) - net-firewall/ebtables - net-firewall/iptables - sys-apps/iproute2 - sys-fs/fuse:* - >=sys-fs/lxcfs-5.0.0 - sys-fs/squashfs-tools[lzma] - virtual/acl" -BDEPEND=">=dev-lang/go-1.21 - nls? ( sys-devel/gettext ) - verify-sig? ( sec-keys/openpgp-keys-linuxcontainers )" - -CONFIG_CHECK=" - ~CGROUPS - ~IPC_NS - ~NET_NS - ~PID_NS - - ~SECCOMP - ~USER_NS - ~UTS_NS - - ~KVM - ~MACVTAP - ~VHOST_VSOCK -" - -ERROR_IPC_NS="CONFIG_IPC_NS is required." -ERROR_NET_NS="CONFIG_NET_NS is required." -ERROR_PID_NS="CONFIG_PID_NS is required." -ERROR_SECCOMP="CONFIG_SECCOMP is required." -ERROR_UTS_NS="CONFIG_UTS_NS is required." - -WARNING_KVM="CONFIG_KVM and CONFIG_KVM_AMD/-INTEL is required for virtual machines." -WARNING_MACVTAP="CONFIG_MACVTAP is required for virtual machines." -WARNING_VHOST_VSOCK="CONFIG_VHOST_VSOCK is required for virtual machines." - -# Go magic. -QA_PREBUILT="/usr/bin/incus - /usr/bin/incus-agent - /usr/bin/incus-benchmark - /usr/bin/incus-migrate - /usr/bin/lxc-to-incus - /usr/sbin/fuidshift - /usr/sbin/incusd - /usr/sbin/lxd-to-incus" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/linuxcontainers.asc - -# The testsuite must be run as root. -# make: *** [Makefile:156: check] Error 1 -RESTRICT="test" - -GOPATH="${S}/_dist" - -src_unpack() { - verify-sig_src_unpack - go-module_src_unpack -} - -src_prepare() { - export GOPATH="${S}/_dist" - - default - - sed -i \ - -e "s:\./configure:./configure --prefix=/usr --libdir=${EPREFIX}/usr/lib/incus:g" \ - -e "s:make:make ${MAKEOPTS}:g" \ - Makefile || die - - sed -i \ - -e "s:/usr/share/OVMF:/usr/share/edk2/OvmfX64:g" \ - -e "s:OVMF_VARS.ms.fd:OVMF_VARS.fd:g" \ - internal/server/instance/drivers/edk2/driver_edk2.go || die "Failed to fix hardcoded ovmf paths." - - # Fix hardcoded virtfs-proxy-helper file path, see bug 798924 - sed -i \ - -e "s:/usr/lib/qemu/virtfs-proxy-helper:/usr/libexec/virtfs-proxy-helper:g" \ - internal/server/device/device_utils_disk.go || die "Failed to fix virtfs-proxy-helper path." - - cp "${FILESDIR}"/incus-0.4.service "${T}"/incus.service || die - if use apparmor; then - sed -i \ - '/^EnvironmentFile=.*/a ExecStartPre=\/usr\/libexec\/lxc\/lxc-apparmor-load' \ - "${T}"/incus.service || die - fi - - # Disable -Werror's from go modules. - find "${S}" -name "cgo.go" -exec sed -i "s/ -Werror / /g" {} + || die -} - -src_configure() { :; } - -src_compile() { - export GOPATH="${S}/_dist" - export CGO_LDFLAGS_ALLOW="-Wl,-z,now" - - for k in incus-benchmark incus-simplestreams incus-user incus lxc-to-incus lxd-to-incus ; do - ego install -v -x "${S}/cmd/${k}" - done - - if use fuidshift ; then - ego install -v -x "${S}/cmd/fuidshift" - fi - - ego install -v -x -tags libsqlite3 "${S}"/cmd/incusd - - # Needs to be built statically - CGO_ENABLED=0 go install -v -tags netgo "${S}"/cmd/incus-migrate - CGO_ENABLED=0 go install -v -tags agent,netgo "${S}"/cmd/incus-agent - - use nls && emake build-mo -} - -src_test() { - emake check -} - -src_install() { - export GOPATH="${S}/_dist" - - if tc-is-cross-compiler ; then - local bindir="_dist/bin/linux_${GOARCH}" - else - local bindir="_dist/bin" - fi - - newsbin "${FILESDIR}"/incus-startup-0.4.sh incus-startup - - # Admin tools - for l in incusd incus-user lxd-to-incus ; do - dosbin ${bindir}/${l} - done - - # User tools - for m in incus-agent incus-benchmark incus-migrate incus-simplestreams incus lxc-to-incus ; do - dobin ${bindir}/${m} - done - - # fuidshift, should be moved under admin tools at some point - if use fuidshift ; then - dosbin ${bindir}/fuidshift - fi - - newconfd "${FILESDIR}"/incus-6.0.confd incus - newinitd "${FILESDIR}"/incus-6.0.initd incus - newinitd "${FILESDIR}"/incus-user-0.4.initd incus-user - - systemd_dounit "${T}"/incus.service - systemd_newunit "${FILESDIR}"/incus-0.4.socket incus.socket - systemd_newunit "${FILESDIR}"/incus-startup-0.4.service incus-startup.service - systemd_newunit "${FILESDIR}"/incus-user-0.4.service incus-user.service - systemd_newunit "${FILESDIR}"/incus-user-0.4.socket incus-user.socket - - if ! tc-is-cross-compiler; then - # Generate and install shell completion files. - mkdir -p "${D}"/usr/share/{bash-completion/completions/,fish/vendor_completions.d/,zsh/site-functions/} || die - "${bindir}"/incus completion bash > "${D}"/usr/share/bash-completion/completions/incus || die - "${bindir}"/incus completion fish > "${D}"/usr/share/fish/vendor_completions.d/incus.fish || die - "${bindir}"/incus completion zsh > "${D}"/usr/share/zsh/site-functions/_incus || die - else - ewarn "Shell completion files not installed! Install them manually with incus completion --help" - fi - - dodoc AUTHORS - dodoc -r doc/* - use nls && domo po/*.mo -} - -pkg_postinst() { - elog - elog "Please see" - elog " https://wiki.gentoo.org/wiki/Incus" - elog " https://wiki.gentoo.org/wiki/Incus#Migrating_from_LXD" - elog - optfeature "virtual machine support" app-cdr/cdrtools app-emulation/qemu[spice,usbredir,virtfs] - optfeature "OCI container images support" app-containers/skopeo app-containers/umoci - optfeature "btrfs storage backend" sys-fs/btrfs-progs - optfeature "ipv6 support" net-dns/dnsmasq[ipv6] - optfeature "full incus-migrate support" net-misc/rsync - optfeature "lvm2 storage backend" sys-fs/lvm2 - optfeature "zfs storage backend" sys-fs/zfs - elog - elog "Be sure to add your local user to the incus group." - elog -} diff --git a/app-containers/lxc/Manifest b/app-containers/lxc/Manifest index 434f91a4b36e..aae4c3243e8a 100644 --- a/app-containers/lxc/Manifest +++ b/app-containers/lxc/Manifest @@ -5,11 +5,8 @@ AUX lxc.service-5.0.0 527 BLAKE2B 44d1fca919615c1acb672baa7b77bd43680975782683ad AUX lxc_at.service.5.0.0 395 BLAKE2B b4a329964041a9b3017df80aedb73f296d60e0b78097c72e52b921de939246a45d07591535d3971458cee38bf4ddf84021af3f325bffac6db9ba7c4c78a48a5b SHA512 d896c2eb889b83a77041fcd51604bea11db65b8b494c9c063a72ed182006577ed49e2e2c0842353de4676b3fc1246508e5b7c669d797929818cccf485282d85c DIST lxc-5.0.3.tar.gz 975269 BLAKE2B 533d97fe4d986acbf5d562bb2c295a63df2a9a8bfc27aeff5056e4235f667102500debc586c5698482ec048c1b222a0fdc234db6fd6648c4b649f87a85de18f8 SHA512 0553be317431ab7ec0c450c0f85724a53de1f251c39c9716168e17cda6a8daec70b8221228c4be64027df28a327e0f1fd508e6bb48348ab540bbfeaf2b9ac974 DIST lxc-5.0.3.tar.gz.asc 833 BLAKE2B c35278ed17cad76d2ea94b3985e0110731efea751fb5f1c2d1c9db71486e4844285f372a94c8611dcfe91fdb16459694843b9e0a8273cfc68a56f549c7162cfb SHA512 a5ce5769d49abdf35d94de8273fd3e9c2a8ba4fafea71cf33ee6bce1d83531c8b550d972f7080409a4cc5a92e9d04ece50ed108f92c6aec4868d150e58d7d11a -DIST lxc-6.0.2.tar.gz 964007 BLAKE2B 55c0155a66194d4d10fff5ffc7edc6d6afab730245a401671f8d1bd6f54bd8558bd0644c0f42bd49b5b470bc343809091f1893c27b5830674870f6b91f23d6e0 SHA512 52841b5f48eeb4b2b63e0437e3abc38cec6a801778eb2fab264c78d7ee3be957bd45aa839c9fcd281396464fa0af84bb2fc8bf4bfadc9509fae3b4dc52b44da5 -DIST lxc-6.0.2.tar.gz.asc 833 BLAKE2B b4b6b56e65239c2125864e16e947a88c2d4d97a1b2dfa6920ca5c2f89b3df7d44d9ec8eb9a56753d6009143a53f6bb5bbd13f3b5b7f26e537aa6f1f1d0d0cc85 SHA512 741caccb3dc0ef1043c04122c75a3e3f6d8e6024a65bf905b186da0aabef971a1224e60f9adee069d1a2c24f43c408be1ccc32e5d4faba85860e9a19d9e4c0d9 DIST lxc-6.0.3.tar.gz 964210 BLAKE2B 8d5dec7f088111a2ca82aadd6cd90eb30a3a1b61900aa47123caba2ff95d10e68cfcd6a94ec6b3e36657777578c8b113c95aad9112b48b9dc964e4ed73783b48 SHA512 4ed41155b74afa135ae8e01f55a8cbbc7284a80e9789aaa2e69264d6b90a6527baf51f9c68dd3364aa83e7939d070f5c7dad924c751927783e883adce539fbdf DIST lxc-6.0.3.tar.gz.asc 833 BLAKE2B 3a23eacfdd248a95c9fa41a6edcb55abb07abc81314fa227649663ac264a9e5fdcf81cb38b79f1bd51b9172a70a0aee5bf65ecfdaf438c944c25f11c882ab562 SHA512 5de32e772bd2864e3b688a90fd9f08d98829d61ba3e1cc76a9b403fc005256149f55ad034e186c3329f3abe52a8815f60c5027b16de46be0bc81b14d0134babd EBUILD lxc-5.0.3.ebuild 5052 BLAKE2B 99a20e705617194a9e38ec6dabbc52fd43dbd5615a6b00379921f4ba200c2110f666878c00195917109f37cfed961258978b79bc3db0814986c36429537e660c SHA512 050ebb35250bd258a602ee84f9f1b1c35531caa0c3f9954bb8380927a8c262ffd66776cc0af643aaf69a7e0c51dccfe82bb2e3993e264ba2a0c91de8bd94faf5 -EBUILD lxc-6.0.2.ebuild 5601 BLAKE2B 8885d5a0fe2400dbecf8ccbe8766f3d5795fd675094387d0319ad1e8bfcb3f0b052b2a20e42c3fb11cd4961b0500580356349001755904c52adc7c1298f932d1 SHA512 68e97e42d5ca082c867f089c36264d545bbe69dde4df07136bdcd3c4458b9c986fc2b2c879485ea2348f745d19585953a1ac2032fa99a69c8ab542aaada1ffa1 EBUILD lxc-6.0.3.ebuild 5412 BLAKE2B 37cb83c04bbf15d7f697ce901248aaf96f83110cdc315c77f6331ff6157896218a6523c99390f9c0907bab4b263103344bd5e9d18f142955d25a674112305104 SHA512 95b0e84ceb394986fa4eb6e348caa31240d5b91fe6bdacb264be1a0dd2769627a2f18839e8d3814fad84743237a848f006e287c5d27ac85623b0c1da1bea089b MISC metadata.xml 629 BLAKE2B 1dde5fefd2199c46a6b2714be94513f02494baf8d382195f79452c749cfe82c90ee1e353428d5d661cb991b25a6d9774605e292b0a4e1321e0a3d269c4eb3334 SHA512 245d00b1e44762fd76ad1978763158438db9a685f383575bce93cf4aac82358331cb41ee7fabc142849a90f8fc116cf14a646e254e6b5be4d46fa90798a48ff6 diff --git a/app-containers/lxc/lxc-6.0.2.ebuild b/app-containers/lxc/lxc-6.0.2.ebuild deleted file mode 100644 index adb4ba4e3de4..000000000000 --- a/app-containers/lxc/lxc-6.0.2.ebuild +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit bash-completion-r1 linux-info meson optfeature systemd toolchain-funcs verify-sig - -DESCRIPTION="A userspace interface for the Linux kernel containment features" -HOMEPAGE="https://linuxcontainers.org/ https://github.com/lxc/lxc" -SRC_URI="https://linuxcontainers.org/downloads/lxc/${P}.tar.gz - verify-sig? ( https://linuxcontainers.org/downloads/lxc/${P}.tar.gz.asc )" - -LICENSE="GPL-2 LGPL-2.1 LGPL-3" -SLOT="0/1.8" # SONAME liblxc.so.1 + ${PV//./} _if_ breaking ABI change while bumping. -KEYWORDS="amd64 ~arm ~arm64 ~ppc64 ~riscv x86" -IUSE="apparmor +caps examples io-uring lto man pam seccomp selinux ssl systemd test +tools" - -RDEPEND="acct-group/lxc - acct-user/lxc - apparmor? ( sys-libs/libapparmor ) - caps? ( sys-libs/libcap ) - io-uring? ( >=sys-libs/liburing-2:= ) - pam? ( sys-libs/pam ) - seccomp? ( sys-libs/libseccomp ) - selinux? ( sys-libs/libselinux ) - ssl? ( dev-libs/openssl:0= ) - systemd? ( - sys-apps/dbus - sys-apps/systemd:= - ) - tools? ( sys-libs/libcap )" -DEPEND="${RDEPEND} - caps? ( sys-libs/libcap[static-libs] ) - tools? ( sys-libs/libcap[static-libs] ) - sys-kernel/linux-headers" -BDEPEND="virtual/pkgconfig - man? ( app-text/docbook2X ) - verify-sig? ( sec-keys/openpgp-keys-linuxcontainers )" - -RESTRICT="!test? ( test )" - -CONFIG_CHECK="~!NETPRIO_CGROUP - ~CGROUPS - ~CGROUP_CPUACCT - ~CGROUP_DEVICE - ~CGROUP_FREEZER - - ~CGROUP_SCHED - ~CPUSETS - ~IPC_NS - ~MACVLAN - - ~MEMCG - ~NAMESPACES - ~NET_NS - ~PID_NS - - ~POSIX_MQUEUE - ~USER_NS - ~UTS_NS - ~VETH" - -ERROR_CGROUP_FREEZER="CONFIG_CGROUP_FREEZER: needed to freeze containers" -ERROR_MACVLAN="CONFIG_MACVLAN: needed for internal (inter-container) networking" -ERROR_MEMCG="CONFIG_MEMCG: needed for memory resource control in containers" -ERROR_NET_NS="CONFIG_NET_NS: needed for unshared network" -ERROR_POSIX_MQUEUE="CONFIG_POSIX_MQUEUE: needed for lxc-execute command" -ERROR_UTS_NS="CONFIG_UTS_NS: needed to unshare hostnames and uname info" -ERROR_VETH="CONFIG_VETH: needed for internal (host-to-container) networking" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/linuxcontainers.asc - -DOCS=( AUTHORS CONTRIBUTING MAINTAINERS README.md doc/FAQ.txt ) - -pkg_setup() { - linux-info_pkg_setup -} - -src_configure() { - - # -Dtools-multicall=false: will create a single binary called 'lxc' that conflicts with LXD. - local emesonargs=( - --localstatedir "${EPREFIX}/var" - - -Dcoverity-build=false - -Dinstall-state-dirs=false - -Doss-fuzz=false - -Dspecfile=false - -Dtools-multicall=false - - -Dcommands=true - -Dinstall-init-files=true - -Dmemfd-rexec=true - -Dthread-safety=true - - $(meson_use apparmor) - $(meson_use caps capabilities) - $(meson_use examples) - $(meson_use io-uring io-uring-event-loop) - $(meson_use lto b_lto) - $(meson_use man) - $(meson_use pam pam-cgroup) - $(meson_use seccomp) - $(meson_use selinux) - $(meson_use ssl openssl) - $(meson_use test tests) - $(meson_use tools) - - $(usex systemd -Ddbus=true -Ddbus=false) - $(usex systemd -Dinit-script="systemd" -Dinit-script="sysvinit") - - -Ddata-path=/var/lib/lxc - -Ddoc-path=/usr/share/doc/${PF} - -Dlog-path=/var/log/lxc - -Drootfs-mount-path=/var/lib/lxc/rootfs - -Druntime-path=/run - ) - - use tools && local emesonargs+=( -Dcapabilities=true ) - - if $(tc-ld-is-gold) || $(tc-ld-is-lld); then - local emesonargs+=( -Db_lto_mode=thin ) - else - local emesonargs+=( -Db_lto_mode=default ) - fi - - meson_src_configure -} - -src_install() { - meson_src_install - - # The main bash-completion file will collide with lxd, need to relocate and update symlinks. - local lxcbashcompdir="${D}/$(get_bashcompdir)" - mkdir -p "${lxcbashcompdir}" || die "Failed to create bashcompdir." - mv "${lxcbashcompdir}"/_lxc "${lxcbashcompdir}"/lxc-start || die "Failed to move _lxc bash completion file." - - # Build system will install all bash completion files regardless of our 'tools' use flag. - # Though installing them all will add bash completions for commands that don't exist, it's - # cleaner than dealing with individual files based on the use flag status. - bashcomp_alias lxc-start lxc-{attach,autostart,cgroup,checkpoint,config,console,copy,create,destroy,device,execute,freeze,info,ls,monitor,snapshot,stop,top,unfreeze,unshare,update-config,usernsexec,wait} - - find "${ED}" -name '*.la' -delete -o -name '*.a' -delete || die - - # Replace upstream sysvinit/systemd files. - if use systemd ; then - rm -r "${D}$(systemd_get_systemunitdir)" || die "Failed to remove systemd lib dir" - else - rm "${ED}"/etc/init.d/lxc-{containers,net} || die "Failed to remove sysvinit scripts" - fi - - newinitd "${FILESDIR}/${PN}.initd.9" ${PN} - systemd_newunit "${FILESDIR}"/lxc-monitord.service.5.0.0 lxc-monitord.service - systemd_newunit "${FILESDIR}"/lxc-net.service.5.0.0 lxc-net.service - systemd_newunit "${FILESDIR}"/lxc.service-5.0.0 lxc.service - systemd_newunit "${FILESDIR}"/lxc_at.service.5.0.0 "lxc@.service" - - if ! use apparmor; then - sed -i '/lxc-apparmor-load/d' "${D}$(systemd_get_systemunitdir)/lxc.service" || - die "Failed to remove apparmor references from lxc.service systemd unit." - fi -} - -pkg_postinst() { - elog "Please refer to " - elog "https://wiki.gentoo.org/wiki/LXC for introduction and usage guide." - elog - elog "Run 'lxc-checkconfig' to see optional kernel features." - elog - - optfeature "creating your own LXC containers" app-containers/distrobuilder - optfeature "automatic template scripts" app-containers/lxc-templates - optfeature "Debian-based distribution container image support" dev-util/debootstrap - optfeature "snapshot & restore functionality" sys-process/criu -} diff --git a/app-containers/podman/Manifest b/app-containers/podman/Manifest index 9ef2c589b385..9c940a9376ab 100644 --- a/app-containers/podman/Manifest +++ b/app-containers/podman/Manifest @@ -4,7 +4,7 @@ AUX podman-auto-update-5.0.0.cron 185 BLAKE2B 78553b31c4f2f9fe929780af752cee33db AUX podman-clean-transient-5.0.0_rc6.confd 235 BLAKE2B 25100f79c09c4ea388be27ed5e2d5f537d790688ad808cc02183d3e1f86d791f69133d3a3d1137179dd48d70aa1769a2b3ada77d17b7f25cf1b3007c2c243bc2 SHA512 f27408326c5b50addfc8b11c6f41df49d03ccaab80d37bb84100d2d238e01117ea436a79833f80c6b1d62b03da01807871396f401bf155d0c08252cc783f7e15 AUX podman-clean-transient-5.0.0_rc6.initd 669 BLAKE2B db5f35d6918ea12afd2bc6ef1eb9b855faa259a7abe9a49895892e40576558996317ae0189b80d1d2fea978848e35bfbadf1635cef112bd96bfeb75ecf34cdb3 SHA512 95c07cd6bc1bba7ce9bb0e111d74d9625c7f7e88667f709852056206e9483d96283ad2f13710e99bc5c3573bdb1b0c7585a7254760b91b7eec5b5a868d849e61 AUX podman-restart-5.0.0_rc4.confd 284 BLAKE2B e2e5394428d95e9fa480f32ef3efcddc870394e8f5158fbcfe80434aca6c0a48bc1a4a5b7bdcf91e5313121be7f50f5e924a3a2084767e84d6bf045819121711 SHA512 99818e90a04ebdfa2ca8fbf8b4971025cae27807a0f2288f267c60e875f38cac4d189a72248861507189aa3a1e05f7c81d663f96ddac6a7e11edebf5f18baea1 -AUX podman-restart-5.0.0_rc4.initd 641 BLAKE2B c62aa18fe0da2d00032f09bc2e23debfc916c12a9ebdd22666c000c09242140b592fb08f1e961cf2dc66eb9eeb6ddaf7336713574fb2708620588904168ded51 SHA512 b947c3f6e3dc4d58008c16c7bc77306877b7375334eeb96a714541c8534bcb4ca25d85e2204af96a3d14471b966c0b59542694777b907dddeff15f8995889a2c +AUX podman-restart-5.0.0_rc4.initd 773 BLAKE2B 42a4ac4eec560b4785d88db28428488a30a872a1dae4f4d29d7bfaffa86acaf127ed0f79f5e6026b176717cfc254acd29e930748b89463d023a3ad9283b714c4 SHA512 2e60dcfbe14f7a63606927843d291bcfc57084784cf5faff18b64538c65eca5758dd03179aec0bff4c12b696815abf11d359f45fb5681856e8b1ef0dc0bf36c5 AUX podman.logrotated 85 BLAKE2B 730899f93ee354e476629276b69224cfeaaa1603b6690cac3c0cd905cd75add19179f99e26f29edbd963d5f44c38a3a2db0b5a3613dc665ab801654eac13dc2e SHA512 0136d063b15b07c41a9370ba1845c4f368ec46a7a30683b7ff7cbb0b12e5b2711c9a45329f5102af6a969e562edcec006a8de9055e43e1caf9395847d0c5ec45 DIST podman-5.2.5.tar.gz 23834863 BLAKE2B 2264c9b19e621a1269ae5baee6fee148e6f1b9cacbdd83fdbecf671f87855d0ae566e41e4e8cbffe57662b7e9a3d653d57a7d2acb8f30b869b8af1bd7473a617 SHA512 29f71c67a5700e8dffe45e6e91acab509d8c8924a5f3cf9b4eee95f665a9ed19333285df89da892699ee314cee27c0c8a4a62d29e4205198781f5d5f585135a9 DIST podman-5.3.0.tar.gz 24194165 BLAKE2B fb2da37e4f97d69997b9518425bb1ec74846e4e26855bf9ece0eeefb723f603051d4d4a1b3320cdba5c97595db12e1948f280776429819d10bfe83a57f349c78 SHA512 3f1ab7e792850e2e21823c59ca9e03d348e78267e3ec5344a04c38e51466159717944c318cf5e61ad9a785d9112b468b9fc37f3b60a40e8764d5cac9f58e7d16 diff --git a/app-containers/podman/files/podman-restart-5.0.0_rc4.initd b/app-containers/podman/files/podman-restart-5.0.0_rc4.initd index d02bd64c6279..62bea5bc12de 100644 --- a/app-containers/podman/files/podman-restart-5.0.0_rc4.initd +++ b/app-containers/podman/files/podman-restart-5.0.0_rc4.initd @@ -2,21 +2,21 @@ # Copyright 2015-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -description="Start all containers with restart-policy set to always" +description="Start all containers with restart-policy set to always or unless-stopped" command_user="${RUN_AS_USER:=root:root}" command="/usr/bin/podman" -command_args="--log-level ${LOG_LEVEL:=info} start --all --filter restart-policy=always" +command_args="--log-level ${LOG_LEVEL:=info} start --all --filter restart-policy=always --filter restart-policy=unless-stopped" depend() { after net } stop() { - ebegin "Stopping all containers with restart-policy set to always" + ebegin "Stopping all containers with restart-policy set to always or unless-stopped" ${command} \ --log-level ${LOG_LEVEL} \ stop \ - $(${command} container ls --filter restart-policy=always -q) - eend $? "Failed to stop containers with restart-policy set to always" + $(${command} container ls --filter restart-policy=always --filter restart-policy=unless-stopped -q) + eend $? "Failed to stop containers with restart-policy set to always or unless-stopped" } diff --git a/app-crypt/Manifest.gz b/app-crypt/Manifest.gz index b25cabfdda2113a5202cd6ed19a6f7daa25be128..29cded5e99ab2146768c7ec536e8bd49745dd82e 100644 GIT binary patch literal 25057 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 I1~9V#0QSZoasU7T literal 25064 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 diff --git a/app-crypt/badkeys/Manifest b/app-crypt/badkeys/Manifest index 17f96ddd27bd..d1bf13454206 100644 --- a/app-crypt/badkeys/Manifest +++ b/app-crypt/badkeys/Manifest @@ -1,3 +1,5 @@ DIST badkeys-0.0.12.tar.gz 374956 BLAKE2B 4d9670d12bccb72e3ce3cc686967c58602da559da4cbf2157576f5122c3064059def1154b2c7bda1bc6f9e13f8dc8a1cd341917610ffb36e0bf10616c614d955 SHA512 b76dd0b6cd10b4136d83d8b2e44adc8b8fb7d4ef7ae78ec404826283de2410356c3abecaac8c1434e181b8ccd0b77b6ae1dd5eaf568be15c8124868c25027e96 +DIST badkeys-0.0.13.tar.gz 376612 BLAKE2B 78c12941f38c74b2acbc192e8db20978d9aa26f80e278b253c4e57173642f06b461b5efe2ded006387323d9a883558fabebbd7386c05f662ad1022ebfc6384cc SHA512 33f6f8625e6b97c9523e34e4cc25e0ab50873c62a6830be7d248035d2ff6be947fcce33b862a944bba45f10638fe659c50b0778bf4d545fcb0f93149d46b8add EBUILD badkeys-0.0.12-r1.ebuild 689 BLAKE2B f23120e84d1f5d7d1686936f019deba776c4e6626f103ca8a0105df1da9490b340d5a409e7e9e17366ff2083ccf22a53acf8e1db8abef96b148dd3ccc787c9da SHA512 a2786649a196bd15d0bcbb66150230b29096ac96ad58ab0a3869fecfefba7fb587c57a654f34db9d98f54793d6644446d296c6f5f811812cd7ff522ca8cf856e +EBUILD badkeys-0.0.13.ebuild 689 BLAKE2B f23120e84d1f5d7d1686936f019deba776c4e6626f103ca8a0105df1da9490b340d5a409e7e9e17366ff2083ccf22a53acf8e1db8abef96b148dd3ccc787c9da SHA512 a2786649a196bd15d0bcbb66150230b29096ac96ad58ab0a3869fecfefba7fb587c57a654f34db9d98f54793d6644446d296c6f5f811812cd7ff522ca8cf856e MISC metadata.xml 508 BLAKE2B cf3826ad646dff67f5d0094f91c2bb1d8598f65c31774894cb95b02680225d756541cfd921341dde90e91a176e4b5962608b08c202f9b312937bfd3a47aa3090 SHA512 0fa2d7cc7f7a49115fa10377f54461261d45fb1641f22a750f748eb5c41bbe261acdeaaaf39b6c3cca0072e07332e3222b15ae2ea9345664e81df629254fd855 diff --git a/app-crypt/badkeys/badkeys-0.0.13.ebuild b/app-crypt/badkeys/badkeys-0.0.13.ebuild new file mode 100644 index 000000000000..aa253f0c359e --- /dev/null +++ b/app-crypt/badkeys/badkeys-0.0.13.ebuild @@ -0,0 +1,26 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_{10..13} ) +DISTUTILS_USE_PEP517=setuptools +inherit distutils-r1 pypi + +DESCRIPTION="Check cryptographic keys for known weaknesses" +HOMEPAGE="https://badkeys.info/" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" +IUSE="dkim ssh" + +DEPEND="dev-python/cryptography[${PYTHON_USEDEP}] + dev-python/gmpy2[${PYTHON_USEDEP}]" +RDEPEND="${DEPEND} + dkim? ( dev-python/dnspython[${PYTHON_USEDEP}] ) + ssh? ( dev-python/paramiko[${PYTHON_USEDEP}] )" +# TODO: add optional binary-file-search dependency once +# it is packaged. +DOCS=( README.md ) + +distutils_enable_tests unittest diff --git a/app-crypt/gpa/Manifest b/app-crypt/gpa/Manifest index dc5d65e8bc7f..0ae01a917791 100644 --- a/app-crypt/gpa/Manifest +++ b/app-crypt/gpa/Manifest @@ -1,4 +1,7 @@ +AUX gpa-0.11.0-c99.patch 734 BLAKE2B f8aa243a9012afd1de410bd009edbb591d3f4371834dad1c0f7bcffa877ec48055dada976226ca50404839939a79608ef8b05181e34f05edcd02a7287f058ad4 SHA512 ac987af6ae02c16d2479c784c194de170c9ab852c6c11ecfacde1901fdc921e790135edded6133e88ec032c7a9c584934bc21b3fefcb111f897bce2835df21e9 DIST gpa-0.10.0-autoconf.patch.xz 8500 BLAKE2B 0b1b99ef0096f4634b60cddf46d3eb6d70da17be1f506265f2642e742e8f7a016e2b340c6722d5976f185b20b1b2ad96661b375fcdd24595d225314bdfc97e56 SHA512 be59117bea8f254238306e6e8ef023f4485bc940387a7a3d4b47dab2962410d6bfb0a540476061beca531504ff5c56d7d8b2416d366810c73359807cdcc42207 DIST gpa-0.10.0.tar.bz2 782455 BLAKE2B ef663432cbe20fb5c543696627f448b3970099b6a0f8f68b57e3d87af03550597adcfe4c27c2774d1f278cfc9d07a089652f42ef4f8c3cbc0192b645c465ac0e SHA512 87004fb0806e76012bc194f95afe9ef6044aec890b26e845f45c314e1bd8864f056ba5e32f9ef2e15b24b50840235e6e548a5e3006b255b4f1c20e0fd7710a3b +DIST gpa-0.11.0.tar.bz2 827217 BLAKE2B 7221346e68502667791b17f73b11a946de71d5f52165b8ccc9355f6015dbd4b82f63ea6cf4c20497354fb7031fe8ecb7c0bcf59878559af7037f5d21023b486c SHA512 976c607732ac5558bc00bfd777408605729155773036ac811faf1e528c29567f9f16288aeaa3390fef7b8eaa75ae68a0fe710f8b55d001580a09d7382d33d20d EBUILD gpa-0.10.0-r1.ebuild 1063 BLAKE2B a62da61c3c894475de8c3f7ef941927174208731355aa068e52f4925b95931085cd78cb52959c7e39feb542772b8daff179210bde7599af41fe6db111a919ec6 SHA512 6ca569fb90d8e2eb2b31ac7ae96692c0352dbc722671491ab8f59b641bca1e4504df14b25df2706ed6cf4bc04de0d7539270b8e1b6603b2c3216e6094f51f920 +EBUILD gpa-0.11.0.ebuild 822 BLAKE2B d9f05f636929ebb30fb27d44be908502dfddf2d828b126f726e5b01923953036860fd8d2a18886d9b3eefbec7c9550f615c95ea2fe0b6aa35b415c9b805ceb29 SHA512 a8b8c8a220c18846b3da8a04569a307f4c00ea6b297c2237aafcf080498a2795e423181693b8fd1820fdf18c920c483bae66aad81d0c6475aae78bb1bc72e569 MISC metadata.xml 258 BLAKE2B b3ebb9691cf2c860b26172c2fc7ead843959a83806b7c06f4eec2ea349a6d2f39afe2f4b08c09bc7f65d18bece520b8b6306c8c7c2075d653f04b09af43db8fd SHA512 02ab38ca1547c68e87cbcad1dd4bb121e90d1fcca941cbfd29583ea803ed50617aa6a29df11915af5e95d63fc817df2250c7b8189157d705ef86e477d6a1685e diff --git a/app-crypt/gpa/files/gpa-0.11.0-c99.patch b/app-crypt/gpa/files/gpa-0.11.0-c99.patch new file mode 100644 index 000000000000..bc34bc95bbbe --- /dev/null +++ b/app-crypt/gpa/files/gpa-0.11.0-c99.patch @@ -0,0 +1,17 @@ +cm-piv.c: In function ‘reload_data’: +cm-piv.c:510:7: error: implicit declaration of function ‘gpa_keytable_ensure’ [-Wimplicit-function-declaration] + 510 | gpa_keytable_ensure (gpa_keytable_get_secret_instance()); + | ^~~~~~~~~~~~~~~~~~~ +cm-piv.c:510:28: error: implicit declaration of function ‘gpa_keytable_get_secret_instance’ [-Wimplicit-function-declaration] + 510 | gpa_keytable_ensure (gpa_keytable_get_secret_instance()); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- a/src/cm-piv.c ++++ b/src/cm-piv.c +@@ -41,6 +41,7 @@ + #include "gtktools.h" + #include "convert.h" + #include "gpa-key-details.h" ++#include "keytable.h" + + #include "cm-object.h" + #include "cm-piv.h" diff --git a/app-crypt/gpa/gpa-0.11.0.ebuild b/app-crypt/gpa/gpa-0.11.0.ebuild new file mode 100644 index 000000000000..324e91720a83 --- /dev/null +++ b/app-crypt/gpa/gpa-0.11.0.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit xdg + +DESCRIPTION="GNU Privacy Assistant (GPA): a graphical user interface for GnuPG" +HOMEPAGE="https://gnupg.org/software/gpa/" +SRC_URI="mirror://gnupg/${PN}/${P}.tar.bz2" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="nls" + +RDEPEND=" + >=app-crypt/gnupg-2:= + >=app-crypt/gpgme-1.11.1:= + >=dev-libs/libassuan-1.1.0:= + >=dev-libs/libgpg-error-1.33:= + x11-libs/gtk+:3 +" +DEPEND="${RDEPEND}" +BDEPEND=" + virtual/pkgconfig + nls? ( sys-devel/gettext ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-0.11.0-c99.patch +) + +src_prepare() { + default + + sed -i 's/Application;//' gpa.desktop || die +} + +src_configure() { + econf \ + $(use_enable nls) \ + GPGKEYS_LDAP="/usr/libexec/gpgkeys_ldap" +} diff --git a/app-crypt/gpgme/Manifest b/app-crypt/gpgme/Manifest index d38abeb5403e..7c6d21854e4f 100644 --- a/app-crypt/gpgme/Manifest +++ b/app-crypt/gpgme/Manifest @@ -5,6 +5,9 @@ DIST gpgme-1.23.2.tar.bz2 1836904 BLAKE2B 563e470e861c7cc64ecb3e8dd0a0ed8436bc08 DIST gpgme-1.23.2.tar.bz2.sig 238 BLAKE2B fafba6e2f1f34c53fa3f7e05953298132f7b046048660b9f2df5bc11ccb9694b581117ca78883a8f4ca9af060397a39f3132a3711be1cd28183b7c2f8f93a8b7 SHA512 65b7cdd4ce06bb0b15b13033d226423380338efdcb47ffc3f33780a92973453053f8f59b12a3f37e392e773bdd207a7420c25aa3a210c15eec45b7bfef6e891e DIST gpgme-1.24.1.tar.bz2 1891695 BLAKE2B 8438291baec336c329deb9b864e1f3d2710066b992495a82cf83b264b52166e65bfb997aa7a06a18d90bd1048772da8ab6189ba114dd5117f50614dc8210cd37 SHA512 13e90371a733bca4cfefeac0588059d9fab3310b63c58c759f5ba9f9fddc6b0bdab6493fc2bc129c0ebe102ce4effa8067823937d3382f7c7ff02183717bbfd6 DIST gpgme-1.24.1.tar.bz2.sig 119 BLAKE2B 95232e31a8402cc5ec79d3a459ec6e35feb2d419dc7ac49b8e78103159ca472aac648e97acc3723dee4f2301e2333356e2b1f4376f423d8a3ef3734913249e69 SHA512 11650ea2af3e1c865eafc3c55632befeb036ce0435c32770dd6d6a03026ba7d343e9dcb3ab3597f6b6aae317f1aa26fa1e824f36caaf7214422b8b7ec76cc953 +DIST gpgme-1.24.2.tar.bz2 1891804 BLAKE2B 3d112fe3401c6143d09474eefcc3fda00394b0db61c37d7da79ddf3352c71b67e2972800efbefa89bba4726a4997ef473c3dbdac8c5d42612a73332711cf4d4a SHA512 ad69101d1fceef6cd1dd6d5348f6f2be06912da6b6a7d0fece3ce08cf35054e6953b80ca9c4748554882892faa44e7c54e705cf25bbf2b796cd4ad12b09da185 +DIST gpgme-1.24.2.tar.bz2.sig 119 BLAKE2B 015c8243e84b36110985c1524c8ce124d2756bdcbb4a74ad046620516f3fba8a93e2d9d5aedbb720ed096d171bce71b4bc24e6fdf8b6ba59c263dd4c3c672c5a SHA512 1010067b40f2720e278577ae7599c957e26fdf81d35e21ea878813f2a2bdb618a4be636726252068438c9ef89cae9c1cd3e4acaf27243359abc3e5cfd7a87855 EBUILD gpgme-1.23.2-r2.ebuild 6058 BLAKE2B c6a0f78406386360883618d0820a4f21de71fa4a54293ae791fc8d11cf738359f35d4e1d4eb2e0f179d80250a42536e5aaa4944558ac2d800b0cd1a4868cd48b SHA512 264b838f5b3c89476a1800b59aa18f0153d186103eb395f37d4513094fdb1ced89e6d929cd38712de419542762eaa80d983a13ef27ae16843aca4ee0e30fdf38 EBUILD gpgme-1.24.1.ebuild 4681 BLAKE2B 17c6087bf80e305fb784e4e09e50d43a854345a097e10a754c164eef56f7810c324fae4dc1ab3fb3d2ce3a7d086aaf86e1c38d1d0226ac1130a4bd49fb7edcd8 SHA512 a98ccb8432d5e611646b54f1ad0b2abaec31fa5eea900d032d04d70ec33d196cb4ea86d6be048dd659316373de1fb75c7ae3ae1759cb3fa1f91590df578e1c1b +EBUILD gpgme-1.24.2.ebuild 4689 BLAKE2B d6d1314cc484ca89883d361897e3974d9914034f49c00c52fe0ca6b5349cdcff61cb70a5127af893571b8f93a4855e9ac3ef925f51a73ce459ff65d0518fa580 SHA512 7c65d2e67b4d08b787a1e4574e017b0b699562bd463e76586a8d58bc274ac092ef74379135184ded58e51f6da23698b7e8d9febb052bc86271d447388d39e373 MISC metadata.xml 333 BLAKE2B 6dd18b63ec1f7656ab8bd705242bec45d7820db8be31f326172cad400711e6d7268c156d6b81facfdfa79118c04728ac910a8f8de36a11454227a1399235a582 SHA512 21b8d7bf3f14b5ab7e2ea587027395cdd881ecddd5a4f70237cafc70dc904b396a33f70dd7ef37519df5a204f4e3a89d9ea6ffc221df41bd9cbf23e69863f12f diff --git a/app-crypt/gpgme/gpgme-1.24.2.ebuild b/app-crypt/gpgme/gpgme-1.24.2.ebuild new file mode 100644 index 000000000000..4d40ae9b48ae --- /dev/null +++ b/app-crypt/gpgme/gpgme-1.24.2.ebuild @@ -0,0 +1,178 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Maintainers should: +# 1. Join the "Gentoo" project at https://dev.gnupg.org/project/view/27/ +# 2. Subscribe to release tasks like https://dev.gnupg.org/T6159 +# (find the one for the current release then subscribe to it + +# any subsequent ones linked within so you're covered for a while.) + +DISTUTILS_EXT=1 +DISTUTILS_OPTIONAL=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..13} ) +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/gnupg.asc + +# in-source builds are not supported: +# * https://dev.gnupg.org/T6313#166339 +# * https://dev.gnupg.org/T6673#174545 +inherit distutils-r1 libtool flag-o-matic out-of-source qmake-utils toolchain-funcs verify-sig + +DESCRIPTION="GnuPG Made Easy is a library for making GnuPG easier to use" +HOMEPAGE="https://www.gnupg.org/related_software/gpgme" +SRC_URI=" + mirror://gnupg/gpgme/${P}.tar.bz2 + verify-sig? ( mirror://gnupg/gpgme/${P}.tar.bz2.sig ) +" + +LICENSE="GPL-2 LGPL-2.1" +# Please check ABI on each bump, even if SONAMEs didn't change: bug #833355 +# Use e.g. app-portage/iwdevtools integration with dev-libs/libabigail's abidiff. +# Subslot: SONAME of each: +# Bump FUDGE if a release is made which breaks ABI without changing SONAME. +# (Reset to 0 if FUDGE != 0 if libgpgme/libgpgmepp/libqpggme change.) +SLOT="1/11.6.15.2" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="common-lisp static-libs +cxx python qt5 qt6 test" +RESTRICT="!test? ( test )" +REQUIRED_USE=" + qt5? ( cxx ) + qt6? ( cxx ) + python? ( ${PYTHON_REQUIRED_USE} ) +" + +# - On each bump, update dep bounds on each version from configure.ac! +RDEPEND=" + >=app-crypt/gnupg-2 + >=dev-libs/libassuan-2.5.3:= + >=dev-libs/libgpg-error-1.46-r1:= + python? ( ${PYTHON_DEPS} ) + qt5? ( dev-qt/qtcore:5 ) + qt6? ( dev-qt/qtbase:6 ) +" +DEPEND=" + ${RDEPEND} + test? ( + qt5? ( dev-qt/qttest:5 ) + ) +" +#doc? ( app-text/doxygen[dot] ) +BDEPEND=" + python? ( + ${PYTHON_DEPS} + ${DISTUTILS_DEPS} + dev-lang/swig + ) + verify-sig? ( sec-keys/openpgp-keys-gnupg ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.18.0-tests-start-stop-agent-use-command-v.patch + "${FILESDIR}"/${PN}-1.23.1-tests-gnupg-no-tofu.patch +) + +src_prepare() { + default + + elibtoolize + + # bug #697456 + addpredict /run/user/$(id -u)/gnupg + + local MAX_WORKDIR=66 + if use test && [[ "${#WORKDIR}" -gt "${MAX_WORKDIR}" ]]; then + eerror "Unable to run tests as WORKDIR='${WORKDIR}' is longer than ${MAX_WORKDIR} which causes failure!" + die "Could not run tests as requested with too-long WORKDIR." + fi + + # Make best effort to allow longer PORTAGE_TMPDIR + # as usock limitation fails build/tests + ln -s "${P}" "${WORKDIR}/b" || die + S="${WORKDIR}/b" +} + +my_src_configure() { + # bug #847955 + append-lfs-flags + + cd "${BUILD_DIR}" || die + + local languages=( + $(usev common-lisp 'cl') + $(usev cxx 'cpp') + $(usev qt5 'qt5') + $(usev qt6 'qt6') + ) + + use qt5 && export MOC5="$(qt5_get_bindir)/moc" + use qt6 && export MOC6="$(qt6_get_libdir)/qt6/libexec/moc" + + local myeconfargs=( + $(use test || echo "--disable-gpgconf-test --disable-gpg-test --disable-gpgsm-test --disable-g13-test") + --enable-languages="${languages[*]}" + $(use_enable static-libs static) + GPGRT_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-gpgrt-config" + ) + + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" + + if use python ; then + emake -C lang/python prepare + + pushd lang/python > /dev/null || die + top_builddir="../.." srcdir="${S}/lang/python" CPP="$(tc-getCPP)" distutils-r1_src_configure + popd > /dev/null || die + fi +} + +my_src_compile() { + cd "${BUILD_DIR}" || die + + emake + + if use python ; then + pushd lang/python > /dev/null || die + top_builddir="../.." srcdir="${S}/lang/python" CPP="$(tc-getCPP)" distutils-r1_src_compile + popd > /dev/null || die + fi +} + +my_src_test() { + cd "${BUILD_DIR}" || die + + emake check + + if use python ; then + distutils-r1_src_test + fi +} + +python_test() { + emake -C lang/python/tests check \ + PYTHON=${EPYTHON} \ + PYTHONS=${EPYTHON} \ + TESTFLAGS="--python-libdir=${BUILD_DIR}/lib" +} + +my_src_install() { + einstalldocs + + cd "${BUILD_DIR}" || die + + emake DESTDIR="${D}" install + + if use python ; then + pushd lang/python > /dev/null || die + top_builddir="../.." srcdir="${S}/lang/python" CPP="$(tc-getCPP)" distutils-r1_src_install + popd > /dev/null || die + fi + + find "${ED}" -type f -name '*.la' -delete || die + + # Backward compatibility for gentoo + # (in the past, we had slots) + dodir /usr/include/gpgme + dosym -r /usr/include/gpgme.h /usr/include/gpgme/gpgme.h +} diff --git a/app-crypt/hashalot/Manifest b/app-crypt/hashalot/Manifest index d6aec07fc811..4f7106523f88 100644 --- a/app-crypt/hashalot/Manifest +++ b/app-crypt/hashalot/Manifest @@ -1,3 +1,4 @@ DIST hashalot-0.3.tar.gz 80284 BLAKE2B 1ec902f917a1e3e5babb24ea8763360fff8d41ab0baa6fac8053313c2115bc03187fb805f6ae6c013eb7a4f8eb4111bc781d5ac04c275fdba87658f0346aa8fd SHA512 c9ee39cefce5cc73b9a3a67b240616db9b66cde94fa351e6ebd4d13fd0f9195de9021c07d223809107e50b0a091d0d55e4caf2f71bba93f6d0da86af10632145 EBUILD hashalot-0.3-r2.ebuild 384 BLAKE2B dad124f75fd46db431b2a645d5e7779a5b0f0b0cd50e5acae7a0eb0b00066f7a0839d2857123b2e0c83b548b9f0f8718308987ffc97be67afdbefe7b80fe2d7d SHA512 e9fdc71f75ed1282535c8d53531f70fb5fa665a8b495b8cdf74eb17d93151bf4f190f2c48b78255d00fab56b8b4b2dee3de3301d61b4eaf6c855af99fc0deaae +EBUILD hashalot-0.3-r3.ebuild 485 BLAKE2B c51126743a7565bb1b44643cb04d61c3dc2809c7a52359b180f626418f1bf5c1363b7bc85aa9757b663e4ac893652e56e1e6273d447dbf68cb529297fa8173c4 SHA512 f5b4e41ac96751d13dad0b15c29bc6812892bb30fd751773ab02e7f5ca99335738aa0961304a650ca66db94a6f234f692c7d000d0f55e70bc2e5e41fcec47bf1 MISC metadata.xml 254 BLAKE2B f3a9f843cf94243d1129711770df727fcdc8808bca829ef784819cab6f5410dfa463cfed85182f8228c7de796a674dd602653ad3ef817a62c0c3e7198b23befe SHA512 b9fcd3084a7e197f6138e1ce8b0eff99c4c203c37a7d5c40de207040ba1501ef0e5b2f4e00216a567037bcd6d3394fdec6ff587484c9ba2fca9d04f431733b7c diff --git a/app-crypt/hashalot/hashalot-0.3-r3.ebuild b/app-crypt/hashalot/hashalot-0.3-r3.ebuild new file mode 100644 index 000000000000..f15001fcf6ae --- /dev/null +++ b/app-crypt/hashalot/hashalot-0.3-r3.ebuild @@ -0,0 +1,21 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="Reads a passphrase and prints a hash" +HOMEPAGE="https://www.paranoiacs.org/~sluskyb/" +SRC_URI="https://www.paranoiacs.org/~sluskyb/hacks/hashalot/${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86" + +src_prepare() { + default + + # https://bugs.gentoo.org/900132 + eautoreconf +} diff --git a/app-crypt/keysmith/Manifest b/app-crypt/keysmith/Manifest index 8b211867278d..cb0d50bae306 100644 --- a/app-crypt/keysmith/Manifest +++ b/app-crypt/keysmith/Manifest @@ -1,7 +1,5 @@ DIST keysmith-24.08.3.tar.xz 171432 BLAKE2B 3849b02928b0aff80e28cc09d208ff543cf930e8e997a5c2c139325e1ce1785c5e569604eb64217f02b2ca99ae5b5edd651069f601a5a01ed59aaf65202ffedf SHA512 bfb67ea99c1435bee49e3a5170c9ca102f9d6ffe81ca66c1fa97e8c86fdf4464abb8a1c945cb7ffa2d89bfa995dda3ef7d20a512476642d38b9483789163b8eb -DIST keysmith-24.12.1.tar.xz 174024 BLAKE2B a1f4ef4b1c958bffea7ee95784ba172d0de344e5761dcf98df2658451ab02447412a83264cff5f14b6d920c206bdf0c0435f6d0fe7b1929a337a21336a974024 SHA512 f3aa3feb50da43065491837080f12877590f2c67df6d10260b2dddfc1978e25d86dac84ed323278b0a580e0013bf5fe298be926f93a09984d69d8e0bbf70e6f6 DIST keysmith-24.12.2.tar.xz 174036 BLAKE2B 117a97f260be434354575915ca91576a63bc0002d6701186af73820eaa658c32933437a5e40855505e7630e4a36b3d40db3b5cb7bc5d80f5c421948b917ae01e SHA512 c16575cef83b55bddea0a3039e8a080790df9463784e5b8a8ddeea3991b6ff29845a07ac6229df591d3186e320d23616411421cc59607e9deaefcd4ed69f436b EBUILD keysmith-24.08.3.ebuild 847 BLAKE2B de6b50e6b8748802879f80b65ac6910f9cb6bbbb9d6ae0c066dbd539db0e8a09669c06916539423d1b118bb126d57081eb8d27e74fd4c9081cab3e0dfd5eb5a3 SHA512 ec36ed5e237e349cc7a56ef3c0ffa1ccb53d6268ad0302e2fe38dc8cf3efae1cc693ba3cd6109e2f6743120f4e2dd8f69752aba29e4e15f3ef8187996a84f659 -EBUILD keysmith-24.12.1.ebuild 890 BLAKE2B 703fdd6ed21ddcdf4128707a459d33583977d35240bec61e2e0cb98e56c67082f8f98086334603ceff154e99656e41fc74fe3af1bfad55831aab6eddbffccf49 SHA512 1f25ac6f524def74bec13bee1a8dc07ad85dc5e61630368ff129fa0825f74d92b4671372d31b6b0d6a24cceed1bb0c834c6d15a5d3bed192f7bc123f4dbd0dc3 EBUILD keysmith-24.12.2.ebuild 890 BLAKE2B 703fdd6ed21ddcdf4128707a459d33583977d35240bec61e2e0cb98e56c67082f8f98086334603ceff154e99656e41fc74fe3af1bfad55831aab6eddbffccf49 SHA512 1f25ac6f524def74bec13bee1a8dc07ad85dc5e61630368ff129fa0825f74d92b4671372d31b6b0d6a24cceed1bb0c834c6d15a5d3bed192f7bc123f4dbd0dc3 MISC metadata.xml 380 BLAKE2B 110b310586031ac53056b1502648607210ee0256858efee1d54e756e130b4e331202f8571c96f5064ccee7d63bce9c4af2b92c40389d2c7b06a4fad70be8656d SHA512 10365587bc7347003e99f0684c92fa7c7154576643eaee09e79b1bddf5aed12b6062dc426b07343c6cfbcd423ab3e77e245b3659919f75e4a4183fb56fa2fa0e diff --git a/app-crypt/keysmith/keysmith-24.12.1.ebuild b/app-crypt/keysmith/keysmith-24.12.1.ebuild deleted file mode 100644 index a2d49325b99b..000000000000 --- a/app-crypt/keysmith/keysmith-24.12.1.ebuild +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -KDE_ORG_CATEGORY="utilities" -ECM_TEST="true" -KFMIN=6.7.0 -QTMIN=6.7.2 -inherit ecm gear.kde.org - -DESCRIPTION="OTP client for Plasma Mobile and Desktop" -HOMEPAGE="https://apps.kde.org/keysmith/" - -LICENSE="GPL-3+" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" -IUSE="" - -COMMON_DEPEND=" - dev-libs/kirigami-addons:6 - dev-libs/libsodium:= - >=dev-qt/qtbase-${QTMIN}:6[gui,widgets] - >=dev-qt/qtdeclarative-${QTMIN}:6 - >=dev-qt/qtsvg-${QTMIN}:6 - >=kde-frameworks/kcoreaddons-${KFMIN}:6 - >=kde-frameworks/kdbusaddons-${KFMIN}:6 - >=kde-frameworks/ki18n-${KFMIN}:6 - >=kde-frameworks/kirigami-${KFMIN}:6 - >=kde-frameworks/kwindowsystem-${KFMIN}:6 -" -DEPEND="${COMMON_DEPEND} - >=dev-qt/qtbase-${QTMIN}:6[concurrent] -" -RDEPEND="${COMMON_DEPEND} - >=kde-frameworks/qqc2-desktop-style-${KFMIN}:6 -" diff --git a/app-crypt/rpm-sequoia/Manifest b/app-crypt/rpm-sequoia/Manifest index c9db9939ab72..8527cea5c5f2 100644 --- a/app-crypt/rpm-sequoia/Manifest +++ b/app-crypt/rpm-sequoia/Manifest @@ -1,55 +1,39 @@ DIST aead-0.5.2.crate 15509 BLAKE2B 0214f3e8ee85a7e18c7d20f9a3fcbdbb9e5af6fdfdcb427e915279b505556dbd2df6d09d5c90561417c56796236a56ab24b2b11389745bc03a0a6da45c0e8636 SHA512 61926a615618e64efd0e9342d729a89f80d6e092dda50e018252a06147e2ca0dc2a989136416f57ae02019695757dfa3d3f3cf3799f138e440662744ecab4a44 -DIST aes-0.8.3.crate 124679 BLAKE2B 7a352a9c5452ed91b32ed82a7450013ba0f0db4d990d37bfa78782e9c031d2a33d0b7680625881566ecc4b7048a44854759163d2e5c962783fffed1ca7d38a78 SHA512 89aa691fb6060c37ae8bdc2db8c7ba87a7c5201a776c247bb499fca0fa2b0c062601144af49eb781342a97760a124cc24dbfc38ccecd16493270f47d96282cc0 DIST aes-0.8.4.crate 124812 BLAKE2B c4a9cadbbfd9d24a758bd5d18b851fb86bd74f5b1f0f6f5706275329d92396a00dc2c35fa0aa2af5b55fd336934d35df413a31f85ba886e85a037296f9df25bd SHA512 96243337546acf64f89bf9ba23011eea1a205d82d96707f9c45bf28cc62ef00cdac5cdfacb8d6013155ee1522ad73dd1b7f166c74ed18159bf23c3c48ec77d79 DIST aes-gcm-0.10.3.crate 148991 BLAKE2B e1376b741386577277a8cb9535c1ad3e15ea383c0f324bc5cedff09a76b11f2c9e29226535688f9431e904bf2800b8e140c4b1cab333e572208eefd19ca897f1 SHA512 f9aec1e2609262c30921bf83cdd82117d147905d4ca311f9fef4b9f1734d3a57893ba2586f0ccfd39cf9264d347ba2c2d2c52b4726495eda8fec7fbec42d6db3 -DIST aho-corasick-1.1.2.crate 183136 BLAKE2B 2d4306d8968061b9f7e50190be6a92b3f668169ba1b9f9691de08a57c96185f7a4288d20c64cb8488a260eb18d3ed4b0e8358b0cca47aa44759b2e448049cbaa SHA512 61ef5092673ab5a60bec4e92df28a91fe6171ba59d5829ffe41fc55aff3bfb755533a4ad53dc7bf827a0b789fcce593b17e69d1fcfb3694f06ed3b1bd535d40c DIST aho-corasick-1.1.3.crate 183311 BLAKE2B 8dfcbba0b9d94e55eae739b16f5c6474baa43ee7854c5ca792f426a9f46fb0eece79cd493b804e51449181bcad338b96819fe977c02c9907654d713e26b9f830 SHA512 ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69 DIST android-tzdata-0.1.1.crate 7674 BLAKE2B 4385a4875aadaacd5284a9ca7d1bf8a7bf14bf8925d1563d52fbabacc3af2c1ea08bfcf77106f3648f4fa052ac295158a21e7a0131d31eb9aecd99ea4ba20055 SHA512 4294024c21ddd0090c42c8eedf708d40d917f55ad5a4cb7aa3e64cfb6551b6df60f2e36bc08620c1d2fc8c7ba7207411518ee5c8635f60ed8ad9efdd458a2077 DIST android_system_properties-0.1.5.crate 5243 BLAKE2B 86f68ec3bdabf8c6ec47881d794970f08a9eefc7417fc8a2bf4fe9faf9bdd2a2024a94adb0cbf96673409f5fbbd4d0111a1ac371339e7a90a277b6cd5003524e SHA512 b09f51339f9772c0e2e4241b36cf51573c6b96b19ffc1fbbc94b1c1d1d2fdfe8eac3134af54174a675ab05d18ef4f6bcb2c7fcc20114bbeef6e17e3692202191 -DIST anstyle-1.0.4.crate 13998 BLAKE2B fb501700855709e53438461c2f4b48d869613e7bb3bb700db8bd0d95082876d3782dc2cfe3ce110bb4a206994de56afe0e90fe89f9ccd07c60fe1c652123ba59 SHA512 671c6f57106198bcfc2f9000aacba98fabacfadfce2329dfe8d0e0a2af9404da483d7a844ca2b08e1fc0249371f574c13d0082c9f7a4ed90ff581308257a52d3 DIST anstyle-1.0.7.crate 15709 BLAKE2B 872e0ed09e7e94c6f6b812349e39f949aff4d7cbb87744ab26fe49f57a7d330e0f79447213374f7f862ea276aab2dd1077dc8df3f7c5f34079ef30c4d17eeeba SHA512 e20d49f7d148e03f7b127be7802e0b6b7a2b05720614d46c2ade5e440ce322b44ddd3a9239b897886faa03ed1cb30f947ee27d3811fa83dffba10b3975eba7ed -DIST anyhow-1.0.79.crate 44931 BLAKE2B 9270f04c6fbbecb535e3081f4275c3df28f6a893c1dfc0a9f7c009994de2deb8ebced04fe5e6f62931b33c3707f4fbfb0c3b28da1a611b413d40d27149d1fd2f SHA512 ecd6fb1367d494df18c0e274b336a133f3acf7b6a5487d20bdd06e08c7f1f729877086a0966e998221daff120504fadd2be2dc4219ed621f81b0a50c2bbc2011 DIST anyhow-1.0.86.crate 46741 BLAKE2B 21b1f3acd1c1b659e6e9a53693178de67c806d7dbad30dedea0fb7078b2388baa196d1e7240a7dc88ed9dc93ee4c00bca8e608dad1b6bfb5bfa4f4c5ab51f0d3 SHA512 3853da32a2c53d73969bb29a1e622f3a6d5832d8888dc6bc8eedb76394b392f983aa3fcb1f542933e238841486106f0f38e9a2400c12c7699baba0ebe1d8193a DIST ascii-canvas-3.0.0.crate 10575 BLAKE2B fc40c40551e3e1b2bec6ae5a85ee8b0a1ab1ef3425cdd19ec6dd47d849205004781a2c8f51470417fe7556cf8524cc63b84a532532c5081604adbcd92d286b44 SHA512 216056640604f5faba6d46e2c94ff75234fec83d3bc2dc7cf34dd279706362874e3a513c717b23bc591da07cc3088458913c4e9aa5f280550c93d261095c8703 -DIST assert_cmd-2.0.13.crate 23917 BLAKE2B 72fbb8afc12429a96c89b07dce8b2a969a1c2656aedf19ac9cd2bd1e5d5f29b3c558616858ad01a86807b787c88efc556ad432a55b59b0df5b4bdbeb9b6ab05e SHA512 3599483d28f1893945b63d693f38d656724f382ac7a0c2cb0773d72e6bba3dcc9137cca51575fca984c2435b081cd6ad68ed5d1fa04e606484926528cc41a305 DIST assert_cmd-2.0.14.crate 24591 BLAKE2B 2a25812480770ce8549700b6c5afd0e3fc230c280c66b5b61480a2db0dc6c5a95b6a564ca7eb6024fa43498168d8bd3511a6cd659498540bf1a5a3bdbc2a3fc8 SHA512 112c3f933a013715c0dfcf29889ec023c88097a70fe212a7d98d0a5272d5f6da87df9353da006483830a0ac3c42a12e12d8fabeb90eb62453982edbc75215613 -DIST autocfg-1.1.0.crate 13272 BLAKE2B 7724055c337d562103f191f4e36cab469e578f0c51cc24d33624dea155d108a07578703766341fd6a4cc1ef52acda406e7dba1650d59115f18261281e5b40203 SHA512 df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f DIST autocfg-1.3.0.crate 16524 BLAKE2B 7d5a03853d6b4f0da08d8e139fb200da21e47fa7e50d1956270d0ff0cc496f660f8f800122c95eee9ba98d9210ab200c3010b782097483d12d6be4ac0df0e7c9 SHA512 a5570b955d57a7183ba148b335837dc5af24b202e80681027536d33fe2822509ba644fc70c29f018c893285ced2bf6774f44ca6c59f7c7e2226d5349cf7c3635 DIST base16ct-0.2.0.crate 10240 BLAKE2B a8097674e84bb85fa72ea752d71446fc39e695fea9acc0f98178bb4e6569180f9acb4c7a9820708359d1c4733b57af6448015cce83f8c610985e6d2f7858fc33 SHA512 efe7c810102646733cb24c5cab62bd58d797e77b117d0fa5d651c34630f77de4d768fb99c981af5968393734bc32a2c1944a719f9f1a192b5062c0af8bb3413a -DIST base64-0.21.7.crate 82576 BLAKE2B 25cc8761c14220981ff4ed332058f6179948080cbfa2b225ec1d1602e4af14cd470c969e8b7049117e6fc51a5a24e06b1d27bab844486ecb76409d12e0581d5d SHA512 c6986d88dd9aa081d914f35b4174be4ba874848657ac4b5e63b9b45af765d973289c548ccb5a01584edfc0d8d79ff5be25b51365295d6e7a311bd7f0ae3c0cb9 DIST base64-0.22.1.crate 81597 BLAKE2B 6f216a560bd36e6e6b74e908344b457594cc768d9763070e269b56a14b150cbfc4b7f599d4c2a0a5f783638170ee132f0796fefb14fcac7fd73c58db0791007a SHA512 91cf2e4e7fc8815f9b8a86a7fa722a20eee3dc1dd57111b29e420de87ce7836bcdb1db01d3cafb9a977710ef63e7cc41b7772762323e68e0e832156858aace20 DIST base64ct-1.6.0.crate 28870 BLAKE2B 60fbd9958f2519f293db2cd86add5160b51ff4f98718591b3e65d866e8bb176670ceecd5f6e365ff3ff488bf813860bf65d375a2159dd28b25e276e027303c4a SHA512 e3a267dce49257b6990d8d0842299d75b49a9af635082dfee25e314f5ab9067b339c877a4c7b012a1eaf9a84a7f8ddf0173c6f9d8695be81b8b4db03df66c92c DIST bindgen-0.68.1.crate 218997 BLAKE2B e3706a992c166c16cd8b8ef996b2eba6a0d67f493825e7257ba660f597de33002a32df7fea0fc2508fb47155f70ace0765e9ac4e4649d1f24b2bbac8ecf06d8f SHA512 29520e30db93ef3e239273854c926eba7bbbe2ec70e5162a4722e03947461510732319bfcfc20d5dfc0df137d69e8c1ad97daa0236c5bd4da8a1679bfd696a90 DIST bit-set-0.5.3.crate 14470 BLAKE2B f6525500a494236103df2b27e964bae0b2caf718156879f972b9972fa509794bcc663c2130e3d872ecadb7ead0982b415dfa4468ef12523ee248fb1bbec2559e SHA512 c5ce7ef71559706d996505e138ce95d9f008ac3375928012a36339bfec48986ad935b384e2d21fa0d505d4cf98bd3e93be15955ecd9607d253b8a276351334c6 DIST bit-vec-0.6.3.crate 19927 BLAKE2B f5bd3bb9c87fdf3b206739b74df20cab50a1a45af3a58b2642a5a061c26207884be58ef8369a3cd06dfd3615bff0ce15915fdd4b6b6f03facc4a0f86c0b7e910 SHA512 b4b4a82c80d0ff13527ae4fff449ac9c1c7bc519c013af6ea3428348e0e5b9306b725c0a13a42d7d9dcf0f895a9eee0c63695a2503eb7fd2200083c9ea3a9aa8 -DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 -DIST bitflags-2.4.2.crate 42602 BLAKE2B 768d4ca52aca73d8acf2f494a66957ed2603eefd5a04332ed0880d230c2cc6ef3bfdc0792fa6f288a0eb132913dbb256793e580bc34f4a40e8200e1fbafe97a9 SHA512 ef4c20e6e78a2ecee97e17189b7100a504d8176c7c15d7f17d62157a116d66f83f8b2bba472a4acf02cd3edbd94b20a7047af918c3f3b371e2e04f7474be0214 DIST bitflags-2.6.0.crate 45357 BLAKE2B 3a368bd2eb58c095b7b4a46680cc2d90a28e24b2e37c854bbf8647c861c4b8fb37eca827599673c5c7df763048149dd82123d1ede1f8a0e58a6bc23c8250f7e6 SHA512 f9bb3c48931ed7e7e05ec6d13305af5da6b6c18861ff307d7dc17c658f63972c87b70b0527287b3625c8592befc207cfe15550654995faf3862bb12a6d95bacf DIST block-buffer-0.10.4.crate 10538 BLAKE2B d819c4f9c4be85868e8b105fb7e479d2e58d3ed85c3339bd677a3e111f85cb1ff624a54d7802ab79a6e1d9221115f66388568340480fe83eae1cb448f19f5b11 SHA512 b7d436d8e627e16e6ddc300ee8f706a6cef28ff6f09eff848eedee46f84bdcd03601303c92ab8996042e55922866a59259948177c0a4496eed723523e77f6fdb DIST block-padding-0.3.3.crate 8504 BLAKE2B d62481c25fd8680cdf0ad0bc259bd3777c3985ee91d5bb4995f484a15d4a9bde21c5d20f8c2efd0eb340aa0b8c7faac0f3fd817202ef4350d17994f478715eae SHA512 0849c99f2027f4e1a12872d2210310e9669f98929c99690febfeec90c0199b2274e20a5f83824f200f75f2553be2029ca85b0c5d0db4d9d477ffee9a71dd3b7c DIST blowfish-0.9.1.crate 16734 BLAKE2B edb9ef86b168259d37ae74ca5f961d4a2f79f0bd83c64a157b1605655001a8e82a1b40b0e03a24719dd9cc273fd50d1ad6a406b47b1925a9c2c687c119bcae0c SHA512 e005212e2cd0233321f1e84170829c6e05b4f4e47b81342e0fef7e12ac05f09dc6db288b6b28ea2826e9d19afa49366b74b186f2f20db6da77b57f09e124e3a8 DIST botan-0.10.7.crate 40376 BLAKE2B 63332415636f353323b72a4a2aec2910da4da71adedbe649b753b8d8531a4b10054aea588e216ae2a240bcb91873acb63cef2a1d34c364bbee383dda0f24718e SHA512 a03e0a76b8bc0bc777bafc3e2df7667dc78fffb35dc3bb227773aa23b3ebef872efec9d5144513940dcd44e18ddd87d881806803ce3736c73cf96221befe16c5 DIST botan-sys-0.10.5.crate 8245 BLAKE2B beef1579600f7fea44b7a701cc29b2f530cd1da8da6090f1cf8fdcc00e68fab711064b0d037604796aa0633f2e71495f8cbcbe69047ef773098a36ffe2069867 SHA512 6f22a5c42e4b13ae2531e1b46ad0d93c62faf96b056f80a145370816296fbf33c93c2dda94736afca7a73bcfd336003a39171c359723e05bb5c269ebb4784339 -DIST bstr-1.9.0.crate 380170 BLAKE2B 06ae5065a5d566b6333e911a5b97e3999ad2f0bc19b27023187004c81cd01e5315dcac920ff87a6bb87ccfbb949364f1361dc04d342e24f9f54490b5d44a81d1 SHA512 dc313a16c38ad881128977a20bb390e7c95a96d9530596433a7c4fd7f77d5fffd079d436006dd8d2bfc4aacdd7f0aff229504444250418f6aa3f8d6d4df9abba DIST bstr-1.9.1.crate 380305 BLAKE2B 52b45bd48874d052636c6b451cc36d8b012808ea5193e0188e5edd09f81d21b8306926cfebb405ad0650ec9aa710f609bacaa773bf854b21f4803dc38bb2eca7 SHA512 67e9f76719310de60f46adf3c39768b4dc078d4c32dc6bdcec1a94cd9f630c5238e427ed84cd6ec25a44f54e84adeb795a0e92060a5372d9fb9ad9f0914e3172 -DIST buffered-reader-1.3.0.crate 62825 BLAKE2B d36e03412d004b74b15cc4214e279344efb0119d5bac10593aaabca531c9d7052ed5bbbd191c705277f03b0e0f286365eb22300b1bc0eefc22d7a8a22c2e74ea SHA512 4c9cf94593c33e09152b1a4faf75e169be954421e1e3bcff7bb536d1103256fbc296680da01a94c0852c7ff10fcd63cd6693958f338160e5caf8a179a6b6a381 DIST buffered-reader-1.3.1.crate 63723 BLAKE2B 7a7553b5994c01666c95a678712005ed3c02fbf8f0b45d80f2e80b2bd46c5993376b16f5d89d50a7cd915aed9da6dc164901c6e62091922e615bc8b9284f3328 SHA512 4b7efde96c2db48f8452e56a904b1fc865b7317bcc324c10c0a23147b96eb14cd5097b3178910a1a74d54948b50d6499fa7f5c8630274a80ff05f1eeb2c7054f -DIST bumpalo-3.14.0.crate 82400 BLAKE2B 13bde02e2e60ea3099f4e46ff679d07b2e8046740c1855bb81fe8d20a4ef0fb26e565da724f628a00c9154ef16ffc9018f67433d2a32544564b66803b5bab223 SHA512 179c116a5320c5f21163c343ed48add36089d806e35bc303318dcfe09ba1d5f02bf8012726d0c2cb76a73fae05a7c887a91e18f9e5ff3b9f9ad8a2f12838757b DIST bumpalo-3.16.0.crate 85677 BLAKE2B 08da17b757931d2910e0299df53eb62731aa8c4ebd8915859b81d1982b331e7455dfac977c754e500a35ee07ba8eff00a61d2f62be99744e2ddbba06c1268f49 SHA512 a51b75c36f6794db444cab20eeb24f42a319080ecb486a56d254d6f873f3d188b5ccba11db30c068bd0c52c4322d4a3f5f5195c81c94b0bc04387030418835b1 DIST byteorder-1.5.0.crate 23288 BLAKE2B 7f85a7948406844070a2c8202e0bd52f73b3dfc7c666a97046128044eb9352195afb80e2bf894c0742ad109e4473339de1365d09591de70dfec6c8c02a8e1453 SHA512 96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f DIST camellia-0.1.0.crate 89085 BLAKE2B 88f67a01f18e236a8ec2613cea4f0d38fdd65b2191e5478bd7c1155feb45832d693bff15ad4b880651cdc9c74e89cdc0131548864b2c51f7cec38ecb11b5d113 SHA512 b851c285509d21ed02428ab45378dc145959bd196ab75daebb7df60bce3b71e059d4dbb5639697ef21fd6f7554c122cab8a5702b1d118c743fe02f65054f66df DIST cast5-0.11.1.crate 37018 BLAKE2B ed3d9283131df32dc18a5e4110a325b7713936e109b43bed8da0d22b0afe81a0f00c9e4fab0bca1194c93fe6f0bf326a5474af6f9274c310632b93d24dc9328a SHA512 0fe363b576ece2661616c47c4de1801756c5aaa2a56c720a7b4eedf23e031ba9d30af9d086a16b0f957c39b473cea1f059295dd1c776e9a9cd4393e6c895d015 DIST cc-1.0.106.crate 80289 BLAKE2B 10a7c9e25f9ea0fc09bcac63111d7655029da65e00c0d3f920b6b8c3748c298a253b023cae252e991815be041b4dadc656d0c4c31102623d9ecf4f2bb05eda1c SHA512 1ffe4b1f109bb889a68498f5b60f81865de7d1d528508f013c82463d12883684f7c0c623e7b3483b53e6b2beef9ffa649bc07271b28f09747b53c182f2d071a3 -DIST cc-1.0.83.crate 68343 BLAKE2B 33245b33fa845ea2f36da36e3830ec835f937e4319865b357ee9d5ea29a0f9f8392eadb38bf1d95e3c15ed201e561acaa87aedcef744f8db3dabff87a96c7f02 SHA512 742a248c3a7547bb220a0b9c97b67a831fab9b4ac21daa08c85a3966b9fe576088def33e16132fcabec9a2828a6fc437088bb045bfc98b2cea829df6742565a7 -DIST cdylib-link-lines-0.1.4.crate 3220 BLAKE2B 73c5e81673c53847c4af6a468d51166882fd13e1e876f6e0b58fb02c740d70b4edc73777939b59629ed3c9a0c68ecad95b7c2e1dfac4ca7970e3e56ae10b1f7c SHA512 375133531e88385848afe791078b7d8ec7a0a17e8b5baac3ed0b5b05c1acdd7667307768179a8d83b7a8cf86a034df38fe6e44d90016094f69434f7914cc1162 DIST cdylib-link-lines-0.1.5.crate 2946 BLAKE2B f1b3908b2cbca38e0dfb7b099188b7dc566d4332bd799a48000ceb509c995111fb6f9974aabf549e97e0d95ed43e17874bc555210f0181ba691ed6174e05aec9 SHA512 3080a84a4a414ce11956c004ebc7ab87c4617778f39a3979cd38057d08c401c11176ec2efb577ee129a730fca8f1186fea95029c7cb339a8813c504f8cdca62e DIST cexpr-0.6.0.crate 17966 BLAKE2B cb46f066eb1f4dbac00ec86dc3e562db7ee8ea5ff17d16a60004fa020405e455b8aeb3d001f669cb33d1b62525bfd04ec657ffca4ed44a83af4a5e75b2c820e3 SHA512 766bff7ca7f9bf0885aee6f014bcfc084e7fdfcd567a49443d5340acfe8f257db109de17b24588504fc35c53f2d4303e2d22da21f73669125cfca984950cf886 DIST cfb-mode-0.8.2.crate 25334 BLAKE2B e004871204d40258a052b7771f6d770f710857fd7355dd87ceaacff49ad0be2b3bbcbc8b439bff054432f336792e11e312b8bd472eca53e58036dcc4bd2f3286 SHA512 14bf9367317b2652cd070572f2a7d5f98884064a2d42c8841fe4a966e9944c8e5df3e14244c16a78a32ba8e2fa3df9348427d2f0ca6632df07fd24b75cfd7099 DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff -DIST chrono-0.4.32.crate 221116 BLAKE2B e99b0d05e62835bdf21b86f63de4cde90016df2e00c88d4c7aa492fc69cd075af8946cf022337fe38c012b88ec9f877dc4521d066512e6ec5881f7ae3fbcd80d SHA512 0c7defe4338dd6c84e73aade35560896ac0bf5b262296fa901041a6b7c460d92229c82c7bddfc6a510d5f060adfda3c88e2d2d154f0c2fd27ed644931a88246a DIST chrono-0.4.38.crate 220559 BLAKE2B ab828bfeed56eb737a1797d5e1132cafe87a1e14bf7a1fe4a5098f50e6ceead50ca2e7f041cc2ff63d5f4e41e2853322f6c345bb31ff12a5b412e3e5202f5fea SHA512 858e47e3facebd5383e71898f26b27d92fe4a69027e2cc47da2af59975ead7767355e0b699f4228eabe76a3eff8b2519c7cecf8b60dc3fc60fbf9b28e2f3d4d9 DIST cipher-0.4.4.crate 19073 BLAKE2B 144c45c1bdc5f7aef7f4fc63b6dd85955c453537567d1f1074e436e50d0d61f8413973cf3da207a48f1560ea92f2280fc5880569c78a1dd66bf97fd1d88ccde7 SHA512 1856d8b08bc3dbd2fa5c8b97e9eae43323c7aa19203ef3e80bb49cf15b5ddc832acb7b97121a52032656353e764f1f722200b638f7c28975fec1b5c9dc908846 -DIST clang-sys-1.7.0.crate 42088 BLAKE2B d1ed314a910c1b676eb780fc1c96f5ac391217ec135480d0a91b11d6f447ad06484b48966ae99115e35d921a506caf6aa7ffbc4ed86aa64367dca321678cfd7d SHA512 e544984d5bd76824ea2093f43f98b59a99e1ca8a5de40e49164b870ed4a91a530f3492faf0678190b91e74aa5d122bdbb32c649998d0ce24912dfb0b83ed6b81 DIST clang-sys-1.8.1.crate 44009 BLAKE2B 9173de6dfbd3ef9d5d1fdc559700cd3a52f95cd77302063a97e8cf311a35825825e030b47f252c857853663ae8a16709e1f7bd0c608d67c2a74eb36ed588e778 SHA512 a68c426c20110fddb8bba07d6631517b0528fad45802e5a34a22561d7e6dad82dc5001387019a03f275e9a671b09ee0a06b6e86793c4fb4ec655700bb0f5e125 DIST cmac-0.7.2.crate 44847 BLAKE2B ab8539f41e720f132b2da3176e9c533a2309cbb3dcdb027af4c5bdd6ac68e4a2a97f53efda52236527a15786b73bd96ad940385002412330d7cde60e3492a6fc SHA512 9e55f9f9323dff330ef45da953bc35da79ff8fe643b3984479dbab10b35e05e4d613f7329c46bc119fefa589d8f5f3bb268a7e7f0853003c1e192fe324e83315 DIST const-oid-0.9.6.crate 45382 BLAKE2B ac27c689784fbb1f486cec1c17502c8738ce3d7d1b579391a151cb0f0a6a0c8335e474d0a517c59230fcac74317396f20ac15d66e2f6685780be01dab197fd96 SHA512 b871d3b4326c4828b1c1d7a3e968315fa320e0b52e97081a95617ded0dc5b93d42b3f79ad26ff3b58a4835dcc442473f3965c2b60026412ad6aacc0c23e9f399 @@ -59,60 +43,44 @@ DIST crunchy-0.2.2.crate 2995 BLAKE2B 74ddf8c5e0deb2ceab65c20a2743e1230739ac6aa3 DIST crypto-bigint-0.5.5.crate 83384 BLAKE2B f688f22331b4b3620299ae9b50aa9ba6e1b2c7a4ae55e4236f7ccb8ddee4f61950ee0332b6b67005bad505434f3be74b1a0caa426036dde94162289c6926c8d4 SHA512 04668d432b4169154934d55b8ab14f708e59f70a70704b56cd72ceaca460e15589965aa92a22bef20b32ce637a423cc6e1a8819dfba38a32353bd749f7126021 DIST crypto-common-0.1.6.crate 8760 BLAKE2B f2422bfb89c15d47a8f91c8f6695e05eb56990a922e3cdf3d426044736f9932324c0d899a151a6df4d6683e6a6b21659c657d3988734014c02cd854bb4b924e7 SHA512 471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f DIST ctr-0.9.2.crate 18344 BLAKE2B 195dce5872a0f59b90bedc268c5a5796f3076d12868f29f887294301b3576047ea82098e73ae996f564e400ce316cf1cdd9016ffb714559aaa0465dc826f0cbf SHA512 6a027f4e3881e51e3dbcb89348c961a2086bb63e70652c49107f49b7d021e31f74ec8c6ae91fd1605928f93f5ffa27889f257c166669e18508995168f17b46a5 -DIST curve25519-dalek-4.1.1.crate 305441 BLAKE2B f8d48a0e584941477b409eb24b23a4ad531ba909a8d01bfb61e7e7a685f5f96fd4be1f9de77a52a429d2654f574f900837310612c42bf0a9373ec5010f2f659d SHA512 bdb846e5ee6f3cdf7e67bf3a3ff6367c17027d5222972c4476795bfbf3c2aa2745abb72a684c5997af2ee44f40f23a1d2565a8f29741a7d7b6899b1c3130cd90 DIST curve25519-dalek-4.1.3.crate 306017 BLAKE2B 0c02e769ae48e6839e37e622fecb8b1987fec0653049775a80bc53827329b50d6b8aa8288f26af306208d4a2edb94ef92a64d955c395d980cdd2624c35f0cc26 SHA512 a1dd318f96b5f1851d82a6fbd29c44dc85d2f75da16e5bcf9d6ba3abecddf5e0eaee4a7415d8afc09923064fa41529ede2622f8a5fe0b3e6d4c88b418c41bb5d DIST curve25519-dalek-derive-0.1.1.crate 11723 BLAKE2B 442b0e4fc519f233d3fa46c17c2e25807374360bd6576e97b4ec33e6c2cc228bc917e4e395a1d70aa19be7bae57db36d2c09c4c7d505691b53d5a624db67eb6e SHA512 60861002465d2ba12a6089b31fcd7a75f7a6d77319159d5383f29e857adea8cb7e5c9c0ab6977c8cfa34b60e1012a1a5dec57f637e6a225e60269ff49c25b29b DIST dbl-0.3.2.crate 6336 BLAKE2B bb912351efaf270363c2a6cefe4da42ae8c6a552690b566e5a7b70115721efd2ef42801500d534de0245b6feff5b6895bed74924c86eda3c5e9a5322f32e1392 SHA512 efed499069e1eacb709598b9a250be353d65dd9a1a27c7fac6d23af6262af0fda60b121c283b9318f301be2d80194ec1ce33733daa554f54ed3f690478d37cfe -DIST der-0.7.8.crate 85085 BLAKE2B 062d494ed32f3c97a6ef4999ef050ee07b26a854bc934304588c0b85b1d312478d1ad1812cd303e4e5aca967a2f4f76ef8ac7dea4ab6909e1a534a7dabcd46c4 SHA512 9cc5995cdb99c376cba473d2db476d81c824cc47c1924cf9c58d37a5508e2d01d3f10a009515d2ab456b1577af8de94e195bb315f61516029307ed860bc403dd DIST der-0.7.9.crate 85173 BLAKE2B f2dcf402e3d8b6a7ca818a8f260e0996290c77517b06bba8b22849c4d0e0c8f3dd57d664a06d9a7bfb1da6a39abd0740cd7d9776e75669aa970cc3ef63f924d4 SHA512 6de996346365647ac0da23d3fa9c72100d665c9225dc2f0bf1f553c4f0e7eb5c6acf3f1e36a11a7cc20e8b1c44752997e6f592c1d142755df145c5e302800f5b DIST des-0.8.1.crate 38783 BLAKE2B e85ae2d87866a537baf593afeb4e8c9aa2d6d7e239ceb0db077176455d8bae8e7e1617cec084360ebd7b1f1b47245beaa5dc7a4021d920ed1e8a07dde836c3f7 SHA512 2d54b2eecc3fb269f3fd17231088644d685feb81473043131f5bc68b5f682f726065426dc710f76e8c25cec9de597c90a30790ea3a62163a9e9539115e16c88f -DIST diff-0.1.13.crate 46216 BLAKE2B 27ceeafb7afd45eabbbe22d1f05667f513a6062762e6b77122e267282a8f2a0bf96384989508bf10c9e13af4856bc9f58f09b10055d6fc2c32681e288ffa9f9e SHA512 45e259c9fe7c23bd9e9454891b42d4aef6d681d35ee039d21fdb05ae9ed5856161a40f29889e7880ac2a2daf85f1b7d752d213b4a99a1a74ed2682c18a3ae7fb DIST difflib-0.4.0.crate 7638 BLAKE2B 57c703de0d467c997bcbedc4d6577569b3d72c612d3ccd929025a98f4bf8f72f2a0d43f3cd3bc616676c2569aed176b3c1362cfa868a4bb1197e05fe4dbce32f SHA512 fcb57859424fea6958a4407061c421599fbca111357b1fe72faa65d8fb0b74425c993a24484e8414f475fa146cd8368c4f82e1ceb4e8dd9f95741149345b37a9 DIST digest-0.10.7.crate 19557 BLAKE2B 61e69d78cb8d6850ae26ad7ff2d52dd6dce820d8c621230def11cc0e8aa6d883a6e1b25340fb45748db52a8ccf3c8d36a8aa0c8cdf4d4eeb4e3f870d86abe09a SHA512 0dd8c012468ab9011b89413ea4d3647d95b1f683b020a0e6274c95ed5148638b56fef19cd9044c837ad53715b582b88eed277fe96e917c27c5d7abdbf7c3794c DIST dirs-next-2.0.0.crate 11689 BLAKE2B f5022bc51dd50bad4ad0fd05b159a4117aca47afbea66dc42c8306ca58f3a550165afbcf9f5f721ef5ad8d357eaff305c6f6e42789354a910d5f1d05d3b7b7c6 SHA512 6ccb732da8ccf7bf35952c22a3b0caa8238319feb0a6cd3b0957e6be12548a2ce507c69cb6d3cbd2adfb37e13e6521c6229da5999edb0e47a292a41c3ea1a766 DIST dirs-sys-next-0.1.2.crate 10681 BLAKE2B 71431533dbfd6016cc309c14a842ac8d43577abe768e69bd2caaf7d19d743f3ca95b9b0be1747077282089c64485f3d4e24bec8e56d4d883f25e494d328fbf3a SHA512 b3c40a8e93d4f9f4a890718076e14779aedd67a79da61b466788268c1eaea19aa493f043a7e410f5023a23d5509e639a6fc6681fbee30e252a601091cfffa2d5 DIST displaydoc-0.2.5.crate 24219 BLAKE2B ba3396c93d27a99a92ff4a0f01a8d192b419bad25e48d9427b76260ebf2f9982291d77f2eb24d239c0b1fbb097e866a20bc46dc1879fdfc6637ea49928444a92 SHA512 5ca35fa59f263162389c1180331e9df607d9374bcb056cb04bc46c98e4d87277162ddb2335ffa8a8c5f69218abc3eabccdcaa71c21b8dd9081cc4146f266b948 DIST doc-comment-0.3.3.crate 4123 BLAKE2B a82d1c1a7a90af6e111b5e684a1298d7eac5fd8e4bf7d5baf6c7403d26b609958716d57e51122fe7ad7626fe00a2d824dcfef3cc2fd7679fdb7b5099603de1cd SHA512 e98ff9646a3612bd41bb6f278e7b6e9a0c58747f8b82524da814cf51b7f06c76ad4d65b502ac5740e818744abb295f78f15f8262d0b50ced1523f6d1a26939ba -DIST dsa-0.6.2.crate 25782 BLAKE2B 2827b1c572b4531671fc2dae97f62a0c35c9efc2f149359927caecb31979c42882ea9e2d8f2d576e246daa6aa904405ca385258db80fba5014cc3ff05d1dc78a SHA512 2efb42e3a3d22822118fce328b800c46bf39b698bc2955ffd2441702f53679cfcfd6fb0787945c1800cca1c9c472c38127dce7eff0a8054ce3eb6cb5fbbf4dfb DIST dsa-0.6.3.crate 25991 BLAKE2B f8db8e4eac2b967206e0641f83da560de847e59cbaaac7cd8f497324f8c698fa1b22873f463b8372f61da6fcec02eb5f7043e4f5506f9daa20d511a49cbe6fad SHA512 ddc74666a39fcecde77bc1714133b0cf796091d71099c13d4d13c61523c4d431c5f6a47e5eaa171d3fd5d94ffe16cb80643316834e028afb4d58f3ae6f527dff -DIST dyn-clone-1.0.16.crate 11766 BLAKE2B 00007d81ed18e86afaf542d2fdc048334aaa787fb3d97110183718f4240a0261e307d50fcba6bbe52cf1b4cb95743b6f03c80c664a8ba39ad72dfbed11b4a088 SHA512 7b0822f0f53b617d3598c033026e447a3d5d735e3087231ef4c7442e3c3eefbe690cf9fe1fc53a30b09dbd23e21bc1bc9a6a7990b70371bb99ee5e771b672012 DIST dyn-clone-1.0.17.crate 11848 BLAKE2B 1f90492639630036e1e877537328e46ee3fa697d85b2f87c45990d4a51cc900a6f604d077b16575015bbf0a970c26f898226e87e6e2af82d624f5fa565036617 SHA512 b51fee8c4fa3c6b0bc677e9997d4b6921bfee9a11e369eedc649d19eb5d95d7872b533b37fb1ca842c75e714b46afb1231369341c45071db94f09b53e37e03f6 DIST eax-0.5.0.crate 14882 BLAKE2B e0c4a922cf71aa5ae09f8dc434301242443004895a638eca6237d437f4ee72250036423a21e01eee6f2d27b3d11e943dc68788b0b125ae3ba88918d407cecc3e SHA512 d43f2356586a94915a901e700fc9fd84a4be019c605c7675fc1ae79140b9af161cd30ebc68d35dc10306893ae385d51aedfc42a62aef16050271f2022d9c55c3 DIST ecb-0.1.2.crate 6210 BLAKE2B 6e8ea36849f3deaf685c689823f2c276431d84353c8fc5ca02d5256aa36488a7da29e7b6d98cf9d402814581a507c306671b2d4b8ab34884b87858125276f812 SHA512 104c1631de32cee02291c3902a8e28c704d843cc12d3765f53c892d67e3a9429b340bee36e763e1bc929f18e1180a04ffce30d3f15407decae7a834da1ffb408 DIST ecdsa-0.16.9.crate 31406 BLAKE2B f827c0ea9f80555a1c4e37efa3509ef57bcb8c2abbefac29cfd85c3904d82495753bc5917e8e2b8659bd091d73c2d57bc2f6c8477b7d5d44ab858bd3a99229af SHA512 c69f921653a3dd47fede16aa886675c35b082c7b83486a6fea2c39cf2f98535a00263d7f0e68c5593d16b7cbee757ea913060bcaaa4c69884ca6fe2d3b149222 DIST ed25519-2.2.3.crate 17802 BLAKE2B aff96de3343d0cfba058203e90b6fd2c6cbd24531abca3a37977a1ed2f1eff0f4d4b6decbfcd9759617f381f88eed32d78397e6fa8d310b99b98d603b809de44 SHA512 3bfbfcd7f442dbb6d49860c530525bac60182bc57f6778e4ee097c7ace9c6a9d32ce430339ec15931070a538d3bb1e1f7b1cf572537ffb782bc5551fab49b2b2 -DIST ed25519-dalek-2.1.0.crate 85752 BLAKE2B 4af18b71c20e92e53ef6213c645c2b49eae208be7604ecc487207ec86d8bcdc4db7c14f485d98404059dc92dacaecd76cb9eac4d148965660fd326041f41b6d8 SHA512 66aaa5be3a3dc0efafbcf97fcff7bafa30ade2f476edc2e4deefe3b757aa180265898171755258e4d37d81d4c5a356805499bf169be4cd282856fc2906f8d4d2 DIST ed25519-dalek-2.1.1.crate 85736 BLAKE2B 77dd4019467da3dfbe574ceb574849ea665ffd8dc91660f6a9b2596fb886400508bc632dac10a06461f35fce5400f27b89b1270514188ab488a952288309beda SHA512 a3e3838a3d4eef726b65a38196e66456f586b7e29cc328eb243bacc5a247b50f10ce76df6259aa102a08ca921f07d0395793088445f36de33f5dc1aae5223ed9 DIST either-1.13.0.crate 19169 BLAKE2B d6223c76421babf163a694aa513fe07adcf4cea329872c02f5af5956e89b2c353a899f5708e5a2924e5a92d871ba748490350ba30c17dcd78dd4379e229f6e11 SHA512 72e803079bae621d282136ab1e423ba71415bf12038b6f386f294cae68a67ad9ff16e4fdf4344eb3fee4418e853f9cac344c248f6befa3006d1c954668b36322 -DIST either-1.9.0.crate 16660 BLAKE2B ad61038bfacb16f678fff5dd9ccf8f345e1bef18bd7aa0aa9c99d44abf8428939362f32fc8dbb1b60ac56016e0096201071d0bf8c0431b660605d0dfa97da466 SHA512 4978d50842386f51e31a47ad037d5e491106a668bc701bb833e6ec3998afe3ebd80efddc47756b2f300f534b39b26fc01386dc878d3b02cc8c1fec6a474c2177 DIST elliptic-curve-0.13.8.crate 63198 BLAKE2B 542536886019beb276b587f906c5552d88229eb06364d93db5eb6c93f70555e9e38e4636bda14789e5ba5b54321c0c6da85aa8d584e638fccda107e296c4d8f1 SHA512 64ec7868cfd2350f5a0e9f4fa7e2225b7f5532b8514ed6d5b8a7718f252f94caba4acf51b2471ac59717783289c9f2ab35d47881210ffbdeff08a85f68ef3042 -DIST ena-0.14.2.crate 22991 BLAKE2B b609831e2f5dfb6602293cc3260098bf0dac09afd516a8e6062453724d7d3f516bf14811e81ac3e11efd917087dbbf4f9a3524fd30ba79cca85cee2c0c63d77a SHA512 e66eea99484c2b7fa2df7c8b3df3a10dd185163b781fa03b1695900a148a7c1a1676f7e6dfe2c5d18b61a90a6756de0bc42e9c873fc7a53de3dac799b7c23c01 DIST ena-0.14.3.crate 22986 BLAKE2B d79daa3b5f3723aa7cd3c0b432b7332a0c43a5961adfcc8bed7e43bc656e54ea7e06eb1028714c7f0b52509cf8e6b972d2ac95c65ce808deb0facad2bafe0f62 SHA512 d4c893973372011505a762f4a823ddd4b50d8ff3a2f91298382f9c580fb6f688aeaab43d504a0783f8384280f7be9c585e8a079cb38959e8fdd4a078d1a642f0 DIST equivalent-1.0.1.crate 6615 BLAKE2B 302d78069d9df05e78b53f0488a9e4eb98fa2bc1e21893dc8a0acf2234347ba7c4df4b9d6b380ae77d8ffb1074b9c790460fe2dae47318aa1c4fe4208244540a SHA512 b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140 -DIST errno-0.3.8.crate 10645 BLAKE2B 4a7af10845f11b3d8f177a75a692be468e8ef0ee53fb84a4d212335f1499456b6739a59af260894b5c3853d3bf21ef3490d1e3a613305561203ca334a636c3b3 SHA512 29753c421c6f929760cd7565f8171696e4f70e677654a7507253f4fc495edbcf214ace27be46bdfe5c1a0d782f4b688f591476e56f4a1096471cb353c643328d DIST errno-0.3.9.crate 10690 BLAKE2B 8deb19cf0c830ff2adebb733ab961558cb4463f256604f9c76d5c5952f34a79b70dce47e28f68f459977ef34d4821ab5d0f7e79a7a110693700f80b49ba56651 SHA512 777fbac5730d420d58275ef63b7579997d8e6c72106d483ee1e3b1f1ce3977f1f66c56870a05acaa4cfacacb820eaf963e9c763748759cff3668fa2e6f89f04a -DIST fastrand-2.0.1.crate 14664 BLAKE2B 7a5812153500170dcc53ca8d66384fef46eeb5a8f970be43863f22f82bf427672d07cb053f4e04b0fea358ca89178399871235680f57223b8561c07b8d21cf13 SHA512 79a1e1b3f39264f037def236afbd87b732f5e0a2154b1d9e721b3c7990c52be45138320e2571fe628f482e0da7e3cf867abb745e3c277b19015fc031fd4410d9 DIST fastrand-2.1.0.crate 14907 BLAKE2B f96c74c1da31bae35e5ae0a557b3cdf120099cd7f31475ff6ce0eddfd8d30baeb025cd17b661f452cc4d3fedde763621301545e28efa030b3be21d1d9ba8d0d9 SHA512 ce776a3d0fbc108017c93ce9bff7c9e7e65590acb149dcd55c2f349d2077ffdf5ac6427753732f60cd7acf141ef6f89359b2e7d9368016be53b24e8703e71104 DIST ff-0.13.0.crate 17688 BLAKE2B c32379ebfea6cadd162dc169e0b413577fd191620f4f2a1c7d18e50ddfbe561ca865bc3e0fee3be287f43f6c9f2982992cbc56629889689bcbbf652e512da80b SHA512 eab19938f5a2cddb0fcc78b0724efd788aab7f17f04c482e0d06acac4d1cef2bcbfc74d6e4b2d9f535f9c955bf39c2153e010bdd2fa72d6d637d44baf8bf5f63 -DIST fiat-crypto-0.2.5.crate 495387 BLAKE2B 9011b63786ec723ebf77fdcd8247425d69d9522778c008629f3deaadb1716ef6034bb8f092ea77eb0c9255e8235cf3b687e0166d7d260c9d3a9170c10a01126c SHA512 c2b40d8acb78820fa74c8c427dabbc09f8eccbde806180cac3110268cd947be964d78b23fb62506cb9cf0a89da42347454bb9e516803fe4027bb633da8d87f06 DIST fiat-crypto-0.2.9.crate 495390 BLAKE2B 9201d3faedab8c73b606dce70d65d1138f5fb29e480d56b25cd66a8d2a150fb6d946c9e0ca98eaab0227490cea288b4c78917ccfb6693022d70d74dee94e6e78 SHA512 d916fe8ba3e82a365d20485b93c36994363059dead84c0266b7bfa0bcc74122d71b4a5c8689226c0e1007e7e01fc6f6c76e8687ae14fcc38f6f159287810f510 DIST fixedbitset-0.4.2.crate 15954 BLAKE2B 91270883db5ad0e999ebbca1123d8729d3040eb936034ab8da3cda72a830e45fcb977b3fe3c2b94e870c1fbc366ee8602357bb77e8b9a40cc41a04afad1b266b SHA512 57c5d756b0a202b2506270f0d5e890f7617a1e0c015b6059ea23fab49cf7af47fd06927eb56feb03b37cb2b6c467e326b3f0da1e32cfcb6339cf11a130a3ccab DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a DIST generic-array-0.14.7.crate 15950 BLAKE2B e74c785e3127095625951da192a018281ea9976aaeb11019f9088c3f27748c5fed1ef25d577150864486dc48b5138d6892e42f99979339f711a66fc70756c82b SHA512 363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d DIST generic-array-1.1.0.crate 27344 BLAKE2B c3aab4928709a33898082fa440440ad66e9e6b37167a746d276c8a2502d2a2c1aec66c97193b31a6a1241af425e7b869d19961e6a4cbb7dde436b37168f7769f SHA512 d7666c4fd7de31693837359dfd167d1660afc41bae1bde1a6aaf17340c65e9b269c9b2d3848afff2db74df619956a18155896b10055d9501cf3d72cfc3d3cb29 -DIST getrandom-0.2.12.crate 36163 BLAKE2B 0afef8504932ea0ea051cde1d14bd5b79edde68d6ebae6fe88fa4aaa532605a16f466d0d9c0d0aa619eaa105600b6d5ee4e191865a3fa041549a78f78ca82396 SHA512 dd97d7dae1a7ba653abdaf2db719e1a9c8eb721b08b4af0f1c45b1ed5079069d1b57e4f6d9d879e7fae3a890763f4b6aea9bc2d945392b98e811e7b348589bee DIST getrandom-0.2.15.crate 37163 BLAKE2B 7d534e799a4711d01c6553b8c9422dbf01e384a850fb0f7cd76e444628f2b96d28d0f5e8dae042f8081a2bf9340f57c558be50a6f22ed5fa6b0301a15898fb35 SHA512 04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb -DIST ghash-0.5.0.crate 9244 BLAKE2B 11bb11310128193ec6861f3a54fac78addf50a9889bf9b66c29dc07e8e183de306c3271b8542d1c70051a615e5ad2e6cdd8a53b9873910f0e3924f8cc3caed68 SHA512 82a380882e051ba574a8159133a4c9e9f5e229780075f4dcdfa38acf47a5632831a08f9cf35b78d8f73d6d7381b8be9454b2f069171849795170844fe67458dd DIST ghash-0.5.1.crate 9482 BLAKE2B 77510c9a42ebc486e35cda6893e7f9f464628d6e4ef2f2f1adfe5d6371dc2f7e2d0578665d02dc5647651a96f3f06ed9cd3825caf462d70a740c9e937ac8cb50 SHA512 00041605bb458305f0fc54d2c8dde2cae672451646fc41a94dacf83950ee44f75464a926439e7e6d1ca3ded05a9b697138f62fba6f4e86ea3df034ad7240af06 DIST glob-0.3.1.crate 18880 BLAKE2B dc89b3a664e810264dd7a01ad892e865ce35b504bfe5dba12d7ea8084da7de84feaa94c2208f1a1eefed90297e552636ad61ccebf6fc8cb4d01f27d605ad0a09 SHA512 29368160138bcb7ea5660f9f30c5711cfca8bc8ba836bbade3fbe8c424e7b4118daf27cffa677962e37e36f025fd2bb5a9c2aea865b0ff155cace455dfbb658b DIST group-0.13.0.crate 16526 BLAKE2B 099ced5b8d16e6fefc331f2d89aee931ec5900a168dbe31bfbe29bd00304e8525fa5763dbcd60cb19ac6c62c8d77877f2d83e700c7ab18255b08c9b42be60d24 SHA512 359db06bee4cb51ffe799d9c408791e310e72fde3bb3fd447cf97482ebb909af07b43e9b728e3639d5497fc905b650bf00403b3a6b21515e6628c2466e0851e3 -DIST hashbrown-0.14.3.crate 141425 BLAKE2B 23c63a99c6c6b7a6b9b9e8bbbc7f1e342e1eb9d7582fc9eb408d3eec50c99f34502d450170bcfef4da7f2b1e743e1d1619875ec879e4753dffcb84f3c10dc3b2 SHA512 4d344e5c89ce58e04668b80ef10e4e110a3a5daf4d610c52d980577795d0e2050c7d0b151d8ba97128117665e27b92ab0300f85b88bd6e1de943c62d49249356 DIST hashbrown-0.14.5.crate 141498 BLAKE2B 7d7f31b6377c901de12f78f0004a347e3e3b948b1336a54b6abd8dd2210db0ac415efcdded421a00723f16563a7b833b5d1db3cad5c12cac916e273bf3e588b3 SHA512 215ea860bd3de80e2dd2d4647c9dd31c0ac895ea7c08b87256dc11d36407e412ffefaebc6cdbec024057dd4f24b3762b4fe427be307e15d1e68ccfde89a99742 -DIST hermit-abi-0.3.4.crate 14445 BLAKE2B 4dd00ad81a5ba9f94e6658c2964ae7983990c9e7df228cb92039964bc5fec537802ef221812adac53b2adac345df84179c03fc982b3c90bd097175fa5f8c4a49 SHA512 61c2d4aa1f5edc1a51e1e6c07cd360b88db1ef7302b583ea9b97ce62d1020b8864e7bbe4b5d7de82760cc319c15c7cf75509fcd536ad5913f50046de662eeea4 DIST hkdf-0.12.4.crate 171163 BLAKE2B ffa03876879110dcdd3081cdeadc9490534c44763b3b49f1d6a5f4407a7346e6fa1ea18303f429b23adcd23e8898ba8fbf3797f5ef9f7ab7b11499d130311d68 SHA512 a43fe20b7d14fa26b118c6eba2b84219645f65f2ff33fcca679b139ae3e96f72abc1e7a47eb8887aac5afe4e34211434a4eb5a2fdbc014666d82c4af340a4b21 DIST hmac-0.12.1.crate 42657 BLAKE2B 5d432a666dbcf9077a98e1f8a4aaa3afc88f3d88553cf7a2356d117c66f38efafe686c148598ad67ae89d64ee3edf56387a6f89b75dd9ab5eee63e13953dcead SHA512 77d4bf51f4633a8c36712ce3178945141df31cd645eafcf4bd130b8ecd7cb498bf1ee6f2d9c8dfbbc9f97ac638919fcc81bd3ee600a1b27c3be3fa87313aa0b8 -DIST iana-time-zone-0.1.59.crate 27033 BLAKE2B 5d7c9fa38c85a99ae9da34c881e1b6b626c6a1356d7de412868a26fbb469bdc8408a0baac4fc940354d5223b3004924819a1d1663b129d9addb22689a55f900c SHA512 3c9da44a31423b451cda42b1fd340b29f18c05fc88f4e3c5b0ad5d1e6cf426691cc87b7ffcb9f47c12c4e8d9a3b504e44edc7f6975b867cf8612e93e6eac1f91 DIST iana-time-zone-0.1.60.crate 27074 BLAKE2B 6f534056e220e2f721fc7c7f3ed24152eea7f07d1f4cb3609ca734ade32a2d6b18fd0164ed831170cdff192cbe48653b2c4eb0903fb6f157292b3b5bf47299bb SHA512 5619b994d3277f56e65322a7903e4c5e03928a87bdb72831cbef88788aaf5573b8460abc0a4d5488c5df7052bb978531d973dd66002b0ec4a3af468928c9b722 DIST iana-time-zone-haiku-0.1.2.crate 7185 BLAKE2B 37fa14b589ff092377b9271c414d4e584c5a531f13f70ac48df26df3cc03353db635b4630ba192fc65b800cce11823e91b91f03dfad85e4bed55aa18398156cb SHA512 448224ecafa935472ff6f0aab7cb71f9dabdbe71569c4b94fcc65baea925ef48841577687c9a31106a1826c2105e8dd73c748e9d27fd002648e5b0ce838af6b2 DIST icu_collections-1.5.0.crate 82762 BLAKE2B ab89336790ceafe62dd72f0aaef16a6eb47fa5e41424ed990e6c059ad431cdb3dcea943436aed0bf9c6eabd7aba12d255a2233fbbcf9cf5f666ef1dfd5b79a16 SHA512 127f1c91101ba69405b10a2590579606df766166fcf1fe6aa9a74c4900296425cba5c47a391a53a01b02026af5581f068fce4a7a400179809f7ed9922b94c0db @@ -126,82 +94,52 @@ DIST icu_properties_data-1.5.0.crate 227993 BLAKE2B 3b3141507077dfdeb4f89316e63e DIST icu_provider-1.5.0.crate 52722 BLAKE2B b1e53ac677e2db5870df0a91de405ebbc635c3f7931960f3bd744b57350c7536116f3861d4177faed2145b79c1c957d79815fadc2dc85faa656a1f0bb338a16d SHA512 6c11d89c7d2b788a44757f02b0e298b558ebe174fe917664401d91109cdc7bd1aba5526b3cdcee1f066018de1b775bc9dfc294bdfb40476c53d552bd6f29d6a1 DIST icu_provider_macros-1.5.0.crate 6436 BLAKE2B 7405924dca41db72ce422437434a4affece69f888e5c18d2a92f761a8d83b180f40c8de9a34ec15d0e107b63b2fe0502cebd0a0ae6f98d9d6ee37d197e754703 SHA512 a0dd58d731556a010428fe4aebbc9dbcd626b46d380cf28ba5236ec8824045a20f6f2ec986e0c1e791bc8bc2b692a10306f448279f079b4c37237e4a3c3cef63 DIST idea-0.5.1.crate 23243 BLAKE2B 3db4dc0fe83e1cb408e7e2b69996e6d58af18d43efc2cf4b04227f5465ca2446e805b12bc760f10f0acca284f6d79045a9173e1593977f04690de680acb9fe4d SHA512 f5d7254816210734f4c6f4e74801b38ecb44765cc97692843444975e7e62d6975e021f7010c11e991bfe46e254478fc0ea08634759ea9ad5c37ec2c7ee8141cd -DIST idna-0.4.0.crate 271429 BLAKE2B 8b81bc4535d2e8a1100ddeaf6f43c043fd601ee3b37eb109a9dff01630a81603223407bd5c2f1a1b108d741c811781b205c10148a0122b8125c237a5d5ba8a58 SHA512 b4133c5f73bd9c4ccc05245a9edcc5c980714129ce4f6eb7851eea7e509617ff972fadefe6ac78db6b4106667d9d6070de52c4d42414c95921e3d9fe1b7a76cb DIST idna-1.0.2.crate 142869 BLAKE2B d37c0c6937671750c1f3a682e829e870c01e025c453cb9d5e32e532aaeb1cbe5c70bcee26395b25480563466b209e598d73fc4484a514bd2e3876df6daa31319 SHA512 41a27ff65e606d4ad5cfb149962bf9b0d3aa60a0a582b269b9311f05135890e1dbe9f613dc5b0860549f458399dcd66061f4536eeafc2d9aa8925a70a13b437a -DIST indexmap-2.1.0.crate 68224 BLAKE2B 9d833570cbb63ecae138ca234b998bd0e5b11b1a7e3d5ef4a21212bb32d0998395f1fc609f66860bdbab198081687630f583f5a2e495fac1afa40ff48bee8a0f SHA512 9d303eef918b9264b9fe326cc1d71f4095f7ed5639ed8696efa3e9be65dff2c50ada4495409e109e7718997db51ae1fd865cf8e88978107d7823faba14380600 DIST indexmap-2.2.6.crate 82420 BLAKE2B fac5cf6339dc3c0a40b100035a5c874cc7b2efeafeb31c51488d25156e392dc9db86a497e76eead351d2126f69d060422faa9c55d73407a0de9f5be18d234123 SHA512 53211c4a9003d751feb6dcdf1a76495764cbf32d24bbfe2be7023946622ef4f2b07a6de57109e5d24ee01892f4b2be0e0692e10cd31fd39c4ffdff4d37abe9ea DIST inout-0.1.3.crate 10743 BLAKE2B ac2fa5cadd98088ea3f6eb94ca46b3a9ceb6547ba49f0de311d86474d71024d1a087ce9b8d44ec808008db69146e9c81446bcfeebeb2fd74d2e8d0ad2c4975ed SHA512 1db5bc2bd87aae145b3b0be6669a9a722df2aac8f970fda210aaf945c372e641b941cee822917926dfa1ab8381c6e99cc7df4b18d2f4e2fbef17fdec36ed2beb -DIST is-terminal-0.4.10.crate 7683 BLAKE2B 9b7cdea9ad36be80fe334a05d89c36154d08a3eee872d77cb63a443868bc07ee13995f00baf154eb710b51053f8aa568d7768eb91981b5a834bc2169787df92c SHA512 d2ef6e60306ed29e1161c3203913393b1b4ad497c285be40961f8b3dd64ef23c2ff97a44c123b6193aa1a308bdbdf4b450f8b33dc4a5e7d54ccb6fafce9194d9 -DIST itertools-0.10.5.crate 115354 BLAKE2B f24734bdfedf1dba48554e39b43669efcd4a43656eeb2c511096060daeaf049e1ad3eab232e757057750ce94aabad9fc8a0cf29a997edc6c4b167301c3443391 SHA512 d03c3cfba9841776913bbb6daad0c8945830c155f32ae4b48872e0f937c75a443f0ac9a0355f43b359ff75232f38b15f4f6d446b4be30b00b4209cf66ef770c3 DIST itertools-0.11.0.crate 125074 BLAKE2B 8e686f176764e92e4da3697eb781e1bc30d6c57ac61d97343b4fc3a48e4febf669d5771fa8620005c620cce52c236760ee2e1bc344cf602e878bc168a2e69cab SHA512 8ece00ba0a7cf481ad4586da24385a6f0b1719b9c3f0c25b9b5b373dd1a0ca7b9687a77cd179853392890b7bf4d31e0356a4e5fd540465b4ac62bd74ef717fd8 -DIST js-sys-0.3.67.crate 80764 BLAKE2B aee8b96c8c5811020b3ee4277524902e27d96a027add7b21a8ff94eaac7db15e8de08a9e203ff462b05ce10d0a44aff78a355c07514794e41f49fa936a3c8fb2 SHA512 590d947a869c3435166e34c25b3011351f6804b43887ee76bc2be69b7407b5181bbbc3a5bf6c50867c65d73fcd8e65ac7b0d395710ccd52000beb87f8826be96 DIST js-sys-0.3.69.crate 81083 BLAKE2B 529c94cd2289883b3b43a848d47d8ae025ad0909548a38ba93ebc684ed3edafab16842b922da6c8b6be5ba39c36a1c05057dd3dd93fc8936d5dac372937ab8f6 SHA512 506722e6dc13484828a4147d974822ff9d103d9e7db58a48181b0957770d9fc43b97605ced105c5b680d8b2cda5fa1705f605707611cb48ed8a45a96d5f196b9 -DIST lalrpop-0.20.0.crate 233201 BLAKE2B fcd533ec1faaf470c97a479e504da81d308da002209cbf48e0a62583d9eeeb481aad0f9afd9f4aeb412a1115aec17bf63d782a6d8b32315e4efd0a167bcf746b SHA512 78607f89874e8b17649af353760477ccb31e8f9d88f799119de686a198065163378a32d34c372e456bab184dad2a63ec62d651dd88d66914b5d8f42f3c28547a DIST lalrpop-0.20.2.crate 240370 BLAKE2B 024026e9d206f24f3f0675f87a5d8204237c00c96331c3cce43f563639c2750f363b173bcf928bb69b3707917ef0769c9e174316b1c85f76e8fbedc6d0262bb8 SHA512 1f22f3aab724e720c7f78b268a9f6ee468fbdc7fbc0ecf83e0a35130ca56371aa2e38752e02cff5ddf0f003d5a8bce43c735c6d5ce09a3bfcda924f2c5ab0674 -DIST lalrpop-util-0.20.0.crate 10403 BLAKE2B 5600fecc9a5c843ddb355af13e3696089a00cc835779df201ecba4e6740ce955e2618dbd1e599045343a8af196b8c164b61db4e58368f0cc4ab4c8070873d4cd SHA512 478ada7c29bb983f9b37bfeb0ea3bd51b3e38ee2458daf546673f66f857ea70f2498f2efe2fc87acab2ea7a1c41529fbdd96f28297b7dfaa83405bc00a5cc82d DIST lalrpop-util-0.20.2.crate 15064 BLAKE2B 7304f30748afad37ac9be5f9cb890b70b0362bf889a86f7385e7e83a067e5919e42d85f892a018d255d0eab56f7c3b8fd9564fc5d24b657916dd915bc45f0a46 SHA512 91034c6d82a0a006bf35208f84503660d55170a36e38d5c64a6c0ceaa0302c43e268df21feee6b60b70723462f6e4f09022ce83547560ab7c51b5de0954cfb28 -DIST lazy_static-1.4.0.crate 10443 BLAKE2B 25b2e61bbac48f0dcbc79c81d7bf01f2403d8269ecb6be3ea6147bd00f7a588df15a91f44dfc18ada19b21faa71de4637c7d493a8628cbecd0e547d74e616a23 SHA512 e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 DIST lazy_static-1.5.0.crate 14025 BLAKE2B df29e0e3d1c061815bdd608b41074436024dc407d454f32517705ab04b2fe06075e310086c5e4961df0b4885e91021589d0bca2c1cbe6f0aeffa3ff1b3fd4637 SHA512 6d2f9887cd7f34f019644e42f02f2bf0111accd73aeaa60973ba0b039b6774670debece1ea9a6978e923208ef5d3ab7326473ee3560c078817f0f7ab8ed0f65f DIST lazycell-1.3.0.crate 12502 BLAKE2B dca2d3f46823a52dcf87b7d6103fc4f1f83bc5247ce361946ac2d9df239fb43ce4b418104503698dff0242480cd014996e77da4ae0a88f3cedbce4eb9d3c9ef8 SHA512 f9d627afc28b61e9687a3f72260eb013401fd64057647641ff2e763770d7380ab1d2d8cbb4a3c8818d53d504c618a3b46aaf701f72f4d7b25d226042824c2f8d -DIST libc-0.2.152.crate 740278 BLAKE2B 8eecde477063207d77b6894d6f9194c8dd10e55b69585e3d66296eaa0b9d3f6e2d033e667207182bf4c3cf31f6d38820c9187b2006f4b5ebee898adafb4b2751 SHA512 1722f6f52077efab90026aae3d10306f8c38ebba95366593c3c1adf707fae121ab450064ad9e8be5a667caf6af0b90fad4d1ca1009db0f2220093c44e33c4b5c DIST libc-0.2.155.crate 743539 BLAKE2B 42cdcf8d4a187383548b1f09d404474f168916d626d614463fe10a1fd886e972e1caf6297e75445214af3f31fe631d0927e54ec1cdc63e20082b3587e38dce16 SHA512 05354bba532b8338bda1f88f12c7f3893429734a06e33925fca2b99d49548ae5216e2cd84e782d2368a2dfef20b0e035e2dcad8dd13ede7119462a8c639b2807 -DIST libloading-0.8.1.crate 27893 BLAKE2B afabb6e07ecd390918344388b5fa63e5aa9223bf3ce513d1ed94cf02b1defe9909d94f0fa05e1516a39dfe4f41636834d3de0386b3c58212103263f2b1423f76 SHA512 f17ca367ef8e62fe80f43e5f3e2d1585be7b78b0fe4a733d80acdde38c20f9f72e710cff082442de6afa323aaafa17eda4491c4430b2d12f398d420e057cadab DIST libloading-0.8.4.crate 28636 BLAKE2B 5961c69ce15cf2bfb4ad743ead808374f5a7a9d98ad5585d895fa4654b1c31309d968eb3f5d63e7dd5fa95b77ea59c80e666ab0e467849c858a807cc3a68ffb2 SHA512 670d82fde2ddbfcc28efaf7736d799690e4fe4b7872d95854b9c4320d64f45d4b33c0e1917228302a7625f2e5e55e5ad56e113ee8e67d59fb384b7054a0cc849 DIST libm-0.2.8.crate 113450 BLAKE2B fc4a55ecc0d4a558b9014b58861341887679c696af6b6539c7cdb70c033c63219b24f6f30cb8d9b335d15e3af42be6f3a6bd719e189667ca0c43ac818730b674 SHA512 753df71bb2c838abbac360db2e4400c2d931185ecff993da51a979870f2c3f7ac017380fadee4622102fb4b37ebcc1960b0cbd295afc9cd1cb3307524e1f39c5 -DIST libredox-0.0.1.crate 4212 BLAKE2B fecbb90e2842a69f3967bb2a09b0181dce1720b60c5d762a334a279b52c00a9b4b52de72c6484603981c0c3e1cd8e173ef5e15fa290ce8b8888739204956be92 SHA512 31a9234201f5128f1519e108f7424d1740a67699828265cc725304a70f6a51e139f1d0c0e626b487857a7b421f25ad93e81b95b65cf0d3e0ad912388deecfb41 DIST libredox-0.1.3.crate 6068 BLAKE2B cf09f261d3a945d290ecaaa724903e0042d66eca46dde8a40c261ccb1e82c0d6b9926898eadafc6313fdb9f19cde56377b8a9179935482559c4b9707e327511a SHA512 c62142fdca92388664eef83fc89b8607e2df318cbadff6edf9e3d927837853d5cfeb54445299a82054a0ca81853b0a33536966ab26f1f2e0fa43b39aaaf67c49 -DIST linux-raw-sys-0.4.13.crate 1493855 BLAKE2B 1298a038276e2424eda9873c642fb43d864b343b03b7962446122d2dbea94d58d9fb2b93e890769e6fe4092378755413ed6afba81ce56fd61e512146e44148a3 SHA512 3918da6b667a08ef8a51aa0b087129e2dc5ab101669cbba7690fc98ae2659a36861bf9410a3b87d18522a7549d43ac169b995ea192d3073f7249305a809cac62 DIST linux-raw-sys-0.4.14.crate 1826665 BLAKE2B 804af73daf396bb20da14f831f26ce06325181de14f0c277350bd22d21789f2bdd663a964cc0e7c5cbd2e084285d02a401a6bfbb3e8a8f079c120f9488b56f99 SHA512 28149660bd975ede05624af3582d5c78f498239f5d89713c2c32f5372fc16f4ca024dec35f81ea973a2cf986098890395dbda06ac6cf4ee29df3f9a0e11eaea7 DIST litemap-0.7.3.crate 28728 BLAKE2B 00a04ca0e4e774b317218ab990da4c6ca1f342bbf229957db51801f8ec36339b665133bfe3847ca68a40d901d78d87e0041e09f0740898ac38ea3c8504309c31 SHA512 2c3bc6c4cbf6609f3cc2d986e701d23b73f5bac55995887c90aed01bf4392a42c718a69c0050296fa635a46f7cc9ef3dd6c6a2a505d3cccc690899aa345455a8 -DIST lock_api-0.4.11.crate 27487 BLAKE2B 87116cf908f7f1f9c300cedded989df305f855883e3df5a482de2c76814c48739582d3079d76a2bdd14a6999204b7fd31dcd8fd06d1dc7f9418f0e2f70a1450e SHA512 9946adf313a5c67a0dd87a1b679b7d9d16a86149fb95974d3f28aa57a9a1a3932e4a5ee1d332097559329c5e3b2295be2e4b655b115d9f75269f33a758b17fb3 DIST lock_api-0.4.12.crate 27591 BLAKE2B 4504d146a114d8f8e1fe9ae70b993c713cbfe884dd69c61c54dec978733b95a853c3e5af26f237e48ebb4ee9dbebfce0f6c06067f74a3d122e92f5ace40e22d7 SHA512 525d971f495449bbd02eb70fcd84d4aab05ca582142144a5f314f9aa67ad4c5b4c98dc919a416d0ed2e555063eab037a441d671d56b633f2cb75dfab5d99bcf7 -DIST log-0.4.20.crate 38307 BLAKE2B cb9c9a401b49bd68c18d5e42f2ed94446f1aeb184caa23cefacad4ce54a2a357143af54a5595c45d6f3c3d20b054c451d9e6ccdc09c19cca99ffffdaf8bbfc72 SHA512 8661b0c71d3b7fc0d679aa3d7f06910e6d3da1c53862aa06526000e1bcaa0b0b068415a1a9ab317c318f00d15346dba8a4f5d2a60d8850790bed9cfaaf757b3e DIST log-0.4.22.crate 44027 BLAKE2B 831dc5092db05123bf2e909eafa708339983edece9bc8cb802f0ab418d47ddc5045a72c1b58bc7c46ffa68080eebd0fd55d6e4f5b3d5ad3b0bc6b2ea0dcaace1 SHA512 bd7baa9c8a5523fd0864a53bcde955d484cacd782412b5b02c890b89dbf62137624da3a27337a310dd8f62bcc6606925a42bbd4ca161a3b7936ea4ff96bc0d71 DIST md-5-0.10.6.crate 16161 BLAKE2B bdd43889aed114cfa97ed0c70bc97b89fda28b14033a0a26bc7309ed744ee907d59151ab92e9cb95f0ff0ca1cfe2af360c48f1b99fc8a246a25c803a4b444a0f SHA512 024a9e14aaf860e748f64dddbb8aec01bb9f40d702d8de31497fde1d66a663e97ca1b06b600d8a818a0c707d1ef02eb0f210befaeacada458acba69ccbf476ca -DIST memchr-2.7.1.crate 96307 BLAKE2B f1a008fbdbfe84852a8ae1d9d9574306b1bf120dd5087903adbcca6af342c9abbb296496eb9bf6cb58915c4444b3edd6ca4e27131ac7d8aed8849815df87a944 SHA512 5120496faa31fc427c8b4178461a262b3a34d70eddb7ad17a19d6db8b9969c9e113d3625b5e6dc677087fc80907377b00ba0421aba9a92cf73ca2849d932f473 DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2 -DIST memsec-0.6.3.crate 5512 BLAKE2B ed2a36cb139098be66fda58f052c2cf22bc025e34b9ac2b11a1a8f848d94df6165f205543ea30a5e7b347b85fe41670973155f68c970dde145b41fda551c5644 SHA512 6d4ed30d9b975b00a3eb4b92bb1c7b83269c2fcec7629975334e53b7683ee28e4432ba4390d1590d88d1c4a0e689dcab38f338a6bdcefd3bfaba75067b819d8f DIST memsec-0.7.0.crate 6532 BLAKE2B 48fd0c732a5c83c5e0ca23816b61bdb7283c665ad73d20089238ba0b6863992554a7f8a3b41ae8b4cb0f31204b03b32b3cc7fd5a0af657a24bcee01b3443ce58 SHA512 73501130770d2ac0e3904e7f293cf0ca6bd0947a6e05e53a40498c950b8519fe591d3888badd5cf6134e1f567c18fa2ed6ce6fa3ac3c8c0d441645c3e95cddc0 DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c -DIST nettle-7.3.0.crate 580277 BLAKE2B f70a60e47a633a399843a7d2cae466c3695e09f442968009c93a26aa40a806966c693765cd3f9e361e3e8550efd54e4c72d7ac3263eb159da850f55b7a8c52f0 SHA512 658b7c72eaa86c574ccec8c10ea4aa37480c1d7b92711a96274c7ea75d89c96d669d2e05145598c835a1f34ffb1b2be005cef278f7bf103b8d2c8b8d96213cb6 DIST nettle-7.4.0.crate 583944 BLAKE2B 79392e3b2df0551ed22865a42f0ededeab2421764e6daf0b6388c08080d0674bbb88f733ae5d29ada841e567c734a641e7fa6ab2bd8e8c627f63125c9c153598 SHA512 f132a9c7ea566930fcc813a9c799d4ec6849522dc70e8b478655988a9ce1f75ca731b0c0b7d2a702f96273d51770b47725014e6d1e407ff58343a0b4b7560871 DIST nettle-sys-2.3.0.crate 28576 BLAKE2B 23518adea067a8a2cd4235ccaa851ed62336847db9bc8a6adfd77cfde8c57f4a8de104cfac0e17068027702e1e4d79efbe77c3733cdb032650fff1eb1ff15457 SHA512 f453608d860edf86ba62ed959aa1d04301c06d13bef5179b2a69f7faebe1e1ea41fce163aa4a48617d21fc493cce16c28cc11a051ccfd13d0be93c66405aa5d3 -DIST new_debug_unreachable-1.0.4.crate 2561 BLAKE2B 5c9831b04e2a44b2dd27816df0a331a8108991a84ebdfefe4e42f325ec3519ee50e89a99d490020a65a3d75acc371316c2253d2c6382453a0b15f4c3d5b96520 SHA512 6f964bb322aa8f2ff92078381dd720527600c6449e237b703278cbcf47b39a2581fddfc2f34ebb7cf31229e33d58de48bb5050e083fec6dad9aefddc1d771c85 DIST new_debug_unreachable-1.0.6.crate 2582 BLAKE2B 2ac3dd86f1a532832a40ccfda95654e43709a62faebb8182c87309827afdd23e6d3f250f2345f044cb789015c30b7907be63253b487d368e68c4fdbc7de20492 SHA512 73a61acbc9b20b3595925360827ba8798f3338471b291fa37c72a1c9505b3ec9f688808fcaac9a2eb494e5f3ea5331d30545d5f21f89559111bec6126ac90b48 DIST nom-7.1.3.crate 117570 BLAKE2B 5643b67990b7305e101b16b8cd27c447e162a7adc6d0dfac00920b0cb50fea98c9d4edca63c34f6845cba05f8d0acb407cf3045cf64a4cb28e53c8b6bc9090cf SHA512 1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad DIST num-bigint-dig-0.8.4.crate 123825 BLAKE2B 9710266116ea15d0e56792b7c8e217931765dcf2377bc05f23bd386625087eb6a7d7aca7b8f0beeb78ace9f280895565a6de3b14ffda7721e35c741ff64b71c0 SHA512 88ea682c5aabc61c0cab9234e31a2dccdb5458d3bc018e1f9ccbbf0a9f09ed0053341e93bc53f65b5bee55bafe71d50bbcd48fd085ac723ef4662e15664925b8 -DIST num-integer-0.1.45.crate 22529 BLAKE2B 4da3e801f71ba8f92c692497e200bfc8d32183c94eaad91260683b09f4697c03175fec7cff5a9ff3782d5db5d514d74f22f7a61a102c0f0d2e67a7a4b4f29222 SHA512 731bdc09c3af7f9d8b171041f2957aa60facef93b06886000d8ba60d410aabbbee358d700bf31b2588b2e077464f290f24a0b712df7bb7f12972675b6c9bd735 DIST num-integer-0.1.46.crate 22331 BLAKE2B d88c9f84e5d803a3aa8f44dfc1bd6d9b5e336e7cbf47231cb3a7de30dfe263c41c62c586d31f0029459c8c240475cd329b3fce79f355be7643bdccf8d56dcbba SHA512 e27986d91f6c6dc3d5a0900defe28ab5f47905cde3f84d0914b7acee076dca8fec6fdb7b631ac94d3a31eb01ecbc5854e51afc3187cd1abfa21e1bfafdc700ae -DIST num-iter-0.1.43.crate 10655 BLAKE2B 41ee6d80f38f0767e134835ac84dacee8b50395b29c3e620b74cf4a843cfedfa71dc690e787b291a2b08750cd8386f1dad768e1b506ce088df33cf9e51b90a8e SHA512 97ac20f16d4518c8cbe944e5c80089fa6bb75d4632fb9f3c9d9891aaddb0e0f2209f6e854317f3d3b41bfb330c9d3ed830f3797f0120d4b1863b1d6fa3b9c07b DIST num-iter-0.1.45.crate 10320 BLAKE2B 9f2a60a819e31a6e7e048ae86f7fa029015a73888348676e54ec6fdfe76abe94b632a49a82b53b86488ea5af1031f677b0eed8ba7c5e843ce804c6d6af123622 SHA512 6195c7bd5f904e9f0aeee3ce17b42c0383d053f9d37954a9ce3b4ff0a048afa121c9a37aa9c74b9ace7353d7fd9f57a7d04c7a18e1456fc2c4c298d8ecfd0172 -DIST num-traits-0.2.17.crate 50190 BLAKE2B a549ef00c749dc7f276c4817477d1f9dab70cba01b6a3afa5743f16f16353bc50d992d7446a54859cf750a410d66c8cd3440708a6b91fd89d3b8889f8fff1668 SHA512 4d47d3e2f5a31019e038e609897cb0cef1ba061b35cee7e2a02e65179dcdd4960bd5b9bc759b5c013d699b3fbd9b014940a15e36658f7d4fd12cb0c7841c5b4e DIST num-traits-0.2.19.crate 51631 BLAKE2B 78637360cbf32d172510a62bd9442708af9730c0296a2bb4ebd200c08facd49bc31bf8ddd58967e0df7273a938832b620265d9f8f4d26ad16049bf6dac1cb4e5 SHA512 180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956 DIST once_cell-1.19.0.crate 33046 BLAKE2B c14b374eaf4ac0f60acc2e02f7bba270a0e8e0a6978d749cd3cb0ab3eb26907e4fbea70dd5132982f90290381ed18ff8a87fd530f1415fabffac864f157ea380 SHA512 4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c -DIST opaque-debug-0.3.0.crate 5767 BLAKE2B fb5d32c876a271b41582563f5d6978d75bc1cba2cc34167f491bc198e6eded45b9dea65effa3aa972ede20978808b37ad1aadb6837f926fa3378ffd382076d41 SHA512 9909b06668a4f97b4d0e916de3e1d0a922a5a0b911a7ce190de786f62ceaccd382cbd0dbe01ab0f15e5472c10848482da2307a6d897928b6b7d5365bc0321cae DIST opaque-debug-0.3.1.crate 7066 BLAKE2B dc1dcadbb5654a5f69c59b84faeb3095f008a6eb4f63e3cff95bd4e97f803201e2f16f59a65f8ea21b662e77e3fed0d0870eb1db7f5a4f95cc02422907732951 SHA512 f325214d604e74197ddd9209a596851c5bf0c0f3299b79b6267c35e0ff6351205b628fb5086279684fbb29fd07746c91ede4f45019657e761d8400fef2b3d8bf -DIST openssl-0.10.63.crate 270890 BLAKE2B 0571a214347f823c9079c1f6d204c62469235ced63cbfdb8494427aed8069f45bbb26b81d1edbddb3602c0bffd54d1ca96204aef8cb85aec041edf45d89889db SHA512 47baa5f2e34b622dff0cd475dbbf6772adf48abbcec5be1cbcafe2beb9060ae46a3d873896ee4b5d864da0b132f0efd956596c49f2afc650a44cff6af001aa56 DIST openssl-0.10.64.crate 272306 BLAKE2B a8b618aa403cdb06a7f135cd966775f21c99739365c55aabde2680a6154d03c7d554bfae6c62a069841c70ed82ece6c3f0cd589da8c26022b7022c3c4d79a6d8 SHA512 a1fa9f71cfebbb37ed9d4a902360f2cc95a78f55b5da5d51eef69db38cef016fc03236485158d689ccf054e04937b8cddf88e3f0f31672997fb30c6cac73cbf6 DIST openssl-macros-0.1.1.crate 5601 BLAKE2B 69dc1c1f3b7bc4f934cae0dce64c3efa501162e5279efd6af3b74f7a7716c04b6996b306b310f1c045cfa2eff2895314a47ecbb020a817e461c6d77d0bc11e92 SHA512 57e75c84f78fb83f884eeaedb0dd135ecb40192dad2facd908e6a575c9b65b38a2c93bca4630e09ea5a82c77d8bc8364cb2f5778cbfe9d8f484cafe3346b883c DIST openssl-sys-0.9.102.crate 68622 BLAKE2B 0d3d3c9ef8e2542c7f35db1d8feaf512cc7313481bfcc99354d601e8d6332adfc2e7ee8b35599a9241de35c163efd840186e904375bdc9c65ee743abbc154cba SHA512 7ecfaa0b49cea5c60f6f063fe5217252a65b27c5e6d1185e0aa1bb4b59c4cf9bf326840e8795a870a537c18ee5a987feedaaf2dd767cd6f1380f25468a1622bd -DIST openssl-sys-0.9.99.crate 68158 BLAKE2B 59995535bc24f0ca67ea204193aee4114f88538bbd74ade7c22bc2ea1b0d7e41a79118b6d22917bd1e305a43c16f8aea095c635d27a56fc0481a2baa3092dfa3 SHA512 b91197583135c22d34814e6382dc4ad4be9c3905c979addee8688dbc52ce627815e719b9d0b365195335d4d665eaa79a406f89e4c19cef73988938d51fe2f4ee DIST p256-0.13.2.crate 63434 BLAKE2B 8c0d6997b60299382f1da2b7caa1b0353b787352bc3de9ec7168bf224ff7ca15b2ffa28f99377eb11cb6cec3481e5d28c68042ac88c1cea27e84aa8fff5e0658 SHA512 4105c597346e2bc74ad7b7173d13b3b46cf4a1df87ea1699586cb7d09beb1b9f8d152b2bd0bc6849c69771fe4d320dc15a9e275470923b495971e9aae54b0ca9 DIST p384-0.13.0.crate 236495 BLAKE2B 240fa9cf7cc066cba64e9c89d78ae65d0f0fff3e875b0175646114784a2eb0083cbdac9e1a17e6de6b3e9a6074b8f318e8d6abfe63b7de432c2d19dfc0fc0091 SHA512 e81451d336b2fd0c1dc3483f1e586b7d4059b3ee7cfc935edca6be1be02d23b1e380859a44d0a6cc6538fbdfbb22cc22b8d3aba11cf90c6fdfd0e8edecdfba17 DIST p521-0.13.3.crate 138499 BLAKE2B 758cd3d1917e9e3055d1ce26194443b4c5aa72812194cf63abef0750342501d58a4c27b92272504e2295a44fa291e614b462dc112742e8576126e280a6cccb0b SHA512 fada6c066deb17c1d046ab4e321b32b35ab851e4f39ef9d095b7a05163a4a43d1e4d35fed4f9594b854a6a1dc32d257685eeff33956698f20f805980ee763a8b -DIST parking_lot-0.12.1.crate 40967 BLAKE2B 940a112a066e3cbd15e2f6df89bfff37e4ece2194118618a96fa14871813c91798f93181ab0f768d3e1f3d60805508f216724013afb7e3da95678d0d951a42d4 SHA512 07327d3b737a913508dffb66023766348ce7f9d555c224a099cabb05baefd16a28e15fec638e3a148a5169dbd980c4541b0f8820ae9d06dfe0704482838fbd5c DIST parking_lot-0.12.3.crate 41860 BLAKE2B d1899a1132035aaea3a784290cf4951ea3b36b2018d407e27d333b2a2ce3820e040d635009c44cb6e58ad07cec6565c0347af6f6fb02954eac2d4c348bb036f0 SHA512 368c17203fb5b9e4ecfd4857e3b1ab96b86da3770b8f21be392818c845952f72dde1072a10265760a62aa8a1dd65332bfd585667444e5fbb9dbe3280b5862703 DIST parking_lot_core-0.9.10.crate 32406 BLAKE2B 25339d028579eb45a957ae5fdbac00288b1472d784c0aa7fa2953fcf9279c750d243ce69744993ee8cbe6899633e71e0a54ffc11e39247755685107f2f8dea54 SHA512 4f30fb60ded274d3154ffb00f6f50ac284b6fb97daebc1a2ac897ce97fa8e2ec6ff30cbdadf3b7419617a410fa7525f30ef5e580334e07d4420f4c0200a57389 -DIST parking_lot_core-0.9.9.crate 32445 BLAKE2B 811d8de671bf6e0911cf0df7dcaee4fb03a3b223173a3bb8cee65a28724eeb7bac87f62aa7b1df5ea3fc93af3cee3ef30b83d06c6773d6b856a7e6fa5fa197ea SHA512 7f0df70f9f1ca8d3da0b9dcc96e49daf05d95c3a995289266b5333f68818d686d32b0c733dfe3a0f62da78fa45caa843a963923b2d0c80899c33413dc749c032 DIST peeking_take_while-0.1.2.crate 6697 BLAKE2B 31571604d00872900abcb677a483da93654de523bbdb0331c326dc9a3e531f246e571bebcb983e79dc46e33ed6dd32b978be509841ec0d9f1e7209c06289c22a SHA512 7bf8721987c3e2e1986683dd897746592a909382f02b840b777effec7d8b0a864c1a83b03c73d555e359f22c423168a54b75448a7e7b996b739527ce8c88b721 DIST pem-rfc7468-0.7.0.crate 24159 BLAKE2B 478d355dd970b9705ebcf44d74d61ae0694db6de16b2018548fda88546f53e35b965ff72d939def399a49fe97d3c8317a10385ace94b3d552797ec64ace1eb8f SHA512 f47d3b6c7c8bf4547916acc2a3d6671f6c1308e74641419c8f1df810d8bd940aba8f94d361e4cbef3eae3b7f11587cd3996a11be3be41d19111abfcde7a9272a -DIST petgraph-0.6.4.crate 185895 BLAKE2B 9ddfb2796c461d2820db8227753113b02024e5dcb694a0bb2826bc1f375f028d8b98a3bd67555485db7fab88eb86043f5b768585dbe0c60703cc655976030a2c SHA512 b5a21572526387af3151dd4f864bd95c94f65eaf0612d96f99926faf646214df205bcc652b98d3b281f2e270779a4c1fdd6a32614ed60b3612e5d594b2bf3f20 DIST petgraph-0.6.5.crate 710970 BLAKE2B 7f590e93fb44f1bfb8920e512402edc1cb087ff9d5dac7bc4be965f64ffacf9c1c503eab4156cd2005f41099f6b34f51e49b21dfa217271fcc0d4ee16ae85366 SHA512 454e9805731374abf1085f1a8a72aaed85e83cd30ab9601bcfe0e46882ba6656242284bdf32b6e75c2f5ebdd1325d5f8873d5f720aabf297822ca97311afb677 DIST phf_shared-0.10.0.crate 4095 BLAKE2B 9155a2c145148f3c36ba6d6d8be86a526480b127f4af79b2b5855cb014a0080bec1ec45be466513bd57faa39c77cfde0d6ca02b6bb77d37a23d697603227da37 SHA512 f088a6836a28afca7a2ef5440d7aa953227785d52aa0b9fcb76c88d085fe7f0e68732f2354c9f8dfc0a90ab1b8ac214f28549780e6f32d857ff7e8963093d9e5 DIST pkcs1-0.7.5.crate 35790 BLAKE2B 0cee88bc3406b60d225593b4b01a4eca11d14a916bd589843300f6130729e7926d2af32b9b7d03e98b6934775e30e5627754e7e32e1785f59c8ede36c28ea40d SHA512 a3584ce492116d6e617a733a0d3d5696404aa7b10ae95070313b4a41dbc21d0940850870b711e375ac8b54fdd179b4083d61c48e902e6efd8a3a11cb630076a3 DIST pkcs8-0.10.2.crate 26360 BLAKE2B a62b5b7386eedba6fcbc4cff2b103b899dbf6179101445283f9076080489129543561af1ad6f09061564f68c28954262e49d0bb3e182f2ce7495e19d6f34bd5e SHA512 87127d51f0e1fe085d46b30394f2a580e857cd64f5c6fe4a3ac3b8871230aa426598dbb007e8bdfd5d729b99a9c0b4d84116f0768886605342d2ed112c51dfa8 -DIST pkg-config-0.3.29.crate 20563 BLAKE2B ed0559b0073890911fb47742743b2586123bf9e9b594aa0d5b2c419c6768cd37e25b546c21077ea6cc02823a679b302aeaaca6c7fcaf9aeec615dd08f53a1f6f SHA512 bac7dafc0e10bef40e427c1fc0271d1a26acb2f5b1cf7cc7a128f4d4f1f3110529e45057b71cea7b0f6ddff26945fe08962285ddeb22b54639e44a2e43af698f DIST pkg-config-0.3.30.crate 20613 BLAKE2B e14dd544612f74b038bc7d279d629034237946c261e3e97621d6ac910a12f4fa4e75932dbd5d3339e62325d0ccf33002b07f04b0523f93d2bd3b1a919841ba66 SHA512 e4bce232e1e1cbb17d1c08c3de4dd12613f5a5238f831c2a765b6ede9b494e647d2416a7d9a0c926104e24066dd1b38df8df98a6c55d62f25060f80eb33d064d -DIST platforms-3.3.0.crate 28955 BLAKE2B 3bcccc9a8c0d46513164f4b451af56a001967a8a0e79643ef9e10e3399e77eaab2759f73a68cefce295a8256b0c88382b42756a1303fb5568922fecf7650882e SHA512 289eb7b4070d8b040445f10966cf6edf050ae740f59797476499b44f9391cce904a83f7dc43dfdac7ffd6174e5873605aa8e1e177700f28b9318703b27382156 -DIST polyval-0.6.1.crate 17634 BLAKE2B 110a104f0468e3a881b5af38edbd9da5bfe34188f1928974737a0e26d9ea5453210a4c32abec294449297e9f3d096045bd0724f93f98c8ab9592af80e348f974 SHA512 aa1b3f045cc5748413aedc42387e4950f1225b87b0d77a1a01323ddf8bf519f02983976101852e1713e9aff42112a281bbc24ff2a52ef99ce89268ee6f93a533 DIST polyval-0.6.2.crate 18425 BLAKE2B 59ae2ec631060ee8e2e1d4bc250abbb4762c97ca7ba5c543c0292f561bb967e059410ad7e79d8dfd7912cb30a6284169ecc2f4c94bdb165037acf8c3eaf1209c SHA512 113646edef3a7f60d59db3cf06c1796bf81305b66835c71bbce0fdc07345f41e23f2bbd7d5cebc50c72eac11c98f351bc793e2f568b5fc0bbf9fb2597eb44f0d DIST ppv-lite86-0.2.17.crate 22242 BLAKE2B 48c4a31a3b555fa37072c4de083580bb769747c7668748541af472778b5b58c3e7ab2b5e178760f542f973774f09910bdd4058ae5fb9d6b10c103eb76cfd0d3d SHA512 539d916e7e5869d832045c1aa88aec519bd000227f9b01d4dd0bfc9ffb640d5f5eb21b05eba718174773c97192a655ad3cb31b53ceb914dd19179a6699b3583a DIST precomputed-hash-0.1.1.crate 1640 BLAKE2B 64a37ef3edd317f771e833bb394f7c19bc9b8c844156c831d2b550692c7e2e36bce44ecf18dd9f2d0f0511346eaf0d2a0ebe792fc288ca0e94a93933f2051846 SHA512 a118a98286a47e2f0cf35d2678d0325c18b9b7d5bdf40ceadc16483b282307fd1498434d5bdfa25477a4f420d97c34d786e42e9fa70431b788b4b8fde9718e05 @@ -209,83 +147,56 @@ DIST predicates-3.1.0.crate 23090 BLAKE2B 6c51fa390f3335501df604afda47ff1d2a6932 DIST predicates-core-1.0.6.crate 8084 BLAKE2B 337cbb155bc2859c5a8b891c21d352e998cd1eaaf606cf46c003c9c499a42f12268b071e7a4cca65d50cdfdfd4267f023076e078a0a3eb401ad836755d65298e SHA512 afeb1de4275c76bb1c5950f42bce2f83a21ab217ec60130336286cb48b15f36bf2a1ca346bd652c10a65a1f9e3310d16b23b8333a3e0f7e20fe874c3f728e702 DIST predicates-tree-1.0.9.crate 7960 BLAKE2B b758c52dcdd0ea237ce25f0a092200604765bc83c5edcaea646c6b1db49431296b61aebddea3b325e62f0ba9bbd5edba7ec92fd031cb597e7e8d642b966b401a SHA512 1fd5d9a84ca8fdd1b3c4759d5e6fb16e3d8fe8b0dfe5afbd16bb509c8558b0750705fff47701c95f7a8df1a222f639116a1b9ba4d89775bf03b06daf34f249a3 DIST primeorder-0.13.6.crate 21296 BLAKE2B 2ba479defa1c26d14f8711f6be5020eee9bb91a39fa7a7c14a93dedc6de920e0ef1c9f6240d308233d0e0d6bce4be9500d0e9cfb01b6c4f9902e0f77a2f97352 SHA512 fdf52b47b36403d5218220b886a3ccec7828731b5a59ea1d48a25fa85de754544fa9c94d51356d2ed904bf2d908bdb4fa87c53e597a3c9f2941d7310f70198ac -DIST proc-macro2-1.0.78.crate 47158 BLAKE2B c56a24fce3faca9e04db7965cab552d2a976c3764df0a84179b5a89d1230ab355c777a82b4c982e3945414f1f0478473a88821dd176c32d6de394d73a26adb9a SHA512 11956fe03a2e77a925cdff2c3c8bc8804dffab4fa1de963a128fa23f4189976fd2e2102bd346b92c33524beae320b71dadaa5213695a3ec638404196e14fa769 DIST proc-macro2-1.0.86.crate 48958 BLAKE2B 4b89e07f23af8328dbb34fe2b3f1b202f1e6a3885a6269740a23359b41bb4099ac2484565d3b2b0936261689ca525785ac620c766997234fd8d0f409e80e5ea3 SHA512 1cdb7e22a35ae231d880c9420784c9acf97bda2db258b3d34aae5061dc1858449defe19a49e12c6a4173906aa72a4115059ac2db0fc760205fd2ab8b5b414434 -DIST quote-1.0.35.crate 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2 DIST quote-1.0.36.crate 28507 BLAKE2B b93495163ed205e33543ed45f084870240d479071d643704b6e348fb9ada6e1d8401893c13348b9964f4b6b17ddb96cb5458eec540f0d761655fcb96a4cd9129 SHA512 f1f002a912692f7ffd4912ca980ec57ff4aca3a7d9e2e42e9e3409e2105c9f59d86c05719f6af309bccaef2f8843b0848a6e3afda3356e045d8e7cc5956ae685 DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 DIST rand_chacha-0.3.1.crate 15251 BLAKE2B 645771b2c3e274f085e0837a20306b1d59f6e9032fba8eb38a6d1b30180d15e2f89ffa2a162bf6358da41e030098242d81e71dab4321980d0a4f6ddfc2974ce3 SHA512 8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075 DIST rand_core-0.6.4.crate 22666 BLAKE2B 8b6b66d50aade877f2779c006f8038db450f808c66d73d79efa66c4178dc03db06f12201bf0e7930181c4b0f4030c49b20cce6eb7839763cf2217cad9710789a SHA512 36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 -DIST redox_syscall-0.4.1.crate 24858 BLAKE2B c3301137a0b84e03b09d28dfa377ab3bea74d574a08cee21d35713b278d8b5b30ca2a1d73a0981baeb4644cbb88c86c8eb15ab3bb2692e38b93e6b35fab4e0da SHA512 073ed9d96090cf46eab9877742277a013c62d8da86d9caf2310b4fa868af306511936553579e01309f27067d344226cc8dc5e3aef01d9b900da2febd33848f8d DIST redox_syscall-0.5.2.crate 23957 BLAKE2B 6261df25a59af5119a21d31fc3b6a8800bb1783cf2fd63a5524d48d0b187f5f2e65ebbdec00d9282adf110ba8f307d4ceb154bf029a0c6a26e8a887fc722b2d7 SHA512 b7e39a08e220153370449cec7b058c2dbc4916ff7be01b34658e1793035323ecc28f40712194cb9bfc9b863e4bb316e58662721eb0e54f68f09438bd880ea032 -DIST redox_users-0.4.4.crate 15438 BLAKE2B 5f44e9ef20f1a6c8b22239838f8f6a6648dbebd5b4386b3a2c417e39add8c4a0dc32e4369b8bb4e0ea17678140f596b9bc981b1d56f06de6a38a503600420481 SHA512 7c208116d1171b1f52f22aedcf8ad00076a3d1f062f4018f4a9f5fb2c38d7ed83258589062d1559f64e43f3e2a9ddf789799f57cf87a49ad8a37463ea09aa269 DIST redox_users-0.4.5.crate 15514 BLAKE2B 9fc9d9c4875ed711efb75fb08f345b5f4f0667717d37710143742e48251a709c53760bcbc31ce13e6432672f9417be429c38c2e77a6b786887841714290a1194 SHA512 7a25cc91c9d1bfe537f20b83255990681d136ced5aaa7aa0cdb1b1fc024ba36aa1fb75c335c768a85ee078019a9ca2460efd911cad8ae6fe8b0385fb171aa4b4 -DIST regex-1.10.3.crate 253101 BLAKE2B 390ebb00bf5430048412883b672d80737e783fd36f40895343cb38ef2e26e2713418c2fb4d66792bfd3be4c990b4518ba120de229a72cbeb7fd5c2af325fbcaf SHA512 d090898465013b0975a6de87fbdcdf76b4896578056f4da83424bd5e7832547a3d8ace643c379c4f14700a0a88dc95950a38645508d1675306c377879a90cf5d DIST regex-1.10.5.crate 253805 BLAKE2B 9f5418b577209051640c3614a98b15604a1e71144763a6f00caa7757f0ff67fd833a7d14fe9d6acef96386a2a4eb60cf5d490472e73fd62ca8bb0e78d4f9f125 SHA512 177fddb001e14281510e34070f88f8e5167278a46f1d93d9286d9606b7673346f504e4064d7ad53558e6988a400c728e33b663ab398fee12ae23fba7158da5fb -DIST regex-automata-0.4.4.crate 617294 BLAKE2B 68f29fae9479a82dbecf8091250b65486c19af2e5c37c1b2df5d12906bac8aaa4d1e577dc0437a2eb46174a9580410e51a2c53ab265dd8af14e0c758888e92ac SHA512 9705f7949b270003c095f1787a3936ab7d4b0dc9f050ee046ef4e96f4f4630ac56cf0dabb0ac3b9120c462aca6344ca60636cb95e0c0d537ace506159c02b15a DIST regex-automata-0.4.7.crate 617582 BLAKE2B 6295d866706b623b2025fdc0c407086fec15053229d708713d0ec165bd526ba25e7468d0009625cbbbc21d20345f0af2eea10addf6de633e8e6a02dddced67b8 SHA512 b19d00d64bb8cd833cfb35fabb162b9481716f4b7f6035c1c8f1de4e0f90e00823d006e057aa3505aeda48c9e1802e61173c4a2878891129a3a918727e43b0d3 -DIST regex-syntax-0.7.5.crate 343366 BLAKE2B af07596e45e3525ffd253d6070ddad08dffc8f0409ea14843a135646da8b37a7a568c12ede809d9fa47eec2329f68da7a3b3c0e0cabfa200de64affe6ecefee3 SHA512 6388dbf68c8c86d8a5bd8cfb13a86e9ab2da1a339fd607c1a16848f85dd21c85d744d694c7b918954ea27eeefc90b589926c9da464343fb78ab639a5e2925efd -DIST regex-syntax-0.8.2.crate 347228 BLAKE2B 211fd1c35ad0f28874d4b4d276e0fb0a27e5a1608f2f16ba2333641b154624e378419daf8d1c955f21ff5f40f6d49c89569b7e11ea5649850846d0fe447a675c SHA512 301dde555f300298f2594490ccd8b92033e4917fe9b8671b8a97db6c827793c73969be85a92999964dcaf3177edda51abeb576811ad6cab9772964dc0a77e728 DIST regex-syntax-0.8.4.crate 347577 BLAKE2B 400323cdad2a7daa8d4006e4dd7a7b1234704df0f80ca0f4bb19447f8f1d270053bc8aa613e48291ab3a78c7eb02d7afec57bfc8d966a48b372a4c80de9b120c SHA512 10719c138d9aa304106fcbf77da0b01645d1b6fbc621abb639dbd43ed5fc3dbd22aaad8b86df55a60e7b2b4fc347b6f41419131d7b047273e146073250d892ed DIST rfc6979-0.4.0.crate 9140 BLAKE2B 662d967b1d818439e972d19bd251a4e3609c65bae945b4d11c0ff4966e9fcfaecb739d0b63bd767cda6a22e77a52f3386f02cb27c5c76ce9008837c882f8df33 SHA512 fb68114f5f8c1e7b921ed175fc01813531a584b8cb2df1264b72e1925bd66b4c021714b3627fbbcf3fabc26e4d6578c4d246369a0c98049d4058dca4cbabb20f DIST ripemd-0.1.3.crate 16601 BLAKE2B b72f950d20e0f6f19e5e4dac9da24a5fdfe3dfa441596a89fc7a8350cea3a297ec04caab43c7c24c4d8e499e50de306656b5a5a608d5b01d0ae86014aa4931aa SHA512 eb4510c2a5879984dc662a985515e17f0c22f91babd1ad9914a030058bf8e703a72375e82672c382294a0bf7e004c776e9c5ae30ee0f6acbddc44d22b48e2e03 -DIST rpm-sequoia-1.6.0.tar.gz 88113 BLAKE2B 23ef9556c49b9afcd06969585afac8501c7137aec18d2681a91b6f9916bcb0ea8fc195aeb95daa46540adcbcb4369195f43154c179681be908ec30364bb639a8 SHA512 08ca6476b78621e01be252942662b25395cd36deebd2665939c79fe22c4192c55ab147d8d0da41640ccc37bb161157c11ce7369557e800c72aca2aec33109921 DIST rpm-sequoia-1.7.0.tar.gz 90276 BLAKE2B 61e25e3a28f34793de0c25593d1f5e687b549f86593a012f11d1ee17ac8398dee89bf211ff55635bcebdf5f499cf16e7a614ce1aac257d188822b06ee13f77a1 SHA512 88fbe95463f8583a3bc0d30ec7d2833d77154c9897adca3d5a8cc6cded67ec4f09f2eb3a7f93f08464fe99aac988cd628a5f5b1686605b5201e25374dded7d37 DIST rsa-0.9.6.crate 80048 BLAKE2B 0021065c262a351c3c3e9e63984442e9ff8e739f0f60c79f0eec031fc3ecf928756a0da656a0eeb4bcb94cd6f10ced2326a83666efba3b85b8a518b0aaec3d18 SHA512 0af7737181236f0e5544a83eb41d7e780df1a488b7b782b2c97eb4eab3dd599b86d18adcdc69bb56f9aac548a24dc88806e7bdc32fbc43c33b4d7a9817cfab9c DIST rustc-hash-1.1.0.crate 9331 BLAKE2B 16ac56622897f47a06b661fb59a196b08d48e782ab87549c8bd5c6fe92f374c9bfd44dcb36588512bd9b6125c2fd79a12d648aaa308fd9694bcca3a7c1b49ac9 SHA512 84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 DIST rustc_version-0.4.0.crate 12175 BLAKE2B 6fda2ce03eab45d7193fa0d70175cc7ffb56b7be85fb1314092bdcfd3948ea145420569ace3a47218a4a2a6e44a818862cea6dd8cfb945475496f63b591c29da SHA512 f66da7c6efe431db06cd01180d84ba67fcd38f8cd6ef693762957c00ccc2211f23c08079d7f184776e08f28d2d6ca3bdb5f5016f7de245c6193d4722891ba1db -DIST rustix-0.38.30.crate 374744 BLAKE2B 63ad9fe2e131259a008abdf7a19735d2e2401e62cceae7b449ec7cb6025e82f8d275c24caba5c23c19d9c37de9b3b9263e96db3eea6bba569eb6146f5b3dd62f SHA512 6ffcdc274f97e7dad9fb0a23fe948ec4041fff6ce915204fb46adc31b55646a5fd0ff3d8d6483673da2cc55044ba53af4d6e48ebeb8622e7ac027a5d390231de DIST rustix-0.38.34.crate 365160 BLAKE2B 02513c2513ac45897b659f0d332a0dc32401d238b8fb64ad4a90ecc4d8952fb042c0bde4bf13d52630cef34e73e96dd32cf772a8601b4f6eb5e2961f0a394add SHA512 717cf26e2ec792b41819ff964888adb265a215d2b6c6e2b7a8ca1f7f793b713b853bba9cf03c2cc88b0f9a5eb1a0478faedbc05526f39bd81583e7b1f764756f -DIST rustversion-1.0.14.crate 17261 BLAKE2B db30d01914059a893bdb4c448ed0bf04852085c2d948bfbed8819a1d2317c34133cf609abdd806ad628b86974a9c1ab9d09f79743cb8e13257ef32cd444f49c6 SHA512 466d753c28c4899ab3da3e9f3366f7ecc435d484f51e0c07acfa5f3367af0de27ea3bc75efda22159b4990c976b1466a27e7c31c834c72a87d8234318357454b DIST rustversion-1.0.17.crate 17621 BLAKE2B 1f077ca6fd90333724d1ea9df7f5b178f37f895b71a7b2814e9ba8618bffcd2307f9cb4ac2eea25d461a6686a4b5b51eebb80f1b1ccc773d4da1948c47fe8abe SHA512 0565cddecaedae17e7cd99bc34f54cda242d4c29cd4269f8e3b178ff91d49f3682e7ffe66e436bbb138299736c8e55cc143fefb74c076911fefcc41ba98064f3 DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c DIST scopeguard-1.2.0.crate 11619 BLAKE2B 8b7e9ed6cefef9ee55407fb9690d57a2a98bb93e5105aeebdb475a52485e9e185255249e1dce8f83cd80534e7402d485aac3efa7e8493b13135de27550cd4bc4 SHA512 6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb DIST sec1-0.7.3.crate 17979 BLAKE2B c30d4e617f9c0c21b80f14a7df88a164ad43f4c18fbedc1ec32af41193053e67ff6ea83db54f46c8cd6389d930984120c2a1688662fd8083e0c23bd4995d510b SHA512 be646413d84b39a43a0af478854f47db3b167c2bf1bedf7a58392782c423aaaa38df3b3676f9807a98c6128152295c426edd16d67d62ae7048caa635bf39641e -DIST semver-1.0.21.crate 30445 BLAKE2B 1c779c25576723ee7e44e7c831eacc5dc6bb33cbf051bd0748f688573e01595d05808cdef4ae48a6423df15e474cea58a0664ad7fa5cad490a61f89473f426d7 SHA512 bc3ceb11f2b729be086120c06ca2cefc34c5141d2d4af64279b0868456894eb9097b234b326249f2aa83d8b99086fcac4c5b7ef4a1e14b1198ae808fde245c35 DIST semver-1.0.23.crate 30622 BLAKE2B af5f7401daa2004ac1fc419ff907a65feb9b11743ad0feca0929bf2409eb81e03637ec5f92ba9f38ea386c4ee5cde72bd3d2042083e2fb0d6fa0b839b1c5093a SHA512 5ea1fa17c08d1280c3a4bc8d28494e88ee05acd5dc969ef6f0c6f91fd3b5a8fbe999c9e8bbd2da383413038b8d29fabf02b87bd5265bbb8333f3fcbe409103ec -DIST sequoia-openpgp-1.17.0.crate 2979040 BLAKE2B cf11104c04f69e20caae885cb51824f00722a975b07c332562a61138325253dc25b92c791098994203c5f607c42edf2d58024b0486d5cc1068fec8db6dda3206 SHA512 275d0e393befc19e8b9a70f7e931d8f95f093a2f4734e8ff2543176b1c38b7d9e07e95bf474df0a1784d210baadfcc4f3de689e5061818ca3a22d604f52f6cba DIST sequoia-openpgp-1.21.1.crate 3017511 BLAKE2B 920a291aeaa371ad7fa785e20203c4ff5d86ba435f7654319c94ec746002f5b97e9ef2499d1f31cee81f58d6aaf3ce42b3af32ed47e11850948d4935264fd1a0 SHA512 37f5458c778678b69000cd4b9c63b81af93cccf352219b10b558e3ee3757072c1ffba1614f223eaa3aa156321160bf62a533712f1e864055177ba49fbd0a2e50 DIST sequoia-policy-config-0.6.0.crate 42529 BLAKE2B b58960a3296d1c3289036a2218e842bb63bfef11968ccae7c42cb61869e04d26fb52736876bcf32d276177c488d0be4d9ff3ed50fbfb0ba68bff3c0410a460cd SHA512 499d350426f80627278310b2eded6a69a7ad833058129ea5ed9ebd0255621ff70f9f04228fc8ca79830e6ec11d14b121bb3e5a6c5fc2721135d725bdf0d886ee -DIST serde-1.0.195.crate 76856 BLAKE2B 6a80b59335f222ae48d5e377c30611f30fe6416e6853ca47a39016e21f649cb9dfbe4964ce19e5da977fb9a963228a6a81c1e85af99ae12d7a0a5722901aa2f5 SHA512 0002ecb933d08fbdc8585ee74efb4048d385459f629261f5a4a8401b794f1c02b8296db79f479013a0b2a47ba99bee6c02d60d0fc2454e32f1b038b4071e8727 DIST serde-1.0.204.crate 78253 BLAKE2B 6fdebf3cbcc0327b404caaae43c87ba2b6105374a5ee3eaa34d44866e782132cff535da4c069c007783b7b6468d55cb1ceb6a41da74b9eab03ace7cf4811e09e SHA512 2fefbeed0117bd791fd25dd5ad0c99ed4f60aac5919605b6f642050f748dd472bf9d4d121b78b0cfe8719db30a675559d097bcc7542cb57451d1779dfd8d294f -DIST serde_derive-1.0.195.crate 55687 BLAKE2B 4da7916e36f71dfe82defa6c45b3075395cae54631cdff08a4607e962290020e7214288258fd316439c02536073325f5902e7b00144f97269a207fc453496599 SHA512 8a82ae4e7cfe0c3ac27688cc95d74bf4c2e10c1fe845ab28fb57579b2f47f36d13218c2ae603f93f00114065d47c3e46166dea39b205be673f443c34305dacce DIST serde_derive-1.0.204.crate 55871 BLAKE2B 8f0cdb244a820712d557a3273e505c4461f4d7db89e8394040b4c66ede787b6b38b4c9923b38959ab4042c9076b8af72008c0dd15ac93a0ecdeb99da8fb526ae SHA512 bbb2b5e60e2af5bc7528b937ffaf0d3ffd433dbd9cb2592c1e07090620309057e4f11cbd6112fc1d2c5557e1bb3c0f4d59eb06ff06fa021ec683ab880997140e -DIST sha1collisiondetection-0.3.3.crate 801556 BLAKE2B 112a1691032781a7c759b743b7c2b49bfb3d596b18d9262f6c3c08cb1505001e29b7dd175dd38671fd61318293b0adc0991a851a5a773a25020f08d0e3f5f423 SHA512 5240c9004b44cefb5a220b6b991ea29529f20feb882dcc9dfb4cb35ca127483770d2f118a648a2d88481f19fe8f0973f3d1a0bc8ee7121f83090af44e743e446 DIST sha1collisiondetection-0.3.4.crate 799321 BLAKE2B 6a36035f19330da30fff69ec304c17ca0d8af74673b43dbf421dd9e67f3e522575e7a6780a2eaca3c4e799304acb40eecd0a3909642f03f18996196b3dde19e3 SHA512 d74b317f272ea600659288af786c656005009b7e2fcf060eafb71df07cb3de2b698e74088217ff99fa911a59e00653835cebe6bbd5457e549c3f9015d8dc8d7a DIST sha2-0.10.8.crate 26357 BLAKE2B 1d01b381223a931dc631ad3a1191f5378b1d2f3f9f20474c5f020e366624c73b08330ce8dc4bdd3e63b15f647276f533de655b545b77f70fbedc1a1846f44f0a SHA512 3be73133a6b7690e14acaead47914dc92395dca4191fb657a2ea186fefd0ccd94d12a1121d63a26027d9a9c62b775c53202473edc461587b9dcd75472af77785 DIST shlex-1.3.0.crate 18713 BLAKE2B 18800c364d3a628f1a3125097ea82fe6286550c2997235df0bf8483a3906aacabc81308cb239887d46ba2f457cc6f8acd5aca78316707eea5098cd5666aea67d SHA512 5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a DIST signature-2.2.0.crate 15531 BLAKE2B c584d9ad52a1ab3cdc129c36cb2ed6dedc40a8d49f7294352a7df8121dc57de78268f15d9ff9ce076abf1dd3c56773daa26ed5ec39c83a600b6a377b51d4db37 SHA512 673a8f6229c795cc8f640fbfe02cd912b41c6359ca23c5ddeb1679f49784b84f109c6c45e6210201c9ca05e441c1be64ce6537e81ccd3589b37be6d0bf50dca7 DIST siphasher-0.3.11.crate 10442 BLAKE2B 771221614bbd56f609b9743da4352dc7a2cbd0f6257952fab0cd052e5e5b258a4c95a0461d6d1b579dec90b72d66a0e58e036899b3db8341ae753a421a4cd4d5 SHA512 601121bd41da896142dc6ccc74a6eec3ebee3e976857ab8b5d21e915fdc8bc6e979af66a489c406371fbbbfc7a13338cc4b3744aa981206e43c53998f3e1699b -DIST smallvec-1.13.1.crate 34952 BLAKE2B e0dcf1d26883564cd4f5d20a588562404e193075b1ae011f7f7542009a9466e5df3ade7768e1a8feb8806774b2cee5f15d31779928f83714e7d4b6ed46af9ab9 SHA512 1259ef947400470b8c9e74c5582dbc1a49753aa46420883c1f7d66f320f67bebe733a15a23cd57ba461020fad4ff337a5b298de82754602a78f5e6cec969652d DIST smallvec-1.13.2.crate 35216 BLAKE2B 31a268aad595c06cdb078577a97b089dbea156a0df307a3e6aaaf4861bd9a680c5b11921da9dbdb1bcfe17d58c0cbede1ffe6bba3aef59b384fb1b9703c62d27 SHA512 a97c758b668e40ad9eb572e65feeae4954e09200a04ab92e26a13b48894381cd3a3d2571070c4b7a5e181182e1ede9688f990650342ec69ecfe1a264d234c679 -DIST spin-0.5.2.crate 12004 BLAKE2B d67d9156ca6dbcf4022711cce797cd423a4977115abac4cafaa507aa2e1071b637275637a20934d4d0d6d2bf82c98c74a4506720326d1804952aa0fd5fc4895c SHA512 fc57f7906da2b7a298c5f89215e881e8827b4d9f934dbf138338e0ee30122d8459483be566268fa374b41d63d8dbf65d42e0b322535ba35c827d7edb2176f267 DIST spin-0.9.8.crate 38958 BLAKE2B 8648bf2e48fc618758e3de67f0a493bf3cd22a8d18666164b0d850ed7c0d73650f7b0af783019dd361116bd60c61d24895cdd2c579383cd2700de0e32a23cdae SHA512 b15ad66ba9b308937f34ea166b799676fa45c67224e10cb57530fe33d2a8317ff3e3db3223a3249fa2862cc141c964d2130d3f39910a86ac5ef8aaf8ff4bc6ee DIST spki-0.7.3.crate 16409 BLAKE2B 6b39144e4e718ce5eb454e21ee89fb936ffd31ec99554b0150fee47bca396bdfe4ef39603ec029d4af4d8c4c3ba2de7f6c549244f8c20114de9b43ff14921681 SHA512 d33a6a7844b33c37628024ccf25c1a631f7a6661595e063049b8c9a9b4edb28f0335397faefc592c6fc5e96378b870ab5dab9b0649c3387577b2370ec8210db9 DIST stable_deref_trait-1.2.0.crate 8054 BLAKE2B 287a65c3e5b47213544a43e57c60a54add60b4c2e3c8d042407d860cc950ba7ca01a2e67ce56aed6744992b61ec1f9aed3321e3d88482e33129548b7d51df205 SHA512 a13cfb22723f1f2cf089b2d07d657846f50c37bc0438d1a76096bea30214cad226b7a422c21f9e191ce87071da8a141d61882aedf9e0203a5fffdfda86a5fb03 DIST string_cache-0.8.7.crate 16655 BLAKE2B 9a017f3248a3d5e7b8c1a05462a882862b20174c7ce5dda1568c3d3f61c422e84ba2ccd5d6dbd726d1c752f1eaa8062a179470927a80d5bdda0ce530d1ae2c17 SHA512 03f9cdd2c01c0f233284851f17eaefebd68a91ae2ed2b231fab2d6d6476bd19e0696d7d3a74fb6ecb2ec36b89e79ad966ab73051255c9e194bcf9c5029fb8479 -DIST subtle-2.5.0.crate 13909 BLAKE2B 660c3a472ca54c9843ce3feea74b802e27fd7f62dd37a30e2a4ba82e4b3a71df63562e8865d5fc675d31d0900998a8730503f91a61450884446a3bdd6af0041b SHA512 f150b1e2037554f8cd3213a54ddbc258f8f670cc4f39e7084cdea4b47538dbc58b834bc93b443d58a4b9087224efc003234042aaf366687dbd32b1e7174082a0 DIST subtle-2.6.1.crate 14562 BLAKE2B 3cf4940b7a01f04715da1057f6a92b1043a6b86ab2ee7f9fee0337b680ff781201d330409460f6f90b3f81bb5fd4b563e17c762c6e824ba3b0af99e4ae7d66bd SHA512 f5946ebd9bcb8776ee3446abcbf4afb3cca5d8bd847cadda87e864333ac7ded537a3efa773e9648adf20ce4add2c1da85172cff88c1e1a3a6cb051401b00c6bd -DIST syn-2.0.48.crate 250566 BLAKE2B e46b0863af76c3116c84d01b654a9820b7edc51f75c9c5301a7967d12284f78da602409f34fc40524728350dc6b998a4d738f08b8868f95236b3e5d24c460580 SHA512 926c0ad55cc743df20f9166b6d71fd44421aeb1f073fd86b6ddb53e13cd508b539c0360ce64b07b65597bb14639c8f33acf7e60951e1e9128624517aa3aee325 DIST syn-2.0.70.crate 266388 BLAKE2B 3141299d952bef20423d72ef0ffc232492342a975452aebdc69b724c56cf3620cafb14c583b1a49dab59a195d1e5231368b478cf67004daeb82f1421e6e28808 SHA512 41685481a841a1a32a35e8a11ebb804289fefd5481e98bb446e194f9d574f2ca18214471800e1259f08f25cc3c91b927d311ad22d839046600772ff6cdd0dead DIST synstructure-0.13.1.crate 18327 BLAKE2B b29ee88c559a2d58fa46b7af155b448f001649ea79a1898f0ac87e69108b87c65cbd287d8f9001f360df7fef06ff39c937b48d33e487a30c8eec6a46c639c0c2 SHA512 09024193b44fc9a8901bda845b9f86c57dad65d0f53e309b2e7e968538fab6f67db1c86e5e52a2eb8fd116dc073e3ad10983bd60764662ec6ba94fee22a958aa DIST tempfile-3.10.1.crate 33653 BLAKE2B 819b183e7840f70270883ee8b6a91fa09861c3112eaadc65007199885abe099bd593e1cdc4d9ab48c23490a6d484cad9bf0e80cf4e718c369cc2418b72eaf09c SHA512 bac7515b85b0d01ea914b527f0fadd3a4d8e77c9eabe786977d2625d8a3e91decaec502dd15bab4d49a43597fa7cf7660fff4be1b043112d13b542a72443bf39 -DIST tempfile-3.9.0.crate 32182 BLAKE2B 4e802990988aff3ab5173bd96dbd906651a8df46b2619e6a500a3b9e7f4a3cd01dc7ee977791343f7875afdc4793a845000bb363d8c1a6599aeb6b1efcce5d56 SHA512 04e06c966bfa7a1567e7185ebd5c2876b96e46e36af14931bf0eba63795cd20d1c3427b6709a4cab2a68b8d289fdabd5537a50e5407a76e3a9fa0dcc7d3ce6d7 DIST term-0.7.0.crate 37082 BLAKE2B cb7947c696f71fc68bab3b25cc6cbde74b92380fdde5447399b06de99534b0cb2160963792824ac74a350444ce41a4fa16d6a9792a68d84578a15ab37ab76ca2 SHA512 9de6e836f1fd205b3b58645ec880eaabfc0fd8991e3980ef90bc6184b370a14676edb688a2a75bce412dd8ebd97345aef742afe5b964250e2b6f84e6b15b486a DIST termtree-0.4.1.crate 4557 BLAKE2B d4300b0e6e908c519a0a76f5e08167f4467f428b2926e7739614cef5d3e294dfac15ae8576f7011a852745713c16da93346660ff96520a2bb90a4dd4c23d889c SHA512 ddbe0d3ddd79b182732359f47958ca32aa351d10b1e7d5f6456700b851aa2b5314ce005e1fd120a248b676f219fbd68039cefc071d92c5b5477d053bb6e29062 -DIST thiserror-1.0.56.crate 20592 BLAKE2B e98c8bba8d21342c981646e88b72a7cbc146c695a200aae3e076b55948791cc51a29e8818d64451b17233ed4d095d0ef63ba4fb07502f4ffde5af738b8629c37 SHA512 6b7c856745256d6ef9e7ab2ea0027f9c1ed2c75ed5b075068af57cf706abfd835fd4552d9ec7578bece1f820086828c5dec85a9cbada409569838cdc9d63936c DIST thiserror-1.0.61.crate 21264 BLAKE2B 97337830507c009dbb4cad84cdfc02bc097b9d39d0af2fdecfaa63f0c12229e60727244fa4e44c2d54daee67bf8b4e8492d94a5de55d1a90b8eeab8c0d082e80 SHA512 9c08b868eaa47178ee60733aaeeda60dc46d58d2b9c15985ba3dcae4923e8edf02b97556df52f508753b0ff52782f6ca3227e9ef6343066e5d5d3a89e03f3f15 -DIST thiserror-impl-1.0.56.crate 15367 BLAKE2B 6fad787eb1e2c0f25fee7bef160be794fb8000a0aa292ec0d2d66d7a4d1fcb226c3e2e690ff6a61ba2d8704208014eea84044dba27523d4b2c26d2f7d4ba64d5 SHA512 da66f4674cf699083f7142f3a60c1c9334767b4de3690b4c7af460ffda787fab2089f5bca231e92b6e71724d46fe7dbdcaa19073f5d8100838536d10971efbde DIST thiserror-impl-1.0.61.crate 15786 BLAKE2B d63773424aa047c6eed8a6c9bcc8dfcee9841a2d4fdf6fc2c117695c09359371931722198b2e0b2bae32b0c54b6275f964e679b78b8bef1c365ca33aa41562c9 SHA512 b43bd2ba6b751b777e2fc78aac92a3e662a1876f704625c4e894019fc68a6b7628b9c3b7ddfbd2cb15fe6fdc0ff679ff94b0c47e2660a40919000ad2fe1cfeec DIST tiny-keccak-2.0.2.crate 20129 BLAKE2B 105a2d2af36cc053cd95721ea563108f33b8a3feb2ae84c75a04a65ed5d548dfe35d8b2e48977a82f725c0ebcf914f21157c547f4a74bb4d98c2e894385139be SHA512 c0219f23361eb07e0a68575c461a36b7286d9bdebae89080d9e259178d402b0c7762ccf33e65a16951ea168392322c44a24eb55189cf143e22d09d6dfc4acec1 DIST tinystr-0.7.6.crate 16971 BLAKE2B 33a248261c4cded41a81f0d6e6c8df55437f042b37f235c39787986ec562f0dbff50b282ad0f1483daaf49c4b33e6618e139a6677d1238c21f4e12082562b4ae SHA512 a33051848de248cac0a2d151760a78cb3aa62c787d84ff7aac38b11c0660e9188e4d43d43a77fb8676e49ac6102015e9c3db057848d809e71981851875d0fb25 -DIST tinyvec-1.6.0.crate 45991 BLAKE2B e9699d4d80a78978f0ebfd049f5b33d7f23d401cf4f4439ccb168e8c0e322473ad0ea7e2ff0ff69e9aac3e5c4c9ae5a7102185533bfbf96dbe77b3526e700bc9 SHA512 e5acaf353c58c60ae5556130a934f1048abb79cf6668ae467d308bac44b689d8a9997227ea879f4b5fe50f29cde8761801b088d7149bcd063b973056c381921c -DIST tinyvec_macros-0.1.1.crate 5865 BLAKE2B 2bf4f68ca11dc19c72232951605a4c809b34ff38ee365ee4f592a3c41360e23c9330cfba961e2692a0ad568fef4aaaac51c40808d491178cf7a0c4b5a1c5d484 SHA512 10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e DIST toml-0.5.11.crate 54910 BLAKE2B 9ecd5103b33ab47d4be23c897c7095ca381cb79bedcaac4918cddc36fc7cf5d34ab664da52c2273d935f04486e9325241d6b66785d50aac78453c219aab49e1e SHA512 eddb82aeb8fdeb5436579292c6f7a64a90a2c7bb54070beb437bc7890b99795d0505faa8d6451a99e8bcf440f78db8a1b273a697c8ad44275cc4163a9ee49317 DIST twofish-0.7.1.crate 12156 BLAKE2B 282ba2e6e4610297a67aff0e06db6089c57edcb0056b4d6592a84b96dffed7e2394c7ef0418e7c0b7628b2b9585b6ce8a0f0f981de36c3f10b8ebd3fa85289a8 SHA512 9f6f9768e0ec227d03de0f95d5baed803a710b286fb18a2fc4e325eb518ac2e483fba6928b14f7b6a38643b0320d6d37fa1f3d2fdd26e805cd23705753cd1055 DIST typenum-1.17.0.crate 42849 BLAKE2B a6d1162050679e2c4ab2467f3a77d301f6861882eb7c9749f31d047f383dd5bd2ed5846ad63eed99ccc04d6ac36cc697a305861e1d65880b4d2ef04ee0a79b94 SHA512 99773d5d9f850c0602db4bb67dd062b0ade6f086e155216f1bb2fb6569461ba7e1b7c2f2af81ea8833bc3bfcf3fe5033edecb7c438adae63f59d3e30cf63a508 -DIST unicode-bidi-0.3.15.crate 56811 BLAKE2B 1f1d372c86ec7444f13eb32baf13dfc8699b52156b265a2b53f40c0d771064876405451120fe54739a2679e6991caaf4f63e0644f03729cab814079fef4868c8 SHA512 7a21d5eb05ea8d691dfd54ce4cf7d3693d08067f7a88ef17b8c3044634f46411176b1bde1516c442577910b254007b247f5e40f9932eb601cd96cd574f9d9db8 DIST unicode-ident-1.0.12.crate 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920 -DIST unicode-normalization-0.1.22.crate 122604 BLAKE2B 3f3430b279cc0ce1595392c869442ce676ab097154c688779ebcf726e10c497df59be2cd7bb2f84f99499a9df0654760a10ac92224c17d74775aeebe291241e1 SHA512 a5810d5e9cd93dbb80e013997aa9d38e60834619483a6623eb2859ec5d59a5aec3fc4db123dc7f4e2fe9f2b8799cf6af48bdff22d69a00a23707240e8bf3bb3c DIST unicode-xid-0.2.4.crate 15352 BLAKE2B 80c327b39f3b8f2cdb5747cde968cfa1efe7b65b6bee9136adc881fa19f66aa5b1010d9d08de55a61b322d665b5b0cb0395e9ac471f6333c40d8dca5d97e123c SHA512 e67bd1258e1961807d9d5fe583a89ab5b82b2a529ecd32cadfc79aa5331380eb4a2db9fd96b74c8eace47f2f29021587d69bcdbf79f7e2650e92a25f7839d03c DIST universal-hash-0.5.1.crate 9146 BLAKE2B 9095f95faa8ed4128c3787226f3899acec4278d36799ae30a7ca71ade7179c274a1807f62605e687e60ee97e6bebfe818100ed0441db455bdee0f8e5dd451809 SHA512 83b3ddb1f0d7ff621ca2b3d426c2e682d8339a2adedbbbb3a4584977e2e996549d665578729bff65b5693059460e9e04b9df2181c404980d3b3d946c80e0b589 DIST utf16_iter-1.0.5.crate 9736 BLAKE2B edcd9776113d4d2b267a9cbd58cab11c5497ff1a8252c4e695de619fc8e5eee1595343c857651774b3670d13392144e9d7df579f2e226842aa7e4e023a76fb65 SHA512 44dcbc5a7db149392fdaa31862be240f78fc5d7616f54be32cfc8f3adbee310e8681ae1bbe6edaad8a7fe6e7759dbac8ae4f69d0dbdbe5350c21dccdbbe975fa @@ -295,15 +206,10 @@ DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d23 DIST wait-timeout-0.2.0.crate 12441 BLAKE2B a99d3f57bc6e784ac06167f98b2dc2841f730dfab4fb9772b15e67707f756d6ba7daeb3e992d32291bed3daa85eaa8a8ddde64db5e1acf1cc4031fc9bdc82212 SHA512 db3b7aa2acfd44e64451042b8ba98eecab77a82aa5c58ed08dadb119ab36dee4e26d62baad7978ed56d5ad03019c96be5021455362290f56043981137bac8066 DIST walkdir-2.5.0.crate 23951 BLAKE2B a2d3a973f206e94699adec0263dd5e211347722cf3ab82536295019268b3125084da5dbcad818070bfdcb6a5de08da4eb483475bc225a829f58a1e3e040b5fba SHA512 da36a121dc6656942dc9cd9887fcf4f6eea7750354ef3f59c7c25d836e7afe06f33260b4d55d0d99421104ed4ce56ef2a1f0f4c3b713766fff90548c21793fad DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f -DIST wasm-bindgen-0.2.90.crate 182529 BLAKE2B 309bf19f4f0551ced885ef7ef80c56bc54431cf06c77e430872fb87e3cfde0c0dc49b018d070b505ea8e488e94a4845ed143430e3c4b70ee48713147b980c6e9 SHA512 c6f73581590a8142b66bdc6373d925f1b1d37d4d09718b49c3454d3d2e16eab3dde97724cbd246420e0c29656bac8ede82eaa0b0e94f22238628dd974223db62 DIST wasm-bindgen-0.2.92.crate 184119 BLAKE2B ca256c686bb3854492bad6afe3cd27dab314561a1ea2e0205579820066b462bacdb2cc01075fb420bd20eb33b03a648ce1ff46feee04d8759ea8aa990ff8232a SHA512 6e46501276c0d4befbf930c816d6ae6c3764e3b5ce0ef4aafa627a6ea371f1a056ecc15970a817e9e9bf51c0a2ffa57df427d758b2d367beb6a474d75b8939a5 -DIST wasm-bindgen-backend-0.2.90.crate 28348 BLAKE2B 14193bacce7df590b372bbab1126255cca027fd94c76c17ab13b06e7c18346b5ffff5e2c9d0ff5bdc631846fca70eac9a43e4ffcaf58f0c062ee36fe025abf75 SHA512 7b19cfee23dad5b09b6089d2b56692bc183d477fed5db8a91a6b30c574b3de4b1d45004761248d8c5437ce20a5ff64f7e081fccbd84e8ed72fd154e5a06607da DIST wasm-bindgen-backend-0.2.92.crate 28348 BLAKE2B 425497aa7a023b70549c55d5a15dfed80877c5503863b186c0a9d11b29551c4606c1cd5961c7dfdeee2eab5662952ad7ad215513e93abe727a33f84b30bd181e SHA512 22e4f5848d62bd1fd55f4f054ea1293e223b3cd6f916bde2523eec10388e733623492c3a3246d61831e696dffdec5d000b95e9aa1217be6e38dd6459872166aa -DIST wasm-bindgen-macro-0.2.90.crate 13904 BLAKE2B bd5e3521c27f7ec3cee0f2ac4cf894ea5a9b9bde65ec55ae9b29d033b986338af92e2dc9932b87dbf739f4ba48230f17a16226cf1826afe13b102225af29c1c8 SHA512 97dc09c02ea4daa1694f3a118aed3ae958373e179bc7ae4d7bcd14b9958f79c03564d678ec04d7f80b6e6a5529f63f1a853b2905055be8a210d41a12ff279007 DIST wasm-bindgen-macro-0.2.92.crate 13835 BLAKE2B 1f2202fdaeb78c32813eaf08b2fbd7aa9c469228386df71b8ffd81a46374e39a7104b79991f702505f9b7e97957fda8574517fbb03e3f9e93098c4d6e1e46be3 SHA512 78d2ddac88a9ca3ca5eef8a7af81cdf2366187a67d844e69f65f6893d1949f9723ab5f2be762c2217a5c21aee2f3dbc2d5d55ef0c9cbf0dec0d52d67a6ba7462 -DIST wasm-bindgen-macro-support-0.2.90.crate 20008 BLAKE2B 46172ab1e6d03faa2a29d8b2d1bb3b37dcb830d73aa96d0922b63627a6eced1d38729ff85bba7eba3e89dfbd04fbb92a4b87cd74a1a906286c61145e3ad38da9 SHA512 9a5782cebb192276a0a05b54f8cadd994cbb97388d72c85f9c60754ade309684883cb2f916badc1360522a6599172eab84aa2bc981889cf2ef2aed8a4e0a3577 DIST wasm-bindgen-macro-support-0.2.92.crate 20092 BLAKE2B 8e274a4053e7afc680740e811c3941478caf5342e2206e3d28cdea9f9514bedbfa4f2b6bc608817306a1c455dd7134b7e17f0f04499f6bfb5302f29b041ac7ae SHA512 92543d2aad0b25798ec20e68832b823610c2c01401088cd9cac1684a86ddd1b567b3e2712acb862060f9c645a0df509b01d9834fd3e13cdaab97960f66d8daa7 -DIST wasm-bindgen-shared-0.2.90.crate 7264 BLAKE2B 2082267bcfae660b72f6d5996a563d10319a1cd7078b37070f41e96aa56da31ca0a22c168a1e5fe52294f5d7a50c76d06f03d489cfcc0826db29316f2e67ebbc SHA512 f6639c004b17661d0a571181e1447db7eeadbfe93005d6f0e1bab983967591b64cf2ed21e7b77934ad45058adedcae28af1ef141696bd598f9c2d683abf93018 DIST wasm-bindgen-shared-0.2.92.crate 7263 BLAKE2B e54895486b9a31cc4651b7bb042059cc84421708346c06a9764315ebd4f440a1077520c7d325d6889a690b2c06aa185d40cede2dc4d061b363594cbde20fac31 SHA512 70e3a22731ed8aec428433bf30500eb3f62e3b7f4f1be34d8bb3b6f34f99690fc85d49eb413caecab807064494cfec64242c6a42709dffd638046e370bf86e07 DIST win-crypto-ng-0.5.1.crate 44667 BLAKE2B 112a40af7aaa7d3e1c6d6eba99f3eafc7173a10f149e122eb5c658619f6898add8086ab8523695b8433bed89952d70a63e6f445b39ad4e9bd64ed98931002817 SHA512 735d245c56928db70dd4ca0b95dbd8be9f3b55dcd88961549dd51cf8e671eaa3a203b76a1e2ba073ed8b0042f9aea08fdff505f7efe19d8b2153589f9e811692 DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 @@ -311,48 +217,27 @@ DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f955297217 DIST winapi-util-0.1.8.crate 12416 BLAKE2B 5b48c27dfbb5db5c332f7e248138327b35ceec0909788b940168e7f6fe1402800da5e7690b2b1654da6c510b5c720330a92da16dff53ef15821f37fef6f335e3 SHA512 e186111398f9f0f0686e791ad0d72c39205e5f246b6e020df413e477ee07f32e91d09405c61dc92752f061f54fd7533435545c1a151477b40e2d68acc94a57fd DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 DIST windows-core-0.52.0.crate 42154 BLAKE2B 9670bf02261b4ab2a24eff97dad11e305deac823cacfae286965b62b11bc035f19a55ca710eaa4359c8a4905433a94fe62a836b77ddd68f244ad6ac2c9657f58 SHA512 0c8f1c7e63c11bdcf1361150ecc83abbfba8da2c6d28523799bd286bf8aa1df61ffed19175e8cb3ef516a9afb6248b640c2101a2e0c09a99bfd7a18c6741bd36 -DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8f82a3100ef28e1eabd543ac129d882dc86ffcc1714071aba09e4cb2ae2d2f07ace1a32b99fd989ce525cf05991edab SHA512 bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed DIST windows-sys-0.52.0.crate 2576877 BLAKE2B 69d6b560ccfc8f679e2678663ba606060d71fa28efa82c8aef8cceaa2c63b06f2052764d60163964f939649a26bbec6361ee4b094555e941fae92070db566980 SHA512 24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03 -DIST windows-targets-0.48.5.crate 6904 BLAKE2B 7396bb210f37bd51da86f39fca3425c8f6610721d5c4e94f9fafa0a8a8046303b3fcc6979146bcfaa32f4406d242a0455f6cbb220f84c6ff84650e755acf5223 SHA512 e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709 -DIST windows-targets-0.52.0.crate 6229 BLAKE2B 4b1efdd32202f112d3782b586ce60667f5d3b6f97ccae0d7da833aee2ae81ceece88b5ef4126db2448c9019de3f77e4fe66ed4286bb6275d9a5e8ab74725b804 SHA512 0ea09552d89b802ec0d419b640fa02d0af7af602704a0e88ba10f81d123dee0c907460f6ec91224177ec9a948970abd7414740eb219148a4d66c269c2362740e DIST windows-targets-0.52.6.crate 6403 BLAKE2B eb98d0a8daeed5fe76e7fa8edb2743e2a3e77dfb9c4ea68605a6ab10532cb7cfc43bc1cea0180869445bd940be762a40136500e26b84ca88b5e0c502004c7a4c SHA512 d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f -DIST windows_aarch64_gnullvm-0.48.5.crate 418492 BLAKE2B 5c6f7d73ad05740f0bac304ed1ef9b2ea63b0d6ca8f875552ae299a0b73b1557e8fe996f1c2b69be9f2df350c9288690f49ee62239a2896991364331d6c55462 SHA512 20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996 -DIST windows_aarch64_gnullvm-0.52.0.crate 430182 BLAKE2B f23370c62c4ab3fd885e3ee22e8ec2fb5a3a837a57044c1df3f9986dd4e7e9d0a44ec58be1648a41e1ea4d037afa3077f0f03de0204199a82fb8395731815a4a SHA512 b7c3fe0a2ad5149be0df48fc7a4d15879eb130bd9441c58c25fc71b8a91483f0b553fb1bf29a9302acd348e9083a547430a840b059b0cfe19867ecaffcae986f DIST windows_aarch64_gnullvm-0.52.6.crate 435718 BLAKE2B 8b12ae02892cb69401329034bbca671d13bd268a112120b56b90504707cef89decfbd2560492844a9f0588fab62dc1476ab7e931126b939015d25a8cc91ca334 SHA512 f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5 -DIST windows_aarch64_msvc-0.48.5.crate 798483 BLAKE2B 60c466d6536426425a34b5ca20da97c8127ebeb4fb9b1363911165bada484f8913fcd50e90410b5661e0c27dbfe8f4eeaa62fb17d1f3566bfc82b6255e11619b SHA512 223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff -DIST windows_aarch64_msvc-0.52.0.crate 821663 BLAKE2B e6f772858205f7cd871722136aec4d00daea4793ff9dcae53e6311e74526c46aa11c2b3df7a85e6c577757254cbfa5a713e68c694625ca274b64e7a1c5532c23 SHA512 8446bfe5b9fe538415762c8129ab3bf2fe45482e045bce367475747786602ad4ae1187c6e508dd9d7b6be81bfc8d430e0db9c624e35c7cc52e823023e46f5cf1 DIST windows_aarch64_msvc-0.52.6.crate 832615 BLAKE2B adc8ff61b6dc96d39c92c7d4221ae6aa0575edfc016cfcd046067ca5d8fcfd56d10e8e227be1c038ce34684be22c7ccaf5f18cd5a7638d28fbff4ba15b48b90b SHA512 a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b -DIST windows_i686_gnu-0.48.5.crate 844891 BLAKE2B fdc37cd74a4982056bf22fdb7b84e1c55dc838f3cb19ff3648730a77e673ef4ecc0380b3e4277bb8df2fcfa25f57b69014713d9e3ed27c28e19b25b3ea2ab774 SHA512 931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a -DIST windows_i686_gnu-0.52.0.crate 870285 BLAKE2B a7688062a128a1b1394b3978210334e4e2aaa10dce131457c4a11ce0cb3f551e7f4962d1ece1846d8e9526983ced0e0a3ee8c933858e9314b62e76381e086ef9 SHA512 fe993f5bb6e039c257be9b35337e0221f718d23866818bfd19c76aaae236aafc2de4bb5014fcdf919563b5901cdaa14a2136cd086eeed3c83e46a5d02f6aa77e DIST windows_i686_gnu-0.52.6.crate 880402 BLAKE2B 5aab8ee07132eccb7695807eb44811beeb0657aadfb672c54e99b6ae39c067ba9b93e38fc69bb5b9b14a9759f263ccd5e301597d2727d83b31b49a409b6bd405 SHA512 a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822 DIST windows_i686_gnullvm-0.52.6.crate 475940 BLAKE2B fec4fda8bb2bf319a501a22372fa642ae682e4dee3235b258a028190ee73220bfc55b3142f06249bb4579b17e5fde662bb2b121aefe18544653350d7d0fe7d8e SHA512 95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f -DIST windows_i686_msvc-0.48.5.crate 864300 BLAKE2B 3d3ea8be55e2d6ced0eeda18abe1dffb925a1a78f456d683e4450d9f2fd287ad2e8494d65b2b770c677a12b3a60d10f0435e16c61880e3867c3657fd44892442 SHA512 70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e -DIST windows_i686_msvc-0.52.0.crate 888693 BLAKE2B 7a6e9d03e503c8f543e80a8c7bcf3f50cfa7eed462e487ae7b581746d7cc4d871b33e307110d3a3a75226d88e837f9452ac56bf3baf71b66cfab2626cc15558a SHA512 817ac796fd00bed51d80133ec873cf3d3d582ba41fec8a6f6407fbd7544f198e928aa5d710f70c13bbf74a1dde4c91c54e65eb9d3b7518a7f011ea42725eb671 DIST windows_i686_msvc-0.52.6.crate 901163 BLAKE2B 99ed34e052db5ba77bab240ed5d38ce450be347a794d63ec39b719304c32722c9999b540ab40abe0216318900b7412970df99dfb36d1516a9517cae0c77d1bdc SHA512 ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96 -DIST windows_x86_64_gnu-0.48.5.crate 801619 BLAKE2B aa7e7e6a6ff9f9553ada3a0a39a9aa798e9d995a8eef36e0b6fdb2a0db93ddecee5548970575271fe43aec74797a420d0ee231d503b5bad1bd999059261e0e33 SHA512 1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74 -DIST windows_x86_64_gnu-0.52.0.crate 826213 BLAKE2B 3ca03285ef289fc844261142154e710e996c29940b1c0a7dc3016906ff6452fa50b24f8668fce0ca44bf169ab1228c217fece9f7bddac9ab8bdc54fddafaf8a8 SHA512 2d81af56ad0bc9536f6e066776642a546ce6c6d99551edc0603ffcafe6db15d5d5a32a642b204bbfadf34231daa3894ad7897a9c0c575c2b6bc1e3e58a9a3eb7 DIST windows_x86_64_gnu-0.52.6.crate 836363 BLAKE2B e2335829155cdbd4a55cc9f9babc237e14e32aab97f6f91afabcdf80d2aee37d6fb4b8669aaf433ff532c85dba59b3d366c7d41b61a2f29b96f960169c900687 SHA512 c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb -DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e9f435620ad64b40c579f6d0c3677553ad7a48e5765d12c266b04946402e15c92cff2e4ac4979ce2130750ef426e2672119680284 SHA512 c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa -DIST windows_x86_64_gnullvm-0.52.0.crate 430165 BLAKE2B af9345a1f6e0ed1392ca1534c68d23f3be0fbb6a42b3c5518cee14373e645038526da15e849d14abe45c53766a30c6c2042a626482ba4a05409f325eb6aa36b1 SHA512 e88af35fd1c694dc189783e5c81aafa61aeffbddce4d7130e1125d0ce3d932fafeb345990ffd98477c41b578b7f5090f4f9c0457b02146309b95549c9f8f44f0 DIST windows_x86_64_gnullvm-0.52.6.crate 435707 BLAKE2B ab77dccd06328cdb00175f41cdbc120594050a9678b7f9820444391fb50aada3911a91ea00f3a6db2b4fa1820fd23bc9a007dfbe65ad41417c26ee1137ef9b96 SHA512 67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd -DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 -DIST windows_x86_64_msvc-0.52.0.crate 821600 BLAKE2B cc448b65f98fc0fc4949ae622b7020d2dae927ae45310649f6ef71809740eda9d3db0fc035676c201fd9ab9639e9e7f21e2e992b4c789542f12b419d2c752179 SHA512 3aaee31533a1a48a6ab5cd15b3cadfbd906a93a153e53919d0aa74e440d11e29830554e4e014c215f5b88a475bb733fa8ba4ce9d773d3e23a40ea9ad37ddd0a7 DIST windows_x86_64_msvc-0.52.6.crate 832564 BLAKE2B 8e9a3044654c6de99a9153e7cacd575474e7a8a3d883c67b02132af5d3fc99d03cd5f7a4dd666a3947451d11218e6acc6eb5e2526f012481106cc13453839719 SHA512 21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7 DIST write16-1.0.0.crate 7218 BLAKE2B 548796314339463e4b71f8af3d344e45dc89480e103180b6d56c90fcb816ad1a37ab2ba20766c4b9754f2cc686752eb1f3a5a12ec1ed4369a9cef749ad4f3e97 SHA512 655a207b8082bb88e462f992ecb4833cef9d590da06d6356b41d109df2862b49ee5705189c78a607b549e7343035119d158020d58fcad49608e51659357a83c1 DIST writeable-0.5.5.crate 22354 BLAKE2B e4ff9862c070b413568ce0c75d1eccafcf1db8578eee4795ea9046dadd643f8a77258b437be288b93af247199d63455298ac2cff909226bc432f91c0aa863921 SHA512 818b2546c8ec25816aeaf5e31a1ded927d197bf7256e7c5073738c2709bc58a95d382a0256eb38a99235ae83729b578701261866d42ea3357a26024906e196c1 -DIST x25519-dalek-2.0.0.crate 87806 BLAKE2B b099db9b71f42f4b79abd87cbf1c8e6acaf2d7e35b33ada6db5f31f476c7f2643dc2f4b760cdd1ac2654b018ef8139e35cc75ce8d3fe98ef82252c1589987777 SHA512 26664da711df36e9c2701b0714bb4ce5bb448daadd772f949bfcb4f838cb61f232420a4baee8896589be9c75db35cd7aa29004f88a044c55ebe5f4c0609b924f DIST x25519-dalek-2.0.1.crate 87820 BLAKE2B 039749d0278d95996016260f9e32162b370594085186044665685288d879e067fa16a5d4d42e939d2bd05f7b47a81036cb4f573d841cc81ece078c7a08eb672d SHA512 13dde8a8d4772dfccc3849a37717828ff6fdf6b4deaae86b5d6bbfce9b6dabbaf039d95c163cc6764447d503c1a62d602ae5b5d1f7204cc002d3fb13ca85acb9 DIST xxhash-rust-0.8.11.crate 20656 BLAKE2B 444856bbedad0116bac05a7ce84cec95be49f7276dfea0c31bc66d03be3915ad4543daa5eae1132e7963d6773955c03b591738a1c42e55901f32d7c213d72142 SHA512 b14bb8247aff9b0eec701b2c6a7545364a88e2e7cdbf1acad109fddd59a53d72fea8bf31cbf9a50f203f64134d151ac8371a3d40598eea53b42ea558868bc146 -DIST xxhash-rust-0.8.8.crate 18515 BLAKE2B 9676dbffcaf7c345165cd463ca25e81693719c95fbb1356526b02850f11884bdb1a715f01ec1c4844b55c8db65232aa9041b891a7e0058e99edeabddac289ddf SHA512 f2c77a3132af7e4d61a375e038d20ff8d5acebf35385e2f2a283f1313a8ebb795cc7132f84d91ed2e6fe96a2925a6f1e5d4c1255b991d587470d5a8d8322cde5 DIST yoke-0.7.4.crate 27781 BLAKE2B 42d6176af3e8d046b42fa89eacc0bb249eb0a6e13dbe7e97890b0cae98c3cc0059255f15314bbc343610d60605bf2d13869402c17d36cbf7f495956496572212 SHA512 b3d1456e28d53723470644ae15a4298fa96a79593d90729221ca4e45a6f09de4d7c554703425c61595c4e78959652122db95865c0337cc0cd6a4ec57d7bea84d DIST yoke-derive-0.7.4.crate 7470 BLAKE2B e5c0ca6f9cad4336b6b7554d05c3926d1720707aa70b588ebb884426747eb7d3d82614ba20563a5e801c4645f90fed9e067f50f43749a66e52f20c4204fb94db SHA512 5be38b8ae8dcb640a3fcb097e5b118354b45a41a0367afeff3c2ba5d13458524e88f9433848f09c670533d36a49a0e2b393e23368921553b5bb008e66e8e4a40 DIST zerofrom-0.1.4.crate 5044 BLAKE2B 8ad9a14b8b0c251cffb420f7ac673669fd29b74bc2f5e220c8e86d592f58cbb2c7be88d906b7dac8803dbd76ec459c4a249b7d1ede75a055454a1626b387f128 SHA512 11f37a67108185a8090cda71338b02492fabd15e6cfe018833a165cd869ed65338e12d7c5680ffb0b763fc3acbdff6fe4df30457653dfe4d79ecc864b69d780f DIST zerofrom-derive-0.1.4.crate 8232 BLAKE2B 98f69cdeff7df52822b982e3c089ccfa3ac2ce67f320b0d32eeffa899d2b34627268ed0a01b03504a0a6fcb6bef34d808cc79c811d5daed7f8acf59282e82088 SHA512 f2ea4650fcb4e7c3583f0f7c6146c7734cf6e80e07d92c330c6bc6a0a4e0fe14ae3393845713331240c70685e92eec114565c5be21189e687fe6232aef75a9c0 -DIST zeroize-1.7.0.crate 19039 BLAKE2B 2f94a5025f409bd2b96a456d2f78a34c6b05b5554abe7ef3fad2a55a8fcff8a6a1b971be660aa4c2954ab7d6e89bebc431036e349edef74711292f9f64b1dbae SHA512 9d31e3e76e8c861309a3579c21f6da5fd6b056c7d7a350427445a1a832e8827204804783f7f9b808acaa2148efef883d9078bf84943b1db55526bba5bf5a2756 DIST zeroize-1.8.1.crate 20029 BLAKE2B 092eba034cd35ec47290020e0c2b213177ff5dbe14ab9e7f0b4ef3cb1ecbc42fbec2b951414e26ab00bc65aaddc2c93eddd5a1963b27c6cd613ac71c65d5cc24 SHA512 dd40ebe98b98fd742608d4066b5ab66caba94b2e679428fcaff9fe547d8cd6ff2360dc85d671ee9183e32fb79cb554d00d6aef9eb8f3d8ad0ec92d0435aa4ebe DIST zeroize_derive-1.4.2.crate 11141 BLAKE2B a40add656369a3a40d5b5f3397a77a1e9f803d4b8ae5b7d51c9f2ebb332a289b3c1ea528655806a26998e081a1cc9f4b07828664542de8d8d2619faf079d25c5 SHA512 d6966b024ce5e265c93e7056659ccbb97bbf6baa30f759fd96dc4391a6487426637f61f0a2713b6160019d778cf7d8ff1f25bb33d6c4f4585b990baae418b226 DIST zerovec-0.10.4.crate 126398 BLAKE2B b078784d6f178bbb9de1c3c1b6c7ef996f00bdd7dfd2924bda921e62f3e09e953fbf50f8d0da99ac6ff6d134f146253846f5663549dcf8df08eaf34b9d4016b3 SHA512 db12bba1d7476ddead92e6dfcdcc30e2e0defff4f263a740244eabee265a2cab265473a663d3dc3210f48e113b66d951da496dfab7965ce1bc792e5f2db422a0 DIST zerovec-derive-0.10.3.crate 19438 BLAKE2B 9f7df8a4e4a0b62ab25aed967b26509db4bcc5d5b10b3bd73305099a4c49a60be8921484ced1a34d9b7ae30ffa5abe789686f432416a8f1cfc07de1db1dff594 SHA512 caefbffeb35265db9f74933bf07109d57f0da48156cafd4f330af78a5c7eb9ab0831a80789ad4fb119875ebc6cfd7e3de68c9984b77dca5151f9be41f1ae6e09 -EBUILD rpm-sequoia-1.6.0-r1.ebuild 6088 BLAKE2B 0a8b8d3c51e1fe5fb1bd7ed11a3deeeb4d27a21c53f680e681971a992b04597bd442614d680825a970f58ba5e8aedf16f55f544982e29b02f3b0e6cd9c6ac71c SHA512 b5806cdee5bfd4cc7e041470f694710c6585f969757501c7fd15da423c9e7b6d951a1005bae1a0833d75b523f13b7a0857499ca604a5581c538c0d01aa226034 -EBUILD rpm-sequoia-1.7.0-r1.ebuild 6271 BLAKE2B 42b3621c0832d6605dcec32341dfda6999a1ce3c3981c3ce64360404eaab550b4bda5f0c0503a704b3e58f5f957598988fe51bf030785e6627e612c09dae3c6e SHA512 bfcf7c2d75262d77dba6342b63626d90bcb996642a1209da1125d1bcc90d317a3009f69921cb3bb424b0116d77116fb91f161c25c2374b024fd28b8ca4425b77 +EBUILD rpm-sequoia-1.7.0-r1.ebuild 6274 BLAKE2B 5d4f3c382474234cf109d482e39f5f7f5bb081751c7c92a367b21fb28bea55a5088004e1d2dfa0fc430890ab41cf94eba38ebd63c92b7a0b405bab505c069cca SHA512 9490001200577799eed6d5cd0e18565125faeb71cc57df77dcbb99e63b8640171ba1a4b009f0443edf162bcf979a53c10d115ff96a7ca9b88ecd2cf919bd8f79 MISC metadata.xml 677 BLAKE2B ef639f0cedd83cf162d928db6409331c199ee34e8a9ba8b1861d1b5ae22d79eb586e9c7c6725910aeedaf5f5a06a7477677062613f376db262b12bd6c1c2cba6 SHA512 478ca30d1961b6dceb053e1afb04a1d57e3a9bc8b7de003367b7d111c4cfb675dfe803a973c6c368bb8541d66d23b91e67733177820d9f0d90c2d7ffeb3c0fb1 diff --git a/app-crypt/rpm-sequoia/rpm-sequoia-1.6.0-r1.ebuild b/app-crypt/rpm-sequoia/rpm-sequoia-1.6.0-r1.ebuild deleted file mode 100644 index 4164ea3ae292..000000000000 --- a/app-crypt/rpm-sequoia/rpm-sequoia-1.6.0-r1.ebuild +++ /dev/null @@ -1,305 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -# Autogenerated by pycargoebuild 0.13.1 - -EAPI=8 - -CRATES=" - aead@0.5.2 - aes-gcm@0.10.3 - aes@0.8.3 - aho-corasick@1.1.2 - android-tzdata@0.1.1 - android_system_properties@0.1.5 - anstyle@1.0.4 - anyhow@1.0.79 - ascii-canvas@3.0.0 - assert_cmd@2.0.13 - autocfg@1.1.0 - base16ct@0.2.0 - base64@0.21.7 - base64ct@1.6.0 - bindgen@0.68.1 - bit-set@0.5.3 - bit-vec@0.6.3 - bitflags@1.3.2 - bitflags@2.4.2 - block-buffer@0.10.4 - block-padding@0.3.3 - blowfish@0.9.1 - botan-sys@0.10.5 - botan@0.10.7 - bstr@1.9.0 - buffered-reader@1.3.0 - bumpalo@3.14.0 - byteorder@1.5.0 - camellia@0.1.0 - cast5@0.11.1 - cc@1.0.83 - cdylib-link-lines@0.1.4 - cexpr@0.6.0 - cfb-mode@0.8.2 - cfg-if@1.0.0 - chrono@0.4.32 - cipher@0.4.4 - clang-sys@1.7.0 - cmac@0.7.2 - const-oid@0.9.6 - core-foundation-sys@0.8.6 - cpufeatures@0.2.12 - crunchy@0.2.2 - crypto-bigint@0.5.5 - crypto-common@0.1.6 - ctr@0.9.2 - curve25519-dalek-derive@0.1.1 - curve25519-dalek@4.1.1 - dbl@0.3.2 - der@0.7.8 - des@0.8.1 - diff@0.1.13 - difflib@0.4.0 - digest@0.10.7 - dirs-next@2.0.0 - dirs-sys-next@0.1.2 - doc-comment@0.3.3 - dsa@0.6.2 - dyn-clone@1.0.16 - eax@0.5.0 - ecb@0.1.2 - ecdsa@0.16.9 - ed25519-dalek@2.1.0 - ed25519@2.2.3 - either@1.9.0 - elliptic-curve@0.13.8 - ena@0.14.2 - equivalent@1.0.1 - errno@0.3.8 - fastrand@2.0.1 - ff@0.13.0 - fiat-crypto@0.2.5 - fixedbitset@0.4.2 - foreign-types-shared@0.1.1 - foreign-types@0.3.2 - generic-array@0.14.7 - getrandom@0.2.12 - ghash@0.5.0 - glob@0.3.1 - group@0.13.0 - hashbrown@0.14.3 - hermit-abi@0.3.4 - hkdf@0.12.4 - hmac@0.12.1 - iana-time-zone-haiku@0.1.2 - iana-time-zone@0.1.59 - idea@0.5.1 - idna@0.4.0 - indexmap@2.1.0 - inout@0.1.3 - is-terminal@0.4.10 - itertools@0.10.5 - js-sys@0.3.67 - lalrpop-util@0.20.0 - lalrpop@0.20.0 - lazy_static@1.4.0 - lazycell@1.3.0 - libc@0.2.152 - libloading@0.8.1 - libm@0.2.8 - libredox@0.0.1 - linux-raw-sys@0.4.13 - lock_api@0.4.11 - log@0.4.20 - md-5@0.10.6 - memchr@2.7.1 - memsec@0.6.3 - minimal-lexical@0.2.1 - nettle-sys@2.3.0 - nettle@7.3.0 - new_debug_unreachable@1.0.4 - nom@7.1.3 - num-bigint-dig@0.8.4 - num-integer@0.1.45 - num-iter@0.1.43 - num-traits@0.2.17 - once_cell@1.19.0 - opaque-debug@0.3.0 - openssl-macros@0.1.1 - openssl-sys@0.9.99 - openssl@0.10.63 - p256@0.13.2 - parking_lot@0.12.1 - parking_lot_core@0.9.9 - peeking_take_while@0.1.2 - pem-rfc7468@0.7.0 - petgraph@0.6.4 - phf_shared@0.10.0 - pkcs1@0.7.5 - pkcs8@0.10.2 - pkg-config@0.3.29 - platforms@3.3.0 - polyval@0.6.1 - ppv-lite86@0.2.17 - precomputed-hash@0.1.1 - predicates-core@1.0.6 - predicates-tree@1.0.9 - predicates@3.1.0 - primeorder@0.13.6 - proc-macro2@1.0.78 - quote@1.0.35 - rand@0.8.5 - rand_chacha@0.3.1 - rand_core@0.6.4 - redox_syscall@0.4.1 - redox_users@0.4.4 - regex-automata@0.4.4 - regex-syntax@0.7.5 - regex-syntax@0.8.2 - regex@1.10.3 - rfc6979@0.4.0 - ripemd@0.1.3 - rsa@0.9.6 - rustc-hash@1.1.0 - rustc_version@0.4.0 - rustix@0.38.30 - rustversion@1.0.14 - scopeguard@1.2.0 - sec1@0.7.3 - semver@1.0.21 - sequoia-openpgp@1.17.0 - sequoia-policy-config@0.6.0 - serde@1.0.195 - serde_derive@1.0.195 - sha1collisiondetection@0.3.3 - sha2@0.10.8 - shlex@1.3.0 - signature@2.2.0 - siphasher@0.3.11 - smallvec@1.13.1 - spin@0.5.2 - spki@0.7.3 - string_cache@0.8.7 - subtle@2.5.0 - syn@2.0.48 - tempfile@3.9.0 - term@0.7.0 - termtree@0.4.1 - thiserror-impl@1.0.56 - thiserror@1.0.56 - tiny-keccak@2.0.2 - tinyvec@1.6.0 - tinyvec_macros@0.1.1 - toml@0.5.11 - twofish@0.7.1 - typenum@1.17.0 - unicode-bidi@0.3.15 - unicode-ident@1.0.12 - unicode-normalization@0.1.22 - unicode-xid@0.2.4 - universal-hash@0.5.1 - vcpkg@0.2.15 - version_check@0.9.4 - wait-timeout@0.2.0 - wasi@0.11.0+wasi-snapshot-preview1 - wasm-bindgen-backend@0.2.90 - wasm-bindgen-macro-support@0.2.90 - wasm-bindgen-macro@0.2.90 - wasm-bindgen-shared@0.2.90 - wasm-bindgen@0.2.90 - win-crypto-ng@0.5.1 - winapi-i686-pc-windows-gnu@0.4.0 - winapi-x86_64-pc-windows-gnu@0.4.0 - winapi@0.3.9 - windows-core@0.52.0 - windows-sys@0.48.0 - windows-sys@0.52.0 - windows-targets@0.48.5 - windows-targets@0.52.0 - windows_aarch64_gnullvm@0.48.5 - windows_aarch64_gnullvm@0.52.0 - windows_aarch64_msvc@0.48.5 - windows_aarch64_msvc@0.52.0 - windows_i686_gnu@0.48.5 - windows_i686_gnu@0.52.0 - windows_i686_msvc@0.48.5 - windows_i686_msvc@0.52.0 - windows_x86_64_gnu@0.48.5 - windows_x86_64_gnu@0.52.0 - windows_x86_64_gnullvm@0.48.5 - windows_x86_64_gnullvm@0.52.0 - windows_x86_64_msvc@0.48.5 - windows_x86_64_msvc@0.52.0 - x25519-dalek@2.0.0 - xxhash-rust@0.8.8 - zeroize@1.7.0 - zeroize_derive@1.4.2 -" - -LLVM_COMPAT=( 17 ) -RUST_NEEDS_LLVM=1 - -inherit cargo llvm-r1 - -DESCRIPTION="Implementation of the RPM PGP interface using Sequoia" -HOMEPAGE="https://sequoia-pgp.org/ https://github.com/rpm-software-management/rpm-sequoia" -SRC_URI=" - https://github.com/rpm-software-management/rpm-sequoia/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz - ${CARGO_CRATE_URIS} -" - -LICENSE="LGPL-2+" -# Dependent crate licenses -LICENSE+=" - Apache-2.0 BSD Boost-1.0 CC0-1.0 ISC LGPL-2+ MIT Unicode-DFS-2016 - || ( GPL-2 GPL-3 LGPL-3 ) -" -SLOT="0" -KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ~sparc ~x86" -IUSE="nettle +openssl" -REQUIRED_USE="^^ ( nettle openssl )" - -DEPEND=" - nettle? ( dev-libs/nettle:= ) - openssl? ( dev-libs/openssl:= ) -" -RDEPEND="${DEPEND}" -# Clang is required for bindgen -BDEPEND=" - virtual/pkgconfig - nettle? ( $(llvm_gen_dep 'llvm-core/clang:${LLVM_SLOT}') ) -" - -QA_FLAGS_IGNORED="usr/lib.*/librpm_sequoia.so.1" - -pkg_setup() { - llvm-r1_pkg_setup - rust_pkg_setup -} - -llvm_check_deps() { - if use nettle; then - has_version -b "llvm-core/clang:${LLVM_SLOT}" - fi -} - -src_configure() { - local myfeatures=( - $(usev nettle crypto-nettle) - $(usev openssl crypto-openssl) - ) - cargo_src_configure --no-default-features -} - -src_compile() { - # These variables will be used to generate the pkgconfig file. - PREFIX="${EPREFIX}/usr" LIBDIR="${PREFIX}"/$(get_libdir) cargo_src_compile -} - -src_install() { - newlib.so "$(cargo_target_dir)"/librpm_sequoia.so librpm_sequoia.so.1 - dosym librpm_sequoia.so.1 /usr/$(get_libdir)/librpm_sequoia.so - - insinto /usr/$(get_libdir)/pkgconfig - # build.rs sets the output dir to be target/, so don't use helper. - doins target/$(usex debug debug release)/rpm-sequoia.pc -} diff --git a/app-crypt/rpm-sequoia/rpm-sequoia-1.7.0-r1.ebuild b/app-crypt/rpm-sequoia/rpm-sequoia-1.7.0-r1.ebuild index cffa19bf99f0..f0b7a9643866 100644 --- a/app-crypt/rpm-sequoia/rpm-sequoia-1.7.0-r1.ebuild +++ b/app-crypt/rpm-sequoia/rpm-sequoia-1.7.0-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 2023-2024 Gentoo Authors +# Copyright 2023-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # Autogenerated by pycargoebuild 0.13.3 @@ -248,7 +248,7 @@ CRATES=" zerovec@0.10.4 " -LLVM_COMPAT=( 17 18 ) +LLVM_COMPAT=( 17 18 19 ) RUST_MIN_VER="1.74.1" RUST_NEEDS_LLVM=1 diff --git a/app-crypt/sequoia-chameleon-gnupg/Manifest b/app-crypt/sequoia-chameleon-gnupg/Manifest index 74cea55ecc72..765d2ef68d37 100644 --- a/app-crypt/sequoia-chameleon-gnupg/Manifest +++ b/app-crypt/sequoia-chameleon-gnupg/Manifest @@ -15,7 +15,6 @@ DIST anstyle-query-1.1.1.crate 9891 BLAKE2B c298114c1864a5233fb39c365e079a7f1f4e DIST anstyle-wincon-3.0.4.crate 12234 BLAKE2B 23294d6ed7715c55c8f796eb7b860450c57b22b57e32a5c75847f2e2bd68a52b33c24797db662aa5fd7e799b9644075c8c939d93b0cf8598b16ee80fc817b77f SHA512 24b3a9a44382609ad449425a657d4b42a792d4703c36e0953f09a03817759c266a2f0ff4ecc9e8b93ea8403df2badef1f1af6a6e50af56205176c41b13501ae6 DIST anyhow-1.0.86.crate 46741 BLAKE2B 21b1f3acd1c1b659e6e9a53693178de67c806d7dbad30dedea0fb7078b2388baa196d1e7240a7dc88ed9dc93ee4c00bca8e608dad1b6bfb5bfa4f4c5ab51f0d3 SHA512 3853da32a2c53d73969bb29a1e622f3a6d5832d8888dc6bc8eedb76394b392f983aa3fcb1f542933e238841486106f0f38e9a2400c12c7699baba0ebe1d8193a DIST ascii-canvas-3.0.0.crate 10575 BLAKE2B fc40c40551e3e1b2bec6ae5a85ee8b0a1ab1ef3425cdd19ec6dd47d849205004781a2c8f51470417fe7556cf8524cc63b84a532532c5081604adbcd92d286b44 SHA512 216056640604f5faba6d46e2c94ff75234fec83d3bc2dc7cf34dd279706362874e3a513c717b23bc591da07cc3088458913c4e9aa5f280550c93d261095c8703 -DIST async-trait-0.1.80.crate 28775 BLAKE2B d95384a8828c9273e0f295d3c3826b3a8716cd0c4ab39bdb43d65ec57fe886f7c5926c1666a76ca25b1536eedef61b0d92c78ff9c8a52a0515900360b66b0f13 SHA512 3e92bc8d38feea49ebb5011303e55853bbbf5d0fb7c4f6ed6aa471b9000a2a0ea5475619f98831641e8ee484beaa6fd8880770a96b8a5a7df26e392c1b4b3a19 DIST async-trait-0.1.81.crate 28896 BLAKE2B 154e6b8da082193832bca7bbc097eb5ee25ed8365d1cb8dedf27f62fbffc710cfbfd0094a200a10399e942014083b74f521dae01cc4601e0f6b9d7364761fce0 SHA512 1fabbaa813ba320012c0bad54d27232eebca4d3fff1cc5ed771df9f90d9e9bfaca4f7b018358dc599fd30c5974d00b34ffc05ce6e9151a57ba572543bff83fd0 DIST autocfg-1.3.0.crate 16524 BLAKE2B 7d5a03853d6b4f0da08d8e139fb200da21e47fa7e50d1956270d0ff0cc496f660f8f800122c95eee9ba98d9210ab200c3010b782097483d12d6be4ac0df0e7c9 SHA512 a5570b955d57a7183ba148b335837dc5af24b202e80681027536d33fe2822509ba644fc70c29f018c893285ced2bf6774f44ca6c59f7c7e2226d5349cf7c3635 DIST backtrace-0.3.73.crate 87617 BLAKE2B 585eebbb44671dfb3ff088092f62c7b25118ffc34e148b9b6ac67707923254ea43056861e2658c5fac7b9ed16fa56c30e7734e976fc3178f1fc03912d1d44c40 SHA512 dacedfd32cb91fe408e4f395441baf09c0a4b3bc4ba8f79d088359455cc903c93d24969567c7c5b2feb806433ffbb63a526d73f53caa4bee9c51961b61f831d9 @@ -34,14 +33,12 @@ DIST botan-sys-0.10.5.crate 8245 BLAKE2B beef1579600f7fea44b7a701cc29b2f530cd1da DIST buffered-reader-1.3.1.crate 63723 BLAKE2B 7a7553b5994c01666c95a678712005ed3c02fbf8f0b45d80f2e80b2bd46c5993376b16f5d89d50a7cd915aed9da6dc164901c6e62091922e615bc8b9284f3328 SHA512 4b7efde96c2db48f8452e56a904b1fc865b7317bcc324c10c0a23147b96eb14cd5097b3178910a1a74d54948b50d6499fa7f5c8630274a80ff05f1eeb2c7054f DIST bumpalo-3.16.0.crate 85677 BLAKE2B 08da17b757931d2910e0299df53eb62731aa8c4ebd8915859b81d1982b331e7455dfac977c754e500a35ee07ba8eff00a61d2f62be99744e2ddbba06c1268f49 SHA512 a51b75c36f6794db444cab20eeb24f42a319080ecb486a56d254d6f873f3d188b5ccba11db30c068bd0c52c4322d4a3f5f5195c81c94b0bc04387030418835b1 DIST byteorder-1.5.0.crate 23288 BLAKE2B 7f85a7948406844070a2c8202e0bd52f73b3dfc7c666a97046128044eb9352195afb80e2bf894c0742ad109e4473339de1365d09591de70dfec6c8c02a8e1453 SHA512 96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f -DIST bytes-1.6.0.crate 60605 BLAKE2B 3e4cd094443969c6062b51917ad9df314b61ec9ddcb0336cf2621d8966c568d5b1fdbf16b11b5e2fab01b43ea76f6609f753eb5c2380a5e4aa8fb6e807a2ff5d SHA512 6507bc4274204d0a19b6a95c3284c52245c71cbf5f2dfb5cd372193d989e49869ec557c0c4e449e96ed4e3028c90606dfb0dcdc1d72bb234a36bc5f344c0a7a8 DIST bytes-1.7.1.crate 63623 BLAKE2B c399f7f25b85ac284bd2f139d895838eeba7deb56d109c8579966be4b8a7a56bbc26f9387bd0bef9fe5449d5e2ae8d11b254a7ef93048a4827d945ddddb5ce09 SHA512 04cb5bb1718ee378be1d9d56aef2d117ed561935ddadd78139ef2839f998e92c88369c79560bce9d23246a3ebda1dc888af373f9ad4827a0b9a249379bc71e81 DIST bzip2-0.4.4.crate 34197 BLAKE2B b69f8ad38b44eb4912b33d53467492b0ebe6ed740451bdfe9133e71c47a8dbd85b1110a9607c4cc627fbabc44cd86fe0396bb545864632ffb6169f9cfa547b6c SHA512 9cd2b9159bd0b42ac908ecad41f0a737272af94ae0d6dcfe182d2f44bcea4632d32b0456f02322047ea9d6f46377db6cd083f468782bccd6126bcc75cb852555 DIST bzip2-sys-0.1.11+1.0.8.crate 633444 BLAKE2B 01578c512443134fc786669bea4f2ec4b9c457b9936c907315299d8b67ed78045d458c83ccc119f0fad511529fb5af5feff5fa2d983fdae832d2fcc1b343e102 SHA512 d0a86b9f03acb1e4e309d5739dc2e88cab582757d467a433afe0017017f0e5d2c0282529e3a117160958ed170d8d695ecae739805888305df0e35e4dc440582b DIST capnp-0.19.6.crate 143197 BLAKE2B 39ac9a96351609e6ae57cdc44798444f99be346366756aabf5b9499709650795783cb826bc105be27b05b03104a902b4870420f5fa534f6a4f216642d9b6d82e SHA512 1fb8804b86fdb85f70681203261b16993cce6be720968be757c53c836c536d0a1a231256c523b69f8e4f1c8f0db4fd5edaa0394cc95d16d53d57cbe07632baf6 DIST capnp-futures-0.19.0.crate 12275 BLAKE2B 86eb409ce0ac5b1340572cd3ac0c79c4ae4db8418b3a6183aba5774ebc3f7e7c3d6d89984201e93f29a3f11f70ed2a38bb4a47816495967e2339fdb0474b68e9 SHA512 3db50310d40921d082b09d99dd2ecff1de901ac64672236d9c32f28858cd7e0beb377cc129c83f791c2b87aaa6d0ed2cac26a852244010d1970597afb23b4316 DIST capnp-rpc-0.19.2.crate 93175 BLAKE2B 5affd8e2bdc11e734ace094b8e9bd811f06af341c871c800fd071a7dd5116a9d5ba3d4b2beb7ef900f2c8bdd50b1187f100518de75925abf973fc052199458af SHA512 08a9e766289f9e849ee56cff527e84c4a8d4afb62ebcd554402ab67d71b53c53797fae61d3930aeab50b0e0976663aac7ba0a7fe8b9ba3e29265423ffba8bc84 -DIST cc-1.0.101.crate 79446 BLAKE2B fbecc04723577abd209d16c34269b5ac2652fbd5385838190c744abf573912fa7a062e2fcf1dc76486c5b61677225a826a65dbd6eca58398ff60ddd1e47a3caf SHA512 6edaf3dcc2e58dffd7221a6b457057c83bdec03b6fad9cbd2d702af6820fd8354fdb3960cd78d8b38568ef408171354f0313f17a32f0caa64f97736c0840a148 DIST cc-1.1.15.crate 83085 BLAKE2B 14077692d5fc47afc59b44227353aa24d91708fecd316b058e553940e6a9b6c8f148115cde2b7d6cb2a3462f487aa3b45bd670a2beab03f677e4bf63a06fc3f7 SHA512 2f1e4f3a4dad3638f680448520e218e3c984a7c13c3984d620949a9d3c4f13d68b3a0749997dace1e43faffe3477ea15394bd4e32a959bd56e3c35c27a4aa4de DIST cexpr-0.6.0.crate 17966 BLAKE2B cb46f066eb1f4dbac00ec86dc3e562db7ee8ea5ff17d16a60004fa020405e455b8aeb3d001f669cb33d1b62525bfd04ec657ffca4ed44a83af4a5e75b2c820e3 SHA512 766bff7ca7f9bf0885aee6f014bcfc084e7fdfcd567a49443d5340acfe8f257db109de17b24588504fc35c53f2d4303e2d22da21f73669125cfca984950cf886 DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff @@ -57,9 +54,7 @@ DIST cmac-0.7.2.crate 44847 BLAKE2B ab8539f41e720f132b2da3176e9c533a2309cbb3dcdb DIST colorchoice-1.0.2.crate 7924 BLAKE2B a4027d5f870b4d9a718ac3f9d89ce04e2ed38406658c4a55ffaf39ed0cb1ce7e1c691eb56c66596b519ca82309e8ec7eebac65e69394cdd277f44f9b6280d560 SHA512 f34d5f66f84e90f473b6b9a62a61a59575e712d3e9b140324683f80af42d40c1d079701aa2ed651d0dd95a5ac8838e1f6f6c034e2adef79509d32357b8093117 DIST const-oid-0.9.6.crate 45382 BLAKE2B ac27c689784fbb1f486cec1c17502c8738ce3d7d1b579391a151cb0f0a6a0c8335e474d0a517c59230fcac74317396f20ac15d66e2f6685780be01dab197fd96 SHA512 b871d3b4326c4828b1c1d7a3e968315fa320e0b52e97081a95617ded0dc5b93d42b3f79ad26ff3b58a4835dcc442473f3965c2b60026412ad6aacc0c23e9f399 DIST core-foundation-0.9.4.crate 27743 BLAKE2B 5b695e671cc833170bc6bad436b2d0d8d386ffb8181bfcf2e92a1d93cee67c3ba1768cf57064fb91b0897c6aec1be7db40b5bd256a052c1bdaf872ec19f6e15e SHA512 82d0878a1b9e3d56b3666fb5a78f92c6f7806d01665c242c06a640bd6b1fd36260211e92dc05e1a16d1430622bfdd650aabb0b5bd8e5592f74abdcf412448e33 -DIST core-foundation-sys-0.8.6.crate 37629 BLAKE2B 683d5a84b6a3816317f87359532a8339f08bb4043f1d70a8588636eb5dbe6ebb3843e2a12d9a7e5fd1637a912c52a5aefbb8d44796330b09593e7adefd3babd8 SHA512 24a8958cb16b081862a9000affb0147b8b3be1a664b834c3dbddbff03e709de3f4060ff4800e5a35453f4392ccf33168e8b864be71b17be38cb264a39b915100 DIST core-foundation-sys-0.8.7.crate 37712 BLAKE2B 0e1dd99a5bbb0fe92f55181a37426f6e86445cb20e355f553b3162c88ccc075644461731a0cdcd93dcca65b6cef1de62b409afbd73ba3070a199ab8e7422dcfa SHA512 17492d5314db03abdb3b1998bf0c396ec8ed0f83bc978ae22d6026afdc86c50b58cbac073b3a0d97b92da7e98be11302faf1249d24313494bc058add4f4cb63a -DIST cpufeatures-0.2.12.crate 12837 BLAKE2B 5b518c58c548d9116f94cefc2214fe2faf87c3aaf3fffbb0bf4085f75372cf7fc5144bc3f827101a3a14a51363d06d8075db94ff5ed853ab2ccffaf597728093 SHA512 52742595702fc3371d4126fb355f3d7a6da514a94e43170f1db041cc6c560027f92115eab7846131dba1018ca5c72003ae36f945c1de88d57a0e7f66331623c6 DIST cpufeatures-0.2.13.crate 12999 BLAKE2B 4c49e01e91fff33c61bfae48a07a9d76a69565840f5a12399a3515f6e6808743dda0d4c6877feabfd276bdeb05c285daa3bce6062a87cc3da50bbe3b6c0fe1e3 SHA512 e961ccd9fc001cce661b6360b18abc4ce2daa4080eb5fd84dc5704d8d5ddb6ce6cc66b5d42440bffdda03137af9c5ba20b6793130692168e7e28729841c3f352 DIST crc32fast-1.4.2.crate 38491 BLAKE2B aaa3acca66e5814a45f12a90ae09f6ff5fc14ca94c8539184dab6ed928abc68cd1d37e539c268c1effd50ab3af20de6038593fb9c6bd6a664785dac52f6939fd SHA512 c7608d33022062e217d3576f536ffbd51479855a5e5874529c71db2bf6a937ce04d814c39cf777309c38445393bf43cb9996161947e28738abd432f11beb7266 DIST crossbeam-0.8.4.crate 10500 BLAKE2B 03212d9789a66c1eee7d1f4c7883eec1267089ab9d652ba5d7d59a22e04ab878e5defeccf8cff4587a34d976488ffa689bffde596588057d814b633ab3d67d1d SHA512 63650fe2d46ff2e593342b398c153facd3cb7cd72dac9b057ee0aac5ef5e9dd9df0e71536d66879676c0edaa89787d1f365eea35c82604ca46090e527749f994 @@ -76,11 +71,8 @@ DIST curve25519-dalek-4.1.3.crate 306017 BLAKE2B 0c02e769ae48e6839e37e622fecb8b1 DIST curve25519-dalek-derive-0.1.1.crate 11723 BLAKE2B 442b0e4fc519f233d3fa46c17c2e25807374360bd6576e97b4ec33e6c2cc228bc917e4e395a1d70aa19be7bae57db36d2c09c4c7d505691b53d5a624db67eb6e SHA512 60861002465d2ba12a6089b31fcd7a75f7a6d77319159d5383f29e857adea8cb7e5c9c0ab6977c8cfa34b60e1012a1a5dec57f637e6a225e60269ff49c25b29b DIST daemonize-0.5.0.crate 7125 BLAKE2B 9706f4ffb140533f73fe520755a06ee909fe1768e3f2e9b553acd2c1b80bcd4aff152058d1d70fb1ece7a7de6059cefa9d2db0fadf493aae641e1445e3c6d686 SHA512 8ab439f3cb43a83a84ff11fed4ef37adaac4ef5a83e497e8d6ad06ba1f10359366eed9741a07f3c97f3c83472da5513b5e28b6ded4b4b3ca9a1c536b7de62921 DIST darling-0.20.10.crate 32031 BLAKE2B 038c2a4d919a8e9ff6eff5f83911b40cf4e918ac27c90f313b6b9131c41770f83cc3901973fea1c6fea2886a8360f3c5cf73b807d14e579b8b8e87f15e3bc6dc SHA512 7a14eebc20e48fd39ddf7b8376dc937a04f561d723aba864432cabd5ab46eb189706b43e5121a7f4fb0d68dbfd044353875bb479d4bd5cd96b76e3571733ce55 -DIST darling-0.20.9.crate 31777 BLAKE2B f27b62e098461bdda18cbd78682e5d99d4f319ffca91cf9153c4aa99a55cbf91868a1fdb68b06910eaf12501f9f1bc0e2515375e6c425cd998052640b1e9af58 SHA512 801671ff5d63af09a861ef5c260c98477a49a75084ed4aabd2be2b8b5a01c742f106a71b94872a64ff2b1ec8f4e95809f334f0471343c9802549ebf2899a763d DIST darling_core-0.20.10.crate 65015 BLAKE2B a94adcc6092a7a69728725ec4bf4cb7c163bc3fe0890f272bba9963c256697bbe1ad964d58a975c80742019c59d4e1b3e56e624f938576996e216d2f99e21f2d SHA512 2b971156b8c1433dd0ddb2213ee522e2fe9968a62889285d1457b5e733daa70a09c21bca9b8573d9c742026b4c06f4dd2025a6a196ec0b08b25a78d8737dff6d -DIST darling_core-0.20.9.crate 65014 BLAKE2B 27422074f55ebc413ec893c27bcefec2cb4bd26156d272e637a1530ff63694a43929f55bd87baa517dba683ad6f24f97e097dd69e0407e24f656cf673c2ba07e SHA512 2c24469b2836139566713da59a3c2e3cf9cc7c1a01baa571cd59ae8a25b9c0a42bd9bd8ab7a9dae95cee2a46c344aef2c36792c05c799f195afb1925d82b81f1 DIST darling_macro-0.20.10.crate 1874 BLAKE2B 29cbdc6bd63e4eb0731c8f8f0a50cfcae9a88f116f8cfc0068e5d3cddc20b42b7f0f20f128ffa0f7bcb8d72f0188b04b3838b8327fa6f3ab45de4cf5c3bbf317 SHA512 565b8d535248d9d88b49a58e2a210ecc70f1cd39bfaf029ac6576a9b2eac70a6b18b4930aeca746d76d53b745c6aa82172bb341c4844b3757fc7978732fc2f52 -DIST darling_macro-0.20.9.crate 1875 BLAKE2B 80ef248c7699d7c6d45e0ff3d4828175c7c15967272cbdfd8a91037b57911c4c264b46bd6369da53e45a0970de2e9c8d7f7e13a1788c0e8069d01cc026ce83b4 SHA512 16ccf4b30b413377249fe7fade5976bb5230500783e784d765e7920b46d5f9cbc3c316dba6c8d5a23e82ab28509b31406bfd265caebfa9f127017fa2881c39e6 DIST data-encoding-2.6.0.crate 20769 BLAKE2B 9d5713e63f6f6a4d6e5324fb0be9308a231ccefa20d69cda9e19609a2250e2cd72030ec28309068f71c932327a3ef680b749125658e27d35273354c3465f9931 SHA512 a685c7bbd251a5738b27ac3ac8121a0db049221510c99e0ada6f245ed7499d04ec29d725ad01c688ad283e3d2d5aae0751685c804f6d95cae84e63a160d04c9c DIST dbl-0.3.2.crate 6336 BLAKE2B bb912351efaf270363c2a6cefe4da42ae8c6a552690b566e5a7b70115721efd2ef42801500d534de0245b6feff5b6895bed74924c86eda3c5e9a5322f32e1392 SHA512 efed499069e1eacb709598b9a250be353d65dd9a1a27c7fac6d23af6262af0fda60b121c283b9318f301be2d80194ec1ce33733daa554f54ed3f690478d37cfe DIST der-0.7.9.crate 85173 BLAKE2B f2dcf402e3d8b6a7ca818a8f260e0996290c77517b06bba8b22849c4d0e0c8f3dd57d664a06d9a7bfb1da6a39abd0740cd7d9776e75669aa970cc3ef63f924d4 SHA512 6de996346365647ac0da23d3fa9c72100d665c9225dc2f0bf1f553c4f0e7eb5c6acf3f1e36a11a7cc20e8b1c44752997e6f592c1d142755df145c5e302800f5b @@ -109,14 +101,11 @@ DIST equivalent-1.0.1.crate 6615 BLAKE2B 302d78069d9df05e78b53f0488a9e4eb98fa2bc DIST errno-0.3.9.crate 10690 BLAKE2B 8deb19cf0c830ff2adebb733ab961558cb4463f256604f9c76d5c5952f34a79b70dce47e28f68f459977ef34d4821ab5d0f7e79a7a110693700f80b49ba56651 SHA512 777fbac5730d420d58275ef63b7579997d8e6c72106d483ee1e3b1f1ce3977f1f66c56870a05acaa4cfacacb820eaf963e9c763748759cff3668fa2e6f89f04a DIST fallible-iterator-0.3.0.crate 19639 BLAKE2B 58b8fe842fd6514fa4327eacc81b157a4a9bec4ad9b8e69248c0f0aa5610dbddb9c8a72e6e6ef9fb8216e8f79e6aab439e90d4d527e35634ab222347cbe39974 SHA512 c655918fcda5deb8ce792708509e4959139f113c1006dd41b94d7073ffc204512a22cdeeee05c87534db9c414da3f4eb716e1a26970646fcb1c139a14eb8a2fa DIST fallible-streaming-iterator-0.1.9.crate 9249 BLAKE2B cc4459b34a9ad00552a5248d090d1f25804b92838f41131e475abb83ae0b89401248feeb52a49dbffd499ccc0ba0f2f1d044f2f3e9b06662be01fe2257a4e885 SHA512 34824e2007cb944eaf54b10d6d3885bb17ef2a2976c6dd7695ff82a937cc95eb65d343dd7a5cd2fab5aa5859faae3352a9e1c78f239ff736900c1dbc3f5ef7dc -DIST fastrand-2.1.0.crate 14907 BLAKE2B f96c74c1da31bae35e5ae0a557b3cdf120099cd7f31475ff6ce0eddfd8d30baeb025cd17b661f452cc4d3fedde763621301545e28efa030b3be21d1d9ba8d0d9 SHA512 ce776a3d0fbc108017c93ce9bff7c9e7e65590acb149dcd55c2f349d2077ffdf5ac6427753732f60cd7acf141ef6f89359b2e7d9368016be53b24e8703e71104 DIST fastrand-2.1.1.crate 14983 BLAKE2B a4535b1612b103376fe64d71a393f7bfc37668c574d9122ca90a631aeb91cf0895bb030e597b79a80a4a37ea4d514c4c0836332030bb10a60bd971573a6d6ee0 SHA512 9a51185132c1c89fc31af463c664e996f431e607ce96676b8301f28ff11a99661d18025dd460e3332e373af68d20017d96481719746fc3c5de742d08d63aba3e DIST fd-lock-4.0.2.crate 13675 BLAKE2B 055e7254c6ea0185a099cba229c15a1044a6c0826eb6151e990134c816be4dd26bb8ab41631be8650340bacc16324a706656d2901c3969354a854216ad3cb306 SHA512 acc5aaf6e89169062c1c59d5258b590d4bde21a35f0acb7da2e3167d0668fa678d1febc305e32d95329a7e5bdb784fadb9b85417a5e4e5deea53d59f05bea74e DIST fiat-crypto-0.2.9.crate 495390 BLAKE2B 9201d3faedab8c73b606dce70d65d1138f5fb29e480d56b25cd66a8d2a150fb6d946c9e0ca98eaab0227490cea288b4c78917ccfb6693022d70d74dee94e6e78 SHA512 d916fe8ba3e82a365d20485b93c36994363059dead84c0266b7bfa0bcc74122d71b4a5c8689226c0e1007e7e01fc6f6c76e8687ae14fcc38f6f159287810f510 -DIST filetime-0.2.23.crate 14942 BLAKE2B e4d2d9c11745dfa5592903f3c3c6a9871292a02f9862607b610ead7562b5d1fc3b64d37e779cad0630bde8012efda72d86af5e687cd2ef5d3627d8a89bca517c SHA512 8d5ac82482758577d1d0669abbe7b880efc44958687bba745c9ee4a5c16bddb44ec0fbe9c29cf424e7120905f3c3da607f3a7ca1e50287154c0475ddf2148bf3 DIST filetime-0.2.24.crate 14938 BLAKE2B 85e05026b35ba195637dec12d2f47cc30a189db0c565c2aae22ab1bf407e910874abebf401167b0c330c790f3e014c37108610063b5428031d28452eb78009d2 SHA512 b371bcdbd0e41b875de623c7b7f122e8f0e421382e741084645372b774cf09614eec9fe74514c90199b7110e8af27c62625e92281f3544afc9374889372c27f8 DIST fixedbitset-0.4.2.crate 15954 BLAKE2B 91270883db5ad0e999ebbca1123d8729d3040eb936034ab8da3cda72a830e45fcb977b3fe3c2b94e870c1fbc366ee8602357bb77e8b9a40cc41a04afad1b266b SHA512 57c5d756b0a202b2506270f0d5e890f7617a1e0c015b6059ea23fab49cf7af47fd06927eb56feb03b37cb2b6c467e326b3f0da1e32cfcb6339cf11a130a3ccab -DIST flate2-1.0.30.crate 75511 BLAKE2B c25d9ab787ef60312523d80cf277bcaae16c7e54b1deb0fc8723a3b22c2586092343db1c538d96a37690d21e52ff822a38c90e10bc554fedb75671fdff6df309 SHA512 21528f80c1709cfa764723dce012903581dbc2b63ecad194ec601fc75103307e1b2ef17479186ad895ad957c9a33c6fd666b2981382a8a68ca78dfac7cb5d578 DIST flate2-1.0.33.crate 108838 BLAKE2B 9fd23b3b0a75c29f750c873f74de8565f0d8f3a574c7d28e11d15e6c3c4686c42ba98b5769a08c21f3b9c6ffe7140196c3e7001153ff5a046ee7af40f7f6d965 SHA512 59a871137518586f1d66810528595acad5ca763ec5acc100098a372194f55f33b48e59c0806fd237c644a6d797b5deb26c541fa871a1194ee3ac725da3b6d134 DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 @@ -133,7 +122,6 @@ DIST futures-sink-0.3.30.crate 7852 BLAKE2B dc768e4ec4c9f9dfb22a20c1c977401d8590 DIST futures-task-0.3.30.crate 11126 BLAKE2B c2ded9b9b709fc10c44cfeaa72d4e7477e43331b14f3e72433b25126fef93f2812a09b4fdc3c246b7379d41d3764ba17fa87c3e9c131095864cbb5f54771a204 SHA512 c190fa0acf7ff15fa67fe172911cfae803b2a8c08168570a5518a40767d08134f147259a413ab25c45cac5dbf2f601a9753c77ab0eb2c180cad2fe48cfe3867d DIST futures-util-0.3.30.crate 159977 BLAKE2B 9012edf76336952dab02cb61db48dfc74b6cfc17c137c36372709e8d575b306a4d7c4da89328067c9482a645aceb7b44ef57deb21a0c25964a5515e738a039d0 SHA512 7faae5aa35641d858d0f5430e4a69acd4ba9037852ad73c5a890bffeed411d28820883e18bad4ca8f7b0a765f9f4c5dbeaf5d0cfaaf90c2c69846434ae091951 DIST generic-array-0.14.7.crate 15950 BLAKE2B e74c785e3127095625951da192a018281ea9976aaeb11019f9088c3f27748c5fed1ef25d577150864486dc48b5138d6892e42f99979339f711a66fc70756c82b SHA512 363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d -DIST generic-array-1.0.0.crate 26360 BLAKE2B 2f64bf8aa61bb8bd7f2224d75b2de96e424adb1011787f543006b84e57795b66e53bf4afb89c94a07d14811264a84eecf7d022deb021c8a91be247605f4c12b8 SHA512 07ff026762713d5efb716a4d8ff1c3028a97fb7808352b1207d4e07ac2f02fc93c4068f53d3b359e025cf74b7629e1b5d045b8c763b677b4786779fc6f3e6074 DIST generic-array-1.1.0.crate 27344 BLAKE2B c3aab4928709a33898082fa440440ad66e9e6b37167a746d276c8a2502d2a2c1aec66c97193b31a6a1241af425e7b869d19961e6a4cbb7dde436b37168f7769f SHA512 d7666c4fd7de31693837359dfd167d1660afc41bae1bde1a6aaf17340c65e9b269c9b2d3848afff2db74df619956a18155896b10055d9501cf3d72cfc3d3cb29 DIST gethostname-0.4.3.crate 9336 BLAKE2B 12be5fdca0b6e3788cf3d67a4a80f283d240611b4fd37b6d1c37eb2503e4a7025b17bbb70adf421ac840d8f952434bdedf4691f31362780a267e21e8c4d3a006 SHA512 8c5dc404132f2ecf9bf82d8b89cbd698b4cb6d43141c47a60b95401da2e8c314347ab0a0ad5fba50cf98f01a621faa68293cb78f48977d3ddfe6e6f21926abf7 DIST getrandom-0.2.15.crate 37163 BLAKE2B 7d534e799a4711d01c6553b8c9422dbf01e384a850fb0f7cd76e444628f2b96d28d0f5e8dae042f8081a2bf9340f57c558be50a6f22ed5fa6b0301a15898fb35 SHA512 04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb @@ -156,7 +144,6 @@ DIST http-0.2.12.crate 101964 BLAKE2B c35c2ae5f9494cafdfacefd778b4b6824588e74685 DIST http-body-0.4.6.crate 10773 BLAKE2B 828a43f8ec79a7187cd6f5379edd50127cefa8e80e9bc1205e80c567f506f4778387dcb1d2808e68f1b88bfc7e2d6405ddf9ede9403d35584e31bc62db0b7756 SHA512 fd74fcbd25044aefa183e3caad6cde0967cbb00b6d80addec2589d037b752cdafcdfd02d29d38a12b5c7d87cf1cb5e5ed80488057735b9dd73e03904006a5462 DIST httparse-1.9.4.crate 38555 BLAKE2B 24949d12a08fad7c90f57de628fed1cf9d0a726ddf1b1f66def1d7037f509406911e6a54067eb299436d865881fcb5b4dcd54bc9a7fd166f9ab6f562ca29a3c7 SHA512 7a6c34cd0e60aea6a4e747b1e0711c7227f0cb6f332ed34b8b5424ab2d21772a77e60295e4df6421e921f6f9afe1e9955db1be5bf1dbc065200d4aa7d23a4aef DIST httpdate-1.0.3.crate 10639 BLAKE2B ce0b401c69f76252639c10f6c2e4a823574a58565d7c5cc3633c72837aa4ec3630b34b148de4378ec498db196e3b2e1413ca0e5a4d9247855380fe19a8c20f94 SHA512 0586888fe89f40b838d5ceb083084d0b8058feff1d2933faedb96896dc86eec68b541a0374a508fd11b86eeadab3c62f88568ffe2c53206fad438373a50b2e5a -DIST hyper-0.14.29.crate 198107 BLAKE2B 9bb42a18c9ecd0a3055daf2be5e0308ceb3bb66cc73fbcf0fe91746c40f437be0cfff88ac653fd43f25bb855fe563ff9f7a70c031e02f007f5fbaaf5d752283c SHA512 998c0ae60a6fd2b80717da1aa9596553489a8af890f34d9d9e6b0afe1e7e8960645fd5cbcf1379bd14d91f006fd4eb1c45e0d1ac5d3bd68731395c1b51b1dd07 DIST hyper-0.14.30.crate 198175 BLAKE2B 9aa000132bc5db1cf566df48d243484b52a099d47d68aa2fc02d11455f3eece99f6a954bcc9900c0173cb39f145d371cf97b024517aefee4c7bea7746f800dfd SHA512 037f19ad0ee461dede269acc634955b087cc021abe52053de74805243621e35037b4968e20fa0ce7fcfd83ae05bf485c8003cf1df55dc30bc4cd64e62fcde633 DIST hyper-tls-0.5.0.crate 13257 BLAKE2B 50cbe4ca7c1862fd3fff192de070341dd32bfb9f108b516e1e261ec8da7c4f7972b7b66e3d45c1497733a913b0281bef706994270ec8bd03eba7368612127aa4 SHA512 45dc16cc9ce48706e0b3575dca35ba1b6b3084dda8c2cc489d126e1c4f0bb96a9b2baa860d09f68c5e0a48c2a69e3eaf62f4f0406fffc4efefcd79d26c82896e DIST iana-time-zone-0.1.60.crate 27074 BLAKE2B 6f534056e220e2f721fc7c7f3ed24152eea7f07d1f4cb3609ca734ade32a2d6b18fd0164ed831170cdff192cbe48653b2c4eb0903fb6f157292b3b5bf47299bb SHA512 5619b994d3277f56e65322a7903e4c5e03928a87bdb72831cbef88788aaf5573b8460abc0a4d5488c5df7052bb978531d973dd66002b0ec4a3af468928c9b722 @@ -174,10 +161,8 @@ DIST icu_provider_macros-1.5.0.crate 6436 BLAKE2B 7405924dca41db72ce422437434a4a DIST ident_case-1.0.1.crate 3492 BLAKE2B bc79ebeefbb7e3ed1139e3f41d8d20fb175786bb123bdb9c1a92ea70effb4a0e5e798f24b068cd66a1bf20d53eea4bf24de495b5568c2d649ea804389a1327ab SHA512 81003a43f18da5997d644319274502e2066af9f9fd1400afda7cf2986b3ae0b7355b932302723cd3bda2d46b264340434d9279dea58425bad13785698d5808a9 DIST idna-0.4.0.crate 271429 BLAKE2B 8b81bc4535d2e8a1100ddeaf6f43c043fd601ee3b37eb109a9dff01630a81603223407bd5c2f1a1b108d741c811781b205c10148a0122b8125c237a5d5ba8a58 SHA512 b4133c5f73bd9c4ccc05245a9edcc5c980714129ce4f6eb7851eea7e509617ff972fadefe6ac78db6b4106667d9d6070de52c4d42414c95921e3d9fe1b7a76cb DIST idna-0.5.0.crate 271940 BLAKE2B 0b781c2e9bf717af429efb53bdfd18244f2b8c58e5111c3bd3bee50c8a01cc747513fe20db75c38b6b771d5845647bf6c1849ae6667766c9623e018c1f399a9b SHA512 bee6cfbfc99859b113aa8c7b487429a836dabc4e317980f132d28ff8333336f33480bf9f8b186a07115eff33024cd855bc85d346fce85e17c4132e886769c54c -DIST idna-1.0.1.crate 142718 BLAKE2B 0c3d1cc6b6dd9bf8ba1ef559b03581271e772c1b0a1cf208191e6a5510cf7230faefaf5ef402fb0fd7ed2ea5715d7beedb37c4fb558d1840f1ca38c889e11fb5 SHA512 a4979a4aae733b06650ae0d395f68373ba4025cb5db28a8fac8d02ef3544198fb4d716c85e6c80943e7ad56ab891394c1f8821c44c5db1c853373c79248a9e2b DIST idna-1.0.2.crate 142869 BLAKE2B d37c0c6937671750c1f3a682e829e870c01e025c453cb9d5e32e532aaeb1cbe5c70bcee26395b25480563466b209e598d73fc4484a514bd2e3876df6daa31319 SHA512 41a27ff65e606d4ad5cfb149962bf9b0d3aa60a0a582b269b9311f05135890e1dbe9f613dc5b0860549f458399dcd66061f4536eeafc2d9aa8925a70a13b437a DIST indexmap-1.9.3.crate 54653 BLAKE2B 7bc1768589e74020dc15d3dd064009edaaef39b7aeb682d0ca8e49944e3f020b9c04d64feb102e88b22feb40863479dfaf4722d6a77b5d19e7ca553f4bf64c1b SHA512 2aa8069eb07a814c8fa3e11296c9f032ef60963520d7786ad20cca5cb7e73b8f76d97722a994d65295bb713020aadce5008cd3df5e99d8bd968ef1979f910a37 -DIST indexmap-2.2.6.crate 82420 BLAKE2B fac5cf6339dc3c0a40b100035a5c874cc7b2efeafeb31c51488d25156e392dc9db86a497e76eead351d2126f69d060422faa9c55d73407a0de9f5be18d234123 SHA512 53211c4a9003d751feb6dcdf1a76495764cbf32d24bbfe2be7023946622ef4f2b07a6de57109e5d24ee01892f4b2be0e0692e10cd31fd39c4ffdff4d37abe9ea DIST indexmap-2.4.0.crate 83544 BLAKE2B f4b3e1b877c9355a491e33d10e3ef730f943b54bb14f33ed476120e2a8f0cd3550f6aeee1a56e1868881e1853b3d41283ab803faf5afbf32c86b36e08e7f2026 SHA512 9c7f2b495f0568ce56e2fa8d3355948783b490b23b46a83acade2864e41eb31a50cf372d818b2a1d3d24327282a9866e690348134a20ee481d748bdc581145ec DIST inout-0.1.3.crate 10743 BLAKE2B ac2fa5cadd98088ea3f6eb94ca46b3a9ceb6547ba49f0de311d86474d71024d1a087ce9b8d44ec808008db69146e9c81446bcfeebeb2fd74d2e8d0ad2c4975ed SHA512 1db5bc2bd87aae145b3b0be6669a9a722df2aac8f970fda210aaf945c372e641b941cee822917926dfa1ab8381c6e99cc7df4b18d2f4e2fbef17fdec36ed2beb DIST interprocess-1.2.1.crate 115320 BLAKE2B 51a149b89cb6798883e0f4af3e27748ee8b54162f5c976a271856885cb8037374c5bd586f01ef47514a3dc9371bc02ccf71d127e83934605baacd5c660281fef SHA512 37f528d875059d6ffade117d7ecad3fac50895ded8d8be7a96a748e9097df0860e2f236bdb5761fcea5dff28c1fa088104a1f2743868db99a33604a8f3a011fe @@ -186,15 +171,12 @@ DIST ipnet-2.9.0.crate 27627 BLAKE2B e7e1c74815b965e9cec1cd37cc3dca76671168feb68 DIST is_terminal_polyfill-1.70.1.crate 7492 BLAKE2B fa663f858ab8e5fd56202d731b572bfdd4ab0e8262100424e27360a9ffd2820182bc57d6718a305ef82d04c3798111841c0d9f9dcfe219765c0f63edb560dc1e SHA512 4730fa09401cb4e69c92b38b2b43afd74699c61f5bd7b37605efbc0c08ca7a1318d43e4a844e46e0f84f83f42432f01e33771be2b18eb5977702ab9f894837e1 DIST itertools-0.11.0.crate 125074 BLAKE2B 8e686f176764e92e4da3697eb781e1bc30d6c57ac61d97343b4fc3a48e4febf669d5771fa8620005c620cce52c236760ee2e1bc344cf602e878bc168a2e69cab SHA512 8ece00ba0a7cf481ad4586da24385a6f0b1719b9c3f0c25b9b5b373dd1a0ca7b9687a77cd179853392890b7bf4d31e0356a4e5fd540465b4ac62bd74ef717fd8 DIST itoa-1.0.11.crate 10563 BLAKE2B 94da07e0f7f2535d0b1491b3a3c64905274b315ffd35ec8e9a3e36e26cd7211733b462eefb5208963e388345f65be9694804c344a6132b2b595b0bc716c0b328 SHA512 7e22dffac34c9c9f432daef395e0ec710ed658164bc9cd9fc6445c9f984c912a10bac556214a026bcddbe27a3197b35b0c87d6709fd605062637d086b2d20311 -DIST js-sys-0.3.69.crate 81083 BLAKE2B 529c94cd2289883b3b43a848d47d8ae025ad0909548a38ba93ebc684ed3edafab16842b922da6c8b6be5ba39c36a1c05057dd3dd93fc8936d5dac372937ab8f6 SHA512 506722e6dc13484828a4147d974822ff9d103d9e7db58a48181b0957770d9fc43b97605ced105c5b680d8b2cda5fa1705f605707611cb48ed8a45a96d5f196b9 DIST js-sys-0.3.70.crate 53863 BLAKE2B 15e75a94a2b7c77ff18847f98f76a1442b6e5f66960f3375534440c382a255e6b16ba3cb8c5345365d2195f7598564bf856755988f1288eb1b0b964e26446e21 SHA512 5dff8e790447a475b3c0a7068f0bdf1cced5fb8be2d66c92cb6f6c799f9d807f9d3c498e4f42c67e16d83dd4bb3be70472ece20fc42c3a8c8d57615ac8d398d7 DIST lalrpop-0.20.2.crate 240370 BLAKE2B 024026e9d206f24f3f0675f87a5d8204237c00c96331c3cce43f563639c2750f363b173bcf928bb69b3707917ef0769c9e174316b1c85f76e8fbedc6d0262bb8 SHA512 1f22f3aab724e720c7f78b268a9f6ee468fbdc7fbc0ecf83e0a35130ca56371aa2e38752e02cff5ddf0f003d5a8bce43c735c6d5ce09a3bfcda924f2c5ab0674 DIST lalrpop-util-0.20.2.crate 15064 BLAKE2B 7304f30748afad37ac9be5f9cb890b70b0362bf889a86f7385e7e83a067e5919e42d85f892a018d255d0eab56f7c3b8fd9564fc5d24b657916dd915bc45f0a46 SHA512 91034c6d82a0a006bf35208f84503660d55170a36e38d5c64a6c0ceaa0302c43e268df21feee6b60b70723462f6e4f09022ce83547560ab7c51b5de0954cfb28 DIST lazy_static-1.5.0.crate 14025 BLAKE2B df29e0e3d1c061815bdd608b41074436024dc407d454f32517705ab04b2fe06075e310086c5e4961df0b4885e91021589d0bca2c1cbe6f0aeffa3ff1b3fd4637 SHA512 6d2f9887cd7f34f019644e42f02f2bf0111accd73aeaa60973ba0b039b6774670debece1ea9a6978e923208ef5d3ab7326473ee3560c078817f0f7ab8ed0f65f DIST lazycell-1.3.0.crate 12502 BLAKE2B dca2d3f46823a52dcf87b7d6103fc4f1f83bc5247ce361946ac2d9df239fb43ce4b418104503698dff0242480cd014996e77da4ae0a88f3cedbce4eb9d3c9ef8 SHA512 f9d627afc28b61e9687a3f72260eb013401fd64057647641ff2e763770d7380ab1d2d8cbb4a3c8818d53d504c618a3b46aaf701f72f4d7b25d226042824c2f8d -DIST libc-0.2.155.crate 743539 BLAKE2B 42cdcf8d4a187383548b1f09d404474f168916d626d614463fe10a1fd886e972e1caf6297e75445214af3f31fe631d0927e54ec1cdc63e20082b3587e38dce16 SHA512 05354bba532b8338bda1f88f12c7f3893429734a06e33925fca2b99d49548ae5216e2cd84e782d2368a2dfef20b0e035e2dcad8dd13ede7119462a8c639b2807 DIST libc-0.2.158.crate 751340 BLAKE2B a67318ab24bb86c4df682cdf846d51f5f0a69504567acff43cc6e724f2641521945dc75dddc10c1c265fda960cb28b528575b5d39ce321073844dbddbc77bdb8 SHA512 c2d90d58480cca3464db475d7c70cd66bc1492239d8183038b48def8f5d8a437a1e2a2f084cb2bd9456889221b10aa07981cd5e9bcbb6bea28a2bde3c76f1105 -DIST libloading-0.8.4.crate 28636 BLAKE2B 5961c69ce15cf2bfb4ad743ead808374f5a7a9d98ad5585d895fa4654b1c31309d968eb3f5d63e7dd5fa95b77ea59c80e666ab0e467849c858a807cc3a68ffb2 SHA512 670d82fde2ddbfcc28efaf7736d799690e4fe4b7872d95854b9c4320d64f45d4b33c0e1917228302a7625f2e5e55e5ad56e113ee8e67d59fb384b7054a0cc849 DIST libloading-0.8.5.crate 28902 BLAKE2B a0fca8f8876092e874964b3dcbaacd417451704fc1d687669a95a0b9df22ccda73a754118ac0bd706a7c7d86e4eceb2ad012e20e341d71548b34ea8d629bbfdf SHA512 f332884fa75cf210460f4678d45091345b23469c09301614c476e95bc54163afd6d4f098a34f9e0d529fa1ec63892395b50957598070ff327743e4c3b0871074 DIST libm-0.2.8.crate 113450 BLAKE2B fc4a55ecc0d4a558b9014b58861341887679c696af6b6539c7cdb70c033c63219b24f6f30cb8d9b335d15e3af42be6f3a6bd719e189667ca0c43ac818730b674 SHA512 753df71bb2c838abbac360db2e4400c2d931185ecff993da51a979870f2c3f7ac017380fadee4622102fb4b37ebcc1960b0cbd295afc9cd1cb3307524e1f39c5 DIST libredox-0.1.3.crate 6068 BLAKE2B cf09f261d3a945d290ecaaa724903e0042d66eca46dde8a40c261ccb1e82c0d6b9926898eadafc6313fdb9f19cde56377b8a9179935482559c4b9707e327511a SHA512 c62142fdca92388664eef83fc89b8607e2df318cbadff6edf9e3d927837853d5cfeb54445299a82054a0ca81853b0a33536966ab26f1f2e0fa43b39aaaf67c49 @@ -203,7 +185,6 @@ DIST linked-hash-map-0.5.6.crate 15049 BLAKE2B 0f30e388633c60433dcbee353507f1c68 DIST linux-raw-sys-0.4.14.crate 1826665 BLAKE2B 804af73daf396bb20da14f831f26ce06325181de14f0c277350bd22d21789f2bdd663a964cc0e7c5cbd2e084285d02a401a6bfbb3e8a8f079c120f9488b56f99 SHA512 28149660bd975ede05624af3582d5c78f498239f5d89713c2c32f5372fc16f4ca024dec35f81ea973a2cf986098890395dbda06ac6cf4ee29df3f9a0e11eaea7 DIST litemap-0.7.3.crate 28728 BLAKE2B 00a04ca0e4e774b317218ab990da4c6ca1f342bbf229957db51801f8ec36339b665133bfe3847ca68a40d901d78d87e0041e09f0740898ac38ea3c8504309c31 SHA512 2c3bc6c4cbf6609f3cc2d986e701d23b73f5bac55995887c90aed01bf4392a42c718a69c0050296fa635a46f7cc9ef3dd6c6a2a505d3cccc690899aa345455a8 DIST lock_api-0.4.12.crate 27591 BLAKE2B 4504d146a114d8f8e1fe9ae70b993c713cbfe884dd69c61c54dec978733b95a853c3e5af26f237e48ebb4ee9dbebfce0f6c06067f74a3d122e92f5ace40e22d7 SHA512 525d971f495449bbd02eb70fcd84d4aab05ca582142144a5f314f9aa67ad4c5b4c98dc919a416d0ed2e555063eab037a441d671d56b633f2cb75dfab5d99bcf7 -DIST log-0.4.21.crate 43442 BLAKE2B 8429b3270794d3e2c7f7d5b58bd4fa1abb9d4807ab3a1ac980ac81c11d9544635003d8cf2e608c2c0094865459108a2879f280278e121df68d09bc1561d604ba SHA512 0becc1a06b6e7048cff6c0bb8df49a16ac4772133c00239e9e9459c0811e7715c500f440cf1a9aef8d7ad74f57434559ca9b55917f588b8e476cf36eb6d4e10b DIST log-0.4.22.crate 44027 BLAKE2B 831dc5092db05123bf2e909eafa708339983edece9bc8cb802f0ab418d47ddc5045a72c1b58bc7c46ffa68080eebd0fd55d6e4f5b3d5ad3b0bc6b2ea0dcaace1 SHA512 bd7baa9c8a5523fd0864a53bcde955d484cacd782412b5b02c890b89dbf62137624da3a27337a310dd8f62bcc6606925a42bbd4ca161a3b7936ea4ff96bc0d71 DIST lru-cache-0.1.2.crate 9307 BLAKE2B 606072bc5390a13cf24b4c64c77ba7f84c4c2b1a73c4abe8ead4e1d19067b063888d5cbe478dc9108d193f0a66aa5fb2ddc073f3edfac466de34f85a52a15ef2 SHA512 ecc67b4b2ed8d3596816c47e9c6aa242c7bdd1ee8087646e90c27a60d59175f661ec3ef82058c196bef2abdd302d429b7ea4279169689254a9f322dfd5697bf1 DIST match_cfg-0.1.0.crate 7153 BLAKE2B d3f40e5b16761fed337ed18dfa9db9e46aa2ad84ca8cfdc7cf7c72bea7cff8d084d95214ce013b3515bbe5b1ad4b8527bfce692569551e4588fe6f396a8a96ee SHA512 fd36f2b128d70a0f278e708bcb3274d90380229f754aed7ce9b808138b0189d5e1a07e0ba732216f788a530cecddcdd980559b3f71efa371d8805a213ff8f2d6 @@ -214,7 +195,6 @@ DIST mime-0.3.17.crate 15712 BLAKE2B abb892b75b40657d356b6b53b9a45b2c822a0587345 DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c DIST miniz_oxide-0.7.4.crate 56119 BLAKE2B 68facfec9ff405bebe99f52bcf3aac6788f1b5eef313ca393e2a15e1158bf294003cbe31efea4c793e644e8ab4e00ef67d38f7d32849ab6f01a8e19d31c30221 SHA512 482bf02d7bfd25bd8abe5e5959132677202d8c5dc014b9b0b64fbdc204be1b8431867095c140a1183dd1ca59f6ba871a355422fbd148ce34d62960cad2b7a978 DIST miniz_oxide-0.8.0.crate 56343 BLAKE2B e4abcacab4c8698d0489faca8556faa7bff53d272ea0c80e2e7843dc0f6f9229b7d5b0a17ae210344722a379853e7f14212505ee05da4e60549081cf77717c1b SHA512 044b641ce6d98d1968c1ee0906f91963f9f524d6f3fdf3059708177a759e1d498c63e595d3a3f0f9f3210c45c828b9b70274134ba078b899d7fefc2bbddbeee6 -DIST mio-0.8.11.crate 102983 BLAKE2B 913a8e0e4843b3b19cce3eeaaff0a0024eaf1bdb4784a710e54ee95b6631edbd763e37669ec7d269e45157907663dd2eb6c9279db850fa47ef4c1eee867ea24a SHA512 9a2806ea78b0637d0cf92448abcd50bc5d09bd80da0f37752c847bc98d014baae7a5cc4d929de98be6283c76d82ccab1f1467aa6ab583a4e782d97d5592b0bb1 DIST mio-1.0.2.crate 102777 BLAKE2B 9b87abd99269c62e48c6be4fa197d2b12527b672c435d5f1f623f986c60ed391597dbde7d5b73a624a4df0eeaf9c9cedcd56cfd7ce4239757d59e67e9892c59f SHA512 77eae1170a318d4a53550dda3462ae070d25656cda51db4cb2dbcb28210802f9b7e279900e6d6eba68314a0c814c90eb4af7acc561f611535cb364f75ad4e317 DIST native-tls-0.2.12.crate 29517 BLAKE2B 76f4bb2aa8fefc306a04ff50a62d6617f71c3c34aa83ed35f11714ef2306fd82f76c7e26ab7ce50f8eabed40602ba02589dde2d98b55ea6113b45cc539c84bb6 SHA512 15fbc9d02134d3d55334d2f02fe4f64be50db991d75720b38d802088f06cf5f844cba6b25dfd7beb92f2cd367ba477ec2098e3c7336c4e5a5a7fd39c753fc723 DIST nettle-7.4.0.crate 583944 BLAKE2B 79392e3b2df0551ed22865a42f0ededeab2421764e6daf0b6388c08080d0674bbb88f733ae5d29ada841e567c734a641e7fa6ab2bd8e8c627f63125c9c153598 SHA512 f132a9c7ea566930fcc813a9c799d4ec6849522dc70e8b478655988a9ce1f75ca731b0c0b7d2a702f96273d51770b47725014e6d1e407ff58343a0b4b7560871 @@ -231,18 +211,14 @@ DIST num-integer-0.1.46.crate 22331 BLAKE2B d88c9f84e5d803a3aa8f44dfc1bd6d9b5e33 DIST num-iter-0.1.45.crate 10320 BLAKE2B 9f2a60a819e31a6e7e048ae86f7fa029015a73888348676e54ec6fdfe76abe94b632a49a82b53b86488ea5af1031f677b0eed8ba7c5e843ce804c6d6af123622 SHA512 6195c7bd5f904e9f0aeee3ce17b42c0383d053f9d37954a9ce3b4ff0a048afa121c9a37aa9c74b9ace7353d7fd9f57a7d04c7a18e1456fc2c4c298d8ecfd0172 DIST num-traits-0.2.19.crate 51631 BLAKE2B 78637360cbf32d172510a62bd9442708af9730c0296a2bb4ebd200c08facd49bc31bf8ddd58967e0df7273a938832b620265d9f8f4d26ad16049bf6dac1cb4e5 SHA512 180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956 DIST num_cpus-1.16.0.crate 15713 BLAKE2B 11b432fc7c7496d48918f09ed0954e0f1d0845596301266321293b374392898853fb7c313a0b0fd9d22d9dbfe3ccc5cc1e38f38407c89b2e5906eb76caa6ad68 SHA512 a75863afc4a563e63c64d06471c7921615355d98011ea9497b1f1a7dac2bdfc876509136018e8062ac38575ccf476a196d1fd9231e09e90017333bbf2df4615d -DIST object-0.36.0.crate 321771 BLAKE2B 6350df2cd8e2cd733397768e3fd9a2a79d182e0e3fe653bffe0d688a944713cb83434b2810a48638b30f89f0fc5311784a7c7dc82291191a8e5bd310c82531a9 SHA512 5a75b296bde7a01a9a5cb59da98b7599b51c3ccdea2c135c5291ed10af8b1fab46dfe936e43de617328c216fd113913545fdedde00adf22fca251149b22bd6bc DIST object-0.36.3.crate 325288 BLAKE2B 0701822a51a82a1674514d7572c5f91bb40834e23d40b0fb440d933221e8256b7eb36711e8b8870d866384774c7c1e36b89363d7f6bb94af92f9f567f7aca211 SHA512 2f8175d757a66658bf91234d6a58905ef9a410bb19973e81bdd8b28322f6865e32f5b9cfd0ad38195cb07b2721ababf240876270f39a6c7ab8a36a127dc18f0e DIST once_cell-1.19.0.crate 33046 BLAKE2B c14b374eaf4ac0f60acc2e02f7bba270a0e8e0a6978d749cd3cb0ab3eb26907e4fbea70dd5132982f90290381ed18ff8a87fd530f1415fabffac864f157ea380 SHA512 4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c DIST opaque-debug-0.3.1.crate 7066 BLAKE2B dc1dcadbb5654a5f69c59b84faeb3095f008a6eb4f63e3cff95bd4e97f803201e2f16f59a65f8ea21b662e77e3fed0d0870eb1db7f5a4f95cc02422907732951 SHA512 f325214d604e74197ddd9209a596851c5bf0c0f3299b79b6267c35e0ff6351205b628fb5086279684fbb29fd07746c91ede4f45019657e761d8400fef2b3d8bf DIST openpgp-cert-d-0.3.2.crate 31488 BLAKE2B 56823716b125c1d7e57f9c5c2d3fe8c7a5a6bf635cb4b28a9fdfcba527ad20ee37dfdf019f00951c7f8d2d0b252e4bf3cb9f6b00093b1b7c065b45f0b4ecf984 SHA512 849e1597677822aacc1dbe4b9854ae0acbfc113a5620206f4732a1f51fc6b67e91dd7ed020d789a4bba9458ea79391618aa3a949aeacd31007dd790076651adf -DIST openssh-keys-0.6.2.crate 21643 BLAKE2B 25bfcd6ae96261312c40c755ca28c2824b0270c2f93b99c0550d63c9875b9a1c41490c88400f9ff288cfab8f03b474cab895b9b0fc2dc845e96f14b1f6febdad SHA512 71e73c2efcd53bbd336d9d49dc5924d3d5c223f240f9dc63682a2cb20517c26c41f0b2d581252568d2d1f9a8afd16a56641993366619cbfb56c8c12c9558cc69 DIST openssh-keys-0.6.4.crate 22213 BLAKE2B 249b6dc48785b59cd0ce649a90e788b3be477702e95cbd34fa4bdfbaf558b3e9b360d82ec2fba0b63166192e13871bdb6c5a295f7795a603348f4a8668e3732f SHA512 6d572dbb4656352d4abfa5a622e3e9f1f5576d7ac1216947a524032bf6d8772c672c351bfe3f7c33c21716a4c4ae9cf410379f7529f3ba2deec7edd1bdf0c066 -DIST openssl-0.10.64.crate 272306 BLAKE2B a8b618aa403cdb06a7f135cd966775f21c99739365c55aabde2680a6154d03c7d554bfae6c62a069841c70ed82ece6c3f0cd589da8c26022b7022c3c4d79a6d8 SHA512 a1fa9f71cfebbb37ed9d4a902360f2cc95a78f55b5da5d51eef69db38cef016fc03236485158d689ccf054e04937b8cddf88e3f0f31672997fb30c6cac73cbf6 DIST openssl-0.10.66.crate 273705 BLAKE2B 7892e96dac3b24ad5622833b4061bd82028210f9f26ec9772cebb65905ff6e45da8b21ad1aabfb87bb5610f534018da6bd20c10eaee8c189dd08a7ebfbf12b4b SHA512 2f4dd6e40dd8aff8c04563517fabeecd5ac0d986764649cc9af9bf4ce25757a67f75655eee207703b46fe57661a216ff00144358ffcbc70525447a063fa086c1 DIST openssl-macros-0.1.1.crate 5601 BLAKE2B 69dc1c1f3b7bc4f934cae0dce64c3efa501162e5279efd6af3b74f7a7716c04b6996b306b310f1c045cfa2eff2895314a47ecbb020a817e461c6d77d0bc11e92 SHA512 57e75c84f78fb83f884eeaedb0dd135ecb40192dad2facd908e6a575c9b65b38a2c93bca4630e09ea5a82c77d8bc8364cb2f5778cbfe9d8f484cafe3346b883c DIST openssl-probe-0.1.5.crate 7227 BLAKE2B d1fd6a9498b3ab7f25b228f19043067604bf20790530fd0ab6fe3d4d3bc27f13e6e94d1e7ef49314c3663477d8916b8790b90427f74976143b54b95350895165 SHA512 7e560314150709a34520472698060c4f29689d4e608dc4dde146140aa690350d3603279c693367deeb0f21ab34ef61956143a3447827a2b7a3d578b9ccd6552c -DIST openssl-sys-0.9.102.crate 68622 BLAKE2B 0d3d3c9ef8e2542c7f35db1d8feaf512cc7313481bfcc99354d601e8d6332adfc2e7ee8b35599a9241de35c163efd840186e904375bdc9c65ee743abbc154cba SHA512 7ecfaa0b49cea5c60f6f063fe5217252a65b27c5e6d1185e0aa1bb4b59c4cf9bf326840e8795a870a537c18ee5a987feedaaf2dd767cd6f1380f25468a1622bd DIST openssl-sys-0.9.103.crate 71552 BLAKE2B 4cc1ab93f5a444b4b985c84f6ae90f345da4639e4ff7c5502dc1ae59f842d46e3855057a7c05855f7cd739b5311f330dff361480ef2a0102fe46471506956148 SHA512 61b802f6baf918ec055be90ee47c69fe0184f6d9a1d29c748386192a11d4df115758961ec9b636126a6b42d7d8f7509248c59f7c035905558c4cc35b804a8eaf DIST option-ext-0.2.0.crate 7345 BLAKE2B cbfc03e7c960fe3023512a4ad816d657b4f54f8ecbde9f9c4df4c5fee3b36b68ab463c67ad650778279e01c7ffaa63a0dacbd0c080c8c3d15b1611de0e71f92d SHA512 f8539f97b01af97e0b80fc96556002251befa60f8ddd19613311e62f9dc9834d71c22f5d8e7c53c4925046e38cdcf834c3c28042a4da862d6f6a21ddff8d8e56 DIST parking_lot-0.12.3.crate 41860 BLAKE2B d1899a1132035aaea3a784290cf4951ea3b36b2018d407e27d333b2a2ce3820e040d635009c44cb6e58ad07cec6565c0347af6f6fb02954eac2d4c348bb036f0 SHA512 368c17203fb5b9e4ecfd4857e3b1ab96b86da3770b8f21be392818c845952f72dde1072a10265760a62aa8a1dd65332bfd585667444e5fbb9dbe3280b5862703 @@ -257,14 +233,11 @@ DIST pkcs8-0.10.2.crate 26360 BLAKE2B a62b5b7386eedba6fcbc4cff2b103b899dbf617910 DIST pkg-config-0.3.30.crate 20613 BLAKE2B e14dd544612f74b038bc7d279d629034237946c261e3e97621d6ac910a12f4fa4e75932dbd5d3339e62325d0ccf33002b07f04b0523f93d2bd3b1a919841ba66 SHA512 e4bce232e1e1cbb17d1c08c3de4dd12613f5a5238f831c2a765b6ede9b494e647d2416a7d9a0c926104e24066dd1b38df8df98a6c55d62f25060f80eb33d064d DIST polyval-0.6.2.crate 18425 BLAKE2B 59ae2ec631060ee8e2e1d4bc250abbb4762c97ca7ba5c543c0292f561bb967e059410ad7e79d8dfd7912cb30a6284169ecc2f4c94bdb165037acf8c3eaf1209c SHA512 113646edef3a7f60d59db3cf06c1796bf81305b66835c71bbce0fdc07345f41e23f2bbd7d5cebc50c72eac11c98f351bc793e2f568b5fc0bbf9fb2597eb44f0d DIST powerfmt-0.2.0.crate 15165 BLAKE2B a3e1ce63f5866f75526eeb749bec6607e42cb495bbb953082cde7e98e6aa429ecaa41889d98ff7ed4cf5031258b4f7e0553ff8fc435b3b6f8b4ef2b6d53d9b61 SHA512 0623f92e4d6ab284b3f6dae58220d79d9185df4a738999d68040c50d72fe0380d70358cb622f079c629bab53bb03c6e085e165d5bddfbeea84245864fed90029 -DIST ppv-lite86-0.2.17.crate 22242 BLAKE2B 48c4a31a3b555fa37072c4de083580bb769747c7668748541af472778b5b58c3e7ab2b5e178760f542f973774f09910bdd4058ae5fb9d6b10c103eb76cfd0d3d SHA512 539d916e7e5869d832045c1aa88aec519bd000227f9b01d4dd0bfc9ffb640d5f5eb21b05eba718174773c97192a655ad3cb31b53ceb914dd19179a6699b3583a DIST ppv-lite86-0.2.20.crate 22478 BLAKE2B 9d68dc36d8148047d571c0147ed29f586f3c6ac9394b56bd955c8ae5bb18f5a8da5369809f7b8c3199074e23660325158c32c62e1bf69a16cb1f5da2a01f5df0 SHA512 6d171f63b42296f7765732fce3af7ea05d0d81f1541ffb3ad86e81210715ef4afe5bc9e58926e97e757aea6ff96a8012c8411eac78be0fd080898318ed21d7d1 DIST precomputed-hash-0.1.1.crate 1640 BLAKE2B 64a37ef3edd317f771e833bb394f7c19bc9b8c844156c831d2b550692c7e2e36bce44ecf18dd9f2d0f0511346eaf0d2a0ebe792fc288ca0e94a93933f2051846 SHA512 a118a98286a47e2f0cf35d2678d0325c18b9b7d5bdf40ceadc16483b282307fd1498434d5bdfa25477a4f420d97c34d786e42e9fa70431b788b4b8fde9718e05 -DIST proc-macro-crate-3.1.0.crate 11084 BLAKE2B 9a9d02f0f34a30668ba94e34d51199c332209c47fd8bef28c452924f75984dcf3aef2c92c4ab3fb03205d589e4f773d960064b4d08fdb2480168f10b84fafe98 SHA512 eb5ad763aa700f2cb1604c32a4bf2fad499a03ad868a22d06b0697b77875b1cc13c739fcf165b2bd547207ef6dc3bd13ceb75e1a59c596daf916f356ed27d8e2 DIST proc-macro-crate-3.2.0.crate 11164 BLAKE2B dba3e1f4e38f427df72794ad891746fbb8c24239cf06b076e75ab6795a7e8c9abf25ae0f40379e07a696827156e7a3780ae242da7e5442cf1224d058f54b83a6 SHA512 41479ec5e414a8b05dffaa0ece21122387d5165a54e60d8ee3502f8a3c0a2ac0247f56996f933d5d77f1efe41a56bffe16874e8c6a34b66100cf047e4b760863 DIST proc-macro2-1.0.86.crate 48958 BLAKE2B 4b89e07f23af8328dbb34fe2b3f1b202f1e6a3885a6269740a23359b41bb4099ac2484565d3b2b0936261689ca525785ac620c766997234fd8d0f409e80e5ea3 SHA512 1cdb7e22a35ae231d880c9420784c9acf97bda2db258b3d34aae5061dc1858449defe19a49e12c6a4173906aa72a4115059ac2db0fc760205fd2ab8b5b414434 DIST quick-error-1.2.3.crate 15066 BLAKE2B 1c61525d383f3588c1c5017f016f60b484bbf2035e7f63c553bd9a49b638ab0c6106ac3676a41072b24da4e13dde78706e0f99fd1ec9ee329d5be81d45a85866 SHA512 f8aaf9024d20ccd42b706c756eed8320aee339f8776392b47a41cc82ca06b03df1a5b1f00854cea96689c5af261b4d8c5d2b1a242d10f2755e7e33dc41be35b9 -DIST quote-1.0.36.crate 28507 BLAKE2B b93495163ed205e33543ed45f084870240d479071d643704b6e348fb9ada6e1d8401893c13348b9964f4b6b17ddb96cb5458eec540f0d761655fcb96a4cd9129 SHA512 f1f002a912692f7ffd4912ca980ec57ff4aca3a7d9e2e42e9e3409e2105c9f59d86c05719f6af309bccaef2f8843b0848a6e3afda3356e045d8e7cc5956ae685 DIST quote-1.0.37.crate 28558 BLAKE2B a7d007a69e619f853af94333e1066bb767013312bd99f147b1b153611242bcfa9c76768b1ba47278589db309a9acd61a772c8ec3b567e48439bb9d831f9326d4 SHA512 c4ed21428c1f89cf22b85d80720a7869831a9c129d694617b0ce8c258278114ab98846f3f653abf736d1c86bc9224bbd695e9a7b06aa3adf292d02e1ef14cc05 DIST radix_trie-0.2.1.crate 251366 BLAKE2B 14b50e45eacbc5b42cdde8a4f8e8642adfdfa3cc569c3fe0e3aa1fdab901713b3929d706dc0aede1b679762fb8fb1af345efca15befc9234322db434c8a3923c SHA512 f6f54511860b6b878c83de4455bdbd71289599dba93234d5c7469342f3401cba99a9ea6bca2d32df2e31ba657f40e42e7d5fd7de66786ddd2814e22fe867f9d8 DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 @@ -273,12 +246,8 @@ DIST rand_core-0.6.4.crate 22666 BLAKE2B 8b6b66d50aade877f2779c006f8038db450f808 DIST rand_distr-0.4.3.crate 58255 BLAKE2B c93a4db62e1c27bde51c77423e15674c4bafd04a63424ee8b8863e4eb27e56f774136949edc8b05ff4189dfab1f0dffc92855706f4a612be897523e7712ee830 SHA512 e5209a78b8ca1af97ac6c6add858ee6d91e67c1edd124bb297f787d37218a5f1afd570252da2eb25738b8d77482df4e93aa1eb3c4a8165f90219410dba495cda DIST rayon-1.10.0.crate 180155 BLAKE2B 16cb706d2317d8a349394c521ec5ab550290c5ab2a0a0dc24f0282fa7eb01fd1351a7dc8b5af3a55ea321e6526fbe037fec3cf8b32463166a082a6e417a51fca SHA512 3f628c58f3af3cbd1f245ca1be9c8393eff41112891fc4e676a2b9e26b6cba7cb80d7b6ce46e75bbb65e42fc00c5c0bb6b6a4b59092882f03febeb31f9cca5d3 DIST rayon-core-1.12.1.crate 70701 BLAKE2B a32eb9ae9a71b4f0881f7bfd5375aa7db5681f20f7e0b25e6ecb3161f2aad36b93026c1691d02bf298a48ea07ec9475a237fba457ed0b0b8624aebab2b4988df SHA512 33d0297b682f131c50e1eabc3be583211a5abe790301cbca91bf510e43d6714b7564ca39fab7c4bf6f02aa0df6bb394f386a61320f21ddb6bd7aea1372b5e99e -DIST redox_syscall-0.4.1.crate 24858 BLAKE2B c3301137a0b84e03b09d28dfa377ab3bea74d574a08cee21d35713b278d8b5b30ca2a1d73a0981baeb4644cbb88c86c8eb15ab3bb2692e38b93e6b35fab4e0da SHA512 073ed9d96090cf46eab9877742277a013c62d8da86d9caf2310b4fa868af306511936553579e01309f27067d344226cc8dc5e3aef01d9b900da2febd33848f8d -DIST redox_syscall-0.5.2.crate 23957 BLAKE2B 6261df25a59af5119a21d31fc3b6a8800bb1783cf2fd63a5524d48d0b187f5f2e65ebbdec00d9282adf110ba8f307d4ceb154bf029a0c6a26e8a887fc722b2d7 SHA512 b7e39a08e220153370449cec7b058c2dbc4916ff7be01b34658e1793035323ecc28f40712194cb9bfc9b863e4bb316e58662721eb0e54f68f09438bd880ea032 DIST redox_syscall-0.5.3.crate 23830 BLAKE2B 0a38235ec277144f0c3e7bcb1d273c7f357d85aef33dbd06328ef16bab7df0a07b523431590899ea58d55e8e1d84c32392478530200cca3a9483e8a47b29e233 SHA512 777d1208004b7756887d6c5745ea408972670e59430e1d299d01a463ae41b98e0920ee77aefef8755fc949d4799dca679afaaae9c1a7d060f76f69af5b90427e -DIST redox_users-0.4.5.crate 15514 BLAKE2B 9fc9d9c4875ed711efb75fb08f345b5f4f0667717d37710143742e48251a709c53760bcbc31ce13e6432672f9417be429c38c2e77a6b786887841714290a1194 SHA512 7a25cc91c9d1bfe537f20b83255990681d136ced5aaa7aa0cdb1b1fc024ba36aa1fb75c335c768a85ee078019a9ca2460efd911cad8ae6fe8b0385fb171aa4b4 DIST redox_users-0.4.6.crate 15585 BLAKE2B 1d60d0b7781395ff271d79264910d24fb021cd8ef612714265abae25b26ac158d48f542f1e73701bf5b99bd67546a7b878e4a14e40cdbd478b35bcc8b4778f5f SHA512 719d63fec42bad3cbed39deb9242ce1daf3f391bccafa8121f63198120371f112d78b0da8d66458519e946581511004983f04b0a697071f22294ac7c831120c9 -DIST regex-1.10.5.crate 253805 BLAKE2B 9f5418b577209051640c3614a98b15604a1e71144763a6f00caa7757f0ff67fd833a7d14fe9d6acef96386a2a4eb60cf5d490472e73fd62ca8bb0e78d4f9f125 SHA512 177fddb001e14281510e34070f88f8e5167278a46f1d93d9286d9606b7673346f504e4064d7ad53558e6988a400c728e33b663ab398fee12ae23fba7158da5fb DIST regex-1.10.6.crate 253894 BLAKE2B 176cf6a1e86aa8a5004af5ab0d6cd4178135bdae3caeb6a8276b8739858c65e9ebcf23749398a5a91adcfee9cca3667b306c4adb6307acfe61dadba8c6f3eee4 SHA512 ec28961d226c944321d9953c42e43cf2d23b8ca0d72d6412e7b0f572c407aceb079bb82502d124af94d71d67c9e5e0c9f66ab9f31edf6023ff045ec37b770964 DIST regex-automata-0.4.7.crate 617582 BLAKE2B 6295d866706b623b2025fdc0c407086fec15053229d708713d0ec165bd526ba25e7468d0009625cbbbc21d20345f0af2eea10addf6de633e8e6a02dddced67b8 SHA512 b19d00d64bb8cd833cfb35fabb162b9481716f4b7f6035c1c8f1de4e0f90e00823d006e057aa3505aeda48c9e1802e61173c4a2878891129a3a918727e43b0d3 DIST regex-syntax-0.8.4.crate 347577 BLAKE2B 400323cdad2a7daa8d4006e4dd7a7b1234704df0f80ca0f4bb19447f8f1d270053bc8aa613e48291ab3a78c7eb02d7afec57bfc8d966a48b372a4c80de9b120c SHA512 10719c138d9aa304106fcbf77da0b01645d1b6fbc621abb639dbd43ed5fc3dbd22aaad8b86df55a60e7b2b4fc347b6f41419131d7b047273e146073250d892ed @@ -291,7 +260,6 @@ DIST rusqlite-0.31.0.crate 152252 BLAKE2B 5ef8396ab6ee9f6887466e7ff856c6260f40ef DIST rustc-demangle-0.1.24.crate 29047 BLAKE2B 8248b014eedb26cdc0b748544ba91b9aae9c992a6f93b4d3ac256b78f691d572f8885a3575492ea556698a241d2759743968293079ca02bb6a5f318b0ed66dd4 SHA512 eb897c35300b87766e6105917a907fca1c5b1f7691fc03c6c1aaf38075ac883a73d1eb54a245d13ba59c7b0f0333d6543e23fc1b1c542fbbd5c750a84660b9e8 DIST rustc-hash-1.1.0.crate 9331 BLAKE2B 16ac56622897f47a06b661fb59a196b08d48e782ab87549c8bd5c6fe92f374c9bfd44dcb36588512bd9b6125c2fd79a12d648aaa308fd9694bcca3a7c1b49ac9 SHA512 84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 DIST rustc_version-0.4.0.crate 12175 BLAKE2B 6fda2ce03eab45d7193fa0d70175cc7ffb56b7be85fb1314092bdcfd3948ea145420569ace3a47218a4a2a6e44a818862cea6dd8cfb945475496f63b591c29da SHA512 f66da7c6efe431db06cd01180d84ba67fcd38f8cd6ef693762957c00ccc2211f23c08079d7f184776e08f28d2d6ca3bdb5f5016f7de245c6193d4722891ba1db -DIST rustix-0.38.34.crate 365160 BLAKE2B 02513c2513ac45897b659f0d332a0dc32401d238b8fb64ad4a90ecc4d8952fb042c0bde4bf13d52630cef34e73e96dd32cf772a8601b4f6eb5e2961f0a394add SHA512 717cf26e2ec792b41819ff964888adb265a215d2b6c6e2b7a8ca1f7f793b713b853bba9cf03c2cc88b0f9a5eb1a0478faedbc05526f39bd81583e7b1f764756f DIST rustix-0.38.35.crate 369206 BLAKE2B f52d40dce187c8712fe8dbeb0fb8c338656f5d9bc92b7e886bd93008732462e8a2cb64f64825e9fa8ada41054f22bc2a0eb2b9c32c856c89d6d572f9eb9b894b SHA512 0f5367d596797f5719a154e0f929b24db8c5f2b92b3ed4772b89e11663beb0b3fd6447e1ddbde32bb2507450ca60504ba0ba6b4d58510fc64dfd70e5099ccdef DIST rustls-pemfile-1.0.4.crate 22092 BLAKE2B 9a776027d6e43a336ecfdd6713d4b1e6642378f81b73c97752563ee1d2cac5b3988afd48c92d25d55f655a6fa248436954aaa0e0bd9c7c679c987ce7df0cc99f SHA512 bc748ee06f2c101d8e54e8c4555e88c5ca824ac7bb0182f8e49bfe1fc66d418d2a3da8e454f3741697f491ad0c7bc8e924a752697023a191c1bb6eb98c48aa37 DIST rustversion-1.0.17.crate 17621 BLAKE2B 1f077ca6fd90333724d1ea9df7f5b178f37f895b71a7b2814e9ba8618bffcd2307f9cb4ac2eea25d461a6686a4b5b51eebb80f1b1ccc773d4da1948c47fe8abe SHA512 0565cddecaedae17e7cd99bc34f54cda242d4c29cd4269f8e3b178ff91d49f3682e7ffe66e436bbb138299736c8e55cc143fefb74c076911fefcc41ba98064f3 @@ -299,31 +267,22 @@ DIST ryu-1.0.18.crate 47713 BLAKE2B 409cdf4b4e77685394018371e91ad6fdb175ac57e1df DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c DIST schannel-0.1.23.crate 41667 BLAKE2B 3f34ecf4cc519f5302f0ab5207907a275c68e6fcbb47630aec4ed5d5f1a1cc7475f6d7a8c22361e9878002f9f54314c1f630ab0c1f77ea309714bdb7ada6c9af SHA512 dfce25e3b8bc09d8dd1fce2783fe02ec83f74697cb24aa212ef9369a628685ba488f821cb3e5f863798e0e59995038c8d748f74b89f7929eb8cfd804d5066b84 DIST scopeguard-1.2.0.crate 11619 BLAKE2B 8b7e9ed6cefef9ee55407fb9690d57a2a98bb93e5105aeebdb475a52485e9e185255249e1dce8f83cd80534e7402d485aac3efa7e8493b13135de27550cd4bc4 SHA512 6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb -DIST security-framework-2.11.0.crate 80191 BLAKE2B 23515556ff935e7a19f282f7dcdb28bcc93ff1b14fae069d1e1be35abd5651a38c7c71594eae085c8385e48b25fb84b6f5fbc44636b5d1badb15e89ec6acfcbc SHA512 7a1a1d1b807cfcc0c87b27a13aa0007d5c29560a45f20963cc84fc705385554b969b4062c7f8b15fe793291ab624fb2a5257c05d140c53200c2eb344547652be DIST security-framework-2.11.1.crate 80188 BLAKE2B 844d36d2b2216cc7055687110d54ea783a7ed9bfe6375fd4dcbea267ec85531e666fe002648110315f42c3364ff5ff5aeba711cf8d1f5358ba65c8393e96f55c SHA512 02786d62fd9dded80bae3942896bc8fea2a90763427f582bf5d9f127ca5682097b59b5dbff2cde373198ba659316ab5906a68d3141ba00c7408b73ebe353fac1 -DIST security-framework-sys-2.11.0.crate 18718 BLAKE2B 4fd8e8eabdc910f656cbed6d6f941992eebc2ebe29c1d85e4ee2de5aee2e4840f2952ffa0b0f9ae88329a2b16d66c3575796f476b873c6bb3c3efcc8d119ab6f SHA512 e3848a45391ebd98026ecafb0777852aa826b465613ef184cc33cdbaa75fb91053d46d417dfda6398339abd3b67788a567562e99b3c509b676b7ee5a4372acd8 DIST security-framework-sys-2.11.1.crate 18755 BLAKE2B 6e4f8617ab92304a435489492f1126eff2913f5332dacb8b48704b5f051e87893e5f4239ee5d6a8e5c350d14cf5226fe57a36d8119b1e150407e9b157e74232d SHA512 8565d7ca296995c2bba78a328758c84c500e95cbafc988cb595e040ce95d4114c1de46fa30224a310981c3dd2a9b7d1d98c87f129d98a0b2fbc44c72f9085d23 DIST semver-1.0.23.crate 30622 BLAKE2B af5f7401daa2004ac1fc419ff907a65feb9b11743ad0feca0929bf2409eb81e03637ec5f92ba9f38ea386c4ee5cde72bd3d2042083e2fb0d6fa0b839b1c5093a SHA512 5ea1fa17c08d1280c3a4bc8d28494e88ee05acd5dc969ef6f0c6f91fd3b5a8fbe999c9e8bbd2da383413038b8d29fabf02b87bd5265bbb8333f3fcbe409103ec DIST sequoia-cert-store-0.6.0.crate 187906 BLAKE2B 1372e9938120997ae2d385849cc11df8ad6a47007e5d42b61d1dfddd504926e40662e874edee24f45d1fb665eb3d72a72060622142bf6280b30efca4a5fd0d65 SHA512 94b1c66acdb2101e20898ffa3428af25b60c3951a8247b63c4f87f71fed4b10f1b6fc88720de4136556a61a0a360dc8828f7e1a0f25f915dfe5c0544a98c496c -DIST sequoia-chameleon-gnupg-0.10.1-v0.10.1.tar.bz2 966710 BLAKE2B 54bb459f578bf9da62e038308e24aee80faa757436e5645e8d548496d73226a6ce50b60e299e3b2602347f0231dc3a7a41ea9b993a79dca00540338ed4dbeee9 SHA512 e1fe78f1697ce85a72f3e913c3dafc3a4211e125c74473d964830c8f92b6f5e8670925aac9143482313029b8b82a413f347a0d77281653646b9e4f0f34cc124f DIST sequoia-chameleon-gnupg-0.11.2-v0.11.2.tar.bz2 974784 BLAKE2B ea70b015b63ad10dc28a539269e3414258403149d5aa79d7f1e12717f3704bb52308aa7ef1633dd6e80de380e8291928430fff6524afe3006526449d6c7d302e SHA512 5d1c71fd365e3bc4658e60e0413c32b898e1d29d2d345605e34cb53dd212b8d8b6df559fb43ecfec584c7805682c27777dcac6180eb7df959f911f282c409c9c DIST sequoia-gpg-agent-0.4.2.crate 142966 BLAKE2B 7699ed02620c186a58a68a3c2b8d7d8fb7028207a28322b5da3bb0c3407184f99793eac4df7f8c11a33fbe41626b9733ce71a236c30ae4c12dc330c600746cf1 SHA512 2fcfa38c14c9ed3990f05e3db735c094fc8f7a6ad7595e1044fb7f22a198fa21d07e67e361425d16bb15e508f12c0ca353d91445524291b4aa044e889db1192a DIST sequoia-ipc-0.35.0.crate 4484979 BLAKE2B 68705ffe74d4b6163730971ccdfb022b7516913247cfdff743f31b04afb26b294e65e894d6d81ca3bf5dbf77f4ff6acd4c66ecba22a70002419afb4a4bec625a SHA512 020f48cdd20a2df79c6c8889d5d60822afc171f1dedd433ced725d124850b75ace5dc9dddee1534b5a7873791a4e0d6c1d3275e9de6cdf7ab4fbf55209357072 DIST sequoia-net-0.28.0.crate 49672 BLAKE2B e89656e0428bdadb6f9d4fb479c985d5d187dcbade342906610222d85c22d90c60b09ff4eaa3eef62d6650ed06c92b86a3123a001faa358fc775ef0e74d44265 SHA512 1a87d9b078c2b44220882611e8d49c6117906d8cbd81e50301a6b31d7428cef5622223ed234e28558fa83e31c47df84dfed087f1b1962bd42a7d1bc2f0fe9fff -DIST sequoia-openpgp-1.21.0.crate 3017472 BLAKE2B 9fb94e3cd2c223a8129776434d1bb8dcdb9ada526bdbc97303497024030341c2ad2a6bee277e940d6af72c1c4ecc251cf96f81f0381a8ebad970468c95258420 SHA512 4ca4df4e7ad0ffec68249df9dedf2b7f7c2585b5f8fab1695ce698d09d6e4d065c125882d3955aacd7e43f0677d0083f4743b933772256324dfa4a55219c5f75 DIST sequoia-openpgp-1.21.2.crate 3017548 BLAKE2B 86fd51244c808c3fa44e2722c7028bc2746c9ae9db1f6620f6935ae7c1af7ab331b322fd9e8b28dd0119c71aa72dc2a3e2cc144b84112ad465ff2e9cedb7571f SHA512 bc8f0121dcbe083c688d14abfa9dbe3f850aedc02ede98ea4c56f8b8fc28adabcbe1a2ab02cc266e35b28c1f5f563377422e5f8f99ecee0f21eb05a32b94e8a8 DIST sequoia-policy-config-0.6.0.crate 42529 BLAKE2B b58960a3296d1c3289036a2218e842bb63bfef11968ccae7c42cb61869e04d26fb52736876bcf32d276177c488d0be4d9ff3ed50fbfb0ba68bff3c0410a460cd SHA512 499d350426f80627278310b2eded6a69a7ad833058129ea5ed9ebd0255621ff70f9f04228fc8ca79830e6ec11d14b121bb3e5a6c5fc2721135d725bdf0d886ee DIST sequoia-wot-0.12.0.crate 1079750 BLAKE2B 8b42a4f3f0ec99671ba244d8db85c6664a5fd26b03c5a76ac7feab9a7603f6a002a937fcfbeb64aa9fa1bf802f092ded19a5f31729eb70b54113a3f2f4b207a4 SHA512 fb4e99e620cd03549d5b39f9fa4b0054f27ec820b911341fce93f1e2ba02d84b4e949b98c9ce6973c6cf916dc485ed467752f688d4f396ef0bf9c3900583c10a -DIST serde-1.0.203.crate 77935 BLAKE2B 3d3dd4f81f7d74b60483d6759879a9f87c0c7d615aec308bad1bc575fac4e2071dc86551c2789e87331dbf8089e923ae56fff82e6f5a9992cf850121b052ce1d SHA512 a8d302589244e41f6f675e8d199b2532b29f62b63e45aee141a93dad96033e4bbb27ed01c11e329ec2266cdcc6f2a40f41dfc7d1b9bada69aea81d35d2d82cec DIST serde-1.0.209.crate 78364 BLAKE2B f6b4c2bd931a8067482ca033211c4e85c0dfd6084cb599c38a9ba666cce30489685a3a6a8a539eb6e41141a52328943dccbfe25dbd857af16665094fdf7c3f45 SHA512 25d2236eedc08fa3b9d078a1971df705c4f428b7a4e6a2d28d9f0f9893c19de745bffffe3fa9f3c08074bf4359aaf09cc28770e4b14c21c66d6a0b9411738f7b -DIST serde_derive-1.0.203.crate 55867 BLAKE2B 1bc8aa96328bb83e4e4ff527b1df855bbcefd333f0c43c96d1e0b93f98a46273dd88a21653bccc8f517c4fc06d17b9b44332a963d024796e0a2c18a5bfecc824 SHA512 b2aeeab33395ac11ebdbd922fcdbda29f2592e7a20e78aef250713baf269cacf497271be7aa407f657aba33da132df0e035be046fef070f915f234097d1dd392 DIST serde_derive-1.0.209.crate 56023 BLAKE2B 752bc9f46b880d0ed8a4f7e29ffde1343c63c4be1e9740afb1a28dcbff5bedfe077eb51c7052adecfbdbd9942c30b63a27914deb6401a2ecaf70fef0f64cd80a SHA512 22c4eb76412bd73814d0b86209b110b9e59626f64b41cbc250755144e545ff30fa69972ac93d74f988a3a6a239d9138f4e8a23b283c746a0aa5fcddfbe077cd6 -DIST serde_json-1.0.118.crate 146962 BLAKE2B b85f17cbef0cb9fcc8af5d8d18a74850804de631f8ac94193bdb0ff8c95d4c8507876e4802005e0bc8fc4745d52c79be153d825e106090b680b620acc5b1add4 SHA512 1fa7e01d849684e3ed6f9bd67ba9862f822dcecdcb9110a43182367225f559416f855d59f2b8bd943756957932710b930244963a1f47a3d7d530be19dd412f20 DIST serde_json-1.0.127.crate 149465 BLAKE2B da5048f70a0b7594be0112efbfccf8d6575a77b324d59321cbd34d355978aadb2ceea1bbcb182412547587235f58873ddd2232822f020e2db85c1599cb0bca8b SHA512 f14f5eeebe07261daded47c3cbb6d511da4633bfcc46ea1b0600063730dd4211a0c310959e4f8731a688d18d60a46f6dc1c1a1f052f170b6207877b93742a88b DIST serde_urlencoded-0.7.1.crate 12822 BLAKE2B 38c74ea862f041828467dfa586bad9b8e1d1d64a9f82fb7f98727e3965377d00e59f2dbf20955a9dce976b6911c0a619d2a6e4cc9dfc73cf0f6c449d873fd072 SHA512 b209ad01b6565e95c1d5b431a3f4f8a0df3d11c2a06a44123048bfa4b34ebb6807eec593f0c1c89de3a06ac3786a14747df9c70b4f4d5e4b72b4feb53084eb60 -DIST serde_with-3.8.1.crate 142294 BLAKE2B 92b3692f80b613b8d8d68e69c387a65285a969d5bb8b03d9c65af2e40b77e20be2e504044a0c59ed6de7e36b66dd31eff3686cc0b74199ae146d871b7d6f51e7 SHA512 1db8ea26a292c9c08c9451e946e74904a0a063bde854e22983a6575a6bf1c3cabeb8109dedbe028d6acb2abdb8c26adf4758b2f31c844cab692266e522a899c8 DIST serde_with-3.9.0.crate 145089 BLAKE2B a4d5032d864a996c2d6edf0b1ef4657784ab76b9cc437d86214024f6bd77dd59908efa594f24db4d2dca490f4e072d688681eee9d24f92c8a528d8940e991fc4 SHA512 90ae5faa9bdcc2ce2198599c546a0ee9593fffb3271c3fcc07bef5eb39fe7b44697dabdd6eaf059a166a67dc5694c70ae2908ca3f6fc65e25747cd391e3121b1 -DIST serde_with_macros-3.8.1.crate 30796 BLAKE2B e7fb0a20c839ecea75f52d6ad5841c918f2c01ead7efb5ec5f0dacca23715cb9868ad792c7811f20951429f289ebc5a90ec4c4f833ebeddc5ff484dce7839f1d SHA512 fc1b854729efb24377f830087c21b6d996b19024ed38fca31dd4377f65991189e32db481387143f6fbb4b16eb5e80a89d91e97f40fc1beedd873ee93b01abe7b DIST serde_with_macros-3.9.0.crate 30865 BLAKE2B 69c764f45180463047045f81106961f274411200ecec6997baad0c8ed0cc25f7550ceccba122fe3fd8d248e3a3a6bc3326f7f9ea0bd3c08e81b93589b75de537 SHA512 451af6f14cac8ead53b9705c530cb6494063ea8f20d1a7ca80561d16334985b98541bd9c3a50857a4cf377ab5d84593baadd5503676540da8212f9c5fea89e90 DIST sha1collisiondetection-0.3.4.crate 799321 BLAKE2B 6a36035f19330da30fff69ec304c17ca0d8af74673b43dbf421dd9e67f3e522575e7a6780a2eaca3c4e799304acb40eecd0a3909642f03f18996196b3dde19e3 SHA512 d74b317f272ea600659288af786c656005009b7e2fcf060eafb71df07cb3de2b698e74088217ff99fa911a59e00653835cebe6bbd5457e549c3f9015d8dc8d7a DIST sha2-0.10.8.crate 26357 BLAKE2B 1d01b381223a931dc631ad3a1191f5378b1d2f3f9f20474c5f020e366624c73b08330ce8dc4bdd3e63b15f647276f533de655b545b77f70fbedc1a1846f44f0a SHA512 3be73133a6b7690e14acaead47914dc92395dca4191fb657a2ea186fefd0ccd94d12a1121d63a26027d9a9c62b775c53202473edc461587b9dcd75472af77785 @@ -344,43 +303,32 @@ DIST string_cache-0.8.7.crate 16655 BLAKE2B 9a017f3248a3d5e7b8c1a05462a882862b20 DIST strsim-0.11.1.crate 14266 BLAKE2B 252a9ede4241b165525486aa8855dece37af77f5b28e0e1858c4a5d2047db9fa958328db10989234aad69463ab51b2303785ec056c63ea8c95bf95e111ddabf2 SHA512 0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c DIST subtle-2.6.1.crate 14562 BLAKE2B 3cf4940b7a01f04715da1057f6a92b1043a6b86ab2ee7f9fee0337b680ff781201d330409460f6f90b3f81bb5fd4b563e17c762c6e824ba3b0af99e4ae7d66bd SHA512 f5946ebd9bcb8776ee3446abcbf4afb3cca5d8bd847cadda87e864333ac7ded537a3efa773e9648adf20ce4add2c1da85172cff88c1e1a3a6cb051401b00c6bd DIST syn-1.0.109.crate 237611 BLAKE2B e827445d00c79a8eeb91eacde472f1987addd6ce9e1df95d7abf6446a77ff4173a8006845f3ae71c1da47193cfb72e0ead9a6d6bad2573be12c17e90735d9ad9 SHA512 12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d -DIST syn-2.0.68.crate 265035 BLAKE2B 8bc6f68ed286bea617a2cfaf3949bb699d3a0466faeca735314a51596ce950e4ee57eda88154bd562c1728cfaff4cdb5bc1ba701b9d47a9c50d4c4f011bee975 SHA512 7b781f8ea2b0d01c06f47d165da99cd96e3b44a33de1d77c78a2cb37ebe3f8304f426ba3d0d1cf766241dcc0537908774504df7d455d63bf89ec22ac0499d372 DIST syn-2.0.76.crate 268798 BLAKE2B 5446965c6331fbb445a313ca8da9d8e7454e31d9a36c2f595747edc65c0d2a05e9d8e4e9fb6dbb30da8264c7db36b1cea14110201bb06e40bca69b25c3f79f1c SHA512 c633b9f68e67b3cbf2432d3648e42f8d92403877a0128becd22cb108c0cfab9f1bc6b941b9cde225d8b727890e9f86457fad05b544fd07be4c01c2e60a2cdeaa DIST sync_wrapper-0.1.2.crate 6933 BLAKE2B 0ec797ddead298a95bde0a508ae942a4e90943948d3c1e4833fb3ad1cefd3566b7fd1aa0b133d614839707e3f416e3e739099ac73441527213da81b6d1c47d50 SHA512 ca7cd7a6dd242fa420e8dba820117d85b1b11ea6a9fd99c92a5a260f12263cac0c034c9f9fe10090d5830fb5bf5eefc8a5a0d0b5a40f3f809d69e5393693d5c8 DIST synstructure-0.13.1.crate 18327 BLAKE2B b29ee88c559a2d58fa46b7af155b448f001649ea79a1898f0ac87e69108b87c65cbd287d8f9001f360df7fef06ff39c937b48d33e487a30c8eec6a46c639c0c2 SHA512 09024193b44fc9a8901bda845b9f86c57dad65d0f53e309b2e7e968538fab6f67db1c86e5e52a2eb8fd116dc073e3ad10983bd60764662ec6ba94fee22a958aa DIST system-configuration-0.5.1.crate 12618 BLAKE2B fa75a24f8db6eafe578bcbf162fcd110ca059c58af24916acd64959b48d8541e0aa95ce2c929a8a50c62e7e8a967de9101640d1da7805fce2f76b7c5c86c4544 SHA512 af77ed5be890e826b9b8f975bd2e63f3905adb24a597069a887ff2a861820f1ed40582b918f35c3d4eb063800e179b93e5acd7d5b48b147e9b16e3cf4c12840f DIST system-configuration-sys-0.5.0.crate 6730 BLAKE2B e40c4b5e7897cfe30b2fb6daa9b44fe2b83eb2a12d798a1ad8908b51abc735566becb0e001f52f5f8a0d3596f62a9eec631341c3a9cbd132a4f650f988c74b93 SHA512 764168ee5efe1ba82e847ed74a14d1f5f1892735e98657c3ecaafcb4b405d4f779592dfaade252f6a577ca2cfd5cd5e467c0b6326bbdcfa573c3ab01cdc8fc34 DIST tar-0.4.41.crate 51871 BLAKE2B 7b24e1d923089cff48e7f5be141838f5a3db78477ba58304b7a076d5d2eb31525f307d674546e0023e78836f992566646724870eee556db50e96d5a0c851cbcb SHA512 547d4a10cca5b593a04e3775bfc175a3a4de27f3c4dede305c6d50b63b4eb38152c6f06280098f14c4fadcca4cc9aa98626ea50aebe9bab2cb7b7f4e0c4d2b92 -DIST tempfile-3.10.1.crate 33653 BLAKE2B 819b183e7840f70270883ee8b6a91fa09861c3112eaadc65007199885abe099bd593e1cdc4d9ab48c23490a6d484cad9bf0e80cf4e718c369cc2418b72eaf09c SHA512 bac7515b85b0d01ea914b527f0fadd3a4d8e77c9eabe786977d2625d8a3e91decaec502dd15bab4d49a43597fa7cf7660fff4be1b043112d13b542a72443bf39 DIST tempfile-3.12.0.crate 34423 BLAKE2B a8b84f54a54be636f5b69791ca567e8b692d6a8485ef37e5a8340d26b32b1b0f9f8e9fcd9a2da90ec2fbd39c281d364dfc5723d06892832edb79ea5cf45d069c SHA512 1a27513548060984be894e6f8fc215831e4b2054b2244c6188bee76c477c001f294c762f2f4a14488c58c04e5d1473806d589c7bba1eaa2cc02d97656709be66 DIST term-0.7.0.crate 37082 BLAKE2B cb7947c696f71fc68bab3b25cc6cbde74b92380fdde5447399b06de99534b0cb2160963792824ac74a350444ce41a4fa16d6a9792a68d84578a15ab37ab76ca2 SHA512 9de6e836f1fd205b3b58645ec880eaabfc0fd8991e3980ef90bc6184b370a14676edb688a2a75bce412dd8ebd97345aef742afe5b964250e2b6f84e6b15b486a -DIST thiserror-1.0.61.crate 21264 BLAKE2B 97337830507c009dbb4cad84cdfc02bc097b9d39d0af2fdecfaa63f0c12229e60727244fa4e44c2d54daee67bf8b4e8492d94a5de55d1a90b8eeab8c0d082e80 SHA512 9c08b868eaa47178ee60733aaeeda60dc46d58d2b9c15985ba3dcae4923e8edf02b97556df52f508753b0ff52782f6ca3227e9ef6343066e5d5d3a89e03f3f15 DIST thiserror-1.0.63.crate 21537 BLAKE2B eacab5745d948416bde165d768f55c10c132572052db405ae3dd3e6e3b5ce41f36d574192ae68fecf6002ae5b14fd0aa135fe15e1614f3b51a294d5edc67c9ac SHA512 d5c2360075947cc0fff3253b5532f03f3102d6c9ef52dfeb3b400771116937e466a62ce67ccdf91532bf096f4882322522349a727588fd87b932326c8e758753 -DIST thiserror-impl-1.0.61.crate 15786 BLAKE2B d63773424aa047c6eed8a6c9bcc8dfcee9841a2d4fdf6fc2c117695c09359371931722198b2e0b2bae32b0c54b6275f964e679b78b8bef1c365ca33aa41562c9 SHA512 b43bd2ba6b751b777e2fc78aac92a3e662a1876f704625c4e894019fc68a6b7628b9c3b7ddfbd2cb15fe6fdc0ff679ff94b0c47e2660a40919000ad2fe1cfeec DIST thiserror-impl-1.0.63.crate 16047 BLAKE2B 290b56ece5c592fdab4d20e9ebcc8dfe3f76b00aa48ed6c216ed0ebcab86b1ab4b4d676d0f52329abaccefae12bd47b4a81966901fdcf4ca5d0632d5021adbb8 SHA512 f93b7f89784d72d8b6e36050c22b88b7fd8de38e9a90fa6fe3f45973ea1566ce8bf82e959951377e3bf584a32afc97812188be25983a028be138b1700bb8c102 DIST time-0.3.36.crate 119805 BLAKE2B d4da96368ab8565373d034edce261e0d8867036f2ba87e84b5e4a506a70ed3b62b93ba10734aecb39847e258cf7008b6ae57f92df8d0e5229cd3fec488d14caf SHA512 83da6e27691d1f0ef37ed276528e927686a06dab4811b6e29d625ef7a0f7c30fbb86896d74a2b087726e7a24a951b0a83aa1f5f22d711ead54f447d36ac47133 DIST time-core-0.1.2.crate 7191 BLAKE2B c477ad3410ff29f3bf4a38fc6ac4a043d49b6d2bdf5cf309ffcd2eec3bb6e4c4b62156ee7f069f0b37ea31c163bc75ccbf35abc1db2833cdd4912135e60ddfc9 SHA512 3861724c23cb806829a01186deb5217ae8252c20af622975264e6670cff528f42155039e4937756a9eb312a5580ffab07949437d5504d684a0e70755046cac52 DIST time-macros-0.2.18.crate 24361 BLAKE2B 09fa325be0b1a5b922285f035484b0de8e339306b49595c87f6374e46459d6777c6db4b12c1a0c6ea9795ae8c741188fbb81208d0499a651760b9f5089323fc7 SHA512 557786115add272290be8305ab79c44f5b4425b64eb698492fe300f15879d9e013c66933cae8aa8faad9c109e2917e7a0e43c8a5eed7f4b0f0fdad092089efe4 DIST tiny-keccak-2.0.2.crate 20129 BLAKE2B 105a2d2af36cc053cd95721ea563108f33b8a3feb2ae84c75a04a65ed5d548dfe35d8b2e48977a82f725c0ebcf914f21157c547f4a74bb4d98c2e894385139be SHA512 c0219f23361eb07e0a68575c461a36b7286d9bdebae89080d9e259178d402b0c7762ccf33e65a16951ea168392322c44a24eb55189cf143e22d09d6dfc4acec1 DIST tinystr-0.7.6.crate 16971 BLAKE2B 33a248261c4cded41a81f0d6e6c8df55437f042b37f235c39787986ec562f0dbff50b282ad0f1483daaf49c4b33e6618e139a6677d1238c21f4e12082562b4ae SHA512 a33051848de248cac0a2d151760a78cb3aa62c787d84ff7aac38b11c0660e9188e4d43d43a77fb8676e49ac6102015e9c3db057848d809e71981851875d0fb25 -DIST tinyvec-1.6.1.crate 46657 BLAKE2B 0579dd18a6ad47d995200535950ce0c2a0f63ac081ff5c54a5be5e6a9d5f0545266a2e44b09b847e2fbe88e374a9467ddcf7fcea6ad404e443c387d343eac3e9 SHA512 fc00617fe56c438ed417b9c18fb2525e624b6b6effd1b729da9b8f144b36cd02dbcefbbb6fd423c30b1f19309d42117a1eaab99deb0a46b2a474c2cdc02c1695 DIST tinyvec-1.8.0.crate 46796 BLAKE2B 720d0e6d881855a36779e12f5ffa708d3a8b96e6d0de9056cb33c9b8ce0d408f99b22f5b2bb9d64bee72a011fef846dbebbea2ccd238d7b951eb5ef0c4866e05 SHA512 b7b32e38229645965900f80f298685f13e6d13e58cfd6945409a6643ca9c9adc2621456956d5998ab9dd91c2db4ae79638b156ca0d9c7c5505023fd9b28414df DIST tinyvec_macros-0.1.1.crate 5865 BLAKE2B 2bf4f68ca11dc19c72232951605a4c809b34ff38ee365ee4f592a3c41360e23c9330cfba961e2692a0ad568fef4aaaac51c40808d491178cf7a0c4b5a1c5d484 SHA512 10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e DIST to_method-1.1.0.crate 4738 BLAKE2B 3648a6da105b96ed442f0d9c0ad279c60667b77590e861292357effc433108a734ddc0fa756e662887fc9114ed00978e1cab5b4cea8fc7f3b1a363df58cb61b2 SHA512 a5fba8d041f1862460fad430361ada6e622bf0879e4e7fb39d1d1d0aa286426e5de0a48f97c5019b4cc6bd8a04b7e58b3a5a42eb37ecca43e8f224995902c376 -DIST tokio-1.38.0.crate 774094 BLAKE2B c7d85234ed0de32526246d2ecb52b70b1c4b81681c6b26aeec256090b4aafb41a9173dbe754a5716baecf2c45d9e3cc02fa375fbb343da09e728890b0194b9ff SHA512 4bc16fe979f2261cb17f007ce8ebb05b915be79c1000c5c429744cab01755b933908aadba0005c84faba6bf5d486ae6e3aae6c8f9bf0d6a5dc0ab6d0390ebae9 DIST tokio-1.39.3.crate 782858 BLAKE2B f7612d99dd400d6bf28a7da8fd392bcfcc99b84c1c97bea9282cde86e655c48e9c5257271157e6d463af2ca8a479753fafab005531451e550d3c3c45d0a9c693 SHA512 cd3c4ec1a3a7ffb9a7c9b0e320d7b9dba3258fa0feebc0ab38b50ee2a34314632c4f62347089197e23eed7c76700bd12a73f9caba56dea51077ad1de56063567 -DIST tokio-macros-2.3.0.crate 11753 BLAKE2B 53429417a6fe3bc6c320ac5e321ffb2b19a64236a8a499fbb10b501d875e9d266fca2d82364a8aabdfecab46e4aef1b48d3b8ab3ac20086b54834c3e2f0f1b98 SHA512 cdb2f13141895035b76d38137dfd0e6829a5f8a617d0b63ec53ff51723c69e301d49f19c4b8b7e86c6e6a2cf58c1aeb35d071193029005fdfb9127f5a12841ae DIST tokio-macros-2.4.0.crate 12501 BLAKE2B 9b358adb86e828faeb956d24a1ebf68b51a69bce519ad9760ec3d3b8eb1cf4435afd4edc5ddbf634fe152bc77b8675182dda3f076f1011c5b5b97850c1fa1689 SHA512 f4a445f6c2cc7c1cfb5825919cd3dea3af52720c7793c20601d05870e7efbcfe0c6231fba7ada49b5ce46757f0e1475b3667914ff33c2fcb25e9a40151bd2501 DIST tokio-native-tls-0.3.1.crate 20676 BLAKE2B 4c752179aab8b4beaa6aa212dc8d9e4a2b7c12be0dbf80406f20f92fd12844a3390e88a1536875596ab44774a67ce35115ca4622f9faa977c80c4261ab4c06ea SHA512 bda2e77671e030a021f628ad760b3fbdc26e7483a5f9ef6c6892ae0fc38b538d52d527805c020d578079896d50fff0bbc036a87cc91604904840d5b7dc181914 -DIST tokio-socks-0.5.1.crate 16137 BLAKE2B 195c302b357369aabc9759709eed3369bce26d423d4349ee8c85e06dce8f985062e19e52f338d65fba76844bb56b1b36c4d501ef4079fc001aabd0be38dd783d SHA512 dc0ea053d11935646df436d19a653d18c7a495af1dd8dd0c02696dceabfa5b6e91f370072dae426848915f91c95f7c37a1f3835256e3e23b144b9380210fca2d DIST tokio-socks-0.5.2.crate 22102 BLAKE2B e090d5bf4cba7962f135728bec9b6c2745fa500c1876239ef4e5f88562b59600bd94cb5375a1c65ed923f0f11a0ee08d374dcdaa77e68d848b1b6c81612aa603 SHA512 ee0704ae63ccf65715bed2bb1b27f92042016e2cf4ea7c2dbb3799e60d068ab9a541ab3bf1a55523d8391351430b54c93829cb54f7290f47ee949e826c98342f DIST tokio-util-0.7.11.crate 113421 BLAKE2B 2bb1c64e4698b99a149ac3db137d9f80a691199397f98f1e6fbba14f411e849859d061e7052cd3955f000b31d97d594a4bab7928fcbfefcc9723980d3a1c80f5 SHA512 09956fc3eac8587f48cc739370883b96d19eb3de19293d240396b64b187178adc081248a5ed3d15accf97c27f9aabd0e6a1e3e2a194f330a0efcbebcd5055360 DIST toml-0.5.11.crate 54910 BLAKE2B 9ecd5103b33ab47d4be23c897c7095ca381cb79bedcaac4918cddc36fc7cf5d34ab664da52c2273d935f04486e9325241d6b66785d50aac78453c219aab49e1e SHA512 eddb82aeb8fdeb5436579292c6f7a64a90a2c7bb54070beb437bc7890b99795d0505faa8d6451a99e8bcf440f78db8a1b273a697c8ad44275cc4163a9ee49317 -DIST toml_datetime-0.6.6.crate 11698 BLAKE2B 8db35da8a3f6fec053bc82995f4abeb8d2855f2e94ed6ef4a4a6f47e956ea2cb6f8d0edd5c1b1cdebf83c7c218d9f2d80f48346e62fa7985532cba925891edd5 SHA512 710182bcca90f0d830423df41ff0f8e7bd10b866fd7ea1f6d37a315c7b4732a3b6fd61cf411b28051959034534010f24e250e10282c4e5a2539c2858f447aca0 DIST toml_datetime-0.6.8.crate 12028 BLAKE2B 62113366771f22b437b2ed0d3bb2489ae9078cb589cfad2ad2e92c81ddbda48f689e5a573366eea4f54c2b3cbc6b37eaa8b442b6d935b631a992de4917268757 SHA512 d38b98db3b2d4eebd3001d88e2135b6fdbae63b200f7e900c6bb9c121dd3f170e557332bd26f237312c1cbef61666716b0cf550c2d730f86fa7cd9eb5f64a16f -DIST toml_edit-0.21.1.crate 101661 BLAKE2B e794b6121ba7e2b1b3f50966cd40eebacee6968b6b28986cfe4cb7312b51ffff19f74826910d8e4ce307f74940f11e71e6afdd768ac196427bddf44595bbc797 SHA512 10cd3b16f763f55294923ce8f166f96fbd67a0acc4a93a46fb3044d8a38148097c592ebb405ced87030d35154abfcc971eacf0172b624ab477a11e616efbaa07 DIST toml_edit-0.22.20.crate 106726 BLAKE2B c545e7460ffcff1404dcb77e577121f6ef332645cc0566b2e23af72743cd40e571a74660e8034ddfe75c4ae5b0bac8d9cf2915e8c62c283eb977ed3a43449410 SHA512 f1514cb1c89fd0d89bcf13a448cd8f0a0a31e05b9c483d9167e6890d70594175dab570c267cbc6596382c2300299c8d1677a5a331bc407e80832da5b7a580294 -DIST tower-service-0.3.2.crate 6847 BLAKE2B d4571704eb4bf7f729f4535a04b7eb94f644d71ba8c5604297843351adf4bcce7ff64ec4e5435783ee6ada1b0a5c97726cfaade391525c6b2bca933cd5e8ec19 SHA512 f4578421603067fa708c4ad9eca5ca096b5262b6d51a404f37d9fbb6c64f027cec6114991e4b7f8324cb756c033971a384f1804add28e00d0cd6b2ee01d9e005 DIST tower-service-0.3.3.crate 6950 BLAKE2B 32ca66bff783eeb015af982b539acb63c9d426b931832b27aa45088382712df3894132a9e6e96fe1ed9d0f9e582b7a25b33e0ab73711acb06b4e134e69158452 SHA512 770cbca46d8500ff36fe84a9a420beb84a0e893dbeaccdd93a3970e746c893b5d32580182ef3017662f421e4b2d71f079ed2cf1727dcd5fc3443a4484f9b43fd DIST tracing-0.1.40.crate 79459 BLAKE2B 33693ee71564fe5925a63dca351e838dfd8612b4b1e49a33a70095e56ca63287c13c772661ace0e540d08c92942d7cbdc51ff2cce4f4b372164d9aa20ec05dee SHA512 5622188a45dddc0d6d3a8244a9b12db6221f4180944ce1019d18f4e613e4bd113dae5d45fb57dd0754f6e8e153b047cdf00c8f200782bb2b868bc2d423d99275 DIST tracing-attributes-0.1.27.crate 32241 BLAKE2B a20af0f50a90dcd64e5318e55779142da294ba18d1cd40059a8aa964fd3c92834e03ee563e41caaeef71a30e3f027e5c8d167d90e2844da79e0774b267e179b4 SHA512 7dc59f4234c3bf3434fb352baed2b81db4e931eeb3ed207c4a204e480da734be40847b167b808058d2807b5583815625bcd5153e2bbe79804cfa6f069a74ffa0 @@ -390,7 +338,6 @@ DIST typenum-1.17.0.crate 42849 BLAKE2B a6d1162050679e2c4ab2467f3a77d301f6861882 DIST unicode-bidi-0.3.15.crate 56811 BLAKE2B 1f1d372c86ec7444f13eb32baf13dfc8699b52156b265a2b53f40c0d771064876405451120fe54739a2679e6991caaf4f63e0644f03729cab814079fef4868c8 SHA512 7a21d5eb05ea8d691dfd54ce4cf7d3693d08067f7a88ef17b8c3044634f46411176b1bde1516c442577910b254007b247f5e40f9932eb601cd96cd574f9d9db8 DIST unicode-ident-1.0.12.crate 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920 DIST unicode-normalization-0.1.23.crate 122649 BLAKE2B 22ea5ce3f5a2b371c3c8782321b1bbbee724db1e4d8c1d43af4e6bd8044b99307c227d93631d178d10fda445a941a485882ae0015a6e3d3c347e4bd465bbe1d9 SHA512 539f04010810d73fde7b0ab314faf813f3e7ecd2e51d7975281554b7cba4a8706e2b5523c4b7840568593652360ca59e9db0e1ce342e71c28db635ff55ffb0f5 -DIST unicode-xid-0.2.4.crate 15352 BLAKE2B 80c327b39f3b8f2cdb5747cde968cfa1efe7b65b6bee9136adc881fa19f66aa5b1010d9d08de55a61b322d665b5b0cb0395e9ac471f6333c40d8dca5d97e123c SHA512 e67bd1258e1961807d9d5fe583a89ab5b82b2a529ecd32cadfc79aa5331380eb4a2db9fd96b74c8eace47f2f29021587d69bcdbf79f7e2650e92a25f7839d03c DIST unicode-xid-0.2.5.crate 15530 BLAKE2B 99dc8a0f9727c86fe3ec1ee119487ba4cae579d009720556ed598b58c0ec593f32b4f7459df81d4e4d06db351d368d2c565af7b03e15d4e5c984fd50f133cbe4 SHA512 ad8a23407aaf16eae14a44de201c4a0152bb07584bd36a5c460fb744859978cae131424c32033be4ebacc9f9a1dcd611f9ff4a98b84f560109d0c313585ce5ce DIST universal-hash-0.5.1.crate 9146 BLAKE2B 9095f95faa8ed4128c3787226f3899acec4278d36799ae30a7ca71ade7179c274a1807f62605e687e60ee97e6bebfe818100ed0441db455bdee0f8e5dd451809 SHA512 83b3ddb1f0d7ff621ca2b3d426c2e682d8339a2adedbbbb3a4584977e2e996549d665578729bff65b5693059460e9e04b9df2181c404980d3b3d946c80e0b589 DIST url-2.5.2.crate 79704 BLAKE2B be3526298a8816fbd88385caf49c2d58aacc7dcbe2d9183478cf501c26fb5f22d7704ef1313ba6d355e849cbf8ab7980310c1aae85e253a2b28d59099e23af29 SHA512 2515903e41c0659cb226f9bb049ef80f2a49d1b609b6ac480e570a84e899088ffe3be4fb58f41a1fa7f5288eb5f97ab513f331aeb6d56979df783d48e2ace28a @@ -398,30 +345,21 @@ DIST utf16_iter-1.0.5.crate 9736 BLAKE2B edcd9776113d4d2b267a9cbd58cab11c5497ff1 DIST utf8_iter-1.0.4.crate 10437 BLAKE2B 1e7a8b9241ebbb62cb497542b970473780f735010a0af900771a43abceae4e7f362d21d4f79f7c00630e4549400875ea17574b2cbe4f5ea19e8ed428e3b5577d SHA512 a72671995b3eb295581c60dc632e4a25ba257227fb5d58a8bec322428b6d69529bba79a6f02b8e7ee6698b7779d9d6695f5badad73e07c254b00c9d6256c9090 DIST utf8parse-0.2.2.crate 13499 BLAKE2B 095b5d219ab8ff04c06fd6303e03d913ae36a57845f0b2ca3217a40e31a54cb0fb5ecedbde165d28f5f60f1553d8252986d7098fa83befc84a7cb20bf3b76144 SHA512 f3dbf78fe924f1dc3cf9498b6e43fb10174699463f31091a7a8136d8f31ec84fc00e80e3d8551b7e86257e8b3573cfddb56fc0de797fdb2cde0e962a8f239266 DIST vcpkg-0.2.15.crate 228735 BLAKE2B 6b6bacd9a7fa38919241f45a97f58cae957e58d3aac99df208a26aa718e4f1644f4ccefa31b09151e5c1952288e0e5837c363918b98c7f55079a948a952c1c50 SHA512 7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 -DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 DIST version_check-0.9.5.crate 15554 BLAKE2B 131e75cc287518831e142430e2a39b48e4275874f4473780d47a27552294097aa1cddb65c385583e1022478f940b495eb43c24a8b1617b8ac5a24af3340c0d72 SHA512 d11d5a2240ab0c67ea69db56561ce202201edeef9a8e5eda3d9ae7ab7bb5752d8f343fe7f6536d8383de8d55f9024efa84f66a0c21e69563b7a38c4a628014db DIST walkdir-2.5.0.crate 23951 BLAKE2B a2d3a973f206e94699adec0263dd5e211347722cf3ab82536295019268b3125084da5dbcad818070bfdcb6a5de08da4eb483475bc225a829f58a1e3e040b5fba SHA512 da36a121dc6656942dc9cd9887fcf4f6eea7750354ef3f59c7c25d836e7afe06f33260b4d55d0d99421104ed4ce56ef2a1f0f4c3b713766fff90548c21793fad DIST want-0.3.1.crate 6398 BLAKE2B bcc1384bbb86db27b5e082b29a8dd4d89c37b40f6cdec4df8a86c8d205b418468b6cd42a78bd14ebaba057b28e151c00b474c098d7596f49a823ce33510c13b9 SHA512 f93f765113f035e134b967e8eb3f4511b8e03e793a47899b614d826afac02348fc02865c298a10410ecec4eb64f35f66c22bcbdbe36ed0c4c1665dca1db4d526 DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f -DIST wasm-bindgen-0.2.92.crate 184119 BLAKE2B ca256c686bb3854492bad6afe3cd27dab314561a1ea2e0205579820066b462bacdb2cc01075fb420bd20eb33b03a648ce1ff46feee04d8759ea8aa990ff8232a SHA512 6e46501276c0d4befbf930c816d6ae6c3764e3b5ce0ef4aafa627a6ea371f1a056ecc15970a817e9e9bf51c0a2ffa57df427d758b2d367beb6a474d75b8939a5 DIST wasm-bindgen-0.2.93.crate 43769 BLAKE2B e1abf981a042ebbc5c506975d5c2258942278fc000ac62aafe4221725fc52003c4032dc04a396e8fc8ec6712155e056ea9381a72070ee7c45b348ce470f52c7c SHA512 0c0a63b04b02b57fca78d2c0b885ea752ef1e8e4317c27dc84fd35843c9c396ae20557a1321c03a405b050f21895e6f25e95ddb56f3a3e8cec13928858ae8422 -DIST wasm-bindgen-backend-0.2.92.crate 28348 BLAKE2B 425497aa7a023b70549c55d5a15dfed80877c5503863b186c0a9d11b29551c4606c1cd5961c7dfdeee2eab5662952ad7ad215513e93abe727a33f84b30bd181e SHA512 22e4f5848d62bd1fd55f4f054ea1293e223b3cd6f916bde2523eec10388e733623492c3a3246d61831e696dffdec5d000b95e9aa1217be6e38dd6459872166aa DIST wasm-bindgen-backend-0.2.93.crate 30344 BLAKE2B d0b9f0cd0e6191dc3f57869023450952f2d73c0432fd4516522df5f63090de021f44f11ce7676fd2f87b31f6b236eb155b22b36eb80c3ccf3880f55ca23d4b0b SHA512 c67dad5fa26f78b233612cb6ebd44f48edd84253e46a2f5094e95da935185cf2a7be14d49247e8b8cd1d916721ed82ea44046080a40b2fe37ad88175a5f96597 -DIST wasm-bindgen-futures-0.4.42.crate 15380 BLAKE2B a20ba9f2bc814d7aac031f1cbaec90289f63893b76c60b536a65af85379771e102d6c3d949a8528328587ac776d7a3b684c12a217f9e186bf10046a1fcb34652 SHA512 0a77203499381b6bc4e9258480d7ef499d9c26b195baf38d0b7b228872f844d24c827cd57c8e2b0176927fd5957428084f53fe80cf60b35b7ba02d02b27a4682 DIST wasm-bindgen-futures-0.4.43.crate 14207 BLAKE2B b7337c1863af9975ef4a10ef64b129cb7b579fa83849ffb8406637c10bd86da4db0709d1af4161c787de986c98acfb9c6b382a4871f53298e0db30cf2c482eb8 SHA512 2499b47329c3dec1d15666eb7307fabaca086881a46e1a53ff2a551df1122eb2b74b18ea1e7620152a35407ad49a93223332e20ac042295799e55f156b7061de -DIST wasm-bindgen-macro-0.2.92.crate 13835 BLAKE2B 1f2202fdaeb78c32813eaf08b2fbd7aa9c469228386df71b8ffd81a46374e39a7104b79991f702505f9b7e97957fda8574517fbb03e3f9e93098c4d6e1e46be3 SHA512 78d2ddac88a9ca3ca5eef8a7af81cdf2366187a67d844e69f65f6893d1949f9723ab5f2be762c2217a5c21aee2f3dbc2d5d55ef0c9cbf0dec0d52d67a6ba7462 DIST wasm-bindgen-macro-0.2.93.crate 6822 BLAKE2B 3704c01b90ae900032e455a265b614d1057a7ed7b7eef1ebfdce75a7b0f0b97083211db562d1602160cf9e70843a1949be836465398787315d66ccf85fbe0801 SHA512 8b1a690bf4fc344728bae21a11c8ce4641d81b02e215d88a489f8155433d8e579ed367c96bc19a345b561f2ddb42afa44056b71e15dc935a4fe38fd7f937a632 -DIST wasm-bindgen-macro-support-0.2.92.crate 20092 BLAKE2B 8e274a4053e7afc680740e811c3941478caf5342e2206e3d28cdea9f9514bedbfa4f2b6bc608817306a1c455dd7134b7e17f0f04499f6bfb5302f29b041ac7ae SHA512 92543d2aad0b25798ec20e68832b823610c2c01401088cd9cac1684a86ddd1b567b3e2712acb862060f9c645a0df509b01d9834fd3e13cdaab97960f66d8daa7 DIST wasm-bindgen-macro-support-0.2.93.crate 20642 BLAKE2B 3fef9d35c09e97317e8531f11c3cfcafc5cb58126ab7a96374cd5e2e3f8736ef016b4c0b3b16bcdc0bef686e9f07439f263c54dc980649e9963b12d0a6814ddc SHA512 9fe590636e229184a944acbb8472c03db0a48a9094cd9ee204c09cee6c5241194a9757f06b09e7c30ba9db1a2feca616cd1e7dc0e52c7f1c1560c50c9d3adbb8 -DIST wasm-bindgen-shared-0.2.92.crate 7263 BLAKE2B e54895486b9a31cc4651b7bb042059cc84421708346c06a9764315ebd4f440a1077520c7d325d6889a690b2c06aa185d40cede2dc4d061b363594cbde20fac31 SHA512 70e3a22731ed8aec428433bf30500eb3f62e3b7f4f1be34d8bb3b6f34f99690fc85d49eb413caecab807064494cfec64242c6a42709dffd638046e370bf86e07 DIST wasm-bindgen-shared-0.2.93.crate 7527 BLAKE2B a2df995ba72d83beb3f347909c004d9693ee06cec62de248a1f96b0244c05dd8b62d46356f1b7eb0a29122517bc23270eb4eaf045e6cdbb7122089dc84829d9f SHA512 4e9271a746d3b3ea44bae472b7d9722edbcf262fdec2e03c18788d95b923c71c26f309e316ad3c621d5773311d6b1d5ad468cd7bdff015d162193b6effaf8420 -DIST web-sys-0.3.69.crate 728877 BLAKE2B 9f1678cbddb15f5a37331216a43785c72896f87e8ce62c6b9e69007316ca6eeaa7edbb33b9f2d9bf96c98de2a1e10afe491d8734657b186e2c3905ad1ff19ad9 SHA512 78b79ceb6a47485c766ad660bb8b971ba549424542a020c35c7db64a19f7b161617e464eaea0602f433b6ac4973b8d1a86a56e76dcda179ccea60aef1245347b DIST web-sys-0.3.70.crate 615438 BLAKE2B cbc8b7ec572a3df1b42d603efb3af1914621957a79f0217e75b6eaa192db6dcf2de9782e130ebc364f704e624913a13cf9dbbe816087db340bcff4a4021b7526 SHA512 337a12d7eaf2a643a7a49a026bccebde73fbef44f729daa6feb71c228d7d8ef72155f9f501b7ef9ea5c22a619b8a8591487841a67a1e12a6d1105d92f3cc708b DIST widestring-1.1.0.crate 85046 BLAKE2B 591f8ba6c3c45721d342fd4668805c19915d500b2b46b8e1e75a485ebc772db187acec791205415e5cbf288ee70299a5813a3185d933443d426eb61d7fc6003f SHA512 a4feb959e19d5238e89b0973f040b26849f896e7e9fd567d0e74fbb4972958a4dd76e74de5ea8d407b74cff28f20f9c80446488da6abdbee38aa87a94d683435 DIST win-crypto-ng-0.5.1.crate 44667 BLAKE2B 112a40af7aaa7d3e1c6d6eba99f3eafc7173a10f149e122eb5c658619f6898add8086ab8523695b8433bed89952d70a63e6f445b39ad4e9bd64ed98931002817 SHA512 735d245c56928db70dd4ca0b95dbd8be9f3b55dcd88961549dd51cf8e671eaa3a203b76a1e2ba073ed8b0042f9aea08fdff505f7efe19d8b2153589f9e811692 DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 -DIST winapi-util-0.1.8.crate 12416 BLAKE2B 5b48c27dfbb5db5c332f7e248138327b35ceec0909788b940168e7f6fe1402800da5e7690b2b1654da6c510b5c720330a92da16dff53ef15821f37fef6f335e3 SHA512 e186111398f9f0f0686e791ad0d72c39205e5f246b6e020df413e477ee07f32e91d09405c61dc92752f061f54fd7533435545c1a151477b40e2d68acc94a57fd DIST winapi-util-0.1.9.crate 12464 BLAKE2B 7fb9dd803fc2608c4e5bc75674472992d82da364f24c22072d5624d6ae6abc44abd3e3ea3c45a7558e045331f3d87572b306b4ab5de52c07ff3706e7f13c2a38 SHA512 c46b893f67ec6e36499b00736bb6b9421e0e2611e76784afa6da01d7ebd033df82f1be7cf8d871d541125d290983f98f26f759488ba9aface49efce8edd682e9 DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 DIST windows-core-0.52.0.crate 42154 BLAKE2B 9670bf02261b4ab2a24eff97dad11e305deac823cacfae286965b62b11bc035f19a55ca710eaa4359c8a4905433a94fe62a836b77ddd68f244ad6ac2c9657f58 SHA512 0c8f1c7e63c11bdcf1361150ecc83abbfba8da2c6d28523799bd286bf8aa1df61ffed19175e8cb3ef516a9afb6248b640c2101a2e0c09a99bfd7a18c6741bd36 @@ -429,52 +367,36 @@ DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8 DIST windows-sys-0.52.0.crate 2576877 BLAKE2B 69d6b560ccfc8f679e2678663ba606060d71fa28efa82c8aef8cceaa2c63b06f2052764d60163964f939649a26bbec6361ee4b094555e941fae92070db566980 SHA512 24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03 DIST windows-sys-0.59.0.crate 2387323 BLAKE2B 3110c8cd2bc005f8c95cd038a8d574af648dc19788fe4485f977376f92e36b911b1a542d669a07ae9cd4ea72a884ab01ec78b8a2b5587456eb202452d1d8fa0d SHA512 d35e009e979633a1f3c8468cd038bd5c8c0381405165ce03497decd7d9edaaac485d704487e4a61d9aaf4e4d011b4248408912df6a0044d50e8457259867e061 DIST windows-targets-0.48.5.crate 6904 BLAKE2B 7396bb210f37bd51da86f39fca3425c8f6610721d5c4e94f9fafa0a8a8046303b3fcc6979146bcfaa32f4406d242a0455f6cbb220f84c6ff84650e755acf5223 SHA512 e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709 -DIST windows-targets-0.52.5.crate 6376 BLAKE2B 1d39fd86380ab086c536d88e67b60956410b345790ccea62a25e6a700757b2a9cfa6dfeb7b86934cf47b981ea2e5f42dddf49780ad9829a551dc507fcf108641 SHA512 d00d7bc7eec3c10272e803ee5c9ea0d9b07c43311124dae975b4f5aae7408c5f2ccb2fe6e68228ea3d4e70b6b658382cac6992ea177f43a9cba2ef95c4fda0ee DIST windows-targets-0.52.6.crate 6403 BLAKE2B eb98d0a8daeed5fe76e7fa8edb2743e2a3e77dfb9c4ea68605a6ab10532cb7cfc43bc1cea0180869445bd940be762a40136500e26b84ca88b5e0c502004c7a4c SHA512 d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f DIST windows_aarch64_gnullvm-0.48.5.crate 418492 BLAKE2B 5c6f7d73ad05740f0bac304ed1ef9b2ea63b0d6ca8f875552ae299a0b73b1557e8fe996f1c2b69be9f2df350c9288690f49ee62239a2896991364331d6c55462 SHA512 20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996 -DIST windows_aarch64_gnullvm-0.52.5.crate 433266 BLAKE2B dee1b69cdf1fbd4143136909e4df3adaa7b80d7630a01ca9a42fc5ad0d5a4d9a9e2873b43c6d8e55de59f237d9199fad0768c4e1cda3b1e5354847bd70d4c79e SHA512 b4cf511025458fe30d5b11368af285610e1654a8986ea9f78fa81b8bb87d38a00c4869441c62692534df66d06baf14c8a4d17f8eb06468eb260b99e2fda6439d DIST windows_aarch64_gnullvm-0.52.6.crate 435718 BLAKE2B 8b12ae02892cb69401329034bbca671d13bd268a112120b56b90504707cef89decfbd2560492844a9f0588fab62dc1476ab7e931126b939015d25a8cc91ca334 SHA512 f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5 DIST windows_aarch64_msvc-0.48.5.crate 798483 BLAKE2B 60c466d6536426425a34b5ca20da97c8127ebeb4fb9b1363911165bada484f8913fcd50e90410b5661e0c27dbfe8f4eeaa62fb17d1f3566bfc82b6255e11619b SHA512 223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff -DIST windows_aarch64_msvc-0.52.5.crate 827944 BLAKE2B 3bcb16d527be1dfdf18a9105ab259a064f00e949937ca423c8dcd1d2b90090d85aa7e42ca6ccc50c9baeee1aa144123d0a04643f9ff1147e62b2fce28b8a697b SHA512 c8974f81e37a43d92c4a8b142705e36b7acc58d9150d80ffa3997433da878044c467a2d9167ba792d37a183a0082d912500fea8c8fed743f395b63ca62a5758d DIST windows_aarch64_msvc-0.52.6.crate 832615 BLAKE2B adc8ff61b6dc96d39c92c7d4221ae6aa0575edfc016cfcd046067ca5d8fcfd56d10e8e227be1c038ce34684be22c7ccaf5f18cd5a7638d28fbff4ba15b48b90b SHA512 a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b DIST windows_i686_gnu-0.48.5.crate 844891 BLAKE2B fdc37cd74a4982056bf22fdb7b84e1c55dc838f3cb19ff3648730a77e673ef4ecc0380b3e4277bb8df2fcfa25f57b69014713d9e3ed27c28e19b25b3ea2ab774 SHA512 931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a -DIST windows_i686_gnu-0.52.5.crate 875699 BLAKE2B 528ea431d080c5326e4c6ed316d9ea3e38b40c2e1322a12a432506a2c11555a94537661a0941e90c20eff4a9ce42c12539876dae6e77a1df18b522529928b309 SHA512 cc3e0362fb62dd5e8a855bda3be0177708ec8629ee9685f1f9aaac3f71a8cb082387388bdf49b09d3f5ee24a636b0b4f933d2c8bb75db434ee0192c8ce0547d2 DIST windows_i686_gnu-0.52.6.crate 880402 BLAKE2B 5aab8ee07132eccb7695807eb44811beeb0657aadfb672c54e99b6ae39c067ba9b93e38fc69bb5b9b14a9759f263ccd5e301597d2727d83b31b49a409b6bd405 SHA512 a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822 -DIST windows_i686_gnullvm-0.52.5.crate 473064 BLAKE2B abe41ee330c05ee1366b3a835d15c6db3964ffd7b340ee69d215056b0d4b65c67f2782b0c04a55db64001098de87c93e2d447e25ef2a27f2cfa6685b8cf20c88 SHA512 da45c882248070911bf55698f62c245cb081a23254cdcf578df053905adb9117454235e52dcf1dd97c0d2248f92ff1d2fd3e18844a7be8d93ba08590c1eca22b DIST windows_i686_gnullvm-0.52.6.crate 475940 BLAKE2B fec4fda8bb2bf319a501a22372fa642ae682e4dee3235b258a028190ee73220bfc55b3142f06249bb4579b17e5fde662bb2b121aefe18544653350d7d0fe7d8e SHA512 95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f DIST windows_i686_msvc-0.48.5.crate 864300 BLAKE2B 3d3ea8be55e2d6ced0eeda18abe1dffb925a1a78f456d683e4450d9f2fd287ad2e8494d65b2b770c677a12b3a60d10f0435e16c61880e3867c3657fd44892442 SHA512 70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e -DIST windows_i686_msvc-0.52.5.crate 895404 BLAKE2B 02555169f8c5b944231a877de8693fc871ea0d7d33f52f60e164bacb35cec13d463af07c57fec4667948047cc222d8bda7f6a0be01a07e7184b69e4adc2b4577 SHA512 08c96f8e9385ac121549bae8ed228741b32004be20b2955d163a98d4b62af464f1682cb813681fa22823d20646f19335cf0a66203a876b105e119e05a4db0634 DIST windows_i686_msvc-0.52.6.crate 901163 BLAKE2B 99ed34e052db5ba77bab240ed5d38ce450be347a794d63ec39b719304c32722c9999b540ab40abe0216318900b7412970df99dfb36d1516a9517cae0c77d1bdc SHA512 ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96 DIST windows_x86_64_gnu-0.48.5.crate 801619 BLAKE2B aa7e7e6a6ff9f9553ada3a0a39a9aa798e9d995a8eef36e0b6fdb2a0db93ddecee5548970575271fe43aec74797a420d0ee231d503b5bad1bd999059261e0e33 SHA512 1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74 -DIST windows_x86_64_gnu-0.52.5.crate 831539 BLAKE2B 54f84c19988addeb7cbbbddb940e430e7345944589419592b99addf9b83bf6d801b18f4e80399b85bbb0b0ccf4608e36d9a50b79d8b1d6ce2b93745856e06eba SHA512 d9bf91765d02d2727344e42081f4bcfa73be97991495126f7e633f27e56a261ada3a8b865a559cfe71f9bc9aed5b14504f89138796766937b3521009726dfab8 DIST windows_x86_64_gnu-0.52.6.crate 836363 BLAKE2B e2335829155cdbd4a55cc9f9babc237e14e32aab97f6f91afabcdf80d2aee37d6fb4b8669aaf433ff532c85dba59b3d366c7d41b61a2f29b96f960169c900687 SHA512 c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e9f435620ad64b40c579f6d0c3677553ad7a48e5765d12c266b04946402e15c92cff2e4ac4979ce2130750ef426e2672119680284 SHA512 c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa -DIST windows_x86_64_gnullvm-0.52.5.crate 433246 BLAKE2B f34328a6d100e092ecb34a6305daedf4fecd71840432f104e8707f049b60d784584ce4f02fabdd0281fdb8bc7ebed34b38fdacf3be9c8abd60084e9a4ee9fd56 SHA512 22a978c40df9705cd94e4c52f2b706e477e667b564c608d0adb144b38cb486c279c09d1eb1dd2d6c7bd3401b75a2dc5eafe0f7d642ffe6453f394d1f59483a08 DIST windows_x86_64_gnullvm-0.52.6.crate 435707 BLAKE2B ab77dccd06328cdb00175f41cdbc120594050a9678b7f9820444391fb50aada3911a91ea00f3a6db2b4fa1820fd23bc9a007dfbe65ad41417c26ee1137ef9b96 SHA512 67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 -DIST windows_x86_64_msvc-0.52.5.crate 827905 BLAKE2B fd5dac198bfbf29878cb461a7338c289c9af16ea80b3e5fa567980d2a6a5ea6a1cd83729ce6fd67e4da171873083dbeb1d6e16a287620f0245201f9cb29c29b4 SHA512 81176090dc725d7fe3867e6322fdc4a4065168580847b35e6f8da345f685c4f66a81e35cd1880dbaabdd4cdc82446dde9d6a0e583cf0b7fe47dda8bc8002f1c6 DIST windows_x86_64_msvc-0.52.6.crate 832564 BLAKE2B 8e9a3044654c6de99a9153e7cacd575474e7a8a3d883c67b02132af5d3fc99d03cd5f7a4dd666a3947451d11218e6acc6eb5e2526f012481106cc13453839719 SHA512 21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7 -DIST winnow-0.5.40.crate 159316 BLAKE2B aae5076d59b3459c901d918d8aaa97ba8bfcc993b8484344f52e45f1f37deb96d6cd3a1663a67f3c367be2b05d633286f270274c621bda9f3ab72b98bb652cc2 SHA512 525156f08514b0110697360be6e331a68d08f0cb65ee4ba3ac9d101dd2d42a8c89601e7409bdb5652c5b05145626506651010f58a854c47712065334c61ff39c DIST winnow-0.6.18.crate 163357 BLAKE2B 7a43eba294c43b187211c6eabc449775081f44405045ec4786c5f10290639e18d002e872f9db14caa94e26fd99079c7ce2f99e70dcb20d842c0886ac203d8ca8 SHA512 3a146d9dc8fe3fcc855f7766852cd69c49a28f9048d553d3952d7722d49216cb44652d98b15ae1ddee99b2bbc3caefb107a9b85c309242dac943deeca65a81dc DIST winreg-0.50.0.crate 29703 BLAKE2B db9a968ef96cc07bc1088831affc4627e09c7ab8170a54fdf70a599c2d6180a8a9ac46b6304b61fdd2fac96e01bb004ebd8051940300c7b52c5b7b7975732d11 SHA512 2f52a9e3ab794665263499c88dfdf06009c6477d180a90ebbe86e786ae7f5003c9dc8b3c26224024e79450f3b94688000458f2ea8b1ae1c3691453c3d4df4787 DIST write16-1.0.0.crate 7218 BLAKE2B 548796314339463e4b71f8af3d344e45dc89480e103180b6d56c90fcb816ad1a37ab2ba20766c4b9754f2cc686752eb1f3a5a12ec1ed4369a9cef749ad4f3e97 SHA512 655a207b8082bb88e462f992ecb4833cef9d590da06d6356b41d109df2862b49ee5705189c78a607b549e7343035119d158020d58fcad49608e51659357a83c1 DIST writeable-0.5.5.crate 22354 BLAKE2B e4ff9862c070b413568ce0c75d1eccafcf1db8578eee4795ea9046dadd643f8a77258b437be288b93af247199d63455298ac2cff909226bc432f91c0aa863921 SHA512 818b2546c8ec25816aeaf5e31a1ded927d197bf7256e7c5073738c2709bc58a95d382a0256eb38a99235ae83729b578701261866d42ea3357a26024906e196c1 -DIST xxhash-rust-0.8.10.crate 20066 BLAKE2B 5fca80ff05e00d5f78c2655093a963b08a16d2bd40e74e53c9e48e9812f81d668f9d60cd23872cb76ecb643cd381eddb841da5ba93a5f9fc92e42e6d8bb7e871 SHA512 c5a66c4c7a30dffe9d925dbfa8d0b5ae5b825770cb5d52a0d5de2eadf24c9af1b08b11b2e7a94ce60a30dabb2ce61cd3066cc781d05c90bc6a9d46daa2e04b71 DIST xxhash-rust-0.8.12.crate 21329 BLAKE2B e9596bb83cd0f0465c279deecaf4dd87aac05db1c8c7d3aed4f0689022c5a0522d976379fb3dcf6cfe1c18452c87890e95f3d17998c777d92f5cbe58119a20a9 SHA512 6fd17ec65be94b58f109b6aa9bb283e51092621e8af624f8c2c2c95558a3d0461d743cb8a65a0da5853ff7fd98273daec0dcc5b632440868524f99894beeff3d DIST yoke-0.7.4.crate 27781 BLAKE2B 42d6176af3e8d046b42fa89eacc0bb249eb0a6e13dbe7e97890b0cae98c3cc0059255f15314bbc343610d60605bf2d13869402c17d36cbf7f495956496572212 SHA512 b3d1456e28d53723470644ae15a4298fa96a79593d90729221ca4e45a6f09de4d7c554703425c61595c4e78959652122db95865c0337cc0cd6a4ec57d7bea84d DIST yoke-derive-0.7.4.crate 7470 BLAKE2B e5c0ca6f9cad4336b6b7554d05c3926d1720707aa70b588ebb884426747eb7d3d82614ba20563a5e801c4645f90fed9e067f50f43749a66e52f20c4204fb94db SHA512 5be38b8ae8dcb640a3fcb097e5b118354b45a41a0367afeff3c2ba5d13458524e88f9433848f09c670533d36a49a0e2b393e23368921553b5bb008e66e8e4a40 DIST z-base-32-0.1.4.crate 14008 BLAKE2B 099ed86e96c8434f1784c8e80143de91a357fdbf9db096fc461daa13de031b8561dac5e6cc1ab6edea1732b50e2dca3e15541b09e239852c04cad82e324dd96e SHA512 83eef93391d22782fd38ba30957a5569a74e7be529354eed3b24da71eb958a7bf17da7b3366e4f204accc2145a967819f0a07ae33e021063640ce9ffce7534aa -DIST zbase32-0.1.2.crate 8721 BLAKE2B d7f5881c8d3f06f5fd78669ae6943ffa5ebe35b5e34db2718825e88e5602fa03bbc33c11589021ad2e8754414b355b86a9391335e4df9361627aede9336b14d3 SHA512 50d703350a6404f0084b4d341ac1aef16f7a5f8924662c4d180ffaece00d295aec3f9925168d39c20837c7306ef88f98ffc5ef4c945d01c7fc6e5078c5dfb4bc -DIST zerocopy-0.7.34.crate 151177 BLAKE2B 30b65131370dfa4f41d3c2705d3b75da9b76f2a4ed723dec66345939de8bafe2c181ab6c98036c25a30739cae1720d927e27e5fa5587442d5cfb7f39a7018c8f SHA512 4d27b1230ebcea4e9d4c15f38a979aa3fe8b23833e95df781a0a67054e920637642b89345596fe331907edc27abab83c766967f2a04399a6fe0a4e89fa0dd148 DIST zerocopy-0.7.35.crate 152645 BLAKE2B 8f13123c9d9257ac5a5c6954d38c3510fa658624442f7e03cdcc6db5a0977d9f26bb4e277be172b7872ec365cf6e58ac742e5578636f7698f9f37093e9249d9a SHA512 17fcb31c029ae89c01e5bae5fb2bb46bd434120199a3dc2c7fe0012dbbcfe2a0bb38934c4a7d3a4920e3fe47c097403beee554fefa54b66cb390f8b1de638d3c -DIST zerocopy-derive-0.7.34.crate 37907 BLAKE2B 23a698c3c892187307007cbc76c9338dbe163e4f14d4ea73969ba834f5c6732d16f5bc26e2e85c5e3df2100b28e6e72ae6473b2159f5160ee19befdef3615f98 SHA512 1bd93062b0d2c699066f8a991326b4470426aae0517d33748a8f0e52b009fc46e6b0b238abe97462a2e13c870fa3d0d070615870e6dbbf8b6991c0e3fb5c3e63 DIST zerocopy-derive-0.7.35.crate 37829 BLAKE2B badeb7fa5e0bfe93a6788d93fd297604ed31de526b121549300ead3c49d450f49265f499e2e7ce606dcce2b59dd01f7fa817b8fbb3f237475185c5b42f5299c4 SHA512 dbe23573b62a6267d7bc8c744320b75b2fbda03b908c1d175211f7394374fe182bce58021e25485c10671d726b2007f250565dfe53134d51c89293bb607e9feb DIST zerofrom-0.1.4.crate 5044 BLAKE2B 8ad9a14b8b0c251cffb420f7ac673669fd29b74bc2f5e220c8e86d592f58cbb2c7be88d906b7dac8803dbd76ec459c4a249b7d1ede75a055454a1626b387f128 SHA512 11f37a67108185a8090cda71338b02492fabd15e6cfe018833a165cd869ed65338e12d7c5680ffb0b763fc3acbdff6fe4df30457653dfe4d79ecc864b69d780f DIST zerofrom-derive-0.1.4.crate 8232 BLAKE2B 98f69cdeff7df52822b982e3c089ccfa3ac2ce67f320b0d32eeffa899d2b34627268ed0a01b03504a0a6fcb6bef34d808cc79c811d5daed7f8acf59282e82088 SHA512 f2ea4650fcb4e7c3583f0f7c6146c7734cf6e80e07d92c330c6bc6a0a4e0fe14ae3393845713331240c70685e92eec114565c5be21189e687fe6232aef75a9c0 DIST zeroize-1.8.1.crate 20029 BLAKE2B 092eba034cd35ec47290020e0c2b213177ff5dbe14ab9e7f0b4ef3cb1ecbc42fbec2b951414e26ab00bc65aaddc2c93eddd5a1963b27c6cd613ac71c65d5cc24 SHA512 dd40ebe98b98fd742608d4066b5ab66caba94b2e679428fcaff9fe547d8cd6ff2360dc85d671ee9183e32fb79cb554d00d6aef9eb8f3d8ad0ec92d0435aa4ebe -DIST zerovec-0.10.3.crate 126403 BLAKE2B ed783804e7852c85f2d19225c2c397f9e87c9c52e1e31b222796aee5772503e9cf7bdf21c44c1566804a5e69585420d57d5af11b8024df69df063acc9704f5e0 SHA512 692ed6150047b131cd540c392351fa953fe477d9eea7a8b05f5e6d3bf27434e27c149099f8875bb0db5aa24ed1c974ab9f8afa14e9557022e91ad168d2831a0d DIST zerovec-0.10.4.crate 126398 BLAKE2B b078784d6f178bbb9de1c3c1b6c7ef996f00bdd7dfd2924bda921e62f3e09e953fbf50f8d0da99ac6ff6d134f146253846f5663549dcf8df08eaf34b9d4016b3 SHA512 db12bba1d7476ddead92e6dfcdcc30e2e0defff4f263a740244eabee265a2cab265473a663d3dc3210f48e113b66d951da496dfab7965ce1bc792e5f2db422a0 DIST zerovec-derive-0.10.3.crate 19438 BLAKE2B 9f7df8a4e4a0b62ab25aed967b26509db4bcc5d5b10b3bd73305099a4c49a60be8921484ced1a34d9b7ae30ffa5abe789686f432416a8f1cfc07de1db1dff594 SHA512 caefbffeb35265db9f74933bf07109d57f0da48156cafd4f330af78a5c7eb9ab0831a80789ad4fb119875ebc6cfd7e3de68c9984b77dca5151f9be41f1ae6e09 -EBUILD sequoia-chameleon-gnupg-0.10.1-r1.ebuild 8748 BLAKE2B 2bb4244e600af8dff200cb3b6fd90b8121f4326a595ef8cfc0f022dfafc9bd861af404b9f01091e097ca239e09c80bb54a883fb36ab60642c840af9dd100db8b SHA512 66a936c4b60d87451a6eba6feb741ecb24d88e3a69f6683da6214353afe7d7ea44697cc44555ec900c0e421499fcc073b5a9d85c15ade82ff55981671191a798 -EBUILD sequoia-chameleon-gnupg-0.11.2.ebuild 9024 BLAKE2B dab14b08a8a180e6e2f356d2d496f1af50317a3e5092a842cdcbc60350c2567274e3ae9101ca6ead4ce4c208a17c740570f786139259263795247c9f34161976 SHA512 06ab626509724ab4f910628a73267434aaf66bd41d84bd08eb7358b3112f9fe246095888b6f53fd4080b430f1e391bdc5fc093d287bfb9ca57b4d659d162354a +EBUILD sequoia-chameleon-gnupg-0.11.2.ebuild 9027 BLAKE2B 87367b7517c3e2b464bd1d8b2a56411efcf17659e5c041d6539597ae7c57638888e4764010f35a0cae443f0299fd4847833a0bc408442b47efe1229f3ab20b3d SHA512 d112cb686053a113157fbc8f6074ee3bf8947ca79cbc44b7d4766a0782c463f3018d7535aa6c336ae5a781db03fb3477cf3f7f0fc99a9da6edf1345f0196aed1 MISC metadata.xml 447 BLAKE2B a876bb1a6e3290305705c7b732d4225f658687095bcba12285f3c3e258177ffe9dd3ba0cd4e3b309dcb6e076906a8d568f9af1d932870ee1a4d471b9989a07cf SHA512 7d2d5e66179740cc71a73bc918c20ce0e022053841f60a1b8bbe71b9ef7df64457c39d2113e98043eaadc435953475823c0d8945e59f2ba3700b505680953afe diff --git a/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.10.1-r1.ebuild b/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.10.1-r1.ebuild deleted file mode 100644 index cafcc0f0b87e..000000000000 --- a/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.10.1-r1.ebuild +++ /dev/null @@ -1,451 +0,0 @@ -# Copyright 2023-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -# Autogenerated by pycargoebuild 0.6.2 - -EAPI=8 - -CRATES=" - addr2line@0.22.0 - adler@1.0.2 - aead@0.5.2 - aes-gcm@0.10.3 - aes@0.8.4 - ahash@0.8.11 - aho-corasick@1.1.3 - android-tzdata@0.1.1 - android_system_properties@0.1.5 - anyhow@1.0.86 - ascii-canvas@3.0.0 - async-trait@0.1.80 - autocfg@1.3.0 - backtrace@0.3.73 - base64@0.21.7 - base64@0.22.1 - base64ct@1.6.0 - bindgen@0.68.1 - bit-set@0.5.3 - bit-vec@0.6.3 - bitflags@1.3.2 - bitflags@2.6.0 - block-buffer@0.10.4 - block-padding@0.3.3 - botan-sys@0.10.5 - botan@0.10.7 - buffered-reader@1.3.1 - bumpalo@3.16.0 - byteorder@1.5.0 - bytes@1.6.0 - bzip2-sys@0.1.11+1.0.8 - bzip2@0.4.4 - capnp-futures@0.19.0 - capnp-rpc@0.19.2 - capnp@0.19.6 - cc@1.0.101 - cexpr@0.6.0 - cfg-if@1.0.0 - chrono@0.4.38 - cipher@0.4.4 - clang-sys@1.8.1 - cmac@0.7.2 - const-oid@0.9.6 - core-foundation-sys@0.8.6 - core-foundation@0.9.4 - cpufeatures@0.2.12 - crc32fast@1.4.2 - crossbeam-channel@0.5.13 - crossbeam-deque@0.8.5 - crossbeam-epoch@0.9.18 - crossbeam-queue@0.3.11 - crossbeam-utils@0.8.20 - crossbeam@0.8.4 - crunchy@0.2.2 - crypto-common@0.1.6 - ctor@0.2.8 - ctr@0.9.2 - curve25519-dalek-derive@0.1.1 - curve25519-dalek@4.1.3 - daemonize@0.5.0 - darling@0.20.9 - darling_core@0.20.9 - darling_macro@0.20.9 - data-encoding@2.6.0 - dbl@0.3.2 - der@0.7.9 - deranged@0.3.11 - diff@0.1.13 - digest@0.10.7 - dirs-next@2.0.0 - dirs-sys-next@0.1.2 - dirs-sys@0.4.1 - dirs@5.0.1 - displaydoc@0.2.5 - doc-comment@0.3.3 - dyn-clone@1.0.17 - eax@0.5.0 - ed25519-dalek@2.1.1 - ed25519@2.2.3 - editdistancek@1.0.2 - either@1.13.0 - embedded-io@0.6.1 - ena@0.14.3 - encoding_rs@0.8.34 - endian-type@0.1.2 - enum-as-inner@0.6.0 - enumber@0.3.1 - equivalent@1.0.1 - errno@0.3.9 - fallible-iterator@0.3.0 - fallible-streaming-iterator@0.1.9 - fastrand@2.1.0 - fd-lock@4.0.2 - fiat-crypto@0.2.9 - filetime@0.2.23 - fixedbitset@0.4.2 - flate2@1.0.30 - fnv@1.0.7 - foreign-types-shared@0.1.1 - foreign-types@0.3.2 - form_urlencoded@1.2.1 - fs2@0.4.3 - futures-channel@0.3.30 - futures-core@0.3.30 - futures-executor@0.3.30 - futures-io@0.3.30 - futures-macro@0.3.30 - futures-sink@0.3.30 - futures-task@0.3.30 - futures-util@0.3.30 - futures@0.3.30 - generic-array@0.14.7 - generic-array@1.0.0 - gethostname@0.4.3 - getrandom@0.2.15 - ghash@0.5.1 - gimli@0.29.0 - glob@0.3.1 - h2@0.3.26 - hashbrown@0.12.3 - hashbrown@0.14.5 - hashlink@0.9.1 - heck@0.4.1 - hermit-abi@0.3.9 - hex@0.4.3 - hickory-client@0.24.1 - hickory-proto@0.24.1 - hickory-resolver@0.24.1 - histo@1.0.0 - hostname@0.3.1 - http-body@0.4.6 - http@0.2.12 - httparse@1.9.4 - httpdate@1.0.3 - hyper-tls@0.5.0 - hyper@0.14.29 - iana-time-zone-haiku@0.1.2 - iana-time-zone@0.1.60 - icu_collections@1.5.0 - icu_locid@1.5.0 - icu_locid_transform@1.5.0 - icu_locid_transform_data@1.5.0 - icu_normalizer@1.5.0 - icu_normalizer_data@1.5.0 - icu_properties@1.5.1 - icu_properties_data@1.5.0 - icu_provider@1.5.0 - icu_provider_macros@1.5.0 - ident_case@1.0.1 - idna@0.4.0 - idna@0.5.0 - idna@1.0.1 - indexmap@1.9.3 - indexmap@2.2.6 - inout@0.1.3 - interprocess@1.2.1 - ipconfig@0.3.2 - ipnet@2.9.0 - itertools@0.11.0 - itoa@1.0.11 - js-sys@0.3.69 - lalrpop-util@0.20.2 - lalrpop@0.20.2 - lazy_static@1.5.0 - lazycell@1.3.0 - libc@0.2.155 - libloading@0.8.4 - libm@0.2.8 - libredox@0.1.3 - libsqlite3-sys@0.28.0 - linked-hash-map@0.5.6 - linux-raw-sys@0.4.14 - litemap@0.7.3 - lock_api@0.4.12 - log@0.4.21 - lru-cache@0.1.2 - match_cfg@0.1.0 - md-5@0.10.6 - memchr@2.7.4 - memsec@0.7.0 - mime@0.3.17 - minimal-lexical@0.2.1 - miniz_oxide@0.7.4 - mio@0.8.11 - native-tls@0.2.12 - nettle-sys@2.3.0 - nettle@7.4.0 - new_debug_unreachable@1.0.6 - nibble_vec@0.1.0 - nom@7.1.3 - ntest@0.9.3 - ntest_test_cases@0.9.3 - ntest_timeout@0.9.3 - num-bigint-dig@0.8.4 - num-conv@0.1.0 - num-integer@0.1.46 - num-iter@0.1.45 - num-traits@0.2.19 - num_cpus@1.16.0 - object@0.36.0 - once_cell@1.19.0 - opaque-debug@0.3.1 - openpgp-cert-d@0.3.2 - openssh-keys@0.6.2 - openssl-macros@0.1.1 - openssl-probe@0.1.5 - openssl-sys@0.9.102 - openssl@0.10.64 - option-ext@0.2.0 - parking_lot@0.12.3 - parking_lot_core@0.9.10 - peeking_take_while@0.1.2 - percent-encoding@2.3.1 - petgraph@0.6.5 - phf_shared@0.10.0 - pin-project-lite@0.2.14 - pin-utils@0.1.0 - pkcs8@0.10.2 - pkg-config@0.3.30 - polyval@0.6.2 - powerfmt@0.2.0 - ppv-lite86@0.2.17 - precomputed-hash@0.1.1 - proc-macro-crate@3.1.0 - proc-macro2@1.0.86 - quick-error@1.2.3 - quote@1.0.36 - radix_trie@0.2.1 - rand@0.8.5 - rand_chacha@0.3.1 - rand_core@0.6.4 - rand_distr@0.4.3 - rayon-core@1.12.1 - rayon@1.10.0 - redox_syscall@0.4.1 - redox_syscall@0.5.2 - redox_users@0.4.5 - regex-automata@0.4.7 - regex-syntax@0.8.4 - regex@1.10.5 - reqwest@0.11.27 - resolv-conf@0.7.0 - rpassword@7.3.1 - rtoolbox@0.0.2 - rusqlite@0.31.0 - rustc-demangle@0.1.24 - rustc-hash@1.1.0 - rustc_version@0.4.0 - rustix@0.38.34 - rustls-pemfile@1.0.4 - rustversion@1.0.17 - ryu@1.0.18 - same-file@1.0.6 - schannel@0.1.23 - scopeguard@1.2.0 - security-framework-sys@2.11.0 - security-framework@2.11.0 - semver@1.0.23 - sequoia-cert-store@0.6.0 - sequoia-gpg-agent@0.4.2 - sequoia-ipc@0.35.0 - sequoia-net@0.28.0 - sequoia-openpgp@1.21.0 - sequoia-policy-config@0.6.0 - sequoia-wot@0.12.0 - serde@1.0.203 - serde_derive@1.0.203 - serde_json@1.0.118 - serde_urlencoded@0.7.1 - serde_with@3.8.1 - serde_with_macros@3.8.1 - sha1collisiondetection@0.3.4 - sha2@0.10.8 - shellexpand@3.1.0 - shlex@1.3.0 - signal-hook-registry@1.4.2 - signature@2.2.0 - siphasher@0.3.11 - slab@0.4.9 - smallvec@1.13.2 - socket2@0.5.7 - spin@0.9.8 - spki@0.7.3 - stable_deref_trait@1.2.0 - stfu8@0.2.7 - streaming-stats@0.1.29 - string_cache@0.8.7 - strsim@0.11.1 - subtle@2.6.1 - syn@1.0.109 - syn@2.0.68 - sync_wrapper@0.1.2 - synstructure@0.13.1 - system-configuration-sys@0.5.0 - system-configuration@0.5.1 - tar@0.4.41 - tempfile@3.10.1 - term@0.7.0 - thiserror-impl@1.0.61 - thiserror@1.0.61 - time-core@0.1.2 - time-macros@0.2.18 - time@0.3.36 - tiny-keccak@2.0.2 - tinystr@0.7.6 - tinyvec@1.6.1 - tinyvec_macros@0.1.1 - to_method@1.1.0 - tokio-macros@2.3.0 - tokio-native-tls@0.3.1 - tokio-socks@0.5.1 - tokio-util@0.7.11 - tokio@1.38.0 - toml@0.5.11 - toml_datetime@0.6.6 - toml_edit@0.21.1 - tower-service@0.3.2 - tracing-attributes@0.1.27 - tracing-core@0.1.32 - tracing@0.1.40 - try-lock@0.2.5 - typenum@1.17.0 - unicode-bidi@0.3.15 - unicode-ident@1.0.12 - unicode-normalization@0.1.23 - unicode-xid@0.2.4 - universal-hash@0.5.1 - url@2.5.2 - utf16_iter@1.0.5 - utf8_iter@1.0.4 - vcpkg@0.2.15 - version_check@0.9.4 - walkdir@2.5.0 - want@0.3.1 - wasi@0.11.0+wasi-snapshot-preview1 - wasm-bindgen-backend@0.2.92 - wasm-bindgen-futures@0.4.42 - wasm-bindgen-macro-support@0.2.92 - wasm-bindgen-macro@0.2.92 - wasm-bindgen-shared@0.2.92 - wasm-bindgen@0.2.92 - web-sys@0.3.69 - widestring@1.1.0 - win-crypto-ng@0.5.1 - winapi-i686-pc-windows-gnu@0.4.0 - winapi-util@0.1.8 - winapi-x86_64-pc-windows-gnu@0.4.0 - winapi@0.3.9 - windows-core@0.52.0 - windows-sys@0.48.0 - windows-sys@0.52.0 - windows-targets@0.48.5 - windows-targets@0.52.5 - windows_aarch64_gnullvm@0.48.5 - windows_aarch64_gnullvm@0.52.5 - windows_aarch64_msvc@0.48.5 - windows_aarch64_msvc@0.52.5 - windows_i686_gnu@0.48.5 - windows_i686_gnu@0.52.5 - windows_i686_gnullvm@0.52.5 - windows_i686_msvc@0.48.5 - windows_i686_msvc@0.52.5 - windows_x86_64_gnu@0.48.5 - windows_x86_64_gnu@0.52.5 - windows_x86_64_gnullvm@0.48.5 - windows_x86_64_gnullvm@0.52.5 - windows_x86_64_msvc@0.48.5 - windows_x86_64_msvc@0.52.5 - winnow@0.5.40 - winreg@0.50.0 - write16@1.0.0 - writeable@0.5.5 - xxhash-rust@0.8.10 - yoke-derive@0.7.4 - yoke@0.7.4 - z-base-32@0.1.4 - zbase32@0.1.2 - zerocopy-derive@0.7.34 - zerocopy@0.7.34 - zerofrom-derive@0.1.4 - zerofrom@0.1.4 - zeroize@1.8.1 - zerovec-derive@0.10.3 - zerovec@0.10.3 -" - -LLVM_COMPAT=( 17 18 ) -RUST_NEEDS_LLVM=1 - -inherit cargo llvm-r1 xdg-utils - -DESCRIPTION="Sequoia's reimplementation of the GnuPG interface" -HOMEPAGE="https://sequoia-pgp.org/ https://gitlab.com/sequoia-pgp/sequoia-chameleon-gnupg/" -SRC_URI=" - https://gitlab.com/sequoia-pgp/sequoia-chameleon-gnupg/-/archive/v${PV}/${P}-v${PV}.tar.bz2 - ${CARGO_CRATE_URIS} -" -S="${WORKDIR}"/${PN}-v${PV}-802e7946793c8ead4acc70686f4b667b7e519c31 - -LICENSE="GPL-3+" -# Dependent crate licenses -LICENSE+=" - Apache-2.0 BSD Boost-1.0 CC0-1.0 ISC LGPL-2+ LGPL-3+ MIT MPL-2.0 - Unicode-3.0 Unicode-DFS-2016 - || ( GPL-2 GPL-3 LGPL-3 ) -" -SLOT="0" -KEYWORDS="amd64 ~arm64" -# Still some issue to do with columns? -RESTRICT="test" - -DEPEND=" - dev-db/sqlite:3 - dev-libs/gmp:= - dev-libs/nettle:= - dev-libs/openssl:= -" -RDEPEND="${DEPEND}" -# Clang needed for bindgen -BDEPEND=" - $(llvm_gen_dep ' - llvm-core/clang:${LLVM_SLOT} - ') -" - -QA_FLAGS_IGNORED="usr/bin/gpg-sq usr/bin/gpgv-sq" - -pkg_setup() { - llvm-r1_pkg_setup - rust_pkg_setup -} - -src_test() { - local -x GNUPGHOME="${T}"/.gnupg - local -x REAL_GPG_BIN="${BROOT}"/usr/bin/gpg - local -x REAL_GPGV_BIN="${BROOT}"/usr/bin/gpgv - - mkdir "${GNUPGHOME}" || die - chmod 700 "${GNUPGHOME}" || die - - xdg_environment_reset - RUST_BACKTRACE=full cargo_src_test -vv -} diff --git a/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.11.2.ebuild b/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.11.2.ebuild index b92ca2ca5745..86b2d4e8e751 100644 --- a/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.11.2.ebuild +++ b/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.11.2.ebuild @@ -407,7 +407,7 @@ CRATES=" zerovec@0.10.4 " -LLVM_COMPAT=( 17 18 ) +LLVM_COMPAT=( {17..19} ) RUST_NEEDS_LLVM=1 inherit cargo llvm-r1 xdg-utils diff --git a/app-crypt/sequoia-sq/Manifest b/app-crypt/sequoia-sq/Manifest index 998c72094c03..634e3ef81f43 100644 --- a/app-crypt/sequoia-sq/Manifest +++ b/app-crypt/sequoia-sq/Manifest @@ -13,7 +13,6 @@ DIST anstyle-1.0.10.crate 15725 BLAKE2B 36e656bd8f9c584f11fda5cfe0c2e24e8426b9e1 DIST anstyle-parse-0.2.6.crate 22343 BLAKE2B 85eba405dc5cf806283cf442984e86583dfe6c681f849eb7a347b7b67bd2b6f692e84fc9b5bd86486633cb2f05960ec16e8778300df114ae6676da43442db9bb SHA512 e28c9818afcda0e9b84c205d9c6697ce64cb06c21df2c3666869c07d66893105d9c5e96a27fcf2410a09f6af00735252e22b5c7d8c6cb3f68c4a8f376c49d396 DIST anstyle-query-1.1.2.crate 9969 BLAKE2B 179b8dd6dd709c2ca67f4eb5c9a502b2867cb6744a39f824c4fdebedc67c6c3e07d107c7d817e2ffb589d13b7ed4900cf9653ddc0a43663217042ee92ce8c9da SHA512 26069d936c4b1fb09bc65cda0253fe9be8fa4e96c0821f980c772602b4e9230035ec8c9d092ef95e0a0354ac559f8d25f57a14c34086d4d241b5fba688951837 DIST anstyle-wincon-3.0.6.crate 12271 BLAKE2B d9f4d9d46fa93a1168ca340562681718be852ffa94e30c9ea208af53af9d6697ca84921837a325ddc36681caab2b866b7f574901c80b5c0d862dcb765b81b68b SHA512 59ec6f5a53bd68b6344d82e923eb8c45ddac481dd0d270a7b452dc5b0540ee1656705697c1508942ecc131e7c075248c85d8f4159f27d97ea94f22469ce2eeb5 -DIST anyhow-1.0.94.crate 51731 BLAKE2B 2b8b7ed7506f31a434ff8af198256816bb196f3434925ad688820237893b54b14f3731d34a3968277f532a3b67c39e3c4aaffef43b42b13bb1c6d3cae50e9ae8 SHA512 61209bb1a81104ea86375bff12e6654047a596fd5282fdaa590301c4bcdafcdd8bc83201811063d565bbfab6be42544e43047ec88d2b0b41f7c5f2712f3a3b90 DIST anyhow-1.0.95.crate 52155 BLAKE2B fc9cebdfae0afed86f2dfb7faf62f5a108000895317dd0cab9c83d6e48c891558fc3a1d8b9940b623b4c6fd861631a0f0344a9915517a9bc39dbfbe48ec6b45b SHA512 8c5c176381c3e861c3c4451f7cd3d9e2447c0a55735ececfd3199288d65d36dc5fdc4a19a0798f62a0b9d6ca2c155a616c7eab8bcd53e6ece743aed57ec3d0fa DIST arraydeque-0.5.1.crate 17671 BLAKE2B 0dfd28da55d17c68795220a17a1c6ecc42380a853c96b80c8a5395eb8859706b5c573e54ea0ed71257b7668662bdd67363e3fa0531b99792511e4d41c03d364d SHA512 11d9af9882072d3f4d662789f13653481d7d3539bf9b8db74257cff25977e6419535f092683f7c5384a0ed3cf05cfcb568c1292b413f5f46580370775bf3e232 DIST as-slice-0.2.1.crate 6942 BLAKE2B bf012f6069b5c483daad74f556515472ed54f91dca1374807828c7e785649b7d438441ce9583800b3bbb02d97bc88cf263dc88f448c3771c27441cd2618d83c9 SHA512 97925c90833707aa88fd56c031059825b6c1f4454bf39fa732a0065e049671e92913fa546008db093dc17cb0925eb19cedeebc9d9eaee1a8fd818098c18b62ff @@ -53,7 +52,6 @@ DIST capnp-futures-0.19.1.crate 12493 BLAKE2B bcca7626ea4b384c5a6b8863eff9f01d60 DIST capnp-rpc-0.19.5.crate 94361 BLAKE2B 3137b328d47acaced0be7783d4c0942893084a5b7a0a809daff6174c4b932629315ea80beeb9372adc6b9e79a0d4da781d02ece884c36f53272ac61afe3f958f SHA512 bee03fb348d521406b15fdf9d09a395b8e8fb2622939c42aa8bc5efe542712f30faf1571269ac3dd15696ad7f1e2a334ae64911076685b4929358af0347b5527 DIST capnpc-0.19.0.crate 33806 BLAKE2B 05224fcfd8c848651f8f7ac1ebf301db9c66504e3a003fe64a0df1b61c0325b8db7a79958d2c9941b306707a87ae4b82b3b0a7011bcf16c48c643a9d26627ca1 SHA512 df2e6917b20c414cd09c50f58803c4368029999af76a7ff70559eb1e31b8d6c75ed789f8075591269a31e1b73e268da9c555fc745b0121aa94f721c742288f7d DIST cast5-0.11.1.crate 37018 BLAKE2B ed3d9283131df32dc18a5e4110a325b7713936e109b43bed8da0d22b0afe81a0f00c9e4fab0bca1194c93fe6f0bf326a5474af6f9274c310632b93d24dc9328a SHA512 0fe363b576ece2661616c47c4de1801756c5aaa2a56c720a7b4eedf23e031ba9d30af9d086a16b0f957c39b473cea1f059295dd1c776e9a9cd4393e6c895d015 -DIST cc-1.2.4.crate 99823 BLAKE2B f05e52fd921578f14907911730f1c5bd7cf2c03e83f2d5ebaae9c2710025f5e5ea7c8f713888bd75d80abfed1b8e932a2047410f043f0b62e296389c9bf695a4 SHA512 76274e9676f09277a22e4cfb8c53a08bf562f98b710b479af6f95d590d3762fca1d6ec34791a219d59e3184774f13f624e84733f7c90c13c48707b75d75c0ec9 DIST cc-1.2.6.crate 99923 BLAKE2B 61e091267c5b18d3c2886ee50870ccd3aced59d9f5eea31967e8739a49523226e2d1f0f383c7b5c3c9b6dc19d65bee319efb081f0c05c9d25847063d7f628081 SHA512 a9a2a00c58e0625aef2023c0c84827f17ee260bcde7e9407c98b38300ecaa5df852babbe896d857920c3455089e3608b54014812da88e597c500017bdd9a52ab DIST cexpr-0.6.0.crate 17966 BLAKE2B cb46f066eb1f4dbac00ec86dc3e562db7ee8ea5ff17d16a60004fa020405e455b8aeb3d001f669cb33d1b62525bfd04ec657ffca4ed44a83af4a5e75b2c820e3 SHA512 766bff7ca7f9bf0885aee6f014bcfc084e7fdfcd567a49443d5340acfe8f257db109de17b24588504fc35c53f2d4303e2d22da21f73669125cfca984950cf886 DIST cfb-mode-0.8.2.crate 25334 BLAKE2B e004871204d40258a052b7771f6d770f710857fd7355dd87ceaacff49ad0be2b3bbcbc8b439bff054432f336792e11e312b8bd472eca53e58036dcc4bd2f3286 SHA512 14bf9367317b2652cd070572f2a7d5f98884064a2d42c8841fe4a966e9944c8e5df3e14244c16a78a32ba8e2fa3df9348427d2f0ca6632df07fd24b75cfd7099 @@ -64,28 +62,22 @@ DIST cipher-0.4.4.crate 19073 BLAKE2B 144c45c1bdc5f7aef7f4fc63b6dd85955c45353756 DIST clang-sys-1.8.1.crate 44009 BLAKE2B 9173de6dfbd3ef9d5d1fdc559700cd3a52f95cd77302063a97e8cf311a35825825e030b47f252c857853663ae8a16709e1f7bd0c608d67c2a74eb36ed588e778 SHA512 a68c426c20110fddb8bba07d6631517b0528fad45802e5a34a22561d7e6dad82dc5001387019a03f275e9a671b09ee0a06b6e86793c4fb4ec655700bb0f5e125 DIST clap-4.5.23.crate 56460 BLAKE2B 5c0ff6ecc072368022b8dc08703d87802160817e40228fccbf9cbdc15d86dfaf0eec141dec4e8f1327e5a6d1622df9b334e94797027372dbe8765a12b918961e SHA512 4a8ef8731c9768844debcd1ba83a79a607fd32d9fbfe7411abefb8939c5c442e8a206738bb54dddd136117d3992f519ffd1640694ad7796c4e0aae3f95502c7c DIST clap_builder-4.5.23.crate 164180 BLAKE2B 90948ac5e8ea620be3e1ec1334677b0ae9dc227a00354fcd3d78e2cf23a1c101e009e6cc96fc19c0a2395e1b9ac6272fd9615abc1acf1a5d60392e337cfc961b SHA512 0889876990f0a361cc6b6d41f2a8f4b1decd376987a02fe69888455c92f3e583d6ff70880c6f0ea154ba62f4be7d2e7b18cdc4e0e2f243e6b17f250c3e8d1c2a -DIST clap_complete-4.5.38.crate 47669 BLAKE2B 4cb85c4605460a657abfed6f47da0582bdc7d5f99bd2e801a4263390dd2816319a00d091597bb62699a6f351e693d96062130acd3d06c26695779acadbd11f4f SHA512 a0d40df8eaf56a0688557b517d84a676c86c5b080aae118375201d2196ad3230540f5f8f728f1e3dfbd0c5c95ecdc7b75188959bc6b44743859aee00f85abd77 DIST clap_complete-4.5.40.crate 47827 BLAKE2B cbcde3d6c151aea0ee1dd0baf2f2315aaef58dcb58d46f30a3e16c44addde33d6e22c4759d5667da1bd439820b8c666523176fa6df7b70ee260bc386ea38fb87 SHA512 3d5dcdec9394e09822924be2ad2722a98a4b9d8deeb097e90f446cd04fe26974afa66eb4ce6ed275eeca192cc4006280e64ddd92981dc2d043bbfb2585ffef1c DIST clap_derive-4.5.18.crate 30131 BLAKE2B ff962e52d8d8afcc9639365e27753c6c6943fd809ef89d9e555e8be5b2f13efa650bf1f9ae451f4c127c1529a0af1d892c3b02153b46deb912029b45983e01cb SHA512 035bb918bc7e9badd59341560f23e3a8a2e7cf945b6d8183f74052c4edfcbecf07c9ea6fce0ceef0b84c89a99d62b11760af39398897e4ee7dad0170a96cfefa DIST clap_lex-0.7.4.crate 12858 BLAKE2B a5ecd50cc503157dd69746f3b6e9c288e0fe4f6d5d82271499f657134fd401fbe076255e2be6a23ed0b69daf3941c6429dad8b288223b0ad390a2c435575cdd1 SHA512 a2566868f4619679d3b74b70592ffa6a04b13e38e3196c56bb1dae8bea0c711bddbccd778d2aba3cc0ee074c9b1cc0335222818f0d47fb3cc8109cbc35bb992e DIST cmac-0.7.2.crate 44847 BLAKE2B ab8539f41e720f132b2da3176e9c533a2309cbb3dcdb027af4c5bdd6ac68e4a2a97f53efda52236527a15786b73bd96ad940385002412330d7cde60e3492a6fc SHA512 9e55f9f9323dff330ef45da953bc35da79ff8fe643b3984479dbab10b35e05e4d613f7329c46bc119fefa589d8f5f3bb268a7e7f0853003c1e192fe324e83315 DIST colorchoice-1.0.3.crate 7923 BLAKE2B 7055fe61677143f0d4445ed5f6be2cbc284c155aa6ceac04df6f3fa2563a225e440ba708bf40e298ad09775ab7c7e1842b5f6dd78422b06dbd1250908e3227ee SHA512 fc26696189d3935d5510a1237504339c1f354d03ffd3b4e830b7080335aa778bc72787ac5fa9a67a731b9bde2788da778d497f2ef97ec68bdec5145fedf4cd14 DIST console-0.15.10.crate 36449 BLAKE2B d0d2f161ea045854f0f53af39490c37af170888241b2f63bb47749b288ac387e24e52f936651763a5584a20bcca3512b28d50cfc4435d97ff06cb5de20768e29 SHA512 2d4b99912215a1e7083ac4cdd594f6ef7914152c683f007babecde2be7f3d6c2a861a198c9b4306242d84722d44965185ba846041e2ef13ee9ee9a5d43c370d5 -DIST console-0.15.8.crate 36364 BLAKE2B 467de2c2fbfe31688cea20b338558ae9671e50ba1fd07983d21f32d7eacb73e565ebdd6ec5e78b2ae04446f09615c70983c0ee534e25ca5a28fd1b408acfdf34 SHA512 b05e49ed145785e29631d481885788f0cc5574d4d7c4d90280dfedaee7f8c1515072c9c4cfe6bd2e017230cd228157222af7e7d41a9fce697cd1888095df4de9 DIST const-oid-0.9.6.crate 45382 BLAKE2B ac27c689784fbb1f486cec1c17502c8738ce3d7d1b579391a151cb0f0a6a0c8335e474d0a517c59230fcac74317396f20ac15d66e2f6685780be01dab197fd96 SHA512 b871d3b4326c4828b1c1d7a3e968315fa320e0b52e97081a95617ded0dc5b93d42b3f79ad26ff3b58a4835dcc442473f3965c2b60026412ad6aacc0c23e9f399 DIST core-foundation-0.9.4.crate 27743 BLAKE2B 5b695e671cc833170bc6bad436b2d0d8d386ffb8181bfcf2e92a1d93cee67c3ba1768cf57064fb91b0897c6aec1be7db40b5bd256a052c1bdaf872ec19f6e15e SHA512 82d0878a1b9e3d56b3666fb5a78f92c6f7806d01665c242c06a640bd6b1fd36260211e92dc05e1a16d1430622bfdd650aabb0b5bd8e5592f74abdcf412448e33 DIST core-foundation-sys-0.8.7.crate 37712 BLAKE2B 0e1dd99a5bbb0fe92f55181a37426f6e86445cb20e355f553b3162c88ccc075644461731a0cdcd93dcca65b6cef1de62b409afbd73ba3070a199ab8e7422dcfa SHA512 17492d5314db03abdb3b1998bf0c396ec8ed0f83bc978ae22d6026afdc86c50b58cbac073b3a0d97b92da7e98be11302faf1249d24313494bc058add4f4cb63a DIST cpufeatures-0.2.16.crate 13405 BLAKE2B 06d061cb2577057bd2afbc8cd6783488595701dbc46772533645d86aed71ba8b20905625b897840c90aaebb41360a286935824ca49bdebc0763a81df4bd64402 SHA512 97707ae1b533ecd3a6fe412a22fb70cf4ac278c2d7dba407fa7dbebd110d06f88a7b3aee3fb7cf4b0b5ca88f6fecf390c4d3e5ccbd4d18a75fc2f93a647e7074 DIST crc32fast-1.4.2.crate 38491 BLAKE2B aaa3acca66e5814a45f12a90ae09f6ff5fc14ca94c8539184dab6ed928abc68cd1d37e539c268c1effd50ab3af20de6038593fb9c6bd6a664785dac52f6939fd SHA512 c7608d33022062e217d3576f536ffbd51479855a5e5874529c71db2bf6a937ce04d814c39cf777309c38445393bf43cb9996161947e28738abd432f11beb7266 DIST crossbeam-0.8.4.crate 10500 BLAKE2B 03212d9789a66c1eee7d1f4c7883eec1267089ab9d652ba5d7d59a22e04ab878e5defeccf8cff4587a34d976488ffa689bffde596588057d814b633ab3d67d1d SHA512 63650fe2d46ff2e593342b398c153facd3cb7cd72dac9b057ee0aac5ef5e9dd9df0e71536d66879676c0edaa89787d1f365eea35c82604ca46090e527749f994 -DIST crossbeam-channel-0.5.13.crate 91174 BLAKE2B 7a9aed6f4922c1d10e4ae12508a03dc7daca773adad6a317c4ea38e544d7c28c56a06623d958aec540fcaa86fa9051a1aaa2c859dadff72873f18f2f3a951449 SHA512 0f31223a7099f84e39e6b76b19cf26736e0c3907fffc2ed3eb0012c7984b1993570bf6d155eba5bfb82897ef0e4fc93b89096071410bbac256ca6be9a9568ff8 DIST crossbeam-channel-0.5.14.crate 92728 BLAKE2B 0da1bb0f0dc6f35c4ce8d4bb058d61b7c3ff4854f71b58968edc691c1d7016ec845f27e2fffa34835e86f19fdf4507275b013946b2fe3135dfa83d328ecb5199 SHA512 ab3448f7adeccab3c1d988746c3db1fc1e8854a53f7b5cad63fb7874e5b6f5663d34541d4c5383472db56a7c8b272fddfc78ea2ac1792a18d6c8230dfbabad45 -DIST crossbeam-deque-0.8.5.crate 21726 BLAKE2B d97b35e8e8858deaa7fa9a836e836d02914aad29e5c34ab121f52ed65e95213cb2574df82273277365889ea771f04eb40bb2439347c259979f1dd6d5e9853bcf SHA512 0f0c9745763ab156136227cf1415de514952a3f8282ffe413cc249f9f4b345b029940e6a6c87b3be8331a7c783655a35b89c7a2547360ea5ae10aa64ba7ae864 DIST crossbeam-deque-0.8.6.crate 22471 BLAKE2B 02b854df171b0430ca8a40349674ff251698d0c322c317055da8678da6661730c945d86737fa4947c3bd824ffe402271ee2f77fd6a505d2d46b4a41454c510c8 SHA512 9368c0c224c4b84356f1d422d8869a5ab4bfb36b0ff69244a9e7a7304ed51f034001cd9b2bc35849df874d36ed34285c66574943573522ea32bbdc5a05df6989 DIST crossbeam-epoch-0.9.18.crate 46875 BLAKE2B 200c256cad6011a3a14c4664bea6b150fce72d561c4fffc387fa561b08c0480e8756bf51c14874c5fb19f427424547f72d2cd7dd6f56fb8b6666a85f8d52bfd1 SHA512 0a8a199b9d77f4e28e91fe0a0cbff7e0dec58cac283631fd972477fa912d2f6ddfddaed2c695e4978b01cb5440b702822af6333e7c3dfbcb9a2c2086999516b2 -DIST crossbeam-queue-0.3.11.crate 15581 BLAKE2B 91b9797f985af06c854c38b8124cb67864bdb47979d2e253928678118515fbc1257108c7102bad66e1f65fd6f324a93749dde86b4ea28f3bb5a16491f3f56ed2 SHA512 c6007307ef9d219889e6244805ae759998396e1d0548e3664ce9ab366ea78917dee75251c4265b0e3ef4ab15b5c6d42d6a5e9b286d17ad42ec169e7fcddb8ffe DIST crossbeam-queue-0.3.12.crate 16270 BLAKE2B 75be9d53340ab72e5e52c940bf6ba5dc417d3245fe18c456ca68b460c7747f7d99340517fa1387c7153faa8a0beac002fe3eabedc8638d044e0c05f4c5b98d56 SHA512 a117977e55c0c2eca2a6141e3292dbc75ae5d80c087f0667cd767b9e9ee0f9c87084ceab34937b66b28a586b071e518a483684bb041e6410b2c3ab5924bef769 -DIST crossbeam-utils-0.8.20.crate 42487 BLAKE2B b50da06721cfbfff07825574feada8a28d3814edb218434288683eec31bddabe2ffbf7e5ef1281ee14a8a77c56db3b66f3c5ceabaea9c72317c1bd2cecda0c26 SHA512 7175eadf9fa7c526fa11ff87e40ff203f0e7a4bcec15cb972f924f3c7ff7cc20b6e2e8dbbc1ede142a0207cd2baa4f446deb25d825d28a54cbd25c263701bfaa DIST crossbeam-utils-0.8.21.crate 42691 BLAKE2B cd9015c41f532eb3c90101603f32d383f01e6880718b727d6d1fe46872ae276cda685e1b548cf77dd22bb1a05f0d4c4982332c2bde90e1743dbd7f51919022a7 SHA512 6f4aa7ca10c20da291c4714b56ceb1fab1c06b03b2f4e28e474e9aeb95ab6615a25462dc7819713652c3b5f6a06fa0f24ebc92c533fcf35dfcf2655857d975f8 DIST crunchy-0.2.2.crate 2995 BLAKE2B 74ddf8c5e0deb2ceab65c20a2743e1230739ac6aa3af60c9e867a7852270697a1278b7dee00df8949fc4268f9756a4a098df1211ab3b3e31a122652c3ba0a6fb SHA512 36dc0aebc41a3aac5f1b178a7e61b65bcd9bb5c8539b2024f79428200f7c62daa7098af55c6ab0765febd2f8969bd6c0ac8096f73cdc0958e5c4e4eb6a4f7025 DIST crypto-bigint-0.5.5.crate 83384 BLAKE2B f688f22331b4b3620299ae9b50aa9ba6e1b2c7a4ae55e4236f7ccb8ddee4f61950ee0332b6b67005bad505434f3be74b1a0caa426036dde94162289c6926c8d4 SHA512 04668d432b4169154934d55b8ab14f708e59f70a70704b56cd72ceaca460e15589965aa92a22bef20b32ce637a423cc6e1a8819dfba38a32353bd749f7126021 @@ -124,14 +116,11 @@ DIST either-1.13.0.crate 19169 BLAKE2B d6223c76421babf163a694aa513fe07adcf4cea32 DIST elliptic-curve-0.13.8.crate 63198 BLAKE2B 542536886019beb276b587f906c5552d88229eb06364d93db5eb6c93f70555e9e38e4636bda14789e5ba5b54321c0c6da85aa8d584e638fccda107e296c4d8f1 SHA512 64ec7868cfd2350f5a0e9f4fa7e2225b7f5532b8514ed6d5b8a7718f252f94caba4acf51b2471ac59717783289c9f2ab35d47881210ffbdeff08a85f68ef3042 DIST embedded-io-0.6.1.crate 13133 BLAKE2B 2521aa9ee265515aa1b393764d4930cfa1c7ff3833c4fa7385da93488ae536ad19eeb787e8cd45f136ca36d3cd2f96c42d0b2a0c79c9e8458fea4946d60d66bc SHA512 7fbd25740c74de3ed20c0effb39818576add1d3caf696e5a1e617db2f802eb75d08138771f2eb29047fe83e928a667ced6a23edb9f971143d198340235378e54 DIST ena-0.14.3.crate 22986 BLAKE2B d79daa3b5f3723aa7cd3c0b432b7332a0c43a5961adfcc8bed7e43bc656e54ea7e06eb1028714c7f0b52509cf8e6b972d2ac95c65ce808deb0facad2bafe0f62 SHA512 d4c893973372011505a762f4a823ddd4b50d8ff3a2f91298382f9c580fb6f688aeaab43d504a0783f8384280f7be9c585e8a079cb38959e8fdd4a078d1a642f0 -DIST encode_unicode-0.3.6.crate 45741 BLAKE2B e1e3792bc2bf9db7df33a516d0d755eef5eff1249aa9b2fd7f0dfcb155786c566fb619c9b2d73425a8625c8593988b117e9676c341f65e8795ddc838bf9881c4 SHA512 64193d6ac75f66d58ed864169b5d6228ede36dcf100614395e086bc8e847a3ddd287734d88e8ed50f38c679a99c80ec68449175a67d8ee03b02ec1cfa9d55e77 DIST encode_unicode-1.0.0.crate 56986 BLAKE2B 76e8915408c26bdc909e9ff2d59a1655344dcb4ca0e6accaf038434b7518f1b86554954fda8c7874285924c7d16cc81f62e68afcb8b0efc639407b558df1470b SHA512 c9a21d48ba9d50750789cb6fbe32afd903c583c9ef05a9741007dcdf64b1344735f71dd882ad71ab9e5f96f8839578ca53bca14d13d57b9e27b8cce2cd507359 DIST encoding_rs-0.8.35.crate 1381050 BLAKE2B 2db6797e4f226b3836c18496ed77f3fb113fbc075864fd264f23c4fec8396eb3a01c439985ba0586a4464ac4043ddd3acac80e0ecf897cb59569e5065ce2137c SHA512 4b55b53553c5cb6fe05ae81d1c6f3b0bab73ecd3d426b15c58b9de9ea8dd61617bf0bb2e6d3ae2514c7cb6e73019b1a083173d1423b3ece2d190770c597114c4 DIST endian-type-0.1.2.crate 2340 BLAKE2B 6048948b467403409807fec776add4366685282a277d4ca40c5fc901228c0652c5759210048b28a94c8bb04c39bb3b359d43254e953e5b476112da7e49151a5b SHA512 d8a9b125fb87099f8bcbaf3688e2feb1c463ce624cd3dd36396e75e7aff177ed5033ecc295c02f491be04dbf240aac376e79a5c7cb591c3b208c442e1c1e6bbd DIST enum-as-inner-0.6.1.crate 12190 BLAKE2B c2162a838bb717ea7859d5c11ea820aa6bc79210bd6a9e06e4f05bcd17a3c92bdb7d98453d58911f96dac79bdf553730b58d4949d268321aeae324187602ae09 SHA512 e6f80a4a47f5901301debff47f1e88291ee6d29dda2805373ebee62f77c149a2c7f8d1188f8a365f2e11f5497025036aae4a4c3a7f570928961d1d25d6caabd1 -DIST env_filter-0.1.2.crate 13327 BLAKE2B 96f888b30ec8b40032e588f8ac73e9fe23340af71d5ec69cd8b4dc2bcc272ecd64d1d3ab54bc57e7a71a44cbac497ee7ad3df52930dfe3c7ba7dd129df290b73 SHA512 b1f21a5d4aadfd940bde3e53935c04da48e48cd4f825cedaa83968a08244722aa4e92afb9fd2fdd228412754f040f7bb68f24e05c0bf9bf57783aec042808606 DIST env_filter-0.1.3.crate 15191 BLAKE2B 95fa27602c10e819ef09b8f4935dcc3204104f7c5a0227e5fd33cc51fd77f70cdab3d822670d216321f263643d1f5220f5849002ad857925d4170b1b56cd3fd7 SHA512 94db29f1639636655e05ab02611cf14d5c2c8778be6eddddf0b6b8c21f364a71909a2ecc3acf3f4062d5d3c79a6316e9ef30b2fe042f617108af8431e198d344 -DIST env_logger-0.11.5.crate 30683 BLAKE2B 9dd2b461be5c5cb3411ebba8bcdb53a78fff28c54fafd21a0f8c3fe578ebc3882ed5df63a5ef9adf62bce00fb6360de895457baf75fd2ed1a6730429478c32cc SHA512 e2ab1f117227ebf8840daaff971c2533830c0e481797cdcaa055a4506ffef78fc0830bfa13295275c604273d494278d43440b987132f97ed6bc1cf705e05cd8a DIST env_logger-0.11.6.crate 31105 BLAKE2B 536f7b02bc6bd4f186061d55d2c5fb0d57aa91adc73d0c2521e0136573283147d5d336228fa7b64306daec9f488a2a83c83b96f06d648f45c3b52d04699b15d9 SHA512 1ec41e4c4eee4ea6bea38d40e739b1f324ef236fc786553fd77c6bacf6303f13d35c1626d3408a18346d42ebf5c896869deba133ef34b8cccf3729957c72de0e DIST equivalent-1.0.1.crate 6615 BLAKE2B 302d78069d9df05e78b53f0488a9e4eb98fa2bc1e21893dc8a0acf2234347ba7c4df4b9d6b380ae77d8ffb1074b9c790460fe2dae47318aa1c4fe4208244540a SHA512 b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140 DIST errno-0.3.10.crate 11824 BLAKE2B f9976b538868daba3cd2d47ff2fdcda16b4a436ca767f865f23d1139e7f232aba263dd4aa38d573442c762999c8a8beab8a4a8c10649d21b49090fa65ced1ec7 SHA512 fa4b9a368f254cd90c6f69f6883af4c579829a6da6f31481a1b527ac9602c8ffcb5e9518cdc32c39b5589c151a20e75a7300c8a907d178346185ecc6e8749f3f @@ -141,12 +130,10 @@ DIST fastrand-2.3.0.crate 15076 BLAKE2B 15c9a1c4f64d94c4bfd38ae139c6fe19b6b621a4 DIST fd-lock-4.0.2.crate 13675 BLAKE2B 055e7254c6ea0185a099cba229c15a1044a6c0826eb6151e990134c816be4dd26bb8ab41631be8650340bacc16324a706656d2901c3969354a854216ad3cb306 SHA512 acc5aaf6e89169062c1c59d5258b590d4bde21a35f0acb7da2e3167d0668fa678d1febc305e32d95329a7e5bdb784fadb9b85417a5e4e5deea53d59f05bea74e DIST ff-0.13.0.crate 17688 BLAKE2B c32379ebfea6cadd162dc169e0b413577fd191620f4f2a1c7d18e50ddfbe561ca865bc3e0fee3be287f43f6c9f2982992cbc56629889689bcbbf652e512da80b SHA512 eab19938f5a2cddb0fcc78b0724efd788aab7f17f04c482e0d06acac4d1cef2bcbfc74d6e4b2d9f535f9c955bf39c2153e010bdd2fa72d6d637d44baf8bf5f63 DIST fiat-crypto-0.2.9.crate 495390 BLAKE2B 9201d3faedab8c73b606dce70d65d1138f5fb29e480d56b25cd66a8d2a150fb6d946c9e0ca98eaab0227490cea288b4c78917ccfb6693022d70d74dee94e6e78 SHA512 d916fe8ba3e82a365d20485b93c36994363059dead84c0266b7bfa0bcc74122d71b4a5c8689226c0e1007e7e01fc6f6c76e8687ae14fcc38f6f159287810f510 -DIST file_diff-1.0.0.crate 282318 BLAKE2B 628bbbd75e7a8f192e54f75e3898b2c128f23c0111299fe54676f00ebfe532794f4b7fa28b27df3f94d96c8e4405fb9d2dd73e3459dbb888a38a4e99c6383389 SHA512 260313bcf0860e63d9f78523d81416fbc360a33c7c1740306d9d5b8aa1640e509b7330313c38105cd662881a47c46f89193e473f0b7da12d3848ed59d84e9905 DIST filetime-0.2.25.crate 14940 BLAKE2B 1ffcbad3b2023ba5e9b2d71e279fd8c3564458b28290f3e19bf43b87083e1e3c0e18f191f6dc67540baccb83075df453950230089f243e6276e413321cceedc7 SHA512 90b4f3c4df29a3456c393f78f636d70f2615cba748a972dc9b937c2fcbbf4544f5b0d28c6c8fcfed5d5eda026ac670afffec18ab7d7127cee9afa2717146ccf2 DIST fixedbitset-0.4.2.crate 15954 BLAKE2B 91270883db5ad0e999ebbca1123d8729d3040eb936034ab8da3cda72a830e45fcb977b3fe3c2b94e870c1fbc366ee8602357bb77e8b9a40cc41a04afad1b266b SHA512 57c5d756b0a202b2506270f0d5e890f7617a1e0c015b6059ea23fab49cf7af47fd06927eb56feb03b37cb2b6c467e326b3f0da1e32cfcb6339cf11a130a3ccab DIST flate2-1.0.35.crate 109188 BLAKE2B 8bd6e51c3bcc06044e5b8d7ead950c3beab6c6337052fd48e86175f0fc98c8d12804274308ee515dc6156bbedb2277dfa2706cdcd7baaf2a789122473248486e SHA512 aa2c4f0ad46cfbc7d2bfbdffd226eaa37f5223a34d132d8fb2dfd04c20d15a96c4882cc377fd72afbc7d13e512f5e9934386b0390a0ab2b171d081335c58fad4 DIST float-cmp-0.10.0.crate 10702 BLAKE2B e1285cdaa5abc561cea8916bb89cb022da8574faa0070d05cd4ab7537b6e429220ae9a11db2ee24551a52eda5b541c157b8d18f00f27458bf380b45df6f20f00 SHA512 024d6cce0c16f56e4f42381fecff1f3c6b9f960d62e81cdd78b1c77103dc4bbac11c5d656d44ec5fcb644edcd7b9c1a905533df3d758470137e48e3dde4633c7 -DIST float-cmp-0.9.0.crate 10102 BLAKE2B 46bce5f7e838a947bbbdd22b085435e795b67fd23479780f65bf1586a70e7a35f04f9af086be98bff24e2583eeac7c9688727a2ddbd1ce978526dc01abf67dfd SHA512 f8dad12ecf8a278769054fd78794999dae8dedbcfde5e77bdf6cea12fdeaadeeb2f1f3ca62df9aadc1bc3f61457236c4854d6d6923ad6d03ae7f23af600572e8 DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a @@ -171,9 +158,6 @@ DIST getopts-0.2.21.crate 18457 BLAKE2B 10651e947e49acc768d99ae56ca5a7f37c1f61bb DIST getrandom-0.2.15.crate 37163 BLAKE2B 7d534e799a4711d01c6553b8c9422dbf01e384a850fb0f7cd76e444628f2b96d28d0f5e8dae042f8081a2bf9340f57c558be50a6f22ed5fa6b0301a15898fb35 SHA512 04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb DIST ghash-0.5.1.crate 9482 BLAKE2B 77510c9a42ebc486e35cda6893e7f9f464628d6e4ef2f2f1adfe5d6371dc2f7e2d0578665d02dc5647651a96f3f06ed9cd3825caf462d70a740c9e937ac8cb50 SHA512 00041605bb458305f0fc54d2c8dde2cae672451646fc41a94dacf83950ee44f75464a926439e7e6d1ca3ded05a9b697138f62fba6f4e86ea3df034ad7240af06 DIST gimli-0.31.1.crate 279515 BLAKE2B c8924ce351af5b8f96ef757a189f7a9be14533c024d496c62037cd4eda790b3f6282cd3013ba82ecc83082acab1b60ea80b83e0fd5f8eeb381fd7f9df88ce0ee SHA512 b9c8c11547dc7420fe936b9f32a4f5ccf3bb68d1d9f39dedffd40d631360f6e032e719d858668826f1099b8a262e8096aa7ae1f6d7d3d7aaf47934d832715949 -DIST git-testament-0.2.6.crate 9576 BLAKE2B 23b44cface23d2d30b3889d1dc996110ce7d431f6efd3d952faea297a8310853ce5417cebcf410755a1dcde1282aed0102f6cbdcddf4b38615835447cc5a8b6c SHA512 a0424ec0e8ea87bd353aa275c730b8fe34d1b095c692ae24e036a4bf434c8494392474d30b079db0d22a8fc003c45b45d518e33401301d4cc9f52ab660342504 -DIST git-testament-derive-0.2.1.crate 5905 BLAKE2B 497a8028d70f7b5ab3c9c7524b66ba904815b51aa5a393b9ac694c68590d601e907e485d90554048e1b37ee48b6a72fd7eedd19a2353e8d0e7668d6578961701 SHA512 b9f0f3859b73994e0fe5ef9d1040326d2983d6bae5c1d5b0fa7bda10c42c68c38fe0b90c0102931c4ab781f9cb0d09fdb085cbbb3ecc70894a364d92dcbc8d6a -DIST glob-0.3.1.crate 18880 BLAKE2B dc89b3a664e810264dd7a01ad892e865ce35b504bfe5dba12d7ea8084da7de84feaa94c2208f1a1eefed90297e552636ad61ccebf6fc8cb4d01f27d605ad0a09 SHA512 29368160138bcb7ea5660f9f30c5711cfca8bc8ba836bbade3fbe8c424e7b4118daf27cffa677962e37e36f025fd2bb5a9c2aea865b0ff155cace455dfbb658b DIST glob-0.3.2.crate 22359 BLAKE2B 564b72e2738cce5311aee12d8d6147631cb571f7b96d8d3823098d3dd449bcc23ffed5a6584f8979402bef95536b0e73fe9772f273295a0079782b9f7d88d19f SHA512 d15389441e337e3fab9c30102fe7b4b1b3e68d8cbb5d14162d2fd7e7d01a9812b2d6d6d2a24a60116418be41e2075e70becd6994c13b34365d512521e8debb02 DIST globset-0.4.15.crate 25177 BLAKE2B 5556f4cd7c311b2ead3a83fb2c84280a48e493f024bfd7269c91cde6ab81315d2d7f051f7cee9d7d34e6c8563c2452f0ec04a9d5a8ba5273bce66f5ff8f9054b SHA512 b9281b8bf48d2e297be533aa31c701c0115978b4e580b684b78a385eb2ecb4125187605368a6858311d6cdf5caae7d733cf1406c79241b7d19e7193f5a111dad DIST globwalk-0.9.1.crate 12572 BLAKE2B 3518672646219e391aa0f157ae6597c78603bbef776d92403b874f848846d60ff8734e75b117dc76b1be91f830157cfce698058f445773748b9dda9cdaf3afce SHA512 9c95d6832950b35cf6ac87bd986116a75c847f11dd2e96ec0cbeb6c223ff901c949429669698cd75c4244a60c3de7df9adec648bc531303cdfba889e09f29448 @@ -198,9 +182,7 @@ DIST http-body-util-0.1.2.crate 12821 BLAKE2B 43ed71d7b7247d8d11f6f204bcac1b3b81 DIST httparse-1.9.5.crate 39029 BLAKE2B 3318ed1d82f1cc52cf3596a133b59b9613fd09b6e50e4cc0073fbd37275fe53ae6dc23c322569d06272068cc196aa253527d45a939361797f6c77a488ebda874 SHA512 88f4489610c6d3338353731c38cd368a565f362bba1e9b0e1e9cffc1ad9fb871ec2282ab1e3956947e41e0087d1170d35a0e2b71b9e823c1acbb7ee4c6c8f48d DIST humansize-2.1.3.crate 11953 BLAKE2B f5ed4a378fd6692a6241c84657f9ce5422ba7331be6fe79b3d94ec87827ecb8459a1b214f7ff6db00696fbb17bf921c718860de4139b969a0f386d7423c1a4b5 SHA512 0adb6825650fa074a0ff33a4090563987ef311de5ab23e12f715286d8198310d17cca9028f41b8ef0e17d15b939e50d165419853ffde6a7ccf977d33acd920fe DIST humantime-2.1.0.crate 16749 BLAKE2B e2ae8325b037fb175b9200cc5c1944ce579056c6662cce307beb6701894552362a25e371aad65f8fb9384945b48815ca74bb8b544a32e0a5845b7edd30b918c9 SHA512 3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c -DIST hyper-1.5.1.crate 152653 BLAKE2B be470a4a902b464d95f30e656f0f54c8a426308f03f118aecf583a1994fb12ec8229e09b43168d856adf6d3dd39d8dd0f97945d4202f4badf4a3076eab1e4dfb SHA512 ec90992a7569e8e7fb3e4a9250131a272851ec0938da48730198ac41347f82e7a308b1c4ba8b864de58ac849367d4360dd2d8a03cde58b330329949e87ff85d4 DIST hyper-1.5.2.crate 152817 BLAKE2B e5e1cdf2bbedc51e076d6084261b6c4462495c5e71ae230251758b1271d7909b612ceb97b7e5a83e7668ca5af0fdf3918e3cf02680dc75df609ae7b16734e579 SHA512 bbf3b72650c464b8ce36c96e25dbb975fc1c28cf2a78315d03be8e377b505e57534dda4ce600a5b1d57ae974ba869675ff5bdc3e80c8721b575593fc12b55b94 -DIST hyper-rustls-0.27.3.crate 34834 BLAKE2B 904bf8cd3150b29f59ce29224f39d74d41c940d0588847e0e16cdb84b12f941abc1d504c3d2f51729fad38a93a69125406e14c05488b06982a371f2333f78c02 SHA512 1a9a9501f11d826ee5960deb1a4a572c724ab6563220bcc6544215de04ce189649a79bf18fe8299bb9cc30e925de52318533a9dde4d4aaca402088da18080295 DIST hyper-rustls-0.27.5.crate 34660 BLAKE2B de261692fa4765f3ffdf8c384250532a0747b2595c41fbbc1a01c69c2c8a68a87656572f70228ecadb4aea04851ea6e7a0ab7077d6ffbe75b1a15805e64fbcbf SHA512 6a2451be2f42880978b0236385e8775fdfc3f538d9642c7fd6993ce85b16d623357f97a8c2a328e76e31c76083a8be557a4e7447f34aa52b9e990f4c9680e193 DIST hyper-tls-0.6.0.crate 15052 BLAKE2B 2d9baa91bb89078e58b6a3af87af6796c110cc26f79604d56552836b3fc770ea63b215b44623a57394d1d60382d65f9ac0502e68700ccef4a2d4b19414497545 SHA512 6b99b08669e689005a27f2ca70a12aa51298a6a4226de072cd84fb15275339dde8e2054838541096484d732a1d2d913bfa945ff3003054eb62ac4c2d0a8ecbd8 DIST hyper-util-0.1.10.crate 72887 BLAKE2B 9d8ae7445ea56505e19f57ad680020b748e943a5cc3eca7292c06d93be1b58499db5769b214687aba53a0e9aa6fff3b3f63d1623157350ea826cd2decaf8d0aa SHA512 0a16c5d8857cf522bd53017dac50e530ae685c512eb55221fd6808299c7d716815f7b8192f8a9a504421b938cc0536bd497c7388d2f70ebbd91c46b644496b2a @@ -237,12 +219,10 @@ DIST lalrpop-util-0.20.2.crate 15064 BLAKE2B 7304f30748afad37ac9be5f9cb890b70b03 DIST lalrpop-util-0.22.0.crate 15225 BLAKE2B efcd5d94968b1f90a3e68729d54797d403ed8206a205b0eae236808a71cc47f1d65a5e2dad60baecf1258a9253e1a5be1c5589386f1896436bbfa979bd8daeb3 SHA512 c26279f2a4c573c27a21ec6cbbede0522ec478557face8f1a9bd437d9066c162f047de4b9d2a648e2a5d1fe11580d31f1000c21a970400a2a63805ab77138422 DIST lazy_static-1.5.0.crate 14025 BLAKE2B df29e0e3d1c061815bdd608b41074436024dc407d454f32517705ab04b2fe06075e310086c5e4961df0b4885e91021589d0bca2c1cbe6f0aeffa3ff1b3fd4637 SHA512 6d2f9887cd7f34f019644e42f02f2bf0111accd73aeaa60973ba0b039b6774670debece1ea9a6978e923208ef5d3ab7326473ee3560c078817f0f7ab8ed0f65f DIST lazycell-1.3.0.crate 12502 BLAKE2B dca2d3f46823a52dcf87b7d6103fc4f1f83bc5247ce361946ac2d9df239fb43ce4b418104503698dff0242480cd014996e77da4ae0a88f3cedbce4eb9d3c9ef8 SHA512 f9d627afc28b61e9687a3f72260eb013401fd64057647641ff2e763770d7380ab1d2d8cbb4a3c8818d53d504c618a3b46aaf701f72f4d7b25d226042824c2f8d -DIST libc-0.2.168.crate 757025 BLAKE2B 2597fdf5a77345754b8c9168d9f07f83ebaa0413262b94ebb19f976f49cc2c47893e788ee2abb3d00a995bc8f99b6ebcf24abbdb320e18037e779e1241599b44 SHA512 499f7273ab5eac0961fd927d5204ff4d5b3b290c20d00ac99054ee596b6d3ec4d6712772c52b09c84554f0514a8f66b41995ceb5b0ec38a7295a4fccf0e94349 DIST libc-0.2.169.crate 757901 BLAKE2B 1012cf93d8975aa20fc3f2332e253426ff66be6aed63ace5292cc8568ee419b0f1a4b5b39ddbb78d9c2dfd8d72eb0d068c98faa229ab55556da5e674429f0e97 SHA512 c4566330a7967efc211edf31a23647d1a33aa51fc25aa4e9337716748c8fd4be0ae63679220ff2cf6e892f37d03bc5264c55e8f082eb82574a6ec1fa8e5e45ce DIST libloading-0.8.6.crate 28922 BLAKE2B cd9d7c2652bc4b0220e1c29cbfbca41f44d12d76c4dab3d025c21e5d317407ab656a88add0db95f1086934a424f55b4b413f33cb2a52cdcadde7641f9c5b3fc3 SHA512 f49ab79244d4b54c2f181bd9d7506fe5df9824a09446924dc429636e08ed7bcd6f5d2afaf8a0c862982e2c2c5832370b118266d36f36bc7b7522668bd598fc81 DIST libm-0.2.11.crate 111477 BLAKE2B b1247b197dc66a38b9a1f9db0e32655c9ee09575347895bb1e3f22e6953c334d74574a7015f214b0af0eed564ff2ee4576d07d0db5421aae917a7aa1e10ea142 SHA512 86742b5d97dc976cec5bbf75f565b40c7058e74cf840cbc7baf4d84823318040ac692b5796a407bd44caac553dda3f5a087d3bf8d6099cf26305123ce106c7bb DIST libredox-0.1.3.crate 6068 BLAKE2B cf09f261d3a945d290ecaaa724903e0042d66eca46dde8a40c261ccb1e82c0d6b9926898eadafc6313fdb9f19cde56377b8a9179935482559c4b9707e327511a SHA512 c62142fdca92388664eef83fc89b8607e2df318cbadff6edf9e3d927837853d5cfeb54445299a82054a0ca81853b0a33536966ab26f1f2e0fa43b39aaaf67c49 -DIST libsqlite3-sys-0.28.0.crate 4975624 BLAKE2B e8d9e637a9ed616372e6e9496a9a7095eea281e1496ffa5b312f632958c751d50d9051f5ad09777e23a18dec08821cf9c43a405c4ac64fbb8719820c12886b54 SHA512 4a3d16eec47c6e3e53e00232501fd50fa77f1ee1370f4ab6c984496f2f897b4acd1c15c697caa8babd635d31a946e147d5d090378615676a3b5c4a9656355016 DIST libsqlite3-sys-0.30.1.crate 5122296 BLAKE2B 3f3d5ecc434af6ce6e28836dc6bccc812d53da909e5e4a92f0eb7b6dd56c66c5243e29901867df2e72be424f20fed6c896da59bfd5349fad831a6305cb25db51 SHA512 6ffb2a23a78f3221ac8f6c9260713741970e522bebc1ec7f3e1d7405f25dac9024ebe3a73d76a6ed74dc7109a8333d6936ad1c64a0a7c75d6d81f97c3524e952 DIST line-col-0.2.1.crate 3915 BLAKE2B 7723ef44a9e7f1cf875db5dc496133b4c1b282850d9e5595d90f35f9ecd4dc83e3f3fda500702d177153d02cb243f2816b624e2bac21880f145a1dd5c37e1554 SHA512 386827d209d462f38929b0615921764ffe77ddb116b322c61f4220fe4eb19c3ba62e1a235263afd22b01416f2005073964d7ccbc775366f735e3d7306547b427 DIST linked-hash-map-0.5.6.crate 15049 BLAKE2B 0f30e388633c60433dcbee353507f1c6857bd210f0b61a4d166a9b95067bdadaebe49d5fca4fa6ce13072e26037c6f75d46cc30cf8dc3c9cfcb3f33b33630093 SHA512 031a87645381c96beff33572e4bac1a9877e52fd2f99d39918fbede17d72291b35e2eb69e07edec20c3058554c35cc38fe85b8f175c2a3c69366136fcc71f707 @@ -260,7 +240,6 @@ DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e322 DIST memsec-0.7.0.crate 6532 BLAKE2B 48fd0c732a5c83c5e0ca23816b61bdb7283c665ad73d20089238ba0b6863992554a7f8a3b41ae8b4cb0f31204b03b32b3cc7fd5a0af657a24bcee01b3443ce58 SHA512 73501130770d2ac0e3904e7f293cf0ca6bd0947a6e05e53a40498c950b8519fe591d3888badd5cf6134e1f567c18fa2ed6ce6fa3ac3c8c0d441645c3e95cddc0 DIST mime-0.3.17.crate 15712 BLAKE2B abb892b75b40657d356b6b53b9a45b2c822a05873453e919f2bbfeed9e5c06104f24db9cef2716f302198020870eaf96b2c62aff55cc11d8ca4f4f614d7c8e17 SHA512 e6d2ca92bb58fc747c1bb65a7f9023e5dbf4b94966003a72e4913bcaaeccdd6752725cdbd5081e0fd69d9e8f364d79664fcbe70061737d5c39e5b3e3a154a0d1 DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c -DIST miniz_oxide-0.8.0.crate 56343 BLAKE2B e4abcacab4c8698d0489faca8556faa7bff53d272ea0c80e2e7843dc0f6f9229b7d5b0a17ae210344722a379853e7f14212505ee05da4e60549081cf77717c1b SHA512 044b641ce6d98d1968c1ee0906f91963f9f524d6f3fdf3059708177a759e1d498c63e595d3a3f0f9f3210c45c828b9b70274134ba078b899d7fefc2bbddbeee6 DIST miniz_oxide-0.8.2.crate 59068 BLAKE2B 22808b2137b4afae29cc5cf25d9f643d24824293524542e2cbac3ed0fb0341417c052310602a6f0a003843abdbe7715a95a6068c807cc0c843ed867958650215 SHA512 e58802e332a72123954ba1751cdb59509789bf930ad74da3d06e2c1c3737547fc0b9848be816a66b6585830786b7a0fce7c9fb574789e15f3b540709563cf854 DIST mio-1.0.3.crate 103703 BLAKE2B 0d2360e4ef45f37104208a31e9aa467d6db041dfeb97403a010a36e1e1427f51d97f8408948c75c0084e6c118f058267bfe87d36e7911cb37366f2b1ac6eb693 SHA512 2142edc7e9378fc3437110c85ba2cee9c9683e87034cd44275d2c389645979db53fbbc29fec304f1d8c8f0464ae17d2a5db1aa9215d696fa0282f5069700b1e2 DIST native-tls-0.2.12.crate 29517 BLAKE2B 76f4bb2aa8fefc306a04ff50a62d6617f71c3c34aa83ed35f11714ef2306fd82f76c7e26ab7ce50f8eabed40602ba02589dde2d98b55ea6113b45cc539c84bb6 SHA512 15fbc9d02134d3d55334d2f02fe4f64be50db991d75720b38d802088f06cf5f844cba6b25dfd7beb92f2cd367ba477ec2098e3c7336c4e5a5a7fd39c753fc723 @@ -280,7 +259,6 @@ DIST num-iter-0.1.45.crate 10320 BLAKE2B 9f2a60a819e31a6e7e048ae86f7fa029015a738 DIST num-traits-0.2.19.crate 51631 BLAKE2B 78637360cbf32d172510a62bd9442708af9730c0296a2bb4ebd200c08facd49bc31bf8ddd58967e0df7273a938832b620265d9f8f4d26ad16049bf6dac1cb4e5 SHA512 180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956 DIST num_cpus-1.16.0.crate 15713 BLAKE2B 11b432fc7c7496d48918f09ed0954e0f1d0845596301266321293b374392898853fb7c313a0b0fd9d22d9dbfe3ccc5cc1e38f38407c89b2e5906eb76caa6ad68 SHA512 a75863afc4a563e63c64d06471c7921615355d98011ea9497b1f1a7dac2bdfc876509136018e8062ac38575ccf476a196d1fd9231e09e90017333bbf2df4615d DIST number_prefix-0.4.0.crate 6922 BLAKE2B 81bd3b588c788e6865104e5ce87119b5e0c5a526042963d52cd582ff23c2f8c9f32b4c445ef0397fc402b6d047e031d8e2c67ac97e191bde22e17662eec3a554 SHA512 a43b668d7314218b86ca7451daa9dfef71f6c9f6616bc34c12d94ae6030f182bcca9da83905cb46f3d49d0aa81385a787e92e4f3ae239658067adc249f8174df -DIST object-0.36.5.crate 327435 BLAKE2B 1ffbb8ba57024a7273217edb1db76eff03e0689f81ba27b0aef0a622972e7f6acdbdc480384b50d603dee6c38c960fd25125a313264187aa0e429aa839198dd4 SHA512 b85375ab3660a8a0c57833c28c4dc665dc0664857e1eb3cd472a61b9ec8c16c470b16475545c2c311fc23cb3c43755967f93feac12c7bfad013cfed5f879e355 DIST object-0.36.7.crate 329938 BLAKE2B 0b02cf2f44e99002909b38125edada1a259feae59fd0e5ef52001755b6878cac710c87c60fbafdbe405281e039f68572ea3d8093d16128899090fd70df7f2fa8 SHA512 dd69172349ecf51fd2351d32cc4453760ca1d15e854a1cf5ed99112032901a54b4645b24163b946deed11f81d3e3035e1a5afd8bff20f335dbd05eceab073478 DIST once_cell-1.20.2.crate 33394 BLAKE2B 79dd394fcf1637adfef28b4159ec653c8b71d2bda0e0e36a940c04e3d87698f039dc30c97f26648ecf0d9742962f1f0a117568f7c705a8a3fc167085b0ca3e80 SHA512 bc6005bdab7a154c01e2203fb553a68695727475a9a882cf906d49c054ce886ad92cb491d380b6b9fe71a81b2fd690ce91c9a6cf8dfa8508470ac9acfc8a31c8 DIST opaque-debug-0.3.1.crate 7066 BLAKE2B dc1dcadbb5654a5f69c59b84faeb3095f008a6eb4f63e3cff95bd4e97f803201e2f16f59a65f8ea21b662e77e3fed0d0870eb1db7f5a4f95cc02422907732951 SHA512 f325214d604e74197ddd9209a596851c5bf0c0f3299b79b6267c35e0ff6351205b628fb5086279684fbb29fd07746c91ede4f45019657e761d8400fef2b3d8bf @@ -317,18 +295,14 @@ DIST portable-atomic-1.10.0.crate 174760 BLAKE2B 9a05d6162c95f5140709cbd005c1997 DIST powerfmt-0.2.0.crate 15165 BLAKE2B a3e1ce63f5866f75526eeb749bec6607e42cb495bbb953082cde7e98e6aa429ecaa41889d98ff7ed4cf5031258b4f7e0553ff8fc435b3b6f8b4ef2b6d53d9b61 SHA512 0623f92e4d6ab284b3f6dae58220d79d9185df4a738999d68040c50d72fe0380d70358cb622f079c629bab53bb03c6e085e165d5bddfbeea84245864fed90029 DIST ppv-lite86-0.2.20.crate 22478 BLAKE2B 9d68dc36d8148047d571c0147ed29f586f3c6ac9394b56bd955c8ae5bb18f5a8da5369809f7b8c3199074e23660325158c32c62e1bf69a16cb1f5da2a01f5df0 SHA512 6d171f63b42296f7765732fce3af7ea05d0d81f1541ffb3ad86e81210715ef4afe5bc9e58926e97e757aea6ff96a8012c8411eac78be0fd080898318ed21d7d1 DIST precomputed-hash-0.1.1.crate 1640 BLAKE2B 64a37ef3edd317f771e833bb394f7c19bc9b8c844156c831d2b550692c7e2e36bce44ecf18dd9f2d0f0511346eaf0d2a0ebe792fc288ca0e94a93933f2051846 SHA512 a118a98286a47e2f0cf35d2678d0325c18b9b7d5bdf40ceadc16483b282307fd1498434d5bdfa25477a4f420d97c34d786e42e9fa70431b788b4b8fde9718e05 -DIST predicates-3.1.2.crate 23986 BLAKE2B db4209b491f82a1ef6147158fdf86c0bd8a059e61c4a1922dccba257e461be36e31d4a03440c2b80b3c7c49d612dec81fb76f648bd5837c481d93cc9ac5ede65 SHA512 50896189f39842ef424aebc12c2633112fda83eba1bdeaa3e6f398db1e28dca0cc7838948f25e67f6fceede1a91a1b0ede5d4dc4edac6da752e48c7a07bbe3ae DIST predicates-3.1.3.crate 24063 BLAKE2B f57d4d19128107107b436bcce2be5efcb2a17cb18952221bbcb63691f5bb0fa3932a50e721dcfbd959d27b34084a6a9931378bc55c3c23a6668fa6a552e72abf SHA512 0da703faeb708e3f9eb9bb8803dd8cf6a493b02d38b9b617fd1eed7ccb870ae96c5be6cfe63b7ea8855cb2a019a7ea59799faf2bd78fb490d62e640d1a7de1e2 -DIST predicates-core-1.0.8.crate 8552 BLAKE2B 774ed04fea09335ae9b4e87a237871f954b85e54df369c5be60977381e8cb50f11aa869e5ee41e57e4f3283003a9da67bdbe3460420ac8620f18fd81e33f0597 SHA512 8cfd010b70aa694620d6c573bd8ddc50ea16ba08f6c737902ba6697307af4510b9298ffcc3068b45bdc6430103db6fb4499783c64044d87d023bea46d45d0f7c DIST predicates-core-1.0.9.crate 8618 BLAKE2B e5ff73c0756f4cd91ff5d2fdd7dfd33e300dae34731933c11798d7ad2e07d9500dbb7828e7473a055c55b5ffa8a761f02a9d04ef313e544e477e4cb94159576b SHA512 618db56d417f44f5575159265f245fbb62399951824730546df735dd9bc9dba2200f58c0a7c7830040bf27954bb48e01fddb5fe0f4d4890d5e172cb1c586735b -DIST predicates-tree-1.0.11.crate 8393 BLAKE2B a8ed762ab18f3cd72ed749cb3db3d756dfd2d3875b0f1c68a99e39ed4ac5c7000086606c21a834ea0a81db961ceab659a4648435d9eaf1bf3d7f29d92410efb6 SHA512 e1b08010f9cab65c75d82cc44cfdf64d92127acf6a72ee0ce1533e5d7d8027ccab912e1c499b7b78508b5e3cb20dc03df94de3dd520ae13736906a5f374b10cd DIST predicates-tree-1.0.12.crate 8392 BLAKE2B 4b124a7b718d2942f5624d410fb8c59c06e90ec5b576fdfe20542dd00da64fe6a5fbacadcde3c3a6f19b8ef99efd862b08be08e08691e858a4b3d7bd72a4cf71 SHA512 f5f6d7d0cba4ca7176a26d9adea5ded46f1a3361f9b6ceaa7dcf468ce616912cf3b764b8250f39a42a24eac71fb94e0d4d822c89361aae02472cf761ba55dfaa DIST primeorder-0.13.6.crate 21296 BLAKE2B 2ba479defa1c26d14f8711f6be5020eee9bb91a39fa7a7c14a93dedc6de920e0ef1c9f6240d308233d0e0d6bce4be9500d0e9cfb01b6c4f9902e0f77a2f97352 SHA512 fdf52b47b36403d5218220b886a3ccec7828731b5a59ea1d48a25fa85de754544fa9c94d51356d2ed904bf2d908bdb4fa87c53e597a3c9f2941d7310f70198ac DIST proc-macro2-1.0.92.crate 52353 BLAKE2B 9aa29fa6f1c56c0392a94a81b4c61953f4d185012cdca37e356817845535da79d7094bf43472ce63109ce479a2fd0cbef4d802afd61daf92c4db303bcac60e7e SHA512 e614f08acc0a7e97ef580479cf5b682378df1ca16f09bfb2296ebb3490a435229dea9d682c621c54ce57e8e1d3b7803eb8ff83c88bd02e07228dba6d02f14aee DIST pulldown-cmark-0.12.2.crate 149070 BLAKE2B 35e4543dd530a80ed500384c6a6f2bd10bba0cdb4e03f472d630ed17251b85f7d0a91635995964ad8d40f7c849e0b179de643ee3645a81b311b78c4ec3678f47 SHA512 7514c4282d3c4ef0b0f7ae65374a549c1a027d7fdd5eddad8a2de93dde49aee2e3a2eec2c5c598967b128c2edc6981fa6dc55972c8194206abc9e7a673eb9482 DIST pulldown-cmark-escape-0.11.0.crate 6719 BLAKE2B 232d5e5efaa6c9b5ba140051e21cbc16b46b32fc40931bf434fe25c24fea5d8a39e47926a6256a826548081e246b4ae36c41c7449a866cdaf60037eb64ee0965 SHA512 b8244d6c93a983bcade5e1ff699f334aa72eb638b7e4d22cc746b713b1d0144e6c1eac243476362a77bfed37a3a13a6315ac8d57920dadee7d2734f4d96023e0 DIST quick-error-1.2.3.crate 15066 BLAKE2B 1c61525d383f3588c1c5017f016f60b484bbf2035e7f63c553bd9a49b638ab0c6106ac3676a41072b24da4e13dde78706e0f99fd1ec9ee329d5be81d45a85866 SHA512 f8aaf9024d20ccd42b706c756eed8320aee339f8776392b47a41cc82ca06b03df1a5b1f00854cea96689c5af261b4d8c5d2b1a242d10f2755e7e33dc41be35b9 -DIST quote-1.0.37.crate 28558 BLAKE2B a7d007a69e619f853af94333e1066bb767013312bd99f147b1b153611242bcfa9c76768b1ba47278589db309a9acd61a772c8ec3b567e48439bb9d831f9326d4 SHA512 c4ed21428c1f89cf22b85d80720a7869831a9c129d694617b0ce8c258278114ab98846f3f653abf736d1c86bc9224bbd695e9a7b06aa3adf292d02e1ef14cc05 DIST quote-1.0.38.crate 31252 BLAKE2B a3836efbe5c21dec70c684002b47b8fc7cef643c82ee903b537a48bc0707a28106c4b33d98e60ff81e04c7520f7404b1dc4d49446e8d91dded517e476c36e1c2 SHA512 530c47c5e6372b508bf5b2b88a138408a7afa5ef52c47280ed20eccf39f8e97dfc1e0a18c1bd5472efcdc49a7a1e69566333a0a1b4c0b4f0e11e6a7a85bfe8af DIST radix_trie-0.2.1.crate 251366 BLAKE2B 14b50e45eacbc5b42cdde8a4f8e8642adfdfa3cc569c3fe0e3aa1fdab901713b3929d706dc0aede1b679762fb8fb1af345efca15befc9234322db434c8a3923c SHA512 f6f54511860b6b878c83de4455bdbd71289599dba93234d5c7469342f3401cba99a9ea6bca2d32df2e31ba657f40e42e7d5fd7de66786ddd2814e22fe867f9d8 DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 @@ -343,21 +317,17 @@ DIST regex-automata-0.1.10.crate 114533 BLAKE2B 0e357229f6825f14339b1d7c40730b83 DIST regex-automata-0.4.9.crate 618525 BLAKE2B ee3fc41c8c445be4c1aa3e5b19a3e61efd641b1a24e7a1ed55f837c1fba9c816272cb4645c13232b66b170bc7c413802928beb22e3891500141ad4ede65b60b0 SHA512 40bde0ec91cc27bc0c3fa237a37ecee5a1f023dbe006a999c5888f8f578ee2c4c64d9edfe1827546cea8e92ca3c10f8b4d494d81f3d0422b40d90bca9cf598d2 DIST regex-syntax-0.6.29.crate 299752 BLAKE2B 2408ebfe5f0dd6578c33f18e8ea9a0a7a84388420c5b67adcaedde477f3f67fb3e39ba9fab1f6892c7ae7fff754c4aca51314601529cabc6a8fc43af38a11f88 SHA512 28a58950d15df1f0ac4ff4185c05b535e8f5bf0b75f79fad24e40e17a02570d1c9bd9cfc919eed8756a1069bc489c5fdccfd04f6b8266c83e3412b7b4bdc262e DIST regex-syntax-0.8.5.crate 357541 BLAKE2B fc6d125f7a8574c37d81c75cbfd447cbcff736f2d9991b19814ffc1a414ebc5b76e84fb8fd36c983b38e8e391d165cdd9047832b0d9100f0e1ba7085484b7db5 SHA512 549d8d130fea9ec0d5806126f57f31d433f50e9328c5532ad417c44bb5488ec0d20acb0983dbe54dabaa0b453cbea4533cf7baac7144df119e8f78dfe55c5ab8 -DIST remove_dir_all-0.8.4.crate 19537 BLAKE2B 2c30b13c6477a48d9308af0c8dfdb4c8ae3130c7e9f77861966c56f1f5a814c7d8218079599ad97d6814ac8b108ab0f336d45e7a31132249001e5476316f43f3 SHA512 2be4a6f752e5916c92512c587857572958f4fa02deaa300ae4bf1ae8f1794dc32880e1f02a88bac0370de0b1fe5e877f31876b7238cbaf7c92362cda23e8d6b2 DIST remove_dir_all-1.0.0.crate 20461 BLAKE2B ed11b39ee0bd3270bce6d8a069e9d16b4b19301ef6f63dd3e2b3db188b8bb94ef7fa9060f335c1485a54685a19f5f0f6c7776c289f6a191c76964fdd2f310c96 SHA512 c7a4e5b248d227ffe39c40fbc5914b8db6508fbcf7b7e8ab14b3b1846e70e61a8661c6785f5cb613b82aed90ffb7a22cf86418bc54734080a7946bf52929ec93 DIST reqwest-0.12.12.crate 193321 BLAKE2B d024aac31fdc9f67db81ea0c8f6ac328cdb176220634373931598d5fa9270819ef5775dfd9c2a8da99454e04198390327cdfb02e904f9f54eea5e188f7fda05e SHA512 c94ba8449d5a1d709e9676537ffab187b5f844fec44c80118e7fe467282305660f195995ade0bd1a49529ab9a8284f82a52094b43ea4be87e4517014be6ae349 -DIST reqwest-0.12.9.crate 179807 BLAKE2B 47937d038ece053f8b0c6f6ea1865e74a4243b7adeb209c8c876da9557ddd096ec00bd44c1d61f23e883a526ee10824294057076adb8542ac36759224ca3755f SHA512 027a31a57822a347fcc73101c602a5ec68dcb92f472d85dd76fe3465e45eb1e7ba07477700cb6a55ca77d926f9bc69b56a65499fc4dfebc5fe14732f56fa6441 DIST resolv-conf-0.7.0.crate 17352 BLAKE2B 32b565a11d5d752e2cce2ac7b44e483b8a682220c99a9ca34d0a440d87cb5a874c407d474e47757f128bc5d78ea57940452eb099ea6fa433d8f6d1fe881f4302 SHA512 538b97f88fee8b82f15845f9a596e09757e3c2869c4e8708ddff97e19348e9f88d4bcf75e810d2aee47113fa64d550a9fe2deac6fc38d95242ebc20228e9b5f4 DIST rfc6979-0.4.0.crate 9140 BLAKE2B 662d967b1d818439e972d19bd251a4e3609c65bae945b4d11c0ff4966e9fcfaecb739d0b63bd767cda6a22e77a52f3386f02cb27c5c76ce9008837c882f8df33 SHA512 fb68114f5f8c1e7b921ed175fc01813531a584b8cb2df1264b72e1925bd66b4c021714b3627fbbcf3fabc26e4d6578c4d246369a0c98049d4058dca4cbabb20f DIST ring-0.17.8.crate 4188554 BLAKE2B f531b15cc5cf88f2ef00b1708473a7e98a42dbbd026027ef2c42f2d8bdba0eb1665621fc98db618252f6a131bd54b1493987a0285bf2b9a22eba4c9409ee1cab SHA512 e4966409a4078ee43bfc9cc659d08ad28419effe2a729c8c275361a7fe0620a3c727009bcfb1d0bab265af2bc107b50c19d868a4e80da7a8bb55f97e8b214358 DIST ripemd-0.1.3.crate 16601 BLAKE2B b72f950d20e0f6f19e5e4dac9da24a5fdfe3dfa441596a89fc7a8350cea3a297ec04caab43c7c24c4d8e499e50de306656b5a5a608d5b01d0ae86014aa4931aa SHA512 eb4510c2a5879984dc662a985515e17f0c22f91babd1ad9914a030058bf8e703a72375e82672c382294a0bf7e004c776e9c5ae30ee0f6acbddc44d22b48e2e03 -DIST roadmap-0.6.1.crate 12737 BLAKE2B b35b42fb992e77e15f07f3d5fbc78daeafd03cb3dfe0ce504c857eba7af8fe93f65e8a682bc29d85bbd5bab7d5dbf97c96a9109037b08c6e262d676392ba54bb SHA512 b0c8d50342c712456dc9b368a4d90cc6b5f9df0578e4cf02a2a2d69784a7db74ae40868371011c2b3526aa53ac11eb3fd8438fda2d9cfcc87ab186c888c39103 DIST roadmap-0.7.0.crate 12738 BLAKE2B 7066ee20a081777b3d1374de80cfbc7e1a3298852532ac5d222117313a74a38f3cac5ca8a57c7e7220cc8d647144d94056e4a0cee98b6952934c3fdbd87f21b8 SHA512 5c1af1fc3dcadec173a0170c2273616807a79de87bdfe8d513561c7490b252069734388169e713b5c959d52e3e643965066c573ffd4762c6942a133b63955f50 DIST roff-0.2.2.crate 11648 BLAKE2B 38431e1dbfe394274c09e32a9f4c99f7e208130efd1765e9df0c08cf313a0ca81d13198158af6342ec658648cfcfe2e3cae5a5306f8e27e18af7b8163359e896 SHA512 0098d4cc921435cd48fd924d96e8dd27f6443a9b6cba847388ec4be7c2222bffa7a1507862b8c120314d32d08e0cc04e52d44973e25d85536a3a2560fa2a06aa DIST rpassword-7.3.1.crate 8164 BLAKE2B 60e89fc36d78a64d9441bd902866500872f4ddbd28ffe4bc5c26b5882ec1dd9bcf50dc06105c87f5fef8c51b327bb9af1a324831cb6396796afab3cb7f4a2288 SHA512 28905b33e5fa26d9a7bc0d682b94edc6119b2d8c2a6826c89d61fa86033230707c54f3ed8047ee3f5da4393c119c70f102ff61efdc1d4bac38e583c04e3b4382 DIST rsa-0.9.7.crate 80231 BLAKE2B b8f6e435f35776f2a67f79f5791d035ee5753512fb8e05386aadc5ed4962d88be7ae4c016ed43bcf2333e2913687155aebd3ccc79aae7f2b04b0307915dd6257 SHA512 dff7f46609a006dc8342a36c43f841592cc6ded5cb88d63bc252f221372cd756eac820d57e218ae573ea8a643875463c8707ddd3e01f2fdcf729215c75e7030d DIST rtoolbox-0.0.2.crate 9179 BLAKE2B 4cc9faea86aaf0f9e9ed95269d0fa8c633d7c05d539a435bbfcadc563ad5fd0d3f06bc33f83a24432a53da483bc7771edca21e6237888254b1d000f7af1ee41c SHA512 2e239e821d0bdb171ff9d03d3b8df2fbb561ae67ed653f66096ca32b2a83badc7d1b74b4ed1f0f41f141ff2a383fd06618f4f7740a03514b256eca4db0699d42 -DIST rusqlite-0.31.0.crate 152252 BLAKE2B 5ef8396ab6ee9f6887466e7ff856c6260f40ef85361ca451e230d8590019d6ffa4952df15abd21cf300cf51da4a6ea4e82f5dc88dfba474f2f62036cee76caa3 SHA512 6d20b015ab72d3d75c363111c0cb41feae8bff83104ebdfcb8e5efc1bfb63eb48a17f6de2e6c96cb1e916b4795fea6d58466ab0820b151b12d1dc4c29800ba66 DIST rusqlite-0.32.1.crate 155563 BLAKE2B fb310ccf297ca0be6f0fa045ece633f12c5664defc56c71763fb44f60292e85103ef235cd37eb60fb2cdc91cbdabdb311b6937696bb96146513f687af9a786d9 SHA512 f21986063af655842c41cb1f9a7711d289d52f69850d02b7c08eb5381e43c0b740fc047912dca5f9a745469ccf6bed12b751d2cc5e351adafdbf37fd69946cd9 DIST rustc-demangle-0.1.24.crate 29047 BLAKE2B 8248b014eedb26cdc0b748544ba91b9aae9c992a6f93b4d3ac256b78f691d572f8885a3575492ea556698a241d2759743968293079ca02bb6a5f318b0ed66dd4 SHA512 eb897c35300b87766e6105917a907fca1c5b1f7691fc03c6c1aaf38075ac883a73d1eb54a245d13ba59c7b0f0333d6543e23fc1b1c542fbbd5c750a84660b9e8 DIST rustc-hash-1.1.0.crate 9331 BLAKE2B 16ac56622897f47a06b661fb59a196b08d48e782ab87549c8bd5c6fe92f374c9bfd44dcb36588512bd9b6125c2fd79a12d648aaa308fd9694bcca3a7c1b49ac9 SHA512 84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 @@ -367,7 +337,6 @@ DIST rustls-0.23.20.crate 335933 BLAKE2B 754a580f74b16ebb8f0f3dea9f3730fdd0ab9c4 DIST rustls-pemfile-2.2.0.crate 25849 BLAKE2B dfb94a77fe9d86b17b0c6badc6b715f247e9aaf0b312bc9698dbe8d38fff281428ceaec2ec73bef8009667dd93536dda2bc7e7c49d194b36244dca38dd86d577 SHA512 1e69f0b72c6060eb0a54ec8a1cb51809525b053771a1d417892205f8f5dbcf4ba45250fc0d6a836e0cc8fede06d934f0a90c47d475cd8e066dcb3f7504ddaf17 DIST rustls-pki-types-1.10.1.crate 58944 BLAKE2B 1bf83e046802a5eef5dc597bcbe045a7aef146c489ef5fca442bc20a9a80dcb2d15cc8e07ffff45890df069b99698bca2a9463d1c2925a8f1a5eaa673ebf621c SHA512 ec63005b54bb9676fb6ab3f7a399aa816881c34670577e8c8de7f86a46a834e71c2363049ef152475d784f12b6cc9301b4fa20e9d478e95a8f1b9ad75f6ba2d8 DIST rustls-webpki-0.102.8.crate 204327 BLAKE2B 8db832f181b46bdecc419e1433dd5550bc181cbffa1961aa90b2533f92696ebe15d71d742225bf806e2dc3a4ebb110d48bf62b0677089df1eede6d5a072c0a28 SHA512 8cdd5d07bb8d6c3f0d1d6663babc3b7ccbe8c9b1463870a3dd095c67f46addf4097a715da796c70f1891ebc1d045ae7d7c3a352400e8bfd6687e6cddfd33b1ba -DIST rustversion-1.0.18.crate 17794 BLAKE2B fa35445404b836214bdbaa3de8e43312b6d8f50eea32540f808a6255908d756bb1a5dcf49ca6268a1d214c535c2ee770e295c0e7d6430268142a190b31032421 SHA512 263d2cef02b6df4d38b35af7a9ee3a6a044f160f3cf7c6771528f23dea342232087f73f89e419ef7869db771e73c273c05b3dccfe9e29f707586b2059e820645 DIST rustversion-1.0.19.crate 20616 BLAKE2B 025944fe053ef928f26affb890ef6a563b0e63cf6acc0ce7bd4ff104541f819bbda48ebb59fd8a677e44ca1ea21f4a18c209adf2004c9ad79604dfbeca43b5fb SHA512 45b959aea8155ee47c51aa1d87c6c344b5f4b20199a2646ca30bdabe1c2458b014be91fe0c48c29c2261ad9e5de6df7eef7ddead1682e584d4a906c17984baab DIST ryu-1.0.18.crate 47713 BLAKE2B 409cdf4b4e77685394018371e91ad6fdb175ac57e1df9f902871f13208515e5a2ab1daa226fc1e7291278e64448332845be4cc9409bce3b2f3daed409259e104 SHA512 a9b2beac778ec47e6be303148d7512ee681bd2361f6e4ac6db32c8b4baf86a8c5eb5b0d02eacd6131ae88c7b5105c57018c3050676e0b3dd1ed9c4d2fd650e84 DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c @@ -376,11 +345,9 @@ DIST scoped-tls-1.0.1.crate 8202 BLAKE2B 20be49f0546691bcff3f0fc257345e432e20083 DIST scopeguard-1.2.0.crate 11619 BLAKE2B 8b7e9ed6cefef9ee55407fb9690d57a2a98bb93e5105aeebdb475a52485e9e185255249e1dce8f83cd80534e7402d485aac3efa7e8493b13135de27550cd4bc4 SHA512 6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb DIST sec1-0.7.3.crate 17979 BLAKE2B c30d4e617f9c0c21b80f14a7df88a164ad43f4c18fbedc1ec32af41193053e67ff6ea83db54f46c8cd6389d930984120c2a1688662fd8083e0c23bd4995d510b SHA512 be646413d84b39a43a0af478854f47db3b167c2bf1bedf7a58392782c423aaaa38df3b3676f9807a98c6128152295c426edd16d67d62ae7048caa635bf39641e DIST security-framework-2.11.1.crate 80188 BLAKE2B 844d36d2b2216cc7055687110d54ea783a7ed9bfe6375fd4dcbea267ec85531e666fe002648110315f42c3364ff5ff5aeba711cf8d1f5358ba65c8393e96f55c SHA512 02786d62fd9dded80bae3942896bc8fea2a90763427f582bf5d9f127ca5682097b59b5dbff2cde373198ba659316ab5906a68d3141ba00c7408b73ebe353fac1 -DIST security-framework-sys-2.12.1.crate 20112 BLAKE2B c03abcc08f068e8cd4dbfb4d5054b4c0a75cc68f0dcc955ea5f5f958db9c28588841723bd7047207dc51bba46868fc1b8d3367b612c7f4a07984d94fc8710cd9 SHA512 5ecae3e1280d99e3730ca3be3dfdebd16971d54b8fe167d29cb07f7b3837a2bb9db2d8131bab679c395e329b10ed28ad9ad8d6764048f6019587d5e2b52c7eef DIST security-framework-sys-2.13.0.crate 20496 BLAKE2B 5ac84d004ed09afdeeaf531d96e81fcaac3af32207d7c8b2180a506fe0512fe6616ab3b4244c75667088e7a8215c1d33dd9274a60a400afb1952254070dbbb15 SHA512 a5b69044571e8426277b2ac241bafb53d268adbb7340c0626cf00fd356c654baccdd36277995d38601e19cfca00da8481a9c861d01bbab3ce51685a7dd186832 DIST semver-1.0.24.crate 31267 BLAKE2B 934f55d953ca52f6c11696889182e1e4c660a6eae3917b15b411d91a18b22c6a1178708caf95da93e70e6ea97c0762ed9154333d60bf0a08b156ca7b50c4077e SHA512 751bb04fb50abfbb92b2612e1d1097f612a1ceee1861852681d6ad67fe459d77a72898903b14f2f01d8185fbbc022c7471913785610c2a8e9d6530e48094869a DIST sequoia-autocrypt-0.25.1.crate 41241 BLAKE2B 5fcb7131447b2e11aceeef037743b0a368693a92fca3b4296bd6d0d76fca5ef89c059556dc2591c944b2e9f545fd4e1a8008def5ccb1110b293e3a0f93954141 SHA512 a8835ddf7c782abbedc182d1d6062e23d420898480277f01869fe7d06ca5338ef1199c41b11091e4eec9ec304106ce1d09cc033ee298d4f72c918688584e3705 -DIST sequoia-cert-store-0.6.1.crate 253084 BLAKE2B 434bb1f62e1528c7e776ef3339b85620441d395b31d200d21523fa9b73dcabf2d897e6096953aa27f6cd7140166260d1be71700328077a9596ea0f82555528b7 SHA512 9de0301c6994c2a45b45951a7131d0b7f66977f6f2f9d7a6906fb94a95521b365e64da802d026014d985157c370d00e4ac90209b09241084e75aa71cede96567 DIST sequoia-cert-store-0.6.2.crate 263569 BLAKE2B 455faf4620fd975101685fc496dfe5f7d091e84cfd74e3bfa9539874c20b7721e13589f532182dc4405d0152bcde05225bf358ebc6fb90be5f4bc5898170c0b6 SHA512 c833697afa1fdcfc60a6c73e6ac30e3fa902a15f2325045ad5eba8082c686ad123311488e946ad76b0fdb86d7573289ffe5f482cbccd9b32f91f7c98f87da944 DIST sequoia-directories-0.1.0.crate 21519 BLAKE2B 58e324dc7b72c8edda6a598d8de40c06c9b9254caf4ea73f464a3a6373f3018ffc3e25461ad7cb9059257204be43db328f7448fd6114940885a9300680bb661a SHA512 e814a14eba5873f1c58f25630cdf4549a0e1145f52e784c81c294467c64f67f2a50c674a26ad62d46e2082f71c7e09863ca2f9e1cd4dfcc311946dc5060caceb DIST sequoia-gpg-agent-0.5.0.crate 138617 BLAKE2B 87b252f9e145e33fe98889458ceb62ec7969fee844c6a9f5c6c9a166148cf69164c09fc98b26df36856749a9d65231a6c3c6ca30c06ed33c77ea80529cb5169b SHA512 c49aed11f85ed657775649d184ca575eb9a740ea4e224d46043cb2d0477bce0faf6d9abbc73b33a18aff8fa05bc487db4a3f546b8b61a31fba84948b7d8c698f @@ -392,14 +359,10 @@ DIST sequoia-keystore-softkeys-0.6.0.crate 19702 BLAKE2B 2639a83cae845b613d8c11d DIST sequoia-net-0.29.0.crate 49014 BLAKE2B c24461cd4f05cb369f3765f4fda7188fc22ad50e5306e34506af750f47a11a3d84d4120436022e1eddefdeaa8a41d2d986b3e0804dab407c4e9988823adb2dae SHA512 18bdb9d774f39c0c42f6fc482b79996d0e61104d8a848f14770414569bc4b23a100b021261aca8498cb3b39a4126d6f49c2183abf7fa961e444069113843750a DIST sequoia-openpgp-1.22.0.crate 3017622 BLAKE2B 83be10aaa9adcd3af9a8b4657474892d4042c262c2349e2b7cd4669c23c27606c04674317daa6c143f8277684f58a1b85a2df77bc1cfeff3d79473480937401e SHA512 10893cff011ced034382d4fca9c04e61b7bdb5f2f621cbf4f36d611423248c7b411d7440433607cffdc1d646898607ede159248d1e69a6d2ca69bbc14db6f95a DIST sequoia-policy-config-0.7.0.crate 106066 BLAKE2B e3d02172c530264fb6af51ecc7729d0e9b70b7e88e74d25ef66b1fd60d50c88fa6eed5bf9df0f954c18e8d68251e761752dd75196971b6c0d29fece569b5c7e7 SHA512 24db46b8d47877bb533f2379db104464e78492305e2d7c0b058a1fefe5408ddb744a8a84ec239d750d9dc12166e79a49595e096e9d3cc24989455571b7c4e0f3 -DIST sequoia-sq-v1.0.0.tar.bz2 663498 BLAKE2B 2ed637f1dc18e335099b0cbe45b1ab1cafad41d6cd9dc1d761ba656e14e8fd27913090f7c611d1b0b05eb999a36234bf08eb6651bcd9cc46da0d92ae24c21203 SHA512 62a6d58f14fdd288835cc13ce321887e946cab19ea1b7458ff9624eb68b299b1a135d34fa47332358cd06bab55bf7eeaf256e398431c2aad3c9091d65a629399 DIST sequoia-sq-v1.1.0.tar.bz2 670352 BLAKE2B c69f77b0c8f1f3d4f02d3518d240b6c15a711838e565bb080c22863240a1bfd2a47958d39313ac274bbc4d808548043ad8dd07252f310cb9d51f5f098a0159a6 SHA512 f23103f1863dd6712e7830ed9d23b0209cddeeb4d209b4d71d920b41d58adaac22b9e19218f7a26d4f513e0a211646f6c2eb8b8cdf18da13c96c599cbf116f6f DIST sequoia-wot-0.13.2.crate 1021102 BLAKE2B 1d8cea68cb13f3092ac08912ba83ac0ff1a5cff21e6cace2768ca3d2bb77f7a5870ec7cbcd2788ffb13f50958d69396595e3b80571e7303dccd5d92aad5b372d SHA512 c606e8f07fc239d0f6042873f460c05540b25faacd04a1284fdcb77e88d030c52f3be4bc00bcc572c24d63a6ab2cf6f84cc2b82572afbdb1be7262cf66f0a7ea -DIST serde-1.0.216.crate 79000 BLAKE2B 98c0f5cee2f9212c6b7620d2068665379471ceb7557d1454cab9b1c2120b526ef597fbb642f65440e70f92a4764cad33613b478bacf99138dd5bd51fdbdbee6b SHA512 baabf4c7aac4a540c9ed18b336662087258b71c9cb0e547c8d83a2734818ab2cbbe62f910d812eb61d3d46e653c41a3eebc99b1d679bfc51f95710c71a8ecc20 DIST serde-1.0.217.crate 79019 BLAKE2B a0aacff795d34583365ddd469fa14c58a6cccf8afbb248210aaff3134c7ce6e34b3d03f437326d7c01b3e78f82a5d19c37ed9fa4372970d8b2793f2889288e1c SHA512 f97b3b54b9e99c9a027390405cc054c3072f49c92803a4ed5f5f69e76a179deda9d77993b645b3581437085912d881da88d0451b9e0da423c64033a23fdd8054 -DIST serde_derive-1.0.216.crate 57674 BLAKE2B 12a9228679c16288c08c8b256707e276aec79f84ac7af0c4cfd1f109500dfea80438df17d798acdd30a9743c753e70093b22bd324217529bac483f257682a3e2 SHA512 80fcb552279ac7562297df878f2f5e9ac09241701f5cf1088fcbf473b638f58cd3092a7930d8937ca0df9a47b9ae1a42d490cd46a275259cd8089fe8f5426469 DIST serde_derive-1.0.217.crate 57749 BLAKE2B 63b4930122d80d64492ba2718630513012202e42bbaa74510729ee66a0e72b8a1ad123784b479697ba562db43868f4bddfdf5e94bb3d744cd68a547471ba40aa SHA512 31020f4533d04b31ae125580a3c5093fad36438d324e2d9b063923aa8c125c654102ae7fbc3b3df892bb41db6b321962a23e0a37950e080055d715d15b18af76 -DIST serde_json-1.0.133.crate 150739 BLAKE2B 7891eb5b8edcc7fd09ab1e15d3881ffdcb629aa39f2bd758c0505700a5f2dfabd85b1b66c3b094268bc1627b346e204c792f4ca61efa76c54ab9cd5744fb0ee2 SHA512 20e65ec87bff319897a141960d13deb5cadcf821209c1ee8799f1dc7f458ce432bc62c16df5bdada1c8d3cc01ff23b8125e8fa0a03545d4614f32efd687dc69f DIST serde_json-1.0.134.crate 154351 BLAKE2B 546f8ffe9373444e8c9e81910476da281dcef10498dceabc8bec9f9063c55f4a9033b83586a09b0f410369515882c37712a2bd75ff1fff05815d904f37386124 SHA512 ab6323799bf19da8ec6e6c428370d37cd230192b45ef54d2c65c7d83907b2dde71d51650e44f1fcca1084e75e0e195e97b28437f53a331bf48effed3d59b58a5 DIST serde_path_to_error-0.1.16.crate 16657 BLAKE2B c9064b28677201ead32eaa91f20444251b75e7fc7f512075cd53079fcad54006f531ab4fada27ad7414f57a385441de65def5702d592143916d0106fa8e70182 SHA512 d937e2ef7eb6f58e741f0b1805431fd8cfc583d558fd5b58aa04aefcfc61694503afeca33ad62f6a09b4039555e3199c18d5912b7d5d928120ff631949cfc30e DIST serde_urlencoded-0.7.1.crate 12822 BLAKE2B 38c74ea862f041828467dfa586bad9b8e1d1d64a9f82fb7f98727e3965377d00e59f2dbf20955a9dce976b6911c0a619d2a6e4cc9dfc73cf0f6c449d873fd072 SHA512 b209ad01b6565e95c1d5b431a3f4f8a0df3d11c2a06a44123048bfa4b34ebb6807eec593f0c1c89de3a06ac3786a14747df9c70b4f4d5e4b72b4feb53084eb60 @@ -419,42 +382,31 @@ DIST socket2-0.5.8.crate 56309 BLAKE2B 309e5a0e46d0b9debbbd6049a138e56b82df4fc0e DIST spin-0.9.8.crate 38958 BLAKE2B 8648bf2e48fc618758e3de67f0a493bf3cd22a8d18666164b0d850ed7c0d73650f7b0af783019dd361116bd60c61d24895cdd2c579383cd2700de0e32a23cdae SHA512 b15ad66ba9b308937f34ea166b799676fa45c67224e10cb57530fe33d2a8317ff3e3db3223a3249fa2862cc141c964d2130d3f39910a86ac5ef8aaf8ff4bc6ee DIST spki-0.7.3.crate 16409 BLAKE2B 6b39144e4e718ce5eb454e21ee89fb936ffd31ec99554b0150fee47bca396bdfe4ef39603ec029d4af4d8c4c3ba2de7f6c549244f8c20114de9b43ff14921681 SHA512 d33a6a7844b33c37628024ccf25c1a631f7a6661595e063049b8c9a9b4edb28f0335397faefc592c6fc5e96378b870ab5dab9b0649c3387577b2370ec8210db9 DIST stable_deref_trait-1.2.0.crate 8054 BLAKE2B 287a65c3e5b47213544a43e57c60a54add60b4c2e3c8d042407d860cc950ba7ca01a2e67ce56aed6744992b61ec1f9aed3321e3d88482e33129548b7d51df205 SHA512 a13cfb22723f1f2cf089b2d07d657846f50c37bc0438d1a76096bea30214cad226b7a422c21f9e191ce87071da8a141d61882aedf9e0203a5fffdfda86a5fb03 -DIST state-0.5.3.crate 30385 BLAKE2B dce810b48e985b67e7d0c02c29fc718b0366e80522d211a5559cdffa1a8d46251527ae283caf49794aa0a655a73f5c3ce8d779e92ae5350adbca19caa2208102 SHA512 bdf171e663921d464b2df644d761c7754e36604e60d50ca562634524da0fe2dc0c53ff0a56d7bc7794d357f0844ee1ba197468cb3564e2bd7a240b30429ced79 DIST state-0.6.0.crate 30182 BLAKE2B e70fd59581691689c09e03688dd74f1590e24ae0e731682694abfca247c87659f8743e642fe27a4f8fdd3e6721f04eca7ddb643964a50fa1ee3bb0d716a5170e SHA512 88c459d07be79559cf8075d777364dc2b3d2455a03a213372b52499e419a9c3250f3fd606bebde1dca3f6bbbc085156abc1f16d86627ccc162e1fe95058433ba DIST stfu8-0.2.7.crate 42753 BLAKE2B 0fd14038b094f0351fc80d9de4b8d5f83b047577d0c59af549e7ba5c980f4e7db71b8368dfa29d877c8d834dcb59a752e2234c502914900a97d4a0bf796c83ec SHA512 5584cd8b16b78e6131a6f4f6601fcfafc737bcf614855595e5a2253b20c031045dd48fa5fddc124538f27c031b879be7d71918f588edc273dd52fdece70e3e59 DIST string_cache-0.8.7.crate 16655 BLAKE2B 9a017f3248a3d5e7b8c1a05462a882862b20174c7ce5dda1568c3d3f61c422e84ba2ccd5d6dbd726d1c752f1eaa8062a179470927a80d5bdda0ce530d1ae2c17 SHA512 03f9cdd2c01c0f233284851f17eaefebd68a91ae2ed2b231fab2d6d6476bd19e0696d7d3a74fb6ecb2ec36b89e79ad966ab73051255c9e194bcf9c5029fb8479 DIST strsim-0.11.1.crate 14266 BLAKE2B 252a9ede4241b165525486aa8855dece37af77f5b28e0e1858c4a5d2047db9fa958328db10989234aad69463ab51b2303785ec056c63ea8c95bf95e111ddabf2 SHA512 0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c -DIST subplot-0.11.0.crate 145943 BLAKE2B 57e262dfc3479c8bc16429865bce6e066af8765bec90a28d898c20ef1dbc4e86009b6d37bb313b453ee9ed62a6bd0e93be4abccf2340810631efda3fa047406c SHA512 9b5aaa8dfd21503a53f18e13ccf4eed253455d4b6575600988d60e7866978aa76d7b66909e0703f381e7f1fe8b8b01c575cc045c72147ed963614632bc506765 DIST subplot-0.12.0.crate 133795 BLAKE2B 1ce69bcd9d9fea1e19b34810cd5e3495b437cef05e0e1e725fc7266407b98ccca6cef733009959ea8b0e233f3ba24f3dfc2a259ccb38ff74d39c188fdf5cc5a1 SHA512 7dccbd92b98efd88b81499eb91f046bfeb4207ba5c0360fba1d61b2a9af84ac5d6424f8db27a1dd10ebcdb324e4a253f9614c1eec66c71aaec991ef7bec0b00e -DIST subplot-build-0.11.0.crate 2423 BLAKE2B 6d6b3903ebaa691039ccfebb8cb8f64e62c0ae091efa1b73de9163bf87b1b0839c95a0c53d0676bae0eae0c6dc50945c310c0cb3e602d21b089ad5b86749601a SHA512 dcb569e7e8e127ff3083c19b633e3d1be5b21c053cbd5b53b9fe6497ff07949463cc8dbb506cceceea590ce6398baf1a90317689971e19c7f8696a6ed832dacc DIST subplot-build-0.12.0.crate 2441 BLAKE2B 34c89dc227b4afd1497a15fd2e56a321772d09ca8c2daddef1eef293de1683667116fa81067f5216967d1fe7f88d91300ee76068d2a0ae1ade6ddede531eb8ef SHA512 a21533926d8c3e227d2d6757a040b29fd25e0d043ce6f45bcb1a0aaab4c7887e5f7849ef5e6431aad89ec500fc3d45e4ec234365bea1cbb16af6bde6e31dc233 -DIST subplotlib-0.11.0.crate 22609 BLAKE2B 56c559af960e92fbeeb900af5f2ad8a1a1cb23bbe8651a5706f27b596048029a1fc4b0f3084bd1edbd9e6f4845f030c3d6ffd45de2fd0d8ec0dab4c5824bd910 SHA512 174b4feaa6577ff41fb2abf3c4f17d503768c4c2cab07fd0c60a0c6122751f8e375e775ba8a1c499ded81de3917a4d6a47f422feaac69621f69af54e7270829e DIST subplotlib-0.12.0.crate 22285 BLAKE2B 0b19358492afdab54432fbdb73f02607277eba144a653a05410fd974c88a9027567a17316e344024b0a976bae12e7432d2dbb2ef645c4fa9212dc3073a18a296 SHA512 cec7b7d48ac46942778846a75cbfcb438b450d5fbfc41a3db1ed75ef5eea71bdf4b0afb719639f591612a3f3fe9a4e5787c1928feef62711567d0cbd743022f2 -DIST subplotlib-derive-0.11.0.crate 4545 BLAKE2B 353c23037b9cac26d350b4687afc812c5a0bd02fb4e4e85d52464005196ffb7755c4acdc8f68968ac4fe307e630ddc134599b01df8388b02f11b2ac904f692a2 SHA512 545c8216c6e78354ab7502cb67b4592c37c7009753ce203404768819da8b6caabd1c6f2dcfa9c935b8a9914edf11d335f43fec19e9b6fc2dbafa88d0e699a487 DIST subplotlib-derive-0.12.0.crate 6078 BLAKE2B 118fc1f5368c87aa3b6402bc0d628433d0e50ebc3ba2d27cc60ea5d1f5aee9b712a42c55f24b23d2b0a450a0cef3b43bd16277f0630cd5436ff0ddb1f6888bc4 SHA512 ad44ac828ca2759a12b04250cfd986d4e9c38b493556417c38918eb4a92356dfa3263d46ccb19f6462a4d9b8f6b0deeaaf34ecb0e07db4a687c5be8d6170fa8f DIST subtle-2.6.1.crate 14562 BLAKE2B 3cf4940b7a01f04715da1057f6a92b1043a6b86ab2ee7f9fee0337b680ff781201d330409460f6f90b3f81bb5fd4b563e17c762c6e824ba3b0af99e4ae7d66bd SHA512 f5946ebd9bcb8776ee3446abcbf4afb3cca5d8bd847cadda87e864333ac7ded537a3efa773e9648adf20ce4add2c1da85172cff88c1e1a3a6cb051401b00c6bd -DIST syn-2.0.90.crate 290584 BLAKE2B 9f469001c1439ffe57c578119653d3021c2709767e8e881441459a190402679f4fb78aa65e7822ff20913801c3be00d9b8f115189ea8e63ed94ed359b40fc9e1 SHA512 44606124f113c259c19edcb2adc1378d8292b422d800604c0e0d1ba89bd2d13d518cf4a6afa58daded54da9cb285464aadb113815406a0f09c5e18f865789ae0 DIST syn-2.0.93.crate 293925 BLAKE2B c36aabae91b4d25149d03d58576dcc067a481ba456ebd6ec9ebe2ab5606e0dc1aff3c6aa714e6a0dd40dd8b8e01d3f48243b6e831f68ed2c12c799b25a347ddb SHA512 0f76fb495402b9d4eda239d65fd4697f77231b702ad4aa1c4d2991b899a092b892c30d1dace92bb54a53f5a7d2baf7637ed3c1804d11c6708987cb1e2b50450b DIST sync_wrapper-1.0.2.crate 6958 BLAKE2B b2e162f982ea827229dcff468bcf31c6286c57ea3491a909784cdb50b0ba36c3a1a6fbdc7b34fc2aa9a7df1d174393d61ea9dc7ab3439a5e1a1884e2473a70f8 SHA512 aa314a6ab3ba028d2a169ea55a50eecf3b73b475a81c91330430ece9f1734296562627a8c32fad51b5a26796931f364e2803b3a13075ccd9a0aa614d5220903c DIST synstructure-0.13.1.crate 18327 BLAKE2B b29ee88c559a2d58fa46b7af155b448f001649ea79a1898f0ac87e69108b87c65cbd287d8f9001f360df7fef06ff39c937b48d33e487a30c8eec6a46c639c0c2 SHA512 09024193b44fc9a8901bda845b9f86c57dad65d0f53e309b2e7e968538fab6f67db1c86e5e52a2eb8fd116dc073e3ad10983bd60764662ec6ba94fee22a958aa DIST system-configuration-0.6.1.crate 17935 BLAKE2B 9f4d8f60b3b000995b39f9c3a2ab56e6587293dd64c26558763203bde641adf57ce1dc5107b4f73b392daf3997038309e02b3da8c6bb0e4beccc0732becd0333 SHA512 ba7eddeba87d22206c250908f0158120b4984750cf7b2b8d57a50a32b323d3346321c8f2bab726c1d7ad97fc5da0b19d663c0e2db27ff74e3889463639a4ec89 DIST system-configuration-sys-0.6.0.crate 11090 BLAKE2B 2bc38fa55070e33e762cba4baa7e1f5a637e625c150a821bfdf99c60d08343e83cc26a302f4f70a44cee967bd8b4784caacc15436df82d10e05751831b46c1e6 SHA512 02b1693b8c18ae3484e366a7f7395a31902a026e0864a8ffc7643c7b4a856f912f58f2ec19ba52a50d0d1dc09a806888fa1f3222e1af1f65b8a16eedcc966234 DIST tempfile-3.14.0.crate 35065 BLAKE2B d155a39f6ed6e846bfd572ffdc73f306d30942642e07f2b497963ae150b8ef774dd046bfb3ce410fa326c8e1df27b0cada804100215e01d02272d6059d5294e3 SHA512 98c1ab70eb3efd2d8b16ed58c8c83f8599663af7ef269304e908a04c38334f659a4d0b1647a13dc0d1eb90a293f1b37ec8ff0b9b45ef5b7ff1b4452bbfcdcb15 -DIST tempfile-fast-0.3.4.crate 8991 BLAKE2B 98fae1979a2be1aef1d9c6abafdffb6b90df92328af5c74d19ea4991539f8c3be7cd823e980c13e90f16300611d222c1d81b7eac4c55b7a3da3c38abe385cc36 SHA512 b0d44bbf78e9991784a9d20f3f3ea8d5e59e95d74d782889a3f38f732a0fb06920ec81295c8abdff7603675c55c43c3ff7d9f4bcc094f403ad83bfb96a9ceb1f DIST tera-1.20.0.crate 104452 BLAKE2B 8d264f78bf2c9fecd16d94b15def76e3109763f74818f70e0aaa2fb7897733259402103f0416578c36cf1b918e3d734528e0a47a8a1ad5200a4c32f7a1d8ecb8 SHA512 1bea8153253c1c301077bda258bc88ff2f4092efb67066f07b46754df00a01908e5aacaa41df089a73d5d8ffc49e518b6d0312a7d6846d5b548c85298bde6150 DIST term-0.7.0.crate 37082 BLAKE2B cb7947c696f71fc68bab3b25cc6cbde74b92380fdde5447399b06de99534b0cb2160963792824ac74a350444ce41a4fa16d6a9792a68d84578a15ab37ab76ca2 SHA512 9de6e836f1fd205b3b58645ec880eaabfc0fd8991e3980ef90bc6184b370a14676edb688a2a75bce412dd8ebd97345aef742afe5b964250e2b6f84e6b15b486a -DIST term-1.0.0.crate 36590 BLAKE2B f425b99e62d2c3ae8be417f451c09c13f29e8fda64ff499b59a3b0ab4488acedbd40ecade9a9a5d1f9245599472a70ca438fdfcbe9b94afb5d75bc2c6a49995c SHA512 dd727170cd03c3667cc51a5db3d2d3dbd0f6c0da5903896eddcef86d8217d65c461e328b91367992a94446d12b03dd484831e469f371b637dea2cd7cd84fb761 DIST term-1.0.1.crate 36846 BLAKE2B 722e4479d485e4985cfd45cf9782c8a7a8c4e10ebfe03d8f6e1be27c68c2c49dddaa7e5fbe9514a7413f87ed8748e5e1d071b80e535e615fde0e90feb06e03b4 SHA512 9e3d6d01aaf30896415469b5b1755d0952d2a51533f3516d9546724a8c69e5ddc6a3917f6db89888176549428e7924d1a5fcd504bd800b83fa3ab59e9d54bee7 DIST termcolor-1.4.1.crate 18773 BLAKE2B 34676efbde8e242415857d6d40a287ae3459678d8222f5144faefb8c84d635686f640e79588d98635c8f25b7628ec6663a01b16e1e462705b5cba7e8b8e61f44 SHA512 b66aad157c4fa2985f764321d157dfb1f0325fd633811870db7919b5579bf7bc19fefe99e1c706cdfa67504c37dc2ca3d283e11d1bb516edcfaf1eb7747a778a DIST terminal_size-0.4.1.crate 10037 BLAKE2B 1d99577917b88498902d85718b4ba71ddcd7a1daca4f1b38f4b5ea4c34533eab9cda2cc344cdec5a31ffe0152fbcc5d499ccb40dc73f985f083a3ea21b0b1226 SHA512 e07bdbdf695bf9a607ea7c7c4c5b22a8637b0871877114aa305717a04d31a6b7670e2a79435810aefefe25db8c9a655e4c4ba6075d4ec76322a30cdf71ff03be -DIST termtree-0.4.1.crate 4557 BLAKE2B d4300b0e6e908c519a0a76f5e08167f4467f428b2926e7739614cef5d3e294dfac15ae8576f7011a852745713c16da93346660ff96520a2bb90a4dd4c23d889c SHA512 ddbe0d3ddd79b182732359f47958ca32aa351d10b1e7d5f6456700b851aa2b5314ce005e1fd120a248b676f219fbd68039cefc071d92c5b5477d053bb6e29062 DIST termtree-0.5.1.crate 8498 BLAKE2B ebe1face80741908e28d3fbf828bd0a7a70bb317f4532fe38ac9b6adae898a7032f751718a39300ecca8c7bf0ea6cca028c02c93c7ce7a645d67656318e90172 SHA512 43d92132cef6d352c6c0190ce4a688d7cffb61ee86dbc6b49ba1f4c404661f9b329331198063d913ae52b2d4c69e6a2d9f5cd62886894c468093abd8604f0125 DIST textwrap-0.16.1.crate 56012 BLAKE2B 9b5a7c76eca64d089f4fab7095f2d35624527ca223e53b03cc807c6bfe913a99b55197b973a3102e3e5c4055bcd6ab580a0c9d67657180b61435bd6eb7631211 SHA512 3a8d2036c8e4b88866d68b8066a2991756f6bd4ac5c726e63fdffbc894fbdc03bf8b6e0ece4b96684c8e1facb6413190768d51a8539094efe47977c120d31f1b DIST thiserror-1.0.69.crate 22198 BLAKE2B fdd8ca8c8ca78702377d0bf7b253440519018275b105db980d63229d0d44aa5c39a703e14aa6fe453c779b3c864d8044009dfef893d2a5294950f067656d7a80 SHA512 ef50d2867d965da1dfb29d26faf6de273b5fadf78f95313f6caf44d68bfc610b9bd4b7544200b05bb0861231cfc84e961007f8db83c7905244c492037fd31899 -DIST thiserror-2.0.6.crate 28433 BLAKE2B 11f70af76b17ff3b48f27b47031f2f976b9939372a145bb9261236acf316a7230ab1bcf51e85b66bbca3a12a4a9eef404f1fb24e8588979b8cb707f374514140 SHA512 95c436442e3a6e3c841583669e5504c009522d23e124a9d5b7ac4a91346040baa294ca810ac035155189283f7d82c54ea2ed9392619821f6d2e3cdc439d48772 DIST thiserror-2.0.9.crate 28531 BLAKE2B 7789458ffcb381e2cf02f182248396c5e6c20a818e4c5a2c7da8a8f50099c548646b51dbfe0630a242f24e9aff65e215a4473e13f63bbffbd80a3429237c65c7 SHA512 b7b5f54cde87c21e8fac3526d5a140c0d64116e700d07eb28714df3db372a42fba30bb37817282d0ee1b5333f1998d1f628d43054e59fc39393fb567c3df4cb0 DIST thiserror-impl-1.0.69.crate 18365 BLAKE2B 51663251ea6ec99c59aec35fe73c5f9760809d6b6b7eaa8ecbc8f6939acdc4d0ebc11f9034d9204dde7bd689d5e8303ae0be86e298745e9ef96825bf73453a08 SHA512 579eb796c8885feb01d27638862823acd96c79440655bb444c3445ac00121852603396ce7439aed617c0a0ac69f62102167fde5845411c906997574a46d6d9e3 -DIST thiserror-impl-2.0.6.crate 20946 BLAKE2B 44d9530c7477e26628cc668ec5d74dbe3e27e9f69ee2d2a5c9694875570abd5dbb73f4b6c45bad311254c3fa21d3a7511006b8d8db4ce15355f1ab1d68f51316 SHA512 73c5e180d087c6cecf3421d3c56a8d13b4a908fa9dec02a028f30adeaebbfc6ad7748837f08c5286007f09b7430df8677eadc50527d6f17e2341341441ed6059 DIST thiserror-impl-2.0.9.crate 21023 BLAKE2B c2def0cfe9b9854ce33075fc246a2baba386d8f3a70f26516124f5ff4f7dbb0cd0b8887882c491f37652b565ee4fb3e7895a39cf34564a21e96890fa6e3ce125 SHA512 408f6a4c0f6cee36f69fff5a2f08cbd349db44753e6b6ac730c418fa1fc06ba7f69fbf248182af947843ae49d5cb5ff53980cdb18cb850ea8d7d9ac7dc8d67fa DIST thread_local-1.1.8.crate 13962 BLAKE2B fce2feddaaebde42bdb83d814929868f06387a4fa25d5becc73ff0b983395aabe076268569c6a89e2d90ce6e68d2ebca7c3e0ba1c9159c61b32631ce39289a9f SHA512 6d7e3941f43c43ac091db5d1cf2a8a3892b54b0634d9200426eadeb82015566532f04b6040085dbdcb10580ac724b6ded8416931d764d795a5f923aced66c492 DIST time-0.3.37.crate 123257 BLAKE2B 5968d85182e3a945c194c0e405a3c771698472f4b4028a01870e8dedcfc5c10a32e167715c7c12626b46b9ddd758c72e0188b55e45c0396cbaa42a65920ae28e SHA512 6d007507f79c45a7408675b3223bbf83a133bbaf96429ae6a02b5db09acccf884bb8323dc6f3dd05e7ce87a78366a55bafa6c6ba31b04198a31026df4ef425e2 @@ -462,7 +414,6 @@ DIST time-core-0.1.2.crate 7191 BLAKE2B c477ad3410ff29f3bf4a38fc6ac4a043d49b6d2b DIST time-macros-0.2.19.crate 24268 BLAKE2B 18f0601f5307d310010bea20dc7171adc8600c5b2e6303dc9b38ebfbaa7fb59a029dddb627cf5a5b7fd2f7ed66186dbb5321cad0f90f3f85b6edcc901a8c2855 SHA512 c58aa596247a4cab720bef74ff43be44686db2da2978826a1f9b58c640113b5696efc2ae1746bf84042fdbb94bec42c7fc34f7ae6812478f55849a12a90dff5e DIST tiny-keccak-2.0.2.crate 20129 BLAKE2B 105a2d2af36cc053cd95721ea563108f33b8a3feb2ae84c75a04a65ed5d548dfe35d8b2e48977a82f725c0ebcf914f21157c547f4a74bb4d98c2e894385139be SHA512 c0219f23361eb07e0a68575c461a36b7286d9bdebae89080d9e259178d402b0c7762ccf33e65a16951ea168392322c44a24eb55189cf143e22d09d6dfc4acec1 DIST tinystr-0.7.6.crate 16971 BLAKE2B 33a248261c4cded41a81f0d6e6c8df55437f042b37f235c39787986ec562f0dbff50b282ad0f1483daaf49c4b33e6618e139a6677d1238c21f4e12082562b4ae SHA512 a33051848de248cac0a2d151760a78cb3aa62c787d84ff7aac38b11c0660e9188e4d43d43a77fb8676e49ac6102015e9c3db057848d809e71981851875d0fb25 -DIST tinyvec-1.8.0.crate 46796 BLAKE2B 720d0e6d881855a36779e12f5ffa708d3a8b96e6d0de9056cb33c9b8ce0d408f99b22f5b2bb9d64bee72a011fef846dbebbea2ccd238d7b951eb5ef0c4866e05 SHA512 b7b32e38229645965900f80f298685f13e6d13e58cfd6945409a6643ca9c9adc2621456956d5998ab9dd91c2db4ae79638b156ca0d9c7c5505023fd9b28414df DIST tinyvec-1.8.1.crate 47269 BLAKE2B d72ec2417520fa0481b8447e6d75e1f24731d38f9083a711185785174a8567c81f6416468b9eabf426f9d32683231e7c5e80202292d1e424f9e4ac9cc8b3e765 SHA512 db32a6beb1c86eb3e9f5ff2732a4acc03d1d684f0e54df5de2ecbfd08399639f47396ae8b17eb5f0122a09ba0c313f39bd73a6f7c44cc38d1891d1bdf3f2d176 DIST tinyvec_macros-0.1.1.crate 5865 BLAKE2B 2bf4f68ca11dc19c72232951605a4c809b34ff38ee365ee4f592a3c41360e23c9330cfba961e2692a0ad568fef4aaaac51c40808d491178cf7a0c4b5a1c5d484 SHA512 10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e DIST tokio-1.42.0.crate 806998 BLAKE2B 9d33a892eb8de63a65218da70f29f21b75b5b9635cbde0ae0667f6de117a4c6660cb2bbc1316b76e9e796960b7dc6c2b31c146f016cc147a2f11333b26391a5d SHA512 3cdc72f3209057cd0f954913f3d26d275246e0a2d63171f84449257de55d1a416c65b340d38a0d0c7fa33bde36bb612f550cbd43a49df22781c84f8ab2bdad9f @@ -485,14 +436,12 @@ DIST try-lock-0.2.5.crate 4314 BLAKE2B e75c6c0d7c975e294e3d723e2fb023067530ad6db DIST twofish-0.7.1.crate 12156 BLAKE2B 282ba2e6e4610297a67aff0e06db6089c57edcb0056b4d6592a84b96dffed7e2394c7ef0418e7c0b7628b2b9585b6ce8a0f0f981de36c3f10b8ebd3fa85289a8 SHA512 9f6f9768e0ec227d03de0f95d5baed803a710b286fb18a2fc4e325eb518ac2e483fba6928b14f7b6a38643b0320d6d37fa1f3d2fdd26e805cd23705753cd1055 DIST typenum-1.17.0.crate 42849 BLAKE2B a6d1162050679e2c4ab2467f3a77d301f6861882eb7c9749f31d047f383dd5bd2ed5846ad63eed99ccc04d6ac36cc697a305861e1d65880b4d2ef04ee0a79b94 SHA512 99773d5d9f850c0602db4bb67dd062b0ade6f086e155216f1bb2fb6569461ba7e1b7c2f2af81ea8833bc3bfcf3fe5033edecb7c438adae63f59d3e30cf63a508 DIST ucd-trie-0.1.7.crate 46795 BLAKE2B 1901b49ae246f0d9628b675d4320c1005707bf97d4c8b0ff99e916d198e31698fddfdb0551222f36b73b9ec7d9e648d679848841d81e975bb9ea69bd1e30aea7 SHA512 382a832e38654a9159ebb40a8e8bf6e7f2f3108940e5b9c388f3a1441848a241201e7e5cfb125e098f04f0b2893da231b8a0e5124270e774215374bff3c5445f -DIST unescape-0.1.0.crate 2412 BLAKE2B d373b1deeb116af0cdf177086bdfb2228cb9a1cdf56845a4fa37d92c700e1b71cc959617687d163e0f5d062f73ca48e9121dce56bc278374340189ecb8f110da SHA512 8900083c068fa12f719ac6a08436b22945a35ddddc61bba85fe47015e449026191f543c3ab15e436925f0799f8611acacb1d016646a1b0742a77617886533eac DIST unic-char-property-0.9.0.crate 6809 BLAKE2B d2bb66259b66e59e831ad74d89528882336a7cf6dfac7a9f49308a70a3d61d5ab88f3ade9df2c086f27ff4a6eae0d2d2b8e63bd154ce3e700cc525769f34542a SHA512 ef969968c61eae6a7d68e6ccb0b40f6618a69bfc4714b51bf4ee8c5ec4532d10b9c6675a4cd5121c904a578ceec7c6471d1496fedbf121059f076ad1c5ccb70d DIST unic-char-range-0.9.0.crate 7020 BLAKE2B ab79b4298b999a9fbb769bf191f83e259b40b8d06cc5cb82abac48434162216a283fa82c1bc9af8b40656c2d06e5b6a919ff7888852eabb9001a92db12fa48d7 SHA512 bb0ede1695f4f016bdf9ec83bb49639527248c175c71d24993b8651ea6be0a411251ed8518893101dd5e96fd2913cf15ec27799c677ddb08b8e408da06ae0ceb DIST unic-common-0.9.0.crate 2558 BLAKE2B 4efd81198a61076ed45f6fff73561de21b5b7500277de206ed41cfb01ce8e5046a1e2c5f90ac75c03eb1897b7f54a14cf0a8f6d9cb39f624b3a9fac375468e58 SHA512 9212f99afd4c694a3a671963d63e5349f81adde6d5f50c92ec39d15e7ee24aa91eee63ba578a857c8b21380937860968a8e13cd16bb0ee0c0ccd96b3094ad155 DIST unic-segment-0.9.0.crate 34848 BLAKE2B cf04b1d875ebc835758b17f8fa0937da8e47b5c3aa3d2389b9ee35160805b1a0696c3a654d68b60a515fd31dba0571b0a087e97f6815ebd075e1bfeefd0a623a SHA512 cc2a27459dca554a78ce24fee42f0e4d0fbac37c42b4c5a1275f9e3b412cd1c813a4b4864857ddc33b549d99f10c9ce9c277b00f9fa7d93f130f5e47106d8fb3 DIST unic-ucd-segment-0.9.0.crate 39262 BLAKE2B 73a2f0bfeb17ee731c17e7eb4b7188a800fcd3745c5c6480916240d087df5a856e4f51556e1aaee1e6668b216377acdaf4879beee6b285da040f6871f0c04e6b SHA512 04aab71f97785453dce7f561acfb2382a23d60a68735f3664577015a256191463dd6b1f90694e4440c4889eb9b6380c16c7a0ec2dfc2d49fc44a284eeca43c09 DIST unic-ucd-version-0.9.0.crate 2246 BLAKE2B c546ee182387db997e6cd699a25bc201fc943306d8e87f96edc1a3dc1cd5ab8ad96f34e8275721a5604765aa6fb6f81e3d8d9eae690d04e5ba71325a769b065b SHA512 153219ff18be02e23ff3dc90bba11fa8c7cda11b972e0d84500d9a0742fb7d84466f2cc63ee278a24098c39634e50742af3317cd942f4ea882ef5a2a8e003d7b -DIST unicase-2.8.0.crate 23843 BLAKE2B 5e479780dd3a690a98e612454761f0248d8106b8efa45964059a04eabadb78f0a6c598115e4b74d38a96c231272e1bde2b8f4edb328069ee6dd0874358613d50 SHA512 2c86abf8c87b87fbcff4ea9a6093d86b876e2e619120c6a9b055712a271f8bf165eb533ab9d523af2b516843a39b5bd549d9251f9b079748176451c9c820c0ed DIST unicase-2.8.1.crate 24088 BLAKE2B 29fe558490245cc1f9c551ba524ab452a4ea18d5f3e5763bc58e6b4c52e21bb8bb5e3f16df35bb96652801c3d96e53f8a39cffd31a0cfd1c83f0fa3161f4ed4d SHA512 99a3944a5c987376bdea5fe6c0797e881bc8e6f629c56120ce811c8ebbed0a3ba24617decb74d6939699c8fc994c662eb292869ab407c0ba0ec460a32ede0190 DIST unicode-ident-1.0.14.crate 47547 BLAKE2B 30e0b6d7f3a967aaf5b9d91237008a60c3a8ded53bda901696e23cea3931dd71b01ddab866dca9e31e17c395d5f5a68f2a938655b693e894962568c2cff5ca15 SHA512 7c6dcd1724e8cfedc37546d1abd49088b633dad228097acc73d7b6cab255b223e830c541144e05a00388fd8ca8066f27c18792419cfa58ee9da4460a38d0bc0a DIST unicode-linebreak-0.1.5.crate 15324 BLAKE2B dc560d5b36ed01357c22750feb7f09fd0f57fb0ea543180f6e31c0b71b51df4faaa70ac8482f9cd60e5d1faa5bfd4bebfbfd628dd5913c2c4a858ec04beeca3f SHA512 f37be2f7b04b886e95bb7d0f33bd392b78bb940ef9a01cec487062cf31ec0367306650fad7004df556887a324c714eeb28f697044aad9a429ce07b7b7344af60 @@ -553,13 +502,11 @@ DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e DIST windows_x86_64_gnullvm-0.52.6.crate 435707 BLAKE2B ab77dccd06328cdb00175f41cdbc120594050a9678b7f9820444391fb50aada3911a91ea00f3a6db2b4fa1820fd23bc9a007dfbe65ad41417c26ee1137ef9b96 SHA512 67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 DIST windows_x86_64_msvc-0.52.6.crate 832564 BLAKE2B 8e9a3044654c6de99a9153e7cacd575474e7a8a3d883c67b02132af5d3fc99d03cd5f7a4dd666a3947451d11218e6acc6eb5e2526f012481106cc13453839719 SHA512 21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7 -DIST winnow-0.6.20.crate 163617 BLAKE2B b47ba6cd94ec80a72b51ad09c5cb9de350d2243295d3997732d5d3d9f8d08bd83e3129150fb24992243949120da1bd6091d580db5ff10258fd745afaa944c791 SHA512 3347fdfb5b15ec73a40614ecd0cce60f41d3f2d083f49aaafceeaf5db52d5c677dc3eb39fcc2595999fc9f864d1fde81e180e09dc86a6f6124878e16e86e8bc8 DIST winnow-0.6.21.crate 164981 BLAKE2B 7621e7a0af704ad0295c210d7c9d32c4f2a93e56117dbccc50de4049eada9b908ff366bd5f6d58de04d2fe4601a2ffacc78d34a24089cca9a087c074de14a99c SHA512 0905430fc2c080be002cc41ea737c182e1b5100b699a3bdc45e58bbdf9fb3448cf0c3da99c033545deb3b983ccd938d300675260ca1fae51096b6faab9d10800 DIST winreg-0.50.0.crate 29703 BLAKE2B db9a968ef96cc07bc1088831affc4627e09c7ab8170a54fdf70a599c2d6180a8a9ac46b6304b61fdd2fac96e01bb004ebd8051940300c7b52c5b7b7975732d11 SHA512 2f52a9e3ab794665263499c88dfdf06009c6477d180a90ebbe86e786ae7f5003c9dc8b3c26224024e79450f3b94688000458f2ea8b1ae1c3691453c3d4df4787 DIST write16-1.0.0.crate 7218 BLAKE2B 548796314339463e4b71f8af3d344e45dc89480e103180b6d56c90fcb816ad1a37ab2ba20766c4b9754f2cc686752eb1f3a5a12ec1ed4369a9cef749ad4f3e97 SHA512 655a207b8082bb88e462f992ecb4833cef9d590da06d6356b41d109df2862b49ee5705189c78a607b549e7343035119d158020d58fcad49608e51659357a83c1 DIST writeable-0.5.5.crate 22354 BLAKE2B e4ff9862c070b413568ce0c75d1eccafcf1db8578eee4795ea9046dadd643f8a77258b437be288b93af247199d63455298ac2cff909226bc432f91c0aa863921 SHA512 818b2546c8ec25816aeaf5e31a1ded927d197bf7256e7c5073738c2709bc58a95d382a0256eb38a99235ae83729b578701261866d42ea3357a26024906e196c1 DIST x25519-dalek-2.0.1.crate 87820 BLAKE2B 039749d0278d95996016260f9e32162b370594085186044665685288d879e067fa16a5d4d42e939d2bd05f7b47a81036cb4f573d841cc81ece078c7a08eb672d SHA512 13dde8a8d4772dfccc3849a37717828ff6fdf6b4deaae86b5d6bbfce9b6dabbaf039d95c163cc6764447d503c1a62d602ae5b5d1f7204cc002d3fb13ca85acb9 -DIST xxhash-rust-0.8.12.crate 21329 BLAKE2B e9596bb83cd0f0465c279deecaf4dd87aac05db1c8c7d3aed4f0689022c5a0522d976379fb3dcf6cfe1c18452c87890e95f3d17998c777d92f5cbe58119a20a9 SHA512 6fd17ec65be94b58f109b6aa9bb283e51092621e8af624f8c2c2c95558a3d0461d743cb8a65a0da5853ff7fd98273daec0dcc5b632440868524f99894beeff3d DIST xxhash-rust-0.8.15.crate 21515 BLAKE2B 0d82ffaecfedc3001e4273c7cb3211e847c110334c0558099c02c2457ccc1f6381b5b1c9c13ec87236e23f4e5551e3cb09101bca75358481ed7ae8ecb83d4866 SHA512 80a73a93249cfa0043a743e883f078d9e4bbedc236dec239d9f89b6816715c614f212930fe8842f0598275d2676a0e406a1ab7101158c163f50b9d1d00265925 DIST yaml-rust2-0.9.0.crate 136382 BLAKE2B b3da4b67ac428aa6875bcedfb9ace38150b2ccb2e438ea5a175d292593ecfafa54139655e047406301ea2f449ef86fc664fb52638e88f9e85ee999d52f64c5a7 SHA512 7dfb211232c469621f842eb1a90343485ccfc46612dbb85b65892cfd3d326b6d53abd12bb10da2545e33ff8cb67289c3a1fb2943eefeef428d7c715fbc4494a2 DIST yoke-0.7.5.crate 29673 BLAKE2B cd2e42103140e080a29bf579fe5176b36a192f9b1309c1f2fd7557fe93b2f6eadbf6fca4a6a3b1a7b6288403d2f643841dfc7a5b6a4476776943950abe5c1613 SHA512 6bbd99671d1a5a5217890eaa267113d193b3636b265393afb6e72a313f01704d462fe017264f061405e8e84c188b590094c29e3fcf19a63c375ae165d1a0bbef @@ -573,6 +520,5 @@ DIST zeroize-1.8.1.crate 20029 BLAKE2B 092eba034cd35ec47290020e0c2b213177ff5dbe1 DIST zeroize_derive-1.4.2.crate 11141 BLAKE2B a40add656369a3a40d5b5f3397a77a1e9f803d4b8ae5b7d51c9f2ebb332a289b3c1ea528655806a26998e081a1cc9f4b07828664542de8d8d2619faf079d25c5 SHA512 d6966b024ce5e265c93e7056659ccbb97bbf6baa30f759fd96dc4391a6487426637f61f0a2713b6160019d778cf7d8ff1f25bb33d6c4f4585b990baae418b226 DIST zerovec-0.10.4.crate 126398 BLAKE2B b078784d6f178bbb9de1c3c1b6c7ef996f00bdd7dfd2924bda921e62f3e09e953fbf50f8d0da99ac6ff6d134f146253846f5663549dcf8df08eaf34b9d4016b3 SHA512 db12bba1d7476ddead92e6dfcdcc30e2e0defff4f263a740244eabee265a2cab265473a663d3dc3210f48e113b66d951da496dfab7965ce1bc792e5f2db422a0 DIST zerovec-derive-0.10.3.crate 19438 BLAKE2B 9f7df8a4e4a0b62ab25aed967b26509db4bcc5d5b10b3bd73305099a4c49a60be8921484ced1a34d9b7ae30ffa5abe789686f432416a8f1cfc07de1db1dff594 SHA512 caefbffeb35265db9f74933bf07109d57f0da48156cafd4f330af78a5c7eb9ab0831a80789ad4fb119875ebc6cfd7e3de68c9984b77dca5151f9be41f1ae6e09 -EBUILD sequoia-sq-1.0.0.ebuild 11498 BLAKE2B fdb6cbab254189ac5917672497bd503dc9c374762bb855d7e02b40c2c961dc9e96a20d48ff8f2d43277a109eda53232e8dfd02639dce3f9719864bc622ee8888 SHA512 c0beba78feda78256a073ead4bb0902cf6d8910c74243e561f8eaa54780ffcae80a7fe3f49efad07d88115878f07dfcf61dbf72d36fb44d273e7594d7dd09413 -EBUILD sequoia-sq-1.1.0.ebuild 11445 BLAKE2B ac94a3fa54b99349d7693844bb0a73bdb0f61aaf6c250597f305eaa50caab0a0cafc061ab7f96bb62314c1a9085d044d7f7b2c4a6fd6ad53275e6d509a53164b SHA512 3b7e7d7ff021fedcb057d99ac22d4b766f4dcbd7630f72bd78d96e82a6bcddac63e6201a87c86607bcc1625f1a3ac5125cbd014cd17baf060d8822412cd6c08e +EBUILD sequoia-sq-1.1.0.ebuild 11445 BLAKE2B 0053d3a5b48050c13355fc6118809b208e0cac0fc7db29e953ccf13fe46512a90878bbb9faa45194a7c80781e6eadd3048d3dde6f091d0c0e5098d1d8690a68a SHA512 5a5e3c86a6097c42a2983e57ac476e091fa384f21ab491a8fa3ab66ca1c3b7877bb2c527b509ac41970b388afb10ae3940420f2530817b2b8e5bd6c0b355f775 MISC metadata.xml 639 BLAKE2B 82da34ee938fd1657c51b0405ebf8d10a25a3c8d4dd3682a43db74302970f00accb6942d35a6f9c8ff014415044904906604298007434689289c297b41b77ea9 SHA512 3535f1d2b16c0386cf897dc178900df8a5d02e3ebcb044662540d90170f855ae5a688ffba2bd39423cc24d3bc4de27f17582da4e65a2a2c0b028446ff283aab2 diff --git a/app-crypt/sequoia-sq/sequoia-sq-1.0.0.ebuild b/app-crypt/sequoia-sq/sequoia-sq-1.0.0.ebuild deleted file mode 100644 index fcb9ee5830f2..000000000000 --- a/app-crypt/sequoia-sq/sequoia-sq-1.0.0.ebuild +++ /dev/null @@ -1,603 +0,0 @@ -# Copyright 2021-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -CRATES=" - addr2line@0.24.2 - adler2@2.0.0 - aead@0.5.2 - aes-gcm@0.10.3 - aes@0.8.4 - ahash@0.8.11 - aho-corasick@1.1.3 - aligned@0.4.2 - android-tzdata@0.1.1 - android_system_properties@0.1.5 - anstream@0.6.18 - anstyle-parse@0.2.6 - anstyle-query@1.1.2 - anstyle-wincon@3.0.6 - anstyle@1.0.10 - anyhow@1.0.94 - arraydeque@0.5.1 - as-slice@0.2.1 - ascii-canvas@3.0.0 - ascii-canvas@4.0.0 - assert_cmd@2.0.16 - async-generic@1.1.2 - async-trait@0.1.83 - atomic-waker@1.1.2 - autocfg@1.4.0 - backtrace@0.3.74 - base16ct@0.2.0 - base64@0.21.7 - base64@0.22.1 - base64ct@1.6.0 - bindgen@0.68.1 - bit-set@0.5.3 - bit-set@0.8.0 - bit-vec@0.6.3 - bit-vec@0.8.0 - bitflags@2.6.0 - block-buffer@0.10.4 - block-padding@0.3.3 - blowfish@0.9.1 - botan-sys@0.11.0 - botan@0.11.0 - bstr@1.11.1 - buffered-reader@1.3.2 - bumpalo@3.16.0 - byteorder@1.5.0 - bytes@1.9.0 - bzip2-sys@0.1.11+1.0.8 - bzip2@0.5.0 - camellia@0.1.0 - capnp-futures@0.19.1 - capnp-rpc@0.19.5 - capnp@0.19.8 - capnpc@0.19.0 - cast5@0.11.1 - cc@1.2.4 - cexpr@0.6.0 - cfb-mode@0.8.2 - cfg-if@1.0.0 - cfg_aliases@0.2.1 - chrono@0.4.39 - cipher@0.4.4 - clang-sys@1.8.1 - clap@4.5.23 - clap_builder@4.5.23 - clap_complete@4.5.38 - clap_derive@4.5.18 - clap_lex@0.7.4 - cmac@0.7.2 - colorchoice@1.0.3 - console@0.15.8 - const-oid@0.9.6 - core-foundation-sys@0.8.7 - core-foundation@0.9.4 - cpufeatures@0.2.16 - crc32fast@1.4.2 - crossbeam-channel@0.5.13 - crossbeam-deque@0.8.5 - crossbeam-epoch@0.9.18 - crossbeam-queue@0.3.11 - crossbeam-utils@0.8.20 - crossbeam@0.8.4 - crunchy@0.2.2 - crypto-bigint@0.5.5 - crypto-common@0.1.6 - ctor@0.2.9 - ctr@0.9.2 - culpa-macros@1.0.2 - culpa@1.0.2 - curve25519-dalek-derive@0.1.1 - curve25519-dalek@4.1.3 - cvt@0.1.2 - data-encoding@2.6.0 - dbl@0.3.2 - der@0.7.9 - deranged@0.3.11 - des@0.8.1 - deunicode@1.6.0 - difflib@0.4.0 - digest@0.10.7 - directories@5.0.1 - dirs-next@2.0.0 - dirs-sys-next@0.1.2 - dirs-sys@0.4.1 - dirs@5.0.1 - displaydoc@0.2.5 - doc-comment@0.3.3 - dsa@0.6.3 - dyn-clone@1.0.17 - eax@0.5.0 - ecb@0.1.2 - ecdsa@0.16.9 - ed25519-dalek@2.1.1 - ed25519@2.2.3 - either@1.13.0 - elliptic-curve@0.13.8 - embedded-io@0.6.1 - ena@0.14.3 - encode_unicode@0.3.6 - encoding_rs@0.8.35 - endian-type@0.1.2 - enum-as-inner@0.6.1 - env_filter@0.1.2 - env_logger@0.11.5 - equivalent@1.0.1 - errno@0.3.10 - fallible-iterator@0.3.0 - fallible-streaming-iterator@0.1.9 - fastrand@2.3.0 - fd-lock@4.0.2 - ff@0.13.0 - fiat-crypto@0.2.9 - file_diff@1.0.0 - filetime@0.2.25 - fixedbitset@0.4.2 - flate2@1.0.35 - float-cmp@0.9.0 - fnv@1.0.7 - foreign-types-shared@0.1.1 - foreign-types@0.3.2 - form_urlencoded@1.2.1 - fs2@0.4.3 - fs_at@0.2.1 - fs_extra@1.3.0 - futures-channel@0.3.31 - futures-core@0.3.31 - futures-executor@0.3.31 - futures-io@0.3.31 - futures-macro@0.3.31 - futures-sink@0.3.31 - futures-task@0.3.31 - futures-util@0.3.31 - futures@0.3.31 - generator@0.7.5 - generic-array@0.14.7 - generic-array@1.1.1 - gethostname@0.5.0 - getopts@0.2.21 - getrandom@0.2.15 - ghash@0.5.1 - gimli@0.31.1 - git-testament-derive@0.2.1 - git-testament@0.2.6 - glob@0.3.1 - globset@0.4.15 - globwalk@0.9.1 - group@0.13.0 - h2@0.4.7 - hashbrown@0.14.5 - hashbrown@0.15.2 - hashlink@0.9.1 - heck@0.5.0 - hermit-abi@0.3.9 - hickory-client@0.24.2 - hickory-proto@0.24.2 - hickory-resolver@0.24.2 - hkdf@0.12.4 - hmac@0.12.1 - home@0.5.9 - hostname@0.3.1 - html-escape@0.2.13 - http-body-util@0.1.2 - http-body@1.0.1 - http@1.2.0 - httparse@1.9.5 - humansize@2.1.3 - humantime@2.1.0 - hyper-rustls@0.27.3 - hyper-tls@0.6.0 - hyper-util@0.1.10 - hyper@1.5.1 - iana-time-zone-haiku@0.1.2 - iana-time-zone@0.1.61 - icu_collections@1.5.0 - icu_locid@1.5.0 - icu_locid_transform@1.5.0 - icu_locid_transform_data@1.5.0 - icu_normalizer@1.5.0 - icu_normalizer_data@1.5.0 - icu_properties@1.5.1 - icu_properties_data@1.5.0 - icu_provider@1.5.0 - icu_provider_macros@1.5.0 - idea@0.5.1 - idna@1.0.3 - idna_adapter@1.2.0 - ignore@0.4.23 - indexmap@2.7.0 - indicatif@0.17.9 - inout@0.1.3 - ipconfig@0.3.2 - ipnet@2.10.1 - is_terminal_polyfill@1.70.1 - itertools@0.11.0 - itertools@0.13.0 - itoa@1.0.14 - js-sys@0.3.76 - keccak@0.1.5 - lalrpop-util@0.20.2 - lalrpop-util@0.22.0 - lalrpop@0.20.2 - lalrpop@0.22.0 - lazy_static@1.5.0 - lazycell@1.3.0 - libc@0.2.168 - libloading@0.8.6 - libm@0.2.11 - libredox@0.1.3 - libsqlite3-sys@0.28.0 - line-col@0.2.1 - linked-hash-map@0.5.6 - linux-raw-sys@0.4.14 - litemap@0.7.4 - lock_api@0.4.12 - log@0.4.22 - loom@0.5.6 - lru-cache@0.1.2 - marked-yaml@0.7.2 - match_cfg@0.1.0 - matchers@0.1.0 - md-5@0.10.6 - memchr@2.7.4 - memsec@0.7.0 - mime@0.3.17 - minimal-lexical@0.2.1 - miniz_oxide@0.8.0 - mio@1.0.3 - native-tls@0.2.12 - nettle-sys@2.3.0 - nettle@7.4.0 - new_debug_unreachable@1.0.6 - nibble_vec@0.1.0 - nix@0.29.0 - nom@7.1.3 - normalize-line-endings@0.3.0 - normpath@1.3.0 - nu-ansi-term@0.46.0 - num-bigint-dig@0.8.4 - num-conv@0.1.0 - num-integer@0.1.46 - num-iter@0.1.45 - num-traits@0.2.19 - num_cpus@1.16.0 - number_prefix@0.4.0 - object@0.36.5 - once_cell@1.20.2 - opaque-debug@0.3.1 - openpgp-cert-d@0.3.3 - openssl-macros@0.1.1 - openssl-probe@0.1.5 - openssl-sys@0.9.104 - openssl@0.10.68 - option-ext@0.2.0 - overload@0.1.1 - p256@0.13.2 - p384@0.13.0 - p521@0.13.3 - parking_lot@0.12.3 - parking_lot_core@0.9.10 - paste@1.0.15 - peeking_take_while@0.1.2 - pem-rfc7468@0.7.0 - percent-encoding@2.3.1 - pest@2.7.15 - pest_derive@2.7.15 - pest_generator@2.7.15 - pest_meta@2.7.15 - petgraph@0.6.5 - phf_shared@0.10.0 - pikchr@0.1.3 - pin-project-lite@0.2.15 - pin-utils@0.1.0 - pkcs1@0.7.5 - pkcs8@0.10.2 - pkg-config@0.3.31 - polyval@0.6.2 - portable-atomic@1.10.0 - powerfmt@0.2.0 - ppv-lite86@0.2.20 - precomputed-hash@0.1.1 - predicates-core@1.0.8 - predicates-tree@1.0.11 - predicates@3.1.2 - primeorder@0.13.6 - proc-macro2@1.0.92 - pulldown-cmark-escape@0.11.0 - pulldown-cmark@0.12.2 - quick-error@1.2.3 - quote@1.0.37 - radix_trie@0.2.1 - rand@0.8.5 - rand_chacha@0.3.1 - rand_core@0.6.4 - rayon-core@1.12.1 - rayon@1.10.0 - redox_syscall@0.5.8 - redox_users@0.4.6 - regex-automata@0.1.10 - regex-automata@0.4.9 - regex-syntax@0.6.29 - regex-syntax@0.8.5 - regex@1.11.1 - remove_dir_all@0.8.4 - reqwest@0.12.9 - resolv-conf@0.7.0 - rfc6979@0.4.0 - ring@0.17.8 - ripemd@0.1.3 - roadmap@0.6.1 - roff@0.2.2 - rpassword@7.3.1 - rsa@0.9.7 - rtoolbox@0.0.2 - rusqlite@0.31.0 - rustc-demangle@0.1.24 - rustc-hash@1.1.0 - rustc_version@0.4.1 - rustix@0.38.42 - rustls-pemfile@2.2.0 - rustls-pki-types@1.10.1 - rustls-webpki@0.102.8 - rustls@0.23.20 - rustversion@1.0.18 - ryu@1.0.18 - same-file@1.0.6 - schannel@0.1.27 - scoped-tls@1.0.1 - scopeguard@1.2.0 - sec1@0.7.3 - security-framework-sys@2.12.1 - security-framework@2.11.1 - semver@1.0.24 - sequoia-autocrypt@0.25.1 - sequoia-cert-store@0.6.1 - sequoia-directories@0.1.0 - sequoia-gpg-agent@0.5.0 - sequoia-ipc@0.35.1 - sequoia-keystore-backend@0.6.0 - sequoia-keystore-gpg-agent@0.4.1 - sequoia-keystore-softkeys@0.6.0 - sequoia-keystore@0.6.2 - sequoia-net@0.29.0 - sequoia-openpgp@1.22.0 - sequoia-policy-config@0.7.0 - sequoia-wot@0.13.2 - serde@1.0.216 - serde_derive@1.0.216 - serde_json@1.0.133 - serde_path_to_error@0.1.16 - serde_urlencoded@0.7.1 - sha1collisiondetection@0.3.4 - sha2@0.10.8 - sha3@0.10.8 - sharded-slab@0.1.7 - shell-words@1.1.0 - shlex@1.3.0 - signature@2.2.0 - siphasher@0.3.11 - slab@0.4.9 - slug@0.1.6 - smallvec@1.13.2 - smawk@0.3.2 - socket2@0.5.8 - spin@0.9.8 - spki@0.7.3 - stable_deref_trait@1.2.0 - state@0.5.3 - stfu8@0.2.7 - string_cache@0.8.7 - strsim@0.11.1 - subplot-build@0.11.0 - subplot@0.11.0 - subplotlib-derive@0.11.0 - subplotlib@0.11.0 - subtle@2.6.1 - syn@2.0.90 - sync_wrapper@1.0.2 - synstructure@0.13.1 - system-configuration-sys@0.6.0 - system-configuration@0.6.1 - tempfile-fast@0.3.4 - tempfile@3.14.0 - tera@1.20.0 - term@0.7.0 - term@1.0.0 - termcolor@1.4.1 - terminal_size@0.4.1 - termtree@0.4.1 - textwrap@0.16.1 - thiserror-impl@1.0.69 - thiserror-impl@2.0.6 - thiserror@1.0.69 - thiserror@2.0.6 - thread_local@1.1.8 - time-core@0.1.2 - time-macros@0.2.19 - time@0.3.37 - tiny-keccak@2.0.2 - tinystr@0.7.6 - tinyvec@1.8.0 - tinyvec_macros@0.1.1 - tokio-macros@2.4.0 - tokio-native-tls@0.3.1 - tokio-rustls@0.26.1 - tokio-util@0.7.13 - tokio@1.42.0 - toml@0.5.11 - toml_datetime@0.6.8 - toml_edit@0.22.22 - tower-service@0.3.3 - tracing-attributes@0.1.28 - tracing-core@0.1.33 - tracing-log@0.2.0 - tracing-subscriber@0.3.19 - tracing@0.1.41 - try-lock@0.2.5 - twofish@0.7.1 - typenum@1.17.0 - ucd-trie@0.1.7 - unescape@0.1.0 - unic-char-property@0.9.0 - unic-char-range@0.9.0 - unic-common@0.9.0 - unic-segment@0.9.0 - unic-ucd-segment@0.9.0 - unic-ucd-version@0.9.0 - unicase@2.8.0 - unicode-ident@1.0.14 - unicode-linebreak@0.1.5 - unicode-width@0.1.14 - unicode-width@0.2.0 - unicode-xid@0.2.6 - universal-hash@0.5.1 - untrusted@0.9.0 - url@2.5.4 - utf16_iter@1.0.5 - utf8-width@0.1.7 - utf8_iter@1.0.4 - utf8parse@0.2.2 - valuable@0.1.0 - vcpkg@0.2.15 - version_check@0.9.5 - wait-timeout@0.2.0 - walkdir@2.5.0 - want@0.3.1 - wasi@0.11.0+wasi-snapshot-preview1 - wasm-bindgen-backend@0.2.99 - wasm-bindgen-futures@0.4.49 - wasm-bindgen-macro-support@0.2.99 - wasm-bindgen-macro@0.2.99 - wasm-bindgen-shared@0.2.99 - wasm-bindgen@0.2.99 - wasm-streams@0.4.2 - web-sys@0.3.76 - web-time@1.1.0 - widestring@1.1.0 - win-crypto-ng@0.5.1 - winapi-i686-pc-windows-gnu@0.4.0 - winapi-util@0.1.9 - winapi-x86_64-pc-windows-gnu@0.4.0 - winapi@0.3.9 - windows-core@0.52.0 - windows-registry@0.2.0 - windows-result@0.2.0 - windows-strings@0.1.0 - windows-sys@0.48.0 - windows-sys@0.52.0 - windows-sys@0.59.0 - windows-targets@0.48.5 - windows-targets@0.52.6 - windows@0.48.0 - windows_aarch64_gnullvm@0.48.5 - windows_aarch64_gnullvm@0.52.6 - windows_aarch64_msvc@0.48.5 - windows_aarch64_msvc@0.52.6 - windows_i686_gnu@0.48.5 - windows_i686_gnu@0.52.6 - windows_i686_gnullvm@0.52.6 - windows_i686_msvc@0.48.5 - windows_i686_msvc@0.52.6 - windows_x86_64_gnu@0.48.5 - windows_x86_64_gnu@0.52.6 - windows_x86_64_gnullvm@0.48.5 - windows_x86_64_gnullvm@0.52.6 - windows_x86_64_msvc@0.48.5 - windows_x86_64_msvc@0.52.6 - winnow@0.6.20 - winreg@0.50.0 - write16@1.0.0 - writeable@0.5.5 - x25519-dalek@2.0.1 - xxhash-rust@0.8.12 - yaml-rust2@0.9.0 - yoke-derive@0.7.5 - yoke@0.7.5 - z-base-32@0.1.4 - zerocopy-derive@0.7.35 - zerocopy@0.7.35 - zerofrom-derive@0.1.5 - zerofrom@0.1.5 - zeroize@1.8.1 - zeroize_derive@1.4.2 - zerovec-derive@0.10.3 - zerovec@0.10.4 -" - -LLVM_COMPAT=( {16..18} ) - -inherit cargo llvm-r1 shell-completion - -DESCRIPTION="CLI of the Sequoia OpenPGP implementation" -HOMEPAGE="https://sequoia-pgp.org/ https://gitlab.com/sequoia-pgp/sequoia-sq" -SRC_URI=" - https://gitlab.com/sequoia-pgp/sequoia-sq/-/archive/v${PV}/${PN}-v${PV}.tar.bz2 - ${CARGO_CRATE_URIS} -" -S="${WORKDIR}"/${PN}-v${PV} - -LICENSE="LGPL-2.1+" -# Dependent crate licenses -LICENSE+=" - Apache-2.0 BSD Boost-1.0 CC0-1.0 ISC LGPL-2+ MIT MIT-0 MPL-2.0 - Unicode-3.0 - || ( GPL-2 GPL-3 LGPL-3 ) -" -SLOT="0" -KEYWORDS="amd64 ~arm64 ~ppc64" - -QA_FLAGS_IGNORED="usr/bin/sq" - -COMMON_DEPEND=" - dev-db/sqlite:3 - dev-libs/gmp:= - dev-libs/nettle:= - dev-libs/openssl:= -" -DEPEND=" - ${COMMON_DEPEND} - dev-libs/capnproto -" -RDEPEND=" - ${COMMON_DEPEND} -" -# Clang needed for bindgen -BDEPEND=" - $(llvm_gen_dep ' - llvm-core/clang:${LLVM_SLOT} - ') - virtual/pkgconfig -" - -pkg_setup() { - llvm-r1_pkg_setup - rust_pkg_setup -} - -src_compile() { - # Set this here so that it doesn't change if we run tests - # and cause a recompilation. - asset_dir="${T}"/assets - export ASSET_OUT_DIR="${asset_dir}" - - # Setting CARGO_TARGET_DIR is required to have the build system - # create the bash and zsh completion files. - export CARGO_TARGET_DIR="${S}/target" - cargo_src_compile -} - -src_install() { - cargo_src_install - - doman "${asset_dir}"/man-pages/* - - local completion_dir="${asset_dir}"/shell-completions - newbashcomp "${completion_dir}"/sq.bash sq - dozshcomp "${completion_dir}"/_sq - dofishcomp "${completion_dir}"/sq.fish -} diff --git a/app-crypt/sequoia-sq/sequoia-sq-1.1.0.ebuild b/app-crypt/sequoia-sq/sequoia-sq-1.1.0.ebuild index 0799d8486bf7..3986f2e198f6 100644 --- a/app-crypt/sequoia-sq/sequoia-sq-1.1.0.ebuild +++ b/app-crypt/sequoia-sq/sequoia-sq-1.1.0.ebuild @@ -527,7 +527,7 @@ CRATES=" zerovec@0.10.4 " -LLVM_COMPAT=( {16..18} ) +LLVM_COMPAT=( {16..19} ) inherit cargo llvm-r1 shell-completion diff --git a/app-crypt/sequoia-sqv/Manifest b/app-crypt/sequoia-sqv/Manifest index e3285f93eb6f..1068d5d93914 100644 --- a/app-crypt/sequoia-sqv/Manifest +++ b/app-crypt/sequoia-sqv/Manifest @@ -243,5 +243,5 @@ DIST x25519-dalek-2.0.1.crate 87820 BLAKE2B 039749d0278d95996016260f9e32162b3705 DIST xxhash-rust-0.8.10.crate 20066 BLAKE2B 5fca80ff05e00d5f78c2655093a963b08a16d2bd40e74e53c9e48e9812f81d668f9d60cd23872cb76ecb643cd381eddb841da5ba93a5f9fc92e42e6d8bb7e871 SHA512 c5a66c4c7a30dffe9d925dbfa8d0b5ae5b825770cb5d52a0d5de2eadf24c9af1b08b11b2e7a94ce60a30dabb2ce61cd3066cc781d05c90bc6a9d46daa2e04b71 DIST zeroize-1.7.0.crate 19039 BLAKE2B 2f94a5025f409bd2b96a456d2f78a34c6b05b5554abe7ef3fad2a55a8fcff8a6a1b971be660aa4c2954ab7d6e89bebc431036e349edef74711292f9f64b1dbae SHA512 9d31e3e76e8c861309a3579c21f6da5fd6b056c7d7a350427445a1a832e8827204804783f7f9b808acaa2148efef883d9078bf84943b1db55526bba5bf5a2756 DIST zeroize_derive-1.4.2.crate 11141 BLAKE2B a40add656369a3a40d5b5f3397a77a1e9f803d4b8ae5b7d51c9f2ebb332a289b3c1ea528655806a26998e081a1cc9f4b07828664542de8d8d2619faf079d25c5 SHA512 d6966b024ce5e265c93e7056659ccbb97bbf6baa30f759fd96dc4391a6487426637f61f0a2713b6160019d778cf7d8ff1f25bb33d6c4f4585b990baae418b226 -EBUILD sequoia-sqv-1.2.1-r1.ebuild 6199 BLAKE2B 8d39072048d1809953d75a6c0a564d7d7e4b896e5d54a0d83b9627aea32be5a59b2934bae6a4b778a76a3a85a988b9ae36192991dc71ef1b0eda7ba833e8659b SHA512 37f897a1bb9deb30fe09511e5678f940907c7879d945ee80f0f97736729e60d7e0179198af62f557403c770c86b2a11211de821d8379123ad4345959fa217a5a +EBUILD sequoia-sqv-1.2.1-r1.ebuild 6199 BLAKE2B 526d91d0a0e5c314b6e736485ff252eb6cdddd7160c8d284a24fcf1c65f79cede0aec8d0b0eebd828656af1cf365ac9a145f1347ee3c92c7259435f2c7c6d904 SHA512 f13a3529fb7b81e94e3374ae4b1d864dddc17053569ec47d32a5bcc4eb9450dcbcd5a1d6e0005efc6ebe88491c4ac1629267ff2ec1b5b497ee525fedd82b16d3 MISC metadata.xml 435 BLAKE2B 0d2b4ad9f546657d9736088eb9deea2622976a78128476013fad90173d2c0e837df89a527e597fc70108e38289dd74b55417a1edb01430a5393d24c7c5142a1d SHA512 c230769f501b0abe786f94d36cb6583bf8c85ef957fab89db4258fe773473b8940748029fa158ffe17e1db02f2c6ee8a2481ffebfb5b0d3e4e86a1a2ebcad99d diff --git a/app-crypt/sequoia-sqv/sequoia-sqv-1.2.1-r1.ebuild b/app-crypt/sequoia-sqv/sequoia-sqv-1.2.1-r1.ebuild index 4747509779ff..0de98901f7cb 100644 --- a/app-crypt/sequoia-sqv/sequoia-sqv-1.2.1-r1.ebuild +++ b/app-crypt/sequoia-sqv/sequoia-sqv-1.2.1-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 2021-2024 Gentoo Authors +# Copyright 2021-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -250,7 +250,7 @@ CRATES=" zeroize_derive@1.4.2 " -LLVM_COMPAT=( {17..18} ) +LLVM_COMPAT=( {17..19} ) RUST_NEEDS_LLVM=1 inherit bash-completion-r1 cargo llvm-r1 diff --git a/app-editors/Manifest.gz b/app-editors/Manifest.gz index bbb4c1d68d0f1ec3c252b532b7f26fa2e4c1a4f8..83272d8b18dd70fb5f0c6c1aad3f99dee01487fb 100644 GIT binary patch delta 13901 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 bA6Icr-Cx;I@?DoV=70GAm8JRkpkx35zAnHi delta 13835 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


Y@h*hmcVkX>6s3AzA<8cA42phFC|G^sXv;88$= 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 /dev/null || die + chromium_remove_language_paks + popd > /dev/null || die +} + +src_install() { + exeinto /opt/logseq-desktop + doexe Logseq chrome-sandbox libEGL.so libffmpeg.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 + + insinto /opt/logseq-desktop + doins chrome_100_percent.pak chrome_200_percent.pak icudtl.dat resources.pak snapshot_blob.bin \ + v8_context_snapshot.bin version vk_swiftshader_icd.json + insopts -m0755 + doins -r locales resources + + # Chrome-sandbox requires the setuid bit to be specifically set + # see https://github.com/electron/electron/issues/17972 + fowners root /opt/logseq-desktop/chrome-sandbox + fperms 4711 /opt/logseq-desktop/chrome-sandbox + + # Crashpad is included in the package once in a while and when it does, it must be installed. + # See #903616 and #890595 + [[ -x chrome_crashpad_handler ]] && doins chrome_crashpad_handler + + dosym ../logseq-desktop/Logseq /opt/bin/logseq + + local exec_extra_flags=() + if use wayland; then + exec_extra_flags+=( "--ozone-platform-hint=auto" "--enable-wayland-ime" ) + fi + make_desktop_entry "/opt/bin/logseq ${exec_extra_flags[*]} %U" Logseq logseq Office \ + "StartupWMClass=logseq\nTerminal=false\nMimeType=x-scheme-handler/logseq" + # some releases do not have an icon included, but we dont fail if that happens + doicon resources/app/icons/logseq.png || true +} diff --git a/app-editors/logseq-desktop-bin/logseq-desktop-bin-0.10.9.ebuild b/app-editors/logseq-desktop-bin/logseq-desktop-bin-0.10.9.ebuild deleted file mode 100644 index bc4f1ec885d5..000000000000 --- a/app-editors/logseq-desktop-bin/logseq-desktop-bin-0.10.9.ebuild +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -CHROMIUM_LANGS=" - af am ar bg bn ca cs da de el en-GB en-US es-419 es et fa fil fi fr gu he hi - hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw - ta te th tr uk ur vi zh-CN zh-TW -" - -inherit chromium-2 desktop unpacker xdg - -DESCRIPTION="A privacy-first, open-source platform for knowledge sharing and management." -HOMEPAGE="https://github.com/logseq/logseq" -SRC_URI="https://github.com/logseq/logseq/releases/download/${PV}/logseq-linux-x64-${PV}.zip -> ${P}.zip" -S="${WORKDIR}/Logseq-linux-x64" - -LICENSE="AGPL-3" -SLOT="0" -KEYWORDS="-* ~amd64" - -RESTRICT="mirror splitdebug" - -RDEPEND=" - dev-libs/nss - dev-libs/openssl:0/3 - media-libs/alsa-lib - media-libs/mesa - net-misc/curl - net-print/cups - sys-apps/dbus - sys-libs/glibc - sys-libs/zlib - x11-libs/cairo - x11-libs/gtk+:3 - x11-libs/libX11 - x11-libs/libXcomposite - x11-libs/libXdamage - x11-libs/libXext - x11-libs/libXfixes - x11-libs/libXrandr - x11-libs/libdrm - x11-libs/libxcb - x11-libs/libxkbcommon - x11-libs/pango -" -BDEPEND=" - app-arch/unzip -" - -QA_PREBUILT="*" - -src_configure() { - default - chromium_suid_sandbox_check_kernel_config -} - -src_prepare() { - default - pushd locales > /dev/null || die - chromium_remove_language_paks - popd > /dev/null || die -} - -src_install() { - exeinto /opt/logseq-desktop - doexe Logseq chrome-sandbox libEGL.so libffmpeg.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 - - insinto /opt/logseq-desktop - doins chrome_100_percent.pak chrome_200_percent.pak icudtl.dat resources.pak snapshot_blob.bin \ - v8_context_snapshot.bin version vk_swiftshader_icd.json - insopts -m0755 - doins -r locales resources - - # Chrome-sandbox requires the setuid bit to be specifically set - # see https://github.com/electron/electron/issues/17972 - fowners root /opt/logseq-desktop/chrome-sandbox - fperms 4711 /opt/logseq-desktop/chrome-sandbox - - # Crashpad is included in the package once in a while and when it does, it must be installed. - # See #903616 and #890595 - [[ -x chrome_crashpad_handler ]] && doins chrome_crashpad_handler - - dosym ../logseq-desktop/Logseq /opt/bin/logseq - - make_desktop_entry "/opt/bin/logseq %U" Logseq logseq Office \ - "StartupWMClass=logseq\nTerminal=false\nMimeType=x-scheme-handler/logseq" - # some releases do not have an icon included, but we dont fail if that happens - doicon resources/app/icons/logseq.png || true -} diff --git a/app-editors/logseq-desktop-bin/metadata.xml b/app-editors/logseq-desktop-bin/metadata.xml index 0a67e594f20b..882e3af69d3a 100644 --- a/app-editors/logseq-desktop-bin/metadata.xml +++ b/app-editors/logseq-desktop-bin/metadata.xml @@ -5,6 +5,9 @@ mschiff@gentoo.org Marc Schiffbauer + + Run in wayland mode under wayland sessions, xwayland otherwise. This flag doesn't affect x11 sessions. + logseq/logseq diff --git a/app-editors/neovim/Manifest b/app-editors/neovim/Manifest index 87fc703d1e8d..fbc0309e295c 100644 --- a/app-editors/neovim/Manifest +++ b/app-editors/neovim/Manifest @@ -5,9 +5,11 @@ AUX sysinit.vim 3131 BLAKE2B 0c64d5750f2db149308021549b327d0835b20bd4cf07f9eafd4 DIST neovim-0.10.1.tar.gz 12796966 BLAKE2B 85d98abe03f69ab03d09dc1b39783974af392f707deddef4640b6953ad574f9a455897217c2431c6c2fadb56568b55ac18ed06bbfcc7bbe1c6ab013991e99ee6 SHA512 37e9d45041b059a26fe02717eae7cdbde58f0a35560c590764f5888de67cfa04bee76d6b359ab14b020ac5a661d64908960283347381d334106308504c0df908 DIST neovim-0.10.2.tar.gz 12801272 BLAKE2B 0cba241ec6466639044decf26728b6c17c3be7970c85b6938fceb05c329d2832c8c46d0113d83aedee458991e4cb27dfad67b3d7b84080a23035ca85ccd57e36 SHA512 6478c53bddff0bf042388464fa1c5114e8fe75c7c41b22e5426783bd2f8406bd3297ffd4bc895ea13e573f0cd28a64755c1f5c063531bb8de477c4e439384418 DIST neovim-0.10.3.tar.gz 12804352 BLAKE2B 4196154a1f2415f72ed4cdebbde67804212d9be0f364fdb4c053ba0fb608eddad457fd360d7ce764615651288f5890b3283b180fc2ed726208a19fbc6c9fb9c4 SHA512 f1286c42bf0a119fea4575ae64043e43f36cd569d339ced15700c45441e8d8952ea7eac2250063a5aff4552632f0ca7696b442d4d8ffa4f5fce25ddbee0e861b +DIST neovim-0.10.4.tar.gz 12808381 BLAKE2B 5dae3cef173431ca39320e4640661457e25e9508feee23bb076d82ab3a5934df1961cb63f7329bba7dc0d41bb4e6e889a4cf58754812d1af074a21fc36cdc1c5 SHA512 8dadc24edaaa27e6ecd4db6c19d0183868a8d2809ba122110685f340341d951772ac2eb0c5f7a7ab5f87d3d5d8ae5e81f156c61f04f6d4ebbaa17cd35fb70b64 EBUILD neovim-0.10.1-r1.ebuild 3554 BLAKE2B e09720f5c77fd83007375227b31d38228bc4dfa5b17235ac906ffdea99e1a06b794949f7cd6250d3c87b6bb9952c311c84cfdf2b8b4b8a93f28e91b7cdeb5ef6 SHA512 a9b43b4c12622c2638bc0bf72144fcf734fb46f197c241ceb9a59c9ee53ac6e979184b88d23031e31172544404e2c1da6fc1d5b7114f1ea714018c7defd232d2 EBUILD neovim-0.10.2-r1.ebuild 3475 BLAKE2B 4272d7a26931c9c0067054d3055102d3a1148381f5dd11e1865c47b7c2c815d7626b79ab51c355290fc0e4d5880310435161390d3d73e843070bedcb09da201b SHA512 51f83cedbda106411dd337ee31bd545887c3ff07211d2c5b621018c9aa6305cc658aebe2397fa3013349de4809ac911888ecd720e5da67de052d9cf8ed2081a9 EBUILD neovim-0.10.2.ebuild 3554 BLAKE2B e09720f5c77fd83007375227b31d38228bc4dfa5b17235ac906ffdea99e1a06b794949f7cd6250d3c87b6bb9952c311c84cfdf2b8b4b8a93f28e91b7cdeb5ef6 SHA512 a9b43b4c12622c2638bc0bf72144fcf734fb46f197c241ceb9a59c9ee53ac6e979184b88d23031e31172544404e2c1da6fc1d5b7114f1ea714018c7defd232d2 EBUILD neovim-0.10.3.ebuild 3555 BLAKE2B 03ad18fda4756e29d3a8994f48047e8420fe817b8998b8dcff204efe7bf96b7c87ae3246508c2aa5d4e7c015aa228a747eb9e020136e0bffe9c3fcb61d949652 SHA512 e9cc2e2f6bce8afab5871e1f451a62b4413f7ad7658778b0b8e77865b5a75118fdce3e675d08a7380f46a9ef5f10acba3b0d5132017728a4b95ef2adb15991ab +EBUILD neovim-0.10.4.ebuild 3475 BLAKE2B ed2dcf8c72c1ff3ba5973dd6100bfe9b119be5c4d94c5255c325f6681bc5a5a0c3962d1a563d014093949c5a4063400877962b2b6f3b47a51a3d29c9cd2d5ca1 SHA512 e9afb95bcda93c6b75f1b2c6ab7266d332316ba0e319c7ff7cf2e1d7509fb05a8d5a853d4a67c17b8a0036809d64f9a83e21835309f73e0c9d6d6646bc7c5ba0 EBUILD neovim-9999.ebuild 3475 BLAKE2B 7264295dc68f17a4651ea57dc586e8aeab089608a45b6baae9cca9dd70a1a222a9a03a90ce87c06646785d5f6795ceddb4359f924c934ab2fad692ce877a3538 SHA512 785b9e27e26f905be4b30b44f8dcb84ab0ad4d84dba53e1da77495261becab4b45ebd927a3e7eed5db4f110660680e7789db9082063a1de56553c673f5592708 MISC metadata.xml 678 BLAKE2B 45ead4b7163d0750477ac40d5aeaa3baee2cc9f2b90d6fee9d9c18c3433a6eecdcdb16665218538ddb644d2701eff02d397e44c0b84d21b1571ce7ee99354333 SHA512 faef3288490a32cf7fed881d6f35430fcc4f74a38881aee4162b2729472152f56cd2818e093d4cf832d3b74781598050300e4bcc85b0e996fb9b2d8d2da43bac diff --git a/app-editors/neovim/neovim-0.10.4.ebuild b/app-editors/neovim/neovim-0.10.4.ebuild new file mode 100644 index 000000000000..9a7069ff488d --- /dev/null +++ b/app-editors/neovim/neovim-0.10.4.ebuild @@ -0,0 +1,127 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# RelWithDebInfo sets -Og -g +CMAKE_BUILD_TYPE=Release +LUA_COMPAT=( lua5-{1..2} luajit ) +inherit cmake lua-single optfeature xdg + +DESCRIPTION="Vim-fork focused on extensibility and agility" +HOMEPAGE="https://neovim.io" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/neovim/neovim.git" +else + SRC_URI="https://github.com/neovim/neovim/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86 ~x64-macos" +fi + +LICENSE="Apache-2.0 vim" +SLOT="0" +IUSE="+nvimpager test" + +# Upstream say the test library needs LuaJIT +# https://github.com/neovim/neovim/blob/91109ffda23d0ce61cec245b1f4ffb99e7591b62/CMakeLists.txt#L377 +REQUIRED_USE="${LUA_REQUIRED_USE} test? ( lua_single_target_luajit )" +# TODO: Get tests running +RESTRICT="!test? ( test ) test" + +# Upstream build scripts invoke the Lua interpreter +BDEPEND="${LUA_DEPS} + >=dev-util/gperf-3.1 + >=sys-devel/gettext-0.20.1 + virtual/libiconv + virtual/libintl + virtual/pkgconfig +" +# Check https://github.com/neovim/neovim/blob/master/third-party/CMakeLists.txt for +# new dependency bounds and so on on bumps (obviously adjust for right branch/tag). +# List of required tree-sitter parsers is taken from cmake.deps/deps.txt +DEPEND="${LUA_DEPS} + >=dev-lua/luv-1.45.0[${LUA_SINGLE_USEDEP}] + $(lua_gen_cond_dep ' + dev-lua/lpeg[${LUA_USEDEP}] + dev-lua/mpack[${LUA_USEDEP}] + ') + $(lua_gen_cond_dep ' + dev-lua/LuaBitOp[${LUA_USEDEP}] + ' lua5-{1,2}) + >=dev-libs/libutf8proc-2.9.0:= + >=dev-libs/libuv-1.46.0:= + >=dev-libs/libvterm-0.3.3 + >=dev-libs/msgpack-3.0.0:= + >=dev-libs/tree-sitter-0.22.6:= + =dev-libs/tree-sitter-c-0.21* + =dev-libs/tree-sitter-lua-0.1* + =dev-libs/tree-sitter-markdown-0.2* + =dev-libs/tree-sitter-query-0.4* + =dev-libs/tree-sitter-vim-0.4* + =dev-libs/tree-sitter-vimdoc-3* + >=dev-libs/unibilium-2.0.0:0= +" +RDEPEND=" + ${DEPEND} + app-eselect/eselect-vi +" +BDEPEND+=" + test? ( + $(lua_gen_cond_dep 'dev-lua/busted[${LUA_USEDEP}]') + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-0.9.0-cmake_lua_version.patch" + "${FILESDIR}/${PN}-9999-cmake-darwin.patch" +) + +src_prepare() { + # Use our system vim dir + sed -e "/^# define SYS_VIMRC_FILE/s|\$VIM|${EPREFIX}/etc/vim|" \ + -i src/nvim/globals.h || die + + # https://forums.gentoo.org/viewtopic-p-8750050.html + xdg_environment_reset + cmake_src_prepare +} + +src_configure() { + # TODO: Investigate USE_BUNDLED, doesn't seem to be needed right now + local mycmakeargs=( + # appends -flto + -DENABLE_LTO=OFF + -DPREFER_LUA=$(usex lua_single_target_luajit no "$(lua_get_version)") + -DLUA_PRG="${LUA}" + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + # install a default configuration file + insinto /etc/vim + doins "${FILESDIR}"/sysinit.vim + + # symlink tree-sitter parsers + dodir /usr/share/nvim/runtime + for parser in c lua markdown query vim vimdoc; do + dosym ../../../../$(get_libdir)/libtree-sitter-${parser}.so /usr/share/nvim/runtime/parser/${parser}.so + done + + # conditionally install a symlink for nvimpager + if use nvimpager; then + dosym ../share/nvim/runtime/macros/less.sh /usr/bin/nvimpager + fi +} + +pkg_postinst() { + xdg_pkg_postinst + + optfeature "clipboard support" x11-misc/xsel x11-misc/xclip gui-apps/wl-clipboard + optfeature "Python plugin support" dev-python/pynvim + optfeature "Ruby plugin support" dev-ruby/neovim-ruby-client + optfeature "remote/nvr support" dev-python/neovim-remote +} diff --git a/app-editors/vscode/Manifest b/app-editors/vscode/Manifest index b131efdf8678..50e1d5228c83 100644 --- a/app-editors/vscode/Manifest +++ b/app-editors/vscode/Manifest @@ -1,12 +1,12 @@ AUX code-open-in-new-window.desktop 350 BLAKE2B 4463126ed3ad417e777bac8532ef55414711422d2ba567e178e264992f9fd24befd38d2f09491f2d5550f8e877b59d724cbbcbbe76427ad6e568251e07450fb5 SHA512 d2f8009e3f58e9b1c94c3a7fa89835bc0a89d86837e7b27e4b8c09f3e06fa24cd09d92a5891553af8822dafec0afed31cb7053e720b102bcc2c2d6092b116027 AUX code-url-handler.desktop 333 BLAKE2B f396595f67fa7aec966afb1f1910adf82d8be03e935e01a6c653e1708c9a06ff55425d1ff44726a073b8f20a64219b611cd0ce689e9e6249b9e9f13f82909680 SHA512 6c3fa263d1080bd09a304e877459eeb91fe2d2197f8a0b40bacb96c26c3037bdc3df24f6713c9f6e5bd1200801512707e8dff0dc71ac8b6bc5a9f5ece06de9b0 AUX code.desktop 755 BLAKE2B cfdf0c610aed6269e9d1dc05a26bc80a1f8d3d513e1944d09322b4ead72902b4ccc12738bbc4934155155b93880e68272307325c6290a50f39d44d9a06bf0220 SHA512 50ad4872fa5c054b28cdf07a8d6915fa05fdf240a2919a54e9488c00f735e9ac69ca3f2276ddaf89b231c98cd9fc032512ded4c5d551f5118f3b7ed42b49d159 -DIST vscode-1.96.4-amd64.tar.gz 149442416 BLAKE2B 50003ff1b0bc04f53040d6b3119826bb92a9318dfa54d42ce326f2b9e6d00f8c0e57f3a0119d994ae7a5b773964c488115f70b0ce6d95840d206fc5397bc6e24 SHA512 67b25bb6f130aaaa74bfc98d9636ead3db03ad09827e71848a578b87ad90de940b6379d0d71acc6c8305ddabb47f3826ee12ee9eb17e51fd7b8b5112e70ac461 -DIST vscode-1.96.4-arm.tar.gz 133502392 BLAKE2B 5c01b9c40332cc39f66de17b37623d26b92a9fae797526caef472274e8c5d6c5f84dc52e110cea4a0288ae229634748fa1d0b1992ac5c57fb8a27b9a00cbf205 SHA512 1233dcdcabe640be59ddd9f3d6da1d34ccff165406dc2139b387708f5b95c941b1bb9e7506e3ae50af164ee9192d6f33cb99248f52eac5082bf352c508a31673 -DIST vscode-1.96.4-arm64.tar.gz 145445086 BLAKE2B 4caddcccb57e9e8623cbcf03f4fb9dfb6c9cf2a4456f655346cf0ddc264a9e96a99a768695080f382972c4e876651c334405f23dadcccbe412e866ccd6b15631 SHA512 fb987dfd85c529be46c7a76d4a44c4a3aa0a4e6a0a9df2cfa5e4984d4849cbfbf772dff6b410957fab92f560a56bea499309d14b682d293ac8e9dfb56c601e71 -DIST vscode-1.97.0-amd64.tar.gz 150727110 BLAKE2B 6203cafb733a251618830d46901bc5be50c137e575ec0955141d1bfaad778d9e2fe01d45866e0d3bcfeb7759f869544fa64ef09eecc2980a2e10a10df9f14e2e SHA512 518dbc3d17455c0096f8b21b47549c429745c818cfc938711cb6af1f325ea126ab7c9b80e3cb1e43f596854c4ddbecf2279e7cbe6b8e0bf692569800956ebf73 -DIST vscode-1.97.0-arm.tar.gz 134802622 BLAKE2B 82668537dfac9347f2ea0ee63838c7973a6636c968cec3a00ab59f67e6177c272fd5790c8e0e888fefee3ba52cde14705c4debf8ce248809a51044fabd378603 SHA512 9b7b7b10b711355cc3f3034161190984aa2d164438d15d584f00d13559d8ddb3cac0d3dde208c694553997c17cc26510c89c96366d9d156a9f4918b594b633ca -DIST vscode-1.97.0-arm64.tar.gz 146745694 BLAKE2B b5a63442a9894949cdd92aee42fc7a8532b7d798d47d0d1aa37fd60a78b9e51aef8bab216c75ad9be0aa25f5efc0635de8abc40fc09b33557de3d82ae2e7fd65 SHA512 43b432617d6fe5c586c1af68e6bf49587c6196868e9bb1d6b0782a95f489ef23745ce7b3e6516f9464ecfd602f5fc77b102bce511f123eb6bb3bdca9987a305f -EBUILD vscode-1.96.4.ebuild 3209 BLAKE2B 85c101cc8d9ac0a112bf05d3d3afa7da8199f591d5cf6a57e282d41f41de8847edf2b25332f2449ec02d26d73c041d06979c7c17f9bc89eef371ed442852e372 SHA512 54061161d63591821a564cee0eb3608cbdd4f02472c77bc61ed89b30390b429ba5528e2790598c8c9b415feeda5e3132a4d736be12df7e92e5fe55aa17524a76 -EBUILD vscode-1.97.0.ebuild 3209 BLAKE2B 85c101cc8d9ac0a112bf05d3d3afa7da8199f591d5cf6a57e282d41f41de8847edf2b25332f2449ec02d26d73c041d06979c7c17f9bc89eef371ed442852e372 SHA512 54061161d63591821a564cee0eb3608cbdd4f02472c77bc61ed89b30390b429ba5528e2790598c8c9b415feeda5e3132a4d736be12df7e92e5fe55aa17524a76 +DIST vscode-1.97.1-amd64.tar.gz 150733407 BLAKE2B d2100a17d2ce027bdb734049a5ac3a63405a01cb3835419c2f7c942b102020dd0879263171586a95b0f7470e1d55ef779487a19a43b40e73d70234b857131603 SHA512 959e5d9e649befa2b72d15cf1e8fe839eea99eb237727e00c0fdc78c04437d404770e27d31ca28dca31242f6a306dd6862424e1abb3be289c1d1a3c692bf9035 +DIST vscode-1.97.1-arm.tar.gz 134817766 BLAKE2B 7513e1781682c80bbd1ffd4a27a261ee9bd5cd351dd50a5adfb6e5a075820ebc8ad8269f75ad532878778230c3ec58cc0bb5483c34156dd9fe1115ecbb55d003 SHA512 7ad5f8c3ebdec00c3335ac000e97a825abbe2fe7f5ac4f6fa4f74330a0f3a4d9a1203f43d527cb545dc2cf7ef9ef742fcb3116a91e508e5af63653d3c9a0cd13 +DIST vscode-1.97.1-arm64.tar.gz 146757140 BLAKE2B b295f1332bb934c867bdb5f8e15b8e702f17ae786d7c945e386c03d4ca6ec8d681f4b44bc8f7fedd1428e575f84f54ccd02d5be1e678d008cc70a532705e3cad SHA512 db35c677b057d380893000c83fa42304e8758c00cd0348acda5e37eafb301d1848851ee9c734fea09e5650cbd396512806e4daa4be7ca9b1c0ee4598f77ed365 +DIST vscode-1.97.2-amd64.tar.gz 150732857 BLAKE2B ef29fa8a3b3cfce79a10b9d5f7b76c63695107ac92be64da434a8702a9cb89dcf46359ba5beaa4f6cdafa785a1dce660143c39ca21118933dd81542752bb7733 SHA512 96d78ddf029e8058fddffb01052448346ecc3a67ecea1ae51bbf228f0145e0445260a0120ffd12d644fc569b2f1122f9b89b05db2fea04f0a4602d7928322d75 +DIST vscode-1.97.2-arm.tar.gz 134818178 BLAKE2B 6115bcdaa4603cd00444c923cff51a1477ef8fd8490b7310a4df17383db5f6340a81af1b1f06bc37bc8e49de3e4e87fc8ba5469ef2cb058fe232c20f462f6233 SHA512 bb8d1ccecfdca982024f6d995edf4a7b4d5fa0e2f0e35fe393205ca6204104ab591183333ce0e361afbdd6e123d5a71eafc87d8dcb2b871e39d0ae64f57b8583 +DIST vscode-1.97.2-arm64.tar.gz 146748925 BLAKE2B 045a6d5cb9e652452f934fd57acf17c853b45052372730cb4383a1b34b337e7629bb1973ebc661e69e1a6a9a6bbf79cefca48aaff183d38b4642f25ddf1f320f SHA512 51e58b0e789f76510d7f3ebf7a2f72d98099fcb3e8bd5faafb57c8c2031d512be79ce51709d408a4fc4fcced3ebed3fec1665ea903ab47063067738f6f6361db +EBUILD vscode-1.97.1.ebuild 3209 BLAKE2B 85c101cc8d9ac0a112bf05d3d3afa7da8199f591d5cf6a57e282d41f41de8847edf2b25332f2449ec02d26d73c041d06979c7c17f9bc89eef371ed442852e372 SHA512 54061161d63591821a564cee0eb3608cbdd4f02472c77bc61ed89b30390b429ba5528e2790598c8c9b415feeda5e3132a4d736be12df7e92e5fe55aa17524a76 +EBUILD vscode-1.97.2.ebuild 3209 BLAKE2B 85c101cc8d9ac0a112bf05d3d3afa7da8199f591d5cf6a57e282d41f41de8847edf2b25332f2449ec02d26d73c041d06979c7c17f9bc89eef371ed442852e372 SHA512 54061161d63591821a564cee0eb3608cbdd4f02472c77bc61ed89b30390b429ba5528e2790598c8c9b415feeda5e3132a4d736be12df7e92e5fe55aa17524a76 MISC metadata.xml 1319 BLAKE2B 02076564e7b3b37433125cdcada4445311f03699bc7adb00f60af4f73f2fa9ebb90b805885198bd7cbdc54b779fa259d56c3142b30d595eaed278130081d8ca7 SHA512 d0922226274b1686ea14c8ca4e5835f6b30399bd71372bde4ac7e4eee4301ccca7fc32472d6ac0bd598b0459ebc33a59d346a21f5fa2d39cac4ed197682354e0 diff --git a/app-editors/vscode/vscode-1.96.4.ebuild b/app-editors/vscode/vscode-1.97.1.ebuild similarity index 100% rename from app-editors/vscode/vscode-1.96.4.ebuild rename to app-editors/vscode/vscode-1.97.1.ebuild diff --git a/app-editors/vscode/vscode-1.97.0.ebuild b/app-editors/vscode/vscode-1.97.2.ebuild similarity index 100% rename from app-editors/vscode/vscode-1.97.0.ebuild rename to app-editors/vscode/vscode-1.97.2.ebuild diff --git a/app-editors/vscodium/Manifest b/app-editors/vscodium/Manifest index 39f749fb5db5..22e70b1ec0b4 100644 --- a/app-editors/vscodium/Manifest +++ b/app-editors/vscodium/Manifest @@ -1,14 +1,14 @@ AUX codium-open-in-new-window.desktop 372 BLAKE2B a9c759c54049c0ac616565dc3b6abd5f0c517c4e04e350971a3292807466f2b218b7acaa23498045bf49761dc021c609780fc6402bc635fb02350d9d69d2b297 SHA512 7b4e8349d47a5a3e821865f021a10d9bb8bf8a1d8caff7484d5688b7b09ce8b03368b607603a600a07f836ec47b1d6ba7b829373b1b3be92a8424194f09a8e80 AUX codium-url-handler.desktop 337 BLAKE2B 1196918f18f1c000bca94e8f8b6184bc313a0344cd654a823bb0a39e54d5670084f846d61b8dc235084c26d5da491222977ae6cdb2818833b375db545a059be9 SHA512 b1bc714b53304fd12788fea212fe04728841e3a823ec5c8c577121790720ef7f063b943b0089269bd09f8bd223d8e8eaf7ff0d742b4c208f7536fb809d4f0cf6 AUX codium.desktop 782 BLAKE2B 89dedfff51a710d07087c6f0ca29ce1828b6a383b4ff3f974cbacf7cba77b16fd75f088c449a3bf13442e7a66be33816e2d6c4c903d673de9450a40ad45715b0 SHA512 5d0c618deb99c03db0e6ae8385854b460cf269e077106bb534dc29c139a01f52171d1f142906222b6f427e8cf5e50da686f805cf34cf38870f425c1361163dc4 -DIST vscodium-1.96.4.25017-amd64.tar.gz 136744379 BLAKE2B 026a3ddb4fd9e8e7fc5fc0d6f6f4ddae1d9eb082d24774bbc87d298a93aa767b0eaf504ef11a703119888e93389dd279c399e31862fcd95de7b8ce33e5f9485f SHA512 77fbf2841669b3b0c37514cce22e4d9263febc3df242248a87d68284ef3b6fcc93e8d9d6066ae25fce71b85d7b0cd38ae15ce62ea311f141f18da0a8b7b7019f -DIST vscodium-1.96.4.25017-arm.tar.gz 122803904 BLAKE2B 4cbdb76f6506a2027b62de42d9c78104498dc29318a7c1dc5c0dcfd7c04b22f3f054b14a0394dea06f05b5d682c55ef6c54f0e45e8225f62de3b3920d61d997a SHA512 cb57aa02b7a888ff1b66708ce714bd4b53c48f665398c6ae26745c35017cfd823bb2ab499d03ca390c6d37ac98b650ea57d38420faa5efa0f48c2b8478afad61 -DIST vscodium-1.96.4.25017-arm64.tar.gz 134709728 BLAKE2B c490f8ce89a8978c6a1b7a6d770e34190348558f52c30d0389a632a110ca9ce8e59e495755684258737725249f61cf4a9aa54cec0358106975c34ceccb79d1eb SHA512 bbd7b3f10d72336d8ad130d7ad575590eb9c8c74d48f61c0f77e73676c923ff8d7892cb44fb730ecc1850b53676bf1ad22c43333b1a609b56204cfdea06322b9 -DIST vscodium-1.96.4.25017-loong.tar.gz 142672651 BLAKE2B 5d176dcbd52fb9bc3aa8d5c1295ae7b94f8ea8f1b552de5a0e88af8d06a513d1fbb63be4cbe6fc76ca57b7bce41e24f18b10101c96efa50d3ea644df8a7f50bd SHA512 6ab8eee14fa371580e34b022096742b9aba3cfdd679c78d73ad92d27d6dc67d51d85baeebc2dcd6ab544fb290ea699442961fe66069d8baa6d3ae2c6b7e172d4 DIST vscodium-1.97.0.25037-amd64.tar.gz 138068498 BLAKE2B 142d339a9292c075964e18976d92402f390d56a2bd8dcf1feeaf14957faafaca13c6f648c2e73cdc7b32bfeb3c45213c78dcc14490dfca44091f275770b7b4c5 SHA512 09832babf28639abe6a7765baf308f60497d3bc82c41ca493971d592a3cd82f69b54235097ad80530290decd1d6c999018a0b928d188b5d24a8adf5926c62b83 DIST vscodium-1.97.0.25037-arm.tar.gz 124135009 BLAKE2B 67fbf730f5d33f475f6d77e2b0cd8a8816660ff3b280e327743df0260b787e3d6c57e802cfb78c6b024ed271804051c6340b9653466d34ffa2889ecdcabc691d SHA512 40d53483e796a30f0f3736a08badd6880e6b3b531be5b65a667fb6db778df2e2d53a603bd15d3d7680ef2059ecdcf7efc290f47e7cbab52a24ebc21044a100e1 DIST vscodium-1.97.0.25037-arm64.tar.gz 136046506 BLAKE2B e924139fd325a50a691add5c6f7966bc886b7b843d71d2dcc60d02ec46102d4945920c518a9bf1e1cc726aa88dadcbcaed1f47b7ffb5ac7f0e655d91c1e8c491 SHA512 85cd536eccc9b95de184b0ccf582a206016f44a75f068c42b344d8f96e5ad47662fafda991f9e3cb5f55b9ddea1e31fe19416609ac83f029b9b02e8efa5abc1a DIST vscodium-1.97.0.25037-loong.tar.gz 144013678 BLAKE2B 1258eb5e0c5e0c83bfbcf288188249062eabb2f9488866aa016381dab5779f0dea8c4727ea6c04c2e46bcf717c328a881615a711d3e7f7088948b38b1dc35024 SHA512 03d7361dc20fbb2b52da4a5be0d3b5bdbc8786837b67cb7fcae50148c73b538b58504a3be634020faf99c690113f72740bbdf4f5f5d3b53f262a3e482aca3ab9 -EBUILD vscodium-1.96.4.25017.ebuild 3112 BLAKE2B f29aaf3d218fc4da3950985570aee905a9ae6e3d0d0fd0b1f7af270497893407813a2b2295f40fddb92766865747e072cf59ae697d6a2c41a80ddf0762ecfcf3 SHA512 29de6bc03b2ad244f6350af7173e4e19049124b99df0355e0d060b8a11160f6a9d92abf901e3910811c69847e156c777b8d40b4704475f95ef6c0aaa04ea22bc +DIST vscodium-1.97.1.25044-amd64.tar.gz 138064556 BLAKE2B e62f6b8bf0bc339c8e5792b8c8faaa04f783982fc756012711ee0a650a64833af365a696eeec5163836767cd7d8a869482df21dc6354331a1ad11dbf04e17cf9 SHA512 d0a16570bc397f444b120d653463b882870e4f490a7384b3767fee12e02faf89cb6c5117fcffa13723fbac353c46debf5674461f33acbc5703b378eced1275b5 +DIST vscodium-1.97.1.25044-arm.tar.gz 124149538 BLAKE2B fff59db6da94d71a51ed018efaf5dea741c75f2aeed09e933f14f25bbd83c6e640845923014dbabd07dccf90336c5073bef293954a43c28ff98179258add74fc SHA512 7281d6bd0c9ca1073640c02c4a1ca914615f3bd6a3118d55c713effa6ee85b1993e83aa9993053a9930e8ff89f1a75063742b84ec3d3c28255885d3751591809 +DIST vscodium-1.97.1.25044-arm64.tar.gz 136050855 BLAKE2B 21aad16090401c6d4b1c4843753bf8fc5855dd9af3e155bec978136fc4dc471be5a961adf90314b5023a13de1b185157ee5b82fce514ed6cbc4e800ffd93d372 SHA512 e6460707ec0a5489bf0bdb96b8bef23940c6038072e2634bee49b03ca9a1496688b0fcdac4642597da19f30031f184a3f6b31ee3e498f90f37985abd614d097b +DIST vscodium-1.97.1.25044-loong.tar.gz 144023197 BLAKE2B 049f80a93b7cfc21a1d27b8e837fbf1ae0add5c936c0478d4d3ea582cc09e2612ef8804749e8dfd9fc9bf2b17ef00f1446b7dd128bd211dd670e068dbecf6fc5 SHA512 d06aad6770c4b0a39e51e0be3fd5bd3095d84302a28a08e4634b5f908375bda428924b7f7f7c40b22e23896a0226673d6bf61b5313c02757ec11663c799b6738 EBUILD vscodium-1.97.0.25037.ebuild 3112 BLAKE2B f29aaf3d218fc4da3950985570aee905a9ae6e3d0d0fd0b1f7af270497893407813a2b2295f40fddb92766865747e072cf59ae697d6a2c41a80ddf0762ecfcf3 SHA512 29de6bc03b2ad244f6350af7173e4e19049124b99df0355e0d060b8a11160f6a9d92abf901e3910811c69847e156c777b8d40b4704475f95ef6c0aaa04ea22bc +EBUILD vscodium-1.97.1.25044.ebuild 3112 BLAKE2B f29aaf3d218fc4da3950985570aee905a9ae6e3d0d0fd0b1f7af270497893407813a2b2295f40fddb92766865747e072cf59ae697d6a2c41a80ddf0762ecfcf3 SHA512 29de6bc03b2ad244f6350af7173e4e19049124b99df0355e0d060b8a11160f6a9d92abf901e3910811c69847e156c777b8d40b4704475f95ef6c0aaa04ea22bc MISC metadata.xml 1563 BLAKE2B 63d5132bcea2c419facf49b2d644bf1f58f44da333adb8270aedaaa289563ff5d116a0700df1306bdf1e7d2628f72959b8f18540486d3ce56bfe67adb925d8fe SHA512 ea75764cc70ac6a9452600a106de3784baaa9f84fa5b1021cea2be073636fb0fc8c6904a7db2a560ccb2bba491d76125e5996e0aac28ea11cd039ae16972e595 diff --git a/app-editors/vscodium/vscodium-1.96.4.25017.ebuild b/app-editors/vscodium/vscodium-1.97.1.25044.ebuild similarity index 100% rename from app-editors/vscodium/vscodium-1.96.4.25017.ebuild rename to app-editors/vscodium/vscodium-1.97.1.25044.ebuild diff --git a/app-editors/wily/Manifest b/app-editors/wily/Manifest index 5c05d8d69676..6c889204cdd3 100644 --- a/app-editors/wily/Manifest +++ b/app-editors/wily/Manifest @@ -1,3 +1,5 @@ +AUX wily-1.0-C23.patch 2030 BLAKE2B 9cba93ab704454156e947e0871b0a283aea9ce53ea00e5355a8f36480ebde0e61f68d96a088d8b6569b60b10bff6d92067234fa156a2320b231e3a0ce98fc3be SHA512 853cd6b0cf5645dcbd2b54ce38f3346e50171bf07b36d85e470eba322ee2aaf5e71f1b7ee20096d98ba957b4d27b108a98f091ec9d8bba1e9ebc6e50f8fe4fba DIST wily-9libs.tar.gz 125247 BLAKE2B 94f93d081c90f6543bb26d17f8fe053135be2df983a2280fdd15243c5e448f5f3265666692e0635156217b0e759e0d6f3bbc123cb857f1d7880ee3ee4f913a37 SHA512 3c06ef1d9c6e77a00037570f8b8bdbcdfc7648f691675db679ba83ac0ce092762a4020b0483acd325aa57810e9a386800a94c5e6e2b5002a963b4751a4d30a5b EBUILD wily-1.0-r2.ebuild 717 BLAKE2B 367116115efc8030793919d04f4ff1aba70c8323484ef2b36ba3d4054fbf90ad274c8389a8ea48365a623d26a9b4f22f2d4d5f4fe8e71467c2fc116d2a7fa1d2 SHA512 585aa02b6b543a4105b4a0cd2ff3efd75ef4a2014efc256ddb0ddb463d132d0d7d995db68a6e9f110ebaac56085d2b542b78d4fd8717da996f1eeea9d728169b +EBUILD wily-1.0-r3.ebuild 854 BLAKE2B 164c0b4f8791b0db51b3d54595f1aa305d234590ea638c7cac18b19d7069f2ff270921801c2defcd6b3e0cfea704ca928d69bb3b9e226eee8c8a25d62cdc216a SHA512 709fdd9695b29c7ac71d2593af81d1342d86c445d2cdf0f4f7eb133a419d763c9349ddd6388991129f2da2213b3561ee11920ab293c73df09f1f00828cdd49e5 MISC metadata.xml 167 BLAKE2B 868e3b584722eaacf68273db062bb773d8c7e5d7ab2b81ca7e8397643bf7cc106c3a1033594401c99c54f667bb45d6b73f9048fc335580bbd44b4589ad26a832 SHA512 30caadd1496c3b9969136038239a1d8e01f236726b4022c2d7e19ca7575f25f735e556835e581afbf44fbd3e4104c40f2b5ef5fa70118d75c881fdf871962d0a diff --git a/app-editors/wily/files/wily-1.0-C23.patch b/app-editors/wily/files/wily-1.0-C23.patch new file mode 100644 index 000000000000..8516c347fba5 --- /dev/null +++ b/app-editors/wily/files/wily-1.0-C23.patch @@ -0,0 +1,101 @@ +DO NOT EAT ERRORS AND CONTINUE +--- a/Makefile.in ++++ b/Makefile.in +@@ -4,12 +4,16 @@ + srcdir=@srcdir@ + VPATH=@srcdir@ + +-subdirs=libmsg wily ++SUBDIRS=libmsg wily ++.PHONY: $(TOPTARGETS) $(SUBDIRS) ++ ++wily: libmsg + +-all install clean nuke distclean:: +- for i in $(subdirs); do \ +- (cd $$i; $(MAKE) $(MFLAGS) $@); \ +- done ++TOPTARGETS=all install clean nuke distclean ++ ++$(TOPTARGETS):: $(SUBDIRS) ++$(SUBDIRS): ++ $(MAKE) -C $@ $(MAKECMDGOALS) + + nuke distclean:: + rm -f wily.* config.cache config.h config.log config.status Makefile +bug https://bugs.gentoo.org/729238 +Do not call ar directly +--- a/configure.in ++++ b/configure.in +@@ -95,6 +95,7 @@ + AC_PROG_MAKE_SET + AM_PROG_CC_STDC + AC_PROG_RANLIB ++AC_PROG_AR + + dnl Checks for libraries. + AC_PATH_XTRA +--- a/libmsg/Makefile.in ++++ b/libmsg/Makefile.in +@@ -7,7 +7,7 @@ + + CC=@CC@ + CFLAGS=@CFLAGS@ -I.. -I$(INCLUDES) @NINE_CFLAGS@ +-AR=ar ++AR=@AR@ + RANLIB=@RANLIB@ + INCLUDES=$(top_srcdir)/include + +C23 porting for GCC-15 +--- a/include/msg.h ++++ b/include/msg.h +@@ -3,7 +3,11 @@ + + typedef struct Msg Msg; + typedef int Id; /* Window identifier */ ++#if __STDC_VERSION__ <= 201710L + typedef enum Bool {false, true} Bool; ++#else ++typedef bool Bool; ++#endif + typedef struct Range Range; + + /* name of environment variable */ +--- a/wily/wily.h ++++ b/wily/wily.h +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include "config.h" + #include + +--- a/wily/include.c ++++ b/wily/include.c +@@ -27,11 +27,11 @@ + expanded = text_expand(t, r, notinclude); + len = RLEN(expanded); + if( len > (MAXPATH*UTFmax) || len < 2) +- return false; ++ return NULL; + len = text_copyutf(t, expanded, buf); + + if (!is_includebrackets(buf[0], buf[len-1])) +- return false; ++ return NULL; + + buf[len-1] = 0; + s = pathfind(getenv("INCLUDES"), buf+1); +--- a/wily/wily.c ++++ b/wily/wily.c +@@ -4,6 +4,8 @@ + + #include "wily.h" + #include "tile.h" ++ ++extern void initfont(char *fixed); /* from font.c */ + + static int ncolumns = 2; + int tagheight; + diff --git a/app-editors/wily/wily-1.0-r3.ebuild b/app-editors/wily/wily-1.0-r3.ebuild new file mode 100644 index 000000000000..81b7edac6086 --- /dev/null +++ b/app-editors/wily/wily-1.0-r3.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit autotools + +MY_P="${P/1.0/9libs}" + +DESCRIPTION="An emulation of ACME, Plan9's hybrid window system, shell and editor" +HOMEPAGE="https://www.netlib.org/research/9libs/" +SRC_URI="https://www.netlib.org/research/9libs/${MY_P}.tar.gz" +S=${WORKDIR}/${MY_P} + +LICENSE="Artistic" +SLOT="0" +KEYWORDS="~amd64 ~riscv ~x86" + +DEPEND=" + dev-libs/9libs +" +RDEPEND=" + ${DEPEND} +" +DOCS=( + README +) + +PATCHES=( "${FILESDIR}/${P}-C23.patch" ) + +src_prepare() { + default + + #bug https://bugs.gentoo.org/877123 and https://bugs.gentoo.org/906022 + eautoreconf +} + +src_configure() { + mhw_cv_mod_9libs_lib_path=/usr/$(get_libdir) \ + mhw_cv_mod_9libs_inc_path=/usr/include/9libs \ + econf +} + +src_install() { + default + + insinto /usr/share/${PN} + doins "${S}"/misc/* +} diff --git a/app-editors/zed/Manifest b/app-editors/zed/Manifest index 9bcb73915d47..530b18596d4e 100644 --- a/app-editors/zed/Manifest +++ b/app-editors/zed/Manifest @@ -29,9 +29,9 @@ DIST zed-0.165.4-crates.tar.xz 100617284 BLAKE2B 2ae775115768befa1509f57a3c6177b DIST zed-0.165.4.tar.gz 13286399 BLAKE2B 971ae47f9344d8fd07dbd0237a61a04b62f848f5f5eb84542e1d5e86ddae07603387c48af1e6068a94d3dea910a0234102f63a64f59b88d482398f4ed69346b5 SHA512 ab55422f05eeac551a485be147ee0336bdd790ac51ff21c719c1f432735e695be0e25f747bf2ba92e0f06bce520aa328f867300647d9828ce282bec87f61fe07 DIST zed-0.168.2-crates.tar.xz 102307616 BLAKE2B 07c3b4270cdb230c1821dcdbcf8d2412e22bcd83d0bcad8d920cb8a24fb7759c94ef631ae3aa043b9fe7435c36fdd4737dcfe88b4cf8e754c91901b2061c6fc3 SHA512 e0e347725001e6d30af3e19556ba698c058572550da928efb6cb8ad2525c25cb2a8234a0ae3bc6a7c3ad9abdeb9b84336b82e11fb0574ce1e3ef02a8b641d850 DIST zed-0.168.2.tar.gz 13487508 BLAKE2B 7e9f8a73eb461f852d85f9596f3db1af0ce56c5c994c413a90b270d5b2b5bb2e994f78853a17b5579ba9905f761cec11d56c67a686643ca5ae4a36dcd83cfb5f SHA512 c7a1c93e044879209dd19b00dba7e046b13175ed82a4968c1aabe1f1605a61605cb4d8d7906a186c61c6129d59a58e14dd2f336263b301f8b59d3e9f7b332f1b -DIST zed-0.172.8-crates.tar.xz 101309808 BLAKE2B 98770d79f4cddda7c8215760a4856b42107414d50c0b28499e8dab334e36d7f1629034875f396cf3e342ccac562bf71d6be61e360f57388badca594fe691fcb0 SHA512 3b549b155ed160350852f71281f966a35900089f85fd05190d15bbdd9a257c124aa313ad1ddedc0c5f644d0f64f49d8c86091aebb0f897e5a51640bfe48d9007 -DIST zed-0.172.8.tar.gz 13619615 BLAKE2B 5cb194a6e234ac8273e81f2ec6991cea9956d7094940a0c3d932d6e4a7ae599dc48a82e7a60be182612b789dbb35e0b31690c76798dfe45751b5de680cfa5aa4 SHA512 c45ac9722a4db274b6a856442f8351ecd1955e07deb2e9efa250e9748ae7b10c8c69f53c6297d21790e74fa065e70e2731010c8dec74fea13a0bd6ae61a2cb04 +DIST zed-0.172.10-crates.tar.xz 101309808 BLAKE2B 98770d79f4cddda7c8215760a4856b42107414d50c0b28499e8dab334e36d7f1629034875f396cf3e342ccac562bf71d6be61e360f57388badca594fe691fcb0 SHA512 3b549b155ed160350852f71281f966a35900089f85fd05190d15bbdd9a257c124aa313ad1ddedc0c5f644d0f64f49d8c86091aebb0f897e5a51640bfe48d9007 +DIST zed-0.172.10.tar.gz 13621974 BLAKE2B df0fc8e93ca584c84281e86a86c5c4d9ae47d13aac3bfaa3c5837aa64677e9fccb0f6b6eabce8a5b953af5c2062a587e4e31bef8cebe0003ea5a78e1e98ecbc9 SHA512 4799a04191ac07a8da178252f79097def1f1959c4ecbbfef71999765d4ed6db41089b7445c529e1b6784c8598cd6c60707028048f8fdb2afbf96b99b7ad016e8 EBUILD zed-0.165.4.ebuild 9509 BLAKE2B 12979687e47d1b8df2affa08f32cc4cb118578477e5946649654dacbd763149194ea14e5ef250b82dd374bfa777d1308c78a2c6774403626a79ba21e1c7210cd SHA512 665ebb2c035faa9c5219bc057d45fe6e102f39d84649d67d2e0403949604fcd114128a5c57192fbc28a749fd583ab163121b7ca5f4a9715e9fd0d40539c51ce2 EBUILD zed-0.168.2.ebuild 11505 BLAKE2B 1b614242968c757bdece760f455d25e8b34502098d31523689fc36918b8228e9d85d60292af85f502338dc69d2139f2f9347bd1082deeabe8bccd54c5c92a538 SHA512 5592cafac8272ce0b21526041803b3100218f3133dcf937866b9fd3ccd987b5636ae3d7bd62963a4818b530c69c662cee00f27d0c95f617dfc92b8fde49d8fbe -EBUILD zed-0.172.8.ebuild 12140 BLAKE2B 52fb899a51506d44ddf5998b1f34fac55718512b85ff5fb190f5f8e38ee3fd3cd1a3b3b37af2f7b6e94c745503e7f5ee3a9125e70ea1bf3454dd02142064616f SHA512 212d6b79ca5692cc0ee627ba56ef7ca6707144d2952d64ff68049baf0dd7feacd5f0ba9ab57bbfff7e2871207233afcfe1ea10d5b241b1d697a1412662cc8d15 +EBUILD zed-0.172.10.ebuild 12148 BLAKE2B f3fea80e65e909c8d6d846b6a69e052497969ce5c7d269f1637c8678ebeb009d4a984681a801e956e36aa323758c52f2dd0d2f0a24a506c2863c2e4802547fb6 SHA512 472b75f58cb3fbd9ac6dcc531179082c5dd48c208293cddd92f5d4a9712dca359582a42a5db8d3b37fce126b8143ab855d70e6602bc8ffa9b857d011d3d8c932 MISC metadata.xml 575 BLAKE2B 3793593f06424fd3986e23cd148b663bfcbf5c1dc0f76847a3991bbdde8badfdc863d0994ba1b59fc0e886243ded4e4421da4b4bf6d2951887801f78b0d6d290 SHA512 b0660a1a36d59dea6b9a6e25a239f0484e1cbf98a6569dd17d6bae1145f12d7e3ac2609bbce32627bf7ca6161581cd82c087d7deb17dd662c23bd81db6465a02 diff --git a/app-editors/zed/zed-0.172.10.ebuild b/app-editors/zed/zed-0.172.10.ebuild new file mode 100644 index 000000000000..6718d4f851a5 --- /dev/null +++ b/app-editors/zed/zed-0.172.10.ebuild @@ -0,0 +1,210 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Autogenerated by pycargoebuild 0.13.5 + +EAPI=8 + +CRATES=" +" + +declare -A GIT_CRATES=( + [alacritty_terminal]='https://github.com/alacritty/alacritty;5e78d20c709cb1ab8d44ca7a8702cc26d779227c;alacritty-%commit%/alacritty_terminal' + [async-pipe]='https://github.com/zed-industries/async-pipe-rs;82d00a04211cf4e1236029aa03e6b6ce2a74c553;async-pipe-rs-%commit%' + [async-stripe]='https://github.com/zed-industries/async-stripe;3672dd4efb7181aa597bf580bf5a2f5d23db6735;async-stripe-%commit%' + [blade-graphics]='https://github.com/kvark/blade;091a8401033847bb9b6ace3fcf70448d069621c5;blade-%commit%/blade-graphics' + [blade-macros]='https://github.com/kvark/blade;091a8401033847bb9b6ace3fcf70448d069621c5;blade-%commit%/blade-macros' + [blade-util]='https://github.com/kvark/blade;091a8401033847bb9b6ace3fcf70448d069621c5;blade-%commit%/blade-util' + [cosmic-text]='https://github.com/pop-os/cosmic-text;542b20ca4376a3b5de5fa629db1a4ace44e18e0c;cosmic-text-%commit%' + [cpal]='https://github.com/zed-industries/cpal;fd8bc2fd39f1f5fdee5a0690656caff9a26d9d50;cpal-%commit%' + [font-kit]='https://github.com/zed-industries/font-kit;40391b7c0041d8a8572af2afa3de32ae088f0120;font-kit-%commit%' + [git2]='https://github.com/rust-lang/git2-rs;a3b90cb3756c1bb63e2317bf9cfa57838178de5c;git2-rs-%commit%' + [libgit2-sys]='https://github.com/rust-lang/git2-rs;a3b90cb3756c1bb63e2317bf9cfa57838178de5c;git2-rs-%commit%/libgit2-sys' + [libwebrtc]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/libwebrtc' + [livekit-api]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit-api' + [livekit-protocol]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit-protocol' + [livekit-runtime]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit-runtime' + [livekit]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit' + [lsp-types]='https://github.com/zed-industries/lsp-types;72357d6f6d212bdffba3b5ef4b31d8ca856058e7;lsp-types-%commit%' + [nvim-rs]='https://github.com/KillTheMule/nvim-rs;69500bae73b8b3f02a05b7bee621a0d0e633da6c;nvim-rs-%commit%' + [oo7]='https://github.com/zed-industries/oo7;9d5d5fcd7e4e0add9b420ffb58f67661b0b37568;oo7-%commit%/client' + [pet-conda]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-conda' + [pet-core]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-core' + [pet-env-var-path]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-env-var-path' + [pet-fs]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-fs' + [pet-global-virtualenvs]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-global-virtualenvs' + [pet-homebrew]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-homebrew' + [pet-jsonrpc]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-jsonrpc' + [pet-linux-global-python]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-linux-global-python' + [pet-mac-commandlinetools]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-mac-commandlinetools' + [pet-mac-python-org]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-mac-python-org' + [pet-mac-xcode]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-mac-xcode' + [pet-pipenv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-pipenv' + [pet-pixi]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-pixi' + [pet-poetry]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-poetry' + [pet-pyenv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-pyenv' + [pet-python-utils]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-python-utils' + [pet-reporter]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-reporter' + [pet-telemetry]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-telemetry' + [pet-venv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-venv' + [pet-virtualenv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-virtualenv' + [pet-virtualenvwrapper]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-virtualenvwrapper' + [pet-windows-registry]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-windows-registry' + [pet-windows-store]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-windows-store' + [pet]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet' + [reqwest]='https://github.com/zed-industries/reqwest;fd110f6998da16bbca97b6dddda9be7827c50e29;reqwest-%commit%' + [tree-sitter-gomod]='https://github.com/camdencheek/tree-sitter-go-mod;6efb59652d30e0e9cd5f3b3a669afd6f1a926d3c;tree-sitter-go-mod-%commit%' + [tree-sitter-gowork]='https://github.com/zed-industries/tree-sitter-go-work;acb0617bf7f4fda02c6217676cc64acb89536dc7;tree-sitter-go-work-%commit%' + [tree-sitter-heex]='https://github.com/zed-industries/tree-sitter-heex;1dd45142fbb05562e35b2040c6129c9bca346592;tree-sitter-heex-%commit%' + [tree-sitter-md]='https://github.com/tree-sitter-grammars/tree-sitter-markdown;9a23c1a96c0513d8fc6520972beedd419a973539;tree-sitter-markdown-%commit%' + [tree-sitter-yaml]='https://github.com/zed-industries/tree-sitter-yaml;baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a;tree-sitter-yaml-%commit%' + [webrtc-sys-build]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/webrtc-sys/build' + [webrtc-sys]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/webrtc-sys' + [xim-ctext]='https://github.com/XDeme1/xim-rs;d50d461764c2213655cd9cf65a0ea94c70d3c4fd;xim-rs-%commit%/xim-ctext' + [xim-parser]='https://github.com/XDeme1/xim-rs;d50d461764c2213655cd9cf65a0ea94c70d3c4fd;xim-rs-%commit%/xim-parser' + [xim]='https://github.com/XDeme1/xim-rs;d50d461764c2213655cd9cf65a0ea94c70d3c4fd;xim-rs-%commit%' + [xkbcommon]='https://github.com/ConradIrwin/xkbcommon-rs;fcbb4612185cc129ceeff51d22f7fb51810a03b2;xkbcommon-rs-%commit%' +) + +LLVM_COMPAT=( {18..19} ) +RUST_MIN_VER="1.81.0" +RUST_NEEDS_LLVM=1 +WEBRTC_COMMIT="dac8015-6" + +inherit cargo check-reqs desktop flag-o-matic llvm-r1 toolchain-funcs xdg + +DESCRIPTION="The fast, collaborative code editor" +HOMEPAGE="https://zed.dev https://github.com/zed-industries/zed" +SRC_URI=" + https://github.com/zed-industries/zed/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz + https://gitlab.com/api/v4/projects/35204985/packages/generic/${PN}/${PV}/${P}-crates.tar.xz + amd64? ( + https://github.com/livekit/rust-sdks/releases/download/webrtc-${WEBRTC_COMMIT}/webrtc-linux-x64-release.zip -> + webrtc-${WEBRTC_COMMIT}-linux-x64-release.zip + ) + arm64? ( + https://github.com/livekit/rust-sdks/releases/download/webrtc-${WEBRTC_COMMIT}/webrtc-linux-arm64-release.zip -> + webrtc-${WEBRTC_COMMIT}-linux-arm64-release.zip + ) + ${CARGO_CRATE_URIS}" + +LICENSE="GPL-3+" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0 ISC + LGPL-3 MIT MPL-2.0 Unicode-3.0 ZLIB +" +SLOT="0" +KEYWORDS="~amd64 ~arm64" +IUSE="gles" +CHECKREQS_DISK_BUILD="9G" +CHECKREQS_MEMORY="16G" + +DEPEND=" + app-arch/zstd:= + app-misc/jq + dev-db/sqlite:3 + >=dev-libs/libgit2-1.9.0:= + dev-libs/mimalloc + dev-libs/openssl:0/3 + dev-libs/protobuf + dev-libs/wayland + dev-libs/wayland-protocols + dev-util/wayland-scanner + dev-util/vulkan-tools + media-fonts/noto + media-libs/alsa-lib + media-libs/fontconfig + media-libs/vulkan-loader[X] + net-analyzer/openbsd-netcat + net-misc/curl + sys-libs/zlib + x11-libs/libxcb:= + x11-libs/libxkbcommon[X] +" +RDEPEND="${DEPEND}" +BDEPEND=" + app-arch/unzip + dev-build/cmake + dev-util/vulkan-headers + sys-devel/gettext + sys-devel/mold + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT}= + llvm-core/llvm:${LLVM_SLOT}= + ') +" + +QA_FLAGS_IGNORED="usr/bin/zedit" + +pkg_setup() { + if tc-is-gcc; then + export CARGO_PROFILE_RELEASE_LTO="true" + elif tc-is-clang; then + export CARGO_PROFILE_RELEASE_LTO="thin" + fi + strip-unsupported-flags + # flags from upstream + export RUSTFLAGS="${RUSTFLAGS} -C symbol-mangling-version=v0 --cfg tokio_unstable -C link-arg=-fuse-ld=mold -C link-args=-Wl,--disable-new-dtags,-rpath,\$ORIGIN/../lib" + # linking error with llvm-18 + export RUSTFLAGS="${RUSTFLAGS} -C link-args=-Wl,-z,nostart-stop-gc" + # fix error in livekit-rust-sdks + export RUSTFLAGS="${RUSTFLAGS} -A unexpected_cfgs" + if use gles; then + export RUSTFLAGS="${RUSTFLAGS} --cfg gles" + fi + llvm-r1_pkg_setup + rust_pkg_setup +} + +src_prepare() { + default + + export APP_CLI="zedit" + export APP_ICON="zed" + export APP_ID="dev.zed.Zed" + export APP_NAME="Zed" + export APP_ARGS="%U" + export DO_STARTUP_NOTIFY="true" + envsubst < "crates/zed/resources/zed.desktop.in" > ${APP_ID}.desktop || die + + # Cargo offline fetch workaround + local CPAL_COMMIT="fd8bc2fd39f1f5fdee5a0690656caff9a26d9d50" + local CPAL_GIT="git = \"https://github.com/zed-industries/cpal\", rev = \"${CPAL_COMMIT}\"" + local CPAL_PATH="path = \"${WORKDIR}/cpal-${CPAL_COMMIT}\"" + + sed -e "s#${CPAL_GIT}#${CPAL_PATH}#" \ + -i "${S}/Cargo.toml" || die "Cargo fetch workaround failed" +} + +src_configure() { + cargo_src_configure --all-features +} + +src_compile() { + export RELEASE_VERSION="${PV}" + export ZED_UPDATE_EXPLANATION='Updates are handled by portage' + if use arm64; then + export LK_CUSTOM_WEBRTC="${WORKDIR}/linux-arm64-release" + elif use amd64; then + export LK_CUSTOM_WEBRTC="${WORKDIR}/linux-x64-release" + fi + cargo_src_compile --package zed --package cli +} + +src_install() { + newbin $(cargo_target_dir)/cli ${APP_CLI} + exeinto "/usr/libexec" + newexe $(cargo_target_dir)/zed zed-editor + + newicon -s 512 crates/zed/resources/app-icon.png zed.png + newicon -s 1024 crates/zed/resources/app-icon@2x.png zed.png + domenu "${S}/${APP_ID}.desktop" +} + +src_test () { + mkdir -p "${HOME}/.config/zed" || die + mkdir -p "${HOME}/.local/share/zed/logs/" || die + + SHELL=/usr/bin/sh RUST_BACKTRACE=full cargo_src_test -vv +} diff --git a/app-editors/zed/zed-0.172.8.ebuild b/app-editors/zed/zed-0.172.8.ebuild deleted file mode 100644 index 6a96d8111b74..000000000000 --- a/app-editors/zed/zed-0.172.8.ebuild +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright 2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -# Autogenerated by pycargoebuild 0.13.4 - -EAPI=8 - -CRATES=" -" - -declare -A GIT_CRATES=( - [alacritty_terminal]='https://github.com/alacritty/alacritty;5e78d20c709cb1ab8d44ca7a8702cc26d779227c;alacritty-%commit%/alacritty_terminal' - [async-pipe]='https://github.com/zed-industries/async-pipe-rs;82d00a04211cf4e1236029aa03e6b6ce2a74c553;async-pipe-rs-%commit%' - [async-stripe]='https://github.com/zed-industries/async-stripe;3672dd4efb7181aa597bf580bf5a2f5d23db6735;async-stripe-%commit%' - [blade-graphics]='https://github.com/kvark/blade;091a8401033847bb9b6ace3fcf70448d069621c5;blade-%commit%/blade-graphics' - [blade-macros]='https://github.com/kvark/blade;091a8401033847bb9b6ace3fcf70448d069621c5;blade-%commit%/blade-macros' - [blade-util]='https://github.com/kvark/blade;091a8401033847bb9b6ace3fcf70448d069621c5;blade-%commit%/blade-util' - [cosmic-text]='https://github.com/pop-os/cosmic-text;542b20ca4376a3b5de5fa629db1a4ace44e18e0c;cosmic-text-%commit%' - [cpal]='https://github.com/zed-industries/cpal;fd8bc2fd39f1f5fdee5a0690656caff9a26d9d50;cpal-%commit%' - [font-kit]='https://github.com/zed-industries/font-kit;40391b7c0041d8a8572af2afa3de32ae088f0120;font-kit-%commit%' - [git2]='https://github.com/rust-lang/git2-rs;a3b90cb3756c1bb63e2317bf9cfa57838178de5c;git2-rs-%commit%' - [libgit2-sys]='https://github.com/rust-lang/git2-rs;a3b90cb3756c1bb63e2317bf9cfa57838178de5c;git2-rs-%commit%/libgit2-sys' - [libwebrtc]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/libwebrtc' - [livekit-api]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit-api' - [livekit-protocol]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit-protocol' - [livekit-runtime]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit-runtime' - [livekit]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/livekit' - [lsp-types]='https://github.com/zed-industries/lsp-types;72357d6f6d212bdffba3b5ef4b31d8ca856058e7;lsp-types-%commit%' - [nvim-rs]='https://github.com/KillTheMule/nvim-rs;69500bae73b8b3f02a05b7bee621a0d0e633da6c;nvim-rs-%commit%' - [oo7]='https://github.com/zed-industries/oo7;9d5d5fcd7e4e0add9b420ffb58f67661b0b37568;oo7-%commit%/client' - [pet-conda]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-conda' - [pet-core]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-core' - [pet-env-var-path]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-env-var-path' - [pet-fs]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-fs' - [pet-global-virtualenvs]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-global-virtualenvs' - [pet-homebrew]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-homebrew' - [pet-jsonrpc]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-jsonrpc' - [pet-linux-global-python]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-linux-global-python' - [pet-mac-commandlinetools]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-mac-commandlinetools' - [pet-mac-python-org]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-mac-python-org' - [pet-mac-xcode]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-mac-xcode' - [pet-pipenv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-pipenv' - [pet-pixi]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-pixi' - [pet-poetry]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-poetry' - [pet-pyenv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-pyenv' - [pet-python-utils]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-python-utils' - [pet-reporter]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-reporter' - [pet-telemetry]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-telemetry' - [pet-venv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-venv' - [pet-virtualenv]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-virtualenv' - [pet-virtualenvwrapper]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-virtualenvwrapper' - [pet-windows-registry]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-windows-registry' - [pet-windows-store]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet-windows-store' - [pet]='https://github.com/microsoft/python-environment-tools;1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0;python-environment-tools-%commit%/crates/pet' - [reqwest]='https://github.com/zed-industries/reqwest;fd110f6998da16bbca97b6dddda9be7827c50e29;reqwest-%commit%' - [tree-sitter-gomod]='https://github.com/camdencheek/tree-sitter-go-mod;6efb59652d30e0e9cd5f3b3a669afd6f1a926d3c;tree-sitter-go-mod-%commit%' - [tree-sitter-gowork]='https://github.com/zed-industries/tree-sitter-go-work;acb0617bf7f4fda02c6217676cc64acb89536dc7;tree-sitter-go-work-%commit%' - [tree-sitter-heex]='https://github.com/zed-industries/tree-sitter-heex;1dd45142fbb05562e35b2040c6129c9bca346592;tree-sitter-heex-%commit%' - [tree-sitter-md]='https://github.com/tree-sitter-grammars/tree-sitter-markdown;9a23c1a96c0513d8fc6520972beedd419a973539;tree-sitter-markdown-%commit%' - [tree-sitter-yaml]='https://github.com/zed-industries/tree-sitter-yaml;baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a;tree-sitter-yaml-%commit%' - [webrtc-sys-build]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/webrtc-sys/build' - [webrtc-sys]='https://github.com/zed-industries/livekit-rust-sdks;060964da10574cd9bf06463a53bf6e0769c5c45e;livekit-rust-sdks-%commit%/webrtc-sys' - [xim-ctext]='https://github.com/XDeme1/xim-rs;d50d461764c2213655cd9cf65a0ea94c70d3c4fd;xim-rs-%commit%/xim-ctext' - [xim-parser]='https://github.com/XDeme1/xim-rs;d50d461764c2213655cd9cf65a0ea94c70d3c4fd;xim-rs-%commit%/xim-parser' - [xim]='https://github.com/XDeme1/xim-rs;d50d461764c2213655cd9cf65a0ea94c70d3c4fd;xim-rs-%commit%' - [xkbcommon]='https://github.com/ConradIrwin/xkbcommon-rs;fcbb4612185cc129ceeff51d22f7fb51810a03b2;xkbcommon-rs-%commit%' -) - -LLVM_COMPAT=( {18..19} ) -RUST_MIN_VER="1.81.0" -RUST_NEEDS_LLVM=1 -WEBRTC_COMMIT="dac8015-6" - -inherit cargo check-reqs desktop flag-o-matic llvm-r1 toolchain-funcs xdg - -DESCRIPTION="The fast, collaborative code editor" -HOMEPAGE="https://zed.dev https://github.com/zed-industries/zed" -SRC_URI=" - https://github.com/zed-industries/zed/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz - https://gitlab.com/api/v4/projects/35204985/packages/generic/${PN}/${PV}/${P}-crates.tar.xz - amd64? ( - https://github.com/livekit/rust-sdks/releases/download/webrtc-${WEBRTC_COMMIT}/webrtc-linux-x64-release.zip -> - webrtc-${WEBRTC_COMMIT}-linux-x64-release.zip - ) - arm64? ( - https://github.com/livekit/rust-sdks/releases/download/webrtc-${WEBRTC_COMMIT}/webrtc-linux-arm64-release.zip -> - webrtc-${WEBRTC_COMMIT}-linux-arm64-release.zip - ) - ${CARGO_CRATE_URIS}" - -LICENSE="GPL-3+" -# Dependent crate licenses -LICENSE+=" - Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0 ISC - LGPL-3 MIT MPL-2.0 Unicode-3.0 ZLIB -" -SLOT="0" -KEYWORDS="~amd64 ~arm64" -IUSE="gles" -CHECKREQS_DISK_BUILD="9G" -CHECKREQS_MEMORY="16G" - -DEPEND=" - app-arch/zstd:= - app-misc/jq - dev-db/sqlite:3 - dev-libs/libgit2:= - dev-libs/mimalloc - dev-libs/openssl:0/3 - dev-libs/protobuf - dev-libs/wayland - dev-libs/wayland-protocols - dev-util/wayland-scanner - dev-util/vulkan-tools - media-fonts/noto - media-libs/alsa-lib - media-libs/fontconfig - media-libs/vulkan-loader[X] - net-analyzer/openbsd-netcat - net-misc/curl - sys-libs/zlib - x11-libs/libxcb:= - x11-libs/libxkbcommon[X] -" -RDEPEND="${DEPEND}" -BDEPEND=" - app-arch/unzip - dev-build/cmake - dev-util/vulkan-headers - sys-devel/gettext - sys-devel/mold - $(llvm_gen_dep ' - llvm-core/clang:${LLVM_SLOT}= - llvm-core/llvm:${LLVM_SLOT}= - ') -" - -QA_FLAGS_IGNORED="usr/bin/zedit" - -pkg_setup() { - if tc-is-gcc; then - export CARGO_PROFILE_RELEASE_LTO="true" - elif tc-is-clang; then - export CARGO_PROFILE_RELEASE_LTO="thin" - fi - strip-unsupported-flags - # flags from upstream - export RUSTFLAGS="${RUSTFLAGS} -C symbol-mangling-version=v0 --cfg tokio_unstable -C link-arg=-fuse-ld=mold -C link-args=-Wl,--disable-new-dtags,-rpath,\$ORIGIN/../lib" - # linking error with llvm-18 - export RUSTFLAGS="${RUSTFLAGS} -C link-args=-Wl,-z,nostart-stop-gc" - # fix error in livekit-rust-sdks - export RUSTFLAGS="${RUSTFLAGS} -A unexpected_cfgs" - if use gles; then - export RUSTFLAGS="${RUSTFLAGS} --cfg gles" - fi - llvm-r1_pkg_setup - rust_pkg_setup -} - -src_prepare() { - default - - export APP_CLI="zedit" - export APP_ICON="zed" - export APP_ID="dev.zed.Zed" - export APP_NAME="Zed" - export APP_ARGS="%U" - export DO_STARTUP_NOTIFY="true" - envsubst < "crates/zed/resources/zed.desktop.in" > ${APP_ID}.desktop || die - - # Cargo offline fetch workaround - local CPAL_COMMIT="fd8bc2fd39f1f5fdee5a0690656caff9a26d9d50" - local CPAL_GIT="git = \"https://github.com/zed-industries/cpal\", rev = \"${CPAL_COMMIT}\"" - local CPAL_PATH="path = \"${WORKDIR}/cpal-${CPAL_COMMIT}\"" - - sed -e "s#${CPAL_GIT}#${CPAL_PATH}#" \ - -i "${S}/Cargo.toml" || die "Cargo fetch workaround failed" -} - -src_configure() { - cargo_src_configure --all-features -} - -src_compile() { - export RELEASE_VERSION="${PV}" - export ZED_UPDATE_EXPLANATION='Updates are handled by portage' - if use arm64; then - export LK_CUSTOM_WEBRTC="${WORKDIR}/linux-arm64-release" - elif use amd64; then - export LK_CUSTOM_WEBRTC="${WORKDIR}/linux-x64-release" - fi - cargo_src_compile --package zed --package cli -} - -src_install() { - newbin $(cargo_target_dir)/cli ${APP_CLI} - exeinto "/usr/libexec" - newexe $(cargo_target_dir)/zed zed-editor - - newicon -s 512 crates/zed/resources/app-icon.png zed.png - newicon -s 1024 crates/zed/resources/app-icon@2x.png zed.png - domenu "${S}/${APP_ID}.desktop" -} - -src_test () { - mkdir -p "${HOME}/.config/zed" || die - mkdir -p "${HOME}/.local/share/zed/logs/" || die - - SHELL=/usr/bin/sh RUST_BACKTRACE=full cargo_src_test -vv -} diff --git a/app-emacs/Manifest.gz b/app-emacs/Manifest.gz index 9f5444b4afbcc1722a7aef126b4bc023db6f9890..1b7212e95d9879305f405391285b0993b8b2a0e6 100644 GIT binary patch delta 52356 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
1>|^D0*84>W%|A#5pb>FrI+J93ai@xpblbnXF; zz|=XHx05`xMioa~Dwz{VuE^-HKSBmp*5KVuq}j`qysK{OP!}mgoL&I48q{#5ceRR| zDqes5!>e@NRiX~JI*o4RcStAq9=PVOEm}?AIfDp8Og3fqVy~saqz*BXT9<3#(hl$c z-r3ieKfXE6KYoAt{O7k1=39@6SWXH+PEnz_tRGGx#B>E}btR@ksRtjXgf+CecMEB* ztBh;yFCV3-2n$<3R4`XWQwMZs#7M?mI>&#?$?R8CY#;+(50D?PyDrncw=|Ho<{*^C zNvO`(d7u`>6BR)xLwu0CTDm)KI&jo2%vVmMwo> zl7Q~vR=N_koGg(y{{=77+|9`)z(!kPIVBD~@Pw4Qwz5U7)jegxluAD9_7RWBLrO&E z@o0$?`cebipE_fxvP-}i-@y(S>}XoNI|yFgLD%fQySEeVz@IJ@k1d1qRCvj@0*)Lu z{ysIA`H&-5%ec{GrT6^3Z4h8cG&FzIw*9l_^V&bXeAJzMOsAxE3x)zr4h4kifGN*( zJLN3yuKEHji@V+C8v!CH;dAPnM;zh26>}+EGRMfpQI(bGt457l2UPX*^_+x*pG}1UBR7n8k19x3SD*JK`44}(o#o1H zse2}sq&PJW>gh@8n!rBo+FQaRQV8*<8Tv@GDQfk%xCc&vzI0Y&{Vo zX+0Rq1|*ppIM-4YM^fJyy3!o8SG(y}DvBt_i(V!md9Q|=>!H#4`en2qJ4g?C^f@=X zvMQO{QwINPr%Svf73pwsD1NZTrO~7SgS&fH^2263w@ZFFM6qCa0EtX#wL`5Hr#Of+gNK#AM==ns9L;sE%?s&!tv^6X>3tCP6ZnNujM z0UeC6JN6;sii#%4#+$u050V3aD z*WdNWQuX;LRgX2u&i5m{DB5dvY*cL{^q@FkJ-187EfYnSrs~;rHIfOPoW`AREYi_C z8J_9N22XZLNh|P5xzA9ilHk?03%D3uk)ZBsF(^gxcECWvu)`8`<#a$IDJ4>F)x4_x zB=w$yf}8|ZeS?4a6omLC_6&@?rVatHvB|M5!3@sxfC34Yys!PJE{t4Ot#$gjyJKzH zm(Ns0-8}JAzmPO?V6SzHb|$T8wifN7uf4 zDhX3bvAeoO`*2w4QnammtN>Jne9Nsqmuls%=jo|8msoHr5O*ha+x6f%raGDD#sPLg z8?ph-_v|@0cs&Kj{;vP62L5c9Ehqt?1W#VwFPG6M0h)iW`TAUSerPgl5qJfneQq0x zU1ub_IQ+dH3L&bei5M3_9MzdQb;kmS;nc!`-{YYtGPzLC@pO24iFS{@+1pWG0v;kb zw}qq}?o_8I4Q}=EPAav-t>Nal@)DB8XTD7#@^66)#9tOWKy%!^HZ3~!9UxPvR(i&D zx|R8mK!AUDRR5@#_r`T&OTpY|ovw>3?wfon%b59HL=u~X>2WpxnV;LYFQ0!9o!lQt zpCh1YdVwc!6?gp>lp2^lS?3`W5$mINihNSjvyz~H|8|!c3YvRzc!$fkMQ2G8NO`PI zfntqw15#{V;g;c;Hy^vm#GnRwFID2h4?Q_eM!&w)%oOhf{|XC6RPd852lRx{dD@P+Jl5PvG7%~8ECJD6cpRy(fU#GW!ya#Kr!V?B7&yh=GocaZuV2f&CQw~B9yprvQB zAza8iGKUZsSYY>CN(xrMbCJPZUTQ7O=BYOhcsi+V5sV?x6!q&y>#oJ)rkWV zr%L(c?Q4x_M7J)N!(r(qYm%~St8^W!eascQn`HZqdE2Ips_v@4%$?t~6C-C>`ypnu zGMD)tCs!?4U_1YFKBq<)4!YX^h)Z>_T5@u=iFe-Cyv$NeFPdH7%NV=e%SiU%Hro%m Rfq16;+rQ|rq{b*N0stT!{f7Vm delta 52352 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 diff --git a/app-emacs/ghub/Manifest b/app-emacs/ghub/Manifest index e4c3ec5a2824..963ba3e9079b 100644 --- a/app-emacs/ghub/Manifest +++ b/app-emacs/ghub/Manifest @@ -1,4 +1,6 @@ AUX 50ghub-gentoo.el 124 BLAKE2B 84170098bd01bb9f165eaf06f7cb21c56d2caaf964d2658520311757845d053072a7704fcb90cce2a2dfbd2385f357d2e7569061ebe0ca41b575efd752d29fd8 SHA512 596c7e75560f3734b57525bdfb42f3985fb49ab4d86637231361f6673d2431c0a6e73f91f58f003f9027f1143b9be3f4330ef2e1ff6c627ca6057256f4afbfca DIST ghub-4.2.0.tar.gz 61058 BLAKE2B 055edcd4deaa068874ca896027bd752fac099a355f0b19be6bae75c8b1eaffe43206e5ab92cddaa35103040d2eb5533034bccff494e7c364382c164d5f6a1735 SHA512 530a19bbbd3d7dfb9f1289f0a1273f08f741f87a4009db0ffc08a4ec1fa7f1d1c3468692277f494334d21b869730d10abf7005f7cfeb50b76df9ab4a3f3d7328 +DIST ghub-4.2.1.tar.gz 61132 BLAKE2B 238c66d08bb50ad81c67ff2032a73fa5c0881fe1862f334703889b332cd1daeec477a57742c2955013daee440b38fae6fd2ba40549583b56e5f49bc6313b6251 SHA512 25bd86eeea0ad9923df519f34d69473b08a8534b1a7edaa12513d692711b37d8116e842b565c02ee4eab021bccebbfd569f764e82263a167d83de5b803a15bd9 EBUILD ghub-4.2.0.ebuild 783 BLAKE2B 1b43f2572a4fb3b565c4b3f22ada9a0072136f6ac4ba0349d98c6429e72b5a154ab1b5bd3a65c4c6369df9a54fd1581074476f123de9fbb7d1f5c603a4e3ae65 SHA512 ff3e06ed05d8f36cca2e37082f452c780b6ef79b29f4cb8d8fba626ce7140cea280b16ca0174ca50dcf846333aea0fd8221f5d6e5f45587e59443e08f18480e6 +EBUILD ghub-4.2.1.ebuild 815 BLAKE2B 66042a40c4fc0d4484f9c473e0a8e9cd8b8f08ab1edcd398b157aceb11cce767d22cba52cb198d0481887e5a8f849a95b4587c4221c521f05b271556c1211a62 SHA512 39b194938cb3a2b2d90feab7a7a17fe69282a0c2dc1188e54d5e9fd8b1c4457ad55256eb3d871b610db80b8410128f23a54eac9d9ab14918d7b933e25434bb9e MISC metadata.xml 1297 BLAKE2B 76a67936c0754ffeba3ca47551417bea6a0996c5197977b2dce2c73bf7acbe421f0c7ac0f8415b529f1ee3109868bc5306d7e714a58f3faec549ddd575cc82b1 SHA512 8cb4ebebcce9526416253b528bd8e2865311a796f10cc176b7d87d0fd06b573a9d7dc094cf3c2ccb916eccffb69dd5a164ad64c8f0310727147bea3804aa79de diff --git a/app-emacs/ghub/ghub-4.2.1.ebuild b/app-emacs/ghub/ghub-4.2.1.ebuild new file mode 100644 index 000000000000..e61ed8cc3d47 --- /dev/null +++ b/app-emacs/ghub/ghub-4.2.1.ebuild @@ -0,0 +1,46 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +NEED_EMACS="29.1" + +inherit elisp + +DESCRIPTION="Minuscule client library for the Git forge APIs" +HOMEPAGE="https://magit.vc/manual/ghub/ + https://github.com/magit/ghub/" + +if [[ "${PV}" == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/magit/${PN}.git" +else + SRC_URI="https://github.com/magit/${PN}/archive/v${PV}.tar.gz + -> ${P}.tar.gz" + + KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +fi + +LICENSE="GPL-3+" +SLOT="0" + +RDEPEND=" + >=app-emacs/compat-30.0.2.0 + app-emacs/llama + app-emacs/treepy +" +BDEPEND=" + ${RDEPEND} + sys-apps/texinfo +" + +DOCS=( README.org ) +ELISP_TEXINFO="docs/ghub.texi" +SITEFILE="50${PN}-gentoo.el" + +src_prepare() { + mv ./lisp/*.el . || die + + elisp_src_prepare +} diff --git a/app-emacs/multiple-cursors/Manifest b/app-emacs/multiple-cursors/Manifest index b47fde805200..c28e6e4326ac 100644 --- a/app-emacs/multiple-cursors/Manifest +++ b/app-emacs/multiple-cursors/Manifest @@ -1,4 +1,6 @@ AUX 50multiple-cursors-gentoo.el 80 BLAKE2B 90614e49e4e09b48bc2e34a9f7f2a33fdf3090ede9af2f48d297a88c9531031b4aa73213659780f3b1de49d18da7c35f5c78a9ec4393d85cd92c607f781d89ac SHA512 3c5a03d2cd864fdaa43bdbce47884b189abac77ba99cf57cfe2a6bc2c65cf3f32d45739832ec30613d884a01a08547cb80a028eb6b9a93329ea690ef57230fa7 DIST multiple-cursors-1.4.0.tar.gz 30152 BLAKE2B a63c09afb464cd208296e359f59babbc9c9fdace1d5261386bac4ab44f7896bfe2eae869e49c2c094b80af453bd50936c7feeb42e530536d148154c879ece90c SHA512 070121365380db3dc77749ab6f0da2f034a979cacc07a11e805f1da81ae70fccff1abb4a0353fa30670b3a8d686ebd25e501d13fcc42d765f5c015a83c62146f +DIST multiple-cursors-1.5.0.gh.tar.gz 33275 BLAKE2B 6d373bb59fdcc5cadd437f314b205f3817b98335806ac2e81c5c4a4462627678624eb9d8b4a8728876d074b9426e9bf3c37918d1c95a07c9a95cd92527c18283 SHA512 05ec6c4e8b9cb008c7afe1418d136915da2cc994b845e996a4285a71c8708094a3d9ada95fc39eed8790991e8edc51802119d8d0965a05611a527cc45cf6e30e EBUILD multiple-cursors-1.4.0.ebuild 501 BLAKE2B 40a320a6a07121c5c066217ea8df04ba25a09ad82b0aee14d4011401395f3c2fd64d57479d28ed9d57851f1bdab0e2883ec5a872aeb478103e828a83e512d717 SHA512 f81a1935720abe40297b0c5513139eff830e4c4b5fc4763b23aafe7c2289444f8c319737678eaa2d97b4b1c6f45cd7158588d7ce9486e87121de933456e80fdb +EBUILD multiple-cursors-1.5.0.ebuild 626 BLAKE2B ea73560e1b2a917a830ffd8d3e60cc2746ff2489a07211d40a937496a0babf0af06cc4ae3e9be753ce3c0f24bb250341fc138e0daa15545d85675c3c73b9d222 SHA512 f76097d77a3bd9ab3369d70fa9fdf513fc8a4d515a886314c2ee21624016e62b5443666fbb86d8f415471bc89edb0e345b7301d3f080790d030ddfdff67277bf MISC metadata.xml 373 BLAKE2B b5d266425e4e353fe78d9b7034cfafcb964d92ab89ce56c01557fcdd0eed952f94ed177cc0df698df71b15347b20d55ccb8ff7b41d190dd82962bcc2d0275003 SHA512 27837e745fb6a7641b33e0fda697a08439a7bd66d6128c08b1e4d44b4af3cb8bc5d62938d416a2cc36d9f2f3306dd2bf35f0695e206522c3c95ebb68ad5e404f diff --git a/app-emacs/multiple-cursors/multiple-cursors-1.5.0.ebuild b/app-emacs/multiple-cursors/multiple-cursors-1.5.0.ebuild new file mode 100644 index 000000000000..449f733be01c --- /dev/null +++ b/app-emacs/multiple-cursors/multiple-cursors-1.5.0.ebuild @@ -0,0 +1,32 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit elisp + +DESCRIPTION="Multiple cursors for Emacs" +HOMEPAGE="https://github.com/magnars/multiple-cursors.el/" + +if [[ "${PV}" == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/magnars/${PN}.el" +else + SRC_URI="https://github.com/magnars/${PN}.el/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz" + S="${WORKDIR}/${PN}.el-${PV}" + + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="GPL-3+" +SLOT="0" + +DOCS=( README.md ) +SITEFILE="50${PN}-gentoo.el" + +src_compile() { + elisp-compile *.el + elisp-make-autoload-file +} diff --git a/app-emacs/nxml-libvirt-schemas/Manifest b/app-emacs/nxml-libvirt-schemas/Manifest index fd86616f750c..89c036675c72 100644 --- a/app-emacs/nxml-libvirt-schemas/Manifest +++ b/app-emacs/nxml-libvirt-schemas/Manifest @@ -1,23 +1,17 @@ AUX 60nxml-libvirt-schemas-gentoo.el 222 BLAKE2B 8d4edcb335df7cc4aa193f1587fc048290772d5413f972f88f250e36c4f229788a50a8b6ae6845780db1e9952148a98caeb4c2197a63b47517a0044cbd294e91 SHA512 3b2cbd5d2024e46d0f25bf58b65c29b837b337a5b781628e1064598744d52540a1e261461ee3552fe868a0e7d1a6c2c0d94ac7f5c000ba43c7896577e4a6a790 AUX schemas.xml 560 BLAKE2B 32f01d2dd047aa7109112b47155a21825686385845fae2af0f6d052dbd36f3e1ca5027ec39d654735e390ef9aa8a31f7ae5c86b15b0cd9c4ef84128326e87ee9 SHA512 82ef6189610fc4e1a0d5546ae15f2f315e7c0d460fa141201c43a93e59d147613c7186302fdc3e6b2f0ec5c343e5566966892d4e9f55dc4957e4ad58793fc3ff -DIST libvirt-10.0.0.tar.xz 9395076 BLAKE2B bfbea7805a949999481293a31e52a5511bcf86db2c96486cbc3b9cb776719ec973b1208cfcb4a8ae2c9220d1d68053980eaf68893f7919c3ef354efbd1abf642 SHA512 4ab28539ff0e9a78ac231b11b4ec88b91d76ff2607cabd0226f04aaece73b05cab4aa9cfcf05073cd257ea270a377cd5d2cb915971583dbec04dadf2cf7ad252 -DIST libvirt-10.1.0.tar.xz 9444244 BLAKE2B bfdce9d067e3a319b81d867d27f1a6b4e724ab6aaa25d19d7383c9be26ad7dc92b3c0aaa92894b772f09e20c3c2eb0ea0a8707feee4c63be58578fa22854305f SHA512 08e73ae15de5681430b62db85ec9901242dca5e9a4ca9685614f4a67092c6e28f27f9187144b3ceb18ad6b40e6eb1a90b1a4b056b0888724d04a62002ee2bc48 DIST libvirt-10.10.0.tar.xz 9673792 BLAKE2B 8042ce1493c3ffd6e6deeb7d94d0744da18850fe416480487a57ffd33bf3390f587849f308aad12fd38c887628f90137ba717ea11ef7e0f73a97b157fa985a6e SHA512 b4e8a5f7d5c15387e5f3e82ac9661feb6e89c6b3b13d869bca63d9686e1e1e8d193a1fc84a19a09b3da1c868837ee76d1b3964a6e5f7ad5d669449b0a6aa4b53 DIST libvirt-10.2.0.tar.xz 9466588 BLAKE2B 7ee6f4bdbb6a22f1b3c5c0326d41e269e8a5a07e41bc4f9a17fd023f3e33e46735066656dffa3004e1f36d46324270351593c89f60106933042e8a19a2aa64e6 SHA512 65faf2346e66bdba606ba99b9e4da2be8bd94ef42ac49c2801f9e9253ceea10f5fe772d5c7ada59f48aa34ff528726719b690c3acfd3e63a5c3580db17b023ae DIST libvirt-10.3.0.tar.xz 9476852 BLAKE2B 8c47840113904d72aeb1e9bf900a99a8b0e3d41391c9a8fee4277f2793f18fefc50d113e8cbea52dedfd03b93f430416bcd25fe90ee6820c95ac6f468b84212f SHA512 dd2b151a19877e57e11b582b1c11542319f8b7b7cd3d7d51304442aa7d5eb1a8490d2887d340191c3ecc561320ea453773763083364579de0a40ada9c244fc59 DIST libvirt-10.5.0.tar.xz 9530296 BLAKE2B 59b6b114e6d4c4752839775ec22b17f530ac86f0252647b312b7f98e9ba856d949727eed5cb47b6b92589e2ce2587fe02505d6653a4e7ba3a3685b5c81a8ebc0 SHA512 e4976849cff7bdae0b7fda0644490f0ca743efc11c35a2fae45bb0f6f467b85644c1d04d1f3d1b10affdc6d9b8dcc0a3c255e527e0bdd73cdd4d1c81d5c418e7 DIST libvirt-10.6.0.tar.xz 9481992 BLAKE2B 68d88ba7f6d5f74d6ad8753a7716902596338811e9c02b09ba6fbdcc60936abf9509bf5cc300446240fa5dd5d2f779c319bca0a22eadea32b49a758b71524857 SHA512 edec79e89669d5e9a46be35e0d6334a6ed3bbf32426679549bd998bde24cba52b0378843f41a3abb5d781ad53e2a6a54619a0bad3f168c11fb41736cc6af6568 DIST libvirt-10.8.0.tar.xz 9575348 BLAKE2B fb7d7b6d8a158c0045bb7fae4080cf8d58f8ff36cc2b99cdedcbc88397abf180de94931b3c114463fb717fb33bf16d67ea9b29ae77a673d4e1ca8ba94f195652 SHA512 4979565015d69d078e532944d1d1cdfbb28e2d5625168a80f7b56a323949cf6072c4b8cfb96b92dbae263ee166d1c514651455389f33c90d04cc615865009eee -DIST libvirt-9.8.0.tar.xz 9307064 BLAKE2B aae47e8d4eeaf97532a0356de23ed5a9eea71b369d025eda95b5fd74576779eb4b843d05df6c87b79a14f218c341953749e319ee7244846a2db410a74a746880 SHA512 0118725073de33eec3fa3e4616d3154707f9828fdb9ec973f503fe68f18eab72b9704da660f281152630ddc95e605c786673af9d23dc9bdfc0108422e0efbd41 -DIST libvirt-9.9.0.tar.xz 9321556 BLAKE2B 21eae5a95feaf7f5c6ba8dd48732c08212904882a11c48eccfa827d85ddc3df7e064503f21710dbe1b678670e02f003674de915a43a7403fbf85685c4832e21d SHA512 77cea28acf4f3e8c92fbd5bd72ad084be183c07f14e3a9ce35d6d9d62d36ee97a30cef55fb204b3e43f282890ecd7d5827a784a517e7f4ed8b22ee502c3f09d7 -EBUILD nxml-libvirt-schemas-10.0.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 -EBUILD nxml-libvirt-schemas-10.1.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 +DIST libvirt-11.0.0.tar.xz 9700388 BLAKE2B 0fc248bfcc505e143fa56560a216ed62ddeb8f8def5eaf32772bc5f0c1ca87f92dc530d9290f6349dc8727590f6148ffb6627e119f1e89fb0e151f1e6346b645 SHA512 ac5fd17d3f488c241017d967364e0441373e9ab0457dab1acfe84fd0b90353dc5d185cc7fcd2b0d7995af4137a3fa18371abb5511686456a9e720f7ec7829da9 EBUILD nxml-libvirt-schemas-10.10.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 EBUILD nxml-libvirt-schemas-10.2.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 EBUILD nxml-libvirt-schemas-10.3.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 EBUILD nxml-libvirt-schemas-10.5.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 EBUILD nxml-libvirt-schemas-10.6.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 EBUILD nxml-libvirt-schemas-10.8.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 -EBUILD nxml-libvirt-schemas-9.8.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 -EBUILD nxml-libvirt-schemas-9.9.0.ebuild 1120 BLAKE2B e54c9f17c66380ec0a2b600abed0f7f33890d201e61cb774c5dbef25c20e218f1ec81b7c8253aac0528b5b771ade0c059c1f65379e4d2b48adbf1774889f8c27 SHA512 79c2304a14cf1ca922c9d9cebbfbb512ac4fd682eecc00c0a51383f1083506fed03f979d44c2da9ad17a5608becf9858c3acf8d69eb7682047315dca128b0089 +EBUILD nxml-libvirt-schemas-11.0.0.ebuild 1120 BLAKE2B 725f6b38d4e91e2abb2b62516da9629682698f38b4bcff63877ec57a5f030bb58ed8e36c7503451dbcb20c339d85c2f34927f12c85f140a94eb34d9aad61a030 SHA512 3a9b0169ade84e4501dbb02ebd346cd422bb273fe9ebc5e060ed37348e1cd66c006cc4a7b68c2be90fa8f57841b774acd5c25417870d8009b726e3cc850a1107 MISC metadata.xml 390 BLAKE2B 05bd110c71244cf02d22bcf823d3285e73bdb03f3bb06b8c9e2c13cd346f2367380345747d5eb0861f37983be970dc6c9fe5e7d93b422205a7b447dc3330852e SHA512 bb803aed730418caf43baf132b989963e84f5e0e0d8db915a48cae407f20fb52e27c147725cac88fc94303db070f300a7ce3bf6c18e7dc66dec37bf9ccea5f5b diff --git a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.0.0.ebuild b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.0.0.ebuild deleted file mode 100644 index 6c2585fb80d3..000000000000 --- a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.0.0.ebuild +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Packages which get releases together: -# app-emacs/nxml-libvirt-schemas -# dev-python/libvirt-python -# dev-perl/Sys-Virt -# app-emulation/libvirt -# Please bump them together! - -inherit elisp - -MY_P="libvirt-${PV}" -DESCRIPTION="Extension for nxml-mode with libvirt schemas" -HOMEPAGE="https://www.libvirt.org/" -SRC_URI="https://download.libvirt.org/${MY_P}.tar.xz" -S="${WORKDIR}/${MY_P%-rc*}/src/conf/schemas" - -# This is the license of the package, but the schema files are -# provided without license, maybe it's bad. -LICENSE="LGPL-2.1+" -SLOT="0" -KEYWORDS="~amd64" - -# Yes this requires Java, but I'd rather not repackage this, if you -# know something better in C, I'll be glad to use that. -BDEPEND="app-text/trang" - -SITEFILE="60${PN}-gentoo.el" - -src_compile() { - emake -f - <<'EOF' -all: $(patsubst %.rng,%.rnc,$(wildcard *.rng)) -%.rnc: %.rng - trang -I rng -O rnc $< $@ -EOF -} - -src_install() { - insinto "${SITEETC}/${PN}" - doins "${FILESDIR}"/schemas.xml *.rnc - elisp-site-file-install "${FILESDIR}/${SITEFILE}" -} diff --git a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.1.0.ebuild b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.1.0.ebuild deleted file mode 100644 index 6c2585fb80d3..000000000000 --- a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-10.1.0.ebuild +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Packages which get releases together: -# app-emacs/nxml-libvirt-schemas -# dev-python/libvirt-python -# dev-perl/Sys-Virt -# app-emulation/libvirt -# Please bump them together! - -inherit elisp - -MY_P="libvirt-${PV}" -DESCRIPTION="Extension for nxml-mode with libvirt schemas" -HOMEPAGE="https://www.libvirt.org/" -SRC_URI="https://download.libvirt.org/${MY_P}.tar.xz" -S="${WORKDIR}/${MY_P%-rc*}/src/conf/schemas" - -# This is the license of the package, but the schema files are -# provided without license, maybe it's bad. -LICENSE="LGPL-2.1+" -SLOT="0" -KEYWORDS="~amd64" - -# Yes this requires Java, but I'd rather not repackage this, if you -# know something better in C, I'll be glad to use that. -BDEPEND="app-text/trang" - -SITEFILE="60${PN}-gentoo.el" - -src_compile() { - emake -f - <<'EOF' -all: $(patsubst %.rng,%.rnc,$(wildcard *.rng)) -%.rnc: %.rng - trang -I rng -O rnc $< $@ -EOF -} - -src_install() { - insinto "${SITEETC}/${PN}" - doins "${FILESDIR}"/schemas.xml *.rnc - elisp-site-file-install "${FILESDIR}/${SITEFILE}" -} diff --git a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-11.0.0.ebuild b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-11.0.0.ebuild new file mode 100644 index 000000000000..a08694d1726a --- /dev/null +++ b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-11.0.0.ebuild @@ -0,0 +1,45 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Packages which get releases together: +# app-emacs/nxml-libvirt-schemas +# dev-python/libvirt-python +# dev-perl/Sys-Virt +# app-emulation/libvirt +# Please bump them together! + +inherit elisp + +MY_P="libvirt-${PV}" +DESCRIPTION="Extension for nxml-mode with libvirt schemas" +HOMEPAGE="https://www.libvirt.org/" +SRC_URI="https://download.libvirt.org/${MY_P}.tar.xz" +S="${WORKDIR}/${MY_P%-rc*}/src/conf/schemas" + +# This is the license of the package, but the schema files are +# provided without license, maybe it's bad. +LICENSE="LGPL-2.1+" +SLOT="0" +KEYWORDS="~amd64" + +# Yes this requires Java, but I'd rather not repackage this, if you +# know something better in C, I'll be glad to use that. +BDEPEND="app-text/trang" + +SITEFILE="60${PN}-gentoo.el" + +src_compile() { + emake -f - <<'EOF' +all: $(patsubst %.rng,%.rnc,$(wildcard *.rng)) +%.rnc: %.rng + trang -I rng -O rnc $< $@ +EOF +} + +src_install() { + insinto "${SITEETC}/${PN}" + doins "${FILESDIR}"/schemas.xml *.rnc + elisp-site-file-install "${FILESDIR}/${SITEFILE}" +} diff --git a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.8.0.ebuild b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.8.0.ebuild deleted file mode 100644 index 6c2585fb80d3..000000000000 --- a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.8.0.ebuild +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Packages which get releases together: -# app-emacs/nxml-libvirt-schemas -# dev-python/libvirt-python -# dev-perl/Sys-Virt -# app-emulation/libvirt -# Please bump them together! - -inherit elisp - -MY_P="libvirt-${PV}" -DESCRIPTION="Extension for nxml-mode with libvirt schemas" -HOMEPAGE="https://www.libvirt.org/" -SRC_URI="https://download.libvirt.org/${MY_P}.tar.xz" -S="${WORKDIR}/${MY_P%-rc*}/src/conf/schemas" - -# This is the license of the package, but the schema files are -# provided without license, maybe it's bad. -LICENSE="LGPL-2.1+" -SLOT="0" -KEYWORDS="~amd64" - -# Yes this requires Java, but I'd rather not repackage this, if you -# know something better in C, I'll be glad to use that. -BDEPEND="app-text/trang" - -SITEFILE="60${PN}-gentoo.el" - -src_compile() { - emake -f - <<'EOF' -all: $(patsubst %.rng,%.rnc,$(wildcard *.rng)) -%.rnc: %.rng - trang -I rng -O rnc $< $@ -EOF -} - -src_install() { - insinto "${SITEETC}/${PN}" - doins "${FILESDIR}"/schemas.xml *.rnc - elisp-site-file-install "${FILESDIR}/${SITEFILE}" -} diff --git a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.9.0.ebuild b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.9.0.ebuild deleted file mode 100644 index 6c2585fb80d3..000000000000 --- a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-9.9.0.ebuild +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Packages which get releases together: -# app-emacs/nxml-libvirt-schemas -# dev-python/libvirt-python -# dev-perl/Sys-Virt -# app-emulation/libvirt -# Please bump them together! - -inherit elisp - -MY_P="libvirt-${PV}" -DESCRIPTION="Extension for nxml-mode with libvirt schemas" -HOMEPAGE="https://www.libvirt.org/" -SRC_URI="https://download.libvirt.org/${MY_P}.tar.xz" -S="${WORKDIR}/${MY_P%-rc*}/src/conf/schemas" - -# This is the license of the package, but the schema files are -# provided without license, maybe it's bad. -LICENSE="LGPL-2.1+" -SLOT="0" -KEYWORDS="~amd64" - -# Yes this requires Java, but I'd rather not repackage this, if you -# know something better in C, I'll be glad to use that. -BDEPEND="app-text/trang" - -SITEFILE="60${PN}-gentoo.el" - -src_compile() { - emake -f - <<'EOF' -all: $(patsubst %.rng,%.rnc,$(wildcard *.rng)) -%.rnc: %.rng - trang -I rng -O rnc $< $@ -EOF -} - -src_install() { - insinto "${SITEETC}/${PN}" - doins "${FILESDIR}"/schemas.xml *.rnc - elisp-site-file-install "${FILESDIR}/${SITEFILE}" -} diff --git a/app-emacs/parsebib/Manifest b/app-emacs/parsebib/Manifest index f5f6cb12beb9..d22371d3be57 100644 --- a/app-emacs/parsebib/Manifest +++ b/app-emacs/parsebib/Manifest @@ -1,3 +1,5 @@ DIST parsebib-6.4.gh.tar.gz 29833 BLAKE2B a7ab75df71adb991aa7b58729a54a9169e84de0d435b7a6ed23cd2b48df31cbf798dca996c0c9ff0964057296e0086fe4df6846b225786b893a0e0ccf7f7916f SHA512 ef54f99da612f1514af17a8e673d2dabfdf091c24b759f2fc09f398faadaf35713ddafffb5aa76ba1aad8ddbeb43571c426bfb07df9d27e197601adfcf39c8e7 +DIST parsebib-6.6.gh.tar.gz 30312 BLAKE2B 254087508b80d412ace54511993deec874c141b971eb82c978de15d590ba3d82d056a2d98010c404eb0089f72aa2de6baf524143e741c98b61cf0a07ede3337d SHA512 b622dc8fdc664dae64ce86935d2f84e12e7e4bf6a1f57890277ed38659b0b7d083efebb18fa09914afe308cb6dbb6ae49ddc09b4f161b7ad9b7cfb2b5791cd9b EBUILD parsebib-6.4.ebuild 579 BLAKE2B 3e4ea27e903ebda1182fd2a038748425a9b266c588f2eb92d20c9fb3e5b664e61a9bae66eb773372326204d5b47080888fbcb5dca7b1aa6f21d3aa4c778daa03 SHA512 a151cc194445934d7cb15cafd42f130acab70a949a37e4ee4aa4d2a04de25829282633d227ee5e3a0e094c6af666891daeb3c3f8128c370a8647d70c42037311 +EBUILD parsebib-6.6.ebuild 580 BLAKE2B 34a8d23bbaf363adfad2934847ae29d8861c6034849e5414832ec90d8132d2c42981bcea78c7b10aac3e2543b76a82bbc9aed7295f5565eec9a75822f40f30ab SHA512 919cbbbbc19a6e5f7cb887c956424bc952cc0996080112d6ac96f181acecf7b2d5fff1d2d9d974d609ba295a5b1555f2099956cb26cb0983a12ae43ad924de3f MISC metadata.xml 627 BLAKE2B c720728d95d1210afc6015d7472134e9078fbc67f591e4991dd34a780c49c8b30c1dec30c6ce57d81034f71895aafb8637c8181d7cdc9e13819ecceea919cc98 SHA512 a991dcfa3ddc97afc341228c4483c888de999eb79f67cb174e12a8d9725da58468c6e1330d8f5e2ef7e947e108e6eba1edba4fceca7955793b6d8a0c223d1f4a diff --git a/app-emacs/parsebib/parsebib-6.6.ebuild b/app-emacs/parsebib/parsebib-6.6.ebuild new file mode 100644 index 000000000000..824632b28588 --- /dev/null +++ b/app-emacs/parsebib/parsebib-6.6.ebuild @@ -0,0 +1,28 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit elisp + +DESCRIPTION="Emacs Lisp library for reading .bib files" +HOMEPAGE="https://github.com/joostkremers/parsebib/" + +if [[ "${PV}" == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/joostkremers/${PN}.git" +else + SRC_URI="https://github.com/joostkremers/${PN}/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz" + + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="BSD" +SLOT="0" + +DOCS=( README.md ) +SITEFILE="50${PN}-gentoo.el" + +elisp-enable-tests ert-runner test diff --git a/app-emulation/86Box/86Box-4.2.1-r1.ebuild b/app-emulation/86Box/86Box-4.2.1-r1.ebuild new file mode 100644 index 000000000000..d31e28f23805 --- /dev/null +++ b/app-emulation/86Box/86Box-4.2.1-r1.ebuild @@ -0,0 +1,75 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic + +DESCRIPTION="Emulator of x86-based machines based on PCem" +HOMEPAGE="https://github.com/86Box/86Box" +SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64" +IUSE="experimental +fluidsynth +munt new-dynarec +openal +qt6 +threads vde" + +DEPEND=" + app-emulation/faudio + dev-libs/libevdev + media-libs/freetype:2= + media-libs/libpng:= + media-libs/libsdl2 + media-libs/openal + media-libs/rtmidi + net-libs/libslirp + sys-libs/zlib + qt6? ( x11-libs/libXi ) + vde? ( net-misc/vde ) +" + +RDEPEND=" + ${DEPEND} + fluidsynth? ( media-sound/fluidsynth ) + munt? ( media-libs/munt-mt32emu ) + openal? ( media-libs/openal ) + qt6? ( + dev-qt/qtbase:6[gui,network,opengl,widgets] + dev-qt/qttranslations:6 + kde-frameworks/extra-cmake-modules + ) +" + +BDEPEND="virtual/pkgconfig" + +src_configure() { + # LTO needs to be filtered + # See https://bugs.gentoo.org/854507 + filter-lto + append-flags -fno-strict-aliasing + + local mycmakeargs=( + -DCPPTHREADS="$(usex threads)" + -DDEV_BRANCH="$(usex experimental)" + -DDYNAREC="ON" + -DMUNT_EXTERNAL="$(usex munt)" + -DFLUIDSYNTH="$(usex fluidsynth)" + -DMINITRACE="OFF" + -DMUNT="$(usex munt)" + -DNEW_DYNAREC="$(usex new-dynarec)" + -DOPENAL="$(usex openal)" + -DPREFER_STATIC="OFF" + -DRTMIDI="ON" + -DQT="$(usex qt6)" + -DRELEASE="ON" + $(usex qt6 '-DUSE_QT6=ON' '') + -DHAS_VDE="$(usex vde "${EPREFIX}/usr/$(get_libdir)/libvdeplug.so" "HAS_VDE-NOTFOUND")" + ) + + cmake_src_configure +} + +pkg_postinst() { + elog "In order to use 86Box, you will need some roms for various emulated systems." + elog "See https://github.com/86Box/roms for more information." +} diff --git a/app-emulation/86Box/86Box-4.2.1.ebuild b/app-emulation/86Box/86Box-4.2.1.ebuild deleted file mode 100644 index 1be46ab052ba..000000000000 --- a/app-emulation/86Box/86Box-4.2.1.ebuild +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake flag-o-matic - -DESCRIPTION="Emulator of x86-based machines based on PCem" -HOMEPAGE="https://github.com/86Box/86Box" -SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="GPL-2+" -SLOT="0" -KEYWORDS="~amd64" -IUSE="experimental +fluidsynth +munt new-dynarec +openal +qt6 +threads" - -DEPEND=" - app-emulation/faudio - dev-libs/libevdev - media-libs/freetype:2= - media-libs/libpng:= - media-libs/libsdl2 - media-libs/openal - media-libs/rtmidi - net-libs/libslirp - sys-libs/zlib - qt6? ( x11-libs/libXi ) -" - -RDEPEND=" - ${DEPEND} - fluidsynth? ( media-sound/fluidsynth ) - munt? ( media-libs/munt-mt32emu ) - openal? ( media-libs/openal ) - qt6? ( - dev-qt/qtbase:6[gui,network,opengl,widgets] - dev-qt/qttranslations:6 - kde-frameworks/extra-cmake-modules - ) -" - -BDEPEND="virtual/pkgconfig" - -src_configure() { - # LTO needs to be filtered - # See https://bugs.gentoo.org/854507 - filter-lto - append-flags -fno-strict-aliasing - - local mycmakeargs=( - -DCPPTHREADS="$(usex threads)" - -DDEV_BRANCH="$(usex experimental)" - -DDYNAREC="ON" - -DMUNT_EXTERNAL="$(usex munt)" - -DFLUIDSYNTH="$(usex fluidsynth)" - -DMINITRACE="OFF" - -DMUNT="$(usex munt)" - -DNEW_DYNAREC="$(usex new-dynarec)" - -DOPENAL="$(usex openal)" - -DPREFER_STATIC="OFF" - -DRTMIDI="ON" - -DQT="$(usex qt6)" - -DRELEASE="ON" - $(usex qt6 '-DUSE_QT6=ON' '') - ) - - cmake_src_configure -} - -pkg_postinst() { - elog "In order to use 86Box, you will need some roms for various emulated systems." - elog "See https://github.com/86Box/roms for more information." -} diff --git a/app-emulation/86Box/Manifest b/app-emulation/86Box/Manifest index 967c5d24fd61..6e6d611f50eb 100644 --- a/app-emulation/86Box/Manifest +++ b/app-emulation/86Box/Manifest @@ -1,3 +1,3 @@ DIST 86Box-4.2.1.tar.gz 5320110 BLAKE2B cf3379dffcd93f9c317c02b91ba5772a54abcc0e67ca588b22e07d5b221d40db4c0a54dcdd30cd1e2dd46a808393a9e09db917fe9445cbfb56ff9675d4eb35d9 SHA512 ed8e90f68318d163c39202479d654859d4d74b6fdffd47cfcba6b0393965265615aa008b02cfd04ac8cafc2f38cead53ed5d6071cabd4b96eba91ec805c5a2df -EBUILD 86Box-4.2.1.ebuild 1668 BLAKE2B e480357a58eb0f5996abaa3577475387f1f06cb6e05d85f530aadf005198de7d5b4de01b3d5b00edb8b8a4a61418ca29a5ee1229eb6de3b94d1a0e019395c021 SHA512 83bbb5075a3354fcfa228517459779a69087e41d102f7f361be715ea894f1d7fe50f39a3055f9493a2cd498920511d7a6279a3e876ef33f0913aaf3dcdeb2ff0 -MISC metadata.xml 1066 BLAKE2B d5cf35e3d6feca5dbc2aeefe48331941f641195b9d0712df4c3589dedf041397e733b331d832d35099bb26701dd8598b317a8de1a62d955688429d0ffe4a527a SHA512 63909161608115764a28aea61bb1e5e15a34a05a8adaf5a5529d82a5d3f0ea3726340f34178d7c64bfa704b7ff84af4830f636e9536552ccab2050328fc5ee84 +EBUILD 86Box-4.2.1-r1.ebuild 1785 BLAKE2B 168d52fd5f4c7cee8f217ec181fc3971d9f23c133577e67881a40add15de0b5b08a58ee9fa4d6a91d8f4cc48695985929199b9443c2ed7d497dc9d9299c3e32e SHA512 be18c68459caedaa78bfabdc552fb2034c5eeb8d973ec5f2f6baa0182e47af79eb102f9307f60f617a7b3e3fca8a03bb7badeaae76fdfdcaeaac6d6e9b2ad7fb +MISC metadata.xml 1151 BLAKE2B a4725700ce78941f1acd9d0b2b7d06970c55075f021810645d14b064f45a75a40344b65fc8361062fdb419d7759ae99f8105807f1943350893b0703b3e15c30f SHA512 e7a8e220d55217391fab6630eeb0fee23b8d41a487e4be2362f36ff7268139899f11390604a134a2f6037c15bbeadc9f666d91306ddc89c2156f805e0d43fd04 diff --git a/app-emulation/86Box/metadata.xml b/app-emulation/86Box/metadata.xml index 7988953f183d..34264c7eee87 100644 --- a/app-emulation/86Box/metadata.xml +++ b/app-emulation/86Box/metadata.xml @@ -15,6 +15,7 @@ Enable MIDI support through media-sound/fluidsynth. Enable MIDI MT-32 support through media-libs/munt-mt32emu. Enable new dynamic recompiler from PCem 15, which should provide an even better emulation speed. + Enable virtual networking through net-misc/vde. https://github.com/86Box/86Box/issues diff --git a/app-emulation/Manifest.gz b/app-emulation/Manifest.gz index 709f91e15fe4d2b9d911976000879749e5e725f6..c978c437c6cb9d392b1e2366e7780e6243755571 100644 GIT binary patch delta 15237 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 diff --git a/app-emulation/dxvk/Manifest b/app-emulation/dxvk/Manifest index 8a3b05fd8aeb..d731c7efaa95 100644 --- a/app-emulation/dxvk/Manifest +++ b/app-emulation/dxvk/Manifest @@ -14,4 +14,4 @@ EBUILD dxvk-2.4.1.ebuild 6104 BLAKE2B 74a6bd12561ec92336b95aa9b8aa1c7167fa5ce984 EBUILD dxvk-2.5.2.ebuild 6065 BLAKE2B e93f18c43646759f9220da686e014f71fc2f65d22e0edb80456f1ac53334b78599289edc700a97402564285719d75ded9aa3bbd8b0c9c4b908f65afed0b89a37 SHA512 a067fc8c3b09cc67d6aa6c265488e78732b48deb601c3d2a6a26610f391f0c41c9a5bdbddccf8cf7d7688ce933e5e17f4d0bd5f2f47e10f2ba3f99406f8ad44a EBUILD dxvk-2.5.3.ebuild 6065 BLAKE2B 9ea9bab828b43dbea7259959a76364d72e1d0167f8c1a95de7896736487f39551bf8a3ce9f609ec6a70f4440a5838b5b5fb7241aade1f0f1f1a78504fbdcc661 SHA512 1dd7320105a01cdbf25de83538996fd006d1ebd2042e653749f6a1dd8c1f45e616f5220bb6c0a73dfe60022ee041d78d73ac853bb40f1a99a4ae7cdf3dd5f331 EBUILD dxvk-9999.ebuild 5675 BLAKE2B 1a648a3beb76989d2ca6ba95568df20ffaf8499bebfbef49954106c10f3c89ec421f3ddb342d9e540f79e3ee315be53c0bef3f86fffb906ec7a6c754ac43a272 SHA512 c76c11f47704e5a2593abd65d3576555c4a4a96982755d68dc63103d80333a539327c6f2cc0e72c604cfe0d7b5c0a2067f01a12cffa20d65d78d3dcefc595fb2 -MISC metadata.xml 885 BLAKE2B c21b9383a626cfea8b758d171ebbe7180d7a0dc09da611ad5f05b3e877f4051e33544e29c9c5e58fa20143bf724d8d27da9279bcf49e3465a7aa6cb7eeca4eb1 SHA512 3ad1138cbe63473b6da56d73214913e9a3e68d270e1df01fa4202e76a6efe35c6971595660724e30b16db31fba404441bc36b075e2197944a699c436ed60ebb8 +MISC metadata.xml 944 BLAKE2B 804e365c1a6f88001f88c96e0e7cd67d444bee147d764b6c2dff0fb37d836754a2c21a1ea8b505b11c9de93dbc2533e10d0e15dea72b0c05db9d5ada2123a90e SHA512 c7f045fed2ef25fed4094551d0a420fe218d541a678cce4a18fce3d8c090e64dfacbdcce67fcfa202d4c3aeed8911a83b2bf5077e7e13a75aa0e5902d33e4716 diff --git a/app-emulation/dxvk/metadata.xml b/app-emulation/dxvk/metadata.xml index bcd095ee95b9..292ce261879c 100644 --- a/app-emulation/dxvk/metadata.xml +++ b/app-emulation/dxvk/metadata.xml @@ -8,7 +8,8 @@ Use sys-devel/crossdev for the toolchain rather than - dev-util/mingw64-toolchain (requires manual setting up) + dev-util/mingw64-toolchain (requires manual setting up + and is mostly unsupported, try disabling if have issues) Enable support for DirectX 8 (d3d8.dll) Enable support for DirectX 9 (d3d9.dll) diff --git a/app-emulation/libvirt/Manifest b/app-emulation/libvirt/Manifest index 703d2f9e5faa..f098921f5fcd 100644 --- a/app-emulation/libvirt/Manifest +++ b/app-emulation/libvirt/Manifest @@ -1,12 +1,9 @@ AUX README.gentoo-r3 2065 BLAKE2B f3677b916121126c431ba32e324bcc9f04b4dfeef1ee54517cae1118c67274592d890d6d919a48af6709e9220379797549277904a02fea740a69b1bf8f2397aa SHA512 77ede8a3e1a380b334595e65ae148acd2e52d594200253dc67d68dd256db5bf72ce7ce222d067c739ce53f84634421e74726f30c0ab7a1c76b86ccdc191c8a69 -AUX libvirt-10.1.0-Fix-off-by-one-error-in-udevListInterfacesByStatus.patch 1665 BLAKE2B 25c162ca5d33c36e1b97185f3db8517e707a20d8ee2573dfd15f9540af1a2a1d39706ffbc1b6e55be0b7156ca0d146715c9f629add883ff0d89122dd7a9962e4 SHA512 dd5dc696412529a6d004ea03ef75c991fbe7c7be839467e9bf2e8a8b2119275b053b4549e9924907b146e841c4a81e8f1ee2744c7d275c5a4007d80b87e5b1af AUX libvirt-10.10.0-qemu-tpm-do-not-update-profile-name-for-transient-do.patch 2762 BLAKE2B d6ac52810fc746e2317f21f5bfb512960ef5455c2e1960ca0db98157bfae1f747c57cd80eaa5bd3f853b92e0b319eeeb1124956344e6bde1e4e58c0b128084fe SHA512 7c1647de44b76d48a059b9e929360d44c02e8db3e0df7b6a27fa4f7370c696ef511fe8912683cf58ed2cb9df8622788ed99e668336276caa1e9d514684cce3ea -AUX libvirt-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch 9364 BLAKE2B 05ac0aaea8741102a34657b4910569ae5601364bdfd419743900823537f982348ba68cbac37fe10b21c2869531a35d68de8fbeb462c1f66aa0c3af4a97630405 SHA512 72a40984e6de167af8de9aedabdecf79c0f99bb5e7152b6521e87268bf1a1050b9d0d9acbb86c54810029dbde671a518ebd8a3f11590594a3226d818b89188f1 AUX libvirt-10.3.0-vsh-Don-t-init-history-in-cmdComplete.patch 2935 BLAKE2B b3bb5f7f6c21b645f43c2de8c17fe821a12fcd656629bbb44d780f408c5e50f0ee00e0d6bd82a9aba68b4651b711b29170e6989c317bada28edf3aff36cf06ec SHA512 b3421b7972a226660e475616bfc23fffcba825516e14b5267e8410fd178031e848bd7a69128c04f1188c0b75de39e6155cd480649b87a21ab650c2874765ccc7 AUX libvirt-10.5.0-virt-aa-helper-Allow-RO-access-to-usr-share-edk2-ovm.patch 1439 BLAKE2B e5d837f6f7af00fa6b7d3ef94ba0cdcd6120a17c17f52986df451ff2a66a019526f480cdd71592ea89c0629277c751f84b6f79c898d20017d454eda790ce0c66 SHA512 106e029750ed185c823e1759ead99520f628a52a00926cb5a09ee941e4b51cbbdbc91d4b95294eb9225459cb47bbde402b017016ea4ab177b4ba15c2decea90a AUX libvirt-10.7.0-fix-paths-for-apparmor.patch 3902 BLAKE2B 62d7df4963fe57794252549a45b4809581dbd02bc46c51a8c46b21338a72d0e9aea661c527bcf6e0117ea93bab4fe812e97a6b0957f8d8bc957ee170162732ee SHA512 e4cd5577b37b2800da711576696a0c7888c68d0755f820f002451dc4ecd49ce19e0e8759ec16afdb4489647a4b48b4284c1befd3f43e1a53a8871aa6ab1d4833 -AUX libvirt-9.10.0-virxml-include-libxml-xmlsave.h-for-xmlIndentTreeOut.patch 1125 BLAKE2B d161698463c56b9fbb8b4c4a5ec1b7d65e87e088d68ea1a2cde316449c80d9ba2a4ad5883962eb3e4d31b0441917f6b02d4c781869083c47c8eeb432f6826e8b SHA512 d1dbcb9f6e1c66a38fa09af84248c8ac68d1f263f07b275e12ae3087a6fbd223eeefe20c7b241d02be9529c14bcf311d850d418bc8cecac4cb4e225d78800a41 -AUX libvirt-9.4.0-do-not-use-sysconfig.patch 8195 BLAKE2B b731d57dc86fe725d3cbd47b6e691a414107d3594377bd1c73e19735368937a0983e407ec05700213d2ec5802e90f429fd5c7354cd03fb25d3acced952ab6f38 SHA512 2a2e08a6034ed37cafebde3b0fd27913d972d1e9f8816e10a9af951e99f10bd3b9bc7ada1ac50c5085e3fdd3d02301365d031eb6ce3b71102e4b3072d609f21b +AUX libvirt-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch 1001 BLAKE2B 908044c9af1eefeffb52ecbc65cb66663516ed7e654a5e4ea76907ad55e48f76f70fe71e778a0ea48aac6fe613bf6d70e8ac6fb4519acc78d64783bc95439b53 SHA512 7c46700aeae055a15d7757db599b16fc4431893f3f81b58db2d0c9395a54eedca810f2616b327246625d5971801ca18e303ee78b60e65f6aa507bdb0825916ef AUX libvirt-9.4.0-fix_paths_in_libvirt-guests_sh.patch 988 BLAKE2B 5936eafa5c300edad7ed368ec13063d31aea59e3daefeac59cf515ea44667f61aa63b0e2c2a5c88ace24c48cc132789cc5fa1a7c6c04c17e9ac61b114778e46d SHA512 5b80a5ec2898c1c821d0d49b9de67a256f82cb60879215ddde07c2a51f2e8a8b6893fec65617c27edec50cd51a362fb1fcdd21827e8de954f26879adcfa12418 AUX libvirt-9.6.0-fix-paths-for-apparmor.patch 4250 BLAKE2B bf7cc5250575a3b377539aabae316b91a4ff4bc1490f894859e7c066285909b26904fc020cf1c25bed6bae0670db52b2064b55e12a9a8161e2eb4dd0e4bd987e SHA512 abd6472a2a2bd23c0d7232ee807e4c57a799afab13c7bf11538f9b20da584677830691f84816d2cdcec0b7986817c8d469ca169073c2cb0e4b32e8b0ffa05003 AUX libvirt-9.9.0-do-not-use-sysconfig.patch 2910 BLAKE2B 60d9cd53be99377b1f51f01eca85815cbdcb3a97cbcd4131931a975d4ec8073c3a384e9a67267580d30f3ab7117a2fe83ee91c406139ef4bc25ee76e6752d884 SHA512 3ef1c6eb803e0c2425f81a9c90dd0afc466b2474e62fd8189d029bddc679ef1cf9715bf23d98bff6e3ec1ab2515a0a5ede5ffd95f15cef56f3069283ccc8e741 @@ -17,8 +14,6 @@ AUX libvirtd.init-r19 1115 BLAKE2B 6498fb175180088aa4b2eb74a951de7cb3969cac81dec AUX libvirtd.tmpfiles.conf 36 BLAKE2B fa0e1dac4117dcb2a2e826c82c4c63e20156db47abf4088167484f1f3149a4998840cf1aba745621851d7e2653df5c7f7268d8d61be3a3731ea053a88f35c13b SHA512 2b1c3c64dd6fa03d8c2ae24e7ce4aa7d754913214542a68a4e99f10fbc251fd23ee26e297a957d7b4b70eec8ef028c41fc915da3a85fbbd16143bb92d1de3aed AUX virtlockd.init-r2 564 BLAKE2B 5979d26e8a3b4e402b3945f831b7304b1c6a49161728328f4e65c3fd8ec95ad8f2bceac3d531a11acfbfc7262c77510fce91149a7389eded046f32b743733f5e SHA512 4c967524ba9d6cdb7f2565e76a598d72fd8a8268a4b2c66dafb88fd0f2935c642b1149ad8543000d94086da1be95d174cb2afc2b1f29608d67724c4ba540fd24 AUX virtlogd.init-r2 563 BLAKE2B 815fb795e225ddeb6a29d9983fc3821ce5efa460fa452251c393f19a460a4e9940678e89751482331d9fbef2f8f85988890ee59889d74b8aca01257fa98bc62f SHA512 405b43dade3e3e88199bd6871b6fb9bc99da4b59b05927ed1871176d13452ce3ce2d6de4c05dcd765c4433ba0d7ab0fe9d053964cc6de33f38c538dd21a74cd3 -DIST libvirt-10.1.0.tar.xz 9444244 BLAKE2B bfdce9d067e3a319b81d867d27f1a6b4e724ab6aaa25d19d7383c9be26ad7dc92b3c0aaa92894b772f09e20c3c2eb0ea0a8707feee4c63be58578fa22854305f SHA512 08e73ae15de5681430b62db85ec9901242dca5e9a4ca9685614f4a67092c6e28f27f9187144b3ceb18ad6b40e6eb1a90b1a4b056b0888724d04a62002ee2bc48 -DIST libvirt-10.1.0.tar.xz.asc 833 BLAKE2B 1046403fb6ee084eb68e081a0fa4a1cfbf30378faf2f54591917ab6a4648a4c2a23da055cfe2577ec7ec80922c29ca7a918386259f747f052abfdfc420ff7749 SHA512 40ec184b4c33f21bf99d38fec0722e165854f723017f3cddaef63120cdf8dcf6df0c03b7e4aea5c3706f65d46f5335db667321b1ece1c123d9517fcd303b2bd8 DIST libvirt-10.10.0.tar.xz 9673792 BLAKE2B 8042ce1493c3ffd6e6deeb7d94d0744da18850fe416480487a57ffd33bf3390f587849f308aad12fd38c887628f90137ba717ea11ef7e0f73a97b157fa985a6e SHA512 b4e8a5f7d5c15387e5f3e82ac9661feb6e89c6b3b13d869bca63d9686e1e1e8d193a1fc84a19a09b3da1c868837ee76d1b3964a6e5f7ad5d669449b0a6aa4b53 DIST libvirt-10.10.0.tar.xz.asc 833 BLAKE2B c26069fb79d2f26c8f7763033ef71267512c923ce9b3eb97a416dcf4dd1535c86ba0ee6710c66bd8f62c724799fb99f839aa93861022c862ecdf6789cb6906d4 SHA512 912c572f91e0934c7954f7bf496d1fd212d57f6327f07d297f35b8f791087a71cb243e4d125c377921518339f9516288a1ddb6589fd13804eb91adeedda705a9 DIST libvirt-10.3.0.tar.xz 9476852 BLAKE2B 8c47840113904d72aeb1e9bf900a99a8b0e3d41391c9a8fee4277f2793f18fefc50d113e8cbea52dedfd03b93f430416bcd25fe90ee6820c95ac6f468b84212f SHA512 dd2b151a19877e57e11b582b1c11542319f8b7b7cd3d7d51304442aa7d5eb1a8490d2887d340191c3ecc561320ea453773763083364579de0a40ada9c244fc59 @@ -29,17 +24,13 @@ DIST libvirt-10.6.0.tar.xz 9481992 BLAKE2B 68d88ba7f6d5f74d6ad8753a7716902596338 DIST libvirt-10.6.0.tar.xz.asc 833 BLAKE2B 29c5217b665e8ba697adf39920baf6f824bb5d9fdfe96b68f7d4c4f5849c94e44b14b76435fdb98e033b30de73a79b45502a9ba6e7da76ba139c9ebe0bd183b2 SHA512 da50a4760afc094805f087c01646bf6c8165c54e5bad0569a375a1d0791374c27d35fa3780b7104ab248444ed6f8a8a45c20013e57d5129557d6622a9f2a0721 DIST libvirt-10.8.0.tar.xz 9575348 BLAKE2B fb7d7b6d8a158c0045bb7fae4080cf8d58f8ff36cc2b99cdedcbc88397abf180de94931b3c114463fb717fb33bf16d67ea9b29ae77a673d4e1ca8ba94f195652 SHA512 4979565015d69d078e532944d1d1cdfbb28e2d5625168a80f7b56a323949cf6072c4b8cfb96b92dbae263ee166d1c514651455389f33c90d04cc615865009eee DIST libvirt-10.8.0.tar.xz.asc 833 BLAKE2B 25b01613df138dbaa921bfe3d3a2384182d4bff1a5828d0b9cccb08e4a48465d0b89391f83824889052e7827b107304289a3a38589039a302c93a15a5d4fe169 SHA512 1099f61b835351165bfa203f3d7d485f16b89e29234a6301e50cf3b5e47e4c7edb9808c23a6fd5045ed44d8349e78596923ea7cc1896e8239b5816e871fdc0cc -DIST libvirt-9.8.0.tar.xz 9307064 BLAKE2B aae47e8d4eeaf97532a0356de23ed5a9eea71b369d025eda95b5fd74576779eb4b843d05df6c87b79a14f218c341953749e319ee7244846a2db410a74a746880 SHA512 0118725073de33eec3fa3e4616d3154707f9828fdb9ec973f503fe68f18eab72b9704da660f281152630ddc95e605c786673af9d23dc9bdfc0108422e0efbd41 -DIST libvirt-9.8.0.tar.xz.asc 833 BLAKE2B 3ecd0a925992eeadd50675f7ad8e815bde532c0f66e331ea766fff8e613b6a60b002bedee82fd03684e703057bc13d4e92191268dcd5efe2611ce9bd3cf6b505 SHA512 e041db13281eae9323c22189b7a258caf8d0e2a350cbd31b6cbed7054ccaf09d05c155c3c09daea07940affdf15e8d42bb2339945480cd141a6e8cb417a78536 -DIST libvirt-9.9.0.tar.xz 9321556 BLAKE2B 21eae5a95feaf7f5c6ba8dd48732c08212904882a11c48eccfa827d85ddc3df7e064503f21710dbe1b678670e02f003674de915a43a7403fbf85685c4832e21d SHA512 77cea28acf4f3e8c92fbd5bd72ad084be183c07f14e3a9ce35d6d9d62d36ee97a30cef55fb204b3e43f282890ecd7d5827a784a517e7f4ed8b22ee502c3f09d7 -DIST libvirt-9.9.0.tar.xz.asc 833 BLAKE2B 3de3674d33c595692e71eeb9c312de76e865d3859d2482ec5b4d29d3cd7644cde080cba0001668efe7876b462f78c0233ab76076ef32943e118b34cca8c1ab4d SHA512 357fc2d1bdbbc26c6e0119a1b5c42e86a116f94bb714da855ab27ca83da0e50c7239d1b8abde3cee8a460ac537f63d518f43470d8329b727b39491771ad191e5 -EBUILD libvirt-10.1.0-r4.ebuild 10208 BLAKE2B ba05957d24d5b4b92fe2eb074924c43788bd1ee2c6608a9c981c1773a8f233da5b6a7e0e023a72c6a0770ceee6381e9d921dd59998d0d5c7ff61e385040d0e8d SHA512 40cbf881868ca0a4459a77ed925c2ff2548c8a32710f20a950aa36a39b29a4cdec4c5064b76ce51993a1e265f3f6a0954f3d79674b63b646b995f263e4877a1d -EBUILD libvirt-10.10.0-r1.ebuild 10160 BLAKE2B fe86d9ca0a31c6771cf72e1cbd4d51a2f3f18e133bb913e1be5d59c58d990e1aca4ac277a02c0769441b9387d07ae4a76ec01f1205425828104bd8311e8c2332 SHA512 3043ad9072e6fe6e1e3952f8724417a42a0647038d6b0609074e6ab95082238b28f91f04ac257566f718f176101e8e16e53112fcd036860d9693d0de57f77723 +DIST libvirt-11.0.0.tar.xz 9700388 BLAKE2B 0fc248bfcc505e143fa56560a216ed62ddeb8f8def5eaf32772bc5f0c1ca87f92dc530d9290f6349dc8727590f6148ffb6627e119f1e89fb0e151f1e6346b645 SHA512 ac5fd17d3f488c241017d967364e0441373e9ab0457dab1acfe84fd0b90353dc5d185cc7fcd2b0d7995af4137a3fa18371abb5511686456a9e720f7ec7829da9 +DIST libvirt-11.0.0.tar.xz.asc 833 BLAKE2B c959800b18ac7220970d6a772aefe4a5b53419298641b4fc659db2585d187701b823cda06ea2e16ff8bfa50c7552fb3eb50ff5c4ea40fb4a3c6eb93921481165 SHA512 7b1bb3d902986bc269bf9efd0ab2dbfb256c3e02e0d410e3bf81ddb649b1d0983090adc1857d59db79fa7ac19b983496a80ac3bf6ae13163bb772cea05b5728b +EBUILD libvirt-10.10.0-r1.ebuild 10172 BLAKE2B 4fcfec9ef56ba146955ba821f8badbc1de0350a88b216a6e705a3d15546f52cb083a9aac612ae5ab3d6ab38eb0b4d12be7c9965084c3c213ad9f86a74b1e3258 SHA512 92d179c3fc9d0ed53d83f930a107081e62c67efab1ff136adc3332a080d4ce3aea9d93c332ee32406804a99ee3bad4951b7408292770bd0c21911d73f2008c81 EBUILD libvirt-10.3.0-r4.ebuild 10193 BLAKE2B 01515dc6f7d77c235b2be818a8f27af6996282cf08d33d57bd84f9a2d3b12ff82082883123d88fc13d6cb8a249c2986ee888e11ab3a9be9de29c24940b6d8352 SHA512 a56a13ce5165a300849708ac6052fbf6703fe0d6db0f05101679f628f43f9e14289e7e3d303f8e0dd66b74160926e32624797df6048e137d88c8fe3b2abcee3f EBUILD libvirt-10.5.0-r2.ebuild 10075 BLAKE2B 2093b04c2cd3690694d250e9435fe7222e88320f4e21384a11e62bf015f3a0636fadb39e040b87d3e62b1cc343dd09abb3d661912fa0ff9188f8dfdb512ec887 SHA512 0e1c5927c420dcc26f2bdb165112bb7d559a7c4f045ce582e0ed001028b1bbe186646d8b1301abfaa06aeeed65773ed14654bd0277c3dd7cbeeb39ebde87c0d8 EBUILD libvirt-10.6.0-r1.ebuild 10075 BLAKE2B 2093b04c2cd3690694d250e9435fe7222e88320f4e21384a11e62bf015f3a0636fadb39e040b87d3e62b1cc343dd09abb3d661912fa0ff9188f8dfdb512ec887 SHA512 0e1c5927c420dcc26f2bdb165112bb7d559a7c4f045ce582e0ed001028b1bbe186646d8b1301abfaa06aeeed65773ed14654bd0277c3dd7cbeeb39ebde87c0d8 EBUILD libvirt-10.8.0.ebuild 10072 BLAKE2B b3b6dd462d2c817a03a63ac2017b3d157ffc8334c20ac579a013bd59de99b0764358149d2853d421244eec5e6aa4e91ba40864f84c4d1afe4cba78c8aef55f77 SHA512 f1d8c447a8c4933be27e20260add44c66046743739f98fa3502ce3e942da61acb0258438c12d165bdd3e4783ab01bc40e9b86bf7ecc2c8aa7a6305390b4c51b2 -EBUILD libvirt-9.8.0-r5.ebuild 10162 BLAKE2B 98255fa21fe673307e542e19bad3056d0c8f53c95b03490b14a592d7924be2bfe2f3de58877f2252ece0c03ac4452283472818e5de8ba36005a56e711f27f0db SHA512 21f96f9c995366525f34afe614ffe417311ba0e378b075e5f2e85eb75779698cd6825a35ecc1c3c11d314c7a9a7f9c330d8425033ceab0b44b15d2016d6b4be5 -EBUILD libvirt-9.9.0-r5.ebuild 10216 BLAKE2B 20828b145408a8809ef629b0ea03644f107c5f174ffc55f8b2ef69f7ea0ae143e89301d4bda9563be56cb7c21b8fe46f5000b243ff83911815a340c5df851cf8 SHA512 cb7c19dddd8782f2d2e28427746afd217c4d2c3d2730a9a36be9bad1e46bfb043f7ae59d6b040d859ec6fb797dcd083171505d82ec66f3e2702860ec88fe597c -EBUILD libvirt-9999.ebuild 10072 BLAKE2B b3b6dd462d2c817a03a63ac2017b3d157ffc8334c20ac579a013bd59de99b0764358149d2853d421244eec5e6aa4e91ba40864f84c4d1afe4cba78c8aef55f77 SHA512 f1d8c447a8c4933be27e20260add44c66046743739f98fa3502ce3e942da61acb0258438c12d165bdd3e4783ab01bc40e9b86bf7ecc2c8aa7a6305390b4c51b2 +EBUILD libvirt-11.0.0.ebuild 10088 BLAKE2B cd8d867441289e994ae329426272bdbf49ed4d79e8145556c2b168fc7a1c07c4242ca7969359eca74e5ad8f4caa837dd517d28a7c11fb4cb60a04e455289ff5a SHA512 c50841c8dc8a7eb3cd0ab543f4a15098707729e2ff3c531bc9e3efaf8efa2d8ef8ac7f58858d43d228bff46768d237077454cde4adf7fc6d048dae1eb1f1e57b +EBUILD libvirt-9999.ebuild 9809 BLAKE2B 6537162426a467e23f1b6db240f2595a74a3ebaa336d41a087ab868d55327268731b2c163614e7942765e62c1a067eebd92796f99f655689c9c9c96e52b6c540 SHA512 a52eb3c5332f0d446cc989272b04c89f9049c9fa8a7279cb2ce7da7b46f4c3f2b3a09944acf42aa5480d616021eca5bbf0998300758d641c3bc76ff4a21e3568 MISC metadata.xml 3822 BLAKE2B badb40564def06854a0c3af011b5de2888d722996c9b15df570a709161e49796f3d76ba2365c4adc1724f16bee3518d0e87ed6d2619d505b5ba2f1fd02c90f34 SHA512 f31e86b4d0c1faaf5bf0ac253cf20ce7728b94841debb590356efc0fa1e1a3d095a94e69ce0a34f793faadf10ed00ae1212aac54d13288f1975db4f032fd8b50 diff --git a/app-emulation/libvirt/files/libvirt-10.1.0-Fix-off-by-one-error-in-udevListInterfacesByStatus.patch b/app-emulation/libvirt/files/libvirt-10.1.0-Fix-off-by-one-error-in-udevListInterfacesByStatus.patch deleted file mode 100644 index 7ef0652faa38..000000000000 --- a/app-emulation/libvirt/files/libvirt-10.1.0-Fix-off-by-one-error-in-udevListInterfacesByStatus.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 2127032ed8cd49001465dc0dce9f842e13467bc2 Mon Sep 17 00:00:00 2001 -Message-ID: <2127032ed8cd49001465dc0dce9f842e13467bc2.1713033988.git.mprivozn@redhat.com> -From: Martin Kletzander -Date: Tue, 27 Feb 2024 16:20:12 +0100 -Subject: [PATCH 1/2] Fix off-by-one error in udevListInterfacesByStatus -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Ever since this function was introduced in 2012 it could've tried -filling in an extra interface name. That was made worse in 2019 when -the caller functions started accepting NULL arrays of size 0. - -This is assigned CVE-2024-1441. - -Signed-off-by: Martin Kletzander -Reported-by: Alexander Kuznetsov -Fixes: 5a33366f5c0b18c93d161bd144f9f079de4ac8ca -Fixes: d6064e2759a24e0802f363e3a810dc5a7d7ebb15 -Reviewed-by: Ján Tomko -(cherry picked from commit c664015fe3a7bf59db26686e9ed69af011c6ebb8) -Signed-off-by: Michal Privoznik ---- - src/interface/interface_backend_udev.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c -index fb6799ed94..4091483060 100644 ---- a/src/interface/interface_backend_udev.c -+++ b/src/interface/interface_backend_udev.c -@@ -222,7 +222,7 @@ udevListInterfacesByStatus(virConnectPtr conn, - g_autoptr(virInterfaceDef) def = NULL; - - /* Ensure we won't exceed the size of our array */ -- if (count > names_len) -+ if (count >= names_len) - break; - - path = udev_list_entry_get_name(dev_entry); --- -2.43.2 - diff --git a/app-emulation/libvirt/files/libvirt-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch b/app-emulation/libvirt/files/libvirt-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch deleted file mode 100644 index 3e0426634f42..000000000000 --- a/app-emulation/libvirt/files/libvirt-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch +++ /dev/null @@ -1,222 +0,0 @@ -From 10fa5f6ba64b354b99b0f7b372e66e45bb4d9379 Mon Sep 17 00:00:00 2001 -Message-ID: <10fa5f6ba64b354b99b0f7b372e66e45bb4d9379.1713033988.git.mprivozn@redhat.com> -In-Reply-To: <2127032ed8cd49001465dc0dce9f842e13467bc2.1713033988.git.mprivozn@redhat.com> -References: <2127032ed8cd49001465dc0dce9f842e13467bc2.1713033988.git.mprivozn@redhat.com> -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -Date: Fri, 15 Mar 2024 10:47:50 +0000 -Subject: [PATCH 2/2] remote: check for negative array lengths before - allocation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -While the C API entry points will validate non-negative lengths -for various parameters, the RPC server de-serialization code -will need to allocate memory for arrays before entering the C -API. These allocations will thus happen before the non-negative -length check is performed. - -Passing a negative length to the g_new0 function will usually -result in a crash due to the negative length being treated as -a huge positive number. - -This was found and diagnosed by ALT Linux Team with AFLplusplus. - -CVE-2024-2494 -Reviewed-by: Michal Privoznik -Found-by: Alexandr Shashkin -Co-developed-by: Alexander Kuznetsov -Signed-off-by: Daniel P. Berrangé -(cherry picked from commit 8a3f8d957507c1f8223fdcf25a3ff885b15557f2) -Signed-off-by: Michal Privoznik ---- - src/remote/remote_daemon_dispatch.c | 65 +++++++++++++++++++++++++++++ - src/rpc/gendispatch.pl | 5 +++ - 2 files changed, 70 insertions(+) - -diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c -index 7daf503b51..7542caa952 100644 ---- a/src/remote/remote_daemon_dispatch.c -+++ b/src/remote/remote_daemon_dispatch.c -@@ -2291,6 +2291,10 @@ remoteDispatchDomainGetSchedulerParameters(virNetServer *server G_GNUC_UNUSED, - if (!conn) - goto cleanup; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -2339,6 +2343,10 @@ remoteDispatchDomainGetSchedulerParametersFlags(virNetServer *server G_GNUC_UNUS - if (!conn) - goto cleanup; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -2497,6 +2505,10 @@ remoteDispatchDomainBlockStatsFlags(virNetServer *server G_GNUC_UNUSED, - goto cleanup; - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_BLOCK_STATS_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -2717,6 +2729,14 @@ remoteDispatchDomainGetVcpuPinInfo(virNetServer *server G_GNUC_UNUSED, - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - -+ if (args->ncpumaps < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("ncpumaps must be non-negative")); -+ goto cleanup; -+ } -+ if (args->maplen < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("maplen must be non-negative")); -+ goto cleanup; -+ } - if (args->ncpumaps > REMOTE_VCPUINFO_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("ncpumaps > REMOTE_VCPUINFO_MAX")); - goto cleanup; -@@ -2811,6 +2831,11 @@ remoteDispatchDomainGetEmulatorPinInfo(virNetServer *server G_GNUC_UNUSED, - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - -+ if (args->maplen < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("maplen must be non-negative")); -+ goto cleanup; -+ } -+ - /* Allocate buffers to take the results */ - if (args->maplen > 0) - cpumaps = g_new0(unsigned char, args->maplen); -@@ -2858,6 +2883,14 @@ remoteDispatchDomainGetVcpus(virNetServer *server G_GNUC_UNUSED, - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - -+ if (args->maxinfo < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo must be non-negative")); -+ goto cleanup; -+ } -+ if (args->maplen < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo must be non-negative")); -+ goto cleanup; -+ } - if (args->maxinfo > REMOTE_VCPUINFO_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo > REMOTE_VCPUINFO_MAX")); - goto cleanup; -@@ -3096,6 +3129,10 @@ remoteDispatchDomainGetMemoryParameters(virNetServer *server G_GNUC_UNUSED, - - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -3156,6 +3193,10 @@ remoteDispatchDomainGetNumaParameters(virNetServer *server G_GNUC_UNUSED, - - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_NUMA_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -3216,6 +3257,10 @@ remoteDispatchDomainGetBlkioParameters(virNetServer *server G_GNUC_UNUSED, - - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -3277,6 +3322,10 @@ remoteDispatchNodeGetCPUStats(virNetServer *server G_GNUC_UNUSED, - - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_NODE_CPU_STATS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -3339,6 +3388,10 @@ remoteDispatchNodeGetMemoryStats(virNetServer *server G_GNUC_UNUSED, - - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_NODE_MEMORY_STATS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -3514,6 +3567,10 @@ remoteDispatchDomainGetBlockIoTune(virNetServer *server G_GNUC_UNUSED, - if (!conn) - goto cleanup; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_BLOCK_IO_TUNE_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -5079,6 +5136,10 @@ remoteDispatchDomainGetInterfaceParameters(virNetServer *server G_GNUC_UNUSED, - - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_DOMAIN_INTERFACE_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -@@ -5299,6 +5360,10 @@ remoteDispatchNodeGetMemoryParameters(virNetServer *server G_GNUC_UNUSED, - - flags = args->flags; - -+ if (args->nparams < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams must be non-negative")); -+ goto cleanup; -+ } - if (args->nparams > REMOTE_NODE_MEMORY_PARAMETERS_MAX) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large")); - goto cleanup; -diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl -index fa45d15a92..294e21f8a1 100755 ---- a/src/rpc/gendispatch.pl -+++ b/src/rpc/gendispatch.pl -@@ -1070,6 +1070,11 @@ elsif ($mode eq "server") { - print "\n"; - - if ($single_ret_as_list) { -+ print " if (args->$single_ret_list_max_var < 0) {\n"; -+ print " virReportError(VIR_ERR_RPC,\n"; -+ print " \"%s\", _(\"max$single_ret_list_name must be non-negative\"));\n"; -+ print " goto cleanup;\n"; -+ print " }\n"; - print " if (args->$single_ret_list_max_var > $single_ret_list_max_define) {\n"; - print " virReportError(VIR_ERR_RPC,\n"; - print " \"%s\", _(\"max$single_ret_list_name > $single_ret_list_max_define\"));\n"; --- -2.43.2 - diff --git a/app-emulation/libvirt/files/libvirt-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch b/app-emulation/libvirt/files/libvirt-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch new file mode 100644 index 000000000000..9797200d0a48 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch @@ -0,0 +1,29 @@ +From 879f22eea1ffac0053d7c3cc56cdcb03dd859bc7 Mon Sep 17 00:00:00 2001 +Message-ID: <879f22eea1ffac0053d7c3cc56cdcb03dd859bc7.1738928238.git.mprivozn@redhat.com> +From: Michal Privoznik +Date: Fri, 31 Jan 2020 09:42:14 +0100 +Subject: [PATCH] Fix paths in libvirt-guests.sh.in + +Signed-off-by: Michal Privoznik +--- + tools/libvirt-guests.sh.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tools/libvirt-guests.sh.in b/tools/libvirt-guests.sh.in +index f2db1282ad..f2c9d9b465 100644 +--- a/tools/libvirt-guests.sh.in ++++ b/tools/libvirt-guests.sh.in +@@ -40,8 +40,8 @@ BYPASS_CACHE=0 + SYNC_TIME=0 + PERSISTENT_ONLY="default" + +-test -f "$initconfdir"/libvirt-guests && +- . "$initconfdir"/libvirt-guests ++test -f "$sysconfdir"/libvirt/libvirt-guests.conf && ++ . "$sysconfdir"/libvirt/libvirt-guests.conf + + LISTFILE="$localstatedir"/lib/libvirt/libvirt-guests + VAR_SUBSYS_LIBVIRT_GUESTS="$localstatedir"/lock/libvirt-guests +-- +2.45.3 + diff --git a/app-emulation/libvirt/files/libvirt-9.10.0-virxml-include-libxml-xmlsave.h-for-xmlIndentTreeOut.patch b/app-emulation/libvirt/files/libvirt-9.10.0-virxml-include-libxml-xmlsave.h-for-xmlIndentTreeOut.patch deleted file mode 100644 index b24236be8751..000000000000 --- a/app-emulation/libvirt/files/libvirt-9.10.0-virxml-include-libxml-xmlsave.h-for-xmlIndentTreeOut.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 7a5f232be2269e74943a029c0e8b1b0124674a6c Mon Sep 17 00:00:00 2001 -Message-ID: <7a5f232be2269e74943a029c0e8b1b0124674a6c.1700576185.git.mprivozn@redhat.com> -From: Michal Privoznik -Date: Mon, 20 Nov 2023 03:18:12 +0100 -Subject: [PATCH] virxml: include for xmlIndentTreeOutput - declaration -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -After libxml2's commit of v2.12.0~101 we no longer get -xmlIndentTreeOutput declaration by us including just -libxml/xpathInternals.h and libxml2's header files leakage. - -Resolves: https://bugs.gentoo.org/917516 -Signed-off-by: Michal Privoznik -Reviewed-by: Ján Tomko ---- - src/util/virxml.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/util/virxml.c b/src/util/virxml.c -index 0c1eae8c3c..4f215a0e59 100644 ---- a/src/util/virxml.c -+++ b/src/util/virxml.c -@@ -24,6 +24,7 @@ - #include /* for isnan() */ - #include - -+#include - #include - - #include "virerror.h" --- -2.41.0 - diff --git a/app-emulation/libvirt/files/libvirt-9.4.0-do-not-use-sysconfig.patch b/app-emulation/libvirt/files/libvirt-9.4.0-do-not-use-sysconfig.patch deleted file mode 100644 index cfd12efb3de7..000000000000 --- a/app-emulation/libvirt/files/libvirt-9.4.0-do-not-use-sysconfig.patch +++ /dev/null @@ -1,209 +0,0 @@ -From 09e34bcb43b3c0fb3bf139f218ebc75e9e9f9a39 Mon Sep 17 00:00:00 2001 -Message-Id: <09e34bcb43b3c0fb3bf139f218ebc75e9e9f9a39.1683631803.git.mprivozn@redhat.com> -From: Michal Privoznik -Date: Wed, 2 Mar 2022 10:01:04 +0100 -Subject: [PATCH] libvirt-8.2.0-do-not-use-sysconfig.patch - -Signed-off-by: Michal Privoznik ---- - src/interface/virtinterfaced.service.in | 1 - - src/libxl/virtxend.service.in | 1 - - src/locking/virtlockd.service.in | 1 - - src/logging/virtlogd.service.in | 1 - - src/lxc/virtlxcd.service.in | 1 - - src/network/virtnetworkd.service.in | 1 - - src/node_device/virtnodedevd.service.in | 1 - - src/nwfilter/virtnwfilterd.service.in | 1 - - src/qemu/virtqemud.service.in | 1 - - src/remote/libvirtd.service.in | 1 - - src/remote/virtproxyd.service.in | 1 - - src/secret/virtsecretd.service.in | 1 - - src/storage/virtstoraged.service.in | 1 - - src/vbox/virtvboxd.service.in | 1 - - tools/libvirt-guests.service.in | 2 +- - 15 files changed, 1 insertion(+), 15 deletions(-) - -diff --git a/src/interface/virtinterfaced.service.in b/src/interface/virtinterfaced.service.in -index 1be3ab32dc..090b198ac7 100644 ---- a/src/interface/virtinterfaced.service.in -+++ b/src/interface/virtinterfaced.service.in -@@ -14,7 +14,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTINTERFACED_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtinterfaced - ExecStart=@sbindir@/virtinterfaced $VIRTINTERFACED_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/libxl/virtxend.service.in b/src/libxl/virtxend.service.in -index abb1972777..dbbc2ab5b7 100644 ---- a/src/libxl/virtxend.service.in -+++ b/src/libxl/virtxend.service.in -@@ -19,7 +19,6 @@ ConditionPathExists=/proc/xen/capabilities - [Service] - Type=notify - Environment=VIRTXEND_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtxend - ExecStart=@sbindir@/virtxend $VIRTXEND_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/locking/virtlockd.service.in b/src/locking/virtlockd.service.in -index 23054369d5..87193952cb 100644 ---- a/src/locking/virtlockd.service.in -+++ b/src/locking/virtlockd.service.in -@@ -8,7 +8,6 @@ Documentation=https://libvirt.org - - [Service] - Environment=VIRTLOCKD_ARGS= --EnvironmentFile=-@initconfdir@/virtlockd - ExecStart=@sbindir@/virtlockd $VIRTLOCKD_ARGS - ExecReload=/bin/kill -USR1 $MAINPID - # Losing the locks is a really bad thing that will -diff --git a/src/logging/virtlogd.service.in b/src/logging/virtlogd.service.in -index e4aecd46a7..d97a98e856 100644 ---- a/src/logging/virtlogd.service.in -+++ b/src/logging/virtlogd.service.in -@@ -8,7 +8,6 @@ Documentation=https://libvirt.org - - [Service] - Environment=VIRTLOGD_ARGS= --EnvironmentFile=-@initconfdir@/virtlogd - ExecStart=@sbindir@/virtlogd $VIRTLOGD_ARGS - ExecReload=/bin/kill -USR1 $MAINPID - # Losing the logs is a really bad thing that will -diff --git a/src/lxc/virtlxcd.service.in b/src/lxc/virtlxcd.service.in -index 2623f7375a..b48ce6958a 100644 ---- a/src/lxc/virtlxcd.service.in -+++ b/src/lxc/virtlxcd.service.in -@@ -18,7 +18,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTLXCD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtlxcd - ExecStart=@sbindir@/virtlxcd $VIRTLXCD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - KillMode=process -diff --git a/src/network/virtnetworkd.service.in b/src/network/virtnetworkd.service.in -index 48423e777d..ee4cd9bca1 100644 ---- a/src/network/virtnetworkd.service.in -+++ b/src/network/virtnetworkd.service.in -@@ -17,7 +17,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTNETWORKD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtnetworkd - ExecStart=@sbindir@/virtnetworkd $VIRTNETWORKD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/node_device/virtnodedevd.service.in b/src/node_device/virtnodedevd.service.in -index 3ceed30f29..7693aa52c4 100644 ---- a/src/node_device/virtnodedevd.service.in -+++ b/src/node_device/virtnodedevd.service.in -@@ -14,7 +14,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTNODEDEVD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtnodedevd - ExecStart=@sbindir@/virtnodedevd $VIRTNODEDEVD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/nwfilter/virtnwfilterd.service.in b/src/nwfilter/virtnwfilterd.service.in -index 37fa54d684..16d8b377b0 100644 ---- a/src/nwfilter/virtnwfilterd.service.in -+++ b/src/nwfilter/virtnwfilterd.service.in -@@ -14,7 +14,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTNWFILTERD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtnwfilterd - ExecStart=@sbindir@/virtnwfilterd $VIRTNWFILTERD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/qemu/virtqemud.service.in b/src/qemu/virtqemud.service.in -index 032cbcbbf0..85a1049567 100644 ---- a/src/qemu/virtqemud.service.in -+++ b/src/qemu/virtqemud.service.in -@@ -20,7 +20,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTQEMUD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtqemud - ExecStart=@sbindir@/virtqemud $VIRTQEMUD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - KillMode=process -diff --git a/src/remote/libvirtd.service.in b/src/remote/libvirtd.service.in -index 11507207a1..9cda330e0b 100644 ---- a/src/remote/libvirtd.service.in -+++ b/src/remote/libvirtd.service.in -@@ -28,7 +28,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=LIBVIRTD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/libvirtd - ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - KillMode=process -diff --git a/src/remote/virtproxyd.service.in b/src/remote/virtproxyd.service.in -index dd3bdf3429..0eddf5ee93 100644 ---- a/src/remote/virtproxyd.service.in -+++ b/src/remote/virtproxyd.service.in -@@ -14,7 +14,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTPROXYD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtproxyd - ExecStart=@sbindir@/virtproxyd $VIRTPROXYD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/secret/virtsecretd.service.in b/src/secret/virtsecretd.service.in -index 774cfc3ecd..92e54f175f 100644 ---- a/src/secret/virtsecretd.service.in -+++ b/src/secret/virtsecretd.service.in -@@ -14,7 +14,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTSECRETD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtsecretd - ExecStart=@sbindir@/virtsecretd $VIRTSECRETD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/storage/virtstoraged.service.in b/src/storage/virtstoraged.service.in -index e1a1ea6820..abe91e3d80 100644 ---- a/src/storage/virtstoraged.service.in -+++ b/src/storage/virtstoraged.service.in -@@ -16,7 +16,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTSTORAGED_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtstoraged - ExecStart=@sbindir@/virtstoraged $VIRTSTORAGED_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/src/vbox/virtvboxd.service.in b/src/vbox/virtvboxd.service.in -index e73206591a..54fbd0be4a 100644 ---- a/src/vbox/virtvboxd.service.in -+++ b/src/vbox/virtvboxd.service.in -@@ -15,7 +15,6 @@ Documentation=https://libvirt.org - [Service] - Type=notify - Environment=VIRTVBOXD_ARGS="--timeout 120" --EnvironmentFile=-@initconfdir@/virtvboxd - ExecStart=@sbindir@/virtvboxd $VIRTVBOXD_ARGS - ExecReload=/bin/kill -HUP $MAINPID - Restart=on-failure -diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in -index c547218f2a..f5a1a60abe 100644 ---- a/tools/libvirt-guests.service.in -+++ b/tools/libvirt-guests.service.in -@@ -14,7 +14,7 @@ Documentation=man:libvirt-guests(8) - Documentation=https://libvirt.org - - [Service] --EnvironmentFile=-@initconfdir@/libvirt-guests -+EnvironmentFile=-/etc/libvirt/libvirt-guests.conf - # Hack just call traditional service until we factor - # out the code - ExecStart=@libexecdir@/libvirt-guests.sh start --- -2.39.3 - diff --git a/app-emulation/libvirt/libvirt-10.1.0-r4.ebuild b/app-emulation/libvirt/libvirt-10.1.0-r4.ebuild deleted file mode 100644 index ae74074960a9..000000000000 --- a/app-emulation/libvirt/libvirt-10.1.0-r4.ebuild +++ /dev/null @@ -1,392 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Packages which get releases together: -# app-emacs/nxml-libvirt-schemas -# dev-python/libvirt-python -# dev-perl/Sys-Virt -# app-emulation/libvirt -# Please bump them together! - -PYTHON_COMPAT=( python3_{10..13} ) -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.org.asc -inherit meson linux-info python-any-r1 readme.gentoo-r1 tmpfiles verify-sig - -if [[ ${PV} = *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.com/libvirt/libvirt.git" - EGIT_BRANCH="master" -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" -fi - -DESCRIPTION="C toolkit to manipulate virtual machines" -HOMEPAGE="https://www.libvirt.org/ https://gitlab.com/libvirt/libvirt/" -LICENSE="LGPL-2.1" -SLOT="0/${PV}" -IUSE=" - apparmor audit bash-completion +caps dtrace firewalld fuse glusterfs - iscsi iscsi-direct +libvirtd lvm libssh libssh2 lxc nbd nfs nls numa - openvz parted pcap policykit +qemu rbd sasl selinux test +udev - virtiofsd virtualbox +virt-network wireshark-plugins xen zfs -" -RESTRICT="!test? ( test )" - -REQUIRED_USE=" - firewalld? ( virt-network ) - libvirtd? ( || ( lxc openvz qemu virtualbox xen ) ) - lxc? ( caps libvirtd ) - openvz? ( libvirtd ) - qemu? ( libvirtd ) - virt-network? ( libvirtd ) - virtualbox? ( libvirtd ) - xen? ( libvirtd )" - -BDEPEND=" - app-text/xhtml1 - dev-lang/perl - dev-libs/libxslt - dev-perl/XML-XPath - dev-python/docutils - virtual/pkgconfig - bash-completion? ( >=app-shells/bash-completion-2.0 ) - verify-sig? ( sec-keys/openpgp-keys-libvirt )" - -# gettext.sh command is used by the libvirt command wrappers, and it's -# non-optional, so put it into RDEPEND. -# We can use both libnl:1.1 and libnl:3, but if you have both installed, the -# package will use 3 by default. Since we don't have slot pinning in an API, -# we must go with the most recent. -RDEPEND=" - acct-user/qemu - app-misc/scrub - >=dev-libs/glib-2.56.0 - dev-libs/libgcrypt - dev-libs/libnl:3 - >=dev-libs/libxml2-2.9.1 - >=net-analyzer/openbsd-netcat-1.105-r1 - >=net-libs/gnutls-3.2.0:= - net-libs/libtirpc:= - >=net-misc/curl-7.18.0 - sys-apps/dbus - sys-apps/dmidecode - sys-devel/gettext - >=sys-libs/readline-7.0:= - virtual/acl - apparmor? ( sys-libs/libapparmor ) - audit? ( sys-process/audit ) - caps? ( sys-libs/libcap-ng ) - dtrace? ( dev-debug/systemtap ) - firewalld? ( >=net-firewall/firewalld-0.6.3 ) - fuse? ( sys-fs/fuse:= ) - glusterfs? ( >=sys-cluster/glusterfs-3.4.1 ) - iscsi? ( >=sys-block/open-iscsi-1.18.0 ) - iscsi-direct? ( >=net-libs/libiscsi-1.18.0 ) - libssh? ( >=net-libs/libssh-0.8.1:= ) - libssh2? ( >=net-libs/libssh2-1.3 ) - lvm? ( >=sys-fs/lvm2-2.02.48-r2[lvm] ) - lxc? ( !sys-apps/systemd[cgroup-hybrid(-)] ) - nbd? ( - sys-block/nbdkit - sys-libs/libnbd - ) - nfs? ( net-fs/nfs-utils ) - numa? ( - >sys-process/numactl-2.0.2 - sys-process/numad - ) - parted? ( - >=sys-block/parted-1.8[device-mapper] - sys-fs/lvm2[lvm] - ) - pcap? ( >=net-libs/libpcap-1.8.0 ) - policykit? ( - acct-group/libvirt - >=sys-auth/polkit-0.9 - ) - qemu? ( - >=app-emulation/qemu-4.2 - app-crypt/swtpm - >=dev-libs/yajl-2.0.3:= - ) - rbd? ( sys-cluster/ceph ) - sasl? ( >=dev-libs/cyrus-sasl-2.1.26 ) - selinux? ( >=sys-libs/libselinux-2.0.85 ) - virt-network? ( - net-dns/dnsmasq[dhcp,ipv6(+),script] - net-firewall/ebtables - >=net-firewall/iptables-1.4.10[ipv6(+)] - net-misc/radvd - sys-apps/iproute2[-minimal] - ) - virtiofsd? ( app-emulation/virtiofsd ) - virtualbox? ( =net-analyzer/wireshark-2.6.0:= ) - xen? ( - >=app-emulation/xen-4.9.0 - app-emulation/xen-tools:= - ) - udev? ( - virtual/libudev:= - >=x11-libs/libpciaccess-0.10.9 - ) - zfs? ( sys-fs/zfs ) - kernel_linux? ( sys-apps/util-linux )" -DEPEND=" - ${BDEPEND} - ${RDEPEND} - ${PYTHON_DEPS} - test? ( - $(python_gen_any_dep ' - dev-python/pytest[${PYTHON_USEDEP}] - ') - ) -" -# The 'circular' dependency on dev-python/libvirt-python is because of -# virt-qemu-qmp-proxy. -PDEPEND=" - qemu? ( dev-python/libvirt-python ) -" - -PATCHES=( - "${FILESDIR}"/${PN}-9.4.0-fix_paths_in_libvirt-guests_sh.patch - "${FILESDIR}"/${PN}-9.9.0-do-not-use-sysconfig.patch - "${FILESDIR}"/${PN}-9.6.0-fix-paths-for-apparmor.patch - "${FILESDIR}"/${PN}-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch - "${FILESDIR}"/${PN}-10.5.0-virt-aa-helper-Allow-RO-access-to-usr-share-edk2-ovm.patch -) - -python_check_deps() { - if use test; then - python_has_version -d "dev-python/pytest[${PYTHON_USEDEP}]" - fi -} - -pkg_setup() { - # Check kernel configuration: - CONFIG_CHECK="" - use fuse && CONFIG_CHECK+=" - ~FUSE_FS" - - use lvm && CONFIG_CHECK+=" - ~BLK_DEV_DM - ~DM_MULTIPATH - ~DM_SNAPSHOT" - - use lxc && CONFIG_CHECK+=" - ~BLK_CGROUP - ~CGROUP_CPUACCT - ~CGROUP_DEVICE - ~CGROUP_FREEZER - ~CGROUP_NET_PRIO - ~CGROUP_PERF - ~CGROUPS - ~CGROUP_SCHED - ~CPUSETS - ~IPC_NS - ~MACVLAN - ~NAMESPACES - ~NET_CLS_CGROUP - ~NET_NS - ~PID_NS - ~POSIX_MQUEUE - ~SECURITYFS - ~USER_NS - ~UTS_NS - ~VETH - ~!GRKERNSEC_CHROOT_MOUNT - ~!GRKERNSEC_CHROOT_DOUBLE - ~!GRKERNSEC_CHROOT_PIVOT - ~!GRKERNSEC_CHROOT_CHMOD - ~!GRKERNSEC_CHROOT_CAPS" - - kernel_is lt 4 7 && use lxc && CONFIG_CHECK+=" - ~DEVPTS_MULTIPLE_INSTANCES" - - use virt-network && CONFIG_CHECK+=" - ~BRIDGE_EBT_MARK_T - ~BRIDGE_NF_EBTABLES - ~NETFILTER_ADVANCED - ~NETFILTER_XT_CONNMARK - ~NETFILTER_XT_MARK - ~NETFILTER_XT_TARGET_CHECKSUM - ~IP_NF_FILTER - ~IP_NF_MANGLE - ~IP_NF_NAT - ~IP6_NF_FILTER - ~IP6_NF_MANGLE - ~IP6_NF_NAT" - - # This was renamed in kernel commit v5.2-rc1~133^2~174^2~6 - if use virt-network ; then - if kernel_is -lt 5 2 ; then - CONFIG_CHECK+=" - ~IP_NF_TARGET_MASQUERADE" - else - CONFIG_CHECK+=" - ~NETFILTER_XT_TARGET_MASQUERADE" - fi - fi - - # Bandwidth Limiting Support - use virt-network && CONFIG_CHECK+=" - ~BRIDGE_EBT_T_NAT - ~IP_NF_TARGET_REJECT - ~NET_ACT_POLICE - ~NET_CLS_FW - ~NET_CLS_U32 - ~NET_SCH_HTB - ~NET_SCH_INGRESS - ~NET_SCH_SFQ" - - ERROR_USER_NS="Optional depending on LXC configuration." - - if [[ -n ${CONFIG_CHECK} ]]; then - linux-info_pkg_setup - fi - - python-any-r1_pkg_setup -} - -src_prepare() { - touch "${S}/.mailmap" || die - - default - python_fix_shebang . - - # Skip fragile tests which relies on pristine environment - # (Breaks because of sandbox environment variables) - # bug #802876 - sed -i -e "/commandtest/d" tests/meson.build || die - - # Tweak the init script: - cp "${FILESDIR}/libvirtd.init-r19" "${S}/libvirtd.init" || die - sed -e "s/USE_FLAG_FIREWALLD/$(usex firewalld 'need firewalld' '')/" \ - -i "${S}/libvirtd.init" || die "sed failed" -} - -src_configure() { - local emesonargs=( - $(meson_feature apparmor) - $(meson_feature apparmor apparmor_profiles) - $(meson_feature audit) - $(meson_feature caps capng) - $(meson_feature dtrace) - $(meson_feature firewalld) - $(meson_feature fuse) - $(meson_feature glusterfs) - $(meson_feature glusterfs storage_gluster) - $(meson_feature iscsi storage_iscsi) - $(meson_feature iscsi-direct storage_iscsi_direct) - $(meson_feature libvirtd driver_libvirtd) - $(meson_feature libssh) - $(meson_feature libssh2) - $(meson_feature lvm storage_lvm) - $(meson_feature lvm storage_mpath) - $(meson_feature lxc driver_lxc) - $(meson_feature nbd nbdkit) - $(meson_feature nls) - $(meson_feature numa numactl) - $(meson_feature numa numad) - $(meson_feature openvz driver_openvz) - $(meson_feature parted storage_disk) - $(meson_feature pcap libpcap) - $(meson_feature policykit polkit) - $(meson_feature qemu driver_qemu) - $(meson_feature qemu yajl) - $(meson_feature rbd storage_rbd) - $(meson_feature sasl) - $(meson_feature selinux) - $(meson_feature test tests) - $(meson_feature udev) - $(meson_feature virt-network driver_network) - $(meson_feature virtualbox driver_vbox) - $(meson_feature wireshark-plugins wireshark_dissector) - $(meson_feature xen driver_libxl) - $(meson_feature zfs storage_zfs) - - -Dnetcf=disabled - -Dsanlock=disabled - -Dopenwsman=disabled - - -Ddriver_esx=enabled - -Dinit_script=systemd - -Dqemu_user=$(usex caps qemu root) - -Dqemu_group=$(usex caps qemu root) - -Ddriver_remote=enabled - -Dstorage_fs=enabled - -Ddriver_vmware=enabled - - --localstatedir="${EPREFIX}/var" - -Dinitconfdir="${EPREFIX}/etc/systemd" - -Drunstatedir="${EPREFIX}/run" - -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" - ) - - # Workaround for bug #938302 - if use dtrace && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then - local native_file="${T}"/meson.${CHOST}.ini.local - cat >> ${native_file} <<-EOF || die - [binaries] - dtrace='stap-dtrace' - EOF - emesonargs+=( --native-file "${native_file}" ) - fi - - meson_src_configure -} - -src_test() { - export VIR_TEST_DEBUG=1 - # Don't run the syntax check tests, they're fragile and not relevant - # to us downstream anyway. - # We also crank up the timeout (as Fedora does) just to preempt failures - # on slower arches. - meson_src_test --no-suite syntax-check --timeout-multiplier 10 -} - -src_install() { - meson_src_install - - # Depending on configuration option, libvirt will create some bogus - # directoreis. They are either not used, or libvirtd is able to create - # them on demand, so let's remove them. - # - # Note, we are using -f here so that rm does not fail or warn if the - # directory is nonexistent. - rm -rf "${D}"/etc/sysconfig - rm -rf "${D}"/var - rm -rf "${D}"/run - - use libvirtd || return 0 - # From here, only libvirtd-related instructions, be warned! - - newtmpfiles "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf - - newinitd "${S}/libvirtd.init" libvirtd - newinitd "${FILESDIR}/libvirt-guests.init-r4" libvirt-guests - newinitd "${FILESDIR}/virtlockd.init-r2" virtlockd - newinitd "${FILESDIR}/virtlogd.init-r2" virtlogd - - newconfd "${FILESDIR}/libvirtd.confd-r5" libvirtd - newconfd "${FILESDIR}/libvirt-guests.confd" libvirt-guests - - DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r3") - DISABLE_AUTOFORMATTING=true - readme.gentoo_create_doc -} - -pkg_postinst() { - if [[ -e "${ROOT}"/etc/libvirt/qemu/networks/default.xml ]]; then - touch "${ROOT}"/etc/libvirt/qemu/networks/default.xml || die - fi - - use libvirtd || return 0 - # From here, only libvirtd-related instructions, be warned! - tmpfiles_process libvirtd.conf - readme.gentoo_print_elog -} diff --git a/app-emulation/libvirt/libvirt-10.10.0-r1.ebuild b/app-emulation/libvirt/libvirt-10.10.0-r1.ebuild index 39ba18558c54..1627df058ddb 100644 --- a/app-emulation/libvirt/libvirt-10.10.0-r1.ebuild +++ b/app-emulation/libvirt/libvirt-10.10.0-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -21,7 +21,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" @@ -216,6 +216,7 @@ pkg_setup() { ~NETFILTER_XT_CONNMARK ~NETFILTER_XT_MARK ~NETFILTER_XT_TARGET_CHECKSUM + ~NET_ACT_CSUM ~IP_NF_FILTER ~IP_NF_MANGLE ~IP_NF_NAT diff --git a/app-emulation/libvirt/libvirt-11.0.0.ebuild b/app-emulation/libvirt/libvirt-11.0.0.ebuild new file mode 100644 index 000000000000..59aba7615840 --- /dev/null +++ b/app-emulation/libvirt/libvirt-11.0.0.ebuild @@ -0,0 +1,394 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Packages which get releases together: +# app-emacs/nxml-libvirt-schemas +# dev-python/libvirt-python +# dev-perl/Sys-Virt +# app-emulation/libvirt +# Please bump them together! + +PYTHON_COMPAT=( python3_{10..13} ) +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.org.asc +inherit meson linux-info python-any-r1 readme.gentoo-r1 tmpfiles verify-sig + +if [[ ${PV} = *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://gitlab.com/libvirt/libvirt.git" + EGIT_BRANCH="master" +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" +fi + +DESCRIPTION="C toolkit to manipulate virtual machines" +HOMEPAGE="https://www.libvirt.org/ https://gitlab.com/libvirt/libvirt/" +LICENSE="LGPL-2.1" +SLOT="0/${PV}" +IUSE=" + apparmor audit bash-completion +caps dtrace firewalld fuse glusterfs + iscsi iscsi-direct +libvirtd lvm libssh libssh2 lxc nbd nfs nls numa + openvz parted pcap policykit +qemu rbd sasl selinux test +udev + virtiofsd virtualbox +virt-network wireshark-plugins xen zfs +" +RESTRICT="!test? ( test )" + +REQUIRED_USE=" + firewalld? ( virt-network ) + libvirtd? ( || ( lxc openvz qemu virtualbox xen ) ) + lxc? ( caps libvirtd ) + openvz? ( libvirtd ) + qemu? ( libvirtd ) + virt-network? ( libvirtd ) + virtualbox? ( libvirtd ) + xen? ( libvirtd )" + +BDEPEND=" + app-text/xhtml1 + dev-lang/perl + dev-libs/libxslt + dev-perl/XML-XPath + dev-python/docutils + virtual/pkgconfig + bash-completion? ( >=app-shells/bash-completion-2.0 ) + verify-sig? ( sec-keys/openpgp-keys-libvirt )" + +# gettext.sh command is used by the libvirt command wrappers, and it's +# non-optional, so put it into RDEPEND. +# We can use both libnl:1.1 and libnl:3, but if you have both installed, the +# package will use 3 by default. Since we don't have slot pinning in an API, +# we must go with the most recent. +RDEPEND=" + acct-user/qemu + app-misc/scrub + >=dev-libs/glib-2.56.0 + dev-libs/libgcrypt + dev-libs/libnl:3 + >=dev-libs/libxml2-2.9.1 + >=net-analyzer/openbsd-netcat-1.105-r1 + >=net-libs/gnutls-3.2.0:= + net-libs/libtirpc:= + >=net-misc/curl-7.18.0 + sys-apps/dbus + sys-apps/dmidecode + sys-devel/gettext + >=sys-libs/readline-7.0:= + virtual/acl + apparmor? ( sys-libs/libapparmor ) + audit? ( sys-process/audit ) + caps? ( sys-libs/libcap-ng ) + dtrace? ( dev-debug/systemtap ) + firewalld? ( >=net-firewall/firewalld-0.6.3 ) + fuse? ( sys-fs/fuse:= ) + glusterfs? ( >=sys-cluster/glusterfs-3.4.1 ) + iscsi? ( >=sys-block/open-iscsi-1.18.0 ) + iscsi-direct? ( >=net-libs/libiscsi-1.18.0 ) + libssh? ( >=net-libs/libssh-0.8.1:= ) + libssh2? ( >=net-libs/libssh2-1.3 ) + lvm? ( >=sys-fs/lvm2-2.02.48-r2[lvm] ) + lxc? ( !sys-apps/systemd[cgroup-hybrid(-)] ) + nbd? ( + sys-block/nbdkit + sys-libs/libnbd + ) + nfs? ( net-fs/nfs-utils ) + numa? ( + >sys-process/numactl-2.0.2 + sys-process/numad + ) + parted? ( + >=sys-block/parted-1.8[device-mapper] + sys-fs/lvm2[lvm] + ) + pcap? ( >=net-libs/libpcap-1.8.0 ) + policykit? ( + acct-group/libvirt + >=sys-auth/polkit-0.9 + ) + qemu? ( + >=app-emulation/qemu-4.2 + app-crypt/swtpm + dev-libs/json-c:= + ) + rbd? ( sys-cluster/ceph ) + sasl? ( >=dev-libs/cyrus-sasl-2.1.26 ) + selinux? ( >=sys-libs/libselinux-2.0.85 ) + virt-network? ( + net-dns/dnsmasq[dhcp,ipv6(+),script] + net-firewall/ebtables + || ( + >=net-firewall/iptables-1.4.10[ipv6(+)] + net-firewall/nftables + ) + net-misc/radvd + sys-apps/iproute2[-minimal] + ) + virtiofsd? ( app-emulation/virtiofsd ) + virtualbox? ( =net-analyzer/wireshark-2.6.0:= ) + xen? ( + >=app-emulation/xen-4.9.0 + app-emulation/xen-tools:= + ) + udev? ( + virtual/libudev:= + >=x11-libs/libpciaccess-0.10.9 + ) + zfs? ( sys-fs/zfs ) + kernel_linux? ( sys-apps/util-linux )" +DEPEND=" + ${BDEPEND} + ${RDEPEND} + ${PYTHON_DEPS} + test? ( + $(python_gen_any_dep ' + dev-python/pytest[${PYTHON_USEDEP}] + ') + ) +" +# The 'circular' dependency on dev-python/libvirt-python is because of +# virt-qemu-qmp-proxy. +PDEPEND=" + qemu? ( dev-python/libvirt-python ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-9.4.0-fix_paths_in_libvirt-guests_sh.patch + "${FILESDIR}"/${PN}-9.9.0-do-not-use-sysconfig.patch + "${FILESDIR}"/${PN}-10.7.0-fix-paths-for-apparmor.patch +) + +python_check_deps() { + if use test; then + python_has_version -d "dev-python/pytest[${PYTHON_USEDEP}]" + fi +} + +pkg_setup() { + # Check kernel configuration: + CONFIG_CHECK="" + use fuse && CONFIG_CHECK+=" + ~FUSE_FS" + + use lvm && CONFIG_CHECK+=" + ~BLK_DEV_DM + ~DM_MULTIPATH + ~DM_SNAPSHOT" + + use lxc && CONFIG_CHECK+=" + ~BLK_CGROUP + ~CGROUP_CPUACCT + ~CGROUP_DEVICE + ~CGROUP_FREEZER + ~CGROUP_NET_PRIO + ~CGROUP_PERF + ~CGROUPS + ~CGROUP_SCHED + ~CPUSETS + ~IPC_NS + ~MACVLAN + ~NAMESPACES + ~NET_CLS_CGROUP + ~NET_NS + ~PID_NS + ~POSIX_MQUEUE + ~SECURITYFS + ~USER_NS + ~UTS_NS + ~VETH + ~!GRKERNSEC_CHROOT_MOUNT + ~!GRKERNSEC_CHROOT_DOUBLE + ~!GRKERNSEC_CHROOT_PIVOT + ~!GRKERNSEC_CHROOT_CHMOD + ~!GRKERNSEC_CHROOT_CAPS" + + kernel_is lt 4 7 && use lxc && CONFIG_CHECK+=" + ~DEVPTS_MULTIPLE_INSTANCES" + + use virt-network && CONFIG_CHECK+=" + ~BRIDGE_EBT_MARK_T + ~BRIDGE_NF_EBTABLES + ~NETFILTER_ADVANCED + ~NETFILTER_XT_CONNMARK + ~NETFILTER_XT_MARK + ~NETFILTER_XT_TARGET_CHECKSUM + ~NET_ACT_CSUM + ~IP_NF_FILTER + ~IP_NF_MANGLE + ~IP_NF_NAT + ~IP6_NF_FILTER + ~IP6_NF_MANGLE + ~IP6_NF_NAT" + + # This was renamed in kernel commit v5.2-rc1~133^2~174^2~6 + if use virt-network ; then + if kernel_is -lt 5 2 ; then + CONFIG_CHECK+=" + ~IP_NF_TARGET_MASQUERADE" + else + CONFIG_CHECK+=" + ~NETFILTER_XT_TARGET_MASQUERADE" + fi + fi + + # Bandwidth Limiting Support + use virt-network && CONFIG_CHECK+=" + ~BRIDGE_EBT_T_NAT + ~IP_NF_TARGET_REJECT + ~NET_ACT_POLICE + ~NET_CLS_FW + ~NET_CLS_U32 + ~NET_SCH_HTB + ~NET_SCH_INGRESS + ~NET_SCH_SFQ" + + ERROR_USER_NS="Optional depending on LXC configuration." + + if [[ -n ${CONFIG_CHECK} ]]; then + linux-info_pkg_setup + fi + + python-any-r1_pkg_setup +} + +src_prepare() { + touch "${S}/.mailmap" || die + + default + python_fix_shebang . + + # Skip fragile tests which relies on pristine environment + # (Breaks because of sandbox environment variables) + # bug #802876 + sed -i -e "/commandtest/d" tests/meson.build || die + + # Tweak the init script: + cp "${FILESDIR}/libvirtd.init-r19" "${S}/libvirtd.init" || die + sed -e "s/USE_FLAG_FIREWALLD/$(usex firewalld 'need firewalld' '')/" \ + -i "${S}/libvirtd.init" || die "sed failed" +} + +src_configure() { + local emesonargs=( + $(meson_feature apparmor) + $(meson_feature apparmor apparmor_profiles) + $(meson_feature audit) + $(meson_feature caps capng) + $(meson_feature dtrace) + $(meson_feature firewalld) + $(meson_feature fuse) + $(meson_feature glusterfs) + $(meson_feature glusterfs storage_gluster) + $(meson_feature iscsi storage_iscsi) + $(meson_feature iscsi-direct storage_iscsi_direct) + $(meson_feature libvirtd driver_libvirtd) + $(meson_feature libssh) + $(meson_feature libssh2) + $(meson_feature lvm storage_lvm) + $(meson_feature lvm storage_mpath) + $(meson_feature lxc driver_lxc) + $(meson_feature nbd nbdkit) + $(meson_feature nls) + $(meson_feature numa numactl) + $(meson_feature numa numad) + $(meson_feature openvz driver_openvz) + $(meson_feature parted storage_disk) + $(meson_feature pcap libpcap) + $(meson_feature policykit polkit) + $(meson_feature qemu driver_qemu) + $(meson_feature qemu json_c) + $(meson_feature rbd storage_rbd) + $(meson_feature sasl) + $(meson_feature selinux) + $(meson_feature test tests) + $(meson_feature udev) + $(meson_feature virt-network driver_network) + $(meson_feature virtualbox driver_vbox) + $(meson_feature wireshark-plugins wireshark_dissector) + $(meson_feature xen driver_libxl) + $(meson_feature zfs storage_zfs) + + -Dnetcf=disabled + -Dsanlock=disabled + -Dopenwsman=disabled + + -Ddriver_esx=enabled + -Dinit_script=systemd + -Dqemu_user=$(usex caps qemu root) + -Dqemu_group=$(usex caps qemu root) + -Ddriver_remote=enabled + -Dstorage_fs=enabled + -Ddriver_vmware=enabled + + --localstatedir="${EPREFIX}/var" + -Dinitconfdir="${EPREFIX}/etc/systemd" + -Drunstatedir="${EPREFIX}/run" + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + ) + + # Workaround for bug #938302 + if use dtrace && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then + local native_file="${T}"/meson.${CHOST}.ini.local + cat >> ${native_file} <<-EOF || die + [binaries] + dtrace='stap-dtrace' + EOF + emesonargs+=( --native-file "${native_file}" ) + fi + + meson_src_configure +} + +src_test() { + export VIR_TEST_DEBUG=1 + # Don't run the syntax check tests, they're fragile and not relevant + # to us downstream anyway. + # We also crank up the timeout (as Fedora does) just to preempt failures + # on slower arches. + meson_src_test --no-suite syntax-check --timeout-multiplier 10 +} + +src_install() { + meson_src_install + + # Depending on configuration option, libvirt will create some bogus + # directoreis. They are either not used, or libvirtd is able to create + # them on demand, so let's remove them. + # + # Note, we are using -f here so that rm does not fail or warn if the + # directory is nonexistent. + rm -rf "${D}"/etc/sysconfig + rm -rf "${D}"/var + rm -rf "${D}"/run + + use libvirtd || return 0 + # From here, only libvirtd-related instructions, be warned! + + newtmpfiles "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf + + newinitd "${S}/libvirtd.init" libvirtd + newinitd "${FILESDIR}/libvirt-guests.init-r4" libvirt-guests + newinitd "${FILESDIR}/virtlockd.init-r2" virtlockd + newinitd "${FILESDIR}/virtlogd.init-r2" virtlogd + + newconfd "${FILESDIR}/libvirtd.confd-r5" libvirtd + newconfd "${FILESDIR}/libvirt-guests.confd" libvirt-guests + + DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r3") + DISABLE_AUTOFORMATTING=true + readme.gentoo_create_doc +} + +pkg_postinst() { + if [[ -e "${ROOT}"/etc/libvirt/qemu/networks/default.xml ]]; then + touch "${ROOT}"/etc/libvirt/qemu/networks/default.xml || die + fi + + use libvirtd || return 0 + # From here, only libvirtd-related instructions, be warned! + tmpfiles_process libvirtd.conf + readme.gentoo_print_elog +} diff --git a/app-emulation/libvirt/libvirt-9.8.0-r5.ebuild b/app-emulation/libvirt/libvirt-9.8.0-r5.ebuild deleted file mode 100644 index b34f687d0a17..000000000000 --- a/app-emulation/libvirt/libvirt-9.8.0-r5.ebuild +++ /dev/null @@ -1,383 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Packages which get releases together: -# app-emacs/nxml-libvirt-schemas -# dev-python/libvirt-python -# dev-perl/Sys-Virt -# app-emulation/libvirt -# Please bump them together! - -PYTHON_COMPAT=( python3_{10..13} ) -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.org.asc -inherit meson linux-info python-any-r1 readme.gentoo-r1 tmpfiles verify-sig - -if [[ ${PV} = *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.com/libvirt/libvirt.git" - EGIT_BRANCH="master" -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" -fi - -DESCRIPTION="C toolkit to manipulate virtual machines" -HOMEPAGE="https://www.libvirt.org/ https://gitlab.com/libvirt/libvirt/" -LICENSE="LGPL-2.1" -SLOT="0/${PV}" -IUSE=" - apparmor audit bash-completion +caps dtrace firewalld fuse glusterfs - iscsi iscsi-direct +libvirtd lvm libssh libssh2 lxc nbd nfs nls numa - openvz parted pcap policykit +qemu rbd sasl selinux test +udev - virtualbox +virt-network wireshark-plugins xen zfs -" -RESTRICT="!test? ( test )" - -REQUIRED_USE=" - firewalld? ( virt-network ) - libvirtd? ( || ( lxc openvz qemu virtualbox xen ) ) - lxc? ( caps libvirtd ) - openvz? ( libvirtd ) - qemu? ( libvirtd ) - virt-network? ( libvirtd ) - virtualbox? ( libvirtd ) - xen? ( libvirtd )" - -BDEPEND=" - app-text/xhtml1 - dev-lang/perl - dev-libs/libxslt - dev-perl/XML-XPath - dev-python/docutils - virtual/pkgconfig - net-libs/rpcsvc-proto - bash-completion? ( >=app-shells/bash-completion-2.0 ) - verify-sig? ( sec-keys/openpgp-keys-libvirt )" - -# gettext.sh command is used by the libvirt command wrappers, and it's -# non-optional, so put it into RDEPEND. -# We can use both libnl:1.1 and libnl:3, but if you have both installed, the -# package will use 3 by default. Since we don't have slot pinning in an API, -# we must go with the most recent. -RDEPEND=" - acct-user/qemu - app-misc/scrub - >=dev-libs/glib-2.56.0 - dev-libs/libgcrypt - dev-libs/libnl:3 - >=dev-libs/libxml2-2.9.1 - >=net-analyzer/openbsd-netcat-1.105-r1 - >=net-libs/gnutls-3.2.0:= - net-libs/libtirpc:= - >=net-misc/curl-7.18.0 - sys-apps/dbus - sys-apps/dmidecode - sys-devel/gettext - >=sys-libs/readline-7.0:= - virtual/acl - apparmor? ( sys-libs/libapparmor ) - audit? ( sys-process/audit ) - caps? ( sys-libs/libcap-ng ) - dtrace? ( dev-debug/systemtap ) - firewalld? ( >=net-firewall/firewalld-0.6.3 ) - fuse? ( sys-fs/fuse:= ) - glusterfs? ( >=sys-cluster/glusterfs-3.4.1 ) - iscsi? ( >=sys-block/open-iscsi-1.18.0 ) - iscsi-direct? ( >=net-libs/libiscsi-1.18.0 ) - libssh? ( >=net-libs/libssh-0.8.1:= ) - libssh2? ( >=net-libs/libssh2-1.3 ) - lvm? ( >=sys-fs/lvm2-2.02.48-r2[lvm] ) - lxc? ( !sys-apps/systemd[cgroup-hybrid(-)] ) - nbd? ( - sys-block/nbdkit - sys-libs/libnbd - ) - nfs? ( net-fs/nfs-utils ) - numa? ( - >sys-process/numactl-2.0.2 - sys-process/numad - ) - parted? ( - >=sys-block/parted-1.8[device-mapper] - sys-fs/lvm2[lvm] - ) - pcap? ( >=net-libs/libpcap-1.8.0 ) - policykit? ( - acct-group/libvirt - >=sys-auth/polkit-0.9 - ) - qemu? ( - >=app-emulation/qemu-4.2 - app-crypt/swtpm - >=dev-libs/yajl-2.0.3:= - ) - rbd? ( sys-cluster/ceph ) - sasl? ( >=dev-libs/cyrus-sasl-2.1.26 ) - selinux? ( >=sys-libs/libselinux-2.0.85 ) - virt-network? ( - net-dns/dnsmasq[dhcp,ipv6(+),script] - net-firewall/ebtables - >=net-firewall/iptables-1.4.10[ipv6(+)] - net-misc/radvd - sys-apps/iproute2[-minimal] - ) - virtualbox? ( =net-analyzer/wireshark-2.6.0:= ) - xen? ( - >=app-emulation/xen-4.9.0 - app-emulation/xen-tools:= - ) - udev? ( - virtual/libudev:= - >=x11-libs/libpciaccess-0.10.9 - ) - zfs? ( sys-fs/zfs ) - kernel_linux? ( sys-apps/util-linux )" -DEPEND=" - ${BDEPEND} - ${RDEPEND} - ${PYTHON_DEPS} -" -# The 'circular' dependency on dev-python/libvirt-python is because of -# virt-qemu-qmp-proxy. -PDEPEND=" - qemu? ( dev-python/libvirt-python ) -" - -PATCHES=( - "${FILESDIR}"/${PN}-9.4.0-fix_paths_in_libvirt-guests_sh.patch - "${FILESDIR}"/${PN}-9.4.0-do-not-use-sysconfig.patch - "${FILESDIR}"/${PN}-9.6.0-fix-paths-for-apparmor.patch - "${FILESDIR}"/${PN}-9.10.0-virxml-include-libxml-xmlsave.h-for-xmlIndentTreeOut.patch - "${FILESDIR}"/${PN}-10.1.0-Fix-off-by-one-error-in-udevListInterfacesByStatus.patch - "${FILESDIR}"/${PN}-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch - "${FILESDIR}"/${PN}-10.5.0-virt-aa-helper-Allow-RO-access-to-usr-share-edk2-ovm.patch -) - -pkg_setup() { - # Check kernel configuration: - CONFIG_CHECK="" - use fuse && CONFIG_CHECK+=" - ~FUSE_FS" - - use lvm && CONFIG_CHECK+=" - ~BLK_DEV_DM - ~DM_MULTIPATH - ~DM_SNAPSHOT" - - use lxc && CONFIG_CHECK+=" - ~BLK_CGROUP - ~CGROUP_CPUACCT - ~CGROUP_DEVICE - ~CGROUP_FREEZER - ~CGROUP_NET_PRIO - ~CGROUP_PERF - ~CGROUPS - ~CGROUP_SCHED - ~CPUSETS - ~IPC_NS - ~MACVLAN - ~NAMESPACES - ~NET_CLS_CGROUP - ~NET_NS - ~PID_NS - ~POSIX_MQUEUE - ~SECURITYFS - ~USER_NS - ~UTS_NS - ~VETH - ~!GRKERNSEC_CHROOT_MOUNT - ~!GRKERNSEC_CHROOT_DOUBLE - ~!GRKERNSEC_CHROOT_PIVOT - ~!GRKERNSEC_CHROOT_CHMOD - ~!GRKERNSEC_CHROOT_CAPS" - - kernel_is lt 4 7 && use lxc && CONFIG_CHECK+=" - ~DEVPTS_MULTIPLE_INSTANCES" - - use virt-network && CONFIG_CHECK+=" - ~BRIDGE_EBT_MARK_T - ~BRIDGE_NF_EBTABLES - ~NETFILTER_ADVANCED - ~NETFILTER_XT_CONNMARK - ~NETFILTER_XT_MARK - ~NETFILTER_XT_TARGET_CHECKSUM - ~IP_NF_FILTER - ~IP_NF_MANGLE - ~IP_NF_NAT - ~IP6_NF_FILTER - ~IP6_NF_MANGLE - ~IP6_NF_NAT" - - # This was renamed in kernel commit v5.2-rc1~133^2~174^2~6 - if use virt-network ; then - if kernel_is -lt 5 2 ; then - CONFIG_CHECK+=" - ~IP_NF_TARGET_MASQUERADE" - else - CONFIG_CHECK+=" - ~NETFILTER_XT_TARGET_MASQUERADE" - fi - fi - - # Bandwidth Limiting Support - use virt-network && CONFIG_CHECK+=" - ~BRIDGE_EBT_T_NAT - ~IP_NF_TARGET_REJECT - ~NET_ACT_POLICE - ~NET_CLS_FW - ~NET_CLS_U32 - ~NET_SCH_HTB - ~NET_SCH_INGRESS - ~NET_SCH_SFQ" - - ERROR_USER_NS="Optional depending on LXC configuration." - - if [[ -n ${CONFIG_CHECK} ]]; then - linux-info_pkg_setup - fi - - python-any-r1_pkg_setup -} - -src_prepare() { - touch "${S}/.mailmap" || die - - default - python_fix_shebang . - - # Skip fragile tests which relies on pristine environment - # (Breaks because of sandbox environment variables) - # bug #802876 - sed -i -e "/commandtest/d" tests/meson.build || die - - # Tweak the init script: - cp "${FILESDIR}/libvirtd.init-r19" "${S}/libvirtd.init" || die - sed -e "s/USE_FLAG_FIREWALLD/$(usex firewalld 'need firewalld' '')/" \ - -i "${S}/libvirtd.init" || die "sed failed" -} - -src_configure() { - local emesonargs=( - $(meson_feature apparmor) - $(meson_feature apparmor apparmor_profiles) - $(meson_feature audit) - $(meson_feature caps capng) - $(meson_feature dtrace) - $(meson_feature firewalld) - $(meson_feature fuse) - $(meson_feature glusterfs) - $(meson_feature glusterfs storage_gluster) - $(meson_feature iscsi storage_iscsi) - $(meson_feature iscsi-direct storage_iscsi_direct) - $(meson_feature libvirtd driver_libvirtd) - $(meson_feature libssh) - $(meson_feature libssh2) - $(meson_feature lvm storage_lvm) - $(meson_feature lvm storage_mpath) - $(meson_feature lxc driver_lxc) - $(meson_feature nbd libnbd) - $(meson_feature nls) - $(meson_feature numa numactl) - $(meson_feature numa numad) - $(meson_feature openvz driver_openvz) - $(meson_feature parted storage_disk) - $(meson_feature pcap libpcap) - $(meson_feature policykit polkit) - $(meson_feature qemu driver_qemu) - $(meson_feature qemu yajl) - $(meson_feature rbd storage_rbd) - $(meson_feature sasl) - $(meson_feature selinux) - $(meson_feature test tests) - $(meson_feature udev) - $(meson_feature virt-network driver_network) - $(meson_feature virtualbox driver_vbox) - $(meson_feature wireshark-plugins wireshark_dissector) - $(meson_feature xen driver_libxl) - $(meson_feature zfs storage_zfs) - - -Dnetcf=disabled - -Dsanlock=disabled - -Dopenwsman=disabled - - -Ddriver_esx=enabled - -Dinit_script=systemd - -Dqemu_user=$(usex caps qemu root) - -Dqemu_group=$(usex caps qemu root) - -Ddriver_remote=enabled - -Dstorage_fs=enabled - -Ddriver_vmware=enabled - - --localstatedir="${EPREFIX}/var" - -Dinitconfdir="${EPREFIX}/etc/systemd" - -Drunstatedir="${EPREFIX}/run" - -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" - ) - - # Workaround for bug #938302 - if use dtrace && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then - local native_file="${T}"/meson.${CHOST}.ini.local - cat >> ${native_file} <<-EOF || die - [binaries] - dtrace='stap-dtrace' - EOF - emesonargs+=( --native-file "${native_file}" ) - fi - - meson_src_configure -} - -src_test() { - export VIR_TEST_DEBUG=1 - # Don't run the syntax check tests, they're fragile and not relevant - # to us downstream anyway. - # We also crank up the timeout (as Fedora does) just to preempt failures - # on slower arches. - meson_src_test --no-suite syntax-check --timeout-multiplier 10 -} - -src_install() { - meson_src_install - - # Depending on configuration option, libvirt will create some bogus - # directoreis. They are either not used, or libvirtd is able to create - # them on demand, so let's remove them. - # - # Note, we are using -f here so that rm does not fail or warn if the - # directory is nonexistent. - rm -rf "${D}"/etc/sysconfig - rm -rf "${D}"/var - rm -rf "${D}"/run - - use libvirtd || return 0 - # From here, only libvirtd-related instructions, be warned! - - newtmpfiles "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf - - newinitd "${S}/libvirtd.init" libvirtd - newinitd "${FILESDIR}/libvirt-guests.init-r4" libvirt-guests - newinitd "${FILESDIR}/virtlockd.init-r2" virtlockd - newinitd "${FILESDIR}/virtlogd.init-r2" virtlogd - - newconfd "${FILESDIR}/libvirtd.confd-r5" libvirtd - newconfd "${FILESDIR}/libvirt-guests.confd" libvirt-guests - - DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r3") - DISABLE_AUTOFORMATTING=true - readme.gentoo_create_doc -} - -pkg_postinst() { - if [[ -e "${ROOT}"/etc/libvirt/qemu/networks/default.xml ]]; then - touch "${ROOT}"/etc/libvirt/qemu/networks/default.xml || die - fi - - use libvirtd || return 0 - # From here, only libvirtd-related instructions, be warned! - tmpfiles_process libvirtd.conf - readme.gentoo_print_elog -} diff --git a/app-emulation/libvirt/libvirt-9.9.0-r5.ebuild b/app-emulation/libvirt/libvirt-9.9.0-r5.ebuild deleted file mode 100644 index 82ed2ea58b7b..000000000000 --- a/app-emulation/libvirt/libvirt-9.9.0-r5.ebuild +++ /dev/null @@ -1,384 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Packages which get releases together: -# app-emacs/nxml-libvirt-schemas -# dev-python/libvirt-python -# dev-perl/Sys-Virt -# app-emulation/libvirt -# Please bump them together! - -PYTHON_COMPAT=( python3_{10..13} ) -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.org.asc -inherit meson linux-info python-any-r1 readme.gentoo-r1 tmpfiles verify-sig - -if [[ ${PV} = *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.com/libvirt/libvirt.git" - EGIT_BRANCH="master" -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" -fi - -DESCRIPTION="C toolkit to manipulate virtual machines" -HOMEPAGE="https://www.libvirt.org/ https://gitlab.com/libvirt/libvirt/" -LICENSE="LGPL-2.1" -SLOT="0/${PV}" -IUSE=" - apparmor audit bash-completion +caps dtrace firewalld fuse glusterfs - iscsi iscsi-direct +libvirtd lvm libssh libssh2 lxc nbd nfs nls numa - openvz parted pcap policykit +qemu rbd sasl selinux test +udev virtiofsd - virtualbox +virt-network wireshark-plugins xen zfs -" -RESTRICT="!test? ( test )" - -REQUIRED_USE=" - firewalld? ( virt-network ) - libvirtd? ( || ( lxc openvz qemu virtualbox xen ) ) - lxc? ( caps libvirtd ) - openvz? ( libvirtd ) - qemu? ( libvirtd ) - virt-network? ( libvirtd ) - virtualbox? ( libvirtd ) - xen? ( libvirtd )" - -BDEPEND=" - app-text/xhtml1 - dev-lang/perl - dev-libs/libxslt - dev-perl/XML-XPath - dev-python/docutils - virtual/pkgconfig - net-libs/rpcsvc-proto - bash-completion? ( >=app-shells/bash-completion-2.0 ) - verify-sig? ( sec-keys/openpgp-keys-libvirt )" - -# gettext.sh command is used by the libvirt command wrappers, and it's -# non-optional, so put it into RDEPEND. -# We can use both libnl:1.1 and libnl:3, but if you have both installed, the -# package will use 3 by default. Since we don't have slot pinning in an API, -# we must go with the most recent. -RDEPEND=" - acct-user/qemu - app-misc/scrub - >=dev-libs/glib-2.56.0 - dev-libs/libgcrypt - dev-libs/libnl:3 - >=dev-libs/libxml2-2.9.1 - >=net-analyzer/openbsd-netcat-1.105-r1 - >=net-libs/gnutls-3.2.0:= - net-libs/libtirpc:= - >=net-misc/curl-7.18.0 - sys-apps/dbus - sys-apps/dmidecode - sys-devel/gettext - >=sys-libs/readline-7.0:= - virtual/acl - apparmor? ( sys-libs/libapparmor ) - audit? ( sys-process/audit ) - caps? ( sys-libs/libcap-ng ) - dtrace? ( dev-debug/systemtap ) - firewalld? ( >=net-firewall/firewalld-0.6.3 ) - fuse? ( sys-fs/fuse:= ) - glusterfs? ( >=sys-cluster/glusterfs-3.4.1 ) - iscsi? ( >=sys-block/open-iscsi-1.18.0 ) - iscsi-direct? ( >=net-libs/libiscsi-1.18.0 ) - libssh? ( >=net-libs/libssh-0.8.1:= ) - libssh2? ( >=net-libs/libssh2-1.3 ) - lvm? ( >=sys-fs/lvm2-2.02.48-r2[lvm] ) - lxc? ( !sys-apps/systemd[cgroup-hybrid(-)] ) - nbd? ( - sys-block/nbdkit - sys-libs/libnbd - ) - nfs? ( net-fs/nfs-utils ) - numa? ( - >sys-process/numactl-2.0.2 - sys-process/numad - ) - parted? ( - >=sys-block/parted-1.8[device-mapper] - sys-fs/lvm2[lvm] - ) - pcap? ( >=net-libs/libpcap-1.8.0 ) - policykit? ( - acct-group/libvirt - >=sys-auth/polkit-0.9 - ) - qemu? ( - >=app-emulation/qemu-4.2 - app-crypt/swtpm - >=dev-libs/yajl-2.0.3:= - ) - rbd? ( sys-cluster/ceph ) - sasl? ( >=dev-libs/cyrus-sasl-2.1.26 ) - selinux? ( >=sys-libs/libselinux-2.0.85 ) - virt-network? ( - net-dns/dnsmasq[dhcp,ipv6(+),script] - net-firewall/ebtables - >=net-firewall/iptables-1.4.10[ipv6(+)] - net-misc/radvd - sys-apps/iproute2[-minimal] - ) - virtiofsd? ( app-emulation/virtiofsd ) - virtualbox? ( =net-analyzer/wireshark-2.6.0:= ) - xen? ( - >=app-emulation/xen-4.9.0 - app-emulation/xen-tools:= - ) - udev? ( - virtual/libudev:= - >=x11-libs/libpciaccess-0.10.9 - ) - zfs? ( sys-fs/zfs ) - kernel_linux? ( sys-apps/util-linux )" -DEPEND=" - ${BDEPEND} - ${RDEPEND} - ${PYTHON_DEPS} -" -# The 'circular' dependency on dev-python/libvirt-python is because of -# virt-qemu-qmp-proxy. -PDEPEND=" - qemu? ( dev-python/libvirt-python ) -" - -PATCHES=( - "${FILESDIR}"/${PN}-9.4.0-fix_paths_in_libvirt-guests_sh.patch - "${FILESDIR}"/${PN}-9.9.0-do-not-use-sysconfig.patch - "${FILESDIR}"/${PN}-9.6.0-fix-paths-for-apparmor.patch - "${FILESDIR}"/${PN}-9.10.0-virxml-include-libxml-xmlsave.h-for-xmlIndentTreeOut.patch - "${FILESDIR}"/${PN}-10.1.0-Fix-off-by-one-error-in-udevListInterfacesByStatus.patch - "${FILESDIR}"/${PN}-10.2.0-remote-check-for-negative-array-lengths-before-alloc.patch - "${FILESDIR}"/${PN}-10.5.0-virt-aa-helper-Allow-RO-access-to-usr-share-edk2-ovm.patch -) - -pkg_setup() { - # Check kernel configuration: - CONFIG_CHECK="" - use fuse && CONFIG_CHECK+=" - ~FUSE_FS" - - use lvm && CONFIG_CHECK+=" - ~BLK_DEV_DM - ~DM_MULTIPATH - ~DM_SNAPSHOT" - - use lxc && CONFIG_CHECK+=" - ~BLK_CGROUP - ~CGROUP_CPUACCT - ~CGROUP_DEVICE - ~CGROUP_FREEZER - ~CGROUP_NET_PRIO - ~CGROUP_PERF - ~CGROUPS - ~CGROUP_SCHED - ~CPUSETS - ~IPC_NS - ~MACVLAN - ~NAMESPACES - ~NET_CLS_CGROUP - ~NET_NS - ~PID_NS - ~POSIX_MQUEUE - ~SECURITYFS - ~USER_NS - ~UTS_NS - ~VETH - ~!GRKERNSEC_CHROOT_MOUNT - ~!GRKERNSEC_CHROOT_DOUBLE - ~!GRKERNSEC_CHROOT_PIVOT - ~!GRKERNSEC_CHROOT_CHMOD - ~!GRKERNSEC_CHROOT_CAPS" - - kernel_is lt 4 7 && use lxc && CONFIG_CHECK+=" - ~DEVPTS_MULTIPLE_INSTANCES" - - use virt-network && CONFIG_CHECK+=" - ~BRIDGE_EBT_MARK_T - ~BRIDGE_NF_EBTABLES - ~NETFILTER_ADVANCED - ~NETFILTER_XT_CONNMARK - ~NETFILTER_XT_MARK - ~NETFILTER_XT_TARGET_CHECKSUM - ~IP_NF_FILTER - ~IP_NF_MANGLE - ~IP_NF_NAT - ~IP6_NF_FILTER - ~IP6_NF_MANGLE - ~IP6_NF_NAT" - - # This was renamed in kernel commit v5.2-rc1~133^2~174^2~6 - if use virt-network ; then - if kernel_is -lt 5 2 ; then - CONFIG_CHECK+=" - ~IP_NF_TARGET_MASQUERADE" - else - CONFIG_CHECK+=" - ~NETFILTER_XT_TARGET_MASQUERADE" - fi - fi - - # Bandwidth Limiting Support - use virt-network && CONFIG_CHECK+=" - ~BRIDGE_EBT_T_NAT - ~IP_NF_TARGET_REJECT - ~NET_ACT_POLICE - ~NET_CLS_FW - ~NET_CLS_U32 - ~NET_SCH_HTB - ~NET_SCH_INGRESS - ~NET_SCH_SFQ" - - ERROR_USER_NS="Optional depending on LXC configuration." - - if [[ -n ${CONFIG_CHECK} ]]; then - linux-info_pkg_setup - fi - - python-any-r1_pkg_setup -} - -src_prepare() { - touch "${S}/.mailmap" || die - - default - python_fix_shebang . - - # Skip fragile tests which relies on pristine environment - # (Breaks because of sandbox environment variables) - # bug #802876 - sed -i -e "/commandtest/d" tests/meson.build || die - - # Tweak the init script: - cp "${FILESDIR}/libvirtd.init-r19" "${S}/libvirtd.init" || die - sed -e "s/USE_FLAG_FIREWALLD/$(usex firewalld 'need firewalld' '')/" \ - -i "${S}/libvirtd.init" || die "sed failed" -} - -src_configure() { - local emesonargs=( - $(meson_feature apparmor) - $(meson_feature apparmor apparmor_profiles) - $(meson_feature audit) - $(meson_feature caps capng) - $(meson_feature dtrace) - $(meson_feature firewalld) - $(meson_feature fuse) - $(meson_feature glusterfs) - $(meson_feature glusterfs storage_gluster) - $(meson_feature iscsi storage_iscsi) - $(meson_feature iscsi-direct storage_iscsi_direct) - $(meson_feature libvirtd driver_libvirtd) - $(meson_feature libssh) - $(meson_feature libssh2) - $(meson_feature lvm storage_lvm) - $(meson_feature lvm storage_mpath) - $(meson_feature lxc driver_lxc) - $(meson_feature nbd nbdkit) - $(meson_feature nls) - $(meson_feature numa numactl) - $(meson_feature numa numad) - $(meson_feature openvz driver_openvz) - $(meson_feature parted storage_disk) - $(meson_feature pcap libpcap) - $(meson_feature policykit polkit) - $(meson_feature qemu driver_qemu) - $(meson_feature qemu yajl) - $(meson_feature rbd storage_rbd) - $(meson_feature sasl) - $(meson_feature selinux) - $(meson_feature test tests) - $(meson_feature udev) - $(meson_feature virt-network driver_network) - $(meson_feature virtualbox driver_vbox) - $(meson_feature wireshark-plugins wireshark_dissector) - $(meson_feature xen driver_libxl) - $(meson_feature zfs storage_zfs) - - -Dnetcf=disabled - -Dsanlock=disabled - -Dopenwsman=disabled - - -Ddriver_esx=enabled - -Dinit_script=systemd - -Dqemu_user=$(usex caps qemu root) - -Dqemu_group=$(usex caps qemu root) - -Ddriver_remote=enabled - -Dstorage_fs=enabled - -Ddriver_vmware=enabled - - --localstatedir="${EPREFIX}/var" - -Dinitconfdir="${EPREFIX}/etc/systemd" - -Drunstatedir="${EPREFIX}/run" - -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" - ) - - # Workaround for bug #938302 - if use dtrace && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then - local native_file="${T}"/meson.${CHOST}.ini.local - cat >> ${native_file} <<-EOF || die - [binaries] - dtrace='stap-dtrace' - EOF - emesonargs+=( --native-file "${native_file}" ) - fi - - meson_src_configure -} - -src_test() { - export VIR_TEST_DEBUG=1 - # Don't run the syntax check tests, they're fragile and not relevant - # to us downstream anyway. - # We also crank up the timeout (as Fedora does) just to preempt failures - # on slower arches. - meson_src_test --no-suite syntax-check --timeout-multiplier 10 -} - -src_install() { - meson_src_install - - # Depending on configuration option, libvirt will create some bogus - # directoreis. They are either not used, or libvirtd is able to create - # them on demand, so let's remove them. - # - # Note, we are using -f here so that rm does not fail or warn if the - # directory is nonexistent. - rm -rf "${D}"/etc/sysconfig - rm -rf "${D}"/var - rm -rf "${D}"/run - - use libvirtd || return 0 - # From here, only libvirtd-related instructions, be warned! - - newtmpfiles "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf - - newinitd "${S}/libvirtd.init" libvirtd - newinitd "${FILESDIR}/libvirt-guests.init-r4" libvirt-guests - newinitd "${FILESDIR}/virtlockd.init-r2" virtlockd - newinitd "${FILESDIR}/virtlogd.init-r2" virtlogd - - newconfd "${FILESDIR}/libvirtd.confd-r5" libvirtd - newconfd "${FILESDIR}/libvirt-guests.confd" libvirt-guests - - DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r3") - DISABLE_AUTOFORMATTING=true - readme.gentoo_create_doc -} - -pkg_postinst() { - if [[ -e "${ROOT}"/etc/libvirt/qemu/networks/default.xml ]]; then - touch "${ROOT}"/etc/libvirt/qemu/networks/default.xml || die - fi - - use libvirtd || return 0 - # From here, only libvirtd-related instructions, be warned! - tmpfiles_process libvirtd.conf - readme.gentoo_print_elog -} diff --git a/app-emulation/libvirt/libvirt-9999.ebuild b/app-emulation/libvirt/libvirt-9999.ebuild index d87fbdaace17..28c7fc107ed5 100644 --- a/app-emulation/libvirt/libvirt-9999.ebuild +++ b/app-emulation/libvirt/libvirt-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -156,7 +156,7 @@ PDEPEND=" " PATCHES=( - "${FILESDIR}"/${PN}-9.4.0-fix_paths_in_libvirt-guests_sh.patch + "${FILESDIR}"/${PN}-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch "${FILESDIR}"/${PN}-9.9.0-do-not-use-sysconfig.patch "${FILESDIR}"/${PN}-10.7.0-fix-paths-for-apparmor.patch ) @@ -205,9 +205,6 @@ pkg_setup() { ~!GRKERNSEC_CHROOT_CHMOD ~!GRKERNSEC_CHROOT_CAPS" - kernel_is lt 4 7 && use lxc && CONFIG_CHECK+=" - ~DEVPTS_MULTIPLE_INSTANCES" - use virt-network && CONFIG_CHECK+=" ~BRIDGE_EBT_MARK_T ~BRIDGE_NF_EBTABLES @@ -215,6 +212,8 @@ pkg_setup() { ~NETFILTER_XT_CONNMARK ~NETFILTER_XT_MARK ~NETFILTER_XT_TARGET_CHECKSUM + ~NETFILTER_XT_TARGET_MASQUERADE + ~NET_ACT_CSUM ~IP_NF_FILTER ~IP_NF_MANGLE ~IP_NF_NAT @@ -222,17 +221,6 @@ pkg_setup() { ~IP6_NF_MANGLE ~IP6_NF_NAT" - # This was renamed in kernel commit v5.2-rc1~133^2~174^2~6 - if use virt-network ; then - if kernel_is -lt 5 2 ; then - CONFIG_CHECK+=" - ~IP_NF_TARGET_MASQUERADE" - else - CONFIG_CHECK+=" - ~NETFILTER_XT_TARGET_MASQUERADE" - fi - fi - # Bandwidth Limiting Support use virt-network && CONFIG_CHECK+=" ~BRIDGE_EBT_T_NAT diff --git a/app-emulation/qemu/Manifest b/app-emulation/qemu/Manifest index d53e317c552e..b92b8ba38792 100644 --- a/app-emulation/qemu/Manifest +++ b/app-emulation/qemu/Manifest @@ -39,7 +39,7 @@ EBUILD qemu-8.2.3.ebuild 28076 BLAKE2B 4ba0551fd54b62ea9cd566221b0a4e8d9743e40e8 EBUILD qemu-8.2.7.ebuild 28076 BLAKE2B 1560832941e14183cb7837bff7da86a8208f9dcf0f260f02549c057c38b225a6a2eeab0c44822704c1a9aeaa05c7d9f1e77b6c59e3b1196b1140e117b59ff058 SHA512 ddcbb71c98b243616fedf7ef71e00f335886cf3a2257f3faf956cd41f6457f6351b2a0af9db2ec99de734237bc64347422e445c1906811e5f02b5458ed462d8f EBUILD qemu-8.2.8.ebuild 28080 BLAKE2B 68226fb94d2febe2e47d27c9452376d420803cd26471ab3e2cf0ca89fdd32b427a3288dfc05dd82c6a1f7d6cd86c6241e5cc22c333247b5d801efbcdb6fef5dc SHA512 b984b809661d79dbbb3b7050da56a14a767b8514c9a2dc88e8f56fa05854d86a5983141dd2c537340bdd74d0a8a29d905670dabcbe86d55f185ed6988ba7f160 EBUILD qemu-9.0.4.ebuild 28295 BLAKE2B 825f64425eede13d8f3be3ddbe002e3976b9a8a341a73665f72e14fa61819ef14b3d20527b082c549584344f9d1811c9ee80be817f5a0b167fd36c4fdc0f1e09 SHA512 d65ae4a48ab9e35cadde02f21150ac055072b4d186da9389db3c147d140a4e510170bb3fe3b02e69d61456e7e5bce2f847fa40015d96272d233690584ea55902 -EBUILD qemu-9.1.2.ebuild 28286 BLAKE2B c1774c10edf579952c369bcc3001732ae0f65112f88145b6c40a988a7d7458214a2837085efce4233861f10a2adacb8a1e762d524dcd6d3d4f4e4954d1c7a546 SHA512 33f78a6155229fa15182c610961500f8a4194fdec76b07bcaedbc81396150e4a5d6fee456c31db4d478751c03e8e99b3739042fac14f19d4dfabd2e90dde7440 +EBUILD qemu-9.1.2.ebuild 28284 BLAKE2B 6939f9253d0b1edfb2dc93bfeeb7014f2a0f7b5a95404c20ce7c4ad0e5a3d4c20b79746df14c96a68b138363cb370db22eb753237ec533fa949844fdf50de304 SHA512 fb482beb951cc48040f159c47cffde7b6447d4424f33bd3a97472fbabf9068361d39a2174d6c1b3ad1ef30fe1084f7dfb6ffb63f446846e93818f17cb8f51769 EBUILD qemu-9.2.0.ebuild 28280 BLAKE2B 3b7299a6e20db1a62b3a9346861cacf7a139ad490c5f6e8038d92188247d7141801486c5dac409b7e28ac0b159fa19b0e38336d0d34190b274a767e3a8cb1f98 SHA512 bf1d8c5baa5c46b4900b0dc43c15d2fc6f30f4a75b772bb4c94d9c6cbe857d461e2a57444f592442ccd0b1c576788d2a1cfc66530edded70eb8452242cc5d919 EBUILD qemu-9999.ebuild 28237 BLAKE2B 358bd951084972f0ac9aaa70beb777a711170bb460704a9d4d27ef6a2c748d7ed6b9a21a6425601ed5d561df2a1e1d568f0330a66c360888d84b982a343ac8cd SHA512 252cf2c2fdfa12c0894adfbca82a5f8bd1b1e62dce9c3f2eb075a0e5e4855b490cea79aa4d3c01e0afa73788d273da813d840c026eaf9a289464a88a15cf4590 MISC metadata.xml 4516 BLAKE2B f46e6395374e5dd22a3304ee5c012311f1ea794038c490ee2e709e3e8ced4f476d34704581b35e049b5f06aa59b59a4392896b566020b35e638c3837eeff66f5 SHA512 34ecef876f4dbfcba11fd02aa40fef9a3a099f4e4912d7a9f81d3663130893b0e1327cd4725e60d47372ee3754435011681e9fff3bd9b97da198273947d47e04 diff --git a/app-emulation/qemu/qemu-9.1.2.ebuild b/app-emulation/qemu/qemu-9.1.2.ebuild index df4b36f615e0..55b0215c9f4e 100644 --- a/app-emulation/qemu/qemu-9.1.2.ebuild +++ b/app-emulation/qemu/qemu-9.1.2.ebuild @@ -47,7 +47,7 @@ else fi S="${WORKDIR}/${MY_P}" - [[ "${PV}" != *_rc* ]] && KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ppc64 ~riscv x86" + [[ "${PV}" != *_rc* ]] && KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv x86" fi DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools" diff --git a/app-emulation/ruffle/Manifest b/app-emulation/ruffle/Manifest index 529003ef346f..cd6170f32d1e 100644 --- a/app-emulation/ruffle/Manifest +++ b/app-emulation/ruffle/Manifest @@ -4,5 +4,5 @@ DIST ruffle-nightly-2024-11-29.tar.gz 94965476 BLAKE2B 9440808ebc0f2db33df06f45e DIST ruffle-nightly-2025-01-24-vendor.tar.xz 67182584 BLAKE2B 0927c7d181f86bb152ef1224efdebc88152b2966a24d11e7434a6b3aff472c8ea47164c9f61f3554561de78bb9a7a9c60648c994fc9feeb03903a72ccd3f8620 SHA512 9cbb5edb8bd7ba8d2a6dccbce20dd8026b3f6f7d47131292e7f55cc3fee7154189b9749b2142d32eaa879b18461c698317dd9b36f808482f656acb9f1dd8253f DIST ruffle-nightly-2025-01-24.tar.gz 95156736 BLAKE2B 7d66931308ab93c0e5cb95727297fbbf03406840c4b793033d277ebfa0c5f8a28e627439736fed4bdc537b3363b691da8efc4b1b3f653a9aa31b741dc0746f56 SHA512 b958e9b685ae529a33253a536fb67030ff0cc1bd78967bbefc5146eced710650f277c32ad37d1f4cd6ce1c43b9be6ad28f51b46ce14afe0644137065a7ef0215 EBUILD ruffle-0_p20241129.ebuild 2625 BLAKE2B 8e1893bbf56737d1d57accdf6da04ca8cff425674b222607fd9b2cb20db1340f0db27d08328e8d61b60bfbe1de13c0f6f3da71e6220755f9baa6b3702a677e83 SHA512 0908e9a179d75cc509315b6c609a17ecd528b7685267a9684e5cdd16a98c913d10a16883d5c4e2605f7404c1c98689d5ae561bdb0a5941ec5390567fd6ccdb8c -EBUILD ruffle-0_p20250124.ebuild 2609 BLAKE2B 859f27f36e93e4fc5f1d6eb17a368ee57141ece4358feae0592f9b87d03c02b3b29a1876a6c6bf2845ae1cfd8a416378c93d6449b76ba87a5b91ef93d69df2b6 SHA512 e941b3913a3b3912b807628e6921ebb3feca907e002e5865f74d06a27a38a1e0df9c93cf7d57ef49384322076bc4121cb9bb00c86f8ad91a13eb700d68e240bb +EBUILD ruffle-0_p20250124.ebuild 2608 BLAKE2B 03244fc9fa053369313c4b87ed7fb017473cfd5486f322d1079dd45bd2f9451ed1cf705697367bbe22e9b2ac1feb27c40a87edd9848db0b0043a3cef00da809b SHA512 91cd3390511db757ad3a11f90ca8bb1afe383b42468f9d286ef4dc616a36d1ae48ea431f0dcde27ffcc920b0107dda0e4bf8c2d891704cae5472cd6c73b51ff1 MISC metadata.xml 327 BLAKE2B aad7b4089000263fccd1bf6af04e88ac138658121db322215ce0dcc85380b12afa01cdcd2be232c5d2c773698b38903759ecaea6f4854d8c90c420c0a43f33b1 SHA512 bb5e665acc6d02ae3e6a22fbb483c293142104e538d386a9b93884f097629dcbb8ca7b614aa20e0358bf22ae36487c7d86cc1467103987845a70ebacc9c4a5d2 diff --git a/app-emulation/ruffle/ruffle-0_p20250124.ebuild b/app-emulation/ruffle/ruffle-0_p20250124.ebuild index 1889e442e4e9..f0d84a0114b5 100644 --- a/app-emulation/ruffle/ruffle-0_p20250124.ebuild +++ b/app-emulation/ruffle/ruffle-0_p20250124.ebuild @@ -24,7 +24,7 @@ LICENSE+=" UbuntuFontLicense-1.0 Unicode-3.0 ZLIB openssl " # crates SLOT="0" -KEYWORDS="~amd64" +KEYWORDS="amd64" IUSE="test" RESTRICT="!test? ( test )" diff --git a/app-emulation/virtiofsd/Manifest b/app-emulation/virtiofsd/Manifest index 657f5767fb6a..6c5681690802 100644 --- a/app-emulation/virtiofsd/Manifest +++ b/app-emulation/virtiofsd/Manifest @@ -108,8 +108,8 @@ DIST windows_i686_msvc-0.48.0.crate 730056 BLAKE2B 4e4ad6ed94948145199c2ed50fc65 DIST windows_x86_64_gnu-0.48.0.crate 703595 BLAKE2B b227efb78a99c43d0538cceadada3fa1840df29adc665787fdcf845b73e77d782da8a9f9aa602e1da61401b550d0107176feb6c397c922a6240b38cc8f04a180 SHA512 38eff1164fb37dbd2bbe53404b20cba92de84cbbd5e4eb9ad60d51fb43d6fdb8b87a1488e2c88ebd4b3ff3b708f93fdc05df4b14a285d3ff11c33ff0d9828602 DIST windows_x86_64_gnullvm-0.48.0.crate 366536 BLAKE2B 295dc3aef18c604d1579978045f4058b1a315083a8ab842bddf5800ec3460b1530ad88c3464acab712a229290aca235810de8a3b6a253859a354d9fa97277e58 SHA512 8d82fad4c8445030844708aa026a62f1ca43362b8e15f14b0d226c7e9cda04ffa0715087b6a025dbb738e8891de24fcc4a2df071a532917cf03c4a46f934f396 DIST windows_x86_64_msvc-0.48.0.crate 671422 BLAKE2B abb063610dcc38581657133182b7d9efeed5553df67bd2bd6f30f1668a645186e4824f9ef556a5abc84ace10b1b437b6325bbda6df5a64ce880d7dcb743ac786 SHA512 6e598b8e3ac54912a8ebac01b0dd2c58fd282072527d7fedc7f6ebecdfb7dcb09ae46c22293bc0117849437f8b053db5e90406e7a38276f0f0afd06be3966795 -EBUILD virtiofsd-1.10.0-r1.ebuild 3242 BLAKE2B d5c5f6db32741c9af12024a11163e7baffeec92ea64a864429b2c6cefbfce8985c6b51113b2b872d6ecd5daef4a75f591df548844c9898f96db2f11f2e9c2126 SHA512 d3e325fa640692af846c495b5dd1689b991ba849a820b086ab00d84c42d3a45fe45342217030105f020fe903f5e79324b2606aad17610965b786257cb9e249d6 -EBUILD virtiofsd-1.10.1-r1.ebuild 3242 BLAKE2B d5c5f6db32741c9af12024a11163e7baffeec92ea64a864429b2c6cefbfce8985c6b51113b2b872d6ecd5daef4a75f591df548844c9898f96db2f11f2e9c2126 SHA512 d3e325fa640692af846c495b5dd1689b991ba849a820b086ab00d84c42d3a45fe45342217030105f020fe903f5e79324b2606aad17610965b786257cb9e249d6 -EBUILD virtiofsd-1.11.1-r1.ebuild 3512 BLAKE2B d014cf3348cbe41286622b7a73f3d134901c99d0133ecdf477e4e2a770ceaef73ad07a4ae291cb6fbd4b2f05bbd14b0591ebab9e337f29f645eb362ef50428f1 SHA512 9b4ead9303fb19b4e585af9d6bb8e7bf4e22e73d8421f0ccd37bc9e713c6d053e93ab4987ca93713cc04f35bed3fe023e67f94b9a295a0c5e7a7d0b54fd59d0a -EBUILD virtiofsd-9999.ebuild 3514 BLAKE2B 8a4a4927944e9090cbf5fcd97ac6e146cf8cf09c25b0f67d268042b13424abc8b66fda55f5c1616a0e2c7abc6410885fe5c2d4e999d5f187cef32ebb1cb89c42 SHA512 1d520b6f1339c2c7b35f2b6a0aa7ee867563b67596840a85bb187d9e7f6a17e881c61884799f92f07af928fee3edc515347ab07e0ee715a4d961a6e949947714 +EBUILD virtiofsd-1.10.0-r2.ebuild 3262 BLAKE2B 0c38d248d1561711a6c035f6fc20d21f8bc76b8712a93376bcbb449af48f1fc41f86a3e3df5e0d27b00dbab1d857f356111a1c6e51ef10c4717d0e8e18fd8faf SHA512 393248ba1861d1ceef2ba2ef0162106b1f0f81413e8eb515c3be598445a52ab8e55f5758462816214872aa935c7d1c1eb32d6f78fb64ad3c34cea38ea5dac3d6 +EBUILD virtiofsd-1.10.1-r2.ebuild 3262 BLAKE2B 0c38d248d1561711a6c035f6fc20d21f8bc76b8712a93376bcbb449af48f1fc41f86a3e3df5e0d27b00dbab1d857f356111a1c6e51ef10c4717d0e8e18fd8faf SHA512 393248ba1861d1ceef2ba2ef0162106b1f0f81413e8eb515c3be598445a52ab8e55f5758462816214872aa935c7d1c1eb32d6f78fb64ad3c34cea38ea5dac3d6 +EBUILD virtiofsd-1.11.1-r2.ebuild 3532 BLAKE2B e6852baea788130197e13c1d450221eec9ffc4c5d42b18861b70389f1de63a15bab21fd6260ae007640212831b4d7964e5f8750ad82ae3ec0b0e425fd92493f5 SHA512 fd748235fe6edbb9cbd2ff8a72e189434f5295ea72f13b0d179e8825d83ffa0d646d35b17b00ba0232d655088dab40a1dd4ab66fd07f139f5adca1986f5069ea +EBUILD virtiofsd-9999.ebuild 3534 BLAKE2B 912af0634e4817161e5605da76aeeb08496b59834023d7a2e6b73f339a328087645889730c254e10cd3c050cfd58f7e99dbd93112ce47aefbe78f7ee27272677 SHA512 5642cb9cb408be36ed0a3f6568a9faaafaf30e7719db8efe4d09bfdf5e65c048494425cf62efa3c312f8fd9e42f53dd7681ebffd62d55ccb1c942eeef52eeced MISC metadata.xml 489 BLAKE2B bc6fc4d8ed57fb5a61ea1e2097e8e6deb1ddc302a55d5e5b25995686701c20bffdf066c7d68c84f94aa99ff0bf0551eb8ad44bda627e92741b995c355c28e33c SHA512 db2f4049f8e48b16198cc06c70ce46ca94875590ef82d75d3363fd4ec67de4d5ea35a544f709e466bb8689b9100605439f3207d22f1a06fce7428b1fb706a5c7 diff --git a/app-emulation/virtiofsd/virtiofsd-1.10.0-r1.ebuild b/app-emulation/virtiofsd/virtiofsd-1.10.0-r1.ebuild deleted file mode 100644 index 7358e8fdae58..000000000000 --- a/app-emulation/virtiofsd/virtiofsd-1.10.0-r1.ebuild +++ /dev/null @@ -1,148 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -CRATES=" - aho-corasick@0.7.18 - anstream@0.3.2 - anstyle@1.0.1 - anstyle-parse@0.2.1 - anstyle-query@1.0.0 - anstyle-wincon@1.0.1 - arc-swap@1.5.0 - atty@0.2.14 - autocfg@1.1.0 - bitflags@1.3.2 - bitflags@2.4.1 - capng@0.2.2 - cc@1.0.79 - cfg-if@1.0.0 - clap@4.3.11 - clap_builder@4.3.11 - clap_derive@4.3.2 - clap_lex@0.5.0 - colorchoice@1.0.0 - env_logger@0.8.4 - errno@0.3.1 - errno-dragonfly@0.1.2 - error-chain@0.12.4 - futures@0.3.21 - futures-channel@0.3.21 - futures-core@0.3.21 - futures-executor@0.3.21 - futures-io@0.3.21 - futures-macro@0.3.21 - futures-sink@0.3.21 - futures-task@0.3.21 - futures-util@0.3.21 - heck@0.4.1 - hermit-abi@0.1.19 - hermit-abi@0.3.2 - hostname@0.3.1 - humantime@2.1.0 - is-terminal@0.4.9 - itoa@1.0.2 - libc@0.2.147 - libseccomp-sys@0.2.1 - linux-raw-sys@0.4.5 - log@0.4.17 - match_cfg@0.1.0 - memchr@2.5.0 - num_cpus@1.13.1 - num_threads@0.1.6 - once_cell@1.18.0 - pin-project-lite@0.2.9 - pin-utils@0.1.0 - proc-macro2@1.0.63 - quote@1.0.29 - regex@1.6.0 - regex-syntax@0.6.27 - rustix@0.38.7 - slab@0.4.7 - strsim@0.10.0 - syn@1.0.98 - syn@2.0.23 - syslog@6.0.1 - termcolor@1.1.3 - thiserror@1.0.41 - thiserror-impl@1.0.41 - time@0.3.11 - unicode-ident@1.0.2 - utf8parse@0.2.1 - version_check@0.9.4 - vhost@0.10.0 - vhost-user-backend@0.13.1 - virtio-bindings@0.2.2 - virtio-queue@0.11.0 - vm-memory@0.14.0 - vmm-sys-util@0.12.1 - winapi@0.3.9 - winapi-i686-pc-windows-gnu@0.4.0 - winapi-util@0.1.5 - winapi-x86_64-pc-windows-gnu@0.4.0 - windows-sys@0.48.0 - windows-targets@0.48.1 - windows_aarch64_gnullvm@0.48.0 - windows_aarch64_msvc@0.48.0 - windows_i686_gnu@0.48.0 - windows_i686_msvc@0.48.0 - windows_x86_64_gnu@0.48.0 - windows_x86_64_gnullvm@0.48.0 - windows_x86_64_msvc@0.48.0 -" - -inherit cargo - -DESCRIPTION="Shared file system for virtual machines" -HOMEPAGE="https://virtio-fs.gitlab.io/" - -if [[ ${PV} == *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.com/virtio-fs/virtiofsd.git" - EGIT_BRANCH="main" -else - SRC_URI="https://gitlab.com/virtio-fs/virtiofsd/-/archive/v${PV}/virtiofsd-v${PV}.tar.bz2" - SRC_URI+=" ${CARGO_CRATE_URIS}" - KEYWORDS="amd64 ppc64" - S="${WORKDIR}/${PN}-v${PV}" -fi - -LICENSE="Apache-2.0 BSD" -# Dependent crate licenses -LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-DFS-2016 Unlicense" -SLOT="0" - -DEPEND=" - sys-libs/libcap-ng - sys-libs/libseccomp -" -RDEPEND="${DEPEND}" - -# rust does not use *FLAGS from make.conf, silence portage warning -# update with proper path to binaries this crate installs, omit leading / -QA_FLAGS_IGNORED="usr/libexec/${PN}" - -src_unpack() { - if [[ "${PV}" == *9999* ]]; then - git-r3_src_unpack - cargo_live_src_unpack - else - cargo_src_unpack - fi -} - -src_install() { - cargo_src_install - - mkdir "${ED}/usr/libexec" || die - mv "${ED}/usr/"{bin,libexec}/${PN} || die - - # Install 50-virtiofsd.json but to avoid conflicts with - # LocalConfig.kmk || die + + if ! use pch; then + # bug #753323 + printf '\n%s\n' "VBOX_WITHOUT_PRECOMPILED_HEADERS=1" \ + >> LocalConfig.kmk || die + fi + + # bug #916002, #488176, #925347 + tc-ld-is-mold || tc-ld-force-bfd + + # Respect LDFLAGS + sed -e "s@_LDFLAGS\.${ARCH}*.*=@& ${LDFLAGS}@g" \ + -i Config.kmk src/libs/xpcom18a4/Config.kmk || die + + # Do not use hard-coded ld (related to bug #488176) + sed -e '/QUIET)ld /s@ld @$(LD) @' \ + -i src/VBox/Devices/PC/ipxe/Makefile.kmk || die + + # Use PAM only when pam USE flag is enbaled (bug #376531) + if ! use pam; then + einfo "Disabling PAM removes the possibility to use the VRDP features." + sed -i 's@^.*VBOX_WITH_PAM@#VBOX_WITH_PAM@' Config.kmk || die + sed -i 's@\(.*/auth/Makefile.kmk.*\)@#\1@' \ + src/VBox/HostServices/Makefile.kmk || die + echo -e "\nIPRT_WITHOUT_PAM=1" >> LocalConfig.kmk || die + fi + + # add correct java path + if use java; then + sed "s@/usr/lib/jvm/java-6-sun@$(java-config -O)@" \ + -i "${S}"/Config.kmk || die + java-pkg-opt-2_src_prepare + fi + + # bug #940482 + filter-flags -fno-plt + + # bug #908814 + filter-lto + + # bug #843437 + cat >> LocalConfig.kmk <<-EOF || die + CXXFLAGS=${CXXFLAGS} + CFLAGS=${CFLAGS} + EOF + + if use sdl; then + sed -i 's/sdl-config/sdl2-config/' configure || die + echo -e "\nVBOX_WITH_VBOXSDL=1" >> LocalConfig.kmk || die + fi + + #443830 + echo -e "\nVBOX_WITH_VBOX_IMG=1" >> LocalConfig.kmk || die + + if tc-is-clang; then + # clang does not support this extension + eapply "${FILESDIR}"/${PN}-7.1.0-disable-rebuild-iPxeBiosBin.patch + fi + + # fix doc generation + echo -e "\nVBOX_PATH_DOCBOOK=/usr/share/sgml/docbook/xsl-ns-stylesheets" >> LocalConfig.kmk || die + # replace xhtml names with numeric equivalents + find doc/manual -name \*.xml -exec sed -i \ + -e 's/ /\ /g' \ + -e 's/–/\–/g' \ + -e 's/←/\←/g' \ + -e 's/→/\→/g' \ + -e 's/↔/\↔/g' {} \+ || die + + # fix help path #891879 + echo -e "\nVBOX_PATH_PACKAGE_DOCS=/usr/share/doc/${PF}" >> LocalConfig.kmk || die + + # 489208 + # Cannot patch the whole text, many translations. Use sed instead to replace the command + find src/VBox/Frontends/VirtualBox/nls -name \*.ts -exec sed -i \ + 's/'[^&]*\(vboxdrv setup\|vboxconfig\)'/\'emerge -1 virtualbox-modules\'/' {} \+ || die + sed -i "s:'/sbin/vboxconfig':'emerge -1 virtualbox-modules':" \ + src/VBox/Frontends/VirtualBox/src/main.cpp \ + src/VBox/VMM/VMMR3/VM.cpp || die + + # 890561 + echo -e "\nVBOX_GTAR=gtar" >> LocalConfig.kmk || die + + if ! use nls && ! use gui; then + cat >> LocalConfig.kmk <<-EOF || die + VBOX_WITH_NLS := + VBOX_WITH_MAIN_NLS := + VBOX_WITH_PUEL_NLS := + VBOX_WITH_VBOXMANAGE_NLS := + EOF + fi +} + +src_configure() { + tc-export AR CC CXX LD RANLIB + export HOST_CC="$(tc-getBUILD_CC)" + + local myconf=( + --with-gcc="$(tc-getCC)" + --with-g++="$(tc-getCXX)" + + --disable-kmods + --with-kvm + + $(usev !alsa --disable-alsa) + $(usev !dbus --disable-dbus) + $(usev debug --build-debug) + $(usev !doc --disable-docs) + $(usev !hardened --disable-hardening) + $(usev !java --disable-java) + $(usev !lvm --disable-devmapper) + $(usev !pulseaudio --disable-pulse) + $(usev !python --disable-python) + $(usev vboxwebsrv --enable-webservice) + $(usev vde --enable-vde) + $(usev !vmmraw --disable-vmmraw) + $(usev vnc --enable-vnc) + ) + + if use gui || use sdl || use opengl; then + myconf+=( + $(usev !opengl --disable-opengl) + $(usev !gui --disable-qt) + $(usev !sdl --disable-sdl) + ) + else + myconf+=( + --build-headless + ) + fi + + if use amd64 && ! has_multilib_profile; then + myconf+=( --disable-vmmraw ) + fi + + # not an autoconf script + edo ./configure "${myconf[@]}" + + # Force usage of chosen Python implementation + # bug #856121, bug #785835 + sed -i \ + -e '/VBOX_WITH_PYTHON.*=/d' \ + -e '/VBOX_PATH_PYTHON_INC.*=/d' \ + -e '/VBOX_LIB_PYTHON.*=/d' \ + AutoConfig.kmk || die + + if use python; then + cat >> AutoConfig.kmk <<-EOF || die + VBOX_WITH_PYTHON=$(usev python 1) + VBOX_PATH_PYTHON_INC=$(python_get_includedir) + VBOX_LIB_PYTHON=$(python_get_library_path) + EOF + + local mangled_python="${EPYTHON#python}" + mangled_python="${mangled_python/.}" + + # Stub out the script which defines what the Makefile ends up + # building for. gen_python_deps.py gets called by the Makefile + # with some args and it spits out a bunch of paths for a hardcoded + # list of Pythons. We just override it with what we're actually using. + # This minimises the amount of patching we have to do for new Pythons. + cat > src/libs/xpcom18a4/python/gen_python_deps.py <<-EOF || die + print("VBOX_PYTHON${mangled_python}_INC=$(python_get_includedir)") + print("VBOX_PYTHON${mangled_python}_LIB=$(python_get_library_path)") + print("VBOX_PYTHONDEF_INC=$(python_get_includedir)") + print("VBOX_PYTHONDEF_LIB=$(python_get_library_path)") + EOF + + chmod +x src/libs/xpcom18a4/python/gen_python_deps.py || die + else + cat >> AutoConfig.kmk <<-EOF || die + VBOX_WITH_PYTHON:= + EOF + fi +} + +src_compile() { + source ./env.sh || die + + # Force kBuild to respect C[XX]FLAGS and MAKEOPTS (bug #178529) + MAKEJOBS=$(grep -Eo '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS}) + MAKELOAD=$(grep -Eo '(\-l|\-\-load-average)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS}) + MAKEOPTS="${MAKEJOBS} ${MAKELOAD}" + + local myemakeargs=( + VBOX_BUILD_PUBLISHER=_Gentoo + VBOX_WITH_VBOXIMGMOUNT=1 + + KBUILD_VERBOSE=2 + + AS="$(tc-getCC)" + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + + TOOL_GCC3_CC="$(tc-getCC)" + TOOL_GCC3_LD="$(tc-getCC)" + TOOL_GCC3_AS="$(tc-getCC)" + TOOL_GCC3_AR="$(tc-getAR)" + TOOL_GCC3_OBJCOPY="$(tc-getOBJCOPY)" + + TOOL_GXX3_CC="$(tc-getCC)" + TOOL_GXX3_CXX="$(tc-getCXX)" + TOOL_GXX3_LD="$(tc-getCXX)" + TOOL_GXX3_AS="$(tc-getCXX)" + TOOL_GXX3_AR="$(tc-getAR)" + TOOL_GXX3_OBJCOPY="$(tc-getOBJCOPY)" + + TOOL_GCC3_CFLAGS="${CFLAGS}" + TOOL_GCC3_CXXFLAGS="${CXXFLAGS}" + VBOX_GCC_OPT="${CXXFLAGS}" + VBOX_NM="$(tc-getNM)" + + TOOL_YASM_AS=yasm + ) + + if use amd64 && has_multilib_profile; then + myemakeargs+=( + CC32="$(tc-getCC) -m32" + CXX32="$(tc-getCXX) -m32" + + TOOL_GCC32_CC="$(tc-getCC) -m32" + TOOL_GCC32_CXX="$(tc-getCXX) -m32" + TOOL_GCC32_LD="$(tc-getCC) -m32" + TOOL_GCC32_AS="$(tc-getCC) -m32" + TOOL_GCC32_AR="$(tc-getAR)" + TOOL_GCC32_OBJCOPY="$(tc-getOBJCOPY)" + + TOOL_GXX32_CC="$(tc-getCC) -m32" + TOOL_GXX32_CXX="$(tc-getCXX) -m32" + TOOL_GXX32_LD="$(tc-getCXX) -m32" + TOOL_GXX32_AS="$(tc-getCXX) -m32" + TOOL_GXX32_AR="$(tc-getAR)" + TOOL_GXX32_OBJCOPY="$(tc-getOBJCOPY)" + ) + fi + + if use doc; then + # dita needs to write to ~/.fop and ~/.java + # but it ignores ${HOME} and tries to write to the real home of user portage + # resulting in a sandbox violation + # -Duser.home= does not work + # force using the temporary homedir with nss_wrapper + echo "${LOGNAME}::$(id -u):$(id -g):${USER}:${HOME}:/bin/bash" >> ~/passwd + echo "${LOGNAME}::$(id -g):" >> ~/group + + local -x LD_PRELOAD=libnss_wrapper.so + local -x NSS_WRAPPER_PASSWD="${HOME}"/passwd + local -x NSS_WRAPPER_GROUP="${HOME}"/group + fi + + MAKE="kmk" emake "${myemakeargs[@]}" all +} + +src_test() { + if use python; then + local -x VBOX_APP_HOME="${S}"/out/linux.${ARCH}/$(usex debug debug release) + local -x VBOX_INSTALL_PATH="${VBOX_APP_HOME}" + local -x VBOX_PROGRAM_PATH="${VBOX_APP_HOME}"/bin + local -x VBOX_SDK_PATH="${VBOX_PROGRAM_PATH}"/sdk + local -x PYTHONPATH="${VBOX_SDK_PATH}"/installer/python/vboxapi/src + einfo "VBOX_APP_HOME ${VBOX_APP_HOME}" + einfo "VBOX_PROGRAM_PATH ${VBOX_PROGRAM_PATH}" + einfo "VBOX_SDK_PATH ${VBOX_SDK_PATH}" + einfo "PYTHONPATH ${PYTHONPATH}" + LD_LIBRARY_PATH="${VBOX_PROGRAM_PATH}" epytest test/ + fi +} + +src_install() { + cd "${S}"/out/linux.${ARCH}/$(usex debug debug release)/bin || die + + local vbox_inst_path="/usr/$(get_libdir)/${MY_PN}" each size ico icofile + + vbox_inst() { + local binary="${1}" + local perms="${2:-0750}" + local path="${3:-${vbox_inst_path}}" + + [[ -n "${binary}" ]] || die "vbox_inst: No binary given!" + [[ ${perms} =~ ^[[:digit:]]+{4}$ ]] || die "vbox_inst: perms must consist of four digits." + + insinto ${path} + doins ${binary} + fowners root:vboxusers ${path}/${binary} + fperms ${perms} ${path}/${binary} + } + + # Create configuration files + insinto /etc/vbox + newins "${FILESDIR}/${MY_PN}-4-config" vbox.cfg + + # Set the correct libdir + sed \ + -e "s@MY_LIBDIR@$(get_libdir)@" \ + -i "${ED}"/etc/vbox/vbox.cfg || die "vbox.cfg sed failed" + + # Install the wrapper script + exeinto ${vbox_inst_path} + newexe "${FILESDIR}/${MY_PN}-ose-6-wrapper" "VBox" + fowners root:vboxusers ${vbox_inst_path}/VBox + fperms 0750 ${vbox_inst_path}/VBox + + # Install binaries and libraries + insinto ${vbox_inst_path} + doins -r components + + for each in VBox{Autostart,BalloonCtrl,BugReport,CpuReport,ExtPackHelperApp,Manage,SVC,VMMPreload} \ + vboximg-mount vbox-img *so *r0; do + vbox_inst ${each} + done + + # These binaries need to be suid root with USE=hardened. + local mode=$(usex hardened 4750 0750) + for each in VBox{Headless,Net{AdpCtl,DHCP,NAT}} ; do + vbox_inst ${each} ${mode} + done + + # Install EFI Firmware files (bug #320757) + for each in VBoxEFI{32,64}.fd ; do + vbox_inst ${each} 0644 + done + + # VBoxSVC and VBoxManage need to be pax-marked (bug #403453) + # VBoxXPCOMIPCD (bug #524202) + for each in VBox{Headless,Manage,SVC,XPCOMIPCD} ; do + pax-mark -m "${ED}"${vbox_inst_path}/${each} + done + + # Symlink binaries to the shipped wrapper + for each in vbox{autostart,balloonctrl,bugreport,headless,manage} \ + VBox{Autostart,BalloonCtrl,BugReport,Headless,Manage,VRDP} ; do + dosym ${vbox_inst_path}/VBox /usr/bin/${each} + done + dosym ${vbox_inst_path}/vboximg-mount /usr/bin/vboximg-mount + dosym ${vbox_inst_path}/vbox-img /usr/bin/vbox-img + + if use pam; then + # VRDPAuth only works with this (bug #351949) + dosym VBoxAuth.so ${vbox_inst_path}/VRDPAuth.so + fi + + # set an env-variable for 3rd party tools + echo "VBOX_APP_HOME=${vbox_inst_path}" > "${T}/90virtualbox" + # environment variables used during SDK binding installation + echo "VBOX_SDK_PATH=${vbox_inst_path}/sdk" >> "${T}/90virtualbox" + echo "VBOX_INSTALL_PATH=${vbox_inst_path}" >> "${T}/90virtualbox" + doenvd "${T}/90virtualbox" + + if use sdl; then + vbox_inst VBoxSDL ${mode} + pax-mark -m "${ED}"${vbox_inst_path}/VBoxSDL + + for each in vboxsdl VBoxSDL ; do + dosym ${vbox_inst_path}/VBox /usr/bin/${each} + done + fi + + if use gui; then + vbox_inst VirtualBox + vbox_inst VirtualBoxVM ${mode} + for each in VirtualBox{,VM} ; do + pax-mark -m "${ED}"${vbox_inst_path}/${each} + done + + for each in virtualbox{,vm} VirtualBox{,VM} ; do + dosym ${vbox_inst_path}/VBox /usr/bin/${each} + done + + insinto /usr/share/${PN} + doins -r nls + doins -r UnattendedTemplates + + newmenu ${MY_PN}.desktop ${PN}.desktop + + pushd "${S}"/src/VBox/Artwork/OSE &>/dev/null || die + for size in 16 32 48 64 128 ; do + newicon -s ${size} ${MY_PN}-${size}px.png ${PN}.png + done + newicon ${MY_PN}-48px.png ${PN}.png + newicon -s scalable ${MY_PN}.svg ${PN}.png + popd &>/dev/null || die + pushd "${S}"/src/VBox/Artwork/other &>/dev/null || die + for size in 16 24 32 48 64 72 96 128 256 512 ; do + for ico in hdd ova ovf vbox{,-extpack} vdi vdh vmdk ; do + icofile="${MY_PN}-${ico}-${size}px.png" + if [[ -f "${icofile}" ]]; then + newicon -s ${size} ${icofile} ${MY_PN}-${ico}.png + fi + done + done + popd &>/dev/null || die + fi + + if use lvm; then + vbox_inst VBoxVolInfo ${mode} + dosym ${vbox_inst_path}/VBoxVolInfo /usr/bin/VBoxVolInfo + fi + + if use sdk; then + insinto ${vbox_inst_path} + doins -r sdk + + if use java; then + java-pkg_regjar "${ED}/${vbox_inst_path}/sdk/bindings/xpcom/java/vboxjxpcom.jar" + java-pkg_regso "${ED}/${vbox_inst_path}/libvboxjxpcom.so" + fi + fi + + if use udev; then + local udevdir="$(get_udevdir)" + local udev_file="VBoxCreateUSBNode.sh" + local rules_file="10-virtualbox.rules" + + insinto ${udevdir} + doins ${udev_file} + fowners root:vboxusers ${udevdir}/${udev_file} + fperms 0750 ${udevdir}/${udev_file} + + insinto ${udevdir}/rules.d + sed "s@%UDEVDIR%@${udevdir}@" "${FILESDIR}"/${rules_file} \ + > "${T}"/${rules_file} || die + doins "${T}"/${rules_file} + fi + + if use vboxwebsrv; then + vbox_inst vboxwebsrv + dosym ${vbox_inst_path}/VBox /usr/bin/vboxwebsrv + newinitd "${FILESDIR}"/vboxwebsrv-initd vboxwebsrv + newconfd "${FILESDIR}"/vboxwebsrv-confd vboxwebsrv + fi + + # Remove dead symlinks (bug #715338) + find "${ED}"/usr/$(get_libdir)/${MY_PN} -xtype l -delete || die + + # Fix version string in extensions or else they don't get accepted + # by the virtualbox host process (see bug #438930) + find ExtensionPacks -type f -name "ExtPack.xml" -exec sed -i '/Version/s@_Gentoo@@' {} \+ || die + + local extensions_dir="${vbox_inst_path}/ExtensionPacks" + + if use vnc; then + insinto ${extensions_dir} + doins -r ExtensionPacks/VNC + fi + + if use dtrace; then + insinto ${extensions_dir} + doins -r ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack + fi + + if use doc; then + dodoc UserManual.pdf UserManual.q{ch,hc} + docompress -x /usr/share/doc/${PF}/UserManual.q{ch,hc} + elif use gui; then + dodoc "${WORKDIR}"/${MY_PN}-help-${ORIGIN_PV}/UserManual.q{ch,hc} + docompress -x /usr/share/doc/${PF}/UserManual.q{ch,hc} + fi + dodoc ${PATCHES_DIR}/README.* + + if use python; then + local python_path_ext="${ED}/usr/$(get_libdir)/virtualbox/VBoxPython3.so" + if [[ ! -x "${python_path_ext}" ]]; then + eerror "Couldn't find ${python_path_ext}! Bindings were requested with USE=python" + eerror "but none were installed. This may happen if support for a Python target" + eerror "(listed in PYTHON_COMPAT in the ebuild) is incomplete within the Makefiles." + die "Incomplete installation of Python bindings! File a bug with Gentoo!" + fi + + # 378871 + local installer_dir="${ED}/usr/$(get_libdir)/virtualbox/sdk/installer/python/vboxapi/src" + pushd "${installer_dir}" &> /dev/null || die + sed -e "s;%VBOX_INSTALL_PATH%;${vbox_inst_path};" \ + -e "s;%VBOX_SDK_PATH%;${vbox_inst_path}/sdk;" \ + -i vboxapi/__init__.py || die + # insert shebang, the files come without one + find vboxapi -name \*.py -exec sed -e "1 i\#! ${PYTHON}" -i {} \+ || die + python_domodule vboxapi + popd &> /dev/null || die + + # upstream added a /bin/sh stub here + # use /usr/bin/python3, python_doscript will take care of it + sed -e '1 i #! /usr/bin/python3' -i vboxshell.py + python_doscript vboxshell.py + + # do not install the installer + rm -r "${installer_dir%vboxapi*}" || die + fi + + newtmpfiles "${FILESDIR}"/${MY_PN}-vboxusb_tmpfilesd virtualbox-vboxusb.conf +} + +pkg_postinst() { + xdg_pkg_postinst + + if use udev; then + udev_reload + udevadm trigger --subsystem-match=usb + fi + + tmpfiles_process virtualbox-vboxusb.conf + + if use gui; then + elog "To launch VirtualBox just type: \"virtualbox\"." + fi + + elog "You must be in the vboxusers group to use VirtualBox." + elog "" + elog "The latest user manual is available for download at:" + elog "https://download.virtualbox.org/virtualbox/${ORIGIN_PV}/UserManual.pdf" + elog "" + + optfeature "Advanced networking setups" net-misc/bridge-utils sys-apps/usermode-utilities + optfeature "USB2, USB3, PXE boot, and VRDP support" app-emulation/virtualbox-extpack-oracle + optfeature "Guest additions ISO" app-emulation/virtualbox-additions + + if ! use udev; then + ewarn "Without USE=udev, USB devices will likely not work in ${MY_PN}." + fi +} + +pkg_postrm() { + xdg_pkg_postrm + + use udev && udev_reload +} diff --git a/app-emulation/vkd3d-proton/Manifest b/app-emulation/vkd3d-proton/Manifest index d5b48eb74fdb..4e97131b3422 100644 --- a/app-emulation/vkd3d-proton/Manifest +++ b/app-emulation/vkd3d-proton/Manifest @@ -20,4 +20,4 @@ EBUILD vkd3d-proton-2.13.ebuild 7797 BLAKE2B 22686584d6e884394ab857d68bf14b1af0d EBUILD vkd3d-proton-2.14.1.ebuild 7797 BLAKE2B c1bb1f4e7c1b80534b7b9a196c84e37fdb69f9d69f8e8d9283e13c01c567c2807d1292f61b35759845c0a1ed6541a8b26270d0067bc4c504cb33bd9a3079540e SHA512 2993b07c3f74345ae93b664e8455fe8edcc7416d8fbd9568cee3fe236f8a616c03e46c94fc9fb7c8520bca353d13d5334ee43aae02ad572e8db96d7df59e6c4c EBUILD vkd3d-proton-2.6-r1.ebuild 6898 BLAKE2B d65133bfa465040c0f8a2c5d148d907ebe063589f5ef3916c39d9441a409d759127561ee006454b75d8eecb36c6a083eefbc0739a2fee06b63f9c0bf7a2a34d8 SHA512 92f849054d2f4e26a5533b8db9417e7baebaaad99fd4393915503b2edc6c25caa7ed99720bf6bc17bd9bc3b065cca8fb61fbb0c77bd2f2036fbd1a4d0ddb19c3 EBUILD vkd3d-proton-9999.ebuild 7599 BLAKE2B 914e57c539f829bdc09b41c38e676e297be8aa8edd83772cb9a9faf0daaa4a7213e36460691b240560b34a1228bd9f1adb2ebc8f6ad1d30fed9885b9bc73c521 SHA512 c5929ab80d96c636e82b03ec4da2d43be30c6b08898e6c03e0f2aad1b388eea5727d8fc3597c4b08167ced0057d915dfe6727eeceea365a34efd68537731ee70 -MISC metadata.xml 618 BLAKE2B 4382557118c0ea56972d05a10c9cc1f94a4fbcc58a414f1cd5e4354ce6ed1de15c95377f167ed5627231c2887ecce3c00756908720458fedddea5ed6732771ff SHA512 b5cc86b412c30ee5d54868a87c9f4892337c83988b738806532cd9e2cc295a2326e776030c19cae9a2e9dd4f5f615b1d962ec48a4b310fd8a94ec4024dde99ab +MISC metadata.xml 677 BLAKE2B 1caac710282366e24f8276c8748d9c84e19fcf9a064e901fbca4989be500f56be0e01d7a499aba5435d3537ae80111a7ca6842755bde7f3e34eba517c8e19e83 SHA512 89151eba97cd38f7c8d13c697ada2c2d2b9cff1ad16af42243f387f0700cb824304a9d6e1b740bb43c2474cf77e2550718d4a03d33095a254b7491ff5f1f3daa diff --git a/app-emulation/vkd3d-proton/metadata.xml b/app-emulation/vkd3d-proton/metadata.xml index 65a03f88f50d..40d54a318008 100644 --- a/app-emulation/vkd3d-proton/metadata.xml +++ b/app-emulation/vkd3d-proton/metadata.xml @@ -8,7 +8,8 @@ Use sys-devel/crossdev for the toolchain rather than - dev-util/mingw64-toolchain (requires manual setting up) + dev-util/mingw64-toolchain (requires manual setting up + and is mostly unsupported, try disabling if have issues) Install extra tools and demos in /usr/lib/vkd3d-proton diff --git a/app-emulation/wine-gecko/Manifest b/app-emulation/wine-gecko/Manifest index 1d6656be1980..9d5400d2cfd8 100644 --- a/app-emulation/wine-gecko/Manifest +++ b/app-emulation/wine-gecko/Manifest @@ -1,7 +1,3 @@ -DIST wine-gecko-2.47.2-x86.msi 59162112 BLAKE2B 75197c5145dd047d637ea950ed1df918b79446bbb5aae642a90d95af96870cd1756b8469deca105d986ae2dc166ad1b2b89dd7e16c7d13baa4b215b30c3ba909 SHA512 4e6e688fada1edd3d7e0e131246dcae8c6db1a2fde946540b6f8c8b2deee8aa19f210368132f00789d4f49bf2b5e5ac671d4d3699f557e652ece50e55fbcbd43 -DIST wine-gecko-2.47.2-x86.tar.xz 45556880 BLAKE2B 43334edd68f22e21347a49bcd7321d90111652fe6143fcb94fa97cee950701f1891b41e8c4ea75854d5232a74c2007534d3fdb190c6abfb96290193f6a4546d2 SHA512 de39bacf9e8b45971e3e675ccbbac0731855b81e148619a98fb126c38ab385f10f1e68e0a52a663fa1a079192b378f4d4e4cdb0a11c5e9dd46221a9604214250 -DIST wine-gecko-2.47.2-x86_64.msi 55354880 BLAKE2B c234602e29a6597d26e7a78ec85ac66471ecd8fcea5360d6f32323e4cbee4aca2ccd5530706e8779346ff2d08f1c4900fef198763e431ce7cd232ef117933336 SHA512 9bbaf061d5d2035e6df0898a847697bbed071abaf95ccde08b5ace7a2c6fc871db16443596b23a889def82f98591973fe8ca88063021d8779f8faa48973f239c -DIST wine-gecko-2.47.2-x86_64.tar.xz 43025348 BLAKE2B 0c956043d7a49cdd88a3af4b25191087fd638a68b958e13a46bbf4310ecf7cdeb973eb3ea5b254f2d4f90f2a715d35c25a67b1883159a60a0ff6eea70e0f1077 SHA512 cf7af1087823188c3be6665d7662bf1029c58b4b8db271e5f4bfed15df217b905653b034b62ed0fa961f528be40f0325b378669d27c9a18ef5b9d98ef8c63aeb DIST wine-gecko-2.47.3-x86.msi 55686144 BLAKE2B ce428b35ce70968c12141832aab6044a4e9ecb198b7ce0af69264de2ef16aa7045b154e8dbcb17ef068e5a30a19224014a07210583166394353c0b67ad3f119b SHA512 988390450e5e64bde903595e8cbed39b6e9c6ea928130f6f20cc3c6692c46db8c2a2e0c5dc49ea324e96ee65af3749414aad8b092a02bf7453499178e01c7527 DIST wine-gecko-2.47.3-x86.tar.xz 43291212 BLAKE2B 441659dd002c14b7774b0c2dc4bbc8d29f16bda7b9d1b5ff7d75dca53a6b01366c62270fa617f8bcd7ac07871de72c016d66e557b4d4f734227c0c4ec0b74013 SHA512 c1530c4aec4743b5acb14cecac909ece6e140eec2171ad4b154513de9aead7a323789251e27f4f1c3ff0d6af9cd2590193db99380e2c91a1640dcff49f78b84e DIST wine-gecko-2.47.3-x86_64.msi 54623744 BLAKE2B 2783e060e2277925ca4b1193f4c13d7af88c7605d48d4bdd118826340e293547edc83fa185e2c64fddb629c632480062bedf995b6f65b07360cf9496bbd21f9a SHA512 c8d617695426c19bdb8a415fb0f00dc3ff9aa6c023599d24313f1c6ac50bbf36bc42dc0cdd58dee93c5ad4998468000d123080cbea09efe1bca3d8f7bfa2bd1d @@ -10,7 +6,6 @@ DIST wine-gecko-2.47.4-x86.msi 55187968 BLAKE2B f0ecd9cf41290082918be54eb9646aa3 DIST wine-gecko-2.47.4-x86.tar.xz 43025064 BLAKE2B 2a73c12585b502ae11188482cbc9fb1f45f95bfe4383a7615011104b132f4845f9813d01fb40277e1934fab5f1b35ab40b4f4a66a9967463dd1d666a666904e9 SHA512 1279456eca4439e9adc3c97678fabeca42cc89f683246805ca14f85fc104bf4ba970fb6490f4ebd0938fc8e0a0ca372b000fdd5165f900070eeee30a1aeec117 DIST wine-gecko-2.47.4-x86_64.msi 53898752 BLAKE2B dabc9957670d388b3c24fb850c444f28561b200f608f8cb6434d661198dc09786d8c61d5ad007fa9f3a1820425b5b9b46253a6b825d5461539a76c0c4d8e8315 SHA512 075f95ff7a33ad0af6ad53fe8f0f6e2ab233ceb950957d2fbf7d4955543dfe143d14fade283061df14562e6345a7cbaf754fc92d591ea03a5573accb290ae530 DIST wine-gecko-2.47.4-x86_64.tar.xz 41935496 BLAKE2B 62856a88266b4757602c0646e024f832974a93f03b9df253fd4895d4f11a41b435840ad8f7003ec85a0d8087dec15f2e096dbfb4b01ebe4d365521e48fd0c5c0 SHA512 1defbbc1fb5029bf43872a4e1c49995b61e0f106b1fcc4c99159bf4788226981b9ba8a25a2296d3a9312dbfa7e27b469ca27c0867afb218990d45f68705dbfbe -EBUILD wine-gecko-2.47.2.ebuild 1275 BLAKE2B cc9fb505b9e019ca70e085d2f7ec979e3e5e606f983e6f5a0c622a2f4849175a2be6c787bb948ef49168f1e80f4a17765b4411732e7e11db7c81ede5b3511add SHA512 b1732ad8f3a028f035280592ac8271b1c64b6d052de6ed00073ec0aea97f56c0482e72b3f84f4dc364338e5619be40c39c01dc361f0f98c1ee635aca99fdb455 EBUILD wine-gecko-2.47.3.ebuild 1275 BLAKE2B cc9fb505b9e019ca70e085d2f7ec979e3e5e606f983e6f5a0c622a2f4849175a2be6c787bb948ef49168f1e80f4a17765b4411732e7e11db7c81ede5b3511add SHA512 b1732ad8f3a028f035280592ac8271b1c64b6d052de6ed00073ec0aea97f56c0482e72b3f84f4dc364338e5619be40c39c01dc361f0f98c1ee635aca99fdb455 EBUILD wine-gecko-2.47.4.ebuild 1275 BLAKE2B cc9fb505b9e019ca70e085d2f7ec979e3e5e606f983e6f5a0c622a2f4849175a2be6c787bb948ef49168f1e80f4a17765b4411732e7e11db7c81ede5b3511add SHA512 b1732ad8f3a028f035280592ac8271b1c64b6d052de6ed00073ec0aea97f56c0482e72b3f84f4dc364338e5619be40c39c01dc361f0f98c1ee635aca99fdb455 MISC metadata.xml 360 BLAKE2B 0ba4f28c9fb2b313f332b56122c9293d60094c1d7c8bc76928818003bc7e3e07385b370759a676ecd5714dc74bf1bba66680c9ceb4655bc4d10767e9483d947e SHA512 feb28080c619be3fa965d7ebdcdb01587ba9dac001737a485d5746b97951638aff49493e9b5ae22ddc29b37a1b09a9f1b1703b979d3531d8e10ea331d0e12085 diff --git a/app-emulation/wine-gecko/wine-gecko-2.47.2.ebuild b/app-emulation/wine-gecko/wine-gecko-2.47.2.ebuild deleted file mode 100644 index 11113939eae9..000000000000 --- a/app-emulation/wine-gecko/wine-gecko-2.47.2.ebuild +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DESCRIPTION="Mozilla Gecko based version of Internet Explorer for Wine" -HOMEPAGE=" - https://gitlab.winehq.org/wine/wine/-/wikis/Gecko/ - https://gitlab.winehq.org/wine/wine-gecko/ -" -SRC_URI=" - shared? ( - abi_x86_32? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.tar.xz ) - abi_x86_64? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86_64.tar.xz ) - ) - !shared? ( - abi_x86_32? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.msi ) - abi_x86_64? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86_64.msi ) - ) -" -S=${WORKDIR} - -LICENSE="Apache-2.0 BSD BSD-2 MIT MPL-2.0" -SLOT="${PV}" -# keep straight-to-stable, builds nothing and the stabilization process -# is wasteful and annoying for users using ~testing wine in stable -# (wine also pins to specific versions, so stable won't use latest) -KEYWORDS="amd64 x86" -IUSE="+abi_x86_32 abi_x86_64 +shared" -REQUIRED_USE="|| ( abi_x86_32 abi_x86_64 )" - -src_install() { - insinto /usr/share/wine/gecko - - if use shared; then - use abi_x86_32 && doins -r ${P}-x86 - use abi_x86_64 && doins -r ${P}-x86_64 - else - use abi_x86_32 && doins "${DISTDIR}"/${P}-x86.msi - use abi_x86_64 && doins "${DISTDIR}"/${P}-x86_64.msi - fi -} diff --git a/app-emulation/wine-mono/Manifest b/app-emulation/wine-mono/Manifest index 446a769fc719..8276127f7f94 100644 --- a/app-emulation/wine-mono/Manifest +++ b/app-emulation/wine-mono/Manifest @@ -1,25 +1,16 @@ -DIST wine-mono-7.0.0-x86.msi 86433280 BLAKE2B 9d164bf10f9c790a1f518624321a77965800742c84677a6372cd57b1f51bdd16a2d61ee85f868e84be9b07d4c3f5a7afa770e98637f698c2337c42d42890cf58 SHA512 d7af2a68c3b48cab93ddd489f674ab9064d69d5ca0b6c91e58713dd0408af9fb1ff82ef8847d91645d96df40cd5526c6735d621064a3598166ab5f51d1e0d076 -DIST wine-mono-7.0.0-x86.tar.xz 45085800 BLAKE2B 504c57acce486c19a54bf33cdb4b9444c07a58a7f56ced0c93178886a91fa5d94a61f6e26aa885f3e3a2cceb2ff792f01006a4b16fa5bb88c3d25ddff02fefd7 SHA512 a3977563c5eb6418eaeda25e5b39bd2ef1faf305d514979211e049280c4577718ca48c8566e527b97a58fc465b310dd600093a616102573e12e8985794d828a6 DIST wine-mono-7.4.0-x86.msi 87334912 BLAKE2B c0b778f9db59d1a2917631f1d6ca1a1798972a6a42e27975da78f3a35b77018a99228d7d95e5640c57618533a6b01bf2252859e3e978e2aa8dbdc8cd62afcc28 SHA512 cf35513b368324487c387d4339e5b05a90c4825b25ea603140524b79e69786ccc20dfb898213a9548c0313c0b0e4b160acb88364e4b280dd6712d185d9e5ae57 DIST wine-mono-7.4.0-x86.tar.xz 45404344 BLAKE2B 3a74106b9b3f21a88c2435f7988d66a54e08beea931a0ce0df6431c21add4ee2685bf9c9cb2404ee1a685736d61b1aee3cdd507130e5c5dddba7e506a2ff18bb SHA512 108cb5d969e84deeda3d2b11dba7cd73853fc3b088ecf2bcdb9bc5c5bbaaff03e72cd4f485d1935eda43cdd95b927886441be1d2204edeaee1ff1fea75735d22 DIST wine-mono-8.1.0-x86.msi 84905984 BLAKE2B 948b014fc6fba94bc97642b8aae266b8179b119ea3d8a0fdf47daee33eac65b8cc5dd1bc483ae4c66bdd1bdc10f4b73258bb6c83bca0911a30e86e358faafd20 SHA512 5c788dfa0c9b664242f3ce0ab24f3f9256dabf1e9fadc516140f267c763da1865b4536c707660acaf66e4a37d93198f5499971b4261e63d91252f6a7fc3eae4e DIST wine-mono-8.1.0-x86.tar.xz 40854944 BLAKE2B 0e0dd83b92016da328547173d25dc396a895a7a161cd54796c9bda34ae958856f1bee342c1bb5fcffcf695b35adf66b2bf83cfa61e01790bf4b0f2d198f84feb SHA512 ba87105a6527b9c392e9ad406e92fd90164e0abb3a348a1e343e63eff0ee8632399badb98f7fbc3581ce697ba09d98aafbf5033bf52fb14b7c7c280c64f25a84 DIST wine-mono-9.1.0-x86.msi 84623872 BLAKE2B 63e86a4f99a5300782017f0b1a2168ad49516e2b2a7e825d7f59b8e842874c7f84752058908e8f57ad1e650a68675c5ff81ad8ba973962ea075db590be0fa51b SHA512 e51744eb0b07a58516fe3f5115fe45b4924e285fe4688649d04dec522203af6b3aa066e5db9b37cbbfe6ce4b5d8e871e9881842227cbb20c0613b911b5bfc383 DIST wine-mono-9.1.0-x86.tar.xz 43820028 BLAKE2B 6249e661239b71ca2607cf5fb3285bbef3e4c056c87e15352e40d2875028dbaa7f1c1a8b4d908f74de8447b4166c61c708314dc6422e9f69a6eea5f588e7c73b SHA512 cede2b910e95fc43e658e6d4d8086ec5324407a32fff4852341178e1e56df240356c02f270e3be174f3ab82aa076e50d70be4da8e8c5f77e877fce8fe3217374 -DIST wine-mono-9.2.0-x86.msi 84566016 BLAKE2B 08c106998536622cdda10065304416a338ba9fe0e5680949c66b2766116bfc93c41b0169e0beb614f741edccf5fae576de78d2b1c6bc9f2dfa89036bfd3b23ed SHA512 3256358a49321173c17e8b907e0d8affed4fb735ca3da91749377501de1a924711f37971a9c8e05e687140d3d65399903e69bb5981d271f2b698a910d91e8b54 -DIST wine-mono-9.2.0-x86.tar.xz 43901320 BLAKE2B 125d81049bca105e8967338659dd21c174388dfc8be9802a5984b8fc11b4da22b82512590481d45ebd7554f89c5e9cad9c59b4406ba04436ada5b52ea2aea0cc SHA512 7d0039b7c77ed968c0e00eacd3bf716d3ec9dffc86f6cc2c2f9439320b889ae2e05cc4f9aade5e1a0122a86ee4b86cea4224e666aba0d0bb3f2fa6fb0d18f8ae -DIST wine-mono-9.3.0-x86.msi 84572160 BLAKE2B b6e13d5245b17c0f2857771c8bcfc7ca248d13f300df69970b5994d3287e3e4db0c49601b0cd29b7f6764f2abda5b54a3f0bf1ad1d2beb28033adba9276c7b5c SHA512 d5bb8ed9cc963292b37edb2ac3fb5945346b9632a080d5413ebde3470ff1702c9fdd0d4a25c0cd228e56abe11f6e1cf3d949a2c26099bf2fdef41aaf65f686ef -DIST wine-mono-9.3.0-x86.tar.xz 43906032 BLAKE2B 94dc27d305fb062f845064c07dcd00d2daaf9647ae5353e18267314b6534018bf22b1411981ef8e3cb9ef8fa0d91da662211376a309a243100d691386b1840e4 SHA512 094113aad504fa46d9f3b0ca6f7926c14fbda3edbbbc5dab307f19114fec0173a451a604b2083f399e61d5c6704971a0d602930cc9ba11502c863ec67318c480 DIST wine-mono-9.3.1-x86.msi 84572160 BLAKE2B 82f0aaec4cb816b28708c8bd8f347a128451046f33958b63d8cf6b6009d2f426f03d419017de4303f722ac0232bb2c9a1aba957411114ffc0b392db930888f69 SHA512 6653c6dd5484f3687be7ce13ca74e95abb5b0fa3c6901d57a97f4a218986e68154846ef19bf8ef5667f375b61600bb37e2e339b62a638a5eacd6f15a0022fc8a DIST wine-mono-9.3.1-x86.tar.xz 43896120 BLAKE2B 5f4c2a07355a3d394086467f1b0c45698cd83731a4137b59975abdeda2d564f44922a67b1bec111e4209c4fe74247486076e95dffc84d88b5b7a02774efd070b SHA512 cc4faff237b46d870e1afeb99be1e77f8f0d599c8567dfc365256558b4ec533efee3d5324bfe1bd5bc7f318112899dd800e3e2ef9cbc6d50063f47fc7039c879 DIST wine-mono-9.4.0-x86.msi 84639232 BLAKE2B fc53dadf9c73c489f0333ab25aa2ce85df7f1dcf82fd475ea0265772441f1b29804bd378e555f71eafc851393c833c5aef97f10103257ccb6c6951c46fcb5bd9 SHA512 c8907d1f3b04bfc86a4d230148558964984f4ce33a732802ccbbc89b3593bce1c32b2fae105db0efa7e1e7ee97e955e51b682f06efe595408ba4031b55b8fe0f DIST wine-mono-9.4.0-x86.tar.xz 43941584 BLAKE2B a4d88b274e06a8f8f02e2f74e55fd0df5e4836f45295af711f2f3d3f2bf18432bc7c41c9c2392a0e6b584b67358740acd7f3572cafd32afd08060e8c9e060c0a SHA512 2ea3fa22f64019ff71b4c368e3b83608c2b0cf4ffb63fc349b29e41ddc17d015bf431d41788ce3139ddc19336690b9460c983d18eea514351f069671012895f2 -EBUILD wine-mono-7.0.0.ebuild 890 BLAKE2B ad2e5524bdf84120a8025117258a8d62d3c730af80a6c9153a69f5f0214502ae18a2d231e8dd6b3e20ffd2204f8d4fa2285b62a2534edc2df545ce293cc7606f SHA512 30fe3161b3e5d68d4caf76d0ac7202757553d660346bb0e26cb53bf85b25b697b00cfb1f20efb495bddf4b73f1e8f3af3f920ccd94005474740aae948ab7bd92 EBUILD wine-mono-7.4.0.ebuild 890 BLAKE2B ad2e5524bdf84120a8025117258a8d62d3c730af80a6c9153a69f5f0214502ae18a2d231e8dd6b3e20ffd2204f8d4fa2285b62a2534edc2df545ce293cc7606f SHA512 30fe3161b3e5d68d4caf76d0ac7202757553d660346bb0e26cb53bf85b25b697b00cfb1f20efb495bddf4b73f1e8f3af3f920ccd94005474740aae948ab7bd92 EBUILD wine-mono-8.1.0.ebuild 890 BLAKE2B ad2e5524bdf84120a8025117258a8d62d3c730af80a6c9153a69f5f0214502ae18a2d231e8dd6b3e20ffd2204f8d4fa2285b62a2534edc2df545ce293cc7606f SHA512 30fe3161b3e5d68d4caf76d0ac7202757553d660346bb0e26cb53bf85b25b697b00cfb1f20efb495bddf4b73f1e8f3af3f920ccd94005474740aae948ab7bd92 EBUILD wine-mono-9.1.0.ebuild 890 BLAKE2B ad2e5524bdf84120a8025117258a8d62d3c730af80a6c9153a69f5f0214502ae18a2d231e8dd6b3e20ffd2204f8d4fa2285b62a2534edc2df545ce293cc7606f SHA512 30fe3161b3e5d68d4caf76d0ac7202757553d660346bb0e26cb53bf85b25b697b00cfb1f20efb495bddf4b73f1e8f3af3f920ccd94005474740aae948ab7bd92 -EBUILD wine-mono-9.2.0.ebuild 890 BLAKE2B ad2e5524bdf84120a8025117258a8d62d3c730af80a6c9153a69f5f0214502ae18a2d231e8dd6b3e20ffd2204f8d4fa2285b62a2534edc2df545ce293cc7606f SHA512 30fe3161b3e5d68d4caf76d0ac7202757553d660346bb0e26cb53bf85b25b697b00cfb1f20efb495bddf4b73f1e8f3af3f920ccd94005474740aae948ab7bd92 -EBUILD wine-mono-9.3.0.ebuild 890 BLAKE2B ad2e5524bdf84120a8025117258a8d62d3c730af80a6c9153a69f5f0214502ae18a2d231e8dd6b3e20ffd2204f8d4fa2285b62a2534edc2df545ce293cc7606f SHA512 30fe3161b3e5d68d4caf76d0ac7202757553d660346bb0e26cb53bf85b25b697b00cfb1f20efb495bddf4b73f1e8f3af3f920ccd94005474740aae948ab7bd92 EBUILD wine-mono-9.3.1.ebuild 1012 BLAKE2B fae25c2cfe8499ebfc2743604fa782e022ee2eaa8e9f245c9f89915213841051a5460b0831febfd49b12a175db5dc26fe91544fffb31af403b3e0ef800284cd7 SHA512 0e0dde3c85f78e7b06c48ae2bc9531e4d278c31e0337762d9c5e13a6b8fe27547dc598f16bcfa5773e5e224869b2744148bc4259412cea4e5b68e74f92d492ff EBUILD wine-mono-9.4.0.ebuild 890 BLAKE2B ad2e5524bdf84120a8025117258a8d62d3c730af80a6c9153a69f5f0214502ae18a2d231e8dd6b3e20ffd2204f8d4fa2285b62a2534edc2df545ce293cc7606f SHA512 30fe3161b3e5d68d4caf76d0ac7202757553d660346bb0e26cb53bf85b25b697b00cfb1f20efb495bddf4b73f1e8f3af3f920ccd94005474740aae948ab7bd92 MISC metadata.xml 869 BLAKE2B fccb940bff530c2e7c311060ef585efc8f62c00480435fe62cdae5eaa5dd58fd6d41354f6656c166700114e356f7bd60c791a77e86a2cce2bf4421bb778d28dc SHA512 fba10cccd3d072a96332a065f3b08cca213b18820e14a0e0a8e135ad2a986b158766bed07bae7c468f445642145a25350f2cdee58d8a4ccb916fc6a0ea7b4a62 diff --git a/app-emulation/wine-mono/wine-mono-7.0.0.ebuild b/app-emulation/wine-mono/wine-mono-7.0.0.ebuild deleted file mode 100644 index a422ad716d3b..000000000000 --- a/app-emulation/wine-mono/wine-mono-7.0.0.ebuild +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DESCRIPTION="Replacement for the .NET runtime and class libraries in Wine" -HOMEPAGE=" - https://gitlab.winehq.org/wine/wine/-/wikis/Wine-Mono/ - https://gitlab.winehq.org/mono/wine-mono/ -" -SRC_URI=" - shared? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.tar.xz ) - !shared? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.msi ) -" -S=${WORKDIR} - -LICENSE="BSD-2 GPL-2 LGPL-2.1 MIT MPL-1.1" -SLOT="${PV}" -# keep straight-to-stable, builds nothing and the stabilization process -# is wasteful and annoying for users using ~testing wine in stable -# (wine also pins to specific versions, so stable won't use latest) -KEYWORDS="amd64 x86" -IUSE="+shared" - -src_install() { - insinto /usr/share/wine/mono - - if use shared; then - doins -r ${P} - else - doins "${DISTDIR}"/${P}-x86.msi - fi -} diff --git a/app-emulation/wine-mono/wine-mono-9.2.0.ebuild b/app-emulation/wine-mono/wine-mono-9.2.0.ebuild deleted file mode 100644 index a422ad716d3b..000000000000 --- a/app-emulation/wine-mono/wine-mono-9.2.0.ebuild +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DESCRIPTION="Replacement for the .NET runtime and class libraries in Wine" -HOMEPAGE=" - https://gitlab.winehq.org/wine/wine/-/wikis/Wine-Mono/ - https://gitlab.winehq.org/mono/wine-mono/ -" -SRC_URI=" - shared? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.tar.xz ) - !shared? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.msi ) -" -S=${WORKDIR} - -LICENSE="BSD-2 GPL-2 LGPL-2.1 MIT MPL-1.1" -SLOT="${PV}" -# keep straight-to-stable, builds nothing and the stabilization process -# is wasteful and annoying for users using ~testing wine in stable -# (wine also pins to specific versions, so stable won't use latest) -KEYWORDS="amd64 x86" -IUSE="+shared" - -src_install() { - insinto /usr/share/wine/mono - - if use shared; then - doins -r ${P} - else - doins "${DISTDIR}"/${P}-x86.msi - fi -} diff --git a/app-emulation/wine-mono/wine-mono-9.3.0.ebuild b/app-emulation/wine-mono/wine-mono-9.3.0.ebuild deleted file mode 100644 index a422ad716d3b..000000000000 --- a/app-emulation/wine-mono/wine-mono-9.3.0.ebuild +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DESCRIPTION="Replacement for the .NET runtime and class libraries in Wine" -HOMEPAGE=" - https://gitlab.winehq.org/wine/wine/-/wikis/Wine-Mono/ - https://gitlab.winehq.org/mono/wine-mono/ -" -SRC_URI=" - shared? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.tar.xz ) - !shared? ( https://dl.winehq.org/wine/${PN}/${PV}/${P}-x86.msi ) -" -S=${WORKDIR} - -LICENSE="BSD-2 GPL-2 LGPL-2.1 MIT MPL-1.1" -SLOT="${PV}" -# keep straight-to-stable, builds nothing and the stabilization process -# is wasteful and annoying for users using ~testing wine in stable -# (wine also pins to specific versions, so stable won't use latest) -KEYWORDS="amd64 x86" -IUSE="+shared" - -src_install() { - insinto /usr/share/wine/mono - - if use shared; then - doins -r ${P} - else - doins "${DISTDIR}"/${P}-x86.msi - fi -} diff --git a/app-emulation/wine-proton/Manifest b/app-emulation/wine-proton/Manifest index 7207410d6087..b6597b2551d2 100644 --- a/app-emulation/wine-proton/Manifest +++ b/app-emulation/wine-proton/Manifest @@ -1,21 +1,16 @@ AUX README.gentoo 2435 BLAKE2B 2c41ce67c8f9139cf0a312c4477090077084550b79aa35ab4909de95046a2a0bbf6d05e549f59dfeb11253f1099878cbbd6fb141e3551c6b0ac503bef846d99b SHA512 0a5b2ac06c3b8cf1ef302d59193624bda224554476e1209aae485cbe913a0ffae6d553633983efaf89ce1296d52ec4dc2ab544ede96c2953e9f6ca602d5b787b AUX wine-proton-7.0.4-musl.patch 505 BLAKE2B 5c6d46c505e38c19e4c92e05243244739e6a2b84ebc548989167b65fe5ede439c628b510bce57ff8cd7ca765114c13dbb098116ba201ceba44069bf38daf5a64 SHA512 5e687119aa461e3440d3c7bbb2318db04ffbe414329931877b59a3f9752ee36e492bb25dda9b26c2f741664665487a34575423b24718e3f1b65f2d850c3681aa AUX wine-proton-7.0.4-noexecstack.patch 223 BLAKE2B dff1867e2977bd14fcfab9dfa2c2f1d3288f7edca75ddd7c9f02bfd06e9f63fac37bd59ea8aa891e13ab77bac35b369825d5490a9175ed9a7736e523b61d8944 SHA512 4ba3677042b693e513fc7a133c76a509f63d0ca20633d1e8d448bca9534c0d1a0fc58e77fa9b28fd8d936393605e97ee6e3bb5fac00872d6ac5808b7712586e3 -AUX wine-proton-7.0.4-restore-menubuilder.patch 572 BLAKE2B 7ace97fb82498d8f19297cab205d8b9ca07c5293172a0b017b5d887ec1f5daeb3ed64eb0a322904e528a72f4a225813c27b544015587d71fce97c41b6b1463a2 SHA512 1384f06d4264e22d332eb12fabd7408b8e250e39c195460f876460fe40d35d617c73100815c395f481e3af66676ccaa1a14592c05f1e5b092bfafe2f87112106 -AUX wine-proton-7.0.4-unwind.patch 1694 BLAKE2B 954cb0a395c3b45afc7a3f39f33d34cf041b9cf5a6c77d0a217d296c4c8d1f6503322c4f77188c4729b98318913b9bc86d37b7573713643590550297a0ae372a SHA512 f958e811a4754614bc9e7223f727e2c581c18607dccf14c6d7014012ff29107bd850540a40ff7a62e7bae6b87ae1ac28fd104fbbaf9ce954bf3acb38ddbeb7df -AUX wine-proton-7.0.6-mingw64-11.0.0.patch 849 BLAKE2B 26833ef532e7c5b8b0ae1442485c6c44f55a550c571942be2a894aada62ce87398973dfa5619f5a8d498b51479dda84eeae72803370539a7d28575a74310e173 SHA512 189bb20e8c399374567db308c2d3cf43a2b5e2d76b43970edaa3975c0c4ddb7fa245b9d05ed0f7a3452c8bf5264e743acff5a4830a94abd1c7df13664afc21e7 -AUX wine-proton-7.0.6-vulkan-libm.patch 429 BLAKE2B 437c37130a0bc64e135fe15f876d19f16afdb9586a12c3dd9010b8280333e880dd4125be32e42bd90a32349634daf9bee29d537280d83ebf6580f28f6b53e57b SHA512 12e331b39543b9fba089925ceee936e534612e625570cfe19653516cf95ebf9a2d99fc05373eafecd4ae4bbfc485c4aed9fba682f76219164117fd9f2879012f AUX wine-proton-8.0.1c-unwind.patch 1488 BLAKE2B 1a6d69484fb36f94f32d74679e809cfd7666363bede5dddedd2449e07251823b1ce86a717e06d342eec782aff501f27bc23433511c163da0b2a50c411df7ac53 SHA512 82ff0510fcab35471aa0db8f32f48cd62dbf78b3f5f36e3d191b86be55cb476df1ee689e5cd53c95d4f02199b5900eb0c8a45959693739a6c35e4c8b3cfa243f AUX wine-proton-8.0.4-restore-menubuilder.patch 382 BLAKE2B 04df3b2e495f49b4d66bc70a1198a3ab6c4dbb95c3ff145069b7086cf87de7233a1f5d6e56c861c0ff6f7e4b0869bb7ddf29a35ca9f32e47c05bf71fd0823ef3 SHA512 08bf5accb1ccf38519d5054c2d297da87aef0df5b5b5336d96e4b98a3af202ae8220c1e8cdf282c24b2706628e14a1afb7ff5f21f4a7a9f8e3f4f301f9e44c57 AUX wine-proton-8.0.5c-vulkan-libm.patch 447 BLAKE2B 026b982714ce21ce6492d5e3b9932f2af4b8f1342fc47de045d86e596996dab11a3b73bf5090714dbc5c405345b8d1a08afc6a337ddb91e744ca83c980ad390f SHA512 46655d7c65975a11a585acf9112fcc56242b2a65917aa8dc9ad9515b2f5348ad3e8a9b72d53b38b1d51ae9b661f175f54dda8cd3f04a56de1d0a18a2c4d6136c AUX wine-proton-9.0-rpath.patch 356 BLAKE2B f988fefb9590d1c8735f480349172b7c7634256ef07bfe19bc5a7e04363d1832cc999d7c30b78dc5af2f4a1c9bfac1f4fa5458461b865864dc3bbdff4e9f71fa SHA512 f0de44022c856ed9b058e6c64146e464e375114d56bcc369a7e72df847a4de0ad31cbb06042df3f6836b681cd342b8a228cf514a51ed9796542a4d9ea42a03e6 -DIST proton-wine-7.0-6.tar.gz 45780326 BLAKE2B f140fcfdd1a47904c34a49d0795fa3326d7cf0d3fac8d6c2ef2a4926181a46223f43a2d1ca96c543e800c8c46b2a3cc51ae306a029d68a42608876e869e177d5 SHA512 793bbe2b23042301a1b518717d78cfff01eaffa0388883d010659a45779b9136d33cfac63f0c3fbb1e458953a954b423eb70ac4fa87633352267db890ceb2fef +AUX wine-proton-9.0.4-binutils2.44.patch 4104 BLAKE2B 4a0884969ade4ea83890672392dd29eb641f6c82ecdd8a6dd47853cc59e2cea73d42a95ce2197fc2833170aed7af508b19136f11859501dec22909297a691905 SHA512 f3bec4565acb4446783e44ac9823978ed1f8881814f7cae7ad5c5bd8d70cf5f13e68f0abefcf1038426b9b055fec1dabf3a6bbfc21bae1420654fdabe7bd206f DIST proton-wine-8.0-5c.tar.gz 48710071 BLAKE2B 99627baea6fb3d51231aa1e75a2734c3c1baba88326baf15b3d421d57a00472d25ba51c2140b51152c8aeae7dd240d3d77bb0d8835aa7eb3b745a51be120f8bb SHA512 0cf98d4e67866e55cc8cd5ea8da0d76aee8e37b130b3cbca604083c913e98ddf9038ecd6f9761d2e11443e282b372977400e251456c6d40e1365210c7578234d DIST proton-wine-9.0-2.tar.gz 49125171 BLAKE2B ac1e4a63f94689bc4fcc6ab4e2d12cfc214f54181515434ab950d8975d131a5f6333b1e6cb9b67eda61cf3e652e57e27e60ba3cff6a6ac403b07178f382f7e25 SHA512 82efee3100da80f650229d1abf3df4896ab71af4a79c6e5cf03aa646c56f435daf07c6f084a3264067cf90ce509102e3d7ee6d4bf7d0650baf645b5ece08cc7c DIST proton-wine-9.0-4.tar.gz 49339922 BLAKE2B 914ca093ac288c26400e4eeb2ea33943fc8ad89052aa7c97b5c44286dc175745720455d65163baa90b0d0271eb8028549315a3e8095b91947db2bd96c6fc4852 SHA512 e061f0a55b25493f67ca3add8c7e41020bb57cb15e8fb4fdf3c23f0cab2d00b703c90fbcf0dc1ca8b67e1726a76cee910e9ea6f567c88bc6c520dd6c9dbb75e9 -EBUILD wine-proton-7.0.6.ebuild 13138 BLAKE2B d309ce8c55dc63f99f54205c9e7601decb0400cd73aa14fd7a10c2b3a45162a8abbb0b32ca8ba21d18637ffb75fe2ab88422c3d7a899679fcc459f1807173901 SHA512 90fcde31389524651e300680554ed27451eba0fb099599ea1a13ea10e24f9c147c8c3555c688262240db8ebc13c061541b841e8dd6d1966ea2d54a70141c8a93 -EBUILD wine-proton-8.0.5c.ebuild 14090 BLAKE2B bff5e2b5f272af1aeaa1ca0de729b71e2629a8006c0700e633ff189b29360a42c51ccdf2e34195a198787c1a30be1e2c98fd92204e0a4ade1f1fda643db0ba26 SHA512 519b265f61adeb062cb886ec1fe109371b40f9fefcf06d9143639141054f2037e1ec25adc832b35fba5f2de234aa1d470edf2500bf0656880be7d32f137d060a -EBUILD wine-proton-9.0.2.ebuild 14990 BLAKE2B 88c90b9f79fcb843ddcbc976c5e731a778b7c422cefb488fd2a34ff3e5f00eb225d06ee88dc75803a8827da17eff72e60feecba5029974baa393e76ebecfc930 SHA512 cfa95408eedd6a3c121a4b469f3675dbf6aff717c7a405f1068ab02ce6411434dcde561a29fd63d92a32322f38989077ddd98c27ccc05c1f1c453a1a54a367c1 -EBUILD wine-proton-9.0.4.ebuild 14991 BLAKE2B 7b8f8fdfe9784b6d436d36a9258bec4c793ad8f80fa02ec69d50b11fbf3e2bb1b9a522d542517dbba31bc46b96a17ba7ce8a55fd916e6a13e8c2f180152ccc0e SHA512 960a21425ddc327854f3e608569104b2f10226c8309909c8d77fdd66be770d0fd7514de2d55cc6ba1cc7571eb68b73cedc8cb1c7329b542b5093ebfca7d03946 -EBUILD wine-proton-9999.ebuild 15118 BLAKE2B cbd7e649fe3887d2f8ef0c08f0c71c8d5ed7e34b41e24468ffe96658393f2839e2ba73cdc18d066a068756e31c7d47ce674137c38de2f428e77c7f523878775d SHA512 b4bd206699b1d4a9129e0d5a2b39bf506677868a670b660c038df3de9d2b0593029f7ba0faeae793cd09933f83a0b87cc88ae6df7ee6826f19a6bffea3119545 -MISC metadata.xml 1593 BLAKE2B 2e07980ce479dbb737394a5b74576925da936ca2ef5c0767b036cad7f56460ae0a6c73e8a416679f512a5195d037329ce9d3ace9808f68e024baf8640f462d94 SHA512 9f99896328a6337e7a2228977a3b7d853e78aef50a19ee40c43d18f657ead529553d7ea788bae1d408bd074f240cb555ba42558a54cd3ff8ab530b167e813d55 +EBUILD wine-proton-8.0.5c.ebuild 14136 BLAKE2B 4358b1230118ceba29bd8a8176e9b90c474588a9f5a091fe72dd98b894b4ec4cfc18050d42a376f6f4a7cfb87c071a70cc081fe1c292fb32754e1cdf058e3875 SHA512 5b555cbf725fad0c1e97992187e5236ce8aa5bf47350c92494f4fa53e47449273599f1f10a16bef1b229e50200892e3cb869a54d4488e16aba76db02df121046 +EBUILD wine-proton-9.0.2.ebuild 15036 BLAKE2B 7bf4c5ff1fc60f4c1ea7b468c62571be4ccccdedfb7caaba25d7a0e9ca4f4714ed9ad96cb6a91708b0f6e0bd2063a3bcc9307d41845412a7b040e018fe16a2e8 SHA512 5fa1ff85991acf5bced2cf7da07fd28379873f4d2a62dd16451d0c5be5b8782201a7092683b65ea443b8c665e1247d0ad8d678898cb27b7a037b56f8751f300d +EBUILD wine-proton-9.0.4.ebuild 15037 BLAKE2B 2e7c353b3b1e8bfcb92fb7968063120083c10da52b96d1c3f4adae8dd912e9dbd27a900d20c94effc4b527188f74ba9062a6c975c0b4aae55db9e3ea10cb2912 SHA512 0acc616e47523e0be9644825ebfd12e5f08e80b58a41a1b00f0c9af00d7d88292989248f209e7a2f19d9262e90b56eb486af40f020adb802191eac2e2b21d03e +EBUILD wine-proton-9999.ebuild 15164 BLAKE2B 2d4aff78c021877212943032aca9e05599827a04cd736439a8bb3c494c7e53984342eb8f780b8201f0516f5b9e1cbe6b428a0c016f936d9e2887aec2fc14f275 SHA512 9cf1679a09c99b45ca16b7079618a599d071e188174275c808ab89c95d7e59ea66aa5c34799da52093b52d995070922a466a28ed2b744010dc5682f5cf9def3c +MISC metadata.xml 1561 BLAKE2B c56918ab8f385550a8afd059d6df3e4c8cec39a0820b327a88b72a8159f1852cdc33c6b5e24cb8bdcef628707b6bc80950044a5998c7ac4c4017b017eef80c29 SHA512 1f5b24e0151d29c377082acab47d58e6b324602b01f688250cd32789a01c5269eb8dc65fc8ba8e0830e54c2c2d07ee5f14876754fe906c6480cdd962c262bb3b diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch deleted file mode 100644 index 760340791060..000000000000 --- a/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch +++ /dev/null @@ -1,14 +0,0 @@ -Without Steam there is no launcher by default, users with more custom -setups may not need this but others will want access to desktop entries. ---- a/configure.ac -+++ b/configure.ac -@@ -3683,2 +3683,3 @@ - WINE_CONFIG_MAKEFILE(programs/winefile) -+WINE_CONFIG_MAKEFILE(programs/winemenubuilder) - WINE_CONFIG_MAKEFILE(programs/winemine) ---- a/loader/wine.inf.in -+++ b/loader/wine.inf.in -@@ -5630,2 +5630,3 @@ - [Services] -+HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r" - HKLM,"System\CurrentControlSet\Services\Eventlog\Application",,16 diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch deleted file mode 100644 index 372def52ba0c..000000000000 --- a/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch +++ /dev/null @@ -1,40 +0,0 @@ -Fix build with llvm-libunwind, and also fix for non-llvm libunwind -when using clang+bfd given clang doesn't have _Unwind_Find_FDE in -its rtlib and expects it from llvm-libunwind. - -The _CONFIG_H_ check is for Rip - 1), &bases ); - - if (fde) - return dwarf_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, fde, - &bases, &dispatch->LanguageHandler, &dispatch->HandlerData ); -+#endif - #ifdef HAVE_LIBUNWIND - return libunwind_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, - &dispatch->LanguageHandler, &dispatch->HandlerData ); diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch b/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch deleted file mode 100644 index 54ecc49c7235..000000000000 --- a/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch +++ /dev/null @@ -1,20 +0,0 @@ -Hack: this does not actually need stdarg.h, but including it ensures -that _mingw.h will be loaded before the rest of Wine's winnt.h avoiding -issues with mingw64-runtime-11.0.0, e.g.: - - _mingw.h:602:60: error: redefinition of ‘__fastfail’ - make[1]: *** [Makefile:5900: dlls/advapi32/crypt_des.cross.o] Error 1 - -(other crypt_*.c happen to include stdarg.h first and don't fail, but this -one does not, same for several other files in dlls/) - -Not an issue with non-proton Wine 7.0 as Wine did not define __fastfail -until ~wine-7.10. Wine 8 does define it but does not seem to be a problem -there (perhaps due to different header layout). A more "right" fix would -be welcome, but given Proton-7 seems EOL it is not judged important. ---- a/include/winnt.h -+++ b/include/winnt.h -@@ -32,2 +32,3 @@ - #include -+#include - #endif diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch b/app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch deleted file mode 100644 index b81778fb957c..000000000000 --- a/app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch +++ /dev/null @@ -1,12 +0,0 @@ -Valve's patches add use of "ceil" without using libm, it works -by accident with -O2 but fails with -Os. - -ld: dlls/winevulkan/vulkan.o: in function `fshack_vk_queue_present': -vulkan.c:(.text+0x12f46): undefined reference to `ceil' ---- a/dlls/winevulkan/Makefile.in -+++ b/dlls/winevulkan/Makefile.in -@@ -4,3 +4,3 @@ - IMPORTS = user32 gdi32 advapi32 setupapi win32u --EXTRALIBS = $(PTHREAD_LIBS) -+EXTRALIBS = -lm $(PTHREAD_LIBS) - diff --git a/app-emulation/wine-proton/files/wine-proton-9.0.4-binutils2.44.patch b/app-emulation/wine-proton/files/wine-proton-9.0.4-binutils2.44.patch new file mode 100644 index 000000000000..c0d4ef6f5287 --- /dev/null +++ b/app-emulation/wine-proton/files/wine-proton-9.0.4-binutils2.44.patch @@ -0,0 +1,105 @@ +Note that this is only an issue when using mingw (PE) binutils-2.44, +host (ELF) binutils-2.44 has no impact on this and, before this patch, +using 2.44 could only happen with off-by-default USE=crossdev-mingw. + +https://bugs.winehq.org/show_bug.cgi?id=57819 +https://sourceware.org/PR32675 +https://gitlab.winehq.org/wine/wine/-/merge_requests/7328 +--- a/dlls/ntdll/loader.c ++++ b/dlls/ntdll/loader.c +@@ -4047,5 +4047,5 @@ + NTSTATUS nts; + FARPROC fp; +- DWORD id; ++ INT_PTR id; + + TRACE( "(%p, %p, %p, %p, %p, 0x%08lx)\n", base, desc, dllhook, syshook, addr, flags ); +--- a/tools/winebuild/import.c ++++ b/tools/winebuild/import.c +@@ -1514,4 +1514,14 @@ + } + ++static void output_import_section( int index, int is_delay ) ++{ ++ if (!is_delay) ++ output( "\n\t.section .idata$%d\n", index ); ++ else if (index == 5) ++ output( "\n\t.section .data$didat%d\n", index ); ++ else ++ output( "\n\t.section .rdata$didat%d\n", index ); ++} ++ + /* create a Windows-style import library */ + static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struct strarray files ) +@@ -1633,18 +1643,18 @@ + output( "\t.long 0\n" ); /* TimeDateStamp */ + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */ + output( ".L__wine_import_addrs:\n" ); + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */ + output( ".L__wine_import_names:\n" ); + + /* required to avoid internal linker errors with some binutils versions */ +- output( "\n\t.section .idata$2\n" ); ++ output_import_section( 2, is_delay ); + } + else + { +- output( "\n\t.section .idata$2\n" ); ++ output_import_section( 2, is_delay ); + output( "%s\n", asm_globl( import_desc ) ); + output_rva( ".L__wine_import_names" ); /* OriginalFirstThunk */ +@@ -1654,8 +1664,8 @@ + output_rva( ".L__wine_import_addrs" ); /* FirstThunk */ + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( ".L__wine_import_names:\n" ); /* OriginalFirstThunk head */ + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( ".L__wine_import_addrs:\n" ); /* FirstThunk head */ + } +@@ -1668,9 +1678,9 @@ + new_output_as_file(); + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */ +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */ +- output( "\n\t.section .idata$7\n" ); ++ output_import_section( 7, is_delay ); + output( "%s\n", asm_globl( import_name ) ); + output( "\t%s \"%s\"\n", get_asm_string_keyword(), spec->file_name ); +@@ -1763,8 +1773,8 @@ + } + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output_thunk_rva( by_name ? -1 : odp->ordinal, ".L__wine_import_name" ); + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "%s\n", asm_globl( imp_name ) ); + if (is_delay) +@@ -1775,5 +1785,5 @@ + if (by_name) + { +- output( "\n\t.section .idata$6\n" ); ++ output_import_section( 6, is_delay ); + output( ".L__wine_import_name:\n" ); + output( "\t.short %d\n", odp->hint ); +@@ -1782,5 +1792,5 @@ + + /* reference head object to always pull its sections */ +- output( "\n\t.section .idata$7\n" ); ++ output_import_section( 7, is_delay ); + output_rva( "%s", asm_name( import_desc ) ); + diff --git a/app-emulation/wine-proton/metadata.xml b/app-emulation/wine-proton/metadata.xml index cc21bdb8ce89..4e53c42efe00 100644 --- a/app-emulation/wine-proton/metadata.xml +++ b/app-emulation/wine-proton/metadata.xml @@ -12,14 +12,14 @@ Use sys-devel/crossdev for the toolchain rather than - dev-util/mingw64-toolchain (requires manual setting up) + dev-util/mingw64-toolchain (requires manual setting up + and is mostly unsupported, try disabling if have issues) Enable mshtml support using app-emulation/wine-gecko Enable .NET support using app-emulation/wine-mono Enable off-screen rendering (OpenGL in bitmaps) support Install helpers that require perl (winedump/winemaker) Enable gamepad support using media-libs/libsdl2 - Enable DirectX 12 support using app-emulation/vkd3d Enable running 32bit applications without 32bit ELF multilib by mapping to 64bit calls (experimental, diff --git a/app-emulation/wine-proton/wine-proton-7.0.6.ebuild b/app-emulation/wine-proton/wine-proton-7.0.6.ebuild deleted file mode 100644 index c4630cc016e8..000000000000 --- a/app-emulation/wine-proton/wine-proton-7.0.6.ebuild +++ /dev/null @@ -1,390 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MULTILIB_COMPAT=( abi_x86_{32,64} ) -PYTHON_COMPAT=( python3_{10..13} ) -inherit autotools flag-o-matic multilib multilib-build prefix -inherit python-any-r1 readme.gentoo-r1 toolchain-funcs wrapper - -WINE_GECKO=2.47.3 -WINE_MONO=7.4.0 -WINE_PV=$(ver_rs 2 -) - -if [[ ${PV} == 9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/ValveSoftware/wine.git" - EGIT_BRANCH="bleeding-edge" -else - SRC_URI="https://github.com/ValveSoftware/wine/archive/refs/tags/proton-wine-${WINE_PV}.tar.gz" - S="${WORKDIR}/${PN}-wine-${WINE_PV}" - KEYWORDS="-* amd64 ~x86" -fi - -DESCRIPTION="Valve Software's fork of Wine" -HOMEPAGE="https://github.com/ValveSoftware/wine/" - -LICENSE="LGPL-2.1+ BSD-2 IJG MIT ZLIB gsm libpng2 libtiff" -SLOT="${PV}" -IUSE=" - +abi_x86_32 +abi_x86_64 +alsa crossdev-mingw custom-cflags debug - +fontconfig +gecko +gstreamer llvm-libunwind +mono nls openal - osmesa perl pulseaudio +sdl selinux +ssl udev udisks +unwind usb - v4l +vkd3d +xcomposite xinerama -" - -# tests are non-trivial to run, can hang easily, don't play well with -# sandbox, and several need real opengl/vulkan or network access -RESTRICT="test" - -# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked -WINE_DLOPEN_DEPEND=" - dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] - media-libs/freetype[${MULTILIB_USEDEP}] - media-libs/libglvnd[X,${MULTILIB_USEDEP}] - media-libs/vulkan-loader[X,${MULTILIB_USEDEP}] - x11-libs/libXcursor[${MULTILIB_USEDEP}] - x11-libs/libXfixes[${MULTILIB_USEDEP}] - x11-libs/libXi[${MULTILIB_USEDEP}] - x11-libs/libXrandr[${MULTILIB_USEDEP}] - x11-libs/libXrender[${MULTILIB_USEDEP}] - x11-libs/libXxf86vm[${MULTILIB_USEDEP}] - fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) - osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) - sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) - ssl? ( - dev-libs/gmp:=[${MULTILIB_USEDEP}] - net-libs/gnutls:=[${MULTILIB_USEDEP}] - ) - udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) - v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) - xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) - xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) -" -WINE_COMMON_DEPEND=" - ${WINE_DLOPEN_DEPEND} - x11-libs/libX11[${MULTILIB_USEDEP}] - x11-libs/libXext[${MULTILIB_USEDEP}] - alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) - gstreamer? ( - dev-libs/glib:2[${MULTILIB_USEDEP}] - media-libs/gst-plugins-base:1.0[opengl,${MULTILIB_USEDEP}] - media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] - ) - openal? ( media-libs/openal[${MULTILIB_USEDEP}] ) - pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) - udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] ) - unwind? ( - llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] ) - !llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] ) - ) - usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] ) - vkd3d? ( >=app-emulation/vkd3d-1.2[${MULTILIB_USEDEP}] ) -" -RDEPEND=" - ${WINE_COMMON_DEPEND} - app-emulation/wine-desktop-common - gecko? ( app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] ) - gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] ) - mono? ( app-emulation/wine-mono:${WINE_MONO} ) - perl? ( - dev-lang/perl - dev-perl/XML-LibXML - ) - selinux? ( sec-policy/selinux-wine ) - udisks? ( sys-fs/udisks:2 ) -" -DEPEND=" - ${WINE_COMMON_DEPEND} - sys-kernel/linux-headers - x11-base/xorg-proto -" -BDEPEND=" - ${PYTHON_DEPS} - dev-lang/perl - sys-devel/binutils - sys-devel/bison - sys-devel/flex - virtual/pkgconfig - nls? ( sys-devel/gettext ) - !crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] ) -" -IDEPEND=">=app-eselect/eselect-wine-2" - -QA_CONFIG_IMPL_DECL_SKIP=( - __clear_cache # unused on amd64+x86 (bug #900332) - res_getservers # false positive -) -QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext - -PATCHES=( - "${FILESDIR}"/${PN}-7.0.4-musl.patch - "${FILESDIR}"/${PN}-7.0.4-noexecstack.patch - "${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch - "${FILESDIR}"/${PN}-7.0.4-unwind.patch - "${FILESDIR}"/${PN}-7.0.6-mingw64-11.0.0.patch - "${FILESDIR}"/${PN}-7.0.6-vulkan-libm.patch -) - -pkg_pretend() { - [[ ${MERGE_TYPE} == binary ]] && return - - if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then - local mingw=-w64-mingw32 - for mingw in $(usev abi_x86_64 x86_64${mingw}) $(usev abi_x86_32 i686${mingw}); do - if ! type -P ${mingw}-gcc >/dev/null; then - eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain" - eerror "yourself by installing sys-devel/crossdev then running:" - eerror - eerror " crossdev --target ${mingw}" - eerror - eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw" - eerror "--> Note that mingw builds are default for ${PN} even without this USE." - die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" - fi - done - fi -} - -src_prepare() { - # sanity check, bumping these has a history of oversights - local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \ - dlls/appwiz.cpl/addons.c || die) - if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then - local gmfatal= - [[ ${PV} == *9999 ]] && gmfatal=nonfatal - ${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)" - fi - - default - - if tc-is-clang; then - # -mabi=ms was ignored by /etc/portage/env/app-emulation/wine-proton -} - -src_configure() { - WINE_PREFIX=/usr/lib/${P} - WINE_DATADIR=/usr/share/${P} - - local conf=( - --prefix="${EPREFIX}"${WINE_PREFIX} - --datadir="${EPREFIX}"${WINE_DATADIR} - --includedir="${EPREFIX}"/usr/include/${P} - --libdir="${EPREFIX}"${WINE_PREFIX} - --mandir="${EPREFIX}"${WINE_DATADIR}/man - - # upstream (Valve) doesn't really support misc configurations (e.g. - # adds vulkan code not always guarded by --with-vulkan), so force - # some major options that are typically needed by games either way - --with-freetype - --with-mingw # needed by many, notably Blizzard titles - --with-opengl - --with-vulkan - --with-x - - # ...and disable most options unimportant for games and unused by - # Proton rather than expose as volatile USEs with little support - --without-capi - --without-cups - --without-gphoto - --without-gssapi - --without-krb5 - --without-ldap - --without-netapi - --without-opencl - --without-pcap - --without-sane - ac_cv_lib_soname_odbc= - - $(use_enable gecko mshtml) - $(use_enable mono mscoree) - --disable-tests - $(use_with alsa) - $(use_with fontconfig) - $(use_with gstreamer) - $(use_with nls gettext) - $(use_with openal) - $(use_with osmesa) - --without-oss # media-sound/oss is not packaged (OSSv4) - $(use_with pulseaudio pulse) - $(use_with sdl) - $(use_with ssl gnutls) - $(use_with udev) - $(use_with udisks dbus) # dbus is only used for udisks - $(use_with unwind) - $(use_with usb) - $(use_with v4l v4l2) - $(use_with vkd3d) - $(use_with xcomposite) - $(use_with xinerama) - ) - - tc-ld-force-bfd # builds with non-bfd but broken at runtime (bug #867097) - filter-lto # build failure - filter-flags -Wl,--gc-sections # runtime issues (bug #931329) - use custom-cflags || strip-flags # can break in obscure ways at runtime - use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} - - # broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849) - append-cflags -std=gnu17 - - # temporary workaround for tc-ld-force-bfd not yet enforcing with mold - # https://github.com/gentoo/gentoo/pull/28355 - [[ $($(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) == mold* ]] && - append-ldflags -fuse-ld=bfd - - # >=wine-proton-9 has proper fixes and builds with gcc-14, but would - # rather not have to worry about fixing old branches (bug #924486) - append-cflags $(test-flags-CC -Wno-error=incompatible-pointer-types) - - # build using upstream's way (--with-wine64) - # order matters: configure+compile 64->32, install 32->64 - local -i bits - for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do - ( - einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..." - - mkdir ../build${bits} || die - cd ../build${bits} || die - - # CROSSCC_amd64/x86 are unused by Wine, but recognized here for users - if (( bits == 64 )); then - : "${CROSSCC:=${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}}" - conf+=( --enable-win64 ) - elif use amd64; then - conf+=( - $(usev abi_x86_64 --with-wine64=../build64) - TARGETFLAGS=-m32 # for widl - ) - # _setup is optional, but use over Wine's auto-detect (+#472038) - multilib_toolchain_setup x86 - fi - : "${CROSSCC:=${CROSSCC_x86:-i686-w64-mingw32-gcc}}" - - # use *FLAGS for mingw, but strip unsupported (e.g. --hash-style=gnu) - : "${CROSSCFLAGS:=$( - filter-flags '-fstack-protector*' #870136 - 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,*' - - # -mavx with mingw-gcc has a history of obscure issues and - # disabling is seen as safer, e.g. `WINEARCH=win32 winecfg` - # crashes with -march=skylake >=wine-8.10, similar issues with - # znver4: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110273 - append-cflags -mno-avx #912268 - - CC=${CROSSCC} test-flags-CC ${CFLAGS:--O2})}" - : "${CROSSLDFLAGS:=$( - filter-flags '-fuse-ld=*' - CC=${CROSSCC} test-flags-CCLD ${LDFLAGS})}" - export CROSS{CC,{C,LD}FLAGS} - - ECONF_SOURCE=${S} econf "${conf[@]}" - ) - done -} - -src_compile() { - use abi_x86_64 && emake -C ../build64 # do first - use abi_x86_32 && emake -C ../build32 -} - -src_install() { - use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install - use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last - - # symlink for plain 'wine' and install its man pages if 64bit-only #404331 - if use abi_x86_64 && use !abi_x86_32; then - dosym wine64 ${WINE_PREFIX}/bin/wine - dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader - local man - for man in ../build64/loader/wine.*man; do - : "${man##*/wine}" - : "${_%.*}" - insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 - newins ${man} wine.1 - done - fi - - use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \ - "${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die - - # create variant wrappers for eselect-wine - local bin - for bin in "${ED}"${WINE_PREFIX}/bin/*; do - make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}" - done - - # don't let portage try to strip PE files with the wrong - # strip executable and instead handle it here (saves ~120MB) - dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows - use debug || - find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ - -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + || die - - dodoc ANNOUNCE AUTHORS README* documentation/README* - readme.gentoo_create_doc -} - -pkg_preinst() { - has_version ${CATEGORY}/${PN} && WINE_HAD_ANY_SLOT= -} - -pkg_postinst() { - [[ -v WINE_HAD_ANY_SLOT ]] || readme.gentoo_print_elog - - if use abi_x86_32; then - # difficult to tell what is needed from here, but try to warn - if has_version 'x11-drivers/nvidia-drivers'; then - if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then - ewarn "x11-drivers/nvidia-drivers is installed but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - ewarn "Multi-card setups may need this on media-libs/mesa as well." - fi - elif has_version 'media-libs/mesa[-abi_x86_32]'; then - ewarn "media-libs/mesa seems to be in use but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - fi - fi - - ewarn - ewarn "Warning: please consider ${PN} provided as-is without real" - ewarn "support. Upstream does not want bug reports unless can reproduce" - ewarn "with real Steam+Proton, and Gentoo is largely unable to help" - ewarn "unless it is a build/packaging issue. So, if need support, try" - ewarn "normal Wine or Proton instead." - - eselect wine update --if-unset || die -} - -pkg_postrm() { - eselect wine update --if-unset || die -} diff --git a/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild b/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild index ca291e4a2bfa..c5e848376068 100644 --- a/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild +++ b/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -127,6 +127,7 @@ PATCHES=( "${FILESDIR}"/${PN}-8.0.1c-unwind.patch "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch + "${FILESDIR}"/${PN}-9.0.4-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-proton/wine-proton-9.0.2.ebuild b/app-emulation/wine-proton/wine-proton-9.0.2.ebuild index 21ce4922b7c7..4315a6ab2158 100644 --- a/app-emulation/wine-proton/wine-proton-9.0.2.ebuild +++ b/app-emulation/wine-proton/wine-proton-9.0.2.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -138,6 +138,7 @@ PATCHES=( "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch "${FILESDIR}"/${PN}-9.0-rpath.patch + "${FILESDIR}"/${PN}-9.0.4-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-proton/wine-proton-9.0.4.ebuild b/app-emulation/wine-proton/wine-proton-9.0.4.ebuild index 1755a53c0c96..3b56b56302d6 100644 --- a/app-emulation/wine-proton/wine-proton-9.0.4.ebuild +++ b/app-emulation/wine-proton/wine-proton-9.0.4.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -138,6 +138,7 @@ PATCHES=( "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch "${FILESDIR}"/${PN}-9.0-rpath.patch + "${FILESDIR}"/${PN}-9.0.4-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-proton/wine-proton-9999.ebuild b/app-emulation/wine-proton/wine-proton-9999.ebuild index 4319a3a8efc7..64c99557d831 100644 --- a/app-emulation/wine-proton/wine-proton-9999.ebuild +++ b/app-emulation/wine-proton/wine-proton-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -138,6 +138,7 @@ PATCHES=( "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch "${FILESDIR}"/${PN}-9.0-rpath.patch + "${FILESDIR}"/${PN}-9.0.4-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-staging/Manifest b/app-emulation/wine-staging/Manifest index f446c7aad414..74cf1390c0b7 100644 --- a/app-emulation/wine-staging/Manifest +++ b/app-emulation/wine-staging/Manifest @@ -1,23 +1,15 @@ +AUX wine-staging-10.0-binutils2.44.patch 4104 BLAKE2B 1439d1f4720696297d7d108d7a905207ae690673ee95702b13c9bd5cad02bf4d5ee8cada9ea57645078daba58df7232e5abb7c999d3efb877f87f0819f7af45c SHA512 ce6bf25c41da2cc073a1badce0f0ea7921dd920e8c6333759280847ea6df05cb77206610bd64cb1c1d07b84647fa1724d28c015b4944697a0a7cbe49107ec7fe AUX wine-staging-7.17-noexecstack.patch 223 BLAKE2B 6e6cfc208f11c2c2b7bbc392e3703c50669ba9abf088dac0dd7aa8d6e59fcdd6656f5ad6955e4ef87c25d6f4082d83af71a09b2928934222b25847b8b2b5089f SHA512 43fc5c50c33e09f028c2369a660499fbb6c240931c6b7d44c4e838deee1df0390706967b375d36ee8eea339e86a5af1c7a49a76d884860c045c3476d8c8d2a5f AUX wine-staging-7.20-unwind.patch 1450 BLAKE2B 80e9222c95393aaa4b95e05597a4181030fc988d95e416d2f92631f29f640b9abb3dd0853d005de4725b41c09224e478741902075259d48a30830a923790579f SHA512 e1a72f1463be32975daa02064acb96189cd79cb41ff98f89b58e46c97100a3ac46405b1b9982378c9de275acbdb74168853e47b932e06398cdd2981b23f483ce AUX wine-staging-8.13-rpath.patch 554 BLAKE2B 209d8c581a9178242ee622338c5252f79b798cf5574f72b3984d71b7933e011b488060502715aa75630fbc3d10fcb03743ac31ed31664cacfc22b725253a117b SHA512 bbb25e02d19bd7c1a1f2d7db331d93cfcd5ce9172206ad9e19a44c52e5ece865d474eac024c2a5791dfa006c6efe0f68cd783ffc925ac793bf447d56090bdd02 DIST wine-10.0.tar.xz 32011244 BLAKE2B 92178cf484cf33e9f3b8340429ee8e68c36e0d25eee4a892f059ab73f103cfcb9eb15e1883bc9fd8c8fe311d4ccbb56582d1f780da7b1406a7839a13addd29ae SHA512 effb41c5641993e2e52eaa825cc19b7d9846e084992c5a5b066ead2339b24384d320898a9cee347a9a87106bcb3b0f54c8cd2c8d4de3a887a658052ddd5168d6 +DIST wine-10.1.tar.xz 32026152 BLAKE2B 573c4cc10c96c164eb02111b0a457be5500ab42c6d103180af5b2f88cdbcc134ea1fdb794687e6c736ebb5f9aa266e51424df26cd239fa26679d968ab5844cc3 SHA512 2dbc63e43e2cc1e0bf6294a926e8afc316e9f32efdce644229cb33bba98f6001c3f285b527767a83e5284558ef11f00515048aad031c6fc9122a4ce0692952af DIST wine-9.0.tar.xz 30007216 BLAKE2B cf53177201a2f7eeb35d0d8ce220f80808d979099a928ad60652d1dee92620c433cc105dffab4e9309f41766087ad1544ef49d2922538bb420d62f6dd64117a1 SHA512 838daf2c4581f83f8573b988036f517d57b84894b090a2a17433255d6d044dfa880e6724cdb83082a36c333df9d2083ab68ae53927622a620edd59f33462ada4 -DIST wine-9.19.tar.xz 30812468 BLAKE2B 24bdcd8d06c9f6b480dbb92469b41ff21b4174fcea6eaccf2359616f018d1c0a1305b5ae8acfcb2f7161b285963f26cc16530d1518db3d1bda7cdbb9807860d5 SHA512 530219c6a337f2996eac92d644ab603528b82cc6136cc37c1e6aa736d418f33c6f4b0d54f3537b04bceaf4487d84abcf926a2f5e9536ed4e966c4fe63c5b6ddd -DIST wine-9.20.tar.xz 31807848 BLAKE2B f2fef5c941284a5f89f92696cb242641ad88ea8a4388dd6d72977d9696ab63c1632b91b678567525527c80e30ad5ef2971e5bcf700e4f2d7db9bf3357488ed34 SHA512 65d229cfa1c4daffd0b1cec4480bdc4f8a2bbdeb08a7885efea403b0533beda6a22616e57f8e55038fe9e033137cf2718148e38076409a8c0341b29127bbefa3 -DIST wine-9.21.tar.xz 31888916 BLAKE2B 2d9b08263d2d3d174cf42ef8cb23d47c4516a394b44c4a2c5b1d220c4680239b84f47dfeea8b28c763593c725289cf7c257ad3f9fe0ee407b725391a2e956e90 SHA512 9dc64eb49755342f9a3f5fbb5665d1b3b4fafeb9b2723c198b04bb6f5d486f8feb00198e32e519d618bd87d1cf6c7e6a134bf9110b91023334e949eff00e758f -DIST wine-9.22.tar.xz 31966312 BLAKE2B 14d75c25a317549528abefd2350790ce03b9c4088bc5f6f3bbfcc9b5b024bf0943526a1571fe1079e8fd39830e4f762960365dfdfe670db7577f4095f30131b4 SHA512 8b54aee952abd08969d3485ef12db9aabeea8627fdaf7a27cb3392477580f2b5882467cd15ba4670741b6b20cc48bb5e3585d44ee4fb95a013c513a3c04342e4 DIST wine-staging-10.0.tar.gz 9490601 BLAKE2B 2843d6fbeca285a258dbb7505e2451d183b175a9d0b95a03551d635ca8a81c5ba5702d634f45be8d8574435a0fc77b84ca289350e4e74e97b9d5c7b1b8706fbe SHA512 1340473c0ede35450d9cb91bdca2fb237dd2c19e7cde7a05f3c2c70b741f4321e54a1cc4042a48dc83e07dc6967c904fae6c22233ce28fbc6dfa836cef281250 +DIST wine-staging-10.1.tar.gz 9542987 BLAKE2B d23934dd7da9f324935087ad7cff74e544bc8191e3570a125e468c18a170459135ef37cce3780f4625c8b4e330c5bf3f32c59d1cd034a465def3ec60c7efa65c SHA512 1b837a2b0c417dcf1821139b0cf220995305b22e59cc5d93b5055d4c6dc9c36da7b05f6a9f136b5f1a60618e497c0e4d295343880504f7ebb1e9fafeb2f0b38a DIST wine-staging-9.0.tar.gz 9577631 BLAKE2B 0012978f54c618e73d407dd49dccff02853912d0c015098889802518e8c51b280f5d60e11291335dafc68944ee01cbcb7fd6c5825ef10ae1520c7b82d9846718 SHA512 362209fcadcf029152b681c76beb231d0cc8de1609b994094f1dc88ab871fddda08b3d8c2fe36ceb38909a9d634c1ade864ca0f28a6a7715ec286a8b2884981f -DIST wine-staging-9.19.tar.gz 9460757 BLAKE2B 20b5cb89b73409bb45129cc59ed776271cb45347bb344a3f5b4b8075d783dd6f6ff03b14ab0bc4237b67020b909f6235c0fb8822331f171915dbf2c4417cb78e SHA512 c2504af047125e2bf29e4c1d9d7bef275a7bc236bc85344977448a8c4a2bd32cdb813db4ebe26de1b91d04371751ffe3498b9d9c96793d3d3d236fe6be9903dd -DIST wine-staging-9.20.tar.gz 9518651 BLAKE2B 77bd59dfc9f18a159d6256e3b5c92a8badbdf64c7e2f86fe0dbd2372d28e7643adb35b9f209ea431f4ea49c0db65f07681fc53272e9e26e3f8a6284baba352fe SHA512 fec41c68bc9396d0c40545f6eadd7ad7ba2ecdd886df6e5060be9e288e95790040f70a3c889ce8fa26b42829bef702d31f105eeede795f0a1d17f716f6c6682d -DIST wine-staging-9.21.tar.gz 9564841 BLAKE2B e890ecf3743ec662325a248829d69011ae48189e4694c357ddded0d0f4b46ed7431b94715960f52ceaabe0f7b8790c546f98c78febe8c93fd613848283f94d8e SHA512 fb7a5c0c0c72047649d031c1caaeb6b3626f23c38535b37cc331acd30dac26fd299b0f7abd54dc2396940ef01dc816415c74bd894bb77f08bcab988eb3685890 -DIST wine-staging-9.22.tar.gz 9541167 BLAKE2B c409058075dc413bdca77cb7e6da9ba43aee3f6110902536f1ded7260e6fdbe985210b5f168fbfa1a6839b98e4ebaddacad00a162d4ad43ff30e3ccba25c9b2e SHA512 e46fccbc9417765d4c93ac8f39a44f9a6c91e60c4325745726e81d5f1c3330171da3e02d7a3dad9a7df55fa9d2d31e182cb605eaa1a8006d94eecb02f489cc93 -EBUILD wine-staging-10.0.ebuild 15577 BLAKE2B 5f035f49497906258934f92d729abde3382c41952de44fafbbf747aa8bf1c6623528dd7ec30efde05526cc977a9e5c1fe2cb624b49e8cab07af00dd09f0f8a5b SHA512 064fb6e369b75cfd94eea74b4826203b7cf2202bf35ef0f6b7fec4b05e775d62be08fa8c6e9cfe5a283791b8ba2d9b0d2477d7173cfdc6be4b545f8e1041bd0d -EBUILD wine-staging-9.0.ebuild 15782 BLAKE2B 715718be1cee4347d2327af0f8efe8973d1322183b3512e2c6a03078d8c6660c989c0d51c63d410a4c8c52c776b8a1d8b4c07462e8ce1154e9b15e505dffc3c3 SHA512 7b5e2f2abc68c255937eeb53b4662d5065a43b5bee86534d7ec701d5ea87c4ff8f3abede513aba2d73e99e5e7b2f05ff8897dd4d9e2cc00e3754adad7a8f6aab -EBUILD wine-staging-9.19.ebuild 15573 BLAKE2B d8670581f281b7e52daab482c3929e1c819f878f6b0f349981584390bdc35891ac5a995f993604687a6e1ab24f0020885861128aa715e253842fb42ec5d9faa9 SHA512 7636c7324caaaf905f4a84c88564d855e02531493a4d3fd3f543184bfd6d651c51e4f50cb89af731b2881315c42ee820824b791e3243d718cc2442a30193bd0c -EBUILD wine-staging-9.20.ebuild 15577 BLAKE2B c00f13d1a1fb41b040c8a0e7b71a231fd905dec6827dc36d34e03ba9a333a8b51f8069fe6f014080ad9078510907ed142b02dfc8e084e38eaaceb0356afb7586 SHA512 7e2c3490e46825f4c87b5f427c937445d7a6a348402c10a637c9b05a758094baed0ff5dce7bd08526e705e941b0e2d105414319491646a92129e2ec49a6efc31 -EBUILD wine-staging-9.21.ebuild 15577 BLAKE2B c00f13d1a1fb41b040c8a0e7b71a231fd905dec6827dc36d34e03ba9a333a8b51f8069fe6f014080ad9078510907ed142b02dfc8e084e38eaaceb0356afb7586 SHA512 7e2c3490e46825f4c87b5f427c937445d7a6a348402c10a637c9b05a758094baed0ff5dce7bd08526e705e941b0e2d105414319491646a92129e2ec49a6efc31 -EBUILD wine-staging-9.22.ebuild 15577 BLAKE2B c00f13d1a1fb41b040c8a0e7b71a231fd905dec6827dc36d34e03ba9a333a8b51f8069fe6f014080ad9078510907ed142b02dfc8e084e38eaaceb0356afb7586 SHA512 7e2c3490e46825f4c87b5f427c937445d7a6a348402c10a637c9b05a758094baed0ff5dce7bd08526e705e941b0e2d105414319491646a92129e2ec49a6efc31 +EBUILD wine-staging-10.0.ebuild 15622 BLAKE2B c5b6dfd62b9349b62d321c0387e6865a1f57d1aa3618160778988e7bae088ec7150d7159187e2d6c9b6f0975f0adc7a338bb499443a6ba5c4c957dd05e3cc2d3 SHA512 ae7aaac96d218a2e14b7d2cad6c67a4687a4326c24f494ec1b819916b6e4a06f51122bc2dd225e8b9a8df45ee2b8185b954c2a04750fa6e658e21bd3058d5fcb +EBUILD wine-staging-10.1.ebuild 15622 BLAKE2B c5b6dfd62b9349b62d321c0387e6865a1f57d1aa3618160778988e7bae088ec7150d7159187e2d6c9b6f0975f0adc7a338bb499443a6ba5c4c957dd05e3cc2d3 SHA512 ae7aaac96d218a2e14b7d2cad6c67a4687a4326c24f494ec1b819916b6e4a06f51122bc2dd225e8b9a8df45ee2b8185b954c2a04750fa6e658e21bd3058d5fcb +EBUILD wine-staging-9.0.ebuild 15827 BLAKE2B c5943aca5853c48e7738344a4dd3e527af8f9b17f38a4062e16009c51ccbf6b351f4ccee1b9fe06c7a606f7255c0293ee7f8090a6d3e11ca288ef7f41cbfc260 SHA512 e0f743a8d86e93e166f45148780e52c9582fdfd94a93a685c95694469a83c7333129efcc4fd63e9942a41111a6ff5015ca50158c76160494be91829671f4c58f EBUILD wine-staging-9999.ebuild 15577 BLAKE2B 89236ab018b719162dcd15ce17e8130983b223596f3a434444cea02716ecce181f059606d90e3344e0aa14dc99582ae45989f9a685a527639dc1ce700ea3c02a SHA512 57ec46c07d740785b9f3322f1efa94fa3b0ec653d4366ad037103433fd58f4d8d6c733adf2bcc990e9f88e532e998dc2d92547800c59585bf7dedc62e0ad8b30 -MISC metadata.xml 2659 BLAKE2B 8a80b12643e82b98b71bc408e2fd79736da01c8f7d914c7a592cb685893ea3896bc44fecf0160faec803b284d3f6bb38cf36fb4745d9d43e0e1ced8702fcaf9d SHA512 a271e537318a4e90236c195f1f8c24c3255b5465345246627797d37238e2b6292d0734a9ab19542ee34fc1e9312dc4418694992f5ce3c53310228cc6bf14ef90 +MISC metadata.xml 2718 BLAKE2B 6848ef9723706ba3437fe18dbacf798cc2f266545c9241ceb9b5e83600bd1e82e80e9bc1d963f7a62e3b974af90d6e330305aaa77b9d578e20201ba1172fd775 SHA512 c89ca2bce23e50982f5cf846d58fe9f962da0eb8e13d7065fbba5e07afa072a9df000accf1fdb3829225b1fe3434d706be55749aa6b7d34e1f28ac91f82fa436 diff --git a/app-emulation/wine-staging/files/wine-staging-10.0-binutils2.44.patch b/app-emulation/wine-staging/files/wine-staging-10.0-binutils2.44.patch new file mode 100644 index 000000000000..4b20dbf1344d --- /dev/null +++ b/app-emulation/wine-staging/files/wine-staging-10.0-binutils2.44.patch @@ -0,0 +1,105 @@ +Note that this is only an issue when using mingw (PE) binutils-2.44, +host (ELF) binutils-2.44 has no impact on this and, before this patch, +using 2.44 could only happen with off-by-default USE=crossdev-mingw. + +https://bugs.winehq.org/show_bug.cgi?id=57819 +https://sourceware.org/PR32675 +https://gitlab.winehq.org/wine/wine/-/merge_requests/7328 +--- a/dlls/ntdll/loader.c ++++ b/dlls/ntdll/loader.c +@@ -3848,5 +3848,5 @@ + NTSTATUS nts; + FARPROC fp; +- DWORD id; ++ INT_PTR id; + + TRACE( "(%p, %p, %p, %p, %p, 0x%08lx)\n", base, desc, dllhook, syshook, addr, flags ); +--- a/tools/winebuild/import.c ++++ b/tools/winebuild/import.c +@@ -1332,4 +1332,14 @@ + } + ++static void output_import_section( int index, int is_delay ) ++{ ++ if (!is_delay) ++ output( "\n\t.section .idata$%d\n", index ); ++ else if (index == 5) ++ output( "\n\t.section .data$didat%d\n", index ); ++ else ++ output( "\n\t.section .rdata$didat%d\n", index ); ++} ++ + /* create a Windows-style import library */ + static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struct strarray files ) +@@ -1455,18 +1465,18 @@ + output( "\t.long 0\n" ); /* TimeDateStamp */ + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */ + output( ".L__wine_import_addrs:\n" ); + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */ + output( ".L__wine_import_names:\n" ); + + /* required to avoid internal linker errors with some binutils versions */ +- output( "\n\t.section .idata$2\n" ); ++ output_import_section( 2, is_delay ); + } + else + { +- output( "\n\t.section .idata$2\n" ); ++ output_import_section( 2, is_delay ); + output( "%s\n", asm_globl( import_desc ) ); + output_rva( ".L__wine_import_names" ); /* OriginalFirstThunk */ +@@ -1476,8 +1486,8 @@ + output_rva( ".L__wine_import_addrs" ); /* FirstThunk */ + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( ".L__wine_import_names:\n" ); /* OriginalFirstThunk head */ + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( ".L__wine_import_addrs:\n" ); /* FirstThunk head */ + } +@@ -1490,9 +1500,9 @@ + new_output_as_file(); + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */ +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */ +- output( "\n\t.section .idata$7\n" ); ++ output_import_section( 7, is_delay ); + output( "%s\n", asm_globl( import_name ) ); + output( "\t%s \"%s\"\n", get_asm_string_keyword(), spec->file_name ); +@@ -1585,8 +1595,8 @@ + } + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output_thunk_rva( by_name ? -1 : odp->ordinal, ".L__wine_import_name" ); + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "%s\n", asm_globl( imp_name ) ); + if (is_delay) +@@ -1597,5 +1607,5 @@ + if (by_name) + { +- output( "\n\t.section .idata$6\n" ); ++ output_import_section( 6, is_delay ); + output( ".L__wine_import_name:\n" ); + output( "\t.short %d\n", odp->hint ); +@@ -1604,5 +1614,5 @@ + + /* reference head object to always pull its sections */ +- output( "\n\t.section .idata$7\n" ); ++ output_import_section( 7, is_delay ); + output_rva( "%s", asm_name( import_desc ) ); + diff --git a/app-emulation/wine-staging/metadata.xml b/app-emulation/wine-staging/metadata.xml index e20c128974c9..814d877adcbe 100644 --- a/app-emulation/wine-staging/metadata.xml +++ b/app-emulation/wine-staging/metadata.xml @@ -16,7 +16,8 @@ This variant of the Wine packaging includes the Wine-Staging patchset. Enable ISDN support using net-libs/libcapi Use sys-devel/crossdev for the toolchain rather than - dev-util/mingw64-toolchain (requires manual setting up) + dev-util/mingw64-toolchain (requires manual setting up + and is mostly unsupported, try disabling if have issues) Pull in games-emulation/dosbox to run DOS applications Enable mshtml support using app-emulation/wine-gecko diff --git a/app-emulation/wine-staging/wine-staging-10.0.ebuild b/app-emulation/wine-staging/wine-staging-10.0.ebuild index 18b40a459062..517e06a88c97 100644 --- a/app-emulation/wine-staging/wine-staging-10.0.ebuild +++ b/app-emulation/wine-staging/wine-staging-10.0.ebuild @@ -173,6 +173,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.17-noexecstack.patch "${FILESDIR}"/${PN}-7.20-unwind.patch "${FILESDIR}"/${PN}-8.13-rpath.patch + "${FILESDIR}"/${PN}-10.0-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-staging/wine-staging-10.1.ebuild b/app-emulation/wine-staging/wine-staging-10.1.ebuild new file mode 100644 index 000000000000..517e06a88c97 --- /dev/null +++ b/app-emulation/wine-staging/wine-staging-10.1.ebuild @@ -0,0 +1,483 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MULTILIB_COMPAT=( abi_x86_{32,64} ) +PYTHON_COMPAT=( python3_{10..13} ) +inherit autotools edo flag-o-matic multilib multilib-build optfeature +inherit prefix python-any-r1 toolchain-funcs wrapper + +WINE_GECKO=2.47.4 +WINE_MONO=9.4.0 +WINE_P=wine-$(ver_cut 1-2) + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine-staging.git" + WINE_EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git" +else + (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 + SRC_URI=" + https://dl.winehq.org/wine/source/${WINE_SDIR}/${WINE_P}.tar.xz + https://github.com/wine-staging/wine-staging/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="-* ~amd64 ~x86" +fi + +DESCRIPTION="Free implementation of Windows(tm) on Unix, with Wine-Staging patchset" +HOMEPAGE=" + https://wiki.winehq.org/Wine-Staging + https://gitlab.winehq.org/wine/wine-staging/ +" + +S="${WORKDIR}/${WINE_P}" + +LICENSE="LGPL-2.1+ BSD BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff" +SLOT="${PV}" +IUSE=" + +X +abi_x86_32 +abi_x86_64 +alsa capi crossdev-mingw cups dos + llvm-libunwind custom-cflags ffmpeg +fontconfig +gecko gphoto2 + +gstreamer kerberos +mingw +mono netapi nls odbc opencl +opengl + osmesa pcap perl pulseaudio samba scanner +sdl selinux smartcard + +ssl +strip +truetype udev udisks +unwind usb v4l +vulkan wayland + wow64 +xcomposite xinerama +" +# bug #551124 for truetype +# TODO: wow64 can be done without mingw if using clang (needs bug #912237) +REQUIRED_USE=" + X? ( truetype ) + crossdev-mingw? ( mingw ) + wow64? ( abi_x86_64 !abi_x86_32 mingw ) +" + +# tests are non-trivial to run, can hang easily, don't play well with +# sandbox, and several need real opengl/vulkan or network access +RESTRICT="test" + +# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked +WINE_DLOPEN_DEPEND=" + X? ( + x11-libs/libXcursor[${MULTILIB_USEDEP}] + x11-libs/libXfixes[${MULTILIB_USEDEP}] + x11-libs/libXi[${MULTILIB_USEDEP}] + x11-libs/libXrandr[${MULTILIB_USEDEP}] + x11-libs/libXrender[${MULTILIB_USEDEP}] + x11-libs/libXxf86vm[${MULTILIB_USEDEP}] + opengl? ( + media-libs/libglvnd[X,${MULTILIB_USEDEP}] + osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) + ) + xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) + xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) + ) + cups? ( net-print/cups[${MULTILIB_USEDEP}] ) + fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) + kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) + netapi? ( net-fs/samba[${MULTILIB_USEDEP}] ) + odbc? ( dev-db/unixODBC[${MULTILIB_USEDEP}] ) + sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) + ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] ) + truetype? ( media-libs/freetype[${MULTILIB_USEDEP}] ) + udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) + v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) + vulkan? ( media-libs/vulkan-loader[X?,wayland?,${MULTILIB_USEDEP}] ) +" +WINE_COMMON_DEPEND=" + ${WINE_DLOPEN_DEPEND} + X? ( + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + ) + alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) + capi? ( net-libs/libcapi:=[${MULTILIB_USEDEP}] ) + ffmpeg? ( media-video/ffmpeg:=[${MULTILIB_USEDEP}] ) + gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) + gstreamer? ( + dev-libs/glib:2[${MULTILIB_USEDEP}] + media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] + media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] + ) + opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) + pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] ) + pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) + scanner? ( media-gfx/sane-backends[${MULTILIB_USEDEP}] ) + smartcard? ( sys-apps/pcsc-lite[${MULTILIB_USEDEP}] ) + udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] ) + unwind? ( + llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] ) + !llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] ) + ) + usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] ) + wayland? ( + dev-libs/wayland[${MULTILIB_USEDEP}] + x11-libs/libxkbcommon[${MULTILIB_USEDEP}] + ) +" +RDEPEND=" + ${WINE_COMMON_DEPEND} + app-emulation/wine-desktop-common + dos? ( + || ( + games-emulation/dosbox + games-emulation/dosbox-staging + ) + ) + gecko? ( + app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] + wow64? ( app-emulation/wine-gecko[abi_x86_32] ) + ) + gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] ) + mono? ( app-emulation/wine-mono:${WINE_MONO} ) + perl? ( + dev-lang/perl + dev-perl/XML-LibXML + ) + samba? ( net-fs/samba[winbind] ) + selinux? ( sec-policy/selinux-wine ) + udisks? ( sys-fs/udisks:2 ) +" +DEPEND=" + ${WINE_COMMON_DEPEND} + sys-kernel/linux-headers + X? ( x11-base/xorg-proto ) +" +# gitapply.sh "can" work without git but that is hardly tested +# and known failing with some versions, so force real git +BDEPEND=" + ${PYTHON_DEPS} + || ( + sys-devel/binutils + llvm-core/lld + ) + dev-lang/perl + dev-vcs/git + sys-devel/bison + sys-devel/flex + virtual/pkgconfig + mingw? ( !crossdev-mingw? ( + >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] + wow64? ( dev-util/mingw64-toolchain[abi_x86_32] ) + ) ) + nls? ( sys-devel/gettext ) + wayland? ( dev-util/wayland-scanner ) +" +IDEPEND=">=app-eselect/eselect-wine-2" + +QA_CONFIG_IMPL_DECL_SKIP=( + __clear_cache # unused on amd64+x86 (bug #900334) + res_getservers # false positive +) +QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext + +PATCHES=( + "${FILESDIR}"/${PN}-7.17-noexecstack.patch + "${FILESDIR}"/${PN}-7.20-unwind.patch + "${FILESDIR}"/${PN}-8.13-rpath.patch + "${FILESDIR}"/${PN}-10.0-binutils2.44.patch +) + +pkg_pretend() { + [[ ${MERGE_TYPE} == binary ]] && return + + if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then + local mingw=-w64-mingw32 + for mingw in $(usev abi_x86_64 x86_64${mingw}) \ + $(use abi_x86_32 || use wow64 && echo i686${mingw}); do + if ! type -P ${mingw}-gcc >/dev/null; then + eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain" + eerror "yourself by installing sys-devel/crossdev then running:" + eerror + eerror " crossdev --target ${mingw}" + eerror + eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw" + die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" + fi + done + fi +} + +src_unpack() { + if [[ ${PV} == *9999 ]]; then + EGIT_CHECKOUT_DIR=${WORKDIR}/${P} + git-r3_src_unpack + + # hack: use subshell to preserve state (including what git-r3 unpack + # sets) for smart-live-rebuild as this is not the repo to look at + ( + EGIT_COMMIT=$(<"${EGIT_CHECKOUT_DIR}"/staging/upstream-commit) || die + EGIT_REPO_URI=${WINE_EGIT_REPO_URI} + EGIT_CHECKOUT_DIR=${S} + einfo "Fetching Wine commit matching the current patchset by default (${EGIT_COMMIT})" + git-r3_src_unpack + ) + else + default + fi +} + +src_prepare() { + local patchinstallargs=( + --all + --no-autoconf + ${MY_WINE_STAGING_CONF} + ) + + edo "${PYTHON}" ../${P}/staging/patchinstall.py "${patchinstallargs[@]}" + + # sanity check, bumping these has a history of oversights + local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \ + dlls/appwiz.cpl/addons.c || die) + if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then + local gmfatal= + [[ ${PV} == *9999 ]] && gmfatal=nonfatal + ${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)" + fi + + default + + if tc-is-clang; then + if use mingw; then + # -mabi=ms was ignored by /etc/portage/env/app-emulation/wine-staging +} + +src_configure() { + WINE_PREFIX=/usr/lib/${P} + WINE_DATADIR=/usr/share/${P} + + local conf=( + --prefix="${EPREFIX}"${WINE_PREFIX} + --datadir="${EPREFIX}"${WINE_DATADIR} + --includedir="${EPREFIX}"/usr/include/${P} + --libdir="${EPREFIX}"${WINE_PREFIX} + --mandir="${EPREFIX}"${WINE_DATADIR}/man + + $(usev wow64 --enable-archs=x86_64,i386) + + $(use_enable gecko mshtml) + $(use_enable mono mscoree) + --disable-tests + + $(use_with X x) + $(use_with alsa) + $(use_with capi) + $(use_with cups) + $(use_with ffmpeg) + $(use_with fontconfig) + $(use_with gphoto2 gphoto) + $(use_with gstreamer) + $(use_with kerberos gssapi) + $(use_with kerberos krb5) + $(use_with mingw) + $(use_with netapi) + $(use_with nls gettext) + $(use_with opencl) + $(use_with opengl) + $(use_with osmesa) + --without-oss # media-sound/oss is not packaged (OSSv4) + $(use_with pcap) + $(use_with pulseaudio pulse) + $(use_with scanner sane) + $(use_with sdl) + $(use_with smartcard pcsclite) + $(use_with ssl gnutls) + $(use_with truetype freetype) + $(use_with udev) + $(use_with udisks dbus) # dbus is only used for udisks + $(use_with unwind) + $(use_with usb) + $(use_with v4l v4l2) + $(use_with vulkan) + $(use_with wayland) + $(use_with xcomposite) + $(use_with xinerama) + $(usev !odbc ac_cv_lib_soname_odbc=) + ) + + filter-lto # build failure + filter-flags -Wl,--gc-sections # runtime issues (bug #931329) + use custom-cflags || strip-flags # can break in obscure ways at runtime + + # broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849) + append-cflags -std=gnu17 + + # wine uses linker tricks unlikely to work with non-bfd/lld (bug #867097) + # (do self test until https://github.com/gentoo/gentoo/pull/28355) + if [[ $(LC_ALL=C $(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) != @(LLD|GNU\ ld)* ]] + then + has_version -b sys-devel/binutils && + append-ldflags -fuse-ld=bfd || + append-ldflags -fuse-ld=lld + strip-unsupported-flags + fi + + if use mingw; then + use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} + + # CROSSCC was formerly recognized by wine, thus been using similar + # variables (subject to change, esp. if ever make a mingw.eclass). + local mingwcc_amd64=${CROSSCC:-${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}} + local mingwcc_x86=${CROSSCC:-${CROSSCC_x86:-i686-w64-mingw32-gcc}} + local -n mingwcc=mingwcc_$(usex abi_x86_64 amd64 x86) + + conf+=( + ac_cv_prog_x86_64_CC="${mingwcc_amd64}" + ac_cv_prog_i386_CC="${mingwcc_x86}" + + CROSSCFLAGS="${CROSSCFLAGS:-$( + filter-flags '-fstack-protector*' #870136 + 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,*' + + CC=${mingwcc} test-flags-CC ${CFLAGS:--O2} + )}" + + CROSSLDFLAGS="${CROSSLDFLAGS:-$( + filter-flags '-fuse-ld=*' + + CC=${mingwcc} test-flags-CCLD ${LDFLAGS} + )}" + ) + fi + + # order matters with multilib: configure+compile 64->32, install 32->64 + local -i bits + for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do + ( + einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..." + + mkdir ../build${bits} || die + cd ../build${bits} || die + + if (( bits == 64 )); then + conf+=( --enable-win64 ) + elif use amd64; then + conf+=( + $(usev abi_x86_64 --with-wine64=../build64) + TARGETFLAGS=-m32 # for widl + ) + # _setup is optional, but use over Wine's auto-detect (+#472038) + multilib_toolchain_setup x86 + fi + + ECONF_SOURCE=${S} econf "${conf[@]}" + ) + done +} + +src_compile() { + use abi_x86_64 && emake -C ../build64 # do first + use abi_x86_32 && emake -C ../build32 +} + +src_install() { + use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install + use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last + + # Ensure both wine64 and wine are available if USE=abi_x86_64 (wow64, + # -abi_x86_32, and/or EXTRA_ECONF could cause varying scenarios where + # one or the other could be missing and that is unexpected for users + # and some tools like winetricks) + if use abi_x86_64; then + if [[ -e ${ED}${WINE_PREFIX}/bin/wine64 && ! -e ${ED}${WINE_PREFIX}/bin/wine ]]; then + dosym wine64 ${WINE_PREFIX}/bin/wine + dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader + + # also install wine(1) man pages (incl. translations) + local man + for man in ../build64/loader/wine.*man; do + : "${man##*/wine}" + : "${_%.*}" + insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 + newins ${man} wine.1 + done + elif [[ ! -e ${ED}${WINE_PREFIX}/bin/wine64 && -e ${ED}${WINE_PREFIX}/bin/wine ]]; then + dosym wine ${WINE_PREFIX}/bin/wine64 + dosym wine-preloader ${WINE_PREFIX}/bin/wine64-preloader + fi + fi + + use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \ + "${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die + + # create variant wrappers for eselect-wine + local bin + for bin in "${ED}"${WINE_PREFIX}/bin/*; do + make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}" + done + + if use mingw; then + # don't let portage try to strip PE files with the wrong + # strip executable and instead handle it here (saves ~120MB) + dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows + + if use strip; then + ebegin "Stripping Windows (PE) binaries" + find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ + -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + + eend ${?} || die + fi + fi + + dodoc ANNOUNCE* AUTHORS README* documentation/README* +} + +pkg_postinst() { + if use !abi_x86_32 && use !wow64; then + ewarn "32bit support is disabled. While 64bit applications themselves will" + ewarn "work, be warned that it is not unusual that installers or other helpers" + ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," + ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." + elif use abi_x86_32 && { use opengl || use vulkan; }; then + # difficult to tell what is needed from here, but try to warn + if has_version 'x11-drivers/nvidia-drivers'; then + if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then + ewarn "x11-drivers/nvidia-drivers is installed but is built without" + ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" + ewarn "applications under ${PN} will likely not be usable." + ewarn "Multi-card setups may need this on media-libs/mesa as well." + fi + elif has_version 'media-libs/mesa[-abi_x86_32]'; then + ewarn "media-libs/mesa seems to be in use but is built without" + ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" + ewarn "applications under ${PN} will likely not be usable." + fi + fi + + optfeature "/dev/hidraw* access used for *some* controllers (e.g. DualShock4)" \ + games-util/game-device-udev-rules + + eselect wine update --if-unset || die +} + +pkg_postrm() { + eselect wine update --if-unset || die +} diff --git a/app-emulation/wine-staging/wine-staging-9.0.ebuild b/app-emulation/wine-staging/wine-staging-9.0.ebuild index 7bd88b9de330..fc7dfd731bbc 100644 --- a/app-emulation/wine-staging/wine-staging-9.0.ebuild +++ b/app-emulation/wine-staging/wine-staging-9.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -177,6 +177,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.17-noexecstack.patch "${FILESDIR}"/${PN}-7.20-unwind.patch "${FILESDIR}"/${PN}-8.13-rpath.patch + "${FILESDIR}"/${PN}-10.0-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-staging/wine-staging-9.19.ebuild b/app-emulation/wine-staging/wine-staging-9.19.ebuild deleted file mode 100644 index dc7cc79a6db5..000000000000 --- a/app-emulation/wine-staging/wine-staging-9.19.ebuild +++ /dev/null @@ -1,482 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MULTILIB_COMPAT=( abi_x86_{32,64} ) -PYTHON_COMPAT=( python3_{10..13} ) -inherit autotools edo flag-o-matic multilib multilib-build optfeature -inherit prefix python-any-r1 toolchain-funcs wrapper - -WINE_GECKO=2.47.4 -WINE_MONO=9.3.0 -WINE_P=wine-$(ver_cut 1-2) - -if [[ ${PV} == *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine-staging.git" - WINE_EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git" -else - (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 - SRC_URI=" - https://dl.winehq.org/wine/source/${WINE_SDIR}/${WINE_P}.tar.xz - https://github.com/wine-staging/wine-staging/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="-* ~amd64 ~x86" -fi - -DESCRIPTION="Free implementation of Windows(tm) on Unix, with Wine-Staging patchset" -HOMEPAGE=" - https://wiki.winehq.org/Wine-Staging - https://gitlab.winehq.org/wine/wine-staging/ -" - -S="${WORKDIR}/${WINE_P}" - -LICENSE="LGPL-2.1+ BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff" -SLOT="${PV}" -IUSE=" - +X +abi_x86_32 +abi_x86_64 +alsa capi crossdev-mingw cups dos - llvm-libunwind custom-cflags ffmpeg +fontconfig +gecko gphoto2 - +gstreamer kerberos +mingw +mono netapi nls odbc opencl +opengl - osmesa pcap perl pulseaudio samba scanner +sdl selinux smartcard - +ssl +strip +truetype udev udisks +unwind usb v4l +vulkan wayland - wow64 +xcomposite xinerama -" -# bug #551124 for truetype -# TODO: wow64 can be done without mingw if using clang (needs bug #912237) -REQUIRED_USE=" - X? ( truetype ) - crossdev-mingw? ( mingw ) - wow64? ( abi_x86_64 !abi_x86_32 mingw ) -" - -# tests are non-trivial to run, can hang easily, don't play well with -# sandbox, and several need real opengl/vulkan or network access -RESTRICT="test" - -# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked -WINE_DLOPEN_DEPEND=" - X? ( - x11-libs/libXcursor[${MULTILIB_USEDEP}] - x11-libs/libXfixes[${MULTILIB_USEDEP}] - x11-libs/libXi[${MULTILIB_USEDEP}] - x11-libs/libXrandr[${MULTILIB_USEDEP}] - x11-libs/libXrender[${MULTILIB_USEDEP}] - x11-libs/libXxf86vm[${MULTILIB_USEDEP}] - opengl? ( - media-libs/libglvnd[X,${MULTILIB_USEDEP}] - osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) - ) - xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) - xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) - ) - cups? ( net-print/cups[${MULTILIB_USEDEP}] ) - fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) - kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) - netapi? ( net-fs/samba[${MULTILIB_USEDEP}] ) - odbc? ( dev-db/unixODBC[${MULTILIB_USEDEP}] ) - sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) - ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] ) - truetype? ( media-libs/freetype[${MULTILIB_USEDEP}] ) - udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) - v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) - vulkan? ( media-libs/vulkan-loader[X?,wayland?,${MULTILIB_USEDEP}] ) -" -WINE_COMMON_DEPEND=" - ${WINE_DLOPEN_DEPEND} - X? ( - x11-libs/libX11[${MULTILIB_USEDEP}] - x11-libs/libXext[${MULTILIB_USEDEP}] - ) - alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) - capi? ( net-libs/libcapi:=[${MULTILIB_USEDEP}] ) - ffmpeg? ( media-video/ffmpeg:=[${MULTILIB_USEDEP}] ) - gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) - gstreamer? ( - dev-libs/glib:2[${MULTILIB_USEDEP}] - media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] - media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] - ) - opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) - pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] ) - pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) - scanner? ( media-gfx/sane-backends[${MULTILIB_USEDEP}] ) - smartcard? ( sys-apps/pcsc-lite[${MULTILIB_USEDEP}] ) - udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] ) - unwind? ( - llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] ) - !llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] ) - ) - usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] ) - wayland? ( - dev-libs/wayland[${MULTILIB_USEDEP}] - x11-libs/libxkbcommon[${MULTILIB_USEDEP}] - ) -" -RDEPEND=" - ${WINE_COMMON_DEPEND} - app-emulation/wine-desktop-common - dos? ( - || ( - games-emulation/dosbox - games-emulation/dosbox-staging - ) - ) - gecko? ( - app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] - wow64? ( app-emulation/wine-gecko[abi_x86_32] ) - ) - gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] ) - mono? ( app-emulation/wine-mono:${WINE_MONO} ) - perl? ( - dev-lang/perl - dev-perl/XML-LibXML - ) - samba? ( net-fs/samba[winbind] ) - selinux? ( sec-policy/selinux-wine ) - udisks? ( sys-fs/udisks:2 ) -" -DEPEND=" - ${WINE_COMMON_DEPEND} - sys-kernel/linux-headers - X? ( x11-base/xorg-proto ) -" -# gitapply.sh "can" work without git but that is hardly tested -# and known failing with some versions, so force real git -BDEPEND=" - ${PYTHON_DEPS} - || ( - sys-devel/binutils - llvm-core/lld - ) - dev-lang/perl - dev-vcs/git - sys-devel/bison - sys-devel/flex - virtual/pkgconfig - mingw? ( !crossdev-mingw? ( - >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] - wow64? ( dev-util/mingw64-toolchain[abi_x86_32] ) - ) ) - nls? ( sys-devel/gettext ) - wayland? ( dev-util/wayland-scanner ) -" -IDEPEND=">=app-eselect/eselect-wine-2" - -QA_CONFIG_IMPL_DECL_SKIP=( - __clear_cache # unused on amd64+x86 (bug #900334) - res_getservers # false positive -) -QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext - -PATCHES=( - "${FILESDIR}"/${PN}-7.17-noexecstack.patch - "${FILESDIR}"/${PN}-7.20-unwind.patch - "${FILESDIR}"/${PN}-8.13-rpath.patch -) - -pkg_pretend() { - [[ ${MERGE_TYPE} == binary ]] && return - - if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then - local mingw=-w64-mingw32 - for mingw in $(usev abi_x86_64 x86_64${mingw}) \ - $(use abi_x86_32 || use wow64 && echo i686${mingw}); do - if ! type -P ${mingw}-gcc >/dev/null; then - eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain" - eerror "yourself by installing sys-devel/crossdev then running:" - eerror - eerror " crossdev --target ${mingw}" - eerror - eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw" - die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" - fi - done - fi -} - -src_unpack() { - if [[ ${PV} == *9999 ]]; then - EGIT_CHECKOUT_DIR=${WORKDIR}/${P} - git-r3_src_unpack - - # hack: use subshell to preserve state (including what git-r3 unpack - # sets) for smart-live-rebuild as this is not the repo to look at - ( - EGIT_COMMIT=$(<"${EGIT_CHECKOUT_DIR}"/staging/upstream-commit) || die - EGIT_REPO_URI=${WINE_EGIT_REPO_URI} - EGIT_CHECKOUT_DIR=${S} - einfo "Fetching Wine commit matching the current patchset by default (${EGIT_COMMIT})" - git-r3_src_unpack - ) - else - default - fi -} - -src_prepare() { - local patchinstallargs=( - --all - --no-autoconf - ${MY_WINE_STAGING_CONF} - ) - - edo "${PYTHON}" ../${P}/staging/patchinstall.py "${patchinstallargs[@]}" - - # sanity check, bumping these has a history of oversights - local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \ - dlls/appwiz.cpl/addons.c || die) - if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then - local gmfatal= - [[ ${PV} == *9999 ]] && gmfatal=nonfatal - ${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)" - fi - - default - - if tc-is-clang; then - if use mingw; then - # -mabi=ms was ignored by /etc/portage/env/app-emulation/wine-staging -} - -src_configure() { - WINE_PREFIX=/usr/lib/${P} - WINE_DATADIR=/usr/share/${P} - - local conf=( - --prefix="${EPREFIX}"${WINE_PREFIX} - --datadir="${EPREFIX}"${WINE_DATADIR} - --includedir="${EPREFIX}"/usr/include/${P} - --libdir="${EPREFIX}"${WINE_PREFIX} - --mandir="${EPREFIX}"${WINE_DATADIR}/man - - $(usev wow64 --enable-archs=x86_64,i386) - - $(use_enable gecko mshtml) - $(use_enable mono mscoree) - --disable-tests - - $(use_with X x) - $(use_with alsa) - $(use_with capi) - $(use_with cups) - $(use_with ffmpeg) - $(use_with fontconfig) - $(use_with gphoto2 gphoto) - $(use_with gstreamer) - $(use_with kerberos gssapi) - $(use_with kerberos krb5) - $(use_with mingw) - $(use_with netapi) - $(use_with nls gettext) - $(use_with opencl) - $(use_with opengl) - $(use_with osmesa) - --without-oss # media-sound/oss is not packaged (OSSv4) - $(use_with pcap) - $(use_with pulseaudio pulse) - $(use_with scanner sane) - $(use_with sdl) - $(use_with smartcard pcsclite) - $(use_with ssl gnutls) - $(use_with truetype freetype) - $(use_with udev) - $(use_with udisks dbus) # dbus is only used for udisks - $(use_with unwind) - $(use_with usb) - $(use_with v4l v4l2) - $(use_with vulkan) - $(use_with wayland) - $(use_with xcomposite) - $(use_with xinerama) - $(usev !odbc ac_cv_lib_soname_odbc=) - ) - - filter-lto # build failure - filter-flags -Wl,--gc-sections # runtime issues (bug #931329) - use custom-cflags || strip-flags # can break in obscure ways at runtime - - # broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849) - append-cflags -std=gnu17 - - # wine uses linker tricks unlikely to work with non-bfd/lld (bug #867097) - # (do self test until https://github.com/gentoo/gentoo/pull/28355) - if [[ $(LC_ALL=C $(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) != @(LLD|GNU\ ld)* ]] - then - has_version -b sys-devel/binutils && - append-ldflags -fuse-ld=bfd || - append-ldflags -fuse-ld=lld - strip-unsupported-flags - fi - - if use mingw; then - use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} - - # CROSSCC was formerly recognized by wine, thus been using similar - # variables (subject to change, esp. if ever make a mingw.eclass). - local mingwcc_amd64=${CROSSCC:-${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}} - local mingwcc_x86=${CROSSCC:-${CROSSCC_x86:-i686-w64-mingw32-gcc}} - local -n mingwcc=mingwcc_$(usex abi_x86_64 amd64 x86) - - conf+=( - ac_cv_prog_x86_64_CC="${mingwcc_amd64}" - ac_cv_prog_i386_CC="${mingwcc_x86}" - - CROSSCFLAGS="${CROSSCFLAGS:-$( - filter-flags '-fstack-protector*' #870136 - 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,*' - - CC=${mingwcc} test-flags-CC ${CFLAGS:--O2} - )}" - - CROSSLDFLAGS="${CROSSLDFLAGS:-$( - filter-flags '-fuse-ld=*' - - CC=${mingwcc} test-flags-CCLD ${LDFLAGS} - )}" - ) - fi - - # order matters with multilib: configure+compile 64->32, install 32->64 - local -i bits - for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do - ( - einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..." - - mkdir ../build${bits} || die - cd ../build${bits} || die - - if (( bits == 64 )); then - conf+=( --enable-win64 ) - elif use amd64; then - conf+=( - $(usev abi_x86_64 --with-wine64=../build64) - TARGETFLAGS=-m32 # for widl - ) - # _setup is optional, but use over Wine's auto-detect (+#472038) - multilib_toolchain_setup x86 - fi - - ECONF_SOURCE=${S} econf "${conf[@]}" - ) - done -} - -src_compile() { - use abi_x86_64 && emake -C ../build64 # do first - use abi_x86_32 && emake -C ../build32 -} - -src_install() { - use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install - use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last - - # Ensure both wine64 and wine are available if USE=abi_x86_64 (wow64, - # -abi_x86_32, and/or EXTRA_ECONF could cause varying scenarios where - # one or the other could be missing and that is unexpected for users - # and some tools like winetricks) - if use abi_x86_64; then - if [[ -e ${ED}${WINE_PREFIX}/bin/wine64 && ! -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine64 ${WINE_PREFIX}/bin/wine - dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader - - # also install wine(1) man pages (incl. translations) - local man - for man in ../build64/loader/wine.*man; do - : "${man##*/wine}" - : "${_%.*}" - insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 - newins ${man} wine.1 - done - elif [[ ! -e ${ED}${WINE_PREFIX}/bin/wine64 && -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine ${WINE_PREFIX}/bin/wine64 - dosym wine-preloader ${WINE_PREFIX}/bin/wine64-preloader - fi - fi - - use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \ - "${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die - - # create variant wrappers for eselect-wine - local bin - for bin in "${ED}"${WINE_PREFIX}/bin/*; do - make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}" - done - - if use mingw; then - # don't let portage try to strip PE files with the wrong - # strip executable and instead handle it here (saves ~120MB) - dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows - - if use strip; then - ebegin "Stripping Windows (PE) binaries" - find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ - -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + - eend ${?} || die - fi - fi - - dodoc ANNOUNCE* AUTHORS README* documentation/README* -} - -pkg_postinst() { - if use !abi_x86_32 && use !wow64; then - ewarn "32bit support is disabled. While 64bit applications themselves will" - ewarn "work, be warned that it is not unusual that installers or other helpers" - ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," - ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." - elif use abi_x86_32 && { use opengl || use vulkan; }; then - # difficult to tell what is needed from here, but try to warn - if has_version 'x11-drivers/nvidia-drivers'; then - if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then - ewarn "x11-drivers/nvidia-drivers is installed but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - ewarn "Multi-card setups may need this on media-libs/mesa as well." - fi - elif has_version 'media-libs/mesa[-abi_x86_32]'; then - ewarn "media-libs/mesa seems to be in use but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - fi - fi - - optfeature "/dev/hidraw* access used for *some* controllers (e.g. DualShock4)" \ - games-util/game-device-udev-rules - - eselect wine update --if-unset || die -} - -pkg_postrm() { - eselect wine update --if-unset || die -} diff --git a/app-emulation/wine-staging/wine-staging-9.20.ebuild b/app-emulation/wine-staging/wine-staging-9.20.ebuild deleted file mode 100644 index bb1e1d52d321..000000000000 --- a/app-emulation/wine-staging/wine-staging-9.20.ebuild +++ /dev/null @@ -1,482 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MULTILIB_COMPAT=( abi_x86_{32,64} ) -PYTHON_COMPAT=( python3_{10..13} ) -inherit autotools edo flag-o-matic multilib multilib-build optfeature -inherit prefix python-any-r1 toolchain-funcs wrapper - -WINE_GECKO=2.47.4 -WINE_MONO=9.3.0 -WINE_P=wine-$(ver_cut 1-2) - -if [[ ${PV} == *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine-staging.git" - WINE_EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git" -else - (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 - SRC_URI=" - https://dl.winehq.org/wine/source/${WINE_SDIR}/${WINE_P}.tar.xz - https://github.com/wine-staging/wine-staging/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="-* ~amd64 ~x86" -fi - -DESCRIPTION="Free implementation of Windows(tm) on Unix, with Wine-Staging patchset" -HOMEPAGE=" - https://wiki.winehq.org/Wine-Staging - https://gitlab.winehq.org/wine/wine-staging/ -" - -S="${WORKDIR}/${WINE_P}" - -LICENSE="LGPL-2.1+ BSD BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff" -SLOT="${PV}" -IUSE=" - +X +abi_x86_32 +abi_x86_64 +alsa capi crossdev-mingw cups dos - llvm-libunwind custom-cflags ffmpeg +fontconfig +gecko gphoto2 - +gstreamer kerberos +mingw +mono netapi nls odbc opencl +opengl - osmesa pcap perl pulseaudio samba scanner +sdl selinux smartcard - +ssl +strip +truetype udev udisks +unwind usb v4l +vulkan wayland - wow64 +xcomposite xinerama -" -# bug #551124 for truetype -# TODO: wow64 can be done without mingw if using clang (needs bug #912237) -REQUIRED_USE=" - X? ( truetype ) - crossdev-mingw? ( mingw ) - wow64? ( abi_x86_64 !abi_x86_32 mingw ) -" - -# tests are non-trivial to run, can hang easily, don't play well with -# sandbox, and several need real opengl/vulkan or network access -RESTRICT="test" - -# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked -WINE_DLOPEN_DEPEND=" - X? ( - x11-libs/libXcursor[${MULTILIB_USEDEP}] - x11-libs/libXfixes[${MULTILIB_USEDEP}] - x11-libs/libXi[${MULTILIB_USEDEP}] - x11-libs/libXrandr[${MULTILIB_USEDEP}] - x11-libs/libXrender[${MULTILIB_USEDEP}] - x11-libs/libXxf86vm[${MULTILIB_USEDEP}] - opengl? ( - media-libs/libglvnd[X,${MULTILIB_USEDEP}] - osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) - ) - xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) - xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) - ) - cups? ( net-print/cups[${MULTILIB_USEDEP}] ) - fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) - kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) - netapi? ( net-fs/samba[${MULTILIB_USEDEP}] ) - odbc? ( dev-db/unixODBC[${MULTILIB_USEDEP}] ) - sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) - ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] ) - truetype? ( media-libs/freetype[${MULTILIB_USEDEP}] ) - udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) - v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) - vulkan? ( media-libs/vulkan-loader[X?,wayland?,${MULTILIB_USEDEP}] ) -" -WINE_COMMON_DEPEND=" - ${WINE_DLOPEN_DEPEND} - X? ( - x11-libs/libX11[${MULTILIB_USEDEP}] - x11-libs/libXext[${MULTILIB_USEDEP}] - ) - alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) - capi? ( net-libs/libcapi:=[${MULTILIB_USEDEP}] ) - ffmpeg? ( media-video/ffmpeg:=[${MULTILIB_USEDEP}] ) - gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) - gstreamer? ( - dev-libs/glib:2[${MULTILIB_USEDEP}] - media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] - media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] - ) - opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) - pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] ) - pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) - scanner? ( media-gfx/sane-backends[${MULTILIB_USEDEP}] ) - smartcard? ( sys-apps/pcsc-lite[${MULTILIB_USEDEP}] ) - udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] ) - unwind? ( - llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] ) - !llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] ) - ) - usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] ) - wayland? ( - dev-libs/wayland[${MULTILIB_USEDEP}] - x11-libs/libxkbcommon[${MULTILIB_USEDEP}] - ) -" -RDEPEND=" - ${WINE_COMMON_DEPEND} - app-emulation/wine-desktop-common - dos? ( - || ( - games-emulation/dosbox - games-emulation/dosbox-staging - ) - ) - gecko? ( - app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] - wow64? ( app-emulation/wine-gecko[abi_x86_32] ) - ) - gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] ) - mono? ( app-emulation/wine-mono:${WINE_MONO} ) - perl? ( - dev-lang/perl - dev-perl/XML-LibXML - ) - samba? ( net-fs/samba[winbind] ) - selinux? ( sec-policy/selinux-wine ) - udisks? ( sys-fs/udisks:2 ) -" -DEPEND=" - ${WINE_COMMON_DEPEND} - sys-kernel/linux-headers - X? ( x11-base/xorg-proto ) -" -# gitapply.sh "can" work without git but that is hardly tested -# and known failing with some versions, so force real git -BDEPEND=" - ${PYTHON_DEPS} - || ( - sys-devel/binutils - llvm-core/lld - ) - dev-lang/perl - dev-vcs/git - sys-devel/bison - sys-devel/flex - virtual/pkgconfig - mingw? ( !crossdev-mingw? ( - >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] - wow64? ( dev-util/mingw64-toolchain[abi_x86_32] ) - ) ) - nls? ( sys-devel/gettext ) - wayland? ( dev-util/wayland-scanner ) -" -IDEPEND=">=app-eselect/eselect-wine-2" - -QA_CONFIG_IMPL_DECL_SKIP=( - __clear_cache # unused on amd64+x86 (bug #900334) - res_getservers # false positive -) -QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext - -PATCHES=( - "${FILESDIR}"/${PN}-7.17-noexecstack.patch - "${FILESDIR}"/${PN}-7.20-unwind.patch - "${FILESDIR}"/${PN}-8.13-rpath.patch -) - -pkg_pretend() { - [[ ${MERGE_TYPE} == binary ]] && return - - if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then - local mingw=-w64-mingw32 - for mingw in $(usev abi_x86_64 x86_64${mingw}) \ - $(use abi_x86_32 || use wow64 && echo i686${mingw}); do - if ! type -P ${mingw}-gcc >/dev/null; then - eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain" - eerror "yourself by installing sys-devel/crossdev then running:" - eerror - eerror " crossdev --target ${mingw}" - eerror - eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw" - die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" - fi - done - fi -} - -src_unpack() { - if [[ ${PV} == *9999 ]]; then - EGIT_CHECKOUT_DIR=${WORKDIR}/${P} - git-r3_src_unpack - - # hack: use subshell to preserve state (including what git-r3 unpack - # sets) for smart-live-rebuild as this is not the repo to look at - ( - EGIT_COMMIT=$(<"${EGIT_CHECKOUT_DIR}"/staging/upstream-commit) || die - EGIT_REPO_URI=${WINE_EGIT_REPO_URI} - EGIT_CHECKOUT_DIR=${S} - einfo "Fetching Wine commit matching the current patchset by default (${EGIT_COMMIT})" - git-r3_src_unpack - ) - else - default - fi -} - -src_prepare() { - local patchinstallargs=( - --all - --no-autoconf - ${MY_WINE_STAGING_CONF} - ) - - edo "${PYTHON}" ../${P}/staging/patchinstall.py "${patchinstallargs[@]}" - - # sanity check, bumping these has a history of oversights - local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \ - dlls/appwiz.cpl/addons.c || die) - if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then - local gmfatal= - [[ ${PV} == *9999 ]] && gmfatal=nonfatal - ${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)" - fi - - default - - if tc-is-clang; then - if use mingw; then - # -mabi=ms was ignored by /etc/portage/env/app-emulation/wine-staging -} - -src_configure() { - WINE_PREFIX=/usr/lib/${P} - WINE_DATADIR=/usr/share/${P} - - local conf=( - --prefix="${EPREFIX}"${WINE_PREFIX} - --datadir="${EPREFIX}"${WINE_DATADIR} - --includedir="${EPREFIX}"/usr/include/${P} - --libdir="${EPREFIX}"${WINE_PREFIX} - --mandir="${EPREFIX}"${WINE_DATADIR}/man - - $(usev wow64 --enable-archs=x86_64,i386) - - $(use_enable gecko mshtml) - $(use_enable mono mscoree) - --disable-tests - - $(use_with X x) - $(use_with alsa) - $(use_with capi) - $(use_with cups) - $(use_with ffmpeg) - $(use_with fontconfig) - $(use_with gphoto2 gphoto) - $(use_with gstreamer) - $(use_with kerberos gssapi) - $(use_with kerberos krb5) - $(use_with mingw) - $(use_with netapi) - $(use_with nls gettext) - $(use_with opencl) - $(use_with opengl) - $(use_with osmesa) - --without-oss # media-sound/oss is not packaged (OSSv4) - $(use_with pcap) - $(use_with pulseaudio pulse) - $(use_with scanner sane) - $(use_with sdl) - $(use_with smartcard pcsclite) - $(use_with ssl gnutls) - $(use_with truetype freetype) - $(use_with udev) - $(use_with udisks dbus) # dbus is only used for udisks - $(use_with unwind) - $(use_with usb) - $(use_with v4l v4l2) - $(use_with vulkan) - $(use_with wayland) - $(use_with xcomposite) - $(use_with xinerama) - $(usev !odbc ac_cv_lib_soname_odbc=) - ) - - filter-lto # build failure - filter-flags -Wl,--gc-sections # runtime issues (bug #931329) - use custom-cflags || strip-flags # can break in obscure ways at runtime - - # broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849) - append-cflags -std=gnu17 - - # wine uses linker tricks unlikely to work with non-bfd/lld (bug #867097) - # (do self test until https://github.com/gentoo/gentoo/pull/28355) - if [[ $(LC_ALL=C $(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) != @(LLD|GNU\ ld)* ]] - then - has_version -b sys-devel/binutils && - append-ldflags -fuse-ld=bfd || - append-ldflags -fuse-ld=lld - strip-unsupported-flags - fi - - if use mingw; then - use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} - - # CROSSCC was formerly recognized by wine, thus been using similar - # variables (subject to change, esp. if ever make a mingw.eclass). - local mingwcc_amd64=${CROSSCC:-${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}} - local mingwcc_x86=${CROSSCC:-${CROSSCC_x86:-i686-w64-mingw32-gcc}} - local -n mingwcc=mingwcc_$(usex abi_x86_64 amd64 x86) - - conf+=( - ac_cv_prog_x86_64_CC="${mingwcc_amd64}" - ac_cv_prog_i386_CC="${mingwcc_x86}" - - CROSSCFLAGS="${CROSSCFLAGS:-$( - filter-flags '-fstack-protector*' #870136 - 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,*' - - CC=${mingwcc} test-flags-CC ${CFLAGS:--O2} - )}" - - CROSSLDFLAGS="${CROSSLDFLAGS:-$( - filter-flags '-fuse-ld=*' - - CC=${mingwcc} test-flags-CCLD ${LDFLAGS} - )}" - ) - fi - - # order matters with multilib: configure+compile 64->32, install 32->64 - local -i bits - for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do - ( - einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..." - - mkdir ../build${bits} || die - cd ../build${bits} || die - - if (( bits == 64 )); then - conf+=( --enable-win64 ) - elif use amd64; then - conf+=( - $(usev abi_x86_64 --with-wine64=../build64) - TARGETFLAGS=-m32 # for widl - ) - # _setup is optional, but use over Wine's auto-detect (+#472038) - multilib_toolchain_setup x86 - fi - - ECONF_SOURCE=${S} econf "${conf[@]}" - ) - done -} - -src_compile() { - use abi_x86_64 && emake -C ../build64 # do first - use abi_x86_32 && emake -C ../build32 -} - -src_install() { - use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install - use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last - - # Ensure both wine64 and wine are available if USE=abi_x86_64 (wow64, - # -abi_x86_32, and/or EXTRA_ECONF could cause varying scenarios where - # one or the other could be missing and that is unexpected for users - # and some tools like winetricks) - if use abi_x86_64; then - if [[ -e ${ED}${WINE_PREFIX}/bin/wine64 && ! -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine64 ${WINE_PREFIX}/bin/wine - dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader - - # also install wine(1) man pages (incl. translations) - local man - for man in ../build64/loader/wine.*man; do - : "${man##*/wine}" - : "${_%.*}" - insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 - newins ${man} wine.1 - done - elif [[ ! -e ${ED}${WINE_PREFIX}/bin/wine64 && -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine ${WINE_PREFIX}/bin/wine64 - dosym wine-preloader ${WINE_PREFIX}/bin/wine64-preloader - fi - fi - - use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \ - "${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die - - # create variant wrappers for eselect-wine - local bin - for bin in "${ED}"${WINE_PREFIX}/bin/*; do - make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}" - done - - if use mingw; then - # don't let portage try to strip PE files with the wrong - # strip executable and instead handle it here (saves ~120MB) - dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows - - if use strip; then - ebegin "Stripping Windows (PE) binaries" - find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ - -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + - eend ${?} || die - fi - fi - - dodoc ANNOUNCE* AUTHORS README* documentation/README* -} - -pkg_postinst() { - if use !abi_x86_32 && use !wow64; then - ewarn "32bit support is disabled. While 64bit applications themselves will" - ewarn "work, be warned that it is not unusual that installers or other helpers" - ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," - ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." - elif use abi_x86_32 && { use opengl || use vulkan; }; then - # difficult to tell what is needed from here, but try to warn - if has_version 'x11-drivers/nvidia-drivers'; then - if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then - ewarn "x11-drivers/nvidia-drivers is installed but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - ewarn "Multi-card setups may need this on media-libs/mesa as well." - fi - elif has_version 'media-libs/mesa[-abi_x86_32]'; then - ewarn "media-libs/mesa seems to be in use but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - fi - fi - - optfeature "/dev/hidraw* access used for *some* controllers (e.g. DualShock4)" \ - games-util/game-device-udev-rules - - eselect wine update --if-unset || die -} - -pkg_postrm() { - eselect wine update --if-unset || die -} diff --git a/app-emulation/wine-staging/wine-staging-9.21.ebuild b/app-emulation/wine-staging/wine-staging-9.21.ebuild deleted file mode 100644 index bb1e1d52d321..000000000000 --- a/app-emulation/wine-staging/wine-staging-9.21.ebuild +++ /dev/null @@ -1,482 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MULTILIB_COMPAT=( abi_x86_{32,64} ) -PYTHON_COMPAT=( python3_{10..13} ) -inherit autotools edo flag-o-matic multilib multilib-build optfeature -inherit prefix python-any-r1 toolchain-funcs wrapper - -WINE_GECKO=2.47.4 -WINE_MONO=9.3.0 -WINE_P=wine-$(ver_cut 1-2) - -if [[ ${PV} == *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine-staging.git" - WINE_EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git" -else - (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 - SRC_URI=" - https://dl.winehq.org/wine/source/${WINE_SDIR}/${WINE_P}.tar.xz - https://github.com/wine-staging/wine-staging/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="-* ~amd64 ~x86" -fi - -DESCRIPTION="Free implementation of Windows(tm) on Unix, with Wine-Staging patchset" -HOMEPAGE=" - https://wiki.winehq.org/Wine-Staging - https://gitlab.winehq.org/wine/wine-staging/ -" - -S="${WORKDIR}/${WINE_P}" - -LICENSE="LGPL-2.1+ BSD BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff" -SLOT="${PV}" -IUSE=" - +X +abi_x86_32 +abi_x86_64 +alsa capi crossdev-mingw cups dos - llvm-libunwind custom-cflags ffmpeg +fontconfig +gecko gphoto2 - +gstreamer kerberos +mingw +mono netapi nls odbc opencl +opengl - osmesa pcap perl pulseaudio samba scanner +sdl selinux smartcard - +ssl +strip +truetype udev udisks +unwind usb v4l +vulkan wayland - wow64 +xcomposite xinerama -" -# bug #551124 for truetype -# TODO: wow64 can be done without mingw if using clang (needs bug #912237) -REQUIRED_USE=" - X? ( truetype ) - crossdev-mingw? ( mingw ) - wow64? ( abi_x86_64 !abi_x86_32 mingw ) -" - -# tests are non-trivial to run, can hang easily, don't play well with -# sandbox, and several need real opengl/vulkan or network access -RESTRICT="test" - -# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked -WINE_DLOPEN_DEPEND=" - X? ( - x11-libs/libXcursor[${MULTILIB_USEDEP}] - x11-libs/libXfixes[${MULTILIB_USEDEP}] - x11-libs/libXi[${MULTILIB_USEDEP}] - x11-libs/libXrandr[${MULTILIB_USEDEP}] - x11-libs/libXrender[${MULTILIB_USEDEP}] - x11-libs/libXxf86vm[${MULTILIB_USEDEP}] - opengl? ( - media-libs/libglvnd[X,${MULTILIB_USEDEP}] - osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) - ) - xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) - xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) - ) - cups? ( net-print/cups[${MULTILIB_USEDEP}] ) - fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) - kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) - netapi? ( net-fs/samba[${MULTILIB_USEDEP}] ) - odbc? ( dev-db/unixODBC[${MULTILIB_USEDEP}] ) - sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) - ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] ) - truetype? ( media-libs/freetype[${MULTILIB_USEDEP}] ) - udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) - v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) - vulkan? ( media-libs/vulkan-loader[X?,wayland?,${MULTILIB_USEDEP}] ) -" -WINE_COMMON_DEPEND=" - ${WINE_DLOPEN_DEPEND} - X? ( - x11-libs/libX11[${MULTILIB_USEDEP}] - x11-libs/libXext[${MULTILIB_USEDEP}] - ) - alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) - capi? ( net-libs/libcapi:=[${MULTILIB_USEDEP}] ) - ffmpeg? ( media-video/ffmpeg:=[${MULTILIB_USEDEP}] ) - gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) - gstreamer? ( - dev-libs/glib:2[${MULTILIB_USEDEP}] - media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] - media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] - ) - opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) - pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] ) - pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) - scanner? ( media-gfx/sane-backends[${MULTILIB_USEDEP}] ) - smartcard? ( sys-apps/pcsc-lite[${MULTILIB_USEDEP}] ) - udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] ) - unwind? ( - llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] ) - !llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] ) - ) - usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] ) - wayland? ( - dev-libs/wayland[${MULTILIB_USEDEP}] - x11-libs/libxkbcommon[${MULTILIB_USEDEP}] - ) -" -RDEPEND=" - ${WINE_COMMON_DEPEND} - app-emulation/wine-desktop-common - dos? ( - || ( - games-emulation/dosbox - games-emulation/dosbox-staging - ) - ) - gecko? ( - app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] - wow64? ( app-emulation/wine-gecko[abi_x86_32] ) - ) - gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] ) - mono? ( app-emulation/wine-mono:${WINE_MONO} ) - perl? ( - dev-lang/perl - dev-perl/XML-LibXML - ) - samba? ( net-fs/samba[winbind] ) - selinux? ( sec-policy/selinux-wine ) - udisks? ( sys-fs/udisks:2 ) -" -DEPEND=" - ${WINE_COMMON_DEPEND} - sys-kernel/linux-headers - X? ( x11-base/xorg-proto ) -" -# gitapply.sh "can" work without git but that is hardly tested -# and known failing with some versions, so force real git -BDEPEND=" - ${PYTHON_DEPS} - || ( - sys-devel/binutils - llvm-core/lld - ) - dev-lang/perl - dev-vcs/git - sys-devel/bison - sys-devel/flex - virtual/pkgconfig - mingw? ( !crossdev-mingw? ( - >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] - wow64? ( dev-util/mingw64-toolchain[abi_x86_32] ) - ) ) - nls? ( sys-devel/gettext ) - wayland? ( dev-util/wayland-scanner ) -" -IDEPEND=">=app-eselect/eselect-wine-2" - -QA_CONFIG_IMPL_DECL_SKIP=( - __clear_cache # unused on amd64+x86 (bug #900334) - res_getservers # false positive -) -QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext - -PATCHES=( - "${FILESDIR}"/${PN}-7.17-noexecstack.patch - "${FILESDIR}"/${PN}-7.20-unwind.patch - "${FILESDIR}"/${PN}-8.13-rpath.patch -) - -pkg_pretend() { - [[ ${MERGE_TYPE} == binary ]] && return - - if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then - local mingw=-w64-mingw32 - for mingw in $(usev abi_x86_64 x86_64${mingw}) \ - $(use abi_x86_32 || use wow64 && echo i686${mingw}); do - if ! type -P ${mingw}-gcc >/dev/null; then - eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain" - eerror "yourself by installing sys-devel/crossdev then running:" - eerror - eerror " crossdev --target ${mingw}" - eerror - eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw" - die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" - fi - done - fi -} - -src_unpack() { - if [[ ${PV} == *9999 ]]; then - EGIT_CHECKOUT_DIR=${WORKDIR}/${P} - git-r3_src_unpack - - # hack: use subshell to preserve state (including what git-r3 unpack - # sets) for smart-live-rebuild as this is not the repo to look at - ( - EGIT_COMMIT=$(<"${EGIT_CHECKOUT_DIR}"/staging/upstream-commit) || die - EGIT_REPO_URI=${WINE_EGIT_REPO_URI} - EGIT_CHECKOUT_DIR=${S} - einfo "Fetching Wine commit matching the current patchset by default (${EGIT_COMMIT})" - git-r3_src_unpack - ) - else - default - fi -} - -src_prepare() { - local patchinstallargs=( - --all - --no-autoconf - ${MY_WINE_STAGING_CONF} - ) - - edo "${PYTHON}" ../${P}/staging/patchinstall.py "${patchinstallargs[@]}" - - # sanity check, bumping these has a history of oversights - local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \ - dlls/appwiz.cpl/addons.c || die) - if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then - local gmfatal= - [[ ${PV} == *9999 ]] && gmfatal=nonfatal - ${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)" - fi - - default - - if tc-is-clang; then - if use mingw; then - # -mabi=ms was ignored by /etc/portage/env/app-emulation/wine-staging -} - -src_configure() { - WINE_PREFIX=/usr/lib/${P} - WINE_DATADIR=/usr/share/${P} - - local conf=( - --prefix="${EPREFIX}"${WINE_PREFIX} - --datadir="${EPREFIX}"${WINE_DATADIR} - --includedir="${EPREFIX}"/usr/include/${P} - --libdir="${EPREFIX}"${WINE_PREFIX} - --mandir="${EPREFIX}"${WINE_DATADIR}/man - - $(usev wow64 --enable-archs=x86_64,i386) - - $(use_enable gecko mshtml) - $(use_enable mono mscoree) - --disable-tests - - $(use_with X x) - $(use_with alsa) - $(use_with capi) - $(use_with cups) - $(use_with ffmpeg) - $(use_with fontconfig) - $(use_with gphoto2 gphoto) - $(use_with gstreamer) - $(use_with kerberos gssapi) - $(use_with kerberos krb5) - $(use_with mingw) - $(use_with netapi) - $(use_with nls gettext) - $(use_with opencl) - $(use_with opengl) - $(use_with osmesa) - --without-oss # media-sound/oss is not packaged (OSSv4) - $(use_with pcap) - $(use_with pulseaudio pulse) - $(use_with scanner sane) - $(use_with sdl) - $(use_with smartcard pcsclite) - $(use_with ssl gnutls) - $(use_with truetype freetype) - $(use_with udev) - $(use_with udisks dbus) # dbus is only used for udisks - $(use_with unwind) - $(use_with usb) - $(use_with v4l v4l2) - $(use_with vulkan) - $(use_with wayland) - $(use_with xcomposite) - $(use_with xinerama) - $(usev !odbc ac_cv_lib_soname_odbc=) - ) - - filter-lto # build failure - filter-flags -Wl,--gc-sections # runtime issues (bug #931329) - use custom-cflags || strip-flags # can break in obscure ways at runtime - - # broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849) - append-cflags -std=gnu17 - - # wine uses linker tricks unlikely to work with non-bfd/lld (bug #867097) - # (do self test until https://github.com/gentoo/gentoo/pull/28355) - if [[ $(LC_ALL=C $(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) != @(LLD|GNU\ ld)* ]] - then - has_version -b sys-devel/binutils && - append-ldflags -fuse-ld=bfd || - append-ldflags -fuse-ld=lld - strip-unsupported-flags - fi - - if use mingw; then - use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} - - # CROSSCC was formerly recognized by wine, thus been using similar - # variables (subject to change, esp. if ever make a mingw.eclass). - local mingwcc_amd64=${CROSSCC:-${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}} - local mingwcc_x86=${CROSSCC:-${CROSSCC_x86:-i686-w64-mingw32-gcc}} - local -n mingwcc=mingwcc_$(usex abi_x86_64 amd64 x86) - - conf+=( - ac_cv_prog_x86_64_CC="${mingwcc_amd64}" - ac_cv_prog_i386_CC="${mingwcc_x86}" - - CROSSCFLAGS="${CROSSCFLAGS:-$( - filter-flags '-fstack-protector*' #870136 - 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,*' - - CC=${mingwcc} test-flags-CC ${CFLAGS:--O2} - )}" - - CROSSLDFLAGS="${CROSSLDFLAGS:-$( - filter-flags '-fuse-ld=*' - - CC=${mingwcc} test-flags-CCLD ${LDFLAGS} - )}" - ) - fi - - # order matters with multilib: configure+compile 64->32, install 32->64 - local -i bits - for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do - ( - einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..." - - mkdir ../build${bits} || die - cd ../build${bits} || die - - if (( bits == 64 )); then - conf+=( --enable-win64 ) - elif use amd64; then - conf+=( - $(usev abi_x86_64 --with-wine64=../build64) - TARGETFLAGS=-m32 # for widl - ) - # _setup is optional, but use over Wine's auto-detect (+#472038) - multilib_toolchain_setup x86 - fi - - ECONF_SOURCE=${S} econf "${conf[@]}" - ) - done -} - -src_compile() { - use abi_x86_64 && emake -C ../build64 # do first - use abi_x86_32 && emake -C ../build32 -} - -src_install() { - use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install - use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last - - # Ensure both wine64 and wine are available if USE=abi_x86_64 (wow64, - # -abi_x86_32, and/or EXTRA_ECONF could cause varying scenarios where - # one or the other could be missing and that is unexpected for users - # and some tools like winetricks) - if use abi_x86_64; then - if [[ -e ${ED}${WINE_PREFIX}/bin/wine64 && ! -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine64 ${WINE_PREFIX}/bin/wine - dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader - - # also install wine(1) man pages (incl. translations) - local man - for man in ../build64/loader/wine.*man; do - : "${man##*/wine}" - : "${_%.*}" - insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 - newins ${man} wine.1 - done - elif [[ ! -e ${ED}${WINE_PREFIX}/bin/wine64 && -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine ${WINE_PREFIX}/bin/wine64 - dosym wine-preloader ${WINE_PREFIX}/bin/wine64-preloader - fi - fi - - use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \ - "${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die - - # create variant wrappers for eselect-wine - local bin - for bin in "${ED}"${WINE_PREFIX}/bin/*; do - make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}" - done - - if use mingw; then - # don't let portage try to strip PE files with the wrong - # strip executable and instead handle it here (saves ~120MB) - dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows - - if use strip; then - ebegin "Stripping Windows (PE) binaries" - find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ - -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + - eend ${?} || die - fi - fi - - dodoc ANNOUNCE* AUTHORS README* documentation/README* -} - -pkg_postinst() { - if use !abi_x86_32 && use !wow64; then - ewarn "32bit support is disabled. While 64bit applications themselves will" - ewarn "work, be warned that it is not unusual that installers or other helpers" - ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," - ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." - elif use abi_x86_32 && { use opengl || use vulkan; }; then - # difficult to tell what is needed from here, but try to warn - if has_version 'x11-drivers/nvidia-drivers'; then - if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then - ewarn "x11-drivers/nvidia-drivers is installed but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - ewarn "Multi-card setups may need this on media-libs/mesa as well." - fi - elif has_version 'media-libs/mesa[-abi_x86_32]'; then - ewarn "media-libs/mesa seems to be in use but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - fi - fi - - optfeature "/dev/hidraw* access used for *some* controllers (e.g. DualShock4)" \ - games-util/game-device-udev-rules - - eselect wine update --if-unset || die -} - -pkg_postrm() { - eselect wine update --if-unset || die -} diff --git a/app-emulation/wine-staging/wine-staging-9.22.ebuild b/app-emulation/wine-staging/wine-staging-9.22.ebuild deleted file mode 100644 index bb1e1d52d321..000000000000 --- a/app-emulation/wine-staging/wine-staging-9.22.ebuild +++ /dev/null @@ -1,482 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MULTILIB_COMPAT=( abi_x86_{32,64} ) -PYTHON_COMPAT=( python3_{10..13} ) -inherit autotools edo flag-o-matic multilib multilib-build optfeature -inherit prefix python-any-r1 toolchain-funcs wrapper - -WINE_GECKO=2.47.4 -WINE_MONO=9.3.0 -WINE_P=wine-$(ver_cut 1-2) - -if [[ ${PV} == *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine-staging.git" - WINE_EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git" -else - (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 - SRC_URI=" - https://dl.winehq.org/wine/source/${WINE_SDIR}/${WINE_P}.tar.xz - https://github.com/wine-staging/wine-staging/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="-* ~amd64 ~x86" -fi - -DESCRIPTION="Free implementation of Windows(tm) on Unix, with Wine-Staging patchset" -HOMEPAGE=" - https://wiki.winehq.org/Wine-Staging - https://gitlab.winehq.org/wine/wine-staging/ -" - -S="${WORKDIR}/${WINE_P}" - -LICENSE="LGPL-2.1+ BSD BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff" -SLOT="${PV}" -IUSE=" - +X +abi_x86_32 +abi_x86_64 +alsa capi crossdev-mingw cups dos - llvm-libunwind custom-cflags ffmpeg +fontconfig +gecko gphoto2 - +gstreamer kerberos +mingw +mono netapi nls odbc opencl +opengl - osmesa pcap perl pulseaudio samba scanner +sdl selinux smartcard - +ssl +strip +truetype udev udisks +unwind usb v4l +vulkan wayland - wow64 +xcomposite xinerama -" -# bug #551124 for truetype -# TODO: wow64 can be done without mingw if using clang (needs bug #912237) -REQUIRED_USE=" - X? ( truetype ) - crossdev-mingw? ( mingw ) - wow64? ( abi_x86_64 !abi_x86_32 mingw ) -" - -# tests are non-trivial to run, can hang easily, don't play well with -# sandbox, and several need real opengl/vulkan or network access -RESTRICT="test" - -# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked -WINE_DLOPEN_DEPEND=" - X? ( - x11-libs/libXcursor[${MULTILIB_USEDEP}] - x11-libs/libXfixes[${MULTILIB_USEDEP}] - x11-libs/libXi[${MULTILIB_USEDEP}] - x11-libs/libXrandr[${MULTILIB_USEDEP}] - x11-libs/libXrender[${MULTILIB_USEDEP}] - x11-libs/libXxf86vm[${MULTILIB_USEDEP}] - opengl? ( - media-libs/libglvnd[X,${MULTILIB_USEDEP}] - osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) - ) - xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) - xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) - ) - cups? ( net-print/cups[${MULTILIB_USEDEP}] ) - fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) - kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) - netapi? ( net-fs/samba[${MULTILIB_USEDEP}] ) - odbc? ( dev-db/unixODBC[${MULTILIB_USEDEP}] ) - sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) - ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] ) - truetype? ( media-libs/freetype[${MULTILIB_USEDEP}] ) - udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) - v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) - vulkan? ( media-libs/vulkan-loader[X?,wayland?,${MULTILIB_USEDEP}] ) -" -WINE_COMMON_DEPEND=" - ${WINE_DLOPEN_DEPEND} - X? ( - x11-libs/libX11[${MULTILIB_USEDEP}] - x11-libs/libXext[${MULTILIB_USEDEP}] - ) - alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) - capi? ( net-libs/libcapi:=[${MULTILIB_USEDEP}] ) - ffmpeg? ( media-video/ffmpeg:=[${MULTILIB_USEDEP}] ) - gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) - gstreamer? ( - dev-libs/glib:2[${MULTILIB_USEDEP}] - media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] - media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] - ) - opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) - pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] ) - pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) - scanner? ( media-gfx/sane-backends[${MULTILIB_USEDEP}] ) - smartcard? ( sys-apps/pcsc-lite[${MULTILIB_USEDEP}] ) - udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] ) - unwind? ( - llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] ) - !llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] ) - ) - usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] ) - wayland? ( - dev-libs/wayland[${MULTILIB_USEDEP}] - x11-libs/libxkbcommon[${MULTILIB_USEDEP}] - ) -" -RDEPEND=" - ${WINE_COMMON_DEPEND} - app-emulation/wine-desktop-common - dos? ( - || ( - games-emulation/dosbox - games-emulation/dosbox-staging - ) - ) - gecko? ( - app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] - wow64? ( app-emulation/wine-gecko[abi_x86_32] ) - ) - gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] ) - mono? ( app-emulation/wine-mono:${WINE_MONO} ) - perl? ( - dev-lang/perl - dev-perl/XML-LibXML - ) - samba? ( net-fs/samba[winbind] ) - selinux? ( sec-policy/selinux-wine ) - udisks? ( sys-fs/udisks:2 ) -" -DEPEND=" - ${WINE_COMMON_DEPEND} - sys-kernel/linux-headers - X? ( x11-base/xorg-proto ) -" -# gitapply.sh "can" work without git but that is hardly tested -# and known failing with some versions, so force real git -BDEPEND=" - ${PYTHON_DEPS} - || ( - sys-devel/binutils - llvm-core/lld - ) - dev-lang/perl - dev-vcs/git - sys-devel/bison - sys-devel/flex - virtual/pkgconfig - mingw? ( !crossdev-mingw? ( - >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] - wow64? ( dev-util/mingw64-toolchain[abi_x86_32] ) - ) ) - nls? ( sys-devel/gettext ) - wayland? ( dev-util/wayland-scanner ) -" -IDEPEND=">=app-eselect/eselect-wine-2" - -QA_CONFIG_IMPL_DECL_SKIP=( - __clear_cache # unused on amd64+x86 (bug #900334) - res_getservers # false positive -) -QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext - -PATCHES=( - "${FILESDIR}"/${PN}-7.17-noexecstack.patch - "${FILESDIR}"/${PN}-7.20-unwind.patch - "${FILESDIR}"/${PN}-8.13-rpath.patch -) - -pkg_pretend() { - [[ ${MERGE_TYPE} == binary ]] && return - - if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then - local mingw=-w64-mingw32 - for mingw in $(usev abi_x86_64 x86_64${mingw}) \ - $(use abi_x86_32 || use wow64 && echo i686${mingw}); do - if ! type -P ${mingw}-gcc >/dev/null; then - eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain" - eerror "yourself by installing sys-devel/crossdev then running:" - eerror - eerror " crossdev --target ${mingw}" - eerror - eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw" - die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" - fi - done - fi -} - -src_unpack() { - if [[ ${PV} == *9999 ]]; then - EGIT_CHECKOUT_DIR=${WORKDIR}/${P} - git-r3_src_unpack - - # hack: use subshell to preserve state (including what git-r3 unpack - # sets) for smart-live-rebuild as this is not the repo to look at - ( - EGIT_COMMIT=$(<"${EGIT_CHECKOUT_DIR}"/staging/upstream-commit) || die - EGIT_REPO_URI=${WINE_EGIT_REPO_URI} - EGIT_CHECKOUT_DIR=${S} - einfo "Fetching Wine commit matching the current patchset by default (${EGIT_COMMIT})" - git-r3_src_unpack - ) - else - default - fi -} - -src_prepare() { - local patchinstallargs=( - --all - --no-autoconf - ${MY_WINE_STAGING_CONF} - ) - - edo "${PYTHON}" ../${P}/staging/patchinstall.py "${patchinstallargs[@]}" - - # sanity check, bumping these has a history of oversights - local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \ - dlls/appwiz.cpl/addons.c || die) - if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then - local gmfatal= - [[ ${PV} == *9999 ]] && gmfatal=nonfatal - ${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)" - fi - - default - - if tc-is-clang; then - if use mingw; then - # -mabi=ms was ignored by /etc/portage/env/app-emulation/wine-staging -} - -src_configure() { - WINE_PREFIX=/usr/lib/${P} - WINE_DATADIR=/usr/share/${P} - - local conf=( - --prefix="${EPREFIX}"${WINE_PREFIX} - --datadir="${EPREFIX}"${WINE_DATADIR} - --includedir="${EPREFIX}"/usr/include/${P} - --libdir="${EPREFIX}"${WINE_PREFIX} - --mandir="${EPREFIX}"${WINE_DATADIR}/man - - $(usev wow64 --enable-archs=x86_64,i386) - - $(use_enable gecko mshtml) - $(use_enable mono mscoree) - --disable-tests - - $(use_with X x) - $(use_with alsa) - $(use_with capi) - $(use_with cups) - $(use_with ffmpeg) - $(use_with fontconfig) - $(use_with gphoto2 gphoto) - $(use_with gstreamer) - $(use_with kerberos gssapi) - $(use_with kerberos krb5) - $(use_with mingw) - $(use_with netapi) - $(use_with nls gettext) - $(use_with opencl) - $(use_with opengl) - $(use_with osmesa) - --without-oss # media-sound/oss is not packaged (OSSv4) - $(use_with pcap) - $(use_with pulseaudio pulse) - $(use_with scanner sane) - $(use_with sdl) - $(use_with smartcard pcsclite) - $(use_with ssl gnutls) - $(use_with truetype freetype) - $(use_with udev) - $(use_with udisks dbus) # dbus is only used for udisks - $(use_with unwind) - $(use_with usb) - $(use_with v4l v4l2) - $(use_with vulkan) - $(use_with wayland) - $(use_with xcomposite) - $(use_with xinerama) - $(usev !odbc ac_cv_lib_soname_odbc=) - ) - - filter-lto # build failure - filter-flags -Wl,--gc-sections # runtime issues (bug #931329) - use custom-cflags || strip-flags # can break in obscure ways at runtime - - # broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849) - append-cflags -std=gnu17 - - # wine uses linker tricks unlikely to work with non-bfd/lld (bug #867097) - # (do self test until https://github.com/gentoo/gentoo/pull/28355) - if [[ $(LC_ALL=C $(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) != @(LLD|GNU\ ld)* ]] - then - has_version -b sys-devel/binutils && - append-ldflags -fuse-ld=bfd || - append-ldflags -fuse-ld=lld - strip-unsupported-flags - fi - - if use mingw; then - use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} - - # CROSSCC was formerly recognized by wine, thus been using similar - # variables (subject to change, esp. if ever make a mingw.eclass). - local mingwcc_amd64=${CROSSCC:-${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}} - local mingwcc_x86=${CROSSCC:-${CROSSCC_x86:-i686-w64-mingw32-gcc}} - local -n mingwcc=mingwcc_$(usex abi_x86_64 amd64 x86) - - conf+=( - ac_cv_prog_x86_64_CC="${mingwcc_amd64}" - ac_cv_prog_i386_CC="${mingwcc_x86}" - - CROSSCFLAGS="${CROSSCFLAGS:-$( - filter-flags '-fstack-protector*' #870136 - 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,*' - - CC=${mingwcc} test-flags-CC ${CFLAGS:--O2} - )}" - - CROSSLDFLAGS="${CROSSLDFLAGS:-$( - filter-flags '-fuse-ld=*' - - CC=${mingwcc} test-flags-CCLD ${LDFLAGS} - )}" - ) - fi - - # order matters with multilib: configure+compile 64->32, install 32->64 - local -i bits - for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do - ( - einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..." - - mkdir ../build${bits} || die - cd ../build${bits} || die - - if (( bits == 64 )); then - conf+=( --enable-win64 ) - elif use amd64; then - conf+=( - $(usev abi_x86_64 --with-wine64=../build64) - TARGETFLAGS=-m32 # for widl - ) - # _setup is optional, but use over Wine's auto-detect (+#472038) - multilib_toolchain_setup x86 - fi - - ECONF_SOURCE=${S} econf "${conf[@]}" - ) - done -} - -src_compile() { - use abi_x86_64 && emake -C ../build64 # do first - use abi_x86_32 && emake -C ../build32 -} - -src_install() { - use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install - use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last - - # Ensure both wine64 and wine are available if USE=abi_x86_64 (wow64, - # -abi_x86_32, and/or EXTRA_ECONF could cause varying scenarios where - # one or the other could be missing and that is unexpected for users - # and some tools like winetricks) - if use abi_x86_64; then - if [[ -e ${ED}${WINE_PREFIX}/bin/wine64 && ! -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine64 ${WINE_PREFIX}/bin/wine - dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader - - # also install wine(1) man pages (incl. translations) - local man - for man in ../build64/loader/wine.*man; do - : "${man##*/wine}" - : "${_%.*}" - insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 - newins ${man} wine.1 - done - elif [[ ! -e ${ED}${WINE_PREFIX}/bin/wine64 && -e ${ED}${WINE_PREFIX}/bin/wine ]]; then - dosym wine ${WINE_PREFIX}/bin/wine64 - dosym wine-preloader ${WINE_PREFIX}/bin/wine64-preloader - fi - fi - - use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \ - "${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die - - # create variant wrappers for eselect-wine - local bin - for bin in "${ED}"${WINE_PREFIX}/bin/*; do - make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}" - done - - if use mingw; then - # don't let portage try to strip PE files with the wrong - # strip executable and instead handle it here (saves ~120MB) - dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows - - if use strip; then - ebegin "Stripping Windows (PE) binaries" - find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ - -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + - eend ${?} || die - fi - fi - - dodoc ANNOUNCE* AUTHORS README* documentation/README* -} - -pkg_postinst() { - if use !abi_x86_32 && use !wow64; then - ewarn "32bit support is disabled. While 64bit applications themselves will" - ewarn "work, be warned that it is not unusual that installers or other helpers" - ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," - ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." - elif use abi_x86_32 && { use opengl || use vulkan; }; then - # difficult to tell what is needed from here, but try to warn - if has_version 'x11-drivers/nvidia-drivers'; then - if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then - ewarn "x11-drivers/nvidia-drivers is installed but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - ewarn "Multi-card setups may need this on media-libs/mesa as well." - fi - elif has_version 'media-libs/mesa[-abi_x86_32]'; then - ewarn "media-libs/mesa seems to be in use but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - fi - fi - - optfeature "/dev/hidraw* access used for *some* controllers (e.g. DualShock4)" \ - games-util/game-device-udev-rules - - eselect wine update --if-unset || die -} - -pkg_postrm() { - eselect wine update --if-unset || die -} diff --git a/app-emulation/wine-vanilla/Manifest b/app-emulation/wine-vanilla/Manifest index 61b6684754c0..3a9b0b2d4939 100644 --- a/app-emulation/wine-vanilla/Manifest +++ b/app-emulation/wine-vanilla/Manifest @@ -1,16 +1,14 @@ +AUX wine-vanilla-10.0-binutils2.44.patch 4104 BLAKE2B 607821c8066161b611e01caa8d9754373e0726e1569ed3cd854bf61ec279d89a89e4e001e269b8c7da1b711e2ab2e6166709d6cc6f330c4d4ab96ed32f5fa8f9 SHA512 475b2ed549f39ae6b9381e644eae1e2a067bc9d7f2b48341458e3475e70c7eb5256a597dc87581b2d9253752f801fd9c4121d0ced8dfccc879b026abea48697d AUX wine-vanilla-7.0-noexecstack.patch 223 BLAKE2B dff1867e2977bd14fcfab9dfa2c2f1d3288f7edca75ddd7c9f02bfd06e9f63fac37bd59ea8aa891e13ab77bac35b369825d5490a9175ed9a7736e523b61d8944 SHA512 4ba3677042b693e513fc7a133c76a509f63d0ca20633d1e8d448bca9534c0d1a0fc58e77fa9b28fd8d936393605e97ee6e3bb5fac00872d6ac5808b7712586e3 -AUX wine-vanilla-7.0-unwind.patch 1694 BLAKE2B 017c7b761d692f8e8d23f52e51529880f95bddf5fee4309ab97bee951527bd427924dbb335e4bf57a27405e3d2440666f774c6859b81933d3007247e1cbf4898 SHA512 5d20960a8eda2d80097d6db81287c9d05ed4ea50df974c93391a427b743383a6806f24bc552c18a9336e7aea0ceb801972865ff470bde8ea7fd9423f57eb09ae AUX wine-vanilla-7.20-unwind.patch 1450 BLAKE2B 3f90cc131104ad72a11ae30c582b79b3e4d8c0278d51c0a193fb9e460cf088b315503bd08bd904e8d28f72f40ab3df90f83f2542b991888a2f504cc7d2adad4d SHA512 a6c4672a44c1220d5b1efabeca535a4a3510fe92aac73c38f65a09bfbd271af8b8b1bfe2c408ba5356806cb71252a6956b8130fcd06a475037b9e51d28c2a156 AUX wine-vanilla-8.13-rpath.patch 554 BLAKE2B 209d8c581a9178242ee622338c5252f79b798cf5574f72b3984d71b7933e011b488060502715aa75630fbc3d10fcb03743ac31ed31664cacfc22b725253a117b SHA512 bbb25e02d19bd7c1a1f2d7db331d93cfcd5ce9172206ad9e19a44c52e5ece865d474eac024c2a5791dfa006c6efe0f68cd783ffc925ac793bf447d56090bdd02 DIST wine-10.0.tar.xz 32011244 BLAKE2B 92178cf484cf33e9f3b8340429ee8e68c36e0d25eee4a892f059ab73f103cfcb9eb15e1883bc9fd8c8fe311d4ccbb56582d1f780da7b1406a7839a13addd29ae SHA512 effb41c5641993e2e52eaa825cc19b7d9846e084992c5a5b066ead2339b24384d320898a9cee347a9a87106bcb3b0f54c8cd2c8d4de3a887a658052ddd5168d6 DIST wine-10.1.tar.xz 32026152 BLAKE2B 573c4cc10c96c164eb02111b0a457be5500ab42c6d103180af5b2f88cdbcc134ea1fdb794687e6c736ebb5f9aa266e51424df26cd239fa26679d968ab5844cc3 SHA512 2dbc63e43e2cc1e0bf6294a926e8afc316e9f32efdce644229cb33bba98f6001c3f285b527767a83e5284558ef11f00515048aad031c6fc9122a4ce0692952af -DIST wine-7.0.2.tar.xz 27179980 BLAKE2B 721ab574092638b32d3a483b6ae3def0c9d706cc888662ca461ab8c7060b10077e83cede69663ea2a8b97729f3801209fbba5f8e8828ce20454700ffbbd76cb5 SHA512 330c71005a6a8054b5068ac4484e9015e9f8bf55d5a451aaf5f79b7f78a025732b454251c31473abf21504cce3b78e50cf7e3e0d0116bb755dc8396bd790289a DIST wine-8.0.2.tar.xz 29060452 BLAKE2B dcffaba6c90c4e02a7bc591a81e11aced06c006370c4c316c8a367b2f5814926063482959fabfe9d674ee1b5a560e59087e9b711e28360ced3aee2bbd6bb8fdb SHA512 e86dd31247d757d48ffb2d24f20edab3fc6ef9c3e395567a7b363951bb681335ba3adb8b84639011b24b6eb274582d56880298d6d95fb100acc072383d4e973f DIST wine-9.0.tar.xz 30007216 BLAKE2B cf53177201a2f7eeb35d0d8ce220f80808d979099a928ad60652d1dee92620c433cc105dffab4e9309f41766087ad1544ef49d2922538bb420d62f6dd64117a1 SHA512 838daf2c4581f83f8573b988036f517d57b84894b090a2a17433255d6d044dfa880e6724cdb83082a36c333df9d2083ab68ae53927622a620edd59f33462ada4 -EBUILD wine-vanilla-10.0.ebuild 14494 BLAKE2B 27dc34b9e28be42a76db150ee0c1eca3ac8bc29cfcc8892262549cb0a84729d3fc20128b6c5541190675b3997870d5a49d03bc05e68b1a7934fe66b1666576a2 SHA512 2f29b829f20d0a38c4e1db134b248ad5a182a140c41700f50cfcfcc76d87e905b3c1c55ece659d3f960b1e42928a582ffec527e60befb29cbb7690b3472db6e4 -EBUILD wine-vanilla-10.1.ebuild 14494 BLAKE2B 27dc34b9e28be42a76db150ee0c1eca3ac8bc29cfcc8892262549cb0a84729d3fc20128b6c5541190675b3997870d5a49d03bc05e68b1a7934fe66b1666576a2 SHA512 2f29b829f20d0a38c4e1db134b248ad5a182a140c41700f50cfcfcc76d87e905b3c1c55ece659d3f960b1e42928a582ffec527e60befb29cbb7690b3472db6e4 -EBUILD wine-vanilla-7.0.2.ebuild 12901 BLAKE2B c56de298278ea1f64164156da06828db82b418a5e1041b816635cf21a30b93127bdacd35caca340518a446d4a1cefaccb3095285882d1cc5b89c4de565ed5128 SHA512 5fe2e8c635e0625ae9abc418110498250db8fef4b45484c2c2b147f492f90043fcd251d14072bee2cbe4558c9d7672ea3a114174fff66ac0205c3c6256dd6906 -EBUILD wine-vanilla-8.0.2.ebuild 12989 BLAKE2B 38ec6d327ee3fe44fb3857615ceccd38ab8552d3c90ea7a5e3ca03eaa8b2c489ca02789c88f593bbb429304f62cd92a46f6af72b4cb63920cc0fb8a0338cdb57 SHA512 a39c6e6caa21abfe2a2a43119d4507769004fcc489c66af615d0761cbec02732a35e5bef7c7a2d8422e80311078167695d8d4fbf580aa7290dd06b25cdbe2a30 -EBUILD wine-vanilla-9.0.ebuild 14266 BLAKE2B 7eb89a6784065bdd547d3a4e768e57603a41dc8d5879006ef0e9cb630968000c00169b16bd77b7b2fc42296bb8bcbe3407020becf893b09b73c6c5ee798818cc SHA512 cf52d3b7a90152636c887c7576c17c540896dfd0195912829a49259f1506f84c35daf22f86ecbf9020951332ab32f846ca6cc251ef8ef13ca501566e0a9b0cbc +EBUILD wine-vanilla-10.0.ebuild 14538 BLAKE2B 1abaa69f1bacf4834d7b7def542b67bc7a78cc8d5ff3305fcd7a95a14b0e191c6d1d81640d5f0c1c15260ec4753803cfcecb42cc2d1fc7bf24801e42fa07c0aa SHA512 e4178f22b70dca1ac0b495e50d7b742cf1153a79093cf75670f14c8db454032d4ea6ebee63d23a2675d431107a3c072ff85f9e15d85a6f35db9279f2d1eec881 +EBUILD wine-vanilla-10.1.ebuild 14539 BLAKE2B 2a0bc0ff6f1937599d35f41db8b79f514e2a92e4887911f3cf55a975833dc65a8ac41f2be8dec34e5bd19a73cd65106bebd6103957dec7af355b366127e60111 SHA512 0a35a294a4c8c398baec956344278635d950c7db78a3b31e4e97e95877999b79d833fb1af386fbefbfaf8e7ce9310ab1167774fef87fc02d59689c63e8f52ff1 +EBUILD wine-vanilla-8.0.2.ebuild 13034 BLAKE2B 898ed541c3311528ba4a4055da4043833428b2732b06ab5f51f5d87872cc591179c1362dc37b4eab9d6fdd3f1678c7fb1750469cd45c84afb8422de57cfab4a1 SHA512 099c2443f3e6a28bd0cd49c6a81f720f9eaa51c6da0759ee2ba9a4aa204306a319493e581efccef2ca437cc16df80cd7a90427c93e3981d631c82f5268b6ec62 +EBUILD wine-vanilla-9.0.ebuild 14311 BLAKE2B d8f6afb2bf29b3d8e4ecd51265cd3427c1e1711d97d2c77f16f70ba808ddbaca910d8b6993d66b684dc264f05e409fb6c0b62b59225047180ba79aa09cbcc2bd SHA512 b01db0b4849d60181035270e80a9043f659ebf19543d9451a4c5ecdaa73f40bf9eaba514d3c0d59c90429d8da64aad662e1f9dd16d96ce9963dc613f6b675b18 EBUILD wine-vanilla-9999.ebuild 14494 BLAKE2B 4d06d529dc848c809041b80fa5b2abdb81e2cbc2b268e9c39aec3b8f0587b4059c872368c6c9c75f76d69a965fc6c874b26396af415ecfc975ff527c1f031870 SHA512 cccaf07d1df55481fdaa0ca1185b01b606f2eccc401e126ed84f25bdcb080b7c8528e4d77b0b3365e612a62a7f772e29dcbd6ebd586a0335e13706473608d043 -MISC metadata.xml 2726 BLAKE2B 7dc7490fabcda06a27061726225890ee203fe7d22209697c3997f0ccdb4699bfaa09f983c22c4919ce75d2eab6ebdb1add9d9af04f24aee63bae81116fc04094 SHA512 5cdbb062462ae791ff9727d184935af3af147c0bd1e49846731941513301b720313b3356f56a8295780ab822e3117146c9a669d2d96efba6f072d84adba770e6 +MISC metadata.xml 2694 BLAKE2B 01c000d837b123829986a3f60d8d70b7f3a294ed5b51a024f65c132daa7536237632c76113c866c250178bd44f833c2de6d3e4c77904dfa5ff7e8fb9a7dd332e SHA512 749d959889c8669c07e3f85c79780a08038b2547f4a9b343cb4f38bd79e62a36909723d405ce2f9c8c509720d7817bd2da21fd832b15ff63dd0bca04745319b6 diff --git a/app-emulation/wine-vanilla/files/wine-vanilla-10.0-binutils2.44.patch b/app-emulation/wine-vanilla/files/wine-vanilla-10.0-binutils2.44.patch new file mode 100644 index 000000000000..d7e30393569e --- /dev/null +++ b/app-emulation/wine-vanilla/files/wine-vanilla-10.0-binutils2.44.patch @@ -0,0 +1,105 @@ +Note that this is only an issue when using mingw (PE) binutils-2.44, +host (ELF) binutils-2.44 has no impact on this and, before this patch, +using 2.44 could only happen with off-by-default USE=crossdev-mingw. + +https://bugs.winehq.org/show_bug.cgi?id=57819 +https://sourceware.org/PR32675 +https://gitlab.winehq.org/wine/wine/-/merge_requests/7328 +--- a/dlls/ntdll/loader.c ++++ b/dlls/ntdll/loader.c +@@ -3750,5 +3750,5 @@ + NTSTATUS nts; + FARPROC fp; +- DWORD id; ++ INT_PTR id; + + TRACE( "(%p, %p, %p, %p, %p, 0x%08lx)\n", base, desc, dllhook, syshook, addr, flags ); +--- a/tools/winebuild/import.c ++++ b/tools/winebuild/import.c +@@ -1332,4 +1332,14 @@ + } + ++static void output_import_section( int index, int is_delay ) ++{ ++ if (!is_delay) ++ output( "\n\t.section .idata$%d\n", index ); ++ else if (index == 5) ++ output( "\n\t.section .data$didat%d\n", index ); ++ else ++ output( "\n\t.section .rdata$didat%d\n", index ); ++} ++ + /* create a Windows-style import library */ + static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struct strarray files ) +@@ -1455,18 +1465,18 @@ + output( "\t.long 0\n" ); /* TimeDateStamp */ + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */ + output( ".L__wine_import_addrs:\n" ); + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */ + output( ".L__wine_import_names:\n" ); + + /* required to avoid internal linker errors with some binutils versions */ +- output( "\n\t.section .idata$2\n" ); ++ output_import_section( 2, is_delay ); + } + else + { +- output( "\n\t.section .idata$2\n" ); ++ output_import_section( 2, is_delay ); + output( "%s\n", asm_globl( import_desc ) ); + output_rva( ".L__wine_import_names" ); /* OriginalFirstThunk */ +@@ -1476,8 +1486,8 @@ + output_rva( ".L__wine_import_addrs" ); /* FirstThunk */ + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( ".L__wine_import_names:\n" ); /* OriginalFirstThunk head */ + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( ".L__wine_import_addrs:\n" ); /* FirstThunk head */ + } +@@ -1490,9 +1500,9 @@ + new_output_as_file(); + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */ +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */ +- output( "\n\t.section .idata$7\n" ); ++ output_import_section( 7, is_delay ); + output( "%s\n", asm_globl( import_name ) ); + output( "\t%s \"%s\"\n", get_asm_string_keyword(), spec->file_name ); +@@ -1585,8 +1595,8 @@ + } + +- output( "\n\t.section .idata$4\n" ); ++ output_import_section( 4, is_delay ); + output_thunk_rva( by_name ? -1 : odp->ordinal, ".L__wine_import_name" ); + +- output( "\n\t.section .idata$5\n" ); ++ output_import_section( 5, is_delay ); + output( "%s\n", asm_globl( imp_name ) ); + if (is_delay) +@@ -1597,5 +1607,5 @@ + if (by_name) + { +- output( "\n\t.section .idata$6\n" ); ++ output_import_section( 6, is_delay ); + output( ".L__wine_import_name:\n" ); + output( "\t.short %d\n", odp->hint ); +@@ -1604,5 +1614,5 @@ + + /* reference head object to always pull its sections */ +- output( "\n\t.section .idata$7\n" ); ++ output_import_section( 7, is_delay ); + output_rva( "%s", asm_name( import_desc ) ); + diff --git a/app-emulation/wine-vanilla/files/wine-vanilla-7.0-unwind.patch b/app-emulation/wine-vanilla/files/wine-vanilla-7.0-unwind.patch deleted file mode 100644 index 74f22362ea9b..000000000000 --- a/app-emulation/wine-vanilla/files/wine-vanilla-7.0-unwind.patch +++ /dev/null @@ -1,40 +0,0 @@ -Fix build with llvm-libunwind, and also fix for non-llvm libunwind -when using clang+bfd given clang doesn't have _Unwind_Find_FDE in -its rtlib and expects it from llvm-libunwind. - -The _CONFIG_H_ check is for Rip - 1), &bases ); - - if (fde) - return dwarf_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, fde, - &bases, &dispatch->LanguageHandler, &dispatch->HandlerData ); -+#endif - #ifdef HAVE_LIBUNWIND - return libunwind_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, - &dispatch->LanguageHandler, &dispatch->HandlerData ); diff --git a/app-emulation/wine-vanilla/metadata.xml b/app-emulation/wine-vanilla/metadata.xml index 99ab7d2e9aab..dd7a4eda1c35 100644 --- a/app-emulation/wine-vanilla/metadata.xml +++ b/app-emulation/wine-vanilla/metadata.xml @@ -16,7 +16,8 @@ This variant of the Wine packaging does not include external patchsets Enable ISDN support using net-libs/libcapi Use sys-devel/crossdev for the toolchain rather than - dev-util/mingw64-toolchain (requires manual setting up) + dev-util/mingw64-toolchain (requires manual setting up + and is mostly unsupported, try disabling if have issues) Pull in games-emulation/dosbox to run DOS applications Enable mshtml support using app-emulation/wine-gecko @@ -28,7 +29,6 @@ This variant of the Wine packaging does not include external patchsets Install helpers that require perl (winedump/winemaker) Pull in net-fs/samba with winbind for NTLM auth support Enable gamepad support using media-libs/libsdl2 - Enable DirectX 12 support using app-emulation/vkd3d Enable running 32bit applications without 32bit ELF multilib by mapping to 64bit calls (experimental, diff --git a/app-emulation/wine-vanilla/wine-vanilla-10.0.ebuild b/app-emulation/wine-vanilla/wine-vanilla-10.0.ebuild index 7ad0553e1237..d912312e42aa 100644 --- a/app-emulation/wine-vanilla/wine-vanilla-10.0.ebuild +++ b/app-emulation/wine-vanilla/wine-vanilla-10.0.ebuild @@ -17,7 +17,7 @@ else (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 SRC_URI="https://dl.winehq.org/wine/source/${WINE_SDIR}/wine-${PV}.tar.xz" S="${WORKDIR}/wine-${PV}" - KEYWORDS="-* ~amd64 ~x86" + KEYWORDS="-* ~amd64 x86" fi DESCRIPTION="Free implementation of Windows(tm) on Unix, without external patchsets" @@ -163,6 +163,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.0-noexecstack.patch "${FILESDIR}"/${PN}-7.20-unwind.patch "${FILESDIR}"/${PN}-8.13-rpath.patch + "${FILESDIR}"/${PN}-10.0-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-vanilla/wine-vanilla-10.1.ebuild b/app-emulation/wine-vanilla/wine-vanilla-10.1.ebuild index 7ad0553e1237..0a51b2565e22 100644 --- a/app-emulation/wine-vanilla/wine-vanilla-10.1.ebuild +++ b/app-emulation/wine-vanilla/wine-vanilla-10.1.ebuild @@ -163,6 +163,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.0-noexecstack.patch "${FILESDIR}"/${PN}-7.20-unwind.patch "${FILESDIR}"/${PN}-8.13-rpath.patch + "${FILESDIR}"/${PN}-10.0-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-vanilla/wine-vanilla-7.0.2.ebuild b/app-emulation/wine-vanilla/wine-vanilla-7.0.2.ebuild deleted file mode 100644 index 9cc201c4e78e..000000000000 --- a/app-emulation/wine-vanilla/wine-vanilla-7.0.2.ebuild +++ /dev/null @@ -1,394 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MULTILIB_COMPAT=( abi_x86_{32,64} ) -inherit autotools flag-o-matic multilib multilib-build -inherit prefix toolchain-funcs wrapper - -WINE_GECKO=2.47.2 -WINE_MONO=7.0.0 - -if [[ ${PV} == *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git" -else - (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 - SRC_URI="https://dl.winehq.org/wine/source/${WINE_SDIR}/wine-${PV}.tar.xz" - S="${WORKDIR}/wine-${PV}" - KEYWORDS="-* amd64 x86" -fi - -DESCRIPTION="Free implementation of Windows(tm) on Unix, without external patchsets" -HOMEPAGE=" - https://www.winehq.org/ - https://gitlab.winehq.org/wine/wine/ -" - -LICENSE="LGPL-2.1+ BSD-2 IJG MIT ZLIB gsm libpng2 libtiff" -SLOT="${PV}" -IUSE=" - +X +abi_x86_32 +abi_x86_64 +alsa capi crossdev-mingw cups dos - llvm-libunwind debug custom-cflags +fontconfig +gecko gphoto2 - +gstreamer kerberos ldap +mingw +mono netapi nls odbc openal - opencl +opengl osmesa pcap perl pulseaudio samba scanner +sdl - selinux +ssl +truetype udev udisks +unwind usb v4l +vkd3d +vulkan - +xcomposite xinerama -" -# bug #551124 for truetype -REQUIRED_USE=" - X? ( truetype ) - crossdev-mingw? ( mingw ) -" - -# tests are non-trivial to run, can hang easily, don't play well with -# sandbox, and several need real opengl/vulkan or network access -RESTRICT="test" - -# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked -WINE_DLOPEN_DEPEND=" - X? ( - x11-libs/libXcursor[${MULTILIB_USEDEP}] - x11-libs/libXfixes[${MULTILIB_USEDEP}] - x11-libs/libXi[${MULTILIB_USEDEP}] - x11-libs/libXrandr[${MULTILIB_USEDEP}] - x11-libs/libXrender[${MULTILIB_USEDEP}] - x11-libs/libXxf86vm[${MULTILIB_USEDEP}] - opengl? ( - media-libs/libglvnd[X,${MULTILIB_USEDEP}] - osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) - ) - xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) - xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) - ) - cups? ( net-print/cups[${MULTILIB_USEDEP}] ) - fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) - kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) - netapi? ( net-fs/samba[${MULTILIB_USEDEP}] ) - odbc? ( dev-db/unixODBC[${MULTILIB_USEDEP}] ) - sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) - ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] ) - truetype? ( media-libs/freetype[${MULTILIB_USEDEP}] ) - udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) - v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) - vulkan? ( media-libs/vulkan-loader[X?,${MULTILIB_USEDEP}] ) -" -WINE_COMMON_DEPEND=" - ${WINE_DLOPEN_DEPEND} - X? ( - x11-libs/libX11[${MULTILIB_USEDEP}] - x11-libs/libXext[${MULTILIB_USEDEP}] - ) - alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) - capi? ( net-libs/libcapi:=[${MULTILIB_USEDEP}] ) - gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] ) - gstreamer? ( - dev-libs/glib:2[${MULTILIB_USEDEP}] - media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}] - media-libs/gstreamer:1.0[${MULTILIB_USEDEP}] - ) - ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] ) - openal? ( media-libs/openal[${MULTILIB_USEDEP}] ) - opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) - pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] ) - pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) - scanner? ( media-gfx/sane-backends[${MULTILIB_USEDEP}] ) - udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] ) - unwind? ( - llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] ) - !llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] ) - ) - usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] ) - vkd3d? ( >=app-emulation/vkd3d-1.2[${MULTILIB_USEDEP}] ) -" -RDEPEND=" - ${WINE_COMMON_DEPEND} - app-emulation/wine-desktop-common - dos? ( - || ( - games-emulation/dosbox - games-emulation/dosbox-staging - ) - ) - gecko? ( app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] ) - gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] ) - mono? ( app-emulation/wine-mono:${WINE_MONO} ) - perl? ( - dev-lang/perl - dev-perl/XML-LibXML - ) - samba? ( net-fs/samba[winbind] ) - selinux? ( sec-policy/selinux-wine ) - udisks? ( sys-fs/udisks:2 ) -" -DEPEND=" - ${WINE_COMMON_DEPEND} - sys-kernel/linux-headers - X? ( x11-base/xorg-proto ) -" -BDEPEND=" - dev-lang/perl - sys-devel/binutils - sys-devel/bison - sys-devel/flex - virtual/pkgconfig - mingw? ( !crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] ) ) - nls? ( sys-devel/gettext ) -" -IDEPEND=">=app-eselect/eselect-wine-2" - -QA_CONFIG_IMPL_DECL_SKIP=( - __clear_cache # unused on amd64+x86 (bug #900338) - res_getservers # false positive -) -QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext - -PATCHES=( - "${FILESDIR}"/${PN}-7.0-noexecstack.patch - "${FILESDIR}"/${PN}-7.0-unwind.patch -) - -pkg_pretend() { - [[ ${MERGE_TYPE} == binary ]] && return - - if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then - local mingw=-w64-mingw32 - for mingw in $(usev abi_x86_64 x86_64${mingw}) $(usev abi_x86_32 i686${mingw}); do - if ! type -P ${mingw}-gcc >/dev/null; then - eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain" - eerror "yourself by installing sys-devel/crossdev then running:" - eerror - eerror " crossdev --target ${mingw}" - eerror - eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw" - die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" - fi - done - fi -} - -src_prepare() { - # sanity check, bumping these has a history of oversights - local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \ - dlls/appwiz.cpl/addons.c || die) - if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then - local gmfatal= - [[ ${PV} == *9999 ]] && gmfatal=nonfatal - ${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)" - fi - - default - - if tc-is-clang; then - if use mingw; then - # -mabi=ms was ignored by /etc/portage/env/app-emulation/wine-vanilla -} - -src_configure() { - WINE_PREFIX=/usr/lib/${P} - WINE_DATADIR=/usr/share/${P} - - local conf=( - --prefix="${EPREFIX}"${WINE_PREFIX} - --datadir="${EPREFIX}"${WINE_DATADIR} - --includedir="${EPREFIX}"/usr/include/${P} - --libdir="${EPREFIX}"${WINE_PREFIX} - --mandir="${EPREFIX}"${WINE_DATADIR}/man - $(use_enable gecko mshtml) - $(use_enable mono mscoree) - --disable-tests - $(use_with X x) - $(use_with alsa) - $(use_with capi) - $(use_with cups) - $(use_with fontconfig) - $(use_with gphoto2 gphoto) - $(use_with gstreamer) - $(use_with kerberos gssapi) - $(use_with kerberos krb5) - $(use_with ldap) - $(use_with mingw) - $(use_with netapi) - $(use_with nls gettext) - $(use_with openal) - $(use_with opencl) - $(use_with opengl) - $(use_with osmesa) - --without-oss # media-sound/oss is not packaged (OSSv4) - $(use_with pcap) - $(use_with pulseaudio pulse) - $(use_with scanner sane) - $(use_with sdl) - $(use_with ssl gnutls) - $(use_with truetype freetype) - $(use_with udev) - $(use_with udisks dbus) # dbus is only used for udisks - $(use_with unwind) - $(use_with usb) - $(use_with v4l v4l2) - $(use_with vkd3d) - $(use_with vulkan) - $(use_with xcomposite) - $(use_with xinerama) - $(usev !odbc ac_cv_lib_soname_odbc=) - ) - - tc-ld-force-bfd # builds with non-bfd but broken at runtime (bug #867097) - filter-lto # build failure - filter-flags -Wl,--gc-sections # runtime issues (bug #931329) - use custom-cflags || strip-flags # can break in obscure ways at runtime - use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} - - # broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849) - append-cflags -std=gnu17 - - # temporary workaround for tc-ld-force-bfd not yet enforcing with mold - # https://github.com/gentoo/gentoo/pull/28355 - [[ $($(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) == mold* ]] && - append-ldflags -fuse-ld=bfd - - # >=wine-vanilla-9 has proper fixes and builds with gcc-14, but - # would rather not have to worry about fixing old branches - append-cflags $(test-flags-CC -Wno-error=incompatible-pointer-types) - - # build using upstream's way (--with-wine64) - # order matters: configure+compile 64->32, install 32->64 - local -i bits - for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do - ( - einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..." - - mkdir ../build${bits} || die - cd ../build${bits} || die - - # CROSSCC_amd64/x86 are unused by Wine, but recognized here for users - if (( bits == 64 )); then - : "${CROSSCC:=${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}}" - conf+=( --enable-win64 ) - elif use amd64; then - conf+=( - $(usev abi_x86_64 --with-wine64=../build64) - TARGETFLAGS=-m32 # for widl - ) - # _setup is optional, but use over Wine's auto-detect (+#472038) - multilib_toolchain_setup x86 - fi - : "${CROSSCC:=${CROSSCC_x86:-i686-w64-mingw32-gcc}}" - - # use *FLAGS for mingw, but strip unsupported (e.g. --hash-style=gnu) - if use mingw; then - : "${CROSSCFLAGS:=$( - filter-flags '-fstack-protector*' #870136 - 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,*' - - # -mavx with mingw-gcc has a history of obscure issues and - # disabling is seen as safer, e.g. `WINEARCH=win32 winecfg` - # crashes with -march=skylake >=wine-8.10, similar issues with - # znver4: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110273 - append-cflags -mno-avx #912268 - - CC=${CROSSCC} test-flags-CC ${CFLAGS:--O2})}" - : "${CROSSLDFLAGS:=$( - filter-flags '-fuse-ld=*' - CC=${CROSSCC} test-flags-CCLD ${LDFLAGS})}" - export CROSS{CC,{C,LD}FLAGS} - fi - - ECONF_SOURCE=${S} econf "${conf[@]}" - ) - done -} - -src_compile() { - use abi_x86_64 && emake -C ../build64 # do first - use abi_x86_32 && emake -C ../build32 -} - -src_install() { - use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install - use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last - - # symlink for plain 'wine' and install its man pages if 64bit-only #404331 - if use abi_x86_64 && use !abi_x86_32; then - dosym wine64 ${WINE_PREFIX}/bin/wine - dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader - local man - for man in ../build64/loader/wine.*man; do - : "${man##*/wine}" - : "${_%.*}" - insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 - newins ${man} wine.1 - done - fi - - use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \ - "${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die - - # create variant wrappers for eselect-wine - local bin - for bin in "${ED}"${WINE_PREFIX}/bin/*; do - make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}" - done - - # don't let portage try to strip PE files with the wrong - # strip executable and instead handle it here (saves ~120MB) - if use mingw; then - dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows - use debug || - find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ - -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + || die - fi - - dodoc ANNOUNCE AUTHORS README* documentation/README* -} - -pkg_postinst() { - if use abi_x86_32 && { use opengl || use vulkan; }; then - # difficult to tell what is needed from here, but try to warn - if has_version 'x11-drivers/nvidia-drivers'; then - if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then - ewarn "x11-drivers/nvidia-drivers is installed but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - ewarn "Multi-card setups may need this on media-libs/mesa as well." - fi - elif has_version 'media-libs/mesa[-abi_x86_32]'; then - ewarn "media-libs/mesa seems to be in use but is built without" - ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit" - ewarn "applications under ${PN} will likely not be usable." - fi - fi - - eselect wine update --if-unset || die -} - -pkg_postrm() { - eselect wine update --if-unset || die -} diff --git a/app-emulation/wine-vanilla/wine-vanilla-8.0.2.ebuild b/app-emulation/wine-vanilla/wine-vanilla-8.0.2.ebuild index 95f7ef5d7382..1a8afb08db8d 100644 --- a/app-emulation/wine-vanilla/wine-vanilla-8.0.2.ebuild +++ b/app-emulation/wine-vanilla/wine-vanilla-8.0.2.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -144,6 +144,7 @@ QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext PATCHES=( "${FILESDIR}"/${PN}-7.0-noexecstack.patch "${FILESDIR}"/${PN}-7.20-unwind.patch + "${FILESDIR}"/${PN}-10.0-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/wine-vanilla/wine-vanilla-9.0.ebuild b/app-emulation/wine-vanilla/wine-vanilla-9.0.ebuild index 0ee385cb279a..300262a71242 100644 --- a/app-emulation/wine-vanilla/wine-vanilla-9.0.ebuild +++ b/app-emulation/wine-vanilla/wine-vanilla-9.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 2022-2024 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -161,6 +161,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.0-noexecstack.patch "${FILESDIR}"/${PN}-7.20-unwind.patch "${FILESDIR}"/${PN}-8.13-rpath.patch + "${FILESDIR}"/${PN}-10.0-binutils2.44.patch ) pkg_pretend() { diff --git a/app-emulation/xen-tools/Manifest b/app-emulation/xen-tools/Manifest index 5885609caa72..75d0309f7afb 100644 --- a/app-emulation/xen-tools/Manifest +++ b/app-emulation/xen-tools/Manifest @@ -1,6 +1,8 @@ AUX README.gentoo 572 BLAKE2B 1284e49ac0bde0e1c1ad32b7dc200848c0837378224daed628036b5835998c9649574e2b91b4891a610188f01900922d3b2bb23fd6381682c3486bc83be9a9ef SHA512 d7312c11154b3446a66af5e11a9d8e1a30c29e42867b51a073f4460078c9a1b7acb94cea6d38bcd7fdafbb4384856cd11093f41eee1941ca43303a5e21765b03 +AUX edk2-202202-binutils-2.41-textrels.patch 2600 BLAKE2B e3ddfcf36190762cf2589faa777f19f04bc7d3363a226885fa96a17cfbd29f9dd6d6b6501f85080c789b09c34a9174154e2b9dca7f1d1cd274841cf20e8835d2 SHA512 17c01bfc9eb2d2f356e16c08ef5c3def635fd502a9e50692bd5aa3e3a11f999997d0783c8a3b828ede96b34a1e23d4a6d9398607f4a9d0ddc597de3fa2e9a8cf AUX stubs-32.h 537 BLAKE2B 456f57c4a4ba574c737f1b84b62a085d0290ebc8981a5f96fdebc16b6c86c801c5ca8dde135e803f46c5ec875fdd74770f6ed754880bc7af930b8ce1ce972fb7 SHA512 55308dbedaa91909a2213940f7a7b574cabe6b5a3104761a2a6f28d6aed00164544488c00cbf9d66a9a370a14c6b6d3a00434efd3ff0228cc8e4d81af19c0e68 AUX xen-consoles.logrotate 63 BLAKE2B 4ae650876035d2815dbcacc6ed618c58cc61d9cfd9cde1b6c2f792cbf51898c577ef979443ad827fc82ced4d21ae24836883160b20d697965ef5377d50c2973c SHA512 ab2105c75cfe01768aecd5bcbb56269d63666e8a44e42b6a83aee87df6c84ee2f9ab249171c21b2e09f8fec2cae8318f6e87d160989398a3e7dd68db8d52c426 +AUX xen-tools-4.19.1-gnu17.patch 314 BLAKE2B 250f194fba156545b04fa251c10083df70b2f39133ee6b9d8827ffd3f90d54015375fdd5222d6e6b66b34f4b7ae8bd68ab27b50d314b9eb33547cb408349c7d1 SHA512 208af691fdcfaa06a300163e80866b728395dec71908a32e4d1effba396916a6ea7edefd38be7b9f970ee18bd368de3ee6825820796953af5262010f5be60a69 AUX xen-watchdog.initd 181 BLAKE2B b8529db36016b6f71520c1e4119a2ea5c4d3f52f2c77ccb5603efb67bcdd88b8273a359f6ae0df61763ea31a50bd8a0be775df5aabbd17c90e7928c8ed5b7c0e SHA512 5f6da91c0067b93f1b9f1a2f181caf34034896944ab26f5820e860336e3b3159a65e8a7f39ea273927d64d58a2fe4d918d2c3234f2b03ab0770e0c15d6dfe84b AUX xencommons.confd 109 BLAKE2B 6a2023a95cd1e411abe57c321e1c5f13096b51299817ce547e8ff042cbdbf859a5c1f50135e946fe650e0ec9221db3389ff50bc23f6d88d0c0fd1805b64786be SHA512 f0bbc9647cecc6cf806e3059960fbe39b23304d9ca0955fb261e1d320b9b9ce59e5b28cc4b5a9922295b31221f0cd8f0cccb405520e097a7b12dc6ddb3294c17 AUX xencommons.initd 1451 BLAKE2B ef0cfa4fc7c4071b7a5822f4ad8983b9f7c386505e8b6967139c8921b002ff03a0a2be235060160d00d3890cffd15300b588c2b06a67a839df110c3737bbaee5 SHA512 1d25ae65ff073a5fc00aed2011af9e38f53d179dfadd06f791a4599c070a5ddbbf75d80b37e219b6de5d09e3466510c241311cbb018ef22cd3c97ce3b7c15b3c @@ -23,6 +25,6 @@ DIST xen-4.18.3.tar.gz 51911584 BLAKE2B 01bc915ea88c6a80608bb4f9c37ec75cd4abcc78 DIST xen-4.19.1.tar.gz 51991715 BLAKE2B 1e16c15c98b0e02ee55129cde3f41b314a4eaaff9956f5fa6cea7d9391c51e103b7d62f647e628634ed63bc3ac41bb93a65ec4e26aa39fb2f174f9aef161cd90 SHA512 6971d07d4eafd40186f35cf6de235badbdf0e1640974693b8fbd415876c46634094178a6157e6dfdc16af885c70ff3b7a72be35a88dcc63daf36e6eb08f9b17b DIST xen-gentoo-patches-4.17.0-gentoo-patchset-2.tar.bz2 4001 BLAKE2B 7afce426759952e202a1dd819fe0a23108072bf9552ba14a0bd787a96ffe5e7a36f37e03dad8db9c46f5731acbc122c258eef6d517816aad9c8db1ca64700d19 SHA512 bcb1479f9ff5e194a4e452da9d0479febc2bcd465b4be69bb8f30e2e6b858fb77a71216dcb3e74dfb65e7ca6513742c294cd6b5eaa5ce82d0b122a00f1cbc450 DIST xen-upstream-patches-4.18.4-pre-patchset-1.tar.bz2 55216 BLAKE2B 9cc25750cc48db6efbc349278a89cfc3880326ad4556d5dad28a016bbf270435acff606d545420d44a3143ab1f540156c6997ad676d36b3ec3d5e85a63fb495c SHA512 3752998f804c7e1e5dc327a1a84dafbdac6c06eefa404766fc94089521d836a5fecd2f760e229200d4b6267af88f55b119505336be4d57e9fd74457b122f896f -EBUILD xen-tools-4.18.4_pre1.ebuild 16080 BLAKE2B d7f99bad8a6314272190a7352bb4071326cc8447d6dd7dc283e742de35933c37a1d642c62a2642ac28f35560c16eb94ff6be3f000abc4e364f6ebab9122bc1ec SHA512 67e13dd0ec19c34175118c9fd05662678ef5720cb212db71e1427c907254f7667607ad36f0097f08a040e14fe729c5f14ef3cb37e918efafe5eea9ce73923b9a -EBUILD xen-tools-4.19.1.ebuild 16074 BLAKE2B 228a4f76a5b0db5df49b510757e6fca4410abad0700b7725817768b6d3384559212c9560364e97ab23933e679f6dcda15d41958378a07e2f812fa6dcd6a38f4a SHA512 ab7d5ff51da11f9754e408a3355b0c6734111bc579043d206bd6ba0143b5cd299c3bf1e0393caecbbac0b1f20b61e7376926a51e05a8f6e3c41607487e1909e0 +EBUILD xen-tools-4.18.4_pre1.ebuild 16701 BLAKE2B 2228717e021ce6f247a5725c7b9008a30e0838dece2de748389796924fdb4cd238bce1244ea93792fcb1066df42b9a06d757316c3df9f9d507d8b6823b86b7ef SHA512 bcf49e78032ce902bd87e3abf09df88d6c885c29c9974aa38aaed449c23968689cf6b2e24b69214847cdb156246c15ba12ecc735bc3db89ff98dc1996a813d1f +EBUILD xen-tools-4.19.1.ebuild 16549 BLAKE2B f4d9f4375b8fa0c138e7929f126ef9ff4ecc93f7bda13eb7e39bf7d9586dc0fd42b29646b137e3509cdb86d0ded9febea1a3e1f5ba4d49f06a2339087743d165 SHA512 9916946b467f45d064c470681916e211f27bb19f124a751951bc7a1834f4c152196d16f33a9a92e075edb43df2daa8642ee7128a81a77e0e40457e7364d43c13 MISC metadata.xml 1562 BLAKE2B a619e34e6fec4c6ffc00fd098dc040c5bb464ed7f2032db2e933fada0614e82c21269175f37720a123404551474e2aeeb2728b405ff93f9b4d9d092d027e0839 SHA512 f45c793a4b4819f0e50501ddc85acdaf99e4d675530712f8dccfb5166d071ae8ed07917a61d56037d6ba3a54123f72f4512d8c11643ea8c6e507feb9d29594e7 diff --git a/app-emulation/xen-tools/files/edk2-202202-binutils-2.41-textrels.patch b/app-emulation/xen-tools/files/edk2-202202-binutils-2.41-textrels.patch new file mode 100644 index 000000000000..22d33c9097aa --- /dev/null +++ b/app-emulation/xen-tools/files/edk2-202202-binutils-2.41-textrels.patch @@ -0,0 +1,21 @@ +https://bugs.gentoo.org/913110 +--- a/BaseTools/Conf/tools_def.template ++++ b/BaseTools/Conf/tools_def.template +@@ -1906,7 +1906,7 @@ DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z comm + DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address + DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address + DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable +-DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive ++DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive -Wl,-z,notext + DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON) + DEFINE GCC48_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie + DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(GCC_DLINK2_FLAGS_COMMON) +@@ -1929,7 +1929,7 @@ DEFINE GCC49_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -fno-pic -fno-pi + DEFINE GCC49_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) + DEFINE GCC49_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40 + DEFINE GCC49_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable +-DEFINE GCC49_IA32_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive ++DEFINE GCC49_IA32_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive -Wl,-z,notext + DEFINE GCC49_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS) + DEFINE GCC49_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie + DEFINE GCC49_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS) diff --git a/app-emulation/xen-tools/files/xen-tools-4.19.1-gnu17.patch b/app-emulation/xen-tools/files/xen-tools-4.19.1-gnu17.patch new file mode 100644 index 000000000000..82f0068f02bc --- /dev/null +++ b/app-emulation/xen-tools/files/xen-tools-4.19.1-gnu17.patch @@ -0,0 +1,10 @@ +ipxe relies on () not being (void), so just force gnu17 for now for compat +w/ compilers that default to gnu23. +--- a/tools/firmware/etherboot/Config ++++ b/tools/firmware/etherboot/Config +@@ -7,3 +7,5 @@ CFLAGS += -DNO_POST_PROMPT + + CFLAGS += -UCONSOLE_SERIAL + CFLAGS += -DCONSOLE_SERIAL=1 ++ ++CFLAGS += -std=gnu17 diff --git a/app-emulation/xen-tools/xen-tools-4.18.4_pre1.ebuild b/app-emulation/xen-tools/xen-tools-4.18.4_pre1.ebuild index 81da2098293f..8292b81c6320 100644 --- a/app-emulation/xen-tools/xen-tools-4.18.4_pre1.ebuild +++ b/app-emulation/xen-tools/xen-tools-4.18.4_pre1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -208,6 +208,10 @@ QA_PREBUILT=" RESTRICT="test" +PATCHES=( + "${FILESDIR}"/${PN}-4.19.1-gnu17.patch +) + pkg_setup() { python_setup export "CONFIG_LOMOUNT=y" @@ -390,10 +394,26 @@ src_prepare() { -e 's/, "-Werror"//' \ {} + || die + if use ovmf ; then + # textrels cause failures w/ hardened binutils + pushd tools/firmware/ovmf-dir-remote > /dev/null || die + eapply "${FILESDIR}"/edk2-202202-binutils-2.41-textrels.patch + popd > /dev/null || die + fi + + # Use gnu17 because incompatible w/ C23 + sed -i -e "s:-DZZLEXBUFSIZE=65536:-DZZLEXBUFSIZE=65536 -std=gnu17:" \ + tools/firmware/ovmf-dir-remote/BaseTools/Source/C/VfrCompile/Pccts/*/makefile || die + default } src_configure() { + # Workaround from sys-firmware/edk2 (bug #913110) + export LDFLAGS="-z notext" + export EXTRA_LDFLAGS="-z notext" + export DLINK_FLAGS="-z notext" + local myconf=( --libdir="${EPREFIX}/usr/$(get_libdir)" --libexecdir="${EPREFIX}/usr/libexec" diff --git a/app-emulation/xen-tools/xen-tools-4.19.1.ebuild b/app-emulation/xen-tools/xen-tools-4.19.1.ebuild index a7d7cfdd27de..06afb06cbb4d 100644 --- a/app-emulation/xen-tools/xen-tools-4.19.1.ebuild +++ b/app-emulation/xen-tools/xen-tools-4.19.1.ebuild @@ -208,6 +208,10 @@ QA_PREBUILT=" RESTRICT="test" +PATCHES=( + "${FILESDIR}"/${PN}-4.19.1-gnu17.patch +) + pkg_setup() { python_setup export "CONFIG_LOMOUNT=y" @@ -390,6 +394,17 @@ src_prepare() { -e 's/, "-Werror"//' \ {} + || die + if use ovmf ; then + # textrels cause failures w/ hardened binutils + pushd tools/firmware/ovmf-dir-remote > /dev/null || die + eapply "${FILESDIR}"/edk2-202202-binutils-2.41-textrels.patch + popd > /dev/null || die + fi + + # Use gnu17 because incompatible w/ C23 + sed -i -e "s:-DZZLEXBUFSIZE=65536:-DZZLEXBUFSIZE=65536 -std=gnu17:" \ + tools/firmware/ovmf-dir-remote/BaseTools/Source/C/VfrCompile/Pccts/*/makefile || die + default } diff --git a/app-i18n/Manifest.gz b/app-i18n/Manifest.gz index 3c3c3029ee8fd60c289430615e659bad02692561..93700253c46b55f9aa33d89f28b126c1c4cf3b0c 100644 GIT binary patch literal 17034 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 literal 16866 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 diff --git a/app-i18n/fcitx-anthy/Manifest b/app-i18n/fcitx-anthy/Manifest index 03640d09c3de..511cb4f1ba45 100644 --- a/app-i18n/fcitx-anthy/Manifest +++ b/app-i18n/fcitx-anthy/Manifest @@ -1,3 +1,5 @@ DIST fcitx5-anthy-5.1.3.tar.xz 84388 BLAKE2B ddc07bdc721b3e108d758aaa5cbb0c71a9d9d9c55b91c50c4766c3bac45d501f9c9846c10aad5966f547da0f9510d32c5e679327c8672546418ed050381dbdf7 SHA512 389570108c120e3f1691f94907aecf74cef418510a1eb602ec7c7f79ae02ebd0df757a68632f4d355723961eb1f24bd66c36f52ec0c42b2c678e0f9d9f01f2a1 +DIST fcitx5-anthy-5.1.6.tar.zst 112962 BLAKE2B e2c960415b4be5b58d3687fa71bd3f7aeef3246f8211982dfc4d64efa9e4291f8949c42d2f2c0e7491e8da453a28ba19ecc7eabb5595155641dd36ee9080a115 SHA512 528e8191f28aa9a8ec22c7a06ab119d29a5054e87592fb022072a841b2d74075d1f9efc667c28be6daeabccdefbbed4ead4e37af54a1779222edaf702fd51367 EBUILD fcitx-anthy-5.1.3.ebuild 677 BLAKE2B b04e7a48e7b43df9e3ea01a57c6c076d2b811d56fee0011f3ff1b5a86ef957d44f6160664b37e033f2385cf23ff42307dcaf64a64abac94888895d58cf8e4305 SHA512 6ae61f184af734724ff1a60a88a89c9c6853d238112bc5554910014da8310befbce9e092df3429376b3555431d9c2d9159eb20f6ba071ebe6c1ef657c26991cd +EBUILD fcitx-anthy-5.1.6.ebuild 695 BLAKE2B 51c305a718d44711cb7e93468a09790a57b140efd8cae9347a5c77287761eb4d650665396c77278d17df7d173069d10dc7758f13b5ba57a76ce2a644c8cd65ec SHA512 e706de26667de46d2dfd61fa6b800d927741227a759445c6a91256243719ddb8ecbacb6a5b3bd806ea71d84816568a379b44030273cb1fceb144bcd460187d8e MISC metadata.xml 577 BLAKE2B 17bd604fb2676822a97b9295a3793eaaf9f095491f0aa825fd4d8ddcb059f250102168585124108df5acea7a07e679b966022ab4d0e4be7566a6efb821ce0b72 SHA512 582c828e1019f89e85928324ba5c5eb55009bf6c8787918887e82d5def7246d51135f3f52c7dd052c4de6b7e1e13ff58a30eacba0942fa962c7647bfe42aef89 diff --git a/app-i18n/fcitx-anthy/fcitx-anthy-5.1.6.ebuild b/app-i18n/fcitx-anthy/fcitx-anthy-5.1.6.ebuild new file mode 100644 index 000000000000..ecd6892f8ad4 --- /dev/null +++ b/app-i18n/fcitx-anthy/fcitx-anthy-5.1.6.ebuild @@ -0,0 +1,32 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-anthy" + +inherit cmake unpacker xdg + +DESCRIPTION="Japanese Anthy input methods for Fcitx5" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-anthy" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst" + +LICENSE="GPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +RDEPEND=" + !app-i18n/fcitx-anthy:4 + app-i18n/anthy + >=app-i18n/fcitx-5.1.12:5 +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" + +S="${WORKDIR}/${MY_PN}-${PV}" +DOCS=( AUTHORS ) diff --git a/app-i18n/fcitx-chewing/Manifest b/app-i18n/fcitx-chewing/Manifest index a525d1772bbd..e1fbcdeb6480 100644 --- a/app-i18n/fcitx-chewing/Manifest +++ b/app-i18n/fcitx-chewing/Manifest @@ -1,5 +1,7 @@ DIST fcitx-chewing-5.1.1.tar.xz 23948 BLAKE2B 1894de696d735b469431c5fa0689c88948d34091f0a396b05a076cce4201cf605e00b45e864a65d9c40d42091842ca0efdf55bef2c66ebe65ed40367d7fd7f12 SHA512 48aeb1755c917fe931165f3f41cc175a22a76cf8a6d4be05e7eb6bbb0908225b2f6a99529943f773e7d0ed674dcdbf138e56e7b5962566a0f1219c3919039553 DIST fcitx-chewing-5.1.6.tar.zst 34497 BLAKE2B 3d237f962bd2dbf8ea21afef7d41a11ffedf73b36b3198f02678019a6c5b04aecde46cf436f238911fa75b1c0111fb8f9eae8aebca8607d85558080dabcd15f3 SHA512 90468081948c217a44e69a8c9dd11ff07a1e09589b9ae9cf019ed7f6dba31af0ce5d4361b883fd3bae1dd03d090a4c60dc582caa9a80bfbcba260ea2178a64b2 +DIST fcitx-chewing-5.1.7.tar.zst 34574 BLAKE2B 4a7b36af8ce6e991443d51870bffb81594dcf23735c3c719a5c1ee4f4a6b9ae8cf35eb55b42b495bb12c834aaaae8aa7ecc36fb3a6c8e123a5978a6f0cf2d991 SHA512 82d1839ab0fc43758dc15e45c989cfce2861b65fec3f8974f7d76f729f9e645c77352896ecf6574928b7d8e269e45f9c75104a79938103b8e697c0ae9d1562d0 EBUILD fcitx-chewing-5.1.1.ebuild 582 BLAKE2B 94744b05e2e4750a4f69f7fa33c4529791771e4af2b8ea173333a5ea6b22fb7debf8419061e6bee8a5d49ad92d0d9442d1727ab3872cc248c898bf04ce21f027 SHA512 19889b13cd3d402f05d51e7b2e242fa38077a685bc68f9cbad6b033534f030b5fcf1ed85dc03bf3e5f307558b52691abeda63f8eca4ce2b94f848d8be78ad684 EBUILD fcitx-chewing-5.1.6.ebuild 595 BLAKE2B a1f2638f29e7ebd0e0eca944ab017cabfb398cf6b81b90a8b6e73803c22839d91a197fd7ab9da56dc9f77c796d07f6382736ab5c07ea206e81a625a2defcf93f SHA512 d932a97535b9bf2aeae57094cb796c14447aef3c2fb92f9113ca262f4ad1aec7e4e85d7c00c0b88df8582d480053728b37717fb346eb901352639b94fb621346 +EBUILD fcitx-chewing-5.1.7.ebuild 601 BLAKE2B aa1bb7197b0dbe69c2f48020de18c198f502d341af9b68a46ebdaaf452b44ab2521e447a2ef61ff79c131ed8b9efcd6d8915e8f489e663b168a5366e849ea2c8 SHA512 2aca935753ab284fbfe044d72425377c81177c1360151d41f989800c76f46c16efc5dfb7bb3f66781478b4a0ed8f4a45b54c08eb357113d28b7e4c0121eb90c4 MISC metadata.xml 579 BLAKE2B 63dc24f84128db6a3d61b1f5572aef73b0e8d0783eb1cfca10d79ecf08f1e29e19b5bcbccd0022c7217c1a8b6ca1b0bb8b5c609983150dddb6b8e1266efb24c7 SHA512 2abf834f87cf987bfff86924ab14e1cb256b9ede4b9a4f995f25407180d678f754ce4672b328e91ed6318c7178ad4c6f1fc569caf322ef245ec0826f79dfff49 diff --git a/app-i18n/fcitx-chewing/fcitx-chewing-5.1.7.ebuild b/app-i18n/fcitx-chewing/fcitx-chewing-5.1.7.ebuild new file mode 100644 index 000000000000..7ba1a323f366 --- /dev/null +++ b/app-i18n/fcitx-chewing/fcitx-chewing-5.1.7.ebuild @@ -0,0 +1,26 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-chewing" + +inherit cmake unpacker xdg + +DESCRIPTION="Chewing Wrapper for Fcitx." +HOMEPAGE="https://github.com/fcitx/fcitx5-chewing" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +RDEPEND=" + !app-i18n/fcitx-chewing:4 + >=app-i18n/fcitx-5.1.12:5 + >=app-i18n/libchewing-0.5.0 +" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +S="${WORKDIR}/${MY_PN}-${PV}" diff --git a/app-i18n/fcitx-chinese-addons/Manifest b/app-i18n/fcitx-chinese-addons/Manifest index 3cfd9ba2b392..ea3d068a7d50 100644 --- a/app-i18n/fcitx-chinese-addons/Manifest +++ b/app-i18n/fcitx-chinese-addons/Manifest @@ -1,3 +1,5 @@ DIST fcitx5-chinese-addons-5.1.7_dict.tar.zst 1014942 BLAKE2B fb386dad971b2a8751202733ef593b72d35f9ab8a266f13e6839ea25010cf54e45c287e10d285a02d268f16b5b8f7a3dc6f6f20ffcc79759d8c1ef1136a29cb5 SHA512 fe04699672f034bde328049a19f23b9dbea75a980e706fcaf95138294b8aaaee54eb9ec5c696c343d5e4ce4788216821ad3eb45cd669d94d2f3b67551ae7360f +DIST fcitx5-chinese-addons-5.1.8_dict.tar.zst 1009572 BLAKE2B 63014424ca758cce38b2bc24c08c9add503e73c1e94e574cbae5d051753c6bca134bc88f4e096c264a3731b556f748e8af9496f78d5348956aa5cc78cbb843a1 SHA512 0fc8d3daf608781b573bfb5239988ae07f251558fc1d963f99962eb33a35d374f4a3e146f5c7bec1c403fa268495075cb3805f6478788fa79220377c72a98ea9 EBUILD fcitx-chinese-addons-5.1.7.ebuild 1496 BLAKE2B ea2a720010ed485dc05903eb5931c6dc66b1ba99f1fa8631c5854cffa95803bd706978c60476df3e541d8a1c1698fb0ed35e9e40f719aaef065709a1be238c2e SHA512 f7dfc7d887c2b9330590ead67adaa6aad746ee49192cf7559a1096047fb38164427d29f7f38ed4f6b01c4db3394791557f4ec30192089ee172830a8ad917f1fe +EBUILD fcitx-chinese-addons-5.1.8.ebuild 1498 BLAKE2B 2026defb8698bf3c22309760dd6bff30a19af766baec4291bb2d3ddacc44ac6747dae92176f5a57ffc0563d9940e3afeccca23da11cf9b607ff6eff13fc95bfd SHA512 f7bd4e03d21f6e498e81220c759195e8b606f5f1d0857c8041d0d19dedf90e0adbb7dda7a5189fcc99bf8cb25f5ee8060341a9df6ba34e1a49ff3739e68facaa MISC metadata.xml 993 BLAKE2B 034a9f1ca3966a67fb884f3e0ce6baeb83c3ccfb2b7d7d99d41e54ef30087c94d5a0c9729902e08eb8b781deeb71daf57b27f3d238beebf6e356e690aae7723b SHA512 05140cdf9695922cf2ddad40744d51d197fc3beab99ca7ba5d19b38a7c22762195f2e3a3c2e2ded46f253e1efeab06259429725830328c5f2001fe0752cd2b26 diff --git a/app-i18n/fcitx-chinese-addons/fcitx-chinese-addons-5.1.8.ebuild b/app-i18n/fcitx-chinese-addons/fcitx-chinese-addons-5.1.8.ebuild new file mode 100644 index 000000000000..8a30945075c0 --- /dev/null +++ b/app-i18n/fcitx-chinese-addons/fcitx-chinese-addons-5.1.8.ebuild @@ -0,0 +1,62 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-chinese-addons" + +inherit cmake unpacker xdg + +DESCRIPTION="Addons related to Chinese, including IME previous bundled inside fcitx4." +HOMEPAGE="https://github.com/fcitx/fcitx5-chinese-addons" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}_dict.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="GPL-2+ LGPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="+data +gui webengine +cloudpinyin +qt5 qt6 lua +opencc test" +REQUIRED_USE=" + webengine? ( gui ) +" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.12:5 + >=app-i18n/libime-1.1.7:5[data?] + >=dev-libs/boost-1.61:= + cloudpinyin? ( net-misc/curl ) + lua? ( app-i18n/fcitx-lua:5 ) + opencc? ( app-i18n/opencc:= ) + gui? ( + qt5? ( + dev-qt/qtconcurrent:5 + app-i18n/fcitx-qt:5[qt5,-onlyplugin] + webengine? ( dev-qt/qtwebengine:5[widgets] ) + ) + qt6? ( + dev-qt/qtbase:6[concurrent] + app-i18n/fcitx-qt:5[qt6,-onlyplugin] + webengine? ( dev-qt/qtwebengine:6[widgets] ) + ) + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" + +src_configure() { + local mycmakeargs=( + -DENABLE_BROWSER=$(usex webengine) + -DENABLE_CLOUDPINYIN=$(usex cloudpinyin) + -DENABLE_DATA=$(usex data) + -DENABLE_GUI=$(usex gui) + -DENABLE_OPENCC=$(usex opencc) + -DENABLE_TEST=$(usex test) + -DUSE_WEBKIT=no + -DUSE_QT6=$(usex qt6) + ) + cmake_src_configure +} diff --git a/app-i18n/fcitx-configtool/Manifest b/app-i18n/fcitx-configtool/Manifest index 89b291161cc2..c7686bcd8d00 100644 --- a/app-i18n/fcitx-configtool/Manifest +++ b/app-i18n/fcitx-configtool/Manifest @@ -1,6 +1,8 @@ AUX fcitx-configtool-make-x11-dependencies-optional.patch 3758 BLAKE2B eced5cd163047e7c037ca6b2e24ea0f3c64e62b7b02df6f3ed9e5316e8235b4dc55aee123811753f7976be8b24879f3d1c7aedd9d876708c54a90f907c4409d9 SHA512 8cb36e7a50fed06e2245ec213dee7e351c853f243b6f93eca52039a660e19d42b6df4e4dfea41f95991ac82899b8c8e702fc9e269b74cfaf3edf58083ff7b398 DIST fcitx-configtool-5.1.6.tar.zst 149667 BLAKE2B 2536258eb92c04623b2f1aa77c99cf91919cd4f1d23c0bdf7f87ab8528b2b1305ed6771ee93b25d67ace24dfc5b14413d96d13f5487fe58efe93b36c452ff67a SHA512 1cedd3b5eae3c069774da3456799e26ab36cf8b8a6515cf008fe6e9822bfa7d0992ed69c4ef9671484082778cd5560ee6255446be3ebbf00f305143b20531aeb DIST fcitx-configtool-5.1.7.tar.zst 149763 BLAKE2B 74fcdf6edccc239c768a308cf590369439dd398bf1a6667f5ca1277991bf504fbcd4c00af51c3e21747a005bc9226315d2e5a441ab183b0f060bfa964d3c520f SHA512 5e6c98478d85ea912d30d213acb232c5abd31b30626d41b7697719bd18c5c5947a3f401cf2d75153fbe3720328f1d8eb76b1a807f02dedd5fcaf44a2bc2b0126 +DIST fcitx-configtool-5.1.8.tar.zst 150808 BLAKE2B ade30b2ea546243f83b8851607f0e9665c3a807adbf93a37a01db3398b9eff254b2598c20350bb6448cd28b43e32defe519d244790076fb15acbc1117a6f5cb7 SHA512 f13b9faba4530c609f34245ed09f9c12267202b3442295905a47fd4c8444f6486e40767a00eff07da42ae1903701540d57584614b4878f64c59d4c84f0144928 EBUILD fcitx-configtool-5.1.6-r3.ebuild 1628 BLAKE2B 923b8a187320632805f7cb45aed60427ad7393fc77cac8437d833d12a3318d86d807a0bbd8048aad8cf080a2804d6b8427d0d59a8439157508cdbb9ea3f0767f SHA512 eadf27ce063ef9f54bb81a7e8d64db0b271b20b5456a970c291790444d6b25a3f8f3da9b4df56f305e30fbbc90f5c13726f211f86b3816389d5e62b720109718 EBUILD fcitx-configtool-5.1.7-r1.ebuild 1629 BLAKE2B 36a232e63f940d2ebc3721eeacb1289868514c79ebf571b4a5eb6b8d745668576c674eddc3a0a92aa0965706e0a0096bcdf69cc7b7ae297be38aaaa09dd7f067 SHA512 1b7e4f3a771d9ef1523073f4c3ccbcf73d9ec59b0c27013d1ebfcad8e51934b2371d0ad4cc29e06aa500a84b10b1c93de42087bfd7c520dcf1d294e4686e6946 +EBUILD fcitx-configtool-5.1.8.ebuild 1629 BLAKE2B 01dbe3273bd6c50beef259197d039e2860aae467e80c12f7e889ffe98f4948c8c197f1340e90d18f6db457048bb0a7c2f409b5de282eabb38ff8db764ba0af25 SHA512 61e419c30ed444cebc9ce488e221226d9786d76543c74a6832dc9edb40d5ac26b6e965bc414ce3f52693567ec63e0e13cdd3733e566a582c49ac930b69f9b949 MISC metadata.xml 741 BLAKE2B b1d72e0cb3035630c5cb30af64e84bb289752a7a27bf5036faf4b43c722a3b03e318be7293565c110e7a197024ad2db34d245926a0ff2ebb332604bc1c595302 SHA512 5f32cf6a46ea93921d092edecf4986f080779857ec79f9697e95f50f5f47e09ad211a08ca42ab1cf246194939f934ac60e739b22fea4f419b0a30871dc294edb diff --git a/app-i18n/fcitx-configtool/fcitx-configtool-5.1.8.ebuild b/app-i18n/fcitx-configtool/fcitx-configtool-5.1.8.ebuild new file mode 100644 index 000000000000..7433c9aa0d1e --- /dev/null +++ b/app-i18n/fcitx-configtool/fcitx-configtool-5.1.8.ebuild @@ -0,0 +1,71 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-configtool" + +inherit cmake unpacker + +DESCRIPTION="Configuration module for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-configtool" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="GPL-2+" +SLOT="5" +KEYWORDS="~amd64" +IUSE="kcm +config-qt test X" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.6:5 + >=app-i18n/fcitx-qt-5.1.4:5[qt6(+),-onlyplugin] + app-text/iso-codes + dev-qt/qtbase:6[concurrent,dbus,gui,widgets] + dev-qt/qtsvg:6 + kde-frameworks/kwidgetsaddons:6 + sys-devel/gettext + virtual/libintl + X? ( + x11-libs/libX11 + x11-libs/libxkbfile + x11-misc/xkeyboard-config + ) + config-qt? ( kde-frameworks/kitemviews:6 ) + kcm? ( + dev-qt/qtdeclarative:6 + kde-frameworks/kcoreaddons:6 + kde-frameworks/kdeclarative:6 + kde-frameworks/ki18n:6 + kde-frameworks/kiconthemes:6 + kde-frameworks/kirigami:6 + kde-frameworks/kpackage:6 + kde-frameworks/ksvg:6 + kde-frameworks/kcmutils:6 + kde-plasma/libplasma:6 + x11-libs/libxkbcommon + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + $(unpacker_src_uri_depends) + kde-frameworks/extra-cmake-modules:0 + sys-devel/gettext + virtual/pkgconfig +" + +PATCHES=( "${FILESDIR}"/${PN}-make-x11-dependencies-optional.patch ) + +src_configure() { + local mycmakeargs=( + -DKDE_INSTALL_USE_QT_SYS_PATHS=yes + -DENABLE_KCM=$(usex kcm) + -DENABLE_CONFIG_QT=$(usex config-qt) + -DENABLE_X11=$(usex X) + -DENABLE_TEST=$(usex test) + -DUSE_QT6=ON + ) + + cmake_src_configure +} diff --git a/app-i18n/fcitx-hangul/Manifest b/app-i18n/fcitx-hangul/Manifest index 7ad92ebe44b3..7ca602c07ad5 100644 --- a/app-i18n/fcitx-hangul/Manifest +++ b/app-i18n/fcitx-hangul/Manifest @@ -1,3 +1,5 @@ DIST fcitx5-hangul-5.1.1.tar.xz 39296 BLAKE2B 4fadc20e5b312e4e40f592c24d7e724d3d6adb0cef2539a27e624758c5d7d79490ac3dcf960b37e3c2ab451098b1ff9424aea77cf2d9eeaca9b9ba5eaee538bf SHA512 7b16a81cee1448de2428a96f89ce0a4e41f51e8c3f9beb930b068147ef7d93e227081f65ede0d799d1e15692e4742da3ab864fb652fa1812bd5de24da7e3a2f7 +DIST fcitx5-hangul-5.1.6.tar.zst 49294 BLAKE2B a15ce38a87efa1b26ed57a83a3644a6522cbeb5dd31c43f85df136ab89458aeeb071b3fc5d0ee961d494791e7f9ecc7b92fbeac151273e48100664da2c5ac4cf SHA512 812b849033aa5eba4eb1b5178c49e1a6bc03b194a1af0a8f5e113613f07cacfd493d6bcc1044322880aba6e8393071ec1c7294438c64547cd6baca3b8ebf81a9 EBUILD fcitx-hangul-5.1.1.ebuild 671 BLAKE2B 0e0a8fa4d32cdf7ab7fbad12f2a84b0a42dbadb67702501d998a4a933dabd0bf9760ba210a67d406a5a025835da54efa038f2bceb4625cd9e6aebd792d346660 SHA512 a6e6d4a12d5a1a5de6273a6cf24f486d0624d6cc9fa7f501d9191c99c46c5f500740c996cdce0e2081bf51e066038c4e206c6598b281d2c33e0134a128f0d869 +EBUILD fcitx-hangul-5.1.6.ebuild 689 BLAKE2B 787df4001d30344c570c062f30a3bfd622695c8fc9aa8e34cdaeeb40bbde4d71135b429436ea12cb5dfab7880c859bf00b38ac37e71cc4cdfca0b5cf17ea3d3e SHA512 04339f9bda5b157ab0d39aa6c1c10b52316dbd4371f076f8a86c238541e9280cd16dda8fd583c261774af5942cdb39394c92c18208226aef6224742b2e929912 MISC metadata.xml 578 BLAKE2B df1f88be12bd82f9fcc5e7f0bf84df7ef2a7ae6b79eb7cdf85b63da024b9783ecab92f2dd3d15e2a8d60c92aaf42c7d0010bd0260586292f760618c8471f8742 SHA512 23b272d6a2eae2a235314070543cdb55250d0eeab69fa5de8fe46e40d260f53544d98023fdbfb4d78382a42c85b504db2a81c7fd6705f7d484ad09de449a89d2 diff --git a/app-i18n/fcitx-hangul/fcitx-hangul-5.1.6.ebuild b/app-i18n/fcitx-hangul/fcitx-hangul-5.1.6.ebuild new file mode 100644 index 000000000000..fae4f1c54052 --- /dev/null +++ b/app-i18n/fcitx-hangul/fcitx-hangul-5.1.6.ebuild @@ -0,0 +1,31 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-hangul" + +inherit cmake unpacker xdg + +DESCRIPTION="Korean Hangul input method for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-hangul" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst" + +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +DEPEND=" + !app-i18n/fcitx-hangul:4 + >=app-i18n/fcitx-5.1.12:5 + >=app-i18n/libhangul-0.0.12 + virtual/libiconv +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" + +S="${WORKDIR}/${MY_PN}-${PV}" +DOCS=( AUTHORS ) diff --git a/app-i18n/fcitx-lua/Manifest b/app-i18n/fcitx-lua/Manifest index 98aee1073981..3dd053d16221 100644 --- a/app-i18n/fcitx-lua/Manifest +++ b/app-i18n/fcitx-lua/Manifest @@ -1,3 +1,5 @@ DIST fcitx-lua-5.0.13.tar.zst 40578 BLAKE2B 05defed55711d26c2fabf41e5474f7f90224a11cd8a758b5f7afc4ed6096560ab6c220745968bb0ca28367004cdf665856d04c3b52830092e3633188cd41c394 SHA512 40855f65537c2e56e1a00d7ea160d6aae9d360ff27def7f95b2f08de16c656db7a178a676f49d817b9d16eac80f73ad12f84b966eeed4a3f38f119519d288805 +DIST fcitx-lua-5.0.14.tar.zst 40916 BLAKE2B bd69c015af2c386ca3574d7176e76713f468ba68c4b8fc1369be293730c20ff31cccc5ff12a9379c9d16233bae7b16a968954cf5fc2b406400e95ec0cff0f3fb SHA512 87b8fc3e8d41d08e83281140a905fa63f4b927ee8355b2e7c4d06b862cc08d35b6c39d5d8116c90dc47cbc0e046ae0b98086fea1b019d2eb140dcbfa6eec4b28 EBUILD fcitx-lua-5.0.13.ebuild 877 BLAKE2B 16a605ae7dce1805b59363bb4ca7964e92418ca4cf3eb5f7122a35e764541981e288443f0f6ea173077f6400397cb12a655bca13552158bf379319f01072d85a SHA512 a55012dbbb02ab55dc036236b48c4cb41ed172dcb2e97bde0a6632bc404e76a306315ffe25abcbd812c47fa24c9faa99a50dfcf82824971713c3725dfa8b0185 +EBUILD fcitx-lua-5.0.14.ebuild 888 BLAKE2B 42d8c7862879596805cbd9c75cd3df39d22c95e4f67f4370a3c02a5ce7ff58115b387357d9f9f451585ca611a76768c21b506edf4fd0807eeaee6f4641dab141 SHA512 cd4a922cd75f9fc269fb77971a774003bf55ba2d9b1232986e541925a7de4270ce705a9b730c9e453cc2f949cff68ee708ce8c49dd300884fe043a8cf491c8cc MISC metadata.xml 1018 BLAKE2B 64a202bdb4addde0999963a134ae283b62945b4448b7942994c6aa6809f5506220461d697398cd5562123a5aa902f56f83f0ad2c65e708e9daa969475fc37387 SHA512 35777f31006124a5970656be244de8bd1134d0f7cfc24ae5a7ee576e9d2841af36a5a2bd239d36ef9a3accb19a75c20710f720151c23f2b3f08d98de6ce27ce0 diff --git a/app-i18n/fcitx-lua/fcitx-lua-5.0.14.ebuild b/app-i18n/fcitx-lua/fcitx-lua-5.0.14.ebuild new file mode 100644 index 000000000000..5d18d4ca51ca --- /dev/null +++ b/app-i18n/fcitx-lua/fcitx-lua-5.0.14.ebuild @@ -0,0 +1,45 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{3,4} ) + +MY_PN="fcitx5-lua" + +inherit cmake lua-single xdg unpacker + +DESCRIPTION="Lua support for fcitx" +HOMEPAGE="https://github.com/fcitx/fcitx5-lua" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="+dlopen test" +REQUIRED_USE="${LUA_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +RDEPEND=" + ${LUA_DEPS} + >=app-i18n/fcitx-5.1.12:5 +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + sys-devel/gettext + virtual/pkgconfig +" + +pkg_setup() { + lua-single_pkg_setup +} + +src_configure() { + local mycmakeargs=( + -DUSE_DLOPEN=$(usex dlopen) + -DENABLE_TEST=$(usex test) + ) + cmake_src_configure +} diff --git a/app-i18n/fcitx-m17n/Manifest b/app-i18n/fcitx-m17n/Manifest index 82d2d05ae625..be78ef5dcd9f 100644 --- a/app-i18n/fcitx-m17n/Manifest +++ b/app-i18n/fcitx-m17n/Manifest @@ -1,3 +1,5 @@ DIST fcitx-m17n-5.1.0.tar.xz 23996 BLAKE2B 94802b1584cde13d0f613e5506a05ce101cfd0ecf245be980e608f8c6dd509540a877edb1d14ee376da8834f6fcf947a0d88ad1ed7019e47fa4d8bf5d04c3900 SHA512 a28a170ba62edc9b6e225f5ff6d76c8d7333006429a6d496abd2b7b49a9f82e01a2ebfdd670609c96529bbee36a01fb1937abfab745f1d3f3a4f196f3b9fc3df +DIST fcitx-m17n-5.1.3.tar.zst 27964 BLAKE2B 8ee22fab28e9da79ca3d24ee1aaae10623e07daa17b8cf950c03bdfbf7a0fcc83439af72c6443d9aa1ce50614f0bc5f70af139bb795f9aeec7d1c4e064f670a5 SHA512 188d7d02fc6897c3b5966c369b7875c175e5ebb23ee87eefaf295ca36309bfa42cfe846ae57b09be850f6c0f9bdfe1045c6bfd259f92f6d350cb4f15c1b48f26 EBUILD fcitx-m17n-5.1.0.ebuild 784 BLAKE2B 757656b2dd9cdb639f636e27c2951868d4131f388fb878f9a709dbbf2daf34e75a2346d0e1f17c26317fb0ec4781af094d7a78226f9bac0c6092675b6312f027 SHA512 7041b9b83fe2f7ae3ad1a690bb73b3f364fc3ee418ac2917bb349533f7746c5195f045c965afadfba80d8f3287776827d561a465727d4e5a262e6952e97b1a66 +EBUILD fcitx-m17n-5.1.3.ebuild 803 BLAKE2B a142562676a3edcb9166fbcda237d0da8567481242b24bc5babfcdc3683a4108a9510d14706e58fcb2c4e42d3daa8e4d3edfe67ba6753656fd9c577f619880ac SHA512 0924bfd683f07f88df96d99d6a829e238de9def173a1f72702e3fe3c02bed47e1082d1be7c072731ad04bdbf2e8adf38b10bd06d27af07447dd17dd295896e65 MISC metadata.xml 576 BLAKE2B 9b00e890fd1adbbe7082536f30f3545f48848fbe63f8af9ba64f27e9564b2d471ca73a8a21f60e444e4dc7a80242e35b70e8dc4d159a7e721ee77a0970d67dc3 SHA512 69d617378c506be4fc9ecfa45a9b14bb977a9c44ee1d9271ff40d80f8e8e8ade1d73ad4981e582fe32f50b9d8e005d16edfec72b534c2ae03bb9ce9e86c46318 diff --git a/app-i18n/fcitx-m17n/fcitx-m17n-5.1.3.ebuild b/app-i18n/fcitx-m17n/fcitx-m17n-5.1.3.ebuild new file mode 100644 index 000000000000..c68a025cd56e --- /dev/null +++ b/app-i18n/fcitx-m17n/fcitx-m17n-5.1.3.ebuild @@ -0,0 +1,40 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-m17n" + +inherit cmake unpacker + +DESCRIPTION="m17n-provided input methods for Fcitx5" +HOMEPAGE="https://github.com/fcitx/fcitx5-m17n" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +# m17n-gui>=1.6.3 +RDEPEND=" + >=app-i18n/fcitx-5.1.12:5 + dev-db/m17n-db + dev-libs/libfmt + >=dev-libs/m17n-lib-1.6.3[X] +" +DEPEND="${RDEPEND}" +BDEPEND=" + virtual/pkgconfig + kde-frameworks/extra-cmake-modules:0 +" + +S="${WORKDIR}/${MY_PN}-${PV}" + +src_configure() { + local mycmakeargs=( + -DENABLE_TEST=$(usex test) + ) + cmake_src_configure +} diff --git a/app-i18n/fcitx-qt/Manifest b/app-i18n/fcitx-qt/Manifest index eeef47d01a8f..1b7aecefe41e 100644 --- a/app-i18n/fcitx-qt/Manifest +++ b/app-i18n/fcitx-qt/Manifest @@ -1,5 +1,7 @@ DIST fcitx-qt-5.1.5.tar.xz 93980 BLAKE2B b119cbf886a6c7d37c3d959897dea38ad2c1112811ed776ed53ee715f441798b300d54023b34980f625ef2cf3235be4f6c64f7e8c2c65568c8487306714bdb1f SHA512 736677a268d345a962e8c44af81870d2cfc62db72c7a089e2c11151f7f682659ec83307a3397d1feb2dda7e9419847d5e365f7a20ca9b7d6216b690cb9c515c7 DIST fcitx-qt-5.1.8.tar.zst 128800 BLAKE2B f8fd49f7cb6d152fd99d036494274f6a1883159140edbd73f525ca4caeb0a8f626671e182ba988b57b85e3f840c900353907eb0a941189b1d5a0b21430df8656 SHA512 ecd9131b2266888345363c39bf4446f6d6d127662d0e67a9837a106f6124d189fa0c74e0cac3f3a6680a3d533316fb6333a83fca1cf9c90561e0b84174abbabd +DIST fcitx-qt-5.1.9.tar.zst 128804 BLAKE2B c21e344c1eab3933abe4eb9558ec55a24ed952dcb0f00e16542be6408f4ac98714ba989dd442c1b9ea39e26fe3656f2d1ddbaac4380e6ef535048673637e85f0 SHA512 81859215884e3f4a598e2f1d60c2403fa4ddb078732b1292df9083a539e470e7bbb44319e968d47fecad1e4bc28424f451c1a54918ba12d2a265c59ae69f798e EBUILD fcitx-qt-5.1.5-r2.ebuild 1376 BLAKE2B 7968d3b50c3c9dcb132a1e9fa784c74baebe0662850bae2f104c4eead3a053b3970d884b6753c270a25084ec77a704967d20b3dc38e955707a913a8626f9a052 SHA512 8c83901a2ebedb310cb43275b1e870002fbbb3a2fc6b18200072b36f2bdd8f01b47ef72895e67b654c2cc09eb10b91d5674130c4ec76095013d5be15fbf6bf55 EBUILD fcitx-qt-5.1.8.ebuild 1387 BLAKE2B 5ceb1d1d1b4f24a037c47ddd448816d84ab6ba485b72444f4a017178e630416fba18f90a7999ec505bd5fd7e51518e4da1c3f2fe8f4f78dbc3f0a114f9b43ac0 SHA512 6ff4d22fdcf3aa2dcb4cfe13269bcdda2b4b7128ad6fee804683209cb0b70ecca14abd23efdfe7a58b552f291e17b2f07061f9a44bcbc91c8ef00339ac70e0b7 +EBUILD fcitx-qt-5.1.9.ebuild 1389 BLAKE2B 2198fd155bb5a50496efb1dcfc624ae7b019015dcae26ae620814512f52139c3c306a78e29a60e45db6f78627f14428a9e52b5f6701d69046f52036455ab6b9a SHA512 409cf8ac23a940f219d007cb63ed170f992f200c5df3ce5e94e294b498f6b42adb2845c5d4dac704368eee88586f90bcaf0faffef2628446848dd228a3ae7de8 MISC metadata.xml 746 BLAKE2B e08a44b85b899bb04c0683bea836d0c79cdba1b82e0e6a2ecd85e32f258bd8b2e305cc9a95465b34fb73707c718e1e27a2835d8b3afb98c9aa184a7efc0f55da SHA512 81b171a9e601eba0ee1df96f7662f3486a30236a9faed67c274446f75d998529eb37233c928307db3875349afec1db704e25149d67ff45055bd7d0bd09047c45 diff --git a/app-i18n/fcitx-qt/fcitx-qt-5.1.9.ebuild b/app-i18n/fcitx-qt/fcitx-qt-5.1.9.ebuild new file mode 100644 index 000000000000..783aea771fcc --- /dev/null +++ b/app-i18n/fcitx-qt/fcitx-qt-5.1.9.ebuild @@ -0,0 +1,65 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-qt" + +inherit cmake unpacker + +DESCRIPTION="Qt library and IM module for fcitx5" +HOMEPAGE="https://github.com/fcitx/fcitx5-qt" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="BSD LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="qt5 onlyplugin staticplugin +qt6 +X wayland" +REQUIRED_USE=" + || ( qt5 qt6 ) + qt5? ( X ) + staticplugin? ( onlyplugin ) +" + +RDEPEND=" + !onlyplugin? ( + >=app-i18n/fcitx-5.1.5:5 + qt5? ( dev-qt/qtconcurrent:5 ) + ) + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtdbus:5 + dev-qt/qtgui:5= + dev-qt/qtwidgets:5 + wayland? ( dev-qt/qtwayland:5 ) + ) + qt6? ( + dev-qt/qtbase:6=[dbus,gui,widgets,wayland?] + wayland? ( dev-qt/qtwayland:6 ) + ) + X? ( + x11-libs/libX11 + x11-libs/libxcb + x11-libs/libxkbcommon + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig + !onlyplugin? ( sys-devel/gettext ) +" + +src_configure() { + local mycmakeargs=( + -DENABLE_QT4=no + -DENABLE_QT5=$(usex qt5) + -DENABLE_QT6=$(usex qt6) + -DENABLE_QT6_WAYLAND_WORKAROUND=$(usex qt6 $(usex wayland)) + -DENABLE_X11=$(usex X) + -DBUILD_ONLY_PLUGIN=$(usex onlyplugin) + -DBUILD_STATIC_PLUGIN=$(usex staticplugin) + ) + cmake_src_configure +} diff --git a/app-i18n/fcitx-rime/Manifest b/app-i18n/fcitx-rime/Manifest index 4f614d8b68f4..d690b0ded30b 100644 --- a/app-i18n/fcitx-rime/Manifest +++ b/app-i18n/fcitx-rime/Manifest @@ -1,3 +1,5 @@ +DIST fcitx-rime-5.1.10.tar.zst 64546 BLAKE2B 0a5c9f899b5c2632fa782f7666aa5b6321b52898c4b3f4ffe34d46653e223c5b2874e561e462a9934dfe43e2456200a49d36e1c02817899feb2a4ce3360f08ae SHA512 6b7dbedf9bfdcb7d9a2eb5760e6aec10cf239b6a67961fccff04f47d7fe826cf300796a2e06a64f82695f944c0f196abb384d0b56b664b53e377a3f1ed9f2ce4 DIST fcitx-rime-5.1.9.tar.zst 64335 BLAKE2B aac7f54cc5bf3617744d1f85c13ed402fd13c41c81b144225d49e6ddfc11b207d286bdf8f91ec8b7156bebc9af4c6c6c2badc3fe1747c35851d88b4574cdf651 SHA512 efffd620d960346b96333bc3403e1c8a25acc99103ba2c465a5c27bb32842497c64647af540af306d8e0bb6d9ac4fdf852db7911233564ea38ee3980098f7336 +EBUILD fcitx-rime-5.1.10.ebuild 711 BLAKE2B bb0a8f8f96c0721b1eb1e6c1ffa6eb7881fc707f8f38ebc890454736c942e9467ffdb19cfaba9c3cfc8db85e4bb4ac0e3adf665a8552fb95ef01919397852ce4 SHA512 3fddca8450b00194a0aa5241e1f5834b8cf54003aeeef40e3123264dba9b28d513b42d93a206b81c152d3b771e0321a539bdc41d361e10db9ad1bc7ab7b81818 EBUILD fcitx-rime-5.1.9.ebuild 704 BLAKE2B cd3b78ea042eb0e6f0d1d7c0f2e8779202951664c68c26cc6584a9c0dca0c6f890daa728b67f7286aaedbab998b02c259a5e953ad9728577858ffdee8220f0d5 SHA512 95436eefc367e5c9bfb625eeb9267019374991db73dc2b166e6e5c4f2adc0dda51cc05cc16817d04f07274753b187cefb069329ea968e94d9c546f296aa7066e MISC metadata.xml 790 BLAKE2B 818bb9e5b53ff1d1b534bd62da99bbf54fc11b2e91b87e787a2ab8b32f5026fc6bf9a8d7b4a1900960e80a372763e1107eb739c0f10dcc41a3addcfaa14eab1c SHA512 ea6101b5754211c9d9c51165cc7069c837ea418d68956f4de799e1490f456c5afee4b7efaa4c24478d14eca754837d1794a8d9713375e5fc14fed0942a6536ab diff --git a/app-i18n/fcitx-rime/fcitx-rime-5.1.10.ebuild b/app-i18n/fcitx-rime/fcitx-rime-5.1.10.ebuild new file mode 100644 index 000000000000..8fe5a25e8aac --- /dev/null +++ b/app-i18n/fcitx-rime/fcitx-rime-5.1.10.ebuild @@ -0,0 +1,30 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake unpacker xdg + +MY_PN="fcitx5-rime" +DESCRIPTION="Chinese RIME input methods for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-rime" +SRC_URI="https://download.fcitx-im.org/fcitx5/fcitx5-rime/fcitx5-rime-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +DEPEND=" + !app-i18n/fcitx-rime:4 + >=app-i18n/fcitx-5.1.12:5 + app-i18n/librime + app-i18n/rime-data + virtual/libintl +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules + sys-devel/gettext + virtual/pkgconfig +" diff --git a/app-i18n/fcitx-sayura/Manifest b/app-i18n/fcitx-sayura/Manifest index bf534b140667..1cd518ad3529 100644 --- a/app-i18n/fcitx-sayura/Manifest +++ b/app-i18n/fcitx-sayura/Manifest @@ -1,3 +1,5 @@ DIST fcitx-sayura-5.1.2.tar.zst 25363 BLAKE2B f498b9062c0e450b8cd3632b231e6e3bc7010ef6aed6bc0b6c6118de854202e36ffa04249ebe4527a69e30d261c3c07a89f221fc9b578df4eee293acace05766 SHA512 bc00188affa127f3ddbcd5eb6dc99030f432bdcf408e4b7abbee50fd906686f9697338e2d774c6639e5984f1a5bc1ab00261ae4752f9a984c4a639fe5315645f +DIST fcitx-sayura-5.1.3.tar.zst 25613 BLAKE2B cfa8db8baa700867579cf364ea6d2a4cc31da49bd5e5e087dd31f93f012b7d5d87dfdd9eee58e3110108d709c562a877532e95400b64cd2643f9c0af75582e27 SHA512 30733d695840607371f5ff0c82014df80455f087fd746265a786692c3e9fa55ecdc781259fe007eb95acc129125d7394580f54b762fd27f264233a469032e4f3 EBUILD fcitx-sayura-5.1.2.ebuild 571 BLAKE2B 8d197602f553fb6aea69817f393d810a501d4c332be8c0f54e837809c279bbf711f2e183784a672576c4b4d055f71b43cdc501e77c50507d2da82305dcfe10e3 SHA512 80b2ebacfd9ca192125ca902bd263033ac237a09b5b0859cbc4a4e8bd49fc499d0ffa51ae107749feb2fac83b4f5f44a5e4b712d35c99f328e9bf365ac282a8f +EBUILD fcitx-sayura-5.1.3.ebuild 585 BLAKE2B afeee9a90a94cbb6d5a1a1ba5db634e6cdb594e166d83a5ff86d9aed1a5336496f4c953dc0936beee58e8cba0ac9338b780a20f3ef1f916c45b23d19ba11d7d0 SHA512 678f1514210df93aec69708db1e2ccf511ffc3288b49de94b16e13c178b9ff2ed2744503f60c40e5851cd1e6ba0b533c5fbc86748e6855720a1f17f1bba708c3 MISC metadata.xml 578 BLAKE2B fa86c49f76daad9708064c6cdfc01602333daa4c4b72186c4a961e8ff3d7657d0568fa16d38393c40fc0afb53cc735b794c2bb9e0a4c65a40cf40ffa397697d4 SHA512 57ea95e3bfbd77d7a23e760232886b6a009acf50b4f84bb006ec7204f4e7bc6111a24bcb78dd19edf1db229087108f6c1cde32cafcf1e46af98da5aefe139ae1 diff --git a/app-i18n/fcitx-sayura/fcitx-sayura-5.1.3.ebuild b/app-i18n/fcitx-sayura/fcitx-sayura-5.1.3.ebuild new file mode 100644 index 000000000000..29b0caaf1335 --- /dev/null +++ b/app-i18n/fcitx-sayura/fcitx-sayura-5.1.3.ebuild @@ -0,0 +1,24 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake xdg unpacker + +MY_PN="fcitx5-sayura" +DESCRIPTION="Fcitx-Sayura is a Sinhala input method for Fcitx input method framework" +HOMEPAGE="https://github.com/fcitx/fcitx5-sayura" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2.1+ MIT" +SLOT="5" +KEYWORDS="~amd64" + +DEPEND=" + >=app-i18n/fcitx-5.1.12:5 +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 +" diff --git a/app-i18n/fcitx-table-extra/Manifest b/app-i18n/fcitx-table-extra/Manifest index e152bc8e90f8..e45107d2bf7c 100644 --- a/app-i18n/fcitx-table-extra/Manifest +++ b/app-i18n/fcitx-table-extra/Manifest @@ -1,3 +1,5 @@ DIST fcitx-table-extra-5.1.6.tar.zst 13837895 BLAKE2B e28c413dc911b37ca20cfcb130a10034550c4c602a4a4e0039861f571654e8c3a2c308757b4e5e21035b783e8ceedd0fd751a41054db7d61ac06aacb4a76d2a9 SHA512 feec1363c9d1b2cb1a91e020bb3c83d9f77d78237d26ec55716c8864a8150b4cd5eb3c47c24fc24641ca4d99b2bba08c7de3bc39bf732a89fddb13222469b27a +DIST fcitx-table-extra-5.1.7.tar.zst 13838076 BLAKE2B a0668cb3a418a91a3f66cd5f86d403cc7e01ae9ff91322a4cd99355cb2079c4cc371bc952351f8d7958086ebc7f62ed95a27cfbe2f5d456aa8f155e2a3da4510 SHA512 13268ba2109a404a2b04adf18a6cc15e1333a907c06cd8eec7c548c26e62cad73c1095ba4bbccbc1ec70b5f794f17ec67c268f318e9eaead659f4adb870363d9 EBUILD fcitx-table-extra-5.1.6.ebuild 677 BLAKE2B f3e5b48caac54d8eddaf380cfca603b38fe5e14d8bf1140b5ce23dd6f5ceb3fc333b52acaf3bcc14839772503f151877302049dc42406656670c55b356e6e121 SHA512 49c6e5b509bb86503aa1d78e834f36fc76f8f3cc31e34abcd4738b3cb8001d6658b40bd861d8ed9f18399a4d3d16c0bf968379dbfde063c1cc4081e06717fdaa +EBUILD fcitx-table-extra-5.1.7.ebuild 679 BLAKE2B bdb7b8ac7e04491c0955e54687051aaa63db642302c9f34e5a3c79b31e48c15fdb4f620ea2221f047a2ecd656ae806a985b184ca954092d45cf41266ba9f4ebb SHA512 0e4b38d751652637c49a6f63840cdb94f506614966d4950c25e6516aaac6542badaa9bd6d568500ba974104a123c437e370fd8a9625bc45163be4a8208dc1bb6 MISC metadata.xml 583 BLAKE2B 8aeb69b41432103311c9571c1b54ae1747ba1d25c99bad6b0e1cf2794bc069cfd69137c881be4e38e9656ab29fb61c785bd0cea32c8162c1ac69c5c923443fec SHA512 556771429f855ed3feabc3df0a5991856e6ba054f098207276a56986642dfa4a8290b750ad9f47329a4b1d32638da59bf9ea0b9599be9986e255b7ec6cad3641 diff --git a/app-i18n/fcitx-table-extra/fcitx-table-extra-5.1.7.ebuild b/app-i18n/fcitx-table-extra/fcitx-table-extra-5.1.7.ebuild new file mode 100644 index 000000000000..673c221c80b9 --- /dev/null +++ b/app-i18n/fcitx-table-extra/fcitx-table-extra-5.1.7.ebuild @@ -0,0 +1,28 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN=fcitx5-table-extra + +inherit cmake unpacker xdg + +DESCRIPTION="Provides extra table for Fcitx, including Boshiamy, Zhengma, Cangjie, and Quick" +HOMEPAGE="https://github.com/fcitx/fcitx5-table-extra" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="GPL-3+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +DEPEND=" + !app-i18n/fcitx-table-extra:4 + app-i18n/fcitx:5 + app-i18n/libime +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" diff --git a/app-i18n/fcitx-table-other/Manifest b/app-i18n/fcitx-table-other/Manifest index 8d2189e8ccc1..0110a8810293 100644 --- a/app-i18n/fcitx-table-other/Manifest +++ b/app-i18n/fcitx-table-other/Manifest @@ -1,3 +1,5 @@ DIST fcitx-table-other-5.1.3.tar.zst 532361 BLAKE2B e966d5b259e96e60bf7f7744653fe6f6111a573ce9f10ccbd7fbd99028d6f38d607a6d51133f3492734b211ac5db214bafcfc0d21069f93da2ca6881e00d67aa SHA512 847e731c23e42b7a34bf145b489636a62812265c8b7d9fe0197f25f953d9683e0f8c96fccc3c6bdbb0a31742ab79258e3fee5b0b7a94e82b392d4d8471897415 +DIST fcitx-table-other-5.1.4.tar.zst 532235 BLAKE2B 6c9ab150a4e3ae3140b3f756cfebee6cb79b9b9ef161b7f23198fe0309b8ab1edfb634de394637c0ce936df9e1f92164ffcd550dbd9acbb75c01a81164526967 SHA512 19d4b54a8404efee31e14b8d8a8a66decfd50fc4c48ddbe0c1346fb785314eb0327bc11b376a389fc68c03cd721b1961dd113c0e7e89faf0c539c4a8ba87f47e EBUILD fcitx-table-other-5.1.3.ebuild 644 BLAKE2B 0b371ba45d88a00af4a2e02bd119b9f739ec2db8ed7c46f84f3d3a33d10d31fc2abcd65d80fe90f1bf970a71bcd2b313659105ef8a18168bce69524cd19190c6 SHA512 c28c1f2347d3f0c28f654cf3b9c12b413ebf99a962ec3195166f6dc41f354f430b187306976da9c6e343d69bdcf6341d0a2f837abcbe2baf142b3dc4c7e80ce5 +EBUILD fcitx-table-other-5.1.4.ebuild 646 BLAKE2B caa11a4f01999f9ed328a7cde6994102d3b5ddf3fdad35d3a2d7b03c12e3154a76fb5fa57cc29dcbbc0bfa80560eb50552069c2fe93e7bf0e4ff29b2465683bd SHA512 badae2a68d6a4c941ecb184d7aedeab1fd6c04d2907930b59e8c64e0826d820d5d4042960440b7e82eb06aee179e03a2b0f3cf103f8ea681aedf490859b947bd MISC metadata.xml 583 BLAKE2B 9e27f3a3ffa0da1affef2ccabd3535f69a10a13b1a79f1eec74005ae1b97b8b3b89be1a90117ff00b7d6e903acc6a6e8b1d1c10f5fc1b7e7274edf6bd40d80e0 SHA512 2705b85869a5827543d897de9861ce7630ffe67d6e9d51e2b571924aa39d05efe3f8b4296fe80fcbe427783bec673427c0e96ad87bb8535ecdbc7f1f8b100bfe diff --git a/app-i18n/fcitx-table-other/fcitx-table-other-5.1.4.ebuild b/app-i18n/fcitx-table-other/fcitx-table-other-5.1.4.ebuild new file mode 100644 index 000000000000..2397aac01d8e --- /dev/null +++ b/app-i18n/fcitx-table-other/fcitx-table-other-5.1.4.ebuild @@ -0,0 +1,27 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN=fcitx5-table-other + +inherit cmake unpacker xdg + +DESCRIPTION="Provides some other tables for Fcitx, fork from ibus-table-others, scim-tables" +HOMEPAGE="https://github.com/fcitx/fcitx5-table-other" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="GPL-3" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +DEPEND=" + app-i18n/fcitx:5 + app-i18n/libime +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" diff --git a/app-i18n/fcitx-unikey/Manifest b/app-i18n/fcitx-unikey/Manifest index da51a5879660..c270bd1c8cba 100644 --- a/app-i18n/fcitx-unikey/Manifest +++ b/app-i18n/fcitx-unikey/Manifest @@ -1,3 +1,5 @@ DIST fcitx5-unikey-5.1.4.tar.zst 114482 BLAKE2B daa7cb04f2047e7495f4699c4b7abe711b96553f8339b6ed41f84e934239e935ba55110076fd177fe14a8a5f01b65090fb2bf517acef9d085af018879b10b75a SHA512 d8918222c37609c078bdf6d73a5acaa5ebaf23b4b49d253850c737ac659cee94956ee8782b3ac2ea6eaa5cfdb8fccec6a62e86d6b0a1b4f5b03c4a6e395ca3f0 +DIST fcitx5-unikey-5.1.6.tar.zst 114937 BLAKE2B 96c832dbea695f8d90910ae4a1d07c69a05fce5a2bc982f47dd4b2b4e0566607e76a9b8afbd769bf51317c080ab276feef4285b918f7e0e82375f09b0b97007f SHA512 05e13eb63fedc4dd6852c0fa42efd89ceba1f6d90a9d8d1c04547d0bc3877f46ebce4cfb0a495331d911401a070b10cc42d5d5af818cc9ba6c8923a87254e89c EBUILD fcitx-unikey-5.1.4.ebuild 988 BLAKE2B 23f09dcbb0747b80ae7027f41e74a46b95e87b23ed85b9ce4153bb43cfbe54717c605861aa0b39660394586fdee39482f50cbfd6bde7ca4b6d8758ec80dcb448 SHA512 022d6d31c01c745db211ea535aa043a35550f0216e1949313cb4cb31dfc9eb891f10cd383e13260463400abec81d3674d9371925a643de7bd7ba2dbe5364a477 +EBUILD fcitx-unikey-5.1.6.ebuild 993 BLAKE2B ff6488a97cd6e1b5e43074c15a4eba849e8495c260cc82108e2b9e5de128b73dfcc9dd82999e1a3839c24ac78e0e47b1bfc70400811421997520a94b01a797c2 SHA512 927ace6c1c423a06707f7f82a2f4c652a6261948472795145e42db85b6af2e9d9ade58f3d8242a093a9860069be74b7c697d3e59bc8672ae9971a082acefd812 MISC metadata.xml 578 BLAKE2B 9f9b8caae9b94cd5a0324bd2a5f1cf67b5d6be173d5a0b10e30119cfbcf0f7416a7aa018049cb9abd392b416f5765b49fa555c1e5ebaf5ab8bcafa3ca0135db2 SHA512 691eb90302e2ad201015fa7f206ae551618fc531ef756c45ebd1792c635d1a483ff890dca0a9a9d84c2b2de8752bc9adc5facc8942c75394ebe5ce9e26862e85 diff --git a/app-i18n/fcitx-unikey/fcitx-unikey-5.1.6.ebuild b/app-i18n/fcitx-unikey/fcitx-unikey-5.1.6.ebuild new file mode 100644 index 000000000000..6536fa939b23 --- /dev/null +++ b/app-i18n/fcitx-unikey/fcitx-unikey-5.1.6.ebuild @@ -0,0 +1,50 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-unikey" + +inherit cmake unpacker xdg + +DESCRIPTION="Unikey (Vietnamese Input Method) engine support for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-unikey" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst" +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="LGPL-2+ GPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~x86" +IUSE="+gui +qt5 qt6 test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.12:5 + >=app-i18n/fcitx-qt-5.0.12[qt5?,qt6?,-onlyplugin] + gui? ( + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtgui:5= + dev-qt/qtwidgets:5 + ) + qt6? ( + dev-qt/qtbase:6[dbus,gui,widgets] + ) + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" + +src_configure() { + local mycmakeargs=( ) + if use gui; then + mycmakeargs+=( + -DENABLE_QT=ON + -DUSE_QT6=$(usex qt6) + ) + fi + cmake_src_configure +} diff --git a/app-i18n/fcitx/Manifest b/app-i18n/fcitx/Manifest index a20305cc7318..d1a723af858c 100644 --- a/app-i18n/fcitx/Manifest +++ b/app-i18n/fcitx/Manifest @@ -1,5 +1,8 @@ +AUX fcitx-5.1.12-make-x11-dependencies-optional.patch 623 BLAKE2B 12b3cde5b5aba412bf59246f2136482788c863ee264152c018f84a72cef4be2cad50804eaafe21457eec129c9882de8fd14d3547ca57d2a3011d29a5c6e63547 SHA512 a480d316c73abe987bbdaa13116a7fe6a4afbc6d46c778184fd003ab2c2cafc2bce10f1772fbe7e0638dbeb2d0a333119e54c30ff08d0496fe367b2f86378fc6 DIST fcitx-5.1.10.tar.zst 8309913 BLAKE2B a63f5c747dd1d7a519873f00f234ae43d1ab5458e57b809f01e2b6cefc3e3921ecd7fff27cf4b21d59842f11e8d397760d90cf6572b42f65d226b21acc18fefc SHA512 196bc26f7dd50596da90e6b4b0a8b4886b57ec928c182427fb8763507f1f4cb39a252bfddcbd6eccaa0cc920070b7b9fda03f18fd444f84154ddd925678ad7d4 DIST fcitx-5.1.11.tar.zst 8310353 BLAKE2B b38daa03c40b19454cf8b82dc6c9d799730fb614bb606d86f0dfbadb6dd88f3a382f4c2b2a8f820bf4b01e27e27be82ed2624fb3f0a70843af5f72924e62e58b SHA512 d2fee4b931175d67ed29058af5dc644c6918829ca336e88566781ffaf5ccbe942281e9a41459b5ad8ad37756bed24b999127f8b17d8925bb923a9eb10d1081fb +DIST fcitx-5.1.12.tar.zst 8317084 BLAKE2B 097881acde8fc1cf6960fd20878bb25c483684ff9ad9ffa133081d91fffd50c53b29998b1577866f10a8cb409a3c0fc96766909f6bdf268313e768de79e372ea SHA512 82943f6c2e809e8d9049d457f59e52bc202daf922abec032efc589eefad77b4db4398fbaea92c019eaeaa40ccf51585a8a80676a7909433a8576dc63fb639645 EBUILD fcitx-5.1.10.ebuild 2502 BLAKE2B 6f5025a3ff53e11f2416de3759cf00b31dc56bc8f11a7cc06b113047903ded8c6d5eaab98d3bb226872d98e98e388e97fb786853464466496ff00dea2e51aea6 SHA512 f662d1548a7dcd9c7231aaff555ede5b61f661fc95b125e4508e95496f50fe86dd0c282b1af7e91763d93c7b293738959ce5c990710e16505fef3b8dde0352a7 EBUILD fcitx-5.1.11.ebuild 2502 BLAKE2B 6f5025a3ff53e11f2416de3759cf00b31dc56bc8f11a7cc06b113047903ded8c6d5eaab98d3bb226872d98e98e388e97fb786853464466496ff00dea2e51aea6 SHA512 f662d1548a7dcd9c7231aaff555ede5b61f661fc95b125e4508e95496f50fe86dd0c282b1af7e91763d93c7b293738959ce5c990710e16505fef3b8dde0352a7 +EBUILD fcitx-5.1.12.ebuild 2573 BLAKE2B e1ad99fa82cc6f54cbe42a4bd3a2794288ab56e98126ba4e40b3555b2f76d12677f71454715e0f42edf131d457c7a4e87f8535e8357759cf5ccfb840360eef96 SHA512 0458b7a79c802bef9bbd62e9a78183e4dd679e40ee327ff04825239580dd81bc359e0421e03360c78c2724d8b5d96acc5d0038a29b3b4363c7d521042685e803 MISC metadata.xml 1123 BLAKE2B dc2f8ea69b22e7af90a9980228b8e3a677d51e98b004622985a9a92bee395e45cb1a6367530e75268daabeaaf9dfe38ea383844bcdf6acb7b0edcfcad2920c82 SHA512 edf2d04562271d6582e11cbf5ba7c10a9e320b06af4c8651cc3b862e2992e3522ca746ff1b7fd40f43d45b1e716d32c522cf60ff0ee557de29096b1a3a36ef90 diff --git a/app-i18n/fcitx/fcitx-5.1.12.ebuild b/app-i18n/fcitx/fcitx-5.1.12.ebuild new file mode 100644 index 000000000000..91033a878585 --- /dev/null +++ b/app-i18n/fcitx/fcitx-5.1.12.ebuild @@ -0,0 +1,125 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5" + +inherit cmake unpacker xdg + +DESCRIPTION="Fcitx 5 is a generic input method framework" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5" +SRC_URI="https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-${PV}_dict.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2+ Unicode-DFS-2016" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="+autostart doc +emoji +enchant +keyboard presage +server systemd test wayland +X" +REQUIRED_USE=" + || ( wayland X ) + X? ( keyboard ) + wayland? ( keyboard ) +" + +RESTRICT="!test? ( test )" + +RDEPEND=" + !app-i18n/fcitx:4 + dev-libs/libfmt + sys-devel/gettext + virtual/libintl + x11-libs/cairo[X?] + x11-libs/gdk-pixbuf:2 + x11-libs/pango[X?] + doc? ( + app-text/doxygen + dev-texlive/texlive-fontutils + ) + emoji? ( sys-libs/zlib ) + enchant? ( app-text/enchant:2 ) + keyboard? ( + app-text/iso-codes + dev-libs/expat + dev-libs/json-c:= + x11-misc/xkeyboard-config + x11-libs/libxkbcommon[X?,wayland?] + ) + systemd? ( + sys-apps/systemd + ) + !systemd? ( + dev-libs/libuv + sys-apps/dbus + ) + wayland? ( + dev-libs/glib:2 + dev-libs/wayland + dev-libs/wayland-protocols + dev-util/wayland-scanner + ) + X? ( + dev-libs/glib:2 + >=x11-libs/xcb-imdkit-1.0.3:5 + x11-libs/libX11 + x11-libs/libxkbfile + x11-libs/xcb-util + x11-libs/xcb-util-keysyms + x11-libs/xcb-util-wm + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + virtual/pkgconfig + kde-frameworks/extra-cmake-modules:0 +" + +PATCHES=( "${FILESDIR}"/${P}-make-x11-dependencies-optional.patch ) + +src_configure() { + local mycmakeargs=( + -DENABLE_DBUS=on + -DENABLE_XDGAUTOSTART=$(usex autostart) + -DENABLE_SERVER=$(usex server) + -DENABLE_KEYBOARD=$(usex keyboard) + -DENABLE_TEST=$(usex test) + -DENABLE_ENCHANT=$(usex enchant) + -DENABLE_EMOJI=$(usex emoji) + -DENABLE_PRESAGE=$(usex presage) + -DENABLE_WAYLAND=$(usex wayland) + -DENABLE_X11=$(usex X) + -DENABLE_DOC=$(usex doc) + -DUSE_SYSTEMD=$(usex systemd) + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile + use doc && cmake_src_compile doc +} + +src_install() { + cmake_src_install + use doc && dodoc -r "${BUILD_DIR}"/doc/* +} + +src_test() { + # break by sandbox + local CMAKE_SKIP_TESTS=( + testdbus + testservicewatcher + ) + cmake_src_test +} + +pkg_postinst() { + xdg_pkg_postinst + + elog + elog "Follow the instrcutions on:" + elog "https://wiki.gentoo.org/wiki/Fcitx#Using_Fcitx" + elog "https://fcitx-im.org/wiki/Setup_Fcitx_5" + elog "https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland" + elog +} diff --git a/app-i18n/fcitx/files/fcitx-5.1.12-make-x11-dependencies-optional.patch b/app-i18n/fcitx/files/fcitx-5.1.12-make-x11-dependencies-optional.patch new file mode 100644 index 000000000000..b177316fb7e4 --- /dev/null +++ b/app-i18n/fcitx/files/fcitx-5.1.12-make-x11-dependencies-optional.patch @@ -0,0 +1,24 @@ +https://github.com/fcitx/fcitx5/pull/1259 + +The header may be not available when X11 is disabled. Fixes fcitx5 +build without X11 libraries. + +Signed-off-by: Yao Zi +--- a/src/ui/classic/classicui.cpp ++++ b/src/ui/classic/classicui.cpp +@@ -20,7 +20,6 @@ + #include + #include + #include +-#include + #include "fcitx-config/iniparser.h" + #include "fcitx-config/rawconfig.h" + #include "fcitx-utils/color.h" +@@ -45,6 +44,7 @@ + #include "plasmathemewatchdog.h" + #include "theme.h" + #ifdef ENABLE_X11 ++#include + #include "xcb_public.h" + #include "xcbui.h" + #endif diff --git a/app-i18n/gnulib-l10n/Manifest b/app-i18n/gnulib-l10n/Manifest new file mode 100644 index 000000000000..7e193885ec9a --- /dev/null +++ b/app-i18n/gnulib-l10n/Manifest @@ -0,0 +1,3 @@ +DIST gnulib-l10n-20241231.tar.gz 786237 BLAKE2B 93283b255416aa7d041afb2275fc3a47bfe1d46a41987af5d38ad98f6962b0008ce88ffd35f284d813a2d99b891c470489f05d3ecc1bc182ce9912d82a5d0669 SHA512 0c5858f6068226afd9b3744020a3826a1236b62f90b6eff30ad17657a194017eaab9f8e090eb744902f47b997f63277b20509a27d1945c42ad9597bb734cad73 +EBUILD gnulib-l10n-20241231.ebuild 822 BLAKE2B 59c21bc8a93a59ed4033912cdece6de885bf0e8f89724df714cb3afd222d76bc527c61d3cb921d9287f38cc2025385b57634a3ab8bbc787bb22ffa727ba88b34 SHA512 b8f98a44866a0e03799f093c008586bc1f7458799bb33cfac0db88d2b11e23621823c375cd214cf790df5af7941be94f094f1c3b14160f3d9e8781f553b07534 +MISC metadata.xml 282 BLAKE2B 85c3312405ada57a85e03b06a59523c8d4069551f91e6b70f182d5af92ffc26b946c2987554001649eb41d605864a5cb3c172ebbb02f3c1a11ca1ed805889550 SHA512 5eac09aed8093684086d644c321b236d5da019a650ad322d33236b543bd5641edfc43cbdeee4654e093f9f6393eae034110ca51eb560b87a178fba74244d7fdb diff --git a/app-i18n/gnulib-l10n/gnulib-l10n-20241231.ebuild b/app-i18n/gnulib-l10n/gnulib-l10n-20241231.ebuild new file mode 100644 index 000000000000..637d875af18b --- /dev/null +++ b/app-i18n/gnulib-l10n/gnulib-l10n-20241231.ebuild @@ -0,0 +1,28 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PLOCALES="af be bg ca cs da de el eo es et eu fi fr ga gl hu it ja ka ko ms nb nl pl pt pt_BR ro ru rw sk sl sr sv tr uk vi zh_CN zh_TW" +inherit plocale + +DESCRIPTION="Localization for gnulib" +HOMEPAGE="https://www.gnu.org/software/gnulib/manual/html_node/Localization.html" +SRC_URI="mirror://gnu/gnulib/${P}.tar.gz" + +LICENSE="LGPL-2+" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + +src_prepare() { + default + + plocale_find_changes "po" "" ".po" || die + + delete_locale() { + local locale=${1} + rm po/${locale}{.po,.gmo} || die + } + + plocale_for_each_disabled_locale delete_locale +} diff --git a/app-i18n/gnulib-l10n/metadata.xml b/app-i18n/gnulib-l10n/metadata.xml new file mode 100644 index 000000000000..de9d78424186 --- /dev/null +++ b/app-i18n/gnulib-l10n/metadata.xml @@ -0,0 +1,9 @@ + + + + + base-system@gentoo.org + Gentoo Base System + + + diff --git a/app-i18n/ibus-hangul/Manifest b/app-i18n/ibus-hangul/Manifest index 52e38ae70a2f..69ec6d75b408 100644 --- a/app-i18n/ibus-hangul/Manifest +++ b/app-i18n/ibus-hangul/Manifest @@ -4,5 +4,5 @@ DIST ibus-hangul-1.5.4.tar.gz 542612 BLAKE2B 46495c04a37888a3ed21831b5bbca5b788f DIST ibus-hangul-1.5.5.tar.xz 356120 BLAKE2B 8f2186d19598927c8c824dbd036cfb997db95eae08c4a59489e3be987b5445cb7dffe5bfe766b339c60ea0a892130a0269522f00c8dfd910011b7a0eefc087b5 SHA512 c95900b8f47fc69dda04b6a41a1965a6d3a293727749b72bd234d6e899558dffce669df29a4e8c9dcc53d9f7b6cb18e84c4b0c55ef143731a894e0b5693c0722 EBUILD ibus-hangul-1.5.4-r1.ebuild 1268 BLAKE2B a2b546691100ab137d1198eb5cf7a911e80b32bcf1ae0b0d6856c281d1202f4559ae28d65b93eebb1ccdf4a26aaa4b91bb383f7f949ad5e75370b2f17960cbd2 SHA512 6e08217985311834b94f88b24c0bb082c32d86ab1e66c5bb84e94e573e9c8c0553e98605d1f1d2d882faf44ca4249a2368739accb4df6540041774cf346aed6e EBUILD ibus-hangul-1.5.4.ebuild 1222 BLAKE2B e626443a54e6bae1c1ca4ec1a7377ced523f2836c9067ba002cdd469a485e0199e30a39f8c8cbcd16a92093174bbadf6b3a79d0ff16340b318f6fd726a924314 SHA512 974adf87e98155659ac337874c663bdf26c558a3e64effa12e690121b20bc7fe4ac94ca63ab6e5906e015a6c88408b7aea1e1a3c4d5ce9add597292f8e2d3b4d -EBUILD ibus-hangul-1.5.5.ebuild 1275 BLAKE2B 2bead166bc594245161df6368024a84d2f3e7f910cf18fef3dc08f54817396fd480c6e04a8971007fd559b734c2929a9f9510d82498ed7286a6a35e2c65ac34a SHA512 e5fc5a1d8496fed7fe81c52a80e1d700a451f41b5a2d3264ee5657140f3dfef16ef4d035bc5d7382ff05116340b285d34b54099b83bce09dbf89ac5ee1deed92 +EBUILD ibus-hangul-1.5.5.ebuild 1274 BLAKE2B 60ac37cba1cac1db41db755aa742ccbe22f30b14bce735a7b1cd9d784226f070da43cd26a2e292527a832a13cdf25842117837d9b748e3e43de059ea850c8dda SHA512 d51c79f274aea55f1e49f3f05cfb63d01477e4e5db8b63766c8a7b7e5f18d2a1d30e64546a36d425a190fa746c82b07ecd01d0954a7a6869e5d088881816215a MISC metadata.xml 321 BLAKE2B d336297b96a4ba3ae1e2c8bf3b1493717b49ce42c85cb0748af54c7bf6be4a1c74461c122dbbfc9b107fa02f4e83800798dd61c1bba74426bb7a2487e0d8fef9 SHA512 d05f79c856e4e579d1f98cd7c9869294f1906fa7e73eeae7120ee6af710d5f16f103d63f1261a9d798ba5584fa8e6f349d73d407a747811515280c736b43eb48 diff --git a/app-i18n/ibus-hangul/ibus-hangul-1.5.5.ebuild b/app-i18n/ibus-hangul/ibus-hangul-1.5.5.ebuild index a6ee01c3964c..38354edd1dd0 100644 --- a/app-i18n/ibus-hangul/ibus-hangul-1.5.5.ebuild +++ b/app-i18n/ibus-hangul/ibus-hangul-1.5.5.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -13,7 +13,7 @@ SRC_URI="https://github.com/libhangul/${PN}/releases/download/${PV}/${P}.tar.xz" LICENSE="GPL-2+" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="~amd64 x86" IUSE="nls" REQUIRED_USE="${PYTHON_REQUIRED_USE}" diff --git a/app-i18n/ibus/Manifest b/app-i18n/ibus/Manifest index 4afa8b5b7ec0..9494396bcb32 100644 --- a/app-i18n/ibus/Manifest +++ b/app-i18n/ibus/Manifest @@ -4,5 +4,5 @@ DIST ibus-1.5.31.tar.gz 4108303 BLAKE2B 2fa895369f5326339b50da34777e2f34124000cf EBUILD ibus-1.5.29-r1.ebuild 6200 BLAKE2B d23ebb9c2a3f3eff2de9f986433b06b7c6cc579e05109cad14c502c23e15e147669fddad28ada5da55da009ada394cc04386aae704590c258d18254135260606 SHA512 3c0cd3e45163cf3544393afc56f4459e4c4b06852bd0541c49d42e513f3759958073cb66a267525215efcedee8dfb4540d05eb909c9c90ad18fd4786b615539a EBUILD ibus-1.5.29.ebuild 6071 BLAKE2B b8075e38e43ee77ad292c401bd5b88ab1e9515b0172e5cc9a3aedac9f746309ee5f59187bc58311d4ce989aef59a7d76e98df6a5bdbc8fa5158ea7711fee2dc2 SHA512 249d8ee8b4972a592e471f4b719bc09b61001855b31871e5b5205b3aa250087acb43a86f753db0f6e6920ede53b46bf12ed8b574a5c55aecbb2a438ee6b5f909 EBUILD ibus-1.5.30-r1.ebuild 6095 BLAKE2B 6310b03a329c86ad4d64c6a415499d3c554469c082b737650b8b9c70d3f0f7cd39c672e8be7b4f84f90b91c14bcb982c3a6c0a2fa3f2b428e36545b86a511b9f SHA512 bd2e533abb778341959509f4e9bb10a2720ed37eed5ad8b5f475766dbe93746832e15552d60c7349ca0c9a47d4017e0f4b55ab8ee287e55d7e07ae90c72ee098 -EBUILD ibus-1.5.31-r1.ebuild 6136 BLAKE2B d2e83f242bc0f27ef1355615a9af331ef8bf15e69b4732ad306b01e57554e56eee8d3feab95b828e63ff10bfb9d5652520c94569da7db0fc9aae86e9173e539d SHA512 2578c4a30528d38c485ef987bed4de4597bc2d0964bdc8bbd2469c6c5b49dd1d88e54cff17191c991956b3a8fe177fee94b7c130516bfbf8f6155fac79f13714 +EBUILD ibus-1.5.31-r1.ebuild 6136 BLAKE2B d407160828bc391a0293f710c79e001063369f401cbe1b9705b00148b70dc9e154def6604d8fded6302a853c848bdde19ed40200163ce7ed15187bb57dba4afa SHA512 e8832053908fc5071280c86b48f91b9c529f0c3a7691546bd82edddd8194b7a92843aab8045d4fdbc8ebd733ce50665688b416dca4e06935cc5dd8b5cb0654f4 MISC metadata.xml 989 BLAKE2B 9103c61af6f3766fa483864877a674455d0a47a2e7fc1e7ef0f62d835e1f57d6c71816737c64938babd5f29a7228d67f64c1d7aaaae0e9b10cc793ed373a698c SHA512 1552ed06ec527f6c9868b2b006b1d5d7bdc7101d34d4c4438eba6de74f398744a2720e31f73dc203f034631aa900db0a2ad8d429a67e577b69005cda1440f1ef diff --git a/app-i18n/ibus/ibus-1.5.31-r1.ebuild b/app-i18n/ibus/ibus-1.5.31-r1.ebuild index 9f41a2a7d624..f29172275dc7 100644 --- a/app-i18n/ibus/ibus-1.5.31-r1.ebuild +++ b/app-i18n/ibus/ibus-1.5.31-r1.ebuild @@ -3,7 +3,7 @@ EAPI=8 -PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_COMPAT=( python3_{10..13} ) inherit autotools bash-completion-r1 flag-o-matic gnome2-utils python-r1 toolchain-funcs vala virtualx diff --git a/app-i18n/jfbterm/Manifest b/app-i18n/jfbterm/Manifest index 7e05d9f0c515..5d6bf9f0a124 100644 --- a/app-i18n/jfbterm/Manifest +++ b/app-i18n/jfbterm/Manifest @@ -1,3 +1,5 @@ +AUX jfbterm-0.4.7-fonts.patch 497 BLAKE2B a22624498bfbfd4d57a1147d393f546f4d65682e1f773d5273809bae566b800499bb31fa200d173f7a85ab21bbf9ff466f8d8f069ccf466f044e1fa3697b877a SHA512 4775c6fbe2ddb5365600e07ca38062ad7afa37c1c105a296c76c20b8151af6e46ff0df85ee0c718afa2d9300a5cfa14fe259379a2a0b879071a76e3539710bcb +AUX jfbterm-0.4.7-gettimeoftheday.patch 1060 BLAKE2B a60ae75a469a27159dd4bd81c25057895dfd7ac80537c053010d01954496575a2ede07f5c01b1a5dec6ed5cf12d1bfa6f0f9c27f1203139c58b56cdaa1efc35e SHA512 de95d9eb5b159271f394c8ee64b1e73a800a33f7ed473a29d69f4b124686605e1a3eea05649ec77f455c19e1460171635f9024d23c3ad95eea7503de9bf74e90 AUX jfbterm-automake-1.13.patch 355 BLAKE2B 983fae9e0f38c364a75fb909846496fc29061d4462a51d5b23d5905d86f5d354c292e2a287920f1f9f1602623c387dd0b994167c5fb91c42e14522c96c4b4c78 SHA512 0fcbe5df3eda3dcb6fd87a4bbe8b3bb7e2fcf115562a9836a9c17a797b5a235ff5010c454feb6df7a05f2e9a183cd55cffc873a1f728e446a19efcdaeb0b1d4c AUX jfbterm-gentoo.patch 7577 BLAKE2B bbfa5df19dd3fb10c6b4f2a32846b45bdcca272f62299cb52efb5d512a12f07879fbbfc81103f1e1eb65410a54661cc640450a6d4f9c9cef5b58a12ee69bdda6 SHA512 516b35fc5bda80a0ea14ba682473d443fee0ff049a61d12ba73ef43c36a738fec87fa7da4a3acd2ec7bb907212e96a972744b84cf117889007061aeed06339b1 AUX jfbterm-no-kernel-headers.patch 421 BLAKE2B 1c69df44bfea80daefe004c9f52b40df6c8fd8c63d1775fbe57cde2331c603bd85959ea0cf7122a0c2267c3f9e5f9288b8f64f6620bb649018c5cc3783178866 SHA512 c05eb56036b8f9432c6e113c7800b9f8ed895d58fd77e7db75b84cd7c8015200122f8cdfe9d3391feee7a010a8694a65b815b621ebfe03a8b6d7d905c9d29ff7 @@ -5,4 +7,5 @@ AUX jfbterm-sigchld-debian.patch 397 BLAKE2B a3312e88a7d47358f191b140da419b2baef AUX jfbterm-wrong-inline-gcc5.patch 589 BLAKE2B 49fabf5b4e8780f161caf59c5a51a0734f870e5c42c64e063326b926b36d91a3fa9b369d42b57e5f2de881e20f70f9a6c34ba0cf1b4595f6cb1c55e1fa6270d9 SHA512 1fe0eac425ed5ffe18fb6f738d72efac8a8b1aadef081a0edb12e07522ff814bc492a52b9d2102a7a966f8f1d752a14f6d19ea8633bbf2607c544873cf5cb82c DIST jfbterm-0.4.7.tar.gz 104592 BLAKE2B 3432af1598f77db4edac3be962acd086dd215e3a261ffbca3462cb8632012f6b1920c73b4590eaed4a8016a18018a80645fdaee31cca69317b4a82ffda0cbc72 SHA512 267dc777c2a296731ac7e5fb89381891e26ac119be63c8889b0e194246a3ac03b1c4b50f7d9254221c2ab201a126da46d312946845ddaad82fcc718a76472dcc EBUILD jfbterm-0.4.7-r4.ebuild 1109 BLAKE2B c201f301e0326889ce85bd80045be77c74921af9acc710d8382597f3dc227d3a05a09c3e2d00d7cebf939abaeb96e52c9d3f287149a4bdb6c158cd427041ca73 SHA512 f46cf7e9e90fabcefebe23da328f52ae9555f7ae3bcf834b846f952c37378714873a67d3a1901f073c6547e9477bd6cb536dae6422335454d04b5b4aac8da792 +EBUILD jfbterm-0.4.7-r5.ebuild 1337 BLAKE2B 03d7222c7281eddfc91aa60ca6ed90c7c344a7ea3f2962fa66c61ae0385ddeb4422d8d8d73eb828b3da1f47e7e6c378a03b72a90e080abd69e2d079a174c98dd SHA512 49c28db3debfcd3c511b82809359e64cc4f5ae1ececc4c89ab510240e347e14a9f2b4260d8fcafbf4709534d7529dc49d00337087ef3519263805232fb551ea1 MISC metadata.xml 647 BLAKE2B fb5e8521b6a4671d80a81d17812abaa65dcfe874c8fd88e93cd3b6281ea948e7fd387d8e65d4c3a3d22f27a384726b9733940383f59a0bd48ddf2ff022c27312 SHA512 1eb5871186fd72bc78a3bcc835cdf1780f1a58485eb5ed9ac5101dd5e57e4d9d778a97195b7683189222bbe8c509372843b45bc02963ce18c7ab7dbeed4b118e diff --git a/app-i18n/jfbterm/files/jfbterm-0.4.7-fonts.patch b/app-i18n/jfbterm/files/jfbterm-0.4.7-fonts.patch new file mode 100644 index 000000000000..264c0499d573 --- /dev/null +++ b/app-i18n/jfbterm/files/jfbterm-0.4.7-fonts.patch @@ -0,0 +1,15 @@ +Use portage machinery instead of package makefiles to install fonts +This does fc-cache, unlike before +https://bugs.gentoo.org/835793 +--- a/Makefile.am ++++ b/Makefile.am +@@ -22,9 +22,7 @@ + + install-exec-hook: + chown root:utmp $(DESTDIR)$(bindir)/jfbterm +- chmod ug+s $(DESTDIR)$(bindir)/jfbterm + + install-data-local: + $(INSTALL_DATA) $(srcdir)/$(JFBTERM_CONFIG_FILE) $(DESTDIR)$(sysconfdir)/$(JFBTERM_CONFIG_FILE) +- $(INSTALL_DATA) $(srcdir)/fonts/*.pcf.gz $(DESTDIR)$(datadir)/fonts/jfbterm + diff --git a/app-i18n/jfbterm/files/jfbterm-0.4.7-gettimeoftheday.patch b/app-i18n/jfbterm/files/jfbterm-0.4.7-gettimeoftheday.patch new file mode 100644 index 000000000000..f7da1afb8010 --- /dev/null +++ b/app-i18n/jfbterm/files/jfbterm-0.4.7-gettimeoftheday.patch @@ -0,0 +1,43 @@ +Man 5 utmp has instructions how to replace time with gettimeofday in utmp. +Use them. +https://bugs.gentoo.org/919295 +--- a/term.c ++++ b/term.c +@@ -248,6 +248,7 @@ + struct utmp utmp; + struct passwd *pw; + char *tn; ++ struct timeval tv; + + pw = getpwuid(util_getuid()); + tn = rindex(p->name, '/') + 1; +@@ -262,7 +263,9 @@ + tn = p->name + 5; + strncpy(utmp.ut_line, tn, sizeof(utmp.ut_line)); + strncpy(utmp.ut_user, pw->pw_name, sizeof(utmp.ut_user)); +- time(&(utmp.ut_time)); ++ gettimeofday(&tv, NULL); ++ utmp.ut_tv.tv_sec = tv.tv_sec; ++ utmp.ut_tv.tv_usec = tv.tv_usec; + pututline(&utmp); + endutent(); + } +@@ -271,6 +274,7 @@ + { + struct utmp utmp, *utp; + char *tn; ++ struct timeval tv; + + tn = rindex(p->name, '/') + 4; + memset((char *)&utmp, 0, sizeof(utmp)); +@@ -281,7 +285,9 @@ + utp->ut_type = DEAD_PROCESS; + memset(utp->ut_user, 0, sizeof(utmp.ut_user)); + utp->ut_type = DEAD_PROCESS; +- time(&(utp->ut_time)); ++ gettimeofday(&tv, NULL); ++ utp->ut_tv.tv_sec = tv.tv_sec; ++ utp->ut_tv.tv_usec = tv.tv_usec; + pututline(utp); + endutent(); + } diff --git a/app-i18n/jfbterm/jfbterm-0.4.7-r5.ebuild b/app-i18n/jfbterm/jfbterm-0.4.7-r5.ebuild new file mode 100644 index 000000000000..660159b5f6f9 --- /dev/null +++ b/app-i18n/jfbterm/jfbterm-0.4.7-r5.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools font + +DESCRIPTION="The J Framebuffer Terminal/Multilingual Enhancement with UTF-8 support" +HOMEPAGE="https://osdn.net/projects/jfbterm/" +SRC_URI="mirror://sourceforge.jp/${PN}/13501/${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="debug" + +# ncurses is runtime-onlu dependency, because program provides it's own terminfo +# gzip needed for unpacking font at runtime +RDEPEND=" + media-fonts/font-misc-misc + media-fonts/intlfonts + media-fonts/unifont + sys-libs/ncurses + app-alternatives/gzip +" + +PATCHES=( + "${FILESDIR}"/${PN}-sigchld-debian.patch + "${FILESDIR}"/${PN}-no-kernel-headers.patch + "${FILESDIR}"/${PN}-gentoo.patch + "${FILESDIR}"/${PN}-wrong-inline-gcc5.patch + "${FILESDIR}"/${PN}-automake-1.13.patch + "${FILESDIR}"/"${P}"-fonts.patch + "${FILESDIR}"/"${P}"-gettimeoftheday.patch +) + +FONT_S="${S}/fonts" +FONT_SUFFIX="pcf.gz" + +src_prepare() { + default + + eautoreconf +} + +src_configure() { + econf $(use_enable debug) +} + +src_install() { + dodir /etc + default + + mv "${ED}"/etc/${PN}.conf{.sample,} || die + + font_src_install + + doman ${PN}.{1,conf.5} + + # install example config files + docinto examples + dodoc ${PN}.conf.sample* + docompress -x /usr/share/doc/${PF}/examples +} diff --git a/app-i18n/libime/Manifest b/app-i18n/libime/Manifest index 4ce726c2c3a0..ab9642966f8f 100644 --- a/app-i18n/libime/Manifest +++ b/app-i18n/libime/Manifest @@ -1,5 +1,7 @@ +DIST libime-1.1.10_dict.tar.zst 49587642 BLAKE2B 0a21691236c00e504cc1d3e8f853e0c0818f8c9b8e2806fc854fcafa47eb64d72760e5d3bd3739e0dfa0e2fec041498e33a854ec84e33fe43303f17c82a3c46b SHA512 9657041cbfa61a55e8f5757c044b3db9c16aad610d9174cc1529d39be596bd79dbe8e9c4a0e221f4c46cf0cf61a7dfc594d183a0c56f28d9295aae412085833f DIST libime-1.1.8_dict.tar.zst 37061630 BLAKE2B e76ee4d403bdc2ef9c9eab663f6da3f1421d5aeb7761a1ccca21acf07626f27a9f00c0a8d83cf121a782c03252bd5f0aeccb81af639ca93902bb28716a1a3afb SHA512 5fa6683dcaa92d754b87ed01989a7a98eee9d4ee642720b1ac1b0b58416a6202ca929e2593dfe59ae361afb7d311d8e238a188530ba99db7aaa3164713c95a4a DIST libime-1.1.9_dict.tar.zst 49564053 BLAKE2B f10efc9ad091b3559cf38a17ba5c6ca60e74c4bac2cb0484a7c3e849cd9cd0c4f22dbba08b3a9e1824eca917812ba5f3c24682259c986b2851333a631d80c53d SHA512 07b687c98cf0c4e8fc4852fd633ad05de58e32a3c70e58d1c0a84c8862f1843a0421c9a11a9c5653bbb8b1da37d3aee91f2207dbeed12aa49e041e9b08b8dca9 +EBUILD libime-1.1.10.ebuild 945 BLAKE2B dbde82fb74b2efa09dde50fd0ceb96c4c604973ce67d80890488b4ba201cd637ee4f97a8f03996d95a41594f1a81fdc68c7f79a05c37f8c1cc7498435279753c SHA512 a8bf319e35474769c52fdc9fa88bbcd14979c014c5ca4ca207940af807a72fdea9e73f95f1ae94288f8a6a378706efe61a21671dca117812ba97c5dd50b27ecc EBUILD libime-1.1.8.ebuild 943 BLAKE2B 6b5b320b5d6f27c5eefa75f464a2c23bd5c130f931d7aaee3d0caf305f7611e19547745a9ccfef06ac4a10f4bce2779698a7ab84d09fd6300538f0aaf780ccb8 SHA512 2ac7ac44333f9a3ba6ce08ac9c3e1f73f4d33b5672daf7e37dfe71e0969a2bcc5bf138ef25a1bddb691fc9de3c6934fe8aa20da0ffe6f41b488bfe1813ae86b6 EBUILD libime-1.1.9.ebuild 943 BLAKE2B 6b5b320b5d6f27c5eefa75f464a2c23bd5c130f931d7aaee3d0caf305f7611e19547745a9ccfef06ac4a10f4bce2779698a7ab84d09fd6300538f0aaf780ccb8 SHA512 2ac7ac44333f9a3ba6ce08ac9c3e1f73f4d33b5672daf7e37dfe71e0969a2bcc5bf138ef25a1bddb691fc9de3c6934fe8aa20da0ffe6f41b488bfe1813ae86b6 MISC metadata.xml 624 BLAKE2B 7c0e1d29bf86d256ac8ace1404f3ef8e017171cf461f861b2b681c9bb6c7c3bb639b13cbdccc506a07805ea9e23f449e22bba1ac16d3f40ecdd10b894ea0632d SHA512 8449b74e190a0acf83f4e5b0c0ed023e5a37e203a4e514074b9e8165616c43659d993e165bb170aa8902865166a7ceaf65bec04645be7b1390ddc80c2e43066a diff --git a/app-i18n/libime/libime-1.1.10.ebuild b/app-i18n/libime/libime-1.1.10.ebuild new file mode 100644 index 000000000000..6dfe77480ff2 --- /dev/null +++ b/app-i18n/libime/libime-1.1.10.ebuild @@ -0,0 +1,50 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake unpacker + +DESCRIPTION="Fcitx5 Next generation of fcitx" +HOMEPAGE="https://fcitx-im.org/" +SRC_URI="https://download.fcitx-im.org/fcitx5/libime/libime-${PV}_dict.tar.zst" + +LICENSE="LGPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="+data doc test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.5:5 + app-arch/zstd:= + dev-libs/boost:= +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig + doc? ( + app-text/doxygen + dev-texlive/texlive-fontutils + ) +" + +src_configure() { + local mycmakeargs=( + -DENABLE_DATA=$(usex data) + -DENABLE_DOC=$(usex doc) + -DENABLE_TEST=$(usex test) + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile + use doc && cmake_src_compile doc +} + +src_install() { + cmake_src_install + use doc && dodoc -r "${BUILD_DIR}"/doc/* +} diff --git a/app-i18n/librime/Manifest b/app-i18n/librime/Manifest index 67f231e6d49e..caa6eca26f5e 100644 --- a/app-i18n/librime/Manifest +++ b/app-i18n/librime/Manifest @@ -1,9 +1,7 @@ AUX librime-1.6.0-boost-1.76.patch 721 BLAKE2B 460b2e007c900b746958b93bb39e378de20f181f89fea7c7422d222ab00754347c12cf24c92ca7ae3b269127785fb3eac462541201ff7d24fe37c9b18417ca24 SHA512 7c44aba7f6cbc5bb829dc6b7f30e96fdcb8955ae1f8a3fced56860e3d68c499a82a1a5a240070663d8e298d2785d68cb5932a35c8b5a33f092acaa630ec57bde AUX librime-1.7.3-boost-1.85.patch 852 BLAKE2B 413a5c3bc1b24729b6ed58902e498b182de96f074fac67b582f033090e5a24bab78f1a26590502a490330cd39347f2cdb888ef57813a9daca049aa26d3bc2c63 SHA512 f36457cc1ad381628edb91135a5e559a05af826e8867138c1acdf29efcf0452b309a62cfd86b6a2d0a80c8b3cbd678f0ade62bd530513f31325c9d300e053160 -DIST librime-1.11.2.tar.gz 2635435 BLAKE2B 6106b6934761fd61508756bfcdfc2b892ee6b31eec9816569e9a6b96fd91cf6255f119de23dac70e8b56f06c52f7bd278d9ad2434419681a18d75e2c14b86077 SHA512 7b8ba708489d4d6bd6f71618f3c3270d07e088aae5ecdfcba5128a456dc49d3799e335b3ba386a1894ee01f5c5a51993e0a1821ff46d8addb02d0c8c4aacf5f3 DIST librime-1.12.0.tar.gz 2638566 BLAKE2B cbd734181eb80dd919a0f27d787dd5625974ed8b76e7f294308a7ee1b50ee904ac6460e3da4b3c1ec96c65dcfef011ae8dc6f6db880a21b2ab6fd2c96bfe203e SHA512 46c2d740dea5c0592266c7b3aaff1deba50ff5be6dbab48cc2fd49a5b7b0c9c28d8e0cc858e7d4845b70b7850c1e20ef559525ed3b70da9ad1bd65562f0df400 -DIST librime-1.7.3.tar.gz 2859513 BLAKE2B 834622860cdc3038d1b983f476bca70f211dfbc3bc2b565a998163e22688841ee3a0c7f9a64bce285e2f3f5b5a9a802bd5506f17904ccb3291babf80d4748fb5 SHA512 8767d17c3d14a5a1bbb8269fab1627b907de72c288b362fdbc6191223937da21e8b18471b4ae8f83ce5afc0ec5c3ab12fbcb49930eb9969c1764c7390d9ee4b0 -EBUILD librime-1.11.2.ebuild 1040 BLAKE2B 0d1e1ed29a488dd34e85fb75fc702a209b9ace807bf9d0228b8751c3a02bac044820a319999f20805514a4cf817070946ba98c8a455f87e330e51b5f4050a1ec SHA512 831f1a29df757ef2de02fa75db92e7aa3053e8aa96e8cbc2c86fc023e1eb475035540e8f82db43b22c014034ee240312736a6561528cf333bbd1964426877f52 +DIST librime-1.13.0.tar.gz 2639547 BLAKE2B 4698affc24c60a2e54cc830d78517f8f334c91051a72d49341f38e42d1e1da9be0d9e82007b85a554c3cd0883f698ab81ad3d3f7136704e353df9595cb89f485 SHA512 0b9d4c1ee11af4628616003e38b5c6ed66e16b0c353f16b3fc6cf419d99787fb78bf82b027ffdfb16990c84828df166efd61f4a7e2b1c8627bc3a3d5b7c5b557 EBUILD librime-1.12.0.ebuild 1063 BLAKE2B 03125c1b9a545485e9537989e2f7041b668ebd7ae35b8f0fe62b8b751eeda7f1e9fc2d101faa334f5da8754b7e0b96f7ed016e34e3351460fae3d93e698fd7bd SHA512 3286c9e0cde4f62e63736f2873d084bbde50c1c235d9b4c2534c6446687cdf5af37f1853f674736311fb855795c007f9df6fafdb31afd03e3e15198e3fdcfbba -EBUILD librime-1.7.3-r1.ebuild 1649 BLAKE2B 937f4df7a0b33ccef510583ce4d02e33d11229fb6a3c596be98e1ad28140fc072cd2bca4983b67abf92bfe2dc1ce749be757664c1bb7f986214afd750bb7e0e3 SHA512 4b1ce5d97080d7a261f488cb2cc4a341ef1d52b28c9e1910d714469d56eae52685632b1ed4b0289847ef45fcbe728b8fdda8a18e4dae75ddde84e79ad2f66f12 +EBUILD librime-1.13.0.ebuild 1068 BLAKE2B 1402079629bf1eba45582d82153a7725e78a7dc2f498c90d3fe8cf1b517cf24064d4ab6b9e5ceeeb9c2437cb2fbf7c749d8260b76b83a7135f3a8847e6795b98 SHA512 bc200761874d0eca1fe62590ad6b476ded312c949786622ee368cedcb676bd3f8b98da0b701b93ced32bd47e5360d88d6adc035f0099639bccfcb54a2af8796b MISC metadata.xml 888 BLAKE2B 895efadaefd7816746d12063f81cc54870346a0b30c27bc2a46b07d69e49fd740981f331e339bbaae51b5be3e919d10ca69f4898efa92848aa4a0785c57cb959 SHA512 a55fa07a0476b27a379129797449e2b1ebbd3ed3def619b721e58eb2f3ad34e282ce4c3f1e4684088a253ab0ef21f9a484acaaca9cc864505c0c268f0ccc7f48 diff --git a/app-i18n/librime/librime-1.11.2.ebuild b/app-i18n/librime/librime-1.11.2.ebuild deleted file mode 100644 index 32d58cec1eef..000000000000 --- a/app-i18n/librime/librime-1.11.2.ebuild +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright 2012-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake multiprocessing flag-o-matic - -DESCRIPTION="RIME (Rime Input Method Engine) core library" -HOMEPAGE="https://rime.im/ https://github.com/rime/librime" -SRC_URI="https://github.com/rime/librime/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="BSD BSD-2 Boost-1.0 MIT" -SLOT="0/1-${PV}" -KEYWORDS="amd64 ~loong x86" -IUSE="debug test" -RESTRICT="!test? ( test )" - -RDEPEND=" - app-i18n/opencc:= - dev-cpp/glog:= - dev-cpp/yaml-cpp:= - >=dev-libs/boost-1.74:= - dev-libs/leveldb:= - dev-libs/marisa -" -DEPEND="${RDEPEND} - test? ( dev-cpp/gtest ) -" - -DOCS=( CHANGELOG.md README.md ) - -src_configure() { - # for glog - if use debug; then - append-cxxflags -DDCHECK_ALWAYS_ON - local CMAKE_BUILD_TYPE=Debug - else - append-cxxflags -DNDEBUG - fi - - local mycmakeargs=( - -DBUILD_TEST=$(usex test) - -DCMAKE_BUILD_PARALLEL_LEVEL=$(makeopts_jobs) - -DENABLE_EXTERNAL_PLUGINS=ON - -DINSTALL_PRIVATE_HEADERS=ON - ) - cmake_src_configure -} diff --git a/app-i18n/librime/librime-1.13.0.ebuild b/app-i18n/librime/librime-1.13.0.ebuild new file mode 100644 index 000000000000..6a3300c65ea0 --- /dev/null +++ b/app-i18n/librime/librime-1.13.0.ebuild @@ -0,0 +1,48 @@ +# Copyright 2012-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake multiprocessing flag-o-matic + +DESCRIPTION="RIME (Rime Input Method Engine) core library" +HOMEPAGE="https://rime.im/ https://github.com/rime/librime" +SRC_URI="https://github.com/rime/librime/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD BSD-2 Boost-1.0 MIT" +SLOT="0/1-${PV}" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="debug test" +RESTRICT="!test? ( test )" + +RDEPEND=" + app-i18n/opencc:= + dev-cpp/glog:= + dev-cpp/yaml-cpp:= + >=dev-libs/boost-1.74:= + dev-libs/leveldb:= + dev-libs/marisa +" +DEPEND="${RDEPEND} + test? ( dev-cpp/gtest ) +" + +DOCS=( CHANGELOG.md README.md ) + +src_configure() { + # for glog + if use debug; then + append-cxxflags -DDCHECK_ALWAYS_ON + local CMAKE_BUILD_TYPE=Debug + else + append-cxxflags -DNDEBUG + fi + + local mycmakeargs=( + -DBUILD_TEST=$(usex test) + -DCMAKE_BUILD_PARALLEL_LEVEL=$(makeopts_jobs) + -DENABLE_EXTERNAL_PLUGINS=ON + -DINSTALL_PRIVATE_HEADERS=ON + ) + cmake_src_configure +} diff --git a/app-i18n/librime/librime-1.7.3-r1.ebuild b/app-i18n/librime/librime-1.7.3-r1.ebuild deleted file mode 100644 index f32cba65e333..000000000000 --- a/app-i18n/librime/librime-1.7.3-r1.ebuild +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2012-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="7" - -inherit cmake - -if [[ "${PV}" == "9999" ]]; then - inherit git-r3 - - EGIT_REPO_URI="https://github.com/rime/librime" - EGIT_SUBMODULES=() -fi - -DESCRIPTION="RIME (Rime Input Method Engine) core library" -HOMEPAGE="https://rime.im/ https://github.com/rime/librime" -if [[ "${PV}" == "9999" ]]; then - SRC_URI="" -else - SRC_URI="https://github.com/rime/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" -fi - -LICENSE="BSD" -SLOT="0/1-${PV}" -KEYWORDS="amd64 arm64 ~loong ppc ppc64 ~riscv x86" -IUSE="debug test" -RESTRICT="!test? ( test )" - -BDEPEND="dev-libs/capnproto:0" -RDEPEND="app-i18n/opencc:0= - >=dev-cpp/glog-0.3.5:0= - dev-cpp/yaml-cpp:0= - dev-libs/boost:= - dev-libs/capnproto:0= - dev-libs/leveldb:0= - dev-libs/marisa:0=" -DEPEND="${RDEPEND} - dev-libs/darts - dev-libs/utfcpp - x11-base/xorg-proto - test? ( dev-cpp/gtest )" - -DOCS=(CHANGELOG.md README.md) - -src_prepare() { - eapply "${FILESDIR}/${PN}-1.6.0-boost-1.76.patch" - eapply "${FILESDIR}/${PN}-1.7.3-boost-1.85.patch" - - # Use headers of dev-libs/darts, dev-libs/utfcpp and x11-base/xorg-proto. - sed -e "/\${PROJECT_SOURCE_DIR}\/thirdparty/d" -i CMakeLists.txt || die - rm -r thirdparty || die - - cmake_src_prepare -} - -src_configure() { - local -x CXXFLAGS="${CXXFLAGS} -I${ESYSROOT}/usr/include/utf8cpp" - - if use debug; then - CXXFLAGS+=" -DDCHECK_ALWAYS_ON" - else - CXXFLAGS+=" -DNDEBUG" - fi - - local mycmakeargs=( - -DBOOST_USE_CXX11=ON - -DBUILD_TEST=$(usex test ON OFF) - -DCMAKE_DISABLE_FIND_PACKAGE_Gflags=ON - -DENABLE_EXTERNAL_PLUGINS=ON - -DINSTALL_PRIVATE_HEADERS=ON - ) - - cmake_src_configure -} diff --git a/app-i18n/opencc/Manifest b/app-i18n/opencc/Manifest index 9e65c53185b2..77d8416741bb 100644 --- a/app-i18n/opencc/Manifest +++ b/app-i18n/opencc/Manifest @@ -1,7 +1,8 @@ AUX opencc-1.1.7-fix-missing-cstdint-for-gcc-15.patch 247 BLAKE2B 3d7bc564a2143d08cd290bde2d371ca1d1cc8f7ef884455329658d9cc98165048a71bcfb3386664cc14dea5770f3434108c7af9242dca9db9de34cdfa84a2a01 SHA512 0d3cd2f4a994c0ee9a64a93ed2e5adc030502f9fed2b66584287a4542a35e7e8702b7746b263a3d3f3a2b5e3957af171440fe115ffbaecb03481d9ecd7d750dc -DIST opencc-1.1.4.tar.gz 2806887 BLAKE2B 150fd83818616de42e535f349b2574ff3319e41618e522583a57a00ab08b7f28db6e8f4fa4a0d4dbe027753b5be87065b2015542251986c6301ad441c4bf4c98 SHA512 ab8e7e6a0cc71106cf09eb32899fa8620b946a406f042d75a2444096e0b383cb1993d6c2d12cd7862e71854da4cd5893442bce51df84c32ed09fdfb4a2846f46 +AUX opencc-1.1.9-python.patch 5249 BLAKE2B bf5e9dbc7dbad22e9939304c834a34f32f5216a4dabd3016b0346741af316f1a326fc137354c2debd5d2fcf8b0fe1d06944d773f2cf2843f1cb6b2660bce66a6 SHA512 febade61cc1734db891234484893128519dffc198f80883fc4838534684f91db2a21641252615820ae9bedffce52451535ea2717a40958b80ea82590850b90ac DIST opencc-1.1.7.tar.gz 3311712 BLAKE2B 158a4ea5707ade583d326b0e4441640cbaae2ccb1c89c4ccfaeb8b8dd6f1d427a7f5fcaae7ac0bd6fca3208c65fe24577f6b6ba9c7fec1a499936ef83887d181 SHA512 26e4b12238f853b0fa91f9f0d9af7985bf04a0763185cc3b50b69ba99a2d80091b8c3160176d0d4cd348fbf1a680bfd80dc740dc60c938a256dc2dac8ef49f15 -EBUILD opencc-1.1.4.ebuild 1585 BLAKE2B d8d1d3f49e839eafa6ace24e9d65742922ccf61ee7659c2e8a9acfdf8de1fb1d4f10ad1d72784538421243db765684ed9d9b3193250f4b82f4c41d128fc2e62b SHA512 70b260dd9da2569fb0bd40a863082bf9cb55e87e6520ff5309c5fc0cb39b7acaec34297a0eeee23fdb1cd9c59856c1beb498dc338224c4421cbd75aa51fb91d8 -EBUILD opencc-1.1.7-r1.ebuild 2917 BLAKE2B 214accb22626092128a2205bb98aa8c9e9c624092cf80f0b02057d600395eba6fadf4fb2776c337067bcf119f62587a87e9c77f0df40ca3a1760eec556403420 SHA512 cd42250a2ca901da3244461be66a41101e27a6c93566a58e5efba539717a1505d234ebf51e1cca2118bc7be72fcf171751236a1b0557b34d608d654379e18e32 +DIST opencc-1.1.9.tar.gz 3422511 BLAKE2B e83fda092fafa3dc4a108c4d1d6c35cfe2e75609cd5bc2eea9c9b59ef636c876e8993b0b45291f35dd86e69f3182ddbcd775fa8d347e5e5ac89576b09a5cb901 SHA512 713cf00931d7616994eb455eef3bc893096b5cd6d42b346aa1130591752d9612891ea3ed035bd7bd4ec7df1c90425e86375f5b3337fac11663c656c79a8f33e9 +EBUILD opencc-1.1.7-r2.ebuild 2858 BLAKE2B 1415ef25b489f55b82acdde761221f482d9d002e313b8bd4b938b69a326100616ba61e724a2dfba282126832e0da5790682afa50e1b164fdc5dda18a06fe5741 SHA512 e0ea800ec231013f3514a8b4b76f86a4e89c0f83cc61f19ab148d7494e33e0a6116e0cf000da26d59660771741cc60536e543abcf8fc1216442036d0a10d2db8 EBUILD opencc-1.1.7.ebuild 1438 BLAKE2B a3f6cb414d2b0f04153b82b8145bd2a72a84dea533fcdc3a1197924ef17463ba1047a813be28e69d44976fc8f76f46a2c59c2ba3d20a2c57a9606e3b25acd963 SHA512 59c1e27e94a19ba0a89a9f759ad8ef3e9dd7ce0c33fc6c220f8b688fa9e4d0dce92101c6a5679891e8f5a4258dd505ce5acf574f39344c91d0b2a567b4b477c6 +EBUILD opencc-1.1.9.ebuild 3017 BLAKE2B eb0de6eb5231f42ddfedd5a41879a0786c855de519765ddff92039e90228310caabe45e58c3d98d89fd192f8805e99fd3518cc400cef46bf0c5ac5cae07a0b5d SHA512 66da43c14a1e3dbc92d1d55f384e2a46b75ba1501080b3359594d91c03d15a69f9a2d7a352b2714fa27b792c8673e78519767af0198f3a61a2a57e25992142d2 MISC metadata.xml 476 BLAKE2B 4f02f06aa7aca103fff825675453e36a256f130b086992df550aab3dee3c155a48667d00df171053b417b20873a6ed8f1142c9efcfdd8e0994fafa7c1aec5e0b SHA512 c1a73732105a87bf3bca8af82d027b5a0dc0b379e7f8b1fbd301ee6a1f0e986ce8db9542394fc87f885a8736d82836b574a956601bb244172912f58455f39bfb diff --git a/app-i18n/opencc/files/opencc-1.1.9-python.patch b/app-i18n/opencc/files/opencc-1.1.9-python.patch new file mode 100644 index 000000000000..442771256649 --- /dev/null +++ b/app-i18n/opencc/files/opencc-1.1.9-python.patch @@ -0,0 +1,162 @@ +From 8f3a5b4b201f091713cb4e2b1b5883a4b12d10b2 Mon Sep 17 00:00:00 2001 +From: Frost Ming +Date: Thu, 18 Jul 2024 05:32:08 +0800 +Subject: [PATCH] fix: release sdist to PyPI (#797) + +* fix: release sdist to PyPI + +* fix: add newline at file end + +* fix: ignore more files + +Signed-off-by: Frost Ming + +* fix: change the install root of cmake + +Signed-off-by: Frost Ming + +* fix: make it work for editable build as well + +Signed-off-by: Frost Ming + +* fix release script + +Signed-off-by: Frost Ming + +* fix: include files in sdist + +Signed-off-by: Frost Ming + +--------- + +Signed-off-by: Frost Ming +Co-authored-by: Carbo Kuo +--- + .github/workflows/python.yml | 10 ++++---- + .gitignore | 1 + + MANIFEST.in | 9 +++++++ + Makefile | 6 ++--- + pyproject.toml | 3 +++ + python/opencc/.gitignore | 1 + + python/opencc/clib/__init__.py | 1 - + release-pypi-linux.sh | 8 +++---- + release-pypi-macos.sh | 6 ++--- + release-pypi-windows.cmd | 6 ++--- + setup.py | 43 +++++++++------------------------- + 11 files changed, 43 insertions(+), 51 deletions(-) + create mode 100644 MANIFEST.in + create mode 100644 pyproject.toml + +diff --git a/setup.py b/setup.py +index a7ce160d..a4bc500f 100644 +--- a/setup.py ++++ b/setup.py +@@ -9,21 +9,12 @@ + import wheel.bdist_wheel + + _this_dir = os.path.dirname(os.path.abspath(__file__)) +-_clib_dir = os.path.join(_this_dir, 'python', 'opencc', 'clib') + _build_dir = os.path.join(_this_dir, 'build', 'python') + + _cmake_file = os.path.join(_this_dir, 'CMakeLists.txt') + _author_file = os.path.join(_this_dir, 'AUTHORS') + _readme_file = os.path.join(_this_dir, 'README.md') + +-try: +- sys.path.insert(0, os.path.join(_this_dir, 'python')) +- +- import opencc # noqa +- _libopencc_built = True +-except ImportError: +- _libopencc_built = False +- + + def get_version_info(): + version_info = ['1', '0', '0'] +@@ -70,20 +61,13 @@ def get_long_description(): + return f.read().decode('utf-8') + + +-def build_libopencc(): +- if _libopencc_built: +- return # Skip building binary file ++def build_libopencc(output_path): + print('building libopencc into %s' % _build_dir) + + is_windows = sys.platform == 'win32' + + # Make build directories +- if is_windows: +- subprocess.call('md {}'.format(_build_dir), shell=True) +- subprocess.call('md {}'.format(_clib_dir), shell=True) +- else: +- subprocess.call('mkdir -p {}'.format(_build_dir), shell=True) +- subprocess.call('mkdir -p {}'.format(_clib_dir), shell=True) ++ os.makedirs(_build_dir, exist_ok=True) + + # Configure + cmake_args = [ +@@ -93,14 +77,14 @@ def build_libopencc(): + '-DENABLE_BENCHMARK:BOOL=OFF', + '-DBUILD_PYTHON:BOOL=ON', + '-DCMAKE_BUILD_TYPE=Release', +- '-DCMAKE_INSTALL_PREFIX={}'.format(_clib_dir), +- '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}'.format(_clib_dir), ++ '-DCMAKE_INSTALL_PREFIX={}'.format(output_path), ++ '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}'.format(output_path), + '-DPYTHON_EXECUTABLE={}'.format(sys.executable), + ] + + if is_windows: + cmake_args += \ +- ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE={}'.format(_clib_dir)] ++ ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE={}'.format(output_path)] + if sys.maxsize > 2**32: + cmake_args += ['-A', 'x64'] + +@@ -117,11 +101,6 @@ def build_libopencc(): + errno = subprocess.call(cmd) + assert errno == 0, 'Build failed' + +- # Empty __init__.py file has to be created +- # to make opencc.clib a module +- with open('{}/__init__.py'.format(_clib_dir), 'w'): +- pass +- + + class OpenCCExtension(setuptools.Extension, object): + def __init__(self, name, sourcedir=''): +@@ -131,8 +110,12 @@ def __init__(self, name, sourcedir=''): + + class BuildExtCommand(setuptools.command.build_ext.build_ext, object): + def build_extension(self, ext): ++ if self.inplace: ++ output_path = os.path.join(_this_dir, 'python', 'opencc', 'clib') ++ else: ++ output_path = os.path.abspath(os.path.join(self.build_lib, 'opencc', 'clib')) + if isinstance(ext, OpenCCExtension): +- build_libopencc() ++ build_libopencc(output_path) + else: + super(BuildExtCommand, self).build_extension(ext) + +@@ -157,7 +140,7 @@ def _determine_platform_tag(): + return 'macosx-11.0-{}'.format(machine) + else: + raise NotImplementedError +- ++ + if os.name == 'posix': + _, _, _, _, machine = os.uname() + return 'manylinux2014-{}'.format(machine) +@@ -190,10 +173,6 @@ def initialize_options(self): + + packages=packages, + package_dir={'opencc': 'python/opencc'}, +- package_data={str('opencc'): [ +- 'clib/opencc_clib*', +- 'clib/share/opencc/*', +- ]}, + ext_modules=[OpenCCExtension('opencc.clib.opencc_clib', 'python')], + cmdclass={ + 'build_ext': BuildExtCommand, diff --git a/app-i18n/opencc/opencc-1.1.4.ebuild b/app-i18n/opencc/opencc-1.1.4.ebuild deleted file mode 100644 index 9c8761e44dc2..000000000000 --- a/app-i18n/opencc/opencc-1.1.4.ebuild +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 2010-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" -PYTHON_COMPAT=( python3_{9..11} ) - -inherit cmake python-any-r1 - -if [[ "${PV}" == "9999" ]]; then - inherit git-r3 - - EGIT_REPO_URI="https://github.com/BYVoid/OpenCC" -fi - -DESCRIPTION="Library for conversion between Traditional and Simplified Chinese characters" -HOMEPAGE="https://github.com/BYVoid/OpenCC" -if [[ "${PV}" == "9999" ]]; then - SRC_URI="" -else - SRC_URI="https://github.com/BYVoid/OpenCC/archive/ver.${PV}.tar.gz -> ${P}.tar.gz" -fi - -LICENSE="Apache-2.0" -SLOT="0/1.1" -KEYWORDS="amd64 arm64 ~hppa ~loong ppc ppc64 ~riscv sparc x86" -IUSE="doc test" -RESTRICT="!test? ( test )" - -BDEPEND="${PYTHON_DEPS} - doc? ( app-text/doxygen )" -DEPEND="dev-cpp/tclap - dev-libs/darts - dev-libs/marisa:0= - dev-libs/rapidjson - test? ( - dev-cpp/gtest - !hppa? ( !sparc? ( dev-cpp/benchmark ) ) - )" -RDEPEND="dev-libs/marisa:0=" - -if [[ "${PV}" != "9999" ]]; then - S="${WORKDIR}/OpenCC-ver.${PV}" -fi - -DOCS=(AUTHORS NEWS.md README.md) - -src_prepare() { - rm -r deps || die - - cmake_src_prepare - - sed -e "s:\${DIR_SHARE_OPENCC}/doc:share/doc/${PF}:" -i doc/CMakeLists.txt || die -} - -src_configure() { - local mycmakeargs=( - -DBUILD_DOCUMENTATION=$(usex doc ON OFF) - -DENABLE_BENCHMARK=$(if use test && has_version -d dev-cpp/benchmark; then echo ON; else echo OFF; fi) - -DENABLE_GTEST=$(usex test ON OFF) - -DUSE_SYSTEM_DARTS=ON - -DUSE_SYSTEM_GOOGLE_BENCHMARK=ON - -DUSE_SYSTEM_GTEST=ON - -DUSE_SYSTEM_MARISA=ON - -DUSE_SYSTEM_RAPIDJSON=ON - -DUSE_SYSTEM_TCLAP=ON - ) - - cmake_src_configure -} diff --git a/app-i18n/opencc/opencc-1.1.7-r1.ebuild b/app-i18n/opencc/opencc-1.1.7-r1.ebuild deleted file mode 100644 index eabc31068ad5..000000000000 --- a/app-i18n/opencc/opencc-1.1.7-r1.ebuild +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 2010-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..13} ) -DISTUTILS_EXT=1 -DISTUTILS_OPTIONAL=1 -DISTUTILS_SINGLE_IMPL=1 -DISTUTILS_USE_PEP517=setuptools - -inherit cmake distutils-r1 - -DESCRIPTION="Library for conversion between Traditional and Simplified Chinese characters" -HOMEPAGE="https://github.com/BYVoid/OpenCC" -SRC_URI="https://github.com/BYVoid/OpenCC/archive/ver.${PV}.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/OpenCC-ver.${PV}" - -LICENSE="Apache-2.0" -SLOT="0/1.1" -KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" -IUSE="doc python test" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" -RESTRICT="!test? ( test )" - -RDEPEND="dev-libs/marisa - python? ( ${PYTHON_DEPS} ) -" -DEPEND="${RDEPEND} - dev-cpp/tclap - dev-libs/darts - dev-libs/rapidjson -" -BDEPEND="${PYTHON_DEPS} - doc? ( app-text/doxygen ) - python? ( - ${DISTUTILS_DEPS} - app-admin/chrpath - $(python_gen_cond_dep 'dev-python/pybind11[${PYTHON_USEDEP}]') - test? ( $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') ) - ) - test? ( - dev-cpp/gtest - !hppa? ( !sparc? ( dev-cpp/benchmark ) ) - ) -" - -DOCS=( AUTHORS NEWS.md README.md ) - -PATCHES=( - "${FILESDIR}/${P}-fix-missing-cstdint-for-gcc-15.patch" -) - -pkg_setup() { - use python && python-single-r1_pkg_setup -} - -src_prepare() { - rm -r deps || die - - sed -e "s:\${DIR_SHARE_OPENCC}/doc:share/doc/${PF}:" -i doc/CMakeLists.txt || die - - cmake_src_prepare - use python && distutils-r1_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DBUILD_DOCUMENTATION=$(usex doc) - -DBUILD_PYTHON=$(usex python) - -DENABLE_BENCHMARK=$(if use test && has_version -d dev-cpp/benchmark; then echo ON; else echo OFF; fi) - -DENABLE_GTEST=$(usex test) - -DUSE_SYSTEM_DARTS=ON - -DUSE_SYSTEM_GOOGLE_BENCHMARK=ON - -DUSE_SYSTEM_GTEST=ON - -DUSE_SYSTEM_MARISA=ON - -DUSE_SYSTEM_PYBIND11=ON - -DUSE_SYSTEM_RAPIDJSON=ON - -DUSE_SYSTEM_TCLAP=ON - ) - - cmake_src_configure - use python && distutils-r1_src_configure -} - -src_compile() { - cmake_src_compile - if use python; then - cp "${BUILD_DIR}"/opencc_clib.*.so python/opencc/clib/ - distutils-r1_src_compile - fi -} - -python_test() { - epytest -} - -src_test() { - cmake_src_test - if use python; then - cd "${BUILD_DIR}_${EPYTHON}/install/usr/lib/${EPYTHON}/site-packages/opencc/clib" || die - mkdir -p share/opencc || die - cp "${S}/data/config"/*.json share/opencc/ || die - pushd "${S}" || die - - distutils-r1_src_test - - popd || die - rm -r share/ || die - fi -} - -src_install() { - cmake_src_install - if use python; then - distutils-r1_src_install - - # Hack to make opencc's python binding to use system opencc's configs - dodir "/usr/lib/${EPYTHON}/site-packages/opencc/clib/share" - dosym -r /usr/share/opencc "/usr/lib/${EPYTHON}/site-packages/opencc/clib/share/opencc" - - # Remove insecure RPATH - chrpath --delete "${ED}/usr/lib/${EPYTHON}/site-packages/opencc/clib"/*.so || die - fi -} diff --git a/app-i18n/opencc/opencc-1.1.7-r2.ebuild b/app-i18n/opencc/opencc-1.1.7-r2.ebuild new file mode 100644 index 000000000000..7c8387fd815f --- /dev/null +++ b/app-i18n/opencc/opencc-1.1.7-r2.ebuild @@ -0,0 +1,121 @@ +# Copyright 2010-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +DISTUTILS_EXT=1 +DISTUTILS_OPTIONAL=1 +DISTUTILS_SINGLE_IMPL=1 +DISTUTILS_USE_PEP517=setuptools + +inherit cmake distutils-r1 + +DESCRIPTION="Library for conversion between Traditional and Simplified Chinese characters" +HOMEPAGE="https://github.com/BYVoid/OpenCC" +SRC_URI="https://github.com/BYVoid/OpenCC/archive/ver.${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/OpenCC-ver.${PV}" + +LICENSE="Apache-2.0" +SLOT="0/1.1" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="doc python test" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" +RESTRICT="!test? ( test )" + +RDEPEND="dev-libs/marisa + python? ( ${PYTHON_DEPS} ) +" +DEPEND="${RDEPEND} + dev-cpp/tclap + dev-libs/darts + dev-libs/rapidjson +" +BDEPEND="${PYTHON_DEPS} + doc? ( app-text/doxygen ) + python? ( + ${DISTUTILS_DEPS} + app-admin/chrpath + $(python_gen_cond_dep 'dev-python/pybind11[${PYTHON_USEDEP}]') + test? ( $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') ) + ) + test? ( + dev-cpp/gtest + !hppa? ( !sparc? ( dev-cpp/benchmark ) ) + ) +" + +DOCS=( AUTHORS NEWS.md README.md ) + +PATCHES=( + "${FILESDIR}/${P}-fix-missing-cstdint-for-gcc-15.patch" +) + +src_prepare() { + rm -r deps || die + + sed -e "s:\${DIR_SHARE_OPENCC}/doc:share/doc/${PF}:" -i doc/CMakeLists.txt || die + + cmake_src_prepare + use python && distutils-r1_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DBUILD_DOCUMENTATION=$(usex doc) + -DBUILD_PYTHON=$(usex python) + -DENABLE_BENCHMARK=$(if use test && has_version -d dev-cpp/benchmark; then echo ON; else echo OFF; fi) + -DENABLE_GTEST=$(usex test) + -DUSE_SYSTEM_DARTS=ON + -DUSE_SYSTEM_GOOGLE_BENCHMARK=ON + -DUSE_SYSTEM_GTEST=ON + -DUSE_SYSTEM_MARISA=ON + -DUSE_SYSTEM_PYBIND11=ON + -DUSE_SYSTEM_RAPIDJSON=ON + -DUSE_SYSTEM_TCLAP=ON + ) + + cmake_src_configure + use python && distutils-r1_src_configure +} + +src_compile() { + cmake_src_compile + if use python; then + cp "${BUILD_DIR}"/opencc_clib.*.so python/opencc/clib/ + distutils-r1_src_compile + fi +} + +python_test() { + epytest +} + +src_test() { + cmake_src_test + if use python; then + cd "${BUILD_DIR}_${EPYTHON}/install/usr/lib/${EPYTHON}/site-packages/opencc/clib" || die + mkdir -p share/opencc || die + cp "${S}/data/config"/*.json share/opencc/ || die + pushd "${S}" || die + + distutils-r1_src_test + + popd || die + rm -r share/ || die + fi +} + +src_install() { + cmake_src_install + if use python; then + distutils-r1_src_install + + # Hack to make opencc's python binding to use system opencc's configs + dodir "/usr/lib/${EPYTHON}/site-packages/opencc/clib/share" + dosym -r /usr/share/opencc "/usr/lib/${EPYTHON}/site-packages/opencc/clib/share/opencc" + + # Remove insecure RPATH + chrpath --delete "${ED}/usr/lib/${EPYTHON}/site-packages/opencc/clib"/*.so || die + fi +} diff --git a/app-i18n/opencc/opencc-1.1.9.ebuild b/app-i18n/opencc/opencc-1.1.9.ebuild new file mode 100644 index 000000000000..df2e04117895 --- /dev/null +++ b/app-i18n/opencc/opencc-1.1.9.ebuild @@ -0,0 +1,122 @@ +# Copyright 2010-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +DISTUTILS_EXT=1 +DISTUTILS_OPTIONAL=1 +DISTUTILS_SINGLE_IMPL=1 +DISTUTILS_USE_PEP517=setuptools + +inherit cmake distutils-r1 + +DESCRIPTION="Library for conversion between Traditional and Simplified Chinese characters" +HOMEPAGE="https://github.com/BYVoid/OpenCC" +SRC_URI="https://github.com/BYVoid/OpenCC/archive/ver.${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/OpenCC-ver.${PV}" + +LICENSE="Apache-2.0" +SLOT="0/1.1" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="doc python test" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" +RESTRICT="!test? ( test )" + +RDEPEND="dev-libs/marisa + python? ( ${PYTHON_DEPS} ) +" +DEPEND="${RDEPEND} + dev-cpp/tclap + dev-libs/darts + dev-libs/rapidjson +" +BDEPEND="${PYTHON_DEPS} + doc? ( app-text/doxygen ) + python? ( + ${DISTUTILS_DEPS} + app-admin/chrpath + $(python_gen_cond_dep 'dev-python/pybind11[${PYTHON_USEDEP}]') + test? ( $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') ) + ) + test? ( + dev-cpp/gtest + !hppa? ( !sparc? ( dev-cpp/benchmark ) ) + ) +" + +DOCS=( AUTHORS NEWS.md README.md ) + +src_prepare() { + # as of opencc 1.1.8 there is no clean way to disable duplicated building of the clib again. + # plus, the installation is broken as well. + # let's revert the offending commit for now. + eapply -R "${FILESDIR}/${P}-python.patch" + + rm -r deps || die + + sed -e "s:\${DIR_SHARE_OPENCC}/doc:share/doc/${PF}:" -i doc/CMakeLists.txt || die + + cmake_src_prepare + use python && distutils-r1_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DBUILD_DOCUMENTATION=$(usex doc) + -DBUILD_PYTHON=$(usex python) + -DENABLE_BENCHMARK=$(if use test && has_version -d dev-cpp/benchmark; then echo ON; else echo OFF; fi) + -DENABLE_GTEST=$(usex test) + -DUSE_SYSTEM_DARTS=ON + -DUSE_SYSTEM_GOOGLE_BENCHMARK=ON + -DUSE_SYSTEM_GTEST=ON + -DUSE_SYSTEM_MARISA=ON + -DUSE_SYSTEM_PYBIND11=ON + -DUSE_SYSTEM_RAPIDJSON=ON + -DUSE_SYSTEM_TCLAP=ON + ) + + cmake_src_configure + use python && distutils-r1_src_configure +} + +src_compile() { + cmake_src_compile + if use python; then + cp "${BUILD_DIR}"/opencc_clib.*.so python/opencc/clib/ + distutils-r1_src_compile + fi +} + +python_test() { + epytest +} + +src_test() { + cmake_src_test + if use python; then + cd "${BUILD_DIR}_${EPYTHON}/install/usr/lib/${EPYTHON}/site-packages/opencc/clib" || die + mkdir -p share/opencc || die + cp "${S}/data/config"/*.json share/opencc/ || die + pushd "${S}" || die + + distutils-r1_src_test + + popd || die + rm -r share/ || die + fi +} + +src_install() { + cmake_src_install + if use python; then + distutils-r1_src_install + + # Hack to make opencc's python binding to use system opencc's configs + dodir "/usr/lib/${EPYTHON}/site-packages/opencc/clib/share" + dosym -r /usr/share/opencc "/usr/lib/${EPYTHON}/site-packages/opencc/clib/share/opencc" + + # Remove insecure RPATH + chrpath --delete "${ED}/usr/lib/${EPYTHON}/site-packages/opencc/clib"/*.so || die + fi +} diff --git a/app-i18n/rime-data/Manifest b/app-i18n/rime-data/Manifest index bff9d1700b0e..8d846acd5069 100644 --- a/app-i18n/rime-data/Manifest +++ b/app-i18n/rime-data/Manifest @@ -1,44 +1,66 @@ DIST rime-array-1.0.20240624.tar.gz 1721033 BLAKE2B 5bce47a0d78252a43934c4a4af83df7a8323af40411a765369aedac5bcb0da8f290e3a236b821aee33681a8ce89794586e9252a683f3ab2e25ea9459693319f1 SHA512 9999ec3bd3865c1a9d4bb35ba195bdd9dd3317701b3c693359faa67fdf41b0a1dc827124ec25b6f12b4281e155bad874a75d25cf67c52f33fecc5d8f426970ce DIST rime-array-1.0.20241201.tar.gz 1721033 BLAKE2B 5bce47a0d78252a43934c4a4af83df7a8323af40411a765369aedac5bcb0da8f290e3a236b821aee33681a8ce89794586e9252a683f3ab2e25ea9459693319f1 SHA512 9999ec3bd3865c1a9d4bb35ba195bdd9dd3317701b3c693359faa67fdf41b0a1dc827124ec25b6f12b4281e155bad874a75d25cf67c52f33fecc5d8f426970ce +DIST rime-array-1.0.20250124.tar.gz 1721033 BLAKE2B 5bce47a0d78252a43934c4a4af83df7a8323af40411a765369aedac5bcb0da8f290e3a236b821aee33681a8ce89794586e9252a683f3ab2e25ea9459693319f1 SHA512 9999ec3bd3865c1a9d4bb35ba195bdd9dd3317701b3c693359faa67fdf41b0a1dc827124ec25b6f12b4281e155bad874a75d25cf67c52f33fecc5d8f426970ce DIST rime-bopomofo-1.0.20240624.tar.gz 5985 BLAKE2B 01b43029f35a392e363bbf60e0708651122dc14f2aaf6c103292e571a06ebdd804fc3097e0b0f874b66efadeff6c0d521a7ee3c640111b6054e318eeb6d84ae7 SHA512 106a2897ac409b12e5a9aee35bed31e6bd76e4c2cb5caed5d201e03891b316fe42e279c72e5a3b06fe575ea2e897903986fcab9401933b7dfc4d47064be01bce DIST rime-bopomofo-1.0.20241201.tar.gz 5985 BLAKE2B 01b43029f35a392e363bbf60e0708651122dc14f2aaf6c103292e571a06ebdd804fc3097e0b0f874b66efadeff6c0d521a7ee3c640111b6054e318eeb6d84ae7 SHA512 106a2897ac409b12e5a9aee35bed31e6bd76e4c2cb5caed5d201e03891b316fe42e279c72e5a3b06fe575ea2e897903986fcab9401933b7dfc4d47064be01bce +DIST rime-bopomofo-1.0.20250124.tar.gz 5985 BLAKE2B 01b43029f35a392e363bbf60e0708651122dc14f2aaf6c103292e571a06ebdd804fc3097e0b0f874b66efadeff6c0d521a7ee3c640111b6054e318eeb6d84ae7 SHA512 106a2897ac409b12e5a9aee35bed31e6bd76e4c2cb5caed5d201e03891b316fe42e279c72e5a3b06fe575ea2e897903986fcab9401933b7dfc4d47064be01bce DIST rime-cangjie-1.0.20240624.tar.gz 392488 BLAKE2B 8c8ed40265e20793571b1c615134d293295fddd17ce48df9054d61b36b3a572d7546dbc5368f9f63efae73bf3572f9f2e9cad447b16eb2d3fd207e931e0c703d SHA512 b56c1363413fe6579cac994c0a2c12d75fe9efb842c4536a0962f64bb197009ab1f5071a204a2bc7983d0e06ecd6934e4db72a157a2cda76294b98d304715cad DIST rime-cangjie-1.0.20241201.tar.gz 392488 BLAKE2B 8c8ed40265e20793571b1c615134d293295fddd17ce48df9054d61b36b3a572d7546dbc5368f9f63efae73bf3572f9f2e9cad447b16eb2d3fd207e931e0c703d SHA512 b56c1363413fe6579cac994c0a2c12d75fe9efb842c4536a0962f64bb197009ab1f5071a204a2bc7983d0e06ecd6934e4db72a157a2cda76294b98d304715cad +DIST rime-cangjie-1.0.20250124.tar.gz 392488 BLAKE2B 8c8ed40265e20793571b1c615134d293295fddd17ce48df9054d61b36b3a572d7546dbc5368f9f63efae73bf3572f9f2e9cad447b16eb2d3fd207e931e0c703d SHA512 b56c1363413fe6579cac994c0a2c12d75fe9efb842c4536a0962f64bb197009ab1f5071a204a2bc7983d0e06ecd6934e4db72a157a2cda76294b98d304715cad DIST rime-cantonese-1.0.20241201.tar.gz 4809139 BLAKE2B 6d03de0d209ecce49e9335d22bea7323af0b08bf6828966351c40eabd120d2ff5a2d7ad3c184388a2fc760411ac74b782f370f147fd9def1c75a82a50f16755f SHA512 677c6f4762838684bf037f0b6fcbeedbb24f62a4d86687f1379753fd9b65a227d5191e4458d58cff8bab71fe8790dc1a4d5276ab2523628502ed93fa5aa00f71 +DIST rime-cantonese-1.0.20250124.tar.gz 4808499 BLAKE2B 229519f301dabb2952f207787c36b17762ccc982a963e1ef686981ed933c55c72b64929f37f56744eb63e943479637cfeb9b0a923b22a9180ea218cc1b0eb91c SHA512 590ab5a0b629090130d257a92f6f3286239d4433930a3dac9719ad3f18bef9c5a2a56e739c0d43cbebc6c4dfdcd09b3f908e8f496bf5e49acfd01925d6eab406 DIST rime-combo-pinyin-1.0.20240624.tar.gz 21271 BLAKE2B 64d408746abd7e9055a063c02488333c4e725238c58417a1332520aa04eaa2cae286dcea46ef3547335039ee92ee109c89c050cc1317610ecb0e045de390014d SHA512 bd446c27c63701657e6277930292bcc5cea210a5a42bb5802abd0b7fbc8043c87fc7eaf8c2d2c23838516aa6de5ddfb3fd0257b49a47d2dc8de263b2bc076429 DIST rime-combo-pinyin-1.0.20241201.tar.gz 23075 BLAKE2B b3e874e5c45ca0b15f2b7068f16eb5b1532da785a366224c6a133e2bcba04db5f2a4676c82fb4d681c769501bddd8a012843dafbdc3a86baa898b2ad36fa352c SHA512 beb8a99826587d11b3ba3c49a554922d8fb4a71ee4df641a284b513a97c5e393fdb99186e82594aed3dff3162f26a288fbf994648fa2dcfbe365226fcde34e9b +DIST rime-combo-pinyin-1.0.20250124.tar.gz 23225 BLAKE2B d3998722bbcbbe7a762d40660cb7bdefebd89c817a418f8e5a154393911240ae44c300d7d8482823a9dfecdf8fd2f64ed18e72fab884f8d3ea3a447d5618ba6f SHA512 9d5c00b1fe209533cabb21201a3d6a745852b7d1477c18ddb14816aaa9c34766df697d76a936108915c3c23cc673ba26bbeda3baa8ebdadda39604b4552a781f DIST rime-double-pinyin-1.0.20240624.tar.gz 16998 BLAKE2B c8c93eee98e896d69e5b677a8eb38979e74ab8bbefdf705aa2ab9afd8f30bea3a3156dab994e95a33313e7fc4e2af4a25b7eade32c8f8bb009f7c955e1215e2a SHA512 2ab98a7b804b2fa3d0a59fd0b9a8b79316caa3a2da070766359d550d1d56edf85d55874044409780a2a21d729a2a7e834fdcf9419eb0d34252acbdef304a5c40 DIST rime-double-pinyin-1.0.20241201.tar.gz 16998 BLAKE2B c8c93eee98e896d69e5b677a8eb38979e74ab8bbefdf705aa2ab9afd8f30bea3a3156dab994e95a33313e7fc4e2af4a25b7eade32c8f8bb009f7c955e1215e2a SHA512 2ab98a7b804b2fa3d0a59fd0b9a8b79316caa3a2da070766359d550d1d56edf85d55874044409780a2a21d729a2a7e834fdcf9419eb0d34252acbdef304a5c40 +DIST rime-double-pinyin-1.0.20250124.tar.gz 16998 BLAKE2B c8c93eee98e896d69e5b677a8eb38979e74ab8bbefdf705aa2ab9afd8f30bea3a3156dab994e95a33313e7fc4e2af4a25b7eade32c8f8bb009f7c955e1215e2a SHA512 2ab98a7b804b2fa3d0a59fd0b9a8b79316caa3a2da070766359d550d1d56edf85d55874044409780a2a21d729a2a7e834fdcf9419eb0d34252acbdef304a5c40 DIST rime-emoji-1.0.20240624.tar.gz 50946 BLAKE2B 00626480f5acbd8144fafbf3a6ece3e90f564da0d84d08f450dffce23444fb15985d0821e84a67946503b1532c418ac6f525d299d17ffaddb62cd4bfb1de91ff SHA512 b4fb707c964a421186fd8d46b6f676590dcc3d176fb308d360dc9ddb3fb1e8dd52bd2b7efb3378b3723d9f00adefb5918f6bec6925c7e2b43d46e4c9ebc9374a DIST rime-emoji-1.0.20241201.tar.gz 50946 BLAKE2B 91a96e7b4913ef2a380c1e98fc77b5289094f4efafa31fab1e64f5fc5a22082f89ebb27953e1cc1b84dfd8d9d97c92e6412560bc513a0eaa2ca72d787da89ac8 SHA512 b4785f4909e270a0cc40a2706a20ac9193358f901cba48bb4c3f5e0dcf67688e18e99101aa7e5945e73e5c9b73c71113216c2c91ad5d6eab1885943c6ca7f839 +DIST rime-emoji-1.0.20250124.tar.gz 50946 BLAKE2B 91a96e7b4913ef2a380c1e98fc77b5289094f4efafa31fab1e64f5fc5a22082f89ebb27953e1cc1b84dfd8d9d97c92e6412560bc513a0eaa2ca72d787da89ac8 SHA512 b4785f4909e270a0cc40a2706a20ac9193358f901cba48bb4c3f5e0dcf67688e18e99101aa7e5945e73e5c9b73c71113216c2c91ad5d6eab1885943c6ca7f839 DIST rime-essay-1.0.20240624.tar.gz 1772231 BLAKE2B 0dad76ef2474ba1cee66b7eea758fef9226c3f9748a15f58f5c8ac4d9224fab8558e1a4c0efc892f5de16293f79adef056af8b19bc239b3cd8e8fc43b9bbedf5 SHA512 6f12f9adcca6a19ff38731d65c81d40a2aba5ad11c3794992d71e7ee985d7554637204abd340dab868a44a9c2f0290fc13fb9e6eba5d2f14200eaf8e84f27936 DIST rime-essay-1.0.20241201.tar.gz 1772231 BLAKE2B 0dad76ef2474ba1cee66b7eea758fef9226c3f9748a15f58f5c8ac4d9224fab8558e1a4c0efc892f5de16293f79adef056af8b19bc239b3cd8e8fc43b9bbedf5 SHA512 6f12f9adcca6a19ff38731d65c81d40a2aba5ad11c3794992d71e7ee985d7554637204abd340dab868a44a9c2f0290fc13fb9e6eba5d2f14200eaf8e84f27936 +DIST rime-essay-1.0.20250124.tar.gz 2578130 BLAKE2B f7a1ed0336a1df820ae73daab93348077fdfd80c230410559ffb4d0250fc045e771a09319c19a20136290a5baf95f0603d7751ce98373c4fd1f70f2ec6457c35 SHA512 e072350b3e304d79cf20c69f9fcde944f4a38071973f193bac577ab2cb476ab3b274cdf18ca61e1f29bd779daab89be517e984ebc00b863e4e01a6d25dd0a882 DIST rime-ipa-1.0.20240624.tar.gz 9510 BLAKE2B e271911cb4d066ff4b7813be062f9778bb04469b15268bdc93530f664a75ee723007ba806772092fd30302fea7a610b879b2a0598ec424a90d4c14e446a0ba87 SHA512 06cd5fb467e6694458bd67505fac7a496c490e9aabf8ad92ec881ac354e63dfaf2f9a4dd216960b260d62183cade49d267444ac340466ef03ce2ab7a9646b9f1 DIST rime-ipa-1.0.20241201.tar.gz 9510 BLAKE2B e271911cb4d066ff4b7813be062f9778bb04469b15268bdc93530f664a75ee723007ba806772092fd30302fea7a610b879b2a0598ec424a90d4c14e446a0ba87 SHA512 06cd5fb467e6694458bd67505fac7a496c490e9aabf8ad92ec881ac354e63dfaf2f9a4dd216960b260d62183cade49d267444ac340466ef03ce2ab7a9646b9f1 +DIST rime-ipa-1.0.20250124.tar.gz 9510 BLAKE2B e271911cb4d066ff4b7813be062f9778bb04469b15268bdc93530f664a75ee723007ba806772092fd30302fea7a610b879b2a0598ec424a90d4c14e446a0ba87 SHA512 06cd5fb467e6694458bd67505fac7a496c490e9aabf8ad92ec881ac354e63dfaf2f9a4dd216960b260d62183cade49d267444ac340466ef03ce2ab7a9646b9f1 DIST rime-luna-pinyin-1.0.20240624.tar.gz 395899 BLAKE2B 8c165f6e3537481ef4c913babd6264ac4d6e90cbd4f80380a3f91f5438061569fd6d3f8b77bed0caace4e537e176c000c61e41c6bcfb0d6654c1e81b8d6d3aa3 SHA512 504e218d1e29df04de991afeedb2811fd27989438c9bfb9b404daa6a82834df7071a646fc91c3dec42f9992a2f4ae7dc0fe5acf4499b3a75185f3cd36a1695b2 DIST rime-luna-pinyin-1.0.20241201.tar.gz 395822 BLAKE2B 318e7fe427198777dc2afa402a135251e65f0cc3cb32519047b7e09408bb18693682ee6483de6f7271aeafb8298f620852d8de352c2d61fa3f4fedede804d6d0 SHA512 da22da589928544d68132aa0075b711bb96776278e3c4c78e732df6f9b9ee7b410105a364011988570077dac9df01fa94c4e0706c7693121546b1140ab0197fa +DIST rime-luna-pinyin-1.0.20250124.tar.gz 395840 BLAKE2B 1a00d21ad4d5c20ca8d386b10a36a71f199615999753bfeaf3640953b065679c4d102fe6436cc72f50cf84dc9116e4247b22a054bb71dc3df84d566e021b8f83 SHA512 2177143a4c213d43a1ed96427a9deb4ee88a6fe15e0dc2bcecdae6584436ff8de8692cf987a5a15c0d6cf44c993a061152532640ed05253571f2809ca69b8e5c DIST rime-middle-chinese-1.0.20240624.tar.gz 137940 BLAKE2B 72e8a0b19a432505a68bfae4d72b657216e5ddb3361a756b6b2eabde6d94c0c863a635c2bcbcca446b6363361e2add93c04dbdc161368aae75d749aa35a47506 SHA512 dabcf2683e54dcf44e6ce7a89da6b1d808a210ca20fbe131f793bb0c9d51213c3514f231b944adf4495aa8fe2a43d7ae984d83dc90fa49a0e4bd6279df9cd009 DIST rime-middle-chinese-1.0.20241201.tar.gz 137940 BLAKE2B 72e8a0b19a432505a68bfae4d72b657216e5ddb3361a756b6b2eabde6d94c0c863a635c2bcbcca446b6363361e2add93c04dbdc161368aae75d749aa35a47506 SHA512 dabcf2683e54dcf44e6ce7a89da6b1d808a210ca20fbe131f793bb0c9d51213c3514f231b944adf4495aa8fe2a43d7ae984d83dc90fa49a0e4bd6279df9cd009 +DIST rime-middle-chinese-1.0.20250124.tar.gz 137940 BLAKE2B 72e8a0b19a432505a68bfae4d72b657216e5ddb3361a756b6b2eabde6d94c0c863a635c2bcbcca446b6363361e2add93c04dbdc161368aae75d749aa35a47506 SHA512 dabcf2683e54dcf44e6ce7a89da6b1d808a210ca20fbe131f793bb0c9d51213c3514f231b944adf4495aa8fe2a43d7ae984d83dc90fa49a0e4bd6279df9cd009 DIST rime-pinyin-simp-1.0.20240624.tar.gz 545339 BLAKE2B cf428ed593db51ca9d8274293f8011229f60df41dfccaaaf01bdc0d41dfb7108c06570cb589577e5ad335ec2836ffa9cc60ef4d21e4871ec9c64e77b4cd9fb06 SHA512 4b89f9f3edd79b1220b77731eac99cf90c3496a8a09bc816ba0a40eaaae8743bd817d908492aa9ffde768b65d24a488cda558a8c8c7aa355754909420be2eead DIST rime-pinyin-simp-1.0.20241201.tar.gz 545333 BLAKE2B 96849699c1a498cdb0d8d912f6e516feae3e393e31ee201b04bd5e8ea0bfdee53bd8bce6ed2a65310fa5e67f4075e6d9c285e9227a1a845945eaf576fc5d379a SHA512 f9cf5f15a2e401b5a644a9b15233d8e2bf0503f030858dab32ba1696b57ffd970a1fad6aceeb505635ec35bb0678682b64ff2eab0f2804e1c38d9fccad815975 +DIST rime-pinyin-simp-1.0.20250124.tar.gz 545333 BLAKE2B 9871245ea78e9d1601ebc4361635fb3cab9835c8a0851f10e5d54f99ddbca1b7ddb469281e1a11a669bfd666cce824690da77422a530ac229d06460168cc487c SHA512 215401d67dfc777475a3e46b066e07df53c3e8a783b9067e6b6cb25ff0fe8c23f03b2db18e86eb9fe0febeacbe9a89bb9073610f2ae3c90a5f33e27cebb3328f DIST rime-prelude-1.0.20240624.tar.gz 18313 BLAKE2B 09e926f77abc5a4fcc55d6f6f27f1b8b2e1a69317d8cb4a2656eecd416c1b7139a0de65d7eea30afaf342566753daa2be0c88104cf2c05d78cb26d0b567c9f04 SHA512 0cf701db3ca87ed15022428ba516d939cd10d4b97cb6d4ecdafaec70399c60f9d58a4f8b96e8fb8159534514bbf4e3b2206ec0cfac094d8039c0040ce79dc093 DIST rime-prelude-1.0.20241201.tar.gz 18313 BLAKE2B 09e926f77abc5a4fcc55d6f6f27f1b8b2e1a69317d8cb4a2656eecd416c1b7139a0de65d7eea30afaf342566753daa2be0c88104cf2c05d78cb26d0b567c9f04 SHA512 0cf701db3ca87ed15022428ba516d939cd10d4b97cb6d4ecdafaec70399c60f9d58a4f8b96e8fb8159534514bbf4e3b2206ec0cfac094d8039c0040ce79dc093 +DIST rime-prelude-1.0.20250124.tar.gz 18313 BLAKE2B 09e926f77abc5a4fcc55d6f6f27f1b8b2e1a69317d8cb4a2656eecd416c1b7139a0de65d7eea30afaf342566753daa2be0c88104cf2c05d78cb26d0b567c9f04 SHA512 0cf701db3ca87ed15022428ba516d939cd10d4b97cb6d4ecdafaec70399c60f9d58a4f8b96e8fb8159534514bbf4e3b2206ec0cfac094d8039c0040ce79dc093 DIST rime-quick-1.0.20240624.tar.gz 151060 BLAKE2B 80adf8a416969d5623400b06721e5bb4dc0a972d0a0ef09e10bbb2c6dfbb7d92c89503b60d59413e425cbb097f0c2d00cbdd932372c7c664846cc8e48958c632 SHA512 d693b90b76cf3dc72e84bb378e3b1a35850bed9edec45bfb321bf800561bd03fdf34ea41bc7ca8da53b02579de111da394a6aa4493989a4a4bde2eb0e2d7d485 DIST rime-quick-1.0.20241201.tar.gz 151060 BLAKE2B 80adf8a416969d5623400b06721e5bb4dc0a972d0a0ef09e10bbb2c6dfbb7d92c89503b60d59413e425cbb097f0c2d00cbdd932372c7c664846cc8e48958c632 SHA512 d693b90b76cf3dc72e84bb378e3b1a35850bed9edec45bfb321bf800561bd03fdf34ea41bc7ca8da53b02579de111da394a6aa4493989a4a4bde2eb0e2d7d485 +DIST rime-quick-1.0.20250124.tar.gz 151060 BLAKE2B 80adf8a416969d5623400b06721e5bb4dc0a972d0a0ef09e10bbb2c6dfbb7d92c89503b60d59413e425cbb097f0c2d00cbdd932372c7c664846cc8e48958c632 SHA512 d693b90b76cf3dc72e84bb378e3b1a35850bed9edec45bfb321bf800561bd03fdf34ea41bc7ca8da53b02579de111da394a6aa4493989a4a4bde2eb0e2d7d485 DIST rime-scj-1.0.20240624.tar.gz 228601 BLAKE2B ca68ce8b08edc4c1cb5dae0d3f50a4a66adb9dd6dea49260ef4b0f14b16cb0b7b6555c89de1d332a68f8641c031ada602ebc4946851ff141b14f0fdf41f6d364 SHA512 396e8c1cb0679078afaced1bb8525446340bda02bbcc42e48ccc2414b1830439a2599e8ea2a4ae15b47fd9f488ba52eec342596f1c5efa074955f274cf69728d DIST rime-scj-1.0.20241201.tar.gz 228601 BLAKE2B ca68ce8b08edc4c1cb5dae0d3f50a4a66adb9dd6dea49260ef4b0f14b16cb0b7b6555c89de1d332a68f8641c031ada602ebc4946851ff141b14f0fdf41f6d364 SHA512 396e8c1cb0679078afaced1bb8525446340bda02bbcc42e48ccc2414b1830439a2599e8ea2a4ae15b47fd9f488ba52eec342596f1c5efa074955f274cf69728d +DIST rime-scj-1.0.20250124.tar.gz 228601 BLAKE2B ca68ce8b08edc4c1cb5dae0d3f50a4a66adb9dd6dea49260ef4b0f14b16cb0b7b6555c89de1d332a68f8641c031ada602ebc4946851ff141b14f0fdf41f6d364 SHA512 396e8c1cb0679078afaced1bb8525446340bda02bbcc42e48ccc2414b1830439a2599e8ea2a4ae15b47fd9f488ba52eec342596f1c5efa074955f274cf69728d DIST rime-soutzoe-1.0.20240624.tar.gz 37388 BLAKE2B 2eaecd629ae4b00b9ecb73eb58a77bd123906c45fa71318aa0468caefca3aa151181be7766cccc81a6aba260def897a7c58032257a517443c3da3dba91cb6996 SHA512 5141fe76deffe40a22e2c3013d6f4b47e6e65c6f652b85aa0401612a78384430f78e1031d894a735903ece9d8e319b836c9388edd05a0593f23d7961bea92a04 DIST rime-soutzoe-1.0.20241201.tar.gz 37388 BLAKE2B 2eaecd629ae4b00b9ecb73eb58a77bd123906c45fa71318aa0468caefca3aa151181be7766cccc81a6aba260def897a7c58032257a517443c3da3dba91cb6996 SHA512 5141fe76deffe40a22e2c3013d6f4b47e6e65c6f652b85aa0401612a78384430f78e1031d894a735903ece9d8e319b836c9388edd05a0593f23d7961bea92a04 +DIST rime-soutzoe-1.0.20250124.tar.gz 37388 BLAKE2B 2eaecd629ae4b00b9ecb73eb58a77bd123906c45fa71318aa0468caefca3aa151181be7766cccc81a6aba260def897a7c58032257a517443c3da3dba91cb6996 SHA512 5141fe76deffe40a22e2c3013d6f4b47e6e65c6f652b85aa0401612a78384430f78e1031d894a735903ece9d8e319b836c9388edd05a0593f23d7961bea92a04 DIST rime-stenotype-1.0.20240624.tar.gz 15311 BLAKE2B edfc0989e9a86b7664b5316270fafb2f8c3f45af6ad757a1ad89d30ce4b93aa8cb20c86f62692adabdcbd33bce67022ecaf3e1bc34ffddd2ea0b497dca9ba2c3 SHA512 4c01a70348e0e28b0b0e33f605e22e6017c9870f4e218fcc1fe36c2d480796461b3f74edb7501d78bebbaa9b05f62524c792b10c3ac42d89f39ed6a99b1426c2 DIST rime-stenotype-1.0.20241201.tar.gz 15311 BLAKE2B edfc0989e9a86b7664b5316270fafb2f8c3f45af6ad757a1ad89d30ce4b93aa8cb20c86f62692adabdcbd33bce67022ecaf3e1bc34ffddd2ea0b497dca9ba2c3 SHA512 4c01a70348e0e28b0b0e33f605e22e6017c9870f4e218fcc1fe36c2d480796461b3f74edb7501d78bebbaa9b05f62524c792b10c3ac42d89f39ed6a99b1426c2 +DIST rime-stenotype-1.0.20250124.tar.gz 15311 BLAKE2B edfc0989e9a86b7664b5316270fafb2f8c3f45af6ad757a1ad89d30ce4b93aa8cb20c86f62692adabdcbd33bce67022ecaf3e1bc34ffddd2ea0b497dca9ba2c3 SHA512 4c01a70348e0e28b0b0e33f605e22e6017c9870f4e218fcc1fe36c2d480796461b3f74edb7501d78bebbaa9b05f62524c792b10c3ac42d89f39ed6a99b1426c2 DIST rime-stroke-1.0.20240624.tar.gz 707495 BLAKE2B cc1a2f2d9621646d8c0000e015321549903d2e5bd14a37a2a078d84b0ee5e1ea022d0a006bb171c14ee77e7df3930f455715c179e9ae6301784926d86385c096 SHA512 b7d6c5a621a6c6a416da90a0bbce8d221f49be38b2d4ad7e8a0b32689129123b637256810a4f829f6cfac9c427c8b255e3983dbce6e8c1fe6be610ad2494374a DIST rime-stroke-1.0.20241201.tar.gz 707495 BLAKE2B cc1a2f2d9621646d8c0000e015321549903d2e5bd14a37a2a078d84b0ee5e1ea022d0a006bb171c14ee77e7df3930f455715c179e9ae6301784926d86385c096 SHA512 b7d6c5a621a6c6a416da90a0bbce8d221f49be38b2d4ad7e8a0b32689129123b637256810a4f829f6cfac9c427c8b255e3983dbce6e8c1fe6be610ad2494374a +DIST rime-stroke-1.0.20250124.tar.gz 707487 BLAKE2B 184f3f07d6a5a7992dbedb225c681446f6e66d988f3bba01aeca520f323103ac98e0e4c0ac71416938d6ca83aae1a2acdfc83035086b8ff3c7665e730f40744f SHA512 a859d7b47c658e8d1a4269b2f99f7ec757937a5060de2213d19e9029b15e93006988194483b238759ccaa54e0da2e9c4fb1d6e2e368eeb366f23f7e36dfe4f99 DIST rime-terra-pinyin-1.0.20240624.tar.gz 731136 BLAKE2B dee4c46d997d4af3be9bc9474bf932511bc5790e46c888c5d25a0a48a64fc06eeccb6b6e370e7732875b00360669c441222aa0bc17c74428e4186880f8603454 SHA512 5d79f299c8f5c98c0f33bd045f46aa3fc883407a23df0c0c4db14081a238c09b49b9e23d2cf9faf194c138d77b79702ce84e3e0f3a4996cf230b5c2a87d368de DIST rime-terra-pinyin-1.0.20241201.tar.gz 731136 BLAKE2B dee4c46d997d4af3be9bc9474bf932511bc5790e46c888c5d25a0a48a64fc06eeccb6b6e370e7732875b00360669c441222aa0bc17c74428e4186880f8603454 SHA512 5d79f299c8f5c98c0f33bd045f46aa3fc883407a23df0c0c4db14081a238c09b49b9e23d2cf9faf194c138d77b79702ce84e3e0f3a4996cf230b5c2a87d368de +DIST rime-terra-pinyin-1.0.20250124.tar.gz 730673 BLAKE2B 53f2b2e5f4076db40d40e9c6d7d6c45b6ae906a7e8c5f9fdbb09f384035bda9e084a96ed6e11977b4851392c87deea605886a10a449b8dc96f12b742524ebb3b SHA512 bf77828acab2452f35106296c48c09b417c70cd8e7764d72beb41adfb57d3063b866e156aac7faa5b224a0e28ad20f27d02dafdc8d517ff7055c199e5e0e093a DIST rime-wubi-1.0.20240624.tar.gz 1093293 BLAKE2B ae3551bb51824e6c4fea52a18793acf477b48b827df24ad16b24fd5265d2567a35c70f4b09082247fcce5de6f7433fc19bcf3e43f2adf2683aeac658f9f13beb SHA512 f535a15f1a52b7173b42d72fec58cbb68887be590cee1a2a6b1d883dec377d61cf17ece68f0c400dec26b55fd0ac2744d0fb835d8c9129245ddc985fa256ebb8 DIST rime-wubi-1.0.20241201.tar.gz 1093293 BLAKE2B ae3551bb51824e6c4fea52a18793acf477b48b827df24ad16b24fd5265d2567a35c70f4b09082247fcce5de6f7433fc19bcf3e43f2adf2683aeac658f9f13beb SHA512 f535a15f1a52b7173b42d72fec58cbb68887be590cee1a2a6b1d883dec377d61cf17ece68f0c400dec26b55fd0ac2744d0fb835d8c9129245ddc985fa256ebb8 +DIST rime-wubi-1.0.20250124.tar.gz 1093293 BLAKE2B ae3551bb51824e6c4fea52a18793acf477b48b827df24ad16b24fd5265d2567a35c70f4b09082247fcce5de6f7433fc19bcf3e43f2adf2683aeac658f9f13beb SHA512 f535a15f1a52b7173b42d72fec58cbb68887be590cee1a2a6b1d883dec377d61cf17ece68f0c400dec26b55fd0ac2744d0fb835d8c9129245ddc985fa256ebb8 DIST rime-wugniu-1.0.20240624.tar.gz 268955 BLAKE2B c1dc03f1e27716ee4725e031c570a67da3f2543ec760d624f19e0f40cb44089ddedd10ee226dfe4211d8f7b29c0c66db640f41794dbf09c5543f669ae132715f SHA512 257d4bd8d62dda5bce4beb39879fc46b4981590ce16d347ad3e2441f1b9bacabfe3772d8e0cf134a4a70b7dd5490e6bb6b6526e0e45d58d22730217e23407095 DIST rime-wugniu-1.0.20241201.tar.gz 268955 BLAKE2B c1dc03f1e27716ee4725e031c570a67da3f2543ec760d624f19e0f40cb44089ddedd10ee226dfe4211d8f7b29c0c66db640f41794dbf09c5543f669ae132715f SHA512 257d4bd8d62dda5bce4beb39879fc46b4981590ce16d347ad3e2441f1b9bacabfe3772d8e0cf134a4a70b7dd5490e6bb6b6526e0e45d58d22730217e23407095 +DIST rime-wugniu-1.0.20250124.tar.gz 268955 BLAKE2B c1dc03f1e27716ee4725e031c570a67da3f2543ec760d624f19e0f40cb44089ddedd10ee226dfe4211d8f7b29c0c66db640f41794dbf09c5543f669ae132715f SHA512 257d4bd8d62dda5bce4beb39879fc46b4981590ce16d347ad3e2441f1b9bacabfe3772d8e0cf134a4a70b7dd5490e6bb6b6526e0e45d58d22730217e23407095 EBUILD rime-data-1.0.20240624.ebuild 2434 BLAKE2B b0ff03435ffe15ebe0a06c5308dfb9acb20a6eb0073fef0688483e9c9a079b7b4ca74f283abfe036c0d63e5726fe51b8b534c1fe4afd293e552af20b1478d4bd SHA512 daee5217420b1782a6a784f212d5a15fde71ccd8c6bd67b3e398e4dcd48ca315f019a88462ae7c20c307c612cd77d795dcd03b3a51bca2d8af34fec5a3449ee7 EBUILD rime-data-1.0.20241201-r1.ebuild 2595 BLAKE2B 0002d4bddb959f3064c49a0a9ee97a070d2191b0edf50f6bb4beb5b20da48d0cd1f3248cb95f2f4db46201657556d4766aade8ae7ecb64a64af4585cfaaeb85d SHA512 09b6d013bf3d230ce0e1447a7cafb141606ebd750085082d0a535c8f01e4689beb7cf3371334073543b4fe450e214a796961ba0eff21ec240622c1a7f3638278 +EBUILD rime-data-1.0.20250124.ebuild 2602 BLAKE2B c1df9bedc91efe8f513443979359651601b2137452b8b47261e3fc37d5886d5513d9e10d250b46fee095e263a9765525d30f5b35f46f7dd1ee3ffda86023382d SHA512 62ba59e019b970418a7abb1270544c3dbce6c30da895ebd2c26316f7929cab99a05464a826ce613138c7f2b8cd5ce80467982fbc6a1eb7a005f015a9ba45ea0b MISC metadata.xml 1033 BLAKE2B e276e3b31e69cc5d7ffcc995169adb833fbd842858fd46f9b0574d8658431f9f573638dcf23be82a012f73562df106de761d681a11dcb261b097afce9fd67e8a SHA512 4682adffad64eb0803692c48de0d0afdd461fbc70502ccd69a96aeb843ad6b9f6125ebb93b16efcc4c6b4aed722c25aa0ba80d7dd010224a9658815343a2e583 diff --git a/app-i18n/rime-data/rime-data-1.0.20250124.ebuild b/app-i18n/rime-data/rime-data-1.0.20250124.ebuild new file mode 100644 index 000000000000..93f8c5b2e50a --- /dev/null +++ b/app-i18n/rime-data/rime-data-1.0.20250124.ebuild @@ -0,0 +1,84 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +declare -A PKGS=( + [rime-essay]=57e94707b5d64a9848d17f9107c539ad4e9b6fc7 + [rime-bopomofo]=c7618f4f5728e1634417e9d02ea50d82b71956ab + [rime-cangjie]=0ac8452eeb4abbcd8dd1f9e7314012310743285f + [rime-luna-pinyin]=d2107f46dbffbe069b10072925be3c18da40fe77 + [rime-prelude]=3803f09458072e03b9ed396692ce7e1d35c88c95 + [rime-stroke]=7c9874c6b2e0b94947653e9a7de6f99623ff27e4 + [rime-terra-pinyin]=333ec4128fa1f93924a0707da3c623ccd92a73f0 +) +declare -A PKGS_EXTRA=( + [rime-array]=557dbe38381de174fe96e53e9bf8c863a275307c + [rime-cantonese]=cb1ea1600b720743e0519dcbec3c2fc314ab4f50 + [rime-combo-pinyin]=89f521bc0a68abc06e9ce02732201b9c2a188824 + [rime-double-pinyin]=69bf85d4dfe8bac139c36abbd68d530b8b6622ea + [rime-emoji]=ca7df5f5498ccd99cc312413ceae7d13717456b8 + [rime-ipa]=22b71710e029bcb412e9197192a638ab11bc2abf + [rime-middle-chinese]=582e144e525525ac2b6c2498097d7c7919e84174 + [rime-pinyin-simp]=0c6861ef7420ee780270ca6d993d18d4101049d0 + [rime-quick]=3fe5911ba608cb2df1b6301b76ad1573bd482a76 + [rime-scj]=cab5a0858765eff0553dd685a2d61d5536e9149c + [rime-soutzoe]=beeaeca72d8e17dfd1e9af58680439e9012987dc + [rime-stenotype]=f3e9189d5ce33c55d3936cc58e39d0c88b3f0c88 + [rime-wubi]=152a0d3f3efe40cae216d1e3b338242446848d07 + [rime-wugniu]=abd1ee98efbf170258fcf43875c21a4259e00b61 +) + +generate_src_uri() { + local -n LIST=$1 + local pkg + for pkg in "${!LIST[@]}"; do + SRC_URI+=" https://github.com/rime/${pkg}/archive/${LIST[$pkg]}.tar.gz -> ${pkg}-${PV}.tar.gz" + done +} + +DESCRIPTION="Data resources for Rime Input Method Engine" +HOMEPAGE="https://rime.im/ https://github.com/rime/plum" + +generate_src_uri PKGS +SRC_URI+=" extra? ( " +generate_src_uri PKGS_EXTRA +SRC_URI+=" )" + +S=${WORKDIR} + +# LGPL-3 : +# essay bopomofo cangjie emoji ipa +# luna-pinyin prelude quick stroke terra-pinyin wubi +# GPL-3 : +# array combo-pinyin double-pinyin middle-chinese +# scj soutzoe stenotype wugniu +# Apache-2 : +# rime-pinyin-simp +# CC-BY-4.0 : +# rime-cantonese +LICENSE="GPL-3 LGPL-3 extra? ( Apache-2.0 CC-BY-4.0 )" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" + +IUSE="extra" + +src_install() { + insinto "/usr/share/rime-data" + + _install_pkgs() { + local -n LIST=$1 + local pkg f + for pkg in "${!LIST[@]}"; do + doins "${pkg}-${LIST[$pkg]}"/*[!AUTHORS\|LICENSE\|README.md\|check.py] + for f in AUTHORS LICENSE README.md; do + if [[ -f "${pkg}-${LIST[$pkg]}/${f}" ]]; then + newdoc "${pkg}-${LIST[$pkg]}/${f}" "${pkg}_${f}" + fi + done + done + } + + _install_pkgs PKGS + use extra && _install_pkgs PKGS_EXTRA +} diff --git a/app-i18n/xvnkb/Manifest b/app-i18n/xvnkb/Manifest index d25d34a882fb..6bd4aedc7704 100644 --- a/app-i18n/xvnkb/Manifest +++ b/app-i18n/xvnkb/Manifest @@ -1,5 +1,9 @@ +AUX config.h.in 148 BLAKE2B 7e4dc901dbc6440eae599d2aaca852be2e7a3695d44def5b85e495741c371eb8f1d54f8a0d8c15283a26179b2114611ee581f01e13dc2e381348d0039642b872 SHA512 73189c001d2f0f55e08879f4654308cde3594e1f5dbfc4de19807ea1b90b7a3f032bf7a118d798a3cbb6d3aa0ab2b5688f191b0825d5f0f2f861b2c01187d8b6 +AUX meson.build 1554 BLAKE2B 9ad8bcbcb841d9babb8f3a27d3c0bcfd06948e2d94bf0aa34237b838c1a266756fea2e5e1cbbe310a7fe4975d52c37d5d58264c5fa08425c03c93d5c979a9a3b SHA512 fc01a03cd37ee9d1e3e5eab71ece979961a82f4c771571b58f6941f64c7edadc5ce1b6d4014b17206f1012b954228e1ee9c422ee429d3969661705d32a0d457e +AUX meson.options 502 BLAKE2B 5bbd0c9a1b4a06004407281889ef9b27a87b3c1f4c08ebb8e092a567615647b740a40cf72f2050b6b46e38547c825be8a33a5160bc9d44e922496fab36bcb974 SHA512 45cacdb10ef2f239881fe5565536bc2f309ad517d8949f0b9fb1158c815d3c732da7d400c7bc9d55aa59076140c7fbfed619c117011b39bf162bc0a7379dd789 AUX xvnkb-0.2.11-ldflags.patch 1077 BLAKE2B a1302da0f64a8975d4c88c63ce80e21b43d656d0766940ada495509649f890f917cb7dbc78a874a2854ee6d096e3ef6cd4a582f52f48913fd5c618a5767187e5 SHA512 8e64e433b4d05c30579f61f38ebb2d3d8f96ef620ddee7da62196a480fcfaf03595058f7dbf53d25948b89c534eefb89e61e62a5bea54edaa9601fe299642ed3 AUX xvnkb-cc.patch 217 BLAKE2B e33d60d26bef4c34f8f1e40a923ed3f1f759211965a6ecb66d8b257cdd2100112ab005899e208d0c89df63f38dac42bd215721d913a5dcad763a5dac2905fe7f SHA512 e5696260fb5e70e0c9d85b3d3686eb7f3f62df68b27d78e77bcecbf0177afeeaf805df0c71eb4f8a9c7209def0caf9cff096a515efd9812473f9848e8cce095f DIST xvnkb-0.2.11.tar.bz2 76397 BLAKE2B 8ebe4c389f5174b74af32fb001ef5f94d388b16a7c1ca0f409faffc6d63a4543d4daf7dc3609a8e7066324280eaf2d980e4a4e379ae478010269b808effb61cd SHA512 10d24ec159a89dd5fa68540bb8a92ae4d925f11039e7a7b77ed273862e4eb28ccd66d53ca1d0304f2a6d38182eddd304362d2bfd8c6804a2e7bfb354b20e5e83 -EBUILD xvnkb-0.2.11.ebuild 1503 BLAKE2B 07962dcd193fe89d686bd8c0a2b8eb14c18e29c1c9b2fa147eb0c9cf08589874f824cc010cf946889fabf2cda2ecbda1270beb2cca5e1ab693589da0fabb7e26 SHA512 154dfe3fa94aaaae4f7e25e9ac1f316d00599d69077938397a8695d0408e6d933e63658af0fc32307756c686f30989483f47cde2cf6f69b1105ea4b9ac1b1f47 +EBUILD xvnkb-0.2.11-r1.ebuild 1367 BLAKE2B 0bb76d9e5f79d1efa5715ff299de367162f783929a360a5bc729a8a86b0376a55f3cab1c4a42eb481b2e7fef726337d6489b878e2f7c8c01901e5312f292d37f SHA512 c3209b43e8d104897793ed159e9e6fc9329a414f414a27b849973c5f980cdf80d3b43f954bb1485e415b93f374a4b33680a9b640df3c5c1a40cbcfdbb4af384c +EBUILD xvnkb-0.2.11.ebuild 1513 BLAKE2B 20c7fa4fadb283d624d1372e07e90dba0c36b0cb4bc04f6054f113233b611e685ab552b45c34ed11922190ef8674cbb2db4e0032f654cc1a92d489f4741022e9 SHA512 63ae96ecfaa4b4a2daa377692a5046c2f7a2f925f69380824b7619e2f83c694b94185b903d079c21003e2884b0951467ad157b42273c4f3fc1c23cc12f372182 MISC metadata.xml 310 BLAKE2B 8cc6252010668c0621159f3bfc8be62a27e75a6798aeab86824ca9670f10844199aa1960c93d4b3d0f6b614595c00e26126f280cde4ed1d253ac17de74864ab1 SHA512 3ae9cfe5184876f5754768c37e25425b1067fd53e1fdc16cfc19508cf7d4845ff47f6f7f0d7752a532e2f4c8f74ca7abb16ec69db00bfec78ba6aa25872663f0 diff --git a/app-i18n/xvnkb/files/config.h.in b/app-i18n/xvnkb/files/config.h.in new file mode 100644 index 000000000000..d7b351625533 --- /dev/null +++ b/app-i18n/xvnkb/files/config.h.in @@ -0,0 +1,5 @@ +#define VERSION "@version@" +#mesondefine VK_USE_ABCSTROKE +#mesondefine VK_USE_PROSTROKE +#mesondefine VK_USE_EXTSTROKE +#mesondefine VK_CHECK_SPELLING \ No newline at end of file diff --git a/app-i18n/xvnkb/files/meson.build b/app-i18n/xvnkb/files/meson.build new file mode 100644 index 000000000000..502942233402 --- /dev/null +++ b/app-i18n/xvnkb/files/meson.build @@ -0,0 +1,72 @@ +project('xvnkb', 'c', version: '0.2.11', meson_version: '>=1.4.0') + +add_project_arguments('-DVK_NEED_UCHAR', language: 'c') + +conf_data = configuration_data() +conf_data.set('version', meson.project_version()) +conf_data.set('VK_USE_ABCSTROKE', get_option('abcstroke')) +conf_data.set('VK_USE_EXTSTROKE', get_option('extstroke')) +conf_data.set('VK_USE_PROSTROKE', get_option('prostroke')) +conf_data.set('VK_CHECK_SPELLING', get_option('spellcheck')) + +configure_file( + output: 'config.h', + input: 'config.h.in', + configuration: conf_data, +) + +dl_dep = dependency('dl') +xlib_dep = dependency('X11') + +xft_dep = dependency('xft', required: get_option('xft')) +if get_option('xft').enabled() + add_project_arguments('-DUSE_XFT', language: 'c') +endif + +deps = [dl_dep, xlib_dep, xft_dep] + +core_src = ['xvnkb.c', 'visckey.c'] +core = library( + 'xvnkb', + core_src, + name_prefix: '', + soversion: meson.project_version(), + dependencies: deps, + install: true, +) + +src = [ + 'data.c', + 'flash.c', + 'main.c', + 'event.c', + 'mainwin.c', + 'menu.c', + 'hotkey.c', + 'systray.c', + 'mode.c', + 'property.c', + 'session.c', + 'xconfig.c', + 'xresource.c', + 'label.c', + 'button.c', + 'msgbox.c', +] +executable('xvnkb', src, dependencies: deps, link_with: core, install: true) + +ctrl_src = [ + 'tools/xvnkb_ctrl.c', + 'tools/data.c', + 'tools/mode.c', + 'tools/property.c', + 'tools/xconfig.c', +] +executable( + 'xvnkb_ctlr', + ctrl_src, + dependencies: deps, + link_with: core, + install: true, +) + diff --git a/app-i18n/xvnkb/files/meson.options b/app-i18n/xvnkb/files/meson.options new file mode 100644 index 000000000000..b1517c1e6108 --- /dev/null +++ b/app-i18n/xvnkb/files/meson.options @@ -0,0 +1,20 @@ +option( + 'abcstroke', + type: 'boolean', + value: false, + description: 'Enable ABC liked Telex keystroke', +) +option( + 'extstroke', + type: 'boolean', + value: true, + description: 'Enable extended keystroke', +) +option( + 'prostroke', + type: 'boolean', + value: false, + description: 'Enable programmer keystroke', +) +option('spellcheck', type: 'boolean', value: true, description: 'Spelling check') +option('xft', type: 'feature', value: 'enabled', description: 'X freetype') diff --git a/app-i18n/xvnkb/xvnkb-0.2.11-r1.ebuild b/app-i18n/xvnkb/xvnkb-0.2.11-r1.ebuild new file mode 100644 index 000000000000..74c679988878 --- /dev/null +++ b/app-i18n/xvnkb/xvnkb-0.2.11-r1.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +inherit flag-o-matic meson + +DESCRIPTION="Vietnamese input keyboard for X" +HOMEPAGE="https://xvnkb.sourceforge.net/" +SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.bz2" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="spell xft" + +RDEPEND="x11-libs/libX11:= + xft? ( x11-libs/libXft:= )" +DEPEND="${RDEPEND} + x11-base/xorg-proto" +BDEPEND="xft? ( virtual/pkgconfig )" + +src_prepare() { + default + cp "${FILESDIR}"/meson.build . ||die "Unable to move build system" + cp "${FILESDIR}"/meson.options . ||die "Unable to move build system" + cp "${FILESDIR}"/config.h.in . ||die "Unable to move build system" +} + +src_configure() { + append-cflags -std=gnu17 + + local emesonargs=( + $(meson_use spell spellcheck) + $(meson_feature xft) + -Dextstroke=true + ) + + meson_src_configure +} + +src_install() { + meson_src_install + + einstalldocs + dodoc -r doc/. scripts contrib +} + +pkg_postinst() { + elog "Remember to" + elog "$ export LANG=en_US.UTF-8" + elog "(or any other UTF-8 locale) and" + elog "$ export LD_PRELOAD=/usr/$(get_libdir)/${PN}.so" + elog "before starting X Window" + elog "More documents are in ${EROOT}/usr/share/doc/${PF}" + + ewarn "Programs with suid/sgid will have LD_PRELOAD cleared" + ewarn "You have to unset suid/sgid to use with ${PN}" +} diff --git a/app-i18n/xvnkb/xvnkb-0.2.11.ebuild b/app-i18n/xvnkb/xvnkb-0.2.11.ebuild index a03d2ecadfdf..15cbc7258fcf 100644 --- a/app-i18n/xvnkb/xvnkb-0.2.11.ebuild +++ b/app-i18n/xvnkb/xvnkb-0.2.11.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI="8" @@ -7,7 +7,7 @@ inherit toolchain-funcs DESCRIPTION="Vietnamese input keyboard for X" HOMEPAGE="https://xvnkb.sourceforge.net/" -SRC_URI="https://${PN}.sourceforge.net/${P}.tar.bz2" +SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.bz2" LICENSE="GPL-2+" SLOT="0" diff --git a/app-misc/Manifest.gz b/app-misc/Manifest.gz index 58846619930281b20eb95923e33d84fa656b975c..a3c11d772acb514c2adac7ceb32c4ca07d4b56fc 100644 GIT binary patch literal 50208 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 "${T}"/${PN}.1 || die +} + +src_configure() { + export LIBSQLITE3_SYS_USE_PKG_CONFIG=1 + export RUSTFLAGS="-Cstrip=none ${RUSTFLAGS}" #835400 + local myfeatures=( $(usev X clipboard) trash ) + + cargo_src_configure --no-default-features +} + +src_install() { + cargo_src_install + + doman "${T}"/${PN}.1 + + local build_dir=( "$(cargo_target_dir)"/build/${PN}-*/out ) + cd ${build_dir[0]} || die + + newbashcomp ${PN}.bash ${PN} + newbashcomp br.bash br + + dozshcomp _${PN} _br + dofishcomp ${PN}.fish br.fish +} diff --git a/app-misc/dateutils/Manifest b/app-misc/dateutils/Manifest index 49aea23af2f4..c3af996feb4c 100644 --- a/app-misc/dateutils/Manifest +++ b/app-misc/dateutils/Manifest @@ -1,6 +1,6 @@ -AUX dateutils-4.10-gcc-14.patch 1228 BLAKE2B d721ac3b801e3feff445e18b330a6e772b701581f32f9dc3e358e500b61691b00e155fe870ede9a9565d413a2bcd9dfdaaf3a37c2c7b8ff05948ca190cd96be6 SHA512 ac39b397c8fcf6009875f4dc867348b04f340628b76bec3548f5e6ed9dcc0e0005f1fed0156b0b6e3fc81b59e214d9ec0d37c8e1017076441b088c167a547bf6 +AUX dateutils-0.4.10-gcc-14.patch 1228 BLAKE2B d721ac3b801e3feff445e18b330a6e772b701581f32f9dc3e358e500b61691b00e155fe870ede9a9565d413a2bcd9dfdaaf3a37c2c7b8ff05948ca190cd96be6 SHA512 ac39b397c8fcf6009875f4dc867348b04f340628b76bec3548f5e6ed9dcc0e0005f1fed0156b0b6e3fc81b59e214d9ec0d37c8e1017076441b088c167a547bf6 DIST dateutils-0.4.10.tar.xz 652548 BLAKE2B b1fe3b07edfd223c9265df99888bf2edc37458b487b0f3b913f4c19e23b86d4a7f8cb3f0610bf140e6ce0233a9008ccd26cbe0b1462c5f85b2424cd39ffcbdb7 SHA512 04a9fff177596bb9bc47d3b221865bbeafeafbc708385610845a1cdcb2a7fa379e8d9363cce578836ae121dab7ee64e19f61d82e8f222250e52d23c5f43cf521 DIST dateutils-0.4.11.tar.xz 670468 BLAKE2B e492b03adf6c57a11e44bb31b20d4f2b0c27d9767bce7b31092a7937979ec7555b83010467ec6fa65bb17b96ccfa87b30179ea9f64d8b87086870a956c6e4f1b SHA512 601fa8197acdb68fe0688aed3fa2ba2fcf66b9a8ad23a0c7cb816a2cba9c645854ec8715a2127e02294cc068f63b09d0596eee60e151a8ad0edff22f54ec9d7a -EBUILD dateutils-0.4.10.ebuild 763 BLAKE2B f3e4c2e08d3d3df5a968fded2e720b4c53fe3770bf8a7a9594efbc0fe890fe2ab8b96b0178766e66cc4e442602b1c4f0a5d4a0d030fa4b28ee5978143b7ae6f0 SHA512 2f58d00010f889b20eca0a8e81444b7e69e242217b5876820d96511275eda1682061356a4ed388b8b799a271161545e6acf40888b1549348d0027577370baa35 +EBUILD dateutils-0.4.10.ebuild 780 BLAKE2B 7b46d17cf0140269815c3788ed11a9f28dacae7fc082155a5529ea3f63753bd51eb849e700cabe72e063d39ca8ef40cb3f7b55c3a05d6355e1081103f8810e79 SHA512 ed56ffedf8e6ed91624fbd863f2d074a0b29534b362acb850764a0e88ebd83ecacc7b7cf0b46429e4bafe7d5cd4d36bf4d8a301c94d1cb5115a180d5334852f5 EBUILD dateutils-0.4.11.ebuild 676 BLAKE2B 51dbc82df63271bab7e8037599bd950354943445e687b7e9b272c5818c42a80fcc3ef530fd8803a02534ea9537ec6deee1614d58c688d99dbd37de4d938ec794 SHA512 1cf3a5429bacea0ef462edc61c79d04b1d0b8ea50ee14ef34a25667bc9160322a0ce685db3f6749cbc6a49e23effb5cf42c8f7e53239ff4c0a71a7f0d5cbc280 MISC metadata.xml 866 BLAKE2B 49b7026c72ad8bc8f815f8fa677eaa323de872d049a8d0e410d022bf62c0dd8aec87edcb39850a184a320069c72845920f8e06b9de32f85f4fc70cb7d0243d37 SHA512 b72cd15268de4868cce0c9b66bd30e6df9a205ef40cc089ef2a0c6d29ba114b310ce1cfbfbfded69c939dc0f546d11f73034126ad4a90005d9f7e8118f9f4acf diff --git a/app-misc/dateutils/dateutils-0.4.10.ebuild b/app-misc/dateutils/dateutils-0.4.10.ebuild index 1dab11f86473..aa56cf2c145e 100644 --- a/app-misc/dateutils/dateutils-0.4.10.ebuild +++ b/app-misc/dateutils/dateutils-0.4.10.ebuild @@ -22,7 +22,9 @@ SLOT="0" BDEPEND="app-arch/xz-utils" DEPEND="sys-libs/timezone-data" -PATCHES="${P}-gcc-14.patch" +PATCHES=( + "${FILESDIR}"/${P}-gcc-14.patch +) # bug 429810 RDEPEND="${DEPEND} diff --git a/app-misc/dateutils/files/dateutils-4.10-gcc-14.patch b/app-misc/dateutils/files/dateutils-0.4.10-gcc-14.patch similarity index 100% rename from app-misc/dateutils/files/dateutils-4.10-gcc-14.patch rename to app-misc/dateutils/files/dateutils-0.4.10-gcc-14.patch diff --git a/app-misc/fastfetch/Manifest b/app-misc/fastfetch/Manifest index b2690ff31c6e..837b6bd8241a 100644 --- a/app-misc/fastfetch/Manifest +++ b/app-misc/fastfetch/Manifest @@ -1,11 +1,11 @@ -DIST fastfetch-2.30.1.tar.gz 1144835 BLAKE2B f44e0d8b74f124a1978403c0af61450eae4f668c0ed8e3d56505ede715366c90ad8099ae652a9afbb1c57ed2af01a930834a53ca6e871d6ad8078ce0179970f0 SHA512 626eaea5cb4ea3c61b44d24acf836734e7a04e8a3cf78bd0c8c3d4dcaf28bc165501906f97cc1423aadf8d822539e82251b65f3089780232dc214d07ce6aba7a DIST fastfetch-2.33.0.tar.gz 1161845 BLAKE2B 1a31aa0b7651c27ecff34067360c136ad5c0dddac60e5bc2c4ae749194d63c49df3bc92de91e5a3249b8bcd1f640b62025a01d7f6b89b96991ad1623ca079bb5 SHA512 f9d824f908e36e3dc1b7784f2da818d764be6bbc6baa77d6b26ea6776acb5f101c4c39267fa42d1c9ae735c9889badc7b3a65170d81308de852a178e50140154 DIST fastfetch-2.34.1.tar.gz 1168310 BLAKE2B 2b3e617cd2c7b2168ad9844ba907aa533b500cf90b19762c180555967605ed3ba83030e07893adee9ec2f30887ace3f63840fdc62cbad00c7c9d1d9bd9021952 SHA512 026b71c8d6ad5d5683ededf173d4cb2e936b3e934c7f27227fa7c5f665b9628717e90413626a4fab25fa5f5fde50cae6cdeb75621d6a2cac1ca6368c943293de DIST fastfetch-2.35.0.tar.gz 1171386 BLAKE2B f862c98737fe72a1b2068f05e7b78bdacbc9664a30261c7a129aa869a0aa15022ae5d716ded01ee309f0d72ab89032ed0a47372f170b9e6ccfe04897994828cd SHA512 c77f0496e7be630b1e19443058e5176c0b361375adeb4a6c2f1e5084c00869f9c939f82e35205c9316f3f81a622124bcc926f409fd0eb9c0ce59be5f5ab086a2 +DIST fastfetch-2.36.1.tar.gz 1176932 BLAKE2B 0a7727e049de9a5dbb945b171e720ea888c7d7ee77ee145b6122f09cf2933eccde5437ae76f0e89501e38e17edc4349e074747abc7dd4c89b9c1e1005b96197e SHA512 2906b8e6912185a3acdd2b615ff869fa8f44ce0e547ed5529068eb2570ef5c013ed84691e62d613e52f2433595aa4e67859cf89b4116588ba4cb7c7bb7d8bb01 EBUILD fastfetch-0.1.9999.ebuild 3443 BLAKE2B 278037dd445b5d4c04ebb6c0b352f99d0d26f7211745545fb350f440a5b9e640aec786f7ecae0c416bf7d1630b971b9d73121ad0a1a69856abecc88be52a02b2 SHA512 473c0698310206dc7bec63b99828c512d25be4cbf6ebaa78bf40f112abf8f97795ab2531a2a2b331f795a70ff5ebe735b6eabd1e23971ca7eb244f93d24c5ac4 EBUILD fastfetch-0.2.9999.ebuild 3443 BLAKE2B 278037dd445b5d4c04ebb6c0b352f99d0d26f7211745545fb350f440a5b9e640aec786f7ecae0c416bf7d1630b971b9d73121ad0a1a69856abecc88be52a02b2 SHA512 473c0698310206dc7bec63b99828c512d25be4cbf6ebaa78bf40f112abf8f97795ab2531a2a2b331f795a70ff5ebe735b6eabd1e23971ca7eb244f93d24c5ac4 -EBUILD fastfetch-2.30.1.ebuild 3137 BLAKE2B 2ef89b3171766797ac6d0e6adc2ccfe382fa94b37ed9e60df81ab37ee316aab370a53fd69038c6f3c561d2b4c20dc9a29b511afb9e9e7065bde92a4c1b253299 SHA512 087bae54243297c377be64ee38c30efd118243b83bc0686ec165c65eb8a869ee83e7d1f61ee88a732e04288e542b2443dad9d0a9a53030d503b9419410b3a6ae EBUILD fastfetch-2.33.0.ebuild 3440 BLAKE2B eb0fd72015c0f51661b8d9937dbd4b2cfe577ac19303f15994678ee15ff83624e77f9a8a20aceb8007bd2d89d604ee9798d07db952a5f7fc772f82014d2cba8c SHA512 676130d3d01971db4a4fa97f06ea6ce86a19476419dfd7c1738f52142c2bfaab4c51b662d4b3d6c917cb6d1a6b5e17153c48696d28426c330adf6db20bc429fb EBUILD fastfetch-2.34.1.ebuild 3443 BLAKE2B 3e2289a1c1e1d41f8fb97be96f4c2445880a255f53a5fa50f8ec89d5047f07229be26a851070b71b05ceb3bb77938904e08f1c5eee33bcafaa601c4dd0cebb49 SHA512 e5c9505f6007ad86f818aecf8a20f72439d10941ad14fdcad32a2277bba55aaca6965b218169508ef8d24848996c4974883c54bbb0e2fbf6c0865cbcac749880 EBUILD fastfetch-2.35.0.ebuild 3443 BLAKE2B 3e2289a1c1e1d41f8fb97be96f4c2445880a255f53a5fa50f8ec89d5047f07229be26a851070b71b05ceb3bb77938904e08f1c5eee33bcafaa601c4dd0cebb49 SHA512 e5c9505f6007ad86f818aecf8a20f72439d10941ad14fdcad32a2277bba55aaca6965b218169508ef8d24848996c4974883c54bbb0e2fbf6c0865cbcac749880 +EBUILD fastfetch-2.36.1.ebuild 3443 BLAKE2B 3e2289a1c1e1d41f8fb97be96f4c2445880a255f53a5fa50f8ec89d5047f07229be26a851070b71b05ceb3bb77938904e08f1c5eee33bcafaa601c4dd0cebb49 SHA512 e5c9505f6007ad86f818aecf8a20f72439d10941ad14fdcad32a2277bba55aaca6965b218169508ef8d24848996c4974883c54bbb0e2fbf6c0865cbcac749880 MISC metadata.xml 1398 BLAKE2B bba6a400cbf5e68dc779b4f15cf30b477a4837cd57e09fb17cf4c2ca06e05b19d89c9cd3c1063b078b3411a27c5b265e78e21e15e9cb32b1c681bd9a4bab3545 SHA512 018c51650911637fad242e431a2a9bdb017210b9082c0c49ed29e744fc2cba7733617d49721dd9d2519ee24ea61076608154d63e1f67c3ada4a1ef4774be2432 diff --git a/app-misc/fastfetch/fastfetch-2.30.1.ebuild b/app-misc/fastfetch/fastfetch-2.30.1.ebuild deleted file mode 100644 index 3d81543b4ade..000000000000 --- a/app-misc/fastfetch/fastfetch-2.30.1.ebuild +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake flag-o-matic - -DESCRIPTION="Fast neofetch-like system information tool" -HOMEPAGE="https://github.com/fastfetch-cli/fastfetch" -if [[ ${PV} == *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/fastfetch-cli/fastfetch.git" - [[ ${PV} == *0.1.9999 ]] && EGIT_BRANCH=master - [[ ${PV} == *0.2.9999 ]] && EGIT_BRANCH=dev - [[ "${EGIT_BRANCH}" == "" ]] && die "Please set a git branch" -else - SRC_URI="https://github.com/fastfetch-cli/fastfetch/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv ~sparc ~x86" -fi - -LICENSE="MIT" -SLOT="0" -IUSE="X chafa dbus ddcutil drm elf gnome imagemagick opencl opengl osmesa pulseaudio sqlite test vulkan wayland xcb xfce xrandr" -RESTRICT="!test? ( test )" - -# note - qa-vdb will always report errors because fastfetch loads the libs dynamically -# make sure to crank yyjson minimum version to match bundled version -RDEPEND=" - >=dev-libs/yyjson-0.10.0 - sys-apps/hwdata - sys-libs/zlib - X? ( x11-libs/libX11 ) - chafa? ( media-gfx/chafa ) - dbus? ( sys-apps/dbus ) - ddcutil? ( app-misc/ddcutil:= ) - drm? ( x11-libs/libdrm ) - elf? ( virtual/libelf:= ) - gnome? ( - dev-libs/glib - gnome-base/dconf - ) - imagemagick? ( media-gfx/imagemagick:= ) - opencl? ( virtual/opencl ) - opengl? ( media-libs/libglvnd[X] ) - osmesa? ( media-libs/mesa[osmesa] ) - pulseaudio? ( media-libs/libpulse ) - sqlite? ( dev-db/sqlite:3 ) - vulkan? ( - media-libs/vulkan-loader - sys-apps/pciutils - ) - wayland? ( dev-libs/wayland ) - xcb? ( x11-libs/libxcb ) - xfce? ( xfce-base/xfconf ) - xrandr? ( x11-libs/libXrandr ) -" -DEPEND=" - ${RDEPEND} - vulkan? ( dev-util/vulkan-headers ) -" -BDEPEND="virtual/pkgconfig" - -REQUIRED_USE=" - xrandr? ( X ) - chafa? ( imagemagick ) -" - -src_configure() { - local fastfetch_enable_imagemagick7=no - local fastfetch_enable_imagemagick6=no - if use imagemagick; then - fastfetch_enable_imagemagick7=$(has_version '>=media-gfx/imagemagick-7.0.0' && echo yes || echo no) - fastfetch_enable_imagemagick6=$(has_version '=media-gfx/imagemagick-7.0.0' && echo yes || echo no) + fastfetch_enable_imagemagick6=$(has_version '5o5s_+oEkkGJtJfBEwHgD>5G`0aoH^k2UV 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 diff --git a/app-office/calligra/Manifest b/app-office/calligra/Manifest index ef3a74b9d5fb..4a18a216e21a 100644 --- a/app-office/calligra/Manifest +++ b/app-office/calligra/Manifest @@ -1,4 +1,6 @@ +DIST calligra-24.12.2.tar.xz 57908508 BLAKE2B a3ec522b4ecfbc93bca2b147bc4302c64c3132c1d01916a8501ddac8df2972ef8688f42afe57eaf86cd6fde64841b3c22ba05dca98fef5a3a9dcd7f327d10e23 SHA512 54a59d4cbd3d22e3834a50a53693211689234158ff1a95732820c4b939a214e295bf7b51e07494f3d3df1defb5e6789ab70801717d578d54fa2fa71efd65b9e9 DIST calligra-3.2.1-patchset-1.tar.xz 11924 BLAKE2B 5a71a7960a6d2a4d5e55129f4812fb13a2fb56613283d4582266e1836f107b711be43cb158e29c440fbda6992c03a3f4907f0600d21522fd9ab07c66354234a9 SHA512 26ec818f2415c43b116b716557710361621e1e4446087fe123e29107f82400ec82f19ab3a76dde9b749ed4b9f15da9c05c3fa6137fc814241c48ffc12f5628fc DIST calligra-4.0.1.tar.xz 57780728 BLAKE2B 0ea82f5b21d36e04222db4ee282048b61a6d144630cc26d007d722fa8fc3081ee38e8f54b7256f9e722cccedc7ddc7489e3a3bd7dff34263d81cd5a7081aa6b2 SHA512 79569a1e75d5c70c8b2c3e5c7cf88d26d9b7a81be52c131c932521c65d1712a531829bcd29f7233f1ee7601fa363ca9ce2c4783a76dfdc5abe3c8b04b5741b78 +EBUILD calligra-24.12.2.ebuild 4212 BLAKE2B 864a6105a4db5aeae00ad83c66453a6bb0462d3d1f8547820249d7ab3dc1d0edbaa4d7440533901ad41ca49f211929a1e012cba1736c24f50d36e271ea1670e2 SHA512 f88c1369735be12307065b9e4f92816ca5568c8a568fc762e9711b3d1abbba952c433c1e1d3b6d4364c69ce07e1abeb0312b2a228180993e2c77eb248827850e EBUILD calligra-4.0.1-r1.ebuild 4352 BLAKE2B d878f1ca636b9ea88db9b3b6fcabe7614906a60ff402eebbc151bde9319a4b42a1b810c0ad1596a7cf1a6b6c7f80e368f9d20cfdd751573ca6d2fa54f915f9ef SHA512 c8532c2b8ee4e2cc6e7c5dddcefbbbeeaab8f114f689d6cdf85ce091940ccd8768cf5ed904099017a6c96af79eaf2ef591995ccedc7d4c480827ffdab6e2c828 MISC metadata.xml 1183 BLAKE2B e5638f8f33c220b6c44a10a8ffb8bee7bcb9b1a387a0d69bdaca8778f9700baf6090ae997d4b13acc1702a98b0aaa8ac1aae479125c5386cdc42585ea079738f SHA512 7284037a405494efe0a270a19c39ee45843ccd13ebd44ce633c40cb43ac53fa93795317a4716a7e225ed4106a5518b5167200dfc8219836cb17ac2dfe84e8ba9 diff --git a/app-office/calligra/calligra-24.12.2.ebuild b/app-office/calligra/calligra-24.12.2.ebuild new file mode 100644 index 000000000000..2ec028ffebd9 --- /dev/null +++ b/app-office/calligra/calligra-24.12.2.ebuild @@ -0,0 +1,139 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CHECKREQS_DISK_BUILD="4G" +ECM_HANDBOOK="forceoptional" +ECM_TEST="forceoptional" +KFMIN=6.9.0 +QTMIN=6.8.0 +inherit check-reqs ecm gear.kde.org xdg + +DESCRIPTION="KDE Office Suite" +HOMEPAGE="https://calligra.org/" +PATCHSET="${PN}-3.2.1-patchset-1" +SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${PATCHSET}.tar.xz" + +LICENSE="GPL-2" +SLOT="0" +if [[ ${KDE_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~ppc64 ~x86" +fi +CAL_FTS=( karbon sheets stage words ) +IUSE="+charts +fontconfig gsl +import-filter +lcms okular +pdf phonon + +truetype webengine X $(printf 'calligra_features_%s ' ${CAL_FTS[@]})" + +RESTRICT="test" + +# TODO: Not packaged: Cauchy (https://bitbucket.org/cyrille/cauchy) +# Required for the matlab/octave formula tool +COMMON_DEPEND=" + dev-lang/perl + dev-libs/openssl:= + >=dev-libs/qtkeychain-0.14.2:=[qt6(+)] + >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,network,widgets,xml] + >=dev-qt/qtdeclarative-${QTMIN}:6[widgets] + >=dev-qt/qtsvg-${QTMIN}:6 + >=dev-qt/qttools-${QTMIN}:6[designer] + >=kde-frameworks/karchive-${KFMIN}:6 + >=kde-frameworks/kcmutils-${KFMIN}:6 + >=kde-frameworks/kcompletion-${KFMIN}:6 + >=kde-frameworks/kconfig-${KFMIN}:6 + >=kde-frameworks/kconfigwidgets-${KFMIN}:6 + >=kde-frameworks/kcoreaddons-${KFMIN}:6 + >=kde-frameworks/kcrash-${KFMIN}:6 + >=kde-frameworks/kdbusaddons-${KFMIN}:6 + >=kde-frameworks/kguiaddons-${KFMIN}:6 + >=kde-frameworks/ki18n-${KFMIN}:6 + >=kde-frameworks/kiconthemes-${KFMIN}:6 + >=kde-frameworks/kio-${KFMIN}:6 + >=kde-frameworks/kirigami-${KFMIN}:6 + >=kde-frameworks/kitemviews-${KFMIN}:6 + >=kde-frameworks/kjobwidgets-${KFMIN}:6 + >=kde-frameworks/knotifications-${KFMIN}:6 + >=kde-frameworks/knotifyconfig-${KFMIN}:6 + >=kde-frameworks/ktextwidgets-${KFMIN}:6 + >=kde-frameworks/kwidgetsaddons-${KFMIN}:6 + >=kde-frameworks/kwindowsystem-${KFMIN}:6 + >=kde-frameworks/kxmlgui-${KFMIN}:6 + >=kde-frameworks/sonnet-${KFMIN}:6 + sys-libs/zlib + virtual/libiconv + charts? ( dev-libs/kdiagram:6 ) + fontconfig? ( media-libs/fontconfig ) + gsl? ( sci-libs/gsl:= ) + import-filter? ( + app-text/libetonyek + app-text/libodfgen + app-text/libwpd:* + app-text/libwpg:* + >=app-text/libwps-0.4 + dev-libs/librevenge + media-libs/libvisio + ) + lcms? ( media-libs/lcms:2 ) + okular? ( kde-apps/okular:6 ) + pdf? ( app-text/poppler:=[qt6] ) + phonon? ( >=media-libs/phonon-4.12.0[qt6(+)] ) + truetype? ( media-libs/freetype:2 ) + webengine? ( >=dev-qt/qtwebengine-${QTMIN}:6[widgets] ) + calligra_features_sheets? ( dev-cpp/eigen:3 ) + calligra_features_words? ( dev-libs/libxslt ) +" +DEPEND="${COMMON_DEPEND} + dev-libs/boost + lcms? ( dev-libs/imath:3 ) + test? ( >=kde-frameworks/threadweaver-${KFMIN}:6 ) +" +RDEPEND="${COMMON_DEPEND} + !${CATEGORY}/${PN}:5 + calligra_features_karbon? ( media-gfx/pstoedit[plotutils] ) +" +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig +" + +PATCHES=( "${WORKDIR}"/${PATCHSET}/${PN}-3.1.89-no-arch-detection.patch ) # downstream + +src_configure() { + local cal_ft myproducts + + # applications + for cal_ft in ${CAL_FTS[@]}; do + use calligra_features_${cal_ft} && myproducts+=( "${cal_ft^^}" ) + done + + use lcms && myproducts+=( PLUGIN_COLORENGINES ) + use okular && myproducts+=( OKULAR ) + + local mycmakeargs=( + -DPACKAGERS_BUILD=OFF + -DRELEASE_BUILD=ON + -DWITH_Iconv=ON + -DWITH_Imath=ON # w/ LCMS: 16 bit floating point Grayscale colorspace + -DCMAKE_DISABLE_FIND_PACKAGE_Cauchy=ON + -DPRODUCTSET="${myproducts[*]}" + $(cmake_use_find_package charts KChart6) + -DWITH_Fontconfig=$(usex fontconfig) + -DWITH_GSL=$(usex gsl) + -DWITH_LibEtonyek=$(usex import-filter) + -DWITH_LibOdfGen=$(usex import-filter) + -DWITH_LibRevenge=$(usex import-filter) + -DWITH_LibVisio=$(usex import-filter) + -DWITH_LibWpd=$(usex import-filter) + -DWITH_LibWpg=$(usex import-filter) + -DWITH_LibWps=$(usex import-filter) + $(cmake_use_find_package phonon Phonon4Qt6) + -DWITH_LCMS2=$(usex lcms) + -DWITH_Okular6=$(usex okular) + -DWITH_Poppler=$(usex pdf) + -DWITH_Eigen3=$(usex calligra_features_sheets) + -DBUILD_UNMAINTAINED=$(usex calligra_features_stage) + -DWITH_Freetype=$(usex truetype) + $(cmake_use_find_package webengine Qt6WebEngineWidgets) + ) + + ecm_src_configure +} diff --git a/app-office/kmymoney/Manifest b/app-office/kmymoney/Manifest index 8bc3ca297b56..3baed51b3523 100644 --- a/app-office/kmymoney/Manifest +++ b/app-office/kmymoney/Manifest @@ -1,4 +1,6 @@ AUX kmymoney-5.1.3-cmake.patch 862 BLAKE2B 9cd3e8be514bb4b4bee50639de1d7bf3729c7836ee48dd7ee9859bc3114c15adb0f57043a063052ce56e1c7bad17e89e40d6a00b559b15336b6dfa442c24bc1e SHA512 7b39d65f8e151327e38d6f1f0640578e1beb1591e5eb7ad62f319294afab80c835e1bc53b3342858ed16d2336f5f7ec8d16531455e9e8d46002d839d26adc428 DIST kmymoney-5.1.3.tar.xz 12647372 BLAKE2B 09580873985bb41c39c649bdb863ee25f4356dfea18b64d45f3b6bd528fd57fc2b5fd32a6541c10ed519da0e905bf6853589e7cab0f4c3b4f2945cd7a3181dba SHA512 2003f25b7df77691e5d3d0f450e0139b1e68336f59a4fc78af751c5b94ecfaf17a39ee1f58ed0c2cda642195c5277fbb63c87e857ebe9a6495dc7f88b9a38794 +DIST kmymoney-5.1.92.tar.xz 11150032 BLAKE2B b6d4c9b6b558366aeaded32d21d126cf63e4c2b90f8e2db9b96371342af1584aa973037207b2a50382c9f4047da623dccaaa0972e90b7719781a740399de0aa8 SHA512 8c0c396fb382b75425d0995e934f5bc8f9051aa7f9b7ca04d40b467a6fd94cd5c27a63af4e07f8559013af85e45fb57962c670ca102b7a3300b644891b3c9153 EBUILD kmymoney-5.1.3.ebuild 4029 BLAKE2B 2c604d87ebbb662b3bcf16e888c18146f963579c37ee12ee5d28ba3d39d4eb38af3a9aa97282426aebef86863d6c0ed5c5e43d76e9af7215885acfa8d2b70480 SHA512 28eb4a2b4ec016d05e8c19cd665ca81f7c9cd915532cbeecbcbba4b5ece6ad7c227366b64980bd49fa3e6513164419a86833983ea1b3faf374cdad1260e05293 -MISC metadata.xml 683 BLAKE2B 2a9a175cb8ef351cd43ce630d7d06b6c3cd2534843a06308e96a36a8d6fc98f49beffbc848c3e11374b1085342e6481eb039516d6c9c0da7d2fd571c37632ee2 SHA512 bd7fb9583fc92da221e835b256155eb08a5f2a84de5ef1d72ae553e41206d64ea12ac041913b37094e99e75e41b6659a5268fcc9fbe35dd8068348e95931509c +EBUILD kmymoney-5.1.92.ebuild 3429 BLAKE2B 0d9756d235768174864dd04d571a8be27ea32786034339d621a42ea667e50d401796271298b3103eb0a55c82ef74abdd5ad3c17073977c4930f145875edf38e4 SHA512 327539c73785d17b3d3b1c4521fd3fe39baee0ec5e5b9dbcf704b523331ba8302811627f6bb33539f5fcafb27c19834ff8335bcd1e6cd6fb1e87fac38d10ffc0 +MISC metadata.xml 976 BLAKE2B 8e5bd6feb1639fa7ebf0d5325953f3ef12eae7fe17bc75c6d10f06ab3b80e27a722ef5bd885013b0ee387315638dc5ecd8075538bbaed0e5fe04a01b94fe7a07 SHA512 353412fdd2e207f72cf92f57ee6ab317a94d17675ec33e796d46188a272fd84b6882570d8821f523ff11852ee471e0bb038e4e915814d06564799afcbae8b400 diff --git a/app-office/kmymoney/kmymoney-5.1.92.ebuild b/app-office/kmymoney/kmymoney-5.1.92.ebuild new file mode 100644 index 000000000000..347dff3eebd2 --- /dev/null +++ b/app-office/kmymoney/kmymoney-5.1.92.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ECM_HANDBOOK="optional" +ECM_TEST="forceoptional" +KFMIN=5.115.0 +QTMIN=5.15.12 +VIRTUALDBUS_TEST="true" +inherit ecm kde.org optfeature + +DESCRIPTION="Personal finance manager based on KDE Frameworks" +HOMEPAGE="https://kmymoney.org/" + +if [[ ${KDE_BUILD_TYPE} = release ]]; then + SRC_URI="mirror://kde/unstable/${PN}/${PV}/${P}.tar.xz" + KEYWORDS="~amd64" +fi + +LICENSE="GPL-2" +SLOT="5" +IUSE="activities calendar hbci holidays sql sqlcipher" +[[ ${KDE_BUILD_TYPE} = live ]] && IUSE+=" experimental" + +REQUIRED_USE="sqlcipher? ( sql )" + +RDEPEND=" + >=app-crypt/gpgme-1.23.1-r1:=[cxx,qt5(-)] + =app-office/libalkimia-8.1.92*:= + dev-libs/gmp:0=[cxx(+)] + dev-libs/kdiagram:5 + dev-libs/libgpg-error + dev-libs/libofx:= + >=dev-libs/qtkeychain-0.14.2:=[qt5(-)] + >=dev-qt/qtdbus-${QTMIN}:5 + >=dev-qt/qtgui-${QTMIN}:5 + >=dev-qt/qtnetwork-${QTMIN}:5 + >=dev-qt/qtprintsupport-${QTMIN}:5 + >=dev-qt/qtsvg-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 + >=dev-qt/qtxml-${QTMIN}:5 + >=kde-frameworks/karchive-${KFMIN}:5 + >=kde-frameworks/kcmutils-${KFMIN}:5 + >=kde-frameworks/kcodecs-${KFMIN}:5 + >=kde-frameworks/kcompletion-${KFMIN}:5 + >=kde-frameworks/kconfig-${KFMIN}:5 + >=kde-frameworks/kconfigwidgets-${KFMIN}:5 + >=kde-frameworks/kcoreaddons-${KFMIN}:5 + >=kde-frameworks/ki18n-${KFMIN}:5 + >=kde-frameworks/kio-${KFMIN}:5 + >=kde-frameworks/kitemmodels-${KFMIN}:5 + >=kde-frameworks/kitemviews-${KFMIN}:5 + >=kde-frameworks/kjobwidgets-${KFMIN}:5 + >=kde-frameworks/knotifications-${KFMIN}:5 + >=kde-frameworks/kservice-${KFMIN}:5 + >=kde-frameworks/ktextwidgets-${KFMIN}:5 + >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 + >=kde-frameworks/kxmlgui-${KFMIN}:5 + >=kde-frameworks/sonnet-${KFMIN}:5 + activities? ( >=kde-plasma/plasma-activities-${KFMIN}:5 ) + calendar? ( dev-libs/libical:= ) + hbci? ( + >=dev-qt/qtdeclarative-${QTMIN}:5 + >=net-libs/aqbanking-6.5.0 + >=sys-libs/gwenhywfar-5.10.1:=[qt5(-)] + ) + holidays? ( >=kde-frameworks/kholidays-${KFMIN}:5 ) + sql? ( >=dev-qt/qtsql-${QTMIN}:5[sqlite] ) + sqlcipher? ( dev-db/sqlcipher ) +" +DEPEND="${RDEPEND} + dev-libs/boost +" +BDEPEND="virtual/pkgconfig" + +pkg_setup() { + ecm_pkg_setup + + if [[ ${KDE_BUILD_TYPE} = live ]] && use experimental; then + ewarn "USE experimental set: Building unfinished features." + ewarn "This *will* chew up your data. You have been warned." + fi +} + +src_prepare() { + ecm_src_prepare + + sed -e "/find_program.*CCACHE_PROGRAM/s/^/# /" \ + -e "/if.*CCACHE_PROGRAM/s/CCACHE_PROGRAM/0/" \ + -i CMakeLists.txt # no, no no. +} + +src_configure() { + local mycmakeargs=( + -DENABLE_WOOB=OFF # ported to Py3; not yet re-added in Gentoo + -DUSE_QT_DESIGNER=OFF + $(cmake_use_find_package activities KF5Activities) + -DENABLE_LIBICAL=$(usex calendar) + -DENABLE_KBANKING=$(usex hbci) + $(cmake_use_find_package holidays KF5Holidays) + -DENABLE_SQLSTORAGE=$(usex sql) + $(cmake_use_find_package sql Qt5Sql) + -DENABLE_SQLCIPHER=$(usex sqlcipher) + ) + [[ ${KDE_BUILD_TYPE} = live ]] && + mycmakeargs+=( -DENABLE_COSTCENTER=$(usex experimental) ) + + ecm_src_configure +} + +src_test() { + # bug 652636; bug 673052: needs kmymoney installed to succeed + local myctestargs=( + -E "(reports-chart-test|qsqlcipher-test)" + ) + + ecm_src_test +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + optfeature "more options for online stock quote retrieval" dev-perl/Finance-Quote + fi + ecm_pkg_postinst +} diff --git a/app-office/kmymoney/metadata.xml b/app-office/kmymoney/metadata.xml index 9510f45c3f08..e751cb45b19b 100644 --- a/app-office/kmymoney/metadata.xml +++ b/app-office/kmymoney/metadata.xml @@ -6,12 +6,15 @@ Gentoo KDE Project - https://bugs.kde.org/ + https://bugs.kde.org/enter_bug.cgi?product=kmymoney + office/kmymoney Enable kde-plasma/plasma-activities integration Enable kde-apps/akonadi contact integration Enable HBCI support using net-libs/aqbanking Enable kde-frameworks/kholidays integration + Enable storage of financial data in SQL Db via dev-qt/qtsql + Enable SQLite3 database encryption support via dev-db/sqlcipher diff --git a/app-office/ledger/Manifest b/app-office/ledger/Manifest index 36c3dcf9de87..3f5c34ca82bb 100644 --- a/app-office/ledger/Manifest +++ b/app-office/ledger/Manifest @@ -1,6 +1,5 @@ AUX convenience.patch 425 BLAKE2B 681557bc92a8006109abc3317a2e2d729e998f2ed9d3478b028cc38ebbb0d3f13fef21a6ad928b2c8fe0de1551342c33908e52e0043ba27c296eb1956267be96 SHA512 99782978e3877a4a896ea07d01dd40a0a7001becc422dc183a51bc39baf950f391da0d79d98249db9b103472deebdbc82428ca91f9c2f42010afc1ead42b5acc AUX sha1sum.patch 3438 BLAKE2B 28309d9f7377825abbdaf115f284cc9186bf0248d58b57c4f4a61ce9dd4ed15feab330c03fd879539847601b1a28351a7c7000ea2154492c06ab700930dbc28b SHA512 0818f243634b181f854efc18a539dd5030e673d3fa7910b581eac3656aba4b74562baeafe790af536b91f538fad724673e369d30026c67418ec18a0d4103b725 DIST ledger-3.3.2.tar.gz 825274 BLAKE2B ee0901eaba234688cc36e399bd86118269d8691162feacf25e70ffaf28e8d572f47a62fb014126f5dce65c73135f21ad4364a642637a80d2577bf20b657fc9a4 SHA512 d5d7058f0e9a02ad1d46e6780675d446070824b321f0f4c1ea6ac0c3dd4f11f259113bc36cbc796e4bb6d0a7898d6a68a25cce639e27a2b2434eec11a612ecb0 -EBUILD ledger-3.3.2-r1.ebuild 2447 BLAKE2B 8bb037421eb51cfd8113528275d10e0d1c97bebad13a42ae54ae855ef852d504afa4cc1695f54577468a6480e0fe7e4d06ac78eb5261be9ef6c11bbe982e2f4d SHA512 794adfadabfae5c14ee7b6b792852b0e5002fdd50daf7cd376cb3512800ca40f2f44363dc47b642caa43fb8ac9e847a7f9b18a3b2aab96c4b12c86bc84e6c3f9 -EBUILD ledger-3.3.2-r2.ebuild 2781 BLAKE2B ea998e31cf762fd5b95f46d619c25ba050b78bbc48bdcd2fac656703542db5a9501ee68fbb734b2ee2b2284d1af9ede06b428a87655386aa1e331d4975a1127e SHA512 715de9587dfa17e13a64b39c6d9573368b3516ca3e99870cc3a60255f2867711ece36aa76df5284b29c3f14e4fbed3feae09cfb6b780be71b7deba56b3482f91 +EBUILD ledger-3.3.2-r2.ebuild 2777 BLAKE2B f39ed3c360b5455eb0bb8fe211ec529cdc819c7ba89a70854d102e356783d9c183c8d337a44ee379be879cff065019c8a86d41885e9f4d7228dc2d8987cfcc8c SHA512 0a366337c2122876f7d3ab8868b80c4cfe947691b8da6c5abece182d8a8e6969f16fc2f9e925e9229e52c681eb6bc79712a270d1f2ec26490d2a0d4c0e10a0cc MISC metadata.xml 307 BLAKE2B f3dac05e0bf7b2902ba20eb344829c1b835ff3847c71aaf1c53d28c5045b350fbf140e2f6b3cdb80f3be99b9fa3afffdd2c52d5081c6500c42233a402ce25a54 SHA512 db8c5c551a20e1e19151f31188fb1e61642591dbb01ad4e52b4542dabde3fd374ed234b7de6c9fdd11cf57477acc8dda07e26bc5ae8f251ab306309bf3772668 diff --git a/app-office/ledger/ledger-3.3.2-r1.ebuild b/app-office/ledger/ledger-3.3.2-r1.ebuild deleted file mode 100644 index 44c8341895e0..000000000000 --- a/app-office/ledger/ledger-3.3.2-r1.ebuild +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10,11,12} ) -CMAKE_REMOVE_MODULES_LIST=( FindPython Support ) -inherit bash-completion-r1 check-reqs cmake python-single-r1 - -DESCRIPTION="Double-entry accounting system with a command-line reporting interface" -HOMEPAGE="https://www.ledger-cli.org/" -SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86" -IUSE="debug doc python" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" - -RESTRICT="test" - -CHECKREQS_MEMORY=8G - -RDEPEND=" - dev-libs/boost:=[python?] - dev-libs/gmp:0= - dev-libs/mpfr:0= - python? ( - $(python_gen_cond_dep ' - dev-libs/boost:=[${PYTHON_USEDEP}] - dev-python/cheetah3:=[${PYTHON_USEDEP}] - ') - ${PYTHON_DEPS} - ) -" -DEPEND="${RDEPEND} - dev-libs/utfcpp - doc? ( - app-text/texlive[extra] - sys-apps/texinfo - virtual/texi2dvi - ) -" - -pkg_pretend() { - if use python; then - check-reqs_pkg_pretend - fi -} - -pkg_setup() { - if use python; then - check-reqs_pkg_setup - python-single-r1_pkg_setup - fi -} - -src_prepare() { - cmake_src_prepare - - # Want to type "info ledger" not "info ledger3" - sed -i -e 's/ledger3/ledger/g' \ - doc/{CMakeLists.txt,ledger3.texi} test/CheckTexinfo.py \ - tools/{cleanup.sh,gendocs.sh,prepare-commit-msg,spellcheck.sh} \ - || die "Failed to update info file name in file contents" - - mv doc/ledger{3,}.texi || die "Failed to rename info file name" - - rm -r lib/utfcpp || die - - eapply "${FILESDIR}/convenience.patch" - eapply_user -} - -src_configure() { - local mycmakeargs=( - -DBUILD_DOCS="$(usex doc)" - -DBUILD_WEB_DOCS="$(usex doc)" - -DUSE_PYTHON="$(usex python)" - -DCMAKE_INSTALL_DOCDIR="/usr/share/doc/${PF}" - -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON - -DBUILD_DEBUG="$(usex debug)" - -DUTFCPP_PATH="${ESYSROOT}/usr/include/utf8cpp" - ) - if use python; then - mycmakeargs+=( - -DPython_EXECUTABLE="${PYTHON}" - -DPython_INCLUDE_DIR="$(python_get_includedir)" - ) - fi - - cmake_src_configure -} - -src_compile() { - cmake_src_compile - - use doc && cmake_src_compile doc -} - -src_install() { - cmake_src_install - - newbashcomp contrib/${PN}-completion.bash ${PN} -} - -pkg_postinst() { - elog - elog "Since version 3, vim support is released separately." - elog "See https://github.com/ledger/vim-ledger" - elog - elog "For Emacs mode, emerge app-emacs/ledger-mode" -} - -# rainy day TODO: -# - IUSE test diff --git a/app-office/ledger/ledger-3.3.2-r2.ebuild b/app-office/ledger/ledger-3.3.2-r2.ebuild index 4d99599fedda..030d11a0b2c2 100644 --- a/app-office/ledger/ledger-3.3.2-r2.ebuild +++ b/app-office/ledger/ledger-3.3.2-r2.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -13,7 +13,7 @@ SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" LICENSE="BSD" SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" +KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86" IUSE="debug doc python" REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" diff --git a/app-office/libalkimia/Manifest b/app-office/libalkimia/Manifest index 9ee942d67b2f..2d0f65e291ef 100644 --- a/app-office/libalkimia/Manifest +++ b/app-office/libalkimia/Manifest @@ -1,4 +1,7 @@ AUX libalkimia-8.1.0-cmake.patch 1453 BLAKE2B 9dfb249e5fa95e78083f1f010960253915831888959944511d6e945a81f1f24a9e060c76e4927ac98ea8847c46b04dd8a1910079deb2ec0514a5b20d7c977d52 SHA512 61396c87615fd1105d1a3f10b687f987aaad6ca533b42ba36e9e5179a375e505652afad097726e8f2fd7da893c9593fe990461e7afa85b72933e803a8cf743db +AUX libalkimia-8.1.92-pkgconfig.patch 703 BLAKE2B 5a49104da8c2c7b9ea668121ad7aae462647c2a40e66041c573a45a276468efe3d804f20fa9bb269a4752664ee4d1a31852c1fbe916d3f18d966394b293a17f5 SHA512 20fcc0cecb3d26336e1b2e899e7944bd61769bf4d01c35bc25e296daf80c0b44d870e8dff026546d3fc6ec7dda8adcf6cc9c1ac3a29ec9176feb5e36665d6612 DIST alkimia-8.1.2.tar.xz 267008 BLAKE2B 2b82f09c773d965385dc81765ee6c9c01a20cb1e67c30058d95ec829a052181c8928774070977fe3da18cc36389fd5fd37abeb1b899def1cafc57ad161bc01b2 SHA512 019bb04623204efeb8a7a066213972cfdcb2634969f61adc8cc75deba89842a7d3e6cda056e05b68ad1f20a5ed6739c03531b10362732d7c7c92efc20bc58a1b +DIST alkimia-8.1.92_p20250211-3b2d7d37.tar.gz 679896 BLAKE2B 73df4374e1f31aeb0a6a362f8b67202cdab696401cf73419974ae636dfb5a24358cf924dd54d78376a0398186daa8d4361e62c294ef931d3be2d16427cfd38e3 SHA512 4d69aab70cfc494b2bec7bb6271f518f7ff9547f2cdff1c6969fe46f9f9686fa6d7827dab5f763c7fefd758d3332405d7d7fa41505757d05a719a04a072930a5 EBUILD libalkimia-8.1.2-r2.ebuild 1817 BLAKE2B c083a40c6c6f96c46f5f574f5ad6189b07c9df2c910d4d6bf248b9c52f37c4e201f9908a362e495b3beca9a8a64284c98861a2fa08e34f2e67464ebcbe66b898 SHA512 d82313f6d515613863d601d6db5f861af67d1a8695650ca9530b5b9f1e48d0cd930d22fc69058bfd751e9ee4e95431c52f0a524fde7cd66b032f3c48474a4eeb -MISC metadata.xml 422 BLAKE2B 3dcb004865bfc7dbb4367d1a5ca617acc15738e44072718c2b9e5eabe8848f50198ddabf9cc395cd3683f0576e67bffbf65e200704230d624beb310e89bb3e60 SHA512 50770ec9d3512be154220bbb386c7bda521d182be612e02d3f0c34d579b6f5a27d27dc08098fdf50715aa039af96581a73e34e7369e29a543f9792e4df9a0766 +EBUILD libalkimia-8.1.92_p20250211.ebuild 1637 BLAKE2B 992aa1b9d3177080fe7aed5523443bfbed01ba3ccb988c5317b672f604d715ff76ff4cdd63cc69e4886d313d72244c6b2443a2e008062174eddf6fb87c8ad2fe SHA512 42e2c3855a7412afa95f00c5895bf8c3ac59d3db9c7bfedc60bd7a4ff190809dec9d12a0c6049bc6caa9eb091fee4d9c01818947ca532772050ad2b4ca829b94 +MISC metadata.xml 509 BLAKE2B ef6bd0894a2b483ec7bd675a90884f8c212df3bdb10161e33602c436a23e119451fdd4e1f3c2aadbddf19ebb2c546e8731333260655536c1027bd7fdc17e8f0d SHA512 8da78c7797054cfaf1d0f910ac5fa807966900304b2f036cfb30aec255e7529e6b71f421ecabc29e8f06710f9cdd026efdcfe98a594403d8d5f14c229a39f0a8 diff --git a/app-office/libalkimia/files/libalkimia-8.1.92-pkgconfig.patch b/app-office/libalkimia/files/libalkimia-8.1.92-pkgconfig.patch new file mode 100644 index 000000000000..06b44ed52614 --- /dev/null +++ b/app-office/libalkimia/files/libalkimia-8.1.92-pkgconfig.patch @@ -0,0 +1,25 @@ +From 1fd611bcc060e779ac62f5f69d956c6dee2b3383 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Wed, 12 Jun 2019 16:43:54 +0200 +Subject: Fix pkgconfig libdir path + +--- + src/libalkimia.pc.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libalkimia.pc.in b/src/libalkimia.pc.in +--- a/src/libalkimia.pc.in ++++ b/src/libalkimia.pc.in +@@ -4,8 +4,8 @@ + # General installation directories + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=@CMAKE_INSTALL_LIBDIR@ +-includedir=@INCLUDE_INSTALL_DIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=${prefix}/@INCLUDE_INSTALL_DIR@ + + # Human-readable name + Name: Alkimia +-- +2.23.0 diff --git a/app-office/libalkimia/libalkimia-8.1.92_p20250211.ebuild b/app-office/libalkimia/libalkimia-8.1.92_p20250211.ebuild new file mode 100644 index 000000000000..d032c8a4fb43 --- /dev/null +++ b/app-office/libalkimia/libalkimia-8.1.92_p20250211.ebuild @@ -0,0 +1,62 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ECM_TEST="forceoptional" +KDE_ORG_NAME="alkimia" +KDE_ORG_COMMIT=3b2d7d37c082b66e52f67fb51c29fd6421963ada +KFMIN=5.115.0 +QTMIN=5.15.12 +inherit ecm kde.org + +DESCRIPTION="Library with common classes and functionality used by KDE finance applications" +HOMEPAGE="https://www.linux-apps.com/content/show.php/libalkimia?content=137323 +https://community.kde.org/Alkimia" + +LICENSE="LGPL-2.1" +SLOT="0/8" +if [[ ${KDE_BUILD_TYPE} = release ]]; then + KEYWORDS="~amd64" +fi +IUSE="doc webengine" + +DEPEND=" + dev-libs/gmp:0=[cxx(+)] + >=dev-qt/qtdbus-${QTMIN}:5 + >=dev-qt/qtdeclarative-${QTMIN}:5 + >=dev-qt/qtgui-${QTMIN}:5 + >=dev-qt/qtnetwork-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 + >=kde-frameworks/kcodecs-${KFMIN}:5 + >=kde-frameworks/kcompletion-${KFMIN}:5 + >=kde-frameworks/kconfig-${KFMIN}:5 + >=kde-frameworks/kcoreaddons-${KFMIN}:5 + >=kde-frameworks/ki18n-${KFMIN}:5 + >=kde-frameworks/kiconthemes-${KFMIN}:5 + >=kde-frameworks/knewstuff-${KFMIN}:5 + >=kde-frameworks/ktextwidgets-${KFMIN}:5 + >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 + >=kde-frameworks/kxmlgui-${KFMIN}:5 + webengine? ( >=dev-qt/qtwebengine-${QTMIN}:5 ) +" +RDEPEND="${DEPEND}" +BDEPEND=" + virtual/pkgconfig + doc? ( app-text/doxygen ) +" + +PATCHES=( "${FILESDIR}/${PN}-8.1.92-pkgconfig.patch" ) + +src_configure() { + local mycmakeargs=( + -DENABLE_FINANCEQUOTE=OFF + -DBUILD_APPLETS=OFF + -DBUILD_TOOLS=ON + -DBUILD_WITH_WEBKIT=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_MPIR=ON + $(cmake_use_find_package doc Doxygen) + -DBUILD_WITH_WEBENGINE=$(usex webengine) + ) + ecm_src_configure +} diff --git a/app-office/libalkimia/metadata.xml b/app-office/libalkimia/metadata.xml index dd3462e37fd9..73bfd0700f6a 100644 --- a/app-office/libalkimia/metadata.xml +++ b/app-office/libalkimia/metadata.xml @@ -6,7 +6,8 @@ Gentoo KDE Project - https://bugs.kde.org/ + https://bugs.kde.org/enter_bug.cgi?product=alkimia + office/alkimia Enable online quotes using dev-qt/qtwebengine diff --git a/app-office/libreoffice-bin/Manifest b/app-office/libreoffice-bin/Manifest index 44b11f153f91..952feb02f568 100644 --- a/app-office/libreoffice-bin/Manifest +++ b/app-office/libreoffice-bin/Manifest @@ -1,4 +1,6 @@ AUX 50-libreoffice-bin 158 BLAKE2B 2091698f80fbe097785c60b20f636150a2ee65bf52639fa1bb4a92341d050146040ad8912c5f5e3ca22e48ac3d819053c9948e256fb1d0e0901f7645934bfb89 SHA512 2d1158f48ac80f9212578d020e5659e777ff494adc3abc94438cec6890b88741f92ea2ed3bb4585ffdabe531d55c6938ca9408e9ece5a438e67d480eb406ed50 +DIST LibreOffice_24.8.4_Linux_x86-64_deb.tar.gz 209561263 BLAKE2B 7862e55d367c1ae4f10f638d6e36fcd21358e8b0079d1281d0cf4d44878c9148762b4aaec5cbf98195a7448aefc98d91489991cffcff70f11cd321dddf142fe0 SHA512 30c3f79495c8f63ef8287feb3a2e0e471673b6e6f06136cc3346d41bae2b53270f035dbde0ae5a2d111d224c52d9b4c0ba4fac682b205f31c4a9619ad6a8b944 +DIST LibreOffice_25.2.0_Linux_x86-64_deb.tar.gz 207070838 BLAKE2B 066ea5f4144bd82c5af32ace7663ecba2821832a168a107d585e1107a08f8c09699e3a18dbcce3e9f2834cde586b13ef7351b54c232f59e2f623c3488750e52c SHA512 ab5f6b977abb7517500f64d9a534ac6afe2e66b1fcb12fdbbf2e2c8eb854225d5cb2520e4214ef6665ab1d0475d439dfa04b175f4c032740ebb5d894ae4ac5a6 DIST amd64-bin-libreoffice-24.2.7.2.tar.xz 155436428 BLAKE2B adfa8c683d00ecf028f5e9aa2d128cbb0e2010cbdc2a99b4c4a05317955869177d6411335529997ac66ea55db3ec19a8b7bf1b2d09d6f2720d92f26514a1fa4a SHA512 ae912280a7529aa4df95e95340b4c9a6ce655d0e24d0eac76dbfdf0d81acadff621555ee76aa8fd83f577d9ce1b81cf8486c4f48468d401166db9939fb611d89 DIST amd64-bin-libreoffice-gnome-24.2.7.2.xd3 2398948 BLAKE2B 104421683a356c40a79253b91d777f217ec9608c5e0fa69f6ef4d6f418298863a87ee2785b2dbf6a8207f6b3f024c71c6e798e396b2d2993af2fecf7dc87ef2c SHA512 aa13197c75c859256472f786fb938d7c3da68989e53da10d9b7d9ee211b894c9d5ce768038b266feb8e5f50da490252e1addfbcc1e4f8b7f8be87a2b33992d7d DIST amd64-bin-libreoffice-gnome-java-24.2.7.2.xd3 32292082 BLAKE2B 1ce76e1c893d6e5b27cf0c01ad7c5d66a8fa6cec54d142f3f5f03e3c64a4bfbbf7471c3393d1b1f0410b89da6ccbd0f44d515e07379d6a95d84c4404cbcbc921 SHA512 fe1d5774856fb8f698b568ffb795776d3c959c0c4c589a7784672e42a7286a008a1679e6bbbda12e7135d21f01995bfb5c9965fef4049b1246fe7eda50a25683 @@ -6,4 +8,6 @@ DIST amd64-bin-libreoffice-java-24.2.7.2.xd3 32326596 BLAKE2B 03c48f8a592fdbfd0c DIST amd64-bin-libreoffice-kde-24.2.7.2.xd3 21800357 BLAKE2B 99880a908e653ea6e97e0d43ca6d1cf2e249358aac733278ed63a870efbe852a299e27318c6dcf83d7415980f79df64f0d6f8a9fbc60f0956c640c2627555eb5 SHA512 6b5bd27e753d097f7c6e362c381400e6ac5175f9466e6cb0c732f67a0abe045324dd3f72649398892375641da1b5638442c246ebd56930c8c7901415ab604352 DIST amd64-bin-libreoffice-kde-java-24.2.7.2.xd3 33602855 BLAKE2B d71000157c30d7f94152e26d46ce6c67a595dcaa92092890aa3ae52206860ec1911fceae15e02045344ff9fc4cb28aaad088a877d7699b341bcc25ef948b519f SHA512 2f28ffb4f2c60875be0fe451a4ac177bb413cdff0806a709b8adb5f24e4f4bff4d22a9818d27a297bf8f9674313dbc984b0d8ade364351ca4dc06121baa01b84 EBUILD libreoffice-bin-24.2.7.2.ebuild 6019 BLAKE2B ec729faa920ceaf8023fc8aff6f720b993b3abd169a1cb78898d70306eb170dbad9203171c353924ccb0e6d19f48508f9b3e65fb65b718b39590711b9a3474c4 SHA512 b5be229047a96121ec6f67716eee58ce07a98e5be5bfb567b845b5eb4bbe286141e760a0d3d8cd5d72bba943a1c76eb535c5a29e62055cf2c7c0f1840cac1d5a +EBUILD libreoffice-bin-24.8.4.ebuild 3154 BLAKE2B 57a67a8fbcc71b6ed8c286060d92000bbd493bd4d1bda78ce39af81d062e14bb767dd0c91915d1ec8ed27ca6aa95c50979cfdfcec57455673cd257c4b625ac21 SHA512 08e237767726d7dff9ce68bf0b0f9ae8bec176cab62dc54c684a181686d19db0766804a29e535148ef632c788165a6009b7bf3104af124424df6cdc950b0b672 +EBUILD libreoffice-bin-25.2.0.ebuild 3154 BLAKE2B 57a67a8fbcc71b6ed8c286060d92000bbd493bd4d1bda78ce39af81d062e14bb767dd0c91915d1ec8ed27ca6aa95c50979cfdfcec57455673cd257c4b625ac21 SHA512 08e237767726d7dff9ce68bf0b0f9ae8bec176cab62dc54c684a181686d19db0766804a29e535148ef632c788165a6009b7bf3104af124424df6cdc950b0b672 MISC metadata.xml 529 BLAKE2B a789c063d4ee905fd36dd0192d0f2769e0eeff96e69b9f27a2e75ca47a7bcb0ec841e68cd0d5299152df2b9b626bcf301066aa251e1b4ca2b74290d57c448c8e SHA512 b98d77cf995e824efcc392c185e616219d35976f43c343a1cfb1737fb44556edbd47b13d47924e3195159d0ec06e40f4909d0e7cd9deed7a8fa10928bc47becf diff --git a/app-office/libreoffice-bin/libreoffice-bin-24.8.4.ebuild b/app-office/libreoffice-bin/libreoffice-bin-24.8.4.ebuild new file mode 100644 index 000000000000..2062dcebf6ff --- /dev/null +++ b/app-office/libreoffice-bin/libreoffice-bin-24.8.4.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit java-pkg-opt-2 prefix unpacker xdg + +DESCRIPTION="A full office productivity suite. Binary package" +HOMEPAGE="https://www.libreoffice.org" +SRC_URI_AMD64=" + https://download.documentfoundation.org/libreoffice/stable/${PV}/deb/x86_64/LibreOffice_${PV}_Linux_x86-64_deb.tar.gz +" +SRC_URI=" + amd64? ( ${SRC_URI_AMD64} ) +" +S="${WORKDIR}" + +LICENSE="LGPL-3" +SLOT="0" +KEYWORDS="-* ~amd64" +IUSE="java gnome python" + +RDEPEND=" + acct-group/libreoffice + acct-user/libreoffice + app-accessibility/at-spi2-core:2 + app-arch/unzip + app-arch/zip + app-crypt/mit-krb5 + dev-libs/glib:2 + dev-libs/gobject-introspection + dev-libs/libxml2 + dev-libs/libxslt + dev-libs/nspr + dev-libs/nss + gnome-base/dconf + media-fonts/liberation-fonts + media-libs/fontconfig + media-libs/freetype + media-libs/gst-plugins-base:1.0 + media-libs/gstreamer:1.0 + media-libs/mesa[egl(+)] + net-dns/avahi + net-print/cups + sys-apps/dbus + sys-devel/gcc:* + sys-fs/e2fsprogs + sys-libs/glibc + sys-libs/zlib + virtual/libcrypt + virtual/opengl + x11-libs/cairo[X] + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXinerama + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/pango + gnome? ( + dev-libs/glib:2 + >=gnome-base/dconf-0.40.0 + gnome-extra/evolution-data-server + ) + || ( x11-misc/xdg-utils kde-plasma/kde-cli-tools ) + java? ( virtual/jre:11 ) +" +RESTRICT="test strip" + +QA_PREBUILT="opt/* usr/*" + +src_unpack() { + default + + BINPKG_BASE=$(find "${WORKDIR}" -mindepth 1 -maxdepth 1 -name 'LibreOffice_*' -type d -print || die) + BINPKG_BASE="${BINPKG_BASE##${WORKDIR}}" + [[ -z ${BINPKG_BASE} ]] && die "Failed to detect binary package directory!" + + # We don't package Firebird anymore + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-firebird*_amd64.deb || die + + if ! use java ; then + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-gnome-integration*_amd64.deb || die + fi + + # Requires KF5 as of 25.2.0, so we choose not to use it. + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-kde-integration*_amd64.deb || die + + # Bundled Python is used (3.10 as of 25.2.0), so no need for system dependency. + if ! use python ; then + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-python-script-provider*_amd64.deb || die + fi + + # The downloaded .deb has a DEBS/ directory with e.g. libreoffice25.2_25.2.0.3-3_amd64.deb + # and many other .debs for each component. + readarray -t -d '' debs < <(find "${WORKDIR}" -name '*.deb' -type f -print0 || die) + + local deb + for deb in "${debs[@]}" ; do + unpack_deb "${deb}" + done +} + +src_prepare() { + default + + cat <<-EOF > "${T}"/50-${PN} || die + SEARCH_DIRS_MASK="@GENTOO_PORTAGE_EPREFIX@/opt/libreoffice${PV%*.*}" + EOF + eprefixify "${T}"/50-${PN} +} + +src_install() { + dodir /usr /opt + mv "${S}"/usr/local/* "${S}"/usr || die + cp -aR "${S}"/opt/* "${ED}"/opt/ || die + cp -aR "${S}"/usr/* "${ED}"/usr/ || die + rmdir "${ED}"/usr/local || die + + # prevent revdep-rebuild from attempting to rebuild all the time + insinto /etc/revdep-rebuild + doins "${T}/50-${PN}" +} diff --git a/app-office/libreoffice-bin/libreoffice-bin-25.2.0.ebuild b/app-office/libreoffice-bin/libreoffice-bin-25.2.0.ebuild new file mode 100644 index 000000000000..2062dcebf6ff --- /dev/null +++ b/app-office/libreoffice-bin/libreoffice-bin-25.2.0.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit java-pkg-opt-2 prefix unpacker xdg + +DESCRIPTION="A full office productivity suite. Binary package" +HOMEPAGE="https://www.libreoffice.org" +SRC_URI_AMD64=" + https://download.documentfoundation.org/libreoffice/stable/${PV}/deb/x86_64/LibreOffice_${PV}_Linux_x86-64_deb.tar.gz +" +SRC_URI=" + amd64? ( ${SRC_URI_AMD64} ) +" +S="${WORKDIR}" + +LICENSE="LGPL-3" +SLOT="0" +KEYWORDS="-* ~amd64" +IUSE="java gnome python" + +RDEPEND=" + acct-group/libreoffice + acct-user/libreoffice + app-accessibility/at-spi2-core:2 + app-arch/unzip + app-arch/zip + app-crypt/mit-krb5 + dev-libs/glib:2 + dev-libs/gobject-introspection + dev-libs/libxml2 + dev-libs/libxslt + dev-libs/nspr + dev-libs/nss + gnome-base/dconf + media-fonts/liberation-fonts + media-libs/fontconfig + media-libs/freetype + media-libs/gst-plugins-base:1.0 + media-libs/gstreamer:1.0 + media-libs/mesa[egl(+)] + net-dns/avahi + net-print/cups + sys-apps/dbus + sys-devel/gcc:* + sys-fs/e2fsprogs + sys-libs/glibc + sys-libs/zlib + virtual/libcrypt + virtual/opengl + x11-libs/cairo[X] + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXinerama + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/pango + gnome? ( + dev-libs/glib:2 + >=gnome-base/dconf-0.40.0 + gnome-extra/evolution-data-server + ) + || ( x11-misc/xdg-utils kde-plasma/kde-cli-tools ) + java? ( virtual/jre:11 ) +" +RESTRICT="test strip" + +QA_PREBUILT="opt/* usr/*" + +src_unpack() { + default + + BINPKG_BASE=$(find "${WORKDIR}" -mindepth 1 -maxdepth 1 -name 'LibreOffice_*' -type d -print || die) + BINPKG_BASE="${BINPKG_BASE##${WORKDIR}}" + [[ -z ${BINPKG_BASE} ]] && die "Failed to detect binary package directory!" + + # We don't package Firebird anymore + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-firebird*_amd64.deb || die + + if ! use java ; then + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-gnome-integration*_amd64.deb || die + fi + + # Requires KF5 as of 25.2.0, so we choose not to use it. + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-kde-integration*_amd64.deb || die + + # Bundled Python is used (3.10 as of 25.2.0), so no need for system dependency. + if ! use python ; then + rm "${WORKDIR}"/${BINPKG_BASE}/DEBS/libobasis${PV%*.*}-python-script-provider*_amd64.deb || die + fi + + # The downloaded .deb has a DEBS/ directory with e.g. libreoffice25.2_25.2.0.3-3_amd64.deb + # and many other .debs for each component. + readarray -t -d '' debs < <(find "${WORKDIR}" -name '*.deb' -type f -print0 || die) + + local deb + for deb in "${debs[@]}" ; do + unpack_deb "${deb}" + done +} + +src_prepare() { + default + + cat <<-EOF > "${T}"/50-${PN} || die + SEARCH_DIRS_MASK="@GENTOO_PORTAGE_EPREFIX@/opt/libreoffice${PV%*.*}" + EOF + eprefixify "${T}"/50-${PN} +} + +src_install() { + dodir /usr /opt + mv "${S}"/usr/local/* "${S}"/usr || die + cp -aR "${S}"/opt/* "${ED}"/opt/ || die + cp -aR "${S}"/usr/* "${ED}"/usr/ || die + rmdir "${ED}"/usr/local || die + + # prevent revdep-rebuild from attempting to rebuild all the time + insinto /etc/revdep-rebuild + doins "${T}/50-${PN}" +} diff --git a/app-office/merkuro/Manifest b/app-office/merkuro/Manifest index 04a6064c59ae..e79851e364c9 100644 --- a/app-office/merkuro/Manifest +++ b/app-office/merkuro/Manifest @@ -1,7 +1,5 @@ DIST merkuro-24.08.3.tar.xz 774932 BLAKE2B 9e8a302762c4e777c85e7c511233f0b8f6db4e9c6b63488953ccf6db21da766ac31a5fb1d4211d455db19a2e5eba1cd0b4fd06adc06dcb42e665536a263fab86 SHA512 935e91fc731a5bf1dc68fa005b6c7043008ef662d06c7de8ae088dd5885e9bba5f4417c7570cc21cd3dbf9c514008ff9a4def21d421caefc27f17d622b6c8361 -DIST merkuro-24.12.1.tar.xz 793160 BLAKE2B f1717145aacb71b676afe8d83e7060eed2dd9070c0e2a62936398f43dd8f63d8d0cbbbf3057a97e5f7aba8168294828a6add8a64044ea33fee3079575c3393f9 SHA512 8a62440021b0dfa2d5b3193f777a8543e6f930c4ae79909b69a5555225172e3b3394eb8e0fbe2d683745aac39b55ce8ef56f41d117ce3268d90a34041d6beb7a DIST merkuro-24.12.2.tar.xz 793332 BLAKE2B ff4d6814325f7e8c244a85bdcfb2f7d87a8a7aecb70a3fef2a42242dd83c4bb9163133921db319c3bce0e5d627a87b4925e69ef8783bf892f6de5bc2c81edc62 SHA512 5b453cbb1e857b60358791eb39567d263ccf9974a694c47bf774f02e49933e0076fa39c558ee61f1311c26bf418a6d820a0f9a2871d7ac952ce1807dd746884f EBUILD merkuro-24.08.3.ebuild 1967 BLAKE2B fc53261876c654762e32e2b22365cfa2e84e960fa614a75dfc64b113b32e337e9d18fe90fba0adf925d82a5c73050c9949b8f641fb9cfe9d7762b9c36552a9d7 SHA512 a6b75e0abba25063aef6b61b32ca6df2bf38171017d6f98e1ae1111226adde86d04d312372aa1eaf005d4293dad9732224d9bfcb1b0b8602cd92c131cb0715a8 -EBUILD merkuro-24.12.1.ebuild 2068 BLAKE2B 45ad5d81fb813ce9696887da36ed9d279a05a31590b413cb605e9b4bfc52676c327877817b44cea2d0f2afc2f7d92e8220f41647569a70b9aec07b94cceaa03b SHA512 647d6e4cf9afaf1c245b1bd5da69feb7ea9e449edf9baa1a6b8fcb97395af0a4ebaf3fbabfe1f383117d18cc2887054bbd4d37722df3258c015503f2f54a0e1e EBUILD merkuro-24.12.2.ebuild 2068 BLAKE2B 45ad5d81fb813ce9696887da36ed9d279a05a31590b413cb605e9b4bfc52676c327877817b44cea2d0f2afc2f7d92e8220f41647569a70b9aec07b94cceaa03b SHA512 647d6e4cf9afaf1c245b1bd5da69feb7ea9e449edf9baa1a6b8fcb97395af0a4ebaf3fbabfe1f383117d18cc2887054bbd4d37722df3258c015503f2f54a0e1e MISC metadata.xml 318 BLAKE2B 922a5e32e706b2976c5f359a14194d268d3f499398576c80ce5fad8c0fcea0fbf048de4480a80a6a1889c88b8b6c14147654a3ab4d5ffbcc258c2290da63f6d1 SHA512 614cb8dda7ad2088e5d6ef39b449bb4be0ac72cd0231c320188d76d1816dce6490c5114bb4798112c4b11d99d30a9e82ff8fcf08ffa8c049589682a5e38208f6 diff --git a/app-office/merkuro/merkuro-24.12.1.ebuild b/app-office/merkuro/merkuro-24.12.1.ebuild deleted file mode 100644 index 35779b72d340..000000000000 --- a/app-office/merkuro/merkuro-24.12.1.ebuild +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -KDE_ORG_CATEGORY="pim" -ECM_TEST="forceoptional" -PVCUT=$(ver_cut 1-3) -KFMIN=6.7.0 -QTMIN=6.7.2 -inherit ecm gear.kde.org - -DESCRIPTION="Calendar application using Akonadi" -HOMEPAGE="https://apps.kde.org/merkuro.calendar/" - -LICENSE="|| ( GPL-2 GPL-3 ) CC0-1.0" -SLOT="6" -KEYWORDS="~amd64 ~arm64" -IUSE="" - -# All of the tests involve interacting with akonadi right now (as of 22.04) -RESTRICT="test" - -DEPEND=" - app-crypt/gpgme:=[cxx] - >=dev-libs/kirigami-addons-1.4.0:6 - >=dev-qt/qtbase-${QTMIN}:6[dbus,gui] - >=dev-qt/qtdeclarative-${QTMIN}:6 - >=dev-qt/qtlocation-${QTMIN}:6 - >=dev-qt/qtsvg-${QTMIN}:6 - >=kde-apps/akonadi-${PVCUT}:6 - >=kde-apps/akonadi-contacts-${PVCUT}:6 - >=kde-apps/akonadi-mime-${PVCUT}:6 - >=kde-apps/kcalutils-${PVCUT}:6 - >=kde-apps/kidentitymanagement-${PVCUT}:6 - >=kde-apps/kmailtransport-${PVCUT}:6 - >=kde-apps/kmbox-${PVCUT}:6 - >=kde-apps/kmime-${PVCUT}:6 - >=kde-apps/libkdepim-${PVCUT}:6 - >=kde-apps/libkleo-${PVCUT}:6 - >=kde-apps/mailcommon-${PVCUT}:6 - >=kde-apps/messagelib-${PVCUT}:6 - >=kde-apps/mimetreeparser-${PVCUT}:6 - >=kde-apps/pimcommon-${PVCUT}:6 - >=kde-frameworks/kcalendarcore-${KFMIN}:6 - >=kde-frameworks/kconfigwidgets-${KFMIN}:6 - >=kde-frameworks/kcontacts-${KFMIN}:6 - >=kde-frameworks/kcoreaddons-${KFMIN}:6 - >=kde-frameworks/kcrash-${KFMIN}:6 - >=kde-frameworks/kdbusaddons-${KFMIN}:6 - >=kde-frameworks/ki18n-${KFMIN}:6 - >=kde-frameworks/kiconthemes-${KFMIN}:6 - >=kde-frameworks/kio-${KFMIN}:6 - >=kde-frameworks/kirigami-${KFMIN}:6 - >=kde-frameworks/kitemmodels-${KFMIN}:6 - >=kde-frameworks/knotifications-${KFMIN}:6 - >=kde-frameworks/kwindowsystem-${KFMIN}:6 - >=kde-frameworks/kxmlgui-${KFMIN}:6 -" -# Qt5Compat.GraphicalEffects usage in multiple QML files -# qtlocation is needed at runtime only or fails to start -RDEPEND="${DEPEND} - >=dev-qt/qt5compat-${QTMIN}:6[qml] - >=dev-qt/qtlocation-${QTMIN}:6 - >=dev-qt/qtwebengine-${QTMIN}:6 - >=kde-apps/kdepim-runtime-${PVCUT}:6 - >=kde-frameworks/qqc2-desktop-style-${KFMIN}:6 -" diff --git a/app-office/scribus/Manifest b/app-office/scribus/Manifest index ab7ea3fbd9b1..36a0b9ddcae4 100644 --- a/app-office/scribus/Manifest +++ b/app-office/scribus/Manifest @@ -7,12 +7,13 @@ AUX scribus-1.6.2-poppler-24.11.0-2.patch 1573 BLAKE2B c1f00b8fe437f921aec7e96a7 AUX scribus-1.7.0-dont-install-thirdparty-license.patch 517 BLAKE2B cba2d9ad7e3b4a028f75dddb8296d8d5fd8f38c6eb91f673db4fda779375ed7f29e266874a66c9ea7d40c6e54908a2c98397072805cfb6c640c6a0a58b1cfd2a SHA512 8a38b5a1254f089f94f0fc8ca8f646e1c1d76a1193b232bb4420639a725f10cc2204d83c42a6a7535347dc7e2486048311e8221cfb445542b32511cedb07142e AUX scribus-1.7.0-findhyphen.patch 1900 BLAKE2B 6d5ef69a889afefa8449e35cdb4348d9cdf3ebe1b110b4de86a35e72e5faae97ae2fbadfe9ae2672a144d7ccea33ea95e0e25f2894f444c3a58a6e1b713aa357 SHA512 cde9231dd4783832340d9dd3df1522d3f5f7a3ab4f26d18ca5825d634d8102e3ca1bae483f0bd111e7e4fff31e5c9154923a9d79eae735a0445b6829e74b5c5f AUX scribus-1.7.0-fix-icon-version.patch 410 BLAKE2B 65d077457d8c85a8830345d7299b054806c16285e75ed4055f14ba4d844a9b0fd4972f0f1eba6ec889af4f460f50522d88722bfa34b123b80f280f2f0e029462 SHA512 230085c17081a33fb900e686e7469b878965c659e10845c39d2c7dc68a11e1f6a01bd614a21a555539c437a567ac8231490da739bfe5c17ef13fed9bd61352e2 +AUX scribus-1.7.0-poppler-25.02.0.patch 6118 BLAKE2B d248d0289374310e560553aa3c40fdee92e53168e148bc87450005d394a54dcfe5a25b64fe759a3d4cbcb2fb76096c198fad21d94a13465ec4d82423834839d4 SHA512 2e955b92303294af6d73314d1c8f2793618c51898ccf6ced54af6d022c98dfc0994250a2cb3657d385650f5883d5d0ee178817918c0b96e0a2c052cdd9e96a22 DIST scribus-1.6.2.tar.xz 73129400 BLAKE2B 2da98dc322319db18a157f66aef024b7392dbbfaf22adba14f719b48c644d1cc1546cc4d0cccf6dfe479571cf84de6f5645e5d452154f96ddc886e390702d547 SHA512 2f691c1f6b7beada89be410a2936b23641913bf26bd2152974bbaa747aeafb05aa797356a85bd55c14f60f0031ce1addedc9a3ce3e92546ebbb45f96a5ff3e62 DIST scribus-1.6.3.tar.xz 74909384 BLAKE2B b208270fce3e013692e90ec354849f99440efc97bda0e15c0baea16a5fd039b7435498c4d2669bd5c3caaca9c7d1125f78ea6fde483bf81449a451f9f54bf26d SHA512 b408ed862285d06d0f79a646ac2b43b0eb0b241c23dc276544e94a72e4fc3a0bf4efd500c5893c295886b11490115cdbe5f34ce7de51da30d31099831ba25d87 DIST scribus-1.7.0.tar.xz 97163704 BLAKE2B 02c57ce21d0f48d2e6906d8056fa766ddbdae88d6ac4c758996ba59776243d308ffd34d6c1e5dc5b3f2e2042f6760f0188efa9ef3b16f2b38ff54dc4bc7e2bef SHA512 c3a392d69e109165a9c28c2396e0e2e18df2d232099a6836f6a472fc3f899f50316e2b9227be40c3226dffc9f84e9db94dc2f353052fa06b35c776cd4f664448 EBUILD scribus-1.6.2.ebuild 4201 BLAKE2B 1e28eb40199277d68579f85d47468acb34b0b5575f11e628ff5edb6a45fca4056f1d8ee9f7f3933cb81e389903498db0d450628443643cc3358116f8e47aa0e6 SHA512 bd3be20c40fd83e5d22154b8c4ceb95cbb212403941f5bbe28eae80191d346e2d512db3fbdf87cac5e932fe0e2a194c8f61b2896ce573e6ef67b385b588386b9 -EBUILD scribus-1.6.3.ebuild 4102 BLAKE2B 1e1aa6814bde06709b4612734881778cd627523ab5474d39877c96b6e4c7d75a27cd7ecff62aba4646792fd02d79663980221618a2ca6da3d3f03556806aa9b9 SHA512 b09019162ffae7857bb3d3b0ed3c82caeabec120a53b2f93c5aa4a76b9430fdec81cf6bb7675e0198ed6e29773ca3a1bcc5dfe83b3d64af52844944f66ad1f04 +EBUILD scribus-1.6.3.ebuild 4098 BLAKE2B 9a08e08b76b89785381ba9f515051262dbce6d84541ca39acf88ed1d98163afd14bc249ce8701a5e34b3636822dd571a2d6f43dc74c362c19ecb9a9a58a07d80 SHA512 90d3df4bfd282537cf54265446c0660c7ca5eac422e02a01f2b561194f9beef278cd0e3dcdc0a19d2c22b0dcf760d5a2fe201736519274ba184dbc381e70ee3b EBUILD scribus-1.6.9999.ebuild 4102 BLAKE2B 5e2a0cd07aae3d44d0439fc55343aede839ef7391e72c9e9dcfb92246f127f58faa1a597c2ff9a3564bc77522f709ceb9e424aa3a61540ce6e569f633104f028 SHA512 85b061e3e87e6d9dcf0c5e025ecc7e2acb533c2e7420bda14d3be53b91e5daa7b6b74f4d5061e74cf9fc22d89eeb7e03be956c2c3aaed5e997a7c6ad090b652f -EBUILD scribus-1.7.0.ebuild 3991 BLAKE2B 9b93a16fe5a183e055ec9d45be3e27fa75888cb2582b7223b43f181235fc8a5eca680a8999f6a13e5f832f2c6dfecb8c79f7a118d732609d97d53812aa158a33 SHA512 4822791900e3f32f5a5138dc47f2ac95c0c349821f28307b5e044ba6f8c63ad3effc9808765e36b3c7000ecf603d292e2bb3f240718306b80a0b2626c5021597 +EBUILD scribus-1.7.0.ebuild 4046 BLAKE2B f84af247a00894738e6be56c8a1214dc8454c869c26ea99f2b8d7b4023421daece931fa7b2ba2b3f3cb40ff1b0059dfa4c06715e8aef63dc35fa31dfb78aa26f SHA512 b787001c4dae67b255a05495a4cc0492ae222f952b63957dfd0707e27702fe941a7f1da6ce5e6407a821e6c7253a54e88e1b8a0c93c7c7a89fa2e52dadf8376a EBUILD scribus-9999.ebuild 3985 BLAKE2B d6c2f8345dc29f66095b498d64f322ac4026c30cd08dd5ff1d4a1ed2d55b3f9f031385efdf0d6c8dbce76cfa1a0422e5858317da895665b40348959168e09bbe SHA512 8a0e3811591b383f9efea782cdad96bf83f739cc951e80c296025b9bfea8220c839802644b476bb7de011263946edb06ccba559ac93663920c7181df626b9f6a MISC metadata.xml 883 BLAKE2B 7dc92ce97a3337f9397b52c647c00313790a8a674c88ba3491ef55b056941d6dcdfe1eac9009c4a5f2c4ebe70d81f9fa27439efad544bf8415ffb2235440402e SHA512 3348ea8be21835e88182c23e21dfaef4f52928aee1f4af1c88707cc3bd3f016d56986f197eec9b26279f4df72f20559fe7f4cad7439e67a66ab2c1b4f585ad91 diff --git a/app-office/scribus/files/scribus-1.7.0-poppler-25.02.0.patch b/app-office/scribus/files/scribus-1.7.0-poppler-25.02.0.patch new file mode 100644 index 000000000000..288f42ae3c53 --- /dev/null +++ b/app-office/scribus/files/scribus-1.7.0-poppler-25.02.0.patch @@ -0,0 +1,162 @@ +Index: Scribus/scribus/plugins/import/pdf/importpdf.cpp +=================================================================== +--- Scribus/scribus/plugins/import/pdf/importpdf.cpp (revision 26665) ++++ Scribus/scribus/plugins/import/pdf/importpdf.cpp (revision 26666) +@@ -416,11 +416,11 @@ + + if (dev->isOk()) + { +- OCGs* ocg = pdfDoc->getOptContentConfig(); ++ POPPLER_CONST_25_02 OCGs* ocg = pdfDoc->getOptContentConfig(); + if (ocg && ocg->hasOCGs()) + { + QStringList ocgNames; +- Array *order = ocg->getOrderArray(); ++ POPPLER_CONST_25_02 Array *order = ocg->getOrderArray(); + if (order) + { + for (int i = 0; i < order->getLength (); ++i) +Index: Scribus/scribus/plugins/import/pdf/importpdfconfig.h +=================================================================== +--- Scribus/scribus/plugins/import/pdf/importpdfconfig.h (revision 26665) ++++ Scribus/scribus/plugins/import/pdf/importpdfconfig.h (revision 26666) +@@ -15,4 +15,10 @@ + + ((micro) * 1)) + #define POPPLER_ENCODED_VERSION POPPLER_VERSION_ENCODE(POPPLER_VERSION_MAJOR, POPPLER_VERSION_MINOR, POPPLER_VERSION_MICRO) + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++#define POPPLER_CONST_25_02 const ++#else ++#define POPPLER_CONST_25_02 + #endif ++ ++#endif +Index: Scribus/scribus/plugins/import/pdf/slaoutput.cpp +=================================================================== +--- Scribus/scribus/plugins/import/pdf/slaoutput.cpp (revision 26665) ++++ Scribus/scribus/plugins/import/pdf/slaoutput.cpp (revision 26666) +@@ -2791,7 +2791,7 @@ + { + if (dictRef->isNull()) + return; +- OCGs *contentConfig = m_catalog->getOptContentConfig(); ++ POPPLER_CONST_25_02 OCGs *contentConfig = m_catalog->getOptContentConfig(); + OptionalContentGroup *oc; + if (dictRef->isRef()) + { +@@ -2928,7 +2928,11 @@ + SplashFontFile *fontFile; + SplashFontSrc *fontsrc = nullptr; + Object refObj, strObj; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ std::vector codeToGID; ++#else + int *codeToGID = nullptr; ++#endif + const double *textMat = nullptr; + double m11, m12, m21, m22, fontSize; + SplashCoord mat[4] = { 1.0, 0.0, 0.0, 1.0 }; +@@ -3055,10 +3059,20 @@ + } + else + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ codeToGID.clear(); ++#else + codeToGID = nullptr; ++#endif + n = 0; + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, std::move(codeToGID), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) + if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, codeToGID, n, fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); +@@ -3089,6 +3103,18 @@ + #endif + break; + case fontCIDType0COT: ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ if (((GfxCIDFont*) gfxFont)->getCIDToGIDLen() > 0) ++ { ++ codeToGID = ((GfxCIDFont*) gfxFont)->getCIDToGID(); ++ n = codeToGID.size(); ++ } ++ else ++ { ++ codeToGID.clear(); ++ n = 0; ++ } ++#else + if (((GfxCIDFont *) gfxFont)->getCIDToGID()) + { + n = ((GfxCIDFont *) gfxFont)->getCIDToGIDLen(); +@@ -3100,7 +3126,15 @@ + codeToGID = nullptr; + n = 0; + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#endif ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont(std::move(id), fontsrc, std::move(codeToGID), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", ++ gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) + if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont(std::move(id), fontsrc, codeToGID, n, fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", +@@ -3118,6 +3152,15 @@ + break; + case fontCIDType2: + case fontCIDType2OT: ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ codeToGID.clear(); ++ n = 0; ++ if (((GfxCIDFont*) gfxFont)->getCIDToGIDLen() > 0) ++ { ++ codeToGID = ((GfxCIDFont*) gfxFont)->getCIDToGID(); ++ n = codeToGID.size(); ++ } ++#else + codeToGID = nullptr; + n = 0; + if (((GfxCIDFont *) gfxFont)->getCIDToGID()) +@@ -3129,6 +3172,7 @@ + memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), n * sizeof(*codeToGID)); + } + } ++#endif + else + { + #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) +@@ -3144,10 +3188,20 @@ + #endif + if (! ff) + goto err2; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ codeToGID = ((GfxCIDFont*) gfxFont)->getCodeToGIDMap(ff.get()); ++#else + codeToGID = ((GfxCIDFont*) gfxFont)->getCodeToGIDMap(ff.get(), &n); ++#endif + ff.reset(); + } +-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0) ++ if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, std::move(codeToGID), fontLoc->fontNum))) ++ { ++ error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); ++ goto err2; ++ } ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0) + if (!(fontFile = m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, codeToGID, n, fontLoc->fontNum))) + { + error(errSyntaxError, -1, "Couldn't create a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : "(unnamed)"); diff --git a/app-office/scribus/scribus-1.6.3.ebuild b/app-office/scribus/scribus-1.6.3.ebuild index 909c74802d90..641ff2870f37 100644 --- a/app-office/scribus/scribus-1.6.3.ebuild +++ b/app-office/scribus/scribus-1.6.3.ebuild @@ -17,7 +17,7 @@ if [[ "${PV}" == *9999* ]] ; then else SRC_URI="https://downloads.sourceforge.net/project/${PN}/${PN}/${PV}/${P}.tar.xz" S="${WORKDIR}/${P}" - KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" + KEYWORDS="amd64 ppc ppc64 x86" fi LICENSE="GPL-2" diff --git a/app-office/scribus/scribus-1.7.0.ebuild b/app-office/scribus/scribus-1.7.0.ebuild index fe52e9c32325..11ecb660fcc5 100644 --- a/app-office/scribus/scribus-1.7.0.ebuild +++ b/app-office/scribus/scribus-1.7.0.ebuild @@ -80,6 +80,7 @@ PATCHES=( "${FILESDIR}"/${PN}-1.7.0-findhyphen.patch "${FILESDIR}"/${PN}-1.7.0-dont-install-thirdparty-license.patch "${FILESDIR}"/${PN}-1.7.0-fix-icon-version.patch + "${FILESDIR}"/${P}-poppler-25.02.0.patch # from trunk ) src_prepare() { diff --git a/app-portage/Manifest.gz b/app-portage/Manifest.gz index f813866b5423976dcad1e640f3623c6d1d2ce2a4..494b1ae499b5f211ce3c6e200acc41a61313ab42 100644 GIT binary patch literal 9756 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 bash51 + my_p=${PN}$(ver_cut 1-2) my_p=${my_p/.} + + for (( my_patch_idx = 1; my_patch_idx <= PLEVEL; my_patch_idx++ )); do + printf -v my_patch_ver %s-%03d "${my_p}" "${my_patch_idx}" + my_urls+=( {'mirror://gnu/bash','ftp://ftp.cwru.edu/pub/bash'}/"${MY_P}-patches/${my_patch_ver}" ) + MY_PATCHES+=( "${DISTDIR}/${my_patch_ver}" ) + done + + SRC_URI="${my_urls[*]} verify-sig? ( ${my_urls[*]/%/.sig} )" + S=${WORKDIR}/${MY_P} + + unset -v my_urls my_p my_patch_idx my_patch_ver +fi + +if [[ ${GENTOO_PATCH_VER} ]]; then + SRC_URI+=" https://dev.gentoo.org/~${GENTOO_PATCH_DEV:?}/distfiles/${CATEGORY}/${PN}/${PN}-${GENTOO_PATCH_VER:?}-patches.tar.xz" +fi + +LICENSE="GPL-3+" +SLOT="0" +if (( PLEVEL >= 0 )); then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +fi +IUSE="afs bashlogger examples mem-scramble +net nls plugins pgo +readline" + +DEPEND=" + >=sys-libs/ncurses-5.2-r2:= + nls? ( virtual/libintl ) +" +if (( PLEVEL >= 0 )); then + DEPEND+=" readline? ( >=sys-libs/readline-${READLINE_VER}:= )" +fi +RDEPEND=" + ${DEPEND} +" +# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011). +BDEPEND=" + pgo? ( dev-util/gperf ) + verify-sig? ( sec-keys/openpgp-keys-chetramey ) +" + +# EAPI 8 tries to append it but it doesn't exist here. +QA_CONFIGURE_OPTIONS="--disable-static" + +PATCHES=( + #"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}/ + + # Patches to or from Chet, posted to the bug-bash mailing list. + "${FILESDIR}/${PN}-5.0-syslog-history-extern.patch" +) + +pkg_setup() { + # bug #7332 + if is-flag -malign-double; then + eerror "Detected bad CFLAGS '-malign-double'. Do not use this" + eerror "as it breaks LFS (struct stat64) on x86." + die "remove -malign-double from your CFLAGS mr ricer" + fi + + if use bashlogger; then + ewarn "The logging patch should ONLY be used in restricted (i.e. honeypot) envs." + ewarn "This will log ALL output you enter into the shell, you have been warned." + fi +} + +src_unpack() { + local patch + + if [[ ${PV} == 9999 ]]; then + git-r3_src_unpack + elif (( PLEVEL < 0 )) && [[ ${PV} == *_p* ]] ; then + default + else + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}/${MY_P}.tar.gz"{,.sig} + + for patch in "${MY_PATCHES[@]}"; do + verify-sig_verify_detached "${patch}"{,.sig} + done + fi + + unpack "${MY_P}.tar.gz" + + if [[ ${GENTOO_PATCH_VER} ]]; then + unpack "${PN}-${GENTOO_PATCH_VER}-patches.tar.xz" + fi + fi +} + +src_prepare() { + # Include official patches. + (( PLEVEL > 0 )) && eapply -p0 "${MY_PATCHES[@]}" + + # Clean out local libs so we know we use system ones w/releases. The + # touch utility is invoked for the benefit of config.status. + if (( PLEVEL >= 0 )); then + rm -rf lib/{readline,termcap}/* \ + && touch lib/{readline,termcap}/Makefile.in \ + && sed -i -E 's:\$[{(](RL|HIST)_LIBSRC[)}]/[[:alpha:]_-]*\.h::g' Makefile.in \ + || die + fi + + # Prefixify hardcoded path names. No-op for non-prefix. + hprefixify pathnames.h.in + + # Avoid regenerating docs after patches, bug #407985. + sed -i -E '/^(HS|RL)USER/s:=.*:=:' doc/Makefile.in \ + && touch -r . doc/* \ + || die + + # Sometimes hangs (more noticeable w/ pgo), bug #907403. + rm tests/run-jobs || die + + eapply -p0 "${PATCHES[@]}" + eapply_user +} + +src_configure() { + local -a myconf + + # Upstream only test with Bison and require GNUisms like YYEOF and + # YYERRCODE. The former at least may be in POSIX soon: + # https://www.austingroupbugs.net/view.php?id=1269. + # configure warns on use of non-Bison but doesn't abort. The result + # may misbehave at runtime. + unset -v YACC + + # wcsnwidth(), substring() issues with -Wlto-type-mismatch, reported + # upstream to Chet by email. + filter-lto + + myconf=( + --disable-profiling + + # Force linking with system curses ... the bundled termcap lib + # sucks bad compared to ncurses. For the most part, ncurses + # is here because readline needs it. But bash itself calls + # ncurses in one or two small places :(. + --with-curses + + $(use_enable mem-scramble) + $(use_enable net net-redirections) + $(use_enable readline) + $(use_enable readline bang-history) + $(use_enable readline history) + $(use_with afs) + $(use_with mem-scramble bash-malloc) + ) + + # For descriptions of these, see config-top.h. + # bashrc/#26952 bash_logout/#90488 ssh/#24762 mktemp/#574426 + append-cppflags \ + -DDEFAULT_PATH_VALUE=\'\""${EPREFIX}"/usr/local/sbin:"${EPREFIX}"/usr/local/bin:"${EPREFIX}"/usr/sbin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/bin\"\' \ + -DSTANDARD_UTILS_PATH=\'\""${EPREFIX}"/bin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/usr/sbin\"\' \ + -DSYS_BASHRC=\'\""${EPREFIX}"/etc/bash/bashrc\"\' \ + -DSYS_BASH_LOGOUT=\'\""${EPREFIX}"/etc/bash/bash_logout\"\' \ + -DNON_INTERACTIVE_LOGIN_SHELLS \ + -DSSH_SOURCE_BASHRC \ + $(use bashlogger && echo -DSYSLOG_HISTORY) + + use nls || myconf+=( --disable-nls ) + + if (( PLEVEL >= 0 )); then + # Historically, we always used the builtin readline, but since + # our handling of SONAME upgrades has gotten much more stable + # in the PM (and the readline ebuild itself preserves the old + # libs during upgrades), linking against the system copy should + # be safe. + # Exact cached version here doesn't really matter as long as it + # is at least what's in the DEPEND up above. + export ac_cv_rl_version=${READLINE_VER%%_*} + + # Use system readline only with released versions. + myconf+=( --with-installed-readline=. ) + fi + + if use plugins; then + append-ldflags "-Wl,-rpath,${EPREFIX}/usr/$(get_libdir)/bash" + else + # Disable the plugins logic by hand since bash doesn't provide + # a way of doing it. + export ac_cv_func_dl{close,open,sym}=no \ + ac_cv_lib_dl_dlopen=no ac_cv_header_dlfcn_h=no + + sed -i -e '/LOCAL_LDFLAGS=/s:-rdynamic::' configure || die + fi + + # bug #444070 + tc-export AR + + econf "${myconf[@]}" +} + +src_compile() { + local -a pgo_generate_flags pgo_use_flags + local flag + + # -fprofile-partial-training because upstream notes the test suite isn't + # super comprehensive. + # https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html#sec-gcc10-pgo + if use pgo; then + pgo_generate_flags=( + -fprofile-update=atomic + -fprofile-dir="${T}"/pgo + -fprofile-generate="${T}"/pgo + ) + pgo_use_flags=( + -fprofile-use="${T}"/pgo + -fprofile-dir="${T}"/pgo + ) + if flag=$(test-flags-CC -fprofile-partial-training); then + pgo_generate_flags+=( "${flag}" ) + pgo_use_flags+=( "${flag}" ) + fi + fi + + # builtins/evalstring.c needs y.tab.h but can't (easily) specify the dep on it from above + emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" y.tab.h + emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" + use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" all others + + # Build Bash and run its tests to generate profiles. + if (( ${#pgo_generate_flags[@]} )); then + # Used in test suite. + unset -v A + + emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" -k check + + if tc-is-clang; then + llvm-profdata merge "${T}"/pgo --output="${T}"/pgo/default.profdata || die + fi + + # Rebuild Bash using the profiling data we just generated. + emake clean + emake CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" y.tab.h + emake CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" + use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" all others + fi +} + +src_test() { + # Used in test suite. + unset -v A + + default +} + +src_install() { + local d f + + default + + my_prefixify() { + while read -r; do + if [[ $REPLY == *$1* ]]; then + REPLY=${REPLY/"/etc/"/"${EPREFIX}/etc/"} + fi + printf '%s\n' "${REPLY}" || ! break + done < "$2" || die + } + + dodir /bin + mv -- "${ED}"/usr/bin/bash "${ED}"/bin/ || die + dosym bash /bin/rbash + + insinto /etc/bash + doins "${FILESDIR}"/bash_logout + my_prefixify bashrc.d "${FILESDIR}"/bashrc-r1 | newins - bashrc + + insinto /etc/bash/bashrc.d + my_prefixify DIR_COLORS "${FILESDIR}"/bashrc.d/10-gentoo-color.bash | newins - 10-gentoo-color.bash + newins "${FILESDIR}"/bashrc.d/10-gentoo-title-r1.bash 10-gentoo-title.bash + if [[ ! ${EPREFIX} ]]; then + doins "${FILESDIR}"/bashrc.d/15-gentoo-bashrc-check.bash + fi + + insinto /etc/skel + for f in bash{_logout,_profile,rc}; do + newins "${FILESDIR}/dot-${f}" ".${f}" + done + + if use plugins; then + exeinto "/usr/$(get_libdir)/bash" + set -- examples/loadables/*.o + doexe "${@%.o}" + + insinto /usr/include/bash-plugins + doins *.h builtins/*.h include/*.h lib/{glob/glob.h,tilde/tilde.h} + fi + + if use examples; then + for d in examples/{functions,misc,scripts,startup-files}; do + exeinto "/usr/share/doc/${PF}/${d}" + docinto "${d}" + for f in "${d}"/*; do + if [[ ${f##*/} != @(PERMISSION|*README) ]]; then + doexe "${f}" + else + dodoc "${f}" + fi + done + done + fi + + # Install bash_builtins.1 and rbash.1. + emake -C doc DESTDIR="${D}" install_builtins + sed 's:bash\.1:man1/&:' doc/rbash.1 > "${T}"/rbash.1 || die + doman "${T}"/rbash.1 + + newdoc CWRU/changelog ChangeLog + dosym bash.info /usr/share/info/bashref.info +} + +pkg_preinst() { + if [[ -e ${EROOT}/etc/bashrc ]] && [[ ! -d ${EROOT}/etc/bash ]]; then + mkdir -p -- "${EROOT}"/etc/bash \ + && mv -f -- "${EROOT}"/etc/bashrc "${EROOT}"/etc/bash/ \ + || die + fi +} + +pkg_postinst() { + local old_ver + + # If /bin/sh does not exist, provide it. + if [[ ! -e ${EROOT}/bin/sh ]]; then + ln -sf -- bash "${EROOT}"/bin/sh || die + fi + + read -r old_ver <<<"${REPLACING_VERSIONS}" + if [[ ! $old_ver ]]; then + : + elif ver_test "$old_ver" -ge "5.2" && ver_test "$old_ver" -ge "5.2_p26-r8"; then + return + fi + + while read -r; do ewarn "${REPLY}"; done <<'EOF' +Files under /etc/bash/bashrc.d must now have a suffix of .sh or .bash. + +Gentoo now defaults to defining PROMPT_COMMAND as an array. Depending on the +characteristics of the operating environment, it may contain a command to set +the terminal's window title. Those who were already choosing to customise the +PROMPT_COMMAND variable are now advised to append their commands like so: + +PROMPT_COMMAND+=('custom command goes here') + +Gentoo no longer defaults to having bash set the window title in the case +that the terminal is controlled by sshd(8), unless screen is launched on the +remote side or the terminal reliably supports saving and restoring the title +(as alacritty, foot and tmux do). Those wanting for the title to be set +regardless may adjust ~/.bashrc - or create a custom /etc/bash/bashrc.d +drop-in - to set PROMPT_COMMMAND like so: + +PROMPT_COMMAND=(genfun_set_win_title) + +Those who would prefer for bash never to interfere with the window title may +now opt out of the default title setting behaviour, either with the "unset -v +PROMPT_COMMAND" command or by re-defining PROMPT_COMMAND as desired. +EOF +} diff --git a/app-shells/bash/bash-5.3_beta_p20250212.ebuild b/app-shells/bash/bash-5.3_beta_p20250212.ebuild new file mode 100644 index 000000000000..e461a1fa6de4 --- /dev/null +++ b/app-shells/bash/bash-5.3_beta_p20250212.ebuild @@ -0,0 +1,414 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/chetramey.asc +inherit flag-o-matic toolchain-funcs prefix verify-sig + +# Uncomment if we have a patchset. +#GENTOO_PATCH_DEV="sam" +#GENTOO_PATCH_VER="${PV}" + +MY_PV=${PV/_p*} +MY_PV=${MY_PV/_/-} +MY_P=${PN}-${MY_PV} +MY_PATCHES=() + +# Determine the patchlevel. +case ${PV} in + 9999|*_alpha*|*_beta*|*_rc*) + # Set a negative patchlevel to indicate that it's a pre-release. + PLEVEL=-1 + ;; + *_p*) + PLEVEL=${PV##*_p} + ;; + *) + PLEVEL=0 +esac + +# The version of readline this bash normally ships with. Note that we only use +# the bundled copy of readline for pre-releases. +READLINE_VER="8.3_alpha" + +DESCRIPTION="The standard GNU Bourne again shell" +HOMEPAGE="https://tiswww.case.edu/php/chet/bash/bashtop.html https://git.savannah.gnu.org/cgit/bash.git" + +if [[ ${PV} == 9999 ]]; then + EGIT_REPO_URI="https://git.savannah.gnu.org/git/bash.git" + EGIT_BRANCH=devel + inherit git-r3 +elif (( PLEVEL < 0 )) && [[ ${PV} == *_p* ]] ; then + # It can be useful to have snapshots in the pre-release period once + # the first alpha is out, as various bugs get reported and fixed from + # the alpha, and the next pre-release is usually quite far away. + # + # i.e. if it's worth packaging the alpha, it's worth packaging a followup. + BASH_COMMIT="c3ca11424d2ae66cafa2f931b008dfb728e209a5" + SRC_URI="https://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-${BASH_COMMIT}.tar.gz -> ${P}-${BASH_COMMIT}.tar.gz" + S=${WORKDIR}/${PN}-${BASH_COMMIT} +else + my_urls=( {'mirror://gnu/bash','ftp://ftp.cwru.edu/pub/bash'}/"${MY_P}.tar.gz" ) + + # bash-5.1 -> bash51 + my_p=${PN}$(ver_cut 1-2) my_p=${my_p/.} + + for (( my_patch_idx = 1; my_patch_idx <= PLEVEL; my_patch_idx++ )); do + printf -v my_patch_ver %s-%03d "${my_p}" "${my_patch_idx}" + my_urls+=( {'mirror://gnu/bash','ftp://ftp.cwru.edu/pub/bash'}/"${MY_P}-patches/${my_patch_ver}" ) + MY_PATCHES+=( "${DISTDIR}/${my_patch_ver}" ) + done + + SRC_URI="${my_urls[*]} verify-sig? ( ${my_urls[*]/%/.sig} )" + S=${WORKDIR}/${MY_P} + + unset -v my_urls my_p my_patch_idx my_patch_ver +fi + +if [[ ${GENTOO_PATCH_VER} ]]; then + SRC_URI+=" https://dev.gentoo.org/~${GENTOO_PATCH_DEV:?}/distfiles/${CATEGORY}/${PN}/${PN}-${GENTOO_PATCH_VER:?}-patches.tar.xz" +fi + +LICENSE="GPL-3+" +SLOT="0" +if (( PLEVEL >= 0 )); then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +fi +IUSE="afs bashlogger examples mem-scramble +net nls plugins pgo +readline" + +DEPEND=" + >=sys-libs/ncurses-5.2-r2:= + nls? ( virtual/libintl ) +" +if (( PLEVEL >= 0 )); then + DEPEND+=" readline? ( >=sys-libs/readline-${READLINE_VER}:= )" +fi +RDEPEND=" + ${DEPEND} +" +# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011). +BDEPEND=" + pgo? ( dev-util/gperf ) + verify-sig? ( sec-keys/openpgp-keys-chetramey ) +" + +# EAPI 8 tries to append it but it doesn't exist here. +QA_CONFIGURE_OPTIONS="--disable-static" + +PATCHES=( + #"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}/ + + # Patches to or from Chet, posted to the bug-bash mailing list. + "${FILESDIR}/${PN}-5.0-syslog-history-extern.patch" +) + +pkg_setup() { + # bug #7332 + if is-flag -malign-double; then + eerror "Detected bad CFLAGS '-malign-double'. Do not use this" + eerror "as it breaks LFS (struct stat64) on x86." + die "remove -malign-double from your CFLAGS mr ricer" + fi + + if use bashlogger; then + ewarn "The logging patch should ONLY be used in restricted (i.e. honeypot) envs." + ewarn "This will log ALL output you enter into the shell, you have been warned." + fi +} + +src_unpack() { + local patch + + if [[ ${PV} == 9999 ]]; then + git-r3_src_unpack + elif (( PLEVEL < 0 )) && [[ ${PV} == *_p* ]] ; then + default + else + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}/${MY_P}.tar.gz"{,.sig} + + for patch in "${MY_PATCHES[@]}"; do + verify-sig_verify_detached "${patch}"{,.sig} + done + fi + + unpack "${MY_P}.tar.gz" + + if [[ ${GENTOO_PATCH_VER} ]]; then + unpack "${PN}-${GENTOO_PATCH_VER}-patches.tar.xz" + fi + fi +} + +src_prepare() { + # Include official patches. + (( PLEVEL > 0 )) && eapply -p0 "${MY_PATCHES[@]}" + + # Clean out local libs so we know we use system ones w/releases. The + # touch utility is invoked for the benefit of config.status. + if (( PLEVEL >= 0 )); then + rm -rf lib/{readline,termcap}/* \ + && touch lib/{readline,termcap}/Makefile.in \ + && sed -i -E 's:\$[{(](RL|HIST)_LIBSRC[)}]/[[:alpha:]_-]*\.h::g' Makefile.in \ + || die + fi + + # Prefixify hardcoded path names. No-op for non-prefix. + hprefixify pathnames.h.in + + # Avoid regenerating docs after patches, bug #407985. + sed -i -E '/^(HS|RL)USER/s:=.*:=:' doc/Makefile.in \ + && touch -r . doc/* \ + || die + + # Sometimes hangs (more noticeable w/ pgo), bug #907403. + rm tests/run-jobs || die + + eapply -p0 "${PATCHES[@]}" + eapply_user +} + +src_configure() { + local -a myconf + + # Upstream only test with Bison and require GNUisms like YYEOF and + # YYERRCODE. The former at least may be in POSIX soon: + # https://www.austingroupbugs.net/view.php?id=1269. + # configure warns on use of non-Bison but doesn't abort. The result + # may misbehave at runtime. + unset -v YACC + + # wcsnwidth(), substring() issues with -Wlto-type-mismatch, reported + # upstream to Chet by email. + filter-lto + + myconf=( + --disable-profiling + + # Force linking with system curses ... the bundled termcap lib + # sucks bad compared to ncurses. For the most part, ncurses + # is here because readline needs it. But bash itself calls + # ncurses in one or two small places :(. + --with-curses + + $(use_enable mem-scramble) + $(use_enable net net-redirections) + $(use_enable readline) + $(use_enable readline bang-history) + $(use_enable readline history) + $(use_with afs) + $(use_with mem-scramble bash-malloc) + ) + + # For descriptions of these, see config-top.h. + # bashrc/#26952 bash_logout/#90488 ssh/#24762 mktemp/#574426 + append-cppflags \ + -DDEFAULT_PATH_VALUE=\'\""${EPREFIX}"/usr/local/sbin:"${EPREFIX}"/usr/local/bin:"${EPREFIX}"/usr/sbin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/bin\"\' \ + -DSTANDARD_UTILS_PATH=\'\""${EPREFIX}"/bin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/usr/sbin\"\' \ + -DSYS_BASHRC=\'\""${EPREFIX}"/etc/bash/bashrc\"\' \ + -DSYS_BASH_LOGOUT=\'\""${EPREFIX}"/etc/bash/bash_logout\"\' \ + -DNON_INTERACTIVE_LOGIN_SHELLS \ + -DSSH_SOURCE_BASHRC \ + $(use bashlogger && echo -DSYSLOG_HISTORY) + + use nls || myconf+=( --disable-nls ) + + if (( PLEVEL >= 0 )); then + # Historically, we always used the builtin readline, but since + # our handling of SONAME upgrades has gotten much more stable + # in the PM (and the readline ebuild itself preserves the old + # libs during upgrades), linking against the system copy should + # be safe. + # Exact cached version here doesn't really matter as long as it + # is at least what's in the DEPEND up above. + export ac_cv_rl_version=${READLINE_VER%%_*} + + # Use system readline only with released versions. + myconf+=( --with-installed-readline=. ) + fi + + if use plugins; then + append-ldflags "-Wl,-rpath,${EPREFIX}/usr/$(get_libdir)/bash" + else + # Disable the plugins logic by hand since bash doesn't provide + # a way of doing it. + export ac_cv_func_dl{close,open,sym}=no \ + ac_cv_lib_dl_dlopen=no ac_cv_header_dlfcn_h=no + + sed -i -e '/LOCAL_LDFLAGS=/s:-rdynamic::' configure || die + fi + + # bug #444070 + tc-export AR + + econf "${myconf[@]}" +} + +src_compile() { + local -a pgo_generate_flags pgo_use_flags + local flag + + # -fprofile-partial-training because upstream notes the test suite isn't + # super comprehensive. + # https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html#sec-gcc10-pgo + if use pgo; then + pgo_generate_flags=( + -fprofile-update=atomic + -fprofile-dir="${T}"/pgo + -fprofile-generate="${T}"/pgo + ) + pgo_use_flags=( + -fprofile-use="${T}"/pgo + -fprofile-dir="${T}"/pgo + ) + if flag=$(test-flags-CC -fprofile-partial-training); then + pgo_generate_flags+=( "${flag}" ) + pgo_use_flags+=( "${flag}" ) + fi + fi + + # builtins/evalstring.c needs y.tab.h but can't (easily) specify the dep on it from above + emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" y.tab.h + emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" + use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" all others + + # Build Bash and run its tests to generate profiles. + if (( ${#pgo_generate_flags[@]} )); then + # Used in test suite. + unset -v A + + emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" -k check + + if tc-is-clang; then + llvm-profdata merge "${T}"/pgo --output="${T}"/pgo/default.profdata || die + fi + + # Rebuild Bash using the profiling data we just generated. + emake clean + emake CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" y.tab.h + emake CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" + use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" all others + fi +} + +src_test() { + # Used in test suite. + unset -v A + + default +} + +src_install() { + local d f + + default + + my_prefixify() { + while read -r; do + if [[ $REPLY == *$1* ]]; then + REPLY=${REPLY/"/etc/"/"${EPREFIX}/etc/"} + fi + printf '%s\n' "${REPLY}" || ! break + done < "$2" || die + } + + dodir /bin + mv -- "${ED}"/usr/bin/bash "${ED}"/bin/ || die + dosym bash /bin/rbash + + insinto /etc/bash + doins "${FILESDIR}"/bash_logout + my_prefixify bashrc.d "${FILESDIR}"/bashrc-r1 | newins - bashrc + + insinto /etc/bash/bashrc.d + my_prefixify DIR_COLORS "${FILESDIR}"/bashrc.d/10-gentoo-color.bash | newins - 10-gentoo-color.bash + newins "${FILESDIR}"/bashrc.d/10-gentoo-title-r1.bash 10-gentoo-title.bash + if [[ ! ${EPREFIX} ]]; then + doins "${FILESDIR}"/bashrc.d/15-gentoo-bashrc-check.bash + fi + + insinto /etc/skel + for f in bash{_logout,_profile,rc}; do + newins "${FILESDIR}/dot-${f}" ".${f}" + done + + if use plugins; then + exeinto "/usr/$(get_libdir)/bash" + set -- examples/loadables/*.o + doexe "${@%.o}" + + insinto /usr/include/bash-plugins + doins *.h builtins/*.h include/*.h lib/{glob/glob.h,tilde/tilde.h} + fi + + if use examples; then + for d in examples/{functions,misc,scripts,startup-files}; do + exeinto "/usr/share/doc/${PF}/${d}" + docinto "${d}" + for f in "${d}"/*; do + if [[ ${f##*/} != @(PERMISSION|*README) ]]; then + doexe "${f}" + else + dodoc "${f}" + fi + done + done + fi + + # Install bash_builtins.1 and rbash.1. + emake -C doc DESTDIR="${D}" install_builtins + sed 's:bash\.1:man1/&:' doc/rbash.1 > "${T}"/rbash.1 || die + doman "${T}"/rbash.1 + + newdoc CWRU/changelog ChangeLog + dosym bash.info /usr/share/info/bashref.info +} + +pkg_preinst() { + if [[ -e ${EROOT}/etc/bashrc ]] && [[ ! -d ${EROOT}/etc/bash ]]; then + mkdir -p -- "${EROOT}"/etc/bash \ + && mv -f -- "${EROOT}"/etc/bashrc "${EROOT}"/etc/bash/ \ + || die + fi +} + +pkg_postinst() { + local old_ver + + # If /bin/sh does not exist, provide it. + if [[ ! -e ${EROOT}/bin/sh ]]; then + ln -sf -- bash "${EROOT}"/bin/sh || die + fi + + read -r old_ver <<<"${REPLACING_VERSIONS}" + if [[ ! $old_ver ]]; then + : + elif ver_test "$old_ver" -ge "5.2" && ver_test "$old_ver" -ge "5.2_p26-r8"; then + return + fi + + while read -r; do ewarn "${REPLY}"; done <<'EOF' +Files under /etc/bash/bashrc.d must now have a suffix of .sh or .bash. + +Gentoo now defaults to defining PROMPT_COMMAND as an array. Depending on the +characteristics of the operating environment, it may contain a command to set +the terminal's window title. Those who were already choosing to customise the +PROMPT_COMMAND variable are now advised to append their commands like so: + +PROMPT_COMMAND+=('custom command goes here') + +Gentoo no longer defaults to having bash set the window title in the case +that the terminal is controlled by sshd(8), unless screen is launched on the +remote side or the terminal reliably supports saving and restoring the title +(as alacritty, foot and tmux do). Those wanting for the title to be set +regardless may adjust ~/.bashrc - or create a custom /etc/bash/bashrc.d +drop-in - to set PROMPT_COMMMAND like so: + +PROMPT_COMMAND=(genfun_set_win_title) + +Those who would prefer for bash never to interfere with the window title may +now opt out of the default title setting behaviour, either with the "unset -v +PROMPT_COMMAND" command or by re-defining PROMPT_COMMAND as desired. +EOF +} diff --git a/app-shells/fzf/Manifest b/app-shells/fzf/Manifest index 669192f3bb11..a01db32dedc8 100644 --- a/app-shells/fzf/Manifest +++ b/app-shells/fzf/Manifest @@ -2,6 +2,9 @@ DIST fzf-0.56.3-deps.tar.xz 5884504 BLAKE2B b5ffa8dd62e81d4db0266b1c66ebcb3938dc DIST fzf-0.56.3.tar.gz 300405 BLAKE2B d4139fd5fc95d710f18f5415f98e512c58812d5e5849481b47898b618dd33f33cfa532a9b767a787f565337f7ca8ea383f6bf10100ef90a78bbba9ad77e68fa3 SHA512 7144036bf3d027272bb1f961bb6a2721a7a85b16955b45f67798e16ac9f7891a04ed3b343b71c3426358e9e92abe1faba10b679caf8f99ca1905c6b312e6c9b7 DIST fzf-0.57.0-deps.tar.xz 5890984 BLAKE2B 7d1bfbcbc01f99e77d601cec1080a45d8565320f4998f1ff4691ae3afbdbd7733c5861282e6d2167bb68d02ff06331913dad53ecdce6cd2ca6ced9ba11518279 SHA512 2c46a268cea450ff224e8251354443b1f7aa7f5a939e976c2a92fa3218444504205de3a72064820df2ee25b0d4de30e7f8877d4fa004e850d82eb13f2453e9ff DIST fzf-0.57.0.tar.gz 303081 BLAKE2B ab478c15e9229105b73275155a54bcf3dfcfcc9704414fd84511932572156c8695982c9aee2b5f609a9ec4b82ff895a96c11bd30c5d1f1345273a7272a2d71bc SHA512 1e5a76e647bb1ab784582b1e8069df908d844e564ab1c2c7cf9d389326a97ffc3c8c102050c40656ef60039f70284ceef78b3c739d7c32ff84b7493aac71f7d2 +DIST fzf-0.59.0-deps.tar.xz 5897312 BLAKE2B 3d4116c8cd49d36a4019c092b9598cb40ce03cd487bb3c1259f110c910602509ad894b1a6a9850b72f597f5a10c01c780c4546e6e2d6fa9375c277cca1450a73 SHA512 0bfa2758c7a6b5a9f345b24e42c698adb487cf9bb3dc52a323adf9050b2d33671cca60879ee16caf55690795bdd356954b1ae0e5e656b0fdaa75b04ae8dffc84 +DIST fzf-0.59.0.tar.gz 323970 BLAKE2B 88d6a98d5f969831c1214e2ae69a05b39e87400abfac3bbf3fbd18cb2cde561f3ed8ef0c770fe6fc1ea86b09b8e08aee69d63c53b4f79b080cdbb9f02cd8ab7a SHA512 271f6870c680f7631fd9e9ee1fe154ef617f2329b8cf3611e24d0c0bac0b3a2f9c0e1be1eda874ffa8343a9c5669607650aaf607087b73a7ff71efa9e1f9994a EBUILD fzf-0.56.3.ebuild 1974 BLAKE2B efe8be83b0e904661b1737785f363893c938271cf3e60ddd66ef0dc850ef64a3206333d03db0dd041464634b1b14d8df17b9892aee5607ae5affd1572d99618d SHA512 9b032bb342e6bb069de8c4214d65534d15de4557b6f3a7cace048ede1f1be586ccb16a62d2dc97ce9bd96686f64b0076e230c9749bd94790d1c8ef897cf86d75 EBUILD fzf-0.57.0.ebuild 1977 BLAKE2B 443a553020643076c316730c7e556e4371566653af8a4a75d794cce690e33a52f967b6608b11bb64eedaa35663275633b2493d3b13e60c46906f4b9b501da118 SHA512 3176d21bee6dd6f60f67b768657ce7dfc3d34e39c02faa3f646a57ddcc1f741281a1f4baba46b3b27327fb04468d3eadfd73364dcc273329847f003896d4ea26 +EBUILD fzf-0.59.0.ebuild 1977 BLAKE2B 049e410d05315c44faa19f4410e1a75a88995ac27836a332503356491b55b0d22a6b3740c9ddf4063f78e73c0d7feb0d3dec792ddf512cf1ea2bae9ea42d3381 SHA512 b1a044eb5a47ddd6ee06837644f826881a8193585889ed79c0fdb1854f7b027d3e79e4988f33915b0452348ebb363f06e53b6cf744333eee0bf3cdd951eea868 MISC metadata.xml 245 BLAKE2B 09740ccf075e53d0d7f0a31addb391335518828e2c889718899491764305e6fef814d1ff7f1228d4b3c2b3b18470873d3c71338154a833d3a7d13280c393a879 SHA512 4de0cd558c25997c8473254016ddf6371da40c183b7ff0d7ad873135e12f52f8de12c40dc6ee03aa1fc2e44898fa050c9730e76f7960d908a5fa6645a66a7679 diff --git a/app-shells/fzf/fzf-0.59.0.ebuild b/app-shells/fzf/fzf-0.59.0.ebuild new file mode 100644 index 000000000000..bd51fd837b9c --- /dev/null +++ b/app-shells/fzf/fzf-0.59.0.ebuild @@ -0,0 +1,72 @@ +# Copyright 2019-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit bash-completion-r1 go-module + +DESCRIPTION="General-purpose command-line fuzzy finder, written in Golang" +HOMEPAGE="https://github.com/junegunn/fzf" + +# For fancy versioning only. Bump on the next release! +# MY_GIT_REV is the first 7 characters of release commit, we truncate it +# after to make it easier to copy/paste. +MY_GIT_REV=bbe1721a1883426f639c1efe6afef1d3e6c25181 +MY_GIT_REV=${MY_GIT_REV:0:7} + +SRC_URI="https://github.com/junegunn/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" +SRC_URI+=" https://dev.gentoo.org/~mattst88/distfiles/${P}-deps.tar.xz" + +LICENSE="MIT BSD-with-disclosure" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" + +src_prepare() { + default + sed -i 's/-s -w //' Makefile || die # bug #795225 +} + +src_compile() { + emake PREFIX="${EPREFIX}"/usr VERSION=${PV} REVISION=${MY_GIT_REV} bin/${PN} +} + +src_install() { + dobin bin/${PN} + doman man/man1/${PN}.1 + + dobin bin/${PN}-tmux + doman man/man1/${PN}-tmux.1 + + insinto /usr/share/vim/vimfiles/plugin + doins plugin/${PN}.vim + + insinto /usr/share/nvim/runtime/plugin + doins plugin/${PN}.vim + + newbashcomp shell/completion.bash ${PN} + + insinto /usr/share/zsh/site-functions + newins shell/completion.zsh _${PN} + + insinto /usr/share/fzf + doins shell/key-bindings.bash + doins shell/key-bindings.fish + doins shell/key-bindings.zsh +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]]; then + elog "To add fzf support to your shell, make sure to use the right file" + elog "from ${EROOT}/usr/share/fzf." + elog + elog "For bash, add the following line to ~/.bashrc:" + elog + elog " # source ${EROOT}/usr/share/bash-completion/completions/fzf" + elog " # source ${EROOT}/usr/share/fzf/key-bindings.bash" + elog + elog "Plugins for Vim and Neovim are installed to respective directories" + elog "and will work out of the box." + elog + elog "For fzf support in tmux see fzf-tmux(1)." + fi +} diff --git a/app-shells/rc/Manifest b/app-shells/rc/Manifest index 029cf1b46058..ea71ae6357b5 100644 --- a/app-shells/rc/Manifest +++ b/app-shells/rc/Manifest @@ -1,3 +1,6 @@ +AUX rc-1.7.4-C23.patch 801 BLAKE2B 0de29a5b30617687580c0bf77c0a9b3c94b2cabd241dca272fa595f18e634e72784a98868aba7051c526865f6bc11b6aea8c4b4ad3fd0ad1691d29b7673b5545 SHA512 cd0e2b9854552a6b3e1a3d64bb35a33995956c962c8ae4ad6680bbdde1bc2a741295af3a260fc9d573fb6d063bbe5e84ca924be27cb7c41e4b2bba2b8d989ee4 +AUX rc-1.7.4-libedit.patch 545 BLAKE2B f5d650fdd1e61d7cac8eccd31a122271989b0dea0c75449da46af4bc93810d8d608b0ab625ef4c717aa4c9f5672aba5d9a19783831ba663040ffd2198a48dc8a SHA512 cb7347a224960a172409a490ef324dea99c149a262ba980419a90bc7bf75f98ac0629fa8d1d18c8a2643d0f01fef7499a6557355d53919d42d8bd24989b8e8ae DIST rc-1.7.4.tar.gz 215206 BLAKE2B df01f618cd4d3c5bbf155768ada49c20fe7916e2b999ae13d08487b00c4565c3c4d1d45d16dddef70fe58cf7c405d293832b31dc8a66d8b36b2503675b260db1 SHA512 49e124207b5370b88b8fba0376dda33451451a58bfb85fabfc06ae59eb88fedf38d7aeaaf292e4f380e2c00efc8301ba68d12180923186d1c53ef94f78f7e435 EBUILD rc-1.7.4-r2.ebuild 918 BLAKE2B c03a0faded61c2fbdbf5863ea3115a88a9346aa370e4ff81580db7594b3ebd522cd3003907fb17853126338f16bfd1806eca6a000d631d5b5a2202acfcbb42d0 SHA512 d99c536c0a2011a79b1ec27a42dc2f7ca3391f38aaeb52d0d27b1af58d3a9674d9f2cb749fe790ca1c08f3a90002cf2b77506e5d1799cf2ccb291f1400b78253 +EBUILD rc-1.7.4-r3.ebuild 1059 BLAKE2B 4d9cf82ec2befc0256050d315a6ecfe10f054f5ebac07ec1b07b081e7cb6a84bace8dafcb975989556d032602762c818c861c9517b88abd075b7757d9b9e97d4 SHA512 4203c6fd37e8622e44e5de9643bdbfc66f019e8912923bcf074c3dc994e96d533a5520bcfb27f100b8f0ff844f2821aaceaa050318c9a9aa30b6654182e54890 MISC metadata.xml 168 BLAKE2B 2e0e000b4c3b6ca04c12903fdbe278415c05a822623c52e9aa95cbbf3d50bcb1246b7edbda7d2f6b559af8950c6374e6e0a69b76319964cfe686bf50b0604a57 SHA512 4dcf45d1809e8390a2d8155c8ebfe0dd610203e392aeab0ccd8a10f42cc8532a4925eff32b35e7a6c35598a4efd288229034ec0732299dbd8cfa0acff705fed3 diff --git a/app-shells/rc/files/rc-1.7.4-C23.patch b/app-shells/rc/files/rc-1.7.4-C23.patch new file mode 100644 index 000000000000..730319135cd8 --- /dev/null +++ b/app-shells/rc/files/rc-1.7.4-C23.patch @@ -0,0 +1,30 @@ +just use build-ins when C is modern enough +and other glibc defines that need enablement +diff -ru a/rc.h b/rc.h +--- a/rc.h 2025-01-05 21:16:39.487999355 +0400 ++++ b/rc.h 2025-01-05 21:21:13.688559101 +0400 +@@ -44,9 +44,14 @@ + eError, eBreak, eReturn, eVarstack, eArena, eFifo, eFd + } ecodes; + ++#if __STDC_VERSION__ <= 201710L + typedef enum bool { + FALSE, TRUE + } bool; ++#else ++#define FALSE false ++#define TRUE true ++#endif + + typedef enum redirtype { + rFrom, rCreate, rAppend, rHeredoc, rHerestring +diff -ru a/configure.ac b/configure.ac +--- a/configure.ac 2025-01-05 21:33:03.952267739 +0400 ++++ b/configure.ac 2025-01-05 21:33:20.702194221 +0400 +@@ -1,5 +1,6 @@ + dnl Our package name, version, ... + AC_INIT([rc], [1.7.4]) ++AC_USE_SYSTEM_EXTENSIONS + + dnl ... and release date + RELDATE=`date -I` diff --git a/app-shells/rc/files/rc-1.7.4-libedit.patch b/app-shells/rc/files/rc-1.7.4-libedit.patch new file mode 100644 index 000000000000..14ab77d18069 --- /dev/null +++ b/app-shells/rc/files/rc-1.7.4-libedit.patch @@ -0,0 +1,17 @@ +bug https://bugs.gentoo.org/925558 +truncating number of lines from long uint to int and hoping +for the best, due to API mismatch +diff -ru a/edit-edit.c b/edit-edit.c +--- a/edit-edit.c 2025-01-05 20:59:08.759555902 +0400 ++++ b/edit-edit.c 2025-01-05 21:01:03.040010129 +0400 +@@ -50,8 +50,8 @@ + + oldint = sys_signal(SIGINT, edit_catcher); + oldquit = sys_signal(SIGQUIT, edit_catcher); +- +- r = el_gets(c->el, count); ++ int trunc_count = *count; ++ r = el_gets(c->el, &trunc_count); + + sys_signal(SIGINT, oldint); + sys_signal(SIGQUIT, oldquit); diff --git a/app-shells/rc/rc-1.7.4-r3.ebuild b/app-shells/rc/rc-1.7.4-r3.ebuild new file mode 100644 index 000000000000..ad6676be2d7b --- /dev/null +++ b/app-shells/rc/rc-1.7.4-r3.ebuild @@ -0,0 +1,55 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="A reimplementation of the Plan 9 shell" +HOMEPAGE="http://static.tobold.org/" +SRC_URI="http://static.tobold.org/${PN}/${P}.tar.gz" + +LICENSE="rc" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="libedit readline" + +RDEPEND="sys-libs/ncurses:= + readline? ( sys-libs/readline:= ) + libedit? ( dev-libs/libedit )" +DEPEND="${RDEPEND}" + +DOCS=( AUTHORS ChangeLog NEWS README ) + +PATCHES=( + "${FILESDIR}"/"${P}"-libedit.patch + "${FILESDIR}"/"${P}"-C23.patch +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + local myconf="--with-history" + use readline && myconf="--with-edit=readline" + use libedit && myconf="--with-edit=edit" + + econf "${myconf}" +} + +src_install() { + into /usr + newbin "${PN}" "${PN}sh" + newman "${PN}.1" "${PN}sh.1" + einstalldocs +} + +pkg_postinst() { + if ! grep -q '^/usr/bin/rcsh$' "${EROOT}"/etc/shells ; then + ebegin "Updating /etc/shells" + echo "/usr/bin/rcsh" >> "${EROOT}"/etc/shells + eend $? + fi +} diff --git a/app-shells/zoxide/Manifest b/app-shells/zoxide/Manifest index df51ff39acb4..ca93d7f7c469 100644 --- a/app-shells/zoxide/Manifest +++ b/app-shells/zoxide/Manifest @@ -1,135 +1,217 @@ DIST ahash-0.8.11.crate 43607 BLAKE2B 7dff8e41798ba25df8c4827ff414a182bb25da4825f0119a74916fe775db5445b87be8fc87f7c7f98d3b5053e1d47546f98873de1a942d36e5f308a3fb7dd620 SHA512 47d211b2422de0b381dfe32229faa346406eb7a22dff867dc04c22389609a8671ce3218e662000c49891a06c259d82e0ff4413740f007729d80e097a6c3f0d9d DIST aho-corasick-1.1.2.crate 183136 BLAKE2B 2d4306d8968061b9f7e50190be6a92b3f668169ba1b9f9691de08a57c96185f7a4288d20c64cb8488a260eb18d3ed4b0e8358b0cca47aa44759b2e448049cbaa SHA512 61ef5092673ab5a60bec4e92df28a91fe6171ba59d5829ffe41fc55aff3bfb755533a4ad53dc7bf827a0b789fcce593b17e69d1fcfb3694f06ed3b1bd535d40c +DIST aho-corasick-1.1.3.crate 183311 BLAKE2B 8dfcbba0b9d94e55eae739b16f5c6474baa43ee7854c5ca792f426a9f46fb0eece79cd493b804e51449181bcad338b96819fe977c02c9907654d713e26b9f830 SHA512 ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69 DIST aliasable-0.1.3.crate 6169 BLAKE2B c23840c7f1df86109e004aa1929d7355bd815c69ce8c5a316c9e2810851b7faf91c7480924d67cf83520e94b86dc0cc1b90b0dcc84b446a15ba5cccc1bae95ca SHA512 a60e4280335638b36a72e51514843229fdd0cc89cb670fcf159f882a687c04ecbddcc52a1dcc3cbe8647e5308af3939037934a157facdddcc4834dcd3cb16dc8 DIST anstream-0.6.12.crate 30769 BLAKE2B 7e1427a8d81ab52f74c5d25209ba2a410575958139ec5e6a94d0a7751c4a177285ece215222b16bffc0fb12b19014e9925e27a988a52e7dfa5139476bec4cf7b SHA512 47396e1617464188e7b4d7c931c5a6fafa918ca7aa39044a5b3dad1b8685ea96829ee87e7b70820bbe2efb35571fb331539f0fb8938d229034a9b9bb60700a70 +DIST anstream-0.6.15.crate 29231 BLAKE2B cc4cf0f381c210fecc20b5796fe872b533419e5f957021b0c3be3cdc23fb84ce029fbef6f9b6f174a76ad713c07f0811145a70572de7c24cfab060fdd990f49a SHA512 1cb01a0293b4c9bcc010909707e71c464416d3ec6fc9789060b7aa9fe4cc04424fefa8013cc8765ccdae6dfd9a1c50a11f7b30b39a32c4aeaf525f28167ddb92 DIST anstyle-1.0.6.crate 14604 BLAKE2B 0716d0dbb62bf05c63c2bfe1c689896660073a423d26965ce2570f11e1925752a61209d78c2f2fe65ec4eb64ea4ffbb39669e789c0ba5d1b71e75de929153b20 SHA512 dc0e505465be54799b9faad70d0c6f7f0dcf9f5e1aaa43177b826c85dae626b054910244da0499862f066f6723a1560ad12100aec523f28c6198f1ea0d1b78fa +DIST anstyle-1.0.8.crate 15771 BLAKE2B c039613e7de27cc990e5764810f9351754b160928a8954dc19041354cf9fef1422ed964237a5d39d16e4e9f8592ed52c523ccf36b0b5506f464d4f818f3332ff SHA512 3b867f73df0b2f69a0c7d5d6e62c7515045e053656afaa303e5aade8012e838cdf5d15d2c3d7c297db9e297d08ea69a9c8eed04b97922a83f56c58962c1c0b69 DIST anstyle-parse-0.2.3.crate 24699 BLAKE2B 17e8638187ccc1ca0174a8cec7f7daeee7e0d8b8c430f7e74f9b10d8de4b49fd1c6facfdafde305b7a3e55b1ebf2b4e8ec4975a0cce691514ddae9eb5b5e711e SHA512 4a6d0f706d75c9b3c5144f34efdef3ef8fcd075962c594a23a6209ed56112563a34b3c01e05a08a0868d59204272d06211b2585cb9d06ce075ea875bedb2f399 +DIST anstyle-parse-0.2.5.crate 22680 BLAKE2B 7473651b1eee08857a6ed1419d3d62ba4b9a9aa0d6657965ad9c67bddd793d825737d3804961716a89bdebed9879ac43b42c897cd229c6e7bd780859e1e3c247 SHA512 cd94ad0e88ad4547a660da1473bf4e6dfed805a066782124204143c7f754c12db719bd3a1774c299f1a035740bfc4830919da191bd14e0acede410f6dbd1e2ef DIST anstyle-query-1.0.2.crate 8739 BLAKE2B c06643e8616f1f4469a32f9c0512941ce53ac5db9ebfa7a5b2f19233040cd4438dd2ee69ab89ecbc1c239e92b674dea9df15ed673408c6f3fe21787cc17d76f3 SHA512 f409b624cbeecf58fd87c47f85be28cae1fe48f65d692195fb80854c514e38c40d0e0ffad3a5b388a3929c47bd2060302ebb635aa98dc57329f3a5ed7be3e2dc +DIST anstyle-query-1.1.1.crate 9891 BLAKE2B c298114c1864a5233fb39c365e079a7f1f4ef23499dc330e5deb06f83f27bc727015befef79075c7e39952547f799b4135d7db287cf72dfc914191df784a4989 SHA512 1b2e888f025142a0d9b01314cf083831a2a45d8da737c1be3a6a9aa177e73e0d2ae7999fe7610dd450b7096115e8cf38c5da23723cebf1deaa7d3501d3dbd5ce DIST anstyle-wincon-3.0.2.crate 11272 BLAKE2B 73e124773f618a744b17017d4680ec6ccc84ff94fbe2e565073fbcc0facecd3cb65356cf27746d07f453bc917cbeb2ade3a618c6b8578d64cff4828c99569868 SHA512 4cc194faacffa01c6989354c1cadbf1134f0945250f67b7020ab5b475e30db34c799176bd335a6265386cb9c5e8b5bcbdf35894ec0c809b140ffe1c406751931 +DIST anstyle-wincon-3.0.4.crate 12234 BLAKE2B 23294d6ed7715c55c8f796eb7b860450c57b22b57e32a5c75847f2e2bd68a52b33c24797db662aa5fd7e799b9644075c8c939d93b0cf8598b16ee80fc817b77f SHA512 24b3a9a44382609ad449425a657d4b42a792d4703c36e0953f09a03817759c266a2f0ff4ecc9e8b93ea8403df2badef1f1af6a6e50af56205176c41b13501ae6 DIST anyhow-1.0.80.crate 45138 BLAKE2B 4985d3d8f1d5b5886fae5c7d1a61f921d3d64fb51e24710044b85dfadd2dae2b25b8995cab419cb7cdb5c8cb6b50ad0de93b9a942d34bc45014bd5fb9aecbd39 SHA512 481a3bc29de2af0b913d83cc79dacd559cf0bafecafcc707b921b91a732df953a2df582a54e5fca3f506f6441fd47379bd6bd006bcb1bd6f2615198f9903cc59 +DIST anyhow-1.0.89.crate 47078 BLAKE2B fc824e72891bff0cc7aa3b538adfb9af7dc843ab6ed12b8b04eb70e62d32aae1decb9090621d3245dbe89841e73080d2d86973b4aee50873e798956da9b3faa6 SHA512 3c09317089ed78601a56c626700d12c0b49396e25fed9a9f05a2dbfbd6f91ad426c430633006a4043decd1f70a85c161c4f8dd7de0e4c00b82a169b89dda8da0 DIST askama-0.12.1.crate 16976 BLAKE2B 9257c6d292d6399d81a750ff4b55958a0ffbdbd5f96f3e0f2ac1e777a8bc8e11264a89bdd6edea6a6a3d0b3324138c1524b0f00fc2168afd1abd0f4b777e1473 SHA512 b719134fe73080e8360f35ff4ddeb3039ed1c4d20861cd3cae40e20832fcf8b12eb8b04ad82ea49d5c5f5ae6fbb29180aeae7e41be5f72ab97e9abfd60cceb4b DIST askama_derive-0.12.5.crate 31218 BLAKE2B 0646c0df57dd6d3d3f48424db2456df37c11cbf1bb159570f7bb3e878b0abce3ebf9e948554f214dd9f77449ed79ade4ffe88511e66274d3d4beea8a8e1b539a SHA512 37fd963d0aab2f29866931858f3235086170133f86953f70b44003e9505a5c716ffa6ed7429601520716259688cf2e4cb17649e89065d210eff28119416773f9 DIST askama_escape-0.10.3.crate 8875 BLAKE2B 6bb88f18aa0bd05a36e7bf5cfcaed3138ddb96ed366e7da9b9a64c4e0345fba384cfa3e9bfab3674c1697a7722bd59a9428438b78d44bcac78740d4c53c3d3e8 SHA512 1978add567021fac7f086b6091c97de81919877726455828164642c55607d5b5f6f01c0187f8a8a3371c9b3a1ef41f4c3c9e14d9068826c38ee8a6efe2eeb5a2 DIST askama_parser-0.2.1.crate 20707 BLAKE2B 14d385d906295c892543bf917a835b9b354666927a63cb66c6082b8bd7330b07b89a1cb60a88ce0b8a8a58cc23023587fdea2117329bf384a22c097c0e45aaa6 SHA512 50c2a8a1f08006b375c450275ca7b455209aabcaf2b5a2ed903d1f8cf26920d95985e1ce2b6d77397b8dc32cdcbea6c442a1b4f590af64f92e4e5b47e3a52f75 DIST assert_cmd-2.0.14.crate 24591 BLAKE2B 2a25812480770ce8549700b6c5afd0e3fc230c280c66b5b61480a2db0dc6c5a95b6a564ca7eb6024fa43498168d8bd3511a6cd659498540bf1a5a3bdbc2a3fc8 SHA512 112c3f933a013715c0dfcf29889ec023c88097a70fe212a7d98d0a5272d5f6da87df9353da006483830a0ac3c42a12e12d8fabeb90eb62453982edbc75215613 +DIST assert_cmd-2.0.16.crate 26554 BLAKE2B fc803af7ca45de94e120c560efb7e1e39ecb706738d292695680f9fe14b2d570f7214dcda37122dbc1227228ba265c6dac7d7afa4fb22178c38b015bc8745828 SHA512 0b9167282d75169b0b1fad0b1401b42884185976ae0dd690851671aedbc1a9af26dd33f3047400eb4a1b5070216acc293aade149aded7e4f86dd5c0ef0e9a6a9 DIST autocfg-1.3.0.crate 16524 BLAKE2B 7d5a03853d6b4f0da08d8e139fb200da21e47fa7e50d1956270d0ff0cc496f660f8f800122c95eee9ba98d9210ab200c3010b782097483d12d6be4ac0df0e7c9 SHA512 a5570b955d57a7183ba148b335837dc5af24b202e80681027536d33fe2822509ba644fc70c29f018c893285ced2bf6774f44ca6c59f7c7e2226d5349cf7c3635 DIST bincode-1.3.3.crate 28958 BLAKE2B ea01d2efd8149ecba5e240ed989268b683d542a5f369902d316a4fd1ae4b8edd94e2d4a8cbff0e96646eb29facb04a84b249d74f0781dc3d29c8797ac975aa9f SHA512 49e39d71214dbb623a18e3852f6f2f2a5c3f951b64107d66c8adaa95a442a3283fba978bca41b126c9879b12833b945f478d2c77d35482b3577fc1a894e8e5f3 DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 DIST bitflags-2.4.2.crate 42602 BLAKE2B 768d4ca52aca73d8acf2f494a66957ed2603eefd5a04332ed0880d230c2cc6ef3bfdc0792fa6f288a0eb132913dbb256793e580bc34f4a40e8200e1fbafe97a9 SHA512 ef4c20e6e78a2ecee97e17189b7100a504d8176c7c15d7f17d62157a116d66f83f8b2bba472a4acf02cd3edbd94b20a7047af918c3f3b371e2e04f7474be0214 +DIST bitflags-2.6.0.crate 45357 BLAKE2B 3a368bd2eb58c095b7b4a46680cc2d90a28e24b2e37c854bbf8647c861c4b8fb37eca827599673c5c7df763048149dd82123d1ede1f8a0e58a6bc23c8250f7e6 SHA512 f9bb3c48931ed7e7e05ec6d13305af5da6b6c18861ff307d7dc17c658f63972c87b70b0527287b3625c8592befc207cfe15550654995faf3862bb12a6d95bacf +DIST bstr-1.10.0.crate 380426 BLAKE2B 19330a5a293430c09908d2174ff814351b16419f60de6463abf9b8a9dff06a4e6845e889d8047a710cef54842f2790d9cd5080b92cdcb113d89742b869979c74 SHA512 823abdbda9b13802facc7d6b1ed9ad809ed3b0b827d26e418348ffb8481b5f5735f129c5a9a8c7b2ab010d7f32ca57cba69a1ee10a64225c54c6ceacd22c05d2 DIST bstr-1.9.0.crate 380170 BLAKE2B 06ae5065a5d566b6333e911a5b97e3999ad2f0bc19b27023187004c81cd01e5315dcac920ff87a6bb87ccfbb949364f1361dc04d342e24f9f54490b5d44a81d1 SHA512 dc313a16c38ad881128977a20bb390e7c95a96d9530596433a7c4fd7f77d5fffd079d436006dd8d2bfc4aacdd7f0aff229504444250418f6aa3f8d6d4df9abba +DIST byteorder-1.5.0.crate 23288 BLAKE2B 7f85a7948406844070a2c8202e0bd52f73b3dfc7c666a97046128044eb9352195afb80e2bf894c0742ad109e4473339de1365d09591de70dfec6c8c02a8e1453 SHA512 96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff +DIST cfg_aliases-0.2.1.crate 6355 BLAKE2B a758d9c88527f0e6e7cfd6d4c83eda1bcb4d6e2438189fe08e8ecbcaa78d56afc5a4873f3b82bf7da96afd690b44cdf1e44466b6da0f37c358b340481017103e SHA512 74969d12d5d24002a29e08d52e30fbce014dd481a7c35ee0162e69333c5f2d7755f3b02439b31522e12444cf1ac8e65880ce33fe6778dac03757e362cbf8a72c DIST clap-4.5.1.crate 55389 BLAKE2B ed23a9d14663a974b14c53b3abc91daae349cae6277664283c27ef201e53969b7ddde1cbd83dee796c9e248e88a622ab1753563ffe474a8b48c1351a7e21ad7b SHA512 b777ed43aea510e789ed76514825ca3a27fac7e386c58a88a1d5c74d0d72fd720e0d97777ddc49ae2e060d76af3ca554f3b9cf6a5f10b944f044d2554a7a4d35 +DIST clap-4.5.17.crate 56802 BLAKE2B fcdd23d66ecd27ee3820c4abe681bc997dd6cfd69948e11603aa8c4ca39513d5de901373959328986ef81c046318f240ea87a2f19b38921faf76b6c93d0e4f67 SHA512 69f0fe213007a2e0a564945bf58794b891a345c34747e92ec16877253ff60c1a30fab24031b5f56d6e31ea7b0d8c9dc0c815fd1489b2c0df1e2d24b4a2be6406 DIST clap_builder-4.5.1.crate 163569 BLAKE2B b3300cefbd190c6a23bc8e5b9f5a7f763b0bca47691011a11769383296fc99da8f7424af2272eb1d2d748d8ab6401bfc285c71aafe3f4d1dbb514151e234c9d0 SHA512 336ccf8d3f0fe43a9cad6f49939aa87cef9fb33451f5ae09e79c399680b94b84bf08f9974b0bc7a90f5c6727cdb26540e3b74ad47eb1bc0a5bc2358385825874 +DIST clap_builder-4.5.17.crate 163559 BLAKE2B 10731513f76c64027116ec97aa7dcbfbff74e649c64bd32db1a14ed1ec00e81a3b7c8e3ca478e5f077fa49eae9ae48dca4810190924b9af5dccea9cb0f883b5d SHA512 86411378aefae1eeec1128d797a21697d9470fad7ba2e109e00e8ae20d4da218e909d56a2f7065a4b2651d6c5d76d14a7394d747b2a4313c739abe0c9b046492 DIST clap_complete-4.5.1.crate 37823 BLAKE2B 0cf64989041e0773ee0d4ea767dc781d9cfaa68c3edfbf2b04874f24064aab762223b50b5fb511a09583191fddf03f5bc7afc443c213871eb24f94695fcfe004 SHA512 c815e6f8fe190b0cfab85e739973b8a40fb23586fd329f96cc21a5ecfa9108ad5bb4a5a6cc5e00983e704d4272c87433b426f582ee44dcc9fc59d9a7784f9334 +DIST clap_complete-4.5.28.crate 46250 BLAKE2B e40bb9c76bed3356440822b2adf39fc431490706ddd9db9537e75d3a909a2716a6e1528bff396555425922ca4da26886276130ef29975c03dd30c71a3c60c0c7 SHA512 d097aa7006003a993573938e66d06137844a93dbb1991ae4b00ba33af59be280b554ab675e001900c2b50eb1b11bf4198f450d29a247a7f3d2121db58704b033 DIST clap_complete_fig-4.5.0.crate 10932 BLAKE2B ea828d2d36a92f13b176af614562634ff2117f23a328ffc1bb873893ed3101d2cd52ed09cf5b1f299a5a51597e51ca2806411158cbde8dbceb6c56417b4b9111 SHA512 8cbe3e2466149f2af74aa9e9acf538ec84450111a698a83bd95684685419dc9c37251c3f1d06800d1ef8e8fe9739186f95c1d626fb61b27a672cb79bd0d08bc8 +DIST clap_complete_fig-4.5.2.crate 11376 BLAKE2B 4814167837b8b61321559beafe65e6f506bcf28298da469d62f2bf3e3e89b6f478910fef7eeb0a5a43dab121aade7e9c8e30eff02f34aa8f60af5cfb0489aa32 SHA512 4663ac7418b3ac68fce31054fa45e17dff23b51dbf8a1f3b9382b05a4258dccd402669e9a881c93692453b6b3a82d0c9a9338f9dc6bbf19e556b4a7fe0ad6094 DIST clap_derive-4.5.0.crate 29042 BLAKE2B 80a7646b2e30432008d52e27494e2563637e408a90557e5b0009a9db6a39abfdc79c04139f99caedd433a94b45f7d95fa11b49cfd33d203fbc4bc911fad4f9d1 SHA512 0a9d79f957067b929f8e1340b0e0623f78808c5d287cae252e6508fe8e07c4f11bfa39b1d3b60bb6a531d888d809c43ad3f6a491a7dd1e3d3ce89af7e1b670f6 +DIST clap_derive-4.5.13.crate 30132 BLAKE2B d5fcd2c5a213817165c61ba2071fc6424ce822e4881686556b8379fc71188f60d8c6712f6f4a8e5c8b125b58d7454aa9846214caf324fbc93300abba240bea17 SHA512 2dae32bffd91de9311d94e2be0d990074cb2e2edc832f422cd5e7c5177f5daafc0c335e74f865024c77cae5fff631ddaba58028fcfc24b203467478fd473bbf5 DIST clap_lex-0.7.0.crate 11915 BLAKE2B 03287f02067f6cb33bb3889e8032b0848e9a9cc17446eb0e2767768cf6ea8c579a7455d33c8af735fb8d0c16095b19f991a5e2528dee3a7628d68c16f9307fa4 SHA512 638feb2e4571677dbe15ef0423866d2f0df309723e5ad65ddeaff7fd5e2e83adcb973a32d52a5f3924ea88fcff865e956b7d30dcd569df0412ef47848af14036 +DIST clap_lex-0.7.2.crate 12805 BLAKE2B 952bf3f3885ae7bedd0e8add236590da5fce72a7ccd88ebda063410aef337ce7ccdb5e5e929cb870bc993891610edc0197150a3aa82a62fadc4bbfd96324fcdf SHA512 a8726397e5372fca3389748efdfdbd016b6baedad5b4bd95f33e4e820d4f40e0b94c88b1918ded3678aecf23911028e2261837e73d58ba7fd6f091eb47267380 DIST color-print-0.3.5.crate 11245 BLAKE2B adc6907db10692a18f99967341f2da59ad816d3104408f3942626e72f0f8bb29b778756ae37c664817b016dd7552fcaccff3327bbb00af8fcd4f94f3582675ad SHA512 79819069e71b120bf9f8bc42fa71d902f8dff569988ee4413454cea9b5500fc2c31a493b9fc28795b327e099c09109ff6336219c65c89ce87aea5507982a0a15 +DIST color-print-0.3.6.crate 11242 BLAKE2B f9ec22bd2c9d725a155d2fdd55f196c9d82acdbba7b4c5e7fa13fd87e273fb6bc01499023badd80424b5464302a54c1252dca839e6fff48d9d26843bc87f8677 SHA512 501df490f457ce1965d4e405b58acbba6a105de3208e50e027af51e76dcd658c2bafd1d1244e7d60bd9fe4fa0be48267056ad81ceec04646fc415f46953bb225 DIST color-print-proc-macro-0.3.5.crate 23434 BLAKE2B 76aa0a806a8737b60e865b6bdd4763642ed38943367319c4e4dfea9e96343c84be8e4c4db17be0652e30daef7bcd397204c1a400b7cf15d126d8876472a5f6d2 SHA512 03ff7fa8b80ac3bc2186853787a592b1d8fac75ad32bbdf5f2ff9ba6c27a56c57b90c0d23f40cb43595a4e4f9f6d817d2525e8127f62b5b94f58dc7070a7e3f9 +DIST color-print-proc-macro-0.3.6.crate 22499 BLAKE2B 23154ff7332e9ffedaef964d4242a922dd381bd3ce611ece52d7833dcb0d114eca32f6ca6e5d33037a4d859c59edf7379bdce4155a89b0b8078030bab95001df SHA512 a7b2719a4eb88d10d0af656bed3b4c690d98ffa3fe9bb373e426ad275b03b1a2088fb243bcb5215339e00f26889cf3f2ccdfe3cd7ec4c90af3df42035200a3ca DIST colorchoice-1.0.0.crate 6857 BLAKE2B a0818be1299717461ffc1bcfb6fc53a0b3b645aa8c45fb72e045cf2d876fa207948610e58d6a837aad24838ea9616e80b0558ca3eae03fdf9bc4c03a8e5ba52f SHA512 53363f2889cd8e8a3b3ed10c48356896c0daa72f3c12c9c7804707ab0dbc07c0e34ef52fa4f0fb1647311ce5913168c1bf62c2407ff86a33f765a9e6fccad551 +DIST colorchoice-1.0.2.crate 7924 BLAKE2B a4027d5f870b4d9a718ac3f9d89ce04e2ed38406658c4a55ffaf39ed0cb1ce7e1c691eb56c66596b519ca82309e8ec7eebac65e69394cdd277f44f9b6280d560 SHA512 f34d5f66f84e90f473b6b9a62a61a59575e712d3e9b140324683f80af42d40c1d079701aa2ed651d0dd95a5ac8838e1f6f6c034e2adef79509d32357b8093117 DIST difflib-0.4.0.crate 7638 BLAKE2B 57c703de0d467c997bcbedc4d6577569b3d72c612d3ccd929025a98f4bf8f72f2a0d43f3cd3bc616676c2569aed176b3c1362cfa868a4bb1197e05fe4dbce32f SHA512 fcb57859424fea6958a4407061c421599fbca111357b1fe72faa65d8fb0b74425c993a24484e8414f475fa146cd8368c4f82e1ceb4e8dd9f95741149345b37a9 DIST dirs-5.0.1.crate 12255 BLAKE2B eadd38e85211ed5aee7fab964e90342273320644c36262aa7b436e493512851a4751a09d22aa8bae0495f4b22df6e7395d13715ca8b8c6196107b1be03af9328 SHA512 cfc329518e85a25c296521b9aeb6e5d5f60b4525aa786ebfa8b9f198446a1ff5892160d1bb4790d7f3fc4a0abdb5921b2e4896e271a3fc3a3225897313b77bd1 DIST dirs-sys-0.4.1.crate 10719 BLAKE2B 30334f2192698d7d03bd4e8bc8a682482da7d13baacb8547a132f55019d3727ac35579926ba4367fe0a5b7fa917945abc03e010cb7363683753c87440581df42 SHA512 53c7c8bc76d7211d08a0e6b25caaed12eeb7283cb4b352c12311db3c796794330943259a08e48ff9d3a280917920a088e5aede32677a4b2f9f819c2dca6adb9a DIST doc-comment-0.3.3.crate 4123 BLAKE2B a82d1c1a7a90af6e111b5e684a1298d7eac5fd8e4bf7d5baf6c7403d26b609958716d57e51122fe7ad7626fe00a2d824dcfef3cc2fd7679fdb7b5099603de1cd SHA512 e98ff9646a3612bd41bb6f278e7b6e9a0c58747f8b82524da814cf51b7f06c76ad4d65b502ac5740e818744abb295f78f15f8262d0b50ced1523f6d1a26939ba DIST dunce-1.0.4.crate 8034 BLAKE2B e1e7ffbcf1e3632036c03303ab46fc37b2b0a991598790b2dc65d7a61341a78bf555230ccded8fbb87d6288282af3ed2a8641212a0f1fab929bf99298e878b6b SHA512 f57d9c53c177bac8e10a4b56ae421c604085aef0f264b8d6871abb7e1ff713b55f396c5c5f24422763319c504c6ea6a774416af1c2ba23ba7b67b2282f6731f8 +DIST dunce-1.0.5.crate 8244 BLAKE2B 1499ae0bb3d34e8d42e97eaf551308efc95697366b804dc83c51171a939d45bad46fce9f82a39e17b6b92fc833aecc85eabd2104823c7db30396833388125728 SHA512 36d7d75217d629185a9a9187f7d2e2dc346a28be0ad1c21b1b6bcbe3991e9cd11797e53d745c0b3b5ae94cf1e4cf141cdb2322bab86d97cc258b4145e3b97a56 DIST either-1.10.0.crate 18334 BLAKE2B ac5d81e0822132846e29f8959671b14ac6047330d54020ea7d4ad790ef985ecb4ddcb96ec7e327b1a66b9c89d37b112dae33c9ac35232c136f60ad9baab7d5a2 SHA512 2de38a37b7f3e61effa89648acadbf220eacfda1ca7c82fb77484e45577769b724f7dbaa297e73e3d355d6b1bd5109373c3e96e4c1a13a918176162b33ea2432 +DIST either-1.13.0.crate 19169 BLAKE2B d6223c76421babf163a694aa513fe07adcf4cea329872c02f5af5956e89b2c353a899f5708e5a2924e5a92d871ba748490350ba30c17dcd78dd4379e229f6e11 SHA512 72e803079bae621d282136ab1e423ba71415bf12038b6f386f294cae68a67ad9ff16e4fdf4344eb3fee4418e853f9cac344c248f6befa3006d1c954668b36322 DIST errno-0.3.8.crate 10645 BLAKE2B 4a7af10845f11b3d8f177a75a692be468e8ef0ee53fb84a4d212335f1499456b6739a59af260894b5c3853d3bf21ef3490d1e3a613305561203ca334a636c3b3 SHA512 29753c421c6f929760cd7565f8171696e4f70e677654a7507253f4fc495edbcf214ace27be46bdfe5c1a0d782f4b688f591476e56f4a1096471cb353c643328d +DIST errno-0.3.9.crate 10690 BLAKE2B 8deb19cf0c830ff2adebb733ab961558cb4463f256604f9c76d5c5952f34a79b70dce47e28f68f459977ef34d4821ab5d0f7e79a7a110693700f80b49ba56651 SHA512 777fbac5730d420d58275ef63b7579997d8e6c72106d483ee1e3b1f1ce3977f1f66c56870a05acaa4cfacacb820eaf963e9c763748759cff3668fa2e6f89f04a DIST fastrand-2.0.1.crate 14664 BLAKE2B 7a5812153500170dcc53ca8d66384fef46eeb5a8f970be43863f22f82bf427672d07cb053f4e04b0fea358ca89178399871235680f57223b8561c07b8d21cf13 SHA512 79a1e1b3f39264f037def236afbd87b732f5e0a2154b1d9e721b3c7990c52be45138320e2571fe628f482e0da7e3cf867abb745e3c277b19015fc031fd4410d9 +DIST fastrand-2.1.1.crate 14983 BLAKE2B a4535b1612b103376fe64d71a393f7bfc37668c574d9122ca90a631aeb91cf0895bb030e597b79a80a4a37ea4d514c4c0836332030bb10a60bd971573a6d6ee0 SHA512 9a51185132c1c89fc31af463c664e996f431e607ce96676b8301f28ff11a99661d18025dd460e3332e373af68d20017d96481719746fc3c5de742d08d63aba3e DIST getrandom-0.2.12.crate 36163 BLAKE2B 0afef8504932ea0ea051cde1d14bd5b79edde68d6ebae6fe88fa4aaa532605a16f466d0d9c0d0aa619eaa105600b6d5ee4e191865a3fa041549a78f78ca82396 SHA512 dd97d7dae1a7ba653abdaf2db719e1a9c8eb721b08b4af0f1c45b1ed5079069d1b57e4f6d9d879e7fae3a890763f4b6aea9bc2d945392b98e811e7b348589bee +DIST getrandom-0.2.15.crate 37163 BLAKE2B 7d534e799a4711d01c6553b8c9422dbf01e384a850fb0f7cd76e444628f2b96d28d0f5e8dae042f8081a2bf9340f57c558be50a6f22ed5fa6b0301a15898fb35 SHA512 04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb DIST glob-0.3.1.crate 18880 BLAKE2B dc89b3a664e810264dd7a01ad892e865ce35b504bfe5dba12d7ea8084da7de84feaa94c2208f1a1eefed90297e552636ad61ccebf6fc8cb4d01f27d605ad0a09 SHA512 29368160138bcb7ea5660f9f30c5711cfca8bc8ba836bbade3fbe8c424e7b4118daf27cffa677962e37e36f025fd2bb5a9c2aea865b0ff155cace455dfbb658b DIST hashbrown-0.14.5.crate 141498 BLAKE2B 7d7f31b6377c901de12f78f0004a347e3e3b948b1336a54b6abd8dd2210db0ac415efcdded421a00723f16563a7b833b5d1db3cad5c12cac916e273bf3e588b3 SHA512 215ea860bd3de80e2dd2d4647c9dd31c0ac895ea7c08b87256dc11d36407e412ffefaebc6cdbec024057dd4f24b3762b4fe427be307e15d1e68ccfde89a99742 DIST heck-0.4.1.crate 11567 BLAKE2B 520aeea740cfa30b0cca12f73594ffa655f32959673b1c9caaca1ea0162e455546ae3033881394c0ba0516bcd5c9a997da02162e1585522d665813b9096eabd9 SHA512 8c80e959d2f10a2893f9a71994720f90747742bb5b61fc0a539eed3ea5679b140c48fd7f7690d7122cd6af5f7f20a19d412e3569fe741c6d31f6b2ce1e0b80e8 +DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76 DIST home-0.5.9.crate 8760 BLAKE2B 02277a6d0e54a88e62a50ceb5b50b08cd5dc1ca5ddc17a799db0f49a17fee8560df53f616ae22cd16020ae2a89ce7c6ec22e5e2c0d513405bc2859a6e3ec61f9 SHA512 3f1f7b619f1a47694cda92321a11d66ebbb2dc0b0c33446a7a4b886f547ee88231b61c038de04bb82acd50e617f19b5085893b8401206d32cd54502033e04bf1 +DIST is_terminal_polyfill-1.70.1.crate 7492 BLAKE2B fa663f858ab8e5fd56202d731b572bfdd4ab0e8262100424e27360a9ffd2820182bc57d6718a305ef82d04c3798111841c0d9f9dcfe219765c0f63edb560dc1e SHA512 4730fa09401cb4e69c92b38b2b43afd74699c61f5bd7b37605efbc0c08ca7a1318d43e4a844e46e0f84f83f42432f01e33771be2b18eb5977702ab9f894837e1 DIST itertools-0.12.1.crate 137761 BLAKE2B d7db67feb7418d6a779dc17d8a2f33481114cd81a4d53a10cffe08e13f0d3cf4525a5ef43368fe979d5a3ce230872eaf993f7065885531aeb5a6479351857708 SHA512 0d9c1849dcc0ddf7555b0aeb7e4f2ef3b101cfc6f03310ce1b6072d70ac8c8d3387ef4c726146102012e75171e0b0bf13465704b6edfc02752e349dc6af7cf68 DIST itoa-1.0.11.crate 10563 BLAKE2B 94da07e0f7f2535d0b1491b3a3c64905274b315ffd35ec8e9a3e36e26cd7211733b462eefb5208963e388345f65be9694804c344a6132b2b595b0bc716c0b328 SHA512 7e22dffac34c9c9f432daef395e0ec710ed658164bc9cd9fc6445c9f984c912a10bac556214a026bcddbe27a3197b35b0c87d6709fd605062637d086b2d20311 DIST libc-0.2.153.crate 740614 BLAKE2B 523a41bc8cff4ebcba0edbbe9e6a2286ec7cb3ba5e90ca5926c972b68e4b34188bc077d20c22376238c3cd91b7455898a95c505ace4ededea88cc496edb4c5a7 SHA512 3f99e3a192974fffdc053ef21e9ad5fb54b7cdbd4755df176704a95dba38047138ccab76763e89c6b565f37f98fd549fe368749f84f6d1638b3209cb07eae9b4 DIST libc-0.2.154.crate 743304 BLAKE2B 25ff132ec29b78dec455f0a1fc9fbfc744ee0d6eb410aba05ec6b1b08af9d83ec61e56f840f86cb833f590e8cdec7f67ce6e7b630ee227a36581650c81298b84 SHA512 891a36cf153a9f4d58793412c104504c57280994e428ce8ba208673a924b2de38cc21eece09b91696eaea3b2359606dbe9f1509f9bf364bdabdb366ef2dd0f61 +DIST libc-0.2.158.crate 751340 BLAKE2B a67318ab24bb86c4df682cdf846d51f5f0a69504567acff43cc6e724f2641521945dc75dddc10c1c265fda960cb28b528575b5d39ce321073844dbddbc77bdb8 SHA512 c2d90d58480cca3464db475d7c70cd66bc1492239d8183038b48def8f5d8a437a1e2a2f084cb2bd9456889221b10aa07981cd5e9bcbb6bea28a2bde3c76f1105 DIST libredox-0.0.1.crate 4212 BLAKE2B fecbb90e2842a69f3967bb2a09b0181dce1720b60c5d762a334a279b52c00a9b4b52de72c6484603981c0c3e1cd8e173ef5e15fa290ce8b8888739204956be92 SHA512 31a9234201f5128f1519e108f7424d1740a67699828265cc725304a70f6a51e139f1d0c0e626b487857a7b421f25ad93e81b95b65cf0d3e0ad912388deecfb41 +DIST libredox-0.1.3.crate 6068 BLAKE2B cf09f261d3a945d290ecaaa724903e0042d66eca46dde8a40c261ccb1e82c0d6b9926898eadafc6313fdb9f19cde56377b8a9179935482559c4b9707e327511a SHA512 c62142fdca92388664eef83fc89b8607e2df318cbadff6edf9e3d927837853d5cfeb54445299a82054a0ca81853b0a33536966ab26f1f2e0fa43b39aaaf67c49 DIST linux-raw-sys-0.4.13.crate 1493855 BLAKE2B 1298a038276e2424eda9873c642fb43d864b343b03b7962446122d2dbea94d58d9fb2b93e890769e6fe4092378755413ed6afba81ce56fd61e512146e44148a3 SHA512 3918da6b667a08ef8a51aa0b087129e2dc5ab101669cbba7690fc98ae2659a36861bf9410a3b87d18522a7549d43ac169b995ea192d3073f7249305a809cac62 +DIST linux-raw-sys-0.4.14.crate 1826665 BLAKE2B 804af73daf396bb20da14f831f26ce06325181de14f0c277350bd22d21789f2bdd663a964cc0e7c5cbd2e084285d02a401a6bfbb3e8a8f079c120f9488b56f99 SHA512 28149660bd975ede05624af3582d5c78f498239f5d89713c2c32f5372fc16f4ca024dec35f81ea973a2cf986098890395dbda06ac6cf4ee29df3f9a0e11eaea7 DIST lock_api-0.4.12.crate 27591 BLAKE2B 4504d146a114d8f8e1fe9ae70b993c713cbfe884dd69c61c54dec978733b95a853c3e5af26f237e48ebb4ee9dbebfce0f6c06067f74a3d122e92f5ace40e22d7 SHA512 525d971f495449bbd02eb70fcd84d4aab05ca582142144a5f314f9aa67ad4c5b4c98dc919a416d0ed2e555063eab037a441d671d56b633f2cb75dfab5d99bcf7 DIST memchr-2.7.1.crate 96307 BLAKE2B f1a008fbdbfe84852a8ae1d9d9574306b1bf120dd5087903adbcca6af342c9abbb296496eb9bf6cb58915c4444b3edd6ca4e27131ac7d8aed8849815df87a944 SHA512 5120496faa31fc427c8b4178461a262b3a34d70eddb7ad17a19d6db8b9969c9e113d3625b5e6dc677087fc80907377b00ba0421aba9a92cf73ca2849d932f473 +DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2 DIST mime-0.3.17.crate 15712 BLAKE2B abb892b75b40657d356b6b53b9a45b2c822a05873453e919f2bbfeed9e5c06104f24db9cef2716f302198020870eaf96b2c62aff55cc11d8ca4f4f614d7c8e17 SHA512 e6d2ca92bb58fc747c1bb65a7f9023e5dbf4b94966003a72e4913bcaaeccdd6752725cdbd5081e0fd69d9e8f364d79664fcbe70061737d5c39e5b3e3a154a0d1 DIST mime_guess-2.0.4.crate 26399 BLAKE2B 667f9b8009bac2e1d8b835ae8825afaaa2ea6eddd4cebbf18de8f8fcde9318eacaeeb08066bdd611883bef5f8a53fa2506b57dffff543c3a57316e07b525f7f5 SHA512 acfbbfdc5bd725edde43e4915858b8d016e90a5b483664f0bcd5e8d2b0b3684bf0f6020aea147b5bf429f218a7af8080761cea4c5c04b68fa66fd6a676376908 +DIST mime_guess-2.0.5.crate 27166 BLAKE2B a8ec67e16a336e7d07c9aaa55025c24c3d4a62aae25213ce768786d9f292b76930132a880d662cd9a5d63aa899e9d488ab76fa9d99350e9f448ef484705ba4d9 SHA512 433c876e28394282cfbe14bb9543616cd296879f253ed331c15ace8a7d9f3629f5b596c2d5a64823a97ca9b774acc711b65006c46d54d1e9ee0553cbf1f13b7c DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c DIST nix-0.27.1.crate 286494 BLAKE2B 63fbe347360ad4b7a86f30bf2f1b27ff1ec581145a90c34160f4d143e9c297a34a2ee72e9de3a48bd3418657fbc9bafd09b704ec15a42b16b3a4187d5304ce77 SHA512 7b35a0f87427eb1b5e1480d7daedafea4609b7f3a4fcf48ca99bdbc2f150865996539f2c51c7ae6a6a13169614681fc838efb306994b020d44b45735a7380010 +DIST nix-0.29.0.crate 318248 BLAKE2B 3a13a88375a359cf77b28d7f77f47f178bd31ef74b7627b6701bc6fc601024706be4e9ac1a076c7cba26b64d3bac4de17aab45fe3c045aa7a36e2d9232e872ca SHA512 86c05084aa0e6238f8d48df0f5ce6e6d7661b589f4f3fbdad43387c59c0d6afafea4badf25d31db1611615de19a0b9ef18ce614846b79a47cad4e2c9367dbe7f DIST nom-7.1.3.crate 117570 BLAKE2B 5643b67990b7305e101b16b8cd27c447e162a7adc6d0dfac00920b0cb50fea98c9d4edca63c34f6845cba05f8d0acb407cf3045cf64a4cb28e53c8b6bc9090cf SHA512 1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad DIST once_cell-1.19.0.crate 33046 BLAKE2B c14b374eaf4ac0f60acc2e02f7bba270a0e8e0a6978d749cd3cb0ab3eb26907e4fbea70dd5132982f90290381ed18ff8a87fd530f1415fabffac864f157ea380 SHA512 4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c DIST once_map-0.4.19.crate 12767 BLAKE2B 50f15afe406d0d1fe4027c8b4106a6ea93199d68c2e6b0b234acd6ef3e817bd4e0f95a972de3c4d4dbc7add6acc85a6842da3ffd42ab8d25194a049abd0ebf1a SHA512 5f1fd1c6ffb32ca2b6bb97923a9012b1e0ca22cf122dbb7cf3c3922123c351d5358daae2476e11fd29436a437bf17a08e3c9b985f75cbfd0214924b88029923e DIST option-ext-0.2.0.crate 7345 BLAKE2B cbfc03e7c960fe3023512a4ad816d657b4f54f8ecbde9f9c4df4c5fee3b36b68ab463c67ad650778279e01c7ffaa63a0dacbd0c080c8c3d15b1611de0e71f92d SHA512 f8539f97b01af97e0b80fc96556002251befa60f8ddd19613311e62f9dc9834d71c22f5d8e7c53c4925046e38cdcf834c3c28042a4da862d6f6a21ddff8d8e56 DIST ouroboros-0.18.3.crate 11348 BLAKE2B c9000e383cde013c0e2cb32aaa52dfa41b76fd388918b9977322ea864bfd01d15c4d0062141a3ed10dfb252fba704acf974fca247872d9083ac3c4e01eb8426d SHA512 3f155b8cb1668f61104e32263f024bb76108e4c4794291841ce67dfde8c420b998ab5d097e56def08a0fd3fbefa365acd8633e517c61f57c7d2c077aa7e2b8f5 +DIST ouroboros-0.18.4.crate 11394 BLAKE2B 5ad404afb92a18821a24d9fc45851736ec9fd20639425344c4cd0618611daa3cdc2c1962428aa0fbcf8665024cd5856acc07621fce1450671c8d869cef94d697 SHA512 53e35dc321391033aaa5f064a98abfdda822bc0f2ddf53eac7b692b69163c669a82a8f1ec3ab1620dad8ed085810b06c897ee3827450efa60ac5a1d05c128e7f DIST ouroboros_macro-0.18.3.crate 21969 BLAKE2B b5c82309392d1795bdc90597532a7fbf869016184ce69202833310dd6506fe37d88a55466cb17e24c0ac11961405c2cc960a0c2466af28f1f0f12c0a67a4518d SHA512 316b2a4a86d5735bb547f6b6e6a6088098d3a194c428c841d7b15a8bb23e20cde336ee859a0a9fcceade59415af7edbf8d8977a26f4df3eb83c9e9c91269add0 +DIST ouroboros_macro-0.18.4.crate 22011 BLAKE2B 6fff8fa61a2ac102b734a99bb06f48e936777664b941c5dc6982d46d23b7682e4d95503bb5eda7c9e189dd6084e7951bb837fbfc34df10818dc921f79882be8f SHA512 ab4f490a08e34220165df2c2a3fd398e3f3980d1bbbd6da07ff258028ac55460079b05605d616b209f2c2e00e2ae6ee3160e52ce9396122badd1dac98fa37bfb DIST parking_lot-0.12.3.crate 41860 BLAKE2B d1899a1132035aaea3a784290cf4951ea3b36b2018d407e27d333b2a2ce3820e040d635009c44cb6e58ad07cec6565c0347af6f6fb02954eac2d4c348bb036f0 SHA512 368c17203fb5b9e4ecfd4857e3b1ab96b86da3770b8f21be392818c845952f72dde1072a10265760a62aa8a1dd65332bfd585667444e5fbb9dbe3280b5862703 DIST parking_lot_core-0.9.10.crate 32406 BLAKE2B 25339d028579eb45a957ae5fdbac00288b1472d784c0aa7fa2953fcf9279c750d243ce69744993ee8cbe6899633e71e0a54ffc11e39247755685107f2f8dea54 SHA512 4f30fb60ded274d3154ffb00f6f50ac284b6fb97daebc1a2ac897ce97fa8e2ec6ff30cbdadf3b7419617a410fa7525f30ef5e580334e07d4420f4c0200a57389 DIST ppv-lite86-0.2.17.crate 22242 BLAKE2B 48c4a31a3b555fa37072c4de083580bb769747c7668748541af472778b5b58c3e7ab2b5e178760f542f973774f09910bdd4058ae5fb9d6b10c103eb76cfd0d3d SHA512 539d916e7e5869d832045c1aa88aec519bd000227f9b01d4dd0bfc9ffb640d5f5eb21b05eba718174773c97192a655ad3cb31b53ceb914dd19179a6699b3583a +DIST ppv-lite86-0.2.20.crate 22478 BLAKE2B 9d68dc36d8148047d571c0147ed29f586f3c6ac9394b56bd955c8ae5bb18f5a8da5369809f7b8c3199074e23660325158c32c62e1bf69a16cb1f5da2a01f5df0 SHA512 6d171f63b42296f7765732fce3af7ea05d0d81f1541ffb3ad86e81210715ef4afe5bc9e58926e97e757aea6ff96a8012c8411eac78be0fd080898318ed21d7d1 DIST predicates-3.1.0.crate 23090 BLAKE2B 6c51fa390f3335501df604afda47ff1d2a69322d928a1412bcc4829f16c3ff5d345ae52f54d797c9698b0eb7b26495e594d8c21f04fdd77c8119ad4635184adb SHA512 1ee38c715b4b55038497a4a4996e12de91d356d53173d3a034d6a1f56859cb3a4a61a82d016fbefdd6ff291519097ce9cef950547d3d437035cd7093d965dbf0 +DIST predicates-3.1.2.crate 23986 BLAKE2B db4209b491f82a1ef6147158fdf86c0bd8a059e61c4a1922dccba257e461be36e31d4a03440c2b80b3c7c49d612dec81fb76f648bd5837c481d93cc9ac5ede65 SHA512 50896189f39842ef424aebc12c2633112fda83eba1bdeaa3e6f398db1e28dca0cc7838948f25e67f6fceede1a91a1b0ede5d4dc4edac6da752e48c7a07bbe3ae DIST predicates-core-1.0.6.crate 8084 BLAKE2B 337cbb155bc2859c5a8b891c21d352e998cd1eaaf606cf46c003c9c499a42f12268b071e7a4cca65d50cdfdfd4267f023076e078a0a3eb401ad836755d65298e SHA512 afeb1de4275c76bb1c5950f42bce2f83a21ab217ec60130336286cb48b15f36bf2a1ca346bd652c10a65a1f9e3310d16b23b8333a3e0f7e20fe874c3f728e702 +DIST predicates-core-1.0.8.crate 8552 BLAKE2B 774ed04fea09335ae9b4e87a237871f954b85e54df369c5be60977381e8cb50f11aa869e5ee41e57e4f3283003a9da67bdbe3460420ac8620f18fd81e33f0597 SHA512 8cfd010b70aa694620d6c573bd8ddc50ea16ba08f6c737902ba6697307af4510b9298ffcc3068b45bdc6430103db6fb4499783c64044d87d023bea46d45d0f7c +DIST predicates-tree-1.0.11.crate 8393 BLAKE2B a8ed762ab18f3cd72ed749cb3db3d756dfd2d3875b0f1c68a99e39ed4ac5c7000086606c21a834ea0a81db961ceab659a4648435d9eaf1bf3d7f29d92410efb6 SHA512 e1b08010f9cab65c75d82cc44cfdf64d92127acf6a72ee0ce1533e5d7d8027ccab912e1c499b7b78508b5e3cb20dc03df94de3dd520ae13736906a5f374b10cd DIST predicates-tree-1.0.9.crate 7960 BLAKE2B b758c52dcdd0ea237ce25f0a092200604765bc83c5edcaea646c6b1db49431296b61aebddea3b325e62f0ba9bbd5edba7ec92fd031cb597e7e8d642b966b401a SHA512 1fd5d9a84ca8fdd1b3c4759d5e6fb16e3d8fe8b0dfe5afbd16bb509c8558b0750705fff47701c95f7a8df1a222f639116a1b9ba4d89775bf03b06daf34f249a3 DIST proc-macro2-1.0.78.crate 47158 BLAKE2B c56a24fce3faca9e04db7965cab552d2a976c3764df0a84179b5a89d1230ab355c777a82b4c982e3945414f1f0478473a88821dd176c32d6de394d73a26adb9a SHA512 11956fe03a2e77a925cdff2c3c8bc8804dffab4fa1de963a128fa23f4189976fd2e2102bd346b92c33524beae320b71dadaa5213695a3ec638404196e14fa769 +DIST proc-macro2-1.0.86.crate 48958 BLAKE2B 4b89e07f23af8328dbb34fe2b3f1b202f1e6a3885a6269740a23359b41bb4099ac2484565d3b2b0936261689ca525785ac620c766997234fd8d0f409e80e5ea3 SHA512 1cdb7e22a35ae231d880c9420784c9acf97bda2db258b3d34aae5061dc1858449defe19a49e12c6a4173906aa72a4115059ac2db0fc760205fd2ab8b5b414434 DIST proc-macro2-diagnostics-0.10.1.crate 12219 BLAKE2B 4997c323129a17a8b28d7cc21885ad70ae2b002eae05d39becd66645d1c9fe69055dea4e74f20fcf36e3b9ab877a4dd797b7fdc1df76209c47e475cde02b973c SHA512 dc32cfa0f73f05cb1894d44eb75e0c8836529e12eedb21afcf4381bda478c5e04d03573509be8a103ef2ab8d3ec93def1a6d8a2653307afc4874e9ff5d038a1e DIST quote-1.0.35.crate 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2 +DIST quote-1.0.37.crate 28558 BLAKE2B a7d007a69e619f853af94333e1066bb767013312bd99f147b1b153611242bcfa9c76768b1ba47278589db309a9acd61a772c8ec3b567e48439bb9d831f9326d4 SHA512 c4ed21428c1f89cf22b85d80720a7869831a9c129d694617b0ce8c258278114ab98846f3f653abf736d1c86bc9224bbd695e9a7b06aa3adf292d02e1ef14cc05 DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 DIST rand_chacha-0.3.1.crate 15251 BLAKE2B 645771b2c3e274f085e0837a20306b1d59f6e9032fba8eb38a6d1b30180d15e2f89ffa2a162bf6358da41e030098242d81e71dab4321980d0a4f6ddfc2974ce3 SHA512 8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075 DIST rand_core-0.6.4.crate 22666 BLAKE2B 8b6b66d50aade877f2779c006f8038db450f808c66d73d79efa66c4178dc03db06f12201bf0e7930181c4b0f4030c49b20cce6eb7839763cf2217cad9710789a SHA512 36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 DIST redox_syscall-0.4.1.crate 24858 BLAKE2B c3301137a0b84e03b09d28dfa377ab3bea74d574a08cee21d35713b278d8b5b30ca2a1d73a0981baeb4644cbb88c86c8eb15ab3bb2692e38b93e6b35fab4e0da SHA512 073ed9d96090cf46eab9877742277a013c62d8da86d9caf2310b4fa868af306511936553579e01309f27067d344226cc8dc5e3aef01d9b900da2febd33848f8d DIST redox_syscall-0.5.3.crate 23830 BLAKE2B 0a38235ec277144f0c3e7bcb1d273c7f357d85aef33dbd06328ef16bab7df0a07b523431590899ea58d55e8e1d84c32392478530200cca3a9483e8a47b29e233 SHA512 777d1208004b7756887d6c5745ea408972670e59430e1d299d01a463ae41b98e0920ee77aefef8755fc949d4799dca679afaaae9c1a7d060f76f69af5b90427e +DIST redox_syscall-0.5.4.crate 25977 BLAKE2B 84544c8ef9f67e119f0d7e3e58c6097c560e359699975834c1040f7640dcf333a5224d5cd1deacaa4ba3328a74f670e03ce1bfcdb3bb1e1bd911f083161bb8b3 SHA512 42d54ecadf57cf95a3d9204c9f45bc3a22c367ac56dd901d569f215c5d709ef53aee6a5ede6569ae44f1ef604bf9c70b1b234980f0fc0555a0504efdd1b7ab2c DIST redox_users-0.4.4.crate 15438 BLAKE2B 5f44e9ef20f1a6c8b22239838f8f6a6648dbebd5b4386b3a2c417e39add8c4a0dc32e4369b8bb4e0ea17678140f596b9bc981b1d56f06de6a38a503600420481 SHA512 7c208116d1171b1f52f22aedcf8ad00076a3d1f062f4018f4a9f5fb2c38d7ed83258589062d1559f64e43f3e2a9ddf789799f57cf87a49ad8a37463ea09aa269 +DIST redox_users-0.4.6.crate 15585 BLAKE2B 1d60d0b7781395ff271d79264910d24fb021cd8ef612714265abae25b26ac158d48f542f1e73701bf5b99bd67546a7b878e4a14e40cdbd478b35bcc8b4778f5f SHA512 719d63fec42bad3cbed39deb9242ce1daf3f391bccafa8121f63198120371f112d78b0da8d66458519e946581511004983f04b0a697071f22294ac7c831120c9 DIST regex-1.10.3.crate 253101 BLAKE2B 390ebb00bf5430048412883b672d80737e783fd36f40895343cb38ef2e26e2713418c2fb4d66792bfd3be4c990b4518ba120de229a72cbeb7fd5c2af325fbcaf SHA512 d090898465013b0975a6de87fbdcdf76b4896578056f4da83424bd5e7832547a3d8ace643c379c4f14700a0a88dc95950a38645508d1675306c377879a90cf5d +DIST regex-1.10.6.crate 253894 BLAKE2B 176cf6a1e86aa8a5004af5ab0d6cd4178135bdae3caeb6a8276b8739858c65e9ebcf23749398a5a91adcfee9cca3667b306c4adb6307acfe61dadba8c6f3eee4 SHA512 ec28961d226c944321d9953c42e43cf2d23b8ca0d72d6412e7b0f572c407aceb079bb82502d124af94d71d67c9e5e0c9f66ab9f31edf6023ff045ec37b770964 DIST regex-automata-0.4.5.crate 617406 BLAKE2B 21826731ed5439a12cdda5a1ef217dc3239a0884d038170855985bf830f2782bdf4dbfd1b1a8812812db3a2399dadf8c173e75db635dfabc97382fda0561bba3 SHA512 0e9681d5c4529d49ff2555b7b73cf234b1f321a7fc634beccdf76c2bce5094e8501403e8caee2b3a16ac299cbe4701d891f1efa380b54f9dc2d92bbacd4de611 +DIST regex-automata-0.4.7.crate 617582 BLAKE2B 6295d866706b623b2025fdc0c407086fec15053229d708713d0ec165bd526ba25e7468d0009625cbbbc21d20345f0af2eea10addf6de633e8e6a02dddced67b8 SHA512 b19d00d64bb8cd833cfb35fabb162b9481716f4b7f6035c1c8f1de4e0f90e00823d006e057aa3505aeda48c9e1802e61173c4a2878891129a3a918727e43b0d3 DIST regex-syntax-0.8.2.crate 347228 BLAKE2B 211fd1c35ad0f28874d4b4d276e0fb0a27e5a1608f2f16ba2333641b154624e378419daf8d1c955f21ff5f40f6d49c89569b7e11ea5649850846d0fe447a675c SHA512 301dde555f300298f2594490ccd8b92033e4917fe9b8671b8a97db6c827793c73969be85a92999964dcaf3177edda51abeb576811ad6cab9772964dc0a77e728 +DIST regex-syntax-0.8.4.crate 347577 BLAKE2B 400323cdad2a7daa8d4006e4dd7a7b1234704df0f80ca0f4bb19447f8f1d270053bc8aa613e48291ab3a78c7eb02d7afec57bfc8d966a48b372a4c80de9b120c SHA512 10719c138d9aa304106fcbf77da0b01645d1b6fbc621abb639dbd43ed5fc3dbd22aaad8b86df55a60e7b2b4fc347b6f41419131d7b047273e146073250d892ed DIST relative-path-1.9.2.crate 22420 BLAKE2B e2fdcef72f1633b2c315e5d2d316d56defe758fa916e872d84a8450ca0223f54489541175940beb43347c3a1759e4ca4d4afbd49410859cfeb6bfc703bc7a8ae SHA512 fa12c9df710fa3b5f9df9ada9efb13cd52cc10b151cdba5ed094fe74c6102cc557a5f38d05c9c0fddf2510aa13604428aecb4ee9b84405d02a98e6ba3177b2be +DIST relative-path-1.9.3.crate 22400 BLAKE2B c6bd04b060013de042079a741a864150632c02cdc493ca1cfd746bcc12f6ad903f8f0748ec68261c979d833089c0fc091f7c9da2b2936e8f75dad8d4638a7b10 SHA512 fd5c88d370865870570859a110245e009eba557225e4297783a606227b13b42abf0c7e69a4beb5093a5a9dabac1545afd988f4c831abe912c21ccd8013c30382 DIST rinja-0.3.2.crate 26823 BLAKE2B 0960eb23ecd49e7c8ee9029922ca6185f0518b7d6cf0e1ad3e9c1395891a5a9a41dd616b7d3572547ce5d7291cca87876d8b75bf11862f3bf4811960e30200e3 SHA512 5f4ac7666d66810c3785baaeecb987b0f1d9e7ec639e9747aec203bb05c7b08f05b3f6d5f9386de76f1ffd2d1bc7381bf1452b09badcd2972b3015091ff1c720 +DIST rinja-0.3.3.crate 27674 BLAKE2B 2c0b7850d46b9aecd3a2c9d44eb7cf96031af3eea02ae8a6523600fa5fa692a63371f96038055098285672108614dfa9d013e01405dc6ea8798199731e6ab13a SHA512 45da0fba51e37348b43cbd3ad409314fa6609d3f0246d1f75b8d0ee7e7f253bd9cff3ce2b98f8107adaee2c05729957be7e04ccd290ae4e9988e3d797fa992ce DIST rinja_derive-0.3.2.crate 48100 BLAKE2B fb128d7db59cefc578c490a1ee1940974105426e6e65f3f71525f85148410ce6c4efa6d0395313ac3837055ff230d710323ed013e55df43b5baceaf5e3a05be0 SHA512 1f958ad79efaeacb57197fa49c2f9f3774f7e881ba800d41162fd8a4d183b63c4978c4028da4a77b6590ef986cf6baa872130e9e0f06c56cd445337bc0f95203 +DIST rinja_derive-0.3.3.crate 48258 BLAKE2B 0fad132396990973fc45ebb7607c857b60ebab497e88000988f0238811a8e25a2e93e3ff14a1e645331cd5a4d8e95468cef2418528004999be0218e35c6c7f2f SHA512 f1b520f005b9dc0de2630951d95d28d3b280b209848b0ce29a9e6924e282d9ad82baa685f01ad1ee9a10aeb17b541f76a07107baa4f13dd676f009bbb6c5aa1c DIST rinja_parser-0.3.2.crate 42023 BLAKE2B ee0db9e971f3637cfc310d00b9ef10d65d9e6843db3a5fba817999549b54667b0afb1b6cefff16ba97e5ea58b9857bfb8e84141da51df0c2809ee45d0e4e3089 SHA512 520c82d47f2c7957781eeffc8f44177dbeef4146e8c038d0d25bfbfd76cb1c1be58e7216f888690dd67ffdf10399bc953306607e02032da8a45968a372071c88 +DIST rinja_parser-0.3.3.crate 43426 BLAKE2B 1eb4667505472824e024609abfee1e0813c9ed5e1f0d8302fd07b38407017b44a1bb5701a947e55d1cf6f350b48afbb1bcbd9bf9cc4567c64420c2860971e2fb SHA512 5c6be5d756aa6edccca841d39b59f0182ebbeef8033e7ec3632afa6298a175ac2009f1bf9a7c99fb246e0f9aa5bda23d4b9710096b96a829ea165f9a50bc344a DIST rstest-0.18.2.crate 28868 BLAKE2B 44368c85da79308277d9cad96659520ecdddd767e55acc5a4f35e246af64a29112867c4ed40bded5dc0f9d3230d828f6ca98a73adbc1067b60a9119b3cbdf369 SHA512 b73b902c761717acf5848adf888c27e5c58fe304f235e91e1e543cdcfb4e678472b8fe9930cb559be525c0f1a037bdfb2d77b7a0632b021d51976b85288f459a +DIST rstest-0.23.0.crate 45414 BLAKE2B 6e31af0811504c2d644963d14c0ba07cc67506363a7d93c85e1ee06616d14f3382765aef635b68dafac531b58c7a4bc41f3ef82580c065d6f002b7b8670ac988 SHA512 5bedc6c08a003189280efbc0c3fc30d5faac227a93fa34083200601f4d8e2ddd337e36026ef2c1c93bad436c761d9969756cf289b5994dea854f06f2a881ecd7 DIST rstest_macros-0.18.2.crate 57534 BLAKE2B d06bb6453eefa572cd784e38ecf9361873a5f3ddd5dc4926728183bc303e28a304030d45304bb287019b42337d78f294d9ae350d4204fee027b68c264272d86a SHA512 614944fbd51de32b5e7ec1b485c12cd68ed9fae6ef296f9a9811de2495bc27887fa5ff8695c619255ac18da5af2b6ef8a557753d96b4c1ec3d711a9036bc7392 +DIST rstest_macros-0.23.0.crate 61327 BLAKE2B c522dc07e4544dd1694f02f7ad707b8fdcb315afc735e031abab6c4e90b49a3987856241bc3ec445ccbfdb2cbc6e6568d61724dc2a17ca603e4d6068301f784f SHA512 5b404d73088bcf248e66bd58caee3c25a94fc614975996f52bc58e8be771e0152d093174e9c06440a73937bc682d896a0ec089b2a8cef8b6c8f5c6cd58e639b9 DIST rstest_reuse-0.6.0.crate 9971 BLAKE2B 154fbb839aee7e948f917b1c96bcecb141538b3ee7838a19ec96bbb18594db6addcbe2c098f22caa947256c734af299362d0a9af1fef945d1687c988ef4babf0 SHA512 b8a4c6c0484587e7f88153a2cf20e8c3ca9c48a46cb93a686a40be642743d2952158232c36a5078abd81722ea8fba2981ffe31585052771bec7cf29976417705 +DIST rstest_reuse-0.7.0.crate 12828 BLAKE2B aa10967f66833b7389c65a38ffa9fcb03e5d9a55ecc98871c37dd925ef82b71eee066ea72a283d47cfa0676fae53382b26f4d199ac43d4320f2e200e7dddabcc SHA512 2c13730957c1598d8613e22b0969aa975cf89620a93196d2d3ce110fab2456060ce17588bd37354eff0f2ce44b5973842376897762936f6a41369486336b2aac DIST rustc-hash-2.0.0.crate 12691 BLAKE2B b6a619f681e897c8a9167bb88d6ba78715010ac6c1ef9a7a9e115fe8aab10fcd9d4f5e1893e89a36a59118819dbf67de3d261a190fe37948137f097bc99b3fd2 SHA512 996ad683db2e6839ee28fdc4a31293aecce7baefaf6051220a633a00beddef1be41aef0995d7501e5b92dbc85350ced920bc980d05f5ba235e9a5d1a13464339 DIST rustc_version-0.4.0.crate 12175 BLAKE2B 6fda2ce03eab45d7193fa0d70175cc7ffb56b7be85fb1314092bdcfd3948ea145420569ace3a47218a4a2a6e44a818862cea6dd8cfb945475496f63b591c29da SHA512 f66da7c6efe431db06cd01180d84ba67fcd38f8cd6ef693762957c00ccc2211f23c08079d7f184776e08f28d2d6ca3bdb5f5016f7de245c6193d4722891ba1db +DIST rustc_version-0.4.1.crate 12245 BLAKE2B 0ed627c560d88e5ade830cc5f72c62f6ba88be3e30d0f8db34761fcd0b284e5b2fc063c240149aabdfb12c8410ecdbe50cb10a3544500b5a020f95a31cd6709c SHA512 7aa8a487ca7411b6d23cae62f7568fa3474a7b1fd1589621071be3428a550ed3b7c4ad68277a8f86849e5900397d7d0e9d678f5d423742a045dc7c660fa6c598 DIST rustix-0.38.31.crate 375443 BLAKE2B 9e8ba6bb4eb4fdf0bacfbc719124f745f383abbabfeb161bff9908d1948942d358f46191377b90c180a2793a88bb01be20dab556cfabc8da8efa2533af8e460b SHA512 593e0395a7bc5bba949e6f2a5ed9e39ae13140970a598def32ab7d6d91b4ec100752fb05abda407ee2e5e420d950b19e607f963f3974213637423c751df75960 +DIST rustix-0.38.37.crate 371243 BLAKE2B bceaa4861747208f1f2b68f8924c7247648d88deb200e97d8ed17c5cbf9c934488065f0ee7e4406bc96e8709b292ee1fe15beb346bff57b5f05af36174420a0c SHA512 6c0ad1be1fcf1b74f670b2c7599ba68c2ce834c760ff7486674d190ae0d552165b0c2abdc35b13eee8c0333a904c67f5dd1efa742c20fd3735c7ccdf2a439619 DIST scopeguard-1.2.0.crate 11619 BLAKE2B 8b7e9ed6cefef9ee55407fb9690d57a2a98bb93e5105aeebdb475a52485e9e185255249e1dce8f83cd80534e7402d485aac3efa7e8493b13135de27550cd4bc4 SHA512 6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb DIST semver-1.0.22.crate 30446 BLAKE2B b77a951d959a3685b0373c80b9991a8567f8926d093b23b7b8fab48595b5d565acf7408fbfc8f4d58331f39e316a8068885d28bcd70c1476d1cda436a2dd88b2 SHA512 7dcf9b6a02650d71d6c9ab3c29e44fdef95af296208f26aa7be6fd6e16773e5e5e66418c303a0589d1165df6dbfd46ad6ebf9eb5b3adab25a51f340947b2d949 +DIST semver-1.0.23.crate 30622 BLAKE2B af5f7401daa2004ac1fc419ff907a65feb9b11743ad0feca0929bf2409eb81e03637ec5f92ba9f38ea386c4ee5cde72bd3d2042083e2fb0d6fa0b839b1c5093a SHA512 5ea1fa17c08d1280c3a4bc8d28494e88ee05acd5dc969ef6f0c6f91fd3b5a8fbe999c9e8bbd2da383413038b8d29fabf02b87bd5265bbb8333f3fcbe409103ec DIST serde-1.0.197.crate 77087 BLAKE2B 4a4e04ededf5fefaabfcc4e17457db823239e8eeee7631a905ed47800ca10d26a93632e3a9d1b784b83f84168d0d649cfa2e6f5f1e68ab15a68e837cd5b6c699 SHA512 69e42825fce6a0a5d109979785daceacfd6afc5641e202fe83da32e2b1f968416557cce97fa014839e873e65f85c27494c8f8e20e6e9e4fbedf20d0291880410 +DIST serde-1.0.210.crate 78338 BLAKE2B b3621d1313312177a346313e6e384fe9660f74eefb18e6cffa39fc2aadc0ab73be84b9037c59b716e5feafcd73f4f054f83e6d17d82746984b3064bf8d3ed338 SHA512 0d853ca51543ae8b4a0c70204ff4e559a4eec77af3d3bdcfc75c5905c80d4ffd1bd9eb8258ea4f6ecfbdd26477ecac7dd698d84d86759fa32e03a9cce02fa4ae DIST serde_derive-1.0.197.crate 55771 BLAKE2B 73708908b6d1e104af4c63b498bd25c5a728e07e22afdf92f15754c0f17636efe44c0560c1f0df1b9a30708e8e8894a62f1ea57c234b6dd861cb9c8dc044eb4b SHA512 669376e248b76a5ee8b9c93fd9fe6d35372e7267fbabc14730539ef28a94e405ee5e9c2cc2846897d59d6153742cdc6799f9e2c87f20b9dad119bd3a86c28994 +DIST serde_derive-1.0.210.crate 56020 BLAKE2B b346e574c99b6a8b12dfc29b20a4fd2daf8abfabd3714ccfde059a3a1f14a5628d4acf6a03f8076174fd28adfdb7cb9bbdb8ac0d4403aa2f43e917eed4b08028 SHA512 1c54d70a55007c00d3ff3d8c2096f4f9966431ba7bfd9195bcf41932de71b71c4ab934f9a8c5067cb56a042742cf0efab07377dbabf12feb1af6d20399de00b5 DIST smallvec-1.13.2.crate 35216 BLAKE2B 31a268aad595c06cdb078577a97b089dbea156a0df307a3e6aaaf4861bd9a680c5b11921da9dbdb1bcfe17d58c0cbede1ffe6bba3aef59b384fb1b9703c62d27 SHA512 a97c758b668e40ad9eb572e65feeae4954e09200a04ab92e26a13b48894381cd3a3d2571070c4b7a5e181182e1ede9688f990650342ec69ecfe1a264d234c679 DIST stable_deref_trait-1.2.0.crate 8054 BLAKE2B 287a65c3e5b47213544a43e57c60a54add60b4c2e3c8d042407d860cc950ba7ca01a2e67ce56aed6744992b61ec1f9aed3321e3d88482e33129548b7d51df205 SHA512 a13cfb22723f1f2cf089b2d07d657846f50c37bc0438d1a76096bea30214cad226b7a422c21f9e191ce87071da8a141d61882aedf9e0203a5fffdfda86a5fb03 DIST static_assertions-1.1.0.crate 18480 BLAKE2B 358dd5ac413d06f62da0388e2016c5fcb8ec68fd7dceb0dbbcb97665c032b7509b7e083c20701648b6a9174485f117c02682ae4bde7ef037e80a85cdf6a0c86e SHA512 46d0e35f77941dee6f60f574c130472248063dc38494c1c4f84f7c048244cc2a58a86fe17c0990e3f0f01406b75ed385a13d00058612b27cf0e867c8d31c92ee DIST strsim-0.11.0.crate 13710 BLAKE2B bdc748ffab302c8e1d3412663e300c399ba13bfc0e15b07101a680394204af2df8897ba784dbe57b95c4fa9e732439d0f5aabb090b1b1c81f066bfa125919419 SHA512 ef4165dabaf8cbdd6c58420043cff9c0d1f4bc3ed53de5973b654bd71ac7d462fecaa6e1b750fbcbb8e19b35f6e6b73641a17656b20f5562b6ba7d84e69de226 +DIST strsim-0.11.1.crate 14266 BLAKE2B 252a9ede4241b165525486aa8855dece37af77f5b28e0e1858c4a5d2047db9fa958328db10989234aad69463ab51b2303785ec056c63ea8c95bf95e111ddabf2 SHA512 0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c DIST syn-1.0.109.crate 237611 BLAKE2B e827445d00c79a8eeb91eacde472f1987addd6ce9e1df95d7abf6446a77ff4173a8006845f3ae71c1da47193cfb72e0ead9a6d6bad2573be12c17e90735d9ad9 SHA512 12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d DIST syn-2.0.50.crate 254314 BLAKE2B a0aebb5fc4d84a6fc22cfd983bfe6f68d1fc6faa2c6878650ba387ae9432281308f188be693ca0b685d8bb2f488cac36d06afd05cb6f0a47615a4e4874cebbc4 SHA512 c09fcce91ba585d24bd6955399152a207b3f02176c02343ac5d079ae30c432d51cf13831278d98f3b614a907813bb0105d82d19798268245f8c280ac4a1a8a5c +DIST syn-2.0.87.crate 278076 BLAKE2B 93385f64103fdb482bec34c7912474ae7a5935948715e6eb9a54907e0db5c39f089f6cd393bab33c935c59a1bbb0f4099431f206343811c1a450554d96a35756 SHA512 bcfff545d6dfefd81e09f8f30a86bdd85759b3a7d4093ef3365ed02718e10dbd604c52b94c9d7fa955d339fdc5b6c079940c6f345b5a48c52b5c8607794ca6f2 DIST tempfile-3.10.0.crate 33376 BLAKE2B 303e3bbc2492fd965c5e5ca02229868e94de1b1286175a07b3f9767a174c5a83bb6f6ab59d582f963f9cc4f92362be6a8e898e140397e4314bc18bd8d4e13249 SHA512 0f9bb6420105badfaf7e59f9679b53c6e3f875208ad8b08b9bf38cf67a1512742f1e3dc586136ec9cb760d127da6be69e9f9ed55f18722edf1af3a452e7d93fa +DIST tempfile-3.12.0.crate 34423 BLAKE2B a8b84f54a54be636f5b69791ca567e8b692d6a8485ef37e5a8340d26b32b1b0f9f8e9fcd9a2da90ec2fbd39c281d364dfc5723d06892832edb79ea5cf45d069c SHA512 1a27513548060984be894e6f8fc215831e4b2054b2244c6188bee76c477c001f294c762f2f4a14488c58c04e5d1473806d589c7bba1eaa2cc02d97656709be66 DIST termtree-0.4.1.crate 4557 BLAKE2B d4300b0e6e908c519a0a76f5e08167f4467f428b2926e7739614cef5d3e294dfac15ae8576f7011a852745713c16da93346660ff96520a2bb90a4dd4c23d889c SHA512 ddbe0d3ddd79b182732359f47958ca32aa351d10b1e7d5f6456700b851aa2b5314ce005e1fd120a248b676f219fbd68039cefc071d92c5b5477d053bb6e29062 DIST thiserror-1.0.57.crate 20993 BLAKE2B 4eb90b8ee027e39102d6c030176db94510180f2bd2966503501ff89ca6b49afd61e6d9e1ebf18c08d374ff9de4e958dfcb3da8740fdfe31cceace5be456bfe4b SHA512 0ff7e48c3696f4f4c6af29f3142f0a7bb88a07b7a9877ec243e3ea15d89c48f1898b731311da5d4a7c88060628cae3eeea6a4eccf25bd851cb3075920cb1a936 +DIST thiserror-1.0.63.crate 21537 BLAKE2B eacab5745d948416bde165d768f55c10c132572052db405ae3dd3e6e3b5ce41f36d574192ae68fecf6002ae5b14fd0aa135fe15e1614f3b51a294d5edc67c9ac SHA512 d5c2360075947cc0fff3253b5532f03f3102d6c9ef52dfeb3b400771116937e466a62ce67ccdf91532bf096f4882322522349a727588fd87b932326c8e758753 DIST thiserror-impl-1.0.57.crate 15639 BLAKE2B 2838235c5536fcb16d19382fe286850d6fb882b1d77ca4ade6a62e1d4727ef89f69cf0383cf330996f9e2303226d5fd709557331a45c9a91393db1788fbf4422 SHA512 a850806f09b232546d1e0df5e35cd961a8aa32f1d8ac3b24df360981da53b75325a46dc788c994042c95a5887fdc77234b9f6ee5851242f734a613e579548e3c +DIST thiserror-impl-1.0.63.crate 16047 BLAKE2B 290b56ece5c592fdab4d20e9ebcc8dfe3f76b00aa48ed6c216ed0ebcab86b1ab4b4d676d0f52329abaccefae12bd47b4a81966901fdcf4ca5d0632d5021adbb8 SHA512 f93b7f89784d72d8b6e36050c22b88b7fd8de38e9a90fa6fe3f45973ea1566ce8bf82e959951377e3bf584a32afc97812188be25983a028be138b1700bb8c102 DIST unicase-2.7.0.crate 23783 BLAKE2B 2b74b932b45c9d5b984b57bfe8249496c192944e2e66916919177eac81c509e2d7a5d30a85ea58e8cd5a0b47fec746bdb18723f3f14002fc64af3a0d320a9e7d SHA512 c2b05a3bbd8996e1cf65d7458f5ad95de9797c8349484f8db04967bde15c1f057f62b2f7a60e7367871512071ed5076c0da042169dbbdcaf4d6c16cae62da828 DIST unicode-ident-1.0.12.crate 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920 +DIST unicode-ident-1.0.13.crate 43279 BLAKE2B b5e935020d1c9f3aa24f7d382f6b73d6510d654a61ce1c9c024e2e365bb817182e076139f370e822573531356fb78ff7499049b1f29aa1e2f4a2cc74a955b47b SHA512 5ba884f39debe9c8eb0b1d251ca713f7e2bc191d211707ed10cd81465487dbdca53914c19e131edfa1da15af132dc2c346260c3969c61e3747b63399ccb1cc51 DIST utf8parse-0.2.1.crate 13435 BLAKE2B a1c111d7ffc60690f2aaa86f034c66ba1abe4e126f1774a4377d41eba3269369862f57515af387ea785d69a8adf46338b5e53761b5ee6f4f4380473f4d9cab0a SHA512 51fba8f1e7eb74b7020fd831e30a67fc8353ac2ee07335c8c3374a5570ac8117f165f6905d4b7f0360095b7b5ed3e739001d02a8cc3c89195baf2cd679136050 +DIST utf8parse-0.2.2.crate 13499 BLAKE2B 095b5d219ab8ff04c06fd6303e03d913ae36a57845f0b2ca3217a40e31a54cb0fb5ecedbde165d28f5f60f1553d8252986d7098fa83befc84a7cb20bf3b76144 SHA512 f3dbf78fe924f1dc3cf9498b6e43fb10174699463f31091a7a8136d8f31ec84fc00e80e3d8551b7e86257e8b3573cfddb56fc0de797fdb2cde0e962a8f239266 DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 +DIST version_check-0.9.5.crate 15554 BLAKE2B 131e75cc287518831e142430e2a39b48e4275874f4473780d47a27552294097aa1cddb65c385583e1022478f940b495eb43c24a8b1617b8ac5a24af3340c0d72 SHA512 d11d5a2240ab0c67ea69db56561ce202201edeef9a8e5eda3d9ae7ab7bb5752d8f343fe7f6536d8383de8d55f9024efa84f66a0c21e69563b7a38c4a628014db DIST wait-timeout-0.2.0.crate 12441 BLAKE2B a99d3f57bc6e784ac06167f98b2dc2841f730dfab4fb9772b15e67707f756d6ba7daeb3e992d32291bed3daa85eaa8a8ddde64db5e1acf1cc4031fc9bdc82212 SHA512 db3b7aa2acfd44e64451042b8ba98eecab77a82aa5c58ed08dadb119ab36dee4e26d62baad7978ed56d5ad03019c96be5021455362290f56043981137bac8066 DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f DIST which-6.0.0.crate 16751 BLAKE2B f681600f2e2af626273e4b189d43dee9ca5c09f1808870c49aa0974d56ea1f944e83a0078656ef519d6c172c0b22a56f5d0adba21ef640afb2665bf9b58a0d54 SHA512 f0da2731701a33a07704672490e53e3b1476f3b06856e7b9e00aecf92dde5b6ae13199780ffe202a19205cc61ba1eeacd519f6a132307d8d2d07d0577cb73b50 +DIST which-6.0.3.crate 16937 BLAKE2B c4916ce80625b8b869cbf43844d689c62545964cb60f9741851393540a241d1d440dd64517949f3a64a4e9256584393fff84e3cea5f75773c9afd8b7ef580333 SHA512 82048af7dee4bd274f977530a19c2e2c86ac12936b7d814b2a86f13b2063e1a3d7092846d1ab66e3f653bf7ebbf5eae8bbce061a970c5ddb30b151234dd0593d DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8f82a3100ef28e1eabd543ac129d882dc86ffcc1714071aba09e4cb2ae2d2f07ace1a32b99fd989ce525cf05991edab SHA512 bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed DIST windows-sys-0.52.0.crate 2576877 BLAKE2B 69d6b560ccfc8f679e2678663ba606060d71fa28efa82c8aef8cceaa2c63b06f2052764d60163964f939649a26bbec6361ee4b094555e941fae92070db566980 SHA512 24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03 +DIST windows-sys-0.59.0.crate 2387323 BLAKE2B 3110c8cd2bc005f8c95cd038a8d574af648dc19788fe4485f977376f92e36b911b1a542d669a07ae9cd4ea72a884ab01ec78b8a2b5587456eb202452d1d8fa0d SHA512 d35e009e979633a1f3c8468cd038bd5c8c0381405165ce03497decd7d9edaaac485d704487e4a61d9aaf4e4d011b4248408912df6a0044d50e8457259867e061 DIST windows-targets-0.48.5.crate 6904 BLAKE2B 7396bb210f37bd51da86f39fca3425c8f6610721d5c4e94f9fafa0a8a8046303b3fcc6979146bcfaa32f4406d242a0455f6cbb220f84c6ff84650e755acf5223 SHA512 e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709 DIST windows-targets-0.52.0.crate 6229 BLAKE2B 4b1efdd32202f112d3782b586ce60667f5d3b6f97ccae0d7da833aee2ae81ceece88b5ef4126db2448c9019de3f77e4fe66ed4286bb6275d9a5e8ab74725b804 SHA512 0ea09552d89b802ec0d419b640fa02d0af7af602704a0e88ba10f81d123dee0c907460f6ec91224177ec9a948970abd7414740eb219148a4d66c269c2362740e +DIST windows-targets-0.52.6.crate 6403 BLAKE2B eb98d0a8daeed5fe76e7fa8edb2743e2a3e77dfb9c4ea68605a6ab10532cb7cfc43bc1cea0180869445bd940be762a40136500e26b84ca88b5e0c502004c7a4c SHA512 d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f DIST windows_aarch64_gnullvm-0.48.5.crate 418492 BLAKE2B 5c6f7d73ad05740f0bac304ed1ef9b2ea63b0d6ca8f875552ae299a0b73b1557e8fe996f1c2b69be9f2df350c9288690f49ee62239a2896991364331d6c55462 SHA512 20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996 DIST windows_aarch64_gnullvm-0.52.0.crate 430182 BLAKE2B f23370c62c4ab3fd885e3ee22e8ec2fb5a3a837a57044c1df3f9986dd4e7e9d0a44ec58be1648a41e1ea4d037afa3077f0f03de0204199a82fb8395731815a4a SHA512 b7c3fe0a2ad5149be0df48fc7a4d15879eb130bd9441c58c25fc71b8a91483f0b553fb1bf29a9302acd348e9083a547430a840b059b0cfe19867ecaffcae986f +DIST windows_aarch64_gnullvm-0.52.6.crate 435718 BLAKE2B 8b12ae02892cb69401329034bbca671d13bd268a112120b56b90504707cef89decfbd2560492844a9f0588fab62dc1476ab7e931126b939015d25a8cc91ca334 SHA512 f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5 DIST windows_aarch64_msvc-0.48.5.crate 798483 BLAKE2B 60c466d6536426425a34b5ca20da97c8127ebeb4fb9b1363911165bada484f8913fcd50e90410b5661e0c27dbfe8f4eeaa62fb17d1f3566bfc82b6255e11619b SHA512 223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff DIST windows_aarch64_msvc-0.52.0.crate 821663 BLAKE2B e6f772858205f7cd871722136aec4d00daea4793ff9dcae53e6311e74526c46aa11c2b3df7a85e6c577757254cbfa5a713e68c694625ca274b64e7a1c5532c23 SHA512 8446bfe5b9fe538415762c8129ab3bf2fe45482e045bce367475747786602ad4ae1187c6e508dd9d7b6be81bfc8d430e0db9c624e35c7cc52e823023e46f5cf1 +DIST windows_aarch64_msvc-0.52.6.crate 832615 BLAKE2B adc8ff61b6dc96d39c92c7d4221ae6aa0575edfc016cfcd046067ca5d8fcfd56d10e8e227be1c038ce34684be22c7ccaf5f18cd5a7638d28fbff4ba15b48b90b SHA512 a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b DIST windows_i686_gnu-0.48.5.crate 844891 BLAKE2B fdc37cd74a4982056bf22fdb7b84e1c55dc838f3cb19ff3648730a77e673ef4ecc0380b3e4277bb8df2fcfa25f57b69014713d9e3ed27c28e19b25b3ea2ab774 SHA512 931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a DIST windows_i686_gnu-0.52.0.crate 870285 BLAKE2B a7688062a128a1b1394b3978210334e4e2aaa10dce131457c4a11ce0cb3f551e7f4962d1ece1846d8e9526983ced0e0a3ee8c933858e9314b62e76381e086ef9 SHA512 fe993f5bb6e039c257be9b35337e0221f718d23866818bfd19c76aaae236aafc2de4bb5014fcdf919563b5901cdaa14a2136cd086eeed3c83e46a5d02f6aa77e +DIST windows_i686_gnu-0.52.6.crate 880402 BLAKE2B 5aab8ee07132eccb7695807eb44811beeb0657aadfb672c54e99b6ae39c067ba9b93e38fc69bb5b9b14a9759f263ccd5e301597d2727d83b31b49a409b6bd405 SHA512 a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822 +DIST windows_i686_gnullvm-0.52.6.crate 475940 BLAKE2B fec4fda8bb2bf319a501a22372fa642ae682e4dee3235b258a028190ee73220bfc55b3142f06249bb4579b17e5fde662bb2b121aefe18544653350d7d0fe7d8e SHA512 95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f DIST windows_i686_msvc-0.48.5.crate 864300 BLAKE2B 3d3ea8be55e2d6ced0eeda18abe1dffb925a1a78f456d683e4450d9f2fd287ad2e8494d65b2b770c677a12b3a60d10f0435e16c61880e3867c3657fd44892442 SHA512 70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e DIST windows_i686_msvc-0.52.0.crate 888693 BLAKE2B 7a6e9d03e503c8f543e80a8c7bcf3f50cfa7eed462e487ae7b581746d7cc4d871b33e307110d3a3a75226d88e837f9452ac56bf3baf71b66cfab2626cc15558a SHA512 817ac796fd00bed51d80133ec873cf3d3d582ba41fec8a6f6407fbd7544f198e928aa5d710f70c13bbf74a1dde4c91c54e65eb9d3b7518a7f011ea42725eb671 +DIST windows_i686_msvc-0.52.6.crate 901163 BLAKE2B 99ed34e052db5ba77bab240ed5d38ce450be347a794d63ec39b719304c32722c9999b540ab40abe0216318900b7412970df99dfb36d1516a9517cae0c77d1bdc SHA512 ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96 DIST windows_x86_64_gnu-0.48.5.crate 801619 BLAKE2B aa7e7e6a6ff9f9553ada3a0a39a9aa798e9d995a8eef36e0b6fdb2a0db93ddecee5548970575271fe43aec74797a420d0ee231d503b5bad1bd999059261e0e33 SHA512 1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74 DIST windows_x86_64_gnu-0.52.0.crate 826213 BLAKE2B 3ca03285ef289fc844261142154e710e996c29940b1c0a7dc3016906ff6452fa50b24f8668fce0ca44bf169ab1228c217fece9f7bddac9ab8bdc54fddafaf8a8 SHA512 2d81af56ad0bc9536f6e066776642a546ce6c6d99551edc0603ffcafe6db15d5d5a32a642b204bbfadf34231daa3894ad7897a9c0c575c2b6bc1e3e58a9a3eb7 +DIST windows_x86_64_gnu-0.52.6.crate 836363 BLAKE2B e2335829155cdbd4a55cc9f9babc237e14e32aab97f6f91afabcdf80d2aee37d6fb4b8669aaf433ff532c85dba59b3d366c7d41b61a2f29b96f960169c900687 SHA512 c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e9f435620ad64b40c579f6d0c3677553ad7a48e5765d12c266b04946402e15c92cff2e4ac4979ce2130750ef426e2672119680284 SHA512 c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa DIST windows_x86_64_gnullvm-0.52.0.crate 430165 BLAKE2B af9345a1f6e0ed1392ca1534c68d23f3be0fbb6a42b3c5518cee14373e645038526da15e849d14abe45c53766a30c6c2042a626482ba4a05409f325eb6aa36b1 SHA512 e88af35fd1c694dc189783e5c81aafa61aeffbddce4d7130e1125d0ce3d932fafeb345990ffd98477c41b578b7f5090f4f9c0457b02146309b95549c9f8f44f0 +DIST windows_x86_64_gnullvm-0.52.6.crate 435707 BLAKE2B ab77dccd06328cdb00175f41cdbc120594050a9678b7f9820444391fb50aada3911a91ea00f3a6db2b4fa1820fd23bc9a007dfbe65ad41417c26ee1137ef9b96 SHA512 67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 DIST windows_x86_64_msvc-0.52.0.crate 821600 BLAKE2B cc448b65f98fc0fc4949ae622b7020d2dae927ae45310649f6ef71809740eda9d3db0fc035676c201fd9ab9639e9e7f21e2e992b4c789542f12b419d2c752179 SHA512 3aaee31533a1a48a6ab5cd15b3cadfbd906a93a153e53919d0aa74e440d11e29830554e4e014c215f5b88a475bb733fa8ba4ce9d773d3e23a40ea9ad37ddd0a7 +DIST windows_x86_64_msvc-0.52.6.crate 832564 BLAKE2B 8e9a3044654c6de99a9153e7cacd575474e7a8a3d883c67b02132af5d3fc99d03cd5f7a4dd666a3947451d11218e6acc6eb5e2526f012481106cc13453839719 SHA512 21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7 +DIST winsafe-0.0.19.crate 492820 BLAKE2B 4eba26861f85f668e134b08c60e9522b698aed61eaa5e6d4e89ef31c1b97953fa08a5157add52d9a306075df4ad97e9aaf1767eea4208b72401ec0bc1c3eb0e9 SHA512 0555ec74c5acbb69ab08e54d920094e806258079bffaff3f90297bb94a000c7da36d6eba0eae445d425c781465235dd70a198437cf83a1f113438bfd9baf4c21 DIST yansi-1.0.0-rc.1.crate 28933 BLAKE2B f7947e661c03aebc711b5f6bbf781e1cc40b3b713c2efffdefa5cb9a90488b5ecfa98b49d41626c33e24bcd2fbfcd9d047d1da166ee69bb95c109032b4280f06 SHA512 ad2e8739de10e23dae074290fffb76fccbfddf70729d33a059cbf699f4d7841e534529e4834a4af244c62f5bad8023d06498f92edaece683c609af01e7f8120b +DIST yansi-1.0.1.crate 75497 BLAKE2B c0d396c93a733ed6ec12aca3385d816f39b1f1fbed75da460f491f0cbfc30ba462842ebd1627fa8e5d2b7c0f37913a23747e5f5e23df1cb7c85d965e6c37159b SHA512 182c8c6c60a30a727d8f8b90bbf0527d91fa8ae9d8eb20e5414614b43ee6dc532f4b19241adbfb9299cb0004b39fe627036269b60b0c3860d9e1ea4413aca541 DIST zerocopy-0.7.35.crate 152645 BLAKE2B 8f13123c9d9257ac5a5c6954d38c3510fa658624442f7e03cdcc6db5a0977d9f26bb4e277be172b7872ec365cf6e58ac742e5578636f7698f9f37093e9249d9a SHA512 17fcb31c029ae89c01e5bae5fb2bb46bd434120199a3dc2c7fe0012dbbcfe2a0bb38934c4a7d3a4920e3fe47c097403beee554fefa54b66cb390f8b1de638d3c DIST zerocopy-derive-0.7.35.crate 37829 BLAKE2B badeb7fa5e0bfe93a6788d93fd297604ed31de526b121549300ead3c49d450f49265f499e2e7ce606dcce2b59dd01f7fa817b8fbb3f237475185c5b42f5299c4 SHA512 dbe23573b62a6267d7bc8c744320b75b2fbda03b908c1d175211f7394374fe182bce58021e25485c10671d726b2007f250565dfe53134d51c89293bb607e9feb DIST zoxide-0.9.4.tar.gz 968188 BLAKE2B 862eb2411fe83e7782d12322bb4ada5a8be6cdb0c9b312c47e0935a5f88619ad277506ad1f2fc6e3d2ae36d1cb078752e778a5ccf0d8f3913dfd94ca03dbcb19 SHA512 c09c54402bb8db52952017e51b65728a5b1a63be617ddc2dbab47aae59e2059f0c58c97c3355a4a00570a0e9d79c6cdd529adb4f73d5cec0f2f9b490c2af668c DIST zoxide-0.9.6.tar.gz 971703 BLAKE2B 33d2dbcb9a05468eab1a8d340eebd936b8090a291e93a1ef5cceb1f31420d6791121c55d24b41e531492106bb11b8c4c8ca767c99adad20cfdadb4d2532f6f0b SHA512 55cd5b1c47c5643c976b6ad7762686c8e02a4e326e2b58f4a10adf754437371bcffea6321b34bed338c9cc0657369c7201e727db9dcca7409c05e493dd012ad1 +DIST zoxide-0.9.7.tar.gz 1657615 BLAKE2B 2dc702929f3646ba2451d625a6a22af7f3c68c2f122156165ec162fd18524c0ffbe025be45a3f3e5be1c2dc7c1dd49239c6700d9d062620c300ac1739372d72c SHA512 e1b8634600342002f6e1d1f52eaf98978e44b1b47b7161979c3756e33968912c1aace09451242925b1195273c5e52d6dc97150af971e6806086d4d8efddc5a57 EBUILD zoxide-0.9.4-r1.ebuild 3146 BLAKE2B 10d49622cd63d6bbc4cedc993bf342d93cb135dadc001f01fc4dd85c49cd695d5da98d0a8f7da8ed9604379105a1b1adfa638658b63b44a24263c52bc3fab1ca SHA512 5bc9e741aac9eefd1b1ee63921e46daf51b39d602ede3e66463e5c606a0a9b9f71b65a3bda01069b19e937f96cb73ef769341f36eb4ad515625d20b351769d8c EBUILD zoxide-0.9.6-r1.ebuild 3399 BLAKE2B 68f64d1ad399b4c2fe8ac226bfe1120a20ff8c719eb147d123bd4c7f3f08f4a91bf36eeea879856a316e56db03205f3ecd879d9403828c6a7c38b3ba76ca5cb9 SHA512 3a5e0a593f433905e439371d8cd34aa7bb0a58649051751ed3658d1ab0b139d3776ed7c95e530a7328b10335112a9e6ff84d5e4ecbcb931dbfc00dcb44415542 +EBUILD zoxide-0.9.7.ebuild 3492 BLAKE2B 6bc295c802c40e9a0a6c87085940011871aefd5d69bbed6aa857a7c3638d69196e915fe43be47ed69b238cc3c88940972a1a00a3f72879555937977654b798fa SHA512 d4459d53eb3c65e7f4440df042f341bf665f225423c3ed37758c215db9d4006356c51b279e1bff4abf830022e0a0e2816214b4824be24b2fa28bd37170fef748 MISC metadata.xml 757 BLAKE2B ff86f125fb637b44821baaf3a2183e1c87c22fb9d80d47b4c2268f7f0fa6da937f4dd230b0da8045bd197eb7e8cd62c9b1475c7e7566a62b8fc041fd814ae11f SHA512 272876ec70a9421384c42fe0a846ff83dc95128ca842c9356f90a028c95ff640c1020cf27d94e0c6a55a0e550317381e741e628a609b46bd3367838e44173b63 diff --git a/app-shells/zoxide/zoxide-0.9.7.ebuild b/app-shells/zoxide/zoxide-0.9.7.ebuild new file mode 100644 index 000000000000..6b3f3b6bec11 --- /dev/null +++ b/app-shells/zoxide/zoxide-0.9.7.ebuild @@ -0,0 +1,178 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Autogenerated by pycargoebuild 0.10 + +EAPI=8 + +CRATES=" + ahash@0.8.11 + aho-corasick@1.1.3 + aliasable@0.1.3 + anstream@0.6.15 + anstyle-parse@0.2.5 + anstyle-query@1.1.1 + anstyle-wincon@3.0.4 + anstyle@1.0.8 + anyhow@1.0.89 + assert_cmd@2.0.16 + autocfg@1.3.0 + bincode@1.3.3 + bitflags@2.6.0 + bstr@1.10.0 + byteorder@1.5.0 + cfg-if@1.0.0 + cfg_aliases@0.2.1 + clap@4.5.17 + clap_builder@4.5.17 + clap_complete@4.5.28 + clap_complete_fig@4.5.2 + clap_derive@4.5.13 + clap_lex@0.7.2 + color-print-proc-macro@0.3.6 + color-print@0.3.6 + colorchoice@1.0.2 + difflib@0.4.0 + dirs-sys@0.4.1 + dirs@5.0.1 + doc-comment@0.3.3 + dunce@1.0.5 + either@1.13.0 + errno@0.3.9 + fastrand@2.1.1 + getrandom@0.2.15 + glob@0.3.1 + hashbrown@0.14.5 + heck@0.4.1 + heck@0.5.0 + home@0.5.9 + is_terminal_polyfill@1.70.1 + itertools@0.12.1 + itoa@1.0.11 + libc@0.2.158 + libredox@0.1.3 + linux-raw-sys@0.4.14 + lock_api@0.4.12 + memchr@2.7.4 + mime@0.3.17 + mime_guess@2.0.5 + minimal-lexical@0.2.1 + nix@0.29.0 + nom@7.1.3 + once_cell@1.19.0 + once_map@0.4.19 + option-ext@0.2.0 + ouroboros@0.18.4 + ouroboros_macro@0.18.4 + parking_lot@0.12.3 + parking_lot_core@0.9.10 + ppv-lite86@0.2.20 + predicates-core@1.0.8 + predicates-tree@1.0.11 + predicates@3.1.2 + proc-macro2-diagnostics@0.10.1 + proc-macro2@1.0.86 + quote@1.0.37 + rand@0.8.5 + rand_chacha@0.3.1 + rand_core@0.6.4 + redox_syscall@0.5.4 + redox_users@0.4.6 + regex-automata@0.4.7 + regex-syntax@0.8.4 + regex@1.10.6 + relative-path@1.9.3 + rinja@0.3.3 + rinja_derive@0.3.3 + rinja_parser@0.3.3 + rstest@0.23.0 + rstest_macros@0.23.0 + rstest_reuse@0.7.0 + rustc-hash@2.0.0 + rustc_version@0.4.1 + rustix@0.38.37 + scopeguard@1.2.0 + semver@1.0.23 + serde@1.0.210 + serde_derive@1.0.210 + smallvec@1.13.2 + stable_deref_trait@1.2.0 + static_assertions@1.1.0 + strsim@0.11.1 + syn@2.0.87 + tempfile@3.12.0 + termtree@0.4.1 + thiserror-impl@1.0.63 + thiserror@1.0.63 + unicase@2.7.0 + unicode-ident@1.0.13 + utf8parse@0.2.2 + version_check@0.9.5 + wait-timeout@0.2.0 + wasi@0.11.0+wasi-snapshot-preview1 + which@6.0.3 + windows-sys@0.48.0 + windows-sys@0.52.0 + windows-sys@0.59.0 + windows-targets@0.48.5 + windows-targets@0.52.6 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_gnullvm@0.52.6 + windows_aarch64_msvc@0.48.5 + windows_aarch64_msvc@0.52.6 + windows_i686_gnu@0.48.5 + windows_i686_gnu@0.52.6 + windows_i686_gnullvm@0.52.6 + windows_i686_msvc@0.48.5 + windows_i686_msvc@0.52.6 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnu@0.52.6 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_gnullvm@0.52.6 + windows_x86_64_msvc@0.48.5 + windows_x86_64_msvc@0.52.6 + winsafe@0.0.19 + yansi@1.0.1 + zerocopy-derive@0.7.35 + zerocopy@0.7.35 +" + +inherit cargo shell-completion + +DESCRIPTION="A smarter cd command for your terminal" +HOMEPAGE="https://github.com/ajeetdsouza/zoxide" +SRC_URI=" + https://github.com/ajeetdsouza/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz + ${CARGO_CRATE_URIS} +" + +LICENSE="MIT" +# Dependent crate licenses +LICENSE+=" + MIT MPL-2.0 Unicode-DFS-2016 + || ( Apache-2.0 CC0-1.0 MIT-0 ) +" +SLOT="0" +KEYWORDS="~amd64 ~arm64" + +QA_FLAGS_IGNORED="usr/bin/zoxide" + +src_prepare() { + sed -i 's:strip = true:strip = false:g' Cargo.toml || die + default +} + +src_install() { + cargo_src_install + + doman man/man1/* + dodoc README.md CHANGELOG.md + + newbashcomp contrib/completions/"${PN}".bash "${PN}" + dozshcomp contrib/completions/_"${PN}" + dofishcomp contrib/completions/"${PN}".fish + + insinto /usr/share/"${PN}" + doins init.fish + doins zoxide.plugin.zsh +} diff --git a/app-text/Manifest.gz b/app-text/Manifest.gz index b0b49907d3cd6bae2bea42ae9d500dcd66c6d2bd..3509a9691ffaec446dffee3094dbe8a26e0b5baf 100644 GIT binary patch literal 50116 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 afYclAMn$tm!A{+J{PrKXL|J_yYXJcNYX9N@ diff --git a/app-text/chasen/Manifest b/app-text/chasen/Manifest index 3124e32e0934..4d585195c175 100644 --- a/app-text/chasen/Manifest +++ b/app-text/chasen/Manifest @@ -1,4 +1,6 @@ +AUX chasen-2.4.5-c23.patch 2266 BLAKE2B 8a0c1c387931b6fa08c1e6422a0d05b386d3c4c60bfdd6d987ab92202eabd0ac7f33e48a65665ff25393e0d03d8e639e84040fc334dbb3d8993d59e35f392d56 SHA512 b3020e967f2dae12e98b9d413fa8bf782914ee7b38f6d692be36cda99e136882427fa294339dc66727e64583e8d507956bfd2b19526bed44afca12035d3413ab AUX chasen-uar.patch 1128 BLAKE2B eeff8e6a76fe8e1888c437b54ffe277658f13e2078ba3ce4d6f89a7e5aef44f5bf76c327dc5c98e82fc02d1930356d9c93e32034f3f4079df1499fa4473f7c90 SHA512 a78c21cc62464f8c03f09e032117682d4bc6f69d0287098933385210d2c186a249ece6715cccef0f520e1e56c1e7c6bfe11caacc51e8a8e484c6359c8567e56c DIST chasen-2.4.5.tar.xz 671064 BLAKE2B 3b9867f794a54c4b0552807c54694e9f52082d9712c9e64aa55840b70f3a3800a514d1cd36260ee7397d1e98f28909e9b3e1f5c14d64f28f666b876e130aeb3e SHA512 7a17fe9d534cdc07c147fd7d9350aba381390943f4cfd899393076efe8e6a80aae029a8d4833e91ffa945b3e52d6598c16db257c9cc8d7792b7a1f90b7a1948e +EBUILD chasen-2.4.5-r1.ebuild 1069 BLAKE2B 49970c860b289ee5bb07a6761b641cb9eb034554b612846cf86640111d2121fbf67c82c61bb8003deb08d46f4e2367e75a564e976ac6f0c8cd021b8cecf6d84c SHA512 d6bb974a485518b594de313e2f3cb96bc80623c1b257fa8846b1f798d3158b230217ec4e085328a0bad29bdfdccf81524e77f74b4492a0f9b07616e38e5e0670 EBUILD chasen-2.4.5.ebuild 1035 BLAKE2B ce080749437d81d28193905f2fa5e28c76c69e4fb91a83ec1632c349b54872c0f836632dbbf4e049521a9e06e22d602f50ed09c5c8c8060f6265647329ac557a SHA512 dcfcacd206133cccd1af8c19647c4777ebad18b404152bee3ab7f002dddd94c184d41c6ee214a0bf52285c44d7a0178c0aadbac6405f167896d37e72ffa1f687 MISC metadata.xml 311 BLAKE2B 7f255f34d1205f37b06d3a112dc093a502eafb688db85ba9d89aa0c9205fb7ad7c6d2f0296f5d12e8cdac234479e7406b95421b664ef5c8082303f1474537c2e SHA512 3298d36c0c8ffac2db7ca37729e3827d29982c90f8d2768484b67fad5f42c490b3694106018c5142bc7eaf20bb49fa8d9c2c4c42b1e3c00d5807138527ea5251 diff --git a/app-text/chasen/chasen-2.4.5-r1.ebuild b/app-text/chasen/chasen-2.4.5-r1.ebuild new file mode 100644 index 000000000000..13dc0315a598 --- /dev/null +++ b/app-text/chasen/chasen-2.4.5-r1.ebuild @@ -0,0 +1,62 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +inherit perl-module + +DESCRIPTION="Japanese Morphological Analysis System, ChaSen" +HOMEPAGE="https://chasen-legacy.osdn.jp/" +SRC_URI="mirror://sourceforge.jp/${PN}-legacy/56305/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="perl static-libs" + +RDEPEND="virtual/libiconv" +DEPEND=">=dev-libs/darts-0.32" +PDEPEND=">=app-dicts/ipadic-2.7.0" + +PATCHES=( + "${FILESDIR}"/${PN}-uar.patch + "${FILESDIR}"/${P}-c23.patch +) + +src_configure() { + econf $(use_enable static-libs static) + + if use perl; then + cd "${S}"/perl || die + perl-module_src_configure + fi +} + +src_compile() { + default + + if use perl; then + cd "${S}"/perl || die + perl-module_src_compile + fi +} + +src_test() { + default + + if use perl; then + cd "${S}"/perl || die + perl-module_src_test + fi +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die + + if use perl; then + cd "${S}"/perl || die + perl-module_src_install + newdoc README README.perl + fi +} diff --git a/app-text/chasen/files/chasen-2.4.5-c23.patch b/app-text/chasen/files/chasen-2.4.5-c23.patch new file mode 100644 index 000000000000..d1804b1a906e --- /dev/null +++ b/app-text/chasen/files/chasen-2.4.5-c23.patch @@ -0,0 +1,79 @@ +Ports program to C23 and allows it to compile with GCC-15. +Fix function declarations with no arguments, delete dubious extern of +library function +Fix comparators for quicksort/binary search +https://bugs.gentoo.org/944011 +--- a/lib/connect.c ++++ b/lib/connect.c +@@ -45,9 +45,11 @@ + * rensetu table + */ + static int +-cmp_pair(rensetu_pair_t * pair1, rensetu_pair_t * pair2) ++cmp_pair(const void * pair1_void, const void * pair2_void) + { + int ret; ++ rensetu_pair_t *pair1 = (rensetu_pair_t *)pair1_void; ++ rensetu_pair_t *pair2 = (rensetu_pair_t *)pair2_void; + + /* + * ¸«½Ð¤·¸ì surface form +@@ -166,9 +168,11 @@ + } + + static int +-find_table(lexicon_t * mrph, rensetu_pair_t * pair) ++find_table(const void * mrph_void, const void * pair_void) + { + int ret; ++ lexicon_t * mrph = (lexicon_t*)mrph_void; ++ rensetu_pair_t * pair = (rensetu_pair_t*)pair_void; + + /* + * ÉÊ»ìʬÎà POS +@@ -202,12 +206,11 @@ + rensetu_pair_t *ret; + + if (rensetu_tbl[0].hinsi == 0) +- qsort(rensetu_tbl, tbl_num, sizeof(rensetu_pair_t), +- (int (*)()) cmp_pair); ++ qsort(rensetu_tbl, tbl_num, sizeof(rensetu_pair_t), cmp_pair); + + ret = (rensetu_pair_t *) + bsearch(mrph, rensetu_tbl, tbl_num_goi, +- sizeof(rensetu_pair_t), (int (*)()) find_table); ++ sizeof(rensetu_pair_t), find_table); + if (ret) { + mrph->con_tbl = ret->index; + return 1; +@@ -215,7 +218,7 @@ + + ret = (rensetu_pair_t *) + bsearch(mrph, rensetu_tbl + tbl_num_goi, tbl_num - tbl_num_goi, +- sizeof(rensetu_pair_t), (int (*)()) find_table); ++ sizeof(rensetu_pair_t), find_table); + if (ret) { + mrph->con_tbl = ret->index; + return 1; /* if no error, return 1 */ +--- a/lib/iotool.c ++++ b/lib/iotool.c +@@ -362,7 +362,7 @@ + cha_fopen_rcfile(void) + { + FILE *fp; +- char *home_dir, *rc_env, *getenv(); ++ char *home_dir, *rc_env; + + /* + * -R option (standard alone) +--- a/lib/print.c ++++ b/lib/print.c +@@ -47,7 +47,7 @@ + static int path_buffer[CHA_INPUT_SIZE]; + static int pos_end = 0; + +-static void (*cha_putc) (), (*cha_puts) (), (*cha_printf) (), (*cha_write) (); ++static void (*cha_putc) (int, char*), (*cha_puts) (char*, char*), (*cha_printf) (char*, char*, ...), (*cha_write) (void*, size_t, size_t, char*); + + void + cha_print_reset(void) diff --git a/app-text/fbreader/Manifest b/app-text/fbreader/Manifest deleted file mode 100644 index 44a9401632fc..000000000000 --- a/app-text/fbreader/Manifest +++ /dev/null @@ -1,4 +0,0 @@ -DIST fbreader-0.99.4-combined.patch 23589 BLAKE2B 81cb00abe9ba0f40723e6c1cac626916f90eede960d8b191bcb48c8186be8fc3d1fb18954f62e3ba5f15de159034a6060dc7efaf94f9531aabad9f76b6f53658 SHA512 c4dd5237113fa9d54ae3e63a19a06841570e5751108befe4d18ae7b4730628d3a4a5613dd302bc426b14c280f2b5abf9e394aedca821de995efb45ae7b32f632 -DIST fbreader-sources-0.99.4.tgz 2345664 BLAKE2B 29d921a953df98def51740d9b7fed5a7164f5df6410c70daf03f30ba8f77e9aa898d6f50038945155dc46243165860ffaf13abc81f662abccdeb6dc91652b3d5 SHA512 d4b11d7ab03df002ad4212db805b10b80a24ea4384e92122b12c25a3f817a0eb343509ae30e31d68417fd4ce27f77e043235436f0081ff2c785a2830d6211dc7 -EBUILD fbreader-0.99.4-r6.ebuild 2047 BLAKE2B 2b6816b1db445c7a4d68caab776ee1ceb2f252b44dcd751e3e6e3ee144a2ec9a7a3a2b25fc63a6c45bb59c849b140255838a73bf61a898a47179e5a66bb36586 SHA512 fa262cdef74b3b379d083898e640f95e29c64e535a1f4c5d165e8957f9ba8be618e1c29550ae5e77de4fec1bd4500cceecfd43c73d8acf2bf1c14c444f2f95d4 -MISC metadata.xml 300 BLAKE2B a3ec1e9fd7a06ee661f79b8b7296673807f6886d1615bdca34342bdbf6804f408be32775f92a3201f6244150376448c9027bfd598a18b72bd2205406e53f3c83 SHA512 95cf37aa6b0dc778091e1b899af1cd7031deb5f24d0d152c8c11244be68d87e7d2fc8a5a0fa5aa539a89244c8f1722443c365bbe49070c9605f69d17953ba2a9 diff --git a/app-text/fbreader/fbreader-0.99.4-r6.ebuild b/app-text/fbreader/fbreader-0.99.4-r6.ebuild deleted file mode 100644 index 7b1a9042d69d..000000000000 --- a/app-text/fbreader/fbreader-0.99.4-r6.ebuild +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit qmake-utils toolchain-funcs xdg - -DESCRIPTION="E-Book Reader. Supports many e-book formats" -HOMEPAGE="https://www.fbreader.org/" -SRC_URI="https://www.fbreader.org/files/desktop/${PN}-sources-${PV}.tgz - https://dev.gentoo.org/~juippis/distfiles/tmp/${P}-combined.patch" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="amd64 ~arm ~ppc x86" -IUSE="debug" - -RDEPEND=" - app-arch/bzip2 - dev-db/sqlite - dev-libs/expat - dev-libs/fribidi - dev-libs/libunibreak:= - dev-qt/qtcore:5 - dev-qt/qtgui:5 - dev-qt/qtnetwork:5[ssl] - dev-qt/qtwidgets:5 - net-misc/curl - sys-libs/zlib -" -DEPEND="${RDEPEND}" -BDEPEND=" - virtual/pkgconfig -" - -# bugs #452636, #515698, #516794, #437262, #592588 -PATCHES=( "${DISTDIR}"/${P}-combined.patch ) - -src_prepare() { - default - - # Let portage decide about the compiler - sed -e "/^CC = /d" \ - -i makefiles/arch/desktop.mk || die "removing CC line failed" - - # let portage strip the binary - sed -e '/@strip/d' \ - -i fbreader/desktop/Makefile || die - - # Respect *FLAGS - sed -e "s/^CFLAGS = -pipe/CFLAGS +=/" \ - -i makefiles/arch/desktop.mk || die "CFLAGS sed failed" - sed -e "/^ CFLAGS +=/d" \ - -i makefiles/config.mk || die "CFLAGS sed failed" - sed -e "/^ LDFLAGS += -s$/d" \ - -i makefiles/config.mk || die "LDFLAGS sed failed" - sed -e "/^LDFLAGS =$/d" \ - -i makefiles/arch/desktop.mk || die "LDFLAGS sed failed" - - # Qt5 moc - sed -e "s:MOC = moc-qt4:MOC = $(qt5_get_bindir)/moc:" \ - -i makefiles/arch/desktop.mk || die "updating desktop.mk failed" - - echo "TARGET_ARCH = desktop" > makefiles/target.mk || die - echo "LIBDIR = /usr/$(get_libdir)" >> makefiles/target.mk || die - - echo "UI_TYPE = qt4" >> makefiles/target.mk || die - - if use debug; then - echo "TARGET_STATUS = debug" >> makefiles/target.mk || die - else - echo "TARGET_STATUS = release" >> makefiles/target.mk || die - fi - - # bug #437262 - tc-ld-disable-gold -} - -src_compile() { - # bug #484516 - emake -j1 -} - -src_install() { - default - dosym FBReader /usr/bin/fbreader -} diff --git a/app-text/fbreader/metadata.xml b/app-text/fbreader/metadata.xml deleted file mode 100644 index ffee515991e5..000000000000 --- a/app-text/fbreader/metadata.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - grozin@gentoo.org - - - geometer/FBReader - - diff --git a/app-text/htp/Manifest b/app-text/htp/Manifest index 37edb10b453c..3133e622cec8 100644 --- a/app-text/htp/Manifest +++ b/app-text/htp/Manifest @@ -2,5 +2,5 @@ AUX htp-1.19-fix-perl-5.26.patch 245 BLAKE2B 62f2b7a3ea607f00c07ef286dadf276c816 AUX htp-1.19-no-prestrip.patch 238 BLAKE2B 02d28ba9bda2264de0edd0a0179c04bafc90b35a14fc7cbd54a97ee21005a77b4b1c9bca00d7e3641831f26949c159d60ee3c48e26c2b5f9dc544cc727e38074 SHA512 6a673c84b97255b22e7bcbf19c5bfaa48f886de99652ac88310b253682df0bd412468300087e82c226e5272279459b05d33f5088f29e8d1b56dc4b9412064fd9 AUX htp-1.19-parallel-make.patch 758 BLAKE2B d3f106b9951386c2485b95773b455a925196c0a1b9e051306a7724d07672096046c2317af4c7559e104fc27799aa94d96a91f7f3913d5ab50c25470b1ffca9c7 SHA512 3946a7ac4dd37dbd768389c4761cf7a4187cdefb315a4581438be83ebf8355805f7d6f4d168d1940e9d73c4dc6c125e0e9c158ed577e61c4d257267894d6df3f DIST htp-1.19.tar.gz 208683 BLAKE2B 86837290a2f14b8a0337d9eb6a0fa4ad553c5c51074d5df903ee19aa7ba441898199f0649b39b93c35fa3707e4084a284e02d8802c014bf5c0277e3f18d02c98 SHA512 32d82bb42ef877bd815fe45fa81599a1428ad6d3269cbe53a4e686bcfe6d1c12ac2af280462768d488b1983ca67cc521da4ed78cc82d904575ffeff08c7eec1d -EBUILD htp-1.19-r1.ebuild 858 BLAKE2B 0b52bf48d27cd67a7dec6e20cb699d5298618b30a9e37fae7f69b9b0dbbfa6a31a616b1edcdcc34f435e9108dacc28e09d7e843066c10b8ca8c0a6507471261d SHA512 ebe42e206ebc2c92189ab134d3304d2d06da0d506b42dce50f65795cbe733704c1db2fbe9e1a61ad1214da8ed9da179cd07d18f31e9b020a41afd34a2e904b2e +EBUILD htp-1.19-r1.ebuild 858 BLAKE2B 77252812e56138ffd09a24ee4e7177418e28d5b65e9a2d490339e5ec671ca2df3f65de544956efe10f201352028ab10ea88a17a15fca4ee2ddfee57d3ef2cbdb SHA512 b896b688d0651ab438b66d87ff4c8329fcb54f7fc3baa98607385969edb6c99a96aab83309503397b03b9d732c86711b3459c0e63830cf499508608d5e35ac37 MISC metadata.xml 324 BLAKE2B f50c674c3b49fdf33568893e52cdc07346930fc63577ae3a06d88b4458da04fcce805f1ad65cacab300ad0ed1ce499d554fad0643494d018ba4ab479cc11e954 SHA512 840a52457ca080294d6dadcb72b32da6a22e5c51565e53894383f46d369edafaf949fe4fc147986c559609a75a6a56582d253e79e29a7daf4cebcffe74b01cb4 diff --git a/app-text/htp/htp-1.19-r1.ebuild b/app-text/htp/htp-1.19-r1.ebuild index 6977a567ef4a..d3c122748ce8 100644 --- a/app-text/htp/htp-1.19-r1.ebuild +++ b/app-text/htp/htp-1.19-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -20,7 +20,7 @@ PATCHES=( ) src_compile() { - # TOOD: Tests are always run by the Makefile right now + # TODO: Tests are always run by the Makefile right now emake \ CCOPT="-c ${CFLAGS} ${CPPFLAGS} -DHAVE_SNPRINTF -DHAVE_VASPRINTF -DHAVE_ASPRINTF" \ CC="$(tc-getCC)" \ diff --git a/app-text/libspelling/Manifest b/app-text/libspelling/Manifest index e25459213109..2dd2452a0437 100644 --- a/app-text/libspelling/Manifest +++ b/app-text/libspelling/Manifest @@ -1,3 +1,3 @@ DIST libspelling-0.4.5.tar.bz2 71413 BLAKE2B 5e6c00d9cd521f560082d76da75fd070a59f3b8dec269db95ffa88f9c216557587e180fcbc7399ea0dbcfe605de024344a4b17af60d4d31b1686f64b5df6fca9 SHA512 ab8fd439855d84c4e681fba0b5030bdcf34d0f4940a3b818aab4d297975acf37e437b141d678a482ebda240d23ecd7875e6c8656be6e1bb3c9c129f2169a8ced -EBUILD libspelling-0.4.5-r1.ebuild 1180 BLAKE2B 5435973ccd2936b158206bf26e67ce4f554137bfe2b7398e4a2cc827518a6e73d614ba5e3c465f0a6d13715759ac8e68a7040c0e946957d18b0f17138c46bbe5 SHA512 cf40a57134bb6da756ab55df466e543c094a8ca3cfdd5beea990a83e043a6f13092d16a00db06e000eef501605b82f06d6309c97ac3f7f81e1f9b004eac40ab3 +EBUILD libspelling-0.4.5-r1.ebuild 1185 BLAKE2B 8aa99839dc64339064410b228f25d781d415767d78c1c3bc63c0e3b2521b88badac41807da195a1ee176ca571651064e4823f8498412c182f69262891dd59f46 SHA512 3a9cdac072728dd1970ff9db51b4db7529646c5938ddf73175afa39055839541964e81f45d811d98fd88db5585180c460438a32b283da0cb9f4b7a45fa80329d MISC metadata.xml 481 BLAKE2B 71fcd160694fe4fe8b7622bbc54b3b67e50190b1f0a9c16e81e008efced3accb2d70a2b8cd18237e24c7318b4f20b628ce1696455c26cd297318abc546f48d34 SHA512 b07a31b0dbb1d0ccd7825476a24ea5b5d9fd86cdd2f860336d798228406b1daa0e10894bd8c0fa5d30b363e870594e3aab48b4b785c8fe7b1b51005dc8ead430 diff --git a/app-text/libspelling/libspelling-0.4.5-r1.ebuild b/app-text/libspelling/libspelling-0.4.5-r1.ebuild index c6f392387a41..a5db70eda6db 100644 --- a/app-text/libspelling/libspelling-0.4.5-r1.ebuild +++ b/app-text/libspelling/libspelling-0.4.5-r1.ebuild @@ -11,7 +11,7 @@ SRC_URI="https://gitlab.gnome.org/GNOME/${PN}/-/archive/${PV}/${P}.tar.bz2" LICENSE="LGPL-2.1+" SLOT="1" -KEYWORDS="~amd64 ~loong ~riscv" +KEYWORDS="~amd64 ~loong ~riscv ~x86" IUSE="gtk-doc sysprof vala" RDEPEND=" diff --git a/app-text/pandoc-bin/Manifest b/app-text/pandoc-bin/Manifest index 34cbda67cdce..392fd7cdce3a 100644 --- a/app-text/pandoc-bin/Manifest +++ b/app-text/pandoc-bin/Manifest @@ -1,13 +1,13 @@ -DIST pandoc-3.5-linux-amd64.tar.gz 32371117 BLAKE2B c6c2e08760fe2172bcd0acda3e54c650e48b2a7e9eef519807ec70c5b17cd34f2bc46c11965cfda5d1a072f73ca0cc88d7067c30a3c193192b0e3de7feec0bb8 SHA512 5c83cc80a559912862eb4b89a0ff67101f3e201210812a9e255930037e411de236d41a7c961adc1caff94f50e41de4308f1ed1d76e41a0024c4f96240e252ce7 -DIST pandoc-3.5-linux-arm64.tar.gz 35098101 BLAKE2B 3bfefaed9d5a972aa2a94f1ab1a52e85408c020cc3460fcbe02113103c8038f8290b0f3918d30c4b73f74be7978694021a4cc07e8fd64a00fdc7f8066f46453f SHA512 b15aea4cebffec3dc9645af306d017584fe707b643816a98c794b7fb5157643d6a06f0062dc89327458ce2009ded120bac88f3f0bbed8027740a0d47f9f9d958 DIST pandoc-3.6-linux-amd64.tar.gz 32764256 BLAKE2B b99d02dddd6f5b20715770c43950366ec692566d4da7ba6577973885498acdceb2a42bc18669827be752c2542fe2835bbd3cae1862af15b9cf66a313f14e3365 SHA512 7c8eca7ab5ef1a14d733986a2e187a8f3ab649d006aac49dbe3dfea5b54ad58edc0595faf3edf46b9e1633b4edf7f61326b794607a7910e36904fa7995bd2b48 DIST pandoc-3.6-linux-arm64.tar.gz 35511680 BLAKE2B 7ab4d5ab34f8781c41194d60b4ed72c6fb5f5c89386400232412e8d02aa80f2186ea2116ecc4037843a73b1e9c896535165f9e41feebf565a4b9ea6fe9c19c2c SHA512 470f96f63870b5899441a9607a7eb061b35df32d94c9cd33675e80925ae09df3a810f354a0b43a6a318002597ad934b9a9ebbdf0b9275e82d9bcec5bb911e68b DIST pandoc-3.6.1-linux-amd64.tar.gz 32828548 BLAKE2B c89ea9737c7dd0d4e547fcd723f5a0f15528decea8845d72b6b435c0504b88ec38295623ee0ec094bf057e5c6510be71c6ba44b8df0deb3b5d9ba0c09b95d366 SHA512 a914a0327f44b264dcff7bc1a2317061ef8460186f2ce1f553166dc6f8fc8d6d931991ded2be9178ad485938d55fbf25ae20ff0fef341d644548d4afd41e26df DIST pandoc-3.6.1-linux-arm64.tar.gz 35576011 BLAKE2B c4943eeb17e467e785b023b7fe4a64e0b419fb404e8028b98c084f5ab70e23e051f1daa09fcad48488164b42fa9c826965e06adff24f0b74e6d2e9054c519973 SHA512 ce7cb0529fe4f4f856cef48e33a8f27bdd350d07c793fc79020b2ea707567ed4d8970942d0c2d1fcd73ebf31835adb61d04d513b4ee611e897912c1bdc6bc9ff DIST pandoc-3.6.2-linux-amd64.tar.gz 32896831 BLAKE2B 6e8533e96a388a62c84327a3d0fa63e634a3128a9b1d0c40594f078ea250cd494503a87b60711da454f1797d290da128bfb6668e971af6dfe927ca862050da37 SHA512 5191b1a1254cfb95a22dfccc1f7f1e3b5a682e7a72f701d58bf4684ea2633fb8a7c8fc1a44c28086ccacf4078d66fadbb78aa546da08e78ebb1a5de98b935ccf DIST pandoc-3.6.2-linux-arm64.tar.gz 35654724 BLAKE2B 60a6daf64bc366b696fafdc9f77a3c4cc7809d00de617deeaa32ad429081028618ea123420e85492d8fa98eff060e9ddd26fe986ba77866e4b022ac4ec84b920 SHA512 a50496005454ffcc6bc00573849095b09d8721422d11bec39466e4977d178783c5a458a5fef0682540b963aaf1bac39cb9ba657a0e882aa7f920269cfd6fe107 -EBUILD pandoc-bin-3.5.ebuild 1450 BLAKE2B b846905663c51f8aa082e7cb261e69a91f1cb55c6d09c92b1b3fbe9f9fedf2777550f1ca46b965717ae97ff50b0a928e86eb7ca8d2cc4808fd160ede4895cfba SHA512 b00d55d61794115f6b923a6d0ce7aa13dd828bf355ca1d7219b858c947b73b1df02e45d346a747bbe2ca0b74ea1e529aea89d13e31a7df4ff4cd5e25fda58495 +DIST pandoc-3.6.3-linux-amd64.tar.gz 32925438 BLAKE2B c731c287b0b66b74b14fb46941d8598531aa3d2ee5c60f214c9d7da2ed8d5106b76584a9d56ec5fa9254f3402d559b21a013bd66f10f13850b52abb4de6be911 SHA512 ecfc11b743344fdcd30db31c008ea9456b6f25255d7295ef84b64faaf7c944edee9241823157158ba81628cdb861f2e6de800b143f45cc56a4bae44594258bea +DIST pandoc-3.6.3-linux-arm64.tar.gz 35687915 BLAKE2B 01531b0b1771ad320610558a0580052940cf2cdb2c9cb459bb116399546e2a5196d1728a3f99a9265333bbf33fa29499a6cb8a88ff415b09e175b271a6451dff SHA512 714d5430efe55ee4c94406ef957ff3c8a02bd8728dfe1be7330a9944948d9a6688eac6073229f320b7ec7dfb04df3c0a7aa21c07d53b10adeaa8606b8beba261 EBUILD pandoc-bin-3.6.1.ebuild 1484 BLAKE2B d4ec2d0a27690aaa49e184a78ec1d822c12b10d4fdfcb24efafc8469088d946ab8eabca3a0db07f6405213a4df90e9ffd848e3eff31ef272cd240fc5677b3a21 SHA512 cf7cab185604f61b8d67c927ec514a6f2b63700bb24b6bd018c74a6b8a359d75315f7478575bff884c78e207dd9ee36aba7e5ba0c010250861d60aabb3ec9cf4 EBUILD pandoc-bin-3.6.2.ebuild 1484 BLAKE2B c8a8e67b62fa52a51fea4d29f08d522546422ba2321225cbe7c934354e36552e24b1b41088ad4cd5e3c0b8af3d1fa6ecfd9eb7ce06b2065eaaef459419015cd8 SHA512 8ec1c667d07e5011e8430eb4226db3bb51af2b99992ff0926693ae65feb607375f81ddf7115a3d7ee70c346db129a8a2c172def49bd2e8d7eefca842f434ebe5 +EBUILD pandoc-bin-3.6.3.ebuild 1379 BLAKE2B 2624cc7f395deaef313e83d4a84753dceda9bda8f7826382cedb69a426167863d24e37742468a3c00a88726397b5de10ece1f9669ebb8e680d00a947438efe3c SHA512 38d6bad864c44bd96d604802a5be14b377b8cb8ccbcfffcea4f4c09419f758ab93051e257ceb88c593fc1b4662c8b0356b55f59c5643e7c0680be9fa1c1df66e EBUILD pandoc-bin-3.6.ebuild 1482 BLAKE2B cb3fb2d97b37d03c0f5b8a0b4e7ba2e24d9c849cb6234ae793513a8203a2e9707663f4d196b476fcef00cb2eebbd8c35f76079405a1d2093304cb848418a0a13 SHA512 41bf87bed327f0763f19003947aa2924a978095d696a296f4ef010fb9cae85f6d96febb09d259136b859970f6c887dda93201a7d6777b244a5c173a0091485d1 MISC metadata.xml 986 BLAKE2B 10ab442c2f7892545054ba2747c0cde115d9d875673c077d2cefcd035e2ecd6d04f2aef05ef9ca58a2150a983079ad8fbdc6910ca93fc14977409041e5f20201 SHA512 c8e241d4d7bba0a6f36320517d18fbb99922e32970d7771d5bbc80a8ecf5086f8f7d1eadd0188d457412a66db898d044074b4d4f0301aab1e19cd1213e562375 diff --git a/app-text/pandoc-bin/pandoc-bin-3.5.ebuild b/app-text/pandoc-bin/pandoc-bin-3.5.ebuild deleted file mode 100644 index 1a9e4cefd9f7..000000000000 --- a/app-text/pandoc-bin/pandoc-bin-3.5.ebuild +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MY_PN=${PN//-bin/} -MY_P=${MY_PN}-${PV} - -DESCRIPTION="Conversion between markup formats (binary package)" -HOMEPAGE="https://pandoc.org/ - https://github.com/jgm/pandoc/" - -BASE_URI="https://github.com/jgm/${MY_PN}/releases/download/${PV}/${MY_P}" -SRC_URI=" - amd64? ( ${BASE_URI}-linux-amd64.tar.gz ) - arm64? ( ${BASE_URI}-linux-arm64.tar.gz ) -" -S="${WORKDIR}"/${MY_P} - -LICENSE="GPL-2+" -SLOT="0" -KEYWORDS="-* amd64 arm64" -IUSE="+pandoc-symlink" - -RDEPEND=" - pandoc-symlink? ( - !${CATEGORY}/${MY_PN} - !app-text/pandoc-cli - !dev-haskell/pandoc - ) -" - -QA_FLAGS_IGNORED="usr/bin/${PN}" -QA_PRESTRIPPED="${QA_FLAGS_IGNORED}" - -src_unpack() { - default - - # Manpages are gzipped. - unpack "${S}"/share/man/man1/*.1.gz -} - -src_install() { - exeinto /usr/bin - newexe bin/${MY_PN} ${PN} - dosym ${PN} /usr/bin/pandoc-lua-bin - dosym ${PN} /usr/bin/pandoc-server-bin - - newman "${WORKDIR}"/${MY_PN}-lua.1 pandoc-lua-bin.1 - newman "${WORKDIR}"/${MY_PN}-server.1 pandoc-server-bin.1 - newman "${WORKDIR}"/${MY_PN}.1 ${PN}.1 - - if use pandoc-symlink ; then - dosym ${PN} /usr/bin/${MY_PN} - dosym pandoc-lua-bin /usr/bin/${MY_PN}-lua - dosym pandoc-server-bin /usr/bin/${MY_PN}-server - - dosym ${PN}.1 /usr/share/man/man1/${MY_PN}.1 - dosym pandoc-lua-bin.1 /usr/share/man/man1/${MY_PN}-lua.1 - dosym pandoc-server-bin.1 /usr/share/man/man1/${MY_PN}-server.1 - fi -} diff --git a/app-text/pandoc-bin/pandoc-bin-3.6.3.ebuild b/app-text/pandoc-bin/pandoc-bin-3.6.3.ebuild new file mode 100644 index 000000000000..11c2135c22ab --- /dev/null +++ b/app-text/pandoc-bin/pandoc-bin-3.6.3.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="${PN//-bin/}" +MY_P="${MY_PN}-${PV}" + +DESCRIPTION="Conversion between markup formats (binary package)" +HOMEPAGE="https://pandoc.org/ + https://github.com/jgm/pandoc/" + +BASE_URI="https://github.com/jgm/${MY_PN}/releases/download/${PV}/${MY_P}" +SRC_URI=" + amd64? ( ${BASE_URI}-linux-amd64.tar.gz ) + arm64? ( ${BASE_URI}-linux-arm64.tar.gz ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="-* ~amd64 ~arm64" +IUSE="+pandoc-symlink" + +RDEPEND=" + pandoc-symlink? ( + !${CATEGORY}/${MY_PN} + !app-text/pandoc-cli + !dev-haskell/pandoc + ) +" + +QA_FLAGS_IGNORED="usr/bin/${PN}" +QA_PRESTRIPPED="${QA_FLAGS_IGNORED}" + +src_unpack() { + default + + # Manpages are gzipped. + unpack "${S}/share/man/man1"/*.1.gz +} + +src_install() { + exeinto /usr/bin + newexe "./bin/${MY_PN}" "${PN}" + + dosym "${PN}" /usr/bin/pandoc-lua-bin + dosym "${PN}" /usr/bin/pandoc-server-bin + + newman "${WORKDIR}/${MY_PN}.1" "${PN}.1" + newman "${WORKDIR}/${MY_PN}-lua.1" pandoc-lua-bin.1 + newman "${WORKDIR}/${MY_PN}-server.1" pandoc-server-bin.1 + + if use pandoc-symlink ; then + local -a exes=( + pandoc + pandoc-lua + pandoc-server + ) + + local exe="" + for exe in "${exes[@]}" ; do + dosym "${exe}-bin" "/usr/bin/${exe}" + dosym "${exe}-bin.1" "/usr/share/man/man1/${exe}.1" + done + fi +} diff --git a/app-text/pdfpc/Manifest b/app-text/pdfpc/Manifest index de1b6b6d4164..5e3cad011129 100644 --- a/app-text/pdfpc/Manifest +++ b/app-text/pdfpc/Manifest @@ -1,8 +1,3 @@ -AUX pdfpc-4.6.0-no-movies.patch 1704 BLAKE2B 23d6d25c131fe2332562ecfad29aa85d802d113a5a03e14315371c88b6cc079572e16a180bcdcd5eba9ca5467c594c810324158958bf4dd1d213bf0c4d1aaa1c SHA512 8e2019867440bcc135c9c91748e83ba70a957fdcb02c6eab1ced59648f24ad27ab48c402eb925b583fe91ce9d8fcd4494253b663b8e7504b78045d32a717f8b1 -AUX pdfpc-4.6.0-vala-0.56.7.patch 1094 BLAKE2B 6cdff64678d41db47a39b01510667ddb6ecf155ab9fc2037ffb533edb2650f3bcb6449a2fee616090f3cbc706f868f32cc49ed0d5c734caf24d8c2652f4d6965 SHA512 afb288be3df179252f6f049cd71cafba079ab7acde411b2cee1e5fe823ef36e2f254b35c097c50e8afa29fa1a9175a93bc589ea49925270dbc2b439088e948b3 -AUX pdfpc-4.6.0-webkit2gtk-4.1.patch 534 BLAKE2B fc106240a943fa78943846542165557bb3455e469f35838417752fe344df4f7edba9c74db39ef87112cea7acf2ceeca4ad857a126b688f75f5cad14273e89f53 SHA512 2d2505dcd77f6ea83a0860429557a28329627169e16613d64c2bff3f989863bb7634978fbf1a081fffd1915c37c0faf95a9a4217c370d41e2ca73308fb6d3636 -DIST pdfpc-4.6.0.tar.gz 7766521 BLAKE2B 3e8914333a0781d3d750ab71d58c8af1451ce5ab321ecc0639ddcf377cae9a0c62290696455516ce1d70f4ae3ffc5889fe910ced0399787e6a40c8ae76e1f75e SHA512 4ec69cbe21fb8bbb3e381229c391133f92e76b610e1fdf1cffa2c9fa9997ccc879eaef2a6837b34d1e635cdd07c4d0ce98de03fd7ece431a8f35493f0f7d7651 DIST pdfpc-4.7.0.tar.gz 7768713 BLAKE2B 7c4a0c318a191125fcc9e9b13c25265e8018e76eb72186bc079b10eb50f3c29ed4f364d65ae09059b757e221ddbb8865a4a5a15e38f476d66b5fd41b85a392d0 SHA512 2ee0bec8ed1d6c330042a0fd296511e73d88bd1bba153fd3f19ca43135662c8d93670e503c1db1822f927c67097a5c5112f783545063f47c29f3c7160d07be49 -EBUILD pdfpc-4.6.0-r2.ebuild 2073 BLAKE2B 07003edceb17e8f9bf31ecf81058b3889d9592a6bea2e31345d562d580b5ece79d8f1275b2a396d0ba049da6a37f8313cf670fcfce442acd702c7511e9cb7c3d SHA512 4d54a7dd50a0a4fcfac106064e2b525ad16fa211a5aa56103783feb38417407240f77941733a0b168ccd699a63c645d28b1a5907086af2e7f127910b661fe06a -EBUILD pdfpc-4.7.0.ebuild 1740 BLAKE2B 034b379dffb61403e6f1bb0cafd8313495d8a4ceee9a698ad7537292b650f99ab74e2067886acc95381039643fa42225f998a69d7fb2d1de13aa428afa47bf6d SHA512 8a3e9d2b2a8d3dc7ed14687879d5393cc64d7bc8c7e1ec371351123a8738dfdb157d88ab28b16e90b78439cdb1524e7102e3753d479600771cd6afb89ef9b68d +EBUILD pdfpc-4.7.0.ebuild 1738 BLAKE2B e033861a76d9c6685128a0186f1f7b27181f9c79d294c039acb3136d1daba0ffae84de8d25f9f4f25487650efacb89d1d0fe2cdd10a0590c8adff01770915d99 SHA512 afd3c00da8bc2daa273b19748d8c40dc1a5f77313f79ffff6e727aad2af8a2f967255c4fab6b8a947622d0a5c7977f78ba0bd0774203947ec527dc08a1af1cf8 MISC metadata.xml 609 BLAKE2B 639ae0935933b47d899cd0fcbc4aeff0f484212bc383ab9817ac1618c4320e556ab4247ee2734e8f3bacc8309af21d3f5a8336e4a7f5ca3f742ca80c799a9928 SHA512 0426f35bb771ba1c1b796da521e62dfff986de71ded8736d238f164b22aa8859b68fd1500a381c5bfdef691379b165bd29e2f17ce444594dfaa1b26bdd79defc diff --git a/app-text/pdfpc/files/pdfpc-4.6.0-no-movies.patch b/app-text/pdfpc/files/pdfpc-4.6.0-no-movies.patch deleted file mode 100644 index 9767dc2a8093..000000000000 --- a/app-text/pdfpc/files/pdfpc-4.6.0-no-movies.patch +++ /dev/null @@ -1,59 +0,0 @@ -https://github.com/pdfpc/pdfpc/issues/672 -https://bugs.gentoo.org/904241 - -commit a6501085b3e94eb4a01db18fe9dc15d51fcde3a3 -Author: Evgeny Stambulchik -Date: Sat, 11 Feb 2023 23:04:19 +0200 - - Skip MOVIE actions when configured with -DMOVIES - ---- a/src/classes/action/link_action.vala -+++ b/src/classes/action/link_action.vala -@@ -47,6 +47,7 @@ - this.action = mapping.action.copy(); - } - -+#if MOVIES - /** - * Find movie on the current slide by its filename; there seems to be - * no better way with the current Glib Poppler bindings. -@@ -71,6 +72,7 @@ - - return null; - } -+#endif - - /** - * Create from the LinkMapping if the link is an internal link to a named -@@ -91,6 +93,7 @@ - return new_obj as ActionMapping; - } - break; -+#if MOVIES - case Poppler.ActionType.MOVIE: - unowned var movie_action = (Poppler.ActionMovie*) mapping.action; - var movie = movie_action.movie; -@@ -100,6 +103,7 @@ - return new_obj as ActionMapping; - } - break; -+#endif - default: - break; - } -@@ -167,6 +171,7 @@ - this.controller.switch_to_slide_number(slide_number); - - break; -+#if MOVIES - case Poppler.ActionType.MOVIE: - unowned var action = (Poppler.ActionMovie*) this.action; - var movie = action.movie; -@@ -192,6 +197,7 @@ - } - } - break; -+#endif - default: - return false; - } diff --git a/app-text/pdfpc/files/pdfpc-4.6.0-vala-0.56.7.patch b/app-text/pdfpc/files/pdfpc-4.6.0-vala-0.56.7.patch deleted file mode 100644 index 9aff761b471f..000000000000 --- a/app-text/pdfpc/files/pdfpc-4.6.0-vala-0.56.7.patch +++ /dev/null @@ -1,31 +0,0 @@ -https://github.com/pdfpc/pdfpc/issues/686 -https://bugs.gentoo.org/904970 - -commit 18beaecbbcc066e0d4c889b3aa3ecaa7351f7768 -Author: Evgeny Stambulchik -Date: Tue, 25 Apr 2023 16:11:25 +0300 - - Create Lists of nullable types - ---- a/src/classes/drawings/drawing_commands.vala -+++ b/src/classes/drawings/drawing_commands.vala -@@ -54,8 +54,8 @@ - } - - public void clear() { -- this.drawing_commands = new List(); -- this.redo_commands = new List(); -+ this.drawing_commands = new List(); -+ this.redo_commands = new List(); - } - - public void add_line(bool is_eraser, -@@ -70,7 +70,7 @@ - - // After adding a new line you can no longer redo the old - // path. -- this.redo_commands = new List(); // clear -+ this.redo_commands = new List(); // clear - - bool new_path = true; - double epsilon = 1e-4; // Less than 0.1 pixel for a 1000x1000 img diff --git a/app-text/pdfpc/files/pdfpc-4.6.0-webkit2gtk-4.1.patch b/app-text/pdfpc/files/pdfpc-4.6.0-webkit2gtk-4.1.patch deleted file mode 100644 index 2428314dd2fe..000000000000 --- a/app-text/pdfpc/files/pdfpc-4.6.0-webkit2gtk-4.1.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- pdfpc-4.6.0/src/CMakeLists.txt -+++ pdfpc-4.6.0/src/CMakeLists.txt -@@ -30,8 +30,8 @@ - endif () - - if (MDVIEW) -- pkg_check_modules(WEBKIT REQUIRED webkit2gtk-4.0) -- set(MDVIEW_PACKAGES webkit2gtk-4.0) -+ pkg_check_modules(WEBKIT REQUIRED webkit2gtk-4.1) -+ set(MDVIEW_PACKAGES webkit2gtk-4.1) - set(EXTRA_VALA_OPTIONS ${EXTRA_VALA_OPTIONS} -D MDVIEW) - endif () - -@@ -136,7 +136,7 @@ - vala_precompile(VALA_C - ${VALA_SRC} - PACKAGES -- webkit2gtk-4.0 -+ webkit2gtk-4.1 - json-glib-1.0 - gio-2.0 - gee-0.8 diff --git a/app-text/pdfpc/pdfpc-4.6.0-r2.ebuild b/app-text/pdfpc/pdfpc-4.6.0-r2.ebuild deleted file mode 100644 index f06648747739..000000000000 --- a/app-text/pdfpc/pdfpc-4.6.0-r2.ebuild +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -VALA_MAX_API_VERSION="0.56" # append versions in sed line if increased - -#COMMIT_ID="" - -inherit cmake vala - -DESCRIPTION="Presenter console with multi-monitor support for PDF files" -HOMEPAGE="https://pdfpc.github.io https://github.com/pdfpc/pdfpc" - -if [[ ${PV} == *9999 ]]; then - EGIT_REPO_URI="https://github.com/${PN}/${PN}.git" - inherit git-r3 -elif [[ ${PV} == *_p* ]]; then - SRC_URI="https://github.com/${PN}/${PN}/archive/${COMMIT_ID}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/${PN}-${COMMIT_ID}" -else - SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" -fi - -LICENSE="GPL-3+" -SLOT="0" -KEYWORDS="amd64 x86" -IUSE="+gstreamer soup webkit" - -RDEPEND=" - app-text/discount:= - app-text/poppler:=[cairo] - dev-libs/glib:2 - dev-libs/json-glib - dev-libs/libgee:0.8= - gnome-base/librsvg - x11-libs/cairo - x11-libs/gdk-pixbuf:2 - x11-libs/gtk+:3 - x11-libs/libX11 - x11-libs/pango - gstreamer? ( - media-libs/gstreamer:1.0 - media-libs/gst-plugins-base:1.0 - media-libs/gst-plugins-good:1.0 - media-plugins/gst-plugins-gtk:1.0= - media-plugins/gst-plugins-cairo:1.0= - ) - webkit? ( net-libs/webkit-gtk:4.1= ) - !webkit? ( soup? ( - media-gfx/qrencode - net-libs/libsoup:2.4 - ) ) -" -DEPEND="${RDEPEND}" -BDEPEND="$(vala_depend)" - -DOCS=( - CHANGELOG.rst - FAQ.rst - README.rst - SUPPORT.rst -) - -src_prepare() { - eapply "${FILESDIR}/${P}-no-movies.patch" - eapply "${FILESDIR}/${P}-vala-0.56.7.patch" - use webkit && eapply "${FILESDIR}/${P}-webkit2gtk-4.1.patch" - - cmake_src_prepare - vala_setup - sed -i -e "/find_program/s/valac/& &-0.56 &-0.54 &-0.52 &-0.50/" \ - cmake/vala/FindVala.cmake || die -} - -src_configure() { - local mycmakeargs=( - -DMOVIES=$(usex gstreamer on off) - -DMDVIEW=$(usex webkit on off) - -DCMAKE_VERBOSE_MAKEFILE=TRUE - ) - - if use webkit; then - use soup && ewarn \ - "USE flag \"webkit\" overrides \"soup\"; disabling REST support." - mycmakeargs+=( -DREST=off ) - else - mycmakeargs+=( -DREST=$(usex soup on off) ) - fi - - cmake_src_configure -} diff --git a/app-text/pdfpc/pdfpc-4.7.0.ebuild b/app-text/pdfpc/pdfpc-4.7.0.ebuild index a2692e0c9585..ba05f39afbe0 100644 --- a/app-text/pdfpc/pdfpc-4.7.0.ebuild +++ b/app-text/pdfpc/pdfpc-4.7.0.ebuild @@ -24,7 +24,7 @@ fi LICENSE="GPL-3+" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="amd64 x86" IUSE="+gstreamer soup webkit" RDEPEND=" diff --git a/app-text/poppler/Manifest b/app-text/poppler/Manifest index a30a7bbe7fe4..55cfbdea773e 100644 --- a/app-text/poppler/Manifest +++ b/app-text/poppler/Manifest @@ -8,8 +8,11 @@ DIST poppler-24.11.0.tar.xz 1922804 BLAKE2B 2ee77ddfd49ab4b3f486fcd160be21fdf2d4 DIST poppler-24.11.0.tar.xz.sig 833 BLAKE2B 7ef6e5bd5659c91dc5924367b7875a3946116a71b0cc02d98a1cccd51d4a46b8d8b219681e576ba7ea27f736c8a5220ae98acb0f454ac4785c03d1c66d104046 SHA512 7b935eaa99c4c3e8706bfcb010245babf5a4f08f6809a340239a0c40eed0a79472c34e4722d4b480e20fa6618106cc5e9583e209e025689f1fae06c5c499f95f DIST poppler-25.01.0.tar.xz 1942508 BLAKE2B e6d7711ac09abb981cca915999bfaeb16032989a8b1fed9eba06e4d5cb3bfd6bb76496243fb77fb05a9fe9b6a327571adffea4d943877b1f2693014bc2aeec52 SHA512 9791e32099a13a8e80c87f7be874da0fee21f84246c0d9e37ad0e902189e9bf027a35757e26a1b2bf161a098d0bed29abc1550301767d686928ed77c37977b93 DIST poppler-25.01.0.tar.xz.sig 833 BLAKE2B 4b24055737c95e50d18a490809e4f24e14c730c474a623d507c6b6a1a38c0521becc42e7a3fb0e35a2697110a534a66611b77c98ab71ebfbfb6dfd674725723d SHA512 42600fc952416dc7b5f36c9696de5ee356d6eb50980fd06d3409923bfdd66d83e594b3a1eb6a499f6d51e516477a39d60f289d35789f53c2edb590c09d7c83b0 +DIST poppler-25.02.0.tar.xz 1943728 BLAKE2B 4d58a6b4dbef0f45119ce9c18ebc9838cf65a18cb41fd08bbcbb9adb4d06adbb81c1fb50255cc6d96e5504a54e6756b6b6efb4bc7d34d19d47fb0089f8673d3f SHA512 5223dd2c6f4014b40da989d9a09cea7e8ae5441b4c511c89aab731abed6b72c817633addd591da34743f86cb81b0e147df05ac99ada2e3d2a13d287abef5c4a0 +DIST poppler-25.02.0.tar.xz.sig 833 BLAKE2B 93a2443590ed97e09bced44a0b3aeff4dbcf74358923527bef8effcb09c14a0ac14e45aef7c76d929bb7b966b8aaf7417c551911f789ecf888f9bb04d9405c10 SHA512 6d723138c87a753d8d65e28f803fa6a75dbeb4f7e0510155f910e7d76c87e2b70554010214e7d125c1b619a672b251428de81bdde49ab682c5117eb1ff4847d2 DIST poppler-test-ff3133cdb6cb496ee1d2c3231bfa35006a5e8410.tar.bz2 5207226 BLAKE2B 15153457989a53301bcdc3468ab2b06b637457199004651b39ea848f488f8a2ba594ce2e36091de4fd06fc0a52b783c6b2ee243ac5d95ce1e9db7483ea880829 SHA512 335cd3d55fc6e28331e791e5b63a08d293abc70764a9f314b2c590c26a5a78b38243c74f988bb95afffe0bdcc54dee1e633dbf1672b19a290be40a298e16995f EBUILD poppler-24.11.0-r1.ebuild 4601 BLAKE2B 445cb55f547da3a3c4b0ddfadb7caebf54f82c5d50a5695e54b41443b4c1d362d424de98733a1c8fd9366dac6c254741a394e179dbcde927dbc1f437af283ee6 SHA512 0d05d9637903b61c9ed0095a3f9555cdb6609ef5ea15224f103976c08ad43996ca6261ff25976968f3007d619fdb44fabe145787fd4a30052fd0fc9be6230673 EBUILD poppler-25.01.0.ebuild 4455 BLAKE2B 72d43f21e46cb6372e4c787fbf4842a6c1a0011e276168dc926ca0baf1cd7f27798136a630df841a6bc7174a9392389165657b91e9c93ffd9dca379d8ffe673b SHA512 30cdd21a6bd901bb2947d38395ef966c995b8248afe5d6d63d1a2ee281ab47c5842062998f847925b12bc3a745f4d6e68aa4f5f63cf78f9749f15f4370884563 -EBUILD poppler-9999.ebuild 4455 BLAKE2B 72d43f21e46cb6372e4c787fbf4842a6c1a0011e276168dc926ca0baf1cd7f27798136a630df841a6bc7174a9392389165657b91e9c93ffd9dca379d8ffe673b SHA512 30cdd21a6bd901bb2947d38395ef966c995b8248afe5d6d63d1a2ee281ab47c5842062998f847925b12bc3a745f4d6e68aa4f5f63cf78f9749f15f4370884563 +EBUILD poppler-25.02.0.ebuild 4455 BLAKE2B b98668e6ae63ff035fb4525fc364266b6e6b25a3ff16a7dc3121fd465b92189bf6cd9a1ddf5bcb26171c43e0d192b3d3fd4660fa8632e9fd4232db725560adb2 SHA512 8efc7d62378982931c6d226f7cb6a71c0a4dc01a614d843c90ee9163ab375d8dabd8071b86ac4efc876f59de2aafed74478e65f82a2045bdc4977ed2ca63c051 +EBUILD poppler-9999.ebuild 4455 BLAKE2B b98668e6ae63ff035fb4525fc364266b6e6b25a3ff16a7dc3121fd465b92189bf6cd9a1ddf5bcb26171c43e0d192b3d3fd4660fa8632e9fd4232db725560adb2 SHA512 8efc7d62378982931c6d226f7cb6a71c0a4dc01a614d843c90ee9163ab375d8dabd8071b86ac4efc876f59de2aafed74478e65f82a2045bdc4977ed2ca63c051 MISC metadata.xml 1230 BLAKE2B e537b88babbb0c4ef5355c57c226d1c27b8b058e85c437962afe3610cf7dcdd4fea4a7694e508314cc5111d7bf09dc67881f0268a5cc8c2ce1e569a6f8c7699d SHA512 92b0a2fb9bf788eab1187657485698322cec7623da7b861ed5134089d0f3fc05f42138f734aa78bb811679203af2c6bf0dad7e78a091d5a51ba16a2aac60a227 diff --git a/app-text/poppler/poppler-25.02.0.ebuild b/app-text/poppler/poppler-25.02.0.ebuild new file mode 100644 index 000000000000..a4b54047b0b1 --- /dev/null +++ b/app-text/poppler/poppler-25.02.0.ebuild @@ -0,0 +1,157 @@ +# Copyright 2005-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic toolchain-funcs xdg-utils + +if [[ ${PV} == *9999* ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://gitlab.freedesktop.org/poppler/poppler" + SLOT="0/9999" +else + VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/aacid.asc + inherit verify-sig + + TEST_COMMIT="ff3133cdb6cb496ee1d2c3231bfa35006a5e8410" + SRC_URI="https://poppler.freedesktop.org/${P}.tar.xz" + SRC_URI+=" test? ( https://gitlab.freedesktop.org/poppler/test/-/archive/${TEST_COMMIT}/test-${TEST_COMMIT}.tar.bz2 -> ${PN}-test-${TEST_COMMIT}.tar.bz2 )" + SRC_URI+=" verify-sig? ( https://poppler.freedesktop.org/${P}.tar.xz.sig )" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + SLOT="0/146" # CHECK THIS WHEN BUMPING!!! SUBSLOT IS libpoppler.so SOVERSION +fi + +DESCRIPTION="PDF rendering library based on the xpdf-3.0 code base" +HOMEPAGE="https://poppler.freedesktop.org/" + +LICENSE="GPL-2" +IUSE="boost cairo cjk curl +cxx debug doc gpgme +introspection +jpeg +jpeg2k +lcms nss png qt5 qt6 test tiff +utils" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + >=media-libs/fontconfig-2.13 + >=media-libs/freetype-2.10 + sys-libs/zlib + cairo? ( + >=dev-libs/glib-2.64:2 + >=x11-libs/cairo-1.16 + introspection? ( >=dev-libs/gobject-introspection-1.72:= ) + ) + curl? ( net-misc/curl ) + gpgme? ( >=app-crypt/gpgme-1.19.0:=[cxx] ) + jpeg? ( >=media-libs/libjpeg-turbo-1.1.0:= ) + jpeg2k? ( >=media-libs/openjpeg-2.3.0-r1:2= ) + lcms? ( media-libs/lcms:2 ) + nss? ( >=dev-libs/nss-3.49 ) + png? ( media-libs/libpng:0= ) + qt5? ( + >=dev-qt/qtcore-5.15.2:5 + >=dev-qt/qtgui-5.15.2:5 + >=dev-qt/qtxml-5.15.2:5 + ) + qt6? ( dev-qt/qtbase:6[gui,xml] ) + tiff? ( media-libs/tiff:= ) +" +RDEPEND="${COMMON_DEPEND} + cjk? ( app-text/poppler-data ) +" +DEPEND="${COMMON_DEPEND} + boost? ( >=dev-libs/boost-1.74 ) + test? ( + qt5? ( + >=dev-qt/qttest-5.15.2:5 + >=dev-qt/qtwidgets-5.15.2:5 + ) + qt6? ( dev-qt/qtbase:6[widgets] ) + ) +" +BDEPEND=" + >=dev-util/glib-utils-2.64 + virtual/pkgconfig +" + +if [[ ${PV} != *9999* ]] ; then + BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-aacid-20230907 )" +fi + +DOCS=( AUTHORS NEWS README.md README-XPDF ) + +PATCHES=( + "${FILESDIR}/${PN}-23.10.0-qt-deps.patch" + "${FILESDIR}/${PN}-21.09.0-respect-cflags.patch" + "${FILESDIR}/${PN}-0.57.0-disable-internal-jpx.patch" +) + +src_unpack() { + if [[ ${PV} == *9999* ]] ; then + git-r3_src_unpack + elif use verify-sig ; then + verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig} + fi + + default +} + +src_prepare() { + cmake_src_prepare + + # Clang doesn't grok this flag, the configure nicely tests that, but + # cmake just uses it, so remove it if we use clang + if tc-is-clang ; then + sed -e 's/-fno-check-new//' -i cmake/modules/PopplerMacros.cmake || die + fi + + if ! grep -Fq 'cmake_policy(SET CMP0002 OLD)' CMakeLists.txt ; then + sed -e '/^cmake_minimum_required/acmake_policy(SET CMP0002 OLD)' \ + -i CMakeLists.txt || die + else + einfo "policy(SET CMP0002 OLD) - workaround can be removed" + fi +} + +src_configure() { + xdg_environment_reset + append-lfs-flags # bug #898506 + + local mycmakeargs=( + -DBUILD_GTK_TESTS=OFF + -DBUILD_QT5_TESTS=$(usex test $(usex qt5)) + -DBUILD_QT6_TESTS=$(usex test $(usex qt6)) + -DBUILD_CPP_TESTS=$(usex test) + -DBUILD_MANUAL_TESTS=$(usex test) + -DTESTDATADIR="${WORKDIR}"/test-${TEST_COMMIT} + -DRUN_GPERF_IF_PRESENT=OFF + -DENABLE_BOOST="$(usex boost)" + -DENABLE_ZLIB_UNCOMPRESS=OFF + -DENABLE_UNSTABLE_API_ABI_HEADERS=ON + -DUSE_FLOAT=OFF + -DWITH_Cairo=$(usex cairo) + -DENABLE_LIBCURL=$(usex curl) + -DENABLE_CPP=$(usex cxx) + -DENABLE_GPGME=$(usex gpgme) + -DWITH_JPEG=$(usex jpeg) + -DENABLE_DCTDECODER=$(usex jpeg libjpeg none) + -DENABLE_LIBOPENJPEG=$(usex jpeg2k openjpeg2 none) + -DENABLE_LCMS=$(usex lcms) + -DENABLE_NSS3=$(usex nss) + -DWITH_PNG=$(usex png) + -DENABLE_QT5=$(usex qt5) + -DENABLE_QT6=$(usex qt6) + -DENABLE_LIBTIFF=$(usex tiff) + -DENABLE_UTILS=$(usex utils) + ) + use cairo && mycmakeargs+=( -DWITH_GObjectIntrospection=$(usex introspection) ) + + cmake_src_configure +} + +src_install() { + cmake_src_install + + # live version doesn't provide html documentation + if use cairo && use doc && [[ ${PV} != *9999* ]]; then + # For now install gtk-doc there + insinto /usr/share/gtk-doc/html/poppler + doins -r "${S}"/glib/reference/html/* + fi +} diff --git a/app-text/poppler/poppler-9999.ebuild b/app-text/poppler/poppler-9999.ebuild index 623628e1947e..a4b54047b0b1 100644 --- a/app-text/poppler/poppler-9999.ebuild +++ b/app-text/poppler/poppler-9999.ebuild @@ -18,7 +18,7 @@ else SRC_URI+=" test? ( https://gitlab.freedesktop.org/poppler/test/-/archive/${TEST_COMMIT}/test-${TEST_COMMIT}.tar.bz2 -> ${PN}-test-${TEST_COMMIT}.tar.bz2 )" SRC_URI+=" verify-sig? ( https://poppler.freedesktop.org/${P}.tar.xz.sig )" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" - SLOT="0/145" # CHECK THIS WHEN BUMPING!!! SUBSLOT IS libpoppler.so SOVERSION + SLOT="0/146" # CHECK THIS WHEN BUMPING!!! SUBSLOT IS libpoppler.so SOVERSION fi DESCRIPTION="PDF rendering library based on the xpdf-3.0 code base" diff --git a/app-text/qpdf/Manifest b/app-text/qpdf/Manifest index 59595b2c4d39..5638ff25eab1 100644 --- a/app-text/qpdf/Manifest +++ b/app-text/qpdf/Manifest @@ -1,4 +1,8 @@ +AUX qpdf-11.10.0-zopfli-inc.patch 1208 BLAKE2B 3313a25a13a0aa178c180ad49fd9234d56c25a4f50fe52523c24d975c216ccb81d6e2d46ff5b595287c5e81ce62084e3d513875f57b9b9bd7dec9128ae107df6 SHA512 a4ab3d0423013fc887517893f54477fa4e07350643b8f0e3c53e9d4dc8355f09c5fee14c7d8a38de44c15b1f78d568d6bd8d324b5d4e4fcee0f4dc830bad1c75 AUX qpdf-11.9.1-include-cstdint.patch 1167 BLAKE2B b393358804b57ba2da81b5f8bb3588acfbf3f85e0f5047e74dd1d6c970e796c0ac356bf3b44d9c3cc383248d74f1c5763a58712eb8772c98715ee8bde3f2b8e1 SHA512 2a7228fd525750c43af3a5ca496ebe256cf33e827b75899b2b4bca114536e15b207a993492d7ba30162907fe07814600f33f78a5241e9b3165225446fc0028a0 +DIST qpdf-11.10.0-doc.zip 16605842 BLAKE2B 17dcad5daa6490666e04fff94152683b75b5e3579f4c1c46340cd6f6b847a4d4251d08c353bdcf5e34ea2043ad3ddbd13e4965db993103f9500206543c2a3d5d SHA512 afa095957fbd98ddf645021dd24addafb140f5ed07d048117999f0cb7e5a1a713b3cce8530d43f4ea3f1e83996479b1d052ef74e21bfd31bf214a1b2e77e5e3f +DIST qpdf-11.10.0.tar.gz 19487550 BLAKE2B ea104ebedece94e6c6736add58e4139c5b8aa56e7679362cd15692be6ec54f47c95b9b3c654c53d7625fba6d4eec71ba3596896843f316b69e1976f87a7d7283 SHA512 7dfaba277fc3b3ccc0087b005c0a9f0184bde9618c73d6044604669d3d2bd0bbdf44eb4573474819bdb743e38a61e86fdcfd4512ccde07fa510461fb3738a1bd +DIST qpdf-11.10.0.tar.gz.asc 833 BLAKE2B 63c278550807af8fe304cd2961881f32ea9a4db793f37b7ede0ebe47358c1ef5a468213c947354ec79ff90f2eed488e3a7e550d27f90928a790c03b2b8a64988 SHA512 92b86c642ab7c7d129474f57897d7694f3e0f4c28b1f8575572130a5d87fc9da272b753083fa53986c1b853a8a2f3f1e7c82043febb9bb2832279d74edacb7a4 DIST qpdf-11.7.0-doc.zip 6874893 BLAKE2B b14b0f68f4599bd4f396cccbc35b13b0f52b72856de1afd3fdb0c70b33e1702c4afd7c954011df72905c06ff262b08dc9519e44dcef9b7633423d38208542795 SHA512 7ceeff62788defe3649a8d242220c7c8208ebe92dbd9d67b4b53d5036afb1cdbcfe46b4140b064b0542cba2d8eaaad6eedec1ed7b7bd0ccafe2dd7aa20efaa69 DIST qpdf-11.7.0.tar.gz 18124824 BLAKE2B aa10e154899a7fd53d696b9521cc8a44d4a336094711ddc2a506dac8841ae12ce5bcd604555725d2b6bae3c63a6a3f6ef0e9ab6baf38dd3d7fa71507234378a3 SHA512 6ee302671fd4513c5b22f101feb773b4101de6cc5ff6b0e25d1daa03df82420f87ce7db49a6c47758d7e8bbc3beeb997d4671d52e4cf0ac0d4f817f10677d1f9 DIST qpdf-11.7.0.tar.gz.asc 833 BLAKE2B e0b15e6ed6b67fc222f7b4d9f863e8630af814bede3605ca56b83b287d7e02c700092e59f3805565884b55af96c4ddd407331cae26273287b546c32a7975c331 SHA512 ef5aa1661944fd56c3f929ee1ffc78229667ed1d1c639aab82a0ff3a3891455e4dcf3dffbb17e9d22862d6426a263182360b19dd58435a2413c19761abc9b966 @@ -11,8 +15,9 @@ DIST qpdf-11.9.0.tar.gz.asc 833 BLAKE2B 6f00b52643b76828f65ce45ac031a72369753495 DIST qpdf-11.9.1-doc.zip 6895053 BLAKE2B 6f23676b54cc1e913ec131cd2121e9ef35dd74cc2d85949e28374ca8fc449a8a93946c0ec7bd41c2cbabaef2eb00e54fb9cac7376658e835f9c2ab9e1e58bb7a SHA512 7cd4add8d43ab366feac34e98e7ce13338ed3e2282f5bbe5c59b96230acff3bdb259723ebf197f2e4aba6ed03ba20cab01df4cf583b9d80102e8f5ec0e06e18d DIST qpdf-11.9.1.tar.gz 18585065 BLAKE2B fa845e04d6044c70e1864a8eee9831774218a2fa6de74fed1efc22f0cc4982b7e41b2a7d6f0c794941eac08ba65d2196d72399514c376e2774c754f074560c43 SHA512 8c60c6639371e71a5229afb2e11c18aa660061e652eae4a8d9c8e9ceff913b0c7d866ed17375d1be9c439b0789ea03064ab98771f43fd03c7059aa136285a4b2 DIST qpdf-11.9.1.tar.gz.asc 833 BLAKE2B 4b676ac2469971e0b4862d329d489ca4c37a11a753bee380668159f8e0c8bdeecefcfc51b6aa0fbafc379a732aacb89481b52138a38cb69fd8d8cfb804dcae9f SHA512 392cec40c7f7251f77ef3c7d27d9fc5c8d63ae6774192af59b3651c240fe652d67dee8ad80c94ee67362e27983124fecefc97df542b8e8d48843f2c305fa99b8 +EBUILD qpdf-11.10.0.ebuild 2417 BLAKE2B 5f34433e09665272fbc952836445b1dcf4d76118735654a8974e687093350f94b9b2544393195bb7c9f7c42bcd68ca8e44596ed36635c228022d5b49a6fd9077 SHA512 4691753b0eab683e4481f838a983be5f007927f4b7102c6657fc52e1877056d226bdec6a0f3ab6424fe94947906f365b3338b8e292115bc8d95aef8980386a4a EBUILD qpdf-11.7.0.ebuild 2253 BLAKE2B b2bc43884c75da8d3381d12b9f8f0d2d836ab03b8de884be792d308b0a564c623eccbab64ce694806cf7477f667e6754a177a9c94eab83ee75b551b05984cf51 SHA512 1956e77716fa8a25e5214e3463a5c51f8c2e20ad8d46a4ad43d0aa8068e858c054985cb2ca01ce682d90215fb80e10e019ce88f64c0252d46405c7a431a8f5ea EBUILD qpdf-11.8.0.ebuild 2261 BLAKE2B b3687a1e2b26990a2344e0e070aa3e7cb05cc9e802b727719900e42b69af8759bf936e3c707660174d009921ddf8d53c988558e05ef2a9be592744c5180ce32c SHA512 52525584740a3526daff4e097afaf743f3c5ca678ddec343b27fd41f068fda44fcf0087f11782bb90a7e3f8615101221aefac252078b4fa862de4e45738d34eb EBUILD qpdf-11.9.0.ebuild 2261 BLAKE2B b3687a1e2b26990a2344e0e070aa3e7cb05cc9e802b727719900e42b69af8759bf936e3c707660174d009921ddf8d53c988558e05ef2a9be592744c5180ce32c SHA512 52525584740a3526daff4e097afaf743f3c5ca678ddec343b27fd41f068fda44fcf0087f11782bb90a7e3f8615101221aefac252078b4fa862de4e45738d34eb EBUILD qpdf-11.9.1.ebuild 2324 BLAKE2B 5b92cbeb2ccc4c182c4d23eb187879b99e6b75a3ca5ee1cd44a71dc77157438a2ee1f29276dd1b0aa96c02b2dd229bcb9160ac7e57d5fe03acee11532ae65f08 SHA512 dd55fcc13955a3b78d7ff3a08d88fff36b98ddbc86ba451ee10cec91a248168d0af55e84bf677db0f70c0252feeaea9249f0bc7797b7e2c5f2bf4cd82cd9d861 -MISC metadata.xml 444 BLAKE2B 1febc86d8f85aff5ec02d910550aca3bde66111c3e7364b264db3fca10020ea9bc2887dc8283217e2cb8d05ba46c176a92993e0d418528cbe590771dccc49d90 SHA512 dde5e34ef0d6c65df8a2ca8d630182413800f4c10f4b9860ed752623b6f4864dd4969c757e06b2689c8c5da3377bfcc28ec223e531432add083cd4a68211ea1c +MISC metadata.xml 581 BLAKE2B 38c0e8385a46cae56b6f4556a70ad6eef3e2ed6d8f39b0c20e9304edf32a7eaeb20b5c231afcf1d802c9256df3e96358e4db279a96ee709ccafb958de8bac071 SHA512 af5205f77e4a4960dd3f12a78fd9c5927a48df443f7c8fd2779b7ff56225b174a53b36bb2f4ab02e306242827ce6cb7634251bbac565ac62543f46ccb668f5f3 diff --git a/app-text/qpdf/files/qpdf-11.10.0-zopfli-inc.patch b/app-text/qpdf/files/qpdf-11.10.0-zopfli-inc.patch new file mode 100644 index 000000000000..2ab7c83b6a68 --- /dev/null +++ b/app-text/qpdf/files/qpdf-11.10.0-zopfli-inc.patch @@ -0,0 +1,38 @@ +From bbff557f8c63cd1b9405738f202b70e1067014ae Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Mon, 10 Feb 2025 06:26:45 +0100 +Subject: [PATCH] Fix build against a standard zopfli install + +Fix the logic to accept a top-level `zopfli.h` header, as that is +the location used by upstream's build system. +--- + libqpdf/CMakeLists.txt | 2 +- + libqpdf/Pl_Flate.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libqpdf/CMakeLists.txt b/libqpdf/CMakeLists.txt +index 285afb86..91344a59 100644 +--- a/libqpdf/CMakeLists.txt ++++ b/libqpdf/CMakeLists.txt +@@ -192,7 +192,7 @@ if(NOT EXTERNAL_LIBS) + endif() + + if(ZOPFLI) +- find_path(ZOPFLI_H_PATH zopfli/zopfli.h) ++ find_path(ZOPFLI_H_PATH NAMES zopfli.h PATH_SUFFIXES zopfli) + find_library(ZOPFLI_LIB_PATH NAMES zopfli) + if(ZOPFLI_H_PATH AND ZOPFLI_LIB_PATH) + list(APPEND dep_include_directories ${ZOPFLI_H_PATH}) +diff --git a/libqpdf/Pl_Flate.cc b/libqpdf/Pl_Flate.cc +index 97a337b4..724b4435 100644 +--- a/libqpdf/Pl_Flate.cc ++++ b/libqpdf/Pl_Flate.cc +@@ -9,7 +9,7 @@ + #include + + #ifdef ZOPFLI +-# include ++# include + #endif + + namespace diff --git a/app-text/qpdf/metadata.xml b/app-text/qpdf/metadata.xml index 9248740ded39..c1d81ad48c72 100644 --- a/app-text/qpdf/metadata.xml +++ b/app-text/qpdf/metadata.xml @@ -10,4 +10,10 @@ qpdf/qpdf qpdf + + + Support using app-arch/zopfli for stronger + zlib-compatible compression. + + diff --git a/app-text/qpdf/qpdf-11.10.0.ebuild b/app-text/qpdf/qpdf-11.10.0.ebuild new file mode 100644 index 000000000000..9e7dae0c4ace --- /dev/null +++ b/app-text/qpdf/qpdf-11.10.0.ebuild @@ -0,0 +1,106 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit bash-completion-r1 cmake verify-sig + +DESCRIPTION="Command-line tool for structural, content-preserving transformation of PDF files" +HOMEPAGE=" + https://qpdf.sourceforge.io/ + https://github.com/qpdf/qpdf/ +" +SRC_URI=" + https://github.com/qpdf/qpdf/releases/download/v${PV}/${P}.tar.gz + doc? ( + https://github.com/qpdf/qpdf/releases/download/v${PV}/${P}-doc.zip + ) + verify-sig? ( + https://github.com/qpdf/qpdf/releases/download/v${PV}/${P}.tar.gz.asc + ) +" + +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 ~amd64-linux ~x86-linux" +IUSE="doc examples gnutls test zopfli" +RESTRICT="!test? ( test )" + +RDEPEND=" + media-libs/libjpeg-turbo:= + sys-libs/zlib + gnutls? ( net-libs/gnutls:= ) + !gnutls? ( dev-libs/openssl:= ) + zopfli? ( app-arch/zopfli:= ) +" +DEPEND=" + ${RDEPEND} + test? ( + app-text/ghostscript-gpl[tiff(+)] + media-libs/tiff + sys-apps/diffutils + ) +" +BDEPEND=" + dev-lang/perl + doc? ( app-arch/unzip ) + verify-sig? ( sec-keys/openpgp-keys-jberkenbilt ) +" + +QA_CONFIG_IMPL_DECL_SKIP=( + # glibc only (bug #899052) + malloc_info +) + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/jberkenbilt.asc + +PATCHES=( + # https://github.com/qpdf/qpdf/pull/1359 + "${FILESDIR}/${P}-zopfli-inc.patch" +) + +src_unpack() { + if use verify-sig ; then + verify-sig_verify_detached "${DISTDIR}"/${P}.tar.gz{,.asc} + fi + + default +} + +src_configure() { + local crypto_provider=$(usex gnutls GNUTLS OPENSSL) + local crypto_provider_lowercase=${crypto_provider,,} + + # Keep an eye on https://qpdf.readthedocs.io/en/stable/packaging.html. + local mycmakeargs=( + -DINSTALL_EXAMPLES=$(usex examples) + -DZOPFLI=$(usex zopfli) + + # Avoid automagic crypto deps + -DUSE_IMPLICIT_CRYPTO=OFF + -DALLOW_CRYPTO_NATIVE=ON + + # Breaks install with USE=-doc in 11.0.0? + #-DINSTALL_MANUAL=ON + + -DDEFAULT_CRYPTO=${crypto_provider_lowercase} + -DREQUIRE_CRYPTO_${crypto_provider}=ON + ) + + cmake_src_configure +} + +src_install() { + if use doc ; then + mv "${WORKDIR}"/${P}-doc "${BUILD_DIR}"/manual/doc-dist || die + fi + + cmake_src_install + + # Completions + dobashcomp completions/bash/qpdf + + insinto /usr/share/zsh/site-functions + doins completions/zsh/_qpdf +} diff --git a/app-text/zathura-cb/Manifest b/app-text/zathura-cb/Manifest index 50b514223e09..6fd38b84acac 100644 --- a/app-text/zathura-cb/Manifest +++ b/app-text/zathura-cb/Manifest @@ -1,6 +1,6 @@ DIST zathura-cb-0.1.10.tar.xz 6300 BLAKE2B d541fb78f5ee52a22e58bb885103560bd544a9725cfe210f6b343e97429163a90dd0e9533e6c807134386e6f347bdd17cfc506ffe16642819eae4d1fd27c3b6e SHA512 b85894d052fda45933582299e8c3406413bcb47ed451d81f5906d7bfef94b169c59a57db8b37273c838381ffc7ba55205d714d2e2ec3b597371578a77e131029 DIST zathura-cb-0.1.11.tar.xz 6748 BLAKE2B 59abd86594ede671b65e03c5a3577804edd7235ce74b7242907b3e744fa0982e12490c6ed98e556aa6c79c30e21b1683e3dea96d2a884f04bfd50f592c80e0ee SHA512 f927c4021937505bbc83d47959f4275701449dc4e889dd4a92ef7feecfcdf5ae772d34bb787ef8638c5fe209a1851ce355740c2b80921139f10fc059bd67f39d EBUILD zathura-cb-0.1.10.ebuild 751 BLAKE2B 1a75b8ea62d2a133dc55649f24ba4f3e7b28bd9567dd6bcbdc284ec69281ec8dec2c13f7e7299481514c28bd7895cf60580cc50f61f7f586f8a779838dcc3f24 SHA512 e149f16a06605d328fe1bf072fb47c571a55d280da1877128c80a88ede1e203c1a168581c462189963ac1af2a0a3040f4aa4a6022b45ac96b62842f3b1e317ce -EBUILD zathura-cb-0.1.11.ebuild 818 BLAKE2B 0d76c3052d404a7ea7153ae4ea0a20c5d0ac170b2dcf0427e371cc341dbbac889beadfb39d6f43cfc41b741c6c42afb1dd5f64816e2ce2abc0f2b49e8de344fe SHA512 822b87d2998f4c8e27a2603f3931b0630e4de3ee2629387c8e857ed078dd95b382b838c6e044a109374538ad4ccfe0ef4780f24e49bc2aeea127d03b8471f783 +EBUILD zathura-cb-0.1.11.ebuild 817 BLAKE2B 60f2cfb9cb12783c0d8409308589afdd036b9c5034a74bd40de4b5f958b8533cdf258e46b9779b3337b18ace03d3614a7f7bde3fbb87ac531a9ae0b4810459a8 SHA512 71cd9819a285ade3e5c1c56071cb0e2420ad2836579f1b8814184a85a16b9aee64be387fdbe192c533a44c9cd61366735d4d2ebfa779c2f314edc3d615e7e778 EBUILD zathura-cb-9999.ebuild 793 BLAKE2B 3bc921101f771c89dc283a71e2f4eed3f76195e708b7f19867493d0e147fbec0b9559c3e627eab7f29da21eeec9034f6253eee847c31051fac08e9b71721c8ad SHA512 cb6bdee9cc8fa3a9abf9313e36d491a227c3e7054decb359eea8e1e4fdaaf6ca8d44a5eb05a57158b855d46a0ec435e0f679a01d7446f62f8dcee8c84d864290 MISC metadata.xml 778 BLAKE2B 79a2c9cd2014b9e945d25384ef6faf7fa5a6685a15dc08874bb454add7cb515d6e0efc13ddb801698151c97f8fde3f8ff787b7230871ef3ffc4a138facccb666 SHA512 5461b530d3b11ad32cd25234bcbe5a352d45b7856c75949f8e3fd16981ee5dfd194eaed09e0af7e0d97ae6f0164bbdc7b1582f395aa0f95ec08012a202ab9ac0 diff --git a/app-text/zathura-cb/zathura-cb-0.1.11.ebuild b/app-text/zathura-cb/zathura-cb-0.1.11.ebuild index fbc4db911ed5..5b97d8787c5b 100644 --- a/app-text/zathura-cb/zathura-cb-0.1.11.ebuild +++ b/app-text/zathura-cb/zathura-cb-0.1.11.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -10,7 +10,7 @@ if [[ ${PV} == *9999 ]]; then EGIT_REPO_URI="https://git.pwmt.org/pwmt/zathura-cb.git" EGIT_BRANCH="develop" else - KEYWORDS="~amd64 ~arm ~riscv ~x86" + KEYWORDS="~amd64 ~arm ~riscv x86" SRC_URI="https://pwmt.org/projects/zathura-cb/download/${P}.tar.xz" fi diff --git a/dev-ada/Manifest.gz b/dev-ada/Manifest.gz index 87aee5f3eac7fe97c88a25a31ca51a699d940df2..f740b87b31145bd9dd347d49c40f86dc6f9cefb2 100644 GIT binary patch delta 5112 zcmV?MPr7V$zOHTOGU5)c=deOc zIffKd8>905qsba2#MnkR+iA!io4<=CnT%{p&fd96|M2-gk+eWg-|JXxGql~B$=+4N zuu-GT-~Hv&U;pdRfBO8xhfg{`fBNA+{xY8)?7Y4)t`sigT0>doj8al4C2ACzA>`1< zIQ2};%VJz@@TYv#_>+@D0W1U$j&>Q7asf+!UB~smpFiKuinV>8Rnyr|S^`8ka870C zVOC?Sd_pauNee4!w3)S}aimr$^VG3-KYU*(lSS8A*kI?oXPPVMQ8~HQqf6syp^F$l zF;$ffTAAj1=v^#-pH&~b);WV28_r|(!Qt1rON^nOmd`$OA3eFBw(<-BukrLyfXgv| zpuC$L4zR7jiE&;dO|7z0p6jGI)}AR=3#VGqnt^YwIn8AGfazVXvx0*^KF+5vKhH1c z$Jg`n_w#Z)yDpd6oso0dS(fg&3aklrR=`z5w$RI&agPMxXX8k9>^Qds120gN3D34Q zw;93yVN5lP?s=rQIm@S%64H);c@@q8tnu?d4$-)F}Y^K1ZVK)x_-c8Jwa zuVI2S9l3Nyl4H_cPcl76_KZ0)ML8!Y>3Ou=S>J;EyNt}yi=0+FG+3)Ser=7gvjPKG zi`E%#2{p}8)~{ywuzvydKUFVbV_rL^5)W#??rfRqwjTyO~(k2Q<+aDiNJ z+0oGy^-@kT2Kd+mnv`SjX_T1OmQv0^I3!z~%``zczOf@*9L7-{(yZs2(22qHYbqV^ zg$#;qSt(L=awelRi!h?k#6OXL*IUT_{Pgg4JFPUX+TS2fUlAgrBPIZB8HZ6_a)T~G zT~XW3hBrH28(@^VP@QbboFI58o1u;a?vT847-z4I?bgvbaim%`B6^G%kZm`T6*pSU zg!cDo%_7Uui92jQ^$0(WUbO0mkZpsPIpG^59~^Ge&NM((kPY+)sMa%oY*%%3(GE76~kegHNG9xSqyd zLG&@6F*!s*F1u<%%Um^1hK1+At*SPVFGIlGhcdPnn!yR(XDh%r1*7~-+97eyOV#y+ z(MHtj$oE+Zu+ha6*Q|?w>6V6txd9BB+0YzWXJbET<785qN#m0>l(f;-IRL$2^yXAX%QQYCvvupbHJz36&Ls{1v>5|8*bVv(6jGR3SPlv1*e67W3$Y{xY>)XAS?(n z%{fUER*Q!O1X&uUvA)kM!KmCKmO3CPGFTO}sY@#lg+Jr7A? zrdF~Xxv4oQ0|?U5*|Y?lK0qQ1IoIzqi#=3V^w|&ugscKEa5)S9pDQQPd$7vsgcL@@ zCU>%a0-@-gAdE#t3xTf3hT5_!kbNvM`;2FRd_gP(w_x3Wh7D&3dP>!8NTTRD!BgPGCa`+);;2?xdHZ0M zkjct_J;!7YS;(&(FYuy|6eWy~h?0Pb=0V_Wq6^@I3g{fr@x))&=?jaZT;XcUu)g~M z3P4p`Hi@8&pb}4x;j(BweuHH6xTds*rVg+b{e)EUgj6jrU)#wv7Gek;gK*m_QK^%* z`4?sv3E_nYbD)C$0tS*XwJ&s>jzV)kGkxBFcZKPiF*-QKUjOgwdVYNP=dE$( ztNbrAaw@bQ*iEWl&~n*{@ZFPiVMdS^LnR?oo+ijU(2o8h)J6Il$tS{41_DigKn*|~ zJ>m76h_;+G#jix@!YpxP2dtkk<^IkvrCmVQmMbDH3I?K_t_hskOo|^D@mdJ!&<9h} zOG-V#UL_%tjWPwnzddMg(SX<9Cf+Iu1XAN+Tac6-3@R1fU8|X!RI+L4o~LJ#^9fFSBY0O7zlU zv^F7XQb7?ndbt4#HiMggZ?{;a#Fe%k3JIlh$w|B zmi*GrI5)J5x|0FWLb9u+s{w-@a4y!)-B5VHD5$3E@5fVhnd9y zTcByo4b7%65n(8Qz?iurC3M7yIb{fdpyCz>WTv*+;l@-z2?#}=X= zg@;xga-cLJSJaPLDImmqu#MH9FnH8xSj+GmV9rrH5{_qigr#I-(jGm@o=$@UX2BY= zH5z&G-7_5j=20dLwhHN)UnOT=1#GZCPNIM;J$`4VE%k|lmexq6sDa-v8X0hVMZ;jo z(cVlgP?aiweoHwcQJ{*XvN<;ihr&y1*&G-_FOZTs=|oVXhH$zGxh733pLR2@$NBj2 z1sLqN=ex_rnlD46;nN`l)Y}yQC z3dCygrztjyZ-Au8@7g5QI5I=_rTTR;-C{O&Po*t?#p1eL%wn|U^E{bZHJk-86~Atz zG%|SRF$SBnO}l3H1-(WNVo5}9zaIC_6OFt`REx1^my{WHZ^R(ryjd`{tywLp9U4b_ zzgX~uF&o>8`F3beUw*qK3e1ii!*uY&;O@h|&_^I&>Q#Mh-|ju2xttRj;Y1TJgvouO)Lr zXP%Om$4$!l@xELAGS)T$dZsMI+AMrR?{mdU1d48kbbT^}k&zEeAh)?5vRE()mkIvl zGsM9Bl@EC7{xX7;hOM8q$Rcz5y}13`*zUN0dA*E{;!CH&DRBYNMH zmw9y~RZu<}c#h0p3z|juIh0Jl^TY4nwR5(XSE7@G1!|@{`f%gnm)CUZ_m$Tp&JQ?LK&j_Pe2k2l4B2` z%9}AiKvVFWW)9_0k4S->*`)&4sw^ut7zF5CQUc38_WG`kMLr8gnZBJ$cM5VtzL=hu>A$-~`Y~ilreyeCY&Q zndln+Rtf1U8@1$14Q`G(LLSuZPEkafs^Y1B2Mwl_h_ z%ZxX+`E|bhq|d)R-43i=i_-D* zf%zUV4<9N==~(sNf5`2CX{Va9`O0X+eczb`WevJ!njusY&*K_lsmM!e}7;=XfsH z*<`)rt@8Lga=)oS%~4a#rxFeEo`ZsJn41XKtw8M*7r2DkgYK~X3iE)aMH)j2U_6MD zfHTuXX&rba9olb`NU<8RSaI=1&VbdkrQFU`GeJrA(Cf zAnC85&-T>?z6-&B^ot9m)8BR%5)}W*h$*H|3YHjYxroAGLW=@memN4LdqF}pMpx#o zUfUB7g*DeJ?1E(z4!o%e3c!q;zh5G$X4h$;?r$mmmNUJ-WGLIO#+l;sH&-NoDtL;p zoKC{{AY+Hw!H*LwIE{n{m&tLP=A4FceCRKAZ>@l0UZ?eccD{aloNwp#{QK`Bb#S}4FjUW`7aK1zwq|g z29?~+_WeGa)SfVTjI60_A{WRYnK$x;Qt%1Pa%oIU6c2;fJ^N)a8Ki9&w1_>X_g_4q zpa9*#!^c2>H+Z(a%ifwyoR3zl8r)`{gSseT13e)sWqdK_8Q)fK=_DY0TksaBz$(_=ce``| delta 5113 zcmVBHCaHg&$u|M;iTFOGH{lW_q{f8ECQx6hyNXT{pS&#LL{CoKUY95|=4 z^DwKiRlcE?(4>WxG}_Es(l}D9lzHmdyB|Im%4E@X7B<-V^h|RFJt`-+dUR<#Ep!p% zC#I^hK`YaI550@!@3ZP-*E(k~W5ao@J~;e3cZo67)AHG8?xQF7(^j4V;5D8e3UE0F zf0TEV!vVGxI5Ey^q^VU_%5$9*$J#T+YT;BXS~Kv?HK&;@A27YkZB}sb$H)2f<>&e3 z{P=oa{(fHWXV>LAyEAewJIm4?SAjL5&I-6{$QF7zGwzW9{A?VljveQgVBiIcGU3^_ z<~AePKa8nn(LIm!HfPy(Od`PRSwh+|f3KptVSR{WCpKa5>ig_?VxA2k4agU!%?`2p z=`~DnrX!cmNODZN>q(~P$euArrYPs+Bt4IoJL_AJf0vOtdXdv=hX!jk$FHpsc2;2E zYSB8wEup44%KFvp9+tiSGT-+9-i?i2-RKz@dJwcIwW)}b4GXeDoN{_eef1ube;7bn zIfuyl!2k~e00ojIw#A`MK7_VaVHVQE>_vJky_B{)tn8c(8jwB{%32 z)D^YeYrvKi_);1074N6@%j<1csg!=5RSvTWut;Dz9DEA>!Syuu z3ZjqkjL9Jia@kcATIQ;8GAuj?ZdJ8`d>I1fK9sSw&GmxMp2Uf44L&%ne}3%!cO3Ive{z8z+;>Od6l8p`?wr&H?BJs|ULr zUE8Ouv009ZsOxerb-=+2JyApeRx2hNHd+)=jCSXfCx6_}FXwJvvD6zAT_TFXs3Dmr zgZ^k`ON-cGJdv|)oC7|MuDHNwDbR5z*>KZVfu4PjQt%2UD>yA2f170%#?4-A1z|yu zY0gQSuv$DMAjr}%jrDzA2}b1>vD5)Uk-@5%OK=&~vAH5a`7yj~y_?q?V|xAh;q7i{Bi><5 zi&$CVq}>u(AP>Zue{+Nx8`bQsWHQx3%yS|PR9!GOp$p_70AU<1W-g=bc!)X8vCagQ zVQMAIk(-)>GJqf*olQ%?=>sIPkaPV$v)Ds*MV}2pK*%Zp1DCVl|G9D!y$7qDPDo)i zY;q^-ClHD*1Ys;HS_pJKHq@3?f$U?6*=IZh01VC9HhYIGo!m4;!$R@dw%?fCuQ-aLUZ+-xg%*%zqI1()pc7snc6E)GGsqq}8h;v4i>|xy zZDg_0Db>J37%(Zp}z>Dx$w39ASe-(q1z<`EO$$JS!p;cVNEYRuL zSd@s)gO}#`+W=;+T2M4B9Ik^|l72844j}gqz<(698<$!=3 z+KpnOK>!o`C5P8e5HBR=lYV1ry6%J7ovvlT-v$|9NdW%UgQviWOIsZ70@}LY!X2kK_#9X!)4KW{07PBaZPCrO&wq>`U$Dx38`9MzP6KTEW{8x2I00e^;3DbzYOkK)XboBKewdZ*y&e7sM1q z*>l69Zfw{Uvr3VS?~^P#m|k=|W{ZiQ#iHqy9U#%MLI9yiFuI4qEU&JmMh|1f^&eWZ z*95B0wO=-dgQbR0cjzFCuWTe}%&wshjDU2N(SE=r$~nfEXrsu5RdgQ7ophDHSR(Z? ze{PpZejro`0=h$|ui`If;h8AE4fm8139^R!kTBoR>+AV?H!t{c3;qZtYE}#X9G1y~ z#1>qRZlaZFMRKUkA>6AQ9h!=qwIcJV`#D(=m4@VmCfH{rAPBrP`OX8Jp~t(eH=Ifm z8O-dIf*Ybk3tPMf|3T34+W46Syuh2fHOCExHcjhY3XTZo|JA zP`OkDi~K-m5`@Twp;{BNJ=4s4;Q)!E0Pr_CoEYG@42$|7i7)Tx_4?1R>-q8F|L%=5 z-{gOhkyD}dz;06Yf|kopgzuiD3p0YW7%B;w@-!*@2innJgt|yyBl$!a%0Qq=e~`R| z9|b>q6VaBFrudZzU6>_q?11$Xrrh5drnIa4gC*DZxQtCBbrRnWcuH;H9=c>fO-3 zy?pfK|MA<)^WPuzzGpJ)8#^Nre_J;`hC*OBU^kQDaW;Yl+qH(Z`>E@MVkh)Y?gA_u zA4z_F0Oq^4xNss%O*ZkDeJn!@~g{+`W?JTelQMd{Rudu%xw79Ip?nQZYCPGAuCm8x#5q=Y%yS z?3-&)A;Svyrc$G%=tHuV5}I*_p_E2SLAqf-o5MEn^57lsM5E zXxph0{|cFE8fB!hLI_`Je=1G)fC1uaTPR+BRpI@S?_5xtC`j^Z9m*gGUYCer9*ZgL zFh(!4SFc~*d-w=AOx=z2-K^Hn5082uFY4_M1FCz6US4l#-&qg80XXosic)ucC7B^h zerac%8`?$PO^JQAgfZ7j@d0y(G)8)W|@8Ge)f1CwOfnm<15G9+; zE4c7i@>|q^0%U3)QVlC*|bF3ydHM>inu;iV1Tvooofghf~n z2@UGOilq=4rqgl2G?s=z63uOOzIOA?vfd4BKR?;Smmhyx_r0m#@&(oy2up)L%q)fu zt2>Ulq1p5$A`Ar>e=}F41Vh7BTZRA#s=2`uuG(gY8&km|fuOJkQb7wzE6LZ3pZERc zv4zx0jqW%bDuc~#x%H-W2sP7kywr$Xi!!MMn|roSEDJ`6nKYsSrL(Whb2cME`n;R2 z3X5fEC&Q344=EQ>DCkJu=srAjJDj%pnd15bf7@q!_;e<{Y&n;dquuSW5O3@#snR1oYv6S+Is| zjYb%_c!sU&-o?@eTP+j-f;~C&CSZg8aS{b&kyyyl+ESk=Xlad9s9&A1oRD&xc3_!Sw*Geye{XIv;aal0cd znUWfm)K6(%hzRI$yrR00mJUSFLdiH%vX!#Cktu|pe+{lehP;xP=tZXPq9B3D%Tl_c z`of92A{n9VxCBV2TJR~BQ*BaD;9{zvofb9mD(ciYt_VXBjfnlAjG$r8n2ZYG6{-<` zSJmXQAMa=O^yMea5^}!1Jgob6ev>oL){Fp2sK8X{Z|E{E!@@X#indvsOHl^{PJWdy zJz(M;e;#Zci6ua6dWsBG|6qYAN0gSp)}h*fFk(R3akX*=wkZwCqFZ_5j<=3EVKYz3 zkO$4HpoLSaeiv(d(oIvwO=1?lq4!BnCILnFLaIIy!Zwd%3B)#+Llz4pp)$Fjc!n03 zzwxOYjlYW^q~You5>aGszZSQD8{0c--uyC(e=nT^r=$fiAC)Ww(nICYDJJw|>MLig zu#yC3esCIPA-2P@1B<}=>6k`1CcC(V5!_Y1Nkf$cawuZB*z`?WAU2^-%IS}y*Lig# zRDg_zr$*+l1<9iN96F}o@n#N{{)sUtbtLtkYU9tEx4YDGKvV=QF68d=J_ltL)`A=o ze_-1xXT?VACnnN~^KxA9tOou#-gDQ9 zrFei@Ps>{_kRVfuBHJV+V$Gsmgf5dz-rNsX@a0(*78P2_gc6EsPbaW z4-hx}qM1WEhpk~NMXvljR7cW9Bi!ssf1}y{7AlxbNbl;7doppN#3n32T^AqYxQOWn6$q( z!)y+78z^w|7du4NT{M#&H$-75E;pmOx)z|MSS;3tkn%73t($g7ifBus7TCBNf2HMe z=Z0Y=ut7tD5Y$iNOGqt})z{3ox0q9@@5xhU5%a5&IsB@^1}6{+`Xo1Oh~GK^0TzVL zUn&uXNRB*TnF>6eBap&+>m=n9{hAG$M`Ry1EbzMcmXpWy%TNRRq@aIo^xeqbN7;MV ztd;&#{7qXT0ed~Edq;moDyd@ifBY_RFwYivC|bTPPzi_^o*~I_XJHFjC|lFtC>(zU z>|F`UR00_B7D`P5DBYN}32ABpU+Q)o z+v5mrQMS@8{kD$J_GYT zU>-hHj?%H}wf_)f0*LOwf0=Z1So=Xvh5s^!Ll33DZh;olZ^zZDr%DWjk{Sps7y#)9 zGuY0{h@pa#+rYlPoVT}!^YZasHoNyr@)%f6{&LyHM+Vp`I4*iK!kY$6t~AMFnb(nqoecWQg}16m-MfM7D0Uu%6-qmoR%!9k$Am zW{N1K1Fxh)pK9JZSRz8VF0Y9p6U@HN?DgAxhp-xN_hhyC(?ZVPg2@8d(P@6o70V?@ z`Wxu8eRcHBj9~h`e+AO%FS`rbhW}*56w@aJON^9UL}4(YMgBLx8wt?8AR!u~EAv)w z?S#MpYi{kbVA+HNFKU7UFyrR0mk6rabsDJqOG>}wOqX{IWW3|=0NU~wR|J0&SMoMV zC1HG!kvPdlI8LnKw2G@IdODpGdmXf0M5WXA)(R-*ZCY>Vf9to$`F37Eew#0^@86WS z+ut(4NwTPtr{Q$<*KO(0UMa<>SkBg{*8UEw)2@}q-D#RFM>fv{8wNy!^S?LH{l44Z z8dPF8+xP2iLVLpGF|wwziCiFqVBW|R8h8lCd@W2%6c2;fJ^NiS8Ki9&w1_>X%ilYo zp8#EgbQ}ZSf8g16k-asUIA5(;HMq?@2X#@x26{qN%KrMH4bGBk3kv;hqr)%a7kT)* z7tG@hX8-v5_>PqC-piH9MrB&$7>NKC&R~@o;PSuWk@0Qyl1>7`w*_y3TJC0ucL@IK zi|~UlR=dM3k;qWz^atejiL_1gvm@ ztl-Y*(cfQNjoh@GX9mje?5(-H2c!ewxoD-#WQbnqF@Oe$9^sE diff --git a/dev-ada/gnatdoc/Manifest b/dev-ada/gnatdoc/Manifest index 99ee57627b9d..0235ce2c2576 100644 --- a/dev-ada/gnatdoc/Manifest +++ b/dev-ada/gnatdoc/Manifest @@ -1,5 +1,5 @@ DIST gnatdoc-24.0.0.tar.gz 113089 BLAKE2B e26310504863b8b88391c715a1ecbc9657bd03c6bd4f9b6b67b20f2a5d00f8a9ed3dd537409538999eeeb893e407da552bd02ed05b8b6c3f655f57ac55e616b9 SHA512 95b33fc556ba25611faca6b64a5599b98471bf687d13f10727300c62305cd45585d59ea77a7c64d33619e324508951624a0855535464a6b9b5c6dd27d2a56f83 DIST gnatdoc-25.0.0.tar.gz 179534 BLAKE2B c3441f91eec0cbbf87602a9c4c650cc651982668ef212810e3fc037f9389f939c5e6831ba6d57abdd66e91b3d17fe76916b99dfcd3c91a7a9f7e44fb1ea467fa SHA512 64814a48dfda70c9de7590061fb20960f99e07d9b9eadf4a5d97dd56e68fcb133a4d51f1c9c6d3c1f29d4c5bc2e7565e02305ed16968e4e37a42fd5374466ef3 -EBUILD gnatdoc-24.0.0.ebuild 1516 BLAKE2B 73d93049c9bda46d1042773dba3a5ef7e16ba4d21c0082284cdbeac09dee9ab476d7598b32161cda6817af806b1d5e3e4fd161dd367bc1a421e285674f52f18e SHA512 6ffc6441fd332224876af0aaa3ab51475e115fd74c8ae4df66dc4c22653333f323695e7bf9f00b99a03ed021fa91fbf38a94eabbfa3ef2bad71de433f9186cfa -EBUILD gnatdoc-25.0.0.ebuild 1947 BLAKE2B 3bbb09b2ca15725104463e20ca30f7629559ba19e04b9c5aefe1e8745da3cd67ca4b7fd9b1daf25e395ade47f5c3165ab0e7f1c1d95ac3d7fee29e463ad3450d SHA512 5e631d474d92459be06798e8efb4a2328f1b89457f3fc9de57536c490f77cf2c08e5223704e11a3b53cf7ad2392ab4cd774056ae959e48f826ea16e593322d2d +EBUILD gnatdoc-24.0.0-r1.ebuild 1519 BLAKE2B 74432e6aca8bcc5be79b055d967203248c9df4d09586d1df38da3f97930d13f76e4e7a8a85e65d32c71bc25a7a7efc63833c00baa9ec99b64c8937e0b48ece17 SHA512 66d4c4d95c29fe24c046083b077ed0b464d00d22573756d6f1a71ef4a64c6929b8bc66a80e4cc791d28a417ddb590050d90cef01e56796475779c6d5795b1f77 +EBUILD gnatdoc-25.0.0-r1.ebuild 1950 BLAKE2B 859fd26d6163e56d4c871dee66f1fdc85fd5d4fb20e5de6d645b06690bee87d88db5632bd005fca5d828d6d947651027dddeea00ed3aac1365884bc211cb097f SHA512 7ec13bcd05ef3ebbb314b4cdd4350b7925a6a86534c78c1d67b502f6680a4ca9468747150eabf8cf92a8ac9ac9d26e87bdf9abadc0c12ba4858dd6cc09f85122 MISC metadata.xml 379 BLAKE2B 1b1d66704d200e15a48cbbb2be57ec97582b96c73cd531b2319391b8ee62faee5a84d8a2b43f808af84ee520fd499e84a6e0559fc66b45ec082dffe562348bbd SHA512 3d211ccb06695365b74f911bbf48561a999d05d196a198a2e3dc7b840039b6e666cdaa97a32f12d8abf67c23616fb3d29d9b302a73d1724fe86ff518740ff0af diff --git a/dev-ada/gnatdoc/gnatdoc-24.0.0-r1.ebuild b/dev-ada/gnatdoc/gnatdoc-24.0.0-r1.ebuild new file mode 100644 index 000000000000..ac707b0fd08d --- /dev/null +++ b/dev-ada/gnatdoc/gnatdoc-24.0.0-r1.ebuild @@ -0,0 +1,46 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ADA_COMPAT=( gnat_2021 gcc_12 gcc_13 ) +inherit ada multiprocessing + +DESCRIPTION="GNAT Documentation Generation Tool" +HOMEPAGE="https://github.com/AdaCore/gnatdoc" +SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/v${PV}.tar.gz + -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +RESTRICT="test" + +RDEPEND="${ADA_DEPS} + dev-ada/gnatcoll-bindings[${ADA_USEDEP},gmp,iconv(+),shared,static-libs,static-pic] + dev-ada/gnatcoll-core[${ADA_USEDEP},shared,static-libs,static-pic] + dev-ada/gpr[${ADA_USEDEP},shared(+),static-libs] + dev-ada/gpr-unit-provider[${ADA_USEDEP},shared,static-libs] + dev-ada/langkit[${ADA_USEDEP},shared(+),static-libs,static-pic] + dev-ada/libadalang[${ADA_USEDEP},static-libs,static-pic] + dev-ada/libgpr[${ADA_USEDEP},shared,static-libs,static-pic] + dev-ada/markdown[${ADA_USEDEP}] + >=dev-ada/VSS-24.0.0[${ADA_USEDEP},static-libs] + dev-ada/xmlada[${ADA_USEDEP},shared,static-libs,static-pic]" +DEPEND="${RDEPEND}" + +REQUIRED_USE="${ADA_REQUIRED_USE}" + +src_compile() { + gprbuild -v -j$(makeopts_jobs) -p -P gnat/libgnatdoc.gpr \ + -XLIBRARY_TYPE=relocatable || die + gprbuild -v -j$(makeopts_jobs) -p -P gnat/gnatdoc.gpr \ + -XLIBRARY_TYPE=static || die +} + +src_install() { + gprinstall -v -p -P gnat/libgnatdoc.gpr \ + -XLIBRARY_TYPE=relocatable --prefix="${D}"/usr || die + gprinstall -v -p -P gnat/gnatdoc.gpr \ + -XLIBRARY_TYPE=relocatable --prefix="${D}"/usr || die +} diff --git a/dev-ada/gnatdoc/gnatdoc-24.0.0.ebuild b/dev-ada/gnatdoc/gnatdoc-24.0.0.ebuild deleted file mode 100644 index f872d8cbbe7e..000000000000 --- a/dev-ada/gnatdoc/gnatdoc-24.0.0.ebuild +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2022-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -ADA_COMPAT=( gnat_2021 gcc_12 gcc_13 ) -inherit ada multiprocessing - -DESCRIPTION="GNAT Documentation Generation Tool" -HOMEPAGE="https://github.com/AdaCore/gnatdoc" -SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/v${PV}.tar.gz - -> ${P}.tar.gz" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~x86" -RESTRICT="test" - -RDEPEND="${ADA_DEPS} - dev-ada/gnatcoll-bindings[${ADA_USEDEP},gmp,iconv(+),shared,static-libs,static-pic] - dev-ada/gnatcoll-core[${ADA_USEDEP},shared,static-libs,static-pic] - dev-ada/gpr[${ADA_USEDEP},shared,static-libs] - dev-ada/gpr-unit-provider[${ADA_USEDEP},shared,static-libs] - dev-ada/langkit[${ADA_USEDEP},shared(+),static-libs,static-pic] - dev-ada/libadalang[${ADA_USEDEP},static-libs,static-pic] - dev-ada/libgpr[${ADA_USEDEP},shared,static-libs,static-pic] - dev-ada/markdown[${ADA_USEDEP}] - >=dev-ada/VSS-24.0.0[${ADA_USEDEP},static-libs] - dev-ada/xmlada[${ADA_USEDEP},shared,static-libs,static-pic]" -DEPEND="${RDEPEND}" - -REQUIRED_USE="${ADA_REQUIRED_USE}" - -src_compile() { - gprbuild -v -j$(makeopts_jobs) -p -P gnat/libgnatdoc.gpr \ - -XLIBRARY_TYPE=relocatable || die - gprbuild -v -j$(makeopts_jobs) -p -P gnat/gnatdoc.gpr \ - -XLIBRARY_TYPE=static || die -} - -src_install() { - gprinstall -v -p -P gnat/libgnatdoc.gpr \ - -XLIBRARY_TYPE=relocatable --prefix="${D}"/usr || die - gprinstall -v -p -P gnat/gnatdoc.gpr \ - -XLIBRARY_TYPE=relocatable --prefix="${D}"/usr || die -} diff --git a/dev-ada/gnatdoc/gnatdoc-25.0.0-r1.ebuild b/dev-ada/gnatdoc/gnatdoc-25.0.0-r1.ebuild new file mode 100644 index 000000000000..5f8b0d94918a --- /dev/null +++ b/dev-ada/gnatdoc/gnatdoc-25.0.0-r1.ebuild @@ -0,0 +1,73 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..13} ) +ADA_COMPAT=( gcc_12 gcc_13 gcc_14 ) + +inherit ada python-single-r1 multiprocessing + +DESCRIPTION="GNAT Documentation Generation Tool" +HOMEPAGE="https://github.com/AdaCore/gnatdoc" +SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/v${PV}.tar.gz + -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +REQUIRED_USE="${PYTHON_REQUIRED_USE} + ${ADA_REQUIRED_USE}" +IUSE="doc static-libs static-pic" + +RDEPEND="${ADA_DEPS} + ${PYTHON_DEPS} + dev-ada/gpr:=[${ADA_USEDEP},shared(+),static-libs?] + dev-ada/markdown:=[${ADA_USEDEP}] + >=dev-ada/VSS-24.0.0:=[${ADA_USEDEP},static-libs?] + dev-ada/libadalang:=[${ADA_USEDEP},static-libs?,static-pic?] + dev-ada/libadalang:=[${PYTHON_SINGLE_USEDEP}] +" +BDEPEND="dev-ada/gprbuild[${ADA_USEDEP}]" + +pkg_setup() { + python-single-r1_pkg_setup + ada_pkg_setup +} + +src_compile() { + build() { + gprbuild -v -j$(makeopts_jobs) -p -P gnat/libgnatdoc.gpr \ + -XLIBRARY_TYPE=$1 -cargs:Ada ${ADAFLAGS} -cargs:C ${CFLAGS} \ + || die + } + build relocatable + use static-libs && build static + use static-pic && build static-pic + gprbuild -v -j$(makeopts_jobs) -p -P gnat/gnatdoc.gpr \ + -XLIBRARY_TYPE=relocatable || die + if use doc; then + emake -C documentation/users_guide html + fi +} + +src_test() { + gprbuild -v -j$(makeopts_jobs) -p -P gnat/tests/test_drivers.gpr \ + -XLIBRARY_TYPE=relocatable || die + PATH="${S}/bin:$PATH" \ + ${EPYTHON} testsuite/testsuite.py || die +} + +src_install() { + build() { + gprinstall -v -p -P gnat/libgnatdoc.gpr \ + -XLIBRARY_TYPE=$1 --prefix="${D}"/usr || die + } + build relocatable + use static-libs && build static + use static-pic && build static-pic + gprinstall -v -p -P gnat/gnatdoc.gpr \ + -XLIBRARY_TYPE=relocatable --prefix="${D}"/usr || die + use doc && HTML_DOCS=( documentation/users_guide/_build/html/* ) + einstalldocs +} diff --git a/dev-ada/gnatdoc/gnatdoc-25.0.0.ebuild b/dev-ada/gnatdoc/gnatdoc-25.0.0.ebuild deleted file mode 100644 index 347799ade291..000000000000 --- a/dev-ada/gnatdoc/gnatdoc-25.0.0.ebuild +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright 2022-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{11..13} ) -ADA_COMPAT=( gcc_12 gcc_13 gcc_14 ) - -inherit ada python-single-r1 multiprocessing - -DESCRIPTION="GNAT Documentation Generation Tool" -HOMEPAGE="https://github.com/AdaCore/gnatdoc" -SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/v${PV}.tar.gz - -> ${P}.tar.gz" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~x86" -REQUIRED_USE="${PYTHON_REQUIRED_USE} - ${ADA_REQUIRED_USE}" -IUSE="doc static-libs static-pic" - -RDEPEND="${ADA_DEPS} - ${PYTHON_DEPS} - dev-ada/gpr:=[${ADA_USEDEP},shared,static-libs?] - dev-ada/markdown:=[${ADA_USEDEP}] - >=dev-ada/VSS-24.0.0:=[${ADA_USEDEP},static-libs?] - dev-ada/libadalang:=[${ADA_USEDEP},static-libs?,static-pic?] - dev-ada/libadalang:=[${PYTHON_SINGLE_USEDEP}] -" -BDEPEND="dev-ada/gprbuild[${ADA_USEDEP}]" - -pkg_setup() { - python-single-r1_pkg_setup - ada_pkg_setup -} - -src_compile() { - build() { - gprbuild -v -j$(makeopts_jobs) -p -P gnat/libgnatdoc.gpr \ - -XLIBRARY_TYPE=$1 -cargs:Ada ${ADAFLAGS} -cargs:C ${CFLAGS} \ - || die - } - build relocatable - use static-libs && build static - use static-pic && build static-pic - gprbuild -v -j$(makeopts_jobs) -p -P gnat/gnatdoc.gpr \ - -XLIBRARY_TYPE=relocatable || die - if use doc; then - emake -C documentation/users_guide html - fi -} - -src_test() { - gprbuild -v -j$(makeopts_jobs) -p -P gnat/tests/test_drivers.gpr \ - -XLIBRARY_TYPE=relocatable || die - PATH="${S}/bin:$PATH" \ - ${EPYTHON} testsuite/testsuite.py || die -} - -src_install() { - build() { - gprinstall -v -p -P gnat/libgnatdoc.gpr \ - -XLIBRARY_TYPE=$1 --prefix="${D}"/usr || die - } - build relocatable - use static-libs && build static - use static-pic && build static-pic - gprinstall -v -p -P gnat/gnatdoc.gpr \ - -XLIBRARY_TYPE=relocatable --prefix="${D}"/usr || die - use doc && HTML_DOCS=( documentation/users_guide/_build/html/* ) - einstalldocs -} diff --git a/dev-ada/gpr/Manifest b/dev-ada/gpr/Manifest index 15768b42e645..81b945d37ac4 100644 --- a/dev-ada/gpr/Manifest +++ b/dev-ada/gpr/Manifest @@ -1,5 +1,7 @@ +DIST gpr-24.2.0-next.tar.gz 1524692 BLAKE2B 0e395f7d913b5b6344bb2d89d7471971ea7fb382bcba8123bcbd3703371b145493ed17560f0b7602f8fa5e89fbbd1a5e24d93763fcf493832a332b9463e96e16 SHA512 4d824a2eddd74fca5b2f51336bc2b8e3a35fac4901ff41ac0d7704aa81474357e0733b96da0fe9d3a09a4b21885812bf29bdeb330025ae466089c9dbefcd8d51 DIST gpr2-with-gprconfig_kb-25.0.tgz 1772855 BLAKE2B f4bcde7f2ad951d00b7b03b2d49120c301836a2bc676de0c0f7c493573a03b15bc20a6fd7f8d3034a063f6227b47f54468efe14260de1bb52a1da6bc4d5b87d6 SHA512 70fe0fcf541f6d3d90a34cab1638bbc0283dcd765c000406e0cfb73bae1817b30ddfe73f3672247a97c6b6bfc41900bc96a4440ca0c660f9c2f7b9d3cc8f8dcf DIST gpr2-with-lkparser-24.0.tgz 2030278 BLAKE2B ae42fd876a08a654db2db919e6d777ba603d54d6db618e8b8dbdfcfd9313decad092e0a9feae09ca46ec324cd860eaffbb6fa670290d454414677ad7e4a61dc7 SHA512 eda3c693393763da31312733e2bc06e852b867a32b42da6afdddd623051a1d29f7243aabaef3ae50052b22686dce6db62d9823652ce516d79822e4215f4d87b1 EBUILD gpr-24.0.0-r1.ebuild 2326 BLAKE2B 94102422d96b289b3d1b04f243dc7d4a78267111e5ec3d68ea2129b6642ce16e95823cb16c7366e21dd2999014772a56a0cdd5e6fc399e0999c43e65d1b4db5f SHA512 b9813a7de8f82a431a2e743a53e2a9867ac5b33fa9511dddb9490abe823e717b7759e5321b20d23a8c5960688eda33c7b44ce9d45a34d60287cce680b09bab8f +EBUILD gpr-24.2.0.ebuild 2046 BLAKE2B 0b6d9e6ff238c1d652f14113347a2e9bb1cd3f10a91589d35f7d719310c66e6a75cd8a25fc11b18f8721174a425e6ed8f983565a369f3fc0c67e26dc2402ec54 SHA512 719f981fef67713e028fb55a4011350604037c28c5ae6a5c6f45133203673e44e345f96ccef78025dee0ed4c0a9ca6e984d19f3534d00ba36dccc99e6249842d EBUILD gpr-25.0.0.ebuild 3419 BLAKE2B 2286f4a5f845d36548489178d091db3051313caaa83193870b381a7295880839b275530931313f38f7e3cbe6606d71678f4c41231357655f1d7ed5a5d62895bd SHA512 af7d3120d39bf74cda068f549f9bb04483509b3bd86f7d6eb6f639223c9f5b48c6206c4d7efc7cd1add50620eb11cf73bf4d5493cf00765c8fb9b338bc37f16a MISC metadata.xml 425 BLAKE2B f43600b21f72ac0a1e54e757848b52c070dafa69d36c142d60d7693cdd17c9f3049948da3b6c069a46a3b1e836bac18d268823a80c037f4e14e08f4822b8e1a3 SHA512 c6df0aded61f6d481d64a331b5db0da30dd6a75c56cc051ad5ba7f90cc7376f17ede0b7c2f94acd110ccc104773c138d961040b272edc7a11f1671d548008e7e diff --git a/dev-ada/gpr/gpr-24.2.0.ebuild b/dev-ada/gpr/gpr-24.2.0.ebuild new file mode 100644 index 000000000000..1a0d4ca6f327 --- /dev/null +++ b/dev-ada/gpr/gpr-24.2.0.ebuild @@ -0,0 +1,70 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ADA_COMPAT=( gcc_14 ) + +inherit ada multiprocessing + +DESCRIPTION="LibGPR2 - Parser for GPR Project files" +HOMEPAGE="https://github.com/AdaCore/gpr" +SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/v${PV}-next.tar.gz + -> ${P}-next.tar.gz" + +S="${WORKDIR}"/${P}-next + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="static-libs static-pic" +REQUIRED_USE="${ADA_REQUIRED_USE}" + +RDEPEND="${ADA_DEPS} + dev-ada/xmlada[${ADA_USEDEP},shared,static-libs?,static-pic?] + dev-ada/gnatcoll-core[${ADA_USEDEP},shared,static-libs?,static-pic?] + dev-ada/gnatcoll-bindings[${ADA_USEDEP},shared,static-libs?,static-pic?] + dev-ada/gnatcoll-bindings[iconv(+),gmp] +" + +DEPEND="${RDEPEND} + dev-ada/gprconfig_kb[${ADA_USEDEP}] + dev-ada/gprbuild[${ADA_USEDEP}]" + +src_compile() { + emake GPR2KBDIR=/usr/share/gprconfig .build/kb/config.kb + build () { + gprbuild -j$(makeopts_jobs) -m -p -v -XLIBRARY_TYPE=$1 \ + -XGPR2_BUILD=release -XXMLADA_BUILD=$1 gpr2.gpr \ + -largs ${LDFLAGS} \ + -cargs ${ADAFLAGS} || die "gprbuild failed" + } + build relocatable + use static-libs && build static + use static-pic && build static-pic + + gprbuild -p -m -v -j$(makeopts_jobs) -aP . -XGPR2_BUILD=release \ + -XLIBRARY_TYPE=relocatable -XXMLADA_BUILD=relocatable \ + tools/gpr2-tools.gpr \ + -largs ${LDFLAGS} -cargs ${ADAFLAGS} || die +} + +src_install() { + build () { + gprinstall -XLIBRARY_TYPE=$1 -f -p -v -XGPR2_BUILD=release \ + --prefix="${D}/usr" -XXMLADA_BUILD=$1 \ + --build-name=$1 --build-var=LIBRARY_TYPE \ + --build-var=GPR2_LIBRARY_TYPE gpr2.gpr || die + } + build relocatable + use static-libs && build static + use static-pic && build static-pic + gprinstall -p -f -v -aP . -XGPR2_BUILD=release --prefix="${D}/usr" \ + -XLIBRARY_TYPE=relocatable -XXMLADA_BUILD=relocatable \ + --build-name=relocatable --mode=usage tools/gpr2-tools.gpr || die + + einstalldocs + + rm "${D}"/usr/bin/gprconfig || die + rm -r "${D}"/usr/share/gpr/manifests +} diff --git a/dev-ada/lal-refactor/Manifest b/dev-ada/lal-refactor/Manifest index 105381da7d55..1a78cd6059d2 100644 --- a/dev-ada/lal-refactor/Manifest +++ b/dev-ada/lal-refactor/Manifest @@ -1,3 +1,5 @@ DIST lal-refactor-0_p20231027.tar.gz 211389 BLAKE2B 3963a99b785f3559ef176cfda8c289ce9ea2ee79da913392bc4f33f9e5821f3fba28cf1410b299ba717f3433eca101e3574fac18d1f3ad2dd0308153332dd200 SHA512 28388fbecab471a8d5dda1890dbe00f90e1c8dba96f253e97772f699d4953ca46c56db93d69b781b8642562b0c5376e28cbff51f8dd62d90dfafc1d65567d1bd +DIST lal-refactor-25.0.0.tar.gz 223818 BLAKE2B 6f53a278880b9d65ecd90c779323421e3cd3067ff920fc5fd851c1ded22a9819f50efa3eb6030ceb5f60d74070433d1953fbd0b194cd552733461aca6fbe3008 SHA512 c93136c3c05410bcb72bf9fbde409b371851c5f0e394670d8dd43d09219d756e10fef126911bbf6656a640c31b467fa49f826316e55a71f4f61a50952bb6980c EBUILD lal-refactor-0_p20231027.ebuild 2212 BLAKE2B bf12950383d7c7e378dede469ff484370bb672fbe6a9842c95e86f340b564316c4dc52695524f628965d2fc27c42fd3daaee23e69ea6a45e106e1d467fdcafa2 SHA512 7ed622b7266aca22202dafd500c84b022c0c69601c20526303e9f33b609e895b275160491ce97e5b55d63b835333f4a8da65e42e9f57def0274cef4161037aa9 +EBUILD lal-refactor-25.0.0.ebuild 1726 BLAKE2B 5b2f9aba38619455b9cac1e305872f8dfd44b44231d84d33a93f22f9260065c56c9d62450491fb501f759072b444bf077b3fb9d084b50ce27d622c400708a7a2 SHA512 033174f7658015225ea215e9d48422e483d44040e3f150075634daa393117e9e25b780401460a29a0edfd71055ad14c77c386535cf54cd98c93d2087e145dec6 MISC metadata.xml 434 BLAKE2B ef7b69108973686b5f653d8bee95d6dcf23195e474c5351145ad3831ef006b7ca7cbe5fdc3f85d41d9fb6c4f6701d93242f5464f3edaf44d29f8d8f8d4369cd2 SHA512 e42151651e69b2a3acd58664aad7900bd41dc6692fb08f5e9a1f1eee104634e4d3919cf35063a97711877d72e15d3734e0ede2046d5e7e6e671a713fff4eb6ec diff --git a/dev-ada/lal-refactor/lal-refactor-25.0.0.ebuild b/dev-ada/lal-refactor/lal-refactor-25.0.0.ebuild new file mode 100644 index 000000000000..905272619adf --- /dev/null +++ b/dev-ada/lal-refactor/lal-refactor-25.0.0.ebuild @@ -0,0 +1,57 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ADA_COMPAT=( gnat_2021 gcc_12 gcc_13 gcc_14 ) +inherit ada multiprocessing + +commitId=a5997083efc0ae97ec089b18931c765d43301072 + +DESCRIPTION="Refactoring tools for the Ada programming language" +HOMEPAGE="https://github.com/AdaCore/lal-refactor" +SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/v${PV}.tar.gz + -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="static-libs static-pic" +REQUIRED_USE="${ADA_REQUIRED_USE}" + +RDEPEND="${ADADEPS} + dev-ada/libadalang-tools:=[${ADA_USEDEP},shared,static-libs?,static-pic?]" +BDEPEND="dev-ada/gprbuild[${ADA_USEDEP}]" + +src_compile() { + build () { + gprbuild -v -k -XLAL_REFACTOR_LIBRARY_TYPE=$1 -XLIBRARY_TYPE=$1 \ + -P gnat/lal_refactor.gpr -p -j$(makeopts_jobs) \ + -largs ${LDFLAGS} -cargs ${ADAFLAGS} || die + } + build relocatable + use static-libs && build static + use static-pic && build static-pic + + gprbuild -v -k -XLAL_REFACTOR_LIBRARY_TYPE=relocatable \ + -XLIBRARY_TYPE=relocatable -Pgnat/lal_refactor_driver.gpr -p \ + -j$(makeopts_jobs) -largs ${LDFLAGS} -cargs ${ADAFLAGS} || die +} + +src_install() { + build () { + gprinstall -XLAL_REFACTOR_LIBRARY_TYPE=$1 -XLIBRARY_TYPE=$1 \ + --prefix="${D}"/usr --sources-subdir=include/lal-refactor \ + --build-name=$1 --build-var=LIBRARY_TYPE -P gnat/lal_refactor.gpr \ + -p -f || die + } + build relocatable + use static-libs && build static + use static-pic && build static-pic + gprinstall -XLAL_REFACTOR_LIBRARY_TYPE=relocatable \ + -XLIBRARY_TYPE=relocatable --prefix="${D}"/usr \ + -P gnat/lal_refactor_driver.gpr -p -f || die + + einstalldocs + rm -rf "${D}"/usr/share/gpr/manifests +} diff --git a/dev-build/Manifest.gz b/dev-build/Manifest.gz index 5741fc7b92ee4ee117690c2437ab1e939fc56ab4..99d49380daafa1e2d5dfb46c6ab9bb47476e70eb 100644 GIT binary patch delta 7381 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

A%!)wZ&SBfyLL<-MVZ_WS8RgClha(7kOa&R* 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 delta 22647 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 diff --git a/dev-lang/crystal/Manifest b/dev-lang/crystal/Manifest index a107aa8cf01a..134a2a1629b6 100644 --- a/dev-lang/crystal/Manifest +++ b/dev-lang/crystal/Manifest @@ -8,7 +8,10 @@ DIST crystal-1.14.1-3-linux-x86_64.tar.gz 51717984 BLAKE2B da2f977d8a81abb6085ea DIST crystal-1.14.1.tar.gz 3726868 BLAKE2B add2e478c3dbb5f8fce77c8dfb781858a1074e411f6899997052fd5f037fc6dcb86dd4f2aba432301912cac645dfaad4e916112c4d47c8247a9ea681270f945d SHA512 f16ba4e2b41ee9c1a4ef98bd026d843e7c8f831c592a919d79b3addea4647eea0eefefc8e964e1e187b8bfb0aed0829e2f5f5b120e3116a359616c0c043f9d3c DIST crystal-1.15.0-1-linux-x86_64.tar.gz 51497623 BLAKE2B 03059b38b1df3a035c82472f0691c3b37d9b82ae90e0cae922a36c069750e5d00444dc5759fd5cefee294fbde20b17aac233323067256caf161ef542d27e51d5 SHA512 ee0a85d98fd1170c97380184bd845cafd426765bf633d0d26885e970a5e15241d76a93a11c1a207ddedef9a1d76978e5f32be17b074cd3c03c3f5cc5b7e064b9 DIST crystal-1.15.0.gh.tar.gz 3812860 BLAKE2B a6b52007d6a4975d2011104f65cec932300bb6f84f497bfda138d987e844cb025d4690b0f74335aff42295c5d355ac73371cab86db87ca9819c1885d98f76bd8 SHA512 ea07de4b9c6c46e96f05d816d0504f8b0206e89fe7e4236038dc3b0875e52e89c711cc798b8fc30f66b02dd48cec70e0ea76160f14447577761411a41f1b28fa +DIST crystal-1.15.1-1-linux-x86_64.tar.gz 51499223 BLAKE2B 11f94a67c97215f410c4a5987abaaa34d1264cdb4340a34223843e33152697125de05acc1a47604bb85456e1fd507fc854f38498adcc7b19492cb87c160184db SHA512 94faf3859212f0b9b80b4f2ce46bfa8a90cbf9d2c71f0127453baeff6ca8d1d76cde36d9af2c7bb6019e809de08e8eafdc39cc2621695d05c612d2fc8765f303 +DIST crystal-1.15.1.gh.tar.gz 3814922 BLAKE2B 0667e93e3c2b7b80d44347377303195161bfee1709fa64e78fd978cc3409813836542642ac04054d94bf280828a29e592af6db8fdbd4a7bf8f04e8ef62ca209e SHA512 3c552bf4acb06a5e0e3adae2a22cc42c8a003b91a3c9f2ce4cc80d790f5981e94178ad0667504f4d709dfa3f1bc9505ef8ae42b8eb79489f4d1396bd9fc456ff EBUILD crystal-1.14.0.ebuild 2632 BLAKE2B 6284e97c98096fd14101a4308d2db3eb265d26241f181658ee24615622ef3686c4a79b47d58536b127c035dece0e63f1ae35f6605af7b73f362a166307810f80 SHA512 e27bb51f2dd874cb8633ed0ad594aaa512676d841a9d1fd991169a54595c73ee4ff40f665df0b5d4a012a43f85ad5a90480e59b547ae42a77a204be545716579 EBUILD crystal-1.14.1.ebuild 2633 BLAKE2B 1945457158a0d549f5be113342d47b3919af5bd80030f8ac3b4a0279a1054c11b440aa130e616eb6fde27b9217dc453623d2b1e32f2e0abe0997a15564dd3a6f SHA512 61d9dba45711ccbadf279d53923c6c543d01ca6d2d3c5fa13cf105d16ab9d67e64a44fc9f609106eac0b470dd0ff263ad8eff1b90f30e4de2e7d354ead4ceb20 EBUILD crystal-1.15.0-r1.ebuild 2785 BLAKE2B cf0495de84b1af4d292bd05c153db8a1412dcfed2a4bef00abd4c6b984d368b822f162c09ab0177f0b070e39aae2cbfc3582630c51f6f7bfe4a9c6efa83b406e SHA512 5333b4f5456ab7a58c3df1669627dae50e9a82ab71c77ddf564fba73e3d182c29721a7ac624b3e1ab0584f79097d6ca37f0c313b420d29507aedafb4c1de7b94 +EBUILD crystal-1.15.1.ebuild 2785 BLAKE2B cf0495de84b1af4d292bd05c153db8a1412dcfed2a4bef00abd4c6b984d368b822f162c09ab0177f0b070e39aae2cbfc3582630c51f6f7bfe4a9c6efa83b406e SHA512 5333b4f5456ab7a58c3df1669627dae50e9a82ab71c77ddf564fba73e3d182c29721a7ac624b3e1ab0584f79097d6ca37f0c313b420d29507aedafb4c1de7b94 MISC metadata.xml 762 BLAKE2B 591f38c882318a6564501cc61abe6222264b65adeaffaf3b23d959ee86b83bae33eaf99029229705f92070fa539fd6d63d8242afc38475904483a9a0b997effd SHA512 ea223d568a3c336a43b183efc61bd1f1a9d1e5e0e8d963275e0b23ee879551bc7d8aae797b1e2edba49d119ad306692599eb535c5d164ebee0c6721dfeab78dc diff --git a/dev-lang/crystal/crystal-1.15.1.ebuild b/dev-lang/crystal/crystal-1.15.1.ebuild new file mode 100644 index 000000000000..573dc999fa39 --- /dev/null +++ b/dev-lang/crystal/crystal-1.15.1.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +BV="${PV}-1" +BV_AMD64="${BV}-linux-x86_64" + +LLVM_COMPAT=( {18..19} ) + +inherit llvm-r1 multiprocessing shell-completion toolchain-funcs + +DESCRIPTION="The Crystal Programming Language" +HOMEPAGE="https://crystal-lang.org/ + https://github.com/crystal-lang/crystal/" +SRC_URI=" + https://github.com/crystal-lang/crystal/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz + amd64? ( + https://github.com/crystal-lang/crystal/releases/download/${BV/-*}/crystal-${BV_AMD64}.tar.gz + ) +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" +IUSE="doc debug llvm-libunwind" +RESTRICT="test" # Upstream test suite not reliable. + +DEPEND=" + dev-libs/boehm-gc:=[threads] + dev-libs/gmp:= + dev-libs/libatomic_ops:= + dev-libs/libevent:= + dev-libs/libpcre2:=[unicode] + dev-libs/pcl:= + $(llvm_gen_dep ' + llvm-core/llvm:${LLVM_SLOT}= + ') + llvm-libunwind? ( + llvm-runtimes/libunwind:= + ) + !llvm-libunwind? ( + sys-libs/libunwind:= + ) +" +RDEPEND=" + ${DEPEND} + dev-libs/libxml2 + dev-libs/libyaml +" + +PATCHES=( + "${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix.patch" + "${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix-2.patch" + "${FILESDIR}/${PN}-1.15.0-remove-enviroment-clearing-tests.patch" +) + +src_prepare() { + default + + # Link against system boehm-gc instead of upstream prebuilt static library + # bug #929123, #929989 and #931100 + # https://github.com/crystal-lang/crystal/issues/12035#issuecomment-2522606612 + rm "${WORKDIR}/crystal-${BV}"/lib/crystal/libgc.a || die +} + +src_configure() { + local bootstrap_path="${WORKDIR}/${PN}-${BV}/bin" + if [[ ! -d "${bootstrap_path}" ]] ; then + eerror "Binary tarball does not contain expected directory:" + die "'${bootstrap_path}' path does not exist." + fi + + # crystal uses 'LLVM_TARGETS' to override default list of targets + unset LLVM_TARGETS + + MY_EMAKE_COMMON_ARGS=( + PATH="${bootstrap_path}:${PATH}" + + CRYSTAL_CONFIG_VERSION="${PV}" + CRYSTAL_CONFIG_PATH="lib:${EPREFIX}/usr/$(get_libdir)/crystal" + + $(usex debug "" release=1) + progress=true + stats=1 + threads="$(makeopts_jobs)" + verbose=1 + check_lld= # disable opportunistic lld + + AR="$(tc-getAR)" + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + LLVM_CONFIG="$(get_llvm_prefix -d)/bin/llvm-config" + ) +} + +src_compile() { + emake "${MY_EMAKE_COMMON_ARGS[@]}" + + use doc && emake docs "${MY_EMAKE_COMMON_ARGS[@]}" +} + +src_test() { + emake std_spec "${MY_EMAKE_COMMON_ARGS[@]}" +} + +src_install() { + insinto "/usr/$(get_libdir)/crystal" + doins -r src/. + + exeinto /usr/bin + doexe .build/crystal + + newzshcomp etc/completion.zsh _crystal + newfishcomp etc/completion.fish crystal.fish + + dodoc -r samples + doman "man/${PN}.1" + newbashcomp etc/completion.bash "${PN}" + + if use doc ; then + docinto api + dodoc -r docs/. + fi +} diff --git a/dev-lang/dafny/Manifest b/dev-lang/dafny/Manifest index 4d97ff4ef4ef..d89b5f046909 100644 --- a/dev-lang/dafny/Manifest +++ b/dev-lang/dafny/Manifest @@ -58,6 +58,7 @@ DIST castle.core.4.4.0.nupkg 916004 BLAKE2B 7404f946c140bc4c22132282a4a12694328b DIST commandlineparser.2.8.0.nupkg 475554 BLAKE2B e55eda3a96441169220e5b081f432d8445d719cbcf8e86527920d44085e6e97934e20aa0266bc5dbdc16ba1a6daa6ece55bc2c63266c9d733ab4992f2fe3e0a1 SHA512 8c276513dfe91e5bc72cfb3b96a0d24411ee3bd2e9832d423f6ade3f3964a011dbb977ca90601750fa133a0a25fe72f66955be7f69a72f5d6b73c7f313094b5f DIST commandlineparser.2.9.1.nupkg 496069 BLAKE2B e2c4b38841f83d6bc10432b8055af90369f1fe0a10105a58b51b44cd48e5d84cb0b5e4b19f444d8c81b38646a62c7c4d11cbd710e92fea68be3ebea6ab98e3f1 SHA512 4f364e45c9668c7e7cc6a922b488f3fa523033c20d7a432694f0a6af05ce528ea0481d8375e2f4f1032c6990347b4803ce9a0e48068c6fe15ec46fb1254f085d DIST coverlet.collector.3.2.0.nupkg 2209480 BLAKE2B 175bcfcb9d6e5177d44f2d607f2411cbe77d6009d096bbc84372e33d7be972d3e39ec39d7f2669b4b91f4bcf44f6ddd46bc91541c0cc4843426e2dd1073bf5c2 SHA512 b63d02a5d3233805b42f0b8cc76f40c8d9f5a0117beb6bdb2ab147f5521bb99919b29d51ff91767ce0bfcab92d25fc8fe794133cadc60da3e009ae18d10fc920 +DIST dafny-4.10.0.tar.gz 6815686 BLAKE2B e6054cd38cbc4edcdb2e6848efd6f09df6b5be7abb22bd9e47d35c71a6d046aee4a10bdefe840d883151b66b4d8075053ba14b5f038d7b1b8104bf40ccc56791 SHA512 fcd3499e4a626db638d2cb1d9c3ed221b559d339171f316c937298ed4c916ddf548ec3a0168b85fbb442e51406040b084799f9770b85c5b836d925568e272cad DIST dafny-4.8.0.tar.gz 6615281 BLAKE2B d891a1955554b194e7af231eff9368549bd2686b43dc1aca8034df4502b7b57297a8384db990ca3268bf992ce2ea562d02d936617b0788a58705d2b0cd91aa98 SHA512 8194f2544b411e00874b174ae4036d6ff21e516e342b3ddd9bc00e70a8140037e5a35f10ef797336b1d4f471ea1596829f0d5446d6a93e436690753dc9b19a31 DIST dafny-4.8.1.tar.gz 6693520 BLAKE2B 4cceaba7aec5809c6f714bc5f79fd92656ec0c30e9188aecb5d153575ab06a244fbc248f91ae64e2e1e9ea15914ebc408ebf2ce197edeac8e021770499d3779f SHA512 cfbeb9d36ee9f63c703048fb8497a54df040d96a3e9d5ee208bb2f6a0795416e49b34ec08052f568b7c50d0a892dc6139c01a2310adbd63d347ddec61c79b56b DIST dafny-4.9.0.tar.gz 6733045 BLAKE2B a13eb0716eb6449c8145b25261d97539b04a6310ba24f3dba30938adc46da99b52016e44683bd7521a66cb11e03b92972dee3da6377bc13c6f519f44a91d6c81 SHA512 3d7493467db5006df02fb912d562a7109b225e7eb33e36b02fcb4ddca8cb4353464f668d578017226a22ffed7dac10424dc8fbd73ee13c8108e3bde219562884 @@ -376,6 +377,7 @@ DIST system.xml.xdocument.4.0.11.nupkg 591353 BLAKE2B 8373fa19c6aafbe6e347db7bb1 DIST system.xml.xdocument.4.3.0.nupkg 591350 BLAKE2B 86f910cef36c056f4a9ea9dc26eea6e01070467d27ac80fb8a0af5e1a572ad5d2169e4f1297cd362fddc9e0309458dbd413fca85ef8e56f97781c218e594604a SHA512 c2d9236a696daf23a29b530b9aa510fb813041685a1bb9a95845a51e61d870a0615e988b150f5be0d0896ef94b123e97f96c8a43ee815cf5b9897593986b1113 DIST system.xml.xmldocument.4.3.0.nupkg 285212 BLAKE2B 0d96ca356543e8e915597e0624dca42f0c7032a2ae9e380a6fba3fbee0dacb9e5f06017893b2b7a8b937dbb4de7d5665fa6648e3bf8df12e0d34e4075c125109 SHA512 22251b3f16de9aa06e091b24baea1b8c95752f0d22266faf34e1fb76b347b23f7910cdaf567058e23d06b7079961090ca70805070a2491add5da4d0271afd133 DIST tomlyn.0.16.2.nupkg 146842 BLAKE2B 5292d6abae6eb514d6a0cf7b69e9ab47599fc1540c83a9861985293267c8137f856a1ec573d7f3b327c9a383905de4572f54d03c889951227549cc1bb8979f78 SHA512 69a4f67cd9a9cf593f79fd8cc0530a030a24a9a04e5b67ba39460668e5125d6859f54f3a3d485ec1e8d0be996f14ef14fb9e380e63c6e648bd1141dc31c58141 +DIST tomlyn.0.17.0.nupkg 147066 BLAKE2B d5507882a8e5f7bd7f2e30c3a4aab342046c0339b884b6527a9e616cd48c603aa97ed411a63cf1e92852994c9dc2768f35edb5854aa5b21f865b17783fc43ba5 SHA512 0dd5717101262fd7833cbb74ab5b95f0f39e39d2b32c90775d6e54359643d17d5c1675b9ef65260b01f5b89c81c3d446ae3bffd598b0a53e6b3a10149f9e01fb DIST validation.2.4.18.nupkg 90984 BLAKE2B 3f319bd60a0b1d6b6d08188b1132c01fd417d7e205bc587edd7ffa0dfba4dc01b9e956df46ef03b0f909ff5b9a859a9620d1ededd8eef21fb6522aab2f12f1f2 SHA512 b49e4b992b40bb656821a7a6dd67fe464af14f0781cf677f58412d108678963f9f9347bd2e1091343c1aa522148ea187a25b45ef0eae5e7ffeb8f833396fcff2 DIST xunit.2.4.1.nupkg 20733 BLAKE2B ee83156610dc4ade1f15c05d97725e1913a9dde04e474c11fe396c37df5d438ab934776e4660d3d139fe34949eb890dae67c0145d3815a8a25cc976b9d2cca7b SHA512 3b0061a5ecfd49166f123aa27375956c00aedb0b22f6ee6a8be629cd583a0532f7476e51ffacad3385245139f1f9d4990c9dc850fc7ef7d097fd85e7c6b40058 DIST xunit.2.4.2.nupkg 25547 BLAKE2B bc9bc5049e9feaa9b658ff11ad3ed277c43089b5c341768425d401b98f5ca212d3f3828232a58716f7ea75e39007fb8ee04498208afed60d28e91ecfff31f1d6 SHA512 f57b8d3bbd04cc285c7913b5697a1b00cf0d6f2c70e35a592d61c8c866d79f3f6a913fa933b39224484bba439e6eee0ab917bf66cd19cbcb1dc3731437556c48 @@ -397,6 +399,7 @@ DIST xunit.extensibility.execution.2.4.2.nupkg 353652 BLAKE2B f10e20d43b8030f51c DIST xunit.runner.visualstudio.2.4.3.nupkg 809588 BLAKE2B ce18ac895657d1efa9752e44148812a452401fa06eba913dad716cfd6743d85a09ffbc0be52276a4b90d039ab76077cca7ab5316b73009aeff2b2fe77dc465f1 SHA512 d8b0d124425db24f98335b332fe55e1a08b39af55d8834dd4a2717fd4be45f3a06ae6cb16427a17adfb31e215dab622856152bb2da715acb1946ec9e935299f4 DIST xunit.runner.visualstudio.2.5.1.nupkg 348549 BLAKE2B 530ffc6b699a1589ad6a7fb5aa826d7238b63ea8dcd13ce5705a3d29a0ba70edeac2d9950cd1a00a13a779add761e4e14335689051a43b4cd662a330734e4df7 SHA512 0cc7887e7c7c3315db31aab79df236db9b5542e0234c27543dd5b11cf917674a8fdebc384e7331663b08d586fcf20628479a20ad7edbed4e61667903e812c6f0 DIST xunit.skippablefact.1.4.8.nupkg 44542 BLAKE2B 3c9b09d5196e8901770099b2e5078d9373e8ebc2da058a9071707d6fee56eab7c876578734f3be5b088db6ae83c8ad81a3aadfcab38e1fd2b28bd25601fe5463 SHA512 a2c680223bda4f9bfdbd751c8d6a5319e0a4611533272860ca0a396b26c473a13065301a5d8973074ea2bb5119caaeec5a67d547a96ae5d762dc09f337f51ad1 +EBUILD dafny-4.10.0.ebuild 18906 BLAKE2B 4c281146c319832cd7c917765d64fe469851bc4bc82cac1070a2687629ab025f068dcc34b8dba79347da790c567803bfdadd314dd240fa6f78082074516d60ed SHA512 005bccb059dd6a7bc0afbbdbea114fe8b01e210b9fa45fe0445cad6a0ec2e730aac9eed697224591f509a9f29047789377faece8ce7a67b4303015657544f580 EBUILD dafny-4.8.0.ebuild 21093 BLAKE2B f3bc2e1080b1a4f47d6dfcfb8ff4284f1c78b165995933058b2ab4898f414de563ffb4daf057a2abdd757f9c12cc9abb3151872c68e073f08f38d6aa73cb8bcd SHA512 0163a7991f085cae600e9c85b5b9dd2a5e48cf8f6618a334e165c4b81469f8fc747172d9b8af829b43b202f7ccdf796eb340e111f203f32d76f68a58aa45bdd9 EBUILD dafny-4.8.1.ebuild 21158 BLAKE2B 6dca483a23d848a297a17157f8c475d9903cfaee1b3509324bdff1c65a2513b849edeeb67856fbedb7b4545541828168a49760c275672ef33cfd5b11019de56c SHA512 994ffdccde2dadd0c02d5e60c73f58e32cb5d57c547b34ee8aa1566187b914e7514b383f2997d1171a2bc672892d26c2ab5b047444ac3ea1963429ce622651d3 EBUILD dafny-4.9.0.ebuild 20390 BLAKE2B e7d426bf27fa8cd4747c6c8e838a79942b24d4ff04f5e0d8c3f64e3ea07551756f18ec465fd83da6fad8d98a47c2a2f8551557e9dbfc819b176fbb843cb889e5 SHA512 6f559f88ff05e9b09c19dd400fd9e7ed9fe675269380b5389f0414d3efd523b34fb7ec53ad597e97bf5fc54bbfc0233784326bb4613e4fd2bff5c27b41104480 diff --git a/dev-lang/dafny/dafny-4.10.0.ebuild b/dev-lang/dafny/dafny-4.10.0.ebuild new file mode 100644 index 000000000000..4943c4a1f162 --- /dev/null +++ b/dev-lang/dafny/dafny-4.10.0.ebuild @@ -0,0 +1,627 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..13} ) + +DOTNET_PKG_COMPAT="8.0" +NUGETS=" +boogie.abstractinterpretation@3.4.3 +boogie.basetypes@3.4.3 +boogie.codecontractsextender@3.4.3 +boogie.concurrency@3.4.3 +boogie.core@3.4.3 +boogie.executionengine@3.4.3 +boogie.graph@3.4.3 +boogie.houdini@3.4.3 +boogie.model@3.4.3 +boogie.provers.leanauto@3.4.3 +boogie.provers.smtlib@3.4.3 +boogie.vcexpr@3.4.3 +boogie.vcgeneration@3.4.3 +castle.core@4.4.0 +commandlineparser@2.8.0 +commandlineparser@2.9.1 +coverlet.collector@3.2.0 +diffplex@1.7.0 +humanizer.core@2.2.0 +jetbrains.annotations@2021.1.0 +mediatr@8.1.0 +microsoft.bcl.asyncinterfaces@1.1.1 +microsoft.bcl.asyncinterfaces@5.0.0 +microsoft.bcl.asyncinterfaces@6.0.0 +microsoft.build.framework@17.0.0 +microsoft.build.locator@1.4.1 +microsoft.build.tasks.core@17.0.0 +microsoft.build.utilities.core@17.0.0 +microsoft.build@17.0.0 +microsoft.codeanalysis.analyzers@3.0.0 +microsoft.codeanalysis.analyzers@3.3.2 +microsoft.codeanalysis.common@3.7.0 +microsoft.codeanalysis.common@4.0.1 +microsoft.codeanalysis.csharp.workspaces@4.0.1 +microsoft.codeanalysis.csharp@3.7.0 +microsoft.codeanalysis.csharp@4.0.1 +microsoft.codeanalysis.visualbasic.workspaces@4.0.1 +microsoft.codeanalysis.visualbasic@4.0.1 +microsoft.codeanalysis.workspaces.common@4.0.1 +microsoft.codeanalysis.workspaces.msbuild@4.0.1 +microsoft.codeanalysis@4.0.1 +microsoft.codecoverage@16.11.0 +microsoft.codecoverage@16.9.4 +microsoft.codecoverage@17.1.0 +microsoft.csharp@4.0.1 +microsoft.dotnet.platformabstractions@2.0.4 +microsoft.extensions.configuration.abstractions@2.0.0 +microsoft.extensions.configuration.abstractions@5.0.0 +microsoft.extensions.configuration.binder@2.0.0 +microsoft.extensions.configuration.binder@5.0.0 +microsoft.extensions.configuration.commandline@5.0.0 +microsoft.extensions.configuration.fileextensions@5.0.0 +microsoft.extensions.configuration.json@5.0.0 +microsoft.extensions.configuration@2.0.0 +microsoft.extensions.configuration@5.0.0 +microsoft.extensions.dependencyinjection.abstractions@2.0.0 +microsoft.extensions.dependencyinjection.abstractions@5.0.0 +microsoft.extensions.dependencyinjection@2.0.0 +microsoft.extensions.dependencyinjection@5.0.0 +microsoft.extensions.dependencymodel@2.0.4 +microsoft.extensions.fileproviders.abstractions@5.0.0 +microsoft.extensions.fileproviders.physical@5.0.0 +microsoft.extensions.filesystemglobbing@5.0.0 +microsoft.extensions.logging.abstractions@2.0.0 +microsoft.extensions.logging.abstractions@5.0.0 +microsoft.extensions.logging.configuration@5.0.0 +microsoft.extensions.logging.console@5.0.0 +microsoft.extensions.logging@2.0.0 +microsoft.extensions.logging@5.0.0 +microsoft.extensions.options.configurationextensions@2.0.0 +microsoft.extensions.options.configurationextensions@5.0.0 +microsoft.extensions.options@2.0.0 +microsoft.extensions.options@5.0.0 +microsoft.extensions.primitives@2.0.0 +microsoft.extensions.primitives@5.0.0 +microsoft.net.stringtools@1.0.0 +microsoft.net.test.sdk@16.11.0 +microsoft.net.test.sdk@16.9.4 +microsoft.net.test.sdk@17.1.0 +microsoft.netcore.platforms@1.0.1 +microsoft.netcore.platforms@1.1.0 +microsoft.netcore.platforms@2.1.2 +microsoft.netcore.platforms@3.0.0 +microsoft.netcore.platforms@3.1.0 +microsoft.netcore.targets@1.0.1 +microsoft.netcore.targets@1.1.0 +microsoft.netframework.referenceassemblies.net452@1.0.2 +microsoft.netframework.referenceassemblies.net452@1.0.3 +microsoft.netframework.referenceassemblies@1.0.2 +microsoft.netframework.referenceassemblies@1.0.3 +microsoft.testplatform.extensions.trxlogger@17.9.0 +microsoft.testplatform.objectmodel@16.11.0 +microsoft.testplatform.objectmodel@16.9.4 +microsoft.testplatform.objectmodel@17.1.0 +microsoft.testplatform.objectmodel@17.9.0 +microsoft.testplatform.testhost@16.11.0 +microsoft.testplatform.testhost@16.9.4 +microsoft.testplatform.testhost@17.1.0 +microsoft.testplatform.testhost@17.9.0 +microsoft.visualstudio.threading.analyzers@16.7.56 +microsoft.visualstudio.threading@16.7.56 +microsoft.visualstudio.validation@15.5.31 +microsoft.win32.primitives@4.3.0 +microsoft.win32.registry@4.3.0 +microsoft.win32.registry@4.6.0 +microsoft.win32.systemevents@4.7.0 +microsoft.win32.systemevents@6.0.0 +moq@4.16.1 +nerdbank.streams@2.6.81 +netstandard.library@1.6.1 +netstandard.library@2.0.3 +newtonsoft.json@11.0.2 +newtonsoft.json@13.0.1 +newtonsoft.json@9.0.1 +nuget.frameworks@5.0.0 +nuget.frameworks@5.11.0 +omnisharp.extensions.jsonrpc.generators@0.19.5 +omnisharp.extensions.jsonrpc.testing@0.19.5 +omnisharp.extensions.jsonrpc@0.19.5 +omnisharp.extensions.languageclient@0.19.5 +omnisharp.extensions.languageprotocol.testing@0.19.5 +omnisharp.extensions.languageprotocol@0.19.5 +omnisharp.extensions.languageserver.shared@0.19.5 +omnisharp.extensions.languageserver@0.19.5 +rangetree@3.0.1 +runtime.any.system.collections@4.3.0 +runtime.any.system.diagnostics.tools@4.3.0 +runtime.any.system.diagnostics.tracing@4.3.0 +runtime.any.system.globalization.calendars@4.3.0 +runtime.any.system.globalization@4.3.0 +runtime.any.system.io@4.3.0 +runtime.any.system.reflection.extensions@4.3.0 +runtime.any.system.reflection.primitives@4.3.0 +runtime.any.system.reflection@4.3.0 +runtime.any.system.resources.resourcemanager@4.3.0 +runtime.any.system.runtime.handles@4.3.0 +runtime.any.system.runtime.interopservices@4.3.0 +runtime.any.system.runtime@4.3.0 +runtime.any.system.text.encoding.extensions@4.3.0 +runtime.any.system.text.encoding@4.3.0 +runtime.any.system.threading.tasks@4.3.0 +runtime.any.system.threading.timer@4.3.0 +runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.native.system.io.compression@4.3.0 +runtime.native.system.net.http@4.3.0 +runtime.native.system.security.cryptography.apple@4.3.0 +runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.native.system@4.0.0 +runtime.native.system@4.3.0 +runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple@4.3.0 +runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0 +runtime.unix.microsoft.win32.primitives@4.3.0 +runtime.unix.system.console@4.3.0 +runtime.unix.system.diagnostics.debug@4.3.0 +runtime.unix.system.io.filesystem@4.3.0 +runtime.unix.system.net.primitives@4.3.0 +runtime.unix.system.net.sockets@4.3.0 +runtime.unix.system.private.uri@4.3.0 +runtime.unix.system.runtime.extensions@4.3.0 +serilog.extensions.logging@3.0.1 +serilog.settings.configuration@3.1.0 +serilog.sinks.debug@2.0.0 +serilog.sinks.file@5.0.0 +serilog.sinks.inmemory@0.11.0 +serilog@2.12.0 +system.appcontext@4.1.0 +system.appcontext@4.3.0 +system.buffers@4.3.0 +system.buffers@4.4.0 +system.codedom@4.4.0 +system.collections.concurrent@4.3.0 +system.collections.immutable@1.5.0 +system.collections.immutable@1.7.0 +system.collections.immutable@1.7.1 +system.collections.immutable@5.0.0 +system.collections.nongeneric@4.3.0 +system.collections.specialized@4.3.0 +system.collections@4.0.11 +system.collections@4.3.0 +system.commandline@2.0.0-beta4.22272.1 +system.componentmodel.primitives@4.3.0 +system.componentmodel.typeconverter@4.3.0 +system.componentmodel@4.3.0 +system.composition.attributedmodel@1.0.31 +system.composition.convention@1.0.31 +system.composition.hosting@1.0.31 +system.composition.runtime@1.0.31 +system.composition.typedparts@1.0.31 +system.composition@1.0.31 +system.configuration.configurationmanager@4.7.0 +system.configuration.configurationmanager@6.0.0 +system.console@4.3.0 +system.diagnostics.debug@4.0.11 +system.diagnostics.debug@4.3.0 +system.diagnostics.diagnosticsource@4.3.0 +system.diagnostics.tools@4.0.1 +system.diagnostics.tools@4.3.0 +system.diagnostics.tracesource@4.3.0 +system.diagnostics.tracing@4.3.0 +system.drawing.common@4.7.0 +system.drawing.common@6.0.0 +system.dynamic.runtime@4.0.11 +system.dynamic.runtime@4.3.0 +system.globalization.calendars@4.3.0 +system.globalization.extensions@4.3.0 +system.globalization@4.0.11 +system.globalization@4.3.0 +system.io.compression.zipfile@4.3.0 +system.io.compression@4.3.0 +system.io.filesystem.primitives@4.0.1 +system.io.filesystem.primitives@4.3.0 +system.io.filesystem@4.0.1 +system.io.filesystem@4.3.0 +system.io.pipelines@4.7.3 +system.io.pipelines@5.0.1 +system.io@4.1.0 +system.io@4.3.0 +system.linq.async@6.0.1 +system.linq.expressions@4.1.0 +system.linq.expressions@4.3.0 +system.linq@4.1.0 +system.linq@4.3.0 +system.memory@4.5.3 +system.memory@4.5.4 +system.net.http@4.3.0 +system.net.nameresolution@4.3.0 +system.net.primitives@4.3.0 +system.net.sockets@4.3.0 +system.net.websockets@4.3.0 +system.numerics.vectors@4.4.0 +system.objectmodel@4.0.12 +system.objectmodel@4.3.0 +system.private.uri@4.3.0 +system.reactive@4.4.1 +system.reflection.emit.ilgeneration@4.0.1 +system.reflection.emit.ilgeneration@4.3.0 +system.reflection.emit.lightweight@4.0.1 +system.reflection.emit.lightweight@4.3.0 +system.reflection.emit@4.0.1 +system.reflection.emit@4.3.0 +system.reflection.extensions@4.0.1 +system.reflection.extensions@4.3.0 +system.reflection.metadata@1.6.0 +system.reflection.metadata@5.0.0 +system.reflection.primitives@4.0.1 +system.reflection.primitives@4.3.0 +system.reflection.typeextensions@4.1.0 +system.reflection.typeextensions@4.3.0 +system.reflection@4.1.0 +system.reflection@4.3.0 +system.resources.extensions@4.6.0 +system.resources.resourcemanager@4.0.1 +system.resources.resourcemanager@4.3.0 +system.runtime.caching@6.0.0 +system.runtime.compilerservices.unsafe@4.4.0 +system.runtime.compilerservices.unsafe@4.5.2 +system.runtime.compilerservices.unsafe@4.7.0 +system.runtime.compilerservices.unsafe@4.7.1 +system.runtime.compilerservices.unsafe@5.0.0 +system.runtime.extensions@4.1.0 +system.runtime.extensions@4.3.0 +system.runtime.handles@4.0.1 +system.runtime.handles@4.3.0 +system.runtime.interopservices.runtimeinformation@4.0.0 +system.runtime.interopservices.runtimeinformation@4.3.0 +system.runtime.interopservices@4.1.0 +system.runtime.interopservices@4.3.0 +system.runtime.numerics@4.3.0 +system.runtime.serialization.primitives@4.1.1 +system.runtime@4.1.0 +system.runtime@4.3.0 +system.security.accesscontrol@4.6.0 +system.security.accesscontrol@4.7.0 +system.security.accesscontrol@6.0.0 +system.security.claims@4.3.0 +system.security.cryptography.algorithms@4.3.0 +system.security.cryptography.cng@4.3.0 +system.security.cryptography.cng@4.7.0 +system.security.cryptography.csp@4.3.0 +system.security.cryptography.encoding@4.3.0 +system.security.cryptography.openssl@4.3.0 +system.security.cryptography.pkcs@4.7.0 +system.security.cryptography.primitives@4.3.0 +system.security.cryptography.protecteddata@4.7.0 +system.security.cryptography.protecteddata@6.0.0 +system.security.cryptography.x509certificates@4.3.0 +system.security.cryptography.xml@4.7.0 +system.security.permissions@4.7.0 +system.security.permissions@6.0.0 +system.security.principal.windows@4.3.0 +system.security.principal.windows@4.6.0 +system.security.principal.windows@4.7.0 +system.security.principal@4.3.0 +system.text.encoding.codepages@4.0.1 +system.text.encoding.codepages@4.5.1 +system.text.encoding.extensions@4.0.11 +system.text.encoding.extensions@4.3.0 +system.text.encoding@4.0.11 +system.text.encoding@4.3.0 +system.text.json@4.7.0 +system.text.json@5.0.2 +system.text.regularexpressions@4.1.0 +system.text.regularexpressions@4.3.0 +system.threading.channels@4.7.1 +system.threading.tasks.dataflow@4.9.0 +system.threading.tasks.extensions@4.0.0 +system.threading.tasks.extensions@4.3.0 +system.threading.tasks.extensions@4.5.3 +system.threading.tasks.extensions@4.5.4 +system.threading.tasks@4.0.11 +system.threading.tasks@4.3.0 +system.threading.threadpool@4.3.0 +system.threading.timer@4.3.0 +system.threading@4.0.11 +system.threading@4.3.0 +system.windows.extensions@4.7.0 +system.windows.extensions@6.0.0 +system.xml.readerwriter@4.0.11 +system.xml.readerwriter@4.3.0 +system.xml.xdocument@4.0.11 +system.xml.xdocument@4.3.0 +system.xml.xmldocument@4.3.0 +tomlyn@0.17.0 +validation@2.4.18 +xunit.abstractions@2.0.2 +xunit.abstractions@2.0.3 +xunit.analyzers@0.10.0 +xunit.analyzers@1.0.0 +xunit.assert@2.4.1 +xunit.assert@2.4.2 +xunit.assertmessages@2.4.0 +xunit.core@2.4.1 +xunit.core@2.4.2 +xunit.extensibility.core@2.4.0 +xunit.extensibility.core@2.4.1 +xunit.extensibility.core@2.4.2 +xunit.extensibility.execution@2.4.0 +xunit.extensibility.execution@2.4.1 +xunit.extensibility.execution@2.4.2 +xunit.runner.visualstudio@2.4.3 +xunit.runner.visualstudio@2.5.1 +xunit.skippablefact@1.4.8 +xunit@2.4.1 +xunit@2.4.2 +" + +inherit check-reqs dotnet-pkg edo java-pkg-2 multiprocessing python-any-r1 optfeature + +DESCRIPTION="Dafny is a verification-aware programming language" +HOMEPAGE="https://dafny.org/ + https://github.com/dafny-lang/dafny/" + +if [[ "${PV}" == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/dafny-lang/${PN}.git" +else + SRC_URI="https://github.com/dafny-lang/${PN}/archive/v${PV}.tar.gz + -> ${P}.tar.gz" + + KEYWORDS="~amd64" +fi + +SRC_URI+=" + ${NUGET_URIS} + test? ( + https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz + ) +" + +LICENSE="MIT" +SLOT="0" +IUSE="test" +RESTRICT="!test? ( test )" + +RDEPEND=" + !dev-lang/dafny-bin + >=virtual/jre-1.8:* + sci-mathematics/z3 +" +DEPEND=" + >=virtual/jdk-1.8:* +" +BDEPEND=" + ${RDEPEND} + dev-dotnet/coco + test? ( + ${PYTHON_DEPS} + >=dev-lang/boogie-3.4.3 + dev-go/go-tools + dev-lang/go + dev-python/outputcheck + dev-python/lit + dev-python/psutil + net-libs/nodejs[npm] + ) +" + +CHECKREQS_DISK_BUILD="2G" +DOTNET_PKG_PROJECTS=( Source/Dafny/Dafny.csproj ) +TEST_S="${S}/Source/IntegrationTests/TestFiles/LitTests/LitTest" + +PATCHES=( + "${FILESDIR}/dafny-3.12.0-DafnyCore-csproj.patch" + "${FILESDIR}/dafny-3.12.0-DafnyRuntime-csproj.patch" + "${FILESDIR}/dafny-4.5.0-lit-config.patch" +) + +DOCS=( + CODE_OF_CONDUCT.md + CONTRIBUTING.md + NOTICES.txt + README.md + RELEASE_NOTES.md + docs/DafnyCheatsheet.pdf + docs/DafnyRef/out/DafnyRef.pdf +) + +pkg_setup() { + # Clean the environment. + unset NPM_CONFIG_USERCONFIG + + if [[ -n "${_JAVA_OPTIONS}" ]] ; then + ewarn "Cleaning _JAVA_OPTIONS because when set compile and test may fail" + + unset _JAVA_OPTIONS + fi + + check-reqs_pkg_setup + dotnet-pkg_pkg_setup + java-pkg-2_pkg_setup + + # We need to set up Python only for running test tools (called via lit). + if use test ; then + python-any-r1_pkg_setup + fi +} + +src_unpack() { + # Unpack manually to skip additional archives, eg "bignumber.js". + nuget_link-system-nugets + nuget_link-nuget-archives + + if [[ -n "${EGIT_REPO_URI}" ]] ; then + git-r3_src_unpack + else + unpack "${P}.tar.gz" + fi +} + +src_prepare() { + dotnet-pkg_src_prepare + + # Update lit's "lit.site.cfg" file. + local dotnet_exec="${DOTNET_PKG_EXECUTABLE} exec ${DOTNET_PKG_OUTPUT}" + local lit_config="${TEST_S}/lit.site.cfg" + + local -a lit_dotnet_run_opts=( + --configuration "${DOTNET_PKG_CONFIGURATION}" + --no-build + --no-restore + --no-self-contained + --runtime "${DOTNET_PKG_RUNTIME}" + ) + sed -i "${lit_config}" \ + -e "s|dotnet run |${DOTNET_PKG_EXECUTABLE} run ${lit_dotnet_run_opts[*]} |g" \ + || die "failed to update ${lit_config}" + + # Using "for-each-compiler" will fail because of Cargo requiring network access. + while read -r test_file ; do + if grep "// RUN: %testDafnyForEachCompiler" "${test_file}" >/dev/null ; then + rm "${test_file}" || die "failed to remove test ${bad_test}" + fi + done < <(find "${TEST_S}" -type f -name "*.dfy") + + # Remove bad tests (recursive). + local -a bad_tests=( + # Unsupported test build (and those that need network access): + comp/rust + + # Following tests fail: + HigherOrderIntrinsicSpecification + VSComp2010 + ast/function.dfy + auditor/TestAuditor.dfy + benchmarks + blogposts + c++ + cli + comp + concurrency + dafny{0,1,3,4} + doofiles + examples + exports + git-issues + gomodule/{multimodule,publishedruntime,singlemodule} + lambdas + metatests + printing + pythonmodule + separate-verification + server + triggers + unicodecharsFalse + verification + vstte2012 + wishlist + ) + local bad_test="" + for bad_test in "${bad_tests[@]}" ; do + if [[ -e "${TEST_S}/${bad_test}" ]] ; then + rm -r "${TEST_S}/${bad_test}" \ + || eerror "failed to remove test ${bad_test}" + else + ewarn "Test file ${bad_test} does not exist" + fi + done +} + +src_configure() { + dotnet-pkg_src_configure + + if use test ; then + dotnet-pkg-base_restore ./Source/TestDafny/TestDafny.csproj + fi +} + +src_compile () { + einfo "Building DafnyRuntimeJava JAR." + local dafny_runtime_java="${S}/Source/DafnyRuntime/DafnyRuntimeJava" + mkdir -p "${dafny_runtime_java}/build/libs/" || die + pushd "${dafny_runtime_java}/build" || die + + ejavac -d ./ $(find "${dafny_runtime_java}/src/main" -type f -name "*.java") + edob jar cvf "DafnyRuntime-${PV}.jar" dafny/* + + cp "DafnyRuntime-${PV}.jar" "${dafny_runtime_java}/build/libs/" || die + popd || die + + # Build main dotnet package. + dotnet-pkg_src_compile + + # Build "TestDafny" without saving artifacts. + if use test ; then + # This is where Dafny test suite expects to find compiled sources. + rm -r ./Binaries || die + cp -r "${DOTNET_PKG_OUTPUT}" ./Binaries || die + + local -a build_test_opts=( + --configuration "${DOTNET_PKG_CONFIGURATION}" + --no-restore + --no-self-contained + --runtime "${DOTNET_PKG_RUNTIME}" + -maxCpuCount:$(makeopts_jobs) + ) + edotnet build "${build_test_opts[@]}" ./Source/TestDafny/TestDafny.csproj + fi +} + +src_test() { + # Dafny GOLang transpiler tests need "goimports" from "/usr/lib/go/bin". + local -x PATH="${EPREFIX}/usr/lib/go/bin:${PATH}" + + einfo "Installing bignumber.js package required for tests using NodeJS." + local -a npm_opts=( + --audit false + --color false + --foreground-scripts + --offline + --progress false + --verbose + ) + edob npm "${npm_opts[@]}" install "${DISTDIR}/bignumber.js-9.1.2.tgz" + + einfo "Starting tests using the lit test tool." + local -a lit_opts=( + --order=lexical + --time-tests + --timeout 1800 # Let one test take no mere than half a hour. + --verbose + --workers="$(makeopts_jobs)" + ) + edo lit "${lit_opts[@]}" "${TEST_S}" +} + +src_install() { + dotnet-pkg-base_install + + local -a dafny_exes=( + Dafny + DafnyDriver + DafnyLanguageServer + DafnyServer + ) + local dafny_exe + for dafny_exe in "${dafny_exes[@]}" ; do + dotnet-pkg-base_dolauncher "/usr/share/${P}/${dafny_exe}" "${dafny_exe}" + done + + dosym -r /usr/bin/Dafny /usr/bin/dafny + dosym -r /usr/bin/DafnyServer /usr/bin/dafny-server + + einstalldocs +} + +pkg_postinst() { + optfeature "Dafny GO language backend" dev-go/go-tools + optfeature "Dafny Rust language backend" dev-lang/rust dev-lang/rust-bin +} diff --git a/dev-lang/execline/Manifest b/dev-lang/execline/Manifest index 92766699469a..9f89642533dc 100644 --- a/dev-lang/execline/Manifest +++ b/dev-lang/execline/Manifest @@ -1,5 +1,5 @@ DIST execline-2.9.6.0.tar.gz 111660 BLAKE2B 42baed36228b1e6a370d6d4c18829be7f517812ce9e3838e5b102d0fe58ac48ecd84f17caef89e9a07b3b149ed9b38b3b00f7eef810c231995c8e5ecbf07a770 SHA512 1c5233b0f17b4c92ab2e9e8700b47c8429ad97962bcb7c83190d0b3251b26584e591d77418eca77e8112cdecd24eec50aaca7da1dbb506120931bbda39f2b7cb DIST execline-2.9.6.1.tar.gz 111566 BLAKE2B 199fe6ac6a08b48537abd7868db1332b60bff8e2fa19ba697e15a6d8b0d8969908d0740fdfcf4717fbbc1a75d980a6f2844b1015e52afed26ce1eb450d4e48bb SHA512 86e20a63926cc03cb81e07c9cbea9da5d0384436a82b93e331da6b3ced33829baf5adae4286d2c053b21474d41602d53804ff0bc280da60f7bccc64cbe5f601e EBUILD execline-2.9.6.0.ebuild 1132 BLAKE2B 8ac47516f9f4d89f44a6b86988a6df1a1f5639868f24f29691a1e6f4f9c7cd1e46520e82f37577d6bf31e81200e70aee08e4cbc6966dd4274772a0e65307dd24 SHA512 97932b7287d2cd30b625425de149bb3ca701e2902637146c90cd6e6ac8251b0e533832b060d93efa5efb66415c0aa5392ddb49a17ddc200e6eab6752663578dc -EBUILD execline-2.9.6.1.ebuild 1135 BLAKE2B d772b43ae63801febe3450deca71d89e62e3195af05e569f59cb1acefd7d3b87956861d665a1e13e963d79052ed90cde92c6e40b56180fd9bf3ffbde3562546a SHA512 82f6a85dff699956ee962e0ce582b08c068de0bcdeffdc6fea36269f00fea77a9b0d82da2217641419832249228d08ac11c7a370af53aca6d3b462cf723f9607 +EBUILD execline-2.9.6.1.ebuild 1133 BLAKE2B 279e49fdee57625613ade2a2bca98ca11f084f992cdfcb49e6a3a98c7aa6e85b8351c537897d1d3bcfbc7aa9432e658c5b1240841cde52e9ea7a5053fddd8798 SHA512 2239d3c4b76f272803eb097b01a24ac2c3e1d30cd760f83a41e431886d8ef522ab29deea39b7cc2b3873514a4d5893bf24023450695a89eec78116bc36c2c67b MISC metadata.xml 585 BLAKE2B ce0671014512c49b041f6c47002603a15f0f5d7f23c356465fff024506fb261096aa757cc1c707501f5be572cea9d925a25039d1549d31852ffaf9b2f17b5cb3 SHA512 bddd917f615e8ff772889a4da992c9201f6e32982374ffa29e7a8c3fce8d7a4f409c3b3ffe8c989e7802c2b321d6cfc5bb37017aa75dc38e3026c1de48bb0090 diff --git a/dev-lang/execline/execline-2.9.6.1.ebuild b/dev-lang/execline/execline-2.9.6.1.ebuild index 6eff46cb134a..6e4c12cc7077 100644 --- a/dev-lang/execline/execline-2.9.6.1.ebuild +++ b/dev-lang/execline/execline-2.9.6.1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -11,7 +11,7 @@ SRC_URI="https://www.skarnet.org/software/${PN}/${P}.tar.gz" LICENSE="ISC" SLOT="0/$(ver_cut 1-2).4" -KEYWORDS="~alpha ~amd64 ~arm ~mips ~ppc ~ppc64 ~riscv ~x86" +KEYWORDS="~alpha amd64 ~arm ~mips ~ppc ~ppc64 ~riscv x86" RDEPEND=">=dev-libs/skalibs-2.14.0.0:=" DEPEND="${RDEPEND}" diff --git a/dev-lang/go/Manifest b/dev-lang/go/Manifest index 7c9074a728e1..7fc27ab928a1 100644 --- a/dev-lang/go/Manifest +++ b/dev-lang/go/Manifest @@ -5,8 +5,8 @@ DIST go1.22.12.src.tar.gz 27566409 BLAKE2B ea8ce4abd7d6548aef14c0803a07b4beba872 DIST go1.23.5.src.tar.gz 28179014 BLAKE2B 6fe6101054a0c10ce415aea65367a48ef8397c88d66bad01b7c72107a6c60daf0b9a47f7c1cd6c8da9855ab04309f25941cc867e6a9f90ac51d1ab0c54662313 SHA512 b04317afeab2d0ced7c36b8682dd32ac085d95d874cf3f614daa34859d7f7f2b75138132e7a64e237c6b4d711d5b03a4d20533f92a44840915630f4ea7cfafa2 DIST go1.23.6.src.tar.gz 28179132 BLAKE2B 25c988547604c35de65aedfdee5af9f35f7a1c43f634c0147373d9c86baf2bb10068463f70013ef60acd3088149eb16502958b1ca63d7cee310e32eaddf1578a SHA512 c504476d42cdbcd1b6afe53c0974e82c19eb0efac974bc06d41c1641440676891cfe6416455a0cfc81fe82902a9b82ea0a1d95089c676667d05487e45f5e04e3 EBUILD go-1.22.11-r1.ebuild 4275 BLAKE2B b6bbced3829a2dfc6febff014bddd55e895316008726e61a0c297fceec9e531e8b32defb3fbd6c1dbdb61c6e86fb65433f507e476df7294a695d24bfed7bd4b8 SHA512 f484f8b86479d936350eaf13bdd7797fb26454d09b62c0408748d3eb1e4d162b4a89d044dc40f277ec7d270b08b64cce913e6654ee5567c770d069332fed089b -EBUILD go-1.22.12.ebuild 4280 BLAKE2B 66dc07da733ece8d53cea1f7a9b908578127702f6356298d97ec39c1e346e3656b4e79784dc15247433dfd75e69868e7f83669d702710c942869242e218deb50 SHA512 feb8ed4d4933174944337cc316a4659ef9bbf8acb4a385bbef0d6436f7fd2e291fc6d82c5c1a1a28d13fb0d25d1f2f86cbae21e03d6d8998e1e958de92815c26 +EBUILD go-1.22.12.ebuild 4279 BLAKE2B 7552c89cc57cc348b1c2596faf9e4813723038de8fa4b6f86bc804acb74420166d1e552c217e87bff1dcc82a36e4dfe7cb8fe8875a2a856fc891769e8e3e18f5 SHA512 8fb237ae4b4797304bb9629369591e9b3918c68823477ccd6ff0c1ad22f394c10f8791dff8182d0a0e77b7eda4281646120ad60cfc378a02341cb1836b7b8319 EBUILD go-1.23.5-r1.ebuild 4175 BLAKE2B d1e34e725ea51929715268d3009f5035967231a4a35c59779c898d352d3d0d9a8a6b03fee8a847215ff2b057bdf980fb11b6b905b33ee3ccc8a215eb348d5317 SHA512 8d792f83f8abf11353fa5009fa29a946cc7e0c8a2f2df7cf90e5acae8aaa68c2cd239ef03c324a61316bb217ea14f0b6d7514101c5d158f3b3bc3beb74dade27 -EBUILD go-1.23.6.ebuild 4180 BLAKE2B e8e1f354167d88bf01a7b4b338a1f026bbd23f789c16e917ba38e1f73a474897e7cd18f9192936b6211e89bd91aa81435b1b2f4956d80f1cebabd36f7db22825 SHA512 6abc1ed892888e315449bcbb19f030136c0f44fbd3c4c24e267f2b8483fb9ab2393713c1641ef64dfebf421d44f5fc4f509499e43dc8580b46b5f2f08fca3b97 +EBUILD go-1.23.6.ebuild 4179 BLAKE2B f98a28b82fd2277a7dd8d07d0a2c3f5cc1d7705ab4c429f93f6567b265fa1f3f6b2a9597333188aa304982285ac1ce6abc6388d899b1a608f708f1915f3c117b SHA512 afc824cbd3d5b70df77b21ad5851952b5ea660e70a4f38c56556e6f8643f2eced12fec6e4333f6ffddb19ffab1fbbf2363375bfc345693d00867b3fbe5eec6b9 EBUILD go-9999.ebuild 4281 BLAKE2B 7213df19f71554d13dc3510253a906962a217a193ce0461975f946e2c5277eee889150c588f83f0be14eccf26249488c90151ae155633c91695cd3d35c869c95 SHA512 f747c67f574e1d7c19f3eb7c03b74599652744fdd989a964d2da778134461cd31cc861b9f63ee8a11b665f1aea468412bea64cc19df6b141cf468c39b7194c3f MISC metadata.xml 589 BLAKE2B 341e4c0e91d73ca668c1795035e1223eed60f85c724afd989ef1f8fb69649f7f6eaaf8a5228f6c8f587ffcc40a438c47d332fbe6866839f5a0829872a983f642 SHA512 fe58ddddfbd4d0d060516cb035592a80c0f48e125bb59c95d3c6fac0c182271e2a9ec9bd055b9cc8e6cb8c449e6c483bff4a23c362f532c24255febfdefc273a diff --git a/dev-lang/go/go-1.22.12.ebuild b/dev-lang/go/go-1.22.12.ebuild index 57a3e9a8de86..9ea7cd6c0feb 100644 --- a/dev-lang/go/go-1.22.12.ebuild +++ b/dev-lang/go/go-1.22.12.ebuild @@ -23,7 +23,7 @@ case ${PV} in case ${PV} in *_beta*|*_rc*) ;; *) - KEYWORDS="-* ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" + KEYWORDS="-* amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" ;; esac esac diff --git a/dev-lang/go/go-1.23.6.ebuild b/dev-lang/go/go-1.23.6.ebuild index bdfada7c265e..ce6eb102c49e 100644 --- a/dev-lang/go/go-1.23.6.ebuild +++ b/dev-lang/go/go-1.23.6.ebuild @@ -23,7 +23,7 @@ case ${PV} in case ${PV} in *_beta*|*_rc*) ;; *) - KEYWORDS="-* ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" + KEYWORDS="-* amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" ;; esac esac diff --git a/dev-lang/mmix/Manifest b/dev-lang/mmix/Manifest index b76811fa8699..755915f541c9 100644 --- a/dev-lang/mmix/Manifest +++ b/dev-lang/mmix/Manifest @@ -1,6 +1,8 @@ AUX mmix-20110420-makefile.patch 1636 BLAKE2B f4acfc952dea9671ec5507f4d86a1462131dae835318362b17f341e9575fe1dccda5cd44d257127a27232a197e05f79de5d7a8200d7a2b943161fa38de83937f SHA512 e5cd4944847c00ad7c6b3a87fa6f9a242f7f0b13c31f82e80c49b3b9ec07d7c0106669dce2868705dca073774826c5acc6f8ea1464c1a5c739145f1c2b28eb10 AUX mmix-20131017-format-security.patch 2256 BLAKE2B 2481c33c024d84af03b289ec9f22c9b98cb27537c32ea9ef020943aa424efac5267d81326241b2d764eb292f373ed51cc30c3ddbdb55f8fa444154cf6cc5fe0d SHA512 e77cdf3d196356cc0cb09f322cc979e4c603592c8f9421764d6830df27fe627958badbd6726021f97bc42a0d9551e4d3b39ca7b1d677b44a543ffcc04028eaea AUX mmix-20160804-gcc-10.patch 822 BLAKE2B 182ff974d458e06ac5c90aa44f0255f20a97c7702a49f3b36ba541c6414f63f8d2c1d3f56e6abe624e06be198b963d018ba3403baac0773b114946d96fa9272c SHA512 65fb04add6fa1441f9cc699af09cc84b67701113db1406d7ec582ac2023221f02dd1972393c3114fa0801a9f686b24d8e5daededa469e155da33aaafee72a22c +AUX mmix-20160804-implicit-int.patch 816 BLAKE2B 62731ffbbd025dbd830398db747b2e7993ee7aee4efbd058faffaff610abceff15d4bd91cd326a919677529d11507af43c9af833a6ef16356df294330814ff80 SHA512 29b07ad6d6a77bf43e9fddd7c6e2a803d5758be012fc18b079a01c84719db65c0865e2bceb0565963fef4106adcf10fad12eb917b9480551379f9c6b2c0d86f2 DIST mmix-20160804.tgz 308410 BLAKE2B 8bbde51921fe23f016e35bd51346e6445d530815e5e87bff44cf17e081c6b8e55dd6bd24f1ce1621851d2eac309fa44d71aa33d93d3ddfce5213c6643181d38c SHA512 35c518227a4ee40d0aa3be02eda2ab8b2a27696fa789f5007a978419d07b3deebb7f391895e63e3556aeb38dc1ded3bddf2b860125ebf8f7848375e90dc7af75 -EBUILD mmix-20160804-r1.ebuild 979 BLAKE2B 910d90c29ad16935be723b746ef22291e4414c9acaf324e54d6d3b0ea42d9d384f9c2397f7b5ebcd42bb3bfd4923fa7b7ed43e92c58b7b4ca9b7f9a673817bdb SHA512 f51695ba780a6253ba771731b6df3cde7aacaffd1d3e4e1e8c32ad0cff9b6bda3c406074246fb3655c2159faf88d80415df8d4dffd69753c01bef43b922c93fe +EBUILD mmix-20160804-r1.ebuild 982 BLAKE2B fa6196b52bf66531430494fb29ba2c205a0e41afcb1d0ea174f9c1d3f6d78643fad9294addabebb77192a845e0b9a65a29a5eaf020e83c0b2f5cf4e2297c8a5e SHA512 33ffe26f82a2f69ca46437648afdc5074800637571ade3c0606e6f63050387a2bfcac70db2b3bcbed5b94d35d734eb754c34b91234da250d41de02c14b82727d +EBUILD mmix-20160804-r2.ebuild 1069 BLAKE2B ddcc0f3f70deb79eafc4c7f968ef37b3d43d81c7f0ec128d4a9c75d4cfff277e7883806790be91219f003c8e9735add95e49f3ab313b6e97f44d5ed1906ca43c SHA512 919d4fa388613466f5726d9b6d233c3f9a67e814ef568ae9689d547c30b5b023fe02075f0c44006f98dd5dcc2ec73d064b86233b4a7a0b0f4bad3169c7954fac MISC metadata.xml 248 BLAKE2B cdc66ee780cce8b539d2c619893b5a5121982e3cde1ea6308f7795eac4b3d2247922b5900e7908213297c90bec9a63118312ee9349394becfc67a316aa3f5ca9 SHA512 276b07770aef3fc094cdf356ec54c492c34d515e426d47825a8a2df2331e71876b8a0f87f9549d279958e58a6624c1452092d9b185b4233a973096e1d1bd0301 diff --git a/dev-lang/mmix/files/mmix-20160804-implicit-int.patch b/dev-lang/mmix/files/mmix-20160804-implicit-int.patch new file mode 100644 index 000000000000..5da26a43c4fa --- /dev/null +++ b/dev-lang/mmix/files/mmix-20160804-implicit-int.patch @@ -0,0 +1,27 @@ +Fix function definition to be modern C +https://bugs.gentoo.org/883275 +diff '--color=auto' -ru work.old/abstime.w work/abstime.w +--- a/abstime.w 2025-01-19 17:06:19.952342044 +0400 ++++ b/abstime.w 2025-01-19 17:10:33.521811824 +0400 +@@ -18,7 +18,7 @@ + #include + #include + @# +-main() ++int main(void) + { + printf("#define ABSTIME %ld\n",time(NULL)); + return 0; +Additional dependency in build graph +https://bugs.gentoo.org/818889 +--- a/Makefile 2025-01-19 17:19:21.271627004 +0400 ++++ b/Makefile 2025-01-19 17:21:03.933007472 +0400 +@@ -81,6 +81,8 @@ + + mmix-config.o: mmix-pipe.o + ++mmix-mem.o: mmix-pipe.o ++ + mmmix: mmix-arith.o mmix-pipe.o mmix-config.o mmix-mem.o mmix-io.o mmmix.c + $(CC) $(CFLAGS) $(LDFLAGS) mmmix.c \ + mmix-arith.o mmix-pipe.o mmix-config.o mmix-mem.o mmix-io.o -o mmmix diff --git a/dev-lang/mmix/mmix-20160804-r1.ebuild b/dev-lang/mmix/mmix-20160804-r1.ebuild index 174120e453df..1aaec878cb1b 100644 --- a/dev-lang/mmix/mmix-20160804-r1.ebuild +++ b/dev-lang/mmix/mmix-20160804-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2022 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 @@ -8,18 +8,19 @@ inherit toolchain-funcs DESCRIPTION="Donald Knuth's MMIX Assembler and Simulator" HOMEPAGE="https://www-cs-faculty.stanford.edu/~knuth/mmix.html http://mmix.cs.hm.edu" SRC_URI="http://mmix.cs.hm.edu/src/${P}.tgz" +S="${WORKDIR}" -DEPEND="virtual/tex-base - doc? ( dev-texlive/texlive-plaingeneric )" -# media-sound/mmix and dev-lang/mmix both install 'mmix' binary, bug #426874 -RDEPEND="!!media-sound/mmix" - -SLOT="0" LICENSE="mmix" +SLOT="0" KEYWORDS="amd64 x86" IUSE="doc" -S="${WORKDIR}" +BDEPEND=" + virtual/tex-base + doc? ( dev-texlive/texlive-plaingeneric ) +" +# media-sound/mmix and dev-lang/mmix both install 'mmix' binary, bug #426874 +RDEPEND="!!media-sound/mmix" PATCHES=( "${FILESDIR}"/${PN}-20110420-makefile.patch diff --git a/dev-lang/mmix/mmix-20160804-r2.ebuild b/dev-lang/mmix/mmix-20160804-r2.ebuild new file mode 100644 index 000000000000..62ffe565a5e1 --- /dev/null +++ b/dev-lang/mmix/mmix-20160804-r2.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs flag-o-matic + +DESCRIPTION="Donald Knuth's MMIX Assembler and Simulator" +HOMEPAGE="https://www-cs-faculty.stanford.edu/~knuth/mmix.html http://mmix.cs.hm.edu" +SRC_URI="http://mmix.cs.hm.edu/src/${P}.tgz" +S="${WORKDIR}" + +LICENSE="mmix" +SLOT="0" +KEYWORDS="amd64 x86" +IUSE="doc" + +BDEPEND=" + virtual/tex-base + doc? ( dev-texlive/texlive-plaingeneric ) +" +# media-sound/mmix and dev-lang/mmix both install 'mmix' binary, bug #426874 +RDEPEND="!!media-sound/mmix" + +PATCHES=( + "${FILESDIR}"/${PN}-20110420-makefile.patch + "${FILESDIR}"/${PN}-20131017-format-security.patch + "${FILESDIR}"/${PN}-20160804-gcc-10.patch + "${FILESDIR}"/${PN}-20160804-implicit-int.patch +) + +src_compile() { + append-flags -std=gnu17 + export VARTEXFONTS=${T}/fonts + emake all \ + CFLAGS="${CFLAGS}" \ + CC="$(tc-getCC)" + + if use doc ; then + emake doc + fi +} + +src_install() { + dobin ${PN} ${PN}al m${PN} mmotype abstime + dodoc README ${PN}.1 + + use doc && dodoc *.ps +} diff --git a/dev-lang/nim/Manifest b/dev-lang/nim/Manifest index ad88253a4dbe..764576677e2f 100644 --- a/dev-lang/nim/Manifest +++ b/dev-lang/nim/Manifest @@ -1,9 +1,12 @@ AUX nim-2.0.6-testament-skipfile.txt 2594 BLAKE2B 58af9e632d595e1dc8f6b4fadacf55f10697d75a1ff21a2a6be2feb14eb7e86c27d5fb10737614b2dad3eb7ee3b4a8d76d30ef1c7117e1b7738ca00960450c4c SHA512 940b9ad7eb1debee502568abf30f81970fc431785c3f9b00d8322eaa686f17e6b641e66baaecc7a6ec288076139d180f87978dec24a9ac949e14b5051829228f AUX nim-2.2.0-makefile.patch 308 BLAKE2B 2984a3487838dd65f067eaab54f7ea6ed18f000c97098f735f26df2609b8485fe91c3d1cb2711ca1c987a955f5b340cf90ceffbbc2e5663794fe5ab3239d3c80 SHA512 5de4b4990d050fff655249d8ad11ba316640bb301854c526f7772146289a7505ec3cd59a6b7811a78b4d03b0bca7e70d0c6264ea06b2b59d11a790cbea3dfb0b +AUX nim-2.2.2-testament-skipfile.txt 2662 BLAKE2B 0011401b582e713fdb4b51e90e667228db0a0c16c8ffba31aa68889a643a9e1a2ca9acf52945690ed3bdcc44e4bd6f50b1c184d53c616449026e0c7515a4d439 SHA512 ce85f4ca3917762cca3302c552aa51c0bebc5bfeaea6e03e451553121dd610323fb6ccd59c542087e50052a12e0f073bb0f8da16e87d4074e91020cbbd4b8f27 AUX nim-sets.conf 162 BLAKE2B 976422f31cf8a64e1fad537f4db38a07e0022b9460936c63e0220cb3858ba02704857841d5010ad8c7bde0e6192c4c3c1329aeca8080a48a728e8b288cefc0fb SHA512 61a07de9973fc77998515bbb62498ffd1de991241bf32805f4acc0e4325e39d767ac862f2546757763aa8d0a7f35b95a9e1df91e6aa6f241eed6e93c8e3c46f0 DIST nim-2.0.8.tar.xz 7617556 BLAKE2B 96ab3e92c7c9d3dcb54de6528f2ae788f3ff4a927d693f2ca4917231441d85d12c8bda44c41c8f363979dbd0d8db54098648512caf7780bdc40e393c4f7803ec SHA512 e64abc379c046a9432515d1c8074a7e10ff72a1076663a5b7bdd39ae92852c98ba2cab96aa5e968fc31ca393e778e70b2392d6ab56bca7ac956d0176b4b69a83 DIST nim-2.2.0.tar.xz 7896912 BLAKE2B 671b1f5551e093933519797bbfe2875c1726a0cdd1b33288a9ab189fb966fdb21583027345e58ab13d7e7e85479aafc52340e8ddecd062aca4b4b8de6466b88e SHA512 56374815770b1b92bef3521471a3b1a8b810646eb7f978ff329075d64d231a7d1591a928c28407aa507f1b59375d539fc81b678b84f6b8b4a88ed274048ebf21 +DIST nim-2.2.2.tar.xz 8188616 BLAKE2B e9b5dc3d12165fe12555a22fbf2125f1dc6e828ae5ce9f146c2347b2629623491498a0cf681355379d0c2252aa7d4d7d02d201a8722838da93b785b1a6dd3af6 SHA512 8b61fa55918e01adc782250b5cb931303adeaf185ee65faf3f1fd3843a0050dc7f3dfb363848f8769045e5ac5663f390ae4d8070906cdf0892d749f4426902b3 DIST nim-atlas-0.8.0.tar.gz 59097 BLAKE2B 231b238ac3b15cc2c2d9ad927f80ae72d8ae4c649277515f32df6cc04275ccd38db5307d627572af547501e6522c06c86dc279dc3e13b5385f14e24032f6fe69 SHA512 747c13e2c5bd45a1dc6c1426f8c7637f638ada9dd4c9aa3edf4ef8367060e73226dc4bcde6380fac25ed47ebf4097fd223c72fadc3cceba8c71dd0f0571e47eb EBUILD nim-2.0.8.ebuild 4516 BLAKE2B 07206721451f39505ff611379f04fdcae8eb6fba3d880aaad16fe1df117cd78cabb6c04697f8774c21a425206469e81336070d728a7dc8919c8f3bcd4abd6bb1 SHA512 b5441992666d3c6b33364942bb557c97e6724a57b591daa2f4bff457ad1cf6250c6b92991411a561e38bfac8df41847248e0da3768906d630deb4df35b8c8734 EBUILD nim-2.2.0.ebuild 4495 BLAKE2B 14aa3f9749c4c2641d677a97b96e88d5b931cd1d2cdb760c60e4c8acafff1b20fa90906d015f2d57b5e51ea4f30b7927c6583b26eda3e17461a461a355a8b48d SHA512 b6049dde621b18077f29873fced28c5cf72ee384a1dafca393369e3a5a57f830939253de1d72ae8d29cc32f727e12a8268ba732538c50262616d6620afe2347c +EBUILD nim-2.2.2.ebuild 4511 BLAKE2B 2579fdd6e71f73b9a92a6b1ae039e1ee210eef05c6b050109a27a0325a042f5f95389e59ac4c316749fccc07d4460593063aca8fa0d8f2970c4a87e28a67fcea SHA512 c8adfabfd8d59e35af3b968d1009c3a81eeaad8b513bed8571429f6b390157333b61e8378f1ffce1073e631f6a6cfb72bc94b7d1b293596573f58bf8a841f3b6 MISC metadata.xml 2093 BLAKE2B 250d27e71538be674ff7f32fe55089fca33f0d6ab55fdbe2b0f858f3d4373e729f273c16b2bf0bc3265be4289e7de1438096bf60e69bd0100e126fc5cc6173eb SHA512 74a188f13cc0653aa30d0c18126ed1cfb11d4325d71ffca6af03ad62b135796cd64d269e2ea85280cd1e486b527947b287eee4db648600451336e323882ff0e3 diff --git a/dev-lang/nim/files/nim-2.2.2-testament-skipfile.txt b/dev-lang/nim/files/nim-2.2.2-testament-skipfile.txt new file mode 100644 index 000000000000..347718d826de --- /dev/null +++ b/dev-lang/nim/files/nim-2.2.2-testament-skipfile.txt @@ -0,0 +1,87 @@ +# -*- conf -*- +# broken, bug https://bugs.gentoo.org/930542 +tests/c/temit.nim +tests/ccgbugs/t10964.nim +tests/niminaction/Chapter3/ChatApp/src/client.nim +tests/niminaction/Chapter3/various3.nim +tests/niminaction/Chapter6/WikipediaStats/concurrency.nim +tests/niminaction/Chapter6/WikipediaStats/concurrency_regex.nim +tests/niminaction/Chapter6/WikipediaStats/parallel_counts.nim +tests/niminaction/Chapter8/sdl/sdl_test.nim +tests/parallel/tdeepcopy.nim +tests/parallel/tdeepcopy2.nim +tests/parallel/tflowvar.nim +tests/parallel/tlet_spawn.nim +tests/parallel/tpi.nim +tests/parallel/tsysspawn.nim +tests/parallel/twaitany.nim +tests/stdlib/thttpclient_ssl.nim +tests/stdlib/tthreadpool.nim +# broken +tests/assert/tassert_c.nim +tests/async/tasync_traceback.nim +tests/async/tasync_traceback2.nim +tests/async/tasync_traceback2.nim +tests/coroutines/twait.nim +tests/dll/nimhcr_unit.nim +tests/errmsgs/t14444.nim +tests/errmsgs/t23536.nim +tests/errmsgs/tcall_with_default_arg.nim +tests/errmsgs/tproper_stacktrace.nim +tests/errmsgs/tproper_stacktrace2.nim +tests/errmsgs/tproper_stacktrace3.nim +tests/exception/t13115.nim +tests/exception/t22469.nim +tests/js/tmangle.nim +tests/js/twritestacktrace.nim +tests/lent/tbasic_lent_check.nim +tests/misc/trunner.nim +tests/misc/tsizeof4.nim +tests/misc/tstrace.nim +tests/misc/twarningaserror.nim +tests/parser/t20922.nim +tests/pragmas/thintprocessing.nim +tests/pragmas/tused.nim +tests/pragmas/twarning_off.nim +tests/range/tcompiletime_range_checks.nim +tests/stdlib/tos.nim +tests/stdlib/tstackframes.nim +tests/stdlib/tstats.nim +tests/system/talloc.nim +tests/testament/tshould_not_work.nim +# broken on musl + llvm +tests/coroutines/tgc.nim +tests/coroutines/twait.nim +tests/misc/t18077.nim +tests/misc/temit.nim +tests/nimdoc/t15916.nim +tests/nimdoc/trunnableexamples.nim +tests/nimdoc/trunnableexamples2.nim +tests/objects/tobjcov.nim +tests/objects/toop1.nim +tests/stdlib/tencodings.nim +tests/stdlib/tgetaddrinfo.nim +tests/stdlib/tstdlib_various.nim +tests/stdlib/tstreams.nim +tests/stdlib/ttimes.nim +tests/vm/tvmmisc.nim +# require network +tests/stdlib/thttpclient.nim +tests/stdlib/tnetconnect.nim +tests/stdlib/tssl.nim +# don't work without megatest +tests/misc/tjoinable.nim +tests/testament/tjoinable.nim +# don't work with "--hint:all:off" hack +tests/concepts/t3330.nim +tests/stylecheck/t20397_2.nim +tests/stylecheck/treject.nim +tests/stylecheck/tusages.nim +# need external dependencies +tests/manyloc/keineschweine/keineschweine.nim +tests/manyloc/nake/nakefile.nim +tests/niminaction/Chapter7/Tweeter/src/tweeter.nim +# need functional valgrind +tests/destructor/tnewruntime_strutils.nim +tests/destructor/tv2_raise.nim +tests/views/tsplit_into_openarray.nim diff --git a/dev-lang/nim/nim-2.2.2.ebuild b/dev-lang/nim/nim-2.2.2.ebuild new file mode 100644 index 000000000000..a318694ec47b --- /dev/null +++ b/dev-lang/nim/nim-2.2.2.ebuild @@ -0,0 +1,188 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ATLAS_V="0.8.0" + +inherit edo multiprocessing shell-completion toolchain-funcs xdg-utils + +DESCRIPTION="Compiled, garbage-collected systems programming language" +HOMEPAGE="https://nim-lang.org/ + https://github.com/nim-lang/Nim/" + +SRC_URI=" + https://nim-lang.org/download/${P}.tar.xz + https://github.com/nim-lang/atlas/archive/refs/tags/${ATLAS_V}.tar.gz + -> nim-atlas-${ATLAS_V}.tar.gz +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" + +IUSE="test-js test" +RESTRICT="!test? ( test )" + +BDEPEND=" + sys-process/parallel + test? ( + dev-db/sqlite:3 + dev-libs/boehm-gc + dev-libs/libffi + dev-libs/libpcre:3 + dev-libs/openssl + media-libs/libsdl + media-libs/libsfml + test-js? ( + net-libs/nodejs + ) + ) +" + +PATCHES=( "${FILESDIR}/${PN}-2.2.0-makefile.patch" ) + +src_configure() { + xdg_environment_reset # bug #667182 + + unset NIMBLE_DIR + tc-export CC CXX LD + + mkdir "${HOME}/.parallel" || die + touch "${HOME}/.parallel/will-cite" || die "parallel setup failed" + + cat > nim.cfg <<- EOF || die "Failed to create Nim config" + cc:"gcc" + gcc.exe:"$(tc-getCC)" + gcc.linkerexe:"$(tc-getCC)" + gcc.cpp.exe:"$(tc-getCXX)" + gcc.cpp.linkerexe:"$(tc-getCXX)" + gcc.options.speed:"${CFLAGS}" + gcc.options.size:"${CFLAGS}" + gcc.options.debug:"${CFLAGS}" + gcc.options.always:"${CPPFLAGS}" + gcc.options.linker:"${LDFLAGS}" + gcc.cpp.options.speed:"${CXXFLAGS}" + gcc.cpp.options.size:"${CXXFLAGS}" + gcc.cpp.options.debug:"${CXXFLAGS}" + gcc.cpp.options.always:"${CPPFLAGS}" + gcc.cpp.options.linker:"${LDFLAGS}" + + $([[ "${NOCOLOR}" == true || "${NOCOLOR}" == yes ]] && echo '--colors:"off"') + -d:"release" + --parallelBuild:"$(makeopts_jobs)" + + # some tests don't work with processing hints + --processing:"off" + EOF + + cp -r "${WORKDIR}/atlas-${ATLAS_V}" "${S}/dist/atlas" || die + + mkdir -p "${S}/dist/atlas/dist" || die + cp -r "${S}/dist/nimble/vendor/sat" "${S}/dist/atlas/dist/sat" || die +} + +src_compile() { + emake CC="$(tc-getCC)" + + local -x PATH="${S}/bin:${PATH}" + local -a nimflags=( + -d:release + --listCmd + --parallelBuild:$(makeopts_jobs) + ) + + edo ./bin/nim compile "${nimflags[@]}" koch + edo ./koch boot "${nimflags[@]}" -d:nimUseLinenoise --skipParentCfg:off + edo ./koch tools "${nimflags[@]}" + edo ./bin/nim compile "${nimflags[@]}" ./tools/niminst/niminst.nim +} + +src_test() { + local -x PATH="${S}/bin:${PATH}" + local -a nimflags=( + # Leave only the safe hints enabled. + --hint:all:off + --hint:User:on + --hint:UserRaw:on + ) + local -a testament_args=( + --skipFrom:"${FILESDIR}/nim-2.2.2-testament-skipfile.txt" + --nim:"bin/nim" + --targets:"$(usex test-js 'c js' 'c')" + ) + + if [[ "${NOCOLOR}" == true || "${NOCOLOR}" == yes ]] ; then + testament_args+=( --colors:off ) + fi + + local -a categories=() + readarray -t categories < <(find tests -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort) + + # AdditionalCategories from "testament/categories.nim". + categories+=( debugger examples lib ) + + local test_return=0 + + local tcat="" + local checkpoint="" + for tcat in "${categories[@]}"; do + # Use checkpoints for less painful testing. + checkpoint="${T}/.testament-${tcat}" + + if [[ -f "${checkpoint}" ]] ; then + continue + fi + + case "${tcat}" in + testdata ) + : + ;; + + arc | gc | ic | js | msgs | stylecheck \ + | testament | untestable | objects | valgrind ) + einfo "Skipped nim test category: ${tcat}" + ;; + + * ) + einfo "Running tests in category '${tcat}'" + nonfatal edo ./bin/testament "${testament_args[@]}" \ + category "${tcat}" "${nimflags[@]}" \ + || test_return=1 + ;; + esac + + touch "${checkpoint}" || die + done + + if [[ "${test_return}" -eq 1 ]] ; then + die "tests failed, please inspect the failed test categories above" + fi +} + +src_install() { + local -x PATH="${S}/bin:${PATH}" + + edo ./koch install "${ED}/usr/lib" + dosym -r /usr/lib/nim/bin/nim /usr/bin/nim + + # "./koch install" installs only "nim" binary but not the rest. + local exe="" + while read -r exe ; do + einfo "Installing nim support tool: ${exe}" + + exeinto /usr/bin + doexe "${exe}" + done < <(find ./bin -type f -not -iname nim) + + newbashcomp dist/nimble/nimble.bash-completion nimble + newbashcomp tools/nim.bash-completion nim + newzshcomp dist/nimble/nimble.zsh-completion _nimble + newzshcomp tools/nim.zsh-completion _nim + + # Install the @nim-rebuild set for Portage. + insinto /usr/share/portage/config/sets + newins "${FILESDIR}/nim-sets.conf" nim.conf + + einstalldocs +} diff --git a/dev-lang/nprolog/Manifest b/dev-lang/nprolog/Manifest index 80fe0a114354..c5848ddcd96f 100644 --- a/dev-lang/nprolog/Manifest +++ b/dev-lang/nprolog/Manifest @@ -3,7 +3,9 @@ AUX nprolog-3.88-makefile-CURSES_CFLAGS-edlog-rule.patch 780 BLAKE2B 95e6e7a10af DIST nprolog-3.53.tar.gz 682333 BLAKE2B 827e6ff1b066e42fd10df8788a6752ef4df7692cc3d11ad6b1bb001b72d2e916997abae21e182c161ac1a1098362a2e8430a1b1500b4ad97ca74a00db19e70d2 SHA512 10de04a1737999203d23911b3c36ce506b112476238ec1c28bcade2a459cec6d8ac2310dd8ba3bd1af82aa390444ff5c37536585429faa7c12fa9ee154243087 DIST nprolog-3.88.gh.tar.gz 1337137 BLAKE2B 0d8f8d5e8242e3ab172f0a1256252ef99b6daf76a77fb75710c0286d55aa02e79e78601ec4347e42d88411cc7528d4e3b041496df04335496b71fc41cb3573c6 SHA512 12ef940792a6c9cd44cafad5440829d43b0c4736732341172255733f163d48b189233b62288e4fd59d36e5a378742f783a0400c2c4dc3d6b06570143b06685db DIST nprolog-3.89.gh.tar.gz 1286015 BLAKE2B 006e9ecfc541cc57cd67454ce3c10e6f8c9fce63695a4395d1b1d3db82aa30483d78503544d5b4ffbe2e87902fa05fe39fd2c6ad2fe4d3e54d54e96901a6e69f SHA512 9df70ec2c37861a6374fd0093b426cc0ba55138680e164f9d84ed830470cc955c2da7a24ba3fb517b4dbf5c0154062f9431905d9d326db6f7a7ddccee250a7ea +DIST nprolog-3.90.gh.tar.gz 1294763 BLAKE2B 70f728c44b3abce4c3d969ab4c015d89414412a6db06c6041c34376d4ddd10977a1cd2a33d6bdc07d1dd8f77d46ab0a704478d0534ec71bb85952ec29f8bc087 SHA512 9ab0fbed24bf57931af7b430c0f68c9b2cb93a63a5d8e6f6079bcde3f8d7adb181a44f6e2517860af9d3e011faec8577b448146a2dcfd2a2ccee6373f3187ada EBUILD nprolog-3.53.ebuild 888 BLAKE2B 1a70453da30466404a14daa097c7df96cd95bcf759becad989cd538e6b17739f86a06301950ed1913314b750955c3c8f3a07f650ce41a3fab431102f414deaaf SHA512 8fc94200ca57c0a592500c1f10a8b58fafb41c8ee28f5dcfea20327784a1221a5440bf72f6a53e1c365dd3bc1006da99d8aa2e8b541d07956a8502f9187c68e5 EBUILD nprolog-3.88.ebuild 1100 BLAKE2B 7f056d2d92d21e2d343f65f8aebee3934d7badd69aefe5fdeaf1230fb54cd13e09bee73c89f51c78fd2accbe9c91a8b2e2890133a567d8d9cd9a525c8eb79f64 SHA512 b697953177b8f268da8bdfa308750fa67be3b9b079c8ce2d1d01cc82db21771cd29daac509a8aed2013c24c2902e8c03acd9b415f40925010fb92e210583c811 EBUILD nprolog-3.89.ebuild 1032 BLAKE2B e39dc2dd493eebcdd307a5453f9e312c01848280a042ace8eb4255e78a35379d8829581c8635740da506419af011e0f9daa7f2a17ef966b6ff36b93108dd96fa SHA512 e1d11da019820e23d60ccbea7cfa3deabd1466112aeeb7ef4942f624860553d9736cfad4329439e04f0a9ee7ee5d200b972391e38249d28567926098e56e9b3f +EBUILD nprolog-3.90.ebuild 995 BLAKE2B c6b2e855cd048ab041273a3f464f153db96fbaf05e9b62770b03b3971c8188096b0d694c4ee3488ac0dfda775e94d312934e78e5bc70afe966ff9e6976c597e8 SHA512 7ad20ffc7a913cc779ce4feee01d4a6f0c3b5275c68cea81bfd09245ebf49885605d4054a65c76c1eda2ccb9c4c74509279fbb2ed6e2cfe4d6b2e7ed6dd4cb6b MISC metadata.xml 657 BLAKE2B 9331358542d57958385bc1218b4a1c5d38185ab0822d0cc68e51bcc5f8b00645a523a1a4f60d30188efc3ed7cb934f0a6a964d27bf0915c5956c69774c734590 SHA512 972ae4d1f2179887f77d8805f2e5482c17767e38b078fa9d9ee65a2f43e0b56b76fccd0166f4c5121de9a7cead4faa7683bd8e9076c257ffb2d1deb673eb276e diff --git a/dev-lang/nprolog/nprolog-3.90.ebuild b/dev-lang/nprolog/nprolog-3.90.ebuild new file mode 100644 index 000000000000..b9700d2ec470 --- /dev/null +++ b/dev-lang/nprolog/nprolog-3.90.ebuild @@ -0,0 +1,58 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="Interpreter and compiler to be compatible with Arity/Prolog32" +HOMEPAGE="https://github.com/sasagawa888/nprolog/" + +if [[ "${PV}" == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/sasagawa888/${PN}" +else + SRC_URI="https://github.com/sasagawa888/${PN}/archive/refs/tags/v${PV}.tar.gz + -> ${P}.gh.tar.gz" + + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="BSD-2" +SLOT="0" +IUSE="doc" + +PATCHES=( + "${FILESDIR}/nprolog-3.22-ncursesw.patch" +) + +DOCS=( README{,-ja}.md ) + +src_prepare() { + if [[ -f edlog ]] ; then + rm edlog || die + fi + + default +} + +src_compile() { + emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" +} + +src_install() { + exeinto /usr/bin + doexe npl + + insinto "/usr/share/${PN}" + doins -r example library + + if use doc ; then + DOCS+=( document ) + + docompress -x "/usr/share/doc/${PF}/document" + fi + + einstalldocs +} diff --git a/dev-lang/orc/Manifest b/dev-lang/orc/Manifest index 7acd05049a08..f41fa8180037 100644 --- a/dev-lang/orc/Manifest +++ b/dev-lang/orc/Manifest @@ -2,6 +2,6 @@ AUX orc-0.4.40-avx.patch 3280 BLAKE2B 875193f2368c6cf668be470359ff6eea09ca4b2144 DIST orc-0.4.38.tar.xz 227152 BLAKE2B f7babfec5f4d792fb52eb0ca23743b6c06a12625edcf0cecbf8e3cb88c13171a760c6874061a3e55a43df5389346b3c3d0ba3463d6e1ef32f685162f7478e631 SHA512 49f34be85f6980e4b5e94f848016f5788b658323f3a120110bc237722ac99938c02976efbe96022d148054330432899533305d4dd21be8fab76fd1995179339a DIST orc-0.4.40.tar.xz 233276 BLAKE2B 2f2be5b7eaf5ea8c2fc55ff3938b5a9e9ef25a1ff3c5de4c02f9847b2df9039c8f412b9d780a172e78838c22f5006544a8181d7aaa22c47be98e6f050c04435e SHA512 2cbc0b8b9f5f429e0c4b24b7b9a8bc5d249c013470d8a595fdb3969a68a90c95c3b1e79063851f2d0ca7f7888d33901f227d2e04f919df00caf37eca6270c0e3 EBUILD orc-0.4.38.ebuild 1114 BLAKE2B 1f74ad54afbd80418527e9db0ba3f92c188464ac733df92e748c263f45f37dc9e9093ac590a9ff7a86af5337333d5aa173b59ca23ab20b804324971d52d9e451 SHA512 a2a392126cd203248a393ae95653aa7f32cda77261a037322189cfb5db7f2b3ba470b8d592791588ecd4f23140313db8d8de181d2756fe4e1320692ecbf447d3 -EBUILD orc-0.4.40-r1.ebuild 1160 BLAKE2B 7080d31e3efb53d8fcc5966559b8a2af48b36cc29cb3030923eebbf82c2d97e3d892dfdc1b0d6620a1cd658b5c0839a045c863f7ff42f05aafaa9ee654310019 SHA512 55d603cd8e71038a1136acc734e8007648416add135014d062140d2376843b007fbf58cb8d17f7a36803351448322c78b84f8b15ab410f6c3a1dda5ffdf1b8ab +EBUILD orc-0.4.40-r1.ebuild 1157 BLAKE2B bf5de5259037893bd4b7aca493f0aa38534212c68d0721632fccc222fb0a663ee14bd3c4d19ff21a46771ec97813040183714b1a20b5ff2b31fc3cf3cd4d42ec SHA512 6a39a4040afba2208f844fd236ee874cd89a37c3b82a4a1329e558b50ab8652fa5c11fa22f4187d22af1fbc7cb8d7ccc0712a91df8b81e25af7a6be3c7d36fed EBUILD orc-0.4.40.ebuild 1120 BLAKE2B 2e116fcd9cf8311193229f3a3e79ee398f4d2b33746bfcaf0f06d709699fd3d6e98f0a44aa3a024851b59aeaceeb672c6378186d3ccb46cc2237800351c6c4f6 SHA512 4c98d9f60cbde772c563e73fcb76122d7e5e60dda195b1c80b7094dbb428de408ead6d7de48049fcfa797811a623c4256041db56eb811fc2593ff54c5b539f6b MISC metadata.xml 265 BLAKE2B 15de31a2337fe8b9175ffe3fd29cb1eb24148d7463f772b18a7fe8b38bd4edb05005df1ce6996cf23dad21db879c18b95d245fa9d096a002b95155c01088f516 SHA512 78a0c7a2a820f7032f384cf68d2affdd92d6f1466778f879909d0acfcc1cdc3bd64eee700ba06979f561583981033aae59b5d61eb4cfd01fc71fc13e4433305f diff --git a/dev-lang/orc/orc-0.4.40-r1.ebuild b/dev-lang/orc/orc-0.4.40-r1.ebuild index e143a3d8cd1a..591410964079 100644 --- a/dev-lang/orc/orc-0.4.40-r1.ebuild +++ b/dev-lang/orc/orc-0.4.40-r1.ebuild @@ -11,7 +11,7 @@ SRC_URI="https://gstreamer.freedesktop.org/src/${PN}/${P}.tar.xz" LICENSE="BSD BSD-2" SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" RESTRICT="!test? ( test )" IUSE="gtk-doc static-libs test" diff --git a/dev-lang/pypy/Manifest b/dev-lang/pypy/Manifest index 1f24dd7553e7..43509ec07fec 100644 --- a/dev-lang/pypy/Manifest +++ b/dev-lang/pypy/Manifest @@ -6,11 +6,11 @@ DIST pypy3.10-gentoo-patches-7.3.17_p4.tar.xz 30520 BLAKE2B b6ace80e0dc19a3fc24b DIST pypy3.10-gentoo-patches-7.3.18-r1.tar.xz 6184 BLAKE2B 3df1f3dea0902a02ee7982797fb68becad99ffec56bb5d29ca779c23bf5f9db3edb31f95410ad0b2e8401dfe8493e74bdaf4065d2acd78ce1af0b79a3fbb8b30 SHA512 fbc65781047bc8de8cdd9cacb7f6a06abe0a49ee70c6f675ff1b472378a49883be08ab465a49df4363c472f1876471213ef1f5621a6c25534f9fbbdd645cf29b DIST pypy3.10-v7.3.17-src.tar.bz2 23350562 BLAKE2B 0a7a091976b352de61057f238fa386f767dd4d2fbcdcc0b4376066c20c2ad35d3818fa6e9e163ab5fd341856802e8ad1e2891decf5948c13cdb26726cd42019e SHA512 46e30845bbc73cf56f5033a24d3583253ce198522f3a28ae4e789884063ba167d401fc08ae7fc8c7769feed9cd942a8ab38961c8b8794d7fae8f9955479faa96 DIST pypy3.10-v7.3.18-src.tar.bz2 24535433 BLAKE2B 2e5ab213db5cd118076fa3b0bd601818a2a4973134b78ce28056182d635b91719159e6be47cd596407b7cc545b0be957db21322dde0fbba1b1d167e5c6cd80c4 SHA512 8eb3bd618d04f4529b5869549c9208bfe465b5aae6240abe8b252681c16b44ba3d1b2c77ea4dc607a8738479c47e4a1c92f3ead7705b476167790b33c85a3b0f -DIST pypy3.11-gentoo-patches-7.3.18.tar.xz 3688 BLAKE2B 9cb19493eb9b9cb38f17d59931a9cd84328e69a85bc8c0c76cdbcf92a5990d50ffe8b7d4b605f7fbab314d40b8afdb6824ffbe5f51df628404421dc842ed5986 SHA512 07ee93108d13546fe1323cf1c2bffa9335646592a83f0ddb5f69e2e4bd31f5349d611ee569d2ab6e3cfa70d91dbaea8feced562aa868583ca5c623b0ab8d1555 +DIST pypy3.11-gentoo-patches-7.3.18_p1.tar.xz 4136 BLAKE2B 107ed73445978e56a5b2710a11e431a2cea038137a348d173e6249281ff58a8091de7b2e851a7752af28dfadcf6c4aa037e43e25431df7b19533289cdb881922 SHA512 307c9e0d369f066e7dc1d93230d7f6cce27657d81982688f2f2d1183eacf0ef0081300a07d6f7ea3dd45c46e393e79e17415f1112cb82ccc196cacc87595d749 DIST pypy3.11-v7.3.18-src.tar.bz2 24908760 BLAKE2B e467d0b9ad254382bc727be0d2eea61573857a9638f0f7c896069bc2db9052876a1c9c77f12672728754287e0f69fc38a6cd8d7235e9be82de87292e409e85a4 SHA512 d4337a69c46c86594ae3eae09b8ab83db073eb4955f4e04bb8168ac412e8e55698938c2045f3e5d3c6a459a19cdf45a08af63e7587922a5d879fba373c6c9faf EBUILD pypy-2.7.7.3.17.ebuild 7390 BLAKE2B b840b2c94b60e9d39aae7d5062c56f398428e4d31f1613cda39e34a6de1c279d06eace53774e08c7f5d2ab01f85d9bb30184de5fdbf9374ad276b97f58ac4e5a SHA512 8ffceda18cdc35e932d65ccb2c1962ce13c1fb46585afa9c909b9882e251ee8503822d1d0aac4f1ea669f566e0ae87a527fa467a2fc8578d899e67d58cca07bc EBUILD pypy-2.7.7.3.18.ebuild 7392 BLAKE2B 4b35786d65011016b75f0e173c047582b025d4f7f89f9f86e2c7fd7dcfb388b77a31f6f515393a47101756999ee495b7620de43c4275732d221ba964b066c412 SHA512 45baadb55e445268f792ff4bf75d40e611482e5c68635e411266d10c899de08d784e4ec6137a951b7e43ad9e2c2aae2f5c1818d686cfeba684bf07acbfba8c34 EBUILD pypy-3.10.7.3.17_p4.ebuild 7140 BLAKE2B db6bfe1c3d44cdf9f4a1639c6bf8e35253c0ac3687f3a1315bfd52ca82c4a6fa0c3626c2aad938f8bcf2b2b6851db6fa1ed5f1847a891a08800040e0e4c27ea4 SHA512 efe64c07cfbdcb2fafbbbb93adeda1fd3ba22164130cb908d8bf26d0d82713fca179463f44673fb262573dca96a468573b53e67ab97d3f51563e23888afadfff EBUILD pypy-3.10.7.3.18.ebuild 7159 BLAKE2B 59ddd1f0922af9c12feb8c0a94e2fb88a15122786fbba7c9f14d2d7e9a542da9058706e563f914e21279ac7513135cf072f55e3f00eea2343a3d7b57498187c3 SHA512 8e8c8ae322d52844628d4cc3fe1af8d26b2b000f2ad2ea62c65fda7beac4dc554981e048c0bac15163aa8f87127b21da9fa1f9229404d02a8f3aaa71e9d7026e -EBUILD pypy-3.11.7.3.18.ebuild 7056 BLAKE2B 9343ef39f806b7dbae1e2d5afff9dccc59c9cd7442bd33ecf39cde75db6088ec2ba4f2953c56c3e71ed72b378a737d32b60bdabc14147f245bfcb0b880d51089 SHA512 566790f9fe862608b4ef55d96ca432bd4cc5a76ecbdbe0475aeffd15ff7030d325898faaaa521027464c6890ec760e4665f6bbebdc95d8aaa1cc039a41827af5 +EBUILD pypy-3.11.7.3.18_p1.ebuild 7056 BLAKE2B 9343ef39f806b7dbae1e2d5afff9dccc59c9cd7442bd33ecf39cde75db6088ec2ba4f2953c56c3e71ed72b378a737d32b60bdabc14147f245bfcb0b880d51089 SHA512 566790f9fe862608b4ef55d96ca432bd4cc5a76ecbdbe0475aeffd15ff7030d325898faaaa521027464c6890ec760e4665f6bbebdc95d8aaa1cc039a41827af5 MISC metadata.xml 1124 BLAKE2B f1d09d26175cf20d1440a9a83352cf6f2f2e514d35d95116caf4a5ee86547f0165a6369e7a6b129ded75d28ba5a0c1c8f4da7d664d7c1e3c1e95153593057b3c SHA512 ae95400c9a1efc75372201c2353b128302355d1d087094953d73c325fa72bc24662d31c7287ae6a2583448ac345bb60744ac19391e07f8da8ef0327627e0e462 diff --git a/dev-lang/pypy/pypy-3.11.7.3.18.ebuild b/dev-lang/pypy/pypy-3.11.7.3.18_p1.ebuild similarity index 100% rename from dev-lang/pypy/pypy-3.11.7.3.18.ebuild rename to dev-lang/pypy/pypy-3.11.7.3.18_p1.ebuild diff --git a/dev-lang/pypy3-exe/Manifest b/dev-lang/pypy3-exe/Manifest index 9eff854f84a0..936d5a2f3d2d 100644 --- a/dev-lang/pypy3-exe/Manifest +++ b/dev-lang/pypy3-exe/Manifest @@ -1,4 +1,4 @@ -DIST pypy3.11-gentoo-patches-7.3.18.tar.xz 3688 BLAKE2B 9cb19493eb9b9cb38f17d59931a9cd84328e69a85bc8c0c76cdbcf92a5990d50ffe8b7d4b605f7fbab314d40b8afdb6824ffbe5f51df628404421dc842ed5986 SHA512 07ee93108d13546fe1323cf1c2bffa9335646592a83f0ddb5f69e2e4bd31f5349d611ee569d2ab6e3cfa70d91dbaea8feced562aa868583ca5c623b0ab8d1555 +DIST pypy3.11-gentoo-patches-7.3.18_p1-r1.tar.xz 4712 BLAKE2B 474b61b2b9daa10d664545b3967cda2976d682f7f8a207a604240645afa86f4ab7c181c5f86dc82dc2b2da9520023d812ca349768bb3e124db17d5376f403ea4 SHA512 a79a98bd454b4d60e8c81d94c07a02a5212ca143d81bdafde227791afe8f502fb5c069bec809c6172aa4545c158f2f6b26cc7337246cccc8a66aea91300974a7 DIST pypy3.11-v7.3.18-src.tar.bz2 24908760 BLAKE2B e467d0b9ad254382bc727be0d2eea61573857a9638f0f7c896069bc2db9052876a1c9c77f12672728754287e0f69fc38a6cd8d7235e9be82de87292e409e85a4 SHA512 d4337a69c46c86594ae3eae09b8ab83db073eb4955f4e04bb8168ac412e8e55698938c2045f3e5d3c6a459a19cdf45a08af63e7587922a5d879fba373c6c9faf -EBUILD pypy3-exe-3.11.7.3.18.ebuild 2775 BLAKE2B bf3a43fb34d96eb6969950247682335acd0c35c01c8f72928b238058a625625ea89509446f8f47dfaa82319a740fdd65f8f2b9193e0dbfbdcdb1146d6eadc724 SHA512 c12f40652fa4b15206b7ae5b1e436331a2997ecede608326d05297700b228af02e9c77ccf1f741f0af9e43cd8f501c6ac89730a926d5472cfd9bf9bf20129624 +EBUILD pypy3-exe-3.11.7.3.18.ebuild 2781 BLAKE2B af6fdde50cfa893b9095ee8ad3b734c5be5c3d52d36ecb161ac87678e24318e0f57c21eebe1fd465316148e59eee908c473150e38b336808a2095e63d59cbf74 SHA512 a6179194114c331b8e1b74d6aa0480ec90bcc083173bca4cb226b203b7ed0690db75e47fb6128faec6b4722f0de07f2974cfd71821a5de6308e1fbbfc955d607 MISC metadata.xml 572 BLAKE2B cfcd1422ec312338fd876bc4747a962ac3c4bd06e28a3891489b065fba4c7be2daa6955f51e8136d9b8cf7b68bb7eb887b6f419ee9fd626ebd6db204acb7995d SHA512 c79250d47e3d5c99c2c903bfc185449cc41f88e2b923b8eae1401e83c0f23fa1a12ad85f50b6e25844e805e543ae897ccf43185a1bdf9f992dff765249e55bc1 diff --git a/dev-lang/pypy3-exe/pypy3-exe-3.11.7.3.18.ebuild b/dev-lang/pypy3-exe/pypy3-exe-3.11.7.3.18.ebuild index 9766feaccfc6..463370032f36 100644 --- a/dev-lang/pypy3-exe/pypy3-exe-3.11.7.3.18.ebuild +++ b/dev-lang/pypy3-exe/pypy3-exe-3.11.7.3.18.ebuild @@ -10,7 +10,7 @@ PATCHSET_PV=$(ver_cut 3-) PYPY_PV=${PATCHSET_PV%_p*} MY_P="pypy${PYVER}-v${PYPY_PV/_}" -PATCHSET="pypy${PYVER}-gentoo-patches-${PATCHSET_PV/_rc/rc}" +PATCHSET="pypy${PYVER}-gentoo-patches-${PATCHSET_PV/_rc/rc}_p1-r1" DESCRIPTION="PyPy3.11 executable (build from source)" HOMEPAGE=" diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest index 28251779292b..5dbcaa28b33f 100644 --- a/dev-lang/python/Manifest +++ b/dev-lang/python/Manifest @@ -20,6 +20,8 @@ DIST Python-3.14.0a3.tar.xz 22749680 BLAKE2B 4a0457a98fe1a35c01a4607c11eefeb7ef4 DIST Python-3.14.0a3.tar.xz.sigstore 4891 BLAKE2B c251bfc3e332174c5050c2d8524aea4865e28e73c39288ac151bea10e0039c3af545a26acc48b9ae8deed9befddb11e810103620be6a7934ea79e7b1f3182eb2 SHA512 dd7d6c543ba2ba8dc8d2a6c891adcf85de7eb857ceb3ffb33f5f06fbcf0a6bcd6517502cfd35acb86ec13d85d487313eb9a396d78c42d1c506d2261e1c4b861d DIST Python-3.14.0a4.tar.xz 22798932 BLAKE2B 4dd8632503e142456deefa749aa8d7a93b98c988bdfe905ae650e8e72b2a22de9e88b6d7ba65ec277748b4c8b919a176ca22552e9482f4883b96bf9129dd15c2 SHA512 b70671ebbd9f777fdcb661405c538c733600470ac34992a5b3df99d2f5afecc22cd8325eeec50eeef043181e634da91e535c166b9b5ed421d4e6aa41b79da3ab DIST Python-3.14.0a4.tar.xz.sigstore 4895 BLAKE2B 9a1c9ef623a0b8a7469d3fb56e0f73bf28947cb04ab797086962886d6e816e90c2df59e26af952e251c69e8e42c8888aa74bf866aebd7ff1a09526f3bd0d9472 SHA512 117dee2563607e4bc4190742d341f5b088e3feb205d59144b4a50bec1ec1c6df5f0118fbf88c8e78327f59d222ca7d98f31f1e5ff1d9488c0bbf01cd95df22ac +DIST Python-3.14.0a5.tar.xz 22850560 BLAKE2B 69d57ff07aad021fcfb626f9164529ce071e08182a4334a95b8411c451aa93db09c60d149868bbaad67d8c4bd79598ea22fa76856c3f70b9c35b04b6f48dbeb4 SHA512 ae34c994f00c36c6ce18091c63eb3469aa545ee391c6879c89f5722f7311f2e97cc997477897969777dfaf98090e3dd01dcdb655c986140e9a7796f963be9df9 +DIST Python-3.14.0a5.tar.xz.sigstore 5067 BLAKE2B c3ef20345e05763d201090756ce7e786969d8351ba567b5708ec7a20e6d348c626201fd5b63afa51c0b6740aa3406222b4e07f01d81a8e3812dfc84b751ca248 SHA512 e6755be4a974d8007519e18b9ef417129fa032c9dff508f5170622bf8e8ef0616c8395a1261e9e0e80848c739f31e8369fb5893e7b29f308ad8d62cf1033d609 DIST Python-3.8.20.tar.xz 18962788 BLAKE2B 715c75e0c0a3d3b77af7f07478311bb0554b80aac72915be703aa2d0dd6459a972e5669808e64da14a0b91bb183e00655055c1726f302dc3ccd8721e3b4ae3e6 SHA512 3c9341ee1fd33cb687958dcf2b7c0c7700489726c4d530c3e9d9537d46a6ab534541a4b312232d8505bea395a07e4518c42d75fb7571103e6b266f8f44115c61 DIST Python-3.8.20.tar.xz.asc 833 BLAKE2B 5c86c15a1090b42e42bb7512565b1a7ad9d2137d59e9fd1ab0f83fdfc37dfcf184389418d6703db809e9c8c04a169af292665a2b58bf5dc61b7724ecbb4132d9 SHA512 a751ae0407a593d97acac4d5f8a0456580c753efa12a7d960125c219b4897fdb26fc1ffd43d8ea33ad1449162dd3b2904c16b6c51c57561ba73de3ffa62e0eed DIST Python-3.9.20.tar.xz 19648968 BLAKE2B 80a337ff406130599b8320068d11bc275d23473cedd7c85fcb9e40134f0f2d533be6e712139e788a6423cdc74cea938f306aa37c2a5099e3051f3e390159279c SHA512 c828f33edf1704e3149499d6d34e89264cb5cdb2b09ff05561641b359716d7996f0fe928629e09f006b1fd7850fdaf937275919c7fdd83f5efc32707c64d814b @@ -38,6 +40,7 @@ DIST python-gentoo-patches-3.13.1_p1.tar.xz 8672 BLAKE2B d35b8b47c6d549753d9a764 DIST python-gentoo-patches-3.13.2.tar.xz 8316 BLAKE2B 2367808924c83c02b8b2ca765fd4768d4f12cb8e8451eab9d084ce5950a5a81829e573d415f9a16db2e053105def90b5f52c91423fc71e57cd182a1d9c824d8c SHA512 580332ca037c1453f314d5811f96f7bf74defc16cfe515c4fe82ea08a7bf3679aa88d5456db846d988bcf4fbc9eeb4ebe7cee01d135bd55c87931206250e301a DIST python-gentoo-patches-3.14.0a3.tar.xz 6036 BLAKE2B bbcb3f31acb533b8291f4cedcb89c0501a7054bbf1f98ea000c43e5a99e3b8bd160c6fb81e28bad90c85dd0256d523f72b9e25f30c30b5b5e9d60a9055a612d1 SHA512 9f87b3f1f326f88c924c49e37f39f63314199cfc354d452fef860ab36e143145a2c1d832c1b7d4357ade1c1090de00086bc5d6a9d7981bad210a99ffcfa2a858 DIST python-gentoo-patches-3.14.0a4.tar.xz 7452 BLAKE2B 5d3b0dc6f9c2f0ffeac50e4af1915a8d8ec29350c56203ec66d6580ae705a23316f4c85f28908000c50c58eb3400e63ff379ba26d219f48ca7f559633ba4c153 SHA512 0e571f6693e44f439c7ac499216f4cf70e487768116290c24ee66323c9113fc91d0b4b68c79d1d549d0a14fcee4f79ddc377dfd87932dfcf00c5c11d3784bedc +DIST python-gentoo-patches-3.14.0a5.tar.xz 5668 BLAKE2B b12801ac5bfa50cb6e3bf4b79e70956b771e0a4c0d5d4265115cf144740a914f764655171fdbf3178ba76f91b7765aa681f0097aaa55e6aa330eeeec3320bb4e SHA512 3110f99058136e8587a4cce2f594a5fde7c575027440e9e4d3b77dba0428c6af60cd0d259833d5d46e3b9ac3f24a2ad3111e4c5436cb423079f5c1a230e47d97 DIST python-gentoo-patches-3.8.20_p6.tar.xz 50876 BLAKE2B df0df21c75972fb73e36f66f0c90d3f953b14d7a59bf97ce4214dce6e6d937ed52fbf3db8f3eaf42cde141bfe4d7a731b06e41723285517461c790912706be9e SHA512 48ef567f6972e7975cb61d34a876d8c0db42f1a3c0b832f9366091dd5f2ca854c02887808843d314816c8cf6d7b0738c40e7835fedbba7b84e57f2515dde45e2 DIST python-gentoo-patches-3.9.20_p2.tar.xz 36140 BLAKE2B af0a9e08f3bfd8eb631760d100ec8f54db968a6bd201820192c4ea63ec88e0f83ffe77c709fcf4da43ad8d44eeb239ca1984561c3e7846e3fe4edd757d2321a4 SHA512 d451b41401de631eed996c34f40f2146d4d2f11bfa04fffa762c9b654e690d0ef95be0f51224a964a7c33784bb9b21e58434f6fee17cf39c20b5af34200569d5 DIST python-gentoo-patches-3.9.21_p1.tar.xz 35404 BLAKE2B 7b5ac27e814b06791fa5f0566763711c1b65a7c82ba66f97e237eebc6076f0bfdad3d8269ece6c4d4c238b62cc75b01f68ea3a5d7c4fffc46e88f79b2ba3e7fc SHA512 92c8548b31100a921378c72cc94a81062c96fd795fa2cd001c57a71e4af39e91b21b99e9e84db12adb142d9c4bda809445519c5c8a35545bd10230926bd7eded @@ -59,6 +62,8 @@ EBUILD python-3.14.0_alpha3-r100.ebuild 16695 BLAKE2B 2be26e8dd417df40d72e136170 EBUILD python-3.14.0_alpha3.ebuild 16388 BLAKE2B 7cb2e9c39471f0ccfb2c436c4327469cb6e709f55d38016276876d318042afe59d7df2dea8e829fc21017a87bbd1fa1e3dcad33eb39fb673761d8b9a364f101a SHA512 cc12477ef0388b47441b06f76fc4fc35258753f121735a2ee1648740c9894025b0e426d5bebf922dec17f8c9c10569ee0c62b538cd31b924bdb21ecf4a25b933 EBUILD python-3.14.0_alpha4-r100.ebuild 16695 BLAKE2B 2be26e8dd417df40d72e1361709a16d48add9e5262b09bd04191867f2b0f75b8e71fc8dee98b7f7976e925e54cd18e10e478f6ea06fa34164ce0f1f499738f1b SHA512 dfa892d823a07a7b9356b50a40c066e310ecd8a5e9cc674423a09e390a9115244a46af53df57667b3752103a9ac5bc0e0b9f7a57cec22875499f1edf14895d31 EBUILD python-3.14.0_alpha4.ebuild 16388 BLAKE2B 7cb2e9c39471f0ccfb2c436c4327469cb6e709f55d38016276876d318042afe59d7df2dea8e829fc21017a87bbd1fa1e3dcad33eb39fb673761d8b9a364f101a SHA512 cc12477ef0388b47441b06f76fc4fc35258753f121735a2ee1648740c9894025b0e426d5bebf922dec17f8c9c10569ee0c62b538cd31b924bdb21ecf4a25b933 +EBUILD python-3.14.0_alpha5-r100.ebuild 16695 BLAKE2B 2be26e8dd417df40d72e1361709a16d48add9e5262b09bd04191867f2b0f75b8e71fc8dee98b7f7976e925e54cd18e10e478f6ea06fa34164ce0f1f499738f1b SHA512 dfa892d823a07a7b9356b50a40c066e310ecd8a5e9cc674423a09e390a9115244a46af53df57667b3752103a9ac5bc0e0b9f7a57cec22875499f1edf14895d31 +EBUILD python-3.14.0_alpha5.ebuild 16388 BLAKE2B 7cb2e9c39471f0ccfb2c436c4327469cb6e709f55d38016276876d318042afe59d7df2dea8e829fc21017a87bbd1fa1e3dcad33eb39fb673761d8b9a364f101a SHA512 cc12477ef0388b47441b06f76fc4fc35258753f121735a2ee1648740c9894025b0e426d5bebf922dec17f8c9c10569ee0c62b538cd31b924bdb21ecf4a25b933 EBUILD python-3.8.20_p6.ebuild 13329 BLAKE2B 632fc0c922e18895efadeb33b8963a087f1951bb329c03f3d802fbda81ccf1b7c1e22f03c516d07819d1df66e8e1d7de0a8300ec308c8a56042b51dd86a51d01 SHA512 77e07e26f674bb245cc2d2c519c7a1b9e72a6eadcb4ea0631062189a3bf50e78a160a87d108b6867db9b9c3fdab22e85a290d73059a6859f052d83c7dda20014 EBUILD python-3.9.20_p2.ebuild 15374 BLAKE2B e9920e3c6c3bbfc7c5c07651f5ca16522f8efe926691f818e8126734206b6bd5d8960a769c1cc541505739aeffdce861c6ca176146401fa7c7d02516a56962c7 SHA512 9540922e418d1a820f97e323e98077e6fe584825940144aadae1c30de8f6d27de28d902fd14bcf98a77aa484719864fe2d25283ba7837a43331410401a239d85 EBUILD python-3.9.21_p1.ebuild 15383 BLAKE2B f2ae1145ea27de73568c6d83d6cace1ce8aef9d7f96cb48976491b509f36af6253b6808040e02b32beba212d6cf23742b7e082e8efed48d44eac582c7cc20d2d SHA512 422a48d652925d60387990fea0b8863c6d9a1cfafa20412cd50498fe09cd9ca70ee4b7340b11cc41cea1defd3f65227a7f1303a987bf9fad91aafae89dcd337d diff --git a/dev-lang/python/python-3.14.0_alpha5-r100.ebuild b/dev-lang/python/python-3.14.0_alpha5-r100.ebuild new file mode 100644 index 000000000000..2abe01749d3a --- /dev/null +++ b/dev-lang/python/python-3.14.0_alpha5-r100.ebuild @@ -0,0 +1,635 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LLVM_COMPAT=( 19 ) +LLVM_OPTIONAL=1 +VERIFY_SIG_METHOD=sigstore +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic linux-info llvm-r1 +inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs +inherit verify-sig + +MY_PV=${PV/_alpha/a} +MY_P="Python-${MY_PV%_p*}" +PYVER="$(ver_cut 1-2)t" +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="Freethreading (no-GIL) version of Python programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.sigstore + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +IUSE=" + bluetooth build debug +ensurepip examples gdbm jit + libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-pip ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( + dev-python/ensurepip-pip + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + jit? ( + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') + ) + verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +# https://www.python.org/downloads/metadata/sigstore/ +VERIFY_SIG_CERT_IDENTITY=hugo@python.org +VERIFY_SIG_CERT_OIDC_ISSUER=https://github.com/login/oauth + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER%t} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +declare -rgA PYTHON_KERNEL_CHECKS=( + ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589 + ["DNOTIFY"]="test_fcntl" # bug 938662 +) + +pkg_pretend() { + if use pgo || use test; then + check-reqs_pkg_pretend + fi + + ewarn "Freethreading build is considered experimental upstream. Using it" + ewarn "could lead to unexpected breakage, including race conditions" + ewarn "and crashes, respectively. Please do not file Gentoo bugs, unless" + ewarn "you can reproduce the problem with dev-lang/python. Instead," + ewarn "please consider reporting freethreading problems upstream." +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]]; then + use jit && llvm-r1_pkg_setup + if use test || use pgo; then + check-reqs_pkg_setup + + local CONFIG_CHECK + for f in "${!PYTHON_KERNEL_CHECKS[@]}"; do + CONFIG_CHECK+="~${f} " + done + linux-info_pkg_setup + fi + fi +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.sigstore} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die + + # breaks tests when using --with-wheel-pkg-dir + rm -r Lib/test/wheeldata || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + + # Avoid as many dependencies as possible for the cross build. + mkdir Modules || die + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + _dbm _gdbm + _sqlite3 + _hashlib _ssl + _curses _curses_panel + readline + _tkinter + pyexpat + zlib + # We disabled these for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. This should be rechecked for the pure Makefile approach, + # and uncommented if needed. + #_ctypes + EOF + + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + # this is actually test_gdb.test_pretty_print + -x test_pretty_print + # https://bugs.gentoo.org/933840 + -x test_perf_profiler + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + hppa*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_gdb + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # Kernel-config specific skips + for option in "${!PYTHON_KERNEL_CHECKS[@]}"; do + if ! linux_config_exists || ! linux_chkconfig_present "${option}" + then + COMMON_TEST_SKIPS+=( -x "${PYTHON_KERNEL_CHECKS[${option}]}" ) + fi + done + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + --verbose3 + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + # PGO sometimes fails randomly + local -x PROFILE_TASK="${profile_task_flags[*]} || true" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-libmpdec + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + --disable-gil + + $(use_with debug assertions) + $(use_enable jit experimental-jit) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + # Force-disable modules we don't want built. + # See Modules/Setup for docs on how this works. Setup.local contains our local deviations. + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + $(usev !gdbm '_gdbm _dbm') + $(usev !sqlite '_sqlite3') + $(usev !ssl '_hashlib _ssl') + $(usev !ncurses '_curses _curses_panel') + $(usev !readline 'readline') + $(usev !tk '_tkinter') + EOF + + # disable implicit optimization/debugging flags + local -x OPT= + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + # this just happens to skip test_support.test_freeze that is broken + # without bundled expat + # TODO: get a proper skip for it upstream + local -x LOGNAME=buildbot + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + # -j1 hack for now for bug #843458 + emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + # Fix collision with GIL-enabled build. + rm "${ED}/usr/bin/python${PYVER%t}" || die + mv "${ED}"/usr/bin/pydoc{${PYVER%t},${PYVER}} || die + mv "${ED}"/usr/share/man/man1/python{${PYVER%t},${PYVER}}.1 || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use sqlite; then + rm -r "${libdir}/"sqlite3 || die + fi + if use tk; then + # rename to avoid collision with dev-lang/python + mv "${ED}"/usr/bin/idle{${PYVER%t},${PYVER}} || die + else + rm -r "${ED}/usr/bin/idle${PYVER%t}" || die + rm -r "${libdir}/"{idlelib,tkinter} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" + + # python-exec wrapping support + local pymajor=${PYVER%.*} + local EPYTHON=python${PYVER} + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + # python and pythonX + ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die + ln -s "python${pymajor}" "${scriptdir}/python" || die + # python-config and pythonX-config + # note: we need to create a wrapper rather than symlinking it due + # to some random dirname(argv[0]) magic performed by python-config + cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die + #!/bin/sh + exec "${abiver}-config" "\${@}" + EOF + chmod +x "${scriptdir}/python${pymajor}-config" || die + ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die + # pydoc + ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die + # idle + if use tk; then + ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die + fi +} diff --git a/dev-lang/python/python-3.14.0_alpha5.ebuild b/dev-lang/python/python-3.14.0_alpha5.ebuild new file mode 100644 index 000000000000..f4da576cf95f --- /dev/null +++ b/dev-lang/python/python-3.14.0_alpha5.ebuild @@ -0,0 +1,630 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LLVM_COMPAT=( 19 ) +LLVM_OPTIONAL=1 +VERIFY_SIG_METHOD=sigstore +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic linux-info llvm-r1 +inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs +inherit verify-sig + +MY_PV=${PV/_alpha/a} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.sigstore + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +IUSE=" + bluetooth build debug +ensurepip examples gdbm jit + libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-pip ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( + dev-python/ensurepip-pip + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + jit? ( + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') + ) + verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +# https://www.python.org/downloads/metadata/sigstore/ +VERIFY_SIG_CERT_IDENTITY=hugo@python.org +VERIFY_SIG_CERT_OIDC_ISSUER=https://github.com/login/oauth + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER%t} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +declare -rgA PYTHON_KERNEL_CHECKS=( + ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589 + ["DNOTIFY"]="test_fcntl" # bug 938662 +) + +pkg_pretend() { + if use pgo || use test; then + check-reqs_pkg_pretend + fi + + if use jit; then + ewarn "USE=jit is considered experimental upstream. Using it" + ewarn "could lead to unexpected breakage, including race conditions" + ewarn "and crashes, respectively. Please do not file Gentoo bugs, unless" + ewarn "you can reproduce the problem with dev-lang/python[-jit]. Instead," + ewarn "please consider reporting JIT problems upstream." + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]]; then + use jit && llvm-r1_pkg_setup + if use test || use pgo; then + check-reqs_pkg_setup + + local CONFIG_CHECK + for f in "${!PYTHON_KERNEL_CHECKS[@]}"; do + CONFIG_CHECK+="~${f} " + done + linux-info_pkg_setup + fi + fi +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.sigstore} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die + + # breaks tests when using --with-wheel-pkg-dir + rm -r Lib/test/wheeldata || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + + # Avoid as many dependencies as possible for the cross build. + mkdir Modules || die + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + _dbm _gdbm + _sqlite3 + _hashlib _ssl + _curses _curses_panel + readline + _tkinter + pyexpat + zlib + # We disabled these for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. This should be rechecked for the pure Makefile approach, + # and uncommented if needed. + #_ctypes + EOF + + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + # this is actually test_gdb.test_pretty_print + -x test_pretty_print + # https://bugs.gentoo.org/933840 + -x test_perf_profiler + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + hppa*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_gdb + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # Kernel-config specific skips + for option in "${!PYTHON_KERNEL_CHECKS[@]}"; do + if ! linux_config_exists || ! linux_chkconfig_present "${option}" + then + COMMON_TEST_SKIPS+=( -x "${PYTHON_KERNEL_CHECKS[${option}]}" ) + fi + done + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + --verbose3 + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + # PGO sometimes fails randomly + local -x PROFILE_TASK="${profile_task_flags[*]} || true" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-libmpdec + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + --enable-gil + + $(use_with debug assertions) + $(use_enable jit experimental-jit) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + # Force-disable modules we don't want built. + # See Modules/Setup for docs on how this works. Setup.local contains our local deviations. + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + $(usev !gdbm '_gdbm _dbm') + $(usev !sqlite '_sqlite3') + $(usev !ssl '_hashlib _ssl') + $(usev !ncurses '_curses _curses_panel') + $(usev !readline 'readline') + $(usev !tk '_tkinter') + EOF + + # disable implicit optimization/debugging flags + local -x OPT= + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + # this just happens to skip test_support.test_freeze that is broken + # without bundled expat + # TODO: get a proper skip for it upstream + local -x LOGNAME=buildbot + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + # -j1 hack for now for bug #843458 + emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use sqlite; then + rm -r "${libdir}/"sqlite3 || die + fi + if ! use tk; then + rm -r "${ED}/usr/bin/idle${PYVER}" || die + rm -r "${libdir}/"{idlelib,tkinter} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" + + # python-exec wrapping support + local pymajor=${PYVER%.*} + local EPYTHON=python${PYVER} + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + # python and pythonX + ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die + ln -s "python${pymajor}" "${scriptdir}/python" || die + # python-config and pythonX-config + # note: we need to create a wrapper rather than symlinking it due + # to some random dirname(argv[0]) magic performed by python-config + cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die + #!/bin/sh + exec "${abiver}-config" "\${@}" + EOF + chmod +x "${scriptdir}/python${pymajor}-config" || die + ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die + # pydoc + ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die + # idle + if use tk; then + ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die + fi +} diff --git a/dev-lang/rust-bin/Manifest b/dev-lang/rust-bin/Manifest index e4829cabbf7e..17a9c27e5222 100644 --- a/dev-lang/rust-bin/Manifest +++ b/dev-lang/rust-bin/Manifest @@ -451,25 +451,17 @@ DIST rust-src-1.82.0.tar.xz 2966368 BLAKE2B 4162e7393ac21a095ac1541ea7b62fafa561 DIST rust-src-1.83.0.tar.xz 2998424 BLAKE2B de758c5bfb29865a3ab7ab02d17b0282272fa7d1cf5da333a6a19d6a16813320317785e9bab02e3ba9ca6ee9f26e0c96b00a117f33b74c82b13ece44133e3130 SHA512 e1f0ccae1fd4202d86cde1f1e2f4491983ec49fafb2b9eaca6260e9173bea0e0cc2567946e48e3ce48f0a620f63dc44d30334f06c935628158de110d43c7d53b DIST rust-src-1.84.0.tar.xz 3016148 BLAKE2B e948d4edb88f81ecfb49f56a3ca6331c4e9de17bd9f56af823e1cefdc5098abebc2bb013d7c12ca1713a43fec588f33befcb7146713eeade1511914f70146d62 SHA512 ccb45d57c7cdac311478a5b4689144297717e6404f9c4fb168127804f13f72c15433b32765f90ce56e6f34435229e754241cb3656b28a4b33c6070b6f79b7c53 DIST rust-src-1.84.1.tar.xz 3016012 BLAKE2B c9edeaf0797a22e384c54b3fe3e7c833464c09f8828474e05400a561a369d836626387caa495689e4b14fad691a85d6859098c84347211a6f79e2ef2c8d9d6f2 SHA512 564c440a05b67fd3a5dcb4dea21800d32ae65ca12230b804b5efa4bd468fe1b185bd7ed89041782018f70f60afd7554d7755edbe20e9cdc930a9fad390deb317 -EBUILD rust-bin-1.71.1-r100.ebuild 7172 BLAKE2B f8b6f4910cf00212f0d7288d10d29c72d88826728fddfc77f47a782103564a88252837931c699ea9cf7586e4d9507bdae2a3354df262414c368af95a2d0bbfb8 SHA512 24aa046084a58816a2d3a949826945e294ab2ddacbc1e2ccb4cf1914065f3e52f7c3f680330939194b29149a3384c711efa09a261277d4b2dec6aff6660142a9 -EBUILD rust-bin-1.71.1-r101.ebuild 7172 BLAKE2B f8b6f4910cf00212f0d7288d10d29c72d88826728fddfc77f47a782103564a88252837931c699ea9cf7586e4d9507bdae2a3354df262414c368af95a2d0bbfb8 SHA512 24aa046084a58816a2d3a949826945e294ab2ddacbc1e2ccb4cf1914065f3e52f7c3f680330939194b29149a3384c711efa09a261277d4b2dec6aff6660142a9 -EBUILD rust-bin-1.74.1-r100.ebuild 7515 BLAKE2B eabe846ec482e04cfe068420c8315eead88dbe229bedf5f2809b492dc360bf5f34023c89a68b62d1f92c5a3ba628bfd8c861e83980925f74c61d95d3f106db2e SHA512 e40c66befee2c16b579b630de2e0aae00eb5bd72680bd6ee724ab52f434dfc725b2c377d725d95a3500be818acad973202e9b802762adcb1b54cab0251280d2b -EBUILD rust-bin-1.74.1-r101.ebuild 7515 BLAKE2B eabe846ec482e04cfe068420c8315eead88dbe229bedf5f2809b492dc360bf5f34023c89a68b62d1f92c5a3ba628bfd8c861e83980925f74c61d95d3f106db2e SHA512 e40c66befee2c16b579b630de2e0aae00eb5bd72680bd6ee724ab52f434dfc725b2c377d725d95a3500be818acad973202e9b802762adcb1b54cab0251280d2b -EBUILD rust-bin-1.75.0-r100.ebuild 7515 BLAKE2B fdf3b9befaf1983494e42fe9ad17eb52dd14b0551f113a0d7d276dde05402d53d0d59a9ff1547e6df22e12a7845bda581239badeb5d80bcb144201d473227042 SHA512 88b9790f929d48440533b82aa9fe3300ecce75ca74f517076186a1cff3cf360aaa38f06b454ad93b429dfbf69e482af0add2ae1ca9ed1ee8e085ba9b3ea0eecf -EBUILD rust-bin-1.75.0-r101.ebuild 7515 BLAKE2B fdf3b9befaf1983494e42fe9ad17eb52dd14b0551f113a0d7d276dde05402d53d0d59a9ff1547e6df22e12a7845bda581239badeb5d80bcb144201d473227042 SHA512 88b9790f929d48440533b82aa9fe3300ecce75ca74f517076186a1cff3cf360aaa38f06b454ad93b429dfbf69e482af0add2ae1ca9ed1ee8e085ba9b3ea0eecf -EBUILD rust-bin-1.76.0-r100.ebuild 6888 BLAKE2B bd2c113dc06a5db834e0955110a9f81fcc7897b74c5e41b25521b01b8eec6180fc0785eb2f2a00562dc473a3935bb5b85fe3d904a2bad057288672402232d674 SHA512 41bbbd4ead8a4eca64f78116d47659e884d23dac551b333f05fc6a873a1677a4b8f4770115b35bcc6bf18cd400a679983e639be1d87bcacbe7acc0d31c8e4798 -EBUILD rust-bin-1.77.1-r100.ebuild 7554 BLAKE2B f758b72f8e36eb8dfb9df428344e6bbf445dc3fcab2f1aa30712c957e3fba85d283277790f39f7fd1270bdbf576ece89bc148cca2defbcc312b2863403122404 SHA512 b3effcf3c371c52f0c6d6f82c3ebf712bade202d2e8df45d886ee6077b3b0e5cb5fb102f55743ea13795b1a0c4a79e093c5a0e9bfb0c8127961d5779e0a21be4 -EBUILD rust-bin-1.77.1-r101.ebuild 7554 BLAKE2B f758b72f8e36eb8dfb9df428344e6bbf445dc3fcab2f1aa30712c957e3fba85d283277790f39f7fd1270bdbf576ece89bc148cca2defbcc312b2863403122404 SHA512 b3effcf3c371c52f0c6d6f82c3ebf712bade202d2e8df45d886ee6077b3b0e5cb5fb102f55743ea13795b1a0c4a79e093c5a0e9bfb0c8127961d5779e0a21be4 -EBUILD rust-bin-1.78.0-r100.ebuild 7661 BLAKE2B d9b43e4bd25938edcf9c0aa8bc68dd7a4cf14313602c7ebb5d616f5a2409f5f3c15dcffd8dfe24c581fe2fcf79cb7df6dfd04b57c9ba7410ab6b7bbdbcc1984c SHA512 0d6871a894c48936a56733e6edea73cf9a197618c4238f79df253846cf9cc619ac755bb27d67fd130871e40c3e91dcac9ba960a958fabe409469bebde52d1646 -EBUILD rust-bin-1.79.0-r100.ebuild 7661 BLAKE2B 0c003da9b7ef5b5fe204735836da0e2c0bac283486eb0382defe27598f9a0ea0e38dd67e57d4fa90567f8ce6f4e59602d6b2d1afe83f582b2eb8e0da9e5d14fc SHA512 1434345f981e692f50840d27140e8a8e9b2d9eb557e7250f032db02321d839fde70609399645ae38f2e78cf79049eabf447d96340c43cb03891a186d1fe07439 -EBUILD rust-bin-1.79.0-r101.ebuild 7661 BLAKE2B 0c003da9b7ef5b5fe204735836da0e2c0bac283486eb0382defe27598f9a0ea0e38dd67e57d4fa90567f8ce6f4e59602d6b2d1afe83f582b2eb8e0da9e5d14fc SHA512 1434345f981e692f50840d27140e8a8e9b2d9eb557e7250f032db02321d839fde70609399645ae38f2e78cf79049eabf447d96340c43cb03891a186d1fe07439 -EBUILD rust-bin-1.80.1-r100.ebuild 7870 BLAKE2B 335d40c75cd61578b055a6ad5d03a182304bfb94b8df09503a802fda905e9c40cfa968e138fb6170734339e5af3d1794b38600b9df6b25abdd5c5a40d4d5637d SHA512 b7dd088309c9da903b1ed24d94c2ac697c1c800ed1c5708572afa5ac3497636811efc5123c390b545e8100a5a8140dc9a49a682ac43fac4821e52c7e8528dad4 -EBUILD rust-bin-1.80.1-r101.ebuild 7870 BLAKE2B 335d40c75cd61578b055a6ad5d03a182304bfb94b8df09503a802fda905e9c40cfa968e138fb6170734339e5af3d1794b38600b9df6b25abdd5c5a40d4d5637d SHA512 b7dd088309c9da903b1ed24d94c2ac697c1c800ed1c5708572afa5ac3497636811efc5123c390b545e8100a5a8140dc9a49a682ac43fac4821e52c7e8528dad4 -EBUILD rust-bin-1.81.0-r100.ebuild 7796 BLAKE2B d4fa84b38416621e531c0fa8721d7d4c351da246324a691cceaebcc8379c5c9003dc5a0c95353b94ab8b1ab1905fb9578d3d951d1c8a986dd720d2282ac76b12 SHA512 4972eef30629e93301d931f56354008a1184acf209740d1cfde93440023e9ca0c8ffb4d7c218ab6930724b827a796f102d56eef73feb378f3be5a7eafe55cf35 -EBUILD rust-bin-1.81.0-r101.ebuild 7796 BLAKE2B d4fa84b38416621e531c0fa8721d7d4c351da246324a691cceaebcc8379c5c9003dc5a0c95353b94ab8b1ab1905fb9578d3d951d1c8a986dd720d2282ac76b12 SHA512 4972eef30629e93301d931f56354008a1184acf209740d1cfde93440023e9ca0c8ffb4d7c218ab6930724b827a796f102d56eef73feb378f3be5a7eafe55cf35 -EBUILD rust-bin-1.82.0-r100.ebuild 7824 BLAKE2B c62734b23b47f074ec71ef4c9ef362551a94a0d8e2949573433a34809647d93e86ff7afca3d017dab587f5789a36789fb955776641d96c32acfb58fc4845a526 SHA512 af1536ddff50283b2712f8d383daedf3397705a26a9b8d8f1ce802cb5e5c2e04fdd23fa1ff87dc4ef9a9be597504bf828fed578c22d87bd57f93055177656c19 -EBUILD rust-bin-1.82.0-r101.ebuild 7824 BLAKE2B c62734b23b47f074ec71ef4c9ef362551a94a0d8e2949573433a34809647d93e86ff7afca3d017dab587f5789a36789fb955776641d96c32acfb58fc4845a526 SHA512 af1536ddff50283b2712f8d383daedf3397705a26a9b8d8f1ce802cb5e5c2e04fdd23fa1ff87dc4ef9a9be597504bf828fed578c22d87bd57f93055177656c19 -EBUILD rust-bin-1.83.0.ebuild 7810 BLAKE2B 484806eca705b0b19f0c99fd9c131fed70c1b64e516a92fe7b7d54935757f1e2ea150269cb105bf6436e462ef1cecbab277786113f6d0201b46c92a7b71e043c SHA512 f1ee0bac3e9895824a918a83a96027bdc8acb5d61aef72ada1c416b4fe11460523ed24944e9ecd3ecedad18a6d656023d6882d6808562f5d62d7d6563b2a6936 -EBUILD rust-bin-1.84.0.ebuild 7817 BLAKE2B b037a3419c1de744417db49366f198de35ff73f3ea3d9aefe5c0d00c3f9bd6f438ed35f6258fe184857788864797b204ffd0e2bb6df07ff3308f4b568cd59497 SHA512 f6c12ce632f940528478f04678a15c5bc8f8368fb2613e6d8347dff29e05efb449d9e8ee878d71f93fb3f78f3ee328cc9d04154d1c3aac115d834121fd196017 -EBUILD rust-bin-1.84.1.ebuild 7817 BLAKE2B f46a594d7f526d7a1775896d61a2e11b63847bda9c754c36f1dfbae63d1f5b640287366ca4d30586c0b508e1f8c70398611361de02ff5396b032bf15581e9fa1 SHA512 f872163012b02cac27206138db1b6e62737f443babf7b2cb8725092bb80d686666873b075f9069bac33ecb97f9ccfd0917c8b0547b5ffde1d32099c666a41094 +EBUILD rust-bin-1.71.1-r102.ebuild 7125 BLAKE2B 4f226bdd5c82b47d60aeed8d8215f076c696ce4bdebb2e2dcfa13fcb19e546f97a3d6bcd1e7ef002651ef850e300a7d464245867c7dc4af54201f0b5e547c85a SHA512 a03f353252f08a583aeaab293a26f6f0cf2fddc61daf7705fa9c4153ca2db9499b68ca42fbcc8ecb3d24c9846642af0c962b3f2ac99e70328eafb85930a88868 +EBUILD rust-bin-1.74.1-r102.ebuild 7468 BLAKE2B f8e0ef5f3a53f862c10c100ffd886eee06c1b7543856e154756884467f8115bdaa39569a47d789166d625f68f53a657eb535b29ba76aa363d15699ae65c0b3c4 SHA512 9df89cf28b5300a0023915138a05d74b6219632d6e95b056f412070302270e4101b7de5edcb881f917e5c32b787711996b7fb05355d915174764257d75735083 +EBUILD rust-bin-1.75.0-r102.ebuild 7468 BLAKE2B 026bd2e1337b6f6e4922e857d9ab07d4aa2311688aa9743c1b8c6a04ae63605bb5d66f429b03196f1fb4adbd64007f5421f0c26f3b04ee544926296a4e4c3499 SHA512 984d8dcc758db097f013864d619f70509ff32b530bdc77d92c45aee0ae097b612dd2fe0f0e82570fb8fb753645c530b44e02b87465e6f95490ac08789ae123f7 +EBUILD rust-bin-1.76.0-r101.ebuild 6841 BLAKE2B 0a2f4c01bf5f77264e0d879ecb42535fd70b1167cd96be38cc5f25098fbbac36ebaa786290b8ca08e95218c4de2339bb2bf7f1c4aba87bf9a5b54c6bfb19210e SHA512 918f8e38f0740606b0537c45810b91fd8eddbadcec63018d22981ede24f493ecebbcf54aa936300c3f56ef1d2ce93fe0a47d86c862b9a6b465dddf6043667054 +EBUILD rust-bin-1.77.1-r102.ebuild 7507 BLAKE2B 50bdfc349a1969d1c23a48171fc8e1672e19d0156d931c75d6a70e6ba2055973d578227971677d68f6a83ab20d6a379a61ee495261837eb0e2030ad8ff83cc7b SHA512 d75cd61fcb9f823b8d86dfd065af8a1ad29f0a677c22d5401a2eafc00d5da3ee21f1eca984b3cb12d01bcc579c5b936c19b50116355e7ecb3fe9af5ac8293e43 +EBUILD rust-bin-1.78.0-r101.ebuild 7614 BLAKE2B a99ed2092f625f6e9e4c9b3f7d06b4f39be30fb1584182f14ae2234040aba09418553376d6cce128dea8bac2a4f5a966f6cd3012754162eaa15b75cf674521bb SHA512 93dafdd389d1657e6953c040ec99680fe8c6a116f1ba4894c883d4fd757445fc08027b49b2ba86041d8d7a5cd7150fc6b5bfd61f6924ade43daa8741bca6ec45 +EBUILD rust-bin-1.79.0-r102.ebuild 7614 BLAKE2B 0d55d4d416175b4e0dc032a1aa93c6b638c2c58eb684f6886c6a843f89810177b82aded64ce3a2f68b963482e14bc96f1254f4a4904e65a5604dd3aeb34ed1a6 SHA512 c33cd897ea2747e5d06543ef36dac9cfdbf898587dc90f1b848709544e769862d4c8777dae9be7811469b0d2edbcdecb7ba2872777577b92a7ad548614f945c4 +EBUILD rust-bin-1.80.1-r102.ebuild 7823 BLAKE2B 083c1f6904ab41feafa4f6d1b317769fa51e1920ceb79fa9f38e045ca7384784377b98e309fb47f906553ffaed34abd3d9552fb1e51b3d51c59ac72d7c90f017 SHA512 a7e522e5c35febbf42f16e14ab92688446ef82bb6a01c248a73e574a1bc017c123947457b6f183d8e34c73b56e997540a7d29e7c95c4ba7c963f0a6d8fb8cefc +EBUILD rust-bin-1.81.0-r102.ebuild 7749 BLAKE2B 77cd61ad9ccc5302c06b4460b90dd2a04a1841d590332dc214cecd0078dfc34d40d900c6288f8788d93a54e99604a8c45931a5a0c0bd62ad80294a27e6b5f841 SHA512 583e55308794c5273edaefffbfe3fb571b7a9990bed17553750ee412d85cde899346e504fda63e201a96e8b2fb9cf1544a552fcaafc1aaef7db2b6ad92bf7099 +EBUILD rust-bin-1.82.0-r102.ebuild 7777 BLAKE2B c7d315460151cf1196ebc36dcb99a94dce5f27ac465d72ba66952304438a15802e53c029bb4c142adc593f527daa0f6a75dab8cf7edc44a26ea22b512135f1c1 SHA512 f1da44327074a71ed9aba95d48017d3451b8582a3e053cb90a2407e12a887e6c9b608b58bb7aad4a79c7fe29815f7df5f3bcb11996249453a84f58d5d12af467 +EBUILD rust-bin-1.83.0-r1.ebuild 7763 BLAKE2B 636b5c4bd4a3bf9efd6c1acd85f53a0cd8c3c2f7ab077f0ab9994dbb7468a8ad19fd1eb19c74b613d83e0a126390b1009af57e26a950e0827a800c6d85bc6c59 SHA512 ee5ee66dc7568a1211bcf01f439f82ef6fb1eb4c8ad4d317a2601238bb3288da9c172282088409a8e86d9aa037b09848dcb3b62fc991ee1c8399fc03dddd43c3 +EBUILD rust-bin-1.84.0-r1.ebuild 7770 BLAKE2B 3c2042a394f3607f97aa99eddeb45f343b84cb7c8580d716268ca1c81a21ebadbce293d208f4c18680b63fa9b1174dc1e13caa3a983af204fd90a61e2c479ab3 SHA512 802f792e94a88e1d9bde71e85362e89cb4b41681cbe93c6c145ee5870356d6ac4e64e9c3b3071c2553b4aef4f1e2b7a2fe9e0c8006e4321bdff02a28027eed41 +EBUILD rust-bin-1.84.1-r1.ebuild 7770 BLAKE2B 4e16521f39caabaed65b64682566c93260a3e3d8c4dc1bb3d679b74768516b4df8e06437b1d02edf2f91d6890f68cd705fc3d09ad0d7bc469c66a5e819d8b09c SHA512 f3d8b20983d29c9997c486d65316f2ca58d78e484f51141bdcb9f1d7af8a655ff591b6c75b81c8f26e85496e439a6087ad26dd38486a64fe1a0f297218307927 MISC metadata.xml 1062 BLAKE2B de2d2adcb691a3e614457dd9a7f5d4a8eddffd548b2de8a229b6d397ae79f7e24484512a1fb2a85e02aa98c240ae73420dbe48e45790c0cd3f6381ef5a4ac24b SHA512 ee4d08b8eec8abd89e051ee5ec6cc928bfde7039b815d4539558d71d7c0576aea939b7781b4998d3fcf2c2e8752791d53c0ba6115df07fc2243c470b2a7467b9 diff --git a/dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild deleted file mode 100644 index 9e716ace2e5b..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.71.1-r100.ebuild +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 16 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-08-03/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz -> ${MY_P}-sparc64-unknown-linux-gnu.sam.tar.xz ) " - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}/bin/bash") - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.71.1-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.71.1-r101.ebuild deleted file mode 100644 index 9e716ace2e5b..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.71.1-r101.ebuild +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 16 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-08-03/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz -> ${MY_P}-sparc64-unknown-linux-gnu.sam.tar.xz ) " - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}/bin/bash") - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.71.1-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.71.1-r102.ebuild new file mode 100644 index 000000000000..a631c26c9948 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.71.1-r102.ebuild @@ -0,0 +1,233 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 16 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-08-03/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz -> ${MY_P}-sparc64-unknown-linux-gnu.sam.tar.xz ) " + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}/bin/bash") + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild deleted file mode 100644 index 23d2616783ae..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.74.1-r100.ebuild +++ /dev/null @@ -1,244 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-12-07/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -#SRC_URI+=" mips? ( -# abi_mips_o32? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) -# ) -# abi_mips_n64? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) -# ) -#)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}/bin/bash") - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.74.1-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.74.1-r101.ebuild deleted file mode 100644 index 23d2616783ae..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.74.1-r101.ebuild +++ /dev/null @@ -1,244 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-12-07/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -#SRC_URI+=" mips? ( -# abi_mips_o32? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) -# ) -# abi_mips_n64? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) -# ) -#)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}/bin/bash") - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.74.1-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.74.1-r102.ebuild new file mode 100644 index 000000000000..e7490ef7bbbf --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.74.1-r102.ebuild @@ -0,0 +1,243 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-12-07/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +#SRC_URI+=" mips? ( +# abi_mips_o32? ( +# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) +# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) +# ) +# abi_mips_n64? ( +# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) +# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) +# ) +#)" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}/bin/bash") + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild deleted file mode 100644 index 9bb32c144c66..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.75.0-r100.ebuild +++ /dev/null @@ -1,244 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-12-28/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -#SRC_URI+=" mips? ( -# abi_mips_o32? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) -# ) -# abi_mips_n64? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) -# ) -#)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.75.0-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.75.0-r101.ebuild deleted file mode 100644 index 9bb32c144c66..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.75.0-r101.ebuild +++ /dev/null @@ -1,244 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-12-28/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -#SRC_URI+=" mips? ( -# abi_mips_o32? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) -# ) -# abi_mips_n64? ( -# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) -# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) -# ) -#)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.75.0-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.75.0-r102.ebuild new file mode 100644 index 000000000000..bb60f0c714ad --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.75.0-r102.ebuild @@ -0,0 +1,243 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2023-12-28/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +#SRC_URI+=" mips? ( +# abi_mips_o32? ( +# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) +# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) +# ) +# abi_mips_n64? ( +# big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) +# !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) +# ) +#)" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.76.0-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.76.0-r100.ebuild deleted file mode 100644 index 1768a0889eaf..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.76.0-r100.ebuild +++ /dev/null @@ -1,233 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-02-08/rust-src-${PV}.tar.xz" - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.76.0-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.76.0-r101.ebuild new file mode 100644 index 000000000000..a1a14f630402 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.76.0-r101.ebuild @@ -0,0 +1,232 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-02-08/rust-src-${PV}.tar.xz" + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,rust-demangler-preview,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-demangler + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild deleted file mode 100644 index 5eb6567f5cdd..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.77.1-r100.ebuild +++ /dev/null @@ -1,246 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-03-28/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.77.1-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.77.1-r101.ebuild deleted file mode 100644 index 5eb6567f5cdd..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.77.1-r101.ebuild +++ /dev/null @@ -1,246 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-03-28/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.77.1-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.77.1-r102.ebuild new file mode 100644 index 000000000000..701e6ea24605 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.77.1-r102.ebuild @@ -0,0 +1,245 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-03-28/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,rust-demangler-preview,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-demangler + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.78.0-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.78.0-r100.ebuild deleted file mode 100644 index 80ef90b24dd2..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.78.0-r100.ebuild +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-05-02/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.78.0-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.78.0-r101.ebuild new file mode 100644 index 000000000000..28e01814d176 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.78.0-r101.ebuild @@ -0,0 +1,248 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-05-02/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,rust-demangler-preview,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-demangler + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild deleted file mode 100644 index 55b9d0d15962..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.79.0-r100.ebuild +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-06-13/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.79.0-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.79.0-r101.ebuild deleted file mode 100644 index 55b9d0d15962..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.79.0-r101.ebuild +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-06-13/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.79.0-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.79.0-r102.ebuild new file mode 100644 index 000000000000..069025b78ef4 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.79.0-r102.ebuild @@ -0,0 +1,248 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-06-13/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,rust-demangler-preview,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-demangler + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild deleted file mode 100644 index 8b3aab679bda..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.80.1-r100.ebuild +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-08-08/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.80.1-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.80.1-r101.ebuild deleted file mode 100644 index 8b3aab679bda..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.80.1-r101.ebuild +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-08-08/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,rust-demangler-preview,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-demangler - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - elog "install app-emacs/rust-mode to get emacs support for rust." - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - elog "install app-vim/rust-vim to get vim support for rust." - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.80.1-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.80.1-r102.ebuild new file mode 100644 index 000000000000..327beab66968 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.80.1-r102.ebuild @@ -0,0 +1,252 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-08-08/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" +SRC_URI+=" ppc64? ( elibc_musl? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) +) )" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,rust-demangler-preview,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-demangler + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild deleted file mode 100644 index aabb1ed9c384..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.81.0-r100.ebuild +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-09-05/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.81.0-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.81.0-r101.ebuild deleted file mode 100644 index aabb1ed9c384..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.81.0-r101.ebuild +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-09-05/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.81.0-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.81.0-r102.ebuild new file mode 100644 index 000000000000..f139c60a5392 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.81.0-r102.ebuild @@ -0,0 +1,250 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-09-05/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" +SRC_URI+=" ppc64? ( elibc_musl? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) +) )" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild b/dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild deleted file mode 100644 index b1a1d5f9037b..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.82.0-r100.ebuild +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-10-17/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - docompress /opt/${P}/man/ - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.82.0-r101.ebuild b/dev-lang/rust-bin/rust-bin-1.82.0-r101.ebuild deleted file mode 100644 index b1a1d5f9037b..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.82.0-r101.ebuild +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-10-17/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - docompress /opt/${P}/man/ - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend ${PIPESTATUS[0]} - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.82.0-r102.ebuild b/dev-lang/rust-bin/rust-bin-1.82.0-r102.ebuild new file mode 100644 index 000000000000..535a893ad011 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.82.0-r102.ebuild @@ -0,0 +1,252 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-10-17/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" +SRC_URI+=" ppc64? ( elibc_musl? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) +) )" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + docompress /opt/${P}/man/ + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend ${PIPESTATUS[0]} + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.83.0-r1.ebuild b/dev-lang/rust-bin/rust-bin-1.83.0-r1.ebuild new file mode 100644 index 000000000000..ad77ff518f18 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.83.0-r1.ebuild @@ -0,0 +1,252 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-11-28/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" +SRC_URI+=" ppc64? ( elibc_musl? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) +) )" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + docompress /opt/${P}/man/ + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend $? + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.83.0.ebuild b/dev-lang/rust-bin/rust-bin-1.83.0.ebuild deleted file mode 100644 index eae591d46115..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.83.0.ebuild +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2024-11-28/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - docompress /opt/${P}/man/ - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend $? - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.84.0-r1.ebuild b/dev-lang/rust-bin/rust-bin-1.84.0-r1.ebuild new file mode 100644 index 000000000000..33c87f94a214 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.84.0-r1.ebuild @@ -0,0 +1,252 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2025-01-09/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" +SRC_URI+=" ppc64? ( elibc_musl? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) +) )" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + docompress /opt/${P}/man/ + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend $? + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.84.0.ebuild b/dev-lang/rust-bin/rust-bin-1.84.0.ebuild deleted file mode 100644 index 48da1d3e8bd5..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.84.0.ebuild +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2025-01-09/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - docompress /opt/${P}/man/ - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend $? - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust-bin/rust-bin-1.84.1-r1.ebuild b/dev-lang/rust-bin/rust-bin-1.84.1-r1.ebuild new file mode 100644 index 000000000000..dc92f0547909 --- /dev/null +++ b/dev-lang/rust-bin/rust-bin-1.84.1-r1.ebuild @@ -0,0 +1,252 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +LLVM_OPTIONAL="yes" + +inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature + +MY_P="rust-${PV}" +# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" +MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2025-01-30/rust-src-${PV}.tar.xz" +GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" +SRC_URI="$(rust_all_arch_uris ${MY_P}) + rust-src? ( ${MY_SRC_URI} ) +" +# Keep this separate to allow easy commenting out if not yet built +SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " +SRC_URI+=" mips? ( + abi_mips_o32? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) + ) + abi_mips_n64? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) + ) +)" +SRC_URI+=" riscv? ( + elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) +)" +SRC_URI+=" ppc64? ( elibc_musl? ( + big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) + !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) +) )" + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" + +RDEPEND=" + >=app-eselect/eselect-rust-20190311 + dev-libs/openssl + sys-apps/lsb-release + sys-devel/gcc:* + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" +BDEPEND=" + prefix? ( dev-util/patchelf ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" + +# stripping rust may break it (at least on x86_64) +# https://github.com/rust-lang/rust/issues/112286 +RESTRICT="strip" + +QA_PREBUILT=" + opt/${P}/bin/.* + opt/${P}/lib/.*.so* + opt/${P}/libexec/.* + opt/${P}/lib/rustlib/.*/bin/.* + opt/${P}/lib/rustlib/.*/lib/.* +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" + +pkg_pretend() { + if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then + die "${CHOST} is not supported by upstream Rust. You must use a hard float version." + fi +} + +src_unpack() { + # sadly rust-src tarball does not have corresponding .asc file + # so do partial verification + if use verify-sig; then + for f in ${A}; do + if [[ -f ${DISTDIR}/${f}.asc ]]; then + verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" + fi + done + fi + + default_src_unpack + + mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die +} + +patchelf_for_bin() { + local filetype=$(file -b ${1}) + if [[ ${filetype} == *ELF*interpreter* ]]; then + einfo "${1}'s interpreter changed" + patchelf ${1} --set-interpreter ${2} || die + elif [[ ${filetype} == *script* ]]; then + hprefixify ${1} + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + + # start native abi install + pushd "${S}" >/dev/null || die + local analysis std + analysis="$(grep 'analysis' ./components)" + std="$(grep 'std' ./components)" + local components="rustc,cargo,${std}" + use doc && components="${components},rust-docs" + use clippy && components="${components},clippy-preview" + use rustfmt && components="${components},rustfmt-preview" + use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" + # Rust component 'rust-src' is extracted from separate archive + if use rust-src; then + einfo "Combining rust and rust-src installers" + mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die + echo rust-src >> ./components || die + components="${components},rust-src" + fi + ./install.sh \ + --components="${components}" \ + --disable-verify \ + --prefix="${ED}/opt/${P}" \ + --mandir="${ED}/opt/${P}/man" \ + --disable-ldconfig \ + || die + + docompress /opt/${P}/man/ + + if use prefix; then + local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) + ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" + find "${ED}/opt/${P}/bin" -type f -print0 | \ + while IFS= read -r -d '' filename; do + patchelf_for_bin ${filename} ${interpreter} \; || die + done + eend $? + fi + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- + local ver_i="${i}-bin-${PV}" + ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die + dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" + dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" + dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" + dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" + + # make all capital underscored variable + local CARGO_TRIPLET="$(rust_abi)" + CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" + CARGO_TRIPLET="${CARGO_TRIPLET^^}" + cat <<-_EOF_ > "${T}/50${P}" + MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" + $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") + _EOF_ + doenvd "${T}/50${P}" + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + popd >/dev/null || die + #end native abi install + + else + local rust_target + rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" + dodir "/opt/${P}/lib/rustlib" + cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ + "${ED}/opt/${P}/lib/rustlib" || die + fi + + # BUG: installs x86_64 binary on other arches + rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust-bin/rust-bin-1.84.1.ebuild b/dev-lang/rust-bin/rust-bin-1.84.1.ebuild deleted file mode 100644 index 338e50f2b5d5..000000000000 --- a/dev-lang/rust-bin/rust-bin-1.84.1.ebuild +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -LLVM_OPTIONAL="yes" - -inherit llvm-r1 multilib prefix rust-toolchain toolchain-funcs verify-sig multilib-minimal optfeature - -MY_P="rust-${PV}" -# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep "xz_url.*rust-src" -MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL%/}/2025-01-30/rust-src-${PV}.tar.xz" -GENTOO_BIN_BASEURI="https://dev.gentoo.org/~arthurzam/distfiles/${CATEGORY}/${PN}" # omit leading slash - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" -SRC_URI="$(rust_all_arch_uris ${MY_P}) - rust-src? ( ${MY_SRC_URI} ) -" -# Keep this separate to allow easy commenting out if not yet built -SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/${MY_P}-sparc64-unknown-linux-gnu.tar.xz ) " -SRC_URI+=" mips? ( - abi_mips_o32? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips-unknown-linux-gnu.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mipsel-unknown-linux-gnu.tar.xz ) - ) - abi_mips_n64? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64-unknown-linux-gnuabi64.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-mips64el-unknown-linux-gnuabi64.tar.xz ) - ) -)" -SRC_URI+=" riscv? ( - elibc_musl? ( ${GENTOO_BIN_BASEURI}/${MY_P}-riscv64gc-unknown-linux-musl.tar.xz ) -)" -SRC_URI+=" ppc64? ( elibc_musl? ( - big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64-unknown-linux-musl.tar.xz ) - !big-endian? ( ${GENTOO_BIN_BASEURI}/${MY_P}-powerpc64le-unknown-linux-musl.tar.xz ) -) )" - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" -IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt" - -RDEPEND=" - >=app-eselect/eselect-rust-20190311 - dev-libs/openssl - sys-apps/lsb-release - sys-devel/gcc:* - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" -BDEPEND=" - prefix? ( dev-util/patchelf ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )" - -# stripping rust may break it (at least on x86_64) -# https://github.com/rust-lang/rust/issues/112286 -RESTRICT="strip" - -QA_PREBUILT=" - opt/${P}/bin/.* - opt/${P}/lib/.*.so* - opt/${P}/libexec/.* - opt/${P}/lib/rustlib/.*/bin/.* - opt/${P}/lib/rustlib/.*/lib/.* -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc" - -pkg_pretend() { - if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then - die "${CHOST} is not supported by upstream Rust. You must use a hard float version." - fi -} - -src_unpack() { - # sadly rust-src tarball does not have corresponding .asc file - # so do partial verification - if use verify-sig; then - for f in ${A}; do - if [[ -f ${DISTDIR}/${f}.asc ]]; then - verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc" - fi - done - fi - - default_src_unpack - - mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die -} - -patchelf_for_bin() { - local filetype=$(file -b ${1}) - if [[ ${filetype} == *ELF*interpreter* ]]; then - einfo "${1}'s interpreter changed" - patchelf ${1} --set-interpreter ${2} || die - elif [[ ${filetype} == *script* ]]; then - hprefixify ${1} - fi -} - -multilib_src_install() { - if multilib_is_native_abi; then - - # start native abi install - pushd "${S}" >/dev/null || die - local analysis std - analysis="$(grep 'analysis' ./components)" - std="$(grep 'std' ./components)" - local components="rustc,cargo,${std}" - use doc && components="${components},rust-docs" - use clippy && components="${components},clippy-preview" - use rustfmt && components="${components},rustfmt-preview" - use rust-analyzer && components="${components},rust-analyzer-preview,${analysis}" - # Rust component 'rust-src' is extracted from separate archive - if use rust-src; then - einfo "Combining rust and rust-src installers" - mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die - echo rust-src >> ./components || die - components="${components},rust-src" - fi - ./install.sh \ - --components="${components}" \ - --disable-verify \ - --prefix="${ED}/opt/${P}" \ - --mandir="${ED}/opt/${P}/man" \ - --disable-ldconfig \ - || die - - docompress /opt/${P}/man/ - - if use prefix; then - local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash) - ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${P}/bin" - find "${ED}/opt/${P}/bin" -type f -print0 | \ - while IFS= read -r -d '' filename; do - patchelf_for_bin ${filename} ${interpreter} \; || die - done - eend $? - fi - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /opt/rust-bin-/bin/rustc- - local ver_i="${i}-bin-${PV}" - ln -v "${ED}/opt/${P}/bin/${i}" "${ED}/opt/${P}/bin/${ver_i}" || die - dosym "../../opt/${P}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "../../../opt/${P}/lib" "/usr/lib/rust/lib-bin-${PV}" - dosym "../../../opt/${P}/man" "/usr/lib/rust/man-bin-${PV}" - dosym "../../opt/${P}/lib/rustlib" "/usr/lib/rustlib-bin-${PV}" - dosym "../../../opt/${P}/share/doc/rust" "/usr/share/doc/${P}" - - # make all capital underscored variable - local CARGO_TRIPLET="$(rust_abi)" - CARGO_TRIPLET="${CARGO_TRIPLET//-/_}" - CARGO_TRIPLET="${CARGO_TRIPLET^^}" - cat <<-_EOF_ > "${T}/50${P}" - LDPATH="${EPREFIX}/usr/lib/rust/lib-bin-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${PV}" - $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"") - _EOF_ - doenvd "${T}/50${P}" - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - popd >/dev/null || die - #end native abi install - - else - local rust_target - rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))" - dodir "/opt/${P}/lib/rustlib" - cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\ - "${ED}/opt/${P}/lib/rustlib" || die - fi - - # BUG: installs x86_64 binary on other arches - rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die -} - -pkg_postinst() { - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest index 49d2ac443c33..3d08c8e892b6 100644 --- a/dev-lang/rust/Manifest +++ b/dev-lang/rust/Manifest @@ -44,18 +44,17 @@ DIST rustc-1.84.0-src.tar.xz 354993944 BLAKE2B e4697d8a9f42484556ed490390aef535b DIST rustc-1.84.0-src.tar.xz.asc 801 BLAKE2B b1846702f36b92c479499f5eb704ce1e272131fc1b6b625c8d64c873a82ed79b1de8cceb1f21ae4b9dccf81e258547debf367b7b769ac94ed10a59dee18f79f1 SHA512 5ada0e0fed9901044eaa0d7cb657f685c7e183e91245714abe4a0a8bf3062a7de281932c7de7587220df0542511f6011d057bd8bed19d98c755eab74091cdfdb DIST rustc-1.84.1-src.tar.xz 355078168 BLAKE2B 849e8c909493bf76ce9749b9dcb1967180223b91a41d690bc477e78557d4e24949c9a8d8276d824af8c54ad62bc4a998e7a8efbc0bbd2008a4f64f51a7690d48 SHA512 f1cc4765736551508408126e44086988e8ddc30c1a929bf7b61c6be85ad0d65928dd5fb1041cfaeee8eb37d2208f2c1917e276aef2bc9a8e40e34f6713b349e1 DIST rustc-1.84.1-src.tar.xz.asc 801 BLAKE2B f3decd3470fd1eff33adbb376490a30eb8db28dd4176bde0fefe4f60acf79c3dd0e1a330d519b5319360136ea7d0a124f6720dea08617202d9e9298da992ccf6 SHA512 a241fe3efba293f3e872b74f09dd0d184e0239afd1416326d57bf1134d92721c65b187f5c99962b51671877a539f18e82d2d797c76af42615c11a8bb3905f796 -EBUILD rust-1.71.1-r100.ebuild 22077 BLAKE2B 1082eec69086f44922a4d9b4d7d0fbee5104c4653fe6320764748638389871081c5812aa0bed84ecd36f6d764e38a257c640518b3ca190797ca595506106739f SHA512 461a0bd207a4424c2512ee404202b14fdc8bf6d4bd628e38f325584ff4e452de0f3615e3a3683b2d1eae0b9498443eccb10f6800cf3c6be862f1643b9203c017 -EBUILD rust-1.74.1-r100.ebuild 37690 BLAKE2B 93ff1451143f5282ef231911a3b820649052300b933a9e6fd602ce6dcbf6f88af118e2835e59d3b520ba7f09a292d71d1f9b7b7a48bbbeadaaf880ff0a0dc3ea SHA512 2709d8377472eda62ebd2d0c296b1b678c106e6cc33268823391f0e2072f06551e1bb9094017077f4bd56aa0a34bee3a329d0a6f27fd1f8304af6abcc9e9b241 -EBUILD rust-1.75.0-r100.ebuild 23584 BLAKE2B ec9b5d0dc286ce5f1931df6e60817531f3ce6002a3916e47355c557693b19bdacdefd3e01d309880c8e48e53d4fc9082bab4aa2ed9da34c51df8b8c25e60305f SHA512 f759a9db473a3d19571b20669b9631446b71c508ba9cf42edc126e1da03ce8ad34478b6712f48711ee152001841d31662ea6f227faacec1fb51b625522415e64 -EBUILD rust-1.76.0-r100.ebuild 20091 BLAKE2B c9132c08aa051dcd3412909472312db21db79db7215beacc564c2d58e00b2dbd758f4bfa3a81d2a5dfa70a1bbf9ec82a96dbd7042e561d05c5e3cb7a699d240c SHA512 c9a821bfb2f693ab5d628eff20dcdea32bc1f29540e22c465275f89a6559f6db6d9ab93fd2cabba30f20b5bdd9cb24645d4f73f9b1976bb113b06544ea4746c2 -EBUILD rust-1.77.1-r100.ebuild 23547 BLAKE2B dfa0b1105be8a58c88afd4fe184381bc83516f9935e6ac533d8f44bc0953b3da9305cbfdd44915810d87fc89cd2aee76f06e30d617ed4425cd01cbe429e5e8c4 SHA512 9ce03c548c77382a8fd91690a6071bf082f468e5807cd132a0b8206208580336a61991f7d563b5d12629d920753e2b2d59d099e7f7afad17d259717a17af6cd5 -EBUILD rust-1.78.0-r100.ebuild 23782 BLAKE2B 82f2bbdc80f99f3636683e406bd3263f4759418552fcacf071668451a3dcd89f636b0205559638fab834327ef841cf477d43e6ac945313f5ba60c34305d930fa SHA512 2c65b01e2e31e97f9a1e06d177345b8f2024a60806514516376e9d5be43cd5f3a2f2d4d31f097016dd31b65ba282c0b69dc54e6549738e898fa47add58892ff2 -EBUILD rust-1.79.0-r100.ebuild 23782 BLAKE2B 82f2bbdc80f99f3636683e406bd3263f4759418552fcacf071668451a3dcd89f636b0205559638fab834327ef841cf477d43e6ac945313f5ba60c34305d930fa SHA512 2c65b01e2e31e97f9a1e06d177345b8f2024a60806514516376e9d5be43cd5f3a2f2d4d31f097016dd31b65ba282c0b69dc54e6549738e898fa47add58892ff2 -EBUILD rust-1.80.1-r100.ebuild 23654 BLAKE2B 10e70066371a07ff8e0618533ad210c5080e2cfcba87fb69535c7845b508e62825d9d392068d1ee264fcf951c20c9bbe815e4868ac08d0f97b68a6a77a03417e SHA512 e1869237eb35a8f27ed1b540b679c58aee3303e21d7f6f96af8828171c1bfd1d32c7c0a3b94e15fc2ca4bc0e0840ee9e79fd5a93b5c3e8e2e9b1fe70965c875a -EBUILD rust-1.81.0-r100.ebuild 23851 BLAKE2B 03c31a2fca18dbddce10b8652bba84d86fcde844a24c3bb4c1981f7ef549627c03008c4df82fe0529368e4e7af632ed605a49502a79ff8c670e680a5ae94c10b SHA512 b313e6de5b77854bc2c2afb6ae1347f85a0dbbec86111b8f266ed6f3e92d0eee461588b209b1cead0caa433336c7c63040d08fd00de3272c51cf68c5d2ba3ff1 -EBUILD rust-1.82.0-r100.ebuild 23997 BLAKE2B 227d902466e31d42551be544e88839814ffb05e43fdcebdcdf43e6afa9019ea398ac9123a6e38f73f7b7772891a504a425d570401937d43667d2cead70597c46 SHA512 cbff12c735f0a0bd1f098a27f69212affce60da38b79409da4b10b256d9bb8ebdd4129b78786354bac9fba63c4889e5a58e10d522e928901e7ff20c921925da4 -EBUILD rust-1.82.0-r101.ebuild 24046 BLAKE2B d132b0109d9d1e68ded0357221609102f0e638069e4ec2bf61e53fb94b388fe67e97b5cb5ee3f29ecdc3a9f4c18a4ad6cef0e08addc248289ae3178c2e04aa04 SHA512 31f3e5bfa8345bcad487474bd8e0570c31e51a7e477d030f2fe61148e4598f069211139504a43958367b740cf38b18ff92e46e49d6080b7df8177453e9dae14e -EBUILD rust-1.83.0-r1.ebuild 23279 BLAKE2B 183f2a6f686030c2efad110709d52b68c655dc374faa748f83c5d33ced7e44b81d5c321e843e8ffcd6c4d248bb8b6452986eb9f1e0b636e199404668f3a54518 SHA512 8220054d98db8bb50d9abd765ffefaafd360ad13ee566485e2f82930a8821b32c7b5e33080127e8fea5dbe655a81c8edd1563d0efa5c78be4c41d8bd4af22050 -EBUILD rust-1.84.0.ebuild 23404 BLAKE2B 88d74e3cddb102b4350def9572ff051b7f87819a8fe0b261e0583e10671ec79e0bee6b900aa5314629f0800ade3b94eff8676db7b913b2cbcf926e57ac3e7b97 SHA512 47ea8bf8f6e2b39902cf53558bb33a90be1ae5182e076904e243201057e0ca239e775fd30b3365078bd2e7406987eeb6251cedca43421ee52faa70c23066278d -EBUILD rust-1.84.1.ebuild 23389 BLAKE2B 2ad9acb5b85e5e2a991cc78fe7389eaf41772e4e068e26a196931b6825ed62472659cdde3ec6bb381aa7738f53123cc10fbf0d655f8eb39d59c17b88f86e600d SHA512 6ab88695cc1f8420e4b45914a29fc9e5f21618ecb1c202141c156624d95bfce4e341a80553928c3b541c795fef7c309b4040607487109b3d71d3d3e615f1f556 +EBUILD rust-1.71.1-r101.ebuild 22030 BLAKE2B 58e75a73001d98eb55cbe015daf1a25b432594dcd455b7a068695d149ae22ac4934e05494716d25c45976f8c17f826d0022d38044710f4a7f0c1aeea46a875ad SHA512 51b9c7898587ace9e812b51db86e3fdc51e53eba29bb65ab6dd903da417adab07b15cad5f99cabbe541c08391043ba06bcdf7da8b20d45817fb5bc6cfc30f77c +EBUILD rust-1.74.1-r101.ebuild 37643 BLAKE2B 3c25e40a1c7a2e2b6223e544f5c5dd041715b04dec89d0afd25e072ebb5f836b91943330d0010f3b6a17e728811718cbaf344a5dabf001227f48788b157a6851 SHA512 3e89d30915b7c92f2edb164f1a3fe1e2fea47a4a952717f2a110379852f85cf3f4013ef2436f003a79b60ccc76888056a15da2c8eccc19e502bfede9f4ebd7b4 +EBUILD rust-1.75.0-r101.ebuild 23537 BLAKE2B 3314232dbba9bd04f761e50f963f95db91f45eab4ee4dbbf578c05bed09e079edc27ee37a7d71aa9b6969e1ed32d2ff91ee5cdff3cd7676e60bfba0344f4aba2 SHA512 e09ecdbbbb53a872b0a628610585239c3e53165e8ca5737bcbcfff74e1f5418ca818a1f3ba38227cd477a630993ecb05fed20c8010c9a1b56c2efa32c88a6d65 +EBUILD rust-1.76.0-r101.ebuild 20045 BLAKE2B b7d74577b9491930c6f950bfd4bcaec6bbf25c938f67d293f85ca818b56791ed7a64b7a8fc0ea5f15be00a4bfb384c91725a200061bce16a188b83659881bdf4 SHA512 c272ce7816b9ca45fc7f86019ca0c37944191632d5d6491489ead86b7ff7b6b35a65b85bf97ef0a8415d29e6b9cd53649a3d93c6670fd22f734a4bb96d0c2b75 +EBUILD rust-1.77.1-r101.ebuild 23501 BLAKE2B 29040b14df7538cf8cd450a6a6b4bcfed4d40e507327dae34287363c3069b151ee55eb53f4e5df14954a9b81de74484a05fc48f44bd71139d45d74e21014d1fd SHA512 aedaa5c9c7c400fc3d76e8eb99e93c5ed7f5419f97cb0516f6f065c90919df4309235cd6ed10264d02f36cc470152e355a6c90cf4c6b937347115f198bc686bf +EBUILD rust-1.78.0-r101.ebuild 23736 BLAKE2B 555bab47f61ab8520369a7878ae5ab644eeaeef46cf87b2b38783b2c04e2778e844d6aae1de85bde4a9c0be4dda25e22829fd4cbf71bf9915ddb4ef90d94995a SHA512 3d0b3f539e509c9d4436a150a3b0598cdc7e30d57b2eb41e9371ff824a05bb28ff031e604c7936f4b2c492d3153f602acc2ed5c821cea757b992c5a4faa4d36a +EBUILD rust-1.79.0-r101.ebuild 23736 BLAKE2B 555bab47f61ab8520369a7878ae5ab644eeaeef46cf87b2b38783b2c04e2778e844d6aae1de85bde4a9c0be4dda25e22829fd4cbf71bf9915ddb4ef90d94995a SHA512 3d0b3f539e509c9d4436a150a3b0598cdc7e30d57b2eb41e9371ff824a05bb28ff031e604c7936f4b2c492d3153f602acc2ed5c821cea757b992c5a4faa4d36a +EBUILD rust-1.80.1-r101.ebuild 23608 BLAKE2B 418beedaf87e3c1dfefdce12564dde1e10ff6722690f4d7a60faff0aa89bc1953c0a3fddbae5de131cd386f7d0c0c1377ecaa6acbdba3f3c0aeedd4f4fe75067 SHA512 3006aab0d8138ba6dcf5715386d69bfaafc1767dcc8019253f27e615e198588b3ff0b7d98b7bb70a05804dda846572c49f9590ca0f228481c4168456e27af1b7 +EBUILD rust-1.81.0-r101.ebuild 23805 BLAKE2B 682aa0f041d84310e3fe85f2b92ef476090207c619d92d75c84173b63b86c14b052ae93d105d85a6ddcc1fa887dd791dcd9d3af3c4b9302af27f5902fb190dcf SHA512 fafe7c8b80c5a5c6c0783a113c2dce3c96dc5c8684da29241836ff59d266b0ea0e1d4d34ceb0c1c94f79f66bfc2221ea23b2d6aeb797e348d0e465ca1c5297f0 +EBUILD rust-1.82.0-r102.ebuild 24000 BLAKE2B a40774735acbe3af636566bd83c799422bb365f5b3cbc16f35ee4a13cd2415f3a2aade6ae59c910e8aa6671d26a5387eb66acf3aa9a38b494bae90a5171dc1ba SHA512 7be689a92fd46a71425088f388cb5fc380a5baf82f85119450b1c8a7464f8435e49b2ba4cf4479c728bc8c4d250455d33bd77262952b9f0143ed2a0ccdb4638d +EBUILD rust-1.83.0-r2.ebuild 23233 BLAKE2B b85425b5ed8eb8e344df196f4728e5d4d3606a0fb4c4ead41b9d8ff631736c566ffb8559579c0ee00675a4b1457c4b19d54cd06ff63abe3d997ad46b07028551 SHA512 767ccf3e9ee1812b70268239123f1ebdf45be6be3ae498d359b9b09ad2f095da1c21fbe519ce7971850aee2760826655576e0ef560e93b0f5432ef25cc180ef6 +EBUILD rust-1.84.0-r1.ebuild 21926 BLAKE2B 66c3092a1e85825a1f1cebdca4a565b8cac89dc48c52d39fa594dec33c95bbb2b9567a3160d3b632643dc9e46fdbd416511d6560179639343437d68d95ef9c52 SHA512 b23b45a6bd4faa321a953ecb8b202edb03cce2a29905f272eeefcd52d4626350487300cbef91306f0cf6f3c919a59c318ca54e637b31dc97d0d3439f87a58265 +EBUILD rust-1.84.1-r1.ebuild 21911 BLAKE2B fdaf45f702f65a7050fd14b960437c476063706127d82bc154234f8be1ec5058874baee6f4043c43ee45b7e473a88dcac7efe3ba61b49bef48052e24c740f16c SHA512 839b6ee0d8ce2fc139bfbaca64008ba55fee0728c9c004c1e79a5f9adec6159eaeb7e054054fcf4dc6f2687ffeff31a5aa5ed0ef5b46dc7ff01352bbcd765b3a MISC metadata.xml 1841 BLAKE2B 48a8167ae44a7f4892b917895298627ac920af6c488180980e65bdeec53b650455fc6d7dddad0a7a8257d473080082377fb6b6df6a834b294b6e6485e6784a1e SHA512 1f5fd792b65ccac89a61233004980d9f7cbaecea5d05f35f9cc2dc9cab4e3ccfcd46828e88770a1b8ba5ca23064b6a75eea72a0b32bcce52bb399b85ac95f755 diff --git a/dev-lang/rust/rust-1.71.1-r100.ebuild b/dev-lang/rust/rust-1.71.1-r100.ebuild deleted file mode 100644 index dedaab4fcbad..000000000000 --- a/dev-lang/rust/rust-1.71.1-r100.ebuild +++ /dev/null @@ -1,711 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 16 ) -PYTHON_COMPAT=( python3_{10..12} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430 - NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.71.1-fix-bootstrap-version-comparison.patch - "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch -) - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc", "rust-demangler"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - changelog-seen = 2 - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}" - CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}" - CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" - CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" - CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" - CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}" - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_target}" - host = ["${rust_target}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - default-linker = "$(tc-getCC)" - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - lto = "$(usex lto fat off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - _EOF_ - fi - done - if use wasm; then - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - rust-demangler - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/libexec - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.71.1-r101.ebuild b/dev-lang/rust/rust-1.71.1-r101.ebuild new file mode 100644 index 000000000000..a454fcc7d08a --- /dev/null +++ b/dev-lang/rust/rust-1.71.1-r101.ebuild @@ -0,0 +1,710 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 16 ) +PYTHON_COMPAT=( python3_{10..12} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430 + NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.71.1-fix-bootstrap-version-comparison.patch + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch +) + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc", "rust-demangler"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}" + CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}" + CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}" + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + default-linker = "$(tc-getCC)" + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + rust-demangler + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.74.1-r100.ebuild b/dev-lang/rust/rust-1.74.1-r100.ebuild deleted file mode 100644 index d131b800b874..000000000000 --- a/dev-lang/rust/rust-1.74.1-r100.ebuild +++ /dev/null @@ -1,1023 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -PYTHON_COMPAT=( python3_{10..12} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" -RUST_OPTIONAL=1 - -MRUSTC_VERSION="0.11.2" -MRUSTC_RUST_VERSION="1.74.0" - -inherit check-reqs cmake edo estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" - -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri mrustc-bootstrap nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) - mrustc-bootstrap? ( - ~dev-lang/mrustc-${MRUSTC_VERSION} - dev-build/cmake - sys-devel/gcc:* - ) - !mrustc-bootstrap? ( ${RUST_DEPEND} ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - if use mrustc-bootstrap; then - M=$(( 2 * ${M} )) - fi - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]]; then - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - if use mrustc-bootstrap; then - if ! tc-is-gcc; then - die "USE=mrustc-bootstrap reqires that the build environment use GCC" - fi - else - rust_pkg_setup - fi - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi - fi -} - -src_prepare() { - default - # We'll need to revert this after the bootstrap. - if use mrustc-bootstrap; then - pushd "${S}" 2>/dev/null || die - patch -p0 < "${BROOT}"/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-src.patch || - die "Failed to patch sources to enable bootstrap with mrustc" - popd 2>/dev/null || die - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc", "rust-demangler"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer"' - use rust-src && tools+=',"src"' - - if use mrustc-bootstrap; then - local rust_stage0_root="${WORKDIR}/bootstrap/rust-${PV}" - else - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - fi - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - changelog-seen = 2 - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - lto = "$(usex lto fat off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - _EOF_ - fi - done - if use wasm; then - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -# Build a very minimal llvm that we can use for bootstrap rustc codegen -llvm_bootstrap() { - # Reference ${P}/src/bootstrap/native.rs for these values - local llvm_cmake_opts=( - "-G Ninja" - "-DLLVM_TARGET_ARCH=${CFG_COMPILER_HOST_TRIPLE%%-*}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${CFG_COMPILER_HOST_TRIPLE}" - "-DLLVM_TARGETS_TO_BUILD=${BOOTSTRAP_LLVM_TARGETS:=X86;ARM;AArch64}" #;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX - "-DLLVM_ENABLE_ASSERTIONS=OFF" - "-DLLVM_INCLUDE_EXAMPLES=OFF" - "-DLLVM_INCLUDE_TESTS=OFF" - "-DLLVM_INCLUDE_DOCS=OFF" - "-DLLVM_INCLUDE_BENCHMARKS=OFF" - "-DLLVM_ENABLE_ZLIB=OFF" - "-DLLVM_ENABLE_TERMINFO=OFF" - "-DLLVM_ENABLE_LIBEDIT=OFF" - "-DCMAKE_CXX_COMPILER=$(tc-getCXX)" - "-DCMAKE_C_COMPILER=$(tc-getCC)" - "-DCMAKE_BUILD_TYPE=Release" - ) - - if [[ -z "${LLVM_CMAKE_OPTS_EXTRA}" ]]; then - llvm_cmake_opts+=( "${LLVM_CMAKE_OPTS_EXTRA}") - fi - - elog "Building bootstrap llvm ..." - - mkdir -p "${WORKDIR}/bootstrap/llvm" || die - pushd "${WORKDIR}/bootstrap/llvm" 2>/dev/null || die - edo cmake ${llvm_cmake_opts[*]} "${S}/src/llvm-project/llvm" - eninja || die "Failed to build bootstrap llvm" - popd 2>/dev/null || die -} - -# High level steps: -# Our system mrustc package has built stdlib for our current platform. -# - Step 1: Use system-installed mrustc, (m)rust(c) stdlib, and minicargo to -# bootstrap a `cargo` and `rustc` (mrustc-stage0) -# - Step 2: Use minicargo and the built `rustc` to build a working `sysroot` -# (includes `std`, `panic_unwind``, `test`, etc.) (mrustc-stage0) -# - Step 3: Build build libs again (this time using `cargo` and `rustc`) (mrustc-stage1) -# - Step 4: Build a `rustc` using those libs (mrustc-stage1) -# - Done so there's an optimised rustc arollvm_cmake_optsund (mrustc is bad at codegen) -# - Step 5: Build `libstd` with this `rustc` (mrustc-stage2) -# - Needed to match ABIs -# Stages: -# - mrustc-stage0: mrustc-built cargo and rustc -# - mrustc-stage1: rustc and sysroot built with mrustc-stage0 -# - mrustc-stage2: rustc from stage1 with sysroot built with stage0 -# See: -# - https://github.com/thepowersgang/mrustc/blob/master/run_rustc/Makefile -# - https://github.com/thepowersgang/mrustc/blob/master/TestRustcBootstrap.sh -# - Upstream Windows .cmd files are also a good reference for early bootstrap -mrustc_bootstrap() { - export RUSTC_BOOTSTRAP=1 # Possibly the only intended use of this variable in ::gentoo - # export these variables now and unset them at the end of the function so they don't leak - # into the rest of the build. - export CFG_COMPILER_HOST_TRIPLE="$(rust_abi)" - export CFG_RELEASE="${MRUSTC_RUST_VERSION}" # Let's pretend we're 1.74.0 - export CFG_RELEASE_CHANNEL="stable" - export CFG_VERSION="${MRUSTC_RUST_VERSION}-stable-mrustc" - export CFG_PREFIX="mrustc" - export CFG_LIBDIR_RELATIVE="lib" - export RUSTC_INSTALL_BINDIR="bin" - export REAL_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" - - # These flags are used in every invocation of our bootstrap `cargo`. - local cargo_flags="--target ${CFG_COMPILER_HOST_TRIPLE} -j $(makeopts_jobs) --release --verbose" - - if use system-llvm; then - export LLVM_CONFIG="$(get_llvm_prefix)/bin/llvm-config" - else - llvm_bootstrap - export LLVM_CONFIG="${WORKDIR}/bootstrap/llvm/bin/llvm-config" - fi - - # define the mrustc sysroot and common minicargo arguments. - local mrustc_sysroot="${BROOT}/usr/lib/rust/mrustc-${MRUSTC_VERSION}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" - local minicargo_common_args=( - "-L" "${mrustc_sysroot}" - "-j" "$(makeopts_jobs)" - "--vendor-dir" "${S}/vendor" - "--manifest-overrides" - "${BROOT}/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-overrides.toml" - ) - # There's a very good chance that minicargo and mrustc are not in the PATH. - if ! command -v minicargo &> /dev/null; then - export PATH="${BROOT}/usr/lib/rust/mrustc-${MRUSTC_VERSION}/bin:${PATH}" - fi - # Sanity check our bootstrap compiler & stdlib. - elog "Sanity checking mrustc and stdlib ..." - edo mrustc "${S}/tests/ui/hello_world/main.rs" -L "${mrustc_sysroot}" -o "${T}"/hello -g - "${T}"/hello || die "Failed to run hello_world" - # Seems fine, let's build some tools! - - # Step 1: Build a `cargo` and `rustc` using system-installed mrustc - # Anything we produce is going to be terribly unoptimised; mrustc does not do fantastic codegen. - # It's good enough to bootstrap the "real" rustc though. - elog "Building bootstrap cargo and rustc using mrustc and minicargo (mrustc-stage0) ..." - local stage0="${WORKDIR}/bootstrap/mrustc-stage0" - mkdir -p "${stage0}" || die - edo minicargo "${S}"/src/tools/cargo --output-dir "${stage0}"/cargo-build ${minicargo_common_args[*]} - "${stage0}"/cargo-build/cargo --version || die "Bootstrap cargo failed basic sanity check" - edo minicargo "${S}"/compiler/rustc --output-dir "${stage0}"/rustc-build ${minicargo_common_args[*]} \ - --features llvm - "${stage0}"/rustc-build/rustc_main --version || die "Bootstrap rustc failed basic sanity check" - # minicargo has special-casing for `rustc` so we need to rename it. - mv "${stage0}"/rustc-build/rustc_main "${stage0}"/rustc-build/rustc || die "Failed to rename rustc_main to rustc" - # rustc wants these here - mkdir -p "${stage0}"/codegen-backends || die - mv "${stage0}"/rustc-build/librustc_codegen_llvm.* "${stage0}"/codegen-backends || die - - # Step 2: use the bootstrapped rustc to build sysroot; we need to use `minicargo` for this - - # mrustc does not accept all of the arguments that rustc does, even with the rustc_proxy wrapper. - # `--script-overrides`: If the overrides are available, build scripts (and build-deps) are not built - # which is good since we don't have a working compiler yet, and can't build them. - - local stage0_sysroot_lib="${stage0}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" - # minicargo <= 0.11.2 doesn't create this directory and silently fails, besides it's better to be explicit, right? - mkdir -p "${stage0_sysroot_lib}" || die "Failed to create stage0 directory" - - elog "Building 'sysroot' using bootstrap rustc (mrustc-stage0) ..." - edo env MRUSTC_PATH="${stage0}/rustc-build/rustc" minicargo -j $(makeopts_jobs) --vendor-dir "${S}"/vendor \ - --script-overrides "${BROOT}/usr/share/mrustc-0.11.2/script-overrides/stable-${MRUSTC_RUST_VERSION}-linux/" \ - --output-dir "${stage0_sysroot_lib}" "${S}"/library/sysroot || - die "Failed to build sysroot with bootstrap rust (mrustc-stage0)" - - elog "Sanity checking sysroot and rustc ..." - mkdir -p "${T}"/stage0-hello || die - edo "${stage0}"/rustc-build/rustc -L "${stage0_sysroot_lib}" -g "${S}/tests/ui/hello_world/main.rs" \ - -o "${T}"/stage0-hello/hello - "${T}"/stage0-hello/hello || die "Failed to run hello_world built with bootstrap rust stage0" - - elog "mrustc bootstrap stage0 complete!" - - # Step 3: Build a "proper" libstd, including dynamic libs using our bootstrap cargo and rustc. - elog "Building 'sysroot' with the stage0 rustc (mrustc-stage1) ..." - local stage1="${WORKDIR}/bootstrap/mrustc-stage1" - local stage1_sysroot_lib="${stage1}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" - mkdir -p "${stage1_sysroot_lib}" || die "Failed to create stage1 directory" - mkdir -p "${stage1}/bin" || die - - # Simplified to avoid calling rustc_proxy; We don't need stage1 rustc until after this is built... - edo env RUSTFLAGS="-Z force-unstable-if-unmarked" CARGO_TARGET_DIR="${stage1}/sysroot-build" \ - RUSTC="${stage0}/rustc-build/rustc" "${stage0}"/cargo-build/cargo build ${cargo_flags} \ - --manifest-path "${S}/library/sysroot/Cargo.toml" --features panic-unwind - - # Move the built libs into the sysroot libdir. - mv "${stage1}/sysroot-build/${CFG_COMPILER_HOST_TRIPLE}/release/deps"/*.{rlib,rmeta,so} \ - "${stage1_sysroot_lib}" || die "Failed to move stage1 libs to stage1 sysroot" - - # We need to copy the stage0 rustc to the stage1 sysroot; this "updates" the sysroot location and enables - # resolution of stage1 libs. (run `rustc --print sysroot` on stage0 and stage1 rustc to verify) - cp "${stage0}/rustc-build/rustc" "${stage1}/bin/rustc" || die "Failed to copy rustc to stage1 sysroot" - - # Step 4: Build `rustc` with itself, so we have a rustc with the right ABI. - # This will be our final `rustc` for the bootstrap process. - elog "Building rustc with stage1 libs (mrustc-stage1) ..." - mkdir -p "${stage1}/rustc-build" || die - edo env RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$ORIGIN/../lib" \ - LD_LIBRARY_PATH="${stage2_sysroot_lib}" CARGO_TARGET_DIR="${stage1}/rustc-build" \ - RUSTC="${stage1}/bin/rustc" TMPDIR="${T}" "${stage0}"/cargo-build/cargo build ${cargo_flags} \ - --manifest-path "${S}/compiler/rustc/Cargo.toml" --features llvm - - # Step 5: Build `sysroot` with this `rustc` - Needed to match ABI - # We need to use the previous sysroot; we could reuse that dir but it's easier to just copy it. - elog "Building final 'sysroot' with the final rustc (mrustc-stage2) ..." - local stage2="${WORKDIR}/bootstrap/mrustc-stage2" - local stage2_sysroot_lib="${stage2}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" - mkdir -p "${stage2_sysroot_lib}" || die "Failed to create stage2 directory" - mkdir -p "${stage2}/bin" || die - - # Copy required files from stage1 to stage2 sysroot - cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/rustc-main "${stage2}/bin/rustc_binary" || - die "Failed to copy final rustc to stage2 sysroot" - cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/librustc_driver.so "${stage2}/lib" || - die "Failed to copy librustc_driver to sysroot" - cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/deps/*.{rlib,so} "${stage2_sysroot_lib}" || - die "Failed to copy final rustc libs to stage2 sysroot" - cp "${stage1_sysroot_lib}"/* "${stage2_sysroot_lib}" || die "Failed to copy stage1 so files to stage2 sysroot" - - # There's a magic script used in place of rustc so that libs can be found - cat <<- EOF > "${stage2}/bin/rustc" || die "Failed to create rustc wrapper" - #!/bin/sh - LD_LIBRARY_PATH="${stage2}/lib:${stage2_sysroot_lib}" ${stage2}/bin/rustc_binary "\$@" - EOF - chmod +x "${stage2}/bin/rustc" || die "Failed to make rustc wrapper executable" - - # Use rustc to build 'sysroot'; this is the final step in the bootstrap process. - # rpath probably isn't needed here, but it doesn't hurt. - edo env RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$ORIGIN/../lib" \ - CARGO_TARGET_DIR="${stage2}/stdlib-build" RUSTC="${stage2}/bin/rustc" \ - "${stage0}"/cargo-build/cargo build ${cargo_flags} --manifest-path "${S}/library/sysroot/Cargo.toml" \ - --features panic-unwind - - # Build our final output sysroot - local output="${WORKDIR}/bootstrap/rust-${PV}" - local output_sysroot_lib="${output}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" - mkdir -p "${output_sysroot_lib}" || die "Failed to create output directory" - mkdir -p "${output}/bin" || die "Failed to create output directory" - - # Copy our various output files into the output sysroot - # rustc - cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/rustc-main "${output}/bin/rustc_binary" || - die "Failed to copy final rustc to output" - cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/librustc_driver.so "${output}/lib" || - die "Failed to copy librustc_driver to output" - cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/deps/*.{rlib,so} "${output_sysroot_lib}" || - die "Failed to copy final rustc libs to output" - # cargo; no need to build an optimised cargo if we're using this to build a complelety new Rust. - cp "${stage0}/cargo-build/cargo" "${output}/bin/cargo" || die "Failed to copy cargo to output" - # libs - mv "${stage2}/stdlib-build/${CFG_COMPILER_HOST_TRIPLE}/release/deps"/*.{rlib,rmeta,so} "${output_sysroot_lib}" || - die "Failed to copy stage2 libs to output" - # Our trusty rustc wrapper - cat <<- EOF > "${output}/bin/rustc" || die "Failed to create rustc wrapper" - #!/bin/sh - LD_LIBRARY_PATH="${output}/lib:${output_sysroot_lib}" ${output}/bin/rustc_binary "\$@" - EOF - chmod +x "${output}/bin/rustc" || die "Failed to make rustc wrapper executable" - - # Perform a sanity check on the final Rust. - mkdir -p "${T}"/output-hello || die - edo "${output}/bin/rustc" -L "${output_sysroot_lib}" -g "${S}/tests/ui/hello_world/main.rs" \ - -o "${T}"/output-hello/hello - "${T}"/output-hello/hello || die "Failed to run hello_world built with bootstrapped Rust" - - elog "Successfully bootstrapped Rust using mrustc!" - - # Note: The Rust sysroot that we've produced is pretty close to what we'd expect from a normal Rust build. - # If someone was so inclined they could build an optimised cargo using the stage2 rustc and sysroot, - # and install the output directly. This is untested, as I'm sure there's more to it than that. - # I'm satisfied with being able to build Rust normally at this point. - - # Tidy up the Rust sources; revert mrustc changes so Rust can be built normally. - pushd "${S}" 2>/dev/null || die - patch -R -p0 < "${BROOT}"/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-src.patch || - die "Failed to revert mrustc patches" - popd 2>/dev/null || die - - # Tidy up any environment variables we've set in the bootstrap process. - unset CFG_COMPILER_HOST_TRIPLE CFG_RELEASE CFG_RELEASE_CHANNEL CFG_PREFIX CFG_VERSION - unset CFG_LIBDIR_RELATIVE LLVM_CONFIG REAL_LIBRARY_PATH_VAR RUSTFLAGS RUSTC_BOOTSTRAP RUSTC_INSTALL_BINDIR -} - -src_compile() { - use mrustc-bootstrap && mrustc_bootstrap - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - rust-demangler - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.74.1-r101.ebuild b/dev-lang/rust/rust-1.74.1-r101.ebuild new file mode 100644 index 000000000000..cabb75e7e37c --- /dev/null +++ b/dev-lang/rust/rust-1.74.1-r101.ebuild @@ -0,0 +1,1022 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +PYTHON_COMPAT=( python3_{10..12} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" +RUST_OPTIONAL=1 + +MRUSTC_VERSION="0.11.2" +MRUSTC_RUST_VERSION="1.74.0" + +inherit check-reqs cmake edo estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" + +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri mrustc-bootstrap nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) + mrustc-bootstrap? ( + ~dev-lang/mrustc-${MRUSTC_VERSION} + dev-build/cmake + sys-devel/gcc:* + ) + !mrustc-bootstrap? ( ${RUST_DEPEND} ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + if use mrustc-bootstrap; then + M=$(( 2 * ${M} )) + fi + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]]; then + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + if use mrustc-bootstrap; then + if ! tc-is-gcc; then + die "USE=mrustc-bootstrap reqires that the build environment use GCC" + fi + else + rust_pkg_setup + fi + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi + fi +} + +src_prepare() { + default + # We'll need to revert this after the bootstrap. + if use mrustc-bootstrap; then + pushd "${S}" 2>/dev/null || die + patch -p0 < "${BROOT}"/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-src.patch || + die "Failed to patch sources to enable bootstrap with mrustc" + popd 2>/dev/null || die + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc", "rust-demangler"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + if use mrustc-bootstrap; then + local rust_stage0_root="${WORKDIR}/bootstrap/rust-${PV}" + else + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + fi + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +# Build a very minimal llvm that we can use for bootstrap rustc codegen +llvm_bootstrap() { + # Reference ${P}/src/bootstrap/native.rs for these values + local llvm_cmake_opts=( + "-G Ninja" + "-DLLVM_TARGET_ARCH=${CFG_COMPILER_HOST_TRIPLE%%-*}" + "-DLLVM_DEFAULT_TARGET_TRIPLE=${CFG_COMPILER_HOST_TRIPLE}" + "-DLLVM_TARGETS_TO_BUILD=${BOOTSTRAP_LLVM_TARGETS:=X86;ARM;AArch64}" #;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX + "-DLLVM_ENABLE_ASSERTIONS=OFF" + "-DLLVM_INCLUDE_EXAMPLES=OFF" + "-DLLVM_INCLUDE_TESTS=OFF" + "-DLLVM_INCLUDE_DOCS=OFF" + "-DLLVM_INCLUDE_BENCHMARKS=OFF" + "-DLLVM_ENABLE_ZLIB=OFF" + "-DLLVM_ENABLE_TERMINFO=OFF" + "-DLLVM_ENABLE_LIBEDIT=OFF" + "-DCMAKE_CXX_COMPILER=$(tc-getCXX)" + "-DCMAKE_C_COMPILER=$(tc-getCC)" + "-DCMAKE_BUILD_TYPE=Release" + ) + + if [[ -z "${LLVM_CMAKE_OPTS_EXTRA}" ]]; then + llvm_cmake_opts+=( "${LLVM_CMAKE_OPTS_EXTRA}") + fi + + elog "Building bootstrap llvm ..." + + mkdir -p "${WORKDIR}/bootstrap/llvm" || die + pushd "${WORKDIR}/bootstrap/llvm" 2>/dev/null || die + edo cmake ${llvm_cmake_opts[*]} "${S}/src/llvm-project/llvm" + eninja || die "Failed to build bootstrap llvm" + popd 2>/dev/null || die +} + +# High level steps: +# Our system mrustc package has built stdlib for our current platform. +# - Step 1: Use system-installed mrustc, (m)rust(c) stdlib, and minicargo to +# bootstrap a `cargo` and `rustc` (mrustc-stage0) +# - Step 2: Use minicargo and the built `rustc` to build a working `sysroot` +# (includes `std`, `panic_unwind``, `test`, etc.) (mrustc-stage0) +# - Step 3: Build build libs again (this time using `cargo` and `rustc`) (mrustc-stage1) +# - Step 4: Build a `rustc` using those libs (mrustc-stage1) +# - Done so there's an optimised rustc arollvm_cmake_optsund (mrustc is bad at codegen) +# - Step 5: Build `libstd` with this `rustc` (mrustc-stage2) +# - Needed to match ABIs +# Stages: +# - mrustc-stage0: mrustc-built cargo and rustc +# - mrustc-stage1: rustc and sysroot built with mrustc-stage0 +# - mrustc-stage2: rustc from stage1 with sysroot built with stage0 +# See: +# - https://github.com/thepowersgang/mrustc/blob/master/run_rustc/Makefile +# - https://github.com/thepowersgang/mrustc/blob/master/TestRustcBootstrap.sh +# - Upstream Windows .cmd files are also a good reference for early bootstrap +mrustc_bootstrap() { + export RUSTC_BOOTSTRAP=1 # Possibly the only intended use of this variable in ::gentoo + # export these variables now and unset them at the end of the function so they don't leak + # into the rest of the build. + export CFG_COMPILER_HOST_TRIPLE="$(rust_abi)" + export CFG_RELEASE="${MRUSTC_RUST_VERSION}" # Let's pretend we're 1.74.0 + export CFG_RELEASE_CHANNEL="stable" + export CFG_VERSION="${MRUSTC_RUST_VERSION}-stable-mrustc" + export CFG_PREFIX="mrustc" + export CFG_LIBDIR_RELATIVE="lib" + export RUSTC_INSTALL_BINDIR="bin" + export REAL_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" + + # These flags are used in every invocation of our bootstrap `cargo`. + local cargo_flags="--target ${CFG_COMPILER_HOST_TRIPLE} -j $(makeopts_jobs) --release --verbose" + + if use system-llvm; then + export LLVM_CONFIG="$(get_llvm_prefix)/bin/llvm-config" + else + llvm_bootstrap + export LLVM_CONFIG="${WORKDIR}/bootstrap/llvm/bin/llvm-config" + fi + + # define the mrustc sysroot and common minicargo arguments. + local mrustc_sysroot="${BROOT}/usr/lib/rust/mrustc-${MRUSTC_VERSION}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" + local minicargo_common_args=( + "-L" "${mrustc_sysroot}" + "-j" "$(makeopts_jobs)" + "--vendor-dir" "${S}/vendor" + "--manifest-overrides" + "${BROOT}/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-overrides.toml" + ) + # There's a very good chance that minicargo and mrustc are not in the PATH. + if ! command -v minicargo &> /dev/null; then + export PATH="${BROOT}/usr/lib/rust/mrustc-${MRUSTC_VERSION}/bin:${PATH}" + fi + # Sanity check our bootstrap compiler & stdlib. + elog "Sanity checking mrustc and stdlib ..." + edo mrustc "${S}/tests/ui/hello_world/main.rs" -L "${mrustc_sysroot}" -o "${T}"/hello -g + "${T}"/hello || die "Failed to run hello_world" + # Seems fine, let's build some tools! + + # Step 1: Build a `cargo` and `rustc` using system-installed mrustc + # Anything we produce is going to be terribly unoptimised; mrustc does not do fantastic codegen. + # It's good enough to bootstrap the "real" rustc though. + elog "Building bootstrap cargo and rustc using mrustc and minicargo (mrustc-stage0) ..." + local stage0="${WORKDIR}/bootstrap/mrustc-stage0" + mkdir -p "${stage0}" || die + edo minicargo "${S}"/src/tools/cargo --output-dir "${stage0}"/cargo-build ${minicargo_common_args[*]} + "${stage0}"/cargo-build/cargo --version || die "Bootstrap cargo failed basic sanity check" + edo minicargo "${S}"/compiler/rustc --output-dir "${stage0}"/rustc-build ${minicargo_common_args[*]} \ + --features llvm + "${stage0}"/rustc-build/rustc_main --version || die "Bootstrap rustc failed basic sanity check" + # minicargo has special-casing for `rustc` so we need to rename it. + mv "${stage0}"/rustc-build/rustc_main "${stage0}"/rustc-build/rustc || die "Failed to rename rustc_main to rustc" + # rustc wants these here + mkdir -p "${stage0}"/codegen-backends || die + mv "${stage0}"/rustc-build/librustc_codegen_llvm.* "${stage0}"/codegen-backends || die + + # Step 2: use the bootstrapped rustc to build sysroot; we need to use `minicargo` for this - + # mrustc does not accept all of the arguments that rustc does, even with the rustc_proxy wrapper. + # `--script-overrides`: If the overrides are available, build scripts (and build-deps) are not built + # which is good since we don't have a working compiler yet, and can't build them. + + local stage0_sysroot_lib="${stage0}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" + # minicargo <= 0.11.2 doesn't create this directory and silently fails, besides it's better to be explicit, right? + mkdir -p "${stage0_sysroot_lib}" || die "Failed to create stage0 directory" + + elog "Building 'sysroot' using bootstrap rustc (mrustc-stage0) ..." + edo env MRUSTC_PATH="${stage0}/rustc-build/rustc" minicargo -j $(makeopts_jobs) --vendor-dir "${S}"/vendor \ + --script-overrides "${BROOT}/usr/share/mrustc-0.11.2/script-overrides/stable-${MRUSTC_RUST_VERSION}-linux/" \ + --output-dir "${stage0_sysroot_lib}" "${S}"/library/sysroot || + die "Failed to build sysroot with bootstrap rust (mrustc-stage0)" + + elog "Sanity checking sysroot and rustc ..." + mkdir -p "${T}"/stage0-hello || die + edo "${stage0}"/rustc-build/rustc -L "${stage0_sysroot_lib}" -g "${S}/tests/ui/hello_world/main.rs" \ + -o "${T}"/stage0-hello/hello + "${T}"/stage0-hello/hello || die "Failed to run hello_world built with bootstrap rust stage0" + + elog "mrustc bootstrap stage0 complete!" + + # Step 3: Build a "proper" libstd, including dynamic libs using our bootstrap cargo and rustc. + elog "Building 'sysroot' with the stage0 rustc (mrustc-stage1) ..." + local stage1="${WORKDIR}/bootstrap/mrustc-stage1" + local stage1_sysroot_lib="${stage1}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" + mkdir -p "${stage1_sysroot_lib}" || die "Failed to create stage1 directory" + mkdir -p "${stage1}/bin" || die + + # Simplified to avoid calling rustc_proxy; We don't need stage1 rustc until after this is built... + edo env RUSTFLAGS="-Z force-unstable-if-unmarked" CARGO_TARGET_DIR="${stage1}/sysroot-build" \ + RUSTC="${stage0}/rustc-build/rustc" "${stage0}"/cargo-build/cargo build ${cargo_flags} \ + --manifest-path "${S}/library/sysroot/Cargo.toml" --features panic-unwind + + # Move the built libs into the sysroot libdir. + mv "${stage1}/sysroot-build/${CFG_COMPILER_HOST_TRIPLE}/release/deps"/*.{rlib,rmeta,so} \ + "${stage1_sysroot_lib}" || die "Failed to move stage1 libs to stage1 sysroot" + + # We need to copy the stage0 rustc to the stage1 sysroot; this "updates" the sysroot location and enables + # resolution of stage1 libs. (run `rustc --print sysroot` on stage0 and stage1 rustc to verify) + cp "${stage0}/rustc-build/rustc" "${stage1}/bin/rustc" || die "Failed to copy rustc to stage1 sysroot" + + # Step 4: Build `rustc` with itself, so we have a rustc with the right ABI. + # This will be our final `rustc` for the bootstrap process. + elog "Building rustc with stage1 libs (mrustc-stage1) ..." + mkdir -p "${stage1}/rustc-build" || die + edo env RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$ORIGIN/../lib" \ + LD_LIBRARY_PATH="${stage2_sysroot_lib}" CARGO_TARGET_DIR="${stage1}/rustc-build" \ + RUSTC="${stage1}/bin/rustc" TMPDIR="${T}" "${stage0}"/cargo-build/cargo build ${cargo_flags} \ + --manifest-path "${S}/compiler/rustc/Cargo.toml" --features llvm + + # Step 5: Build `sysroot` with this `rustc` - Needed to match ABI + # We need to use the previous sysroot; we could reuse that dir but it's easier to just copy it. + elog "Building final 'sysroot' with the final rustc (mrustc-stage2) ..." + local stage2="${WORKDIR}/bootstrap/mrustc-stage2" + local stage2_sysroot_lib="${stage2}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" + mkdir -p "${stage2_sysroot_lib}" || die "Failed to create stage2 directory" + mkdir -p "${stage2}/bin" || die + + # Copy required files from stage1 to stage2 sysroot + cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/rustc-main "${stage2}/bin/rustc_binary" || + die "Failed to copy final rustc to stage2 sysroot" + cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/librustc_driver.so "${stage2}/lib" || + die "Failed to copy librustc_driver to sysroot" + cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/deps/*.{rlib,so} "${stage2_sysroot_lib}" || + die "Failed to copy final rustc libs to stage2 sysroot" + cp "${stage1_sysroot_lib}"/* "${stage2_sysroot_lib}" || die "Failed to copy stage1 so files to stage2 sysroot" + + # There's a magic script used in place of rustc so that libs can be found + cat <<- EOF > "${stage2}/bin/rustc" || die "Failed to create rustc wrapper" + #!/bin/sh + LD_LIBRARY_PATH="${stage2}/lib:${stage2_sysroot_lib}" ${stage2}/bin/rustc_binary "\$@" + EOF + chmod +x "${stage2}/bin/rustc" || die "Failed to make rustc wrapper executable" + + # Use rustc to build 'sysroot'; this is the final step in the bootstrap process. + # rpath probably isn't needed here, but it doesn't hurt. + edo env RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$ORIGIN/../lib" \ + CARGO_TARGET_DIR="${stage2}/stdlib-build" RUSTC="${stage2}/bin/rustc" \ + "${stage0}"/cargo-build/cargo build ${cargo_flags} --manifest-path "${S}/library/sysroot/Cargo.toml" \ + --features panic-unwind + + # Build our final output sysroot + local output="${WORKDIR}/bootstrap/rust-${PV}" + local output_sysroot_lib="${output}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib" + mkdir -p "${output_sysroot_lib}" || die "Failed to create output directory" + mkdir -p "${output}/bin" || die "Failed to create output directory" + + # Copy our various output files into the output sysroot + # rustc + cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/rustc-main "${output}/bin/rustc_binary" || + die "Failed to copy final rustc to output" + cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/librustc_driver.so "${output}/lib" || + die "Failed to copy librustc_driver to output" + cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/deps/*.{rlib,so} "${output_sysroot_lib}" || + die "Failed to copy final rustc libs to output" + # cargo; no need to build an optimised cargo if we're using this to build a complelety new Rust. + cp "${stage0}/cargo-build/cargo" "${output}/bin/cargo" || die "Failed to copy cargo to output" + # libs + mv "${stage2}/stdlib-build/${CFG_COMPILER_HOST_TRIPLE}/release/deps"/*.{rlib,rmeta,so} "${output_sysroot_lib}" || + die "Failed to copy stage2 libs to output" + # Our trusty rustc wrapper + cat <<- EOF > "${output}/bin/rustc" || die "Failed to create rustc wrapper" + #!/bin/sh + LD_LIBRARY_PATH="${output}/lib:${output_sysroot_lib}" ${output}/bin/rustc_binary "\$@" + EOF + chmod +x "${output}/bin/rustc" || die "Failed to make rustc wrapper executable" + + # Perform a sanity check on the final Rust. + mkdir -p "${T}"/output-hello || die + edo "${output}/bin/rustc" -L "${output_sysroot_lib}" -g "${S}/tests/ui/hello_world/main.rs" \ + -o "${T}"/output-hello/hello + "${T}"/output-hello/hello || die "Failed to run hello_world built with bootstrapped Rust" + + elog "Successfully bootstrapped Rust using mrustc!" + + # Note: The Rust sysroot that we've produced is pretty close to what we'd expect from a normal Rust build. + # If someone was so inclined they could build an optimised cargo using the stage2 rustc and sysroot, + # and install the output directly. This is untested, as I'm sure there's more to it than that. + # I'm satisfied with being able to build Rust normally at this point. + + # Tidy up the Rust sources; revert mrustc changes so Rust can be built normally. + pushd "${S}" 2>/dev/null || die + patch -R -p0 < "${BROOT}"/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-src.patch || + die "Failed to revert mrustc patches" + popd 2>/dev/null || die + + # Tidy up any environment variables we've set in the bootstrap process. + unset CFG_COMPILER_HOST_TRIPLE CFG_RELEASE CFG_RELEASE_CHANNEL CFG_PREFIX CFG_VERSION + unset CFG_LIBDIR_RELATIVE LLVM_CONFIG REAL_LIBRARY_PATH_VAR RUSTFLAGS RUSTC_BOOTSTRAP RUSTC_INSTALL_BINDIR +} + +src_compile() { + use mrustc-bootstrap && mrustc_bootstrap + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + rust-demangler + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.75.0-r100.ebuild b/dev-lang/rust/rust-1.75.0-r100.ebuild deleted file mode 100644 index 478f58c567f0..000000000000 --- a/dev-lang/rust/rust-1.75.0-r100.ebuild +++ /dev/null @@ -1,743 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -PYTHON_COMPAT=( python3_{10..12} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Language empowering everyone to build reliable and efficient software" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch - # This patch shouldn't be necessary for later versions of Rust because its - # code was backported from master. - "${FILESDIR}"/1.75.0-handle-vendored-sources.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc", "rust-demangler"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - changelog-seen = 2 - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - lto = "$(usex lto fat off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - _EOF_ - fi - done - if use wasm; then - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - rust-demangler - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.75.0-r101.ebuild b/dev-lang/rust/rust-1.75.0-r101.ebuild new file mode 100644 index 000000000000..5bec96815fdf --- /dev/null +++ b/dev-lang/rust/rust-1.75.0-r101.ebuild @@ -0,0 +1,742 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +PYTHON_COMPAT=( python3_{10..12} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + # This patch shouldn't be necessary for later versions of Rust because its + # code was backported from master. + "${FILESDIR}"/1.75.0-handle-vendored-sources.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc", "rust-demangler"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + rust-demangler + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.76.0-r100.ebuild b/dev-lang/rust/rust-1.76.0-r100.ebuild deleted file mode 100644 index 364d59bed5b6..000000000000 --- a/dev-lang/rust/rust-1.76.0-r100.ebuild +++ /dev/null @@ -1,660 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -PYTHON_COMPAT=( python3_{10..12} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.75.0-handle-vendored-sources.patch - "${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0 -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc", "rust-demangler"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - changelog-seen = 2 - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - _EOF_ - fi - done - if use wasm; then - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - rust-demangler - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.76.0-r101.ebuild b/dev-lang/rust/rust-1.76.0-r101.ebuild new file mode 100644 index 000000000000..f26d3673bb4f --- /dev/null +++ b/dev-lang/rust/rust-1.76.0-r101.ebuild @@ -0,0 +1,659 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +PYTHON_COMPAT=( python3_{10..12} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.75.0-handle-vendored-sources.patch + "${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0 +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc", "rust-demangler"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + rust-demangler + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.77.1-r100.ebuild b/dev-lang/rust/rust-1.77.1-r100.ebuild deleted file mode 100644 index 5461a2a6b93e..000000000000 --- a/dev-lang/rust/rust-1.77.1-r100.ebuild +++ /dev/null @@ -1,742 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 17 ) -PYTHON_COMPAT=( python3_{10..12} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0 -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc", "rust-demangler"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - changelog-seen = 2 - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - _EOF_ - fi - done - if use wasm; then - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - rust-demangler - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.77.1-r101.ebuild b/dev-lang/rust/rust-1.77.1-r101.ebuild new file mode 100644 index 000000000000..a84253b3343f --- /dev/null +++ b/dev-lang/rust/rust-1.77.1-r101.ebuild @@ -0,0 +1,741 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 17 ) +PYTHON_COMPAT=( python3_{10..12} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0 +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc", "rust-demangler"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + rust-demangler + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.78.0-r100.ebuild b/dev-lang/rust/rust-1.78.0-r100.ebuild deleted file mode 100644 index 19a64890ab0b..000000000000 --- a/dev-lang/rust/rust-1.78.0-r100.ebuild +++ /dev/null @@ -1,745 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.79.0-revert-8c40426.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc", "rust-demangler"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - rust-demangler - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.78.0-r101.ebuild b/dev-lang/rust/rust-1.78.0-r101.ebuild new file mode 100644 index 000000000000..a2ab0b579d5f --- /dev/null +++ b/dev-lang/rust/rust-1.78.0-r101.ebuild @@ -0,0 +1,744 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.79.0-revert-8c40426.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc", "rust-demangler"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + rust-demangler + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.79.0-r100.ebuild b/dev-lang/rust/rust-1.79.0-r100.ebuild deleted file mode 100644 index 19a64890ab0b..000000000000 --- a/dev-lang/rust/rust-1.79.0-r100.ebuild +++ /dev/null @@ -1,745 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.79.0-revert-8c40426.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc", "rust-demangler"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - rust-demangler - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-demangler - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.79.0-r101.ebuild b/dev-lang/rust/rust-1.79.0-r101.ebuild new file mode 100644 index 000000000000..a2ab0b579d5f --- /dev/null +++ b/dev-lang/rust/rust-1.79.0-r101.ebuild @@ -0,0 +1,744 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.79.0-revert-8c40426.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc", "rust-demangler"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + rust-demangler + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-demangler + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.80.1-r100.ebuild b/dev-lang/rust/rust-1.80.1-r100.ebuild deleted file mode 100644 index fb5eef4568b5..000000000000 --- a/dev-lang/rust/rust-1.80.1-r100.ebuild +++ /dev/null @@ -1,742 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ - optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.79.0-revert-8c40426.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.80.1-r101.ebuild b/dev-lang/rust/rust-1.80.1-r101.ebuild new file mode 100644 index 000000000000..c569cb53351c --- /dev/null +++ b/dev-lang/rust/rust-1.80.1-r101.ebuild @@ -0,0 +1,741 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \ + optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.79.0-revert-8c40426.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.81.0-r100.ebuild b/dev-lang/rust/rust-1.81.0-r100.ebuild deleted file mode 100644 index 93dfa988757c..000000000000 --- a/dev-lang/rust/rust-1.81.0-r100.ebuild +++ /dev/null @@ -1,746 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 18 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ - multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1" -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.79.0-revert-8c40426.patch - "${FILESDIR}/1.81.0-backport-bug937164.patch" - "${FILESDIR}/1.81.0-backport-llvm-pr101761.patch" - "${FILESDIR}/1.81.0-backport-llvm-pr101766.patch" -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.81.0-r101.ebuild b/dev-lang/rust/rust-1.81.0-r101.ebuild new file mode 100644 index 000000000000..01d49bc018e9 --- /dev/null +++ b/dev-lang/rust/rust-1.81.0-r101.ebuild @@ -0,0 +1,745 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ + multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1" +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.79.0-revert-8c40426.patch + "${FILESDIR}/1.81.0-backport-bug937164.patch" + "${FILESDIR}/1.81.0-backport-llvm-pr101761.patch" + "${FILESDIR}/1.81.0-backport-llvm-pr101766.patch" +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.82.0-r100.ebuild b/dev-lang/rust/rust-1.82.0-r100.ebuild deleted file mode 100644 index 25fbe716b6a7..000000000000 --- a/dev-lang/rust/rust-1.82.0-r100.ebuild +++ /dev/null @@ -1,756 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ - multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.67.0-doc-wasm.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_prepare() { - # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. - if use x86; then - if ! use cpu_flags_x86_sse2; then - eapply "${FILESDIR}/1.82.0-i586-baseline.patch" - #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die - fi - fi - - default -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - docompress /usr/lib/${PN}/${PV}/share/man/ - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.82.0-r101.ebuild b/dev-lang/rust/rust-1.82.0-r101.ebuild deleted file mode 100644 index 1f70f958d492..000000000000 --- a/dev-lang/rust/rust-1.82.0-r101.ebuild +++ /dev/null @@ -1,757 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ - multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.74.1-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.82.0-dwarf-llvm-assertion.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_prepare() { - # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. - if use x86; then - if ! use cpu_flags_x86_sse2; then - eapply "${FILESDIR}/1.82.0-i586-baseline.patch" - #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die - fi - fi - - default -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - docompress /usr/lib/${PN}/${PV}/share/man/ - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" - if has_version -b ${old_rust}; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - local only_one_file=() - einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - case ${#matching_files[@]} in - 2) - einfo "Removing old .${ext}: ${f}" - rm "${f}" || die - ;; - 1) - # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, - # so we may have already installed over the old file. - # We'll warn about this just in case, but it's probably fine. - only_one_file+=( "${matching_files[0]}" ) - ;; - *) - die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - ;; - esac - done - if [[ ${#only_one_file} -gt 0 ]]; then - einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," - einfo "the following file(s) did not have a duplicate where one was expected:" - for f in "${only_one_file[@]}"; do - einfo " * ${f}" - done - einfo "" - einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." - einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." - fi - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - optfeature "Emacs support" "app-emacs/rust-mode" - optfeature "Vim support" "app-vim/rust-vim" -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.82.0-r102.ebuild b/dev-lang/rust/rust-1.82.0-r102.ebuild new file mode 100644 index 000000000000..4408b27683cb --- /dev/null +++ b/dev-lang/rust/rust-1.82.0-r102.ebuild @@ -0,0 +1,756 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ + multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.82.0-dwarf-llvm-assertion.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_prepare() { + # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. + if use x86; then + if ! use cpu_flags_x86_sse2; then + eapply "${FILESDIR}/1.82.0-i586-baseline.patch" + #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die + fi + fi + + default +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + docompress /usr/lib/${PN}/${PV}/share/man/ + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)" + if has_version -b ${old_rust}; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + local only_one_file=() + einfo "Tidying up libraries files from non-slotted \`${old_rust}\`." + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + case ${#matching_files[@]} in + 2) + einfo "Removing old .${ext}: ${f}" + rm "${f}" || die + ;; + 1) + # Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide, + # so we may have already installed over the old file. + # We'll warn about this just in case, but it's probably fine. + only_one_file+=( "${matching_files[0]}" ) + ;; + *) + die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + ;; + esac + done + if [[ ${#only_one_file} -gt 0 ]]; then + einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`," + einfo "the following file(s) did not have a duplicate where one was expected:" + for f in "${only_one_file[@]}"; do + einfo " * ${f}" + done + einfo "" + einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same." + einfo "However, if you encounter any issues please report them to the Gentoo Rust Team." + fi + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + optfeature "Emacs support" "app-emacs/rust-mode" + optfeature "Vim support" "app-vim/rust-vim" +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.83.0-r1.ebuild b/dev-lang/rust/rust-1.83.0-r1.ebuild deleted file mode 100644 index 2262915b0d62..000000000000 --- a/dev-lang/rust/rust-1.83.0-r1.ebuild +++ /dev/null @@ -1,739 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ - multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.83.0-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.83.0-dwarf-llvm-assertion.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_prepare() { - # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. - if use x86; then - if ! use cpu_flags_x86_sse2; then - eapply "${FILESDIR}/1.82.0-i586-baseline.patch" - #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die - fi - fi - - default -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - docompress /usr/lib/${PN}/${PV}/share/man/ - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - if [[ ${#matching_files[@]} -ne 2 ]]; then - die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - fi - einfo "Removing old .rlib file ${f}" - rm "${f}" || die - done - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.83.0-r2.ebuild b/dev-lang/rust/rust-1.83.0-r2.ebuild new file mode 100644 index 000000000000..d98a717dc572 --- /dev/null +++ b/dev-lang/rust/rust-1.83.0-r2.ebuild @@ -0,0 +1,738 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ + multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.83.0-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.83.0-dwarf-llvm-assertion.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_prepare() { + # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. + if use x86; then + if ! use cpu_flags_x86_sse2; then + eapply "${FILESDIR}/1.82.0-i586-baseline.patch" + #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die + fi + fi + + default +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + docompress /usr/lib/${PN}/${PV}/share/man/ + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_preinst() { + # 943308 and friends; basically --keep-going can forget to unmerge old rust + # but the soft blocker allows us to install conflicting files. + # This results in duplicated .{rlib,so} files which confuses rustc and results in + # the need for manual intervention. + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # we need to find all .{rlib,so} files in the old rust lib directory + # and store them in an array for later use + readarray -d '' old_rust_libs < <( + find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ + -type f \( -name '*.rlib' -o -name '*.so' \) -print0) + export old_rust_libs + if [[ ${#old_rust_libs[@]} -gt 0 ]]; then + einfo "Found old .rlib and .so files in the old rust lib directory" + else + die "Found no old .rlib and .so files but old rust version is installed. Bailing!" + fi + fi +} + +pkg_postinst() { + + if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then + # Be _extra_ careful here as we're removing files from the live filesystem + local f + for f in "${old_rust_libs[@]}"; do + [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" + local base_name="${f%-*}" + local ext="${f##*.}" + local matching_files=("${base_name}"-*.${ext}) + if [[ ${#matching_files[@]} -ne 2 ]]; then + die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" + fi + einfo "Removing old .rlib file ${f}" + rm "${f}" || die + done + fi + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.84.0-r1.ebuild b/dev-lang/rust/rust-1.84.0-r1.ebuild new file mode 100644 index 000000000000..10294bcfad06 --- /dev/null +++ b/dev-lang/rust/rust-1.84.0-r1.ebuild @@ -0,0 +1,704 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ + multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.83.0-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.67.0-doc-wasm.patch +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_prepare() { + # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. + if use x86; then + if ! use cpu_flags_x86_sse2; then + eapply "${FILESDIR}/1.82.0-i586-baseline.patch" + #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die + fi + fi + + default +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + # https://github.com/rust-lang/rust/issues/135358 (bug #947897) + profile = "dist" + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + docompress /usr/lib/${PN}/${PV}/share/man/ + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.84.0.ebuild b/dev-lang/rust/rust-1.84.0.ebuild deleted file mode 100644 index e40d98a96166..000000000000 --- a/dev-lang/rust/rust-1.84.0.ebuild +++ /dev/null @@ -1,741 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ - multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.83.0-cross-compile-libz.patch - #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh - "${FILESDIR}"/1.67.0-doc-wasm.patch -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_prepare() { - # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. - if use x86; then - if ! use cpu_flags_x86_sse2; then - eapply "${FILESDIR}/1.82.0-i586-baseline.patch" - #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die - fi - fi - - default -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - # https://github.com/rust-lang/rust/issues/135358 (bug #947897) - profile = "dist" - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - docompress /usr/lib/${PN}/${PV}/share/man/ - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - if [[ ${#matching_files[@]} -ne 2 ]]; then - die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - fi - einfo "Removing old .rlib file ${f}" - rm "${f}" || die - done - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/rust/rust-1.84.1-r1.ebuild b/dev-lang/rust/rust-1.84.1-r1.ebuild new file mode 100644 index 000000000000..8ae682155bcc --- /dev/null +++ b/dev-lang/rust/rust-1.84.1-r1.ebuild @@ -0,0 +1,704 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +PYTHON_COMPAT=( python3_{10..13} ) + +RUST_MAX_VER=${PV} +RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" + +inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ + multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) +" +S="${WORKDIR}/${MY_P}-src" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt +ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" +SLOT="${PV}" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +LLVM_DEPEND=() +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +for _x in "${ALL_LLVM_TARGETS[@]}"; do + LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) +done +LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) +LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=llvm-core/clang-3.5 + ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND[*]} + llvm-libunwind? ( llvm-runtimes/libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + dev-lang/rust-common + sys-apps/lsb-release + !dev-lang/rust:stable + !dev-lang/rust-bin:stable +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.83.0-cross-compile-libz.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.84.1-fix-cross.patch # already upstreamed +) + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +toml_usex() { + usex "${1}" true false +} + +pre_build_checks() { + local M=9216 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + rust_pkg_setup + + if use system-llvm; then + llvm-r1_pkg_setup + + local llvm_config="$(get_llvm_prefix)/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_prepare() { + # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. + if use x86; then + if ! use cpu_flags_x86_sse2; then + eapply "${FILESDIR}/1.82.0-i586-baseline.patch" + #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die + fi + fi + + default +} + +src_configure() { + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" + export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" + fi + + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + LLVM_EXPERIMENTAL_TARGETS=() + for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do + if use llvm_targets_${_x} ; then + LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) + fi + done + LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + # https://github.com/rust-lang/rust/issues/135358 (bug #947897) + profile = "dist" + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = true + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = true + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + musl-root = "$($(tc-getCC) -print-sysroot)/usr" + _EOF_ + fi + done + if use wasm; then + wasm_target="wasm32-unknown-unknown" + export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix)/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + docompress /usr/lib/${PN}/${PV}/share/man/ + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/lib/rust/libexec >> "${T}/provider-${P}" + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + + eselect rust update + + if has_version dev-debug/gdb || has_version llvm-core/lldb; then + elog "Rust installs helper scripts for calling GDB and LLDB," + elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + optfeature "emacs support for rust" app-emacs/rust-mode + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + optfeature "vim support for rust" app-vim/rust-vim + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.84.1.ebuild b/dev-lang/rust/rust-1.84.1.ebuild deleted file mode 100644 index 12a8d60e406a..000000000000 --- a/dev-lang/rust/rust-1.84.1.ebuild +++ /dev/null @@ -1,741 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LLVM_COMPAT=( 19 ) -PYTHON_COMPAT=( python3_{10..13} ) - -RUST_MAX_VER=${PV} -RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0" - -inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \ - multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig - -if [[ ${PV} = *beta* ]]; then - betaver=${PV//*beta} - BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" - MY_P="rustc-beta" - SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" -else - MY_P="rustc-${PV}" - SRC="${MY_P}-src.tar.xz" - KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" -fi - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI=" - https://static.rust-lang.org/dist/${SRC} - verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) -" -S="${WORKDIR}/${MY_P}-src" - -# keep in sync with llvm ebuild of the same version as bundled one. -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai - LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE - WebAssembly X86 XCore Xtensa ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} - -# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt -ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa ) - -LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" -SLOT="${PV}" - -IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" - -LLVM_DEPEND=() -# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation -for _x in "${ALL_LLVM_TARGETS[@]}"; do - LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" ) -done -LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" ) -LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" ) - -BDEPEND="${PYTHON_DEPS} - app-eselect/eselect-rust - || ( - >=sys-devel/gcc-4.7 - >=llvm-core/clang-3.5 - ) - !system-llvm? ( - >=dev-build/cmake-3.13.4 - app-alternatives/ninja - ) - test? ( dev-debug/gdb ) - verify-sig? ( sec-keys/openpgp-keys-rust ) -" - -DEPEND=" - >=app-arch/xz-utils-5.2 - net-misc/curl:=[http2,ssl] - sys-libs/zlib:= - dev-libs/openssl:0= - system-llvm? ( - ${LLVM_DEPEND[*]} - llvm-libunwind? ( llvm-runtimes/libunwind:= ) - ) - !system-llvm? ( - !llvm-libunwind? ( - elibc_musl? ( sys-libs/libunwind:= ) - ) - ) -" - -RDEPEND="${DEPEND} - app-eselect/eselect-rust - dev-lang/rust-common - sys-apps/lsb-release - !dev-lang/rust:stable - !dev-lang/rust-bin:stable -" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) - miri? ( nightly ) - parallel-compiler? ( nightly ) - rust-analyzer? ( rust-src ) - test? ( ${ALL_LLVM_TARGETS[*]} ) - wasm? ( llvm_targets_WebAssembly ) - x86? ( cpu_flags_x86_sse2 ) -" - -# we don't use cmake.eclass, but can get a warning -CMAKE_WARN_UNUSED_CLI=no - -QA_FLAGS_IGNORED=" - usr/lib/${PN}/${PV}/bin/.* - usr/lib/${PN}/${PV}/libexec/.* - usr/lib/${PN}/${PV}/lib/lib.*.so - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_SONAME=" - usr/lib/${PN}/${PV}/lib/lib.*.so.* - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so -" - -QA_PRESTRIPPED=" - usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp - usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o -" - -# An rmeta file is custom binary format that contains the metadata for the crate. -# rmeta files do not support linking, since they do not contain compiled object files. -# so we can safely silence the warning for this QA check. -QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" - -# causes double bootstrap -RESTRICT="test" - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc - -PATCHES=( - "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch - "${FILESDIR}"/1.83.0-cross-compile-libz.patch - "${FILESDIR}"/1.67.0-doc-wasm.patch - "${FILESDIR}"/1.84.1-fix-cross.patch # already upstreamed -) - -clear_vendor_checksums() { - sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die -} - -toml_usex() { - usex "${1}" true false -} - -pre_build_checks() { - local M=9216 - # multiply requirements by 1.3 if we are doing x86-multilib - if use amd64; then - M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) - fi - M=$(( $(usex clippy 128 0) + ${M} )) - M=$(( $(usex miri 128 0) + ${M} )) - M=$(( $(usex rustfmt 256 0) + ${M} )) - # add 2G if we compile llvm and 256M per llvm_target - if ! use system-llvm; then - M=$(( 2048 + ${M} )) - local ltarget - for ltarget in ${ALL_LLVM_TARGETS[@]}; do - M=$(( $(usex ${ltarget} 256 0) + ${M} )) - done - fi - M=$(( $(usex wasm 256 0) + ${M} )) - M=$(( $(usex debug 2 1) * ${M} )) - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - M=$(( 15 * ${M} / 10 )) - fi - eshopts_pop - M=$(( $(usex doc 256 0) + ${M} )) - CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} -} - -llvm_check_deps() { - has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" -} - -# Is LLVM being linked against libc++? -is_libcxx_linked() { - local code='#include -#if defined(_LIBCPP_VERSION) - HAVE_LIBCXX -#endif -' - local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 - [[ ${out} == *HAVE_LIBCXX* ]] -} - -pkg_pretend() { - pre_build_checks -} - -pkg_setup() { - pre_build_checks - python-any-r1_pkg_setup - - export LIBGIT2_NO_PKG_CONFIG=1 #749381 - if tc-is-cross-compiler; then - use system-llvm && die "USE=system-llvm not allowed when cross-compiling" - local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" - use "llvm_targets_${cross_llvm_target}" || \ - die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" - fi - - rust_pkg_setup - - if use system-llvm; then - llvm-r1_pkg_setup - - local llvm_config="$(get_llvm_prefix)/bin/llvm-config" - export LLVM_LINK_SHARED=1 - export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" - fi -} - -src_prepare() { - # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set. - if use x86; then - if ! use cpu_flags_x86_sse2; then - eapply "${FILESDIR}/1.82.0-i586-baseline.patch" - #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die - fi - fi - - default -} - -src_configure() { - if tc-is-cross-compiler; then - export PKG_CONFIG_ALLOW_CROSS=1 - export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig" - export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include" - export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)" - fi - - filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 - - local rust_target="" rust_targets="" arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" - done - if use wasm; then - rust_targets+=",\"wasm32-unknown-unknown\"" - if use system-llvm; then - # un-hardcode rust-lld linker for this target - # https://bugs.gentoo.org/715348 - sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die - fi - fi - rust_targets="${rust_targets#,}" - - # cargo and rustdoc are mandatory and should always be included - local tools='"cargo","rustdoc"' - use clippy && tools+=',"clippy"' - use miri && tools+=',"miri"' - use rustfmt && tools+=',"rustfmt"' - use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' - use rust-src && tools+=',"src"' - - local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")" - # in case of prefix it will be already prefixed, as --print sysroot returns full path - [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" - - rust_target="$(rust_abi)" - rust_build="$(rust_abi "${CBUILD}")" - rust_host="$(rust_abi "${CHOST}")" - - LLVM_EXPERIMENTAL_TARGETS=() - for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do - if use llvm_targets_${_x} ; then - LLVM_EXPERIMENTAL_TARGETS+=( ${_x} ) - fi - done - LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]} - - local cm_btype="$(usex debug DEBUG RELEASE)" - cat <<- _EOF_ > "${S}"/config.toml - # https://github.com/rust-lang/rust/issues/135358 (bug #947897) - profile = "dist" - [llvm] - download-ci-llvm = false - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - ninja = true - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}" - link-shared = $(toml_usex system-llvm) - $(if is_libcxx_linked; then - # https://bugs.gentoo.org/732632 - echo "use-libcxx = true" - echo "static-libstdcpp = false" - fi) - $(case "${rust_target}" in - i586-*-linux-*) - # https://github.com/rust-lang/rust/issues/93059 - echo 'cflags = "-fcf-protection=none"' - echo 'cxxflags = "-fcf-protection=none"' - echo 'ldflags = "-fcf-protection=none"' - ;; - *) - ;; - esac) - enable-warnings = false - [llvm.build-config] - CMAKE_VERBOSE_MAKEFILE = "ON" - $(if ! tc-is-cross-compiler; then - # When cross-compiling, LLVM is compiled twice, once for host and - # once for target. Unfortunately, this build configuration applies - # to both, which means any flags applicable to one target but not - # the other will break. Conditionally disable respecting user - # flags when cross-compiling. - echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" - echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" - echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" - echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" - fi) - [build] - build-stage = 2 - test-stage = 2 - build = "${rust_build}" - host = ["${rust_host}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - rustfmt = "${rust_stage0_root}/bin/rustfmt" - docs = $(toml_usex doc) - compiler-docs = false - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = true - tools = [${tools}] - verbose = 2 - sanitizers = false - profiler = true - cargo-native-static = false - [install] - prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" - sysconfdir = "etc" - docdir = "share/doc/rust" - bindir = "bin" - libdir = "lib" - mandir = "share/man" - [rust] - # https://github.com/rust-lang/rust/issues/54872 - codegen-units-std = 1 - optimize = true - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - debug-assertions-std = $(toml_usex debug) - debuginfo-level = $(usex debug 2 0) - debuginfo-level-rustc = $(usex debug 2 0) - debuginfo-level-std = $(usex debug 2 0) - debuginfo-level-tools = $(usex debug 2 0) - debuginfo-level-tests = 0 - backtrace = true - incremental = false - $(if ! tc-is-cross-compiler; then - echo "default-linker = \"$(tc-getCC)\"" - fi) - parallel-compiler = $(toml_usex parallel-compiler) - channel = "$(usex nightly nightly stable)" - description = "gentoo" - rpath = false - verbose-tests = true - optimize-tests = $(toml_usex !debug) - codegen-tests = true - dist-src = false - remap-debuginfo = true - lld = $(usex system-llvm false $(toml_usex wasm)) - # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it - # https://github.com/rust-lang/rust/issues/74976 - # https://github.com/rust-lang/rust/issues/76526 - deny-warnings = $(usex wasm $(usex doc false true) true) - backtrace-on-ice = true - jemalloc = false - # See https://github.com/rust-lang/rust/issues/121124 - lto = "$(usex lto thin off)" - [dist] - src-tarball = false - compression-formats = ["xz"] - compression-profile = "balanced" - _EOF_ - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - export CFLAGS_${rust_target//-/_}="${arch_cflags}" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${rust_target}] - ar = "$(tc-getAR)" - cc = "$(tc-getCC)" - cxx = "$(tc-getCXX)" - linker = "$(tc-getCC)" - ranlib = "$(tc-getRANLIB)" - llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; - # but we patch it and set to false here as well - if use elibc_musl; then - cat <<- _EOF_ >> "${S}"/config.toml - crt-static = false - musl-root = "$($(tc-getCC) -print-sysroot)/usr" - _EOF_ - fi - done - if use wasm; then - wasm_target="wasm32-unknown-unknown" - export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")" - cat <<- _EOF_ >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "$(usex system-llvm lld rust-lld)" - # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 - profiler = false - _EOF_ - fi - - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below - # experimental cross support - # discussion: https://bugs.gentoo.org/679878 - # TODO: c*flags, clang, system-llvm, cargo.eclass target support - # it would be much better if we could split out stdlib - # complilation to separate ebuild and abuse CATEGORY to - # just install to /usr/lib/rustlib/ - - # extra targets defined as a bash array - # spec format: :: - # best place would be /etc/portage/env/dev-lang/rust - # Example: - # RUST_CROSS_TARGETS=( - # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" - # ) - # no extra hand holding is done, no target transformations, all - # values are passed as-is with just basic checks, so it's up to user to supply correct values - # valid rust targets can be obtained with - # rustc --print target-list - # matching cross toolchain has to be installed - # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) - # only gcc toolchains installed with crossdev are checked for now. - - # BUG: we can't pass host flags to cross compiler, so just filter for now - # BUG: this should be more fine-grained. - filter-flags '-mcpu=*' '-march=*' '-mtune=*' - - local cross_target_spec - for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do - # extracts first element form :: - local cross_llvm_target="${cross_target_spec%%:*}" - # extracts toolchain triples, : - local cross_triples="${cross_target_spec#*:}" - # extracts first element after before : separator - local cross_rust_target="${cross_triples%%:*}" - # extracts last element after : separator - local cross_toolchain="${cross_triples##*:}" - use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" - command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" - - cat <<- _EOF_ >> "${S}"/config.toml - [target.${cross_rust_target}] - ar = "${cross_toolchain}-ar" - cc = "${cross_toolchain}-gcc" - cxx = "${cross_toolchain}-g++" - linker = "${cross_toolchain}-gcc" - ranlib = "${cross_toolchain}-ranlib" - _EOF_ - if use system-llvm; then - cat <<- _EOF_ >> "${S}"/config.toml - llvm-config = "$(get_llvm_prefix)/bin/llvm-config" - _EOF_ - fi - if [[ "${cross_toolchain}" == *-musl* ]]; then - cat <<- _EOF_ >> "${S}"/config.toml - musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" - _EOF_ - fi - - # append cross target to "normal" target list - # example 'target = ["powerpc64le-unknown-linux-gnu"]' - # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' - - rust_targets="${rust_targets},\"${cross_rust_target}\"" - sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die - - ewarn - ewarn "Enabled ${cross_rust_target} rust target" - ewarn "Using ${cross_toolchain} cross toolchain" - ewarn - if ! has_version -b 'sys-devel/binutils[multitarget]' ; then - ewarn "'sys-devel/binutils[multitarget]' is not installed" - ewarn "'strip' will be unable to strip cross libraries" - ewarn "cross targets will be installed with full debug information" - ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" - ewarn - ewarn "Alternatively llvm-strip can be used, it supports stripping any target" - ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" - ewarn - fi - done - fi # I_KNOW_WHAT_I_AM_DOING_CROSS - - einfo "Rust configured with the following flags:" - echo - echo RUSTFLAGS="\"${RUSTFLAGS}\"" - echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" - echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" - echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" - env | grep "CARGO_TARGET_.*_RUSTFLAGS=" - env | grep "CFLAGS_.*" - echo - einfo "config.toml contents:" - cat "${S}"/config.toml || die - echo -} - -src_compile() { - RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die -} - -src_test() { - # https://rustc-dev-guide.rust-lang.org/tests/intro.html - - # those are basic and codegen tests. - local tests=( - codegen - codegen-units - compile-fail - incremental - mir-opt - pretty - run-make - ) - - # fails if llvm is not built with ALL targets. - # and known to fail with system llvm sometimes. - use system-llvm || tests+=( assembly ) - - # fragile/expensive/less important tests - # or tests that require extra builds - # TODO: instead of skipping, just make some nonfatal. - if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then - tests+=( - rustdoc - rustdoc-js - rustdoc-js-std - rustdoc-ui - run-make-fulldeps - ui - ui-fulldeps - ) - fi - - local i failed=() - einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" - for i in "${tests[@]}"; do - local t="src/test/${i}" - einfo "rust_src_test: running ${t}" - if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ - -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" - then - failed+=( "${t}" ) - eerror "rust_src_test: ${t} failed" - fi - done - - if [[ ${#failed[@]} -ne 0 ]]; then - eerror "rust_src_test: failure summary: ${failed[@]}" - die "aborting due to test failures" - fi -} - -src_install() { - DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - - docompress /usr/lib/${PN}/${PV}/share/man/ - - # bug #689562, #689160 - rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die - rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die - - local symlinks=( - cargo - rustc - rustdoc - rust-gdb - rust-gdbgui - rust-lldb - ) - - use clippy && symlinks+=( clippy-driver cargo-clippy ) - use miri && symlinks+=( miri cargo-miri ) - use rustfmt && symlinks+=( rustfmt cargo-fmt ) - use rust-analyzer && symlinks+=( rust-analyzer ) - - einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" - local i - for i in "${symlinks[@]}"; do - # we need realpath on /usr/bin/* symlink return version-appended binary path. - # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- - # need to fix eselect-rust to remove this hack. - local ver_i="${i}-${PV}" - if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then - einfo "Installing ${i} symlink" - ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die - else - ewarn "${i} symlink requested, but source file not found" - ewarn "please report this" - fi - dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" - done - - # symlinks to switch components to active rust in eselect - dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" - use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" - dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" - dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" - dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" - - newenvd - "50${P}" <<-_EOF_ - LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}" - MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}" - _EOF_ - - rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die - rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die - - # note: eselect-rust adds EROOT to all paths below - cat <<-_EOF_ > "${T}/provider-${P}" - /usr/bin/cargo - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-gdbgui - /usr/bin/rust-lldb - /usr/lib/rustlib - /usr/lib/rust/lib - /usr/lib/rust/man - /usr/share/doc/rust - _EOF_ - - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use miri; then - echo /usr/bin/miri >> "${T}/provider-${P}" - echo /usr/bin/cargo-miri >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - if use rust-analyzer; then - echo /usr/lib/rust/libexec >> "${T}/provider-${P}" - echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" - fi - - insinto /etc/env.d/rust - doins "${T}/provider-${P}" - - if use dist; then - "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die - insinto "/usr/lib/${PN}/${PV}/dist" - doins -r "${S}/build/dist/." - fi -} - -pkg_preinst() { - # 943308 and friends; basically --keep-going can forget to unmerge old rust - # but the soft blocker allows us to install conflicting files. - # This results in duplicated .{rlib,so} files which confuses rustc and results in - # the need for manual intervention. - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # we need to find all .{rlib,so} files in the old rust lib directory - # and store them in an array for later use - readarray -d '' old_rust_libs < <( - find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \ - -type f \( -name '*.rlib' -o -name '*.so' \) -print0) - export old_rust_libs - if [[ ${#old_rust_libs[@]} -gt 0 ]]; then - einfo "Found old .rlib and .so files in the old rust lib directory" - else - die "Found no old .rlib and .so files but old rust version is installed. Bailing!" - fi - fi -} - -pkg_postinst() { - - if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then - # Be _extra_ careful here as we're removing files from the live filesystem - local f - for f in "${old_rust_libs[@]}"; do - [[ -f ${f} ]] || die "old_rust_libs array contains non-existent file" - local base_name="${f%-*}" - local ext="${f##*.}" - local matching_files=("${base_name}"-*.${ext}) - if [[ ${#matching_files[@]} -ne 2 ]]; then - die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}" - fi - einfo "Removing old .rlib file ${f}" - rm "${f}" || die - done - fi - - eselect rust update - - if has_version dev-debug/gdb || has_version llvm-core/lldb; then - elog "Rust installs helper scripts for calling GDB and LLDB," - elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}." - fi - - if has_version app-editors/emacs; then - optfeature "emacs support for rust" app-emacs/rust-mode - fi - - if has_version app-editors/gvim || has_version app-editors/vim; then - optfeature "vim support for rust" app-vim/rust-vim - fi -} - -pkg_postrm() { - eselect rust cleanup -} diff --git a/dev-lang/spark/Manifest b/dev-lang/spark/Manifest index ea5fdf6c69dc..06ab0d1fdd19 100644 --- a/dev-lang/spark/Manifest +++ b/dev-lang/spark/Manifest @@ -1,5 +1,9 @@ AUX spark-2021-gentoo.patch 860 BLAKE2B 6eb65c19b604a8d9370bf4da87899c1b8471c52763c17b97322856ddb701e46f6d5c5de03df204c287c728413e5ab8de2f320c75d9c3acb049abad62360037da SHA512 ac636251eb45868430e46d0f5566ab655dc5a223bd44fa4b76bd75c679779cc037bf6ef376f9f4ec22a90b1347bf302d382e1d540b448acb6308c1b3e33036ec +AUX spark-2024.01.11-gentoo.patch 653 BLAKE2B 1e3978ccbffcb42bb07b527be18fda3e4f03781987ad92c9a4c03359027f85da817729a741d2747d31d4f87ff07ab2a49bc317387b790561d192c85bc0a28103 SHA512 cd9fbe6aa8432674765dfaaad532b6488943060eb1350a2278145d48461f5773e80385c349b76414c7b0c78c065adb76fa0126db063621d9fcd6a3c0d3f474dc +DIST gcc-14.2.0.tar.xz 92306460 BLAKE2B 87baf2a06dfa75d8fb6cd62c747ef1f57d3b9bbbe33a360d9ed3de4b4dbeaa8d920504c67e409bd9863414202c14fd854b46108e984418171205119216d03d3b SHA512 932bdef0cda94bacedf452ab17f103c0cb511ff2cec55e9112fc0328cbf1d803b42595728ea7b200e0a057c03e85626f937012e49a7515bc5dd256b2bf4bc396 DIST gnat-2021-20210519-19A70-src.tar.gz 8765762 BLAKE2B ef48f54c6109566e37bfa5dee9262305d0529b3dfd333ee28bc4e66f4709a0673f673d742bc04deb15dc145404f7618d350dbdf3f2a7ab37c861e57d011946fa SHA512 3cb79be024fdd9b738d99ffc8e224d32bb382b5da2d02b97b2061a5ea58456f33d4564c92e224af2713ce15fd5481edd715e5b9a52abc74fdc142f27e103c201 DIST spark-2021-2021-20210519-19A1A-src.tar.gz 11361491 BLAKE2B 67f8d27ae68ef4929aafaf96c470394e093883619c5c778e804f1ff62c297d5a3f628e04e987fb06741cb824710599928a7ec3b94fa6d7af029cff35be0898c3 SHA512 b595516892f6054d3c856c30c4296be9cd61adca3ea2cffe3c9060fbab249d36ce1b8fff6f80e1e8173ef6e232dd9c2da8a581ae9964845120c03d09896b635c +DIST spark-2024.01.11.tar.gz 12086894 BLAKE2B 384aff45c146d1deff9c0121e2fd76020dcaefb8c5653c24db990ce470824eb772b40125f2f92596e564e879ee8c57660d613dafa485e2b8dc23cbe0ff47fdf0 SHA512 617269963879ce46066125332b845653eda9b6196213ef5ed51e204feee8dbeeee31422d3fee1c470ab4ea3528e4a3f4e88d76a64a67f20d42bfbd4c6723e92c EBUILD spark-2021.ebuild 2277 BLAKE2B b61dff1b857ab940f6700f94c882e5a7a35096205dad1e0fcd97527e365cee08a84b40cd18d9360ac5fe4487785a6e65bc6d0703e769f05a7d4001630e4fc2bb SHA512 f4885364fa1a4ec3fccb27aaa1426426c386f5ca464987bf6193ae4a67b51ba0ec6696acf4a666a3a362b0c9b71c544d8f4c8c252320601fa18492bc9f40d54d -MISC metadata.xml 671 BLAKE2B b4bbfa26668fcec46cc224b60c1c62ac09f5e11314a32ea1288614b12029f989aa234305f0dbbb66f63b15a809d3f17261ef1155c0b72ea87bc29e3ccdf2c56f SHA512 e804dcad5593c98c9e4d5624be0e6dfa78545a48e46510b5d76c21da59dbe2c632495d96244dbaca91105a3b09efcafc759f1866311a365744887733c1a60670 +EBUILD spark-2024.01.11-r1.ebuild 2687 BLAKE2B 2fb523b575101e956eaa1595e0e10491e13653d9da18222376725357588c74dfcb107055f1a8a2fa1a219ec2a36b4c64966625cd3d0584bb41daae0cce4e094b SHA512 7eaccf6866f871cf8632a5b1d5181f823e49fef8d43d279379ccf30ebaf8084878c693444f177bff3dd5b3c7481dd2b94fcd9c90ce43df55bc400461acf9799d +MISC metadata.xml 753 BLAKE2B 94485db836f7e8516d9f6576934e40e130ded0e7332c5c1c309414bf30a751ca49d4715fabebd1a58b1963c22f2837718088251f06ee9a718f1d3b2c7a62b753 SHA512 67de3fd8a42e9f1ec1a1f2139bb455a3012a36ec93093e8ebebd8cfb7926eaa4828a205f7513753b395eab8fe38aeb26b0432b70761ae8cc39c37564ed4701b0 diff --git a/dev-lang/spark/files/spark-2024.01.11-gentoo.patch b/dev-lang/spark/files/spark-2024.01.11-gentoo.patch new file mode 100644 index 000000000000..156d5cbba044 --- /dev/null +++ b/dev-lang/spark/files/spark-2024.01.11-gentoo.patch @@ -0,0 +1,21 @@ +--- a/gnat2why/gnat2why_c.gpr 2017-10-04 21:41:41.613376056 +0200 ++++ b/gnat2why/gnat2why_c.gpr 2017-10-04 21:42:30.582572536 +0200 +@@ -1,4 +1,7 @@ + project Gnat2Why_C is + for Languages use ("C"); + for Object_Dir use "obj"; ++ package Compiler is ++ for Driver ("C") use External ("CC", "gcc"); ++ end Compiler; + end Gnat2Why_C; +--- a/src/why/xgen/Makefile 2025-02-09 13:48:38.217846207 +0100 ++++ b/src/why/xgen/Makefile 2025-02-09 13:49:36.594134360 +0100 +@@ -31,7 +31,7 @@ + why-atree-to_json.adb + + all: +- gprbuild -j0 -p -Phelpers xtree ++ gprbuild -v -p -Phelpers xtree -XLIBRARY_TYPE=relocatable + ./xtree + cp $(GENERATED_FILES) ../ + diff --git a/dev-lang/spark/metadata.xml b/dev-lang/spark/metadata.xml index 3e2253467fac..e5a4d2fa224d 100644 --- a/dev-lang/spark/metadata.xml +++ b/dev-lang/spark/metadata.xml @@ -12,4 +12,7 @@ application domains where high-reliability must be assured, for example where safety and security are key requirements. + + AdaCore/spark2014 + diff --git a/dev-lang/spark/spark-2024.01.11-r1.ebuild b/dev-lang/spark/spark-2024.01.11-r1.ebuild new file mode 100644 index 000000000000..fc35d9cd7b74 --- /dev/null +++ b/dev-lang/spark/spark-2024.01.11-r1.ebuild @@ -0,0 +1,105 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ADA_COMPAT=( gcc_14 ) +PYTHON_COMPAT=( python3_{10..13} pypy3 ) +inherit ada python-any-r1 multiprocessing + +commitId=ce5fad038790d5dc18f9b5345dc604f1ccf45b06 +why3Id=fb4ca6cd8c7d888d3e8d281e6de87c66ec20f084 + +DESCRIPTION="Software development for high-reliability applications" +HOMEPAGE="http://libre.adacore.com" +SRC_URI="https://github.com/AdaCore/spark2014/archive/${commitId}.tar.gz + -> ${P}.tar.gz + http://mirror.koddos.net/gcc/releases/gcc-14.2.0/gcc-14.2.0.tar.xz" + +S="${WORKDIR}"/spark2014-${commitId} + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64" + +IUSE="doc" + +RDEPEND=" + dev-ada/gnatcoll-core[${ADA_USEDEP},shared] + ~dev-ada/gpr-24.2.0[${ADA_USEDEP}] + sci-mathematics/alt-ergo + sci-mathematics/why3-for-spark" +DEPEND="${RDEPEND} + dev-ada/gprbuild[${ADA_USEDEP}]" +BDEPEND="doc? ( + $(python_gen_any_dep ' + dev-python/sphinx[${PYTHON_USEDEP}] + dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}] + ') +)" + +REQUIRED_USE="${ADA_REQUIRED_USE}" + +PATCHES=( "${FILESDIR}"/${P}-gentoo.patch ) + +python_check_deps() { + python_has_version "dev-python/sphinx[${PYTHON_USEDEP}]" && + python_has_version "dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]" +} + +pkg_setup() { + use doc && python-any-r1_pkg_setup + ada_pkg_setup +} + +src_prepare() { + ln -s "${WORKDIR}"/gcc-14.2.0/gcc/ada gnat2why/gnat_src || die + default +} + +src_compile() { + emake -j1 -C gnat2why GPRARGS="-XLIBRARY_TYPE=relocatable -v" \ + PROCS=$(makeopts_jobs) + gprbuild -j$(makeopts_jobs) -p -XLIBRARY_TYPE=relocatable -v \ + -P gnatprove.gpr \ + -largs ${LDFLAGS} -cargs ${ADAFLAGS} || die + if use doc; then + emake -C docs/lrm html + fi +} + +src_install() { + + dodir /usr/bin + dodir /usr/include/spark + dodir /usr/lib/spark + dodir /usr/share/spark/explain_codes + dodir /usr/share/spark/theories + dodir /usr/share/spark/runtimes + + gcc -c -gnats spark2014vsn.ads -gnatet="${D}"/usr/bin/target.atp + insinto /usr/share/spark + doins share/spark/help.txt + doins -r share/spark/config + doins -r share/spark/explain_codes + insinto /usr/share/spark/theories + doins share/spark/theories/*why + doins share/spark/theories/*mlw + insinto /usr/share/spark/runtimes + doins share/spark/runtimes/README + insinto /usr/include/spark + doins src/spark/*.ad? + # Create the fake prover scripts to help extract benchmarks. + insinto /usr/libexec/spark/bin + doins benchmark_script/fake_* + + dobin install/bin/gnatprove + exeinto /usr/libexec/spark/bin + doexe install/bin/gnat2why + doexe install/bin/spark_memcached_wrapper + doexe install/bin/spark_report + doexe install/bin/spark_semaphore_wrapper + + use doc && HTML_DOCS=( docs/lrm/_build/html/* ) + einstalldocs +} diff --git a/dev-lang/spidermonkey/Manifest b/dev-lang/spidermonkey/Manifest index 9c620eda2afb..90abde39c1c4 100644 --- a/dev-lang/spidermonkey/Manifest +++ b/dev-lang/spidermonkey/Manifest @@ -6,8 +6,8 @@ DIST firefox-102esr-patches-13.tar.xz 22212 BLAKE2B 02e9edd071a99abbac02faa11ffc DIST firefox-115.16.0esr.source.tar.xz 515133700 BLAKE2B 9501b617b346d56f6de975f88974be6fdc3d4a901b2a1b952b6bbf6cc46384084260078d23c52bedff83a65bec4ea5ec78c3bcaac86c78d0b44e796317534840 SHA512 b6f93ec3d6acac5df177253c65b833c017e65ed6e78e96ff029098443928d291f6f67164aedb83d80aa28ee9dee305086597798238d3330e35183030e53e3550 DIST firefox-115esr-patches-13.tar.xz 51360 BLAKE2B a048bfadba989ebbd4c6e3df97d303d6853844e66ed92f5f5f322acf18866218b91d52dbbece63827de283eef855c932d67e329c8d93200aa83f11268a5d1b2f SHA512 186ec72323e621362dcef1bc67c476716aff97dfad701faa9220a7302e798d3cb4ed90d5ea59e3e92f016be29875bb5219787635db99a8848b7c76e4e2e09e90 DIST firefox-128.4.0esr.source.tar.xz 558619512 BLAKE2B 1f0528c8806bb034af623f2022740bb5056ea11817b9cb7154a60b87f04051ba5ae06b0daf55e6b03b7531c369deb871d3d3579a86f3ca19f3ab71ccb45243f9 SHA512 e720b1f993926d73f5a5727648f753176ac2fd093fb0b71393946bbc5919ce5fc7b88b82960bd1aa427b5663c7f659828dc6702485fc0c1e7a6961571c67faa3 -DIST firefox-128.5.0esr.source.tar.xz 567200548 BLAKE2B b524796854d4f622e90c219e4e302e5665f3f1e3ffb7935ba58244903dbcf1c2b9a13731e9af5507ffc25dda621d4ea13650aae842ed0317843182da55d1d652 SHA512 ff20f18f92c5e9cd1d9eaf7c38cec61bcab2dca8dd2817519b712bc1f760b5c6e290212acf3289152764e5130e01626950b7ecd9327b2c587b24a246591afd67 DIST firefox-128.6.0esr.source.tar.xz 563259116 BLAKE2B 401c54e4c3e81dd1d4aa9fed072e5266a7549d9ac05e03f9755d3da192c9c46d2bc636e8bf0a7fad2269074615789ab274b897c8bd75fd524f4a5f138c3aa1d5 SHA512 49bce966e062766861712bd65cca46a438b339fe31598f69e4fe64da78ef6f8b4581c1d502341ef1c032aafaab2f4f88e69cb93a0b845ba7173fec277ae695b5 +DIST firefox-128.7.0esr.source.tar.xz 569300208 BLAKE2B 08bf5b571707b7a5acf1ebde12e370be5999e3ac8cac2e952fae635faa16e07ba4d9d0a00b304ba43b5a327c825cae04c1ccf8434456e27d4c396e5b09a4b6a7 SHA512 26f9661b395b85a44b42bd72ef1ad976c614216c68f6c2dd834d0ac8b84b9c9f398b8ac550a47396995d96e6bb5fa9a50064d7f2f526bddd45aed5039ef131b8 DIST firefox-128esr-patches-07.tar.xz 18856 BLAKE2B 44d0ddf11518c7eef0a96de4f475a6ae1535e43e5bf89b8f61dc95330f28d6a053d08e6a183cf71432107256c83cd6ee6f742b235ca82babe4dd83698bf80d07 SHA512 60b4f18f5d91fc25f86cceccd561b55f167299908fbf2f9d7d69a8ce299c643f0b538d613d4348e42dd17c3812e4fa315e15004614af1f40fbe2adda417a1a81 DIST firefox-128esr-patches-08.tar.xz 17564 BLAKE2B d904b74fdae2e76866ded11de5377a7b6883d35996b358ae3419ffb7da53b04b2c7d4bb10d48998a8318a84e8221de39955289cb33a8f278c131b4af2006be62 SHA512 344a2d04dec679cd8ed714dcecc9dd5b56696803cee9267e7c0c45c439d78728e7eae674bb5f0a64f2e5802dc59c1ec25f1703885024d88bda8a02e2b3e0d69e DIST spidermonkey-102-patches-05j.tar.xz 4596 BLAKE2B 215b770bbdf17973d7b3fd1df6cee9647459d2b02b0be5bdb289d457e5dbdb06ceac7a3082fc2f5836e991a4ac4486d73330b0276a466b5c528dab226a27829c SHA512 d2b8e32dac87d60a00fd93479dc34d8adab4feec24a38591cebeb4cf271aa2fd964f4dc26e67ebfb127a47bc8f684d50b32b2cff18ed5286701a04a289058185 @@ -16,6 +16,6 @@ DIST spidermonkey-128-patches-02.tar.xz 3916 BLAKE2B b6640860ea091b22c61b2a78da5 EBUILD spidermonkey-102.15.0-r1.ebuild 15100 BLAKE2B 2f7d493ef27869b28de30fea5f47db8f3bfefbac0f3854458deae57ce695be929d071662f2a6a612e8b5d8187fc65c0c9d6b64609623a58c3c633f378b7c2a03 SHA512 0d4367ac4e15ef8852e21295ec0dbb58dbe2e4c7674b322ad214ff01baec2982e0009058e25157128d32dc780efc5763e24185d5584f2f580570bab4960d4bd1 EBUILD spidermonkey-115.16.0-r1.ebuild 13395 BLAKE2B b6c7c5a512fe9e46374868e53b86c39b7271ec435ed20a892c7864d4cb308ee790dc530af7b234ef78bab5f7393ddf0e7857b38df6fe1f3be773444d0b49f78e SHA512 6890cadb3b96f6557f0e3a51d6cbf099a7118c0e4927b0d8796c89d987463a840cc67cefe77248cbda529e252e4e15771d999c30f21336ea946d60eb8843cd7c EBUILD spidermonkey-128.4.0-r1.ebuild 13747 BLAKE2B 91cec6c9062aa43824a389e2020cfac6dc24be106b923cdb036d4b9c14b0b71b2c2e07a298c43ecc77fbb9b89e7cad61c7eec1a0f21dfe6e79c4ea078a36eaea SHA512 5889eb2bb3b14f4d72b8bf50469b6b7fda0b60baa1fd9b27e36a421552e94549436c3afbe7d46d0246ea46888c56a8791c2c0050fc51e5a6845adfe8290d1f85 -EBUILD spidermonkey-128.5.0.ebuild 13758 BLAKE2B 8e8313dac06e0c355fefbbc23a842e755d057b9902411813d42e56917cfd1396916005bc2371c3410b14b681ce3012abcba7ecda6536ac46e3f2a2127fe369ec SHA512 a5a04bb01deecce3dcfefa3c78f98b2faf481bb63820a21652d6c7c14c3f0822065a4e07211aefb3feea81eeb5a60e43ede28f905d1bf5ef121ece56fd10acfb EBUILD spidermonkey-128.6.0.ebuild 12829 BLAKE2B 2c603b698773db903c6d56ea22d6d8fd774d0645d2291da6d70a7a360703c5263466883a2c2d10d46399d6681a07a28b673146c01c2b7ab283b5a4133ce63def SHA512 ce7760113b7ca8c2b12c4a481e831dc89d85abfcfad1a0becf56f0f0b53a72323141d50fd4b98044baccd9e366dd9619a10ad537513f7a62fe4a79daf9c68d8d +EBUILD spidermonkey-128.7.0.ebuild 12829 BLAKE2B 2c603b698773db903c6d56ea22d6d8fd774d0645d2291da6d70a7a360703c5263466883a2c2d10d46399d6681a07a28b673146c01c2b7ab283b5a4133ce63def SHA512 ce7760113b7ca8c2b12c4a481e831dc89d85abfcfad1a0becf56f0f0b53a72323141d50fd4b98044baccd9e366dd9619a10ad537513f7a62fe4a79daf9c68d8d MISC metadata.xml 513 BLAKE2B 58ffd474492f03c16bda95e48511fb6281e03067d2ad77e994f8117345ecece5da9591dccedafe75b037d98e06851a3759caa4b993adc2910dbb76e1c01a7fa3 SHA512 1ee02bff37e2dabbd72b7f719463b12299270c7960b4cf5a92afab17c954c50e6acb826d4a91db4954fb4a7b0f8669988f2cdb5be991df90e3a605c6b35fdbfb diff --git a/dev-lang/spidermonkey/spidermonkey-128.5.0.ebuild b/dev-lang/spidermonkey/spidermonkey-128.5.0.ebuild deleted file mode 100644 index 16fc99683ae2..000000000000 --- a/dev-lang/spidermonkey/spidermonkey-128.5.0.ebuild +++ /dev/null @@ -1,478 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -FIREFOX_PATCHSET="firefox-128esr-patches-07.tar.xz" -SPIDERMONKEY_PATCHSET="spidermonkey-128-patches-02.tar.xz" - -LLVM_COMPAT=( 17 18 19 ) - -PYTHON_COMPAT=( python3_{10..12} ) -PYTHON_REQ_USE="ncurses,ssl,xml(+)" - -WANT_AUTOCONF="2.1" - -inherit autotools check-reqs flag-o-matic llvm-r1 multiprocessing python-any-r1 rust toolchain-funcs - -MY_PN="mozjs" -MY_PV="${PV/_pre*}" - -MY_MAJOR=$(ver_cut 1) - -MOZ_ESR=yes - -MOZ_PV=${PV} -MOZ_PV_SUFFIX= -if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then - MOZ_PV_SUFFIX=${BASH_REMATCH[1]} - - # Convert the ebuild version to the upstream Mozilla version - MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI - MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI - MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI -fi - -if [[ -n ${MOZ_ESR} ]] ; then - # ESR releases have slightly different version numbers - MOZ_PV="${MOZ_PV}esr" -fi - -MOZ_PN="firefox" -MOZ_P="${MOZ_PN}-${MOZ_PV}" -MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" -MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" - -MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" - -if [[ ${PV} == *_rc* ]] ; then - MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" -fi - -PATCH_URIS=( - https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET} - https://dev.gentoo.org/~juippis/mozilla/patchsets/${SPIDERMONKEY_PATCHSET} -) - -DESCRIPTION="Mozilla's JavaScript engine written in C and C++" -HOMEPAGE="https://spidermonkey.dev https://firefox-source-docs.mozilla.org/js/index.html" -SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz - ${PATCH_URIS[@]}" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86" - -LICENSE="MPL-2.0" -SLOT="$(ver_cut 1)" -IUSE="clang cpu_flags_arm_neon debug +jit lto test" - -#RESTRICT="test" -RESTRICT="!test? ( test )" - -BDEPEND="${PYTHON_DEPS} - $(llvm_gen_dep ' - clang? ( - llvm-core/clang:${LLVM_SLOT} - llvm-core/lld:${LLVM_SLOT} - llvm-core/llvm:${LLVM_SLOT} - ) - ') - >=dev-util/cbindgen-0.26.0 - virtual/pkgconfig - test? ( - $(python_gen_any_dep 'dev-python/six[${PYTHON_USEDEP}]') - )" -DEPEND=">=dev-libs/icu-73.1:= - dev-libs/nspr - sys-libs/readline:0= - sys-libs/zlib" -RDEPEND="${DEPEND}" - -S="${WORKDIR}/firefox-${PV%_*}" - -llvm_check_deps() { - if use clang ; then - if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then - einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if ! has_version -b "llvm-core/llvm:${LLVM_SLOT}" ; then - einfo "llvm-core/llvm:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if ! tc-ld-is-mold ; then - if ! has_version -b "llvm-core/lld:${LLVM_SLOT}" ; then - einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - fi - fi - - einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 -} - -mozconfig_add_options_ac() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 2 ]] ; then - die "${FUNCNAME} requires at least two arguments" - fi - - local reason=${1} - shift - - local option - for option in ${@} ; do - echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG} - done -} - -mozconfig_add_options_mk() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 2 ]] ; then - die "${FUNCNAME} requires at least two arguments" - fi - - local reason=${1} - shift - - local option - for option in ${@} ; do - echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG} - done -} - -mozconfig_use_enable() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 1 ]] ; then - die "${FUNCNAME} requires at least one arguments" - fi - - local flag=$(use_enable "${@}") - mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" -} - -python_check_deps() { - if use test ; then - python_has_version "dev-python/six[${PYTHON_USEDEP}]" - fi -} - -pkg_pretend() { - if use test ; then - CHECKREQS_DISK_BUILD="4400M" - else - CHECKREQS_DISK_BUILD="4300M" - fi - - check-reqs_pkg_pretend -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use test ; then - CHECKREQS_DISK_BUILD="4400M" - else - CHECKREQS_DISK_BUILD="4300M" - fi - - check-reqs_pkg_setup - - llvm-r1_pkg_setup - rust_pkg_setup - - if use clang && use lto && tc-ld-is-lld ; then - local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') - [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") - [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" - - local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') - [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") - [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" - - if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then - eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." - eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" - eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" - eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" - eerror " - Build ${CATEGORY}/${PN} without USE=lto" - eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " - eerror " llvm/clang/lld/rust chain depending on your @world updates)" - die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" - fi - fi - - python-any-r1_pkg_setup - - # Build system is using /proc/self/oom_score_adj, bug #604394 - addpredict /proc/self/oom_score_adj - - if ! mountpoint -q /dev/shm ; then - # If /dev/shm is not available, configure is known to fail with - # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py - ewarn "/dev/shm is not mounted -- expect build failures!" - fi - - # Ensure we use C locale when building, bug #746215 - export LC_ALL=C - fi -} - -src_prepare() { - if use lto ; then - rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die - fi - - # Workaround for bgo #915651,915651,929013 on musl - if use elibc_glibc ; then - rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die - fi - - eapply "${WORKDIR}"/firefox-patches - eapply "${WORKDIR}"/spidermonkey-patches - - default - - # Make cargo respect MAKEOPTS - export CARGO_BUILD_JOBS="$(makeopts_jobs)" - - # Workaround for bgo #915651,915651,929013 on musl - if ! use elibc_glibc ; then - if use amd64 ; then - export RUST_TARGET="x86_64-unknown-linux-musl" - elif use x86 ; then - export RUST_TARGET="i686-unknown-linux-musl" - elif use arm64 ; then - export RUST_TARGET="aarch64-unknown-linux-musl" - elif use ppc64 ; then - export RUST_TARGET="powerpc64le-unknown-linux-musl" - else - die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651" - fi - fi - - # sed-in toolchain prefix - sed -i \ - -e "s/objdump/${CHOST}-objdump/" \ - python/mozbuild/mozbuild/configure/check_debug_ranges.py || - die "sed failed to set toolchain prefix" - - einfo "Removing pre-built binaries ..." - find third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die - - # Create build dir - BUILD_DIR="${WORKDIR}/${PN}_build" - mkdir -p "${BUILD_DIR}" || die -} - -src_configure() { - # Show flags set at the beginning - einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" - einfo "Current CFLAGS: ${CFLAGS}" - einfo "Current CXXFLAGS: ${CXXFLAGS}" - einfo "Current LDFLAGS: ${LDFLAGS}" - einfo "Current RUSTFLAGS: ${RUSTFLAGS}" - - local have_switched_compiler= - if use clang ; then - # Force clang - einfo "Enforcing the use of clang due to USE=clang ..." - - local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }') - [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}") - [[ -z ${version_clang} ]] && die "Failed to read clang version!" - - if tc-is-gcc; then - have_switched_compiler=yes - fi - - AR=llvm-ar - CC=${CHOST}-clang-${version_clang} - CXX=${CHOST}-clang++-${version_clang} - NM=llvm-nm - RANLIB=llvm-ranlib - READELF=llvm-readelf - OBJDUMP=llvm-objdump - - elif ! use clang && ! tc-is-gcc ; then - # Force gcc - have_switched_compiler=yes - einfo "Enforcing the use of gcc due to USE=-clang ..." - AR=gcc-ar - CC=${CHOST}-gcc - CXX=${CHOST}-g++ - NM=gcc-nm - RANLIB=gcc-ranlib - READELF=readelf - OBJDUMP=objdump - fi - - if [[ -n "${have_switched_compiler}" ]] ; then - # Because we switched active compiler we have to ensure - # that no unsupported flags are set - strip-unsupported-flags - fi - - # Ensure we use correct toolchain, - # AS is used in a non-standard way by upstream, #bmo1654031 - export HOST_CC="$(tc-getBUILD_CC)" - export HOST_CXX="$(tc-getBUILD_CXX)" - export AS="$(tc-getCC) -c" - - tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG - - # Pass the correct toolchain paths through cbindgen - if tc-is-cross-compiler ; then - export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}" - fi - - # ../python/mach/mach/mixin/process.py fails to detect SHELL - export SHELL="${EPREFIX}/bin/bash" - - # Set state path - export MOZBUILD_STATE_PATH="${BUILD_DIR}" - - # Set MOZCONFIG - export MOZCONFIG="${S}/.mozconfig" - - # Initialize MOZCONFIG - mozconfig_add_options_ac '' --enable-project=js - - mozconfig_add_options_ac 'Gentoo default' \ - --host="${CBUILD:-${CHOST}}" \ - --target="${CHOST}" \ - --disable-ctype \ - --disable-jemalloc \ - --disable-smoosh \ - --disable-strip \ - --enable-readline \ - --enable-release \ - --enable-shared-js \ - --libdir="${EPREFIX}/usr/$(get_libdir)" \ - --prefix="${EPREFIX}/usr" \ - --with-intl-api \ - --with-system-icu \ - --with-system-nspr \ - --with-system-zlib \ - --with-toolchain-prefix="${CHOST}-" \ - --x-includes="${ESYSROOT}/usr/include" \ - --x-libraries="${ESYSROOT}/usr/$(get_libdir)" - - mozconfig_use_enable debug - mozconfig_use_enable jit - mozconfig_use_enable test tests - - if use debug ; then - mozconfig_add_options_ac '+debug' --disable-optimize - mozconfig_add_options_ac '+debug' --enable-debug-symbols - mozconfig_add_options_ac '+debug' --enable-real-time-tracing - else - mozconfig_add_options_ac '-debug' --enable-optimize - mozconfig_add_options_ac '-debug' --disable-debug-symbols - mozconfig_add_options_ac '-debug' --disable-real-time-tracing - fi - - # We always end up disabling this at some point due to newer rust versions. bgo#933372 - mozconfig_add_options_ac '--disable-rust-simd' --disable-rust-simd - - # Modifications to better support ARM, bug 717344 - if use cpu_flags_arm_neon ; then - mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon - - if ! tc-is-clang ; then - # thumb options aren't supported when using clang, bug 666966 - mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-thumb=yes - mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-thumb-interwork=no - fi - fi - - # Tell build system that we want to use LTO - if use lto ; then - if use clang ; then - if tc-ld-is-mold ; then - mozconfig_add_options_ac '+lto' --enable-linker=mold - else - mozconfig_add_options_ac '+lto' --enable-linker=lld - fi - mozconfig_add_options_ac '+lto' --enable-lto=cross - - else - mozconfig_add_options_ac '+lto' --enable-linker=bfd - mozconfig_add_options_ac '+lto' --enable-lto=full - fi - fi - - # LTO flag was handled via configure - filter-lto - - # Pass MAKEOPTS to build system - export MOZ_MAKE_FLAGS="${MAKEOPTS}" - - # Use system's Python environment - export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" - export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach - - # Disable notification when build system has finished - export MOZ_NOSPAM=1 - - # Portage sets XARGS environment variable to "xargs -r" by default which - # breaks build system's check_prog() function which doesn't support arguments - mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs" - - # Set build dir - mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}" - - # Show flags we will use - einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" - einfo "Build CFLAGS: ${CFLAGS}" - einfo "Build CXXFLAGS: ${CXXFLAGS}" - einfo "Build LDFLAGS: ${LDFLAGS}" - einfo "Build RUSTFLAGS: ${RUSTFLAGS}" - - ./mach configure || die -} - -src_compile() { - ./mach build --verbose || die -} - -src_test() { - if "${BUILD_DIR}/js/src/js" -e 'print("Hello world!")'; then - einfo "Smoke-test successful, continuing with full test suite" - else - die "Smoke-test failed: did interpreter initialization fail?" - fi - - cp "${FILESDIR}"/spidermonkey-${SLOT}-known-test-failures.txt "${T}"/known_test_failures.list || die - - if use x86 ; then - echo "non262/Intl/DateTimeFormat/timeZone_version.js" >> "${T}"/known_test_failures.list - echo "test262/intl402/Locale/constructor-non-iana-canon.js" >> "${T}"/known_test_failures.list - fi - - ./mach jstests --exclude-file="${T}"/known_test_failures.list || die -} - -src_install() { - cd "${BUILD_DIR}" || die - default - - # fix soname links - pushd "${ED}"/usr/$(get_libdir) &>/dev/null || die - mv lib${MY_PN}-${MY_MAJOR}.so lib${MY_PN}-${MY_MAJOR}.so.0.0.0 || die - ln -s lib${MY_PN}-${MY_MAJOR}.so.0.0.0 lib${MY_PN}-${MY_MAJOR}.so.0 || die - ln -s lib${MY_PN}-${MY_MAJOR}.so.0 lib${MY_PN}-${MY_MAJOR}.so || die - popd &>/dev/null || die - - # remove unneeded files - rm \ - "${ED}"/usr/bin/js${MY_MAJOR}-config \ - "${ED}"/usr/$(get_libdir)/libjs_static.ajs || die - - # fix permissions - chmod -x \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc \ - "${ED}"/usr/include/mozjs-${MY_MAJOR}/js-config.h || die -} diff --git a/dev-lang/spidermonkey/spidermonkey-128.7.0.ebuild b/dev-lang/spidermonkey/spidermonkey-128.7.0.ebuild new file mode 100644 index 000000000000..1f1a17198baf --- /dev/null +++ b/dev-lang/spidermonkey/spidermonkey-128.7.0.ebuild @@ -0,0 +1,473 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +FIREFOX_PATCHSET="firefox-128esr-patches-08.tar.xz" +SPIDERMONKEY_PATCHSET="spidermonkey-128-patches-02.tar.xz" + +LLVM_COMPAT=( 17 18 19 ) +RUST_NEEDS_LLVM=1 + +PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_REQ_USE="ncurses,ssl,xml(+)" + +WANT_AUTOCONF="2.1" + +inherit autotools check-reqs flag-o-matic llvm-r1 multiprocessing python-any-r1 rust toolchain-funcs + +MY_PN="mozjs" +MY_PV="${PV/_pre*}" + +MY_MAJOR=$(ver_cut 1) + +MOZ_ESR=yes + +MOZ_PV=${PV} +MOZ_PV_SUFFIX= +if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then + MOZ_PV_SUFFIX=${BASH_REMATCH[1]} + + # Convert the ebuild version to the upstream Mozilla version + MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI + MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI + MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI +fi + +if [[ -n ${MOZ_ESR} ]] ; then + # ESR releases have slightly different version numbers + MOZ_PV="${MOZ_PV}esr" +fi + +MOZ_PN="firefox" +MOZ_P="${MOZ_PN}-${MOZ_PV}" +MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" +MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" + +MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" + +if [[ ${PV} == *_rc* ]] ; then + MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" +fi + +PATCH_URIS=( + https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET} + https://dev.gentoo.org/~juippis/mozilla/patchsets/${SPIDERMONKEY_PATCHSET} +) + +DESCRIPTION="Mozilla's JavaScript engine written in C and C++" +HOMEPAGE="https://spidermonkey.dev https://firefox-source-docs.mozilla.org/js/index.html" +SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz + ${PATCH_URIS[@]}" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86" + +LICENSE="MPL-2.0" +SLOT="$(ver_cut 1)" +IUSE="clang cpu_flags_arm_neon debug +jit test" + +#RESTRICT="test" +RESTRICT="!test? ( test )" + +BDEPEND="${PYTHON_DEPS} + $(llvm_gen_dep ' + clang? ( + llvm-core/clang:${LLVM_SLOT} + llvm-core/lld:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ) + ') + >=dev-util/cbindgen-0.26.0 + virtual/pkgconfig + test? ( + $(python_gen_any_dep 'dev-python/six[${PYTHON_USEDEP}]') + )" +DEPEND=">=dev-libs/icu-73.1:= + dev-libs/nspr + sys-libs/readline:0= + sys-libs/zlib" +RDEPEND="${DEPEND}" + +S="${WORKDIR}/firefox-${PV%_*}" + +llvm_check_deps() { + if use clang ; then + if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then + einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if ! has_version -b "llvm-core/llvm:${LLVM_SLOT}" ; then + einfo "llvm-core/llvm:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + + if ! tc-ld-is-mold ; then + if ! has_version -b "llvm-core/lld:${LLVM_SLOT}" ; then + einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 + return 1 + fi + fi + fi + + einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 +} + +mozconfig_add_options_ac() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_add_options_mk() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 2 ]] ; then + die "${FUNCNAME} requires at least two arguments" + fi + + local reason=${1} + shift + + local option + for option in ${@} ; do + echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG} + done +} + +mozconfig_use_enable() { + debug-print-function ${FUNCNAME} "$@" + + if [[ ${#} -lt 1 ]] ; then + die "${FUNCNAME} requires at least one arguments" + fi + + local flag=$(use_enable "${@}") + mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" +} + +python_check_deps() { + if use test ; then + python_has_version "dev-python/six[${PYTHON_USEDEP}]" + fi +} + +pkg_pretend() { + if use test ; then + CHECKREQS_DISK_BUILD="4400M" + else + CHECKREQS_DISK_BUILD="4300M" + fi + + check-reqs_pkg_pretend +} + +pkg_setup() { + # Get LTO from environment; export after this phase for use in src_configure (etc) + use_lto=no + + if [[ ${MERGE_TYPE} != binary ]] ; then + if tc-is-lto; then + use_lto=yes + # LTO is handled via configure + filter-lto + fi + + if [[ ${use_lto} = yes ]]; then + # -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC, + # bmo#1516758, bgo#942288 + filter-flags -Werror=lto-type-mismatch -Werror=odr + fi + + if use test ; then + CHECKREQS_DISK_BUILD="4400M" + else + CHECKREQS_DISK_BUILD="4300M" + fi + + check-reqs_pkg_setup + llvm-r1_pkg_setup + rust_pkg_setup + python-any-r1_pkg_setup + + # Build system is using /proc/self/oom_score_adj, bug #604394 + addpredict /proc/self/oom_score_adj + + if ! mountpoint -q /dev/shm ; then + # If /dev/shm is not available, configure is known to fail with + # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py + ewarn "/dev/shm is not mounted -- expect build failures!" + fi + + # Ensure we use C locale when building, bug #746215 + export LC_ALL=C + fi + + export use_lto +} + +src_prepare() { + if [[ ${use_lto} == "yes" ]]; then + rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die + fi + + # Workaround for bgo #915651,915651,929013 on musl + if use elibc_glibc ; then + rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die + fi + + eapply "${WORKDIR}"/firefox-patches + eapply "${WORKDIR}"/spidermonkey-patches + + default + + # Make cargo respect MAKEOPTS + export CARGO_BUILD_JOBS="$(makeopts_jobs)" + + # Workaround for bgo #915651,915651,929013 on musl + if ! use elibc_glibc ; then + if use amd64 ; then + export RUST_TARGET="x86_64-unknown-linux-musl" + elif use x86 ; then + export RUST_TARGET="i686-unknown-linux-musl" + elif use arm64 ; then + export RUST_TARGET="aarch64-unknown-linux-musl" + elif use ppc64 ; then + export RUST_TARGET="powerpc64le-unknown-linux-musl" + else + die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651" + fi + fi + + # sed-in toolchain prefix + sed -i \ + -e "s/objdump/${CHOST}-objdump/" \ + python/mozbuild/mozbuild/configure/check_debug_ranges.py || + die "sed failed to set toolchain prefix" + + einfo "Removing pre-built binaries ..." + find third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die + + # Create build dir + BUILD_DIR="${WORKDIR}/${PN}_build" + mkdir -p "${BUILD_DIR}" || die +} + +src_configure() { + # Show flags set at the beginning + einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Current CFLAGS: ${CFLAGS}" + einfo "Current CXXFLAGS: ${CXXFLAGS}" + einfo "Current LDFLAGS: ${LDFLAGS}" + einfo "Current RUSTFLAGS: ${RUSTFLAGS}" + + local have_switched_compiler= + if use clang ; then + # Force clang + einfo "Enforcing the use of clang due to USE=clang ..." + + local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }') + [[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}") + [[ -z ${version_clang} ]] && die "Failed to read clang version!" + + if tc-is-gcc; then + have_switched_compiler=yes + fi + + AR=llvm-ar + CC=${CHOST}-clang-${version_clang} + CXX=${CHOST}-clang++-${version_clang} + NM=llvm-nm + RANLIB=llvm-ranlib + READELF=llvm-readelf + OBJDUMP=llvm-objdump + + elif ! use clang && ! tc-is-gcc ; then + # Force gcc + have_switched_compiler=yes + einfo "Enforcing the use of gcc due to USE=-clang ..." + AR=gcc-ar + CC=${CHOST}-gcc + CXX=${CHOST}-g++ + NM=gcc-nm + RANLIB=gcc-ranlib + READELF=readelf + OBJDUMP=objdump + fi + + if [[ -n "${have_switched_compiler}" ]] ; then + # Because we switched active compiler we have to ensure + # that no unsupported flags are set + strip-unsupported-flags + fi + + # Ensure we use correct toolchain, + # AS is used in a non-standard way by upstream, #bmo1654031 + export HOST_CC="$(tc-getBUILD_CC)" + export HOST_CXX="$(tc-getBUILD_CXX)" + export AS="$(tc-getCC) -c" + + tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG + + # Pass the correct toolchain paths through cbindgen + if tc-is-cross-compiler ; then + export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}" + fi + + # ../python/mach/mach/mixin/process.py fails to detect SHELL + export SHELL="${EPREFIX}/bin/bash" + + # Set state path + export MOZBUILD_STATE_PATH="${BUILD_DIR}" + + # Set MOZCONFIG + export MOZCONFIG="${S}/.mozconfig" + + # Initialize MOZCONFIG + mozconfig_add_options_ac '' --enable-project=js + + mozconfig_add_options_ac 'Gentoo default' \ + --host="${CBUILD:-${CHOST}}" \ + --target="${CHOST}" \ + --disable-ctype \ + --disable-jemalloc \ + --disable-smoosh \ + --disable-strip \ + --enable-readline \ + --enable-release \ + --enable-shared-js \ + --libdir="${EPREFIX}/usr/$(get_libdir)" \ + --prefix="${EPREFIX}/usr" \ + --with-intl-api \ + --with-system-icu \ + --with-system-nspr \ + --with-system-zlib \ + --with-toolchain-prefix="${CHOST}-" \ + --x-includes="${ESYSROOT}/usr/include" \ + --x-libraries="${ESYSROOT}/usr/$(get_libdir)" + + mozconfig_use_enable debug + mozconfig_use_enable jit + mozconfig_use_enable test tests + + if use debug ; then + mozconfig_add_options_ac '+debug' --disable-optimize + mozconfig_add_options_ac '+debug' --enable-debug-symbols + mozconfig_add_options_ac '+debug' --enable-real-time-tracing + else + mozconfig_add_options_ac '-debug' --enable-optimize + mozconfig_add_options_ac '-debug' --disable-debug-symbols + mozconfig_add_options_ac '-debug' --disable-real-time-tracing + fi + + # We always end up disabling this at some point due to newer rust versions. bgo#933372 + mozconfig_add_options_ac '--disable-rust-simd' --disable-rust-simd + + # Modifications to better support ARM, bug 717344 + if use cpu_flags_arm_neon ; then + mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon + + if ! tc-is-clang ; then + # thumb options aren't supported when using clang, bug 666966 + mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-thumb=yes + mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-thumb-interwork=no + fi + fi + + # Tell build system that we want to use LTO + if [[ ${use_lto} == "yes" ]] ; then + if use clang ; then + if tc-ld-is-mold ; then + mozconfig_add_options_ac '+lto' --enable-linker=mold + else + mozconfig_add_options_ac '+lto' --enable-linker=lld + fi + mozconfig_add_options_ac '+lto' --enable-lto=cross + + else + mozconfig_add_options_ac '+lto' --enable-linker=bfd + mozconfig_add_options_ac '+lto' --enable-lto=full + fi + fi + + # LTO flag was handled via configure + filter-lto + + # Pass MAKEOPTS to build system + export MOZ_MAKE_FLAGS="${MAKEOPTS}" + + # Use system's Python environment + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" + export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach + + # Disable notification when build system has finished + export MOZ_NOSPAM=1 + + # Portage sets XARGS environment variable to "xargs -r" by default which + # breaks build system's check_prog() function which doesn't support arguments + mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs" + + # Set build dir + mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}" + + # Show flags we will use + einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" + einfo "Build CFLAGS: ${CFLAGS}" + einfo "Build CXXFLAGS: ${CXXFLAGS}" + einfo "Build LDFLAGS: ${LDFLAGS}" + einfo "Build RUSTFLAGS: ${RUSTFLAGS}" + + ./mach configure || die +} + +src_compile() { + ./mach build --verbose || die +} + +src_test() { + if "${BUILD_DIR}/js/src/js" -e 'print("Hello world!")'; then + einfo "Smoke-test successful, continuing with full test suite" + else + die "Smoke-test failed: did interpreter initialization fail?" + fi + + cp "${FILESDIR}"/spidermonkey-${SLOT}-known-test-failures.txt "${T}"/known_test_failures.list || die + + if use x86 ; then + echo "non262/Intl/DateTimeFormat/timeZone_version.js" >> "${T}"/known_test_failures.list + echo "test262/intl402/Locale/constructor-non-iana-canon.js" >> "${T}"/known_test_failures.list + fi + + ./mach jstests --exclude-file="${T}"/known_test_failures.list || die +} + +src_install() { + cd "${BUILD_DIR}" || die + default + + # fix soname links + pushd "${ED}"/usr/$(get_libdir) &>/dev/null || die + mv lib${MY_PN}-${MY_MAJOR}.so lib${MY_PN}-${MY_MAJOR}.so.0.0.0 || die + ln -s lib${MY_PN}-${MY_MAJOR}.so.0.0.0 lib${MY_PN}-${MY_MAJOR}.so.0 || die + ln -s lib${MY_PN}-${MY_MAJOR}.so.0 lib${MY_PN}-${MY_MAJOR}.so || die + popd &>/dev/null || die + + # remove unneeded files + rm \ + "${ED}"/usr/bin/js${MY_MAJOR}-config \ + "${ED}"/usr/$(get_libdir)/libjs_static.ajs || die + + # fix permissions + chmod -x \ + "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc \ + "${ED}"/usr/include/mozjs-${MY_MAJOR}/js-config.h || die +} diff --git a/dev-lang/tcl/Manifest b/dev-lang/tcl/Manifest index 9666ba5b4b84..397f46653d64 100644 --- a/dev-lang/tcl/Manifest +++ b/dev-lang/tcl/Manifest @@ -7,5 +7,5 @@ DIST tcl-core8.6.14-src.tar.gz 7081644 BLAKE2B 7148c889954d78774c4352ceae5d81449 DIST tcl-core8.6.15-src.tar.gz 7019390 BLAKE2B e88b974c005e3acd680f672a13b76bd736730f13c4af1c4538390c0d624b1cd752c8305ac2f6d7f7df5d2fbb43b08614b715c7688ea61184d552cd77117d8533 SHA512 9ca62941405ea2bca3099bf65f03a87071f3d88ff23367ab8af80bba7692caca5f63ec4d9c2282b7ba3433124c5f952578a763888e0a9ba9205e52248539e9e7 EBUILD tcl-8.6.13-r1.ebuild 3837 BLAKE2B f421a25f2a004bf64f1b12dab0d7f69df505140a94951a826640f322d794abc71b6b34da17ccf7d5364a98f7ab0dc791585768674872743860a5f12cbf6f9e47 SHA512 a4c88049a63a30af849175621aa6034f5fca33ea891b761a2f6b3b996ba7e0d8f42ce36b738865a4751615db663828724d6e3f066b6d31c9399f59ee5aec6b2b EBUILD tcl-8.6.14.ebuild 3920 BLAKE2B b97a531cc91b840f1d50b1509555f94b964a1cf6e223be13bf9175a2d8c721c64bcfdbb17cd5899ab61960308dd5f1c0e3d51510bb7527a1f071b6bffb6ab674 SHA512 20837ebe035404c9dedbbf999d6eb958c318dc91a82bd71d881d7f074b80fc0556768e51f05016ce34cd6a8f306573de6277c724e2cb9eb3cb97658115eebf3b -EBUILD tcl-8.6.15.ebuild 3841 BLAKE2B 89d342609cd326b3e5a73a7c6c6682f9c30e534e496ab377d8ccf0da07377a282a74c0bab35ad05f82009c70266d26f5bbaff0a24a0ae3b21a7036e1669d50e6 SHA512 8bc414f5e61f736acbe6878a72334ac4a172c74a9d6632a39a3d468a96a8f956b8c5c06e5a74a3aecabd09a0cc419df43654fd09ed3e3033cf52a5e9079c5707 +EBUILD tcl-8.6.15.ebuild 3840 BLAKE2B eb1d007b9c0830c4a4e68187155a19a9d4d15356f316db57d4a1f455df2622f14c133b51a634bb9e0c3febab2e6810cd5dd7dd913e3339af5f2c61bea2a0ac62 SHA512 87c4da22346e82682168360671d8778d211ddcb08303bd12721168671440f2b982dff3fdd858fa6db55233b7dbdc91d17013012dbbd694e1bb736c0c83e450a6 MISC metadata.xml 421 BLAKE2B c056a7ae8f2deaddda9bb329d46ec4f322548f4d031479ba522f5d93add46bd47cc783e9876b398579898af2cbdedb053c6328433eacfd02df4bb6dcf0185766 SHA512 0e77b876a127d68c7b193db874b9d3ab38f8475abafec1d866f2a4158ea4334ae04fbd6cb1d9acc23c81e13e584fe667503e4d9352873e1880a2d6acf7dec59c diff --git a/dev-lang/tcl/tcl-8.6.15.ebuild b/dev-lang/tcl/tcl-8.6.15.ebuild index ba493ce1c426..f9caee6586a6 100644 --- a/dev-lang/tcl/tcl-8.6.15.ebuild +++ b/dev-lang/tcl/tcl-8.6.15.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -18,7 +18,7 @@ S="${SPARENT}"/unix LICENSE="tcltk Spencer-99" SLOT="0/8.6" -KEYWORDS="~alpha ~amd64 arm arm64 hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" IUSE="debug +threads" RDEPEND=">=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]" diff --git a/dev-lang/tk/Manifest b/dev-lang/tk/Manifest index 27cb4a5673f8..399d30006c8c 100644 --- a/dev-lang/tk/Manifest +++ b/dev-lang/tk/Manifest @@ -9,5 +9,5 @@ DIST tk8.6.14-src.tar.gz 4510695 BLAKE2B 00b83a87b65317ca32228a11014bd9fe7cffb92 DIST tk8.6.15-src.tar.gz 4590766 BLAKE2B 41cf8917fcc7ca8a5d82d86bce0c8034fec5cead93caf9b5f18c4055e8a8f80f49f8afb506ceb965166e682902d404b0e0757f0dea1f61fb69ead3adf98c92b1 SHA512 1b4165748eb62b1ac875171036bec8c4d81ed903681806de78149e15b311c7258d9daf2bbc2a629c973a02362ad5df58157d0b90e2e54582590f62fbfc4b7d62 EBUILD tk-8.6.13.ebuild 4221 BLAKE2B f9930585d1560d19a4076d5f6b5e9bf252447e40e6521fbcb3f5adb9b94efa33f3d00fc36f0276686e7b47a926d6edd6e91cd297fa7ca4dd0dbc4d73790e8588 SHA512 3038d439a0b2127bee9b9a890f16841dbd7700f85e9dc5c020c6c4c4f476f5eddc916fca6829fda9c39489da670458ee4c0528276ec4602ee6afd484869b9e11 EBUILD tk-8.6.14.ebuild 4199 BLAKE2B 8539e2ab495ce2e4ad8277780872c64d4ee85e4556d545bbab2aa7cfc4d5dea60fe5e6ab1640f95cb209109e3259e9bb3372fc0f1d9b2ee70bd9915b86079f47 SHA512 3d8e215d89961da85e8fe485eeca4a8531cd26894fb14e65d130ea973a4d7be2670ddf01a3868d15eeece2bf3fa8204d43dd281cdf4894dedd4cdb2a83c11d60 -EBUILD tk-8.6.15.ebuild 4210 BLAKE2B 2c37cdf7f2f14bb9550780b0f64cb4be6aa48ef9601c6532999b0ec6d3b677c7193f9bf57693b53da3e7638759c8239b1ab2f565d2f24c1461d66adba70698f3 SHA512 fdd815bd4c7a7184d84b03d25331076b6a6307475e368bf90e139db1f4702611d3d059535e6fe9c06324a4ce391ffbd51c42d4f35785f5dec67fa39e1d0a8a83 +EBUILD tk-8.6.15.ebuild 4209 BLAKE2B ed250a410c75bc401cb05f1cb241080b3a6224dc682f465e70979e89ed75a4a96521b660cd1eaddbebddf7f1cbfca6fd720fac9b514252c0da6aa88056e6e224 SHA512 9e08568e22a8b8355ca629d4419a1fd4252c4f51ad494239b380f214f3b41a6f70725ca92adc76a87a13951268920f84d44580bd8146f16479e90047fcef5c8d MISC metadata.xml 375 BLAKE2B bb3f40f5b72544625f38a6b5b17d4435d3b0bb1aef8f668f3a1e1ea7f84bf7a25651b7894abbadd66f554f68eae113c74d348b5c821f686ea78e3c1f72709ead SHA512 3e175a0631c7add79e33cf4bd1254d5f1d82da26aa26ff072d5295bbca7a9d81c760145c2cbd853e854b06e08fcadcc55ea5ef2cbd016aec73c55b97507afef9 diff --git a/dev-lang/tk/tk-8.6.15.ebuild b/dev-lang/tk/tk-8.6.15.ebuild index 35e43b0f7a98..63b4f20a99a9 100644 --- a/dev-lang/tk/tk-8.6.15.ebuild +++ b/dev-lang/tk/tk-8.6.15.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -18,7 +18,7 @@ S="${SPARENT}"/unix LICENSE="tcltk" SLOT="0/8.6" -KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" IUSE="debug +threads truetype aqua xscreensaver" RESTRICT="!test? ( test )" diff --git a/dev-lang/xsb/Manifest b/dev-lang/xsb/Manifest index eb75f247e006..f9a3b6282cbb 100644 --- a/dev-lang/xsb/Manifest +++ b/dev-lang/xsb/Manifest @@ -1,5 +1,7 @@ AUX 0001-modern-C-fix-for-implicit-int.patch 998 BLAKE2B 4a9212fc68098914ac12593e2007c7444eb6d7b8f9461640ecc50c8c8c30631475c9e0663808df450b168d8156c346807454eb8795b11e43ac7f4abfa08475e0 SHA512 cb857bdd2bd496531c96a30fb2f4b84f894614adcaed7b6b4f809c3e9e256366e06218e0553c7c15af2b718653f2be3d2a45393849392650550c8d61a7b6bf60 +AUX xsb-4.0.0-gcc14-build-fix.patch 556 BLAKE2B bb50d8c4a64373314d5d58ffaa66bc84f076a6adbc048c610471b783628f98e12fdd71b09200327ea6fd9c1163fb03171cf3a38c00d44e33e046e247bac1b160 SHA512 7f173f93f723ff1112cbed7956e9fe741ef498dec4bbda193ee4f8f11119cfeacd4646fd8cadbe423b309eff86be3bfbdfab05a97db222f3c97031b34546f4ac +AUX xsb-4.0.0-gcc14-sql.patch 808 BLAKE2B 52afa9e8b8b9c28540e1b880724776358342550d46e597c2a327dd02e48665fa8dc9b38f1450847f3053b377a4e78336d5a1d4fef0f11412d79f7da7022eb607 SHA512 10fe40d09f5896d80237e39c2cc022efba94fae618145659b1c2e22b9ebb9e6db299e94860adb62322162b26847754e4a4c989ce8dc5913ae959e97d9b2febcb DIST XSB-4-0-0.tar.gz 15340635 BLAKE2B 4832185a64c6c5786ae78e111c25cd3a5ffc2f80aec9c0c83f030ead482868c77b0d7abbfdf0d113b56fea395eb7e69ca2970a82ea70004fb78c0bf4de258a9d SHA512 fed1e0db4874db2508e0c1e716be20cbfbc4f7ed4c16e0b220750cfb3dfceb78bbdce0f8564b68c400af1bc2b8f9e3b35014e8849bba1705bddfab824f41e816 DIST xsb-4.0.0-gentoo-patchset-3.tar.gz 10487 BLAKE2B 37253b8e5bfd36cdf51f231e75215ea31d50f121e3c8b1126adfbc8998622f2a4ebdb976b3c67c13738095fd4b23b35e166a895c4ee038b1cae7ad962684ce86 SHA512 51738e5dd64711f42e5c8d831c955c533dbe900a129cc0e7eb5d393ef13d7b6206e5e9fc0e90b1422adb2d8c00ec870a50164d420a02da23770ba0ad3350b10b -EBUILD xsb-4.0.0-r1.ebuild 4514 BLAKE2B 1fb92d957672821e9a205fbd6d93c6b9e95f87c1f5cc2ff485cd414a1ca1fc590dbcf262db4d66192bbb262f571b0d5fbdfaa8befb5127d6ebead4e40d24100b SHA512 237b9a1ec204c788eb40a4825f96d91c9859e4747235d214bc7de3c8c7fd9d8ff08b8996800425eaec73295ca64a10f6910399172fe398b249095308b155fb7f +EBUILD xsb-4.0.0-r2.ebuild 4602 BLAKE2B 3f0d5f5984ee7c511a371af7e0355cdd3661d9579a912d9661a2d78ca7e2f5d9342daa4997d444bab64057da1768bb7f1190e8be58f4be1de1aeb4a803ad4fca SHA512 437fd589284b8676d9d5a51a7d93c19f15a9880bc7bde25d7490d31ba49aa8fa998b628bedfc3906ef6f335709c1ed0d35212f2d7f581d08df4722784dc6e0f7 MISC metadata.xml 407 BLAKE2B bf2a1312d435a5b31fcc0536849ded569d7512ec8e2e7471c253586bc866e7ffb915311725efeef8f2c7d227a82ba615a5fa69380454efb654e719177e35a67e SHA512 87aa031c2a64c878f24be293a3e4cdf391b696a7ef96faa4f209fcfeb56db74f29a1e3de7ad845f84eca86d8b81944ecae6e4ea1119699b72bfcf125735a0c03 diff --git a/dev-lang/xsb/files/xsb-4.0.0-gcc14-build-fix.patch b/dev-lang/xsb/files/xsb-4.0.0-gcc14-build-fix.patch new file mode 100644 index 000000000000..86439ff99ef1 --- /dev/null +++ b/dev-lang/xsb/files/xsb-4.0.0-gcc14-build-fix.patch @@ -0,0 +1,11 @@ +--- a/emu/timer_xsb.c ++++ b/emu/timer_xsb.c +@@ -264,7 +264,7 @@ int make_timed_call(CTXTdeclc xsbTimeout *pptr, void (*fptr)(xsbTimeout *)) + pptr->timeout_info.th=th; + // below, fptr is pointer to start routine, pptr is pointer to arg-array. + // TIMED_THREAD_CREATE_ARG is a cell of timeout_info. +- if (pthread_create(TIMED_THREAD_CREATE_ARG, NULL, fptr, pptr)) { ++ if (pthread_create(TIMED_THREAD_CREATE_ARG, NULL, (void *)fptr, pptr)) { + xsb_error("SOCKET_REQUEST: Can't create concurrent timer thread\n"); + return TIMER_SETUP_ERR; + } diff --git a/dev-lang/xsb/files/xsb-4.0.0-gcc14-sql.patch b/dev-lang/xsb/files/xsb-4.0.0-gcc14-sql.patch new file mode 100644 index 000000000000..d100bdbb0cce --- /dev/null +++ b/dev-lang/xsb/files/xsb-4.0.0-gcc14-sql.patch @@ -0,0 +1,16 @@ +https://bugs.gentoo.org/949632 +--- a/emu/odbc_xsb.c 2021-03-06 18:46:16.000000000 -0500 ++++ b/emu/odbc_xsb.c 2025-02-11 15:49:47.204779582 -0500 +@@ -411,10 +411,10 @@ + cberrormsgmax=SQL_MAX_MESSAGE_LENGTH-1; + if (cur != NULL) + rc = SQLError(SQL_NULL_HENV, cur->hdbc, cur->hstmt, szsqlstate, +- pfnativeerror, szerrormsg,cberrormsgmax,pcberrormsg); ++ (void *)pfnativeerror, szerrormsg,cberrormsgmax,pcberrormsg); + else + rc = SQLError(SQL_NULL_HENV, NULL, SQL_NULL_HSTMT, szsqlstate, +- pfnativeerror, szerrormsg,cberrormsgmax,pcberrormsg); ++ (void *)pfnativeerror, szerrormsg,cberrormsgmax,pcberrormsg); + if ((rc == SQL_SUCCESS) || (rc == SQL_SUCCESS_WITH_INFO)) { + term = makecs(hreg); + bld_functor(hreg, pair_psc(insert("odbc_error",2,(Psc)flags[CURRENT_MODULE],&isnew))); diff --git a/dev-lang/xsb/xsb-4.0.0-r1.ebuild b/dev-lang/xsb/xsb-4.0.0-r1.ebuild deleted file mode 100644 index 7e053d1e83ff..000000000000 --- a/dev-lang/xsb/xsb-4.0.0-r1.ebuild +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PATCHSET_VER="3" - -inherit autotools flag-o-matic java-pkg-opt-2 - -DESCRIPTION="XSB is a logic programming and deductive database system" -HOMEPAGE="https://xsb.sourceforge.net" -SRC_URI="https://downloads.sourceforge.net/xsb/XSB-$(ver_rs 1-3 -).tar.gz - https://dev.gentoo.org/~keri/distfiles/xsb/${P}-gentoo-patchset-${PATCHSET_VER}.tar.gz" - -LICENSE="GPL-2 LGPL-2" -SLOT="0" -KEYWORDS="amd64" -IUSE="curl debug iodbc java mariadb mysql odbc pcre threads xml" - -RDEPEND="curl? ( net-misc/curl ) - iodbc? ( dev-db/libiodbc ) - java? ( >=virtual/jdk-1.8:* ) - mariadb? ( dev-db/mariadb-connector-c:= ) - mysql? ( dev-db/mysql-connector-c:0= ) - odbc? ( dev-db/unixODBC ) - pcre? ( dev-libs/libpcre ) - xml? ( dev-libs/libxml2 )" - -DEPEND="${RDEPEND}" - -S="${WORKDIR}"/XSB - -PATCHES=( - "${WORKDIR}/${PV}" - # https://bugs.gentoo.org/870970 - # https://sourceforge.net/p/xsb/bugs/265/ - "${FILESDIR}"/0001-modern-C-fix-for-implicit-int.patch -) - -src_prepare() { - default - cd "${S}"/build - eautoconf - - if use mariadb ; then - sed -i \ - -e "s:mysqlclient:mariadb:" \ - -e "s:mysql_config:mariadb_config:" \ - "${S}"/packages/dbdrivers/mysql/configure \ - "${S}"/packages/dbdrivers/mysql/mysql_driver_config.P - fi - - find "${S}"/packages -name Installation_summary \ - | xargs rm -f || die -} - -src_configure() { - # -Werror=strict-aliasing, -Werror=lto-type-mismatch - # https://bugs.gentoo.org/855659 - # https://sourceforge.net/p/xsb/bugs/264/ - append-flags -fno-strict-aliasing - filter-lto - - cd "${S}"/build - - econf \ - --prefix=/usr/$(get_libdir) \ - --disable-optimization \ - --disable-ccmpl \ - --without-smodels \ - $(use_with odbc) \ - $(use_with iodbc) \ - $(use_enable threads mt) \ - $(use_enable debug) - - if use curl ; then - cd "${S}"/packages/curl - econf - fi - - if use mysql || use mariadb ; then - local impl=$(usex mariadb mariadb mysql) - cd "${S}"/packages/dbdrivers/mysql - econf \ - --with-mysql-incdir=/usr/include/${impl} - fi - - if use odbc ; then - cd "${S}"/packages/dbdrivers/odbc - econf - fi - - if use pcre ; then - cd "${S}"/packages/pcre - econf - fi - - if use xml ; then - cd "${S}"/packages/xpath - econf - fi -} - -src_compile() { - cd "${S}"/build - - default - - # All XSB Packages are compiled using a single Prolog engine. - # Consequently they must all be compiled using a single make job. - - cd "${S}"/packages - rm -f *.xwam - emake -j1 - - if use curl ; then - emake -j1 curl - emake -j1 sgml - if use xml ; then - emake -j1 xpath - fi - fi - - if use mysql || use mariadb ; then - emake -j1 mysql - fi - - if use odbc ; then - emake -j1 odbc - fi - - if use pcre ; then - emake -j1 pcre - fi -} - -src_install() { - cd "${S}"/build - default - - local XSB_INSTALL_DIR=/usr/$(get_libdir)/xsb-${PV} - dosym ${XSB_INSTALL_DIR}/bin/xsb /usr/bin/xsb - - cd "${S}"/packages - local PACKAGES=${XSB_INSTALL_DIR}/packages - insinto ${PACKAGES} - doins *.xwam - - insinto ${PACKAGES}/chr - doins chr/*.xwam - - insinto ${PACKAGES}/clpqr - doins clpqr/*.xwam - - insinto ${PACKAGES}/gap - doins gap/*.xwam - - insinto ${PACKAGES}/justify - doins justify/*.xwam - doins justify/*.H - - insinto ${PACKAGES}/regmatch - doins regmatch/*.xwam - insinto ${PACKAGES}/regmatch/cc - doins regmatch/cc/*.H - - insinto ${PACKAGES}/slx - doins slx/*.xwam - - insinto ${PACKAGES}/wildmatch - doins wildmatch/*.xwam - insinto ${PACKAGES}/wildmatch/cc - doins wildmatch/cc/*.H - - if use curl ; then - insinto ${PACKAGES}/curl - doins curl/*.xwam - insinto ${PACKAGES}/curl/cc - doins curl/cc/*.H - insinto ${PACKAGES}/sgml - doins sgml/*.xwam - insinto ${PACKAGES}/sgml/cc - doins sgml/cc/*.H - insinto ${PACKAGES}/sgml/cc/dtd - doins sgml/cc/dtd/* - if use xml ; then - insinto ${PACKAGES}/xpath - doins xpath/*xwam - insinto ${PACKAGES}/xpath/cc - doins xpath/cc/*.H - fi - fi - - if use mysql || use mariadb || use odbc ; then - insinto ${PACKAGES}/dbdrivers - doins dbdrivers/*.xwam - doins dbdrivers/*.H - insinto ${PACKAGES}/dbdrivers/cc - doins dbdrivers/cc/*.H - if use mysql || use mariadb ; then - insinto ${PACKAGES}/dbdrivers/mysql - doins dbdrivers/mysql/*.xwam - insinto ${PACKAGES}/dbdrivers/mysql/cc - doins dbdrivers/mysql/cc/*.H - fi - if use odbc ; then - insinto ${PACKAGES}/dbdrivers/odbc - doins dbdrivers/odbc/*.xwam - insinto ${PACKAGES}/dbdrivers/odbc/cc - doins dbdrivers/odbc/cc/*.H - fi - fi - - if use pcre ; then - insinto ${PACKAGES}/pcre - doins pcre/*.xwam - insinto ${PACKAGES}/pcre/cc - doins pcre/cc/*.H - fi - - cd "${S}" - dodoc FAQ README -} diff --git a/dev-lang/xsb/xsb-4.0.0-r2.ebuild b/dev-lang/xsb/xsb-4.0.0-r2.ebuild new file mode 100644 index 000000000000..5f86c637e7b6 --- /dev/null +++ b/dev-lang/xsb/xsb-4.0.0-r2.ebuild @@ -0,0 +1,225 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PATCHSET_VER="3" + +inherit autotools flag-o-matic java-pkg-opt-2 + +DESCRIPTION="XSB is a logic programming and deductive database system" +HOMEPAGE="https://xsb.sourceforge.net" +SRC_URI="https://downloads.sourceforge.net/xsb/XSB-$(ver_rs 1-3 -).tar.gz + https://dev.gentoo.org/~keri/distfiles/xsb/${P}-gentoo-patchset-${PATCHSET_VER}.tar.gz" + +LICENSE="GPL-2 LGPL-2" +SLOT="0" +KEYWORDS="amd64" +IUSE="curl debug iodbc java mariadb mysql odbc pcre threads xml" + +RDEPEND="curl? ( net-misc/curl ) + iodbc? ( dev-db/libiodbc ) + java? ( >=virtual/jdk-1.8:* ) + mariadb? ( dev-db/mariadb-connector-c:= ) + mysql? ( dev-db/mysql-connector-c:0= ) + odbc? ( dev-db/unixODBC ) + pcre? ( dev-libs/libpcre ) + xml? ( dev-libs/libxml2 )" + +DEPEND="${RDEPEND}" + +S="${WORKDIR}"/XSB + +PATCHES=( + "${WORKDIR}/${PV}" + # https://bugs.gentoo.org/870970 + # https://sourceforge.net/p/xsb/bugs/265/ + "${FILESDIR}"/0001-modern-C-fix-for-implicit-int.patch + "${FILESDIR}"/xsb-4.0.0-gcc14-build-fix.patch + "${FILESDIR}"/xsb-4.0.0-gcc14-sql.patch +) + +src_prepare() { + default + cd "${S}"/build + eautoconf + + if use mariadb ; then + sed -i \ + -e "s:mysqlclient:mariadb:" \ + -e "s:mysql_config:mariadb_config:" \ + "${S}"/packages/dbdrivers/mysql/configure \ + "${S}"/packages/dbdrivers/mysql/mysql_driver_config.P + fi + + find "${S}"/packages -name Installation_summary \ + | xargs rm -f || die +} + +src_configure() { + # -Werror=strict-aliasing, -Werror=lto-type-mismatch + # https://bugs.gentoo.org/855659 + # https://sourceforge.net/p/xsb/bugs/264/ + append-flags -fno-strict-aliasing + filter-lto + + cd "${S}"/build + + econf \ + --prefix=/usr/$(get_libdir) \ + --disable-optimization \ + --disable-ccmpl \ + --without-smodels \ + $(use_with odbc) \ + $(use_with iodbc) \ + $(use_enable threads mt) \ + $(use_enable debug) + + if use curl ; then + cd "${S}"/packages/curl + econf + fi + + if use mysql || use mariadb ; then + local impl=$(usex mariadb mariadb mysql) + cd "${S}"/packages/dbdrivers/mysql + econf \ + --with-mysql-incdir=/usr/include/${impl} + fi + + if use odbc ; then + cd "${S}"/packages/dbdrivers/odbc + econf + fi + + if use pcre ; then + cd "${S}"/packages/pcre + econf + fi + + if use xml ; then + cd "${S}"/packages/xpath + econf + fi +} + +src_compile() { + cd "${S}"/build + + default + + # All XSB Packages are compiled using a single Prolog engine. + # Consequently they must all be compiled using a single make job. + + cd "${S}"/packages + rm -f *.xwam + emake -j1 + + if use curl ; then + emake -j1 curl + emake -j1 sgml + if use xml ; then + emake -j1 xpath + fi + fi + + if use mysql || use mariadb ; then + emake -j1 mysql + fi + + if use odbc ; then + emake -j1 odbc + fi + + if use pcre ; then + emake -j1 pcre + fi +} + +src_install() { + cd "${S}"/build + default + + local XSB_INSTALL_DIR=/usr/$(get_libdir)/xsb-${PV} + dosym ${XSB_INSTALL_DIR}/bin/xsb /usr/bin/xsb + + cd "${S}"/packages + local PACKAGES=${XSB_INSTALL_DIR}/packages + insinto ${PACKAGES} + doins *.xwam + + insinto ${PACKAGES}/chr + doins chr/*.xwam + + insinto ${PACKAGES}/clpqr + doins clpqr/*.xwam + + insinto ${PACKAGES}/gap + doins gap/*.xwam + + insinto ${PACKAGES}/justify + doins justify/*.xwam + doins justify/*.H + + insinto ${PACKAGES}/regmatch + doins regmatch/*.xwam + insinto ${PACKAGES}/regmatch/cc + doins regmatch/cc/*.H + + insinto ${PACKAGES}/slx + doins slx/*.xwam + + insinto ${PACKAGES}/wildmatch + doins wildmatch/*.xwam + insinto ${PACKAGES}/wildmatch/cc + doins wildmatch/cc/*.H + + if use curl ; then + insinto ${PACKAGES}/curl + doins curl/*.xwam + insinto ${PACKAGES}/curl/cc + doins curl/cc/*.H + insinto ${PACKAGES}/sgml + doins sgml/*.xwam + insinto ${PACKAGES}/sgml/cc + doins sgml/cc/*.H + insinto ${PACKAGES}/sgml/cc/dtd + doins sgml/cc/dtd/* + if use xml ; then + insinto ${PACKAGES}/xpath + doins xpath/*xwam + insinto ${PACKAGES}/xpath/cc + doins xpath/cc/*.H + fi + fi + + if use mysql || use mariadb || use odbc ; then + insinto ${PACKAGES}/dbdrivers + doins dbdrivers/*.xwam + doins dbdrivers/*.H + insinto ${PACKAGES}/dbdrivers/cc + doins dbdrivers/cc/*.H + if use mysql || use mariadb ; then + insinto ${PACKAGES}/dbdrivers/mysql + doins dbdrivers/mysql/*.xwam + insinto ${PACKAGES}/dbdrivers/mysql/cc + doins dbdrivers/mysql/cc/*.H + fi + if use odbc ; then + insinto ${PACKAGES}/dbdrivers/odbc + doins dbdrivers/odbc/*.xwam + insinto ${PACKAGES}/dbdrivers/odbc/cc + doins dbdrivers/odbc/cc/*.H + fi + fi + + if use pcre ; then + insinto ${PACKAGES}/pcre + doins pcre/*.xwam + insinto ${PACKAGES}/pcre/cc + doins pcre/cc/*.H + fi + + cd "${S}" + dodoc FAQ README +} diff --git a/dev-libs/Manifest.gz b/dev-libs/Manifest.gz index 7a9a6709ffe82bbcd26a3700526dd420591833b6..4703bf80df1239dc88aa674e5c3be71108cad382 100644 GIT binary patch literal 99534 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

6cBi^a(r*W` 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%0Au%t8XR{Rt{$13aV=a&GbI(8U`}r7mJ7 zRwS=T6>C(r+U5}TDa6RS7*65yW39gb?dQgtO}8nXk9MM~EpwOJ!(KGqM-H2pGu8pE zF4xGxAlaO~^K~KN>c?5RZVB3}5s0an9JHxypX}CWk7_Zijv0i_*rFnPJ@|3&e)+<0 zJx&De;%JUT&XGv6in*lbZ7!J_8-0(iZxI1c%Qb$VGX?e=d7IQBq$K4-YRZZmkcbf* zJeH7Z;lZYmHO!F&8`|_PesI+!?t6fT|M{N}|KZvi9_WEjvUd**sjKY4hmlPI&119G zlc-E&QHrrUzNMXW2H~-+%GY_dB){J6das*9=3wS(i-nbKd+jYo!3-Om!BSAuOvVGS zMjY!yI+CECNT0H(2F4jx;4ftyk)&wjl-Bd@2&#?61|Z2nuli z-+?aH0QLevCmRDR9nd9q;C6;N=F=){#Fq3cr0LDEV04mr5 E0JX$v{Qv*} diff --git a/dev-libs/apache-arrow/Manifest b/dev-libs/apache-arrow/Manifest index 6ad679acf868..016359c4fd1e 100644 --- a/dev-libs/apache-arrow/Manifest +++ b/dev-libs/apache-arrow/Manifest @@ -1,10 +1,5 @@ -DIST apache-arrow-18.0.0.tar.gz 19113236 BLAKE2B c358f8e61155432540a4002c6dfba7a3763d934a43eddae0a9a6f98bb26879df51e3cdcc64db6dd684ffde2ef8ef6dcff8906355b5769f71afae907aa1e920c5 SHA512 4df30ab5561da695eaa864422626b9898555d86ca56835c3b8a8ca93a1dbaf081582bb36e2440d1daf7e1dd48c76941f1152a4f25ce0dbcc1c2abe244a00c05e -DIST apache-arrow-18.1.0.tar.gz 19132388 BLAKE2B 4a8c60d8a5dcf2b8ac4e2ae3a7f555dd0604d5ccc4b72ba317f18e16e75725b24553050fe88a02f382b0581310f20d0b795133b243f2851fa0e8d3801a839358 SHA512 7249c03a6097bc64fb0092143e4d4aaef3227565147e6254f026ddd504177c8dd565a184a0df39743dc989070dc3785e5b66f738c8e310ed9c982b61c2ec4914 DIST apache-arrow-19.0.0.tar.gz 17830405 BLAKE2B cf611106b0ee5f92a4cbf341e9f5b6771f377710bb11c6eab555706a52b5c72fcf4590ba55c36100a97c6219ec421813f51ef6337530d84eb8394735ef2787b5 SHA512 6820de33a5d5b0922ea64dd8ff55d186ef02596ad0415578067aaf3e5cf7d3eead473bc3a5f92d6d3f19b97d153fe1c901359008d922d1ffb0fc2a65dc860c79 DIST arrow-testing-4d209492d514c2d3cb2d392681b9aa00e6d8da1c.tar.gz 3572558 BLAKE2B fe5b6a46babbde8e2becefea09fecf090201a49faa7d4ee2f44b0bb4da42c344b37564999d32fdbd54a81a56c33fbde9b2d9d2fa664bf127cb5661e845fb6229 SHA512 6758ad936e1eeb2c5dd2b4b40fe90822a48a4ce67ee4d36657c168e1db5d9a17c092f4cf571b13d56b568a773515385441874d1ea36a1f6e5b15a99f67176fa3 DIST parquet-testing-c7cf1374cf284c0c73024cd1437becea75558bf8.tar.gz 1076246 BLAKE2B 070323055ce6cbcff6987b03e6f483cb4647021b29fd2e62b6f05751637dc46df27601f7519e2aa1c6c4edb4b016d0dfc16f69d31e4a262c7231fbc96f21d711 SHA512 81799640604bec3c5f91499a4af7a3c1a4b669f8f4933d3cf622b556fcd376635eb869197d41371b3745a662118961488b6a8eed17fc664c0a1e0f879a1a42e4 -DIST parquet-testing-cb7a9674142c137367bf75a01b79c6e214a73199.tar.gz 1068025 BLAKE2B 0fdd12d04108b27b17564c60ca36e751453f5d74cfbbe3a076e8befa1696aa0f093e2d1a5eacb99e69a98deda502930ba79b8329403af1e8b9d696e6617c6075 SHA512 dd221d9d59442cebb7158d7cf769d6e5323416bfcde2852eee37a26ff089bc04ea10b9ae7158a37d8694c10469d77c7d251d0dd2549596a7b3899d9c39b45997 -EBUILD apache-arrow-18.0.0.ebuild 2988 BLAKE2B 2cbbb8d48ccf1f166255fef3cd83b6954070e166fbc92b25feaca9a205eacfd49dd20a4e4b84b3caa9e42d89d0a33eb3f0f74165e9d966ee82348aa28261b611 SHA512 56ea0d4ccdac63dcfe1640d6e9157cde776b12346ff876c3188dbf25fceb7c56163644aba89a7396571ffeaa477bc256cac811b5f72580eb0602a6de10a4596f -EBUILD apache-arrow-18.1.0-r2.ebuild 3119 BLAKE2B a668badce41e7daba7bc8635211cb25d4478cf4cab9fdd586bb96e457e3e7700aa95f410002b225b82f91feabc2960631c787fafbc66e052b816a789c250e919 SHA512 3f11d6d87efb2519a6ce2d00ff6dfef898c4377415e085664e3b3dff4cd6104ef019ebbe1f6a29b78a723dff8a2be8a85ae82dba0aac4e0712919852e65d0fce -EBUILD apache-arrow-19.0.0.ebuild 3145 BLAKE2B e43c6a641684106f836b0677e56700e2e0249db9d4c6fc86f4a4f9be3ea82696a274afb06066c6e61e11a2a513a0e9a4d851771bd6523a1e6ed4447cf647d679 SHA512 8b5f229263bff51af82ca4c8e7f2239d3c11228d4192012850d8d3ae36bdc15970f6213179ad9e8b909a327ca74064d3e5e5ee2c997b1af410c3a208ce8f6bfb +EBUILD apache-arrow-19.0.0.ebuild 3142 BLAKE2B 90d8d572925612fda0b6e0a0996f2c8b1bcc9032198e2773a1cfcc66e63559124246d118b1e2145412b905baa213bdb1fabb1dc14bd2fff088e39ba384a9e7cd SHA512 961a87e515ff790c4c50db67e59a9688db461791b7e2545320eca662441d69bf04ba6ff850c6485dc825018a800aca9eff3dc59d7eea289ad00eb33dec48b58c MISC metadata.xml 912 BLAKE2B bffeb1e6d52455313e89396d9b1821fd7d5064e887213d13ae933ef8185318a40095c1623f3793f62d296ecb1afed591614fadc2ca3f75332df1e5a2f5a28d84 SHA512 11fb4dfe0e8c938e6bf3e7e53d1dccee08d80ba32396ac454226827e7c4ed2db70c53812060a9478e359fb2c48c221a05b3632409d73f2659b2117b7c56e8e51 diff --git a/dev-libs/apache-arrow/apache-arrow-18.0.0.ebuild b/dev-libs/apache-arrow/apache-arrow-18.0.0.ebuild deleted file mode 100644 index ba16c6ab26cc..000000000000 --- a/dev-libs/apache-arrow/apache-arrow-18.0.0.ebuild +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake - -# arrow.git: testing -ARROW_DATA_GIT_HASH=4d209492d514c2d3cb2d392681b9aa00e6d8da1c -# arrow.git: cpp/submodules/parquet-testing -PARQUET_DATA_GIT_HASH=cb7a9674142c137367bf75a01b79c6e214a73199 - -DESCRIPTION="A cross-language development platform for in-memory data." -HOMEPAGE=" - https://arrow.apache.org/ - https://github.com/apache/arrow/ -" -SRC_URI=" - mirror://apache/arrow/arrow-${PV}/${P}.tar.gz - test? ( - https://github.com/apache/parquet-testing/archive/${PARQUET_DATA_GIT_HASH}.tar.gz - -> parquet-testing-${PARQUET_DATA_GIT_HASH}.tar.gz - https://github.com/apache/arrow-testing/archive/${ARROW_DATA_GIT_HASH}.tar.gz - -> arrow-testing-${ARROW_DATA_GIT_HASH}.tar.gz - ) -" -S="${WORKDIR}/${P}/cpp" - -LICENSE="Apache-2.0" -SLOT="0/$(ver_cut 1)" -KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~riscv ~s390 x86" -IUSE=" - +brotli bzip2 compute dataset +json lz4 +parquet re2 +snappy ssl - test zlib zstd -" -REQUIRED_USE=" - test? ( - json - parquet? ( zstd ) - ) - ssl? ( json ) -" -RESTRICT="!test? ( test )" - -RDEPEND=" - brotli? ( app-arch/brotli:= ) - bzip2? ( app-arch/bzip2:= ) - compute? ( dev-libs/libutf8proc:= ) - dataset? ( - dev-libs/libutf8proc:= - ) - lz4? ( app-arch/lz4:= ) - parquet? ( - dev-libs/libutf8proc:= - dev-libs/thrift:= - ssl? ( dev-libs/openssl:= ) - ) - re2? ( dev-libs/re2:= ) - snappy? ( app-arch/snappy:= ) - zlib? ( sys-libs/zlib:= ) - zstd? ( app-arch/zstd:= ) -" -DEPEND=" - ${RDEPEND} - dev-cpp/xsimd - >=dev-libs/boost-1.81.0 - json? ( dev-libs/rapidjson ) - test? ( - dev-cpp/gflags - dev-cpp/gtest - ) -" - -src_prepare() { - # use Gentoo CXXFLAGS, specify docdir at src_configure. - sed -i \ - -e '/SetupCxxFlags/d' \ - -e '/set(ARROW_DOC_DIR.*)/d' \ - CMakeLists.txt \ - || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DARROW_BUILD_STATIC=OFF - -DARROW_BUILD_TESTS=$(usex test) - -DARROW_COMPUTE=$(usex compute) - -DARROW_CSV=ON - -DARROW_DATASET=$(usex dataset) - -DARROW_DEPENDENCY_SOURCE=SYSTEM - -DARROW_DOC_DIR=share/doc/${PF} - -DARROW_FILESYSTEM=ON - -DARROW_HDFS=ON - -DARROW_JEMALLOC=OFF - -DARROW_JSON=$(usex json) - -DARROW_PARQUET=$(usex parquet) - -DPARQUET_REQUIRE_ENCRYPTION=$(usex ssl) - -DARROW_USE_CCACHE=OFF - -DARROW_USE_SCCACHE=OFF - -DARROW_WITH_BROTLI=$(usex brotli) - -DARROW_WITH_BZ2=$(usex bzip2) - -DARROW_WITH_LZ4=$(usex lz4) - -DARROW_WITH_RE2=$(usex re2) - -DARROW_WITH_SNAPPY=$(usex snappy) - -DARROW_WITH_ZLIB=$(usex zlib) - -DARROW_WITH_ZSTD=$(usex zstd) - -DCMAKE_CXX_STANDARD=17 - ) - cmake_src_configure -} - -src_test() { - local -x PARQUET_TEST_DATA="${WORKDIR}/parquet-testing-${PARQUET_DATA_GIT_HASH}/data" - local -x ARROW_TEST_DATA="${WORKDIR}/arrow-testing-${ARROW_DATA_GIT_HASH}/data" - cmake_src_test -} - -src_install() { - cmake_src_install - if use test; then - cd "${D}"/usr/$(get_libdir) || die - rm -r cmake/ArrowTesting || die - rm libarrow_testing* || die - rm pkgconfig/arrow-testing.pc || die - fi -} diff --git a/dev-libs/apache-arrow/apache-arrow-18.1.0-r2.ebuild b/dev-libs/apache-arrow/apache-arrow-18.1.0-r2.ebuild deleted file mode 100644 index bde0003e1c21..000000000000 --- a/dev-libs/apache-arrow/apache-arrow-18.1.0-r2.ebuild +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake - -# arrow.git: testing -ARROW_DATA_GIT_HASH=4d209492d514c2d3cb2d392681b9aa00e6d8da1c -# arrow.git: cpp/submodules/parquet-testing -PARQUET_DATA_GIT_HASH=cb7a9674142c137367bf75a01b79c6e214a73199 - -DESCRIPTION="A cross-language development platform for in-memory data." -HOMEPAGE=" - https://arrow.apache.org/ - https://github.com/apache/arrow/ -" -SRC_URI=" - mirror://apache/arrow/arrow-${PV}/${P}.tar.gz - test? ( - https://github.com/apache/parquet-testing/archive/${PARQUET_DATA_GIT_HASH}.tar.gz - -> parquet-testing-${PARQUET_DATA_GIT_HASH}.tar.gz - https://github.com/apache/arrow-testing/archive/${ARROW_DATA_GIT_HASH}.tar.gz - -> arrow-testing-${ARROW_DATA_GIT_HASH}.tar.gz - ) -" -S="${WORKDIR}/${P}/cpp" - -LICENSE="Apache-2.0" -SLOT="0/$(ver_cut 1)" -KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~riscv ~s390 x86" -IUSE=" - +brotli bzip2 compute dataset +json lz4 +parquet re2 +snappy ssl - test zlib zstd -" -REQUIRED_USE=" - test? ( - json - parquet? ( zstd ) - ) - ssl? ( json ) -" -RESTRICT="!test? ( test )" - -RDEPEND=" - brotli? ( app-arch/brotli:= ) - bzip2? ( app-arch/bzip2:= ) - compute? ( dev-libs/libutf8proc:= ) - dataset? ( - dev-libs/libutf8proc:= - ) - elibc_musl? ( sys-libs/timezone-data ) - lz4? ( app-arch/lz4:= ) - parquet? ( - dev-libs/libutf8proc:= - dev-libs/thrift:= - ssl? ( dev-libs/openssl:= ) - ) - re2? ( dev-libs/re2:= ) - snappy? ( app-arch/snappy:= ) - zlib? ( sys-libs/zlib:= ) - zstd? ( app-arch/zstd:= ) -" -DEPEND=" - ${RDEPEND} - dev-cpp/xsimd - >=dev-libs/boost-1.81.0 - json? ( dev-libs/rapidjson ) - test? ( - dev-cpp/gflags - dev-cpp/gtest - ) -" - -src_prepare() { - # use Gentoo CXXFLAGS, specify docdir at src_configure. - sed -i \ - -e '/SetupCxxFlags/d' \ - -e '/set(ARROW_DOC_DIR.*)/d' \ - CMakeLists.txt \ - || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DARROW_BUILD_STATIC=OFF - -DARROW_BUILD_TESTS=$(usex test ON OFF) - -DARROW_COMPUTE=$(usex compute ON OFF) - -DARROW_CSV=ON - -DARROW_DATASET=$(usex dataset ON OFF) - -DARROW_DEPENDENCY_SOURCE=SYSTEM - -DARROW_DOC_DIR=share/doc/${PF} - -DARROW_FILESYSTEM=ON - -DARROW_HDFS=ON - -DARROW_JEMALLOC=OFF - -DARROW_JSON=$(usex json ON OFF) - -DARROW_PARQUET=$(usex parquet ON OFF) - -DPARQUET_REQUIRE_ENCRYPTION=$(usex ssl ON OFF) - -DARROW_USE_CCACHE=OFF - -DARROW_USE_SCCACHE=OFF - -DARROW_WITH_BROTLI=$(usex brotli ON OFF) - -DARROW_WITH_BZ2=$(usex bzip2 ON OFF) - -DARROW_WITH_LZ4=$(usex lz4 ON OFF) - -DARROW_WITH_RE2=$(usex re2 ON OFF) - -DARROW_WITH_SNAPPY=$(usex snappy ON OFF) - -DARROW_WITH_ZLIB=$(usex zlib ON OFF) - -DARROW_WITH_ZSTD=$(usex zstd ON OFF) - -DCMAKE_CXX_STANDARD=17 - ) - cmake_src_configure -} - -src_test() { - local -x PARQUET_TEST_DATA="${WORKDIR}/parquet-testing-${PARQUET_DATA_GIT_HASH}/data" - local -x ARROW_TEST_DATA="${WORKDIR}/arrow-testing-${ARROW_DATA_GIT_HASH}/data" - cmake_src_test -} - -src_install() { - cmake_src_install - if use test; then - cd "${D}"/usr/$(get_libdir) || die - rm -r cmake/ArrowTesting || die - rm libarrow_testing* || die - rm pkgconfig/arrow-testing.pc || die - fi -} diff --git a/dev-libs/apache-arrow/apache-arrow-19.0.0.ebuild b/dev-libs/apache-arrow/apache-arrow-19.0.0.ebuild index 9ac405157cf5..5f3f7544594d 100644 --- a/dev-libs/apache-arrow/apache-arrow-19.0.0.ebuild +++ b/dev-libs/apache-arrow/apache-arrow-19.0.0.ebuild @@ -28,7 +28,7 @@ S="${WORKDIR}/${P}/cpp" LICENSE="Apache-2.0" SLOT="0/$(ver_cut 1)" -KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~riscv ~s390 ~x86" +KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~riscv ~s390 x86" IUSE=" +brotli bzip2 compute dataset +json lz4 +parquet re2 +snappy ssl test zlib zstd diff --git a/dev-libs/appstream/Manifest b/dev-libs/appstream/Manifest index 11c1a5abe77e..6aa9f9b79d60 100644 --- a/dev-libs/appstream/Manifest +++ b/dev-libs/appstream/Manifest @@ -2,5 +2,5 @@ AUX appstream-1.0.0-disable-Werror-flags.patch 1297 BLAKE2B e8b9bc262d39332f5390 DIST AppStream-1.0.3.tar.xz 2644220 BLAKE2B cd7aa28b49c23229ee48b9a69e57a08244f81115e23525695e463930d2296daf80b5c7bb098c89726c220caec8c3e072fd85d77ac808e96c5cf2ff0488ba4ba1 SHA512 9b70d965966d55dbcc6a62d85525fdd5990a28abb1d94b2df91ab1549c24ce9c40d95e2d761c2f24e0c61fe5b74ab6a1f829dda387a8282aa9dff9198dc9610d DIST AppStream-1.0.4.tar.xz 2719900 BLAKE2B e8b3ca6092d4cddf73e5f902ac9d5e071d9eb31d8b206fd814e2078f5bcfcba1683e97beccaea9e7024da0285d77c63fb426e3b3d17f15c3add332e964e313d3 SHA512 ea0f9e226401b6c5a004676d14d01c195da295269169807bc956dbfd1d4f4b2b4ba61fe905fbefbe3c562a502c31fc869aba9e87c490dcac1d861f50038d14f1 EBUILD appstream-1.0.3.ebuild 1924 BLAKE2B bee6229d4bb3d6e783b110e08b386d004ca92d5b8aa8f0b74e19735ca0202b705c90ef602937436e8d9447f9b6a715625a30d51bd2b4cdfb4f922c54d0449e11 SHA512 b1e5a10202f3680ab18d34f534c72a05147e4090f06c678fd9a32c88ccd366c4abe007e09d81df78a1a5c3aeceb52a4a54928fa60c04a71725d8007b281c77c7 -EBUILD appstream-1.0.4.ebuild 2153 BLAKE2B fa267ac2442e5fe9c532d2dd3d369d2b485440ce48ea5f61d1e13b4dfe4990dc79e96806c85bdc273cddd401b0b8e5302ae24d7d687785fb5b97f553f3aee2bc SHA512 32c1352bb71624122ae32f91fe20170b0f3ef449a5e352b4d38040287ebc36d21524796e52e3e08a5153df495fc3ae5e5baf07a84832c646742b308aabd2a231 +EBUILD appstream-1.0.4.ebuild 2294 BLAKE2B ea33759a8ab259fd94e4ada3ab2fd077bd1807ff1d061b954df327d63147380b8d1467b7c5cd308cc57d795015b09f16eebe530149090761a557f453f14a60d9 SHA512 562874479867d4bf4550f535130f5eda9e0b743058fcc463325e21dfcd9b81a8bfc6f563aaf506426feb44468bd3aae9f7362097134c421dfb3d726cce521034 MISC metadata.xml 455 BLAKE2B 8786bd83d39c561453a1c2c34638e0f430b2e29ee0fb06cfd88ae2c3003c49abfe4a70f2777f12b0432c33af4beeb4db441f58cc8d9739372c665d47e18ef1a6 SHA512 44d38cf7dfbc2a9969ff120a73aa08a296a72d669fd11593ec5486941548fdf1687f5aed844d27a82c6c30767db7e4ec14574f9c8959a8d4cd4c5cc89ce27ce8 diff --git a/dev-libs/appstream/appstream-1.0.4.ebuild b/dev-libs/appstream/appstream-1.0.4.ebuild index 98d966051a45..8bb10a1d8dac 100644 --- a/dev-libs/appstream/appstream-1.0.4.ebuild +++ b/dev-libs/appstream/appstream-1.0.4.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit meson xdg-utils +inherit meson xdg-utils vala if [[ ${PV} == *9999* ]]; then inherit git-r3 @@ -21,7 +21,7 @@ HOMEPAGE="https://www.freedesktop.org/wiki/Distributions/AppStream/" LICENSE="LGPL-2.1+ GPL-2+" # check as_api_level SLOT="0/5" -IUSE="apt compose doc +introspection qt6 systemd test" +IUSE="apt compose doc +introspection qt6 systemd test vala" RESTRICT="test" # bug 691962 RDEPEND=" @@ -32,25 +32,31 @@ RDEPEND=" dev-libs/libyaml dev-libs/snowball-stemmer:= >=net-misc/curl-7.62 - compose? ( dev-libs/glib:2 - dev-libs/libyaml - gnome-base/librsvg:2 - media-libs/fontconfig:1.0 - media-libs/freetype:2 - x11-libs/cairo - x11-libs/gdk-pixbuf:2 ) + compose? ( + dev-libs/glib:2 + dev-libs/libyaml + gnome-base/librsvg:2 + media-libs/fontconfig:1.0 + media-libs/freetype:2 + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + ) introspection? ( >=dev-libs/gobject-introspection-1.56:= ) qt6? ( dev-qt/qtbase:6 ) systemd? ( sys-apps/systemd:= ) " DEPEND="${RDEPEND}" BDEPEND=" + app-text/docbook-xsl-stylesheets dev-libs/appstream-glib dev-libs/libxslt + dev-util/glib-utils + dev-util/gperf dev-util/itstool >=sys-devel/gettext-0.19.8 doc? ( app-text/docbook-xml-dtd:4.5 ) test? ( dev-qt/qttools:6[linguist] ) + vala? ( $(vala_depend) ) " PATCHES=( "${FILESDIR}"/${PN}-1.0.0-disable-Werror-flags.patch ) # bug 733774 @@ -61,6 +67,8 @@ src_prepare() { if ! use test; then sed -e "/^subdir.*tests/s/^/#DONT /" -i {,qt/}meson.build || die # bug 675944 fi + + use vala && vala_setup } src_configure() { @@ -73,7 +81,7 @@ src_configure() { -Dmaintainer=false -Dstatic-analysis=false -Dstemming=true - -Dvapi=false + -Dvapi=$(usex vala true false) -Dapt-support=$(usex apt true false) -Dcompose=$(usex compose true false) -Dinstall-docs=$(usex doc true false) diff --git a/dev-libs/bglibs/Manifest b/dev-libs/bglibs/Manifest index ac410f55cb94..1e80c9470ca0 100644 --- a/dev-libs/bglibs/Manifest +++ b/dev-libs/bglibs/Manifest @@ -4,5 +4,5 @@ AUX bglibs-2.04-stack-buffers.patch 1676 BLAKE2B 356ef239c23178b5f07d80776279c0e DIST bglibs-2.04.tar.gz 713673 BLAKE2B 9e1353b3221ef6a8cfb256ec8616d1e208777b20ecade3e6ae17faca6b42222e18aa601a948e6201139378bf6f8131a2b7a053d77b198176776d42a1af611186 SHA512 094268cad7d4bacf65c0dd3d42fde2e6bac34da0fd6193b1c8202c018e752b3ef80a86c38e687467fb3a4e97130126fe74ee4a86063e4b25ee291de573984a6f EBUILD bglibs-2.04-r1.ebuild 1685 BLAKE2B eb3335d918ca5dda4e53d114d0afcae126877d05d5bcb54f9d71d3e083de3ca1333ba2973a5186e5ef4a9a69903d74904f383b7f86059a518d48d1b79bfc1c95 SHA512 da66f5c3bce7f52213e487e1372134f064bfc490b579507d02c3b05aa3ac9fcad3a694947a9fd22707a695f204b555cee3fc4bd23f4c303b0184cea5924e8497 EBUILD bglibs-2.04-r2.ebuild 1814 BLAKE2B 855e4de296b025900c4796be3c4efd1bcbcbab28fb5a7075884415477a1c86fde3ccad3fb1275b55a1cca92a9b98fe87be83ab81c8c59dc89631623aa3fda249 SHA512 22f8374b34e2c431582e467af0ef5166ae3a03454710f96b097ccded548e573cee90fd0c12c176ef64de244f3a59d63f7b19d0b1596fcb140d5773ea70653368 -EBUILD bglibs-2.04-r3.ebuild 1910 BLAKE2B e5f82a861766e690ccad567b1f92f3cc340a4d9df613e86f0e64fa4cba4096dbcf643b2d1d97703fdddc3f4859f2dea5f14eedad9a3e782053be7ab47868cecb SHA512 37ecff70605615dde36cafc733d03cd7f5bd1d24f4fd43fd27e9d49aad49d4c2d09931b77e4b6093710f1ed6e6967787583cea19e0547771f4bc3ad17eaeb450 +EBUILD bglibs-2.04-r3.ebuild 2526 BLAKE2B dc4e42d4f9601a1a3e197113096f75f8f7979fa84c5f59f45c8442e18f80ddc5e335a6c1cf8ae99e4eea3957bab28b20dbfaed11d37b9a7fd4538ff2b563f46e SHA512 4c8f4bf6849931a000544491bb9f158f5c1d9bf092358808436ba793eda698f7c04a49303ffe4c0fc3a13b4f22f30c5aa802fa033b155821f2e683443cd4d323 MISC metadata.xml 168 BLAKE2B 2e0e000b4c3b6ca04c12903fdbe278415c05a822623c52e9aa95cbbf3d50bcb1246b7edbda7d2f6b559af8950c6374e6e0a69b76319964cfe686bf50b0604a57 SHA512 4dcf45d1809e8390a2d8155c8ebfe0dd610203e392aeab0ccd8a10f42cc8532a4925eff32b35e7a6c35598a4efd288229034ec0732299dbd8cfa0acff705fed3 diff --git a/dev-libs/bglibs/bglibs-2.04-r3.ebuild b/dev-libs/bglibs/bglibs-2.04-r3.ebuild index cf69431cce50..1327b6161114 100644 --- a/dev-libs/bglibs/bglibs-2.04-r3.ebuild +++ b/dev-libs/bglibs/bglibs-2.04-r3.ebuild @@ -34,9 +34,22 @@ PATCHES=( src_prepare() { default - # disable tests as we want them manually + + # Remove the tests from the default target so that we can run + # them only when the user has enabled them. sed -i '/^all:/s|selftests||' Makefile || die sed -i '/selftests/d' TARGETS || die + + # The selftests.sh script collects the list of tests to run by + # grepping for "#ifdef SELFTEST_MAIN", which is defined in each *.c + # file to be tested. We can therefore disable individual tests by + # clobbering that line. (This should be safe; the contents of that + # ifdef are the test program, which we are disabling anyway.) + # + # This test requires network access, and currently fails even + # if you have it (https://github.com/bruceg/bglibs/issues/5). + sed -e 's/#ifdef SELFTEST_MAIN/#ifdef UNDEFINED/' \ + -i net/resolve_ipv4addr.c || die } src_configure() { diff --git a/dev-libs/c-blosc2/Manifest b/dev-libs/c-blosc2/Manifest index b0e6d64d148f..91ed77e627ca 100644 --- a/dev-libs/c-blosc2/Manifest +++ b/dev-libs/c-blosc2/Manifest @@ -1,3 +1,5 @@ DIST c-blosc2-2.15.2.gh.tar.gz 3174873 BLAKE2B f656b81689ff30c54fd977e3652c8ee4a74320f2b4d9e2b25aa909254ed6f94021cebc63c6ddc1878a0125f97b56fc6583152c3cfae445adc976149e2449d69f SHA512 6208c2cfdd19eedada0b3a264229b1f17dee09280a66ce7d22dfcee80fe320a6cd68b5cc64994852316b7987f319284a5de70d043feb84f3d756b3ef30b723f7 +DIST c-blosc2-2.16.0.gh.tar.gz 3278011 BLAKE2B b2b724c8b23868c73ffc4894d822f04d2c0112d789927b20dd6f5caecc1fe2ef7703bd794d6b7e0490eb524fc8b1b4ca62b9fa3a614059f2e42f0edb6788ecc8 SHA512 f3c1155bc48fa3d1c67adbc13d5273f4cc0f4c72cc557f6f7f227cefbcbb26bf217911ecd5df1156a4d4f1ab747f649ac0dae83e0418196b902a4575dc9ee98c EBUILD c-blosc2-2.15.2.ebuild 1488 BLAKE2B aa6fa8d8067e7d68ab520ef84e93ad971c34c81260ead49675ba02cd48da79cd0c01ef09404a95ef5048356b3e19c98e93a2ea617e4cde495d5b835acaf82f97 SHA512 e3f1ef57a6c2a397dd33cbd71dc2043d72c42d8779f2ccd2eaa4882f0cdadaaa79097d378cecaff2e3e9de5ca4db39998535f75017847700219914f7b23764e7 +EBUILD c-blosc2-2.16.0.ebuild 1493 BLAKE2B f0dab60ccf00888b2ebbbd3836a3516f4cc588ddc61ebfd6f9ad29758418a82fed6ca8554b2045f14351cb959a81e7b42d1d84c54f1271115bf75655534ec0f1 SHA512 3b2fc076a6d5ef76100a5aaebb5677ed59f379ddac900de575bcabbf2d28ccf520ce2de6b409adf88844102657e62e6715ee7e00f564334025adf520645c23f5 MISC metadata.xml 327 BLAKE2B 5fafd7f688780e7c5479d492da4943b9a95122d5c64e36e4415fe69a708f983f9463824981d771424c1c75f7236a159ef843738a0b31430ccd572770fbc5a74e SHA512 9d2aa06eb8e144bafe1c65b9c7704993633f9e1db629d77209e8c832e09de34c641d9f588cf208d8f5f65ff489c56f1e01ef573213439ba99678601d6a790ee0 diff --git a/dev-libs/c-blosc2/c-blosc2-2.16.0.ebuild b/dev-libs/c-blosc2/c-blosc2-2.16.0.ebuild new file mode 100644 index 000000000000..00ff5d98f4f1 --- /dev/null +++ b/dev-libs/c-blosc2/c-blosc2-2.16.0.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="Blocking, shuffling and lossless compression library" +HOMEPAGE=" + https://www.blosc.org/c-blosc2/c-blosc2.html + https://github.com/Blosc/c-blosc2/ +" +SRC_URI=" + https://github.com/Blosc/c-blosc2/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="BSD" +SLOT="0/4" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" +IUSE="test +zlib +zstd" +REQUIRED_USE="test? ( zlib zstd )" +RESTRICT="!test? ( test )" + +DEPEND=" + >=app-arch/lz4-1.7.5:= + zlib? ( sys-libs/zlib:= ) + zstd? ( app-arch/zstd:= ) +" +RDEPEND=" + ${DEPEND} +" + +src_configure() { + # remove bundled libs (just in case) + rm -rf internal-complibs || die + + local mycmakeargs=( + -DBUILD_STATIC=OFF + -DBUILD_TESTS=$(usex test) + -DBUILD_BENCHMARKS=OFF + -DBUILD_EXAMPLES=OFF + -DBUILD_FUZZERS=OFF + -DDEACTIVATE_ZLIB=$(usex !zlib) + -DDEACTIVATE_ZSTD=$(usex !zstd) + -DPREFER_EXTERNAL_LZ4=ON + -DPREFER_EXTERNAL_ZLIB=ON + -DPREFER_EXTERNAL_ZSTD=ON + + # force regular zlib, at least for the time being + -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB_NG=ON + + # upstream overrides CMAKE_C_FLAGS, preventing ${CFLAGS} defaults + # from applying, https://github.com/Blosc/c-blosc2/issues/433 + -DCMAKE_C_FLAGS="${CFLAGS}" + ) + cmake_src_configure +} + +src_test() { + # Tests fail in parallel, https://github.com/Blosc/c-blosc2/issues/432 + MAKEOPTS=-j1 cmake_src_test +} diff --git a/dev-libs/ell/Manifest b/dev-libs/ell/Manifest index 58395b01ef84..0edfbf914477 100644 --- a/dev-libs/ell/Manifest +++ b/dev-libs/ell/Manifest @@ -3,6 +3,8 @@ AUX 0.70/0002-cert-fix-std-c23-build-failure.patch 2125 BLAKE2B c4f0d18855a49076 AUX 0.70/0003-dbus-fix-std-c23-build-failure.patch 1504 BLAKE2B 622532f77ac5342fb814f946577f43849f51b464d6d73eaaa8484ee19f1898d28cbd9b5181a995f6daad1fbdecc5df07e54347d541cde06be48cacb56ccbbb2a SHA512 5eacf707ca8b71a6125bd3a48eec2b54071ba0d3e1d3d81c427fdefc41bd94f6c8b03fbac6dddc4c6fbd3bfeb195fef1c0bd822640f7ee3c886a18e5ba68242d AUX 0.70/0004-test-rtnl-fix-std-c23-build-failure.patch 1816 BLAKE2B 452b4e09ffc2bfd40cb653d1258b11a55aaddb3261c84cc627338edc781ad2e10ad647cde6b76f5ed461c5d890bf4299599971fcdcde3c375194c321f4a19b05 SHA512 ceeb9a29c79ca718c1150f3d5738ade94aa52c92d6a88eb33d481a136c3f627312c8c2f291123ace72c277ed1417722969c214746a48d2677d19fe8b45e2aeec DIST ell-0.71.tar.xz 574408 BLAKE2B ccd0f15504621c183b9f3e8d109f1f66c23d88b2e0773efc2347fabd147e2f45cca53fc49b4e972a9cf57d3623361bee2eb6864a19523624cb1ca0b4203556f2 SHA512 2e75dda61185d545edfc60157ff94cff6562e6fd4580d2613e189651f4cfc0a1fa6e1408275a790c37705073e67607778a4fdf0200faee7d9b0e25b2bcbf659d +DIST ell-0.72.tar.xz 582352 BLAKE2B 8e1dfdc1d61c8d1975cd28f1ee961d2d4ba689a736e4b21f7e9e3cca319f514770738bcdfbc7893df4a07ccb75f0b1d282280d631ee53b4dd002e1561c13545b SHA512 40917478291aeca536f79af366fa3cf83ddfd917a42a26bea00cf8f4c60f206839bf427e7fe4dc1e3417e45ea05d80a08616850646543da06316e11ea2505739 EBUILD ell-0.71.ebuild 1296 BLAKE2B a5453b031c599df714f6499b49287e3b95e8aeb18239a82df124e3e107daf72916f33dda1cb5fb6e01ee23b14a89a644ef78bd5a70b96d931042d82054e7e15e SHA512 6eb6de16d13d811fcb013d6b45e1b565c65ded0068a5c8cec64c94bd52083682cdea72bda4e6641adbdddc81c4f551bba5a2bd10679dbe12ce83198108ab6e66 +EBUILD ell-0.72.ebuild 1302 BLAKE2B a4f8c57859e90b883dd3b59658622d375f62d191f54f81b6757532f2d69bcdba7fcf781322b8171a8aa1ca62b39deebbbbf1d9d9d0ce0f67fd2607c00a80c141 SHA512 d9ec1d4c3b2670621b62a94457235553cee107e0678dc5fc5e447a7c0e6ebd0492fd071c1af9801ed913ea12549600b85f2d45cc931275925998fef8e256a369 EBUILD ell-9999.ebuild 1205 BLAKE2B e1dd3bc3e8d0da0757b52ef4af94cb63b2336f5a1524198532e757f10f2825c5d2663c6b5ea431c8a9d75344dbacd5536786867243292c434a136a4f92380753 SHA512 1d8d958b73087fb3dea18458fb72c08fa4ad7dce7e9173183ceef10a80f1a4186a3c9c62ebfccf4b6f622069570f69c473c46d5474a4fc834060952c160b3c29 MISC metadata.xml 251 BLAKE2B a9af03a4a233a890a554ab68f1876580e3720a72c1f946ea6dbb82c49afd94243ea4017cd8a392fa2adea53c588646fd0ebccb948dde0340ec2ff05c0381fb99 SHA512 0837c31655f6a725b0fad20c8998a3a4645dc8049e14980b0097776cf59b4288276489dfddc149893f29844175eeb187a54af7d28690de4afe18ef9fd4c1f98f diff --git a/dev-libs/ell/ell-0.72.ebuild b/dev-libs/ell/ell-0.72.ebuild new file mode 100644 index 000000000000..09d88fbab270 --- /dev/null +++ b/dev-libs/ell/ell-0.72.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic linux-info + +DESCRIPTION="Embedded Linux Library provides core, low-level functionality for system daemons" +HOMEPAGE="https://git.kernel.org/pub/scm/libs/ell/ell.git" +if [[ "${PV}" == *9999 ]] ; then + inherit autotools git-r3 + EGIT_REPO_URI="https://git.kernel.org/pub/scm/libs/ell/ell.git" +else + SRC_URI="https://mirrors.edge.kernel.org/pub/linux/libs/${PN}/${P}.tar.xz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi +LICENSE="LGPL-2.1+" +SLOT="0" + +IUSE="pie test" +RESTRICT="!test? ( test )" + +DEPEND="test? ( sys-apps/dbus )" + +CONFIG_CHECK=" + ~TIMERFD + ~EVENTFD + ~CRYPTO_USER_API + ~CRYPTO_USER_API_HASH + ~CRYPTO_MD5 + ~CRYPTO_SHA1 + ~KEY_DH_OPERATIONS +" + +src_prepare() { + default + sed -i -e "s#/tmp/ell-test-bus#/tmp/ell-test-bus-$(uuidgen)#" \ + unit/test-dbus*.c unit/dbus.conf || die + [[ "${PV}" == *9999 ]] && eautoreconf +} + +src_configure() { + append-cflags "-fsigned-char" #662694 + local myeconfargs=( + $(use_enable pie) + ) + econf "${myeconfargs[@]}" +} + +src_install() { + default + + find "${ED}" -name "*.la" -delete || die +} + +src_test() { + # New dbus tests fail with >3 jobs, this should get fixed soon + emake -j1 check +} diff --git a/dev-libs/flatbuffers/Manifest b/dev-libs/flatbuffers/Manifest index 8fad5616efce..86e1d57af5fe 100644 --- a/dev-libs/flatbuffers/Manifest +++ b/dev-libs/flatbuffers/Manifest @@ -1,7 +1,5 @@ -DIST flatbuffers-24.12.23.gh.tar.gz 2326944 BLAKE2B d32d8f861cfb2eff23cdedda01d4e0bd2f203c4d4bf1d0ade1a06ce9caf9fcf3b43c58f2e5bf9014892c184f819ab8005b322d6e96b9f3c9b9c5624eef12642f SHA512 f97762ba41b9cfef648e93932fd789324c6bb6ebc5b7aeca8185c9ef602294b67d73aea7ae371035579a1419cbfbeba7c3e88b31b5a5848db98f5e8a03b982b1 -DIST flatbuffers-25.1.21.gh.tar.gz 2432983 BLAKE2B 5c869588cd0de48c31d37564050f6b254a5cb310ff5a46c5afd5fc05829b3ca686ff404749de8f3d33921bc1551a34d5da01bb2fdff0c4aa5c5ec97e43924487 SHA512 809366e176f4459ee3010b7c3e2c7e6f800fdf0c5cc2d39846885e793fd933602176aeecbfbdc92aec7dadbcd54fc8ba0d57741c034251078136262bdac10ce8 DIST flatbuffers-25.1.24.gh.tar.gz 2430616 BLAKE2B 36e74e8ed537e363edc74cdf7b58a9ae39f0f2d587ee2ac14f4bf14b22bb77b8f63b1c682d44c20be895cbf399f41fb194796c3598d0550c7bfe0f4b9ff90c43 SHA512 48694fa20e41ffefd2ee264f570e96516853da0bce66c3e29b40e66baa62fdc4e38642de395307e4503743e7e2034654211d3866406be2d44dc582b61dfc25f7 -EBUILD flatbuffers-24.12.23.ebuild 717 BLAKE2B a44084b2b1ea5af707fec9bf95beffb239026dba813b04933903c6f974f3f03a35ee0a42bcd613a0b42375747222c05baf1d6f380d1331b5169ed45fec60a97d SHA512 9e4926198bb76c4eb4df094853684aa1c19d8f427daa877006f4311f064d6c017f4668473dd600462f2b46460ed4ca24c4524d912c6119d49157c2519b2ab321 -EBUILD flatbuffers-25.1.21.ebuild 720 BLAKE2B bb886f740540a13c7b9f05f767e04f1986f66a08c2716be2aa023829d1633f9a364ac01b964acea51e5925861956c39e83132a03a664f75cdb599f7f20b1161a SHA512 d61ad6493dbee1c55c5d01515adc2d778d6ffaa40768deb6ee7cfedbd6be9e4da7859419a0773837f4fb207f66200872896f99a13d956e6d78d6c157dd940623 -EBUILD flatbuffers-25.1.24.ebuild 720 BLAKE2B bb886f740540a13c7b9f05f767e04f1986f66a08c2716be2aa023829d1633f9a364ac01b964acea51e5925861956c39e83132a03a664f75cdb599f7f20b1161a SHA512 d61ad6493dbee1c55c5d01515adc2d778d6ffaa40768deb6ee7cfedbd6be9e4da7859419a0773837f4fb207f66200872896f99a13d956e6d78d6c157dd940623 +DIST flatbuffers-25.2.10.gh.tar.gz 2299918 BLAKE2B f12b32fca1a15349aaba142907d2d66caa55bb73862b969b226d0356f7f68fbba74c9c3f643a944813c370cacf81735b6c80d054a70b8b442519f9c485bbd10d SHA512 7e6ae36b37c9fd322456312504156c8241852e07a2a23de6805eb2328b61b9f42b839d04b839f9d97623195721308437a1163a25071ca2af0d00a6417da74822 +EBUILD flatbuffers-25.1.24.ebuild 717 BLAKE2B a44084b2b1ea5af707fec9bf95beffb239026dba813b04933903c6f974f3f03a35ee0a42bcd613a0b42375747222c05baf1d6f380d1331b5169ed45fec60a97d SHA512 9e4926198bb76c4eb4df094853684aa1c19d8f427daa877006f4311f064d6c017f4668473dd600462f2b46460ed4ca24c4524d912c6119d49157c2519b2ab321 +EBUILD flatbuffers-25.2.10.ebuild 720 BLAKE2B bb886f740540a13c7b9f05f767e04f1986f66a08c2716be2aa023829d1633f9a364ac01b964acea51e5925861956c39e83132a03a664f75cdb599f7f20b1161a SHA512 d61ad6493dbee1c55c5d01515adc2d778d6ffaa40768deb6ee7cfedbd6be9e4da7859419a0773837f4fb207f66200872896f99a13d956e6d78d6c157dd940623 MISC metadata.xml 393 BLAKE2B 09ed92e4ac7f31d7961f36dc115c0f3f30b695ea6ade0ab131b40b04f9d9fd94bbd87e7711e3ac5e22355d438ddfe5ff211306d1378c7b0da453037c1be77aaa SHA512 02e1316eb953e5103d52292bdd4e5add290dd9ebafc5399efc4d13574393ca823f7fc915bf452d3a4c96e1766cd5eebca951b27ca4e08f8433f6b532fc766b02 diff --git a/dev-libs/flatbuffers/flatbuffers-24.12.23.ebuild b/dev-libs/flatbuffers/flatbuffers-24.12.23.ebuild deleted file mode 100644 index 07228e942d39..000000000000 --- a/dev-libs/flatbuffers/flatbuffers-24.12.23.ebuild +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake - -DESCRIPTION="Memory efficient serialization library" -HOMEPAGE=" - https://flatbuffers.dev/ - https://github.com/google/flatbuffers/ -" -SRC_URI=" - https://github.com/google/flatbuffers/archive/v${PV}.tar.gz - -> ${P}.gh.tar.gz -" - -LICENSE="Apache-2.0" -SLOT="0/${PV}" -KEYWORDS="amd64 ~arm arm64 ~loong ~riscv x86" -IUSE="static-libs test" -RESTRICT="!test? ( test )" - -src_configure() { - local mycmakeargs=( - -DFLATBUFFERS_BUILD_FLATLIB=$(usex static-libs) - -DFLATBUFFERS_BUILD_SHAREDLIB=ON - -DFLATBUFFERS_BUILD_TESTS=$(usex test) - -DFLATBUFFERS_BUILD_BENCHMARKS=OFF - ) - - cmake_src_configure -} diff --git a/dev-libs/flatbuffers/flatbuffers-25.1.24.ebuild b/dev-libs/flatbuffers/flatbuffers-25.1.24.ebuild index cdd8e1c2f807..07228e942d39 100644 --- a/dev-libs/flatbuffers/flatbuffers-25.1.24.ebuild +++ b/dev-libs/flatbuffers/flatbuffers-25.1.24.ebuild @@ -17,7 +17,7 @@ SRC_URI=" LICENSE="Apache-2.0" SLOT="0/${PV}" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86" +KEYWORDS="amd64 ~arm arm64 ~loong ~riscv x86" IUSE="static-libs test" RESTRICT="!test? ( test )" diff --git a/dev-libs/flatbuffers/flatbuffers-25.1.21.ebuild b/dev-libs/flatbuffers/flatbuffers-25.2.10.ebuild similarity index 100% rename from dev-libs/flatbuffers/flatbuffers-25.1.21.ebuild rename to dev-libs/flatbuffers/flatbuffers-25.2.10.ebuild diff --git a/dev-libs/gumbo/Manifest b/dev-libs/gumbo/Manifest index 28da6ca45069..397b6cff42e1 100644 --- a/dev-libs/gumbo/Manifest +++ b/dev-libs/gumbo/Manifest @@ -1,5 +1,5 @@ DIST gumbo-0.12.1.tar.gz 2115338 BLAKE2B 8c2d119ff622bb07a2d4f0a04b4e3d1db1d3609632f540618dcb47a94f3b0ef4bb72fae8f74e2dbe43b4a2311421eee5b4d371475efda068a04ac5e8f8b9b304 SHA512 df74bf00b20152306b71db5659d4bf35ef6098ad6937925301ee48c96772607d2ab8e49a5b262caa27a72d5f267762c85e1434690e6abbf7e67d63c4713346d7 -DIST gumbo-0.12.2.tar.gz 2113915 BLAKE2B b2bdcdba3746c2cc1e7bc09b9ee8409b2f03fad0ad42d95aed8fbcef1696d43d571898a1f5323b2aeab4d8a955a6ce89da30a1643edb0fc9b19027002740aa19 SHA512 258d93c0404b7dc35e1088cded02a394b2cbd0d08f3e7d0a3e32d859c2032efcc831687c7bc749e9bddb60d4f910bab741007bed1117d486a0d3fd194e22f4e7 +DIST gumbo-0.13.0.tar.gz 2114279 BLAKE2B 21dd11312b4c8043810d03b62949313f5e69abbef2cc032c5d2a5d5d9a65d4711a7473dc7d4e3fcde7b15ad5b9df8d18d2eb2b1bdae4ec0ed236092ac3331bdf SHA512 b87694179f35490fc25c6100c3bd81019926954e4838886d50698158e2a5bbb36f119cb086dfad05ff867a80b7bed8ada8bcbbf83bd1a151fb43921b66d9b61e EBUILD gumbo-0.12.1.ebuild 917 BLAKE2B 3868a6fcaddec9f93b87647143e410c0c6f5c98c1a0d66de1e0019d209a0af7373395f1027622014aeb33359ac40117608559f5c07864b6995f68db68f6b6d19 SHA512 eba877dc4b33e01bd232b9b166d763618f281639744c9f094817592637d62462b845c809b5b1ed79b4262808e27d306bd8921c291b4d7dd067bb5776e239b37c -EBUILD gumbo-0.12.2.ebuild 923 BLAKE2B 9b315bb953a04f7c3aeca124cfbf6858a387d05b9d8a6e5a28f4f5faa43a2877eb8b083bc28910cc31e4b0464cfdf3a35644885a69757232e85314bb3225430b SHA512 fe72b06b3c1aa205f63dbfba48ae2d658ed7a3272ba72fefdf904abdbdb28afadfb74dafbf7cfce36f36012a0a79d16104b34fd0d1a98c0c87e6aec849c3ef40 +EBUILD gumbo-0.13.0.ebuild 923 BLAKE2B cfa058592633baa731cb078f812a7d9f6fd7c1f2f059b0d51c697f46d8840756caa9e7e65305717c50b9e520dbade99196c3cbb05a519e4c2b0d16c7d9671fc5 SHA512 e5a6cfebfb9d925531513c9effa5dcaff94087296a70db0c66682710e40afa6652c5856745f182da982cd8dfccf18ba70487104fd71df4aa1cf362ea4a9212d4 MISC metadata.xml 496 BLAKE2B 2d2b8386236aeae2ae0105c159edc09def3c6eacf313e2a36b72cad938a028aa4104643ff9f4ac35afa2a531f11461adeaf7e8c3e8f7e100609c5117aa4beb9c SHA512 2dc0531551fd29f33c9bae8b74c60830ec7fdf4c3fbca4629b25af5381172011e55c7a4fa38a817b8214ffbd8f5107e4c3e21fc8adeccfe55fd2e33fc1bd52e1 diff --git a/dev-libs/gumbo/gumbo-0.12.2.ebuild b/dev-libs/gumbo/gumbo-0.12.2.ebuild deleted file mode 100644 index 0bef4a333911..000000000000 --- a/dev-libs/gumbo/gumbo-0.12.2.ebuild +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit autotools - -DESCRIPTION="The HTML5 parsing algorithm implemented as a pure C99 library" -HOMEPAGE="https://codeberg.org/grisha/gumbo-parser" -SRC_URI="https://codeberg.org/grisha/gumbo-parser/archive/${PV}.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/gumbo-parser" - -LICENSE="Apache-2.0" -SLOT="0/2" # gumbo SONAME -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-macos ~x64-macos ~x64-solaris" -IUSE="doc test" -RESTRICT="!test? ( test )" - -DEPEND="test? ( dev-cpp/gtest )" -BDEPEND="doc? ( app-text/doxygen )" - -src_prepare() { - default - eautoreconf -} - -src_compile() { - default - - if use doc; then - doxygen || die "doxygen failed" - HTML_DOCS=( docs/html/. ) - fi -} - -src_install() { - default - use doc && doman docs/man/man3/* - - find "${ED}" -name '*.la' -delete || die -} diff --git a/dev-libs/gumbo/gumbo-0.13.0.ebuild b/dev-libs/gumbo/gumbo-0.13.0.ebuild new file mode 100644 index 000000000000..dcd1158d30be --- /dev/null +++ b/dev-libs/gumbo/gumbo-0.13.0.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="The HTML5 parsing algorithm implemented as a pure C99 library" +HOMEPAGE="https://codeberg.org/grisha/gumbo-parser" +SRC_URI="https://codeberg.org/grisha/gumbo-parser/archive/${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/gumbo-parser" + +LICENSE="Apache-2.0" +SLOT="0/3" # gumbo SONAME +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="doc test" +RESTRICT="!test? ( test )" + +DEPEND="test? ( dev-cpp/gtest )" +BDEPEND="doc? ( app-text/doxygen )" + +src_prepare() { + default + eautoreconf +} + +src_compile() { + default + + if use doc; then + doxygen || die "doxygen failed" + HTML_DOCS=( docs/html/. ) + fi +} + +src_install() { + default + use doc && doman docs/man/man3/* + + find "${ED}" -name '*.la' -delete || die +} diff --git a/dev-libs/hipother/Manifest b/dev-libs/hipother/Manifest index 27e4a15a942e..5c5263e5497c 100644 --- a/dev-libs/hipother/Manifest +++ b/dev-libs/hipother/Manifest @@ -1,5 +1,7 @@ DIST hipother-6.1.1.tar.gz 33496 BLAKE2B 026967cb298a888df441d543d70478836036b81dc26c8284410076daf18eb28dc42f7d4b6aaf2bfaa8b6c957ada8244afc0e7c40882c0370bc2b6a0ae94ffaf8 SHA512 ca4d5df9e3138e845be051aace8fb02d84b879439e6bc9ca1551853f80f54b554b9cad1a91c6c114160b21d3ca62fa47a88e32efe60c0f475ff8b56f7f18b5d4 DIST hipother-6.3.0.tar.gz 37660 BLAKE2B 8af74369c769750575d55c7ab152af32f6b8ce06f65247fb1390900427c0a24282b4681dbd65e36241262423a793af48b432fc252d0fad5ac367c25f242e1865 SHA512 3bdd70e6ef34aeb51c7d973f73cf3b761016659892c57719cc85d123e8212e4510c5d799563d20cea9de441e983ed148900c6656784a0cc28d0f67c4ea91c99e +DIST hipother-6.3.2.tar.gz 37656 BLAKE2B 23a29c674cec1dd6f99b24f901cd27883356c67c925156b34757c186a3105377a2d6c207338b8593de5af16b9f7a7b6ee8a528ab0cbfe93a3a57f5843a9b0a60 SHA512 d783a5356d71bc5dcf333d878c0cb44e306c29a7752a4d891300243682b04cfb6807c410e8b63d4fd5e1cb045554266477535fbd352bcbb65a242f5ee1f9d3db EBUILD hipother-6.1.1-r1.ebuild 526 BLAKE2B 7cd2158e5ce40377f12b3fcfae7b6e643e1291ab8db0140683cf951501e8c6fc6f41209f35fcc6767606454bafe75a7078e401ec63b7d7264c5b4295d6372cf5 SHA512 da00f3a364015cc29508b51dbb7cd3533854ecd13ca300826738c50e9264a3e16131d7ccc5ad5b86f98b125a469b659fb5eb4b3bb293a2a82e92cea08a00db39 EBUILD hipother-6.3.0.ebuild 526 BLAKE2B 7cd2158e5ce40377f12b3fcfae7b6e643e1291ab8db0140683cf951501e8c6fc6f41209f35fcc6767606454bafe75a7078e401ec63b7d7264c5b4295d6372cf5 SHA512 da00f3a364015cc29508b51dbb7cd3533854ecd13ca300826738c50e9264a3e16131d7ccc5ad5b86f98b125a469b659fb5eb4b3bb293a2a82e92cea08a00db39 +EBUILD hipother-6.3.2.ebuild 526 BLAKE2B a65521689aeaa114129f0bb8d30ffee81ba53592809b5327ba9228bbd00b904970ebc3aaca69baf5d247e07e72fc23fd3f220e3c04cbb4370a206917b5f9c6e3 SHA512 1b9d2ab860ef35fdd5055f5d4660aa0ce8fb9f20d1e87f75d9947a8249d7975db5178897c8d9edd34897509a702c638ed668bd1d6ca94439cdaa341496eefbb3 MISC metadata.xml 415 BLAKE2B 20cf4a7c600ec912dbc5e93a8908f17cb463c3ab4d661023ff6b771f6d97308b075b5bd52e4bdf9d4ed7fb6c1d570c59decc410dba3310ce78f623c5938f5174 SHA512 6020bf53a35b25587f80d0aa10f4d2c047c13726171b570efd56e282387adfd84443fd5e565603fa96e0c64a965151a4afcdeb19c3903b4ec3949739a4c887e7 diff --git a/dev-libs/hipother/hipother-6.3.2.ebuild b/dev-libs/hipother/hipother-6.3.2.ebuild new file mode 100644 index 000000000000..b580389fc332 --- /dev/null +++ b/dev-libs/hipother/hipother-6.3.2.ebuild @@ -0,0 +1,22 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="ROCclr runtime implementation for non-AMD HIP platforms, like NVIDIA" +HOMEPAGE="https://github.com/ROCm/hipother" +SRC_URI="https://github.com/ROCm/hipother/archive/refs/tags/rocm-${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/hipother-rocm-${PV}" + +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~amd64" + +RDEPEND=" + ! - - - - 0xd34df00d@gmail.com - Georg Rudoy - - - proxy-maint@gentoo.org - Proxy Maintainers - - - kypeli/kQOAuth - - diff --git a/dev-libs/kweathercore/Manifest b/dev-libs/kweathercore/Manifest index 6e7335d9d6f3..4aae0ec7a7a5 100644 --- a/dev-libs/kweathercore/Manifest +++ b/dev-libs/kweathercore/Manifest @@ -1,7 +1,5 @@ DIST kweathercore-24.08.3.tar.xz 75416 BLAKE2B 1e61a17ae4d5ced5879af63975fcdcba3215a75ebe97fd2d616b92d7c7b8104423049371d3494b884b401c200b2fb441c74d164f24d7fa099bdbabfa728dc338 SHA512 a9b128e4e939c567f32e14a4401a7ab101e8364d8c9c0c0386f72f00d879748637aebcb8e45c5f75324555e2213bb21bb76bc368884d6f70f7057a5392c607ae -DIST kweathercore-24.12.1.tar.xz 75796 BLAKE2B 08af40e4a2459457149b51e301c18b1f349b55ba41a1270f56be914a34bb2a39d346a574aae93f2dc63ec9c1964ff4c5375f16e2d588d2c644d5acb666d71363 SHA512 04aea2f072725a8f850aca0b98c87e9605b46999a355e2590f251369054a512b358d032fedede71d057e9ec622136549eec05f0680d5acc93d67bf6f2ffdc32b DIST kweathercore-24.12.2.tar.xz 75832 BLAKE2B dda0402cf111e7d698dda120eb5d8e6d9fd47231f6c7a1c807621dda713719a5cffff5b1621239083840025aa91d6f88beed3c5cb4c3f46be8e04e9093bae8a6 SHA512 f8f35510b621b69954db741d4f3f9f55c2c834cd7da4360186c63a2ba6fdb0db13b552846d9412f7863dc2376c0e1025a9f7420ca9aa2ac5333a421aed2bc21c EBUILD kweathercore-24.08.3.ebuild 675 BLAKE2B db9111e946fbd6912c3822e5dbde688298940aa7e54ef1dc459f1ab0ec0d1dff1f85b0250fe9a3c5511b6346d8b8ed2c205a9af1b97f31a3867119f3e94fdc2f SHA512 5e4d5fd26d0c5e9527c5c3a42f03c966ab7d35a4a0e39d60fad06b2fe651cf88554ddefc69ccb687b5b8a6e0c93207b98a81f4f3c7c0c2dfa8abb85c8a657dcc -EBUILD kweathercore-24.12.1.ebuild 677 BLAKE2B dea34003db8fcc4666726aef2ecda9d516413f2ec483cb34e9596b321755a575b5b0a98c0263dbe39444cd658df8de4bb6bd59235c2f136c8e97ba9480017dfc SHA512 4270fbd45f68e11b2f5aece126dcc49516bc67d19928abc629b3caf6210fa1c90891ce850c3bdb9d7558f61c664f8292d7742fb7e27bac051b2291dcb1681cf6 EBUILD kweathercore-24.12.2.ebuild 677 BLAKE2B dea34003db8fcc4666726aef2ecda9d516413f2ec483cb34e9596b321755a575b5b0a98c0263dbe39444cd658df8de4bb6bd59235c2f136c8e97ba9480017dfc SHA512 4270fbd45f68e11b2f5aece126dcc49516bc67d19928abc629b3caf6210fa1c90891ce850c3bdb9d7558f61c664f8292d7742fb7e27bac051b2291dcb1681cf6 MISC metadata.xml 384 BLAKE2B 67d34f806cf49bd1284a67a7624719b4d5bb33add29d6296f87564e3448ed673c50d6e4a2e6cba8ea7cc60ad7985838c8d3d24a7e8d3fcf5502d40851adb33cb SHA512 bc5196d60e89f50e5acac704e0e76e911cad6d9c1f2a44b9f15e38a435abaac50b706a3fbbe5ff5c114a5cfebac41d4e273042c9f8048cdfad43b630758e2b47 diff --git a/dev-libs/kweathercore/kweathercore-24.12.1.ebuild b/dev-libs/kweathercore/kweathercore-24.12.1.ebuild deleted file mode 100644 index 20744092c015..000000000000 --- a/dev-libs/kweathercore/kweathercore-24.12.1.ebuild +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -ECM_NONGUI="true" -ECM_QTHELP="true" -ECM_TEST="true" -KFMIN=6.7.0 -QTMIN=6.7.2 -inherit ecm gear.kde.org - -DESCRIPTION="Library for retrieval of weather information including forecasts and alerts" -HOMEPAGE="https://invent.kde.org/libraries/kweathercore" - -LICENSE="LGPL-2+" -SLOT="6" -KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" - -DEPEND=" - >=dev-qt/qtbase-${QTMIN}:6[network] - >=dev-qt/qtpositioning-${QTMIN}:6 - >=kde-frameworks/kholidays-${KFMIN}:6 - >=kde-frameworks/ki18n-${KFMIN}:6 -" -RDEPEND="${DEPEND}" - -CMAKE_SKIP_TESTS=( - locationquerytest - # bug 906392 - metnoparsertest -) diff --git a/dev-libs/libcdio-paranoia/Manifest b/dev-libs/libcdio-paranoia/Manifest index 4e387597b504..7ec8f9992054 100644 --- a/dev-libs/libcdio-paranoia/Manifest +++ b/dev-libs/libcdio-paranoia/Manifest @@ -1,4 +1,6 @@ AUX libcdio-paranoia-2.0.1-pass-NM.patch 3534 BLAKE2B ba200b7245b7a39a43275968d1b8f9f54e2abf22080a069894468da6a0e2911ad5307f12ae99fb6c60c4db3c316d327c466cc32fe002404e2c1f62c4e8505afa SHA512 e0b263699249e7d873b2040373419d395697cabf02d61fdcf576d162bde9b232caf891354c2d560767d5044c14cea48401453cff069c5f3c33322c25f97101d1 DIST libcdio-paranoia-10.2+2.0.1.tar.bz2 589075 BLAKE2B 9d2a2d288ccd13ca4ce38a894740085ef099f3e63e68e568d58e9a0609ace21002375431dde862f86352b6aec0c5374f65e64aeb4e39c3d59b406ae14bdee7a9 SHA512 c4a768d11e9f62038ca8081316596c89c7fee6a314229fb42e3999757fae172a5dc167175f60d555c2442266d34fce6ce627f4124e9f3a93d0456adb09ca91f0 +DIST libcdio-paranoia-10.2+2.0.2.tar.bz2 2450370 BLAKE2B 52774f2195633a6adbccbf28ba140ca3692726b879d6c98e16f9a398100b41b7533fbb38af30dc19ad8d8dd543ddcbd1a3afad5858cce4f46c15e09391228eca SHA512 ad199c14e77a097e3e9adda222eb42bea880fdf5d08fa3ae08df27e4685508a85d54d8b0c1a35fb043d550bf735890322efb4e0502b3507d6f9563151e3a36c0 EBUILD libcdio-paranoia-2.0.1.ebuild 1828 BLAKE2B 228f11d09860ae9c302e217c96ef699a8832e8804acb6a2b03bbf87d5a8f01920f5204b84040b25a33f57084f650309bb587dfd608051881d934d427b100e055 SHA512 f769dbcc4a33be8acc7775f355929ba609f63b9aca56e8674b8b6b67984299d9de36b9e29ab8fd4eb401fa53a76f9bb7415fe58ebfb7742b6665579791095756 -MISC metadata.xml 250 BLAKE2B 3e6dae5d5f3b3ac412806dd8615a1975c7ea8a64bfd72ad54f2c93a9b24c19c620ac3e8b26e1f6cadec899443e138ee4fb7a82ecb83c784d0c03ee91854d8622 SHA512 2bfce2cf73aefce6dda06ea351cb93b2990b9543f48be1ae5406a5a5acf2c34faed1eb2ce715eb689eb50a9a1add5576b39232eb818c233f5a5589e16032aca8 +EBUILD libcdio-paranoia-2.0.2.ebuild 1785 BLAKE2B 3a001013872b6fb5102540a7705e1963376a852976538be9392d2272ff843c1d9398028a64a0323ee22fe7b8d647f5dd58321af32f5b9338571bae00543c8c77 SHA512 f57721c398caf9302b9b3cbb621d80377178a20e14d34734e14f586632d4216a0d4223e9807548f938207f9357c8c3ff26f1b6aa43f65520d70d81c1b94b1a4e +MISC metadata.xml 556 BLAKE2B 34dfb2ccb41b10d7bb0535ab6c914ca6093497e2bff96262275cc628d5cebc918c12799dc5e02a38493e4b1a4ddb08edf1c6b6e2f09b83add32606da1542d18d SHA512 800a49b4e96c574e00473c00384e390239da38f912b7c55759f60a5a526bb8baf95ffe653fe4464b314066c345b2e3adad64c82886ad923a6f62905007400b83 diff --git a/dev-libs/libcdio-paranoia/libcdio-paranoia-2.0.2.ebuild b/dev-libs/libcdio-paranoia/libcdio-paranoia-2.0.2.ebuild new file mode 100644 index 000000000000..c5a55020f226 --- /dev/null +++ b/dev-libs/libcdio-paranoia/libcdio-paranoia-2.0.2.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# las Xiph's libparanoia was 10.2. Forks that superseeded it note that +# by declaring their version as 10.2+${PV} +MY_P=${PN}-10.2+${PV/_p/+} + +inherit autotools multilib-minimal + +DESCRIPTION="Advanced CDDA reader with error correction" +HOMEPAGE="https://www.gnu.org/software/libcdio/" +SRC_URI="mirror://gnu/${PN%-*}/${MY_P}.tar.bz2" +S="${WORKDIR}/${MY_P}" + +# COPYING-GPL from cdparanoia says "2 or later" +# COPYING-LGPL from cdparanoia says "2.1 or later" but 2 files are without the +# clause "or later" so we use LGPL-2.1 without + +LICENSE="GPL-3+ GPL-2+ LGPL-2.1" +SLOT="0/2" # soname version +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" +IUSE="+cxx static-libs test" +RESTRICT="!test? ( test )" + +RDEPEND=" + app-eselect/eselect-cdparanoia + >=dev-libs/libcdio-2.0.0:0=[${MULTILIB_USEDEP}] + >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] +" +DEPEND="${RDEPEND}" +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig + test? ( dev-lang/perl ) +" +DOCS=( AUTHORS ChangeLog NEWS.md README.md THANKS ) + +src_prepare() { + default + eautoreconf +} + +multilib_src_configure() { + local myeconfargs=( + --disable-example-progs + --disable-cpp-progs + --with-cd-paranoia-name=libcdio-paranoia + $(use_enable cxx) + $(use_enable static-libs static) + ) + # Darwin linker doesn't get this + [[ ${CHOST} == *-darwin* ]] && myeconfargs+=( --disable-ld-version-script ) + + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -type f -name '*.la' -delete || die +} + +pkg_postinst() { + eselect cdparanoia update ifunset +} + +pkg_postrm() { + eselect cdparanoia update ifunset +} diff --git a/dev-libs/libcdio-paranoia/metadata.xml b/dev-libs/libcdio-paranoia/metadata.xml index b69a849fd57e..9c2a548bb4b7 100644 --- a/dev-libs/libcdio-paranoia/metadata.xml +++ b/dev-libs/libcdio-paranoia/metadata.xml @@ -1,8 +1,14 @@ - - sound@gentoo.org - Gentoo Sound project - + + sound@gentoo.org + Gentoo Sound project + + + https://github.com/libcdio/libcdio-paranoia/issues + https://github.com/libcdio/libcdio-paranoia/releases + https://github.com/libcdio/libcdio-paranoia/wiki/ + libcdio/libcdio-paranoia + diff --git a/dev-libs/libcdio/Manifest b/dev-libs/libcdio/Manifest index 944a5a091b3a..df8272db3327 100644 --- a/dev-libs/libcdio/Manifest +++ b/dev-libs/libcdio/Manifest @@ -2,5 +2,7 @@ AUX libcdio-2.1.0-ncurses_pkgconfig.patch 923 BLAKE2B 848a76241ca173c452cf7b0414 AUX libcdio-2.1.0-no-lfs-shims.patch 2588 BLAKE2B 8a6fae6bcd84dfe14789ce268f808dbc10198089ba64b1825b690982847a5b40497a3b645020e5c68ccbbd221e1b8c4e978260ec4af06406d758f0809c346107 SHA512 1ea4bfa0684c7a3aa3c5769f779b1b025986b346eec811216c18f39e1e9fda35dc3916eaefc82ec05d72b56cae88373f98dea516739d082494f93b402c8e0871 AUX libcdio-2.1.0-realpath-test-fix.patch 1838 BLAKE2B 9e500479587a76925adc0bc6fed620e8a4880b45ca691ed0eb3aec4909ff48f14804a3d44405204d27d89628f050bb6f0f0d6342e483222e565d3613e97c550a SHA512 2395fb3cf9b56beeca6e91399be185d01ad460217ba144b5959d3941cdfca450795b0fab6466c471cb2714a4c004c3acf0097da1696cb33074d4aa0567feb504 DIST libcdio-2.1.0.tar.bz2 1759040 BLAKE2B 4859fc545cf81246279b7b0434c02916e874681b40d00f8253fd7837941a34c5a717a81b1c3b1714153ad343e03c28668984f6fd5647662ec4e6759752326cb0 SHA512 c290821da55fd9ae366670a58857aa6efcebc9f25b7caea063cf12f9cbda84fe770c5f59f972227fda50517ca58c5f39c0137daa0f93179e3daa45303d8b610f +DIST libcdio-2.2.0.tar.bz2 1729378 BLAKE2B fa5936138ea01e244fdf406b68bf0669f435a3d5ec94caae30e502d9a4ec87412fa4a33b1eb089000d1545105308f46df1a4e1e51862ea804c166c64e76c23b4 SHA512 815920ce381b70292751ca956b16e9b8a4e2b9327944e104e3e46d4df1457e49f9a772df527e8208e497941d2cc445361ffd42cd2ec3ff07526bc83711fc9501 EBUILD libcdio-2.1.0-r2.ebuild 2101 BLAKE2B e0c976d9f136640cf379e636a6983a72885a77e158b6e569c46ae52895d067e1d222d9a3795f983d6f26388060d6f1e8cdb7845e11e153b4c635bcdeaed179c7 SHA512 364574ffe10f96900afc288ba42ff1c223fb09c6716c5bd60c9151bc4eba475c96ff766f28f3f46760d53c11eef8200656b8628729893b98d26cd6ae87f9728e -MISC metadata.xml 607 BLAKE2B f3850b573e21dbfa2c9bb30265db3bb9db41408685f7aa6234b77f2cf73d8e304ebe8b2a4ff3f6bcb67a9291f38138c18f2740ac166a96cb45a94e5c1981a27d SHA512 b07c8e25ac87bb07ce32e4b92704f1c5bb0f52fb06ab77267655449e005b159589eefef1bf7bb2318ef98f83fe34ec2f224c29ce0aec41b665161fc1e5d123e8 +EBUILD libcdio-2.2.0.ebuild 2012 BLAKE2B e5496489090833a6c18dba5899d33edca01b6c797df621f3b63a8fd86ab81fc9a07e2711468ff4f72046986606838db88912681fec44a5db3b9c8e04ab368973 SHA512 d5eead7fe3dd2e499e611c2d79259cdc5e48f60f886a55dde44fba31f453f120c66388f3ff76f45f6eb62e4714173a59995294d172f3deb75d80d308b976ef39 +MISC metadata.xml 804 BLAKE2B 75f12d5b0b0c9460c23d7e0f2e712b74cb5be21d6f440f9c6a853d02283fd2e4c45975189b81a5b3cdc1ab9c0b5c367f288be4f161d3efe08306e4fb4ee95661 SHA512 8026220b99fcdef35e8a5468e3c68cb0e061bcc7de2d10b3868111135a79feebf1833e9f5c8a2b420289014b81994b23636160a01bd3e458f43f793af04ec8b3 diff --git a/dev-libs/libcdio/libcdio-2.2.0.ebuild b/dev-libs/libcdio/libcdio-2.2.0.ebuild new file mode 100644 index 000000000000..1d17143287f4 --- /dev/null +++ b/dev-libs/libcdio/libcdio-2.2.0.ebuild @@ -0,0 +1,81 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic libtool multilib-minimal + +DESCRIPTION="A library to encapsulate CD-ROM reading and control" +HOMEPAGE="https://www.gnu.org/software/libcdio/" +SRC_URI="https://github.com/libcdio/libcdio/releases/download/${PV}/${P}.tar.bz2" + +LICENSE="FDL-1.2+ GPL-2+ GPL-3+ LGPL-2.1+" +SLOT="0/19" # subslot is based on SONAME +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" +IUSE="cddb +cxx minimal static-libs test" +RESTRICT="!test? ( test )" + +RDEPEND=" + !minimal? ( + >=sys-libs/ncurses-5.7-r7:0= + cddb? ( >=media-libs/libcddb-1.3.2 ) + ) + >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] +" +DEPEND="${RDEPEND}" +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig + test? ( dev-lang/perl ) +" + +DOCS=( AUTHORS ChangeLog NEWS.md README{,-libcdio}.md THANKS ) + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/cdio/cdio_config.h + /usr/include/cdio/version.h +) + +PATCHES=( + "${FILESDIR}/${PN}-2.1.0-ncurses_pkgconfig.patch" +) + +src_prepare() { + default + + eautoreconf + elibtoolize # to prevent -L/usr/lib ending up in the linker line wrt #499510 +} + +multilib_src_configure() { + # -Werror=lto-type-mismatch + # https://bugs.gentoo.org/855701 + # https://savannah.gnu.org/bugs/index.php?65458 + filter-lto + + # Needed for fseeko64 on 32-bit builds + append-lfs-flags + + local util_switch="--with" + if ! multilib_is_native_abi || use minimal ; then + util_switch="--without" + fi + + local myeconfargs=( + --disable-maintainer-mode + --disable-cpp-progs + --disable-example-progs + --disable-vcd-info + $(use_enable cddb) + $(use_enable cxx) + $(use_enable static-libs static) + ${util_switch}-{cd-drive,cd-info,cdda-player,cd-read,iso-info,iso-read} + ) + # Tests fail if ECONF_SOURCE is not relative + ECONF_SOURCE="../${P}" econf "${myeconfargs[@]}" +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -name '*.la' -delete || die +} diff --git a/dev-libs/libcdio/metadata.xml b/dev-libs/libcdio/metadata.xml index af69d3a4320d..9eb0a9f55bab 100644 --- a/dev-libs/libcdio/metadata.xml +++ b/dev-libs/libcdio/metadata.xml @@ -13,6 +13,9 @@ - libcdio + libcdio/libcdio + https://github.com/libcdio/libcdio/issues + https://github.com/libcdio/libcdio/releases + https://github.com/libcdio/libcdio/wiki diff --git a/dev-libs/libei/Manifest b/dev-libs/libei/Manifest index a66f74a9d87d..05034b8b00d3 100644 --- a/dev-libs/libei/Manifest +++ b/dev-libs/libei/Manifest @@ -1,6 +1,8 @@ AUX 1.3.0-scanner-switch-to-using-dataclasses.patch 14276 BLAKE2B f187335730f31476cc42850741c36ab81f41df6298d370cdcc727a5ec4c2afcd3fb1f448cef7bcf5e369a88ace61bbf8e71f66acd933a0d4b43ece1e1baf8b18 SHA512 92c3710e38b06e0c40f01d8a1a46181f8ea500b61a69fd6105cd992ad6b33cd5fec1259b660dd1bb3befa96cfb905d1e701b8fbeedce02c2222f1fc37e400c56 AUX 1.3.0-skip-protocol-test.patch 675 BLAKE2B 1519b464a2322ab7c46ab449ccc0fb3f1e962b86f97151cefa56d43af2e0727768d58b730486ea2272e76c0d2cbbf2c02152bcf2b6ae615060900458a8df81bb SHA512 62086e3bb62538616eebba7e9e356df79f8c148280b0338557a8fd52a9134257c6d74a6ee11a3788b4da0c44242a65473559fb0d8a8ab3fae8cba8222896ef13 DIST libei-1.3.0.tar.bz2 175492 BLAKE2B cc5b0ae228a7282e0b5890280cab15cbb4c9179aa40140d6d01dc0d650bc1a646efd3d07dc6db0b501c3d203480d2df2bf3107e8b07e13b49eef8dcea59dd011 SHA512 a63b52c7251660404b307dba82ee24e31b64aaff7140acb174a33aeb60a07e59391522e2a5c56cd7bbdc45ab5e4a0e6111e214f2f1b79834b152e6ebc3e5e0c1 +DIST libei-1.4.0.tar.bz2 182498 BLAKE2B 251c35b0ad0b21896cf5600206646e904c508813bcfa9344954922b7b0156dd528987b9d3678edaf3fac14952996dc98fb1a07e8703ce7fde676e63d27a12553 SHA512 c5ac78687b8cbc174406d9b176968416496cd354a20b5861e2959be0cb361edc9437acad46de0013f78b204ec28594d044f79b00a6442e7bda513e283968270b DIST munit-fbbdf1467eb0d04a6ee465def2e529e4c87f2118.tar.gz 27724 BLAKE2B 9670c9b7a0b5d9ee6ec8df2dea9e241b043964ecf1fa3f6060ad1d16c40ab6afe47f53c6d4a791003e101a0b363263b858e6e4e445f868292753dd1ee7f7e3ce SHA512 26b5599fd12be627a692823ebf496fa446be7ed04a1233fb42e0667c05109b0f804f76646e289ac660fc815baf45f77ec8caf0ff2ea7fb0b4f87f0038a2b971c EBUILD libei-1.3.0-r2.ebuild 2516 BLAKE2B 5d5a1a75aa0db093971032f7b3b5176dd9015274c889e3416bbb735d47d973ddd9300ef397323ab49569344e2b2d1848ac7cc379cfd6ade36d5ac8f0f92ab0c3 SHA512 18ecaad4e2d66c63dc12478adca668dc9baff5f6fc4a6e55268020786eb51d5025344237c4f43acfdfc0e8b2e89a8daf2f1190eb5591e65ca6518994152c9abb +EBUILD libei-1.4.0.ebuild 2381 BLAKE2B 5f419e621e4459f694d006aaa95a1a320a6efdc7756f9b129cf975f66b8fcd282acb237576df8d2ac8e360dcf790ca6724dcd0c86cc41912f943aa3b4f4e7404 SHA512 423e3ee4e288187ccb355d1d4b631756b21f3dbb389c390b7073fe0adc5e67af94a7bf960d9012b4ea7250f075d300d7e372d9722a9ffe8dc58148f6742c7321 MISC metadata.xml 336 BLAKE2B 2fd4200876fa044f3563b0eea2096214af92fed1a8db009cf4885a7cf32f303b0a6911dba18cc8fac942348dbe2668ea2d50fabedd235e33be0793076ab0e5be SHA512 a26feb7d41edc6f728bfbaf805cfefa6bba4c5161e70785e7de5f389492f405f7cd6f2c55cce1d2c6bdf9af3aba17e1e51254d9e4421c4fab2e61f2c563c8f3f diff --git a/dev-libs/libei/libei-1.4.0.ebuild b/dev-libs/libei/libei-1.4.0.ebuild new file mode 100644 index 000000000000..10340c3c29fc --- /dev/null +++ b/dev-libs/libei/libei-1.4.0.ebuild @@ -0,0 +1,100 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit meson python-any-r1 + +DESCRIPTION="Library for Emulated Input, primarily aimed at the Wayland stack" +HOMEPAGE="https://gitlab.freedesktop.org/libinput/libei" +SRC_URI="https://gitlab.freedesktop.org/libinput/${PN}/-/archive/${PV}/${P}.tar.bz2" +MUNIT_COMMIT="fbbdf1467eb0d04a6ee465def2e529e4c87f2118" +SRC_URI+=" https://github.com/nemequ/munit/archive/${MUNIT_COMMIT}.tar.gz -> munit-${MUNIT_COMMIT}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="elogind systemd test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=dev-libs/libevdev-1.9.902 + || ( + systemd? ( >=sys-apps/systemd-237 ) + elogind? ( >=sys-auth/elogind-237 ) + sys-libs/basu + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + virtual/pkgconfig + $(python_gen_any_dep ' + dev-python/jinja2[${PYTHON_USEDEP}] + ') + test? ( + $(python_gen_any_dep ' + dev-python/pytest[${PYTHON_USEDEP}] + dev-python/python-dbusmock[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + dev-python/structlog[${PYTHON_USEDEP}] + ') + ) +" + +PATCHES=( + "${FILESDIR}"/1.3.0-skip-protocol-test.patch +) + +python_check_deps() { + if use test; then + python_has_version \ + "dev-python/pytest[${PYTHON_USEDEP}]" \ + "dev-python/python-dbusmock[${PYTHON_USEDEP}]" \ + "dev-python/pyyaml[${PYTHON_USEDEP}]" \ + "dev-python/structlog[${PYTHON_USEDEP}]" \ + || return 1 + fi + python_has_version \ + "dev-python/jinja2[${PYTHON_USEDEP}]" \ + || return 1 +} + +src_unpack() { + if [[ -n ${A} ]]; then + unpack ${A} + mv "${WORKDIR}"/munit-${MUNIT_COMMIT} "${WORKDIR}"/${P}/subprojects/munit || die + rm "${WORKDIR}"/${P}/subprojects/munit.wrap || die + fi +} + +src_prepare() { + default + + sed -i -e 's:^valgrind = .*:valgrind = disabler():g' test/meson.build || die +} + +src_configure() { + local emesonargs=( + -Ddocumentation="" + -Dliboeffis=enabled + $(meson_feature test tests) + ) + if use systemd; then + emesonargs+=(-Dsd-bus-provider=libsystemd) + elif use elogind; then + emesonargs+=(-Dsd-bus-provider=libelogind) + else + emesonargs+=(-Dsd-bus-provider=basu) + fi + meson_src_configure +} + +src_install() { + meson_src_install + + # munit subproject is installed but not wanted + if use test; then + rm "${ED}"/usr/lib*/libmunit.so || die + fi +} diff --git a/dev-libs/libffi/Manifest b/dev-libs/libffi/Manifest index acd471b171c5..2446ae3559dd 100644 --- a/dev-libs/libffi/Manifest +++ b/dev-libs/libffi/Manifest @@ -16,11 +16,14 @@ AUX libffi-3.4.6-sparc-struct-targs.patch 1440 BLAKE2B 5a9485f30b6f165e1121bbec4 AUX libffi-3.4.6-test-typo.patch 765 BLAKE2B 3c27254852f6ebb6f879ec9b98ccdcbdf4e2cb06a44a40078a2316924b35098291c9f375eac667939624ddba4542c725c7cdb200f26acb2f3d28420f8256dc45 SHA512 29a2de08179e9928fc235aa5fddf44cde50f72d5ba091b13d73afbc284523c7fec00f2f389b1de32fd78cbb6b90d3b6346a0d1b6b4553095c1fab8bc22fe326e AUX libffi-3.4.6-tests.patch 3398 BLAKE2B a3a6e7d1800ff27cb3bcfabd0a656ae47bfdcd3996083b4847bb7a78e2bc9256423bb8272663181227450996308dc4c73a9dc20d38ed6872c3b04aadfdf56439 SHA512 1153bf4cb32f5dfa873e11c932986a49cae2b48e6cfd04dba09f95399da8d19d0efdefe3b24e7a39970290513578db3170b9184f3f334ca03a0ad969fea5ff00 AUX libffi-3.4.6-x86-sse.patch 3535 BLAKE2B d6d3a0f16fa69ced4d1c6667e784ecae293415d21d807bbf245152c57b7b2cc14ece57471c43797232b1bab90139e31a518d4a0af050c79f25d75c0981bd2475 SHA512 bb47364794bc17bad6447c243c5b72f05645e236f3bf0a45ab7b6aa16acf392d9a993efed6cd70c795319bc4c4330f8f6df67a477fc5c00253b5f87c7ef9b4f1 +AUX libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch 1177 BLAKE2B bc0f4638c3a527eaa5cac8fd73a50fd0e2edad2ba4e288c3fa30eaeaab5b6f31d88f9552d70aaa2677a941696af101ea2d6f0d3288d9451ff2f917e98aedcec2 SHA512 7cf5f0c228529121b518c64ff2f13381e2d9a940e310bce345a23d63c19ce120d5905c2de5de6b2f507f1dbece741401709fb552c6564f3ba849e445a66f32d1 DIST libffi-3.4.4.tar.gz 1362394 BLAKE2B 189fe1ffe9507f204581b0ab09995dc7e7b761bb4eac7e338e9f5ff81431aebcef6c182c1839c9f9acb2706697a260c67e6d1351cf7e2aed7c4eb5d694f6f8fd SHA512 88680aeb0fa0dc0319e5cd2ba45b4b5a340bc9b4bcf20b1e0613b39cd898f177a3863aa94034d8e23a7f6f44d858a53dcd36d1bb8dee13b751ef814224061889 DIST libffi-3.4.6.tar.gz 1391684 BLAKE2B af8402a09bdbd59b4e9400d2d71bd5ce98f6f1d981d35d1ab40d77a831b13b32c5bd34ca54ff75999e39f0d8a9c066381fae7a8d6c5216d955e064f929f08b88 SHA512 033d2600e879b83c6bce0eb80f69c5f32aa775bf2e962c9d39fbd21226fa19d1e79173d8eaa0d0157014d54509ea73315ad86842356fc3a303c0831c94c6ab39 +DIST libffi-3.4.7.tar.gz 1393979 BLAKE2B 0dd17b4fd358beb9842889168437443137445a5dba1f0a7e8669ae420d8efb927815c08602c1b1b141acfdfdbaa12b417863402a5c8df5f36519fd3e772d3f37 SHA512 d19f59a5b5d61bd7d9e8a7a74b8bf2e697201a19c247c410c789e93ca8678a4eb9f13c9bee19f129be80ade8514f6b1acb38d66f44d86edd32644ed7bbe31dd6 EBUILD libffi-3.4.4-r4.ebuild 2540 BLAKE2B 6a85dd1d002e6ec61c57a4d5db58a20ff58e987da7ceb6630abfdd08ebd9f2fad574c29ab10d7a623310bb61b161e4c26c23a5d26af91e67bfa193d191e8a822 SHA512 f5d4049d6e5fe432321df11c0295a7bc579212eb5db54613d0ecc986975bdae1d9f26b9abcd9949db7e2efe156f4e5c9f8a90d870b9cf380308a848ad533c747 EBUILD libffi-3.4.6-r2.ebuild 2858 BLAKE2B 34b481067c36cc8bdabe8e1ce75443d0c3c776c5b85530aa0b0afe8b8c162c0dc14d8f255fe154c46d83553677ee5f8e9ad36ea336ad72326b373e00939a567c SHA512 c7d035d7aa67ee230d2050c9b3e63d3d75821e6a679f07799204f0bec12e9254def244abef0b7e98550221e6ac6ac3e6abfaddab6b35e687c5b386af4cc41680 -EBUILD libffi-3.4.6-r3.ebuild 2798 BLAKE2B ad5cef3fdf2b91ebbaada2f9b917cc179ab32750582f8f55648357336a5291119f8fa2b07ec1500d2dbb1e40134ac99d941cb65528c208ab4f8dbea437396719 SHA512 b429dffb3ca124a6a392b55bb9e7c61555dd1824b82140523e0de74289b0841b24d9d11f11ca40f8d99fe33c642b567a9736a2f7455f9519cc2f7db92b39ec9d +EBUILD libffi-3.4.6-r3.ebuild 2792 BLAKE2B d903460a6ad4e4726db1c868e1476399e56f3ab88d583aa9b7077f6bb0775602c89896189da2268b9810419f559b21914ecc814e1dc9cc598fa562456bd3e524 SHA512 f0eebc4f1a9bb9781f7d7f4cd84ab8e4149730f787898d77240adb52bcc671d77f3e1b4bbb8b474136067bca8370d68eb2b1dbba55339f90b2c10678d765386c EBUILD libffi-3.4.6.ebuild 2270 BLAKE2B a8af8687618bc1541f71db585727f33228b96c446729761accd7e2dc3ebd59de141e629371b97a3e7fc6e7c412f4696a7cac7e02ca8c271e103747f7c9d439b4 SHA512 6447b4fd561836bee7cd7148f1b2fdf7e100ffa292a1e94051aca03ed19acf5446f1db74241e6ecc445317f272b3773930f1184f25588658aa12234472897ce0 -EBUILD libffi-9999.ebuild 2434 BLAKE2B 92ace4cdabf80f2f920c9137140a2f81520413359f21714640d3ce0dfa9d39ea66d0e2e653dfd1c9566448a688ec4406a012f0d0c9c6fc374bccdd0fa4e4a183 SHA512 f0e0133ed6bf82f97289b002546e8777d9a38873b47d691fcbeb2ce0167c850e246307783dba13258fa8225ef278b5ad809cb7fec8dda50337f3290dc4551c6a +EBUILD libffi-3.4.7.ebuild 2534 BLAKE2B b834d3f2d3a44149e2d32068eac6072c373ee417cec4a28bf43682d8b80fe7a3deff4a69e31259e4372f9b12f270faa8d2df8e9425fab7d1af5a1ca57d7a78d9 SHA512 cf4af86505759d8d9ab948988a71bfebde8ca46f86a6cc71e77312a40aaa17916e4e1adc2d77a7f549c2abed0ae46e6518977883e3d34d263f9e7f7d18c53e3d +EBUILD libffi-9999.ebuild 2534 BLAKE2B b834d3f2d3a44149e2d32068eac6072c373ee417cec4a28bf43682d8b80fe7a3deff4a69e31259e4372f9b12f270faa8d2df8e9425fab7d1af5a1ca57d7a78d9 SHA512 cf4af86505759d8d9ab948988a71bfebde8ca46f86a6cc71e77312a40aaa17916e4e1adc2d77a7f549c2abed0ae46e6518977883e3d34d263f9e7f7d18c53e3d MISC metadata.xml 2110 BLAKE2B 2653be2cf09c047e45e489d7265d00165ddab2f94744988e4e8bca449bd1e40eeab74cb0b8d7d47a2d8b73563869460fcccb06e1fbccad697a9f213be362cb03 SHA512 e1a280792b929d38451fea1eb360053ed3a452592094f3e327ce4a4ff7eb8e0119435e8ee98f215585d8d98440512b5b68f92d1cd472a3bfd12e2f382e1981a1 diff --git a/dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch b/dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch new file mode 100644 index 000000000000..a8958b2fefdc --- /dev/null +++ b/dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch @@ -0,0 +1,38 @@ +From 4354fe1434a37b781ff19f5a6be51ec4e982ad5a Mon Sep 17 00:00:00 2001 +Message-ID: <4354fe1434a37b781ff19f5a6be51ec4e982ad5a.1739062746.git.sam@gentoo.org> +From: Sam James +Date: Sun, 9 Feb 2025 00:54:28 +0000 +Subject: [PATCH] Revert "Fix x86/ffi64 calls with 6 gp and some sse registers + (#848)" + +This reverts commit d21881f55ed4a44d464c9091871e69b0bb47611a. + +Bug: https://github.com/libffi/libffi/issues/879 +Bug: https://bugs.gentoo.org/949051 +Signed-off-by: Sam James +--- a/src/x86/ffi64.c ++++ b/src/x86/ffi64.c +@@ -654,7 +654,7 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + break; + default: + reg_args->gpr[gprcount] = 0; +- memcpy (®_args->gpr[gprcount], a, sizeof(UINT64)); ++ memcpy (®_args->gpr[gprcount], a, size); + } + gprcount++; + break; +--- a/testsuite/libffi.call/struct_int_float.c ++++ b/testsuite/libffi.call/struct_int_float.c +@@ -5,6 +5,7 @@ + Originator: kellda */ + + /* { dg-do run } */ ++/* { dg-skip-if "libffi bug #879" { *-*-* } { "*" } } */ + #include "ffitest.h" + + typedef struct + +base-commit: 1716f81e9a115d340429504563bc8e7fb2eeef2b +-- +2.48.1 + diff --git a/dev-libs/libffi/libffi-3.4.6-r3.ebuild b/dev-libs/libffi/libffi-3.4.6-r3.ebuild index e8471b2b545b..91b74d8b3c1a 100644 --- a/dev-libs/libffi/libffi-3.4.6-r3.ebuild +++ b/dev-libs/libffi/libffi-3.4.6-r3.ebuild @@ -17,7 +17,7 @@ if [[ ${PV} == 9999 ]] ; then else SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" fi S="${WORKDIR}"/${MY_P} diff --git a/dev-libs/libffi/libffi-3.4.7.ebuild b/dev-libs/libffi/libffi-3.4.7.ebuild new file mode 100644 index 000000000000..072cb92af743 --- /dev/null +++ b/dev-libs/libffi/libffi-3.4.7.ebuild @@ -0,0 +1,87 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-minimal preserve-libs + +MY_PV=${PV/_rc/-rc} +MY_P=${PN}-${MY_PV} + +DESCRIPTION="Portable, high level programming interface to various calling conventions" +HOMEPAGE="https://sourceware.org/libffi/" + +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://github.com/libffi/libffi" + inherit autotools git-r3 +else + SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" + + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +fi + +S="${WORKDIR}"/${MY_P} + +LICENSE="MIT" +# This is a core package which is depended on by e.g. Python. +# Please use preserve-libs.eclass in pkg_{pre,post}inst to cover users +# with FEATURES="-preserved-libs" or another package manager if SONAME changes. +SLOT="0/8" # SONAME=libffi.so.8 +IUSE="debug +exec-static-trampoline pax-kernel static-libs test" + +RESTRICT="!test? ( test )" +BDEPEND="test? ( dev-util/dejagnu )" + +PATCHES=( + "${FILESDIR}"/${PN}-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch +) + +src_prepare() { + default + + [[ ${PV} == 9999 ]] && eautoreconf + + if [[ ${CHOST} == arm64-*-darwin* ]] ; then + # ensure we use aarch64 asm, not x86 on arm64 + sed -i -e 's/aarch64\*-\*-\*/arm64*-*-*|&/' \ + configure configure.host || die + fi +} + +multilib_src_configure() { + # --includedir= path maintains a few properties: + # 1. have stable name across libffi versions: some packages like + # dev-lang/ghc or kde-frameworks/networkmanager-qt embed + # ${includedir} at build-time. Don't require those to be + # rebuilt unless SONAME changes. bug #695788 + # + # We use /usr/.../${PN} (instead of former /usr/.../${P}). + # + # 2. have ${ABI}-specific location as ffi.h is target-dependent. + # + # We use /usr/$(get_libdir)/... to have ABI identifier. + ECONF_SOURCE="${S}" econf \ + --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ + --disable-multi-os-directory \ + $(use_enable static-libs static) \ + $(use_enable exec-static-trampoline exec-static-tramp) \ + $(use_enable pax-kernel pax_emutramp) \ + $(use_enable debug) +} + +multilib_src_test() { + emake -Onone check +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -name "*.la" -delete || die +} + +pkg_preinst() { + preserve_old_lib /usr/$(get_libdir)/libffi.so.7 +} + +pkg_postinst() { + preserve_old_lib_notify /usr/$(get_libdir)/libffi.so.7 +} diff --git a/dev-libs/libffi/libffi-9999.ebuild b/dev-libs/libffi/libffi-9999.ebuild index 0f77bf10562f..072cb92af743 100644 --- a/dev-libs/libffi/libffi-9999.ebuild +++ b/dev-libs/libffi/libffi-9999.ebuild @@ -27,11 +27,15 @@ LICENSE="MIT" # Please use preserve-libs.eclass in pkg_{pre,post}inst to cover users # with FEATURES="-preserved-libs" or another package manager if SONAME changes. SLOT="0/8" # SONAME=libffi.so.8 -IUSE="debug exec-static-trampoline pax-kernel static-libs test" +IUSE="debug +exec-static-trampoline pax-kernel static-libs test" RESTRICT="!test? ( test )" BDEPEND="test? ( dev-util/dejagnu )" +PATCHES=( + "${FILESDIR}"/${PN}-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch +) + src_prepare() { default diff --git a/dev-libs/libical/Manifest b/dev-libs/libical/Manifest index 5c52de3a81e2..4ac7d40c1942 100644 --- a/dev-libs/libical/Manifest +++ b/dev-libs/libical/Manifest @@ -2,5 +2,5 @@ AUX libical-3.0.11-pkgconfig-libdir.patch 612 BLAKE2B 90b53adfb90684dd8c18f91a4d DIST libical-3.0.18.tar.gz 908948 BLAKE2B 0d3a665bce64752bbb1d28afea708643e6f52f19d5e5eae576aac40b720661e5c9593ff1e5ae48ef9a6c1b54259a7848847817ae669bbc8ef6b34bf1c7d90ee6 SHA512 53ecf6c14a68d569dd11bfdeb1a072def847a14d189c6af16eab202e004350ee7d9488c6b63e9cb67889e8c2dec90643fef46aec143a915f28270d0752eaa9d5 DIST libical-3.0.19.tar.gz 973744 BLAKE2B d3a8bc71cbef7014db23358b523691de7f32c071d5d978c79e94b7f21c4776bc9f88bd39df5ba552ce6e8e0f86beda13bbd14a73a11f21b1f45e020d2a15bb53 SHA512 32e5cac219801b40d8691deae6efae6fdaa64ca0968a72af5b27647958d44d79626c26c4e3675cfb284c2f1039c237c61ba2dd6030e9b1ea6a9d69296424240d EBUILD libical-3.0.18.ebuild 2375 BLAKE2B 269c845638db8f80350bdbacad5d22cb1cebb65ce22b3bdb738a737ff8e1495b2bac2ff7034fcdc965b10ebfc9ce3fc89b9701e70a1d9bc011e72b17db15c660 SHA512 006946681f4512bfe26c0f1a7aea7a2ef5a3da18bd4d7ee9560e8342f09f2631729640ca26864e9f01847c39852dc95a9a553347930e0bc76e2c2dae28fe355c -EBUILD libical-3.0.19.ebuild 2382 BLAKE2B 9e2e9d4671b1229174326e7e4b33bf8abcbfcc7ec5c5a0d221cf08f22f21c7aa602278ee801af83f2296497b3b4993ea11ace0d3368a081dbfcd2f0e9e08d4f7 SHA512 7896725e73cb6088fcdfc9f4a0f4ee8c1958eb375fe7394e1c88c276bb838cc12da927f9a18d5ada119d6676101f2fef8f5132902b9fb7d81ce5dba279b06b12 +EBUILD libical-3.0.19.ebuild 2376 BLAKE2B 29cb9d444684f8ff47107e2d87f8a005461a04122cb69be864414abbb910bbe81750bc052e98809d7ee221afc432141a3a74358ef5a062c7bb2dc67b9a776dc1 SHA512 5347b69027f12635b971a8f84ee816b3122938a2db34fd6c2b938feed23290ab40cee8b8936b8568a17f0cad72ce56791c6979812bcaf80d333ac45a745cb4c6 MISC metadata.xml 426 BLAKE2B bdc616f3bedfa391b56edde0bd0f350b171c1f9afa2a8a9e0166e71ecf1177946aae064bea9f48fb9933d24cb94fd784a299bd97b12ad7236b3483641a5dd763 SHA512 663bef7814dfd66077f1046094879c0ec1eb0165d616e85c08eb0ff9cecd3557afd31e7d8dda8f1e95aca6955d94818f3253c8b763ff135195d41b1b1e871d5c diff --git a/dev-libs/libical/libical-3.0.19.ebuild b/dev-libs/libical/libical-3.0.19.ebuild index 1ffc77e1b830..f666c7b5ef34 100644 --- a/dev-libs/libical/libical-3.0.19.ebuild +++ b/dev-libs/libical/libical-3.0.19.ebuild @@ -13,7 +13,7 @@ SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.gz" LICENSE="|| ( MPL-2.0 LGPL-2.1 )" SLOT="0/3" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos" IUSE="doc examples +glib +introspection static-libs test vala" REQUIRED_USE="introspection? ( glib ) vala? ( introspection )" diff --git a/dev-libs/libinput/Manifest b/dev-libs/libinput/Manifest index 84950cd7e7fd..d7796497329c 100644 --- a/dev-libs/libinput/Manifest +++ b/dev-libs/libinput/Manifest @@ -3,5 +3,5 @@ DIST libinput-1.27.0.tar.bz2 843722 BLAKE2B 342166bc48943a65e70be274a4b946769b27 DIST libinput-1.27.1.tar.bz2 844741 BLAKE2B 816977ea6fdc84c160523ad574801f818cdf9f8da5b0ebe30e04a71c2d1ebd15e1530cacf4d56893ef3e23fa14cd7bcd25b6ce6661adf291e8d7a9d4ab2b7752 SHA512 c8312000d7ce8c6f209b233177358c53dc830769cf2a80bd23ceebb408a0371de668846a5d1321b6ef803b3c17af5c0aba941ce5a2dc1fac6a0d5d791a13088b EBUILD libinput-1.26.2.ebuild 2373 BLAKE2B 05f4b599a866481fb5be923377db9b033214418fec1328ebaf83edb3dc94f7ca2014de9f2bd843fe57311bca22aede445d9e6cbdaba7b8bc66a7a7ed79edd9a1 SHA512 fb7a22f39d22340bb5f2a8e7a68b354cf34d5ff694cb542900631ad7f52e1c819c4edef20485c11ff79147fa8ce89520816ef98491550363741c33b2d7c0eee8 EBUILD libinput-1.27.0.ebuild 2374 BLAKE2B ae4b45bb29aa9fe6e9cf00df9a436414bb57fb84cd447cb741deccff18dd2598d125b056c427186b64b214fc45f3a1315bb15e5768260f0f34407f947f70eedf SHA512 7bc6d27303c9c6bea4ed07f075295864ceae3dd9cb54f47a3b8dc301dee9a4f17aaf0feca4208da2e97308017493fd650d79e1064d6cf6c7d995b7ecb3db55fa -EBUILD libinput-1.27.1.ebuild 2380 BLAKE2B 979af13fca07832ef74589cd275a268f7a04f16d90576613a4c60ba4e3b540ca9ab6e597b1e73b88e1be67efd0168784a351bb49331001ffc78b4d4090bc3cd7 SHA512 1845cf1bc55e7a8c2aa707a85805dd5992a9105d6c311cbdf56392012360d96959ccfc87c71753e0dafc41aa973c5720ee2b441327d3541f1cfb31582090c44e +EBUILD libinput-1.27.1.ebuild 2374 BLAKE2B ae4b45bb29aa9fe6e9cf00df9a436414bb57fb84cd447cb741deccff18dd2598d125b056c427186b64b214fc45f3a1315bb15e5768260f0f34407f947f70eedf SHA512 7bc6d27303c9c6bea4ed07f075295864ceae3dd9cb54f47a3b8dc301dee9a4f17aaf0feca4208da2e97308017493fd650d79e1064d6cf6c7d995b7ecb3db55fa MISC metadata.xml 339 BLAKE2B c649f0ffaad1b1dc76c3d3184d95356b2925f642ff6b96c3eba0c31a1d96c3d9b741c1348f8ec90d02428c30a836872fe4e42e7ab5f5e5197f4a787f9147a1a8 SHA512 e9aeca6cc4451ab5b622f597f8debaecfdc672244e5e0b687ac294c20009ba42fb2ccc45e7016a2427312e1c768259005e0a7ff53026087570382652ec23cb60 diff --git a/dev-libs/libinput/libinput-1.27.1.ebuild b/dev-libs/libinput/libinput-1.27.1.ebuild index 3b150a3add3f..c1dd8bf559e9 100644 --- a/dev-libs/libinput/libinput-1.27.1.ebuild +++ b/dev-libs/libinput/libinput-1.27.1.ebuild @@ -13,7 +13,7 @@ SRC_URI="https://gitlab.freedesktop.org/${PN}/${PN}/-/archive/${PV}/${P}.tar.bz2 LICENSE="MIT" SLOT="0/10" if [[ $(ver_cut 3) -lt 900 ]] ; then - 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" fi IUSE="doc input_devices_wacom test" RESTRICT="!test? ( test )" diff --git a/dev-libs/libintl/Manifest b/dev-libs/libintl/Manifest index d23b2c6ef388..393121f775c9 100644 --- a/dev-libs/libintl/Manifest +++ b/dev-libs/libintl/Manifest @@ -5,10 +5,10 @@ DIST gettext-0.22.4.tar.xz 10255384 BLAKE2B 3f93aa5aef8e40d2e01acaa5aeed11efefd0 DIST gettext-0.22.4.tar.xz.sig 833 BLAKE2B fbb00b53c807934a11263c120861971fffebbd39689eda1fae0fb956476e69c3fb6799440cbf3acfcf43ecea2c134ea4dadb95becbac98badb43e546f3c8e9fb SHA512 a774c98de643b1ea3df645e451878652c2baa5cd786642aa457e6d5f5c44787cb1231eb15ad4390acdf314822633acaffffaa853eb69cbbc72c3b79b547a8854 DIST gettext-0.22.5.tar.xz 10270724 BLAKE2B 18c383518f5a78b5c04cf76de976524da2a87a892a30d6386778bb4c7dd526ffc3f14f484906c5d3a513b7caf76ea560e53962b325e552182d6940055d798f24 SHA512 a60999bb9d09441f138214d87acb7e59aab81e765bb9253a77c54902681c5de164a5a04de2a9778dfb479dbdefaab2d5de1fbaf6095c555c43e7e9fd7a1c09bd DIST gettext-0.22.5.tar.xz.sig 833 BLAKE2B bb3e5ced34ab109f498347a3567103fe3491f69addb4a5ce25bf854fae1a11340eef1a9826b369d2416b53e5f7065aeebdb1609615f064cf7fb4151e82a5b4e5 SHA512 87f1df69206702be928b09a59a19ae4c23072cbc78ea16e76bfc4c929de76a3c0bb8e4eb2c3100c6e7b3b51d23e3b0e484c7e1d576ba7e25fd887934dc9ed8f7 -DIST gettext-0.23.tar.xz 11053572 BLAKE2B 208e5a73ed021c22357b1a1f0324dd7c9fa14b458b610c6f2fbd85f6541dd2bc23179c63dcd43000689482d8a6337f5255f501581d67ee2338ef3d50ec5e9c2e SHA512 1de09c0a83b1b4bb810abacbaf7c3e0fedbfbddea1cf7c89df3838c5f0a14cf58d686eb5876cfae302acb31c93beefb61a12c8a889a998fd235798699dc2c155 -DIST gettext-0.23.tar.xz.sig 833 BLAKE2B 5da93144e3d2eb745729b3f2d68e85ad508214b62694a22da7d37c6a3c9eaacd0d44339564b6373690dce29d9140a8af31ccea9e61726d2651ecc8234405b681 SHA512 25a6a2d1d9eb406b2be036b01f709a0badb84b70e23908c51fcbc1e26836510748f9623a075622271962d37bb859d4553755c6ed9832c1f39742ae1179b9292a +DIST gettext-0.23.1.tar.xz 11038556 BLAKE2B 08d10340f3d855a87a96594c6f2dcf72925394f02e86235090f8d272e0a27ce32e57a0fbaed61aaf61d7328ff30be076dccaecaa13832d8db3ec0a51786780b9 SHA512 d75908f73eabe36c01d72d342ca694dbefad5f43da54f0ccb43bfd0518baff5becc8f50e787f21fadb7c29b3123638e4559334ea4f8e48a97107e8c5e22453b6 +DIST gettext-0.23.1.tar.xz.sig 833 BLAKE2B 7ab3c5b76825fcd71371f25f0cc3d79704c5ae405f153917901f583f5780f3707f622522b2bac89dbf32a7bf281216ad7469608af490ad6072f12c81e472200a SHA512 8aa2ba38d863d15a91b526b8b22d5aa54e07bc9cf716a551338d4f7f4230288bfa1234d4628e28fcdb4dc4050786a233a194197ca247d98c939e4d06bca4c230 EBUILD libintl-0.21.1.ebuild 2709 BLAKE2B fbc0d73f6eb03a0cbca621c0f0fb8dd0e9f0768f05adb75c76eb46aaab69e202e3e7c1086cd1700a3b68b13549c5a22052cd330d07a8999383de7ae9020a786c SHA512 c607553c1bbc59cb767935c79c3dd9ce7b76abeb23d1e14b61d526295c98be17f47a8923148184f1035315cf4358ae6e86717c0bbfee603204180d623edf1b27 EBUILD libintl-0.22.4.ebuild 2659 BLAKE2B e5e3d3a828d20a8a008411a9f9f087d6a09aedbd7034acc4eb1d391128052320752eca2f6ccaff0323474168233c6a58905a352d3abc14973787023340d66439 SHA512 9911b2ae8634523ac1b129c9c215e92c22a71bc0d13de4d51292c0b3d1187d377d204016254ba29b5ea72d385e3febcde5bee79aaa4373e5b372a04f206a7ebc EBUILD libintl-0.22.5.ebuild 2746 BLAKE2B df42662396e4b6aeb39a523616c882f29900a239fd3f75f6d75951f3ac6f1d1c2367440619c878556d09521850c0761578f7f638444f8edf0c88577f004ce7a7 SHA512 f94891db7862731e4b71bd22e8acdbc3e6eabada6cc87ce770f2b80df7e2c8e427624969349b9625daa30b423a8f51a1c7fde07e28f473d59f0ee17fd66381ea -EBUILD libintl-0.23.ebuild 2713 BLAKE2B 3a4f5282c8b727c77cb33f24c8ddb13c9887f87a867bda68cee9bd09a867532e5ae2589d2b8af52722dc66c6d775afe918c6133f2386868d52a8000b407e334a SHA512 1557b77e281276918adeeaf1250acc8d618787dfb590e001abe45b3a5e3197cc27d3232369a49fbb3e5ef541fc635b0193f7b66f016e2c07b8a400a0919bf45c +EBUILD libintl-0.23.1.ebuild 2713 BLAKE2B 0a0717ccb01d9e5ac00d8640c87bce4fc4f6ec574226be8426fcfbf25eaf305b101e8ecfc10ddda4068e61bcec7e9074b899340ca2d04fae5c1b5084edb9cb08 SHA512 a90ab01a06c7aaa79cf29d15a5c0098af3915c720a14a333d87ddc316f5d05d1ba6ebd8ad3a902b32c0d3a224475b7475163a3e59df10dd7dd3bded3aac5382e MISC metadata.xml 254 BLAKE2B f3a9f843cf94243d1129711770df727fcdc8808bca829ef784819cab6f5410dfa463cfed85182f8228c7de796a674dd602653ad3ef817a62c0c3e7198b23befe SHA512 b9fcd3084a7e197f6138e1ce8b0eff99c4c203c37a7d5c40de207040ba1501ef0e5b2f4e00216a567037bcd6d3394fdec6ff587484c9ba2fca9d04f431733b7c diff --git a/dev-libs/libintl/libintl-0.23.1.ebuild b/dev-libs/libintl/libintl-0.23.1.ebuild new file mode 100644 index 000000000000..84fbf99bf0fc --- /dev/null +++ b/dev-libs/libintl/libintl-0.23.1.ebuild @@ -0,0 +1,105 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Note: Keep version bumps in sync with sys-devel/gettext. + +EAPI=8 + +MY_P="gettext-${PV}" +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/gettext.asc +inherit multilib-minimal libtool usr-ldscript verify-sig + +DESCRIPTION="the GNU international library (split out of gettext)" +HOMEPAGE="https://www.gnu.org/software/gettext/" +SRC_URI=" + mirror://gnu/gettext/${MY_P}.tar.xz + verify-sig? ( mirror://gnu/gettext/${MY_P}.tar.xz.sig ) +" +S="${WORKDIR}/${MY_P}/gettext-runtime" + +LICENSE="LGPL-2.1+" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="static-libs +threads" + +DEPEND=">=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]" +# Block C libraries known to provide libintl. +RDEPEND=" + ${DEPEND} + !sys-libs/glibc + !sys-libs/musl + ! -Date: Wed, 10 Jan 2024 07:13:55 +0800 -Subject: [PATCH] Add LoongArch float to integer conversion special cases - (#226) - ---- a/src/sljit/sljitConfigInternal.h -+++ b/src/sljit/sljitConfigInternal.h -@@ -198,7 +198,7 @@ extern "C" { - /* Type of public API functions. */ - /*********************************/ - --#ifndef SLJIT_API_FUNC_ATTRIBUTE -+#ifndef SLJIT_API_FUNC_ATTRIBUTE - #if (defined SLJIT_CONFIG_STATIC && SLJIT_CONFIG_STATIC) - /* Static ABI functions. For all-in-one programs. */ - -@@ -399,6 +399,10 @@ typedef double sljit_f64; - #define SLJIT_CONV_MAX_FLOAT SLJIT_CONV_RESULT_MAX_INT - #define SLJIT_CONV_MIN_FLOAT SLJIT_CONV_RESULT_MIN_INT - #define SLJIT_CONV_NAN_FLOAT SLJIT_CONV_RESULT_MIN_INT -+#elif (defined SLJIT_CONFIG_LOONGARCH && SLJIT_CONFIG_LOONGARCH) -+#define SLJIT_CONV_MAX_FLOAT SLJIT_CONV_RESULT_MAX_INT -+#define SLJIT_CONV_MIN_FLOAT SLJIT_CONV_RESULT_MIN_INT -+#define SLJIT_CONV_NAN_FLOAT SLJIT_CONV_RESULT_ZERO - #else - #error "Result for float to integer conversion is not defined" - #endif diff --git a/dev-libs/libpcre2/libpcre2-10.42-r1.ebuild b/dev-libs/libpcre2/libpcre2-10.42-r1.ebuild deleted file mode 100644 index 7a0d032915a5..000000000000 --- a/dev-libs/libpcre2/libpcre2-10.42-r1.ebuild +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/philiphazel.asc -inherit libtool multilib-minimal usr-ldscript verify-sig - -MY_P="pcre2-${PV/_rc/-RC}" - -DESCRIPTION="Perl-compatible regular expression library" -HOMEPAGE="https://www.pcre.org/" -if [[ ${PV} != *_rc* ]] ; then - # Only the final releases are available here. - SRC_URI="https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2 - https://ftp.pcre.org/pub/pcre/${MY_P}.tar.bz2 - verify-sig? ( https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2.sig )" -else - SRC_URI="https://ftp.pcre.org/pub/pcre/Testing/${MY_P}.tar.bz2" -fi - -S="${WORKDIR}/${MY_P}" - -LICENSE="BSD" -SLOT="0/3" # libpcre2-posix.so version -KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -IUSE="bzip2 +jit libedit +pcre16 +pcre32 +readline static-libs unicode valgrind zlib" -REQUIRED_USE="?? ( libedit readline )" - -RDEPEND=" - bzip2? ( app-arch/bzip2 ) - libedit? ( dev-libs/libedit ) - readline? ( sys-libs/readline:= ) - zlib? ( sys-libs/zlib ) -" -DEPEND=" - ${RDEPEND} - valgrind? ( dev-debug/valgrind ) -" -BDEPEND=" - virtual/pkgconfig - verify-sig? ( sec-keys/openpgp-keys-philiphazel ) -" - -MULTILIB_CHOST_TOOLS=( - /usr/bin/pcre2-config -) - -PATCHES=( - "${FILESDIR}"/${PN}-10.10-000-Fix-multilib.patch -) - -src_prepare() { - default - - elibtoolize -} - -multilib_src_configure() { - local myeconfargs=( - --enable-pcre2-8 - --enable-shared - $(multilib_native_use_enable bzip2 pcre2grep-libbz2) - $(multilib_native_use_enable libedit pcre2test-libedit) - $(multilib_native_use_enable readline pcre2test-libreadline) - $(multilib_native_use_enable valgrind) - $(multilib_native_use_enable zlib pcre2grep-libz) - $(use_enable jit) - $(use_enable jit pcre2grep-jit) - $(use_enable pcre16 pcre2-16) - $(use_enable pcre32 pcre2-32) - $(use_enable static-libs static) - $(use_enable unicode) - ) - - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" -} - -multilib_src_compile() { - emake V=1 $(multilib_is_native_abi || echo "bin_PROGRAMS=") -} - -multilib_src_test() { - emake check VERBOSE=yes -} - -multilib_src_install() { - emake \ - DESTDIR="${D}" \ - $(multilib_is_native_abi || echo "bin_PROGRAMS= dist_html_DATA=") \ - install - multilib_is_native_abi && gen_usr_ldscript -a pcre2-posix pcre2-8 -} - -multilib_src_install_all() { - find "${ED}" -type f -name "*.la" -delete || die -} diff --git a/dev-libs/libpcre2/libpcre2-10.42-r2.ebuild b/dev-libs/libpcre2/libpcre2-10.42-r2.ebuild deleted file mode 100644 index 020533611b16..000000000000 --- a/dev-libs/libpcre2/libpcre2-10.42-r2.ebuild +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/philiphazel.asc -inherit libtool multilib-minimal verify-sig - -MY_P="pcre2-${PV/_rc/-RC}" - -DESCRIPTION="Perl-compatible regular expression library" -HOMEPAGE="https://www.pcre.org/" -if [[ ${PV} != *_rc* ]] ; then - # Only the final releases are available here. - SRC_URI="https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2 - https://ftp.pcre.org/pub/pcre/${MY_P}.tar.bz2 - verify-sig? ( https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2.sig )" -else - SRC_URI="https://ftp.pcre.org/pub/pcre/Testing/${MY_P}.tar.bz2" -fi - -S="${WORKDIR}/${MY_P}" - -LICENSE="BSD" -SLOT="0/3" # libpcre2-posix.so version -KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -IUSE="bzip2 +jit libedit +pcre16 +pcre32 +readline static-libs unicode valgrind zlib" -REQUIRED_USE="?? ( libedit readline )" - -RDEPEND=" - bzip2? ( app-arch/bzip2 ) - libedit? ( dev-libs/libedit ) - readline? ( sys-libs/readline:= ) - zlib? ( sys-libs/zlib ) -" -DEPEND=" - ${RDEPEND} - valgrind? ( dev-debug/valgrind ) -" -BDEPEND=" - virtual/pkgconfig - verify-sig? ( sec-keys/openpgp-keys-philiphazel ) -" - -MULTILIB_CHOST_TOOLS=( - /usr/bin/pcre2-config -) - -PATCHES=( - "${FILESDIR}"/${PN}-10.10-000-Fix-multilib.patch -) - -src_prepare() { - default - - elibtoolize -} - -multilib_src_configure() { - local myeconfargs=( - --enable-pcre2-8 - --enable-shared - $(multilib_native_use_enable bzip2 pcre2grep-libbz2) - $(multilib_native_use_enable libedit pcre2test-libedit) - $(multilib_native_use_enable readline pcre2test-libreadline) - $(multilib_native_use_enable valgrind) - $(multilib_native_use_enable zlib pcre2grep-libz) - $(use_enable jit) - $(use_enable jit pcre2grep-jit) - $(use_enable pcre16 pcre2-16) - $(use_enable pcre32 pcre2-32) - $(use_enable static-libs static) - $(use_enable unicode) - ) - - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" -} - -multilib_src_compile() { - emake V=1 $(multilib_is_native_abi || echo "bin_PROGRAMS=") -} - -multilib_src_test() { - emake check VERBOSE=yes -} - -multilib_src_install() { - emake \ - DESTDIR="${D}" \ - $(multilib_is_native_abi || echo "bin_PROGRAMS= dist_html_DATA=") \ - install -} - -multilib_src_install_all() { - find "${ED}" -type f -name "*.la" -delete || die -} diff --git a/dev-libs/libpcre2/libpcre2-10.43.ebuild b/dev-libs/libpcre2/libpcre2-10.43.ebuild deleted file mode 100644 index 65eaa84b3ca7..000000000000 --- a/dev-libs/libpcre2/libpcre2-10.43.ebuild +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/philiphazel.asc -inherit libtool multilib-minimal verify-sig - -MY_P="pcre2-${PV/_rc/-RC}" - -DESCRIPTION="Perl-compatible regular expression library" -HOMEPAGE="https://www.pcre.org/" -SRC_URI=" - https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2 - https://ftp.pcre.org/pub/pcre/${MY_P}.tar.bz2 - verify-sig? ( https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2.sig ) -" - -S="${WORKDIR}/${MY_P}" - -LICENSE="BSD" -SLOT="0/3" # libpcre2-posix.so version -if [[ ${PV} != *_rc* ]] ; then - KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -fi -IUSE="bzip2 +jit libedit +pcre16 +pcre32 +readline static-libs unicode valgrind zlib" -REQUIRED_USE="?? ( libedit readline )" - -RDEPEND=" - bzip2? ( app-arch/bzip2 ) - libedit? ( dev-libs/libedit ) - readline? ( sys-libs/readline:= ) - zlib? ( sys-libs/zlib ) -" -DEPEND=" - ${RDEPEND} - valgrind? ( dev-debug/valgrind ) -" -BDEPEND=" - virtual/pkgconfig - verify-sig? ( sec-keys/openpgp-keys-philiphazel ) -" - -MULTILIB_CHOST_TOOLS=( - /usr/bin/pcre2-config -) - -PATCHES=( - "${FILESDIR}"/${PN}-10.10-000-Fix-multilib.patch - "${FILESDIR}"/${PN}-10.43-fix-loong-sljit.patch -) - -src_prepare() { - default - - elibtoolize -} - -multilib_src_configure() { - local myeconfargs=( - --enable-pcre2-8 - --enable-shared - $(multilib_native_use_enable bzip2 pcre2grep-libbz2) - $(multilib_native_use_enable libedit pcre2test-libedit) - $(multilib_native_use_enable readline pcre2test-libreadline) - $(multilib_native_use_enable valgrind) - $(multilib_native_use_enable zlib pcre2grep-libz) - $(use_enable jit) - $(use_enable jit pcre2grep-jit) - $(use_enable pcre16 pcre2-16) - $(use_enable pcre32 pcre2-32) - $(use_enable static-libs static) - $(use_enable unicode) - ) - - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" -} - -multilib_src_compile() { - emake V=1 $(multilib_is_native_abi || echo "bin_PROGRAMS=") -} - -multilib_src_test() { - emake check VERBOSE=yes -} - -multilib_src_install() { - emake \ - DESTDIR="${D}" \ - $(multilib_is_native_abi || echo "bin_PROGRAMS= dist_html_DATA=") \ - install -} - -multilib_src_install_all() { - find "${ED}" -type f -name "*.la" -delete || die -} diff --git a/dev-libs/libpcre2/libpcre2-10.44-r1.ebuild b/dev-libs/libpcre2/libpcre2-10.44-r1.ebuild index a8241ab04ee8..af9e44cfe85d 100644 --- a/dev-libs/libpcre2/libpcre2-10.44-r1.ebuild +++ b/dev-libs/libpcre2/libpcre2-10.44-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -9,7 +9,7 @@ inherit libtool multilib multilib-minimal toolchain-funcs verify-sig MY_P="pcre2-${PV/_rc/-RC}" DESCRIPTION="Perl-compatible regular expression library" -HOMEPAGE="https://www.pcre.org/" +HOMEPAGE="https://pcre2project.github.io/pcre2/ https://www.pcre.org/" SRC_URI=" https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2 https://ftp.pcre.org/pub/pcre/${MY_P}.tar.bz2 diff --git a/dev-libs/libpcre2/libpcre2-10.45.ebuild b/dev-libs/libpcre2/libpcre2-10.45.ebuild new file mode 100644 index 000000000000..eaf3934f0986 --- /dev/null +++ b/dev-libs/libpcre2/libpcre2-10.45.ebuild @@ -0,0 +1,102 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/nicholaswilson.asc +inherit libtool multilib multilib-minimal toolchain-funcs verify-sig + +MY_P="pcre2-${PV/_rc/-RC}" + +DESCRIPTION="Perl-compatible regular expression library" +HOMEPAGE="https://pcre2project.github.io/pcre2/ https://www.pcre.org/" +SRC_URI=" + https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2 + https://ftp.pcre.org/pub/pcre/${MY_P}.tar.bz2 + verify-sig? ( https://github.com/PCRE2Project/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2.sig ) +" + +S="${WORKDIR}/${MY_P}" + +LICENSE="BSD" +SLOT="0/3" # libpcre2-posix.so version +if [[ ${PV} != *_rc* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +fi +IUSE="bzip2 +jit libedit +pcre16 +pcre32 +readline static-libs unicode valgrind zlib" +REQUIRED_USE="?? ( libedit readline )" + +RDEPEND=" + bzip2? ( app-arch/bzip2 ) + libedit? ( dev-libs/libedit ) + readline? ( sys-libs/readline:= ) + zlib? ( sys-libs/zlib ) +" +DEPEND=" + ${RDEPEND} + valgrind? ( dev-debug/valgrind ) +" +BDEPEND=" + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-nicholaswilson ) +" + +MULTILIB_CHOST_TOOLS=( + /usr/bin/pcre2-config +) + +PATCHES=( + "${FILESDIR}"/${PN}-10.10-000-Fix-multilib.patch +) + +src_prepare() { + default + + elibtoolize +} + +multilib_src_configure() { + local myeconfargs=( + --enable-pcre2-8 + --enable-shared + $(multilib_native_use_enable bzip2 pcre2grep-libbz2) + $(multilib_native_use_enable libedit pcre2test-libedit) + $(multilib_native_use_enable readline pcre2test-libreadline) + $(multilib_native_use_enable valgrind) + $(multilib_native_use_enable zlib pcre2grep-libz) + $(use_enable jit) + $(use_enable jit pcre2grep-jit) + $(use_enable pcre16 pcre2-16) + $(use_enable pcre32 pcre2-32) + $(use_enable static-libs static) + $(use_enable unicode) + ) + + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" +} + +multilib_src_compile() { + emake V=1 $(multilib_is_native_abi || echo "bin_PROGRAMS=") +} + +multilib_src_test() { + emake check VERBOSE=yes +} + +multilib_src_install() { + emake \ + DESTDIR="${D}" \ + $(multilib_is_native_abi || echo "bin_PROGRAMS= dist_html_DATA=") \ + install + + # bug #934977 + if ! tc-is-static-only && [[ ! -f "${ED}/usr/$(get_libdir)/libpcre2-8$(get_libname)" ]] ; then + eerror "Sanity check for libpcre2-8$(get_libname) failed." + eerror "Shared library wasn't built, possible libtool bug" + [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && die "libpcre2-8$(get_libname) not found in build, aborting" + fi +} + +multilib_src_install_all() { + find "${ED}" -type f -name "*.la" -delete || die +} diff --git a/dev-libs/libtasn1/Manifest b/dev-libs/libtasn1/Manifest index c2edd78ffe52..f4f68b6f0e01 100644 --- a/dev-libs/libtasn1/Manifest +++ b/dev-libs/libtasn1/Manifest @@ -1,4 +1,7 @@ DIST libtasn1-4.19.0.tar.gz 1786576 BLAKE2B 6e8232590cd87da3bfd9182ed44eccdfbdfcc85e88d8cf19fffdb3d600e04694b77079b95bbd822d2c3fff29458ddae0f0440f9c1c19c711923a2507bd19270f SHA512 287f5eddfb5e21762d9f14d11997e56b953b980b2b03a97ed4cd6d37909bda1ed7d2cdff9da5d270a21d863ab7e54be6b85c05f1075ac5d8f0198997cf335ef4 DIST libtasn1-4.19.0.tar.gz.sig 228 BLAKE2B f45b8c53844fad4d1044ef6915d88337affb0287973a0ffab2d77a6a61c850cebdea6904f077fcc13a8bc29ba7cbbef7cdf2a5e325c8180d574020eb3cb9f432 SHA512 e0417625f8df22c6421914bf2d4f19d7f27260c24c04f50e59669681f326debe06ddef9dc5a2e20fda50feb30bbbf3f41597e64961257304ec2c407aa76d107e +DIST libtasn1-4.20.0.tar.gz 1783873 BLAKE2B 3219b48e691abd7f6f4e32164ab708bc7c29832a2a7669aa03751d4a519dffb78d5a5f94530a3f35cd6516b39400da9e634d7f46245ab934465c305a1d387561 SHA512 0c0660085f5e80537aa3d65197967029be6cc5e27d7029789713902989c1694fdb49421ae0415b79b953e11893bb4bdaada85f7aff847dd0bb4075c91887e7b4 +DIST libtasn1-4.20.0.tar.gz.sig 1223 BLAKE2B c9bff7ae5b7f4939e4df1c0d67b634a1fde57554a5dae26a20fbe600dd9d5b79239a04d1531acdf1f6dedf2eb06bc2bab46c432dbe6c9ad991d0e06b41dcf268 SHA512 bb5da128c20ed8f1e7c681c779ac3d2e455c661d779a4a7a70a6cabc1ea4139df9d0acfd145545acc8fe41df6490fd7d3c2df4b8d7560891291abbf56ac3afdb EBUILD libtasn1-4.19.0.ebuild 1395 BLAKE2B b75ea49c905f774f8ec0b4b772f3f10b9fdd1ad66d6d60402fb14b999921bd00c46ef1bc1a028e6fe3a08bbc530565e215d4abe2f32ef794c6a8f177c66f946c SHA512 23a629e917aae3df698f23404c4dd5ea97841669c7a40c960311eadc38c0183c12c91fc24be96a130d23091019cd554f5eb9ee4d4a618528ceb58a1e79169a6e +EBUILD libtasn1-4.20.0.ebuild 1414 BLAKE2B 0706829a27c785727a6ba661c60eb2d74cd1a011778588f6975ef5cd8f161d16298f1f91aecfa2ca55b2c0b05153fcf2c833c5811bd78ab33ab9603cdb81a00c SHA512 17b5cd388474212804862d04eedc240b3d07eed9c204107a4ed102c8e2fc1b109f4ffb807ad3a66baa818a177fcb14bd19d9de1ebe01d871d3127535b6558b9d MISC metadata.xml 471 BLAKE2B 57f918bc1af56fd8eaa3d9875ef27ac61903434a9a1897edf96ece97650474fdca4c55f24faa9a61efb930ad8562b0de89ca46798b0a3d04062aa9c02a542be3 SHA512 500c09d3ab2f02fe0078e7780d8c163d337e570186c744cd73724b18d294dcdd77f6237c90a67f32b0c2bd331aa1287f7e5b6f6c706c1bfa35e2b17131a87f80 diff --git a/dev-libs/libtasn1/libtasn1-4.20.0.ebuild b/dev-libs/libtasn1/libtasn1-4.20.0.ebuild new file mode 100644 index 000000000000..adaefbd8d210 --- /dev/null +++ b/dev-libs/libtasn1/libtasn1-4.20.0.ebuild @@ -0,0 +1,54 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libtasn1.asc +inherit multilib-minimal libtool verify-sig + +DESCRIPTION="ASN.1 library" +HOMEPAGE="https://www.gnu.org/software/libtasn1/" +SRC_URI="mirror://gnu/${PN}/${P}.tar.gz" +SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${P}.tar.gz.sig )" + +LICENSE="LGPL-2.1+" +SLOT="0/6" # subslot = libtasn1 soname version +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="static-libs test" + +RESTRICT="!test? ( test )" + +BDEPEND=" + sys-apps/help2man + app-alternatives/yacc + verify-sig? ( >=sec-keys/openpgp-keys-libtasn1-20250209 ) +" + +DOCS=( AUTHORS ChangeLog NEWS README.md THANKS ) + +src_prepare() { + default + + # For Solaris shared library + elibtoolize +} + +multilib_src_configure() { + # -fanalyzer substantially slows down the build and isn't useful for + # us. It's useful for upstream as it's static analysis, but it's not + # useful when just getting something built. + export gl_cv_warn_c__fanalyzer=no + + local myeconfargs=( + --disable-valgrind-tests + $(use_enable static-libs static) + ) + + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" +} + +multilib_src_install_all() { + einstalldocs + + find "${ED}" -type f -name '*.la' -delete || die +} diff --git a/dev-libs/libvformat/Manifest b/dev-libs/libvformat/Manifest index da5b3b0e1019..98a5f07cdcbf 100644 --- a/dev-libs/libvformat/Manifest +++ b/dev-libs/libvformat/Manifest @@ -1,7 +1,10 @@ AUX libvformat-1.13-has_unistd.patch 216 BLAKE2B 088a3394b55a96f4d744f5c8f5b482dcbf6bbaedb6770ad6255b3dfa78bc16bb2bbb11774dc3799d77328b08e45d638b5676d3b174fa7c1d8c1974364a748200 SHA512 3a953942b2d19e6296bf55ed13175527a5def938209b55db646460b1c50be43e5fae1a0b7a68d7adb1946178bd21df5f260f07876160ce02887c168fba5fde88 AUX libvformat-1.13-str.patch 561 BLAKE2B e914d003a99449eb3c1b85c7385cae24eb4aea73962d30d3ea05667f583a1f0c2d9214e75837647193adb8038c789d00e410dfe26fcd66bf1aae197d2382fd02 SHA512 f34c993ad54cfc87505147cb9023807cff08c8c6b70630f1110f6bb20c5054f749ebf0f473c56be62dc9a5034903df2659416742bb5a9e40b300e65e15df45c9 +AUX libvformat-1.13-time_t.patch 1060 BLAKE2B d706ae40dc9db941852bea9c51c55c2bdc26ee8b9eab3016572e81c16ce53b84584abc94e1c7ec7b9ee8093e3734b0d2ed7840ffdd1546628af5e0250f3b1ed9 SHA512 24c955436e09baf22f776c009c6d537e9a0f1efede7870e7627b9e365cb2783f20d73c6283b02fb3e2b365b2f00bea0a628c1fa4b31b369b0b16b44cb9ec1491 AUX libvformat-nodoc.patch 152 BLAKE2B 16afe084a8a90f440c30904a8f85838eebff9ea5e622bff011d35917863e9f07cd9d1fd00a569f0d7bad198834cbb1c8812082f9247540af9ecab06b7e35ec64 SHA512 d84c718cc3e4677c70cec6e460a016cdee41f03f8c6c99dd915f22024ec4d1260c2962ab1447562405408b015879a3db6aa34218a78334c1515509472456632d DIST libvformat_1.13-10.debian.tar.gz 25884 BLAKE2B 73f2ef1126dcf51ef1d8128a74b131e6ed67b8a83c4a7db2d142942bd3f4748d0925f4bdd09633f4be47260d035066d0f730bd7680ebd4b9721bc0416e61d823 SHA512 fd3635a697cf52215a024118dd5e7776829ec2e537a6795121361046588be23f00225fafc50e14e25e94e94659bb16d7830193b159925c63ff2e0644394b3626 +DIST libvformat_1.13-12.debian.tar.xz 21560 BLAKE2B a226c3a0488c78357c44f3b45608bb07b002e3e59eb01db4bc42c284ef8b24484e75368dc24a9dcba637a99ddcff1f19b39462c800606e1f73327bbe3bdc6eaf SHA512 9fd7f3765fd53d3dd90698973e582b9a61e9e0192c5f588f984c323b36939535a47c33ff89d8eb9c7aa9c567b8a785e077c626db13668532f683834ee53c234a DIST libvformat_1.13.orig.tar.gz 254463 BLAKE2B ee7d7bf9585e670ed3f6999d002669072535ce7c2c474b1f86d80026ea4bf6852a5c000a45a03b881e6d15695bd3162c132864ccb4f7cc574207209ea3a6c579 SHA512 80b47897dd4f5dfa05e78a40de821406a007e330fc82584a0d26e2d1580a5ce52b6af90ecd4c0f7f36eaf00d6a78d9ba3b84ec2b7c7d814ba890a629d7a2c7ba EBUILD libvformat-1.13-r2.ebuild 792 BLAKE2B a328991fedb8f70c1f160b30bf96f1cf5ee8287c0b9e3e070fc5d096779ad0fd7ec6663d7f73482981a60f5abb387590bc7782e8aa86a98f7013034fa1e6c4ba SHA512 0e02a6e9fc678ca2ba52f47c103c70a417ced2e1c5f698e5ac72a1aef653574d174b7169e4c71859670558710e467d863f976524b74704a0b2701aa74668f8fd +EBUILD libvformat-1.13-r3.ebuild 788 BLAKE2B 1986589038f81b036fe5ba1e543889bb53f8c60ea659edb060a435de691577629302a0f2d6fcca979ae6d1000fdf2bd8b0c50aea3cc05e161dd8540de58101d3 SHA512 6232ca9e70bca57d627f398c2c30210c31c6989e37097b93a85926f9e9f3047a1ebe206f9ee0b82d5dec4b26edc7d23c1a21f57f9e994a8151f3dc4e3529548a MISC metadata.xml 245 BLAKE2B 4638c053531b6db111751ef8d0ea5a0ce2626384eacdef18b57604990ae5da28cc802a307e8de392a35878aa9eb9927f32a5c16e9f33a1409d5833a8b1204497 SHA512 46e0ada7fb753716ca0ffa7b183b843731a6c5d7dd50f5ea3cd37e4c79a1aacbdfa241fea318780d809e798655a4c693632a4134db1285f530ff90eaa523c537 diff --git a/dev-libs/libvformat/files/libvformat-1.13-time_t.patch b/dev-libs/libvformat/files/libvformat-1.13-time_t.patch new file mode 100644 index 000000000000..b49c6bbdfa4b --- /dev/null +++ b/dev-libs/libvformat/files/libvformat-1.13-time_t.patch @@ -0,0 +1,33 @@ +Program already uses time_t everywhere else, use it in last possible place +https://bugs.gentoo.org/919257 +--- a/src/vf_access_calendar.c ++++ b/src/vf_access_calendar.c +@@ -226,7 +226,7 @@ + *---------------------------------------------------------------------------*/ + + bool_t vf_date_string_to_time( +- uint32_t *p_time, /* Output time value */ ++ time_t *p_time, /* Output time value */ + const char *p_string /* Input string */ + ) + { +@@ -298,7 +298,7 @@ + } + else + { +- *p_time = (uint32_t)t; ++ *p_time = t; + } + } + } +--- a/vformat/vf_iface.h ++++ b/vformat/vf_iface.h +@@ -1203,7 +1203,7 @@ + *---------------------------------------------------------------------------*/ + + extern VFORMATDECLSPEC bool_t vf_date_string_to_time( +- uint32_t *p_time, /* Output time value */ ++ time_t *p_time, /* Output time value */ + const char *p_string /* Input string */ + ); + diff --git a/dev-libs/libvformat/libvformat-1.13-r3.ebuild b/dev-libs/libvformat/libvformat-1.13-r3.ebuild new file mode 100644 index 000000000000..879ad26638d7 --- /dev/null +++ b/dev-libs/libvformat/libvformat-1.13-r3.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="Library to read and write vcard files" +HOMEPAGE="https://sourceforge.net/projects/vformat/" +SRC_URI=" + mirror://debian/pool/main/libv/${PN}/${PN}_${PV}.orig.tar.gz + mirror://debian/pool/main/libv/${PN}/${PN}_${PV}-12.debian.tar.xz +" +S="${WORKDIR}/${P}.orig" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86" + +src_prepare() { + eapply \ + "${WORKDIR}"/debian/patches/*.patch \ + "${FILESDIR}"/${PN}-nodoc.patch \ + "${FILESDIR}"/${P}-has_unistd.patch \ + "${FILESDIR}"/${P}-str.patch \ + "${FILESDIR}"/${P}-time_t.patch + + default + + eautoreconf +} + +src_install() { + default + + find "${ED}" -name '*.la' -delete || die +} diff --git a/dev-libs/libxml2/Manifest b/dev-libs/libxml2/Manifest index ef8d713c8129..0429e47065ca 100644 --- a/dev-libs/libxml2/Manifest +++ b/dev-libs/libxml2/Manifest @@ -1,17 +1,13 @@ AUX libxml2-2.11.5-CVE-2023-45322.patch 2030 BLAKE2B 2262b1c532b0b59c4982fdea12946294e58754aaca8b7cf3e1f3fdd912e900735b642362629e63ceb16b469f5a1146387030838ecc7b97d4227ceff089a72a43 SHA512 3e76d8b2608d523f659cbc3f7faf6565a83f8b77dcae0a2c1986c66df25b9baf8a4382d7bde612f7eafb0967e199c84621ec70898481a5b369e6f3818832f9bc AUX libxml2-2.11.9-icu-pkgconfig.patch 930 BLAKE2B 59eb0810baceb8874657fd168753a7b53d70518f8625b6c461fbd235c1410e261a6e3a344b128fdeaaddcc8db8cf002c40e571a977ac03a118f0f8d63cc4d5cf SHA512 e2a8d965ab3459c426bbcb9fa9ff70795bf00110ce90580d7b5d61171a00d81ecb2b5cde4ed2f8a0119995d80dd14a7615d76630acadff8a6611821ca6e21707 AUX libxml2-2.12.9-icu-pkgconfig.patch 1074 BLAKE2B a676f25de6c96ec5056b472a4819d65ca944dc5befc40c708a5c0d982d29912fcb3c602573f172abb3e62baeed3ae222dc594dc8d7f69031e86080427d86f98e SHA512 613e3b853ad734f789704b6523d402eb996f01688edcf7ca96a753f79dc0cbd2057df1cc9b6cc80c664da4a3acf4be75ce88825371060ba51e151c6b643d8eaf -DIST libxml2-2.11.8.tar.xz 2628212 BLAKE2B 7a9f62b9e6628e71462b0ae2a43947e398c8b948d57280ee5ac64a7cd0a13d39aa4cc55148421f999e5a04e19ca1ae2cb84884f85f3e22559cb45d8a7fca7d45 SHA512 b8c38365172b9f46e2da4dd696f5df4f917d05cc33456079d3d042578543c0f951da207361958ba8699a9f7256889f063737ba80dba8bb9720c8434be1ca723f DIST libxml2-2.11.9.tar.xz 2627500 BLAKE2B 3ecab5df9017673f31e8bbf737273d72cb4475c3a6f0d0669e7f074b0e4d378460df2e175fe4991c675d8462a2e4d4607c151ed11937a0c8a3a4e81107102f67 SHA512 d5c34ed56525f4c6b61d7055fe4219d7a3337077b4fb27081682e9f8350f1542b4476ac42f2754e590b371a4d9a00921cebf20c10b299371b05b8391e7fa7c33 -DIST libxml2-2.12.8.tar.xz 2643728 BLAKE2B d26fe61e913e73c923eb8140a9080d6b70078ce45e94fe61d1ca1b8919d5b86feb7f14156f5a8b06ea06a03a96a242ce3a32e8d61169cfa8bde587888438627b SHA512 59baac9a82a734045112be6da12bbbe80a71575145424c2225e4bd9f8d54e53c674dcbc9576eb55f646632335702e7f0b1928f96a851159ace9b26f677fd3d77 DIST libxml2-2.12.9.tar.xz 2643456 BLAKE2B 769ff564e62c1c0167e5334879ac9e912491c651b6d48a9d21db569002ae86bc4e4490098710a614bc90bbefc44a9dd0af6b02958041dd3bffccf8b5ddc0f7ca SHA512 6e4544ed3ab36d6cb7481d465ceabf223444739d7f41de3e1927309b8716a5eac85520b9bbaf69913f53e052fbfaf68bf27372074daaa24dca9463ce728b4173 DIST libxml2-2.13.5.tar.xz 2586872 BLAKE2B 46c280630638e2c8009c593bbbcf90ccbfffe9ddcc99987c4d91c2223043759f2b4d6511b31b2357c5250ac3b40d96ef05c17b4d2adc61972665f8a0d899dfe8 SHA512 acaecd4e3e95136d1c621f9e5f33976ebca87dfbf83859459e339597c3c57fbc47508a7de16af7fbf0e7e7c59fd6f9a82b2e732e1dd12efd79d666bac64ecf4e DIST xmlts20130923.tar.gz 641522 BLAKE2B 63a47bc69278ef510cd0b3779aed729e1b309e30efa0015d28ed051cc03f9dfddb447ab57b07b3393e8f47393d15473b0e199c34cb1f5f746b15ddfaa55670be SHA512 d5c4d26b324ed21f4e0641cd7f8b76dbf9de80df8b519982e44d41c960df29fd03618e02e9693b2d11ad06d19c4a965274c95a048ec3b9653eacb919a7f8b733 DIST xsts-2002-01-16.tar.gz 6894439 BLAKE2B 1e9ec63d2c104655e64249e07440a04d862fcbcd4d4e19745d81b34994319b510a531c9d6df1491fae1e90b5d0764f0f1a827251ca8df5d613178b0eab01ef25 SHA512 43300af6d39c1e2221b0ed7318fe14c7464eeb6eb030ed1e22eb29b4ab17f014e2a4c8887c3a46ae5d243e3072da27f00f4e285498ae6f1288177d38d1108288 DIST xsts-2004-01-14.tar.gz 2761085 BLAKE2B 41545995fb3a65d053257c376c07d45ffd1041a433bfbdb46d4dd87a5afb60c18c8629a3d988323f9e7a1d709775b5a7e5930276a7121c0725a22705c0976e36 SHA512 32854388d7e720ad67156baf50bf2bae7bd878ca3e35fd7e44e57cad3f434f69d56bbbedd61509f8a1faf01c9eae74a078df8fe130780b182c05c05cb1c39ebe -EBUILD libxml2-2.11.8.ebuild 5304 BLAKE2B 44f59056495a1966c03fd4eb82680df47960c76e3a924beac84bf4d3dfe1d50434acd50f340f4d62ecae90e3efcc1f230004fd169b2d145ac6a7f3d72ccaf50f SHA512 c703801b7954c6d8ff13cf7dd0fe90547f01eaad15ba3383c1b281a1ec13570408ebfb247a9a4571c2f3af59a6c556d5c4c6adab2503150684eb0d9e4c0b0b2f EBUILD libxml2-2.11.9.ebuild 5320 BLAKE2B 677e7ebb285ae739f8759520d01c7ec6c1148f1257dca62e3d9f7209eca0643ffa9c0fbc91764d99483f22814a5f5e89bcf49da0a3f25892afeffef2b2407bf2 SHA512 04049159608bb632bc93214b6b064e1ad05b3be8178268f7913739d63ccdaac4bae1a90468be099024874e173ffba341d32695b6f0f9d399faba2bda08ca7593 -EBUILD libxml2-2.12.8.ebuild 5242 BLAKE2B b90ffd8f41a13ef711aeb964eb9ab949f8d880c1928660f326680ed30224215945303389df031f1cab6522d2e53d7b0c4308d8c1f3ead4fab9026178a148c29c SHA512 df10b206838244cd4e7d772fc6b1e67e450f2bdf8da4278a580a92d323524095ff1936bbcb3d9e27b1914191f25dcf9466edb70a2d7af6c8016b880095a8ba93 EBUILD libxml2-2.12.9.ebuild 5252 BLAKE2B bea5a28bf64b15b8fde7d5ecdceb941887c2523698400e18bf24f43a8ead46eac7d69e652bd12e1ca17fea0a07008dd37e5c3826843c141393e0f1edb84ccc98 SHA512 8deeee835aa558693fe92a9dbeb3e76a82ecc19462d1b1737296a5442eaeaf9bf39f0b1d1360249cd9b4c9a21791bdd802978e11bb30fbf0f89f1358bcfaf788 EBUILD libxml2-2.13.5.ebuild 4929 BLAKE2B 0e75032d107098974e34c27db656ddfad94adf50dc8c439196958ae5df0011d8e7499ed9e222b0ba4dd1c5848805ab81639a26a63c4ff5cfb4ea650ee5648357 SHA512 fcb2596dbada2f58aaa143100acb0bddc463892ac429efadeb447dc840cfa8f109c72fe7f26724f0cc52327addce47bd2e6017a746c13bfb18ee43d16c81b967 EBUILD libxml2-9999.ebuild 4919 BLAKE2B 3e0f278498216f9318528bb2ed2b522309acf5c67e34e36725defe944b09aab9660a6284f948b1e45dee1af588512e605c5dc1e2eb84e6bebead6d857c0795c1 SHA512 47689ae3e3b5d3bd2e5fb92f4ffd20b8fdd5a2550fafe2cd88a1fff7f2946b970b99e379e44ff3f72e4423f62c4b2a5a3ea5b480dca8e431c2177ef69d779b6c diff --git a/dev-libs/libxml2/libxml2-2.11.8.ebuild b/dev-libs/libxml2/libxml2-2.11.8.ebuild deleted file mode 100644 index e4810b5b9301..000000000000 --- a/dev-libs/libxml2/libxml2-2.11.8.ebuild +++ /dev/null @@ -1,200 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Note: Please bump in sync with dev-libs/libxslt - -PYTHON_COMPAT=( python3_{10..12} ) -PYTHON_REQ_USE="xml(+)" -inherit flag-o-matic python-r1 multilib-minimal - -XSTS_HOME="http://www.w3.org/XML/2004/xml-schema-test-suite" -XSTS_NAME_1="xmlschema2002-01-16" -XSTS_NAME_2="xmlschema2004-01-14" -XSTS_TARBALL_1="xsts-2002-01-16.tar.gz" -XSTS_TARBALL_2="xsts-2004-01-14.tar.gz" -XMLCONF_TARBALL="xmlts20130923.tar.gz" - -DESCRIPTION="XML C parser and toolkit" -HOMEPAGE="https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home" -if [[ ${PV} == 9999 ]] ; then - EGIT_REPO_URI="https://gitlab.gnome.org/GNOME/libxml2" - inherit autotools git-r3 -else - inherit gnome.org libtool - KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -fi - -SRC_URI+=" - test? ( - ${XSTS_HOME}/${XSTS_NAME_1}/${XSTS_TARBALL_1} - ${XSTS_HOME}/${XSTS_NAME_2}/${XSTS_TARBALL_2} - https://www.w3.org/XML/Test/${XMLCONF_TARBALL} - ) -" -S="${WORKDIR}/${PN}-${PV%_rc*}" - -LICENSE="MIT" -SLOT="2" -IUSE="debug examples +ftp icu lzma +python readline static-libs test" -RESTRICT="!test? ( test )" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" - -RDEPEND=" - virtual/libiconv - >=sys-libs/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}] - icu? ( >=dev-libs/icu-51.2-r1:=[${MULTILIB_USEDEP}] ) - lzma? ( >=app-arch/xz-utils-5.0.5-r1:=[${MULTILIB_USEDEP}] ) - python? ( ${PYTHON_DEPS} ) - readline? ( sys-libs/readline:= ) -" -DEPEND="${RDEPEND}" -BDEPEND="virtual/pkgconfig" - -if [[ ${PV} == 9999 ]] ; then - BDEPEND+=" dev-build/gtk-doc-am" -fi - -MULTILIB_CHOST_TOOLS=( - /usr/bin/xml2-config -) - -PATCHES=( - "${FILESDIR}"/${PN}-2.11.5-CVE-2023-45322.patch -) - -src_unpack() { - if [[ ${PV} == 9999 ]] ; then - git-r3_src_unpack - else - local tarname=${P/_rc/-rc}.tar.xz - - # ${A} isn't used to avoid unpacking of test tarballs into ${WORKDIR}, - # as they are needed as tarballs in ${S}/xstc instead and not unpacked - unpack ${tarname} - - if [[ -n ${PATCHSET_VERSION} ]] ; then - unpack ${PN}-${PATCHSET_VERSION}.tar.xz - fi - fi - - cd "${S}" || die - - if use test ; then - cp "${DISTDIR}/${XSTS_TARBALL_1}" \ - "${DISTDIR}/${XSTS_TARBALL_2}" \ - "${S}"/xstc/ \ - || die "Failed to install test tarballs" - unpack ${XMLCONF_TARBALL} - fi -} - -src_prepare() { - default - - if [[ ${PV} == 9999 ]] ; then - eautoreconf - else - # Please do not remove, as else we get references to PORTAGE_TMPDIR - # in /usr/lib/python?.?/site-packages/libxml2mod.la among things. - elibtoolize - fi -} - -multilib_src_configure() { - # Filter seemingly problematic CFLAGS (bug #26320) - filter-flags -fprefetch-loop-arrays -funroll-loops - - # Notes: - # The meaning of the 'debug' USE flag does not apply to the --with-debug - # switch (enabling the libxml2 debug module). See bug #100898. - libxml2_configure() { - ECONF_SOURCE="${S}" econf \ - --enable-ipv6 \ - $(use_with ftp) \ - $(use_with debug run-debug) \ - $(use_with icu) \ - $(use_with lzma) \ - $(use_enable static-libs static) \ - $(multilib_native_use_with readline) \ - $(multilib_native_use_with readline history) \ - "$@" - } - - # Build python bindings separately - libxml2_configure --without-python - - multilib_is_native_abi && use python && - python_foreach_impl run_in_build_dir libxml2_configure --with-python -} - -libxml2_py_emake() { - pushd "${BUILD_DIR}"/python >/dev/null || die - - emake top_builddir="${NATIVE_BUILD_DIR}" "$@" - - popd >/dev/null || die -} - -multilib_src_compile() { - default - - if multilib_is_native_abi && use python ; then - NATIVE_BUILD_DIR="${BUILD_DIR}" - python_foreach_impl run_in_build_dir libxml2_py_emake all - fi -} - -multilib_src_test() { - ln -s "${S}"/xmlconf || die - - emake check - - multilib_is_native_abi && use python && - python_foreach_impl run_in_build_dir libxml2_py_emake check -} - -multilib_src_install() { - emake DESTDIR="${D}" install - - multilib_is_native_abi && use python && - python_foreach_impl run_in_build_dir libxml2_py_emake DESTDIR="${D}" install - - # Hack until automake release is made for the optimise fix - # https://git.savannah.gnu.org/cgit/automake.git/commit/?id=bde43d0481ff540418271ac37012a574a4fcf097 - multilib_is_native_abi && use python && python_foreach_impl python_optimize -} - -multilib_src_install_all() { - einstalldocs - - if ! use examples ; then - rm -rf "${ED}"/usr/share/doc/${PF}/examples || die - rm -rf "${ED}"/usr/share/doc/${PF}/python/examples || die - fi - - rm -rf "${ED}"/usr/share/doc/${PN}-python-${PVR} || die - - find "${ED}" -name '*.la' -delete || die -} - -pkg_postinst() { - # We don't want to do the xmlcatalog during stage1, as xmlcatalog will not - # be in / and stage1 builds to ROOT=/tmp/stage1root. This fixes bug #208887. - if [[ -n "${ROOT}" ]]; then - elog "Skipping XML catalog creation for stage building (bug #208887)." - else - # Need an XML catalog, so no-one writes to a non-existent one - CATALOG="${EROOT}/etc/xml/catalog" - - # We don't want to clobber an existing catalog though, - # only ensure that one is there - # - if [[ ! -e "${CATALOG}" ]]; then - [[ -d "${EROOT}/etc/xml" ]] || mkdir -p "${EROOT}/etc/xml" - "${EPREFIX}"/usr/bin/xmlcatalog --create > "${CATALOG}" - einfo "Created XML catalog in ${CATALOG}" - fi - fi -} diff --git a/dev-libs/libxml2/libxml2-2.12.8.ebuild b/dev-libs/libxml2/libxml2-2.12.8.ebuild deleted file mode 100644 index b18992816fd2..000000000000 --- a/dev-libs/libxml2/libxml2-2.12.8.ebuild +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Note: Please bump in sync with dev-libs/libxslt - -PYTHON_COMPAT=( python3_{10..13} ) -PYTHON_REQ_USE="xml(+)" -inherit flag-o-matic python-r1 multilib-minimal - -XSTS_HOME="http://www.w3.org/XML/2004/xml-schema-test-suite" -XSTS_NAME_1="xmlschema2002-01-16" -XSTS_NAME_2="xmlschema2004-01-14" -XSTS_TARBALL_1="xsts-2002-01-16.tar.gz" -XSTS_TARBALL_2="xsts-2004-01-14.tar.gz" -XMLCONF_TARBALL="xmlts20130923.tar.gz" - -DESCRIPTION="XML C parser and toolkit" -HOMEPAGE="https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home" -if [[ ${PV} == 9999 ]] ; then - EGIT_REPO_URI="https://gitlab.gnome.org/GNOME/libxml2" - inherit autotools git-r3 -else - inherit gnome.org libtool - KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -fi - -SRC_URI+=" - test? ( - ${XSTS_HOME}/${XSTS_NAME_1}/${XSTS_TARBALL_1} - ${XSTS_HOME}/${XSTS_NAME_2}/${XSTS_TARBALL_2} - https://www.w3.org/XML/Test/${XMLCONF_TARBALL} - ) -" -S="${WORKDIR}/${PN}-${PV%_rc*}" - -LICENSE="MIT" -SLOT="2" -IUSE="debug examples +ftp icu lzma +python readline static-libs test" -RESTRICT="!test? ( test )" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" - -RDEPEND=" - virtual/libiconv - >=sys-libs/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}] - icu? ( >=dev-libs/icu-51.2-r1:=[${MULTILIB_USEDEP}] ) - lzma? ( >=app-arch/xz-utils-5.0.5-r1:=[${MULTILIB_USEDEP}] ) - python? ( ${PYTHON_DEPS} ) - readline? ( sys-libs/readline:= ) -" -DEPEND="${RDEPEND}" -BDEPEND="virtual/pkgconfig" - -if [[ ${PV} == 9999 ]] ; then - BDEPEND+=" dev-build/gtk-doc-am" -fi - -MULTILIB_CHOST_TOOLS=( - /usr/bin/xml2-config -) - -src_unpack() { - if [[ ${PV} == 9999 ]] ; then - git-r3_src_unpack - else - local tarname=${P/_rc/-rc}.tar.xz - - # ${A} isn't used to avoid unpacking of test tarballs into ${WORKDIR}, - # as they are needed as tarballs in ${S}/xstc instead and not unpacked - unpack ${tarname} - - if [[ -n ${PATCHSET_VERSION} ]] ; then - unpack ${PN}-${PATCHSET_VERSION}.tar.xz - fi - fi - - cd "${S}" || die - - if use test ; then - cp "${DISTDIR}/${XSTS_TARBALL_1}" \ - "${DISTDIR}/${XSTS_TARBALL_2}" \ - "${S}"/xstc/ \ - || die "Failed to install test tarballs" - unpack ${XMLCONF_TARBALL} - fi -} - -src_prepare() { - default - - if [[ ${PV} == 9999 ]] ; then - eautoreconf - else - # Please do not remove, as else we get references to PORTAGE_TMPDIR - # in /usr/lib/python?.?/site-packages/libxml2mod.la among things. - elibtoolize - fi -} - -multilib_src_configure() { - # Filter seemingly problematic CFLAGS (bug #26320) - filter-flags -fprefetch-loop-arrays -funroll-loops - - # Notes: - # The meaning of the 'debug' USE flag does not apply to the --with-debug - # switch (enabling the libxml2 debug module). See bug #100898. - libxml2_configure() { - ECONF_SOURCE="${S}" econf \ - --enable-ipv6 \ - $(use_with ftp) \ - $(use_with debug run-debug) \ - $(use_with icu) \ - $(use_with lzma) \ - $(use_enable static-libs static) \ - $(multilib_native_use_with readline) \ - $(multilib_native_use_with readline history) \ - "$@" - } - - # Build python bindings separately - libxml2_configure --without-python - - multilib_is_native_abi && use python && - python_foreach_impl run_in_build_dir libxml2_configure --with-python -} - -libxml2_py_emake() { - pushd "${BUILD_DIR}"/python >/dev/null || die - - emake top_builddir="${NATIVE_BUILD_DIR}" "$@" - - popd >/dev/null || die -} - -multilib_src_compile() { - default - - if multilib_is_native_abi && use python ; then - NATIVE_BUILD_DIR="${BUILD_DIR}" - python_foreach_impl run_in_build_dir libxml2_py_emake all - fi -} - -multilib_src_test() { - ln -s "${S}"/xmlconf || die - - emake check - - multilib_is_native_abi && use python && - python_foreach_impl run_in_build_dir libxml2_py_emake check -} - -multilib_src_install() { - emake DESTDIR="${D}" install - - multilib_is_native_abi && use python && - python_foreach_impl run_in_build_dir libxml2_py_emake DESTDIR="${D}" install - - # Hack until automake release is made for the optimise fix - # https://git.savannah.gnu.org/cgit/automake.git/commit/?id=bde43d0481ff540418271ac37012a574a4fcf097 - multilib_is_native_abi && use python && python_foreach_impl python_optimize -} - -multilib_src_install_all() { - einstalldocs - - if ! use examples ; then - rm -rf "${ED}"/usr/share/doc/${PF}/examples || die - rm -rf "${ED}"/usr/share/doc/${PF}/python/examples || die - fi - - rm -rf "${ED}"/usr/share/doc/${PN}-python-${PVR} || die - - find "${ED}" -name '*.la' -delete || die -} - -pkg_postinst() { - # We don't want to do the xmlcatalog during stage1, as xmlcatalog will not - # be in / and stage1 builds to ROOT=/tmp/stage1root. This fixes bug #208887. - if [[ -n "${ROOT}" ]]; then - elog "Skipping XML catalog creation for stage building (bug #208887)." - else - # Need an XML catalog, so no-one writes to a non-existent one - CATALOG="${EROOT}/etc/xml/catalog" - - # We don't want to clobber an existing catalog though, - # only ensure that one is there - # - if [[ ! -e "${CATALOG}" ]]; then - [[ -d "${EROOT}/etc/xml" ]] || mkdir -p "${EROOT}/etc/xml" - "${EPREFIX}"/usr/bin/xmlcatalog --create > "${CATALOG}" - einfo "Created XML catalog in ${CATALOG}" - fi - fi -} diff --git a/dev-libs/mimalloc/Manifest b/dev-libs/mimalloc/Manifest index 89125c9af20a..6f2707aa566f 100644 --- a/dev-libs/mimalloc/Manifest +++ b/dev-libs/mimalloc/Manifest @@ -1,7 +1,5 @@ DIST mimalloc-2.1.7.tar.gz 1181422 BLAKE2B 2c4c2d61837ab315e00a5c12d1c74c8f003aa3e9159403194ba61f5dfef2f4c2497b83487f07b20ba506ecde40a6754df6b7048a3818af58168ca90b8ed44470 SHA512 4e30976758015c76a146acc1bfc8501e2e5c61b81db77d253de0d58a8edef987669243f232210667b32ef8da3a33286642acb56ba526fd24c4ba925b44403730 -DIST mimalloc-2.1.8.tar.gz 1276091 BLAKE2B d592072d87a81fc49cac6bb874b707525d6d816539e02cd52e834648bb1052ddceabcb5b4b9f2606916e44db3ca05ca40af857eec258dd6bb11056721b064b3e SHA512 3b2044f9b58c83016a4dfb0c8ac9c5e26bfedff74c2948f19b369c89c72ee3ba6ce4ce25a020231e49685bb34340e8891d009d65e60af500e299f41f6932ab2d DIST mimalloc-2.1.9.tar.gz 1276218 BLAKE2B 183749c1bb98c92986da9d3cb636d465927dd5b4186072edbe6e4fae88b59fdbfe4a0dd711c4705d64287c8085a0059d891c07f6aba50747eb67e56937d2e3ad SHA512 404a7827aea6f39bb4b9d43b5c93d5ca39e84e29bf362d597744703f7a6d0c091f55b45a070e6d61ad7f68bf7c28f541668c75db16bae1423bd318f47bf06974 EBUILD mimalloc-2.1.7.ebuild 884 BLAKE2B 941e494359d742c255132a3093b3018b2955745ee41c6617ddbc0cca6f5765cf0062ab5b66d281aab4092f86c80cf3a91af0ce95d31f7e07e94759189f85823e SHA512 b8f35edfe1214232bee0d049296cea703dcaa68c22b27835cd58b9b73c7782c99287154875da7fc78e85557d855a534588381abc838c678369d9dd6472af8e01 -EBUILD mimalloc-2.1.8.ebuild 933 BLAKE2B 4825382654599e530fd7be30cf7f39b8a06bcfc8a735d0742d7f20ac2a18d990ebdeceb5fc8f719367e71b659bf25d13e5feb7ee52b90e2751f476e046422c9b SHA512 4c1769bc3469124cf9f7b8664ffd2242f92204884d88f757183a56962f8f3b89f9019a5b0f4c6f26b03cb2eca5c7d83566d0cab1631dad9b251f20f86d37bdd6 EBUILD mimalloc-2.1.9.ebuild 933 BLAKE2B 4825382654599e530fd7be30cf7f39b8a06bcfc8a735d0742d7f20ac2a18d990ebdeceb5fc8f719367e71b659bf25d13e5feb7ee52b90e2751f476e046422c9b SHA512 4c1769bc3469124cf9f7b8664ffd2242f92204884d88f757183a56962f8f3b89f9019a5b0f4c6f26b03cb2eca5c7d83566d0cab1631dad9b251f20f86d37bdd6 MISC metadata.xml 504 BLAKE2B cf6477282968a5469d072cfd81ce800e3ef0a48deb5353c85a1cabc837560cafdb9f9739cb4e98784238d2cc512a29cae5efee401f92a19bf75fb5d810154f76 SHA512 4e8fcc49881f3c479424cf363665d9b12c58eb52f7d962b98b81f5b3e186ba3bd14c2b5dac488d819147121a16c2d9613e75cb77f71fa04e820ca2c1e538baa6 diff --git a/dev-libs/mimalloc/mimalloc-2.1.8.ebuild b/dev-libs/mimalloc/mimalloc-2.1.8.ebuild deleted file mode 100644 index 49b88d5cd215..000000000000 --- a/dev-libs/mimalloc/mimalloc-2.1.8.ebuild +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2022-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake-multilib - -DESCRIPTION="A compact general purpose allocator with excellent performance" -HOMEPAGE="https://github.com/microsoft/mimalloc" -SRC_URI="https://github.com/microsoft/mimalloc/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="MIT" -SLOT="0/2" -KEYWORDS="~amd64 ~arm ~arm64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~sparc ~x86" -IUSE="debug hardened test valgrind" -RESTRICT="!test? ( test )" - -DEPEND="valgrind? ( dev-debug/valgrind )" - -src_configure() { - local mycmakeargs=( - -DMI_DEBUG_FULL=$(usex debug) - -DMI_SECURE=$(usex hardened) - -DMI_INSTALL_TOPLEVEL=ON - -DMI_BUILD_TESTS=$(usex test) - -DMI_BUILD_OBJECT=OFF - -DMI_BUILD_STATIC=OFF - -DMI_TRACK_VALGRIND=$(usex valgrind) - -DMI_LIBC_MUSL=$(usex elibc_musl) - # Don't inject -march=XXX - -DMI_OPT_ARCH=OFF - ) - - cmake-multilib_src_configure -} diff --git a/dev-libs/nspr/Manifest b/dev-libs/nspr/Manifest index e980a052c722..a80d91f5fece 100644 --- a/dev-libs/nspr/Manifest +++ b/dev-libs/nspr/Manifest @@ -6,8 +6,6 @@ AUX nspr-4.7.1-solaris.patch 411 BLAKE2B 0c1f0e621aec9e150bd8c279f46c18256c451b2 AUX nspr-4.8.4-darwin-install_name.patch 1046 BLAKE2B 1182149b03bd2c03fc4051bf98c61cdd4245da21a51d5f9b10149e12f5326992d587f0fe04bab79c26acee4aa2e4dded5ddf8c697b5cd4f2e34ea730c6ca7fe0 SHA512 dd00bc2108d6c7a64945afeaf97f31189250c90c3d63c86fa2b2b091ef812cc7c5f8c0f17211a02b497f50efc1c3668c840e21a45f514ff1103e22c659e820f2 AUX nspr-4.8.9-link-flags.patch 931 BLAKE2B 6aa6aa1cf3b856a95b7baa20f58e9ed83b8b29ccce37bab39e10e0e76c433ae5c79839b5f7f9bdaf8b2475c8e3692ff4a57c246dfa4e1fed6866ab284826ee0d SHA512 0bb61dc09d287f1324749c983404e1f03fdf7014fbbd32cc5abe452fc2f32b90b759d8f18d964a61da044b5a7221f5ba274d94c93c07c8a7359e3c937e44b975 AUX nspr-4.9.5_nspr_config.patch 251 BLAKE2B 65ae8b981e758e2955b7a3358f24b7b17dc1ef59f0e78f9fd9ddee740a4da3825bafea34f3900200b3f6edefed7d0797c194cb0339d4e36551615d599156108d SHA512 3f118b7142a19dcc7e26b348cec6029c78d585a57cc2bfc2ab7ca13d2ef953e576dab0ac044316e3165d0201bf27253afa732109f914da6f7a39f19facff8310 -DIST nspr-4.35.tar.gz 1096974 BLAKE2B c80402d7be9e69ab6d1e768a18d271a8d28900f4cae7df2709d1ab26e100d908f508762bb771d4042aa7152934ce83d495e2102e894c56574187be8040d65629 SHA512 502815833116e25f79ddf71d1526484908aa92fbc55f8a892729cb404a4daafcc0470a89854cd080d2d20299fdb7d9662507c5362c7ae661cbacf308ac56ef7f DIST nspr-4.36.tar.gz 1036274 BLAKE2B 369d851db0f425f0c6c3cdaeb333320860b77b49b40b77cc983998de3f9128f9d987f143e9f2ce155d609fb23f3f9ed0d0abe7d74e20c59763e2b9bdd1835817 SHA512 55d21e196508ad29a179639fc8006f44b04dc2c0b5a85895e727f0a4f0ea37aeeceb936e37ac6b271b882a18e9f06d96133a60f19cee6345f8424c1c66e270ee -EBUILD nspr-4.35-r2.ebuild 5482 BLAKE2B cc0118ec6efb82e4cf1f67d65d08130f98e0fe40a26ad922058d31b9724b07f703f159c277ef001ed7795053dc9f913121adf22f14adc38dcdaf73721efddce9 SHA512 311cd72c4768e13e3cdedee4be49ea99d32628e8cb76ad92fff7a5c5eff55da960595ba8d846e70fe5d32cb19363c1e3473aaf04a73a317a298afbfb36d46b1c EBUILD nspr-4.36.ebuild 5401 BLAKE2B bc07648f6defa178d9ac47917ddef0cacb8d384c077f4733d807f9f288d29cb7f14f92564b6f874f6589af84314963b5fca286776545db3ab109b45208b8dc5b SHA512 a01f02c66d293479df6122a279909013f7dfd679d253fd8aec11e12c9537064c6572e034cbfa157f54ea905d9ce53feb32dc2f1272148a31f5d6e5dc696450b7 MISC metadata.xml 350 BLAKE2B 0f4d7850a3ca725af4e01a47e4db4219d2465b6d4db8c44e12b8f57d2064fd3c6ddbeec16888a316627f96e1f9415777f3fedecbd7065e4d13516bbed473a6f6 SHA512 2cc7f3e6eefcb5ba16c4b2127e751c47ea7a6822eb71080c96c6850ef741acff8d424c520eb60288ca32ccdbe825568d7aced9f57148e304dddd0afb7f4a8883 diff --git a/dev-libs/nspr/nspr-4.35-r2.ebuild b/dev-libs/nspr/nspr-4.35-r2.ebuild deleted file mode 100644 index 4aafc2acbe8a..000000000000 --- a/dev-libs/nspr/nspr-4.35-r2.ebuild +++ /dev/null @@ -1,178 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit autotools flag-o-matic toolchain-funcs multilib-minimal - -MIN_PV="$(ver_cut 2)" - -DESCRIPTION="Netscape Portable Runtime" -HOMEPAGE="https://www.mozilla.org/projects/nspr/" -SRC_URI="https://archive.mozilla.org/pub/nspr/releases/v${PV}/src/${P}.tar.gz" - -LICENSE="|| ( MPL-2.0 GPL-2 LGPL-2.1 )" -SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" -IUSE="debug" - -MULTILIB_CHOST_TOOLS=( - /usr/bin/nspr-config -) - -PATCHES=( - "${FILESDIR}"/${PN}-4.10.6-solaris.patch - "${FILESDIR}"/${PN}-4.23-prtime.patch - "${FILESDIR}"/${PN}-4.7.1-solaris.patch - "${FILESDIR}"/${PN}-4.8.4-darwin-install_name.patch - "${FILESDIR}"/${PN}-4.8.9-link-flags.patch - # We do not need to pass -L$libdir via nspr-config --libs - "${FILESDIR}"/${PN}-4.9.5_nspr_config.patch -) - -QA_CONFIGURE_OPTIONS="--disable-static" - -src_prepare() { - cd "${S}"/nspr || die - - default - - if use elibc_musl; then - eapply "${FILESDIR}"/${PN}-4.21-ipv6-musl-support.patch - eapply "${FILESDIR}"/nspr-4.35-bgo-905998-lfs64-musl.patch - fi - - # rename configure.in to configure.ac for new autotools compatibility - if [[ -e "${S}"/nspr/configure.in ]] ; then - einfo "Renaming configure.in to configure.ac" - mv "${S}"/nspr/configure.{in,ac} || die - else - elog "configure.in rename logic can be removed from ebuild." - fi - - # We must run eautoconf to regenerate configure - eautoconf - - # make sure it won't find Perl out of Prefix - sed -i -e "s/perl5//g" "${S}"/nspr/configure || die - - # Respect LDFLAGS - sed -i -e 's/\$(MKSHLIB) \$(OBJS)/\$(MKSHLIB) \$(LDFLAGS) \$(OBJS)/g' \ - "${S}"/nspr/config/rules.mk || die -} - -multilib_src_configure() { - # -Werror=strict-aliasing - # https://bugs.gentoo.org/867634 - # - # Testsuite-only issue. Still, this makes it challenging to test the package with LTO - # enabled... - append-flags -fno-strict-aliasing - filter-lto - - # The build system overrides user optimization level based on a configure flag. #886987 - local my_optlvl=$(get-flag '-O*') - - # bgo #923802 - append-lfs-flags - - # We use the standard BUILD_xxx but nspr uses HOST_xxx - tc-export_build_env BUILD_CC - export HOST_CC=${BUILD_CC} HOST_CFLAGS=${BUILD_CFLAGS} HOST_LDFLAGS=${BUILD_LDFLAGS} - tc-export AR AS CC CXX RANLIB - [[ ${CBUILD} != ${CHOST} ]] \ - && export CROSS_COMPILE=1 \ - || unset CROSS_COMPILE - - local myconf=( --libdir="${EPREFIX}/usr/$(get_libdir)" ) - - # Optimization is disabled when debug is enabled. - if use debug; then - myconf+=( --enable-debug ) - else - myconf+=( --disable-debug ) - myconf+=( --enable-optimize="${my_optlvl}" ) - fi - - # The configure has some fancy --enable-{{n,x}32,64bit} switches - # that trigger some code conditional to platform & arch. This really - # matters for the few common arches (x86, ppc) but we pass a little - # more of them to be future-proof. - - # use ABI first, this will work for most cases - case "${ABI}" in - alpha|arm|hppa|m68k|o32|ppc|s390|sh|sparc|x86) ;; - n32) myconf+=( --enable-n32 );; - x32) myconf+=( --enable-x32 );; - s390x|*64) myconf+=( --enable-64bit );; - default) # no abi actually set, fall back to old check - einfo "Running a short build test to determine 64bit'ness" - # TODO: Port this to toolchain-funcs tc-get-ptr-size/tc-get-build-ptr-size - echo > "${T}"/test.c || die - ${CC} ${CFLAGS} ${CPPFLAGS} -fno-lto -c "${T}"/test.c -o "${T}"/test.o || die - case $(file -S "${T}"/test.o) in - *32-bit*x86-64*) myconf+=( --enable-x32 );; - *64-bit*|*ppc64*|*x86_64*) myconf+=( --enable-64bit );; - *32-bit*|*ppc*|*i386*) ;; - *) die "Failed to detect whether your arch is 64bits or 32bits, disable distcc if you're using it, please";; - esac ;; - *) ;; - esac - - # Ancient autoconf needs help finding the right tools. - LC_ALL="C" ECONF_SOURCE="${S}/nspr" \ - ac_cv_path_AR="${AR}" \ - ac_cv_path_AS="${AS}" \ - econf "${myconf[@]}" -} - -multilib_src_test() { - # https://firefox-source-docs.mozilla.org/nspr/running_nspr_tests.html - cd "${BUILD_DIR}/pr/tests" || die - einfo "Building tests" - emake - - einfo "Running test suite" - ../../../${P}/${PN}/pr/tests/runtests.pl | tee "${T}"/${ABI}-tests.log - - # Needed to check if runtests.pl itself or the tee (somehow) failed - # (can't use die with pipes to check each component) - [[ ${PIPESTATUS[@]} == "0 0" ]] || die "Tests failed to run!" - - local known_failures=( - # network-sandbox related? - cltsrv - # network-sandbox related? - gethost - ) - - local known_failure - for known_failure in "${known_failures[@]}" ; do - sed -i -e "/${known_failure}.*FAILED/d" "${T}"/${ABI}-tests.log || die - done - - # But to actually check the test results, we examine the log. - if grep -q "FAILED" "${T}"/${ABI}-tests.log ; then - die "Test failure for ${ABI}!" - fi -} - -multilib_src_install() { - # Their build system is royally confusing, as usual - MINOR_VERSION=${MIN_PV} # Used for .so version - emake DESTDIR="${D}" install - - einfo "removing static libraries as upstream has requested!" - rm "${ED}"/usr/$(get_libdir)/*.a || die "failed to remove static libraries." - - # install nspr-config - dobin config/nspr-config - - # Remove stupid files in /usr/bin - rm "${ED}"/usr/bin/prerr.properties || die - - # This is used only to generate prerr.c and prerr.h at build time. - # No other projects use it, and we don't want to depend on perl. - # Talked to upstream and they agreed w/punting. - rm "${ED}"/usr/bin/compile-et.pl || die -} diff --git a/dev-libs/openct/Manifest b/dev-libs/openct/Manifest index f33cde8a561d..e01252c5cad5 100644 --- a/dev-libs/openct/Manifest +++ b/dev-libs/openct/Manifest @@ -1,6 +1,8 @@ AUX openct-0.6.20-automake.patch 786 BLAKE2B f37d39bdbc0c1db10ec7058536d0d34ac3009e7ac2081f36ae9cea3f17f2d0558d50e2062fe60fb808df710887b290683374ada1c9301cb91480d67484008186 SHA512 baf7fae52aea4dae53ed1f3364eab207aeaa3cd2aad28b44dbf05f5632fa27530436a03748c285ed325360b6b62821c685cd0e05713db2f95a3177ba1b5749be +AUX openct-0.6.20-incompatible-pointers.patch 958 BLAKE2B 7dc9faf725a61e3f8c1acc45c0856ba5e0a12b315ce7309b452b1cec4a17e27fafec64f77782c679e06c23b9ac5edf2618c854094fdb4a5672c7c4703a9da90b SHA512 cdefe0fdb637bc000ec82c103ef512c726d612fb9035af5e0469e6ea427b2961dd6c513daaf989c65d583613afd14fca40bae6aaf31cced35eb0d61e2e08a017 AUX openct-0.6.20-slibtool.patch 1353 BLAKE2B b8a5747258cb7d5ac8bacda87c9eaf2f177e202490c162594aec6559f13c65e562b887e6c8d056c1ce5ab247e80c51ca6610654e61b2c593e7b13e22e458b43a SHA512 34ab2345b44424d9868c95a9af862d03603647b824e1d84a1f35a8171249b2beba7fae9ae3a4d0468d9029cf6c748c02fb2032e30462640eb42ff08d3cdd3868 AUX openct.initd 502 BLAKE2B 5f583c50b138d9017aecbda25aeb74f09643ea461be3449c50c4ca61a0379c50bf22036cfe46ec3e606519ddd94a49add053da48f8987d5e6f2e790408ad48d5 SHA512 18cb14070252c3f1babe117d5f6fe91639b1bdb07fab953573ba143e5cc49b55964ae56427f0cc741fb3d90e54eb2eec863864a340229929ad5f2aab21723f23 DIST openct-0.6.20.tar.gz 702818 BLAKE2B 13637fa914394e1e553d750062535c879ba11c6587c42570e2bc92c4af9f732a9b0dfc06e2140f4965480363f8d65bc5831f905910d734c36034ccf1916ad302 SHA512 5175b418847200dbd4af0d8ab09546d94568639c67db67bdea93c68cb042c7ef901bb356784d6b1d9f4de914535eee5a450b39a15d1ab9a676ffce790a408a3e EBUILD openct-0.6.20-r5.ebuild 1928 BLAKE2B fa0fa24fbca2411f1b7bc7025ab0c5105cd412b0898486950c0caf76b57db8fd0d02e380576d61469d5f490c8f3a8cb18bf59b70e9b29e015c803bb192179e8b SHA512 d2f1a1013771d3ae4e39b55bbc823f76a6a8e52e173d95b29232ee9cc72d15632c3fd1b95a76e453b8cf37b3cf4bc2bd44c4473c8f992d337e1bb673933c21f5 +EBUILD openct-0.6.20-r6.ebuild 2067 BLAKE2B 9d65c716bf559d3e28a29ce38e8cea6acf63491f3250e513a41d5a9eac68f60228885b452cc7e3da96fbb13afdc9a9da046771a4bbe11383bab4ea47f96edb06 SHA512 353a125d27b55707f7a33585ead0b42f7565d44242c71e4e9cf77ba8cf58b42a5877e1a65fa38ff17c6910fd47724ef863af24304e2f3643ef4c206f6510e8b5 MISC metadata.xml 560 BLAKE2B 255522c34b5e1d9bf69da73ff2ab70a1df6703acab0e703c752bf6d03312d2b58974b08aede380deed3250025a21592e99cbd399cab8813d943b091042d597f7 SHA512 6abe85fb17bca4935dc62b3f1a55e4c54f7bc39c5d8ab43fd7081b6e5bbe5690551a8a04a9824a541f70833d652d0c4958ba35df32ec91b33e0ffe775d3cb26f diff --git a/dev-libs/openct/files/openct-0.6.20-incompatible-pointers.patch b/dev-libs/openct/files/openct-0.6.20-incompatible-pointers.patch new file mode 100644 index 000000000000..36444bd9d2a8 --- /dev/null +++ b/dev-libs/openct/files/openct-0.6.20-incompatible-pointers.patch @@ -0,0 +1,26 @@ +Correct types so all pointer types are compatibile. +https://bugs.gentoo.org/920193 +diff '--color=auto' -ru openct-0.6.20.old/src/ifd/process.c openct-0.6.20/src/ifd/process.c +--- openct-0.6.20.old/src/ifd/process.c 2025-01-20 19:26:08.226266610 +0400 ++++ openct-0.6.20/src/ifd/process.c 2025-01-20 19:28:06.168582649 +0400 +@@ -450,7 +450,7 @@ + ct_tlv_parser_t * args, ct_tlv_builder_t * resp) + { + unsigned char *data; +- unsigned int data_len; ++ size_t data_len; + unsigned int address; + int rc; + +diff '--color=auto' -ru openct-0.6.20.old/src/include/openct/socket.h openct-0.6.20/src/include/openct/socket.h +--- openct-0.6.20.old/src/include/openct/socket.h 2025-01-20 19:34:34.479330790 +0400 ++++ openct-0.6.20/src/include/openct/socket.h 2025-01-20 19:36:19.708720553 +0400 +@@ -37,7 +37,7 @@ + listener : 1; + + /* events to poll for */ +- int events; ++ short events; + + void * user_data; + int (*poll)(struct ct_socket *, struct pollfd *); diff --git a/dev-libs/openct/openct-0.6.20-r6.ebuild b/dev-libs/openct/openct-0.6.20-r6.ebuild new file mode 100644 index 000000000000..7354b74d3c97 --- /dev/null +++ b/dev-libs/openct/openct-0.6.20-r6.ebuild @@ -0,0 +1,89 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic udev + +DESCRIPTION="library for accessing smart card terminals" +HOMEPAGE="https://github.com/OpenSC/openct/wiki" +SRC_URI="https://downloads.sourceforge.net/opensc/${PN}/${P}.tar.gz" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="doc debug pcsc-lite selinux usb" + +DEPEND=" + pcsc-lite? ( >=sys-apps/pcsc-lite-1.7.2-r1:= ) + usb? ( virtual/libusb:0 ) + dev-libs/libltdl:0= +" +RDEPEND=" + ${DEPEND} + acct-group/openct + acct-user/openctd + selinux? ( sec-policy/selinux-openct ) +" +BDEPEND="doc? ( app-text/doxygen )" + +PATCHES=( + "${FILESDIR}"/${P}-automake.patch + "${FILESDIR}"/${P}-slibtool.patch + "${FILESDIR}"/${P}-incompatible-pointers.patch +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + use debug && append-cppflags -DDEBUG_IFDH + + econf \ + --localstatedir=/var \ + --with-udev="$(get_udevdir)" \ + --enable-non-privileged \ + --with-daemon-user=openctd \ + --with-daemon-groups=usb \ + --enable-shared \ + --disable-static \ + $(use_enable doc) \ + $(use_enable doc api-doc) \ + $(use_enable pcsc-lite pcsc) \ + $(use_with pcsc-lite bundle /usr/$(get_libdir)/readers/usb) \ + $(use_enable usb) +} + +src_install() { + default + + find "${ED}" -name '*.la' -delete || die + rm -f "${ED}"/usr/$(get_libdir)/openct-ifd.* || die + + udev_newrules etc/openct.udev 70-openct.rules + + newinitd "${FILESDIR}"/openct.initd openct +} + +pkg_postinst() { + elog + elog "You need to edit /etc/openct.conf to enable serial readers." + elog + elog "You should add \"openct\" to your default runlevel. To do so" + elog "type \"rc-update add openct default\"." + elog + elog "You need to be a member of the (newly created) group openct to" + elog "access smart card readers connected to this system. Set users'" + elog "groups with usermod -G. root always has access." + elog + + # bug https://bugs.gentoo.org/843071 + udev_reload + +} + +pkg_postrm() { + udev_reload +} diff --git a/dev-libs/openssl/Manifest b/dev-libs/openssl/Manifest index 16daf6b37b9f..ac26c261b833 100644 --- a/dev-libs/openssl/Manifest +++ b/dev-libs/openssl/Manifest @@ -15,23 +15,38 @@ DIST openssl-1.1.1w.tar.gz 9893384 BLAKE2B 2fdba6ca0188928ab2f74e606136afca66cfa DIST openssl-1.1.1w.tar.gz.asc 833 BLAKE2B d990be69ed913509d52b78e7473668429d4485adb29ef03e4612dd0cadbac4f04c7289d8e5baf6f397bcedeaac9f802f18fc719964d882ae0514ed1ca16ae277 SHA512 0f3d7aa48b1cabf8dd43e8108aeed10a4dffb4f5a244d4da9c86ea358b0c8b90c46da561d21e01c567c2f5035d824ed82ec104aad1776b7f33a1be85990e98ef DIST openssl-3.0.15.tar.gz 15318633 BLAKE2B f2900d0894b97e86c709079ca4336d5dc508d69e91d3a4de4420c8d9344cb54dada6ea2cdd408166e53db0c652b06654e670701166b67a0a40578676e1cea535 SHA512 acd80f2f7924d90c1416946a5c61eff461926ad60f4821bb6b08845ea18f8452fd5e88a2c2c5bd0d7590a792cb8341a3f3be042fd0a5b6c9c1b84a497c347bbf DIST openssl-3.0.15.tar.gz.asc 833 BLAKE2B 43088d6ae9e95aec8cfa08c0d338d76c2299ee89a1719a39c497b25c83a4c0c2d155fa00a62b47e15a7f2889680197741390c850d62a84ec5ce27ed1bbddcd28 SHA512 8b9471074130fd26b511820a1c2586792fd0105421515734c213ae18de27b5b026261e64d4cb8f5e7b568d1f4193484ebe0e99eda9d99df72474310a568ca3bf +DIST openssl-3.0.16.tar.gz 15334967 BLAKE2B a1bcaf17c92beca6ff7f39857788120648904ef1dd25ffa2e43bd5477810e8c18751929d5ed270e7f429c569c5b5fdf069f1280646d8b4d1e879f15dfa03f7d9 SHA512 5eea2b0c60d870549fc2b8755f1220a57f870d95fbc8d5cc5abb9589f212d10945f355c3e88ff48540a7ee1c4db774b936023ca33d7c799ea82d91eef9c1c16d +DIST openssl-3.0.16.tar.gz.asc 833 BLAKE2B 5f288f4b1e3a85181a73f288c7cb2d2e6e54e09b3ba032a6074c207f1f53d2920f4cdbbc9143a60063b3426eaa0279af4b1ed59b6b909047051ce73caff03584 SHA512 8b9688ecf84cb61b2718fc898eb748a8eb1ad9125f4742b09552d81bce098753dcbc36cdee9a30adbe4127de30938d955a7af12f8619338bcf2e2e748c8e8c86 DIST openssl-3.1.7.tar.gz 15684836 BLAKE2B 1332f4b2454b6c9bf3ff2099aa343d6202bec98c6e44fba6377d5bb8efd9bf337df3a95549d874a2908f376056f6f333e6f65cbec7e27377d1ab8cbefddaa241 SHA512 bb4743c1a95148901d2d2bc51460c14cea3387c7dda9323524adbdb11334562f72aa3a873913c51ea1ffce606e675e22a74f78b3119b6a956da3f75c942cd0e2 DIST openssl-3.1.7.tar.gz.asc 833 BLAKE2B 17220aa3274a5eda3df8c04f60f87a48fcf5c773167e746bf3f9feb6cc3c03b024a2e83b1c93122b6baa073b12417e2910230f270287be7b7f2c5300814b7fda SHA512 89b6f4b913aac8b2519aac586ba0c70a3df331eb70ea79c2aa45355bfd9430ba1af3c8ea0d31b171f55036a8cc332207787cabf58da871f400d666a5ae09ce2a +DIST openssl-3.1.8.tar.gz 15706439 BLAKE2B 05d8ac054bc46ac6196470bd388ef8be2d2dd62c14bb22fff668ab8e8914bb8d89eb78119ba49839a364ca4c3683186299a9bfbf6a03d83a8630b54e668e5977 SHA512 faf066b207184a67387d4659b68de0bb89c4ec847b835998c8cc57ee4a8759f3fc3b7fe2db85f394bf8c54720ce044447168e0fa2fda6f0901c4d9a1697d9a6e +DIST openssl-3.1.8.tar.gz.asc 833 BLAKE2B b9f1f439ff373d4b3706cfd9d2518d84aca1744ae50a31c50cb7fd4aa9de1d4139fc314390353377391a99b3d6c9ea66b0160d7fed15bdf4c9a255e94654eb80 SHA512 0737d62b6971f311936908d7cf3eb6c01e1ae314709bc80cfdbe885d17c64337fd2378a1e93c932f870681efc992a8d0656625580e30cc9e3d397aa4ebb7c7e6 DIST openssl-3.2.3.tar.gz 17762604 BLAKE2B 1445336aa92d0fd9df266ad570fe2bf5701279e462dd3fccd4cf662f328bfee923dc6c72c42c1921fd38bce43e1c60cacdec3f1c2963fe0ffda6a0e8e34ac6e4 SHA512 9e9f06ab630914e32e64bfb945dfa375ea3595b3db4eb8ef68288a58909baf753b34998439907c22ff2b8561cfd3f3f6b7fbf22981479e66a98c2e92fda172a2 DIST openssl-3.2.3.tar.gz.asc 833 BLAKE2B 5a7289ed40534a058b9eb7686ce444b9d453a2973ab7ebda01c99f7245f6ba19197123f8bb3b16940d4bfbc5e313babc0249f280e55911190b47da3a47ed1e6a SHA512 e727adb88f84c48082ef0cae963bf999cce11619f7322014cc7f36c16e8375a60542f518c1b86319208cf8da33044e942b3d65208bc59fd4a5f522ab78ff1c23 +DIST openssl-3.2.4.tar.gz 17782746 BLAKE2B 079a0eb15b960a8ec89a2b2ccfa1f5e216dac325cb0857e168119fb240b6cdd78ecf723802a53d1e62e0a534be60e5459f561de764d1987e38eab466e555f994 SHA512 24712cb722ed8daff51db9deec4db982256cccd1a537d3a8690a94a6fd41815fd85cab95e551212938f28a61ed658d285b07734f7b88d8a0b18a318602d424f2 +DIST openssl-3.2.4.tar.gz.asc 833 BLAKE2B 27c55522889843a14133535d47ad1fc7b2eba7a6f7fd0f78a8be8f36492ff53932b1a50131e90a37c3c22ba60b188b9dff98717756c4a20f361b22d069482399 SHA512 a381b24bd47a2e00657a29af02aa890b22186de70ba3ac3776ff5d4fb40579e9fd8356aacb6ce230d40adb6765e906b8d9bda54f98cc8887e98069f9bfd10140 DIST openssl-3.3.2.tar.gz 18076531 BLAKE2B cc53d45418673bc2a406d6697b8bd17ff6c726463c4ccc87bb2fa5a6592d0d178dc8cfeb2fbb980ea354a5dc2c86f31c48453427c6937896c7221273e623c9b5 SHA512 5ae47bf1aed2740a33ba5df7dc7345a6738aa6bfa3c9c4de5e51742485e24b25192988d7a2c1b8201ef70056ad8abd0ca78b3d55abe24c0b0373d83b47ed9b74 DIST openssl-3.3.2.tar.gz.asc 833 BLAKE2B c318e2dcef085b83ced77048dc136d9bc8438d49a7985f3c6ebd4ffd0e5e290ece47e8fd1074c6cc056e87b2bae2101dd58b8d70dbc0eb99aa134d776125439c SHA512 981f8438bbd541b97e745aca1bb77cde68900ce4b5ffefc9eccc2f18c675292203f6b4c7bffefde2256a442b7310d8438279b52fb21aac65921e9a529bc00067 +DIST openssl-3.3.3.tar.gz 18102481 BLAKE2B c2033e357963e339faaf3b35b18c660da48616a6228e802a3ef1c4a6a51a570db42970d973868c4d57afcd3953403c9ff047317cac49a865af628abde99c2ade SHA512 4f53d963c258305f0e926d2e56fc73359c3d62adb25bfce06889eef3278652d073b9e2a4100a884c0d8ee90cb924ba258a5de4e7be6d2c7c49765167e95430d7 +DIST openssl-3.3.3.tar.gz.asc 833 BLAKE2B dbb8436f7e8e015eca740ccddcbfc159884089c7540e47d03d65efcc607a28d29889f7eaf53412e50362d201941df3061e7877b6216215d4cab04bdb149d23a7 SHA512 2fde16310fc0a2985ea9df5b8485c17391a589297679687634b833b453e9c5d04ddb3b8b4f117259af9b13813ca0ea9ee6cec2d854dfc7e1add3dbb78962ccd0 +DIST openssl-3.4.1.tar.gz 18346056 BLAKE2B 328a2a4f0536b15ffe6421afc99bdb5dcdf3d29f44437fdd80bbf4089f5f2658ca10907e033eda2e04c6b862e49b150ea59d8ab1807d14a3dcf64e10c32e78af SHA512 1de6307c587686711f05d1e96731c43526fa3af51e4cd94c06c880954b67f6eb4c7db3177f0ea5937d41bc1f8cadcf5bce75025b5c1a46a469376960f1001c5f +DIST openssl-3.4.1.tar.gz.asc 833 BLAKE2B 321a5593ce5a1ff07553dcca722b0da0e9e9f3ef639176d663b6a92be2a32d3379536a788930f7f78dccc4e4d4922fe696f8d1bd65aa54f51c3c75accad34b1f SHA512 b007d5a35a7904d5d5e053e232a54b2ba75fb43f80bf1fe2175528e86e31cca8161da09d7417b50359008ce1955497e4d11c46794f15cc7c3220aa92eff99ccb EBUILD openssl-1.0.2u-r1.ebuild 9768 BLAKE2B 46d26e3dd92c898c6fe715e5d07b4e2e9c3e3a66d3566798774d1d30ca267c8815beb1a777c75d555060934761c43f7b92d89fca73617262ea33a7cab96d44e6 SHA512 3888a1bc9a604bbbd04dd4bc843ba79dbadc85d8a396dde3d657bc05423478f225896c5274b883c309a9b79da42738342a83bba9f7157cda16e46c6a8b7ba84b EBUILD openssl-1.1.1w.ebuild 8230 BLAKE2B 6f6b6e79512141bac0507e76e61d341ccc4088c6f86a7979c48401d78dec8d6e90b54a73af63a956d1704fdda8ffc9c83f4a06254f6be51b8569f2856dfae2b3 SHA512 81087aa984e4b385da11d8c533a31ddb39c49c96b1e9e281ae57c6901c148cc8e226475b650ea58db8cb629f344c2449cd581aae548f7c30829ceb8b55897fa4 EBUILD openssl-3.0.15-r1.ebuild 8611 BLAKE2B f2aa72c039df90bac1c866ea9830c99ad87dbc5db279b17977580363a347c8fb739062f170fac50f82e5dd3d8ca113c40386395f09567f4861135a2c8b8970ec SHA512 7822b6a91cc77feb6bf63b12d0ec277076c668924fa48220fe31c39291b75a8d9a634306f51fc4e1c846231262e96f89dac394bf3d2478c63fe355d83f9f5462 +EBUILD openssl-3.0.16.ebuild 8700 BLAKE2B fcbca7c445b385f2ea38f17c312e44d4f6220352ae70d8405fef454fb06a6b69c23b70cfcefee89164edf21f74691fd5d1e9fba15b7a72c28cafae103d74243b SHA512 a0b84f694000e14d7f7ef018ce780622735641929a489232aca45224606dac1f0805f893090810e09120ba162bc505c1426fd61e8aaa207ec2413cf1598f8c05 EBUILD openssl-3.0.9999.ebuild 8700 BLAKE2B fcbca7c445b385f2ea38f17c312e44d4f6220352ae70d8405fef454fb06a6b69c23b70cfcefee89164edf21f74691fd5d1e9fba15b7a72c28cafae103d74243b SHA512 a0b84f694000e14d7f7ef018ce780622735641929a489232aca45224606dac1f0805f893090810e09120ba162bc505c1426fd61e8aaa207ec2413cf1598f8c05 EBUILD openssl-3.1.7-r1.ebuild 8646 BLAKE2B b6083db1d29ee53751936273331b87cc69839722e0f89291c57f19ef2c10cd5468742468ba0a06a0fa0782eb758652a0f4103b60781056721028daade46f45c8 SHA512 2a8f99c7398738b46bffcae122a52d25033bd25a7411cb8e4a735a4e54fe8afd1e9d26933036c787d62d4b93b7aa604b2ffd2c0e302b6c4e6ed89aee03e80366 +EBUILD openssl-3.1.8.ebuild 8733 BLAKE2B 938edfbf863f8240ac1fd723d4aceeed16a83de958e18a564ae59fcff6a3e3a9645444fec7b633f890b4cc6554e4639ca4b0a3a42f80af8d6fd7658594375b2b SHA512 62f0f6471c38d7c00f2a2db7b1d3bd4631742d72fa33b363a7ac7264c186eb54211f9d64e82e72af126acdcb67350d016d2cf15c87e17c7d6431002db6102a24 EBUILD openssl-3.1.9999.ebuild 8734 BLAKE2B 3d468e940fd13eaddc14cf9758b144d34d781b60cb17a49439d48ce4b444f318d4dc6f6ff02b5124529b20d55bbf3d77b4c18acab48efe9a7b8767c7216557e9 SHA512 6b3d94f0d04c62aa868380dda7bb72dc610ddd81152ec9168ce638a277933b8f2cc45da598eb6a637befbcc84c6de0d48ddce6e27811cea01fa6ff258d44fa62 EBUILD openssl-3.2.3-r1.ebuild 9289 BLAKE2B 3bb6d1e09f10633340acc1c8eb75b9669f6e1d25c552aecfca8f1d595b77be5727f659ea3d5348d5104e5e12d16deb598c3ddd1dd5c2489964b04be28a1f1d8e SHA512 6e25cbaa45b4a6052700fb06cdc68dac5f4a02b63101877e2570db5d943208f3169423846ddd49996f9aca6c2c43fd5759160f17bf4771346f7b787a56fc8841 +EBUILD openssl-3.2.4.ebuild 9157 BLAKE2B 55b0865ea7ded4c74aa2c7487f327f27550e09140a80af655ca7e34ed78828aa17e045cd24ac55fbc6294a84e7be853f1892c9be54ad19d5d55144a9a2be087d SHA512 5ac57df3773edf939ac970b77880adf43261c94bb5dac9edf82d1a014e60bba2847442d62f3138d8512232e91bd81e844031ec2fac38fb10dc4d321920232b57 EBUILD openssl-3.2.9999.ebuild 9079 BLAKE2B 711a1c456e161580e5ceaabb68585ba2f7c6ef7b1d6afb2435647bbbe25d0905019981f0d9517a7078284141f6c15e93d8f2a6077816da9bba57f02e52d8f3e5 SHA512 a444ed5d89f926fc1930621817bfc8c7b445b272dd65551a51b62c46ebd9b374cc686330b87002279f53cd3ffe03e127a2c1833f338ed82334217ca294c4d3d7 EBUILD openssl-3.3.2-r1.ebuild 9327 BLAKE2B 7fc2ce5c4ecf37f2d0de5e41bae4ad021c1c0f9f8b24fcab20457ee69505b6946e38bd5359414fff38cb9331897e4325923747bc052e38fb5e2423ea2e1554a6 SHA512 1bd1876eadca7aaa521b70cd6b2323dc2114c1de9d1edd86f9434b80d2e36b45ce8aabcdbab00aa610e2116aecc72f142b36fc6e883e4ee2612efa5e848dd186 -EBUILD openssl-3.3.2-r2.ebuild 9379 BLAKE2B c0d2710024882dbfe0e0edf95ec6bf04f5abd6fbb3ab00916d78c6c8a415dc6094e9427f6b760c243dc328b692aa7b9da0c941c3f9b66b29e6da7cd28fbb5442 SHA512 689171d4723a854830a322aa0a0889fe3e16d41348278f375eba738cda597c2029abcd0942ec2f20f772837d7664bb496145dfe4c34bf4ed945da5e724b5a4f7 +EBUILD openssl-3.3.2-r2.ebuild 9376 BLAKE2B debd253964710c5be5604ad2e02716c83deed3b4c5635bef2cb1467e69d024208c68fd3db6da91e7983461dfd3f878e098d1a6302aa9d8e2acde46be2c377141 SHA512 6e2bd5b754a011d17d1e9b0b31d8dc8031742641659ad57aa37e090b32ad812b398b3b517caf13312a7c7140045d3d9a86b00211ee36e1ff94e23ed53c8cd12e EBUILD openssl-3.3.2-r3.ebuild 9424 BLAKE2B a2a82568781852798c688006c4b13571730e4537eb8f020af42e1c5318475575fc1894013b2696b610667f6018ad8692b169bece838917b853e41400095bc126 SHA512 18586f65286613b3e4d6da331eeaae45e872f4e249344d8c8e5bbdd02d5b093edf12a33d038ec8fdfc70306eb028fc1c0c3f84ed89a9589bdcb5192c723b4c64 +EBUILD openssl-3.3.3.ebuild 9173 BLAKE2B 45eb3fa96783446fa04acb7227e6d853dd363ebef642f421d0e171d48e42158854fad35c494b5073406bae00f2082d6c5dbb038e3db61f030c6316c44d8c8db8 SHA512 60604caa97d7dfecdc3bb449840cd47c0414107df06fa3c434e56054adea5804a5e21a786936e42f914086fb56a6669276b23bde43084f0ca866538b589f4069 EBUILD openssl-3.3.9999.ebuild 9117 BLAKE2B 0ea48090d34a85fd8002dd3a36c533199c3f145ef0d7784468d8ca1aa81b531ac55a63cf9e55a035f2cb15f03baeccfcf96c7de94e45f0d2e35567a35c00e50e SHA512 f09b49a4615f615d0ed4c93b4f84e37ad543764dab9ef9ff20f4561507a3da3b90a0aeb1511fc6773e42b3ff574d1da276b5776bbc924453562e6ce5fa1b6822 +EBUILD openssl-3.4.1.ebuild 9120 BLAKE2B 368aef5a81ae92dae2b5c85f723687f93d847a8b4514ff65b98281f319fa610384fde7c6eee66db79b2ad42396e174aeab5eb98cf32bf1aa3ed2cb96344f04da SHA512 0ee32c07b8a0b7985e7530a4cb233f599443cd44d58d4e896c4e7c1e75e5430fb7c5e230e474a601f1c1a586ec8d877968b1d88b7c01884bfc0f69a921fa1b58 EBUILD openssl-3.4.9999.ebuild 9117 BLAKE2B 0ea48090d34a85fd8002dd3a36c533199c3f145ef0d7784468d8ca1aa81b531ac55a63cf9e55a035f2cb15f03baeccfcf96c7de94e45f0d2e35567a35c00e50e SHA512 f09b49a4615f615d0ed4c93b4f84e37ad543764dab9ef9ff20f4561507a3da3b90a0aeb1511fc6773e42b3ff574d1da276b5776bbc924453562e6ce5fa1b6822 MISC metadata.xml 1674 BLAKE2B 2195a6538e1b4ec953c707460988f153e40abe7495fd761403c9a54b44ecb7cb5c69ac37ac7d4d18bc0086cf9b4accaaac19926fe5b2ac4b2c547ce1c9e08a6d SHA512 d4eda999c1027f9d8102c59275665f5b01d234c4a7636755a6d3c64b9aad2a657d14256b1527d9b7067cb653458b058db7f5bb20873e48927291092d9ccdd1c6 diff --git a/dev-libs/openssl/openssl-3.0.16.ebuild b/dev-libs/openssl/openssl-3.0.16.ebuild new file mode 100644 index 000000000000..6d7eefcece55 --- /dev/null +++ b/dev-libs/openssl/openssl-3.0.16.ebuild @@ -0,0 +1,288 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openssl.org.asc +inherit edo flag-o-matic linux-info toolchain-funcs +inherit multilib multilib-minimal multiprocessing preserve-libs + +DESCRIPTION="Robust, full-featured Open Source Toolkit for the Transport Layer Security (TLS)" +HOMEPAGE="https://openssl-library.org/" + +MY_P=${P/_/-} + +if [[ ${PV} == *9999 ]] ; then + [[ ${PV} == *.*.9999 ]] && EGIT_BRANCH="openssl-${PV%%.9999}" + EGIT_REPO_URI="https://github.com/openssl/openssl.git" + + inherit git-r3 +else + inherit verify-sig + SRC_URI=" + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz + verify-sig? ( + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz.asc + ) + " + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-openssl-20240920 )" +fi + +S="${WORKDIR}"/${MY_P} + +LICENSE="Apache-2.0" +SLOT="0/3" # .so version of libssl/libcrypto +IUSE="+asm cpu_flags_x86_sse2 fips ktls rfc3779 sctp static-libs test tls-compression vanilla weak-ssl-ciphers" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + tls-compression? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,${MULTILIB_USEDEP}] ) +" +BDEPEND+=" + >=dev-lang/perl-5 + sctp? ( >=net-misc/lksctp-tools-1.0.12 ) + test? ( + sys-apps/diffutils + app-alternatives/bc + sys-process/procps + ) +" +DEPEND="${COMMON_DEPEND}" +RDEPEND="${COMMON_DEPEND}" +PDEPEND="app-misc/ca-certificates" + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/openssl/configuration.h +) + +pkg_setup() { + if use ktls ; then + if kernel_is -lt 4 18 ; then + ewarn "Kernel implementation of TLS (USE=ktls) requires kernel >=4.18!" + else + CONFIG_CHECK="~TLS ~TLS_DEVICE" + ERROR_TLS="You will be unable to offload TLS to kernel because CONFIG_TLS is not set!" + ERROR_TLS_DEVICE="You will be unable to offload TLS to kernel because CONFIG_TLS_DEVICE is not set!" + use test && CONFIG_CHECK+=" ~CRYPTO_USER_API_SKCIPHER" + + linux-info_pkg_setup + fi + fi + + [[ ${MERGE_TYPE} == binary ]] && return + + # must check in pkg_setup; sysctl doesn't work with userpriv! + if use test && use sctp ; then + # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel" + # if sctp.auth_enable is not enabled. + local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null) + if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]] ; then + die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!" + fi + fi +} + +src_prepare() { + # Make sure we only ever touch Makefile.org and avoid patching a file + # that gets blown away anyways by the Configure script in src_configure + rm -f Makefile || die + + if ! use vanilla ; then + PATCHES+=( + # Add patches which are Gentoo-specific customisations here + ) + fi + + default + + if use test && use sctp && has network-sandbox ${FEATURES} ; then + einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..." + rm test/recipes/80-test_ssl_new.t || die + fi + + # Test fails depending on kernel configuration, bug #699134 + rm test/recipes/30-test_afalg.t || die +} + +src_configure() { + # Keep this in sync with app-misc/c_rehash + SSL_CNF_DIR="/etc/ssl" + + # Quiet out unknown driver argument warnings since openssl + # doesn't have well-split CFLAGS and we're making it even worse + # and 'make depend' uses -Werror for added fun (bug #417795 again) + tc-is-clang && append-flags -Qunused-arguments + + # We really, really need to build OpenSSL w/ strict aliasing disabled. + # It's filled with violations and it *will* result in miscompiled + # code. This has been in the ebuild for > 10 years but even in 2022, + # it's still relevant: + # - https://github.com/llvm/llvm-project/issues/55255 + # - https://github.com/openssl/openssl/issues/12247 + # - https://github.com/openssl/openssl/issues/18225 + # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057 + # Don't remove the no strict aliasing bits below! + filter-flags -fstrict-aliasing + append-flags -fno-strict-aliasing + # The OpenSSL developers don't test with LTO right now, it leads to various + # warnings/errors (which may or may not be false positives), it's considered + # unsupported, and it's not tested in CI: https://github.com/openssl/openssl/issues/18663. + filter-lto + + append-flags $(test-flags-CC -Wa,--noexecstack) + + # bug #895308 + append-atomic-flags + # Configure doesn't respect LIBS + export LDLIBS="${LIBS}" + + # bug #197996 + unset APPS + # bug #312551 + unset SCRIPTS + # bug #311473 + unset CROSS_COMPILE + + tc-export AR CC CXX RANLIB RC + + multilib-minimal_src_configure +} + +multilib_src_configure() { + use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; } + + local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal") + + # See if our toolchain supports __uint128_t. If so, it's 64bit + # friendly and can use the nicely optimized code paths, bug #460790. + #local ec_nistp_64_gcc_128 + # + # Disable it for now though (bug #469976) + # Do NOT re-enable without substantial discussion first! + # + #echo "__uint128_t i;" > "${T}"/128.c + #if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then + # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128" + #fi + + local sslout=$(bash "${FILESDIR}/gentoo.config-1.0.4") + einfo "Using configuration: ${sslout:-(openssl knows best)}" + + # https://github.com/openssl/openssl/blob/master/INSTALL.md#enable-and-disable-features + local myeconfargs=( + ${sslout} + + $(use cpu_flags_x86_sse2 || echo "no-sse2") + enable-camellia + enable-ec + enable-ec2m + enable-sm2 + enable-srp + $(use elibc_musl && echo "no-async") + enable-idea + enable-mdc2 + enable-rc5 + $(use fips && echo "enable-fips") + $(use_ssl asm) + $(use_ssl ktls) + $(use_ssl rfc3779) + $(use_ssl sctp) + $(use test || echo "no-tests") + $(use_ssl tls-compression zlib) + $(use_ssl weak-ssl-ciphers) + + --prefix="${EPREFIX}"/usr + --openssldir="${EPREFIX}"${SSL_CNF_DIR} + --libdir=$(get_libdir) + + shared + threads + ) + + edo perl "${S}/Configure" "${myeconfargs[@]}" +} + +multilib_src_compile() { + emake build_sw + + if multilib_is_native_abi; then + emake build_docs + fi +} + +multilib_src_test() { + # VFP = show subtests verbosely and show failed tests verbosely + # Normal V=1 would show everything verbosely but this slows things down. + emake HARNESS_JOBS="$(makeopts_jobs)" -Onone VFP=1 test +} + +multilib_src_install() { + # Only -j1 is supported for the install targets: + # https://github.com/openssl/openssl/issues/21999#issuecomment-1771150305 + emake DESTDIR="${D}" -j1 install_sw + if use fips; then + emake DESTDIR="${D}" -j1 install_fips + # Regen this in pkg_preinst, bug 900625 + rm "${ED}${SSL_CNF_DIR}"/fipsmodule.cnf || die + fi + + if multilib_is_native_abi; then + emake DESTDIR="${D}" -j1 install_ssldirs + emake DESTDIR="${D}" DOCDIR='$(INSTALLTOP)'/share/doc/${PF} -j1 install_docs + fi + + # This is crappy in that the static archives are still built even + # when USE=static-libs. But this is due to a failing in the openssl + # build system: the static archives are built as PIC all the time. + # Only way around this would be to manually configure+compile openssl + # twice; once with shared lib support enabled and once without. + if ! use static-libs ; then + rm "${ED}"/usr/$(get_libdir)/lib{crypto,ssl}.a || die + fi +} + +multilib_src_install_all() { + # openssl installs perl version of c_rehash by default, but + # we provide a shell version via app-misc/c_rehash + rm "${ED}"/usr/bin/c_rehash || die + + dodoc {AUTHORS,CHANGES,NEWS,README,README-PROVIDERS}.md doc/*.txt doc/${PN}-c-indent.el + + # Create the certs directory + keepdir ${SSL_CNF_DIR}/certs + + # bug #254521 + dodir /etc/sandbox.d + echo 'SANDBOX_PREDICT="/dev/crypto"' > "${ED}"/etc/sandbox.d/10openssl + + diropts -m0700 + keepdir ${SSL_CNF_DIR}/private +} + +pkg_preinst() { + if use fips; then + # Regen fipsmodule.cnf, bug 900625 + ebegin "Running openssl fipsinstall" + "${ED}/usr/bin/openssl" fipsinstall -quiet \ + -out "${ED}${SSL_CNF_DIR}/fipsmodule.cnf" \ + -module "${ED}/usr/$(get_libdir)/ossl-modules/fips.so" + eend $? + fi + + preserve_old_lib /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} + +pkg_postinst() { + ebegin "Running 'openssl rehash ${EROOT}${SSL_CNF_DIR}/certs' to rebuild hashes (bug #333069)" + openssl rehash "${EROOT}${SSL_CNF_DIR}/certs" + eend $? + + preserve_old_lib_notify /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} diff --git a/dev-libs/openssl/openssl-3.1.8.ebuild b/dev-libs/openssl/openssl-3.1.8.ebuild new file mode 100644 index 000000000000..046f13307a83 --- /dev/null +++ b/dev-libs/openssl/openssl-3.1.8.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openssl.org.asc +inherit edo flag-o-matic linux-info toolchain-funcs +inherit multilib multilib-minimal multiprocessing preserve-libs + +DESCRIPTION="Robust, full-featured Open Source Toolkit for the Transport Layer Security (TLS)" +HOMEPAGE="https://openssl-library.org/" + +MY_P=${P/_/-} + +if [[ ${PV} == *9999 ]] ; then + [[ ${PV} == *.*.9999 ]] && EGIT_BRANCH="openssl-${PV%%.9999}" + EGIT_REPO_URI="https://github.com/openssl/openssl.git" + + inherit git-r3 +else + inherit verify-sig + SRC_URI=" + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz + verify-sig? ( + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz.asc + ) + " + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-openssl-20240920 )" +fi + +S="${WORKDIR}"/${MY_P} + +LICENSE="Apache-2.0" +SLOT="0/$(ver_cut 1)" # .so version of libssl/libcrypto +IUSE="+asm cpu_flags_x86_sse2 fips ktls rfc3779 sctp static-libs test tls-compression vanilla weak-ssl-ciphers" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + !=sys-libs/zlib-1.2.8-r1[static-libs(+)?,${MULTILIB_USEDEP}] ) +" +BDEPEND+=" + >=dev-lang/perl-5 + sctp? ( >=net-misc/lksctp-tools-1.0.12 ) + test? ( + sys-apps/diffutils + app-alternatives/bc + sys-process/procps + ) +" +DEPEND="${COMMON_DEPEND}" +RDEPEND="${COMMON_DEPEND}" +PDEPEND="app-misc/ca-certificates" + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/openssl/configuration.h +) + +pkg_setup() { + if use ktls ; then + if kernel_is -lt 4 18 ; then + ewarn "Kernel implementation of TLS (USE=ktls) requires kernel >=4.18!" + else + CONFIG_CHECK="~TLS ~TLS_DEVICE" + ERROR_TLS="You will be unable to offload TLS to kernel because CONFIG_TLS is not set!" + ERROR_TLS_DEVICE="You will be unable to offload TLS to kernel because CONFIG_TLS_DEVICE is not set!" + use test && CONFIG_CHECK+=" ~CRYPTO_USER_API_SKCIPHER" + + linux-info_pkg_setup + fi + fi + + [[ ${MERGE_TYPE} == binary ]] && return + + # must check in pkg_setup; sysctl doesn't work with userpriv! + if use test && use sctp ; then + # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel" + # if sctp.auth_enable is not enabled. + local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null) + if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]] ; then + die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!" + fi + fi +} + +src_prepare() { + # Make sure we only ever touch Makefile.org and avoid patching a file + # that gets blown away anyways by the Configure script in src_configure + rm -f Makefile + + if ! use vanilla ; then + PATCHES+=( + # Add patches which are Gentoo-specific customisations here + ) + fi + + default + + if use test && use sctp && has network-sandbox ${FEATURES} ; then + einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..." + rm test/recipes/80-test_ssl_new.t || die + fi + + # Test fails depending on kernel configuration, bug #699134 + rm test/recipes/30-test_afalg.t || die +} + +src_configure() { + # Keep this in sync with app-misc/c_rehash + SSL_CNF_DIR="/etc/ssl" + + # Quiet out unknown driver argument warnings since openssl + # doesn't have well-split CFLAGS and we're making it even worse + # and 'make depend' uses -Werror for added fun (bug #417795 again) + tc-is-clang && append-flags -Qunused-arguments + + # We really, really need to build OpenSSL w/ strict aliasing disabled. + # It's filled with violations and it *will* result in miscompiled + # code. This has been in the ebuild for > 10 years but even in 2022, + # it's still relevant: + # - https://github.com/llvm/llvm-project/issues/55255 + # - https://github.com/openssl/openssl/issues/12247 + # - https://github.com/openssl/openssl/issues/18225 + # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057 + # Don't remove the no strict aliasing bits below! + filter-flags -fstrict-aliasing + append-flags -fno-strict-aliasing + # The OpenSSL developers don't test with LTO right now, it leads to various + # warnings/errors (which may or may not be false positives), it's considered + # unsupported, and it's not tested in CI: https://github.com/openssl/openssl/issues/18663. + filter-lto + + append-flags $(test-flags-CC -Wa,--noexecstack) + + # bug #895308 + append-atomic-flags + # Configure doesn't respect LIBS + export LDLIBS="${LIBS}" + + # bug #197996 + unset APPS + # bug #312551 + unset SCRIPTS + # bug #311473 + unset CROSS_COMPILE + + tc-export AR CC CXX RANLIB RC + + multilib-minimal_src_configure +} + +multilib_src_configure() { + use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; } + + local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal") + + # See if our toolchain supports __uint128_t. If so, it's 64bit + # friendly and can use the nicely optimized code paths, bug #460790. + #local ec_nistp_64_gcc_128 + # + # Disable it for now though (bug #469976) + # Do NOT re-enable without substantial discussion first! + # + #echo "__uint128_t i;" > "${T}"/128.c + #if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then + # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128" + #fi + + local sslout=$(bash "${FILESDIR}/gentoo.config-1.0.4") + einfo "Using configuration: ${sslout:-(openssl knows best)}" + + # https://github.com/openssl/openssl/blob/master/INSTALL.md#enable-and-disable-features + local myeconfargs=( + ${sslout} + + $(use cpu_flags_x86_sse2 || echo "no-sse2") + enable-camellia + enable-ec + enable-ec2m + enable-sm2 + enable-srp + $(use elibc_musl && echo "no-async") + enable-idea + enable-mdc2 + enable-rc5 + $(use fips && echo "enable-fips") + $(use_ssl asm) + $(use_ssl ktls) + $(use_ssl rfc3779) + $(use_ssl sctp) + $(use test || echo "no-tests") + $(use_ssl tls-compression zlib) + $(use_ssl weak-ssl-ciphers) + + --prefix="${EPREFIX}"/usr + --openssldir="${EPREFIX}"${SSL_CNF_DIR} + --libdir=$(get_libdir) + + shared + threads + ) + + edo perl "${S}/Configure" "${myeconfargs[@]}" +} + +multilib_src_compile() { + emake build_sw + + if multilib_is_native_abi; then + emake build_docs + fi +} + +multilib_src_test() { + # VFP = show subtests verbosely and show failed tests verbosely + # Normal V=1 would show everything verbosely but this slows things down. + emake HARNESS_JOBS="$(makeopts_jobs)" -Onone VFP=1 test +} + +multilib_src_install() { + # Only -j1 is supported for the install targets: + # https://github.com/openssl/openssl/issues/21999#issuecomment-1771150305 + emake DESTDIR="${D}" -j1 install_sw + if use fips; then + emake DESTDIR="${D}" -j1 install_fips + # Regen this in pkg_preinst, bug 900625 + rm "${ED}${SSL_CNF_DIR}"/fipsmodule.cnf || die + fi + + if multilib_is_native_abi; then + emake DESTDIR="${D}" -j1 install_ssldirs + emake DESTDIR="${D}" DOCDIR='$(INSTALLTOP)'/share/doc/${PF} -j1 install_docs + fi + + # This is crappy in that the static archives are still built even + # when USE=static-libs. But this is due to a failing in the openssl + # build system: the static archives are built as PIC all the time. + # Only way around this would be to manually configure+compile openssl + # twice; once with shared lib support enabled and once without. + if ! use static-libs ; then + rm "${ED}"/usr/$(get_libdir)/lib{crypto,ssl}.a || die + fi +} + +multilib_src_install_all() { + # openssl installs perl version of c_rehash by default, but + # we provide a shell version via app-misc/c_rehash + rm "${ED}"/usr/bin/c_rehash || die + + dodoc {AUTHORS,CHANGES,NEWS,README,README-PROVIDERS}.md doc/*.txt doc/${PN}-c-indent.el + + # Create the certs directory + keepdir ${SSL_CNF_DIR}/certs + + # bug #254521 + dodir /etc/sandbox.d + echo 'SANDBOX_PREDICT="/dev/crypto"' > "${ED}"/etc/sandbox.d/10openssl + + diropts -m0700 + keepdir ${SSL_CNF_DIR}/private +} + +pkg_preinst() { + if use fips; then + # Regen fipsmodule.cnf, bug 900625 + ebegin "Running openssl fipsinstall" + "${ED}/usr/bin/openssl" fipsinstall -quiet \ + -out "${ED}${SSL_CNF_DIR}/fipsmodule.cnf" \ + -module "${ED}/usr/$(get_libdir)/ossl-modules/fips.so" + eend $? + fi + + preserve_old_lib /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} + +pkg_postinst() { + ebegin "Running 'openssl rehash ${EROOT}${SSL_CNF_DIR}/certs' to rebuild hashes (bug #333069)" + openssl rehash "${EROOT}${SSL_CNF_DIR}/certs" + eend $? + + preserve_old_lib_notify /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} diff --git a/dev-libs/openssl/openssl-3.2.4.ebuild b/dev-libs/openssl/openssl-3.2.4.ebuild new file mode 100644 index 000000000000..cc09d5f8df40 --- /dev/null +++ b/dev-libs/openssl/openssl-3.2.4.ebuild @@ -0,0 +1,296 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openssl.org.asc +inherit edo flag-o-matic linux-info toolchain-funcs +inherit multilib multilib-minimal multiprocessing preserve-libs verify-sig + +DESCRIPTION="Robust, full-featured Open Source Toolkit for the Transport Layer Security (TLS)" +HOMEPAGE="https://openssl-library.org/" + +MY_P=${P/_/-} + +if [[ ${PV} == *9999 ]] ; then + [[ ${PV} == *.*.9999 ]] && EGIT_BRANCH="openssl-${PV%%.9999}" + EGIT_REPO_URI="https://github.com/openssl/openssl.git" + + inherit git-r3 +else + inherit verify-sig + SRC_URI=" + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz + verify-sig? ( + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz.asc + ) + " + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-openssl-20240920 )" +fi + +S="${WORKDIR}"/${MY_P} + +LICENSE="Apache-2.0" +SLOT="0/$(ver_cut 1)" # .so version of libssl/libcrypto +IUSE="+asm cpu_flags_x86_sse2 fips ktls rfc3779 sctp static-libs test tls-compression vanilla verify-sig weak-ssl-ciphers" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + !=sys-libs/zlib-1.2.8-r1[static-libs(+)?,${MULTILIB_USEDEP}] ) +" +BDEPEND+=" + >=dev-lang/perl-5 + sctp? ( >=net-misc/lksctp-tools-1.0.12 ) + test? ( + sys-apps/diffutils + app-alternatives/bc + sys-process/procps + ) + verify-sig? ( >=sec-keys/openpgp-keys-openssl-20240920 ) +" +DEPEND="${COMMON_DEPEND}" +RDEPEND="${COMMON_DEPEND}" +PDEPEND="app-misc/ca-certificates" + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/openssl/configuration.h +) + +pkg_setup() { + if use ktls ; then + if kernel_is -lt 4 18 ; then + ewarn "Kernel implementation of TLS (USE=ktls) requires kernel >=4.18!" + else + CONFIG_CHECK="~TLS ~TLS_DEVICE" + ERROR_TLS="You will be unable to offload TLS to kernel because CONFIG_TLS is not set!" + ERROR_TLS_DEVICE="You will be unable to offload TLS to kernel because CONFIG_TLS_DEVICE is not set!" + use test && CONFIG_CHECK+=" ~CRYPTO_USER_API_SKCIPHER" + + linux-info_pkg_setup + fi + fi + + [[ ${MERGE_TYPE} == binary ]] && return + + # must check in pkg_setup; sysctl doesn't work with userpriv! + if use test && use sctp ; then + # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel" + # if sctp.auth_enable is not enabled. + local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null) + if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]] ; then + die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!" + fi + fi +} + +src_prepare() { + # Make sure we only ever touch Makefile.org and avoid patching a file + # that gets blown away anyways by the Configure script in src_configure + rm -f Makefile + + if ! use vanilla ; then + PATCHES+=( + # Add patches which are Gentoo-specific customisations here + ) + fi + + default + + if use test && use sctp && has network-sandbox ${FEATURES} ; then + einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..." + rm test/recipes/80-test_ssl_new.t || die + fi + + # Test fails depending on kernel configuration, bug #699134 + rm test/recipes/30-test_afalg.t || die +} + +src_configure() { + # Keep this in sync with app-misc/c_rehash + SSL_CNF_DIR="/etc/ssl" + + # Quiet out unknown driver argument warnings since openssl + # doesn't have well-split CFLAGS and we're making it even worse + # and 'make depend' uses -Werror for added fun (bug #417795 again) + tc-is-clang && append-flags -Qunused-arguments + + # We really, really need to build OpenSSL w/ strict aliasing disabled. + # It's filled with violations and it *will* result in miscompiled + # code. This has been in the ebuild for > 10 years but even in 2022, + # it's still relevant: + # - https://github.com/llvm/llvm-project/issues/55255 + # - https://github.com/openssl/openssl/issues/12247 + # - https://github.com/openssl/openssl/issues/18225 + # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057 + # Don't remove the no strict aliasing bits below! + filter-flags -fstrict-aliasing + append-flags -fno-strict-aliasing + # The OpenSSL developers don't test with LTO right now, it leads to various + # warnings/errors (which may or may not be false positives), it's considered + # unsupported, and it's not tested in CI: https://github.com/openssl/openssl/issues/18663. + filter-lto + + append-flags $(test-flags-CC -Wa,--noexecstack) + + # bug #895308 -- check inserts GNU ld-compatible arguments + [[ ${CHOST} == *-darwin* ]] || append-atomic-flags + # Configure doesn't respect LIBS + export LDLIBS="${LIBS}" + + # bug #197996 + unset APPS + # bug #312551 + unset SCRIPTS + # bug #311473 + unset CROSS_COMPILE + + tc-export AR CC CXX RANLIB RC + + multilib-minimal_src_configure +} + +multilib_src_configure() { + use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; } + + local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal") + + # See if our toolchain supports __uint128_t. If so, it's 64bit + # friendly and can use the nicely optimized code paths, bug #460790. + #local ec_nistp_64_gcc_128 + # + # Disable it for now though (bug #469976) + # Do NOT re-enable without substantial discussion first! + # + #echo "__uint128_t i;" > "${T}"/128.c + #if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then + # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128" + #fi + + local sslout=$(bash "${FILESDIR}/gentoo.config-1.0.4") + einfo "Using configuration: ${sslout:-(openssl knows best)}" + + # https://github.com/openssl/openssl/blob/master/INSTALL.md#enable-and-disable-features + local myeconfargs=( + ${sslout} + + $(use cpu_flags_x86_sse2 || echo "no-sse2") + enable-camellia + enable-ec + enable-ec2m + enable-sm2 + enable-srp + $(use elibc_musl && echo "no-async") + enable-idea + enable-mdc2 + enable-rc5 + $(use fips && echo "enable-fips") + $(use_ssl asm) + $(use_ssl ktls) + $(use_ssl rfc3779) + $(use_ssl sctp) + $(use test || echo "no-tests") + $(use_ssl tls-compression zlib) + $(use_ssl weak-ssl-ciphers) + + --prefix="${EPREFIX}"/usr + --openssldir="${EPREFIX}"${SSL_CNF_DIR} + --libdir=$(get_libdir) + + shared + threads + ) + + edo perl "${S}/Configure" "${myeconfargs[@]}" +} + +multilib_src_compile() { + emake build_sw + + if multilib_is_native_abi; then + emake build_docs + fi +} + +multilib_src_test() { + # See https://github.com/openssl/openssl/blob/master/test/README.md for options. + # + # VFP = show subtests verbosely and show failed tests verbosely + # Normal V=1 would show everything verbosely but this slows things down. + # + # -j1 here for https://github.com/openssl/openssl/issues/21999, but it + # shouldn't matter as tests were already built earlier, and HARNESS_JOBS + # controls running the tests. + emake -Onone -j1 HARNESS_JOBS="$(makeopts_jobs)" VFP=1 test +} + +multilib_src_install() { + # Only -j1 is supported for the install targets: + # https://github.com/openssl/openssl/issues/21999#issuecomment-1771150305 + emake DESTDIR="${D}" -j1 install_sw + if use fips; then + emake DESTDIR="${D}" -j1 install_fips + # Regen this in pkg_preinst, bug 900625 + rm "${ED}${SSL_CNF_DIR}"/fipsmodule.cnf || die + fi + + if multilib_is_native_abi; then + emake DESTDIR="${D}" -j1 install_ssldirs + emake DESTDIR="${D}" DOCDIR='$(INSTALLTOP)'/share/doc/${PF} -j1 install_docs + fi + + # This is crappy in that the static archives are still built even + # when USE=static-libs. But this is due to a failing in the openssl + # build system: the static archives are built as PIC all the time. + # Only way around this would be to manually configure+compile openssl + # twice; once with shared lib support enabled and once without. + if ! use static-libs ; then + rm "${ED}"/usr/$(get_libdir)/lib{crypto,ssl}.a || die + fi +} + +multilib_src_install_all() { + # openssl installs perl version of c_rehash by default, but + # we provide a shell version via app-misc/c_rehash + rm "${ED}"/usr/bin/c_rehash || die + + dodoc {AUTHORS,CHANGES,NEWS,README,README-PROVIDERS}.md doc/*.txt doc/${PN}-c-indent.el + + # Create the certs directory + keepdir ${SSL_CNF_DIR}/certs + + # bug #254521 + dodir /etc/sandbox.d + echo 'SANDBOX_PREDICT="/dev/crypto"' > "${ED}"/etc/sandbox.d/10openssl + + diropts -m0700 + keepdir ${SSL_CNF_DIR}/private +} + +pkg_preinst() { + if use fips; then + # Regen fipsmodule.cnf, bug 900625 + ebegin "Running openssl fipsinstall" + "${ED}/usr/bin/openssl" fipsinstall -quiet \ + -out "${ED}${SSL_CNF_DIR}/fipsmodule.cnf" \ + -module "${ED}/usr/$(get_libdir)/ossl-modules/fips.so" + eend $? + fi + + preserve_old_lib /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} + +pkg_postinst() { + ebegin "Running 'openssl rehash ${EROOT}${SSL_CNF_DIR}/certs' to rebuild hashes (bug #333069)" + openssl rehash "${EROOT}${SSL_CNF_DIR}/certs" + eend $? + + preserve_old_lib_notify /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} diff --git a/dev-libs/openssl/openssl-3.3.2-r2.ebuild b/dev-libs/openssl/openssl-3.3.2-r2.ebuild index cdfcb0212499..a141ad50c5fe 100644 --- a/dev-libs/openssl/openssl-3.3.2-r2.ebuild +++ b/dev-libs/openssl/openssl-3.3.2-r2.ebuild @@ -25,7 +25,7 @@ else " if [[ ${PV} != *_alpha* && ${PV} != *_beta* ]] ; then - KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" fi fi diff --git a/dev-libs/openssl/openssl-3.3.3.ebuild b/dev-libs/openssl/openssl-3.3.3.ebuild new file mode 100644 index 000000000000..3a0a20fbb0c2 --- /dev/null +++ b/dev-libs/openssl/openssl-3.3.3.ebuild @@ -0,0 +1,297 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openssl.org.asc +inherit edo flag-o-matic linux-info toolchain-funcs +inherit multilib multilib-minimal multiprocessing preserve-libs + +DESCRIPTION="Robust, full-featured Open Source Toolkit for the Transport Layer Security (TLS)" +HOMEPAGE="https://openssl-library.org/" + +MY_P=${P/_/-} + +if [[ ${PV} == *9999 ]] ; then + [[ ${PV} == *.*.9999 ]] && EGIT_BRANCH="openssl-${PV%%.9999}" + EGIT_REPO_URI="https://github.com/openssl/openssl.git" + + inherit git-r3 +else + inherit verify-sig + SRC_URI=" + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz + verify-sig? ( + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz.asc + ) + " + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* ]] ; then + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-openssl-20240920 )" +fi + +S="${WORKDIR}"/${MY_P} + +LICENSE="Apache-2.0" +SLOT="0/$(ver_cut 1)" # .so version of libssl/libcrypto +IUSE="+asm cpu_flags_x86_sse2 fips ktls +quic rfc3779 sctp static-libs test tls-compression vanilla weak-ssl-ciphers" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + !=sys-libs/zlib-1.2.8-r1[static-libs(+)?,${MULTILIB_USEDEP}] ) +" +BDEPEND+=" + >=dev-lang/perl-5 + sctp? ( >=net-misc/lksctp-tools-1.0.12 ) + test? ( + sys-apps/diffutils + app-alternatives/bc + sys-process/procps + ) +" +DEPEND="${COMMON_DEPEND}" +RDEPEND="${COMMON_DEPEND}" +PDEPEND="app-misc/ca-certificates" + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/openssl/configuration.h +) + +PATCHES=( + "${FILESDIR}"/${PN}-3.3.2-silence-warning.patch +) + +pkg_setup() { + if use ktls ; then + if kernel_is -lt 4 18 ; then + ewarn "Kernel implementation of TLS (USE=ktls) requires kernel >=4.18!" + else + CONFIG_CHECK="~TLS ~TLS_DEVICE" + ERROR_TLS="You will be unable to offload TLS to kernel because CONFIG_TLS is not set!" + ERROR_TLS_DEVICE="You will be unable to offload TLS to kernel because CONFIG_TLS_DEVICE is not set!" + use test && CONFIG_CHECK+=" ~CRYPTO_USER_API_SKCIPHER" + + linux-info_pkg_setup + fi + fi + + [[ ${MERGE_TYPE} == binary ]] && return + + # must check in pkg_setup; sysctl doesn't work with userpriv! + if use test && use sctp ; then + # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel" + # if sctp.auth_enable is not enabled. + local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null) + if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]] ; then + die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!" + fi + fi +} + +src_prepare() { + # Make sure we only ever touch Makefile.org and avoid patching a file + # that gets blown away anyways by the Configure script in src_configure + rm -f Makefile || die + + if ! use vanilla ; then + PATCHES+=( + # Add patches which are Gentoo-specific customisations here + ) + fi + + default + + if use test && use sctp && has network-sandbox ${FEATURES} ; then + einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..." + rm test/recipes/80-test_ssl_new.t || die + fi + + # Test fails depending on kernel configuration, bug #699134 + rm test/recipes/30-test_afalg.t || die +} + +src_configure() { + # Keep this in sync with app-misc/c_rehash + SSL_CNF_DIR="/etc/ssl" + + # Quiet out unknown driver argument warnings since openssl + # doesn't have well-split CFLAGS and we're making it even worse + # and 'make depend' uses -Werror for added fun (bug #417795 again) + tc-is-clang && append-flags -Qunused-arguments + + # We really, really need to build OpenSSL w/ strict aliasing disabled. + # It's filled with violations and it *will* result in miscompiled + # code. This has been in the ebuild for > 10 years but even in 2022, + # it's still relevant: + # - https://github.com/llvm/llvm-project/issues/55255 + # - https://github.com/openssl/openssl/issues/12247 + # - https://github.com/openssl/openssl/issues/18225 + # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057 + # Don't remove the no strict aliasing bits below! + filter-flags -fstrict-aliasing + append-flags -fno-strict-aliasing + # The OpenSSL developers don't test with LTO right now, it leads to various + # warnings/errors (which may or may not be false positives), it's considered + # unsupported, and it's not tested in CI: https://github.com/openssl/openssl/issues/18663. + filter-lto + + append-flags $(test-flags-CC -Wa,--noexecstack) + + # bug #895308 -- check inserts GNU ld-compatible arguments + [[ ${CHOST} == *-darwin* ]] || append-atomic-flags + # Configure doesn't respect LIBS + export LDLIBS="${LIBS}" + + # bug #197996 + unset APPS + # bug #312551 + unset SCRIPTS + # bug #311473 + unset CROSS_COMPILE + + tc-export AR CC CXX RANLIB RC + + multilib-minimal_src_configure +} + +multilib_src_configure() { + use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; } + + local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal") + + # See if our toolchain supports __uint128_t. If so, it's 64bit + # friendly and can use the nicely optimized code paths, bug #460790. + #local ec_nistp_64_gcc_128 + # + # Disable it for now though (bug #469976) + # Do NOT re-enable without substantial discussion first! + # + #echo "__uint128_t i;" > "${T}"/128.c + #if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then + # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128" + #fi + + local sslout=$(bash "${FILESDIR}/gentoo.config-1.0.4") + einfo "Using configuration: ${sslout:-(openssl knows best)}" + + # https://github.com/openssl/openssl/blob/master/INSTALL.md#enable-and-disable-features + local myeconfargs=( + ${sslout} + + $(multilib_is_native_abi || echo "no-docs") + $(use cpu_flags_x86_sse2 || echo "no-sse2") + enable-camellia + enable-ec + enable-ec2m + enable-sm2 + enable-srp + $(use elibc_musl && echo "no-async") + enable-idea + enable-mdc2 + enable-rc5 + $(use fips && echo "enable-fips") + $(use quic && echo "enable-quic") + $(use_ssl asm) + $(use_ssl ktls) + $(use_ssl rfc3779) + $(use_ssl sctp) + $(use test || echo "no-tests") + $(use_ssl tls-compression zlib) + $(use_ssl weak-ssl-ciphers) + + --prefix="${EPREFIX}"/usr + --openssldir="${EPREFIX}"${SSL_CNF_DIR} + --libdir=$(get_libdir) + + shared + threads + ) + + edo perl "${S}/Configure" "${myeconfargs[@]}" +} + +multilib_src_compile() { + emake build_sw +} + +multilib_src_test() { + # See https://github.com/openssl/openssl/blob/master/test/README.md for options. + # + # VFP = show subtests verbosely and show failed tests verbosely + # Normal V=1 would show everything verbosely but this slows things down. + # + # -j1 here for https://github.com/openssl/openssl/issues/21999, but it + # shouldn't matter as tests were already built earlier, and HARNESS_JOBS + # controls running the tests. + emake -Onone -j1 HARNESS_JOBS="$(makeopts_jobs)" VFP=1 test +} + +multilib_src_install() { + # Only -j1 is supported for the install targets: + # https://github.com/openssl/openssl/issues/21999#issuecomment-1771150305 + emake DESTDIR="${D}" -j1 install_sw + if use fips; then + emake DESTDIR="${D}" -j1 install_fips + # Regen this in pkg_preinst, bug 900625 + rm "${ED}${SSL_CNF_DIR}"/fipsmodule.cnf || die + fi + + if multilib_is_native_abi; then + emake DESTDIR="${D}" -j1 install_ssldirs + emake DESTDIR="${D}" DOCDIR='$(INSTALLTOP)'/share/doc/${PF} -j1 install_docs + fi + + # This is crappy in that the static archives are still built even + # when USE=static-libs. But this is due to a failing in the openssl + # build system: the static archives are built as PIC all the time. + # Only way around this would be to manually configure+compile openssl + # twice; once with shared lib support enabled and once without. + if ! use static-libs ; then + rm "${ED}"/usr/$(get_libdir)/lib{crypto,ssl}.a || die + fi +} + +multilib_src_install_all() { + # openssl installs perl version of c_rehash by default, but + # we provide a shell version via app-misc/c_rehash + rm "${ED}"/usr/bin/c_rehash || die + + dodoc {AUTHORS,CHANGES,NEWS,README,README-PROVIDERS}.md doc/*.txt doc/${PN}-c-indent.el + + # Create the certs directory + keepdir ${SSL_CNF_DIR}/certs + + # bug #254521 + dodir /etc/sandbox.d + echo 'SANDBOX_PREDICT="/dev/crypto"' > "${ED}"/etc/sandbox.d/10openssl + + diropts -m0700 + keepdir ${SSL_CNF_DIR}/private +} + +pkg_preinst() { + if use fips; then + # Regen fipsmodule.cnf, bug 900625 + ebegin "Running openssl fipsinstall" + "${ED}/usr/bin/openssl" fipsinstall -quiet \ + -out "${ED}${SSL_CNF_DIR}/fipsmodule.cnf" \ + -module "${ED}/usr/$(get_libdir)/ossl-modules/fips.so" + eend $? + fi + + preserve_old_lib /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} + +pkg_postinst() { + ebegin "Running 'openssl rehash ${EROOT}${SSL_CNF_DIR}/certs' to rebuild hashes (bug #333069)" + openssl rehash "${EROOT}${SSL_CNF_DIR}/certs" + eend $? + + preserve_old_lib_notify /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} diff --git a/dev-libs/openssl/openssl-3.4.1.ebuild b/dev-libs/openssl/openssl-3.4.1.ebuild new file mode 100644 index 000000000000..feb4d056141d --- /dev/null +++ b/dev-libs/openssl/openssl-3.4.1.ebuild @@ -0,0 +1,293 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openssl.org.asc +inherit edo flag-o-matic linux-info toolchain-funcs +inherit multilib multilib-minimal multiprocessing preserve-libs + +DESCRIPTION="Robust, full-featured Open Source Toolkit for the Transport Layer Security (TLS)" +HOMEPAGE="https://openssl-library.org/" + +MY_P=${P/_/-} + +if [[ ${PV} == *9999 ]] ; then + [[ ${PV} == *.*.9999 ]] && EGIT_BRANCH="openssl-${PV%%.9999}" + EGIT_REPO_URI="https://github.com/openssl/openssl.git" + + inherit git-r3 +else + inherit verify-sig + SRC_URI=" + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz + verify-sig? ( + https://github.com/openssl/openssl/releases/download/${P}/${P}.tar.gz.asc + ) + " + + #if [[ ${PV} != *_alpha* && ${PV} != *_beta* ]] ; then + # KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + #fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-openssl-20240920 )" +fi + +S="${WORKDIR}"/${MY_P} + +LICENSE="Apache-2.0" +SLOT="0/$(ver_cut 1)" # .so version of libssl/libcrypto +IUSE="+asm cpu_flags_x86_sse2 fips ktls +quic rfc3779 sctp static-libs test tls-compression vanilla weak-ssl-ciphers" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + !=sys-libs/zlib-1.2.8-r1[static-libs(+)?,${MULTILIB_USEDEP}] ) +" +BDEPEND+=" + >=dev-lang/perl-5 + sctp? ( >=net-misc/lksctp-tools-1.0.12 ) + test? ( + sys-apps/diffutils + app-alternatives/bc + sys-process/procps + ) +" +DEPEND="${COMMON_DEPEND}" +RDEPEND="${COMMON_DEPEND}" +PDEPEND="app-misc/ca-certificates" + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/openssl/configuration.h +) + +pkg_setup() { + if use ktls ; then + if kernel_is -lt 4 18 ; then + ewarn "Kernel implementation of TLS (USE=ktls) requires kernel >=4.18!" + else + CONFIG_CHECK="~TLS ~TLS_DEVICE" + ERROR_TLS="You will be unable to offload TLS to kernel because CONFIG_TLS is not set!" + ERROR_TLS_DEVICE="You will be unable to offload TLS to kernel because CONFIG_TLS_DEVICE is not set!" + use test && CONFIG_CHECK+=" ~CRYPTO_USER_API_SKCIPHER" + + linux-info_pkg_setup + fi + fi + + [[ ${MERGE_TYPE} == binary ]] && return + + # must check in pkg_setup; sysctl doesn't work with userpriv! + if use test && use sctp ; then + # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel" + # if sctp.auth_enable is not enabled. + local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null) + if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]] ; then + die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!" + fi + fi +} + +src_prepare() { + # Make sure we only ever touch Makefile.org and avoid patching a file + # that gets blown away anyways by the Configure script in src_configure + rm -f Makefile || die + + if ! use vanilla ; then + PATCHES+=( + # Add patches which are Gentoo-specific customisations here + ) + fi + + default + + if use test && use sctp && has network-sandbox ${FEATURES} ; then + einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..." + rm test/recipes/80-test_ssl_new.t || die + fi + + # Test fails depending on kernel configuration, bug #699134 + rm test/recipes/30-test_afalg.t || die +} + +src_configure() { + # Keep this in sync with app-misc/c_rehash + SSL_CNF_DIR="/etc/ssl" + + # Quiet out unknown driver argument warnings since openssl + # doesn't have well-split CFLAGS and we're making it even worse + # and 'make depend' uses -Werror for added fun (bug #417795 again) + tc-is-clang && append-flags -Qunused-arguments + + # We really, really need to build OpenSSL w/ strict aliasing disabled. + # It's filled with violations and it *will* result in miscompiled + # code. This has been in the ebuild for > 10 years but even in 2022, + # it's still relevant: + # - https://github.com/llvm/llvm-project/issues/55255 + # - https://github.com/openssl/openssl/issues/12247 + # - https://github.com/openssl/openssl/issues/18225 + # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057 + # Don't remove the no strict aliasing bits below! + filter-flags -fstrict-aliasing + append-flags -fno-strict-aliasing + # The OpenSSL developers don't test with LTO right now, it leads to various + # warnings/errors (which may or may not be false positives), it's considered + # unsupported, and it's not tested in CI: https://github.com/openssl/openssl/issues/18663. + filter-lto + + append-flags $(test-flags-CC -Wa,--noexecstack) + + # bug #895308 -- check inserts GNU ld-compatible arguments + [[ ${CHOST} == *-darwin* ]] || append-atomic-flags + # Configure doesn't respect LIBS + export LDLIBS="${LIBS}" + + # bug #197996 + unset APPS + # bug #312551 + unset SCRIPTS + # bug #311473 + unset CROSS_COMPILE + + tc-export AR CC CXX RANLIB RC + + multilib-minimal_src_configure +} + +multilib_src_configure() { + use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; } + + local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal") + + # See if our toolchain supports __uint128_t. If so, it's 64bit + # friendly and can use the nicely optimized code paths, bug #460790. + #local ec_nistp_64_gcc_128 + # + # Disable it for now though (bug #469976) + # Do NOT re-enable without substantial discussion first! + # + #echo "__uint128_t i;" > "${T}"/128.c + #if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then + # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128" + #fi + + local sslout=$(bash "${FILESDIR}/gentoo.config-1.0.4") + einfo "Using configuration: ${sslout:-(openssl knows best)}" + + # https://github.com/openssl/openssl/blob/master/INSTALL.md#enable-and-disable-features + local myeconfargs=( + ${sslout} + + $(multilib_is_native_abi || echo "no-docs") + $(use cpu_flags_x86_sse2 || echo "no-sse2") + enable-camellia + enable-ec + enable-ec2m + enable-sm2 + enable-srp + $(use elibc_musl && echo "no-async") + enable-idea + enable-mdc2 + enable-rc5 + $(use fips && echo "enable-fips") + $(use quic && echo "enable-quic") + $(use_ssl asm) + $(use_ssl ktls) + $(use_ssl rfc3779) + $(use_ssl sctp) + $(use test || echo "no-tests") + $(use_ssl tls-compression zlib) + $(use_ssl weak-ssl-ciphers) + + --prefix="${EPREFIX}"/usr + --openssldir="${EPREFIX}"${SSL_CNF_DIR} + --libdir=$(get_libdir) + + shared + threads + ) + + edo perl "${S}/Configure" "${myeconfargs[@]}" +} + +multilib_src_compile() { + emake build_sw +} + +multilib_src_test() { + # See https://github.com/openssl/openssl/blob/master/test/README.md for options. + # + # VFP = show subtests verbosely and show failed tests verbosely + # Normal V=1 would show everything verbosely but this slows things down. + # + # -j1 here for https://github.com/openssl/openssl/issues/21999, but it + # shouldn't matter as tests were already built earlier, and HARNESS_JOBS + # controls running the tests. + emake -Onone -j1 HARNESS_JOBS="$(makeopts_jobs)" VFP=1 test +} + +multilib_src_install() { + # Only -j1 is supported for the install targets: + # https://github.com/openssl/openssl/issues/21999#issuecomment-1771150305 + emake DESTDIR="${D}" -j1 install_sw + if use fips; then + emake DESTDIR="${D}" -j1 install_fips + # Regen this in pkg_preinst, bug 900625 + rm "${ED}${SSL_CNF_DIR}"/fipsmodule.cnf || die + fi + + if multilib_is_native_abi; then + emake DESTDIR="${D}" -j1 install_ssldirs + emake DESTDIR="${D}" DOCDIR='$(INSTALLTOP)'/share/doc/${PF} -j1 install_docs + fi + + # This is crappy in that the static archives are still built even + # when USE=static-libs. But this is due to a failing in the openssl + # build system: the static archives are built as PIC all the time. + # Only way around this would be to manually configure+compile openssl + # twice; once with shared lib support enabled and once without. + if ! use static-libs ; then + rm "${ED}"/usr/$(get_libdir)/lib{crypto,ssl}.a || die + fi +} + +multilib_src_install_all() { + # openssl installs perl version of c_rehash by default, but + # we provide a shell version via app-misc/c_rehash + rm "${ED}"/usr/bin/c_rehash || die + + dodoc {AUTHORS,CHANGES,NEWS,README,README-PROVIDERS}.md doc/*.txt doc/${PN}-c-indent.el + + # Create the certs directory + keepdir ${SSL_CNF_DIR}/certs + + # bug #254521 + dodir /etc/sandbox.d + echo 'SANDBOX_PREDICT="/dev/crypto"' > "${ED}"/etc/sandbox.d/10openssl + + diropts -m0700 + keepdir ${SSL_CNF_DIR}/private +} + +pkg_preinst() { + if use fips; then + # Regen fipsmodule.cnf, bug 900625 + ebegin "Running openssl fipsinstall" + "${ED}/usr/bin/openssl" fipsinstall -quiet \ + -out "${ED}${SSL_CNF_DIR}/fipsmodule.cnf" \ + -module "${ED}/usr/$(get_libdir)/ossl-modules/fips.so" + eend $? + fi + + preserve_old_lib /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} + +pkg_postinst() { + ebegin "Running 'openssl rehash ${EROOT}${SSL_CNF_DIR}/certs' to rebuild hashes (bug #333069)" + openssl rehash "${EROOT}${SSL_CNF_DIR}/certs" + eend $? + + preserve_old_lib_notify /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1) \ + /usr/$(get_libdir)/lib{crypto,ssl}$(get_libname 1.1) +} diff --git a/dev-libs/poco/Manifest b/dev-libs/poco/Manifest index 17eeaa327033..aa02a04ae6c1 100644 --- a/dev-libs/poco/Manifest +++ b/dev-libs/poco/Manifest @@ -1,9 +1,9 @@ AUX poco-1.10.1-iodbc-incdir.patch 369 BLAKE2B 345540ebd9c448a21e6c8adccba040a43fdf1db53cb0139f3cab5eb8ca67ca30dfa97058e4db4618d27ab2cd642e205349f5f70970fd2a4961a018aa7e1c5dac SHA512 1a155b10e98cdce8659a9308ac70e8114361a0062a1af469dc774b5d32bc00b5f1aa0e873fa5061625527ddeb006fdf29939b1899939a193d8724e491dedba10 AUX poco-1.14.0-missing-utf8proc.patch 1979 BLAKE2B 34b8b4595939a0fb95f9acc92636206e80ae0192f35e84fef292a6e62eb2ed2cdb1cd4a7f64290a281aafd7258d25a4c3883c66e6e1865facc1ca1e8bb4183ae SHA512 2b0645880aa1409b0097bfa40396c94b25f29212795f4e600226d59486266d9f605905418bf402ed28cd54419e882f498f72c0d68db460dcd4f350b473c622d2 -DIST poco-1.12.4.tar.gz 11296139 BLAKE2B 45e1214616e78041d5ca512cee46621c006fe21f51231f3261dc40ca4941eb3cd4e52db493aa826779784f9d3f35cfd08e3e9d08fb35ebec2d610fb6528c635a SHA512 730700a24b5a00d44aa85914e7d3c9eff76969a123a67315ba5e9b2d18c0ace70d2664d8a611496851f497aa4985d36685a67813a95e814461ae0fffdb460d91 DIST poco-1.13.3.tar.gz 11332562 BLAKE2B 04380cae92bbd2427873f0ea1a3fcade244ee5168390e26081983ded9faaf22e456bdd4ae87f9c77bafc92155f860ea9f56678ec2204bcd7c51a871e7f00d759 SHA512 084064fb462c9e7993d069ebdf395802af900ed92c5b294465a2c246162bb86caa3505985de329e8110d3e9fb3bc39ae9536d523843729d4ed5ce00c35289d92 DIST poco-1.14.0.tar.gz 12158142 BLAKE2B 3ae9a520941634ac9aa72d323541d6433ac2e73d4d19e0654f932ea031d17870ca4ad764a8e3c5e68d69c5dc9750d779102d80d6d810598db275f269928ae8ea SHA512 4475a0ede5d06e4ce9537295fec92fa39b8fd5635d1cfb38498be4f707bc62b4a8b57672d2a15b557114e4115cc45480d27d0c856b7bd982eeec7adad9ff2582 -EBUILD poco-1.12.4.ebuild 4220 BLAKE2B 9be84416a479873236f983cc7b7eed506361e35b6200b8b0f328bc476fec5cf6521a4991198418284136e389cd5ac2a867cf8fd4b66c5251705e781ea51ad2b8 SHA512 dd99c1db6e4e00d31dbe115a972464011b4b138c8f6ef785d3083a7112215fc7655dc199a4b3a913298ac0b9d8ca6c10d63a8d05c0d974ca17f599022f6a2109 +DIST poco-1.14.1.tar.gz 12160003 BLAKE2B 8fe985b8b3c4ab93df57fc63dbea97612c7f748ca0319b5ffea931bdd438f0d563d17e47da259cc9de30311ec5c9622c9420c64058d4c6075bff1a70a819dca9 SHA512 e192818a5f731ec6f6bddf062573d7bedfd15754157f145882c2c9d9bce497b92cf23f639f989d9e5605cb83029c4f303752cab655b525b5a5b5e5b704714725 EBUILD poco-1.13.3.ebuild 3907 BLAKE2B b570a253f8b7e3d7dc38a2e94b13d518d7e1a5e8e44b1b7d940a88013716a8598b452052ad1978af2a972a669ac4c628975ac6aad503aae0c406be49a8e16c99 SHA512 2d451bf30476b3db92d8155c3f4e60cd64288fc93c1f0a05403d5624d91073135776d8040c0b95c348199672deccb2ff60eb0fe63d07c61bea50eac3d539a768 -EBUILD poco-1.14.0-r1.ebuild 3905 BLAKE2B 1f681cd97e581b3f4bfb0698556618e19dc9353b9e72d9e941e49e61eeabcfd674b913364823873c1197dc87a42d180bf86dd644d9384c761a571b4ac52ddadb SHA512 ddbf28bb7e50d6f7596ee9b8276344772eb3a3f2993a79f699fec56451fdf9843358010a973ccc53e35f1c7053b5051f5de115f396944acf878d9015e3f374f3 +EBUILD poco-1.14.0-r1.ebuild 3901 BLAKE2B 0b9201abe4a7c1f8b5a2782507cb40f27552148f482f82eb9cb94206aea346b2a662788d5022d6e6d545c4803a12422738482f852eeaaa0d79a79986a55d4ba4 SHA512 1f8d305009064cbbe63f0855c3a640be33c34bc3212764240a00f58211cf3a1f52334f1e4397813af077bdbb3e9bc7bdf7c69a597d06ae3553a85baf8261b55a +EBUILD poco-1.14.1.ebuild 3849 BLAKE2B 455b76f94f6aad13ed614b2ade30966e641631a4762d6e96babeaabc26cf2facf95b5ba6495043c74a3b45c5553a3c657cdc9429fb371e043dedc747bf051e70 SHA512 0d341354cfc3ea1180d7f7ebdb18c7c31c52ffc9c9830abc6bb72ce34de4dcc2f7abdd0a932490fbe2254bcb4895dda79f39e6b8143de66e11d51916473a9b84 MISC metadata.xml 2947 BLAKE2B b2c04966e9be3ddebceb3098fa213f2196ac594b96cd6885e3fbc1050971e9bf9e88f234f9680ac4dcc313dd766810315066f212b4411ae56d4689c6ad07a24c SHA512 c9c386bacca78595bf35d77b89fc2935d41bf2290e486532f66e484cee039f66a553475202c78e1eb7f57caa7dec7e723469d67a043e79141f698cbeb7144ed7 diff --git a/dev-libs/poco/poco-1.12.4.ebuild b/dev-libs/poco/poco-1.12.4.ebuild deleted file mode 100644 index 53b41bdf2c35..000000000000 --- a/dev-libs/poco/poco-1.12.4.ebuild +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake - -DESCRIPTION="C++ libraries for building network-based applications" -HOMEPAGE="https://pocoproject.org/" -SRC_URI="https://github.com/pocoproject/${PN}/archive/${P}-release.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/${PN}-${P}-release" - -LICENSE="Boost-1.0" -# SHARED_LIBRARY_VERSION -> "${S}"/libversion -SLOT="0/94" -KEYWORDS="amd64 arm arm64 ppc64 x86" -IUSE="7z activerecord cppparser +data examples +file2pagecompiler iodbc +json jwt mariadb +mongodb mysql +net odbc +pagecompiler pdf pocodoc postgres prometheus sqlite +ssl test +util +xml +zip" -RESTRICT="!test? ( test )" -REQUIRED_USE=" - activerecord? ( util xml ) - 7z? ( xml ) - file2pagecompiler? ( pagecompiler ) - iodbc? ( odbc ) - jwt? ( json ssl ) - mongodb? ( data ) - mysql? ( data ) - odbc? ( data ) - postgres? ( data ) - pagecompiler? ( json net util xml ) - pocodoc? ( cppparser util xml ) - sqlite? ( data ) - ssl? ( util ) - test? ( data? ( sqlite ) json util xml ) -" - -BDEPEND="virtual/pkgconfig" -RDEPEND=" - >=dev-libs/libpcre2-10.40 - activerecord? ( !app-arch/arc ) - mysql? ( dev-db/mysql-connector-c:= ) - mariadb? ( dev-db/mariadb-connector-c:= ) - postgres? ( dev-db/postgresql:= ) - odbc? ( - iodbc? ( dev-db/libiodbc ) - !iodbc? ( dev-db/unixODBC ) - ) - sqlite? ( dev-db/sqlite:3 ) - ssl? ( - dev-libs/openssl:= - ) - xml? ( dev-libs/expat ) - zip? ( sys-libs/zlib:= ) -" -DEPEND="${RDEPEND}" - -PATCHES=( "${FILESDIR}/${PN}-1.10.1-iodbc-incdir.patch" ) - -src_prepare() { - cmake_src_prepare - - if [[ ${SLOT} != 0/$(< "${S}"/libversion) ]] ; then - die "Please update subslot in ebuild to the version in ${S}/libversion!" - fi - - if use test ; then - # ignore missing tests on experimental library - # and tests requiring running DB-servers, internet connections, etc. - sed -i -e '/testsuite/d' \ - {Data/{MySQL,ODBC},MongoDB,Net,NetSSL_OpenSSL,PDF,Redis}/CMakeLists.txt || die - # Poco expands ~ using passwd, which does not match $HOME in the build environment - sed -i -e '/CppUnit_addTest.*testExpand/d' \ - Foundation/testsuite/src/PathTest.cpp || die - # ignore failing Crypto test since upstream does not seem to care, - # see https://github.com/pocoproject/poco/issues/1209 - sed -i -e '/RSATest, testRSACipherLarge/d' \ - Crypto/testsuite/src/RSATest.cpp || die - fi - - # Fix MariaDB and MySQL detection - sed -i -e 's~/usr/include/mysql~~' \ - -e 's/mysqlclient_r/mysqlclient/' \ - -e 's/STATUS "Couldn/FATAL_ERROR "Couldn/' \ - cmake/FindMySQL.cmake || die - - # Add missing directory that breaks the build - mkdir -p Encodings/testsuite/data || die - - if ! use iodbc ; then - sed -i -e 's|iodbc||' cmake/FindODBC.cmake || die - fi -} - -src_configure() { - # apache support is dead and buggy, https://github.com/pocoproject/poco/issues/1764 - local mycmakeargs=( - -DPOCO_UNBUNDLED=ON - -DENABLE_APACHECONNECTOR=OFF - -DENABLE_ACTIVERECORD="$(usex activerecord)" - -DENABLE_ACTIVERECORD_COMPILER="$(usex activerecord)" - -DENABLE_CPPPARSER="$(usex cppparser)" - -DENABLE_CRYPTO="$(usex ssl)" - -DENABLE_DATA="$(usex data)" - -DENABLE_DATA_MYSQL="$(usex mysql)" - -DENABLE_DATA_ODBC="$(usex odbc)" - -DENABLE_DATA_POSTGRESQL="$(usex postgres)" - -DENABLE_DATA_SQLITE="$(usex sqlite)" - -DENABLE_JSON="$(usex util)" - -DENABLE_JWT="$(usex jwt)" - -DENABLE_MONGODB="$(usex mongodb)" - -DENABLE_NET="$(usex net)" - -DENABLE_NETSSL="$(usex ssl)" - -DENABLE_NETSSL_WIN=OFF - -DENABLE_PAGECOMPILER="$(usex pagecompiler)" - -DENABLE_PAGECOMPILER_FILE2PAGE="$(usex file2pagecompiler)" - -DENABLE_PDF="$(usex pdf)" - -DENABLE_POCODOC="$(usex pocodoc)" - -DENABLE_PROMETHEUS="$(usex prometheus)" - -DENABLE_SEVENZIP="$(usex 7z)" - -DENABLE_TESTS="$(usex test)" - -DENABLE_UTIL="$(usex util)" - -DENABLE_XML="$(usex xml)" - -DENABLE_ZIP="$(usex zip)" - ) - - cmake_src_configure -} - -src_test() { - POCO_BASE="${S}" cmake_src_test -E DataPostgreSQL -} - -src_install() { - cmake_src_install - - if use examples ; then - for sd in */samples ; do - docinto examples/${sd%/samples} - dodoc -r ${sd} - done - - find "${D}/usr/share/doc/${PF}/examples" \ - -iname "*.sln" -or -iname "*.vcproj" -or \ - -iname "*.vmsbuild" -or -iname "*.properties" \ - | xargs rm -v || die - fi -} diff --git a/dev-libs/poco/poco-1.14.0-r1.ebuild b/dev-libs/poco/poco-1.14.0-r1.ebuild index e93b9e8e1966..b6efc706364f 100644 --- a/dev-libs/poco/poco-1.14.0-r1.ebuild +++ b/dev-libs/poco/poco-1.14.0-r1.ebuild @@ -13,7 +13,7 @@ S="${WORKDIR}/${PN}-${P}-release" LICENSE="Boost-1.0" # SHARED_LIBRARY_VERSION -> "${S}"/libversion SLOT="0/110" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" +KEYWORDS="amd64 arm arm64 ~ppc64 x86" IUSE="7z activerecord avahi cppparser +crypt +data examples +file2pagecompiler iodbc mariadb +mongodb mysql +net odbc +pagecompiler pdf pocodoc postgres prometheus sqlite test +util +xml +zip" RESTRICT="!test? ( test )" REQUIRED_USE=" diff --git a/dev-libs/poco/poco-1.14.1.ebuild b/dev-libs/poco/poco-1.14.1.ebuild new file mode 100644 index 000000000000..26255c04501a --- /dev/null +++ b/dev-libs/poco/poco-1.14.1.ebuild @@ -0,0 +1,138 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="C++ libraries for building network-based applications" +HOMEPAGE="https://pocoproject.org/" +SRC_URI="https://github.com/pocoproject/${PN}/archive/${P}-release.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/${PN}-${P}-release" + +LICENSE="Boost-1.0" +# SHARED_LIBRARY_VERSION -> "${S}"/libversion +SLOT="0/111" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" +IUSE="7z activerecord avahi cppparser +crypt +data examples +file2pagecompiler iodbc mariadb +mongodb mysql +net odbc +pagecompiler pdf pocodoc postgres prometheus sqlite test +util +xml +zip" +RESTRICT="!test? ( test )" +REQUIRED_USE=" + activerecord? ( util xml ) + 7z? ( xml ) + file2pagecompiler? ( pagecompiler ) + iodbc? ( odbc ) + mongodb? ( data ) + mysql? ( data ) + odbc? ( data ) + postgres? ( data ) + pagecompiler? ( net util xml ) + pocodoc? ( cppparser util xml ) + sqlite? ( data ) + crypt? ( util ) + test? ( data? ( sqlite ) activerecord cppparser crypt pdf prometheus xml ) +" + +BDEPEND=" + virtual/pkgconfig +" + +RDEPEND=" + >=dev-libs/libpcre2-10.40:= + dev-libs/libutf8proc:= + + activerecord? ( !app-arch/arc ) + avahi? ( net-dns/avahi:= ) + mysql? ( dev-db/mysql-connector-c:= ) + mariadb? ( dev-db/mariadb-connector-c:= ) + postgres? ( dev-db/postgresql:= ) + odbc? ( + iodbc? ( dev-db/libiodbc ) + !iodbc? ( dev-db/unixODBC ) + ) + pdf? ( media-libs/libpng:= ) + sqlite? ( dev-db/sqlite:3 ) + crypt? ( + dev-libs/openssl:= + ) + xml? ( dev-libs/expat ) + zip? ( sys-libs/zlib:= ) +" +DEPEND="${RDEPEND}" + +src_prepare() { + cmake_src_prepare + + if [[ ${SLOT} != 0/$(< "${S}"/libversion) ]] ; then + die "Please update subslot in ebuild to the version in ${S}/libversion!" + fi + + if use test ; then + # ignore missing tests on experimental library + # and tests requiring running DB-servers, internet connections, etc. + sed -i -e '/testsuite/d' \ + {Data/{,MySQL,ODBC},MongoDB,Net,NetSSL_OpenSSL,Redis}/CMakeLists.txt || die + + # Poco expands ~ using passwd, which does not match $HOME in the build environment + sed -i -e '/CppUnit_addTest.*testExpand/d' \ + Foundation/testsuite/src/PathTest.cpp || die + fi + + sed -i 's/ENABLE_DNSSD_AVHAI/ENABLE_DNSSD_AVAHI/' DNSSD/CMakeLists.txt || die +} + +src_configure() { + # apache support is dead and buggy, https://github.com/pocoproject/poco/issues/1764 + local mycmakeargs=( + -DPOCO_UNBUNDLED=ON + -DENABLE_APACHECONNECTOR=OFF + -DENABLE_ACTIVERECORD="$(usex activerecord)" + -DENABLE_ACTIVERECORD_COMPILER="$(usex activerecord)" + -DENABLE_CPPPARSER="$(usex cppparser)" + -DENABLE_CRYPTO="$(usex crypt)" + -DENABLE_DATA="$(usex data)" + -DENABLE_DATA_MYSQL="$(usex mysql)" + -DENABLE_DATA_ODBC="$(usex odbc)" + -DENABLE_DATA_POSTGRESQL="$(usex postgres)" + -DENABLE_DATA_SQLITE="$(usex sqlite)" + -DENABLE_DNSSD="$(usex avahi)" + -DENABLE_DNSSD_AVAHI="$(usex avahi)" + -DENABLE_JSON="$(usex util)" + -DENABLE_JWT="$(usex crypt)" + -DENABLE_MONGODB="$(usex mongodb)" + -DENABLE_NET="$(usex net)" + -DENABLE_NETSSL="$(usex crypt)" + -DENABLE_NETSSL_WIN=OFF + -DENABLE_PAGECOMPILER="$(usex pagecompiler)" + -DENABLE_PAGECOMPILER_FILE2PAGE="$(usex file2pagecompiler)" + -DENABLE_PDF="$(usex pdf)" + -DENABLE_POCODOC="$(usex pocodoc)" + -DENABLE_PROMETHEUS="$(usex prometheus)" + -DENABLE_SEVENZIP="$(usex 7z)" + -DENABLE_TESTS="$(usex test)" + -DENABLE_UTIL="$(usex util)" + -DENABLE_XML="$(usex xml)" + -DENABLE_ZIP="$(usex zip)" + ) + + cmake_src_configure +} + +src_test() { + POCO_BASE="${S}" cmake_src_test -E DataPostgreSQL +} + +src_install() { + cmake_src_install + + if use examples ; then + for sd in */samples ; do + docinto examples/${sd%/samples} + dodoc -r ${sd} + done + + find "${D}/usr/share/doc/${PF}/examples" \ + -iname "*.sln" -or -iname "*.vcproj" -or \ + -iname "*.vmsbuild" -or -iname "*.properties" \ + | xargs rm -v || die + fi +} diff --git a/dev-libs/protobuf-c/Manifest b/dev-libs/protobuf-c/Manifest index b1d2d40ad8a7..dcc5c2513cb8 100644 --- a/dev-libs/protobuf-c/Manifest +++ b/dev-libs/protobuf-c/Manifest @@ -5,7 +5,9 @@ AUX protobuf-c-1.5.0-Clean-CMake.patch 4287 BLAKE2B b51be01e919ffdd3a5f5feef2c0c AUX protobuf-c-1.5.0-free-corruption.patch 1609 BLAKE2B c90b244dcea5f5534a4e4a49d2998ffbcfea734583c73bca2d3064f843749cdb2f9d511bcfd6f30b09c575f2467f6278968fe9fb8b61d58c21ecf8e5685e848e SHA512 87a280b09497fb12a0ef9862c880412751c087ebdac482ac94b34bc654bab8cbea388cb5bc047c0c2abb1c1c144a06f175956137565d9ddc87f64227e0d76462 DIST protobuf-c-1.4.1.tar.gz 513596 BLAKE2B b5e87a3154863581b81790a26b6b522c2b3ad138e966053f20c6264b4a7677d6c5bff8e27faa7c6cfa9e982b72b06e2f518a3def9f6db13241c3cb3ee9afc8f6 SHA512 190a4aa5c607853e6bf860b0974deb21e4f7f6209e810251eaca9612b59ea676779b0ca217fb1572914ffb8de3315a7d24f162b14d447ee671a9adc5b1271e41 DIST protobuf-c-1.5.0.tar.gz 507251 BLAKE2B 7b428655901f4fd74b67b75419552e7c02065a5291aed4dcc1d55b98c986caa9ccf846eb5e98e0954420c3e5bea559b0078843e00daa7b5c63465eec21e28204 SHA512 175c9fc901cab88308730eea982dd62b1e0decdceb80aa53be163f17a440b4acecb834a784beab5cd71186413a322a323f4539758a8727ca51801cf92f9bd3da +DIST protobuf-c-1.5.1.tar.gz 531693 BLAKE2B f3c8688e6d88999b24c1192a91fd96855233c811c9c87534983cca14d06158cf48f729775c529a182326c97c41184ef86fcc26e9ed706e49cf1e7994ed573b61 SHA512 35d4de5562b79056f46320552a27b8e476b92466d0a2f5c697f41b0e1c437bb0b0819c39f71accf942b74ecfcea64e42e0a1e67792eeff4a7e01fbafd84488b5 EBUILD protobuf-c-1.4.1-r2.ebuild 1342 BLAKE2B eacc99926c4effa44ba0d6da73cee4aa7e121e49a17c45bf2876708243352faacb337ad4975fbff309a64acfcba1f99afc472c1cf66c5a13b59bfec17df97ed0 SHA512 8df2975d411150e53356424b274826565f10c8abc5dfbe57ea037024b1095c4241133b971c3496a57bbc44137c09554fa0f2a4431cc4f30bc72031299ff980a9 EBUILD protobuf-c-1.5.0-r3.ebuild 1389 BLAKE2B 2b0d754cad2c9203320567425dd459b1c5a855629e2f5d05e1d26ad234599c9290dd79ceea3f86ab27463edf5ad36b710527f3a52feec11a10b1c3ea607b6def SHA512 831e38453d77606e2005718ae2831bcfab8fec5dd8838823a0399c897c6122743d683d130538beccefec9d3995fd20536e8161791ce90fe1242b150aa7adecb2 EBUILD protobuf-c-1.5.0-r4.ebuild 1479 BLAKE2B 11e9a99a01536ae7fedde0f827c09db1623ef07cd08f47e3349f72ce81f94a40c0bb6d2588c0b9370f778d27cb8e9a14eca54cf8a56f5595e48d963081d9bff9 SHA512 36393635b60b7f4a66b60ee819787aafc209a9fbbbcf0b9d7d17693a9538d12b91ee034ab5c663a1a350d40fe387d10dda5a5502e7f294638002d1d501d2956d +EBUILD protobuf-c-1.5.1.ebuild 1219 BLAKE2B cc98a236b54e5cc7e677c0e73257f24952c3cedaab488ca0c2a5e77e536d2db8de5a69af58ef2308d3f84ae4a52c47aefd110caebf678fa2ebb2055a17a13d59 SHA512 d4837248927851a873e0446b745957e5b04c7860743200ec9af56e4a73b18b7fbe05146919f77317557a05a29966f1db23f0c1cf25c50d6e616cf01121772963 MISC metadata.xml 334 BLAKE2B faf0bb965591d515842465979c2c5224d21f7cc820d529ffc6dd8081b9c6d9bb80118f7c9767844b3c855f324054463a65880bd8851a95835c70246dfa8ae1c9 SHA512 6ba2fd30a13dca3180099c390f5b715062b0b082eb977ffa9b582f29693ea1b9c00870ebf4f5783261e5f05358a9b1ccf8ed5c9b35325432721099db4676a9aa diff --git a/dev-libs/protobuf-c/protobuf-c-1.5.1.ebuild b/dev-libs/protobuf-c/protobuf-c-1.5.1.ebuild new file mode 100644 index 000000000000..c878ac17bed8 --- /dev/null +++ b/dev-libs/protobuf-c/protobuf-c-1.5.1.ebuild @@ -0,0 +1,54 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Check 'next' branch for backports. + +inherit autotools multilib-minimal + +MY_PV="${PV/_/-}" +MY_P="${PN}-${MY_PV}" + +DESCRIPTION="Protocol Buffers implementation in C" +HOMEPAGE="https://github.com/protobuf-c/protobuf-c" +SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${MY_PV}/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="BSD-2" +# Subslot == SONAME version +SLOT="0/1.0.0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc64 ~riscv ~sparc ~x86" +IUSE="static-libs" + +BDEPEND=" + >=dev-libs/protobuf-3:0 + virtual/pkgconfig +" +DEPEND=" + >=dev-libs/protobuf-3:0=[${MULTILIB_USEDEP}]" +# NOTE +# protobuf links to abseil-cpp libraries via it's .pc files. +# To cause rebuild when the abseil-cpp version changes we add it to RDEPEND only. +RDEPEND="${DEPEND} + dev-cpp/abseil-cpp:=[${MULTILIB_USEDEP}] +" + +src_prepare() { + default + eautoreconf +} + +multilib_src_configure() { + local myeconfargs=( + $(use_enable static-libs static) + --enable-year2038 + ) + + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" +} + +multilib_src_install_all() { + find "${ED}" -name '*.la' -type f -delete || die + einstalldocs +} diff --git a/dev-libs/qcoro5/Manifest b/dev-libs/qcoro5/Manifest deleted file mode 100644 index d1a992db9f46..000000000000 --- a/dev-libs/qcoro5/Manifest +++ /dev/null @@ -1,3 +0,0 @@ -DIST qcoro5-0.10.0.tar.gz 150114 BLAKE2B 8a552dc3a0e4a5963c7c9fd0638f336e6ad99491a54df3bb8ddaa6b0ee1fe8e4c6b7ffc26c25cef543e796c54bc4c625a0915755f4b538f489bc61fcd8310a6a SHA512 de2e55256d3c9d35fec3ef6dc78128801b70a5e5b8ff0f3a6f235dac17f349ea44207a7c9f35375215dbeea04cb67c3412d505d0a8a95f2b926775f804a02649 -EBUILD qcoro5-0.10.0-r1.ebuild 1557 BLAKE2B 8de5234deb7e5dc9ab95df3aa816ac9fa5fafcfa5a3e1eb864d3e4c4c7204d2ff5c64796b217c48264177ab8647e986a4e090b59c6ab1fbe45e3c68bffaba493 SHA512 b575504bd776f5c383844da5646bda57907d79eeb557e1c14d42ca74a88f27eeee1c6d5814f124a84661baaec726dc591e76ab58c57608fbee4c1dc564bfcd36 -MISC metadata.xml 748 BLAKE2B 7cda59a4ad180d77c8273dbde8472e6e4a1233a60c13fcf548ae24c4895929d7e32cf2eda6c15385ad3eea8f2eeba60b7e47722e47cdc785c06210e1b7c0b09c SHA512 16437d9046210184583bba47beded9fdd177363ef9eb885a36b2506b550e19574810d48297baafba57e1138e98a4567f00fe438ded821cd7550bf23552142351 diff --git a/dev-libs/qcoro5/metadata.xml b/dev-libs/qcoro5/metadata.xml deleted file mode 100644 index 57d397297f29..000000000000 --- a/dev-libs/qcoro5/metadata.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - kde@gentoo.org - Gentoo KDE Project - - - https://github.com/danvratil/qcoro/issues - danvratil/qcoro - - - Build dev-qt/qtnetwork support - Enable QML/QtQuick support via dev-qt/qtdeclarative - Install coroutine-friendly versions of dev-qt/qttest macros - Build dev-qt/qtwebsockets support - - diff --git a/dev-libs/qcoro5/qcoro5-0.10.0-r1.ebuild b/dev-libs/qcoro5/qcoro5-0.10.0-r1.ebuild deleted file mode 100644 index e038bbf9159b..000000000000 --- a/dev-libs/qcoro5/qcoro5-0.10.0-r1.ebuild +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake - -if [[ ${PV} == *9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/danvratil/${PN/5/}" -else - SRC_URI="https://github.com/danvratil/${PN/5/}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/${P/5/}" - KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86" -fi - -DESCRIPTION="C++ Coroutine Library for Qt5" -HOMEPAGE="https://qcoro.dvratil.cz/ https://github.com/danvratil/qcoro" - -LICENSE="MIT" -SLOT="0" -IUSE="dbus examples +network qml test testlib websockets" - -REQUIRED_USE="examples? ( network ) test? ( testlib )" -RESTRICT="!test? ( test )" - -RDEPEND=" - dev-qt/qtcore:5 - dbus? ( dev-qt/qtdbus:5 ) - network? ( dev-qt/qtnetwork:5 ) - qml? ( - dev-qt/qtdeclarative:5= - dev-qt/qtgui:5 - ) - testlib? ( dev-qt/qttest:5 ) - websockets? ( dev-qt/qtwebsockets:5 ) -" -DEPEND="${RDEPEND} - examples? ( - dev-qt/qtconcurrent:5 - dev-qt/qtnetwork:5 - dev-qt/qtwidgets:5 - ) - test? ( - dev-qt/qtconcurrent:5 - dev-qt/qttest:5 - ) -" - -src_configure() { - local mycmakeargs=( - -DUSE_QT_VERSION=5 - -DQCORO_BUILD_EXAMPLES=$(usex examples) - -DQCORO_WITH_QTDBUS=$(usex dbus) - -DQCORO_WITH_QTNETWORK=$(usex network) - -DQCORO_WITH_QML=$(usex qml) - -DQCORO_WITH_QTQUICK=$(usex qml) - -DQCORO_WITH_QTTEST=$(usex testlib) - -DBUILD_TESTING=$(usex test) - -DQCORO_WITH_QTWEBSOCKETS=$(usex websockets) - ) - cmake_src_configure -} - -src_install() { - if use examples; then - docinto examples - dodoc -r examples/* - fi - cmake_src_install -} diff --git a/dev-libs/qoauth/Manifest b/dev-libs/qoauth/Manifest deleted file mode 100644 index 986f1ef7b1f3..000000000000 --- a/dev-libs/qoauth/Manifest +++ /dev/null @@ -1,5 +0,0 @@ -AUX qoauth-1.0.1-disable-ft.patch 629 BLAKE2B c466bf98a007c645b4b38e804dce9454954b92307c268d96ac2d8db3991d70eda2b41a44628533c7191df5f1c11c2e363e78f522b535a9921d32fce5733b4080 SHA512 04d06d1989866e208510f9c726fb3a447df2020ba0c7ec169534b39075343c03e05f2dc854696c87cd007ce980dc747f0658d8e88d0ef96b77dc0c70dae923d7 -AUX qoauth-2.0.1_pre20160315-prf.patch 312 BLAKE2B 06da99ad51db25d6ff8069bb9e202cb7997b1fc7ee1d657386ccafba26d57b35b4ae22272e31ab5f71b615d4cd8ab7824be01f795e52a3dec5b82a039fc97758 SHA512 2bdd73d0b43325359edcff59d717ec18b2fc87d720d068cc8e8d04ef25eeb213050ab5ebc7991ec59c91299a5c49a2b727a5e5ad11677641b17cbd424092753f -DIST qoauth-2.0.1_pre20160315.tar.xz 45604 BLAKE2B 290d768e8661c6e8f9ae8094ec140da22f00c53cbfd9ed6ebab1f159ae82c2a0a111a9306eeab0c08ea5b0a349e07d9b7f402f14812a5688ba9860832991494c SHA512 ec44c597c7b9729645ab98e2c71c805d01eab4c0684b7ea0da6b015a052b0ad6e3aa9352ef53e36a67ff99b9f75fb9b89156ca8b23c639a70cc49aab656366c3 -EBUILD qoauth-2.0.1_pre20160315-r3.ebuild 1369 BLAKE2B b687e7c39885fa61aa286bf73191204f98bdaf96436ccd4c65304d05ad333186b5b2a45d759b378de3e3e3cca92fc02890a6f9e305a7e3fa1032f7d8e9da919c SHA512 5ff2916bf9b59bdb1001aad510cc7bc1e653078adb3bfbb27b49226644c620b348f93154ad869bd590065e5b3b52ff601b1a6a2301da31eeda4263f8e5f98e55 -MISC metadata.xml 168 BLAKE2B 2e0e000b4c3b6ca04c12903fdbe278415c05a822623c52e9aa95cbbf3d50bcb1246b7edbda7d2f6b559af8950c6374e6e0a69b76319964cfe686bf50b0604a57 SHA512 4dcf45d1809e8390a2d8155c8ebfe0dd610203e392aeab0ccd8a10f42cc8532a4925eff32b35e7a6c35598a4efd288229034ec0732299dbd8cfa0acff705fed3 diff --git a/dev-libs/qoauth/files/qoauth-1.0.1-disable-ft.patch b/dev-libs/qoauth/files/qoauth-1.0.1-disable-ft.patch deleted file mode 100644 index 1fd6fd0fc8c9..000000000000 --- a/dev-libs/qoauth/files/qoauth-1.0.1-disable-ft.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/qoauth.pro b/qoauth.pro -index f09b3be..27d7bb3 100644 ---- a/qoauth.pro -+++ b/qoauth.pro -@@ -5,6 +5,6 @@ SUBDIRS += src tests - CONFIG += ordered - - check.target = check --check.commands = ( cd tests/ut_interface && ./ut_interface ) && ( cd tests/ft_interface && ./ft_interface ) -+check.commands = ( cd tests/ut_interface && ./ut_interface ) - check.depends = sub-tests - QMAKE_EXTRA_TARGETS += check -diff --git a/tests/tests.pro b/tests/tests.pro -index d582750..e010bb0 100644 ---- a/tests/tests.pro -+++ b/tests/tests.pro -@@ -1,2 +1,2 @@ - TEMPLATE = subdirs --SUBDIRS += ut_interface ft_interface -+SUBDIRS += ut_interface diff --git a/dev-libs/qoauth/files/qoauth-2.0.1_pre20160315-prf.patch b/dev-libs/qoauth/files/qoauth-2.0.1_pre20160315-prf.patch deleted file mode 100644 index c3457b0dba41..000000000000 --- a/dev-libs/qoauth/files/qoauth-2.0.1_pre20160315-prf.patch +++ /dev/null @@ -1,15 +0,0 @@ -Point to where the headers are really installed. - ---- a/oauth.prf -+++ b/oauth.prf -@@ -1,9 +1,6 @@ --QOAUTH_INCDIR = $$[QT_INSTALL_HEADERS] -+QOAUTH_INCDIR = $$[QT_INSTALL_HEADERS]/.. - QOAUTH_LIBDIR = $$[QT_INSTALL_LIBS] - --QOAUTH_INCDIR ~= s!/qt4*!! --QOAUTH_LIBDIR ~= s!/qt4*!! -- - CONFIG *= qt - CONFIG += crypto - diff --git a/dev-libs/qoauth/metadata.xml b/dev-libs/qoauth/metadata.xml deleted file mode 100644 index 115e9d64a669..000000000000 --- a/dev-libs/qoauth/metadata.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/dev-libs/qoauth/qoauth-2.0.1_pre20160315-r3.ebuild b/dev-libs/qoauth/qoauth-2.0.1_pre20160315-r3.ebuild deleted file mode 100644 index c1a097f977e2..000000000000 --- a/dev-libs/qoauth/qoauth-2.0.1_pre20160315-r3.ebuild +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit qmake-utils - -DESCRIPTION="Qt-based library for OAuth support" -HOMEPAGE="https://github.com/ayoy/qoauth/wiki" -SRC_URI="https://dev.gentoo.org/~johu/distfiles/${P}.tar.xz" - -LICENSE="LGPL-2.1" -SLOT="5" -KEYWORDS="amd64 ~ppc64 x86" -IUSE="debug doc test" - -RESTRICT="!test? ( test )" - -BDEPEND=" - doc? ( app-text/doxygen ) -" -COMMON_DEPEND=" - app-crypt/qca:2[debug?,qt5(+)] - dev-qt/qtnetwork:5 -" -DEPEND="${COMMON_DEPEND} - test? ( dev-qt/qttest:5 ) -" -RDEPEND="${COMMON_DEPEND} - app-crypt/qca:2[ssl] - !dev-libs/qoauth:0 -" - -# disable functional tests that require network connection -# and rely on 3rd party external server (bug #341267) -PATCHES=( - "${FILESDIR}/${PN}-1.0.1-disable-ft.patch" - "${FILESDIR}/${P}-prf.patch" -) - -src_prepare() { - default - - if ! use test; then - sed -i -e '/SUBDIRS/s/tests//' ${PN}.pro || die "sed failed" - fi - - sed -i -e '/^ *docs \\$/d' \ - -e '/^ *build_all \\$/d' \ - -e 's/^\#\(!macx\)/\1/' \ - src/src.pro || die "sed failed" - - sed -i -e "s/\(.*\)lib$/\1$(get_libdir)/" src/pcfile.sh || die "sed failed" -} - -src_configure() { - eqmake5 qoauth.pro -} - -src_install() { - if use doc; then - doxygen "${S}"/Doxyfile || die "failed to generate documentation" - local HTML_DOCS=( "${S}"/doc/html/. ) - fi - - INSTALL_ROOT="${D}" default -} diff --git a/dev-libs/qxlsx/Manifest b/dev-libs/qxlsx/Manifest index 1ae525bdc1ca..224ea7702459 100644 --- a/dev-libs/qxlsx/Manifest +++ b/dev-libs/qxlsx/Manifest @@ -1,5 +1,5 @@ DIST qxlsx-1.4.8.tar.gz 4705148 BLAKE2B 5b24716f1aa99233a51b1290e12d51fc532c21b5397cae84bd524d11a977d18d7178cc3e9f6bd66b5d837bafea1872d981ce2cf4724821e2fb40ba10feb152a8 SHA512 309560bde9da6461c52e883466908d493986251b0ef89d74fb3ddcec374f8a4f9d96f61f5be96431f224484e778388be8d78244f4d8ebd7de3250e65ec60edda DIST qxlsx-1.5.0.tar.gz 4714070 BLAKE2B 47abe97544ac806139c8457bba0bd327c1df7dbc1b585e13fc061e00f35971898d59a586f441914eeb0530e5d57bbce63769239a7994875001302db0849452eb SHA512 6aa2bc848ce6a34d35e7483cd44f0503aa8be7c1a0087e3f6b4cb425501b79d636efca5ebf970a06bdc9c9a90c073f6fdcc5917eaff7751e238597393c49f038 EBUILD qxlsx-1.4.8.ebuild 991 BLAKE2B de6620752aa3b92115f768c34578f84834e30dba94979fd98fa1634e4f930f02e74279768a9192df5bb66ee7c138e2092e2285c7837f2a864928bfc9bbf5bb91 SHA512 5d478c48ce1dbe95c477b0b1092718634cef6d8b98257bb96a757c7bc36f5e871b57a74875bf77cb2f0b5618f9ed63b43e6511e1373643f559b307a9d0e09c41 -EBUILD qxlsx-1.5.0.ebuild 757 BLAKE2B 622f03a207d38f81c5014ac69d4e27084a31959d5fe74d8cb4928dfe0b68db5fc1dd2881560df19e46cc8353229168ca846a6c741585ddf0c6f463e348bbea83 SHA512 fa93b4ee8e126b6283d16a8a68d3a44ec7d9bc8f29b98a7b562ea2352a015aa38a073b685f9698247763678fbca5a636e9e83c2b66e7e7dcdff9bb8007094df7 +EBUILD qxlsx-1.5.0.ebuild 755 BLAKE2B b629ac8d50514383e28013c797a5f03fcf0694635decbf2bf0dde652a5cf822a9ee73a02507e06f17fc1ae9c5d76af10642d842de5f462d03581daf8ece53619 SHA512 c90428962c96424fa23d9e3d37a4222a66ea869814f3d427477ad1d009d60ff9288ac1de12174ebc5166bd9fbcd40b60159507234b753cafa0b59f190725f7a0 MISC metadata.xml 452 BLAKE2B ad8699296717f9a9cee2557bd07eb85b7a45ea68b104f3d516e82db2b339d5d138225b05f40443f5f9d10376b9a80136751dd39cc02f585d9cffa507520a1b4d SHA512 fade7bbfbcbba4832d816faa9f8fab1bdc5c2a734304b3557dd918ed85f21849a0ee90bb0f5c37f94857144a1223cfde3ebd97e29fed686106d3f010656d91ea diff --git a/dev-libs/qxlsx/qxlsx-1.5.0.ebuild b/dev-libs/qxlsx/qxlsx-1.5.0.ebuild index 713f0e48f28d..195552c85709 100644 --- a/dev-libs/qxlsx/qxlsx-1.5.0.ebuild +++ b/dev-libs/qxlsx/qxlsx-1.5.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -13,7 +13,7 @@ S="${WORKDIR}/QXlsx-${PV}/QXlsx" LICENSE="MIT" # soversion SLOT="0/${PV}" -KEYWORDS="~amd64 ~ppc ~ppc64 ~riscv ~x86" +KEYWORDS="amd64 ~ppc ppc64 ~riscv ~x86" RDEPEND=" dev-qt/qtbase:6=[gui] diff --git a/dev-libs/rocdbgapi/Manifest b/dev-libs/rocdbgapi/Manifest index da1259b3d8ec..f4f252bf8997 100644 --- a/dev-libs/rocdbgapi/Manifest +++ b/dev-libs/rocdbgapi/Manifest @@ -2,7 +2,9 @@ AUX rocdbgapi-6.3.0-fix-libcxx.patch 1214 BLAKE2B 941ce91241a99bfa7cbacd22e24423 DIST rocdbgapi-5.7.1.tar.gz 251913 BLAKE2B 96dc859937fdde75a3d68368b29efdd14711e256c7d3c60cd40b128e9a0c066f108c02f7d47d9d64d7ca485e85e9d56d48cac6c67088fc3fbafe44d1d23a7ce2 SHA512 e30cf6062b07ced7de1660398cd84d104e632907cfaf9bc05d29289a81a977c2272b69ff0810db201675f9d7e8476b4451c988ad9da0a13eee01fffdde839d26 DIST rocdbgapi-6.1.1.tar.gz 254274 BLAKE2B 1621dc715e2540578126ff2fa6dc30dc9db711689e82b5c750dd203aafa091c00f897425a372d4617bec25eddb7b9a44105e8c9b46eb660e197602ede2beecba SHA512 d613e633e27ad9f582b9612d7d088c3ea465c29d6520e94b4821e0340c736e556dcd4a89f8027701097ee4e2d8b55640a232d484f9fa26f8a9165c648f8af219 DIST rocdbgapi-6.3.0.tar.gz 275368 BLAKE2B da4ee565d0bbafad4838ca6a346525bfc0e174ee39a1e4d99da16f2ba041885211d38cc9f9aac0ab0358b62557061f7c4cfc8fd3bcf241398b510ea952d56254 SHA512 b9acf8787fa6e76bd9d28a36b3c09932d830085cbdc4b6712d481c19cb36c2fd4ff50fb31fd249d9a523c053019657ae7eace850102be94170c327d4efb49e9d -EBUILD rocdbgapi-5.7.1.ebuild 1198 BLAKE2B 228aab82524870227733d7aeb6428de6d97974ce35ba94026766413dae743a80837fddac66984f21d36fd3dc35ed592eb44d41ad3e47ea809b0bc88604fb4a74 SHA512 6f8871f8dfced05905b9e9acc84fcf0bdb9ccc4cae9c96c61aedbf7818b4943fe94696f96ba8dba99f00e24986d1fbef923b2fd7b9744f6e890eace7a659b118 -EBUILD rocdbgapi-6.1.1.ebuild 1325 BLAKE2B b9c0086ce53a33a0280195fcbebe6bd9f030bd9390f73e4dc215bd7013c29985df13a268241da1db239262c102c4ccd32fc4de43b4d96bfe26b5e96fd5aa058c SHA512 fa6a2476f939534ed7ef4862c13e2d87967902822cd666c52c54e582d050af3a0eb3311f3888649abbdddc562698996dee4e534761cc1ccbbf83023ff1c9d81f -EBUILD rocdbgapi-6.3.0.ebuild 1382 BLAKE2B f86587c1c463cd4577cf1f3fd08cf949c280690ae5ecdb74143f7fa4b4d22f5ee01d8769c9ddf2d6297767b7381f3f0315e8845f40840d9f85fe4596b7e71456 SHA512 ee28d531cd56f2a11501eae6217ccdc3c2b5d4e3593e7700cfcd91a474f25d905f356b8d9679e6a8d70534018c07aada03f2805843550122128bba79ec4bdf86 +DIST rocdbgapi-6.3.2.tar.gz 275359 BLAKE2B 085ab87b04fbe165bb689a61016cd7e4e1133c4f9a2504267d30a07dd2922eeeb11fb7507416e426b3a24a8ec3090c7a4b64ccd32f578ccb7bc420fcc52f7fec SHA512 b60312cc29830f1a481f67ab3419c3e9915e07f6a13557e06a1fa4da6022ae7388421264843aea095c49330c984d943771cba7b77f31d3f511a545af5db68c00 +EBUILD rocdbgapi-5.7.1.ebuild 1232 BLAKE2B 07dc2b48213045f1d3dfd23aa0eb775f904caf2b84e87c3a3dff4b767fdbf40a123c5c81347fea3813f2380d45389e5b09819520b99ded80ff44ea31fa7e83d7 SHA512 33d31937298c477778bfc10b509ab9e7768afb99b1690fb254307fb825a70757c7f08e7de04ada3b49f4cb4e8709af9adb5e3343d4a86f954d769b20e4eb23ac +EBUILD rocdbgapi-6.1.1.ebuild 1359 BLAKE2B 6766781177664cb1a83ae41d5e00ccb9e4321d020a98f05fe07251e951c63e37142cb05b69f4b934185820a9064c42d20a12d38f2674a3031dc0d8f848fb168d SHA512 769e5c4025a5c0ab754efc498d657204817d072beb036c44039ca890c51a91b835639fd67302ef904327695be9980963f11307468eb18ee9f638a3c75c5d9d75 +EBUILD rocdbgapi-6.3.0.ebuild 1416 BLAKE2B b32837fb00f51b1f8da69461c64d6ce5495f5f21c36caca62c3a38765253348f7fcb2a577218dc51d9bd3450efc0b23cc92fa71414b3b47e818172b0379f3780 SHA512 90cbfb68e357aadab4f4c2bb23f3820da6cccdf255478f02e7ef7802ed87ff3b6c4e3e6bec18149ff65a57024824721a368fd42d3044b63ca7689b052b0679d2 +EBUILD rocdbgapi-6.3.2.ebuild 1382 BLAKE2B e73f53f3aae34ba5e008198a346ba287bec45ac34ed2b9264e86bbb9167418d16b2513c9fea4138454595aaabf391773f68f8af6bf54b91742a97700d39e55f5 SHA512 34f73245a5aebff6ee5aca88bc469365661723ef84a3cda17f69d3dc046b724b846dceb4454365cb9fa1d9487ca8e3e7a9d0a561f0e0c26a506d87b544439e82 MISC metadata.xml 499 BLAKE2B bf9cb4f91d5c6160bce2f5df41177fc18b153cd8c8c6a13384c68fddb4a9a6011eb0d40339af7f1d9c01200af57ee431d9193f68ed9724549445ec908ff07796 SHA512 7ed8d2bcb55b46e57cdbea6c4e6242ab5f660c7b1537c9ddfeb0c426495bc4c5e7e78b54bf66940d582c42913a1b3d36c5fc821abd7da666c782c141c001b355 diff --git a/dev-libs/rocdbgapi/rocdbgapi-5.7.1.ebuild b/dev-libs/rocdbgapi/rocdbgapi-5.7.1.ebuild index 3573342f8b6f..2e7860efde3a 100644 --- a/dev-libs/rocdbgapi/rocdbgapi-5.7.1.ebuild +++ b/dev-libs/rocdbgapi/rocdbgapi-5.7.1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -16,6 +16,7 @@ SLOT="0/$(ver_cut 1-2)" IUSE="doc" BDEPEND=" + dev-build/cmake doc? ( app-text/doxygen[dot] virtual/latex-base @@ -26,6 +27,7 @@ BDEPEND=" RDEPEND=" dev-libs/rocm-comgr:${SLOT} dev-libs/rocr-runtime:${SLOT} + sys-apps/hwdata " DEPEND="${RDEPEND}" diff --git a/dev-libs/rocdbgapi/rocdbgapi-6.1.1.ebuild b/dev-libs/rocdbgapi/rocdbgapi-6.1.1.ebuild index eff59469418f..ea23cdc176c6 100644 --- a/dev-libs/rocdbgapi/rocdbgapi-6.1.1.ebuild +++ b/dev-libs/rocdbgapi/rocdbgapi-6.1.1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -17,6 +17,7 @@ KEYWORDS="~amd64" IUSE="doc" BDEPEND=" + dev-build/cmake doc? ( app-text/doxygen[dot] virtual/latex-base @@ -27,6 +28,7 @@ BDEPEND=" RDEPEND=" dev-libs/rocm-comgr:${SLOT} dev-libs/rocr-runtime:${SLOT} + sys-apps/hwdata " DEPEND="${RDEPEND}" diff --git a/dev-libs/rocdbgapi/rocdbgapi-6.3.0.ebuild b/dev-libs/rocdbgapi/rocdbgapi-6.3.0.ebuild index bac45a37c3f1..8d08c242d8a4 100644 --- a/dev-libs/rocdbgapi/rocdbgapi-6.3.0.ebuild +++ b/dev-libs/rocdbgapi/rocdbgapi-6.3.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -17,6 +17,7 @@ KEYWORDS="~amd64" IUSE="doc" BDEPEND=" + dev-build/cmake doc? ( app-text/doxygen[dot] virtual/latex-base @@ -27,6 +28,7 @@ BDEPEND=" RDEPEND=" dev-libs/rocm-comgr:${SLOT} dev-libs/rocr-runtime:${SLOT} + sys-apps/hwdata " DEPEND="${RDEPEND}" diff --git a/dev-libs/rocdbgapi/rocdbgapi-6.3.2.ebuild b/dev-libs/rocdbgapi/rocdbgapi-6.3.2.ebuild new file mode 100644 index 000000000000..d8fc715396fc --- /dev/null +++ b/dev-libs/rocdbgapi/rocdbgapi-6.3.2.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="AMD Debugger API" +HOMEPAGE="https://github.com/ROCm/ROCdbgapi" +SRC_URI="https://github.com/ROCm/ROCdbgapi/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/ROCdbgapi-rocm-${PV}" + +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~amd64" + +IUSE="doc" + +BDEPEND=" + doc? ( + app-text/doxygen[dot] + virtual/latex-base + dev-texlive/texlive-latexextra + dev-texlive/texlive-plaingeneric + ) +" +RDEPEND=" + dev-libs/rocm-comgr:${SLOT} + dev-libs/rocr-runtime:${SLOT} +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}/${PN}-6.3.0-fix-libcxx.patch" +) + +src_prepare() { + sed -e "s/-Werror//" \ + -e "s/if(DOXYGEN_FOUND)/if(WITH_DOCS AND DOXYGEN_FOUND)/" \ + -e "s:\${CMAKE_INSTALL_DATADIR}/html/amd-dbgapi:\${CMAKE_INSTALL_DOCDIR}/html:" \ + -i CMakeLists.txt || die + + # Clang 19 detects error + # https://github.com/ROCm/ROCdbgapi/issues/12 + sed -e "s/->n_next/->m_next/g" -i src/utils.h || die + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DWITH_DOCS=$(usex doc ON OFF) + -DCMAKE_INSTALL_DOCDIR="${EPREFIX}/usr/share/doc/${PF}" + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile + use doc && cmake_src_compile doc +} + +src_install() { + cmake_src_install + + # remove unneeded copy + rm -r "${ED}/usr/share/doc/${PF}-asan" || die +} diff --git a/dev-libs/rocm-comgr/Manifest b/dev-libs/rocm-comgr/Manifest index 32581b971320..c86095976c1e 100644 --- a/dev-libs/rocm-comgr/Manifest +++ b/dev-libs/rocm-comgr/Manifest @@ -1,23 +1,8 @@ -AUX 0001-COMGR-changes-needed-for-upstream-llvm.patch 2391 BLAKE2B 2873fa0aad01ad90c9140e54219e40ada995ed69ae9ebe83d79b8a8e674f23bf63a49457d6795cc78260df63ceed8407512edb205d8a3378a217cd3286c8de1f SHA512 83b1b0b2b2baf2ff36ef2d8aadf4083ba8c83f9df56753850780bbb025fde8f4714ac9437c78116d374577b9183f7c7ac9f3f9215ab576359720905900469789 AUX 0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch 2249 BLAKE2B 50208a5f2bed91d52eeec4f192cae5fe57d5f43221dd6333ed8e95ac3e0047588952ab2ca2188d4b401354032ddfa24b83a0e8e8e416748249001910abd2ef55 SHA512 cc9a3cab03d0d7c930b667bc61ba0404448d4ac1c3adf708c994c8e0f9d49232edc3beb1209ebe72990e97793f7b34ae4c9f68745343e07f6fa873989c12a14d AUX 0001-Specify-clang-exe-path-in-Driver-Creation.patch 2098 BLAKE2B 0bb6902e322ba6354f5cf31b6b7b842d0db43a1f14293edf228c31bb299a336267c573f5ddbc2bacb0525468625b98b260cc81d1cdd7fa43cdf6e484404b3f5b SHA512 26bce5f9fbd964774945e1b056985aead0a9dedb0c85256eb7b9556f5a196cff9aae6441afc9a6f4fe3e7f7178ce4f6032fa7c3b9c7b4dcdacf1d26c0011195c -AUX rocm-comgr-4.5.2-dependencies.patch 1255 BLAKE2B 544a23e8066a2b308e2f90bfaf7e538ebe9b4becd5d84f3c4e8d563c01148e298c556fcec8639861749ba4cf838bf73e98a8231e0d19faeda6ea5d7df8459629 SHA512 4f7be98945217fca917b788f3ac93f9d5356d410d3c17f5fadda753d6bd5121c57ecc2c758c430f6d4a2997bc61b5d54b3b8be6f6af1d575c0190c635cb64426 AUX rocm-comgr-5.0-rocm_path.patch 419 BLAKE2B 2adfe03cd86d84b1f183689e5feff298860c22b12a87bddf357d746d96f2e4df3de3d01962138e02b7670b28a7884d4b16fe9f52f937a22caf931e74bd46de21 SHA512 1ca24101e3c296127a7b429f0f6b05bbff388a0db2d4ffc3003844353ca43ddf0d95c4f13c902b841d748c19cfa11c39a300786af04919da3919b8aa7724fc1a AUX rocm-comgr-5.1.3-Find-CLANG_RESOURCE_DIR.patch 3434 BLAKE2B d5841e32974bb8750ff7d9d32256c13823b26a7d200c603162c66b04dc55ae0e5ee795a449f2e6f35a2bd2efddb5c67b03499d2aa4e441fbe54a5f8178e167a5 SHA512 d0da78fbbbdc9ee3bb4f0d4f98b2321913f9ad197edd1c0128c4785d14134646a5f8b9a1b75e268111dcb4dff872c0b8db398b475fa8b28c83324ae5801bd279 -AUX rocm-comgr-5.1.3-clang-fix-include.patch 298 BLAKE2B 2cb424491481445a29fff40cfc95284fbf8dce155c65d5cf2ee950fc5c876b3c78660691878ff45846904a9db54f7f5db7581fbd1665156c97f660bd0b69fc48 SHA512 a3b024899d9b0d59b4c8d9dd498349775e25cd428437d97da1de689e14bc8cebd1b3434d9ab034b5c894945f743426abae2ba3ec129084ce9fc176b3cd8befc4 -AUX rocm-comgr-5.1.3-clang-link.patch 380 BLAKE2B a6de9401ff4c668745f49e898546108163c1cb370e2591b6b512e70e4ab63edc4256baca7d9a6a62c6263397764053d22791cc85278d5eb4ef3a766b69bba96c SHA512 1738fb93087c24c05fc8c025e2c39b019cd71534e2878a430a8ab9381d18284053c76f646d29314b33ec80ecdba71c4ac583ab40a5478b607242518aaa198e26 -AUX rocm-comgr-5.1.3-llvm-15-args-changed 880 BLAKE2B b499a27ef0b66e106517621f0b92156985f4acfbfa3212643306f28fd41874228ca033f5d2caefe11501e14873d3ad121bc4e4c86c5ab9db15455035f2adfd47 SHA512 ee0b30cbbbf021aabe8e042cfe6f0fef5e5bd1ee5d44600197137095cee78912aebe520bac0cd79e08ecbd9c0335386c1a972ebd689cf42d0526cfda18cbfd9f -AUX rocm-comgr-5.1.3-llvm-15-remove-zlib-gnu 879 BLAKE2B d89e8b2c908d360b34da0802497aa14828efdc9353b28ea956e86826f0b7cf69faa5b489679255ca984553affb51bddfd47891da451662e8ebfe79114605c496 SHA512 11778245c2ad8bc11dadf3613df5ce8f6911e15a9850ce22b3962d18ba4e990cb585e09b9cc39daa801c7933329fb3d1541026e90da7aa5df9038a00dc9d7bcf AUX rocm-comgr-5.1.3-rocm-path.patch 422 BLAKE2B 23200a9ead9cefe1af9b553da7448d93b1c7d0db7aa02a2dae0fa0b70b44b75056fe720fea8919c5315c5804289c30d6b476e43aa7aeaf25cc5c2430431f7a9a SHA512 6d1d2cfac7f2b70409e8cc3cb1556f516f495c4a217e85408fbd99587697912d82fc6a8745c37d2fe392ddbd0e8503489c353f26b3fbc6bce640c567f4230e89 -AUX rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch 632 BLAKE2B ce681da93373691d24c7e85698f72477a372f65403ee25ba085bd3e36c79cb284b88ec50b9c16e5fe14fd3ce9b88fcf1486120032dfe6f97e9a85e757374a38c SHA512 b88fcf8ca208a7ce30777694903af0a4ad9c2c8c1a93c361f6b6b6f6948073f06ecab5ca607250befe0d16a9ffeace9617f53b1288fcbf43396b5b658e448414 -AUX rocm-comgr-5.3.3-fix-tests.patch 553 BLAKE2B f4227305c4c2c91d3fd1e9ad7fdc4477132002cd6cde8e7e9abd3f336978ff0ee9560f4f6216498c330c769cc3d65f52c2191d0298f3f82b0693bc4d3c4c0d4f SHA512 e2c6d3a9315469e4e53d0067bfddfe5d014a546b789ba7fd672204d4324c4fb19a4cdcdeb5bc8855e53cd5607e60e31677241993f4de1989aa68ce4ea5943706 -AUX rocm-comgr-5.3.3-fno-stack-protector.patch 546 BLAKE2B 81da0bbc5405433600b60be432997134b4e7369814021e5c3a3bc1b88aec33c891de496f4d2af34c3c46742def8679092c0c6b1680babf58026d5e6e1ede7806 SHA512 f1a8da61c722f9c7ca0ceeab29f1032e5b488223a0c38a118608d75c2e4ab482625fffa75f8c85d1cb8dc9dd3b76ee8405e62405dc6e71ae6521c08acef23026 -AUX rocm-comgr-5.3.3-remove-h-option.patch 2060 BLAKE2B 593c3aebc4c9eeb387bd88ef31dc8e9a40434ef2497ee96f6dcad816a7e098c657987355e82c15566dbc71a168fcc5f584469903d8222d71c63bf68c0ae315e1 SHA512 2364449ed85963adbfa2a80a9a6e15e7a73ae642c17549da02fdc6878d93857d61f18d862cabfb7d56b27b052cb3de8abbc8c9d25a2d3f54288b15a6da293775 -AUX rocm-comgr-5.5.1-fix-tests.patch 567 BLAKE2B 21fc4121c75d6510e5a263388a0129cd9a1a4e4d1c47124774cd4372ad0323349fca303c5dc71d451c0c2fe108b8f176c577c4c4021c84ba2687a3e4d94196eb SHA512 175e27600dac3505bbac14d559dfa44785feae693eeeb658ba99e27db888815fc335b8a648234478adb51ef7cafca0b762e9227ac2c3d601d81b88d9d1f24e41 -AUX rocm-comgr-5.5.1-lld-include.patch 795 BLAKE2B c2e58f098f751c015154c8b9c775a5e2ed9bd84d3ffab3a1d90535ef44ce51542d4bf2a104be464df85e0059543444f69b5e6dc9e55a607f4e1133dae173a6cb SHA512 e223c2d341d05f10868a59856794229b8ec7066de5c264c1b0b014be3eb0c82ee5966c33d2c69b721661b7c51194d02d2afecb49dde4fb542a78c15db0f12780 -AUX rocm-comgr-5.5.1-nullopt.patch 785 BLAKE2B 329f60db229bd8f75821c213b108c2342fc1083e9f82f516c40e96318c36a69de1be9865bf4ef5dc03864fd2646018f2150a04547e4ac60283042f2a3db6ced3 SHA512 f3f08decdca3b8619e724d79e826744c8da19d748b49701a6a221b2762c9a7b5bd882530e1c80ffd19e20a1794d86f9c557ede9a9ce703ca21a2d1739da45b69 -AUX rocm-comgr-5.5.1-opt_mrelax.patch 955 BLAKE2B b68c0681defcc63a09b425af49ceb2bd0ebd70f784014bd9121fea7b00ee090d855c544cee4312cfcbbf86b8205d25d36ac623c741d6dccb537aa27ddb9e584f SHA512 e26d8befea08034a2bfbb4cd13ffd418b95d842b8915ffb6129395ec4ab334917ee5a368e85a09f1bfc2b8021dc293327b2b3f56462267aa5e964e6500348cee -AUX rocm-comgr-5.5.1-subtargetfeatures.patch 1133 BLAKE2B 6a138bd5abee576c78e005745bb66c2beecb35737c02850f74f7877a9b204c0789d3fbbfd0815502b86602125f32b1b27cf131ffd216ec6a3e064606f8ec1b50 SHA512 0ca10166aa1c13f74a48468547d841fd173319fcaccacba00c7f70f61383095515a57eb5b97707f01d9859667ed2479da8d6f30253c39a8777c76bc1974c77a1 AUX rocm-comgr-5.7.0-disassembly.patch 656 BLAKE2B b1ac5227b7b4d7a25cc5674ca185075e22dc91eb2e64ea1598fae03915a22153cfdafee4c34afc34e7490515bbdb09d49ba290d4544c617f23427d04296181ac SHA512 647a0a613786df7907616af43397ba9b16a80a7f6e7420ac41be7cc424a94df7f3248875bcb336e13de0f2ae13832362c6cbc42356703b655efc58cc4d6e4b6d AUX rocm-comgr-5.7.0-lld.patch 1355 BLAKE2B 565e3052974b99ee5050fc1b64d5f3b337866cf21a5d37fa37888e6257cf00b1718a0d3933b3f0e4e27caca4537652824c1ce01a8600852da503eead94a12d8f SHA512 35e6b2c8ad97d3dd5a870ed5c547c3727cd384c773371fa9608e29f7d525252f34fb784798c82c2071098667fd69ca4b89dfee20a8bf28b73b14bd13b4b00a50 AUX rocm-comgr-5.7.0-metadata.patch 2738 BLAKE2B de124cc61ad4e59ca182a8868bdff0c2fa44ec8a474f4c2d31aae8b90aabee6b32394959dd3589cf4756d09cb26dc1691df386f0b6687bb365dfabe6b76f2622 SHA512 440a6cc6fed0c4091effc39ffab5b4f59c0d503db7ea6bd8eae681422b4b385f3f8176722f7a2b396cced8229a9c3904ac795c62949bc805284e6a0203ab9bba @@ -34,20 +19,13 @@ AUX rocm-comgr-6.1.0-llvm-18-compat.patch 2990 BLAKE2B cf3c2ca3933ad714de6d98404 AUX rocm-comgr-6.3.0-bypass-device-libs-copy.patch 971 BLAKE2B 3e1f0314dc92e2f33bb26d0fb19c912c734f3bf5d3dd63af11619679173598964b6551132b1e4da97ad248dbb6d342fbfd87e5069a05d94d7313738e43e47167 SHA512 52478e60f40150bbb20cd13bbe3dd46abc52b78d26bedb53ea40fba8bdb5eef4622d03fcf28373ebf02e9077c4f9265a49ce751b3930ddf1f469293a750a2066 AUX rocm-comgr-6.3.0-fix-comgr-default-flags.patch 1530 BLAKE2B 99afaf2f461de4e1edfd55774540d62f45020342185b1acd33517f085ed92be562344652aa8e19bc42171f469b1f15eec87ac00b27abe1cfb0ce7b8cee0c164c SHA512 a81433f8bb21c4791453cf469379ef82fbfc2493e91647279901ad98ce26c710b5ae177d9487d08d616b468b9c5efc219eceaf0a7f25458f2c9d05290f39ac6b AUX rocm-comgr-6.3.0-llvm-19-compat.patch 2564 BLAKE2B 823db031e8e09946396f7e4e73a4ac04b6fd99db70e8c80ce19fa269e0c782bfea8198367f0e22157e5171fc120f0f49cffe8c7b410e6596d8dbf3cf3413724d SHA512 145cf9660b443dd3536425c06ed2cfdb65fb865721cf426ac3f48b4513dbb87c85f7f4e07be7046bb3ebbafb4eec4bd9c911c944a0311193dc054fb4b0ea28a4 +AUX rocm-comgr-6.3.2-rocm_path.patch 419 BLAKE2B f6fa0d84b91811f8aa70bdbce429f66f8f02ec99d480cc55e5f39fb7ca2de3bd5e55f5cf0d5175a8e78e78d2ecc197a38088d91774e564db96f1168f84b8c0e6 SHA512 59295419d96d78635586407342b592fe795a66c7d0b5698a187d190cf34667b7bd451702131b825e76cdc198cc343062f4d2af825590e80bef16f29a5b68ef8f DIST llvm-project-rocm-6.1.1.tar.gz 196027084 BLAKE2B 3ef0b6e3c47c66fd80289373e6ff8aaff44751f9b380addfae73a18dc388093c0535f230b0cc7528724bc43f6992e2ae6decd3d0d3c700893ca95a6166b7b8dc SHA512 e320d4eeaa6f61ed1cdbf653d67fe887d3ce9dc0d6743b4713502e1cb5318ab8afbe1ee71f8cba07635c54ce532df6683de40ade0e5be4a52e50ce25a9b70818 DIST llvm-project-rocm-6.1.2.tar.gz 195992927 BLAKE2B d821f29f2f1f7c1ff414c63a710281f16d2a394b21f3365d01b86710cc09ed27e514b49fb744bf6a36b38815afa56cc26d44f0238f38479a0c2db9bf9989f389 SHA512 5f7e5dbe5976141de35e96e603624bd9d5a2c08b0690ba9fcd81d1b32f540f94bb9f4b74539e2838fd60ae1312dbe5e0b429ba80a03871782cdf3bd834940ce0 -DIST llvm-project-rocm-6.3.0.tar.gz 206677330 BLAKE2B f3e68a8c94599e3a938d3e761af163b9f010a06421680ee70aaaaf8073fb18da9151729c311fc4bd12b281b3afdd15e61cea31c970f0e4d36bb97838fa17ca5f SHA512 674fc3242c6dbb6962f1002dc34ccbd618da6adeb640bac15265d22fdcedf9de16ea3d79899891734ccc1099cb5b5ed9110b1162f4515c4cbc0d847810682b59 -DIST rocm-comgr-5.1.3.tar.gz 117155 BLAKE2B 40e415c4c7ae3e709dd50981299291f0fc1133f35310b4c86a86847d3bce5fd7685a3f4480f8f156873ca922921c1d4e1cb620fd33bd5cdc87f155af839f2bbe SHA512 5927250f5e03c32b7f270a1dbfe5221d349dfe32aba34143040da53d4e7eb83faa3073a43edabcff13e1fc977bc17088404523f2ab2ea95e207d2c00beb4249b -DIST rocm-comgr-5.3.3.tar.gz 120414 BLAKE2B 29b9d466d74ef94165a2b9bea35eac4616f6b2fc529cdac3c830ee7dc08f219cb9e5d4f081658881c76633f12eaebb74d1a2ea30a76652231b8ee516f9988db1 SHA512 ba7b1ef214e3624168e438ed7fd94291a07508fe89d178c0b158bf22e0998d5a8e4d8f0a7f08f05ac108ef65f725db5764fd66353a85bc25000e572a4fdcb61f -DIST rocm-comgr-5.4.3.tar.gz 120461 BLAKE2B c4eb79dd5a72a2b18e16841fc8cb9a3a33efb0c7b04a7585df9672d682bba6fa826ab8b37dba5febca3b8c5ee5aca30d8546e1fa69e77671e5c750e2a8c1f12f SHA512 1a25af99a0166d70ca6dc5df5a667068eaf583dccd74bbb18a2a5de3c1b769e0c1eb9a0c539e0cd88bc50bbbe53214a1d1b23fbdfd6fc5b6507c44da259815c4 -DIST rocm-comgr-5.5.1.tar.gz 127475 BLAKE2B dbcb6729b27c0b4a4be37f5e462d96b10c15a6a3b540a81a74a648fc45dc727ea5706db1a0f4583a31ac4cb5c9f0d9f4e258fa5ac792b327f4cb1dfe6d585937 SHA512 09174ef2ad21f62b197e439bb5b04a365233c360c57cc2ccf0ea3d53edfa8880dff4f127c6d6c1d430b63b6f7ea666705b14cadc2bccb89c0fefed943b0cf1c7 +DIST llvm-project-rocm-6.3.2.tar.gz 206671202 BLAKE2B a280e2be22b8eb9fd51814074447baed3637231d4bfbe391047a1fb2409197c8d8ba58cebb3aeaec15aa4daee9371311274b30ede48e0039d7c84e432b15de1a SHA512 314e27577af76268635f3c96ee3516829e4622913c3d0c4c68eccbaee0c9f7f5fc031cbd35827deb4bc29712592c424e296c15ce8c500c897bfb3eb19455899c DIST rocm-comgr-5.7.1.tar.gz 137923 BLAKE2B e215f51137fd0c4b67e85496bf289dc0afde6ebc9efb9416f5fc4cf312b2be9be26da35cb70965bf4857a0f1434d750bcc03ce83095173098487ef7805948735 SHA512 cdd2609b858d9503c30122a2d328d36baa8a930a05bcb6c38e30723909c492b4d47eaaf4884dbb7aa82053e7cda6c22ee1aa16fc5ba266e272d98ff772c5079d -EBUILD rocm-comgr-5.1.3-r3.ebuild 2051 BLAKE2B c3133953c1b8a9e216012ec63d22dcd1bfd9d70bcead694fad13ede77c79814b86cc6c808a0a56fec9ee70d36c3c15f136770b9ffffe04c7d960160156ba8825 SHA512 eb7742f31064abb964a1447bc6f4ad07872b9cdc5279b7fbdeb3062eb8b641c98b9050ec113d47885a3abc9768cc5cab4a5598459751bd46d970678807772f72 -EBUILD rocm-comgr-5.3.3-r2.ebuild 1943 BLAKE2B fb20250cb7fa79ee706b35b9d2d18962179592625f33076875b73b220773091cb629f59d6af5c264edc83c3dca20606507198fc59be48509fb3feeb3f7c70716 SHA512 dd43457ab7aef2fc2b81dc4d142ecd5f2489da33290e0e583cadc208159c5ea412d1cf9455d04367b7591591a356d16e3239080d0a7bd44ebf4d9a3e57a65fd5 -EBUILD rocm-comgr-5.4.3-r1.ebuild 1892 BLAKE2B 0f92e385b4cfb5e6f98c3921646efb8ac24143d91998ab68058514052d3794197b4dcad0982ee6dbe554ef796d26abb9848a504b38447f7c11494b4fc52172f3 SHA512 0824c07d6d424ab71f70952729a319a8e8605d755004594e3dda91b063275a58c7d870187d1f4d43af0d0c884dacea92b456174f193e5ad94d3d3b00b8c6f86f -EBUILD rocm-comgr-5.5.1.ebuild 2022 BLAKE2B 38cadb6763e798bca799f098b2c4809cc91fcae73d713294036ed9be3f44577e62611035eaf0c1aa9b56027c5cc88cf1bafb2d7e922852c14fd1f762657602c0 SHA512 9eafcc5a17f74936adf29c1050f680f23bbec29f8f4f93bda4914ef6ab2a4aa94229a53ff2ffb61ab56e99f55381ea31ce0dff5129a7a2dee95b30e47cc6c4bd -EBUILD rocm-comgr-5.7.1.ebuild 2027 BLAKE2B 437bdde0cc68f29c920d7d98731f3c816960039f33dd0e8e5f37a0e063495112394ea8e6d0feff294bb866cf0d5d259c6344280f058f01c5ea6300f6ae70afbd SHA512 d49a7564b5a549a7784db274f5a17463a006ec08dbc32fee365bb56e3dd1c5b90b5643463910209a65a09d0d99f56a53e233b6d394a7c5da3b06e45a4e1b3a1f +EBUILD rocm-comgr-5.7.1.ebuild 2059 BLAKE2B a366eb8aab05055bd05c520551d1e3c6670f1330283730a9656c7f02b49543be812af2797c2bdae2c7fae143a203a28563b8dc34a24c481024ee27ce70bbd752 SHA512 f80ba6b4241fc972d7efe2611ecc705145a14d6254a80a19e416d43a7c5b17b7f35492f288665c370143ef7aa28f70eaeb394d20897e44d8ad3ad1d0e8232b3f EBUILD rocm-comgr-6.1.1.ebuild 2403 BLAKE2B b19d984c535a3fa4df5f1af1a5fc26b9c9f00c2347ac3dcc0faea4be30cd11bf8f3984d7afcb0709a32d4897e825cbbf714accd04e2be33eb12627e8e80f3309 SHA512 4d340d46831c089e2b9f9d1d44e0b1d2a0cd020cb50eed8589a5f745ec5c806b9ff65d0751b7439366135cc3bb801d725586e4f285ec27b24e90cac69383cd3a EBUILD rocm-comgr-6.1.2.ebuild 2403 BLAKE2B b19d984c535a3fa4df5f1af1a5fc26b9c9f00c2347ac3dcc0faea4be30cd11bf8f3984d7afcb0709a32d4897e825cbbf714accd04e2be33eb12627e8e80f3309 SHA512 4d340d46831c089e2b9f9d1d44e0b1d2a0cd020cb50eed8589a5f745ec5c806b9ff65d0751b7439366135cc3bb801d725586e4f285ec27b24e90cac69383cd3a -EBUILD rocm-comgr-6.3.0.ebuild 2418 BLAKE2B 4111a7c233343f694f7c726e02ea37f8be293955804fce29d626889224437198a8cc4e7eec1728af2bcb0e700df113b09a1902e7279ceff9831f443b9d4f7db5 SHA512 e6a4dfd1163ebcce5106c0b3ae1bb536f34741e74ec91f4584dc6d02e9c8bf293229f3fa653169663667b292a9f42f4792795e6c151018c9b19ab17ad6e8275f +EBUILD rocm-comgr-6.3.2-r1.ebuild 2499 BLAKE2B e4a6e306f6c1a3a47f4392e030ba9e88f6c1bf5a3946c5781145a50df7caf0e98c58f12340dd6cbfbec44dc6ee68c018768b8c5be190660fbe6069dff27fa703 SHA512 34c569412644f7482d282ed9c10a62038584f0c7c97a07932be34808bfad2964ddad2fda10a91fa798007b8c4e9dad73ccc1761fa78e33857d7301277f40a39c MISC metadata.xml 638 BLAKE2B d2396daa1a9e505ff3fc3b7a2465f4ca5c933ac8609c08732513c30ebb715f244681075b8b415b75a0d0c330144cb6fab483e6b4231b1144c3bf3bc5091693f3 SHA512 da41a365f6d75e8feabed3a54ca117a8406cabec215137751280ab5985ab86e178a14183e804af220b49b83d4084489c1ec1dd1d543aaa585d910b6636b866c4 diff --git a/dev-libs/rocm-comgr/files/0001-COMGR-changes-needed-for-upstream-llvm.patch b/dev-libs/rocm-comgr/files/0001-COMGR-changes-needed-for-upstream-llvm.patch deleted file mode 100644 index 8200d4414f8b..000000000000 --- a/dev-libs/rocm-comgr/files/0001-COMGR-changes-needed-for-upstream-llvm.patch +++ /dev/null @@ -1,66 +0,0 @@ -From be2bcaaea228cdcb5981b261046175275c402fb9 Mon Sep 17 00:00:00 2001 -From: Konstantin Zhuravlyov -Date: Wed, 26 Jan 2022 12:02:52 -0500 -Subject: [PATCH] COMGR changes needed for - https://github.com/llvm/llvm-project/commit/83d59e05b201760e3f364ff6316301d347cbad95 - -Change-Id: Iac01d024463865734879faf5f814e0862c26f7a1 ---- - lib/comgr/src/comgr-compiler.cpp | 3 ++- - lib/comgr/src/comgr-env.h | 1 + - lib/comgr/src/comgr-objdump.cpp | 4 +++- - 3 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/lib/comgr/src/comgr-compiler.cpp b/lib/comgr/src/comgr-compiler.cpp -index 6c2cba2..db4c8d5 100644 ---- a/src/comgr-compiler.cpp -+++ b/src/comgr-compiler.cpp -@@ -605,7 +605,8 @@ static amd_comgr_status_t linkWithLLD(llvm::ArrayRef Args, - ArrayRef ArgRefs = llvm::makeArrayRef(LLDArgs); - static std::mutex MScreen; - MScreen.lock(); -- bool LLDRet = lld::elf::link(ArgRefs, false, LogS, LogE); -+ bool LLDRet = lld::elf::link(ArgRefs, LogS, LogE, false, false); -+ lld::CommonLinkerContext::destroy(); - MScreen.unlock(); - if (!LLDRet) { - return AMD_COMGR_STATUS_ERROR; -diff --git a/lib/comgr/src/comgr-env.h b/lib/comgr/src/comgr-env.h -index eb13e61..aef57b3 100644 ---- a/src/comgr-env.h -+++ b/src/comgr-env.h -@@ -36,6 +36,7 @@ - #ifndef COMGR_ENV_H - #define COMGR_ENV_H - -+#include "llvm/ADT/Optional.h" - #include "llvm/ADT/StringRef.h" - - namespace COMGR { -diff --git a/lib/comgr/src/comgr-objdump.cpp b/lib/comgr/src/comgr-objdump.cpp -index 094bbac..b41e6c1 100644 ---- a/src/comgr-objdump.cpp -+++ b/src/comgr-objdump.cpp -@@ -43,6 +43,7 @@ - #include "llvm/ADT/STLExtras.h" - #include "llvm/ADT/StringExtras.h" - #include "llvm/ADT/Triple.h" -+#include "llvm/CodeGen/CommandFlags.h" - #include "llvm/DebugInfo/DWARF/DWARFContext.h" - #include "llvm/DebugInfo/Symbolize/Symbolize.h" - #include "llvm/MC/MCAsmInfo.h" -@@ -2395,9 +2396,10 @@ llvm::DisassemHelper::disassembleAction(StringRef Input, - size_t ArgC = ArgV.size(); - ArgV.push_back(nullptr); - COMGR::clearLLVMOptions(); -+ llvm::codegen::RegisterCodeGenFlags CGF; - cl::ParseCommandLineOptions(ArgC, ArgV.data(), "llvm object file dumper\n", - &ErrS); -- MCPU = lld::getCPUStr(); -+ MCPU = llvm::codegen::getCPUStr(); - - ErrorOr> BufOrErr = - MemoryBuffer::getMemBuffer(Input); --- -2.35.1 - diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-4.5.2-dependencies.patch b/dev-libs/rocm-comgr/files/rocm-comgr-4.5.2-dependencies.patch deleted file mode 100644 index 13cff2e52dfe..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-4.5.2-dependencies.patch +++ /dev/null @@ -1,53 +0,0 @@ -https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/pull/25 - -From c65cba2e73f9118e128b9ab7e655ee0f8a7798e7 Mon Sep 17 00:00:00 2001 -From: Craig Andrews -Date: Sun, 1 Mar 2020 19:24:22 -0500 -Subject: [PATCH] Link additional required LLVM libraries - -Without these additional required dependencies, linking fails with errors such as: -`undefined reference to llvm::errs()'` ---- - CMakeLists.txt | 20 ++++++++++++++++++-- - 1 file changed, 18 insertions(+), 2 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1794a07..c7b852a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -207,7 +207,11 @@ install(FILES - DESTINATION "${AMD_COMGR_PACKAGE_PREFIX}") - - set(CLANG_LIBS -- clangFrontendTool) -+ clangFrontendTool -+ clangFrontend -+ clangBasic -+ clangDriver -+ clangSerialization) - - set(LLD_LIBS - lldELF -@@ -218,8 +222,21 @@ if (LLVM_LINK_LLVM_DYLIB) - else() - llvm_map_components_to_libnames(LLVM_LIBS - ${LLVM_TARGETS_TO_BUILD} -+ Option - DebugInfoDWARF -- Symbolize) -+ Symbolize -+ Support -+ Object -+ BitWriter -+ MC -+ MCParser -+ MCDisassembler -+ Core -+ IRReader -+ CodeGen -+ Linker -+ Demangle -+ BinaryFormat) - endif() - - target_link_libraries(amd_comgr diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-fix-include.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-fix-include.patch deleted file mode 100644 index 6bf47c610dfc..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-fix-include.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: comgr/src/comgr-env.h -=================================================================== ---- comgr.orig/src/comgr-env.h -+++ comgr/src/comgr-env.h -@@ -37,6 +37,7 @@ - #define COMGR_ENV_H - - #include "llvm/ADT/StringRef.h" -+#include "llvm/ADT/Optional.h" - - namespace COMGR { - namespace env { diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-link.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-link.patch deleted file mode 100644 index 0e2a9a668216..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-clang-link.patch +++ /dev/null @@ -1,17 +0,0 @@ -Index: comgr/CMakeLists.txt -=================================================================== ---- comgr.orig/CMakeLists.txt -+++ comgr/CMakeLists.txt -@@ -283,11 +283,7 @@ install(FILES - DESTINATION "${AMD_COMGR_PACKAGE_PREFIX}") - - set(CLANG_LIBS -- clangFrontendTool -- clangFrontend -- clangBasic -- clangDriver -- clangSerialization) -+ clang-cpp) - - set(LLD_LIBS - lldELF diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-args-changed b/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-args-changed deleted file mode 100644 index 545b1c632182..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-args-changed +++ /dev/null @@ -1,20 +0,0 @@ ---- a/src/comgr-compiler.cpp -+++ b/src/comgr-compiler.cpp -@@ -453,7 +453,7 @@ static bool executeAssemblerImpl(AssemblerInvocation &Opts, - std::unique_ptr MCE; - std::unique_ptr MAB; - if (Opts.ShowEncoding) { -- MCE.reset(TheTarget->createMCCodeEmitter(*MCII, *MRI, Ctx)); -+ MCE.reset(TheTarget->createMCCodeEmitter(*MCII, Ctx)); - MCTargetOptions Options; - MAB.reset(TheTarget->createMCAsmBackend(*STI, *MRI, Options)); - } -@@ -472,7 +472,7 @@ static bool executeAssemblerImpl(AssemblerInvocation &Opts, - Out = BOS.get(); - } - -- MCCodeEmitter *CE = TheTarget->createMCCodeEmitter(*MCII, *MRI, Ctx); -+ MCCodeEmitter *CE = TheTarget->createMCCodeEmitter(*MCII, Ctx); - MCTargetOptions Options; - MCAsmBackend *MAB = TheTarget->createMCAsmBackend(*STI, *MRI, Options); - Triple T(Opts.Triple); diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-remove-zlib-gnu b/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-remove-zlib-gnu deleted file mode 100644 index 41e51a407ba9..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.1.3-llvm-15-remove-zlib-gnu +++ /dev/null @@ -1,17 +0,0 @@ ---- a/src/comgr-compiler.cpp -+++ b/src/comgr-compiler.cpp -@@ -244,13 +244,12 @@ bool AssemblerInvocation::createFromArgs(AssemblerInvocation &Opts, - OPT_compress_debug_sections_EQ)) { - if (A->getOption().getID() == OPT_compress_debug_sections) { - // TODO: be more clever about the compression type auto-detection -- Opts.CompressDebugSections = llvm::DebugCompressionType::GNU; -+ Opts.CompressDebugSections = llvm::DebugCompressionType::Z; - } else { - Opts.CompressDebugSections = - llvm::StringSwitch(A->getValue()) - .Case("none", llvm::DebugCompressionType::None) - .Case("zlib", llvm::DebugCompressionType::Z) -- .Case("zlib-gnu", llvm::DebugCompressionType::GNU) - .Default(llvm::DebugCompressionType::None); - } - } diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch deleted file mode 100644 index 54b98726026f..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch +++ /dev/null @@ -1,15 +0,0 @@ -ROCM and HIPIncludePath is now /usr, which disturb the include order -=================================================================== ---- comgr.orig/src/comgr-compiler.cpp -+++ comgr/src/comgr-compiler.cpp -@@ -1010,10 +1010,6 @@ amd_comgr_status_t AMDGPUCompiler::addCo - Args.push_back("x86_64-unknown-linux-gnu"); - Args.push_back("--cuda-device-only"); - Args.push_back("-nogpulib"); -- Args.push_back("-isystem"); -- Args.push_back(ROCMIncludePath.c_str()); -- Args.push_back("-isystem"); -- Args.push_back(HIPIncludePath.c_str()); - break; - default: - return AMD_COMGR_STATUS_ERROR_INVALID_ARGUMENT; diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch deleted file mode 100644 index 08a40460c762..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch +++ /dev/null @@ -1,17 +0,0 @@ -Vanilla LLVM does not support calling AMDGPU_KERNEL across different sources/bitcodes. -Without this patch https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/issues/45 occurs. -Reference: https://github.com/llvm/llvm-project/issues/60313 -=================================================================== ---- comgr.orig/test/source1.cl -+++ comgr/test/source1.cl -@@ -35,7 +35,9 @@ - - #include "include-a.h" - -+void kernel source3(__global int *j) { *j = FOO; } -+ - void kernel source1(__global int *j) { - *j += 2; -- source2(j); -+ source3(j); - } diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch deleted file mode 100644 index c8d078ee8946..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch +++ /dev/null @@ -1,14 +0,0 @@ -This add -fno-stack-protector to all compilation, since -f-stack-protector is currently unsupported by ROCm -Reference: https://bugs.gentoo.org/890377 -index 465187e..0baf925 100644 ---- a/src/comgr-compiler.cpp -+++ b/src/comgr-compiler.cpp -@@ -850,6 +850,8 @@ amd_comgr_status_t AMDGPUCompiler::processFile(const char *InputFilePath, - Argv.push_back(Arg); - } - -+ Argv.push_back("-fno-stack-protector"); -+ - for (auto &Option : ActionInfo->getOptions()) { - Argv.push_back(Option.c_str()); - if (Option.rfind("--rocm-path", 0) == 0) { diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-remove-h-option.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-remove-h-option.patch deleted file mode 100644 index 1346ba4ef04d..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-remove-h-option.patch +++ /dev/null @@ -1,43 +0,0 @@ -https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/commit/2d05f9e480cbc591a6b888dfd49d9f7ef1bef25f -Reference: https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/issues/52 -Reference: https://bugs.gentoo.org/851702#c37 -This unblocks building blender with HIP cycles support -====================================================================== -From 2d05f9e480cbc591a6b888dfd49d9f7ef1bef25f Mon Sep 17 00:00:00 2001 -From: Jacob Lambert -Date: Thu, 12 Jan 2023 08:45:38 -0800 -Subject: [PATCH] Remove -h option from comgr-objdump - -The -h option (short for -headers) is a legal objdump option. -However registering this as an LLVM option by Comgr prevents other -LLVM tools or instances from registering a -h option in the same -process, which is an issue because -h is a common short form for --help. - -A long term solution will be to libraryize llvm-obj dump, and -call it in Comgr via an API instead of re-implementation, which -will eliminate the need for Comgr to register any LLVM options for -objdump. - -Change-Id: Ieb1981aeb1826422647fd301c4827e2bfb370560 ---- - lib/comgr/src/comgr-objdump.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/comgr/src/comgr-objdump.cpp b/lib/comgr/src/comgr-objdump.cpp -index 6d20a3c..ead69fe 100644 ---- a/src/comgr-objdump.cpp -+++ b/src/comgr-objdump.cpp -@@ -175,9 +175,9 @@ cl::opt SectionHeaders("section-headers", - static cl::alias SectionHeadersShort("headers", - cl::desc("Alias for --section-headers"), - cl::aliasopt(SectionHeaders)); --static cl::alias SectionHeadersShorter("h", -- cl::desc("Alias for --section-headers"), -- cl::aliasopt(SectionHeaders)); -+// The following option has been removed to avoid conflicts with -+// other llvm tools/instances also attempting to register a -h option -+// static cl::alias SectionHeadersShorter("h", ...) - - cl::list - FilterSections("section", diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-fix-tests.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-fix-tests.patch deleted file mode 100644 index 9fd14df196a2..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-fix-tests.patch +++ /dev/null @@ -1,17 +0,0 @@ -Vanilla LLVM does not support calling AMDGPU_KERNEL across different sources/bitcodes. -Without this patch https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/issues/45 occurs. -Reference: https://github.com/llvm/llvm-project/issues/60313 -=================================================================== ---- comgr.orig/test/source/source1.cl -+++ comgr/test/source/source1.cl -@@ -35,7 +35,9 @@ - - #include "include-a.h" - -+void kernel source3(__global int *j) { *j = FOO; } -+ - void kernel source1(__global int *j) { - *j += 2; -- source2(j); -+ source3(j); - } diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-lld-include.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-lld-include.patch deleted file mode 100644 index 96df9291eb86..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-lld-include.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 271fddf65f43675e675f0cb4e9aaa3d27d34c58a Mon Sep 17 00:00:00 2001 -From: Ron Lieberman -Date: Thu, 29 Dec 2022 05:17:41 -0600 -Subject: [PATCH] [llvm merge] add include of lld/Common/CommonLinkerContext.h - -Change-Id: I5767b4c1e683e9df9146804ba23ef3c0c0b6c07a ---- - lib/comgr/src/comgr-compiler.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/comgr/src/comgr-compiler.cpp b/lib/comgr/src/comgr-compiler.cpp -index 2a7362a..bb1c9d3 100644 ---- comgr/src/comgr-compiler.cpp -+++ comgr/src/comgr-compiler.cpp -@@ -39,6 +39,7 @@ - #include "comgr-compiler.h" - #include "comgr-device-libs.h" - #include "comgr-env.h" -+#include "lld/Common/CommonLinkerContext.h" - #include "lld/Common/Driver.h" - #include "clang/Basic/Version.h" - #include "clang/CodeGen/CodeGenAction.h" diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-nullopt.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-nullopt.patch deleted file mode 100644 index 8bb07b55a3ab..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-nullopt.patch +++ /dev/null @@ -1,23 +0,0 @@ -From e1da67c6acb2b0e4a8f9c05c89e3778252ea5aa7 Mon Sep 17 00:00:00 2001 -From: Ron Lieberman -Date: Sat, 17 Dec 2022 19:58:26 -0600 -Subject: [PATCH] None -> std::nullopt - -Change-Id: I1cc241aa47de538f9f5b1c12cb5655aca8a4502f ---- - lib/comgr/src/comgr-env.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/comgr/src/comgr-env.cpp b/lib/comgr/src/comgr-env.cpp -index 742f4d4..6ab6f0f 100644 ---- comgr/src/comgr-env.cpp -+++ comgr/src/comgr-env.cpp -@@ -53,7 +53,7 @@ bool shouldSaveTemps() { - Optional getRedirectLogs() { - static char *RedirectLogs = getenv("AMD_COMGR_REDIRECT_LOGS"); - if (!RedirectLogs || StringRef(RedirectLogs) == "0") { -- return None; -+ return std::nullopt; - } - return StringRef(RedirectLogs); - } diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-opt_mrelax.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-opt_mrelax.patch deleted file mode 100644 index aa3e7c370a53..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-opt_mrelax.patch +++ /dev/null @@ -1,23 +0,0 @@ -From b582dfb33fdb51065c22800fe02dd83207185664 Mon Sep 17 00:00:00 2001 -From: Ron Lieberman -Date: Sun, 1 Jan 2023 10:35:49 -0600 -Subject: [PATCH] [llvm] move to inverted OPT_mrelax_relocations_no - -Change-Id: I95e48e8acf5b9124d25e5e7b86c418f1a0d9389d ---- - lib/comgr/src/comgr-compiler.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/comgr/src/comgr-compiler.cpp b/lib/comgr/src/comgr-compiler.cpp -index bb1c9d3..95c1bb4 100644 ---- comgr/src/comgr-compiler.cpp -+++ comgr/src/comgr-compiler.cpp -@@ -259,7 +259,7 @@ bool AssemblerInvocation::createFromArgs(AssemblerInvocation &Opts, - } - } - -- Opts.RelaxELFRelocations = Args.hasArg(OPT_mrelax_relocations); -+ Opts.RelaxELFRelocations = !Args.hasArg(OPT_mrelax_relocations_no); - Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 2, Diags); - Opts.DwarfDebugFlags = - std::string(Args.getLastArgValue(OPT_dwarf_debug_flags)); diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-subtargetfeatures.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-subtargetfeatures.patch deleted file mode 100644 index 340df3852fc2..000000000000 --- a/dev-libs/rocm-comgr/files/rocm-comgr-5.5.1-subtargetfeatures.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 48c682d577a7955256d0bfac5d497b3feebff11c Mon Sep 17 00:00:00 2001 -From: Ron Lieberman -Date: Mon, 16 Jan 2023 14:29:05 -0600 -Subject: [PATCH] [llvm merge] Move to Expected on SubtargetFeatures - -Change-Id: I060ceaa2b51eaa6ed1b472ea42c6788b98001088 ---- - lib/comgr/src/comgr-objdump.cpp | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/lib/comgr/src/comgr-objdump.cpp b/lib/comgr/src/comgr-objdump.cpp -index 86a5d7f..6d20a3c 100644 ---- comgr/src/comgr-objdump.cpp -+++ comgr/src/comgr-objdump.cpp -@@ -1270,7 +1270,10 @@ void llvm::DisassemHelper::DisassembleObject(const ObjectFile *Obj, - const Target *TheTarget = getTarget(Obj); - - // Package up features to be passed to target/subtarget -- SubtargetFeatures Features = Obj->getFeatures(); -+ Expected FeaturesValue = Obj->getFeatures(); -+ if (!FeaturesValue) -+ WithColor::error(errs(), ToolName) << FeaturesValue.takeError(); -+ SubtargetFeatures Features = *FeaturesValue; - std::vector MAttrs = lld::getMAttrs(); - if (MAttrs.size()) { - for (unsigned I = 0; I != MAttrs.size(); ++I) { diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-6.3.2-rocm_path.patch b/dev-libs/rocm-comgr/files/rocm-comgr-6.3.2-rocm_path.patch new file mode 100644 index 000000000000..14b1d12148f7 --- /dev/null +++ b/dev-libs/rocm-comgr/files/rocm-comgr-6.3.2-rocm_path.patch @@ -0,0 +1,14 @@ +Index: comgr/src/comgr-env.cpp +=================================================================== +--- comgr.orig/src/comgr-env.cpp ++++ comgr/src/comgr-env.cpp +@@ -269,6 +269,9 @@ InstallationDetector *getDetectorImpl() + if (EnvROCMPath) { + ROCmInstallPath = EnvROCMPath; + } ++ else { ++ ROCmInstallPath = "@GENTOO_PORTAGE_EPREFIX@/usr"; ++ } + + InstallationDetector *Detector; + if (ROCmInstallPath == "") { diff --git a/dev-libs/rocm-comgr/rocm-comgr-5.1.3-r3.ebuild b/dev-libs/rocm-comgr/rocm-comgr-5.1.3-r3.ebuild deleted file mode 100644 index 3339e71dc276..000000000000 --- a/dev-libs/rocm-comgr/rocm-comgr-5.1.3-r3.ebuild +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm prefix - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/" - inherit git-r3 - S="${WORKDIR}/${P}/lib/comgr" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-CompilerSupport-rocm-${PV}/lib/comgr" - KEYWORDS="~amd64" -fi - -PATCHES=( - "${FILESDIR}/${PN}-4.5.2-dependencies.patch" - "${FILESDIR}/${PN}-5.1.3-Find-CLANG_RESOURCE_DIR.patch" - "${FILESDIR}/${PN}-5.1.3-clang-link.patch" - "${FILESDIR}/${PN}-5.1.3-clang-fix-include.patch" - "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" - "${FILESDIR}/0001-COMGR-changes-needed-for-upstream-llvm.patch" - "${FILESDIR}/${PN}-5.1.3-llvm-15-remove-zlib-gnu" - "${FILESDIR}/${PN}-5.1.3-llvm-15-args-changed" - "${FILESDIR}/${PN}-5.3.3-fno-stack-protector.patch" -) - -DESCRIPTION="Radeon Open Compute Code Object Manager" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND=">=dev-libs/rocm-device-libs-${PV} - llvm-core/clang:${LLVM_MAX_SLOT}= - llvm-core/clang-runtime:= - llvm-core/lld:${LLVM_MAX_SLOT}=" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed '/sys::path::append(HIPPath/s,"hip","",' -i src/comgr-env.cpp || die - sed "/return LLVMPath;/s,LLVMPath,llvm::SmallString<128>(\"$(get_llvm_prefix ${LLVM_MAX_SLOT})\")," -i src/comgr-env.cpp || die - sed '/Args.push_back(HIPIncludePath/,+1d' -i src/comgr-compiler.cpp || die - sed '/Args.push_back(ROCMIncludePath/,+1d' -i src/comgr-compiler.cpp || die # ROCM and HIPIncludePath is now /usr, which disturb the include order - eapply $(prefixify_ro "${FILESDIR}"/${PN}-5.0-rocm_path.patch) - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix ${LLVM_MAX_SLOT})" - -DCMAKE_STRIP="" # disable stripping defined at lib/comgr/CMakeLists.txt:58 - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-comgr/rocm-comgr-5.3.3-r2.ebuild b/dev-libs/rocm-comgr/rocm-comgr-5.3.3-r2.ebuild deleted file mode 100644 index 30112cb3b0c6..000000000000 --- a/dev-libs/rocm-comgr/rocm-comgr-5.3.3-r2.ebuild +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm prefix - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/" - inherit git-r3 - S="${WORKDIR}/${P}/lib/comgr" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-CompilerSupport-rocm-${PV}/lib/comgr" - KEYWORDS="~amd64" -fi - -IUSE="test" -RESTRICT="!test? ( test )" - -PATCHES=( - "${FILESDIR}/${PN}-5.1.3-clang-fix-include.patch" - "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" - "${FILESDIR}/${PN}-5.1.3-llvm-15-remove-zlib-gnu" - "${FILESDIR}/0001-Specify-clang-exe-path-in-Driver-Creation.patch" - "${FILESDIR}/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch" - "${FILESDIR}/${PN}-5.3.3-HIPIncludePath-not-needed.patch" - "${FILESDIR}/${PN}-5.3.3-fix-tests.patch" - "${FILESDIR}/${PN}-5.3.3-fno-stack-protector.patch" - "${FILESDIR}/${PN}-5.3.3-remove-h-option.patch" -) - -DESCRIPTION="Radeon Open Compute Code Object Manager" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND=">=dev-libs/rocm-device-libs-${PV} - llvm-core/clang:${LLVM_MAX_SLOT}= - llvm-core/clang-runtime:= - llvm-core/lld:${LLVM_MAX_SLOT}=" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed '/sys::path::append(HIPPath/s,"hip","",' -i src/comgr-env.cpp || die - sed "/return LLVMPath;/s,LLVMPath,llvm::SmallString<128>(\"$(get_llvm_prefix ${LLVM_MAX_SLOT})\")," -i src/comgr-env.cpp || die - eapply $(prefixify_ro "${FILESDIR}"/${PN}-5.0-rocm_path.patch) - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix ${LLVM_MAX_SLOT})" - -DCMAKE_STRIP="" # disable stripping defined at lib/comgr/CMakeLists.txt:58 - -DBUILD_TESTING=$(usex test ON OFF) - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-comgr/rocm-comgr-5.4.3-r1.ebuild b/dev-libs/rocm-comgr/rocm-comgr-5.4.3-r1.ebuild deleted file mode 100644 index 7863223f7e6a..000000000000 --- a/dev-libs/rocm-comgr/rocm-comgr-5.4.3-r1.ebuild +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm prefix - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/" - inherit git-r3 - S="${WORKDIR}/${P}/lib/comgr" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-CompilerSupport-rocm-${PV}/lib/comgr" - KEYWORDS="~amd64" -fi - -IUSE="test" -RESTRICT="!test? ( test )" - -PATCHES=( - "${FILESDIR}/${PN}-5.1.3-clang-fix-include.patch" - "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" - "${FILESDIR}/0001-Specify-clang-exe-path-in-Driver-Creation.patch" - "${FILESDIR}/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch" - "${FILESDIR}/${PN}-5.3.3-HIPIncludePath-not-needed.patch" - "${FILESDIR}/${PN}-5.3.3-fix-tests.patch" - "${FILESDIR}/${PN}-5.3.3-fno-stack-protector.patch" - "${FILESDIR}/${PN}-5.3.3-remove-h-option.patch" -) - -DESCRIPTION="Radeon Open Compute Code Object Manager" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND=">=dev-libs/rocm-device-libs-${PV} - llvm-core/clang:${LLVM_MAX_SLOT}= - llvm-core/clang-runtime:= - llvm-core/lld:${LLVM_MAX_SLOT}=" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed '/sys::path::append(HIPPath/s,"hip","",' -i src/comgr-env.cpp || die - sed "/return LLVMPath;/s,LLVMPath,llvm::SmallString<128>(\"$(get_llvm_prefix ${LLVM_MAX_SLOT})\")," -i src/comgr-env.cpp || die - eapply $(prefixify_ro "${FILESDIR}"/${PN}-5.0-rocm_path.patch) - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix ${LLVM_MAX_SLOT})" - -DCMAKE_STRIP="" # disable stripping defined at lib/comgr/CMakeLists.txt:58 - -DBUILD_TESTING=$(usex test ON OFF) - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-comgr/rocm-comgr-5.5.1.ebuild b/dev-libs/rocm-comgr/rocm-comgr-5.5.1.ebuild deleted file mode 100644 index 77c1f229941c..000000000000 --- a/dev-libs/rocm-comgr/rocm-comgr-5.5.1.ebuild +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm prefix - -LLVM_MAX_SLOT=16 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/" - inherit git-r3 - S="${WORKDIR}/${P}/lib/comgr" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-CompilerSupport-rocm-${PV}/lib/comgr" - KEYWORDS="~amd64" -fi - -IUSE="test" -RESTRICT="!test? ( test )" - -PATCHES=( - "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" - "${FILESDIR}/0001-Specify-clang-exe-path-in-Driver-Creation.patch" - "${FILESDIR}/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch" - "${FILESDIR}/${PN}-5.3.3-HIPIncludePath-not-needed.patch" - "${FILESDIR}/${PN}-5.5.1-fix-tests.patch" - "${FILESDIR}/${PN}-5.3.3-fno-stack-protector.patch" - "${FILESDIR}/${PN}-5.3.3-remove-h-option.patch" - "${FILESDIR}/${PN}-5.5.1-nullopt.patch" - "${FILESDIR}/${PN}-5.5.1-opt_mrelax.patch" - "${FILESDIR}/${PN}-5.5.1-lld-include.patch" - "${FILESDIR}/${PN}-5.5.1-subtargetfeatures.patch" -) - -DESCRIPTION="Radeon Open Compute Code Object Manager" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND=">=dev-libs/rocm-device-libs-${PV} - llvm-core/clang:${LLVM_MAX_SLOT}= - llvm-core/clang-runtime:= - llvm-core/lld:${LLVM_MAX_SLOT}=" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed '/sys::path::append(HIPPath/s,"hip","",' -i src/comgr-env.cpp || die - sed "/return LLVMPath;/s,LLVMPath,llvm::SmallString<128>(\"$(get_llvm_prefix ${LLVM_MAX_SLOT})\")," -i src/comgr-env.cpp || die - eapply $(prefixify_ro "${FILESDIR}"/${PN}-5.0-rocm_path.patch) - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix ${LLVM_MAX_SLOT})" - -DCMAKE_STRIP="" # disable stripping defined at lib/comgr/CMakeLists.txt:58 - -DBUILD_TESTING=$(usex test ON OFF) - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-comgr/rocm-comgr-5.7.1.ebuild b/dev-libs/rocm-comgr/rocm-comgr-5.7.1.ebuild index 15b9eeb38273..51d6b5c419b1 100644 --- a/dev-libs/rocm-comgr/rocm-comgr-5.7.1.ebuild +++ b/dev-libs/rocm-comgr/rocm-comgr-5.7.1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -38,7 +38,9 @@ HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-CompilerSupport" LICENSE="MIT" SLOT="0/$(ver_cut 1-2)" -RDEPEND=">=dev-libs/rocm-device-libs-${PV} +RDEPEND=" + >=dev-libs/rocm-device-libs-${PV} + (\"$(get_llvm_prefix)\")," -i src/comgr-env.cpp || die - eapply $(prefixify_ro "${FILESDIR}"/${PN}-5.0-rocm_path.patch) - - cmake_src_prepare - - # Replace @CLANG_RESOURCE_DIR@ in patches - local CLANG_RESOURCE_DIR="$("$(get_llvm_prefix)"/bin/clang -print-resource-dir)" - sed "s,@CLANG_RESOURCE_DIR@,\"${CLANG_RESOURCE_DIR}\"," -i src/comgr-compiler.cpp || die -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix)" - -DCMAKE_STRIP="" # disable stripping defined at lib/comgr/CMakeLists.txt:58 - -DBUILD_TESTING=$(usex test ON OFF) - ) - cmake_src_configure -} - -src_test() { - local CMAKE_SKIP_TESTS=( - comgr_nested_kernel_test # See https://github.com/ROCm/llvm-project/issues/35 - ) - cmake_src_test -} diff --git a/dev-libs/rocm-comgr/rocm-comgr-6.3.2-r1.ebuild b/dev-libs/rocm-comgr/rocm-comgr-6.3.2-r1.ebuild new file mode 100644 index 000000000000..cea4ebe78e73 --- /dev/null +++ b/dev-libs/rocm-comgr/rocm-comgr-6.3.2-r1.ebuild @@ -0,0 +1,90 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) + +inherit cmake llvm-r1 prefix + +MY_P=llvm-project-rocm-${PV} +components=( "amd/comgr" ) + +DESCRIPTION="Radeon Open Compute Code Object Manager" +HOMEPAGE="https://github.com/ROCm/llvm-project/tree/amd-staging/amd/comgr" +SRC_URI="https://github.com/ROCm/llvm-project/archive/rocm-${PV}.tar.gz -> ${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}/${components[0]}" + +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~amd64" + +IUSE="test" +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" + "${FILESDIR}/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch" + "${FILESDIR}/${PN}-6.0.0-extend-isa-compatibility-check.patch" + "${FILESDIR}/${PN}-6.3.0-fix-comgr-default-flags.patch" + "${FILESDIR}/${PN}-6.1.0-dont-add-nogpulib.patch" + "${FILESDIR}/${PN}-6.3.0-llvm-19-compat.patch" + "${FILESDIR}/${PN}-6.3.0-bypass-device-libs-copy.patch" +) + +RDEPEND=" + dev-libs/rocm-device-libs:${SLOT} + llvm-core/clang-runtime:= + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT}= + llvm-core/lld:${LLVM_SLOT}= + ') + dev-util/hipcc:${SLOT} +" +DEPEND="${RDEPEND}" + +CMAKE_BUILD_TYPE=Release + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_fetch + git-r3_checkout '' . '' "${components[@]}" + else + archive="${MY_P}.tar.gz" + ebegin "Unpacking from ${archive}" + tar -x -z -o \ + -f "${DISTDIR}/${archive}" \ + "${components[@]/#/${MY_P}/}" || die + eend ${?} + fi +} + +src_prepare() { + sed '/sys::path::append(HIPPath/s,"hip","",' -i src/comgr-env.cpp || die + sed "/return LLVMPath;/s,LLVMPath,llvm::SmallString<128>(\"$(get_llvm_prefix)\")," -i src/comgr-env.cpp || die + eapply $(prefixify_ro "${FILESDIR}"/${PN}-6.3.2-rocm_path.patch) + + cmake_src_prepare + + # Replace @CLANG_RESOURCE_DIR@ in patches + local CLANG_RESOURCE_DIR="$("$(get_llvm_prefix)"/bin/clang -print-resource-dir)" + sed "s,@CLANG_RESOURCE_DIR@,\"${CLANG_RESOURCE_DIR}\"," -i src/comgr-compiler.cpp || die +} + +src_configure() { + local mycmakeargs=( + -DLLVM_DIR="$(get_llvm_prefix)" + -DCMAKE_STRIP="" # disable stripping defined at lib/comgr/CMakeLists.txt:58 + -DBUILD_TESTING=$(usex test ON OFF) + ) + # Prevent CMake from finding systemwide hip, which breaks tests + use test && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_hip=ON ) + cmake_src_configure +} + +src_test() { + local CMAKE_SKIP_TESTS=( + comgr_nested_kernel_test # See https://github.com/ROCm/llvm-project/issues/35 + ) + cmake_src_test +} diff --git a/dev-libs/rocm-device-libs/Manifest b/dev-libs/rocm-device-libs/Manifest index ae11a8ede9b9..07851076e13d 100644 --- a/dev-libs/rocm-device-libs/Manifest +++ b/dev-libs/rocm-device-libs/Manifest @@ -1,6 +1,3 @@ -AUX rocm-device-libs-5.1.3-llvm-link.patch 694 BLAKE2B a67a1207bb23ceaa304f2fd59000a14a8bd232fd6eaf3510370f148b0bd18630ec4309a3d2ee2c5b8045114841a0548e840601abb153fb4adfc1209dd16b0509 SHA512 75f6fb5f3aab7f7951d110b9097a1521adb261f286b5e04867fd2753bbfcc29987440fd929c9dac0ac90fde98616ce7693c2b5041d4d07c437087ee17303a22e -AUX rocm-device-libs-5.1.3-test-bitcode-dir.patch 1181 BLAKE2B 0358dfc81ed98acd2a2bb399b7d8aa72c2a0bf20da3c45ad02d5e1c46df7f98bc18efe28867725e0fc1df041c1f1147bc25a2a5aa67b18f53d859dbf66aa71c7 SHA512 a0ffdda4ab42978f3b09bab424f91267bfc267f751d489aaee9c6eb3979ae5efd8130129e4b476fdcfbc73b779d9aad79fda60a8f7a64e8a5b35516d8fe6979f -AUX rocm-device-libs-5.4.3-Revert-Update-counters-for-gfx11.patch 6801 BLAKE2B ae3be5c1d8a7a84e8ddee2471628804365dd1d9b1ae3aa981b5e47015b82c115d5da5ea6fedcacc3ccf11c768af8130375493fdbcc9a53567e633cc57e7e750e SHA512 c28a08253025b150523282231c64e5d310206e6e406efdc2a0f39ce69b2f1663fed6991e27b2124eb3434c51efb8d172eceb752f366bc2aab7b3eb63ad9dfa35 AUX rocm-device-libs-5.5.0-test-bitcode-dir.patch 1838 BLAKE2B f1fa6e0b69b5e4e6634cb92c7b9ad1f9621a1b639d27d8e4d15ceeeb79ba58cfc8a7bb17f354995d8e4e88b5a74aa09354b0b986c6e802b1d4eb58ba3905f1e5 SHA512 115b5ec119400e6cbc6293d3819bb1dbd67455c60ed7b8c63443603a1748c954e558d3ffcabe76c232f742ce52d6df9b3c647ce1289a78226fd1507e6497793d AUX rocm-device-libs-5.5.1-fix-llvm-link.patch 681 BLAKE2B 1f28e1c92295caec2b50d576830ba896b82c92fe93db9243e4f397c9fde2de090e3f7f8c13ec8a0371d95978807642b433f4dc8b1644595da7f7576fe6b12a35 SHA512 6205cdb17692b4ebbce9f6a0e910c50ed9bd628d1863716f98e87857002399a3edbec3b9c50291c453262d0c169ed62ada5889fb1c735af04fd97623514e1fb2 AUX rocm-device-libs-6.0.0-add-gws-attribute.patch 581 BLAKE2B 40a8b66e44109a0d32c69ee76078c6ae8e45c52b1c3b8fb510040d8c616fbb552c0bfe77d5406a4a632cc0aca112292df2a720a5aba6fde63ad6853af613b565 SHA512 36b8851722e1fdc20de4ebc5875111017c0c80ba34263526f1228d3eb8fbb80ff6b458fecd665be9121a7c083f827343833481c53b221050446486139efdee40 @@ -12,17 +9,11 @@ AUX rocm-device-libs-6.2.0-test-bitcode-dir.patch 1333 BLAKE2B 86c39cc152d488d91 DIST llvm-project-rocm-6.1.1.tar.gz 196027084 BLAKE2B 3ef0b6e3c47c66fd80289373e6ff8aaff44751f9b380addfae73a18dc388093c0535f230b0cc7528724bc43f6992e2ae6decd3d0d3c700893ca95a6166b7b8dc SHA512 e320d4eeaa6f61ed1cdbf653d67fe887d3ce9dc0d6743b4713502e1cb5318ab8afbe1ee71f8cba07635c54ce532df6683de40ade0e5be4a52e50ce25a9b70818 DIST llvm-project-rocm-6.1.2.tar.gz 195992927 BLAKE2B d821f29f2f1f7c1ff414c63a710281f16d2a394b21f3365d01b86710cc09ed27e514b49fb744bf6a36b38815afa56cc26d44f0238f38479a0c2db9bf9989f389 SHA512 5f7e5dbe5976141de35e96e603624bd9d5a2c08b0690ba9fcd81d1b32f540f94bb9f4b74539e2838fd60ae1312dbe5e0b429ba80a03871782cdf3bd834940ce0 DIST llvm-project-rocm-6.3.0.tar.gz 206677330 BLAKE2B f3e68a8c94599e3a938d3e761af163b9f010a06421680ee70aaaaf8073fb18da9151729c311fc4bd12b281b3afdd15e61cea31c970f0e4d36bb97838fa17ca5f SHA512 674fc3242c6dbb6962f1002dc34ccbd618da6adeb640bac15265d22fdcedf9de16ea3d79899891734ccc1099cb5b5ed9110b1162f4515c4cbc0d847810682b59 -DIST rocm-device-libs-5.1.3.tar.gz 242862 BLAKE2B 68d66de897f461e9f876de5fe2214803d4c00665651dea6af0952f0ce579c6704a5ec41b08971fa613ade309a0a85cb611b56b592dc2a25e247183e634ea3378 SHA512 cc3dfb8d4b4841ba777355c537175259d0019159ff462358320674b85082cccd99f6462f60fee66228ddfb88fade043445c1bac62504aa1462ba61b7e2751de7 -DIST rocm-device-libs-5.3.3.tar.gz 245690 BLAKE2B 475c0d818b8b0f090a8daeca2910cd4002e4cdf505d020327f46eb5f864a26937a6a3dfe4ff7b188ebda0f936b1c396f2163bb27b9e2a62c5976e60fa60856ac SHA512 8f6f2fc1534e348e02ba30a25cfc6017f8eab768968b5d0344a5ea7d65c4f0a874072f9e53919c74545814330602ef7c190753c7ff019137230e02f58a5d3a5d -DIST rocm-device-libs-5.4.3.tar.gz 246095 BLAKE2B eb749346c96d465a5f22831968ccbd71f02749e6aa0d9c2becc0f378641ca0f65c1a131bfd3ed226f838b4208091fcc920b1e31b427adbd69a42881898668e6a SHA512 67b904363a3cff6c15bbd032cbc72cb5cd5f82acaa68c74391dbcf415266e8f35486a496b69b69e1fc0721e0e4e21fb6a6b9c180a46cb59cdcf53916be846ca4 -DIST rocm-device-libs-5.5.1.tar.gz 245900 BLAKE2B f713b1f12c7be33a4854d79791f592b8e89e2bc463769ec8cdd807483f0e5ca93d7fc852b6cf41d5ad0401d07adc97de9fb1fa54b77af83f665e282d6c0a43e7 SHA512 0138ddc94ce4a81202bdafccbbecef8145c6ddf82c3a14d92bb80b2bed3d3b73898f84279cef89110c50a9cc51e32de1323cc11a1f97c5da4f7f843b393425d0 +DIST llvm-project-rocm-6.3.2.tar.gz 206671202 BLAKE2B a280e2be22b8eb9fd51814074447baed3637231d4bfbe391047a1fb2409197c8d8ba58cebb3aeaec15aa4daee9371311274b30ede48e0039d7c84e432b15de1a SHA512 314e27577af76268635f3c96ee3516829e4622913c3d0c4c68eccbaee0c9f7f5fc031cbd35827deb4bc29712592c424e296c15ce8c500c897bfb3eb19455899c DIST rocm-device-libs-5.7.1.tar.gz 248357 BLAKE2B 829704382e9420ad79724a250ccfd65278eb697498805297d1a52b8ea35dbff46e11514b681243d61bfac05b8a9734f0cf22d721603e48fe2f9864368222b0bc SHA512 8755d0584fa3b8239f5642b4fb8f5e8dea20bbaca2ff8883894d3583913e9a1fd1552492b36e8ceff092f795783b734e68b002ee0c93711dccdf8e72c528c27c -EBUILD rocm-device-libs-5.1.3-r1.ebuild 1184 BLAKE2B 76c1a7896d51ce5797af910f5bb5b96d8097e8b58f4308676234a6c85ba3ddd1ea73a18fb92fe88c936df89fbf5bca2db058b03487bc289cbe50a4070c6cb4b8 SHA512 dd467d58f862370cc08dde96b907542118959fba7de4c4c04c59ee6fcf087a9c78d6667977221862401f321cf985773d725c15947709b738cfc1c351adb94c5c -EBUILD rocm-device-libs-5.3.3.ebuild 1184 BLAKE2B 76c1a7896d51ce5797af910f5bb5b96d8097e8b58f4308676234a6c85ba3ddd1ea73a18fb92fe88c936df89fbf5bca2db058b03487bc289cbe50a4070c6cb4b8 SHA512 dd467d58f862370cc08dde96b907542118959fba7de4c4c04c59ee6fcf087a9c78d6667977221862401f321cf985773d725c15947709b738cfc1c351adb94c5c -EBUILD rocm-device-libs-5.4.3.ebuild 1250 BLAKE2B 6000c6bc6dc75cf647295f5122749e4c9b72d785a23902e565e54dfc41f3cbb1c216b376fe1ac2bf01c3f7b99cf309eb8b864fd34e2c0b9f2d96382c65ec5afc SHA512 fd47115cbf83126180fc68e27d8597644a779c7f6e42d9d1da4676fd6281778e5a1320f5a8875e1d5bd11801a601f1ad6c507e6d9a48c3393acc6ce89e860fa1 -EBUILD rocm-device-libs-5.5.1.ebuild 1206 BLAKE2B 01dee1e4c7118bca0e2a8e017418bea09a36ea4dedf1d452376b9d1e9d28533e6b718be3f169c6add4188d0d648ce2c1b6b5ef7a6d5e8eefa2d5fc3e49aa2e05 SHA512 8048e7658bda7721bf85adfa521ed94f6648bb2f70ecffcd09b7726bb8f512b4db81b7bcdc08e42c834829cc4fb88f6f6fe9c2bb3eac9387ab735a8d32b3866b EBUILD rocm-device-libs-5.7.1.ebuild 1455 BLAKE2B 85df640675a3e163397691198be61e9c7cc11bc02b9cbfbcf4820ed2d4403218b60c83ba4fbcf38a62bb0df49eea6447e94d27f7ecc6beaebb5777d2bf750d04 SHA512 ba10a16ae8f530fbe783fa4b42ff02b9ed1a4e53fc42d40e201d0609fe4300814067d29875367eb67dbf045f7e058cac82d38ce3867f8c720d75bfcbf65aa2d4 EBUILD rocm-device-libs-6.1.1.ebuild 2378 BLAKE2B 806c3f420e5156f770429208b481b1768350918b1cd9cd9f373bb85e80186132cd2e102c60e9271e8895661c2877c6b979565385e53cc0d544cc9458f31b4746 SHA512 0e773fc157f02e6b8b4beee34bc87217b4c80b83854c85973ab83c595dc9fe29960128d789cb1846c3878f1fe3547aac293d2edc2fbd7cae633cae3d85e71e6f EBUILD rocm-device-libs-6.1.2.ebuild 2421 BLAKE2B 8aa35401997852ccbd17cfe6fb836ff4496e1a4ae79fa40f03d4d91e9bc7947fbbb026a484fd7f197c32113037e601aecfe543b3050cd53d99fa65c776433eee SHA512 675809b9017a65b8bc13b88a096fe3e4247947dd3b49501f476eee642b600a7baaa4d9a9c123f1ea3917d3b69d8d3f7225dd330ae56ebf0e83cc6abea9517fdb EBUILD rocm-device-libs-6.3.0.ebuild 2487 BLAKE2B c66c0c2f69f6add3c9735377b1c199ff472e71110cefa3a3ff2662ad085b45ec53f412ec937469e62c26b283ef7ec7507fb679612cb5038acbdbe0d93ed8e11e SHA512 155cbfa18f0ff07f8b2e9d7051a302c1634004866c331722171b192172ae2cb25d714a8c832a2ad963e4913973d3088ea9a989f52f17b21c2b110eb32b6a28b2 +EBUILD rocm-device-libs-6.3.2.ebuild 2487 BLAKE2B ab11a4811c9f32e09a770aadf8e64390b7dd06baa467bc2bff0bc872364ee727f9cf4d051fd2fa9564d97d12b1307a6ef449e64d105e178cbc115b587995a0e1 SHA512 160a22b92f7550dea60e62de654c3150b1f7d6fac5e52139b38064cd6293ddc4651ed171090894a8e39da17a8bcd8469a9de6e69ced8367a516b0fb813f43f91 MISC metadata.xml 486 BLAKE2B 39c4a21b96ad471942a38d1c46b2600e3544729a87cd01c79606d495c595f271d5c04621ec581d2322686aca56de5d7c4b2b0d6125fc8db15b1236b2c093c8c9 SHA512 1a7d6570a687bb55877c6a5d9cbd7dc30a72ec0613b84e33be0982ff46b8d80d89e502e50364afdcc1022d7620fc10317a411b27c255caeafa2b45a85a43fd8c diff --git a/dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-llvm-link.patch b/dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-llvm-link.patch deleted file mode 100644 index 9e6dc38921e2..000000000000 --- a/dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-llvm-link.patch +++ /dev/null @@ -1,13 +0,0 @@ -https://bugs.gentoo.org/851702#c4 -Adapt to libLLVM.so instead of the seperated libs -=================================================================== ---- ROCm-Device-Libs-rocm-5.0.2.orig/utils/prepare-builtins/CMakeLists.txt -+++ ROCm-Device-Libs-rocm-5.0.2/utils/prepare-builtins/CMakeLists.txt -@@ -26,5 +26,5 @@ set_target_properties(prepare-builtins P - CXX_STANDARD_REQUIRED Yes - CXX_EXTENSIONS No) - llvm_update_compile_flags(prepare-builtins) --llvm_map_components_to_libnames(llvm_libs support core bitreader bitwriter) --target_link_libraries(prepare-builtins ${llvm_libs}) -+llvm_map_components_to_libnames(llvm_libs support) -+target_link_libraries(prepare-builtins ${llvm_libs} LLVM) diff --git a/dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-test-bitcode-dir.patch b/dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-test-bitcode-dir.patch deleted file mode 100644 index 9047f8ef90e5..000000000000 --- a/dev-libs/rocm-device-libs/files/rocm-device-libs-5.1.3-test-bitcode-dir.patch +++ /dev/null @@ -1,24 +0,0 @@ -lib/amdgcn/bitcode is not among the default bitcode dirs of clang -Add --rocm-device-lib-path to the clang argument -Excerpt from https://salsa.debian.org/rocm-team/rocm-device-libs/-/blob/d2014eed680ccce5f9bd61ff4fc28a89682575f3/debian/patches/cmake-amdgcn-bitcode.patch -============================================== ---- rocm-device-libs.orig/test/constant_folding/RunConstantFoldTest.cmake -+++ rocm-device-libs/test/constant_folding/RunConstantFoldTest.cmake -@@ -16,6 +16,7 @@ - -target amdgcn-amd-amdhsa -mcpu=${TEST_CPU} - -Xclang -finclude-default-header - --rocm-path=${BINARY_DIR} -+ --rocm-device-lib-path=${AMDGCN_BITCODES} - -mllvm -amdgpu-simplify-libcall=0 - -o ${OUTPUT_FILE} ${INPUT_FILE} - RESULT_VARIABLE CLANG_RESULT ---- rocm-device-libs.orig/test/constant_folding/CMakeLists.txt -+++ rocm-device-libs/test/constant_folding/CMakeLists.txt -@@ -30,6 +30,7 @@ - -DFILECHECK_BIN=${FILECHECK_BIN} - -DOUTPUT_FILE=output.${name}.ll - -DINPUT_FILE=${CMAKE_CURRENT_SOURCE_DIR}/${name}.cl -+ -DAMDGCN_BITCODES=${PROJECT_BINARY_DIR}/lib/amdgcn/bitcode - -DTEST_CPU=gfx900 - -P ${CMAKE_CURRENT_SOURCE_DIR}/RunConstantFoldTest.cmake) - endfunction() diff --git a/dev-libs/rocm-device-libs/files/rocm-device-libs-5.4.3-Revert-Update-counters-for-gfx11.patch b/dev-libs/rocm-device-libs/files/rocm-device-libs-5.4.3-Revert-Update-counters-for-gfx11.patch deleted file mode 100644 index bf9b2c372600..000000000000 --- a/dev-libs/rocm-device-libs/files/rocm-device-libs-5.4.3-Revert-Update-counters-for-gfx11.patch +++ /dev/null @@ -1,216 +0,0 @@ -From 8ce920dddac9846254aaf6261bafd8b22976b04e Mon Sep 17 00:00:00 2001 -From: Jeremy Newton -Date: Sun, 18 Dec 2022 20:48:21 -0500 -Subject: [PATCH] Revert "Update counters for gfx11" - -This reverts commit 85f95b94960c6f7ff4ff0242a399deb4a204fb6a. ---- - doc/OCKL.md | 4 ++-- - ockl/inc/ockl.h | 3 --- - ockl/src/dm.cl | 15 +++++++++++---- - ockl/src/mtime.cl | 35 ++--------------------------------- - ockl/src/wait.cl | 18 +++++++++--------- - 5 files changed, 24 insertions(+), 51 deletions(-) - -diff --git a/doc/OCKL.md b/doc/OCKL.md -index 07574f6..05c5c49 100644 ---- a/doc/OCKL.md -+++ b/doc/OCKL.md -@@ -99,8 +99,8 @@ The following table lists the available functions along with a brief description - | `int __ockl_mul24_i32(int,int);` | Multiply assuming operands fit in 24 bits | - | `uint __ockl_mul24_u32(uint,uint);` | | - | - | | --| `ulong __ockl_cyclectr_u64(void);` | Current value of free running 64-bit clock counter | --| `ulong __ockl_steadyctr_u64(void);` | Current value of constant speed 64-bit clock counter | -+| `ulong __ockl_memtime_u64(void);` | Current value of free running 64-bit clock counter | -+| `ulong __ockl_memrealtime_u64(void);` | Current value of constant speed 64-bit clock counter | - | - | | - | `uint __ockl_activelane_u32(void);` | Index of currently lane counting only active lanes in wavefront | - | - | | -diff --git a/ockl/inc/ockl.h b/ockl/inc/ockl.h -index d0b98d4..6300279 100644 ---- a/ockl/inc/ockl.h -+++ b/ockl/inc/ockl.h -@@ -143,9 +143,6 @@ DECL_OCKL_NULLARY_U32(activelane) - - DECL_OCKL_NULLARY_U64(memtime) - DECL_OCKL_NULLARY_U64(memrealtime) --DECL_OCKL_NULLARY_U64(cyclectr) --DECL_OCKL_NULLARY_U64(steadyctr) -- - - extern half OCKL_MANGLE_T(wfred_add,f16)(half x); - extern float OCKL_MANGLE_T(wfred_add,f32)(float x); -diff --git a/ockl/src/dm.cl b/ockl/src/dm.cl -index 245b4a1..26373dd 100644 ---- a/ockl/src/dm.cl -+++ b/ockl/src/dm.cl -@@ -201,6 +201,13 @@ get_heap_ptr(void) { - } - } - -+// realtime -+__attribute__((target("s-memrealtime"))) static ulong -+realtime(void) -+{ -+ return __builtin_amdgcn_s_memrealtime(); -+} -+ - // The actual number of blocks in a slab with blocks of kind k - static uint - num_blocks(kind_t k) -@@ -466,7 +473,7 @@ new_slab_wait(__global heap_t *hp, kind_t k) - uint aid = __ockl_activelane_u32(); - if (aid == 0) { - ulong expected = AL(&hp->salloc_time[k].value, memory_order_relaxed); -- ulong now = __ockl_steadyctr_u64(); -+ ulong now = realtime(); - ulong dt = now - expected; - if (dt < SLAB_TICKS) - __ockl_rtcwait_u32(SLAB_TICKS - (uint)dt); -@@ -480,7 +487,7 @@ grow_recordable_wait(__global heap_t *hp, kind_t k) - uint aid = __ockl_activelane_u32(); - if (aid == 0) { - ulong expected = AL(&hp->grow_time[k].value, memory_order_relaxed); -- ulong now = __ockl_steadyctr_u64(); -+ ulong now = realtime(); - ulong dt = now - expected; - if (dt < GROW_TICKS) - __ockl_rtcwait_u32(GROW_TICKS - (uint)dt); -@@ -540,7 +547,7 @@ try_grow_num_recordable_slabs(__global heap_t *hp, kind_t k) - uint ret = GROW_BUSY; - if (aid == 0) { - ulong expected = AL(&hp->grow_time[k].value, memory_order_relaxed); -- ulong now = __ockl_steadyctr_u64(); -+ ulong now = realtime(); - if (now - expected >= GROW_TICKS && - ACE(&hp->grow_time[k].value, &expected, now, memory_order_relaxed)) - ret = GROW_FAILURE; -@@ -687,7 +694,7 @@ try_allocate_new_slab(__global heap_t *hp, kind_t k) - - if (aid == 0) { - ulong expected = AL(&hp->salloc_time[k].value, memory_order_relaxed); -- ulong now = __ockl_steadyctr_u64(); -+ ulong now = realtime(); - if (now - expected >= SLAB_TICKS && - ACE(&hp->salloc_time[k].value, &expected, now, memory_order_relaxed)) - ret = (__global sdata_t *)0; -diff --git a/ockl/src/mtime.cl b/ockl/src/mtime.cl -index 43f4161..543aaa3 100644 ---- a/ockl/src/mtime.cl -+++ b/ockl/src/mtime.cl -@@ -5,48 +5,17 @@ - * License. See LICENSE.TXT for details. - *===------------------------------------------------------------------------*/ - --#include "oclc.h" - #include "ockl.h" - --__attribute__((target("s-memrealtime"))) static ulong --mem_realtime(void) --{ -- return __builtin_amdgcn_s_memrealtime(); --} -- --__attribute__((target("gfx11-insts"))) static ulong --msg_realtime(void) --{ -- return __builtin_amdgcn_s_sendmsg_rtnl(0x83); --} -- --// Deprecated - __attribute__((target("s-memtime-inst"))) ulong - OCKL_MANGLE_U64(memtime)(void) - { - return __builtin_amdgcn_s_memtime(); - } - --// Deprecated --ulong -+__attribute__((target("s-memrealtime"))) ulong - OCKL_MANGLE_U64(memrealtime)(void) - { -- return mem_realtime(); --} -- --ulong --OCKL_MANGLE_U64(cyclectr)(void) --{ -- return __builtin_readcyclecounter(); --} -- --ulong --OCKL_MANGLE_U64(steadyctr)(void) --{ -- if (__oclc_ISA_version >= 11000) { -- return msg_realtime(); -- } else { -- return mem_realtime(); -- } -+ return __builtin_amdgcn_s_memrealtime(); - } - -diff --git a/ockl/src/wait.cl b/ockl/src/wait.cl -index 49b038e..b249599 100644 ---- a/ockl/src/wait.cl -+++ b/ockl/src/wait.cl -@@ -10,47 +10,47 @@ - #include "ockl.h" - #include "oclc.h" - --void -+__attribute__((target("s-memrealtime"))) void - OCKL_MANGLE_T(rtcwait,u32)(uint ticks) - { -- ulong now = __ockl_steadyctr_u64(); -+ ulong now = __builtin_amdgcn_s_memrealtime(); - ulong end = now + __builtin_amdgcn_readfirstlane(ticks); - - if (__oclc_ISA_version >= 9000) { - while (end > now + 1625) { - __builtin_amdgcn_s_sleep(127); -- now = __ockl_steadyctr_u64(); -+ now = __builtin_amdgcn_s_memrealtime(); - } - - while (end > now + 806) { - __builtin_amdgcn_s_sleep(63); -- now = __ockl_steadyctr_u64(); -+ now = __builtin_amdgcn_s_memrealtime(); - } - - while (end > now + 396) { - __builtin_amdgcn_s_sleep(31); -- now = __ockl_steadyctr_u64(); -+ now = __builtin_amdgcn_s_memrealtime(); - } - } - - while (end > now + 192) { - __builtin_amdgcn_s_sleep(15); -- now = __ockl_steadyctr_u64(); -+ now = __builtin_amdgcn_s_memrealtime(); - } - - while (end > now + 89) { - __builtin_amdgcn_s_sleep(7); -- now = __ockl_steadyctr_u64(); -+ now = __builtin_amdgcn_s_memrealtime(); - } - - while (end > now + 38) { - __builtin_amdgcn_s_sleep(3); -- now = __ockl_steadyctr_u64(); -+ now = __builtin_amdgcn_s_memrealtime(); - } - - while (end > now) { - __builtin_amdgcn_s_sleep(1); -- now = __ockl_steadyctr_u64(); -+ now = __builtin_amdgcn_s_memrealtime(); - } - } - --- -2.34.1 - diff --git a/dev-libs/rocm-device-libs/rocm-device-libs-5.1.3-r1.ebuild b/dev-libs/rocm-device-libs/rocm-device-libs-5.1.3-r1.ebuild deleted file mode 100644 index b7ff41518668..000000000000 --- a/dev-libs/rocm-device-libs/rocm-device-libs-5.1.3-r1.ebuild +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-Device-Libs-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Device Libraries" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-Device-Libs" - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="test" -RESTRICT="!test? ( test )" - -RDEPEND="llvm-core/clang:${LLVM_MAX_SLOT}" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -PATCHES=( "${FILESDIR}/${PN}-5.1.3-test-bitcode-dir.patch" - "${FILESDIR}/${PN}-5.1.3-llvm-link.patch" ) - -src_prepare() { - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/OCL.cmake" || die - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/Packages.cmake" || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-device-libs/rocm-device-libs-5.3.3.ebuild b/dev-libs/rocm-device-libs/rocm-device-libs-5.3.3.ebuild deleted file mode 100644 index b7ff41518668..000000000000 --- a/dev-libs/rocm-device-libs/rocm-device-libs-5.3.3.ebuild +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-Device-Libs-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Device Libraries" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-Device-Libs" - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="test" -RESTRICT="!test? ( test )" - -RDEPEND="llvm-core/clang:${LLVM_MAX_SLOT}" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -PATCHES=( "${FILESDIR}/${PN}-5.1.3-test-bitcode-dir.patch" - "${FILESDIR}/${PN}-5.1.3-llvm-link.patch" ) - -src_prepare() { - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/OCL.cmake" || die - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/Packages.cmake" || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-device-libs/rocm-device-libs-5.4.3.ebuild b/dev-libs/rocm-device-libs/rocm-device-libs-5.4.3.ebuild deleted file mode 100644 index b6add6d0f153..000000000000 --- a/dev-libs/rocm-device-libs/rocm-device-libs-5.4.3.ebuild +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-Device-Libs-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Device Libraries" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-Device-Libs" - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="test" -RESTRICT="!test? ( test )" - -RDEPEND="llvm-core/clang:${LLVM_MAX_SLOT}" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -PATCHES=( "${FILESDIR}/${PN}-5.1.3-test-bitcode-dir.patch" - "${FILESDIR}/${PN}-5.1.3-llvm-link.patch" - "${FILESDIR}/${PN}-5.4.3-Revert-Update-counters-for-gfx11.patch" ) - -src_prepare() { - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/OCL.cmake" || die - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/Packages.cmake" || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-device-libs/rocm-device-libs-5.5.1.ebuild b/dev-libs/rocm-device-libs/rocm-device-libs-5.5.1.ebuild deleted file mode 100644 index 223583f417aa..000000000000 --- a/dev-libs/rocm-device-libs/rocm-device-libs-5.5.1.ebuild +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm - -LLVM_MAX_SLOT=16 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCm-Device-Libs-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Device Libraries" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-Device-Libs" - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="test" -RESTRICT="!test? ( test )" - -RDEPEND="llvm-core/clang:${LLVM_MAX_SLOT}" -DEPEND="${RDEPEND}" - -CMAKE_BUILD_TYPE=Release - -PATCHES=( - "${FILESDIR}/${PN}-5.4.3-Revert-Update-counters-for-gfx11.patch" - "${FILESDIR}/${PN}-5.5.1-fix-llvm-link.patch" - ) - -src_prepare() { - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/OCL.cmake" || die - sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" -i "${S}/cmake/Packages.cmake" || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DLLVM_DIR="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" - ) - cmake_src_configure -} diff --git a/dev-libs/rocm-device-libs/rocm-device-libs-6.3.2.ebuild b/dev-libs/rocm-device-libs/rocm-device-libs-6.3.2.ebuild new file mode 100644 index 000000000000..962910cbdd55 --- /dev/null +++ b/dev-libs/rocm-device-libs/rocm-device-libs-6.3.2.ebuild @@ -0,0 +1,99 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +inherit cmake flag-o-matic llvm-r1 + +MY_P=llvm-project-rocm-${PV} +components=( "amd/device-libs" ) + +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/ROCm/llvm-project" + inherit git-r3 + S="${WORKDIR}/${P}/${components[0]}" +else + SRC_URI="https://github.com/ROCm/llvm-project/archive/rocm-${PV}.tar.gz -> ${MY_P}.tar.gz" + S="${WORKDIR}/${MY_P}/${components[0]}" + KEYWORDS="~amd64" +fi + +DESCRIPTION="Radeon Open Compute Device Libraries" +HOMEPAGE="https://github.com/ROCm/llvm-project/tree/amd-staging/amd/device-libs" + +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" +IUSE="test" +RESTRICT="!test? ( test )" + +BDEPEND=" + dev-build/rocm-cmake + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/lld:${LLVM_SLOT} + ') +" + +CMAKE_BUILD_TYPE=Release + +PATCHES=( + "${FILESDIR}/${PN}-6.1.0-fix-llvm-link.patch" + "${FILESDIR}/${PN}-6.1.2-fix-build.patch" + "${FILESDIR}/${PN}-6.2.0-test-bitcode-dir.patch" +) + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_fetch + git-r3_checkout '' . '' "${components[@]}" + else + archive="${MY_P}.tar.gz" + ebegin "Unpacking from ${archive}" + tar -x -z -o \ + -f "${DISTDIR}/${archive}" \ + "${components[@]/#/${MY_P}/}" || die + eend ${?} + fi +} + +src_prepare() { + sed -e "s:amdgcn/bitcode:lib/amdgcn/bitcode:" \ + -i "${S}/cmake/OCL.cmake" \ + -i "${S}/cmake/Packages.cmake" || die + cmake_src_prepare +} + +src_configure() { + # Do not trust CMake with autoselecting Clang, as it autoselects the latest one + # producing too modern LLVM bitcode and causing linker errors in other packages. + # Clean up unsupported flags for the switched compiler, see #936099 + local -x CC="$(get_llvm_prefix)/bin/clang" + local -x CXX="$(get_llvm_prefix)/bin/clang++" + strip-unsupported-flags + + local mycmakeargs=( + -DLLVM_DIR="$(get_llvm_prefix)" + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + local CLANG_EXE="$(get_llvm_prefix)/bin/clang" + # install symlink, so that clang won't ask for "--rocm-device-lib-path" flag anymore + local bitcodedir="$("${CLANG_EXE}" -print-resource-dir)/$(get_libdir)/amdgcn/bitcode" + dosym -r "/usr/lib/amdgcn/bitcode" "${bitcodedir#${EPREFIX}}" +} + +src_test() { + # https://github.com/ROCm/llvm-project/issues/76 + # "Failing tests are on gfx that are not supported" + local CMAKE_SKIP_TESTS=( + compile_frexp__gfx600 + compile_fract__gfx600 + compile_fract__gfx700 + ) + + cmake_src_test +} diff --git a/dev-libs/rocm-opencl-runtime/Manifest b/dev-libs/rocm-opencl-runtime/Manifest index 9e5dcfbdab8e..09c2f2b5c061 100644 --- a/dev-libs/rocm-opencl-runtime/Manifest +++ b/dev-libs/rocm-opencl-runtime/Manifest @@ -1,31 +1,15 @@ -AUX rocclr-5.3.3-fix-include.patch 6053 BLAKE2B e215cefd0f2895beda0e3c029a24e48f4de5060dcc10ccdcb4fdf8771d78a66c59f8b0cfe69d70eed3a80aea2c30e30b41607e1a43a77f4b322fa264dcb539e9 SHA512 636f3b91e6c509d1b34ae0d6757a830bc796429c56d0458137a51b9bf4c8575126de7b8259d761b44bc5888839cdb349fdb35c192d1e92e9ef39a6f671997113 -AUX rocclr-5.3.3-gcc13.patch 776 BLAKE2B f34e6167a13dc65a88535492bc0cac7f62fc1c3844bc64170be6b59ae024acc5a776a99c1040a16959c2295012394bc103d64919012b2f76463fa52762a98101 SHA512 ec67a5a04f76204674ed1121f19c642a7eb95656d32da3c0776ba87a5a0a475df60ecb890dbefad069ef5463ea3b3fe3c8da836a878081b7c3ed5df2ac69c94c -AUX rocm-opencl-runtime-3.5.0-do-not-install-libopencl.patch 548 BLAKE2B ae4234422acdc1fdf0bd82a0469f63239e709c0626e3918d34e6a023b70452eed98aea1725a3638ee8f46d54d08ca885bf114ad3a7689baaa18794a6d5c983b9 SHA512 27682bb65e281744556c2a99c38ae7b3e22e3306ff10ceb98d8c3204950982b17521309dd11d36e1a07ca33b8448dae1270fa31004db9841025ff9a9e9af3d4c -AUX rocm-opencl-runtime-5.0.2-enable-gfx800.patch 970 BLAKE2B 4080ab450457c21de1c81c7e9eebc75578d7326430732f2dab5688150347de2b7977d8804573fd79bb1d14a2e5b87ede0de41cd7c7920f90fe8762686198f931 SHA512 b4f653fbe1b51e789a8213e37c5e6c43d7035e7971c483a3e24903e1d46bdbf206575b16ac6c78b5c32ba4e32dfa428339723b58f672716c05e51c785543c535 -AUX rocm-opencl-runtime-5.1.3-remove-clinfo.patch 1178 BLAKE2B b708214f9c4a6860a23281e8ece176d4b1968fc005e1b95a88e67752a8c60a23a7f66ff267ef909ddee4a45f4c8441339ea6f5de867d77df10c98d8043bb54d4 SHA512 626574b948a16cd59513496791bd73a5c1f3bda68ae9e01ea982bd036858f7c8817ea33a22e85f180cecdbe19d999afb2604c8cb549bdd71d4bfc56c18f5d4ad -AUX rocm-opencl-runtime-5.3.3-gcc13.patch 791 BLAKE2B 6b284cb6cd9b273ee6d21850f7a29f75079567c70bdb263b3b95b27632ac71dd5e0be1200db58281c3ac737ff9d042dbd87615300e6182c9f43425098ae3389c SHA512 9edcfed7d5a5ed8e5aa1ccd8e09639d95ef373878eb7bc4ad65aa38539d8138c1d589056ffe9fd95cb18e95aebef3f206f5731557a1451758cbf3ae0e7b30e21 AUX rocm-opencl-runtime-6.1.2-fix-segfault.patch 1471 BLAKE2B 868e0b7d653277623d1f708680bb2cef8c5899472205345487c117888717987a3697837b6f931b31f3adf8adefdda4e6eb91102219c05c1639c5cf389eda3209 SHA512 27ab04193692a5089b8ee73f9882a9c86e518cb77afd631dc84b3a9ffe9cda48a0ac853dd259d66bc937791cfb2422668429d472fd62b833aef076cfa930180f AUX rocm-opencl-runtime-6.1.2-musl.patch 566 BLAKE2B ca84d7a1c38b6ae3e7dedbda8cafa0ad5bf31165c3a7b5af8a1a9714d871eeedb64bd6e6c71960e65ee3f7bed2bdf302d07e7c33e225102123d8516018391430 SHA512 e224e84b6eb4b43fd79e5172ad4882d1862d7a50fcb7ed60afc58148a399a96fafaf14477ed31d503f3ecb4c93ba2b58bdcad3c6dce7afab61ee7a8e60d3f65e AUX rocm-opencl-runtime-6.2.4-fix-lib-version.patch 575 BLAKE2B e5e7ad57f54d7c789c6da40d6b1c4460ec5bb4712e91adc63586d382e3e973ebc747d08c2bc2e313b6f7bd32c72b972946126ea4e60d1783d185a7764d581498 SHA512 0496c9f7ac503cad66e2ad9b55ae03e13b783d1698529dbee290a4d3abf23acdc9c4a121bf31a58f3ed09ba80dd106800816fbf4009dc5383356d3d5005a8cfa -DIST rocclr-5.1.3.tar.gz 618606 BLAKE2B 02b7732ddd03c0883bee49c56466cd21c649159f801bfb2537eea6e640c65613eb57b37d942f465a9deb83d65735f51212dde5e4f77ba8239d1a6b7037e1800c SHA512 89fd2eca39ed84a1cf525b2c606089ef39f64c1f997c4880e10722da6de4864110752640e1508db1aeb9d15c48ba4e6fe5dbe7a9e56718853ece42548028b2ca -DIST rocclr-5.3.3.tar.gz 625944 BLAKE2B 0cdbc1415a355e1d56628834846aaa8587c9827eeea59f4312b788e868265dcb42197181fd5ef411416da2e11662c7f665f578aa750ab88c3a5405bcc58ee449 SHA512 3f85532cffc09c2ca8e7cd1770263d1c1a38633ed2bc5cfe62072e12a6f8f669db400519950718be31f6b77693d372e2ef905f06c7f02e126aa9ff7d2da97924 -DIST rocclr-5.4.3.tar.gz 640557 BLAKE2B 9ab91bab7ffb06c9c0d1c2ae79533fccc597071dda289ac375e32eb2965c638a7029951d2a49d46eeead9d7d242fe3a0cedb3e444d877af1bbf0e2d801c91e11 SHA512 c1d1a2ca08c2d762a221c04d394469aa7aff46086151333b145e0db9a7c7eb3dbbf8b9693e50d816aa9a13c16b4ebacf5ff3d5d8ff3393a8a764728ef5172d3a -DIST rocclr-5.5.1.tar.gz 634330 BLAKE2B e6383a6b6b09f274a944d66effd345e38a191ec73ee5c5240f8ec8bb62a4df97b80835ce57f8f78c3834602b9da425b49289b5c7cd7e4c7071147ff409c6a6c9 SHA512 4c12011d22a4f14d9e93250b2a38716eb973139afa1adbbbd51c0e0ed13c0b7c1f45a37c71ef937c5fdabf09e928d7913ca3332fc61b7a2c10d21421306a228f DIST rocm-clr-5.7.1.tar.gz 2008647 BLAKE2B 3db0760d6f83504e60caf88a2dd5e0bc02c7db9d6f263ad0eb2cfc79aa0f88a3699c412844a0158a796d9d02e79660287e791edad787d814eefffea4fd2298b4 SHA512 d79323481d82fc02c12a32cdcc0d14437d512af023e7737db0387b7eecb27fe6e4ae7c71d6adce57932a04bb24c880440d9dc10aeb5af11a4f2ca64d44330965 DIST rocm-clr-6.1.1.tar.gz 2031034 BLAKE2B b0485bb015d31986f4988d1db0c029c826856e50b5bb1b58fac2097c14b3966668f1b8d41ec198889e27ac860497a8b3c081ec31d52390d5c9ff5db092bf7cce SHA512 86925e8b9a9e77b06a57daefbc7279887b4ef7c6a79c3717bc2f2d3bf29926281c60063fd17e21c65d7def520d9f579bf88f69051d053a38750ba968f69ca3fc DIST rocm-clr-6.1.2.tar.gz 2031283 BLAKE2B d51d32a77794ea97f1a3817786c9fd6b482106b665eea6e2c9b4c11e4dce19a3486386eb5ba111554c2d82c30e2a93add7502eed5768caf3fb709fb5fbb2e71b SHA512 e97224451864efe0084c4117f54893c9624a6a9f365a0b4abad08fd9635f008dea742dc589429fbb714e1b8177d06362c0f5a741f6c4a050d0fd4d48da72d54b DIST rocm-clr-6.3.0.tar.gz 2093572 BLAKE2B 14f75f9f5dc4000a2abf28e523659def8cd96112c9c8b95abb634c33433077faa3ddab3fbe659e0ed2e1f309f63a93b7eb03fa6f246b4cea06ca8c512c13308a SHA512 f005baaf2a8f63946811db990e2d373906b31a4085a51427d407c9e4c1d877a14aeb713190a285953cadb960b5517570941c60e2f998adb2b1f9833f1d2f5925 -DIST rocm-opencl-runtime-5.1.3.tar.gz 1004765 BLAKE2B 64d9b42026d2be1d0e4aa666785699f6b4ec0584a927904a94bf830883050943503f8bdd7c97438a2fb11c71686a330d526f633959916c5c6c8da2e037841e79 SHA512 b83c3ae0bfad80f867bacce36710a8964f6dd7e64bf50da3ec6ce842217d6de63299d9ceaab9dc25a22252484520a85d02859809463dad5dda9b1f00a86863e0 -DIST rocm-opencl-runtime-5.3.3.tar.gz 1007773 BLAKE2B a3f600a68183337f92b152a123241cb7025889cca2ef6814d9d5b5a2146a78703b171d20bcb432bc7a2cdd1f24ad349408c17816b25a66702e9f0f5345af9082 SHA512 391f0f244b7f02972df8cada821e69ee8d81d96b9cff3c14f1d0838da583d8fb136ec4bd5ee820f6dd261968e9eef5e9a5b10b7bb76b1b64625c399d79bcb03f -DIST rocm-opencl-runtime-5.4.3.tar.gz 1005268 BLAKE2B f9398e4c2b0f045f1b5d8df9f31b7f2bef6a9201885aa6ee5fc5d71632cfde26a078d9a5ea38c3da12d3c187faf04c7bdcf1a8ecb9927cdba56b1efdfcdc44ee SHA512 f65d4622ce8721a6b91ab5b5b306d142ba507d3e631ac3ab0b76c5bc6d8d18455e02debd954c82e7eb609f232b509f1ec1a013dc2fad467c2c2ad31fdf15755d -DIST rocm-opencl-runtime-5.5.1.tar.gz 991802 BLAKE2B 07d955b4a76b11296259287f5878cadc2438350a3abcdb5bd693c02790ff4c330b1d0a2a87f8de5334b3e3459c26b3fdf695886502ec5d2c373d807c242c8f93 SHA512 06786e818002dc43f64e4b0aaae0a0a2bcdad7acdb4662e1215d43277b107d65fb9a7f7441c31e3378c380cac860b1cd2eaefb5753246beffa4d9c10efced85e -EBUILD rocm-opencl-runtime-5.1.3.ebuild 4053 BLAKE2B f7b35f367f54155504b7e8b73d01ef7ea014eb76fe9dbf502be434ecd07018168a8f41f3d15bfdaa46d447d3ba82107aed11a5000592d1c29a687824fce7bd75 SHA512 3120352aa1733f3ee13ac734d1558241fc325d7a3e2647ed0a3e3e305caa2f1acfc8963349a01f09a70ae0cf2a75b1d830661efddc77111ba6398e148acf4afa -EBUILD rocm-opencl-runtime-5.3.3-r1.ebuild 3630 BLAKE2B cdafd2367c4b222a43b434e8878208b8920ca68482375c23ad04a626fc3aa295dfb2e7caaa82f2eabf1d69877b08309a44f2a53bad731ca1bedab517b5544cf5 SHA512 9b230ad15ca5d1a6d109637f29919254294ba3a92aed74a9decac5c1aa8259f2a25de8c8a41594e140fbc49c1d4755e2858a62c9977eae5213cad4a5495dc011 -EBUILD rocm-opencl-runtime-5.4.3-r1.ebuild 4031 BLAKE2B c952245f6f6ad1910facd33a82d25b77f2b20cbbdf4c05ca7ce735ab913fc49bdc5cdc1e8fc7f944cc5574331305e2d96cbb9bccd17a7ec28c042d9bec91499c SHA512 2cf80ae9fa5dba61936216fe87274998deefa70d0f20613ad0bf048e29f35eb37f525f1682024a85ab4a4acd79b8d75ad586008c5032dc527b293e79d3bc6a01 -EBUILD rocm-opencl-runtime-5.5.1.ebuild 4002 BLAKE2B e784debbe6ca533290ca801cf965087e7e01d39c84a65ad2a738a672f3d330c7a28cc13fd5a8d6cbcc9520c9543cce9b762d480b6f3f4173006301c293af013b SHA512 38940e4b6d028fc8e713ec1641824776d0fab540f3e9e3011f6b377caf82a9b4d13ccd897605c01557975c1ec4f89285e944cee6b67bdbe56ddc300284d2df55 +DIST rocm-clr-6.3.2.tar.gz 2095677 BLAKE2B 2f1122a2058f8ba358fe48a46473f23c46a5413fef16515f103c21a8ae13bb76522fbe587cb9c9e6e3dd06f968402b6a881391823c80381c0c41072597c845ac SHA512 5bade294dc6fc60bf459bfd7124c354f2b0079167d3c8776a9e3d6d8320bb9b1a2a0770a466987e164994293024bf47de158ba207f077968dfccb7bf20fb884b EBUILD rocm-opencl-runtime-5.7.1-r1.ebuild 3119 BLAKE2B 672082b1bea0f6cd45f8c37181e731d60dec3844fa0a31aca555b7c6e154d4981d33d1140fc83b3f8c6fbc46b7a13b88c76278ea0c04463eb0f2b398a60b3bbf SHA512 7d12f85d62bfb48df3f7c0d705e5411dad21ffa71964f19b09f2623aa836ecd91fedb28ad1ee5790ca5c538139e6790b2154c66dccc67687decdd3fb62d92b18 EBUILD rocm-opencl-runtime-6.1.1.ebuild 2695 BLAKE2B 2e2241518863f36222e755d61f8e5c25510c5a5250458fce110d5830898a36ae3e97a20fce61382d7ebf39346dee705b673dd0c1e4390e3ee44f7c23eff4d1b7 SHA512 edfb87e56c042000e41480771186a8e536e35a58cb2e57ef71f3d118501dcc85eb1025eba6a6af0b25d9c896329aa832d56f9b1037031c4279e5f21367dfa81b EBUILD rocm-opencl-runtime-6.1.2-r1.ebuild 2792 BLAKE2B db82b119e08794967bb97ff40816a6311ba8d42968697497163849716cf29ade994cc9b50656c2cd052abf12fb03c0a25784c2cb3b598bbef7dbdad6f2137e46 SHA512 288de016364fd933a5cee3464094374ee79b4b5636ef537658517cf5b2da7a7f0b6b7a83a153a9ef6cbc4b57c658ed1d1b0aa5fb362391b5163ecfeeeff85780 EBUILD rocm-opencl-runtime-6.1.2.ebuild 2695 BLAKE2B 2e2241518863f36222e755d61f8e5c25510c5a5250458fce110d5830898a36ae3e97a20fce61382d7ebf39346dee705b673dd0c1e4390e3ee44f7c23eff4d1b7 SHA512 edfb87e56c042000e41480771186a8e536e35a58cb2e57ef71f3d118501dcc85eb1025eba6a6af0b25d9c896329aa832d56f9b1037031c4279e5f21367dfa81b EBUILD rocm-opencl-runtime-6.3.0.ebuild 2775 BLAKE2B 6fcc59f0997268f445f141a49a5d48694e3a2f2b32149d51ee1601787cd0a8599054ee209368a1acb2c148c162f354c7dbbe99637a5d680213a71a95e6b72627 SHA512 1e514a8943560aee03c203cb57ec6d293158863c9199b629fafbcfefc876f2074004b6b1198059a1899016374f2b35ed6642c7f6459cd8a5547484247a9a9d35 +EBUILD rocm-opencl-runtime-6.3.2.ebuild 2775 BLAKE2B c51021f4c55ff1588aa25d2ea1eaa773d86908ec69f1d82d1121da0b8a6ba6ac7d4f5c24604a0bb75810f3775fcc8f5978e637a4af1e5c0afb4dcb2d4a7d14a0 SHA512 0518477dad9bde4abb787953a5ba43a286d69d84eb0914f9a9f795c294642c78833693ef0e72a69ed50692a66d78dd83cdadfea4875ba868f381cbd137ee9855 MISC metadata.xml 512 BLAKE2B bf634540a3606c91de1909529e2cb11e447e530192dd3bbe5b118b8420f1fea5564fe84665fa3a7aa548e2431ac33dc19ac08607c215ec4d70a6381eb9791133 SHA512 33fe8f8cca60ffad6359daf73315b006b6103dedf3370fc32ac203f1d9a584b8ff3754b9198f852483e0e2500afbb16fc711f53b932879272a7cf3a80d551570 diff --git a/dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-fix-include.patch b/dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-fix-include.patch deleted file mode 100644 index e014fe374bec..000000000000 --- a/dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-fix-include.patch +++ /dev/null @@ -1,218 +0,0 @@ -For https://bugs.gentoo.org/893602 -================================== -From 197ea6f76f34e0b3c8ab46d96c2fa5014e467e37 Mon Sep 17 00:00:00 2001 -From: Maneesh Gupta -Date: Fri, 5 Aug 2022 05:42:39 +0000 -Subject: [PATCH] SWDEV-350289 - Fix build warnings due to file re-org - -Change-Id: I0066fa163b9f25fdde4c5b3baed1ef0654390c06 ---- - device/comgrctx.hpp | 2 +- - device/devkernel.hpp | 2 +- - device/devprogram.hpp | 2 +- - device/rocm/pro/prodevice.cpp | 2 +- - device/rocm/pro/prodriver.hpp | 2 +- - device/rocm/roccounters.hpp | 2 +- - device/rocm/rocdevice.hpp | 8 ++++---- - device/rocm/rocglinterop.hpp | 2 +- - device/rocm/rockernel.cpp | 2 +- - device/rocm/rocprogram.cpp | 2 +- - device/rocm/rocsignal.hpp | 4 ++-- - device/rocm/rocvirtual.cpp | 4 ++-- - device/rocm/rocvirtual.hpp | 8 ++++---- - 13 files changed, 21 insertions(+), 21 deletions(-) - -diff --git a/device/comgrctx.hpp b/device/comgrctx.hpp -index d69506e2..31ee24e1 100644 ---- a/device/comgrctx.hpp -+++ b/device/comgrctx.hpp -@@ -23,7 +23,7 @@ - #include - #if defined(USE_COMGR_LIBRARY) - #include "top.hpp" --#include "amd_comgr.h" -+#include "amd_comgr/amd_comgr.h" - - namespace amd { - typedef void (*t_amd_comgr_get_version)(size_t *major, size_t *minor); -diff --git a/device/devkernel.hpp b/device/devkernel.hpp -index 19b3212d..b256abf3 100644 ---- a/device/devkernel.hpp -+++ b/device/devkernel.hpp -@@ -105,7 +105,7 @@ struct RuntimeHandle { - uint32_t group_segment_size; //!< From GROUP_SEGMENT_FIXED_SIZE - }; - --#include "amd_comgr.h" -+#include "amd_comgr/amd_comgr.h" - - // for Code Object V3 - enum class ArgField : uint8_t { -diff --git a/device/devprogram.hpp b/device/devprogram.hpp -index 099d6a37..741d81b0 100644 ---- a/device/devprogram.hpp -+++ b/device/devprogram.hpp -@@ -29,7 +29,7 @@ - #include "devwavelimiter.hpp" - - #if defined(USE_COMGR_LIBRARY) --#include "amd_comgr.h" -+#include "amd_comgr/amd_comgr.h" - #endif // defined(USE_COMGR_LIBRARY) - - namespace amd { -diff --git a/device/rocm/pro/prodevice.cpp b/device/rocm/pro/prodevice.cpp -index a0e49461..1e366cd2 100644 ---- a/device/rocm/pro/prodevice.cpp -+++ b/device/rocm/pro/prodevice.cpp -@@ -20,7 +20,7 @@ - - #ifndef WITHOUT_HSA_BACKEND - --#include "hsa_ext_amd.h" -+#include "hsa/hsa_ext_amd.h" - #include "lnxheaders.h" - #include "prodevice.hpp" - #include "amdgpu_drm.h" -diff --git a/device/rocm/pro/prodriver.hpp b/device/rocm/pro/prodriver.hpp -index bc420697..819ade27 100644 ---- a/device/rocm/pro/prodriver.hpp -+++ b/device/rocm/pro/prodriver.hpp -@@ -23,7 +23,7 @@ - #ifndef WITHOUT_HSA_BACKEND - - #include "top.hpp" --#include "hsa.h" -+#include "hsa/hsa.h" - - /*! \addtogroup HSA - * @{ -diff --git a/device/rocm/roccounters.hpp b/device/rocm/roccounters.hpp -index ffc9fad0..45ebbe66 100644 ---- a/device/rocm/roccounters.hpp -+++ b/device/rocm/roccounters.hpp -@@ -24,7 +24,7 @@ - #include "top.hpp" - #include "device/device.hpp" - #include "device/rocm/rocdevice.hpp" --#include "hsa_ven_amd_aqlprofile.h" -+#include "hsa/hsa_ven_amd_aqlprofile.h" - - namespace roc { - -diff --git a/device/rocm/rocdevice.hpp b/device/rocm/rocdevice.hpp -index d8cb4c6c..44339bb9 100644 ---- a/device/rocm/rocdevice.hpp -+++ b/device/rocm/rocdevice.hpp -@@ -40,10 +40,10 @@ - #include "device/rocm/rocprintf.hpp" - #include "device/rocm/rocglinterop.hpp" - --#include "hsa.h" --#include "hsa_ext_image.h" --#include "hsa_ext_amd.h" --#include "hsa_ven_amd_loader.h" -+#include "hsa/hsa.h" -+#include "hsa/hsa_ext_image.h" -+#include "hsa/hsa_ext_amd.h" -+#include "hsa/hsa_ven_amd_loader.h" - - #include - #include -diff --git a/device/rocm/rocglinterop.hpp b/device/rocm/rocglinterop.hpp -index a539cc6f..588d8a6f 100644 ---- a/device/rocm/rocglinterop.hpp -+++ b/device/rocm/rocglinterop.hpp -@@ -34,7 +34,7 @@ typedef __GLXcontextRec* GLXContext; - - #include "device/rocm/mesa_glinterop.h" - #include "device/rocm/rocregisters.hpp" --#include "hsa_ext_amd.h" -+#include "hsa/hsa_ext_amd.h" - - namespace roc { - -diff --git a/device/rocm/rockernel.cpp b/device/rocm/rockernel.cpp -index 76ab76ad..5624c877 100644 ---- a/device/rocm/rockernel.cpp -+++ b/device/rocm/rockernel.cpp -@@ -19,7 +19,7 @@ - THE SOFTWARE. */ - - #include "rockernel.hpp" --#include "amd_hsa_kernel_code.h" -+#include "hsa/amd_hsa_kernel_code.h" - - #include - -diff --git a/device/rocm/rocprogram.cpp b/device/rocm/rocprogram.cpp -index e4559645..4f77026d 100644 ---- a/device/rocm/rocprogram.cpp -+++ b/device/rocm/rocprogram.cpp -@@ -25,7 +25,7 @@ - #include "utils/options.hpp" - #include "rockernel.hpp" - --#include "amd_hsa_kernel_code.h" -+#include "hsa/amd_hsa_kernel_code.h" - - #include - #include -diff --git a/device/rocm/rocsignal.hpp b/device/rocm/rocsignal.hpp -index 3e8c1e6e..fff310d5 100644 ---- a/device/rocm/rocsignal.hpp -+++ b/device/rocm/rocsignal.hpp -@@ -22,7 +22,7 @@ - - #include "device/devsignal.hpp" - --#include -+#include "hsa/hsa.h" - - namespace roc { - -@@ -44,4 +44,4 @@ public: - } - }; - --}; -\ No newline at end of file -+}; -diff --git a/device/rocm/rocvirtual.cpp b/device/rocm/rocvirtual.cpp -index 63b96378..1b6287e9 100644 ---- a/device/rocm/rocvirtual.cpp -+++ b/device/rocm/rocvirtual.cpp -@@ -33,8 +33,8 @@ - #include "platform/sampler.hpp" - #include "utils/debug.hpp" - #include "os/os.hpp" --#include "amd_hsa_kernel_code.h" --#include "amd_hsa_queue.h" -+#include "hsa/amd_hsa_kernel_code.h" -+#include "hsa/amd_hsa_queue.h" - - #include - #include -diff --git a/device/rocm/rocvirtual.hpp b/device/rocm/rocvirtual.hpp -index 6c738776..1bb0868c 100644 ---- a/device/rocm/rocvirtual.hpp -+++ b/device/rocm/rocvirtual.hpp -@@ -24,11 +24,11 @@ - #include "rocdefs.hpp" - #include "rocdevice.hpp" - #include "utils/util.hpp" --#include "hsa.h" --#include "hsa_ext_image.h" --#include "hsa_ext_amd.h" -+#include "hsa/hsa.h" -+#include "hsa/hsa_ext_image.h" -+#include "hsa/hsa_ext_amd.h" - #include "rocprintf.hpp" --#include "hsa_ven_amd_aqlprofile.h" -+#include "hsa/hsa_ven_amd_aqlprofile.h" - #include "rocsched.hpp" - - namespace roc { --- -2.39.1 - diff --git a/dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-gcc13.patch b/dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-gcc13.patch deleted file mode 100644 index a86cd9fa120e..000000000000 --- a/dev-libs/rocm-opencl-runtime/files/rocclr-5.3.3-gcc13.patch +++ /dev/null @@ -1,27 +0,0 @@ -For https://bugs.gentoo.org/895382 -================================== -From ca70cd7c3d63b1036e604116f3b269ca123e7904 Mon Sep 17 00:00:00 2001 -From: Jeremy Newton -Date: Wed, 8 Feb 2023 14:03:58 -0500 -Subject: [PATCH] SWDEV-1 - device: Add missing include - -Newer GCC's seem to require this. - -Change-Id: I85926d4fa552b772f2eb9f8ede7863a546c47f54 -Signed-off-by: Jeremy Newton ---- - device/devhcprintf.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/device/devhcprintf.cpp b/device/devhcprintf.cpp -index b36f7758..a5aba4a4 100644 ---- a/device/devhcprintf.cpp -+++ b/device/devhcprintf.cpp -@@ -23,6 +23,7 @@ - - #include - #include -+#include - #include - #include - #include diff --git a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-3.5.0-do-not-install-libopencl.patch b/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-3.5.0-do-not-install-libopencl.patch deleted file mode 100644 index a74b2363c2df..000000000000 --- a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-3.5.0-do-not-install-libopencl.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/khronos/icd/CMakeLists.txt 2020-06-07 16:05:32.425022904 +0200 -+++ b/khronos/icd/CMakeLists.txt 2020-06-07 16:06:03.273022786 +0200 -@@ -132,7 +132,7 @@ - add_subdirectory (test) - endif() - --install (TARGETS OpenCL -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+#install (TARGETS OpenCL -+# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -+# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -+# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.0.2-enable-gfx800.patch b/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.0.2-enable-gfx800.patch deleted file mode 100644 index 29482340295e..000000000000 --- a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.0.2-enable-gfx800.patch +++ /dev/null @@ -1,16 +0,0 @@ -#From xuhuisheng -#at https://github.com/RadeonOpenCompute/ROCm/issues/1659#issuecomment-1041026624 - -diff --git a/utils/flags.hpp b/utils/flags.hpp -index 8f0228cc..2eaa47c5 100644 ---- a/utils/flags.hpp -+++ b/utils/flags.hpp -@@ -245,7 +245,7 @@ release(bool, ROC_SYSTEM_SCOPE_SIGNAL, true, \ - "Enable system scope for signals (uses interrupts).") \ - release(bool, ROC_SKIP_COPY_SYNC, false, \ - "Skips copy syncs if runtime can predict the same engine.") \ --release(bool, ROC_ENABLE_PRE_VEGA, false, \ -+release(bool, ROC_ENABLE_PRE_VEGA, true, \ - "Enable support of pre-vega ASICs in ROCm path") \ - release(bool, HIP_FORCE_QUEUE_PROFILING, false, \ - "Force command queue profiling by default") \ diff --git a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.1.3-remove-clinfo.patch b/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.1.3-remove-clinfo.patch deleted file mode 100644 index d169902563e1..000000000000 --- a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.1.3-remove-clinfo.patch +++ /dev/null @@ -1,24 +0,0 @@ -Index: ROCm-OpenCL-Runtime-rocm-5.1.3/CMakeLists.txt -=================================================================== ---- ROCm-OpenCL-Runtime-rocm-5.1.3.orig/CMakeLists.txt -+++ ROCm-OpenCL-Runtime-rocm-5.1.3/CMakeLists.txt -@@ -16,7 +16,6 @@ option(EMU_ENV "Enable building for emul - set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "") - add_subdirectory(khronos/icd) - add_subdirectory(amdocl) --add_subdirectory(tools/clinfo) - add_subdirectory(tools/cltrace) - if(BUILD_TESTS) - add_subdirectory(tests/ocltst) -Index: ROCm-OpenCL-Runtime-rocm-5.1.3/packaging/CMakeLists.txt -=================================================================== ---- ROCm-OpenCL-Runtime-rocm-5.1.3.orig/packaging/CMakeLists.txt -+++ ROCm-OpenCL-Runtime-rocm-5.1.3/packaging/CMakeLists.txt -@@ -5,7 +5,6 @@ set(CPACK_COMPONENTS_ALL binary dev icd) - set(CPACK_DEB_COMPONENT_INSTALL ON) - set(CPACK_RPM_COMPONENT_INSTALL ON) - --install(TARGETS clinfo DESTINATION bin COMPONENT binary) - install(TARGETS amdocl DESTINATION lib COMPONENT binary) - install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION share/doc/${CMAKE_PROJECT_NAME} COMPONENT binary) - diff --git a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.3.3-gcc13.patch b/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.3.3-gcc13.patch deleted file mode 100644 index b1cd513ce6b7..000000000000 --- a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-5.3.3-gcc13.patch +++ /dev/null @@ -1,27 +0,0 @@ -For https://bugs.gentoo.org/895382 -================================== -From 767241dca886bcd2469d91382afab9d032e1cfa6 Mon Sep 17 00:00:00 2001 -From: Jeremy Newton -Date: Wed, 8 Feb 2023 14:16:43 -0500 -Subject: [PATCH] SWDEV-1 - cltrace: Add missing include - -Newer GCC's seem to require this. - -Signed-off-by: Jeremy Newton -Change-Id: I56ef934600729e892f1cd7ab11662760df48aed8 ---- - tools/cltrace/cltrace.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tools/cltrace/cltrace.cpp b/tools/cltrace/cltrace.cpp -index be96298..5ac5b62 100644 ---- a/tools/cltrace/cltrace.cpp -+++ b/tools/cltrace/cltrace.cpp -@@ -17,6 +17,7 @@ - #include - #include - #include -+#include - - #ifdef _MSC_VER - #include diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.1.3.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.1.3.ebuild deleted file mode 100644 index b9015cd84b13..000000000000 --- a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.1.3.ebuild +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake edo flag-o-matic prefix - -DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" -SRC_URI="https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz - https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz" - -LICENSE="Apache-2.0 MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="debug test" -RESTRICT="!test? ( test )" -KEYWORDS="~amd64" - -RDEPEND=">=dev-libs/rocr-runtime-${PV} - >=dev-libs/rocm-comgr-${PV} - >=dev-libs/rocm-device-libs-${PV} - >=virtual/opencl-3 - media-libs/mesa[-opencl]" -DEPEND="${RDEPEND} - dev-util/opencl-headers" -BDEPEND=">=dev-build/rocm-cmake-${PV} - media-libs/glew - test? ( >=x11-apps/mesa-progs-8.5.0[X] ) - " - -PATCHES=( - "${FILESDIR}/${PN}-5.1.3-remove-clinfo.patch" - "${FILESDIR}/${PN}-3.5.0-do-not-install-libopencl.patch" - "${FILESDIR}/${PN}-5.3.3-gcc13.patch" -) - -S="${WORKDIR}/ROCm-OpenCL-Runtime-rocm-${PV}" -S1="${WORKDIR}/ROCclr-rocm-${PV}" - -src_prepare() { - # Remove "clinfo" - use "dev-util/clinfo" instead - [ -d tools/clinfo ] && rm -rf tools/clinfo || die - - cmake_src_prepare - - hprefixify amdocl/CMakeLists.txt - - sed -e "s/DESTINATION lib/DESTINATION ${CMAKE_INSTALL_LIBDIR}/g" -i packaging/CMakeLists.txt || die - # remove trailing CR or it won't work - sed -e "s/\r$//g" -i tests/ocltst/module/perf/oclperf.exclude || die - - pushd ${S1} || die - # Bug #753377 - # patch re-enables accidentally disabled gfx800 family - eapply "${FILESDIR}/${PN}-5.0.2-enable-gfx800.patch" - eapply "${FILESDIR}/rocclr-5.3.3-fix-include.patch" - eapply "${FILESDIR}/rocclr-5.3.3-gcc13.patch" - popd || die -} - -src_configure() { - # Fix ld.lld linker error: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/155 - append-ldflags $(test-flags-CCLD -Wl,--undefined-version) - - # Reported upstream: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/120 - append-cflags -fcommon - - local mycmakeargs=( - -Wno-dev - -DROCCLR_PATH="${S1}" - -DAMD_OPENCL_PATH="${S}" - -DROCM_PATH="${EPREFIX}/usr" - -DBUILD_TESTS=$(usex test ON OFF) - -DEMU_ENV=ON - # -DCMAKE_STRIP="" - ) - cmake_src_configure -} - -src_install() { - insinto /etc/OpenCL/vendors - doins config/amdocl64.icd - - cd "${BUILD_DIR}" || die - insinto /usr/lib64 - doins amdocl/libamdocl64.so - doins tools/cltrace/libcltrace.so -} - -# Copied from rocm.eclass. This ebuild does not need amdgpu_targets -# USE_EXPANDS, so it should not inherit rocm.eclass; it only uses the -# check_amdgpu function in src_test. Rename it to check-amdgpu to avoid -# pkgcheck warning. -check-amdgpu() { - for device in /dev/kfd /dev/dri/render*; do - addwrite ${device} - if [[ ! -r ${device} || ! -w ${device} ]]; then - eerror "Cannot read or write ${device}!" - eerror "Make sure it is present and check the permission." - ewarn "By default render group have access to it. Check if portage user is in render group." - die "${device} inaccessible" - fi - done -} - -src_test() { - check-amdgpu - cd "${BUILD_DIR}"/tests/ocltst || die - export OCL_ICD_FILENAMES="${BUILD_DIR}"/amdocl/libamdocl64.so - local instruction1="Please start an X server using amdgpu driver (not Xvfb!)," - local instruction2="and export OCLGL_DISPLAY=\${DISPLAY} OCLGL_XAUTHORITY=\${XAUTHORITY} before reruning the test." - if [[ -n ${OCLGL_DISPLAY+x} ]]; then - export DISPLAY=${OCLGL_DISPLAY} - export XAUTHORITY=${OCLGL_XAUTHORITY} - ebegin "Running oclgl test under DISPLAY ${OCLGL_DISPLAY}" - if ! glxinfo | grep "OpenGL vendor string: AMD"; then - ewarn "${instruction1}" - ewarn "${instruction2}" - die "This display does not have AMD OpenGL vendor!" - fi - ./ocltst -m liboclgl.so -A ogl.exclude - eend $? || die "oclgl test failed" - else - ewarn "${instruction1}" - ewarn "${instruction2}" - die "\${OCLGL_DISPLAY} not set." - fi - edob ./ocltst -m liboclruntime.so -A oclruntime.exclude - edob ./ocltst -m liboclperf.so -A oclperf.exclude -} diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.3.3-r1.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.3.3-r1.ebuild deleted file mode 100644 index 3e7f3d21381e..000000000000 --- a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.3.3-r1.ebuild +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake edo flag-o-matic - -DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" -SRC_URI="https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz - https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz" - -LICENSE="Apache-2.0 MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="debug test" -RESTRICT="!test? ( test )" -KEYWORDS="~amd64" - -RDEPEND=">=dev-libs/rocr-runtime-${PV} - >=dev-libs/rocm-comgr-${PV} - >=dev-libs/rocm-device-libs-${PV} - >=virtual/opencl-3 - media-libs/mesa[-opencl]" -DEPEND="${RDEPEND} - dev-util/opencl-headers" -BDEPEND=">=dev-build/rocm-cmake-${PV} - media-libs/glew - test? ( >=x11-apps/mesa-progs-8.5.0[X] ) - " - -S="${WORKDIR}/ROCm-OpenCL-Runtime-rocm-${PV}" -S1="${WORKDIR}/ROCclr-rocm-${PV}" - -PATCHES=( "${FILESDIR}/${PN}-5.3.3-gcc13.patch" ) - -src_prepare() { - cmake_src_prepare - - pushd ${S1} || die - # Bug #753377 - # patch re-enables accidentally disabled gfx800 family - eapply "${FILESDIR}/${PN}-5.0.2-enable-gfx800.patch" - eapply "${FILESDIR}/rocclr-${PV}-fix-include.patch" - eapply "${FILESDIR}/rocclr-5.3.3-gcc13.patch" - popd || die -} - -src_configure() { - # Fix ld.lld linker error: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/155 - append-ldflags $(test-flags-CCLD -Wl,--undefined-version) - - # Reported upstream: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/120 - append-cflags -fcommon - - local mycmakeargs=( - -Wno-dev - -DROCCLR_PATH="${S1}" - -DAMD_OPENCL_PATH="${S}" - -DROCM_PATH="${EPREFIX}/usr" - -DBUILD_TESTS=$(usex test ON OFF) - -DEMU_ENV=ON - -DBUILD_ICD=OFF - -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF - ) - cmake_src_configure -} - -src_install() { - insinto /etc/OpenCL/vendors - doins config/amdocl64.icd - - cd "${BUILD_DIR}" || die - insinto /usr/lib64 - doins amdocl/libamdocl64.so - doins tools/cltrace/libcltrace.so -} - -# Copied from rocm.eclass. This ebuild does not need amdgpu_targets -# USE_EXPANDS, so it should not inherit rocm.eclass; it only uses the -# check_amdgpu function in src_test. Rename it to check-amdgpu to avoid -# pkgcheck warning. -check-amdgpu() { - for device in /dev/kfd /dev/dri/render*; do - addwrite ${device} - if [[ ! -r ${device} || ! -w ${device} ]]; then - eerror "Cannot read or write ${device}!" - eerror "Make sure it is present and check the permission." - ewarn "By default render group have access to it. Check if portage user is in render group." - die "${device} inaccessible" - fi - done -} - -src_test() { - check-amdgpu - cd "${BUILD_DIR}"/tests/ocltst || die - export OCL_ICD_FILENAMES="${BUILD_DIR}"/amdocl/libamdocl64.so - local instruction1="Please start an X server using amdgpu driver (not Xvfb!)," - local instruction2="and export OCLGL_DISPLAY=\${DISPLAY} OCLGL_XAUTHORITY=\${XAUTHORITY} before reruning the test." - if [[ -n ${OCLGL_DISPLAY+x} ]]; then - export DISPLAY=${OCLGL_DISPLAY} - export XAUTHORITY=${OCLGL_XAUTHORITY} - ebegin "Running oclgl test under DISPLAY ${OCLGL_DISPLAY}" - if ! glxinfo | grep "OpenGL vendor string: AMD"; then - ewarn "${instruction1}" - ewarn "${instruction2}" - die "This display does not have AMD OpenGL vendor!" - fi - ./ocltst -m liboclgl.so -A ogl.exclude - eend $? || die "oclgl test failed" - else - ewarn "${instruction1}" - ewarn "${instruction2}" - die "\${OCLGL_DISPLAY} not set." - fi - edob ./ocltst -m liboclruntime.so -A oclruntime.exclude - edob ./ocltst -m liboclperf.so -A oclperf.exclude -} diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.4.3-r1.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.4.3-r1.ebuild deleted file mode 100644 index fea24ac7dafc..000000000000 --- a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.4.3-r1.ebuild +++ /dev/null @@ -1,136 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake edo flag-o-matic - -DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" - EGIT_CLR_REPO_URI="https://github.com/ROCm-Developer-Tools/ROCclr" - inherit git-r3 - S="${WORKDIR}/${P}" -else - KEYWORDS="~amd64" - SRC_URI="https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz - https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz" - S="${WORKDIR}/ROCm-OpenCL-Runtime-rocm-${PV}" -fi - -LICENSE="Apache-2.0 MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="debug test" -RESTRICT="!test? ( test )" - -RDEPEND=">=dev-libs/rocr-runtime-5.3 - >=dev-libs/rocm-comgr-5.3 - >=dev-libs/rocm-device-libs-5.3 - >=virtual/opencl-3 - media-libs/mesa[-opencl]" -DEPEND="${RDEPEND} - dev-util/opencl-headers" -BDEPEND=">=dev-build/rocm-cmake-5.3 - test? ( - >=x11-apps/mesa-progs-8.5.0[X] - media-libs/glew - ) - " - -CLR_S="${WORKDIR}/ROCclr-rocm-${PV}" -PATCHES=( "${FILESDIR}/${PN}-5.3.3-gcc13.patch" ) - -src_unpack () { -if [[ ${PV} == "9999" ]]; then - git-r3_fetch - git-r3_checkout - git-r3_fetch "${EGIT_CLR_REPO_URI}" - git-r3_checkout "${EGIT_CLR_REPO_URI}" "${CLR_S}" - else - default - fi -} -src_prepare() { - # Fix ld.lld linker error: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/155 - append-ldflags $(test-flags-CCLD -Wl,--undefined-version) - - cmake_src_prepare - - pushd ${CLR_S} || die - # Bug #753377 - # patch re-enables accidentally disabled gfx800 family - eapply "${FILESDIR}/${PN}-5.0.2-enable-gfx800.patch" - eapply "${FILESDIR}/rocclr-5.3.3-gcc13.patch" - popd || die -} - -src_configure() { - # Reported upstream: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/120 - append-cflags -fcommon - - local mycmakeargs=( - -Wno-dev - -DROCCLR_PATH="${CLR_S}" - -DAMD_OPENCL_PATH="${S}" - -DROCM_PATH="${EPREFIX}/usr" - -DBUILD_TESTS=$(usex test ON OFF) - -DEMU_ENV=ON - -DBUILD_ICD=OFF - -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF - ) - cmake_src_configure -} - -src_install() { - insinto /etc/OpenCL/vendors - doins config/amdocl64.icd - - cd "${BUILD_DIR}" || die - insinto /usr/lib64 - doins amdocl/libamdocl64.so - doins tools/cltrace/libcltrace.so -} - -# Copied from rocm.eclass. This ebuild does not need amdgpu_targets -# USE_EXPANDS, so it should not inherit rocm.eclass; it only uses the -# check_amdgpu function in src_test. Rename it to check-amdgpu to avoid -# pkgcheck warning. -check-amdgpu() { - for device in /dev/kfd /dev/dri/render*; do - addwrite ${device} - if [[ ! -r ${device} || ! -w ${device} ]]; then - eerror "Cannot read or write ${device}!" - eerror "Make sure it is present and check the permission." - ewarn "By default render group have access to it. Check if portage user is in render group." - die "${device} inaccessible" - fi - done -} - -src_test() { - check-amdgpu - cd "${BUILD_DIR}"/tests/ocltst || die - export OCL_ICD_FILENAMES="${BUILD_DIR}"/amdocl/libamdocl64.so - local instruction1="Please start an X server using amdgpu driver (not Xvfb!)," - local instruction2="and export OCLGL_DISPLAY=\${DISPLAY} OCLGL_XAUTHORITY=\${XAUTHORITY} before reruning the test." - if [[ -n ${OCLGL_DISPLAY+x} ]]; then - export DISPLAY=${OCLGL_DISPLAY} - export XAUTHORITY=${OCLGL_XAUTHORITY} - ebegin "Running oclgl test under DISPLAY ${OCLGL_DISPLAY}" - if ! glxinfo | grep "OpenGL vendor string: AMD"; then - ewarn "${instruction1}" - ewarn "${instruction2}" - die "This display does not have AMD OpenGL vendor!" - fi - ./ocltst -m $(realpath liboclgl.so) -A ogl.exclude - eend $? || die "oclgl test failed" - else - ewarn "${instruction1}" - ewarn "${instruction2}" - die "\${OCLGL_DISPLAY} not set." - fi - edob ./ocltst -m $(realpath liboclruntime.so) -A oclruntime.exclude - edob ./ocltst -m $(realpath liboclperf.so) -A oclperf.exclude -} diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.5.1.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.5.1.ebuild deleted file mode 100644 index c9a0dfc880b7..000000000000 --- a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.5.1.ebuild +++ /dev/null @@ -1,133 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake edo flag-o-matic - -DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" - EGIT_CLR_REPO_URI="https://github.com/ROCm-Developer-Tools/ROCclr" - inherit git-r3 - S="${WORKDIR}/${P}" -else - KEYWORDS="~amd64" - SRC_URI="https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz - https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz" - S="${WORKDIR}/ROCm-OpenCL-Runtime-rocm-${PV}" -fi - -LICENSE="Apache-2.0 MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="debug test" -RESTRICT="!test? ( test )" - -RDEPEND=">=dev-libs/rocr-runtime-5.3 - >=dev-libs/rocm-comgr-5.3 - >=dev-libs/rocm-device-libs-5.3 - >=virtual/opencl-3 - media-libs/mesa[-opencl]" -DEPEND="${RDEPEND}" -BDEPEND=">=dev-build/rocm-cmake-5.3 - media-libs/glew - test? ( >=x11-apps/mesa-progs-8.5.0[X] ) - " - -CLR_S="${WORKDIR}/ROCclr-rocm-${PV}" -PATCHES=( "${FILESDIR}/${PN}-5.3.3-gcc13.patch" ) - -src_unpack () { -if [[ ${PV} == "9999" ]]; then - git-r3_fetch - git-r3_checkout - git-r3_fetch "${EGIT_CLR_REPO_URI}" - git-r3_checkout "${EGIT_CLR_REPO_URI}" "${CLR_S}" - else - default - fi -} -src_prepare() { - cmake_src_prepare - - pushd ${CLR_S} || die - # Bug #753377 - # patch re-enables accidentally disabled gfx800 family - eapply "${FILESDIR}/${PN}-5.0.2-enable-gfx800.patch" - eapply "${FILESDIR}/rocclr-5.3.3-gcc13.patch" - popd || die -} - -src_configure() { - # Fix ld.lld linker error: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/155 - append-ldflags $(test-flags-CCLD -Wl,--undefined-version) - - # Reported upstream: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/120 - append-cflags -fcommon - - local mycmakeargs=( - -Wno-dev - -DROCCLR_PATH="${CLR_S}" - -DAMD_OPENCL_PATH="${S}" - -DROCM_PATH="${EPREFIX}/usr" - -DBUILD_TESTS=$(usex test ON OFF) - -DEMU_ENV=ON - -DBUILD_ICD=OFF - -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF - ) - cmake_src_configure -} - -src_install() { - insinto /etc/OpenCL/vendors - doins config/amdocl64.icd - - cd "${BUILD_DIR}" || die - insinto /usr/lib64 - doins amdocl/libamdocl64.so - doins tools/cltrace/libcltrace.so -} - -# Copied from rocm.eclass. This ebuild does not need amdgpu_targets -# USE_EXPANDS, so it should not inherit rocm.eclass; it only uses the -# check_amdgpu function in src_test. Rename it to check-amdgpu to avoid -# pkgcheck warning. -check-amdgpu() { - for device in /dev/kfd /dev/dri/render*; do - addwrite ${device} - if [[ ! -r ${device} || ! -w ${device} ]]; then - eerror "Cannot read or write ${device}!" - eerror "Make sure it is present and check the permission." - ewarn "By default render group have access to it. Check if portage user is in render group." - die "${device} inaccessible" - fi - done -} - -src_test() { - check-amdgpu - cd "${BUILD_DIR}"/tests/ocltst || die - export OCL_ICD_FILENAMES="${BUILD_DIR}"/amdocl/libamdocl64.so - local instruction1="Please start an X server using amdgpu driver (not Xvfb!)," - local instruction2="and export OCLGL_DISPLAY=\${DISPLAY} OCLGL_XAUTHORITY=\${XAUTHORITY} before reruning the test." - if [[ -n ${OCLGL_DISPLAY+x} ]]; then - export DISPLAY=${OCLGL_DISPLAY} - export XAUTHORITY=${OCLGL_XAUTHORITY} - ebegin "Running oclgl test under DISPLAY ${OCLGL_DISPLAY}" - if ! glxinfo | grep "OpenGL vendor string: AMD"; then - ewarn "${instruction1}" - ewarn "${instruction2}" - die "This display does not have AMD OpenGL vendor!" - fi - ./ocltst -m $(realpath liboclgl.so) -A ogl.exclude - eend $? || die "oclgl test failed" - else - ewarn "${instruction1}" - ewarn "${instruction2}" - die "\${OCLGL_DISPLAY} not set." - fi - edob ./ocltst -m $(realpath liboclruntime.so) -A oclruntime.exclude - edob ./ocltst -m $(realpath liboclperf.so) -A oclperf.exclude -} diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.3.2.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.3.2.ebuild new file mode 100644 index 000000000000..32e9d9fa8199 --- /dev/null +++ b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.3.2.ebuild @@ -0,0 +1,101 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ROCM_SKIP_GLOBALS=1 +inherit cmake edo flag-o-matic rocm + +DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime" +HOMEPAGE="https://github.com/ROCm/clr" + +SRC_URI="https://github.com/ROCm/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz" +S="${WORKDIR}/clr-rocm-${PV}/" + +LICENSE="Apache-2.0 MIT" +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~amd64" +IUSE="debug test" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-libs/rocr-runtime:${SLOT} + dev-libs/rocm-comgr:${SLOT} + dev-libs/rocm-device-libs:${SLOT} + >=virtual/opencl-3 + media-libs/mesa[-opencl] +" +DEPEND="${RDEPEND}" +BDEPEND=" + >=dev-build/rocm-cmake-6.0 + media-libs/glew + test? ( >=x11-apps/mesa-progs-8.5.0[X] ) +" + +PATCHES=( + "${FILESDIR}/${PN}-6.2.4-fix-lib-version.patch" + "${FILESDIR}/${PN}-6.1.2-musl.patch" +) + +src_configure() { + # -Werror=strict-aliasing + # https://bugs.gentoo.org/856088 + # https://github.com/ROCm/clr/issues/64 + # + # Do not trust it for LTO either + append-flags -fno-strict-aliasing + filter-lto + + # Fix ld.lld linker error: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/155 + append-ldflags $(test-flags-CCLD -Wl,--undefined-version) + + # Reported upstream: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/120 + append-cflags -fcommon + + local mycmakeargs=( + -Wno-dev + -DROCM_PATH="${EPREFIX}/usr" + -DBUILD_TESTS=$(usex test ON OFF) + -DEMU_ENV=ON + -DBUILD_ICD=ON + -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF + -DCLR_BUILD_OCL=on + ) + cmake_src_configure +} + +src_install() { + insinto /etc/OpenCL/vendors + doins opencl/config/amdocl64.icd + + cd "${BUILD_DIR}"/opencl || die + insinto /usr/lib64 + doins amdocl/libamdocl64.so* + doins tools/cltrace/libcltrace.so +} + +src_test() { + check_amdgpu + cd "${BUILD_DIR}"/tests/ocltst || die + export OCL_ICD_FILENAMES="${BUILD_DIR}"/amdocl/libamdocl64.so + local instruction1="Please start an X server using amdgpu driver (not Xvfb!)," + local instruction2="and export OCLGL_DISPLAY=\${DISPLAY} OCLGL_XAUTHORITY=\${XAUTHORITY} before reruning the test." + if [[ -n ${OCLGL_DISPLAY+x} ]]; then + export DISPLAY=${OCLGL_DISPLAY} + export XAUTHORITY=${OCLGL_XAUTHORITY} + ebegin "Running oclgl test under DISPLAY ${OCLGL_DISPLAY}" + if ! glxinfo | grep "OpenGL vendor string: AMD"; then + ewarn "${instruction1}" + ewarn "${instruction2}" + die "This display does not have AMD OpenGL vendor!" + fi + ./ocltst -m $(realpath liboclgl.so) -A ogl.exclude + eend $? || die "oclgl test failed" + else + ewarn "${instruction1}" + ewarn "${instruction2}" + die "\${OCLGL_DISPLAY} not set." + fi + edob ./ocltst -m $(realpath liboclruntime.so) -A oclruntime.exclude + edob ./ocltst -m $(realpath liboclperf.so) -A oclperf.exclude +} diff --git a/dev-libs/rocr-runtime/Manifest b/dev-libs/rocr-runtime/Manifest index 7fee04718fa2..84501459be37 100644 --- a/dev-libs/rocr-runtime/Manifest +++ b/dev-libs/rocr-runtime/Manifest @@ -1,5 +1,4 @@ AUX rocr-runtime-4.3.0_no-aqlprofiler.patch 1084 BLAKE2B dfc2b9bbea0360fdbbd04988f0dbed76e53d8d9f9d2a5217f154e02e39f7b78f3408edb0204a93b6b4e927103b2c041788bd6befb8475d3f4e333bdc6ad19a0d SHA512 f90b92eb547640bc8cf71d042f12a55504371e4c3e624b02435c026e7ae9d5885e23a2be3a0f5c443fc502b3a1c8a03fdb5efabaeaabe8be33a28aab3ac9d9ca -AUX rocr-runtime-5.0.1-cmake-install-paths.patch 2744 BLAKE2B fbbecdefbfabcbe4cd7f029e10d6abed94b492f94157839336adf83e98efe5c0e93dbb20856ca6adab32cb315bbd7b6c397c8fc48b66ea784cdbb3becb5f718e SHA512 db7ee8b87b526991a62c3cbfd385e85d27e05ba9a7f4726e8060d7ad29917e154bdcd0715e61a08210dad4b6112c731dfcab9e9f7e809b74da2f74c62a1eab72 AUX rocr-runtime-5.7.1-extend-isa-compatibility-check.patch 3003 BLAKE2B 203b65af267302440a9814c458296e969aab41ae4e83945e34a814037f66e620c9070721df288f25e93b0267b2e17d2d6e710c4b0ba741b83692ce65fdbd90b0 SHA512 5e0ffccce059ca79426ad1082d63c1687a22830fd919b5b643ea0d733b11040c0484f5f95f052cd7832d87c836eec97f362e79b60021dc8e833855785734a2cb AUX rocr-runtime-5.7.1-musl.patch 3923 BLAKE2B 9cc1abc84be25fe6432c50c227ce65f11526b0c53ee3f08aea79f4d14679943a6a68b55e56c1f14a75ed9c43d3e2dac21b3cfdfe8dc44bc0e21bd6e09b79fa1c SHA512 b44d292bc6dd1178bbc7885812db22cc96fc9e05509f175b59bc7d453dee5d58bfe45073f86f2496322a24cbd2986972f80b6495947dfcaa6838641a36690df8 AUX rocr-runtime-6.1.0-ld-lld.patch 561 BLAKE2B 93ec03a4d758791ab0a88f9d80cf1f522681cf3d0cf4f020aa1014848dc607045b628d275a25bf9830c3f1a19342ae96b9bb026ae7a9513d5ba193774526c29a SHA512 83ebcac0ada1b8406a2f7277be5f3db0c71777009cfc8996c6f9317deb1f3846a25387a956f45c6aedcb8ef04cda0814ec7c6dcf1b369cb98f9ba8f3e774022d @@ -7,20 +6,14 @@ AUX rocr-runtime-6.1.0-musl.patch 3589 BLAKE2B b690a5c63ccd7056e8fc6699d0905933b AUX rocr-runtime-6.1.2-gcc15-stdint.patch 247 BLAKE2B e58abc680f93c5333c91343c6510a73b067047d202387a61675cdd6b66f6ebfb65695ff31a90eb5c55bce0d877c34b2c66c5410d9466b49873a6d081c2a9af2b SHA512 bd4eb98ebc35077827def53351ac22a5a71e0c5b8757addffc04334cc7720dcf59a356cbaf4a2cbe102bed24f463b10b0db924a5bc2e8eb08e1822d6ee519025 AUX rocr-runtime-6.3.0-musl.patch 3961 BLAKE2B af9d2b7360d306081de19c8ebae7372627437ad71f1bfc354d36e5cd84ed2238d405819b427dab2267c66239a087c6574445c2187de920644f9a8971ed37d66d SHA512 03f62a64df00d58a2166ba97fc429864e9f5a2bb9e86ce7df0dfc9b487ea88f1b2cf5a2ccfb92fa468ee4273388a5e2d0accbe83ded8ddb109626f8b7d63b738 AUX rocr-runtime-6.3.0-use-system-hsakmt.patch 837 BLAKE2B 0c913ffa28d0e8a5fc802d386a864e7486ae7291e13d0364d071856a55391756f8df2cf4efae0f2b1d2725235b655b7e975f3887e3582167c880a75659bbf3b3 SHA512 c28e43790b414c33a61568a1dba009ccd65de2a89bdd4d49eb262f07709e0099f8d8e85913cacb8ded839ac5fc6129d00cd74e337039c8488a6451f233b5fb58 -DIST rocr-runtime-5.1.3.tar.gz 720567 BLAKE2B bdf2d258ec607ffc69264d48ce82c36787757b7809397d643a24abaa852f3cc217a57210fba760d4d11ef8ce2922dc1ef275d3b47a4bebc5c7b204bbbb5b7c66 SHA512 d47523ea2fe32fee832ca19b56a091f52e16b366db1c571f87e5599514b826376d49281e79ff0936dcaf7349f9becbc8ae9b3e9472a9c3e14b62a3f98d541b35 -DIST rocr-runtime-5.3.3.tar.gz 809871 BLAKE2B 1a44e88c34fcebcea3351de812f2ac64a7b151303c5bfc4066920755c185731388afff89c705afee6010d262f68358a20b1c0197e8f23c22ab24409eb55fde0a SHA512 27efe57954575549703b31c4a632548bf3d82df0f01d5f15485d0bda7efa6ec2ad0a4a8710b8f240ff57296eb62d3796926e32d16dfe448b188d8264fde0ef8b -DIST rocr-runtime-5.4.3.tar.gz 811062 BLAKE2B 4ee8ef49cdac7f6918db3aa96089852847d093aacc11ed7e7157a6eb512cf36a3d37396670c14ea24b16b1127c4547977390694d05bc6006ac48b40e707d6dae SHA512 29f13a1b16ef457071cc050227d57cda92992f416ebc074f8cd5a856d9bd76fd34ab2ccb53c21c3d798165282d44bba287ef44a9d1da327ee198e1facc77a4db -DIST rocr-runtime-5.5.1.tar.gz 816175 BLAKE2B e588d98cbd0d9a753b950ba676d6cddeed8cd094f346b2f67a761ac2d760ba28e27d5baceecf13fff53c114bb8412c8a4d892886c304d36181d5b0b020b8088a SHA512 1cae2ae4f30a248fa27622ed8b77ce112b80aed9bc1b8fc4372143d4ef241f47295a77f9e978be1332f48c06a7cbcdfd478dbc8464028cb761480049ab2413fb DIST rocr-runtime-5.7.1.tar.gz 832009 BLAKE2B 67e4a64ee03b1f6edc43923c7ac44113ab58f78b032dc0a01952b2dd5b2ca37404044811effb9c8d83002ac4ea344a5d95ac62f3c66012bff2884ef55285cdb5 SHA512 a6547a104303032244d17b662a3eda48039732c215debb6178c0af8842c01c60f80989793420c101bd554e58332d215205da0c228dfc25538c56499f47dc6832 DIST rocr-runtime-6.1.1.tar.gz 903611 BLAKE2B 175e7267bfd9d70fb805135e765004cf2b43b2d66354f0cef857d417c8dac4ce7638ec1b90a1088324aa5f90ed8354c66b56846115368d68d622a215350d84dd SHA512 5e6e28dee29ef9df9d617f56038b2e52022738d5510833cd8e1738defe1049d0a957db4d9f63bbf55d8efca3a4ea349b95919dd1b6b35b9814ebba575a67af57 DIST rocr-runtime-6.1.2.tar.gz 903633 BLAKE2B 058492c6c37bb80e8cdb29752f3f1404ac88108dcfd5137042e4fdaff521db01d64bd14bdcbed9e53b8984f8bbb22b126f1a798bd064c393b5bcf76c1d3311ca SHA512 2893aff72a5fbf03bfde67ab64fcf00f4e10b5e5b11ff4617e94ae0c019a24a9b80601d8629d4e119e6a4957dc0aaf03d645111063979af60090fe3b232a477e DIST rocr-runtime-6.3.0.tar.gz 2258605 BLAKE2B 53b43a8bc4a327c2138e39db20f5217b2def6866d1b52e48017c41e6c3c8541e6bdce76f5a7669cdffccfb34a4cfa863e56e0ce4058d23c5f38d9d0900903751 SHA512 451e74d88875b8d0a1f21d95c543fd93610d966e69258b50fe4b8796381c58f5ea381384e199e5bcf01a80369a59e5a093d8f318fbe2ed1ca6a97dc915060f7a -EBUILD rocr-runtime-5.1.3-r1.ebuild 1522 BLAKE2B ae7ad025e281985f4748df112fc1bb63a2ec7eb400a32693a1bb81c8eb35bb03fef2d245eed0b32f441d60121115e7a8c2ea595000dae5e8a1a3b392371a2858 SHA512 ad94236736a5dbaebc286d0a1c92187fb7f45c14c6a0ccc968c30cfd585c8599cc9047405e18179da09a37d88e8fbdb485b1e5304914cfef415eeefe737f1ee2 -EBUILD rocr-runtime-5.3.3-r1.ebuild 1338 BLAKE2B c9737cc797fc73b7f2b0068dae1a3d7d3b89a02f3b166033df765cd164bd2d4f0e07e3cab0ebb8aca27b2e7ff39e68af6e9749a5a30a401a7da2c6ade95c4afb SHA512 39bd8f222401c0af6c6990e3d513854aaa28ad12e390c86398c795fc4df2e5da092c883b9cc559f211f3752792746c3181a7c7da7bcc4b726c9fff805df8d5ed -EBUILD rocr-runtime-5.4.3-r1.ebuild 1549 BLAKE2B b077ccd7be78ebc71d4c34ceb9ed44dbbf09bf8e2699929ef8794d020b12ba610079770fdb6d4fe4ed27683ab6248851336aea7f1a0416afd14437747e03b4d5 SHA512 a20f0564335d51e6332ca3b4d2d45a6d38aeda25ce98d040f9ba93975b350601d7af9dca2fcb7332eb97d761898b179ea6effd29fbffe18156b2136d3321e661 -EBUILD rocr-runtime-5.5.1.ebuild 1338 BLAKE2B 0557b175c46dfd0324bba29ba596a9241872220c8dc5e0862cc82adcfa09a17ac14c13ec84f7e0ea149c722b1f09abaab4f071a8639324b91705e5667f1bc19f SHA512 5a793bd7f9cf9f56ceb7bbbbf746b3a544bdefa093be5173505d8ded66429b41b2e14e42460ddae7a2546c6b2c10ff6d8a87c28d9dd938a53bb95d804459f192 +DIST rocr-runtime-6.3.2.tar.gz 2260102 BLAKE2B 706cd4cc61c3007aec2b7822c02a7c98399454b366f2a2c221ae53ea3ee4c288c47c7fcfbe8f1cbd38d071ab5c90a2d79c054a0b0d2a2f6892a051b843794d32 SHA512 0326242deae601275d71fb268781735b117e713e73b1bcac2fd732828d993dee5840dec011fdc4350be2afdbc8266b6d1b65d5dff0d465a5b9c9cc091a5c645c EBUILD rocr-runtime-5.7.1-r3.ebuild 1599 BLAKE2B b9f9ac349b71da10b6334eb398cf7c0455f8abcfe20c101db7e62ca9b81853d8e1619c0b024942764f6a1b93e8ab7ab32180327b324f2ac8875d9b93e567bcea SHA512 5816d09d2308fb010ed00e306026ac4e0a410db9fab5e1954fc51210f1a172075d9f9a1b0749c2703ce397644426eca9c099ae334da23238a3048409fcc55640 EBUILD rocr-runtime-6.1.1.ebuild 1533 BLAKE2B 4b786de79180ce430ea31afa574fe011edb1b992bab530675958d98b41638cc658fc8a59f7aa3749c5484afce908ac730f80c61302c43b0b3dcf52422f87cf11 SHA512 77a2c887637477f5e49b70d0ca04adca864997170864b1b94752eb1da081fa587cffec95b6aeab3890f0cc332cd795236e140796dfaa83dfb8e2cf5e2b801851 EBUILD rocr-runtime-6.1.2.ebuild 1579 BLAKE2B e516c6c3690c171778a831795642f6e2dbf9740fd4760bb65e28d91a2c59f5e3ae82c4eca83dbd129125d4669087c7fb673628f762b23abf7ccbee6de7aa546e SHA512 140cad720d8d1a34b5233f33a29c639d8f61badc84e677a59e05f3af5eee512cf484a21e6aff96f5265e00c5077e835854267026cdf9ef2a73ef9def3f7f34b5 EBUILD rocr-runtime-6.3.0.ebuild 1662 BLAKE2B c7781042fa9f8069684b6f68263dc80691c5de70d97756594080a53765c6f262707c2883222b830f4f30f08f919d6dc76dada07bb506e7c3bd0fd5f673f0068d SHA512 69ed297df667b57528900d70a2893f934d0e4339007cf433d095e58ac837ec4fbc9b321340855bb2d3955503d6c0ef53dc71a2417dd6bee503babf19de1e9f0d +EBUILD rocr-runtime-6.3.2.ebuild 1662 BLAKE2B c7781042fa9f8069684b6f68263dc80691c5de70d97756594080a53765c6f262707c2883222b830f4f30f08f919d6dc76dada07bb506e7c3bd0fd5f673f0068d SHA512 69ed297df667b57528900d70a2893f934d0e4339007cf433d095e58ac837ec4fbc9b321340855bb2d3955503d6c0ef53dc71a2417dd6bee503babf19de1e9f0d MISC metadata.xml 623 BLAKE2B bc808d06e4dd8c715a0abde57dba1fa02d563bed034e9cd4a8f50d78ed478ec1545aa0b42f6521ffa5c1ea57d456984c51af0cab39055201c4c04a4b46acc100 SHA512 d83b1e22d012536236067ac241b4b94f479e0adcd14a9e5647571f0550352e8d348965103183d51576e11414bb85714ded4222bfbb2a6464841b45e7644e8c2b diff --git a/dev-libs/rocr-runtime/files/rocr-runtime-5.0.1-cmake-install-paths.patch b/dev-libs/rocr-runtime/files/rocr-runtime-5.0.1-cmake-install-paths.patch deleted file mode 100644 index 8715a15d8de1..000000000000 --- a/dev-libs/rocr-runtime/files/rocr-runtime-5.0.1-cmake-install-paths.patch +++ /dev/null @@ -1,42 +0,0 @@ -Index: src/CMakeLists.txt -=================================================================== ---- src.orig/CMakeLists.txt -+++ src/CMakeLists.txt -@@ -286,35 +286,17 @@ if( NOT ${BUILD_SHARED_LIBS} ) - install ( TARGETS ${CORE_RUNTIME_NAME} EXPORT ${CORE_RUNTIME_NAME}Targets ) - endif() - --## Create symlinks for legacy packaging and install --add_custom_target ( hsa_include_link ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink ../../include/hsa hsa_include_link ) --if ( ${BUILD_SHARED_LIBS} ) -- add_custom_target ( hsa_lib_link ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink ../../lib/${CORE_RUNTIME_LIBRARY}.so ${CORE_RUNTIME_LIBRARY}-link.so ) -- add_custom_target ( hsa_lib_link2 ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink ../../lib/${CORE_RUNTIME_LIBRARY}.so.${VERSION_MAJOR} ${CORE_RUNTIME_LIBRARY}-link.so.${VERSION_MAJOR} ) --endif() -- - ## Set install information - # Installs binaries and exports the library usage data to ${HSAKMT_TARGET}Targets - # TODO: Fix me for flat directory layout. Should be ${CMAKE_INSTALL_LIBDIR} --install ( TARGETS ${CORE_RUNTIME_TARGET} EXPORT ${CORE_RUNTIME_NAME}Targets -- ARCHIVE DESTINATION lib COMPONENT binary -- LIBRARY DESTINATION lib COMPONENT binary ) -+install ( TARGETS ${CORE_RUNTIME_TARGET} EXPORT ${CORE_RUNTIME_NAME}Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) - - # Install license - install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT binary ) - - # Install public headers - # TODO: Fix me for flat directory layout. Should be ${CMAKE_INSTALL_INCLUDEDIR} --install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/inc/ DESTINATION include/hsa COMPONENT dev ) -- --# Legacy symlink - not packaged (CPack is bugged until ~3.18, see https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4637) --install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/hsa_include_link DESTINATION hsa/include PERMISSIONS OWNER_WRITE OWNER_READ RENAME hsa ) -- --# Legacy symlinks. --if ( ${BUILD_SHARED_LIBS} ) -- install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/${CORE_RUNTIME_LIBRARY}-link.so DESTINATION hsa/lib PERMISSIONS OWNER_WRITE OWNER_READ RENAME ${CORE_RUNTIME_LIBRARY}.so COMPONENT binary) -- install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/${CORE_RUNTIME_LIBRARY}-link.so.${VERSION_MAJOR} DESTINATION hsa/lib PERMISSIONS OWNER_WRITE OWNER_READ RENAME ${CORE_RUNTIME_LIBRARY}.so.${VERSION_MAJOR} COMPONENT binary) --endif () -+install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/inc/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hsa ) - - ## Configure and install package config file - # Record our usage data for clients find_package calls. diff --git a/dev-libs/rocr-runtime/rocr-runtime-5.1.3-r1.ebuild b/dev-libs/rocr-runtime/rocr-runtime-5.1.3-r1.ebuild deleted file mode 100644 index 429625f2ae0f..000000000000 --- a/dev-libs/rocr-runtime/rocr-runtime-5.1.3-r1.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake llvm - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCR-Runtime-rocm-${PV}/src" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCR-Runtime" -PATCHES=( - "${FILESDIR}/${PN}-5.0.1-cmake-install-paths.patch" - "${FILESDIR}/${PN}-4.3.0_no-aqlprofiler.patch" -) - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -COMMON_DEPEND="dev-libs/elfutils" -RDEPEND="${COMMON_DEPEND}" -DEPEND="${COMMON_DEPEND} - >=dev-libs/roct-thunk-interface-${PV} - >=dev-libs/rocm-device-libs-${PV} - <=dev-libs/rocm-device-libs-6.0 - llvm-core/clang - llvm-core/lld" -BDEPEND="app-editors/vim-core" - # vim-core is needed for "xxd" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - # ... otherwise system llvm/clang is used ... - sed -e "/find_package(Clang REQUIRED HINTS /s:\${CMAKE_INSTALL_PREFIX}/llvm \${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm:$(get_llvm_prefix ${LLVM_MAX_SLOT}):" -i image/blit_src/CMakeLists.txt || die - - # Gentoo installs "*.bc" to "/usr/lib" instead of a "[path]/bitcode" directory ... - sed -e "s:/opt/rocm/amdgcn/bitcode:${EPREFIX}/usr/lib/amdgcn/bitcode:" -i image/blit_src/CMakeLists.txt || die - - cmake_src_prepare -} diff --git a/dev-libs/rocr-runtime/rocr-runtime-5.3.3-r1.ebuild b/dev-libs/rocr-runtime/rocr-runtime-5.3.3-r1.ebuild deleted file mode 100644 index 22b1fe7f75c7..000000000000 --- a/dev-libs/rocr-runtime/rocr-runtime-5.3.3-r1.ebuild +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake flag-o-matic llvm - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCR-Runtime-rocm-${PV}/src" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCR-Runtime" -PATCHES=( - "${FILESDIR}/${PN}-4.3.0_no-aqlprofiler.patch" -) - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="debug" - -COMMON_DEPEND="dev-libs/elfutils" -RDEPEND="${COMMON_DEPEND}" -DEPEND="${COMMON_DEPEND} - >=dev-libs/roct-thunk-interface-${PV} - >=dev-libs/rocm-device-libs-${PV} - <=dev-libs/rocm-device-libs-6.0 - llvm-core/clang - llvm-core/lld" -BDEPEND="app-editors/vim-core" - # vim-core is needed for "xxd" - -src_prepare() { - # Gentoo installs "*.bc" to "/usr/lib" instead of a "[path]/bitcode" directory ... - sed -e "s:-O2:--rocm-path=${EPREFIX}/usr/lib/ -O2:" -i image/blit_src/CMakeLists.txt || die - - cmake_src_prepare -} - -src_configure() { - use debug || append-cxxflags "-DNDEBUG" - local mycmakeargs=( -DINCLUDE_PATH_COMPATIBILITY=OFF ) - cmake_src_configure -} diff --git a/dev-libs/rocr-runtime/rocr-runtime-5.4.3-r1.ebuild b/dev-libs/rocr-runtime/rocr-runtime-5.4.3-r1.ebuild deleted file mode 100644 index 9b577952302f..000000000000 --- a/dev-libs/rocr-runtime/rocr-runtime-5.4.3-r1.ebuild +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake flag-o-matic llvm - -LLVM_MAX_SLOT=15 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCR-Runtime-rocm-${PV}/src" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCR-Runtime" -PATCHES=( - "${FILESDIR}/${PN}-4.3.0_no-aqlprofiler.patch" -) - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="debug" - -COMMON_DEPEND="dev-libs/elfutils" -RDEPEND="${COMMON_DEPEND}" -DEPEND="${COMMON_DEPEND} - >=dev-libs/roct-thunk-interface-${PV} - >=dev-libs/rocm-device-libs-${PV} - <=dev-libs/rocm-device-libs-6.0 - llvm-core/clang - llvm-core/lld" -BDEPEND="app-editors/vim-core" - # vim-core is needed for "xxd" - -src_prepare() { - # Gentoo installs "*.bc" to "/usr/lib" instead of a "[path]/bitcode" directory ... - sed -e "s:-O2:--rocm-path=${EPREFIX}/usr/lib/ -O2:" -i image/blit_src/CMakeLists.txt || die - - # internal version depends on git being present and random weird magic, otherwise fallback to incoherent default value - # fix default value to be more better - - sed -i -e "s:1.7.0:${PV}:" CMakeLists.txt || die - - cmake_src_prepare -} - -src_configure() { - use debug || append-cxxflags "-DNDEBUG" - local mycmakeargs=( -DINCLUDE_PATH_COMPATIBILITY=OFF ) - cmake_src_configure -} diff --git a/dev-libs/rocr-runtime/rocr-runtime-5.5.1.ebuild b/dev-libs/rocr-runtime/rocr-runtime-5.5.1.ebuild deleted file mode 100644 index ff647a93c7db..000000000000 --- a/dev-libs/rocr-runtime/rocr-runtime-5.5.1.ebuild +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake flag-o-matic llvm - -LLVM_MAX_SLOT=16 - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/" - inherit git-r3 - S="${WORKDIR}/${P}/src" -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCR-Runtime-rocm-${PV}/src" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Runtime" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCR-Runtime" -PATCHES=( - "${FILESDIR}/${PN}-4.3.0_no-aqlprofiler.patch" -) - -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" -IUSE="debug" - -COMMON_DEPEND="dev-libs/elfutils" -RDEPEND="${COMMON_DEPEND}" -DEPEND="${COMMON_DEPEND} - >=dev-libs/roct-thunk-interface-${PV} - >=dev-libs/rocm-device-libs-${PV} - <=dev-libs/rocm-device-libs-6.0 - llvm-core/clang - llvm-core/lld" -BDEPEND="app-editors/vim-core" - # vim-core is needed for "xxd" - -src_prepare() { - # Gentoo installs "*.bc" to "/usr/lib" instead of a "[path]/bitcode" directory ... - sed -e "s:-O2:--rocm-path=${EPREFIX}/usr/lib/ -O2:" -i image/blit_src/CMakeLists.txt || die - - cmake_src_prepare -} - -src_configure() { - use debug || append-cxxflags "-DNDEBUG" - local mycmakeargs=( -DINCLUDE_PATH_COMPATIBILITY=OFF ) - cmake_src_configure -} diff --git a/dev-libs/rocr-runtime/rocr-runtime-6.3.2.ebuild b/dev-libs/rocr-runtime/rocr-runtime-6.3.2.ebuild new file mode 100644 index 000000000000..d5f08251958d --- /dev/null +++ b/dev-libs/rocr-runtime/rocr-runtime-6.3.2.ebuild @@ -0,0 +1,68 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) + +inherit cmake flag-o-matic llvm-r1 + +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/ROCm/ROCR-Runtime/" + inherit git-r3 + S="${WORKDIR}/${P}" +else + SRC_URI="https://github.com/ROCm/ROCR-Runtime/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/ROCR-Runtime-rocm-${PV}" + KEYWORDS="~amd64" +fi + +DESCRIPTION="Radeon Open Compute Runtime" +HOMEPAGE="https://github.com/ROCm/ROCR-Runtime" + +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" +IUSE="debug" + +COMMON_DEPEND="dev-libs/elfutils + x11-libs/libdrm" +DEPEND="${COMMON_DEPEND} + dev-libs/roct-thunk-interface:${SLOT} + dev-libs/rocm-device-libs:${SLOT} + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT}= + llvm-core/lld:${LLVM_SLOT}= + ') +" +RDEPEND="${DEPEND}" +BDEPEND="app-editors/vim-core" + # vim-core is needed for "xxd" + +PATCHES=( + "${FILESDIR}/${PN}-6.3.0-use-system-hsakmt.patch" + "${FILESDIR}/${PN}-6.3.0-musl.patch" +) + +src_prepare() { + cd "${S}/runtime/hsa-runtime" || die + eapply "${FILESDIR}/${PN}-4.3.0_no-aqlprofiler.patch" + eapply "${FILESDIR}/${PN}-5.7.1-extend-isa-compatibility-check.patch" + eapply "${FILESDIR}/${PN}-6.1.2-gcc15-stdint.patch" + + # Gentoo installs "*.bc" to "/usr/lib" instead of a "[path]/bitcode" directory ... + sed -e "s:-O2:--rocm-path=${EPREFIX}/usr/lib/ -O2:" -i image/blit_src/CMakeLists.txt || die + + cd "${S}" || die + cmake_src_prepare +} + +src_configure() { + # -Werror=odr + # https://bugs.gentoo.org/856091 + # https://github.com/ROCm/ROCR-Runtime/issues/182 + filter-lto + + use debug || append-cxxflags "-DNDEBUG" + + cmake_src_configure +} diff --git a/dev-libs/roct-thunk-interface/Manifest b/dev-libs/roct-thunk-interface/Manifest index 2dff3cf638a9..5d482ae614e6 100644 --- a/dev-libs/roct-thunk-interface/Manifest +++ b/dev-libs/roct-thunk-interface/Manifest @@ -7,20 +7,14 @@ AUX roct-thunk-interface-5.7.1-musl.patch 1878 BLAKE2B c2103b5b8d76e3a637b79bb70 AUX roct-thunk-interface-6.1.0-visibility.patch 868 BLAKE2B d32fcc6a230af549b73db30183fcb2339fcd3bc68dfbf1f7dce0e35361a674f77cba58ef485c3212de43e95c5eabf517386c6b7a289e57ed38b5d6e21e191939 SHA512 6c540e70c53a602477943ff9a26d5eab3d02d8a3c8577b1e39d5baf5a3703de70073e1d0db5083d03460bdd1e2d2fff2cf6356e57d7e392ce4d4dac6bae74900 AUX roct-thunk-interface-6.3.0-functions.patch 293 BLAKE2B e89c9f91f7b14578be5215fe02f8efe3beaf83ffdb3904a8b5211921c6fa8f38459b948da68118c9bcadd5694b4af3b37ce95f6c1221abfd8b7ec8a9c23326ba SHA512 085fd2179b203a2efb65e782036906a89e70cd490bf5acb79fe5b720a009e335b739a4df2922069d4352f4c45cbc40208dc4d360bb2527ea89bf6343842ac0c9 AUX roct-thunk-interface-6.3.0-musl.patch 2488 BLAKE2B 98677f7bd7906fa7804203564241cd9eb6c4588d97db58c9f7a1934a9ce9eaf610ceee7439d85e0956aa60d583946fa2016e9bb1a42b1e9a8b2f43b4debdca95 SHA512 3015afed7b5055f46b1ec638d3ad406f7bac15fb0ad1f249b640558fc627fac6594f3b1dccfe20e3855c65bd75ed1ccbf390f5b73abacc20a35938397f538c78 -DIST roct-thunk-interface-5.1.3.tar.gz 3178689 BLAKE2B c46af7bc60772beaa9a214a86a634290cfd7952589f70736c0c2544c0459eb4fdcc65030d897dbb67bfbaae545f529ac647397df3fcfeddeb5d5e05a283cfd6b SHA512 746a04e667ce242160d6e2519594fc93b205520dae28678859fbd40c3c641082aa6219c04c8e2b58289763a5244dd6336b56c2e2016ba671c5e5a6fb9ca5caea -DIST roct-thunk-interface-5.3.3.tar.gz 646773 BLAKE2B 48632cad576ceccede0ee62663f226cbedba8374d8962028fd729a7b8e7eb75bebcb2f8ce06a838de15a388caea3d6dcb150db80f8d45a91675997b4f80625e6 SHA512 4a8730d16a0d240a43d5e22092325b0731d133733af0aac6c6893763d1ffb1a04a0c045d988835079581e097fc7c9e383f41ba84daa105c032d3a653b6b2c6b0 -DIST roct-thunk-interface-5.4.3.tar.gz 648897 BLAKE2B 9eefc5f417280a98c7c6b6d611d0d87fa52abca94f67bf5ecc10d84bb86433b5ff502f76aa6724245c7cf9d82b5c16c10943275e8d41f0053484765df5a901db SHA512 1787526515ec708edc398cdba308a8dfa32c2579524a6856a6f336cb7bfee8f9a00d67f1b489993c7454d1d88885032ce85ac752b4a15aaedef910f147aed3b5 -DIST roct-thunk-interface-5.5.1.tar.gz 649617 BLAKE2B 54ecae486e5d8b99363947a93b38bb80f6b129bbacc1b3152d58e44cf093e44254075cdc49f6d0f474a04c5e2a1f3945399a744892ac1e5c1fb3ff38fd02370c SHA512 359ce5c7d8fce1f6100aac236efd24d35ce8098732bf89225e7c07a4731452388b5213eda8767a8d7723afa2041033bbcb287dcb00e88a0df9494acf70f8ebaf DIST roct-thunk-interface-5.7.1.tar.gz 665529 BLAKE2B 407601d45976ad66e85999c53bcaa62fefa2ea823e1d3296a9aabe8b6a9c915776344de4499fcf6f9ee80193201308b27b387a7225aca5d2cc7e294143eefacd SHA512 c0dc449c8b713ac543f6cd6c876ea0f160dcb1a5c4a52a2b1364fcae0039e9fe195e4223a2644d7d3a7fbc2a48166e798d15b9088e2097b65974e2ba5e48bdcf DIST roct-thunk-interface-6.1.1.tar.gz 666377 BLAKE2B b30d733fb769f7169e97b8a28eaa61c84205aec06b55d662d24f159a3c84190f3252f090413769e56eb621abc789fae521cb7b26d7cdac952ff1e4e120707bc9 SHA512 2c579606d2ced9f8b5e32841db745819771b7d6ce0cef90b818e3710470e30c7715540125d99ed5ea13c4e672d5af6d8ad2dd5975ef76cab7ba993d86cf74eb4 DIST roct-thunk-interface-6.1.2.tar.gz 666380 BLAKE2B ffff2405bbb95a6908670a23cf6090147a5669f8ab0c999047203731c99c511738a33ac8d3fc0f0e5432e3744e948ec3fe658d6a578ecc63606c8a5662025b0a SHA512 083b1a865608016f78c094a27ece3858072e72d80e1322e7cef22261222a0f868d3b72ebfcd80a11e4719e90d3d3fc7b0c683aed77714f54f520bb126b13ab7c DIST roct-thunk-interface-6.3.0.tar.gz 2258605 BLAKE2B 53b43a8bc4a327c2138e39db20f5217b2def6866d1b52e48017c41e6c3c8541e6bdce76f5a7669cdffccfb34a4cfa863e56e0ce4058d23c5f38d9d0900903751 SHA512 451e74d88875b8d0a1f21d95c543fd93610d966e69258b50fe4b8796381c58f5ea381384e199e5bcf01a80369a59e5a093d8f318fbe2ed1ca6a97dc915060f7a -EBUILD roct-thunk-interface-5.1.3.ebuild 1107 BLAKE2B c8d1aad9be55420235043628caa570cfa5f9164c6a3d20c7d90a6cac385ad2c886c44a89f2d9181742f9c284067b0d0b078fb2ea04e44ac9f1a145505f4b9971 SHA512 08bce5619f4e5e163b23928c0088e7f022d0f9f95bfba4b4e237a74ade30a327bf3cf954590f9d788ab7a16dd4f90ff53bd3e87011866af1d68a200bbeeceb7f -EBUILD roct-thunk-interface-5.3.3.ebuild 1107 BLAKE2B c8d1aad9be55420235043628caa570cfa5f9164c6a3d20c7d90a6cac385ad2c886c44a89f2d9181742f9c284067b0d0b078fb2ea04e44ac9f1a145505f4b9971 SHA512 08bce5619f4e5e163b23928c0088e7f022d0f9f95bfba4b4e237a74ade30a327bf3cf954590f9d788ab7a16dd4f90ff53bd3e87011866af1d68a200bbeeceb7f -EBUILD roct-thunk-interface-5.4.3.ebuild 1107 BLAKE2B c5523fd9ba5475faf5b8bb4ea35a100f4049a8b008c3dec048e03b8e14b394f28b8b5515f7b93c94774c75304e2df7ef745e9538eae5309c6faa569748d32551 SHA512 dfc0e032b61667c9171900f36bc7f18df0e67635e8988d91a8041c298053d9c977adf123af2326e7986bbe00f45ea3ec3e3630ff0993279cfd7becbb5492fc36 -EBUILD roct-thunk-interface-5.5.1.ebuild 1055 BLAKE2B a2341ff457f5ee2754ee8cb63a68b90ee67074946d39ab064fa8838b8fa5d0239f330b2751d233c3038b3988a40486d9df7715df0fd26a6677c5789982679c1f SHA512 49819d214fde8e77f8ca051d9dc44af03472a17e0509aa92812a416bff9008577d3a5bbf96fed12315ce3bd1655641f71ac721d2440b7031927e883475c648fe +DIST roct-thunk-interface-6.3.2.tar.gz 2260102 BLAKE2B 706cd4cc61c3007aec2b7822c02a7c98399454b366f2a2c221ae53ea3ee4c288c47c7fcfbe8f1cbd38d071ab5c90a2d79c054a0b0d2a2f6892a051b843794d32 SHA512 0326242deae601275d71fb268781735b117e713e73b1bcac2fd732828d993dee5840dec011fdc4350be2afdbc8266b6d1b65d5dff0d465a5b9c9cc091a5c645c EBUILD roct-thunk-interface-5.7.1-r1.ebuild 1149 BLAKE2B 31bacc1a1123eac6afe14c9dacf150cf64c8ac85b46e7f4ad386b9e3d8b06b6a2264210f021123218c42c74c87a849f34327baeb648ffd5269276f31302a7151 SHA512 f58abcb15dcbf13d0ef5c148430e2de70345831ad693fa2c2fca2e586e5625a8252c6a57f9ec0d2a75c4f92ba7267acffd985cbc91d8ba157a3e13a952fecf76 EBUILD roct-thunk-interface-6.1.1.ebuild 1865 BLAKE2B f663ba72e647989b8504b0abd4914f183ced60b420cf9fec2688513db5d86d88037674c47901233704755d743703aece1241ae3b756fec291e4dc38b87feb292 SHA512 4f7d9270828b5c478842dc1cf0ca186bd126fa517fc36588df8a44efb57b73e8e97bc52f4a14bde14684f62c2127e386ff2e62ea7ad7e754543dabe14ef505c8 EBUILD roct-thunk-interface-6.1.2.ebuild 1988 BLAKE2B 711a69796383d964849f321735e21780ae91a77a16952f7998f68f8cbd14093e112fba762310c130af47a5c05958f1be24b62542a8281ee89fb7a72e8e72dae9 SHA512 70ff633b89ae06481ca6631f0b9ef67fbb4367b9bd30a239233fee9eafce2ba4c25faa862a8681d9711b4cae55919a75644a734d297424ca51de29258b1e3456 EBUILD roct-thunk-interface-6.3.0.ebuild 2133 BLAKE2B e994105066495ee3fcf71eba82328f462252b0ff00cf6344502b50bdbf1c2accdf15fbadee58c3bfa4f5a34d12afb276cf06bdd69bcc655f46405896e73f3a82 SHA512 afd8fdef7aeb966bd906482bd20b698ea4c683050f89775c10f67a82c6dc220f770d415bf0b0d93b6cb2d8bcc4e0ca345f34b6f0cb0f7f7b50b81914bc484809 +EBUILD roct-thunk-interface-6.3.2.ebuild 2133 BLAKE2B 0b47fb9a547de3c058eb5472275ce7a70e8725c1435d60ba10838ee2e9b5aff60666111779ac9656c1e456e0b287b82e04a61493ac229d672ef564540192b050 SHA512 dd768e8ca626aa4c6c9062fa9d6f79856ed9230603986b5bb164845bfb30580aa61cb83ee62673ad5ff414edde7101b760a3e8a8df491e83d9b31eebdeca6b58 MISC metadata.xml 661 BLAKE2B c019c853506c550339b18a7f1ab57fd5f2876309823bab923ef07f7f997d820c2664ae5c0c1d2e29c2ccdf613f96cdaf85d92a3734aeb105c392847aed73c76b SHA512 194cdad18f2be9fb4d895ff75b4ce9c6a59443caad443061ea70a8cc4778ec13ca35273c8018ac1d00c7ecd146302ee4bf856ad653a174a1ad281d235b6e12e9 diff --git a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.1.3.ebuild b/dev-libs/roct-thunk-interface/roct-thunk-interface-5.1.3.ebuild deleted file mode 100644 index d0cf376f0b8d..000000000000 --- a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.1.3.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake linux-info - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/" - inherit git-r3 -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCT-Thunk-Interface-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Thunk Interface" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface" -CONFIG_CHECK="~HSA_AMD ~HMM_MIRROR ~ZONE_DEVICE ~DRM_AMDGPU ~DRM_AMDGPU_USERPTR" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND="sys-process/numactl" -DEPEND="${RDEPEND}" -BDEPEND="x11-libs/libdrm[video_cards_amdgpu]" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed -e "s:get_version ( \"1.0.0\" ):get_version ( \"${PV}\" ):" -i CMakeLists.txt || die - sed -e "s:ubuntu:gentoo:" -i CMakeLists.txt || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DCPACK_PACKAGING_INSTALL_PREFIX="${EPREFIX}/usr" - ) - cmake_src_configure -} diff --git a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.3.3.ebuild b/dev-libs/roct-thunk-interface/roct-thunk-interface-5.3.3.ebuild deleted file mode 100644 index d0cf376f0b8d..000000000000 --- a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.3.3.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake linux-info - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/" - inherit git-r3 -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCT-Thunk-Interface-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Thunk Interface" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface" -CONFIG_CHECK="~HSA_AMD ~HMM_MIRROR ~ZONE_DEVICE ~DRM_AMDGPU ~DRM_AMDGPU_USERPTR" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND="sys-process/numactl" -DEPEND="${RDEPEND}" -BDEPEND="x11-libs/libdrm[video_cards_amdgpu]" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed -e "s:get_version ( \"1.0.0\" ):get_version ( \"${PV}\" ):" -i CMakeLists.txt || die - sed -e "s:ubuntu:gentoo:" -i CMakeLists.txt || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DCPACK_PACKAGING_INSTALL_PREFIX="${EPREFIX}/usr" - ) - cmake_src_configure -} diff --git a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.4.3.ebuild b/dev-libs/roct-thunk-interface/roct-thunk-interface-5.4.3.ebuild deleted file mode 100644 index 3f391bf5d5e0..000000000000 --- a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.4.3.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake linux-info - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/" - inherit git-r3 -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCT-Thunk-Interface-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Thunk Interface" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface" -CONFIG_CHECK="~HSA_AMD ~HMM_MIRROR ~ZONE_DEVICE ~DRM_AMDGPU ~DRM_AMDGPU_USERPTR" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND="sys-process/numactl" -DEPEND="${RDEPEND}" -BDEPEND="x11-libs/libdrm[video_cards_amdgpu]" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed -e "s:get_version ( \"1.0.0\" ):get_version ( \"${PV}\" ):" -i CMakeLists.txt || die - sed -e "s:ubuntu:gentoo:" -i CMakeLists.txt || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DCPACK_PACKAGING_INSTALL_PREFIX="${EPREFIX}/usr" - ) - cmake_src_configure -} diff --git a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.5.1.ebuild b/dev-libs/roct-thunk-interface/roct-thunk-interface-5.5.1.ebuild deleted file mode 100644 index 4762213b5164..000000000000 --- a/dev-libs/roct-thunk-interface/roct-thunk-interface-5.5.1.ebuild +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake linux-info - -if [[ ${PV} == *9999 ]] ; then - EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/" - inherit git-r3 -else - SRC_URI="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" - S="${WORKDIR}/ROCT-Thunk-Interface-rocm-${PV}" - KEYWORDS="~amd64" -fi - -DESCRIPTION="Radeon Open Compute Thunk Interface" -HOMEPAGE="https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface" -CONFIG_CHECK="~HSA_AMD ~HMM_MIRROR ~ZONE_DEVICE ~DRM_AMDGPU ~DRM_AMDGPU_USERPTR" -LICENSE="MIT" -SLOT="0/$(ver_cut 1-2)" - -RDEPEND="sys-process/numactl" -DEPEND="${RDEPEND}" -BDEPEND="x11-libs/libdrm[video_cards_amdgpu]" - -CMAKE_BUILD_TYPE=Release - -src_prepare() { - sed -e "s:get_version ( \"1.0.0\" ):get_version ( \"${PV}\" ):" -i CMakeLists.txt || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DCPACK_PACKAGING_INSTALL_PREFIX="${EPREFIX}/usr" - ) - cmake_src_configure -} diff --git a/dev-libs/roct-thunk-interface/roct-thunk-interface-6.3.2.ebuild b/dev-libs/roct-thunk-interface/roct-thunk-interface-6.3.2.ebuild new file mode 100644 index 000000000000..b4d7f2f1f1bf --- /dev/null +++ b/dev-libs/roct-thunk-interface/roct-thunk-interface-6.3.2.ebuild @@ -0,0 +1,92 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 19 ) +ROCM_SKIP_GLOBALS=1 +inherit cmake linux-info llvm-r1 rocm + +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/ROCm/ROCR-Runtime/" + inherit git-r3 + S="${WORKDIR}/${P}/libhsakmt" +else + SRC_URI="https://github.com/ROCm/ROCR-Runtime/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/ROCR-Runtime-rocm-${PV}/libhsakmt" + KEYWORDS="~amd64" +fi + +DESCRIPTION="Radeon Open Compute Thunk Interface" +HOMEPAGE="https://github.com/ROCm/ROCR-Runtime/tree/amd-staging/libhsakmt" +CONFIG_CHECK="~HSA_AMD ~HMM_MIRROR ~ZONE_DEVICE ~DRM_AMDGPU ~DRM_AMDGPU_USERPTR" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" + +RDEPEND="sys-process/numactl + x11-libs/libdrm[video_cards_amdgpu]" +DEPEND="${RDEPEND} + test? ( + $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}') + dev-cpp/gtest + )" + +IUSE="test" +RESTRICT="!test? ( test )" + +CMAKE_BUILD_TYPE=Release + +PATCHES=( + "${FILESDIR}/${PN}-6.3.0-functions.patch" + "${FILESDIR}/${PN}-6.3.0-musl.patch" + "${FILESDIR}/kfdtest-6.1.0-skipIPCtest.patch" + "${FILESDIR}/kfdtest-6.2.4-fix-llvm-header.patch" +) + +test_wrapper() { + local S="$1" + shift 1 + local CMAKE_USE_DIR="${S}" + local BUILD_DIR="${S}_build" + cd "${S}" || die + $@ +} + +src_prepare() { + sed -e "s/get_version ( \"1.0.0\" )/get_version ( \"${PV}\" )/" -i CMakeLists.txt || die + + # https://github.com/ROCm/ROCR-Runtime/issues/263 + sed -e "s/\${HSAKMT_TARGET} STATIC/\${HSAKMT_TARGET}/" -i CMakeLists.txt || die + + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" + -DBUILD_SHARED_LIBS=ON + ) + cmake_src_configure + + if use test; then + export LIBHSAKMT_PATH="${BUILD_DIR}" + local mycmakeargs=( + -DLLVM_DIR="$(get_llvm_prefix)" + ) + test_wrapper "${S}/tests/kfdtest" cmake_src_configure + fi +} + +src_compile() { + cmake_src_compile + if use test; then + LIBRARY_PATH="${BUILD_DIR}" test_wrapper "${S}/tests/kfdtest" cmake_src_compile + fi +} + +src_test() { + check_amdgpu + TESTDIR="${S}/tests/kfdtest_build/" + cd "${TESTDIR}" || die + PATH="${PATH}:${TESTDIR}" ./run_kfdtest.sh +} diff --git a/dev-libs/simdjson/Manifest b/dev-libs/simdjson/Manifest index 55ff3e3d4e32..defd3ba31d26 100644 --- a/dev-libs/simdjson/Manifest +++ b/dev-libs/simdjson/Manifest @@ -7,9 +7,11 @@ DIST simdjson-3.10.1.gh.tar.gz 2652674 BLAKE2B 3ccfc55d5bf8ce6a7e8be1b6cb28ed7b6 DIST simdjson-3.11.0.gh.tar.gz 2703217 BLAKE2B 85a747a99ff0e8cae3d91743501838742dd070e15b2430706e7244d2a304d05aa8059a2d8fbaa9feddecf1a42800aac3b0a4d0b0b0097ef1871064c75f00f482 SHA512 a08a440d62274c1e788db5ce3ac4c4f7dc06ccf29ecb3b9156e79d31febb5207b39ffab9ca8fa41e440fe8d56d857c4ad7eccbfbe2cd86b6c060729aada132ad DIST simdjson-3.11.2.gh.tar.gz 2703937 BLAKE2B 390c99f46efa92893b8b1fb193baf9333a7f19b909d7c9e621988eb9b11a89a3feea672069fbba044495d8b4d2f76f38a293b4ffcdddfb2be4820e527edc7866 SHA512 417e158e8b03ee50a50e927606ee8771eb457b94c8bba8e106c2aeb3eab3455a9431b9d5a92a852938e475a8101624b5785d0a2a45965490e42331cfe17efa62 DIST simdjson-3.11.5.gh.tar.gz 2707916 BLAKE2B 88535b826346a468038271b265e6ac6d8bceefc87c968ad868eb25f312c518ab8f82e2065b0f1e36ab581083f76f0da77a899813d1499bcdc7ca71498ba1e31b SHA512 bfa44dea3dbe93a9b3521a3fa6204adb26647098c62607d43f2585ea437f1d69ce0986bea65e6155a7633687b8f9964c4823a7973db1a8e392a1676d5f5eee3f +DIST simdjson-3.12.1.gh.tar.gz 2709314 BLAKE2B 8c5cefc63c51d627fcea3cfb077fff8efd5ba13a6cf13b90c3faf03795ebd98917bdb6c23d491bbd0afaf1caf11cd3e0cd4bf0e04e6a1a8f6d6d97b10db5717e SHA512 b8dc78df5d016e830133cb23d13e6f98e7147c1995c9c0951c5085fbb77476ffe29458d1d32abac2f85966d7758a1c1ffa888aea881bf4c0aced9a144d01b3ac DIST simdjson-data-a5b13babe65c1bba7186b41b43d4cbdc20a5c470.tar.gz 6635706 BLAKE2B 563376147f18d590a176a5a0398365db1a3e677b773c018f335efa7fff05ac22ac5dc37613792082a32e6c9b91a773a590f7dfd15efa5ba660f9142b128b28a7 SHA512 168198404b11b8c76ff4f53645d7b5a88a5c72b4a5b6646b4410859ec3416ae9b37fc59f7d2f014ccc785615ea5c31dc00b145dbb1a7acb701b94029dd4ea1e1 EBUILD simdjson-3.10.1.ebuild 2331 BLAKE2B f5294e10991fe6a5287183b93fa3a9f298884c739ebc028f5e368227ea5d65352e8a4ca584702b00dc3deec3194f38e0acba31f5f33987b9224c9c1d3e67a1e5 SHA512 8c19453eff16f16d2e024d9f052c430ed6243b4e6c89ba941085cd2d426d4f321facacd774c8f40ef4a174a4839360dc4176bc7fd796c5f0d785fbcc7a06f66e EBUILD simdjson-3.11.0.ebuild 2641 BLAKE2B 197d84a7d8cde56d577556cfa6018cb5e73257258ba0996d017aa9e8f419dfe710d8831ed3974c661f93735c4dc918a99f1c52defa1586c60d925a881b940590 SHA512 a9eae183889e3bdd8c084367c71b076ee076f681bbe25ec0bf0df7f58e3d1fe1895f8fa3a685db2c215ac5c7e9eb5033fe2c0937cd6ed4d0de4416c3b952eaeb EBUILD simdjson-3.11.2.ebuild 2646 BLAKE2B 9506392749ff9c6da0481124451ebeb453f4751ea3505ece5fc041418ff1db8b4402ae4914810e0aeb556d744384bfd5ce9b72e3da74205deb749ac9047eb477 SHA512 8e2c5342181a327c544c10b8e0de30ac7b601869340b0613b4212545e275b347061850d6f8b18c13e3186bb2d550efd171cbf36dc8e713ef00ab222a7fafa9e7 EBUILD simdjson-3.11.5.ebuild 2646 BLAKE2B a228e21d4220f18d067d0f7dcdcd5dddde2f0fa17d8a1c5d968a91eee4d76168f4fbb2d92cf2adc4b1c41ba53059ee77f4b0e92211a6e7356a50a96d4f8f142e SHA512 43f731b3cb3b1aa0f10c891ebd244b4c698a7c161723d2742de83bdaa624c84b8afaa9d6cb360ec37f2850630d5105f6c99217a62b982ffde13316ff7c74a1a6 +EBUILD simdjson-3.12.1-r1.ebuild 2646 BLAKE2B 593ee3e5fc7df16ad5f2afd1b9c27b001add4e7171111c3d8777411169ecfdb7159033206e2b00baf0bfaa0525025410cf29d4d77c38243e3107666f93828c44 SHA512 bc4f9249296f6a8fd405c14cfd0976d043dce7d7526685bc3c3243a3d542f32d68e389e5086d109150bb4d7bba3b6977309f6633b01d57f7244ec7c1b5309444 MISC metadata.xml 499 BLAKE2B e3b1183b2eb058d569a2e74d8262cbb56184aa163181a80db80d7a9e195320d8f72ff370302e61584f745a54a7e25eeff828f8c59c38a02555052a742a21bb04 SHA512 fa6e20ac52b31c88b1252d7d85b393dc6f0bf8396d66994e6276f895a1b1df22db4f3860ff1c3bc34a9d414e1e9612b97f78a182f1f74176cd661147bdca75bf diff --git a/dev-libs/simdjson/simdjson-3.12.1-r1.ebuild b/dev-libs/simdjson/simdjson-3.12.1-r1.ebuild new file mode 100644 index 000000000000..106936d49291 --- /dev/null +++ b/dev-libs/simdjson/simdjson-3.12.1-r1.ebuild @@ -0,0 +1,105 @@ +# Copyright 2020-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs cmake + +SIMDJSON_DATA_HASH="a5b13babe65c1bba7186b41b43d4cbdc20a5c470" +CPM_SIMDJSON_DATA_HASH="01efb6b90e94a7163d69e4e28efc28d96dbeaf0b" +CPM_VERSION="0.40.2" +DESCRIPTION="SIMD accelerated C++ JSON library" +HOMEPAGE=" + https://simdjson.org/ + https://github.com/simdjson/simdjson +" +SRC_URI=" + https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz + https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_VERSION}/CPM.cmake -> CPM_${CPM_VERSION}.cmake + https://github.com/${PN}/${PN}-data/archive/${SIMDJSON_DATA_HASH}.tar.gz -> ${PN}-data-${SIMDJSON_DATA_HASH}.tar.gz +" + +LICENSE="Apache-2.0 Boost-1.0 BSD MIT" +SLOT="0/25" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86" +IUSE="+all-impls test tools" + +BDEPEND=" + sys-apps/file + sys-apps/grep + virtual/pkgconfig +" +DEPEND=" + tools? ( >=dev-libs/cxxopts-3.2:= ) +" + +REQUIRED_USE="test? ( tools )" +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}/simdjson-1.0.0-install-tools.patch" + "${FILESDIR}/simdjson-3.10.1-tests.patch" +) + +DOCS=( + AUTHORS + CONTRIBUTING.md + CONTRIBUTORS + HACKING.md + README.md +) + +src_prepare() { + # Need to make sure that CPM finds the data package + mkdir "${WORKDIR}/cpm" "${WORKDIR}/${PN}-data" || die + cp "${DISTDIR}/CPM_${CPM_VERSION}.cmake" "${WORKDIR}/cpm/CPM_${CPM_VERSION}.cmake" || die + ln -s "../${PN}-data-${SIMDJSON_DATA_HASH}" "${WORKDIR}/${PN}-data/${CPM_SIMDJSON_DATA_HASH}" || die + + sed -e 's:-Werror ::' -i cmake/developer-options.cmake || die + sed -e '/Werror/ d ; /Werror/ d ' -i tests/ondemand/compilation_failure_tests/CMakeLists.txt || die + sed -e "s:^c++ :$(tc-getCXX) :" -i singleheader/README.md || die + mv tools/{,simd}jsonpointer.cpp || die + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DSIMDJSON_ENABLE_THREADS:BOOL=ON + -DCPM_SOURCE_CACHE:STRING="${WORKDIR}" + -Wno-dev + ) + use test && mycmakeargs+=( + -DSIMDJSON_TESTS:BOOL=ON + ) + + if use tools; then + mycmakeargs+=( + -DSIMDJSON_DEVELOPER_MODE:BOOL=ON + -DSIMDJSON_ALLOW_DOWNLOADS:BOOL=OFF + -DSIMDJSON_GOOGLE_BENCHMARKS:BOOL=OFF + -DSIMDJSON_COMPETITION:BOOL=OFF + -DSIMDJSON_TOOLS:BOOL=ON + ) + elif ! use test; then + mycmakeargs+=( + -DSIMDJSON_DEVELOPER_MODELBOOL=OFF + ) + fi + + if use all-impls; then + local -a impls=("fallback") + if use amd64; then + impls+=("westmere" "haswell" "icelake") + elif use arm64; then + impls+=("arm64") + elif use ppc64; then + impls+=("ppc64") + fi + + mycmakeargs+=( + -DSIMDJSON_IMPLEMENTATION:STRING=$(printf '%s;' "${impls[@]}") + ) + fi + + cmake_src_configure +} diff --git a/dev-libs/skalibs/Manifest b/dev-libs/skalibs/Manifest index d49a038edd88..16f50200fc28 100644 --- a/dev-libs/skalibs/Manifest +++ b/dev-libs/skalibs/Manifest @@ -1,5 +1,5 @@ DIST skalibs-2.14.2.0.tar.gz 242763 BLAKE2B 5a172245ae27eeb6a41f943e285f3e40d66324a60a1190afbbb4cdbc3fbbd0cace0feac9666c02c2adddbbac477741e578d2a3d4af707799704ed8050245783b SHA512 b96491e6429cc69bc75f50be99b7b18769cb756c1a82f698994c23aefb16bc68ee5558076993b948a6674203ecd82a454a978c89f450c219cc2728d52b7f5656 DIST skalibs-2.14.3.0.tar.gz 244425 BLAKE2B c9fd666250d59e213c3e2c0924b4a2ee6a6adc2e96a1bd916251cfe7093c277f952f058bf4a5044e11bfe9c4445fdb77e4538613e19e657ba1a18a703afba825 SHA512 f40222740494425477252e78c772edda3f6cb201723558c513acb6c87d55a0f3432c918acf112c9457ed3ff0ee71bf5192f61b1c9070e668f219fd6d3f6f3bfa EBUILD skalibs-2.14.2.0.ebuild 911 BLAKE2B 18789dbc3969551197f38ec4721b024f386421e4924d358393b07e66272c4cc668c076147f51e95387fb6e3f44f4c3b183158df00965a033fe669ae44c91156d SHA512 3801feda4d890e081f3600be2bb1bc6da078ababf6dcf1e2ceb4b770f2990885cfc6ae651f3df4e82689e99e5f5f787a7956cb554c6dc56b495f7703f6fb1dae -EBUILD skalibs-2.14.3.0.ebuild 914 BLAKE2B ade48389d40027bf0fe8014e7f09385dfc21997ca43b3a92a20358d00457ad99c2590a73f842be8c448074d0a41216b47746eda6dd17427d911a4bce25c6c05f SHA512 a6c915330c434ba010d04dd6ba6a74bac9f8f949703009136f8a489314ede17075a5d040d7975ac5cc5b27907b84cb32ea5a9c9fceb45232bada69388503ea18 +EBUILD skalibs-2.14.3.0.ebuild 912 BLAKE2B 2328682200ffdafcdfa4da7e26c5411994bd50e0ad482068e08e354f6041c69b5babf3cf6d17ae64ae184e0db7889df01a6130f263c3f9cad41f6ccff5da605c SHA512 114765b88d7789763c3ad3be858b19ac8ac60fcfca52161f17870554324e1597eec91832a354815232550e6a1eefcff0950d50d116791b3b9ec78b63e007657f MISC metadata.xml 355 BLAKE2B 66e0a671da1ad125bd77d9d05bf03ea2e4bb9f8ec0c91bfe2f5b87192ce2de48a5137105af6e34260fb53c0a858577bc63681a53436d40ae635d87b2a346da25 SHA512 c6240c87d05a08450803a5887077715842112da1fa49264a8594735909d07e76a25a10bff4b09e7cf6049081153f520ac12019d93384357b692734ce82b07089 diff --git a/dev-libs/skalibs/skalibs-2.14.3.0.ebuild b/dev-libs/skalibs/skalibs-2.14.3.0.ebuild index 64c6328ea9cd..1fa4f3a03989 100644 --- a/dev-libs/skalibs/skalibs-2.14.3.0.ebuild +++ b/dev-libs/skalibs/skalibs-2.14.3.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -11,7 +11,7 @@ SRC_URI="https://www.skarnet.org/software/${PN}/${P}.tar.gz" LICENSE="ISC" SLOT="0/$(ver_cut 1-2)" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86" +KEYWORDS="~alpha amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv x86" HTML_DOCS=( doc/. ) diff --git a/dev-libs/tre/Manifest b/dev-libs/tre/Manifest index 1d616efeba83..fc3d864adf9b 100644 --- a/dev-libs/tre/Manifest +++ b/dev-libs/tre/Manifest @@ -1,5 +1,5 @@ AUX 0.8.0-CVE-2016-8559.patch 2445 BLAKE2B 1bde61db5aa46213c6d5dbaf6b97ba91fe50eb9c4c315be08b2964c2c3e5a85c2dd8933e1b69fd48294b6dcf5af3be7e386e55717e34c3ada9d30eea4675e112 SHA512 bae516a86ef0290a79eca283e4e6cc831255d1653b65f13714530811d358d0775b17711c54b1efab0c9d60829926123c70309aed30767eb7ac2a00ace1411766 -AUX 0.8.0-pkgcfg.patch 355 BLAKE2B 14b3ddb93249d827f64d1facd5d7f83d6d4b74d067b66bce405501a3195d230439dbc5036233c2242442e3fa56a771981be9c6e6cb8d668e5f0c293d4dcae1e4 SHA512 5c3df45b4c37d8923ed93ccd24e204fa42da7ac29fdcead81fffdd153d19fd71759ce4922cb55c09a34b21adbdf3d079339c15acc17b1c7d8e924db5b22a9e65 +AUX 0.8.0-pkgcfg.patch 398 BLAKE2B 4030e195bafc0543fa7d85ebd60792ba68c8cabd5bc962716580c4a9de9911c49ed62e5ac22ab45bf16603ce6eb0dbadb48548ee9f0cab47e253933ed16f14e1 SHA512 ce35142d5b209344688404de88c4b7348395a6a547913293091ed23169cc5b52608e2265fbfb72d11374dac13c2127ab4c995084e554db5687b587ff16480827 AUX tre-c99.patch 771 BLAKE2B 99d725f920e9ec2b95ebb3ad87d25023dcd13e5259b3256ae4ef99edfe37fbca2f34858153555e89f0c8196ba88f2b498f97247de23feb06f6e1bbf01ee866ab SHA512 f832c49057c76edcc205395c9f8d860abef180bf6bb9fbafb93f99569d7493ebdfa6e17271a9a13ae8a54d777f371cf59960c68fbef2c176c913f288b2712602 AUX tre-chicken.patch 666 BLAKE2B 8f8f56a7a7cacb9bb0d43b993d51e6d936ffa09bbe866fee7e89299e6c6a3767147b8f340179c0f543da1b6d2554a6187b1a92ddf3bdc2b3d53abdbfb1d251de SHA512 6923a5ed08a2a9e08bc5e46028d2187deb5a62a756598125410a3c4704485b7bcbed2ad90002917474515065f2701f885c6ff462ebbf426135cced74343dfa74 AUX tre-issue37.patch 311 BLAKE2B 315577adae015abf2719509e84554bd3631f777d94dabba0ca9070429e2be5785edc3a3e6a7612dd6fc792a6b03c6c3871954e39363d8f9e91dbe34f5f2bb576 SHA512 41f270e197d254da2ee742722a60324020ea98b3fd6498b6244aebe310587293b4eff7d80a793861f616a772e3bc1058b2f3bee487066e0bc712fdb34aad0720 @@ -9,8 +9,7 @@ AUX tre-issue55-part2.patch 335 BLAKE2B e4c67973f6565e918c17d733bd8d8a1c5e6e67ce AUX tre-python3.patch 5186 BLAKE2B c9e08efa47fb8ad00385703c9c7cc9d240eaccacf472c47991426702d4c971857c7c6fd1cac47135153616e4358ccbe1fcd05c04973c3c9164639634926b9c8c SHA512 0fb84b2051b2082f3271e4d47d0bc666ba9e6deb8ea2dfe0201ef4f0708b94b6706726740bfbfcf1ae708f348c63850c1b175ed1f93200934817337a5d23f1d2 AUX tre-tests.patch 235 BLAKE2B 11c601f9b352dee9e2d36e60c537a4c2969beefd04bdab21c1e00886611d243a6c818b4a8cb484b8a414d3ec07de3e3ce32fde4aaa096bcda307b66225e8179b SHA512 69373229743ad805d4bfbf41def35de930424baaf66c36f35b3cba04860c2de15051ff640d486ec75e85aa20a28863e7937c6876ec443418ba1391e9dbbf4047 DIST tre-0.8.0_p20210321.tar.gz 146294 BLAKE2B d740bd0e99f50f5e4d8105f5260e43a81b6af9857a21e386e437ab8d48a9e0de23eae03e96cf6b9f4d2d37f72d0fa73ef7343086271ea80f166bdba3f04475a9 SHA512 950c81f681970fc737cfdd6815445f05a018fc742b964cea3ce19f0249c677dd715ece4ff8e543fa9f3fd23b503eafa00aea00dbae063af9bc7e08dc1bc33aed -EBUILD tre-0.8.0_p20210321-r1.ebuild 2384 BLAKE2B 73c3cba0eb0970101bd6d7c1f9babc6b04ded172ef2bb31873f4576ba1b3e38b8f6aad52fae3dfd99139621ed2fdb9f05de6169e0da9e303f6af833f5c6f58f7 SHA512 c10a3da5c8b993a368bc0a304b4da6c6ca86e56a9f0c913fa2c98f2299254710050f73e62530a131c74c2448cb2607af40745be01ca5f1f1f80116f510a1b783 -EBUILD tre-0.8.0_p20210321-r2.ebuild 2163 BLAKE2B 8412c56909ee96b9e68d4883d36aa759dbceb35c64f16373542d8e06918465e3ac3978ef5e02aabde8fbdf5fc509cfaf762a0016491d63e12e641a32435f38cc SHA512 d676c096e6febb63152d4076514d5c795f4d09a9dfbf53e9c2cc88c59322eddf37039d0ddcf603b51c336c9eab29fc9e42921bc4421774cefeff46d3fae5549b -EBUILD tre-0.8.0_p20210321-r3.ebuild 2255 BLAKE2B f3f1d0d30ed09f13c7c603be36371c14c6df59bb1698c86c045e215f7ca28024817c42eed9c239c1b9e5d855deba733dbfbcd71c2691f26e8d5b17876980c324 SHA512 5de6c93c744dd8bea694145963028ecf10241f8712c62f07ed3b52e5a247c1ff7abefb90a75536478d63bdc5bf815491c15b041ee100083af84bc9b80e70840b +DIST tre-0.9.0.gh.tar.gz 154949 BLAKE2B cab32f6f582b4e170c15fcbc75454a9cc289d8ffe7e772ffde78e17976a526278abcce28c71ebb3b2e12029112bc4d2c1729814178aedf0236768adcf782ff4b SHA512 465f4273b6bcfd41a13716e91db4e12497266cbb97d5260b8d20114d19229e35f1641eebeb1b315e13ff6182608440ddd78ab386032c99e8265cfce9c8ef69c2 EBUILD tre-0.8.0_p20210321-r4.ebuild 2248 BLAKE2B 2ac2765d0ac4bb1bc674a87c95b6e731aca05e478a1c6d3275304bb4da0b35f1ece8d20969bb5c5dca11a1822ba76fc375a430ae47202174c530d04d56737f32 SHA512 6004194a306510a2006372d6851e7cfa006d25b851b4fa41965bd1fe57b07d93575b9539368a4b32c57d9df83759ed4ec410039f69e6db887d2e342ef082d824 +EBUILD tre-0.9.0-r1.ebuild 1975 BLAKE2B 18db7f5728a4ccb363a80eb7ebf5020eb6043b772b3c8c52682ef4c55b4f72b0e4743ad072689bd8e12ccea78abd4d1de769e41cd2c1f431a9fd8ddd37c98bc6 SHA512 44114460e7aac807436ed84f8cd0def04690cb4cf4ba2dc699ad288cb11a0edb6946d4477d009d1e880a8e7b2756a049ffebb039e4de77b03eae397f060fa412 MISC metadata.xml 638 BLAKE2B 4e02f7673a19acc091ee21459551e6d40f6a78d5a25cbbffe877d46f0a181067e2163d1ac79d0f7d38ff383b8775abf6f69309ad97b25fd2af55b0ac2223ab40 SHA512 9f725eebbee4753cb05b0adcda1edec2aa50265257db359ca0ec4596761072ec335fffb5a5035cf5ec43c13b8c8a7dd7ed916bbf82acd57c6d8ee5e4c89cb622 diff --git a/dev-libs/tre/files/0.8.0-pkgcfg.patch b/dev-libs/tre/files/0.8.0-pkgcfg.patch index 7952619c9616..c08c6900de14 100644 --- a/dev-libs/tre/files/0.8.0-pkgcfg.patch +++ b/dev-libs/tre/files/0.8.0-pkgcfg.patch @@ -1,3 +1,5 @@ +https://github.com/laurikari/tre/pull/117 + tre.pc.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dev-libs/tre/tre-0.8.0_p20210321-r1.ebuild b/dev-libs/tre/tre-0.8.0_p20210321-r1.ebuild deleted file mode 100644 index deeab6114bbc..000000000000 --- a/dev-libs/tre/tre-0.8.0_p20210321-r1.ebuild +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -COMMIT="6092368aabdd0dbb0fbceb2766a37b98e0ff6911" -PYTHON_COMPAT=( python3_{9..10} pypy3 ) - -inherit autotools distutils-r1 - -DESCRIPTION="Lightweight, robust, and efficient POSIX compliant regexp matching library" -HOMEPAGE=" - https://laurikari.net/tre/ - https://github.com/laurikari/tre -" -SRC_URI="https://github.com/laurikari/tre/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/${PN}-${COMMIT}" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux" -IUSE="+agrep +alloca +approx debug nls profile python" - -RDEPEND=" - agrep? ( - !app-text/agrep - !dev-ruby/amatch - !app-misc/glimpse - ) - python? ( ${PYTHON_DEPS} ) -" -DEPEND=" - ${RDEPEND} - nls? ( sys-devel/gettext ) -" -BDEPEND="sys-devel/gettext - virtual/pkgconfig" - -REQUIRED_USE=" - agrep? ( approx ) - python? ( ${PYTHON_REQUIRED_USE} ) -" - -PATCHES=( - "${FILESDIR}/0.8.0-pkgcfg.patch" - "${FILESDIR}/0.8.0-CVE-2016-8559.patch" - "${FILESDIR}/${PN}-chicken.patch" - "${FILESDIR}/${PN}-issue37.patch" - "${FILESDIR}/${PN}-issue50.patch" - "${FILESDIR}/${PN}-issue55-part1.patch" - "${FILESDIR}/${PN}-issue55-part2.patch" - "${FILESDIR}/${PN}-python3.patch" - "${FILESDIR}/${PN}-tests.patch" -) - -src_prepare() { - default - eautoreconf -} - -src_configure() { - local myconf=( - --disable-static - --disable-system-abi - --enable-multibyte - --enable-wchar - $(use_enable agrep) - $(use_enable approx) - $(use_enable debug) - $(use_enable nls) - $(use_enable profile) - $(use_with alloca) - ) - econf "${myconf[@]}" -} - -src_test() { - if locale -a | grep -iq en_US.iso88591; then - emake -j1 check - else - ewarn "If you like to run the test," - ewarn "please make sure en_US.ISO-8859-1 is installed." - die "en_US.ISO-8859-1 locale is missing" - fi -} - -src_compile() { - default - - if use python; then - pushd python || die - distutils-r1_src_compile - popd || die - fi -} - -src_install() { - local HTML_DOCS=( doc/*.{css,html} ) - - default - - use python && distutils-r1_src_install -} - -python_install() { - pushd "python" || die - distutils-r1_python_install - popd || die -} - -pkg_postinst() { - ewarn "app-misc/glimpse, app-text/agrep and this package all provide agrep." - ewarn "If this causes any unforeseen incompatibilities please file a bug" - ewarn "on https://bugs.gentoo.org." -} diff --git a/dev-libs/tre/tre-0.8.0_p20210321-r2.ebuild b/dev-libs/tre/tre-0.8.0_p20210321-r2.ebuild deleted file mode 100644 index 0e84aa14aaa4..000000000000 --- a/dev-libs/tre/tre-0.8.0_p20210321-r2.ebuild +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -COMMIT="6092368aabdd0dbb0fbceb2766a37b98e0ff6911" -PYTHON_COMPAT=( python3_{8..11} pypy3 ) -DISTUTILS_OPTIONAL=1 - -inherit autotools distutils-r1 - -DESCRIPTION="Lightweight, robust, and efficient POSIX compliant regexp matching library" -HOMEPAGE=" - https://laurikari.net/tre/ - https://github.com/laurikari/tre -" -SRC_URI="https://github.com/laurikari/tre/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/${PN}-${COMMIT}" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux" -IUSE="+agrep +alloca +approx debug nls profile python" - -RDEPEND=" - agrep? ( - !app-text/agrep - !dev-ruby/amatch - !app-misc/glimpse - ) - python? ( ${PYTHON_DEPS} ) -" -DEPEND=" - ${RDEPEND} - nls? ( sys-devel/gettext ) -" -BDEPEND=" - python? ( ${DISTUTILS_DEPS} ) - sys-devel/gettext - virtual/pkgconfig" - -REQUIRED_USE=" - agrep? ( approx ) - python? ( ${PYTHON_REQUIRED_USE} ) -" - -PATCHES=( - "${FILESDIR}/0.8.0-pkgcfg.patch" - "${FILESDIR}/0.8.0-CVE-2016-8559.patch" - "${FILESDIR}/${PN}-chicken.patch" - "${FILESDIR}/${PN}-issue37.patch" - "${FILESDIR}/${PN}-issue50.patch" - "${FILESDIR}/${PN}-issue55-part1.patch" - "${FILESDIR}/${PN}-issue55-part2.patch" - "${FILESDIR}/${PN}-python3.patch" - "${FILESDIR}/${PN}-tests.patch" -) - -src_prepare() { - default - eautoreconf -} - -src_configure() { - local myconf=( - --disable-static - --disable-system-abi - --enable-multibyte - --enable-wchar - $(use_enable agrep) - $(use_enable approx) - $(use_enable debug) - $(use_enable nls) - $(use_enable profile) - $(use_with alloca) - ) - econf "${myconf[@]}" -} - -src_test() { - if locale -a | grep -iq en_US.iso88591; then - emake -j1 check - else - ewarn "If you like to run the test," - ewarn "please make sure en_US.ISO-8859-1 is installed." - die "en_US.ISO-8859-1 locale is missing" - fi -} - -src_compile() { - default - - if use python; then - cd python || die - distutils-r1_src_compile - fi -} - -src_install() { - local HTML_DOCS=( doc/*.{css,html} ) - - default - - use python && distutils-r1_src_install -} diff --git a/dev-libs/tre/tre-0.8.0_p20210321-r3.ebuild b/dev-libs/tre/tre-0.8.0_p20210321-r3.ebuild deleted file mode 100644 index 421d6f8cd917..000000000000 --- a/dev-libs/tre/tre-0.8.0_p20210321-r3.ebuild +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -COMMIT="6092368aabdd0dbb0fbceb2766a37b98e0ff6911" -PYTHON_COMPAT=( python3_{10..12} pypy3 ) -DISTUTILS_EXT=1 -DISTUTILS_OPTIONAL=1 - -inherit autotools distutils-r1 - -DESCRIPTION="Lightweight, robust, and efficient POSIX compliant regexp matching library" -HOMEPAGE=" - https://laurikari.net/tre/ - https://github.com/laurikari/tre -" -SRC_URI="https://github.com/laurikari/tre/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/${PN}-${COMMIT}" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos" -IUSE="+agrep +alloca +approx debug nls profile python" - -RDEPEND=" - agrep? ( - !app-text/agrep - !dev-ruby/amatch - !app-misc/glimpse - ) - python? ( ${PYTHON_DEPS} ) -" -DEPEND=" - ${RDEPEND} - nls? ( sys-devel/gettext ) -" -BDEPEND=" - python? ( ${DISTUTILS_DEPS} ) - sys-devel/gettext - virtual/pkgconfig" - -REQUIRED_USE=" - agrep? ( approx ) - python? ( ${PYTHON_REQUIRED_USE} ) -" - -PATCHES=( - "${FILESDIR}/0.8.0-pkgcfg.patch" - "${FILESDIR}/0.8.0-CVE-2016-8559.patch" - "${FILESDIR}/${PN}-chicken.patch" - "${FILESDIR}/${PN}-issue37.patch" - "${FILESDIR}/${PN}-issue50.patch" - "${FILESDIR}/${PN}-issue55-part1.patch" - "${FILESDIR}/${PN}-issue55-part2.patch" - "${FILESDIR}/${PN}-python3.patch" - "${FILESDIR}/${PN}-tests.patch" -) - -src_prepare() { - default - eautoreconf -} - -src_configure() { - local myconf=( - --disable-static - --disable-system-abi - --enable-multibyte - --enable-wchar - $(use_enable agrep) - $(use_enable approx) - $(use_enable debug) - $(use_enable nls) - $(use_enable profile) - $(use_with alloca) - ) - econf "${myconf[@]}" -} - -src_test() { - if locale -a | grep -iq en_US.iso88591; then - emake -j1 check - else - ewarn "If you like to run the test," - ewarn "please make sure en_US.ISO-8859-1 is installed." - die "en_US.ISO-8859-1 locale is missing" - fi -} - -src_compile() { - default - - if use python; then - cd python || die - distutils-r1_src_compile - fi -} - -src_install() { - local HTML_DOCS=( doc/*.{css,html} ) - - default - - use python && distutils-r1_src_install - - find "${ED}" -type f -name '*.la' -delete || die -} diff --git a/dev-libs/tre/tre-0.9.0-r1.ebuild b/dev-libs/tre/tre-0.9.0-r1.ebuild new file mode 100644 index 000000000000..91aaf76ded4c --- /dev/null +++ b/dev-libs/tre/tre-0.9.0-r1.ebuild @@ -0,0 +1,103 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..13} pypy3 ) +DISTUTILS_EXT=1 +DISTUTILS_OPTIONAL=1 + +inherit autotools distutils-r1 + +DESCRIPTION="Lightweight, robust, and efficient POSIX compliant regexp matching library" +HOMEPAGE=" + https://laurikari.net/tre/ + https://github.com/laurikari/tre +" +# missing files in dist bug #949527 +# https://github.com/laurikari/tre/pull/118 +SRC_URI=" + https://github.com/laurikari/tre/archive/refs/tags/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos" +IUSE="+agrep +alloca +approx debug nls profile python" + +RDEPEND=" + agrep? ( + !dev-ruby/amatch + ) + python? ( ${PYTHON_DEPS} ) +" +DEPEND=" + ${RDEPEND} + nls? ( sys-devel/gettext ) +" +BDEPEND=" + python? ( ${DISTUTILS_DEPS} ) + sys-devel/gettext + virtual/pkgconfig" + +REQUIRED_USE=" + agrep? ( approx ) + python? ( ${PYTHON_REQUIRED_USE} ) +" + +PATCHES=( + "${FILESDIR}/0.8.0-pkgcfg.patch" + "${FILESDIR}/${PN}-tests.patch" +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + local myconf=( + --disable-static + --disable-system-abi + --enable-multibyte + --enable-wchar + $(use_enable agrep) + $(use_enable approx) + $(use_enable debug) + $(use_enable nls) + $(use_enable profile) + $(use_with alloca) + ) + econf "${myconf[@]}" +} + +src_test() { + if locale -a | grep -iq en_US.iso88591; then + emake -j1 check + else + ewarn "If you like to run the test," + ewarn "please make sure en_US.ISO-8859-1 is installed." + die "en_US.ISO-8859-1 locale is missing" + fi +} + +src_compile() { + default + + if use python; then + cd python || die + distutils-r1_src_compile + fi +} + +src_install() { + local HTML_DOCS=( doc/*.{css,html} ) + + default + + use python && distutils-r1_src_install + + find "${ED}" -type f -name '*.la' -delete || die +} diff --git a/dev-libs/tree-sitter-bash/Manifest b/dev-libs/tree-sitter-bash/Manifest index 31cd6396be70..c16d4bc2ac44 100644 --- a/dev-libs/tree-sitter-bash/Manifest +++ b/dev-libs/tree-sitter-bash/Manifest @@ -1,7 +1,9 @@ DIST tree-sitter-bash-0.21.0.tar.gz 557096 BLAKE2B bfbdb4db0f75c292567043a47d32e26c6ec119ed70fa9b77675eb57e686c072315fc114befecc430730c8eec20238544d13836402f2264a1b6657e0387d4987c SHA512 9585ea80f85bc7010444a91142bc943486ade68982c7ca367a6cbe65619af2bdaa1acd8b6ee698cdf74b84d62a7f44acc4676ddb4b6007035eb9eea4768f122d DIST tree-sitter-bash-0.23.1.tar.gz 542859 BLAKE2B fbcc788a241b740e128d1ac7dac6292411121c67239c2656a74514f016b89882e4bd6371fc287b9d94b4b78f2b8e968ba3029de67e1c307e99ecce95bfe83dc5 SHA512 1ab59105a5f0a74a17b415420fb8da072cdd2765f776a4f1b0297ca4a4637055d625753c502b96928e9cdf56fd9f175589da4acdeb338daa9113df94c4aa6581 DIST tree-sitter-bash-0.23.2.tar.gz 544189 BLAKE2B 71e5baa9f51ddb41324be09355fbcc62d559e7eee7c473d190842ddb72d18915f05e4b87d7443119e10edb365a01992d4622710190c33e9ebf2ce47ec4d95502 SHA512 522ca01f823103283a3edcba6d400e118e7ddd452e1b94378feb7c5b3a708b90d55f98c65a4c0af9c89d70878ad595c7f1bbf41197a5367423f894b4fd37bff0 +DIST tree-sitter-bash-0.23.3.tar.gz 544232 BLAKE2B a7f2b8e73fcf99f29771e2952b10cd5679ee35cd1b98a2f59acf6e6110d4aafc900b4b5d53d43f1cc78dbdfc3ca376b1ff34bec79cffd81efbb1b8950efc96c0 SHA512 4882f12aed6dc73f15c0452af38ad400ab0fe386eb33aa61b3c7133fc86d48fff4f0a29302cb5c3ced55eddb2fd65d39414585833cad59a02e98417ef5aac1ba EBUILD tree-sitter-bash-0.21.0-r1.ebuild 388 BLAKE2B 4a5a331b804450eeac880ee7017a1dea881451d8c940b324372b88c6fd7dec593bc0308eb81c9314b032f78f3286ca5ef92e39d9b89e56f2a4ad052fc87b9a64 SHA512 9c0b0b3c14443099f4c21de3c2541891d408b683323c96b696156bf55d288054e33eac247c802191085df33501ed5e763a5fef179a4be17424d167240b783fc0 EBUILD tree-sitter-bash-0.23.1.ebuild 388 BLAKE2B 4a5a331b804450eeac880ee7017a1dea881451d8c940b324372b88c6fd7dec593bc0308eb81c9314b032f78f3286ca5ef92e39d9b89e56f2a4ad052fc87b9a64 SHA512 9c0b0b3c14443099f4c21de3c2541891d408b683323c96b696156bf55d288054e33eac247c802191085df33501ed5e763a5fef179a4be17424d167240b783fc0 EBUILD tree-sitter-bash-0.23.2.ebuild 396 BLAKE2B 8ea6b43a01f09ce1f84ffe2f9ddddbde2c6d65722918b725add5a060626cf50a44ee37cab18a0a57e56aa96aec0dc2ea7a3c3ff4736223e35c2168cf14ef1942 SHA512 f6a6fdb85de538d4371d5138ceb4fc900675acd3641d2b1492b328a6237efcf5d65fcbcc2516383ae004d616c9aadb98258850451fe0b43fd2ef5587c01aa083 +EBUILD tree-sitter-bash-0.23.3.ebuild 396 BLAKE2B a17a219bd307ff90ca10ae0eb9feae4aaaadd585406c595a4169c62952b85bd332ef572158e105c1aadb0fcb3150770968928f628b4a74f2269e27f1624b3df0 SHA512 8cd378d6e4e497a2cad8e80b63d3964927e88e34260a583613d3899e580a10db35ced55e59c58753f6e36e8d0b318e113c57c1f83c9ff9773b96ff6055638ebe MISC metadata.xml 444 BLAKE2B 5a79ed071d8acb28777a9f255c6d7e3dd8317bb2c2502423925764d0b170aa7b8fdfed40d505986986b3bb5d573efd2a300bf3f76b34fccfd5a8380b03fdd1b6 SHA512 0fcdb129e5f90034a21d041a77f2c1ec480a05401def273c074ed31c078cebdee08eb41282b8bb16bc17d125e610b5c1e3348e219a4c108712b6b015a2649d63 diff --git a/dev-libs/tree-sitter-bash/tree-sitter-bash-0.23.3.ebuild b/dev-libs/tree-sitter-bash/tree-sitter-bash-0.23.3.ebuild new file mode 100644 index 000000000000..e066f715a0ca --- /dev/null +++ b/dev-libs/tree-sitter-bash/tree-sitter-bash-0.23.3.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="Bash grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-bash" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos" diff --git a/dev-libs/tree-sitter-c/Manifest b/dev-libs/tree-sitter-c/Manifest index 01c4916eb7f9..611f34d6d3f9 100644 --- a/dev-libs/tree-sitter-c/Manifest +++ b/dev-libs/tree-sitter-c/Manifest @@ -1,7 +1,15 @@ DIST tree-sitter-c-0.21.4.tar.gz 362462 BLAKE2B d3c37bc04e344df7b13d06e941cdc3d0dc6fa871ad02c090fb786086cd561429cb439335a7ea2745746b4e0e4ba938ed07e8fccb9313a2af0cee63b18dd89bb4 SHA512 941117c22b2a1dd46b7e8a9a0552fc3d28d21c22c44687dc67487ab7b136f8f5fcb05c8dc1429e4c56f619c52f7496ba6e07280751e49d8c5e2d36e2a807e19b DIST tree-sitter-c-0.23.0.tar.gz 370699 BLAKE2B 261b7ef1e7ebe1dc49780a95679b921bb7c67cfac6f0eba057199c0e3c9e833a40cc871fdc170ac4689aa19f65feed3c122cf5a6681ec22c619e1129eb26cae8 SHA512 9e4b453c64cc3ce8e6d060ceda1fa579e0339bbddcef7192c3f8bc0cddd6df76286d126e3e3cba476cc1f98d7f84e8b7b896837da8ac0646e3d6f95f6c78bccb DIST tree-sitter-c-0.23.1.tar.gz 379330 BLAKE2B d973ed8463a3d72189084e232e2135394da9207f92a04d1c1a3e46f3a11e038b16d579c9e5c3bc846a650add69bfc786bb8c658f4f303e289d9f47dd304c1962 SHA512 75b89ef3dd4482b56667be63f18f1d7f45ed87a76f1c8c31503e4379fb175d6113df9e82eb7c8a77363cdfeed6f3fcc99ed3208bd083b4b281251759a0bbdca1 +DIST tree-sitter-c-0.23.2.tar.gz 380075 BLAKE2B dce9237481453b84616497a09362f2a1eda85a56c1e0265249e2798a7caff6bca5dfba36e87a8a8ff09b885309d608e1f9f3ebcdfd95626718efd147063d325f SHA512 e94baaf901c970104fe378f42490903ded63f2eb562f51ac6303912809f7d0f79191be72c0b9149b9a4738d0855439e34d9ff715a3fb4dbe7b0d5d464ccd1cad +DIST tree-sitter-c-0.23.3.tar.gz 380064 BLAKE2B c508e120fea033d7ce5b2585fce07288b9b9b02d80089a323c6eaba76bee6446f803c17a4efdecd78a2230848aea2cb187cc1b94aa4acadb71f03aa601f66ddf SHA512 dadeae50a130f7729ffcd0e1b5a26d956d8b6a08524f9b4652a9a91cb1d6e7da3e180d19a37aa60de2d7ffe4509d36a72e8b1d43d4b1482a6487109b2a5414b2 +DIST tree-sitter-c-0.23.4.tar.gz 380057 BLAKE2B 96e6c8b675546d53afa52798f3a9e7c94ea13bd71771e0d369918067437c52c009e2f4d5116e93117370670e3c6c88ac3479189556862855edae4cfd7631e297 SHA512 4f4f756ce37516c030c37eef0773ee51b4045b499b764126ca93327de3526a0d3677691984916f2e59968c3239bba87a3a77fdb769d66f1425d095a0efee6cc8 +DIST tree-sitter-c-0.23.5.tar.gz 378339 BLAKE2B 96bfe2fdab52aff98285e167331db9f911f8a973c0198188e19f2e20f30dacd7f1ff3dd553bb7a16a0579eb711fe74e4b0a97febc56b6dc9aecdd78fee131b6e SHA512 76022e55c613901e6c58d08e425aa0d527027d0130ce6bed2c5f83cd9056a8bdfef7af73ccd5df056b03515a9a733d64759b37766ccaa994f757c8e5c51b9a74 EBUILD tree-sitter-c-0.21.4.ebuild 337 BLAKE2B 3cb2a28216b2f4735dcd9cf8bd6366e8c8f36b20e95370c4b162bf57e04abeb860a8898cd4aca7e5d7246620db9b38beb566945e24fde2087d2cadf768fe9443 SHA512 d8486241fa811ab83fbab615a578e33be45b09692bb8dfce988950e0579fd5cb06cda256daf56886c6fc31bfbacf0b5752432c4df271cd7917d7d3a64e66b414 EBUILD tree-sitter-c-0.23.0.ebuild 337 BLAKE2B 3cb2a28216b2f4735dcd9cf8bd6366e8c8f36b20e95370c4b162bf57e04abeb860a8898cd4aca7e5d7246620db9b38beb566945e24fde2087d2cadf768fe9443 SHA512 d8486241fa811ab83fbab615a578e33be45b09692bb8dfce988950e0579fd5cb06cda256daf56886c6fc31bfbacf0b5752432c4df271cd7917d7d3a64e66b414 EBUILD tree-sitter-c-0.23.1.ebuild 340 BLAKE2B 30cf3cd08becf30034b622077af5ce8c5d209f2bb19567ef1b9d9f6f36f800c147c360dde0aa0107110be8bf47fac129551914c1ba4ea0037b3f7d2096929617 SHA512 d0af167af9b75b2d7d7b52e34b2565410c753ffd6f2fec212386873a0eae33d74d547df87bbe17c3fb2c94e6b3272fce10be5c886723bd76a5392998c7574454 +EBUILD tree-sitter-c-0.23.2.ebuild 340 BLAKE2B 86fa14382448c2fe2bd677bc01f30d33af2936e01868af09b2a05418b68236b2f6a49b65368ab41fb7e3986f5d6612ff7760df0cd119baef7214a9de9f4f6b81 SHA512 4b46a919634fbe12c46fbca6a3628672238d46e551b17bd494eb9ae97c1bf1e7f152218cde9956eb8d1956d4922c6c8c9c5b9927c56399f502b63918d68da93d +EBUILD tree-sitter-c-0.23.3.ebuild 340 BLAKE2B 86fa14382448c2fe2bd677bc01f30d33af2936e01868af09b2a05418b68236b2f6a49b65368ab41fb7e3986f5d6612ff7760df0cd119baef7214a9de9f4f6b81 SHA512 4b46a919634fbe12c46fbca6a3628672238d46e551b17bd494eb9ae97c1bf1e7f152218cde9956eb8d1956d4922c6c8c9c5b9927c56399f502b63918d68da93d +EBUILD tree-sitter-c-0.23.4.ebuild 340 BLAKE2B 86fa14382448c2fe2bd677bc01f30d33af2936e01868af09b2a05418b68236b2f6a49b65368ab41fb7e3986f5d6612ff7760df0cd119baef7214a9de9f4f6b81 SHA512 4b46a919634fbe12c46fbca6a3628672238d46e551b17bd494eb9ae97c1bf1e7f152218cde9956eb8d1956d4922c6c8c9c5b9927c56399f502b63918d68da93d +EBUILD tree-sitter-c-0.23.5.ebuild 340 BLAKE2B 86fa14382448c2fe2bd677bc01f30d33af2936e01868af09b2a05418b68236b2f6a49b65368ab41fb7e3986f5d6612ff7760df0cd119baef7214a9de9f4f6b81 SHA512 4b46a919634fbe12c46fbca6a3628672238d46e551b17bd494eb9ae97c1bf1e7f152218cde9956eb8d1956d4922c6c8c9c5b9927c56399f502b63918d68da93d MISC metadata.xml 338 BLAKE2B 63a1d0c3a464e26c64f0928e3e18369bb58dadf0046be1b1af619954230ce17c30113648226542da7c9db94c3ffb6539f8c07252f3eb4872528a090bf9182ca4 SHA512 7da1caca88d1e8afa4268c903aacf1227781a3238157994777ac762efc6cb8652fffd716d23ef124dea8e0980590d7af7d62d7d3853694e3a0630f514f4eb277 diff --git a/dev-libs/tree-sitter-c/tree-sitter-c-0.23.2.ebuild b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.2.ebuild new file mode 100644 index 000000000000..cc8f418cfc29 --- /dev/null +++ b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.2.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="C grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-c" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" diff --git a/dev-libs/tree-sitter-c/tree-sitter-c-0.23.3.ebuild b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.3.ebuild new file mode 100644 index 000000000000..cc8f418cfc29 --- /dev/null +++ b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.3.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="C grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-c" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" diff --git a/dev-libs/tree-sitter-c/tree-sitter-c-0.23.4.ebuild b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.4.ebuild new file mode 100644 index 000000000000..cc8f418cfc29 --- /dev/null +++ b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.4.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="C grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-c" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" diff --git a/dev-libs/tree-sitter-c/tree-sitter-c-0.23.5.ebuild b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.5.ebuild new file mode 100644 index 000000000000..cc8f418cfc29 --- /dev/null +++ b/dev-libs/tree-sitter-c/tree-sitter-c-0.23.5.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="C grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-c" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" diff --git a/dev-libs/tree-sitter-css/Manifest b/dev-libs/tree-sitter-css/Manifest index 7ca92178ddd5..048dc7911476 100644 --- a/dev-libs/tree-sitter-css/Manifest +++ b/dev-libs/tree-sitter-css/Manifest @@ -1,4 +1,6 @@ AUX tree-sitter-css-0.20.0-test-selector.patch 389 BLAKE2B cf0243812bc999a62d2190ebd177a83018af48f81fced8303372301c394da70aa5139a6027f07a72b8c74f8b6c1f53b603b23800e078cb1ad34351fba84a959b SHA512 a169364c2ba5f420a1ca4e1f06d39eb6440230dfb0f2a4fee8926747a2d74cbb3140d037d67f43111d30625186afcc3a010b16fea27eecd530f54212cd986f93 DIST tree-sitter-css-0.23.0.tar.gz 118618 BLAKE2B f47f345a5892fa98b44466fa667d25dfe3ae5ec6eb974e1a4751bba733a985c1eb2dfc69f974076709c7b3e0f5024fc3ced655a74455b822665c72879abfbb3c SHA512 a78e18bb6036cd9183525671decd45911887db6acf449d4965e20ab1607df616bfa028d5d84a33ba2b87757e16b4c0dd672c8981a53bf286d81b8dc412512725 +DIST tree-sitter-css-0.23.2.tar.gz 123495 BLAKE2B 0d381fe352eba5165fbec17221d6b9576ebca110c98fa0a5f7578345eba8c47e677db0d68874106ef63563f2fd02142237dce86230043df3d6a1099fba92619c SHA512 b013d8c14a64c1383563915976b1f5e9ec16a531c83ec35c8be36193fe50f5546b95bf1871e4abf631af5815b655e9c40c99db586cab8c156110eb33fa61ec18 EBUILD tree-sitter-css-0.23.0.ebuild 448 BLAKE2B da7858f5295d590bca1921003f245690cdb133bc7163f0cd978e99b26034b8f61398c9ccedee6e7dfc78e8dceefdd857a214c60e6d0455260c83d22fe20ae83b SHA512 f52308682ec5f8d0528db18e5bcc6fac8b4c24dd5d05ebcf167aa718a4bf46cfebf71d1af7a0804b077bdbf5defa865ea1ec5f8152441119441782f06d25e1cb +EBUILD tree-sitter-css-0.23.2.ebuild 449 BLAKE2B 26d224794378a46ad81e912ff81b9462f3296f771e73598fc3d5f3e2c8bb4174aa100849a009451b59a4584b3a0a9dd6d99176802562cd929bc2c6ab17f8bf4b SHA512 6a1ffbbc255c853c93f63309f294e83358f3f2d437cd4352ace405be27f67769dca7153d72b871a5ec069e02203642f50d8994e38c21a0b4a04cbed130712e96 MISC metadata.xml 340 BLAKE2B a2906ecbfa48a374d76ee5b6c93677162f64c1f0657f1cb687b9113ab13248bc1a65db2614b0870ed9361ba9ab77619346b5993ba1ca6d48d69b22f98d860cfb SHA512 f4a51bcd64582a787d5bb7775889d21642391c6d76882a23fdc8ff4d3c4d14170bfa7e809a5c0bfa711dfa4ee3e6fc8db23bc11d6cd3e33b4e1235197fd5aff7 diff --git a/dev-libs/tree-sitter-css/tree-sitter-css-0.23.2.ebuild b/dev-libs/tree-sitter-css/tree-sitter-css-0.23.2.ebuild new file mode 100644 index 000000000000..695f74608861 --- /dev/null +++ b/dev-libs/tree-sitter-css/tree-sitter-css-0.23.2.ebuild @@ -0,0 +1,19 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit tree-sitter-grammar + +DESCRIPTION="CSS grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-css" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +PATCHES=( + # https://bugs.gentoo.org/928010 + # Test name beginning with :: is incompatible with tree-sitter >0.22 + "${FILESDIR}"/${PN}-0.20.0-test-selector.patch +) diff --git a/dev-libs/tree-sitter-go/Manifest b/dev-libs/tree-sitter-go/Manifest index 0eb1dac2b42e..85a3357943fd 100644 --- a/dev-libs/tree-sitter-go/Manifest +++ b/dev-libs/tree-sitter-go/Manifest @@ -1,3 +1,5 @@ DIST tree-sitter-go-0.23.1.tar.gz 202860 BLAKE2B 2b23ae0e186bc8e7e1d266cbfa616f5d377bd3f50f26d7a9a5bd4f62fe7a361199d4a5156b319d78f08d35810661076fb5ac56459d62c73f34a383f10b418126 SHA512 843bd5a462105f840f266f4c3250f06c0557fe6a875c886f3dd30ba9f0716f7962ac6a1a900bd340d675a9ed93970970312a68e4597ed3a1f61d9094188d9f07 +DIST tree-sitter-go-0.23.4.tar.gz 205831 BLAKE2B 2bd47cd92cc233b0905beb521dfeae59e628b432f5bf6737f648b34b825557a53179fed19db36387509c2cc0e7c052a1bf9d7bf8b9bce6d6271ef4bb9fa7836f SHA512 94a930b848003604dfb0e947f37b622fea31dc14bc72bc87948c67adfb7857261d0c7701592d59a5d2475e2c8bed6c7ed363981f9f45f6868b7c20ae10368485 EBUILD tree-sitter-go-0.23.1.ebuild 288 BLAKE2B c11c35038ccbe85e1714b21fcabf05c86b11700c1ee7fe736e47dce5dd4fecca0632098b88ee9cdc6627d076e6005332b71246b4df2c14bdf0ae00baada328d8 SHA512 45a567ff581875328a08acabc06fd75f86742830c4e412ad957288ba74a085774b375a0d7201343d7678f2e7a3add45100d56024f8fbde250b160c2371e3993f +EBUILD tree-sitter-go-0.23.4.ebuild 289 BLAKE2B 2a66c2cadd90241dac85712774cd41393531532d963b001aca7d9ebe62d6ab2588b73866d99f203101823437e4c3e5f19329ab2c33eaa47b7801f16b3a1b9d0b SHA512 619e56ba958bf16d6e7f8294b55640ffe09c5c15884d1a975ec6454b620d3e338ccefe7bd71828b11e0ca508675d2be6eb6450df82ea74e54e85f4a79861f97f MISC metadata.xml 339 BLAKE2B 9dc9dea694a2bfa94e190710b4e0c049dd95a636c76e32c6ad33046dbb9b2586e95a97b5358d67f800d6bd17e6ffa13463c1d57a186792a4aae8490699f68447 SHA512 395f9551bbb1fb57e6804f3752d3f752222a5b72cdaa7f9ba4b5ebbaaaa7c760189e1e58d104a2619ea49853856d5468c61f7520f434bdc875cb2d0c928a278c diff --git a/dev-libs/tree-sitter-go/tree-sitter-go-0.23.4.ebuild b/dev-libs/tree-sitter-go/tree-sitter-go-0.23.4.ebuild new file mode 100644 index 000000000000..3ce2d6f36ebb --- /dev/null +++ b/dev-libs/tree-sitter-go/tree-sitter-go-0.23.4.ebuild @@ -0,0 +1,13 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit tree-sitter-grammar + +DESCRIPTION="Go grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-go" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm64" diff --git a/dev-libs/tree-sitter-html/Manifest b/dev-libs/tree-sitter-html/Manifest index 1e21f96a0a28..213808049a09 100644 --- a/dev-libs/tree-sitter-html/Manifest +++ b/dev-libs/tree-sitter-html/Manifest @@ -1,5 +1,7 @@ DIST tree-sitter-html-0.20.3.tar.gz 45084 BLAKE2B fca267fca9ddfb0651b1e596f422d9093852e0b06391f192f9b525df379048d2e74fab472bd4ecfb0fa229ff34546d648a644bfc3f746e8ecb24ad8b4558419c SHA512 572cbdeca6c57d8fc389b8736acfb6a4ac2b3bd8704445ca7a006d75e0a3c37faa9abd75ead54d586e25b5550f72324c407271b451dd5ed94fafb09e8a6ad352 DIST tree-sitter-html-0.23.0.tar.gz 48671 BLAKE2B 2cb04036ec9c69a93a90e79eabbb7cf684d94c5c8bd6db8124ec54d2040acbf94b787e146d38902fa865851b1d7ce33d1510b036bb4e88180d29a498930d9719 SHA512 6ddbe3cf5c978f3a525c04fa82029eab522dee86b088375e3062ecaa70c2a9920b22c4e1021ca55c180c160919180c36f7e961acda3c8e7ea867214eb161f19a +DIST tree-sitter-html-0.23.2.tar.gz 49879 BLAKE2B 910c4bd2b9094063173d49dc9e08c8d6aed106a4844e3f558c0ffb12a0c7dafe0f887a4c4dc805ad92a605d32dfde15110e456cd36435f18d09b7e271dfa8a00 SHA512 71b8eb2907d372c55a3a28f1d4323fe86b7fcdc028e89ba471bbe49b3b3ca77cb84c9ef41543db44d24dc824625ec2da9767894267104c4386071334023b0f72 EBUILD tree-sitter-html-0.20.3.ebuild 371 BLAKE2B e0b4d143a0d37fdadee936993f2dc43af66d176aa201c718d77710fe950086c3380be658b7a5cc47a866e6a2bc22bb912ffae209eb46e79c66ee5d7ff534b551 SHA512 a5cbff755410a5b65f3d08156f537d3aa27b6667cc7a8646c0f722f939bb203b41623bf82d6207bb77895d72c399aefd6882514b95a5f3b8f45feba4f7076d82 EBUILD tree-sitter-html-0.23.0.ebuild 377 BLAKE2B 22053bc8b2f5dae137fc649332e61459f1b7cf213413a9faf8abb386f82ea43c50f1fdebb597ca7068010583a0b0af4ff8b36ec859352beaec68cc1c2f132ad2 SHA512 c44a6e71fadd6653eba2aec3282642b9c5a662b22882fb5feb31349df66873cbb807a3f3724e3d54671879fb0bd3813b6a87c56d6ed1a4c840e9482caaca1d3d +EBUILD tree-sitter-html-0.23.2.ebuild 385 BLAKE2B 1c893e7a248a1ccbb96e86089514907ffc78c16c6b4d0d1a5325ae8e55bb12b93869e358d469b5fffaafc423710382eef29648a939303d7a60f312e5cb910c97 SHA512 5fd7a371063e8a88cd09e6c6d2166c0d7983894c81344e76f4c06da3f3d12c44cfdecdcda3106ca8da457efffe386b257a33a58ccd19281192f8dc10b8d5d5af MISC metadata.xml 341 BLAKE2B 6c53dd005637c277649ecf2ba32e0407b0996a5cd5d8e08b5d9224611759d0b41d15d92aefc21626d2b22ea3f543c12b230be8d6761e2a13994518a4b279ed3c SHA512 f0d2b7d43a5c60bd9b2c0e53eac71dbd4911d6a328f9004323ed6b07b1c1ee8abaf8786a7a9b89ee3e605bed7aa11ec6fd396dc3d731f4d0f8844f31531d3f0c diff --git a/dev-libs/tree-sitter-html/tree-sitter-html-0.23.2.ebuild b/dev-libs/tree-sitter-html/tree-sitter-html-0.23.2.ebuild new file mode 100644 index 000000000000..ff8535800675 --- /dev/null +++ b/dev-libs/tree-sitter-html/tree-sitter-html-0.23.2.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="HTML grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-html" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" diff --git a/dev-libs/tree-sitter-javascript/Manifest b/dev-libs/tree-sitter-javascript/Manifest index b832ec799e5a..c06574151baa 100644 --- a/dev-libs/tree-sitter-javascript/Manifest +++ b/dev-libs/tree-sitter-javascript/Manifest @@ -1,5 +1,7 @@ DIST tree-sitter-javascript-0.21.0.tar.gz 367344 BLAKE2B 7698b918db7fb49bd73ee03757fa17d5f6c0adc14a279410e2bc924123b1a187e6018b534bc1d2b6cbc41e5f42f7b4b6541c65d4f70d6345dda31c719bf479c6 SHA512 c83d7525e3639e237b9f81cac38d0290a3257aa98dba62f079abfb234f3cbd3de23e0b275da85878d3ab4b8de03384dc4e8a8512641b17ff0aca2e3a722947a6 DIST tree-sitter-javascript-0.23.0.tar.gz 292398 BLAKE2B 6826656b359484a9d4edaf6ad4911002c74a6bc2735c38d1e6fc548ce95d45ef0e1add93d95c2b50a4d73f154d54470d14ca2c4ee8ca3cb47242426658d439ea SHA512 fd116f00a694b18f67143df57b80ce29547c5bebc64e02b11f5a2d0c1c01347b68a963830e5bad837856fab1437faddd14c09f63733b52cf00d44825451ca110 +DIST tree-sitter-javascript-0.23.1.tar.gz 290550 BLAKE2B ae706b657b328c726cb95ec4ddbdfdeeaae131a74930c0c90219aeb66ff0888863af145b80cf7623892e73529efcd6aad28666cf38d45f317a8277f80f198768 SHA512 85bf8850f6f9cd13e907b1536691c4e34ed7d4410460d6d848f211ebe3900ef589616bd4d4e04825b1c9f091eb6daa4dcb8772cff78aedd3b97c8251d2b9ceee EBUILD tree-sitter-javascript-0.21.0.ebuild 383 BLAKE2B b1ae71151c71f37d94e8245feee10124d75f2b7670516474e0b0d79c69bc6caeb717666664b7cd4dc8f585e2b8e6cb69913d84ba7963a6c74f9f4c6fa6795202 SHA512 1625fbefcaafee71f1c3cf6ae868b1cad7d64f7e0c2ca0880a089acd3a4c1223d20556cb7dc1576068f2f9841f427bac4c7c7b9d23ece18703ae08bce8f32471 EBUILD tree-sitter-javascript-0.23.0.ebuild 389 BLAKE2B f06809eee3d63ba7c081857ef1a3dd5c49b765a034e3b5c96d0e8f599e3a09d9e5eccc3e6e6e115873213a8074c8cc311d94d8d2c0a3f3263860e3872d24281a SHA512 b2109b511a3a8953441ae8752f88cfe612d6bd69461b1c9e0b6df4bdbd83003392f276daa9e2f9d91cf8333a06f27549d3dd79aa606fcc9a39227470b83134b6 +EBUILD tree-sitter-javascript-0.23.1.ebuild 397 BLAKE2B e9b97a19c179d79cc4330a25987c4a58a148a03be243d7c0c95c32209c8a7407bab37bc3a8d90d774b9d96665c6023c8e09f47a8166cf9ec8ab1e6b783fefad8 SHA512 f489382054ae428fc3b86a9bf2bb1e52d6000be87ac1cbed0686e3297e29a9b23b03c70a01c6e01a54498a495aee6c6305f9362a7ce81b2275e51dffc2886b77 MISC metadata.xml 347 BLAKE2B 7ccb60b46c03a8303d0b1a83e5c0da4140c670c2896c57f681a13e177252030b08cd8fe6cbf34a909e26b4cd948a14d17e020a9b3550ab3e5d2bc7e1bb8c893e SHA512 56d779a607b31e820075c5369e63a32a5d5740ddac678429eb60b4062de82d1a36fd86828024e247ae01aafc45467984f12cf857f2b866635c35645304168d66 diff --git a/dev-libs/tree-sitter-javascript/tree-sitter-javascript-0.23.1.ebuild b/dev-libs/tree-sitter-javascript/tree-sitter-javascript-0.23.1.ebuild new file mode 100644 index 000000000000..cb5e80c3902d --- /dev/null +++ b/dev-libs/tree-sitter-javascript/tree-sitter-javascript-0.23.1.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="JavaScript grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-javascript" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" diff --git a/dev-libs/tree-sitter-json/Manifest b/dev-libs/tree-sitter-json/Manifest index 2b4ff22e30bb..abd67a664742 100644 --- a/dev-libs/tree-sitter-json/Manifest +++ b/dev-libs/tree-sitter-json/Manifest @@ -1,5 +1,7 @@ DIST tree-sitter-json-0.21.0.tar.gz 34737 BLAKE2B 104229cd039b41fb79ccdab3b30e0e59a96a3aa46c060bf50cc093acfe4510150ad5caaf39f49045d478d9f67f863ff6289ba7ab59aaa27871ebb77ffc66a453 SHA512 37ee6a511e15eeb832c7a49d74d977724fecfe24943472047e2100aa18bf4e64f297b1a8e8e37f1d2223614dd9ceec038abd84b5f1fcc00bb67289b70de2ebd2 DIST tree-sitter-json-0.23.0.tar.gz 38503 BLAKE2B 5b196d82e7b1d10fd65e106a14754c04c64e9486ff97015d8f39028099c2ac609a8ca0dd353b88aae9945332ad672896629082c78a20041f77a57995d2c3f2b4 SHA512 eca9fad305306762b6095fac0e20915300760fbd45bb86d224bf8e6efa3c207418ab9cffa59bbfbb6018e5d1a8d9a2262b82a5687c261c1dfbf573a5e2d4df58 +DIST tree-sitter-json-0.24.8.tar.gz 39832 BLAKE2B dea4febb26ee0a5565ca0aaa69933c489d647a3c3bc5c99bd6b5280a4257871e2956b32b8efeab58cd4ef6d48093cea9241c472ccce2955d207a21dbb1da78a4 SHA512 0027c5d85498575bb10cfe739023b27b19e730be1921c52ef141948ad0d003e5318c8fa3a3440af86c53affa236834fa200cbf09790f0b85e5cdc264ad3e2f3e EBUILD tree-sitter-json-0.21.0.ebuild 371 BLAKE2B 859ffcac629eea8eaa18c89f238ec0966227c1cda46ce7ea46219e7d3af6cdd9a65bb515732f5157699d46d9ec3466b372fd6ccf523cce1f88e9dd93efc1588a SHA512 1ed021e9302f13126c0769e00e107aeb5782b6c4725b0a8d0c78ae1a204e9c4148f52503e9eada9e7574b0eb66d7281deb49e947ea4db2976de9eaf63fe79f9a EBUILD tree-sitter-json-0.23.0.ebuild 377 BLAKE2B 68d61db06b07aa9c9fa6fc1a72994b3e64eb86628373711bf4f55fab81a3784f0da9a0f446ac395abaf88a59b00c60225c75d41ab6e5c47a901d92f10b097dfe SHA512 ef0f9e871b5c1ffc3cfbce5491c29a45a6b77687e0e3349bf5debd1f05b6f4bc584cc9a2b4e2e4732fdab77aac004b2629d95c2e28ab1a957d64128f7368ecfe +EBUILD tree-sitter-json-0.24.8.ebuild 385 BLAKE2B a5a77aaa31a9c782088c428d887688701f1ba5782943fa6930e8f448aa905fcfd64d344958f3f8bc4c49b731b8ff7fcf61f1a7e6b116bfaf18217cefc2765f0c SHA512 481dfbd0930f081d802ce27de70d20efcd72565d4c790885e13543783d17882b06b3531558fba47a58b098e159d34a24c13031b4f9766fbc45da470b82ba7fd7 MISC metadata.xml 341 BLAKE2B 463a6e33220f59efd176484881442aabbf41357bd1e723b05ff3d0bae44f87ee6687e283d3080c0e95e46ad6ab0bd6799d33906d1e160b0ff155e35c0e1d9e34 SHA512 43753d864de59af1764b58dc69f94e91b0ef46f38a0b4ab8d8313f828598f2dc4a3156a3f330d4b2e293f1915fb63cf4c4dd54a5319114b4afc3824eb556494f diff --git a/dev-libs/tree-sitter-json/tree-sitter-json-0.24.8.ebuild b/dev-libs/tree-sitter-json/tree-sitter-json-0.24.8.ebuild new file mode 100644 index 000000000000..5836761f15f1 --- /dev/null +++ b/dev-libs/tree-sitter-json/tree-sitter-json-0.24.8.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="JSON grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-json" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" diff --git a/dev-libs/tree-sitter-python/Manifest b/dev-libs/tree-sitter-python/Manifest index c7d46868ade1..889f7d322ea2 100644 --- a/dev-libs/tree-sitter-python/Manifest +++ b/dev-libs/tree-sitter-python/Manifest @@ -1,5 +1,7 @@ DIST tree-sitter-python-0.21.0.tar.gz 275770 BLAKE2B c595476144931fbb08c404fd72d981ad8170333fcbec98cb4b7637932860dea3967abee712ce6afe1c6454ca02cd67e6c84e969ca0b5f593d6822ec1ee623afe SHA512 02410d235473a3e9a108b7820f146cdf8df5794814ff1e2ce8ccac1e38a727fa3e133bcac6718ade2a0d0f0965e879bb3cb9652d1d30f738969f458add53dc50 DIST tree-sitter-python-0.23.2.tar.gz 266482 BLAKE2B 1f91086f2ba5ab98eaac262745a7cd9d9965bb5fdc5e585cf1ce35e175eecd1ad0a462395351c1a5bfd82e89a09af469f217acdef0f69ac27d2748ec62ead831 SHA512 784e1157de886044bf0e3bfae1a12bc5fefc0316ca2e7d5cafef4c9cbdff7f2e6c376b838e0319dbb45eb51661bb9d30b8f8feba5b8575bd40858a3cdd6e58de +DIST tree-sitter-python-0.23.6.tar.gz 269613 BLAKE2B e032f5e7eb19e22449f8999a3a0440857cc5e8e3d6b2db9df87a0db9253495f9bbf85a6afee9308783627567a796de42c6abe58ae08a7dfb2087b0268ae2e6b9 SHA512 a29213758ebb9b603a1e989c85abe81aae2d69fcaa3dc8d4d373d5e82e1948a201a58981f2100ded46123ad5f7354277db5bbf3718af691d85b51fa81b724db3 EBUILD tree-sitter-python-0.21.0-r1.ebuild 375 BLAKE2B fa041fc30572d60e623e4aff437e906d20c6e605831e2029f79b17645da01d470d0e4a551dfb659bd79bf2e3d3fdf55b9aa0012c755cfee9bb987238205e3f54 SHA512 a52877be09b2a2a054674fd6b344268b71af9fbcf8bdbe0394113e95fc07190977600a0063dd94d53f69100cfd5c4f89050b6774384048ad8e8b802c3c7e71f2 EBUILD tree-sitter-python-0.23.2.ebuild 381 BLAKE2B 237048740d75dc786479340defed5281165655f269c1139f87f9219045e9af1359e6227de7ad3355b29a43be58217230ee0d9b5d3eab7408242121ecef1e9109 SHA512 5ea0c1a3f3524c9802afdf57f3831fd863bc2ab682843fe339e1f93ffa2d96ebbbc3095c640002bba71b72dddc6bffa0a079383c3015613d692468ad5a406254 +EBUILD tree-sitter-python-0.23.6.ebuild 389 BLAKE2B 152aba59a90697362286db0f6406e676810e9b041d6a58b69fafe3ea58170ea8db59b1db5ca295cee80001c93bcaa5cca6d7e59a04773c0a2252735e8288321e SHA512 a2b070b495ca773b81e03c82d2ce126bf7b73c059e08cc6be8b2c1d7a7a9a02094ac9fdf7a6516ecbba4cabeb43402b284d0ce8518f5cd73e9bdbf43205d4f87 MISC metadata.xml 343 BLAKE2B 9d1335446001e2b114ea7285e12eb48b073e6cd04be09981f70b838928fefe13ddc1f353bf0037a06fcbfb324fea5c4a357b188b739cf9a084322e55f84aa9fb SHA512 6583c9aa6795122737cf67be1e53e533f81272272ca48019db69abbbb723c4c6f482fab9ba25a3ea32bfaa3c4fac20c512ddd454c181a8d83b935adb154b459e diff --git a/dev-libs/tree-sitter-python/tree-sitter-python-0.23.6.ebuild b/dev-libs/tree-sitter-python/tree-sitter-python-0.23.6.ebuild new file mode 100644 index 000000000000..d0a783a1831a --- /dev/null +++ b/dev-libs/tree-sitter-python/tree-sitter-python-0.23.6.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="Python grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-python" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" diff --git a/dev-libs/tree-sitter-rust/Manifest b/dev-libs/tree-sitter-rust/Manifest index df48d580bc3f..f427eda17695 100644 --- a/dev-libs/tree-sitter-rust/Manifest +++ b/dev-libs/tree-sitter-rust/Manifest @@ -1,5 +1,7 @@ DIST tree-sitter-rust-0.21.2.tar.gz 433742 BLAKE2B d929baa23ef85bdf0b22ea1878699ef8b788ce43ebba93552f473fb695502d6e8bde5f378ef053702ecfaba2e859143d093f3f7b46e302160212eee89f6cbac6 SHA512 304b232683ded9973a94ec872401151a5900e3423c7bff966b3f5ec4a71122405fb3790f71f5fb445b8af72a31176349cb3ea8bc7d1b1a042ee574420472e19e DIST tree-sitter-rust-0.23.0.tar.gz 434858 BLAKE2B 05dd1878652ce9bbef5e4c5bb252b6bf1a55005e39042d9297cd070e6bff24c034b4ba61cd2645e44794ef01f3fb893b935d50f6754908c4a3a540af1cd90ed4 SHA512 2f683ea8c4c194c7dbdd1a1e78343ae908175d403c2cf2fd4d6ab318f7383a8fcb5760f6ae55ed7ed2123a93f4cf93912c759f2d39eb7d75c3e54cd89390c91a +DIST tree-sitter-rust-0.23.2.tar.gz 442917 BLAKE2B 6107b29b39d8a817bdbaeafaadf2c95c5cb5b7c290c1f7d826b3aafcf66a36ab12e18fa4958729d6dd3910ab799cad74f37a1e7dc070b93c5ba9224c4616a854 SHA512 0b1d65e417738d1199345314013ab886befd5680e4e83c2332fb50d713254f9a9a45c1ebe42bbf38305fd6121cfa755c18ad8e6e9498be306e90e80567b9d64d EBUILD tree-sitter-rust-0.21.2.ebuild 371 BLAKE2B 06778f064d99e8ee9b3f3f845e04cbb359599bf4b4b2940f7bf3be46cb36cfad3b061bae255efbcd911fae2cfc672e1c53910fa8c1173b78ac98a1f7482eb03d SHA512 43ef02b9484333f8f8be1b6b9a2b73526398ab3cde6c64d44d20651a03c74a8a89ddf1218e17494c91a1089c8515d4f0bf1858d214891229909a9b451a13a6bb EBUILD tree-sitter-rust-0.23.0.ebuild 377 BLAKE2B 71ab71d1edb573c142aaebaf44b03361d181a3a3eef62c97cbf4cb6543c64fdf41a4e0a2a4780a06a1cb6adc27a7a4c76842a84af1d98f16a3c45400c001a136 SHA512 19dec18ab8a8bd9aca025ecaeeb0a650664d018076e29244b46595a02fb19bd2ea80edf2f911f542823a669409159280a3b588c1cd6786d3f746aa4a4e305187 +EBUILD tree-sitter-rust-0.23.2.ebuild 385 BLAKE2B aab5341f02d0fd41dfe1a5650f5371070716d74f99c9992940bc0652b4fee46b92dfe2774d58e64eecbf2a4da26358389c06b96d5d1077fbd6fc2d6a19fc9308 SHA512 58b105c8a7f1d80ac995913fd4baf3ce7a72557c548c2693b1c9b4860aff3cc0ecf85503e29e0e5bd70b97bab5d9c193ede59e529e99aaa21ccb8f16d8407bc1 MISC metadata.xml 341 BLAKE2B 624d0c998266092a28fb506b00e3ef4c5a19e5f9f64d8b65f276635480f84ff098d101a2eea547fcff358538609d6822b0dafd5f4e381ea545eb453da7a5569e SHA512 b9e79fc80951938a560f8aca7292604faafd90fb99ccf7babd6ec5d4c9c02fc869f6f445b6891f6f3e094d41ef5f1c8d78e49bf1d91b0098f5c4468d21529dc0 diff --git a/dev-libs/tree-sitter-rust/tree-sitter-rust-0.23.2.ebuild b/dev-libs/tree-sitter-rust/tree-sitter-rust-0.23.2.ebuild new file mode 100644 index 000000000000..6ca5f76d1cf6 --- /dev/null +++ b/dev-libs/tree-sitter-rust/tree-sitter-rust-0.23.2.ebuild @@ -0,0 +1,15 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +TS_BINDINGS=( python ) + +inherit tree-sitter-grammar + +DESCRIPTION="Rust grammar for Tree-sitter" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter-rust" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" diff --git a/dev-libs/tree-sitter/Manifest b/dev-libs/tree-sitter/Manifest index 48585c6e4ff1..8bfde67eb8f3 100644 --- a/dev-libs/tree-sitter/Manifest +++ b/dev-libs/tree-sitter/Manifest @@ -3,9 +3,11 @@ DIST tree-sitter-0.22.6.tar.gz 3036954 BLAKE2B f109a738214882e63a721e8db384fa42a DIST tree-sitter-0.23.0.tar.gz 2977346 BLAKE2B e10846d5bd0a6aa1ecac362e2ab2ccf0f0bdb17c5fde796d8d65f8bc84a6e054d86c18a42e66e8effef865f95013c38ff6bd6ab5498a680ae172d7d57020604e SHA512 ab821be564ac7223cc4f9659c08922a78016af9dd3bd69166706fb6a889ac175ba2712a337a1303aceb8f44beaf58640a183e77dddc2c57e35da23079d0cd7b9 DIST tree-sitter-0.23.2.tar.gz 2980520 BLAKE2B 54b4ad96948fc3ec6142da998306f9385ce9107a7c330915bbb733c5886a0baa869a675602be99aa4a491c58a1121d30f654856ce0f2dee0eff4c4fcce370f24 SHA512 393fa62fe6bce51ff5498f977bbb357fd896aaf98d80f08d4faed6dcf8fd5d41012a7489816c662c1873595108c30d0c18d7721a535c69d9904b2220fef8f858 DIST tree-sitter-0.24.3.tar.gz 3018668 BLAKE2B fa703b6250e11274d0c5ebccb741cc41f521cc5e882383d8f891369540ce6b3b4b048eddb4d0c88186e57516e2d01977e76b42352f26759b3f6093a339cc6a11 SHA512 2d934c03b0ee71419654d03bf6e4ca759b4ef3217b8837fcaef64ee5b4bc8ea8298ff685ae4aaa477b615d11d538ff960b92529b11f13e936b85bad52e369cd3 +DIST tree-sitter-0.25.1.tar.gz 855493 BLAKE2B 6b9e4bf454c50e9b7341aa94d5131d333f45a0a047090ca04da71bfc54357568d0c098c6f7df65ee9d20ede7050537342fc394e281f4070f2d021a7e4134cedf SHA512 9861b18c7209e3c37d180a399bcae181cea46c4e58eff743ff6044ed0f2923ee838fa88993f1266272e07163748d5df1bef7d7dc6d8800e004e8af1227e489af EBUILD tree-sitter-0.22.6.ebuild 1241 BLAKE2B bc8ad59cee96fd6125e5e4ea523d28e70312ab86beaf1460c187dacbd03f1bcc5acffdc0ec45b5191045b446c81350fa3612baade638ec9a5c4434cd0a36793a SHA512 efe4fd10c292f2d64167c64227c5891408246b41b51ffd457c7329b7a98989186b9a8e341a36a4869362d614dce53b01ecd1b473a3f1ade1c54ba5af6e66d97f EBUILD tree-sitter-0.23.0.ebuild 1241 BLAKE2B bc8ad59cee96fd6125e5e4ea523d28e70312ab86beaf1460c187dacbd03f1bcc5acffdc0ec45b5191045b446c81350fa3612baade638ec9a5c4434cd0a36793a SHA512 efe4fd10c292f2d64167c64227c5891408246b41b51ffd457c7329b7a98989186b9a8e341a36a4869362d614dce53b01ecd1b473a3f1ade1c54ba5af6e66d97f EBUILD tree-sitter-0.23.2.ebuild 1249 BLAKE2B d681c9bf1fdb3c36d9835fa9d20a9872a3ecb88a5096df826e83a0c867511b4a223b248274371ba703e261baad625e79359b0788556b2433b11965e032a5c69b SHA512 25c3ba53544d06643e4361188995c2bb56e58b883954e13cc033b454c8d6a8ef2cbfde1142feb1418f00d55a9c8b2504d85cf70445bedeabbf7e0f08a1a48ff9 -EBUILD tree-sitter-0.24.3.ebuild 1249 BLAKE2B d681c9bf1fdb3c36d9835fa9d20a9872a3ecb88a5096df826e83a0c867511b4a223b248274371ba703e261baad625e79359b0788556b2433b11965e032a5c69b SHA512 25c3ba53544d06643e4361188995c2bb56e58b883954e13cc033b454c8d6a8ef2cbfde1142feb1418f00d55a9c8b2504d85cf70445bedeabbf7e0f08a1a48ff9 +EBUILD tree-sitter-0.24.3.ebuild 1243 BLAKE2B d16b7bae6d60e35be8c699565c15dbc11a312c9522876d3e81617688087153bad0c048df50fb5cc3394bc6be672c6add007d44ff7e9f0b90260efd9bd90f44b3 SHA512 d2cb13f2c0d5de2d7098889dfdb0f6eabea47a5a6aab03e508c5b855a3d1227a10879fba185f369e5d254f3def199daa50b4b0d5315faaba1099ea7a17492f49 +EBUILD tree-sitter-0.25.1.ebuild 1249 BLAKE2B 6818f5964e470f3891424f9f786006687d457b9434a8e4e2611d8195e3a987bb65597062e328d0edffc1b2649e8f746cf07373651fe6eabdc6ab7093ff79e729 SHA512 c44c6bea100e9bf7262871e4519aa23a65e9f9ac21581261d2d3ff7f799d4431ba1227c056f9518ed3f1939a9878c493785562bfb376d64f903379c2a7a59611 EBUILD tree-sitter-9999.ebuild 1243 BLAKE2B fab065045722c41fb421ed07e8c31025355d92505f8188f915a722a99eb5606f9a77fe11404d46a53c7d29a3601bdc3b4d3bce9cd9cad4a418d6d832d195ee53 SHA512 5c941e9beda07f69606c1e6ae6e1d519238e10274c4efa5220952725f3324e6d184509089d7a6993b7772e1ddc0d6d69696c5167687ba25cdc0b71bc2cd06d09 MISC metadata.xml 812 BLAKE2B 293a5ccd060986ec80222f3938637611a933b943d588072034cc4984b34dcff6830a071ebae4b70da1659da901e484cdf6f1a8680debb2ab68c7f35c1d494de7 SHA512 afbc5f7e9a06574eafa657dd84c22c5ddfb5d0c0721fcc98d73bce6ada1b6702a6818ddac5e0dfc32de7b764cbdbff266ccebe08168a05d409a07dc8156130d9 diff --git a/dev-libs/tree-sitter/tree-sitter-0.24.3.ebuild b/dev-libs/tree-sitter/tree-sitter-0.24.3.ebuild index 765a16ffae30..20863acffab5 100644 --- a/dev-libs/tree-sitter/tree-sitter-0.24.3.ebuild +++ b/dev-libs/tree-sitter/tree-sitter-0.24.3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -12,7 +12,7 @@ if [[ ${PV} == *9999* ]]; then EGIT_REPO_URI="https://github.com/${PN}/${PN}" else SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - 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" fi LICENSE="MIT" diff --git a/dev-libs/tree-sitter/tree-sitter-0.25.1.ebuild b/dev-libs/tree-sitter/tree-sitter-0.25.1.ebuild new file mode 100644 index 000000000000..7121e61d8794 --- /dev/null +++ b/dev-libs/tree-sitter/tree-sitter-0.25.1.ebuild @@ -0,0 +1,50 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +inherit optfeature toolchain-funcs + +DESCRIPTION="Tree-sitter is a parser generator tool and an incremental parsing library" +HOMEPAGE="https://github.com/tree-sitter/tree-sitter" + +if [[ ${PV} == *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/${PN}/${PN}" +else + SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos" +fi + +LICENSE="MIT" +# ABI is not stable. Revisit after tree-sitter-1.0. +# https://bugs.gentoo.org/930039 +# https://github.com/tree-sitter/tree-sitter/pull/3302 +SLOT="0/${PV}" +RESTRICT="test" # tests are for CLI and not the lib + +PATCHES=( + "${FILESDIR}/${PN}-0.22.2-no-static.patch" +) + +src_prepare() { + default + tc-export CC +} + +src_compile() { + emake \ + PREFIX="${EPREFIX}/usr" \ + LIBDIR="${EPREFIX}/usr/$(get_libdir)" \ + STRIP="" # bug 930020 +} + +src_install() { + emake DESTDIR="${D}" \ + PREFIX="${EPREFIX}/usr" \ + LIBDIR="${EPREFIX}/usr/$(get_libdir)" \ + install +} + +pkg_postinst() { + optfeature "building and testing grammars" dev-util/tree-sitter-cli +} diff --git a/dev-lisp/Manifest.gz b/dev-lisp/Manifest.gz index f4acfbee2718573c640ce94904e83245992ce8fa..95b0576049a26849c879f7f2253b371856f24a6a 100644 GIT binary patch literal 3374 zcmV+}4bk!+iwFP!00002|81CC&Rn^1$KSmQZD1T;tH?(gb`T?WUhEANSw;H;G&6#v zvBz0`eiWeY792njq`sVUSoOd5@8AFR{ktFIi@ANV-~RgJhj+O*dH1_Nz5nk&l;6G6 zm39qFT`adSiFS0%T>B|IiFc1vo7Y*68!yE;)^lmuvYyy0TS^V8!{_8y#d{=#YKYQEol4^>`TdcR7xTKfRSjXqC zHp{4aL{D1I(tM&6IVo9dk+U_KR>hBdJtnF0(20vg$-~A>JFhxN(G{V+CexF6Uu|{$ z&7a@@&maHu4}baVJ6rq1fBe~gdOPv?%e$HSV^*!~Qff7>akAOj7A5i6dGd};&s+B@ zbywBiM=qm_N~={%Na{A%>YX#xQhEHjRk|{Z>3p!5cqt|3=AXreR=0iDl5@_AVRLhz zZ?odmZRInj?40Hn;W18$6j{8c(oWP-n=3tz)Axa$9;rha6$C zk}FRnw&vQ$S}jFYm*lS9*@dqm7g#HWxJ_Yo%PpF9ExEgTmc4r(M@G*~ywp{i)C(); zn%+$P;-|H56XQOfds!)0tvzeB%zruM3iUd?tuf-v8NLp{imqdO-DgW$x?4Uy=TnkK zk2zhBnhW3)XZ*}Mt;($OveU#Yr#sZ$!GHnM(Imf2?6aTetn$d?F)WtQxLM0u_i8ZurnhEE(|SmxMX{V><1O?vA~;dJ98xj?JZZF%x4 zGS;psLA8=nmcgaI4Qrh0wQikLtA(+9kv4Y$8yvr+98l7sjc${fdp)i6u>{`bn!HtR zF0q^0%z&-}wx(YJw(o9(mkd~6+C<9){7-0q(BL0G2PW3YL26?5OIr!C1w?$bfO>s>uDG=Du5k zLsD72ZT>rx$6!Z3=eJ>53hUKM%~S3)YwJZtR`UW*l%Ga1*= zB$ib7R58stE#~X8BlFmats)>S3gAnP-ln6rsdUD4(u(8lWmq46`1o;uiXVRY>23e) z@q)76(qnMwO6`V*vSjBOXW#%*d!0u!$2^T^OEFWcTiD62t(~dtl!GpvFk$9`N%Vb+ zkL1?4#_`nCuod|(cK3wna7f#8gh&D;y}{2jAA;XBZ{A{C>Zu(B5Op+!9Z#u(4I`>gN*Jwae&RWLpZVt_u+zzX5?l3^!! zZ!59>I?XW%}UbBGn{4DDtJURV0&QOZIT zTPrJ<=y0m;yXsYdJ05;!>A7MSsn-Sbv|+fK)MoRHOy`ydZh>_cF2Qus`xK~ZEHYd+_a50e_ZJ`>1?uS2#d&aB3>4z)7=!U~kFhxC zlJYvSx6dD6@Kx$_T4zoEkRRaC^PhKnBaMm^XQ+ zp-~-ZCyu!t(Y!v}5Qy56S(@+)ifv0Ucqqp{XboB(d&z!GYe(Hsdm6jgdf_<9C$MFm z85S%QlQ|hI)iq282#UR_`@ji428k~sX{_l zSa4&ai5ii?U?U-|;eL8K-LMEOZvo(p14pug>LVFbPU#a00E0r3Xl&1jA^6(n%Dc^I z01`S8Es>(RNYEp%{+)#V`WnFUGk~E${oX}LZ}>VlAgD$`j<}A3AJQ;J1Q7TPG%9?g ztRg`ytE9t4*20xDw{A;QB9i32!NHBaW}UJ3x#msYeG@!@vZPoYQ&wd70j`**V`>%m zSWGn;33?}oYRUF~iVmX$r4zV+aRbY;#)RAD6n(SGT3@6MGSGhe6VO%plnDjTP z4*@>Q354Zq_98;}Rh5X(pPRR!w%ly&LP-m95EqcjgAyHX+CnYJi{L#=xxQF1YSK~K zW3<&sBpKxP=zbf-h`R(LAEp*0xAC0TcO zV<8mR>04@8Nv)Ii>?Cg8=R3S_G_1I zq!(PB?joFweTnDsbt4t8Jsn0T0_NZp&siPH(Ay86zkCY&@$+kHebUj3bXkf03Bd}r z(#?74<8>lslY&L&JBQXR%TkTa0p_Hf@c0BN>^Z1mx7GSlC*V_uM#>p}khYMcs=yAD zVB2UA(uHWywzi*ZsP)^>4#`Ay9$cH_q_tq2!X}H=+GG_%Tv`+EciK2f2C(`j9U`g# zn92aaNqRgKJR!@{Js0;21EYgTYl8$tJ*_zRNQS%Jf_yrij2`f!^?&;wVEXh$5~dn? ziF<7zQ~dCNVEi|Nh_@6(wpxU>3br0u7V3{{=8)ZTqg{%U#}ixCol%Z zXt)Vorw$U^$UV#nRQWA+)I~x(rcP~Yi&4wI9oU!ByQxH!V(I}elAWHj`uo2=#;4C8 zW533(CnG7@*m~M13S@(pY<^N*tAW-+bD%N_c>#0~iW4bnW8=&ecLQNMQG6yvtR`2m zMId1ywG)^V2{9>0ksu}3a>GArU2djs(mKZ}@?d1LtZal82Xr0&a8U@5E<-4H}``S40BH97CNfwF@KSkNX zb6}r-{`}AQ@CvY;o)r?WLl814l=LzkjT9h|PoPkSD=Jk1y&eM=k>3$;UCQ9@FD01r zJ|MbMJSidg5bn5gCx9Oc$T~uJyq*QLFx5Das^oo(5(q49lF=SbNN`FgvL9MS5YEok z{$_3?kCJCy>0rE?4<<0oDgBedCtEEan1behaus0Xg1!j;7 zu_*YKm@u2n0ydEsLd`Vt2rm+tG032V++Wq?COG66$pQngbf@z5S4iSx`8F+viudo^ zu(=_AV4JsT$P1yTn|EUSzMU4;_T@4N4L9IXv>c;)uh*I{P)|XFj|9GN)rXmDE^LY|YexdWDkabPzwP zJQszgq*vUKjQvPqdYgEm0rnB-BfbHA0Z6`Dc5_LmmF}9Fu)3OV#*XQj{2-nZ`*{KW z;TNe~zC{k&Y@VHfkAb6o1jnq@^?sd*RTD6YJ@=O$g_`!9-7jxHe|$}>&sl-=v+SxY zWhaQh)Rrc8xH7&RM#bQ0=oO+sprVNp9?~KHPzVXhwuFqdV!5e7Fk7J%7_CSiG5?gK#@f{2hi>c zk~UuF>HSfFW=609L6FY$>26m2{?32C|LgmAKkhFc{>A^}*B?K;%dP6W-~G?~|NedX z-8-9U$@bLLbKS1H9_u4ZJ7pz}7W+sI8RdlYqur0UTx#}gC)cKDx*mR!-_%vO+|qKf zb^7UY)=tM)j2NONJoUVD9g@!MbCxwqy!*=^-gCou5-ZwS%X^e0Y45z$Tg{1EM%lLK ziLt~->5}_y$;z3Q&n`tzN?z;E*{cp0jT0fqH3=`BxXCWLdmm}#DWeygds~y_b`qbP z&t|{*)B8XF@xOlmm%qOAxjy{%PyW-}*`L3>8>u~JRm&c zS*&K^jnwCu>v)w?%xr3I)`DHc?0SJU)7J2ztZs(y>di`SVUcyMmiy7(G7~Q{OI5kB z3ho)zEiQg){WdY46SHfV5Z5FBAJ5=Q*p~bAJqrB~%_(v&ovZ z?c!lva7t+aXwH*VKyFDjTFJFKf6bPPLumNK0lH_79TJDRPOI8#n+B&Vm*fJiO7j^h zM77T)DM7W8Qr6C`z74A%36W)EnD};fuUf|{V1whAlsA+NXk*KD!13m4aiA3lCupY{*G{Pebd zj{SnNR?}l}=!!JwEm?Bx6l3E6Dow_*oOs7-Qqmr&%2IZ+?(>JS)9rw1z=V+tCehX@ z!CAd>kHa`q_qp?3>}mN(247OhmEP zGIQAtPRY8fo@IvM;b)YV1p=fd6XpTq6_(5gct)lnK*uex&cZF2E_$Cfs+x)Q6+ z!2SheBimzQ2u_0)5mFRXzS z;IZU&T0j5)FQ4{n3@eED6JJD(eyIZIh&4R6;ratqBPVDMjrI2X(%-CdfphYCa6bZaHu@T!uHiRJ{0cpnt8Ti8}HHO7?nktZx72+P8 za-sADWY~xuRNT)lr)!anyiWj(_n^F940R+y=qYVL0bo!_5|!;aF(i+&xbv!GR{#l} zh?Ypvm?Y?)v5D7-{rVcfo;Hae?slJ|q&Iw>2M|)_lC^N<%%khHl(3$>7C5-E*S#_JHs-j=yDfqTP}a1u&q6xa$EfBWr|p~s_n1sI zISG2DfNXfh*)VxFJn?=Sk&txk0pF`?#4bD{rB24^wntYWh!T6Li|v9#JQK8LQb)y+ z@J->;Gut8xAjy5F`7){>fB7C*+cwFAz~67|0qL|gS{xnWIj!$VDB7MmVpB|NM_Ca?m_ff%N=K;pjRdGUMI>V+ z823&|yJZeP05&;4ja!u#a*+UNhHG8hM5J<{KPoAMC}W8Q12{8vGVs?Zj8lbh#+Dyt z2rJ{=yB#Uu8n0U9K7c$cl`1Os2JdT^1<`ggva0 z^mr+FBHUuLnoKGIqdifAIthqaEjV{ij=SB0d>WmM9`K^|fBPO__Vh&(ra5_uXDuL8 z;_!lC|5o9(^G!2Bf*~v-)<#tCBydD>Py?ZBhg@Rdi|&M4ReJT>#{AJBrW%015;GU! z2yrG$3fDcD=gybpt*Wqv0lW zojOQtBlj>TP!+dRP!~(187yj3os3%7?Z7dO-c2QL_$o)QFN0MrQGn3T9=!tE5(ZA6n!uPCmyKvc#xyh;Iap?p^qVqF^tUPLpkPERW z_?DP3o6HI}krzVEaPkO0Brs!;n-X%rRnwc`kYgkZ48YQr%GYlpiI3&mv=}PhPbfus zNDGycULXZ^<9=^MDSJ-q%cr;hd-D%J{OyzfC}~ay@uSLf zQ)o(h#SO{Wj}&INi5D7R>l=Naq~yH3Qa37Ev5`%RBQO@Germ$#okz9!b^tU&siepQyT zvx&gema2ZZGrqi?iowy)D@1`nMH3@Dq(l6n5E9O($<1nf7zBv>^)4oh`krAG0czU!pxRky!V8FG?Z-ysA7!eDU38^i`Zxf^| z%@~mV+@j!45+Q(~x_A$h)=ih-iUnq~F<_#c5llir*Q&S7o4 z@0Y_)BI~8={LTi60q|){s4RU)kXfl{Zwj8N>}Mez*Z?a-{yUuYe?A=JYMI})QEyu| z86Udi=oTUYJnU&`cj`Q@8^qv|D5|jXjygp8CcB++G*pWPOxC+e(?;CaW%2xb zPp(l%=2D$c25klde**6BEZvx3!H}?ui#dTC|MupC1DZeV&m8#L!^^^U#Ie)5*v}ao zzd(!#4*TMTPDdvl4p}W}+u~E=d6S;k4GrCf8lr-y_5!nkC(Ay2> zksO?V769Gx`tP$z-4R&8HiJ*Z+ol9i>lUFED;l#$ik3yS1A6M2gJXXQRCdU0M2WNG z9c*8%6}z0ELa2n`p#I_ZF#@y=fj`y-JGYz?E$YNt&^Er*f_?tC*DDB+RquHU=+Lr; zY>(rzs`0SAe>NhfWpX#19WulF5#Y|DR7$6Fa-B+xC*f7SJX7m<==5A70KarRTOtUp z@QjMK&a*mx!3Io%0Bhxl+X2nU_j{fK%LRzBIdf`9{ zSY9|+U)ES+5DQSgF=k7?i5#^Zw%d95iJ9AiZ;25Pq^CyoglT@OREcvKI)n^Ygfdx1 zLtOJ%*%K|EamsRsM?wS=ToUf{Y{Wr8EpL7Z`SyTOjj?q;hp0DD3_G)RpKzSlhB0}F zfLDUfe?v-h)LtN~&r}*aqMQP^hJB~$v@)HDkv-sWoU6roaeB}fg2lDbawn(fIj893 zdj0zA=YMdreZmm^*U)uREAynJ~t*`D$w*oqD2O z-p|a*&`h+V-_Zrua3drHK*C&~IQ^V}s7{Y?%(IVw z=)m8 zf8pB;(ifidDhntPEX6X|Y}uUWw;jz!xOXgWofZIgC`W>{JD#Qp$o(C<=H-x-=+N4b zEHH!*SeV_d2_?c3Q$_-djD1$#L+dPv#&?~sMaVnsU-1Hma?%&-}(dBRr`aqYEV`RDO^LWFI-e~b{YOB9wG;d2gifWQ-+oHIfci4b#VPu=yf z)*JbX!~wg4^?9bAy}JZDIWM!o{G#)`F;TwXhC^qVI_{qz+}_&*#RnAuAINqhplo>A zdncAx0R%@b9pO|FpJuHrRspZJJtvObA*|IW|IMdg-JauW37nmFZHP$8P9Dr3e*@Y_ zw=4=K4SfU|_yH&DM6?*}rv_)4f@_7HUoVvaKd+y^e?!x}a)|3?wC!F0V>7IUb5xaQ z?mcz@9aO9Q{h2R2X`Y_y>a-c>XAWoIg0@csptl4#V%cJ-lV!IZ8%0}P?&>(9?zER} z11ExJda;5X3j6&IC~v5-!F^jze|R+ygNb)j^%?DWgZ-}Hv_sbI%9cuCsU`yM<%#pE z5o2_CF{)N2?VSxF6)$pePLEK4nIMdSNIMA=guotX??XU-zZ%ywJ>Wxc_e^L;|AQce_qLvW=`(yD4*Ht z@|B*f-tC<1EBv@>|6oQW>_PFS`~;{>Wj$&QdnR&1sQ2kG#fUib8jag_wBkXixujGO z+bMcCkT*0S*+Q}p;7-ZFZ{^0zt+Y`<4C`L0KIo=bD;DR{?! z&;adle$*zKz~p1@e_#VRM9=}X;8Z-dg%M`%Ft^LWMt6W75yjZ~=Fox@d9c|#b@w^F zGs!T`ALem9rHRmtl3$nW-(FME@9R5%BM6i7IijMccF4 zbUAjtte7|#um;hA+=3d*G^su$%#ZX@H#s?7Cs`n-Af0@JSh>PT$sP>E|d0VPd zpK;Xuv$f2Sx|GL@axT^z>-Vs+zr~V^kAy0i*86@OmLM{cQ$( zz)iZ|gpMS%0R@|I3A-=eQ!-heSr$NdIF9_X*i6nt97|>!9jY#s zERK0Id2$X6f5Un9s_y5Wpa2VV=)4hfXCcO(I`8gD?ddt=T~@ffgm0m2ky_6XrQozY zn>3v4^Ii{q{XUW=iS3tjEMf@H2ocW}Oc>fJWB0U|Dx9a&f1f{n>wjK9jn7|SuNjC2^0yf~ z)z&|U0r#Zow)ON*pocId&5jTh}_OB#YTAp%*csT^>`mjWOoD{6p4zT8PV*@vp6tcfY+*a(N~AE1t)J= zD}}Scf5+_Yh)<=t?JjND_f-O6!SqPIa!fU1n8b%(EQ(LI*HrUgw@sFE48G}Q(LU5r z=;iNR72yi$bLi-@hiKfuJ0{^#@Fe&bhqz@AVV>b_F+xudtELY-)GP?ukTK#+vab|~ zO>7?)*Cj~L6_Qs5p@*Ze*auL=o5L1b2hSMqeGWhG z)nvBPzjcrOY+bvbyY>2y!qv2)Xt&AD(LD^t84X_jDp2-dF3(Z$E!ntNhZRf2QW*mC!+mEURYEifVM8&9V_IEZ*3IsXN_{ zpte@Ec{k%}#bLgmIq1ZK_DoA!j?4^JJ$b7b4&WU)&YMJuhGz=tdL~)G_mXV(y#%vZ zp$ABI37(zs{HHtv%Pu?{%dzU$$vF#(woTQe5=`QHpbkZ3M;hV~(071ab@Ztnf3U%# zD#&iFHDngZf&0bLc8ES_7-i>o$Mhl^pSrJ~`fq<;{X@k`d0({WWObN7m@)`>91)3k z^76QxtOATa%G0K1uQpK8&dVh>e~-Sm8`fF~uZ@YUD;6@41MYr;U9-B`DmPm*D|UO- z)gAgvr1z?^_nuL&K;_f-bC{Vjf6D<_AKu^8JImc1D^k5_juom-v4d0Km);^+o_kdY zK#}FxPCMDF1!4U5l(eO^ms9*4t3X6^wBL5#S~SXn4%c<%KQ7w$ub$Wb{WG*j&F!cC zdD`q*oM@%Qw!{U*4(v8mKRa>zzHDfk#bn`7&cET{J$K*V_7(^}k^e~oy*2R3i) zfF)rBNRr<#f4#h-?sBNBlS1AQ->aRx9t=*8*&6_F?*W2H*%*3e(`ol-PW2S{?t)c;_uJt!n^&-VnI$%_PNZOyeq1%L<*CO% zxF#_Z?|~-RwhaW^R5Vl3?e0GER;yiH`JWJb#Yz0DcT?etnP8`j>qMNRTYbl_U{E1=5Hb0R3q9H-`vire<_bd*p99;>7JZn z{Nti|vCOB>>)Vg5-RY%Fb34LdvoX!NAjoTq1vIEor40OGc2wfAJ6Ry?C}65tY1LgaF$^h{VZp5ZHpF_VaMY-{Bo-*@|Ccg|&gs z3vrZ&m(h60=|mGJ2LEC0zWw%L%-ZY4!Wrj)9zJ3O3xVEr@93S*h0NC))t1;@Ws(-{ zd7tAf#RHF)y^pPWc~^~gz~uH^@?}nd6+fN03?H^yx4^l)ei%{>hEel1@LzWm- zuGOLrcr{*C^HytGMB1GgXK;%CJ8r zYUq;vR3j5~f0~nOAevAIJzzqe3AYCOZ3$Bw&i?RfO$-j!6P{@~uoj*eh@4K(f__bc zS;*NIMyc*w8Ok$sJVk4zp;6~`c{$T$L)TTYf1>e}!l%=#G~kKV%Pja@2iC)~U|Ykx zFNdjdkN0+91Dw}v@1whF)VLl)^rD#pa3ZG7G`15ce~&*d+Wa~`z}gE%!?WNy7U(~R zEna@I=95D2p8PpE47fzUt>RsmP;po;qR}a45%F1^Dm)?#*a17@wo1xsTO7@|4n${% z-5$jYZCM$I6B22+Gn?PeLT-nZMj+Np)cI+)#gS@6^WB!En$OM5UZ~>~(lsqv&0#p4 zq|E9R-JX)ED&I$@X5!hH`^2_!91!oG zcE#-c#$@G5o24b-nnT?V7cV|2>S$(b%sQBM=vF>KcVd2~-CB^_`QM%#weN%xekwW_ ze;If_Jv*{232WqWAu3)<|4h&(OnINV#q}9cFCz{o=5p$&BN8>=iV!ccsV7q0w&&XejFxsdzOu{qQ9yivrRtC%WG^L z3nua0Z(<6+OAZqf3|S8#runl`1_5TY8iUDj-AVW+AE;0vQU|?IzcET zU$Zo$uL-O3RK5*j5EcesoefsIpV5Sd;y!ov4laFU`R2fG-PK9Q|6t`_y|uifTy>6Y zd1@>*Dg3oO*-gUEaHtM4^@L(0aN8&rrB@iSM`0m`>}avWBC2OnQL+A8U@m?674PREvCDHIHEAWkmZAOQ*@yK@_P zX7(*z#X&e0xh12-bBkTG982;k%bh|v*p0e1x7pM_*#>~qs}Ldi5cpXC;H`h@zy1Yn z_3J;NZ4hgK+AGgfM^`@{f9Ab%2!j8P5g26;y+%I z%`}5d{B75B)h5e`LS0taIAq0(Vq(1=?qorAdB0G%BBJIqjd*R<>yDPHdeL%n7TvzQ zBiB1fqD^`Cs#8xjJikSw8|Fvwz4w+E$#we|hp>d<)!&N3bnD zoR$-pKiJwQ)(U9*aI9J0Gq=x^dcFIlGPb%3It7}sFnnjT=bPwuc>A3ttLptll=IGC zFObeTL-8CDcQk|d1znfZp@7di>Fg%?7XC@j? z4Mbvie@bh_c;V_^f9+bmd>hb6#X&fSwUgdN?>N{dq}WsTR3>h#HwOQkKvDulu(hYL zaM)nOcdh;L3h$dZ9ib9`V7otm`tvvEX8qE?{krUncqwTqFJl3D<8`v9m;@o#{yRr} z+=<8ozZ>j&)-L5&&HF&`Imf6XR253%~bstcsNMS_QnJ2l01TKKt z5jjqWKpn?n<%TPqe7)O~I|QtbAwfK`rl^oGUr$--Z;JCqLl zR%n(>=y_&DdIgeY=Mf2n-08ulE6K#LV#uLIe``ju$fJeo@K)PZ-arp>Xn%TW4B$y;;+j(SZ9jx``v3ahSwdc!;9ykP}v}RMpcY=!bXgC zb{|a9c4iNqyFUV1gyI}F0Gov>M1#`2K13V5yqw%F4Qp;qJuY?zhG~%k6vvXImA%{# zn)LhC-0&969MDjJ-_O-gUWLh%{b9wvf6q@}K2EfLQCHpu+r0FTUB+pVy>?-S0QYlJ z3ai2j1zC~T)ga^?U;TSQ071`;T(#*2^mR7UJv^DjS2t1Kx)QVu5ESe;wvt=!?zLJV z@nPBWdj)9nD#iJvir5?M$~xD!n^zFpEWhB6=Vei%cslNFR@`xfhj*8FM{0-ge|nQN z43zM3Ia>;9?G$D_<*=!-jak&r!(ofiMms^Q;@QWKxsN}wV&6V}`SnB7eQGb1tpM%K z`<$>XqRWMoIfvWf6`l;wDh-5X!!)1Kx`%tqGGzF+o!OXJ!n_cU&=Ly)8Vi%h^g3f8 zgJ*NDY;Z6@#?P(UEce;Z{x;K+x0Y^NAp-l&x!w5!J)A8*CC9f+KRL&%@= zA$DjM?-z1ra`f>%0r!^RVh`=|tPubJ>SAV@98$lWv{LrC1~T6Hh7MQ6WCPN5 zi}?FA#+Z!CtJ~BTqhkWCa%+~6V!*v18J~$W^$p(OrI*7nZZF+?2v7C0ddxq~qW&mn z#Q7XGvrXq91Chvf`Pv@p;DO-H?q~FxpDRAq=F>hyOcy!e(K4X}D6j;?3FKRbZ!5fa z=eF^~@;x(l|A9vE$?Uc1e;w$sUmmvM$)ZDN;ng6Y*R**39YAe6_UWXKW3p@>Kl3Pd zca1Dgn*nez)AEW95Qcxad7NjwNnF}-3#RvOjHH+6@a=8I?zkL#9PLpAi@d+uiu!E_ z>-`)?9xXXGHhb;6&E(F@B{mbl?ZUHr%_D|#A?{XQ$qv~#va_CXfAtfmsAW4htvK~M zd4s5-$=HGh`eDWPZ@+$+bXs33kgc$?mc@$mC9v^=F#lq;lvkN}iKM*+ad_hq*lc%( zx1c+XbvwDV5*NJ83-Sc~J}KB+zjXl1;oSUZ`qexiK71^&E_rKButoN*EG=0EXrZp9 z4*ixLR>(Y7%o?#ue@b%$I&cnXY^UhhS!OS^?NUqn3?L9Gi+8A*unIM9Ge)vUER4T( ze3;c3UQ}pxw>KVG8PLl7Va1+lA|GPt%P7U@-OHGJ>)xF^9Ycx8BQiK1W`uoO%VBe> z=YA{Pr;YNLM{!Pv1xzjZ@k&d8=X5Lu>TK3y+EUd=K^+8Vf7Yy7yj>WbecAv!yh3fg zjK0R5@wMN_7l-r4p1hzSf#7$Z=1aVg99GtYKNoNH=7Nn|)sdWPWrs`OtRL%w%w?+} z#1JJ%4n+r?qTiZ-@$|AGj9Y#NTp%#uML&jvFY7g{i!Hu~0nEczZEW7$Am9i_Iq%Ag zYEr9W_H-ukf9!jEX`;6Ydvlp@mFH<~mc>h_=a8^)@DEUfbOU9!<6d4!4_rInU{6aS zU~1XBB@0eC-n`P5sOY{-E8`BlFkMkb>dgV3DzT;B^@#ikY~yr%f9V51o{IiDKd`j&-bMjl5J@7| z$aMue_0tG4I|Y_n8?got;uxcNjA69oQUULV$Xm(%!+v7RdkM{hxR$V|Az(pxAkFM z=S$xSJhV+KC!9U+9b{Hr2Xtm}CMQ8VfYFZ1c`h`+Ok6koAodtZn&HRoSbmr&E(kOf7`kH=_whJ^r=qmj+)F?n)v!a(Xh60 z`F=A*TI2WpFm=1{cj$4av2--0&tK);o$$D78ht1~_0S{;k zWaNY1{N?kf`=|9~e(E2pMPD?hHR5(T&)^uu!$|?h28~i7;CHK1fc(QlznH9j^76BZ zf8jr~O&$6~baplB<;_hVG&k=Yu@0pvTfF!>dy@@+cCLc}fSW+pZ#)cw_g3TKoerun z>t`dM1Wq|jiSJJq$45BKt^{R7-J$amo-gOxc&?r<B}E$t zhF2dpds~i_P|VwdikXd6bMHT_+OMB}fBxn3`s;^r>hEwyh(;-uf=gR%LX^=~Z?BD! z3|cIeZ!bnfatE*2MSzayx@%LQ#^{sp)!^(!8SI{oeO{T>!C^SCER7FC(A-wx;_l8{ zI85Z5 z^R;$4m}z-RII&c_K)S;#yw4V%@lg4qIJ&OxScxWDrERlBJe|t1n@!Kle<2Z`5$v1i z2+mh=46!BqY(PRHgZs{J9nM1GnY{-ry;&(3dx*wJeoJ~m{BXbnG~&$zhP z%D%53&e%Up3=G5JY1`Xbf4%9=)ILb*MU~ho;Rg6|NLjgv;nmV9*zMuHf)n8aIeo6V z$2KeJu9fbBMy2hQDNJ7Oc~R`MAkdiP%)RskY!ZdP=tAqWLXmXX*2XtF)}@JufhnXpmF z+OF@_wzuV$IC*klf5~z%Pdm=$VUD%gnML!q4`+Av=afNZaypJK*796Fg#iGV# zy)6#8z0t}W#n=&q+38H&ZGnXYoq3mFF}t0TfI~EP7w=mne^S7&6Z)8_ds{!bdL({W zyn}~EQTk~wzqbQs@_X;0bB(>Q2|f~Kx~!fTL&Vde!qw6H!z!i@kxq`9Jng-R)=xbX z+JSHT$vg;Sd-8ca*XJyZ0~B>wazLs)6Y~aq1eAV`FWM2DGwtY#AC}Csr$5Z@2S=`# zX7hP^7}D*tfAnM)(TKD?oZAP}Fb8CE!s~w%EXT=|-rj8+J)i>7axCiIt9|@W{VcS7 zH4FA}{rSvVbL8ofO(fUVvZC<7APURLG|17 z%jkLoSMxSnoX{dYtk!$%?0h!UL1?fkqo7<5XVM}No#OgF4wX%}N0g{n(s>+sQwHfA z0~EAuf3L5Ugo&krH|!^`wo*&@p!9)Je=p{wF>Z= zX*pT)8XRw7n@*a5jkVE`s;Of!kZgc5?r9H8@b00a5I|)+uAWEsz5!xYGhysyz1iz# zyz-=3D&f43dOW4#Pc!0T6<-$Xw=bW*rw@(6@3xf)i}gI8qyFdfx}~g_lTg!s2BJck zf0Ica@6$S*8SZq?V`uE-xr%Iltd7NbgHZ=>) zszq~fO^6EtJZ>*hMqm3+Rr;Sj8Hc4!Z`*@=u%q5B@Z52a8tRTR7Ol*5U*V}FI59!2 z-?`Y&V9w?x2;=Px{jv+@lzQd=zpgV|vLi{7>pTC2BEH1>&i{b;+65sBr~y#Df6UkO z9LF$kWOg-0ID;u9Zr<>4H&Zn?Q_XR8z}eOT1ho(QR!~I?`@K#!G!a;A`XAPVcdy6+Vzdd7tLwBztmK5Z!A)FeeXkly}SZ-qbSZhj7hio56xf zJQSF2(@HN`tBcB{?zW9Y1>bCbe`wReP+qY%PnYhQ9D2vPjhU10Uy@U9`EcEd3uBNy z&y-J2gS~D$sr68kpxe{!kpF9VAba_w<^}t&Iyyo|YfD#>N8A*)tyAkEy;hV)n1bjK z4*l7+Y$28C9<*x^Ow859a&I>3X$^4m8@2n3&;f7D6_8NH#R-_x`UvUHqhwW2c_YWWm?MJSva9>`j2t=2TBvlCjw zCRHIf!hs;v0x6Ko!k>kCYY(JBX+dqyG>5S9H!X#?UAFIF&dnJFnAaMVF4`M{%7-9q z{W2{IZ562wt8qq0xu6{?e-mYpVv9k5+SMiv(Nup=<b3>i!*rZh z(QN*G+?M>&zK?%bSAWDYO$Bs-hwv|70u4iE(2G@QJ>lAFJClTmYVb*i)yZk-%4%JJ z2k1JXHrUNx&#)75;3^BD8h)M8?)MJxaQ1Ig5MesZ>qQIHj*oxCe`Ij>sAwS&w|dbD z4IzHD>Xo4P_-f!q;H=);Rk0iLuZc;`x3f*FiRZ8e*=^+8Q#@=X zemjiP3Q+JMJ_q}p?MqXYb$9B25m0bGiQcsr>jczW;pZEBsEYxfRl1C(0Zo|Xl!P4!tYnM2Z>^oiWX zQ`@^@t~RBD#R&&-^;Y{vf15#<1dMz`(Rqns*%4-OEBk2X z)HR4F23H%8ELXB%n_j?~)U2TwRDN|x@JChs)!os$frRjW$sB!p=K=IuFn z&gp8$*jk5-{gS9^Rg2Os7jI0VWIGwLI~Z8+e4R%6MY>Z$Y}$> zUz*cg$*>DiJnZr&d=W9$XoJ0lJ9`}>s7Cgnooj$e>Kv{vbOV3mD}k6h|axVoJD0(d4r@JU^aP9qkDEwh!Kt! z)$C#SlYAYDwAj9@^b~9~%eU=%>TMI~oMdKk>!qeoV9%xb5_Fcu0y%ZXTVFwi%FD~( zap}b1#b-)RA+WSJhahxbr5z#KxE2i~e>f>5nwwY!f$%2AH0(p^ zBpddi7dP66Mf>ut{s&2CHMi8!zwIowng>&|uP!JXx}xWL-^z~WjD1vnMMzl zrT5L22Jd9aeqNCA1^Rw@Ex6<<#kfvo7h5@Jba=tPxRuXtFZWLmsh!NhNka9mf9xLR zARPlNz4~CBFWPL^g_X8LMdNd8YTae{IvFDCg?i~^u4etAR`a^&(&0=2tYBMO9gg|u zs-+slO9}JHhPmG_So`+ux_B4J4rT494%Kj-qpJ9DlC0TGx+OXbzu6QrGve#X8 z9ozEv&E6N=XT2#PGM8tM@vjB@9h&qm_&-9KB1ZZttAkxvktufQUhg*Xe@ruRvE#mh zMpIMY?k4amn05$Ei4}L%FRJqE2kh)**ArPa=PZ0Lpl$&{lEC)}Fj%)gWQJ3MvBZYP zD_gS3eSMZkyuqCspJ)acbTUxw>lQFO`a>SMRofDG+|FK-+cl5UVQyT-)>$i6)n*_z zq=C3v@jD2S`%R)c6!R`Bf2`XmzA1qIVa@*h@$=j7pB6HE@FWo417`@Tc>?`n3Olx6 zx{O(<)SR?<-3*hq=T+Z$E2!OKbko~DE?0nkX+{LSWXQn1!<}|*tZu>PL5wBHIFb(k zlmQJLKG}A=F0`-t&7i7DZmVTRbrB$(_Fm30vM-B`Y`n$c2P6;>fA5I+pm6&ydD6=Y zgqj;FdMf9xtytCvYh+T-5`R1|8_5CL7uo!_5lzW0AOLas12pU7`{%#EQ}w?eve?&} zp9w%kZ;}+D%f~L-X{2?QvnCE9ITdmO-r~Ef5~G?P0Llt}R>0)4jas6s96ezuv%0F8 zLq)>o;18?Zw|g$re^4tJWmmCLz4o_GS&gx^K4yaw?3d{fjP-Ortl2w|G~T=K0_gy2 zxzqV7PM8GmxE0yEm#7i{nZ$WCN6~rN&5o|Zu3F7*x+3xCz>C?vEY`oDjMrgfJyLytX{N%-U?su^R2L(YDO5#$-G5Ksqv4f4*d`_fj%pw>LwC-g}D5 zw|XCA`P*6jIXLCgeZ`RNBT-_EECzMYN%d`|z24Bq{!8wDQ;KCc!6kJ=4{H3_znFR1H_*Z4r#_X= zq*+_^D$>ziaqKqDP3MU~*8FhXoM8jOlatj+E%4)U*ifJkiT7e`)%|SkHQm(tm3I55 zJ?>SHe?3)NC*jed4fvyS7Mjs@RRAF0eEzUEFf`k~S+mY7RbQVYcq}^_o?}~l{7`e8 z1f@V>b+T5KpjhC0TjAj>$%piDy?&JXWqkVc>z_YH|MZXY{VO}~ofyKSZORr%H4R8b zlijOpuLcO#42kj3O*PeRon=MZfF>zv>IE>Te|h)1WKA7K$e;ryPU}=qU{l9SPvfa* z;VtBhf(NzH2tLqOC$*tUZ)Hbia1_8M06SP-y<6RQt>WQuj@XEk#k+Jqg?Of~xC*#l z=e9NPQV7q(R_y95&dH+~%tBXFz}_5N1fi$ ze}h-0V^in`+6D#M*nfmls9qGl7dOJ#RK`72t^*{hG2c856EsSU4^X5-r3vU5$b|f6 zjv=5!MHNcR_JhKZU=qz%?%QtZTLo;OmHpN)ubjhK7cZbR5(HK0ikePk`)vuM6^Q#?raN7B64-e)0vdBeI z5Gwg$)t0^XLkxi!^}=q-62!|$a$aQ3bXfB)!vWZiK(|$P}N41WqO2GnwJHhUuzBE)tiR2#W8rxX+e_gLl z9EMI?Ig-W)(B86daQmW?Xe(7G9;d}x0Aea~IaR=)#1ciChdua;KS$njx7%;Oyz^g@ zn;`I8m1(_r0oCRGlFjn@%U@reYulhHUbBf@$p;_-_?d@huV?SUC$Xv70ZfX76I|-2 zYC)iuckDF-6|!sGb&$w53cwbffBD-Lge~M6B62Vwkrr*8_G~I62!hz(5~cYV z9=!Fk?xaF7Xc_BCsK@4Z-V z1D4)ff0eg;a^ASwoWx-~N+)NiJ|K?0fn0Zt~^bC z^p@n2Ls_|Y3u~Ow54YxNygcvk4ylr3bbWLY*=Z4|Lx-)6!iY!Vj0Xjr%@>hqah9}K zP4F%+476DM<@X0B?(rdnNzN>ZEXqF~6MBDZ-mL=`&;`)DU)m@TeRE%3!=znjjEw;<5`s6Xo<~Y9XA+uQ!)o%J$+<=H3 zy+mBlY1bl$FP2tMe-J;Rf~~zyml8L2r03l`uUOvV+F_R{uvWhy?J%Pa!ZzRXLcCY9 zAAV@Z27Doi^FP6pTF`IHTP!cV4}$NVNIIl^&O1@kj;T_d{NF6X5NUUt5nxj)g{TF- z2Zs^!hgEYd{axYX(LsB&OUY^qFF-mkCxP`P)E0YKT*%Rme_bezwY8g!!Ru1%M~7Y* zRJ2>vKF_hnSy!=pWc8-6Luuu+uxDz5NM};}sfBx9HaJZo_V9*s=cWkKb?Z(ea@Qz_+ z2?J&!ZFo={o0qKjN3-dsmHWdE`~0`B-@cDeb_9I~tbP4ietv#3E2z(_aMW#~VACJA z9;igvm)7Z_hhhlDYUe<<&u2o1*i(v&c`)jkSco|MBhn z`vH`Pz>69N))~*F2f6bR>xB}6VD+kC4AnADe>)j3BDM~?9ss$Qpd z61?d%OZlTeu3P#fSQcF;&YKjIXA)_o%Xg>%1F2l*?(FxuoMR6a*nq%kTv9^iPRVH> zf0pd)m(O3vr=Kj>1AmY$UzN75!MHvCLZJ(6Vt=LTd3w5UJ!W`wJTDR>07uQLst?zF zat_a1$DgDnZ%DhBu={OifOgeNMgq_@`?Q)EyXGJb@VjdfJ)$bf}ut{-93NU7U@ zYl9lZPVGVs(W3iL>`6dW9xBCqjTvZXWsPD0Fzj`nO1Wx83WQyv)sB6hEXb?Of3^{1 zg9n#T!TAGfDRDOSg&hi0UD~BhVx&`fyyDHl;vL>@+_EVtYqsdcq?Xj%Vl$wltr6}N z=!HhiUqN^~Ry%d(E|I0Gk$?EHFnrJKR257lQv-uG~X+21Stf;#hzk zWP=#cUs|?J_ZNMS<(bMj&T=?UZU-7^xY@v+)LNBdbX)p)Q+x21=(b_bPVKDDHG3Yk zx37T*4kn4h!wz&i``+{*KjnZ<>8U8uw*;5&AK1Z{cjI*D_L64Z^JSBNf1P99{|+5H zx@v(A(w=HePd2mdsa~LT5@xYIFG}`EgQw1Qp|NQc^-&!Fs1`U{dbw*kNZwjq^aW_1 zm0U~qF^^4z!JprvSr0@Z)r!I|AxTmME4a^0oKXI6oBHKy9xG$w-SOp!3jkgnwysPb zWJxuu?RMRqF?&3-`f{-)e|1d)hl>Tbuf9g-Y%apuekezMo%zFhJxz8}e9Cacn>_q} z{IVaD1qQaNV}puQ9I8JNQbFM!E~qKtquw@KZh9C&Blm4M{|z3~`Zn5@m$YIgJFf1k zQzK>`U_YF<*8x7P(N~B0-=dhRW_*X;Z2{WX9kT-JSC6U!7>#$yfA+J{g$%hA7Q8&! zk3`C1^C!U5HB=SkmG4tcXZv;ljyenIP1RL6_w}>oq02Qub6DtQh5jM>|NgE2`Gx5J z`S)iBG8_AWZjYslMED1>Xh3hP=GcqCnmls}ae3ZTm&3xACk}XF5UfEPbIGXZ)^ZO@ z*EXoBGeoRAcxhL#f3Deh3WL;z)5-CvqYTehZ@s?vH>7c@a=W_jG|q^;rKA@YtU8)* zIrCmC5b<<9f-R?0Ld=l?uW*_b?m2X_W!qbsYc*OVF^aLJ*b%*wbu@bQ;$C5wt3e-0 zWyD&&+21eRw?BS*v-hOz54oTM#*5Gm!fjl!Ri)z{2Bi{ZfAmhSD(?dz@0#FL$2h}n zGdF~aWwdP+AY^??ak#@qKY$NpTCu4bUHYh4AwR226q}Vp2aem)mPi_JeM8D(k!KD! zJ->?MzaJa{MWhr>K3BWZ)UMusKBty1FJG1jmV%q7^FSU4phYNshODu4)E!`*pkXW1I4` zlV5Geeov=`W8PRe%9RelN41|wb%#yis^$z?Qme0IV_!&B&jh#&kv4?Ysy}rE1LNmc z8=r!+_MOknx)Zs^4F!svz1FR|Pv|7OA{4Er6{$F#f3Ar7#FvH^@`@WSel6)@Vwawe(@5{qgyaQOomoibZ>YGq%pI=WaO;!oOxF zFgMxQab^xGFNL`2s|JNPC!o5b7H}YvKd@VmI<^B524q2M+^#LI2?>aRJpqN7?{1T5 za7xtoe|IW>*V~7+d8N$_jsSJ27Hx^C+7%n@oyb^1c~xx%Ge}hLpz+?%BPrSg_9p!e zNFI@{c=db&SdvcN(aSz9@?umJyQ;K7-rSr>B+UU1j4QmZ?fS6O>`MMnQrq(RBA{VA zWa?@qCQJTgX)oE^A=~q&3cP)?U--@Ya=jukf9@LnjgY;M2SLHcx5EK35U~{nPwZLr zzOfHG5yF&%P+}Nv*zF9>14gD&#_J+<+)FU`T)J;NDFm3os&>#QXI){cocOeIk+{wV z4PHvjqyttM>c& zfAORI?TOL|7LVFc6}#?ArwG&Hn%9iL)Kn|cgzTks$Vrwz$I>vA1P@S&_Y0(?ViMKR zd;pB2kS7_SvR&Zr-QezqG9_S|Zf(45_p;-&64^JDR;|`#ka;#nD@1yEJ;J7M)`#MG z210~WWe_u|yEZ9nwxnwUJT0^rDRSMtfAw$E!6P;DH2LUhpHVNUqy$vcp6%ehD)2Nd zqdv7<-WKlf<;$P%7{OyiQ4<*!Zf%JGhP|#tD5#*(y4obX`{wa#xL_n4!rP{_yNDGC zZ(fOV0+hbrw7bbV>N&Tj4CT;Nl5FVI4|veo60dJkRr8xet%8}H%TyM~(yp%9@ur6^*@oDh?dlrKB05j9=urs=fHOT{p=umMfXcER z-!)Qc7eH=oQ*Y1gh1LfO_2Z}4de0?0UPm;!cf1(x784_Ege~yRg^R}++FJ&Id?F5(UptXJh#wI!0Z$Qb-s}V=r zwL5x)9rAiMn99@&CEfM|W*~y|txX4&IRjs(?luzbWh~8861R3M{HTqu1IXP1#H0jg zY4AYHfj$;Eel6Lje|-M=^_}cq+>gfyfmVEu1%KS9 z&1q8l9DDclIUz;J+MOoT@44Z+Fz_H5D7g zNt?i)oHk*Q>q)%VGN}#cO9%K?hGOSm9~Z1@S84}JN?Z$3QC!FJYv&Ev8Ub{+m3HH8 zZiM#^@$ilr6rqFZ>7f8GIVD5-bbo5HYYfDH5V{91gzl`)5U9IrtheQlZ5}^VTY8s9 zAL1kquq8#B>jpz-?+wtYZD4ClTQ4Tx$Sc+K*VsV|0?4~I)|EBTv%0g{>rkj(RghAg zOiH^JH2cY?dDBj`*Xkiz8eW2oV85xR?Awwh;uWMZIf~{mK-Z7MOVCT*SASk=(dWi+ zrXK00SRf%Rd(=74HaM4&4#1t3m_Rz`VpWzH78YQ^`=+O0JKU*O)_G+_Vz0_l?sxvH zCHs&_;r0*dJx3^xys=8ETn;I0RJYg(f4j2}-NqfC-0sC@tY_U)YmAg=jx2$#p%jhYK|*-ICSjTw%yL}!zz%*rrsun*F=HMoyV#1Ut*&! z{cUZ2cQvfo?`q&VQ!-AcTpO8n1J-*I^xBm6xASWUhuk1&d&GC!xD=HJkn=zI z%cym^V*QXbr;mt)AAga@&wusL?}mHg<7BdzdpxegtKb5fpDZ{B@e=)?>We9qs_ZT& zReN-=?esQLhDARmE6ckSuj|4ElYs1y#uMQ`d-YVk=^S>*Ly_$AWBFY`Gg*Htrd8d5 z6ktrrVFiF4hbXE!NKQyF258B&SeA7dyPZ^rur*t=*h(DKU4M!6T+_XzvFjOzsbH{A z)z{VGk8nF3Cl4$z2djI;N4f1A`xwkLY4|=qVq9&0o+|ofDeoi=-L*wIymXJ6g_9?} zDCk8Q&ONLDxa+jVo7BYt+;k{a&ax-nVpL-%1rq0#x#0}j&=aBXkp9a!zIh#%lFUa>(7rD?$EmY5R@oZe|5qP zN`h`6CWw`H=&A3sLbDFY?&%f6v@~S--KeWrV}zUP9)GIAJIj08r*o8h^WFslZwC@w zirwH`f;ABxK`uqhi(;aJu!mSOi0f29U%~DQDzu^632xSi#10#?jcNx>-rgGO9CEud zq%kAZtq2n2Aq6tUX~C4RIEu!+Wa~RP%;w5Q=PB*d(ux2&yPm=V|xe` z>PoDDj(;kCHhU&DEKThv{5NwR1Rv+7@OAP&^HhaXw;qe;h6C{7?lZCDbw(jN4_3m? z(xkS1zeuT$bHiVX!XPNU_xHKe5hGW%a(K_tsd zk6eG6)p2`3O*EtG+H4K>sn&Z|l#2J$jgw#P!hhYxKi;|qZ~n9*g;1!!p-t1r<@#_% z@Kh+|oUz_E!>McmfCS!LH|dhSwOUAlk+3GB3>#jJ`RRzHeLZ#w4c@TcQ0)3_KR>j) z3HgAeafbqd{do|lh)=CL((-S(rqdLh4_Mc0$TN3?r&g(&;wfQcm*IW$p_|QDhci*> z%zsBnY$lle-K%)AZ_)fI}>iep=I zg^wls{!L4*FQ4pQ{`~Fhr{6~D?`x7za-cFganwC8P=v(ap{zDehoLJ|Y+mI{q|5n?-3T-U)c{ORCLq~)!_mh{E*Xx?#3&E%1Zf5 z50m)FuTc#+cqqFhH9e=vk)4b2;YQ49hOpl8w{aXhSF>u}?LvXd5Pg96} zI(w~U7fWMDEMa1|X|x^nuz&MBl{Or!tLfa;XP8bUY0Z?Ex1j9Du5Ohb6e;4!bFTed zPQMDwnxDU26r4(i@P6vX((`ylVL^^lY4CIF+R(%x8NHJQf2-`RTEfUhrGK&0$$fhu zPu)(#wIp(s{oXh*gTeoGm_&xu5@Pzm2E8DRki>>zFJGJCLW( zOw{vTZEXkQcGtv0U%(((i`}VI^~BLZ{y&>b{I!ml>SE8PZiP<(*zH_oQ&UpO?B=tH@La6ovp zjgWJ(R*J~&r7wvJb{+g>UB^sf+1)n_m9Ke4IP9s;nccpeFYD4}b6SAIO_+837q;F; zPn+YMEBggI%ZHMhQw@&kp(-RLC(>*V)*#BhCAKomoYSlKB7Y$w5)$;<>KuBTF`x52 z-+?3V#K|A(dJxtINMy$*hq8_};^Wh6Zc8XWEnE;SRcEGr@UU3tY56v`uz9tf6CAD*B}g#NpL47l})KA_Nd)4#XE5!j+I%%hqvq9N>}pEXj99m zgxwmdUOf60pZt4Lo*T)Y9krJUWU%&OBXZo-rd6%YqJJ~58FF zUC=|hsJu(oxNnxxjtk;cHtr-xKD%?&%7STjp@qF;p~`)LUc43$00z$Utzs)%m#+g2 z3Hr<@_`wCvSd#U6lOFfGHG4P9W5x8vil8V&2K5Y_-kWMDtKn#iSW>D6%Bq`U@jdaq zs`Sts41WNR7qZVe> zL2!dhsM<|l3Pb6%0g9{Feua0j>&Ks8e*U#6p?}KMcAD8LWqoqD%j;aOdKxe%Uo~{Y z8`NmPUIV!{`vMufO^2Fj5FOb}uuo2N)~7w)t8Y73Wrd@|QKS%}X1CjvN3Rg|O}%65c5)x6vZ`nW zNCwy`?7cY*1_Np)J6@%Oi5fJw!n37tD<;$Vs&Gf}?q#uq%u0k>Mz17S4g=vi=r9CI zS70@G4e(N-B|Ni%!gP?;sV+X%G7SONPJf#iyh|o}K}S-uVI}FLdaAn?NIOuuV7ZmU zP`pVZslveqpQWUi^T*19YNL?~$g*;_D-mo??-L-)ul4#d`aAVm9_a-nmXVML1{M`G zha&Nj&9z>F#u5y!V1Hp$0l&g@^&FatR#?1BCSm|bbQlDp@7}xM%gs_uQ%tZD7Jscn zS?^H%4;BN|;*r+hZ|AFn7I<`N`UEL)cuEcWQ-`8kaU{iINVH&S<;+hbH1EukGf+2a zn`0#^Ob;w^77D}*Bv#pInmw}d)O0BfaED%TQ?YWM1%7LTN!+gIa{bpk=kG^9ds7LT zof_3q7>eO71xX&5q<`&cspEP|pnrlO&n??6GPQfZ?3N=jlBv{%ITS;0QbLKI_Qyki zJB=Z3uY#Sg_FfvSzG~L~qxM!o&wssZD|kq0tI^@uc1VtT^WH&STe9Od0BMx*O#G+o*c=HYO|gvH)v79S>&Tfo zS6;pm69_nLc^jm)b#St^@gT8hQNK6IgEJ5En(#x*J6goQ9mg;$xC;mwh@YT$(50Q6 zOC(Q|nP?Y-!mTO|ot(7mQh$d+|CFRJGr#N*bstV;^XrLfdS~62(tgLNSJd4vn#DB^ zC5+B^@PF~%`h3pnxMuHaU}EA&ax9LxDGbL>1r`T=Ba5B4*RiwXNQC5@Bd-g$a|!nZ z-SY0Lz4Ec3LN@$q%nQwMa*fTpw2__C)Pc^?G7*Xg-KwWT(=}y{)_>nhhH7(=W={|< zKMNw==ejTJaIn+f34*qc)>g=z-T+5|JA!_zt4)gJ!k(V#R{G*xH+{;>roidyq=7*F+j@m(06Sk@WpyPx6ERz1tdrjX(w8Ns!@F!RmF!6>+op~+ zY47Cim@Zr5v@``5m49v=YD%QQk?fV1O?L7En7`wcIa+jQZ<^Qc>P zS+{fPY>y58L1tCOD5AQ&X$1 z${p;p)7+UzaO{-_4ZN%7q#Pl6x9RW(NQGRo-9gaYP2n4&sAH!|sOBJjN=_5%b<9~; z?S6+=yiJ%~ydQ8-azF(rx92=n?2jxR%e(2r<#AJq`ab2%`GlVm-ax>Gu)2{QC3QhR zbkzhvyP0SQUw^lHdk(K`#-$^7md}wpSY)^eDaS##=W6wTe){scjjun(kH7W>Q}F2^ ze~GfX3hZOC6F!#2Zy%^lv%PB89lbOlHaJ4A4SKeJmO$TwBYl@`)zSOJ0O)8@eYm)l zF4CQKJC*Xa311CPhleL@r@t7azM&&cCBy0fqHUL>a(~h;&@C11v}UrBy5s{HBAw^eWV$rPs9u=E-83iRZX#f;B>uT{yBRsokc$6 zg=tl)$lhQCV+&e$aH?18?TH*VlOhk0Ya zZhtU}+lX($ns8{>%tZpf_wC(+eg5{0W)InM9{94jr^gmNaq6XVs*iQ@G<#4qNyjZ{ z?4^y>E!4Q?yllv`&}y8xd2z7BVDo&cC24^+l=W|dJJwO#u&OKEtv*!ta^P<3{_G80 z@cJ(&xRYaTB^MahZSaEs15gfi*LN!q(0?YFckD_R-L9ERete0Y2;neTu?Y@Np{KaF z_MT9Omb?e-x9t!bH0?w&UI;XA0z~3{zTaNUapJenzrSnhc`TYvp4Ktl;-m3>t0P3b ziG9DE*&f~&LYwp=GJ!RlcnP`Y>uoLz13fm$AFGUhlT^vas%8k;?y;Wx&IAlaLVpDa z`o$HZooeOf)zrg|-dfgu0VD(ZPpe2*RWjgk_d`KVg_f<8aH{MMAyw{LKNFikHe)1x zad{JIU3KSUR-5SeHH3UNQ`3lmV6p;%MQh~?=u@3tn~x&?kAM93xqoWko+ZTRp_ES@ zhZ^xq*;2%~v-!6>di@G}W@+GtUVl{Sb>y|tD9&6zMx?RVp9%^r{twx<~! ztf4Ew8oA_b55fzJQN6<650U!IKj%ERxKxLHb7xVSg2W#J@9XO0{H zkXI=7LBj7V)S{}Vs&Lj7z{jNKk@aQeV{O+__s7G_w%c|En;qlWoM9zJOi}F4u_TQZ zue20+)3J`F^!gj9f2&ue^PlZV`*E)R#{xa94=F;2R+TpF8Q2WZ;C(qqU$e@dUWs^5 zX`5rynFlhh#;`5U3I%`yAbHm#TeBgETowmAAM)#5B4 z`4=npZx(&ZFum?`t@{;#D#2{-yiHwKv|5EZjlurzj&?iN4Y4>6n+;RihBX@~=V7~w zJ~m$SXxV$$Z5LkdASKq!^1BmX+icz%WZOMe?QWO1;>W`q@*ZRnqJJ9iLnG_d1GHKT z0&l}fo@%lbLTJ<3N->tG^Y?1;%Q8BC&96ZxG7Jer*+VEU+$?%wx^;C6Rl~BDc&@SP z9q8_T+0ZKbQA+eW^3&IE|M(9Rz@%7hYtz{;WxB~8e5A;kEOa`b3TSIufDyD+0!{pB z+J2K)9p_eN6}%6Ylz$Saslowei6A8!HQBLyK|4Wx+J34)d3cjqRv*++UqUy8^Rb-i zuiO-iJ8diFZC%ha$oCaN+`>7*uATp7t9ELyq8a&u#eq(GDO#1nupx;woo$1JEWq=3 z)2H@&`{~V;^>ST~)Pk%nl=lnv-`_sW6h4RY&#A=2nz8JCSAU5D2npB*bULcVX}Hzs z(e>GuB5^{KR&Km}bvp0F0unrKV5jH@jIIccK2xpeLhYz>(nX^RZ-sPZh_>BYpT7~z z1lW%xXZB1s_qC(eL-~64vEF`q6RVg&uF}3{_o~|||QiB)JQ+uVuPCKXsS@)N+ zm9=}$_Hl`0-U`;2r2-{BEkt;a!R`PAl6SmDvQgs#_7Maoufosu;HU%{qx%&|My)7?4zQX9S9w4 z{O&Z6okvp-_APb}P)sUQnBUceP5emmYpY7hYAHDY0|Jiu?QIcoz`zU2RiofwsOa9+ zR3PMs^M6?5n3W@T^kYq3u{YlO?A8>7mx=&#)galikqpWYYFMYsV_XV-0f4f556l@Y zytE8j1JoV$oKE$iZGX1g31mC`6WCBP;iPHvwyui^<-XO;zMHRg8jV1X=v1U3zp}5*S#{#{Ow*kgP|Y zUC5=N7t)}yUH4Flg?C)MD(8xu>J*B4N9V@u-l=AO6M|)*mRb9qY^~Dt(=zRU`Vs$w z6Mw+H1@$oWB{e*=eX5pj(?HLMM{Ur;t*H*6f=ERa-9VTCn%nt2?*SE;DfZs%8Y!O2 z@NZ4|8?T*+U_O6wOM$8&3qZT6cT%{C$#1ulw#oJiaPH|28UZDuCUDfYpRUCRh->KNd8?(pZXwlavkn7gwEuyC zq8f%1b(?^r^C`!!{ska&x_(wddH!J<5Y{c)zAlL^<@uC>bs$g4ZL_vkQM;kv2N82k5dY^X)4^+02pg> zqgszSAH|+O+i&Ij6Xd_PR$Rj12e`-P)35~CofZK70+*HNPStaN-(-E;_kk@+Mn)ZI zcgy{@PAXrgJUXvxfGxV6t|ab0h<`#5n&>qE{86Vz2(gWyP`#+-#~boGvxW9-0~q*2 z9|+a)Spy5HY7Ab^1M5-?j<3dG_5|8bEeK$IoNu@ItZE0Z{$O_Uj1Ic zWfrYeYg2a{sK^fAW`5A3KfiwNqkZd7d7tzwiz)S7HZ9$hh_o>|=``htmVfP(m!o7} z@dJgTv#MSPwsS&+g+ZD~5KLk^6ujp=kIm6OT^_sB6F>;fw}{^A?STzMC~&6T!g78{ z&emcxHM`^PnY3|s4q{eo%SIfMN4SH!13`6BFpB0_MDBB_@!G~RAG?N5LrKFJ>rece z0aSH1b=u0{#TZ=lTE%d^P=8>YrP=f++<2_mw?E$1b;4t4eEtHLdJC8^05x}VW>QO( z!TVg=lf1&Lc+gO@bj_|ikVblCSL^)*QVgT@WP03+9&1@$MAoE$?d_=4tk)RR1PGNg z;n3;pR??fwXftP0tPD!qme&;VFtuf|e6CX(O{+>@dfBVx#dYplhJQm(Ee2{%PLL(# zD0v6tnu4`t3=2`gP~IJ(0Ipi9D;F&}`ty(G^FP55Pkog~)$md^%2HLGVshYwkwG_} z&6<95!cXfIUBE!2_RwGB2Fq9!^!)1d>DeRjYMd}G1z(K!H4B5P#$yF4UhUR7E%7Mg z58H9?UT-8Q5qU35fPeep{WyEmsKsuYWMv-Mkv=!E>bI~^aJs6^En9NiE&X%2LBf$} z!VYr?BR0bOtD(}T&zFaAMbiHU#Cz9OTEB}$skBY zmbPhQc#R5V1;tR+Ntn7~1{TL+0g*?01gGbT3SQ0Of+kXQ3EuSO1wJm zn%w!Kc@y1EbznfLXMU4!V9gz28tVHORoppR`m?2Vk>U6?B=S*=Z;w3Jp#h8bk{KfIaK2AFthocU*{eJ=d6h5~v*o$+bU3!-i|NJ`t z)7DxY;EJd#+2iHPspX4J2E+*9!|g>e%;(q-&ecwIAUWUq=PgTj{Zo0EgZ$=rDQwpo zyr#TFg=Ql$krt*AFPmV=J{%}L?iKHW5VTjL4m6a5v;(Sqayu>64(Wk7d}^Vr^F>ua zU?^XuaDVgAvCaw0xisRm#Ju(7;g3y#7#wWvR(-;mN}nZyCip0#VRPn&OwNnDM5*n$ zSU<))U64oAN+kKhSAiODQXLJ7cPDj=PJ67zsb^QT6UT181BaIpeJyrjVx~HNA9a~xV+X7fQOp|YO^Pnd(WitwfQ^_BY zyl!-vkYz3_!Dn98-PKvvh@D2YmDZV7#Qo@EKqZ*t;&xNgRbB76J zAGQ$bBY!EE@SJ1*|MNs2S_97bDBLSJ!hbHav>eIsx$`=_UaN{0o=Jx`B`CW(!aM7I zc>`{1kdCOghGS9n+-ya^dI3wKJ%hdD%a(>itgHL&$bm+mq1eR_OmJ-L)qax804MJ7 z-I8q`iB@3P%+QLuoYOSG;Z3G$*PV{$aT~f?m!s}1vLd5X%gh-y;-1ze*-N(ahkw)$ zm9+th9Qa0{x^_iFLU7u#vn{Ttti?b3JFWEx^&!}?ukONH0E_gXTL90s+mz2Nw_`E< zzo;Sm}2af17fwxY@P^+psGpsggtE}O5 z$+6j;IIdlTcQVImf>cvmYd*!vO@Bw(ZEq_Gq_KG{} ztX$M23LZrBhk4Kev=v~sTm5oNsN_UqDD34Vg&a{00}aRR#R){<*n;BZUXvjog`=H{***YYs}`l zEC!N|hFt@eZ+1xe@p2%~+4&&ODDNJSrXM^hIjdBr<=PqU4+9-*5 z_p++&inP_;xhK8AccL9X)Sz3s8reXwycPLVk9Lpdd~5>$2R{8b?SFoD$#Ygg=rhkc zwUHr7-VVgTg^s23qQ}NOy!DC-kvf#A83I_CMZ6&ZfUui5&HGZ$$If7$yDV3w^MFuR zy`?u|YO&;_#n$w~%NxY~dcg>57!?FpL=RE_N*yx0&m5IPZ`0ZJTACA>qbis;b;#qi z%KA2agV<&*1&#p0bbkq!=!MJ1As}!h2_B?Nm3`-O_fmPPY+jG1d_1nt{+n3;^SA#H zx|BsbmkW#ya}uv@SAv{`9<&*|F01oU1y*VKq@SwZ!bcjJd~jBYu+A@%8i=mZW^Q2U zW#2x`_PFxZK%-9C@<}02tvrJos>#DO?iW>b)br42L=QMyfqzuAUs?)j>l!YeN?!!~ zf^MgjYSln-*v#!W%y|$?HBcl=G~%inDn(>sp$ozf^Vel{&%kTlGmGw%*YXn~4n3A@ z^ml9Zg7f9HC|quRi0l`v*>TGQ2&mDy9#bmmv9&m$#!=8B`}zFU$fP3eQaGM&K^+}; zAgpr_(Sc1Zq<@kPZC)X9B8(aeIuYyPi6C48-&;M<3%E)`v#o2Sl6BM0=0LAaF7gbB zTz!n}(09wuSb_tMVX6b!>_w_1!$mtg%RxkwVzM@xYih|&ZqG~l#Bw4z9KKHqP3na5 z{vK=f`+xoK^5b7$+q0GFRh-|v=sYv%ps8}1VIb#WQGeEI^3BIjg|J``THD%XsqF?_ zsS+lYGSrX$02$hgllBp;5UPjjG;aVT`m`@G>C18l7hl2fNgaSG94u}VlSchF{-Uqt|^%ShtYe9sZI zHwKzGh7>zQl?tLNs%$Fww9`WDm$~yI+1br|n}4jv_I(rAiKUt^5r{V>|Fm!=N9qXW z1ZUC7t|(hVin+T@_}ZL=sJ0lfo}KY-x!#R+#D`SfW+#?yNt!pCWt3Mg4MI`sP&ZWN zB6T2j^WaNw9C;-Y!Ild1Za`LjqlbotV_&{l6B;MVabB`zFLt$#-3T6D;Y0=5A+@~% z!dPDAz&lj};new^T)P+hH%Cl*Be1o}dqv@T=l~#)Fr`!$Ids}ASWd#%t$U8a^86IP@J!gi3J^tfPvShqADL9t9F*n$OiHif{YiY%!AATSI$g2f)wxc0lAYzdwbA zo<;_s4N3xwwn|a~Z(|N50DCwu6W*v2DCs8HNxTR!wu;C->^6ppe;22eG)TD}r`@LlLo82gqRPISlMYe7$!2H#4AEl!lI3o)v=R4pSv&vU zl55bBxKziJ!J2`9f53J*N;f7*FzZn9Fb8ns-d=og!19OfnS=d%Xj#}!ICfaqDs9Hb zFAySvv%Ywt)5%GPGgeF5cKDPypE{*uzi`&izy0fn29S3`VNc=Yw{{bNJ@&Ipk`LLC zWe8vKJQWNMaI_QlTH>-wpGUMBnRRx=4s6Yn83ab&k1S9#3ahMD~IO^m2oF zBGTUlesX4<4Qsz;F#iT@D=k191mLWbBXxqCJe~`ia3-1ScT7ie;l;~j^{I!#)c?|z^!51X*w-TCtzgHH=O2bZC;$7^Mzn-ZM53S;dzcJ`nX=d z{`&bJ9BiKu1il!0f7{!gpQG9X6j@_TuOV^n$^q6upB=XjP?(s?D_YCa>+jj|>D4Zl zGl6Ln3VLJSzK@f$pc~LkVA>Q$84kj+DhXA@f0w=I4fS>BaxC-3m^NQ+38X_$w9ES$ zIZ5a!#ta3nCEVx;0gx!yLF_)KO(4OxkrOD1I;z7XobqgAQ~td@dlLe2Qeq|#4m$An zFBJ9X{_S6W`_NnTQZyI*K5Ibi(DMx7sq{Q--7okM>>WJ414P|X5d`tdC0&;(cu6a2lB|5Vj4qA^)f-geHYn`(E1)G1$y0S;P^rmbBw*Zto7O8if6>gry&d5*TV1}= zlhnH%lYNCBSM48+h=e_;-Bh0dm6@zZtYObYP6+irouwGjX5ON4+l^K{2Q`(H3R*iw zuLkmh1{52*1s}XqvV7a|U{8TOirS`G+%TJ=2u}R1&H~%-#Z12I(H-Z~9C`}g@gFom zI~*Uii6$`lm^;`2e-06JKrJ{GPiKv!T^K7SX;93Oyds?ANoNS6i0+jbC zuvZpLoC{ck=s@m0HA8Z*?MQmq+VWl~Z+PPa2yE5s686mDe{{k{a!gcvCX>7^RjJQ3 zYW~^OvBhN0b2zNmyUh1P)2{=ggI%JPJwkd~G-h>r!Zn?unurS+bw7r;3nA%m6W{}G z()Fe@IFSG-*n~^iees&AjO0H*+-Jm6{pnvn{r$VL0J_6z&^tmP|z`~q4Z-m@gh_R*4t9w#=TF!Wv6)x}KTMOX~V{wL3a9Ex_ z8V>e(FNeN`2+2AWRq3DfLruZN1La*HLC>??;-s&vAoRZK1(O7;=K@g$KxLsWjJ=)$!Dk1 zqrK9v@1K5t?dCXN#$9dp#c@9JVV~qOXMP+uBWA&|JLuu$#jM%E*Usv(;j#x(K^G)y zf1ZR`C%N0{%^eV{45nPzo6WdvFXX)T)2*fDc%lpIV#n8y70v1t!vRPYgWwxs_3l? zePZ2^`P9p6IuQ@=tM%o#pFgZserZore{=Cl=paOvMYCr`H9F2_*@qPtZ|u3$oo**k zTdLZ;n(?&YFyGG@bYek!h9xa0W(JF%yi^Pa@CqEqO`=4@GlXu0Y)F?=~A;*8>ndK0@ro1K{zyFKda z&ip0Pd(+r^%cwV?^6C3I%S@T&e*mlxuW#y|L!71=dFA*%ywJHRl z$Z~9lo$S?uFn)VT+EUufA%0F(Afh?hZ#!-+8f8I;>$>tE7w!93k8A(_5!$2X_S5}5 z?e#1Uv{GVQ;R0d@b{ndn9k_j8_A||A(qW&?sdY$})9Vi)Vm$9@DQ?V0f4tuVn-_M# zk}v`!$?tc+Ufxi5In&iaA#aH9%}(A92B*jD4S=`T070be3q7;xwEMKS(Rw~OA5qW& zp3U_h z6T4jimvb$=Ok|{FM$7rU%@NJ*^j0zZ)!w*8P4Y){;99mTpvup4Cnto!%V1)|2`XV1 zv(n45M7*Bx`HbDH&X)03Dij+OX+BduE?e+}Oh$@SBia<-+>WU!e~(1iPOdWPo*ZHP z7`0@JHcSHG0m|c$ZMZda12hxtf6K%+r)&qx%f1Lm?BuWcbq+! z@H{u6n9-h)PJjjpfhk;76(M~Y*_&wX&2}8f-ECTM&ds*%^1UD*?FbLP_x;Q;JFyeX zLRU8}X`vZQMv%hse-E#{c(xf4mAqSo0NX=|#L00G*n*Sx^Kiu9;T34vf?r~VrGbtM zagv62(Rjw`KobWB|6%RE{q|wX+Uvc-8Rvi=K4Jt5f!=hl=$(#*%-0&#j@VsglGf~b zo#QOU1CN%yj;(rkSB*Bn&dT)aSz7Oh*Gs{kJ0qX$-`kbM}9m_Mc#?&5C;}1Kc%1<1j7}JQ17rU>qO5(mKas8 z)tU}?HC~b}_a2^h!(RA#K*`j`AJ**qzyI<&9OZx-zRZ&8)9N;hxZ!0pRfsprus;=Q z=#u>uBNKF*e}ifunotKlU_zYW0oDR=|eocZ| z$k`4?sqR}9$}@93MN6fjQRj7eH`8Q8*Hy89qVbf%r_-A>;EC0{EcjgK)x)x2Tf?g_ zhpBOk19xBp9M^2?qq}OlR^jXEqAimsiWUk@v2LxI4l>@=n%7r_$&?;9uWrYd>wIHC1tTKj^iL~31&2MKRx3fwk5bGW4{50F*L^Y!MZp%u|=VE5>({TvtnpUjlFq}<- ze6!E;e{jCIe8+nXn*$d-q|DY+?ZVfNg2OxM3;OL~dv9bzxj;);us=l5_16!#Wu^Gi zr2Gtj4(NJomns~+J~wuuq2259G@u-oq-NU=Cp;Vc!VT?$#n!shtc$hDAYWAuh<8u7 zVs?CEvhc>cL`-EkZO&_xk7>%KJ@YKyuLS8%e^a#0-g{mHvDkae#z_3Tqp8>2234Rn z54&|(Z%c*|Mo#2{9yQ61gQ7=6o|U_9a)uxHS)L+74M{f251weyw2R(`i!WT5r-3VId#+#iJEUUh!<)Rsfa3LTdo^? z3*N(19b|$rx8TKH^LpmEcoEZOZ|QKcPUUHGB<`5|u3p}J7a|c)Yg4}i3>_*`%zNSy z*S$)_tCq8+R$Mx4`NO*Xd42!B{`&o=e?QLkzFu3jY+65U?(&wu<={x`m9jG$y};BN z5{@(+R;&^@PdJF}Di){aW{EPP9kMjMn-W<86Yn=a4wJe)%f?vIU)7JrTEnp`-L&42u$KfFbzPzZqIitn7`JviX?p&_o$ao}Fe{z&x zb)-5vMSg+i@Jgl#q6|AXCAspa%Uk0LaR^;BUn>VbuHLWTe|w#W`#M41k?;c>b1aOb zQyseI%{;^QqhJMZc!rMN(K*}hS(p|{7XE2Ier^kp6D$#F#hHo@B5K&4t(KYfY~ECN zS|X~M9A1bJy>mv5{@#TY&uP0Yf1GXc{vsp(exs&ZhF-2?=W?I63aG2BQ|7Bq5DLlH ztkdml!sf1f#@PllWH-m@)bcBZg5eFs$z>NLKtW`8Y$MOi zzNM=;2ge$>WR!R=v1?XiNj_z{QwRsUQMcwco7yK^|9^TDA|xLIAL}2y^)LO`zo4yt z{RgxSVhvDx<9X`n>c_*pe^zch1?TWX`>D`3j@jKaSq}$1Ad# zW{`=$?Rsw7WEoMY%W`dJtawjMthckBtfwyT_vuzd)O>~!udRCB(MnbCSx%0k+m~15 zdIc?u1W#?a+uGLsJ#$-~n|dJsYrd>jXDu)5N8n?&57|cBiX%8rfBuVafgAA%cBO~Y zYU1(-Tl>UX0c{_SHOqVE_IXlocfVA|7FR*1KrV2GZ&=PnL1di*VSyW0VVhok?@MB}M} zNDS{!X^j{!T-}>pf2((I0~)C~2j{SK(u?Sw2HS)bTgslo#BKG);C~ZHN}vdK_B0j_ z8*KQlwLjkAeG{i6RN@b8_vcT4{^r=MU;4LSmu(R*B`xJ;Dj;vXPWBX&AjH~!=Y)?t z5qaQugI&+srTnUS9SA<>6jg+ZGy6@yIW)X_l>n>kd0B$re>wkdnCv#$hN9%xv-e2? z#~u;cPMeMmLwIvm);ic;+X|Gd+bLt|X&=*qKzPYwy_|BoZEPWode_|-@cCZ>#u)*PP*rC z-HL&6KAkOCf4bv?TO2VX*bh$#rycTg6T321i5btG&@99{;T7iAh4o?Og<~`CXW^h} znC11%Yum&Qh_Tl(!&sAztPiih;`^`$EUb039PaIX-}^aMMM`?B0^ZPr_-mbAu>vbv zHfRYdRH=k%4jbLHJAg-cZC)weOz4_|OZKQ=-qCVRe{ZnAa8LH@_G5VE4X^owum1X% z{tr6h5CPsk>|m_wjWe*s3L+uVhcIdv`0e@g#N2ay&XaET&OQ>aAFFng9)MhRH12_j z9H%p&j^nU$!xc`x-t9@9H@sRFpk+El5*HcoRsQyQ;)s1U^9aR@3Zd7*UfId=R?OTx zO^1Efe@F%|8jDA@EU&N(4$SmYq83gkUpHdcaOR4q&cF(O0xgQeVVTt_`QEn%(%cqv zShDbk75kr`KYf24Liu|8*032i*&yIe8Q7ZoXgXghc3W4#DyKSn!Q%O3;jh@8Nr!za zG|MIQJR>5#0m-WKhy+6J^kC1GWMWt`;HlW_P+h|nJv?PCGe%dHRa_v^&;mx}Y49+{aE#d?ocP7_G%HI)1^22NOn zf5R%f*O%K6e^jq!QZr!ec57JtbveP$ks|zl_ZE%eZHMac;&~`kHpre)72}<-5u+X5 z2UE10*+b{(HS%{%|tWtU|!;?vTbra>SD?!TuLBV!o3%TX)-l_!> zAIJSNq8Wd&`T9u}u{YS2b*^nUZy>Z+e!(5j%c4Z_bllslxYGy^uP*V5)DGeGexZ8E)LtlC0ot3_ zIbmBwmkTFz47al@JQ<>CkU!@` z?9eP;FXYJN=;M0=?j^y+7TV=mBLD!@#mq7}qkcJPrR;GHWW3`Iovnz;5h6d4?%{w;%SVu<6@u3#j+=}MBz&&rmfS47lf1w~9iPwu4 z@%QPAF&ULtx2G*ervzH%)+{5%fO|nQJ_Bd!8@$0wFK1!g-nsV>p6Xron17l@{ZY<{ z^Eqi|o6bQ7B9U$KwTRuh1Hp^k&*&{bSA43?r)`FqE^@%5WkLr~U}qE!;05r3Z!+-?$$NS)sTUrB%{FIv z3A)2rw}VS7alyO1AWy*WlY+hVTj#GFj?I6DU(NI3!^Z;al9$#5J7nL=(voF>7V28+ z&~Mpch0J5ctP!iEe>69s1LuIoc8HFRWwt`wEw!Z200NP+c!in?t5D-MVPN!0!&SpKP9aVi4)Io4$f6bc3%Z1U|r~R+P8`Rdz zWs2!7{jzQp^;VP!q|bMaPhF4(wL9m%0q-nP*<>&LnvbJ;2g zF+|CUL(%!B=(pxyJgsa9r|<#}40W%1JKIV3C``~%b=-9VY$xR>|Q1J{l>*wa!7 zm|FH~$$}G(H?OoKD!MPz%D4kBOjneVdU1fKN^GfDJt98>+c=#bd3vwAM+V2~l}%oG za!2?d`iiHSpkGfN!*|4>d63&HnTYK6(Lm0s7v_RTfBL|Wr=q{k4=k;`w^4u>M3RX0 zI3m^yhtd6>eOgu1Ayo#b)XfiOqbWNB^YY4h_|EBRN^nTW5$@;=_CnM{^|1Wd13T-G z^X7eVp3hv4>GT5I=vWDZXMLYuVAfBRo_oyD@ypu>m*c>_v}>L`czjNYco_of z@jEjmd{i%~w(JnXW<3mu8!m?cCkGsOF*$ble|GMEdP+tleX3KtlP0s3CcZvUG^}kL zxjMLV*xhOY#3j6~`y91fj2K!7j)kfkrt_h_;?|-Yf_99{>iA%CvK|)jVe`2}zysO> z8Tp_$fBF3B{%L)gpZbSt(HG5WjkrzDGdKnDa8SUpL8DX%_}!`$Aph{tFD7fBy!&io zfB4U6Q)fOAom~wZ>VU+2dZ%R1)}b_Ii}zk$p)fj%~ljGd16;q-f*7 z@aDs2Z_AMqig|lbF|(0s?)`^V`}Nb$f4_WQfBi5`{T+bUe#-Ej+t ziF}isZ^;dK!*)VTz?F#_zfV5Qj!JhTBVi6!K|FD=u0^L2Ma=)*M26u-kFe#eaE*BN1^b{UIUiiZ#hVp8?r;RhM&)8THI@8 z-`5Xk>>maOhT-hA?d7aqfAnT*AEfl2O6-(y1N=CntX#zKYUvd0_V8N4iEx3OKDXRt z=)57*g3BFO5TmUcc#e<0@tW~dmP10|8I zk(c2Xy0z}^2tmsff5DJhiBe4U}WLxy%ncgQdVWW_> zUEiy1Z_6!l^5nddf8|`BcAU+_9BZ>Pi{@n?j_&HuDTB)7bQ)c(<+*#t>*cC9@*obb zVgn^f6KQwtjN;Nc^yP z2M>*+G+u-=ZRgA6_ufOt8hc+8d?dG;+bW%8w>Uco> z!E2eotTD{rjR2QMZ;uOLtG5NpfW)?!75;TbjS6o8fAPJ-Qk=7Y^hUbgCG&eW{@)nq z4-5AnPWpO5?+12vd2kI}cNosLUYvcoZK~V-ndi8p#Nts??5^c_*_xh}%=tMyKRaj{ zU2ouOUPg-(TBL{7dX1f(&t^IZ4K`&Il=*W8Z$c#;cH&u0&&6W!3~Pv!lip!Q5qGi0e|z(# zwVdlPtLr?kAHeNH_rU95;%Yi7qKvBf>Nc&{Qv#XjBX$Gs_vx&Q=6ML*HhU2k92%B| z%3Tf^i&kaK=-XMDaXNYMz^{oipbZkjn|dvWe*~vqr!s!Ngj5f1N4yOaJzvH^r@g?@e*2v(T(s zGzZs&xDdeO_6}wAwf|J5|JjpqSlaZmJ-7!u>eT|z75Av2?j&Q;%1rkao=Sof6U6!* zi~Y>yY~Fz|-p5bwOLnXr9vkTLBM@)hx^`H=#^4f9dNdF0731;F6yc1V1Klm4NU~rDbtHVnW4VQ zB<7iS*+h(v} z5)TEY+jY|0tknfoQV-ikf_iT@e?Row!BAeYE>D-{nH+k@x{aAP-@itu+|uc~6Bp(r zd*+xjr@>yggVcJeNigi`cF6xVJdnJ6QuBiS*Bl)oqxB^#$s_LS+O}KgA+1)FMz{sh z+jeTtu44_CA%6Adm7w?dO5g?Htk&D)kGvNZC^`96Nm=g%x>>cd$MW6Jpckl9HWtO;($>rF z$iHxWP(b9RS5wgvsF$DDnSVUBAgr;xEtSOtcDsshMC7dD7kGhO9qp3_x3K=;g`(a3 zlyC+GBC0MT)>hjle^vqwl9|qstdA<v1Y6sxklp09vVqHl0}=XYh#K^);G8 zG=fS@wGB>kWtH*Wil7D3by@}SOG$nm%4SroDmuFdnIx5WuWy~DRh({sQWZvm1`saJ zYsuP@V_IKRu&|h7|A*6(fg=s7jQzP(-{0N&TJ3$IFLsY%e>kRHUt6Lnsr}Rf(oZliMAoCVmG8;6O(#xC!1EI(o}Xs+Q@gr zaN0`zb{M4FHKR_!>Jp$mFc1=5g4oYsX$h-@3w(+yyUm2#>R9;AaDAw zT+Vd`LGX|&f35ZwH6rwLB@P3vwVN4TbJMv!m+POO>W?4u`_Ff_;;%N^;1%wzRk8A? z)_)0$5$xO30HxNpZ_5JLuJ|mN%pvJr z`b6&HsqI~{R_TZtFyz(N=;82ZcCu#%dlbN`IN>C&e-^cGbQyF>z{mxP&P&{u8=;zE zg?)6VIP`}n1~(gzELXB%yH>!7)U2NuRDN|x@Q;f6tGlCf0}0{%k~#YH&I0JQVEzK0 zv^YGj%;{>!*!zHt{gSBaO^4DwRc}n8WCs~>I2;v$qSksiuVn7NStqb2&udd4w%EQ9 zF6eNKf6zW<9k-Jl(m8yYr6u)2U&9Nu@)l&Z)v?4gU*iM|04 zr-`za|g>V#gBk*>{UK)uk-D2S9)b zOyCW0aBxM~G79+VRsrw<=ovJ+rn%d_-yF*H(o0&p^0#t{YF$n%wrqOm0{+L(kKfKt z+Re#_?b^Kuh)&Ybcz2DqBJ#eKqTFpQPRlP%N4{+7{B{(k@kvh1C?jVLp>(B5I42)g zf9&(uPk(&>_6%kDdey6g-jkr;UyXFKtUaHKayuOW(J9BpSyUC3H%Q7+x9(OG%)XZ` z1UOnyvxnVJ@^vWEV*8=e(`KVtDz@t>w@sjPl9|PAmzq8sdoJEDJ!e@gkW*8<^%WGT zyu1vamqrX;e8%V$0!v#s1l!uj%f=iuJjO$c(wUzS@4lnozMfL3dGXM0D+R3~*e@Up` zmEEHpq;rC$S09Y?MZ4{~u+n}iXq@-1)?I?HlOd8;sFz0OO4grBHLrUv4bBw6+H6Z} z(=q?lbX0?QsbC)1Fy;M%^>5Fvi+6$SRMr00pc<}oHWeQ-$(qfiS)#K*-ZDEPw81)| zDH-^x*i6*IeJL4F;Vx-OJtAq_f7L~$-5Fgap!Vj@1>7ce`|i0aZ-@Hi;DEOZPtP7p zjqD8xLyrhzPv{q6sHusfk@j3Jh&lFJ*NB!E=ib?-VACsvxQTM@5vt1Sd5fP8wR_2x zqaCX2*p`3n_P*FY>rDZXxjuW0e=XSW(4=?4{}IX*G15+18SJ)-OkqIxf5xzh=Qa~p zJMKGZGo$t->YsmDvp;|Q{Pz2&h0Gp23555+8G>q_K)aaA zjvbdKV-_m)CaqpK!=&wb)i&M=>aZBywYCq-6yR8z5t~*rWZ*I2PKPd5MX-4iV+k^j zq{BaDKvRQHw%wr#?Q4E>Q`IE()iR^H2oO$pFXtH9m(@l#-s1EFeciY0BZW+L@0@yC4GNDj!p$mYdHG$pry0L0}F&}_`_pa1?&)W1Ab zv9C2hvjG*oNm7I^orh?rlh#?z7CD6ERLBWMCXq71?$Ne^}+Qf0uiChFZa>hl-8LwZC=B>Wi)OF&mU%zdVOvtl9anZtpTiF)A=e+m~7s0E3#LXs1g5~#Cdi{(Rtb3j;_kCTFq{nBJs~#TzatNEOPULY2h!{ z?DN-m>WmK~gy9GwOvw(fJxwpOb{li7Mmub@FYl{)vz>V$e+`)%U$V8bluX#|-4LPm zo|^K#m2)n8JF7n@r(C+P7P5ULN{o@kpzbLuzOA&^8`?O2son1?G2d4XYo0}@wp+Bl z*=BaE++c^BQ`wuXJ$hO|cu0rSnYmL#;BG%QP_8O$sgJcAPirT|b_3{wu*N4rQkoZ1 z8NN&)_z#Qrf9YS}6#9Q0(q~`UakJ_?;lXxsvLm0%{yA9E;=SpQILMbWgx2B8x>;XM zC5M{rCm{-L8hsH@f+I+qs=~@pRfjGw@bR#Q)YY-GWjRaKRGLd9ec;R61(SDa`X0K! z58VfXk}J(&sszuk>}5-sJ$h*by0EAk%IWt4f6FP=eJ6Ni}&K?MpAJ*<&_2;Rkx5T-CqG~$UY{d)E;kyUV_$sy zRC1gIr9feGvR0L#P~m%f<>4&JZ}H=L{iyBB{PgG7KYz^e=^yp`S9abzF@#6klr4~I z8jy-^cCV(r`X5*`B*sHGl~lKNmKEs}nxv$ue;2@<=ELifHFXpqgASB9t|lBGZguCiiifv6LnlsF@6!1c;+eMM zD&TsZ+t<8HB|J}Cv756vnMX00Z9`3!bB%x2!+A5^ClCAo)Zuo>RE7NUA*If*fBrrl ze|36C4_=jyU7;Ij8x&|~{}D=|dO`SJ-3W768TVAV4v?tCeD^fmpiyG{21Pnmnt+ah zOvrEM7y>#}RH3wFKPU_dCedx>E_O>7P_u3@_FKQKa!zMmynxb25LBfpYRszk+a7*K zJB~mNm$oKqzaQX;V21|W*%p>a;t41pN+!fwhEgv&^hFS2Glt@#<46%B9fB;9d6ESf`A$7{XBmkjN2 z_st2IlCHG87^mnHejd(kkLN0zI7N8dFQ?(C&Jj&1SRn8q*ge#jrm84`+yh->e;aGQ z>$Qo)&~dM4)b{||TaO)XUsV$AwQ0oTv{>JOn2KE93gF+w5=EM)J@|@02j23q+wZu% z^IwviAn>Bfv{t-;>iT}k?)v%5UtgW;+Mp+1w~1WI2Ot6XnTKYtC-1>;VpF#Rm=p;o zxYSS8fj}+qFj@jCB-eOoAdzeoe}FAI^LHo+Tgf#<- zjU!Qy&08<)PAU{bu4XFU>Sc8*KCIVrh=wM7{reN?o-d^9oUF`|BLM@=e{w9i9Vpg_ zV575E!_HsZ*967e^+(97T%>-YqpXo%4xR*C06o3q+s|2STvDCY3$!xeFp#EW%^H_u zRLgC^(z1_Nd3!|XjhoF$9L5}OD`=n^1$G^#4qJ$<-mMIvI!A2XAW%}sP)Cd8+{u#l z8YHl}r_*T-iJme^_dac*f6~%Y7_9CWh^QXA4O-j!xNiR>7dRI7y?%K&dGZ*YxDJ&N zQd9QHNXP80D2FNe*iSFD7AQb?tLlA zSro0>LDvKo-olmyZt%gxIq#_1n3FHKEw9N9V&}biy($<~!-WZVxE0O#kP80x_egdqpP;qFRSV|k6Cxe@of*ey9H6*ri
PqfA)-Rlv`zG9dvK+_`Si0)0nvQ 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 diff --git a/dev-ml/llvm/Manifest b/dev-ml/llvm/Manifest index 029e8679c3fc..2ae3762cdf8f 100644 --- a/dev-ml/llvm/Manifest +++ b/dev-ml/llvm/Manifest @@ -13,6 +13,10 @@ DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4 DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c +DIST llvm-project-20.1.0-rc2.src.tar.xz 147160684 BLAKE2B 6adc1226f022272d78fb0ed361c190d369a2afc53bf868409fe8f4e092d5ffb9894c71870f072bb68162610782f48088468b4a49cdb1bc731d6689c791a5b5e3 SHA512 f303deaec8f25e1b122a7e85df192b6ea10c51472b78a3d14ad9d0b976a533cfbb9164aff0bc99e447e30938cf43363552c5493b4693e1f23291ea7a9b824bbb +DIST llvm-project-20.1.0-rc2.src.tar.xz.sig 566 BLAKE2B aa91f7be228e51b0f2234bb5e0df173e3ddc90b6db4350a9008c2f8ba53220da6eef0c69778aecac3caecf918a0c54a0d910177ffe7643ad7fc5624a97262b7f SHA512 e5563a8a79b5e9ef26d62dc6d4385c1c86d12a652b4b1e7fc9ce45a2ea66e5118112746a61b439823bf99d65aea82285eabf5e07714eec77e6e5cd02feab82ce +DIST llvm-project-2cd8207b26ea4269630feba661f68554d7ae3c15.tar.gz 227261597 BLAKE2B 51ce992b651fcf08b7fd520420040803b59f1260947953325400c50bec576c418b162d8ae2d2307e70b885b1185c302a97409bcfe48cdb14b8e1384f4e2dfa9e SHA512 a41749943508ea4a18b47c4e947917b5268544e64372c0c3347f9ab8172a2c229d8b1d813d1e842be1b98aedd624524857ed3bb23fe98ad5f36e7a71581abb4b +DIST llvm-project-6f241e36831927e3aea113cfc017c34fdeda340a.tar.gz 227203285 BLAKE2B 8d5e424c1836acc82ea766cd2cef104593c44d197ebeb64f18dbe74b1b5baeb4bc84084f5b68bd87ac36f7df25689dd2522cb6674a97da4f96f4f10f7bae5b06 SHA512 2b6e4bd6445eabfa3ace9b45d20797c7afc23f4553a8938399aeba227e3b8ca6a53a7d7762925a845bfed031c37af692b9c08180fbab80db2f3166940e560077 DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23 EBUILD llvm-15.0.7.ebuild 2576 BLAKE2B 077f5cee93e3f92e808856559add99b5fb94c03316493329fcc5067065c44d2216420fb411c9a52fb303fd33c9d4a4edb19d4b6f20ee10ac2e86d518f3ff500a SHA512 ca1d7158d86040261105d93632a2e0f23753990e8a0a268aef2b103c1c2cc81f0497bf243301839ab7c5b00051337bc20d7d9bb1f35c844a7a06d5b02603c72a EBUILD llvm-16.0.6.ebuild 2510 BLAKE2B a1877c6ac0e8e2063ab386eb063224b0059a1b8c956e26f5ac1b5daf4902a7bf221b1591be144df618a3598e5634ca80fa43ed3b734b8c096845f34649e9f125 SHA512 cfefe80cf361a5e98be33cdf75b1fc4c226496a68caf7ab19dc47bac3c2b91bbbb5c09c2447b0271e2149d2c5aded7a28e14e57f072ee8abc04cabef11a7fabc @@ -22,6 +26,9 @@ EBUILD llvm-19.1.4.ebuild 2466 BLAKE2B daa9646cc6b01f6de1ca0dfb13f8851b179985334 EBUILD llvm-19.1.7.ebuild 2466 BLAKE2B 095155ffec474c2b2c6d7a241f7e8026f316d5e7e194920221480530493e72808f5d43907ef9a520e5c4501e8f8b744712a407d106739de7ff313bce774ab4f9 SHA512 5faba05a88385260585b1e41a69d329efba70bfc836e5e3ba1dac89ed52e48567891cc8c399485b9322a8f8fc038a908ea09bac0fb8e3db6275d4c91434fad80 EBUILD llvm-20.0.0_pre20250125.ebuild 2439 BLAKE2B e980cfeebc7324b180115fa4a8ecf6ab005c554bbc4d15a99e9ecbc8a22f1061193ffb02fd376f1be3cfc812e51124afd81e438e9da1e81a6cf1ab672e8beb51 SHA512 b9ef630e6c6513883ff57ba9f8a3a0c117588fa72d170dde29d5b06e39e8e322aff99d183835bfae2048d09572ed2b2a80279ba452766d8cc088e3b212b3ecce EBUILD llvm-20.1.0_rc1.ebuild 2439 BLAKE2B e980cfeebc7324b180115fa4a8ecf6ab005c554bbc4d15a99e9ecbc8a22f1061193ffb02fd376f1be3cfc812e51124afd81e438e9da1e81a6cf1ab672e8beb51 SHA512 b9ef630e6c6513883ff57ba9f8a3a0c117588fa72d170dde29d5b06e39e8e322aff99d183835bfae2048d09572ed2b2a80279ba452766d8cc088e3b212b3ecce +EBUILD llvm-20.1.0_rc2.ebuild 2439 BLAKE2B e980cfeebc7324b180115fa4a8ecf6ab005c554bbc4d15a99e9ecbc8a22f1061193ffb02fd376f1be3cfc812e51124afd81e438e9da1e81a6cf1ab672e8beb51 SHA512 b9ef630e6c6513883ff57ba9f8a3a0c117588fa72d170dde29d5b06e39e8e322aff99d183835bfae2048d09572ed2b2a80279ba452766d8cc088e3b212b3ecce EBUILD llvm-21.0.0.9999.ebuild 2439 BLAKE2B e980cfeebc7324b180115fa4a8ecf6ab005c554bbc4d15a99e9ecbc8a22f1061193ffb02fd376f1be3cfc812e51124afd81e438e9da1e81a6cf1ab672e8beb51 SHA512 b9ef630e6c6513883ff57ba9f8a3a0c117588fa72d170dde29d5b06e39e8e322aff99d183835bfae2048d09572ed2b2a80279ba452766d8cc088e3b212b3ecce EBUILD llvm-21.0.0_pre20250201.ebuild 2439 BLAKE2B e980cfeebc7324b180115fa4a8ecf6ab005c554bbc4d15a99e9ecbc8a22f1061193ffb02fd376f1be3cfc812e51124afd81e438e9da1e81a6cf1ab672e8beb51 SHA512 b9ef630e6c6513883ff57ba9f8a3a0c117588fa72d170dde29d5b06e39e8e322aff99d183835bfae2048d09572ed2b2a80279ba452766d8cc088e3b212b3ecce +EBUILD llvm-21.0.0_pre20250208.ebuild 2439 BLAKE2B e980cfeebc7324b180115fa4a8ecf6ab005c554bbc4d15a99e9ecbc8a22f1061193ffb02fd376f1be3cfc812e51124afd81e438e9da1e81a6cf1ab672e8beb51 SHA512 b9ef630e6c6513883ff57ba9f8a3a0c117588fa72d170dde29d5b06e39e8e322aff99d183835bfae2048d09572ed2b2a80279ba452766d8cc088e3b212b3ecce +EBUILD llvm-21.0.0_pre20250211.ebuild 2439 BLAKE2B e980cfeebc7324b180115fa4a8ecf6ab005c554bbc4d15a99e9ecbc8a22f1061193ffb02fd376f1be3cfc812e51124afd81e438e9da1e81a6cf1ab672e8beb51 SHA512 b9ef630e6c6513883ff57ba9f8a3a0c117588fa72d170dde29d5b06e39e8e322aff99d183835bfae2048d09572ed2b2a80279ba452766d8cc088e3b212b3ecce MISC metadata.xml 299 BLAKE2B 2feead2cd1b35b3a43335ddd7711f8181b52bc63ee7166608914260c67528add5251349063afbef4f8cf0ec09b2cd4c3ffdd90f2c14ed60bb69ebc03888f6333 SHA512 cd745c54ab18d25bdaff18582105072574103a36cfe7c175ef740f266d00e9fc6f44c332904d23b911c939cf5bdf52973b388923099d8dd5dfef3c283b5cb685 diff --git a/dev-ml/llvm/llvm-20.1.0_rc2.ebuild b/dev-ml/llvm/llvm-20.1.0_rc2.ebuild new file mode 100644 index 000000000000..bacc5c89fa79 --- /dev/null +++ b/dev-ml/llvm/llvm-20.1.0_rc2.ebuild @@ -0,0 +1,107 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit cmake llvm.org llvm-utils python-any-r1 + +DESCRIPTION="OCaml bindings for LLVM" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0/${PV}" +IUSE="+debug test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=dev-lang/ocaml-4.00.0:0= + dev-ml/ocaml-ctypes:= + ~llvm-core/llvm-${PV}:=[debug?] + !llvm-core/llvm[ocaml(-)] +" + +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + ${PYTHON_DEPS} + dev-lang/perl + dev-ml/findlib +" + +LLVM_COMPONENTS=( llvm cmake third-party ) +LLVM_USE_TARGETS=llvm +llvm.org_set_globals + +src_configure() { + llvm_prepend_path "${LLVM_MAJOR}" + + local libdir=$(get_libdir) + local mycmakeargs=( + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + + -DBUILD_SHARED_LIBS=OFF + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_OCAML_OUT_OF_TREE=ON + + # cheap hack: LLVM combines both anyway, and the only difference + # is that the former list is explicitly verified at cmake time + -DLLVM_TARGETS_TO_BUILD="" + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_BUILD_TESTS=$(usex test) + + # disable various irrelevant deps and settings + -DLLVM_ENABLE_FFI=OFF + -DLLVM_ENABLE_TERMINFO=OFF + -DHAVE_HISTEDIT_H=NO + -DLLVM_ENABLE_ASSERTIONS=$(usex debug) + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + + -DLLVM_HOST_TRIPLE="${CHOST}" + + -DPython3_EXECUTABLE="${PYTHON}" + + # TODO: ocamldoc + ) + + use test && mycmakeargs+=( + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + # also: custom rules for OCaml do not work for CPPFLAGS + use debug || local -x CFLAGS="${CFLAGS} -DNDEBUG" + cmake_src_configure + + local llvm_libdir=$(llvm-config --libdir) + # an ugly hack; TODO: figure out a way to pass -L to ocaml... + cd "${BUILD_DIR}/${libdir}" || die + ln -s "${llvm_libdir}"/*.so . || die + + if use test; then + local llvm_bindir=$(llvm-config --bindir) + # Force using system-installed tools. + sed -i -e "/llvm_tools_dir/s@\".*\"@\"${llvm_bindir}\"@" \ + "${BUILD_DIR}"/test/lit.site.cfg.py || die + fi +} + +src_compile() { + cmake_build ocaml_all +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake_build check-llvm-bindings-ocaml +} + +src_install() { + DESTDIR="${D}" \ + cmake -P "${BUILD_DIR}"/bindings/ocaml/cmake_install.cmake || die + + dodoc bindings/ocaml/README.txt +} diff --git a/dev-ml/llvm/llvm-21.0.0_pre20250208.ebuild b/dev-ml/llvm/llvm-21.0.0_pre20250208.ebuild new file mode 100644 index 000000000000..bacc5c89fa79 --- /dev/null +++ b/dev-ml/llvm/llvm-21.0.0_pre20250208.ebuild @@ -0,0 +1,107 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit cmake llvm.org llvm-utils python-any-r1 + +DESCRIPTION="OCaml bindings for LLVM" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0/${PV}" +IUSE="+debug test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=dev-lang/ocaml-4.00.0:0= + dev-ml/ocaml-ctypes:= + ~llvm-core/llvm-${PV}:=[debug?] + !llvm-core/llvm[ocaml(-)] +" + +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + ${PYTHON_DEPS} + dev-lang/perl + dev-ml/findlib +" + +LLVM_COMPONENTS=( llvm cmake third-party ) +LLVM_USE_TARGETS=llvm +llvm.org_set_globals + +src_configure() { + llvm_prepend_path "${LLVM_MAJOR}" + + local libdir=$(get_libdir) + local mycmakeargs=( + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + + -DBUILD_SHARED_LIBS=OFF + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_OCAML_OUT_OF_TREE=ON + + # cheap hack: LLVM combines both anyway, and the only difference + # is that the former list is explicitly verified at cmake time + -DLLVM_TARGETS_TO_BUILD="" + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_BUILD_TESTS=$(usex test) + + # disable various irrelevant deps and settings + -DLLVM_ENABLE_FFI=OFF + -DLLVM_ENABLE_TERMINFO=OFF + -DHAVE_HISTEDIT_H=NO + -DLLVM_ENABLE_ASSERTIONS=$(usex debug) + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + + -DLLVM_HOST_TRIPLE="${CHOST}" + + -DPython3_EXECUTABLE="${PYTHON}" + + # TODO: ocamldoc + ) + + use test && mycmakeargs+=( + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + # also: custom rules for OCaml do not work for CPPFLAGS + use debug || local -x CFLAGS="${CFLAGS} -DNDEBUG" + cmake_src_configure + + local llvm_libdir=$(llvm-config --libdir) + # an ugly hack; TODO: figure out a way to pass -L to ocaml... + cd "${BUILD_DIR}/${libdir}" || die + ln -s "${llvm_libdir}"/*.so . || die + + if use test; then + local llvm_bindir=$(llvm-config --bindir) + # Force using system-installed tools. + sed -i -e "/llvm_tools_dir/s@\".*\"@\"${llvm_bindir}\"@" \ + "${BUILD_DIR}"/test/lit.site.cfg.py || die + fi +} + +src_compile() { + cmake_build ocaml_all +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake_build check-llvm-bindings-ocaml +} + +src_install() { + DESTDIR="${D}" \ + cmake -P "${BUILD_DIR}"/bindings/ocaml/cmake_install.cmake || die + + dodoc bindings/ocaml/README.txt +} diff --git a/dev-ml/llvm/llvm-21.0.0_pre20250211.ebuild b/dev-ml/llvm/llvm-21.0.0_pre20250211.ebuild new file mode 100644 index 000000000000..bacc5c89fa79 --- /dev/null +++ b/dev-ml/llvm/llvm-21.0.0_pre20250211.ebuild @@ -0,0 +1,107 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit cmake llvm.org llvm-utils python-any-r1 + +DESCRIPTION="OCaml bindings for LLVM" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA" +SLOT="0/${PV}" +IUSE="+debug test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=dev-lang/ocaml-4.00.0:0= + dev-ml/ocaml-ctypes:= + ~llvm-core/llvm-${PV}:=[debug?] + !llvm-core/llvm[ocaml(-)] +" + +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + ${PYTHON_DEPS} + dev-lang/perl + dev-ml/findlib +" + +LLVM_COMPONENTS=( llvm cmake third-party ) +LLVM_USE_TARGETS=llvm +llvm.org_set_globals + +src_configure() { + llvm_prepend_path "${LLVM_MAJOR}" + + local libdir=$(get_libdir) + local mycmakeargs=( + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + + -DBUILD_SHARED_LIBS=OFF + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_OCAML_OUT_OF_TREE=ON + + # cheap hack: LLVM combines both anyway, and the only difference + # is that the former list is explicitly verified at cmake time + -DLLVM_TARGETS_TO_BUILD="" + -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" + -DLLVM_BUILD_TESTS=$(usex test) + + # disable various irrelevant deps and settings + -DLLVM_ENABLE_FFI=OFF + -DLLVM_ENABLE_TERMINFO=OFF + -DHAVE_HISTEDIT_H=NO + -DLLVM_ENABLE_ASSERTIONS=$(usex debug) + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_RTTI=ON + + -DLLVM_HOST_TRIPLE="${CHOST}" + + -DPython3_EXECUTABLE="${PYTHON}" + + # TODO: ocamldoc + ) + + use test && mycmakeargs+=( + -DLLVM_LIT_ARGS="$(get_lit_flags)" + ) + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + # also: custom rules for OCaml do not work for CPPFLAGS + use debug || local -x CFLAGS="${CFLAGS} -DNDEBUG" + cmake_src_configure + + local llvm_libdir=$(llvm-config --libdir) + # an ugly hack; TODO: figure out a way to pass -L to ocaml... + cd "${BUILD_DIR}/${libdir}" || die + ln -s "${llvm_libdir}"/*.so . || die + + if use test; then + local llvm_bindir=$(llvm-config --bindir) + # Force using system-installed tools. + sed -i -e "/llvm_tools_dir/s@\".*\"@\"${llvm_bindir}\"@" \ + "${BUILD_DIR}"/test/lit.site.cfg.py || die + fi +} + +src_compile() { + cmake_build ocaml_all +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + cmake_build check-llvm-bindings-ocaml +} + +src_install() { + DESTDIR="${D}" \ + cmake -P "${BUILD_DIR}"/bindings/ocaml/cmake_install.cmake || die + + dodoc bindings/ocaml/README.txt +} diff --git a/dev-ml/reason/Manifest b/dev-ml/reason/Manifest index 045e76899975..394b9f0d60d8 100644 --- a/dev-ml/reason/Manifest +++ b/dev-ml/reason/Manifest @@ -1,3 +1,5 @@ DIST reason-3.14.0.tar.gz 675438 BLAKE2B 19ddd7ab800f33c9766665980a67a1df23121f063fc39827d78414762f0487c61f14ee97a9d84a6a521752b14ab17d1a15a3b2037e8304513e4f6e8a32ab9ca6 SHA512 feff9f5d7a00c39d528710401fa902a8a3a20808dbae2b32d5470dc1870a98b0fa1eef60f2fc8b8f4147401939ed53b1cca908b7cf2db82101c21e95de0840eb +DIST reason-3.15.0.tar.gz 687523 BLAKE2B 33e846d6d42570cf0ed6fd0da72a7d169a4457a77dd192b35c26b261682384869a8e162187df84fb45a671a644e2248bb13e1155cb7b83be73f5a2b8686a54ed SHA512 38f152e3c5c7842a0c3226fd5b5c8a736e3f1635f37d3790cce889471706730d3f60bc66e2037d59e906a1129cb0a6434482e36f7fe28b71f4884925be8511fb EBUILD reason-3.14.0.ebuild 878 BLAKE2B 9f89e4e95213a940a5c6a488f33fc81d4b94ab98e232cf0564c90d6080ac0470d4fb8c9ab7461007350fa008eb3640e8338ddb044a89afcf37563da41044487c SHA512 096645169d0e1f7ab35d83d58bfac110c76f0511dae4b834c2b5ec672d787c7f515cd8a6f31f6afff645969a5037430fccab6deb1167a2a8c35c95f2227f7eb3 +EBUILD reason-3.15.0.ebuild 932 BLAKE2B df0de03b1cf5fc01c71a26cf2b37111fbbe9f0d52deb045c8a10f9147731906d14c07fdf47c5339986ae690dad8243aa89afb25f965de28d0e2bf60725b6f427 SHA512 d92caf0e6d89be02667b68416997ea299e97b511807e86a35e18a12abb3bb43aba5ed33cfab02f7f795f122f8d110a48576fd7e56b9c52778586e24aebd2aaa6 MISC metadata.xml 583 BLAKE2B f5c1da34708a350aea239b28e65a07903409ca72d4fb530dc6192a820c27fa2da8f2a0fdc2f5716d4ea98b7501e963a904b7299e6f3118e92b3418afa6ae1d6b SHA512 cfcd0f1819698d0563f0b7885d8f7173554c5af1cebcd541b82c304e06806a5b8682cc8f3daf40212cd28f994ec06b6a342bd79c0c90c6726bc7bf853e3883ce diff --git a/dev-ml/reason/reason-3.15.0.ebuild b/dev-ml/reason/reason-3.15.0.ebuild new file mode 100644 index 000000000000..d6d9830c4828 --- /dev/null +++ b/dev-ml/reason/reason-3.15.0.ebuild @@ -0,0 +1,46 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit dune + +DESCRIPTION="Simple, fast & type safe language that leverages JavaScript and OCaml" +HOMEPAGE="https://reasonml.github.io/ + https://github.com/reasonml/reason/" + +if [[ "${PV}" == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/reasonml/${PN}.git" +else + SRC_URI="https://github.com/reasonml/${PN}/archive/${PV}.tar.gz + -> ${P}.tar.gz" + + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="MIT" +SLOT="0/${PV}" +IUSE="+ocamlopt" + +RDEPEND=" + dev-ml/cppo:=[ocamlopt?] + dev-ml/dune-build-info:=[ocamlopt?] + dev-ml/fix:=[ocamlopt?] + dev-ml/menhir:=[ocamlopt?] + dev-ml/merlin-extend:=[ocamlopt?] + dev-ml/ppx_derivers:=[ocamlopt?] + dev-ml/ppxlib:=[ocamlopt?] + dev-ml/ppxlib:=[ocamlopt?] + dev-ml/utop:=[ocamlopt?] +" +DEPEND=" + ${RDEPEND} +" + +src_install() { + dune-install reason rtop + + dodoc ./*.md ./docs/*.md +} diff --git a/dev-perl/Business-ISBN-Data/Business-ISBN-Data-20250205.1.0.ebuild b/dev-perl/Business-ISBN-Data/Business-ISBN-Data-20250205.1.0.ebuild new file mode 100644 index 000000000000..236e2a6f48c3 --- /dev/null +++ b/dev-perl/Business-ISBN-Data/Business-ISBN-Data-20250205.1.0.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=BRIANDFOY +DIST_VERSION=20250205.001 +inherit perl-module + +DESCRIPTION="Data pack for Business::ISBN" + +LICENSE="Artistic-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + virtual/perl-Carp + virtual/perl-File-Spec +" +BDEPEND=" + ${RDEPEND} + >=virtual/perl-ExtUtils-MakeMaker-6.640.0 + test? ( + >=virtual/perl-Test-Simple-1 + ) +" + +PERL_RM_FILES=( + "make_data.pl" + "t/pod.t" + "t/pod_coverage.t" +) + +src_prepare() { + sed -r -i '/^pod(|_coverage)\.t$/d' "${S}/t/test_manifest" || die + perl-module_src_prepare +} diff --git a/dev-perl/Business-ISBN-Data/Manifest b/dev-perl/Business-ISBN-Data/Manifest index c5605ce70fcf..66db1ca3fcb3 100644 --- a/dev-perl/Business-ISBN-Data/Manifest +++ b/dev-perl/Business-ISBN-Data/Manifest @@ -2,8 +2,10 @@ DIST Business-ISBN-Data-20240523.001.tar.gz 34250 BLAKE2B b5e28d45f03b7db74de810 DIST Business-ISBN-Data-20241019.001.tar.gz 35338 BLAKE2B 56d1319e7644863c3b52e7e60d4dd35f228b08411df3af90b6136cc061da6c764e439e05fa6fb716d8880a5938d0ec79110d01148548204ee02513b83cab9668 SHA512 416ff904e6c06cdfff771222a13fa1fe030ad8ea4a45578ed85b8f3ff016b9da1039e1a9ef8d002cc7a2d373501342162d7b5fb73fd36701ee94395baa6b842a DIST Business-ISBN-Data-20241123.001.tar.gz 35528 BLAKE2B 02b1f05697981c6a1dae7682b019e9e93eece4687ac0f2a99671218be2d2038ce734d6b02e398dc317b3a8a606cb67bf31992cd2b15d30d541aaae958013c1b4 SHA512 098f1611406af65436b5661f1436d6b040b0585c1a3338f313f976334b4c200d235250886e16ac8af9c9cb91b850a73e375105094fff7b3a0b007fcccd6db7c4 DIST Business-ISBN-Data-20250118.001.tar.gz 36379 BLAKE2B b0f8be50b799ef33fae8363222836adb90f04803a057a93e7047f8df34fdf8a9b6abb34a726f67d9b681535ede713dcd0e8ad21d48814cb548f150cf2f74f4ac SHA512 2d49f2a5794413b02b748fbc12a02d6db82b7964b3e91e72a116d3bc689e1b39e1b5cb563c8c0c8e7f019bc36edd343cd2938bab9124562f86abb11965e22734 +DIST Business-ISBN-Data-20250205.001.tar.gz 36418 BLAKE2B 397bcef0fbcfb67e2794f09c71692689edcf0829e6efdfcd9566cc5494ce2231144cc3ee5bb916ebe768cb84ea1c816a7e773c51fb5884e646acb8045017dddb SHA512 7c880a37b44d2ede8bf20fb0906aab56ec4bf76853fe9fd4992ea8fa371ca42c1d77ec475951714d3ff0f8e7a9d07d217830141fb2f7302ab0f1d8d80eda3923 EBUILD Business-ISBN-Data-20240523.1.0.ebuild 684 BLAKE2B eea0ba50278c30a69c23cb14aa05277df7264324384e53c057616048d0ab0a10754ce4b4c5449705cebfddd00f659f18e123c74b665873b6b346aef4723d3cb9 SHA512 b25b87198ee559e44bb473c274c6069a8e6070780227a28ac4efabc0ef39a88f6be3434d6eeea9cbea1f0bb85387360ca8fd8eee5d66c5902abd2c89de0a8bf0 EBUILD Business-ISBN-Data-20241019.1.0.ebuild 684 BLAKE2B ae1106771ad31a9bdc0a303b4115a42ddf402dca8e8c188db94d1a8d26ee8af6116196e04054578d4d1812f7adc9d7220d0a945f143736cceff1ad8dedcfaae0 SHA512 50c5ae5fc2f063501de9d9c5e4cf9f7075a925db8e1125e1149b6e6fab7eae9d231c27cb7a5731727f1a74f9f77c3fd0260c60ce0f44bf861b3fa56f154ff79c EBUILD Business-ISBN-Data-20241123.1.0.ebuild 686 BLAKE2B 8725cd8d6cb9d5c80652c2d2a576c5bee3acf82a5b5cb0d4f6af449db6373436f502cb4b32e5fd0e37ba603ddc7fbf1b61fc5ccc43ba16a9eac79242a5c23466 SHA512 a137c5468fff6885496ef90f0d6422beeb9ac7d8716a1321b5809b5d35b97a13147edf7db9ba49044cdedc1e1379e4dd26927b5c2cdfd9a3b818a8a86bcbd81f EBUILD Business-ISBN-Data-20250118.1.0.ebuild 692 BLAKE2B c52235b843a0dab418178655c96d7fa25fde2f6ca32a81b39e882f8dc2bfcaf9c550716c3efa10d3922871fac0f904cac4720c6b0e608e1a3d8775c508fb40a3 SHA512 fa2193b94dd7a68879d5959c3e1e24b0bbfa16483fb4cc281047423d2a501986107bc0882db50a4b9de9840de490b1bfecd6fc1bb1f81616d35c161ef3a14fa5 +EBUILD Business-ISBN-Data-20250205.1.0.ebuild 692 BLAKE2B 5a65c5d44c3e7c5c806ac0266dd46be16c4fc027327d0ee1741b7f5677ad1029a6ec44189b58abb1cb586e0a81eb1d6bedb11290e53619f18967e6e04506bce7 SHA512 717fbf994c11c372d7e48872be269ac9b9bbcf79764ea7d1588db68d182c2ec965acdd701ba904b98bd2f7c764ec675942386d27914a0de967463abfa54efd2e MISC metadata.xml 466 BLAKE2B 63b1bf06af7057e208a42c7cdac2ad2ec56418cc1f9a191d137fc0ebd612713601483ef0e6ec56b54738da7b695eb72efbc4f99da3edaf1332dc2d72c8cf6980 SHA512 03aa05434856fcb9f9094e3c3d4de9edecef05d77bf6757982685bd4d69999bb99045afa13534ca3ab75847be1dac7575355c45627e093774dc4d3896688f90d diff --git a/dev-perl/Business-ISSN/Business-ISSN-1.8.0.ebuild b/dev-perl/Business-ISSN/Business-ISSN-1.8.0.ebuild new file mode 100644 index 000000000000..9e4fbcd37fdb --- /dev/null +++ b/dev-perl/Business-ISSN/Business-ISSN-1.8.0.ebuild @@ -0,0 +1,36 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=BRIANDFOY +DIST_VERSION=1.008 +inherit perl-module + +DESCRIPTION="Object and functions to work with International Standard Serial Numbers" + +LICENSE="Artistic-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + virtual/perl-Exporter +" +BDEPEND=" + ${RDEPEND} + >=virtual/perl-ExtUtils-MakeMaker-6.640.0 + virtual/perl-File-Spec + test? ( + >=virtual/perl-Test-Simple-1.0.0 + ) +" + +PERL_RM_FILES=( + "t/pod.t" + "t/pod_coverage.t" + "t/test_manifest" +) + +PATCHES=( + "${FILESDIR}/${PN}-1.003-no-test-manifest.patch" +) diff --git a/dev-perl/Business-ISSN/Manifest b/dev-perl/Business-ISSN/Manifest index 91293280ed84..07ecbd80a51c 100644 --- a/dev-perl/Business-ISSN/Manifest +++ b/dev-perl/Business-ISSN/Manifest @@ -1,4 +1,6 @@ AUX Business-ISSN-1.003-no-test-manifest.patch 759 BLAKE2B d89f7c59b29742276456743a926c6cdf9ed2b3e9ccd4259c73080a32bdc9efdcec720f473fa75ef084270e9e4e3c6603ca08552ce612d03ffc2c01b37037e92a SHA512 e923dcd24f9077d90d37255c68f5b46b6ad6c3edceaba41d27f65c6f0e87bcb007b620b477eb77384d96e09771cd56cd1927462e5c3d462f6cad51785c819829 DIST Business-ISSN-1.006.tar.gz 11377 BLAKE2B f7cc03b0a67a3bc39e93842d25bc653623a19530b1b637b3cbafe5443000ad6c179d3aca4f985344b9cfdcf41768778b0d7b708048a6b37cc7997433ee903314 SHA512 ddbdbeb4f30debbf11a3e97d6a44e9a89ada638582d96cf128c54acf5d157700de73de2c8e0977fe2a3ecb4030b8f9d6e8bd141335d7bd59d06c945d643373c7 +DIST Business-ISSN-1.008.tar.gz 12332 BLAKE2B 039e06552e6b65c488443b0da8e9ab5e2fec75d1f30d68c124ac0bf82781e97fde83f9ac0798b842a9220118d0589f116bd3d83a5fc040c909333097201908e7 SHA512 05933769e1ea5f8a62dfd7c46ffcbced20dda366eb564066c97408b17f6dc17d54476b4fdd6139d293182ccd495f4dd27a89cef9e04d6718e06d5c03f01d5f86 EBUILD Business-ISSN-1.6.0.ebuild 683 BLAKE2B a9fae0fc277ed38f626833463ad23f0f4c590a34fde01eb1f4621fbf75c17f8ef9a6dc6db3717c01c93ce8b2e604a29d7c0801b776bc1bf4fe85fb86cfe7d06f SHA512 1d3ca97976f8059f07fe3dbfb7a5e6eeeced4ab385a5773f3bd5c964ef684fc9d720950db4afd17b91d92420fee9eabce9923968c0462001c9172e844ddd13e2 +EBUILD Business-ISSN-1.8.0.ebuild 691 BLAKE2B 6f303a09b36510db390dd0766572b5477dcf80fe89946b519687cd8cbe7eb35e6053c9f7d2f80c4658090a4d99115fb49a1c5772b605c5682b9a8dbe5fe899f4 SHA512 a269b536ad1e458311f2357e2c11a436e7c309f81c285e83105794080cbe145cc27b83e46aa6383a9ae811c8c36dd8600b242ea64e78439461ac5f7b1ca82cae MISC metadata.xml 387 BLAKE2B f8222e80ce81c7e8a538054d019b7f244af9e9e43298f7bc846fa20b4fbc6dddd2f5ea2c9c250eb1bb1b2adce1a96fb80b1bbefe15a0f55fabae67db3380337f SHA512 10a1b57a228a4816cfa35e3c98e7adaf500f446c6a31d25d5137fcde042ee5c6506fb58c3df08c4cb337980694f0a19a67240f8d3c5cb9299bafd0b3a3ba3dfb diff --git a/dev-perl/Crypt-URandom/Crypt-URandom-0.530.0.ebuild b/dev-perl/Crypt-URandom/Crypt-URandom-0.530.0.ebuild new file mode 100644 index 000000000000..eb1b4a6fe041 --- /dev/null +++ b/dev-perl/Crypt-URandom/Crypt-URandom-0.530.0.ebuild @@ -0,0 +1,27 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=DDICK +DIST_VERSION=0.53 +inherit perl-module + +DESCRIPTION="Provide non blocking randomness" + +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND=" + virtual/perl-Carp + virtual/perl-Exporter +" +BDEPEND=" + ${RDEPEND} + virtual/perl-ExtUtils-MakeMaker + test? ( + virtual/perl-Test-Simple + ) +" + +PERL_RM_FILES=( t/pod.t ) diff --git a/dev-perl/Crypt-URandom/Manifest b/dev-perl/Crypt-URandom/Manifest index c7cf9d0c36df..668bcea07197 100644 --- a/dev-perl/Crypt-URandom/Manifest +++ b/dev-perl/Crypt-URandom/Manifest @@ -1,5 +1,7 @@ DIST Crypt-URandom-0.39.tar.gz 8981 BLAKE2B 80a8474e4f2d0afd1133888f3ad10cac20419a924d967a6fe62cfb85240b81c7906ffac9476a0e58f8360a4ca0fdc3500c91e2079756657047d1c0880ccc038d SHA512 ed1369c7ad8a5c441f85415b077f0d194f6833080da9327a460412b99836d2af284d9a7ad694759155c227a2ceeef1468266d03250123f520c4b1bbadb451b75 DIST Crypt-URandom-0.52.tar.gz 23665 BLAKE2B eecc54b5c16be6efd4d699b09d4908bbd06f46c0e9a4ced91f639a38d92b6426e9a6fa08cfc5ea04670d35a480e1b580baf07e045a472877937fc2ad4ec6d0c5 SHA512 50e8f265dcb25e1b73ab3ea8da0fde2115d4a355d9d63ae055befd0905c7650b1de0c67210c04cb5b381c8b9366d068312d82f92803870a97b7d7fb0e598a1b7 +DIST Crypt-URandom-0.53.tar.gz 23739 BLAKE2B 69cf434d4a98dbb134baff75c252242d8dcb42e9ef4be04856207ccb4183e1f5455ff36185b33519847c82007933fbeb8c7bee6d572d3612a418c501b5b0e011 SHA512 f6978ae8fff4c56bfa2941d962f3c1c81965c93db450d49224c34b6809048a37b001c9eebbebd697908ce5d7bd85d793d541cf2bd73e59da59ece3f292fd1fc4 EBUILD Crypt-URandom-0.390.0.ebuild 427 BLAKE2B b336e0bbc7406ca613a4f0853292c9d71cdda6a74388e7eb664a591e2f84e4308f14bc7d92671027e24b5832ceead789cd56f9ab854b42f34b33e55c82fbdd49 SHA512 818b1b683da0c530065ed65d9e46c47dee2d024a57afe24ed4a4c81961dbfff3d666001fe7302274204d4e31776640df0841fb3cf58afc49935d60c4e483570a EBUILD Crypt-URandom-0.520.0.ebuild 427 BLAKE2B ec7201fc91bae732f1ee4964ba2dcd1bcd28361556094e138a13f05f440d8ee20fb3cb409a9e21167355ff52a2341630090235865c9353d3e028496a88d34fb7 SHA512 ea4f94b0194bb4979dec75ea2d561a5faa59ad7fc42124a4e45eb40e1f4f46038804dfc8ac214330f78f1db36bf2785f85c48e52202e9376345dbbb81f490cca +EBUILD Crypt-URandom-0.530.0.ebuild 427 BLAKE2B 14af5c5131b144ab75843aebd3c0c6b823a5693b749762f87009d430768035409833ece72ed7c779b0f779b23608e2b5da8b99612f1ad6757377fdd390419f1b SHA512 514bfb259407b989144842e8300566938724b37a71fba4c2bbdfc6719c6b4447700d9dba05b83e14d3821b90fc345f42175118522d6e94e94148380919fe9157 MISC metadata.xml 399 BLAKE2B d9233caadd59dc5845e398d99e50ee6550c112b97ac1b2e9571a0926de5f9eed96e493f94d9f4b05b77a59f5b2ac42493dc93d78dd77d570193d50fe9dadaabd SHA512 418524cf8841c8a96bcfb923b4e4033054ea31b51db09643e9ce56c49ff280d0e6044b0c84acbaf71c9a20cd22ee7bcc5a8f22faa71f151667a61e3c9899c923 diff --git a/dev-perl/CryptX/CryptX-0.85.0.ebuild b/dev-perl/CryptX/CryptX-0.85.0.ebuild new file mode 100644 index 000000000000..01b79501f057 --- /dev/null +++ b/dev-perl/CryptX/CryptX-0.85.0.ebuild @@ -0,0 +1,51 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# TODO: unbundle libtommath, libtomcrypt. There's experimental support upstream. +# bug #732634 + +DIST_AUTHOR=MIK +DIST_VERSION=0.085 +inherit perl-module + +DESCRIPTION="Self-contained crypto toolkit" + +LICENSE="|| ( Artistic GPL-1+ ) public-domain" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="minimal" + +RDEPEND=" + virtual/perl-Math-BigInt + !minimal? ( + dev-perl/JSON + ) +" +BDEPEND=" + ${RDEPEND} + virtual/perl-ExtUtils-MakeMaker + test? ( + >=virtual/perl-Test-Simple-0.880.0 + !minimal? ( + >=virtual/perl-Math-BigInt-1.999.715 + >=virtual/perl-Storable-2.0.0 + ) + ) +" + +PERL_RM_FILES=( + t/002_all_pm.t + t/003_all_pm_pod.t + t/004_all_pm_pod_spelling.t + t/005_all_pm_pod_coverage.t +) + +PATCHES=( + "${FILESDIR}"/${PN}-0.85.0-respect-flags.patch +) + +#src_configure() { +# CRYPTX_LDFLAGS='-ltommath -ltomcrypt' perl-module_src_configure +#} diff --git a/dev-perl/CryptX/Manifest b/dev-perl/CryptX/Manifest index f78565353612..a00e3b815566 100644 --- a/dev-perl/CryptX/Manifest +++ b/dev-perl/CryptX/Manifest @@ -1,4 +1,7 @@ AUX CryptX-0.82.0-respect-flags.patch 1521 BLAKE2B d626cdc2ed56e109b625d641c7b9c0d7a1e808bb2b80bbe92951fac29039d1b6ca280458acbbb0be5d788686fdacb8f66381c73636c903114a881d0813306e0c SHA512 43971ff34d103c6475d2d2e7fbee440dca55572898b7e8694cb654db36e5f551182342fdb9abd6f72cd71085ff2fac9872fe724ef1be2c3a400336a0e5c30905 +AUX CryptX-0.85.0-respect-flags.patch 1517 BLAKE2B e22ee0e45af1165b7fb6cd10cc66686fa95a6d803dd18401200723db68d65022835400daa249862cea0e21e388092c87c8c998bd6f7ac494144377bcd40e945e SHA512 6ec1fa6c1beeac1f54d445835ddfa33fb782da42c573a5c986f5faf5459bbf0e85509d60ad7212292d8721925ae603ae9e8c1a58724e13df017061ece36c620c DIST CryptX-0.084.tar.gz 1786781 BLAKE2B 25df25f6ba67f34193dccd15051c6ceb9b71ab9a42735f6560bccdaf10918ed9217a7f7d4ca73b617981c385a18e961b27bdd8f6acf82c15cb246e8e3deba8b2 SHA512 c67c5b0aca1899155c37c3dbdb92249d1bc3e1781478a0aec3b3d4e01c70efd806bc325dc991462f9064ba0f18ec7c56c6d8383f068277ae1fc684cad88d4bd9 +DIST CryptX-0.085.tar.gz 1786764 BLAKE2B c29f3092e65f6c48d44989b108c799a53c8636eafe26a926e2931de460b049adaad2c104700008f8ddaf763bb69202dd4f9e4b15ad4db4249912db96a1179da3 SHA512 620eb8d9a8a1e9fbd2d877491d34667fbafb7d29a4de0bc1b95e9eddef22b4b6fa749a1f8f86ff25088bc8d4d3efdeea0a462b0a32b03e63c343392884b79cd9 EBUILD CryptX-0.84.0.ebuild 998 BLAKE2B fdece429f0e1d96265f14272328e214259bd6d8accf4738ef9a43fd8a37cf8cf65d187348782ec5b2c4207b22e0de7427e90e7d148d74c278a4f29686f1cc025 SHA512 7768f4ffd6b0cd9ad1d3e1a942da6ffd7f0d2b83865f06735504af4a946f95b20068c3af81b504f9654dd919bb54f924ba6797bb7599fe132b4ce64029701fda +EBUILD CryptX-0.85.0.ebuild 1005 BLAKE2B a9d22e2be8a8be9675d81819c4f7a6a687f80531bd313bb17b5de2a13147b5f1957e47630824b046f9e3a4f79eab9c2af474587954e902d14c25b9dc6a9552ab SHA512 7eca4bead373f7371919c862d99edeb5507bc93a95fe9d8ec86254f0fb883501a052c3f741c7057fb8059e765b2bc832a9815a3b9c536fad56a566790ed77cdc MISC metadata.xml 7682 BLAKE2B dac5e42af5a5b3a49af0adb11718172066090ddcc8dec1661d29ca76eca4a0b34b2c828b83a9fce8b125c1a2120ec513edaf9d97ee8e32c313e4e4aa99fdcef9 SHA512 4559cc741fc4c095500301bc8c89bb2a2680454e3428bff9e1d2c6ad0853aa9568f731af65ef275e80692d148bb83e9f1dad1186853d058e65c25e5df26fa4c9 diff --git a/dev-perl/CryptX/files/CryptX-0.85.0-respect-flags.patch b/dev-perl/CryptX/files/CryptX-0.85.0-respect-flags.patch new file mode 100644 index 000000000000..9628aaedf756 --- /dev/null +++ b/dev-perl/CryptX/files/CryptX-0.85.0-respect-flags.patch @@ -0,0 +1,23 @@ +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -27,20 +27,6 @@ else { + ); + $mycflags = " $Config{ccflags} $Config{cccdlflags} $Config{optimize} "; # keep leading + trailing spaces + +- my $try_aes_ni = 0; +- $try_aes_ni = 1 if $Config{archname} =~ /x86_64/; # x86_64-cygwin-threads-multi / x86_64-linux-thread-multi +- $try_aes_ni = 1 if $Config{archname} =~ /MSWin32-x64/; # MSWin32-x64-multi-thread +- $try_aes_ni = 1 if $Config{archname} =~ /amd64/; # OpenBSD.amd64-openbsd-thread-multi / amd64-freebsd +- $try_aes_ni = 1 if $Config{archname} =~ /darwin/ && qx(uname -m) =~ /x86_64/; # darwin-thread-multi-2level / darwin-2level +- $try_aes_ni = 1 if $Config{archname} =~ /i86pc-solaris(-.+)?-64/; # i86pc-solaris-thread-multi-64 / i86pc-solaris-64 +- if ($try_aes_ni && $Config{gccversion}) { +- my $ver1; +- $ver1 ||= $1 if $Config{gccversion} =~ /^([0-9]+)\./; # gccversion='10.2.0' +- $ver1 ||= $1 if $Config{gccversion} =~ /LLVM ([0-9]+)\./i; # gccversion='Apple LLVM 14.0.0 (clang-1400.0.29.202)' +- $ver1 ||= $1 if $Config{gccversion} =~ /Clang ([0-9]+)\./i; # gccversion='FreeBSD Clang 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a303)' or 'OpenBSD Clang 13.0.0' +- $mycflags .= " -DLTC_AES_NI" if $ver1 > 4; # target attributes are supported since gcc-4.9 +- } +- + #FIX: this is particularly useful for Debian https://github.com/DCIT/perl-CryptX/pull/39 + $mycflags .= " $ENV{CFLAGS} " if $ENV{CFLAGS}; + $mycflags .= " $ENV{CPPFLAGS} " if $ENV{CPPFLAGS}; diff --git a/dev-perl/Glib-Object-Introspection/Glib-Object-Introspection-0.51.0-r1.ebuild b/dev-perl/Glib-Object-Introspection/Glib-Object-Introspection-0.51.0-r1.ebuild new file mode 100644 index 000000000000..a4bf26867b85 --- /dev/null +++ b/dev-perl/Glib-Object-Introspection/Glib-Object-Introspection-0.51.0-r1.ebuild @@ -0,0 +1,38 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=XAOC +DIST_VERSION=0.051 +inherit perl-module xdg-utils + +DESCRIPTION="Dynamically create Perl language bindings" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86" + +RDEPEND=" + >=dev-perl/glib-perl-1.320.0 + >=dev-libs/gobject-introspection-1.0 + >=dev-libs/libffi-3.0.0:= + >=dev-libs/glib-2.0.0 +" +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + ${RDEPEND} + >=dev-perl/ExtUtils-Depends-0.300.0 + >=dev-perl/ExtUtils-PkgConfig-1.0.0 +" + +PATCHES=( + "${FILESDIR}"/${P}-new-gobject-introspection.patch +) + +pkg_setup() { + # bug #599128 + xdg_environment_reset +} diff --git a/dev-perl/Glib-Object-Introspection/Manifest b/dev-perl/Glib-Object-Introspection/Manifest index fbfdd434114e..8ff68163cc10 100644 --- a/dev-perl/Glib-Object-Introspection/Manifest +++ b/dev-perl/Glib-Object-Introspection/Manifest @@ -1,3 +1,5 @@ +AUX Glib-Object-Introspection-0.51.0-new-gobject-introspection.patch 2096 BLAKE2B 9c99f482027e46cc4d57597b3ddc7fd8a9c0d48db2bb7d64090c0d989aba0c22720c6750334a9f34d2fc35542a77ac154fb747009310a9c1962bc9735ac75760 SHA512 1652dd8105255a699c39f62ebdf5bfa688b59773228360e9aabfbf797699779cdf5502be680c75a6b2379c93016a07efe7ec64377980d2efff97d7bf437153ac DIST Glib-Object-Introspection-0.051.tar.gz 89445 BLAKE2B 7447bf8473acdfe015ffaab6f4b33420efe23aed5852e2eba54eed8a3edb7275a94abe1c3dad9583f175c30146c3b32e2191f14b2bec5c9c9f36355cc80a5098 SHA512 93ebe81b586270cbeca4296bfdd1d337d931b6349ca16a8e50bfc631c89a77d93f4d8076289e91bdcec0fdb732a2900b2a6c5e78e571c0c0fd4c7f5239cc0de5 +EBUILD Glib-Object-Introspection-0.51.0-r1.ebuild 697 BLAKE2B 39859df79b399043992e9ed3759e6476f48c5b2efc6afdbda23803f17057eb04b1e48c00b908b07cbca174a03f27404a26417c66027b358d46c9bd10fab37009 SHA512 536797c464fa00a57f40e3f13d0779ad93eac847412c1429b162e575d63acc58b2c94b2798572272e9e30355b97a3616bd3c24d690eacfd72b8da5256cab6645 EBUILD Glib-Object-Introspection-0.51.0.ebuild 628 BLAKE2B e8d6de9dfe8bb54b232f15f8fc45aeeec88a72068dd321588380cd3564a233f16a441c03553cc4ac85cee6d9332b3a4b172a37f99e49c5f58603f3d8e35aaa0f SHA512 37a2e6fc80639d96bba19fadbd088b047dc410c064b8398df94b6e5ac4d72abfa91dd879e407c71df00e22deb8bed1eef05e4a6012dac9812dbdf1ab01411c19 MISC metadata.xml 412 BLAKE2B d21ff75abddb2f7e5ece1a2a3bf1d55dae89449dd1148c60f3a32ddfffdfcbbba56807074163f154247401d938c8afddb7e434c94a5957e0e70e92f806317fc8 SHA512 442bcc47771a161868faa68dc16b4bda36c6e68a5391cee94d59821ef1648d7d485a82e3d97fb439d5f3fc373ce83a218ace37c37259fb143f96a9392804c83a diff --git a/dev-perl/Glib-Object-Introspection/files/Glib-Object-Introspection-0.51.0-new-gobject-introspection.patch b/dev-perl/Glib-Object-Introspection/files/Glib-Object-Introspection-0.51.0-new-gobject-introspection.patch new file mode 100644 index 000000000000..c0b6ac639be9 --- /dev/null +++ b/dev-perl/Glib-Object-Introspection/files/Glib-Object-Introspection-0.51.0-new-gobject-introspection.patch @@ -0,0 +1,50 @@ +https://gitlab.gnome.org/GNOME/perl-glib-object-introspection/-/commit/e5adffecdc9b321d1f8d91777b190b8ae08f8dd0 + +From e5adffecdc9b321d1f8d91777b190b8ae08f8dd0 Mon Sep 17 00:00:00 2001 +From: Emmanuele Bassi +Date: Sat, 14 Sep 2024 13:09:59 +0100 +Subject: [PATCH] Handle pointer types + +Now that gobject-introspection pairs G_TYPE_POINTER types with their +type registration function, we need to handle the case in which we are +passed a pointer to a record that inherits from G_TYPE_POINTER. Since +these types are basically plain pointers, we can reuse the sv_to_struct +and struct_to_sv functions we use for untyped structures. + +Fixes: #7 +--- + gperl-i11n-marshal-interface.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/gperl-i11n-marshal-interface.c b/gperl-i11n-marshal-interface.c +index 2bef8eb..50cce51 100644 +--- a/gperl-i11n-marshal-interface.c ++++ b/gperl-i11n-marshal-interface.c +@@ -41,6 +41,12 @@ instance_sv_to_pointer (GICallableInfo *info, SV *sv, GPerlI11nInvocationInfo *i + info_type, + sv); + } ++ } else if (g_type_is_a (type, G_TYPE_POINTER)) { ++ dwarn (" -> pointer\n"); ++ pointer = sv_to_struct (GI_TRANSFER_NOTHING, ++ container, ++ info_type, ++ sv); + } else { + dwarn (" -> boxed: type=%s (%"G_GSIZE_FORMAT")\n", + g_type_name (type), type); +@@ -397,6 +403,12 @@ interface_to_sv (GITypeInfo* info, + } + } + ++ else if (g_type_is_a (type, G_TYPE_POINTER)) { ++ dwarn (" -> pointer: pointer=%p, type=%"G_GSIZE_FORMAT" (%s), own=%d\n", ++ arg->v_pointer, type, g_type_name (type), own); ++ sv = struct_to_sv (interface, info_type, arg->v_pointer, own); ++ } ++ + #if GLIB_CHECK_VERSION (2, 24, 0) + else if (g_type_is_a (type, G_TYPE_VARIANT)) { + dwarn (" -> variant\n"); +-- +GitLab diff --git a/dev-perl/IO-Interactive/IO-Interactive-1.26.0.ebuild b/dev-perl/IO-Interactive/IO-Interactive-1.26.0.ebuild new file mode 100644 index 000000000000..f32dfa9c37c6 --- /dev/null +++ b/dev-perl/IO-Interactive/IO-Interactive-1.26.0.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=BRIANDFOY +DIST_VERSION=1.026 +inherit perl-module + +DESCRIPTION="Utilities for interactive I/O" + +SLOT="0" +KEYWORDS="~amd64 ~ppc ~riscv ~x86" + +RDEPEND=" + >=virtual/perl-version-0.780.0 +" +BDEPEND=" + ${RDEPEND} + >=virtual/perl-ExtUtils-MakeMaker-6.640.0 + virtual/perl-File-Spec + test? ( >=virtual/perl-Test-Simple-1.0.0 ) +" + +PERL_RM_FILES=( "t/pod.t" "t/pod-coverage.t" ) diff --git a/dev-perl/IO-Interactive/Manifest b/dev-perl/IO-Interactive/Manifest index 6c8e07ecad9d..ac2b48b7021d 100644 --- a/dev-perl/IO-Interactive/Manifest +++ b/dev-perl/IO-Interactive/Manifest @@ -1,3 +1,5 @@ DIST IO-Interactive-1.025.tar.gz 13097 BLAKE2B f777cfa740981125d9b7741a1351d9ec4eefef466b04e488ae10727d65275d1c98fc10693a6d1cf267422ce8a971ac1604e6a094105c3db954de5b803095a72e SHA512 b9aca9d3920ea256e5b2c3e19559e7626ab076b36b38b58eecf087d8a2614b805a0226246bf035eb41b801a0972dfb19e1c99d2f8105bd403db5017e84b6e2dc +DIST IO-Interactive-1.026.tar.gz 14014 BLAKE2B 63985fad9b5695cae8955988fc0631abc077a0c1fc1bed3c4c3b3700db348d3b3df5889f1e3bea48dcb2548a50036cddc9ff6944bac5eb5cfdb51c8585b52f2a SHA512 d8c0af451a1f45e2e2ec5cc8dc3fca777d59dc04a301bf83dbe4f3839038e04744d69e9cdc82f9e5f4f8c59fac1fcb81cd7134f6d080e36eb4a25bd27bfd01d3 EBUILD IO-Interactive-1.25.0.ebuild 485 BLAKE2B 4fb7a982321ca76a6404b7dea8a4215a9371a8e21fc273691af890ad27c5956b47c55132d905ac98d7d2863a5be903cb3946c4c55e7a8629b825cca5bcd1392f SHA512 07c4e89fa0132d41cb63db12e4a43cc3e9d8a47823a50add755a71837bfdde6696a3d15b12bead473ef3e4905cda0cc4bd1e138b476190bdafcad162e485cbb8 +EBUILD IO-Interactive-1.26.0.ebuild 492 BLAKE2B c53bc8a45f9cbe0411a07a54997e091d91abed6f03bed55b37d33d47b24fc9758d7f970edb76ce0d515afa31967861c89df559d43ddce01fe1aa7b1031ff4735 SHA512 a265349b3bec565869fbe03fa85b4e5ae15f3124b250849030fda9e51ea64ef1ecbe8ae4f7d9ed8c92cc7c9550e4a58d9c7b593c51983c04305cc800d379b882 MISC metadata.xml 389 BLAKE2B f8c522216ac651302a789d59087ffe895f8b94e017a584267393e081d635507978ae6eb00c5966126c62d7084f8cfa5c3f6f575dc0c0f4236444dea8d8e16454 SHA512 0fae7a9dc0f57cb72bedd4222e477851b4d829ebdb41684504c998fc9a457b1cb6f9006a193885d2b19f1c96bfd52b9c292e29185ea0649912c32557e8426d2c diff --git a/dev-perl/MIME-Types/MIME-Types-2.270.0.ebuild b/dev-perl/MIME-Types/MIME-Types-2.270.0.ebuild new file mode 100644 index 000000000000..c083742ad020 --- /dev/null +++ b/dev-perl/MIME-Types/MIME-Types-2.270.0.ebuild @@ -0,0 +1,22 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=MARKOV +DIST_VERSION=2.27 +inherit perl-module + +DESCRIPTION="Definition of MIME types" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" + +RDEPEND=" + virtual/perl-File-Spec + virtual/perl-Scalar-List-Utils +" +BDEPEND=" + ${RDEPEND} + virtual/perl-ExtUtils-MakeMaker + test? ( >=virtual/perl-Test-Simple-0.470.0 ) +" diff --git a/dev-perl/MIME-Types/Manifest b/dev-perl/MIME-Types/Manifest index 9f76872e0eef..385ad5dff2a2 100644 --- a/dev-perl/MIME-Types/Manifest +++ b/dev-perl/MIME-Types/Manifest @@ -1,3 +1,5 @@ DIST MIME-Types-2.24.tar.gz 65785 BLAKE2B 07897834b5c8c75d21a909c1baeb55d19fa6c5cd7f7ae81b3525af8a7a68c16d06304e2fcda95e2d104cfd67c1a4ce2ba08b68d34b47e377015626a2b797f0dd SHA512 5f1ba7b461eb18438b7e1bcc49291d0a506d937f0020f2a8b17594e4de626110f8d4b4a767d78b491ae788b6a6ea531d8ce2c2245cc614700ac8fa6d320d2bd7 +DIST MIME-Types-2.27.tar.gz 66999 BLAKE2B c8c2dd0a600b99a47b4683c8d9159acfcd9f3a955c1d0c7052aef731dfe83f9c9755fa37d4f5d4fb57ea3dcf75741515350cb5d619bc73881daad344063145a5 SHA512 e738123bd78b9195bd55d278fdd6b38e0062ef1c03e00ca2de2cd55090de554181bdfdcd12ae22ba22df535971aa63edbb1400c473f3cfac55cbe606fb1d65b9 EBUILD MIME-Types-2.240.0.ebuild 499 BLAKE2B d2cfa6c092acbe4a1cd35c5da2d4f6fc2f54096023bf625a1d78ab08cb9cb2a34ecdaf797322557eab5e9b592c243a9dbd1768b29493f8265c25f3a34758860e SHA512 d9f734e326196b0339fb222ccb2bf5c0a6cf5ccc349c2f4418dbe0babaa146ee6c38704c492f9dde8058085b659b28b4b032ab9a3611d98d5f2759a134c5e19a +EBUILD MIME-Types-2.270.0.ebuild 508 BLAKE2B bc124f19d0926ddd11a31ec1f8a17b7f4eb3e5fcbeaa076586988ba1ad2f09685a4758efd51e4e9a609cf2ede2da75c533f7510de5fdcfdbf1d2b946bded1062 SHA512 713c44a4e95817bd4772fdf610ffb86525db1e5da68ccc7783b372e80f83a78f93dce94c6aaa61c8577b55209bd921f5a9466028737fa03603eb6e36408ec55a MISC metadata.xml 500 BLAKE2B 91088b70d4c1f07e40f919ce3edf61cc48c80aaf4c0832e032fb2bcb4937a36b7818b296fa5e9840156fcd5248879c9224552e04b8d28cab0846a2d6b9b2b4b5 SHA512 b42970cbd2b5ab806f2b45e8859fb6e4bf200bf13b3040567a57ba34cb694c0ffe21178afab65f34d0b771dcf805f5ba744fcbb968ac6d764504d3a082ca09ff diff --git a/dev-perl/Mail-DMARC/Mail-DMARC-1.202.502.30.ebuild b/dev-perl/Mail-DMARC/Mail-DMARC-1.202.502.30.ebuild new file mode 100644 index 000000000000..c57fb9d91e9f --- /dev/null +++ b/dev-perl/Mail-DMARC/Mail-DMARC-1.202.502.30.ebuild @@ -0,0 +1,89 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=MSIMERSON +DIST_VERSION=1.20250203 +inherit perl-module + +DESCRIPTION="Perl implementation of DMARC" + +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="minimal" + +RDEPEND=" + !minimal? ( + dev-perl/Mail-DKIM + dev-perl/Net-IMAP-Simple + dev-perl/Net-SMTPS + ) + virtual/perl-Carp + dev-perl/Config-Tiny + >=dev-perl/DBD-SQLite-1.310.0 + >=dev-perl/DBIx-Simple-1.350.0 + virtual/perl-Data-Dumper + dev-perl/Email-MIME + >=dev-perl/Email-Sender-1.300.32 + dev-perl/Email-Simple + virtual/perl-Encode + dev-perl/File-ShareDir + virtual/perl-Getopt-Long + virtual/perl-HTTP-Tiny + virtual/perl-IO + virtual/perl-IO-Compress + dev-perl/IO-Socket-SSL + dev-perl/libwww-perl + dev-perl/Mail-DKIM + dev-perl/Net-DNS + dev-perl/Net-HTTP + dev-perl/Net-IDN-Encode + dev-perl/Net-IP + dev-perl/Net-SMTPS + dev-perl/Net-SSLeay + >=dev-perl/Net-Server-2 + virtual/perl-Socket + >=dev-perl/Socket6-0.230.0 + virtual/perl-Sys-Syslog + dev-perl/Test-File-ShareDir + dev-perl/URI + dev-perl/XML-LibXML + virtual/perl-parent + >=dev-perl/Regexp-Common-2013031301 +" +BDEPEND=" + ${RDEPEND} + >=dev-perl/Module-Build-0.360.100 + virtual/perl-ExtUtils-MakeMaker + >=dev-perl/File-ShareDir-Install-0.60.0 + test? ( + dev-perl/Net-DNS-Resolver-Mock + dev-perl/Test-Exception + dev-perl/Test-Output + virtual/perl-Test-Simple + ) +" + +PERL_RM_FILES=( + 'bin/install_deps.pl' +) + +src_test() { + local my_test_control + local badfiles=( t/author-*.t ) + my_test_control=${DIST_TEST_OVERRIDE:-${DIST_TEST:-do parallel verbose}} + if ! has network ${my_test_control} ; then + einfo "Removing network tests w/o DIST_TEST_OVERRIDE~=network"; + badfiles+=( \ + "t/04.PurePerl.t" \ + "t/06.Result.t" \ + "t/09.HTTP.t" \ + "t/11.Report.Store.t" \ + "t/17.Report.Aggregate.Schema.t" \ + "t/22.Report.Send.SMTP.t" \ + ) + fi + perl_rm_files "${badfiles[@]}" + perl-module_src_test +} diff --git a/dev-perl/Mail-DMARC/Manifest b/dev-perl/Mail-DMARC/Manifest index 5503245942bb..50f030b5b6be 100644 --- a/dev-perl/Mail-DMARC/Manifest +++ b/dev-perl/Mail-DMARC/Manifest @@ -1,3 +1,5 @@ DIST Mail-DMARC-1.20240313.tar.gz 804445 BLAKE2B b94c445dd09f7374b8c376d3bbc1dce2af41268e36a7d326ed4cc429e413d842d4a4f724a8392f3900c4f161d09031ecca9d33d49653cc9848601e76c35c6c24 SHA512 07f23ce7ab3ce2c2bc15b4b09671c65943128ff17a94020aed18589361921592ea4b8c85a1252e40bf5e99685e24d5da2164552be2017cb1e62d53823978bf15 +DIST Mail-DMARC-1.20250203.tar.gz 807894 BLAKE2B 6d9a7ca4ab972811df59227ba3367a39f169f4b117edf717960b35e36fd5def423d2a3daa33f7a1ec6a8b9afc3e371fb3b8c1a1ac130e7c357aeb6a833ad7002 SHA512 ec680de057d4e8441a6beda0dce145534f23958a7efc642f92985a735c6da82e48550b3a46829087aaf1f2512c160ba3b09d8225e5544e41777b528ff84ae5c4 EBUILD Mail-DMARC-1.202.403.130.ebuild 2053 BLAKE2B c94c45f8e5092498afc23a97792d7644854df745f6e299a13d1242436e3016c8cdcad2dfacefd7991e320771750befb32c6a085aafd1bfc1ba28e6867e3e47d9 SHA512 495783a6853e7289580384aec79c701624e907db4a1b659f66586d8dce973619d3ab4e83e92838d4fe1aa0af8b6ec2db33e24af767b14d585ccdfa99ad38eaa9 +EBUILD Mail-DMARC-1.202.502.30.ebuild 1978 BLAKE2B c42af4e3c07d2a49351811e5d7490059a79271521557402ff85e86cdfb07ba405099e746e920bba5d2993ecb66893dc4e6b45b58b0003f8c70885dd23caba26f SHA512 2c466f0df106cddf5389788582a78bf9e625099a186757be6036cbefe080630347cd9912c1ed0085e059de4bb874af4c66b8c311faf0c7e6c5b434ee9f85f6bc MISC metadata.xml 2239 BLAKE2B 7ce9d3d8be07ad9043047fda77be9bfcfd50fa61221b6040514e7178cc156f50e121f48f243e7c8af7e5dbd5b26c79706536fd619ec0e5ebd0289dae9930f681 SHA512 a43245d8d48cabb4b5b103168de5d2dd708bf59596a84ecddb0cf79f4e66d8003f43d97bcde808be300a5dc5cc00b39006aa5be9b1063e0dc16ef73067741605 diff --git a/dev-perl/Manifest.gz b/dev-perl/Manifest.gz index 014d033dfa106c017b3253335edf6d15fe1c840a..02837b578ec1e99e88f223a661ad83cf145b1fb1 100644 GIT binary patch delta 264221 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

q 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�t*kSS-#9 z>oc-*B;Vu+z?!x>bteIBN;v9jc|Ku}`ep2~J7~3NxqtYRUf8etglG z@DR)ZnW9vi7cG73qIqbTs!G?U=DODLwtr;Zx2{o2UZ@sr*MiHkWe#bd?bfp4)V$Jr zJ+Nx$XtPqv$Q>zes!T#TbuAb%>O5H#*~{01NPWeMXxVgnDdGvZA|^&=D{IdOr1j!*EpBOGF|32OG{8kwJf$JmYHohWlQk1{jttz z@j|JnOYU$iXXgZ+#hX22FR1-3e0#+nFJ4)%!l!e|R#v_qm>D!eRS4qjD$1HSSVvB= z=HH7ScvWXr_Eei)(Y;=N$rcghJu%<5eHOogR?DtvwXK`|ZL2x9=Hr{SEmwyFk^M&V5 zwFrf0bscl=M^eqAf;OwAdP`5v?HuaC62W0s`x^ZaC62|TV0%hPk-myVmZuCmBGOJ< zBoYyLY7wLyp7Tna@5?H(q)T_3*MMWK->?6D{P^iL^mw?s4bdK=1nTy(|6WEpGl~bVN8qcIbi>Vn+bk zc)87!T zo19)?d2?4g34nNdW`6*ExBh}7@37*jQ4c|<67g22kxldL3!=H6du+lRVko8PZ|yxN zTH2>~ZwSMj4=N`&r?EOoLbTEsk(WFa9ZOMDE(mk73oWZv1N2o#x$i7FJCQJ$w?1ps z;Iio#NcIyL>`u%fowuYb!%Emy0SepS7ovD+^X zQ?OlO^OjP*vdcMw#QtYbr65@%^LR}oHp^?mL^P!yYg9lL^tfBY+@WNODnnJFfxsT` zURzd=HO=z%<@4YF*gn1(*n7}g)70!dMkeX&6-Oiq-fiDbliSKcs3k%LyL3m;a_Q2> zi=Ycl0D$if#1$*=))Y#;>s+P>CvY_#VyhEe%0AeWqxNJ2^8t>N3in5U&imQBB{=Nk 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%0ACh*_b+4b&#QZ-U(LCM=nRciG=5_1=8iE!lx!I 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ⅈh9Z!d9`LDHAR{xCsuRXS6hj}`S* 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 OSF>amxj?du4uD6# zclj z*d7S+e6T>9wjZ>Aq@obN8k@pZ9OqCMT26#A6Ap}!2D;bG3e^_LrLC8ZpCu5Uac*Es z5HV-byB|t)g18D%#Qtu1IKbt0x!I}4lX(?2xzhDKfnk?x*9bIQZmBG_OaEKE-8*#$ zr&$1CW8TR698O36M_=b}4U61zg)XnT$nC@i)9Un@s^Lq2P}UX1u{n0?8Q6kR^-sQe z0w#z3^|E~|fBkFuMoHBVCz{TDk)W+eqwG)+rIMn%abJ(dw!}8~dGeRhZqKa%iKqFL zo#EwpCf+EA?@f}E4yyO4!=4?1>oO2MptBDh7nRQHRE*RhPn+!?<=)DO)|_C5{Z=}M zBu*)=4Yh)QYEt2Cnvro1HQ+cVy7cYKNiC{+&#v^3VE2ncf)}(9K6Y=~`spCtWvWeo zFOF56l%rYNc)el~so~iiLUmmZS8@DV z5;A4o6;!YQS!q^bM0ZaG1(*qcltxi!pfU9JZBu=4uqCSr1m3zrJkz^AF}owc3Iy^` zLOUZ}Q(wODc!;%l3bN{PfTN^ftRH13m#$l5aM}XVY;xHn+m} zl)kEh&aQ@z<9UF7DaV|JaO91Tq4T5#zvSHBMm^;PXr^>&xZy4Sy0WO$Low}IKptK7 zOb!sW_Zgp-EUqROCygbrwd>Lh=|ya4@P#gg9)e}&qIP?wELNU+cT}_}er4IbE2e*c z*QfQwH~X?vTwRSq1$l*-L)tE+Hbu7hBZT@t#J zcbtPM$9M3SL`)v4A|(1fYz{AU*NS~1Luv90?0LW+fN0z73mRkqtVdq9$8Rp)Pw(Hg z@r^EC_24K^+O(LKQFbrEn5#t-**4^JO-{=0_)?a|KbKaC8i)$)+_K~I(qTA%)UhP+ z>3`R+`wW`LPs-PDO0eG)CSxx+cB__D;R!r-@l>y*zMg74*|OO{7P?(J&~{e^So>&8 zo;U{%qoUW@D|VoxQ&!IERbmFaniK)57?gBCnb!1QR>dNnJT@o6Nb2krTbEvsH#Ugf zgSQs$?dp9arsdTLpT*hHU(lb zxfod19Oc?scLltv2B2dNybLu3PY)^!RFh3qpJKjp@y;@30H$To^tS$gX8Unoyyl9p zL)(uZKm0O2et!2dCp;`1#fJP;_HRFp5~Qx1$~};nuG5KA@^#Qfg@<+ChwbF#bJTok zkvA`nEfD;4A8ny;l?~7cm_Va@SvDzOQa#toG-=N+@fIu$0(chcWD~eug;UXXi1YE; zYHkg{ETcbRwR*e9Nj%wqKrnI0El$%?amb#ob6Zd;>;y3K zk5eU*%gObPzjA1DlRI9A_*C*z=*o#4#cAx5)9O6e8Ha(6>QuGygJ4D#bM?ObAIna` zrP7_6`rYf@z6RGcyQb7DuNLjw#6Ciq`l7oxgh6@NynLyGqhUMX5=_WOKXqATyM=1u zY<+nqzkq&|qyR5}#Z?*FHhooA(P)9h!OzM=sPd+z_{HgS?!9|7_pQuwJwdjeqS^-g z1uiBbs5N_OYXi18mUb_NibDv1%S}yPuIhG1*iPU=oO@VVCLd3v?azU0ssg6a>-9d^!iO7~WOTkoSmHc%^`^h4&mmo_>3 zgH*{UwL{CpRTeER!ymz}j^U~zScC%hB_SN%RtEbsDq3Y2FmJdkmgP`<@QR-|;F$|kTuyqd}mbB^7Ut*5(_iF_I0;H?dX z10AKPqCYr)7E=XEYRAKKm|PwJg&_ z9x(6CsicDA3-qCahu)^rMMvQJ`ovqFlyU-tU{8A0BS^wqjSyE0V49lHR=Rkb6QL@Rn(GKP{a1Xp3p& zm0jCgmS@~gb*+?;p!ft!S3b!l4|B?sC-CT>H1x07W)`5Fyt;hn?6onchsfi->85`O zdLOopcn^-Qmz+T7>BND3=KUqc{ZCC?e)H4s{`kl5e)I9KAAWs=xySRS%R9v`hj6oG zX-a%a(^hA&XjTV`J%VxW3>qTyU1C`#WpiKNKxDVvlM=L`S_%qDx9nNjWt%zydh(>^ zEFnmLnA&1Ly|G@pAL*G!q(M9>NtJ&aFN>`($&!>LK^_UaU7I0tFnD`721pv(BD;|4 z_0XKoDrZ+De^;rDSaEE6;%Q(hk8NeIu4~Pmzf_3?VCVNcA%M7gzO{D$6uv>dl6h>a zHi26BU`@qAJz^T4Ukk!h9|Q2WJu$N57QLyy?)}nuRBC?&eK?~TlEWIO`UQWM4Ne7L zo34P~J^?I1_QNTX80FS_2%b%gG8rsIGMk#09>uUe(dje_-`Ty~D9n{? z%eh@u>l|nP?qwvm3}sF#YW5Y;k0g3IWJ^98dT}kIY3I>Wt4kaXtf$A~>oxoB_kVu7 zk*rxZmC}BI9Lhn|cDyjjN%ns>N*A$A$fanKpGcXg@0a(@_JGDgeJmfT5&ZbHXRB-O zg|NtXbV9pGMX6U~KMWo}8)>Fxbw?1BCl;U4+TrjiCAb_DZIsKVdr98UR3{P0fm;)uGH9_=3{FS#q(l2SZDJNEk1YmG69hCXGxdTZHabQ^E9zbpOdI3 zdXsjpTd#tNBk7OOvcrG3vMrVW0;75Hz77fH!MdKxj>0Guuj_}-)lPl$yx47u8<Z zO3E9n_U`9@9RL0H6&rYlWVNQt$nMm{?DtGbS$F$6NdXMLtV7I0`_c;RjWs*+duST& zemrChaq9Fc=DXbXRftLoD;#2UfJ)Z`tEuQ+M5Ln38`uVvc)F9$pcQ{qR9fM1Hc0eQ zJs}{RzR|>54K_hghn0-VoN^Ve<=g`zkw#A@2U-Ey?OwOzCad#_3CXKa-Cjt7Kd+kp zd%t^JxAf3Urm#~^q_rZQYcbHIn*l(G@7{UXCu$D%vkhaY$89m^nCfLKrf~?_NtEi@ zkqL)o!Ac5t4Q-0M;IDtnDsVtu=SZibmHg&U{Nod?D6`;KTV^TBK{bor=ru{9*vteg zZI>wlDjP76$B*QAw8IaaV*UT}O?|;>CCq_!SshZ83}{mBCK*_A^Qpj!=8jp{8j9rr zm~O9-?pn9SWP7^|ZCOvdGPbt1u?Cq`k%~i_wm1`Z*A=&!a)nCLvXlmWOF~s<`A|IR zY-`N^;2Gz#Ewe|yEvbxT)pgs7EWJYe1YJuka&^5XpFC_&<7N9)-m9nx3`o7)_C@mS zHKtals?HJiD3dFq8wyGCxpO5l$tb%llTe}-e~an?b0~$ZrP#cd29kA$Jn2(605&95 zOHdT4*$!v-C;)jX6v1l@T|&ZT1|b-;>*r?tP^b1hkI>2lO&T?T@^`Nk5t=AmDr)HF z2Rs3jJX4pqW!E_FF3OP4>dcDezlT=d*yMqVzl#?J*Lob}GM0Ha)S=x71>J@Bt$)_d$aqMp;)+lf4>oxn=e|@_Q4RuY{X#%KE zqIxUDZ6~XFhnA(QN#Kr$lDL6tDkso-Y}V?Ijgi5;pygq!PDMaIw6b*Am@Iixe=rsA z7`=lbN6pRHuO0iI`k2P&XM4vrZ{X-3uf*?5=vLU1z32Vn?c8Tw94luaBxjI+XJ zY^f3T^WBoHsD55yIo(jVs%m{T(^Mk8+eqN|$M6nMr`C(7Lv~5&trdI!uD+Pce(o34 zHUNerb$v1j+SR9Ep#cI-OD>hKf5PABe$=hYTE%N3nYcp`{CfG za)xpi_82L)RuZZ~$9Ps#CEbN1f+aig<6`qR&$(mdhf-A8_Gnk2CN6bte`$k{tM=hP z-VJcte~gb`X@or}UL~U-5h$oyJXOZG*H!ePKbKoU)*JQ^f^UU=r+(yABP&-)mQ_`& z-MgTDjg;u$Wt7$ip>lX_fp(32C>rwCDGa?>-(u&Rg2@20my!cixxOe?kpPrUrOVK211UyKku*k~W=GYUYnxE!gj|tOW@oay%Lc zJw@l!4hzEiLO9`J*}gGfR$IOA;kI|?N4fyPtA&kNLPTxUmvd9@piv4QEG$WgXCI0U z1Fh3eJ)$V_o5YD>BxafUsw%Q*cw;kJ;?t&$ANWXv?5e%8Bcc1#e<=H@U<%({>Zo?* zr^XNL6|g7}f;V834g0@pf(s8#p``I9laRzP^}^$&Sw+&4Z7%*%?e$ACCJ)4!2g%t0 zOl4@YN|fGQvPURnUUZOOcyRCABQ?_53dbYEliPljg>W8!@;-FD}h_;zK8(KOiy?S)`Auw zM^R0W`l?Sbe=>zzS>EAfwoz6;6(n^zJ2$<|zaNvp$G`nTCGh^kf6aF<1auy$S0`&v z&bhQ1h?`E=r@C+#@Q|;pnG(RFEIXny*se{~rNe?6tBT~s3;bcHJv#$MT|p9w@tei zCoqen!TP!I&67>29)EXN$?uvfS?On)pQSm-8^8mBmK+xK0Vo^$p*STq>?Oz284P`e z>VhP)HIuZPsqeQm2?EO<_0?@I2%DM*PPw;hAg~R`m#9yaR%Mg1itK6Dao7{tU#;42 zfA?bU^I=k!;^!a~)GQF&brMv!O70vxP|;t_Gb|Rp(e;)mDSsQd1Nk{%svQ$N;@zXR zqGNS@Rmy87#v);C1B5!r)KsO=gL$vox0t^4GI@3=tikKP zU$5A^U;Z*a{(n^J%dS*>ATK-Id*r2*rV{FYs{%h%gSZ<|l6{jML8V{@!0GkKsdHBA zR9u<5h)6rM);&~%@08kwIg(R2vZg9i@~~c=SZgO6~dt)4FO?4y9S? z=+e%H09k_-GY5>vS$HsW=6kibGG~=fL;7-DogF+hIe%+CWbJi_V3M?vAWuHx*t zB0M0YLmz4Ii`@_Q0H>YPLw*B$q$z9pmHGu5^yt{Zhu?O%9UtWh65x)(<1gGQBjbDdeaa#IHUOWy8Zt9pI+2a=VM>x01GUN zc7HX+NZCFHMFPNj(?5IKHG#A{p#~Vp)TJe*KX8#0?H7~S z)?66%0R_#)!IRM=>sAW!_1w$@H-rCkvPo8TguLgqAG(nZ1w5iYKc2th@{6g9N^55!7!m5cXQO(DzMiHqo60i_75p-R5$-BeOZ8+Rhg zSd_#hn@3A^)w*~x&h^{RpX!SJebTf%mjv4vvVnRsNtWXvFo{6es3f?`bCHX_D}S@w zhGHpo&1pO7>!rs=DHF)v780BAMvRAg zGoi06ABVG5qP$%S!^w$O6OBIQq~s>CJhH~yDrooO8=haK?-2%8CY-14NhQ) zO+u2EpoM3%Z0!l-@+n2zoQlAPX^N!C%W_()4XMr~M#W%4vUT4MawA)7)2WijmDZhp zcKjgjn>SdS4T8|-s|9;BDSu$a9tCgJ6)Rc*0=2DQy(8QdIx}o__WSVOw(Qy}fFns| z6@1YgJkTOD98{5=jq0Q&F?C!j!~|Ug@Sfcs(h-)VZ43p@^qaUE9^m zNj&9B?`372mFCqZeLpmHo>FnT{jaw2c*#DC4{)Wsy$<@dy+ z*Jw3o^=+@IySbIlb(2f?GpQ{93T}M=yWc+EZ9E8RdPR17&l8o$I&EhaGI$6IVyeiX zK5UR?60S?>T6IFNr0ZY~_Y!QOHqtKZ21T4ejugSfo2^BO@wYR^04oY;$s+dGICt%$ zvh`>`_fq&ejsp-B!GA49PVCLjWobwkla#5Sc2=W)U8PV{m9w}y-EQ1L-l|pyou{K( zh>mp*w#cXVM&ne@w=aEYwTt!Nv4Wlo_@(28I>(m<`;SlcjneaB;&?cJaxW)g{pp33 zw>;8YtMYls=N+n4o!z+)wE<`4j0EkjHhIX-jSqV;iv%kZFeG}L)(Pd{t+*!KDbse4 z^JdSR5;hg1VwG$9RIp!c++Cm0K5UbLuONTOxIPXNsH+7K)8+-#udMtywLsA93UC!E zr~sK1RDDx6G{4$ufBgOTFC0Xkkw#Ysh}Sq|r`;N7m!&XJN$}wQz^krDO`$|S*3HKH zM3X?EV%QWI_r~WSdt95#!rwbntbh)MmV=PHSu(efS5H2zzb9L|Q|~8CE6egynXG@V zj7-i`)2-xNd38lWC?yp6-Sw1J=P>fhmkyE~z^=51Vs$-|sG89s69G8a*)hc^CQw%e z45xAzr#>&qx1rPy=QEtI!v8=2GJgK?4?n&=??Za8nnMI0l4Mlfgw(3(c4Up&+evN! zvN|-b-IXJNt?D!H*qK9iK)LGVlAwR~x)%W^I77I+S@z!af8y_!Af}uI39p>wqT0q2 z&=_r91gqAw*{22uS`9mnc97D>&&b@Hz+ueKJz;?l4`*pJo88;S%Qf+~V!XBWvn zBt~^QLf&NDkam(PIyYfpw;fZQ;U%Mlw-)WEpZ@gSZ{Pj<&%gflkuvnW;n;un6fb~C z71jy43eX?t;guqB&c6R`^GrG3mZtZkPJdildN>egccLgfH`UMxcH}R)heaR0qCy-0 z4sK{QYRnF_VI9sUYYPyS^V8rg`FAQhK?x2TEc%w1T~2lB_{-xK@0r;-5gZKSK#^BY zMBau?nb?aieX$PbYSe1pm9l@_yB<1LuPV}j+7u0mMLi_SHL_apI(o+Wt+jiRMjvBa zR%?g{4gz)9yQa9w%4t4E_32KEIw0+-m#zjH%axta>!is^)+=QGtE)6gOL<9lUE{X-=WGwq zAs9n!=S1C3yqjl(0h%pvogyUrtGE-UgM3?(4ZxzGo&RAeVvq4${C)C@1RDzetNm}* z?d6txXy={Y*l9P|1{Jj`05a8gZPq~X)zR9^v>^4?ACzBs_CtR%UtBkkMVtFFfDZXu zVjj*ib7skyG3~O%p+Ai64r~W~9YB_PbIfHy6YhYan6wQC=4!R~%NCw6L{(#D1>dukC zdVom5fk>t#RXD%3bbo#s<{s#g-ezxvqb{q;!Li{$02K)Nu_&%0d}kva_s%wH;Eu|Z z4vsps0VW92DyyAa^(mMJ6eVz=ECm@%?`8>rop@wbXOo z+1broqj-N5J+Sz$yBS>nD|?^BxGrCrDreK%H*lOOmAaH}w=O98zP(mmqf3-P!Ox~{ zE#Hw)kz{f08aFi!fIuYMw->Jb+&}#FZ7Q=9va|7iUagq)?Rq9p+4Rn0EFE_?TquGd z3I`sW*1=jMx1B?>4TX-Q*AE4#tAAS&?dpx`jFNx01;dM7kg!4|Hk^0)pJA`({#46v zech2MS)sGs7yCnEontcEyp=RrKGjv66(cIIcIVhB+sJE&iXF|47-55?>rFFRV1lN# zRgBbl%9tlTsmr}pz)VYS51W2`<^C$S{`lMf^Y{O-f1~$qh_cDi6g#4nYoo}DX8Q#* z5EXyLOxiy;ZGv(n{Ih>1&`PQsZ`Zn_6X_xt1{tapxtvW$zdS5+@H`y1C6UNiDe zCsQm?!e6spK`8JO!A0U*_4~i&dLXr!ur`MU7b0CEsr8mqk8> zlZSJ+otX6psG7Jg&qwV?z3(l@HJg{Qt+RhU>?OTgv;Xl^nd5kyT3U3xmy#0+B7&cx zoIX!4dzBhgnwyDIP6a{W1Yj;ohib}r)TPR{4Mos<-pUFbjxQ2Qx)r0dms)Xx=!Y}t zhhf|?&P&|}2d|zu^SizxhkOTFMqtFD`1Yp0;|UQcZtinqI5h zL8R-U+-h>hro53EKI;;2X6Ib^@Ota&r&^uRd@AaR+b$}_8b{vYfZYgx%c&jbZUs-M zv~8h<%_+bx>h|r+9D~E=Oa{4CudK9PKpk>78|)DHHkV0GXLh)nGp;6y&Yj>XCy57< z=hdoxeD~LvL!l2uEFvL0R6&2zND)#TXDPedm=_?|Jq^yGBq&GFH^~a>AiGsr#bEAk zfjWo_6a|Xe53)XIMkfb-kuL|)+FbS-w@ih|20LBYqznB#o_g?`f7#{7dt}(u%9|uk zHuVXZty41)?dxejFI81Bv|HqpiN0%f*J>s`Y(gplyDo4B8=m;niI0DltCV7C^`Qw! z&btQcnBr|l?)mFA`}6P4x2GFHPwN(hL~@a+oVSz=s|=WZmMyB0Ep;^eKvqL5Y zke2+u9m>6zC1&q;C-L5|V8@^T_~Z9K{63`Z?UswT=r%dEBLQpNz-oOANHGef+L-d3 zHSbx|?PR1nXW72-r5_9b58PA5p3lV|AY){rZ;e#0BNr9x7PWsWT$?V})p)1SJ3+*I z%Kp@YKjXB~w2zZbTdnOKHQDWKvz0k>;HxWB*>S?zY^&=OoIIYoOpx@01UI{dj+>T) zeaX?5s_(cDD}E+ThNXiA>J#!?TOE>9rYGC>)v~>~3}@Fq^VWE7ATi)l-&S~6hxX37 ztWnD@Av(rE)F6Ku#EX!$v%u6}PLV{t?m02GUNnd}@{%o}VpIWw>=r<>ffu%U59F_) zcv;uF$LW0nV4Kgn=(*M1`#jJEL7d0JF4!F*<5&jCUXp?iwY5z!lyUm24sFqgE@WNu zIq9}~;X=_yiRJK1RkGsTz{_`8n)cPQ{R9;2>!Au2#TS2%;?;^RT>ITmyvy6By=u2> z=x}Vnt`zQM5>Qz1P~BY*f{-^B^f`Z=VXb&Yz`%-^LDa3G5BoH_P z*v#oQ=~{n$1y!Tjd|gAlUY4cVP^|IVhLg=4Ql)6CvQ*9upZ13o5dZ4JJqg%Y~AR1R}x9%b2;Q>s#h6;Eq<_p&^N5>Jj1sjJrI zHyheuqusom93>*J1)qj8Nf_s_aAwyg)&X?Eia&oe;5m!Oq4CGPICQh|miJCL=i#_h zI>+0zO+dSp_m&8=dDGCWT7gAFlgMrdcY>id`?&x(1-x{mNVfb)d1QH=>src!D{qv* z?)@7}_b=b``S!Qf6^5J%Ws_v`bp?RWWzM?bDrPGGlTTqxVlU)Q%&UaFiKGPRckQ=E>6~zY&a%%xL zqMA~dsG<>|nrJ&X73W1jh(--PjfZm~AmdD$s;73`mv1z5;ZsVb6cxKj8G{sFy+VKS zrlnmQ#XS#_^?1GC-u=Hn1E$`8qpP6p?XohcS!-VKzD1se`f%nrXbP%8^L2EhG3oo% z8DQtfk8qRk!98}B($1HYn8cI2tnLBcWK@zrCuJMQZgFJG>i=i#eVaVFtt-t>)Dg%; z0!X~HNXgQKWNSrg$2)H}kVru4b(1udn@!uAPe0FtcGRz`y4ta04TJ2i`u#xy_nw1$ z?>TPJG}wmI_Vp)rU=#kbmNM9n)AJvbxVZr!V$b{>-8c+;s&xW*WF*n{%`=aNSW)|Sla zO0<7L4Zi#C_oMy&MH^drR!Hb93AqgbBr%847W*iY@N_6C!a91Nn_!Ju(`@S-*8i<_ z0t?{6@E9G+wrzPJ+w4j1BFM27U=}Sp=&HVX`LQn{pIvR&xD8466J|^28bhqh0uSJ) zksip$20;~OI%s1Pbi=$0!HWG&w#v%Cn7%K#Zrzg^zbb#mK@-89lL;vds&`$hP?DAn zO>#4M`>v2FYbrhoYEre>tZR2Gp_~=|*{rcCz)|WIb`A%*Op~Z$QwD)=-z5es9;nmyqL`Qe7)nFB8w^uwnfM zO*OU9l0FU~4MWu$=3ya-v+Z1WK9^)M*q#8AbHINhE@@;PdDWn^?JWT9toV`fnocH> ztz(x4vq0uy`u$jHv95H9N}rcqPHFHqTE8YDQ@w_nOz z^9XghWe+v0V1xK@kR1Fy*t4n>M2$m3y<7iTYm=ELU)5^}Uj(&(NujFqnBB#LveAwsz~c_!+!zUrT}_95t)YKo@>#V;YrS>?R=v*h>-PD7dC|o7Xkso( zRUbrCPJh-KI4%Kzr3G*tyK*d~g1DO+npgiVMU9wG4(q18ql1QJHwjLC_aLy1$JlM= zyx6PiX57%0LS%!AktSdPheM;f4z#BXppC+?APgoLEcQ6UZHLxn_3fyG*h_z{ z!I7AISu9Ou&UBh4{%Y{oSQK{i>10lfiu|c*16UuIW}4OZ1)_0|!HUbh#^Cq!#X#sU zAAcS{zx(s=zS6{e>3#%_I|S|!*Rfl(gV;3Ak0XVO!)!-yCrb$}a*T3!+FDTO#R^2K z?z?7Awb`AZt3xFd4ZveLl!XA9?W=$NiUVy<2^%rXXah-m3jg=M?xKz%$cyDOC?h0Z zwmQ%3XeiJV1V&E1r_KaD!t8EvwQ8Ng*J zLb-g(`faPTH+8_i8;KL#Mp!v?$gwN;^d3O|cRAxnEDQ6|7n7X*woJtfJ0zgKGoic{ z=h7UMnd`EydPjCzEgTBIk*$i`+dBRMV^VR3AGAidfi^k1D+=o&3jE;h)kSv1#OWL- zZkJvQf#mgS{m=LJU&g1e=;43XQ>yPo*{1LTEK!;JPDr|v+UWa|N*{{1B>;V^T{(0R zyv9u`uO8mEK@zp9tHmj~>Lt$P893CEifvu})W60nL`_{_dqMvTfa*g_r&#AbG&lpi zMD>6-FsQ90O^X-HuhXGy&5)s@mmlOhSzDX*m#f)so4hB>GjG}m5R5}{a`r`U$A8@K{_&UgvX=5}@+XsmfJd8C4 z<)>Yy-yPVcTv`rT0~~)!5^|Dtg-xom@z&9csuEU)5eV7XdAR58#K}s2DQZ{>Y2mbg ztSgYxx2QZ=A|KsV(|4Xnw#`VT08>D$zdr)EvkT9n*tfs>_T3-a$M@~qU%fqOTy3^d z4D+n^o;Mvtg7%5Z7*68b2E#taGDsWF(gCPXLYOWVT@@WQ31cLXAI@8UN6{)T;7l6( z!^LvEKo2Cs3%D-ZJLN;Y9T)5KVUj_RRBW$nZ(B4gT-?HXM6e`H5Y@`QT^Sm*S@ZJl zi`YM**)T>;JvZ=q_eq>y*LMO4lpUb5Z&&kXT4}2W&ZxC>bQheuSTIK)UM|@mpPR6R z^6ZvYZAWER!53X!scE5qYbAex4!~gRD&MGkNi4lIyywUi#VMPYijnBF0Fx$DUd&wN zwv)Yd2bX*AY(Z_Is+=>hpKp$B_eR|*&xif9{RLjVMnXcc#TTF~qEp=i2mzc^A%O_F znuoj;vkvBsCDgG&c@z$3nXC6;_DU{+sm;0_zyU%@Xw{~NFj<{{Br&;MgS`>ewP`O` z>%0H!_wPSFcgs7UO&KdZetFSwMyKkdrYDYwsER!KFYQhDCYhotwDe0#Pnr$-GA$YG#9##bop=1Y~kFFdoxo&!k zdoK$+(v{vP$!(cyW4Z6}1s5duU;KOYi z43AxZ)o?n_1hwohm+XhX|NL*yF3J?adO%mm*0rX?RW3il=EojvP(BCGhh)Hx>&soh ziyhGOjJF<;gs_kaI~{m5RR0Fw@7i$g%Feqhc7az@t^$02se<&F0JtSNL%t>HPutZV z#!^G?dM7pG(j{w(cWrj$YmlZ9BkRtyE2LSSBMANX#dA6}z7=ZiGl};+{u8ll^fov4sA!Bg1?)$A^1}Ii#eVnhyT6VPAKs2(ARa)ds=y&{?)J^QlKqZ( z$)2C~a+Gd=YZm~-OJNb%aka2%px%X+C*BxHtzAKvGy|vHYH>&F4APh|Eo)${@ zA1LBbiQj8!Yg5-%ou??|68Uhtn7w zr~nplFxS2`LXua{q{gbZ{64e7$-RHpUOXGz`cT4mXiBHRwf)V?wG+oO@t9DeSo@{Z zG8_77>EwQ}&ug%21z1V_G@ZuS&%D(=z(7}A&0EtWMmRo_;{eX?R{QrzKFb#=S(Efo>x;sY;=W6r07>WP zX-V%x$No?{R9U)Y<>^>n!uB=yp)PvMS(B8?A%AP+i$L>9@OtJPg5Lhqc{NMRZ7E(9vV1-p&nzr6 zZGs)NU;m}+xDIw{P|(yaVB1QeT{d)ht6&xG|HnH1?!{#2`A8Z7(`pg3X!`^!RMmEG z*P4Pl95}JXo3DIW4N~a#T#plmWrxS*Xn&b)JZ!^$oF0CN;Gu(%^=_b;#-r@o2`XBvgC_4_FSDgTa?&{(jImE=SFXW(5W-;1Mpm`&6=N2+2|5&5 z8ypbQ2N_(`1%m3KM|CGnI8kVg$4(aFx7{$>%kTwR$mcyoUtPn0zW%?_KfU|)%YUht zoS*fu?cTs_4s0bp%Ej(!&X6TNso5o$rK%&2np9(MIzgPnTa9u-F1&LS$Rt&Bbm)ft z#c4-_%GNeM*^yRseaWlVY&))3UIA>zL4Ax_B|WPZ_V)@g>~88!8*qCcH$8nErk~b) zPXq4efP#JB$qp;U)c2{QwHMNCbboMf@L%AeU~-Ui91gB(;ow+No|z+abh~x>M#|4` zuH~P99v{E^)PDHei?s3p$Tnx+ciFR}Jj&%b?pSSg*)+EiB;4BeC?#YqW7oKN zKpxNt9jGE_IHwwHcqYe&%zGr8N}l2#2V6Ph6gz=j;S&DZ$)MsBu*y2g2KQVtHV%(! zX{2M3R1IjjIb(H+lfjy9_vyW;J~+J5ysRz|Ar*koz`M^qYB!?~*$H0GM6+w)dy9$x1RKB(f;uMFCW{d_doskcKf6SP`w?ximKP8RbdPJ(ync{ULYk! z9$(qg67%1x(G})c{NVu4uybc>#SU+(1qQ&bY!;me|4PI+n2J~UG0O@Xo8uxn+K4*r zyM2mmx}Hc3yY>F0X@W9t%|Sl$D*t~x9m(3Fs;|>GuXda!>*(&}WV!ZKf_N@_v;F27 zdpZdj?5$?Y@TKyuV?&!=TaclRNSTJRB=@UTbMoLTMXTPmRVAfyAY0;qp@lB~gi zqIGLyOFoe^qItho>ueQf-awwD!dA9_xlC}IawokDx36Ujt~_d0i_>Rq$<1nmwq2wq z4*GtT7a71p0{<C;vAOj=DQtUb(#l0yK4~& zxUqc!6v!hew>pEM3mbn5)Oq!Oe(Vw!6>(1$#8ns#_g9!SM|Chjf)I zfZhf0YLmPz(ohcYmddaV%yR1I0$J@12uJcev{nN75!Lqx@(2^M{B!dj?sOs?Ak@hQ zoV&wT&OMV~(jR}piigU9wg(22@5!lRY2gp-U_G?%TPK+3cK~ht@Y9cs=ZAYs$*T_}7_c;&fQ5fRLd!LDeos}CM;(bmv@K3i zAFy*#hiF$v2LRTco3AN!=Mdw0<;6#}7VtamE8&Kun6rw#wq39fV9rX8Z_m?b`|&UB z-FIxX@#*bL&7(O#wi@Um%T@G*3^{9Owf2_&WE z#U4f`UzW4#w7$&Q4r^atRYFo`2HGw??GiOr>g+o*#^t4@jg(D8&fu*{-3jQsl1Mr2 zca6ZSqrad9?NfXA4}bX0ix!6Cx#`&?4h_X_bs&GXXXye~^qZ%mc}ry_WJ$L+MqX|@ z`(t-ICvaO;L$5P?SQ<-K!izeGDRQ9dX>I0o0Gxzxn_HKg&2F>y#x}^$;+YCWBxtt9 zYN?I{vU7tMLCEZtfVgUQ%geBv?G5C_W{%`6%HEQ#y@OId7~T<@-K!UPu-0bJ^IiY~ zoZ5dSAf-&1eLbq*)jdTA_G^E&V4r;r-o_h^yzXVN!OAVg9*5L<$}Q!3nPW&Lj$A&) zp+K*4#5RU=y!FmyceQDeQ)ZBZH}?qQwo3F9z9F^q@$p5K3j20!*<|o|3Z#Sjtii< zgvX~JK>?Zla;oiC)q>P*L)|vY>m~bzZS+EzIX-J+J`O{>#^6VB-dV;3b;}Nn^lMwn z3z3vp_o)`B<+#iF{H~A8QsL+MsYgk^JvPOh9P)>~7M{a?!w7Y4Rzj1Yrs7QS!Eb+Q zcknws%2`1HP)OM5L~KruveORuDEq<@KbQI+0rjXB6T!(RyX1_!_ImRI!#0Dwr=EXL z_8uPDf_6za=<-s`x{ykn1^YqhcF=L@4|b=PUM<--KmG8x_HleAlo1*Z;}+n+k@A+= z=Q3a)+qM{j^V8l@;u*oKz>t!e5*i4n#ty!L%N<$tA;-)-L5u zY@t!MDmc7Q!ozl36_b&+tnB{)vqS2^eh1*k&>ExG)}t-Oc9qhPP2p#ro#rvBPH+Z+ zgqgs{B3^Ymxi$N|$s~t5Bu#!McXA}(i)ffw;n7wlXZP19^V|3T{&JT+Vwp$%TcGRZ z0RuyXVcwgB_?k6l9oEj=Rj=sEDuMlNC%zIX%N3Ilkd2h;An0)@FCgzSD0kY%8+=Y} zR0l<`N!CQ=;G)KyU3inc);WJhD?cRcQQ7j#FImxp!!artKvrHWzCM`W{_?}$-hKD! z<7hv;w5EM9^(IVFgt~$u+i`@h*pBmNO&vA1AE8+5UNyH>VlYgt^l;hf z>V3EKP8wnH0OO_Ytj7vu~j?Yb9%9QgfX)2y^RIsONn9U|L>n3;J_T_#CZn~U(zezk> zzQYywH&*U#H8$Py9RA}lUAD;P6Cf2k(M4PVYrbqb1WK!_-r3kEt;DtKTO1Ito^RiP9|9LJhv`yWo4%Kplc+JuVe)>f|ub+oN%7ySbEGn zFNdl1t=rD}#)AFJAAbLpneF}D`%TQ8Y9L2T=&YJjjo^m45wCw>3DuEz=%-4y+MBi# zowFxvMS`;PhRKn$?Q@@4QX@un;b_PLoe{5zaP?Z0cn3YC&*;bw)~7la2R)5Lo8G8A zSObValro7qFLB+=_DeFN`{Leo#0m#!R1F7q^HlDT3eo?JOye_$qV?TV z36T7)w<^zVyGxhJae#sTDry0Ad6tPR!$!8D1U5dR4QZ2d*(Wz}m#)5Ay5D^GseQ#V zG!t*Tve-9qMiEh!v8GN}jpx_Asn38?4@QzuP46zw?u|!UMtV6om=lxG*&2ViW??i` zdm>LNiX9+oj#26goeKw?!P=c&O{N>oeR6IQ(tip2ZzWHxm-%<$RPCC>k&{G2H7RoK zOfr8@V=p0Ub& zXyWUVX*@;zaA+dTQE9LU6&y>hm#ZRvBH8V!mMN~!ED5E z5%=$u2*5|?%?TMqrE1eI4~oJZH{dRRqB)_$b3gmh!U*2lIoWZ>SaH? zUa+4&{_uad5AW~x>8BUc>3M(Frn?ch_I(oRp>xqI_R;P$YpxBdJ*wTo6^MTU>(<&y zc50cuXqKUx(~M61dYJ?D1z+t~%ep2iuoN#>M9YNTGwHnpOn{fYl;2h{{OO)MLTd+s zviQ!of!feVwDzKmm<3`zE~`{W>4(?lDoX8kf*o?d9K8MD|9OT_2SQb>QlD(J(JlN} z?{`T-UZRj6Yzdc0vHPyr?^l0I_m6-6-M4RN&uq;`BZkuEwK#=698;Sic|aP=MPO6+ zGXerGN0X*b$Qk0@D&OhIa~E`E0UO8B!Ocl1mQSC$1ryVs3KI!#<8i$qoO;&WxWs`qfCGHoWULPaPR|8 zN%C=WNQD4BWwM<;Cr4hjK2Im-%tov8)q?$Y{O4=Lk)CNX$Kc4DPKq^F|Wf~>k&fc65q$mkOVdL)$suyfyo*NyfJ)GMn)$d*vumsnh_ zPw8^^=m=DG`gB@bHo$-O0D|#4%Nu_$m7?BCPMShvLQQv3%8_Vby+QmSK#T&O^u>xhZm8u=yiBZa-p{|k%?G@aW|4ICgwTd!PZ@;G ztOHr>hLDYaM03X>n; zF<-g^^{S{b5&o{@sU@(0OP9N&TBX)=v}=n_u(OukY7M`bP3K@2ixf#270$2G!RDl3 z+RamOhTsGv2SR`0EhXKiV54JL2-_6fNw?jyw^GDMh=9m5zFxBTkJ>@GIPZzjj6p07ZgbJvpQuyY-1kw+(~ zsH#kkKhji+4tnuafEvU=+x2X#<_(sLqz!jXv(m5z;ksAGu@Ad#gEkQC^sZd?<)^pA zxI-e9(zv&@q=|podJw~Q!Lu}1)RtARrGu@!D29;A8I@@Yd>&7AcKZAR zsc2>|T*lVEusJ>IJQtX0GOIZ4li&zH;|%(bY8HT*y{#hc(rDqn})vq z`0A45nRKbQ)+9+MsvX^Aqo=6J^HjP$>)>~3nOJR|@Jce?U4Ni!-l_o!D9QB)$FGs( za~Z_MLll3YL~{hy-RxVtzBLv|&ZH!Tq|-=V5#9TvsIF!Md_L-FuQ5r7i$Xys|Jq1Q z)~Gdnfg}--e4b8>>&mEx%{}!?jkW2L%W+@}!dTasJkSiBd54{SH~SKnJsc3;)CuA@ zwpA((uNUrbpML-T=TC1l&wAc`{pHpH3g^3kpm%>~%Rp|86LnicE6(5@KoT#}Wq{5O zA4K_R<~Evzs+o}KFv=X4vQ6xbP0cw@hZe`a@5v3K0d zjg+<}{i$0Q+k~ieLqe8{%mF3kDaXAveL^+jg%pntd~z;Gp>Lz7EFkPvX$<0iS%XIE zQd&E|FIEteB{R_Dt2O&$`^#AW`1wUS<=JKf4#GSXz6hIgc%hIkK@M{$5ohMNF05LR z-F|9@2hRfBF7A`j;3t2FcKYVPBVo0YFVn8q9f+zZ33ab>?rQsjwJQ3eG?OD{LstqN z8=<(+7n0;Lie$u59KKB5*F32vv8>`&bW9&9k5HEUKkz7887jwH3-_EwJucF=@Oio> zT6w(Zm6uB|`#nL9O!80>$IHQDJfO`kNF73}g7`K-q}^&OjG=$ROs12b!!CnUO(?}o z?c;F1gVactB52+n?37peXL;7c`Mpt$yJLWJ~X8+2};Wn9cziOS|6i zF#iO}I1~Y$<7_M`n^jo1JLuf|b)DTN1g#S}v3B<(D`qC#`A zgVac+jQ^M+aT2Q@cKfOPoczs#`O^NmO5R`HFRsD<4?eVGe(8S%sbl9C&3B(+#h&4qUsR#SRVOywx+yKHv7c7RG)x+5B< z02wrtxcWt2a>mpS?AHtS@%@jVUY1s#sgwq*L|z7f(3Az%h4W}7MhCVaXTqCgl>_2! zYaM@7GZK(ivnc^9Hrt#vv49)}g-f;B*$vC*x|6@W60)QD)Q)wx(msmn)le(g`_tWR zw?BiGunnYTm2jb>-h0E?qt>+G5!RsdX>`x73aj)>-*WR5$d$xe^{VNj2n~a;;YH_u z+?TuV+9iuSyPVLf<#D}vACeXfomh>m{Q=cC@}k@(~7fV2~vbFiW}H>F_-UiOZjq?f4Ur45`uSA#eyUw_A_FstUs zkcUV8E;ttJmo+qo&F;N8m4eFJVyP~FN4R=Wg$__%6=-8)jvUn1ha5L0N7cqNsC0iv zM6S!?9&f*HUu=+2>|gd(0MQp~-?UTX6s6a>^E>eE`=5UNvdQXMISS5pL{nrXo(7!~ zU`t?4z_g-$dR6m3;$HIJlu&bN=0e=ypVmuD@M?s>N9J4_3or}aGE^ZvnyLeS_F`M( z(x5q8B#TO7rv>>Z;_fZout_;P?goE@4-kOcZckN;t|H2_0HgmR8;I<_TOQAwCV%G| zy@bB1XXfacB1Jn1%3`G20u4f|m_{R-J4$r3L&s^~Ke$dSj`;S{y)CRWF2^SXhkVy8 z6ZBC-Qw-S`Idd5Fm-umtgn+2&n1bfTix_iv--8pfS#vRswiI{g`$COWK;wUO>#Tm; zMQ6i$u%K3x><^yNp4QBce4Vt%u@vZ`Zd>lj6vumw2=>+autl4@S1p<2su0Mzv}u#> zDBG}aHflG%5#@JI_^GA|F(d}I{8o8r9IFaWY&;6~^650BU$|4ve|jULrmV! zfY*5`FUNM>tbr=zWlJr`XigFu+N;VokJhv$zoXretxtzyn1VX@u*v{4-Yv~lk!hsV zpnj=bU+G|NW~R)7KW{LDD{nfng5WHkfhzc9RtU%qgv8woEyYHZ;0u4eOjxcdudD3e z{q?8+_`Y4w52!Z=kDgntRMXs+cFV}X15-jIM+6`_VHs?sn%|~wU6@z9)F8AHr?L87 z6fW($WE@U=a&#*gTwP=$U%b30zxW^Q{XEz1vy>aiW-RPE=408i*T<@#czbCVQ?m5T zfxT65+8rMY%2prVn&^KVoE?g~H}AnY)b?*$J3JIq*8?QjxvQRn^+}bk`9oHWA96lI zySunX`&F>A0{42^KDEERecus@_cn(R?Gv$+4@^e(8hrJh>|PJKoi?w5hysm$sqlm2 zDNScsfXC86QKwI4;(vP;-M8g`Jd(1$%X@H&Dfx0X2=Z=Q;tYS?PmO87;HI1VrBtB( z0;gRF_L`fm9cb`kGbGJ`I-H=AA`5$$;J2r;v=$&~G3poEy!h5~3`FfcoGG4Ay>E*8 znv~!*#9~`E;ZV@s@LZMRzZT54gm=IC<-@nJJ!w*njR+AnM_KPZHFU0}64 z!Ly$Hw`!VVF;G4UKgwDI$H4#aLsvrw6%K+9wGQJu>&Xu)-6PABX3uN~DIutWnzA;! z`AIt z6cp7x)F-k7+9#8=dsnB0U(&m2^V-J4X}yKL%lZT3_+krsJCfyDB!f+MzS1O1MSuDr zo&dZjx&77BegF5rz0livCircKlpSH7^OEC+T=YitIH1!L!ZDn;J@r-6bA9uy=n|!l$fh1vRtVrRk*83bop8z* zSy~EtETP=x_G3SAIjp#Hj#W{)9e=?E`4NmcuG^S)kdR5P8crR+yu{E%hb_(L)rxyh z%OR1B1E=O2dIb@0U7a$Y?A40>`A@(5^^g6hd%RsR(9l{}%c{KT8VvRMx7&MA#eDNz z`eAwruC^0m+@Zh5uEWWM-rPCsfTTNR@uF2LyrwqJ1ZR?YZPD4y!ypueK!40fHSyV<}&mbOaWTtZdHII*EQ1V{>J!=Eb8!KpT_m7Sa1 z`cR-&s_qr{sbE9oj1qWATLg2c#_o)pyCuCY82tHF`SXP*twsXm6BbDAWWALOvG|DV zaw{$uuRxe}N%K|oX0*1ctdsxh4}Xp~6s9ORPl(q^)2maBI(2cVpcB$7K=pWx#E*j* z1;B<%>AR`4Z_yzn0P(gF?o)3XC0wBefh55p*kA{m^{Uxwi#ea661r69jR3ag_)r%g zS^X%^;`B74Cd39?sL<7$)ze8#dA(pizW=xP_g4gW&cl0K5Zlx^i$TNwJiiYF%oRdRY9EaSi3i9G5 z&Z4&nm(xKPA8-If6mi)UlYfSflBS8mFFt>>)#^5D)1PxNILO1ut)=*UZg;?_wV#D&`$j1T9Wid6Rn%pt;@h z8t7h}-F;SLbk_uvt@L!$aV!gW$M|-#&&dPf=q)q9E?m)h+__gaOn(x*Tm;7AEtw{C z`UeBLZUyFH0ENA&l=tnZ(vo2T^4PngtH7aCW%T!kte+@KCc9rJ&;RP@81KIQ>4*0I zIiHHp3RGm4&E8M#o%65|b*qVfI|{nno{$p6p=F#o z^1-6I=H0qpII^q_rc3%^$95^dL>lDPVPE{B_nS{w-^tGK8{k6z;Tf4>)LH;ECqCl^ zps}pcco|1u$VL2#>97aQj}!^G)m4SED2cU33D*FUe!#kGN0V0VCx0L|u$5eaBS~^x z^O%urvFxu{*=ie|-TZ(ol1Gzj^Q$@*YI8)$B%!fO%jWhfj&z;()CYIoH>Ids-@w@yoEM$vz zh^#v6t}TVrdn7b+TYpUiA@W?6_q|@X_dmaX(LwY)x&hHGZ&)!IW6z55LX%WXZkky} zwua^qDOdtadiIjxoL}?rPPlSg0-Uiy{FePO1T3gDuZj>^gmW{8vNLuR*l8Mx-9VIO z5u1;PK-Qs-g)=<8*nMdwk-Y)>VUIYX$EmUoYXKdKfAPNhW`D5#j%;sd*ls(Cy^UwD z%gOI%LRHvLy1`Y0#bXmV88y)Paj+VN=KwE zdmyl@yL&H=d$0h17cbLnHq%JP+Rk88*`iYUQO8p?vww*;vu85Uxz4t;j%9gvM4Ki! z1Z`cOBoWx9s~FE+Y6vdL>#~tN`gAZsekKYFptrYt&@k2NK#7}(Vw00N19>=qK{QZW z;)2xii)0Pb1<#K-VTq#}9s4SM0UCot*~1z_wtvU6su!!A)yXT8!;E#ut2KMs*YO;t zImMx_#ebnImKF8&x#F&^=?>^7x@^jvkOldPV&gCrNY~jqybKY+a@P84iDHlM1`{?^ z6)l6>+d%?s(-9q#BVQ|f_2UqP=8XmD4=BbNX7!ux?kCKkDva z_CEEG%<3=PWehVA(N$slas*p^FMUuT|3PPR4u7M!Xzb2S6~}xKq-)cA{?JxfeWmk! zwP3#=?Qee{?c>|i>kh7}(!D`p+jM(4@ZdZfJ8G%qIy$w9BY@KOkj2Wbyf=~-Q9)B* zwOaH<15xtxdXU&IlVQ$zbNZQQUL8Tz2STet#g=!=&iB1=*iKl_QlT^*b>6iO&*B0@E0JV zD*2X{)(KMIS|K13!=;;mu9W+lDYH?=a*+j|b|odo zH6tW1I1RRg9ID*7I9r!=|pEcz)){K+v@hgAva9qxrb``aD)BM#{Y8_jB z+}dv5c&IVp{KkY@1bF#oZE7bF+N8Jfp2P~y9Bb>F&1DS1JbwxxS>S+>j}?X%rlHk_JQdanmo?Hp}ZN*TE$?VBo-P)=P7 z#=h%3SrpmJ*E5j>mFNO5d+!-`(^MtN)5}zLvBu|`ZxdgwqOLx(+U?+EU1e_GBs-&J z)9Iy%CwRMEx!M_KFPfLChhXK_rDv$tr9q6PW9@$!+N%}&a@7AB=RE4I<}Pew>i;$m z4(Vd*9EyF7b6G6YWp1;y1a(x)Vq0RF*@jcL1W(%^>zo!Zl#06K4##qKPSDwYvuErD zwZDaLuh`?oE9+JGbS~M-r!Gw38I4dCf;hX1vgQrekyEVs_u>a$)mfE2)n-?8uNQ~* ze0+Zn(Bxbk6Cx|mO@9es2q;$5Zd)uh#GY)0DB^I0&S~yfq3rwjKP+T6e!SbqcmLy; z5AR>-tsRdoM?eEA-vb)q)+u}`h^KWeB{sUc)tBCypj!^%2;TCuV;n}Wj?YYo>N2ibK0;x?&#Kr451e2S97(c`w_AVBWx?5e;nAtKL*ZFn$DI3-RI{j{&1$LM z(vx#LhkCF?aF|tGqaUKgv3L}0PYEf~SCPo_lwn6i+G&eKA_7k>f|SE^UWxO4Sw)s~ z>2C8HaIE$F^}mlFKfQ(?&#rF6ZVyocb$i)=FQc4t3owclud10!1en*=YrBqG~|$U}*&c0a1&j`(RTB-=bvu&WgrRM_^~Lgnc*rJ!U_vLd$!} zx*C!+Pd0HmHEjxHKdG1QEeg;l9h>jv35)C5l&IZVG)~b+%Q?u);JH!fh z)~>d9a*irU?anP%=?NvWpeb62}b zzX0{toQPEf{03&kacp*#0nC8cTAf~=jvdaB9l9We*bzWBUT(9e4FZIMYVYT!=YxXT z-fP+qzU@y7SfUQaBxxb`gkX?bgYPRv1i$fSA{ zz(Yn->k}r&`99Lhl?ux~l$(Fzx@^>PwQA|7F^BCWya7zXc7@GbO7+Sv=Liz}pFNd= zWQok;lzObY0;-_LXbm$$$rM$FszL*SJ>I>xtR8Ec1 zOlwV3v-234q_0;TktBGxeLGEVD+i&L2o>zo9YM>bOB*kOE;IoE9vv2lSKh5DlzP{> zOb<@rYC6PLC%BY-5R;?!WCP;>?~@AmM}JOY){|t6!#<9|hB*nJ<7)=X@4j2a(YOB0#G>Pl1Zv#JUivg;X?RCnl zHs==$_}lNlf3DKW!+YGpsSE-@n;^;ET5$z^=hpA3#=fmlr+pnIF7<>~H{x6-d4DRX zATtPL6LT2gu7b=%^*UBYcRL7aZK4e?a9I}B;z-si8+q^7b#Z*^1%ZO;x9q)-W8#K~ zxX-fho<+WYu$7e0y5^QL|8fh`?p;NCOQ}|Fqc^rnTKQzv)-Ww{G)fLAA$F#4n;%fkN zJnIhu()L}aI~^aCq*F1ARf&@Z`5+tnsUXL(bS9vY>OYe7oI*WpX;$PVlmfSz<)M>7 z`6*M_+1G3~JxWcz7K@Zi)1LSiQZ*M`v8^L%t_2q7U~C+#|7PvJ`)B3E--ga{c?+xD z0-Nbt+EpSQ=!qn}ugfy6ODvKHbttt`7>)?vUZfliFdLJ-`5b>GD&rGd)#B;VMqaH( zgc!Hw+yvlT=G|3UqwaT{RxA760Px-3JILfz>d0n9p1otpu~^f(vhrAY-@P>t-aR#t zq9IcGG^p=T#70F!qAh!em3>vXd9i$dXfN9y%JXTgP36nYiOp8)NmMBuwWBye9@Knu zp2*SMlT>=KH=TbEadql-skj3dCuXq+)KA$R$Oh3S-8iO7``szKZj*XZW}Zi4>-pgj z5zGH1&(j?QRPXZ2YnGloeKk7+w-B0xR$$VuDB>MdB-X+t+_M-lG+&PT&)EyK@#LX= zRdZ{*M}p@Yu$aB@Q^aLeqP%p_a^3o*F`(UFU%P*5p9p_^AKvc4cUp?HVDk>2JDbd$ z%G`p++}p08R&zko9?@Aik>yrH{B}mte)eVjn6-ho0$Un6=d?_Uae%akZFGpS_r_IS`z8e68w7h&9x8uJ#xvz~op0D2Vx#1BE z%5hY!$VJmQnFn50BgX~Xau(pWp~db9n2FBZAZW)6)CUV)X_C0?D7HapRwx~!>NQuE z8n98P?YK*_`qoyUnZKV+(OcVL%SUr0Ie1r8a`JyuYa)61(c6#YU}3x3YC>}eDl}Ca zIp{1FkCDgG9Szy#pFaNW6aW2o z;JdUU0u*F*W9&mnL$`~#?Q&aXwOZ9fVmbw@ZQo#Ziv!2H6LoJ`AeSJ+?a~Dy4@h#* zlvaNU$#Z#=^llv--kOvNVs8_thvEgJJ^aBU=xMJO6tW#-X;?a+oIRh8wdSt1_@N{Y zvB!}ejVLwc(misNq9clq@b|bT#|GFnZD%?iNo~Q@f0JCa<|#lJ3Z_Sk@W#uEggg}jGc#gQH5 zH5)YG*0E#VNTstl6&;{e>Xh6yJM_~ubXq79|=ZdIXw+_e^@O_wr|(f?BfGV1jlWc694FYYc|l5 z2jz6k)o=*ExYeOhpiP1Q`%&jv&0v;nbmr_+A5$BVa?cjAY&qJ6<;1i&JLlvsy3HL+ zZs^iO#O_oQ{F=4#T5piluX+~SRZiV&Hl2g>a@L&6>#57Ttd0TtcHO+6~y$7*=CW(P2W>ILn%RlB`tE&BiKAXA!WbS*q9RIsg|r?Y+hU&7_cg6;%=+ zu5*eaw5qu?PJ6>ZtNPaML#NAr2BowgEJNIA$6wHprrFY|kUVX`7zZ3GB#NU_@s+}ka5 z@Do$YdUy-k>#@4TNg}}OsFUmdJ%14OC-tx>5gd+aJ%gtXRVEnvS4vD>{eJUa%76T? zpMHGVasEs~kW&sAA5nd1Hq5kVu-pL{8kGyPuZa)OcMij%qrq!g%mZ~(BQumT#$I;s z&jKX-?gbdZx8|vGdiXPu{_4-Vn%XH&VCs(rfbjfkN@OhCO@wyXBG z&PO!B*$p7thf|SYvZ-J5Wkvj;(5wtxzveK-UeNJEr%l8 z7h8f3$AXTcY&tO|5ilf&Y@Vbhos!elITRbX+&ZrC4gP-wrQep03ZN*1&?k|WT|k1H zm#g~OVjVbF>EvVk)2-|lxH>!#cDqCFRD#o07>Ei^0h=yg8y?x%g)H$lr zbWele18*T|)qX9A#J1GBNW_=pM-L~lOTUk}4~V#-;&#wq#<9HYBhd;EJo+Z!c zoO|MA@%_$`;;C;FkKnd_g%iF(2s~j~v!ALj+*$=KKz-cH=R-<0E00k5zUZ8HQriP6 z!4lg46t#U(#co0X6w*@w3@QW@C>ks0hj>HVVg#3O0|6L+qC%#p{(jcSQd+~Q6R4AN z)$#3i+Vj4*xM_*Y{_h%i={%(zwLP1PK+4f}#SdTfm5hHMAKv}L$G`kj`{8BJ^kbjd z0YSFuEiHu^b!s_yRwaoZx}5C*180i89PU;Lw|kq11_@A4(1PuP0B*Q>IrD0C@urdE zekjniH*G?f1_S{ke*oGJ%>{T zI49!se(R39g%EVbExUHd_P^{$d%bGkv=1M?`RnNa`f`%;nc`vqp_~Ns%jPd_j@Yxl zaDrUy>ZKD&nrj_RwZoCVKr?4X2z*s zsfhJdFA-=1e>{xh)dFfDRaB)zJ?bIr89$^_GHmz&Yk`2BTK&$I^ zkVkSm@&?nj|F1vwv8w%`COc?e*R$K}T75fCCF~V&KLL6MA>#03zi`xFVgL-J~;Zxy-2Q3+gMegw#$ul!ko?gOIIN zZ;%Q}pOnwax-rLOulfy-K1KJ_dNhB3I7*r;eY|*7T@!59gH4!K2KX$1r)1dZr|K7OKJQZ!RGUNw4h2X~ zHpxEnn@jim_t$fU&*M=Fv`tN;drK!eQP~7HI>$@-TUUnvvi7)O)aKGc9QR`h4(U^+-4wYibHeo+@X91c$ zPI(`EqJt<^FKug8s)Qd|xvaN?p@l64{M!>dK^IKZ^t7klVM^Vv?8~|x2^jnFQ1cmZ zCq*R9g8Qxh?}BQpl~YY44*ab}2ehSPzxS_o zY3dHEjNqZgR99`yi7!2l*>mvBtOK+qbgNNXrNSilb$7+iuC43RyUCS-UoH1j6@R5F zwbph}jp5bRe`G_Rs$6RIswXq`w&i?0-3vK@uG@x1TBE7$l?Sm%x*v-=+pBZ0c(a+5 zPE8z9&D^25!y8hV$(9bUFz%(YRp3uSbGtG54aH*&u4zfn^Gb7*9q-=vy;34rOZM&P zA6|M(JR1y*Dira-0PAEz;CR0XD@+6jwfS|U ztwekukYoXnNv3WxI^=z`M5%^TRonTH;$l=e2jq73DA-7aV&`E7#glL!82?01V zu(OCxRKm6_A+Y6oNXO-o1X&IGbBqSTK1R66Lg&d zO++|$a+h5u?LtidRyGJ;&PiumE+Zh5RMz=g)-2eBsyS4zT>wX0Y;c~_yQ~1te|!1< z_}BK*GvTrCHY3!oN5XKpChvSUwJ>?s&B3YN14bq)D&kxkKrRD^0}KIGI$<E;@4A zPSRIDA%9wp)3r>u@)Ba+)bw>qaxCFQWn(qF{XCZWgxOShck2~J(2i9UYnR4sO6T8Y zG$(8>VNA_hj5+7O**`&GZW?zeP-;8=ST~s@Il@C%<45mj$Svss_Rm{7&O^9NExH{c z5ULNoUbx@Be<9@XY^suU#<$qWLe3Z_-R%jzWPfkcmI?{Zk*(=aA_wrZsug8n{0_FX z1TbtmIEb1GdKpR1OqNb^=Yz1+Ctri--bJ7KzXJjdkb7Rw9e(q)VvZwjHfz}@nOf>? zs9zbib?j=^>K|eMgY%ocDp;-#0~>x<_{+{l#{dKH`>HU7OIHIYl2TV7_;WcoY0$OI zReylm`t>+~1>9?20Jh(c_OEZR7+H$U=>0T6c{|mBKfKoPl-#i{U(62VC|Pk&V)X&Y z3W`?&xb)jGEjH-Q?e%ZfAoK>Ram06mD zTD#kv9XZKLog@bf-I9`}n>W;)OmMp{5uy<#+^6k$r;ToP7df$RYFrQJg4Ra5#Z87+ ze~1Zk#P&7rGC%u($ENKmhmH_fi^h1A)oVS13*-D5iD6t1w|IxwLV`%; z8MGqV6>PI7_;4r}fT0Ya9R|gg4P`|%Ra>I@_Z6&5@H4QNBM6~|5fj*5XuCGU4}oOF8P07 zg_DOeUUpnwRKROM>ZUk^7feKes9)4ze?zm4ROtm{+@8ZtmZkFyQH2CyhS+X9#%7+U zF%ImL^R1++!>~hD;h?kUHhEIlHZ4PpWdZos%6%jme9okQ8vpjo`;T84r?H{3)@r|F z)S|!|iEUn-HULH0lw3b;&(p-viNdT=4XIB5Ee<05)sDNnty6E~3P{fZ^4%LBf6n=3 zpI5et(IT(XPmzR2Ah^rL0ef1)GT1@HFTh~ZoT}{*KH^7!$ws^8ob6!+IP}+EoCD*G z-ipCH_PHserf=O1MTBp%yNP-M$P29ZuFKYHYd;PqwaGVy-a|_rjqg0GFEYa)t-id5 zzR#SglY$D`mOF7m_#$=%=|H}%f8-9xbEu~l;>3lp#>vXXvm9EWvv4}%svc^a1#xbW zPc-RfO?V0f%V3qF=CY17=vV`ECtg_}&5xb}-C2_A-3K(+7Xx^cV%f+u-mprC>KyCR z+o9#E{7+52oBpRZQM7S1PL0M>0#SI47G`0)|lEY~NeBaVz*E{vUe0( zq~6(1j->tT4W$DEC+ik4f85=kI?J@+Lv?8H-D`QB5^Y%`f_vF}ui8S?6swvy}(KQ~IqbvDv9-*=( zL+@|zsX_1>`odbR!8s#pZ>9Bza&OM;+sfd`D-VDNWLM;&E@L6?fA^>4u=AbN%88q$ zujMp1K*`tY(p%Hj?ES6xs3z&*1(ZV#mwDNCT(;z{an2o_l&%1Oh|7Jg39`fP!<0Ne zyrL}{AQpQ>&MeKdlk0^9*IKsE{yf65&WPJ`@;{UPv;AErm(wbuE2Fk|e%$(IZ7y`GQ zyku>c@Tni`9_piZwvHh(ZT8t_MLFzP9nzD*<|4MSixjOYwtYvyqGQE_NYD4TIux{x zv{6h4BoL?roO^AK0@+ZRyim7Kj}JdD%Wp)Z_9Z#}?*0EBe{Z|rs>bTCu+NE5y2YN5 zmncbS#wR;xhPI7zcOK@UY41r+w87S<3igyD18r`)SCHmaJE`6ScZZQ}lqZ}_+p+ez zt|$rYs&UDh&hgO5%N(qzsn+M2q3Lk7W9=Y{qQsTs51cd`Y+StA?8 z$VlyAV!PBxe>h=N@k`l>bhW**qad}a59(Ku> zYe5Uuo>V;ZwtrVA)?MV>)wVrFHjQ`011fzw*6N1rQg%Dc$+_g)6CZ^6ms0Gxu4_K~ zo4Q4qMv}b9Qq%HUQa!S$>=#3{B)xBoBN7e83w)L-q*mH8+RvjnY5f9)eD|sKe_bc^ z-9P;N+wWhPM?SlkY7_xvf83XqIuu$x^8v(k%+P8^Df24RhVNW~@2mU9!6)@?kIt)^ zjDbSlWvL079Oft5Y1_p*e|`DhHj!r&L9wcCt!tzS8kn|2v3Pr_0iE?Ymk>csrV$P)dGY!AE%}ekWS0p~cGf?{0=MO@uf811LEg#-=VdvLR z3mMg$F}rOqMQ;10&bmZy-w!hno%}JJ|&QL}t;`IB5j`#k&3dhx?`1+H(;bU_p~2OqOLOR2@Sv$KxzHgWQj$ z*=ECo-Y1GGdU)?pe@%-gU;cm$+y^*VOBlsg*l}UWIy*%Q!RRM1o!KNefTdXGvxDWh zyw`n<-wUcV<8~%0*}S3dsCLxA3$5xvTg7htd-i##648|sox`E&2sXdjnWGcx9V~{n z3uyNphES|kIbf`Th6zJ!GqN-QQ}bNALBjE3(cbs*UuxQafBfm=r?-XM$<=xI8QTTl zv-ViB6V--fGPSK8ke8(p;M{;iU$&>-*7>rMl0-ONp*65oMB8*_wX-Pvr>Gyy!!hr| zR>;tvl$|C5*l@0R+sEMP4f6*z^Ky#naRxSmptf0BCY)L#Ob{)RT_x0GaGKf3s&?x( z@_Du{Zfc)xe;U!0HE4bCh%J!94~n*e;B`(E{G_X`HdOex2nc?9eoEi}g++Szt6#3` z!}wLZUQ22}yA`Ra+P~DCMS|3v%3!E*N@AOdR7L#dFc7QtVe3n9MoB$A7KkdvI`pk) zdr826(YzmGjmOsPLjqh}7QW%&UO$n-tG0O2j!^v|e;yvMkYgSWuy~vbgx(2yvMo=z z$#QM3S_e2^yITz+m6Nw$_DW`7POdj`7K!+ ztEeM#j{W{}?Y{ZbH*dED+9;NsJaeRl!_Py9jMzr1;ke58!2v{fKdDO@Ty0!pu|7y% zyhtK?f4mlrQ3x{kV*h}8etHiMp@L^L6ED+QK7s(D|ES~}=wJl8JgwN03Q|v~>MN*C zNJwkZ*p*pz&!RQ9qs&?rfy@fmoWTxpAc+#oF zTRPYan0||1jX43WnAz1;8Bx=%=b(quR*4`BkGASn5;{c}Vj{z$M zP&aKLn}&Qz;oq&YnM&9OUy>c6_K1qDc1$XOZ*M-aa&QvJmN{-#MeX<|Qzs&2vzJ(? ze}2h%K*hyz5pnn7uoIE@RvV3dQMNDE?6-gThi_g8bUni!6;NjDZC`^SN726%h$#^# znJWnEIsxa>Hpmqd^a8bul z;sD75e(ThzS;n<(dhCofvTwh|ey?eqomU{TifWc=?eW&x{KL2V+r5A=@urZ=nkgjX z9SW#!YH2hcrlRA)i`3@KWmQ8{e>0gShhdrg8io_wJB+MT)ulkBI?hy&qT>DG1)g`s zHUtte%Um9F+B*lQV2%feCwN((QH@)7QRUl8)Six9>K)I1sXGl$vn6GEE*z~Pj`5vS zBEoJ}n;j(^qo#=x8qkyz#J1+JXB9fUZJ#vz>kRJX-ykjL(B4?F|!;8kiQ*U&3E?dC4)~g_%!rnryX3@eCK7f zx)Qnya~!-LVU@k^AVWGAe{t^)XDT+Fx<1igS?%-_zNffcgNS{yQUO*j1|lJaz$E@tw-Wn*$Umlc+- z4oU2=^tUMpkhBy3tTqb1Ew@sDXL}3<#nY(_@a)bqCGXJ$@MSede>VjzTFk0gu4D^v zfd5&HfwS{T$n$k?^)hmh5%oj4>>yTCV^F!0pptK2l(hT61>9KQCx!`utoN&Xu<*u zu~x~5s7^2&q%P+&e~ZTn#6f!MR^$@7m<5Mxkyg)O3-|N}@k!I-+?8V_mg;^5q}NQ# z@!nG{g$m^idLCK^)|-a|XbYfrJjZouiq)r@@~cJ*I(NcB4Y*>r&p`|(&7b+&*%^wD z+x5y}0QOA)u7qfOv2I>~yXW2(guWFQ)e??ObrY%ic!$Dyf9vJ-U>l?+<@Sey75mgR zYqNpZcrY(Gpm|?89o+|sfhFto4LX6sDxJ$QQTg+ns%%@Q&pKzWGoA^?`C3mu=mX0I`IY=`s3Vy*SsHMj$p z=+SEnJx94$f14!qXi22o(Z56-e6H>7TkxjBCP9oGx@~;WBRKc8%*EHpqu$OIb#(S# zJ}YFMs45f8lU%e6B~KgFh<5DO&bnO1K4fQ*EoInkT(zyWv3uyJQLmyFI0Sy5?U6it zQ)(R|aT{_Rl+|B`@10_HYzx@F7rVe54uRjR=jk21FjQGTyDeXeCa2BmrBfkOTk0Vs zc?tGf9Pi8M=bnz+5?yQtW+Ns(;{Dc=#kVW*v6t-~0VsdHdxsV*Ne52z2?xwc`D?oX z4;{(3Y#Z3=(6wR!Dvk8(AzN|PX}M>$sNZrlWx!4+qhx2x@Yt&n@9U&JXYV zr=Q;z8`OV$6@EwL440n9z=mBz=V~vyS}mjl1)GAJ8Y(M-Beh(H_o=4ZingEZ!&WmZ zsCB80goLd;B?Qo^x>skmbQ*Y2@3 z{q5|Mh|oV1m-4i+zFxHVA3n6V^~Wtn?T{M110g}d;k1x6>rp_)$$=s&l@=8(HqyP5 zn^Z{!i3z=(*|*10ZA-mMwr$u<_80P7$j}Cg1=%04GTZ5X*Hdz9DlGR0zWdq#- zEcwhsoHV=YEQ+{5qh2^Uxnlpz6?^9qegBtt-*HS|^oBo|M(Hk^f>^6&9lahRf2n`l zWtE@hZ4q!tNQrjj0W%H~=1vaONFeKv?5r}ex7jbIw*{-UtLI;JPN<4tDtfAiMZZ7sfa7mMSiC?9Zn>9~m8%%vsu_0{&>r?Vkde*gz4{|{kr z+ik~fWNH2)u9ZM0GLau$wpHyOyGnn{s;-`|cy)0sks69}m;e1d59r}Jm%Nf!SKBgm zc~2fB5V3b4V()t){hDF^*-KfXMY4G!Owt|43e=Nfs)s%@q1Xo)!2y!nQD0rZZ@>Tf zFK^$y`OVKC|LgsSpT7C<{)c~k`&^?;4?N;Uqn2vXV*5Ra7DbtbTOaW4+F*YLb%t&w zO_BCY;z~KhC4a*1+#RCrUiYTSxfB#-%V@-OeRfOe(4pH&=1X)^?IKid=#G|QIsyH2 z!?<(5d^vE%%_{%^s#&S4Nwl};+$6+7FF|cGNXvT~tI%crOuu!Z_Z2V5-n}VfseR?# zIHn8691dl5=bo1GQPFAUo4w^h(5Q zg?igGe@;%a(+NqH9Th6NRxU7`dBTG3jUY*6oGKbjNRiSlYOfG1dx&I=dG8#t-MO)( z+ZDSDpnvvZX5uXAC99l`<|?1hbsDfc`ylMLxEv%e+EKGuGO1JdCXIi3?t2^MU^yLS zA{nzlRZT)MOjB)58!D^l@(Ly9Hk(LVi4we|;`7GQIF99)Ovsgo^sVmybUl|l!+)@R z&w2Q{0IaB_4Q*^0&Ix?597*M7$EY}BAS~rM$^NTiuN`-AicHsQFO&#CbB#Oi1TQUA z6%zuQTIRo;e&*flv;u!yQ>a3PinbU5=NwM^xLFNO-8VS~YZek8k;uh|A^p+?*+A`AO7TnhdtAtuL@Py>8p~ zs|)!lPJVH?pMqrEs%MCtU@>L$V)w3A^FL9rOj-e)pO7^jWG8>8q;3|&AtS)WsyI}+ z^oj3d=iG&@SYhdG%u1>mAZ($1cJ7oN9aef_C&Qz@*)*ZH8%uI2-)7g_=W$-* zu#}cC;IiZdq*fSX5XKwq4a}OAvN$EVjU_%Ofo_|`aTb5nh6gg<5KVYld2kMNhf7KT z-iMm4o9?vaEeN>2aLL=VOYvw3WGmONujG$^cLi6%S%S*XA@b3?38Gf++6yuD#B9A~ zuX$Arhye5fTS&-W^m+3W=YViu!098e!?api+1PhK)^H7JVgt)UpQEC&TDuL>@Wvmp zzZ|Bx0g!)(TJkw)7V$Ym+Hx{Aae>C>bAdTvp~L*qGKM$8Y%8%RziE$`E-@w#NU$RZ zsXMCgWmCVG&Lp3ul^3Al)MB~n!K3OU2VG4-U*|oO()TgHG<^H@wfyt=e!Oh#KcB{M zM%tHUq9yFJFGpuR2NWuYy>N!bjtgn`&joo#H zBp23Ep(ECg8E6^*TRw%sw?;JI-qtmkyshXPl(K?jrw1*<2|~j$8hNcdq_B=w$U3r06Os5Ec17S2pwp6^d;*<{Uc75v=3{b+Hnh^~FTQSF1^Y zd~tuyU(Yyz-U3dm&|LLTw9yj=lLEc?sa7G$u(#raH(`{#FtUPyBu^;M+{Th>^Y$ny zlp4Y0ny>0iqob);Z)BwA6~#q5&43GPge4oHa`Xrfq72hDrFgoJ<|%Wy~XfN_7E@BE8CFTp?aPcXv1qGctEJ)GANhu zEncmf%rD(zW+CwLk`E`syStCVApr5~te#pleb8eb>Y3ZP128j9^zD)N*Bo04h1oi`55^ z4KwVYBp(1${>kF~*UwcZ{mg0dQ`N?CV1*NJwSx3=>!4Mu9X#{s%4^xuPze9Fw(BE% zUn^?qh$;N4E!7lYvX0PLe~mQ}mV!5${yW+pkB}Ms0CL z-Yb@|Zfy#qT=ce4Ppg#XJP*L>zIG0KuuBX)+;;oE zZCO+aN>xB$YRQ0-B@3GK`RkD9k5IyQKMlj;pWgSMU*zla*=ry9VoPdEI97lh(A_Q~6aPKo+`#ux|yOn`F_j)>`M(qFe^`rNM&yd zBZO=Zy7IVX!arNeZ$G^M+uJ^Vdh=~*e=RReoUZ+;ghs0N>79RjXnKO_(&!aXx=65g zzgr#33L1mY`NlBt>4blG5;*}RIpNh|w9x@UD$T3*vy+&~2IQq9JJ9{935%_iVVd!( z3NG4`{TSPhpyg;9unXBDQ}0elBxq0#cT5x7crR-X@Yb5bAVTZj#~-I+NgUXA9A0ra zGH(mNTuq}lk`aHPDCvw+VZH~ye<%r2;6%40CogZHer+|Mnau+~9+EF_mxf&;ngd^Y zNveoHoL*GHs;@beYmb?ncxe}D1B;i8rL5`-PzW9qw&vS-p+M$4`NXj4yF49Wa*y*Og&vNq|LQ8POtUD>7wVGfk-bUO z-ZAmJm)^-(XP_39VD=Vfate_*uH&c|MS`SFV=;o9VPKQwI;G?MwhGEAY9tPniTWb| zn&WK_1^0hdaA{qNo43;91*CpHq_UDNOls<~689SCWwTAqU>v{!qWPRD4UT{(|s*vI(q;_Uq zL2fHZw~%FukJe}^fL>1)6*|e<_Fl9rmfMcvOgug>r|py4dK1cB6y=NuFN^oIYmTk3 z1(ARER=ng_mva2~$NwB3etP@<-J9>m59Qs*x9xR?cnefd@T85`x89E%;5%euHLqQ@ zieyK)a)CT;)<$W$zU2B#c6-!^P?S+QhkkgV(yD;5-M#Hi8|SCMUx;7 zi<&dL0k+#c31I_Osfd%Izm`lZpK`7}06Y6tSo!bYefwd282|5ckbF`+Vo!Ci6=FCy z#TH}JOw4w+v}CjNnb`X*7KHL~PF2;0y5YLelLwr&z1KWgwBHS+Lp066ldSWJr}uv% zdmS1gHD!Z883|0CC)Ia*IFKDJ*+iMa%JTxlE2DASLB7vH;(&6Kqevga&LkZx^#!o$ zsJEVgUjR!}4ryw2hJ`aHTOA!L3!z^69r6OYcE64ok%36qUeG!(K7W;D|NGA$zWwW8 z{;?&WL*&z?*QQSv3=u@b@pPj4tZ;uDLdjGWb|2)6tFBbjV%>Z^_RuFo66eN)9&Xr~FJ!#O--1>gt89M?m$LK2l$1FggktES-pES6v-t=~@gTiukm?QEM&jvq z*#Y>2w-6@*VJt7sBdsFTuP))Iqx{B9^V@HK^KbKIS@$V4+UTRKz61Rgvg}Mk)ryW& zO?o@Dxx75j;G3IJ%~C-XSg51`#H#Nf#MD86ya*7yVsh=VIs)vh5OIGFr*>P@M$tZH z{t8g~>T38r6bA)D`U59;%_?swY~N4N;JKT!pn`J^%L2OQ%{jfHVL_MWYtyn!CzMG- zAA!6c?2z0ojpQBbqTy@Tul3HvCmY#{ayz`|<2Kw7Cw{eR@#k;<^t!82W)ImgeY(R6 zp^a^S0Iy(tdUo!oTPT0n5r5h@0S0UnfTRPcg_E$eaXIO5?_RSVO1C3|+4~P`Jz8`U zcLwxDxue3et}V}3QAG3lte&^+P1P~G=#`XSpsGzZBEhqrPi47ojn2q_7OuD|uM~fpas6sg{4=5Hhw+)+sEykjD7VDY4!BBN!XICV0r28g&l5D<5fFc$j+RIxKeam7{VZ> znwnb`CX{Se*_3|<4xE>GWG}xQiRWnW0NW@3Sz^%5VI^5XQuX6Z8i)XyPR>3jp6{&X z+JGZMv(J+M`AUAhjL&!3{z5%=`GuQTe=G*k*}hgqE2{>JPN7A^jEWX+u{)8PwOk<5 zI~pA~utEwpJ=^7_+9y0{DA9J?02G4WYKdR#-9C$B*O7md=Dj@R9KEbGCA3A42gey) zP?iwbUD@;mTp-TIRtgCWNMuvaop5YvK$G$$M3hKcJI_p**>6>%Kq7!K zTLPjT%`HUjB-;2V8}e_TGW5T{d*xc;X)Uvm#LSy6rKW)>l}#}E&8Ic{zpX9X^8oXA zMvpB3ZybO3el-i}%4vG{oHhA?^OG9d;muC+nB7qJnry)DhiK(=?4>oeB*$nr-akqe zy1g}phP_tn8d|RI{h?^6pz}Ht*zqdPgdg{GV&W$1shMNL)Jf`7ROX78&McdEBkTtV zc3syLx4>@8q)*V@rE-n!Y|Td0{mj35b@=C>-@SkCJaa%@lc{BmE0xUVJF`fwI5x+= z=TF;SZzYB%=bTNUNg2mapT?kaZtak&u_>)K>^}+K_^oj-CxDAhD=iGgs;}skAlx_wq}?=t`QDryxmN|8MPUuI-ls>MDwSQJhNzs2ljmNFC#!Wk~x3MbinpHR8!5-DZvhAPtiL4C4c6<0#sG) zBJc7NK`uc}t*}rPsjf|8%ne%&UJwSzz+-9&pnQvknlEM*Ldmd-J?je%y;pzc z?5ayDZ_Ii4y@4~tKi%8-CfO8LowsQ~{B1D^j=tT%tv#HiypFbSNBLz!q^1u8fYPQy zbo^?TT1z#jy#pNB=nbB_AkW&^b^CiFNeq&#AUIq7la_U2o7<=Y@M@Ni*pZx(JUE1z z_iQV8hCH0V8XEs&jn{z}-~6N3=k^oQDNegG!<-4k; zsW>A?_t2J%Okj(q1jXjOs`Le~V0v-a3Fr!rWWJ8Fzn7Wi_*C5mBe8)1;4{sKkbHIm zWm~OlFb#$H$phywp;rBJ!3!jMg#_U8IThiV&F+ccZ17=k5#qcVGr%a~S|fkqK*6x( zNi0}rCzHFQ#$r7wg}ppr0%-o9FXbog<>#~gG)vmU`SUGm$ z$U~^qGR&@Qg>7*ZCM?&TVJ%zk+c&Eo)m}CKC+68Kv(~C760`1-P<32{^4t0eLe}E6ul}uaG)!~ zkR>IaVaDogf%ok@hv2leJE#wP=oqcG;IvZWu-sITlHEWMtn3YEamauFI@!uF;@er8adfb+cAR`yy^iwGQcd}Djp($W@+SJoQxgs) zS50d`;a%MV-jS}`%e!K~O9@KT3Pn%8O13r5k%;c@CzRRAJnQ(Ui@9bqe*59=7qzm- z;jSv*6o-w;(9Uh!VVi%UfqXuQeC-TU{hvbk29d~$8+83s|InimH8pN>ptsCo~xSRECI-ljR^Eqn2W!`E@co}~@>SaN)s&gIsMZxy&!--Qe-Zsx}YwEs6hjpU5Pc=Q& zs1ozrLtSpglu3)fwwC`m*6TXEynXlemG=E~534Nx(4H$#kRq$uwVfI2FkNKD%abXs zi=}wC;1D3EyI7A+(63GJ((5R}mM?W0)N)-~Fvhf@`YV4a0+7h}$PV`cC>_n^6&?9{ zxZw8FOGe=oDV1pB{2#$QT2AaR{iNvu0n{*)gZ4Hdk-7(28t4<*W7-8@n)-TESnczw zr$V)w{q05J0DI*^2Jyw(s#@qRR%P!9#jh^spWlB!){x)-R)g#pi)Vf4QsgAUwzIbg z{gJ~Rsy=@}EwMn>n{1MVURC{=i+XK@nt88zieTqDt5%%VgT|4Rl95&UKSd771y|Ho z#_Ag{V2@K_#E}-b|GXnb3^w8Ob;;j{9byhRW%em?S7pk*9z2KU?ZpOYZ=f?HJA9fqz#2d0)0=Wxf{e&RsQ(ekZSSz28Vz?J=Rw#9MbRf=|1RJm1)1F+|k8NV4bl7|Zh3iJn z3TJ7ecDp|1OSvapT=K`${rmZzInRK1HgbTlnj6gE^ohrpz`<)#1yNm&DE zuNpSJlWw5g4hVimJU{v;Fl{_1~;wG2Cw3nT!#5f81u@3h>~V))d{9=gkEfZ8t3@5j$GQBCh`8-r(==${*ju$v(XK=I3`ybNt0f;3ME&0(r9HkXw%I z^*szq`(TaSQq?2$c6za%tBPx91SIiR?xg@wVN}H8sw$anMRwudH$e?9+`L@9*&A8; zJlO8+y7L4h;T3ngviHw-F4}*!1VTIe#@U>t1G7!XYGNJwyFxQ{=1R#y!Dvxt1NA7y zp9pU$)kTkBs+Dn;$e%2 z5$NRX9ou#AMeH>0LusrC)!1w|2E?(`9d(hYl))B#`iq15pd2Y_dUZ-~Eo1Q1zVOw+3`9e({m69%%LR4}B>OZg4 z52gL|=G))>{ue|WfRTSX0VF4uEQP}piP<@KJ1b{#KdH}isPw9!{V~?aqn68O$%;Nl zOM>>(v7}I;-L`7|kNMMK58GwGBXIdFrx~^v#p{S67Vsa%1Ql!c*c9&l)Wk?;A;9n# zHU&%Wx%2l_KfC*#wXh*fBvS44;ErkijhsEEf)2WD+VOjWjCX&>Qrl9m-^if{{LQv; zW#})GO9{F;KF<}fU~j*F^PBq9#}B3bf?XsrE3BegWV`yz>JsrhWFXtN09=lXV#+U8ZyM7<2R}6dZ}H##lzC& zS=1Vv)49bRz8ouWOJE^fD6P;X!<@piuAS$5NLpSR~88m2S{=Q?($ zp-=l$+Uimuxk)1iP%S!MGuB9u)pg+I>68`6L6`uBy07QD{>!ENzrTBZ!uimJyb{1~ zA-44%`1OBq9Y~Q%?nw?ZjK6t#L^=pcW1T>@oHrSdNYrYsNBgi&!ZRu~RBc%4PO+JZ z`!E`^Jq{b-!89UPvdeg~k95Q~G_8W{e=l}uS6fp0wDLKxy=kJ4M};^ij{GCG|2$x?vWj z)L9<&d~M*)r@jjME6FV$`o-S1IJ2ki^&R0ug>(p|vQ4(wi9LZcx1~P*Ez1j=K3$(; zX*_?}wYP8k*3_^GOR+jFw^9XuPFtCmrx!6A02x8ooO^Ye?TOm8vH$9vY9svSoA)1n zC?8*Uk5qkF{yptS176;QneE)6@TA7%9Ol#*mwcKvS;_Nua9J5TdsSsmuxWU-6&PM- zCfB=N9hAF^15|0#<;lt_nZcwJ_0v*S59ojVC_`oFh9;xD)H49t#IS1IMfJ^ByM&zx z`pa8G)u9KPIss)sBMup;$w@4YRSAhjT2?Mtty9}T8O~H?X{|WeI=b#VCJ(<%WE@N% zuPxl`gy4X46FS8;S5`m_gry#zgXybM*x3BJ3(d9e0Y*j7pWXe9f7LdpJNTOUl8b-v z)}2jrT4_7gn*tI5nhvNrp*(}svv$oAHZU`B=+O+kuMx2&2S6Otoa3@9ksNogwJBO6 zdW%uD>!MJWp*G{04BnE87xI zdw{-Nv2Wgf|M8dn)f^ja-XCh=w7P#FoK*5IRhgimY@jA3W8-bCu02QSIWd>DrrUn` zWilnPa#ij&bPCthT&o2Rty73|>8+?GhT?xh5y8ZQ#+ zCo8$x)NOfX&EECbRU4d%zSQT2>x|p{bOdWj(IZH}*I~X^MGg0)3=`jW_G5QAf`zr= z!cmuaS;*q+ChPEEF^<9L4%8CY)j_rO{8S+XMpaLH2?^pVS%1!+>9DYRZpX69(P}2h zdGEwd;!WI3x=pD^T_7O|@JD}6o+|0iov3kk3*ev;fXI^#cWDNoR;#kfRnLnXxN@sM ztKYEoLp?h+n>|wcYQ^4v50CnfzyJ6P!s0{$?R=7T3IKw0X`C>YXR|R%!7ZRv_D14Z zbDa9>)XiDx)z`=qD2#Z35ZF#$^yt-_WKQR?+c*#thm|d$l<&djvQK|?)4xq$mq+c= zUz%ZsY7=MJCjq}39*QVGb6_3u?5CU0F`*__*q5Hty@9yYOInS9XVFm)Fyzoc(D^bz z5lQ5iO>8O(6crNKTSDEPXH+Mr*Du%YkMEnNSKq(=+j!9n{X{;aDkdC)^Ew62YBGRd z3$W&fI+LKPV>F5dU3z~q!>(0oNP6&|!OJJUALyVe*8nyE^MaAG;zt`8;*;81<#cvp zip?dV>yFM*)G{YMs%@8EkXkYEA4yN%-u(QW_?vm$q$D1&YMU-nPP!)dvPV5F9Idg6 z4#;f!EtA0~WNG7nfS{U+EH`19B-WZj_~#@FlXeKyU=Up}?VKokPvurl{u!OM*<^TV|&ysV!(foGT{h zIURRv?Kt%%*0*ZTemf%D$pl7jK)Deo9bWCh{Gc3a#KBB?-^%{%*G|0uyo#5t7w5?V zK9DoJhzlAoyJBcLdunL^yj;42ZM^?1OW9DGr*9 zWEn`_umO5_Rb4=ufvCCfUS+(xivJL__~Q6J4R_9DkEMI9 zdY{2BOLttGPRj|@wOPLe5k+-=jyA1U^?G}WNOG_Tgd{7fDE710-Vd*Oz}OD(KtsU> zPU~xpxmnzj*nk4|tOz)m$ewH>1`$Pdr|>K-__TVzf7jmkx9|S)3wlyu+e*AKN^#`O zjG?Ud3!ZMuz#%E&yv)bwS9m5AgMU?qMi0@YxjChWFJ!tR!&3r zo}Dw$N&tu}RY&lR;3kK(*!O(`Mjch)nUf;D!PzJdAn6NQKtPcIs?Y(JICd>6Nv?fY zVs$EQru~!+Zq44=%GTnCuSeStd>lldAqNBl=~h>IOmiB=xCG4A!AGxoZQlq^QQScb zKl^`9fETA~R^B=34Bd_aFC0=E*x2cCpRPBOFGuN$SU;{?v&crhzg{tTR{6{L!|#4U zgUe~(QiTZ&dB z*`^A(j@1@?sB1%ln-FKKOwlXCq6wQ5a89e+r*7vpFbmwY+uY~v?s?Wt#duiuS0V1t zx%gLDq1ZOYJRn4F|0bn4ouWuR`>s5yVD z@}u4X^oLzKlmk;wI_-N=&BHd$;e3);E=@;KW9YR#&Av_9a0wxMQ_;xxd>Fq`2nZP- z1k8iaR(p)qv#4sDl+qS(JK})W81AEHlbHv?3vOQ6PJUM5Vq_a9Rn3m}S;i}BPY%dz zI;($`TfZCc`kR0CAD_3{BOhGL6c~Tz;GmoB1~8-O*VSK7-CGY=mXd~6?dw@?7ddYm ztby3Ts=*ASlWN}kkI~tA1p19vZ?_n%nUx~(a~vUqc4vch&f=K6ZDF7D!DbJ3b;1vhfFoUYlCvO*gv9CAvvIYF!WMsfblh7l zUh+9-M(>}dkyvp0w!at&eyrQ;f{bK0@91}Em6M>sG5AE1)6f=1v2zxkP;=nEUdOqA zn(nTu-r82jYgKZDm?D=p{+?A8`}0;Q$V+KmSDp5UCGCx!U^xIpT`U;)SRb~p)s~9p zm?^(cQ;EvsOh;X3v;eI+siuF_n=#*$Pw$cDvGYsd{Zd_?4hNir-OL z6#`u=M6RXz1(0(}rYneg^PI{<*QFrc)w(R3vY}qUMMa&V4^SgwhgW}r*BPmW@f;5}pp(yHQpT!MF2u!XdpEK>fS1k*EHJtR*VmK)muR@tJjGHQ)w(;<7 zvaR4XSn_umr;$z}ja3ycnF=WD>or?8POodFw#(breX1TBIylp}PdbgIs6nuKMWnQ; z79rjCH67irAbpn;X{>*0?zcQ+aq!mM03@Z8GYHAPh;gty(Ho|my>n};hl!01Ea~;p z=Xoc8ey>OMW-8qpAKBcfa0bc7`m-XH8jDySw8RD@h*o>g%)$2Y!Tqoco5|XenIo~V ztCG1L;M6qv(&E8u55g>vH(a5?o%>h0^FPb?Z-0T)4@jI=EB1e2IhEL#ICX`h5*dgK z#A}F>2-q^Ex`28ju_`Kzx6VNk@Fr;AH6ab^WNfGXRr}#h6Fh_P0$4c-dne=y(jf>X zZ7E0j=tLxZso1{-W%l@#6U@=?b#G}{JqsA@sQ0#w$zK;#IqS%#GnIEecx|-c@7?P9 zABW28Q5p0@ANqe=m#M5Mi-q$2vPI--*QUwIslU1%GUr5KYDYfcrWi<~4Opa^wu` zmW+;DZGr7my;m=^ZYSQuo6 z;n0naKRv3fpS0K9)r%ix0A@g$zu%L(!eJ_Z2o_k)Eg*PHzq}IX9jwHQv0M3`zp%s4K{ zsbcKnAd=`k2xv}!37yTs8r2Mv-sVTQ6-M0^&3u#g6_=H&&*0Xk%pku#x2Bt%j$-Go zL8G!`M_rOAr(BLTOp`Ruj~+vbLP-BkvedFb(@pg~l!mZxKofDY(acK?(t&Ml>rdf) zb8=h<-?=Ln{MEw!kMa&4`nU1n<;_)i@|(9yp7X~yGzGAKb71cd@2PIVrUFLWP-PiR zF&67=+PhoAHA`&D>77BD_e(UaIFaJQNG}V(auq#dSbjZ&adIAX3-C!eglH=#3cGs73fkVi(gW$5T$9^O25*mYC2rc zf{pe%;qcCXW0;#1Amk}E8SBrjnU9rQVu~+>+Mg=pjw1Cts`;e-BeY#H0PhF9eA9jW zBJJ(nGfYzFZG-9#ZzG#s4pKcYiw)MzUY6n*L$tr6CJ^^_i(zbj4ORzk4STBffmoJw z>f?%egLJBX00c}`U88!zF!e^&oMxNssLfkb@7Jt<0+BtGOPlc7s<1PO+zGNAR~ySz zC&!7%HMMEaIP4DcbI}n)INgsQ0KWf zc7Ip1&C6N`J5G&yoj7Ys^oJCJ$ zjM#zG9k`R`L(2f@4eOJ{od6PZmWrrKc7yLz!WXDg1I|T1}1PS zcdzV)HlTd7uTyDz|HF?jE=ZpiEjC^2Pn}nGVb|vMZCHN2(aBgH8Y-zjE?aPHV0mJQccW zDK~b-a35tME7+&5v{i`|)!qbR@rWiK$Cco)TAb^+GnB+p5@2&f&pz}gzHC-n{^;x% zKquVG#yr9Yz~pj_ZMWrrY~;0LPf3q1auyMY)6cyge=Fa=`R(`bfBN~uFGR6yyLlEk zd3P&Oy0&wv$#c?fbrQS$P%n1iT7&`excibqakf-bojF%`8{ZZ52+A$iyf645-`PNy zvbCA)pkyScsRbKH0lPXr_8FboPh{I+o)Xm(wqhJ?$aaXIYKDs;Y;6V{jAaAWv^2yY{n6x_q%_e|-CH{M*kz z)bT zMcLPRbgwSE2=5?&eFWlj)vh(qcq9dCOi-61m&KMp{iaW^KgC*Cx*ih3OCjJ; z&}2`J-*^P>tdGy(bo-KP+|*|rs{9j`*j2}h2eE76Ef)gMvFkO5THFBCao;_9qi{0A!l^tQBmUCO(VO-`$%LiVO+ z(w2RVj`s}j#vp7%^)~M=NKh);u=SKH2ikTg)HKYvoBF4GGhNg@JPL^c2AYE*k8%Ff zQH`mpy*>h*HZ|vF%eWLh+xg{!{X+bY+OZuFM#HvZ=DN4=0d~QvSp-}k@&fis zQ$f;JqD0hN%yeH9rmORu@BrbGZnaBk4W||_p)60DN*m`rRSG7_+bsw&^MXA-#wj-) z|2S%YH}qLYi*i`6+&DqE?l!kt5b*ai=$+kfP55A?@S^4ZHSAiQYMzp|4x9Pzi>H-4 zEBdi{gSQc8^QFx3shoOPar!Wcz*L?V>%ZIh(GK}H|MEgH;w90%)uiB66&sazg6C8f z*};aaP3KOE=yBOd*coq|`bcUFZu!>Kr|T?#RbUO*cG$MhYWFL#*X!}5j$Hn0u8R=U9a&Jtbv%U+k4{Tfqw{c<)f z!*<;OlHTE$ExzhkH_j{1ucO1I(lhXfh@p84=VA>hnr@Pv7_TkcZ@(`unk3_+BUihB zfXr_23Qq7Ik3+O)K53j(kc2MS;3fXcd7pExc_%e@`dz$#Jw>1`u-ynz4mFXKWSEXT zkEEh>{tsRg<}3 zia-v~5L>lr%B8i-?gUZgwbWvp4~e0F1VHh2I-Q=qlH65pXdE9f2fzEs>6qcQW&7RR z(O+LRo2Yi9RLM4{H6kQ%2J{%M0yue;wZA1%0JN%O&zH#&P9yyCTIC=!lFpzr)rVQy#Lw@OUczs@jIfO zdsWZz(`@cEo_gJT3wimJL=6FOItLS9pDbXjcK|UQ^GczA&A;R8%0n zwrbz~{il!Phu5#}Y;s~zM%)?@-JTT?MV0UcJcP( ztYrl%*vqzfC9kd9|1KZiy?ytW=RS_74d*V>b(&+aI}vWu2G7)dAr+6Kw+4$bjN#$3fes?nffB&uTiH2XPKkpY>d}{RHh{UOKtziZ(!qgNM(=X- zDZy@Qmv+867_Y(O_i~tjUn=$2{URy+`0{>WdjK>Jo2JJAZQX#iyCr~Jz`n6$_;;qo&!=|F-I~8oXJDy9e9K9fsVO%t#`SY{zbgqskAv zWA+cvzT@J{768Sf56exWJAkiL{m>Z0t56;l)NpOe1P-?&$psdFWnJ;KrUgm0zM`NH z|GBE)3dfF}?H{McV)}tv-3&DVF+C#y(7ZU}%;dhE6(L?MjbI~J1# z5v+h>f!@-2*2hi>yEuTA+R5MiT^I_n@Z7Rh!4Zn`%%RB z(@{B?!gexoagO)4uB@=0b_)8N^PV@IzROmKWBF9!U--~}z@pHoz**}{j?3|~-55EX zCyn-e!Wamb4ms{nT3g;>e&b4YJS;E(=!$L-e{2jsyF%0!4}%Q|^RPF2*R+%+;y`FurLddW z?LJIr$0RLitLl|eC(h-4)8$?%mFbLgAW60d$OU%Fc-3`HcEc+x=f#Ld4bCjJ>YbDCibnH6r9NO#+7&seUdH`TjfftQy846 zTPAC_DGWxov|Uq?lUpYYz!h5;L{w^5`+j%i$H5nePgEuMF151H*Z9H1DrEaK5`T3E z1X3q|2I%iz@6=A!JeAo7nmKh!rnWaw&G$2NC~tDxv4I)0@~h1_#*WyJPgeFswots# zYqrYm5=VB+agaz$N-A_~xIEJ#fS1BJ;$NX_jMm5diG`v`?kALgp`0oz&8j zHnv=?gRUCt58;YlPBrXEGfObrW9I~HBNeG9d~C(B#`^#gEt@`vQj4Z41GXIWQ-!oC zMh2(mRZs5(+L|#|ELt(GTmRI9BX6dEAmJ+0p*xAV$X_jCY_&dMKORr&?~r_;~l4cat?H5&_9uX7{u*e zkm6wHdFU>pfz`2YCG-YuHoS3~oe}l6s#w2O+^brV&}3ob_vBQ0E2F;Tr2kmB-;E!~ zyZ+Pb0~`IY)lz>2r4Y2MCUNS@m4byvwtczml{>*Z#@uETgMO*`Dta_#%Q5c5U1xb+ zp!lhv-Q#*=aAz*bX~p*yaj}?_MNs8{Ete)@s9tmLtj{aI!en z_KevVOlW*%&6aECQiJ<{@H)HNm67NM`k?X~9O#GInIQ198sjMdVJ@8Mf*- zGl|#N@P=~fP@;-Nt~{zfgVrw{vDkU54lSN${IDgXZ^^33ZIcu025^S*Vb-)|Kl%SA5=BeIbtB11_IW$L@RHY_W^$ZXe(dMo37V5 zo$@>MY~i1@X|bIwkpgE@9st65+1G8;07v%bWO-+_ZE6jucUxCkNx|EtKdZv{V-lY2 z3-9joRr{+kQF6b&zdIoX~)6EHNVm4dLwb zH~|Ju-8pK` zQ&6+X{=#OZd!LRb%F72w>oa?(EDwx+S6rG^;Y%MoD5sFMc`uU?Dhzy0f9zCy!Kn{S4y2dag?y81r0+ezCU7Ryr}TH30Z*k#Izjj48ARTx6c2t8r; z%|>tsO3r(8)QMOF5V5B(Yiq|@cb3Gi@Nmw5U@}P&rl~gAle}`CYHA*Qaf_U))|F+C zwUn)FjLGZmRbASuosZqtNz#$d6Rs*aPL9`916}ts8RomI$bU;#ZJapm(7Yh4B##4p z=rEc5OW5+t$~nXLL-|p3H_Ol8KUe3DrwJ>aH?LxNIxSpjS7GM|$X~@dV@1EtsMS1w zTT9WlP3;uBV07RK;?^Y)u2L-gXc;={4k%K~YNIK>!U-X)t@Pwgmxr9l7WVyfOW^+0&|6fPx7TDxbz2 zo5HwCuXxKHfrK{UcOn5)1wvH3Xn!q#+y39*y%P80vtfi)#6H&LX;j18Re|E1qHvCg zy3(A}GIRqRnzF{A^ZAP3@MnOfqTAgnUaFf7SBFASQL9JmLq)TJW3p3Kf> z@-8#k82Op?tI^a`QekXWXB`%QgbeDptrC4+9r|v=rK&$5*mg&PdK{1JTDKEg_Gyzy zuv1_H^+DQETaA7=|EE1TnI<~D;at+`I}xCVlSA=XwQqj=uYY*++wb4Lyn}uk81nX` zfeZB4C>&Qye0F;$eUWT);-wzmMP82EwNaHUz3rzU0XEiV^U25=8z=aGA|&$~RjMTx zu?Jx&oFR@lq4OF*Z{nlU-_VXTvkB&-fPS+Kb^((PIi4UofQbr4zRh9FXjT&~^8Gm* z>^MD_OLhd5%*w%&!!(`WW^LfTs@0tZ5oKzsL*T66s>yZBr>>Veu8CdGUJ2!kCHwZn z`^I{ezq~9kJ?`$e6mGtMA>Y-mji!oA)cMa#4>b)G&y+TTFbSyU1CA~PLRC#Npci7J zCqp(z_q4M{&0j46;h#r~kgupDLE={l=y@?mu#=h}cJBURc9q7ZE!uQw*3$M=EQW;w zsKlkUu zvV-MY+^r7+#>;hkE@N&_T_M?%pd7~@z+A@MYfk&U#T6X%rVa0-^|WXjbVoxDTO)%Y zOr1(!*xEPlWh85VDb&hBS~8OM@@U}Ox-HpD08hQDef9dMdnvZw(;8yzNmx(Zm1CTh zS7wv)x%%~C?N7Hf-+aTdw15c!e!bD{UiuI0ej68HpQ<(q9)LTSHIa+7d7lI{0KcxO z#+kCrWcSq>Zo8oBX(5Zxb*=*HZ7P#0TF*AI+5V@XgP$%sC?E zF5}*Mu>$JS?`lG=7Cv@#P-M#jUExsg_Wl(|GNQdvr{Q8akWb*P3ZnJd99MzhCR=bPXB+~2-mQwZAnJ?GBHjl*d}wzrotXuM-L zrIN~9ZR)9iAHjLF0)|Ky3CCEZhM8V~@_4}3 zuGAZQxvv>#t&~+b|4g@P;ZcMb&GLdK6Vr>DbICChv6eh#X~{#kb2`;XPplb9AYS!2 zNWDXPmd&%0@SP_pURYSf;RwN+oq)UB@){(6C+xebhEHvk-xL_?o6i@}zc7eU zoXE5W%4-Y_Le(x~!|uol0Vc0+3kHd{$dX~3Xnu2s8eB)tw+nF7x3g;LJ{-|e5YU4H zN$k@;G<&C<+u%G1XLQ*ZicEqk9-1?{_Z9o*ik7HeeV;%^aF1%C)lM3oVA!0a_*RFE zK@C%Xu}c8_quk{tcmn~N?_n-{Z0yzBUXFRuT{)>5Tl>=VJ1fLDJ2Qh#|O6ae$2k)dRPA5?NnEDW`5cr z-U$ER6y9uVK$o47mc91Vwqv%N0{)!4xdBpm{{a-I_8lztbg}ub&0$jS?d=TP&7Jx~ zshZDj2B8uGT8__Kj@SByz!7-)fjhjX91dSv25h@{8>*sOHD}%?OQJd0$V+rJPY!i| z-I}BmA|Pi;y%L88nEaUGOqwaSRLcn# zqh9P4jmxLnrXlAeT@r~ZzS4*5Eb7i2YcSpm>oYBD5nhaa{KX;5p!vhjhC7vj(*%ca z0`-^i^4qO59y=+@yB?B1f&E$G=o{95=;UtZ8Zd3AgEgv2oib7OT_wZ8Y zI=pO14vs6>51Mlf`yoPhkyuW7%E@oxCwG$h1=>p9^@wz!znU3$w!QYvuk$`u8-VT?wjn+(-rMiTn}7NDKfOMc zu<-(+kHiYH>eT1YyV}INKOB7|cbBN{Xx99;fjw0f09ZBg({P7_owtgznnZ zii~U~wK0pL0?v;2t|%V6bmHzNN;)iWZ>QyIDIxh>_J%vUcY;?+Z$s2e zTx0a(i#7Z0`yc;qxBXv#Ul&xIy&PVC^9HsJOr(2uTRk6Mz=6tnk6saXzSIsPOsb6X z4o`<68u9vG7Q$Mc`@@@cg`rT(;lLAb`F0?N|IU%jbrlUbcE!Dia;EKbB2ZRqH+(^G z%YEkC^RD+vA|B|_(=7Oyo;0Vjfst&)r{*;TItYUC&;U)Ta)s1?CIIT*sHN=f zTVOw^ziKw>OW*)buk`VFZPorf+Rq<;di%G*KlPv6i;l~udS%*n7&p)$!tV~1p$VT> zQ7_#wlP-9*acaDczIAf4lv`EG3EIo@;yS>#)}<-Ua*~Kt{e*AFv!4P%I0!2b8MOXs z7rax6-QEQ4VLk(Y-_sO|H7K&$CoErp{Fz zWayrEf>ra8%aLy);kj#pba|=psR_%pswVSo)dJMBfjob8313IP)-n{jZwH%d^U{hJ zeA(4^sZ>=#uNJ=@o&;jUw(sV(lFAJhK5S97Q&;23Y}Y$~%>B}h4XjF0tC z=oR>CAxzJbPl9oep>Ki$6hudb2zsolgjsa52QOS*@awo?)xx6k3y-Q?{+uc+Ol5nr z+KvNkd)jDKk7zroqbcN!~NZd0E!E zHX=7)##PV)ThZlc*x`U(m(384oK=m)V55ZlhZGc_?NG8j4oG`U^-@=jvYfU!IL3U# z0X93GZ-=p9^Ks9?U^_`6S(~1^JN_CSp|EXOb|?XVQ$D^c&aLl&V@a1Y^ZY`kX}w1N za?gq1-u!$0e@6TG=Fcw;W1i5+0iqoaChCsb)%LKb^0MR#i3lY7Bwo}n5&U6(-J*SF zNmZ?b_@X5Y5#MyclJJm3H_g)LF>dcr6-Nh??Ag{CmbwRo!kFYE#PY)UweFa&qS(yFWEpY9Q)EoA;(e zf}3nR)sppy%~eYvXzsv>Us=58vdELtKqCT|W7Fgh76&xvNxMsS0BD;=Z>MRKQ+C<6 zFcj{AMoc@qj!O}TISACrCX*4iB`rnry7Rq%nqo-{_B|E(_UMPB#Sno3lqj=E_a9@- z7TeW!7;t%FB)Kj;hBPwmNt3U%N64T48Mp zaZW8AKlj_{k-~S{Kj||^Jr}xqGlc*JqF(oV>`S5s+%>9w3O_$O%&r!NsvV~z_3jSp z0$2c=yN|$|NR8Cql#0pD$6D8Ra3jZmJ3CnmQ@6J9OH22_%RHEW$lr7-sx&<_^$5xOLX$h_b16nt z>2i=s;62a!$%VbK&a3_gglHiHu#0+-lkI$6UoF`C_Se_jeVaUq zhX5HW%w4->hN%R^26Fs{G>MKL&LEM1dI`X27R*El4Dj~ z7^MNv%|W@6N52N|Rtk7w4r`M-2R+Q#^44u-+u$AG9N_D@`W2mPh6HY$T7~yWrCC`} zj=^aPKfTJ=S4}ftAWQ_I!PScnQ+rZOnLOT9uiljBa71_MT5~W7v_T+1Ov)02eQcVwtc(qgQegnAaEyE2=M%dK=*H z0ui*$PWbaaR&_Wh$9GgI(xuM|`=;%a8Wo|~sQKvTYU)&z8f{DG^R>}Clk8w*_KvNW zbAz3O3A5Tr?W%?IuQz?LSdyK=_4am&SODb6Cu)f}%ftB~>wtrQEDdkx=A}zkcc#fB zMp8)giv{~1?|=A`n?5z-D`E(hk!)4c+cNm$n9B*Hl0DvE9hV_@mStVoB+MrP&YNgC z^q72i#fkaflD}|W##vy63Q0!O&l21a0n)x7GNIlV4RdG<5l8UEh({LS@ zjr0c1zmA-R9m#Q2jyKSA({GTd``p2`*6fdO>z~SBUf6U#^+W5<0~m{f7LH8zl7kme zlD)^-M#O`E?Pd4h9f+-xX3!gyeA?N*jr}IvHnLiZY){fV@2%+lIJ`+2_N!_qt$=CZ zfCDr*xk^exgT~B{3EfNtWJeS1P2jipo411$M+R$ve}ZkgP*6VfI`jl|k~=T+oZHLK z&CyBS)_iq@^*pK-OtnpH4dF1DQVu?HkYtw-9Ne~lDLzU%zrI?upFX}EV0${84%~t! zI0iX%M=aE#*6USepxun4M4}#&MBCfBKW|g&RXlPqpQ!g}R)3r~tY)j~Y+e~#8Hzk2 zzf}hUUhr-IVFaR`<*+Xj*j4X`rvzBDrcc{sHP2uCV#QY!r>b@|-cEnpYy&gfHCf?t z?BoG|Y=JHIeLwj6J9Nw2MYiD7K7dc3hZ?rK4aO3>WQ)j3P;h@IxpyAFez9hM`f{5+ zsVSa>Y%ScXZe3OX*JrkVlH#TM-J|!?-8b zQTJUylQI&+(R9BF$r;A4z?5UWy7oy4{{JO^b9QB>VvoUqb?{4squvcTBqPV=t2+V( zc67@5f^Usw&3)gT1ZYaq4m*a@@-$r;yccifXR&@JqopfcSgz-2^;nK?vX zE?N2Ubyx->Jn}Ui=7PT3eD2J5)s3v#kgiXBwwqMJS5oJg=iyZdP?rPh#QI@>V6u^a zpuytYS;vTafbO?8)daty)2J@&Q$4g@*QWkSD)wQIu)_+cclB&mOKiaut%*_9;?dcY zLs=0;GL0db|MOZJGJ8jzoa1hJbaO`Ss+PvnUXC>_$QROaOJ4#YwQhcT(W&;XAG(%j z@YOGI?4RELF#hmvzJEOdIBpB;IO@WGOM{PbvS4!j04}Ot+kvPeAE;6tQEP8Hf$A0k zJUeyW$U0X_(D$LuF%E{u6Ipabwf0Ck)t5Qa(ZW|cbj^W8&sR~qI6dXgHRtFy-?tP3;3dm z$8~`icdNf74wY!XEa?85g|*iO!o4|e`b3c8>_Sr*5%^wb+D`8huLg;#>Vk6WZkW6E zN6prSVtTdKP5qH%QMh`8;(Q7u^*FS4x9dc^)?knV8uOyv8?r`+1V|{K%V}f=0`*uL z5PIb4u2lGZ&_#ol+Dg4aYtQa~EweXbb}6!4LquU*Ac*S%tDt_}Y|Kf@=^ck^Lj2Y3 zwt5h6Fr{qIAp$~fESFvB$CoMd-@f_ok1z56Gc*HZ=?Cl$0nmo{D#hJ6IlKWi$J_38 znU@0FSi<`HG}%N;(hHyN5vJ8ZWj%9W>PRqoz!g7Fa&t-*m_Uw9%HGz0qCWq5d&f)A zY5k$k11oJ;Th8s5vcb+iWHKix$m<{?Wj(#YvsFtNTXruCi^dY5$ZI(S?8|U~#v4a$?+CoU7`X)ZD%-LH^tL?_X%Znkpg_psG%DJHN5(=IfJf zDincP!I&0al%OkRe$v)|20{WdARvGXQngy@Y{_P+2dZeZqOGWG1!%XZFX<7w@39Wu za&^R1L40ScK0FUB-Wl_Ps;|W{_cn&&25f9^?nz5PDT~31_Z1c_ol6T|jh)m^OH(Bb zJ4c%`pw$CvdGfwsM>>xJT{nBmwc1feu-Sa1#!H@GE|~4~Z+`!O-#?ZYO4rZURTg%_ zroK4a+%B{Zb`S1_-oVO0rnuWxQb^o^qX^`=$I$cP?oFd&p+LU!!a|2al!e1Qv|>liIlTi|0$gir zYpCY0x(l^2u*r?*zcMcecFCE53>57RA2(AoD8-}WT;Vr=YA6#dac_EigIa`So4Jqk z&yV;5pxO?a1GC`cpPYu5qrpi8btwK+1d8C2KG|;6u2iR;D3M<|A)LTD&Wm%w?Mq_* z=TZ8x2(I{?DfInX{X;T4c#D(%Ca07cGkmUp-dow>D zE@{WD>rZ!l{!ScVZv-0~(i*1P<+1BgSrmPL*Un0-(;B@xQJPV%xs#q!P?ZY8$pOe+ zF?ZIGEvE}&zmy+JB>O}AUkh|TuW;$^v3;>--?g%2jehvef4)9KS_ocKUsPT#Pe_jP zu8vcBa^QHb3Nql(5VR6+YF>bDQhIEw)#fj{SV;S%X&Uu%e-#Sk>VhWI&X>95Dynwrq=jawHU(1uS$*NkL3< zheN_-$xYMKU^%v4Ra>g$y&2!=B7=4PciH72-4lpi8<;LSY+1EN{4#-lH_C_hUtcJ7 zKHUX$Tc34P3QNdXt9jE_geOJ$)Il77njivwDZRhV!MPF6>R~xZ(Fy1Fys9!*NwZ8W zT5y*!c;iVg&FICMM&_1|?oHth8w4QDkGlYUBg5`cxYtM7TRjzz30ld-aKMj1`2aKR z@4zp8I2^~y*R7dHt$b%yw0KZrN<18jBMfSq&G~>DXi1_{{d8`2XpozZuHNr|#)p5o zZ2whWN>4sn+O}iK_J=jGdu!jom)2kW6h8NT5V_(6v)c1*L!my8)^mH9Huu}T2%XnZ zb;!|!zHnD1^=F$pi*0Pqt|>J*l@d6WOS{!EPf(uE1ggbb6Ig4}qzb882!~{-5C!c$ zOQM@k^FDSM5Ew4Cae|5`$K8v61$4NV99Q&4n7!u>=Ou~pCeCRW*&S^Sv`t)@we)F< zl0-kQ*H-LzZ$G^GO3LDS2J%v_0_wfl$FdTg!|h~6vsaGlpWIHPINGBiWQs|xMTeUT z^ak_@FaV6yxFnkGvFgqVaF9={KFwiB{pROKf!n=6Lh`nX+$xdWW$ib%oxY zQBf9lSdqv&P;@mGOLY(HDZe=_p2(a)4_*okqo^O-ygyNryMP&aP4Gb-PujBSR0Mx0 zZ=nd#l-6yEW9y-w=PxbZw;$enQ~bNPKYe^z_D)aNcV&&1b)D7Wk%zjGoo@_4ZOO(f zK9{W!?S8r)Y|$T9rxB8W7AY2bWq$H`+X+!r#b4b&Cvb&oUYwIJPFvoH{=)Op`axjr zoS!GLBLa4{DV5YcRH3!3!G@U{3OhqXYRsPohG1#89g>QrC~lVRIpJ`YIqs^k!}_}; zd*f%T2 z#hk8jIOFdaM_=t%ZY|uaR{A9xk=SiX=RY)m$>)4?|=UA<5#jhPczGnXp~i`Uiw!z z&pe&OA(Gu^>wdYQ#rV-DpJyk_xHfN8)K~*3D`f?`1Ca6>`5M<=c=M`YT@L@OvAqC@ zB@)UjV2s)^DasEa%a8WIAP}~iuaa?5px-eJ(hr1pwz-9WoLw%PA`b=LVKgdkY|trv zV>d~j)83$SJF3kihrRvRXkNQkdn=7SNqa9_25r4dPM0P=@2jigwQR4~*V?JNwI)7m zGSpG?WD%-@f1H}wOFWEG7FE)^vhWY8U2fTSPji|EG4{Vj{tYQvcMe4mQZE{9)YD~+ z3IrZadypG{YR;EYXY70wB?)^3b{)pXRJ-!vJSqkSu8fxPv`qpP0V7B}r1)8mtteBV z{KNDhazq3BTRY7|S%OWXxn^p?xLx*8G^S+x>i?yK!ek3;NXJ6Hwqn2J3_L5yh-UyV zD~@%kceH2Cr)!c4jL3st8|RI^vv>7S0V%;&3=YG8q0{>W6l=Oia8Nu1GCm!^@(O<5 zxjU#cwewhw1Tomyrj_NsbYOo2)e;v2Fpy{VsiT&8q`~)jJ<}dqYyZ zW>3V}+pFrX4aZI3ch1Wm%jJwmqqrrnj5k9U6{(l@;E9`1m>o zfx3Brvvzscsmu8Y#~M;hUT=^ABwD;sM>!6gI_#~mLvAZ7*Av&KwM+*Unj>H~a)2zF zcWxZCk!&EmrCH7f3Cbj9W%&;Vg45%+*tVB(7!Qhr4$aav2+SJMu3ZLMz`+E#iqo9y zCOYKf*ohgo!w>@UtPI3y5Zn&LFa>Sb&*xMw548|Q{HdCoLB=elRa!giB8K6Qk(uT zKpI|!LgwdJhx23k_~u{Ue*Ecm_a)LfnU~!a9lAKQ53}E8cd!5;roqy!+SoFEWys8^%=len;h$rssQZn>{_f`>O-^W+G?d4#`)A0lXXqu7LRwdd1aQdo|4#kqEO8FXpB=pgp z2sW{KN2Ryo?MS@#;ot!9c*-hgC}`*GjmjWPOJ z9m-a21PbSjQ$L(`J6R0Q^`RJlvM;@86;YP%+QtsjQ^`S64W0CR;;68@kKtfs^uGuw zHaeQ@&kb5;b?|^T6G|+pf~_upHND4|@$5fdIy^ot*lkNP9}CxUWI>^38wd59g+^^o zmUT5iYz5x+M7Na#dNZ6I1Yqb0?Tj)BQY+|4W>CnZ@$Xat^JWyJXWKO^8gxz9mU2mA z%>E>)cpl0%3|Tk?Z3MpI?cFlrOR0szp(ZZoRxBP3btjYybUc6&|% z5H9El&s!&R=y-6?KtMi1+<1!B+y_0hAbINvUA`=O{Kxp=$Nm!0K5mOOE@cra00_V} zf~A#Bx8egbZUbk^j?NP|Ld&xQt4W@OA|8p9q?la7T^H<@<{Qf>JcT5iY@j$!f_#Uv8u8rGfNWt*U$GM z)e$EmBejMS$zopO_<;jvd&A83_8JK8-tQhSj@(nVSY4kag(KEDOvG8q)|qu<<+vx9 zI{{v2>bcK#L+>2snUr0Laru!YxHI8?os3H-wJG@TiO-29Wq3P(hl6vR%5HD_ao8)k zLyq_Kdd)tL@#~MHzEJOc2xhlNBfCtJ;F{UJ!KwFVefrQX4CYalg$36}FXC4Db5pwy zPN2^$xybQ>gE+x?90vj8ILK1K{9I$;yf{t^u#Efd5aYJg`TfP|l-Uyz&<8XD_~K^p zi@c34GFBe%R6S3Bg*chUY7lMqvdS$kZ|ap32&)et@Oy4>s-ZuYw_dYU?N9GadfJJ~ zcUld)9`E3U$puNUn*I91HMkn9H_~EI%-vfr#yFA>Hp@2Xiomz z)f-HRs>3zvd*@7?)z67su4=iyVlcE_xsXx_jhC*q!C~-mY|fo45lXbHmQ|Dw)Mo-z zq1^UiOeTM+w~_U$1g*V}{(t`K`}Wswgn!Qyp_%i*ZdGjP?n7;3^)fX;I5mvgRYf5* zC3ef;V{M{;y1kEIMju*m`uv%VOKxNEO^t_8?gZB z+)fqtvaur7#G=|^dGR&)fy17o{VUSc{@TCA&gZy)?b_!@LVYZ6Rn@!+rW?4+Y@q&$ zIezS30P^$o`%c3B0e{nfW650}geW)y$5u<*fd7J=qTx3agWF+op`sZmDE{ zA^^>?oTekReMSmIo|3VwAnj%gvlYCc3Vc;PH!CegzSU_;IWp@9$^^xz3D6O}X>OT( zx_Kd&y@vrcf78)Uu)_&_-be>vs%{~i90xiNlVjHG%iJo#84A#d$zdjy=(JY>v6bD} z4N@T4PW{WbM$ml9m^N4BShWn(0Hz#T#E@9syK1Pajjm1YrPSn_ybd;LSH%-y@0YR) zP~OdQ^l8VN{lBnt(3*Z!e5AsST5ew&S&=%8X|jN#f6&jX75n*@Pk-%ipGqx*S|Tbn zeQC7;zpdIBG1Yl*K&_^F0-wb3i)u6h!EJL7Q0=iTi@&iIUb>?J0R3*EIBNXDGxZ!{ ziif4WtngR0bI&u}v<`Y8ndh>(VZj{SkDKDa$yhKfdnRojyGG2)WDv<5_W>3iyzPAi zrO{7Pf5q(qtWJ%n@fku-wh#qi=Ng}_$`W2nDs^{CS$({^spxXYSD@@4>rb6^`=3Ak zWxR00+@H7FDwC7I)BtVl3z)hFM#Gjx)ij9*WFH=s1+qZyeb+^%h)xag=aZfncDRCg z=jr!ut35?^pA@#;hA}wiX_3)c3q|yK>0Su$f4b5dVKka_x z;a(+xPk;aP?l<%8l*v|O8OVu=Eem$OZP~l`?HrEz6X1d_BdUTyL!#GLp*l5vIed~8 ze`!9$GJv(PzP##>46f`N^x6YBy)ca0=5PkqXtJeSG71N;&*!Q3u@VNqs;B#aITB#` zx;9%V@oV$2zFmXAtS8iQxWBs&xrCF<`C}*X3P8%Ngtx=C!Oi94Y7vnwI%?)LAMSfa zKiU{xP4f>;3#m6&?ER;|eg886|7|&)e?B;unLwRtsmeBOj^~i-6^BW|7^~IdeZ#DZ zmup_=Tx^$f%-p!F&re--ZlSwN=0s)cFo=j!r0I{^@)zVC^n(5FiMKr-UR zAyd%+8L%-yDz`)9MD08+w6QTeET5N0tbpnQ5IIHVf~9m7V{CPOWAVQK@qR6S6#?zf z*FsRutLgIqfc7q3|5K9D)%}=gB|@j3Zk6X!GKYYtUqw&RI~5x>HNL#bN4?l38-H{H z;aGQvNwZ=>7aLQ>kt#x#MMwV2p#im&p0}N|{=qAg3%0}8i#8BwZ$v0uoyd`#WRU?J zuTGMU0f&|Y&HFZ%=`72Z{)mnw9&;nLE9A?8ake$G3l*B>ZP(LFa;I&a2igQ+`x`6w zxqkll`3*JLWiUlD;(!52tM{umuYXm5g`S^^NCP5b=bW@8dss1QKb)bon0WUDggrIc zRfLI%34m1l)^V=Wst{O9-_*L)Yi-`-kM5g_92(6%VGvO7a5&Rol{e)poY@8m>g=LA zMRSmO6;+~4_1;;xqiHi?yOEw&s&n_tAtOynP93vV*S5V-T|fXX8}F#L8h_0pInkKN zCOA;Vi)DN1weiq-#ZLi569q2k;%v}9oDvi%-3kW+K$b0G&K$+V8jrURoi%hW&snic zH!gcG?sgYWc_LI)kR})_lHGxP_N0?iJ>7>51(j`l*iza`dd446{bRKZ5_g8`3DCQ& zWm~$H!qYOzdW@z;@P5g>14=#ZyqX?Wz_FqO?XK9gt|d#toE0Mp5pSX$0lZ1?3HRY8 z(Otmb07D>1fUG>O)=%}PHs1Z;zkK)>Td%Ua{jf)B4ORmCR{#1@m$8ijA%By$(>$&( zRDGj%_S#7t;wyD2twdC~;fApWBzQjsYP7PM6b;0XBd08G0$sIcDeEPo3uYT9vdk92?k|%4N3S6QH0% z{(sG$v2jYUur?v3(K(-IV>G4w?6;CrTx?AxgrRPI+GXPG({?U7I-{6w!1?Ti`M9Z8 z$|)_wEiNkzY#*;kI5jM@T%jnBTbw9R16tuRUcNKH}l_n1WL;K_`yWMbi67)81rU;m1vO;U^woWb)^I7RQ0)wVDOw{wNgo;p30> z^Sgii<;VKdyMOrm=ke)rtCi=at4iHmQT^X}a&qjaxp(KU!DiOC;2fmp!*)3yf-K;W zHJpLaGi(xPp9RkBS?ujQyt0jxd8@EyvI)wU z8dsMcPj*>39$)MO;Jt75)jurV$1(o*_|sqOe|*D$dtMqC3`gUtEt2kjBJwr0u+gA6 zxcf=qv#nkh=k;xPDu;i5jzE1U*rz?pfFIR-RYbOPgHwFo*;0RQ+O%X1K`Xh7gU-3h z*CqIS$^%a6TUg&=x+)3qQku;y+otl6GWXC#5D2r{y?l9*Mqb`k z5*fPO+L;W3u~(hEQM8ag_?*H?N}Xt#G!|83>yd+gjP8%L_Nr^Ff4z zSPi<%-CNME_934^c;jURK0>@t6fVotTw9|Ed?wllbu0%|G>RXZ#&O10*gL0^B@ec* zdC3bmO|~1JYXnaH_!o?{qat!qdEIN<2m%2JhuKh(_OXHN%V zx<9}d!zU1tpcY||#($zo~~($os#=vrXeYO(TE z*DT=<5{D@arQt}w1h)(JWYMpwg6Q}heE;AxH?kcl_^H5|^&C7~aum8a->!foah}j$ zi3`?~+3uPS0l*xTv__+@8obTcN2sl4z{$4?hqVWxH~Ya42izfBdhoSQ2I_Xqt1jUU zymwuFq}=?_H2VABy!(gxv3=;{?F(+FD`Hi(ERJ#762MdF)zvQ>5$@yefWo0#^)6>0 zDc5j&;ZcVsW!VxBZ@nzHSM_*{st!ciW7*o>fP*zcJwQ_YdfL57cV2dLmtB+r8U>1T zFKx4ze3Stqe@v38;2a^}{7@+|yjZc{f2=?MHGQKb;3xz<|I`Le=bZIL*^Ps?o!*SWN3HmwZ#>sxU?mGpVV{SpH>>h3sY)+D2; zZ~vSlvw?(#B;DNvDL5u!0*a(h*|3cefSsBykDPx?6%{AH>^;9Nfbl*py{P#?#^V{) zWk{DYl>tS6DYr&Sz#uQM2tOJO`xJnOqIBcAF7l@emf5bU7c)?BtjPy5SD zvhJ0n8uF(Oc|&ia-a+>o3P!6*{_JzuH`z1~Bjj6nbvmkCW7Cb9t)kE$=XvHOib6U{ z_INwdyIZ9t4c!hdID_Clw6Zz(`M6q-aPi*FQNb+zH4FrY6 zPoVbesW_F`)yv?zS%E(JbQUoN^?x^|jYx~$8h8FYm@8^DZ+F<%tje`pKj~3zm?nrn zdpGKC=kSwKEMaH!cEy~?BCF}$dptlMr#A5{&`pI+4tp|Bb@THjm=O1z`qSGNJ%!!bp=`5O zvZ%r-cpl|+=$2I_3BVrU(S(_(=IE`p@Odj|SB3RW>H|7yHs+hK9TtBmppf3T-GLK3 zyLg46>GPvt)=B!Ds!tR4oIp|u3Fx2flTp&id2%;@j|c*=Ft8M1DLp$Cx1riK&j|JXy)i9j|5G<|S_hYR8{`+73@w>Mp*QQ$k zF5QFXS{Ln0h!HReSy*GJoAtQby2%czrj;1mXYhzweY9bVXw!cVTxvi@k6jNMz(3s4 zO9t<`j;VvAQ=W?@lOcmjFQsqKcVZ+`Ui>^{iMRf9MrD!($WK2;XF+YVo=vaDuHvsJ z7dXMrA(+`P&o|+CfM~)^s!r@rNJ+MLS0yhcF~KA|EaZfA@Iuwq4u+ljfa`xh>c=0~ zeAt_k$qzLW&H{gA2tuQ!fvWQz7^vy4T4J~EVczLlE{(xK}xj7Us6(c_yJHcf-n-n#!L5BE5*8awNP!b6e|OWnEqia#`@MXp@F> zRkJO%*ow}Sj_Ho+WPCkOJFyQRVOCRh8!H0 z#HO8aU$5Qw;>aA^8@># zdhg9A@mznrrKCCK$-cWa<8`EM*1WFvImXT#r3|dPZA0}M?#xcesHOs1gjR4iHGWgR z=pfAK7jxT|8a7p(tQ(R}=U2=2wwTvRw#gPmrWc+d#x)q~bXB-7O%|$F*96IVY1VKQ zMK|?&-IOcP>;aCgSRSjiZYwMtr)k%qIu;6kp0Qd9xq?=a{=;t-7wO|a4Dof25C-kS!A3iK4$3J}N@BVFk{Pfa+AU#-KY<2;*w&eP~ zZ6JSeyRQyA5R6TCtLtDkwE=bED)x_8M`c(bP+glUSU{nH7~%=`>&f!%)hifJl)gT8 z?;N(!74}AL#OX~<@$wYk2BbDD*=y4Fp}w!!8aQ_GS*IouYj`r-NlSV;Rb)A*jx|fv zir^Y_a}UlYOt#mwC$i_nS>id>hEysF+SY%ZU4vLCJr>U8Eeg==kE{3L-FJU{8*LD& zhqujMP@Jc|l*`kZoo!Az)d0RX4G@#`n8g5-tF&+}#n`S`re@zjPh($qw4N|*lhp2* zRZ$^MZ@gU8XrF`lymjpq&I|>O&uuL>1!jVhSI?ULk|`l1d2gXD)C*L%)j=Vmd_{kS z3>|-+s(lq*!1T(iDz_1ol~Pv$iIu9#w``XVy-K_6OIYBzPq{a^wtG2zk4J%SR_nVz zZr_j$YVHkPd(Q1VokYt925n8X0|IVY!rb^x=S0n49Ir}}wt9I9P`!qOyz7W2DORt! zDnR>oj8Vyx4JkQvN&h}(4mk3oKmNak;H!(;H1;L z^|S1qKy2D+T3bOyyqmi(V=lWR!S4^S#k!O7uD{#h$nMxDc!>>R&#Iy|=S5m1c0OA* zEKKVL2Z(t(O97HTPD^z9y6HyC#U#%u!a-wyvSS zOB>NvV3%Kp7}hM_;qBI`3G-CGIhORu0>*z>NhY#& zuW9vF;*nwU|Bbp zN1XvOe@`M_9`VrPrT_+Q$_*Rj$kD&4`|Ku>s9pmd!}vdVVts-;5aL?RXZZ|YE!*$^ z=XdY^>B9^8xQAuCME&*B2P`Pc63e9sotM9t?j>M=ITFzxu%?-me)JqVZJX49uyND= zAhBp?L6S9$;Pwy+aO%i$nOu82f=MV$Lvs{hf5R31-TUc2Hk)?tKGi}8h$?VgrtR%y z@vJt#iuX#Y4Bl&2caQzasvN}PYmw8WQ$ktyGTx&NcCPk0%0~woAkX9Y@WT)(_n+M9NL+a<&%PoQ1PLZ?N$$ zmv^24AP15*;9Y5??3bRN0TzELs>io&vvB~}Hz2s8q%YB9$VTF(2gae*E-#veW6$vx zHz2RZbN~z$!qcI~VocWRy-T*6scfLzQ~OpTsvZXEtM&WC`~Q4lIq>MUwM)%6FPQb6 zI&Dm?r_v#iUkS{N5Dw7X!+hbFm+}5XmTr1I;zpYS6pUpm&)dK=!iNA zAl@8}s_E9PY(HqCdF!k))4naqLQb&hDmVRbZFsabwi6W`4S_3swPt^+_b)%xk8g`( zo=zmyU1>lYS)$#(mR^5#IkhOioMW46h`rX@Bl)O<5T;LCS zkjHE`Ojfprt&9~=BD&8Lq;z?)!$Et>3rmfI80&Rrb8N}hSLgy6M?qGzarQEj71C*Y zISPd>s^|p{vsk*?^9q?@>R6Zsyjun;Iq@8vjE(#V2aPV9ruCOFpaBFg;`rF(PJ93P z-Ji*+ujXAJT7j-&j}w7IIj;@sbM5v^--iycd0WM$v@Q%fWF)JXW1s;ne>|V=9u@1( zS7U!WJm&t|2w1{TP&Yx9a1^wSASrb{mVyfPZ8HOA;VH9YZYt>K5mtl>@6W*K&~zjpUu&Lzk73S^(uXAf7tu|Prv-}_b%P| zIA65azHmm}rPj?_S-YUV9DJq94(A#Q$uoiGY7litojq?Q4wGtTj(zQV%Q-ozHrFz; zjKiL*3hPqj>{hx@rCkfoR<4~&Oj!+z#L6TEBA+hWhKX{Eu3w6e-DH^{(!b`-u7RL10SZQ#JQg~$pvTm^XZKRfEegPZYZ|{O#QZz zub=60<9+z>>-y8b*H7EKU)T2^KR5^V!rko|0NdpXTe);DG+jX!4ka!edv;cIbAo3b z9hMUOvnF-e?mOGM8Dg()}Vdf6ywgv z@yzPM;6p^D?vf^#({PdjXIg}^?rDuXc8Aa5!tAUBQmm?MdF$xk(h*9~7kavHa-36L zyh-vn8O;c!(*A(t>Q8Dbrs=Kf4f_I;JT2baHDZlTmH@1P-%;j6q20^QIkqu*FeYNY>p+nc865*K=PEvYZ4&Z8jA|IuvOI z?>se#Mz3$H)_H{VEFWguH_{TR(K`m#ZyzwgVRcWLo9>P11eO<&t}5fFMz==u+DLFLC-`g$5-9Lu#s2cce|Yz+{)vD8`NK#4`zu@C2NNVQ za6DC%a;PURMQs}(VEe&-;{>Z_cQ4N&Wz%9)Lf9M4eY=t}@tP>9Qv%f2(FBM_;EMz? zh@y=XYM-c^v7b(kWPMF)*z9*=OK#7OWp~=uKqMx_efjdl^Wb*u!NHIffqfT)IcW}w$mXoW# z`)&R74YAe`^qK}dgOa?#NOr6Od)4l@l`AYk-)eaXh~=$ERRFYUtkaLC-?$PTUamTf zvz;Dw8;r;ahq9ph#PtNXw;FL+h*NoxAK`7|fBA&rx=Kn(PNEobx}wz+5;u^9;Aqv% zo_b3_2Vun?LrJy6MqR^FGq^TEj<~8k!3I6_63mv7U{l`KE6h5bMX+|LIh9Rg1Oznz zw^u9n$PylG8oWBVz`FJ~1|^SeD7I@LIxGa%a2RFRrbo5rrVR9@FByc?X$o?Sttl{f ze=vt{ans?|(MDsDylQa}I5e-`aY3Et_u-);+mcbA^1<{n?dk;>mQ)(G?f)>?_uEoM z_saOtb&m9>WRGKM>?Aw#ZDEG3?{UWLpoRqaA_ChTd)Zg0`n|${@SbERa^Ac} zJG60$s_o6Yw#c42rf6XVIkZx72@niPxEDDBif8XZTtgNW$omA`h9V|=UR`Exn^Ilw zbT}zv`aMY>XITlEy=m)>_e++}&tUT}+oW590WI3OlZaWxuLk~v!FY=Vn2xFGf6C#t zywWD~00af*(#1qG2ufrH1PKesAFjW@jHi*wWqK9k_>1c=`F|NQ4i$aX$J zHbrK#HOGS!V(l*Po1$#Ge;yWqX}ox;J}MzTwL_m1=V-hI>w07nN>u^4wG>pmTff_- z8wUgf5s(9U^}9-DfHuQ7S!@u(Sm_j>vcW-)(^p{`z$TUua!^-%{@lyT$KN1xcCsIEjR+Q!Qdxh0eX?N9Aj~as273yejMEe`U`t;Megl>;XbmmVp^e z_-x@K+(Qb;0UVao!Oerisvshv)~i7;mL~L~+dQHmQP8D5or;f#sMrcz_>JDRxv9mgI6L1E%H1sI5+I5K`MIhpp@=!?%Q-6D z!t!pPo-*6YfBIe{+1hA>pf>h>xyegsS#X!GYq%4yq`H&}yRcbbNwk6MdRDy!Vpm|$ zSOQKeEBn`>x4Il;vF{OX+W~Em0r_;GKlovHT+w{= zoz(&*313dVTgcJJv2&i(!+ZoHpZ~VKFwNc{OtT5*f9!hJn_R`#P_We|BOQM$$X~M) zoo_+rz$bR|2t(Yr+cY^<-apj@K0DBp{69}%)xm!YM2Sl-(XRblJj~A|hN`(?*44SU z{?w1f&ULzs9bD&}io&u$7x@JOzk!|==dl%A=^TfK06L^#mE3B)t@^1s)QF$#<*FejS>)!e26m(aFzcY(KK>6RBv~uvMp-&Y0g`;i=08VctzJ{ zC)y>jfq&UMGmcYJjK4n@N{f98324?Xsl7r1f16!(Y+sc)A?C30qh59(id#pkRaObIqv|<~ZCZjCI@+a9Ga(4Qb`0ucFtPbvUNVe%RI-T!KnU=vo2olOw)YEaG zf9kXlJiSu$zN1fGGT$Riw#b$p+2c3PXLm|~&hE?Kl^A82{MyPG1*N-5(^>!$pNb@p zoB{)h4v`VZmZ5}=9>mHffQi#$k7aFTkv!Xg5W7X#^VcAVaR%b5Srh4&+HZKdY>#L+ zJWO1`FbX)yuwe@?3{OjLsrNqZKX$suf1X<2Q1x1RT{`o!Q|#LgiY+Y8I;#hyp6%J{ zt~YPi<40L{O{^gtLqR2uJK2Ba?ckiUGUxTIEu_wJQ6g>)`suilm!A!ZDCsWl8wDbs zYGT@u4$NvrtA?fq8NYih9&J=oiPe&SHPFLMi9FjqZDS_qD2_)IO4W8aUDAP=f9bKy z`}`a35}kwi|Rw%$%BYXi`G(+GbK*YXI6uAfZn06r8RGwJy(Y)wOh! zU6dIpzEny8D{U|8P)+uU-bd?BayipeX|JKIh6>#* zHYFyZt!kC3<7D{>I`d`I23{Ize+e|A{KX_f7JD+=(wTMiCM{t@e^geuO1VegxVqjm zhlc?IX~4T*|1iGQRut9wC*_T0S=a|FKo~rtBlgX^{S&@ep?TIz$pQ{L97D%yHBaqb zz6blt^P-N9cVJO^qD`7Z!F73d&Y7IKaI8_i;HjOu=9cLRlBLGczQDv@f5R&h-%o8z zm4JooJEWlG?7du=^t@24Pq!_twNvG&8oyOrKJ{&>soPcx3g>|8BMxY>$A*Jc8tbW5 zMd4K2BvyD;HNIN0-~KRuwC(S=|M_|R)L#_$9;iSv%h`OjuhGt~yssBCJL_RnCVa}$ zv7IY=F2k`-(t)$>CwRZ@e_)}oMF9oC20FS#<2^|m2hE9cSGgqH1)8(eY!1Z}!0O3* zet7m1w>y=b;jO5R(UA>7ERyx+b5;fL>ja&qzQfAAl*E3}VF6Sbr^ zk7bp_YbOCi*h!6N)C6EGN#mxs#j!@|Ih5H0py5}kh4&oOuHp)qqLHcqZx`Wz$<_5{ zF--%RkZ)qa1?r7MUH0c2$d(nBz7Ol3^V|uac;G;@BrI1_ToYgyjWOsm=)4 z>E)f^m|jmpS6gvJe@q?sB1oKYQ8=9alYp?O>(>&xP!2y>oF%ioUbdGD7Q=&Yy{$xj znW>XcPL*mdr-U7&c4h(e0BO35KC-phPX|&e_dTOaz$SDSgj3Fe0-S-r))oISaL3IE zqVUMcqgP#`h)athTJPN0mGODO*zr{dIj2Gra2PPMfbb6Lf7PcUX+A$(3Siw{#KtXn zeZg;$K(5Pc@oZF7%TvE|UKLC;SKB&?3h<2pODD1bGXvk?;>@x&9KXNbSg`upBl_{D z`or5J>w%q|St97+xeDCJ#q*5&%+@8OB~M9lhDu^ybvX$WQ#?oZgwP);k>s6uTh5XIJ2<3yBqDQ#cR<5rn0 zKB_=IES(+n@BaM$^I!kz{ZD`U^zK(b^*`17hnFM9fBW_z65ojSkX%(@U{|{4u)c@h z)LY!kSn`v5bRvWU86|cs*|jcn+SHlHnFo#=i)mqWdXYz_?ppK)MW^*_Q5~0D9Hno& zQ;xT%55WK2u}g5|d?{AHE2+Y^0=te*`m-uUF5OgnRoyUjuTwcBu+dY`Xgwry))K=C z(!K27e>w3r>DY8Tm+NghfRF9aIJLIxMn!s7rarx={r|C+ZHUQD}l zURkd=t&h9?j<;kqs9*zHl6~5g23h9pa$LwnM;|tvXzKgs0=^VEd9V}FB$ZS?VU}@; z{cfund)R=i53I_wJp?7tmUe1LT7If=>1{LH$cp=}0IXIm&P4KEi2LbQbdIojpZ-c# ze@ULF9nO94yKNAq+PC(^7CQUPt_I?JS8~8h?ZeBLVUa^XElKvW7l3H(=31azoicAR z2oU4E9B@8%8Ja4zWMUQ)S zjT*j%tMIB68I4+tdP`y%YvFOWf3q@wYIsyn>8`+GwYQ8X;Gf`Y{0tZwC|bqFU0bD1 zTMam;c z_;pNk?vOqE$tp{y2*R#2Bgo6*48csvghU=}4ruI3o;G>Pb1~j;E`h&ve_*}YDeyXC z(S5;zmDb->Eo+@$EA~X%svvP7@h0F2(Q(~#+RZCjg=$1?eokktrlI8~4&I84Yz>N` z|2)A4v^)vQ`|*0s-v8yVKk)At>W7b}yvZ?WD5RQO!!dCHx0DMyF!*0hEuo}1`&3(k zozDt_JJg*BhbPlp+tV)CfAyPty@nz(_cH9_Xy2UAJt}eLAtRgYMPdHU@uWJ_b3vKE zL)f&zP)kN2q85$2edY(u*?NrjD5q^R$^qIPajatG9<+wi!6z*d!K&HsspT!Z0df_| zQ~Y7RQzO+lw#LDM`;c4eU@O4z&ezLk<^;`stnKrM$6W9rs6*ncf19=f1m^8fIFEA& z-}AohW|3|ZJcr-Az^P(8r_1>p0K;@%IqVv#jR64D&OpD5$QitJCg4%|B2EYciHF^) z&K`nas`K7QbGGZbVLWMnW?@_BHvJE_=A4BVLBz9_!!J{|LnMj^U!XH-)ut@XWQT14 z3m}YI#s`bECQL{?e^dA2c85*~vg2|oWjJ6o0~8KKU5kQ&uU764_0xx+-u?0W-+%W- zd-LPlQ!ro(<%XK2*vl$pGpcWAcUHYB7AOx`Ruow=O}mheeQBDP3vR#o=PEuI$kJKX zSJ^-vX?HkrXCIMnAw-7`p$;Rc^`umkOIx41jV>=pBmCm9e^tY=Ap1G&!vs~=HMrrO zTHX%*?&%U3(IET|Ni&$5~(=G>TVlL-oa* zerxr_dZtm0B8F~zM;ap!U2 ze)D7-Oq=${e=?X~UX5idVwxQqM5s!0W$FBsMxDmW;}UZR(X!$4-oJ-(o*{5T)%&gbSf_`5*J8dzr8I z+gF9EhmL2j54{-#812oO{$@%3i0an!dI@O5FPOZhf6%okX!rz&A}0b5I8|OBhN1Fn zgWovUs*qh(>uZg`TGuOHRjb(&ylOL&*X5yE_Gcj?qQo6QbOL(YzKLS0@&dzVwXjK? z1eatuNrfzvv}~9W$!QLn?>TQi7D(iTuxdLQf8hRD+uy#`yQ>Gusp<^*iX^58OpfYu*x;aNlfS^W}Y4zR_uIP73i71f2gW~#!gXZwV_=L2ynBPP=WnqC$Dxv zN}`{T>1Ej%zgn`7pI(fQa=M=H-Zp49Th_|Aeg(_metC*2BUK};<^=axb7iHj;oaMv zd#wAg>AK%iF_m+4va0Kk9KEWWXuMG@(+23>(NaiR-Uy76%B-i0Iy}!VQoWq~QP_WH ze+xLR6icoBlVzfF-w=pE0KGL}t~07OtoM*L88Xp*s4oJ4a5zYdY69(2 z)?W5ipq#-=i|mA%q{nII*TjCQ_w~11Cv}Y<>z%3%NUm~RQy_a+emU-a$tYW5xt*8N zfPE|b@UC#XOp*6 z$(e0k&>h{zgR$@Hrb*wiDi{N&o>l;x1G~Uwh*Q=5=|FH2t~467GXB z*&Gd}P?UIVN~`Zh6{k#+2!vb#>#HUE*YO`8-+vyz`uzFh`}>#AFPj%0Ot|bIe+*66 zfwqUB(D>CHAan1DiC`j{LFVBC?Ua~y^YYmh}9J7pI( z_=Kg1Kqymk#`eUa+wsX!Rq*h%e==^%7kRj>W?F5O2_N>ZgU|`(YrHhP25sNBkH6ga z%gFYyXi3j{gFYM10%f?1K2GeI!{!)ugX@|JxTCI;ose%M-c8eHuZ<`U zx{wOjp@myyDLG~=4tr1obQ{$G&zEh*VhTdrk?Sf^b?@_wrb^xUQ@a9qEZ(BSnr!0z z^`ea*h9LLd|9a)3`p_%`5ZIhY;DILKv_(K~*GZeL%zk6V2u}*5AL<1-;i@YBF*?lt zUdQHk9zd?&*8zdfyL*?if26g%tTmDHWRdVP90=eCTM?Z0KR&g&5nyeYwxicV4)L6Q z5O({pm-YomEKW^Hu5981h6PBglT_r)NZM)M<=^)tD`_hmfMo1lvrN`gQg6DwX8jF0 zI}u)Fr}Vau8N5$?ed+t9w!Biq+kRZr*|8;%elPQlJ$zAOYBsp5f1}?k4`ILU?KdGv z1XB4ZhVHW7n0>Plhh~Fhc2s;grZ}snAlh}Rq(jKE%{!N5fP+R~at>v(pU)|93*eX? zbO8ZgJlL?W<+f*JRPRFSsfI_hhd)JFz86`yW)%*w&Q;Eh(k`t`r)FT#IESzupG+62 z?!0{wsvUs`mTD&Ke-?Oj?XMx*_e8g!-&WmR*brdA!35v;BH1FEYd+huG@ab{<#Nx8d-juIvVA?Np-ItY^~{qQ@arXkLKw_p&|>ke_EQ zo-bOPEK~8~jqIcroNjl@56ddM-A9gf05u4eyojmb%Ic!%f7P-JXw5!Y4qve%WWgue zqz+5<;rpiUAjxk_R>}0r*nxSIlsey9vG3PRW_FVSNgUF(^vZ{ zZ&>lN_e@m?Tz+@jU5xiyBWbT3jEm3d2?yiu>8Ft~BdQaVcZ|kao1Twr)htFPC z_&BXyZDi<}56~?-Y7k!7)r#>tljGndC%g|w_`kXZd0fA@i!)Ga=Tafd#30`2t}X1X zzUm|*u^Luhf&-Y_(vT(%Qfau-O>(7*c-p{YT;H9=540HCYd1F-7ALjx5tzEyl@T+OcnMEQNJq;QZ}a?#!_OkJxV_@Z)ON!sji6xr%de=Z>zSXXdI8P zWHVg6+WFWtsA_PDx=5r2oUXJMVT*rpe{MWe?TlcQr#2B~|JERsqJPDUQq>%8`%U1` zY;h>cNvMM6k|2`O1RQzIIJ?(3S2d_O=%=)U%6A+={=!~&J$6SIj*y!PC;AK3mO$fn zU|&Q-9`CJ%`--M+4^yRuT-bZQtlg0-)dR74k%Yem-ztoR^Visdc0jGTThH$lSo4yIYy9_pKM=&Ox~x2C>LG3gd>wHdu$w?6%JV2`EIyK%l8n45Nz z-;jrccelW6zYcO`x7!wa-<*_eO4v2BakBIV@I1XN*MD3S4f|YfyXPi}Ng)c3@6tA{ z8$br!GgW2T2WTbF^3}rq<+ZN?f6MkvRrwH0>qH`_SoK&31{5c&U$a-0Ch8*+H0)^j23nap%zPPQz@yk{b#z&eFmTe>hgl%UZ~? zq6nwA%Yz_#DX-f38mchGrP3IkSxN2dW&1Qfzs>H+Zr;+Ui4$xua9=wiahIjfqbqh+ zzcX?4nyUQcsLCfc#he`TIf+*#YZ**#@1y^R|L3EyJZf59`@L#k4mE?8vov)uO0k`-KCd#U0YHnPjc$$W=awS1av z_~baGw$d4TN|No%&8~Q{q>{>|W{rcb^) zYLkcxeNa+a65t&60T=et55%OgmSY((z9uiXkd?fe2~fBCXza4QR(oN(W) zjgiG>K9%wzWCAjH^Vf6NAW$3d-%KeY;{`3ve`MDRO z^R4lT4u??TGPOI^e>IVGeq_z6^#fE@=!zQ1Tk6nRHe1MpZV#_2{d8!H3T-2Z#s{p^ z>menvc(J8d#g!ZxBr36w?Tx&jO>Q<7fr?EpureT<>Z^*0cowv+GSx(Tl zuQ;$nuXX|Lc-8Gr4ufct$&P}yv*{#x#D0j(x;eM8`cy?YFVDA*rcCnebLIW*B^?I}Y!+mG(wTj7bXcl3%+%1%IcJ}I= zkFFAXTqRg5Sp2h!n^V32-KJ)R7ss}6eR|d-OGK?cwV_pbV%Exs5~+yns`~0q8nT}P z0JIaO6m46-f9OR4EW=jS+a@8g3H7|q^{(AHD_csSw;GRy+adQ_5A_hc^1Pg93mrg+ z>l+LAcHbZwIqteG#Ld+i+GQt|Ms%PJ+Qit&cUb*fMP|LiPkoXv`{RT3$+|oT^w^ed zKm>wxNc|RBan{`MOyDIeC$ENK-bxNR3FuVXQ-lLFf1bi2ulki!R3b?Odw`mPh3&e$ z&9_fMs&H!?14kmBq zrbqJ9f5THOqWCaBBdOtBXEWEUR93Uf+$RefRcBZVZz}wglb&=M0L6oVMb^H$u71Ui z`C`#M>E^CArZX>q>1md|*)jl-p&=HhVXtb2NFZh=80$?6L~FWK>soF<%bNKew?3F` zW<48tvnR+<$L;*pmisuy+X+?cF4+65!$O}DfA{%1`dBt~c8(p{izF4YY@vr@CXHde z^0Bx?cW1T3%&x+<~{j&jLR#k6%tg;cv-hRZHEJk4%P`W(z_cn)ZZ^ zf8|#OtnKF8O*5&zu2G%##)AFBFYkZoj zJG?<+rFLD6{gyVnZ}yZDlI&%-1)2aB=apyV4U$uuvBbGb}=e@=IWr@i1Rx5B$1*J$Bj$zi6|59+vF(mkOq z|L#+R9yTg@p15pjcG?A+m)8Qjga^?g>v8q|^v8Gq@S*?xg;~(^0j-q-4zt+~N2<3W z=DlqJJa`>V#~qO)IWw=$J+_Xl`ZVX-F{F@$K-`BxP?lx)6{yz?Io>=oB6z1AJOgw31G%L3J81zFZO;Qh1t7u0TX zuqUlfMLUq7{L#vReuv!(y3LOJBFG?d=$Y*mj-6}{)4#k8am7A<_zz;+Z^q~GEq1yj zFF{lKGFE4fb8!SYb2RcCY!+p0f0ydq(8G?n)3l&G91@6Llj!3kX?4^zD0g5Jk+Z|Q zfZnU>uEFJU)Lzanr3aNjZ|5)frR*Af;RqyndCblcI+J=jahp*+}kEqa$7 z7p$|b!Fiy@7TXAoC-j~C&(tD5c4KW|Q`_=y`;#j#3;iKsUJZhnH&e}Tl8hTPcg8~W+z*t81|oX zf^7=czLH}L&_+$UfBkTs9MZZiu^~`IWn-jp zkYJR z31J*$lF!aNe*%3kC7ioC=%vvg+rXI%oll$-SEc6lde!mcho9bk|NTF`ZSYuhAy^|| z?B4D*#sSJnN~DfyBPe_;KuHeGZNswEJACCF8W>Fwa&9oFRsMZ2Ge;I1burJu?L@lM+tyCHwYE$N+ z*qv8xskp2-+k}xP`TzDd(Z;1=qjvYD28CI)fFinrMmX_Ko!o%$QQlm(x9bWd>8$tA z?zLGufx$eE-moB$+lt>tY8t#Ca0jIQ(t{l8?-F_ic{|X%+ug+@6O7LRY&xZZI%9VUqHLDI(6(^u@wVt1$@ns@nfPI~7KUS-Pi&$bC!j;_YR@>CIxZf0*bn0K2&p zR~>By%r!tEq>_N;#!syBk%+I5_0A%y3}Z{c2>f^l9qCx7sclI6V(UD~EDIZ{UErM)PG&}@Ii*o?i5@ZhHELB%j z5)_XxI1Fly%~^+UCDdD_Yjf36vpTIx z1@#G}za8DKuZh8L|FeysU#U|*4#9Ay;h@aO@MiOD{Es0U`aGR;vjw{ObhaK3i91e+bIO zwwaq&zfCI6lfg$FRk3yEEC5nKt-r&@K~66zX7vH8irm<@s~&x*3>3Tgr(12AOT|Th zVdr&KbB_cx!e7yw`e5b4RxT|p1G{{_-f#anDm?VlyI(C~PkSui#<+)aaPXQ;knK5^ zO`*jrcU=dH{VgX*r{=zd=F`^CXiJ7Puz$#u0I%9}!D9EF*l4fjy_z%kP2Wg$qwIN% zF@ve}EeyLou$QfYs@gsKn8PvEgYBF(l7Pt$(It zQU`zYQkVs-po_>+)oifLIW=DzprszA5vpX~PVH}kDEkvs=lF6}AM5RCk#lF+$=SYeX6M0DgAvN;aDf>h0 z-Pc@zOj5jSRC%tS%Qc>5+_fTdVt>w}s%@KE3^~G7fG3(56!wW8Y|T#QuNLkPc$#8B;%u>Najr)2o=$a12Z|ku;T+Kj0^NUb%*okpg zn<%0!cWgwkiv#T~o-noidhPys{N=;v_w`$z=HtH2Wy|v?$gCaqNq?ch_untxybA!@!Uz4M&qdbMi*I{x2ZSgLow`tB{_HtKHslP0k02N&&4s`nsW7U>PBZ0=;D$ z5QVd4juUxWdq=g4o5QkC1L7%Io(1FIelcB=-8(1mK#7^Ek$=a2@w@dA8b4Vme&FgM*sYJH#2j>^a zSiB<|W-q%>H|X0{2lzJ5lqCJOPjt)p;Z&j~lbxr~_DY*Jb*-vCuDIbT*|>$$DMAHC zu}XMZeCV%F>lfpz|0>6PHDC15=b+mUZ@cJ`oov)F+1wR)(d)D+0Uv? zvNx`qTGTCmkq6fo+Y(7U>%&0Ga*s9Pp|%*Kh|;T(X?rCZYP32)Br5Keoh;(eTP zI2s+4fPbuBj91mLc<=jC@Z(I(|91VHYkRx%l7O{sH(7IAvfL1UN7ah7EI1v0?oJJp z1-!ns?RJ~WW}je9>$iHxD-_;giaaETZ->iURNXf9e)&c={)BO|P5H5$C8tc4PqK~j zek##y+ByMt`kjVNc$eC=hW~g^(3plkmt_SzbbrcuSVg*RMRGK~SoXiQT~j-ojIi;p zf<=JqUQ)C-G^wyZM>z7XA+OW*C!Yt$v!tE3{l8tl??2bi@7vo8sIWn^6Ux)KD?2;) zGKsWzQ6u!a)NAOeEr0FqV}VB0jAvKgt4c-qR9aCVuaZw=SH1L7bOvf#tk&R{J#Zdp z(0?yIABiJ$Was71=l*kkRp@k$U2#+p!qVN;Y{bHZi`J)ntuUu^d<~8n4Mwc!E!5bD(ZWxg5vFzD{OS+ zr3u8tJI%hUnn#@C>pbC z4)kQNMg~8gKyfww6VFkBRIj>jl^^!dlR43t*t$%hb z=|v!!R>k}BdLj7fUX$$k$bg2eDu>K3U!adG>#D2L>oFB{PJ|yjXOkC8=WuGoiGS8w zNp9V$&*gdqWP`FAADAyv$>dd&rr0;V09q<=xQw;JHDFFkprGEmcP(`Hv-50?Dcyjnl~_1*8@ zj~}}K^r9E;aprm2^t^jf1TodcPPjkDvc?2_k<149b_Pi-xg*(EO2&tFuy1BpbgN6v zrAcHKhg_QK_j@Bm-rzwUm|9kb^YH5X?%ESy;wzHubKzb=2z_)|*rIIfu74zv?Om{~ z+YwXM0BnX++tU$z;3&H#oC+oB69+aPMKM>>#i?En?8I{UzVv|NQmza)2g&i&sN@~! zo$$QOKVB`{AI8VOjIa0G!z766%$GgTH)MaR#+C%__r{a2{!`w(gT$lkWJzGTy3LAk zfRmL|Q}NH{3ulziSfQy&zkfA#TJ&wL>XgAPI=iVjn9r70`QFK^9c1=kCvUT)cS)RM z&g-=~$w~_E)ryodX@@SCmTX2nNh9!wW1f+a58~aT4K*ZgUK_^2T zZBB2iW96`2&k0BX|FK$^^IHq|_6dc`bv8I(#{_VC9=w;_6k}lj*l2AM>ND?h!+=QXHIlZF-cs(_s-`ShF?v4-d zbtk03t!%h~sjGgc9OBfG#Q7{QpEN|>`cxGU>ZA@6B(yyXYP*m1HdC*`vDjlO4_K6l zfQY~cJgB<^e{FV9Zc1Zz#eXajDc6&o?sSIaTJj}Z%e&VsU@Vn%zZ39fS0RFplkfXRQ%zVLxGYY@5}S=FB+n z`>C+S`>|x~Ttl$S)tPTq)TXJo-m5Q6d4BE5ru9W)rlT=4SU7MT{N!}s0qU|w6|BGU znJdyjrn;fBD$Q$CpFT&q?5n>`|bg5?Pm{M3613 z?zc0vlkcUe2X7k^1~k!HZ>p?)t|(*is%YQ^Mq8=yflJhu;bwjy%+cqsRpUR8~)<-t}#0DsTwPxSfIsUKl_iq&H`(c09 zP#to47AWZkoCfsd{i9IHLZKcHYQ zhG18m1RMInk37l7KD`x2m>JpxOwW!#q7NVb_U@m?f9hBF4UG^@e@j+L0z6D8VK^fvV;bS@})%^&L?jP{ay`Wj7E|aupM2w3PQI99q2s!QIN69Nl}(jeMUp`s5cQmk-+kCVw|U zJh9;7A@qYUv*JiJGZl_V7T0zt^&vvO%f@}SM@X34W2UR4o^vSP)@c>y{=lbc4iFkI=5`k!8G zJHic3F>$Mv$9q-MrDzsVx_?7Gz1wZ&8sm1%oxdt%O$l2keT_))*L~jG@E6THvvh*y#~uAqb3Z zE7D3%O**{*CsG`@l>!89m$BUe6o1V+%GYhX>l)g2u3LF^0%4e%r%G zf{PGQu&2tEU3rpQj%cSIaP{8zFJeFQu-|W}V^>Kl*4Q`j;-T^Ux zUQ_+8YCwF#Cpsa3kh^=Ecykz9*08BT$*j#E3XyWOoSLkfUc&u$Rin$M$Ix*Atw|ob z;+$aoEjfNDu&aa*2Z*CJyd+Ew&q{%pK245chO#MD)ty20?lbfLv?tT$*rAXex*If9 zv0?YrWYg}{JMa}Qweph6kNcX8tHE)9?@3f$b}~)n1_fg;CB!bGMp3Ds%v?r$YsLQM zm(M@{^7(B|hI0dK0aT7j{uQuBzLZAOyf5z(bdDrzT^HOpE|cf6ZCQ<)=$Q=5XoFnt zSVpW$D|%}m4}LC8;kLap2~5>aV7;vKPvtDztt094kX2NF$aap+<`<&VZc~PTmY95P zPWtU7om|>n726UE6fKqv0_WL+SJ?NxCyj{)plIxl1vyl-*(M8iDNa&?|Mw-6v1#qP z;BTw!+?VV2;m4mpj!&N)M)>^0`-irV?V%@-rDuPb;Vk82t#o3l&HCvHWj;kbst;;FO>@qf!JmD!*8;-~RiHNe!aubGaRa6iIb+MH?Nl z@~Skzc^poGJXwpnfvoiBdg8{clO0HKv)y~ZuxH(w6CbDd1x8mv1*cYi1jANy;!hUPKOU*wjcX)rRH0E zr$2#4QHkyjckGr|0hgPnOjY6;=9(wV-qH{rmJ%l4Lyv03z%Co;!L}MRA2v!CsEiW| z1U6Vrxrj>Stm`m;`(728{{;P66^*8stPbm97aE**=BkUVCBJGx+PQ_>8)_1+hD~Xt zywo2pBacld?EtQ{Ho?x`_oNn?nt^;l^0$=oQry#u>9y43!o_Ae^GkU4MIrW`_t|fg zb2|&|3WdseN3iijrgO-=N*liI4Y&36w3CF>TZ0df6*B364*t(dHcGmJZ_4A{B>8dK zisW!SVeDLb0*dlGAl_9j<+&S&=u~0iS+b&slSDHdD|MY3nAFj%##TEUQ3C9s6f38& zUfLrNbNjSbO(dFLyxYOw?c!wTkl1be<`m|xSCi6Z!{PJ8-ia-1z1W~Cw%0C)(#Nt1 ztF~OwYy13v{@=&j^FY~Tek_v>twmwqtG7&((X!n@NDiHH|3|OR70j)`Sgd@Obu+Vo z8F}hTS`p?NEv9viW+7s{Pf)LdTj$zg>>ew6W2%4!VJGN5D#dyQdngIOvpBz<+SIEr z*k;w77+0)WwJ`W(PnGbiI3I7_sP?P=iYW0AlnP_VN@~bbnqPrh5e|5 zLgm~CTb$aKzFxJL-tmux6OwM11!iYdsyela9R>-A-AQ%8B#_I>ua+j9&Lr2=uVz%w`JRY zgJ^}ri3!U)N`-|NYxYkc+TTY1-TNQDvC+0_mu+>t#yLfv&e3a_g&thCzIX?wDxZB5 z`U&uakrS(GkmfoqsP?au7nqW4eYsG9kn3E3lfG9RT=LyAxH&8u1pWH>jm|0Eo^=7W z|ApFWsjL};GsHLN+2Ntoon_qY6S2w%&};U=!EOm5EE2rFTEc;!&dVtPcoY234w<>e zIcyoU_$-NWgs12TX{Q)yS2Zmj=H;TTTGP)zjQ@N)r0FJZq@GjnAOgp|%R+QJTxN2A zxBl@wT+oq-aJ%oLL%fgajjF=YdUQMBqn9{gsug(zZ<##C`31!}jdd$~74Phci;(xC z385n|Pdpu1T8iSdX6fdoe@+23$mwTOJ7%ylgNJkQ?ACDPI@}V`-USs_h)*oC)Y< z<2<1AxD~DheV^OYdRZfPYym>Q7^2+@yVKtsCWymPy0hatKkMf;r!G*6&O7~o6cRE0 zc6e};tw7)pJ2lmAX3tOU^k6PvA;N+xrz*lb?0bk~G@XB8I_G-5|9SlI_qWG^lB^Y; zq1@XUG?ns-^dz|5`?7}G1+5nk!|#eOw*iw*EAS9Z4Xn%5W^SXq))@4X9WClrnA#^HFDn3Lw$XhP_ zNh>sJE-6Vk9naCL69{sWJgy=m z!Qy5I>ulOxaNf&m9NcslxU#}8yRT1WRee$C=DqUHP6s~Sr52?b>?#|71k{7Xn^%|6 z?(N{wLF5380v;dgj~Z8wQ@f7LfzmebdbTxWYiqQ#@{aog)4+4yJOg0lAvC8$!Eilh789)I#cnKofth#ZGr+EXRvm(c8c zDCYYQKmDeDu5Y(_AF7jo#;u0JgE;Q7ufF0bsSWxf*VScIRKrveMho&yaHK$qio%Kp zvQIDdqlwB}*?}e63aRH}_MI!WTj3|qd#X>ZT!$mffb{44Gmz>As)|?N8(1e8#lQd% ze8;brIvm(vMhNN-hXUCC@;uGssx^wy_L21B=t_n_b%)aVpqHY5Cyzy)Mk?;xBu_wf z_y3Qtw{5cH#;$aK5hD@_Bog@8R=e-Cr{z|(G-Jp8asvqorKn<-A~`g` zx>kf#nMDRXKjnF*pbBSACW^%lZ<=)3bkd_&2acTR^#1wS$>f(;US527h3QlgWnK(R z1l9ps-gj#$sx&D>ygAM*f7pR-eI)j756hVbO8d+{%-36g%eFFSe>wjXpG$PrX`JgB z66Dn#@W&Qg%WOC5neFOdc;-_c0RL%TiRihdzbAW!zbE1^KJl?+){dm@W{XShle5aE z?N&bdT!yoN{-X1Djyi~@=lLIP>76|gy*s`YZAI+1bU=rv8f)=7TgazFBM< zDA8IHgp%r))B6!zkk7-hAHurQ9eV?n-JBukq#aM{HZRxc^IWp}0Mc>1}Jq1ArX-K7y<4yB=rLgJNhqvqpsP_ZuOs7`GHvTEX&#z$m?%%;4wdx~!@ z-K*K{2Q9Xu)X6Rl<8lPp*~~5zUO52um^5rAZdR)(E8s+KESw%CJ2WXRymhhKq?{D^ zj9YDgkK3V)!-RY$$=TPN}34kB3#o)57U?r5f9~Wsb+H zZn5+``!LM}HpH}*`~dP%O7arJnp_VmU46(dt)KNC9)Vi!TBNQzld6ryW|*l&6UtkE zZf);@0K-et?fbl6mIX=>zZhM4aK05_bIeY@z_w8k_c=H^QTi*`>9(uLb5kCC(N&|& zl1&*i#qY7k$5<8R{;22AyztSmxTYHB-%3a1)}=248gv`F9Rzp5z}b3?J<-qD&Kqft zs&UgrUGI>NPzwu5;ja-C;?yn9?z=xok-J4%o##pEUcwHioSMo?`AkX=%ox0$;l z+||*wa6YBYqUQgVy3GK`oYZ)}cVbR;?1Ky$P2Q?wM~SFxHpv=^S|uKmGQfp=EiY7Z zswDSP)-}}TSeD{~hds|thi}>C1Plk|jM}@<>3Ruoe|SH?`S{cI{=-*)ZZ@bW(&j+Z zc5;-}xc0rJRWS`9o5hrUqm$f|iI;JZvO9IC#*Me?orK?GC&v>44}Ey%Qi)f1eJ4;W zBpnnv*)>>JpE?1i*-q&$8UZ~^hH2;F^l9I<<#akxO`+LaR)N|nO7_nflb6=6d0&b2 zM_D|qBplz_yTZ++fzG;r0X@#M4rxqHp$7?%U9qfN6tJnR=K%CQu!JknC88}DW$+`4NAg7irRIJ5N37jOR7o=aEqQr zK(B>hp*}9~2X~`$e(7X|$n{J=H#2Sc_5F@1A)BrF>5+JUpsdpRrM~cItzd{IP>}vu@4pnla0(((brY=v* zD4g(0eP$hhEPM5_5AfZ)-+lP_;n$x&{_^wN*BU3w&ED{yT%-8Hcdfn=w&iTUr@Cxaz|tX%G;lp=Ajn4X5`0% zvm;?=r>gO$jhZ7YYq?9Ncks5gtIV&0;=Q^xJHG{gkV_l~x62z)*oW9O=k9HytcK=v z#o@b(vuOF47N3v|pk#sHC3BWRNxf7h05csBF&*Ze{UM~)6$hAq*<mAf5U z`vKd;&uS3Wq*>lIZZE@AvVqZz52x3Eu4=npO7Uqf?+t3;)DBy>>?fimIjGsQYYKpp zWq-3=@$H1EzIe4-O=?Nq!kfUE5Tp|5rI3+>f|DBi*a2#wpF^e{XOJ*W=|Mv3S;ym@ z!>~)uP*qctC0_816rgDteaOkZP8;5ZA^~JNRoHxDv-pqLUA}Eq!@3t)IXS?8QJbP# zb(I<#qjZgI_X<+0vUnB)tlBUqvR7kERxUWC%#TsWm}plVtkweykdap5>V4dqC{a9` zXL)pxcD=s;Tl+Ns^!{r)9PyO8dFThHqm9jLju+5OxAs$YJts|8(9qgGZTrcuM)$ts zembKaO1<#(#R=FrLr}<-w;=z2Qz9ufk9VTf5UUriAGse0Qr^c?6|O}IyRP#APQYrX zu${JaB?yS5C~EH|cTR>P)D^urPL6uh^IF9@-HGqmEgKJa5Qqbes$0zz&bYCSm)lw-r3^%K*YiwT70dmlQ4sf@mlHyl6y~O*k=% zW+dJR*(kJjsN@1GRw-;r8coUi*YPx}XPwUGkScda1o+ukB_=eAJdI5YTfLSX9i?%O zUWpBx{HOr8^Q8Xp;3z(~K zt+e#d8w7~XD2E(fr`}OC~^QZrIBzPzS1|HVXfcL$VYTjCnI*L}$`$2J-LaT`i^kLzCY5=o8zTMUY!te;7L4r?EE&<%r zH?U09FnlW3lGPf#c3T6n^Hnc}yp__=L7ja~u%#3yNy)o^x`)X|t%cFWBRVm!>r*6p zk@rt|xtc0R@=DH6%SEl>^rmE~c4mH*v5wlA7^JXflF@kjkF_J+*NS-Er4V$J`H>Sx z#gS@RF3xiE$jyikHr(&CEmv|%hhuh1;+zWkm{RdpZC*8$7t8h6`RGmdeOH3{5 z!-Xvqr@~2jewxCI9vc_?DV;`Vz2WqvPKjM@*K-tqL$wmHyalDp_eH8wKsBgR`Y1p8 zUyJtP{`kVo_n|>YN&}Ni);)=tjsGbTC@)fvLqnroi;PXP&3-gphd6;vQorq$v@9-I zi(R~cE(^L{Ni( zsI_K)ekmLsf!-Y{?j4*5WKpe}0C&pLI!qZrnS;YXhRT}HN?xU+a`Y=oXb7r1?Wev; zO>=UP$8kUExO`c%@7v>D8B3NPc3GE*?gfJr?O}OXZq6N%ceJLq>z%XFZ7bETu1@W0 zTTt4Oj1C8$W4ek~@P|t@Hph6o4tm*^_ngOnacimoqTJY)X9*HwHfgTyS@YbS4A4^y zjnhUgsEvlP@Q}6{c}o;$$!Rr;Trco!9i)3xC z>g|-T3?K@kqq66r!FhZ8&64%@82n!->^sAk?qRPmtno~*0n~nHzg_amfLL27wmQ>) z5glqwUyK}cJvovB%L!J~lT72+WXZ<+y<=XMnY+WKeW$ckJ=-wGX{a0&-3R!@r#`TX zI0RH3;73vCwJR{GgZI89YLYet05eL9Y;Kp^OM%YE-BSj~nUqo|6tJG#NeLAlmr?l~ z*r9gBrNumG=Dcg8Alo$Owt3oh*m=}{miwH=wjj;fT{M+u5XK9Scl0R!9bs&EZIuW%ZQ`1iRpkS7G~xnDo1` zbDN%vfXe0~m?`JPj{rhnKt1)WWKsmLYKHc!Rs(?H=xw&F%Q`^Qh8Wj22NN}b8aaxnQwO6FvF zQ%K3jx^GgXXi)c38O9nVR+lg8ajbK&)vTQZV9asN7%blirj~q%^x7KbRa}n#s1DWg zPM&ghB2*3PLZ_apPdQVDCb24iA1si5xVz(w$=lkJ#;y8E%-615jS`wdFeiHrUHP_s zs9dHo>s$S)X zE`8d`R#^pd2Y{|klZeoihMO9&97!*Y)!;goW-32<*HJ0#7dst1T%{Kr^^u$R;m7wM z=DTm+UN6U2y6m@dDg45J_SL1B_)M8efQasYA+(~S-eiF>1wou1g(8R+t`q2_1ntzP z8cE5E|2Ug|-*XS$1fW|Z*fDTO4>G*OexexX_UWQ*2NDLoDK_ZAF)rsP=W}9_1Z>V^RwH3{o^5!3FQB z*SnASoAvT;@hf@;I)xj*Zo>1hwR@|CFUNnk;paYCQyktab!FFByqI^;$aQGc2X@_- znzEc%4pEOA_046IayXhVM@~PM;q(Z{!h6zNU9aMdNPS9{r*H03k5JK+nYEdw@HJRS z4k5^$>WPxWz0x0lYJ+M}vq|QpG*Ssz+JMHC&VY9(zGXi8nl2lr+JPNf;n|bgh%9~$ zAbdRs$F{y+v#)fP!qUde-M}U3s7Rh2!5yUUn9BE*izlF9##q4GKkqt_M zC3bI%%(lr{bY@Y@w1sut^_0FE;05{rT3Hjt?nGHpoTQH%$IzQZa_Qkg0PpKuqmfzG zbv*!UpI7UjzW?(-zx&;XuaG|hja7C}pcvX6=q69C>1dr?;>#oM+`K1jt= zu^=j`9Vjq=@?iwwH|hUQAK z{ZJ@Os{3i*N(aZQC?6wvec71sGLdGXE>Fsy5)BRox5T-Y&9nd8<_H7XR?!7 zCHbm<9uPrEYw8|^s25tx4S>yqY@6~>PWqqfj=fs6*T(h_mp%c+$GPsqE)ocjog5{n zS8ed>@+71%23;K^EDtLUC;^vMDbABqP^Kj(u%{84cu+QoTH_b-_*i2-(+sTccwVE0 zs|DuJ{6=BEKLLw*Z?X)?XMTBJ(p9{`B7m}gYaH%ZGcVcgg4?991}yi$h9VyZ2~pjjBH;$l}8&g~ZSo$mYfHv7wW-@Hxmxu#Q7cb9h& z*0mH>gg{ThIh!2O-2^nEYTVWJ88gVSrt0utX?L&4(*4bNkhJ=7`m5# z;#J=@t57dZ&rPlmulHH=-C?uPC~#yhHTewpy6ogtsw2O5MG@5R3t9vSt|vwrMVnItL^|6gx4Hn< zjLu$K6?m!#h4gjgR`;bZ*uqA}yQ`3vBcjZC@d{msS(QJh3}cD9VcRLJyf03FpgFA{ zfskOR(-~Y|7I2~bX8qotnMj;#b$rGML|1tMQZf6aGz0<0(b*lToGJ)wmd2x!DhMq} zets?hlF3=&5&2`1qrt55(yA)iAaRhSOjRPAa{4w>G=_E_V%R=4Nb3FHzEe9Y2LCAIv|q?sf_hicUzr_rChoCa-jR%}J@QdgB3{ zaDIUTTW zrM68f#H>_wF_}Ze66RN>H50@AJ)c&n~-#@+o`{#GxzGubW>#q3y+t!MF_d^vdlaTin zMtbG%Id+>SD(v(nOu<=yjlu33wb13jylq2=(|5-e4mLp*-Y1R2K?1o0*{X=LsPrY_ z0%&`mM!W@&!DgMTxIg<9&ykCDtZq1i6I{S@&eN_^$nK5AF)H+OT*}M`do;SMmn(+u zxR^39B?g^|o2!0|>G*8-kn(kaXrK)6D@d28;VXmw0Kg?@V$FYlyLxZ447{2mUa6$T z*9t0SA7J^}^fVgEJZq#zD%GYksFf`vNF7lncka@aDIrq@u*4F}b+o_fv9hF9h(Ye% z*={vV&sL3&OG})@LjCe|H%nO~C!?O40`dgT{Cb_L{yQ;;>Os~o{abY4+^(@av2ESIR&wsy{W>FBePxk+8z!=VVyrZ9j`oZ-!-(>~?J!aYo$ zlR{7MB!FyPUBFBsvB&pmKZ0WGAX*J`pz-r4V|ac?$z4O-;LpG-@W_YFQ5N5KfL>wpI-pnJw4n6vEWI6;^Y;8*QaSuX#rx??G#*BL7W^( z)Ua%?)`!3fqJ>x2XVEDCm<+t!(dpyehj-G1x17V-O_LS7Ot&H}b_YILW}$#%07 z!>@mTdAIRkeyT^L{4RjurQ#!R(}~Oy z72M&wRZ8RQRC;DoJdhro4(A&IfyuG^r6N>XYH>Z1+Dg!GlJmLQKc8_2v0pl>OSw3g z5rf3!TQ!BVK5If~3#H8fhuopM%0DKF5G>?>$e%()(4rT6-nZ;$BW~*9djaDvIo1_; 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%0D{GFoK>n&OVcPLW8!r;lwdf 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 GM+g9*#dQ7v diff --git a/dev-perl/Net-SSLeay/Manifest b/dev-perl/Net-SSLeay/Manifest index a2be4551452a..c78588b02bb4 100644 --- a/dev-perl/Net-SSLeay/Manifest +++ b/dev-perl/Net-SSLeay/Manifest @@ -1,5 +1,6 @@ AUX Net-SSLeay-1.88-fix-network-tests.patch 600 BLAKE2B aac7cfbf6770d56df1af455bb37b4cfa81879a880b35a315a90df9012b1fcbc545205b206777e6929454d31f881f2581d9dbd9f6b22cd849846bc0b9f3c6484b SHA512 7fd3078e55b4c829224289e7e1cc0628e2fb162dccf151b559022d5367ac06593a460779b28d9cae015dba6614d9e273399fa6b81144aefaf47d710f63b6c046 AUX Net-SSLeay-1.940.0-avoid-runtime-check.patch 676 BLAKE2B 3454bb5fc1ebcc2927daf5efc564ca3644d7b29c983a7d68bd186aebfc79cb92ec617f66352e952f7e4350ea0664b723abd1d86443d3e80d8ec0eb751f73fdba SHA512 76127c2b6fb989c9b656831e7324ba365f6350834e4c0094ed5b5c69d80b6e950008e3408bb90556ac1019317e523a3ea6df8e36f86d0fc389c7ce8675a48de7 +AUX Net-SSLeay-1.940.0-openssl-3.4-tests.patch 1329 BLAKE2B 38ac6b5191c598e44668400f1d30274c05a68a7b4d4638f86663589f594503b7389f19e8b7da9475d9e2bca675a911d224aabc010306d046d342f3b6a3805859 SHA512 abe3f5cb7ea355957a85aa84c10f26e7427672af0b25543fdf59cbf8a51706f72c2baad397afdd6734db1e963e8c5146923aac84d90a1a535fe1422c4ba36ba5 DIST Net-SSLeay-1.94.tar.gz 663948 BLAKE2B 97cef98bf3794ec992817e5ad91f8403ded95e29184512d9f23b5cbbd765912d2e7f8e835366b40aae9682dd13947cd79e2d9dcca2d10cd78e3c7869b1e197db SHA512 f1461667269f3da56ff7e1724b5511b95c34582250f8336e9f93d30f3b30d4a5360eb27622b9730bba11df75e00d717c7f0cea2120d20206723db136a8509375 -EBUILD Net-SSLeay-1.940.0.ebuild 1450 BLAKE2B 5250c764a1e856711a64cdf6a9c0f8c2343eef61c5b59b93481666d6646be8f63826dbd5b38833d7c9d25110951abb360ef1ebcc6750fff6d95557eebb34bf0d SHA512 a9fcb1518b6a52f4a5dd74d53a50fd13d0dc492ab28001795457957b2ebefc9ffeb273b60207f21f642c5ed930e91a42c61d2d1df8af3fdf79b63efd4025a620 +EBUILD Net-SSLeay-1.940.0.ebuild 1566 BLAKE2B 2d9504fea50a9e5a631353345d3dfc19814dd991363313798923489c5252c64fec80e9c6af2161f35a8ee509c213fd43f59a0071f3a5478093d9961697af92a1 SHA512 22893da6292e974183e3b26f50adf32ee1f7fc1ad5178eccb3b523dac4cfba79664eac427d9db267a083fa14f0be7460c560843a69e5e5d136708d488b1f52e9 MISC metadata.xml 459 BLAKE2B c3621c53dd1e2593f2855530c57671797678132180f2b3e7983f1ee62eebc0da4655ca78def94ceb2543e0f34cad1261afffad60ee86f879094be1c43d7b6e55 SHA512 2dcfa628355849c903774c7bf983e3b8b98810bce37effc7eece1c3b92c54941641f0da5024fe42220b824adb4141bf1555894adbc80d03f9396b739e6c360ba diff --git a/dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild b/dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild index b47ba1c89b1e..9754787a3915 100644 --- a/dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild +++ b/dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -37,10 +37,12 @@ BDEPEND=" PATCHES=( "${FILESDIR}/${PN}-1.88-fix-network-tests.patch" "${FILESDIR}/${PN}-1.940.0-avoid-runtime-check.patch" + "${FILESDIR}/${PN}-1.940.0-openssl-3.4-tests.patch" ) PERL_RM_FILES=( # Author tests + # https://github.com/radiator-software/p5-net-ssleay/pull/393 't/local/01_pod.t' 't/local/02_pod_coverage.t' 't/local/kwalitee.t' diff --git a/dev-perl/Net-SSLeay/files/Net-SSLeay-1.940.0-openssl-3.4-tests.patch b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.940.0-openssl-3.4-tests.patch new file mode 100644 index 000000000000..ca20b5e3b3af --- /dev/null +++ b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.940.0-openssl-3.4-tests.patch @@ -0,0 +1,29 @@ +https://bugs.gentoo.org/949707 +https://github.com/radiator-software/p5-net-ssleay/issues/493 +https://github.com/radiator-software/p5-net-ssleay/issues/494 +https://github.com/radiator-software/p5-net-ssleay/issues/511 +https://github.com/radiator-software/p5-net-ssleay/pull/487 + +From e73cf1139a6651a968828d1634be8fec5beb50ba Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior +Date: Wed, 16 Oct 2024 21:48:51 +0200 +Subject: [PATCH] test: 32_x509_get_cert_info allow single colon. + +Starting with 3.4.0 the double colon in emailAddress has been removed. +Adapt the test to allow a single colon in 3.4.0 and later. + +Signed-off-by: Sebastian Andrzej Siewior +--- a/t/local/32_x509_get_cert_info.t ++++ b/t/local/32_x509_get_cert_info.t +@@ -188,6 +188,10 @@ for my $f (keys (%$dump)) { + ) { + $ext_data =~ s{(othername:) [^, ]+}{$1}g; + } ++ # Starting with 3.4.0 the double colon in emailAddress has been removed. ++ if (Net::SSLeay::SSLeay >= 0x30400000) { ++ $ext_data =~ s{emailAddress::}{emailAddress:}; ++ } + } + elsif ( $nid == 89 ) { + # The output formatting for certificate policies has a + diff --git a/dev-perl/Perl-Version/Manifest b/dev-perl/Perl-Version/Manifest index 49ca5dd183fb..21ea3f1d06d4 100644 --- a/dev-perl/Perl-Version/Manifest +++ b/dev-perl/Perl-Version/Manifest @@ -1,3 +1,5 @@ DIST Perl-Version-1.017.tar.gz 30441 BLAKE2B 0ed170e5952dbd1ce22422254f4f40a80b00aa92309baa4a9fecf342cbab877f86487f03cb30fedcf6a16178b36561e9ea0a5c259a8f04c618cb990e8d21c692 SHA512 0aafef2f0fa208502236f1f32cf7e19a5d29b628587f116a46be3b0111036cd0304581b3ca0ab53f6277aedfe18681cf2dea842172289a7ec67124f1f4ef4697 +DIST Perl-Version-1.018.tar.gz 31452 BLAKE2B b2e3590c93a96af34e86f6b525fe742ea9e9b2f569fdecf30e9bc8b70b74a78b6c9359cab2b2c27088ebe03f19cf8fb3c241f0e3fd79b71025ee0a7475c0c0a4 SHA512 fb8f3cb8db5c8110ae2d68667e5491c9b63ffd24c717d9d4c4ff04a938c503a2d49abcd59fd9b21cfc157a6f5b59369248a166e5cd6e911180eef9e8f14d0527 EBUILD Perl-Version-1.17.0.ebuild 583 BLAKE2B d5d39da147c44ff7902c8c41309d9c2984501145ef5278a0802a7f778e6720b80c744e3b95c2d9fdaa5812a459b3aaf38776e61f3a203094a94c9895f219d056 SHA512 02a10083a4a5111e6f680393ff26caaa41d44ca712891f42f46cf3c604c6cbddbf49dd79c0dc80d6d4e7ba990b30651cac9dc229af8f8a09f391310ee3d705ce +EBUILD Perl-Version-1.18.0.ebuild 587 BLAKE2B a56c34184499c563f08fa7a5e7144bfbdb2c0ba2cbc2c150ab582dd54541abef295dd0e00d59feedb169a7ebeb97465a27e05dc8eb3cef88fa86721350ab93d5 SHA512 b0a229cff3412442585b5d30896d8f26f51334581b172f73864dc353bb80908bf647b279aeb155ea29b9f968599dba1e64a53db1f8b74fa637d50c3b82a50344 MISC metadata.xml 397 BLAKE2B e6c79d316d4d92c09a42ed7822b2141fe017139e6041004623b86a77f9dd23f819dc2d07667c97788cfc11101a71c323718da2cbb39e44bf343c71307041e9ca SHA512 81e01b6bc758e3ab39e5067d4061039a8aee9055059589c46ec84e3f2e0322dd6b9c4147cb5d43f4eb2434338105d702d4c7bdaab8e82389a0f9ce50c7c6eb5d diff --git a/dev-perl/Perl-Version/Perl-Version-1.18.0.ebuild b/dev-perl/Perl-Version/Perl-Version-1.18.0.ebuild new file mode 100644 index 000000000000..df84d69b8f32 --- /dev/null +++ b/dev-perl/Perl-Version/Perl-Version-1.18.0.ebuild @@ -0,0 +1,32 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=BRIANDFOY +DIST_VERSION=1.018 +inherit perl-module + +DESCRIPTION="Parse and manipulate Perl version strings" + +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND=" + virtual/perl-Carp + virtual/perl-Data-Dumper + >=virtual/perl-Getopt-Long-2.340.0 + virtual/perl-Scalar-List-Utils +" +BDEPEND=" + ${RDEPEND} + >=virtual/perl-ExtUtils-MakeMaker-6.640.0 + test? ( + virtual/perl-Test-Simple + ) +" + +src_test() { + perl_rm_files t/manifest.t t/pod-coverage.t t/pod.t + perl-module_src_test +} diff --git a/dev-perl/Sys-Virt/Manifest b/dev-perl/Sys-Virt/Manifest index 863a92fdd0fa..bba77edc6f69 100644 --- a/dev-perl/Sys-Virt/Manifest +++ b/dev-perl/Sys-Virt/Manifest @@ -1,5 +1,7 @@ DIST Sys-Virt-v10.2.0.tar.gz 175575 BLAKE2B 2950f991be8ae130788b1b03c1f898fb778b67765aa93732540a1fe5057a66e7a4efb7c7792327b81816281d7ba910466b24a50ec36165e554f1cb481693fba4 SHA512 c362e37511aff879b08a67b6337cee6d20c197fea2bb7f6ce023eafa642f53029744d704250533772fd48448ff39ea49027b83563cd9821dcd22d3621b2372ef DIST Sys-Virt-v10.9.0.tar.gz 167799 BLAKE2B 6995d47ce6fbb8b4ee383d2bd2ea48e9e3e9f75d97480f33e943471e4dfa97325886804a18c7265d0f6cf3a5b798d53e730aabcfa8ba455186c73d7d0aceaa4f SHA512 9f98c7c70de8bc2a0013df4b0c0ad0272d00a0b5b8b52560a88538db64db0141f5f3be172baa5fd7d38b11276aa223ba578e519a6cc8b04b3a778c54772b721f +DIST Sys-Virt-v11.0.0.tar.gz 168014 BLAKE2B b9b4a16651cd3c341624cb522b79ee1b9f8729a745dc90f7c07effca177e84b3322de849383dc867bfad8c6b6c78c9080f8902cb212b889bf80b2c8392e499c1 SHA512 62f9c8814d4984b5a634de397f28ea6e0e22f36b9516415f4c660a38dc5494cfebba86d05f9c851d6320124a4aafc84181281b6d6448554034493dcd80fdb61b EBUILD Sys-Virt-10.2.0.ebuild 820 BLAKE2B de2ee9452e0f782651f96a950e8cb3972a17aa40a1d9f54139bc26fa626af20f85b4413a55cce2844615163b1ee13096587b6a20decebb723e4d7e7da1c536e5 SHA512 d9f4d4f9c7308874dec4ba584fbc7b356e4af497b85f616856e799b7dd523661b570ca7ff5c97963ecc9a686e2be4e99b56bbe1cc0bf58198d199b54ffc099c9 -EBUILD Sys-Virt-10.9.0.ebuild 822 BLAKE2B cf5a01656f19e961b8a890446b86415506bcfb21906a1eaed0febce01e0ad05005ce096cc73c6ac7564f34fab9734456af1304acad5efff790e7d097cb195533 SHA512 3d85561d31dc965cca5e25d15382e0baaa4bd151b54dff694f72748dadc4541faac74a92a0fe76b779085c9d2530dbeedfac5ac7f461cced1f77eac110b4e1e6 +EBUILD Sys-Virt-10.9.0.ebuild 820 BLAKE2B d6aa19dd38ba1ac5b0b5cbdc234980e712a644f35e5e2838860d111d8d90e33843ce010ed9cc61b9f80f1a52e841bb036b038ca4763e855430b384b85b8bbafb SHA512 8e3cff54f789a8d0f58bcc03febd784cd174c007e9cb6058e280fb2558f9ddd50dacddb9def40fb7909f3dc5899980765939b97d826965617a57e56d0d7cfe7f +EBUILD Sys-Virt-11.0.0.ebuild 822 BLAKE2B cf5a01656f19e961b8a890446b86415506bcfb21906a1eaed0febce01e0ad05005ce096cc73c6ac7564f34fab9734456af1304acad5efff790e7d097cb195533 SHA512 3d85561d31dc965cca5e25d15382e0baaa4bd151b54dff694f72748dadc4541faac74a92a0fe76b779085c9d2530dbeedfac5ac7f461cced1f77eac110b4e1e6 MISC metadata.xml 1206 BLAKE2B bf5ec8f97d105c95b3beee58bf6afe0839c2d20f4a841b2d2d85ccca4933558d873932bae65c357e5b6d27ceefd3bfdd1a14ef157f1ba0116234b1199ad25e80 SHA512 bb97e87838d117b95872c7481813455d0e1c5a188908ea8680342553396aa8e26a703670ed2fe06abed6ad10774363e0d4893906d036067d4c84a4be06b243a7 diff --git a/dev-perl/Sys-Virt/Sys-Virt-10.9.0.ebuild b/dev-perl/Sys-Virt/Sys-Virt-10.9.0.ebuild index 16cad8c07a60..fbd5724e875a 100644 --- a/dev-perl/Sys-Virt/Sys-Virt-10.9.0.ebuild +++ b/dev-perl/Sys-Virt/Sys-Virt-10.9.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -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/Sys-Virt/Sys-Virt-11.0.0.ebuild b/dev-perl/Sys-Virt/Sys-Virt-11.0.0.ebuild new file mode 100644 index 000000000000..16cad8c07a60 --- /dev/null +++ b/dev-perl/Sys-Virt/Sys-Virt-11.0.0.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Packages which get releases together: +# app-emacs/nxml-libvirt-schemas +# dev-python/libvirt-python +# dev-perl/Sys-Virt +# app-emulation/libvirt +# Please bump them together! + +DIST_AUTHOR=DANBERR +DIST_VERSION=v${PV} +DIST_EXAMPLES=("examples/*") +inherit perl-module + +DESCRIPTION="API for using the libvirt library from Perl" + +SLOT="0" +KEYWORDS="~amd64 ~ppc64 ~x86" + +RDEPEND=" + >=app-emulation/libvirt-${PV} +" +BDEPEND="${RDEPEND} + virtual/perl-ExtUtils-CBuilder + dev-perl/Module-Build + virtual/pkgconfig + test? ( + dev-perl/CPAN-Changes + dev-perl/Test-More-UTF8 + dev-perl/Test-Pod-Coverage + dev-perl/XML-XPath + virtual/perl-Test-Simple + virtual/perl-Time-HiRes + )" +DEPEND=" + >=app-emulation/libvirt-${PV} +" diff --git a/dev-perl/Text-CSV_XS/Manifest b/dev-perl/Text-CSV_XS/Manifest index b19b436403d4..8ba9923e2865 100644 --- a/dev-perl/Text-CSV_XS/Manifest +++ b/dev-perl/Text-CSV_XS/Manifest @@ -2,8 +2,10 @@ DIST Text-CSV_XS-1.52.tgz 271359 BLAKE2B d7a04706dc13f653370ecd54c6df667015237f0 DIST Text-CSV_XS-1.54.tgz 272716 BLAKE2B ac0de1bafdcbe8742fd7bc7b83eaac6742b29a5cb6000be45c9ef4f0b1ba14eb782177e5afd71cd91f3f40e97353be26eac7a7bf3ea5708f05c9917dee6395c6 SHA512 a4170ba518aeffe3eeb21092f8514b8a658c051d66a7112b11220bd9e4341acd5197335661c56dd7a72b76391346c7c393457a51c8f5eeb2872b55f429684bfc DIST Text-CSV_XS-1.57.tgz 277208 BLAKE2B 90cae732c2bb7278d0c86826d5ab4f9b079888b96ea03c24a9dd11420b79fe05e8e6645c09c8b07476f18418d4c553787a3c34962b97b41b6c577cd149b730e6 SHA512 1936335b6187f775bd814c23754a4941656d487adf2547efbe916af4ea8858db226f6a6632c902986f61b6174e8b9c012c5cb17b17a5c58a79efc4feae613d9d DIST Text-CSV_XS-1.59.tgz 280807 BLAKE2B 2471322f4199a669e3f4f300531e669696fb64aeb0884387b76eacf7a751591903333282532470c997c0cb5c5db8a72e0322d3759def0aca9d3835edd9515a6c SHA512 c32624ed857e11b4303485853d532e5f59de7f857d82fa13aa49cb440a6862e16045da156959de4fc8e62a4105a0ec223d7c89b93252ab83c91a9c90fa571a2b +DIST Text-CSV_XS-1.60.tgz 282498 BLAKE2B 1f4187a1c0e72a043e72bb33cb7f086a786b93161f1c22259ce9ba30b1c1c8edf649cd0788270692c94b600b034608bc820aac0b276b1e2fb5c52336c54747c4 SHA512 3d41b7c246c6850627018e5e21ecff383d06c74ec633c59bb1064183051bd3af3d829b01963ea55ce36635fdb15826f55a3f4b2b8371e84810a722217ebd1a7b EBUILD Text-CSV_XS-1.520.0.ebuild 636 BLAKE2B bdbff70f1d68acf9e0eabc1ceb91ce99801fce7a06fa101a038a262087b0d613b951abad8818151faaa59624c0119582df0b51b0ca992032af44e5c96eaa6d5c SHA512 20ed4416f5d570248910ed19667b9f9bdcd399605d0c0dbf302ac7615515d5fb6ba8ab177ca95f7d6f9b1eb9477205962e146c29d3d944d84048d016ce70fb0a EBUILD Text-CSV_XS-1.540.0.ebuild 670 BLAKE2B 300586514c8f1ba2a09a34d2b908e8aec61a21ea0189249928ce8cc9827217dbb23f05691217f1585b77c584f503f3646d8a83091a39febe079bf04f51c4c10f SHA512 b3f5f2ce16d4e3173d8d053eca3faad907a9b18fbfa53636f85f628ec2ada28e4c8c8b12820a2589782b5c424b0809eb64d15b39455a873c80917b807d50cb97 EBUILD Text-CSV_XS-1.570.0.ebuild 675 BLAKE2B 6b4057c2d3490c7e106f2c343756d9be66a52bd73a66c5e507cd108e1d122dcec79eb10ac1fdb36a1a6a8c11d4052467b4a1016aba34e43ab6154bf0bf767b67 SHA512 b1679ba1e21ecbaf3dea33870d09b464deae9887d2fca64538d9cc286e19c62b684802e7a75879ad061545f89deaa0e8ecc537254164f68f1b0a77d255453aca EBUILD Text-CSV_XS-1.590.0.ebuild 675 BLAKE2B b5dc99098da7dff09cc25205e0bb9afef9489af04e254c0188d46697e3daa500280059afeb72b39915aadb398e3f306f719ecf8db5cf46f8728178c82144e819 SHA512 03e253b6eef25bb1372baacd6064f09bc114c274b27cd23b12486043979699410bdbf050781cfa67a333908e3ae59ca5d17e86c43bdf898ddbaf45fb04a7bfab +EBUILD Text-CSV_XS-1.600.0.ebuild 675 BLAKE2B d7fae166005af8324ddd384b86bed6f2b291eb674c9e6acfa54a5a69ebca23ec05a69782ee78d9301acbb0b5687a88745696ac9fe216e500da16b5099728fefe SHA512 98ec6778059646835633e3847fbf86ed4bd7d000ad5d12c83c4a4315001ffb274303da48a2290dd1f9e6b432185dcecf57b3cdffb2665c99b17deb904998916b MISC metadata.xml 395 BLAKE2B 49dc62f04f2a8c00c686bc25147ef9164388beb74db90b44cc194ad5d29aa8207a7dc46b86b05735999bdc02ef9ddeb0c6c4d8fe0e5c59a2c3a25d890a65b636 SHA512 168391688b7286299452a4c62e8ffed7520711d800ce5f247d1aeaba649803c7bc994e92f3929a544afa2e742e61507c5e698bd770e4a308577bdb853e73a11e diff --git a/dev-perl/Text-CSV_XS/Text-CSV_XS-1.600.0.ebuild b/dev-perl/Text-CSV_XS/Text-CSV_XS-1.600.0.ebuild new file mode 100644 index 000000000000..a3ebd2ce038a --- /dev/null +++ b/dev-perl/Text-CSV_XS/Text-CSV_XS-1.600.0.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=HMBRAND +DIST_A_EXT=tgz +DIST_VERSION=1.60 +DIST_EXAMPLES=("examples/*") +inherit perl-module + +DESCRIPTION="Comma-separated values manipulation routines" + +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + +RDEPEND=" + >=virtual/perl-Encode-3.210.0 + virtual/perl-IO + virtual/perl-XSLoader +" +BDEPEND=" + ${RDEPEND} + virtual/perl-ExtUtils-MakeMaker + test? ( + virtual/perl-Test-Simple + ) +" + +PERL_RM_FILES=( "t/00_pod.t" "t/01_pod.t" ) diff --git a/dev-perl/XS-Parse-Sublike/Manifest b/dev-perl/XS-Parse-Sublike/Manifest index 34b732fdef64..5a883dc6ceed 100644 --- a/dev-perl/XS-Parse-Sublike/Manifest +++ b/dev-perl/XS-Parse-Sublike/Manifest @@ -1,5 +1,7 @@ DIST XS-Parse-Sublike-0.30.tar.gz 67272 BLAKE2B 510748fea66c42fcb5b155bacbe50dff80bb93a109e82a3c80e8f39a5d73caa99af58a5f8735836902f04cb4d29e68ff607518815686328df0c5e6c7b0abb8f8 SHA512 4b17d5fcf79b84f092a5c81b89f5c45d614e8a4b4316a21d0e517146bc6962dd2b5c548ffbae8f75ea5b9ea09079104f28adf7a5e209558675de5dce7ff09bdf DIST XS-Parse-Sublike-0.36.tar.gz 71973 BLAKE2B b7aeed9f8f0e1f01942eaf2be44e45fcb2ed988c9bbb0b7455afa63a02fc9e12905d7b76e2a0140178ae19b1af88d9689992404c7397842903e9280229188759 SHA512 41d4abf483c3701722ecd1b06a82edaeb06ca91ee9e1179ea0ff175a46566b0f9b82cac68458fab7024bd4d2d4894c9b963d295d1f1dbb7d3285bc214b644cfe +DIST XS-Parse-Sublike-0.37.tar.gz 73053 BLAKE2B adc7ec6428cfcf2c1f38fcbec1e9f68b745ef2431994e9d610698946670f0c3e6fedf1a71086cc498545edbe75115301932e2a02de0df630902e7c14b1a5f25b SHA512 3234cf389c4fa8ae207c94409b3912cb64855e6835688c8ee4ac9c1ad66e4aeee4be4e418332eac0eb281ee88efef8aaaf618e9b98b825e274c37954e7ccffa9 EBUILD XS-Parse-Sublike-0.300.0.ebuild 447 BLAKE2B a6f0ac06ef419ea12a3b6fd27358df6fad565233568504d4354ff9f3cc4ad3ac6fee542caf6cb48c7432a1bbee5dbf1435f15bb92ae4514ba48e9d937dead742 SHA512 f8abf41180a01188bbcece46f0a2311547c620c94c336ca3348d679e7695aebabdbadd512c3339d8caea702aa6b3097fb45fea2f0a5b063233fbaee05784572e EBUILD XS-Parse-Sublike-0.360.0.ebuild 449 BLAKE2B 4d44a7015926779562377a5fb0da5a983c0030cd10f88fdc5dce68c5825b84f1ff9ea1e45211169b6bafac8c4964ab856de1bb5bc1cb7557b88bdac504bd4cfc SHA512 b64207eadf20bd9c7d9808845069ab8a2bc46ec0df5f305c3c657f926a515e6b1a05c93326ddb604897a2840dfd59a3f3fa109cd11be1faa49904d3a412f51fe +EBUILD XS-Parse-Sublike-0.370.0.ebuild 449 BLAKE2B 745587ac5dd0a482ead0ae0f71e318853896c64feefdb9ec790e97709c5a5d1b72cc5564a750195f64fbf1485b5a89bb2d4afae3622f904d9c5812317470ce5d SHA512 f0fa0571820355e31ef931e95507b61855ad4416573bc779a206d10ebed52f1876d6ad89d3a3c2a3e4e81d6416bcf807c24f7c5fa6555079eb598a850b8674d2 MISC metadata.xml 528 BLAKE2B 638e9228da4074fd35f8507b1c89ef1c663146a03a63eea257fd208ba34b18fb7440b7c03289b63c5832154e6ba0bf82f91793e17e9d9b4cc65b985088757692 SHA512 c16b7c825de1c2c68eaef9dbfda3a74e72441a9c0b783d05954e9cceff299235d5a0db0a234c55d35c6eefc8ad26f27a6c1f219a2eb36cbd202a4b7af39b6538 diff --git a/dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.370.0.ebuild b/dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.370.0.ebuild new file mode 100644 index 000000000000..beddfbe6df76 --- /dev/null +++ b/dev-perl/XS-Parse-Sublike/XS-Parse-Sublike-0.370.0.ebuild @@ -0,0 +1,25 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=PEVANS +DIST_VERSION=0.37 +inherit perl-module + +DESCRIPTION="XS functions to assist in parsing sub-like syntax" + +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" + +RDEPEND=" + >=dev-perl/File-ShareDir-1.0.0 +" +BDEPEND=" + ${BDEPEND} + >=dev-perl/Module-Build-0.400.400 + test? ( + virtual/perl-Scalar-List-Utils + virtual/perl-Test2-Suite + ) +" diff --git a/dev-perl/YAML-LibYAML/Manifest b/dev-perl/YAML-LibYAML/Manifest index 3c8efc0300c5..02705e7baa09 100644 --- a/dev-perl/YAML-LibYAML/Manifest +++ b/dev-perl/YAML-LibYAML/Manifest @@ -1,3 +1,5 @@ DIST YAML-LibYAML-v0.902.0.tar.gz 154806 BLAKE2B 8a4bf50eb36d17b750395ccca42deded1396849f4089859821e5a42034426734e3adeeccced403f1e8f3d9f00b73f547228f4aa61ad71169ff3e5b5ef6a57f07 SHA512 966f39db69eb0343311d355c913ece4f598ffb9bb8ac10090f254bbaaf940eb0e7ec05777a72c149eeb8be81e26757300224073bf6d95c55d18586ff9a16cbf1 +DIST YAML-LibYAML-v0.903.0.tar.gz 155029 BLAKE2B e0c3b5aa982b3c277898314ca4d6286ed630f69841e702f61ea34e58c1bd93f9df3e343024390e4daaa26d31ebd36d909c1d7f28f96271db82f27e5f7a096bfe SHA512 695b43c575f0a23896e52be3315416f25033e247b48ff04f7736ffbc75157ce7d6c196691ee378eff1c27b0bd8b4f3cbc225c622110476dc80c5ba818d6a89c7 EBUILD YAML-LibYAML-0.902.0.ebuild 426 BLAKE2B a8fe038904ca82e46d80151ca688abbff7729943a148c6ca85ba6e1aacf857a38d9fe42539a04134109152b761c1db1fbba5e80e914ff3ef6499e48b0c8cc563 SHA512 d0acc496604e703a2655178e6c8ca44828f594370693a4dc348ebe121380a47cfba6cba242623adcd004293950762a60ec18948fb5ba2d2d2351032ab94ecbfe +EBUILD YAML-LibYAML-0.903.0.ebuild 434 BLAKE2B b120cef99af40339ba1be90b7de678b2643b11ca01b670596920f6d92e5288be880140071aedc4b4adac9ceade8b9f892e388243fcd8f9363f03456e900fb3d0 SHA512 9096a4b60f4cea463ccb66529b58e158cec98158d2577ba29d0c6a3011b1a27c8aa697606e01c3eac2351d8ff51ca61e95be35db2e2c361f723f21c5127cf965 MISC metadata.xml 548 BLAKE2B dd31d97ca15d4931b8f6dd60cfd53f344927cba19c19394c16d04a5afa3df24f659259b2480a03b70f9ac07ec59aa760a205c6a3ae73f5eae4e6ca1681515568 SHA512 47abe8b55e8cdbcdf53e6cb4d62a7a6158c5816909f9c09bf158b82045819bc7f1e476e6e7a48b7ebebb0ffd2b6cebced980d8bd7b89e554e3f187e8b342e720 diff --git a/dev-perl/YAML-LibYAML/YAML-LibYAML-0.903.0.ebuild b/dev-perl/YAML-LibYAML/YAML-LibYAML-0.903.0.ebuild new file mode 100644 index 000000000000..41d30433f908 --- /dev/null +++ b/dev-perl/YAML-LibYAML/YAML-LibYAML-0.903.0.ebuild @@ -0,0 +1,14 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=TINITA +DIST_VERSION=v${PV} +inherit perl-module + +DESCRIPTION="Perl YAML Serialization using XS and libyaml" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" + +PERL_RM_FILES=("t/author-pod-syntax.t") diff --git a/dev-php/Manifest.gz b/dev-php/Manifest.gz index 13b911f7f679409d7d26b163370989409556264b..294511e2677cb0d87eb0a106f1ce8f590656946f 100644 GIT binary patch delta 14903 zcmV-7I>^Pzl>y3?0gyWaQ6#ZF5CVVuIWY7fyB(!0!$+_;eUIQK22${k#hN)k+^Uh+ z2$&O(KUVfT&dk0UH~VVEw&}N7agC1Agp}s=o|jmruHjNCeuno8_vP*L_uqc~?O(6U zR;{@@Y4&Z-kt!yXd^fRl-}vCYLuzn9M_dVawA1Von#FlAs#LqfJ*>}dEE#L^EMd0M z1YT%QGsk|nYJYlqe0{=M|MY+K@X#LTU+*5*Y5lyry6YTmf-u&P=`vWBdh%ta2)fBb zTOV<;7%j8^tP*Aw)-Ehjt|MfOFwf}iV%bXCw)n`OV#pS(S-@Pfb1XcsMf@fL1J=la zTk)3lZSDec8ArwZJ--})JJx9w6ERV&DJ}NE;hWWTCv#l@A1jEPH2{AkYP0v6*?GhF zWiyH!Bg+schSe%|!T$H@0q6mYd+VZKzNZcbXJcaWf3SXkS#M9zZ>ObmSJRu5B>`Ah z^9{Gd0;U1$Gv3v6n4#hg+3bYnnOqvEJnHCU#va{Db#7BIhfqvUuBPSO&fb?~3jd}R z5Q+uN0e|wo;uzBcXsmzbDyxq@)@A7$Paw3KF@#{TYS}t2pda?eu9mQI91^Ekz3jF4 zcbE_RfkW@u95x5OU|W0(IFhO#5yNU}5@BKx^|FUY4%aP;&}1g)cOPts?cQ2ItW2N6NbD5WpDcgtYH|&L8k^c&8ALKb zEtT3f#z%x8%ywrhux+q|Y%&kL10a}s?-PjJyR-tbZ~NQQ0bXXCJjX0Y;4O6$--)M- zbvJWwumiw#1*CR9^ZjvR#uKcwW$>Bo#H=wTg%hIv?xxn91tA2a&2D$>4t@}Nj(BkO zPyo|dYfNFf@_v8mUVeUl`~EL~`^y>YuD+U+Go#13edaxZ4{&PMHiZHmS^^-kVH>}M zOJw5`$X`sulL?H~;nO|UihH||2&8Q$+#)p>2Vt-~lR9tfw5*AL-*XltX?8e3Fkyqg zt(pO<`fM%Xa2Ra?+X%27myHu!X^FpBTL|5~_DLAvA&3){34esK#AI;??_FfE00Mas z|0T281rPy$U#x#II+YP?(w^d8-FdY`fE%|7H#Im#tBm)$thxY;-17vaqm|F7M ziK7f2k?qia*TP0ayLX4=;R-Bw0zVuOir->X2J*=!THc^d2m}EZla3R#tM69rzt-FL z|M|_=fBTq>48m80HVY{$Zi#&W*LyCp4i6UaAT67J0#$)@1Mu*V4Zt~xgc@xT{{@=k zgn!`%tJl<^OC>};Gr(@bhV=<(SUodCu2_!8Dm`k#h2Ivy5XUVeP5~+mKFoozbz|wQ0igmr1@H%fEobO*?*KB9tmLu5I*(O2{*cIz zGQt=&*c0HyeXwZXe)HYUqS?!$d5e;aW1xiZzT9)v}|5f>d6K)2Pk57Oj1O^ z>f)bZ?9%~8AQ);0Cy5U0h}rRIz-r0--<}GzgfxQ&Cy?*pT-A^I%WA~zI#Sq8*}L8#thx6vcz(&$517XR&2r zHRAq+E8iu7b%F@xLBo#VMX+tw2un@{8I_@qZ4m$-!2oA^xR+pp%ov*TIz}3|RJ#ieoJdyn;y1+7!rjQP@eVB-W3> zUwCy$5N4&Eyn%%i0F_1rI#J6x!mMy56wC$siJfLPq5+oJi4&fmt%RY`vW^W|&H!NG z2N*1i;B+K|#pA+wZPk&OPOK)Zu)&vI!O^h_bjad!mVeH+v(bU#hS3VjOp~V>w1KF% zslQ*mGx}cJun!E0egadxo(k-ndjz<8(OM6o*gs^kwro4 zA$=1{W+3LRuPz57S1ov3P#zMEsh~dzfrJ)(dSL>re!85bu!+jt!|vIQ5+XdgD??K% zw5;w@w11S)p4LKARv%)84ZDJN3J^6N|5r2u(9zgrkrRS$Lh=KBjyMI^92G6C3Icd- z;_(*_Lzq|-5p`WJ{`u*peQICcp6;Ij$+MxIsBEcm5ennNAuK#^#}>fjjtlag0A6uQ z&aj9CPzyRuIHbb*fQu6*QMqBlj1V7(Lh;Z67=M;;5i*PDl}g5^x)NVN@l>WBCE!3C zJa1jR)J(xE4oS4dfOK399Bu4qT_H$f(gG=qhnn`LIa~JColbBJ-vQ<{``DiuY66@f{ThB%3yAda5zGlw2jH*;SVXvR4WVS0mWM?H(!*MQ35rj2>VF8P zh9D@)(jK5Rl!6@rudh+z05~0iXv4!2I!02OJvq=$r_jX_fr1^4RYS0cK(NUW8Q2^& z6rAwrxs$s5f6qVMrpgeqS0uBb3$X>+wc=FOkJ{MWRpduQTxCtu)vrSB7&{e%%pO zmGMP{T4GSZD2pNmiwRF)Zy_&0IFQw~R3jDQP||57!3&*>Wr|Xu;t59{Itb%w>@kMf z*U%yRwiXtSpX0=W8zc+i?X+I6PmiBo$LICXPHR?9C2B-{gT5cYW=&CN(SN%JV$Oo@ zbre7}Qxc5l4mt_qU*buYdU%a0x2y;_MY`g$kg*TZ-yKy+FXE6GvVXEPp|gR^k?F-3QE~Wfki92F$%%v-`WpGdC-z>NH|z=Zq-2N^_G_KJGKP%Cz(R0@Ixi8unUgWik{=FduEqe?IH zI*5C?3+}K*rIIm0#SGb~=Is(LgGJ8QM(BZ3NyDfvjYz245iAy_h<`I%rD-uwNsXqG zo24TyTTxm{T^nV;h#OEKh;<)EqFhx8@LmNoUn6nVMwTcMv2{qu77YdF(-HdpUH|d! zGHsL4Q>&&2BUyy2nos!9z8n#Ss%&k-46kAVm2MUDt?(x znw9?|1g~rM(0+Qjdz_zU|MarnQH&Fp1!Sg)I%`g7Nm$OB8GrcFQF$arg0o%qi(?Sr zJu(o~L|bp36YWg2h;WVxrkYWMGSO}r_$u!ZfO!I?B@R~ydBm+tTF`imGeVM#ple-> z4d&8|YRbf|AlA?cr&O#dGeMV)jHE>!p(rZj^B^P7g9#z@yl@UcSJfF-im9Wg8$u)5UT^5IxVR$@?;1QUl9;%C7iaDS#~nyUNI9m#baJ`e>}6sej;6`Ec%1U?f8bPkCboK69r*SV}aoelsHS?J{>;RQF& z*gu9c&}48nm@LqZskCO0c8GJ;Nf1~QpxM~Hl?R>!ETaL2>K-;$BB_FI0b7oP^M9%3 zV^K5vk1X=+2MCa0yegQg7b8PevGRy|gXBl{;!!FPY~6|9mTXZRv*{2J0Yx;e9j&0V z4;9SASNWfXN_GT8G(evVhUm8wI|lYu5k!1JtSH?XdQvUU1a)+7v+Nw_wHo)I+QWZ8 z-z5L9D`vq?TT+0Tsl(pFP zxp|H(WW`$}X1kH1>{c=$BY|%tY*A{lBmUD+&Fp}$p%PH_uBYq;Aj5W*gMR_w4LfWd z+*kyg5Z|xZ^Z0Vc|En_JKrIqO^${RGBmyc%5Xa&P!8{6pGkH~DViWI{%8uZyXx}iD z&thrO1aPm$YBc#^K;w(`E6eM&??4%AL##5#86-MB6_GZa9k;rkmgsCLXJt>t;yW>I z9Eb0!8=eOvLv~oPHVlujRDU+8(D^-BT=VPzY-ES5T2h0Hc^L4KTvt?GMjZ)6TNOQo z?UaK~FmYnN%&@NVZo&G?)7$;s4TPP_rxy02)1aliJ%O7SsTeh3uWT{P$)-dlftQ{~ zr)(7w!~0|1@J@sNJu-`tr5O+i;_6cIypCNL%fLpX>PB5__R>U?mdWKn?~9r-l8yQfJe@h(-Ab9U>hSX;ZS?_Q3j~E(}yR$##3K zJ_eN}?Sed;N<4J*uw0lJ>ZhugRhbHgdwhxL@qWebp04W!r+>a4%e4tD;qg?hYIlSh zC1lT#PV`G(To%d{T@qD_lhg;IQ=x&;TOEN*wzOfQL2$!-qY3~}u2qMjJ;!QT=_T@x zknjj^1-B}`FP6cWud6lJbaOwVjy?$Ib z$qYo_HTR#O<+wA^TxU+orotNePgbkjkl9!jVi2I%MFWMHYR5vNVJKFXw3^HTzE-dT zq9H#M41cl@U8!g{1hg1LrDIa0xT#WjXa^5S)~R5Nwsd| zmftPe5077-f4E7QoydjI(+d2t)dmGr9ts(OXnzaDn&^~aRdCjcTF_&{R*y3?qf<#$ z6ByM~D$kHqI{?<`WWP&H1fnvq3W|iN5-F#mM#!MsI_VSJo!8^cIaPL^MXc0r+0m21 zv0a<^hS-=wGa_gxggxLcWAXrAQeD*6FB5YrJeK%wRE=Em;pET{!~}R8qEgJd5&>`` zh<|HRGASrvrApv>w`8B+-kv``U*d6GRWUPYHlT?|)*hZk*oM3Y0y+EWDuEfc$p5Nx znn=jMRrNs1utP7n-2;N5@_4l;2ALIhHXC|D>2IeNORqEK!Un9_V4NK<_7@uy-L*%@ss&?EW`pUb%hyA;U_QT!y`%NonKD9UT4qX)lRp*iD*aCwfc*Mnq zRP>w91$)9Npbuz5R-8xmz(%zYe+2JR*+fzg4B{2L+UT?biUGDsc(dV}N{#(yfT6<&*N@;WvJfUFv-r+U9s=aK}nXyGuF3bzVV zJaa}us5y!l6Ah|rE75(alZ8?eBQtuO6?X(^*y~bbw$mvPE3aS-$M6<;;tfyXA)%`K zBV>5|5w$+~t_Tx$M&%N@AY_RnQx)I@+E^``dqax*lB5h#!GEo%*JQPdRVE$WGRw{L2xrkMcs5|$yK^^A?R^T$2x{Io~Q(c?#V@*XxDe$2L zE1)|s57n9j>+J$?6}c_Kr+<1UlL&XYEYqSjT2D>m(MMDG`3pzN0*8s%D zt=;>O`7qQ*_i?e5&KUZ(%Ozgfj zI5P&Mmkvh*+hWGknhjS_B2#5kXj-s;)v#*G zgyW=>U&4->fHL4T#ghPe3E`mnd#4t(j%Ep}pwC{}$n29bY`z!g{Ppz5;drInF_e{t zUSUV-#t9XuxdejI)aC%Rj~Kdxvx>~26fuRIgT8OWX@BgNR}<@yE4KNq((bIY2eCtf zBPz(bqv4{e&jdsXD%gVRLEBW|hZ+MNSNCGu;D9>Td-=TzcxqqXK7XvsHDv_;KaYZQ z>C46r6W2@f9nRTWs2YQz;RBeR982p6F$MhKv?-$Cp=NMhho_bxO600of=aQ6`b$fQ z>S9q9^nc;W9y&a93>aFtFj}hyW2`EnPL(i1U$(i`Re~x~#aLF*j)PTWFJn`eKf-L) zrYup0-suckn!l)7fsIx7l=!eOJf4eCUtFm;3^F{!%HgFTo_>IXsSvbshHAjC%1p96kF1=LO5K0<|XbV=pS zQYE`^{EZ%Q%6l0^z*5!`2~LEEzKZB6eI$SeVjK9U)Dp_MgC|?_1yr*Qb5n_?ufJQc zmw$GDzwU1+?bXcG&Qo_Zes^_HS*1tRyuUym6*DB*_F5`&6a9x;ZB@VOSaz!u1%Kc@ z%aH*`3g@aWG9IXSwF$3+$u4*u`T(5tP3Bsl3jFL=vtqj(0_*rTCsjWBuBM=(zQ&3< z+QRQk9>dBa0*X~&DK&!wosHt%I=Kn!zw-RP2*d_?JUB}KMzj114 zi3n#w{MZm(a8E7U*To2-k zI)1Zi0?~1F1&}RPi1sr0VFK}`RzT?76*#(7COFf;7BBTVvz1xFmM?_{MAeLRMt@Q3 zbP#+gspFa0<4{^?4Cs%sTP;7TB0#BvNk;j_tf4HL1mw{1EyLFcBRV>af-49N)=TVF zQd2Dj<~R-l{CKSCvK3Cc^t<(X`8Zt`35ZTz>t0pXEi7z@pw23wT~NAUMLZffvQ9u? zK)fX+cj-hLTR@^1%?Hx?Wg~1OWPb<_u4WZK2Ut0gedy2_G;>pD?3#VU%Lm>a=5#qH zvBn7VLWbnQT?t zjB3f*N=%*TqNAOvDI#io@KKY0OlM_`x-TJRGi&Y#t4dVY@FhtCHOZs;oeEwgLjm+O zw{q}m#PcevyV%$)R?Ubi7cy#V_d4pv?K7dLpfOaIqDDxizgc|ZDNx7%;&3$-5y7c=(Me>Y!wXc&xsaOh~URKzhvgajs%|IwoQ-3>@H{-vm*Hsa% z&i2p>BKHJDLIJD@TU}LEAxQ;_S*6fhi3GGNL9~OqkXNH#Wke3a2&eJyS8UC@8zVb$ z|HT6#y8tKF-zb5B;R=~`R&9B29W5<&o@@=n@EQ)}k6|5{rpkZ-E9*dbH7=td4eELi zoCWt$UMwUX>!AjB6n{Nc3yO|8ov8s`b1KSKgN}9Y zm+WQU)O}u&45f&CP<1}~F|K2-RCOw)Nx=2+N<#%)3jZu=sDE#>s%jAWFzs;v9D^n@ ziG>r>H1Pqkxn^n|ifWFQJN2Or5U1$ujGzUpn^@r#kX#Q+k_Kl~LYI)LwI1;n<;t+G zq?T69tg4O<=>aDK!AgTUXy%u42&|*4s$Sr0bkLHO2qvxr5PK3YrHi4rTeDkQ1~+i< ziPg=h+Hvz9`F~$uKf9Zvyz7e9gV|41V;*>kPd;rqK7Iz3P(jX&(sZ_Z%+?5HF@@0y8@$BO+iCpt(`&-K||KSB{zs@cI$*$ zr)oGG)Kpc*z|>Ilp0c4srK=DILK^Ixl`070I*Xd`RVl{ft2`ew#(XS04*{P_tD)@! z2AD5&%uT7d9kz=9D#o#QMx_-|;n6FR$e$T4lZM1#E!q2Cm0N*jK`qxaoxsMN2J~sx4J14%=dIJweXcDq5T>N&=pok`{ny6X zX^8>+ySda)S$I4Uf2o3>&?Vy}!GenQ@H(!e@x^R{t_F zUa1NTZ$VSIq%jj+vRc|0#po-TQHlny4X=YrFTv16G@97c&`>wxR2FsDw7dcRHfn8K z$9W(8I8TVXN)`sPb3l17^<}Iii(`({zXTl);V5H(-oQ;%7T7@fslr)R4gr7h2t8s^ zRd0oAppxb_M%8I;{i8p+QzqMls=}$29#fO3(0u5turgIiB5IG5<#&tr%GW_A0hG%oIG%U@-DUaUA0211v+c7uqo67!w4~Vc`NQxU0HysDPz) z)j#rSVoK}1I{)(J?k0Sms#$=YrPH9O`e`kV+E=$qZ`7@Ymn6WwX$BXagN*nw!cccu zQ0*5X9DhVPrqZ+?uyB(lFCTx0BXTxkH#qJ!V*!5*FjaiB1#DHb!g5!Y;yTJ6S-sZO z*qx_B*+6Ww49AWEi=ItZpB%QD5hbY4eT*SQvY~g25ZSQdDhk(_lXoljQ+s=R`GfSV zf-zXzwYfUc)-b42U8`!ORlJG`9T0T31U0EyC5B0icUScQd27@?m(+j!qH~PFN_ACm zCr!&z2e`z|&|C*I_OWnq6#}xsr4@EA>Di=ebU;jfB-<-0+NJZ!CO)S|sjNaXua-o$ z|JYH9eX6i%MyixIFggk#WL0;xl}44#O_peN4RC|*XWKs7^*yHmjOd5ieLNc}Nm^2{n zn&hK8j%JUEjD*BvppvG=S&R@9@i2KlkH6G`;C8BKhYEj35D}`>k8^dk0}z$fsdyo^ zP|6}5C z_pA@mSp6ZQS-L!Gzaf4MJJp>IcQ4gPKv=sWs>Mb9?!8_w?!E zpX+sQ(a$GR8!O&2m8{M~CpE`$bKTxrED3R}tf9e%hDHRbZoVp6s7A@9nUvC53hD?H z7c?|Pq@)-ZhED4=rKqy7e@I!4X-tyxMdb`;uhsbVc})Z5rkMyu6DWf-Aen0IQgDT@ z)QLOsPFb$e74G0yJ9(fARjz3wf#1g|qEj+*?qR!zf5W-eFyr_Ta0mUY=}!n)ReABN zCF%el#Ky#bzi>aUm)D!QpisYfO3~`fO{}mZ71ixOfY=Q8W*7Kee?{Twn%eq^RDNhY zr&9$Iu&S=LrSa{^gbYBdVU^`QPS;E}S#w&7fnVwXcPjm_o~+>okmAt2kJG?ygGcGi zPkD%-ZWGA^7m4M(;DGn4MHp+bY=k5u%#Q%xRD)O4Cu_!WqRj^+&6~v!8peee=c%%D zyliUrU>u{WV5q6(e^})S$V2qNyLJ2Wc6a~!2TI-OpkZjT5$KVdx*X;7ZUK)uC6(Mb zgd@D1g(dW><@32*RY-qTihNcizq%Mxq!Z4wK$b1+r z%ih~{+O|$=2jO_Do54t8gE~Zoja1a=QPt%p9aXBFx4^|TP2hERjltCb4>hzJO|?2^ zkMeL>GeDzRomGX7xng$!Bl2eP1Jc#X)q*8UrJAQDdwuzI|8!Gsb|SM<;oz3tMkCnO z-yfVNs$uDi_}-J=G%W&9(vuA}7=I*HUyXzi%vz&lN1mGR9vg7ZB54RrFt8K6QQ3es zG*XZ!jaG*T8lYZ^iaA{GQM1r+MuNa}D*T&CLzrQm@Sk{+=`ZNCx1+=4<>}$>rn2SK zJKe3C8PI96fD&~CQ{GI^)D)jHmAx}agfV%stCtVh0n&a~``&c`G_2szg^ZJ$EcL*TC|a zV`2_$%^p20NLvDFSIdcN&9FR;@p3wh*g%CwOtJ-8m8x^hZc!`vc!dUSfDQFI!k3FpgB-V6C)ITeb)kU+mIkG*P15$W(ahO!sh&oD**XcF@o$4vo zs;WGda-4HPi?`-8;aHHkEKrD|XBsGBloHm6I^No&?YssSBCAvfjDON16p7m+F^dUR z`VDhb&vyr8`3PmDTgDCW@0ri5Hrn&s_}tDi;JRRVK-WlOpp@sr1tnFC%KX(7v5@T+ z`&;Us)$Yz?eo|%0hOH9gtlTj>BB`&sFQe(@zR!$U)Zq5fwpg*8U9+CoMmaXk7bQ4C zTG;20^I-6fp%`W(vt@8x9zuK;q;SEy<;i`8KW6-==wO6b5aiAjL5PuCJWsrnN1%w(t#F~rxn5^ol zG(cK~Ng%j-%+@}RE}$Jl>fOPD;D)=Kk5}^H`F{O$_xAIRP%x)K5qPW`kD)RSYau{% z&6U~5NF}4e_D%^|Vj&O9TPgRVoT!hX+knsl8-cm0qYR|hI)?N+h^uBvRgJO2Luc2R zsiUk1$A2pPd63R^SD^sJX?hy0pY7oXjxwbPHDsz$(prrBFClgg(XHSbiBW~UST z9$97lRV@isQ=sicz4F9-3sLB}ti;#6H3Jbw2-{K2GMb%eBu3Ili+7vyxar!2)@I!t z(s}8iC)G_qy3k0&Ns>mXDR-rk(E{M3Sf$2`rhm}3B8da=X}Fy36Tl3|icZI3L8+mp zmSUA<c1I+4)e^^47gqjwfv5tZ*Gnggc}sL$#^4%!dGB+dfCF2{Mx zPEkYNdl_yo=nFJfb9Jriz58MV8lTTUYEsA4Ty;ofue?c{x;aJdY{U}8LPeR*{n4_m z$A2I1UY;HwZhI{Vl2?)CR12)TQ6NAX)?_5lA-ZTL_SAM_!|*T>RavosxhfH)OMHro z$qg%U+#F$4WP-V3QE_^MmJ$0`C&E%Go#KHo1Y-6jW2C_jI@$>u8V{#j zhm4(3)tF-2sX6t6Wu8^F3wuqg*h_>MYJcwml!M~YfY*_cAbeeHm zM?qrT$Miqr3u01tg?zMn_jix$_0!WnK=8(CuOfAMOh;1`sh;KDn#igYliCu9i~t4eph1vB!8Sva)zLOJmV>A8N|S5Ia8Ye=%4*QGkRF|^ ztC&CWL`xGlg6{QDL%IsEG>lC%#o)0TWvb!o$;SB6`n{~zr!OyKeR_J<)mkXlo2sI4 zjli0Lr3xw?zppvVUKj~l?kLMhI)ClRr~?)5RVBj;#vfIN44ui69)s|zLX82<(i9b> z=+t#k`0HL960fEt0yyiD)RLmU0JxyetO0;=y>e!?sDV5{KD4=Er8;MhI(jAGq~bJT zJ01NsTSu|VQnAvy0>xJy1RmX$PS-<$W})aDhlgB)$R3a{x#xg3!w_+2d4HIy5pC0W zVJOylH1c&7-+q2R8(%r~V<5J&%KTSxgd}y7X0>zbHX_%Zh7YV@)H<__I{0yIQF6iG z^tv#@@_55L-TM*%8Iy<(q3d3)cvM@g^&c(U?{XwJM+=(s083PNng(=2F;8&PF3Enm@1H!;d$U5zf8qx(q=*3d$C!eN*RGnuI_c z)1WS+npR~l5KgFT@iS>#1zSbEBSzhoOJl~s9o^>?aDt3$R~Mu1!RhSyY*q#7$S}ly$BbbCEyFNDvD$aBQa7y*(KRMLM^FWYtD3STvy>J3xz$Ju6iB3O1Eg~D6fPlwn;>> zc<<2}wI|ZS1Pug?C^~)F(e$XC2go(S4$YQ9iy$5{!CS-MHOPDNkAE=Z0SsptyjXDihXJs%vjbF}5 zce`m7bWEjjO$TOaD5);0R272?8k9zZ&LJPF5*^C0A;mj%16P*~?HI3P<$}e;GoUpw zSWyvvp7>}J00|S+(0>SfEXTt2RlW+<)qp(Y@-{k)?V+eZ>li@o7jEm+7NU7dU1wZX zH76?N(jArXa+qRNA5%O2_DtiR=TC5uu^wO7AC=>(d7{I)k;YE<@~|fw70#D~iz#C8 z8c1(75Gg6gOaw^k-}7mA-Q2lKf?{TDeCxzcS2gB}^C?%Xwj8fWM4VCMKNEO|KqZ)H zx~%S{F}i@{H^&T`dryzb)7$K!}s{45Ryk6IO(KWlr zxa8AWDfIUmKaCx_R;cLCFr8gR6?~bgxCk#CNL#B3V346Qu;oYqfmf=144$I;WX+`l zWC2(YJuj_@C7ym`9>hf2t?6~BX&#4dmJQxkEn zG*wy}s{j4M{oCEk8gEZ8KYu&g+$ZF+m(x_DJNbx zbU>R(+sW^TL$?2T-th)$pdOo2j(QnjeitKv_*@ItK0 zze3Xqh#Kn3g1~@u-=HJ*7(@KFK~=*2dRMISM&TGg%x9=WPsLZ7j8ZiJ*72Mk!lHi> zECh0CG&Rf+l<^n-qqf=&GuEX10-5nf6E2*Rh7w-3In{^@JN#?be-d8b{!j$x0LN=qd_3uFGATGz$+}APo+M&ca=)a)vl= z>_(+b0<}W;SMjkD=u5{RRrx2}Bp!cpr08UVsB4bVd^TJJs4mDNR;#6e<*9yQ)f0uH zmKF>BQJOD+?`VGY$O`Z^+}+o##w>`(7`Q>xtlHF$I+d9;a~j{#p^?`GDZqq34gsQW z3{VEgDcL5Kb_%2aSpDJY7ewf%_WHVBZqBw&kwN#NH8n~~Q0G;BRXbbl8_4K8^dkcN2(CL*Xs4 zO7|Q)t2>EwZ`@K@lb0@M4}tE8w@6yz1rRw+)>3b3ghuKFac#|E(zw>rkFIsiT2L>5 zrW7vS+v}3*$KeTm+M(h2s>al9H%58bOU)Ko-Q@bPSpuB$6pR)-l(CnLg-F1pGg!%>z-_lSM~EM#<_yQR#$JC9Z}OsT%-3H=P(khV)?TD*07bUAH#? zNE51}JFxevx&s|PMg&eH9Ru?rcuTzm-sq(8a**l)2vl*6nhQ6x%|{&p1Yj;`ACvA# zPk-93bVI1dglEMsCHrbq_|zDOb`%^#7Of_ksh#_}TEDEfrc>poN099G)4$%#I7EeB z&qyIb$!Q{jZZ_53(V#&Q;;Lg8#O7U&q<+%9g+o(WA$hvax9O&N{xTz+Yb3963z%WW zF_KD_i^j9eqd>%|vdXGY5wzxow$tSwY=2F@mINA&SVnk)_d-J4M~;o?GzVg!8L(cc zNL1N!8kmW08ELAC-xBJ&Wdq*UHCK%g36)_LacW&xki2>tRMzhG0w|O=bhmTND)NHC zxN||syS4k%)8p&Y{rc|d>HhYN>QpH{=5aR;%nzy!SqDM8(b-|pBry$3g(T@l0)O3% zGaLa@7ka{zB0LYHT~W`YOS3eg67tqmQlq*@O9TW+g>kM#b}N9w#rSN^(t-C2qv7d((+)Y9SwW^88LSr{L02 pX_WX003zH7GMAX delta 14902 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 diff --git a/dev-php/pecl-ssh2/Manifest b/dev-php/pecl-ssh2/Manifest index 4b96efc40173..52564962d00d 100644 --- a/dev-php/pecl-ssh2/Manifest +++ b/dev-php/pecl-ssh2/Manifest @@ -1,6 +1,6 @@ DIST ssh2-1.3.1.tgz 33838 BLAKE2B 05976ad143563fd9d51be3f8e23b5b22099e351d6f252b612aa1dcb56648dc337b623d2cddf7b9079f3e07c879ca69215a1987cd6f4326f97ba134e13c6d28e7 SHA512 c74d4f699853148b53cdca0eaf8837bfdbdd21d185761606acadf2442e84dbefdb00cde207e0ce4794ae1e4f8692a38ed903b6d11fdc57bca7b54a4250da9a76 DIST ssh2-1.4.1.tgz 34265 BLAKE2B 5cd257de7f3b2408f696d4acc463b981ca691f1a10a175e028beb77bf044640e1bfa2c85b1731096af398ae9920bf05f73e383db6c3f9e0c30e38a008ce70278 SHA512 9ff90b95b8fabfa2a75cf8a62a55e93df19d3e952f79234fc1d7ef3a030089f8b3703412bf6e22d85c7bf5825cf8493a4d97ad51a1600185d3d16f81c72e155c EBUILD pecl-ssh2-1.3.1-r1.ebuild 413 BLAKE2B c7329b86cd468a24274d5847aad083fc67341969ba9aea962a3085489cb70a63e041079617a041328de3e74f383d64b6ee3a0f716c7ffccc98dea2ff69b625f7 SHA512 2b9a74d51691f44ea990f910f3187fff8d7c0a36be6c83e63f52af329b33f6a95afd2f1b45e80da5472a72d4dd974101dc98d03801e46d20c945aaca2a11246a -EBUILD pecl-ssh2-1.4.1.ebuild 450 BLAKE2B 165902b98c251a9b1ea2d419c76c82514ab1d1a601bf6b54b46b4c2ec1d7bf211167c41f130b979bcc6123fbb178d36077e2bfc151e6e2b5a84ff039f4b71d6e SHA512 f7bec4fc14259b4d7eb3342a655c523e627a8fb68d08765811b35b70d205edc28063252c0ec3b7ea4a8d823f928793bc2151db3b0f20e122c0cb0bc93e38e073 -EBUILD pecl-ssh2-9999.ebuild 514 BLAKE2B 69eea3c88f8198b9c81fcccb819b48712236fef041a83cdca4a8e7ad2768f02a0d281ac376315308c08957e802ceb2fbc92843c74c88e682e838041f3bdb8fe6 SHA512 b89c085a688755e162db6d4a8a324e64b66d5c585f3e1d08b75c70205bb61205d15b1f7344ba787b58e8243ea96e5f62f4c2964c71b09d02f40aa0b1ab971a04 +EBUILD pecl-ssh2-1.4.1-r1.ebuild 450 BLAKE2B af31ad4fa75a441e5d69291904f6a6873b3862d78a8e022d5cc2d796d821c10d26177543b2fafa9d09a40a0d4c1c507355a076c1c1fd31b9dd63bbef66758190 SHA512 271daf52fe1d706dcc74cb7edef3968fbe1e54285e4881dae9a16a966be5f2448a42508bfc396f629fef98d2251498a82e6f5a1152d1157628fca9019595fa5e +EBUILD pecl-ssh2-9999.ebuild 514 BLAKE2B 2053721ad949254ac31d518a86467fa0ec738885cdc735ea8c92a5de1d7890fadb5056cfae9a60bb2c23f2253d7d2c20ed4bae4f0a1bd6666054fe6b7bfb4a82 SHA512 1a799b50847a3364859472bb97a80c2cd1bdee25494c31134cda99b8726a2344d10d386597d39ff9b250714762a6b200adf5ac24283f638d05c25cc830511406 MISC metadata.xml 322 BLAKE2B 0576bb512c57e5e2809e3ec24de126d1f42823c1780fedae5cf2998a8074f60a6ee0aae29d8086c01c490623065d0adfd0a18568637875ff46408127a38aec60 SHA512 26fea3796f479e95df152a2d305b5ee50c0e3c44d3d0923dd0451e643ba93788f7d0e31f1d576f3d3fd90880550be4bde81b17ccc13268afa41ba566e7dbf43d diff --git a/dev-php/pecl-ssh2/pecl-ssh2-1.4.1-r1.ebuild b/dev-php/pecl-ssh2/pecl-ssh2-1.4.1-r1.ebuild new file mode 100644 index 000000000000..edea606f3146 --- /dev/null +++ b/dev-php/pecl-ssh2/pecl-ssh2-1.4.1-r1.ebuild @@ -0,0 +1,19 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +PHP_EXT_NAME="ssh2" + +USE_PHP="php8-2 php8-3" + +inherit php-ext-pecl-r3 + +DESCRIPTION="PHP bindings for the libssh2 library" +HOMEPAGE="https://pecl.php.net/package/ssh2" +LICENSE="PHP-3.01" +SLOT="7" +KEYWORDS="amd64 x86" +# Upstream notes say there are errors with gcrypt backend +DEPEND=">=net-libs/libssh2-1.2[-gcrypt]" +RDEPEND="${DEPEND}" diff --git a/dev-php/pecl-ssh2/pecl-ssh2-1.4.1.ebuild b/dev-php/pecl-ssh2/pecl-ssh2-1.4.1.ebuild deleted file mode 100644 index af6d86acf72a..000000000000 --- a/dev-php/pecl-ssh2/pecl-ssh2-1.4.1.ebuild +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -PHP_EXT_NAME="ssh2" - -USE_PHP="php8-2 php8-3" - -inherit php-ext-pecl-r3 - -DESCRIPTION="PHP bindings for the libssh2 library" -HOMEPAGE="https://pecl.php.net/package/ssh2" -LICENSE="PHP-3.01" -SLOT="0" -KEYWORDS="amd64 x86" -# Upstream notes say there are errors with gcrypt backend -DEPEND=">=net-libs/libssh2-1.2[-gcrypt]" -RDEPEND="${DEPEND}" diff --git a/dev-php/pecl-ssh2/pecl-ssh2-9999.ebuild b/dev-php/pecl-ssh2/pecl-ssh2-9999.ebuild index 2e15a59f37c7..34e4d36d434d 100644 --- a/dev-php/pecl-ssh2/pecl-ssh2-9999.ebuild +++ b/dev-php/pecl-ssh2/pecl-ssh2-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI="8" @@ -13,7 +13,7 @@ inherit php-ext-source-r3 git-r3 DESCRIPTION="PHP bindings for the libssh2 library" HOMEPAGE="https://pecl.php.net/package/ssh2" LICENSE="PHP-3.01" -SLOT="0" +SLOT="7" KEYWORDS="" # Upstream notes say there are errors with gcrypt backend DEPEND=">=net-libs/libssh2-1.2[-gcrypt]" diff --git a/dev-php/pecl-stomp/Manifest b/dev-php/pecl-stomp/Manifest index f23fa8f94d08..ad1ebcabf72e 100644 --- a/dev-php/pecl-stomp/Manifest +++ b/dev-php/pecl-stomp/Manifest @@ -1,4 +1,4 @@ DIST stomp-2.0.3.tgz 23518 BLAKE2B f0253d0e6d1bb51d95007ce2580cb4e5a271547b73705d1ab5be36975cd58068e5fceea64b1451e438fb17601c1b1f513f287b189e3d2922747f735a48e582ef SHA512 e34a63d776cb79da7676d200e4aa2b4a9d4272014fff30eb4c07bc27417d8dc4e7738fb8d62e283cdaac0a411a7bd6e06ef5b06171caa629a404601d14da71d6 -EBUILD pecl-stomp-2.0.3-r1.ebuild 653 BLAKE2B 674e3fa1152c8406643f33e0e60f232d4aa8e6868753cb6dfca2884b821fcaa667d6668a0649057665dc21581974c233a312dff0acdad8d59657db1a21abc5da SHA512 6ddbd9eae7704888b2925f71d88bd7aa222f2dd658ab716a2e8d1c12312ade65e3c1ed7f932903bb16d05553b21707e6407021481ec0624d4153db470756b992 +EBUILD pecl-stomp-2.0.3-r2.ebuild 653 BLAKE2B 8143094e4102b0088dbb1e2a014959b52a4e4975d46f4b8b898946a5561c6596efaeb0d4c33582b5afb6f0904eaebeea4f6702b297d6a2cba41f1741818940f4 SHA512 9eb841df81c63b8468fa406c2c5dc1e076f5a4ef3c36febc9154d5c2d9801b7d1c47fbb99af54037cca92a667237b110b058a61be313f8ad4448e4da5634c64c EBUILD pecl-stomp-2.0.3.ebuild 609 BLAKE2B ff6681235f1ac3fe60aff56c2242c07f14feb9f6ddda553a52872fdf83768a70ce37677d82cf154b7be1836a3cfcecda9c51c1ae0835b274172b37646fef458e SHA512 1178acc4f82e9d44bbab42690e7b05497d1e87468da96f3d52435aea559baecaef592045a90b4fa0ce97adc07a57c95320bd3b402837f8bb6bb506be23e45da2 MISC metadata.xml 240 BLAKE2B f60f325331d493a555e53c29c7cf2742a415356da28a467505f1441f3fd790fd0d59050df84854bdc379d19d94a46121216479807975a2922d5a2fefde83416b SHA512 fada9d69055f2be962b95aac82f260ec5db7a3f4392d10f0458a1d125938fa17539f7ec486000f3a95cff85a3fbb6bbf1f6f4fe6c2de7aa420a7543a3e89d03e diff --git a/dev-php/pecl-stomp/pecl-stomp-2.0.3-r1.ebuild b/dev-php/pecl-stomp/pecl-stomp-2.0.3-r1.ebuild deleted file mode 100644 index 4662ba6ae5c2..000000000000 --- a/dev-php/pecl-stomp/pecl-stomp-2.0.3-r1.ebuild +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -USE_PHP="php8-2 php8-3" -PHP_EXT_NAME="stomp" -PHP_EXT_NEEDED_USE="ssl(-)?" -DOCS=( CREDITS doc/classes.php doc/functions.php ) - -inherit php-ext-pecl-r3 - -DESCRIPTION="PHP extension to communicate with Stomp message brokers" -HOMEPAGE="https://pecl.php.net/package/stomp" -LICENSE="PHP-3.01" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="examples ssl test" -RESTRICT="!test? ( test )" -BDEPEND="virtual/pkgconfig" - -src_configure() { - local PHP_EXT_ECONF_ARGS=( - --enable-stomp - --with-openssl-dir=$(usex ssl yes no) - ) - php-ext-source-r3_src_configure -} diff --git a/dev-php/pecl-stomp/pecl-stomp-2.0.3-r2.ebuild b/dev-php/pecl-stomp/pecl-stomp-2.0.3-r2.ebuild new file mode 100644 index 000000000000..86c4727fdcd0 --- /dev/null +++ b/dev-php/pecl-stomp/pecl-stomp-2.0.3-r2.ebuild @@ -0,0 +1,28 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +USE_PHP="php8-2 php8-3" +PHP_EXT_NAME="stomp" +PHP_EXT_NEEDED_USE="ssl(-)?" +DOCS=( CREDITS doc/classes.php doc/functions.php ) + +inherit php-ext-pecl-r3 + +DESCRIPTION="PHP extension to communicate with Stomp message brokers" +HOMEPAGE="https://pecl.php.net/package/stomp" +LICENSE="PHP-3.01" +SLOT="7" +KEYWORDS="~amd64 ~x86" +IUSE="examples ssl test" +RESTRICT="!test? ( test )" +BDEPEND="virtual/pkgconfig" + +src_configure() { + local PHP_EXT_ECONF_ARGS=( + --enable-stomp + --with-openssl-dir=$(usex ssl yes no) + ) + php-ext-source-r3_src_configure +} diff --git a/dev-python/Manifest.gz b/dev-python/Manifest.gz index 6681caabbf993f07d06a7654b28e41b5313f06e8..1a7f1417295499bb7a5ed372bdba4fd6d435f3a2 100644 GIT binary patch literal 274677 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�{MbLgQw@Av?W(7;PvW*b1df4hKZ@VFWn#6x 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 literal 274589 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 z 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 z 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 dG%O_*kSC~GAf=I(S@9}=_ man/just.1 || die + + doman man/* + + einstalldocs + + mkdir completions || die + + # bash-completion + $(cargo_target_dir)/just --completions bash > completions/just.bash || die + newbashcomp "completions/${PN}.bash" "${PN}" + + # zsh-completion + $(cargo_target_dir)/just --completions zsh > completions/just.zsh || die + newzshcomp "completions/${PN}.zsh" "_${PN}" + + # fish-completion + $(cargo_target_dir)/just --completions fish > completions/just.fish || die + dofishcomp "completions/${PN}.fish" +} diff --git a/dev-build/muon/Manifest b/dev-build/muon/Manifest index 41f9b1fab738..349900f79506 100644 --- a/dev-build/muon/Manifest +++ b/dev-build/muon/Manifest @@ -2,6 +2,8 @@ AUX muon-0.3.0-fix-summary-call.patch 931 BLAKE2B 6ef7a7447e2149977b0deb9ece79dc DIST meson-tests-1e565931348f15f3f9b654f46ab4bf5fa009ca4f.tar.gz 229885 BLAKE2B d53bbc854da00c1a91189f6c4539da782f4ff49d2a57d86c56b9512b8b832f32d094d750055bb0602fe60aff58821e10c5f00663be9479420e29f75fbfba01c9 SHA512 25fdb657a17a33140029600d84cb3182e635749b99af85c432da611349c10576e15d2f79d1f9eaa21e3359b65dd057ef388925c54ebdc9c072e4b24bec3be8f8 DIST muon-0.2.0.tar.gz 510533 BLAKE2B 6ec67f8875e84fbc2f23f412825dd47b820cd44e97a16d9ac0ab0ba9db6e755a604b66b79d3dbe13d99440daf21c2f0ccbe69661b1fb3c7df3f636c61a0e4dcb SHA512 b2e90048756bdc26bdea24fe227a87ad4d0e57176e217e22ea492a55229c62e2a70243f60af1e162e2dde8468fdda9662a32ea5cfadd69fab95a83499efa077b DIST muon-v0.3.0.tar.gz 688544 BLAKE2B 6f5e9f91c1221135d8452b54bd781fb4324586d88503579af243c9889e17330d3d746a0e9fa4480a98d36ec5d55d1c335813bd19da81eaf2ef40dda42d32c418 SHA512 10d8d3d8d5df3898de22ed43fef234766e1884561d797a6462d614fd7be0f22eb7bbf40e096fe44d3e58f72e1fc631ef510f53a1e8ec36d4602ad7d5fe2771b3 +DIST muon-v0.4.0.tar.gz 3435753 BLAKE2B 0eb685ebd22a6314cfa02ab716ae8a1899363d1ce4dc6fd0b42a3fab1ff62358d21abd6c6d2682a78df1fffd2d6cc72abaacfa7eb5174a10d50bdd5dbbf0825c SHA512 2ab817bfe886fff5a9cd00935f19c7c73cc4556aa11a538ca496bdad4cced4dc1608efd05d58b6971640d0543bd7d4486185ed93a26522690cf2e1d348342bb8 EBUILD muon-0.2.0-r2.ebuild 1055 BLAKE2B f02431d85724eee02653bc7f439717687320a88a4d24fff757fa9140dc06dccb2a42d39931dc56ffc7419e370115807b6502753779e119a8e02e5b0f0e3f073f SHA512 dcb0e044e5899ca63b1d421d4e4874ded32a73c792b2f4861781a9d0a17687d57b6a8663f427526bf378c9b7fd31e365d358cf6d33673fd35a0e39159d76d8f6 EBUILD muon-0.3.0.ebuild 1536 BLAKE2B d4d31874a139e3ed3a44746bd04f08169e693e9297fde56be7ac35d5d83a128736d4f4f20d711326cbb1434bca921bb1a0212cce6e28bc403eaa860eda498de1 SHA512 329ca2b94832507d91825fba071f7946ab25f9ac512085f547da45e98af4f34e461fe2e3b7bd2e99d4cebbcf8ec215933c1c2e159eec5305e1a29bdf040f096a +EBUILD muon-0.4.0.ebuild 1473 BLAKE2B a9bf946c37397e112cae9da3c84bcf8eb561b43be02e591dcb77b50e0f85d68e9c99bc3154390ec0805fc3bc2d2e36792e7240a3457ff95af3f93c313d690cc5 SHA512 333119390c1ce7cfa306cfae4e54e6f0ba046085c482b62e62c6687efa2e6f81d63c18cd61a7d73fa538880769a9aac5ec0cfe34d8cd0a57cfa775890f704b95 MISC metadata.xml 569 BLAKE2B 8712259e11150e15ad3e4db4291bb9091fab91cfa0901a9457e8538d13ef83fa3da0f0506257f47d4b43b160b1ac9088fe7dab1cd749300cdcd22a27917801ab SHA512 93910e7b6bff19ff5ca1a5987adfcc90eab1b90434c4003622b416a1a035d379ef0561f81f7be4edadcaf07fdbd491dcf0c52952f940d8545e79d4bb3c7c67e0 diff --git a/dev-build/muon/muon-0.4.0.ebuild b/dev-build/muon/muon-0.4.0.ebuild new file mode 100644 index 000000000000..b9d58a6aa311 --- /dev/null +++ b/dev-build/muon/muon-0.4.0.ebuild @@ -0,0 +1,67 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit edo meson + +MESON_TESTS_HASH=1e565931348f15f3f9b654f46ab4bf5fa009ca4f +MESON_TESTS_DIRNAME="meson-tests-${MESON_TESTS_HASH}" + +DESCRIPTION="A meson-compatible build system" +HOMEPAGE="https://muon.build/" +SRC_URI=" + https://muon.build/releases/v${PV}/${PN}-v${PV}.tar.gz + test? ( + https://git.sr.ht/~lattis/meson-tests/archive/${MESON_TESTS_HASH}.tar.gz + -> ${MESON_TESTS_DIRNAME}.tar.gz + ) +" +S="${WORKDIR}/${PN}-v${PV}" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64" +IUSE="+archive +curl +libpkgconf test" + +DEPEND=" + curl? ( net-misc/curl ) + archive? ( app-arch/libarchive:= ) + libpkgconf? ( dev-util/pkgconf:= ) +" +RDEPEND="${DEPEND}" +BDEPEND=" + app-text/scdoc +" +RESTRICT="!test? ( test )" + +src_unpack() { + default + + if use test; then + edo mv "${WORKDIR}/${MESON_TESTS_DIRNAME}" \ + "${S}"/tests/project/meson-tests + fi +} + +src_prepare() { + default +} + +src_configure() { + cat >"${T}/program-file.ini" <<-EOF + [binaries] + git = 'if this exists youre a bad person' + EOF + local emesonargs=( + --native-file="${T}/program-file.ini" + $(meson_feature curl libcurl) + $(meson_feature archive libarchive) + $(meson_feature libpkgconf) + -Ddocs=enabled + -Dtracy=disabled # not in repos + -Dsamurai=disabled # patched version of samurai downloaded via wraps + -Dreadline=bestline # small vendored dependency + ) + meson_src_configure +} diff --git a/dev-build/rocm-cmake/Manifest b/dev-build/rocm-cmake/Manifest index 759a2128c5d3..5b2df1939ec5 100644 --- a/dev-build/rocm-cmake/Manifest +++ b/dev-build/rocm-cmake/Manifest @@ -2,6 +2,8 @@ AUX rocm-cmake-6.1.1-license.patch 520 BLAKE2B 4a00b068a3bb330ad2a1b981e6f36f8ac AUX rocm-cmake-6.1.1-no-rocmchecks-warnings.patch 1431 BLAKE2B eedeb63f394ace78c298ac77e920a43616924a475d53154b9e904c44dd0118defc7aa7405963dacbb9d60e49fe1be78533e9896e6f9d92bc9acc48fee6ee806c SHA512 45599dfe29f1800319baf36635a8306b73aac4425797168235be578554e63b43a12b451fc343231d735d1d1bbae073bf1192c4c3292ce1014db8fbb130b5cc7a DIST rocm-cmake-6.1.2.tar.gz 86889 BLAKE2B 66e31b629171a5746eefd83e1ff14826a02f5d20a7b3125e20177bf801fa48526f541fcf9be0c832041a237799cd3d38a3daaec8f4dc17a5c048f7d603b7ef30 SHA512 9c83bd0b69a8bf040ddf9508df4ea8fb5daaaf8720f4b60ba3d6e4cc62b00a7dcfeead40cd37a6343b2173f9cf5db2e21f054661dcc2ac0591426e37ba61d3ba DIST rocm-cmake-6.3.0.tar.gz 88330 BLAKE2B f1b9f6d74dbaa237613bb69270da107a9c6fef72450f69a9f11c25e4912735b54a65c101131230a0d05edb5fd08c4a229b9701a1bbb5c5a53f516660d7710757 SHA512 051b4b2144df8c686c3c47cdba620d43cbc4aeda7b942ee82bb3dfa356f9a540f816cf41f6b8bfeb8004b4dc38cd60fddf1c566942eed63c25f29d5cf4751304 +DIST rocm-cmake-6.3.2.tar.gz 88821 BLAKE2B 0d052dbeef7763a222a6304325e02895147b6433fd1b778bae9fabb5ea4287e912d80b7c54bf8b04f02beb5ec4394e9926ab46dd2f612780571453837e9051e3 SHA512 d365c496ef5f631c27a3ef0895540497dc069c5d3bf8ff27646b76964e09c7bc658f3bc7288b7703dbe21889d3beec2ffdb5983fe8af66026dfc19b99747ab47 EBUILD rocm-cmake-6.1.2.ebuild 912 BLAKE2B e0a965c617856b22bc43b142be1de8a030da43dc5b9c375eabb14de2b2254e6f2badaa80727b2e94e38a85bfff7bb36124a5ec4a9935c6f3c69728be2a5dfb7b SHA512 add66398a09ba709b6b702dd794361202b68e42c1f946ed1d156cf3b7c2dfaea9bbf2c2b94ad1d4b762a0e1ff8b583f1d7a4d1fc4f273f1c8dcbd69199b6a4e9 EBUILD rocm-cmake-6.3.0.ebuild 912 BLAKE2B e0a965c617856b22bc43b142be1de8a030da43dc5b9c375eabb14de2b2254e6f2badaa80727b2e94e38a85bfff7bb36124a5ec4a9935c6f3c69728be2a5dfb7b SHA512 add66398a09ba709b6b702dd794361202b68e42c1f946ed1d156cf3b7c2dfaea9bbf2c2b94ad1d4b762a0e1ff8b583f1d7a4d1fc4f273f1c8dcbd69199b6a4e9 +EBUILD rocm-cmake-6.3.2.ebuild 912 BLAKE2B 4cab5ec571f24d6332a3e93f888a772dd451943892a20f499acd30e456571789aac9b80f646a44c982528193a4ccf3f6cc93f590c11eb0701179f3a089ccffeb SHA512 7f9f830a5cb902c0ef49894ec82059c20465e7546d77e5512e591d58e181ab9b8736e5ad56887eb58bec0cdaed932c41c084b58a3b245124f2ab3a3fe08e33be MISC metadata.xml 612 BLAKE2B cbab269204bacde90025f8f0575016692e4d7785127fcad21bdac56cd3c6b1e5a8b52b4abfefbdb91cf39db9c0a06ca90b1a37bffdb106319540a899d5c5e896 SHA512 d39324e34a7374dfa1fc43aa93d9f6c439b8d6311605b37919fe18c776d881713cc6b874a43428a607be00ffcc8a0b7c1b8cd62d0f6f039b1ec2d255b17cee1a diff --git a/dev-build/rocm-cmake/rocm-cmake-6.3.2.ebuild b/dev-build/rocm-cmake/rocm-cmake-6.3.2.ebuild new file mode 100644 index 000000000000..9044ffb3a125 --- /dev/null +++ b/dev-build/rocm-cmake/rocm-cmake-6.3.2.ebuild @@ -0,0 +1,35 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/ROCm/rocm-cmake.git" + inherit git-r3 +else + SRC_URI="https://github.com/ROCm/rocm-cmake/archive/rocm-${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + S="${WORKDIR}/rocm-cmake-rocm-${PV}" +fi + +DESCRIPTION="Radeon Open Compute CMake Modules" +HOMEPAGE="https://github.com/ROCm/rocm-cmake" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" +RESTRICT="test" + +DOCS=( CHANGELOG.md LICENSE README.md ) + +PATCHES=( + "${FILESDIR}"/${PN}-6.1.1-license.patch + "${FILESDIR}"/${PN}-6.1.1-no-rocmchecks-warnings.patch +) + +src_prepare() { + sed -e "/CMAKE_INSTALL_LIBDIR/s:lib:$(get_libdir):" \ + -i "share/rocmcmakebuildtools/cmake/ROCMCreatePackage.cmake" \ + -i "share/rocmcmakebuildtools/cmake/ROCMInstallTargets.cmake" || die + cmake_src_prepare +} diff --git a/dev-cpp/Manifest.gz b/dev-cpp/Manifest.gz index ced0a8ec0fd2eafd91bdd4250aa4a2df1a8e062b..c436e72c1c411fc72d33e82c86dabae2e8004bdd 100644 GIT binary patch literal 16836 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 Dqx~0mPsa3CNpxOU0aMm5;;Jb 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 diff --git a/dev-cpp/asio/Manifest b/dev-cpp/asio/Manifest index e27601d298a7..920eb4815a59 100644 --- a/dev-cpp/asio/Manifest +++ b/dev-cpp/asio/Manifest @@ -1,8 +1,4 @@ AUX asio-1.30.1-pkgconfig.patch 505 BLAKE2B d5c8d55444a47608f681dfbac9978edebb206b999aa7914b6d056bd18c252f001f58d53b587b2859c66495d6f8c3f74f252ddc9d7c25a8d37a394d843433f722 SHA512 b90f12054921913a6702863a731448e43635871e6fe1cb7baa80e5ad9487501704c634efe25592e661c999cafa61af2a4841add3221db28b1d29290eeea61446 -DIST asio-1-30-1.tar.gz 2842718 BLAKE2B b99f6e1ab03c4da9bc802e04d66b46ac2374f7da9f65dd98dd3da3cf1cf507548ae2645343a63378ab91d665fc6e2efe5c5262f33757e851973534e23291abb1 SHA512 6b5f41479e20500dff6c535d8e3b096e11815784923bb4c0f68f69be59c80d7ad99c7e0380a1de4dd350e6cc6a79315d4645378a9b8d70d9f8d28a17f1cc68af -DIST asio-1.28.1.tar.bz2 3383257 BLAKE2B 9d98152a6cf8b0e2a807275092b23f6198d8175fd7260499be7561cea2e6723c1a8478107315b7163cdc31d6eecab552550393ab3b1cfb686dcb4157d1e91fe4 SHA512 fadd7748675743ba9110f873bf57f2400a5c9c0dc03c1d6cd7f0988bc70ccbbff6cb6140f5dd236d2d874fc82a6f216406e8892808e915aae5119fe9d95743de DIST asio-1.30.2.tar.bz2 3196850 BLAKE2B d902fda2338d9717bb8f2f5d43468c5d0b64591814c3ae3134350650f0dd97bf241287347d324b11d0e6993b1b44373df13305d736df09ad3375ce4976f5bb27 SHA512 2d26cdcfcc0c310e82ab502551b51d70fd95ba4628bd306929e78539299974fc14aa6ba27cf256f1df7a56539cb885012ba02a202ae17bf817ee6311308a795a -EBUILD asio-1.28.1.ebuild 1286 BLAKE2B db9b0ef86a8433b1ee0e1fb751717b5251965293e33d0acf245c58000a9054884ea9c40cf9d2067c8e8fd83334decd017979f908778cc5125d3451633aca15d6 SHA512 7006dd621b1100aeb26022a4c09f94db4599931ae5518242e2a2b91196d48cf2ad7d7b14f1716cc70308da436bde2395730663be97496ad5a019dd70d3cbbf59 -EBUILD asio-1.30.1.ebuild 1089 BLAKE2B 7633d01a99d4e2aaf5e58bfab9d5e96a6565b4a259ee106072e79e68d9c7a5731a91689e08651d3fbc45699549df07e1dbd408be96c8eeaf79ec6ff2c78c81a0 SHA512 22e126155245e4581041b151da10409a25ca2adc2b94c331ffde6e572c700d7d0cc778aef716bf95845464af109ce59b5f190e6273a10dece1ca02054fa0c060 EBUILD asio-1.30.2.ebuild 1230 BLAKE2B e5eb0ea0cfd08f955c58be83e780e8afac0627ea53acce55e15875172ddf63055e5c158845f13b9efd2f4fad7d09a39d82cc9d2a104dea2d3e839268e86903fc SHA512 b68d686f881d4a6d8aba6d7cfef391648102a9765da3d9ca9728be1f6e430b9d835f05b71d8375a794125e124ea6dacb0f725d60aa8e2d32a0114f68a827fb04 MISC metadata.xml 487 BLAKE2B 57785b73f498590d36241612367eda9036cc4ce85baa6c59e45a4c4f0b696f24f7bbe012eef33dd2e29a9c82fad82f75639e55f9c7a6e2e001b7ab48b65787cc SHA512 4a4f9713ea7274f730707dda0f2de0e0c19e50166466c0b8c3e5053e44fa5df02866235cfd97ebeaff15271cce662f1ae19383c0023813d429eded937d9b9cfb diff --git a/dev-cpp/asio/asio-1.28.1.ebuild b/dev-cpp/asio/asio-1.28.1.ebuild deleted file mode 100644 index d0dd31b2e4c3..000000000000 --- a/dev-cpp/asio/asio-1.28.1.ebuild +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit autotools - -DESCRIPTION="Asynchronous Network Library" -HOMEPAGE="https://think-async.com https://github.com/chriskohlhoff/asio" -SRC_URI="https://downloads.sourceforge.net/${PN}/${PN}/${P}.tar.bz2" - -LICENSE="Boost-1.0" -SLOT="0" -KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ppc ppc64 ~riscv sparc x86" -IUSE="doc examples test" -RESTRICT="!test? ( test )" - -DEPEND=" - test? ( - dev-libs/boost - dev-libs/openssl - ) -" -BDEPEND="virtual/pkgconfig" - -src_prepare() { - default - - eautoreconf - - if ! use test; then - # Don't build nor install any examples or unittests - # since we don't have a script to run them - cat > src/Makefile.in <<-EOF || die - all: - - install: - - clean: - EOF - fi -} - -src_configure() { - # By default it puts .pc to libdir - econf --with-pkgconfigdir="${EPREFIX}/usr/share/pkgconfig" -} - -src_install() { - use doc && local HTML_DOCS=( doc/. ) - default - - if use examples; then - # Get rid of the object files - emake clean - dodoc -r src/examples - docompress -x /usr/share/doc/${PF}/examples - - # Make links to the example .cpp files work - # https://bugs.gentoo.org/828648 - if use doc; then - dosym ../examples /usr/share/doc/${PF}/src/examples - fi - fi -} diff --git a/dev-cpp/asio/asio-1.30.1.ebuild b/dev-cpp/asio/asio-1.30.1.ebuild deleted file mode 100644 index 1ce3605ab0aa..000000000000 --- a/dev-cpp/asio/asio-1.30.1.ebuild +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit autotools - -DESCRIPTION="Asynchronous Network Library" -HOMEPAGE="https://think-async.com https://github.com/chriskohlhoff/asio" -SRC_URI="https://github.com/chriskohlhoff/asio/archive/refs/tags/asio-${PV//./-}.tar.gz" -S="${WORKDIR}/asio-asio-${PV//./-}/asio" - -LICENSE="Boost-1.0" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86" -IUSE="examples test" -RESTRICT="!test? ( test )" - -DEPEND=" - test? ( - dev-libs/boost - dev-libs/openssl - ) -" -BDEPEND="virtual/pkgconfig" - -PATCHES=( - "${FILESDIR}/asio-1.30.1-pkgconfig.patch" -) - -src_prepare() { - default - - eautoreconf - - if ! use test; then - # Don't build nor install any examples or unittests - # since we don't have a script to run them - cat > src/Makefile.in <<-EOF || die - all: - - install: - - clean: - EOF - fi -} - -src_install() { - default - - if use examples; then - # Get rid of the object files - emake clean - dodoc -r src/examples - docompress -x /usr/share/doc/${PF}/examples - fi -} diff --git a/dev-cpp/cctz/Manifest b/dev-cpp/cctz/Manifest index 046dfd99c128..a416cb6fb0b4 100644 --- a/dev-cpp/cctz/Manifest +++ b/dev-cpp/cctz/Manifest @@ -1,5 +1,3 @@ -DIST cctz-2.3_p20230228.tar.gz 218332 BLAKE2B c29f2acf12d73387faf0087ef94b8624b5eefa2cf3136e0003e59a6a89b8a73f6de97f1962031ca1b1b1f4f6e888a363314aa1e160ad54c618189ad4a7d8f60e SHA512 ab6a103a6073a8169cd08587d2415dcab6c6e6c005b4b67fb69cc718b8b73a1331c5782b27aa4924aa5bdedc1563e31aa3ac76196078c50a13773d35d8df993b DIST cctz-2.4.tar.gz 222831 BLAKE2B c232b27cbfe5e45b6e1c51dd13c9a35c4a2e84b5d3e65ba6b4afb7683cac967a3b409382664a55d58ac67e53a1cf3dec9d97ecd59c5e2180c0eae4f71462fe33 SHA512 6d50fe5263b66f93bc3f9aee0da395352d0e95187e6a761afd1b82a461c127823fe93e06139e9d8989f24875b70de3058aab6e66639b408c7930f117e1815e5e -EBUILD cctz-2.3_p20230228.ebuild 660 BLAKE2B d18673cb0a17df2ea1c190dcfa582dcc897aca3905fc26fc78d978373fc9b04d78ff22f467b2506de1f4dc85663e72ca272dd4c9b4b16a9807077c84a9e4868c SHA512 eea3dcd221f1613180003b22d0b39ea1a7218e1365f35757de2a8c45c51ded5e033f56b37e0563efb261eab509f7de3ff0f934d2762a6e0e582024698f2f8af1 EBUILD cctz-2.4.ebuild 609 BLAKE2B dfe3184e5f809c5beeebf658468af95b3c9e336bf57602653e60c269946c678557eda1e6d839298c71dd3a97aee5bd64d72e860d654f1ba1c1bd7bef2dafa0d3 SHA512 714c0a7d9c450d1b0a4c7f102e864e630401c6cdaa18877b9625a25098fd63905afef7e4ac3c17cef867f6749518ee38a43f87c80eddd25182ce789d42f51e73 MISC metadata.xml 512 BLAKE2B 77ff30bded40acd62952b195d6a079ca2e490aa17a02dd83e777a7e5fe87a70dfbac9da7107447bd0dcee19dc9ed7bca3169e165ab1ce7c18d45d2403b9dfd5d SHA512 1cfa31b17ac83e5e60494d85726e9a44d0d090d9d7e0ab351e7a939ff7db63b6ab960a1d18f4750b29933c5b079890be90aea3945be6b4b406fa7e27df2ca067 diff --git a/dev-cpp/cctz/cctz-2.3_p20230228.ebuild b/dev-cpp/cctz/cctz-2.3_p20230228.ebuild deleted file mode 100644 index 448b7f921122..000000000000 --- a/dev-cpp/cctz/cctz-2.3_p20230228.ebuild +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake - -DESCRIPTION="C++ library for dealing with time zones and time conversion" -HOMEPAGE="https://github.com/google/cctz" -MY_COMMIT="3803b96130934f48b1fc1d47c5da5f542949c4b0" -SRC_URI="https://github.com/google/cctz/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/${PN}-${MY_COMMIT}" - -LICENSE="Apache-2.0" -SLOT="0" -KEYWORDS="~amd64" -IUSE="test" -RESTRICT="!test? ( test )" - -BDEPEND=" - test? ( - dev-cpp/gtest - ) -" - -src_configure() { - local mycmakeargs=( - -DBUILD_TESTING=$(usex test) - -DBUILD_BENCHMARK=OFF - ) - cmake_src_configure -} diff --git a/dev-cpp/cpp-httplib/Manifest b/dev-cpp/cpp-httplib/Manifest index 6a344c2a9780..bfaf669d5bf8 100644 --- a/dev-cpp/cpp-httplib/Manifest +++ b/dev-cpp/cpp-httplib/Manifest @@ -1,7 +1,8 @@ -DIST cpp-httplib-0.18.0.tar.gz 1321763 BLAKE2B 7807c2f4e3a6a0703a1253f0ec4ac7ef5fbcfad000e517af034a2aff64393229fb47830d215a1959e9893a66f51d19989c33b6b646b79be71e69687fe08cbbf2 SHA512 35ff903d51fee5428d7a95a0406460f8a18d1b5653f6ec8f353d7a2f1084598e599b24d0401f7214d5ee8d9764c74a4e617fff55acd4e6733ab1b9f2d7d4403c +AUX cpp-httplib-0.18.6-onlinetest.patch 370 BLAKE2B 7a40c0d8e5effd07e656b0c4fcebdce324d8dff9b40c70b301b62c91e61094ed33f298cb76d82c34141e5e5634ea21e56fa6c9e7a050a911c639085fa301a04e SHA512 24e52eee5114cafa45a6dc859b3a356265fdcba740679c89093cade5dbc134b231d90f9db5f1b2844090ad2bd616ee040880e9c750325dba025b6cad15a41024 DIST cpp-httplib-0.18.1.tar.gz 1323636 BLAKE2B 8335c9a4d69d7e9b2e7e3c4036b49627536c8d6cffa7a5ae2c3dff693c5458f7fa2f89f3da2c130325069225d3204ec579900d5c5266dff7a9c732c134b39907 SHA512 6dd1054d0171594bf871a918b5540cc67981a48f7dbb82e9029a4877afc6d8c36e2f69411f5eec7b052bf0245554d01f33ef2180f42a15f6b8dd86ebb2427a41 DIST cpp-httplib-0.18.3.tar.gz 1324253 BLAKE2B 995ae8cd63013ec03e86f56e089b4f1374a8913eaf02d8fc07997b986dc8f65b1bda710ed686b6cc111e6203d15bbcb9db08cd810d2167c1658bfa99dc9b61b2 SHA512 d9eb70dfd8ebde658852d1a8cf9f96419ca11cad889b54672aa4812c0b5db0c3f1fddf63f536aec19fc4a849f41ed22461581a18f0733d3f906e45dd096bafd8 -EBUILD cpp-httplib-0.18.0.ebuild 2381 BLAKE2B 278349677e050af68a1b532c550a89194f5dfa7a1f180265433583cfc08f8d6a492aff0ff327be7880449e04cffbfa561595cadd924aa45d9d355e0915ee51e3 SHA512 4677c16d4583e5ad57f21e4600aa8ccfd6509beab76e8db0255babe6c55b92180b4b64f44f1b7ee9f4f63ca3a90c6b20268f08f6ed88044634f0069af0e3dc7b +DIST cpp-httplib-0.18.6.tar.gz 1326428 BLAKE2B bee65790b8f2a19f80fd8f38799d650ceaef021b6e9f28b2fd0678f4c50b95d210f9764775d67365e65e6f9e03d6999091f28aa553655444c8ff369172cf13f9 SHA512 326c1b3315256c1e1e8b6406b9209215f5c264e1071ab3de400011486713b90cb8f88b48ac979fb024ba91441c2fb00aa40a15b85bfac9895c052f2131773249 EBUILD cpp-httplib-0.18.1.ebuild 2386 BLAKE2B 163602bbb043f11a616a876cc9194a8023627048eba3ec3d0a38bfd5fc0a7df59a6fa9ed9fe9b8ad28ee66350a72b10147e6e23f355f847f9c094c0c5e762951 SHA512 d2b08b158d542adb28af5ba253b903f48188a64387cefe9290b065a8cf8aa01f03eb47c3211a6543846463ba00f7a217b460eee022771a8fc5c2a526121b6cf8 EBUILD cpp-httplib-0.18.3.ebuild 2394 BLAKE2B 4878163750a041ebaf8da7e541a8f30e0672f1ff2ca3fa3ec2e3201ca9e17199c2c89ab9debc0a3d0e10a5ecb106b4b996a32203d5a91d5bc7ec963de22520f5 SHA512 b9ca92f58fa7f9d9f2ce2d8f3d861a8c98042f57be263d4aa04da58d1f722a70e57704c5393ee1878cc0832c024e2e8dcde50a1d789e815fb974cafd49a23bee +EBUILD cpp-httplib-0.18.6.ebuild 2444 BLAKE2B bd072b8983b3376fcd4f59caaba7c158f26535d5a283da8c68568963c9d87d544c25f52961951a3ebec59dd18231d7d4b0eb5c7e6daf3b980591ff3f9c10eb59 SHA512 5e10cc426cdc0c1005ccf77f3034c14ebac41403dc1fef843c35cf7f650b03af51ac7fc01680a011ab1d1bafb58eb4598903a5c5c2b2c9f3572f84752ef70e2c MISC metadata.xml 555 BLAKE2B dbc2f2c5ca081d49d0dc9de469c9a749c8704938a7f92550b1ab7013e6a026330fddc824fa72ed2d5b0b7faacddb5f87fdb34df6cbf1cfdca3a04f929b0f5e5a SHA512 518900e3f6b10de4548556dda93fdfdd8f92e87d30c5b8b7063029bd2b20a778b3bb3aff6cfc322e0be1c6abfc07283f38dc6b094ba6d14dbb433147312aa530 diff --git a/dev-cpp/cpp-httplib/cpp-httplib-0.18.0.ebuild b/dev-cpp/cpp-httplib/cpp-httplib-0.18.0.ebuild deleted file mode 100644 index 736278e707ad..000000000000 --- a/dev-cpp/cpp-httplib/cpp-httplib-0.18.0.ebuild +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{11..13} ) - -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 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" -fi - -LICENSE="MIT" -SLOT="0/${PV}" # soversion / /usr/include/httplib.h: CPPHTTPLIB_VERSION - -IUSE="brotli ssl test zlib" -REQUIRED_USE="test? ( brotli ssl zlib )" -RESTRICT="!test? ( test )" - -RDEPEND=" - brotli? ( - app-arch/brotli:=[${MULTILIB_USEDEP}] - ) - ssl? ( - >=dev-libs/openssl-3.0.13:=[${MULTILIB_USEDEP}] - ) - zlib? ( - sys-libs/zlib[${MULTILIB_USEDEP}] - ) -" -DEPEND=" - ${RDEPEND} -" -BDEPEND=" - ${PYTHON_DEPS} -" - -src_configure() { - local -a mycmakeargs=( - -DHTTPLIB_COMPILE=yes - -DBUILD_SHARED_LIBS=yes - -DHTTPLIB_USE_BROTLI_IF_AVAILABLE=no - -DHTTPLIB_USE_OPENSSL_IF_AVAILABLE=no - -DHTTPLIB_USE_ZLIB_IF_AVAILABLE=no - -DHTTPLIB_REQUIRE_BROTLI=$(usex brotli) - -DHTTPLIB_REQUIRE_OPENSSL=$(usex ssl) - -DHTTPLIB_REQUIRE_ZLIB=$(usex zlib) - -DPython3_EXECUTABLE="${PYTHON}" - ) - cmake-multilib_src_configure -} - -multilib_src_test() { - cp -p -R --reflink=auto "${S}/test" ./test || die - - local -a failing_tests=( - # Disable all online tests. - "*.*_Online" - - # Fails on musl x86: - ServerTest.GetRangeWithMaxLongLength - ServerTest.GetStreamedWithTooManyRanges - - # https://github.com/yhirose/cpp-httplib/issues/1798 - # Filed by mgorny's testing, fails on openssl >=3.2: - SSLClientServerTest.ClientCertPresent - SSLClientServerTest.ClientEncryptedCertPresent - SSLClientServerTest.CustomizeServerSSLCtx - SSLClientServerTest.MemoryClientCertPresent - SSLClientServerTest.MemoryClientEncryptedCertPresent - SSLClientServerTest.TrustDirOptional - ) - - # 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.18.6.ebuild b/dev-cpp/cpp-httplib/cpp-httplib-0.18.6.ebuild new file mode 100644 index 000000000000..965ef9b2eb87 --- /dev/null +++ b/dev-cpp/cpp-httplib/cpp-httplib-0.18.6.ebuild @@ -0,0 +1,96 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..13} ) + +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 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +fi + +LICENSE="MIT" +SLOT="0/${PV}" # soversion / /usr/include/httplib.h: CPPHTTPLIB_VERSION + +IUSE="brotli ssl test zlib" +REQUIRED_USE="test? ( brotli ssl zlib )" +RESTRICT="!test? ( test )" + +RDEPEND=" + brotli? ( + app-arch/brotli:=[${MULTILIB_USEDEP}] + ) + ssl? ( + >=dev-libs/openssl-3.0.13:=[${MULTILIB_USEDEP}] + ) + zlib? ( + sys-libs/zlib[${MULTILIB_USEDEP}] + ) +" +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + ${PYTHON_DEPS} +" + +PATCHES=( + "${FILESDIR}/${P}-onlinetest.patch" +) + +src_configure() { + local -a mycmakeargs=( + -DHTTPLIB_COMPILE=yes + -DBUILD_SHARED_LIBS=yes + -DHTTPLIB_USE_BROTLI_IF_AVAILABLE=no + -DHTTPLIB_USE_OPENSSL_IF_AVAILABLE=no + -DHTTPLIB_USE_ZLIB_IF_AVAILABLE=no + -DHTTPLIB_REQUIRE_BROTLI=$(usex brotli) + -DHTTPLIB_REQUIRE_OPENSSL=$(usex ssl) + -DHTTPLIB_REQUIRE_ZLIB=$(usex zlib) + -DPython3_EXECUTABLE="${PYTHON}" + ) + cmake-multilib_src_configure +} + +multilib_src_test() { + cp -p -R --reflink=auto "${S}/test" ./test || die + + local -a failing_tests=( + # Disable all online tests. + "*.*_Online" + + # Fails on musl x86: + ServerTest.GetRangeWithMaxLongLength + ServerTest.GetStreamedWithTooManyRanges + + # https://github.com/yhirose/cpp-httplib/issues/1798 + # Filed by mgorny's testing, fails on openssl >=3.2: + SSLClientServerTest.ClientCertPresent + SSLClientServerTest.ClientEncryptedCertPresent + SSLClientServerTest.CustomizeServerSSLCtx + SSLClientServerTest.MemoryClientCertPresent + SSLClientServerTest.MemoryClientEncryptedCertPresent + SSLClientServerTest.TrustDirOptional + ) + + # 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/files/cpp-httplib-0.18.6-onlinetest.patch b/dev-cpp/cpp-httplib/files/cpp-httplib-0.18.6-onlinetest.patch new file mode 100644 index 000000000000..6a12251a644f --- /dev/null +++ b/dev-cpp/cpp-httplib/files/cpp-httplib-0.18.6-onlinetest.patch @@ -0,0 +1,13 @@ +https://github.com/yhirose/cpp-httplib/issues/2042 + +--- a/test/test.cc ++++ b/test/test.cc +@@ -6189,7 +6189,7 @@ TEST(SSLClientTest, WildcardHostNameMatch_Online) { + ASSERT_EQ(StatusCode::OK_200, res->status); + } + +-TEST(SSLClientTest, Issue2004) { ++TEST(SSLClientTest, Issue2004_Online) { + Client client("https://google.com"); + client.set_follow_location(true); + diff --git a/dev-cpp/rapidfuzz-cpp/Manifest b/dev-cpp/rapidfuzz-cpp/Manifest index 15e561871d3c..eb9374690096 100644 --- a/dev-cpp/rapidfuzz-cpp/Manifest +++ b/dev-cpp/rapidfuzz-cpp/Manifest @@ -1,7 +1,9 @@ DIST rapidfuzz-cpp-3.2.0.gh.tar.gz 311140 BLAKE2B 334626f70a94d81168f24f64c2cf1fb0062581478cbc9b7506cf289c1f4a4007a0129918eb588584c4bf6ec33580ca7e85fe91725f9ddc8cd54f4e874551b381 SHA512 cf306fc4a6c0b6fc1a1c3b0b235aa54588bd87a5d07f96c1bc9711a08159ca71580b5958e66e8b4358d34e522041934903079aabe6e5a450cece7d6db6edcbe0 DIST rapidfuzz-cpp-3.3.0.gh.tar.gz 314124 BLAKE2B 6a8d10dbd627adce2c00e02394265ec6001f5f16ee11a8948972f42e85f5ae2f2ebc50a11338659f29dd826f6988577bc4bcbd1e69e3b54545263e7c715db970 SHA512 acc61e294e3aa60f6076e0795622d0cff095bf3f141954587a7934f63a85f3ea08ba8af1accea445d3a990f9214ebd50f8f12a4d0ada88f1cc4b620c374ce153 DIST rapidfuzz-cpp-3.3.1.gh.tar.gz 314391 BLAKE2B 27a8f0eed9a26a3d3342f9efc3ca5e9f6bbdec8bebdf99cf2ebb14659b68106e588fe7d2e6e3ce5f0caaae7070d83915c210111889d1a2315780c2dd32419b6f SHA512 c4b34d45b11f71db0cb5ce781b5fe9e81dde7809e9b17aa37138a862afca2b8a15631bf289e592f1fb9f012450c871b2b967353a6f0996783fa59b8ac6521e74 +DIST rapidfuzz-cpp-3.3.2.gh.tar.gz 314657 BLAKE2B edfc758e9cec932bd704a07c1f05d896b3c6df1f5599c11bf731e01156091cf3702b6266427e58cf656b8903748cebfa5d7801aa202976d635a03af40849d32a SHA512 4befcf9a22e2f478a93fb3e8f6a1b954071c707ee339f2d0a0e0367d24eb35670213b98e48d0d3956f50e4c7554ce326e4dd64470d706afafe4d2252f216ea48 EBUILD rapidfuzz-cpp-3.2.0.ebuild 631 BLAKE2B 3b8991683cd168d55a6065ac7fb63569334ddd0adbb4289e382e07a4b56b8a711b7fb0403d66326377c2fc8c28f246efc8c97af967533df051a747a8cd685039 SHA512 3975cade4b3935c348e04d477f027e9644e3ed53a7a521ac7f8f32416a5158fd0ff17bd3e1cc7b2fdc312b028f0a2e7d6a421ea6abeda2231715d64eab25e86f EBUILD rapidfuzz-cpp-3.3.0.ebuild 639 BLAKE2B 3b47accddfd33040e5f4f79d067dc4be3058168fd5e88f7bbc89c80363f0930dd6e57a81a016640d5f04d693f3c84587765c1a55230c57916478d55451e6417e SHA512 db191807bc66ff3cf543d9e03beadd2a8a6db4e379ee85439c6e7630531037441ed558c3caf6ffdd65dcaafeb46e45caa348b37690802f8baf88c51b286acb1c -EBUILD rapidfuzz-cpp-3.3.1.ebuild 638 BLAKE2B 0dff042eec1c4db882f5c7aaae6dabb1d6f525ca41ed1b3631bcd86f0d6cc16836765c2d66412c565feb0fb50a06dbec6e834d11acc7bf86fedff3caedfea75e SHA512 5bedb9c61f1db3a8b8afa8bbd499ab6f8b1966c041ff55f1a1bd9bbe00a768d79bb37a8725c36a168f60ad8febd4cca85c03701ad2a3062f170e2f9856b88f32 +EBUILD rapidfuzz-cpp-3.3.1.ebuild 632 BLAKE2B b4051390ebdb0e39fbcd90696dba329de88490ba97a084622866128003a67c349f16da87c060c470b7aa6962e5650eae612b68f460467c02703a37b300a754d5 SHA512 3efe2a9791089edd16802341af61501438091620f1dd2726ba21138c83fec4b5a0b715f53e405baf23b49c71ee321a4e2a58a1505d229c6997811e2205b97992 +EBUILD rapidfuzz-cpp-3.3.2.ebuild 638 BLAKE2B 0dff042eec1c4db882f5c7aaae6dabb1d6f525ca41ed1b3631bcd86f0d6cc16836765c2d66412c565feb0fb50a06dbec6e834d11acc7bf86fedff3caedfea75e SHA512 5bedb9c61f1db3a8b8afa8bbd499ab6f8b1966c041ff55f1a1bd9bbe00a768d79bb37a8725c36a168f60ad8febd4cca85c03701ad2a3062f170e2f9856b88f32 MISC metadata.xml 336 BLAKE2B e425e950b6a0524afb6b996f846fdda73310168d6415a67570ac01a75a2c9335b4f5785bda271a2cf88bf5d7e3708582d958d1fa658d12f36fc5455df9763573 SHA512 868c16a2c2b178fa38e65568aeacf5b96a8d4ebf4521094a0da106194de0acefd017d5f7c827d89a9711c6b80d5603a01d9e15ba9b167c55954f3d653ccc6ed5 diff --git a/dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.1.ebuild b/dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.1.ebuild index d86bd803fa44..9bbac99c2c5e 100644 --- a/dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.1.ebuild +++ b/dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.1.ebuild @@ -14,7 +14,7 @@ SRC_URI=" LICENSE="MIT" 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="test" RESTRICT="!test? ( test )" diff --git a/dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.2.ebuild b/dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.2.ebuild new file mode 100644 index 000000000000..d86bd803fa44 --- /dev/null +++ b/dev-cpp/rapidfuzz-cpp/rapidfuzz-cpp-3.3.2.ebuild @@ -0,0 +1,32 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="Rapid fuzzy string matching in C++" +HOMEPAGE="https://github.com/rapidfuzz/rapidfuzz-cpp/" +SRC_URI=" + https://github.com/rapidfuzz/rapidfuzz-cpp/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +BDEPEND=" + test? ( + >=dev-cpp/catch-2 + ) +" + +src_configure() { + local mycmakeargs=( + -DRAPIDFUZZ_BUILD_TESTING=$(usex test) + ) + cmake_src_configure +} diff --git a/dev-cpp/sol2/Manifest b/dev-cpp/sol2/Manifest index b02b3d8f07bb..d0e05b5aee94 100644 --- a/dev-cpp/sol2/Manifest +++ b/dev-cpp/sol2/Manifest @@ -6,5 +6,4 @@ AUX sol2-3.3.0-werror.patch 854 BLAKE2B 4ba8febe3e225a904501a61d0bf7bb5a8539b1c8 AUX sol2-3.3.1-fix-emplace.patch 660 BLAKE2B b36439910c10c2bb3c86d5911c3aaf20906e411d7fddc40ad2c201c685cf8feea4c49e4e5835396c4d6d1447ea672b55e2f55e7291e74d0eb7f4add9bab7e91f SHA512 3563d2d272bb5d281c4d9875b5ec0cc94548adc0b3ca58f648a20e26e0d180fbb0b35e21d3b6a0ca51808b4744aff4796ef599c6cd17bcc44697e20ff951fb61 DIST sol2-3.3.1.tar.gz 8453954 BLAKE2B f9fced4f001a5f681598e45bf74cdf064f655c950be5b91789d2bf66c0180b5048610d3d4416c024a07db11d41fceaee786800c5ca1412811cbc1a449a894a9e SHA512 4404b124a4f331d77459c01a92cd73895301e7d3ef829a0285980f0138b9cc66782de3713d54f017d5aad7d8a11d23eeffbc5f3b39ccb4d4306a955711d385dd EBUILD sol2-3.3.1-r1.ebuild 1404 BLAKE2B f4b7ca3ba02f29728b5ecf0ddcaec5722d07a185ce780812456b3ba0a9a69ed92062622ddf9245ff2b8f834a9f5a2597f89fd6d24bcdc342ecd3ee9b5d77c39f SHA512 69792db4cce41f83202a82dfe1b938ae6fcc5d82a2c42a6dcab9488396c03b3f7aa46f0b641541ed0eeefcda069922b146575165d411f53e2a1366058d6ddb6f -EBUILD sol2-3.3.1.ebuild 1360 BLAKE2B a0a619ce293f9c658142ba6cac3a28da9359ca658391be51ac7049a8e65e81a2a805654426601bc9503c389efa2e00a11163e66a382d8bb9017baf6ecdef332d SHA512 de9b08a6c6c557f2acc702b3aea402a9c094f441e79ffa8f13a1f05cfbb844c3420b901e17a98d23480047956d65d7435fd7548fa765736138a61510bbb7ee3c MISC metadata.xml 594 BLAKE2B 911a1123a653118d9c19c3ff1a42a979a696d034500eda29a18c72e6f89bcc2f7c4d28977c76a40f61b79649c3f4aa63439cda96311e2cdd2bc9495ad1a85db1 SHA512 5c8252373ee8bdefe9b2863df048616beec0d00dcf1cd7845302721f78158db48729d9ab412dbcf4bed49130518acd2071ca3e5880488a882117ec5728e26b9a diff --git a/dev-cpp/sol2/sol2-3.3.1.ebuild b/dev-cpp/sol2/sol2-3.3.1.ebuild deleted file mode 100644 index 585aae692d6f..000000000000 --- a/dev-cpp/sol2/sol2-3.3.1.ebuild +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2021-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LUA_COMPAT=( lua5-{1,3,4} luajit ) -inherit cmake lua - -DESCRIPTION="Header-only C++ <-> Lua API wrapper" -HOMEPAGE="https://github.com/ThePhD/sol2" -SRC_URI="https://github.com/ThePhD/sol2/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="MIT" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" -IUSE="test" -REQUIRED_USE="${LUA_REQUIRED_USE}" -RESTRICT="!test? ( test )" - -DEPEND=" - ${LUA_DEPS} - test? ( - >=dev-cpp/catch-3 - ) -" -BDEPEND=" - virtual/pkgconfig -" - -PATCHES=( - "${FILESDIR}"/sol2-3.3.0-werror.patch - "${FILESDIR}"/sol2-3.2.2-luajit-pkgconf.patch - "${FILESDIR}"/sol2-3.3.0-catch-depend.patch - "${FILESDIR}"/sol2-3.3.0-cmake-dir.patch - "${FILESDIR}"/sol2-3.3.0-dont-install-tests.patch -) - -src_configure() { - sol2_configure_wrapper() { - local mycmakeargs=( - -DSOL2_BUILD_LUA=no - -DSOL2_TESTS=$(usex test) - -DSOL2_LUA_VERSION="${ELUA}" - ) - cmake_src_configure - } - lua_foreach_impl sol2_configure_wrapper -} - -src_compile() { - lua_foreach_impl cmake_src_compile -} - -src_test() { - sol2_test_wrapper() { - if [[ ${ELUA} == luajit ]]; then - einfo "Skipping test due to https://github.com/ThePhD/sol2/issues/1221" - else - cmake_src_test - fi - } - lua_foreach_impl sol2_test_wrapper -} - -src_install() { - lua_foreach_impl cmake_src_install -} diff --git a/dev-cpp/yaml-cpp/Manifest b/dev-cpp/yaml-cpp/Manifest index ac5c6276e45e..f9158d465a33 100644 --- a/dev-cpp/yaml-cpp/Manifest +++ b/dev-cpp/yaml-cpp/Manifest @@ -1,11 +1,6 @@ -AUX yaml-cpp-0.7.0-cmake-paths.patch 4037 BLAKE2B d8582bd324d159114545619de88fd4fa469cb6aac6fd0047309366760b33a216841e2103e8023d1167bb648b32fcd2905d7be21a9b703e3edda0b4eba8f512b1 SHA512 c9059db39ab4faa3864c3b58c60e1c8b840aaef48c10bee30677f8e5feed97c24b19070ca4907df89332c317af82190f552db64b91406ebe169392561ae14488 -AUX yaml-cpp-0.7.0-gtest.patch 1081 BLAKE2B 7fe415662ce9eb205f6f1c42df9885ae5817bf0a7aa7e8e7abd296338b0fb0fe6c31733ad57fdc6d97b566fd82f494b604ad250860bf9d06cf6cbc9901ad9bf6 SHA512 1c97aaae36205e810b76c610bb334888d044391eed96b653c186b64822bf38e4ab4aef29acad418c9063d4752c665a0dddcdbef87fdd855c0a416950c52ac443 -AUX yaml-cpp-0.7.0-install-paths.patch 1062 BLAKE2B c76f9f34e7f20954a2f2f0582f5d124ec22af2c91dccc19b4c7891b19d14bc2aff7d61f93b20a606c58397c70f9db2f35f10c6645869253a5bedd50d9e65eaa1 SHA512 9d14416fdb8111027324ffeae3856590348f9497444ecae7a2091d3211e17fe61fdd66932b98c119cf54551c551aa8f6a698a2c5a97cb559cf6e3a54f25e07cb AUX yaml-cpp-0.8.0-gcc13.patch 2242 BLAKE2B 8b5b99e86a578310dd020237a82150dd0ae47dc009cff2f423ec6248c77635384c6e4ff0620a446858ec12223ea3148a006a76fd9c5a02c28cf29c0969b19dfd SHA512 429ca92104b6203695970e7bc79ed452c0dd6a02b98beb2e640a89184d10f1daedf10a5f7697942036317225c52a054c0916bfe1c54635b34b83721f72a31f6d AUX yaml-cpp-0.8.0-gtest.patch 954 BLAKE2B 916365624688a62d2fa1f5dcbe62e65c872439efd8172a9898457797ce857003c31d8de082fe87ee9a47027f4021bc87ded88e7d4e40ed87e2da2a2333cc6d62 SHA512 781451e4477c22f059bb22b59b253bc2c2d4c0668bb00b44867d79a6d0e87f95abcfa11d35bcbf0e7aacc94b9185dfbef814018d7a58df00d93cd13ca0df8edc AUX yaml-cpp-0.8.0-include-cstdint.patch 1090 BLAKE2B 0415488b047454dfbbf962b6e1f135c277e7c4b1cce30b76045c611d3cee9dcf6f701c8ff290ff3943442dd1d3c7ec8d5547328a91dbced7d93530d4dcb9703f SHA512 1e376b6ba5b4f5673271bb0790768ca8512efe44d821940c7bc58539d08f118bc30ebaa64a137bf7ba77987f6c5596706dcf99a9b4a58199aa0e4f7aa2969b52 -DIST yaml-cpp-0.7.0.tar.gz 1033237 BLAKE2B 69a11a8503ad607aa0d54912a5e53d305a643fe2d36dd86fa96832e3d4930b39a85318dc130e438210a9ca60357f3aa9aa6cd0f2b6bc45728b648c545a437368 SHA512 2de0f0ec8f003cd3c498d571cda7a796bf220517bad2dc02cba70c522dddde398f33cf1ad20da251adaacb2a07b77844111f297e99d45a7c46ebc01706bbafb5 DIST yaml-cpp-0.8.0.gh.tar.gz 1017151 BLAKE2B 5fd3eaec06bc04215afd2aa14ae8cd35f829f700f104931a51dbd8bb22e4e87f5cd5f2f975d3a2f464226d7165d3d106aa17bc7eab8a812c2545d2212011cf11 SHA512 aae9d618f906117d620d63173e95572c738db518f4ff1901a06de2117d8deeb8045f554102ca0ba4735ac0c4d060153a938ef78da3e0da3406d27b8298e5f38e -EBUILD yaml-cpp-0.7.0-r2.ebuild 857 BLAKE2B 63735ee4c253e6b04cf7c2c9b0725cf4aad80564eca30ca2e80360e8fa4d1263d95af7260cfa49c182d1109b13dd1ef5e754d1e6967f6414d9745ecf683b71b9 SHA512 7308409215a0e874fe4d2a2a6b8a8ccbfba8b4617a3852d50d40ca70cd2394fde8c1b8e1224136018aa043aecf3dbb6bc515e1ac90517c448c904a6315944249 EBUILD yaml-cpp-0.8.0.ebuild 886 BLAKE2B 3201a330fa6b5de80fbc96216b38ff4f52a38ba64ca652d0c002a750c8f343d6b518d19b8f621a56c5d8a95378ebb78306050a7da5072030110d7c52feb66755 SHA512 f9f2ae48d5fc6f5a2338a1582999e7db9c9cb1a2cb22880db1b5f845e1ca36e29a17353732f0fa64057d773e211a53215097d905be947998209066033d422e74 MISC metadata.xml 484 BLAKE2B e973aef681bed7de47725bab49d2acfe809ad73c97eea709bec9d5bb9d720f89bc222ff77f09b90780b2a14d6a094f9ddd24a4f15d6ad88b94060d240c5836d8 SHA512 612604d3b0c2edd157c4a55ae22d92e174cdcbc17532de7f2888b9579b4b028da2214e6d756864dfffdeca129f32e5db2241308d326c6ff21044f48bf2d87d73 diff --git a/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-cmake-paths.patch b/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-cmake-paths.patch deleted file mode 100644 index 5ad9e46dbcb2..000000000000 --- a/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-cmake-paths.patch +++ /dev/null @@ -1,101 +0,0 @@ -From d5d68286cdd983f99f88b6141a3c34d3bf633d98 Mon Sep 17 00:00:00 2001 -From: Felix Schwitzer -Date: Fri, 1 Apr 2022 05:26:47 +0200 -Subject: [PATCH] Fix CMake export files (#1077) - -After configuring the file `yaml-cpp-config.cmake.in`, the result ends up with -empty variables. (see also the discussion in #774). - -Rework this file and the call to `configure_package_config_file` according the -cmake documentation -(https://cmake.org/cmake/help/v3.22/module/CMakePackageConfigHelpers.html?highlight=configure_package_config#command:configure_package_config_file) -to overcome this issue and allow a simple `find_package` after install. - -As there was some discussion about the place where to install the -`yaml-cpp-config.cmake` file, e.g. #1055, factor out the install location into -an extra variable to make it easier changing this location in the future. - -Also untabify CMakeLists.txt in some places to align with the other code parts in this file. ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -127,10 +127,16 @@ set_target_properties(yaml-cpp PROPERTIES - PROJECT_LABEL "yaml-cpp ${yaml-cpp-label-postfix}" - DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}") - -+# FIXME(felix2012): A more common place for the cmake export would be -+# `CMAKE_INSTALL_LIBDIR`, as e.g. done in ubuntu or in this project for GTest -+set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp") -+set(EXPORT_TARGETS yaml-cpp) - configure_package_config_file( - "${PROJECT_SOURCE_DIR}/yaml-cpp-config.cmake.in" - "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" -- INSTALL_DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp") -+ INSTALL_DESTINATION "${CONFIG_EXPORT_DIR}" -+ PATH_VARS CMAKE_INSTALL_INCLUDEDIR CONFIG_EXPORT_DIR) -+unset(EXPORT_TARGETS) - - write_basic_package_version_file( - "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" -@@ -139,30 +145,31 @@ write_basic_package_version_file( - configure_file(yaml-cpp.pc.in yaml-cpp.pc @ONLY) - - if (YAML_CPP_INSTALL) -- install(TARGETS yaml-cpp -+ install(TARGETS yaml-cpp - EXPORT yaml-cpp-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ -+ install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} -- FILES_MATCHING PATTERN "*.h") -+ FILES_MATCHING PATTERN "*.h") - install(EXPORT yaml-cpp-targets -- DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp") -- install(FILES -- "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" -- "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" -- DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp") -+ DESTINATION "${CONFIG_EXPORT_DIR}") -+ install(FILES -+ "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" -+ "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" -+ DESTINATION "${CONFIG_EXPORT_DIR}") - install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc" - DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig) - endif() -+unset(CONFIG_EXPORT_DIR) - - if(YAML_CPP_BUILD_TESTS) -- add_subdirectory(test) -+ add_subdirectory(test) - endif() - - if(YAML_CPP_BUILD_TOOLS) -- add_subdirectory(util) -+ add_subdirectory(util) - endif() - - if (YAML_CPP_CLANG_FORMAT_EXE) ---- a/yaml-cpp-config.cmake.in -+++ b/yaml-cpp-config.cmake.in -@@ -3,12 +3,14 @@ - # YAML_CPP_INCLUDE_DIR - include directory - # YAML_CPP_LIBRARIES - libraries to link against - --# Compute paths --get_filename_component(YAML_CPP_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) --set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@") -+@PACKAGE_INIT@ -+ -+set_and_check(YAML_CPP_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") - - # Our library dependencies (contains definitions for IMPORTED targets) --include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake") -+include(@PACKAGE_CONFIG_EXPORT_DIR@/yaml-cpp-targets.cmake) - - # These are IMPORTED targets created by yaml-cpp-targets.cmake - set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@") -+ -+check_required_components(@EXPORT_TARGETS@) diff --git a/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-gtest.patch b/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-gtest.patch deleted file mode 100644 index bd05fccca373..000000000000 --- a/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-gtest.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 30fbefe6102da12e8d4d132aa4af2e24bfda9bfb Mon Sep 17 00:00:00 2001 -From: "Azamat H. Hackimov" -Date: Sat, 17 Sep 2022 12:25:24 +0300 -Subject: [PATCH] Use external gtest dependency - ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -1,15 +1,10 @@ - find_package(Threads REQUIRED) -+find_package(GTest REQUIRED CONFIG) - - set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) - set(BUILD_MOCK ON CACHE BOOL "" FORCE) - set(CMAKE_POLICY_DEFAULT_CMP0048 NEW) - --add_subdirectory( -- "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.10.0" -- "${CMAKE_CURRENT_BINARY_DIR}/prefix") -- --include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.10.0/googletest/include") -- - set(test-new-api-pattern "new-api/*.cpp") - set(test-source-pattern "*.cpp" "integration/*.cpp" "node/*.cpp") - if (CMAKE_VERSION VERSION_GREATER 3.11) -@@ -38,7 +33,7 @@ target_link_libraries(yaml-cpp-tests - PRIVATE - Threads::Threads - yaml-cpp -- gmock) -+ GTest::gmock) - - set_property(TARGET yaml-cpp-tests PROPERTY CXX_STANDARD_REQUIRED ON) - if (NOT DEFINED CMAKE_CXX_STANDARD) diff --git a/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-install-paths.patch b/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-install-paths.patch deleted file mode 100644 index 622c0d7f148f..000000000000 --- a/dev-cpp/yaml-cpp/files/yaml-cpp-0.7.0-install-paths.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 4f5b5ba19ece906252cfc90b7cd51035e21c7118 Mon Sep 17 00:00:00 2001 -From: "Azamat H. Hackimov" -Date: Sat, 17 Sep 2022 12:07:46 +0300 -Subject: [PATCH] Fix pkg-config file install destination - ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -129,7 +129,7 @@ set_target_properties(yaml-cpp PROPERTIES - - # FIXME(felix2012): A more common place for the cmake export would be - # `CMAKE_INSTALL_LIBDIR`, as e.g. done in ubuntu or in this project for GTest --set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp") -+set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/yaml-cpp") - set(EXPORT_TARGETS yaml-cpp) - configure_package_config_file( - "${PROJECT_SOURCE_DIR}/yaml-cpp-config.cmake.in" -@@ -160,7 +160,7 @@ if (YAML_CPP_INSTALL) - "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" - DESTINATION "${CONFIG_EXPORT_DIR}") - install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc" -- DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig) -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - endif() - unset(CONFIG_EXPORT_DIR) - diff --git a/dev-cpp/yaml-cpp/yaml-cpp-0.7.0-r2.ebuild b/dev-cpp/yaml-cpp/yaml-cpp-0.7.0-r2.ebuild deleted file mode 100644 index 91e20995e963..000000000000 --- a/dev-cpp/yaml-cpp/yaml-cpp-0.7.0-r2.ebuild +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake-multilib - -DESCRIPTION="YAML parser and emitter in C++" -HOMEPAGE="https://github.com/jbeder/yaml-cpp" -SRC_URI="https://github.com/jbeder/yaml-cpp/archive/${P}.tar.gz" -S="${WORKDIR}/yaml-cpp-${P}" - -LICENSE="MIT" -SLOT="0/0.7" -KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux" -IUSE="test" -RESTRICT="!test? ( test )" - -DEPEND="test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] )" - -PATCHES=( - "${FILESDIR}/${P}-gtest.patch" - "${FILESDIR}/${P}-cmake-paths.patch" - "${FILESDIR}/${P}-install-paths.patch" -) - -src_configure() { - local mycmakeargs=( - -DYAML_BUILD_SHARED_LIBS=ON - -DYAML_CPP_BUILD_TOOLS=OFF # Don't have install rule - -DYAML_CPP_BUILD_TESTS=$(usex test) - ) - - cmake-multilib_src_configure -} diff --git a/dev-db/Manifest.gz b/dev-db/Manifest.gz index 192f8f62920972a79f6538a9614b6fd03fd14420..c068aa9f07fea27f4ea5124a9f2de64551c0eeb6 100644 GIT binary patch delta 16756 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 diff --git a/dev-db/duckdb/Manifest b/dev-db/duckdb/Manifest new file mode 100644 index 000000000000..0e9a82e3703e --- /dev/null +++ b/dev-db/duckdb/Manifest @@ -0,0 +1,3 @@ +DIST duckdb-1.2.0.tar.gz 89762895 BLAKE2B 37f5fa8abb09bb6d9a0b798efaca65170742dbb6aafd32b3420e76eb9ea662a84ba339e62bdb86217a83a2c76df41e4d9838fa573413e196de27a8d5308a5251 SHA512 f5bca7a3b6f763b4b1a1f39e53c6f818925584fb44886e291ac3546fe50de545e80d16b4120f0126020e44b601a1b9193f4faad7a3dc8799cda843b1965038f2 +EBUILD duckdb-1.2.0.ebuild 489 BLAKE2B d9019a5b3e28f5f542d6b4eab154601c8d8ccd3057ccbc8d06cd99833af976783b1d6a9f4e8dc074938dfabe9d284568f33ce98b9be3a657afca3fbb8a5de61d SHA512 0491761c5e1bd46bc2fe9923da8c9317e3f283c414e8e58ae5d72e8dc04ca8c7ac0255623f6ad2ab78505a6655b98106827af9500687ae95ea84663f6ac7ac9e +MISC metadata.xml 326 BLAKE2B fb7c10c555b66099be0d17b099611ce88cc3ed4793ebd5712daa4de6f77d337db956af56709507134cdc86bc11f253a71255aa9edc75105b95f59ab87c31fb76 SHA512 92f54bebc5edd1a38c0e10d876666759e8ca386335868e4c2fbbcf613434dae5dad4a687384e2c445ac1018f58aeb91c065cba9434ed106d28f11ccfe5b91b2a diff --git a/dev-db/duckdb/duckdb-1.2.0.ebuild b/dev-db/duckdb/duckdb-1.2.0.ebuild new file mode 100644 index 000000000000..185f8b0b337a --- /dev/null +++ b/dev-db/duckdb/duckdb-1.2.0.ebuild @@ -0,0 +1,23 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="high-performance analytical database system" +HOMEPAGE="https://duckdb.org https://github.com/duckdb/duckdb" + +SRC_URI="https://github.com/duckdb/duckdb/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="MIT" + +SLOT="0" +KEYWORDS="~amd64" + +RESTRICT="test" + +src_configure() { + mycmakeargs=( "-DINSTALL_LIB_DIR=/usr/$(get_libdir)/" ) + cmake_src_configure +} diff --git a/dev-db/duckdb/metadata.xml b/dev-db/duckdb/metadata.xml new file mode 100644 index 000000000000..b54c09ddad0f --- /dev/null +++ b/dev-db/duckdb/metadata.xml @@ -0,0 +1,11 @@ + + + + + patrick@gentoo.org + Patrick Lauer + + + duckdb/duckdb + + diff --git a/dev-db/mongodb-compass-bin/Manifest b/dev-db/mongodb-compass-bin/Manifest index fe445d814c10..faa69223f06a 100644 --- a/dev-db/mongodb-compass-bin/Manifest +++ b/dev-db/mongodb-compass-bin/Manifest @@ -1,3 +1,5 @@ DIST mongodb-compass_1.45.2_amd64.deb 114271168 BLAKE2B ec330d75f86ec6bec81ffb57266b54833859785867e1fb375a1ae1f57de9a6fff7215da7f67766ed1bc603c4a12a43605701af8aa26e8672f57721abecd3403f SHA512 cd249a3bb7c3290031caba21af038281ca62a9a2aa4322f0dadc32411c1292c37f5f2d4cc1aa664e6d3c17fb5cbe366fc76d68304041758116f58064fe1bfb88 +DIST mongodb-compass_1.45.3_amd64.deb 114199008 BLAKE2B e3a3c79277757038dd36f5160e9ac8340cd701b9d34dec5c6c07473fea1c3dc59c419f30d3985f4818d61b8191d475a770630504bd24e8a0c02bbff19a5a6391 SHA512 25f0bd3130fab11cb71afa42ea63b8d2f5dc80eab28c615a12ed198580b3891bd9b02847ebe8dc4f92aa1329ef6f2232d6e1cb97f9b50fd1addfa9a8d9544f40 EBUILD mongodb-compass-bin-1.45.2.ebuild 1278 BLAKE2B d41adef1d811f150fd37013ad076bb0b2ff2e43c05626ca7767649ae5924ea7daa87ba3d5efd2148f988caf1306455bf51cbecc7bd3ddcbca05d1386a07a2d77 SHA512 2e99db9007159b2e4e4099b0b2aa66eecac496359df19a5c73556ebbb8bccb6bda93c8ef44bc13e348b332a0659d03496e9e36e06e5ca3f1d81feb38978951ee +EBUILD mongodb-compass-bin-1.45.3.ebuild 1278 BLAKE2B d41adef1d811f150fd37013ad076bb0b2ff2e43c05626ca7767649ae5924ea7daa87ba3d5efd2148f988caf1306455bf51cbecc7bd3ddcbca05d1386a07a2d77 SHA512 2e99db9007159b2e4e4099b0b2aa66eecac496359df19a5c73556ebbb8bccb6bda93c8ef44bc13e348b332a0659d03496e9e36e06e5ca3f1d81feb38978951ee MISC metadata.xml 334 BLAKE2B eab2f1899e5f4a2848417001fc41857c70844a4cbb01eea892f8a23b324c7faf0a11aa6066582add9e8493238728b3a4f6a3e57b676c7dd6a07484bb15c79909 SHA512 95bd0e74a4188839c2dcde628bd4635e6f216ffd1b54825571045c2199d8ae6e0a9fcaf93edfdf3506bb5b297fa720339b85780f8f910eb567e8e555004d0d5c diff --git a/dev-db/mongodb-compass-bin/mongodb-compass-bin-1.45.3.ebuild b/dev-db/mongodb-compass-bin/mongodb-compass-bin-1.45.3.ebuild new file mode 100644 index 000000000000..a6af371e3ef6 --- /dev/null +++ b/dev-db/mongodb-compass-bin/mongodb-compass-bin-1.45.3.ebuild @@ -0,0 +1,56 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop unpacker wrapper xdg + +DESCRIPTION="GUI for MongoDB" +HOMEPAGE="https://mongodb.com/compass https://github.com/mongodb-js/compass" +SRC_URI="https://github.com/mongodb-js/compass/releases/download/v${PV}/mongodb-compass_${PV}_amd64.deb" +S=${WORKDIR} + +LICENSE="SSPL-1" +SLOT="0" +KEYWORDS="-* ~amd64" + +RDEPEND=" + dev-libs/nss + dev-libs/openssl:0/3 + media-libs/alsa-lib + media-libs/mesa + net-misc/curl + net-print/cups + sys-apps/dbus + sys-libs/glibc + sys-libs/zlib + virtual/secret-service + x11-libs/cairo + x11-libs/gtk+:3 + x11-libs/libdrm + x11-libs/libX11 + x11-libs/libxcb + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libxkbcommon + x11-libs/libXrandr + x11-libs/pango +" +QA_PREBUILT=" + usr/lib/mongodb-compass/.* +" + +src_install() { + insinto /usr/lib/mongodb-compass + doins -r usr/lib/mongodb-compass/. + + fperms +x "/usr/lib/mongodb-compass/MongoDB Compass" + fperms 4755 /usr/lib/mongodb-compass/{chrome_crashpad_handler,chrome-sandbox} + + domenu usr/share/applications/mongodb-compass.desktop + doicon usr/share/pixmaps/mongodb-compass.png + + make_wrapper mongodb-compass "'/usr/lib/mongodb-compass/MongoDB Compass'" +} diff --git a/dev-db/mycli/Manifest b/dev-db/mycli/Manifest index f1e417279314..be690daa6cbf 100644 --- a/dev-db/mycli/Manifest +++ b/dev-db/mycli/Manifest @@ -1,5 +1,5 @@ DIST mycli-1.27.2.gh.tar.gz 286537 BLAKE2B 7bff978f9a08561c33f5327f13b8b69226e5c735527a607190a3c5d75f091b9f76b8d432e7a3e315ff250995e0baea7f7e0bede17e0b1cc6654939b7ec82b0ae SHA512 fdf0342b0e850b5232c815e73f44f22c7ea162201588681ccf2f4107b84b87f01fff3999a9720fef454239192356f074f47642ddc760af18973a2aaaac4676cd DIST mycli-1.29.2.tar.gz 293270 BLAKE2B c50b45f217f9b358334cd28a975e5de7b1f70903bf32ee719e03e067b13df13b856a24b9631d2b37a7ad668a82307b030cce1111f0a2ffe625cf9756680eee31 SHA512 13279ec14a0310323f1e407147749e8c628d9cc60688080e691ccfd9cdffd4d8d840a18b6a81075e08247b8a64a19808fbedf2898ab0b2e80ec2906182f23f28 EBUILD mycli-1.27.2.ebuild 1965 BLAKE2B e9e2eee903dd6ff7ea763901ced695724ddfe707950882f095f5a057219dbf1b1e63b21cee0717d44580613aae60a24fac87b9e54541ebae2854ab7f53caca40 SHA512 276048144af05d33c7a2333e4d30ceb9100038e7f156219e3e68e6405fdddedb0ec2b11cff1a9d1b2fb7b64901410f7a4410cdfaa00ad1d7ff28693435e57d5f -EBUILD mycli-1.29.2.ebuild 2061 BLAKE2B 8ffd19cf7c6736e32124cfeb126ee66c4df24ea5e5da18f6153584285c31b64e19d08bb2d97aa87dacfa01954ed431412932c517923ee6e54d15f5bc256a08d8 SHA512 d9846a43d659ee1829da1f7b8d0dc7530b8592cad4a801ed49ca4b49ac22f14947aa11646682a1a8e53232396c4eeb5f55e51e4be10c606dee7c0f44f3ccf144 +EBUILD mycli-1.29.2.ebuild 2073 BLAKE2B e9513f85ae075e699b8c9b1c411e0c59e895d7526f03ec8135aa83d019f1011de6f569a112e83167fca83c53b2d103aa604c1662c349d38a09d9edd1df4061a0 SHA512 13df0915588b5639e25768b6eac33317cbe34289be6b0badefcf5140f207dc9a53ef34be77af77b0fa8a48484a7350cdfa99c9acba75bddac06de1b8901be252 MISC metadata.xml 626 BLAKE2B 754538c528392717c6f22b1988d8d901458eaa053d90fdcc6a96c30408a6f9e661bbd8da4dfd57e8edc71e715028e493d7c3b3994ae7b337556881294c771095 SHA512 1d08dd18cdc6e1ab95e80b5234ed6f64c6b9f69346c86bde183c8bbee1940fd54c6a958b03e9b142dceb6d7e61eae2d47c3c5012a9e368a4ec6617c7539729d5 diff --git a/dev-db/mycli/mycli-1.29.2.ebuild b/dev-db/mycli/mycli-1.29.2.ebuild index dc64bce44339..a886468b6d31 100644 --- a/dev-db/mycli/mycli-1.29.2.ebuild +++ b/dev-db/mycli/mycli-1.29.2.ebuild @@ -18,7 +18,7 @@ HOMEPAGE=" LICENSE="BSD MIT" SLOT="0" -KEYWORDS="~amd64" +KEYWORDS="~amd64 ~arm64 ~x86" IUSE="ssh" RDEPEND=" diff --git a/dev-db/postgresql/Manifest b/dev-db/postgresql/Manifest index 64d6d7424ae5..9351597479cb 100644 --- a/dev-db/postgresql/Manifest +++ b/dev-db/postgresql/Manifest @@ -9,17 +9,25 @@ AUX postgresql.confd-9.3 2477 BLAKE2B 0d42eedb99c951c8c60ed02abb5d4526bc288e8dd5 AUX postgresql.init-9.3-r1 4999 BLAKE2B f2bc23a51b6d9643bbc14320aaa9c41b7eb1df86f8b760b9146739b14060178a415fe49b77a47b6bc5522759759fa0aefa9f0050b340534a64c2f22f89c7825d SHA512 a0f003c7d00b9749b8b25fce8ac728869e0c8f5a3c87e699b62806207413d5abba8db1e9d35e801316fbfb0ee070eb3b6a099b7991065c21cdb27ca7dc164bed AUX postgresql.service-9.6-r1 1477 BLAKE2B 2a652d5b2892f3a52f484fcc0b4f4dad09cf4b46c3739c3f805072040a26128cb2ad9a25d4a7c9f109a95696d739538d379af6bac53c656f5c41af45b6110de5 SHA512 9e2b04923f6ebec1424c0f276c58a6a0c4933f2de5e2a9776169227729afd06ce5284461be8b6ed70e5aaff2a68b9f96c6893d867d35761c9977f9847ccfe93d AUX postgresql.tmpfiles 39 BLAKE2B 25a5725af53c8e4e4009887e998172dd863ce218a5438351194548c4fc8ea15308dfba3602d5a922cf49b46015198268a4a4528119d8a74dcef4cc4c1767c052 SHA512 498060f2a597cf374f4fb31deaa2d6c5b00edef68efc0e71b82bfc20b717ae12518ba18fcb455a0c518ebba1a0868f38321470616151d02fa79b889a66dcb9f8 -DIST postgresql-12.22.tar.bz2 21305304 BLAKE2B 136ac89a0f66bdc35b36e8acd7bc9264fab445ac0728e8d4d69903684810b392e1d3fd39f426b31cdceaa953a5de4f63ffe33c86b6643d5ffde12e32c9ecd4be SHA512 45e659e1c2efdaefb1cb467f936f5bdee6d08087089818bc315bbc39978307619d36e8613f65755c96949dbf6079e3efa8cf367e751d1f157d3e3650c3b4a3a8 DIST postgresql-13.18.tar.bz2 21687645 BLAKE2B dd8c5906f7d53b5447e8c307960a5ff7cf25cec711a508acf80609e12f9411c9382753da313e31a546be528ff8263327befadcb5f8a40c3164a56f582710bc43 SHA512 2694ff9402683c90ccfbb53a465f6b6a09702b9b5b44e2db84a3a41175427d889d1b823897fd361b04a53dd3596289822e36a77215cb45dd972d79850fbdb97b +DIST postgresql-13.19.tar.bz2 21729020 BLAKE2B ea561309053224a9181ec7a282259c5220deddaa0c871942ec9574c700626384c8215552796a1178f202ece97ab439f8dea680f51fe431526afab171c338da73 SHA512 cb11fbd65067572c46a06cb8c0838d2233b32b734b89db9bea954add6c50ffce2119222555dd66d3af568058b8939da2f36c288b76e8ed3f130c5504019d5f11 DIST postgresql-14.15.tar.bz2 22458243 BLAKE2B 4d5a1c253c5b015e68634ebe433dee421c5a1e1bac0cc5be2eb178001755656efd9642be2369d8b7a76fcbd4a127f40dd99d3c4624c137fca531558464df1a5d SHA512 227f9551167ee62e5185d6f6777e100ecc09f497b9ee1b5a8e659de8d4c237b0f9a97005706bbf64c3e839271e2630f6a417ba98dfce47bcb4c27e8641a7c6ef +DIST postgresql-14.16.tar.bz2 22491073 BLAKE2B 9ace49a4f941ac1107efd7642387956d7be1df5a41c7244964b77d1c7ca1908845590841db15694da92f49f1c3c59ad83e6b2d7c55885e2505b2ff7c1a2bbb1a SHA512 260b6a6bc42a448f9bb3bf4194f601d2c10de517e39c8437b194662e41aae5013f2921b3712014ada24a274edb0db5f7b9f69d15cbb48d77d36b4c53092c93e4 DIST postgresql-15.10.tar.bz2 23138615 BLAKE2B d187afd9897feb8bb353dee705817781f099e7cc41eb915f096196ad228646fc65d706c488258d5ee9033b20d2204fd11f5e92e33387310394e7cc102f02b72e SHA512 73513f5f688f470aadd95dddef3b39b5d140d539bdf3171e053a89b3eed4c769f7951280468e9f11102f2de9fe8742bb38676c8d5d43418544b9482d83957ef4 +DIST postgresql-15.11.tar.bz2 23167652 BLAKE2B 4345c0c45a3272b7b272b48a02b436d3ede7a8121dfe2e3ddd282eb46c6730a31829fdb465274d15d3f6f6a3d50f6dd75be4f750f42ec8eb0f89089de5da9091 SHA512 65a077313cf9836e6a9e48b3912d1fac98689f85e6dc00d64aa861158988bcb1719d8d9a64c5ad6fac2f0c75b447cfce5b9dc73229a9fcbbcd96e374fffe91dc DIST postgresql-16.6.tar.bz2 24856956 BLAKE2B 2d6d6efcc4cb0027c03422c839856ac024d3824a7e7da42cafbb961616cdd078064e78b6eb1c98565240ab1f78eb52582f38c9ce80b3a98f9e65568b2c14e40c SHA512 ffd6d39fb7aed87241237d68af4934fba1b4ac1be4d3c2833e308e50c21a693796fe54b73e0905365d7557009c40049a23b966aa86765b969797434a0d4bd5f8 +DIST postgresql-16.7.tar.bz2 24905167 BLAKE2B 1b72e3da10d77521315a8c0c7687390c00c41934bf71a2cd7985a158040f2ed1513e573f682a0ac59b721023be22ed5fa9922c73e3058b5d23c8955ecd38b9ee SHA512 9f91e3f66c361755b088969ba100c1193806495428a88b6df7353370d5bc74f464feac36c51ebcb6f7a6ab97cde539dd904efe5f7f43bcde5576c38c5d5aab54 DIST postgresql-17.2.tar.bz2 21408880 BLAKE2B 1afafbec5db26ab17f2410c40db38e30fc1413cd518d387bc01640232698407de97123d0c61e1ec4d32d1041055db874f04dd52ad3697f1b9993b1aff3c5156a SHA512 8e15e47c22d21e1cadc31249cf31af5abe34b8ab72930e58e5fe6124795ad237ca7b4fd3bf36b5f18589c4fc439dc2bab3045d9b4ba23d1846b4b2be6fd1cb69 -EBUILD postgresql-12.22.ebuild 13080 BLAKE2B f93d6444c5400325651e8e5218630a61ac38ac62c4ec9f4b1114e04510ba4aa038d5398e1444dd6f738d98cb07789ed7172e8852ade2be3cbfcc9b7f0fa17bee SHA512 9a9a8960ae4c0f2837348b27e6a59ead05c63f3c6fe8173411f5d65f3eccc6140b5b8f0efb5b1aa1c8f34788f9abda97037a6c1ae840d2b51022b89ac6e5eb57 +DIST postgresql-17.3.tar.bz2 21520115 BLAKE2B 49f794e2bd1fa05f881aa003fd601a8980601c795014aec71651d3b678370511da307de97a80540526204b339ca4caf95f3912929d57295f51d6f9a7e31d82c9 SHA512 700b62f2963d8074cae96bacd1faa74d86035ffa8291d81b5a0c1c1950b104a947a0f82b7aa02ddb0624b0da433690358f6a7f28201d83da7db850ea08b4b34f EBUILD postgresql-13.18.ebuild 13514 BLAKE2B 58468369244a1a10e1368f0e18818a042c3d3cdd8486e033d746e51e4f79cd89bf87a83bcc6784d0187222599b7ffe0b4dba74a2d57fe632ff5e5ff0e080a5f5 SHA512 1f14b4659e312b6e9520d5d27d654c578363af8e4ebe13d60c09a2ffdabaf38d20f648b461e15e196a7aab1ab0f8e7d2bfa434067a5be24dcb721cc398be76ca +EBUILD postgresql-13.19.ebuild 13521 BLAKE2B 909a298f7ff51b7bb874db645ca327a17924e036821fb2f9b485445d66e5c018cd80831a71e20b57da76b18bc3045a14d5be50e035ff345a4244204b0f73f51f SHA512 b23739dc3f9eb22ffd797d3a183bb85e5256e2f726a7fcb69c085db451564a502517f3a2aef132bc8b241f0fb250c0cd20b8c2e1b6f2d0ea9233bb06ff0da748 EBUILD postgresql-14.15.ebuild 13505 BLAKE2B 69079efc24a73284f4f30d5f654220f028ca897320fb5de6c6f14488dd2fcd4e131d5d3ebb5aa76f4d9004bab29a9c4ffe37ec084043047a1862cbc676654400 SHA512 f8797cba502ec87701f438ffa3a5a193e581d5b91a9ffe0e81572e75081b29b7b4cc33dbc06490584b62a31cc4e71f3f81700b4f87814d20da44f60a3a922b6c +EBUILD postgresql-14.16.ebuild 13512 BLAKE2B f756173ffe495ddb8da05b568ee5e040611ab52937d7b37c1a80982b3b87d3b9082fb06e5ce70dd6dcb8510959c0b1b015731f4c758e1a9e0f0f82ec2b612b49 SHA512 4d3c8d85e01f7d0792a1a7fd0f329595b4756cb08bc2cd7a8f957d37eee74d1f5b46835cc9c90fc6c2db23c656a5706a0a3d9b3c0e57552ed511383cc4d46729 EBUILD postgresql-15.10.ebuild 13567 BLAKE2B 764b6bc95fa8034d3ee7a638c91abb449aeef4bfbbc26ac51446ee88b28d22bc8f57ce3cfc10bb3088b6757973afa2b34f33091ad7d97d7832d921db26e3ee70 SHA512 a053c3db9acc458b2494b6c3147cb57eef7d873193e9ead44efbe7b4d42ee6262a96ecb6018907b26a2779597e08f7a4d71f30da8291a7607f4b9fcf4e79414a +EBUILD postgresql-15.11.ebuild 13574 BLAKE2B cd688971c7b0eef5f723b9a42abcf66e1a06f3cb0b8e6dfdf220912f743e1245437e630fd020b9cbda4e46bf682d4130686acb5ed4b3ced4e0fccd74052584e8 SHA512 1a57ffc07a7d25537045641aeb63a57ef67ca72e341206ab080832ad9ae2626e3de64aa3e9050e9093654facfdfc690ae75e243fb76a56f97283406f7247ffd1 EBUILD postgresql-16.6.ebuild 13577 BLAKE2B 7e3868cd681a4e848b0937ff2d7a1da82f0b35e295aa092ea075264f717c37ddd31e4b4ac64d1ad128b57f318818f9bd9aeb327f1f6fdf6ebf73d8ebfbd0f543 SHA512 047796cecd6fe7d2da64d19676f5064589ebe31c7e459c15d9b5c0e3be83542e4b5035c610c94c6e606b8d21005b552f5c183efe7caa09bbea4d45d8d3f87466 +EBUILD postgresql-16.7.ebuild 13584 BLAKE2B 7360296cd0b3a966e6d10cfb5c8186d407f0c98d215ea85902d4ca59be1423c6b9b592ea0ac5abf4d835e9a60129a36d35dca5427ac316f87640347286552361 SHA512 01f1f9b4228b07d974ba58bd78e55166d046cb294aa48ab908068ac18fb77aef5faf1c050b5f6887a59fa52a18d3a7fb186aa47a8417f64d01a53d0e777a69e0 EBUILD postgresql-17.2.ebuild 14045 BLAKE2B 14a460faa1e78c76104680c7d373d0c8ad6f40973e0b529a5fb6568ab0e923203f634957463649203a1cf33d82dbfda7331d6612983bbd2e909f1dd2729510bc SHA512 850c98c36ba9389371c9d7183c7f0ee99dee9816b8fc2efde3abb813932c6cd7428049799be9dac69f67d9f6b91bffa6bcd7ad0c95335f6b15699e32f801acfa +EBUILD postgresql-17.3.ebuild 14052 BLAKE2B 03cd84c8463f1b30655617bd167fdbc39c8cc60254a66dc14251d114ad7506d91beeaa8d7a8a088b37e34da1de7ab1ac2a60d3b1c715092215db960751e7082f SHA512 9425a842f2dd597ec20e527374b8c02a4646763d119b42f1cd0cf6a076ecedba8792684fcd3c96cb117de4fe8c35479b1c054abf45d074454c362047b3b6ed72 EBUILD postgresql-9999.ebuild 14411 BLAKE2B b441f9e8269a267388b2fe361f3f7ec53fee0471b3c64c5a69d853fb869b8d0aa5f8fb768e628a7e3acc844841e465d0bce1452b2132be6d44270610d219ae37 SHA512 b637455bc50f6e0a0ccc6c1d7273da1b19fdd04bbaeebdaa119094ba78a27154a5d14c56aa18f5b04af39df64d70fef9e1d8c1a2972d755d5b57a43679048262 MISC metadata.xml 653 BLAKE2B b5b85d83ee78ac502e2707d156e2fadf6fea857160e2f48da51c755e221c52a14b9eb04354202287f4aba15c274c07ba7b0911c76fd034bfa774ce3500ccb165 SHA512 fd543af224f6f8677e138cb1db7154d2444295c45df8696e3584911943176023d8d1b179f6b16d88ffc6d290265ec1b2f4c902cf95cc79eb37599ae3635b0942 diff --git a/dev-db/postgresql/postgresql-12.22.ebuild b/dev-db/postgresql/postgresql-12.22.ebuild deleted file mode 100644 index 38d126fda22e..000000000000 --- a/dev-db/postgresql/postgresql-12.22.ebuild +++ /dev/null @@ -1,445 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10,11,12,13} ) -LLVM_COMPAT=( {15..18} ) -LLVM_OPTIONAL=1 - -inherit flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles - -KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" - -SLOT=$(ver_cut 1) - -MY_PV=${PV/_/} -S="${WORKDIR}/${PN}-${MY_PV}" - -SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2" - -LICENSE="POSTGRESQL GPL-2" -DESCRIPTION="PostgreSQL RDBMS" -HOMEPAGE="https://www.postgresql.org/" - -IUSE="debug doc icu kerberos ldap llvm nls pam perl python +readline - selinux +server systemd ssl static-libs tcl uuid xml zlib" - -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" - -CDEPEND=" ->=app-eselect/eselect-postgresql-2.0 -acct-group/postgres -acct-user/postgres -sys-apps/less -virtual/libintl -icu? ( dev-libs/icu:= ) -kerberos? ( virtual/krb5 ) -ldap? ( net-nds/openldap:= ) -llvm? ( $(llvm_gen_dep ' - llvm-core/clang:${LLVM_SLOT} - llvm-core/llvm:${LLVM_SLOT} - ') ) -pam? ( sys-libs/pam ) -perl? ( >=dev-lang/perl-5.8:= ) -python? ( ${PYTHON_DEPS} ) -readline? ( sys-libs/readline:0= ) -server? ( systemd? ( sys-apps/systemd ) ) -ssl? ( >=dev-libs/openssl-0.9.6-r1:0= ) -tcl? ( >=dev-lang/tcl-8:0= ) -xml? ( dev-libs/libxml2 dev-libs/libxslt ) -zlib? ( sys-libs/zlib ) -" - -# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no -# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems, -# the libc includes UUID functions. -UTIL_LINUX_LIBC=( elibc_{glibc,musl} ) - -nest_usedep() { - local front back - while [[ ${#} -gt 1 ]]; do - front+="${1}? ( " - back+=" )" - shift - done - echo "${front}${1}${back}" -} - -CDEPEND+=" -uuid? ( - ${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )} - $(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} dev-libs/ossp-uuid) -)" - -DEPEND="${CDEPEND} -sys-devel/bison -app-alternatives/lex -nls? ( sys-devel/gettext ) -xml? ( virtual/pkgconfig ) -" - -RDEPEND="${CDEPEND} -selinux? ( sec-policy/selinux-postgresql ) -" - -pkg_setup() { - use llvm && llvm-r1_pkg_setup - - use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup - - use python && python-single-r1_pkg_setup -} - -src_prepare() { - # Set proper run directory - sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ - -i src/include/pg_config_manual.h || die - - # Rely on $PATH being in the proper order so that the correct - # install program is used for modules utilizing PGXS in both - # hardened and non-hardened environments. (Bug #528786) - sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die - - use server || eapply "${FILESDIR}/${PN}-12.1-no-server.patch" - - if use pam ; then - sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ - -i src/backend/libpq/auth.c || \ - die 'PGSQL_PAM_SERVICE rename failed.' - fi - - eapply_user -} - -src_configure() { - case ${CHOST} in - *-darwin*|*-solaris*) - use nls && append-libs intl - ;; - esac - - export LDFLAGS_SL="${LDFLAGS}" - export LDFLAGS_EX="${LDFLAGS}" - - local PO="${EPREFIX}" - - local i uuid_config="" - if use uuid; then - for i in ${UTIL_LINUX_LIBC[@]}; do - use ${i} && uuid_config="--with-uuid=e2fs" - done - [[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp" - fi - - econf \ - --prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \ - --datadir="${PO}/usr/share/postgresql-${SLOT}" \ - --includedir="${PO}/usr/include/postgresql-${SLOT}" \ - --mandir="${PO}/usr/share/postgresql-${SLOT}/man" \ - --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ - --with-system-tzdata="${PO}/usr/share/zoneinfo" \ - $(use_enable !alpha spinlocks) \ - $(use_enable debug) \ - $(use_with icu) \ - $(use_with kerberos gssapi) \ - $(use_with ldap) \ - $(use_with llvm) \ - $(use_with pam) \ - $(use_with perl) \ - $(use_with python) \ - $(use_with readline) \ - $(use_with ssl openssl) \ - $(usex server "$(use_with systemd)" '--without-systemd') \ - $(use_with tcl) \ - ${uuid_config} \ - $(use_with xml libxml) \ - $(use_with xml libxslt) \ - $(use_with zlib) \ - $(use_enable nls) -} - -src_compile() { - emake - emake -C contrib -} - -src_install() { - emake DESTDIR="${D}" install - emake DESTDIR="${D}" install -C contrib - - dodoc README HISTORY - - # man pages are already built, but if we have the target make them, - # they'll be generated from source before being installed so we - # manually install man pages. - # We use ${SLOT} instead of doman for postgresql.eselect - insinto /usr/share/postgresql-${SLOT}/man/ - doins -r doc/src/sgml/man{1,3,7} - if ! use server; then - # Remove man pages for non-existent binaries - serverman=( - initdb - pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby} - pg_{test_{fsync,timing},upgrade,waldump} - post{gres,master} - ) - for m in ${serverman[@]} ; do - rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" - done - fi - docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} - - # Create slot specific man pages - local bn f mansec slotted_name - for mansec in 1 3 7 ; do - local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}" - - mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir" - pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed" - - for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do - bn=$(basename "${f}") - slotted_name=${bn%.${mansec}}${SLOT}.${mansec} - case ${bn} in - TABLE.7|WITH.7) - echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name} - ;; - *) - echo ".so ${rel_manpath}/${bn}" > ${slotted_name} - ;; - esac - done - - popd > /dev/null - done - - insinto /etc/postgresql-${SLOT} - newins src/bin/psql/psqlrc.sample psqlrc - - # Don't delete libpg{port,common}.a (Bug #571046). They're always - # needed by extensions utilizing PGXS. - use static-libs || \ - find "${ED}" -name '*.a' ! -name libpgport.a ! -name libpgcommon.a \ - -delete - - # Make slot specific links to programs - local f bn - for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \ - -mindepth 1 -maxdepth 1) - do - bn=$(basename "${f}") - dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \ - "/usr/bin/${bn}${SLOT/.}" - done - - if use doc ; then - docinto html - dodoc doc/src/sgml/html/* - fi - - if use server; then - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT} - - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT} - - if use systemd; then - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service-9.6-r1" | \ - systemd_newunit - ${PN}-${SLOT}.service - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf - fi - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session - - if use prefix ; then - keepdir /run/postgresql - fperms 1775 /run/postgresql - fi - fi -} - -pkg_postinst() { - use server && use systemd && tmpfiles_process ${PN}-${SLOT}.conf - postgresql-config update - - elog "If you need a global psqlrc-file, you can place it in:" - elog " ${EROOT}/etc/postgresql-${SLOT}/" - - if use server ; then - elog - elog "Gentoo specific documentation:" - elog "https://wiki.gentoo.org/wiki/PostgreSQL" - elog - elog "Official documentation:" - elog "https://www.postgresql.org/docs/${SLOT}/static/index.html" - elog - elog "The default location of the Unix-domain socket is:" - elog " ${EROOT}/run/postgresql/" - elog - elog "Before initializing the database, you may want to edit PG_INITDB_OPTS" - elog "so that it contains your preferred locale in:" - elog " ${EROOT}/etc/conf.d/postgresql-${SLOT}" - elog - elog "Then, execute the following command to setup the initial database" - elog "environment:" - elog " emerge --config =${CATEGORY}/${PF}" - - if [[ -n ${REPLACING_VERSIONS} ]] ; then - ewarn "If your system is using 'pg_stat_statements' and you are running a" - ewarn "version of PostgreSQL ${SLOT}, we advise that you execute" - ewarn "the following command after upgrading:" - ewarn - ewarn "ALTER EXTENSION pg_stat_statements UPDATE;" - fi - fi -} - -pkg_prerm() { - if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then - ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?" - ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL" - - ebegin "Resuming removal in 10 seconds (Control-C to cancel)" - sleep 10 - eend 0 - fi -} - -pkg_postrm() { - postgresql-config update -} - -pkg_config() { - use server || die "USE flag 'server' not enabled. Nothing to configure." - - [[ -f "${EROOT}/etc/conf.d/postgresql-${SLOT}" ]] \ - && source "${EROOT}/etc/conf.d/postgresql-${SLOT}" - [[ -z "${PGDATA}" ]] && PGDATA="${EROOT}/etc/postgresql-${SLOT}/" - [[ -z "${DATA_DIR}" ]] \ - && DATA_DIR="${EROOT}/var/lib/postgresql/${SLOT}/data" - - # environment.bz2 may not contain the same locale as the current system - # locale. Unset and source from the current system locale. - if [ -f "${EROOT}/etc/env.d/02locale" ]; then - unset LANG - unset LC_CTYPE - unset LC_NUMERIC - unset LC_TIME - unset LC_COLLATE - unset LC_MONETARY - unset LC_MESSAGES - unset LC_ALL - source "${EROOT}/etc/env.d/02locale" - [ -n "${LANG}" ] && export LANG - [ -n "${LC_CTYPE}" ] && export LC_CTYPE - [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC - [ -n "${LC_TIME}" ] && export LC_TIME - [ -n "${LC_COLLATE}" ] && export LC_COLLATE - [ -n "${LC_MONETARY}" ] && export LC_MONETARY - [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES - [ -n "${LC_ALL}" ] && export LC_ALL - fi - - einfo "You can modify the paths and options passed to initdb by editing:" - einfo " ${EROOT}/etc/conf.d/postgresql-${SLOT}" - einfo - einfo "Information on options that can be passed to initdb are found at:" - einfo " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" - einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" - einfo - einfo "PG_INITDB_OPTS is currently set to:" - if [[ -z "${PG_INITDB_OPTS}" ]] ; then - einfo " (none)" - else - einfo " ${PG_INITDB_OPTS}" - fi - einfo - einfo "Configuration files will be installed to:" - einfo " ${PGDATA}" - einfo - einfo "The database cluster will be created in:" - einfo " ${DATA_DIR}" - einfo - - ebegin "Continuing initialization in 5 seconds (Control-C to cancel)" - sleep 5 - eend 0 - - if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then - eerror "The given directory, '${DATA_DIR}', is not empty." - eerror "Modify DATA_DIR to point to an empty directory." - die "${DATA_DIR} is not empty." - fi - - einfo "Creating the data directory ..." - if [[ ${EUID} == 0 ]] ; then - mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent dirs" - mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR" - chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't chown" - fi - - einfo "Initializing the database ..." - - if [[ ${EUID} == 0 ]] ; then - su - postgres -c "${EROOT}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}" - else - "${EROOT}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS} - fi - - if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then - mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}" - ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}" - fi - - # unix_socket_directory has no effect in postgresql.conf as it's - # overridden in the initscript - sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf - - einfo "The autovacuum function, which was in contrib, has been moved to the main" - einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled" - einfo "by default. You can disable it in the cluster's:" - einfo " ${PGDATA%/}/postgresql.conf" - einfo - if ! use systemd; then - einfo "The PostgreSQL server, by default, will log events to:" - einfo " ${DATA_DIR%/}/postmaster.log" - einfo - fi - if use prefix ; then - einfo "The location of the configuration files have moved to:" - einfo " ${PGDATA}" - einfo "To start the server:" - einfo " pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'" - einfo "To stop:" - einfo " pg_ctl stop -D ${DATA_DIR}" - einfo - einfo "Or move the configuration files back:" - einfo "mv ${PGDATA}*.conf ${DATA_DIR}" - elif use systemd; then - einfo "You should use the 'postgresql-${SLOT}.service' unit to run PostgreSQL" - einfo "instead of 'pg_ctl'." - else - einfo "You should use the '${EROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL" - einfo "instead of 'pg_ctl'." - fi -} - -src_test() { - if use server && [[ ${UID} -ne 0 ]] ; then - emake check - - einfo "If you think other tests besides the regression tests are necessary, please" - einfo "submit a bug including a patch for this ebuild to enable them." - else - use server || \ - ewarn 'Tests cannot be run without the "server" use flag enabled.' - [[ ${UID} -eq 0 ]] || \ - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' - - ewarn 'Skipping.' - fi -} diff --git a/dev-db/postgresql/postgresql-13.19.ebuild b/dev-db/postgresql/postgresql-13.19.ebuild new file mode 100644 index 000000000000..c184ee372b5f --- /dev/null +++ b/dev-db/postgresql/postgresql-13.19.ebuild @@ -0,0 +1,457 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10,11,12,13} ) +LLVM_COMPAT=( {15..19} ) +LLVM_OPTIONAL=1 + +inherit flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" + +SLOT=$(ver_cut 1) + +MY_PV=${PV/_/} +S="${WORKDIR}/${PN}-${MY_PV}" + +SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2" + +LICENSE="POSTGRESQL GPL-2" +DESCRIPTION="PostgreSQL RDBMS" +HOMEPAGE="https://www.postgresql.org/" + +IUSE="debug doc icu kerberos ldap llvm nls pam perl python +readline + selinux +server systemd ssl static-libs tcl uuid xml zlib" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +CDEPEND=" +>=app-eselect/eselect-postgresql-2.0 +acct-group/postgres +acct-user/postgres +sys-apps/less +virtual/libintl +icu? ( dev-libs/icu:= ) +kerberos? ( virtual/krb5 ) +ldap? ( net-nds/openldap:= ) +llvm? ( $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') ) +pam? ( sys-libs/pam ) +perl? ( >=dev-lang/perl-5.8:= ) +python? ( ${PYTHON_DEPS} ) +readline? ( sys-libs/readline:0= ) +server? ( systemd? ( sys-apps/systemd ) ) +ssl? ( >=dev-libs/openssl-0.9.6-r1:0= ) +tcl? ( >=dev-lang/tcl-8:0= ) +xml? ( dev-libs/libxml2 dev-libs/libxslt ) +zlib? ( sys-libs/zlib ) +" + +# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no +# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems, +# the libc includes UUID functions. +UTIL_LINUX_LIBC=( elibc_{glibc,musl} ) + +nest_usedep() { + local front back + while [[ ${#} -gt 1 ]]; do + front+="${1}? ( " + back+=" )" + shift + done + echo "${front}${1}${back}" +} + +CDEPEND+=" +uuid? ( + ${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )} + $(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} dev-libs/ossp-uuid) +)" + +DEPEND="${CDEPEND} +sys-devel/bison +app-alternatives/lex +nls? ( sys-devel/gettext ) +xml? ( virtual/pkgconfig ) +" + +RDEPEND="${CDEPEND} +selinux? ( sec-policy/selinux-postgresql ) +" + +pkg_setup() { + use llvm && llvm-r1_pkg_setup + + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + + use python && python-single-r1_pkg_setup +} + +src_prepare() { + eapply "${FILESDIR}"/${PN}-13.3-riscv-spinlocks.patch + + # Set proper run directory + sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ + -i src/include/pg_config_manual.h || die + + # Rely on $PATH being in the proper order so that the correct + # install program is used for modules utilizing PGXS in both + # hardened and non-hardened environments. (Bug #528786) + sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die + + use server || eapply "${FILESDIR}/${PN}-13.8-no-server.patch" + + if use pam ; then + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + -i src/backend/libpq/auth.c || \ + die 'PGSQL_PAM_SERVICE rename failed.' + fi + + eapply_user +} + +src_configure() { + case ${CHOST} in + *-darwin*|*-solaris*) + use nls && append-libs intl + ;; + esac + + export LDFLAGS_SL="${LDFLAGS}" + export LDFLAGS_EX="${LDFLAGS}" + + local PO="${EPREFIX}" + + local i uuid_config="" + if use uuid; then + for i in ${UTIL_LINUX_LIBC[@]}; do + use ${i} && uuid_config="--with-uuid=e2fs" + done + [[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp" + fi + + local myconf="\ + --prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \ + --datadir="${PO}/usr/share/postgresql-${SLOT}" \ + --includedir="${PO}/usr/include/postgresql-${SLOT}" \ + --mandir="${PO}/usr/share/postgresql-${SLOT}/man" \ + --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ + --with-system-tzdata="${PO}/usr/share/zoneinfo" \ + $(use_enable debug) \ + $(use_with icu) \ + $(use_with kerberos gssapi) \ + $(use_with ldap) \ + $(use_with llvm) \ + $(use_with pam) \ + $(use_with perl) \ + $(use_with python) \ + $(use_with readline) \ + $(use_with ssl openssl) \ + $(usex server "$(use_with systemd)" '--without-systemd') \ + $(use_with tcl) \ + ${uuid_config} \ + $(use_with xml libxml) \ + $(use_with xml libxslt) \ + $(use_with zlib) \ + $(use_enable nls)" + if use alpha; then + myconf+=" --disable-spinlocks" + else + # Should be the default but just in case + myconf+=" --enable-spinlocks" + fi + econf ${myconf} +} + +src_compile() { + emake + emake -C contrib +} + +src_install() { + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib + + dodoc README HISTORY + + # man pages are already built, but if we have the target make them, + # they'll be generated from source before being installed so we + # manually install man pages. + # We use ${SLOT} instead of doman for postgresql.eselect + insinto /usr/share/postgresql-${SLOT}/man/ + doins -r doc/src/sgml/man{1,3,7} + if ! use server; then + # Remove man pages for non-existent binaries + serverman=( + initdb + pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby} + pg_{test_{fsync,timing},upgrade,waldump} + post{gres,master} + ) + for m in ${serverman[@]} ; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done + fi + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + + # Create slot specific man pages + local bn f mansec slotted_name + for mansec in 1 3 7 ; do + local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}" + + mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir" + pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed" + + for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do + bn=$(basename "${f}") + slotted_name=${bn%.${mansec}}${SLOT}.${mansec} + case ${bn} in + TABLE.7|WITH.7) + echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name} + ;; + *) + echo ".so ${rel_manpath}/${bn}" > ${slotted_name} + ;; + esac + done + + popd > /dev/null + done + + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc + + # Don't delete libpg{port,common}.a (Bug #571046). They're always + # needed by extensions utilizing PGXS. + use static-libs || \ + find "${ED}" -name '*.a' ! -name libpgport.a ! -name libpgcommon.a \ + -delete + + # Make slot specific links to programs + local f bn + for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \ + -mindepth 1 -maxdepth 1) + do + bn=$(basename "${f}") + dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \ + "/usr/bin/${bn}${SLOT/.}" + done + + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + fi + + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT} + + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT} + + if use systemd; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service-9.6-r1" | \ + systemd_newunit - ${PN}-${SLOT}.service + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + fi + + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi + fi +} + +pkg_postinst() { + use server && use systemd && tmpfiles_process ${PN}-${SLOT}.conf + postgresql-config update + + elog "If you need a global psqlrc-file, you can place it in:" + elog " ${EROOT}/etc/postgresql-${SLOT}/" + + if use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + elog "https://www.postgresql.org/docs/${SLOT}/static/index.html" + elog + elog "The default location of the Unix-domain socket is:" + elog " ${EROOT}/run/postgresql/" + elog + elog "Before initializing the database, you may want to edit PG_INITDB_OPTS" + elog "so that it contains your preferred locale in:" + elog " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + elog + elog "Then, execute the following command to setup the initial database" + elog "environment:" + elog " emerge --config =${CATEGORY}/${PF}" + + if [[ -n ${REPLACING_VERSIONS} ]] ; then + ewarn "If your system is using 'pg_stat_statements' and you are running a" + ewarn "version of PostgreSQL ${SLOT}, we advise that you execute" + ewarn "the following command after upgrading:" + ewarn + ewarn "ALTER EXTENSION pg_stat_statements UPDATE;" + fi + fi +} + +pkg_prerm() { + if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then + ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?" + ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL" + + ebegin "Resuming removal in 10 seconds (Control-C to cancel)" + sleep 10 + eend 0 + fi +} + +pkg_postrm() { + postgresql-config update +} + +pkg_config() { + use server || die "USE flag 'server' not enabled. Nothing to configure." + + [[ -f "${EROOT}/etc/conf.d/postgresql-${SLOT}" ]] \ + && source "${EROOT}/etc/conf.d/postgresql-${SLOT}" + [[ -z "${PGDATA}" ]] && PGDATA="${EROOT}/etc/postgresql-${SLOT}/" + [[ -z "${DATA_DIR}" ]] \ + && DATA_DIR="${EROOT}/var/lib/postgresql/${SLOT}/data" + + # environment.bz2 may not contain the same locale as the current system + # locale. Unset and source from the current system locale. + if [ -f "${EROOT}/etc/env.d/02locale" ]; then + unset LANG + unset LC_CTYPE + unset LC_NUMERIC + unset LC_TIME + unset LC_COLLATE + unset LC_MONETARY + unset LC_MESSAGES + unset LC_ALL + source "${EROOT}/etc/env.d/02locale" + [ -n "${LANG}" ] && export LANG + [ -n "${LC_CTYPE}" ] && export LC_CTYPE + [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC + [ -n "${LC_TIME}" ] && export LC_TIME + [ -n "${LC_COLLATE}" ] && export LC_COLLATE + [ -n "${LC_MONETARY}" ] && export LC_MONETARY + [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES + [ -n "${LC_ALL}" ] && export LC_ALL + fi + + einfo "You can modify the paths and options passed to initdb by editing:" + einfo " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + einfo + einfo "Information on options that can be passed to initdb are found at:" + einfo " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" + einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" + einfo + einfo "PG_INITDB_OPTS is currently set to:" + if [[ -z "${PG_INITDB_OPTS}" ]] ; then + einfo " (none)" + else + einfo " ${PG_INITDB_OPTS}" + fi + einfo + einfo "Configuration files will be installed to:" + einfo " ${PGDATA}" + einfo + einfo "The database cluster will be created in:" + einfo " ${DATA_DIR}" + einfo + + ebegin "Continuing initialization in 5 seconds (Control-C to cancel)" + sleep 5 + eend 0 + + if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then + eerror "The given directory, '${DATA_DIR}', is not empty." + eerror "Modify DATA_DIR to point to an empty directory." + die "${DATA_DIR} is not empty." + fi + + einfo "Creating the data directory ..." + if [[ ${EUID} == 0 ]] ; then + mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent dirs" + mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR" + chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't chown" + fi + + einfo "Initializing the database ..." + + if [[ ${EUID} == 0 ]] ; then + su - postgres -c "${EROOT}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}" + else + "${EROOT}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS} + fi + + if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then + mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}" + ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}" + fi + + # unix_socket_directory has no effect in postgresql.conf as it's + # overridden in the initscript + sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf + + einfo "The autovacuum function, which was in contrib, has been moved to the main" + einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled" + einfo "by default. You can disable it in the cluster's:" + einfo " ${PGDATA%/}/postgresql.conf" + einfo + if ! use systemd; then + einfo "The PostgreSQL server, by default, will log events to:" + einfo " ${DATA_DIR%/}/postmaster.log" + einfo + fi + if use prefix ; then + einfo "The location of the configuration files have moved to:" + einfo " ${PGDATA}" + einfo "To start the server:" + einfo " pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'" + einfo "To stop:" + einfo " pg_ctl stop -D ${DATA_DIR}" + einfo + einfo "Or move the configuration files back:" + einfo "mv ${PGDATA}*.conf ${DATA_DIR}" + elif use systemd; then + einfo "You should use the 'postgresql-${SLOT}.service' unit to run PostgreSQL" + einfo "instead of 'pg_ctl'." + else + einfo "You should use the '${EROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL" + einfo "instead of 'pg_ctl'." + fi +} + +src_test() { + if use server && [[ ${UID} -ne 0 ]] ; then + # Some ICU tests fail if LC_CTYPE and LC_COLLATE aren't the same. We set + # LC_CTYPE to be equal to LC_COLLATE since LC_COLLATE is set by Portage. + local old_ctype=${LC_CTYPE} + export LC_CTYPE=${LC_COLLATE} + emake check + export LC_CTYPE=${old_ctype} + einfo "If you think other tests besides the regression tests are necessary, please" + einfo "submit a bug including a patch for this ebuild to enable them." + else + use server || \ + ewarn 'Tests cannot be run without the "server" use flag enabled.' + [[ ${UID} -eq 0 ]] || \ + ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + + ewarn 'Skipping.' + fi +} diff --git a/dev-db/postgresql/postgresql-14.16.ebuild b/dev-db/postgresql/postgresql-14.16.ebuild new file mode 100644 index 000000000000..3a3e68ee28a9 --- /dev/null +++ b/dev-db/postgresql/postgresql-14.16.ebuild @@ -0,0 +1,457 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10,11,12,13} ) +LLVM_COMPAT=( {15..19} ) +LLVM_OPTIONAL=1 + +inherit flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" + +SLOT=$(ver_cut 1) + +MY_PV=${PV/_/} +S="${WORKDIR}/${PN}-${MY_PV}" + +SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2" + +LICENSE="POSTGRESQL GPL-2" +DESCRIPTION="PostgreSQL RDBMS" +HOMEPAGE="https://www.postgresql.org/" + +IUSE="debug doc icu kerberos ldap llvm +lz4 nls pam perl python +readline + selinux +server systemd ssl static-libs tcl uuid xml zlib" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +CDEPEND=" +>=app-eselect/eselect-postgresql-2.0 +acct-group/postgres +acct-user/postgres +sys-apps/less +virtual/libintl +icu? ( dev-libs/icu:= ) +kerberos? ( virtual/krb5 ) +ldap? ( net-nds/openldap:= ) +llvm? ( $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') ) +lz4? ( app-arch/lz4 ) +pam? ( sys-libs/pam ) +perl? ( >=dev-lang/perl-5.8:= ) +python? ( ${PYTHON_DEPS} ) +readline? ( sys-libs/readline:0= ) +server? ( systemd? ( sys-apps/systemd ) ) +ssl? ( >=dev-libs/openssl-0.9.6-r1:0= ) +tcl? ( >=dev-lang/tcl-8:0= ) +xml? ( dev-libs/libxml2 dev-libs/libxslt ) +zlib? ( sys-libs/zlib ) +" + +# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no +# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems, +# the libc includes UUID functions. +UTIL_LINUX_LIBC=( elibc_{glibc,musl} ) + +nest_usedep() { + local front back + while [[ ${#} -gt 1 ]]; do + front+="${1}? ( " + back+=" )" + shift + done + echo "${front}${1}${back}" +} + +CDEPEND+=" +uuid? ( + ${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )} + $(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} dev-libs/ossp-uuid) +)" + +DEPEND="${CDEPEND} +sys-devel/bison +app-alternatives/lex +nls? ( sys-devel/gettext ) +xml? ( virtual/pkgconfig ) +" + +RDEPEND="${CDEPEND} +selinux? ( sec-policy/selinux-postgresql ) +" + +pkg_setup() { + use llvm && llvm-r1_pkg_setup + + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + + use python && python-single-r1_pkg_setup +} + +src_prepare() { + # Set proper run directory + sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ + -i src/include/pg_config_manual.h || die + + # Rely on $PATH being in the proper order so that the correct + # install program is used for modules utilizing PGXS in both + # hardened and non-hardened environments. (Bug #528786) + sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die + + use server || eapply "${FILESDIR}/${PN}-14.5-no-server.patch" + + if use pam ; then + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + -i src/backend/libpq/auth.c || \ + die 'PGSQL_PAM_SERVICE rename failed.' + fi + + eapply_user +} + +src_configure() { + case ${CHOST} in + *-darwin*|*-solaris*) + use nls && append-libs intl + ;; + esac + + export LDFLAGS_SL="${LDFLAGS}" + export LDFLAGS_EX="${LDFLAGS}" + + local PO="${EPREFIX}" + + local i uuid_config="" + if use uuid; then + for i in ${UTIL_LINUX_LIBC[@]}; do + use ${i} && uuid_config="--with-uuid=e2fs" + done + [[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp" + fi + + local myconf="\ + --prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \ + --datadir="${PO}/usr/share/postgresql-${SLOT}" \ + --includedir="${PO}/usr/include/postgresql-${SLOT}" \ + --mandir="${PO}/usr/share/postgresql-${SLOT}/man" \ + --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ + --with-system-tzdata="${PO}/usr/share/zoneinfo" \ + $(use_enable debug) \ + $(use_with icu) \ + $(use_with kerberos gssapi) \ + $(use_with ldap) \ + $(use_with llvm) \ + $(use_with lz4) \ + $(use_with pam) \ + $(use_with perl) \ + $(use_with python) \ + $(use_with readline) \ + $(use_with ssl openssl) \ + $(usex server "$(use_with systemd)" '--without-systemd') \ + $(use_with tcl) \ + ${uuid_config} \ + $(use_with xml libxml) \ + $(use_with xml libxslt) \ + $(use_with zlib) \ + $(use_enable nls)" + if use alpha; then + myconf+=" --disable-spinlocks" + else + # Should be the default but just in case + myconf+=" --enable-spinlocks" + fi + econf ${myconf} +} + +src_compile() { + emake + emake -C contrib +} + +src_install() { + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib + + dodoc README HISTORY + + # man pages are already built, but if we have the target make them, + # they'll be generated from source before being installed so we + # manually install man pages. + # We use ${SLOT} instead of doman for postgresql.eselect + insinto /usr/share/postgresql-${SLOT}/man/ + doins -r doc/src/sgml/man{1,3,7} + if ! use server; then + # Remove man pages for non-existent binaries + serverman=( + initdb + pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby} + pg_{test_{fsync,timing},upgrade,waldump} + post{gres,master} + ) + for m in ${serverman[@]} ; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done + fi + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + + # Create slot specific man pages + local bn f mansec slotted_name + for mansec in 1 3 7 ; do + local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}" + + mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir" + pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed" + + for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do + bn=$(basename "${f}") + slotted_name=${bn%.${mansec}}${SLOT}.${mansec} + case ${bn} in + TABLE.7|WITH.7) + echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name} + ;; + *) + echo ".so ${rel_manpath}/${bn}" > ${slotted_name} + ;; + esac + done + + popd > /dev/null + done + + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc + + # Don't delete libpg{port,common}.a (Bug #571046). They're always + # needed by extensions utilizing PGXS. + use static-libs || \ + find "${ED}" -name '*.a' ! -name libpgport.a ! -name libpgcommon.a \ + -delete + + # Make slot specific links to programs + local f bn + for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \ + -mindepth 1 -maxdepth 1) + do + bn=$(basename "${f}") + dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \ + "/usr/bin/${bn}${SLOT/.}" + done + + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + fi + + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT} + + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT} + + if use systemd; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service-9.6-r1" | \ + systemd_newunit - ${PN}-${SLOT}.service + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + fi + + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi + fi +} + +pkg_postinst() { + use server && use systemd && tmpfiles_process ${PN}-${SLOT}.conf + postgresql-config update + + elog "If you need a global psqlrc-file, you can place it in:" + elog " ${EROOT}/etc/postgresql-${SLOT}/" + + if use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + elog "https://www.postgresql.org/docs/${SLOT}/static/index.html" + elog + elog "The default location of the Unix-domain socket is:" + elog " ${EROOT}/run/postgresql/" + elog + elog "Before initializing the database, you may want to edit PG_INITDB_OPTS" + elog "so that it contains your preferred locale in:" + elog " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + elog + elog "Then, execute the following command to setup the initial database" + elog "environment:" + elog " emerge --config =${CATEGORY}/${PF}" + + if [[ -n ${REPLACING_VERSIONS} ]] ; then + ewarn "If your system is using 'pg_stat_statements' and you are running a" + ewarn "version of PostgreSQL ${SLOT}, we advise that you execute" + ewarn "the following command after upgrading:" + ewarn + ewarn "ALTER EXTENSION pg_stat_statements UPDATE;" + fi + fi +} + +pkg_prerm() { + if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then + ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?" + ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL" + + ebegin "Resuming removal in 10 seconds (Control-C to cancel)" + sleep 10 + eend 0 + fi +} + +pkg_postrm() { + postgresql-config update +} + +pkg_config() { + use server || die "USE flag 'server' not enabled. Nothing to configure." + + [[ -f "${EROOT}/etc/conf.d/postgresql-${SLOT}" ]] \ + && source "${EROOT}/etc/conf.d/postgresql-${SLOT}" + [[ -z "${PGDATA}" ]] && PGDATA="${EROOT}/etc/postgresql-${SLOT}/" + [[ -z "${DATA_DIR}" ]] \ + && DATA_DIR="${EROOT}/var/lib/postgresql/${SLOT}/data" + + # environment.bz2 may not contain the same locale as the current system + # locale. Unset and source from the current system locale. + if [ -f "${EROOT}/etc/env.d/02locale" ]; then + unset LANG + unset LC_CTYPE + unset LC_NUMERIC + unset LC_TIME + unset LC_COLLATE + unset LC_MONETARY + unset LC_MESSAGES + unset LC_ALL + source "${EROOT}/etc/env.d/02locale" + [ -n "${LANG}" ] && export LANG + [ -n "${LC_CTYPE}" ] && export LC_CTYPE + [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC + [ -n "${LC_TIME}" ] && export LC_TIME + [ -n "${LC_COLLATE}" ] && export LC_COLLATE + [ -n "${LC_MONETARY}" ] && export LC_MONETARY + [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES + [ -n "${LC_ALL}" ] && export LC_ALL + fi + + einfo "You can modify the paths and options passed to initdb by editing:" + einfo " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + einfo + einfo "Information on options that can be passed to initdb are found at:" + einfo " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" + einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" + einfo + einfo "PG_INITDB_OPTS is currently set to:" + if [[ -z "${PG_INITDB_OPTS}" ]] ; then + einfo " (none)" + else + einfo " ${PG_INITDB_OPTS}" + fi + einfo + einfo "Configuration files will be installed to:" + einfo " ${PGDATA}" + einfo + einfo "The database cluster will be created in:" + einfo " ${DATA_DIR}" + einfo + + ebegin "Continuing initialization in 5 seconds (Control-C to cancel)" + sleep 5 + eend 0 + + if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then + eerror "The given directory, '${DATA_DIR}', is not empty." + eerror "Modify DATA_DIR to point to an empty directory." + die "${DATA_DIR} is not empty." + fi + + einfo "Creating the data directory ..." + if [[ ${EUID} == 0 ]] ; then + mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent dirs" + mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR" + chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't chown" + fi + + einfo "Initializing the database ..." + + if [[ ${EUID} == 0 ]] ; then + su - postgres -c "${EROOT}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}" + else + "${EROOT}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS} + fi + + if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then + mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}" + ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}" + fi + + # unix_socket_directory has no effect in postgresql.conf as it's + # overridden in the initscript + sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf + + einfo "The autovacuum function, which was in contrib, has been moved to the main" + einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled" + einfo "by default. You can disable it in the cluster's:" + einfo " ${PGDATA%/}/postgresql.conf" + einfo + if ! use systemd; then + einfo "The PostgreSQL server, by default, will log events to:" + einfo " ${DATA_DIR%/}/postmaster.log" + einfo + fi + if use prefix ; then + einfo "The location of the configuration files have moved to:" + einfo " ${PGDATA}" + einfo "To start the server:" + einfo " pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'" + einfo "To stop:" + einfo " pg_ctl stop -D ${DATA_DIR}" + einfo + einfo "Or move the configuration files back:" + einfo "mv ${PGDATA}*.conf ${DATA_DIR}" + elif use systemd; then + einfo "You should use the 'postgresql-${SLOT}.service' unit to run PostgreSQL" + einfo "instead of 'pg_ctl'." + else + einfo "You should use the '${EROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL" + einfo "instead of 'pg_ctl'." + fi +} + +src_test() { + if use server && [[ ${UID} -ne 0 ]] ; then + # Some ICU tests fail if LC_CTYPE and LC_COLLATE aren't the same. We set + # LC_CTYPE to be equal to LC_COLLATE since LC_COLLATE is set by Portage. + local old_ctype=${LC_CTYPE} + export LC_CTYPE=${LC_COLLATE} + emake check + export LC_CTYPE=${old_ctype} + einfo "If you think other tests besides the regression tests are necessary, please" + einfo "submit a bug including a patch for this ebuild to enable them." + else + use server || \ + ewarn 'Tests cannot be run without the "server" use flag enabled.' + [[ ${UID} -eq 0 ]] || \ + ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + + ewarn 'Skipping.' + fi +} diff --git a/dev-db/postgresql/postgresql-15.11.ebuild b/dev-db/postgresql/postgresql-15.11.ebuild new file mode 100644 index 000000000000..6d42aa0aa67c --- /dev/null +++ b/dev-db/postgresql/postgresql-15.11.ebuild @@ -0,0 +1,459 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10,11,12,13} ) +LLVM_COMPAT=( {15..19} ) +LLVM_OPTIONAL=1 + +inherit flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" + +SLOT=$(ver_cut 1) + +MY_PV=${PV/_/} +S="${WORKDIR}/${PN}-${MY_PV}" + +SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2" + +LICENSE="POSTGRESQL GPL-2" +DESCRIPTION="PostgreSQL RDBMS" +HOMEPAGE="https://www.postgresql.org/" + +IUSE="debug doc icu kerberos ldap llvm +lz4 nls pam perl python +readline + selinux +server systemd ssl static-libs tcl uuid xml zlib +zstd" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +CDEPEND=" +>=app-eselect/eselect-postgresql-2.0 +acct-group/postgres +acct-user/postgres +sys-apps/less +virtual/libintl +icu? ( dev-libs/icu:= ) +kerberos? ( virtual/krb5 ) +ldap? ( net-nds/openldap:= ) +llvm? ( $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') ) +lz4? ( app-arch/lz4 ) +pam? ( sys-libs/pam ) +perl? ( >=dev-lang/perl-5.8:= ) +python? ( ${PYTHON_DEPS} ) +readline? ( sys-libs/readline:0= ) +server? ( systemd? ( sys-apps/systemd ) ) +ssl? ( >=dev-libs/openssl-0.9.6-r1:0= ) +tcl? ( >=dev-lang/tcl-8:0= ) +xml? ( dev-libs/libxml2 dev-libs/libxslt ) +zlib? ( sys-libs/zlib ) +zstd? ( app-arch/zstd ) +" + +# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no +# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems, +# the libc includes UUID functions. +UTIL_LINUX_LIBC=( elibc_{glibc,musl} ) + +nest_usedep() { + local front back + while [[ ${#} -gt 1 ]]; do + front+="${1}? ( " + back+=" )" + shift + done + echo "${front}${1}${back}" +} + +CDEPEND+=" +uuid? ( + ${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )} + $(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} dev-libs/ossp-uuid) +)" + +DEPEND="${CDEPEND} +sys-devel/bison +app-alternatives/lex +nls? ( sys-devel/gettext ) +xml? ( virtual/pkgconfig ) +" + +RDEPEND="${CDEPEND} +selinux? ( sec-policy/selinux-postgresql ) +" + +pkg_setup() { + use llvm && llvm-r1_pkg_setup + + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + + use python && python-single-r1_pkg_setup +} + +src_prepare() { + # Set proper run directory + sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ + -i src/include/pg_config_manual.h || die + + # Rely on $PATH being in the proper order so that the correct + # install program is used for modules utilizing PGXS in both + # hardened and non-hardened environments. (Bug #528786) + sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die + + use server || eapply "${FILESDIR}/${PN}-15_beta3-no-server.patch" + + if use pam ; then + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + -i src/backend/libpq/auth.c || \ + die 'PGSQL_PAM_SERVICE rename failed.' + fi + + eapply_user +} + +src_configure() { + case ${CHOST} in + *-darwin*|*-solaris*) + use nls && append-libs intl + ;; + esac + + export LDFLAGS_SL="${LDFLAGS}" + export LDFLAGS_EX="${LDFLAGS}" + + local PO="${EPREFIX}" + + local i uuid_config="" + if use uuid; then + for i in ${UTIL_LINUX_LIBC[@]}; do + use ${i} && uuid_config="--with-uuid=e2fs" + done + [[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp" + fi + + local myconf="\ + --prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \ + --datadir="${PO}/usr/share/postgresql-${SLOT}" \ + --includedir="${PO}/usr/include/postgresql-${SLOT}" \ + --mandir="${PO}/usr/share/postgresql-${SLOT}/man" \ + --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ + --with-system-tzdata="${PO}/usr/share/zoneinfo" \ + $(use_enable debug) \ + $(use_with icu) \ + $(use_with kerberos gssapi) \ + $(use_with ldap) \ + $(use_with llvm) \ + $(use_with lz4) \ + $(use_with pam) \ + $(use_with perl) \ + $(use_with python) \ + $(use_with readline) \ + $(use_with ssl openssl) \ + $(usex server "$(use_with systemd)" '--without-systemd') \ + $(use_with tcl) \ + ${uuid_config} \ + $(use_with xml libxml) \ + $(use_with xml libxslt) \ + $(use_with zlib) \ + $(use_with zstd) \ + $(use_enable nls)" + if use alpha; then + myconf+=" --disable-spinlocks" + else + # Should be the default but just in case + myconf+=" --enable-spinlocks" + fi + econf ${myconf} +} + +src_compile() { + emake + emake -C contrib +} + +src_install() { + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib + + dodoc README HISTORY + + # man pages are already built, but if we have the target make them, + # they'll be generated from source before being installed so we + # manually install man pages. + # We use ${SLOT} instead of doman for postgresql.eselect + insinto /usr/share/postgresql-${SLOT}/man/ + doins -r doc/src/sgml/man{1,3,7} + if ! use server; then + # Remove man pages for non-existent binaries + serverman=( + initdb + pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby} + pg_{test_{fsync,timing},upgrade,waldump} + post{gres,master} + ) + for m in ${serverman[@]} ; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done + fi + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + + # Create slot specific man pages + local bn f mansec slotted_name + for mansec in 1 3 7 ; do + local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}" + + mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir" + pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed" + + for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do + bn=$(basename "${f}") + slotted_name=${bn%.${mansec}}${SLOT}.${mansec} + case ${bn} in + TABLE.7|WITH.7) + echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name} + ;; + *) + echo ".so ${rel_manpath}/${bn}" > ${slotted_name} + ;; + esac + done + + popd > /dev/null + done + + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc + + # Don't delete libpg{port,common}.a (Bug #571046). They're always + # needed by extensions utilizing PGXS. + use static-libs || \ + find "${ED}" -name '*.a' ! -name libpgport.a ! -name libpgcommon.a \ + -delete + + # Make slot specific links to programs + local f bn + for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \ + -mindepth 1 -maxdepth 1) + do + bn=$(basename "${f}") + dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \ + "/usr/bin/${bn}${SLOT/.}" + done + + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + fi + + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT} + + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT} + + if use systemd; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service-9.6-r1" | \ + systemd_newunit - ${PN}-${SLOT}.service + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + fi + + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi + fi +} + +pkg_postinst() { + use server && use systemd && tmpfiles_process ${PN}-${SLOT}.conf + postgresql-config update + + elog "If you need a global psqlrc-file, you can place it in:" + elog " ${EROOT}/etc/postgresql-${SLOT}/" + + if use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + elog "https://www.postgresql.org/docs/${SLOT}/static/index.html" + elog + elog "The default location of the Unix-domain socket is:" + elog " ${EROOT}/run/postgresql/" + elog + elog "Before initializing the database, you may want to edit PG_INITDB_OPTS" + elog "so that it contains your preferred locale in:" + elog " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + elog + elog "Then, execute the following command to setup the initial database" + elog "environment:" + elog " emerge --config =${CATEGORY}/${PF}" + + if [[ -n ${REPLACING_VERSIONS} ]] ; then + ewarn "If your system is using 'pg_stat_statements' and you are running a" + ewarn "version of PostgreSQL ${SLOT}, we advise that you execute" + ewarn "the following command after upgrading:" + ewarn + ewarn "ALTER EXTENSION pg_stat_statements UPDATE;" + fi + fi +} + +pkg_prerm() { + if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then + ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?" + ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL" + + ebegin "Resuming removal in 10 seconds (Control-C to cancel)" + sleep 10 + eend 0 + fi +} + +pkg_postrm() { + postgresql-config update +} + +pkg_config() { + use server || die "USE flag 'server' not enabled. Nothing to configure." + + [[ -f "${EROOT}/etc/conf.d/postgresql-${SLOT}" ]] \ + && source "${EROOT}/etc/conf.d/postgresql-${SLOT}" + [[ -z "${PGDATA}" ]] && PGDATA="${EROOT}/etc/postgresql-${SLOT}/" + [[ -z "${DATA_DIR}" ]] \ + && DATA_DIR="${EROOT}/var/lib/postgresql/${SLOT}/data" + + # environment.bz2 may not contain the same locale as the current system + # locale. Unset and source from the current system locale. + if [ -f "${EROOT}/etc/env.d/02locale" ]; then + unset LANG + unset LC_CTYPE + unset LC_NUMERIC + unset LC_TIME + unset LC_COLLATE + unset LC_MONETARY + unset LC_MESSAGES + unset LC_ALL + source "${EROOT}/etc/env.d/02locale" + [ -n "${LANG}" ] && export LANG + [ -n "${LC_CTYPE}" ] && export LC_CTYPE + [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC + [ -n "${LC_TIME}" ] && export LC_TIME + [ -n "${LC_COLLATE}" ] && export LC_COLLATE + [ -n "${LC_MONETARY}" ] && export LC_MONETARY + [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES + [ -n "${LC_ALL}" ] && export LC_ALL + fi + + einfo "You can modify the paths and options passed to initdb by editing:" + einfo " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + einfo + einfo "Information on options that can be passed to initdb are found at:" + einfo " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" + einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" + einfo + einfo "PG_INITDB_OPTS is currently set to:" + if [[ -z "${PG_INITDB_OPTS}" ]] ; then + einfo " (none)" + else + einfo " ${PG_INITDB_OPTS}" + fi + einfo + einfo "Configuration files will be installed to:" + einfo " ${PGDATA}" + einfo + einfo "The database cluster will be created in:" + einfo " ${DATA_DIR}" + einfo + + ebegin "Continuing initialization in 5 seconds (Control-C to cancel)" + sleep 5 + eend 0 + + if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then + eerror "The given directory, '${DATA_DIR}', is not empty." + eerror "Modify DATA_DIR to point to an empty directory." + die "${DATA_DIR} is not empty." + fi + + einfo "Creating the data directory ..." + if [[ ${EUID} == 0 ]] ; then + mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent dirs" + mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR" + chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't chown" + fi + + einfo "Initializing the database ..." + + if [[ ${EUID} == 0 ]] ; then + su - postgres -c "${EROOT}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}" + else + "${EROOT}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS} + fi + + if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then + mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}" + ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}" + fi + + # unix_socket_directory has no effect in postgresql.conf as it's + # overridden in the initscript + sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf + + einfo "The autovacuum function, which was in contrib, has been moved to the main" + einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled" + einfo "by default. You can disable it in the cluster's:" + einfo " ${PGDATA%/}/postgresql.conf" + einfo + if ! use systemd; then + einfo "The PostgreSQL server, by default, will log events to:" + einfo " ${DATA_DIR%/}/postmaster.log" + einfo + fi + if use prefix ; then + einfo "The location of the configuration files have moved to:" + einfo " ${PGDATA}" + einfo "To start the server:" + einfo " pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'" + einfo "To stop:" + einfo " pg_ctl stop -D ${DATA_DIR}" + einfo + einfo "Or move the configuration files back:" + einfo "mv ${PGDATA}*.conf ${DATA_DIR}" + elif use systemd; then + einfo "You should use the 'postgresql-${SLOT}.service' unit to run PostgreSQL" + einfo "instead of 'pg_ctl'." + else + einfo "You should use the '${EROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL" + einfo "instead of 'pg_ctl'." + fi +} + +src_test() { + if use server && [[ ${UID} -ne 0 ]] ; then + # Some ICU tests fail if LC_CTYPE and LC_COLLATE aren't the same. We set + # LC_CTYPE to be equal to LC_COLLATE since LC_COLLATE is set by Portage. + local old_ctype=${LC_CTYPE} + export LC_CTYPE=${LC_COLLATE} + emake check + export LC_CTYPE=${old_ctype} + einfo "If you think other tests besides the regression tests are necessary, please" + einfo "submit a bug including a patch for this ebuild to enable them." + else + use server || \ + ewarn 'Tests cannot be run without the "server" use flag enabled.' + [[ ${UID} -eq 0 ]] || \ + ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + + ewarn 'Skipping.' + fi +} diff --git a/dev-db/postgresql/postgresql-16.7.ebuild b/dev-db/postgresql/postgresql-16.7.ebuild new file mode 100644 index 000000000000..796af3705460 --- /dev/null +++ b/dev-db/postgresql/postgresql-16.7.ebuild @@ -0,0 +1,460 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10,11,12,13} ) +LLVM_COMPAT=( {15..19} ) +LLVM_OPTIONAL=1 + +inherit flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" + +SLOT=$(ver_cut 1) + +MY_PV=${PV/_/} +S="${WORKDIR}/${PN}-${MY_PV}" + +SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2" + +LICENSE="POSTGRESQL GPL-2" +DESCRIPTION="PostgreSQL RDBMS" +HOMEPAGE="https://www.postgresql.org/" + +IUSE="debug doc +icu kerberos ldap llvm +lz4 nls pam perl python + +readline selinux +server systemd ssl static-libs tcl uuid xml + zlib +zstd" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +CDEPEND=" +>=app-eselect/eselect-postgresql-2.0 +acct-group/postgres +acct-user/postgres +sys-apps/less +virtual/libintl +icu? ( dev-libs/icu:= ) +kerberos? ( app-crypt/mit-krb5 ) +ldap? ( net-nds/openldap:= ) +llvm? ( $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') ) +lz4? ( app-arch/lz4 ) +pam? ( sys-libs/pam ) +perl? ( >=dev-lang/perl-5.8:= ) +python? ( ${PYTHON_DEPS} ) +readline? ( sys-libs/readline:0= ) +server? ( systemd? ( sys-apps/systemd ) ) +ssl? ( >=dev-libs/openssl-0.9.6-r1:0= ) +tcl? ( >=dev-lang/tcl-8:0= ) +xml? ( dev-libs/libxml2 dev-libs/libxslt ) +zlib? ( sys-libs/zlib ) +zstd? ( app-arch/zstd ) +" + +# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no +# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems, +# the libc includes UUID functions. +UTIL_LINUX_LIBC=( elibc_{glibc,musl} ) + +nest_usedep() { + local front back + while [[ ${#} -gt 1 ]]; do + front+="${1}? ( " + back+=" )" + shift + done + echo "${front}${1}${back}" +} + +CDEPEND+=" +uuid? ( + ${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )} + $(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} dev-libs/ossp-uuid) +)" + +DEPEND="${CDEPEND} +sys-devel/bison +app-alternatives/lex +nls? ( sys-devel/gettext ) +xml? ( virtual/pkgconfig ) +" + +RDEPEND="${CDEPEND} +selinux? ( sec-policy/selinux-postgresql ) +" + +pkg_setup() { + use llvm && llvm-r1_pkg_setup + + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + + use python && python-single-r1_pkg_setup +} + +src_prepare() { + # Set proper run directory + sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ + -i src/include/pg_config_manual.h || die + + # Rely on $PATH being in the proper order so that the correct + # install program is used for modules utilizing PGXS in both + # hardened and non-hardened environments. (Bug #528786) + sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die + + use server || eapply "${FILESDIR}/${PN}-15_beta3-no-server.patch" + + if use pam ; then + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + -i src/backend/libpq/auth.c || \ + die 'PGSQL_PAM_SERVICE rename failed.' + fi + + eapply_user +} + +src_configure() { + case ${CHOST} in + *-darwin*|*-solaris*) + use nls && append-libs intl + ;; + esac + + export LDFLAGS_SL="${LDFLAGS}" + export LDFLAGS_EX="${LDFLAGS}" + + local PO="${EPREFIX}" + + local i uuid_config="" + if use uuid; then + for i in ${UTIL_LINUX_LIBC[@]}; do + use ${i} && uuid_config="--with-uuid=e2fs" + done + [[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp" + fi + + local myconf="\ + --prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \ + --datadir="${PO}/usr/share/postgresql-${SLOT}" \ + --includedir="${PO}/usr/include/postgresql-${SLOT}" \ + --mandir="${PO}/usr/share/postgresql-${SLOT}/man" \ + --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ + --with-system-tzdata="${PO}/usr/share/zoneinfo" \ + $(use_enable debug) \ + $(use_with icu) \ + $(use_with kerberos gssapi) \ + $(use_with ldap) \ + $(use_with llvm) \ + $(use_with lz4) \ + $(use_with pam) \ + $(use_with perl) \ + $(use_with python) \ + $(use_with readline) \ + $(use_with ssl openssl) \ + $(usex server "$(use_with systemd)" '--without-systemd') \ + $(use_with tcl) \ + ${uuid_config} \ + $(use_with xml libxml) \ + $(use_with xml libxslt) \ + $(use_with zlib) \ + $(use_with zstd) \ + $(use_enable nls)" + if use alpha; then + myconf+=" --disable-spinlocks" + else + # Should be the default but just in case + myconf+=" --enable-spinlocks" + fi + econf ${myconf} +} + +src_compile() { + emake + emake -C contrib +} + +src_install() { + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib + + dodoc README HISTORY + + # man pages are already built, but if we have the target make them, + # they'll be generated from source before being installed so we + # manually install man pages. + # We use ${SLOT} instead of doman for postgresql.eselect + insinto /usr/share/postgresql-${SLOT}/man/ + doins -r doc/src/sgml/man{1,3,7} + if ! use server; then + # Remove man pages for non-existent binaries + serverman=( + initdb + pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby} + pg_{test_{fsync,timing},upgrade,waldump} + post{gres,master} + ) + for m in ${serverman[@]} ; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done + fi + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + + # Create slot specific man pages + local bn f mansec slotted_name + for mansec in 1 3 7 ; do + local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}" + + mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir" + pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed" + + for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do + bn=$(basename "${f}") + slotted_name=${bn%.${mansec}}${SLOT}.${mansec} + case ${bn} in + TABLE.7|WITH.7) + echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name} + ;; + *) + echo ".so ${rel_manpath}/${bn}" > ${slotted_name} + ;; + esac + done + + popd > /dev/null + done + + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc + + # Don't delete libpg{port,common}.a (Bug #571046). They're always + # needed by extensions utilizing PGXS. + use static-libs || \ + find "${ED}" -name '*.a' ! -name libpgport.a ! -name libpgcommon.a \ + -delete + + # Make slot specific links to programs + local f bn + for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \ + -mindepth 1 -maxdepth 1) + do + bn=$(basename "${f}") + dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \ + "/usr/bin/${bn}${SLOT/.}" + done + + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + fi + + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT} + + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT} + + if use systemd; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service-9.6-r1" | \ + systemd_newunit - ${PN}-${SLOT}.service + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + fi + + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi + fi +} + +pkg_postinst() { + use server && use systemd && tmpfiles_process ${PN}-${SLOT}.conf + postgresql-config update + + elog "If you need a global psqlrc-file, you can place it in:" + elog " ${EROOT}/etc/postgresql-${SLOT}/" + + if use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + elog "https://www.postgresql.org/docs/${SLOT}/static/index.html" + elog + elog "The default location of the Unix-domain socket is:" + elog " ${EROOT}/run/postgresql/" + elog + elog "Before initializing the database, you may want to edit PG_INITDB_OPTS" + elog "so that it contains your preferred locale in:" + elog " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + elog + elog "Then, execute the following command to setup the initial database" + elog "environment:" + elog " emerge --config =${CATEGORY}/${PF}" + + if [[ -n ${REPLACING_VERSIONS} ]] ; then + ewarn "If your system is using 'pg_stat_statements' and you are running a" + ewarn "version of PostgreSQL ${SLOT}, we advise that you execute" + ewarn "the following command after upgrading:" + ewarn + ewarn "ALTER EXTENSION pg_stat_statements UPDATE;" + fi + fi +} + +pkg_prerm() { + if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then + ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?" + ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL" + + ebegin "Resuming removal in 10 seconds (Control-C to cancel)" + sleep 10 + eend 0 + fi +} + +pkg_postrm() { + postgresql-config update +} + +pkg_config() { + use server || die "USE flag 'server' not enabled. Nothing to configure." + + [[ -f "${EROOT}/etc/conf.d/postgresql-${SLOT}" ]] \ + && source "${EROOT}/etc/conf.d/postgresql-${SLOT}" + [[ -z "${PGDATA}" ]] && PGDATA="${EROOT}/etc/postgresql-${SLOT}/" + [[ -z "${DATA_DIR}" ]] \ + && DATA_DIR="${EROOT}/var/lib/postgresql/${SLOT}/data" + + # environment.bz2 may not contain the same locale as the current system + # locale. Unset and source from the current system locale. + if [ -f "${EROOT}/etc/env.d/02locale" ]; then + unset LANG + unset LC_CTYPE + unset LC_NUMERIC + unset LC_TIME + unset LC_COLLATE + unset LC_MONETARY + unset LC_MESSAGES + unset LC_ALL + source "${EROOT}/etc/env.d/02locale" + [ -n "${LANG}" ] && export LANG + [ -n "${LC_CTYPE}" ] && export LC_CTYPE + [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC + [ -n "${LC_TIME}" ] && export LC_TIME + [ -n "${LC_COLLATE}" ] && export LC_COLLATE + [ -n "${LC_MONETARY}" ] && export LC_MONETARY + [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES + [ -n "${LC_ALL}" ] && export LC_ALL + fi + + einfo "You can modify the paths and options passed to initdb by editing:" + einfo " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + einfo + einfo "Information on options that can be passed to initdb are found at:" + einfo " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" + einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" + einfo + einfo "PG_INITDB_OPTS is currently set to:" + if [[ -z "${PG_INITDB_OPTS}" ]] ; then + einfo " (none)" + else + einfo " ${PG_INITDB_OPTS}" + fi + einfo + einfo "Configuration files will be installed to:" + einfo " ${PGDATA}" + einfo + einfo "The database cluster will be created in:" + einfo " ${DATA_DIR}" + einfo + + ebegin "Continuing initialization in 5 seconds (Control-C to cancel)" + sleep 5 + eend 0 + + if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then + eerror "The given directory, '${DATA_DIR}', is not empty." + eerror "Modify DATA_DIR to point to an empty directory." + die "${DATA_DIR} is not empty." + fi + + einfo "Creating the data directory ..." + if [[ ${EUID} == 0 ]] ; then + mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent dirs" + mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR" + chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't chown" + fi + + einfo "Initializing the database ..." + + if [[ ${EUID} == 0 ]] ; then + su - postgres -c "${EROOT}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}" + else + "${EROOT}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS} + fi + + if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then + mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}" + ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}" + fi + + # unix_socket_directory has no effect in postgresql.conf as it's + # overridden in the initscript + sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf + + einfo "The autovacuum function, which was in contrib, has been moved to the main" + einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled" + einfo "by default. You can disable it in the cluster's:" + einfo " ${PGDATA%/}/postgresql.conf" + einfo + if ! use systemd; then + einfo "The PostgreSQL server, by default, will log events to:" + einfo " ${DATA_DIR%/}/postmaster.log" + einfo + fi + if use prefix ; then + einfo "The location of the configuration files have moved to:" + einfo " ${PGDATA}" + einfo "To start the server:" + einfo " pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'" + einfo "To stop:" + einfo " pg_ctl stop -D ${DATA_DIR}" + einfo + einfo "Or move the configuration files back:" + einfo "mv ${PGDATA}*.conf ${DATA_DIR}" + elif use systemd; then + einfo "You should use the 'postgresql-${SLOT}.service' unit to run PostgreSQL" + einfo "instead of 'pg_ctl'." + else + einfo "You should use the '${EROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL" + einfo "instead of 'pg_ctl'." + fi +} + +src_test() { + if use server && [[ ${UID} -ne 0 ]] ; then + # Some ICU tests fail if LC_CTYPE and LC_COLLATE aren't the same. We set + # LC_CTYPE to be equal to LC_COLLATE since LC_COLLATE is set by Portage. + local old_ctype=${LC_CTYPE} + export LC_CTYPE=${LC_COLLATE} + emake check + export LC_CTYPE=${old_ctype} + einfo "If you think other tests besides the regression tests are necessary, please" + einfo "submit a bug including a patch for this ebuild to enable them." + else + use server || \ + ewarn 'Tests cannot be run without the "server" use flag enabled.' + [[ ${UID} -eq 0 ]] || \ + ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + + ewarn 'Skipping.' + fi +} diff --git a/dev-db/postgresql/postgresql-17.3.ebuild b/dev-db/postgresql/postgresql-17.3.ebuild new file mode 100644 index 000000000000..f53579588119 --- /dev/null +++ b/dev-db/postgresql/postgresql-17.3.ebuild @@ -0,0 +1,477 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10,11,12,13} ) +LLVM_COMPAT=( {15..19} ) +LLVM_OPTIONAL=1 + +inherit flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" + +SLOT=$(ver_cut 1) + +MY_PV=${PV/_/} +S="${WORKDIR}/${PN}-${MY_PV}" + +SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2" + +LICENSE="POSTGRESQL GPL-2" +DESCRIPTION="PostgreSQL RDBMS" +HOMEPAGE="https://www.postgresql.org/" + +IUSE="debug doc +icu kerberos ldap llvm +lz4 nls pam perl python + +readline selinux +server systemd ssl static-libs tcl uuid xml + zlib +zstd" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +CDEPEND=" +>=app-eselect/eselect-postgresql-2.0 +acct-group/postgres +acct-user/postgres +sys-apps/less +virtual/libintl +icu? ( dev-libs/icu:= ) +kerberos? ( app-crypt/mit-krb5 ) +ldap? ( net-nds/openldap:= ) +llvm? ( $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') ) +lz4? ( app-arch/lz4 ) +pam? ( sys-libs/pam ) +perl? ( >=dev-lang/perl-5.8:= ) +python? ( ${PYTHON_DEPS} ) +readline? ( sys-libs/readline:0= ) +server? ( systemd? ( sys-apps/systemd ) ) +ssl? ( >=dev-libs/openssl-0.9.6-r1:0= ) +tcl? ( >=dev-lang/tcl-8:0= ) +xml? ( dev-libs/libxml2 dev-libs/libxslt ) +zlib? ( sys-libs/zlib ) +zstd? ( app-arch/zstd ) +" + +# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no +# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems, +# the libc includes UUID functions. +UTIL_LINUX_LIBC=( elibc_{glibc,musl} ) + +nest_usedep() { + local front back + while [[ ${#} -gt 1 ]]; do + front+="${1}? ( " + back+=" )" + shift + done + echo "${front}${1}${back}" +} + +CDEPEND+=" +uuid? ( + ${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )} + $(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} dev-libs/ossp-uuid) +)" + +DEPEND="${CDEPEND} +sys-devel/bison +app-alternatives/lex +nls? ( sys-devel/gettext ) +xml? ( virtual/pkgconfig ) +" + +RDEPEND="${CDEPEND} +selinux? ( sec-policy/selinux-postgresql ) +" + +# Openjade, docbook, XML, and XSLT are needed to generate manpages and +# any documentation that may be elected. +BDEPEND=" +app-text/openjade +app-text/docbook-dsssl-stylesheets +app-text/docbook-sgml-dtd:4.5 +app-text/docbook-xml-dtd:4.5 +app-text/docbook-xsl-stylesheets +dev-libs/libxml2 +dev-libs/libxslt +" + +pkg_setup() { + use llvm && llvm-r1_pkg_setup + + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + + use python && python-single-r1_pkg_setup +} + +src_prepare() { + # Set proper run directory + sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ + -i src/include/pg_config_manual.h || die + + # Rely on $PATH being in the proper order so that the correct + # install program is used for modules utilizing PGXS in both + # hardened and non-hardened environments. (Bug #528786) + sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die + + use server || eapply "${FILESDIR}/${PN}-17.0-no-server.patch" + + if use pam ; then + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + -i src/backend/libpq/auth.c || \ + die 'PGSQL_PAM_SERVICE rename failed.' + fi + + eapply_user +} + +src_configure() { + # Fails to build with C23, fallback to the old default in < GCC 15 + # for now: https://marc.info/?l=pgsql-bugs&m=173185132906874&w=2 + append-cflags -std=gnu17 + + case ${CHOST} in + *-darwin*|*-solaris*) + use nls && append-libs intl + ;; + esac + + export LDFLAGS_SL="${LDFLAGS}" + export LDFLAGS_EX="${LDFLAGS}" + + local PO="${EPREFIX}" + + local i uuid_config="" + if use uuid; then + for i in ${UTIL_LINUX_LIBC[@]}; do + use ${i} && uuid_config="--with-uuid=e2fs" + done + [[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp" + fi + + local myconf="\ + --prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \ + --datadir="${PO}/usr/share/postgresql-${SLOT}" \ + --includedir="${PO}/usr/include/postgresql-${SLOT}" \ + --mandir="${PO}/usr/share/postgresql-${SLOT}/man" \ + --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ + --with-system-tzdata="${PO}/usr/share/zoneinfo" \ + $(use_enable debug) \ + $(use_with icu) \ + $(use_with kerberos gssapi) \ + $(use_with ldap) \ + $(use_with llvm) \ + $(use_with lz4) \ + $(use_with pam) \ + $(use_with perl) \ + $(use_with python) \ + $(use_with readline) \ + $(use_with ssl openssl) \ + $(usex server "$(use_with systemd)" '--without-systemd') \ + $(use_with tcl) \ + ${uuid_config} \ + $(use_with xml libxml) \ + $(use_with xml libxslt) \ + $(use_with zlib) \ + $(use_with zstd) \ + $(use_enable nls)" + if use alpha; then + myconf+=" --disable-spinlocks" + else + # Should be the default but just in case + myconf+=" --enable-spinlocks" + fi + econf ${myconf} +} + +src_compile() { + emake + emake -C contrib + emake -C doc +} + +src_install() { + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib + + dodoc HISTORY + + # man pages are already built, but if we have the target make them, + # they'll be generated from source before being installed so we + # manually install man pages. + # We use ${SLOT} instead of doman for postgresql.eselect + insinto /usr/share/postgresql-${SLOT}/man/ + doins -r doc/src/sgml/man{1,3,7} + if ! use server; then + # Remove man pages for non-existent binaries + serverman=( + initdb + pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby} + pg_{test_{fsync,timing},upgrade,waldump} + post{gres,master} + ) + for m in ${serverman[@]} ; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done + fi + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + + # Create slot specific man pages + local bn f mansec slotted_name + for mansec in 1 3 7 ; do + local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}" + + mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir" + pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed" + + for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do + bn=$(basename "${f}") + slotted_name=${bn%.${mansec}}${SLOT}.${mansec} + case ${bn} in + TABLE.7|WITH.7) + echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name} + ;; + *) + echo ".so ${rel_manpath}/${bn}" > ${slotted_name} + ;; + esac + done + + popd > /dev/null + done + + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc + + # Don't delete libpg{port,common}.a (Bug #571046). They're always + # needed by extensions utilizing PGXS. + use static-libs || \ + find "${ED}" -name '*.a' ! -name libpgport.a ! -name libpgcommon.a \ + -delete + + # Make slot specific links to programs + local f bn + for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \ + -mindepth 1 -maxdepth 1) + do + bn=$(basename "${f}") + dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \ + "/usr/bin/${bn}${SLOT/.}" + done + + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + fi + + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT} + + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT} + + if use systemd; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service-9.6-r1" | \ + systemd_newunit - ${PN}-${SLOT}.service + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + fi + + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi + fi +} + +pkg_postinst() { + use server && use systemd && tmpfiles_process ${PN}-${SLOT}.conf + postgresql-config update + + elog "If you need a global psqlrc-file, you can place it in:" + elog " ${EROOT}/etc/postgresql-${SLOT}/" + + if use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + elog "https://www.postgresql.org/docs/${SLOT}/static/index.html" + elog + elog "The default location of the Unix-domain socket is:" + elog " ${EROOT}/run/postgresql/" + elog + elog "Before initializing the database, you may want to edit PG_INITDB_OPTS" + elog "so that it contains your preferred locale in:" + elog " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + elog + elog "Then, execute the following command to setup the initial database" + elog "environment:" + elog " emerge --config =${CATEGORY}/${PF}" + + if [[ -n ${REPLACING_VERSIONS} ]] ; then + ewarn "If your system is using 'pg_stat_statements' and you are running a" + ewarn "version of PostgreSQL ${SLOT}, we advise that you execute" + ewarn "the following command after upgrading:" + ewarn + ewarn "ALTER EXTENSION pg_stat_statements UPDATE;" + fi + fi +} + +pkg_prerm() { + if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then + ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?" + ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL" + + ebegin "Resuming removal in 10 seconds (Control-C to cancel)" + sleep 10 + eend 0 + fi +} + +pkg_postrm() { + postgresql-config update +} + +pkg_config() { + use server || die "USE flag 'server' not enabled. Nothing to configure." + + [[ -f "${EROOT}/etc/conf.d/postgresql-${SLOT}" ]] \ + && source "${EROOT}/etc/conf.d/postgresql-${SLOT}" + [[ -z "${PGDATA}" ]] && PGDATA="${EROOT}/etc/postgresql-${SLOT}/" + [[ -z "${DATA_DIR}" ]] \ + && DATA_DIR="${EROOT}/var/lib/postgresql/${SLOT}/data" + + # environment.bz2 may not contain the same locale as the current system + # locale. Unset and source from the current system locale. + if [ -f "${EROOT}/etc/env.d/02locale" ]; then + unset LANG + unset LC_CTYPE + unset LC_NUMERIC + unset LC_TIME + unset LC_COLLATE + unset LC_MONETARY + unset LC_MESSAGES + unset LC_ALL + source "${EROOT}/etc/env.d/02locale" + [ -n "${LANG}" ] && export LANG + [ -n "${LC_CTYPE}" ] && export LC_CTYPE + [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC + [ -n "${LC_TIME}" ] && export LC_TIME + [ -n "${LC_COLLATE}" ] && export LC_COLLATE + [ -n "${LC_MONETARY}" ] && export LC_MONETARY + [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES + [ -n "${LC_ALL}" ] && export LC_ALL + fi + + einfo "You can modify the paths and options passed to initdb by editing:" + einfo " ${EROOT}/etc/conf.d/postgresql-${SLOT}" + einfo + einfo "Information on options that can be passed to initdb are found at:" + einfo " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" + einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" + einfo + einfo "PG_INITDB_OPTS is currently set to:" + if [[ -z "${PG_INITDB_OPTS}" ]] ; then + einfo " (none)" + else + einfo " ${PG_INITDB_OPTS}" + fi + einfo + einfo "Configuration files will be installed to:" + einfo " ${PGDATA}" + einfo + einfo "The database cluster will be created in:" + einfo " ${DATA_DIR}" + einfo + + ebegin "Continuing initialization in 5 seconds (Control-C to cancel)" + sleep 5 + eend 0 + + if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then + eerror "The given directory, '${DATA_DIR}', is not empty." + eerror "Modify DATA_DIR to point to an empty directory." + die "${DATA_DIR} is not empty." + fi + + einfo "Creating the data directory ..." + if [[ ${EUID} == 0 ]] ; then + mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent dirs" + mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR" + chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't chown" + fi + + einfo "Initializing the database ..." + + if [[ ${EUID} == 0 ]] ; then + su - postgres -c "${EROOT}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}" + else + "${EROOT}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS} + fi + + if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then + mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}" + ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}" + fi + + # unix_socket_directory has no effect in postgresql.conf as it's + # overridden in the initscript + sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf + + einfo "The autovacuum function, which was in contrib, has been moved to the main" + einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled" + einfo "by default. You can disable it in the cluster's:" + einfo " ${PGDATA%/}/postgresql.conf" + einfo + if ! use systemd; then + einfo "The PostgreSQL server, by default, will log events to:" + einfo " ${DATA_DIR%/}/postmaster.log" + einfo + fi + if use prefix ; then + einfo "The location of the configuration files have moved to:" + einfo " ${PGDATA}" + einfo "To start the server:" + einfo " pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'" + einfo "To stop:" + einfo " pg_ctl stop -D ${DATA_DIR}" + einfo + einfo "Or move the configuration files back:" + einfo "mv ${PGDATA}*.conf ${DATA_DIR}" + elif use systemd; then + einfo "You should use the 'postgresql-${SLOT}.service' unit to run PostgreSQL" + einfo "instead of 'pg_ctl'." + else + einfo "You should use the '${EROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL" + einfo "instead of 'pg_ctl'." + fi +} + +src_test() { + if use server && [[ ${UID} -ne 0 ]] ; then + # Some ICU tests fail if LC_CTYPE and LC_COLLATE aren't the same. We set + # LC_CTYPE to be equal to LC_COLLATE since LC_COLLATE is set by Portage. + local old_ctype=${LC_CTYPE} + export LC_CTYPE=${LC_COLLATE} + emake check + export LC_CTYPE=${old_ctype} + einfo "If you think other tests besides the regression tests are necessary, please" + einfo "submit a bug including a patch for this ebuild to enable them." + else + use server || \ + ewarn 'Tests cannot be run without the "server" use flag enabled.' + [[ ${UID} -eq 0 ]] || \ + ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + + ewarn 'Skipping.' + fi +} diff --git a/dev-db/spatialite/Manifest b/dev-db/spatialite/Manifest index 86cc725c5e52..9c122efe3125 100644 --- a/dev-db/spatialite/Manifest +++ b/dev-db/spatialite/Manifest @@ -1,3 +1,5 @@ +AUX spatialite-5.1.0-macro-surgery.patch 2355 BLAKE2B 4fc47fc60ef98a0f60d6eaae78d62196007d785c3a54619ef427d155c4e80a4f70e14e6690636bc981249fa0e38635a0d186b52b30f80cca7e327fd89eae0ec1 SHA512 771f9bfd40d02ade36179fefe15eaa1be582a64c2d8f6ae38774b9b53fdcccb70a36a67e4db8f0f88c3f79ed9085a6d2532e83d5af9986cc7a7be41ca35b78e2 DIST libspatialite-5.1.0.tar.gz 6517377 BLAKE2B 871e2be82dd1f02de76f0755b6ea7a53797dd9905fe481d6f56dcf8a87278f0a9326a3e0662620cbf6bfe53f932dab199602885c7efcbc5a5e56781a7599d226 SHA512 2745b373e31cea58623224def6090c491b58409803bb71231450dfa2cfdf3aafc3fc6f680585d55d085008f8cf362c3062ae67ffc7d80257775a22eb81ef1e57 EBUILD spatialite-5.1.0-r1.ebuild 1352 BLAKE2B e7a2f961ad0898efdc11a2a5241d4683a01fee554986ccd5730704a61cc3a79cb55da82ae763f508fa8915c3bec3df70152061ad54b857eff7b90e913de57957 SHA512 82b669c3372cadf7eb35b4318cf5b1f08066b8f322c3c89c05e92e79678ade768bfb59f324cb82c27e0ee1ac438d25621081478465115c329cc9cbd4be6a2b2e +EBUILD spatialite-5.1.0-r2.ebuild 1404 BLAKE2B e46d13d45ede3630d98dbe21ffa25f326d49c44e72faf9653e413477c6ceee54704cae09fca06c9f3f17c22c5d7d7befc66e982ff6dacff58b5c40dbf469feaf SHA512 a8e1201913d7874963725a7e05dbddcdaa4357eddc83cf01fb3a38ce438a47cc356b6a0817f2bc27db10cd739d77e4408e835b07ee9b7f236e43ec550b5b5f7d MISC metadata.xml 662 BLAKE2B d44c0b1a08c869509161cc7040c90c5e6b591b09f16893ac21885ee82817ad942eab586a44532ffa8dcbbdedffc6ec0bcf05641196cf892fb0b0e832a760e00f SHA512 7a614e0dc498ccd2d117e600efc867b248fc243fd3a9bb0a599fcaa47a90a3669a730e765df648b5a49cf77c442a3f4a2ea084a721bab48e9c37e7cc73fd9794 diff --git a/dev-db/spatialite/files/spatialite-5.1.0-macro-surgery.patch b/dev-db/spatialite/files/spatialite-5.1.0-macro-surgery.patch new file mode 100644 index 000000000000..ea057f50bc8b --- /dev/null +++ b/dev-db/spatialite/files/spatialite-5.1.0-macro-surgery.patch @@ -0,0 +1,80 @@ +https://bugs.gentoo.org/919177 +https://www.gaia-gis.it/fossil/libspatialite/tktview?name=d5c8f926be +https://www.gaia-gis.it/fossil/libspatialite/tktview/af38159360a2e740b2339e279103bcdaf951498e +Macro out things upstream forgot to conditionally exclude, macro in things upstream forgot +In particular, functions that appear only when GEOM is enabled should not be used +when GEOM is disabled, and having fallback for ancient version of PROJ is well and good; +upstream forgot version for modern one in one place. +--- a/src/gaiageo/gg_advanced.c ++++ b/src/gaiageo/gg_advanced.c +@@ -2286,6 +2286,7 @@ + / identifying toxic geometries + / i.e. geoms making GEOS to crash !!! + */ ++#ifndef OMIT_GEOS /* don't do anything if there's no GEOS */ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; +@@ -2350,6 +2351,7 @@ + } + polyg = polyg->Next; + } ++#endif /* OMIT_GEOS */ + return 0; + } + +@@ -2377,11 +2379,13 @@ + return 0; + else + { ++#ifndef OMIT_GEOS /*can't report error if GEOS is not build, skipping */ + if (cache != NULL) + gaiaSetGeosAuxErrorMsg_r (cache, + "gaia detected a not-closed Ring"); + else + gaiaSetGeosAuxErrorMsg ("gaia detected a not-closed Ring"); ++#endif + return 1; + } + } +--- a/src/spatialite/spatialite.c ++++ b/src/spatialite/spatialite.c +@@ -23472,9 +23472,11 @@ + sqlite3_result_null (context); + else + { ++#ifndef OMIT_GEOS /* Only if GEOS enabled */ + if (!gaiaInterpolatePoint (cache, line, point, &m_value)) + sqlite3_result_null (context); + else ++#endif + sqlite3_result_double (context, m_value); + } + if (line != NULL) +--- a/src/connection_cache/alloc_cache.c ++++ b/connection_cache/alloc_cache.c +@@ -646,8 +646,12 @@ + #endif + + #else /* supporting old PROJ.4 */ ++#ifdef PROJ_NEW /* PROJ.6* */ ++ cache->PROJ_handle = proj_context_create (); ++#else + cache->PROJ_handle = pj_ctx_alloc (); + #endif ++#endif + #endif /* end PROJ.4 */ + + #ifdef ENABLE_RTTOPO /* initializing the RTTOPO context */ +@@ -706,7 +706,11 @@ + #endif /* end GEOS */ + + #ifndef OMIT_PROJ /* initializing the PROJ.4 context */ ++#ifndef PROJ_NEW /* Only in case where PROJ.5 not needed */ + cache->PROJ_handle = pj_ctx_alloc (); ++#else /* PROJ.6* */ ++ cache->PROJ_handle = proj_context_create (); ++#endif + #endif /* end PROJ.4 */ + + done: diff --git a/dev-db/spatialite/spatialite-5.1.0-r2.ebuild b/dev-db/spatialite/spatialite-5.1.0-r2.ebuild new file mode 100644 index 000000000000..edf57c760b1f --- /dev/null +++ b/dev-db/spatialite/spatialite-5.1.0-r2.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit libtool + +MY_PN="lib${PN}" +MY_P="${MY_PN}-${PV}" + +DESCRIPTION="Complete Spatial DBMS in a nutshell built upon sqlite" +HOMEPAGE="https://www.gaia-gis.it/gaia-sins/" +SRC_URI="https://www.gaia-gis.it/gaia-sins/${MY_PN}-sources/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="MPL-1.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="+geos iconv +proj rttopo test +xls" +REQUIRED_USE="test? ( iconv )" +# Further poking required +RESTRICT="test" + +RDEPEND=" + >=dev-db/sqlite-3.7.5:3[extensions(+)] + dev-libs/libxml2 + sys-libs/zlib[minizip] + geos? ( >=sci-libs/geos-3.11.0 ) + proj? ( sci-libs/proj:= ) + rttopo? ( sci-geosciences/librttopo ) + xls? ( >=dev-libs/freexl-2.0.0[xml(+)] ) +" +DEPEND="${RDEPEND}" + +PATCHES=( "${FILESDIR}/${P}-macro-surgery.patch" ) + +src_prepare() { + default + elibtoolize +} + +src_configure() { + # 1) gcp disabled for now to preserve MPL licence + econf \ + --disable-gcp \ + --disable-examples \ + --disable-static \ + --enable-epsg \ + --enable-libxml2 \ + $(use_enable geos) \ + $(use_enable geos geosadvanced) \ + $(use_enable geos geos3100) \ + $(use_enable geos geos3110) \ + $(use_enable iconv) \ + $(use_enable proj) \ + $(use_enable rttopo) \ + $(use_enable xls freexl) +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die +} diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest index d244f358801f..a02c275c163c 100644 --- a/dev-db/sqlite/Manifest +++ b/dev-db/sqlite/Manifest @@ -1,14 +1,15 @@ AUX sqlite-3.45.1-ppc64-ptr.patch 986 BLAKE2B 8c97514a67601c1f51459c1d4ea683e023730b3fa66be7a238807f172ce19ebceeed8f81c9f6e4f3621c96eecd8f6ea3bd5669a8a5ee5b14cf2bebdb7338e0db SHA512 12c6384682a36cddfdde7d2cfdba8aad54441b816816abf139bb05c46f65e78548c5a9e4f7f8b8836bd95702455b93ed7e0afb868ab15fead20a84404f075615 AUX sqlite-3.47.1-buildtclext.patch 986 BLAKE2B ba43fd663a77a2a161a26f31ca3db0f4b08fae940a08b4bdfa7882a7945eef1b041f11d70cbe6754fe1bc58c533f2b5864e25a90c6d38e8f1c4f27f8cfc3bd91 SHA512 20ff9155832fc23984f91c3c7fc6ab775ab026fb4a3b7d97f00b67583702c81d714db1345a28050c1be39376d411b2faa137b25719d4d312ac42cf00c73ade47 AUX sqlite-3.47.2-hwtime.h-Don-t-use-rdtsc-on-i486.patch 1114 BLAKE2B 00b386967c4b7051b762041f98555f078e7fe7427adc57efa7b1bd3c6cdee20e379b2d086535358014dd1bafbb97d552980620c29c4ea63047f2d3c68efa2907 SHA512 f3787a9628d73ccd8f4bad99e8d2f3c0153078c06b2864d9110b77e1aea6a22ee2db485d71aec9b94039bc5e2e4517eb194faac862b95775d70440e1857f7d4c +AUX sqlite-3.49.0-cppflags.patch 2884 BLAKE2B 2d1cfae6c0f7654ed1acae75fe6b00eb309506e899316abe36e2a9263f01cdf09bf13870d61a61f94a30000fb35dc527cd43ad9b79f0eda08034438eb7f3c903 SHA512 14045ad50d5708e2f4c82d7ccf01e7ff5bdbae88d60e08bc2ba3f30cada317798a2eb5379bba32331a002c5365faacd6709103e9772524cacd90f89b86b77ac0 DIST sqlite-doc-3460100.zip 10851427 BLAKE2B 7462e83ca84e3e9aac7236f575fd2bdddac7744ae700a63fe8fdc9d2df3157c59fd374d99a0526bd4d9f742005ee7a90f3d78057861d3c3fcba9f897630e48db SHA512 1ad7dfc938d182f69ea9367b4f5ead1d48b991626521249e8b58c9fb4c2553e348ce402de9cc81b0ad699d4c45c467de56a98ee39f9c3555c6fafff15fba41ce DIST sqlite-doc-3470200.zip 10957830 BLAKE2B cbc40dd440d1c5af4ad4333090a7306bd54ec43250a478b6900b8f74bd721035018ea7647f3a208d42cc0639827325be26a9412d17af7d390f4e584d4c6acf44 SHA512 48349d512b7cd9bc6f6a5da3a2b2285de159d4653667311adb0f5e6a970060db940a590c2d01b529afc1614065b22434d5b3ac4d8d0122d003d74926745ba56e -DIST sqlite-doc-3480000.zip 11391112 BLAKE2B d28531e5d3ac7802700636a669f165cb9fa2a6077422b1ba956b6b9e29db48941489b5a3bc1c4936723e59343e00c3edc9310db9724d914a30ac9aca775dc70d SHA512 d7cad0da8598a3abcacf0e05ba4e285ad1d790691e571e431f920abf1bf27c5a416408ff60ff051b01a65662c0e60bb63b9ba73872851fe63f379e834c5a0f04 +DIST sqlite-doc-3490000.zip 11327988 BLAKE2B ecabc9b9217953874cc575ef06d93f3ef5da25d82c0837b827daca3ca1da54968d7f3f2498ec7fee22d43fb2a2bcc2077be396dfc5f6e4ee62e1493d7be20e9e SHA512 89823a426aba9db78597f99df6fe2162601d0133d7490c83c939414372c293e9f313bd2e46c5e5d4b19dd3846337f53eb788208c91a1fa7ffc768a0a5966da03 DIST sqlite-src-3460100.zip 14276926 BLAKE2B df16ea944e317df8ed64fdfab289e3699ec71725ce55e2b30450adaeb41c061b4fba1eb8c41ba638b0edcd12b23264a1f9e413b69fd593c2b65fb1037d3fc8b2 SHA512 6d32a0db9f95d3cec34f02f3fd45b453bf7c422d4d4d9570790f641e7d190b8b31be8e8715afacc1b6e4417f15a4d15a0b28e608ae0b4b5f3054b075783b916e DIST sqlite-src-3470200.zip 14421983 BLAKE2B dcaea5be0099b2dad1b53403933f0037ace48b1f248040c1b5cc116ac2ad6c9b44c71b8efe3afd16bef01119b440d1a2ec9d553a22f855e0ba55793684f53d8d SHA512 a6280a02304bfae173d9e9ebf376b2d3624658f04af4d8e95d5a042e24cf0405a47c0a4023f4dbc2790716cd85e16b97fcc0a83c1534e6d554f4eb0bfb0a3ed3 -DIST sqlite-src-3480000.zip 14350897 BLAKE2B 1dafce5575cbf8eb4e7efb5c033322b887bcce38129756994da45b1d8e0cf136f337e6cb9fa3c4b5abcf1f68bff6763247bec1ad04975fc9de308e3b75fb4e54 SHA512 854832e9a5dc486a81934e36c1f1678ce50db55b8bd3c48ed2d569fb0bb7ce23d4b490c0a0f699274ff11ddf2000db4a620e064557084c54b217e7fdd836f4e1 +DIST sqlite-src-3490000.zip 14371111 BLAKE2B 895d8869b3bc0abeb5faf8cdd0de29e0d86f44fa6eafb154e0df4373161fe79c5e35d360100064778f0a3f57a232e15dc8ec73ef5e75d23a4c8ffc880d2c571d SHA512 a414c544ca4288ab475c449327b3e2136e9d01145fc8b9c723ccfd30e356cc90411ca74ae969f3fe4c8212cad4d0969b2f3a72922ee073049c25e4984336eb7c EBUILD sqlite-3.46.1.ebuild 12792 BLAKE2B ca98f4e22e0ba7abdf3c1c8a785e82a6f64d19f186a68d9733fbe31db879c2d3d0b1b517b3ea3f0af5c678cd9c036a8702c4f3e87f3a20c5b4342e391fd720d9 SHA512 6633db1ba661ed8948e21ffb245f59f7507669224d3b827c16d4fc5332d9b2bd62f176066afc7f59ed5104b0a5d15dc4eb8ed91ba4ab55b2afb773d6026708a0 EBUILD sqlite-3.47.2-r1.ebuild 12880 BLAKE2B 6686cb865c8f3b68ea03077ef146753a3ae03bbc5dbce1e2224ca514c6b55b8bca6ec1702bd42984cbb96e4f6169e726e4748a931ddcc33e4af065e89d7f4b3e SHA512 c321faed21950909eb0abc4d32f22ab74e79f90577a25a6fad3f9f9c51f47b5337056a9a209f2781d0a45119a17c802165fbf0569748334011b43597c51aca47 -EBUILD sqlite-3.48.0-r1.ebuild 12904 BLAKE2B 6591d350c3e438a294ceb40f20dd4dc1afed28b8f792efb01ee4bcbf39824ec1ce289a7b052e6dcf100f0da58b2bb2e7dcc0a54364e593eedd86eb37223f5309 SHA512 58eb7c55b633ab9b0996be41dc8bf6373fcb842a75e9baa307d5bc2430776d78e7e54d1bc09bea20bcecf33f9baff374a43e026b6be234586040430f33d3fb03 +EBUILD sqlite-3.49.0.ebuild 12863 BLAKE2B b92952d940626b65d94f4d12ed1ac01e96ac190924358ae6f81ec9c4312277e33970d7900493d55ad99423510d82c4341441041a7f2ed4ca1351f2d7c61876e9 SHA512 3fe63fc890aa755f2b9ebcd7fdb22a9c88d4d4e5ebd52003ee489434564df2563c904367887c39499da456d4485d82a671e2e3ae7b95790e35af3b5f91593ed2 EBUILD sqlite-9999.ebuild 12795 BLAKE2B 6f9a80eb912680ef1d0f3fb183d0bd5327c9d312c11ca392312568861b104556ba54e8350611c7acc758360c42e33e2a0cbe3bc44d57c4be225e2d84a7cb69c6 SHA512 375ce352d2ddd96bfde025a82e9abff16c1713d5d6a8fc0d5ef15534d281f60a586e8d963d8a57c98ee2c7369e6fd3fc5eef9513cb5fea7a038dc8aa04876105 MISC metadata.xml 824 BLAKE2B 8ab2e8f230bf3a2b26077d90944bca7bf35ae905310205b90bf243365148488303256606c0ee7c3fb736300686466a1c2583bf103693c20063ca668fe9e52647 SHA512 ed4a89e3c2d633cb6ebf8bcbf3ca055d0d1b2ffd801ba559395f812faeaafdfedd97dae11a5a53a4c068e43026fbd4eed4cb12c8b89a7fda6dabe6f78a2e0b38 diff --git a/dev-db/sqlite/files/sqlite-3.49.0-cppflags.patch b/dev-db/sqlite/files/sqlite-3.49.0-cppflags.patch new file mode 100644 index 000000000000..13c6eafc390f --- /dev/null +++ b/dev-db/sqlite/files/sqlite-3.49.0-cppflags.patch @@ -0,0 +1,75 @@ +From 3e06f2d79b15754999892a4ded6a7585520294a6 Mon Sep 17 00:00:00 2001 +From: stephan +Date: Sun, 9 Feb 2025 01:25:00 +0000 +Subject: [PATCH] configure: when transfering ENABLE/OMIT flags from CFLAGS to + OPT_FEATURE_FLAGS, also do the same for CPPFLAGS and remove those ENABLE/OMIT + flags from CFLAGS/CPPFLAGS to mimic legacy build behavior. Strip ENABLE/OMIT + flags from BUILD_CFLAGS but do not transfer those to OPT_FEATURE_FLAGS, also + to mimic legacy behavior. This is the second part of a fix discussed at + [forum:9801e54665afd728|forum post 9801e54665afd728]. + +FossilOrigin-Name: 16d307cc6c1e203900e7a2dc0730fc0e453946622a2114a07d64ebb99045cfbf +--- + autosetup/sqlite-config.tcl | 36 ++++++++++++++++++++++++++++++------ + manifest | 14 +++++++------- + manifest.uuid | 2 +- + 3 files changed, 38 insertions(+), 14 deletions(-) + +diff --git a/autosetup/sqlite-config.tcl b/autosetup/sqlite-config.tcl +index cabb32aac0..2a73548662 100644 +--- a/autosetup/sqlite-config.tcl ++++ b/autosetup/sqlite-config.tcl +@@ -230,23 +230,47 @@ proc sqlite-setup-default-cflags {} { + # BUILD_CFLAGS is the CFLAGS for CC_FOR_BUILD. + define BUILD_CFLAGS [proj-get-env BUILD_CFLAGS {-g}] + +- # Copy all CFLAGS entries matching -DSQLITE_OMIT* and ++ # Copy all CFLAGS and CPPFLAGS entries matching -DSQLITE_OMIT* and + # -DSQLITE_ENABLE* to OPT_FEATURE_FLAGS. This behavior is derived + # from the legacy build and was missing the 3.48.0 release (the + # initial Autosetup port). + # https://sqlite.org/forum/forumpost/9801e54665afd728 + # ++ # Handling of CPPFLAGS, as well as removing ENABLE/OMIT from ++ # CFLAGS/CPPFLAGS, was missing in the 3.49.0 release as well. ++ # + # If any configure flags for features are in conflict with +- # CFLAGS-specified feature flags, all bets are off. There are no +- # guarantees about which one will take precedence. +- foreach cf [get-define CFLAGS ""] { ++ # CFLAGS/CPPFLAGS-specified feature flags, all bets are off. There ++ # are no guarantees about which one will take precedence. ++ foreach flagDef {CFLAGS CPPFLAGS} { ++ set tmp "" ++ foreach cf [get-define $flagDef ""] { ++ switch -glob -- $cf { ++ -DSQLITE_OMIT* - ++ -DSQLITE_ENABLE* { ++ sqlite-add-feature-flag $cf ++ } ++ default { ++ lappend tmp $cf ++ } ++ } ++ } ++ define $flagDef $tmp ++ } ++ ++ # Strip all SQLITE_ENABLE/OMIT flags from BUILD_CFLAGS, ++ # for compatibility with the legacy build. ++ set tmp "" ++ foreach cf [get-define BUILD_CFLAGS ""] { + switch -glob -- $cf { + -DSQLITE_OMIT* - +- -DSQLITE_ENABLE* { +- sqlite-add-feature-flag $cf ++ -DSQLITE_ENABLE* {} ++ default { ++ lappend tmp $cf + } + } + } ++ define BUILD_CFLAGS $tmp + } + + ######################################################################## diff --git a/dev-db/sqlite/sqlite-3.48.0-r1.ebuild b/dev-db/sqlite/sqlite-3.48.0-r1.ebuild deleted file mode 100644 index 1e772cac840d..000000000000 --- a/dev-db/sqlite/sqlite-3.48.0-r1.ebuild +++ /dev/null @@ -1,431 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit flag-o-matic multilib-minimal toolchain-funcs - -DESCRIPTION="SQL database engine" -HOMEPAGE="https://sqlite.org/" - -# On version updates, make sure to read the forum (https://sqlite.org/forum/forum) -# for hints regarding test failures, backports, etc. -if [[ ${PV} == 9999 ]]; then - S="${WORKDIR}"/${PN} - PROPERTIES="live" -else - printf -v SRC_PV "%u%02u%02u%02u" $(ver_rs 1- " ") - DOC_PV="${SRC_PV}" - #printf -v DOC_PV "%u%02u%02u00" $(ver_rs 1-3 " ") - - SRC_URI=" - https://sqlite.org/2025/${PN}-src-${SRC_PV}.zip - doc? ( https://sqlite.org/2025/${PN}-doc-${DOC_PV}.zip ) - " - S="${WORKDIR}/${PN}-src-${SRC_PV}" - - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -fi - -LICENSE="public-domain" -SLOT="3" -IUSE="debug doc icu +readline secure-delete static-libs tcl test tools" -RESTRICT="!test? ( test )" - -RDEPEND=" - sys-libs/zlib:=[${MULTILIB_USEDEP}] - icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] ) - readline? ( sys-libs/readline:=[${MULTILIB_USEDEP}] ) - tcl? ( dev-lang/tcl:=[${MULTILIB_USEDEP}] ) - tools? ( dev-lang/tcl:= ) -" -DEPEND=" - ${RDEPEND} - test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] ) -" -if [[ ${PV} == 9999 ]]; then - BDEPEND+=" dev-vcs/fossil" -else - BDEPEND+=" app-arch/unzip" -fi - -PATCHES=( - "${FILESDIR}"/${PN}-3.47.2-hwtime.h-Don-t-use-rdtsc-on-i486.patch -) - -_fossil_fetch() { - local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" - local repo_id="${1}" - local repo_uri="${2}" - - local -x FOSSIL_HOME="${HOME}" - - mkdir -p "${T}/fossil/${repo_id}" || die - pushd "${T}/fossil/${repo_id}" > /dev/null || die - - if [[ -n "${EVCS_OFFLINE}" ]]; then - if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then - die "Network activity disabled using EVCS_OFFLINE and clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" - fi - else - if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then - einfo fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" - fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" || die - echo - else - cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" . || die - einfo fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" - fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" || die - echo - fi - - ( - addwrite "${distdir}" - mkdir -p "${distdir}/fossil-src/${repo_id}" || die - cp -p "${repo_id}.fossil" "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" || die - ) - fi - - popd > /dev/null || die -} - -_fossil_checkout() { - local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" - local repo_id="${1}" - local branch_or_commit="${2}" - local target_directory="${3}" - - local -x FOSSIL_HOME="${HOME}" - - if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then - die "Clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" - fi - - if [[ ! -f "${T}/fossil/${repo_id}/${repo_id}.fossil" ]]; then - mkdir -p "${T}/fossil/${repo_id}" || die - cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" "${T}/fossil/${repo_id}" || die - fi - - mkdir "${target_directory}" || die - pushd "${target_directory}" > /dev/null || die - - einfo fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" - fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" || die - echo - - popd > /dev/null || die -} - -fossil_fetch() { - local repo_id="${1}" - local repo_uri="${2}" - local target_directory="${3}" - - local branch_or_commit="${EFOSSIL_COMMIT:-${EFOSSIL_BRANCH:-trunk}}" - - _fossil_fetch "${repo_id}" "${repo_uri}" - _fossil_checkout "${repo_id}" "${branch_or_commit}" "${target_directory}" -} - -src_unpack() { - if [[ ${PV} == 9999 ]]; then - fossil_fetch sqlite https://sqlite.org/src "${WORKDIR}/${PN}" - if use doc; then - fossil_fetch sqlite-doc https://sqlite.org/docsrc "${WORKDIR}/${PN}-doc" - fi - else - default - fi -} - -src_prepare() { - - # Avoid stripping during the install phase - sed -i -e 's/$(INSTALL) -s /$(INSTALL) /' main.mk || die - default - - multilib_copy_sources -} - -multilib_src_configure() { - local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" - local options=() - - options+=( - --enable-load-extension - --enable-threadsafe - ) - - # Support detection of misuse of SQLite API. - # https://sqlite.org/compile.html#enable_api_armor - append-cppflags -DSQLITE_ENABLE_API_ARMOR - - # Support bytecode and tables_used virtual tables. - # https://sqlite.org/compile.html#enable_bytecode_vtab - # https://sqlite.org/bytecodevtab.html - append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB - - # Support column metadata functions. - # https://sqlite.org/compile.html#enable_column_metadata - # https://sqlite.org/c3ref/column_database_name.html - append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA - - # Support sqlite_dbpage virtual table. - # https://sqlite.org/compile.html#enable_dbpage_vtab - # https://sqlite.org/dbpage.html - append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB - - # Support dbstat virtual table. - # https://sqlite.org/compile.html#enable_dbstat_vtab - # https://sqlite.org/dbstat.html - append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB - - # Support sqlite3_serialize() and sqlite3_deserialize() functions. - # https://sqlite.org/compile.html#enable_deserialize - # https://sqlite.org/c3ref/serialize.html - # https://sqlite.org/c3ref/deserialize.html - append-cppflags -DSQLITE_ENABLE_DESERIALIZE - - # Support comments in output of EXPLAIN. - # https://sqlite.org/compile.html#enable_explain_comments - append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS - - # Support Full-Text Search versions 3, 4 and 5. - # https://sqlite.org/compile.html#enable_fts3 - # https://sqlite.org/compile.html#enable_fts3_parenthesis - # https://sqlite.org/compile.html#enable_fts4 - # https://sqlite.org/compile.html#enable_fts5 - # https://sqlite.org/fts3.html - # https://sqlite.org/fts5.html - append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4 - options+=( --enable-fts5 ) - - # Support hidden columns. - append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS - - # Support memsys5 memory allocator. - # https://sqlite.org/compile.html#enable_memsys5 - # https://sqlite.org/malloc.html#memsys5 - append-cppflags -DSQLITE_ENABLE_MEMSYS5 - - # Support sqlite3_normalized_sql() function. - # https://sqlite.org/c3ref/expanded_sql.html - append-cppflags -DSQLITE_ENABLE_NORMALIZE - - # Support sqlite_offset() function. - # https://sqlite.org/compile.html#enable_offset_sql_func - # https://sqlite.org/lang_corefunc.html#sqlite_offset - append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC - - # Support pre-update hook functions. - # https://sqlite.org/compile.html#enable_preupdate_hook - # https://sqlite.org/c3ref/preupdate_count.html - append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK - - # Support Resumable Bulk Update extension. - # https://sqlite.org/compile.html#enable_rbu - # https://sqlite.org/rbu.html - append-cppflags -DSQLITE_ENABLE_RBU - - # Support R*Trees. - # https://sqlite.org/compile.html#enable_rtree - # https://sqlite.org/compile.html#enable_geopoly - # https://sqlite.org/rtree.html - # https://sqlite.org/geopoly.html - append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY - - # Support Session extension. - # https://sqlite.org/compile.html#enable_session - # https://sqlite.org/sessionintro.html - append-cppflags -DSQLITE_ENABLE_SESSION - - # Support scan status functions. - # https://sqlite.org/compile.html#enable_stmt_scanstatus - # https://sqlite.org/c3ref/stmt_scanstatus.html - # https://sqlite.org/c3ref/stmt_scanstatus_reset.html - append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS - - # Support sqlite_stmt virtual table. - # https://sqlite.org/compile.html#enable_stmtvtab - # https://sqlite.org/stmt.html - append-cppflags -DSQLITE_ENABLE_STMTVTAB - - # Support unknown() function. - # https://sqlite.org/compile.html#enable_unknown_sql_function - append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION - - # Support unlock notification. - # https://sqlite.org/compile.html#enable_unlock_notify - # https://sqlite.org/c3ref/unlock_notify.html - # https://sqlite.org/unlock_notify.html - append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY - - # Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements. - # https://sqlite.org/compile.html#enable_update_delete_limit - # https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses - # https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses - append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT - - # Support soundex() function. - # https://sqlite.org/compile.html#soundex - # https://sqlite.org/lang_corefunc.html#soundex - append-cppflags -DSQLITE_SOUNDEX - - # Support URI filenames. - # https://sqlite.org/compile.html#use_uri - # https://sqlite.org/uri.html - append-cppflags -DSQLITE_USE_URI - - options+=( $(use_enable debug) ) - - if use icu; then - # Support ICU extension. - # https://sqlite.org/compile.html#enable_icu - options+=( --with-icu-config ) - fi - - options+=( - --disable-editline - $(use_enable readline) - ) - - if use readline; then - options+=( --with-readline-inc="-I${ESYSROOT}/usr/include/readline" ) - fi - - if use secure-delete; then - # Enable secure_delete pragma by default. - # https://sqlite.org/compile.html#secure_delete - # https://sqlite.org/pragma.html#pragma_secure_delete - append-cppflags -DSQLITE_SECURE_DELETE - fi - - options+=( $(use_enable static-libs static) ) - - # tcl, test, tools USE flags. - if use tcl || use test || { use tools && multilib_is_native_abi; }; then - options+=( - --enable-tcl - --with-tcl="${ESYSROOT}/usr/$(get_libdir)" - ) - else - options+=( --disable-tcl ) - fi - - if [[ "${ABI}" == "x86" ]]; then - if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then - append-cflags -mfpmath=sse - else - append-cflags -ffloat-store - fi - fi - - # set SONAME for the library - options+=( --soname=legacy ) - - # https://sqlite.org/forum/forumpost/4f4d06a9f6683bb9 - tc-export CC - CC_FOR_BUILD=${CC} econf "${options[@]}" -} - -multilib_src_compile() { - emake HAVE_TCL="$(usev tcl 1)" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" - - if use tools && multilib_is_native_abi; then - emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh - fi - - if [[ ${PV} == 9999 ]] && use doc && multilib_is_native_abi; then - emake tclsqlite3.c - - local build_directory="$(pwd)" - build_directory="${build_directory##*/}" - - mkdir "${WORKDIR}/${PN}-doc-build" || die - pushd "${WORKDIR}/${PN}-doc-build" > /dev/null || die - - emake -f "../${PN}-doc/Makefile" -j1 SRC="../${PN}" BLD="../${build_directory}" DOC="../${PN}-doc" CC="$(tc-getBUILD_CC)" TCLINC="" TCLFLAGS="$($(tc-getBUILD_PKG_CONFIG) --libs tcl) -ldl -lm" base doc - rmdir doc/matrix{/*,} || die - - popd > /dev/null || die - fi -} - -multilib_src_test() { - if [[ "${EUID}" -eq 0 ]]; then - ewarn "Skipping tests due to root permissions" - return - fi - - local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}" - - # e_uri.test tries to open files in /. - # bug #839798 - local SANDBOX_PREDICT=${SANDBOX_PREDICT} - addpredict "/test.db" - addpredict "/ÿ.db" - - emake -Onone $(usex debug 'fulltest' 'test') -} - -multilib_src_install() { - emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install - - if use tools && multilib_is_native_abi; then - install_tool() { - if [[ -f ".libs/${1}" ]]; then - newbin ".libs/${1}" "${2}" - else - newbin "${1}" "${2}" - fi - } - - install_tool changeset sqlite3-changeset - install_tool dbdump sqlite3-db-dump - install_tool dbhash sqlite3-db-hash - install_tool dbtotxt sqlite3-db-to-txt - install_tool index_usage sqlite3-index-usage - install_tool rbu sqlite3-rbu - install_tool scrub sqlite3-scrub - install_tool showdb sqlite3-show-db - install_tool showjournal sqlite3-show-journal - install_tool showshm sqlite3-show-shm - install_tool showstat4 sqlite3-show-stat4 - install_tool showwal sqlite3-show-wal - install_tool sqldiff sqlite3-diff - install_tool sqlite3_analyzer sqlite3-analyzer - install_tool sqlite3_checker sqlite3-checker - install_tool sqlite3_expert sqlite3-expert - install_tool sqltclsh sqlite3-tclsh - - unset -f install_tool - fi -} - -multilib_src_install_all() { - find "${ED}" -name "*.la" -delete || die - - doman sqlite3.1 - - if use doc; then - if [[ ${PV} == 9999 ]]; then - pushd "${WORKDIR}/${PN}-doc-build/doc" > /dev/null || die - else - pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die - fi - - find "(" -name "*.db" -o -name "*.txt" ")" -delete || die - if [[ ${PV} != 9999 ]]; then - rm search search.d/admin || die - rmdir search.d || die - find -name "*~" -delete || die - fi - - ( - docinto html - dodoc -r * - ) - - popd > /dev/null || die - fi -} diff --git a/dev-db/sqlite/sqlite-3.49.0.ebuild b/dev-db/sqlite/sqlite-3.49.0.ebuild new file mode 100644 index 000000000000..1f481b32f3df --- /dev/null +++ b/dev-db/sqlite/sqlite-3.49.0.ebuild @@ -0,0 +1,432 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic multilib-minimal toolchain-funcs + +DESCRIPTION="SQL database engine" +HOMEPAGE="https://sqlite.org/" + +# On version updates, make sure to read the forum (https://sqlite.org/forum/forum) +# for hints regarding test failures, backports, etc. +if [[ ${PV} == 9999 ]]; then + S="${WORKDIR}"/${PN} + PROPERTIES="live" +else + printf -v SRC_PV "%u%02u%02u%02u" $(ver_rs 1- " ") + DOC_PV="${SRC_PV}" + #printf -v DOC_PV "%u%02u%02u00" $(ver_rs 1-3 " ") + + SRC_URI=" + https://sqlite.org/2025/${PN}-src-${SRC_PV}.zip + doc? ( https://sqlite.org/2025/${PN}-doc-${DOC_PV}.zip ) + " + S="${WORKDIR}/${PN}-src-${SRC_PV}" + + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +fi + +LICENSE="public-domain" +SLOT="3" +IUSE="debug doc icu +readline secure-delete static-libs tcl test tools" +RESTRICT="!test? ( test )" + +RDEPEND=" + sys-libs/zlib:=[${MULTILIB_USEDEP}] + icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] ) + readline? ( sys-libs/readline:=[${MULTILIB_USEDEP}] ) + tcl? ( dev-lang/tcl:=[${MULTILIB_USEDEP}] ) + tools? ( dev-lang/tcl:= ) +" +DEPEND=" + ${RDEPEND} + test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] ) +" +if [[ ${PV} == 9999 ]]; then + BDEPEND+=" dev-vcs/fossil" +else + BDEPEND+=" app-arch/unzip" +fi + +PATCHES=( + "${FILESDIR}"/${PN}-3.47.2-hwtime.h-Don-t-use-rdtsc-on-i486.patch + # https://sqlite.org/forum/forumpost/3c2014fea4 + "${FILESDIR}"/${PN}-3.49.0-cppflags.patch +) + +_fossil_fetch() { + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" + local repo_id="${1}" + local repo_uri="${2}" + + local -x FOSSIL_HOME="${HOME}" + + mkdir -p "${T}/fossil/${repo_id}" || die + pushd "${T}/fossil/${repo_id}" > /dev/null || die + + if [[ -n "${EVCS_OFFLINE}" ]]; then + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + die "Network activity disabled using EVCS_OFFLINE and clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" + fi + else + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + einfo fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" + fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" || die + echo + else + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" . || die + einfo fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" + fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" || die + echo + fi + + ( + addwrite "${distdir}" + mkdir -p "${distdir}/fossil-src/${repo_id}" || die + cp -p "${repo_id}.fossil" "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" || die + ) + fi + + popd > /dev/null || die +} + +_fossil_checkout() { + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" + local repo_id="${1}" + local branch_or_commit="${2}" + local target_directory="${3}" + + local -x FOSSIL_HOME="${HOME}" + + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + die "Clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" + fi + + if [[ ! -f "${T}/fossil/${repo_id}/${repo_id}.fossil" ]]; then + mkdir -p "${T}/fossil/${repo_id}" || die + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" "${T}/fossil/${repo_id}" || die + fi + + mkdir "${target_directory}" || die + pushd "${target_directory}" > /dev/null || die + + einfo fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" + fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" || die + echo + + popd > /dev/null || die +} + +fossil_fetch() { + local repo_id="${1}" + local repo_uri="${2}" + local target_directory="${3}" + + local branch_or_commit="${EFOSSIL_COMMIT:-${EFOSSIL_BRANCH:-trunk}}" + + _fossil_fetch "${repo_id}" "${repo_uri}" + _fossil_checkout "${repo_id}" "${branch_or_commit}" "${target_directory}" +} + +src_unpack() { + if [[ ${PV} == 9999 ]]; then + fossil_fetch sqlite https://sqlite.org/src "${WORKDIR}/${PN}" + if use doc; then + fossil_fetch sqlite-doc https://sqlite.org/docsrc "${WORKDIR}/${PN}-doc" + fi + else + default + fi +} + +src_prepare() { + default + + multilib_copy_sources +} + +multilib_src_configure() { + local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" + local options=() + + options+=( + --enable-load-extension + --enable-threadsafe + ) + + # Support detection of misuse of SQLite API. + # https://sqlite.org/compile.html#enable_api_armor + append-cppflags -DSQLITE_ENABLE_API_ARMOR + + # Support bytecode and tables_used virtual tables. + # https://sqlite.org/compile.html#enable_bytecode_vtab + # https://sqlite.org/bytecodevtab.html + append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB + + # Support column metadata functions. + # https://sqlite.org/compile.html#enable_column_metadata + # https://sqlite.org/c3ref/column_database_name.html + append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA + + # Support sqlite_dbpage virtual table. + # https://sqlite.org/compile.html#enable_dbpage_vtab + # https://sqlite.org/dbpage.html + append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB + + # Support dbstat virtual table. + # https://sqlite.org/compile.html#enable_dbstat_vtab + # https://sqlite.org/dbstat.html + append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB + + # Support sqlite3_serialize() and sqlite3_deserialize() functions. + # https://sqlite.org/compile.html#enable_deserialize + # https://sqlite.org/c3ref/serialize.html + # https://sqlite.org/c3ref/deserialize.html + append-cppflags -DSQLITE_ENABLE_DESERIALIZE + + # Support comments in output of EXPLAIN. + # https://sqlite.org/compile.html#enable_explain_comments + append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS + + # Support Full-Text Search versions 3, 4 and 5. + # https://sqlite.org/compile.html#enable_fts3 + # https://sqlite.org/compile.html#enable_fts3_parenthesis + # https://sqlite.org/compile.html#enable_fts4 + # https://sqlite.org/compile.html#enable_fts5 + # https://sqlite.org/fts3.html + # https://sqlite.org/fts5.html + append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS + options+=( --enable-fts4 ) + options+=( --enable-fts5 ) + + # Support hidden columns. + append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS + + # Support memsys5 memory allocator. + # https://sqlite.org/compile.html#enable_memsys5 + # https://sqlite.org/malloc.html#memsys5 + options+=( --enable-memsys5 ) + + # Support sqlite3_normalized_sql() function. + # https://sqlite.org/c3ref/expanded_sql.html + append-cppflags -DSQLITE_ENABLE_NORMALIZE + + # Support sqlite_offset() function. + # https://sqlite.org/compile.html#enable_offset_sql_func + # https://sqlite.org/lang_corefunc.html#sqlite_offset + append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC + + # Support pre-update hook functions. + # https://sqlite.org/compile.html#enable_preupdate_hook + # https://sqlite.org/c3ref/preupdate_count.html + append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK + + # Support Resumable Bulk Update extension. + # https://sqlite.org/compile.html#enable_rbu + # https://sqlite.org/rbu.html + append-cppflags -DSQLITE_ENABLE_RBU + + # Support R*Trees. + # https://sqlite.org/compile.html#enable_rtree + # https://sqlite.org/compile.html#enable_geopoly + # https://sqlite.org/rtree.html + # https://sqlite.org/geopoly.html + options+=( --enable-rtree --enable-geopoly ) + + # Support Session extension. + # https://sqlite.org/compile.html#enable_session + # https://sqlite.org/sessionintro.html + options+=( --enable-session ) + + # Support scan status functions. + # https://sqlite.org/compile.html#enable_stmt_scanstatus + # https://sqlite.org/c3ref/stmt_scanstatus.html + # https://sqlite.org/c3ref/stmt_scanstatus_reset.html + append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS + + # Support sqlite_stmt virtual table. + # https://sqlite.org/compile.html#enable_stmtvtab + # https://sqlite.org/stmt.html + append-cppflags -DSQLITE_ENABLE_STMTVTAB + + # Support unknown() function. + # https://sqlite.org/compile.html#enable_unknown_sql_function + append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION + + # Support unlock notification. + # https://sqlite.org/compile.html#enable_unlock_notify + # https://sqlite.org/c3ref/unlock_notify.html + # https://sqlite.org/unlock_notify.html + append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY + + # Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements. + # https://sqlite.org/compile.html#enable_update_delete_limit + # https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses + # https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses + append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT + + # Support soundex() function. + # https://sqlite.org/compile.html#soundex + # https://sqlite.org/lang_corefunc.html#soundex + append-cppflags -DSQLITE_SOUNDEX + + # Support URI filenames. + # https://sqlite.org/compile.html#use_uri + # https://sqlite.org/uri.html + append-cppflags -DSQLITE_USE_URI + + options+=( $(use_enable debug) ) + + if use icu; then + # Support ICU extension. + # https://sqlite.org/compile.html#enable_icu + options+=( --with-icu-config ) + fi + + options+=( + --disable-editline + $(use_enable readline) + ) + + if use readline; then + options+=( --with-readline-inc="-I${ESYSROOT}/usr/include/readline" ) + fi + + if use secure-delete; then + # Enable secure_delete pragma by default. + # https://sqlite.org/compile.html#secure_delete + # https://sqlite.org/pragma.html#pragma_secure_delete + append-cppflags -DSQLITE_SECURE_DELETE + fi + + options+=( $(use_enable static-libs static) ) + + # tcl, test, tools USE flags. + if use tcl || use test || { use tools && multilib_is_native_abi; }; then + options+=( + --enable-tcl + --with-tcl="${ESYSROOT}/usr/$(get_libdir)" + ) + else + options+=( --disable-tcl ) + fi + + if [[ "${ABI}" == "x86" ]]; then + if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then + append-cflags -mfpmath=sse + else + append-cflags -ffloat-store + fi + fi + + # set SONAME for the library + options+=( --soname=legacy ) + + # https://sqlite.org/forum/forumpost/4f4d06a9f6683bb9 + tc-export CC + + CC_FOR_BUILD=${CC} econf "${options[@]}" +} + +multilib_src_compile() { + emake HAVE_TCL="$(usev tcl 1)" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" + + if use tools && multilib_is_native_abi; then + emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh + fi + + if [[ ${PV} == 9999 ]] && use doc && multilib_is_native_abi; then + emake tclsqlite3.c + + local build_directory="$(pwd)" + build_directory="${build_directory##*/}" + + mkdir "${WORKDIR}/${PN}-doc-build" || die + pushd "${WORKDIR}/${PN}-doc-build" > /dev/null || die + + emake -f "../${PN}-doc/Makefile" -j1 SRC="../${PN}" BLD="../${build_directory}" DOC="../${PN}-doc" CC="$(tc-getBUILD_CC)" TCLINC="" TCLFLAGS="$($(tc-getBUILD_PKG_CONFIG) --libs tcl) -ldl -lm" base doc + rmdir doc/matrix{/*,} || die + + popd > /dev/null || die + fi +} + +multilib_src_test() { + if [[ "${EUID}" -eq 0 ]]; then + ewarn "Skipping tests due to root permissions" + return + fi + + local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}" + + # e_uri.test tries to open files in /. + # bug #839798 + local SANDBOX_PREDICT=${SANDBOX_PREDICT} + addpredict "/test.db" + addpredict "/ÿ.db" + + emake -Onone $(usex debug 'fulltest' 'test') +} + +multilib_src_install() { + emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install + + if use tools && multilib_is_native_abi; then + install_tool() { + if [[ -f ".libs/${1}" ]]; then + newbin ".libs/${1}" "${2}" + else + newbin "${1}" "${2}" + fi + } + + install_tool changeset sqlite3-changeset + install_tool dbdump sqlite3-db-dump + install_tool dbhash sqlite3-db-hash + install_tool dbtotxt sqlite3-db-to-txt + install_tool index_usage sqlite3-index-usage + install_tool rbu sqlite3-rbu + install_tool scrub sqlite3-scrub + install_tool showdb sqlite3-show-db + install_tool showjournal sqlite3-show-journal + install_tool showshm sqlite3-show-shm + install_tool showstat4 sqlite3-show-stat4 + install_tool showwal sqlite3-show-wal + install_tool sqldiff sqlite3-diff + install_tool sqlite3_analyzer sqlite3-analyzer + install_tool sqlite3_checker sqlite3-checker + install_tool sqlite3_expert sqlite3-expert + install_tool sqltclsh sqlite3-tclsh + + unset -f install_tool + fi +} + +multilib_src_install_all() { + find "${ED}" -name "*.la" -delete || die + + doman sqlite3.1 + + if use doc; then + if [[ ${PV} == 9999 ]]; then + pushd "${WORKDIR}/${PN}-doc-build/doc" > /dev/null || die + else + pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die + fi + + find "(" -name "*.db" -o -name "*.txt" ")" -delete || die + if [[ ${PV} != 9999 ]]; then + rm search search.d/admin || die + rmdir search.d || die + find -name "*~" -delete || die + fi + + ( + docinto html + dodoc -r * + ) + + popd > /dev/null || die + fi +} diff --git a/dev-db/sqlmap/Manifest b/dev-db/sqlmap/Manifest index dbd643e67f4b..3474f3d5ddb9 100644 --- a/dev-db/sqlmap/Manifest +++ b/dev-db/sqlmap/Manifest @@ -1,7 +1,7 @@ AUX sqlmap.bash-completion 5757 BLAKE2B f602d99b6b0a30cf405b390eaef355f7a4b4fa4260f0a18fe09a0fa7530af131b75ffc25ca161898f2ed4a93ef9251c0c88cb1ad25d78d870fd2ff19225e0609 SHA512 5024cfb2274a2798fcc7d12e59693253732f66c1389aed36cc31fb8e40d03f7e9a713e93e24711185b5d2d82dd2ac91ec2b6cdc4929c5ca3245fcb4f502d327a DIST sqlmap-1.8.11.gh.tar.gz 7251649 BLAKE2B c7c85f59c84a45e38058bbb15fd7b579f6ff3775aa4fcf0a96ad2a44e7f9fa19f00feb30744006ebf92e1f7551f87c70a20cefa895b8d0068574eb8b0e88252a SHA512 37b275c96038a3023fb1b2e69ec96390a021e7f8b292952a2328cd9891ff4fbf7f284e6af003e1677fa2972dfc44d620d7fc2cfa5ae42ca47b7df64cce9d04ad -DIST sqlmap-1.8.9.gh.tar.gz 7251590 BLAKE2B 6313530bd6f2ac5e01b7359240829207c2df57ac3ea808cb11a335bc109b89a779f174df1a8736fd272a5d48c222576b13de5a533267592e02411bc165f32f8e SHA512 b0190d9e9e05801a7a0d31f056342b4381e07fca8de9436f0f1df158c8bce201a045605e67cbe3d6fcb8b416b46ba78ed93b9fca5942ecb3e5ab8ed1805187fc +DIST sqlmap-1.9.gh.tar.gz 7251286 BLAKE2B d09e8854a8f3e49b2c071cc79046ad8b2e80912acedbe83bf2b7bc838f30d3f84a3564fc1c03840b76bf0868ecaed289823a46eb16938a4fe0a0c1beef8e04ec SHA512 f92565d12931aa38f1c29634417a1f4a81d1686b7d3816157cdc524eb7f93555a5a706cc519c31baf7bf1631319e49ee695ff4006c336ffe5208e97eba8086ba EBUILD sqlmap-1.8.11.ebuild 1333 BLAKE2B 5a9fc3b447f41571e6f41482a799164c19c4b7eab9425b2997c65bbc29ca0a2663e7be90d46ce9b35da63a0b5728764ceb642e38c04daa9448747dd312359744 SHA512 aeb27eaece35203345dd8780b5079f911fc5dd56f11acf1a8f61fdb154ba88a8240764dafee38370aff46a50c9e6e42e6e49a776a087282fcf3980f353f79475 -EBUILD sqlmap-1.8.9.ebuild 1333 BLAKE2B b3cb8c8e6812608e650606f443be5fc0c095ac2d6ed6a6c891aa975b897d4cc97a2423fd713a95e5692cc489e8176fe64ff26225c76a7e2c568e1aae75c93171 SHA512 bf494a99403a0be49516a5f213817da90f32bf5e542f5cf9905562eab7376bd3e4fdacdca0dac06b1de40559f8591d35e5bd9cb2c9414f5f32827a9626dfb3f0 +EBUILD sqlmap-1.9.ebuild 1335 BLAKE2B 41c312b785eb0dfb253aa9d6caf972195bda075fb53f118129b99e7e64340dba84749af49fc3625f2b7bb761f559a91221607162f86327bdecf5b3d34089a555 SHA512 9679285464d398819eeb3d7db430af0087aa2449d3b81130df78ce679a8a314bcb7f78949610622577a4a2bfbea0e70c2923b4fbcc85ca10871299424b906a8b EBUILD sqlmap-9999.ebuild 1335 BLAKE2B 3a4b2d955ace10b02cff80c4f3954095d437b70995fdea32fb4002b2b4b98b541669c4afe8e284eb79971012e11b0d80f3abc5b4348ef0c6ae428458a44446c6 SHA512 1ed0e8b0cadd4938a87b24c88b2bf09a7b928146aa330a3c3a931926351feb8eed50a30b541dcf06d2aab22e28984d1bdfba0d09667e3b73ebe4be60b6d9e47c MISC metadata.xml 847 BLAKE2B 31fdd4fd94a4b6ad8c775bbbc9cb48b5627f2f5944a7bdaf6c30f3559044dda6cd92be3b50c8baf462b1e2e4ea4aa905bbac88c616cbfbc833a4895a1944b0d6 SHA512 bddfbc5ce988bc1770a2ad1d6952d8ef44010c9e4ef789500f0408c7c5754960804f270bb6e24e4739852cdef07b3f22111ad9da453648730f045d0b2c3deea9 diff --git a/dev-db/sqlmap/sqlmap-1.8.9.ebuild b/dev-db/sqlmap/sqlmap-1.8.9.ebuild deleted file mode 100644 index 0170f6b3bc73..000000000000 --- a/dev-db/sqlmap/sqlmap-1.8.9.ebuild +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..13} ) -PYTHON_REQ_USE="sqlite" - -inherit bash-completion-r1 python-single-r1 wrapper - -DESCRIPTION="An automatic SQL injection and database takeover tool" -HOMEPAGE="https://sqlmap.org/" - -if [[ ${PV} == 9999 ]] ; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/sqlmapproject/sqlmap" -else - SRC_URI="https://github.com/sqlmapproject/sqlmap/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz" - KEYWORDS="amd64 x86" -fi - -# sqlmap (GPL-2+) -# ansitrm (BSD) -# beautifulsoup (BSD) -# bottle (MIT) -# chardet (LGPL-2.1+) -# clientform (BSD) -# colorama (BSD) -# fcrypt (BSD-2) -# identitywaf (MIT) -# keepalive (LGPL-2.1+) -# magic (MIT) -# multipartpost (LGPL-2.1+) -# ordereddict (MIT) -# prettyprint (BSD-2) -# pydes (public-domain) -# six (MIT) -# socks (BSD) -# termcolor (BSD) -# wininetpton (public-domain) -LICENSE="BSD BSD-2 GPL-2+ LGPL-2.1+ MIT public-domain" -SLOT="0" - -RDEPEND="${PYTHON_DEPS}" -REQUIRED_USE="${PYTHON_REQUIRED_USE}" - -DOCS=( doc/ README.md ) - -src_install () { - einstalldocs - - insinto /usr/share/${PN}/ - doins -r * - python_optimize "${ED}"/usr/share/${PN} - - make_wrapper ${PN} \ - "${EPYTHON} ${EPREFIX}/usr/share/${PN}/sqlmap.py" - - newbashcomp "${FILESDIR}"/sqlmap.bash-completion sqlmap -} diff --git a/dev-db/sqlmap/sqlmap-1.9.ebuild b/dev-db/sqlmap/sqlmap-1.9.ebuild new file mode 100644 index 000000000000..37028c14816a --- /dev/null +++ b/dev-db/sqlmap/sqlmap-1.9.ebuild @@ -0,0 +1,60 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +PYTHON_REQ_USE="sqlite" + +inherit bash-completion-r1 python-single-r1 wrapper + +DESCRIPTION="An automatic SQL injection and database takeover tool" +HOMEPAGE="https://sqlmap.org/" + +if [[ ${PV} == 9999 ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/sqlmapproject/sqlmap" +else + SRC_URI="https://github.com/sqlmapproject/sqlmap/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz" + KEYWORDS="~amd64 ~x86" +fi + +# sqlmap (GPL-2+) +# ansitrm (BSD) +# beautifulsoup (BSD) +# bottle (MIT) +# chardet (LGPL-2.1+) +# clientform (BSD) +# colorama (BSD) +# fcrypt (BSD-2) +# identitywaf (MIT) +# keepalive (LGPL-2.1+) +# magic (MIT) +# multipartpost (LGPL-2.1+) +# ordereddict (MIT) +# prettyprint (BSD-2) +# pydes (public-domain) +# six (MIT) +# socks (BSD) +# termcolor (BSD) +# wininetpton (public-domain) +LICENSE="BSD BSD-2 GPL-2+ LGPL-2.1+ MIT public-domain" +SLOT="0" + +RDEPEND="${PYTHON_DEPS}" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +DOCS=( doc/ README.md ) + +src_install () { + einstalldocs + + insinto /usr/share/${PN}/ + doins -r * + python_optimize "${ED}"/usr/share/${PN} + + make_wrapper ${PN} \ + "${EPYTHON} ${EPREFIX}/usr/share/${PN}/sqlmap.py" + + newbashcomp "${FILESDIR}"/sqlmap.bash-completion sqlmap +} diff --git a/dev-db/timescaledb/Manifest b/dev-db/timescaledb/Manifest index 37e89b7cb56b..622ab4782328 100644 --- a/dev-db/timescaledb/Manifest +++ b/dev-db/timescaledb/Manifest @@ -1,5 +1,5 @@ DIST timescaledb-2.17.2.tar.gz 7567447 BLAKE2B c2d5d9883377ffce57184c9c29413d12a41c7ef7891abb088aa72d0d7c410db28370c53585d7ec286fd52b3fe5c89b10f3b6deb547b6a1de132dc9c6697aa8cb SHA512 fc74d41062735bd4136ac71b0e10aecf34a64cdb29fd2ff31eae3f406beb8db00866e8ed7e142d47852e1586a6ad2ffa1652fbd792a45e995174b62464963d1e -DIST timescaledb-2.18.0.tar.gz 7890767 BLAKE2B 84cdb9673893290b835500b8a22436e1a9f19d13e9a85dc9a34b31f246d647fc3cc0a54be5676e381eb3161b7e6bb9e79447dbe0ed4a265b93e66871dbd577ed SHA512 6a41c49b0262064d70e6b754a95a3914b43b518523c63a9a9604612df2188117733b237330cb28ffe5d7da10e64e7db11fe952b976878dff5624c799d8d37220 +DIST timescaledb-2.18.1.tar.gz 7903462 BLAKE2B d52814524f485593973c671cbdf5ed7c81bcbb5d4b9df1cfdc0a5b27edbc1a8b35d28feda786f9b1137bc986d2efed797be1b347e2204626d2251c0b7df5f7ae SHA512 94d6d10b8b74a55211d8767887962f5c37bc1ecd4dcc13fa8740904a9503d885ff635d0c93c56a5b3daacddf882f16f89f3d0afe50bc351e9abb8015cc537efb EBUILD timescaledb-2.17.2.ebuild 1435 BLAKE2B 5db2df97f1a3a553fddba3f1335f0c8ed0d559373db4846a6512ef7ba1312f8c29eb85add3e87cb430718ecffbf70cab8ae3a00553a297d2acbba0335fb0aff6 SHA512 73a4680b81449792ad256be52140d1f07d424793cfa94c080ae2f46f60209710780a0a21df8a802a2bfb1d2931d8ea3743829502cae14bc60f80630f1c6562af -EBUILD timescaledb-2.18.0.ebuild 1435 BLAKE2B 1bd8f483ef831456a7563048d026823be7590446a8911c2e94a81000d45b650200c2fd142d824d2b102e6aaf42c9cac292526b5ea36f61b1b9d0b49eabab4c18 SHA512 f24d023333f77a160a67ce44a5f3b51210d609969c86b269561af4ddf3d17debb95891636ff645790a6915c4ec97a91f56676c7d11452d08808fe877621df929 +EBUILD timescaledb-2.18.1.ebuild 1435 BLAKE2B 1bd8f483ef831456a7563048d026823be7590446a8911c2e94a81000d45b650200c2fd142d824d2b102e6aaf42c9cac292526b5ea36f61b1b9d0b49eabab4c18 SHA512 f24d023333f77a160a67ce44a5f3b51210d609969c86b269561af4ddf3d17debb95891636ff645790a6915c4ec97a91f56676c7d11452d08808fe877621df929 MISC metadata.xml 510 BLAKE2B 4e96707c6ee1fd09ff2baff091e02ceab53bfc28a6a3b91265a21fe9918a9728d2fe6394bed01e8bf4417c2349c2e72bab180cfff71cedf4641d462b29a33d3d SHA512 5e91ef3b9a503462dc880300e364f74e6564dd74671d0b0ce723a86ea7471f987424e06e51384d6fb079681122b8d454e255efe2e19726d64de7928df227148a diff --git a/dev-db/timescaledb/timescaledb-2.18.0.ebuild b/dev-db/timescaledb/timescaledb-2.18.1.ebuild similarity index 100% rename from dev-db/timescaledb/timescaledb-2.18.0.ebuild rename to dev-db/timescaledb/timescaledb-2.18.1.ebuild diff --git a/dev-db/tora/Manifest b/dev-db/tora/Manifest deleted file mode 100644 index f3867f030f95..000000000000 --- a/dev-db/tora/Manifest +++ /dev/null @@ -1,4 +0,0 @@ -AUX tora-3.2-qt-includes.patch 1405 BLAKE2B f42d2fd5e39d6de51b3c6555dcb395b0b419d6685b6ce70389c4335f511a52abcfba5c51dc0454b0ddc91ba328dda50cc5727a1c84266c860a9d8781dae67a32 SHA512 1901e7501f8cf79ed74623fd5a5cc948e131cb5f75a9a55b0a712b6980c584a25e909bf7a17575b4604258ba444da7d47fddea34e6267cf73cc078e1547adf9f -DIST tora-3.2.tar.gz 12762547 BLAKE2B 9e52013cc4122a8c6278392fd2251bad941fa48dbbc6e3c72a98bb2bad173d0262877afc44eca689c3110f69883c246441844f7884e309e000f1068b23c6b918 SHA512 005f9bc42a7c7ee9676ad60cdcb7b8fb9862a8ff0be9ffeb7911d96da7f233553b68e4089d23161871b479702ae8a8dc8bc63bd8d9aa75677bdd6c166ce86f7a -EBUILD tora-3.2-r2.ebuild 2171 BLAKE2B c8a63c42911c4ea32625984a83317e3c0d2e0e97cd41d253036318018bcf7a1843d3a829e5439df97bed26ed80d8625636940082c5498bbee5d95d4ebff2c176 SHA512 a1070f8844b2ac59f41df2e61757b9115ccb718be97b0f79ec689c0c8914e745892d1c8545d46e488f91c4bc35de7fb642776d49bb2608f7af34eb0f9b70afce -MISC metadata.xml 591 BLAKE2B 733ec0a015e39754579ae41c69fe69077ab0f9dbb56a3e033841c74eb3364339b49a324b13c7f7fbaaf432dc61f193c783f1f327acc8a59cefdbe89844c4f209 SHA512 199af7690f41e6c4461e341c595c52c40b73a6d93ca8e52c357df29b7742248b88cb11c9a8267e267516deda63d92a60b29c7268718ff6ff3a2edd0f5e0b1044 diff --git a/dev-db/tora/files/tora-3.2-qt-includes.patch b/dev-db/tora/files/tora-3.2-qt-includes.patch deleted file mode 100644 index 6126cdf71ca9..000000000000 --- a/dev-db/tora/files/tora-3.2-qt-includes.patch +++ /dev/null @@ -1,61 +0,0 @@ ---- a/src/editor/tosqltext.cpp -+++ b/src/editor/tosqltext.cpp -@@ -50,6 +50,7 @@ - #include - #endif - -+#include - #include - #include - #include ---- a/src/main/tooraclesetting.cpp -+++ b/src/main/tooraclesetting.cpp -@@ -45,6 +45,8 @@ - #include "core/toqvalue.h" - #include "core/toquery.h" - -+#include -+ - toOracleSetting::toOracleSetting(QWidget *parent) - : QWidget(parent) - , toSettingTab("database.html#oracle") ---- a/src/tools/tobrowser.cpp -+++ b/src/tools/tobrowser.cpp -@@ -65,6 +65,7 @@ - #include - #include - #include -+#include - - #include "icons/addindex.xpm" - #include "icons/addtable.xpm" ---- a/src/tools/toscript.cpp -+++ b/src/tools/toscript.cpp -@@ -56,6 +56,7 @@ - #include - #include - #include -+#include - - #include "icons/execute.xpm" - #include "icons/toscript.xpm" ---- a/src/tools/tosecurity.cpp -+++ b/src/tools/tosecurity.cpp -@@ -46,6 +46,7 @@ - - #include - #include -+#include - - #include "icons/addrole.xpm" - #include "icons/adduser.xpm" ---- a/src/widgets/tohelp.cpp -+++ b/src/widgets/tohelp.cpp -@@ -43,6 +43,7 @@ - #include "core/toconfiguration.h" - #include "ts_log/ts_log_utils.h" - -+#include - #include - #include - diff --git a/dev-db/tora/metadata.xml b/dev-db/tora/metadata.xml deleted file mode 100644 index 6db883b8f1dc..000000000000 --- a/dev-db/tora/metadata.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - TOra is a Toolkit for Oracle which aims to help the DBA or developer of - database application. Features PL/SQL debugger, SQL worksheet with syntax - highlighting, DB browser and a comprehensive set of DBA tools. Also works - with mySQL and postgreSQL. - - - tora - tora-tool/tora - - diff --git a/dev-db/tora/tora-3.2-r2.ebuild b/dev-db/tora/tora-3.2-r2.ebuild deleted file mode 100644 index 3749b42c889d..000000000000 --- a/dev-db/tora/tora-3.2-r2.ebuild +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake desktop toolchain-funcs xdg - -if [[ ${PV} == *9999 ]]; then - EGIT_REPO_URI="https://github.com/tora-tool/tora" - inherit git-r3 -else - SRC_URI="https://github.com/tora-tool/tora/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~amd64 ~x86" -fi - -DESCRIPTION="SQL IDE for Oracle, MySQL and PostgreSQL dbs" -HOMEPAGE="https://github.com/tora-tool/tora/wiki" - -LICENSE="GPL-2" -SLOT="0" -IUSE="doc mysql oracle +postgres" -REQUIRED_USE="|| ( mysql oracle postgres )" - -RDEPEND=" - dev-libs/ferrisloki - dev-qt/qtcore:5 - dev-qt/qtgui:5 - dev-qt/qtnetwork:5 - dev-qt/qtprintsupport:5 - dev-qt/qtsql:5[mysql?,postgres?] - dev-qt/qtwidgets:5 - >=x11-libs/qscintilla-2.10.1:=[qt5(+)] - oracle? ( dev-db/oracle-instantclient ) - postgres? ( dev-db/postgresql:* ) -" -DEPEND=" - ${RDEPEND} - dev-libs/boost -" -BDEPEND=" - dev-qt/linguist-tools:5 - virtual/pkgconfig - doc? ( app-text/doxygen ) -" - -PATCHES=( "${FILESDIR}"/${P}-qt-includes.patch ) - -src_prepare() { - cmake_src_prepare - - # fixed in master, only care about recent qscintilla lib name: - sed -e "/FIND_LIBRARY(QSCINTILLA_LIBRARY/s/qt5scintilla2/qscintilla2_qt5/" \ - -i cmake/modules/FindQScintilla.cmake || die "Failed to fix FindQScintilla.cmake" - - rm -r extlibs/{loki,qscintilla2} || die # ferrisloki, bug #383109 - - sed -e "/COPYING/ d" \ - -i CMakeLists.txt || die "Removal of COPYING file failed" - - # bug 547520 - grep -rlZ '$$ORIGIN' . | xargs -0 sed -i 's|:$$ORIGIN[^:"]*||' || \ - die 'Removal of $$ORIGIN failed' -} - -src_configure() { - local mycmakeargs=( - -DENABLE_DB2=OFF - -DQT5_BUILD=ON - -DWANT_INTERNAL_LOKI=OFF - -DWANT_INTERNAL_QSCINTILLA=OFF - -DWANT_RPM=OFF - -DLOKI_LIBRARY="$($(tc-getPKG_CONFIG) --variable=libdir ferrisloki || die)/libferrisloki.so" - -DLOKI_INCLUDE_DIR="$($(tc-getPKG_CONFIG) --variable=includedir ferrisloki || die)/FerrisLoki" - $(cmake_use_find_package doc Doxygen) - -DENABLE_ORACLE=$(usex oracle) - -DUSE_PCH=OFF - -DENABLE_PGSQL=$(usex postgres) - ) - cmake_src_configure -} - -src_install() { - cmake_src_install - - doicon src/icons/tora.xpm || die - domenu src/tora.desktop || die -} diff --git a/dev-debug/Manifest.gz b/dev-debug/Manifest.gz index 4f26af9b976077743cf84603c5121f185535ace0..9440921111f9122ef30de3ee6cba79b8d687f85c 100644 GIT binary patch literal 4198 zcmV-s5Si~EiwFP!00002|6Q3`j@-wQhu?h)UO?kqBDY5xW5b5W^I~5hG9r^8EYSo> zdAa?3(F0bMBtSqnySgg>5x+J2zu*7u{kxyeH+B7{|Ml;metah-z5Ct&y#Mp>%kSQ) zpQ@=$*}M1TTWt5zZyDOs*1Yykr6q5^%gTGtWhu`!+ui(k`Ipq^G?kiFZKOL#nmha0 ztGBgIo@Lc}^z2@*WjnL?X-iHnX_d0<-CzIszUA_+wqbqsqy5fi&eu7Ql}733B=545 zBn_<`?pnp0Cc; z*YZ00Z~pTBfB*D{-~aV*@AUJ>Z(r2TZ~vm7KHl^7+dBqO9s`@_innq5-ny&wT1J=K zDsvlrxwcKq!)_bp49>Fd^_vG1mD2hWJ6CN_KK5RjvsPx()U#Lq--9pLWR$|V#;kKp z9{L^^#v^(3_I+R?tg*^rE&VpjZQY~k7|-N)?V?NOwc_h0+sf;5Uh|xiv}?_im2azs zch2eN%ADpN!jF>J7~OpdPd(b!>zTpbdPX`7(W<4La(xbLf4;vOSnFv#2DXm_71Oe3 z*0okr+fWov}&pRg`p-+wq4rBSp zr|xujcTwSp1$?D5y0!9sVBXTnc56$^bPe+b;%ft&-I$BjHe2yrm~s<8Lre+eL z7}BaHy#JXaOHCznvUOHfTw3HgF#F*91zkD!=dk45 zs+q&2+Q()K5N;10Rf{KErJYnyN|#fEx>YK}ny2T&IXla$-Z?cd>#bGMo?F?;X0{@y zj?-L0W=-xuY7JLsqnf9Q=w-_fIoOHXh1=fIOw7RdSAv&JJ@*nOw-=5>j zrPQZ-?Rx8l(6z0}sd90kdkjcO&VhlZll?fF1J_ZVym+3z(%P31jWbS2&asr3Tk03x z*$`X-;8?=R5BRK8e9m?2yqzEN;)%j|-`~eI&mN2Ev;m^MwZ0cX-bEbBCIu_jjLD2@ zIiFNeMy7u20yMzIavxT9ZfQzEblpl*n+idifokL=t9OLKY8NJZ_5y_{twYLV=XG3P zKmX@tTA=+gE!H9>qkp!+kHE!oA%&mP;fnO#O3?*irv8(7!ZgV zYw(Sf1-L-kF1NUJ>pUXpZCi#&20j&Im`!9I_s6uVFN6M5VaCj9u$A0+_r6Wk?I5q~ zgcgMCHJ$+Z2Vn>=_)kNxE|jrpD`QjuU4j1v;hjfmU4q7)q0E5j&T`>waIpuc;7@y* zmiu#7{7{}UUlIeVg?U^}H-X}V-|+zzA>zDZ9Gj>0trPKTl0(#Os6vvuOSayfkH%&y zD_cx#rVOn(rtrRd6d0vbSb6HLoP}@j5J}VGnJ^JC<56&I3~Hf$ z1`;~TGfEgP zxCPnlY>#?K2)IEHtv5*p2o<#5FteQU*%=20ewmfCG$1|lf**@Vbxf8M4(Dmujn%8K zxcYU1$S^1z_5if(8mS%m>MQ<$D0-Mjb4HUVqd$Z z$r6b|=k#@^$~gCIDOK*e=A~zTJ|-z8S%O6@$RCkQ64)+5H}HZZAfrkmQ`D=Xxxj#T z1UtE}yE)@s=S2EC7#6QAGHN9U!YTzZeB*XSS?qyw7}FJS-XrVb!aOBtLcVYa+>!hhexTX@lY82s2|T1VBE!XuY5f z3Xsc*crVx@PW|9#|NP;@`SOae@eK87q69;hUJK#ayY!7*jZ)a|Agopx(2$(QtZx>? zq~VSrdJ+}}5oE>43mM*d-n}7PCW06uMIyK)K+F=yt)X`(wvHJvZ5V`yejnNv=@b3K zQ6ao9+z{$wrrt75ppd(Dgl!u-KxR{cyb({2V8u8#3Crx@?L|>Wat3@uWg_+wfo>-; zdwz?7M9SRZQOb9+xL)>{`W)IX6PLUI4C44oI*pYk@=+(aja^C05;{!kshtZY}`@=;Qi6HEB z3PtXxlDjfuVS%eb;J|ituT6@5nboY%eJlwmh?hVKkdqX;=l) zLFUdR7nB}Mv6zk#w=>upaa!+bsHfr1xwFuQ+C^fUG-C34IZ+8N1q)bp%1k$Si(}D5 zed)kxamsxYVVc$Hwqy^%PXns}8im$1X^IC~q~mvF33`cc3U$6{8PG~dCBvb&cRFLA zWGv@niL9F>Hx+-16A|Ok7ceKGqo@ndkp|tLBz&VPT;>gg$kMO5>%-?S|G1w%{P5xD zk1x89**mN0duNU>|XUaZ5#IYOGmpMDW-tm@QoN$$df!16^Kt`;8bm$G|3|f z-Gm6_i?|E|$prQCoYjv<|Na)iUL11eXA>fH0wHq6g+B!@Q5SHkInYg_1%;O!5M>np zP>!%sWFF0;xLkZ;cvwy*S^!Se3LrQ;13JKGl8wUpi;zGnshvJg0RV-*`0!C*rvn~ymn<65x2H$7CUiyH$sx(Lxk;+Ift&dd@I!IMI|Ph6ldErRsMOUcF8 z=xlQ(R=p{VITjol5)lBFjp48LGO=GJRt)%=SaF!moGxkzRCkUXe+q%wCq9r2;Wp55 zDHA-)mhfHyCn$ac)#zxZ4%e{P$+BqHDJF4o-a)oTK%5vsfFd*PlklumquIq37H$5a z`*%lDMFpzz+nymc4Wh*rU-8IcqenrDT1JH8#aT3pAsJPjgi$tl$07JqLadXY2*z3)re>&e-xrwjC-6?V& zH-GfINBAO@>S>Ljg|*<=t)f`$rMHP5j@@}?>evW+MUX|Y41Tw8XiN?ymZ-jqPDF}^ zEwok~76j8x$}oxBU9>S(ERsG$uOyZw$`M3OFX8L+zdrp!yAb-9@;IEP)y2t|#3%y7 z+f7w1B&fLD-Kc0Iq2lR;m2w&kbi5Cop{Ghx!<+_b_h1+_xpkBRunhs;HLk9qCS@CC z;}`J7>?DqXO|_ga>Hi^Kniu50kBW^4d=R)5|T0+DIOTla38j+P?7CB0=14Vq}>Oe^!&vAV<{rrP}`S{OQ^~$Y1 z&9SB^vp7WD1bT=9_Nqcns010rCT^lNl}(Q(?BI;Jc)u6|C?j-}(+IFm4I!u8xGQO3 zr!Gzp3-BsrtXbJKqBq@*l{X%hbc#mnqj0l*(tis}n+M}1x`8^LxdLoF&?#ERKUiG1 z+F=i5{)BC>3gcv8FE~&1Z?f3!&~8vX5B;|BWg?T5LvA{xJdSV>8YPlrtq{tPp>Ar4E8g9hfL+!4Wh)BL0%N*`)`N_mC^X7cVI(ZfMupYbho+ zGaZ#*B|AYyjzmISNG4~S(4(T-Ia@RjS}w&S;(H>Sm3X^G`9*@EIn!8H7l{lC@%rg9 zU&i&Hum16ck!8%M+EY6@Kmdv-CCqzVI*dtDCtVX1S^gu*SbY1 z;PDt2#6;LU2;I}@Es?C^s$~$0tauM7P`{`?Ymg7Ya@bD{>=QuiRq9*Md^x2Rp=c&p(8ZK=hD9pcoe za3n0$oQd5LiH`z|0++7jpmr~-7087BV?)e1M^~naf|3I$G*1$1B5E$9Q$P4fJ*MjK zJ82rwh#0r;MJGbC5cfgo_qT4%Gvk!;hYHvoxFS)V11IS>BvPnF`p22cCM=Q+NAKr+ z$bVrn9w?w4&%SS?nqv=>{M+_(V*k`1KYaQ4>E(8nNK{|)S7I$L6e0LSfbXc-`M{OyZ6d_vqv1@t!>4UQI_AoRKsLMW=d z^?1uk3=h+I+!$J=&P2+J3nSh`8JLo}sE>UhW<0V|M5!TE9*@f+rBF`#SX|f(ZJ@_w@ct-cY}oL4UhEA7Bglf_Zds7j zzU+QZ)SxP}+dvyx%B(-h;CE&H_s73|{P5HHuCCwpzyAHxj~}X}55N1LkAMEX{O*JL zDVk)~y?al-tL-lR%Fvd!=CyZ{mc03vmG_>@Ql4wJyZPVcUs9jbw3e)DBi%XD+}X!o zy{&cflvU=@vwOLg?abb%t$MPgC9>?pU;p^AW%*Fru)g}yerGf1bz3x<# zb+hJP%5K~FraqVNc1PN6X=y%JK7HofBM7k|N6HN`sLI2uWIMFf6>pM?)mop0|Suvfz5NPw{iR4x=ZavMz6OO z<~De_woS{!ZX0q2YgzaD&4Y2QSxTl$CLfS>~8* z`W~;0r{>Yy+rVn&7)w1IOTW!>TlZ)>#-9AHExPKwCcbX6t$Z%$HP4ZxT}z%E`L-fF zIj5TobDDcp-b&TR=(RDe&kXLCGtyy*RxIt5%VS{s%l*~BT2JGBVEZ^wF_k^D zuC+1;mznuCui&YB(le~oEL#}I$TPRS6v)Zanpohq13()95T@OF-Z`;_K3OU_jKe=Z zb*H<#SFJ2jz*jn>Ta&kec}pkTEiEn6HOv=?FAZ#VV=h+OY~op%a;ttuwJM;e&ArZG zNUK=o`Dcz?OOnjW)>%c34c&fXbFQPNdwbKJmrOpnIbRUDRO(}3_Tu{qT{-v1u; z=aU3wWa_spKm%MX_hGVgOS1~1>n2TYDg` z;zNa061T&aC`(^i0fVs?CX3W)27nctmJu{&4;0|GH) z4SuMy02fHxa>Z-6&K5y$+jZ2Mflt90W~+4__xEWPUk3fB!i<^I;8b$s>3v&Ow}ZT{ z6Iu|m*VqB_55f>$@SlcWT_|JICSw!;U4Z`u;hn9tUW3M+q0E5j&h^6C;9?I>!Jqat zE%(Q)c(XoaUJ?T;!aS~~n?Uiw@A!g(5V78BESuf>)`@tvnnToWs6vvmC0p;#S7S4U zBU?;trVOoEX63ni2#nHMIr7w-oP}?&iKJ<<@^_hs=b&Y^K1zqiO?h@I=#nI_R}mzJ z<+X+`xghHdRnvS$;Bkf~aK6_9G7ZS`QK(>?2^PONwQfa~cUdqL*9@KR#xyiLXn0aB z|N8RzF|75Z@ElaeO=_-7m33ld@W>4ZLCaUe@pv3$=%|%o&H-x%GGQWO##V4_3~Hf$ z1`;#qC2)IEHt+$#42npJ5m|0Hw?2H2gzs!+yXh3@81wR&Bbxf8O4re!mn$i+Hz5SGDYRtyB+fgFr0!6^lp1u9Dy80a&827FACr`lEWsiU$loJZO<-GsZr}w+Kt`2Brl?mzbAbU* z1UtE}yIJF1=S2EC7#5$DI!Yl2!YTzZ{NQ%0a_mA7$0dFUlqH!G zR4^5`j|?Ib42F1-37rHkLLRQY7PR0!j|jm$3|L2a7=~+-HW)sRFf*1y0OY$x%LQ#v zfLu<*d%_lR>IXmj=a-lB^%-H~5$e&z8Vp%_Ererl=^MEkBAo6ZtQHv1ketS>Z?1?* z!yQ5NBrFUf$cm8*8Q$6N-jFR5K@5>15nK`=W{KmL(7O|-ju|j*7=(wu4Q=eA=Jf8y=9t!kh^t+Z5uj3X449JBc7g$730_>EVF~Ri=vF=4ETo1MC>C1-A-cm z{2Bv^l)1yBl<(x=y6iFaF|=PKu0nczh?i_I%vTM^@C#+!EXnSvt zR{Ob-pYIB8G_tx9w;?K9!S=`q#4GS|NC8uEC?<8i4>WeR%%rdd$%HXNM*$0Ovl56j zWupEh$fFB=yL2uhR6+Ej-)uZ@0cq`X;2S%%4;7If>OF5FJ?&S8ONl%|YTaxHb~84D ziA0ohUYQ_U*cMUXprEHP^ELLMH)pJ>l&lB_r?1mc5tqH+dWx;{yiIbxz#Zk?W zib2V71KgYqOu>F|?y4t}dtz}RC=|uH#CqzbgLn`-XCtavxMXAyVHOx!&HZ$u`P;0N zM1=4UR=|-EtK2*g|=nPn9uOy<0xL^j- z1}(TJG#~Ec=mo)Ju$U@|V{>r=MegFEiJ*8CG^2ic~(QIO+VHHRR znLC3Elpbg4R>1}yIcP-0X}zbRo`yT;4rv=|7m01sh{@}6q7qyR7AdDwWU`0%$q0~2hC^@fbjCi( zSkBiHSvN^;D*hBJBF3RFXXP3?in_3mH0b^$;Tu)qGH)P6mVVA%FJHd?<9>em;pOK~ z&&fVNvMLx-QYnp36M}pOxI&~LmkH4T90IjLrtnlL4~uxdqjqBowmgyr$$>C0Ys{{1zAJvrohLKmSEizZiG_#<$Mx`0z5og^^~mh#?9lu`IYIl@MD zW005Pa#!V$!*Vjwf|7??-30l<63~@8$wp!Q0`Tz1(t!g7z-W#a5$5Md&2DGUyL%)t z7z}cm!k8m6t_9nB1FSwS25`t8oGl^|zqFBI0t0Izcv49Bi3=2_MUaLqsAIcEXPYZ= z)SJSX7s_@mYpNVAAu)6@quIrw}B39&e+SY z;l1z)Fl$>P=xC-6v$RGMzbs*;n8YO#46-!>;=~976o|)bm4aQO*~JwWZT?;N?~bHu zsUiyHdL}r~AX;4UiAN3_JqlXXG9nZo#&4q-^0nk*&K7_JH<~Kux|}?NYXWg?7-A!t z%xFQVAS~%JXzJ*%57d=vhUGlQ^@SBbDOX;PE1ZEl5=JC=yvYMt5C6cbD*21nAd}ib zt;X8y6uL_FnnHDzZdWr4X7LCs6}XNuz)i2vZrNrl;`r#Egp!ClFFN8_0MiznD9AN=d5e?F^MZmm6L zmZHoO`{E|hLlm%At<;1TVo)W2;+3qxHRTbNZzJW(1jeoB&8vmZ;waU@y2!(K7zQ;=0ws zL&^L}h^;suWfgnDd7^)l#cqdogW`GUw~d#HOd^NebVzwD;UF|hG~uflW?cP0&Ft4V z(6v9*KGG-M4faiR7Wz2`#lb%>W0E(Rw<~=SQ1_4V**91k5Xpc^}j}u;4Bktb76UAa<*A}IK z?J+KhiLiMPx<{}{wWqjhA;fJH?*WCr;;x+nVqT;aD)xI^UATLTYEVnu=-411#Dwr0 z%pc7lE}Vw0v9fvSIV_9fiex$#I5Lh)dANh{GHi5)&Jp8a6je%OVa{iR0+u8slbXF~ zi5vf3Cb+j>jO+XP>AQY;zAPM%zX`EU)Bsze+Ch>{=d-v#D_!AuE8zldsl|mI;?xRx zc*dOs6T5>{K)1wVs&pj>wR<_*3YoBfY={}>=*kPbWWj)fd`a6(?o?sQ>N_8)$5j1& zCrtwy5##o~=tM{s;ywud{@ShCGfo+QsDRypD-zW?aFTxG2;h$Nk28}^I7l)ay`S|V z|H5QEP*7Q6-?vfCv4=^eY)>8XpZep=*H53HZdZv!PxtnU!J(_YjXUBtrbH(Otd>U^ zZJfB6paO|C*dFx{ZS(A5L5;*U;E^F3V1F0#0;Q+NeRG=_9Wgvb(b4#OVvGB0XfBYG zfr9C_?EQ~u<_jmKZW^H`=#K{(z7l$rSik~#L;?~*B_#GZ6Y7TW-IQ$F#&+DX)9yPI t@fLS+m85{tO8h0KGH;4}+<{}Sh5viqEZsaeB9h+U{2yNgrWKtX005b=dev-libs/rocdbgapi-6.3 ) source-highlight? ( dev-util/source-highlight ) diff --git a/dev-debug/gprofng-gui/Manifest b/dev-debug/gprofng-gui/Manifest index 8b7262ba215e..1b4b8b84d84f 100644 --- a/dev-debug/gprofng-gui/Manifest +++ b/dev-debug/gprofng-gui/Manifest @@ -1,4 +1,6 @@ DIST gprofng-gui-1.1.tar.gz 1576556 BLAKE2B 3b757ffe2785cfcee8d5f154f140685dddc8644ff04770be96fbb8bc2a6020e6d10b6daf60962454775c995806c1c7b669d867af88f1928e63f41996f3f85cb9 SHA512 5fad2f32be19bae829f92b3d1f307858c4cd26574dfc2be3ce47728b4c361f090b26cb2a541c63902f65395182cece49c82d39987644eeebe1bc11eb9a58fc48 +DIST gprofng-gui-2.0.tar.gz 1297153 BLAKE2B 0a0c921a2ba1e81cdec3cba5fbe66ae8079fcce3f3fcad2ad792e2758ca218bd667dd9722d32e25027d9eb1b6ddb3897c94098db07f24915928347c4ff804b19 SHA512 2e27eb3632de6a81c9301bea740a1bda288d0c74a788a59cc44cd3c3a172a45e7be8bacb7ffe454924f707728b38bfb539998a41a8ef0b363039d7d6fcc6ac0a EBUILD gprofng-gui-1.1.ebuild 680 BLAKE2B 0bd06a6d24d663f3fb1114ff627ee99dd22109ccf1c8b0930d26f77fc237cc06033e712ea49eabe828fc49f1233cd627e4bf832b3b873372eefdd64ade2c384c SHA512 855fb7f063a38e2ae5c7e0b1f474f74d5fa58d22e8b48993485a2d84f84f339d11534ed35d21434bf5cab7856126b1a6c30daaee4299d3feba65413832b7328e +EBUILD gprofng-gui-2.0.ebuild 685 BLAKE2B d635b67e557585df958eed56f2a465afa95d65f8a406aca16be1f867929d419a6b1f2595ad01e2252f4e7a8b64a0792c2a6adff22171b2bb73c5366018e9d3c2 SHA512 b23c9d1fc1c904e06e5e9f6c0b173fe26fda1239f2b46171202681ebd7657337366c96ec564a5deb442fd2023aebccbd792c24d7bd85e577946740996193ccbe EBUILD gprofng-gui-9999.ebuild 680 BLAKE2B 0bd06a6d24d663f3fb1114ff627ee99dd22109ccf1c8b0930d26f77fc237cc06033e712ea49eabe828fc49f1233cd627e4bf832b3b873372eefdd64ade2c384c SHA512 855fb7f063a38e2ae5c7e0b1f474f74d5fa58d22e8b48993485a2d84f84f339d11534ed35d21434bf5cab7856126b1a6c30daaee4299d3feba65413832b7328e MISC metadata.xml 340 BLAKE2B 0c721aba7987cd6c18ceee9a0e39a997b3327662a06049aa6e8c81aaba226d608cfc8f123e5334af299a24874f6da9d3da2d62de0a7c8908064734e1ba777151 SHA512 45e5824f18172a592b6a556433fe03b673dca9eef0b1cfaf0ad24b1a4ab98f40d659136fb0ae76a8c368ee35920046944a307496b37952bc5637ee41098858a5 diff --git a/dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild b/dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild new file mode 100644 index 000000000000..e3357af2f53c --- /dev/null +++ b/dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild @@ -0,0 +1,35 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit java-pkg-2 + +DESCRIPTION="Full-fledged graphical interface to operate gprofng" +HOMEPAGE="https://www.gnu.org/software/gprofng-gui/" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://git.savannah.gnu.org/git/gprofng-gui.git" + inherit autotools git-r3 +else + SRC_URI="mirror://gnu/gprofng-gui/${P}.tar.gz" + S="${WORKDIR}/${P}" + + KEYWORDS="~amd64" +fi + +LICENSE="GPL-3+" +SLOT="0" + +DEPEND=">=virtual/jdk-1.8:*" +RDEPEND=" + sys-devel/binutils:*[gprofng(-)] + >=virtual/jre-1.8:* +" + +src_prepare() { + default + + [[ ${PV} == 9999 ]] && eautoreconf + + java-pkg-2_src_prepare +} diff --git a/dev-debug/valgrind/Manifest b/dev-debug/valgrind/Manifest index eded5d094785..7ccb4177f2cf 100644 --- a/dev-debug/valgrind/Manifest +++ b/dev-debug/valgrind/Manifest @@ -7,8 +7,8 @@ DIST valgrind-3.23.0.tar.bz2.asc 488 BLAKE2B b06781577e3e84e506e56bd4acc7341aeca DIST valgrind-3.24.0-patches-1.tar.xz 10112 BLAKE2B 83e3b5970b4b4af60dacd90d0d7153359ece8f207f99e3325c8504a0fca123db3b803f2c745ed184f9aa3a4a54d1f922067dd060ce8d18d8b8bd4b936f676602 SHA512 054f5c9ee2676f172e896838e6fb50b1e51a842a8ede2dacb7def01c786bbd874f8099d9bd9ddb0ae88c7d1b32686dee80631ea7f6e27b0efd78a6c1fbdaaaec DIST valgrind-3.24.0.tar.bz2 16632387 BLAKE2B e11ad08f0062bd39788cd71d7ce058dec7a7207fbbe25f0dbfc7fb5735667809681cec2c843659553fbd49bcc6c71bdb93d87ffda3589247e4ee87c98fe51332 SHA512 6c131ff93d1f432d8362a47285cc377cba224ebca4f18e922c6156f7736d43020ece14d8fd16913498ab00fd18c85e2042a7d5351c3901e80413c584ebb406f3 DIST valgrind-3.24.0.tar.bz2.asc 488 BLAKE2B f6307d10ee3ca26d837bf00471d179655ddbb0137920e175767a9d875aae355cea6727112deb788300a5196d94500bf9b341f8c70d46a1f83c40ae579ad45431 SHA512 37e9188756940960dcfe771d10275de7759ae652c94e710618948a8b366f66f3453f77b7751df0010b58304b203d7b3b56ac7a671d142d620916689ce5c84ae0 -EBUILD valgrind-3.23.0_p3.ebuild 5907 BLAKE2B d5be2a89cc503ee153a372639b890c43575071c2eb9b65d5cd4dd2f05044205a96b59d0bb1048d4676004da35675fe914401ddedd43a2a1fd98365cdf8a6b04a SHA512 4513973e0e255d70492ff20ac25b19598964bcddddfea76e73434e1894303c3b6d1e0441f76bfb57befa6dd02b7c54c49635fb4be80a44a4d82407c382b3f234 -EBUILD valgrind-3.24.0.ebuild 5913 BLAKE2B c04dfa9e55e0d78f7084137b87e68bd40dd4e28e39dcedbe8a11fbc6c4f129e6936de58a00b1a6be40db517f7e243880e13f9eafa6618a7f93cfc44ef0c88e98 SHA512 a2f8ee9c79bc0755b652499e9e35cc70286d232d2b01ac99d05088010c16906498d41990a988cbe45195146e0358026e6a1a17a5430ec48d1317d4a46a84e291 -EBUILD valgrind-3.24.0_p1.ebuild 6023 BLAKE2B 6d6fa79198c6b08bc96009ab09c90b1e297fcf8c5d3cb3acfe82e5bdbd5b4fbe6e0fdfe439193c4ca9cd14c26a53d332f83ded9201cd7d23ca9a7b955134e7e1 SHA512 3842c5babdcd126e4fce1fa8ea68e98827ef0c2482e48342b3d194f1b34bad28f7b61480c87592bfee46540242efa8bdbd696e7431bd9a4e66d307f456c3df73 +EBUILD valgrind-3.23.0_p3.ebuild 5951 BLAKE2B 67c33c40565679604dfd289560dcc3dea52fac727f0017e9aa70a5ba86dd2d545c2c9169f5efc522c247564db6d79bf52ee469227de27ea9189a487ba7b11301 SHA512 94cdab6c5f87943887acad1072ad59eefb5acc15f9c8129c3ca732e86a42a06f658d37dd2b3ae9159886308ed5ca61f0280fceb972019d1c153bcf7306b1ae09 +EBUILD valgrind-3.24.0.ebuild 5957 BLAKE2B 4337a1a031490b09759fa09007d64d3b67b4177b9b14ad3767ad6d13fb18d9bee6a46f66daf6e4fb715bed3718498bbc4ff3cc3d977549a9db58878333b6c287 SHA512 cff446a33a7d328c76ac1b9d99de6e2f89998c2a9e143645ac54eb6b5722fcd8427cd535593c83fef5f3e65b41af0f489f09a77bb5a8dc08d1d9119d4b6e209a +EBUILD valgrind-3.24.0_p1.ebuild 6067 BLAKE2B a565f01057666db6d66d971bdf5ac0fc93b32f8e2842e0d2e5f3ff327b9f9829ef921caafbe32f20b053ade3882233efb5834c61d23ae15b371df1bd3394b28e SHA512 19438f6b401464d8256b0a387ba86ade9243e0104254ab1fa146e2d707923818ddf70445d65d9765f6a5959f875f785b133378f5f4b955f431eff3d22cbe9652 EBUILD valgrind-9999.ebuild 6072 BLAKE2B 9863c41b39cf03366821a831a260c8cea98c4ed9a9103a1895b176d6c00c48448d30088ba1debe18b17d2ce50d5e1e69f7ab4f85b659685943c58e0dd5fe3e32 SHA512 ac2597043dde0d36871d97904ef16fe1e03d473bcf5c5122d621e98dc6f9325cd686f43a573bc3fc41c4903c1b562b5fa695a1fbef80c89eaba24ffca53f19e2 MISC metadata.xml 1123 BLAKE2B 17b5501b05acd9384ab57a15018bc0d1ede50d7b5b9a5c38fcce816f68e8946010bc86233a197df89ad208957f90ab643942b7e1a3ceaa6e8d456320828b84e8 SHA512 a8c32063f3afd28c4a2d5c5c0f437c08772e822aaed4feb71f79e0f5a6cf81530d056bd8ae2ef73ac70792bd78fc095c069ef0d4304ff0a1c365f289d1191fe1 diff --git a/dev-debug/valgrind/valgrind-3.23.0_p3.ebuild b/dev-debug/valgrind/valgrind-3.23.0_p3.ebuild index 8c45bb70c6c3..428925ac1aef 100644 --- a/dev-debug/valgrind/valgrind-3.23.0_p3.ebuild +++ b/dev-debug/valgrind/valgrind-3.23.0_p3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -69,6 +69,8 @@ QA_CONFIG_IMPL_DECL_SKIP+=( # errors and reports both "function definition is not allowed here" and # -Wimplicit-function-declaration. bug #900396 foo + # FreeBSD function, bug #932822 + aio_readv ) src_unpack() { diff --git a/dev-debug/valgrind/valgrind-3.24.0.ebuild b/dev-debug/valgrind/valgrind-3.24.0.ebuild index bd5cb983fad2..829b9c011168 100644 --- a/dev-debug/valgrind/valgrind-3.24.0.ebuild +++ b/dev-debug/valgrind/valgrind-3.24.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -69,6 +69,8 @@ QA_CONFIG_IMPL_DECL_SKIP+=( # errors and reports both "function definition is not allowed here" and # -Wimplicit-function-declaration. bug #900396 foo + # FreeBSD function, bug #932822 + aio_readv ) src_unpack() { diff --git a/dev-debug/valgrind/valgrind-3.24.0_p1.ebuild b/dev-debug/valgrind/valgrind-3.24.0_p1.ebuild index f5054af8409a..727ac38ea0b4 100644 --- a/dev-debug/valgrind/valgrind-3.24.0_p1.ebuild +++ b/dev-debug/valgrind/valgrind-3.24.0_p1.ebuild @@ -71,6 +71,8 @@ QA_CONFIG_IMPL_DECL_SKIP+=( # errors and reports both "function definition is not allowed here" and # -Wimplicit-function-declaration. bug #900396 foo + # FreeBSD function, bug #932822 + aio_readv ) src_unpack() { diff --git a/dev-dotnet/Manifest.gz b/dev-dotnet/Manifest.gz index e1c8a280d142f0465fc8cefb30981e985273c9d0..83f146ca9b784c88bbc360e0bb15ff777eb71b28 100644 GIT binary patch delta 1361 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 Z0dTFAcfwPv-(mgY{{WbC6&#)@0050Z+KB)F literal 5728 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 SYg}Rd>VE(Qnisd7C;$L#X9gtz diff --git a/dev-games/libnw/Manifest b/dev-games/libnw/Manifest index c49af0cab423..69bbb4a01448 100644 --- a/dev-games/libnw/Manifest +++ b/dev-games/libnw/Manifest @@ -1,3 +1,5 @@ +AUX libnw-1.30.02-C23.patch 4578 BLAKE2B d0ac63e79d9390a1a7edd95782c16f795b1cff51b55f14984aaf2be0ddaee10810c7ebda088cd0fb6789fb5fd442eb904e37d909a49bbb6cd4b0f4c6667926d7 SHA512 e7eec59dd19278ae929b4f4aeed4f41141c848d49d5a3d63ee2bc42e78509b775d5a49ed0ae087b6aa6e171934c2f6a6a21bbf28dfc2549ce8ab9fd09a1489e5 DIST libnw-1.30.02.tar.gz 317336 BLAKE2B 0e7298b409bfa6034a28f5f27e3c4103367fd8adca58bb7510d12aa641a3bea162e82e17343adbd3a1ded94ec9834231def9e4d0ad264512923ffcc0b63625f1 SHA512 5175fe6737dc1a3ddd5e53354435ff0db56ad560f24e330f348190b2ed9e6d2418dc20497dcb64f316572c4c75b298fe12794fde73516347d70e737700f67939 -EBUILD libnw-1.30.02-r1.ebuild 856 BLAKE2B 6151f82a05d2d90a7fe99071a04a06d7f5e5949f54313e52d04c906f99f7f1be23053be290a0dd060a8d9600cbe58921e0c77c311f80e9c037f166d63714b094 SHA512 742335156f95ed9f66d24c1965b2a8f9366efd2e89be908ed27b0d6ae5f5a8539169bd724fb1288ede399a53d5b42b149b1dfaba2912e12216b93878474a14a6 +EBUILD libnw-1.30.02-r1.ebuild 855 BLAKE2B 9496ac84bebacd9c84e5eebb043688d0938f7bc62773693d5b2f55135b77678e7979fcd769ad5bc75b835be750edbf5ad27642bffd1d94a9619e34710e1c2b65 SHA512 44ec1642543b316396e0c63c9da151c5c5dbccfb2791bdff75970cbbf994eb04a25821690d47cff7b6b2e728071aa10c548ea37167b1af000d6badfd1e2a97b9 +EBUILD libnw-1.30.02-r2.ebuild 900 BLAKE2B c90068f4170f2e5cee5cfc09bfd1b94b8c544fa7038971f60d4542f2a0a0ddcc57e6a389e7574a8bf104b03ef0362097ee2d1ddc894178366f01929f9cf2d64a SHA512 f8628135b2e4aa43bd2f60e29cf8692f5729ed6cd62c380dc36294e298eba136ba3d711b6971e3874065ce0119702e25074c4f24b22f9abbaab46dcf91821016 MISC metadata.xml 1009 BLAKE2B 116dfb968daac03e57e634f9a7c1ec25a365b162cfd5ec3e02a0675fab9fdf0abc0a962dce40a46db430180a9dc19b4abe5ce6fed6b1fca1265965733ab60ee3 SHA512 35e3669d430c7d18806ad065a6fae068f46800499e9f52efa798ad435de478357d7c25bc2dd4ba56083ac9cd034f3bf730119b4384e421e90770cee65200cb96 diff --git a/dev-games/libnw/files/libnw-1.30.02-C23.patch b/dev-games/libnw/files/libnw-1.30.02-C23.patch new file mode 100644 index 000000000000..984cd10f3605 --- /dev/null +++ b/dev-games/libnw/files/libnw-1.30.02-C23.patch @@ -0,0 +1,210 @@ +https://bugs.gentoo.org/931876 +Fix incompatible pointer cast by pointing to hopefully correct struct +member. +Ordering of {.y,.c} is important so makefile doesn't try and fail to +regenerate autogenerated file we just edited. +--- a/libnw/mdly.y ++++ b/libnw/mdly.y +@@ -214,7 +214,7 @@ + dummynodeelement + : token_parent token_string = + { +- cur_Node->parent = $2; ++ cur_Node->parent->name = $2; + } + | token_position xyz = + { +@@ -247,7 +247,7 @@ + trimeshnodeelement + : token_parent token_string = + { +- cur_Node->parent = $2; ++ cur_Node->parent->name = $2; + } + | token_position xyz = + { +@@ -359,7 +359,7 @@ + aabbnodeelement + : token_parent token_string = + { +- cur_Node->parent = $2; ++ cur_Node->parent->name = $2; + } + | token_ambient rgb = + { +--- a/libnw/mdly.c ++++ b/libnw/mdly.c +@@ -1142,7 +1142,7 @@ + case 22: + #line 216 "mdly.y" + { +- cur_Node->parent = yyvsp[0].string; ++ cur_Node->parent->name = yyvsp[0].string; + } + break; + case 23: +@@ -1167,7 +1167,7 @@ + case 30: + #line 249 "mdly.y" + { +- cur_Node->parent = yyvsp[0].string; ++ cur_Node->parent->name = yyvsp[0].string; + } + break; + case 31: +@@ -1294,7 +1294,7 @@ + case 60: + #line 361 "mdly.y" + { +- cur_Node->parent = yyvsp[0].string; ++ cur_Node->parent->name = yyvsp[0].string; + } + break; + case 61: +Minimum amount of patching to make it compile with C23: +_POSIX_C_SOURCE for fileno and getopt +strings for strncasecmp +--- a/libnw/key.c ++++ b/libnw/key.c +@@ -9,6 +9,7 @@ + # endif + # include + #endif ++#include + #include "global.h" + #include "key.h" + #include "restyp.h" +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,4 +2,4 @@ + + EXTRA_DIST = README.tech TODO autogen.sh README.License-Torlack Doxyfile.in magic + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/itpdis/Makefile.am ++++ b/itpdis/Makefile.am +@@ -10,4 +10,4 @@ + + INCLUDES = -I$(top_srcdir)/include + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/libnw/Makefile.am ++++ b/libnw/Makefile.am +@@ -18,4 +18,4 @@ + EXTRA_DIST = $(man_MANS) sety.h mdly.h agg_toc_load.3.in agg_toc_del.3.in \ + agg_create.3.in bif_toc_load.3.in get_game_dir.3.in read_key.3.in + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nw2da2csv/Makefile.am ++++ b/nw2da2csv/Makefile.am +@@ -10,4 +10,4 @@ + + EXTRA_DIST = $(man_MANS) nw2da2csv.1.in + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwaggext/Makefile.am ++++ b/nwaggext/Makefile.am +@@ -10,4 +10,4 @@ + + INCLUDES = -I$(top_srcdir)/include + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwareamap/Makefile.am ++++ b/nwareamap/Makefile.am +@@ -10,4 +10,4 @@ + + INCLUDES = -I$(top_srcdir)/include + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwmrgplc/Makefile.am ++++ b/nwmrgplc/Makefile.am +@@ -10,4 +10,4 @@ + + EXTRA_DIST = $(man_MANS) nwmrgplc.1.in + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwresext/Makefile.am ++++ b/nwresext/Makefile.am +@@ -10,4 +10,4 @@ + + INCLUDES = -I$(top_srcdir)/include + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwstrref/Makefile.am ++++ b/nwstrref/Makefile.am +@@ -10,4 +10,4 @@ + + INCLUDES = -I$(top_srcdir)/include + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwtsfix/Makefile.am ++++ b/nwtsfix/Makefile.am +@@ -10,4 +10,4 @@ + + EXTRA_DIST = $(man_MANS) nwtsfix.1.in + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwtsmerge/Makefile.am ++++ b/nwtsmerge/Makefile.am +@@ -10,4 +10,4 @@ + + EXTRA_DIST = $(man_MANS) nwtsmerge.1.in + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/nwtsrefs/Makefile.am ++++ b/nwtsrefs/Makefile.am +@@ -10,4 +10,4 @@ + + EXTRA_DIST = $(man_MANS) nwtsrefs.1.in + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/plistcheck/Makefile.am ++++ b/plistcheck/Makefile.am +@@ -6,4 +6,4 @@ + + INCLUDES = -I$(top_srcdir)/include + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall -D_POSIX_C_SOURCE=200809L +--- a/itpdis/main.c ++++ b/itpdis/main.c +@@ -12,6 +12,7 @@ + # endif + # include + #endif ++#include + #include "global.h" + #include "gamedir.h" + #include "itp.h" +--- a/nwmrgplc/main.c ++++ b/nwmrgplc/main.c +@@ -12,6 +12,7 @@ + # endif + # include + #endif ++#include + #include "global.h" + #include "gamedir.h" + #include "2da.h" +--- a/nwtsrefs/main.c ++++ b/nwtsrefs/main.c +@@ -12,6 +12,7 @@ + # endif + # include + #endif ++#include + #include + #include "global.h" + #include "gamedir.h" diff --git a/dev-games/libnw/libnw-1.30.02-r1.ebuild b/dev-games/libnw/libnw-1.30.02-r1.ebuild index 70e02dd86931..138aa232ff3a 100644 --- a/dev-games/libnw/libnw-1.30.02-r1.ebuild +++ b/dev-games/libnw/libnw-1.30.02-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -23,7 +23,6 @@ DOCS=( AUTHORS ChangeLog NEWS README README.tech TODO ) src_prepare() { default eautoreconf - } src_configure() { diff --git a/dev-games/libnw/libnw-1.30.02-r2.ebuild b/dev-games/libnw/libnw-1.30.02-r2.ebuild new file mode 100644 index 000000000000..51910d3a94e7 --- /dev/null +++ b/dev-games/libnw/libnw-1.30.02-r2.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic + +DESCRIPTION="Tools and libraries for NWN file manipulation" +HOMEPAGE="https://sourceforge.net/projects/openknights/" +SRC_URI="https://downloads.sourceforge.net/openknights/${P}.tar.gz" + +LICENSE="openknights" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND="!sci-biology/newick-utils" +BDEPEND=" + app-alternatives/yacc + app-alternatives/lex" + +DOCS=( AUTHORS ChangeLog NEWS README README.tech TODO ) + +PATCHES=( "${FILESDIR}/${P}-C23.patch" ) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + # -Werror=strict-aliasing + # https://bugs.gentoo.org/855314 + # + # Sourceforge software dead since 2006, no point reporting anything. + append-flags -fno-strict-aliasing + filter-lto + + default +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die +} diff --git a/dev-java/Manifest.gz b/dev-java/Manifest.gz index 1bd756bac3940837d9e6e44f0293391a490cbbd6..0b02f09c3e0fe771e22cd59edddf6f20368472b4 100644 GIT binary patch delta 55332 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 dXO7_pYzVAE4ynw}^PG9%>C~NUfLF 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⁡PI>6Mt=D>539ZcuKurC{M48 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 diff --git a/dev-java/checker-framework-qual/Manifest b/dev-java/checker-framework-qual/Manifest index 2ec83fbe94a2..556079ccabc9 100644 --- a/dev-java/checker-framework-qual/Manifest +++ b/dev-java/checker-framework-qual/Manifest @@ -1,5 +1,3 @@ -DIST checker-framework-3.48.3.tar.gz 8345833 BLAKE2B 6c3f2c641414a7cb388ee2ed672a572ca40157e89976f472c58d1a04d74ec2e24893421757fea1bbaee9791e7fbb6d617cba1c5cdda284debd87250299820518 SHA512 a0a41e7bd70d85b8dcb23d358c0a6f10884f4e119e5ae5e1d17c283beab02ba4183f56b4a07d88e9e30bb4b25ebbd003bde2ecf399bf647d23e46869d414e2d6 DIST checker-framework-3.48.4.tar.gz 8347976 BLAKE2B 29a874f406ca20d12563950e6f7603c94e8c0672871ec8c3f05bc7f37629cc7fc26ae8743283e55cc69f4eb8c40e1e8fc123ba636d19bba3084cd9f1b36a8b0c SHA512 6495e328c041e0b5fc0fddfc4e5811171531933e7154f95eb39113d7aaa78b08a83860426406f66461614f53c024a55a9486a3dd736bc04fb9c306ab3349157f -EBUILD checker-framework-qual-3.48.3.ebuild 660 BLAKE2B 39df7c4201f3f082ce1fcf51852cb45cee043c45f2f2c7f3f480d6924139fdfa103f73feab472166549b22ccaff8a07a8e8257b037e84f32129bc07ddab43b0d SHA512 718e88c2f817f6015a329d6c46376bbb4eba5701ce1f87f5f904a984990ab43b5dd0e8c3b993184d004ee8138328917203f01dbd9e22ae0ae9486c01274e69f2 -EBUILD checker-framework-qual-3.48.4.ebuild 663 BLAKE2B a6322f138048a38d0c5a751dedfe0b8006d4a6f90d7dd8adf4a7ae9f9f2d13863e83e915560e9e9fb53a6e02422fde1b8abf202709378795cecfafd1175a3f25 SHA512 9efacb612f612dcaac2b4ad15882e3153270f06fa5e4ed5a44961f9e973b99c7e6fdca432054894fcaaece89b69c93df6afc59f4a7010d5d3ee6ed129814f190 +EBUILD checker-framework-qual-3.48.4.ebuild 660 BLAKE2B 39df7c4201f3f082ce1fcf51852cb45cee043c45f2f2c7f3f480d6924139fdfa103f73feab472166549b22ccaff8a07a8e8257b037e84f32129bc07ddab43b0d SHA512 718e88c2f817f6015a329d6c46376bbb4eba5701ce1f87f5f904a984990ab43b5dd0e8c3b993184d004ee8138328917203f01dbd9e22ae0ae9486c01274e69f2 MISC metadata.xml 651 BLAKE2B 2c53d072eaaaa7d09e5d185281efc9c897d1c8008dcbeb791c6b737614aa13f1091bda90b7fea33ff083c32dbd60dec180414af016af94850dee8b2bda8e865a SHA512 3428b96b3eac8b7416aabe2201af09c9bc4c444240ae682750573187a5ba137644aed7cfbcacb3a1162780a9eeb8544b0d6500cefc8f6e62f700271fe185a4d1 diff --git a/dev-java/checker-framework-qual/checker-framework-qual-3.48.3.ebuild b/dev-java/checker-framework-qual/checker-framework-qual-3.48.3.ebuild deleted file mode 100644 index 8e40a3b41ebf..000000000000 --- a/dev-java/checker-framework-qual/checker-framework-qual-3.48.3.ebuild +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -JAVA_PKG_IUSE="doc source" -MAVEN_ID="org.checkerframework:checker-qual:${PV}" - -inherit java-pkg-2 java-pkg-simple - -DESCRIPTION="Annotations for type-checking by the Checker Framework" -HOMEPAGE="https://checkerframework.org/" -SRC_URI="https://github.com/typetools/checker-framework/archive/checker-framework-${PV}.tar.gz" -S="${WORKDIR}/checker-framework-checker-framework-${PV}/checker-qual" - -LICENSE="MIT" -SLOT="0" -KEYWORDS="amd64 arm64 ppc64" - -DEPEND=">=virtual/jdk-11:*" # module-info -RDEPEND=">=virtual/jre-1.8:*" - -JAVA_SRC_DIR="src/main/java" diff --git a/dev-java/checker-framework-qual/checker-framework-qual-3.48.4.ebuild b/dev-java/checker-framework-qual/checker-framework-qual-3.48.4.ebuild index 435d4b3f0da2..8e40a3b41ebf 100644 --- a/dev-java/checker-framework-qual/checker-framework-qual-3.48.4.ebuild +++ b/dev-java/checker-framework-qual/checker-framework-qual-3.48.4.ebuild @@ -15,7 +15,7 @@ S="${WORKDIR}/checker-framework-checker-framework-${PV}/checker-qual" LICENSE="MIT" SLOT="0" -KEYWORDS="~amd64 ~arm64 ~ppc64" +KEYWORDS="amd64 arm64 ppc64" DEPEND=">=virtual/jdk-11:*" # module-info RDEPEND=">=virtual/jre-1.8:*" diff --git a/dev-java/jol-core/Manifest b/dev-java/jol-core/Manifest index aa669fcb1e7e..080c8994e586 100644 --- a/dev-java/jol-core/Manifest +++ b/dev-java/jol-core/Manifest @@ -1,5 +1,3 @@ -DIST jol-0.16.tar.gz 120373 BLAKE2B 06301e1802c89c76038aec2247cbb45d96cc74afa9f099500f8e5f33b919117e85744bc2b8214b6c9e765a2579a43f256eecc2ba8537e76c81aceaa8694f49dc SHA512 d9abf579d0230f2b6d0e0a33ee11c9599b4f36d945239dd8670bbd00591137c2229e5251b32dd5405fd4b08e0070af70e6b04e4ea4be0c28c4d5bc94874858de DIST jol-0.17.tar.gz 121365 BLAKE2B 3bacae2bba0f76799b0d9700201d908e1e04bad5276139b9661e969a0818e526eae1d6a0b0adf38501ef974dd18016710365f9fd578ecf4116896bb1dd44b51a SHA512 ea9424b43779a535a5463bdb11fc760f5fd5ee99ec9fb2706ddff48136739b488d9cebb690cd1d6fd30e5b4e66a2aa024bc878ffad0e56807aa499000d96b239 -EBUILD jol-core-0.16-r1.ebuild 843 BLAKE2B 3836346891a4238aaf77b65cabd4e1078b2be358e52e281a08778a00e7ff062d692ab9d5a252ccd3994832fe9f9cc4e2b4514cdeb05ef4e194e573b38ed5124f SHA512 aba3144db38a963eabe81af2a458cd66e68e67efef1788ada392f5e088d771779a29a721ebb209954dfe84a52129f20355246501845123a8201c6138fcd995f7 -EBUILD jol-core-0.17.ebuild 839 BLAKE2B 7bc3c2f66112e932525a60640e6c8ca5abe91ce34dd8749f4b500326228218e6b4035243be2dc3464b7f47bca251e08d3b00b97c9e33ffd94d89fef11873acda SHA512 57f2093be7f243d5c94f459b671d84ce59c2f416a4ae5f4a14011f59063cc6534fcc1b662a33c16dc79f264e6ac1ce7068a594ff63907f30650117a68a198430 +EBUILD jol-core-0.17.ebuild 836 BLAKE2B bb23ae2dbcb3407d22d7d93725dc7b54cad112b27d0674421011e9bb1a5e272616becf03a4d1f8eb705b5cf1ab1f701870e76211cc8fb04affbdcad038386fea SHA512 7487e6d1bd1e599838940f405b6c7e32d3d8becf4eb9e051c9dd8596f37c698630d72a03d2eb8149436073be03e4cc0564257023e064d0799503715e91757244 MISC metadata.xml 313 BLAKE2B 3925dd7555fc2d9739c092e1949399e496d7b2d40bc2219dd95a5c3bba98e398e57e64eb30414e6efe5e432582ec52b3b2926c7858da7a09ec2590f72b52948a SHA512 e7d4a307cc24ee5ff8f7d5c1c65c87bd7ff2edbc48730355f05faa50c35c7f3dcb4d4667dce909ce77d299da603503b2c30eab4e68f1293f5f4410d20bd53314 diff --git a/dev-java/jol-core/jol-core-0.16-r1.ebuild b/dev-java/jol-core/jol-core-0.16-r1.ebuild deleted file mode 100644 index eb361ed8b085..000000000000 --- a/dev-java/jol-core/jol-core-0.16-r1.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -JAVA_PKG_IUSE="doc source test" -MAVEN_ID="org.openjdk.jol:jol-core:0.16" -JAVA_TESTING_FRAMEWORKS="junit-4" - -inherit java-pkg-2 java-pkg-simple - -MY_PN="${PN%-core}" -MY_P="${MY_PN}-${PV}" - -DESCRIPTION="Java Object Layout: Core" -HOMEPAGE="https://openjdk.org/projects/code-tools/jol/" -SRC_URI="https://github.com/openjdk/jol/archive/${PV}.tar.gz -> jol-${PV}.tar.gz" - -LICENSE="GPL-2-with-classpath-exception" -SLOT="0" -KEYWORDS="amd64 arm64 ppc64" - -DEPEND=" - >=virtual/jdk-1.8:* - test? ( - dev-java/asm:9 - ) -" - -RDEPEND=" - >=virtual/jre-1.8:* -" - -S="${WORKDIR}/${MY_P}" - -JAVA_SRC_DIR="${PN}/src/main/java" -JAVA_RESOURCE_DIRS="${PN}/src/main/resources" - -JAVA_TEST_GENTOO_CLASSPATH="junit-4,asm-9" -JAVA_TEST_SRC_DIR="${PN}/src/test/java" diff --git a/dev-java/jol-core/jol-core-0.17.ebuild b/dev-java/jol-core/jol-core-0.17.ebuild index ef35447f37fe..edab5523dbe9 100644 --- a/dev-java/jol-core/jol-core-0.17.ebuild +++ b/dev-java/jol-core/jol-core-0.17.ebuild @@ -19,7 +19,7 @@ S="${WORKDIR}/${MY_P}" LICENSE="GPL-2-with-classpath-exception" SLOT="0" -KEYWORDS="~amd64 ~arm64 ~ppc64" +KEYWORDS="amd64 arm64 ppc64" DEPEND=" >=virtual/jdk-1.8:* diff --git a/dev-java/openjdk-bin/Manifest b/dev-java/openjdk-bin/Manifest index a6b0b112f796..2952060bca7c 100644 --- a/dev-java/openjdk-bin/Manifest +++ b/dev-java/openjdk-bin/Manifest @@ -1,11 +1,11 @@ AUX openjdk-bin-8.env.sh 607 BLAKE2B 447575fc213003930ba6d6bbbd7cda0d53f53b16e3679fcb13d219cccf3525c7dfda755c79826b4d3c7b238502ed5ecaf4c8514971e576c756f4fc168fd9a0d2 SHA512 4cfbe2dddc89408824621bbd2036afa2966d550e6e189a8835f78b46fe91305221d8fa46219e9c53c83c9f73d83cdb1208bc78a46b9115041511b97b70abbf1b AUX openjdk-bin.env.sh 398 BLAKE2B b83d85e2a4e0dbeb24b8c21fb442a8964e55eaf01125cd52f5c930cd67b95b7d1744362cbefe436e4f4115f0b7600860200d8f134b241b6b60ffae6b807b476b SHA512 2c2f753a05154d17a7c324e61d3e4513119050f44d2a8d0aea5c6e2542e9989a955689a97d47fc1d5c710a056f2ccc7b239e3eed3b2d516df6b2aa7450c44613 -DIST OpenJDK-jdk_aarch64_alpine-linux_hotspot_25_8-ea.tar.gz 137447871 BLAKE2B 2dc696f8cd34c128c9c840d8d509247cf4699816a3b06480b201f3641f4f6c3f8055a2390e34b1a7f9d90e169a79070222b5e5ec1e0f3c33a5777c9edce8e94d SHA512 066124758eab1a678a3913e0d326c639815515043c4c773e3dc1aee4419a5160f1979fd6e934f0af34f191719dc16ee66c8b85e0fcf60d4884693fbdb33e07bf -DIST OpenJDK-jdk_aarch64_linux_hotspot_25_8-ea.tar.gz 137489040 BLAKE2B 6ae069f594952c8090ceed5e2743f34af32cea09eda72f4e55cef11b0ea434acb191ffe8a4cf3388870faf5a01011fc3cf2f8dbc63b3972843db2702f1c3f4dc SHA512 9bc55c38601c9ecab84b9571a02ce06a298aa935af51b70e1fdf1654c606ba5c42a88b1d63e40cc113f1e1cb37293a32ff6a37cdf62908adcc3896103bb8b2d9 -DIST OpenJDK-jdk_ppc64le_linux_hotspot_25_8-ea.tar.gz 138012844 BLAKE2B a132a9155f3df282fca5baa41b3b6d852f5778584dcd7d1664decfc0bac6b4151598b173f14197c733df271e4322f7d149b290bb27247211f688fd11e4311141 SHA512 3cca397a9028afe330e8db2badb84bf85284c8e6fbdea83c258dd06d35f4c15b01bc4f88c3503d78f40f2bc440eeff81f20dfb9be7b27956ec494338132d99c5 -DIST OpenJDK-jdk_riscv64_linux_hotspot_25_8-ea.tar.gz 136333837 BLAKE2B cd6c76d7bc8aad5148acef9c8692d9e4e5fbe45dc65b4a423bde2489f81f1c0b32a567cda9d9cc120187d59f049d911f27541194b1d8b850e05a16a7cb3976d1 SHA512 b07c909746f7b08fe083c074958278ed09b32a168733e90fbc217a3416631a5608239182562cf4f62f3f64b68888f4be4af8bbab9b9b37bacca04572d3190792 -DIST OpenJDK-jdk_x64_alpine-linux_hotspot_25_8-ea.tar.gz 138562452 BLAKE2B 8452c21184a46c4226b8bf77fd0d6a9eda1761236e5f5b8633f030817da44edc65c80bfdfb1b00ba30a486ae738e09463dc7b34fa1784fd0bba68b4f513154f7 SHA512 dda08230a73bcdcd2e721b0a7675f4ebe94e0fe1f83d203c35f274a55b8ca3a7a668cac9610a32bc848d4d2589fa27c8562257593fbf66f82e9d99b19195d0fe -DIST OpenJDK-jdk_x64_linux_hotspot_25_8-ea.tar.gz 138473327 BLAKE2B 16bb374435e20b5f5c2833455c2ee1bc1eeb6cc986f1fa67a5a4312b0a6ca27f3d2518d655de6c7f5cdd7058d1208f5db1aaf773dbcdb7584b34ea7bcd4440e0 SHA512 c53f7dd8535a496ae75b98be4427cf87e0710bc464c988306998e919ac499553558cec4aa66a2f490f18deae722a7679b8b7c8af21d4ffe8d750d7d21eddfc65 +DIST OpenJDK-jdk_aarch64_alpine-linux_hotspot_25_9-ea.tar.gz 137469187 BLAKE2B 93d616a32d61d5f8ca926d5f1327fed1858233f9d74e1ed38ea594870097ce23affdd5f0ba9fff96aa9627c43063185d823257c754678b1d04cb482fc1214745 SHA512 9f38dcea0d3808a1630f104fa54caff6bf8f9af5da4c4726ae6424b9ab553c1de4e2d04558b029bf85df1ee784c78c08816b24d8496f8d7b1d629599342f7749 +DIST OpenJDK-jdk_aarch64_linux_hotspot_25_9-ea.tar.gz 137514040 BLAKE2B eac64aaeb295027f5b8e6ddc029edb132acb75267970bf234424a7ed84c408466c38fc7c643a8eea83219e474d8534fdcc9d07b9bc60e6874c79c871022dc813 SHA512 1fa014b5d952520d424c467ee3e26936298f9d2dbbf21056f662883c8f15bfa1f3208687056c7c2ae672bdc28ec53fc4175f3308984bb55f994f082f06f0101e +DIST OpenJDK-jdk_ppc64le_linux_hotspot_25_9-ea.tar.gz 138045933 BLAKE2B fb2a9089256e1cb400d7003e7f6c5ea666857dd5911e7090b6520ada24d2b45f3330b27aa3b97a22122dab1540a5f1b95234534782241c5bb015f1764d732e5b SHA512 68a5456fba8c3541aeceaf9f3c0784f4beba64d1adcc3a7a0e622645a4854edf67a0f9452b8fa3abf6eeb9cb513856df1236d3681813cd188ea25c02847f4c54 +DIST OpenJDK-jdk_riscv64_linux_hotspot_25_9-ea.tar.gz 136363184 BLAKE2B 10deb8e5cc7d26d37742409de599367c0bff53da8e5eb524901e5062d344460ff16d7fe38af3a9ee804dbe2a3127355fe555fabaddf4e1b934e5a5ecd4aa4058 SHA512 bfc7ca818d1b5caa15d2efae4e0520cb9e06ce7651ca4ec75e217bec11e10c4888c39f032e5e532b0f024002a0017eb77005ea3790d6000249d28d4b34b23825 +DIST OpenJDK-jdk_x64_alpine-linux_hotspot_25_9-ea.tar.gz 138573454 BLAKE2B ed5d4e10e64bfb41efff12c080d896df5e5d3c0bc42f82c456facb7d80b57cf298b7c24e4e835da6e5c63bd87a147c3482d104a78581466a1ddc02cebee52e4e SHA512 22cc6d23aa4a71fa0da37a84072e9810ed00ada6c3172bc0f0ffd71d6d90bf19773049eab102cffee4ac2f7cb7842c00a1ff8b8ee0cc8326c2b6cae541d99f24 +DIST OpenJDK-jdk_x64_linux_hotspot_25_9-ea.tar.gz 138484299 BLAKE2B b37ca27993673cabbda6ea4dcbdf02e59582702b04cba3dd171f3e3e973828be15a67ff6fe7e1864ce3a7744adb9219848605092f0e36d850dd2ff9582547bc7 SHA512 aeaf9828dcc34b269786bcb2bc8ee65c9c439496279ec86b73a7d43b0e7ffa4682ee16882b637c2e218b6eba3877f96e6a49f9ec87dff90acccf26c89054a8f0 DIST OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.25_9.tar.gz 192125336 BLAKE2B e083ce8691f8462310eeaa7495d26519754f5bfadc8a786dd188f1dad4dc36164eea9220125340b43c9e6b4321be6e26d66a9c18247a6462e4cae9f453fe1171 SHA512 860fff5eff6ef2a29062aac0ee7f90d80dca417fb58ccbf9a9f2ca96a8dc4798a00dab42deedbc64a371d0356b17e6cd12cdc2b2879edfcec9463ffc004ce5fb DIST OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.26_4.tar.gz 192142736 BLAKE2B ee6d2496dc6f8182d22fe7621110c783ac5506cbd88b9ee820f820eecb38348bd02990cbd20be91262d5dca5c27bd5476be8a529412f5f50efd412ce8a460629 SHA512 4afa228939aa26d131c829299bac90a863488c32f81ef61ad47ffc8ebac358399c460faca734994c4b6aed61fa68f669f45f375390dcb0698b6f7eb1db12834d DIST OpenJDK11U-jdk_arm_linux_hotspot_11.0.25_9.tar.gz 182871332 BLAKE2B ac6ba9e02fcec38dbb685cdebf379ecdcb5041bc53a71a0896baf7f2628faaa0dd1402b045a57010e2495c16e48116fd1216fe6d4b6cf35cbc996dafe8516e0a SHA512 db0761f8b0baa82c61567a869f2c23da61470d055ecbd73c7693a7be37167282af7387006f22a0c7a46e1e71591615fac0431925987af8fb8e36d77207669856 @@ -62,7 +62,7 @@ EBUILD openjdk-bin-17.0.13_p11.ebuild 3215 BLAKE2B f2ec6fe938342dbdce0a068c391d9 EBUILD openjdk-bin-17.0.14_p7.ebuild 3218 BLAKE2B 85ac361f2e6fe30043ebfddad10c9458ebaaa3c1edb3cd8a8d71bf5ec4b217634825c7a87c8ef2aa449ba120e6bf290f378ff39e5537f06ab4b2e3a69226b22f SHA512 bb709c362b30b0cf1ee6c48eb13ac4e9aaf417d540facba20b1ac945ab3f9195ab25416d9d3a490c7aae3a685eecec144a3f57f3f0a91a2fe6a6915b3926e5ca EBUILD openjdk-bin-21.0.5_p11.ebuild 3244 BLAKE2B f3662b3df32641ce5688231d68af1d65b650da771c1520e504a2479dbc585046693e1ad964a58c79d7ac9786b4c9e21b4a9d998e2610f64e776b9b50c53513cb SHA512 9be1a111ce4678f37d2cc9beb77dc3ab905ae881d686786f17503b76d5ea1e2e163a37344499c581313d6e75829c4aaac464672d8c0057422271e1303cc91200 EBUILD openjdk-bin-21.0.6_p7.ebuild 3246 BLAKE2B f3f6c66f140e21ae6b7bcb902671bb89f4a636c7e281ef2c79d368f0066dbf0b5ec58fe88a211ed8f7bb9b317f3519635757888641a29ea7a1bff00c4ba22010 SHA512 f6858d425b14afcf0de6de92faa4e557230e9db765ee6fec9b615b6640cfe4aa0b1f221ba89c8a2e1d05abccb6879205f116bde22468f983a0f73fe518f7a11b -EBUILD openjdk-bin-25_p8_beta.ebuild 3244 BLAKE2B e8d619e3cd047b15fda4f677b2d24f2e5f08488d67505a4ae4a8de0ad216c64e79807954e3a5e45408f2ca6da842a4d766735c30df5a019e6fead621ca157d42 SHA512 aa4a4b1288cbf94137b5d1a648a2fcbb25890c9bf1023aef7c86d27bde4b4dd5bb9d226678aaee5f8bc5c72a30f1d9bbeca31b357f547547689b2731cab904f9 +EBUILD openjdk-bin-25_p9_beta.ebuild 3244 BLAKE2B e8d619e3cd047b15fda4f677b2d24f2e5f08488d67505a4ae4a8de0ad216c64e79807954e3a5e45408f2ca6da842a4d766735c30df5a019e6fead621ca157d42 SHA512 aa4a4b1288cbf94137b5d1a648a2fcbb25890c9bf1023aef7c86d27bde4b4dd5bb9d226678aaee5f8bc5c72a30f1d9bbeca31b357f547547689b2731cab904f9 EBUILD openjdk-bin-8.432_p06.ebuild 2936 BLAKE2B 6a60e6aa39cb48a07345b57bb30f8184bc2297957b0b71cc819c395815203ca16978b4008eb05bb21ebb6e54ab533da877e6f6f4a62711163b0b90aa7df46d6a SHA512 6149ff525bc36f48b61ab64f988698d6fca229844f03f3099e9f4d58e47446e711bb06f76bd06910d75f0f2ef040b0e3cb5b0c11019884cd0705162792a9056d EBUILD openjdk-bin-8.442_p06.ebuild 2939 BLAKE2B b452efda73608f35dd24e0e95f17bd94e43a282128a28c8fac7511753a0dea827230851233d6a0ce1a49be16fda50bfd6b558d806469f1d430632169c053c10e SHA512 fbad2c994447a622e53e5b64bbf9237ff692f14cd7a42c467581777a34cb617ab6a9ea3722d07f7577214b5e32e5949c156d57789a888e13c57cc78455584c22 MISC metadata.xml 1059 BLAKE2B 07f5d1d3aff8e962f70522b1fd1b33d9589695e1ccec43191bc31d065f48ff0efde065ac25d96ae994b6eb15fad9a6dcf2a24cc3c2b37633df242ba8b9d5e35b SHA512 a5094da75f572407c4391fb449469c56c4f1a6b86b8e72be98db45d8cadb9f142bc11a2e0a9131cba5d4fe2c9942edcd8e43066caddf8cab8638fbaba230e7b6 diff --git a/dev-java/openjdk-bin/openjdk-bin-25_p8_beta.ebuild b/dev-java/openjdk-bin/openjdk-bin-25_p9_beta.ebuild similarity index 100% rename from dev-java/openjdk-bin/openjdk-bin-25_p8_beta.ebuild rename to dev-java/openjdk-bin/openjdk-bin-25_p9_beta.ebuild diff --git a/dev-java/openjdk/Manifest b/dev-java/openjdk/Manifest index de663e55e5c4..e18a09f340db 100644 --- a/dev-java/openjdk/Manifest +++ b/dev-java/openjdk/Manifest @@ -12,7 +12,7 @@ DIST openjdk-17.0.13_p11.tar.gz 107315661 BLAKE2B e403a8f33d4e79dd5c77a5dbfc991b DIST openjdk-17.0.14_p7.tar.gz 107408032 BLAKE2B 006be4d75d3d9ef3a40b1853dded3cced6f345ea473b7c03c89f04b1d74df7532878246bafde932b49da39c1cf66bcd7c2ee42dc9049c19efc653db8f7367971 SHA512 0643ac52b68e5884734289ab13592feef7273db96f7b5c0fd77d801e4d4e44a84abcc439fd1b138119c5583986f1d0b058aa74f55b00e0dfd31333cbb536744d DIST openjdk-21.0.5_p11.tar.gz 112679148 BLAKE2B 6cfb2ab73e1bcc5d74c28f56e163778ca42fa1b9eda5367f2198827eae04d5a269926c97b326d1e71b2a57f2780588f538db8d3a81f367903fd967534747d3af SHA512 2fdfdb7e21fcaf97590fa54317f87169d5fdabf38027f4f6570942b2af637fc9ace3d35c3bbb0df29720e7a0f6d6a4087253a713389743ed7947e433d7b8103b DIST openjdk-21.0.6_p7.tar.gz 113221815 BLAKE2B 2b3d240037baa2b306a1064f260b7ed57a4f4dafe97626bf6e1de3e54357d8a7652c1798f6946d58aba30ca0be334d9a1f918b25381ab370d515f829abea4952 SHA512 fb03362608a35b0f6e131eaa974a52e6ff8a96f90d3bdaeccd2e1268f46db65c72387ed7bba1c8b0d9457c56950eae607fba29e102a338b009259262e1024726 -DIST openjdk-25_p8.tar.gz 122660586 BLAKE2B 826b2b54510e3021fcf0ef675d97b55bb7b54f375c94b5a6833c74f4123839c5b3cf367884af697949f680b60828c527d7a1dd1e3986e8973b9ff73c0476dba7 SHA512 e78eac4f8474f751076590110e4cd9f30351d0c50add0a4d9dbde439400d810e9dadc0b3e808be39ab3107f9669d9a7b7c34f6d029dbf34fdffb157d5f1d8874 +DIST openjdk-25_p9.tar.gz 120825933 BLAKE2B a1a9fc72c487a251c44afa993d0802bac4076ee9706a7bdd404906a80aeca02ee87302e783b84b14570a89f025cd0b34eb0a7b2000555990915523893594764f SHA512 666ccdbb22b6e64925d1f08180d632474c446f04a1bfd3f4b13e473d8c883d154b085597b799b793a30fcdb2651923e4c47f06d22e74cda8a2b3e845230d4d8d DIST openjdk-8.432_p06.tar.gz 92765730 BLAKE2B 9c3823ed0394730cdbf306a92062656a793dd7b57a333319282a6aa01a8150927227d3e91ee2ee975108b8c3aa2b0b87669af2971dfc27a6400fb7c4ef22d246 SHA512 263642d56915e0533c154ab51148b0f6a9860b243dddf5bbb70f49174d07dd505393fa6e257bfa34eca6e95ecd4f271737fa48fee8db93e624e8336fe488eb83 DIST openjdk-8.442_p06.tar.gz 92775643 BLAKE2B dfcac25f30d8178b9c9d9b2f90e06b7c8cd417dc43c00954d2e9a748f979c596b1b77f989a7137e022868dfc8d12a148f9281cf9a387ff91e9d4b505d416128b SHA512 6c0fe0b7aaf5ff887c720cced4203231c7ea6490817a5cb10196dabe0f3941833ddcc8024d2fe04f3a84502b6fe08277a6ff2f84ce605f4209a3494b9f0a80b7 DIST openjdk-bootstrap-11.0.13_p8-ppc64.tar.xz 108215404 BLAKE2B 5e6c0b905b34b437137922b73a9724da96b8832186fea945f8c73d941db822ca1cc5718f3ecb4607ed98d1f8241c9f365b54caaf978863e8b84680a94f067b5d SHA512 732e2220219d42be10589fcaf2420da87ebc8564b4afc6bd02f61f31cdca9c31b339366e34d374fb814499b92f8aa796435a18f28e10c8cb00d9a0f5953bb60e @@ -32,7 +32,7 @@ EBUILD openjdk-17.0.13_p11.ebuild 9423 BLAKE2B 269c2108f9807cac55c140e9390156653 EBUILD openjdk-17.0.14_p7.ebuild 9427 BLAKE2B 0a7b15861a425a0ad87c54d7e4aeb509f8daf2cc4cdf8bb87e5d5fe14fec5df6c336bb806fe1faf77a11347a4371a1d2528eaf684a16d1d07d27caa4e14042be SHA512 2bf2a9be33a6e20103685c4c72eb9f5a990045dca0d9313841f308c4231dd5ae5451abc8ff8501fc2ebc8c5380cf1b8a746851b986327f1407e444210f805b46 EBUILD openjdk-21.0.5_p11-r1.ebuild 9559 BLAKE2B 3a6a90112daf12161d2314207a8371689a483dbd46abaecf0b02f877831e93d9eeea4e867b8da7d410283626e63555445aabb79b93813a785f459dea71b1c993 SHA512 5f0f8bfa1ae1dd504d0aff29c07d110f2501806dfafdb47f1a37da89cb824d1768801a97b8f0ac23eec974f69eb605940f00a572511b88d79696020bd40ebe5a EBUILD openjdk-21.0.6_p7.ebuild 9561 BLAKE2B e4d31e2c580b8704da3e3798f7f894ee8a9e831f2ae6b0d85e02b81a638a53b781f1986fc180f1598a53426e4f79a825b47b7355c0ea59f26c9c9b754b6b2873 SHA512 e5a4b5771297ae795ae757bae10fc2e6a2c8ad7760b224c95764e070fa23a08c852d10b00b53374e0eaf78b0e009185dc6ce814ef32f776f47351ae201cd5047 -EBUILD openjdk-25_p8.ebuild 9442 BLAKE2B 9a0e8ee1d523bfbc2243ac4625ded98b953a4e5fcba241e2d66db1397c01e093a500268d48d8a97f1c5d5c4ab838466f70bcd7ba614d39ea13a4a645716f7aec SHA512 7f3f6c90ffbfadd66879e0e35187842f7479d965036bce66205b9d01176cd97dcfaa44905a0724c4c86c0c7efd5d85ee7f2d1b19925f4ac463fe1176b3548514 +EBUILD openjdk-25_p9.ebuild 9442 BLAKE2B 9a0e8ee1d523bfbc2243ac4625ded98b953a4e5fcba241e2d66db1397c01e093a500268d48d8a97f1c5d5c4ab838466f70bcd7ba614d39ea13a4a645716f7aec SHA512 7f3f6c90ffbfadd66879e0e35187842f7479d965036bce66205b9d01176cd97dcfaa44905a0724c4c86c0c7efd5d85ee7f2d1b19925f4ac463fe1176b3548514 EBUILD openjdk-8.432_p06.ebuild 7819 BLAKE2B 46ee633ad8c8751885c948f3648e76f973266336fe15fa0016368302719770d9435c5e0db4cb59481e782e2b89adabe8b8cd0b4624749051c066de120509f8b7 SHA512 250754810305bf30ac7ce4dbc15dd1a321f4dc47cf5e49154f26b80b704218b21b6ab2f428a9857096936793460f2471df2fcd921c7fdc40838f11a2d0cce377 EBUILD openjdk-8.442_p06.ebuild 7823 BLAKE2B 2e8a74e173e84a272566676eebda1165a44f10afdb071ca00d06697d1c3868272a3c726914c09fbacde9c050523b6093f816f04b0eaf9d834a60fc95a127c173 SHA512 5b48fe8649f42019eea64920d79b586e1c541e959c6b8a918f183758011260845053141d16a0f344784d53ac400274552e27de49118d638f022efecaa8cd75c2 MISC metadata.xml 1593 BLAKE2B 89674213fcbe29a938a4f0812445a42013c467ec3c1ffae7168438abe9214125d0db15f796b34252ca4b83d5aa31ae5949730bfa60a948cac0619cee9cec7941 SHA512 8355c2dc2e23922861989171b6168799074d518c5e5c7f54c8f8b09a1b94c971d90002753fe1b2981345d3bcae5928ea049b8af71279cb6e3d573a25a7b7fb49 diff --git a/dev-java/openjdk/openjdk-25_p8.ebuild b/dev-java/openjdk/openjdk-25_p9.ebuild similarity index 100% rename from dev-java/openjdk/openjdk-25_p8.ebuild rename to dev-java/openjdk/openjdk-25_p9.ebuild diff --git a/dev-java/protobuf-java/Manifest b/dev-java/protobuf-java/Manifest index 02ba8508ab40..812528f1cdd2 100644 --- a/dev-java/protobuf-java/Manifest +++ b/dev-java/protobuf-java/Manifest @@ -4,5 +4,5 @@ DIST protobuf-29.3.tar.gz 9348951 BLAKE2B 8d37daac6f0d832e5bff5c56b9be73fce1fe01 DIST truth-1.1.3.jar 243021 BLAKE2B a59149038c62ef5dd352b13d4b393e1b7715fbafe5ed86ec2d16d722c738a31dcdca10132fc73b17b367ac4309e5407ba2e489f8d4c8fbca60ce5f35ae75d1e3 SHA512 f29a9fb070aff8a32358a7b6c8998c0095de5d8d68afa7f7bac759c7050309deff929e767657ecbbefd96163460f10255ca01bc567ab30df4834b9d916a4fae8 EBUILD protobuf-java-4.28.3.ebuild 4753 BLAKE2B 75888b86b796bba01583c86a21d5401daf8569750892ab844870ca1eeaa3c57e61850bfc92403937de948ec5e1b0be6967556cde14d83fd6447eddd1f0256cd0 SHA512 5e6b5a03122df4e0dd2e00c9fc4ca1e7045760577db50ec67e846bedaba5c58c3b191b1f8fc30d34a2ec59dc78183b9da483f36a166e87e2146c6874d6ea8429 EBUILD protobuf-java-4.29.2.ebuild 4653 BLAKE2B acf9e6a664b8ae569a247ba83424b56c4248e5612d435c46e5eb954cb72ebc6afa1edb41aa347af57802282cd874570ac611f56ebc21f1a045eafa458e6ce2fe SHA512 70bee8ca5569ee462474089a3ddd2be02d43a5dffc393b225e47cf81922fc201455537da037a269b54d24fbfc39c6ede32bcf56fc4a6369617b5b2c4f544f46f -EBUILD protobuf-java-4.29.3.ebuild 4654 BLAKE2B 081d919b2b16db71a80cdd48b0a4aac0ab6d655b4d2c059b9759d40e21f848fbb709fafb53e0a0644939e45084c6ba9c604e71bec7b7be1906a19e844002c337 SHA512 6a37a4f0050839629816b7ad1aa55b734579c738360b4156ea0bacfbb95e6e0450cc3114573a79d857a7c9e699172117373069f42951bab2550df99400fa9284 +EBUILD protobuf-java-4.29.3.ebuild 4653 BLAKE2B 8b5cd5f1a915b4e8887e970859f84415fef1944e6f25f34a52929aaa9597d3d634044e92a4904b904c833e897bde6c17f380c6cd5eee59a7fba2ea18deaa967d SHA512 eb00ca1c9f83287d98e4b23ac4c26fd78dbe0d753beca24384a21fe722168baa50a8d45059a8bce97b43f4f28124e5de1ea1d92d930219d0bc1ea58c68581536 MISC metadata.xml 534 BLAKE2B aa3ede54aa4e1479f977cecb9dace36fa5db7025a5d45d142cde5ea2ede794f721abf0ced139b24d4c2c1aac3631ee43f15b4d74850abc56c1fbafb8736adebc SHA512 11f7b1fca223910cd42be952760e32d98a553fd660e1da66542a722eb1e3296c79e702f899dc36ab0e794a19014ede3738fc0959b04a9d44910e9e0068f3feb7 diff --git a/dev-java/protobuf-java/protobuf-java-4.29.3.ebuild b/dev-java/protobuf-java/protobuf-java-4.29.3.ebuild index 11ee57d92df5..36b6867fdb3f 100644 --- a/dev-java/protobuf-java/protobuf-java-4.29.3.ebuild +++ b/dev-java/protobuf-java/protobuf-java-4.29.3.ebuild @@ -24,7 +24,7 @@ S="${WORKDIR}/protobuf-${MY_PV}" LICENSE="BSD" SLOT="0" -KEYWORDS="~amd64 ~arm64 ~ppc64 ~amd64-linux ~x86-linux ~x64-macos" +KEYWORDS="amd64 ~arm64 ~ppc64 ~amd64-linux ~x86-linux ~x64-macos" IUSE="system-protoc" BDEPEND=" diff --git a/dev-java/stax2-api/Manifest b/dev-java/stax2-api/Manifest index bf4df61d217d..51332c8fa58c 100644 --- a/dev-java/stax2-api/Manifest +++ b/dev-java/stax2-api/Manifest @@ -1,3 +1,3 @@ -DIST stax2-api-4.2.1.tar.gz 128806 BLAKE2B 64254b0bbd269e5d62931280773e0e7e7915204ce41a86eb10a08e3d8d27691d48094e17a8deb0ca3fa916b413800d75969af05db1ba897277c0dae13771e3b4 SHA512 f6fada289e75db0c4c911d3f70e8b8167c96342390168c87563ab4e3e1498360d47c393407cd8ae670716fcb7e1c83d6a8d38364d00648ed380844cf08bdc063 -EBUILD stax2-api-4.2.1-r1.ebuild 1035 BLAKE2B 1632c726f22675f92d4678a592d78ae05aa3f2db852e1dfa24b425596b61a28777cc3e9053764146c85e1cc9ec3bcd567b4d375e2f359ba5450c5f0f522101da SHA512 6539eb64968fdc2ac29365419c9c33bc4a0c1a903a3c86be600ae89b901a4ae9238e1536ea717816f45842ea6356d22728aafbeedd3d807b40ed0bc5419182a3 +DIST stax2-api-4.2.2.tar.gz 128961 BLAKE2B 4c35b3ce184a1fb01c37cc84b48fc168f58f11ee3f1f2754de6a8168e4b0ca8983b94a78ba484ac49d16e352a891bc5379d0d109420b85f1cfca06858e5124db SHA512 d8ec36b8c425dd4171a14eb71be6b4a93f2de946a00fd1838c22d3573d211c3a09161fc31f9756498f14fbc601ed43ad525e44114857ad2a6c9e3c202f1aa93a +EBUILD stax2-api-4.2.2.ebuild 675 BLAKE2B 6128bef61dd5fb107865157ffad25cfd20de59109036e7b626608cd01e4291309c586a10659038359c303781f0dc3ea06230b509d9f6ed87a18619a37a7777ab SHA512 447a2b280c1efe965a227d02bfeafb5d7a34f989c2919d844539694d56ea1d450902a9ab65bb698895e9292882cc7ee05433399639e3f51634802b0770c953f3 MISC metadata.xml 593 BLAKE2B b4ff2b905d15d168fe9d38a748b47ce6c6caf7f5dc9f6be5e0cfb5542a3b51cbcd64e52ca53a21c72b9119a5dcf4163a9bcad4253264f06bac130fa8a7cee3e3 SHA512 9c3dc208a393b34806f93a1803550d821dbddf354b3511d1960174fd31f63163b61a88e9d1eefff573e5865b2901b1b99c90ce7cc6f12d3ae0a55098b1416530 diff --git a/dev-java/stax2-api/stax2-api-4.2.1-r1.ebuild b/dev-java/stax2-api/stax2-api-4.2.1-r1.ebuild deleted file mode 100644 index 3ce227b13064..000000000000 --- a/dev-java/stax2-api/stax2-api-4.2.1-r1.ebuild +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -# Skeleton command: -# java-ebuilder --generate-ebuild --workdir . --pom pom.xml --download-uri https://github.com/FasterXML/stax2-api/archive/refs/tags/stax2-api-4.2.1.tar.gz --slot 0 --keywords "~amd64 ~arm ~arm64 ~ppc64 ~x86" --ebuild stax2-api-4.2.1.ebuild - -EAPI=8 - -JAVA_PKG_IUSE="doc source" -MAVEN_ID="org.codehaus.woodstox:stax2-api:4.2.1" - -inherit java-pkg-2 java-pkg-simple - -DESCRIPTION="stax2 API is an extension to basic Stax 1.0 API" -HOMEPAGE="https://github.com/FasterXML/stax2-api" -SRC_URI="https://github.com/FasterXML/${PN}/archive/refs/tags/${P}.tar.gz" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="amd64 arm64 ppc64" - -DEPEND=">=virtual/jdk-1.9:*" -RDEPEND=">=virtual/jre-1.8:*" - -DOCS=( README.md release-notes/VERSION ) - -S="${WORKDIR}/${PN}-${P}" - -JAVA_SRC_DIR=( "src/main/java" "src/moditect" ) -JAVA_RESOURCE_DIRS="src/main/resources" - -src_install() { - default # https://bugs.gentoo.org/789582 - java-pkg-simple_src_install -} diff --git a/dev-java/stax2-api/stax2-api-4.2.2.ebuild b/dev-java/stax2-api/stax2-api-4.2.2.ebuild new file mode 100644 index 000000000000..947ba1dda3a6 --- /dev/null +++ b/dev-java/stax2-api/stax2-api-4.2.2.ebuild @@ -0,0 +1,26 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +JAVA_PKG_IUSE="doc source" +MAVEN_ID="org.codehaus.woodstox:stax2-api:4.2.1" + +inherit java-pkg-2 java-pkg-simple + +DESCRIPTION="stax2 API is an extension to basic Stax 1.0 API" +HOMEPAGE="https://github.com/FasterXML/stax2-api" +SRC_URI="https://github.com/FasterXML/${PN}/archive/${P}.tar.gz" +S="${WORKDIR}/${PN}-${P}" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="amd64 arm64 ppc64" + +DEPEND=">=virtual/jdk-1.9:*" +RDEPEND=">=virtual/jre-1.8:*" + +DOCS=( README.md release-notes/VERSION ) + +JAVA_RESOURCE_DIRS="src/main/resources" +JAVA_SRC_DIR=( "src/main/java" "src/moditect" ) diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz index 607d39e85de67236abe77aa1fd667ca97cfec50f..9d13e9d7c4c06bc6fd975d2c6211f01cd98c6807 100644 GIT binary patch delta 22648 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