master
docker 66 lines 2.28 KB
Raw
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 #
8 FROM docker.io/library/debian:13-slim
9
10 # Add deb-src repository sources
11 RUN sed -i "s/^Types: deb$/Types: deb deb-src/" \
12 /etc/apt/sources.list.d/debian.sources
13
14 RUN apt-get update && \
15 DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
16 DEBIAN_FRONTEND=noninteractive eatmydata \
17 # Install common build utilities
18 apt-get install -y --no-install-recommends \
19 curl \
20 wget \
21 gnupg \
22 lsb-release \
23 ccache \
24 xz-utils \
25 zstd \
26 ca-certificates \
27 bison \
28 flex \
29 git \
30 ninja-build \
31 python3-pip \
32 python3-setuptools \
33 python3-tomli \
34 python3-venv \
35 python3-wheel && \
36 # Install QEMU build deps for use in CI
37 DEBIAN_FRONTEND=noninteractive eatmydata \
38 apt build-dep -yy --arch-only qemu && \
39 mkdir -p /usr/libexec/ccache-wrappers && \
40 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \
41 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
42 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
43 ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc && \
44 dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
45
46 ENV LLVM_VERSION=22
47 ENV TOOLCHAIN_RELEASE=22.1.8
48 ENV TOOLCHAIN_URL=https://artifacts.codelinaro.org/artifactory/codelinaro-toolchain-for-hexagon/${TOOLCHAIN_RELEASE}________/hexagon-debs-${TOOLCHAIN_RELEASE}________.tar.gz
49 ENV CCACHE_WRAPPERSDIR=/usr/libexec/ccache-wrappers
50 ENV MAKE=/usr/bin/make
51
52 RUN curl -#SL https://apt.llvm.org/llvm.sh -o /tmp/llvm.sh && \
53 chmod +x /tmp/llvm.sh && \
54 DEBIAN_FRONTEND=noninteractive eatmydata /tmp/llvm.sh ${LLVM_VERSION} && \
55 rm -f /tmp/llvm.sh && \
56 mkdir -p /tmp/hexagon-debs && \
57 curl -#SL "$TOOLCHAIN_URL" | tar -xzC /tmp/hexagon-debs && \
58 DEBIAN_FRONTEND=noninteractive eatmydata \
59 apt-get install -y /tmp/hexagon-debs/*.deb && \
60 rm -rf /tmp/hexagon-debs
61
62 # As a final step configure the user (if env is defined)
63 ARG USER
64 ARG UID
65 RUN if [ "${USER}" ]; then \
66 id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi