blob: f1881555b5f5713d84738d3c7a11d18fb353901b [file] [log] [blame]
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -05001#!/usr/bin/env bash
Fathi Boudra422bf772019-12-02 11:10:16 +02002#
Zelalem917b43e2020-08-04 11:39:55 -05003# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
Fathi Boudra422bf772019-12-02 11:10:16 +02004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8set -e
9
10# Build
Zelalem917b43e2020-08-04 11:39:55 -050011export COVERAGE_ON=$(echo "$RUN_CONFIG" | grep -v 'aarch32' | grep -qE 'bmcov' && echo 1 || echo 0)
12if [ $COVERAGE_ON -eq 1 ]; then
13 source "$CI_ROOT/script/build_bmcov.sh"
14fi
15
Fathi Boudra422bf772019-12-02 11:10:16 +020016"$CI_ROOT/script/build_package.sh"
17
Zelalem917b43e2020-08-04 11:39:55 -050018
Fathi Boudra422bf772019-12-02 11:10:16 +020019if [ "$skip_runs" ]; then
20 exit 0
21fi
22
23# Execute test locally for FVP configs
24if [ "$RUN_CONFIG" != "nil" ] && echo "$RUN_CONFIG" | grep -iq '^fvp'; then
25 "$CI_ROOT/script/run_package.sh"
Zelalem917b43e2020-08-04 11:39:55 -050026 if [ $COVERAGE_ON -eq 1 ]; then
27 ELF_FOLDER=""
28 DEBUG_FOLDER=${artefacts}/debug
29 RELEASE_FOLDER=${artefacts}/release
30 if ls "${DEBUG_FOLDER}/"*.elf &> /dev/null;then
31 export ELF_FOLDER=$DEBUG_FOLDER
32 elif ls "${RELEASE_FOLDER}/"*.elf &> /dev/null;then
33 export ELF_FOLDER=$RELEASE_FOLDER
34 else
35 # If elf files are not present, report can't be produced
36 echo "ELF files not present, aborting reports..."
37 exit 0
38 fi
39 export OUTDIR=${WORKSPACE}/html
40 test_config=${TEST_CONFIG}
41 if [ -n "$CC_SCP_REFSPEC" ]; then #SCP
42 export JENKINS_SOURCES_WORKSPACE="${scp_root:-$workspace}"
43 if grep -q "fvp-linux.sgi" <<< "$test_config"; then
44 export LIST_OF_BINARIES=${LIST_OF_BINARIES:-"scp_ram scp_rom mcp_rom"}
Zelalem917b43e2020-08-04 11:39:55 -050045 fi
46 export OBJDUMP="$(which 'arm-none-eabi-objdump')"
47 export READELF="$(which 'arm-none-eabi-readelf')"
48 export REPO=SCP
49 else # TF-A
50 export JENKINS_SOURCES_WORKSPACE="${tf_root:-$workspace}"
51 export LIST_OF_BINARIES=${LIST_OF_BINARIES:-"bl1 bl2 bl31"}
52 export OBJDUMP="$(which 'aarch64-none-elf-objdump')"
53 export READELF="$(which 'aarch64-none-elf-readelf')"
54 export REPO=TRUSTED_FIRMWARE
55 fi
56 echo "Toolchain:$OBJDUMP"
57
58 mkdir -p ${OUTDIR}
59 sync
60 sleep 5 #wait for trace files to be written
61 if [ $(ls -1 ${DEBUG_FOLDER}/${trace_file_prefix}-* 2>/dev/null | wc -l) != 0 ]; then
62 export TRACE_FOLDER=${DEBUG_FOLDER}
63 elif [ $(ls -1 ${RELEASE_FOLDER}/${trace_file_prefix}-* 2>/dev/null | wc -l) != 0 ]; then
64 export TRACE_FOLDER=${RELEASE_FOLDER}
65 else
66 echo "Trace files not present, aborting reports..."
67 exit 0
68 fi
69 export REPORT_TITLE="Coverage Summary Report [Build:${BUILD_NUMBER}]"
70 # launch intermediate layer script
71 export CONFIG_JSON=${OUTDIR}/config_file.json
72 export OUTPUT_JSON=${OUTDIR}/output_file.json
73 export CSOURCE_FOLDER=source
74 export DEBUG_ELFS=${DEBUG_ELFS:-True}
75 prepare_json_configuration "${LIST_OF_BINARIES}" "${JENKINS_SOURCES_WORKSPACE}"
76 echo "Executing intermediate_layer.py ..."
77 python ${BMCOV_REPORT_FOLDER}/intermediate_layer.py --config-json "${CONFIG_JSON}"
78 ver_py=$(python -V 2>&1 | sed 's/.* \([0-9]\).\([0-9]\).*/\1\2/')
79 if [ "$ver_py" = "27" ]; then
80 python ${BMCOV_REPORT_FOLDER}/gen-coverage-report.py --config ${BMCOV_REPORT_FOLDER}/config_atf.py \
81 --prefix_workspace "$JENKINS_SOURCES_WORKSPACE"
82 else
83 echo "Python 2.7 is required for producing Bmcov reports"
84 fi
85 chmod 775 ${BMCOV_REPORT_FOLDER}/branch_coverage/branch_coverage.sh
86 echo "Running branch coverage..."
87 branch_folder=${OUTDIR}/lcov_report
88 mkdir -p ${branch_folder}
89 pushd ${BMCOV_REPORT_FOLDER}/branch_coverage
90 . branch_coverage.sh --workspace ${JENKINS_SOURCES_WORKSPACE} --json-path ${OUTPUT_JSON} --outdir ${branch_folder}
91 popd
92 export OUTDIR=${WORKSPACE}/html
93 # prepare static (Jenkins) and dynamic (python server) pages
94 prepare_html_pages
95 fi
Fathi Boudra422bf772019-12-02 11:10:16 +020096fi