blob: 174f76414588bfa0f707fee6797208495ee76879 [file] [log] [blame]
Arthur Shefebfe862024-07-29 14:43:19 +08001FROM ubuntu:jammy
2
3# Environment variables used by CI scripts
4ENV ARMLMD_LICENSE_FILE=27000@flexnet.trustedfirmware.org
5ENV DOCKER_PREFIX=987685672616.dkr.ecr.us-east-1.amazonaws.com
6ENV LICENSE_VARIABLE=ARMLMD_LICENSE_FILE=27000@flexnet.trustedfirmware.org
7
8ENV DEBIAN_FRONTEND=noninteractive
9ENV TOOLS_DIR=/home/buildslave/tools
10ENV PLANTUML_JAR_PATH=/usr/share/plantuml/plantuml.jar
11ENV COMPILER_DIR=/home/buildslave/compiler
12ENV GCC_7_3_1_DIR=${COMPILER_DIR}/gcc-7-3-1
13ENV GCC_7_3_1_PATH=${GCC_7_3_1_DIR}/bin
14ENV GCC_10_3_DIR=${COMPILER_DIR}/gcc-10-3
15ENV GCC_10_3_PATH=${GCC_10_3_DIR}/bin
16ENV GCC_11_2_DIR=${COMPILER_DIR}/gcc-11-2
17ENV GCC_11_2_PATH=${GCC_11_2_DIR}/bin
18ENV GCC_13_2_DIR=${COMPILER_DIR}/gcc-13-2
19ENV GCC_13_2_PATH=${GCC_13_2_DIR}/bin
20ENV ARMCLANG_6_20_DIR=${COMPILER_DIR}/armclang-6-20
21ENV ARMCLANG_6_20_PATH=${ARMCLANG_6_20_DIR}/bin
22ENV ARMCLANG_6_21_DIR=${COMPILER_DIR}/armclang-6-21
23ENV ARMCLANG_6_21_PATH=${ARMCLANG_6_21_DIR}/bin
Arthur She47dbf342024-08-15 10:14:17 +080024ENV IAR_DIR=/opt/iarsystems/bxarm
25ENV IAR_PATH=${IAR_DIR}/arm/bin
26ENV IAR_9_40_2_DIR=${IAR_DIR}
27ENV IAR_9_40_2_PATH=${IAR_PATH}
28ENV IAR_9_50_2_DIR=${IAR_DIR}
29ENV IAR_9_50_2_PATH=${IAR_PATH}
30ENV PATH=${TOOLS_DIR}/bin:${PATH}:${IAR_PATH}:${IAR_DIR}/common/bin
Arthur Shefebfe862024-07-29 14:43:19 +080031ENV PKG_DEPS="\
32 bison \
33 build-essential \
34 clang-tools \
35 curl \
36 default-jre \
37 device-tree-compiler \
38 doxygen \
39 exuberant-ctags \
40 flex \
41 g++-multilib \
42 gcc-multilib \
43 gdisk \
44 git \
45 graphviz \
46 jq \
47 ninja-build \
48 lcov \
49 libcurl4 \
50 libffi-dev \
51 librsvg2-bin \
52 libssl-dev \
Arthur She0ce2b712024-08-15 21:36:06 +080053 libusb-1.0-0 \
Arthur Shefebfe862024-07-29 14:43:19 +080054 libxml-libxml-perl \
55 locales \
56 openjdk-11-jre-headless \
57 openssh-server \
58 perl \
59 python3-psutil \
60 python3 \
61 python3-cryptography \
62 python3-pycryptodome \
63 python3-dev \
64 python3-psutil \
65 python3-pyasn1 \
66 python3-venv \
67 python2.7 \
68 srecord \
69 sudo \
70 tree \
71 unzip \
72 uuid-runtime \
73 virtualenv \
74 wget \
75 zip \
76"
77
78# Can be overriden at build time
79ARG BUILDSLAVE_PASSWORD=buildslave
80
81# IAR License
82ARG IAR_LIC_NR=12345678
83ARG IAR_LIC_EMAIL=donttellyou@noemail.com
84ARG IAR_PACKAGE=bxarm-9.40.2.deb
Arthur Shedf282172024-08-15 15:33:04 +080085ENV IAR_PACKAGE=${IAR_PACKAGE}
Arthur Shefebfe862024-07-29 14:43:19 +080086
87COPY ${IAR_PACKAGE} /tmp/
88COPY requirements_*.txt /opt/
89COPY tf-*.install /tmp/
90COPY setup-sshd /usr/sbin/setup-sshd
91
92# Copy armclang toolchains
93COPY ARMCompiler*.tar.gz /tmp/
94
95RUN set -ex ;\
96 echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections ;\
97 echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections ;\
98 # Set Python 3 as default
99 ln -s -f /usr/bin/python3 /usr/bin/python ;\
100 # Set symlink for python2 if not present
101 [ -L /usr/bin/python2 ] || ln -s /usr/bin/python2.7 /usr/bin/python2;\
102 apt update -q=2 ;\
103 apt dist-upgrade -q=2 --yes ;\
104 apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} ;\
105 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash ;\
106 apt update -q=2 ;\
107 apt install -q=2 --yes --no-install-recommends git-lfs ;\
108 # Install Python requirements
109 curl -s https://bootstrap.pypa.io/pip/3.5/get-pip.py -o /tmp/get-pip.py ;\
110 python2 /tmp/get-pip.py ;\
111 pip2 install --no-cache-dir -r /opt/requirements_python2.txt ;\
112 python3 /tmp/get-pip.py ;\
113 pip3 install --no-cache-dir -r /opt/requirements_python3.txt ;\
114 # Setup buildslave user for Jenkins
115 useradd -m -s /bin/bash buildslave ;\
116 echo "buildslave:$BUILDSLAVE_PASSWORD" | chpasswd ;\
117 echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins ;\
118 chmod 0440 /etc/sudoers.d/jenkins ;\
119 mkdir -p /var/run/sshd ${TOOLS_DIR} ${COMPILER_DIR};\
120 # Run shell script(s) to install files, toolchains, etc...
121 bash -ex /tmp/tf-dependencies.install ;\
122 bash -ex /tmp/tf-environment.install ;\
123 # Fix permissions
124 chown -R buildslave:buildslave ${TOOLS_DIR} ${COMPILER_DIR} /usr/share/plantuml ;\
125 # Cleanup
126 apt clean ;\
127 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
128
129USER buildslave
130
131RUN set -e ;\
132 # Set git default config
133 git config --global user.email "ci@trustedfirmware.org" ;\
134 git config --global user.name "TF CI" ;\
135 git config --global color.ui "auto"
136
137# IAR Compiler set up license, DO NOT RUN WITH sudo
138RUN set -ex ;\
139 /opt/iarsystems/bxarm/common/bin/lightlicensemanager setup ${IAR_LIC_NR} ${IAR_LIC_EMAIL}
140
141USER root
142
143EXPOSE 22
144ENTRYPOINT ["/usr/sbin/setup-sshd"]