Simplify PR #11960
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
name: Test | |
on: | |
push: | |
pull_request: | |
branches: [main] | |
# Ensures that only the latest commit of a PR can execute the actions. | |
# Useful for cancelling job when a sequence of commits are quickly added. | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
validate-playground-config: | |
name: Validate playground config | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust stable | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
toolchain: stable | |
- name: Build calyx dev | |
run: cargo build | |
- name: Check calyx build | |
run: ./target/debug/calyx --version | |
- name: validate playground config | |
run: node web/validate-data.js | |
# Get the hash of the Dockerfile | |
hash: | |
name: Get Docker Hash | |
runs-on: ubuntu-latest | |
outputs: | |
hash: ${{ steps.hash.outputs.hash }} | |
exists: ${{ steps.exists.outputs.exists }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: calyxir/calyx | |
ref: ${{ github.sha }} | |
fetch-depth: 0 | |
- name: Get hash | |
id: hash | |
run: git log -s -n 1 --pretty=format:"%H" -- Dockerfile | echo "hash=$(cat)" >> "$GITHUB_OUTPUT" | |
- name: Check if image exists | |
id: exists | |
run: (docker buildx imagetools inspect ghcr.io/calyxir/calyx:${{ steps.hash.outputs.hash }} &> /dev/null && echo "exists=true" || echo "exists=false") >> "$GITHUB_OUTPUT" | |
# Build a docker image for this commit if needed | |
docker: | |
name: Build and push docker image | |
needs: hash | |
if: ${{ needs.hash.outputs.exists == 'false' }} | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
packages: write | |
steps: | |
- name: Login to GHCR | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Docker metadata | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: ghcr.io/calyxir/calyx | |
tags: | | |
type=raw,value=${{ needs.hash.outputs.hash }},enable=true | |
type=raw,value=latest,enable={{is_default_branch}} | |
flavor: latest=false | |
- uses: depot/setup-action@v1 | |
- uses: depot/build-push-action@v1 | |
with: | |
project: zmf9xmg5nl | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
interpreter: | |
name: Test Interpreter | |
needs: [docker, hash] | |
if: always() && !failure() && !cancelled() | |
runs-on: ubuntu-latest | |
permissions: | |
packages: read | |
container: ghcr.io/calyxir/calyx:${{ needs.hash.outputs.hash }} | |
steps: | |
- name: Copy fud configuration | |
run: | | |
mkdir -p $HOME/.config | |
cp -r /root/.config/* $HOME/.config | |
- name: Checkout commit that triggered run | |
working-directory: /home/calyx | |
run: | | |
git init | |
git remote add origin https://github.com/${{ github.repository }}.git | |
git fetch --all | |
git fetch origin $GITHUB_REF | |
git checkout -f $GITHUB_SHA | |
git clean -fd | |
- name: Build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --all --all-features --manifest-path /home/calyx/interp/Cargo.toml | |
- name: Set location of cider binary | |
run: | | |
fud c stages.interpreter.exec /home/calyx/target/debug/cider | |
- name: Runt tests | |
working-directory: /home/calyx/interp/tests | |
run: | | |
# Run the remaining tests | |
runt -x '(numeric types correctness and parsing)' -d -o fail | |
- name: Source code tests | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --manifest-path /home/calyx/interp/Cargo.toml | |
- name: Source code doc tests | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --manifest-path /home/calyx/interp/Cargo.toml --doc | |
compiler: | |
name: Test Compiler | |
needs: [docker, hash] | |
if: always() && !failure() && !cancelled() | |
runs-on: ubuntu-latest | |
permissions: | |
packages: read | |
container: ghcr.io/calyxir/calyx:${{ needs.hash.outputs.hash }} | |
steps: | |
- name: Copy fud configuration | |
run: | | |
mkdir -p $HOME/.config | |
cp -r /root/.config/* $HOME/.config | |
- name: Checkout commit that triggered run | |
working-directory: /home/calyx | |
run: | | |
git init | |
git remote add origin https://github.com/${{ github.repository }}.git | |
git fetch --all | |
git fetch origin $GITHUB_REF | |
git checkout -f $GITHUB_SHA | |
git clean -fd | |
- name: Install calyx-py, MrXL, and queues | |
working-directory: /home/calyx | |
run: | | |
cd calyx-py | |
FLIT_ROOT_INSTALL=1 flit install --symlink | |
cd - | |
cd frontends/mrxl | |
FLIT_ROOT_INSTALL=1 flit install --symlink | |
cd - | |
cd frontends/queues | |
FLIT_ROOT_INSTALL=1 flit install --symlink | |
- name: Generate queue .data and .expect files | |
working-directory: /home/calyx | |
run: ./frontends/queues/test_data_gen/gen_test_data.sh | |
- name: Build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --workspace --manifest-path /home/calyx/Cargo.toml | |
# - name: Source code doc tests | |
# uses: actions-rs/cargo@v1 | |
# with: | |
# command: test | |
# args: --manifest-path /home/calyx/calyx/Cargo.toml --doc lib | |
# Run these sequentially because they might fail intermittently | |
- name: Cocotb tests | |
working-directory: /home/calyx | |
run: | | |
runt -i 'cocotb' -d -o fail -j 1 --max-futures 1 | |
- name: Runt tests | |
working-directory: /home/calyx | |
run: | | |
runt -x 'cocotb|profiler' -d -o fail -j 1 --max-futures 5 | |
- name: Run Python Tests | |
working-directory: /home/calyx | |
run: pytest calyx-py/test/numeric_types.py | |
evaluation: | |
name: Polybench Integration | |
needs: [docker, hash] | |
if: always() && !failure() && !cancelled() | |
runs-on: ubuntu-latest | |
permissions: | |
packages: read | |
container: ghcr.io/calyxir/calyx:${{ needs.hash.outputs.hash }} | |
steps: | |
- name: Copy and clean up fud configuration | |
run: | | |
mkdir -p $HOME/.config | |
cp -r /root/.config/* $HOME/.config | |
- name: Checkout commit that triggered run | |
working-directory: /home/calyx | |
run: | | |
git init | |
git remote add origin https://github.com/${{ github.repository }}.git | |
git fetch --all | |
git fetch origin $GITHUB_REF | |
git checkout -f $GITHUB_SHA | |
git clean -fd | |
- name: Build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --manifest-path /home/calyx/Cargo.toml | |
- name: Checkout calyx-evaluation | |
working-directory: /home | |
run: | | |
git clone https://github.com/cucapra/calyx-evaluation.git calyx-evaluation | |
- name: Run benchmarks | |
working-directory: /home/calyx-evaluation/benchmarks | |
run: | | |
unset JAVA_TOOL_OPTIONS | |
# Run the main benchmarks | |
runt -i Correctness -d | |
# Run the unrolled benchmarks | |
runt -i Unrolled -d | |
# Run the interpreter benchmarks | |
# runt -i Interpreter -d |