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 | 98d7157 | 2023-04-06 02:29:23 +0200 | [diff] [blame] | 41 | && gem install mdl |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 42 | |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 43 | RUN mkdir /var/run/sshd && \ |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 44 | chmod 0755 /var/run/sshd && \ |
| 45 | /usr/bin/ssh-keygen -A |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 46 | |
Martin Roth | a266299 | 2020-10-25 18:24:34 -0600 | [diff] [blame] | 47 | # Create tmpfs directories to build in |
Martin Roth | 30b7c31 | 2018-07-12 21:49:06 -0600 | [diff] [blame] | 48 | RUN mkdir /cb-build && \ |
| 49 | chown coreboot:coreboot /cb-build && \ |
Martin Roth | 2aba15f | 2020-10-25 18:44:35 -0600 | [diff] [blame] | 50 | 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] | 51 | mkdir -p /home/coreboot/node-root/workspace && \ |
| 52 | chown -R coreboot:coreboot /home/coreboot/node-root && \ |
Martin Roth | 2aba15f | 2020-10-25 18:44:35 -0600 | [diff] [blame] | 53 | 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] | 54 | chown coreboot:coreboot /home/coreboot/.ccache && \ |
| 55 | echo "tmpfs /home/coreboot/.ccache tmpfs rw,mode=1777 0 0" >> /etc/fstab |
| 56 | |
Martin Roth | 2d97cb1 | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 57 | # Build encapsulate tool |
Martin Roth | dbc33f9 | 2023-11-10 11:51:35 -0700 | [diff] [blame^] | 58 | 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] | 59 | RUN gcc -o /usr/sbin/encapsulate /tmp/encapsulate.c && \ |
| 60 | chown root /usr/sbin/encapsulate && \ |
| 61 | chmod +s /usr/sbin/encapsulate |
| 62 | |
Martin Roth | f75d1df | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 63 | VOLUME /data/cache |
Martin Roth | 30b7c31 | 2018-07-12 21:49:06 -0600 | [diff] [blame] | 64 | ENTRYPOINT mount /cb-build && \ |
Martin Roth | a266299 | 2020-10-25 18:24:34 -0600 | [diff] [blame] | 65 | mount /home/coreboot/node-root/workspace && \ |
| 66 | chown -R coreboot:coreboot /home/coreboot/node-root && \ |
Martin Roth | 30b7c31 | 2018-07-12 21:49:06 -0600 | [diff] [blame] | 67 | mount /home/coreboot/.ccache && \ |
| 68 | chown coreboot:coreboot /home/coreboot/.ccache && \ |
| 69 | /usr/sbin/sshd -p 49151 -D |
Martin Roth | f75d1df | 2016-05-16 11:27:56 -0600 | [diff] [blame] | 70 | EXPOSE 49151 |
Martin Roth | 1e193d01 | 2023-07-31 09:33:03 -0600 | [diff] [blame] | 71 | |
| 72 | USER coreboot |
| 73 | ENV PATH=$PATH:/home/coreboot/.local/bin |
| 74 | RUN 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 Chin | 2fe63a1 | 2023-02-22 11:55:22 -0700 | [diff] [blame] | 78 | 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 Roth | 1e193d01 | 2023-07-31 09:33:03 -0600 | [diff] [blame] | 84 | && 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 |