diff --git a/.travis.yml b/.travis.yml index ec2b142dc39..037ab49de21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,8 @@ cache: cargo: true directories: - $HOME/.npm - timeout: 600 + # Set timeout to 6 minutes (double the default of 3 minutes) + timeout: 360 env: global: @@ -26,6 +27,7 @@ env: - PERCY_PROJECT=crates-io/crates.io install: + - script/cargo-clean-on-new-rustc-version.sh - cargo install --force diesel_cli --vers `cat .diesel_version` --no-default-features --features postgres && export PATH=$HOME/.cargo/bin:$PATH before_script: @@ -68,9 +70,6 @@ matrix: script: - cargo build - cargo test - # This portion of the cache is quickly invalidated anyway - before_cache: - - cargo clean notifications: email: diff --git a/script/cargo-clean-on-new-rustc-version.sh b/script/cargo-clean-on-new-rustc-version.sh new file mode 100755 index 00000000000..de692409476 --- /dev/null +++ b/script/cargo-clean-on-new-rustc-version.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +stamp_file=target/rustc_version_stamp +current_version=$(rustc --version) + +if [ -f $stamp_file ]; then + # Compare the current version against the previous version + if echo "$current_version" | cmp -s $stamp_file -; then + echo "Version of rustc hasn't changed, keeping the cache intact" + else + echo "The version of rustc has changed, running cargo clean" + cargo clean + fi +else + echo "There is no existing version stamp, keeping the cache intact" +fi + +# Save the version stamp for next time +mkdir -p target/ +echo $current_version > $stamp_file