blob: 63e28f25f7e4bb613833a123d18fa056c0a3fcc1 [file] [log] [blame]
Kelley Spoon76bcaed2022-04-29 00:11:35 -05001FROM ubuntu:jammy
2
3# Environment variables used by CI scripts
4ENV DEBIAN_FRONTEND=noninteractive
Kelley Spoon76bcaed2022-04-29 00:11:35 -05005ENV TOOLS_DIR=/home/buildslave/tools
Chris Kay25a5a822022-08-24 12:32:30 +01006ENV RUSTUP_HOME=/usr/local/rustup
7ENV CARGO_HOME=/usr/local/cargo
8ENV PATH=${RUSTUP_HOME}/bin:${CARGO_HOME}/bin:${TOOLS_DIR}/bin:${PATH}
Kelley Spoon76bcaed2022-04-29 00:11:35 -05009ENV PLANTUML_JAR_PATH=/usr/share/plantuml/plantuml.jar
10ENV PKG_DEPS="\
11 bc \
12 bison \
13 build-essential \
Boyan Karatotev7c1b88b2023-02-03 11:19:39 +000014 llvm \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050015 clang-tools \
16 cpio \
17 curl \
18 default-jre \
19 device-tree-compiler \
20 doxygen \
Paul Sokolovskyb7c69592023-02-15 08:50:38 +070021 expect \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050022 exuberant-ctags \
23 file \
24 flex \
Chris Kay1ce1f142025-06-23 14:56:48 +010025 fpart \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050026 g++-multilib \
27 gcc-multilib \
28 gdisk \
29 git \
30 gnuplot \
Chris Kay38b498c2023-08-04 17:30:24 +000031 golang-go \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050032 graphviz \
33 jq \
J-Alves4ab2a212023-09-13 17:20:50 +010034 ninja-build \
35 gn \
36 device-tree-compiler \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050037 lcov \
38 libffi-dev \
39 libyaml-dev \
40 libxml-libxml-perl \
41 lld \
42 locales \
Paul Sokolovskyb1878942022-12-14 15:58:18 +030043 openjdk-11-jre-headless \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050044 openssh-server \
45 perl \
46 python3 \
47 python3-pycryptodome \
48 python3-dev \
Arthur She74e63142024-03-11 14:29:11 -070049 python3-git \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050050 python3-psutil \
51 python3-pyasn1 \
52 python3-venv \
53 python2.7 \
Zachary Leaf8b50ab22024-09-10 11:36:06 +010054 qemu-system-arm \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050055 srecord \
56 sudo \
57 tree \
58 unzip \
59 util-linux \
60 uuid-runtime \
61 virtualenv \
62 wget \
63 zip \
J-Alvesc2ffdd62024-08-01 13:44:42 +010064 libncurses5 \
Kelley Spoon76bcaed2022-04-29 00:11:35 -050065"
66
67# Can be overriden at build time
68ARG BUILDSLAVE_PASSWORD=buildslave
69
70COPY requirements_*.txt /opt/
71COPY tf-*.install /tmp/
72COPY setup-sshd /usr/sbin/setup-sshd
73
Paul Sokolovsky86e18d42022-11-20 23:19:43 +030074# Copy armclang toolchains
Paul Sokolovsky22828612023-10-11 21:06:15 +030075COPY ARMCompiler*.tar.gz /tmp/
Paul Sokolovsky86e18d42022-11-20 23:19:43 +030076
Paul Sokolovsky06beab32022-11-15 19:21:08 +030077RUN set -ex ;\
Kelley Spoon76bcaed2022-04-29 00:11:35 -050078 echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections ;\
79 echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections ;\
80 # Set Python 3 as default
81 ln -s -f /usr/bin/python3 /usr/bin/python ;\
82 # Set symlink for python2 if not present
83 [ -L /usr/bin/python2 ] || ln -s /usr/bin/python2.7 /usr/bin/python2;\
84 apt update -q=2 ;\
85 apt dist-upgrade -q=2 --yes ;\
86 apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} ;\
87 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash ;\
88 apt update -q=2 ;\
89 apt install -q=2 --yes --no-install-recommends git-lfs ;\
90 # Install Python requirements
91 curl -s https://bootstrap.pypa.io/pip/3.5/get-pip.py -o /tmp/get-pip.py ;\
92 python2 /tmp/get-pip.py ;\
93 pip2 install --no-cache-dir -r /opt/requirements_python2.txt ;\
94 python3 /tmp/get-pip.py ;\
95 pip3 install --no-cache-dir -r /opt/requirements_python3.txt ;\
96 # Setup buildslave user for Jenkins
97 useradd -m -s /bin/bash buildslave ;\
98 echo "buildslave:$BUILDSLAVE_PASSWORD" | chpasswd ;\
99 echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins ;\
100 chmod 0440 /etc/sudoers.d/jenkins ;\
101 # FIXME: add /arm as a temporary workaround until ARM CI moves to Open CI paths
102 mkdir -p /var/run/sshd ${TOOLS_DIR} /arm ;\
103 # Run shell script(s) to install files, toolchains, etc...
104 bash -ex /tmp/tf-dependencies.install ;\
105 bash -ex /tmp/tf-environment.install ;\
106 # Fix permissions
107 chown -R buildslave:buildslave ${TOOLS_DIR} /usr/share/plantuml /nfs/downloads/linaro /arm ;\
108 # Cleanup
109 apt clean ;\
110 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
111
Chris Kay25a5a822022-08-24 12:32:30 +0100112RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
Tomás González3b160082025-04-08 13:55:08 +0100113 sh -s -- --default-toolchain 1.85.0 -y
Zachary Leaf8b50ab22024-09-10 11:36:06 +0100114RUN set -ex ;\
Tomás González85bfbbb2025-05-29 17:20:56 +0100115 cargo install --locked 'tokei@12.1.*' ;\
116 cargo install --locked cargo-binutils ;\
Tomás González80ea5fc2025-04-30 18:03:24 +0100117 cargo install --locked cargo-vet ;\
Olivier Deprez5b3d9062024-12-03 10:37:47 +0100118 rustup target add aarch64-unknown-none-softfloat ;\
Zachary Leaf164b09d2024-10-01 13:53:44 +0100119 rustup component add llvm-tools rustfmt
Chris Kay25a5a822022-08-24 12:32:30 +0100120
Chris Kayde72f462022-10-12 14:03:08 +0100121ENV NVM_DIR="/home/buildslave/.nvm"
122ENV BASH_ENV="${NVM_DIR}/nvm.sh"
123
124RUN echo "BASH_ENV=${BASH_ENV}" >> /etc/environment
125RUN echo "NVM_DIR=${NVM_DIR}" >> /etc/environment
126
127USER buildslave
128
129RUN curl -s "https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh" | bash
130RUN bash -c "nvm install 14"
131
132USER root
133
Kelley Spoon76bcaed2022-04-29 00:11:35 -0500134EXPOSE 22
135ENTRYPOINT ["/usr/sbin/setup-sshd"]