summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: e08e05e4f69a40fdc5c037d514813e51423aa70e (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
95
96
97
98
99
100
101
102
#
# Operating Environment
#
language: rust
sudo: false
dist: trusty
services:
  - docker
addons:
  apt:
    packages:
      - gcc-multilib
      - libcurl4-openssl-dev
      - libelf-dev
      - libdw-dev
      - binutils-dev

rust:
  - 1.7.0  # Oldest supported version
  - stable
  - beta
  - nightly

#
# Environment Variables and Build Matrix
#
env:
  global:
    - PATH=$HOME/.local/bin:$PATH
    - TRAVIS_CARGO_NIGHTLY_FEATURE=""
  matrix:
    - ARCH=x86_64
    - ARCH=i686

os:  # OSX included in build matrix explicitly
  - linux

# Failures on nightly shouldn't fail the overall build.
matrix:
  fast_finish: true
  include:
    # 32-bit and 64-bit OSX builds on oldest/stable
    - os: osx
      env: ARCH=x86_64
      rust: stable
    - os: osx
      env: ARCH=i686
      rust: stable
    # Docker builds for other targets
    - os: linux
      env: TARGET=aarch64-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:arm
      rust: 1.7.0
      sudo: true
    - os: linux
      env: TARGET=arm-unknown-linux-gnueabihf DOCKER_IMAGE=posborne/rust-cross:arm
      rust: 1.7.0
      sudo: true
    - os: linux
      env: TARGET=mips-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
      rust: 1.7.0
      sudo: true
    - os: linux
      env: TARGET=mipsel-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
      rust: 1.7.0
      sudo: true
    - os: linux
      env: TARGET=arm-linux-androideabi DOCKER_IMAGE=posborne/rust-cross:android
      rust: 1.7.0
      sudo: true
  allow_failures:
    - rust: nightly
    # We need to upgrade the lowest supported version. However, the build
    # infrastructure for arm/mips/android is not ready yet.
    - rust: 1.7.0
    - env: TARGET=mips-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
    - env: TARGET=mipsel-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
    - env: TARGET=arm-linux-androideabi DOCKER_IMAGE=posborne/rust-cross:android


#
# Build/Test/Deploy Steps
#
before_script:
  - pip install 'travis-cargo<0.2' --user

script:
  - bash ci/run-travis.sh
  - |
    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
        travis-cargo --only stable doc
    fi

after_success:
  - |
    if [ "$TRAVIS_OS_NAME" = "linux" ] && \
       [ "$TRAVIS_RUST_VERSION" = "stable" ] && \
       [ "$ARCH" = "x86_64" ]; then
        # Upload docs for stable (on master) to gh-pages
        travis-cargo --only stable doc-upload
        # Measure code coverage using kcov and upload to coveralls.io
        travis-cargo coveralls --no-sudo --verify
    fi