blob: 931ecd2755f14c481368b17ecf29152682d97aab [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 \
14 clang-tools \
15 cpio \
16 curl \
17 default-jre \
18 device-tree-compiler \
19 doxygen \
20 exuberant-ctags \
21 file \
22 flex \
23 g++-multilib \
24 gcc-multilib \
25 gdisk \
26 git \
27 gnuplot \
28 graphviz \
29 jq \
30 lcov \
31 libffi-dev \
32 libyaml-dev \
33 libxml-libxml-perl \
34 lld \
35 locales \
36 openjdk-8-jdk \
37 openssh-server \
38 perl \
39 python3 \
40 python3-pycryptodome \
41 python3-dev \
42 python3-psutil \
43 python3-pyasn1 \
44 python3-venv \
45 python2.7 \
46 srecord \
47 sudo \
48 tree \
49 unzip \
50 util-linux \
51 uuid-runtime \
52 virtualenv \
53 wget \
54 zip \
55"
56
57# Can be overriden at build time
58ARG BUILDSLAVE_PASSWORD=buildslave
59
60COPY requirements_*.txt /opt/
61COPY tf-*.install /tmp/
62COPY setup-sshd /usr/sbin/setup-sshd
63
Paul Sokolovsky06beab32022-11-15 19:21:08 +030064RUN set -ex ;\
Kelley Spoon76bcaed2022-04-29 00:11:35 -050065 echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections ;\
66 echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections ;\
67 # Set Python 3 as default
68 ln -s -f /usr/bin/python3 /usr/bin/python ;\
69 # Set symlink for python2 if not present
70 [ -L /usr/bin/python2 ] || ln -s /usr/bin/python2.7 /usr/bin/python2;\
71 apt update -q=2 ;\
72 apt dist-upgrade -q=2 --yes ;\
73 apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} ;\
74 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash ;\
75 apt update -q=2 ;\
76 apt install -q=2 --yes --no-install-recommends git-lfs ;\
77 # Install Python requirements
78 curl -s https://bootstrap.pypa.io/pip/3.5/get-pip.py -o /tmp/get-pip.py ;\
79 python2 /tmp/get-pip.py ;\
80 pip2 install --no-cache-dir -r /opt/requirements_python2.txt ;\
81 python3 /tmp/get-pip.py ;\
82 pip3 install --no-cache-dir -r /opt/requirements_python3.txt ;\
83 # Setup buildslave user for Jenkins
84 useradd -m -s /bin/bash buildslave ;\
85 echo "buildslave:$BUILDSLAVE_PASSWORD" | chpasswd ;\
86 echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins ;\
87 chmod 0440 /etc/sudoers.d/jenkins ;\
88 # FIXME: add /arm as a temporary workaround until ARM CI moves to Open CI paths
89 mkdir -p /var/run/sshd ${TOOLS_DIR} /arm ;\
90 # Run shell script(s) to install files, toolchains, etc...
91 bash -ex /tmp/tf-dependencies.install ;\
92 bash -ex /tmp/tf-environment.install ;\
93 # Fix permissions
94 chown -R buildslave:buildslave ${TOOLS_DIR} /usr/share/plantuml /nfs/downloads/linaro /arm ;\
95 # Cleanup
96 apt clean ;\
97 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
98
Chris Kay25a5a822022-08-24 12:32:30 +010099RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
100 sh -s -- --default-toolchain stable -y
Chris Kay00caca02022-08-25 11:37:24 +0100101RUN cargo install 'tokei@12.1.*'
Chris Kay25a5a822022-08-24 12:32:30 +0100102
Chris Kayde72f462022-10-12 14:03:08 +0100103ENV NVM_DIR="/home/buildslave/.nvm"
104ENV BASH_ENV="${NVM_DIR}/nvm.sh"
105
106RUN echo "BASH_ENV=${BASH_ENV}" >> /etc/environment
107RUN echo "NVM_DIR=${NVM_DIR}" >> /etc/environment
108
109USER buildslave
110
111RUN curl -s "https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh" | bash
112RUN bash -c "nvm install 14"
113
114USER root
115
Kelley Spoon76bcaed2022-04-29 00:11:35 -0500116EXPOSE 22
117ENTRYPOINT ["/usr/sbin/setup-sshd"]