1afbdf0a4SAlessandro Di Federico#
2afbdf0a4SAlessandro Di Federico# Docker Hexagon cross-compiler target
3afbdf0a4SAlessandro Di Federico#
4afbdf0a4SAlessandro Di Federico# This docker target is used for building hexagon tests. As it also
5581cd47fSAlex Bennée# needs to be able to build QEMU itself in CI we include its
6581cd47fSAlex Bennée# build-deps.
7afbdf0a4SAlessandro Di Federico#
8581cd47fSAlex BennéeFROM docker.io/library/debian:11-slim
9afbdf0a4SAlessandro Di Federico
10afbdf0a4SAlessandro Di Federico# Duplicate deb line as deb-src
11afbdf0a4SAlessandro Di FedericoRUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
12b9052d36SMukilan ThiyagarajanRUN apt-get update && \
13afbdf0a4SAlessandro Di Federico    DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
14b9052d36SMukilan Thiyagarajan    DEBIAN_FRONTEND=noninteractive eatmydata \
15b9052d36SMukilan Thiyagarajan# Install common build utilities
16b9052d36SMukilan Thiyagarajan    apt-get install -y --no-install-recommends \
17b9052d36SMukilan Thiyagarajan        curl \
182f7350cdSDaniel P. Berrangé        ccache \
19b9052d36SMukilan Thiyagarajan        xz-utils \
20b9052d36SMukilan Thiyagarajan        ca-certificates \
21b9052d36SMukilan Thiyagarajan        bison \
22b9052d36SMukilan Thiyagarajan        flex \
23b9052d36SMukilan Thiyagarajan        git \
24a22a4b29SJohn Snow        ninja-build \
257ace2193SPaolo Bonzini        python3-pip \
267ace2193SPaolo Bonzini        python3-setuptools \
277ace2193SPaolo Bonzini        python3-venv \
287ace2193SPaolo Bonzini        python3-wheel && \
29b9052d36SMukilan Thiyagarajan# Install QEMU build deps for use in CI
30afbdf0a4SAlessandro Di Federico    DEBIAN_FRONTEND=noninteractive eatmydata \
312f7350cdSDaniel P. Berrangé    apt build-dep -yy --arch-only qemu && \
322f7350cdSDaniel P. Berrangé    mkdir -p /usr/libexec/ccache-wrappers && \
332f7350cdSDaniel P. Berrangé    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \
342f7350cdSDaniel P. Berrangé    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
352f7350cdSDaniel P. Berrangé    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
362f7350cdSDaniel P. Berrangé    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
37b9052d36SMukilan Thiyagarajan
387ace2193SPaolo BonziniRUN /usr/bin/pip3 install tomli
39b9052d36SMukilan Thiyagarajan
40b9052d36SMukilan ThiyagarajanENV TOOLCHAIN_INSTALL /opt
4117ed7cecSBrian CainENV TOOLCHAIN_RELEASE 12.Dec.2023
42b9052d36SMukilan ThiyagarajanENV TOOLCHAIN_BASENAME "clang+llvm-${TOOLCHAIN_RELEASE}-cross-hexagon-unknown-linux-musl"
4317ed7cecSBrian CainENV TOOLCHAIN_URL https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-for-hexagon/${TOOLCHAIN_RELEASE}/${TOOLCHAIN_BASENAME}.tar.xz
442f7350cdSDaniel P. BerrangéENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
45b9052d36SMukilan Thiyagarajan
46b9052d36SMukilan ThiyagarajanRUN curl -#SL "$TOOLCHAIN_URL" | tar -xJC "$TOOLCHAIN_INSTALL"
47b9052d36SMukilan ThiyagarajanENV PATH $PATH:${TOOLCHAIN_INSTALL}/${TOOLCHAIN_BASENAME}/x86_64-linux-gnu/bin
48*bad7a275SDaniel P. BerrangéENV MAKE /usr/bin/make
4993bd2954SAlex Bennée# As a final step configure the user (if env is defined)
5093bd2954SAlex BennéeARG USER
5193bd2954SAlex BennéeARG UID
5293bd2954SAlex BennéeRUN if [ "${USER}" ]; then \
5393bd2954SAlex Bennée  id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
54