# 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
# hadolint ignore=DL3008
RUN apt-get update && \
    apt-get install --no-install-recommends -y \
        bc \
        build-essential \
        curl \
        dos2unix \
        git \
        lib32stdc++6 \
        mscgen \
        p7zip-full \
        python3 \
        python3-pip \
        tar \
        unzip \
        wget \
        libxml2-utils \
        zip && \
    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}/
# hadolint ignore=DL3013
RUN python3 -m pip install -U --no-cache-dir pip && \
    python3 -m pip install -U --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

# 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"]