1# 2# Docker Hexagon cross-compiler target 3# 4# This docker target is used for building hexagon tests. As it also 5# needs to be able to build QEMU itself in CI we include its 6# build-deps. 7# 8FROM docker.io/library/debian:11-slim 9 10# Duplicate deb line as deb-src 11RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list 12RUN apt-get update && \ 13 DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ 14 DEBIAN_FRONTEND=noninteractive eatmydata \ 15# Install common build utilities 16 apt-get install -y --no-install-recommends \ 17 curl \ 18 ccache \ 19 xz-utils \ 20 ca-certificates \ 21 bison \ 22 flex \ 23 git \ 24 ninja-build \ 25 python3-pip \ 26 python3-setuptools \ 27 python3-venv \ 28 python3-wheel && \ 29# Install QEMU build deps for use in CI 30 DEBIAN_FRONTEND=noninteractive eatmydata \ 31 apt build-dep -yy --arch-only qemu && \ 32 mkdir -p /usr/libexec/ccache-wrappers && \ 33 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \ 34 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ 35 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \ 36 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc && \ 37 dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt 38 39RUN /usr/bin/pip3 install tomli 40 41ENV TOOLCHAIN_INSTALL /opt 42ENV TOOLCHAIN_RELEASE 12.Dec.2023 43ENV TOOLCHAIN_BASENAME "clang+llvm-${TOOLCHAIN_RELEASE}-cross-hexagon-unknown-linux-musl" 44ENV TOOLCHAIN_URL https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-for-hexagon/${TOOLCHAIN_RELEASE}/${TOOLCHAIN_BASENAME}.tar.xz 45ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" 46 47RUN curl -#SL "$TOOLCHAIN_URL" | tar -xJC "$TOOLCHAIN_INSTALL" 48ENV PATH $PATH:${TOOLCHAIN_INSTALL}/${TOOLCHAIN_BASENAME}/x86_64-linux-gnu/bin 49ENV MAKE /usr/bin/make 50# As a final step configure the user (if env is defined) 51ARG USER 52ARG UID 53RUN if [ "${USER}" ]; then \ 54 id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi 55