Leonardo Sandoval | 9dfdd1b | 2020-08-06 17:08:11 -0500 | [diff] [blame] | 1 | #!/usr/bin/env bash |
Zelalem | 1af7a7b | 2020-08-04 17:34:32 -0500 | [diff] [blame] | 2 | # |
| 3 | # Copyright (c) 2019-2020, Arm Limited. All rights reserved. |
| 4 | # |
| 5 | # SPDX-License-Identifier: BSD-3-Clause |
| 6 | # |
| 7 | |
| 8 | set -e |
| 9 | source "$CI_ROOT/utils.sh" |
| 10 | |
| 11 | prepare_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 | } |
| 30 | EOM |
| 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 Mazzucato | 16951be | 2021-04-20 09:35:09 +0100 | [diff] [blame] | 50 | "LOCATION": "scp/contrib/cmsis/git" |
Zelalem | 1af7a7b | 2020-08-04 17:34:32 -0500 | [diff] [blame] | 51 | } |
| 52 | ] |
| 53 | EOM |
| 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", |
saurom01 | 5caaf43 | 2020-10-06 11:57:49 +0100 | [diff] [blame] | 68 | "EXTRA_PARAMS": "--strip-components=1", |
Zelalem | 1af7a7b | 2020-08-04 17:34:32 -0500 | [diff] [blame] | 69 | "LOCATION": "mbedtls" |
| 70 | } |
| 71 | ] |
| 72 | EOM |
| 73 | else |
| 74 | sources="" |
| 75 | fi |
| 76 | metadata="\"BUILD_CONFIG\": \"${BUILD_CONFIG}\", \"RUN_CONFIG\": \"${RUN_CONFIG}\"" |
| 77 | cat <<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 | } |
| 95 | EOF |
| 96 | set -e |
| 97 | } |
| 98 | |
| 99 | prepare_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 Sandoval | 9dfdd1b | 2020-08-06 17:08:11 -0500 | [diff] [blame] | 107 | #!/usr/bin/env bash |
Zelalem | 1af7a7b | 2020-08-04 17:34:32 -0500 | [diff] [blame] | 108 | |
| 109 | echo "Running server..." |
| 110 | type -a firefox || (echo "Please install Firefox..." && exit 1) |
| 111 | type -a python3 || (echo "Please install python3..." && exit 1) |
| 112 | |
| 113 | python - << EOT |
| 114 | import os |
| 115 | import reporter_cc |
| 116 | |
| 117 | output_file = os.getenv('OUTPUT_JSON', 'output_file.json') |
| 118 | source_folder = os.getenv('CSOURCE_FOLDER', 'source') |
| 119 | r = reporter_cc.ReportCC(output_file) |
| 120 | r.clone_repo(source_folder) |
| 121 | EOT |
| 122 | (sleep 2; firefox --new-window http://localhost:8081) & |
| 123 | python3 -m http.server 8081 |
| 124 | EOF |
| 125 | chmod 777 server.sh |
| 126 | zip -r server_side.zip * |
| 127 | popd |
| 128 | } |
| 129 | |
| 130 | PVLIB_HOME=${PVLIB_HOME:-$warehouse/SysGen/PVModelLib/$model_version/$model_build/external} |
| 131 | echo "Building Bmcov for code coverage..." |
| 132 | source "$CI_ROOT/script/test_definitions.sh" |
| 133 | export BMCOV_FOLDER="${BMCOV_FOLDER:-$workspace/test-definitions/scripts/tools/code_coverage/fastmodel_baremetal/bmcov}" |
| 134 | pushd "${workspace}" |
| 135 | git clone "${TEST_DEFINITIONS_REPO}" -b "${TEST_DEFINITIONS_REFSPEC}" |
| 136 | popd |
| 137 | pushd "${BMCOV_FOLDER}" |
| 138 | export MODEL_PLUGIN_FOLDER="${BMCOV_FOLDER}"/model-plugin |
| 139 | if [ -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" |
| 146 | fi |
| 147 | |
| 148 | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MODEL_PLUGIN_FOLDER |
| 149 | export trace_file_prefix=covtrace |
| 150 | export BMCOV_REPORT_FOLDER="${BMCOV_FOLDER}"/report |
| 151 | export coverage_trace_plugin="${MODEL_PLUGIN_FOLDER}"/CoverageTrace.so |
| 152 | popd |