TF-A: revert to use semicolon separator in the RUN command

revert https://review.trustedfirmware.org/c/ci/dockerfiles/+/6672
It was working as expected, as long as we keep "set -e" in the RUN
command. We want to limit RUN commands as much possible to reduce the
number of layers.

Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
Change-Id: I78a687c24c0fb53ce252a441837b8e4df1076b5d
diff --git a/bionic-amd64-tf-a-build/Dockerfile b/bionic-amd64-tf-a-build/Dockerfile
index b5d5f6b..8a5408b 100644
--- a/bionic-amd64-tf-a-build/Dockerfile
+++ b/bionic-amd64-tf-a-build/Dockerfile
@@ -1,10 +1,9 @@
 FROM ubuntu:bionic
 
-ARG TOOLS_DIR=/home/buildslave/tools
-
 ENV ARMLMD_LICENSE_FILE=27000@ci.trustedfirmware.org
 ENV DEBIAN_FRONTEND=noninteractive
-ENV PATH=$TOOLS_DIR/bin:${PATH}
+ENV TOOLS_DIR=/home/buildslave/tools
+ENV PATH=${TOOLS_DIR}/bin:${PATH}
 ENV PLANTUML_JAR_PATH=/usr/share/plantuml/plantuml.jar
 ENV PKG_DEPS="\
     bison \
@@ -52,86 +51,72 @@
 COPY requirements_*.txt /opt/
 COPY setup-sshd /usr/sbin/setup-sshd
 
