-
Notifications
You must be signed in to change notification settings - Fork 12
229 lines (204 loc) · 8.13 KB
/
buildAndTest.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# (c) Copyright 2021 Xilinx, Inc. All Rights reserved.
# (c) Copyright 2022 - 2024 Advanced Micro Devices, Inc. All Rights reserved.
name: Build and Test
on:
push:
branches:
- main
pull_request:
types: [assigned, opened, synchronize, reopened]
workflow_dispatch:
jobs:
# Build repo and run its tests.
build-repo:
name: Build and Test
runs-on: ubuntu-latest
steps:
- name: Configure Environment
run: echo "$GITHUB_WORKSPACE/llvm/install/bin" >> $GITHUB_PATH
# Clone the repo and its submodules. Do shallow clone to save clone
# time.
- name: Get repo
uses: actions/checkout@v2
with:
fetch-depth: 2
submodules: "true"
- name: Hello world action step
uses: ./.github/actions/build-with-llvm/ # Uses an action in the root directory
id: hello
with:
who-to-greet: 'Mona the Octocat'
# We'll be running clang-tidy later in this flow.
# - name: Install clang-tidy
# run: |
# sudo apt-get install -y clang-tidy-9
# sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy \
# /usr/bin/clang-tidy-9 100
# - name: Install libboost
# run: sudo apt-get install -y libboost-all-dev
# - name: Install psutil
# run: sudo pip install psutil
# # --------
# # Restore LLVM from cache and build if it's not in there.
# # --------
# - name: Get cmakeModules
# id: clone-cmakeModules
# run: git clone --depth 1 https://github.com/Xilinx/cmakeModules.git
# shell: bash
# - name: Get LLVM
# id: clone-llvm
# run: utils/clone-llvm.sh
# shell: bash
# # Extract the LLVM submodule hash for use in the cache key.
# - name: Get LLVM Hash
# id: get-llvm-hash
# run: |
# cd llvm
# echo "::set-output name=hash::$(git rev-parse @:./llvm)"
# shell: bash
# # Try to fetch LLVM from the cache.
# - name: Cache LLVM
# id: cache-llvm
# uses: actions/cache@v2
# with:
# path: llvm
# key: ${{ runner.os }}-llvm-install-${{ steps.get-llvm-hash.outputs.hash }}
# # Build LLVM if we didn't hit in the cache. Even though we build it in
# # the previous job, there is a low chance that it'll have been evicted by
# # the time we get here.
# - name: Rebuild and Install LLVM
# if: steps.cache-llvm.outputs.cache-hit != 'true'
# run: utils/build-llvm.sh
# --------
# Build and test repo in both debug and release mode.
# --------
# Build the repo test target in debug mode to build and test.
# - name: Build (Assert)
# run: |
# mkdir build_assert
# cd build_assert
# cmake .. \
# -DCMAKE_BUILD_TYPE=Debug \
# -DLLVM_ENABLE_ASSERTIONS=ON \
# -DCMAKE_MODULE_PATH=`pwd`/../cmakeModules \
# -DMLIR_DIR=/build/build/lib/cmake/mlir/ \
# -DLLVM_DIR=/build/build/lib/cmake/llvm/ \
# -DCMAKE_LINKER=lld \
# -DCMAKE_C_COMPILER=clang \
# -DCMAKE_CXX_COMPILER=clang++ \
# -DLLVM_EXTERNAL_LIT=/build/build/bin/llvm-lit \
# -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
# make -j$(nproc)
# Build the repo test target in release mode to build and test.
# - name: Build (Release)
# run: |
# mkdir build_release
# cd build_release
# cmake .. \
# -DCMAKE_BUILD_TYPE=Release \
# -DLLVM_ENABLE_ASSERTIONS=OFF \
# -DCMAKE_MODULE_PATH=../cmakeModules \
# -DMLIR_DIR=../llvm/install/lib/cmake/mlir/ \
# -DLLVM_DIR=../llvm/install/lib/cmake/llvm/ \
# -DCMAKE_LINKER=lld \
# -DCMAKE_C_COMPILER=clang \
# -DCMAKE_CXX_COMPILER=clang++ \
# -DLLVM_EXTERNAL_LIT=`pwd`/../llvm/build/bin/llvm-lit
# make -j$(nproc)
# # --------
# # Lint the code.
# # -------
# # Choose the git commit to diff against for the purposes of linting.
# # Since this workflow is triggered on both pushes and pull requests, we
# # have to determine if the pull request target branch is set (which it
# # will only be on the PR triggered flow). If it's not, then compare
# # against the last commit.
# - name: choose-commit
# if: ${{ always() }}
# env:
# # Base ref is the target branch, in text form (not hash)
# PR_BASE: ${{ github.base_ref }}
# run: |
# # Run clang-format
# if [[ -z "$PR_BASE" ]]; then
# DIFF_COMMIT_NAME="HEAD^"
# else
# DIFF_COMMIT_NAME="$PR_BASE"
# fi
# echo "DIFF_COMMIT_NAME=$DIFF_COMMIT_NAME" >> $GITHUB_ENV
# # Since we did a shallow fetch for this repo, we must fetch the commit
# # upon which we be diff'ing. The last step set the ref name in the
# # $DIFF_COMMIT_NAME environment variable. When running the fetch, resolve
# # it to the commit hash and pass that hash along to subsequent steps.
# - name: git fetch base commit
# continue-on-error: true
# run: |
# if [[ ! "$DIFF_COMMIT_NAME" == *"HEAD"* ]]; then
# git fetch --recurse-submodules=no origin $DIFF_COMMIT_NAME
# DIFF_COMMIT_SHA=$( git rev-parse origin/$DIFF_COMMIT_NAME )
# else
# DIFF_COMMIT_SHA=$( git rev-parse $DIFF_COMMIT_NAME )
# fi
# echo "DIFF_COMMIT=$DIFF_COMMIT_SHA" >> $GITHUB_ENV
# # Run 'git clang-format', comparing against the target commit hash. If
# # clang-format fixed anything, fail and output a patch.
# - name: clang-format
# if: ${{ always() }}
# run: |
# # Run clang-format
# git clang-format-11 $DIFF_COMMIT
# git diff --ignore-submodules > clang-format.patch
# if [ -s clang-format.patch ]; then
# echo "Clang-format found formatting problems in the following " \
# "files. See diff in the clang-format.patch artifact."
# git diff --ignore-submodules --name-only
# git checkout .
# exit 1
# fi
# echo "Clang-format found no formatting problems"
# exit 0
# # Run clang-tidy against only the changes. The 'clang-tidy-diff' script
# # does this if supplied with the diff.
# - name: clang-tidy
# if: ${{ always() }}
# run: |
# git diff -U0 $DIFF_COMMIT | \
# clang-tidy-diff-9.py -path build_assert -p1 -fix
# git diff --ignore-submodules > clang-tidy.patch
# if [ -s clang-tidy.patch ]; then
# echo "Clang-tidy problems in the following files. " \
# "See diff in the clang-tidy.patch artifact."
# git diff --ignore-submodules --name-only
# git checkout .
# exit 1
# fi
# echo "Clang-tidy found no problems"
# exit 0
# # Upload the format and tidy patches to an artifact (zip'd) associated
# # with the workflow run. Only run this on a failure.
# - name: Upload format and tidy patches
# uses: actions/upload-artifact@v2
# continue-on-error: true
# if: ${{ failure() }}
# with:
# name: clang-format-tidy-patches
# path: clang-*.patch
# # Unfortunately, artifact uploads are always zips so display the diff as
# # well to provide feedback at a glance.
# - name: clang format and tidy patches display
# if: ${{ failure() }}
# continue-on-error: true
# run: |
# # Display patches
# if [ ! -z clang-format.patch ]; then
# echo "Clang-format patch"
# echo "================"
# cat clang-format.patch
# echo "================"
# fi
# if [ ! -z clang-tidy.patch ]; then
# echo "Clang-tidy patch"
# echo "================"
# cat clang-tidy.patch
# echo "================"
# fi