File tree 4 files changed +15
-17
lines changed
4 files changed +15
-17
lines changed Original file line number Diff line number Diff line change 54
54
# contains package information of crates installed via `cargo install`.
55
55
~/.cargo/.crates.toml
56
56
~/.cargo/.crates2.json
57
- key : ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
58
- restore-keys : ${{ runner.os }}-cargo
57
+ key : ${{ runner.os }}-cargo-reset20230315- ${{ hashFiles('**/Cargo.lock') }}
58
+ restore-keys : ${{ runner.os }}-cargo-reset20230315
59
59
60
60
- name : Install rustup-toolchain-install-master
61
61
if : ${{ steps.cache.outputs.cache-hit != 'true' }}
@@ -106,8 +106,8 @@ jobs:
106
106
# contains package information of crates installed via `cargo install`.
107
107
~/.cargo/.crates.toml
108
108
~/.cargo/.crates2.json
109
- key : ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
110
- restore-keys : ${{ runner.os }}-cargo
109
+ key : ${{ runner.os }}-cargo-reset20230315- ${{ hashFiles('**/Cargo.lock') }}
110
+ restore-keys : ${{ runner.os }}-cargo-reset20230315
111
111
112
112
- name : Install rustup-toolchain-install-master
113
113
if : ${{ steps.cache.outputs.cache-hit != 'true' }}
Original file line number Diff line number Diff line change @@ -129,18 +129,15 @@ development version of Miri using
129
129
./miri install
130
130
```
131
131
132
- and then you can use it as if it was installed by ` rustup ` . Make sure you use
133
- the same toolchain when calling ` cargo miri` that you used when installing Miri!
134
- Usually this means you have to write ` cargo +miri miri ... ` to select the ` miri `
135
- toolchain that was installed by ` ./miri toolchain ` .
132
+ and then you can use it as if it was installed by ` rustup ` as a component of the
133
+ ` miri ` toolchain. Note that the ` miri ` and ` cargo-miri ` executables are placed
134
+ in the ` miri ` toolchain's sysroot to prevent conflicts with other toolchains.
135
+ The Miri binaries in the ` cargo ` bin directory (usually ` ~/.cargo/bin ` ) are managed by rustup .
136
136
137
137
There's a test for the cargo wrapper in the ` test-cargo-miri ` directory; run
138
138
` ./run-test.py ` in there to execute it. Like ` ./miri test ` , this respects the
139
139
` MIRI_TEST_TARGET ` environment variable to execute the test for another target.
140
140
141
- Note that installing Miri like this will "take away" Miri management from ` rustup ` .
142
- If you want to later go back to a rustup-installed Miri, run ` rustup update ` .
143
-
144
141
### Using a modified standard library
145
142
146
143
Miri re-builds the standard library into a custom sysroot, so it is fairly easy
Original file line number Diff line number Diff line change @@ -62,8 +62,8 @@ function run_tests {
62
62
if [ " $HOST_TARGET " = x86_64-unknown-linux-gnu ]; then
63
63
# These act up on Windows (`which miri` produces a filename that does not exist?!?),
64
64
# so let's do this only on Linux. Also makes sure things work without these set.
65
- export RUSTC=$( which rustc)
66
- export MIRI=$( which miri)
65
+ export RUSTC=$( which rustc) # Produces a warning unless we also set MIRI
66
+ export MIRI=$( rustc + miri --print sysroot ) /bin/miri
67
67
fi
68
68
mkdir -p .cargo
69
69
echo ' build.rustc-wrapper = "thisdoesnotexist"' > .cargo/config.toml
Original file line number Diff line number Diff line change @@ -6,8 +6,8 @@ USAGE=$(cat <<"EOF"
6
6
./miri install <flags>:
7
7
Installs the miri driver and cargo-miri. <flags> are passed to `cargo
8
8
install`. Sets up the rpath such that the installed binary should work in any
9
- working directory. However, the rustup toolchain when invoking `cargo miri`
10
- needs to be the same one used for `./miri install` .
9
+ working directory. Note that the binaries are placed in the ` miri` toolchain
10
+ sysroot, to prevent conflicts with other toolchains .
11
11
12
12
./miri build <flags>:
13
13
Just build miri. <flags> are passed to `cargo build`.
@@ -281,8 +281,9 @@ find_sysroot() {
281
281
case " $COMMAND " in
282
282
install)
283
283
# "--locked" to respect the Cargo.lock file if it exists.
284
- $CARGO install $CARGO_EXTRA_FLAGS --path " $MIRIDIR " --force --locked " $@ "
285
- $CARGO install $CARGO_EXTRA_FLAGS --path " $MIRIDIR " /cargo-miri --force --locked " $@ "
284
+ # Install binaries to the miri toolchain's sysroot so they do not interact with other toolchains.
285
+ $CARGO install $CARGO_EXTRA_FLAGS --path " $MIRIDIR " --force --locked --root " $SYSROOT " " $@ "
286
+ $CARGO install $CARGO_EXTRA_FLAGS --path " $MIRIDIR " /cargo-miri --force --locked --root " $SYSROOT " " $@ "
286
287
;;
287
288
check)
288
289
# Check, and let caller control flags.
You can’t perform that action at this time.
0 commit comments