Sync scripts in 'script' directory with internal CI

Sync scripts with platform-ci commit:
539c151d0cd99a5e6ca6c0e6966f6d8579fe864e

Signed-off-by: Zelalem <zelalem.aweke@arm.com>
Change-Id: I455770dea2e3974f652de317b21e53cfc0b9199e
diff --git a/script/build_bmcov.sh b/script/build_bmcov.sh
new file mode 100755
index 0000000..3923ab8
--- /dev/null
+++ b/script/build_bmcov.sh
@@ -0,0 +1,151 @@
+#!/bin/bash
+#
+# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set -e
+source "$CI_ROOT/utils.sh"
+
+prepare_json_configuration() {
+    set +e
+    elf_files="${1:-$LIST_OF_BINARIES}"
+    jenkins_sources="${2:-$JENKINS_SOURCES_WORKSPACE}"
+    elf_array=($elf_files)
+    elf=""
+    for index in "${!elf_array[@]}"
+    do
+        if [ "${DEBUG_ELFS}" = "True" ]; then
+            cp "${ELF_FOLDER}/${elf_array[$index]}.elf" ${OUTDIR}/.
+        fi
+        read -r -d '' elf << EOM
+${elf}
+                {
+                    "name": "${ELF_FOLDER}/${elf_array[$index]}.elf",
+                    "traces": [
+                                "${TRACE_FOLDER}/${trace_file_prefix:-covtrace}-*.log"
+                              ]
+                }
+EOM
+    if [ $index -lt $((${#elf_array[@]} - 1)) ];then
+        elf="${elf},"
+    fi
+    done
+    if [ "$REPO" = "SCP" ]; then
+        read -r -d '' sources << EOM
+                [
+                    {
+                    "type": "git",
+                    "URL":  "$CC_SCP_URL",
+                    "COMMIT": "$CC_SCP_COMMIT",
+                    "REFSPEC": "$CC_SCP_REFSPEC",
+                    "LOCATION": "scp"
+                    },
+                    {
+                    "type": "git",
+                    "URL":  "$CC_CMSIS_URL",
+                    "COMMIT": "$CC_CMSIS_COMMIT",
+                    "REFSPEC": "$CC_CMSIS_REFSPEC",
+                    "LOCATION": "scp/cmsis"
+                    }
+                ]
+EOM
+    elif [ "$REPO" = "TRUSTED_FIRMWARE" ]; then
+        read -r -d '' sources << EOM
+                [
+                    {
+                    "type": "git",
+                    "URL":  "$CC_TRUSTED_FIRMWARE_URL",
+                    "COMMIT": "$CC_TRUSTED_FIRMWARE_COMMIT",
+                    "REFSPEC": "$CC_TRUSTED_FIRMWARE_REFSPEC",
+                    "LOCATION": "trusted_firmware"
+                    },
+                    {
+                    "type": "http",
+                    "URL":  "$mbedtls_archive",
+                    "COMPRESSION": "xz",
+                    "LOCATION": "mbedtls"
+                    }
+                ]
+EOM
+    else
+        sources=""
+    fi
+metadata="\"BUILD_CONFIG\": \"${BUILD_CONFIG}\", \"RUN_CONFIG\": \"${RUN_CONFIG}\""
+cat <<EOF > "${CONFIG_JSON}"
+{
+    "configuration":
+        {
+        "remove_workspace": true,
+        "include_assembly": true
+        },
+    "parameters":
+        {
+        "sources": $sources,
+        "workspace": "${jenkins_sources}",
+        "output_file": "${OUTPUT_JSON}",
+        "metadata": {$metadata}
+        },
+    "elfs": [
+            ${elf}
+        ]
+}
+EOF
+set -e
+}
+
+prepare_html_pages() {
+    pushd ${OUTDIR}
+    cp ${BMCOV_REPORT_FOLDER}/reporter_cc.py ${OUTDIR}/.
+    if [ "${DEBUG_ELFS}" = "True" ]; then
+        cp "${TRACE_FOLDER}/${trace_file_prefix}"* ${OUTDIR}/.
+    fi
+    # to be run on the user locally
+    cat <<EOF > "server.sh"
+#!/bin/bash
+
+echo "Running server..."
+type -a firefox || (echo "Please install Firefox..." && exit 1)
+type -a python3 || (echo "Please install python3..." && exit 1)
+
+python - << EOT
+import os
+import reporter_cc
+
+output_file = os.getenv('OUTPUT_JSON', 'output_file.json')
+source_folder = os.getenv('CSOURCE_FOLDER', 'source')
+r = reporter_cc.ReportCC(output_file)
+r.clone_repo(source_folder)
+EOT
+(sleep 2; firefox --new-window http://localhost:8081) &
+python3 -m http.server 8081
+EOF
+    chmod 777 server.sh
+    zip -r server_side.zip *
+    popd
+}
+
+PVLIB_HOME=${PVLIB_HOME:-$warehouse/SysGen/PVModelLib/$model_version/$model_build/external}
+echo "Building Bmcov for code coverage..."
+source "$CI_ROOT/script/test_definitions.sh"
+export BMCOV_FOLDER="${BMCOV_FOLDER:-$workspace/test-definitions/scripts/tools/code_coverage/fastmodel_baremetal/bmcov}"
+pushd "${workspace}"
+git clone "${TEST_DEFINITIONS_REPO}" -b "${TEST_DEFINITIONS_REFSPEC}"
+popd
+pushd "${BMCOV_FOLDER}"
+export MODEL_PLUGIN_FOLDER="${BMCOV_FOLDER}"/model-plugin
+if [ -n "$(find "$warehouse" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then
+    echo "$warehouse not mounted. Falling back to pre-built plugins.."
+    folder="http://files.oss.arm.com/downloads/tf-a/coverage-plugin"
+    wget -q ${folder}/{CoverageTrace.so,CoverageTrace.o,PluginUtils.o} \
+    -P "${MODEL_PLUGIN_FOLDER}"
+ else
+    make -C model-plugin PVLIB_HOME="$PVLIB_HOME"
+fi
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MODEL_PLUGIN_FOLDER
+export trace_file_prefix=covtrace
+export BMCOV_REPORT_FOLDER="${BMCOV_FOLDER}"/report
+export coverage_trace_plugin="${MODEL_PLUGIN_FOLDER}"/CoverageTrace.so
+popd