xref: /openbmc/qemu/tests/docker/dockerfiles/debian-toolchain.docker (revision fdf250e5a37830615e324017cb3a503e84b3712c)
12eb4461aSRichard Henderson#
22eb4461aSRichard Henderson# Docker toolchain cross-compiler
32eb4461aSRichard Henderson#
42eb4461aSRichard Henderson# This dockerfile is used for building a cross-compiler toolchain.
52eb4461aSRichard Henderson# The script for building the toolchain is supplied via extra-files.
62eb4461aSRichard Henderson#
74239162aSAlex BennéeFROM docker.io/library/debian:11-slim
82eb4461aSRichard Henderson
92eb4461aSRichard Henderson# Install build utilities for building gcc and glibc.
102eb4461aSRichard Henderson# ??? The build-dep isn't working, missing a number of
112eb4461aSRichard Henderson# minimal build dependiencies, e.g. libmpc.
122eb4461aSRichard Henderson
13*13aae9b4SIlya LeoshkevichRUN sed 's/^deb /deb-src /' </etc/apt/sources.list >/etc/apt/sources.list.d/deb-src.list
14*13aae9b4SIlya Leoshkevich
152eb4461aSRichard HendersonRUN apt update && \
162eb4461aSRichard Henderson    DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
172eb4461aSRichard Henderson    DEBIAN_FRONTEND=noninteractive eatmydata \
182eb4461aSRichard Henderson    apt install -y --no-install-recommends \
192eb4461aSRichard Henderson        bison \
204239162aSAlex Bennée        ca-certificates \
212eb4461aSRichard Henderson        flex \
222eb4461aSRichard Henderson        gawk \
232eb4461aSRichard Henderson        libmpc-dev \
242eb4461aSRichard Henderson        libmpfr-dev \
252eb4461aSRichard Henderson        rsync \
262eb4461aSRichard Henderson        wget && \
272eb4461aSRichard Henderson    DEBIAN_FRONTEND=noninteractive eatmydata \
282eb4461aSRichard Henderson    apt build-dep -yy --arch-only gcc glibc
292eb4461aSRichard Henderson
302eb4461aSRichard HendersonADD build-toolchain.sh /root/build-toolchain.sh
312eb4461aSRichard Henderson
322eb4461aSRichard HendersonRUN cd /root && ./build-toolchain.sh
332eb4461aSRichard Henderson
342eb4461aSRichard Henderson# Throw away the extra toolchain build deps, the downloaded source,
35483c3b17SAlex Bennée# and the build trees by restoring the original image,
362eb4461aSRichard Henderson# then copying the built toolchain from stage 0.
37483c3b17SAlex BennéeFROM docker.io/library/debian:11-slim
38*13aae9b4SIlya LeoshkevichRUN apt update && \
39*13aae9b4SIlya Leoshkevich    DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
40*13aae9b4SIlya Leoshkevich    DEBIAN_FRONTEND=noninteractive eatmydata \
41*13aae9b4SIlya Leoshkevich    apt install -y --no-install-recommends \
42*13aae9b4SIlya Leoshkevich        libmpc3
432eb4461aSRichard HendersonCOPY --from=0 /usr/local /usr/local
4493bd2954SAlex Bennée# As a final step configure the user (if env is defined)
4593bd2954SAlex BennéeARG USER
4693bd2954SAlex BennéeARG UID
4793bd2954SAlex BennéeRUN if [ "${USER}" ]; then \
4893bd2954SAlex Bennée  id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
49