23
23
BENCH : yes
24
24
SECP256K1_BENCH_ITERS : 2
25
25
CTIMETEST : yes
26
+ # Compile and run the tests
27
+ EXAMPLES : yes
28
+
29
+ # https://cirrus-ci.org/pricing/#compute-credits
30
+ credits_snippet : &CREDITS
31
+ # Don't use any credits for now.
32
+ use_compute_credits : false
26
33
27
34
cat_logs_snippet : &CAT_LOGS
28
35
always :
@@ -34,7 +41,6 @@ cat_logs_snippet: &CAT_LOGS
34
41
- cat valgrind_ctime_test.log || true
35
42
cat_bench_log_script :
36
43
- cat bench.log || true
37
- on_failure :
38
44
cat_config_log_script :
39
45
- cat config.log || true
40
46
cat_test_env_script :
@@ -65,12 +71,13 @@ task:
65
71
<< : *LINUX_CONTAINER
66
72
matrix : &ENV_MATRIX
67
73
- env : {WIDEMUL: int64, RECOVERY: yes}
68
- - env : {WIDEMUL: int64, ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
74
+ - env : {WIDEMUL: int64, ECDH: yes, SCHNORRSIG: yes}
69
75
- env : {WIDEMUL: int128}
70
- - env : {WIDEMUL: int128, RECOVERY: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
71
- - env : {WIDEMUL: int128, ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
76
+ - env : {WIDEMUL: int128_struct}
77
+ - env : {WIDEMUL: int128, RECOVERY: yes, SCHNORRSIG: yes}
78
+ - env : {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes}
72
79
- env : {WIDEMUL: int128, ASM: x86_64}
73
- - env : { RECOVERY: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
80
+ - env : { RECOVERY: yes, SCHNORRSIG: yes}
74
81
- env : {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no}
75
82
- env : {CPPFLAGS: -DDETERMINISTIC}
76
83
- env : {CFLAGS: -O0, CTIMETEST: no}
93
100
HOST : i686-linux-gnu
94
101
ECDH : yes
95
102
RECOVERY : yes
96
- EXPERIMENTAL : yes
97
103
SCHNORRSIG : yes
98
104
matrix :
99
105
- env :
@@ -106,64 +112,32 @@ task:
106
112
<< : *CAT_LOGS
107
113
108
114
task :
109
- name : " x86_64 : macOS Catalina "
115
+ name : " arm64 : macOS Ventura "
110
116
macos_instance :
111
- image : catalina- base
117
+ image : ghcr.io/cirruslabs/macos-ventura- base:latest
112
118
env :
113
119
HOMEBREW_NO_AUTO_UPDATE : 1
114
120
HOMEBREW_NO_INSTALL_CLEANUP : 1
115
- # Cirrus gives us a fixed number of 12 virtual CPUs. Not that we even have that many jobs at the moment...
116
- MAKEFLAGS : -j13
121
+ # Cirrus gives us a fixed number of 4 virtual CPUs. Not that we even have that many jobs at the moment...
122
+ MAKEFLAGS : -j5
117
123
matrix :
118
124
<< : *ENV_MATRIX
125
+ env :
126
+ ASM : no
127
+ WITH_VALGRIND : no
128
+ CTIMETEST : no
119
129
matrix :
120
130
- env :
121
- CC : gcc-9
131
+ CC : gcc
122
132
- env :
123
133
CC : clang
124
- # Update Command Line Tools
125
- # Uncomment this if the Command Line Tools on the CirrusCI macOS image are too old to brew valgrind.
126
- # See https://apple.stackexchange.com/a/195963 for the implementation.
127
- # # update_clt_script:
128
- # # - system_profiler SPSoftwareDataType
129
- # # - touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
130
- # # - |-
131
- # # PROD=$(softwareupdate -l | grep "*.*Command Line" | tail -n 1 | awk -F"*" '{print $2}' | sed -e 's/^ *//' | sed 's/Label: //g' | tr -d '\n')
132
- # # # For debugging
133
- # # - softwareupdate -l && echo "PROD: $PROD"
134
- # # - softwareupdate -i "$PROD" --verbose
135
- # # - rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
136
- # #
137
- brew_valgrind_pre_script :
138
- - brew update
139
- - brew config
140
- - brew tap LouisBrunner/valgrind
141
- # Fetch valgrind source but don't build it yet.
142
- - brew fetch --HEAD LouisBrunner/valgrind/valgrind
143
- brew_valgrind_cache :
144
- # This is $(brew --cellar valgrind) but command substition does not work here.
145
- folder : /usr/local/Cellar/valgrind
146
- # Rebuild cache if ...
147
- fingerprint_script :
148
- # ... macOS version changes:
149
- - sw_vers
150
- # ... brew changes:
151
- - brew config
152
- # ... valgrind changes:
153
- - git -C "$(brew --cache)/valgrind--git" rev-parse HEAD
154
- populate_script :
155
- # If there's no hit in the cache, build and install valgrind.
156
- - brew install --HEAD LouisBrunner/valgrind/valgrind
157
- brew_valgrind_post_script :
158
- # If we have restored valgrind from the cache, tell brew to create symlink to the PATH.
159
- # If we haven't restored from cached (and just run brew install), this is a no-op.
160
- - brew link valgrind
161
134
brew_script :
162
- - brew install automake libtool gcc@9
135
+ - brew install automake libtool gcc
163
136
<< : *MERGE_BASE
164
137
test_script :
165
138
- ./ci/cirrus.sh
166
139
<< : *CAT_LOGS
140
+ << : *CREDITS
167
141
168
142
task :
169
143
name : " s390x (big-endian): Linux (Debian stable, QEMU)"
@@ -175,7 +149,6 @@ task:
175
149
WITH_VALGRIND : no
176
150
ECDH : yes
177
151
RECOVERY : yes
178
- EXPERIMENTAL : yes
179
152
SCHNORRSIG : yes
180
153
CTIMETEST : no
181
154
<< : *MERGE_BASE
@@ -195,12 +168,11 @@ task:
195
168
WITH_VALGRIND : no
196
169
ECDH : yes
197
170
RECOVERY : yes
198
- EXPERIMENTAL : yes
199
171
SCHNORRSIG : yes
200
172
CTIMETEST : no
201
173
matrix :
202
174
- env : {}
203
- - env : {ASM: arm}
175
+ - env : {EXPERIMENTAL: yes, ASM: arm}
204
176
<< : *MERGE_BASE
205
177
test_script :
206
178
- ./ci/cirrus.sh
@@ -216,7 +188,6 @@ task:
216
188
WITH_VALGRIND : no
217
189
ECDH : yes
218
190
RECOVERY : yes
219
- EXPERIMENTAL : yes
220
191
SCHNORRSIG : yes
221
192
CTIMETEST : no
222
193
<< : *MERGE_BASE
@@ -234,7 +205,6 @@ task:
234
205
WITH_VALGRIND : no
235
206
ECDH : yes
236
207
RECOVERY : yes
237
- EXPERIMENTAL : yes
238
208
SCHNORRSIG : yes
239
209
CTIMETEST : no
240
210
<< : *MERGE_BASE
@@ -243,18 +213,63 @@ task:
243
213
<< : *CAT_LOGS
244
214
245
215
task :
246
- name : " x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
247
216
<< : *LINUX_CONTAINER
248
217
env :
249
- WRAPPER_CMD : wine64-stable
250
- SECP256K1_TEST_ITERS : 16
251
- HOST : x86_64-w64-mingw32
218
+ WRAPPER_CMD : wine
219
+ WITH_VALGRIND : no
220
+ ECDH : yes
221
+ RECOVERY : yes
222
+ SCHNORRSIG : yes
223
+ CTIMETEST : no
224
+ matrix :
225
+ - name : " x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
226
+ env :
227
+ HOST : x86_64-w64-mingw32
228
+ - name : " i686 (mingw32-w64): Windows (Debian stable, Wine)"
229
+ env :
230
+ HOST : i686-w64-mingw32
231
+ << : *MERGE_BASE
232
+ test_script :
233
+ - ./ci/cirrus.sh
234
+ << : *CAT_LOGS
235
+
236
+ task :
237
+ << : *LINUX_CONTAINER
238
+ env :
239
+ WRAPPER_CMD : wine
240
+ WERROR_CFLAGS : -WX
252
241
WITH_VALGRIND : no
253
242
ECDH : yes
254
243
RECOVERY : yes
255
244
EXPERIMENTAL : yes
256
245
SCHNORRSIG : yes
257
246
CTIMETEST : no
247
+ # Use a MinGW-w64 host to tell ./configure we're building for Windows.
248
+ # This will detect some MinGW-w64 tools but then make will need only
249
+ # the MSVC tools CC, AR and NM as specified below.
250
+ HOST : x86_64-w64-mingw32
251
+ CC : /opt/msvc/bin/x64/cl
252
+ AR : /opt/msvc/bin/x64/lib
253
+ NM : /opt/msvc/bin/x64/dumpbin -symbols -headers
254
+ # Set non-essential options that affect the CLI messages here.
255
+ # (They depend on the user's taste, so we don't want to set them automatically in configure.ac.)
256
+ CFLAGS : -nologo -diagnostics:caret
257
+ LDFLAGS : -XCClinker -nologo -XCClinker -diagnostics:caret
258
+ matrix :
259
+ - name : " x86_64 (MSVC): Windows (Debian stable, Wine)"
260
+ - name : " x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct)"
261
+ env :
262
+ WIDEMUL : int128_struct
263
+ - name : " x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct with __(u)mulh)"
264
+ env :
265
+ WIDEMUL : int128_struct
266
+ CPPFLAGS : -DSECP256K1_MSVC_MULH_TEST_OVERRIDE
267
+ - name : " i686 (MSVC): Windows (Debian stable, Wine)"
268
+ env :
269
+ HOST : i686-w64-mingw32
270
+ CC : /opt/msvc/bin/x86/cl
271
+ AR : /opt/msvc/bin/x86/lib
272
+ NM : /opt/msvc/bin/x86/dumpbin -symbols -headers
258
273
<< : *MERGE_BASE
259
274
test_script :
260
275
- ./ci/cirrus.sh
@@ -266,7 +281,6 @@ task:
266
281
env :
267
282
ECDH : yes
268
283
RECOVERY : yes
269
- EXPERIMENTAL : yes
270
284
SCHNORRSIG : yes
271
285
CTIMETEST : no
272
286
matrix :
@@ -305,20 +319,59 @@ task:
305
319
- ./ci/cirrus.sh
306
320
<< : *CAT_LOGS
307
321
322
+ # Memory sanitizers
323
+ task :
324
+ << : *LINUX_CONTAINER
325
+ name : " MSan"
326
+ env :
327
+ ECDH : yes
328
+ RECOVERY : yes
329
+ SCHNORRSIG : yes
330
+ CTIMETEST : no
331
+ CC : clang
332
+ SECP256K1_TEST_ITERS : 32
333
+ ASM : no
334
+ container :
335
+ memory : 2G
336
+ matrix :
337
+ - env :
338
+ CFLAGS : " -fsanitize=memory -g"
339
+ - env :
340
+ ECMULTGENPRECISION : 2
341
+ ECMULTWINDOW : 2
342
+ CFLAGS : " -fsanitize=memory -g -O3"
343
+ << : *MERGE_BASE
344
+ test_script :
345
+ - ./ci/cirrus.sh
346
+ << : *CAT_LOGS
347
+
308
348
task :
309
- name : " C++ -fpermissive"
349
+ name : " C++ -fpermissive (entire project) "
310
350
<< : *LINUX_CONTAINER
311
351
env :
312
- # ./configure correctly errors out when given CC=g++.
313
- # We hack around this by passing CC=g++ only to make.
314
- CC : gcc
315
- MAKEFLAGS : -j4 CC=g++ CFLAGS=-fpermissive\ -g
352
+ CC : g++
353
+ CFLAGS : -fpermissive -g
354
+ CPPFLAGS : -DSECP256K1_CPLUSPLUS_TEST_OVERRIDE
316
355
WERROR_CFLAGS :
317
- EXPERIMENTAL : yes
318
356
ECDH : yes
319
357
RECOVERY : yes
320
358
SCHNORRSIG : yes
321
359
<< : *MERGE_BASE
322
360
test_script :
323
361
- ./ci/cirrus.sh
324
362
<< : *CAT_LOGS
363
+
364
+ task :
365
+ name : " C++ (public headers)"
366
+ << : *LINUX_CONTAINER
367
+ test_script :
368
+ - g++ -Werror include/*.h
369
+ - clang -Werror -x c++-header include/*.h
370
+ - /opt/msvc/bin/x64/cl.exe -c -WX -TP include/*.h
371
+
372
+ task :
373
+ name : " sage prover"
374
+ << : *LINUX_CONTAINER
375
+ test_script :
376
+ - cd sage
377
+ - sage prove_group_implementations.sage
0 commit comments