blob: 154f7b76907ae11d7af36a8d3cbaa725057f4ad1 [file] [log] [blame]
Benjamin Copelande2772152020-06-17 11:54:56 +01001FROM ubuntu:bionic
2
Fathi Boudrae2361132020-11-10 19:30:58 +01003# Environment variables used by CI scripts
Riku Voipiob8578a82021-08-24 13:55:38 +03004ENV ARMLMD_LICENSE_FILE=27000@flexnet.trustedfirmware.org
Fathi Boudrae2361132020-11-10 19:30:58 +01005ENV DOCKER_PREFIX=987685672616.dkr.ecr.us-east-1.amazonaws.com
Riku Voipiob8578a82021-08-24 13:55:38 +03006ENV LICENSE_VARIABLE=ARMLMD_LICENSE_FILE=27000@flexnet.trustedfirmware.org
Fathi Boudrae2361132020-11-10 19:30:58 +01007
Benjamin Copelande2772152020-06-17 11:54:56 +01008ENV DEBIAN_FRONTEND=noninteractive
Fathi Boudra0a2e8002020-11-10 19:10:30 +01009ENV TOOLS_DIR=/home/buildslave/tools
10ENV PATH=${TOOLS_DIR}/bin:${PATH}
Benjamin Copelande2772152020-06-17 11:54:56 +010011ENV PLANTUML_JAR_PATH=/usr/share/plantuml/plantuml.jar
Xinyu Zhang4987d4c2022-01-13 18:51:33 +080012ENV COMPILER_DIR=/home/buildslave/compiler
13ENV GCC_7_3_1_DIR=${COMPILER_DIR}/gcc-7-3-1
14ENV GCC_7_3_1_PATH=${GCC_7_3_1_DIR}/bin
15ENV GCC_10_3_DIR=${COMPILER_DIR}/gcc-10-3
16ENV GCC_10_3_PATH=${GCC_10_3_DIR}/bin
Xinyu Zhang44ea5832022-04-02 14:51:45 +080017ENV GCC_11_2_DIR=${COMPILER_DIR}/gcc-11-2
18ENV GCC_11_2_PATH=${GCC_11_2_DIR}/bin
Matthew Dalzella1138df2025-06-12 14:22:14 +010019ENV GCC_13_2_DIR=${COMPILER_DIR}/gcc-13-2
20ENV GCC_13_2_PATH=${GCC_13_2_DIR}/bin
Matthew Dalzell16fce0c2025-06-16 14:53:18 +010021ENV GCC_14_2_DIR=${COMPILER_DIR}/gcc-14-2
22ENV GCC_14_2_PATH=${GCC_14_2_DIR}/bin
Paul Sokolovsky5bbef812023-11-08 22:04:19 +030023ENV ARMCLANG_6_20_DIR=${COMPILER_DIR}/armclang-6-20
24ENV ARMCLANG_6_20_PATH=${ARMCLANG_6_20_DIR}/bin
Paul Sokolovsky8e7952d2023-11-03 21:59:37 +030025ENV ARMCLANG_6_21_DIR=${COMPILER_DIR}/armclang-6-21
26ENV ARMCLANG_6_21_PATH=${ARMCLANG_6_21_DIR}/bin
Benjamin Copelande2772152020-06-17 11:54:56 +010027ENV PKG_DEPS="\
Mate Toth-Pal4e6f1012020-07-07 10:13:07 +020028 bison \
Benjamin Copelande2772152020-06-17 11:54:56 +010029 build-essential \
Leonardo Sandoval23c34d12020-10-15 12:20:59 -050030 clang-tools-6.0 \
Benjamin Copelande2772152020-06-17 11:54:56 +010031 curl \
32 default-jre \
33 device-tree-compiler \
34 doxygen \
Karl Zhangedefe662020-09-15 18:12:19 +080035 exuberant-ctags \
Mate Toth-Pal4e6f1012020-07-07 10:13:07 +020036 flex \
Benjamin Copeland08f7e242020-06-30 13:38:41 +010037 g++-multilib \
38 gcc-multilib \
Xinyu Zhangce246b32023-03-02 16:47:47 +080039 gdisk \
Benjamin Copelande2772152020-06-17 11:54:56 +010040 git \
41 graphviz \
42 jq \
Karl Zhangedefe662020-09-15 18:12:19 +080043 lcov \
Benjamin Copelande2772152020-06-17 11:54:56 +010044 libffi-dev \
Summer Qin14d6bf72021-06-23 14:06:02 +080045 librsvg2-bin \
Benjamin Copelande2772152020-06-17 11:54:56 +010046 libssl-dev \
Leonardo Sandoval04851952020-10-15 12:05:12 -050047 libxml-libxml-perl \
Fathi Boudra8cd1ff62021-01-21 15:51:45 +010048 locales \
Xinyu Zhang2c723782022-01-11 15:35:04 +080049 ninja-build \
Paul Sokolovskyb1878942022-12-14 15:58:18 +030050 openjdk-11-jre-headless \
Benjamin Copelande2772152020-06-17 11:54:56 +010051 openssh-server \
52 perl \
53 python \
54 python-psutil \
55 python3 \
56 python3-crypto \
57 python3-dev \
Benjamin Copelande2772152020-06-17 11:54:56 +010058 python3-pyasn1 \
59 srecord \
60 sudo \
61 tree \
62 unzip \
Xinyu Zhangce246b32023-03-02 16:47:47 +080063 uuid-runtime \
Benjamin Copelande2772152020-06-17 11:54:56 +010064 virtualenv \
65 wget \
66 zip \
67"
68
69# Can be overriden at build time
70ARG BUILDSLAVE_PASSWORD=buildslave
Benjamin Copelande2772152020-06-17 11:54:56 +010071
72COPY requirements_*.txt /opt/
Fathi Boudra0a2e8002020-11-10 19:10:30 +010073COPY tf-*.install /tmp/
Benjamin Copelandf7991f22020-07-30 14:01:21 +010074COPY setup-sshd /usr/sbin/setup-sshd
Benjamin Copelande2772152020-06-17 11:54:56 +010075
Paul Sokolovsky97337682022-11-21 22:31:05 +030076# Copy armclang toolchains
Paul Sokolovsky17334cb2023-10-23 14:01:12 +030077COPY ARMCompiler*.tar.gz /tmp/
Paul Sokolovsky97337682022-11-21 22:31:05 +030078
Paul Sokolovskyeac0e032022-11-15 19:22:43 +030079RUN set -ex ;\
Fathi Boudra8cd1ff62021-01-21 15:51:45 +010080 echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections ;\
81 echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections ;\
Fathi Boudra0a2e8002020-11-10 19:10:30 +010082 apt update -q=2 ;\
83 apt dist-upgrade -q=2 --yes ;\
84 apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} ;\
85 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash ;\
86 apt update -q=2 ;\
87 apt install -q=2 --yes --no-install-recommends git-lfs ;\
88 # Install Python requirements
Arthur She5bf67462021-03-11 22:59:11 -080089 curl -s https://bootstrap.pypa.io/pip/3.5/get-pip.py -o /tmp/get-pip.py ;\
Fathi Boudra0a2e8002020-11-10 19:10:30 +010090 python2 /tmp/get-pip.py ;\
91 pip2 install --no-cache-dir -r /opt/requirements_python2.txt ;\
92 python3 /tmp/get-pip.py ;\
93 pip3 install --no-cache-dir -r /opt/requirements_python3.txt ;\
94 # Set Python 3 as default
95 ln -s -f /usr/bin/python3 /usr/bin/python ;\
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 ;\
Xinyu Zhang4987d4c2022-01-13 18:51:33 +0800101 mkdir -p /var/run/sshd ${TOOLS_DIR} ${COMPILER_DIR};\
Fathi Boudra0a2e8002020-11-10 19:10:30 +0100102 # Run shell script(s) to install files, toolchains, etc...
103 bash -ex /tmp/tf-dependencies.install ;\
Fathi Boudraafdf3d42020-11-20 14:14:48 +0100104 bash -ex /tmp/tf-environment.install ;\
Fathi Boudra0a2e8002020-11-10 19:10:30 +0100105 # Fix permissions
Xinyu Zhang4987d4c2022-01-13 18:51:33 +0800106 chown -R buildslave:buildslave ${TOOLS_DIR} ${COMPILER_DIR} /usr/share/plantuml ;\
Fathi Boudra0a2e8002020-11-10 19:10:30 +0100107 # Cleanup
108 apt clean ;\
109 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -0500110
Fathi Boudra0c3d4c72020-12-17 12:33:43 +0100111USER buildslave
112
113RUN set -e ;\
114 # Set git default config
115 git config --global user.email "ci@trustedfirmware.org" ;\
116 git config --global user.name "TF CI" ;\
117 git config --global color.ui "auto"
118
119USER root
120
Benjamin Copelandf7991f22020-07-30 14:01:21 +0100121EXPOSE 22
122ENTRYPOINT ["/usr/sbin/setup-sshd"]
Riku Voipio03ffb3c2021-09-30 19:20:22 +0300123