# 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

# install packages from official Ubuntu repo
ENV DEBIAN_FRONTEND=noninteractive
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 GCC=gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2

# Including dependency folder
ARG DEPENDENCIESFOLDER=dependenciesFiles
ARG TOOLS_PATH=/opt
ARG INSTALLER_PATH=/tmp/dependenciesFiles
RUN mkdir -p ${INSTALLER_PATH}
COPY dependenciesFiles/${GCC} ${INSTALLER_PATH}/${GCC}
COPY dependenciesFiles/buildtools ${TOOLS_PATH}/buildtools

# 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 Python requirements
COPY requirements.txt ${INSTALLER_PATH}/
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 ${TOOLS_PATH}/buildtools/requirements.txt
COPY rtebuild /root/.rtebuild
ENV PATH=${PATH}:${TOOLS_PATH}/buildtools

# remove dependency folder
RUN rm -rf ${INSTALLER_PATH}

CMD ["bash"]