rust/scripts/rustup.sh

62 lines
2.1 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
2020-01-15 12:42:10 -06:00
set -e
TOOLCHAIN=${TOOLCHAIN:-$(date +%Y-%m-%d)}
2020-01-15 12:42:10 -06:00
case $1 in
"prepare")
echo "=> Installing new nightly"
rustup toolchain install --profile minimal "nightly-${TOOLCHAIN}" # Sanity check to see if the nightly exists
sed -i "s/\"nightly-.*\"/\"nightly-${TOOLCHAIN}\"/" rust-toolchain
rustup component add rustfmt || true
2020-01-15 12:42:10 -06:00
echo "=> Uninstalling all old nightlies"
for nightly in $(rustup toolchain list | grep nightly | grep -v "$TOOLCHAIN" | grep -v nightly-x86_64); do
rustup toolchain uninstall "$nightly"
2020-01-15 12:42:10 -06:00
done
./clean_all.sh
./y.rs prepare
(cd download/sysroot && cargo update && cargo fetch && cp Cargo.lock ../../build_sysroot/)
2020-01-15 12:42:10 -06:00
;;
"commit")
git add rust-toolchain build_sysroot/Cargo.lock
2020-01-15 13:20:30 -06:00
git commit -m "Rustup to $(rustc -V)"
2020-01-15 12:42:10 -06:00
;;
"push")
cg_clif=$(pwd)
pushd ../rust
git pull origin master
branch=sync_cg_clif-$(date +%Y-%m-%d)
git checkout -b "$branch"
git subtree pull --prefix=compiler/rustc_codegen_cranelift/ https://github.com/bjorn3/rustc_codegen_cranelift.git master
git push -u my "$branch"
# immediately merge the merge commit into cg_clif to prevent merge conflicts when syncing
# from rust-lang/rust later
git subtree push --prefix=compiler/rustc_codegen_cranelift/ "$cg_clif" sync_from_rust
popd
git merge sync_from_rust
;;
"pull")
RUST_VERS=$(curl "https://static.rust-lang.org/dist/$TOOLCHAIN/channel-rust-nightly-git-commit-hash.txt")
echo "Pulling $RUST_VERS ($TOOLCHAIN)"
cg_clif=$(pwd)
pushd ../rust
git fetch origin master
git checkout "$RUST_VERS"
git subtree push --prefix=compiler/rustc_codegen_cranelift/ "$cg_clif" sync_from_rust
popd
git merge sync_from_rust -m "Sync from rust $RUST_VERS"
git branch -d sync_from_rust
;;
2020-01-15 12:42:10 -06:00
*)
echo "Unknown command '$1'"
echo "Usage: ./rustup.sh prepare|commit"
;;
esac