| # |
| # Docker toolchain cross-compiler |
| # |
| # This dockerfile is used for building a cross-compiler toolchain. |
| # The script for building the toolchain is supplied via extra-files. |
| # |
| FROM docker.io/library/debian:11-slim |
| |
| # Install build utilities for building gcc and glibc. |
| # ??? The build-dep isn't working, missing a number of |
| # minimal build dependiencies, e.g. libmpc. |
| |
| RUN apt update && \ |
| DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ |
| DEBIAN_FRONTEND=noninteractive eatmydata \ |
| apt install -y --no-install-recommends \ |
| bison \ |
| ca-certificates \ |
| flex \ |
| gawk \ |
| libmpc-dev \ |
| libmpfr-dev \ |
| rsync \ |
| wget && \ |
| DEBIAN_FRONTEND=noninteractive eatmydata \ |
| apt build-dep -yy --arch-only gcc glibc |
| |
| ADD build-toolchain.sh /root/build-toolchain.sh |
| |
| RUN cd /root && ./build-toolchain.sh |
| |
| # Throw away the extra toolchain build deps, the downloaded source, |
| # and the build trees by restoring the original image, |
| # then copying the built toolchain from stage 0. |
| FROM docker.io/library/debian:11-slim |
| COPY --from=0 /usr/local /usr/local |
| # As a final step configure the user (if env is defined) |
| ARG USER |
| ARG UID |
| RUN if [ "${USER}" ]; then \ |
| id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi |