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