-
Notifications
You must be signed in to change notification settings - Fork 7
236 lines (218 loc) · 6.41 KB
/
linux.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
229
230
231
232
233
234
235
236
name: Linux
on:
pull_request:
push:
branches: [ main ]
tags: [ '*' ]
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
defaults:
run:
shell: bash
env:
hipo_version: 380d54ec47086b31fe13e637329748b2df06ea84
fmt_version: 9.1.0
jobs:
# dependencies
#########################################################
build_hipo:
name: Build HIPO
runs-on: ubuntu-latest
steps:
- name: checkout hipo
uses: actions/checkout@v4
with:
repository: gavalian/hipo
ref: ${{ env.hipo_version }}
- name: build
run: |
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=hipo -DCMAKE_POSITION_INDEPENDENT_CODE=ON
cmake --build build -j2
cmake --install build
- run: tree hipo
- name: tar
run: tar czvf hipo{.tar.gz,}
- uses: actions/upload-artifact@v3
with:
name: build
retention-days: 1
path: hipo.tar.gz
build_fmt:
name: Build fmt
runs-on: ubuntu-latest
steps:
- name: checkout fmt
uses: actions/checkout@v4
with:
repository: fmtlib/fmt
ref: ${{ env.fmt_version }}
- name: build
run: |
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=fmt -DCMAKE_POSITION_INDEPENDENT_CODE=ON
cmake --build build -j2
cmake --install build
- run: tree fmt
- name: tar
run: tar czvf fmt{.tar.gz,}
- uses: actions/upload-artifact@v3
with:
name: build
retention-days: 1
path: fmt.tar.gz
# build
#########################################################
build_iguana:
name: Build Iguana
needs:
- build_hipo
- build_fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: setup meson
run: python -m pip install meson ninja
- name: summarize dependencies
run: |
echo '### Dependencies' >> $GITHUB_STEP_SUMMARY
echo '| Dependency | Version |' >> $GITHUB_STEP_SUMMARY
echo '| --- | --- |' >> $GITHUB_STEP_SUMMARY
for dep in python meson ninja ; do
echo "| \`$dep\` | $($dep --version) |" >> $GITHUB_STEP_SUMMARY
done
echo "| \`fmt\` | ${{ env.fmt_version }} |" >> $GITHUB_STEP_SUMMARY
echo "| \`hipo\` | ${{ env.hipo_version }} |" >> $GITHUB_STEP_SUMMARY
- name: get build artifacts
uses: actions/download-artifact@v3
with:
name: build
- name: untar build
run: ls *.tar.gz | xargs -I{} tar xzvf {}
- run: tree
- name: configure
run: ./configure.py --hipo hipo --fmt fmt --examples
- name: build
run: ./install-iguana.sh
- name: dump build log
if: always()
run: cat build-iguana/meson-logs/meson-log.txt
- name: readelf iguana
run: |
for obj in $(ls iguana/bin/*) $(find iguana -name "*.so") ; do
echo "[+++] READELF $obj"
readelf -d $obj
done
- run: tree iguana
- name: tar
run: tar czvf iguana{.tar.gz,}
- uses: actions/upload-artifact@v3
with:
name: build
retention-days: 1
path: iguana.tar.gz
# download test data
#########################################################
download_validation_files:
name: Download validation files
runs-on: ubuntu-latest
steps:
- name: download
run: wget --no-check-certificate http://clasweb.jlab.org/clas12offline/distribution/clas12-timeline/validation_files.tar.gz
- name: list
run: tar tzvf validation_files.tar.gz
- uses: actions/upload-artifact@v3
with:
name: validation_files
retention-days: 1
path: validation_files.tar.gz
# run tests
#########################################################
test_iguana:
name: Test Iguana
needs:
- download_validation_files
- build_iguana
runs-on: ubuntu-latest
steps:
- name: get build artifacts
uses: actions/download-artifact@v3
with:
name: build
- name: get test data
uses: actions/download-artifact@v3
with:
name: validation_files
- name: untar artifacts
run: |
ls *.tar.gz | xargs -I{} tar xzvf {}
rm -v *.tar.gz
- name: tree artifacts
run: tree
- name: run test
run: |
test_file=$(find validation_files -name "*.hipo" | head -n1)
echo "[+] TEST FILE: $test_file"
for exe in $(find iguana/bin -executable -type f); do
echo "[+] EXECUTE TEST: $exe"
$exe $test_file
done
test_dependent_builds:
name: Test Dependent Builds
needs:
- download_validation_files
- build_iguana
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
tool: [ cmake, make, meson ]
steps:
- uses: actions/checkout@v4
- name: setup meson
run: python -m pip install meson ninja
- name: get build artifacts
uses: actions/download-artifact@v3
with:
name: build
- name: get test data
uses: actions/download-artifact@v3
with:
name: validation_files
- name: untar artifacts
run: |
ls *.tar.gz | xargs -I{} tar xzvf {}
rm -v *.tar.gz
- name: build and run
run: |
test_file=$(find validation_files -name "*.hipo" | head -n1)
.github/test-dependent-build.sh ${{ matrix.tool }} $test_file
# documentation
#########################################################
doc_generate:
name: Generate documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: doxygen
uses: mattnotmitt/doxygen-action@v1
with:
doxyfile-path: doc/Doxyfile
- uses: actions/upload-pages-artifact@v2
with:
retention-days: 1
path: doc/api/
doc_deploy:
if: ${{ github.head_ref == 'main' || github.ref_name == 'main' }}
name: Deploy documentation
needs: doc_generate
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: deployment
id: deployment
uses: actions/deploy-pages@v2