commit: ccfbc558e36de73a620726ddd2ed6f000f58f178
Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 9 09:01:35 2025 +0000
Commit: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Tue Dec 9 09:01:35 2025 +0000
URL: https://gitweb.gentoo.org/proj/binhost.git/commit/?id=ccfbc558
Copy milou to tintin, reduce to v3 only
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>
builders/tintin/binhost-update | 166 +++++++++++++++++++++
builders/tintin/fstab.inc | 10 ++
builders/tintin/gnome-v3-23/portage/env/lto.conf | 5 +
builders/tintin/gnome-v3-23/portage/env/nolto.conf | 5 +
builders/tintin/gnome-v3-23/portage/make.conf | 52 +++++++
builders/tintin/gnome-v3-23/portage/make.profile | 1 +
.../tintin/gnome-v3-23/portage/package.env/lto | 3 +
.../gnome-v3-23/portage/package.mask/prebuilt-bin | 1 +
.../tintin/gnome-v3-23/portage/package.use/bindist | 2 +
.../tintin/gnome-v3-23/portage/package.use/blender | 7 +
.../gnome-v3-23/portage/package.use/dist-kernel | 1 +
.../tintin/gnome-v3-23/portage/package.use/fixed | 6 +
.../gnome-v3-23/portage/package.use/inkscape | 1 +
.../tintin/gnome-v3-23/portage/package.use/lxqt | 3 +
.../gnome-v3-23/portage/package.use/meson-ci | 3 +
.../gnome-v3-23/portage/package.use/multilib | 32 ++++
.../tintin/gnome-v3-23/portage/package.use/pgo | 2 +
.../tintin/gnome-v3-23/portage/package.use/queued | 1 +
.../tintin/gnome-v3-23/portage/package.use/rust | 2 +
.../tintin/gnome-v3-23/portage/package.use/slim | 1 +
.../gnome-v3-23/portage/package.use/virt-manager | 5 +
.../tintin/gnome-v3-23/portage/package.use/xfce4 | 1 +
.../tintin/gnome-v3-23/portage/package.use/zlib | 1 +
.../portage/variants/debug/package.use/debug | 6 +
.../gccfrontends/package.use/gcc-frontends | 2 +
.../portage/variants/gccfrontends/world | 4 +
.../gnome-v3-23/portage/variants/lucky/.run_marker | 1 +
.../variants/nobluetooth/package.use/nobluetooth | 1 +
.../portage/variants/nopulse/package.use/nopulse | 1 +
.../portage/variants/novala/buildpkgonly | 3 +
.../portage/variants/novala/package.use/novala | 1 +
.../portage/variants/novala/world.remove | 3 +
.../variants/nowayland/package.use/nowayland | 5 +
.../portage/variants/python3both/buildpkgonly | 16 ++
.../portage/variants/python3both/make.conf.footer | 2 +
.../variants/python3both/package.use/python3both | 2 +
.../variants/python3both/profile/use.stable.mask | 2 +
.../portage/variants/slim/package.use/slim2 | 6 +
.../portage/variants/unstable/buildpkgonly | 9 ++
.../variants/unstable/package.accept_keywords/gcc | 2 +
builders/tintin/gnome-v3-23/run-update | 51 +++++++
builders/tintin/gnome-v3-23/world | 61 ++++++++
builders/tintin/kde-v3-23/portage/env/lto.conf | 5 +
builders/tintin/kde-v3-23/portage/env/nolto.conf | 5 +
builders/tintin/kde-v3-23/portage/make.conf | 52 +++++++
builders/tintin/kde-v3-23/portage/make.profile | 1 +
builders/tintin/kde-v3-23/portage/package.env/lto | 3 +
.../kde-v3-23/portage/package.mask/prebuilt-bin | 1 +
.../tintin/kde-v3-23/portage/package.use/bindist | 2 +
.../tintin/kde-v3-23/portage/package.use/calibre | 1 +
.../kde-v3-23/portage/package.use/dist-kernel | 1 +
.../tintin/kde-v3-23/portage/package.use/ffmpeg | 1 +
.../tintin/kde-v3-23/portage/package.use/fixed | 6 +
builders/tintin/kde-v3-23/portage/package.use/gcc | 2 +
builders/tintin/kde-v3-23/portage/package.use/kde | 4 +
.../tintin/kde-v3-23/portage/package.use/klayout | 2 +
builders/tintin/kde-v3-23/portage/package.use/mate | 1 +
.../kde-v3-23/portage/package.use/python3-incompat | 2 +
.../tintin/kde-v3-23/portage/package.use/queued | 3 +
builders/tintin/kde-v3-23/portage/package.use/rust | 1 +
.../portage/variants/debug/package.use/debug | 6 +
.../portage/variants/gcc-nopgo/package.use/gcc | 1 +
.../kde-v3-23/portage/variants/lucky/.run_marker | 1 +
.../portage/variants/python3both/buildpkgonly | 16 ++
.../portage/variants/python3both/make.conf.footer | 2 +
.../variants/python3both/package.use/python3both | 2 +
.../variants/python3both/profile/use.stable.mask | 2 +
builders/tintin/kde-v3-23/run-update | 51 +++++++
builders/tintin/kde-v3-23/world | 61 ++++++++
builders/tintin/openrc-v3-23/portage/env/lto.conf | 5 +
.../tintin/openrc-v3-23/portage/env/nolto.conf | 5 +
builders/tintin/openrc-v3-23/portage/make.conf | 52 +++++++
builders/tintin/openrc-v3-23/portage/make.profile | 1 +
.../tintin/openrc-v3-23/portage/package.env/lto | 3 +
.../openrc-v3-23/portage/package.mask/prebuilt-bin | 1 +
.../openrc-v3-23/portage/package.use/bindist | 2 +
.../openrc-v3-23/portage/package.use/blender | 5 +
.../openrc-v3-23/portage/package.use/dist-kernel | 1 +
.../tintin/openrc-v3-23/portage/package.use/fixed | 6 +
.../openrc-v3-23/portage/package.use/inkscape | 1 +
.../tintin/openrc-v3-23/portage/package.use/kde | 23 +++
.../tintin/openrc-v3-23/portage/package.use/llvm | 2 +
.../openrc-v3-23/portage/package.use/multilib | 28 ++++
.../tintin/openrc-v3-23/portage/package.use/queued | 1 +
.../tintin/openrc-v3-23/portage/package.use/rust | 2 +
.../tintin/openrc-v3-23/portage/package.use/xfce4 | 1 +
.../tintin/openrc-v3-23/portage/package.use/zlib | 1 +
.../portage/variants/lucky/.run_marker | 1 +
builders/tintin/openrc-v3-23/run-update | 51 +++++++
builders/tintin/openrc-v3-23/world | 47 ++++++
builders/tintin/server-v3-23/portage/env/lto.conf | 5 +
.../tintin/server-v3-23/portage/env/nolto.conf | 5 +
builders/tintin/server-v3-23/portage/make.conf | 52 +++++++
builders/tintin/server-v3-23/portage/make.profile | 1 +
.../tintin/server-v3-23/portage/package.env/lto | 3 +
.../server-v3-23/portage/package.mask/prebuilt-bin | 1 +
.../server-v3-23/portage/package.use/dist-kernel | 1 +
.../tintin/server-v3-23/portage/package.use/gcc | 2 +
.../portage/package.use/networkmanager | 2 +
.../tintin/server-v3-23/portage/package.use/nginx | 2 +
.../tintin/server-v3-23/portage/package.use/npm | 1 +
.../portage/package.use/python3-incompat | 2 +
.../tintin/server-v3-23/portage/package.use/qt | 1 +
.../tintin/server-v3-23/portage/package.use/rust | 1 +
.../portage/variants/debug/package.use/debug | 6 +
.../portage/variants/gcc-nopgo/package.use/gcc | 1 +
.../portage/variants/lucky/.run_marker | 1 +
.../portage/variants/meson-ci/package.use/meson-ci | 14 ++
.../portage/variants/python3both/buildpkgonly | 16 ++
.../portage/variants/python3both/make.conf.footer | 2 +
.../variants/python3both/package.use/python3both | 2 +
.../variants/python3both/profile/use.stable.mask | 2 +
builders/tintin/server-v3-23/run-update | 52 +++++++
builders/tintin/server-v3-23/world | 102 +++++++++++++
114 files changed, 1240 insertions(+)
diff --git a/builders/tintin/binhost-update b/builders/tintin/binhost-update
new file mode 100755
index 0000000..d3578d9
--- /dev/null
+++ b/builders/tintin/binhost-update
@@ -0,0 +1,166 @@
+#!/bin/bash
+
+BINHOST_NAME=amd64/23.0/x86-64
+_BINHOST_NAME=$(echo ${BINHOST_NAME}|sed -e 's:/:_:g')
+
+TMPFILE="/root/.tmp-binhost-${_BINHOST_NAME}-update-$(date +%s)"
+LOCKFILE="/root/.tmp-binhost-${_BINHOST_NAME}-lock"
+
[email protected]
[email protected]
+
+NSPAWNS_x8664v3_23=(
+ binhost-amd64-x86-64-v3-kde-23
+ binhost-amd64-x86-64-v3-gnome-23
+ binhost-amd64-x86-64-v3-openrc-23
+ binhost-amd64-x86-64-v3-server-23
+)
+
+NSPAWN_NAMES=(
+ "${NSPAWNS_x8664v3_23[@]}"
+)
+
+UPLOAD_USER=amd64
+UPLOAD_KEY=/root/.ssh/id_ed25519
+
+TMPFS_SIZE=48
+
+
+send_email() {
+ local subject="[binhost ${BINHOST_NAME}] $1"
+ local message=$2
+ local logfile=$3
+ local body
+
+ if [ -n "${logfile}" ]; then
+ url=$(xz -c "${logfile}" | curl -F "_=<-"
https://paste.gentoo.zip)
+ body=$(printf '%b\n\n\n' "${message}"; tail -n 500
"${logfile}"; printf '\n\n\nFull build log at %s (download: %s)\n' "${logfile}"
"${url}")
+ else
+ body=${message}
+ fi
+
+ printf 'From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%b' \
+ "${EMAIL_FROM}" "${EMAIL_TO}" "${subject}" "${body}" | \
+ /usr/sbin/sendmail -f "${EMAIL_FROM}" ${EMAIL_TO//,/ }
+}
+
+upsync_binpackages() {
+ # parameter 1: a PKGDIR on the local host
+ # parameter 2: the target dir in the mirroring system, should be of the
+ # form arch/profileversion/name (e.g., amd64/17.0/x32 )
+ echo Upsyncing binpackages from $1 to $2
+ local SSH_CMD=(
+ ssh
+ -i ${UPLOAD_KEY}
+ -o UserKnownHostsFile=/dev/null
+ -o VerifyHostKeyDNS=yes
+ -o StrictHostKeyChecking=no
+ -o IPQoS=cs0
+ )
+ local RSYNC_OPTS=(
+ -e "${SSH_CMD[*]}"
+ --archive
+ --delete
+ --delete-after
+ --omit-dir-times
+ --delay-updates
+ --mkpath
+ --stats
+ )
+ rsync "${RSYNC_OPTS[@]}" "$1"/*
"${UPLOAD_USER}@releng-incoming.gentoo.org:/release/weekly/binpackages/$2/"
+}
+
+verify_dnssec() {
+ which dig >/dev/null || {
+ echo "net-dns/bind-tools is needed to verify DNSSEC is working"
+ exit 1
+ }
+
+ if ! dig +noall +comments dev.gentoo.org. IN SSHFP | egrep -q '^;;
flags: [ a-z]+\<ad\>'; then
+ echo "DNSSEC does not appear to be working. Bailing out"
+ exit 1
+ fi
+
+ if ! grep -q '^options\>.*\<edns0\>' /etc/resolv.conf; then
+ echo "DNSSEC is not enabled in /etc/resolv.conf"
+ exit 1
+ fi
+}
+
+upload_all() {
+ local -; set +x
+ cp ${TMPFILE}
/var/lib/machines/binhost-amd64-x86-64-kde-23/var/cache/binpkgs/last-build.log
+ upsync_binpackages
/var/lib/machines/binhost-amd64-x86-64-kde-23/var/cache/binpkgs
amd64/23.0/x86-64 &>> ${TMPFILE}
+ upsync_binpackages
/var/lib/machines/binhost-amd64-x86-64-v3-kde-23/var/cache/binpkgs
amd64/23.0/x86-64-v3 &>> ${TMPFILE}
+}
+
+checkpoint_build() {
+ now=$(date +%s)
+ if [[ $((starttime + 3600)) -lt ${now} ]]; then
+ upload_all
+ starttime=${now}
+ fi
+}
+
+
+
+if [[ -f ${LOCKFILE} ]] ; then
+ echo "lockfile ${LOCKFILE} exists, aborting"
+ exit 111
+fi
+touch ${LOCKFILE} || exit 112
+
+verify_dnssec
+
+echo Starting run at $(date -u) > ${TMPFILE}
+
+echo Syncing host &>> ${TMPFILE}
+
+emerge --sync -q &>> ${TMPFILE}
+
+anyfail=0
+
+starttime=$(date +%s)
+
+exec {BASH_XTRACEFD}>> ${TMPFILE}
+set -x
+
+nspawn_command=(systemd-nspawn --bind /var/cache/distfiles --bind-ro
/var/db/repos/gentoo --tmpfs=/var/tmp:mode=1777,size=${TMPFS_SIZE}g)
+for n in "${NSPAWN_NAMES[@]}" ; do
+ machinedir=/var/lib/machines/${n}
+ echo Machine ${n} &>> ${TMPFILE}
+ echo &>> ${TMPFILE}
+ cd ${machinedir}/etc/binhost &>> ${TMPFILE}
+ git reset --hard &>> ${TMPFILE}
+ git pull &>> ${TMPFILE}
+ cd /root &>> ${TMPFILE}
+ "${nspawn_command[@]}" -M ${n} /root/bin/run-update &>> ${TMPFILE}
+ ret=$?
+ let "anyfail+=${ret}"
+ checkpoint_build
+ if [[ ${ret} = 0 ]]; then
+ builder=/etc/$(readlink ${machinedir}/etc/binhost.this)/portage
+ echo "Starting variant builds for ${machinedir}/${builder}..."
&>> ${TMPFILE}
+ for variant in ${machinedir}/${builder}/variants/*; do
+ [[ -d ${variant} ]] || break
+ echo "Variant: ${variant}" &>> ${TMPFILE}
+ "${nspawn_command[@]}" --ephemeral --bind
${machinedir}/var/cache/binpkgs:/var/cache/binpkgs -M ${n} /root/bin/run-update
${variant##*/} &>> ${TMPFILE}
+ let "anyfail+=$?"
+ checkpoint_build
+ done
+ fi
+done
+set +x
+
+
+upload_all
+
+
+if [[ ${anyfail} -gt 0 ]] ; then
+
+ send_email "Update failed" "Binhost ${BINHOST_NAME} update failed in at
least one nspawn" ${TMPFILE}
+
+fi
+
+
+rm ${LOCKFILE}
diff --git a/builders/tintin/fstab.inc b/builders/tintin/fstab.inc
new file mode 100644
index 0000000..8027800
--- /dev/null
+++ b/builders/tintin/fstab.inc
@@ -0,0 +1,10 @@
+# for the binhosts, mount package dirs together (per abi)
+
+/var/lib/machines/binhost-amd64-x86-64-kde-23/var/cache/binpkgs
/var/lib/machines/binhost-amd64-x86-64-gnome-23/var/cache/binpkgs bind bind 0 0
+/var/lib/machines/binhost-amd64-x86-64-kde-23/var/cache/binpkgs
/var/lib/machines/binhost-amd64-x86-64-server-23/var/cache/binpkgs bind bind 0 0
+/var/lib/machines/binhost-amd64-x86-64-kde-23/var/cache/binpkgs
/var/lib/machines/binhost-amd64-x86-64-openrc-23/var/cache/binpkgs bind bind 0 0
+
+/var/lib/machines/binhost-amd64-x86-64-v3-kde-23/var/cache/binpkgs
/var/lib/machines/binhost-amd64-x86-64-v3-gnome-23/var/cache/binpkgs bind bind
0 0
+/var/lib/machines/binhost-amd64-x86-64-v3-kde-23/var/cache/binpkgs
/var/lib/machines/binhost-amd64-x86-64-v3-server-23/var/cache/binpkgs bind bind
0 0
+/var/lib/machines/binhost-amd64-x86-64-v3-kde-23/var/cache/binpkgs
/var/lib/machines/binhost-amd64-x86-64-v3-openrc-23/var/cache/binpkgs bind bind
0 0
+
diff --git a/builders/tintin/gnome-v3-23/portage/env/lto.conf
b/builders/tintin/gnome-v3-23/portage/env/lto.conf
new file mode 100644
index 0000000..37647dd
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/env/lto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -flto"
+CXXFLAGS="${CXXFLAGS} -flto"
+FCFLAGS="${FCFLAGS} -flto"
+FFLAGS="${FFLAGS} -flto"
+LDFLAGS="${LDFLAGS} -flto"
diff --git a/builders/tintin/gnome-v3-23/portage/env/nolto.conf
b/builders/tintin/gnome-v3-23/portage/env/nolto.conf
new file mode 100644
index 0000000..4f1f356
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/env/nolto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -fno-lto"
+CXXFLAGS="${CXXFLAGS} -fno-lto"
+FCFLAGS="${FCFLAGS} -fno-lto"
+FFLAGS="${FFLAGS} -fno-lto"
+LDFLAGS="${LDFLAGS} -fno-lto"
diff --git a/builders/tintin/gnome-v3-23/portage/make.conf
b/builders/tintin/gnome-v3-23/portage/make.conf
new file mode 100644
index 0000000..6391bc8
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/make.conf
@@ -0,0 +1,52 @@
+# These settings were set by the catalyst build script that automatically
+# built this stage.
+# Please consult /usr/share/portage/config/make.conf.example for a more
+# detailed example.
+
+# For now, we enforce LTO warnings but only enable LTO for certain packages.
+LTOFLAGS="-Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
+COMMON_FLAGS="-O2 -pipe -march=x86-64-v3 ${LTOFLAGS}"
+CFLAGS="${COMMON_FLAGS}"
+CXXFLAGS="${COMMON_FLAGS}"
+FCFLAGS="${COMMON_FLAGS}"
+FFLAGS="${COMMON_FLAGS}"
+
+LDFLAGS="${LDFLAGS} ${LTOFLAGS}"
+
+# NOTE: This stage was built with the bindist Use flag enabled
+PORTDIR="/var/db/repos/gentoo"
+DISTDIR="/var/cache/distfiles"
+PKGDIR="/var/cache/binpkgs"
+
+# This sets the language of build output to English.
+# Please keep this setting intact when reporting bugs.
+LC_MESSAGES=C
+
+MAKEOPTS="-j32 -l64"
+
+EMERGE_DEFAULT_OPTS="--jobs 20 --load-average 64 --quiet --keep-going
--binpkg-respect-use --usepkg --with-bdeps=y --color n --nospinner"
+
+FEATURES="binpkg-multi-instance buildpkg compress-index -network-sandbox
notitles"
+
+PORTAGE_BINHOST_TTL="3600"
+BINPKG_FORMAT="gpkg"
+BINPKG_COMPRESS="xz"
+
+USE="bindist cet lto pgo native-extensions"
+
+ACCEPT_RESTRICT="* -bindist"
+
+ACCEPT_LICENSE="@FREE MPEG-4"
+
+LC_ALL="en_US.utf8"
+
+# x86-64-v1:
+CPU_FLAGS_X86_v1="cmov cx8 fpu fxsr mmx osfxsr sce mmxext sse sse2"
+
+# x86-64-v2:
+CPU_FLAGS_X86_v2="${CPU_FLAGS_X86_v1} cmpxchg16b lahf_sahf popcnt sse3 sse4_1
sse4_2 ssse3"
+
+# x86-64-v3:
+CPU_FLAGS_X86_v3="${CPU_FLAGS_X86_v2} avx avx2 bmi1 bmi2 f16c fma3 lzcnt movbe
osxsave"
+
+CPU_FLAGS_X86=${CPU_FLAGS_X86_v3}
diff --git a/builders/tintin/gnome-v3-23/portage/make.profile
b/builders/tintin/gnome-v3-23/portage/make.profile
new file mode 120000
index 0000000..2b817fe
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/make.profile
@@ -0,0 +1 @@
+/var/db/repos/gentoo/profiles/default/linux/amd64/23.0/desktop/gnome/systemd
\ No newline at end of file
diff --git a/builders/tintin/gnome-v3-23/portage/package.env/lto
b/builders/tintin/gnome-v3-23/portage/package.env/lto
new file mode 100644
index 0000000..30a3c07
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.env/lto
@@ -0,0 +1,3 @@
+dev-lang/python lto.conf
+sys-devel/* lto.conf
+www-client/firefox lto.conf
diff --git a/builders/tintin/gnome-v3-23/portage/package.mask/prebuilt-bin
b/builders/tintin/gnome-v3-23/portage/package.mask/prebuilt-bin
new file mode 100644
index 0000000..6d8e24a
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.mask/prebuilt-bin
@@ -0,0 +1 @@
+dev-lang/rust-bin
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/bindist
b/builders/tintin/gnome-v3-23/portage/package.use/bindist
new file mode 100644
index 0000000..b75a197
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/bindist
@@ -0,0 +1,2 @@
+
+net-voip/telepathy-gabble gnutls
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/blender
b/builders/tintin/gnome-v3-23/portage/package.use/blender
new file mode 100644
index 0000000..d2c15e1
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/blender
@@ -0,0 +1,7 @@
+media-libs/freetype brotli
+media-video/ffmpeg lame opus theora vpx
+
+# circ
+media-libs/opencolorio -opengl
+
+sys-devel/gcc openmp
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/dist-kernel
b/builders/tintin/gnome-v3-23/portage/package.use/dist-kernel
new file mode 100644
index 0000000..7e6ada4
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/dist-kernel
@@ -0,0 +1 @@
+*/* dist-kernel
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/fixed
b/builders/tintin/gnome-v3-23/portage/package.use/fixed
new file mode 100644
index 0000000..9574ec7
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/fixed
@@ -0,0 +1,6 @@
+# 26f47f5c7df6edda39ff1febc821f1f8e1803321
+sys-apps/dbus user-session
+
+
+# todo
+media-libs/freetype harfbuzz
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/inkscape
b/builders/tintin/gnome-v3-23/portage/package.use/inkscape
new file mode 100644
index 0000000..4b2df36
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/inkscape
@@ -0,0 +1 @@
+dev-python/pillow webp
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/lxqt
b/builders/tintin/gnome-v3-23/portage/package.use/lxqt
new file mode 100644
index 0000000..fdf4012
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/lxqt
@@ -0,0 +1,3 @@
+dev-qt/qt5compat qml
+dev-qt/qtmultimedia qml
+kde-frameworks/kconfig qml
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/meson-ci
b/builders/tintin/gnome-v3-23/portage/package.use/meson-ci
new file mode 100644
index 0000000..4d21591
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/meson-ci
@@ -0,0 +1,3 @@
+dev-libs/boost python
+sys-cluster/openmpi fortran
+sci-libs/hdf5 cxx fortran
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/multilib
b/builders/tintin/gnome-v3-23/portage/package.use/multilib
new file mode 100644
index 0000000..d025015
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/multilib
@@ -0,0 +1,32 @@
+dev-libs/icu abi_x86_32
+llvm-core/libclc abi_x86_32
+dev-libs/libffi abi_x86_32
+dev-libs/libxml2 abi_x86_32
+dev-ml/llvm-ocaml abi_x86_32
+dev-python/clang-python abi_x86_32
+dev-python/lit abi_x86_32
+dev-util/lldb abi_x86_32
+llvm-core/clang abi_x86_32
+llvm-core/clang-common abi_x86_32
+llvm-core/clang-runtime abi_x86_32
+llvm-core/clang-toolchain-symlinks abi_x86_32
+llvm-core/lld abi_x86_32
+llvm-core/lld-toolchain-symlinks abi_x86_32
+llvm-core/llvm abi_x86_32
+llvm-core/llvm-common abi_x86_32
+llvm-core/llvm-toolchain-symlinks abi_x86_32
+llvm-core/llvmgold abi_x86_32
+llvm-runtimes/compiler-rt abi_x86_32
+llvm-runtimes/compiler-rt-sanitizers abi_x86_32
+sys-libs/gpm abi_x86_32
+sys-libs/libcxx abi_x86_32
+sys-libs/libcxxabi abi_x86_32
+llvm-runtimes/openmp abi_x86_32
+sys-libs/llvm-libunwind abi_x86_32
+sys-libs/ncurses abi_x86_32 -gpm
+sys-libs/zlib abi_x86_32
+virtual/zlib abi_x86_32
+
+# for 23.0
+app-arch/xz-utils abi_x86_32
+app-arch/zstd abi_x86_32
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/pgo
b/builders/tintin/gnome-v3-23/portage/package.use/pgo
new file mode 100644
index 0000000..07b62df
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/pgo
@@ -0,0 +1,2 @@
+# needed by firefox
+x11-base/xorg-server xvfb
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/queued
b/builders/tintin/gnome-v3-23/portage/package.use/queued
new file mode 100644
index 0000000..49491b2
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/queued
@@ -0,0 +1 @@
+media-libs/libvpx postproc
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/rust
b/builders/tintin/gnome-v3-23/portage/package.use/rust
new file mode 100644
index 0000000..471adda
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/rust
@@ -0,0 +1,2 @@
+dev-lang/rust clippy rustfmt
+dev-lang/rust mrustc-bootstrap
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/slim
b/builders/tintin/gnome-v3-23/portage/package.use/slim
new file mode 100644
index 0000000..d84530e
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/slim
@@ -0,0 +1 @@
+dev-qt/qtwebengine -pulseaudio -screencast
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/virt-manager
b/builders/tintin/gnome-v3-23/portage/package.use/virt-manager
new file mode 100644
index 0000000..7c86c53
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/virt-manager
@@ -0,0 +1,5 @@
+# not built by any binhost except when libvirt depends on it
+net-dns/dnsmasq script
+net-misc/spice-gtk usbredir
+# built by every binhost, with identical flag coverage
+net-libs/gnutls tools pkcs11
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/xfce4
b/builders/tintin/gnome-v3-23/portage/package.use/xfce4
new file mode 100644
index 0000000..47dd0b9
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/xfce4
@@ -0,0 +1 @@
+dev-libs/libdbusmenu gtk3
diff --git a/builders/tintin/gnome-v3-23/portage/package.use/zlib
b/builders/tintin/gnome-v3-23/portage/package.use/zlib
new file mode 100644
index 0000000..b934da8
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/package.use/zlib
@@ -0,0 +1 @@
+sys-libs/zlib minizip
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/debug/package.use/debug
b/builders/tintin/gnome-v3-23/portage/variants/debug/package.use/debug
new file mode 100644
index 0000000..c1256bb
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/debug/package.use/debug
@@ -0,0 +1,6 @@
+llvm-core/* debug
+llvm-runtimes/* debug
+
+sys-devel/gcc debug
+
+dev-lang/python debug
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/gccfrontends/package.use/gcc-frontends
b/builders/tintin/gnome-v3-23/portage/variants/gccfrontends/package.use/gcc-frontends
new file mode 100644
index 0000000..f7d9ab7
--- /dev/null
+++
b/builders/tintin/gnome-v3-23/portage/variants/gccfrontends/package.use/gcc-frontends
@@ -0,0 +1,2 @@
+sys-devel/gcc ada d jit
+>=sys-devel/gcc-13 ada objc objc++
diff --git a/builders/tintin/gnome-v3-23/portage/variants/gccfrontends/world
b/builders/tintin/gnome-v3-23/portage/variants/gccfrontends/world
new file mode 100644
index 0000000..5e2737d
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/gccfrontends/world
@@ -0,0 +1,4 @@
+=dev-lang/ada-bootstrap-11
+sys-devel/gcc:12
+sys-devel/gcc:13
+sys-devel/gcc:14
diff --git a/builders/tintin/gnome-v3-23/portage/variants/lucky/.run_marker
b/builders/tintin/gnome-v3-23/portage/variants/lucky/.run_marker
new file mode 100644
index 0000000..722c3eb
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/lucky/.run_marker
@@ -0,0 +1 @@
+I'm feeling lucky!
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/nobluetooth/package.use/nobluetooth
b/builders/tintin/gnome-v3-23/portage/variants/nobluetooth/package.use/nobluetooth
new file mode 100644
index 0000000..75f37fd
--- /dev/null
+++
b/builders/tintin/gnome-v3-23/portage/variants/nobluetooth/package.use/nobluetooth
@@ -0,0 +1 @@
+*/* -bluetooth
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/nopulse/package.use/nopulse
b/builders/tintin/gnome-v3-23/portage/variants/nopulse/package.use/nopulse
new file mode 100644
index 0000000..3f33baa
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/nopulse/package.use/nopulse
@@ -0,0 +1 @@
+*/* -pulseaudio -screencast
diff --git a/builders/tintin/gnome-v3-23/portage/variants/novala/buildpkgonly
b/builders/tintin/gnome-v3-23/portage/variants/novala/buildpkgonly
new file mode 100755
index 0000000..465f80d
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/novala/buildpkgonly
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+equery hasuse -F '$cp:$slot' vala | xargs emerge -1
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/novala/package.use/novala
b/builders/tintin/gnome-v3-23/portage/variants/novala/package.use/novala
new file mode 100644
index 0000000..a28e144
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/novala/package.use/novala
@@ -0,0 +1 @@
+*/* -vala
diff --git a/builders/tintin/gnome-v3-23/portage/variants/novala/world.remove
b/builders/tintin/gnome-v3-23/portage/variants/novala/world.remove
new file mode 100644
index 0000000..e615ce3
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/novala/world.remove
@@ -0,0 +1,3 @@
+gnome-base/gnome
+gnome-base/gnome-extra-apps
+mate-base/mate
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/nowayland/package.use/nowayland
b/builders/tintin/gnome-v3-23/portage/variants/nowayland/package.use/nowayland
new file mode 100644
index 0000000..3e192a2
--- /dev/null
+++
b/builders/tintin/gnome-v3-23/portage/variants/nowayland/package.use/nowayland
@@ -0,0 +1,5 @@
+*/* -wayland
+media-gfx/blender -gnome
+
+# automagic dependency workaround fixed in ~arch
+media-libs/clutter-gtk wayland
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/python3both/buildpkgonly
b/builders/tintin/gnome-v3-23/portage/variants/python3both/buildpkgonly
new file mode 100755
index 0000000..aae8e72
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/python3both/buildpkgonly
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+emerge -uDN --backtrack=100 @world
+
+# py 3.13 exclusive (non default)
+cat >> ../../make.conf <<- __EOF__
+ PYTHON_TARGETS="python3_12"
+ PYTHON_SINGLE_TARGET="python3_12"
+__EOF__
+
+EPYTHON=python3.12 emerge -uDN --backtrack=100 @world
+
+# USE is redundant, but works around https://bugs.gentoo.org/964705
+USE="-python" PYTHON_TARGETS= PYTHON_SINGLE_TARGET= emerge -1 $(pquery -I
--has-use python --attr use| awk '/-python[ $]/{print "="$1}' | sed
'/samba/d;/ldb/d;/tdb/d;/tevent/d;/qemu/d')
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/python3both/make.conf.footer
b/builders/tintin/gnome-v3-23/portage/variants/python3both/make.conf.footer
new file mode 100644
index 0000000..255ab7c
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/python3both/make.conf.footer
@@ -0,0 +1,2 @@
+PYTHON_TARGETS="python3_12 python3_13"
+PYTHON_SINGLE_TARGET="python3_12"
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/python3both/package.use/python3both
b/builders/tintin/gnome-v3-23/portage/variants/python3both/package.use/python3both
new file mode 100644
index 0000000..e7a834f
--- /dev/null
+++
b/builders/tintin/gnome-v3-23/portage/variants/python3both/package.use/python3both
@@ -0,0 +1,2 @@
+# unavailable for 3.13
+media-gfx/blender PYTHON_SINGLE_TARGET: python3_12
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/python3both/profile/use.stable.mask
b/builders/tintin/gnome-v3-23/portage/variants/python3both/profile/use.stable.mask
new file mode 100644
index 0000000..d58f7bb
--- /dev/null
+++
b/builders/tintin/gnome-v3-23/portage/variants/python3both/profile/use.stable.mask
@@ -0,0 +1,2 @@
+-python_targets_python3_13
+-python_single_target_python3_13
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/slim/package.use/slim2
b/builders/tintin/gnome-v3-23/portage/variants/slim/package.use/slim2
new file mode 100644
index 0000000..a2f06fb
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/slim/package.use/slim2
@@ -0,0 +1,6 @@
+*/* -bluetooth -gnome-online-accounts -pulseaudio -wayland
+app-office/libreoffice -eds -gstreamer
+media-gfx/blender -gnome
+
+# automagic dependency workaround fixed in ~arch
+media-libs/clutter-gtk wayland
diff --git a/builders/tintin/gnome-v3-23/portage/variants/unstable/buildpkgonly
b/builders/tintin/gnome-v3-23/portage/variants/unstable/buildpkgonly
new file mode 100755
index 0000000..c97cc92
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/portage/variants/unstable/buildpkgonly
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -e
+
+# We must use buildpkgonly here since we do not want to actually install
+# unstable packages. buildpkgonly will fatally error if any dependencies aren't
+# installed.
+emerge --buildpkgonly sys-devel/gcc:{16,15,14,13,12}
+# ... and clean it up
+rm /etc/portage/package.accept_keywords/gcc
diff --git
a/builders/tintin/gnome-v3-23/portage/variants/unstable/package.accept_keywords/gcc
b/builders/tintin/gnome-v3-23/portage/variants/unstable/package.accept_keywords/gcc
new file mode 100644
index 0000000..faed33e
--- /dev/null
+++
b/builders/tintin/gnome-v3-23/portage/variants/unstable/package.accept_keywords/gcc
@@ -0,0 +1,2 @@
+sys-devel/gcc ~amd64
+<sys-devel/gcc-16.0.9999:16 **
diff --git a/builders/tintin/gnome-v3-23/run-update
b/builders/tintin/gnome-v3-23/run-update
new file mode 100755
index 0000000..51bd9f6
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/run-update
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# if one thing fails, abort entirely
+set -e
+
+to_install=(world)
+
+if [[ $1 = *lucky ]]; then
+ pquery -F '{category}/{package}' --max -r gentoo | grep -E -v
'^(acct|virtual|sec)-' | sort -u > /tmp/stable
+ pquery --installed -F '{category}/{package}' | sort -u > /tmp/installed
+ comm -23 /tmp/stable /tmp/installed > /tmp/uninstalled-stable
+ sed -i 's/--binpkg-respect-use//' /etc/portage/make.conf
+
+ to_install=(--autounmask-write --autounmask-continue $(shuf -n3
/tmp/uninstalled-stable))
+elif [[ $1 ]]; then
+ pushd /etc/portage/variants/$1
+ while read -r -d '' line; do
+ dest=../../${line%.footer}
+ if [[ ${line} = world* ]]; then
+ dest=/var/lib/portage/world
+ fi
+
+ if [[ ${line} = world.remove ]]; then
+ emerge -C $(<"${line}")
+ elif [[ ${line} = *.footer ]]; then
+ cat "${line}" >> "${dest}"
+ else
+ mkdir -p "${dest%/*}"
+ cp "${line}" "${dest}"
+ fi
+ done < <(find . -type f -printf '%P\0')
+ if [[ -f buildpkgonly ]]; then
+ ./buildpkgonly
+ fi
+ popd
+fi
+
+emerge -uDN --changed-deps --backtrack=100 "${to_install[@]}"
+
+if [[ ! $1 ]]; then
+ emerge --depclean --quiet-unmerge-warn
+fi
+
+mapfile -t badlibs < <(portageq list_preserved_libs /)
+
+if (( ${#badlibs[@]} > 0 )); then
+ printf '%s\n' "WARNING: preserved-libs in binary packages!"
+ printf ' - %s\n' "${badlibs[@]}"
+ emerge -p @preserved-rebuild
+ exit 1
+fi
diff --git a/builders/tintin/gnome-v3-23/world
b/builders/tintin/gnome-v3-23/world
new file mode 100644
index 0000000..bcb6d46
--- /dev/null
+++ b/builders/tintin/gnome-v3-23/world
@@ -0,0 +1,61 @@
+app-admin/keepassxc
+app-containers/docker
+app-containers/earthly
+app-editors/emacs
+app-editors/nano
+app-editors/vim
+app-editors/zed
+app-emulation/virt-manager
+app-office/abiword
+app-office/gnucash
+app-office/libreoffice
+app-office/texstudio
+app-officeext/texmaths
+app-portage/eix
+app-portage/gentoolkit
+app-text/doxygen
+app-text/pdftk
+app-text/xournalpp
+dev-debug/dtrace
+dev-java/openjdk
+dev-lang/ada-bootstrap
+dev-lang/mono
+dev-lang/python:3.10
+dev-lang/python:3.11
+dev-lang/python:3.12
+dev-lang/python:3.13
+dev-lang/rust
+dev-qt/qtwebengine
+dev-tex/latex-beamer
+dev-util/libabigail
+dev-util/perf
+gnome-base/gnome
+gnome-base/gnome-extra-apps
+llvm-core/clang
+lxqt-base/lxqt-meta
+mail-client/thunderbird
+mate-base/mate
+media-gfx/engauge
+media-gfx/gimp
+media-gfx/gnuclad
+media-gfx/inkscape
+media-gfx/povray
+net-dialup/ppp
+net-firewall/fwbuilder
+net-irc/quassel
+net-misc/chrony
+net-misc/dhcpcd
+net-misc/networkmanager
+net-vpn/openvpn
+sci-libs/netcdf
+sci-visualization/gnuplot
+sci-visualization/gwyddion
+sci-visualization/spyview
+sys-apps/pkgcore
+sys-apps/portage
+sys-boot/grub
+sys-cluster/openmpi
+sys-devel/gcc:14
+dev-debug/gdb
+www-client/firefox
+xfce-base/xfce4-meta
diff --git a/builders/tintin/kde-v3-23/portage/env/lto.conf
b/builders/tintin/kde-v3-23/portage/env/lto.conf
new file mode 100644
index 0000000..37647dd
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/env/lto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -flto"
+CXXFLAGS="${CXXFLAGS} -flto"
+FCFLAGS="${FCFLAGS} -flto"
+FFLAGS="${FFLAGS} -flto"
+LDFLAGS="${LDFLAGS} -flto"
diff --git a/builders/tintin/kde-v3-23/portage/env/nolto.conf
b/builders/tintin/kde-v3-23/portage/env/nolto.conf
new file mode 100644
index 0000000..4f1f356
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/env/nolto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -fno-lto"
+CXXFLAGS="${CXXFLAGS} -fno-lto"
+FCFLAGS="${FCFLAGS} -fno-lto"
+FFLAGS="${FFLAGS} -fno-lto"
+LDFLAGS="${LDFLAGS} -fno-lto"
diff --git a/builders/tintin/kde-v3-23/portage/make.conf
b/builders/tintin/kde-v3-23/portage/make.conf
new file mode 100644
index 0000000..4a53383
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/make.conf
@@ -0,0 +1,52 @@
+# These settings were set by the catalyst build script that automatically
+# built this stage.
+# Please consult /usr/share/portage/config/make.conf.example for a more
+# detailed example.
+
+# For now, we enforce LTO warnings but only enable LTO for certain packages.
+LTOFLAGS="-Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
+COMMON_FLAGS="-O2 -pipe -march=x86-64-v3 ${LTOFLAGS}"
+CFLAGS="${COMMON_FLAGS}"
+CXXFLAGS="${COMMON_FLAGS}"
+FCFLAGS="${COMMON_FLAGS}"
+FFLAGS="${COMMON_FLAGS}"
+
+LDFLAGS="${LDFLAGS} ${LTOFLAGS}"
+
+# NOTE: This stage was built with the bindist Use flag enabled
+PORTDIR="/var/db/repos/gentoo"
+DISTDIR="/var/cache/distfiles"
+PKGDIR="/var/cache/binpkgs"
+
+# This sets the language of build output to English.
+# Please keep this setting intact when reporting bugs.
+LC_MESSAGES=C
+
+MAKEOPTS="-j32 -l64"
+
+EMERGE_DEFAULT_OPTS="--jobs 20 --load-average 64 --quiet --keep-going
--binpkg-respect-use --usepkg --with-bdeps=y --color n --nospinner"
+
+FEATURES="binpkg-multi-instance buildpkg compress-index -network-sandbox
notitles"
+
+PORTAGE_BINHOST_TTL="3600"
+BINPKG_FORMAT="gpkg"
+BINPKG_COMPRESS="xz"
+
+USE="bindist cet native-extensions"
+
+ACCEPT_RESTRICT="* -bindist"
+
+ACCEPT_LICENSE="@FREE MPEG-4"
+
+LC_ALL="en_US.utf8"
+
+# x86-64-v1:
+CPU_FLAGS_X86_v1="cmov cx8 fpu fxsr mmx osfxsr sce mmxext sse sse2"
+
+# x86-64-v2:
+CPU_FLAGS_X86_v2="${CPU_FLAGS_X86_v1} cmpxchg16b lahf_sahf popcnt sse3 sse4_1
sse4_2 ssse3"
+
+# x86-64-v3:
+CPU_FLAGS_X86_v3="${CPU_FLAGS_X86_v2} avx avx2 bmi1 bmi2 f16c fma3 lzcnt movbe
osxsave"
+
+CPU_FLAGS_X86=${CPU_FLAGS_X86_v3}
diff --git a/builders/tintin/kde-v3-23/portage/make.profile
b/builders/tintin/kde-v3-23/portage/make.profile
new file mode 120000
index 0000000..536e7ef
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/make.profile
@@ -0,0 +1 @@
+/var/db/repos/gentoo/profiles/default/linux/amd64/23.0/desktop/plasma/systemd
\ No newline at end of file
diff --git a/builders/tintin/kde-v3-23/portage/package.env/lto
b/builders/tintin/kde-v3-23/portage/package.env/lto
new file mode 100644
index 0000000..30a3c07
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.env/lto
@@ -0,0 +1,3 @@
+dev-lang/python lto.conf
+sys-devel/* lto.conf
+www-client/firefox lto.conf
diff --git a/builders/tintin/kde-v3-23/portage/package.mask/prebuilt-bin
b/builders/tintin/kde-v3-23/portage/package.mask/prebuilt-bin
new file mode 100644
index 0000000..6d8e24a
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.mask/prebuilt-bin
@@ -0,0 +1 @@
+dev-lang/rust-bin
diff --git a/builders/tintin/kde-v3-23/portage/package.use/bindist
b/builders/tintin/kde-v3-23/portage/package.use/bindist
new file mode 100644
index 0000000..b75a197
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/bindist
@@ -0,0 +1,2 @@
+
+net-voip/telepathy-gabble gnutls
diff --git a/builders/tintin/kde-v3-23/portage/package.use/calibre
b/builders/tintin/kde-v3-23/portage/package.use/calibre
new file mode 100644
index 0000000..57cb853
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/calibre
@@ -0,0 +1 @@
+dev-python/pyqt6 quick
diff --git a/builders/tintin/kde-v3-23/portage/package.use/dist-kernel
b/builders/tintin/kde-v3-23/portage/package.use/dist-kernel
new file mode 100644
index 0000000..7e6ada4
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/dist-kernel
@@ -0,0 +1 @@
+*/* dist-kernel
diff --git a/builders/tintin/kde-v3-23/portage/package.use/ffmpeg
b/builders/tintin/kde-v3-23/portage/package.use/ffmpeg
new file mode 100644
index 0000000..aad80a4
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/ffmpeg
@@ -0,0 +1 @@
+media-video/ffmpeg libass
diff --git a/builders/tintin/kde-v3-23/portage/package.use/fixed
b/builders/tintin/kde-v3-23/portage/package.use/fixed
new file mode 100644
index 0000000..9574ec7
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/fixed
@@ -0,0 +1,6 @@
+# 26f47f5c7df6edda39ff1febc821f1f8e1803321
+sys-apps/dbus user-session
+
+
+# todo
+media-libs/freetype harfbuzz
diff --git a/builders/tintin/kde-v3-23/portage/package.use/gcc
b/builders/tintin/kde-v3-23/portage/package.use/gcc
new file mode 100644
index 0000000..84862d7
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/gcc
@@ -0,0 +1,2 @@
+sys-devel/gcc lto pgo
+sys-devel/binutils pgo
diff --git a/builders/tintin/kde-v3-23/portage/package.use/kde
b/builders/tintin/kde-v3-23/portage/package.use/kde
new file mode 100644
index 0000000..f7a73ab
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/kde
@@ -0,0 +1,4 @@
+# KDE requirements not met by the profile
+
+# akonadi
+dev-qt/qtbase mysql
diff --git a/builders/tintin/kde-v3-23/portage/package.use/klayout
b/builders/tintin/kde-v3-23/portage/package.use/klayout
new file mode 100644
index 0000000..11da39c
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/klayout
@@ -0,0 +1,2 @@
+# Needed for sci-electronics/klayout
+dev-qt/qttools designer
diff --git a/builders/tintin/kde-v3-23/portage/package.use/mate
b/builders/tintin/kde-v3-23/portage/package.use/mate
new file mode 100644
index 0000000..47dd0b9
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/mate
@@ -0,0 +1 @@
+dev-libs/libdbusmenu gtk3
diff --git a/builders/tintin/kde-v3-23/portage/package.use/python3-incompat
b/builders/tintin/kde-v3-23/portage/package.use/python3-incompat
new file mode 100644
index 0000000..871a663
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/python3-incompat
@@ -0,0 +1,2 @@
+# unavailable for 3.13
+<llvm-core/clang-18 PYTHON_SINGLE_TARGET: python3_12
diff --git a/builders/tintin/kde-v3-23/portage/package.use/queued
b/builders/tintin/kde-v3-23/portage/package.use/queued
new file mode 100644
index 0000000..f61935d
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/queued
@@ -0,0 +1,3 @@
+media-libs/libvpx postproc
+dev-qt/qtpositioning geoclue
+dev-python/pillow webp
diff --git a/builders/tintin/kde-v3-23/portage/package.use/rust
b/builders/tintin/kde-v3-23/portage/package.use/rust
new file mode 100644
index 0000000..2b1a617
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/package.use/rust
@@ -0,0 +1 @@
+dev-lang/rust mrustc-bootstrap
diff --git a/builders/tintin/kde-v3-23/portage/variants/debug/package.use/debug
b/builders/tintin/kde-v3-23/portage/variants/debug/package.use/debug
new file mode 100644
index 0000000..c1256bb
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/variants/debug/package.use/debug
@@ -0,0 +1,6 @@
+llvm-core/* debug
+llvm-runtimes/* debug
+
+sys-devel/gcc debug
+
+dev-lang/python debug
diff --git
a/builders/tintin/kde-v3-23/portage/variants/gcc-nopgo/package.use/gcc
b/builders/tintin/kde-v3-23/portage/variants/gcc-nopgo/package.use/gcc
new file mode 100644
index 0000000..6e7c460
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/variants/gcc-nopgo/package.use/gcc
@@ -0,0 +1 @@
+# revert default pgo/lto for binpkg coverage
diff --git a/builders/tintin/kde-v3-23/portage/variants/lucky/.run_marker
b/builders/tintin/kde-v3-23/portage/variants/lucky/.run_marker
new file mode 100644
index 0000000..722c3eb
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/variants/lucky/.run_marker
@@ -0,0 +1 @@
+I'm feeling lucky!
diff --git
a/builders/tintin/kde-v3-23/portage/variants/python3both/buildpkgonly
b/builders/tintin/kde-v3-23/portage/variants/python3both/buildpkgonly
new file mode 100755
index 0000000..c855314
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/variants/python3both/buildpkgonly
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+emerge -uDN --backtrack=100 @world
+
+# py 3.13 exclusive (non default)
+cat >> ../../make.conf <<- __EOF__
+ PYTHON_TARGETS="python3_12"
+ PYTHON_SINGLE_TARGET="python3_12"
+__EOF__
+
+EPYTHON=python3.12 emerge -uDN --backtrack=100 @world
+
+# USE is redundant, but works around https://bugs.gentoo.org/964705
+USE="-python" PYTHON_TARGETS= PYTHON_SINGLE_TARGET= emerge -1 $(pquery -I
--has-use python --attr use| awk '/-python[ $]/{print "="$1}')
diff --git
a/builders/tintin/kde-v3-23/portage/variants/python3both/make.conf.footer
b/builders/tintin/kde-v3-23/portage/variants/python3both/make.conf.footer
new file mode 100644
index 0000000..255ab7c
--- /dev/null
+++ b/builders/tintin/kde-v3-23/portage/variants/python3both/make.conf.footer
@@ -0,0 +1,2 @@
+PYTHON_TARGETS="python3_12 python3_13"
+PYTHON_SINGLE_TARGET="python3_12"
diff --git
a/builders/tintin/kde-v3-23/portage/variants/python3both/package.use/python3both
b/builders/tintin/kde-v3-23/portage/variants/python3both/package.use/python3both
new file mode 100644
index 0000000..871a663
--- /dev/null
+++
b/builders/tintin/kde-v3-23/portage/variants/python3both/package.use/python3both
@@ -0,0 +1,2 @@
+# unavailable for 3.13
+<llvm-core/clang-18 PYTHON_SINGLE_TARGET: python3_12
diff --git
a/builders/tintin/kde-v3-23/portage/variants/python3both/profile/use.stable.mask
b/builders/tintin/kde-v3-23/portage/variants/python3both/profile/use.stable.mask
new file mode 100644
index 0000000..d58f7bb
--- /dev/null
+++
b/builders/tintin/kde-v3-23/portage/variants/python3both/profile/use.stable.mask
@@ -0,0 +1,2 @@
+-python_targets_python3_13
+-python_single_target_python3_13
diff --git a/builders/tintin/kde-v3-23/run-update
b/builders/tintin/kde-v3-23/run-update
new file mode 100755
index 0000000..51bd9f6
--- /dev/null
+++ b/builders/tintin/kde-v3-23/run-update
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# if one thing fails, abort entirely
+set -e
+
+to_install=(world)
+
+if [[ $1 = *lucky ]]; then
+ pquery -F '{category}/{package}' --max -r gentoo | grep -E -v
'^(acct|virtual|sec)-' | sort -u > /tmp/stable
+ pquery --installed -F '{category}/{package}' | sort -u > /tmp/installed
+ comm -23 /tmp/stable /tmp/installed > /tmp/uninstalled-stable
+ sed -i 's/--binpkg-respect-use//' /etc/portage/make.conf
+
+ to_install=(--autounmask-write --autounmask-continue $(shuf -n3
/tmp/uninstalled-stable))
+elif [[ $1 ]]; then
+ pushd /etc/portage/variants/$1
+ while read -r -d '' line; do
+ dest=../../${line%.footer}
+ if [[ ${line} = world* ]]; then
+ dest=/var/lib/portage/world
+ fi
+
+ if [[ ${line} = world.remove ]]; then
+ emerge -C $(<"${line}")
+ elif [[ ${line} = *.footer ]]; then
+ cat "${line}" >> "${dest}"
+ else
+ mkdir -p "${dest%/*}"
+ cp "${line}" "${dest}"
+ fi
+ done < <(find . -type f -printf '%P\0')
+ if [[ -f buildpkgonly ]]; then
+ ./buildpkgonly
+ fi
+ popd
+fi
+
+emerge -uDN --changed-deps --backtrack=100 "${to_install[@]}"
+
+if [[ ! $1 ]]; then
+ emerge --depclean --quiet-unmerge-warn
+fi
+
+mapfile -t badlibs < <(portageq list_preserved_libs /)
+
+if (( ${#badlibs[@]} > 0 )); then
+ printf '%s\n' "WARNING: preserved-libs in binary packages!"
+ printf ' - %s\n' "${badlibs[@]}"
+ emerge -p @preserved-rebuild
+ exit 1
+fi
diff --git a/builders/tintin/kde-v3-23/world b/builders/tintin/kde-v3-23/world
new file mode 100644
index 0000000..3ceede3
--- /dev/null
+++ b/builders/tintin/kde-v3-23/world
@@ -0,0 +1,61 @@
+app-admin/keepassxc
+app-containers/docker
+app-containers/earthly
+app-editors/emacs
+app-editors/kile
+app-editors/nano
+app-office/abiword
+app-office/gnucash
+app-office/kmymoney
+app-office/libreoffice
+app-office/scribus
+app-office/texstudio
+app-officeext/texmaths
+app-portage/eix
+app-portage/gentoolkit
+app-text/calibre
+app-text/pdftk
+app-text/xournalpp
+dev-java/openjdk
+dev-lang/ada-bootstrap
+dev-lang/mono
+dev-lang/rust
+dev-tex/latex-beamer
+dev-util/kdevelop
+kde-apps/kde-apps-meta
+kde-apps/kdepim-meta
+kde-plasma/plasma-meta
+llvm-core/clang:15
+llvm-core/clang:16
+llvm-core/clang:17
+llvm-core/clang:18
+llvm-core/clang:19
+llvm-core/clang:20
+lxqt-base/lxqt-meta
+mate-base/mate
+media-gfx/engauge
+media-gfx/gimp
+media-gfx/gnuclad
+media-gfx/inkscape
+media-gfx/krita
+media-gfx/povray
+media-sound/strawberry
+media-video/kaffeine
+net-firewall/fwbuilder
+net-irc/quassel
+net-misc/chrony
+net-misc/dhcpcd
+net-misc/networkmanager
+net-vpn/openvpn
+sci-electronics/klayout
+sci-visualization/gnuplot
+sci-visualization/gwyddion
+sci-visualization/spyview
+sys-apps/pkgcore
+sys-apps/portage
+sys-auth/AusweisApp
+sys-devel/gcc:14
+dev-debug/gdb
+www-client/firefox
+www-client/qutebrowser
+www-servers/apache
diff --git a/builders/tintin/openrc-v3-23/portage/env/lto.conf
b/builders/tintin/openrc-v3-23/portage/env/lto.conf
new file mode 100644
index 0000000..37647dd
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/env/lto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -flto"
+CXXFLAGS="${CXXFLAGS} -flto"
+FCFLAGS="${FCFLAGS} -flto"
+FFLAGS="${FFLAGS} -flto"
+LDFLAGS="${LDFLAGS} -flto"
diff --git a/builders/tintin/openrc-v3-23/portage/env/nolto.conf
b/builders/tintin/openrc-v3-23/portage/env/nolto.conf
new file mode 100644
index 0000000..4f1f356
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/env/nolto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -fno-lto"
+CXXFLAGS="${CXXFLAGS} -fno-lto"
+FCFLAGS="${FCFLAGS} -fno-lto"
+FFLAGS="${FFLAGS} -fno-lto"
+LDFLAGS="${LDFLAGS} -fno-lto"
diff --git a/builders/tintin/openrc-v3-23/portage/make.conf
b/builders/tintin/openrc-v3-23/portage/make.conf
new file mode 100644
index 0000000..4a53383
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/make.conf
@@ -0,0 +1,52 @@
+# These settings were set by the catalyst build script that automatically
+# built this stage.
+# Please consult /usr/share/portage/config/make.conf.example for a more
+# detailed example.
+
+# For now, we enforce LTO warnings but only enable LTO for certain packages.
+LTOFLAGS="-Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
+COMMON_FLAGS="-O2 -pipe -march=x86-64-v3 ${LTOFLAGS}"
+CFLAGS="${COMMON_FLAGS}"
+CXXFLAGS="${COMMON_FLAGS}"
+FCFLAGS="${COMMON_FLAGS}"
+FFLAGS="${COMMON_FLAGS}"
+
+LDFLAGS="${LDFLAGS} ${LTOFLAGS}"
+
+# NOTE: This stage was built with the bindist Use flag enabled
+PORTDIR="/var/db/repos/gentoo"
+DISTDIR="/var/cache/distfiles"
+PKGDIR="/var/cache/binpkgs"
+
+# This sets the language of build output to English.
+# Please keep this setting intact when reporting bugs.
+LC_MESSAGES=C
+
+MAKEOPTS="-j32 -l64"
+
+EMERGE_DEFAULT_OPTS="--jobs 20 --load-average 64 --quiet --keep-going
--binpkg-respect-use --usepkg --with-bdeps=y --color n --nospinner"
+
+FEATURES="binpkg-multi-instance buildpkg compress-index -network-sandbox
notitles"
+
+PORTAGE_BINHOST_TTL="3600"
+BINPKG_FORMAT="gpkg"
+BINPKG_COMPRESS="xz"
+
+USE="bindist cet native-extensions"
+
+ACCEPT_RESTRICT="* -bindist"
+
+ACCEPT_LICENSE="@FREE MPEG-4"
+
+LC_ALL="en_US.utf8"
+
+# x86-64-v1:
+CPU_FLAGS_X86_v1="cmov cx8 fpu fxsr mmx osfxsr sce mmxext sse sse2"
+
+# x86-64-v2:
+CPU_FLAGS_X86_v2="${CPU_FLAGS_X86_v1} cmpxchg16b lahf_sahf popcnt sse3 sse4_1
sse4_2 ssse3"
+
+# x86-64-v3:
+CPU_FLAGS_X86_v3="${CPU_FLAGS_X86_v2} avx avx2 bmi1 bmi2 f16c fma3 lzcnt movbe
osxsave"
+
+CPU_FLAGS_X86=${CPU_FLAGS_X86_v3}
diff --git a/builders/tintin/openrc-v3-23/portage/make.profile
b/builders/tintin/openrc-v3-23/portage/make.profile
new file mode 120000
index 0000000..52b8803
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/make.profile
@@ -0,0 +1 @@
+/var/db/repos/gentoo/profiles/default/linux/amd64/23.0/desktop/gnome
\ No newline at end of file
diff --git a/builders/tintin/openrc-v3-23/portage/package.env/lto
b/builders/tintin/openrc-v3-23/portage/package.env/lto
new file mode 100644
index 0000000..30a3c07
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.env/lto
@@ -0,0 +1,3 @@
+dev-lang/python lto.conf
+sys-devel/* lto.conf
+www-client/firefox lto.conf
diff --git a/builders/tintin/openrc-v3-23/portage/package.mask/prebuilt-bin
b/builders/tintin/openrc-v3-23/portage/package.mask/prebuilt-bin
new file mode 100644
index 0000000..6d8e24a
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.mask/prebuilt-bin
@@ -0,0 +1 @@
+dev-lang/rust-bin
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/bindist
b/builders/tintin/openrc-v3-23/portage/package.use/bindist
new file mode 100644
index 0000000..b75a197
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/bindist
@@ -0,0 +1,2 @@
+
+net-voip/telepathy-gabble gnutls
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/blender
b/builders/tintin/openrc-v3-23/portage/package.use/blender
new file mode 100644
index 0000000..b2c229e
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/blender
@@ -0,0 +1,5 @@
+media-libs/freetype brotli
+media-video/ffmpeg lame opus theora vpx
+
+# circ
+media-libs/opencolorio -opengl
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/dist-kernel
b/builders/tintin/openrc-v3-23/portage/package.use/dist-kernel
new file mode 100644
index 0000000..7e6ada4
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/dist-kernel
@@ -0,0 +1 @@
+*/* dist-kernel
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/fixed
b/builders/tintin/openrc-v3-23/portage/package.use/fixed
new file mode 100644
index 0000000..9574ec7
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/fixed
@@ -0,0 +1,6 @@
+# 26f47f5c7df6edda39ff1febc821f1f8e1803321
+sys-apps/dbus user-session
+
+
+# todo
+media-libs/freetype harfbuzz
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/inkscape
b/builders/tintin/openrc-v3-23/portage/package.use/inkscape
new file mode 100644
index 0000000..4b2df36
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/inkscape
@@ -0,0 +1 @@
+dev-python/pillow webp
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/kde
b/builders/tintin/openrc-v3-23/portage/package.use/kde
new file mode 100644
index 0000000..93cefae
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/kde
@@ -0,0 +1,23 @@
+kde-frameworks/* qml
+kde-plasma/kwin lock
+kde-plasma/kwin-x11 lock
+media-plugins/gst-plugins-meta theora v4l
+media-video/ffmpeg libass
+dev-qt/* qml
+dev-qt/qtwebengine widgets
+dev-qt/qtscript scripttools
+dev-qt/qtsql mysql
+dev-qt/qtpositioning geoclue
+
+# Required by kde-apps/kdenlive
+media-libs/mlt ffmpeg frei0r
+media-libs/opencv features2d
+
+# Required by media-gfx/digikam
+media-libs/opencv contrib contribdnn
+
+# akonadi
+dev-qt/qtbase mysql
+
+# kgraphviewer/graphviz
+media-libs/gd fontconfig
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/llvm
b/builders/tintin/openrc-v3-23/portage/package.use/llvm
new file mode 100644
index 0000000..c75065b
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/llvm
@@ -0,0 +1,2 @@
+app-arch/xz-utils abi_x86_32
+app-arch/zstd abi_x86_32
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/multilib
b/builders/tintin/openrc-v3-23/portage/package.use/multilib
new file mode 100644
index 0000000..7d78185
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/multilib
@@ -0,0 +1,28 @@
+dev-libs/icu abi_x86_32
+llvm-core/libclc abi_x86_32
+dev-libs/libffi abi_x86_32
+dev-libs/libxml2 abi_x86_32
+dev-ml/llvm-ocaml abi_x86_32
+dev-python/clang-python abi_x86_32
+dev-python/lit abi_x86_32
+dev-util/lldb abi_x86_32
+llvm-core/clang abi_x86_32
+llvm-core/clang-common abi_x86_32
+llvm-core/clang-runtime abi_x86_32
+llvm-core/clang-toolchain-symlinks abi_x86_32
+llvm-core/lld abi_x86_32
+llvm-core/lld-toolchain-symlinks abi_x86_32
+llvm-core/llvm abi_x86_32
+llvm-core/llvm-common abi_x86_32
+llvm-core/llvm-toolchain-symlinks abi_x86_32
+llvm-core/llvmgold abi_x86_32
+llvm-runtimes/compiler-rt abi_x86_32
+llvm-runtimes/compiler-rt-sanitizers abi_x86_32
+sys-libs/gpm abi_x86_32
+sys-libs/libcxx abi_x86_32
+sys-libs/libcxxabi abi_x86_32
+llvm-runtimes/openmp abi_x86_32
+sys-libs/llvm-libunwind abi_x86_32
+sys-libs/ncurses abi_x86_32 -gpm
+sys-libs/zlib abi_x86_32
+virtual/zlib abi_x86_32
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/queued
b/builders/tintin/openrc-v3-23/portage/package.use/queued
new file mode 100644
index 0000000..49491b2
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/queued
@@ -0,0 +1 @@
+media-libs/libvpx postproc
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/rust
b/builders/tintin/openrc-v3-23/portage/package.use/rust
new file mode 100644
index 0000000..471adda
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/rust
@@ -0,0 +1,2 @@
+dev-lang/rust clippy rustfmt
+dev-lang/rust mrustc-bootstrap
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/xfce4
b/builders/tintin/openrc-v3-23/portage/package.use/xfce4
new file mode 100644
index 0000000..47dd0b9
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/xfce4
@@ -0,0 +1 @@
+dev-libs/libdbusmenu gtk3
diff --git a/builders/tintin/openrc-v3-23/portage/package.use/zlib
b/builders/tintin/openrc-v3-23/portage/package.use/zlib
new file mode 100644
index 0000000..b934da8
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/package.use/zlib
@@ -0,0 +1 @@
+sys-libs/zlib minizip
diff --git a/builders/tintin/openrc-v3-23/portage/variants/lucky/.run_marker
b/builders/tintin/openrc-v3-23/portage/variants/lucky/.run_marker
new file mode 100644
index 0000000..722c3eb
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/portage/variants/lucky/.run_marker
@@ -0,0 +1 @@
+I'm feeling lucky!
diff --git a/builders/tintin/openrc-v3-23/run-update
b/builders/tintin/openrc-v3-23/run-update
new file mode 100755
index 0000000..51bd9f6
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/run-update
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# if one thing fails, abort entirely
+set -e
+
+to_install=(world)
+
+if [[ $1 = *lucky ]]; then
+ pquery -F '{category}/{package}' --max -r gentoo | grep -E -v
'^(acct|virtual|sec)-' | sort -u > /tmp/stable
+ pquery --installed -F '{category}/{package}' | sort -u > /tmp/installed
+ comm -23 /tmp/stable /tmp/installed > /tmp/uninstalled-stable
+ sed -i 's/--binpkg-respect-use//' /etc/portage/make.conf
+
+ to_install=(--autounmask-write --autounmask-continue $(shuf -n3
/tmp/uninstalled-stable))
+elif [[ $1 ]]; then
+ pushd /etc/portage/variants/$1
+ while read -r -d '' line; do
+ dest=../../${line%.footer}
+ if [[ ${line} = world* ]]; then
+ dest=/var/lib/portage/world
+ fi
+
+ if [[ ${line} = world.remove ]]; then
+ emerge -C $(<"${line}")
+ elif [[ ${line} = *.footer ]]; then
+ cat "${line}" >> "${dest}"
+ else
+ mkdir -p "${dest%/*}"
+ cp "${line}" "${dest}"
+ fi
+ done < <(find . -type f -printf '%P\0')
+ if [[ -f buildpkgonly ]]; then
+ ./buildpkgonly
+ fi
+ popd
+fi
+
+emerge -uDN --changed-deps --backtrack=100 "${to_install[@]}"
+
+if [[ ! $1 ]]; then
+ emerge --depclean --quiet-unmerge-warn
+fi
+
+mapfile -t badlibs < <(portageq list_preserved_libs /)
+
+if (( ${#badlibs[@]} > 0 )); then
+ printf '%s\n' "WARNING: preserved-libs in binary packages!"
+ printf ' - %s\n' "${badlibs[@]}"
+ emerge -p @preserved-rebuild
+ exit 1
+fi
diff --git a/builders/tintin/openrc-v3-23/world
b/builders/tintin/openrc-v3-23/world
new file mode 100644
index 0000000..54ac745
--- /dev/null
+++ b/builders/tintin/openrc-v3-23/world
@@ -0,0 +1,47 @@
+app-admin/keepassxc
+app-containers/docker
+app-containers/earthly
+app-editors/emacs
+app-editors/nano
+app-editors/vim
+app-office/abiword
+app-office/gnucash
+app-office/libreoffice
+app-office/texstudio
+app-officeext/texmaths
+app-portage/eix
+app-portage/gentoolkit
+app-text/pdftk
+app-text/xournalpp
+dev-java/openjdk
+dev-lang/ada-bootstrap
+dev-lang/mono
+dev-lang/rust
+dev-tex/latex-beamer
+gnome-base/gnome
+gnome-base/gnome-extra-apps
+kde-apps/kde-apps-meta
+kde-apps/kdepim-meta
+kde-plasma/plasma-meta
+llvm-core/clang
+lxqt-base/lxqt-meta
+mate-base/mate
+media-gfx/engauge
+media-gfx/gimp
+media-gfx/gnuclad
+media-gfx/inkscape
+media-gfx/povray
+net-firewall/fwbuilder
+net-irc/quassel
+net-misc/chrony
+net-misc/dhcpcd
+net-vpn/openvpn
+sci-visualization/gnuplot
+sci-visualization/gwyddion
+sci-visualization/spyview
+sys-apps/pkgcore
+sys-apps/portage
+sys-devel/gcc:14
+dev-debug/gdb
+www-client/firefox
+xfce-base/xfce4-meta
diff --git a/builders/tintin/server-v3-23/portage/env/lto.conf
b/builders/tintin/server-v3-23/portage/env/lto.conf
new file mode 100644
index 0000000..37647dd
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/env/lto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -flto"
+CXXFLAGS="${CXXFLAGS} -flto"
+FCFLAGS="${FCFLAGS} -flto"
+FFLAGS="${FFLAGS} -flto"
+LDFLAGS="${LDFLAGS} -flto"
diff --git a/builders/tintin/server-v3-23/portage/env/nolto.conf
b/builders/tintin/server-v3-23/portage/env/nolto.conf
new file mode 100644
index 0000000..4f1f356
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/env/nolto.conf
@@ -0,0 +1,5 @@
+CFLAGS="${CFLAGS} -fno-lto"
+CXXFLAGS="${CXXFLAGS} -fno-lto"
+FCFLAGS="${FCFLAGS} -fno-lto"
+FFLAGS="${FFLAGS} -fno-lto"
+LDFLAGS="${LDFLAGS} -fno-lto"
diff --git a/builders/tintin/server-v3-23/portage/make.conf
b/builders/tintin/server-v3-23/portage/make.conf
new file mode 100644
index 0000000..4a53383
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/make.conf
@@ -0,0 +1,52 @@
+# These settings were set by the catalyst build script that automatically
+# built this stage.
+# Please consult /usr/share/portage/config/make.conf.example for a more
+# detailed example.
+
+# For now, we enforce LTO warnings but only enable LTO for certain packages.
+LTOFLAGS="-Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
+COMMON_FLAGS="-O2 -pipe -march=x86-64-v3 ${LTOFLAGS}"
+CFLAGS="${COMMON_FLAGS}"
+CXXFLAGS="${COMMON_FLAGS}"
+FCFLAGS="${COMMON_FLAGS}"
+FFLAGS="${COMMON_FLAGS}"
+
+LDFLAGS="${LDFLAGS} ${LTOFLAGS}"
+
+# NOTE: This stage was built with the bindist Use flag enabled
+PORTDIR="/var/db/repos/gentoo"
+DISTDIR="/var/cache/distfiles"
+PKGDIR="/var/cache/binpkgs"
+
+# This sets the language of build output to English.
+# Please keep this setting intact when reporting bugs.
+LC_MESSAGES=C
+
+MAKEOPTS="-j32 -l64"
+
+EMERGE_DEFAULT_OPTS="--jobs 20 --load-average 64 --quiet --keep-going
--binpkg-respect-use --usepkg --with-bdeps=y --color n --nospinner"
+
+FEATURES="binpkg-multi-instance buildpkg compress-index -network-sandbox
notitles"
+
+PORTAGE_BINHOST_TTL="3600"
+BINPKG_FORMAT="gpkg"
+BINPKG_COMPRESS="xz"
+
+USE="bindist cet native-extensions"
+
+ACCEPT_RESTRICT="* -bindist"
+
+ACCEPT_LICENSE="@FREE MPEG-4"
+
+LC_ALL="en_US.utf8"
+
+# x86-64-v1:
+CPU_FLAGS_X86_v1="cmov cx8 fpu fxsr mmx osfxsr sce mmxext sse sse2"
+
+# x86-64-v2:
+CPU_FLAGS_X86_v2="${CPU_FLAGS_X86_v1} cmpxchg16b lahf_sahf popcnt sse3 sse4_1
sse4_2 ssse3"
+
+# x86-64-v3:
+CPU_FLAGS_X86_v3="${CPU_FLAGS_X86_v2} avx avx2 bmi1 bmi2 f16c fma3 lzcnt movbe
osxsave"
+
+CPU_FLAGS_X86=${CPU_FLAGS_X86_v3}
diff --git a/builders/tintin/server-v3-23/portage/make.profile
b/builders/tintin/server-v3-23/portage/make.profile
new file mode 120000
index 0000000..6656efc
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/make.profile
@@ -0,0 +1 @@
+/var/db/repos/gentoo/profiles/default/linux/amd64/23.0/no-multilib
\ No newline at end of file
diff --git a/builders/tintin/server-v3-23/portage/package.env/lto
b/builders/tintin/server-v3-23/portage/package.env/lto
new file mode 100644
index 0000000..30a3c07
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.env/lto
@@ -0,0 +1,3 @@
+dev-lang/python lto.conf
+sys-devel/* lto.conf
+www-client/firefox lto.conf
diff --git a/builders/tintin/server-v3-23/portage/package.mask/prebuilt-bin
b/builders/tintin/server-v3-23/portage/package.mask/prebuilt-bin
new file mode 100644
index 0000000..6d8e24a
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.mask/prebuilt-bin
@@ -0,0 +1 @@
+dev-lang/rust-bin
diff --git a/builders/tintin/server-v3-23/portage/package.use/dist-kernel
b/builders/tintin/server-v3-23/portage/package.use/dist-kernel
new file mode 100644
index 0000000..7e6ada4
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/dist-kernel
@@ -0,0 +1 @@
+*/* dist-kernel
diff --git a/builders/tintin/server-v3-23/portage/package.use/gcc
b/builders/tintin/server-v3-23/portage/package.use/gcc
new file mode 100644
index 0000000..84862d7
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/gcc
@@ -0,0 +1,2 @@
+sys-devel/gcc lto pgo
+sys-devel/binutils pgo
diff --git a/builders/tintin/server-v3-23/portage/package.use/networkmanager
b/builders/tintin/server-v3-23/portage/package.use/networkmanager
new file mode 100644
index 0000000..5d977ab
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/networkmanager
@@ -0,0 +1,2 @@
+# Required for networkmanager
+net-wireless/wpa_supplicant dbus
diff --git a/builders/tintin/server-v3-23/portage/package.use/nginx
b/builders/tintin/server-v3-23/portage/package.use/nginx
new file mode 100644
index 0000000..9d49054
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/nginx
@@ -0,0 +1,2 @@
+# www-servers/nginx needs app-misc/mime-types[nginx]
+app-misc/mime-types nginx
diff --git a/builders/tintin/server-v3-23/portage/package.use/npm
b/builders/tintin/server-v3-23/portage/package.use/npm
new file mode 100644
index 0000000..a90c167
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/npm
@@ -0,0 +1 @@
+net-libs/nodejs npm
diff --git a/builders/tintin/server-v3-23/portage/package.use/python3-incompat
b/builders/tintin/server-v3-23/portage/package.use/python3-incompat
new file mode 100644
index 0000000..871a663
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/python3-incompat
@@ -0,0 +1,2 @@
+# unavailable for 3.13
+<llvm-core/clang-18 PYTHON_SINGLE_TARGET: python3_12
diff --git a/builders/tintin/server-v3-23/portage/package.use/qt
b/builders/tintin/server-v3-23/portage/package.use/qt
new file mode 100644
index 0000000..1b62b11
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/qt
@@ -0,0 +1 @@
+x11-libs/libxkbcommon X
diff --git a/builders/tintin/server-v3-23/portage/package.use/rust
b/builders/tintin/server-v3-23/portage/package.use/rust
new file mode 100644
index 0000000..2b1a617
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/package.use/rust
@@ -0,0 +1 @@
+dev-lang/rust mrustc-bootstrap
diff --git
a/builders/tintin/server-v3-23/portage/variants/debug/package.use/debug
b/builders/tintin/server-v3-23/portage/variants/debug/package.use/debug
new file mode 100644
index 0000000..c1256bb
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/variants/debug/package.use/debug
@@ -0,0 +1,6 @@
+llvm-core/* debug
+llvm-runtimes/* debug
+
+sys-devel/gcc debug
+
+dev-lang/python debug
diff --git
a/builders/tintin/server-v3-23/portage/variants/gcc-nopgo/package.use/gcc
b/builders/tintin/server-v3-23/portage/variants/gcc-nopgo/package.use/gcc
new file mode 100644
index 0000000..6e7c460
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/variants/gcc-nopgo/package.use/gcc
@@ -0,0 +1 @@
+# revert default pgo/lto for binpkg coverage
diff --git a/builders/tintin/server-v3-23/portage/variants/lucky/.run_marker
b/builders/tintin/server-v3-23/portage/variants/lucky/.run_marker
new file mode 100644
index 0000000..722c3eb
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/variants/lucky/.run_marker
@@ -0,0 +1 @@
+I'm feeling lucky!
diff --git
a/builders/tintin/server-v3-23/portage/variants/meson-ci/package.use/meson-ci
b/builders/tintin/server-v3-23/portage/variants/meson-ci/package.use/meson-ci
new file mode 100644
index 0000000..74e03d3
--- /dev/null
+++
b/builders/tintin/server-v3-23/portage/variants/meson-ci/package.use/meson-ci
@@ -0,0 +1,14 @@
+dev-libs/boost python
+
+# USE=test-full
+dev-build/meson test test-full
+sys-libs/zlib static-libs
+virtual/zlib static-libs
+sci-libs/hdf5 cxx fortran
+sys-cluster/openmpi fortran
+media-libs/freetype harfbuzz
+
+# recursive
+dev-python/pycairo X
+media-libs/libglvnd X
+x11-libs/cairo X
diff --git
a/builders/tintin/server-v3-23/portage/variants/python3both/buildpkgonly
b/builders/tintin/server-v3-23/portage/variants/python3both/buildpkgonly
new file mode 100755
index 0000000..8bf2a62
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/variants/python3both/buildpkgonly
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+emerge -uDN --backtrack=100 @world
+
+# py 3.13 exclusive (non default)
+cat >> ../../make.conf <<- __EOF__
+ PYTHON_TARGETS="python3_12"
+ PYTHON_SINGLE_TARGET="python3_12"
+__EOF__
+
+EPYTHON=python3.12 emerge -uDN --backtrack=100 @world
+
+# USE is redundant, but works around https://bugs.gentoo.org/964705
+USE="-python" PYTHON_TARGETS= PYTHON_SINGLE_TARGET= emerge -1 $(pquery -I
--has-use python --attr use| awk '/-python[ $]/{print "="$1}' | sed '/z3/d')
diff --git
a/builders/tintin/server-v3-23/portage/variants/python3both/make.conf.footer
b/builders/tintin/server-v3-23/portage/variants/python3both/make.conf.footer
new file mode 100644
index 0000000..255ab7c
--- /dev/null
+++ b/builders/tintin/server-v3-23/portage/variants/python3both/make.conf.footer
@@ -0,0 +1,2 @@
+PYTHON_TARGETS="python3_12 python3_13"
+PYTHON_SINGLE_TARGET="python3_12"
diff --git
a/builders/tintin/server-v3-23/portage/variants/python3both/package.use/python3both
b/builders/tintin/server-v3-23/portage/variants/python3both/package.use/python3both
new file mode 100644
index 0000000..871a663
--- /dev/null
+++
b/builders/tintin/server-v3-23/portage/variants/python3both/package.use/python3both
@@ -0,0 +1,2 @@
+# unavailable for 3.13
+<llvm-core/clang-18 PYTHON_SINGLE_TARGET: python3_12
diff --git
a/builders/tintin/server-v3-23/portage/variants/python3both/profile/use.stable.mask
b/builders/tintin/server-v3-23/portage/variants/python3both/profile/use.stable.mask
new file mode 100644
index 0000000..d58f7bb
--- /dev/null
+++
b/builders/tintin/server-v3-23/portage/variants/python3both/profile/use.stable.mask
@@ -0,0 +1,2 @@
+-python_targets_python3_13
+-python_single_target_python3_13
diff --git a/builders/tintin/server-v3-23/run-update
b/builders/tintin/server-v3-23/run-update
new file mode 100755
index 0000000..32facf9
--- /dev/null
+++ b/builders/tintin/server-v3-23/run-update
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+# if one thing fails, abort entirely
+set -e
+
+to_install=(world)
+
+if [[ $1 = *lucky ]]; then
+ pquery -F '{category}/{package}' --max -r gentoo | grep -E -v
'^(acct|virtual|sec)-' | sort -u > /tmp/stable
+ pquery --installed -F '{category}/{package}' | sort -u > /tmp/installed
+ comm -23 /tmp/stable /tmp/installed > /tmp/uninstalled-stable
+ sed -i 's/--binpkg-respect-use//' /etc/portage/make.conf
+
+ to_install=(--autounmask-write --autounmask-continue $(shuf -n3
/tmp/uninstalled-stable))
+elif [[ $1 ]]; then
+ pushd /etc/portage/variants/$1
+ while read -r -d '' line; do
+ dest=../../${line%.footer}
+ if [[ ${line} = world* ]]; then
+ dest=/var/lib/portage/world
+ fi
+
+ if [[ ${line} = world.remove ]]; then
+ emerge -C $(<"${line}")
+ elif [[ ${line} = *.footer ]]; then
+ cat "${line}" >> "${dest}"
+ else
+ mkdir -p "${dest%/*}"
+ cp "${line}" "${dest}"
+ fi
+ done < <(find . -type f -printf '%P\0')
+ if [[ -f buildpkgonly ]]; then
+ ./buildpkgonly
+ fi
+ popd
+fi
+
+emerge -uDN --changed-deps --backtrack=100 "${to_install[@]}"
+
+if [[ ! $1 ]]; then
+ emerge --depclean --quiet-unmerge-warn
+ eclean-pkg --changed-deps
+fi
+
+mapfile -t badlibs < <(portageq list_preserved_libs /)
+
+if (( ${#badlibs[@]} > 0 )); then
+ printf '%s\n' "WARNING: preserved-libs in binary packages!"
+ printf ' - %s\n' "${badlibs[@]}"
+ emerge -p @preserved-rebuild
+ exit 1
+fi
diff --git a/builders/tintin/server-v3-23/world
b/builders/tintin/server-v3-23/world
new file mode 100644
index 0000000..ca96160
--- /dev/null
+++ b/builders/tintin/server-v3-23/world
@@ -0,0 +1,102 @@
+app-accessibility/brltty
+app-accessibility/espeakup
+app-admin/hddtemp
+app-admin/metalog
+app-admin/rsyslog
+app-admin/sudo
+app-admin/syslog-ng
+app-admin/sysklogd
+app-admin/sysstat
+app-admin/testdisk
+app-arch/bzip2
+app-arch/bzip3
+app-arch/cpio
+app-arch/dpkg
+app-arch/deb2targz
+app-arch/gzip
+app-arch/mt-st
+app-arch/p7zip
+app-arch/pbzip2
+app-arch/rpm
+app-arch/tar
+app-arch/zip
+app-backup/fsarchiver
+app-benchmarks/bonnie++
+app-benchmarks/dbench
+app-benchmarks/stress
+app-benchmarks/tiobench
+app-cdr/dvd+rw-tools
+app-cdr/cdrtools
+app-containers/docker
+app-crypt/chntpw
+app-editors/emacs
+app-editors/hexedit
+app-editors/joe
+app-editors/mg
+app-editors/nano
+app-editors/neovim
+app-editors/vim
+app-emacs/ebuild-mode
+app-portage/cpuid2cpuflags
+app-portage/eix
+app-portage/gentoolkit
+app-portage/mirrorselect
+app-text/doxygen
+net-dialup/ppp
+net-dns/bind
+net-mail/dovecot
+dev-debug/gdb
+dev-debug/strace
+dev-debug/valgrind
+dev-java/openjdk
+dev-lang/ada-bootstrap
+dev-lang/python:2.7
+dev-lang/python:3.10
+dev-lang/python:3.11
+dev-lang/python:3.12
+dev-lang/python:3.13
+dev-lang/rust
+dev-python/mypy
+dev-python/pip
+dev-qt/qtbase
+dev-util/bindgen
+dev-util/perf
+dev-util/pkgdev
+llvm-core/clang:15
+llvm-core/clang:16
+llvm-core/clang:17
+llvm-core/clang:18
+llvm-core/clang:19
+llvm-core/clang:20
+mail-mta/postfix
+media-libs/libsdl2
+media-libs/libwmf
+media-libs/vulkan-loader
+net-dialup/minicom
+net-libs/nodejs
+net-misc/chrony
+net-misc/dhcpcd
+net-misc/networkmanager
+net-vpn/openvpn
+net-wireless/iw
+sci-libs/armadillo
+sci-mathematics/z3
+sys-apps/bat
+sys-apps/fakeroot
+sys-apps/mlocate
+sys-apps/pciutils
+sys-apps/portage
+sys-boot/grub
+sys-devel/gcc:14
+sys-fs/btrfs-progs
+sys-fs/ncdu
+sys-fs/xfsprogs
+sys-fs/dosfstools
+sys-fs/e2fsprogs
+sys-fs/jfsutils
+sys-fs/xfsprogs
+sys-process/btop
+sys-process/cronie
+www-servers/apache
+www-servers/lighttpd
+www-servers/nginx