Change:
We currently run Miri on tests a few select targets: However, that's not all tier 1 targets, so e.g. x8664-apple-darwin is not covered, and today's nightly contains a Miri where some APIs are broken on x8664-apple-darwin. It'd be great if we could run (some) Miri tests on all tier 1 targets. Note that Miri tests can be run on any host so this does not require running on more hosts. However we'd probably not want to test all targets on all hosts, so we need some way in to determine which host we are on, and spread the test jobs across the hosts. Also, depending on how tight our time budget is here, we might want to not run all tests -- just running the "pass" tests should generally be sufficient and can save a bunch of time. Cc -- in particular, (a) how can I check for the host in , and (b) how tight is our time budget for the "tools" builders?

Discussion:
- name: x86_64-msvc-ext env: SCRIPT: python x.py --stage 2 test src/tools/cargotest src/tools/cargo && src/ci/docker/host-x86_64/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstate/toolstates.json windows <ins> HOST_TARGET: x86_64-pc-windows-msvc </ins> RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-lld --save-toolstates=/tmp/toolstate/toolstates.json" DEPLOY_TOOLSTATES_JSON: toolstates-windows.json os: windows-2019-8core-32gb

--build=x86_64-unknown-linux-gnu  --save-toolstates=/tmp/toolstate/toolstates.json <ins> ENV HOST_TARGET x86_64-unknown-linux-gnu </ins> ENV SCRIPT /tmp/checktools.sh ../x.py &&  NODE_PATH=`npm root -g` python3 ../x.py test tests/rustdoc-gui --stage 2  --test-args "'--no-sandbox --jobs 1'"

#!/bin/sh <ins> # ignore-tidy-linelength </ins> set -eu

python3 "$X_PY" test --stage 2 src/tools/rustfmt python3 "$X_PY" test --stage 2 src/tools/miri # We natively run this script on x86_64-unknown-linux-gnu and x86_64-pc-windows-msvc. <del> # Also cover some other targets (on both of these hosts) via cross-testing. </del> <ins> # Also cover some other targets via cross-testing, in particular all tier 1 targets. </ins> export BOOTSTRAP_SKIP_TARGET_SANITY=1 # we don't need `cc` for these targets <del> python3 "$X_PY" test --stage 2 src/tools/miri --target i686-pc-windows-msvc python3 "$X_PY" test --stage 2 src/tools/miri --target aarch64-apple-darwin </del> <ins> case $HOST_TARGET in x86_64-unknown-linux-gnu) # Only this branch runs in PR CI. # Fully test all main OSes, including a 32bit target. python3 "$X_PY" test --stage 2 src/tools/miri --target x86_64-apple-darwin python3 "$X_PY" test --stage 2 src/tools/miri --target i686-pc-windows-msvc # Only run "pass" tests for the remaining targets, which is quite a bit faster. python3 "$X_PY" test --stage 2 src/tools/miri --target x86_64-pc-windows-gnu --test-args pass python3 "$X_PY" test --stage 2 src/tools/miri --target i686-unknown-linux-gnu --test-args pass python3 "$X_PY" test --stage 2 src/tools/miri --target aarch64-unknown-linux-gnu --test-args pass python3 "$X_PY" test --stage 2 src/tools/miri --target s390x-unknown-linux-gnu --test-args pass ;; x86_64-pc-windows-msvc) # Strangely, Linux targets do not work here. cargo always says # "error: cannot produce cdylib for ... as the target ... does not support these crate types". # Only run "pass" tests, which is quite a bit faster. python3 "$X_PY" test --stage 2 src/tools/miri --target aarch64-apple-darwin --test-args pass python3 "$X_PY" test --stage 2 src/tools/miri --target i686-pc-windows-gnu --test-args pass ;; *) echo "FATAL: unexpected host $HOST_TARGET" exit 1 ;; esac </ins> unset BOOTSTRAP_SKIP_TARGET_SANITY

- name: x86_64-msvc-ext env: SCRIPT: python x.py --stage 2 test src/tools/cargotest src/tools/cargo && src/ci/docker/host-x86_64/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstate/toolstates.json windows <ins> HOST_TARGET: x86_64-pc-windows-msvc </ins> RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-lld --save-toolstates=/tmp/toolstate/toolstates.json DEPLOY_TOOLSTATES_JSON: toolstates-windows.json <<: *job-windows-8c