language: c build: cache: true cache_dir_list: - ${SHIPPABLE_BUILD_DIR}/.ccache - ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu pre_ci_boot: image_name: jforissier/optee_os_ci image_tag: latest pull: true options: "-e HOME=/root" ci: - export LC_ALL=C - export CROSS_COMPILE32="ccache arm-linux-gnueabihf-" - export CROSS_COMPILE64="ccache aarch64-linux-gnu-" - export CCACHE_DIR=${SHIPPABLE_BUILD_DIR}/.ccache - function _make() { make -j$(getconf _NPROCESSORS_ONLN) -s $* && ccache -s && ccache -z; } - ccache -z # # Checkpatch # # Download the Linux checkpatch tool - > mkdir ${SHIPPABLE_BUILD_DIR}/checkpatch && cd ${SHIPPABLE_BUILD_DIR}/checkpatch && wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/checkpatch.pl && chmod a+x checkpatch.pl && wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/spelling.txt && echo "invalid.struct.name" >const_structs.checkpatch && export PATH=${SHIPPABLE_BUILD_DIR}/checkpatch:${PATH} && source ${SHIPPABLE_BUILD_DIR}/scripts/checkpatch_inc.sh; # Run checkpatch on: # - the tip of the branch if we're not in a pull request # - each commit in the development branch that's not in the target branch otherwise # Then, if we have a pull request with more than 1 commit, also check the squashed commits # Useful to check if fix-up commits do indeed solve previous checkpatch errors. # Note: error reporting is deferred ($checkpatch_failed=1) to avoid stopping the build. - echo Checkpatch ; cd ${SHIPPABLE_BUILD_DIR} ; if [ "$IS_PULL_REQUEST" == "false" ]; then echo "Running checkpatch on branch HEAD:"; checkpatch HEAD || export checkpatch_failed=1; else echo "Running checkpatch on each patch in pull request:"; for c in $(git rev-list --reverse $(echo ${SHIPPABLE_COMMIT_RANGE} | sed 's/\.\.\./../')); do checkpatch $c || export checkpatch_failed=1; done; fi; if [ "$IS_PULL_REQUEST" == "true" ]; then if [ "$(git rev-list --count ${SHIPPABLE_COMMIT_RANGE})" -gt 1 ]; then echo "Running checkpatch on gobal diff (squashed commits):"; checkdiff $(git rev-list ${SHIPPABLE_COMMIT_RANGE} | tail -1) $(git rev-list ${SHIPPABLE_COMMIT_RANGE} | head -1) || export checkpatch_failed=1; fi; fi; # # Build tests # - _make - _make CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 - _make CFG_TEE_CORE_LOG_LEVEL=3 DEBUG=1 - _make CFG_TEE_CORE_LOG_LEVEL=2 DEBUG=1 - _make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y DEBUG=1 - _make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=n DEBUG=0 - _make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=y DEBUG=1 - _make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n DEBUG=0 - _make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 - _make CFG_TEE_CORE_MALLOC_DEBUG=y - _make CFG_CORE_SANITIZE_UNDEFINED=y - _make CFG_CORE_SANITIZE_KADDRESS=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}}=n - _make CFG_CRYPTO=n CFG_CRYPTO_ECC=y - _make CFG_WITH_PAGER=y - _make CFG_WITH_PAGER=y CFG_TEE_CORE_DEBUG=y - _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y - _make CFG_WITH_LPAE=y - _make CFG_WITH_STATS=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_USER_TA=n CFG_CRYPTO=n CFG_SE_API=n CFG_PCSC_PASSTHRU_READER_DRV=n - _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_PS2MOUSE=y CFG_PL050=y CFG_PL111=y CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y DEBUG=1 - _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_PS2MOUSE=y CFG_PL050=y CFG_PL111=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_TA_GPROF_SUPPORT=y CFG_ULIBS_GPROF=y - _make CFG_SECURE_DATA_PATH=y - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_WITH_PAGER=y - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_RPMB_FS=y - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_TA_GPROF_SUPPORT=y CFG_ULIBS_GPROF=y - _make PLATFORM=stm-b2260 - _make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 - _make PLATFORM=stm-cannes - _make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 - _make PLATFORM=vexpress-fvp CFG_ARM32_core=y - _make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y - _make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 CFG_TZC400=y - _make PLATFORM=vexpress-fvp CFG_ARM64_core=y - _make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y - _make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 CFG_TZC400=y - _make PLATFORM=vexpress-juno - _make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 - _make PLATFORM=vexpress-juno CFG_ARM64_core=y - _make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 - _make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 - _make PLATFORM=hikey - _make PLATFORM=hikey CFG_ARM64_core=y - _make PLATFORM=hikey CFG_ARM64_core=y CFG_TEE_TA_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=mediatek-mt8173 CFG_ARM64_core=y - _make PLATFORM=imx-mx6ulevk ARCH=arm CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0x80800000 CFG_DT_ADDR=0x83000000 CFG_DT=y DEBUG=y CFG_TEE_CORE_LOG_LEVEL=4 - _make PLATFORM=imx-mx6ullevk ARCH=arm CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0x80800000 CFG_DT=y DEBUG=y CFG_TEE_CORE_LOG_LEVEL=4 - _make PLATFORM=imx-mx6qsabrelite - _make PLATFORM=imx-mx6qsabresd - _make PLATFORM=imx-mx6dlsabresd - _make PLATFORM=imx-mx7dsabresd - _make PLATFORM=ti-dra7xx - _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 CFG_ARM64_core=y - _make PLATFORM=ls-ls1046ardb CFG_ARM64_core=y - _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=rcar CFG_ARM64_core=y - _make PLATFORM=rpi3 - _make PLATFORM=rpi3 CFG_ARM64_core=y - _make PLATFORM=hikey-hikey960 - _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y - _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y CFG_TEE_TA_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=rockchip-rk322x - _make PLATFORM=rockchip-rk322x CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 - _make PLATFORM=sam # # Regressions tests (QEMU) # # Download Google's repo script - > mkdir -p ${SHIPPABLE_BUILD_DIR}/bin && export PATH=${SHIPPABLE_BUILD_DIR}/bin:${PATH} && curl https://storage.googleapis.com/git-repo-downloads/repo >${SHIPPABLE_BUILD_DIR}/bin/repo && chmod +x ${SHIPPABLE_BUILD_DIR}/bin/repo; # Use repo to clone the OP-TEE CI environment for QEMU and link optee_os to the current checkout - > mkdir -p ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu && cd ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu && repo init -u https://github.com/OP-TEE/manifest.git -m travis.xml cd ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/build && unset CC && make -k clean 2>&1 >/dev/null && ccache -z && make -s -j$(getconf _NPROCESSORS_ONLN) check CROSS_COMPILE="ccache arm-linux-gnueabihf-" AARCH32_CROSS_COMPILE=arm-linux-gnueabihf- DUMP_LOGS_ON_ERROR=1 && ccache -s && make -k clean 2>&1 >/dev/null; # Make the ci step fail if we had a checkpatch error - test -z "${checkpatch_failed}" || (echo "There were checkpatch error(s), please check the 'Checkpatch' section above"; false)