blob: 7fb48dc2c464885ba6eb86baf5be4c4d6b0931c9 [file] [log] [blame]
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -05001#!/usr/bin/env bash
Zelalem1af7a7b2020-08-04 17:34:32 -05002#
3# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
4#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8set -e
9source "$CI_ROOT/utils.sh"
10
11prepare_json_configuration() {
12 set +e
13 elf_files="${1:-$LIST_OF_BINARIES}"
14 jenkins_sources="${2:-$JENKINS_SOURCES_WORKSPACE}"
15 elf_array=($elf_files)
16 elf=""
17 for index in "${!elf_array[@]}"
18 do
19 if [ "${DEBUG_ELFS}" = "True" ]; then
20 cp "${ELF_FOLDER}/${elf_array[$index]}.elf" ${OUTDIR}/.
21 fi
22 read -r -d '' elf << EOM
23${elf}
24 {
25 "name": "${ELF_FOLDER}/${elf_array[$index]}.elf",
26 "traces": [
27 "${TRACE_FOLDER}/${trace_file_prefix:-covtrace}-*.log"
28 ]
29 }
30EOM
31 if [ $index -lt $((${#elf_array[@]} - 1)) ];then
32 elf="${elf},"
33 fi
34 done
35 if [ "$REPO" = "SCP" ]; then
36 read -r -d '' sources << EOM
37 [
38 {
39 "type": "git",
40 "URL": "$CC_SCP_URL",
41 "COMMIT": "$CC_SCP_COMMIT",
42 "REFSPEC": "$CC_SCP_REFSPEC",
43 "LOCATION": "scp"
44 },
45 {
46 "type": "git",
47 "URL": "$CC_CMSIS_URL",
48 "COMMIT": "$CC_CMSIS_COMMIT",
49 "REFSPEC": "$CC_CMSIS_REFSPEC",
Nicola Mazzucato16951be2021-04-20 09:35:09 +010050 "LOCATION": "scp/contrib/cmsis/git"
Zelalem1af7a7b2020-08-04 17:34:32 -050051 }
52 ]
53EOM
54 elif [ "$REPO" = "TRUSTED_FIRMWARE" ]; then
55 read -r -d '' sources << EOM
56 [
57 {
58 "type": "git",
59 "URL": "$CC_TRUSTED_FIRMWARE_URL",
60 "COMMIT": "$CC_TRUSTED_FIRMWARE_COMMIT",
61 "REFSPEC": "$CC_TRUSTED_FIRMWARE_REFSPEC",
62 "LOCATION": "trusted_firmware"
63 },
64 {
65 "type": "http",
66 "URL": "$mbedtls_archive",
67 "COMPRESSION": "xz",
saurom015caaf432020-10-06 11:57:49 +010068 "EXTRA_PARAMS": "--strip-components=1",
Zelalem1af7a7b2020-08-04 17:34:32 -050069 "LOCATION": "mbedtls"
70 }
71 ]
72EOM
73 else
74 sources=""
75 fi
76metadata="\"BUILD_CONFIG\": \"${BUILD_CONFIG}\", \"RUN_CONFIG\": \"${RUN_CONFIG}\""
77cat <<EOF > "${CONFIG_JSON}"
78{
79 "configuration":
80 {
81 "remove_workspace": true,
82 "include_assembly": true
83 },
84 "parameters":
85 {
86 "sources": $sources,
87 "workspace": "${jenkins_sources}",
88 "output_file": "${OUTPUT_JSON}",
89 "metadata": {$metadata}
90 },
91 "elfs": [
92 ${elf}
93 ]
94}
95EOF
96set -e
97}
98
99prepare_html_pages() {
100 pushd ${OUTDIR}
101 cp ${BMCOV_REPORT_FOLDER}/reporter_cc.py ${OUTDIR}/.
102 if [ "${DEBUG_ELFS}" = "True" ]; then
103 cp "${TRACE_FOLDER}/${trace_file_prefix}"* ${OUTDIR}/.
104 fi
105 # to be run on the user locally
106 cat <<EOF > "server.sh"
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -0500107#!/usr/bin/env bash
Zelalem1af7a7b2020-08-04 17:34:32 -0500108
109echo "Running server..."
110type -a firefox || (echo "Please install Firefox..." && exit 1)
111type -a python3 || (echo "Please install python3..." && exit 1)
112
113python - << EOT
114import os
115import reporter_cc
116
117output_file = os.getenv('OUTPUT_JSON', 'output_file.json')
118source_folder = os.getenv('CSOURCE_FOLDER', 'source')
119r = reporter_cc.ReportCC(output_file)
120r.clone_repo(source_folder)
121EOT
122(sleep 2; firefox --new-window http://localhost:8081) &
123python3 -m http.server 8081
124EOF
125 chmod 777 server.sh
126 zip -r server_side.zip *
127 popd
128}
129
130PVLIB_HOME=${PVLIB_HOME:-$warehouse/SysGen/PVModelLib/$model_version/$model_build/external}
131echo "Building Bmcov for code coverage..."
132source "$CI_ROOT/script/test_definitions.sh"
133export BMCOV_FOLDER="${BMCOV_FOLDER:-$workspace/test-definitions/scripts/tools/code_coverage/fastmodel_baremetal/bmcov}"
134pushd "${workspace}"
135git clone "${TEST_DEFINITIONS_REPO}" -b "${TEST_DEFINITIONS_REFSPEC}"
136popd
137pushd "${BMCOV_FOLDER}"
138export MODEL_PLUGIN_FOLDER="${BMCOV_FOLDER}"/model-plugin
139if [ -n "$(find "$warehouse" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then
140 echo "$warehouse not mounted. Falling back to pre-built plugins.."
141 folder="http://files.oss.arm.com/downloads/tf-a/coverage-plugin"
142 wget -q ${folder}/{CoverageTrace.so,CoverageTrace.o,PluginUtils.o} \
143 -P "${MODEL_PLUGIN_FOLDER}"
144 else
145 make -C model-plugin PVLIB_HOME="$PVLIB_HOME"
146fi
147
148export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MODEL_PLUGIN_FOLDER
149export trace_file_prefix=covtrace
150export BMCOV_REPORT_FOLDER="${BMCOV_FOLDER}"/report
151export coverage_trace_plugin="${MODEL_PLUGIN_FOLDER}"/CoverageTrace.so
152popd