mirror of
https://github.com/xemu-project/xemu.git
synced 2025-04-02 11:11:48 -04:00
The lcitool created containers save the full distro package list details into /packages.txt. The idea is that build jobs will 'cat' this file, so that the build log has a record of what packages were used. This is important info, because when it comes to debug failures, the original container is often lost. This extends the manually written dockerfiles to also create the /packages.txt file. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20240724095505.33544-2-berrange@redhat.com> Acked-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240729144414.830369-2-alex.bennee@linaro.org>
76 lines
2.7 KiB
Docker
76 lines
2.7 KiB
Docker
#
|
|
# Docker all cross-compiler target (tests only)
|
|
#
|
|
# 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
|
|
|
|
# Duplicate deb line as deb-src
|
|
RUN sed -in "s/Types: deb/Types: deb deb-src/g" /etc/apt/sources.list.d/debian.sources
|
|
|
|
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
apt-get update && \
|
|
apt-get install -y eatmydata && \
|
|
eatmydata apt-get dist-upgrade -y && \
|
|
apt build-dep -yy qemu
|
|
|
|
# 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 \
|
|
flex \
|
|
git \
|
|
libclang-rt-dev \
|
|
ninja-build \
|
|
python3-pip \
|
|
python3-setuptools \
|
|
python3-tomli \
|
|
python3-venv \
|
|
python3-wheel
|
|
|
|
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
|
|
apt install -y --no-install-recommends \
|
|
gcc-aarch64-linux-gnu \
|
|
libc6-dev-arm64-cross \
|
|
gcc-arm-linux-gnueabihf \
|
|
libc6-dev-armhf-cross \
|
|
gcc-hppa-linux-gnu \
|
|
libc6-dev-hppa-cross \
|
|
gcc-m68k-linux-gnu \
|
|
libc6-dev-m68k-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-powerpc-linux-gnu \
|
|
libc6-dev-powerpc-cross \
|
|
gcc-powerpc64-linux-gnu \
|
|
libc6-dev-ppc64-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 \
|
|
gcc-sparc64-linux-gnu \
|
|
libc6-dev-sparc64-cross && \
|
|
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --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 \
|
|
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
|