summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrucible <crucible@localhost>2026-09-22 22:22:36 -0500
committerCrucible <crucible@localhost>2026-09-22 22:22:36 -0500
commit979af70cb83395cab2f32ea1124be68ebaced6b6 (patch)
tree18b16739f860a2a652c26c5499fad05922119e31
parent954147f7add6ada356dec519e829e0a2437da5af (diff)
downloadsrcux-979af70cb83395cab2f32ea1124be68ebaced6b6.tar.gz
srcux-979af70cb83395cab2f32ea1124be68ebaced6b6.tar.xz
srcux-979af70cb83395cab2f32ea1124be68ebaced6b6.zip
Publish baldeagleos-repo candidate 0000000338-20260922-221634
-rw-r--r--app-admin/aerie/Manifest1
-rw-r--r--app-admin/aerie/aerie-0.3.1.ebuild37
-rw-r--r--app-admin/scout/scout-0.3.1.ebuild21
-rw-r--r--app-crypt/sequoia-chameleon-gnupg/files/sequoia-chameleon-gnupg-0.13.1-no-cargo-profile.patch31
-rw-r--r--app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.13.1-r4.ebuild1
-rw-r--r--app-emacs/nxml-libvirt-schemas/Manifest1
-rw-r--r--app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-12.7.0.ebuild45
-rw-r--r--app-emulation/libvirt/Manifest2
-rw-r--r--app-emulation/libvirt/libvirt-12.7.0.ebuild384
-rw-r--r--app-emulation/libvirt/libvirt-9999.ebuild6
-rw-r--r--dev-lang/swig/Manifest1
-rw-r--r--dev-lang/swig/metadata.xml1
-rw-r--r--dev-lang/swig/swig-4.5.1.ebuild117
-rw-r--r--dev-libs/expat/expat-2.8.5.ebuild2
-rw-r--r--dev-libs/libratbag/files/libratbag-0.18-swig-4.5.patch87
-rw-r--r--dev-libs/libratbag/libratbag-0.18.ebuild1
-rw-r--r--dev-perl/Sys-Virt/Manifest1
-rw-r--r--dev-perl/Sys-Virt/Sys-Virt-12.7.0.ebuild37
-rw-r--r--dev-python/gpgmepy/files/gpgmepy-2.0.0-swig-4.5.patch63
-rw-r--r--dev-python/gpgmepy/gpgmepy-2.0.0-r2.ebuild1
-rw-r--r--dev-python/libvirt-python/Manifest2
-rw-r--r--dev-python/libvirt-python/libvirt-python-12.7.0.ebuild64
-rw-r--r--dev-util/android-udev-rules/Manifest2
-rw-r--r--dev-util/android-udev-rules/android-udev-rules-20260922.ebuild (renamed from dev-util/android-udev-rules/android-udev-rules-20250525.ebuild)4
-rw-r--r--dev-util/babeltrace/babeltrace-2.1.2.ebuild4
-rw-r--r--dev-util/babeltrace/files/babeltrace-2.1.2-swig-4.5.patch59
-rw-r--r--dev-util/jenkins-bin/jenkins-bin-2.568.3.ebuild2
-rw-r--r--dev-util/maturin/maturin-1.15.0.ebuild2
-rw-r--r--net-misc/airouter/Manifest2
-rwxr-xr-xnet-misc/airouter/airouter-0.1.2-r4.ebuild115
-rwxr-xr-xnet-misc/airouter/airouter-0.1.2-r5.ebuild115
-rw-r--r--net-proxy/3proxy/3proxy-0.9.9.0.ebuild2
-rw-r--r--sys-libs/libapparmor/files/libapparmor-4.1.7-swig-4.5.patch31
-rw-r--r--sys-libs/libapparmor/libapparmor-4.1.7.ebuild4
34 files changed, 1238 insertions, 10 deletions
diff --git a/app-admin/aerie/Manifest b/app-admin/aerie/Manifest
index 44721b97306a..88e0644c6287 100644
--- a/app-admin/aerie/Manifest
+++ b/app-admin/aerie/Manifest
@@ -6,3 +6,4 @@ DIST aerie-0.1.5.tar.gz 18688 BLAKE2B 3c4dde0b27869a05b8bc81cd36667df37369c68cd5
DIST aerie-0.2.0.tar.gz 16734 BLAKE2B 6396c66f57d57466d52a8bd5b4245aea2573ea1f4c2d4f6dc569dd16036c6740cd46e6ce8abccedcfe82674a02db23f377f01aaf7dde4f56cc96853e36292b16 SHA512 d4f408a40caab48b0a3401ae35307b908049c747ee72c0acffa8ef5c1509252a4addd67d84e3a311e0687372dfed4633be7a1f118babebc97bb88348931d0cf7
DIST aerie-0.2.1.tar.gz 24103 BLAKE2B e4678a989aa1382b2ecd2ae3e444fd0ffe30eaf00beafe7f029f088aaacddf06d290f2997a7c2cc1483ecdde920c2fe61e1cba239705ca43dacb97424abd50e6 SHA512 aafc5d67234f065c702c1f7a607da46ae02585522ba5a5f30c460af52336f4cc9e11b48b5f3d8505b1af1b4583d84c4873da7fa90035440e0901487a23a6bf79
DIST aerie-0.3.0.tar.gz 29372 BLAKE2B 15c9e9f3a758561d4b530d7696947f39bc6ec55f2591cbc12f6053eddf9b48ae47291bc9aa7ac25889b758044ffb95e38b3b2926abf8de879b4aa1fc765481a8 SHA512 3b25606f1cc505f71309753e1cee58b258fe1796b9b912690533795cdcef0936e2cdb15544f6d72154f207b346fd012ace6cc4a4d9fa4a66e0845a4a73c1ba38
+DIST aerie-0.3.1.tar.gz 35235 BLAKE2B 3a0285aef3b44dcfda53ce2682c803de0a25d3dec2273c22bafd4d7000745386d2d48d8cc791acbdb7c425a3fc5a1407f05ad05791a9c66ee8e3791c65e1e7a8 SHA512 f4df54cd451017a704a49f4136f3a26eae9397dfb5f55b750f5f4da30a2480fd25d54e7577d55247c58e2b0e337de48d8fccf39159ff54e3b80b8418866f701f
diff --git a/app-admin/aerie/aerie-0.3.1.ebuild b/app-admin/aerie/aerie-0.3.1.ebuild
new file mode 100644
index 000000000000..92b0160f102a
--- /dev/null
+++ b/app-admin/aerie/aerie-0.3.1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2026 BaldEagleOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{13..14} )
+inherit python-single-r1
+
+DESCRIPTION="Scout client runtime with compatible Aerie commands"
+HOMEPAGE="https://git.baldeagleos.com/aerie"
+SRC_URI="https://distfiles.baldeagleos.com/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RDEPEND="${PYTHON_DEPS} app-portage/gentoolkit dev-vcs/git"
+BDEPEND="test? ( dev-vcs/git )"
+IUSE="test"
+RESTRICT="!test? ( test )"
+DOCS=( README.md Changelog )
+
+src_compile() {
+ :
+}
+
+src_test() {
+ PYTHONPATH=src "${EPYTHON}" -m unittest discover -s tests || die
+}
+
+src_install() {
+ python_domodule src/aerie
+ python_newscript bin/aerie aerie
+ python_newscript bin/scout scout
+
+ einstalldocs
+ insinto /etc/aerie
+ doins etc/aerie.yml etc/baldeagleos.conf.example etc/parent.example
+}
diff --git a/app-admin/scout/scout-0.3.1.ebuild b/app-admin/scout/scout-0.3.1.ebuild
new file mode 100644
index 000000000000..608fa29a7bfa
--- /dev/null
+++ b/app-admin/scout/scout-0.3.1.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2026 BaldEagleOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+DESCRIPTION="Personal Portage repositories and installed-system profile management"
+HOMEPAGE="https://git.baldeagleos.com/aerie"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+S="${WORKDIR}"
+RDEPEND="~app-admin/aerie-${PV}"
+
+src_install() {
+ :
+}
+
+pkg_postinst() {
+ elog "Run scout to view your main repository or start first-time setup."
+ elog "Use scout init URL for setup without prompts; scout help lists commands."
+ elog "Existing Aerie configuration remains usable; reinitialization is unnecessary."
+}
diff --git a/app-crypt/sequoia-chameleon-gnupg/files/sequoia-chameleon-gnupg-0.13.1-no-cargo-profile.patch b/app-crypt/sequoia-chameleon-gnupg/files/sequoia-chameleon-gnupg-0.13.1-no-cargo-profile.patch
new file mode 100644
index 000000000000..dc05c0ea34c3
--- /dev/null
+++ b/app-crypt/sequoia-chameleon-gnupg/files/sequoia-chameleon-gnupg-0.13.1-no-cargo-profile.patch
@@ -0,0 +1,31 @@
+From fcbeaf85fe7e73cc850f6b538c669753c3fb0f89 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz@gentoo.org>
+Date: Fri, 18 Sep 2026 00:46:17 -0400
+Subject: [PATCH] remove terrible horrible no-good very bad profile
+
+Overriding the profile means make.conf is not respected, and also blows
+up.
+
+---
+ Cargo.toml | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index 37121ae..d8a2f74 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -88,11 +88,6 @@ name = "gpg-recorder"
+ path = "src/gpg-recorder.rs"
+ required-features = ["the-recorder-steals-secrets-and-i-wont-package-it-in-slash-bin"]
+
+-[profile.release]
+-codegen-units = 1
+-debug = true
+-lto = true
+-
+ [features]
+ default = ["crypto-nettle"]
+ crypto-nettle = ["sequoia-openpgp/crypto-nettle"]
+--
+2.55.0
+
diff --git a/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.13.1-r4.ebuild b/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.13.1-r4.ebuild
index 41edd54e6b0f..e3d079a6c846 100644
--- a/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.13.1-r4.ebuild
+++ b/app-crypt/sequoia-chameleon-gnupg/sequoia-chameleon-gnupg-0.13.1-r4.ebuild
@@ -62,6 +62,7 @@ QA_FLAGS_IGNORED="usr/bin/gpg-sq usr/bin/gpgv-sq"
PATCHES=(
"${FILESDIR}"/${P}-tests.patch
+ "${FILESDIR}"/${P}-no-cargo-profile.patch
)
pkg_setup() {
diff --git a/app-emacs/nxml-libvirt-schemas/Manifest b/app-emacs/nxml-libvirt-schemas/Manifest
index c16001b2f54c..cd8ff6e68d28 100644
--- a/app-emacs/nxml-libvirt-schemas/Manifest
+++ b/app-emacs/nxml-libvirt-schemas/Manifest
@@ -3,3 +3,4 @@ DIST libvirt-12.0.0.tar.xz 10272864 BLAKE2B 63424ba5b341e5091ac7956797c9f1d5b746
DIST libvirt-12.1.0.tar.xz 10450056 BLAKE2B 3093d73049bf1cf6ba2f49eeecc9251f4c0c3338c4124970b821c47bdacb7388fdb0b0d01ef40bde28289a6a506e54d93c6ebdc042df9ef89a2f916bdf43c0ca SHA512 5969f50cb3709a8511add41da9a6d9c19d41c6394ec6f7048668deb6b31303fc5740252f3df49124be9149db50da6109d3b9ccc76a78ddaea3bb311358004b2d
DIST libvirt-12.2.0.tar.xz 10481320 BLAKE2B 51cd252921f5b50ec7372a4c9a07c44afd8f120fc77e67f36148b62b765a90baa45f2ef179ac16b82903a3e39bcc3fc1f4d2ba8e1d87ba60e9d20eaab3eca8ae SHA512 ce3f877da86eeceebcc7a4f857a1be97fe18883ff0e2ae1bac774dd034105762be521b70905a048c5335163ba2a829a4385521df44541190149be0c5b5b645e0
DIST libvirt-12.6.0.tar.xz 10672044 BLAKE2B 1832637799797bb2d20c6ecdedbaba950398dfcc68e11b982902cebc90e570ed77d175fb8ee66078b0ed7eddc5343556640ba73fd920ea4f883bddf9a6cc5630 SHA512 3cb1b17a16b476d97a774652f5f9eb4e2715705b32b508985fec2f0b8253c3fcbe8cb07cbddb4fb2c4b555ada033a9287aba2bb85e6caade362e9565bd3cfe00
+DIST libvirt-12.7.0.tar.xz 10709104 BLAKE2B 0a5ca87c13f6ec6b7191bb8c2995bfdbadf108c56426e59c100a0811058c52c1cfda3f2ff479e8aabbbbcd5032fcdddd6adec55fb31d56eb570605f754a82518 SHA512 1458a56fac9f9b6a4b198c9dab4cc6388c8a50e625ad6a6f6ebb2852c21a75249c2acaa0a8c712ebba3a05dff654732883e8f197fea2c684ce2be7251153a018
diff --git a/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-12.7.0.ebuild b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-12.7.0.ebuild
new file mode 100644
index 000000000000..bcc5bf824635
--- /dev/null
+++ b/app-emacs/nxml-libvirt-schemas/nxml-libvirt-schemas-12.7.0.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+# 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 ~arm64 ~ppc64"
+
+# 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-emulation/libvirt/Manifest b/app-emulation/libvirt/Manifest
index a7a0b0f8d1ed..db0b19be06b0 100644
--- a/app-emulation/libvirt/Manifest
+++ b/app-emulation/libvirt/Manifest
@@ -8,3 +8,5 @@ DIST libvirt-12.2.0.tar.xz 10481320 BLAKE2B 51cd252921f5b50ec7372a4c9a07c44afd8f
DIST libvirt-12.2.0.tar.xz.asc 833 BLAKE2B de1bfb33a6df9af96a0219ae232a8659d44b0904fc06e74fcc548b45f2b84b0064ea9ba4e55a0d1d046fe67f385e561b44be39cb3786b21521cd115b09eb36fd SHA512 465a03fedf0e65add382aff4242f6c1c887d5d8863911b009fbd9bc1a91ccbfc81ef4ba88d76fa87e30d68d3b2f7bb5850bb6377e021e6f3317423dea9abc720
DIST libvirt-12.6.0.tar.xz 10672044 BLAKE2B 1832637799797bb2d20c6ecdedbaba950398dfcc68e11b982902cebc90e570ed77d175fb8ee66078b0ed7eddc5343556640ba73fd920ea4f883bddf9a6cc5630 SHA512 3cb1b17a16b476d97a774652f5f9eb4e2715705b32b508985fec2f0b8253c3fcbe8cb07cbddb4fb2c4b555ada033a9287aba2bb85e6caade362e9565bd3cfe00
DIST libvirt-12.6.0.tar.xz.asc 833 BLAKE2B 58324fb7971973f77993d45e051c5deb04fae7ec0697862c7ac64b13b7613f8c66d1182f9a18f3710b20cf24d540333038bbe5a27ae951b91747a6a3ce827bd8 SHA512 9259184929f06a5792ac0c4fd206fb2315459a8e2333010e7d3e8f2bd34648a3ac160c16ac990cbe289e507c2f2a59c125cc05fc6d9f918fbd91ac2c55b86b4a
+DIST libvirt-12.7.0.tar.xz 10709104 BLAKE2B 0a5ca87c13f6ec6b7191bb8c2995bfdbadf108c56426e59c100a0811058c52c1cfda3f2ff479e8aabbbbcd5032fcdddd6adec55fb31d56eb570605f754a82518 SHA512 1458a56fac9f9b6a4b198c9dab4cc6388c8a50e625ad6a6f6ebb2852c21a75249c2acaa0a8c712ebba3a05dff654732883e8f197fea2c684ce2be7251153a018
+DIST libvirt-12.7.0.tar.xz.asc 833 BLAKE2B 69a7ec5f5d670b278427f68fcfde4c88fd7c72d541d3d65a111f6821ea49ad5d6682593ef17f464e90b041de723f188aa56f2fc49206f29d199f21c979d73fd5 SHA512 ccb202168875eab31c7cf83479398ebe0ec0a47e1891076ab7e04e43ce0df88cb95dca736edef5493e1d0dd318477de3bfb930d57aa129851b423b25d3f8640d
diff --git a/app-emulation/libvirt/libvirt-12.7.0.ebuild b/app-emulation/libvirt/libvirt-12.7.0.ebuild
new file mode 100644
index 000000000000..01d96c8c22a8
--- /dev/null
+++ b/app-emulation/libvirt/libvirt-12.7.0.ebuild
@@ -0,0 +1,384 @@
+# Copyright 1999-2026 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_{13..14} )
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.asc
+inherit meson flag-o-matic linux-info python-any-r1 readme.gentoo-r1
+inherit 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
+ 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 qemu virtualbox xen ) )
+ lxc? ( caps 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-20260831 )"
+
+# 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.66.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-7.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? ( <app-emulation/virtualbox-7.1.0 )
+ wireshark-plugins? ( >=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}-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch
+ "${FILESDIR}"/${PN}-12.6.0-fix-paths-for-apparmor.patch
+ "${FILESDIR}"/${PN}-12.2.0-do-not-use-sysconfig.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"
+
+ use virt-network && CONFIG_CHECK+="
+ ~BRIDGE_EBT_MARK_T
+ ~BRIDGE_NF_EBTABLES
+ ~NETFILTER_ADVANCED
+ ~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
+ ~IP6_NF_FILTER
+ ~IP6_NF_MANGLE
+ ~IP6_NF_NAT"
+
+ # 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() {
+ # Breaks with always_inline
+ filter-flags -fno-semantic-interposition
+
+ 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 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)
+
+ -Ddriver_openvz=disabled
+ -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 446f93512360..01d96c8c22a8 100644
--- a/app-emulation/libvirt/libvirt-9999.ebuild
+++ b/app-emulation/libvirt/libvirt-9999.ebuild
@@ -11,7 +11,7 @@ EAPI=8
# Please bump them together!
PYTHON_COMPAT=( python3_{13..14} )
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.org.asc
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.asc
inherit meson flag-o-matic linux-info python-any-r1 readme.gentoo-r1
inherit tmpfiles verify-sig
@@ -109,7 +109,7 @@ RDEPEND="
>=sys-auth/polkit-0.9
)
qemu? (
- >=app-emulation/qemu-4.2
+ >=app-emulation/qemu-7.2
app-crypt/swtpm
dev-libs/json-c:=
)
@@ -157,7 +157,7 @@ PDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-11.0.0-Fix-paths-in-libvirt-guests.sh.in.patch
- "${FILESDIR}"/${PN}-11.3.0-fix-paths-for-apparmor.patch
+ "${FILESDIR}"/${PN}-12.6.0-fix-paths-for-apparmor.patch
"${FILESDIR}"/${PN}-12.2.0-do-not-use-sysconfig.patch
)
diff --git a/dev-lang/swig/Manifest b/dev-lang/swig/Manifest
index 49b8925910f7..2f152fc3060b 100644
--- a/dev-lang/swig/Manifest
+++ b/dev-lang/swig/Manifest
@@ -2,3 +2,4 @@ DIST swig-4.1.1.tar.gz 8600805 BLAKE2B 898d3405f20c3e49626fb808b568e77c69b81ec24
DIST swig-4.2.1.tar.gz 8364050 BLAKE2B 0acffd4794d09f2347d669d1460a794c03f136ab3ddc6623741e182ff52b6bf5f639c736e38540918ebb1abbe36c2ce1957aef8a429f1a716d9c5361175569bf SHA512 019dee5a46d57e1030eef47cd5d007ccaadbdcd4e53cd30d7c795f0118ecf4406a78185534502c81c5f6d7bac0713256e7e19b20b5a2d14e2c552219edbaf5cf
DIST swig-4.3.1.tar.gz 8620774 BLAKE2B cd47eb3f9bf7c7e2f1583a58c4416275720b55754abd05c61636e68ac36e6b5899b293e55cf680071257017b53b95e7a2fd8983ca4effc7e98bb7af4dac5e026 SHA512 8958f7bc3345549a9bc4e00aa8d40a99f6c4bb92b95d627c8796cf8f8d1ba0041a89cab542f171778c2b26aa2a877767181ae9bd2c05fd055f373a32a463399c
DIST swig-4.4.1.tar.gz 8658358 BLAKE2B 06fdcda2de0b0acf341949e0d60e284b5cd326a1f0f1d0985e387c936ef8d87fb98ea14a260ca22c19634f297f7331ed44989da07a47ee9333630397846e4db1 SHA512 103ddb4a5914f28e6739a006d35042c701e55ba05066acff3f3609befb5f43f253ea717fc41d06c93d8fb187ded4399c12c94665b93dc06d0fb835069391c7c7
+DIST swig-4.5.1.tar.gz 9191718 BLAKE2B 371086611526fc7ac437d09c6f12c4077c31b4d3b7d89facfc67363114a42202c5a715e61822b64015c1fa2e1f8c3222566dfe1482ba927a71fbfc2c4439643b SHA512 bf89652ddcfac38e42a52224ff79c5717e973779d174b822a03ad48866303779cadf9d5181bbceed4d5dd4a0ff5ed5dea4a0c7cf10c5bc4a59310cdba64f47dd
diff --git a/dev-lang/swig/metadata.xml b/dev-lang/swig/metadata.xml
index 807591e47fc1..e3d777ea6d70 100644
--- a/dev-lang/swig/metadata.xml
+++ b/dev-lang/swig/metadata.xml
@@ -16,6 +16,7 @@
</longdescription>
<use>
<flag name="ccache">build ccache-swig(a fast compiler cache)</flag>
+ <flag name="test-full">Test against more languages</flag>
</use>
<origin>baldeagleos-repo</origin>
</pkgmetadata>
diff --git a/dev-lang/swig/swig-4.5.1.ebuild b/dev-lang/swig/swig-4.5.1.ebuild
new file mode 100644
index 000000000000..a7860d76fd72
--- /dev/null
+++ b/dev-lang/swig/swig-4.5.1.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic python-any-r1 toolchain-funcs
+
+DESCRIPTION="Simplified Wrapper and Interface Generator"
+HOMEPAGE="https://www.swig.org/ https://github.com/swig/swig"
+SRC_URI="https://downloads.sourceforge.net/project/swig/swig/${P}/${P}.tar.gz"
+
+LICENSE="GPL-3+ BSD BSD-2"
+SLOT="0"
+# Temporarily unkeyworded due to breakage in reverse dependencies, bug #983043
+#KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="ccache doc pcre test test-full"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ pcre? ( dev-libs/libpcre2:= )
+ ccache? ( virtual/zlib:= )
+"
+DEPEND="
+ ${RDEPEND}
+ test? ( dev-libs/boost )
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ ${PYTHON_DEPS}
+ test-full? (
+ dev-lang/mono
+ >=dev-lang/go-1.20
+ virtual/jdk
+ >=dev-lang/lua-5.1:*
+ dev-lang/ocaml
+ dev-lang/perl:*
+ || (
+ dev-lang/php:8.3
+ dev-lang/php:8.2
+ )
+ dev-lang/R
+ dev-lang/tcl
+ )
+ )
+"
+
+DOCS=( ANNOUNCE CHANGES CHANGES.current README TODO )
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_configure() {
+ # strict aliasing violations in test code
+ filter-lto
+ append-flags -fno-strict-aliasing
+
+ local myconf=(
+ PKGCONFIG="$(tc-getPKG_CONFIG)"
+ --without-maximum-compile-warnings
+ $(use_enable ccache)
+ $(use_with pcre)
+ --without-clang-format
+
+ # tests are automagic for many languages otherwise and may be quite brittle
+ --without-alllang
+ --with-python # installed by default due to portage, significant portion of revdeps use swig for python bindings
+ )
+ if use test-full; then
+ myconf+=(
+ --with-csharp
+ #--with-d # doesn't accept gcc[d]?
+ --with-go
+ #--with-guile would need guile-any type support
+ --with-java
+ #--with-javascript # broken build
+ --with-lua
+ --with-ocaml
+ #--with-octave # broken build
+ --with-perl
+ --with-perl5="${EPREFIX}/usr/bin/perl"
+ --with-php
+ --with-r
+ #--with-ruby # broken build
+ #--with-scilab # not packaged?
+ --with-tcl
+ )
+ fi
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ # Override these variables per Makefile.in to get verbose logs
+ emake FLAGS="-k" RUNPIPE=""
+}
+
+src_test() {
+ # The tests won't get run w/o an explicit call, broken Makefiles?
+ # *-sections for bug #935318
+ emake check \
+ FLAGS="-k" \
+ RUNPIPE="" \
+ CFLAGS="${CFLAGS} -ffunction-sections -fdata-sections" \
+ CXXFLAGS="${CXXFLAGS} -ffunction-sections -fdata-sections" \
+ LDFLAGS="${LDFLAGS}"
+}
+
+src_install() {
+ default
+
+ if use doc; then
+ docinto html
+ dodoc -r Doc/{Devel,Manual}
+ fi
+}
diff --git a/dev-libs/expat/expat-2.8.5.ebuild b/dev-libs/expat/expat-2.8.5.ebuild
index 527ab9bf0f69..3526fc8e1260 100644
--- a/dev-libs/expat/expat-2.8.5.ebuild
+++ b/dev-libs/expat/expat-2.8.5.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://github.com/libexpat/libexpat/releases/download/R_${PV//\./_}/ex
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="examples static-libs test unicode"
RESTRICT="!test? ( test )"
BDEPEND="unicode? ( ${AUTOTOOLS_DEPEND} )"
diff --git a/dev-libs/libratbag/files/libratbag-0.18-swig-4.5.patch b/dev-libs/libratbag/files/libratbag-0.18-swig-4.5.patch
new file mode 100644
index 000000000000..1a19a1cd57f3
--- /dev/null
+++ b/dev-libs/libratbag/files/libratbag-0.18-swig-4.5.patch
@@ -0,0 +1,87 @@
+https://bugs.gentoo.org/983043
+https://github.com/libratbag/libratbag/pull/1878
+https://github.com/libratbag/libratbag/commit/1f4efda9553a5efbbd5be49def22f993ef1410ca
+
+From 1f4efda9553a5efbbd5be49def22f993ef1410ca Mon Sep 17 00:00:00 2001
+From: Ayoze Torres <53948812+ayozetr@users.noreply.github.com>
+Date: Wed, 12 Aug 2026 19:07:56 +0100
+Subject: [PATCH] swig: use the Python 3 C API instead of the removed PyInt_*
+ aliases (#1878)
+
+src/libratbag.i calls PyInt_Check(), PyInt_AsLong() and PyInt_FromLong().
+Those are Python 2 functions; they only ever worked because SWIG emitted
+compatibility macros mapping them onto their PyLong_* counterparts in the
+generated wrapper. SWIG 4.5.0 dropped those macros, so the generated
+libratbag.c no longer compiles:
+
+ libratbag.c: In function '_wrap_ratbag_device_get_vendor_id':
+ libratbag.c:4583:17: error: implicit declaration of function
+ 'PyInt_FromLong'; did you mean 'PyLong_FromLong'?
+ libratbag.c:4583:15: error: assignment to 'PyObject *' from 'int' makes
+ pointer from integer without a cast [-Wint-conversion]
+
+Call the PyLong_* functions directly. The bindings are generated with
+swig -py3, so there is no Python 2 build to keep working, and the macros
+they replace expanded to exactly these functions.
+
+Built and verified on Arch Linux with swig 4.5.0, Python 3.14, meson 1.12.0, gcc 15: `_libratbag.so` and `_hidpp.so` link cleanly with the change and fail without it.
+
+Co-authored-by: Jitka Plesnikova <jplesnik@redhat.com>
+Signed-off-by: Stephen Kitt <skitt@debian.org>
+--- a/src/libratbag.i
++++ b/src/libratbag.i
+@@ -21,12 +21,12 @@
+ $1 = (unsigned int *) malloc(($2 + 1) * sizeof(unsigned int));
+ for (i = 0; i < $2; i++) {
+ PyObject *s = PyList_GetItem($input, i);
+- if (!PyInt_Check(s)) {
++ if (!PyLong_Check(s)) {
+ free($1);
+ PyErr_SetString(PyExc_ValueError, "List items must be integers");
+ return NULL;
+ }
+- $1[i] = PyInt_AsLong(s);
++ $1[i] = PyLong_AsLong(s);
+ }
+ $1[i] = 0;
+ }
+@@ -34,7 +34,7 @@
+ %typemap(argout) (unsigned int *resolutions, size_t nres) {
+ unsigned int i;
+ for (i = 0; i < $2; i++) {
+- PyList_SetItem($input, i, PyInt_FromLong($1[i]));
++ PyList_SetItem($input, i, PyLong_FromLong($1[i]));
+ }
+ }
+
+@@ -61,24 +61,24 @@
+
+ /* uintXX_t mapping: Python -> C */
+ %typemap(in) uint8_t {
+- $1 = (uint8_t) PyInt_AsLong($input);
++ $1 = (uint8_t) PyLong_AsLong($input);
+ }
+ %typemap(in) uint16_t {
+- $1 = (uint16_t) PyInt_AsLong($input);
++ $1 = (uint16_t) PyLong_AsLong($input);
+ }
+ %typemap(in) uint32_t {
+- $1 = (uint32_t) PyInt_AsLong($input);
++ $1 = (uint32_t) PyLong_AsLong($input);
+ }
+
+ /* uintXX_t mapping: C -> Python */
+ %typemap(out) uint8_t {
+- $result = PyInt_FromLong((long) $1);
++ $result = PyLong_FromLong((long) $1);
+ }
+ %typemap(out) uint16_t {
+- $result = PyInt_FromLong((long) $1);
++ $result = PyLong_FromLong((long) $1);
+ }
+ %typemap(out) uint32_t {
+- $result = PyInt_FromLong((long) $1);
++ $result = PyLong_FromLong((long) $1);
+ }
+
+ /* Parse the header file to generate wrappers */
diff --git a/dev-libs/libratbag/libratbag-0.18.ebuild b/dev-libs/libratbag/libratbag-0.18.ebuild
index 95061afdda37..60ceae257e0c 100644
--- a/dev-libs/libratbag/libratbag-0.18.ebuild
+++ b/dev-libs/libratbag/libratbag-0.18.ebuild
@@ -71,6 +71,7 @@ CONFIG_CHECK="~HIDRAW"
PATCHES=(
"${FILESDIR}"/${PN}-0.17-basename.patch
+ "${FILESDIR}"/${PN}-0.18-swig-4.5.patch
)
pkg_setup() {
diff --git a/dev-perl/Sys-Virt/Manifest b/dev-perl/Sys-Virt/Manifest
index 6cfd01a9e780..b517233359d2 100644
--- a/dev-perl/Sys-Virt/Manifest
+++ b/dev-perl/Sys-Virt/Manifest
@@ -7,3 +7,4 @@ DIST Sys-Virt-v12.0.0.tar.gz 180276 BLAKE2B a4b116acbd3f5e731c4e0829e5d765d1ba4f
DIST Sys-Virt-v12.1.0.tar.gz 180642 BLAKE2B e68e8e5ac9bb12e9e1bc365c0a905bcc995c8f2cfb28c56c57e2d2d2ecd77202f4bb308006dc463218e30eb08b7648c25054a73d4f3b2a7e5f69146f08122e4f SHA512 3f549e2cae0dff3935465f51038fdbc4243c9ad76c9dc6f887d87a5508a8c86673e100aede6152a5db655a8cee85f6ede926dcdb42116b10b6cb308483b68748
DIST Sys-Virt-v12.2.0.tar.gz 180927 BLAKE2B cb57e3c2dbb70628eb9c21643e786f813b79d339bb628e630ccd7bac79e0d081ed04fcaa27e193fada7299077cbf41e34dba70601b49ebff959cfeddb24b0a69 SHA512 b39863a7484bb8059e36a891e952e8372e76a36f28a8de287cf4acb72b67dc0b5c7a1297c6c8a2cb63d8f5946c302f1c588c55d09750790abee7d20ba4da8c3f
DIST Sys-Virt-v12.6.0.tar.gz 183374 BLAKE2B ef710dd2dcb728bd5893ee461e700793234bddb922202de90dbdffd3d6ef9ddf20f3c0c7ac41da0a10fc46b921c8507be4ad55f11deaee4949c7a0db58dd1bbe SHA512 0ad03f4a8c58b55e77763af8ffef4e1b34ddcd70bc6769c4bd46604b7ca57a2714c1b3b992228fe3e019444ffa02a05b7d76e981b7ee42ae861f68cc3fa2027f
+DIST Sys-Virt-v12.7.0.tar.gz 184197 BLAKE2B 5b7f24ea90fac31d72c9f67846e095c77b112966a1196b618914ea642514acd551dd3be05348d8c7ffd6d10220604fdb46fc573659feea045854c268d02c9aab SHA512 647a3d129778e04d26e3f0015b7e4fecd9057ca970ab69bca73893131d0e3889e47c29f6bdfe548c0b88a61d7b0f0599d7b8c6cf4930acedef50b44897fb09e8
diff --git a/dev-perl/Sys-Virt/Sys-Virt-12.7.0.ebuild b/dev-perl/Sys-Virt/Sys-Virt-12.7.0.ebuild
new file mode 100644
index 000000000000..e823cacf90cd
--- /dev/null
+++ b/dev-perl/Sys-Virt/Sys-Virt-12.7.0.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2026 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}
+ dev-perl/Module-Build
+ test? (
+ dev-perl/CPAN-Changes
+ dev-perl/Test-More-UTF8
+ dev-perl/Test-Pod
+ dev-perl/Test-Pod-Coverage
+ dev-perl/XML-XPath
+ )"
+DEPEND="
+ >=app-emulation/libvirt-${PV}
+"
diff --git a/dev-python/gpgmepy/files/gpgmepy-2.0.0-swig-4.5.patch b/dev-python/gpgmepy/files/gpgmepy-2.0.0-swig-4.5.patch
new file mode 100644
index 000000000000..4ab94bebc3e8
--- /dev/null
+++ b/dev-python/gpgmepy/files/gpgmepy-2.0.0-swig-4.5.patch
@@ -0,0 +1,63 @@
+https://bugs.gentoo.org/983043
+https://lists.gnupg.org/pipermail/gnupg-devel/2026-August/036421.html
+
+As of 2026/09/21 this or an equivalent hasn't been merged upstream.
+
+Description: Build with swig 4.5.0
+ Without this patch, the package FTBFS with swig 4.5.0. This is due to
+ the removal of the Python 2 compatibility macros in version 4.5.0.
+ According to the SWIG authors, these macros were retained in the
+ generated code (pyhead.swg) solely for user typemaps. All typemap
+ using these macros are updated to call the Python 3 C API
+ directly.
+Author: Rafael Laboissière <rafael@debian.org>
+Bug-Debian: https://bugs.debian.org/1145351
+Forwarded: no
+Last-Update: 2026-08-25
+
+--- gpgmepy-2.0.0.orig/gpgme.i
++++ gpgmepy-2.0.0/gpgme.i
+@@ -94,8 +94,8 @@
+ }
+ $1[i] = PyBytes_AsString(pyVector[i]);
+ }
+- else if (PyString_Check(o))
+- $1[i] = PyString_AsString(o);
++ else if (PyBytes_Check(o))
++ $1[i] = PyBytes_AsString(o);
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "arg %d: list must contain only str or bytes, got %s "
+@@ -316,8 +316,8 @@
+ if (PyLong_Check($input))
+ $1 = PyLong_AsLong($input);
+ #if PY_MAJOR_VERSION < 3
+- else if (PyInt_Check($input))
+- $1 = PyInt_AsLong($input);
++ else if (PyLong_Check($input))
++ $1 = PyLong_AsLong($input);
+ #endif
+ else {
+ PyErr_SetString(PyExc_TypeError, "Numeric argument expected");
+@@ -341,8 +341,8 @@
+ $1 = PyLong_AsLong($input);
+ #endif
+ #if PY_MAJOR_VERSION < 3
+- else if (PyInt_Check($input))
+- $1 = PyInt_AsLong($input);
++ else if (PyLong_Check($input))
++ $1 = PyLong_AsLong($input);
+ #endif
+ else {
+ PyErr_SetString(PyExc_TypeError, "Numeric argument expected");
+@@ -357,8 +357,8 @@
+ if (PyLong_Check($input))
+ tmp$argnum = PyLong_AsLong($input);
+ #if PY_MAJOR_VERSION < 3
+- else if (PyInt_Check($input))
+- tmp$argnum = PyInt_AsLong($input);
++ else if (PyLong_Check($input))
++ tmp$argnum = PyLong_AsLong($input);
+ #endif
+ else
+ {
diff --git a/dev-python/gpgmepy/gpgmepy-2.0.0-r2.ebuild b/dev-python/gpgmepy/gpgmepy-2.0.0-r2.ebuild
index bf0cea406949..70cdd27b1496 100644
--- a/dev-python/gpgmepy/gpgmepy-2.0.0-r2.ebuild
+++ b/dev-python/gpgmepy/gpgmepy-2.0.0-r2.ebuild
@@ -36,6 +36,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-2.0.0_pre20250603-python.patch
# https://github.com/gpg/gpgmepy/commit/a4b0c9f6e285c0a56b758f73cc4ee38c0b3e5c46
"${FILESDIR}"/${P}-test-fix.patch
+ "${FILESDIR}"/${PN}-2.0.0-swig-4.5.patch
)
src_prepare() {
diff --git a/dev-python/libvirt-python/Manifest b/dev-python/libvirt-python/Manifest
index ce0ec5d02d4d..8f0b4794da6a 100644
--- a/dev-python/libvirt-python/Manifest
+++ b/dev-python/libvirt-python/Manifest
@@ -8,3 +8,5 @@ DIST libvirt_python-12.2.0.tar.gz 244689 BLAKE2B b8591860f6cefd160535f70b17afdf1
DIST libvirt_python-12.2.0.tar.gz.asc 833 BLAKE2B 2a6365eab211414f15b55f4769fa3f7789522700266be4fc8fe852ba02c701a9f58c2b72cd3210447572c6c0e526b71405f4a19c2e5cd0f71e66445c32647776 SHA512 73edd0a887e1f5bc91f8d27c0e800d750a6005e01c726f9ff72b667a7bc6527607d98a18a5b66194d4bd35fc5b06481c34f6003c5c2c7cb882c6a9bd11765d4a
DIST libvirt_python-12.6.0.tar.gz 252693 BLAKE2B 17d0760d5f56b17ec6bd738e6a4f25d57ce411edb4db2fe3f5e0ff2fae670583973d8ab6b0eb1fe7acbcb2d781e6a628ded62e08ea2ff85695204ce144f3058c SHA512 e43a3ee2c46fdcb82c65239639e38683067fb0492c0dc26e5435138435d612277f3ab08b7e73a933b07ad9e2f411feb82e84690e82f906cfcfc9f3aa7b5f3c42
DIST libvirt_python-12.6.0.tar.gz.asc 833 BLAKE2B edf2e70a0af3ba13e2a31bad7036350ee5e0a411a87a02a15ff77e05c2d7bb451f90c343691cc3f56d2b555e83975476e1042455ffb96bae7f515c8db805ac25 SHA512 884cab9736a723b16232e6b7062cde573180c75616b080edad96ace1f0ae62a4fbca0e2dd09e3e460403f667cd0a7e942e2594b742c071a437546a7d79983a4f
+DIST libvirt_python-12.7.0.tar.gz 256560 BLAKE2B 3c03ced41b09869e1e6b5fbb9c5b7919e83e3eb3f0197dec66926e6f727fb9936ac4c872197f29800fd39768260f41f60b37df3f3d9cdbc44049fc7801d4edce SHA512 35c837491141bf8a856711991840ef7526cab26375175042d9f1326aa0217886ec6c3f3334ae60be96564b5258dd78f1504a0a841cb4c77e5bd9c813beee7a77
+DIST libvirt_python-12.7.0.tar.gz.asc 833 BLAKE2B e6bcc03a410c3f4b9b5346cbe4df7d36f6359cad2893263186c91beb8c7d2611f7811a5d6eb7149cdd2f1f81849b727d227dddfe6d09aa151386a0f04d60e1a8 SHA512 50778d6dea1dddc786cc755305f78b70ba0c8c708703f44b4e3d53ffe6294d3a7308b2d1153a505ad16596d96a951780500adc78feef03aa7462e28767a6b476
diff --git a/dev-python/libvirt-python/libvirt-python-12.7.0.ebuild b/dev-python/libvirt-python/libvirt-python-12.7.0.ebuild
new file mode 100644
index 000000000000..e7c2af787d5a
--- /dev/null
+++ b/dev-python/libvirt-python/libvirt-python-12.7.0.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2026 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!
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+inherit distutils-r1 verify-sig
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.com/libvirt/libvirt-python.git"
+ RDEPEND="app-emulation/libvirt:="
+else
+ MY_P="${P/-/_}"
+ SRC_URI="https://download.libvirt.org/python/${MY_P}.tar.gz
+ verify-sig? ( https://download.libvirt.org/python/${MY_P}.tar.gz.asc )"
+ KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+ RDEPEND="app-emulation/libvirt:0/${PV}"
+ S="${WORKDIR}/${MY_P}"
+fi
+
+DESCRIPTION="libvirt Python bindings"
+HOMEPAGE="https://www.libvirt.org"
+
+LICENSE="LGPL-2"
+SLOT="0"
+IUSE="examples test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-python/lxml[${PYTHON_USEDEP}]
+ )
+ verify-sig? ( >=sec-keys/openpgp-keys-libvirt-20260831 )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.asc
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_compile() {
+ # setuptools is broken for C extensions, bug #907718
+ distutils-r1_python_compile -j1
+}
+
+python_install_all() {
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-util/android-udev-rules/Manifest b/dev-util/android-udev-rules/Manifest
index 3e2a20ee6e5f..06607692add7 100644
--- a/dev-util/android-udev-rules/Manifest
+++ b/dev-util/android-udev-rules/Manifest
@@ -1,2 +1,2 @@
-DIST android-udev-rules-20250525.tar.gz 23794 BLAKE2B 2a086c3451d7f5309108960eff25afc77e7902e3bbf68018b1a4b89115123e7a45c293dbecece217a5565f71e5688e3996426f0e6a1167bf35deb14da4bddb70 SHA512 c4370ba89ee240d540b6a18e6fd37bace27315b9637577eb08c48cfec8c77dcb8ebfebdf2b7853b9f3c7db35fe50458af52d070946bb0ab0db67539470bbf0ad
DIST android-udev-rules-20260423.tar.gz 23917 BLAKE2B 0149de234ac44e72b05cfb5467d636ee71b29e04bf80036524912823f9fe6c831c3493c7f6b44c6969e369432df25379f97c48df3992593a776016b2971c623a SHA512 97966f1c02a9f85825a217384c94cfa8b9f721173e543c324b866ee7823b09ca67ec7ba1b012ce10de9d56ae7e4157d4cec8364c8e325001664cf6383778a5fe
+DIST android-udev-rules-20260922.tar.gz 24039 BLAKE2B ae9ce487d8557c2747935ab8b38f431dcb5563dd73bc5e07570f9a93f3f60b2fb9047187340a4c029f9967cefe893d3796d414b2f2b3ffa24a8da250cbed62a0 SHA512 2963f9ed5d54fc3fc8e4aa61773d599ceabce100b83c54dfb739c8189b60a12003407d10cab92248ae0feb4c3fb56280742404f8fe93726a36be9b972c3bdcbd
diff --git a/dev-util/android-udev-rules/android-udev-rules-20250525.ebuild b/dev-util/android-udev-rules/android-udev-rules-20260922.ebuild
index 7fe4e9222260..0dc57aebae4a 100644
--- a/dev-util/android-udev-rules/android-udev-rules-20250525.ebuild
+++ b/dev-util/android-udev-rules/android-udev-rules-20260922.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2025 Gentoo Authors
+# Copyright 2022-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -11,7 +11,7 @@ SRC_URI="https://github.com/M0Rf30/android-udev-rules/archive/refs/tags/${PV}.ta
LICENSE="GPL-3"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
# No tests
RESTRICT="test"
diff --git a/dev-util/babeltrace/babeltrace-2.1.2.ebuild b/dev-util/babeltrace/babeltrace-2.1.2.ebuild
index c4e80f79dd6c..057a61dc0f71 100644
--- a/dev-util/babeltrace/babeltrace-2.1.2.ebuild
+++ b/dev-util/babeltrace/babeltrace-2.1.2.ebuild
@@ -46,6 +46,10 @@ BDEPEND="
"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/jeremiegalarneau.asc
+PATCHES=(
+ "${FILESDIR}"/babeltrace-2.1.2-swig-4.5.patch
+)
+
pkg_setup() {
use python && python-single-r1_pkg_setup
}
diff --git a/dev-util/babeltrace/files/babeltrace-2.1.2-swig-4.5.patch b/dev-util/babeltrace/files/babeltrace-2.1.2-swig-4.5.patch
new file mode 100644
index 000000000000..e18c20251bb4
--- /dev/null
+++ b/dev-util/babeltrace/files/babeltrace-2.1.2-swig-4.5.patch
@@ -0,0 +1,59 @@
+https://bugs.gentoo.org/983043
+https://github.com/efficios/babeltrace/commit/1c59884d4ddf384b87df95d317b62f5f5783ca27
+
+From 1c59884d4ddf384b87df95d317b62f5f5783ca27 Mon Sep 17 00:00:00 2001
+From: Jitka Plesnikova <jplesnik@redhat.com>
+Date: Tue, 28 Jul 2026 13:29:18 +0000
+Subject: [PATCH] bt2: replace removed Python 2 C API macros for SWIG 4.5.0
+ compatibility
+
+SWIG 4.5.0 has removed some Python 2/3 compatibility macros. The two
+that affect us are `PyString_FromString` and
+`SWIG_Python_str_FromChar`, which are both replaced with
+`PyUnicode_FromString`.
+
+Change-Id: I3c74d8ea7257d9cdc0fa4b533ae7b3a5ef9521d1
+Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
+Signed-off-by: Jitka Plesnikova <jplesnik@redhat.com>
+Reviewed-on: https://review.lttng.org/c/babeltrace/+/18423
+Tested-by: jenkins <jenkins@lttng.org>
+--- a/src/bindings/python/bt2/bt2/native_bt.i
++++ b/src/bindings/python/bt2/bt2/native_bt.i
+@@ -56,7 +56,7 @@ typedef uint64_t bt_listener_id;
+ *
+ * We initialize the output parameter `temp_value` to an invalid but non-zero
+ * pointer value. This is to make sure we don't rely on its initial value in
+- * the epilogue (where we call SWIG_Python_str_FromChar). When they fail,
++ * the epilogue (where we call PyUnicode_FromString). When they fail,
+ * functions on which we apply this typemap don't guarantee that the value of
+ * `temp_value` will be unchanged or valid.
+ */
+@@ -67,7 +67,7 @@ typedef uint64_t bt_listener_id;
+ %typemap(argout) (const char **) {
+ if (*$1) {
+ /* SWIG_AppendOutput() steals the created object */
+- $result = SWIG_AppendOutput($result, SWIG_Python_str_FromChar(*$1));
++ $result = SWIG_AppendOutput($result, PyUnicode_FromString(*$1));
+ } else {
+ /* SWIG_AppendOutput() steals Py_None */
+ Py_INCREF(Py_None);
+--- a/src/bindings/python/bt2/bt2/native_bt_error.i.hpp
++++ b/src/bindings/python/bt2/bt2/native_bt_error.i.hpp
+@@ -19,7 +19,7 @@ static PyObject *bt_bt2_format_bt_error_cause(const bt_error_cause *error_cause)
+ BT_COMMON_COLOR_WHEN_NEVER);
+ BT_ASSERT(error_cause_str);
+
+- py_error_cause_str = PyString_FromString(error_cause_str);
++ py_error_cause_str = PyUnicode_FromString(error_cause_str);
+
+ g_free(error_cause_str);
+
+@@ -35,7 +35,7 @@ static PyObject *bt_bt2_format_bt_error(const bt_error *error)
+ BT_COMMON_COLOR_WHEN_NEVER);
+ BT_ASSERT(error_str);
+
+- py_error_str = PyString_FromString(error_str);
++ py_error_str = PyUnicode_FromString(error_str);
+
+ g_free(error_str);
+
diff --git a/dev-util/jenkins-bin/jenkins-bin-2.568.3.ebuild b/dev-util/jenkins-bin/jenkins-bin-2.568.3.ebuild
index dc8f46ab0c2f..01cf39a77f68 100644
--- a/dev-util/jenkins-bin/jenkins-bin-2.568.3.ebuild
+++ b/dev-util/jenkins-bin/jenkins-bin-2.568.3.ebuild
@@ -12,7 +12,7 @@ S="${WORKDIR}"
LICENSE="MIT"
SLOT="lts"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 ~x86"
DEPEND="acct-group/jenkins
acct-user/jenkins"
diff --git a/dev-util/maturin/maturin-1.15.0.ebuild b/dev-util/maturin/maturin-1.15.0.ebuild
index ad7abff14f0d..821010e732c3 100644
--- a/dev-util/maturin/maturin-1.15.0.ebuild
+++ b/dev-util/maturin/maturin-1.15.0.ebuild
@@ -25,7 +25,7 @@ LICENSE+="
BZIP2
" # crates
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="doc +ssl test"
RESTRICT="!test? ( test )"
diff --git a/net-misc/airouter/Manifest b/net-misc/airouter/Manifest
index 142952972b49..c92ff9cb6094 100644
--- a/net-misc/airouter/Manifest
+++ b/net-misc/airouter/Manifest
@@ -2,3 +2,5 @@ DIST airouter-0.1.2-r1.tar.zst 85425944 BLAKE2B f31bc203d9db5d16bfaac7a17431fa1b
DIST airouter-0.1.2-r2.tar.zst 87017898 BLAKE2B a6e8af5a79a33f12c2f681ca3cefc9d6e66a558705b301ccb1e3b9dfeea3dc0d100779765dfbd53367160c07241e680cba67cda9384ec94c128f4a446a6f4bb1 SHA512 7d8d15367f761c75a59952142ec5570ec7b3bb77150e8f8da14c637083beed46a19d56f60fcff0683b5e8284cec8e252fca69f849796c74691fe4e2222f7a976
DIST airouter-0.1.2-r3.tar.zst 86794645 BLAKE2B 00d5e90a8fa187d47e15535d50dd74269f36b77af819deb69b831b58f6d789a4921633ab2c7566ad14effbe76e42c10c7681a46f31e03ef7ef4a55a3e7292dc6 SHA512 ae72c824afd624a4cc563a8bb137cc6455367443a2b0da15bc81ea03978839456102c245d5c864147c631706cefbeab6467e4b3bbecdbe6cd786d0fb7b42bee7
DIST llmbridge-0.1.2-20260919.tar.zst 116018 BLAKE2B a290d588687a0d37b14ba9845da0201b0c3b8f6a5495f39e9a0f96d89226c7f5907ff666a5de9b3e104bbb1479b5be913a1801b4324de1745a70209371e0da63 SHA512 28b3c1b27c179cef85871f5d2f7c1098cfe87d228abfa01118ac3bf44744d6bf866e92f1fd7738c9898380fdde217599a729ff68fe3fb3d471ed1cf3f0374ca7
+DIST airouter-0.1.2-r4.tar.zst 86894368 BLAKE2B 784e633146138ba2012750c6bb03b6685fe55cd77818acb7d4ce630f3ae6a1fe7278e6cb2e99ba57beeabe01108d7b37d5c2d11ceab0cad18eda173f1fafa3e0 SHA512 1d02fb09ee7c16f9afc030368b4500d60c4a2552ccdc737ab3c32eeb57a7f14032b337027b3239500b054553af1a8a6f4d6f92d00446629d36de9a3b806f2330
+DIST airouter-0.1.2-r5.tar.zst 86807460 BLAKE2B df86f434e7e6b20f6d75c3d5164a5dc8878cea2b9058f7f89d64c8cefa776affc223b85019723e9f1abf540d87d3ae6cf748491baa9745f8ccfbb4c534b2fbe6 SHA512 cc26ae5ac17b593c9be04379c9a202ab7432c02150608bb7f7a4a21a9dced511c0e5b1d3874a5123e164381c9567c7edc222ab93e04797f6c594b4bb271cdd89
diff --git a/net-misc/airouter/airouter-0.1.2-r4.ebuild b/net-misc/airouter/airouter-0.1.2-r4.ebuild
new file mode 100755
index 000000000000..a449b10d79d1
--- /dev/null
+++ b/net-misc/airouter/airouter-0.1.2-r4.ebuild
@@ -0,0 +1,115 @@
+EAPI=8
+
+RUST_MIN_VER="1.88.0"
+inherit cargo
+
+DESCRIPTION="Metadata-only routing plane for owned and frontier AI compute"
+HOMEPAGE="https://trunkmasters.com/airouter"
+SRC_URI="https://distfiles.baldeagleos.com/airouter-0.1.2-r4.tar.zst https://distfiles.baldeagleos.com/llmbridge-0.1.2-20260919.tar.zst"
+S="${WORKDIR}/airouter"
+
+# The archive contains AIRouter, its pinned LLMBridge path dependency, and a
+# complete Cargo vendor tree. The package must build without /srv/airouter or
+# network access.
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+
+RDEPEND="
+ acct-group/airouter
+ acct-group/airouter-admin
+ acct-group/airouter-framework
+ acct-user/airouter
+ acct-user/airouter-agent
+ dev-db/postgresql
+ sys-auth/citadel
+ >=dev-lang/python-3.10
+ sys-apps/acl
+ sys-apps/bubblewrap
+ sys-apps/util-linux
+"
+BDEPEND="
+ net-misc/rsync
+ >=dev-lang/rust-1.88.0
+"
+
+src_unpack() {
+ # Portage on the target profile does not unpack .tar.zst through the
+ # generic helper; extract both immutable source inputs explicitly.
+ tar --zstd -xf "${DISTDIR}/airouter-0.1.2-r4.tar.zst" -C "${WORKDIR}" || die
+ tar --zstd -xf "${DISTDIR}/llmbridge-0.1.2-20260919.tar.zst" -C "${WORKDIR}" || die
+ mv "${WORKDIR}/llmbridge-0.1.2-20260919" "${WORKDIR}/llmbridge" || die
+}
+
+src_compile() {
+ cargo build --offline --release --workspace --locked \
+ --features "airouter-catalog/skills-tools,airouter-catalog/workspace-tools,\
+airouter-catalog/development-tools,airouter-catalog/release-tools,\
+airouter-catalog/learning-tools,airouter-catalog/host-tools,\
+airouter-catalog/control-tools" || die
+}
+
+src_install() {
+ dosbin target/release/airouterd
+ dosbin target/release/airouter-agentd
+ dosbin target/release/airouterctl
+ dosbin target/release/airouter-catalog
+ dosbin target/release/airouter-host
+ dosbin target/release/airouter-release
+ dosbin target/release/airouter-verify
+ dosbin target/release/airouter-permissions
+ dosbin target/release/airouter-toolsd
+ dobin target/release/airouter-smoke
+ dobin target/release/airouter-tool
+ exeinto /usr/libexec/airouter
+ doexe target/release/enroll-node
+ doexe packaging/scripts/airouter-renew-node-server
+ doexe packaging/scripts/airouter-capability-refresh
+ doexe packaging/scripts/airouter-framework-backup
+ doexe packaging/scripts/airouter-tools-launch
+ doexe target/release/airouter-desktop-worker
+ exeinto /usr/libexec/airouter/catalog
+ doexe target/release/airouter-skills-catalog
+ doexe target/release/airouter-workspace-catalog
+ doexe target/release/airouter-development-catalog
+ doexe target/release/airouter-release-catalog
+ doexe target/release/airouter-learning-catalog
+ doexe target/release/airouter-host-catalog
+ doexe target/release/airouter-control-catalog
+ newexe scripts/airouter-route.py airouter-route
+ exeinto /usr/libexec/airouter/qualification
+ doexe scripts/qualify-citadel-session.py
+ insinto /etc/cron.d
+ doins packaging/cron/airouter-server-cert-renew
+ doins packaging/cron/airouter-capability-refresh
+ doins packaging/cron/airouter-framework-backup
+ insinto /etc/airouter
+ doins config/airouter.toml
+ newins config/framework.example.toml framework.toml
+ doins config/tools.example.toml config/tools-client.example.toml
+ newins config/routing.example.json routing.json
+ insinto /etc/airouter-capabilities
+ newins packaging/capabilities.sources.example.json sources.json
+ insinto /etc/airouter/qualification
+ doins packaging/qualification/native-codex-workbench.json
+ diropts -o airouter -g airouter -m 0700
+ keepdir /etc/airouter/secrets
+ newinitd packaging/openrc/airouterd airouterd
+ newinitd packaging/openrc/airouter-frameworkd airouter-frameworkd
+ newinitd packaging/openrc/airouter-catalog-refresh airouter-catalog-refresh
+ newinitd packaging/openrc/airouter-qualification airouter-qualification
+ newinitd packaging/openrc/airouter-toolsd airouter-toolsd
+ docinto tools
+ dodoc config/tools.example.toml config/tools-client.example.toml crates/airouter-tools/README.md crates/airouter-tools/DESKTOPS.md
+ docinto /
+ dodoc README.md schema/README.md
+ diropts -o airouter -g airouter -m 0750
+ keepdir /var/lib/airouter
+ keepdir /var/backups/airouter-framework
+}
+
+pkg_postinst() {
+ elog "Create the signing key with: airouterctl generate-signing-key"
+ elog "Apply migrations with the restricted airouter_migrate role before starting airouterd."
+}
diff --git a/net-misc/airouter/airouter-0.1.2-r5.ebuild b/net-misc/airouter/airouter-0.1.2-r5.ebuild
new file mode 100755
index 000000000000..429ad9989da6
--- /dev/null
+++ b/net-misc/airouter/airouter-0.1.2-r5.ebuild
@@ -0,0 +1,115 @@
+EAPI=8
+
+RUST_MIN_VER="1.88.0"
+inherit cargo
+
+DESCRIPTION="Metadata-only routing plane for owned and frontier AI compute"
+HOMEPAGE="https://trunkmasters.com/airouter"
+SRC_URI="https://distfiles.baldeagleos.com/airouter-0.1.2-r5.tar.zst https://distfiles.baldeagleos.com/llmbridge-0.1.2-20260919.tar.zst"
+S="${WORKDIR}/airouter"
+
+# The archive contains AIRouter, its pinned LLMBridge path dependency, and a
+# complete Cargo vendor tree. The package must build without /srv/airouter or
+# network access.
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+
+RDEPEND="
+ acct-group/airouter
+ acct-group/airouter-admin
+ acct-group/airouter-framework
+ acct-user/airouter
+ acct-user/airouter-agent
+ dev-db/postgresql
+ sys-auth/citadel
+ >=dev-lang/python-3.10
+ sys-apps/acl
+ sys-apps/bubblewrap
+ sys-apps/util-linux
+"
+BDEPEND="
+ net-misc/rsync
+ >=dev-lang/rust-1.88.0
+"
+
+src_unpack() {
+ # Portage on the target profile does not unpack .tar.zst through the
+ # generic helper; extract both immutable source inputs explicitly.
+ tar --zstd -xf "${DISTDIR}/airouter-0.1.2-r5.tar.zst" -C "${WORKDIR}" || die
+ tar --zstd -xf "${DISTDIR}/llmbridge-0.1.2-20260919.tar.zst" -C "${WORKDIR}" || die
+ mv "${WORKDIR}/llmbridge-0.1.2-20260919" "${WORKDIR}/llmbridge" || die
+}
+
+src_compile() {
+ cargo build --offline --release --workspace --locked \
+ --features "airouter-catalog/skills-tools,airouter-catalog/workspace-tools,\
+airouter-catalog/development-tools,airouter-catalog/release-tools,\
+airouter-catalog/learning-tools,airouter-catalog/host-tools,\
+airouter-catalog/control-tools" || die
+}
+
+src_install() {
+ dosbin target/release/airouterd
+ dosbin target/release/airouter-agentd
+ dosbin target/release/airouterctl
+ dosbin target/release/airouter-catalog
+ dosbin target/release/airouter-host
+ dosbin target/release/airouter-release
+ dosbin target/release/airouter-verify
+ dosbin target/release/airouter-permissions
+ dosbin target/release/airouter-toolsd
+ dobin target/release/airouter-smoke
+ dobin target/release/airouter-tool
+ exeinto /usr/libexec/airouter
+ doexe target/release/enroll-node
+ doexe packaging/scripts/airouter-renew-node-server
+ doexe packaging/scripts/airouter-capability-refresh
+ doexe packaging/scripts/airouter-framework-backup
+ doexe packaging/scripts/airouter-tools-launch
+ doexe target/release/airouter-desktop-worker
+ exeinto /usr/libexec/airouter/catalog
+ doexe target/release/airouter-skills-catalog
+ doexe target/release/airouter-workspace-catalog
+ doexe target/release/airouter-development-catalog
+ doexe target/release/airouter-release-catalog
+ doexe target/release/airouter-learning-catalog
+ doexe target/release/airouter-host-catalog
+ doexe target/release/airouter-control-catalog
+ newexe scripts/airouter-route.py airouter-route
+ exeinto /usr/libexec/airouter/qualification
+ doexe scripts/qualify-citadel-session.py
+ insinto /etc/cron.d
+ doins packaging/cron/airouter-server-cert-renew
+ doins packaging/cron/airouter-capability-refresh
+ doins packaging/cron/airouter-framework-backup
+ insinto /etc/airouter
+ doins config/airouter.toml
+ newins config/framework.example.toml framework.toml
+ doins config/tools.example.toml config/tools-client.example.toml
+ newins config/routing.example.json routing.json
+ insinto /etc/airouter-capabilities
+ newins packaging/capabilities.sources.example.json sources.json
+ insinto /etc/airouter/qualification
+ doins packaging/qualification/native-codex-workbench.json
+ diropts -o airouter -g airouter -m 0700
+ keepdir /etc/airouter/secrets
+ newinitd packaging/openrc/airouterd airouterd
+ newinitd packaging/openrc/airouter-frameworkd airouter-frameworkd
+ newinitd packaging/openrc/airouter-catalog-refresh airouter-catalog-refresh
+ newinitd packaging/openrc/airouter-qualification airouter-qualification
+ newinitd packaging/openrc/airouter-toolsd airouter-toolsd
+ docinto tools
+ dodoc config/tools.example.toml config/tools-client.example.toml crates/airouter-tools/README.md crates/airouter-tools/DESKTOPS.md
+ docinto /
+ dodoc README.md schema/README.md
+ diropts -o airouter -g airouter -m 0750
+ keepdir /var/lib/airouter
+ keepdir /var/backups/airouter-framework
+}
+
+pkg_postinst() {
+ elog "Create the signing key with: airouterctl generate-signing-key"
+ elog "Apply migrations with the restricted airouter_migrate role before starting airouterd."
+}
diff --git a/net-proxy/3proxy/3proxy-0.9.9.0.ebuild b/net-proxy/3proxy/3proxy-0.9.9.0.ebuild
index 72afea02f189..cdedbcb3e670 100644
--- a/net-proxy/3proxy/3proxy-0.9.9.0.ebuild
+++ b/net-proxy/3proxy/3proxy-0.9.9.0.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="
SRC_URI="https://github.com/3proxy/3proxy/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~ppc ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm ppc ~sparc x86"
IUSE="odbc pam pcre ssl"
DEPEND="
diff --git a/sys-libs/libapparmor/files/libapparmor-4.1.7-swig-4.5.patch b/sys-libs/libapparmor/files/libapparmor-4.1.7-swig-4.5.patch
new file mode 100644
index 000000000000..4838f91c121f
--- /dev/null
+++ b/sys-libs/libapparmor/files/libapparmor-4.1.7-swig-4.5.patch
@@ -0,0 +1,31 @@
+https://bugs.gentoo.org/983043
+https://gitlab.com/apparmor/apparmor/-/merge_requests/2191
+https://gitlab.com/apparmor/apparmor/-/commit/6b80489953728aab8aeb4f9075283feb26e2e262
+
+From 6b80489953728aab8aeb4f9075283feb26e2e262 Mon Sep 17 00:00:00 2001
+From: Nazar Kazakov <nazar.kazakov@codethink.co.uk>
+Date: Thu, 13 Aug 2026 17:28:03 +0100
+Subject: [PATCH] libapparmor: swig: don't use removed macro %new_copy_array
+
+SWIG 4.5 removed this macro, see
+https://github.com/swig/swig/blob/v4.5.0/CHANGES.current#L840
+
+Signed-off-by: Nazar Kazakov <nazar.kazakov@codethink.co.uk>
+--- a/swig/SWIG/libapparmor.i
++++ b/swig/SWIG/libapparmor.i
+@@ -143,7 +143,11 @@ warnings.warn("free_record is now a no-op as the record's memory is handled auto
+ }
+ if (alloc_status != SWIG_NEWOBJ) {
+ // Unconditionally copy because the C function modifies the string in place
+- $1 = %new_copy_array(con_ptr, con_len+1, char);
++ $1 = %new_array(con_len+1, char);
++ if ($1 == NULL) {
++ SWIG_exception_fail(SWIG_MemoryError, "could not allocate C con_ptr copy array");
++ }
++ memcpy($1, con_ptr, con_len+1);
+ } else {
+ $1 = con_ptr;
+ }
+--
+GitLab
+
diff --git a/sys-libs/libapparmor/libapparmor-4.1.7.ebuild b/sys-libs/libapparmor/libapparmor-4.1.7.ebuild
index 265c22a4e542..4719a0b46dd6 100644
--- a/sys-libs/libapparmor/libapparmor-4.1.7.ebuild
+++ b/sys-libs/libapparmor/libapparmor-4.1.7.ebuild
@@ -52,6 +52,10 @@ BDEPEND="
)
"
+PATCHES=(
+ "${FILESDIR}"/libapparmor-4.1.7-swig-4.5.patch
+)
+
src_prepare() {
default