blob: 243a4a53276daf2d5ab9c04cb84486b25e440c15 [file] [log] [blame]
Fathi Boudra9e402bf2019-12-05 11:16:41 +02001#!/bin/bash
2
Leonardo Sandoval196c8fe2020-07-26 18:02:10 -05003set -ex
4
Leonardo Sandoval3a931b92021-02-05 11:20:09 -06005# Run the given command passed through parameters, if fails, try
6# at most more N-times with a pause of M-seconds until success.
7resilient_cmd() {
8 local cmd="$*"
9 local max_wait=10
10 local sleep_body=2
11 local iter=0
12
13 echo "Waiting for $cmd to complete"
14 while true; do
15 if ${cmd}; then
16 echo "$cmd job finished"
17 break
18 fi
19
20 sleep ${sleep_body}
21
22 iter=$(( iter + 1 ))
23 if [ ${iter} -ge ${max_wait} ]; then
24 return 1
25 fi
26 done
27 return 0
28}
Fathi Boudra9e402bf2019-12-05 11:16:41 +020029
Fathi Boudra7975ca72020-01-28 16:48:40 +020030# FIXME workaround clone_repos.sh script when using gerrit
31unset GERRIT_PROJECT
32unset GERRIT_BRANCH
33unset GERRIT_REFSPEC
34
Fathi Boudra9e402bf2019-12-05 11:16:41 +020035if [ -z "${WORKSPACE}" ]; then
36 ## Local build
37 export WORKSPACE=${PWD}
38fi
39
Fathi Boudra9e402bf2019-12-05 11:16:41 +020040cd ${WORKSPACE}
41
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050042# Several test descriptions are pending to be included in OpenCI, so for the moment
43# blocklist these.
Leonardo Sandovalf9a362f2021-03-04 12:02:57 -060044# 1. coverity-tf-misra: https://projects.linaro.org/browse/TFC-10
Leonardo Sandoval6631c432021-04-14 12:15:38 -050045# 2. fvp-tbb-mbedtls-upcounter,fvp-fwu:fvp-tftf.fwu-aemv8a.invalid_nvcounter-debug: Pending TFC ticket
46# 3. Failure at LAVA job https://tf.validation.linaro.org/scheduler/job/142122
Leonardo Sandoval63fd38f2021-03-26 14:05:03 -060047# TFC ticket https://projects.linaro.org/browse/TFC-70
Leonardo Sandoval6631c432021-04-14 12:15:38 -050048# 4. Failure at LAVA job https://tf.validation.linaro.org/scheduler/job/142101
Leonardo Sandoval63fd38f2021-03-26 14:05:03 -060049# TFC ticket https://projects.linaro.org/browse/TFC-70
50
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050051blocklist="blocklist.txt"
52cat << EOF > "${blocklist}"
53coverity-tf-misra
Leonardo Sandovalf9a362f2021-03-04 12:02:57 -060054fvp-tbb-mbedtls-upcounter,fvp-fwu,nil,nil,nil:fvp-tftf.fwu-aemv8a.invalid_nvcounter-debug
Leonardo Sandoval63fd38f2021-03-26 14:05:03 -060055fvp-mb-256-optee-romlib,nil,nil,nil,nil:fvp-optee.mb-linux.rootfs+ftpm-romlib-fip.ftpm-aemv8a
56fvp-linux-as-bl33,nil,nil,nil,nil:fvp-linux.bl33-dtb-aemv8a.linux.bl33-debug
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050057EOF
58
Leonardo Sandovalf9a362f2021-03-04 12:02:57 -060059if echo "${TEST_DESC}" | grep -F -f ${blocklist} - ; then
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050060 echo ${TEST_DESC} is blocklisted
61 exit 0
62fi
63
64mkdir -p ${WORKSPACE}/nfs/downloads/mbedtls
65cd ${WORKSPACE}/nfs/downloads/mbedtls
66curl --connect-timeout 5 --retry 5 --retry-delay 1 -sLSO -k -C - ${MBEDTLS_URL}
67export mbedtls_archive=${WORKSPACE}/nfs/downloads/mbedtls/$(ls -1 mbedtls-*.tar.gz)
68
Fathi Boudra9e402bf2019-12-05 11:16:41 +020069# Path to root of CI repository
70ci_root="${WORKSPACE}/tf-a-ci-scripts"
71
Leonardo Sandoval6631c432021-04-14 12:15:38 -050072export tf_downloads="https://downloads.trustedfirmware.org"
73export tfa_downloads="${tf_downloads}/tf-a"
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050074
75# Fetch required firmware/binaries and place it at proper location
Fathi Boudra9e402bf2019-12-05 11:16:41 +020076export nfs_volume="${WORKSPACE}/nfs"
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050077project_filer="${nfs_volume}/projectscratch/ssg/trusted-fw"
78for d in spm spm-10-23-2020; do
79 mkdir -p ${project_filer}/ci-files/$d
80 cd ${project_filer}/ci-files/$d
Leonardo Sandoval3a931b92021-02-05 11:20:09 -060081 resilient_cmd curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo \
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050082 download.json \
83 ${tfa_downloads}/$d/?export=json
84 for f in $(cat download.json | jq .files[].Url | sed s/\"//g); do
Leonardo Sandoval3a931b92021-02-05 11:20:09 -060085 resilient_cmd curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo $(basename $f) $f
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050086 done
87done
88
89# FIXME: place below code in above loop
90# fetch https://downloads.trustedfirmware.org/tf-a/dummy-crypto-lib.tar
91cd ${project_filer}
Leonardo Sandoval3a931b92021-02-05 11:20:09 -060092resilient_cmd curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo \
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050093 dummy-crypto-lib.tar \
94 https://downloads.trustedfirmware.org/tf-a/dummy-crypto-lib.tar
95tar xf dummy-crypto-lib.tar
96
97# fetch Juno rootfs, required by fvp
98linaro_2001_release="/nfs/downloads/linaro/20.01"
99cd ${linaro_2001_release}
Leonardo Sandoval3a931b92021-02-05 11:20:09 -0600100resilient_cmd curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo \
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500101 lt-vexpress64-openembedded_minimal-armv8-gcc-5.2_20170127-761.img.gz \
102 https://releases.linaro.org/openembedded/juno-lsk/latest/lt-vexpress64-openembedded_minimal-armv8-gcc-5.2_20170127-761.img.gz
103
Leonardo Sandoval6631c432021-04-14 12:15:38 -0500104# export trace code coverage variable
105export coverage_trace_plugin="${tf_downloads}/coverage-plugin/qa-tools/coverage-tool/coverage-plugin/coverage_trace.so"
106
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500107# FIXME: create temporal /arm softlinks.
108# Reason behind is described at
109# https://git.trustedfirmware.org/ci/dockerfiles.git/commit/?id=4e2c2c94e434bc8a9b25f5da7c6018a43db8cb2f
110
111# /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gcc
112mkdir -p /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-9-2020-q2-update
113ln -s \
114 ${TOOLS_DIR}/bin \
115 /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-9-2020-q2-update/bin
116
Leonardo Sandovale2123b12021-06-11 15:25:08 -0500117# /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc
118mkdir -p /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-10-2020-q4-major
119ln -s \
120 ${TOOLS_DIR}/gnu-rm/bin \
121 /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-10-2020-q4-major/bin
122
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500123# /arm/projectscratch/ssg/trusted-fw/dummy-crypto-lib
124mkdir -p /arm/projectscratch/ssg/trusted-fw
125ln -s \
126 ${project_filer}/dummy-crypto-lib \
127 /arm/projectscratch/ssg/trusted-fw/dummy-crypto-lib
128
129
130# /arm/pdsw/tools/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
131mkdir -p /arm/pdsw/tools/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu
132ln -s ${TOOLS_DIR}/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin \
133 /arm/pdsw/tools/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin
134
135# CC=/arm/warehouse/Distributions/FA/ARMCompiler/6.8/25/standalone-linux-x86_64-rel/bin/armclang
136mkdir -p /arm/warehouse/Distributions/FA/ARMCompiler/6.8/25/standalone-linux-x86_64-rel
137ln -s ${TOOLS_DIR}/armclang-6.8/bin \
138 /arm/warehouse/Distributions/FA/ARMCompiler/6.8/25/standalone-linux-x86_64-rel/bin
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200139
140# Mandatory workspace
141export workspace="${workspace:-${WORKSPACE}/workspace}"
142
143# During feature development, we need incremental build, so don't run
144# 'distlcean' on every invocation.
145export dont_clean="${dont_clean:-1}"
146
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200147# Local paths to TF and TFTF repositories
148export tf_root="${tf_root:-${WORKSPACE}/trusted-firmware-a}"
149export tftf_root="${tftf_root:-${WORKSPACE}/tf-a-tests}"
150
151# We'd need to see the terminals during development runs, so no need for
152# automation.
153export test_run="${test_run:-1}"
154
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500155# By default, do not execute any run
156export skip_runs="${skip_runs:-1}"
157
158# set linaro platform release folder
159export linaro_2001_release="file://${linaro_2001_release}"
160
161export docker_registry="${DOCKER_REGISTRY}"
162export armlmd_license_file="${ARMLMD_LICENSE_FILE}"
163export juno_rootfs_url="${JUNO_ROOTFS_URL}"
164
165# Parse TEST_DESC and export test_group & tf_config and & run_config
166test_desc="${test_desc:-$TEST_DESC}"
167test_desc="${test_desc:?}"
168
169# Strip test suffix
170test_desc="${test_desc%%.test}"
171
172lhs="$(echo "$test_desc" | awk -F: '{print $1}')"
173rhs="$(echo "$test_desc" | awk -F: '{print $2}')"
174
Leonardo Sandoval601d8822021-03-17 10:40:06 -0600175test_group="$(echo "$lhs" | awk -F% '{print $2}')"
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500176build_config="$(echo "$lhs" | awk -F% '{print $3}')"
Leonardo Sandoval601d8822021-03-17 10:40:06 -0600177run_config="${rhs%.test}"
178test_config="$(cat $WORKSPACE/TEST_DESC)"
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500179
Leonardo Sandoval601d8822021-03-17 10:40:06 -0600180export BUILD_CONFIG="$build_config"
181export RUN_CONFIG="$run_config"
182export TEST_CONFIG="$test_config"
183export TEST_GROUP="$test_group"
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500184
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200185# Run this script bash -x, and it gets passed downstream for debugging
186if echo "$-" | grep -q "x"; then
187 bash_opts="-x"
188fi
189
Leonardo Sandoval601d8822021-03-17 10:40:06 -0600190mkdir -p "${workspace}"
191bash $bash_opts "$ci_root/script/build_package.sh"
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200192
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500193# compress rootfs.bin file
194for a in $(find ${workspace} -type d -name artefacts); do
Leonardo Sandoval60afea52021-03-16 10:48:03 -0600195 for r in $(find $a -type f -name rootfs.bin -or -name busybox.bin); do
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500196 d=$(dirname $r); b=$(basename $r); cd "$d" && gzip "$b"
197 done
198done
199
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200200cp -a $(find ${workspace} -type d -name artefacts) ${WORKSPACE}/