[libvirt PATCH 2/2] ci: Move Debian-11 workloads to Debian-12

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Let's move our Debian CI workloads to Debian-12 since it's the latest
release and mark Debian-11 jobs as optional.

Signed-off-by: Erik Skultety <eskultet@xxxxxxxxxx>
---
 ci/buildenv/debian-12-cross-aarch64.sh        | 115 ++++++++++
 ci/buildenv/debian-12-cross-armv6l.sh         | 114 ++++++++++
 ci/buildenv/debian-12-cross-armv7l.sh         | 115 ++++++++++
 ci/buildenv/debian-12-cross-i686.sh           | 114 ++++++++++
 ci/buildenv/debian-12-cross-mips64el.sh       | 114 ++++++++++
 ci/buildenv/debian-12-cross-mipsel.sh         | 114 ++++++++++
 ci/buildenv/debian-12-cross-ppc64le.sh        | 114 ++++++++++
 ci/buildenv/debian-12-cross-s390x.sh          | 114 ++++++++++
 .../debian-12-cross-aarch64.Dockerfile        | 121 +++++++++++
 .../debian-12-cross-armv6l.Dockerfile         | 120 +++++++++++
 .../debian-12-cross-armv7l.Dockerfile         | 121 +++++++++++
 ci/containers/debian-12-cross-i686.Dockerfile | 120 +++++++++++
 .../debian-12-cross-mips64el.Dockerfile       | 120 +++++++++++
 .../debian-12-cross-mipsel.Dockerfile         | 120 +++++++++++
 .../debian-12-cross-ppc64le.Dockerfile        | 120 +++++++++++
 .../debian-12-cross-s390x.Dockerfile          | 120 +++++++++++
 ci/gitlab/builds.yml                          | 198 ++++++++++++++++++
 ci/gitlab/containers.yml                      |  65 ++++++
 ci/manifest.yml                               |  40 +++-
 19 files changed, 2178 insertions(+), 1 deletion(-)
 create mode 100644 ci/buildenv/debian-12-cross-aarch64.sh
 create mode 100644 ci/buildenv/debian-12-cross-armv6l.sh
 create mode 100644 ci/buildenv/debian-12-cross-armv7l.sh
 create mode 100644 ci/buildenv/debian-12-cross-i686.sh
 create mode 100644 ci/buildenv/debian-12-cross-mips64el.sh
 create mode 100644 ci/buildenv/debian-12-cross-mipsel.sh
 create mode 100644 ci/buildenv/debian-12-cross-ppc64le.sh
 create mode 100644 ci/buildenv/debian-12-cross-s390x.sh
 create mode 100644 ci/containers/debian-12-cross-aarch64.Dockerfile
 create mode 100644 ci/containers/debian-12-cross-armv6l.Dockerfile
 create mode 100644 ci/containers/debian-12-cross-armv7l.Dockerfile
 create mode 100644 ci/containers/debian-12-cross-i686.Dockerfile
 create mode 100644 ci/containers/debian-12-cross-mips64el.Dockerfile
 create mode 100644 ci/containers/debian-12-cross-mipsel.Dockerfile
 create mode 100644 ci/containers/debian-12-cross-ppc64le.Dockerfile
 create mode 100644 ci/containers/debian-12-cross-s390x.Dockerfile

