diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..05d94de --- /dev/null +++ b/.travis.yml @@ -0,0 +1,56 @@ +language: rust + +matrix: + include: + - env: TARGET=x86_64-unknown-linux-gnu + + - env: TARGET=x86_64-unknown-linux-gnu + rust: nightly + + - env: TARGET=x86_64-unknown-linux-musl + rust: nightly + + # Raspberry Pi 1 + - env: TARGET=arm-unknown-linux-gnueabi DISABLE_EXAMPLES=1 DISABLE_TESTS=1 + rust: nightly + + # Raspberry Pi 2, 3, etc + - env: TARGET=armv7-unknown-linux-gnueabihf DISABLE_EXAMPLES=1 DISABLE_TESTS=1 + rust: nightly + + # Bare metal + - env: TARGET=thumbv6m-none-eabi + rust: beta + - env: TARGET=thumbv7em-none-eabi + rust: beta + - env: TARGET=thumbv7em-none-eabihf + rust: beta + - env: TARGET=thumbv7m-none-eabi + rust: beta + +before_install: + - set -e + - rustup self update + +install: + - bash ci/install.sh + +script: + - bash ci/script.sh + +after_script: set +e + +cache: cargo +before_cache: + # Travis can't cache files that are not readable by "others" + - chmod -R a+r $HOME/.cargo + +branches: + only: + - master + - staging + - trying + +notifications: + email: + on_success: never diff --git a/ci/install.sh b/ci/install.sh new file mode 100644 index 0000000..42c96b4 --- /dev/null +++ b/ci/install.sh @@ -0,0 +1,13 @@ +set -euxo pipefail + +main() { + rustup component add rust-src + SYSROOT=$(rustc --print sysroot) + if [[ ! "$SYSROOT" =~ "$TARGET" ]]; then + rustup target add $TARGET + else + echo "Target $TARGET is already installed" + fi +} + +main diff --git a/ci/script.sh b/ci/script.sh new file mode 100644 index 0000000..9ad8677 --- /dev/null +++ b/ci/script.sh @@ -0,0 +1,24 @@ +set -exo pipefail + +main() { + if [[ ! $TARGET =~ .*linux.* ]]; then + sed -i "s/linux-embedded-hal/#linux-embedded-hal/g" Cargo.toml + sed -i "s/embedded-hal-mock/#embedded-hal-mock/g" Cargo.toml + fi + + if [ ! -z $FEATURES ]; then + export FEATURES="--features $FEATURES" + fi + + cargo check --target $TARGET $FEATURES + cargo build --target $TARGET --release $FEATURES + if [ -z $DISABLE_EXAMPLES ] && [[ $TARGET =~ .*linux.* ]]; then + cargo build --target $TARGET $FEATURES --examples + fi + + if [ -z $DISABLE_TESTS ] && [ $TRAVIS_RUST_VERSION = nightly ] && [[ $TARGET =~ .*linux.* ]]; then + cargo test --target $TARGET $FEATURES + fi +} + +main