aboutsummaryrefslogtreecommitdiff
path: root/.shippable.yml
diff options
context:
space:
mode:
Diffstat (limited to '.shippable.yml')
-rw-r--r--.shippable.yml186
1 files changed, 186 insertions, 0 deletions
diff --git a/.shippable.yml b/.shippable.yml
new file mode 100644
index 00000000..15c821a8
--- /dev/null
+++ b/.shippable.yml
@@ -0,0 +1,186 @@
+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 ${SHIPPABLE_COMMIT_RANGE}); 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 </dev/null &&
+ repo sync -d --force-sync --no-clone-bundle --no-tags --quiet -j 2 &&
+ cd ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/qemu &&
+ git submodule update --init dtc &&
+ rm -rf ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/optee_os &&
+ ln -s ${SHIPPABLE_BUILD_DIR} ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/optee_os;
+ # Run xtest in QEMU
+ - >
+ 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)