@@ -170,8 +170,13 @@ jobs:
170
170
eatmydata rustup component add rustfmt
171
171
elif [ "${{ inputs.flavor }}" = "doc" ]; then
172
172
/bin/true
173
- elif [ "${{ inputs.flavor }}" = "dev" ] || [ "${{ inputs.flavor }}" = "release" ]; then
173
+ elif [ "${{ inputs.flavor }}" = "dev" ] || [ "${{ inputs.flavor }}" = "release" ] || [ "${{ inputs.flavor }}" = "Miri" ]; then
174
+ if [ "${{ inputs.flavor }}" = "Miri" ]; then
175
+ eatmydata rustup component add miri
176
+ eatmydata rustup component add rust-src
177
+ else
174
178
eatmydata rustup component add clippy
179
+ fi
175
180
eatmydata apt install \
176
181
clang-${{ inputs.distro-LLVM }} \
177
182
lld-${{ inputs.distro-LLVM }} \
@@ -193,11 +198,10 @@ jobs:
193
198
fi
194
199
- name : Install necessary packages for cross-compilation
195
200
timeout-minutes : 1
196
- if : (inputs.flavor == 'dev' || inputs.flavor == 'release') && inputs.builder-host != inputs.builder-target
201
+ if : (inputs.flavor == 'dev' || inputs.flavor == 'release' || inputs.flavor == 'Miri' ) && inputs.builder-host != inputs.builder-target
197
202
run : |
198
203
set -xe
199
204
. "$HOME/.cargo/env"
200
-
201
205
eatmydata apt install \
202
206
gcc-${{ env.GCC_ARCH }}-linux-${{ env.ABI }} \
203
207
libc6-dev-${{ env.LIBC6_ARCH }}-cross \
@@ -216,10 +220,14 @@ jobs:
216
220
tee -a "$HOME/.cargo/config.toml" > /dev/null <<EOT
217
221
[target.${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }}]
218
222
linker = "${LINKER}"
223
+ EOT
224
+ if [ "${{ inputs.flavor }}" != "Miri" ]; then
225
+ tee -a "$HOME/.cargo/config.toml" > /dev/null <<EOT
219
226
runner = "qemu-${{ env.LIBC6_ARCH }} -L /usr/${{ env.GCC_ARCH }}-linux-${{ env.ABI }}"
220
227
EOT
228
+ fi
221
229
- name : Install necessary packages for code coverage
222
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
230
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
223
231
timeout-minutes : 2
224
232
run : |
225
233
set -xe
@@ -267,39 +275,47 @@ jobs:
267
275
overwrite : true
268
276
- name : Run cargo check
269
277
timeout-minutes : 1
270
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc'
278
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri'
271
279
run : |
272
280
set -xe
273
281
. "$HOME/.cargo/env"
274
282
cd "$SRC_DIR"
275
283
cargo check --target ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} --profile ${{ inputs.flavor }} --all-targets --all-features
276
284
- name : Run Clippy
277
285
timeout-minutes : 1
278
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc'
286
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri'
279
287
run : |
280
288
set -xe
281
289
. "$HOME/.cargo/env"
282
290
cd "$SRC_DIR"
283
291
cargo clippy --target ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} --profile ${{ inputs.flavor }} --all-targets --all-features
284
292
- name : Build
285
293
timeout-minutes : 1
286
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc'
294
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri'
287
295
run : |
288
296
set -xe
289
297
. "$HOME/.cargo/env"
290
298
cd "$SRC_DIR"
291
299
cargo build --target ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} --profile ${{ inputs.flavor }}
292
300
- name : Run tests
293
301
timeout-minutes : 1
294
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc'
302
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri'
295
303
run : |
296
304
set -xe
297
305
. "$HOME/.cargo/env"
298
306
cd "$SRC_DIR"
299
307
cargo test --target ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} --profile ${{ inputs.flavor }}
308
+ - name : Run tests under Miri (nightly toolchain only)
309
+ timeout-minutes : 60
310
+ if : inputs.rust-toolchain-name == 'nightly' && inputs.flavor == 'Miri'
311
+ run : |
312
+ set -xe
313
+ . "$HOME/.cargo/env"
314
+ cd "$SRC_DIR"
315
+ cargo miri test --target ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} --profile dev
300
316
- name : Run tests to collect code coverage
301
317
timeout-minutes : 1
302
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
318
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
303
319
env :
304
320
RUSTFLAGS : " -C instrument-coverage"
305
321
run : |
@@ -310,15 +326,15 @@ jobs:
310
326
cargo llvm-cov --no-report --target ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} --profile ${{ inputs.flavor }}
311
327
- name : Aggregate code coverage
312
328
timeout-minutes : 1
313
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
329
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
314
330
run : |
315
331
set -xe
316
332
. "$HOME/.cargo/env"
317
333
cd "$SRC_DIR"
318
334
cargo llvm-cov report --codecov --output-path $SRC_DIR/codecov.json --target ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} --profile ${{ inputs.flavor }}
319
335
- name : Upload coverage reports to Codecov
320
336
timeout-minutes : 1
321
- if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
337
+ if : inputs.flavor != 'RustFmt' && inputs.flavor != 'doc' && inputs.flavor != 'Miri' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == true)
322
338
uses : codecov/codecov-action@v5
323
339
env :
324
340
OS : ${{ inputs.os }}
0 commit comments