]> Git Repo - secp256k1.git/blob - .cirrus.yml
Merge #930: Add ARM32/ARM64 CI
[secp256k1.git] / .cirrus.yml
1 env:
2   WIDEMUL: auto
3   STATICPRECOMPUTATION: yes
4   ECMULTGENPRECISION: auto
5   ASM: no
6   BUILD: check
7   WITH_VALGRIND: yes
8   RUN_VALGRIND: no
9   EXTRAFLAGS:
10   HOST:
11   ECDH: no
12   RECOVERY: no
13   SCHNORRSIG: no
14   EXPERIMENTAL: no
15   CTIMETEST: yes
16   BENCH: yes
17   ITERS: 2
18   MAKEFLAGS: -j2
19
20 cat_logs_snippet: &CAT_LOGS
21   always:
22     cat_tests_log_script:
23       - cat tests.log || true
24     cat_exhaustive_tests_log_script:
25       - cat exhaustive_tests.log || true
26     cat_valgrind_ctime_test_log_script:
27       - cat valgrind_ctime_test.log || true
28     cat_bench_log_script:
29       - cat bench.log || true
30   on_failure:
31     cat_config_log_script:
32       - cat config.log || true
33     cat_test_env_script:
34       - cat test_env.log || true
35     cat_ci_env_script:
36       - env
37
38 merge_base_script_snippet: &MERGE_BASE
39   merge_base_script:
40     - if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
41     - git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH
42     - git config --global user.email "[email protected]"
43     - git config --global user.name "ci"
44     - git merge FETCH_HEAD  # Merge base to detect silent merge conflicts
45
46 task:
47   name: "x86_64: Linux (Debian stable)"
48   container:
49     dockerfile: ci/linux-debian.Dockerfile
50     # Reduce number of CPUs to be able to do more builds in parallel.
51     cpu: 1
52     # More than enough for our scripts.
53     memory: 1G
54   matrix: &ENV_MATRIX
55     - env: {WIDEMUL:  int64,  RECOVERY: yes}
56     - env: {WIDEMUL:  int64,                 ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
57     - env: {WIDEMUL: int128}
58     - env: {WIDEMUL: int128,  RECOVERY: yes,            EXPERIMENTAL: yes, SCHNORRSIG: yes}
59     - env: {WIDEMUL: int128,                 ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
60     - env: {WIDEMUL: int128,  ASM: x86_64}
61     - env: {                  RECOVERY: yes,            EXPERIMENTAL: yes, SCHNORRSIG: yes}
62     - env: {                  STATICPRECOMPUTATION: no}
63     - env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no}
64     - env: {CPPFLAGS: -DDETERMINISTIC}
65     - env: {CFLAGS: -O0, CTIMETEST: no}
66     - env:
67         CFLAGS:  "-fsanitize=undefined -fno-omit-frame-pointer"
68         LDFLAGS: "-fsanitize=undefined -fno-omit-frame-pointer"
69         UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1"
70         ASM: x86_64
71         ECDH: yes
72         RECOVERY: yes
73         EXPERIMENTAL: yes
74         SCHNORRSIG: yes
75         CTIMETEST: no
76     - env: { ECMULTGENPRECISION: 2 }
77     - env: { ECMULTGENPRECISION: 8 }
78     - env:
79         RUN_VALGRIND: yes
80         ASM: x86_64
81         ECDH: yes
82         RECOVERY: yes
83         EXPERIMENTAL: yes
84         SCHNORRSIG: yes
85         EXTRAFLAGS: "--disable-openssl-tests"
86         BUILD:
87   matrix:
88     - env:
89         CC: gcc
90     - env:
91         CC: clang
92   << : *MERGE_BASE
93   test_script:
94     - ./ci/cirrus.sh
95   << : *CAT_LOGS
96
97 task:
98   name: "i686: Linux (Debian stable)"
99   container:
100     dockerfile: ci/linux-debian.Dockerfile
101     cpu: 1
102     memory: 1G
103   env:
104     HOST: i686-linux-gnu
105     ECDH: yes
106     RECOVERY: yes
107     EXPERIMENTAL: yes
108     SCHNORRSIG: yes
109   matrix:
110     - env:
111         CC: i686-linux-gnu-gcc
112     - env:
113         CC: clang --target=i686-pc-linux-gnu -isystem /usr/i686-linux-gnu/include
114   test_script:
115     - ./ci/cirrus.sh
116   << : *CAT_LOGS
117
118 task:
119   name: "x86_64: macOS Catalina"
120   macos_instance:
121     image: catalina-base
122   env:
123     HOMEBREW_NO_AUTO_UPDATE: 1
124     HOMEBREW_NO_INSTALL_CLEANUP: 1
125     # Cirrus gives us a fixed number of 12 virtual CPUs. Not that we even have that many jobs at the moment...
126     MAKEFLAGS: -j13
127   matrix:
128     << : *ENV_MATRIX
129   matrix:
130     - env:
131         CC: gcc-9
132     - env:
133         CC: clang
134   # Update Command Line Tools
135   # Uncomment this if the Command Line Tools on the CirrusCI macOS image are too old to brew valgrind.
136   # See https://apple.stackexchange.com/a/195963 for the implementation.
137   ## update_clt_script:
138   ##   - system_profiler SPSoftwareDataType
139   ##   - touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
140   ##   - |-
141   ##     PROD=$(softwareupdate -l | grep "*.*Command Line" | tail -n 1 | awk -F"*" '{print $2}' | sed -e 's/^ *//' | sed 's/Label: //g' | tr -d '\n')
142   ##   # For debugging
143   ##   - softwareupdate -l && echo "PROD: $PROD"
144   ##   - softwareupdate -i "$PROD" --verbose
145   ##   - rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
146   ##
147   brew_valgrind_pre_script:
148     - brew config
149     - brew tap --shallow LouisBrunner/valgrind
150     # Fetch valgrind source but don't build it yet.
151     - brew fetch --HEAD LouisBrunner/valgrind/valgrind
152   brew_valgrind_cache:
153     # This is $(brew --cellar valgrind) but command substition does not work here.
154     folder: /usr/local/Cellar/valgrind
155     # Rebuild cache if ...
156     fingerprint_script:
157       # ... macOS version changes:
158       - sw_vers
159       # ... brew changes:
160       - brew config
161       # ... valgrind changes:
162       - git -C "$(brew --cache)/valgrind--git" rev-parse HEAD
163     populate_script:
164       # If there's no hit in the cache, build and install valgrind.
165       - brew install --HEAD LouisBrunner/valgrind/valgrind
166   brew_valgrind_post_script:
167     # If we have restored valgrind from the cache, tell brew to create symlink to the PATH.
168     # If we haven't restored from cached (and just run brew install), this is a no-op.
169     - brew link valgrind
170   brew_script:
171     - brew install automake libtool gcc@9
172   << : *MERGE_BASE
173   test_script:
174     - ./ci/cirrus.sh
175   << : *CAT_LOGS
176
177 task:
178   name: "s390x (big-endian): Linux (Debian stable, QEMU)"
179   container:
180     dockerfile: ci/linux-debian.Dockerfile
181     cpu: 1
182     memory: 1G
183   env:
184     QEMU_CMD: qemu-s390x
185     HOST: s390x-linux-gnu
186     BUILD:
187     WITH_VALGRIND: no
188     ECDH: yes
189     RECOVERY: yes
190     EXPERIMENTAL: yes
191     SCHNORRSIG: yes
192     CTIMETEST: no
193   << : *MERGE_BASE
194   test_script:
195     # https://sourceware.org/bugzilla/show_bug.cgi?id=27008
196     - rm /etc/ld.so.cache
197     - ./ci/cirrus.sh
198   << : *CAT_LOGS
199
200 task:
201   name: "ARM32: Linux (Debian stable, QEMU)"
202   container:
203     dockerfile: ci/linux-debian.Dockerfile
204     cpu: 1
205     memory: 1G
206   env:
207     QEMU_CMD: qemu-arm
208     HOST: arm-linux-gnueabihf
209     BUILD:
210     WITH_VALGRIND: no
211     ECDH: yes
212     RECOVERY: yes
213     EXPERIMENTAL: yes
214     SCHNORRSIG: yes
215     CTIMETEST: no
216   matrix:
217     - env: {}
218     - env: {ASM: arm}
219   << : *MERGE_BASE
220   test_script:
221     - ./ci/cirrus.sh
222   << : *CAT_LOGS
223
224 task:
225   name: "ARM64: Linux (Debian stable, QEMU)"
226   container:
227     dockerfile: ci/linux-debian.Dockerfile
228     cpu: 1
229     memory: 1G
230   env:
231     QEMU_CMD: qemu-aarch64
232     HOST: aarch64-linux-gnu
233     BUILD:
234     WITH_VALGRIND: no
235     ECDH: yes
236     RECOVERY: yes
237     EXPERIMENTAL: yes
238     SCHNORRSIG: yes
239     CTIMETEST: no
240   << : *MERGE_BASE
241   test_script:
242     - ./ci/cirrus.sh
243   << : *CAT_LOGS
244
245 task:
246   name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
247   container:
248     dockerfile: ci/linux-debian.Dockerfile
249     cpu: 1
250     memory: 1G
251   env:
252     WINE_CMD: wine64-stable
253     HOST: x86_64-w64-mingw32
254     BUILD:
255     WITH_VALGRIND: no
256     ECDH: yes
257     RECOVERY: yes
258     EXPERIMENTAL: yes
259     SCHNORRSIG: yes
260     CTIMETEST: no
261   << : *MERGE_BASE
262   test_script:
263     - ./ci/cirrus.sh
264   << : *CAT_LOGS
This page took 0.040657 seconds and 4 git commands to generate.