blob: ae29e435ede42e31934ee464e44a3bec9523a39a [file] [log] [blame]
Martin Roth561f3682016-12-30 17:00:19 -07001# This dockerfile is not meant to be used directly by docker. The
2# {{}} varibles are replaced with values by the makefile. Please generate
3# the docker image for this file by running:
4#
5# make coreboot-jenkins-node
6#
7# Variables can be updated on the make command line or left blank to use
8# the default values set by the makefile.
9#
10# SDK_VERSION is used to name the version of the coreboot sdk to use.
11# Typically, this corresponds to the toolchain version.
12# SSH_KEY is the contents of the file coreboot-jenkins-node/authorized_keys
13# Because we're piping the contents of the dockerfile into the
14# docker build command, the 'COPY' keyword isn't valid.
15
16FROM coreboot/coreboot-sdk:{{SDK_VERSION}}
Martin Rothf75d1df2016-05-16 11:27:56 -060017USER root
Martin Roth2d97cb12016-05-16 11:27:56 -060018
Martin Rothf75d1df2016-05-16 11:27:56 -060019RUN apt-get -y update && \
20 apt-get -y install \
Martin Roth1fcf78c2022-02-28 15:20:10 -070021 default-jre-headless \
Felix Singerb45b48d2022-09-01 11:11:12 +020022 libcmocka-dev \
Elyes Haouas9f59d2a2023-01-28 11:16:04 +010023 liblua5.4-dev \
Martin Roth1fcf78c2022-02-28 15:20:10 -070024 linkchecker \
Elyes Haouas9f59d2a2023-01-28 11:16:04 +010025 lua5.4 \
Martin Roth1fcf78c2022-02-28 15:20:10 -070026 meson \
27 ninja-build \
28 openssh-server \
29 parallel \
Martin Rothb3f91b72022-05-23 16:04:38 -060030 ruby-full \
Martin Roth1fcf78c2022-02-28 15:20:10 -070031 sdcc \
Felix Singer98d71572023-04-06 02:29:23 +020032 python3-pip \
33 pykwalify \
34 python3-yaml \
35 python3-pyelftools \
36 python3-jsonschema \
37 python3-colorama \
38 python3-pyrsistent \
39 swig \
40 && apt-get clean \
Felix Singer98d71572023-04-06 02:29:23 +020041 && gem install mdl
Martin Roth2d97cb12016-05-16 11:27:56 -060042
Martin Roth2d97cb12016-05-16 11:27:56 -060043RUN mkdir /var/run/sshd && \
Martin Roth561f3682016-12-30 17:00:19 -070044 chmod 0755 /var/run/sshd && \
45 /usr/bin/ssh-keygen -A
Martin Roth2d97cb12016-05-16 11:27:56 -060046
Martin Rotha2662992020-10-25 18:24:34 -060047# Create tmpfs directories to build in
Martin Roth30b7c312018-07-12 21:49:06 -060048RUN mkdir /cb-build && \
49 chown coreboot:coreboot /cb-build && \
Martin Roth2aba15f2020-10-25 18:44:35 -060050 echo "tmpfs /cb-build tmpfs rw,mode=1777,noatime 0 0" > /etc/fstab && \
Martin Rotha2662992020-10-25 18:24:34 -060051 mkdir -p /home/coreboot/node-root/workspace && \
52 chown -R coreboot:coreboot /home/coreboot/node-root && \
Martin Roth2aba15f2020-10-25 18:44:35 -060053 echo "tmpfs /home/coreboot/node-root/workspace tmpfs rw,mode=1777,strictatime,atime 0 0" >> /etc/fstab && \
Martin Roth30b7c312018-07-12 21:49:06 -060054 chown coreboot:coreboot /home/coreboot/.ccache && \
55 echo "tmpfs /home/coreboot/.ccache tmpfs rw,mode=1777 0 0" >> /etc/fstab
56
Martin Roth2d97cb12016-05-16 11:27:56 -060057# Build encapsulate tool
Martin Rothdbc33f92023-11-10 11:51:35 -070058ADD https://raw.githubusercontent.com/coreboot/encapsulate/master/encapsulate.c /tmp/encapsulate.c
Martin Roth2d97cb12016-05-16 11:27:56 -060059RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \
60 chown root /usr/sbin/encapsulate && \
61 chmod +s /usr/sbin/encapsulate
62
Martin Rothf75d1df2016-05-16 11:27:56 -060063VOLUME /data/cache
Martin Roth30b7c312018-07-12 21:49:06 -060064ENTRYPOINT mount /cb-build && \
Martin Rotha2662992020-10-25 18:24:34 -060065 mount /home/coreboot/node-root/workspace && \
66 chown -R coreboot:coreboot /home/coreboot/node-root && \
Martin Roth30b7c312018-07-12 21:49:06 -060067 mount /home/coreboot/.ccache && \
68 chown coreboot:coreboot /home/coreboot/.ccache && \
69 /usr/sbin/sshd -p 49151 -D
Martin Rothf75d1df2016-05-16 11:27:56 -060070EXPOSE 49151
Martin Roth1e193d012023-07-31 09:33:03 -060071
72USER coreboot
73ENV PATH=$PATH:/home/coreboot/.local/bin
74RUN echo "export PATH=$PATH:/opt/xgcc/bin" >> /home/coreboot/.bashrc && \
75 pip3 install --upgrade --no-cache-dir pip \
76 && pip3 install --no-cache-dir \
77 setuptools==58.2.0 \
Nicholas Chin2fe63a12023-02-22 11:55:22 -070078 jinja2==3.1.2 \
79 recommonmark===0.7.1 \
80 sphinx===6.2.1 \
81 sphinxcontrib-ditaa===1.0.2 \
82 sphinx_autobuild===2021.3.14 \
83 sphinx_rtd_theme===1.2.2 \
Martin Roth1e193d012023-07-31 09:33:03 -060084 && mkdir -p /home/coreboot/.ssh && \
85 echo "{{SSH_KEY}}" > /home/coreboot/.ssh/authorized_keys && \
86 chmod 0700 /home/coreboot/.ssh && \
87 chmod 0600 /home/coreboot/.ssh/authorized_keys