X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=miri;h=47ff5024fc63356b44da641c12aadfe4c6855771;hb=a458cf3fe619764abd938eb6d5b27dd261bd8127;hp=2181403b7bde94745c5955323bffedfe9c4e856c;hpb=16cc5ddacbde23a71d05535f6b51298d295535df;p=rust.git diff --git a/miri b/miri index 2181403b7bd..47ff5024fc6 100755 --- a/miri +++ b/miri @@ -11,6 +11,9 @@ working directory. ./miri build : Just build miri. are passed to `cargo build`. +./miri check : +Just check miri. are passed to `cargo check`. + ./miri test : Build miri, set up a sysroot and then run the test suite. are passed to the final `cargo test` invocation. @@ -45,7 +48,7 @@ fi # We set the rpath so that Miri finds the private rustc libraries it needs. # We enable debug-assertions to get tracing. # We enable line-only debuginfo for backtraces. -export RUSTFLAGS="-C link-args=-Wl,-rpath,$LIBDIR -C debug-assertions -C debuginfo=1" +export RUSTFLAGS="-C link-args=-Wl,-rpath,$LIBDIR -C debug-assertions -C debuginfo=1 $RUSTC_EXTRA_FLAGS" ## Helper functions @@ -54,34 +57,21 @@ build_sysroot() { # Build once, for the user to see. cargo run $CARGO_BUILD_FLAGS --bin cargo-miri -- miri setup "$@" # Call again, to just set env var. - eval $(cargo run $CARGO_BUILD_FLAGS -q --bin cargo-miri -- miri setup --env "$@") - export MIRI_SYSROOT + export MIRI_SYSROOT="$(cargo run $CARGO_BUILD_FLAGS -q --bin cargo-miri -- miri setup --print-sysroot "$@")" } # Prepare and set MIRI_SYSROOT. Respects `MIRI_TEST_TARGET` and takes into account # locally built vs. distributed rustc. find_sysroot() { - # Get ourselves a sysroot if [ -n "$MIRI_SYSROOT" ]; then # Sysroot already set, use that. - true - elif echo "$SYSROOT" | egrep -q 'build/[^/]+/stage'; then - # A local rustc build. - if [ -n "$MIRI_TEST_TARGET" ]; then - # Foreign targets still need a build. Use the rustc sources. - export XARGO_RUST_SRC="$SYSROOT/../../../src" - build_sysroot --target "$MIRI_TEST_TARGET" - else - # Assume we have a proper host libstd in $SYSROOT. - true - fi + return 0 + fi + # We need to build a sysroot. + if [ -n "$MIRI_TEST_TARGET" ]; then + build_sysroot --target "$MIRI_TEST_TARGET" else - # A normal toolchain. We have to build a sysroot either way. - if [ -n "$MIRI_TEST_TARGET" ]; then - build_sysroot --target "$MIRI_TEST_TARGET" - else - build_sysroot - fi + build_sysroot fi } @@ -89,7 +79,7 @@ find_sysroot() { # Determine command. COMMAND="$1" -shift +[ $# -gt 0 ] && shift # Determine flags passed to all cargo invocations. # This is a bit more annoying that one would hope due to @@ -112,6 +102,10 @@ install|install-debug) # "--offline" to avoid querying the registry (for yanked packages). exec cargo install $CARGO_INSTALL_FLAGS --path "$(dirname "$0")" --force --locked --offline "$@" ;; +check|check-debug) + # Check, and let caller control flags. + exec cargo check $CARGO_BUILD_FLAGS "$@" + ;; build|build-debug) # Build, and let caller control flags. exec cargo build $CARGO_BUILD_FLAGS "$@" @@ -140,7 +134,7 @@ run|run-debug) cargo build $CARGO_BUILD_FLAGS find_sysroot # Then run the actual command. - exec cargo run $CARGO_BUILD_FLAGS "$@" + exec cargo run $CARGO_BUILD_FLAGS -- --sysroot "$MIRI_SYSROOT" "$@" ;; *) echo "Unknown command: $COMMAND"