blob: bc7ed21a620c430d5db12928f9da11570c2c432f [file] [log] [blame]
Jonatan Antoni4b0ede32021-04-29 18:26:29 +02001# Due to bandwidth limitation, we need to keep the base image into our
2# Artifactory Docker Registry. Because we have more than one registry,
3# we need to set during build time which Artifactory Docker Registry to use.
4ARG DOCKER_REGISTRY
5FROM ${DOCKER_REGISTRY}/ubuntu:focal
6
7# jenkins user needs to be present to work on CI
8# User 1000 for Kubernetes
9RUN useradd -u 1000 -U -m -c Jenkins jenkins
10
11# install packages from official Ubuntu repo
12ENV DEBIAN_FRONTEND=noninteractive
Jonatan Antonib5d07f02021-07-14 12:50:57 +020013# hadolint ignore=DL3008
Jonatan Antoni4b0ede32021-04-29 18:26:29 +020014RUN apt-get update && \
15 apt-get install --no-install-recommends -y \
Jonatan Antonid12f5c22021-07-14 08:55:54 +020016 bc \
17 build-essential \
18 curl \
19 dos2unix \
20 git \
21 lib32stdc++6 \
22 mscgen \
23 p7zip-full \
24 python3 \
25 python3-pip \
26 tar \
27 unzip \
28 wget \
29 libxml2-utils \
30 zip && \
Jonatan Antoni4b0ede32021-04-29 18:26:29 +020031 apt-get autoremove -y && \
32 apt-get autoclean -y && \
33 rm -rf /var/lib/apt/lists/*
34
35# Create build ARGs for installer files & versions
36ARG ARMCC=ArmCompiler-5.06u7-linux.sh
37ARG ARMCLANG=ArmCompiler-6.16-linux-x86_64.sh
38ARG ARMCLANGLTM=ArmCompiler-6.6.4-linux-x86_64.sh
39ARG GCC=gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
40ARG DOXYGEN=doxygen_1.8.6-2_amd64.deb
41ARG FASTMODELS=fvp-11.12-linux-x86_64.tar.gz
42
43# Including dependency folder
44ARG DEPENDENCIESFOLDER=dependenciesFiles
45ARG TOOLS_PATH=/opt
46ARG INSTALLER_PATH=/tmp/dependenciesFiles
47RUN mkdir -p ${INSTALLER_PATH}
48COPY dependenciesFiles/ ${INSTALLER_PATH}
49
50# install & setup armcc
51RUN ${INSTALLER_PATH}/${ARMCC} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armcc
52ENV PATH=${PATH}:${TOOLS_PATH}/armcc/bin
53ENV CI_ARMCC5_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclang/bin
54
55# install & setup armclang
56RUN ${INSTALLER_PATH}/${ARMCLANG} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armclang
57ENV PATH=${PATH}:${TOOLS_PATH}/armclang/bin
58ENV CI_ARMCC6_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclang/bin
59
60# install & setup armclang ltm
61RUN ${INSTALLER_PATH}/${ARMCLANGLTM} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armclangltm
62ENV CI_ARMCC6LTM_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclangltm/bin
63
64# install & setup gcc
65RUN mkdir -p ${TOOLS_PATH}
66WORKDIR ${TOOLS_PATH}
67RUN tar -xvf ${INSTALLER_PATH}/${GCC}
68ENV PATH=${PATH}:${TOOLS_PATH}/gcc-arm-none-eabi-10-2020-q4-major/bin
69ENV CI_GCC_TOOLCHAIN_ROOT=${TOOLS_PATH}/gcc-arm-none-eabi-10-2020-q4-major/bin
70WORKDIR /
71
72# install fast models 11.12
73RUN mkdir -p ${TOOLS_PATH}/fvp/
74WORKDIR ${TOOLS_PATH}/fvp/
75RUN tar -xvf ${INSTALLER_PATH}/${FASTMODELS}
76ENV PATH=${PATH}:${TOOLS_PATH}/fvp
77WORKDIR /
78
79# install doxygen
80RUN dpkg -i ${INSTALLER_PATH}/${DOXYGEN}
81
82# install PackChk
83RUN cp ${INSTALLER_PATH}/PackChk /usr/local/bin/PackChk
84RUN chmod +x /usr/local/bin/PackChk
85
86# install Python requirements
87COPY requirements.txt ${INSTALLER_PATH}/
Jonatan Antonib5d07f02021-07-14 12:50:57 +020088# hadolint ignore=DL3013
Jonatan Antonie54ebc42021-07-14 12:27:42 +020089RUN python3 -m pip install -U --no-cache-dir pip && \
90 python3 -m pip install -U --no-cache-dir -r ${INSTALLER_PATH}/requirements.txt
Jonatan Antoni4b0ede32021-04-29 18:26:29 +020091
92# install buildtools
93RUN python3 -m pip install --no-cache-dir -r ${INSTALLER_PATH}/buildtools/requirements.txt
94RUN mv ${INSTALLER_PATH}/buildtools ${TOOLS_PATH}
95COPY rtebuild /home/jenkins/.rtebuild
96COPY rtebuild /root/.rtebuild
97ENV PATH=${PATH}:${TOOLS_PATH}/buildtools
98
Jonatan Antoni4b0ede32021-04-29 18:26:29 +020099# set ARMLMD_LICENSE_FILE for ARM compilers
100ENV ARMLMD_LICENSE_FILE="7010@euhpc-lic-armlmd.euhpc.arm.com:7010@euhpc-lic03.euhpc.arm.com:7010@euhpc-lic05.euhpc.arm.com:7010@euhpc-lic07.euhpc.arm.com"
101
102# remove dependency folder
103RUN rm -rf ${INSTALLER_PATH}
104
105CMD ["bash"]