forked from OP-TEE/optee_os
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
121 lines (103 loc) · 5.52 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# One may have a look at http://docs.travis-ci.com/user/installing-dependencies/
language: c
notifications:
- email: true
sudo: false
cache:
ccache: true
directories:
- $HOME/downloads
git:
depth: 1000000
before_install:
# Install the 32-bit cross compiler. We're using an older version here (4.9)
# because some Android setups still use this version which can cause build
# errors not caught by later GCC versions, see
# https://github.com/OP-TEE/optee_os/issues/1998.
- wget http://releases.linaro.org/archive/15.02/components/toolchain/binaries/arm-linux-gnueabihf/gcc-linaro-4.9-2015.02-3-x86_64_arm-linux-gnueabihf.tar.xz
- tar xf gcc-linaro-4.9-2015.02-3-x86_64_arm-linux-gnueabihf.tar.xz
- export PATH=${PWD}/gcc-linaro-4.9-2015.02-3-x86_64_arm-linux-gnueabihf/bin:${PATH}
- arm-linux-gnueabihf-gcc --version
before_script:
# Store the home repository
- export MYHOME=$PWD
# Download checkpatch.pl
- export DST_KERNEL=$PWD/linux && mkdir -p $DST_KERNEL/scripts && cd $DST_KERNEL/scripts
- 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
- cd $MYHOME
- export DL_DIR=$HOME/downloads
- 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 }
- function download() { _download "$1" "" ; }
# Travis assigns 2 CPU cores to the container-based environment, so -j3 is
# a good concurrency level
# https://docs.travis-ci.com/user/ci-environment/
- export make="make -j3 -s"
# Download and build Git to be used by the checkpatch step
# The Travis container-based infrastructure runs Ubuntu 12.04 (Precise) which
# comes with git 1.8.5.6. The path exclusion syntax ':(exclude)' used below
# requires a more recent version.
- cd $HOME
- _download https://github.com/git/git/archive/v2.9.3.tar.gz git-2.9.3.tar.gz
- tar xf $DL_DIR/git-2.9.3.tar.gz
- $make -C git-2.9.3 CC="ccache gcc" NO_CURL=1
# Tools required for QEMU tests
# 'apt-get install' cannot be used in the new container-based infrastructure
# (which is the only allowing caching), so we just build from sources
# bc is used during kernel configuration
- cd $HOME
- download http://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz
- tar xf $DL_DIR/bc-1.06.tar.gz
- (cd bc-1.06 && CC="ccache gcc" ./configure --quiet && $make)
- export PATH=${HOME}/bc-1.06/bc:$PATH
# Tcl/Expect
- download http://prdownloads.sourceforge.net/tcl/tcl8.6.4-src.tar.gz
- tar xf $DL_DIR/tcl8.6.4-src.tar.gz
- (cd tcl8.6.4/unix && ./configure --quiet --prefix=${HOME}/inst CC="ccache gcc" && $make install)
- _download http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download expect5.45.tar.gz
- tar xf $DL_DIR/expect5.45.tar.gz
- (cd expect5.45 && ./configure --quiet --with-tcl=${HOME}/inst/lib --prefix=${HOME}/inst CC="ccache gcc" && $make expect && $make install)
- export PATH=$HOME/inst/bin:$PATH
# pycrypto 2.6.1 or later has Crypto.Signature, 2.4.1 does not. It is needed to sign the test TAs.
- pip install --upgrade --user pycrypto
- pip install --upgrade --user wand
# Clone repositories for the QEMU test environment
- mkdir -p $HOME/bin
- (cd $HOME/bin && wget https://storage.googleapis.com/git-repo-downloads/repo && chmod +x repo)
- export PATH=$HOME/bin:$PATH
- mkdir $HOME/optee_repo
- (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)
- (cd $HOME/optee_repo/qemu && git submodule update --init dtc)
- (cd $HOME/optee_repo && mv optee_os optee_os_old && ln -s $MYHOME optee_os)
- cd $MYHOME
- git fetch https://github.com/OP-TEE/optee_os --tags
- unset CC
- export PATH=$HOME/git-2.9.3/:$DST_KERNEL/scripts/:$PATH
- source ${HOME}/optee_repo/optee_os/scripts/checkpatch_inc.sh
script:
- if [ "${COVERITY_SCAN_BRANCH}" == 1 ]; then
echo "Skip script for Coverity";
travis_terminate 0;
fi
# Run checkpatch.pl 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
- 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
# 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
- 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
# Run regression tests (xtest in QEMU)
- (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)
env:
global:
secure: "k30FG3hL6dQywtvMeEjSM0FQ7A0r+AQriUkGSFv7bmwD3EX2H17tJsfZt/h3dj+Pj6lQPdhVg3YO6O6pksJLqBLyz86bN15JEik0e1zftZplzK00oT89eoQr+qgqyrbs6CZBRvS98EAneCNbvgJto9sIPJs0SGu0u31Pr06bTAg="
addons:
coverity_scan:
project:
name: "OP-TEE/optee_os"
description: "Build submitted via Travis CI"
notification_email: op-tee@linaro.org
build_command_prepend: "cov-configure --comptype gcc --compiler arm-linux-gnueabihf-gcc --template"
build_command: "make"
branch_pattern: coverity_scan