-RUN set -e \
-    && apt update -q=2 \
-    && apt dist-upgrade -q=2 --yes \
-    && apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} \
-    && curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash \
-    && apt update -q=2 \
-    && apt install -q=2 --yes --no-install-recommends git-lfs \
-    && curl -s https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py \
-    && python2 /tmp/get-pip.py \
-    && pip2 install --no-cache-dir -r /opt/requirements_python2.txt \
-    && python3 /tmp/get-pip.py \
-    && pip3 install --no-cache-dir -r /opt/requirements_python3.txt \
-    && ln -s -f /usr/bin/python3 /usr/bin/python \
-    && useradd -m -s /bin/bash buildslave \
-    && 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 /home/buildslave/tools \
-    && wget -q http://github.com/danmar/cppcheck/releases/download/1.81/cppcheck-1.81.tar.gz -O /tmp/cppcheck.tar.gz \
-    && tar -xf /tmp/cppcheck.tar.gz -C /opt \
-    && (cd /opt/cppcheck-*; make CFGDIR=/opt/cppcheck-1.81/cfg; make install; make clean) \
-    && curl --create-dirs -fsSLo ${PLANTUML_JAR_PATH} https://repo1.maven.org/maven2/net/sourceforge/plantuml/plantuml/1.2019.6/plantuml-1.2019.6.jar \
-    && curl --create-dirs -fsSLo /tmp/cmake-Linux-x86_64.tar.gz https://cmake.org/files/v3.15/cmake-3.15.0-Linux-x86_64.tar.gz \
-    && tar -xf /tmp/cmake-Linux-x86_64.tar.gz -C /home/buildslave/tools --strip-components=1 \
-    && chown -R buildslave:buildslave /home/buildslave/tools /usr/share/plantuml \
-    && apt clean \
-    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-### Install GNU toolchain (arm-none-eabi)
-ARG GNU_GCC_ARM_VERSION="9.2-2019.12"
-ARG GNU_GCC_ARM_TAR="gcc-arm-${GNU_GCC_ARM_VERSION}-x86_64-arm-none-eabi.tar.xz"
-ARG GNU_GCC_ARM_URL="https://developer.arm.com/-/media/Files/downloads/gnu-a/${GNU_GCC_ARM_VERSION}/binrel/${GNU_GCC_ARM_TAR}"
-
-RUN curl --create-dirs -fsSLo /tmp/${GNU_GCC_ARM_TAR} ${GNU_GCC_ARM_URL} \
-    && tar -xf /tmp/${GNU_GCC_ARM_TAR} -C ${TOOLS_DIR} --strip-components=1 \
-    && rm /tmp/${GNU_GCC_ARM_TAR}
-
-### Install GNU toolchain (aarch64-none-elf)
-ARG GNU_GCC_AARCH64_VERSION="9.2-2019.12"
-ARG GNU_GCC_AARCH64_TAR="gcc-arm-${GNU_GCC_AARCH64_VERSION}-x86_64-aarch64-none-elf.tar.xz"
-ARG GNU_GCC_AARCH64_URL="https://developer.arm.com/-/media/Files/downloads/gnu-a/$GNU_GCC_AARCH64_VERSION/binrel/${GNU_GCC_AARCH64_TAR}"
-
-RUN curl --create-dirs -fsSLo /tmp/${GNU_GCC_AARCH64_TAR} ${GNU_GCC_AARCH64_URL} \
-    && tar -xf /tmp/${GNU_GCC_AARCH64_TAR} -C ${TOOLS_DIR} --strip-components=1 \
-    && rm /tmp/${GNU_GCC_AARCH64_TAR}
-
-### Install Arm Clang (armclang)
-ARG ARM_CLANG_VERSION="6.13"
-ARG ARM_CLANG_TAR="DS500-BN-00026-r5p0-15rel0.tgz"
-ARG ARM_CLANG_URL="https://developer.arm.com/-/media/Files/downloads/compiler/DS500-BN-00026-r5p0-15rel0.tgz\
-?revision=6a961cf7-1d9a-4664-900b-11d20552dbc7?product=Download%20Arm%20Compiler,64-bit,,Linux,6.13"
-ARG ARM_CLANG_INSTALL_DIR="${TOOLS_DIR}/armclang"
-
-RUN curl --create-dirs -fsSLo /tmp/${ARM_CLANG_TAR} ${ARM_CLANG_URL} \
-    && mkdir -p ${ARM_CLANG_INSTALL_DIR} \
-    && tar -xf /tmp/${ARM_CLANG_TAR} -C ${ARM_CLANG_INSTALL_DIR} \
-    && ${ARM_CLANG_INSTALL_DIR}/install_x86_64.sh \
-            --no-interactive \
-            --i-agree-to-the-contained-eula \
-            -d ${TOOLS_DIR} \
-    && rm -rf ${ARM_CLANG_INSTALL_DIR} /tmp/${ARM_CLANG_TAR}
-
-### Install GNU Linaro 6.2.1 toolchain (aarch64-none-elf), which is required by some platforms, i.e. marvell
-### NOTE: Toolchain is not available through PATH so to use it, CROSS_COMPILE should point to
-###       CROSS_COMPILE=${TOOLS_DIR}/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-ARG GNU_GCC_LINARO_AARCH64_SHORT_VERSION=6.2-2016.11
-ARG GNU_GCC_LINARO_AARCH64_LONG_VERSION=6.2.1-2016.11
-ARG GNU_GCC_LINARO_AARCH64_TAR="gcc-linaro-${GNU_GCC_LINARO_AARCH64_LONG_VERSION}-x86_64_aarch64-linux-gnu.tar.xz"
-ARG GNU_GCC_LINARO_AARCH64_URL="https://releases.linaro.org/components/toolchain/binaries/${GNU_GCC_LINARO_AARCH64_SHORT_VERSION}/aarch64-linux-gnu/${GNU_GCC_LINARO_AARCH64_TAR}"
-RUN curl --create-dirs -fsSLo /tmp/${GNU_GCC_LINARO_AARCH64_TAR} ${GNU_GCC_LINARO_AARCH64_URL} \
-    && tar -xf /tmp/${GNU_GCC_LINARO_AARCH64_TAR} -C ${TOOLS_DIR} \
-    && rm /tmp/${GNU_GCC_LINARO_AARCH64_TAR}
-
-ARG LINARO_VERSION=20.01
-RUN mkdir -p nfs/downloads/linaro/${LINARO_VERSION} \
-    && cd nfs/downloads/linaro/${LINARO_VERSION} \
-    && wget -q -c -m -A .zip -np -nd https://releases.linaro.org/members/arm/platforms/${LINARO_VERSION}/ \
-    && rm -f *-android-*.zip sg*.zip \
-    && for file in *.zip; do unzip -q ${file} -d $(basename ${file} .zip); done \
-    && rm -f *.zip
+RUN set -e ;\
+    apt update -q=2 ;\
+    apt dist-upgrade -q=2 --yes ;\
+    apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} ;\
+    curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash ;\
+    apt update -q=2 ;\
+    apt install -q=2 --yes --no-install-recommends git-lfs ;\
+    # Install Python requirements
+    curl -s https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py ;\
+    python2 /tmp/get-pip.py ;\
+    pip2 install --no-cache-dir -r /opt/requirements_python2.txt ;\
+    python3 /tmp/get-pip.py ;\
+    pip3 install --no-cache-dir -r /opt/requirements_python3.txt ;\
+    # Set Python 3 as default
+    ln -s -f /usr/bin/python3 /usr/bin/python ;\
+    # Setup buildslave user for Jenkins
+    useradd -m -s /bin/bash buildslave ;\
+    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} ;\
+    # Install cppcheck
+    wget -q http://github.com/danmar/cppcheck/releases/download/1.81/cppcheck-1.81.tar.gz -O /tmp/cppcheck.tar.gz ;\
+    tar -xf /tmp/cppcheck.tar.gz -C /opt ;\
+    (cd /opt/cppcheck-*; make CFGDIR=/opt/cppcheck-1.81/cfg; make install; make clean) ;\
+    # Install PlantUML
+    curl --create-dirs -fsSLo ${PLANTUML_JAR_PATH} \
+    https://repo1.maven.org/maven2/net/sourceforge/plantuml/plantuml/1.2019.6/plantuml-1.2019.6.jar ;\
+    # Install CMake
+    curl --create-dirs -fsSLo /tmp/cmake-Linux-x86_64.tar.gz \
+    https://cmake.org/files/v3.15/cmake-3.15.0-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.xz \
+    https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-none-eabi.tar.xz ;\
+    tar -Jxf /tmp/gcc-arm-x86_64-arm-none-eabi.tar.xz -C ${TOOLS_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 Linaro GCC 6.2.1 toolchain (aarch64-none-elf), which is required by some platforms, i.e. marvell
+    # NOTE: Toolchain is not available through PATH so to use it, CROSS_COMPILE should point to
+    # CROSS_COMPILE=${TOOLS_DIR}/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
+    curl --create-dirs -fsSLo /tmp/gcc-linaro-x86_64_aarch64-linux-gnu.tar.xz \
+    https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/aarch64-linux-gnu/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tar.xz ;\
+    tar -Jxf /tmp/gcc-linaro-x86_64_aarch64-linux-gnu.tar.xz -C ${TOOLS_DIR} ;\
+    # Install Arm Clang (armclang)
+    mkdir -p /tmp/armclang ;\
+    curl --create-dirs -fsSLo /tmp/DS500-BN-00026-r5p0-15rel0.tgz \
+    https://developer.arm.com/-/media/Files/downloads/compiler/DS500-BN-00026-r5p0-15rel0.tgz?revision=6a961cf7-1d9a-4664-900b-11d20552dbc7?product=Download%20Arm%20Compiler,64-bit,,Linux,6.13 ;\
+    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} ;\
+    # Additional binaries required
+    mkdir -p nfs/downloads/linaro/20.01 ;\
+    (cd nfs/downloads/linaro/20.01;\
+     wget -q -c -m -A .zip -np -nd https://releases.linaro.org/members/arm/platforms/20.01/;\
+     rm -f *-android-*.zip sg*.zip;\
+     for file in *.zip;\
+     do unzip -q ${file} -d $(basename ${file} .zip);\
+     done;\
+     rm -f *.zip) ;\
+    # Fix permissions
+    chown -R buildslave:buildslave ${TOOLS_DIR} /usr/share/plantuml ;\
+    # Cleanup
+    apt clean ;\
+    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 
 EXPOSE 22
 ENTRYPOINT ["/usr/sbin/setup-sshd"]