aboutsummaryrefslogtreecommitdiff
path: root/.travis.yml
blob: c9289b8c08c65e3734a5d086b61c71447d8a71bd (plain)
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
# 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_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"

  # 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
  # Expect
  - _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 --prefix=$HOME/inst --exec-prefix=$HOME/inst CC="ccache gcc" && make && $make install) && rm -rf expect5.45
  # Create a wrapper script, so that expect finds its shared library, without setting LD_LIBRARY_PATH globally (buildroot doesn't like it)
  - mv $HOME/inst/bin/expect $HOME/inst/bin/expect.bin && printf '#!/bin/bash\nexport LD_LIBRARY_PATH=$HOME/inst/lib/expect5.45\n$HOME/inst/bin/expect.bin $*' >$HOME/inst/bin/expect && chmod +x $HOME/inst/bin/expect
  - 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
  # 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 </dev/null && repo sync --no-clone-bundle --no-tags -j 20)
  - (cd $HOME/optee_repo && rm -rf optee_os && 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)
  - export CFG_WERROR=y
  - (cd ${HOME}/optee_repo/build && $make aarch32 && rm -f ${HOME}/optee_repo/toolchains/gcc-*.tar.xz && $make check BR2_CCACHE_DIR=~/.ccache 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