-
Notifications
You must be signed in to change notification settings - Fork 2
/
.azure-pipelines.yml
272 lines (263 loc) · 14.6 KB
/
.azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
jobs:
- job: code_style
displayName: 'Check code style'
pool:
vmImage: ubuntu-18.04
container:
image: jforissier/optee_os_ci
steps:
- script: |
set -e
pushd .
mkdir -p /tmp/linux/scripts
cd /tmp/linux/scripts
wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/plain/scripts/checkpatch.pl
chmod +x checkpatch.pl
wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/plain/scripts/spelling.txt
echo "invalid.struct.name" >const_structs.checkpatch
export PATH=/tmp/linux/scripts:$PATH
popd
source scripts/checkpatch_inc.sh
function _do() { echo '>>' $*; $*; }
# Run checkpatch.pl:
# - on the tip of the branch only if we're not in a pull request
# - otherwise:
# * on each commit in the development branch that is not in the target (merge to) branch
# * on the global diff if the PR contains more than one commit (useful to check if fixup
# commits do solve previous checkpatch errors)
if [ "${SYSTEM_PULLREQUEST_PULLREQUESTID}" == "" ]; then \
_do checkpatch HEAD || failed=1; \
else \
for c in $(git rev-list HEAD^1..HEAD^2); do \
_do checkpatch $c || failed=1; \
done; \
if [ "$(git rev-list --count HEAD^1..HEAD^2)" -gt 1 ]; then \
_do checkdiff $(git rev-parse HEAD^1) $(git rev-parse HEAD^2) || failed=1; \
fi; \
fi
[ -z "$failed" ]
displayName: 'Run checkpatch'
- script: |
sudo -E bash -c "apt update -qq -y && apt install -qq -y pycodestyle"
pycodestyle scripts/*.py core/arch/arm/plat-stm32mp1/scripts/stm32image.py
displayName: 'Run pycodestyle'
condition: succeededOrFailed() # Run this 'script' even if previous ones failed
- job: build_all
displayName: 'Build all'
pool:
vmImage: ubuntu-18.04
container:
image: jforissier/optee_os_ci
steps:
- task: InstallSSHKey@0
displayName: 'Install SSH key for build cache'
inputs:
hostname: 'cache.forissier.org'
knownHostEntry: 'cache.forissier.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDhjh94ShHh6M19+0NBjgX8ZUiZINQS60GmQjzLfivljvAxBtheCDlDqK5NLIoXn4HE2FxkNTMqmJ+D0p7eQAy81OyYVtvTrJm4B4dk60wMDzQgUK2Cikl2YWNTuxeHpwvpEXP0EK/AHjX1z+98Us9XP6bMr7n1nN6WM8JEdOKpMgl7O9uK3jqYJHo9k+ldkAR4yX8jYgxothu9qkeu2X8tbaP3rjaLlDEsi90AOZb0VJxVmTRWFjh3DBcbbeiurTQndKrQff6T5SkbK2vjKP7ipFAKfAYK6SDOxsZ6c5KB8/5aMHXnble9aL2tDV2CArlbKlTySM9ozcN274gK8n2at8lKfDgzK1yzCehVk6KQk+EERNqxFESpoFgq28DLGqxcPQW27nD7jqFSxPSHGll3ePTF49e8/sNi6vRD3dvmgGMMZWmdI8QwfR83ELN+jcwb3sCNhUh/kK4ETfDMV3N5kRhSGcJK84Lzb4s85afacGxXRu/9HhiEe7wl+LWv5Es='
sshPublicKey: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHVf1VsKwFAc1574TJfQK1v7ugPoYIpASm3UqB8HUQHVl353zH/veEL2xer1g4GSj27LIh0wszGqu6wMIWGNxb1iEozhLBABnavAht9mSYWkeOfzWb8f8c4EgLyK5gWhT049+A1iI8tu9DjHjgGD6JeyYyUXGHwC0cexqu6QJszWuXi2a0arCeM2Dbo/bjTJ4HdKEJBaxHpaO0JbbNmJrKwlAySHKdWtQ7uowKQgdD6BZcjV4n++pj4WfMMUVgBfaw7m3S6DP7I+yAWH4U3mLpf6Yq54rYYCewjLtQHj9H5xAPAi7Yk7b4+DJgeOY8CQ3zSdsnrHf69905ShVy9fUbylilgqdZEiRwxCaQ7Felh9cH9OBmP1DtEDpL1FSj5lj9o7fSNCJ22F8vYKf7hQRK68vjJW16rB1iPh63fHSIdEQV4pobxjhoOctckxI7svHT6u7pf6tP4BW9wu8i4utQq5XaF1HN2DWcKSP8I+R3668/p/kHfAvJQZaHsbFmB+s= jerome@azure-pipelines'
sshKeySecureFile: 'ssh_rsa_build-cache'
- script: |
set -e -v
export LC_ALL=C
export PATH=/usr/local/bin:$PATH # clang
export CROSS_COMPILE32="ccache arm-linux-gnueabihf-"
export CROSS_COMPILE64="ccache aarch64-linux-gnu-"
export CFG_DEBUG_INFO=n
export CFG_WERROR=y
export START=$(date +%s)
export PROJ=$(System.CollectionId)-$(System.TeamProject) # $ORG_NAME-$REPO_NAME
export SCP_OPT="-o ConnectTimeout=10 -o StrictHostKeyChecking=no"
function download_cache() { ssh $SCP_OPT optee_os_ci@cache.forissier.org "cat ccache-$PROJ.tar.gz" | tar zx -C $HOME || echo Nevermind; }
function upload_cache() { if [ ! -e .uploaded ]; then echo Uploading cache && tar c -C $HOME .ccache | gzip -1 | ssh $SCP_OPT optee_os_ci@cache.forissier.org "cat >ccache-$PROJ.tar.gz" && touch .uploaded || echo Nevermind; fi; }
function check_upload_cache() { NOW=$(date +%s); if [ $(expr $NOW - $START) -gt 3000 ]; then upload_cache; fi; }
function _make() { make -j$(getconf _NPROCESSORS_ONLN) -s O=out $* && check_upload_cache; }
function download_plug_and_trust() { mkdir -p $HOME/se050 && git clone --single-branch -b v0.1.0 https://github.com/foundriesio/plug-and-trust $HOME/se050/plug-and-trust || (rm -rf $HOME/se050 ; echo Nervermind); }
download_cache
ccache -s
download_plug_and_trust
_make
_make COMPILER=clang
_make CFG_TEE_CORE_LOG_LEVEL=4 CFG_TEE_CORE_DEBUG=y CFG_TEE_TA_LOG_LEVEL=4 CFG_CC_OPT_LEVEL=0 CFG_DEBUG_INFO=y
_make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 CFG_DEBUG_INFO=n CFG_ENABLE_EMBEDDED_TESTS=n
_make CFG_TEE_CORE_MALLOC_DEBUG=y CFG_CORE_DEBUG_CHECK_STACKS=y
_make CFG_CORE_SANITIZE_UNDEFINED=y
_make CFG_CORE_SANITIZE_KADDRESS=y
_make CFG_LOCKDEP=y
_make CFG_CRYPTO=n
_make CFG_CRYPTO_{AES,DES}=n
_make CFG_CRYPTO_{DSA,RSA,DH}=n
_make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n
_make CFG_CRYPTO_{H,C,CBC_}MAC=n
_make CFG_CRYPTO_{G,C}CM=n
_make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512,512_256}}=n
_make CFG_WITH_PAGER=y out/core/tee{,-pager,-pageable}.bin
_make CFG_WITH_PAGER=y CFG_CRYPTOLIB_NAME=mbedtls CFG_CRYPTOLIB_DIR=lib/libmbedtls
_make CFG_WITH_PAGER=y CFG_WITH_LPAE=y
_make CFG_WITH_LPAE=y
_make CFG_RPMB_FS=y
_make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y
_make CFG_REE_FS=n CFG_RPMB_FS=y
_make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y CFG_CC_OPT_LEVEL=0 CFG_DEBUG_INFO=y
_make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n DEBUG=0
_make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y
_make CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y
_make CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y
_make CFG_SECURE_DATA_PATH=y
_make CFG_REE_FS_TA_BUFFERED=y
_make CFG_WITH_USER_TA=n
_make PLATFORM=vexpress-qemu_armv8a
_make PLATFORM=vexpress-qemu_armv8a COMPILER=clang
_make PLATFORM=vexpress-qemu_armv8a CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 CFG_DEBUG_INFO=n
_make PLATFORM=vexpress-qemu_armv8a CFG_WITH_PAGER=y
_make PLATFORM=vexpress-qemu_armv8a CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y
_make PLATFORM=vexpress-qemu_armv8a CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y
_make PLATFORM=vexpress-qemu_armv8a CFG_VIRTUALIZATION=y
_make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL1_SPMC=y
dd if=/dev/urandom of=BL32_AP_MM.fd bs=2621440 count=1 && _make PLATFORM=vexpress-qemu_armv8a CFG_STMM_PATH=BL32_AP_MM.fd CFG_RPMB_FS=y CFG_CORE_HEAP_SIZE=524288 CFG_TEE_RAM_VA_SIZE=0x00400000
_make PLATFORM=stm-b2260
_make PLATFORM=stm-cannes
_make PLATFORM=stm32mp1
_make PLATFORM=stm32mp1-157C_DK2
_make PLATFORM=vexpress-fvp
_make PLATFORM=vexpress-fvp CFG_ARM64_core=y
_make PLATFORM=vexpress-juno
_make PLATFORM=vexpress-juno CFG_ARM64_core=y
_make PLATFORM=hikey
_make PLATFORM=hikey CFG_ARM64_core=y
_make PLATFORM=mediatek-mt8173
_make PLATFORM=mediatek-mt8175
_make PLATFORM=mediatek-mt8183
_make PLATFORM=mediatek-mt8516
_make PLATFORM=imx-mx6ulevk
_make PLATFORM=imx-mx6ulevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y
_make PLATFORM=imx-mx6ul9x9evk
_make PLATFORM=imx-mx6ullevk CFG_WITH_SOFTWARE_PRNG=n CFG_IMX_RNGB=y
if [ -d $HOME/se050/plug-and-trust ]; then _make PLATFORM=imx-mx6ullevk CFG_NXP_SE05X=y CFG_IMX_I2C=y CFG_STACK_{THREAD,TMP}_EXTRA=8192 CFG_CRYPTO_DRV_{CIPHER,ACIPHER}=y CFG_WITH_SOFTWARE_PRNG=n CFG_NXP_SE05X_{DIEID,RNG,RSA,ECC,CTR}_DRV=y CFG_NXP_SE05X_PLUG_AND_TRUST=$HOME/se050/plug-and-trust ; fi
_make PLATFORM=imx-mx6ulzevk
_make PLATFORM=imx-mx6slevk
_make PLATFORM=imx-mx6sllevk
_make PLATFORM=imx-mx6sxsabreauto
_make PLATFORM=imx-mx6sxsabresd
_make PLATFORM=imx-mx6sxsabresd CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y
_make PLATFORM=imx-mx6solosabresd
_make PLATFORM=imx-mx6solosabreauto
_make PLATFORM=imx-mx6sxsabreauto
_make PLATFORM=imx-mx6qsabrelite
_make PLATFORM=imx-mx6qsabresd
_make PLATFORM=imx-mx6qsabresd CFG_RPMB_FS=y
_make PLATFORM=imx-mx6qsabreauto
_make PLATFORM=imx-mx6qsabreauto CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y
_make PLATFORM=imx-mx6qpsabreauto
_make PLATFORM=imx-mx6qpsabresd
_make PLATFORM=imx-mx6dlsabresd
_make PLATFORM=imx-mx6dlsabreauto
_make PLATFORM=imx-mx6dapalis
_make PLATFORM=imx-mx6qapalis
_make PLATFORM=imx-mx7dsabresd
_make PLATFORM=imx-mx7dsabresd CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y
_make PLATFORM=imx-mx7ulpevk
_make PLATFORM=imx-mx8mmevk
_make PLATFORM=imx-mx8mmevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y
if [ -d $HOME/se050/plug-and-trust ]; then _make PLATFORM=imx-mx8mmevk CFG_NXP_CAAM=y CFG_NXP_CAAM_RNG_DRV=y CFG_NXP_SE05X=y CFG_IMX_I2C=y CFG_STACK_{THREAD,TMP}_EXTRA=8192 CFG_CRYPTO_DRV_{CIPHER,ACIPHER}=y CFG_NXP_SE05X_RNG_DRV=n CFG_WITH_SOFTWARE_PRNG=n CFG_NXP_SE05X_{DIEID,RSA,ECC,CTR}_DRV=y CFG_NXP_SE05X_PLUG_AND_TRUST=$HOME/se050/plug-and-trust ; fi
_make PLATFORM=imx-mx8mnevk
_make PLATFORM=imx-mx8mqevk
_make PLATFORM=imx-mx8mpevk
_make PLATFORM=imx-mx8qxpmek
_make PLATFORM=imx-mx8qmmek
_make PLATFORM=imx-mx8dxlevk
_make PLATFORM=imx-mx8ulpevk
_make PLATFORM=imx-mx8ulpevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y
_make PLATFORM=k3-j721e
_make PLATFORM=k3-j721e CFG_ARM64_core=y
_make PLATFORM=k3-am65x
_make PLATFORM=k3-am65x CFG_ARM64_core=y
_make PLATFORM=ti-dra7xx out/core/tee{,-pager,-pageable}.bin
_make PLATFORM=ti-am57xx
_make PLATFORM=ti-am43xx
_make PLATFORM=sprd-sc9860
_make PLATFORM=sprd-sc9860 CFG_ARM64_core=y
_make PLATFORM=ls-ls1021atwr
_make PLATFORM=ls-ls1021aqds
_make PLATFORM=ls-ls1043ardb
_make PLATFORM=ls-ls1046ardb
_make PLATFORM=ls-ls1012ardb
_make PLATFORM=ls-ls1012afrwy
_make PLATFORM=ls-ls1028ardb
_make PLATFORM=ls-ls1088ardb
_make PLATFORM=ls-ls2088ardb
_make PLATFORM=ls-lx2160ardb
_make PLATFORM=ls-lx2160aqds
_make PLATFORM=zynq7k-zc702
_make PLATFORM=zynqmp-zcu102
_make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y
_make PLATFORM=d02
_make PLATFORM=d02 CFG_ARM64_core=y
_make PLATFORM=rcar
_make PLATFORM=rzg
_make PLATFORM=rzg CFG_ARM64_core=y
_make PLATFORM=rpi3
_make PLATFORM=rpi3 CFG_ARM64_core=y
_make PLATFORM=hikey-hikey960
_make PLATFORM=hikey-hikey960 COMPILER=clang
_make PLATFORM=hikey-hikey960 CFG_ARM64_core=y
_make PLATFORM=hikey-hikey960 CFG_ARM64_core=y COMPILER=clang
_make PLATFORM=hikey-hikey960 CFG_SECURE_DATA_PATH=n
_make PLATFORM=poplar
_make PLATFORM=poplar CFG_ARM64_core=y
_make PLATFORM=rockchip-rk322x
_make PLATFORM=sam
_make PLATFORM=marvell-armada7k8k
_make PLATFORM=marvell-armada3700
_make PLATFORM=marvell-otx2t96
_make PLATFORM=marvell-otx2f95
_make PLATFORM=marvell-otx2t98
_make PLATFORM=synquacer
_make PLATFORM=sunxi-bpi_zero
_make PLATFORM=sunxi-sun50i_a64
_make PLATFORM=bcm-ns3 CFG_ARM64_core=y
_make PLATFORM=hisilicon-hi3519av100_demo
_make PLATFORM=amlogic
_make PLATFORM=rzn1
upload_cache
- job: QEMUv8_check
displayName: 'Run regression tests (xtest) in QEMUv8'
pool:
vmImage: ubuntu-18.04
container:
image: jforissier/optee_os_ci:qemuv8_check
steps:
- script: |
set -e -v
export LC_ALL=C
# Azure CI sets ${SYSTEM} to "build" which prevents OpenSSL from building due to:
# https://github.com/openssl/openssl/blob/OpenSSL_1_1_1l/config#L56
unset SYSTEM
WD=$(pwd)
sudo -E bash -c "cd /root/optee_repo_qemu_v8/.repo/repo && git pull"
sudo -E bash -c "cd /root/optee_repo_qemu_v8 && repo sync -j 10"
sudo mv /root/optee_repo_qemu_v8/optee_os /root/optee_repo_qemu_v8/optee_os_old
sudo ln -s ${WD} /root/optee_repo_qemu_v8/optee_os
sudo -E make -C /root/optee_repo_qemu_v8/build -j$(getconf _NPROCESSORS_ONLN) CFG_TEE_CORE_LOG_LEVEL=0 check
sudo -E rm -rf /root/optee_repo_qemu_v8/out-br/build/optee_test*
sudo -E make -C /root/optee_repo_qemu_v8/build arm-tf-clean
sudo -E make -C /root/optee_repo_qemu_v8/build -j$(getconf _NPROCESSORS_ONLN) CFG_TEE_CORE_LOG_LEVEL=0 check XEN_BOOT=y
- job: QEMUv8_build_Rust
displayName: 'Run regression tests (Rust) in QEMUv8'
pool:
vmImage: ubuntu-18.04
container:
image: jforissier/optee_os_ci:qemuv8_check
steps:
- script: |
set -e -v
export HOME=/root
export LC_ALL=C
# Azure CI sets ${SYSTEM} to "build" which prevents OpenSSL from building due to:
# https://github.com/openssl/openssl/blob/OpenSSL_1_1_1l/config#L56
unset SYSTEM
WD=$(pwd)
sudo -E bash -c "cd /root/optee_repo_qemu_v8/.repo/repo && git pull"
sudo -E bash -c "cd /root/optee_repo_qemu_v8 && repo sync -j 10"
sudo mv /root/optee_repo_qemu_v8/optee_os /root/optee_repo_qemu_v8/optee_os_old
sudo ln -s ${WD} /root/optee_repo_qemu_v8/optee_os
sudo -E bash -c "make -C /root/optee_repo_qemu_v8/build -j$(getconf _NPROCESSORS_ONLN) CFG_TEE_CORE_LOG_LEVEL=0 OPTEE_RUST_ENABLE=y check-rust"