X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=setup-toolchain.sh;h=191ea4315a6b5a8a29e56f6440f88115c466e8b9;hb=6b3ee8f6000ea0fe88d1d19bceac9441a43d8694;hp=f8d764b613271240c35853ba9d96bf013f93a205;hpb=47563a13eba19d0fc4b56f2cd0d5645fc81e7bc3;p=rust.git diff --git a/setup-toolchain.sh b/setup-toolchain.sh index f8d764b6132..191ea4315a6 100755 --- a/setup-toolchain.sh +++ b/setup-toolchain.sh @@ -1,9 +1,36 @@ -#!/bin/bash +#!/usr/bin/env bash # Set up the appropriate rustc toolchain -cd $(dirname $0) +set -e -cargo install rustup-toolchain-install-master --debug || echo "rustup-toolchain-install-master already installed" -RUSTC_HASH=$(git ls-remote https://github.com/rust-lang/rust.git master | awk '{print $1}') -rustup-toolchain-install-master -f -n master $RUSTC_HASH +cd "$(dirname "$0")" + +RTIM_PATH=$(command -v rustup-toolchain-install-master) || INSTALLED=false +CARGO_HOME=${CARGO_HOME:-$HOME/.cargo} + +# Check if RTIM is not installed or installed in other locations not in ~/.cargo/bin +if [[ "$INSTALLED" == false || "$RTIM_PATH" == $CARGO_HOME/bin/rustup-toolchain-install-master ]]; then + cargo +nightly install rustup-toolchain-install-master +else + VERSION=$(rustup-toolchain-install-master -V | grep -o "[0-9.]*") + REMOTE=$(cargo +nightly search rustup-toolchain-install-master | grep -o "[0-9.]*") + echo "info: skipping updating rustup-toolchain-install-master at $RTIM_PATH" + echo " current version : $VERSION" + echo " remote version : $REMOTE" +fi + +RUST_COMMIT=$(git ls-remote https://github.com/rust-lang/rust master | awk '{print $1}') + +if rustc +master -Vv 2>/dev/null | grep -q "$RUST_COMMIT"; then + echo "info: master toolchain is up-to-date" + exit 0 +fi + +if [[ -n "$HOST_TOOLCHAIN" ]]; then + TOOLCHAIN=('--host' "$HOST_TOOLCHAIN") +else + TOOLCHAIN=() +fi + +rustup-toolchain-install-master -f -n master "${TOOLCHAIN[@]}" -c rustc-dev -c llvm-tools -- "$RUST_COMMIT" rustup override set master