While we are at it bump up to debian-13. As we use this container in
the CI runs this also has the benefit of ensuring our qemu-minimal
dependencies project really has just what we need to build a basic
QEMU.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
.../dockerfiles/debian-all-test-cross.docker | 122 ++++++++++--------
tests/lcitool/refresh | 43 ++++++
2 files changed, 111 insertions(+), 54 deletions(-)
diff --git a/tests/docker/dockerfiles/debian-all-test-cross.docker b/tests/docker/dockerfiles/debian-all-test-cross.docker
index 420a4e33e60..7c33630a83b 100644
--- a/tests/docker/dockerfiles/debian-all-test-cross.docker
+++ b/tests/docker/dockerfiles/debian-all-test-cross.docker
@@ -1,77 +1,91 @@
+# THIS FILE WAS AUTO-GENERATED
#
-# Docker all cross-compiler target (tests only)
+# $ lcitool dockerfile --layers all debian-13 qemu-minimal
#
-# While the normal cross builds take care to setup proper multiarch
-# build environments which can cross build QEMU this just installs the
-# basic compilers for as many targets as possible. We shall use this
-# to build and run linux-user tests on GitLab
-#
-FROM docker.io/library/debian:12-slim
+# https://gitlab.com/libvirt/libvirt-ci
-# Duplicate deb line as deb-src
-RUN sed -in "s/Types: deb/Types: deb deb-src/g" /etc/apt/sources.list.d/debian.sources
+FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
- apt build-dep -yy --arch-only qemu
+ eatmydata apt-get install --no-install-recommends -y \
+ bash \
+ bc \
+ bison \
+ bzip2 \
+ ca-certificates \
+ ccache \
+ findutils \
+ flex \
+ gcc \
+ git \
+ libc6-dev \
+ libfdt-dev \
+ libffi-dev \
+ libglib2.0-dev \
+ libpixman-1-dev \
+ locales \
+ make \
+ ninja-build \
+ pkgconf \
+ python3 \
+ python3-pip \
+ python3-setuptools \
+ python3-venv \
+ python3-wheel \
+ sed \
+ tar && \
+ eatmydata apt-get autoremove -y && \
+ eatmydata apt-get autoclean -y && \
+ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+ dpkg-reconfigure locales && \
+ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
+ 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/cc && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-# Add extra build tools and as many cross compilers as we can for testing
-RUN DEBIAN_FRONTEND=noninteractive eatmydata \
- apt install -y --no-install-recommends \
- bison \
- ccache \
- clang \
- dpkg-dev \
- flex \
- gcc \
- git \
- libclang-rt-dev \
- ninja-build \
- python3-pip \
- python3-setuptools \
- python3-tomli \
- python3-venv \
- python3-wheel
+RUN /usr/bin/pip3 install meson==1.8.1
-# All the generally available compilers
+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"
ENV AVAILABLE_COMPILERS gcc-aarch64-linux-gnu \
- libc6-dev-arm64-cross \
- gcc-arm-linux-gnueabihf \
- libc6-dev-armhf-cross \
- gcc-mips-linux-gnu \
- libc6-dev-mips-cross \
- gcc-mips64-linux-gnuabi64 \
- libc6-dev-mips64-cross \
- gcc-mips64el-linux-gnuabi64 \
- libc6-dev-mips64el-cross \
- gcc-mipsel-linux-gnu \
- libc6-dev-mipsel-cross \
- gcc-powerpc64le-linux-gnu \
- libc6-dev-ppc64el-cross \
- gcc-riscv64-linux-gnu \
- libc6-dev-riscv64-cross \
- gcc-s390x-linux-gnu \
- libc6-dev-s390x-cross
-
+ libc6-dev-arm64-cross \
+ gcc-arm-linux-gnueabihf \
+ libc6-dev-armhf-cross \
+ gcc-mips-linux-gnu \
+ libc6-dev-mips-cross \
+ gcc-mips64-linux-gnuabi64 \
+ libc6-dev-mips64-cross \
+ gcc-mips64el-linux-gnuabi64 \
+ libc6-dev-mips64el-cross \
+ gcc-mipsel-linux-gnu \
+ libc6-dev-mipsel-cross \
+ gcc-powerpc64le-linux-gnu \
+ libc6-dev-ppc64el-cross \
+ gcc-riscv64-linux-gnu \
+ libc6-dev-riscv64-cross \
+ gcc-s390x-linux-gnu \
+ libc6-dev-s390x-cross
RUN if dpkg-architecture -e amd64; then \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-hppa-linux-gnu libc6-dev-hppa-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-m68k-linux-gnu libc6-dev-m68k-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc-linux-gnu libc6-dev-powerpc-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-sparc64-linux-gnu libc6-dev-sparc64-cross"; \
- fi && \
- DEBIAN_FRONTEND=noninteractive eatmydata \
- apt install -y --no-install-recommends \
- ${AVAILABLE_COMPILERS} && \
- dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
-
-
+fi && \
+DEBIAN_FRONTEND=noninteractive eatmydata \
+apt install -y --no-install-recommends \
+${AVAILABLE_COMPILERS} && \
+dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
ENV DEF_TARGET_LIST aarch64-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sparc64-linux-user
# As a final step configure the user (if env is defined)
-ENV MAKE /usr/bin/make
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index 3a31fcfee9c..714e989c953 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -161,6 +161,40 @@ ubuntu2204_rust_extras = [
'RUN cargo install bindgen-cli\n',
]
+debian_all_test_cross_compilers = [
+ "ENV AVAILABLE_COMPILERS gcc-aarch64-linux-gnu \\\n",
+ " libc6-dev-arm64-cross \\\n",
+ " gcc-arm-linux-gnueabihf \\\n",
+ " libc6-dev-armhf-cross \\\n",
+ " gcc-mips-linux-gnu \\\n",
+ " libc6-dev-mips-cross \\\n",
+ " gcc-mips64-linux-gnuabi64 \\\n",
+ " libc6-dev-mips64-cross \\\n",
+ " gcc-mips64el-linux-gnuabi64 \\\n",
+ " libc6-dev-mips64el-cross \\\n",
+ " gcc-mipsel-linux-gnu \\\n",
+ " libc6-dev-mipsel-cross \\\n",
+ " gcc-powerpc64le-linux-gnu \\\n",
+ " libc6-dev-ppc64el-cross \\\n",
+ " gcc-riscv64-linux-gnu \\\n",
+ " libc6-dev-riscv64-cross \\\n",
+ " gcc-s390x-linux-gnu \\\n",
+ " libc6-dev-s390x-cross\n",
+ "RUN if dpkg-architecture -e amd64; then \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-hppa-linux-gnu libc6-dev-hppa-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-m68k-linux-gnu libc6-dev-m68k-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-powerpc-linux-gnu libc6-dev-powerpc-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-sparc64-linux-gnu libc6-dev-sparc64-cross\"; \\\n",
+ "fi && \\\n",
+ "DEBIAN_FRONTEND=noninteractive eatmydata \\\n",
+ "apt install -y --no-install-recommends \\\n",
+ "${AVAILABLE_COMPILERS} && \\\n",
+ "dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt\n",
+ "ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools\n",
+ "ENV DEF_TARGET_LIST aarch64-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sparc64-linux-user\n",
+]
+
def cross_build(prefix, targets):
conf = "ENV QEMU_CONFIGURE_OPTS=--cross-prefix=%s\n" % (prefix)
targets = "ENV DEF_TARGET_LIST=%s\n" % (targets)
@@ -256,6 +290,15 @@ try:
# https://github.com/mesonbuild/meson/pull/14991
enable_rust=False)
+ # We also generate some docker files with minimal dependencies and
+ # as many cross-compilers as Debian will package for building TCG
+ # tests.
+
+ generate_dockerfile("debian-all-test-cross", "debian-13",
+ project="qemu-minimal",
+ enable_rust=False,
+ trailer="".join(debian_all_test_cross_compilers))
+
#
# Cirrus packages lists for GitLab
#
--
2.47.3
© 2016 - 2025 Red Hat, Inc.