bionic-amd64-tf-m-build: Download multi versions of compilers

TF-M Open CI needs to support multi versions of compilers.
Download all compilers to COMPILER_DIR, and set specific paths
for different compiler versions. So that the compiler versions
can be selected in every single build-config job.

Currently following compilers are installed for TF-M Open CI:
    - GCC v7.3.1
    - GCC v10.3
    - ARMClang v6.13

Signed-off-by: Xinyu Zhang <xinyu.zhang@arm.com>
Change-Id: I31cc55181704319d5194c336c5bd6f14fccd921e
diff --git a/bionic-amd64-tf-m-build/Dockerfile b/bionic-amd64-tf-m-build/Dockerfile
index 3245c57..92100a2 100644
--- a/bionic-amd64-tf-m-build/Dockerfile
+++ b/bionic-amd64-tf-m-build/Dockerfile
@@ -9,6 +9,13 @@
 ENV TOOLS_DIR=/home/buildslave/tools
 ENV PATH=${TOOLS_DIR}/bin:${PATH}
 ENV PLANTUML_JAR_PATH=/usr/share/plantuml/plantuml.jar
+ENV COMPILER_DIR=/home/buildslave/compiler
+ENV GCC_7_3_1_DIR=${COMPILER_DIR}/gcc-7-3-1
+ENV GCC_7_3_1_PATH=${GCC_7_3_1_DIR}/bin
+ENV GCC_10_3_DIR=${COMPILER_DIR}/gcc-10-3
+ENV GCC_10_3_PATH=${GCC_10_3_DIR}/bin
+ENV ARMCLANG_6_13_DIR=${COMPILER_DIR}/armclang-6-13
+ENV ARMCLANG_6_13_PATH=${ARMCLANG_6_13_DIR}/bin
 ENV PKG_DEPS="\
     bison \
     build-essential \
@@ -77,12 +84,12 @@
     echo "buildslave:$BUILDSLAVE_PASSWORD" | chpasswd ;\
     echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins ;\
     chmod 0440 /etc/sudoers.d/jenkins ;\
-    mkdir -p /var/run/sshd ${TOOLS_DIR} ;\
+    mkdir -p /var/run/sshd ${TOOLS_DIR} ${COMPILER_DIR};\
     # Run shell script(s) to install files, toolchains, etc...
     bash -ex /tmp/tf-dependencies.install ;\
     bash -ex /tmp/tf-environment.install ;\
     # Fix permissions
-    chown -R buildslave:buildslave ${TOOLS_DIR} /usr/share/plantuml ;\
+    chown -R buildslave:buildslave ${TOOLS_DIR} ${COMPILER_DIR} /usr/share/plantuml ;\
     # Cleanup
     apt clean ;\
     rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
diff --git a/bionic-amd64-tf-m-build/tf-dependencies.install b/bionic-amd64-tf-m-build/tf-dependencies.install
index 948777e..7d9952a 100755
--- a/bionic-amd64-tf-m-build/tf-dependencies.install
+++ b/bionic-amd64-tf-m-build/tf-dependencies.install
@@ -21,19 +21,21 @@
   https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Linux-x86_64.tar.gz
 tar -xf /tmp/cmake-Linux-x86_64.tar.gz -C ${TOOLS_DIR} --strip-components=1
 
-# Install Arm GCC toolchain (arm-none-eabi)
-curl --create-dirs -fsSLo /tmp/gcc-arm-x86_64-arm-none-eabi.tar.bz2 \
+# Install Arm GCC v7.3.1 toolchain to GCC_7_3_1_DIR (arm-none-eabi)
+mkdir -p ${GCC_7_3_1_DIR}
+curl --create-dirs -fsSLo /tmp/gcc-arm-x86_64-arm-none-eabi-7-3-1.tar.bz2 \
   https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2?revision=bc2c96c0-14b5-4bb4-9f18-bceb4050fee7?product=GNU%20Arm%20Embedded%20Toolchain%20Downloads,64-bit,,Linux,7-2018-q2-update
-tar -xf /tmp/gcc-arm-x86_64-arm-none-eabi.tar.bz2 -C ${TOOLS_DIR} --strip-components=1
+tar -xf /tmp/gcc-arm-x86_64-arm-none-eabi-7-3-1.tar.bz2 -C ${GCC_7_3_1_DIR} --strip-components=1
 
-# Install Arm GCC toolchain (aarch64-none-elf)
-curl --create-dirs -fsSLo /tmp/gcc-arm-x86_64-aarch64-none-elf.tar.xz \
-  https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz
-tar -Jxf /tmp/gcc-arm-x86_64-aarch64-none-elf.tar.xz -C ${TOOLS_DIR} --strip-components=1
+# Install Arm GCC v10.3 toolchain to GCC_10_3_DIR (arm-none-eabi)
+mkdir -p ${GCC_10_3_DIR}
+curl --create-dirs -fsSLo /tmp/gcc-arm-x86_64-arm-none-eabi-10-3.tar.bz2 \
+  https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
+tar -xf /tmp/gcc-arm-x86_64-arm-none-eabi-10-3.tar.bz2 -C ${GCC_10_3_DIR} --strip-components=1
 
-# Install Arm Clang (armclang)
+# Install Arm Clang v6.13 toolchain to ARMCLANG_6_13_DIR (armclang)
 mkdir -p /tmp/armclang
 wget -O /tmp/DS500-BN-00026-r5p0-15rel0.tgz \
   -q https://developer.arm.com/-/media/Files/downloads/compiler/DS500-BN-00026-r5p0-15rel0.tgz
 tar -xf /tmp/DS500-BN-00026-r5p0-15rel0.tgz -C /tmp/armclang
-/tmp/armclang/install_x86_64.sh --no-interactive --i-agree-to-the-contained-eula -d ${TOOLS_DIR}
+/tmp/armclang/install_x86_64.sh --no-interactive --i-agree-to-the-contained-eula -d ${ARMCLANG_6_13_DIR}
diff --git a/bionic-amd64-tf-m-build/tf-environment.install b/bionic-amd64-tf-m-build/tf-environment.install
index fe09a61..021b837 100755
--- a/bionic-amd64-tf-m-build/tf-environment.install
+++ b/bionic-amd64-tf-m-build/tf-environment.install
@@ -8,3 +8,6 @@
 env | grep PLANTUML_JAR_PATH >> /etc/environment
 env | grep TOOLS_DIR >> /etc/environment
 env | grep PATH >> /etc/environment
+env | grep GCC_7_3_1_PATH >> /etc/environment
+env | grep GCC_10_3_PATH >> /etc/environment
+env | grep ARMCLANG_6_13_PATH >> /etc/environment