Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 1 | # 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 | |
| 16 | FROM coreboot/coreboot-sdk:{{SDK_VERSION}} |
Martin Roth | f75d1df | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 17 | USER root |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 18 | |
Martin Roth | f75d1df | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 19 | RUN apt-get -y update && \ |
| 20 | apt-get -y install \ |
Martin Roth | 1fcf78c | 2022-02-28 15:20:10 -0700 | [diff] [blame] | 21 | default-jre-headless \ |
Felix Singer | b45b48d | 2022-09-01 11:11:12 +0200 | [diff] [blame] | 22 | libcmocka-dev \ |
Elyes Haouas | 9f59d2a | 2023-01-28 11:16:04 +0100 | [diff] [blame^] | 23 | liblua5.4-dev \ |
Martin Roth | 1fcf78c | 2022-02-28 15:20:10 -0700 | [diff] [blame] | 24 | linkchecker \ |
Elyes Haouas | 9f59d2a | 2023-01-28 11:16:04 +0100 | [diff] [blame^] | 25 | lua5.4 \ |
Martin Roth | 1fcf78c | 2022-02-28 15:20:10 -0700 | [diff] [blame] | 26 | meson \ |
| 27 | ninja-build \ |
| 28 | openssh-server \ |
| 29 | parallel \ |
Martin Roth | b3f91b7 | 2022-05-23 16:04:38 -0600 | [diff] [blame] | 30 | ruby-full \ |
Martin Roth | 1fcf78c | 2022-02-28 15:20:10 -0700 | [diff] [blame] | 31 | sdcc \ |
Felix Singer | 98d7157 | 2023-04-06 02:29:23 +0200 | [diff] [blame] | 32 | 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 Singer | fa41fef | 2023-04-09 00:32:39 +0200 | [diff] [blame] | 41 | && pip3 install --upgrade --no-cache-dir --break-system-packages pip \ |
| 42 | && pip3 install --no-cache-dir --break-system-packages \ |
Felix Singer | 98d7157 | 2023-04-06 02:29:23 +0200 | [diff] [blame] | 43 | setuptools==58.2.0 \ |
| 44 | jinja2==3.0.3 \ |
| 45 | recommonmark===0.5.0 \ |
| 46 | sphinx===1.8.3 \ |
| 47 | sphinxcontrib-ditaa===0.6 \ |
| 48 | sphinx_autobuild===0.7.1 \ |
| 49 | sphinx_rtd_theme===0.4.2 \ |
| 50 | && gem install mdl |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 51 | |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 52 | # Because of the way that the variables are being replaced, docker's 'COPY' |
| 53 | # command does not work |
| 54 | RUN mkdir -p /home/coreboot/.ssh && \ |
| 55 | echo "{{SSH_KEY}}" > /home/coreboot/.ssh/authorized_keys && \ |
| 56 | chown -R coreboot:coreboot /home/coreboot/.ssh && \ |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 57 | chmod 0700 /home/coreboot/.ssh && \ |
| 58 | chmod 0600 /home/coreboot/.ssh/authorized_keys |
| 59 | |
| 60 | RUN mkdir /var/run/sshd && \ |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 61 | chmod 0755 /var/run/sshd && \ |
| 62 | /usr/bin/ssh-keygen -A |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 63 | |
Martin Roth | a266299 | 2020-10-25 18:24:34 -0600 | [diff] [blame] | 64 | # Create tmpfs directories to build in |
Martin Roth | 30b7c31 | 2018-07-12 21:49:06 -0600 | [diff] [blame] | 65 | RUN mkdir /cb-build && \ |
| 66 | chown coreboot:coreboot /cb-build && \ |
Martin Roth | 2aba15f | 2020-10-25 18:44:35 -0600 | [diff] [blame] | 67 | echo "tmpfs /cb-build tmpfs rw,mode=1777,noatime 0 0" > /etc/fstab && \ |
Martin Roth | a266299 | 2020-10-25 18:24:34 -0600 | [diff] [blame] | 68 | mkdir -p /home/coreboot/node-root/workspace && \ |
| 69 | chown -R coreboot:coreboot /home/coreboot/node-root && \ |
Martin Roth | 2aba15f | 2020-10-25 18:44:35 -0600 | [diff] [blame] | 70 | echo "tmpfs /home/coreboot/node-root/workspace tmpfs rw,mode=1777,strictatime,atime 0 0" >> /etc/fstab && \ |
Martin Roth | 30b7c31 | 2018-07-12 21:49:06 -0600 | [diff] [blame] | 71 | chown coreboot:coreboot /home/coreboot/.ccache && \ |
| 72 | echo "tmpfs /home/coreboot/.ccache tmpfs rw,mode=1777 0 0" >> /etc/fstab |
| 73 | |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 74 | # Build encapsulate tool |
Patrick Georgi | 3404247 | 2020-02-14 09:51:54 +0100 | [diff] [blame] | 75 | ADD https://raw.githubusercontent.com/coreboot/encapsulate/master/encapsulate.c /tmp/encapsulate.c |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 76 | RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \ |
| 77 | chown root /usr/sbin/encapsulate && \ |
| 78 | chmod +s /usr/sbin/encapsulate |
| 79 | |
Martin Roth | f75d1df | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 80 | VOLUME /data/cache |
Martin Roth | 30b7c31 | 2018-07-12 21:49:06 -0600 | [diff] [blame] | 81 | ENTRYPOINT mount /cb-build && \ |
Martin Roth | a266299 | 2020-10-25 18:24:34 -0600 | [diff] [blame] | 82 | mount /home/coreboot/node-root/workspace && \ |
| 83 | chown -R coreboot:coreboot /home/coreboot/node-root && \ |
Martin Roth | 30b7c31 | 2018-07-12 21:49:06 -0600 | [diff] [blame] | 84 | mount /home/coreboot/.ccache && \ |
| 85 | chown coreboot:coreboot /home/coreboot/.ccache && \ |
| 86 | /usr/sbin/sshd -p 49151 -D |
Martin Roth | f75d1df | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 87 | EXPOSE 49151 |
| 88 | ENV PATH $PATH:/usr/sbin |