Merge pull request #4424 from RalfJung/aarch64-linux-ci
also test on arm-64 linux hosts
This commit is contained in:
commit
651d2f8f23
3 changed files with 46 additions and 22 deletions
50
src/tools/miri/.github/workflows/ci.yml
vendored
50
src/tools/miri/.github/workflows/ci.yml
vendored
|
|
@ -13,35 +13,55 @@ defaults:
|
|||
shell: bash
|
||||
|
||||
jobs:
|
||||
build:
|
||||
test:
|
||||
name: build and test on ${{ matrix.host_target }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
host_target: x86_64-unknown-linux-gnu
|
||||
- os: macos-14
|
||||
host_target: aarch64-apple-darwin
|
||||
- os: windows-latest
|
||||
host_target: i686-pc-windows-msvc
|
||||
- host_target: x86_64-unknown-linux-gnu
|
||||
os: ubuntu-latest
|
||||
# Needs a libffi patch: <https://github.com/libffi-rs/libffi-rs/pull/160>
|
||||
# - host_target: i686-unknown-linux-gnu
|
||||
# os: ubuntu-latest
|
||||
- host_target: aarch64-unknown-linux-gnu
|
||||
os: ubuntu-24.04-arm
|
||||
# Disabled due to <https://github.com/rust-lang/rust/issues/143184>.
|
||||
# - host_target: armv7-unknown-linux-gnueabihf
|
||||
# os: ubuntu-24.04-arm
|
||||
- host_target: aarch64-apple-darwin
|
||||
os: macos-latest
|
||||
- host_target: i686-pc-windows-msvc
|
||||
os: windows-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
HOST_TARGET: ${{ matrix.host_target }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install multilib dependencies
|
||||
if: ${{ matrix.host_target == 'i686-unknown-linux-gnu' }}
|
||||
run: |
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt update
|
||||
sudo apt install gcc-multilib zlib1g-dev:i386 libffi-dev:i386
|
||||
- name: Install multilib dependencies
|
||||
if: ${{ matrix.host_target == 'armv7-unknown-linux-gnueabihf' }}
|
||||
run: |
|
||||
sudo dpkg --add-architecture armhf
|
||||
sudo apt update
|
||||
sudo apt install gcc-arm-linux-gnueabihf zlib1g-dev:armhf libffi-dev:armhf
|
||||
- uses: ./.github/workflows/setup
|
||||
with:
|
||||
toolchain_flags: "--host ${{ matrix.host_target }}"
|
||||
|
||||
# The `style` job only runs on Linux; this makes sure the Windows-host-specific
|
||||
# code is also covered by clippy.
|
||||
- name: Check clippy
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
run: ./miri clippy -- -D warnings
|
||||
|
||||
- name: Test Miri
|
||||
run: ./ci/ci.sh
|
||||
|
||||
# The `style` job only runs on Linux; this makes sure the host-specific
|
||||
# code is also covered by clippy.
|
||||
- name: Check clippy
|
||||
run: ./miri clippy -- -D warnings
|
||||
|
||||
style:
|
||||
name: style checks
|
||||
runs-on: ubuntu-latest
|
||||
|
|
@ -73,7 +93,7 @@ jobs:
|
|||
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
|
||||
# And they should be added below in `cron-fail-notify` as well.
|
||||
conclusion:
|
||||
needs: [build, style, coverage]
|
||||
needs: [test, style, coverage]
|
||||
# We need to ensure this job does *not* get skipped if its dependencies fail,
|
||||
# because a skipped job is considered a success by GitHub. So we have to
|
||||
# overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
|
||||
|
|
@ -135,7 +155,7 @@ jobs:
|
|||
cron-fail-notify:
|
||||
name: cronjob failure notification
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build, style, coverage]
|
||||
needs: [test, style, coverage]
|
||||
if: ${{ github.event_name == 'schedule' && failure() }}
|
||||
steps:
|
||||
# Send a Zulip notification
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ name: "Miri CI setup"
|
|||
description: "Sets up Miri CI"
|
||||
inputs:
|
||||
toolchain_flags:
|
||||
description: extra flags to pass to rustup-toolchain-install-master
|
||||
required: false
|
||||
default: ''
|
||||
runs:
|
||||
|
|
@ -31,8 +32,9 @@ runs:
|
|||
~/.cargo/bin
|
||||
~/.cargo/.crates.toml
|
||||
~/.cargo/.crates2.json
|
||||
key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock', '.github/workflows/**/*.yml') }}
|
||||
restore-keys: cargo-${{ runner.os }}
|
||||
# Bump the version when something here changes that needs a cache reset.
|
||||
key: cargo-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }}-v1
|
||||
restore-keys: cargo-${{ runner.os }}-${{ runner.arch }}
|
||||
|
||||
- name: Install rustup-toolchain-install-master
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
|
|
|
|||
|
|
@ -143,11 +143,16 @@ case $HOST_TARGET in
|
|||
GC_STRESS=1 MIR_OPT=1 MANY_SEEDS=64 TEST_BENCH=1 CARGO_MIRI_ENV=1 run_tests
|
||||
# Extra tier 1
|
||||
MANY_SEEDS=64 TEST_TARGET=i686-unknown-linux-gnu run_tests
|
||||
MANY_SEEDS=64 TEST_TARGET=aarch64-unknown-linux-gnu run_tests
|
||||
MANY_SEEDS=64 TEST_TARGET=x86_64-apple-darwin run_tests
|
||||
MANY_SEEDS=64 TEST_TARGET=x86_64-pc-windows-gnu run_tests
|
||||
;;
|
||||
aarch64-unknown-linux-gnu)
|
||||
# Host
|
||||
GC_STRESS=1 MIR_OPT=1 MANY_SEEDS=64 TEST_BENCH=1 CARGO_MIRI_ENV=1 run_tests
|
||||
# Extra tier 1 candidate
|
||||
MANY_SEEDS=64 TEST_TARGET=aarch64-pc-windows-msvc run_tests
|
||||
# Custom target JSON file
|
||||
TEST_TARGET=tests/x86_64-unknown-kernel.json MIRI_NO_STD=1 run_tests_minimal no_std
|
||||
;;
|
||||
aarch64-apple-darwin)
|
||||
# Host
|
||||
|
|
@ -172,13 +177,10 @@ case $HOST_TARGET in
|
|||
TEST_TARGET=wasm32-wasip2 run_tests_minimal $BASIC wasm
|
||||
TEST_TARGET=wasm32-unknown-unknown run_tests_minimal no_std empty_main wasm # this target doesn't really have std
|
||||
TEST_TARGET=thumbv7em-none-eabihf run_tests_minimal no_std
|
||||
# Custom target JSON file
|
||||
TEST_TARGET=tests/x86_64-unknown-kernel.json MIRI_NO_STD=1 run_tests_minimal no_std
|
||||
;;
|
||||
i686-pc-windows-msvc)
|
||||
# Host
|
||||
# Without GC_STRESS and with reduced many-seeds count as this is the slowest runner.
|
||||
# (The macOS runner checks windows-msvc with full many-seeds count.)
|
||||
# Without GC_STRESS as this is the slowest runner.
|
||||
MIR_OPT=1 MANY_SEEDS=64 TEST_BENCH=1 run_tests
|
||||
# Extra tier 1
|
||||
# We really want to ensure a Linux target works on a Windows host,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue