Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set up GitHub Actions to build and test P4MLIR #2

Merged
merged 3 commits into from
Oct 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: build-and-test

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

# Cancel any preceding run on the pull request.
concurrency:
group: p4mlir-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
build-and-test:
runs-on: ubuntu-20.04
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which version of Ubuntu do you want to test for? Ubuntu 22.04 or even 24.04 might be easier.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the MLIR part, yes I think these might be better. A while ago I ran into some issues building P4C from source on Ubuntu > 20.04. We'll need to integrate with P4C compilation later. But if that issue is resolved, I agree it's better to test with newer versions of Ubuntu, and maybe a matrix of different OS versions later.


steps:

- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive

- name: Enable ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}

# --------
# Build and test MLIR. Use cache when available.
# --------

- name: Get LLVM hash
id: get-llvm-hash
run: echo "hash=$(git rev-parse @:./third_party/llvm-project)" >> $GITHUB_OUTPUT

- name: Get workflow hash
id: get-workflow-hash
run: echo "hash=$(md5sum $GITHUB_WORKSPACE/.github/workflows/build-and-test.yml | awk '{print $1}')" >> $GITHUB_OUTPUT

- name: Cache LLVM
id: cache-llvm
uses: actions/cache@v3
with:
path: |
third_party/llvm-project/build/bin/llvm-lit
install
key: ${{ runner.os }}-llvm-${{ steps.get-llvm-hash.outputs.hash }}-${{ steps.get-workflow-hash.outputs.hash }}

- name: Install requirements
if: steps.cache-llvm.outputs.cache-hit != 'true'
run: |
build_tools/ubuntu_install_mlir_requirements.sh

- name: Build and test MLIR
if: steps.cache-llvm.outputs.cache-hit != 'true'
run: |
build_tools/build_mlir.sh

# --------
# Build and test P4MLIR.
# --------

- name: Build and test P4MLIR
run: |
build_tools/build_p4mlir.sh
3 changes: 2 additions & 1 deletion build_tools/ubuntu_install_mlir_requirements.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

set -ex

apt-get install -y \
sudo apt-get update
sudo apt-get install -y \
build-essential \
ccache \
clang \
Expand Down
Loading