Skip to content

Commit 27d9b8c

Browse files
authored
Add basic CI (#2)
Add basic CI --------- Signed-off-by: Ivan Butygin <[email protected]>
1 parent 175cd79 commit 27d9b8c

File tree

3 files changed

+152
-0
lines changed

3 files changed

+152
-0
lines changed

.github/workflows/build.yml

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
name: Run tests
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
env:
14+
LLVM_SHA_FILE: llvm-sha.txt
15+
LLVM_CACHE_NUMBER: 1 # Increase to reset cache
16+
17+
jobs:
18+
build_llvm_linux:
19+
name: Builds Linux LLVM/MLIR
20+
runs-on: ubuntu-22.04
21+
defaults:
22+
run:
23+
shell: bash -el {0}
24+
timeout-minutes: 420
25+
26+
steps:
27+
- name: Checkout repo
28+
uses: actions/checkout@v4
29+
with:
30+
fetch-depth: 0
31+
32+
- name: Setup env
33+
run: |
34+
sudo apt update
35+
sudo apt install -y ninja-build cmake clang lld
36+
pip install lit
37+
38+
- name: Setup Cache Vars
39+
run: |
40+
echo 'LLVM_SHA<<EOF' >> $GITHUB_ENV
41+
cat $GITHUB_WORKSPACE/$LLVM_SHA_FILE >> $GITHUB_ENV
42+
echo 'EOF' >> $GITHUB_ENV
43+
44+
- name: Cache LLLVM-MLIR
45+
id: cache-llvm-mlir
46+
uses: actions/cache@v3
47+
with:
48+
path: |
49+
/home/runner/work/llvm-mlir/_mlir_install/**
50+
key: ${{ runner.os }}-build-llvm-${{ env.LLVM_CACHE_NUMBER }}-${{ env.LLVM_SHA }}
51+
52+
- name: Build LLVM-MLIR
53+
if: steps.cache-llvm-mlir.outputs.cache-hit != 'true'
54+
shell: bash -l {0}
55+
timeout-minutes: 420
56+
run: |
57+
mkdir -p /home/runner/work/llvm-mlir
58+
pushd /home/runner/work/llvm-mlir
59+
echo "INFO: Need to rebuild LLVM-MLIR. Previous installation for MLIR not found"
60+
np=`nproc`
61+
echo "INFO: nproc $np"
62+
git clone https://github.com/llvm/llvm-project
63+
cd llvm-project
64+
git checkout $LLVM_SHA
65+
mkdir _build
66+
cd _build
67+
export CC=clang
68+
export CXX=clang++
69+
cmake ../llvm \
70+
-GNinja \
71+
-DCMAKE_BUILD_TYPE=Release \
72+
-DLLVM_ENABLE_PROJECTS="mlir" \
73+
-DLLVM_ENABLE_ASSERTIONS=ON \
74+
-DLLVM_INSTALL_UTILS=ON \
75+
-DLLVM_TARGETS_TO_BUILD="X86;AMDGPU" \
76+
-DLLVM_ENABLE_BINDINGS=OFF \
77+
-DLLVM_ENABLE_ZSTD=OFF \
78+
-DMLIR_INCLUDE_TESTS=OFF \
79+
-DLLVM_USE_LINKER=lld \
80+
-DLLVM_DISTRIBUTION_COMPONENTS="llvm-headers;llvm-libraries;cmake-exports;FileCheck;count;not;mlir-headers;mlir-libraries;mlir-cmake-exports;mlir-tblgen;" \
81+
-DCMAKE_INSTALL_PREFIX=/home/runner/work/llvm-mlir/_mlir_install
82+
ninja install-distribution-stripped
83+
cp bin/FileCheck /home/runner/work/llvm-mlir/_mlir_install/bin/
84+
cp bin/count /home/runner/work/llvm-mlir/_mlir_install/bin/
85+
cp bin/not /home/runner/work/llvm-mlir/_mlir_install/bin/
86+
popd
87+
88+
test_linux:
89+
name: "Linux: Run water tests"
90+
runs-on: ubuntu-22.04
91+
defaults:
92+
run:
93+
shell: bash -el {0}
94+
timeout-minutes: 420
95+
needs: build_llvm_linux
96+
97+
steps:
98+
- name: Checkout repo
99+
uses: actions/checkout@v4
100+
with:
101+
fetch-depth: 0
102+
103+
- name: Setup env
104+
run: |
105+
sudo apt update
106+
sudo apt install -y ninja-build cmake clang lld
107+
pip install lit
108+
109+
- name: Setup Cache Vars
110+
run: |
111+
echo 'LLVM_SHA<<EOF' >> $GITHUB_ENV
112+
cat $GITHUB_WORKSPACE/$LLVM_SHA_FILE >> $GITHUB_ENV
113+
echo 'EOF' >> $GITHUB_ENV
114+
115+
- name: Cache LLLVM-MLIR
116+
id: cache-llvm-mlir
117+
uses: actions/cache@v3
118+
with:
119+
path: |
120+
/home/runner/work/llvm-mlir/_mlir_install/**
121+
key: ${{ runner.os }}-build-llvm-${{ env.LLVM_CACHE_NUMBER }}-${{ env.LLVM_SHA }}
122+
123+
124+
- name: Build water
125+
run: |
126+
export EXTERNAL_LIT=${GITHUB_WORKSPACE}/scripts/runlit.py
127+
export LLVM_DIR=/home/runner/work/llvm-mlir/_mlir_install
128+
mkdir -p cmake_build
129+
cd cmake_build
130+
export CC=clang
131+
export CXX=clang++
132+
cmake ${GITHUB_WORKSPACE} \
133+
-GNinja \
134+
-DCMAKE_BUILD_TYPE=Release \
135+
-DLLVM_DIR=${LLVM_DIR}/lib/cmake/llvm \
136+
-DMLIR_DIR=${LLVM_DIR}/lib/cmake/mlir \
137+
-DLLVM_EXTERNAL_LIT=${EXTERNAL_LIT}
138+
cmake --build .
139+
140+
- name: Test water
141+
run: |
142+
cd cmake_build
143+
cmake --build . --target check-water

llvm-sha.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
227f759644bbc208045178c54633df241f27da7f

scripts/runlit.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
4+
if __name__ == "__main__":
5+
import lit.main
6+
7+
print("lit version: ", lit.__version__)
8+
lit.main.main()

0 commit comments

Comments
 (0)