blob: f1ab4e9a9cc40d5160b2d4f43e06627d9e2f70d5 [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 \
Martin Roth162b6482023-11-10 13:20:18 -070034 python3-venv \
Felix Singer98d71572023-04-06 02:29:23 +020035 python3-yaml \
36 python3-pyelftools \
37 python3-jsonschema \
38 python3-colorama \
39 python3-pyrsistent \
40 swig \
41 && apt-get clean \
Felix Singer98d71572023-04-06 02:29:23 +020042 && gem install mdl
Martin Roth2d97cb12016-05-16 11:27:56 -060043
Martin Roth2d97cb12016-05-16 11:27:56 -060044RUN mkdir /var/run/sshd && \
Martin Roth561f3682016-12-30 17:00:19 -070045 chmod 0755 /var/run/sshd && \
46 /usr/bin/ssh-keygen -A
Martin Roth2d97cb12016-05-16 11:27:56 -060047
Martin Rotha2662992020-10-25 18:24:34 -060048# Create tmpfs directories to build in
Martin Roth30b7c312018-07-12 21:49:06 -060049RUN mkdir /cb-build && \
50 chown coreboot:coreboot /cb-build && \
Martin Roth2aba15f2020-10-25 18:44:35 -060051 echo "tmpfs /cb-build tmpfs rw,mode=1777,noatime 0 0" > /etc/fstab && \
Martin Rotha2662992020-10-25 18:24:34 -060052 mkdir -p /home/coreboot/node-root/workspace && \
53 chown -R coreboot:coreboot /home/coreboot/node-root && \
Martin Roth2aba15f2020-10-25 18:44:35 -060054 echo "tmpfs /home/coreboot/node-root/workspace tmpfs rw,mode=1777,strictatime,atime 0 0" >> /etc/fstab && \
Martin Roth30b7c312018-07-12 21:49:06 -060055 chown coreboot:coreboot /home/coreboot/.ccache && \
56 echo "tmpfs /home/coreboot/.ccache tmpfs rw,mode=1777 0 0" >> /etc/fstab
57
Martin Roth2d97cb12016-05-16 11:27:56 -060058# Build encapsulate tool
Martin Rothdbc33f92023-11-10 11:51:35 -070059ADD https://raw.githubusercontent.com/coreboot/encapsulate/master/encapsulate.c /tmp/encapsulate.c
Martin Roth2d97cb12016-05-16 11:27:56 -060060RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \
61 chown root /usr/sbin/encapsulate && \
62 chmod +s /usr/sbin/encapsulate
63
Martin Rothf75d1df2016-05-16 11:27:56 -060064VOLUME /data/cache
Martin Roth30b7c312018-07-12 21:49:06 -060065ENTRYPOINT mount /cb-build && \
Martin Rotha2662992020-10-25 18:24:34 -060066 mount /home/coreboot/node-root/workspace && \
67 chown -R coreboot:coreboot /home/coreboot/node-root && \
Martin Roth30b7c312018-07-12 21:49:06 -060068 mount /home/coreboot/.ccache && \
69 chown coreboot:coreboot /home/coreboot/.ccache && \
70 /usr/sbin/sshd -p 49151 -D
Martin Rothf75d1df2016-05-16 11:27:56 -060071EXPOSE 49151
Martin Roth1e193d012023-07-31 09:33:03 -060072
73USER coreboot
Martin Roth162b6482023-11-10 13:20:18 -070074ENV VIRTUAL_ENV="/home/coreboot/python3"
75ENV PATH=$VIRTUAL_ENV/bin:$PATH:/home/coreboot/.local/bin
76RUN echo 'export PATH=$PATH:/opt/xgcc/bin' >> /home/coreboot/.bashrc && \
77 echo "source ${VIRTUAL_ENV}/bin/activate" >> /home/coreboot/.bashrc && \
78 python3 -m venv /home/coreboot/python3 && \
79 pip3 install --upgrade --no-cache-dir pip && \
80 pip3 install --no-cache-dir \
Martin Roth1e193d012023-07-31 09:33:03 -060081 setuptools==58.2.0 \
Nicholas Chin2fe63a12023-02-22 11:55:22 -070082 jinja2==3.1.2 \
83 recommonmark===0.7.1 \
84 sphinx===6.2.1 \
85 sphinxcontrib-ditaa===1.0.2 \
86 sphinx_autobuild===2021.3.14 \
87 sphinx_rtd_theme===1.2.2 \
Martin Roth1e193d012023-07-31 09:33:03 -060088 && mkdir -p /home/coreboot/.ssh && \
89 echo "{{SSH_KEY}}" > /home/coreboot/.ssh/authorized_keys && \
90 chmod 0700 /home/coreboot/.ssh && \
91 chmod 0600 /home/coreboot/.ssh/authorized_keys
Martin Roth0bb9dcc2023-11-15 15:29:04 -070092USER root