# Based on the "trust" template v0.1.2 # https://github.com/japaric/trust/tree/v0.1.2 dist: trusty language: rust rust: - stable - beta - nightly sudo: required # TODO Rust builds on stable by default, this can be # overridden on a case by case basis down below. matrix: allow_failures: # - nightly # TODO These are all the build jobs. Adjust as necessary. Comment out what you # don't need include: # Android #- env: TARGET=aarch64-linux-android DISABLE_TESTS=1 #- env: TARGET=arm-linux-androideabi DISABLE_TESTS=1 #- env: TARGET=armv7-linux-androideabi DISABLE_TESTS=1 #- env: TARGET=i686-linux-android DISABLE_TESTS=1 #- env: TARGET=x86_64-linux-android DISABLE_TESTS=1 # iOS #- env: TARGET=aarch64-apple-ios DISABLE_TESTS=1 # os: osx #- env: TARGET=armv7-apple-ios DISABLE_TESTS=1 # os: osx #- env: TARGET=armv7s-apple-ios DISABLE_TESTS=1 # os: osx #- env: TARGET=i386-apple-ios DISABLE_TESTS=1 # os: osx #- env: TARGET=x86_64-apple-ios DISABLE_TESTS=1 # os: osx # Linux #- env: TARGET=aarch64-unknown-linux-gnu # Raspberry Pi - env: TARGET=arm-unknown-linux-gnueabi DISABLE_EXAMPLES=1 # Raspberry Pi 3... - env: TARGET=armv7-unknown-linux-gnueabihf DISABLE_EXAMPLES=1 #- env: TARGET=i686-unknown-linux-gnu #- env: TARGET=i686-unknown-linux-musl #- env: TARGET=mips-unknown-linux-gnu #- env: TARGET=mips64-unknown-linux-gnuabi64 #- env: TARGET=mips64el-unknown-linux-gnuabi64 #- env: TARGET=mipsel-unknown-linux-gnu #- env: TARGET=powerpc-unknown-linux-gnu #- env: TARGET=powerpc64-unknown-linux-gnu #- env: TARGET=powerpc64le-unknown-linux-gnu #- env: TARGET=s390x-unknown-linux-gnu DISABLE_TESTS=1 - env: TARGET=x86_64-unknown-linux-gnu - env: TARGET=x86_64-unknown-linux-musl # OSX #- env: TARGET=i686-apple-darwin # os: osx #- env: TARGET=x86_64-apple-darwin # os: osx # *BSD #- env: TARGET=i686-unknown-freebsd DISABLE_TESTS=1 #- env: TARGET=x86_64-unknown-freebsd DISABLE_TESTS=1 #- env: TARGET=x86_64-unknown-netbsd DISABLE_TESTS=1 # Windows #- env: TARGET=x86_64-pc-windows-gnu # Bare metal # These targets don't support std and as such are likely not suitable for # most crates. - env: TARGET=thumbv6m-none-eabi - env: TARGET=thumbv7em-none-eabi - env: TARGET=thumbv7em-none-eabihf - env: TARGET=thumbv7m-none-eabi # Testing other channels #- env: TARGET=x86_64-unknown-linux-gnu # rust: nightly #- env: TARGET=x86_64-apple-darwin # os: osx # rust: nightly #- env: TEST_DIR=examples/embedded_linux #- env: TEST_DIR=examples/f3_stm32f30x addons: apt: packages: - libcurl4-openssl-dev - libelf-dev - libdw-dev - cmake - gcc - binutils-dev - libiberty-dev before_install: - set -e - rustup self update install: - cargo install cargo-travis || true - rustup override set nightly - rustup target add thumbv7m-none-eabi - rustup component add clippy-preview - rustup component add rustfmt-preview #TODO: remove -A clippy::new_ret_no_self when new version of clippy gets released! script: - cargo fmt --all -- --check - cargo clippy --all-targets --all-features -- -D warnings -A clippy::new_ret_no_self - cargo check - cargo test --all-features --release - cargo doc --all-features --release - cd examples/embedded_linux_epd4in2 && cargo fmt --all -- --check && cargo check && cd ../../ - cd examples/embedded_linux_epd1in54 && cargo fmt --all -- --check && cargo check && cd ../../ - cd examples/embedded_linux_epd2in9 && cargo fmt --all -- --check && cargo check && cd ../../ # - cd examples/stm32f3discovery && cargo check --target thumbv7m-none-eabi && cd ../../ #- cd ../f3_stm32f30x && cargo build after_success: | wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz && tar xzf master.tar.gz && cd kcov-master && mkdir build && cd build && cmake .. && make && make install DESTDIR=../../kcov-build && cd ../.. && rm -rf kcov-master && for file in target/debug/examplerust-*[^\.d]; do mkdir -p "target/cov/$(basename $file)"; ./kcov-build/usr/local/bin/kcov --exclude-pattern=/.cargo,/usr/lib --verify "target/cov/$(basename $file)" "$file"; done && bash <(curl -s https://codecov.io/bash) && echo "Uploaded code coverage" #- cargo doc-upload cache: cargo before_cache: # Travis can't cache files that are not readable by "others" - chmod -R a+r $HOME/.cargo branches: only: # release tags - /^v\d+\.\d+\.\d+.*$/ - master notifications: email: on_success: never