ckb-vm 0.24.14

CKB's Virtual machine
Documentation
name: develop

on:
  pull_request:
  push:

jobs:

  linux-x86-deny:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # https://github.com/EmbarkStudios/cargo-deny-action
      - uses: EmbarkStudios/cargo-deny-action@v1
        with:
          arguments: --all-features
          command: check advisories licenses sources bans

  linux-x86-ci-generated:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run ci-generated
        run: make ci-generated

  linux-x86-ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run ci
        run: rustup component add clippy rustfmt && make ci

  linux-x86-ci-asm:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run ci-asm
        run: make ci-asm

  linux-x86-ci-asm-chaos:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run ci-asm-chaos
        run: make ci-asm-chaos

  linux-x86-test-suite:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        run: |
          sudo apt install -y git \
                              build-essential \
                              autoconf \
                              automake \
                              autotools-dev \
                              libmpc-dev \
                              libmpfr-dev \
                              libgmp-dev \
                              gawk \
                              libtool \
                              patchutils \
                              libexpat-dev \
                              zlib1g-dev
      - name: Run test suite
        run: |
          git clone https://github.com/nervosnetwork/ckb-vm-test-suite
          ln -snf .. ckb-vm-test-suite/ckb-vm
          docker run --rm -v `pwd`:/code nervos/ckb-riscv-gnu-toolchain:bionic-20210804 cp -r /riscv /code/riscv
          cd ckb-vm-test-suite
          git checkout 6082bb2710615297f3a9fec95629636e146882c8
          git submodule update --init --recursive
          RISCV=`pwd`/../riscv ./test.sh

  linux-x86-test-spawn:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run spawn tests in release
        run: cargo test test_spawn --release --features=asm -- --nocapture

  linux-arm-ci-asm:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        run: |
          sudo apt-get update -y
          sudo apt install -y build-essential \
                              autoconf \
                              automake \
                              autotools-dev \
                              libmpc-dev \
                              libmpfr-dev \
                              libgmp-dev \
                              gawk \
                              libtool \
                              patchutils \
                              libexpat-dev \
                              zlib1g-dev \
                              gcc-aarch64-linux-gnu \
                              g++-aarch64-linux-gnu \
                              qemu-user-static
          rustup target add aarch64-unknown-linux-gnu
      - name: Run ci-asm
        run: |
          export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc &&
          export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C link-args=-L -C link-args=/usr/lib/gcc-cross/aarch64-linux-gnu/11" &&
          export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64-static -L /usr/aarch64-linux-gnu" &&
          cargo test --features=asm --target aarch64-unknown-linux-gnu

  linux-arm-test-suite:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        run: |
          sudo apt update -y
          sudo apt install -y build-essential \
                              autoconf \
                              automake \
                              autotools-dev \
                              libmpc-dev \
                              libmpfr-dev \
                              libgmp-dev \
                              gawk \
                              libtool \
                              patchutils \
                              libexpat-dev \
                              zlib1g-dev
          rustup target add aarch64-unknown-linux-gnu
      - name: Build test suite
        run: |
          git clone https://github.com/nervosnetwork/ckb-vm-test-suite
          ln -snf .. ckb-vm-test-suite/ckb-vm
          docker run --rm -v `pwd`:/code nervos/ckb-riscv-gnu-toolchain:bionic-20210804 cp -r /riscv /code/riscv
          cd ckb-vm-test-suite
          git checkout 6082bb2710615297f3a9fec95629636e146882c8
          git submodule update --init --recursive
          RISCV=`pwd`/../riscv ./test.sh --build-only
          cd ..
      - name: Run test suite
        run: |
          sudo apt install -y qemu-system binfmt-support qemu-user-static
          sudo apt install -y gcc-multilib
          sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu clang
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          cd ckb-vm-test-suite
          cd binary && cargo build --release --target=aarch64-unknown-linux-gnu && cd ..
          cd ..
          docker run --rm -v `pwd`:/code -t --platform linux/arm64 arm64v8/rust bash -c "RISCV=/dummy /code/ckb-vm-test-suite/test.sh --prebuilt-prefix aarch64-unknown-linux-gnu"

  macos-x86-ci-asm:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run ci-asm
        run: make ci-asm

  windows-x86-ci-asm:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        shell: pwsh
        # https://github.com/ScoopInstaller/Install#for-admin
        run: |
          iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
          scoop install mingw
      - name: Run ci-asm
        shell: pwsh
        run: |
          make ci-asm