1 # One may have a look at http://docs.travis-ci.com/user/installing-dependencies/
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
30 # Store the home repository
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
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" "" ; }
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"
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.
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
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
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
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
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)
87 - git fetch https://github.com/OP-TEE/optee_os --tags
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
94 - if [ "${COVERITY_SCAN_BRANCH}" == 1 ]; then
95 echo "Skip script for Coverity";
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
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
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
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
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
133 # QEMU-virt (PLATFORM=vexpress-qemu_virt)
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
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
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
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
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
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
185 # Mediatek mt8173 EVB
186 - $make PLATFORM=mediatek-mt8173 CFG_ARM64_core=y
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
192 - $make PLATFORM=imx-mx6qsabrelite
193 - $make PLATFORM=imx-mx6qsabresd
194 - $make PLATFORM=imx-mx6dlsabresd
196 # Texas Instruments dra7xx
197 - $make PLATFORM=ti-dra7xx
200 - $make PLATFORM=sprd-sc9860
201 - $make PLATFORM=sprd-sc9860 CFG_ARM64_core=y
204 - $make PLATFORM=ls-ls1021atwr
205 - $make PLATFORM=ls-ls1021aqds
207 # Xilinx Zynq7000 ZC702
208 - $make PLATFORM=zynq7k-zc702
211 - $make PLATFORM=zynqmp-zcu102
212 - $make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y
216 - $make PLATFORM=d02 CFG_ARM64_core=y
219 - $make PLATFORM=rcar
220 - $make PLATFORM=rcar CFG_ARM64_core=y
223 - $make PLATFORM=rpi3
224 - $make PLATFORM=rpi3 CFG_ARM64_core=y
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)
231 secure: "k30FG3hL6dQywtvMeEjSM0FQ7A0r+AQriUkGSFv7bmwD3EX2H17tJsfZt/h3dj+Pj6lQPdhVg3YO6O6pksJLqBLyz86bN15JEik0e1zftZplzK00oT89eoQr+qgqyrbs6CZBRvS98EAneCNbvgJto9sIPJs0SGu0u31Pr06bTAg="
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