diff --git a/.travis.yml b/.travis.yml index 806c11a7a5..24efbdfc93 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,13 @@ git: depth: false quiet: true +cache: + directories: + - "$HOME/.cargo" + - "$HOME/.cache/sccache" +before_cache: + - rm -rf "$HOME/.cargo/registry" + matrix: fast_finish: true include: diff --git a/ci/build-run-docker.sh b/ci/build-run-docker.sh index 259d248af6..8a22f1b31b 100644 --- a/ci/build-run-docker.sh +++ b/ci/build-run-docker.sh @@ -1,13 +1,17 @@ #!/bin/bash script_dir=$(cd "$(dirname "$0")" && pwd) -. "$script_dir/shared.sh" +root_dir="${script_dir}/.." + +. "${script_dir}/shared.sh" set -e # Disable cause it makes shared script not to work properly #set -x mkdir -p target +mkdir -p "${HOME}"/.cargo +mkdir -p "${HOME}"/.cache/sccache DOCKER="$1" TARGET="$2" @@ -15,14 +19,14 @@ SKIP_TESTS="$3" travis_fold start "fetch.image.${TARGET}" travis_time_start -travis_do_cmd sh ci/fetch-rust-docker.sh "$TARGET" +travis_do_cmd sh ci/fetch-rust-docker.sh "${TARGET}" travis_time_finish travis_fold end "fetch.image.${TARGET}" if [ -f "ci/docker/$DOCKER/Dockerfile" ]; then travis_fold start "build.Dockerfile.${DOCKER}" travis_time_start - travis_do_cmd docker build -t "$DOCKER" "ci/docker/$DOCKER/" + travis_do_cmd docker build -t "$DOCKER" "ci/docker/${DOCKER}/" travis_time_finish travis_fold end "build.Dockerfile.${DOCKER}" fi @@ -31,23 +35,28 @@ fi docker run \ --entrypoint sh \ --user "$(id -u)":"$(id -g)" \ - --volume "$(rustc --print sysroot)":/travis-rust:ro \ - --volume "$(pwd)":/src:ro \ - --volume "$(pwd)"/target:/src/target \ - --workdir /src \ - --env TARGET="$TARGET" \ - --env SKIP_TESTS="$SKIP_TESTS" \ - --env CARGO_HOME=/src/target/cargo-home \ - --env CARGO_TARGET_DIR=/src/target \ + --volume "$(rustc --print sysroot)":/rustc-sysroot:ro \ + --volume "${root_dir}":/checkout:ro \ + --volume "${root_dir}"/target:/checkout/target \ + --workdir /checkout \ + --env TARGET="${TARGET}" \ + --env SKIP_TESTS="${SKIP_TESTS}" \ + --volume "${HOME}/.cargo:/cargo" \ + --env CARGO_HOME=/cargo \ + --env CARGO_TARGET_DIR=/checkout/target \ --env LIBZ_SYS_STATIC=1 \ + --volume "${HOME}"/.cache/sccache:/sccache \ + --env SCCACHE_DIR=/sccache \ + --env RUSTC_WRAPPER=sccache \ --tty \ --init \ - "$DOCKER" \ - -c 'PATH="$PATH":/travis-rust/bin exec sh ci/run.sh' + --rm \ + "${DOCKER}" \ + -c 'PATH="${PATH}":/rustc-sysroot/bin sh ci/run.sh' # check that rustup-init was built with ssl support # see https://github.com/rust-lang/rustup.rs/issues/1051 -if ! (nm target/"$TARGET"/release/rustup-init | grep -q Curl_ssl_version); then +if ! (nm target/"${TARGET}"/release/rustup-init | grep -q Curl_ssl_version); then echo "Missing ssl support!!!!" >&2 exit 1 fi