1name: CI 2on: [push, pull_request] 3jobs: 4 code_style: 5 name: Code style 6 runs-on: ubuntu-latest 7 container: jforissier/optee_os_ci 8 steps: 9 - name: Checkout 10 uses: actions/checkout@v3 11 with: 12 fetch-depth: 0 # full history so checkpatch can check commit IDs in commit messages 13 - name: Update Git config 14 run: git config --global --add safe.directory ${GITHUB_WORKSPACE} 15 - name: Run checkpatch 16 shell: bash 17 run: | 18 # checkpatch task 19 set -e 20 git config --global --add safe.directory /__w/optee_os/optee_os 21 pushd . >/dev/null 22 mkdir -p /tmp/linux/scripts 23 cd /tmp/linux/scripts 24 wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/plain/scripts/checkpatch.pl 25 chmod +x checkpatch.pl 26 wget --quiet https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/plain/scripts/spelling.txt 27 echo "invalid.struct.name" >const_structs.checkpatch 28 export PATH=/tmp/linux/scripts:$PATH 29 popd >/dev/null 30 source scripts/checkpatch_inc.sh 31 function _do() { echo '>>' $*; $*; } 32 # Run checkpatch.pl: 33 # - on the tip of the branch only if we're not in a pull request 34 # - otherwise: 35 # * on each commit in the development branch that is not in the target (merge to) branch 36 # * on the global diff if the PR contains more than one commit (useful to check if fixup 37 # commits do solve previous checkpatch errors) 38 if [ "${GITHUB_EVENT_NAME}" = "push" ]; then \ 39 _do checkpatch HEAD || failed=1; \ 40 else \ 41 for c in $(git rev-list HEAD^1..HEAD^2); do \ 42 _do checkpatch $c || failed=1; \ 43 done; \ 44 if [ "$(git rev-list --count HEAD^1..HEAD^2)" -gt 1 ]; then \ 45 _do checkdiff $(git rev-parse HEAD^1) $(git rev-parse HEAD^2) || failed=1; \ 46 fi; \ 47 fi 48 [ -z "$failed" ] 49 - name: Run pycodestyle 50 run: | 51 # pycodestyle task 52 sudo -E bash -c "apt update -qq -y && apt install -qq -y pycodestyle" 53 pycodestyle scripts/*.py core/arch/arm/plat-stm32mp1/scripts/stm32image.py 54 builds: 55 name: make (multi-platform) 56 runs-on: ubuntu-latest 57 container: jforissier/optee_os_ci 58 steps: 59 - name: Restore build cache 60 uses: actions/cache@v3 61 with: 62 path: /github/home/.cache/ccache 63 key: builds-cache-${{ github.sha }} 64 restore-keys: | 65 builds-cache- 66 - name: Checkout 67 uses: actions/checkout@v3 68 - shell: bash 69 run: | 70 # build task 71 set -e -v 72 export LC_ALL=C 73 export PATH=/usr/local/bin:$PATH # clang 74 export CROSS_COMPILE32="ccache arm-linux-gnueabihf-" 75 export CROSS_COMPILE64="ccache aarch64-linux-gnu-" 76 export CFG_DEBUG_INFO=n 77 export CFG_WERROR=y 78 79 function _make() { make -j$(nproc) -s O=out $*; } 80 function download_plug_and_trust() { mkdir -p $HOME/se050 && git clone --single-branch -b v0.1.2 https://github.com/foundriesio/plug-and-trust $HOME/se050/plug-and-trust || (rm -rf $HOME/se050 ; echo Nervermind); } 81 82 ccache -s -v 83 download_plug_and_trust 84 85 _make 86 _make COMPILER=clang 87 _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 88 _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 89 _make CFG_TEE_CORE_MALLOC_DEBUG=y CFG_CORE_DEBUG_CHECK_STACKS=y 90 _make CFG_CORE_SANITIZE_KADDRESS=y 91 _make CFG_LOCKDEP=y 92 _make CFG_CRYPTO=n 93 _make CFG_CRYPTO_{AES,DES}=n 94 _make CFG_CRYPTO_{DSA,RSA,DH}=n 95 _make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n 96 _make CFG_CRYPTO_{H,C,CBC_}MAC=n 97 _make CFG_CRYPTO_{G,C}CM=n 98 _make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512,512_256}}=n 99 _make CFG_WITH_PAGER=y out/core/tee{,-pager,-pageable}.bin 100 _make CFG_WITH_PAGER=y CFG_CRYPTOLIB_NAME=mbedtls CFG_CRYPTOLIB_DIR=lib/libmbedtls 101 _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y 102 _make CFG_WITH_LPAE=y 103 _make CFG_RPMB_FS=y 104 _make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y 105 _make CFG_REE_FS=n CFG_RPMB_FS=y 106 _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 107 _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 108 _make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y 109 _make CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y 110 _make CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y 111 _make CFG_SECURE_DATA_PATH=y 112 _make CFG_REE_FS_TA_BUFFERED=y 113 _make CFG_WITH_USER_TA=n 114 _make PLATFORM=vexpress-qemu_armv8a 115 _make PLATFORM=vexpress-qemu_armv8a COMPILER=clang 116 _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 117 _make PLATFORM=vexpress-qemu_armv8a CFG_WITH_PAGER=y 118 _make PLATFORM=vexpress-qemu_armv8a CFG_FTRACE_SUPPORT=y CFG_ULIBS_MCOUNT=y CFG_ULIBS_SHARED=y 119 _make PLATFORM=vexpress-qemu_armv8a CFG_TA_GPROF_SUPPORT=y CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y 120 _make PLATFORM=vexpress-qemu_armv8a CFG_VIRTUALIZATION=y 121 _make PLATFORM=vexpress-qemu_armv8a CFG_CORE_SEL1_SPMC=y 122 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 123 _make PLATFORM=stm-b2260 124 _make PLATFORM=stm-cannes 125 _make PLATFORM=stm32mp1 126 _make PLATFORM=stm32mp1-135F_DK 127 _make PLATFORM=stm32mp1-157C_DK2 128 _make PLATFORM=vexpress-fvp 129 _make PLATFORM=vexpress-fvp CFG_ARM64_core=y 130 _make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_CORE_SEL1_SPMC=y CFG_SECURE_PARTITION=y 131 _make PLATFORM=vexpress-juno 132 _make PLATFORM=vexpress-juno CFG_ARM64_core=y 133 _make PLATFORM=hikey 134 _make PLATFORM=hikey CFG_ARM64_core=y 135 _make PLATFORM=mediatek-mt8173 136 _make PLATFORM=mediatek-mt8175 137 _make PLATFORM=mediatek-mt8183 138 _make PLATFORM=mediatek-mt8516 139 _make PLATFORM=imx-mx6ulevk 140 _make PLATFORM=imx-mx6ulevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 141 _make PLATFORM=imx-mx6ul9x9evk 142 _make PLATFORM=imx-mx6ullevk CFG_WITH_SOFTWARE_PRNG=n CFG_IMX_RNGB=y 143 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 144 _make PLATFORM=imx-mx6ulzevk 145 _make PLATFORM=imx-mx6slevk 146 _make PLATFORM=imx-mx6sllevk 147 _make PLATFORM=imx-mx6sxsabreauto 148 _make PLATFORM=imx-mx6sxsabresd 149 _make PLATFORM=imx-mx6sxsabresd CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 150 _make PLATFORM=imx-mx6solosabresd 151 _make PLATFORM=imx-mx6solosabreauto 152 _make PLATFORM=imx-mx6sxsabreauto 153 _make PLATFORM=imx-mx6qsabrelite 154 _make PLATFORM=imx-mx6qsabresd 155 _make PLATFORM=imx-mx6qsabresd CFG_RPMB_FS=y 156 _make PLATFORM=imx-mx6qsabreauto 157 _make PLATFORM=imx-mx6qsabreauto CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 158 _make PLATFORM=imx-mx6qpsabreauto 159 _make PLATFORM=imx-mx6qpsabresd 160 _make PLATFORM=imx-mx6dlsabresd 161 _make PLATFORM=imx-mx6dlsabreauto 162 _make PLATFORM=imx-mx6dapalis 163 _make PLATFORM=imx-mx6qapalis 164 _make PLATFORM=imx-mx7dsabresd 165 _make PLATFORM=imx-mx7dsabresd CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 166 _make PLATFORM=imx-mx7ulpevk 167 _make PLATFORM=imx-mx8mmevk 168 _make PLATFORM=imx-mx8mmevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 169 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 170 _make PLATFORM=imx-mx8mnevk 171 _make PLATFORM=imx-mx8mqevk 172 _make PLATFORM=imx-mx8mpevk 173 _make PLATFORM=imx-mx8qxpmek 174 _make PLATFORM=imx-mx8qmmek 175 _make PLATFORM=imx-mx8dxlevk 176 _make PLATFORM=imx-mx8ulpevk 177 _make PLATFORM=imx-mx8ulpevk CFG_NXP_CAAM=y CFG_CRYPTO_DRIVER=y 178 _make PLATFORM=imx-mx93evk 179 _make PLATFORM=k3-j721e 180 _make PLATFORM=k3-j721e CFG_ARM64_core=y 181 _make PLATFORM=k3-am65x 182 _make PLATFORM=k3-am65x CFG_ARM64_core=y 183 _make PLATFORM=k3-am64x 184 _make PLATFORM=k3-am64x CFG_ARM64_core=y 185 _make PLATFORM=k3-am62x 186 _make PLATFORM=k3-am62x CFG_ARM64_core=y 187 _make PLATFORM=ti-dra7xx out/core/tee{,-pager,-pageable}.bin 188 _make PLATFORM=ti-am57xx 189 _make PLATFORM=ti-am43xx 190 _make PLATFORM=sprd-sc9860 191 _make PLATFORM=sprd-sc9860 CFG_ARM64_core=y 192 _make PLATFORM=ls-ls1043ardb 193 _make PLATFORM=ls-ls1046ardb 194 _make PLATFORM=ls-ls1012ardb 195 _make PLATFORM=ls-ls1028ardb 196 _make PLATFORM=ls-ls1088ardb 197 _make PLATFORM=ls-ls2088ardb 198 _make PLATFORM=ls-lx2160ardb 199 _make PLATFORM=ls-lx2160aqds 200 _make PLATFORM=zynq7k-zc702 201 _make PLATFORM=zynqmp-zcu102 202 _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y 203 _make PLATFORM=d02 204 _make PLATFORM=d02 CFG_ARM64_core=y 205 _make PLATFORM=rcar 206 _make PLATFORM=rzg 207 _make PLATFORM=rzg CFG_ARM64_core=y 208 _make PLATFORM=rpi3 209 _make PLATFORM=rpi3 CFG_ARM64_core=y 210 _make PLATFORM=hikey-hikey960 211 _make PLATFORM=hikey-hikey960 COMPILER=clang 212 _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y 213 _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y COMPILER=clang 214 _make PLATFORM=hikey-hikey960 CFG_SECURE_DATA_PATH=n 215 _make PLATFORM=poplar 216 _make PLATFORM=poplar CFG_ARM64_core=y 217 _make PLATFORM=rockchip-rk322x 218 _make PLATFORM=rockchip-rk3399 219 _make PLATFORM=sam 220 _make PLATFORM=marvell-armada7k8k 221 _make PLATFORM=marvell-armada3700 222 _make PLATFORM=marvell-otx2t96 223 _make PLATFORM=marvell-otx2f95 224 _make PLATFORM=marvell-otx2t98 225 _make PLATFORM=synquacer 226 _make PLATFORM=sunxi-bpi_zero 227 _make PLATFORM=sunxi-sun50i_a64 228 _make PLATFORM=bcm-ns3 CFG_ARM64_core=y 229 _make PLATFORM=hisilicon-hi3519av100_demo 230 _make PLATFORM=amlogic 231 _make PLATFORM=rzn1 232 _make PLATFORM=versal 233 _make PLATFORM=corstone1000 234 235 QEMUv8_check: 236 name: make check (QEMUv8) 237 runs-on: ubuntu-latest 238 container: jforissier/optee_os_ci:qemuv8_check 239 steps: 240 - name: Restore build cache 241 uses: actions/cache@v3 242 with: 243 path: /github/home/.cache/ccache 244 key: qemuv8_check-cache-${{ github.sha }} 245 restore-keys: | 246 qemuv8_check-cache- 247 - name: Checkout 248 uses: actions/checkout@v3 249 - shell: bash 250 run: | 251 # make check task 252 set -e 253 export LC_ALL=C 254 WD=$(pwd) 255 sudo -E bash -c "cd /root/optee_repo_qemu_v8/.repo/repo && git pull" 256 sudo -E bash -c "cd /root/optee_repo_qemu_v8 && repo sync -j 10" 257 sudo mv /root/optee_repo_qemu_v8/optee_os /root/optee_repo_qemu_v8/optee_os_old 258 sudo ln -s ${WD} /root/optee_repo_qemu_v8/optee_os 259 260 sudo -E make -C /root/optee_repo_qemu_v8/build -j$(nproc) CFG_TEE_CORE_LOG_LEVEL=0 check 261 262 sudo -E rm -rf /root/optee_repo_qemu_v8/out-br/build/optee_test* 263 sudo -E make -C /root/optee_repo_qemu_v8/build arm-tf-clean 264 sudo -E make -C /root/optee_repo_qemu_v8/build -j$(nproc) CFG_TEE_CORE_LOG_LEVEL=0 check XEN_BOOT=y 265 266 QEMUv8_check_rust: 267 name: make check-rust (QEMUv8) 268 runs-on: ubuntu-latest 269 container: jforissier/optee_os_ci:qemuv8_check 270 steps: 271 - name: Checkout 272 uses: actions/checkout@v3 273 - shell: bash 274 run: | 275 # make check-rust task 276 set -e -v 277 export HOME=/root 278 export LC_ALL=C 279 WD=$(pwd) 280 sudo -E bash -c "cd /root/optee_repo_qemu_v8/.repo/repo && git pull" 281 sudo -E bash -c "cd /root/optee_repo_qemu_v8 && repo sync -j 10" 282 sudo mv /root/optee_repo_qemu_v8/optee_os /root/optee_repo_qemu_v8/optee_os_old 283 sudo ln -s ${WD} /root/optee_repo_qemu_v8/optee_os 284 285 sudo -E bash -c "make -C /root/optee_repo_qemu_v8/build -j$(nproc) CFG_TEE_CORE_LOG_LEVEL=0 OPTEE_RUST_ENABLE=y check-rust" 286