Update from upstream to 2.4.0 version
[platform/core/security/tef-optee_os.git] / .travis.yml
1 # One may have a look at http://docs.travis-ci.com/user/installing-dependencies/
2
3 language: c
4
5 notifications:
6   - email: true
7
8 sudo: false
9
10 cache:
11   ccache: true
12   directories:
13     - $HOME/downloads
14
15 git:
16   depth: 1000000
17
18 before_install:
19   # Install the cross compilers
20   - 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}
23   - arm-linux-gnueabihf-gcc --version
24   - 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
25   - 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}
27   - aarch64-linux-gnu-gcc --version
28
29 before_script:
30   # Store the home repository
31   - export MYHOME=$PWD
32
33   # 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
36   - wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/spelling.txt
37   - echo "invalid.struct.name" >const_structs.checkpatch
38   - cd $MYHOME
39
40   - 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
44   # 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
49   # 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
58   # 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
63   - download http://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz
64   - tar xf $DL_DIR/bc-1.06.tar.gz
65   - (cd bc-1.06 && CC="ccache gcc" ./configure --quiet && $make)
66   - export PATH=${HOME}/bc-1.06/bc:$PATH
67   # Tcl/Expect
68   - download http://prdownloads.sourceforge.net/tcl/tcl8.6.4-src.tar.gz
69   - tar xf $DL_DIR/tcl8.6.4-src.tar.gz
70   - (cd tcl8.6.4/unix && ./configure --quiet --prefix=${HOME}/inst CC="ccache gcc" && $make install)
71   - _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
73   - (cd expect5.45 && ./configure --quiet --with-tcl=${HOME}/inst/lib --prefix=${HOME}/inst CC="ccache gcc" && $make expect && $make install)
74   - 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
77   - pip install --upgrade --user wand
78   # 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
83   - (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)
84   - (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
87   - git fetch https://github.com/OP-TEE/optee_os --tags
88   - unset CC
89
90   - export PATH=$HOME/git-2.9.3/:$DST_KERNEL/scripts/:$PATH
91   - source ${HOME}/optee_repo/optee_os/scripts/checkpatch_inc.sh
92 # Several compilation options are checked
93 script:
94   - if [ "${COVERITY_SCAN_BRANCH}" == 1 ]; then
95       echo "Skip script for Coverity";
96       travis_terminate 0;
97     fi
98
99   # 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
103   # 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
106
107   # b2260
108   - $make PLATFORM=stm-b2260
109   - $make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
110   - $make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
111
112   # Cannes
113   - $make PLATFORM=stm-cannes
114   - $make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
115   - $make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
116
117   # FVP
118   - $make PLATFORM=vexpress-fvp CFG_ARM32_core=y
119   - $make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y
120   - $make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 CFG_TZC400=y
121   - $make PLATFORM=vexpress-fvp CFG_ARM64_core=y
122   - $make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y
123   - $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
124
125   # Juno
126   - $make PLATFORM=vexpress-juno
127   - $make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
128   - $make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
129   - $make PLATFORM=vexpress-juno CFG_ARM64_core=y
130   - $make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
131   - $make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
132
133   # QEMU-virt (PLATFORM=vexpress-qemu_virt)
134   - $make
135   - $make CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
136   - $make CFG_TEE_CORE_LOG_LEVEL=3 DEBUG=1
137   - $make CFG_TEE_CORE_LOG_LEVEL=2 DEBUG=1
138   - $make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y DEBUG=1
139   - $make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=n DEBUG=0
140   - $make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=y DEBUG=1
141   - $make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n DEBUG=0
142   - $make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
143   - $make CFG_TEE_CORE_MALLOC_DEBUG=y
144   - $make CFG_CORE_SANITIZE_UNDEFINED=y
145   - $make CFG_CORE_SANITIZE_KADDRESS=y
146   - $make CFG_CRYPTO=n
147   - $make CFG_CRYPTO_{AES,DES}=n
148   - $make CFG_CRYPTO_{DSA,RSA,DH}=n
149   - $make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n
150   - $make CFG_CRYPTO_{H,C,CBC_}MAC=n
151   - $make CFG_CRYPTO_{G,C}CM=n
152   - $make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512}}=n
153   - $make CFG_CRYPTO=n CFG_CRYPTO_ECC=y
154   - $make CFG_WITH_PAGER=y
155   - $make CFG_WITH_PAGER=y CFG_TEE_CORE_DEBUG=y
156   - $make CFG_WITH_PAGER=y CFG_WITH_LPAE=y
157   - $make CFG_WITH_LPAE=y
158   - $make CFG_WITH_STATS=y
159   - $make CFG_RPMB_FS=y
160   - $make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y
161   - $make CFG_REE_FS=n CFG_RPMB_FS=y
162   - $make CFG_WITH_USER_TA=n CFG_CRYPTO=n CFG_SE_API=n CFG_PCSC_PASSTHRU_READER_DRV=n
163   - $make CFG_SMALL_PAGE_USER_TA=n
164   - $make CFG_SQL_FS=y
165   - $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
166   - $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
167   - $make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y
168   - $make CFG_TA_GPROF_SUPPORT=y CFG_ULIBS_GPROF=y
169   - $make CFG_SECURE_DATA_PATH=y
170
171   # QEMU-ARMv8A
172   - $make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y
173   - $make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_RPMB_FS=y CFG_SQL_FS=y
174   - $make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_TA_GPROF_SUPPORT=y CFG_ULIBS_GPROF=y
175
176   # SUNXI(Allwinner A80)
177   - $make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
178   - $make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
179
180   # HiKey board (HiSilicon Kirin 620)
181   - $make PLATFORM=hikey
182   - $make PLATFORM=hikey CFG_ARM64_core=y
183   - $make PLATFORM=hikey CFG_ARM64_core=y CFG_TEE_TA_LOG_LEVEL=4 DEBUG=1
184
185   # Mediatek mt8173 EVB
186   - $make PLATFORM=mediatek-mt8173 CFG_ARM64_core=y
187
188   # i.MX6UL 14X14 EVK
189   - $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
190
191   # i.MX6Quad SABRE
192   - $make PLATFORM=imx-mx6qsabrelite
193   - $make PLATFORM=imx-mx6qsabresd
194   - $make PLATFORM=imx-mx6dlsabresd
195
196   # Texas Instruments dra7xx
197   - $make PLATFORM=ti-dra7xx
198
199   # Spreadtrum sc9860
200   - $make PLATFORM=sprd-sc9860
201   - $make PLATFORM=sprd-sc9860 CFG_ARM64_core=y
202
203   # FSL ls1021a
204   - $make PLATFORM=ls-ls1021atwr
205   - $make PLATFORM=ls-ls1021aqds
206
207   # Xilinx Zynq7000 ZC702
208   - $make PLATFORM=zynq7k-zc702
209
210   # Xilinx ZynqMP
211   - $make PLATFORM=zynqmp-zcu102
212   - $make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y
213
214   # HiSilicon D02
215   - $make PLATFORM=d02
216   - $make PLATFORM=d02 CFG_ARM64_core=y
217
218   # Renesas RCAR H3
219   - $make PLATFORM=rcar
220   - $make PLATFORM=rcar CFG_ARM64_core=y
221
222   # Raspberry Pi 3
223   - $make PLATFORM=rpi3
224   - $make PLATFORM=rpi3 CFG_ARM64_core=y
225
226   # Run regression tests (xtest in QEMU)
227   - (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)
228
229 env:
230   global:
231     secure: "k30FG3hL6dQywtvMeEjSM0FQ7A0r+AQriUkGSFv7bmwD3EX2H17tJsfZt/h3dj+Pj6lQPdhVg3YO6O6pksJLqBLyz86bN15JEik0e1zftZplzK00oT89eoQr+qgqyrbs6CZBRvS98EAneCNbvgJto9sIPJs0SGu0u31Pr06bTAg="
232
233 addons:
234   coverity_scan:
235     project:
236       name: "OP-TEE/optee_os"
237       description: "Build submitted via Travis CI"
238     notification_email: op-tee@linaro.org
239     build_command_prepend: "cov-configure --comptype gcc --compiler arm-linux-gnueabihf-gcc --template"
240     build_command: "make"
241     branch_pattern: coverity_scan