Use clang to build llvm, pin Ubuntu version in CI #5
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
on: [push, pull_request] | |
name: CI | |
jobs: | |
lints: | |
name: Lints | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
- name: Run rustfmt | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- name: Run clippy | |
uses: actions-rs/cargo@v1 | |
continue-on-error: true # TODO: Remove once we have fixed them all | |
with: | |
command: clippy | |
check: | |
name: Checks | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
- name: Configure Environment | |
id: env | |
run: | | |
echo "CIRCT_SYS_CIRCT_DIR=$GITHUB_WORKSPACE/circt" >> $GITHUB_ENV | |
echo "::set-output name=circt-hash::$(git rev-parse @:./circt)" | |
echo "::set-output name=llvm-hash::$(cd circt && git rev-parse @:./llvm)" | |
# Fetch LLVM from the cache if possible, otherwise rebuild it. | |
- name: Fetch LLVM from cache | |
id: cache-llvm | |
uses: martijnhols/actions-cache/restore@v3 | |
with: | |
path: circt/llvm/build | |
key: ${{ runner.os }}-llvm-${{ hashFiles('.github/build-llvm.sh') }}-${{ steps.env.outputs.llvm-hash }} | |
- name: Rebuild LLVM | |
if: steps.cache-llvm.outputs.cache-hit != 'true' | |
run: .github/build-llvm.sh | |
- name: Upload LLVM to cache | |
if: steps.cache-llvm.outputs.cache-hit != 'true' | |
uses: martijnhols/actions-cache/save@v3 | |
with: | |
path: circt/llvm/build | |
key: ${{ steps.cache-llvm.outputs.primary-key }} | |
# Fetch CIRCT from the cache if possible, otherwise rebuild it. | |
- name: Fetch CIRCT from cache | |
id: cache-circt | |
uses: martijnhols/actions-cache/restore@v3 | |
with: | |
path: circt/build | |
key: ${{ runner.os }}-circt-${{ hashFiles('.github/build-circt.sh') }}-${{ steps.env.outputs.circt-hash }} | |
- name: Rebuild CIRCT | |
if: steps.cache-circt.outputs.cache-hit != 'true' | |
run: .github/build-circt.sh | |
- name: Upload CIRCT to cache | |
if: steps.cache-circt.outputs.cache-hit != 'true' | |
uses: martijnhols/actions-cache/save@v3 | |
with: | |
path: circt/build | |
key: ${{ steps.cache-circt.outputs.primary-key }} | |
# Run the quick check build. | |
- name: Run "cargo check" | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --all | |
# Run the regular build. | |
- name: Run "cargo build" | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
# Run the unit tests. | |
- name: Run "cargo test" | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --all | |
# Run the tests. | |
- name: Run lit tests | |
run: circt/llvm/build/bin/llvm-lit test -v | |
- name: Run regression tests (old) | |
run: env TERM=xterm-color test/run.sh | |
- name: Run regression tests (new) | |
run: python3 scripts/test.py --debug --verbose |