blob: e1ac0ee2a6dc4df69cae4dcd6f56c1a2a16ad5a4 [file] [log] [blame]
Fathi Boudra9e402bf2019-12-05 11:16:41 +02001#!/bin/bash
2
Leonardo Sandoval196c8fe2020-07-26 18:02:10 -05003set -ex
4
Fathi Boudra9e402bf2019-12-05 11:16:41 +02005
Fathi Boudra7975ca72020-01-28 16:48:40 +02006# FIXME workaround clone_repos.sh script when using gerrit
7unset GERRIT_PROJECT
8unset GERRIT_BRANCH
9unset GERRIT_REFSPEC
10
Fathi Boudra9e402bf2019-12-05 11:16:41 +020011if [ -z "${WORKSPACE}" ]; then
12 ## Local build
13 export WORKSPACE=${PWD}
14fi
15
Fathi Boudra9e402bf2019-12-05 11:16:41 +020016cd ${WORKSPACE}
17
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050018# Several test descriptions are pending to be included in OpenCI, so for the moment
19# blocklist these.
20blocklist="blocklist.txt"
21cat << EOF > "${blocklist}"
22coverity-tf-misra
23tf-l2-boot-tests-juno%juno-tbb-mbedtls-romlib,juno-default,nil,nil:juno-tftf-romlib
24EOF
25
26if echo "${TEST_DESC}" | grep -f ${blocklist} - ; then
27 echo ${TEST_DESC} is blocklisted
28 exit 0
29fi
30
31mkdir -p ${WORKSPACE}/nfs/downloads/mbedtls
32cd ${WORKSPACE}/nfs/downloads/mbedtls
33curl --connect-timeout 5 --retry 5 --retry-delay 1 -sLSO -k -C - ${MBEDTLS_URL}
34export mbedtls_archive=${WORKSPACE}/nfs/downloads/mbedtls/$(ls -1 mbedtls-*.tar.gz)
35
Fathi Boudra9e402bf2019-12-05 11:16:41 +020036# Path to root of CI repository
37ci_root="${WORKSPACE}/tf-a-ci-scripts"
38
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050039# FIXME: node bionic-amd64-tf-a-build does not set correctly PATH=$TOOLS_DIR/bin:$PATH
40TOOLS_DIR=/home/buildslave/tools
41export PATH=${TOOLS_DIR}/bin:${PATH}
42
43export tfa_downloads="https://downloads.trustedfirmware.org/tf-a"
44
45# Fetch required firmware/binaries and place it at proper location
Fathi Boudra9e402bf2019-12-05 11:16:41 +020046export nfs_volume="${WORKSPACE}/nfs"
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -050047project_filer="${nfs_volume}/projectscratch/ssg/trusted-fw"
48for d in spm spm-10-23-2020; do
49 mkdir -p ${project_filer}/ci-files/$d
50 cd ${project_filer}/ci-files/$d
51 curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo \
52 download.json \
53 ${tfa_downloads}/$d/?export=json
54 for f in $(cat download.json | jq .files[].Url | sed s/\"//g); do
55 curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo $(basename $f) $f
56 done
57done
58
59# FIXME: place below code in above loop
60# fetch https://downloads.trustedfirmware.org/tf-a/dummy-crypto-lib.tar
61cd ${project_filer}
62curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo \
63 dummy-crypto-lib.tar \
64 https://downloads.trustedfirmware.org/tf-a/dummy-crypto-lib.tar
65tar xf dummy-crypto-lib.tar
66
67# fetch Juno rootfs, required by fvp
68linaro_2001_release="/nfs/downloads/linaro/20.01"
69cd ${linaro_2001_release}
70curl --connect-timeout 5 --retry 5 --retry-delay 1 -fsSLo \
71 lt-vexpress64-openembedded_minimal-armv8-gcc-5.2_20170127-761.img.gz \
72 https://releases.linaro.org/openembedded/juno-lsk/latest/lt-vexpress64-openembedded_minimal-armv8-gcc-5.2_20170127-761.img.gz
73
74# FIXME: create temporal /arm softlinks.
75# Reason behind is described at
76# https://git.trustedfirmware.org/ci/dockerfiles.git/commit/?id=4e2c2c94e434bc8a9b25f5da7c6018a43db8cb2f
77
78# /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gcc
79mkdir -p /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-9-2020-q2-update
80ln -s \
81 ${TOOLS_DIR}/bin \
82 /arm/pdsw/downloads/scp-models/tools/gcc-arm-none-eabi-9-2020-q2-update/bin
83
84# /arm/projectscratch/ssg/trusted-fw/dummy-crypto-lib
85mkdir -p /arm/projectscratch/ssg/trusted-fw
86ln -s \
87 ${project_filer}/dummy-crypto-lib \
88 /arm/projectscratch/ssg/trusted-fw/dummy-crypto-lib
89
90
91# /arm/pdsw/tools/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
92mkdir -p /arm/pdsw/tools/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu
93ln -s ${TOOLS_DIR}/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin \
94 /arm/pdsw/tools/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin
95
96# CC=/arm/warehouse/Distributions/FA/ARMCompiler/6.8/25/standalone-linux-x86_64-rel/bin/armclang
97mkdir -p /arm/warehouse/Distributions/FA/ARMCompiler/6.8/25/standalone-linux-x86_64-rel
98ln -s ${TOOLS_DIR}/armclang-6.8/bin \
99 /arm/warehouse/Distributions/FA/ARMCompiler/6.8/25/standalone-linux-x86_64-rel/bin
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200100
101# Mandatory workspace
102export workspace="${workspace:-${WORKSPACE}/workspace}"
103
104# During feature development, we need incremental build, so don't run
105# 'distlcean' on every invocation.
106export dont_clean="${dont_clean:-1}"
107
108# During feature development, we typically only build in debug mode.
109export bin_mode="${bin_mode:-debug}"
110
111# Local paths to TF and TFTF repositories
112export tf_root="${tf_root:-${WORKSPACE}/trusted-firmware-a}"
113export tftf_root="${tftf_root:-${WORKSPACE}/tf-a-tests}"
114
115# We'd need to see the terminals during development runs, so no need for
116# automation.
117export test_run="${test_run:-1}"
118
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500119# By default, do not execute any run
120export skip_runs="${skip_runs:-1}"
121
122# set linaro platform release folder
123export linaro_2001_release="file://${linaro_2001_release}"
124
125export docker_registry="${DOCKER_REGISTRY}"
126export armlmd_license_file="${ARMLMD_LICENSE_FILE}"
127export juno_rootfs_url="${JUNO_ROOTFS_URL}"
128
129# Parse TEST_DESC and export test_group & tf_config and & run_config
130test_desc="${test_desc:-$TEST_DESC}"
131test_desc="${test_desc:?}"
132
133# Strip test suffix
134test_desc="${test_desc%%.test}"
135
136lhs="$(echo "$test_desc" | awk -F: '{print $1}')"
137rhs="$(echo "$test_desc" | awk -F: '{print $2}')"
138
139export test_group="$(echo "$lhs" | awk -F% '{print $2}')"
140
141# Test descriptors are always generated in the following order:
142# tf_config, tftf_config, scp_config, scp_tools
143build_config="$(echo "$lhs" | awk -F% '{print $3}')"
144export tf_config="$(echo "${build_config}" | awk -F, '{print $1}')"
145export tftf_config="$(echo "${build_config}" | awk -F, '{print $2}')"
146export scp_config="$(echo "${build_config}" | awk -F, '{print $3}')"
147export scp_tools="$(echo "${build_config}" | awk -F, '{print $4}')"
148
149export run_config="${rhs%.test}"
150
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200151# Run this script bash -x, and it gets passed downstream for debugging
152if echo "$-" | grep -q "x"; then
153 bash_opts="-x"
154fi
155
156bash $bash_opts "$ci_root/script/run_local_ci.sh"
157
Leonardo Sandovaldc2a03a2020-10-05 18:12:19 -0500158# compress rootfs.bin file
159for a in $(find ${workspace} -type d -name artefacts); do
160 for r in $(find $a -type f -name rootfs.bin); do
161 d=$(dirname $r); b=$(basename $r); cd "$d" && gzip "$b"
162 done
163done
164
Fathi Boudra9e402bf2019-12-05 11:16:41 +0200165cp -a $(find ${workspace} -type d -name artefacts) ${WORKSPACE}/