diff --git a/ci/buildenv/debian-12-cross-aarch64.sh b/ci/buildenv/debian-12-cross-aarch64.sh
new file mode 100644
index 0000000000..6b03b2ea59
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-aarch64.sh
@@ -0,0 +1,115 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture arm64
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-aarch64-linux-gnu \
+            libacl1-dev:arm64 \
+            libapparmor-dev:arm64 \
+            libattr1-dev:arm64 \
+            libaudit-dev:arm64 \
+            libblkid-dev:arm64 \
+            libc6-dev:arm64 \
+            libcap-ng-dev:arm64 \
+            libcurl4-gnutls-dev:arm64 \
+            libdevmapper-dev:arm64 \
+            libfuse-dev:arm64 \
+            libglib2.0-dev:arm64 \
+            libglusterfs-dev:arm64 \
+            libgnutls28-dev:arm64 \
+            libiscsi-dev:arm64 \
+            libnl-3-dev:arm64 \
+            libnl-route-3-dev:arm64 \
+            libnuma-dev:arm64 \
+            libparted-dev:arm64 \
+            libpcap0.8-dev:arm64 \
+            libpciaccess-dev:arm64 \
+            librbd-dev:arm64 \
+            libreadline-dev:arm64 \
+            libsanlock-dev:arm64 \
+            libsasl2-dev:arm64 \
+            libselinux1-dev:arm64 \
+            libssh-gcrypt-dev:arm64 \
+            libssh2-1-dev:arm64 \
+            libtirpc-dev:arm64 \
+            libudev-dev:arm64 \
+            libxen-dev:arm64 \
+            libxml2-dev:arm64 \
+            libyajl-dev:arm64 \
+            systemtap-sdt-dev:arm64
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
+ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'aarch64'\n\
+cpu = 'aarch64'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/aarch64-linux-gnu
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="aarch64-linux-gnu"
+export MESON_OPTS="--cross-file=aarch64-linux-gnu"
diff --git a/ci/buildenv/debian-12-cross-armv6l.sh b/ci/buildenv/debian-12-cross-armv6l.sh
new file mode 100644
index 0000000000..51dc4ce88a
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-armv6l.sh
@@ -0,0 +1,114 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture armel
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-arm-linux-gnueabi \
+            libacl1-dev:armel \
+            libapparmor-dev:armel \
+            libattr1-dev:armel \
+            libaudit-dev:armel \
+            libblkid-dev:armel \
+            libc6-dev:armel \
+            libcap-ng-dev:armel \
+            libcurl4-gnutls-dev:armel \
+            libdevmapper-dev:armel \
+            libfuse-dev:armel \
+            libglib2.0-dev:armel \
+            libglusterfs-dev:armel \
+            libgnutls28-dev:armel \
+            libiscsi-dev:armel \
+            libnl-3-dev:armel \
+            libnl-route-3-dev:armel \
+            libnuma-dev:armel \
+            libparted-dev:armel \
+            libpcap0.8-dev:armel \
+            libpciaccess-dev:armel \
+            librbd-dev:armel \
+            libreadline-dev:armel \
+            libsanlock-dev:armel \
+            libsasl2-dev:armel \
+            libselinux1-dev:armel \
+            libssh-gcrypt-dev:armel \
+            libssh2-1-dev:armel \
+            libtirpc-dev:armel \
+            libudev-dev:armel \
+            libxml2-dev:armel \
+            libyajl-dev:armel \
+            systemtap-sdt-dev:armel
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
+ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
+strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
+pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'arm'\n\
+cpu = 'arm'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabi
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="arm-linux-gnueabi"
+export MESON_OPTS="--cross-file=arm-linux-gnueabi"
diff --git a/ci/buildenv/debian-12-cross-armv7l.sh b/ci/buildenv/debian-12-cross-armv7l.sh
new file mode 100644
index 0000000000..ecd1453bff
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-armv7l.sh
@@ -0,0 +1,115 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture armhf
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-arm-linux-gnueabihf \
+            libacl1-dev:armhf \
+            libapparmor-dev:armhf \
+            libattr1-dev:armhf \
+            libaudit-dev:armhf \
+            libblkid-dev:armhf \
+            libc6-dev:armhf \
+            libcap-ng-dev:armhf \
+            libcurl4-gnutls-dev:armhf \
+            libdevmapper-dev:armhf \
+            libfuse-dev:armhf \
+            libglib2.0-dev:armhf \
+            libglusterfs-dev:armhf \
+            libgnutls28-dev:armhf \
+            libiscsi-dev:armhf \
+            libnl-3-dev:armhf \
+            libnl-route-3-dev:armhf \
+            libnuma-dev:armhf \
+            libparted-dev:armhf \
+            libpcap0.8-dev:armhf \
+            libpciaccess-dev:armhf \
+            librbd-dev:armhf \
+            libreadline-dev:armhf \
+            libsanlock-dev:armhf \
+            libsasl2-dev:armhf \
+            libselinux1-dev:armhf \
+            libssh-gcrypt-dev:armhf \
+            libssh2-1-dev:armhf \
+            libtirpc-dev:armhf \
+            libudev-dev:armhf \
+            libxen-dev:armhf \
+            libxml2-dev:armhf \
+            libyajl-dev:armhf \
+            systemtap-sdt-dev:armhf
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
+ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
+strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
+pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'arm'\n\
+cpu = 'armhf'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabihf
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="arm-linux-gnueabihf"
+export MESON_OPTS="--cross-file=arm-linux-gnueabihf"
diff --git a/ci/buildenv/debian-12-cross-i686.sh b/ci/buildenv/debian-12-cross-i686.sh
new file mode 100644
index 0000000000..3922591cd8
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-i686.sh
@@ -0,0 +1,114 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture i386
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-i686-linux-gnu \
+            libacl1-dev:i386 \
+            libapparmor-dev:i386 \
+            libattr1-dev:i386 \
+            libaudit-dev:i386 \
+            libblkid-dev:i386 \
+            libc6-dev:i386 \
+            libcap-ng-dev:i386 \
+            libcurl4-gnutls-dev:i386 \
+            libdevmapper-dev:i386 \
+            libfuse-dev:i386 \
+            libglib2.0-dev:i386 \
+            libglusterfs-dev:i386 \
+            libgnutls28-dev:i386 \
+            libiscsi-dev:i386 \
+            libnl-3-dev:i386 \
+            libnl-route-3-dev:i386 \
+            libnuma-dev:i386 \
+            libparted-dev:i386 \
+            libpcap0.8-dev:i386 \
+            libpciaccess-dev:i386 \
+            librbd-dev:i386 \
+            libreadline-dev:i386 \
+            libsanlock-dev:i386 \
+            libsasl2-dev:i386 \
+            libselinux1-dev:i386 \
+            libssh-gcrypt-dev:i386 \
+            libssh2-1-dev:i386 \
+            libtirpc-dev:i386 \
+            libudev-dev:i386 \
+            libxml2-dev:i386 \
+            libyajl-dev:i386 \
+            systemtap-sdt-dev:i386
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/i686-linux-gnu-gcc'\n\
+ar = '/usr/bin/i686-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/i686-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'x86'\n\
+cpu = 'i686'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/i686-linux-gnu
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="i686-linux-gnu"
+export MESON_OPTS="--cross-file=i686-linux-gnu"
diff --git a/ci/buildenv/debian-12-cross-mips64el.sh b/ci/buildenv/debian-12-cross-mips64el.sh
new file mode 100644
index 0000000000..6a6250ac03
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-mips64el.sh
@@ -0,0 +1,114 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture mips64el
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-mips64el-linux-gnuabi64 \
+            libacl1-dev:mips64el \
+            libapparmor-dev:mips64el \
+            libattr1-dev:mips64el \
+            libaudit-dev:mips64el \
+            libblkid-dev:mips64el \
+            libc6-dev:mips64el \
+            libcap-ng-dev:mips64el \
+            libcurl4-gnutls-dev:mips64el \
+            libdevmapper-dev:mips64el \
+            libfuse-dev:mips64el \
+            libglib2.0-dev:mips64el \
+            libglusterfs-dev:mips64el \
+            libgnutls28-dev:mips64el \
+            libiscsi-dev:mips64el \
+            libnl-3-dev:mips64el \
+            libnl-route-3-dev:mips64el \
+            libnuma-dev:mips64el \
+            libparted-dev:mips64el \
+            libpcap0.8-dev:mips64el \
+            libpciaccess-dev:mips64el \
+            librbd-dev:mips64el \
+            libreadline-dev:mips64el \
+            libsanlock-dev:mips64el \
+            libsasl2-dev:mips64el \
+            libselinux1-dev:mips64el \
+            libssh-gcrypt-dev:mips64el \
+            libssh2-1-dev:mips64el \
+            libtirpc-dev:mips64el \
+            libudev-dev:mips64el \
+            libxml2-dev:mips64el \
+            libyajl-dev:mips64el \
+            systemtap-sdt-dev:mips64el
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
+ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
+strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
+pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'mips64'\n\
+cpu = 'mips64el'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="mips64el-linux-gnuabi64"
+export MESON_OPTS="--cross-file=mips64el-linux-gnuabi64"
diff --git a/ci/buildenv/debian-12-cross-mipsel.sh b/ci/buildenv/debian-12-cross-mipsel.sh
new file mode 100644
index 0000000000..4b60a97704
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-mipsel.sh
@@ -0,0 +1,114 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture mipsel
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-mipsel-linux-gnu \
+            libacl1-dev:mipsel \
+            libapparmor-dev:mipsel \
+            libattr1-dev:mipsel \
+            libaudit-dev:mipsel \
+            libblkid-dev:mipsel \
+            libc6-dev:mipsel \
+            libcap-ng-dev:mipsel \
+            libcurl4-gnutls-dev:mipsel \
+            libdevmapper-dev:mipsel \
+            libfuse-dev:mipsel \
+            libglib2.0-dev:mipsel \
+            libglusterfs-dev:mipsel \
+            libgnutls28-dev:mipsel \
+            libiscsi-dev:mipsel \
+            libnl-3-dev:mipsel \
+            libnl-route-3-dev:mipsel \
+            libnuma-dev:mipsel \
+            libparted-dev:mipsel \
+            libpcap0.8-dev:mipsel \
+            libpciaccess-dev:mipsel \
+            librbd-dev:mipsel \
+            libreadline-dev:mipsel \
+            libsanlock-dev:mipsel \
+            libsasl2-dev:mipsel \
+            libselinux1-dev:mipsel \
+            libssh-gcrypt-dev:mipsel \
+            libssh2-1-dev:mipsel \
+            libtirpc-dev:mipsel \
+            libudev-dev:mipsel \
+            libxml2-dev:mipsel \
+            libyajl-dev:mipsel \
+            systemtap-sdt-dev:mipsel
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
+ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'mips'\n\
+cpu = 'mipsel'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/mipsel-linux-gnu
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="mipsel-linux-gnu"
+export MESON_OPTS="--cross-file=mipsel-linux-gnu"
diff --git a/ci/buildenv/debian-12-cross-ppc64le.sh b/ci/buildenv/debian-12-cross-ppc64le.sh
new file mode 100644
index 0000000000..c1fd55b55d
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-ppc64le.sh
@@ -0,0 +1,114 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture ppc64el
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-powerpc64le-linux-gnu \
+            libacl1-dev:ppc64el \
+            libapparmor-dev:ppc64el \
+            libattr1-dev:ppc64el \
+            libaudit-dev:ppc64el \
+            libblkid-dev:ppc64el \
+            libc6-dev:ppc64el \
+            libcap-ng-dev:ppc64el \
+            libcurl4-gnutls-dev:ppc64el \
+            libdevmapper-dev:ppc64el \
+            libfuse-dev:ppc64el \
+            libglib2.0-dev:ppc64el \
+            libglusterfs-dev:ppc64el \
+            libgnutls28-dev:ppc64el \
+            libiscsi-dev:ppc64el \
+            libnl-3-dev:ppc64el \
+            libnl-route-3-dev:ppc64el \
+            libnuma-dev:ppc64el \
+            libparted-dev:ppc64el \
+            libpcap0.8-dev:ppc64el \
+            libpciaccess-dev:ppc64el \
+            librbd-dev:ppc64el \
+            libreadline-dev:ppc64el \
+            libsanlock-dev:ppc64el \
+            libsasl2-dev:ppc64el \
+            libselinux1-dev:ppc64el \
+            libssh-gcrypt-dev:ppc64el \
+            libssh2-1-dev:ppc64el \
+            libtirpc-dev:ppc64el \
+            libudev-dev:ppc64el \
+            libxml2-dev:ppc64el \
+            libyajl-dev:ppc64el \
+            systemtap-sdt-dev:ppc64el
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
+ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'ppc64'\n\
+cpu = 'powerpc64le'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/powerpc64le-linux-gnu
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="powerpc64le-linux-gnu"
+export MESON_OPTS="--cross-file=powerpc64le-linux-gnu"
diff --git a/ci/buildenv/debian-12-cross-s390x.sh b/ci/buildenv/debian-12-cross-s390x.sh
new file mode 100644
index 0000000000..563eb98ef7
--- /dev/null
+++ b/ci/buildenv/debian-12-cross-s390x.sh
@@ -0,0 +1,114 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    export DEBIAN_FRONTEND=noninteractive
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y \
+            augeas-lenses \
+            augeas-tools \
+            bash-completion \
+            ca-certificates \
+            ccache \
+            codespell \
+            cpp \
+            diffutils \
+            dwarves \
+            ebtables \
+            flake8 \
+            gettext \
+            git \
+            grep \
+            iproute2 \
+            iptables \
+            kmod \
+            libc-dev-bin \
+            libxml2-utils \
+            locales \
+            lvm2 \
+            make \
+            meson \
+            nfs-common \
+            ninja-build \
+            numad \
+            open-iscsi \
+            perl-base \
+            pkgconf \
+            policykit-1 \
+            python3 \
+            python3-docutils \
+            qemu-utils \
+            scrub \
+            sed \
+            xsltproc
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+    dpkg-reconfigure locales
+    export DEBIAN_FRONTEND=noninteractive
+    dpkg --add-architecture s390x
+    apt-get update
+    apt-get dist-upgrade -y
+    apt-get install --no-install-recommends -y dpkg-dev
+    apt-get install --no-install-recommends -y \
+            gcc-s390x-linux-gnu \
+            libacl1-dev:s390x \
+            libapparmor-dev:s390x \
+            libattr1-dev:s390x \
+            libaudit-dev:s390x \
+            libblkid-dev:s390x \
+            libc6-dev:s390x \
+            libcap-ng-dev:s390x \
+            libcurl4-gnutls-dev:s390x \
+            libdevmapper-dev:s390x \
+            libfuse-dev:s390x \
+            libglib2.0-dev:s390x \
+            libglusterfs-dev:s390x \
+            libgnutls28-dev:s390x \
+            libiscsi-dev:s390x \
+            libnl-3-dev:s390x \
+            libnl-route-3-dev:s390x \
+            libnuma-dev:s390x \
+            libparted-dev:s390x \
+            libpcap0.8-dev:s390x \
+            libpciaccess-dev:s390x \
+            librbd-dev:s390x \
+            libreadline-dev:s390x \
+            libsanlock-dev:s390x \
+            libsasl2-dev:s390x \
+            libselinux1-dev:s390x \
+            libssh-gcrypt-dev:s390x \
+            libssh2-1-dev:s390x \
+            libtirpc-dev:s390x \
+            libudev-dev:s390x \
+            libxml2-dev:s390x \
+            libyajl-dev:s390x \
+            systemtap-sdt-dev:s390x
+    mkdir -p /usr/local/share/meson/cross
+    printf "[binaries]\n\
+c = '/usr/bin/s390x-linux-gnu-gcc'\n\
+ar = '/usr/bin/s390x-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/s390x-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 's390x'\n\
+cpu = 's390x'\n\
+endian = 'big'\n" > /usr/local/share/meson/cross/s390x-linux-gnu
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export MAKE="/usr/bin/make"
+export NINJA="/usr/bin/ninja"
+export PYTHON="/usr/bin/python3"
+
+export ABI="s390x-linux-gnu"
+export MESON_OPTS="--cross-file=s390x-linux-gnu"
diff --git a/ci/containers/debian-12-cross-aarch64.Dockerfile b/ci/containers/debian-12-cross-aarch64.Dockerfile
new file mode 100644
index 0000000000..a4824aadc1
--- /dev/null
+++ b/ci/containers/debian-12-cross-aarch64.Dockerfile
@@ -0,0 +1,121 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture arm64 && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-aarch64-linux-gnu \
+                      libacl1-dev:arm64 \
+                      libapparmor-dev:arm64 \
+                      libattr1-dev:arm64 \
+                      libaudit-dev:arm64 \
+                      libblkid-dev:arm64 \
+                      libc6-dev:arm64 \
+                      libcap-ng-dev:arm64 \
+                      libcurl4-gnutls-dev:arm64 \
+                      libdevmapper-dev:arm64 \
+                      libfuse-dev:arm64 \
+                      libglib2.0-dev:arm64 \
+                      libglusterfs-dev:arm64 \
+                      libgnutls28-dev:arm64 \
+                      libiscsi-dev:arm64 \
+                      libnl-3-dev:arm64 \
+                      libnl-route-3-dev:arm64 \
+                      libnuma-dev:arm64 \
+                      libparted-dev:arm64 \
+                      libpcap0.8-dev:arm64 \
+                      libpciaccess-dev:arm64 \
+                      librbd-dev:arm64 \
+                      libreadline-dev:arm64 \
+                      libsanlock-dev:arm64 \
+                      libsasl2-dev:arm64 \
+                      libselinux1-dev:arm64 \
+                      libssh-gcrypt-dev:arm64 \
+                      libssh2-1-dev:arm64 \
+                      libtirpc-dev:arm64 \
+                      libudev-dev:arm64 \
+                      libxen-dev:arm64 \
+                      libxml2-dev:arm64 \
+                      libyajl-dev:arm64 \
+                      systemtap-sdt-dev:arm64 && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
+ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'aarch64'\n\
+cpu = 'aarch64'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/aarch64-linux-gnu && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-gcc
+
+ENV ABI "aarch64-linux-gnu"
+ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
diff --git a/ci/containers/debian-12-cross-armv6l.Dockerfile b/ci/containers/debian-12-cross-armv6l.Dockerfile
new file mode 100644
index 0000000000..38e40dbda0
--- /dev/null
+++ b/ci/containers/debian-12-cross-armv6l.Dockerfile
@@ -0,0 +1,120 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture armel && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-arm-linux-gnueabi \
+                      libacl1-dev:armel \
+                      libapparmor-dev:armel \
+                      libattr1-dev:armel \
+                      libaudit-dev:armel \
+                      libblkid-dev:armel \
+                      libc6-dev:armel \
+                      libcap-ng-dev:armel \
+                      libcurl4-gnutls-dev:armel \
+                      libdevmapper-dev:armel \
+                      libfuse-dev:armel \
+                      libglib2.0-dev:armel \
+                      libglusterfs-dev:armel \
+                      libgnutls28-dev:armel \
+                      libiscsi-dev:armel \
+                      libnl-3-dev:armel \
+                      libnl-route-3-dev:armel \
+                      libnuma-dev:armel \
+                      libparted-dev:armel \
+                      libpcap0.8-dev:armel \
+                      libpciaccess-dev:armel \
+                      librbd-dev:armel \
+                      libreadline-dev:armel \
+                      libsanlock-dev:armel \
+                      libsasl2-dev:armel \
+                      libselinux1-dev:armel \
+                      libssh-gcrypt-dev:armel \
+                      libssh2-1-dev:armel \
+                      libtirpc-dev:armel \
+                      libudev-dev:armel \
+                      libxml2-dev:armel \
+                      libyajl-dev:armel \
+                      systemtap-sdt-dev:armel && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
+ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
+strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
+pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'arm'\n\
+cpu = 'arm'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabi && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc
+
+ENV ABI "arm-linux-gnueabi"
+ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
diff --git a/ci/containers/debian-12-cross-armv7l.Dockerfile b/ci/containers/debian-12-cross-armv7l.Dockerfile
new file mode 100644
index 0000000000..630418f497
--- /dev/null
+++ b/ci/containers/debian-12-cross-armv7l.Dockerfile
@@ -0,0 +1,121 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture armhf && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-arm-linux-gnueabihf \
+                      libacl1-dev:armhf \
+                      libapparmor-dev:armhf \
+                      libattr1-dev:armhf \
+                      libaudit-dev:armhf \
+                      libblkid-dev:armhf \
+                      libc6-dev:armhf \
+                      libcap-ng-dev:armhf \
+                      libcurl4-gnutls-dev:armhf \
+                      libdevmapper-dev:armhf \
+                      libfuse-dev:armhf \
+                      libglib2.0-dev:armhf \
+                      libglusterfs-dev:armhf \
+                      libgnutls28-dev:armhf \
+                      libiscsi-dev:armhf \
+                      libnl-3-dev:armhf \
+                      libnl-route-3-dev:armhf \
+                      libnuma-dev:armhf \
+                      libparted-dev:armhf \
+                      libpcap0.8-dev:armhf \
+                      libpciaccess-dev:armhf \
+                      librbd-dev:armhf \
+                      libreadline-dev:armhf \
+                      libsanlock-dev:armhf \
+                      libsasl2-dev:armhf \
+                      libselinux1-dev:armhf \
+                      libssh-gcrypt-dev:armhf \
+                      libssh2-1-dev:armhf \
+                      libtirpc-dev:armhf \
+                      libudev-dev:armhf \
+                      libxen-dev:armhf \
+                      libxml2-dev:armhf \
+                      libyajl-dev:armhf \
+                      systemtap-sdt-dev:armhf && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
+ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
+strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
+pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'arm'\n\
+cpu = 'armhf'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabihf && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-gcc
+
+ENV ABI "arm-linux-gnueabihf"
+ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
diff --git a/ci/containers/debian-12-cross-i686.Dockerfile b/ci/containers/debian-12-cross-i686.Dockerfile
new file mode 100644
index 0000000000..547f7a4b9d
--- /dev/null
+++ b/ci/containers/debian-12-cross-i686.Dockerfile
@@ -0,0 +1,120 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture i386 && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-i686-linux-gnu \
+                      libacl1-dev:i386 \
+                      libapparmor-dev:i386 \
+                      libattr1-dev:i386 \
+                      libaudit-dev:i386 \
+                      libblkid-dev:i386 \
+                      libc6-dev:i386 \
+                      libcap-ng-dev:i386 \
+                      libcurl4-gnutls-dev:i386 \
+                      libdevmapper-dev:i386 \
+                      libfuse-dev:i386 \
+                      libglib2.0-dev:i386 \
+                      libglusterfs-dev:i386 \
+                      libgnutls28-dev:i386 \
+                      libiscsi-dev:i386 \
+                      libnl-3-dev:i386 \
+                      libnl-route-3-dev:i386 \
+                      libnuma-dev:i386 \
+                      libparted-dev:i386 \
+                      libpcap0.8-dev:i386 \
+                      libpciaccess-dev:i386 \
+                      librbd-dev:i386 \
+                      libreadline-dev:i386 \
+                      libsanlock-dev:i386 \
+                      libsasl2-dev:i386 \
+                      libselinux1-dev:i386 \
+                      libssh-gcrypt-dev:i386 \
+                      libssh2-1-dev:i386 \
+                      libtirpc-dev:i386 \
+                      libudev-dev:i386 \
+                      libxml2-dev:i386 \
+                      libyajl-dev:i386 \
+                      systemtap-sdt-dev:i386 && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/i686-linux-gnu-gcc'\n\
+ar = '/usr/bin/i686-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/i686-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'x86'\n\
+cpu = 'i686'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/i686-linux-gnu && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-gcc
+
+ENV ABI "i686-linux-gnu"
+ENV MESON_OPTS "--cross-file=i686-linux-gnu"
diff --git a/ci/containers/debian-12-cross-mips64el.Dockerfile b/ci/containers/debian-12-cross-mips64el.Dockerfile
new file mode 100644
index 0000000000..bd4cc1ab6c
--- /dev/null
+++ b/ci/containers/debian-12-cross-mips64el.Dockerfile
@@ -0,0 +1,120 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture mips64el && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-mips64el-linux-gnuabi64 \
+                      libacl1-dev:mips64el \
+                      libapparmor-dev:mips64el \
+                      libattr1-dev:mips64el \
+                      libaudit-dev:mips64el \
+                      libblkid-dev:mips64el \
+                      libc6-dev:mips64el \
+                      libcap-ng-dev:mips64el \
+                      libcurl4-gnutls-dev:mips64el \
+                      libdevmapper-dev:mips64el \
+                      libfuse-dev:mips64el \
+                      libglib2.0-dev:mips64el \
+                      libglusterfs-dev:mips64el \
+                      libgnutls28-dev:mips64el \
+                      libiscsi-dev:mips64el \
+                      libnl-3-dev:mips64el \
+                      libnl-route-3-dev:mips64el \
+                      libnuma-dev:mips64el \
+                      libparted-dev:mips64el \
+                      libpcap0.8-dev:mips64el \
+                      libpciaccess-dev:mips64el \
+                      librbd-dev:mips64el \
+                      libreadline-dev:mips64el \
+                      libsanlock-dev:mips64el \
+                      libsasl2-dev:mips64el \
+                      libselinux1-dev:mips64el \
+                      libssh-gcrypt-dev:mips64el \
+                      libssh2-1-dev:mips64el \
+                      libtirpc-dev:mips64el \
+                      libudev-dev:mips64el \
+                      libxml2-dev:mips64el \
+                      libyajl-dev:mips64el \
+                      systemtap-sdt-dev:mips64el && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
+ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
+strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
+pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'mips64'\n\
+cpu = 'mips64el'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64 && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-gcc
+
+ENV ABI "mips64el-linux-gnuabi64"
+ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
diff --git a/ci/containers/debian-12-cross-mipsel.Dockerfile b/ci/containers/debian-12-cross-mipsel.Dockerfile
new file mode 100644
index 0000000000..4eb3eff835
--- /dev/null
+++ b/ci/containers/debian-12-cross-mipsel.Dockerfile
@@ -0,0 +1,120 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture mipsel && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-mipsel-linux-gnu \
+                      libacl1-dev:mipsel \
+                      libapparmor-dev:mipsel \
+                      libattr1-dev:mipsel \
+                      libaudit-dev:mipsel \
+                      libblkid-dev:mipsel \
+                      libc6-dev:mipsel \
+                      libcap-ng-dev:mipsel \
+                      libcurl4-gnutls-dev:mipsel \
+                      libdevmapper-dev:mipsel \
+                      libfuse-dev:mipsel \
+                      libglib2.0-dev:mipsel \
+                      libglusterfs-dev:mipsel \
+                      libgnutls28-dev:mipsel \
+                      libiscsi-dev:mipsel \
+                      libnl-3-dev:mipsel \
+                      libnl-route-3-dev:mipsel \
+                      libnuma-dev:mipsel \
+                      libparted-dev:mipsel \
+                      libpcap0.8-dev:mipsel \
+                      libpciaccess-dev:mipsel \
+                      librbd-dev:mipsel \
+                      libreadline-dev:mipsel \
+                      libsanlock-dev:mipsel \
+                      libsasl2-dev:mipsel \
+                      libselinux1-dev:mipsel \
+                      libssh-gcrypt-dev:mipsel \
+                      libssh2-1-dev:mipsel \
+                      libtirpc-dev:mipsel \
+                      libudev-dev:mipsel \
+                      libxml2-dev:mipsel \
+                      libyajl-dev:mipsel \
+                      systemtap-sdt-dev:mipsel && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
+ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'mips'\n\
+cpu = 'mipsel'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/mipsel-linux-gnu && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-gcc
+
+ENV ABI "mipsel-linux-gnu"
+ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
diff --git a/ci/containers/debian-12-cross-ppc64le.Dockerfile b/ci/containers/debian-12-cross-ppc64le.Dockerfile
new file mode 100644
index 0000000000..890db100f7
--- /dev/null
+++ b/ci/containers/debian-12-cross-ppc64le.Dockerfile
@@ -0,0 +1,120 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture ppc64el && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-powerpc64le-linux-gnu \
+                      libacl1-dev:ppc64el \
+                      libapparmor-dev:ppc64el \
+                      libattr1-dev:ppc64el \
+                      libaudit-dev:ppc64el \
+                      libblkid-dev:ppc64el \
+                      libc6-dev:ppc64el \
+                      libcap-ng-dev:ppc64el \
+                      libcurl4-gnutls-dev:ppc64el \
+                      libdevmapper-dev:ppc64el \
+                      libfuse-dev:ppc64el \
+                      libglib2.0-dev:ppc64el \
+                      libglusterfs-dev:ppc64el \
+                      libgnutls28-dev:ppc64el \
+                      libiscsi-dev:ppc64el \
+                      libnl-3-dev:ppc64el \
+                      libnl-route-3-dev:ppc64el \
+                      libnuma-dev:ppc64el \
+                      libparted-dev:ppc64el \
+                      libpcap0.8-dev:ppc64el \
+                      libpciaccess-dev:ppc64el \
+                      librbd-dev:ppc64el \
+                      libreadline-dev:ppc64el \
+                      libsanlock-dev:ppc64el \
+                      libsasl2-dev:ppc64el \
+                      libselinux1-dev:ppc64el \
+                      libssh-gcrypt-dev:ppc64el \
+                      libssh2-1-dev:ppc64el \
+                      libtirpc-dev:ppc64el \
+                      libudev-dev:ppc64el \
+                      libxml2-dev:ppc64el \
+                      libyajl-dev:ppc64el \
+                      systemtap-sdt-dev:ppc64el && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
+ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'ppc64'\n\
+cpu = 'powerpc64le'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/powerpc64le-linux-gnu && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc
+
+ENV ABI "powerpc64le-linux-gnu"
+ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
diff --git a/ci/containers/debian-12-cross-s390x.Dockerfile b/ci/containers/debian-12-cross-s390x.Dockerfile
new file mode 100644
index 0000000000..d3fed3a47c
--- /dev/null
+++ b/ci/containers/debian-12-cross-s390x.Dockerfile
@@ -0,0 +1,120 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:12-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    apt-get update && \
+    apt-get install -y eatmydata && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      augeas-lenses \
+                      augeas-tools \
+                      bash-completion \
+                      ca-certificates \
+                      ccache \
+                      codespell \
+                      cpp \
+                      diffutils \
+                      dwarves \
+                      ebtables \
+                      flake8 \
+                      gettext \
+                      git \
+                      grep \
+                      iproute2 \
+                      iptables \
+                      kmod \
+                      libc-dev-bin \
+                      libxml2-utils \
+                      locales \
+                      lvm2 \
+                      make \
+                      meson \
+                      nfs-common \
+                      ninja-build \
+                      numad \
+                      open-iscsi \
+                      perl-base \
+                      pkgconf \
+                      policykit-1 \
+                      python3 \
+                      python3-docutils \
+                      qemu-utils \
+                      scrub \
+                      sed \
+                      xsltproc && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+    dpkg-reconfigure locales
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+    dpkg --add-architecture s390x && \
+    eatmydata apt-get update && \
+    eatmydata apt-get dist-upgrade -y && \
+    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+    eatmydata apt-get install --no-install-recommends -y \
+                      gcc-s390x-linux-gnu \
+                      libacl1-dev:s390x \
+                      libapparmor-dev:s390x \
+                      libattr1-dev:s390x \
+                      libaudit-dev:s390x \
+                      libblkid-dev:s390x \
+                      libc6-dev:s390x \
+                      libcap-ng-dev:s390x \
+                      libcurl4-gnutls-dev:s390x \
+                      libdevmapper-dev:s390x \
+                      libfuse-dev:s390x \
+                      libglib2.0-dev:s390x \
+                      libglusterfs-dev:s390x \
+                      libgnutls28-dev:s390x \
+                      libiscsi-dev:s390x \
+                      libnl-3-dev:s390x \
+                      libnl-route-3-dev:s390x \
+                      libnuma-dev:s390x \
+                      libparted-dev:s390x \
+                      libpcap0.8-dev:s390x \
+                      libpciaccess-dev:s390x \
+                      librbd-dev:s390x \
+                      libreadline-dev:s390x \
+                      libsanlock-dev:s390x \
+                      libsasl2-dev:s390x \
+                      libselinux1-dev:s390x \
+                      libssh-gcrypt-dev:s390x \
+                      libssh2-1-dev:s390x \
+                      libtirpc-dev:s390x \
+                      libudev-dev:s390x \
+                      libxml2-dev:s390x \
+                      libyajl-dev:s390x \
+                      systemtap-sdt-dev:s390x && \
+    eatmydata apt-get autoremove -y && \
+    eatmydata apt-get autoclean -y && \
+    mkdir -p /usr/local/share/meson/cross && \
+    printf "[binaries]\n\
+c = '/usr/bin/s390x-linux-gnu-gcc'\n\
+ar = '/usr/bin/s390x-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/s390x-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 's390x'\n\
+cpu = 's390x'\n\
+endian = 'big'\n" > /usr/local/share/meson/cross/s390x-linux-gnu && \
+    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-gcc
+
+ENV ABI "s390x-linux-gnu"
+ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml
index f15a9fa821..2f81d49ccc 100644
--- a/ci/gitlab/builds.yml
+++ b/ci/gitlab/builds.yml
@@ -146,6 +146,7 @@ x86_64-debian-11-prebuilt-env:
       optional: true
   allow_failure: false
   variables:
