Skip to content

Separate lock-free fields from Zone and make fields private #497

Separate lock-free fields from Zone and make fields private

Separate lock-free fields from Zone and make fields private #497

Workflow file for this run

# hvisor Github Actions CI
# wheatfox <wheatfox17@icloud.com>
name: CI
on:
push:
branches:
- main
- dev
pull_request:
branches:
- main
- dev
workflow_dispatch:
env:
MODE: debug
jobs:
linter:
name: linter
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-unknown-none
components: rust-src rustfmt
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y qemu-system-aarch64 qemu-system-riscv64 gdb-multiarch llvm-dev libclang-dev wget
cargo install --version 0.3.0 --locked cargo-binutils
- name: Format Check
run: make fmt-test
# this job uses `cargo test` semantics to run unit test exclusively in QEMU
unittest:
name: unittest
runs-on: ubuntu-latest
strategy:
fail-fast: false # continue to run all jobs even if some fail
matrix:
include:
# aarch64
- arch: aarch64
board: "qemu-gicv3"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "qemu-gicv2"
rustc_target: aarch64-unknown-none
- arch: riscv64
board: "qemu-plic"
rustc_target: riscv64gc-unknown-none-elf
- arch: riscv64
board: "qemu-aia"
rustc_target: riscv64gc-unknown-none-elf
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.rustc_target }}
components: rust-src
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y qemu-system-aarch64 qemu-system-riscv64 gdb-multiarch llvm-dev libclang-dev wget
cargo install --version 0.3.0 --locked cargo-binutils
- name: Set up environment variables
run: |
echo "ARCH=${{ matrix.arch }}" >> $GITHUB_ENV
echo "BOARD=${{ matrix.board }}" >> $GITHUB_ENV
- name: Unit Test
run: make test
# this job is for compilation test, it will make sure all aarch64, riscv64, loongarch64 can be compiled successfully
# there is no actual running in this job
build:
name: build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
# aarch64
- arch: aarch64
board: "qemu-gicv3"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "qemu-gicv2"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "zcu102"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "imx8mp"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "rk3568"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "rk3588"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "ok6254-c"
rustc_target: aarch64-unknown-none
- arch: aarch64
board: "phytium-pi"
rustc_target: aarch64-unknown-none
# riscv64
- arch: riscv64
board: "qemu-aia"
rustc_target: riscv64gc-unknown-none-elf
- arch: riscv64
board: "qemu-plic"
rustc_target: riscv64gc-unknown-none-elf
- arch: riscv64
board: "hifive-premier-p550"
rustc_target: riscv64gc-unknown-none-elf
- arch: riscv64
board: "megrez"
rustc_target: riscv64gc-unknown-none-elf
- arch: riscv64
board: "ur-dp1000"
rustc_target: riscv64gc-unknown-none-elf
# loongarch64
- arch: loongarch64
board: "ls3a5000"
rustc_target: loongarch64-unknown-none
- arch: loongarch64
board: "ls3a6000"
rustc_target: loongarch64-unknown-none
# # x86_64
# - arch: x86_64
# board: "qemu"
# rustc_target: x86_64-unknown-none
# - arch: x86_64
# board: "nuc14mnk"
# rustc_target: x86_64-unknown-none
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.rustc_target }}
components: rust-src
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y wget
cargo install --version 0.3.0 --locked cargo-binutils
wget -q https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/download/8.0/loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz
tar -xf loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz
echo "$GITHUB_WORKSPACE/cross-tools/bin" >> $GITHUB_PATH
- name: Set up environment variables
run: |
echo "ARCH=${{ matrix.arch }}" >> $GITHUB_ENV
echo "BOARD=${{ matrix.board }}" >> $GITHUB_ENV
- name: Build
run: make
# this job is for booting root and nonroot inside qemu for system test
systemtest:
# if: false # we need to update corresponding scripts for the new board abstraction
name: systemtest
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
# aarch64
- arch: aarch64
rustc_target: aarch64-unknown-none
board: "qemu-gicv3"
# riscv64
- arch: riscv64
rustc_target: riscv64gc-unknown-none-elf
board: "qemu-plic"
# Because other features need to be customized scripts
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.rustc_target }}
components: rust-src
- name: Setup QEMU from Source
uses: ./.github/actions/setup-qemu
with:
qemu-version: '9.0.2'
install-path: '/opt/qemu'
- name: Setup ARM aarch64-none-linux-gnu
if: matrix.arch == 'aarch64'
uses: ./.github/actions/setup-aarch64-none-linux-gnu
with:
version: '10.3-2021.07'
install-path: '/opt/aarch64-none-linux-gnu'
- name: Setup RISCV riscv64-unknown-linux-gnu
if: matrix.arch == 'riscv64'
uses: ./.github/actions/setup-riscv64-unknown-linux-gnu
with:
version: '13.2.0'
install-path: '/opt/riscv64-unknown-linux-gnu'
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y qemu-system-aarch64 qemu-system-riscv64 gdb-multiarch llvm-dev libclang-dev wget expect device-tree-compiler p7zip-full gcc-aarch64-linux-gnu gcc-riscv64-linux-gnu
cargo install --version 0.3.0 --locked cargo-binutils
- name: Set up environment variables
run: |
echo "ARCH=${{ matrix.arch }}" >> $GITHUB_ENV
echo "BOARD=${{ matrix.board }}" >> $GITHUB_ENV
- name: Run System Test
run: make stest
license-checker:
name: license-checker
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: License Check
run: |
set -x
./tools/license_checker.sh