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