+    JOB_OPTIONAL: 1
     NAME: debian-11
 
 x86_64-debian-11-local-env:
@@ -154,6 +155,7 @@ x86_64-debian-11-local-env:
   allow_failure: false
   variables:
     IMAGE: docker.io/library/debian:11-slim
+    JOB_OPTIONAL: 1
     NAME: debian-11
 
 
@@ -164,6 +166,7 @@ x86_64-debian-11-clang-prebuilt-env:
       optional: true
   allow_failure: false
   variables:
+    JOB_OPTIONAL: 1
     NAME: debian-11
 
 x86_64-debian-11-clang-local-env:
@@ -172,6 +175,7 @@ x86_64-debian-11-clang-local-env:
   allow_failure: false
   variables:
     IMAGE: docker.io/library/debian:11-slim
+    JOB_OPTIONAL: 1
     NAME: debian-11
 
 
@@ -193,6 +197,24 @@ x86_64-debian-12-local-env:
     NAME: debian-12
 
 
+x86_64-debian-12-clang-prebuilt-env:
+  extends: .native_build_job_prebuilt_env
+  needs:
+    - job: x86_64-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    NAME: debian-12
+
+x86_64-debian-12-clang-local-env:
+  extends: .native_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    IMAGE: docker.io/library/debian:12-slim
+    NAME: debian-12
+
+
 x86_64-debian-sid-prebuilt-env:
   extends: .native_build_job_prebuilt_env
   needs:
