blob: 4ea6a2bdad5352a807e38343dba201dca3b16a50 [file] [log] [blame]
# Due to bandwidth limitation, we need to keep the base image into our
# Artifactory Docker Registry. Because we have more than one registry,
# we need to set during build time which Artifactory Docker Registry to use.
ARG DOCKER_REGISTRY
FROM ${DOCKER_REGISTRY}/ubuntu:focal
# jenkins user needs to be present to work on CI
# User 1000 for Kubernetes
RUN useradd -u 1000 -U -m -c Jenkins jenkins
# install packages from official Ubuntu repo
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install --no-install-recommends -y \
bc=1.07.1-2build1 \
build-essential=12.8ubuntu1.1 \
curl=7.68.0-1ubuntu2.5 \
dos2unix=7.4.0-2 \
git=1:2.25.1-1ubuntu3.1 \
lib32stdc++6=10.2.0-5ubuntu1~20.04 \
mscgen=0.20-12 \
p7zip-full=16.02+dfsg-7build1 \
python3=3.8.2-0ubuntu2 \
python3-pip=20.0.2-5ubuntu1.3 \
tar=1.30+dfsg-7ubuntu0.20.04.1 \
unzip=6.0-25ubuntu1 \
wget=1.20.3-1ubuntu1 \
libxml2-utils=2.9.10+dfsg-5 \
zip=3.0-11build1 && \
apt-get autoremove -y && \
apt-get autoclean -y && \
rm -rf /var/lib/apt/lists/*
# Create build ARGs for installer files & versions
ARG ARMCC=ArmCompiler-5.06u7-linux.sh
ARG ARMCLANG=ArmCompiler-6.16-linux-x86_64.sh
ARG ARMCLANGLTM=ArmCompiler-6.6.4-linux-x86_64.sh
ARG GCC=gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
ARG DOXYGEN=doxygen_1.8.6-2_amd64.deb
ARG FASTMODELS=fvp-11.12-linux-x86_64.tar.gz
# Including dependency folder
ARG DEPENDENCIESFOLDER=dependenciesFiles
ARG TOOLS_PATH=/opt
ARG INSTALLER_PATH=/tmp/dependenciesFiles
RUN mkdir -p ${INSTALLER_PATH}
COPY dependenciesFiles/ ${INSTALLER_PATH}
# install & setup armcc
RUN ${INSTALLER_PATH}/${ARMCC} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armcc
ENV PATH=${PATH}:${TOOLS_PATH}/armcc/bin
ENV CI_ARMCC5_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclang/bin
# install & setup armclang
RUN ${INSTALLER_PATH}/${ARMCLANG} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armclang
ENV PATH=${PATH}:${TOOLS_PATH}/armclang/bin
ENV CI_ARMCC6_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclang/bin
# install & setup armclang ltm
RUN ${INSTALLER_PATH}/${ARMCLANGLTM} --i-agree-to-the-contained-eula --no-interactive -v -d ${TOOLS_PATH}/armclangltm
ENV CI_ARMCC6LTM_TOOLCHAIN_ROOT=${TOOLS_PATH}/armclangltm/bin
# install & setup gcc
RUN mkdir -p ${TOOLS_PATH}
WORKDIR ${TOOLS_PATH}
RUN tar -xvf ${INSTALLER_PATH}/${GCC}
ENV PATH=${PATH}:${TOOLS_PATH}/gcc-arm-none-eabi-10-2020-q4-major/bin
ENV CI_GCC_TOOLCHAIN_ROOT=${TOOLS_PATH}/gcc-arm-none-eabi-10-2020-q4-major/bin
WORKDIR /
# install fast models 11.12
RUN mkdir -p ${TOOLS_PATH}/fvp/
WORKDIR ${TOOLS_PATH}/fvp/
RUN tar -xvf ${INSTALLER_PATH}/${FASTMODELS}
ENV PATH=${PATH}:${TOOLS_PATH}/fvp
WORKDIR /
# install doxygen
RUN dpkg -i ${INSTALLER_PATH}/${DOXYGEN}
# install PackChk
RUN cp ${INSTALLER_PATH}/PackChk /usr/local/bin/PackChk
RUN chmod +x /usr/local/bin/PackChk
# install Python requirements
COPY requirements.txt ${INSTALLER_PATH}/
RUN python3 -m pip install --no-cache-dir -r ${INSTALLER_PATH}/requirements.txt
# install buildtools
RUN python3 -m pip install --no-cache-dir -r ${INSTALLER_PATH}/buildtools/requirements.txt
RUN mv ${INSTALLER_PATH}/buildtools ${TOOLS_PATH}
COPY rtebuild /home/jenkins/.rtebuild
COPY rtebuild /root/.rtebuild
ENV PATH=${PATH}:${TOOLS_PATH}/buildtools
# install python-matrix-runner
# hadolint disable=DL3013
RUN python3 -m pip install ${INSTALLER_PATH}/python-matrix-runner
# set ARMLMD_LICENSE_FILE for ARM compilers
ENV 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"
# remove dependency folder
RUN rm -rf ${INSTALLER_PATH}
CMD ["bash"]