blob: 642443dda35a43aad2bbd6d945ddf37f214d10cf [file] [log] [blame]
Pascal Brand260fa3f2014-10-08 08:18:53 +02001# One may have a look at http://docs.travis-ci.com/user/installing-dependencies/
2
Jerome Forissier8353e242014-11-26 16:57:07 +01003language: c
4
Pascal Brand260fa3f2014-10-08 08:18:53 +02005notifications:
6 - email: true
7
Jerome Forissier8a37b102015-07-30 10:42:56 +02008sudo: false
9
Jerome Forissiere4c7a6a2016-01-25 14:50:55 +010010cache:
11 ccache: true
12 directories:
13 - $HOME/downloads
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020014
Jens Wiklander517d41f2016-02-29 15:02:13 +010015git:
16 depth: 1000000
17
Pascal Brand260fa3f2014-10-08 08:18:53 +020018before_install:
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020019 # Install the cross compilers
Joakim Bech0806ea92016-04-26 10:03:03 +020020 - wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz
21 - tar xf gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz
22 - export PATH=${PWD}/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin:${PATH}
Jerome Forissier8353e242014-11-26 16:57:07 +010023 - arm-linux-gnueabihf-gcc --version
Jerome Forissier3492bda2016-06-14 11:02:31 +020024 - wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz
Joakim Bech0806ea92016-04-26 10:03:03 +020025 - tar xf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz
26 - export PATH=${PWD}/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin:${PATH}
Jens Wiklanderc7c09e22015-04-29 09:32:34 +020027 - aarch64-linux-gnu-gcc --version
Pascal Brand260fa3f2014-10-08 08:18:53 +020028
Pascal Brand260fa3f2014-10-08 08:18:53 +020029before_script:
Pascal Brand1b10abf2014-10-20 13:24:54 +020030 # Store the home repository
31 - export MYHOME=$PWD
32
Pascal Brand7d657272014-11-03 12:49:01 +010033 # Download checkpatch.pl
34 - export DST_KERNEL=$PWD/linux && mkdir -p $DST_KERNEL/scripts && cd $DST_KERNEL/scripts
35 - wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/checkpatch.pl && chmod a+x checkpatch.pl
Pascal Brand1b10abf2014-10-20 13:24:54 +020036 - wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/spelling.txt
Jens Wiklander51ff8502016-10-19 17:50:45 +020037 - echo "invalid.struct.name" >const_structs.checkpatch
Pascal Brand1b10abf2014-10-20 13:24:54 +020038 - cd $MYHOME
39
Jerome Forissiere4c7a6a2016-01-25 14:50:55 +010040 - export DL_DIR=$HOME/downloads
41 - function _download() { url="$1"; f="${2:-$(basename $url)}"; if [ ! -e $DL_DIR/$f ] ; then mkdir -p $DL_DIR ; wget $url -O $DL_DIR/$f ; fi }
42 - function download() { _download "$1" "" ; }
43
Jerome Forissier59e43052016-02-05 14:52:00 +010044 # Travis assigns 2 CPU cores to the container-based environment, so -j3 is
45 # a good concurrency level
46 # https://docs.travis-ci.com/user/ci-environment/
47 - export make="make -j3 -s"
48
Jerome Forissierc6e09842016-08-25 13:37:45 +020049 # Download and build Git to be used by the checkpatch step
50 # The Travis container-based infrastructure runs Ubuntu 12.04 (Precise) which
51 # comes with git 1.8.5.6. The path exclusion syntax ':(exclude)' used below
52 # requires a more recent version.
53 - cd $HOME
54 - _download https://github.com/git/git/archive/v2.9.3.tar.gz git-2.9.3.tar.gz
55 - tar xf $DL_DIR/git-2.9.3.tar.gz
56 - $make -C git-2.9.3 CC="ccache gcc" NO_CURL=1
57
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020058 # Tools required for QEMU tests
59 # 'apt-get install' cannot be used in the new container-based infrastructure
60 # (which is the only allowing caching), so we just build from sources
61 # bc is used during kernel configuration
62 - cd $HOME
Jerome Forissiere4c7a6a2016-01-25 14:50:55 +010063 - download http://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz
64 - tar xf $DL_DIR/bc-1.06.tar.gz
Jerome Forissier59e43052016-02-05 14:52:00 +010065 - (cd bc-1.06 && CC="ccache gcc" ./configure --quiet && $make)
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020066 - export PATH=${HOME}/bc-1.06/bc:$PATH
67 # Tcl/Expect
Jerome Forissiere4c7a6a2016-01-25 14:50:55 +010068 - download http://prdownloads.sourceforge.net/tcl/tcl8.6.4-src.tar.gz
69 - tar xf $DL_DIR/tcl8.6.4-src.tar.gz
Jerome Forissier59e43052016-02-05 14:52:00 +010070 - (cd tcl8.6.4/unix && ./configure --quiet --prefix=${HOME}/inst CC="ccache gcc" && $make install)
Jerome Forissiere4c7a6a2016-01-25 14:50:55 +010071 - _download http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download expect5.45.tar.gz
72 - tar xf $DL_DIR/expect5.45.tar.gz
Jerome Forissier59e43052016-02-05 14:52:00 +010073 - (cd expect5.45 && ./configure --quiet --with-tcl=${HOME}/inst/lib --prefix=${HOME}/inst CC="ccache gcc" && $make expect && $make install)
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020074 - export PATH=$HOME/inst/bin:$PATH
75 # pycrypto 2.6.1 or later has Crypto.Signature, 2.4.1 does not. It is needed to sign the test TAs.
76 - pip install --upgrade --user pycrypto
Jens Wiklander875f9da2016-05-31 09:05:36 +020077 - pip install --upgrade --user wand
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020078 # Clone repositories for the QEMU test environment
79 - mkdir $HOME/bin
80 - (cd $HOME/bin && wget https://storage.googleapis.com/git-repo-downloads/repo && chmod +x repo)
81 - export PATH=$HOME/bin:$PATH
82 - mkdir $HOME/optee_repo
Jerome Forissieradedf962016-03-11 15:12:27 +070083 - (cd $HOME/optee_repo && repo init -u https://github.com/OP-TEE/manifest.git -m travis.xml </dev/null && repo sync --no-clone-bundle --no-tags --quiet -j 2)
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020084 - (cd $HOME/optee_repo/qemu && git submodule update --init dtc)
85 - (cd $HOME/optee_repo && mv optee_os optee_os_old && ln -s $MYHOME optee_os)
86 - cd $MYHOME
Jens Wiklander517d41f2016-02-29 15:02:13 +010087 - git fetch https://github.com/OP-TEE/optee_os --tags
Jerome Forissier68510792015-11-06 16:55:57 +010088 - unset CC
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +020089
Jerome Forissier0bbd70a2016-08-17 14:57:05 +020090 # checkpatch.pl will ignore the following paths
91 - CHECKPATCH_IGNORE=$(echo core/lib/lib{fdt,tomcrypt} lib/lib{png,utils,zlib})
Jerome Forissierc6e09842016-08-25 13:37:45 +020092 - _CP_EXCL=$(for p in $CHECKPATCH_IGNORE; do echo ":(exclude)$p" ; done)
Jerome Forissierab435772016-09-15 09:15:54 +020093 - function _checkpatch() { $DST_KERNEL/scripts/checkpatch.pl --quiet --ignore FILE_PATH_CHANGES --ignore GERRIT_CHANGE_ID --no-tree -; }
Jerome Forissierd8b94112016-09-14 18:38:06 +020094 - function checkpatch() { printf "Checking commit:\n "; $HOME/git-2.9.3/git show --oneline --no-patch $1; $HOME/git-2.9.3/git format-patch -1 $1 --stdout -- . $_CP_EXCL | _checkpatch; }
Jerome Forissier3891de72016-09-14 17:55:39 +020095 - function checkdiff() { echo "Checking squashed commits (diff $1...$2)"; $HOME/git-2.9.3/git diff $1...$2 -- . $_CP_EXCL | _checkpatch; }
Jerome Forissier0bbd70a2016-08-17 14:57:05 +020096
Pascal Brand260fa3f2014-10-08 08:18:53 +020097# Several compilation options are checked
98script:
Jerome Forissiere04653b2016-08-26 10:40:06 +020099 # Run checkpatch.pl on:
100 # - the tip of the branch if we're not in a pull request
101 # - each commit in the development branch that's not in the target branch otherwise
102 - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then checkpatch HEAD; else for c in $(git rev-list HEAD^1..HEAD^2); do checkpatch $c || failed=1; done; [ -z "$failed" ]; fi
Jerome Forissier3891de72016-09-14 17:55:39 +0200103 # If we have a pull request with more than 1 commit, also check the squashed commits
104 # Useful to check if fix-up commits do indeed solve previous checkpatch errors
105 - if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then if [ "$(git rev-list --count HEAD^1..HEAD^2)" -gt 1 ]; then checkdiff $(git rev-parse HEAD^1) $(git rev-parse HEAD^2); fi; fi
Pascal Brand1b10abf2014-10-20 13:24:54 +0200106
Pascal Brand260fa3f2014-10-08 08:18:53 +0200107 # Orly2
Jerome Forissierfe973982016-08-23 11:28:01 +0200108 - $make PLATFORM=stm
Jerome Forissier59e43052016-02-05 14:52:00 +0100109 - $make PLATFORM=stm PLATFORM_FLAVOR=orly2
110 - $make PLATFORM=stm-orly2 CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
Joakim Bech76859b22016-06-13 09:23:51 +0200111 - $make PLATFORM=stm-orly2 CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
Pascal Brand260fa3f2014-10-08 08:18:53 +0200112
Etienne Carriere9a649462016-10-07 15:30:44 +0200113 # b2260
114 - $make PLATFORM=stm-b2260
115 - $make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
116 - $make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
117
Pascal Brand260fa3f2014-10-08 08:18:53 +0200118 # Cannes
Jerome Forissier59e43052016-02-05 14:52:00 +0100119 - $make PLATFORM=stm-cannes
120 - $make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
Joakim Bech76859b22016-06-13 09:23:51 +0200121 - $make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
Pascal Brand260fa3f2014-10-08 08:18:53 +0200122
123 # FVP
Jerome Forissier59e43052016-02-05 14:52:00 +0100124 - $make PLATFORM=vexpress-fvp CFG_ARM32_core=y
Jens Wiklander96240b72016-07-20 10:19:58 +0200125 - $make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y
126 - $make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 CFG_TZC400=y
Jerome Forissier59e43052016-02-05 14:52:00 +0100127 - $make PLATFORM=vexpress-fvp CFG_ARM64_core=y
Jens Wiklander96240b72016-07-20 10:19:58 +0200128 - $make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y
129 - $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
Jens Wiklanderc7c09e22015-04-29 09:32:34 +0200130
131 # Juno
Jerome Forissier59e43052016-02-05 14:52:00 +0100132 - $make PLATFORM=vexpress-juno
133 - $make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
Joakim Bech76859b22016-06-13 09:23:51 +0200134 - $make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
Jerome Forissier59e43052016-02-05 14:52:00 +0100135 - $make PLATFORM=vexpress-juno CFG_ARM64_core=y
136 - $make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
Joakim Bech76859b22016-06-13 09:23:51 +0200137 - $make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
Pascal Brand260fa3f2014-10-08 08:18:53 +0200138
Jerome Forissier59e43052016-02-05 14:52:00 +0100139 # QEMU-virt (PLATFORM=vexpress-qemu_virt)
140 - $make
Etienne Carriere41912942016-08-16 16:51:20 +0200141 - $make CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
142 - $make CFG_TEE_CORE_LOG_LEVEL=3 DEBUG=1
143 - $make CFG_TEE_CORE_LOG_LEVEL=2 DEBUG=1
144 - $make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y DEBUG=1
145 - $make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=n DEBUG=0
146 - $make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=y DEBUG=1
147 - $make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n DEBUG=0
148 - $make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
Jerome Forissier820e8e42016-08-30 11:27:09 +0200149 - $make CFG_TEE_CORE_MALLOC_DEBUG=y
Jens Wiklanderf3316ee2016-08-30 14:30:26 +0200150 - $make CFG_CORE_SANITIZE_UNDEFINED=y
151 - $make CFG_CORE_SANITIZE_KADDRESS=y
Jerome Forissier59e43052016-02-05 14:52:00 +0100152 - $make CFG_CRYPTO=n
Jens Wiklander7e1a7a62016-09-21 15:25:33 +0200153 - $make CFG_CRYPTO_{AES,DES}=n
154 - $make CFG_CRYPTO_{DSA,RSA,DH}=n
155 - $make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n
156 - $make CFG_CRYPTO_{H,C,CBC_}MAC=n
157 - $make CFG_CRYPTO_{G,C}CM=n
158 - $make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512}}=n
159 - $make CFG_CRYPTO=n CFG_CRYPTO_ECC=y
Jerome Forissier59e43052016-02-05 14:52:00 +0100160 - $make CFG_WITH_PAGER=y
Jens Wiklanderaf626382016-04-07 16:03:00 +0200161 - $make CFG_WITH_PAGER=y CFG_TEE_CORE_DEBUG=y
Jens Wiklandere5287212016-04-05 16:31:07 +0200162 - $make CFG_WITH_PAGER=y CFG_WITH_LPAE=y
163 - $make CFG_WITH_LPAE=y
Jens Wiklander7e1a7a62016-09-21 15:25:33 +0200164 - $make CFG_FS_BLOCK_CACHE=y
Jerome Forissier59e43052016-02-05 14:52:00 +0100165 - $make CFG_WITH_STATS=y
166 - $make CFG_RPMB_FS=y
Jens Wiklander7e1a7a62016-09-21 15:25:33 +0200167 - $make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y
Jerome Forissierb44708c2016-04-18 09:35:34 +0200168 - $make CFG_REE_FS=n CFG_RPMB_FS=y
Jens Wiklander7e1a7a62016-09-21 15:25:33 +0200169 - $make CFG_WITH_USER_TA=n CFG_CRYPTO=n CFG_SE_API=n CFG_PCSC_PASSTHRU_READER_DRV=n
Jens Wiklandere5287212016-04-05 16:31:07 +0200170 - $make CFG_SMALL_PAGE_USER_TA=n
Jerome Forissierf246b852016-07-18 15:07:57 +0200171 - $make CFG_SQL_FS=y
Etienne Carriere41912942016-08-16 16:51:20 +0200172 - $make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_SQL_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
173 - $make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_SQL_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
yanyan-wrs6d96f202016-08-19 15:06:25 +0800174 - $make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y
sunnyd2844832015-01-13 09:42:30 +0800175
Jens Wiklander422e54f2016-01-13 14:38:09 +0100176 # QEMU-ARMv8A
177 - $make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y
Jerome Forissier194d0ae2016-09-16 10:20:28 +0200178 - $make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_RPMB_FS=y CFG_SQL_FS=y
Jens Wiklander422e54f2016-01-13 14:38:09 +0100179
sunnyd2844832015-01-13 09:42:30 +0800180 # SUNXI(Allwinner A80)
Jerome Forissier59e43052016-02-05 14:52:00 +0100181 - $make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
Joakim Bech76859b22016-06-13 09:23:51 +0200182 - $make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
Jerome Forissierd70e78c2015-04-21 15:42:36 +0200183
184 # HiKey board (HiSilicon Kirin 620)
Jerome Forissier59e43052016-02-05 14:52:00 +0100185 - $make PLATFORM=hikey
186 - $make PLATFORM=hikey CFG_ARM64_core=y
187 - $make PLATFORM=hikey CFG_ARM64_core=y CFG_TEE_TA_LOG_LEVEL=4 DEBUG=1
James Kung44bd24c2015-04-08 15:47:09 +0800188
189 # Mediatek mt8173 EVB
Jerome Forissier59e43052016-02-05 14:52:00 +0100190 - $make PLATFORM=mediatek-mt8173 CFG_ARM64_core=y
Harinarayan Bhatta9b5060c2015-09-07 13:13:32 +0530191
Peng Fan8c4a5a92015-10-16 15:17:59 +0800192 # i.MX6UL 14X14 EVK
Jerome Forissier59e43052016-02-05 14:52:00 +0100193 - $make PLATFORM=imx-mx6ulevk
Peng Fan8c4a5a92015-10-16 15:17:59 +0800194
yanyan-wrs6d96f202016-08-19 15:06:25 +0800195 # i.MX6Quad SABRE
196 - $make PLATFORM=imx-mx6qsabrelite
197 - $make PLATFORM=imx-mx6qsabresd
198
Harinarayan Bhatta9b5060c2015-09-07 13:13:32 +0530199 # Texas Instruments dra7xx
Jerome Forissier59e43052016-02-05 14:52:00 +0100200 - $make PLATFORM=ti-dra7xx
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +0200201
Aijun Sun1537d622016-06-03 21:23:31 +0800202 # Spreadtrum sc9860
203 - $make PLATFORM=sprd-sc9860
204 - $make PLATFORM=sprd-sc9860 CFG_ARM64_core=y
205
Sumit Garg85278132015-10-12 13:49:10 -0400206 # FSL ls1021a
Jerome Forissier59e43052016-02-05 14:52:00 +0100207 - $make PLATFORM=ls-ls1021atwr
208 - $make PLATFORM=ls-ls1021aqds
Sumit Garg85278132015-10-12 13:49:10 -0400209
Soren Brinkmanne719f292016-05-28 11:17:42 -0700210 # Xilinx ZynqMP
211 - $make PLATFORM=zynqmp-zcu102
212 - $make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y
213
Jerome Forissier66d2f372016-08-03 17:05:52 +0200214 # HiSilicon D02
215 - $make PLATFORM=d02
216 - $make PLATFORM=d02 CFG_ARM64_core=y
217
Volodymyr Babchukca39b112016-08-25 14:57:32 +0300218 # Renesas RCAR H3
219 - $make PLATFORM=rcar
220 - $make PLATFORM=rcar CFG_ARM64_core=y
221
Joakim Beche3bb8b42016-09-20 13:05:59 +0200222 # Raspberry Pi 3
223 - $make PLATFORM=rpi3
224 - $make PLATFORM=rpi3 CFG_ARM64_core=y
225
Jerome Forissierfcb0c8c2015-09-01 13:46:26 +0200226 # Run regression tests (xtest in QEMU)
Jerome Forissier197e8ae2016-10-17 10:06:27 +0200227 - (cd ${HOME}/optee_repo/build && $make check CROSS_COMPILE="ccache arm-linux-gnueabihf-" AARCH32_CROSS_COMPILE=arm-linux-gnueabihf- CFG_TEE_CORE_DEBUG=y DUMP_LOGS_ON_ERROR=1)