@@ -466,6 +488,7 @@ armv7l-debian-11-prebuilt-env:
   allow_failure: false
   variables:
     CROSS: armv7l
+    JOB_OPTIONAL: 1
     NAME: debian-11
 
 armv7l-debian-11-local-env:
@@ -475,6 +498,7 @@ armv7l-debian-11-local-env:
   variables:
     CROSS: armv7l
     IMAGE: docker.io/library/debian:11-slim
+    JOB_OPTIONAL: 1
     NAME: debian-11
 
 
@@ -588,6 +612,180 @@ s390x-debian-11-local-env:
     NAME: debian-11
 
 
+aarch64-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: aarch64-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: aarch64
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+aarch64-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: aarch64
+    IMAGE: docker.io/library/debian:12-slim
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+
+armv6l-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: armv6l-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: armv6l
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+armv6l-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: armv6l
+    IMAGE: docker.io/library/debian:12-slim
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+
+armv7l-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: armv7l-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: armv7l
+    NAME: debian-12
+
+armv7l-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: armv7l
+    IMAGE: docker.io/library/debian:12-slim
+    NAME: debian-12
+
+
+i686-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: i686-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: i686
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+i686-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: i686
+    IMAGE: docker.io/library/debian:12-slim
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+
+mips64el-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: mips64el-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: mips64el
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+mips64el-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: mips64el
+    IMAGE: docker.io/library/debian:12-slim
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+
+mipsel-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: mipsel-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: mipsel
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+mipsel-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: mipsel
+    IMAGE: docker.io/library/debian:12-slim
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+
+ppc64le-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: ppc64le-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: ppc64le
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+ppc64le-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: ppc64le
+    IMAGE: docker.io/library/debian:12-slim
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+
+s390x-debian-12-prebuilt-env:
+  extends: .cross_build_job_prebuilt_env
+  needs:
+    - job: s390x-debian-12-container
+      optional: true
+  allow_failure: false
+  variables:
+    CROSS: s390x
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+s390x-debian-12-local-env:
+  extends: .cross_build_job_local_env
+  needs: []
+  allow_failure: false
+  variables:
+    CROSS: s390x
+    IMAGE: docker.io/library/debian:12-slim
+    JOB_OPTIONAL: 1
+    NAME: debian-12
+
+
 aarch64-debian-sid-prebuilt-env:
   extends: .cross_build_job_prebuilt_env
   needs:
