1#
2# Docker cross-compiler target
3#
4# This docker target uses prebuilt toolchains for LoongArch64 from:
5# https://github.com/loongson/build-tools/releases
6#
7FROM docker.io/library/debian:11-slim
8
9# Duplicate deb line as deb-src
10RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
11
12RUN export DEBIAN_FRONTEND=noninteractive && \
13    apt-get update && \
14    apt-get install -y eatmydata && \
15    eatmydata apt-get dist-upgrade -y && \
16    apt build-dep -yy qemu
17
18RUN apt-get update && \
19    DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
20    DEBIAN_FRONTEND=noninteractive eatmydata \
21    apt-get install -y --no-install-recommends \
22        build-essential \
23        bison \
24        ca-certificates \
25        ccache \
26        clang  \
27        flex \
28        curl \
29        gettext \
30        git \
31        ninja-build \
32        python3-pip \
33        python3-setuptools \
34        python3-venv \
35        python3-wheel && \
36        dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
37
38RUN /usr/bin/pip3 install tomli
39
40RUN curl -#SL https://github.com/loongson/build-tools/releases/download/2023.08.08/CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz \
41    | tar -xJC /opt
42
43ENV PATH $PATH:/opt/cross-tools/bin
44ENV LD_LIBRARY_PATH /opt/cross-tools/lib:/opt/cross-tools/loongarch64-unknown-linux-gnu/lib:$LD_LIBRARY_PATH
45
46ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
47ENV DEF_TARGET_LIST loongarch64-linux-user,loongarch-softmmu
48ENV MAKE /usr/bin/make
49
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