blob: ecada143b39f42b9a1935b74478b5ad5b81accba [file] [log] [blame]
Tim Crawfordd3a89cd2023-08-29 08:29:40 -06001# Generate the docker image for this file by running:
Martin Roth561f3682016-12-30 17:00:19 -07002#
3# make coreboot-sdk
Martin Roth561f3682016-12-30 17:00:19 -07004
Patrick Georgic9e52942021-01-27 12:34:35 +01005FROM debian:sid AS coreboot-sdk
Martin Roth2d97cb12016-05-16 11:27:56 -06006
Tim Crawfordd3a89cd2023-08-29 08:29:40 -06007# The coreboot Commit-ID to build the toolchain from.
8ARG DOCKER_COMMIT
9# The version of the coreboot sdk to use. Typically, this corresponds to the
10# toolchain version. This is used to identify this docker image.
11ARG SDK_VERSION
12ARG CROSSGCC_PARAM
13
Martin Rothf75d1df2016-05-16 11:27:56 -060014RUN \
15 useradd -p locked -m coreboot && \
16 apt-get -qq update && \
Felix Singerebb16942023-06-25 01:20:23 +020017 apt-get -qqy install --no-install-recommends \
Felix Singerf5f1ff32023-10-22 17:22:29 +020018 bash-completion \
Martin Rothe7d92482017-10-04 20:53:18 -060019 bc \
Martin Rothbea2d752017-09-17 17:35:52 -060020 bison \
Martin Roth93e6bba2021-11-08 07:55:09 -070021 bsdextrautils \
Martin Rothbea2d752017-09-17 17:35:52 -060022 bzip2 \
Felix Singerebb16942023-06-25 01:20:23 +020023 ca-certificates \
Martin Rothbea2d752017-09-17 17:35:52 -060024 ccache \
25 cmake \
Martin Rothbd8e6dd2020-10-25 15:07:07 -060026 cscope \
Martin Rothbea2d752017-09-17 17:35:52 -060027 curl \
Patrick Rudolphb90c0d92018-04-04 15:54:26 +020028 device-tree-compiler \
Martin Rothbea2d752017-09-17 17:35:52 -060029 dh-autoreconf \
30 diffutils \
Martin Rothbd8e6dd2020-10-25 15:07:07 -060031 exuberant-ctags \
Martin Rothbea2d752017-09-17 17:35:52 -060032 flex \
33 g++ \
34 gawk \
35 gcc \
36 git \
Felix Singerbbb2f302023-08-15 22:58:26 +020037 gnat-13 \
Wim Vervoorn01bfa532020-02-03 15:59:07 +010038 golang \
Tom Hiller520c8c02022-08-28 19:57:00 -040039 graphicsmagick-imagemagick-compat \
Martin Roth67403ed2018-05-18 21:53:24 -060040 graphviz \
Martin Roth93e6bba2021-11-08 07:55:09 -070041 lcov \
Felix Singerebb16942023-06-25 01:20:23 +020042 less \
Martin Roth68437552023-11-16 15:14:00 -070043 libcapture-tiny-perl \
Martin Rothd727fb52019-04-05 09:53:16 -060044 libcrypto++-dev \
Martin Roth92bc8362019-12-23 15:07:03 -070045 libcurl4 \
46 libcurl4-openssl-dev \
Martin Roth68437552023-11-16 15:14:00 -070047 libdatetime-perl \
Wim Vervoorn01bfa532020-02-03 15:59:07 +010048 libelf-dev \
Martin Roth50a09cf2023-08-20 12:08:17 -060049 libfreetype-dev \
Martin Roth215bc532018-01-28 16:13:38 -070050 libftdi1-dev \
Martin Rothbea2d752017-09-17 17:35:52 -060051 libglib2.0-dev \
52 libgmp-dev \
Martin Roth0cbc3522023-01-20 16:58:54 -070053 libgpiod-dev \
Nico Huber885d9632018-08-16 23:11:55 +020054 libjaylink-dev \
Martin Rothbea2d752017-09-17 17:35:52 -060055 liblzma-dev \
Martin Rothf89bb822023-11-01 16:17:27 -060056 libnss3-dev \
Martin Rothbaf82802023-07-21 14:36:59 -060057 libncurses-dev \
Martin Rothbea2d752017-09-17 17:35:52 -060058 libpci-dev \
59 libreadline-dev \
Martin Rothd727fb52019-04-05 09:53:16 -060060 libssl-dev \
Martin Roth68437552023-11-16 15:14:00 -070061 libtimedate-perl \
Martin Rothbea2d752017-09-17 17:35:52 -060062 libusb-1.0-0-dev \
Martin Rothbea2d752017-09-17 17:35:52 -060063 libxml2-dev \
64 libyaml-dev \
65 m4 \
66 make \
Arthur Heymans55b3c042024-02-23 19:03:16 +010067 meson \
Martin Rothbf78d072018-01-22 21:29:06 -070068 msitools \
Felix Singerebb16942023-06-25 01:20:23 +020069 neovim \
Arthur Heymans55b3c042024-02-23 19:03:16 +010070 ninja-build \
Felix Singerebb16942023-06-25 01:20:23 +020071 openssh-client \
Martin Rothbea2d752017-09-17 17:35:52 -060072 openssl \
Tom Hillerdaf6b8b2022-08-28 20:40:14 -040073 parted \
Martin Rothbea2d752017-09-17 17:35:52 -060074 patch \
Martin Rothbd8e6dd2020-10-25 15:07:07 -060075 pbzip2 \
Martin Rothbea2d752017-09-17 17:35:52 -060076 pkg-config \
Martin Roth1ba86f62020-09-10 08:59:35 -060077 python3 \
Elyes Haouasfda10a42023-06-17 10:36:53 +020078 python-is-python3 \
Felix Singeracbdc4d2022-08-20 11:16:05 +020079 qemu-system-arm \
80 qemu-system-misc \
81 qemu-system-ppc \
82 qemu-system-x86 \
Martin Rothbf78d072018-01-22 21:29:06 -070083 rsync \
Tom Hillerdaf6b8b2022-08-28 20:40:14 -040084 sharutils \
Martin Rothbea2d752017-09-17 17:35:52 -060085 shellcheck \
Martin Rothbea2d752017-09-17 17:35:52 -060086 unifont \
Tom Hillerdaf6b8b2022-08-28 20:40:14 -040087 unzip \
Martin Rothbea2d752017-09-17 17:35:52 -060088 uuid-dev \
89 vim-common \
90 wget \
91 xz-utils \
92 zlib1g-dev \
Elyes Haouas33201ab2023-07-24 19:44:12 +020093 && apt-get clean
Martin Roth2d97cb12016-05-16 11:27:56 -060094
95RUN \
Martin Rothebeec5a2020-10-25 15:16:00 -060096 cd /tmp && \
Paul Menzela8843de2017-06-05 12:33:23 +020097 git clone https://review.coreboot.org/coreboot && \
Nico Huberdd477e92018-11-04 16:16:29 +010098 cd coreboot && \
Tim Crawfordd3a89cd2023-08-29 08:29:40 -060099 git checkout ${DOCKER_COMMIT}; \
100 if echo ${CROSSGCC_PARAM} | grep -q ^all; then \
Martin Rothebeec5a2020-10-25 15:16:00 -0600101 make -C /tmp/coreboot/util/crossgcc/ build_clang \
Nico Huberdd477e92018-11-04 16:16:29 +0100102 BUILD_LANGUAGES=c,ada CPUS=$(nproc) DEST=/opt/xgcc; \
Martin Rothebeec5a2020-10-25 15:16:00 -0600103 fi; \
Tim Crawfordd3a89cd2023-08-29 08:29:40 -0600104 make -C /tmp/coreboot/util/crossgcc/ ${CROSSGCC_PARAM} \
Martin Rothf0eda822017-03-23 16:13:58 -0600105 BUILD_LANGUAGES=c,ada CPUS=$(nproc) DEST=/opt/xgcc && \
Martin Rothebeec5a2020-10-25 15:16:00 -0600106 rm -rf /tmp/coreboot
Martin Roth2d97cb12016-05-16 11:27:56 -0600107
108RUN mkdir /home/coreboot/.ccache && \
109 chown coreboot:coreboot /home/coreboot/.ccache && \
110 mkdir /home/coreboot/cb_build && \
Martin Rothbea2d752017-09-17 17:35:52 -0600111 chown coreboot:coreboot /home/coreboot/cb_build && \
112 echo "export PATH=$PATH:/opt/xgcc/bin" >> /home/coreboot/.bashrc && \
Tim Crawfordd3a89cd2023-08-29 08:29:40 -0600113 echo "export SDK_VERSION=${SDK_VERSION}" >> /home/coreboot/.bashrc && \
114 echo "export SDK_COMMIT=${DOCKER_COMMIT}" >> /home/coreboot/.bashrc
Martin Rothbea2d752017-09-17 17:35:52 -0600115
Martin Rothf75d1df2016-05-16 11:27:56 -0600116ENV PATH $PATH:/opt/xgcc/bin
Tim Crawfordd3a89cd2023-08-29 08:29:40 -0600117ENV SDK_VERSION=${SDK_VERSION}
118ENV SDK_COMMIT=${DOCKER_COMMIT}
Martin Rothf75d1df2016-05-16 11:27:56 -0600119USER coreboot
Martin Roth7d520ff2020-10-25 15:19:40 -0600120
Patrick Georgic9e52942021-01-27 12:34:35 +0100121FROM coreboot-sdk
Patrick Georgic9e52942021-01-27 12:34:35 +0100122VOLUME /home/coreboot/.ccache