diff --git a/ci/gitlab/containers.yml b/ci/gitlab/containers.yml
index 17cf89d120..05d22f7336 100644
--- a/ci/gitlab/containers.yml
+++ b/ci/gitlab/containers.yml
@@ -46,6 +46,7 @@ x86_64-debian-11-container:
   extends: .container_job
   allow_failure: false
   variables:
+    JOB_OPTIONAL: 1
     NAME: debian-11
 
 
@@ -135,6 +136,7 @@ armv7l-debian-11-container:
   extends: .container_job
   allow_failure: false
   variables:
+    JOB_OPTIONAL: 1
     NAME: debian-11-cross-armv7l
 
 
@@ -178,6 +180,69 @@ s390x-debian-11-container:
     NAME: debian-11-cross-s390x
 
 
+aarch64-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    JOB_OPTIONAL: 1
+    NAME: debian-12-cross-aarch64
+
+
+armv6l-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    JOB_OPTIONAL: 1
+    NAME: debian-12-cross-armv6l
+
+
+armv7l-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: debian-12-cross-armv7l
+
+
+i686-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    JOB_OPTIONAL: 1
+    NAME: debian-12-cross-i686
+
+
+mips64el-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    JOB_OPTIONAL: 1
+    NAME: debian-12-cross-mips64el
+
+
+mipsel-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    JOB_OPTIONAL: 1
+    NAME: debian-12-cross-mipsel
+
+
+ppc64le-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    JOB_OPTIONAL: 1
+    NAME: debian-12-cross-ppc64le
+
+
+s390x-debian-12-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    JOB_OPTIONAL: 1
+    NAME: debian-12-cross-s390x
+
+
 aarch64-debian-sid-container:
   extends: .container_job
   allow_failure: false
diff --git a/ci/manifest.yml b/ci/manifest.yml
index 6fbd33f374..0e5a17a2bd 100644
--- a/ci/manifest.yml
+++ b/ci/manifest.yml
@@ -45,9 +45,11 @@ targets:
   debian-11:
     jobs:
       - arch: x86_64
+        builds: false
 
       - arch: x86_64
         suffix: -clang
+        builds: false
 
       - arch: aarch64
         containers: false
@@ -58,6 +60,7 @@ targets:
         builds: false
 
       - arch: armv7l
+        builds: false
 
       - arch: i686
         containers: false
@@ -79,7 +82,42 @@ targets:
         containers: false
         builds: false
 
-  debian-12: x86_64
+  debian-12:
+    jobs:
+      - arch: x86_64
+
+      - arch: x86_64
+        suffix: -clang
+
+      - arch: aarch64
+        containers: false
+        builds: false
+
+      - arch: armv6l
+        containers: false
+        builds: false
+
+      - arch: armv7l
+
+      - arch: i686
+        containers: false
+        builds: false
+
+      - arch: mips64el
+        containers: false
+        builds: false
+
+      - arch: mipsel
+        containers: false
+        builds: false
+
+      - arch: ppc64le
+        containers: false
+        builds: false
+
+      - arch: s390x
+        containers: false
+        builds: false
 
   debian-sid:
     jobs:
-- 
2.41.0




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux