Add support for GHC 9.2 and 9.4 #168
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: 2022 Google LLC | |
# | |
# SPDX-License-Identifier: Apache-2.0 | |
name: CI | |
on: [push] | |
# Updating Rust versions: | |
# | |
# When updating to a newer (or older) version of Rust for the main build process | |
# then the version should be updated in the /rust-toolchain.toml file too. | |
# That file determines which version gets used locally on developer machines. | |
jobs: | |
license-check: | |
runs-on: ubuntu-22.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: REUSE Compliance Check | |
uses: fsfe/reuse-action@v2 | |
rust-checks: | |
name: Rust checks | |
runs-on: ubuntu-22.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
apt-get update | |
apt-get install -y curl build-essential | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.67 # See Note [Updating Rust versions] | |
profile: minimal | |
target: riscv32imc-unknown-none-elf | |
components: clippy, rustfmt | |
- name: Rust formatting | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --target riscv32imc-unknown-none-elf --all-features | |
rust-build-programs: | |
name: Build Programs | |
runs-on: ubuntu-22.04 | |
container: | |
image: ubuntu:22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
apt-get update | |
apt-get install -y curl build-essential | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.67.1 # See Note [Updating Rust versions] | |
profile: minimal | |
target: riscv32imc-unknown-none-elf | |
components: clippy, rustfmt | |
- name: Caching | |
uses: Swatinem/rust-cache@v2 | |
- name: Build release binaries | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --release | |
- name: Build debug binaries | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
- name: Archive Integration Test Binaries | |
run: | | |
cd clash-vexriscv-sim; sh bundle_test_binaries.sh | |
- name: Upload Integration Test Binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vexriscv-test-binaries | |
path: clash-vexriscv-sim/vexriscv-test-binaries.tar | |
vex-riscv: | |
name: VexRiscv integration | |
runs-on: ubuntu-22.04 | |
needs: [rust-build-programs] | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: | |
- "9.0.2" | |
- "9.2.8" | |
- "9.4.8" | |
container: | |
image: ghcr.io/clash-lang/clash-ci:${{ matrix.ghc }}-20240221 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Update Cabal index info | |
run: | | |
cp .github/cabal.project cabal.project.local | |
cabal update | |
cabal freeze | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cabal/store | |
key: packages-cachebust-2-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze', 'cabal.project') }} | |
restore-keys: packages-cachebust-2-${{ matrix.ghc }} | |
- name: Install build deps | |
run: | | |
apt-get update | |
apt-get install gnupg pkg-config -y | |
- name: Install Java | |
run: | | |
# install Java 8 | |
apt-get update | |
apt-get install openjdk-8-jdk -y | |
update-alternatives --config java | |
update-alternatives --config javac | |
- name: Install SBT | |
run: | | |
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | tee /etc/apt/sources.list.d/sbt.list | |
echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | tee /etc/apt/sources.list.d/sbt_old.list | |
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | apt-key add | |
apt-get update | |
apt-get install sbt -y | |
- name: Stash existing VexRiscv.v | |
run: | | |
cp clash-vexriscv/example-cpu/VexRiscv.v clash-vexriscv/example-cpu/VexRiscv.v.comitted | |
- name: Build clash-vexriscv | |
run: | | |
export PKG_CONFIG_PATH=/opt/share/pkgconfig/:${PKG_CONFIG_PATH} | |
cabal build clash-vexriscv | |
- name: Check whether committed VexRiscv.v corresponds to generated one | |
run: | | |
diff -u clash-vexriscv/example-cpu/VexRiscv.v clash-vexriscv/example-cpu/VexRiscv.v.comitted | |
- name: Build clash-vexriscv-sim | |
run: | | |
cabal build clash-vexriscv-sim | |
- name: Download VexRiscv Integration Tests | |
uses: actions/download-artifact@v3 | |
with: | |
name: vexriscv-test-binaries | |
- name: Extract VexRiscv Integration Tests | |
run: | | |
tar -x -f vexriscv-test-binaries.tar | |
- name: Run `clash-vexriscv` unittests | |
run: | | |
cabal run clash-vexriscv:unittests | |
- name: Run `clash-vexriscv-sim` unittests | |
run: | | |
cabal run clash-vexriscv-sim:unittests |