1# 2# Docker all cross-compiler target (tests only) 3# 4# While the normal cross builds take care to setup proper multiarch 5# build environments which can cross build QEMU this just installs the 6# basic compilers for as many targets as possible. We shall use this 7# to build and run linux-user tests on GitLab 8# 9FROM docker.io/library/debian:11-slim 10 11# Duplicate deb line as deb-src 12RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list 13 14RUN export DEBIAN_FRONTEND=noninteractive && \ 15 apt-get update && \ 16 apt-get install -y eatmydata && \ 17 eatmydata apt-get dist-upgrade -y && \ 18 apt build-dep -yy qemu 19 20# Add extra build tools and as many cross compilers as we can for testing 21RUN DEBIAN_FRONTEND=noninteractive eatmydata \ 22 apt install -y --no-install-recommends \ 23 bison \ 24 ccache \ 25 clang \ 26 flex \ 27 git \ 28 ninja-build \ 29 gcc-aarch64-linux-gnu \ 30 libc6-dev-arm64-cross \ 31 gcc-alpha-linux-gnu \ 32 libc6.1-dev-alpha-cross \ 33 gcc-arm-linux-gnueabihf \ 34 libc6-dev-armhf-cross \ 35 gcc-hppa-linux-gnu \ 36 libc6-dev-hppa-cross \ 37 gcc-m68k-linux-gnu \ 38 libc6-dev-m68k-cross \ 39 gcc-mips-linux-gnu \ 40 libc6-dev-mips-cross \ 41 gcc-mips64-linux-gnuabi64 \ 42 libc6-dev-mips64-cross \ 43 gcc-mips64el-linux-gnuabi64 \ 44 libc6-dev-mips64el-cross \ 45 gcc-mipsel-linux-gnu \ 46 libc6-dev-mipsel-cross \ 47 gcc-powerpc-linux-gnu \ 48 libc6-dev-powerpc-cross \ 49 gcc-powerpc64-linux-gnu \ 50 libc6-dev-ppc64-cross \ 51 gcc-powerpc64le-linux-gnu \ 52 libc6-dev-ppc64el-cross \ 53 gcc-riscv64-linux-gnu \ 54 libc6-dev-riscv64-cross \ 55 gcc-s390x-linux-gnu \ 56 libc6-dev-s390x-cross \ 57 gcc-sh4-linux-gnu \ 58 libc6-dev-sh4-cross \ 59 gcc-sparc64-linux-gnu \ 60 libc6-dev-sparc64-cross \ 61 python3-pip \ 62 python3-setuptools \ 63 python3-venv \ 64 python3-wheel 65 66RUN /usr/bin/pip3 install tomli 67 68ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools 69ENV DEF_TARGET_LIST aarch64-linux-user,alpha-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,sh4-linux-user,sparc64-linux-user 70# As a final step configure the user (if env is defined) 71ARG USER 72ARG UID 73RUN if [ "${USER}" ]; then \ 74 id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi 75