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
38RUN /usr/bin/pip3 install tomli
39
40ENV TOOLCHAIN_INSTALL /opt
41ENV TOOLCHAIN_RELEASE 16.0.0
42ENV TOOLCHAIN_BASENAME "clang+llvm-${TOOLCHAIN_RELEASE}-cross-hexagon-unknown-linux-musl"
43ENV TOOLCHAIN_URL https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-for-hexagon/v${TOOLCHAIN_RELEASE}/${TOOLCHAIN_BASENAME}.tar.xz
44ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
45
46RUN curl -#SL "$TOOLCHAIN_URL" | tar -xJC "$TOOLCHAIN_INSTALL"
47ENV PATH $PATH:${TOOLCHAIN_INSTALL}/${TOOLCHAIN_BASENAME}/x86_64-linux-gnu/bin
48# As a final step configure the user (if env is defined)
49ARG USER
50ARG UID
51RUN if [ "${USER}" ]; then \
52  id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
53