cargo 0.18.0

Cargo, a package manager for Rust.
Documentation
language: rust
rust: stable
sudo: required
dist: trusty
os: linux
services:
  - docker

git:
  depth: 1

matrix:
  include:
    # stable linux builds, tested
    - env: TARGET=x86_64-unknown-linux-gnu
           ALT=i686-unknown-linux-gnu
           IMAGE=dist
           MAKE_TARGETS="test distcheck doc install uninstall"
           ALLOW_PR=1
           NO_ADD=1
    - env: TARGET=i686-unknown-linux-gnu
           IMAGE=dist
           MAKE_TARGETS=test-unit-i686-unknown-linux-gnu
           CFG_DISABLE_CROSS_TESTS=1

    # stable osx builds, tested
    - env: TARGET=x86_64-apple-darwin
           ALT=i686-apple-darwin
           MAKE_TARGETS="test distcheck doc install uninstall"
           MACOSX_DEPLOYMENT_TARGET=10.7
           NO_ADD=1
      os: osx
    - env: TARGET=i686-apple-darwin
           MAKE_TARGETS=test-unit-i686-apple-darwin
           MACOSX_DEPLOYMENT_TARGET=10.7
           CFG_DISABLE_CROSS_TESTS=1
      os: osx

    # stable musl target, tested
    - env: TARGET=x86_64-unknown-linux-musl
           IMAGE=x86_64-musl
           CFG_DISABLE_CROSS_TESTS=1
           MAKE_TARGETS=test-unit-$TARGET

    # cross compiled targets
    - env: TARGET=arm-unknown-linux-gnueabi
           IMAGE=cross
    - env: TARGET=arm-unknown-linux-gnueabihf
           IMAGE=cross
    - env: TARGET=armv7-unknown-linux-gnueabihf
           IMAGE=cross
    - env: TARGET=aarch64-unknown-linux-gnu
           IMAGE=cross
    - env: TARGET=i686-unknown-freebsd
           IMAGE=cross
    - env: TARGET=x86_64-unknown-freebsd
           IMAGE=cross
    - env: TARGET=x86_64-unknown-netbsd
           IMAGE=cross
    - env: TARGET=mips-unknown-linux-gnu
           IMAGE=cross
    - env: TARGET=mipsel-unknown-linux-gnu
           IMAGE=cross
    - env: TARGET=mips64-unknown-linux-gnuabi64
           IMAGE=cross
      rust: beta
    - env: TARGET=mips64el-unknown-linux-gnuabi64
           IMAGE=cross
      rust: beta
    - env: TARGET=s390x-unknown-linux-gnu
           IMAGE=cross
      rust: beta
    - env: TARGET=powerpc-unknown-linux-gnu
           IMAGE=cross
      rust: beta
    - env: TARGET=powerpc64-unknown-linux-gnu
           IMAGE=cross
      rust: beta
    - env: TARGET=powerpc64le-unknown-linux-gnu
           IMAGE=cross
      rust: beta

    # beta/nightly builds
    - env: TARGET=x86_64-unknown-linux-gnu
           ALT=i686-unknown-linux-gnu
           IMAGE=dist
           MAKE_TARGETS="test distcheck doc install uninstall"
           DEPLOY=0
           NO_ADD=1
      rust: beta
    - env: TARGET=x86_64-unknown-linux-gnu
           ALT=i686-unknown-linux-gnu
           IMAGE=dist
           MAKE_TARGETS="test distcheck doc install uninstall"
           DEPLOY=0
           NO_ADD=1
      rust: nightly

  exclude:
    - rust: stable

before_script:
  - if [ -z "$NO_ADD" ]; then rustup target add $TARGET; fi
  - if [ ! -z "$ALT" ]; then rustup target add $ALT; fi
script:
  - >
      if [ "$ALLOW_PR" = "" ] && [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
          echo skipping, not a full build;
      elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
          SRC=. src/ci/run.sh $TARGET;
      else
          src/ci/docker/run.sh $IMAGE $TARGET;
      fi

after_success: |
  [ $TRAVIS_BRANCH = master ] &&
  [ $TRAVIS_PULL_REQUEST = false ] &&
  [ $(uname -s) = Linux ] &&
  pip install ghp-import --user &&
  $HOME/.local/bin/ghp-import -n target/doc &&
  git push -qf https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages 2>&1 > /dev/null

env:
  global:
    - DEPLOY=1
    - secure: "hWheSLilMM4DXChfSy2XsDlLw338X2o+fw8bE590xxU2TzngFW8GUfq7lGfZEp/l4SNNIS6ROU/igyttCZtxZMANZ4aMQZR5E8Fp4yPOyE1pZLDH/LdQVXnROsfburQJeq+GIYIbZ01Abzh5ClpgLg5KX0H627uj063zZ7Ljo/w="

notifications:
  email:
    on_success: never

before_deploy:
  - mkdir -p deploy/$TRAVIS_COMMIT
  - cp target/$TARGET/release/dist/cargo-*-$TARGET.tar.gz
    deploy/$TRAVIS_COMMIT
  - >
      if [ "$TRAVIS_OS_NAME" == "osx" ]; then
          find "deploy/$TRAVIS_COMMIT" -maxdepth 1 -type f -exec sh -c 'shasum -a 256 -b "{}" > "{}.sha256"' \;;
      else
          find "deploy/$TRAVIS_COMMIT" -maxdepth 1 -type f -exec sh -c 'sha256sum -b "{}" > "{}.sha256"' \;;
      fi

deploy:
  - provider: s3
    bucket: rust-lang-ci
    skip_cleanup: true
    local_dir: deploy
    upload_dir: cargo-builds
    acl: public_read
    region: us-east-1
    access_key_id: AKIAIWZDM2B2IJOWBGTA
    secret_access_key:
      secure: NB9b/MhIDiv8OtNiN/sHaFgA3xG2fa7MGuQQKJNj80ktvgByzDm5UPNyNeoYx9SmJ3jOWobgcPVaoUd2S+6XgO3bMBqm7sM/oMeE0KdqToh6+V2bKfyRF2U5fm697LEGepPIBYqMLDg4nr/dbknbKltzp6dAfJRyy22Nb721zPQ=
    on:
      branch: auto-cargo
      condition: $DEPLOY = 1

cache:
  directories:
    - target/openssl