X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftools%2Fmiri%2Fmiri;h=38d36898768e18c12f185a9e6966dcd86b55dd7f;hb=79fe15c8b0d76268a005cd1cc3c7caa42f481bcc;hp=b09897c294cd17f3bf539b6a74420510f44e3d18;hpb=ed97f245f1a15f0ba22a622fb693ac8bdbdbed0c;p=rust.git diff --git a/src/tools/miri/miri b/src/tools/miri/miri index b09897c294c..38d36898768 100755 --- a/src/tools/miri/miri +++ b/src/tools/miri/miri @@ -48,10 +48,10 @@ Update and activate the rustup toolchain 'miri' to the commit given in the `rustup-toolchain-install-master` must be installed for this to work. Any extra flags are passed to `rustup-toolchain-install-master`. -./miri rustc-pull: -Pull and merge Miri changes from the rustc repo. The fetched commit is stored in -the `rust-version` file, so the next `./miri toolchain` will install the rustc -we just pulled. +./miri rustc-pull : +Pull and merge Miri changes from the rustc repo. Defaults to fetching the latest +rustc commit. The fetched commit is stored in the `rust-version` file, so the +next `./miri toolchain` will install the rustc that just got pulled. ./miri rustc-push : Push Miri changes back to the rustc repo. This will pull a copy of the rustc @@ -113,18 +113,17 @@ toolchain) ;; rustc-pull) cd "$MIRIDIR" - FETCH_COMMIT=$(git ls-remote https://github.com/rust-lang/rust/ HEAD | cut -f 1) - # We can't pull from a commit with josh - # (https://github.com/josh-project/josh/issues/1034), so we just hope that - # nothing gets merged into rustc *during* this pull. - git fetch http://localhost:8000/rust-lang/rust.git$JOSH_FILTER.git master - # Just verify that `master` didn't move. - if [[ $FETCH_COMMIT != $(git ls-remote https://github.com/rust-lang/rust/ HEAD | cut -f 1) ]]; then - echo "Looks like something got merged into Rust *while we were pulling*. Aborting. Please try again." + FETCH_COMMIT="$1" + if [ -z "$FETCH_COMMIT" ]; then + FETCH_COMMIT=$(git ls-remote https://github.com/rust-lang/rust/ HEAD | cut -f 1) fi - echo "$FETCH_COMMIT" > rust-version # do this *before* merging as merging will fail in case of conflicts + # Update rust-version file. As a separate commit, since making it part of + # the merge has confused the heck out of josh in the past. + echo "$FETCH_COMMIT" > rust-version + git commit rust-version -m "Preparing for merge from rustc" + # Fetch given rustc commit and note down which one that was + git fetch http://localhost:8000/rust-lang/rust.git@$FETCH_COMMIT$JOSH_FILTER.git git merge FETCH_HEAD --no-ff -m "Merge from rustc" - git commit rust-version --amend -m "Merge from rustc" exit 0 ;; rustc-push) @@ -157,16 +156,27 @@ rustc-push) fi git fetch https://github.com/rust-lang/rust $BASE git push https://github.com/$USER/rust $BASE:refs/heads/$BRANCH -f + echo # Do the actual push. cd "$MIRIDIR" echo "Pushing Miri changes..." git push http://localhost:8000/$USER/rust.git$JOSH_FILTER.git HEAD:$BRANCH - exit 0 + # Do a round-trip check to make sure the push worked as expected. + echo + git fetch http://localhost:8000/$USER/rust.git@$JOSH_FILTER.git $BRANCH &>/dev/null + if [[ $(git rev-parse HEAD) != $(git rev-parse FETCH_HEAD) ]]; then + echo "ERROR: Josh created a non-roundtrip push! Do NOT merge this into rustc!" + exit 1 + else + echo "Confirmed that the push round-trips back to Miri properly. Please create a rustc PR:" + echo " https://github.com/$USER/rust/pull/new/$BRANCH" + exit 0 + fi ;; many-seeds) - for SEED in $({ echo obase=16; seq 0 255; } | bc); do + for SEED in $(seq 0 255); do echo "Trying seed: $SEED" - MIRIFLAGS="$MIRIFLAGS -Zmiri-seed=$SEED" $@ || { echo "Failing seed: $SEED"; break; } + MIRIFLAGS="$MIRIFLAGS -Zlayout-seed=$SEED -Zmiri-seed=$SEED" $@ || { echo "Failing seed: $SEED"; break; } done exit 0 ;;