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