-
Notifications
You must be signed in to change notification settings - Fork 394
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b37bed3
commit 157cc2f
Showing
96 changed files
with
13,160 additions
and
2,480 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,9 @@ | ||
env: | ||
### cirrus config | ||
CIRRUS_CLONE_DEPTH: 1 | ||
### compiler options | ||
HOST: | ||
WRAPPER_CMD: | ||
# Specific warnings can be disabled with -Wno-error=foo. | ||
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual. | ||
WERROR_CFLAGS: -Werror -pedantic-errors | ||
|
@@ -22,21 +25,27 @@ env: | |
SECP256K1_TEST_ITERS: | ||
BENCH: yes | ||
SECP256K1_BENCH_ITERS: 2 | ||
CTIMETEST: yes | ||
CTIMETESTS: yes | ||
# Compile and run the tests | ||
EXAMPLES: yes | ||
|
||
# https://cirrus-ci.org/pricing/#compute-credits | ||
credits_snippet: &CREDITS | ||
# Don't use any credits for now. | ||
use_compute_credits: false | ||
|
||
cat_logs_snippet: &CAT_LOGS | ||
always: | ||
cat_tests_log_script: | ||
- cat tests.log || true | ||
cat_noverify_tests_log_script: | ||
- cat noverify_tests.log || true | ||
cat_exhaustive_tests_log_script: | ||
- cat exhaustive_tests.log || true | ||
cat_valgrind_ctime_test_log_script: | ||
- cat valgrind_ctime_test.log || true | ||
cat_ctime_tests_log_script: | ||
- cat ctime_tests.log || true | ||
cat_bench_log_script: | ||
- cat bench.log || true | ||
on_failure: | ||
cat_config_log_script: | ||
- cat config.log || true | ||
cat_test_env_script: | ||
|
@@ -47,10 +56,8 @@ cat_logs_snippet: &CAT_LOGS | |
merge_base_script_snippet: &MERGE_BASE | ||
merge_base_script: | ||
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi | ||
- git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH | ||
- git config --global user.email "[email protected]" | ||
- git config --global user.name "ci" | ||
- git merge FETCH_HEAD # Merge base to detect silent merge conflicts | ||
- git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge" | ||
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts | ||
|
||
linux_container_snippet: &LINUX_CONTAINER | ||
container: | ||
|
@@ -69,13 +76,15 @@ task: | |
- env: {WIDEMUL: int64, RECOVERY: yes} | ||
- env: {WIDEMUL: int64, ECDH: yes, SCHNORRSIG: yes} | ||
- env: {WIDEMUL: int128} | ||
- env: {WIDEMUL: int128_struct} | ||
- env: {WIDEMUL: int128, RECOVERY: yes, SCHNORRSIG: yes} | ||
- env: {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes} | ||
- env: {WIDEMUL: int128, ASM: x86_64} | ||
- env: { RECOVERY: yes, SCHNORRSIG: yes} | ||
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no} | ||
- env: {CTIMETESTS: no, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, CPPFLAGS: -DVERIFY} | ||
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETESTS: no, BENCH: no} | ||
- env: {CPPFLAGS: -DDETERMINISTIC} | ||
- env: {CFLAGS: -O0, CTIMETEST: no} | ||
- env: {CFLAGS: -O0, CTIMETESTS: no} | ||
- env: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } | ||
- env: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 } | ||
matrix: | ||
|
@@ -107,65 +116,32 @@ task: | |
<< : *CAT_LOGS | ||
|
||
task: | ||
name: "x86_64: macOS Catalina" | ||
name: "arm64: macOS Ventura" | ||
macos_instance: | ||
image: catalina-base | ||
image: ghcr.io/cirruslabs/macos-ventura-base:latest | ||
env: | ||
HOMEBREW_NO_AUTO_UPDATE: 1 | ||
HOMEBREW_NO_INSTALL_CLEANUP: 1 | ||
# Cirrus gives us a fixed number of 12 virtual CPUs. Not that we even have that many jobs at the moment... | ||
MAKEFLAGS: -j13 | ||
# Cirrus gives us a fixed number of 4 virtual CPUs. Not that we even have that many jobs at the moment... | ||
MAKEFLAGS: -j5 | ||
matrix: | ||
<< : *ENV_MATRIX | ||
env: | ||
ASM: no | ||
WITH_VALGRIND: no | ||
CTIMETESTS: no | ||
matrix: | ||
- env: | ||
CC: gcc-9 | ||
CC: gcc | ||
- env: | ||
CC: clang | ||
# Update Command Line Tools | ||
# Uncomment this if the Command Line Tools on the CirrusCI macOS image are too old to brew valgrind. | ||
# See https://apple.stackexchange.com/a/195963 for the implementation. | ||
## update_clt_script: | ||
## - system_profiler SPSoftwareDataType | ||
## - touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress | ||
## - |- | ||
## PROD=$(softwareupdate -l | grep "*.*Command Line" | tail -n 1 | awk -F"*" '{print $2}' | sed -e 's/^ *//' | sed 's/Label: //g' | tr -d '\n') | ||
## # For debugging | ||
## - softwareupdate -l && echo "PROD: $PROD" | ||
## - softwareupdate -i "$PROD" --verbose | ||
## - rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress | ||
## | ||
brew_valgrind_pre_script: | ||
# Retry a few times because this tends to fail randomly. | ||
- for i in {1..5}; do brew update && break || sleep 15; done | ||
- brew config | ||
- brew tap LouisBrunner/valgrind | ||
# Fetch valgrind source but don't build it yet. | ||
- brew fetch --HEAD LouisBrunner/valgrind/valgrind | ||
brew_valgrind_cache: | ||
# This is $(brew --cellar valgrind) but command substition does not work here. | ||
folder: /usr/local/Cellar/valgrind | ||
# Rebuild cache if ... | ||
fingerprint_script: | ||
# ... macOS version changes: | ||
- sw_vers | ||
# ... brew changes: | ||
- brew config | ||
# ... valgrind changes: | ||
- git -C "$(brew --cache)/valgrind--git" rev-parse HEAD | ||
populate_script: | ||
# If there's no hit in the cache, build and install valgrind. | ||
- brew install --HEAD LouisBrunner/valgrind/valgrind | ||
brew_valgrind_post_script: | ||
# If we have restored valgrind from the cache, tell brew to create symlink to the PATH. | ||
# If we haven't restored from cached (and just run brew install), this is a no-op. | ||
- brew link valgrind | ||
brew_script: | ||
- brew install automake libtool gcc@9 | ||
- brew install automake libtool gcc | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
<< : *CREDITS | ||
|
||
task: | ||
name: "s390x (big-endian): Linux (Debian stable, QEMU)" | ||
|
@@ -178,7 +154,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
<< : *MERGE_BASE | ||
test_script: | ||
# https://sourceware.org/bugzilla/show_bug.cgi?id=27008 | ||
|
@@ -197,7 +173,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
matrix: | ||
- env: {} | ||
- env: {EXPERIMENTAL: yes, ASM: arm} | ||
|
@@ -217,7 +193,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
|
@@ -234,24 +210,70 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
task: | ||
name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)" | ||
<< : *LINUX_CONTAINER | ||
env: | ||
WRAPPER_CMD: wine64-stable | ||
SECP256K1_TEST_ITERS: 16 | ||
HOST: x86_64-w64-mingw32 | ||
WRAPPER_CMD: wine | ||
WITH_VALGRIND: no | ||
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETESTS: no | ||
matrix: | ||
- name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)" | ||
env: | ||
HOST: x86_64-w64-mingw32 | ||
- name: "i686 (mingw32-w64): Windows (Debian stable, Wine)" | ||
env: | ||
HOST: i686-w64-mingw32 | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
task: | ||
<< : *LINUX_CONTAINER | ||
env: | ||
WRAPPER_CMD: wine | ||
WERROR_CFLAGS: -WX | ||
WITH_VALGRIND: no | ||
ECDH: yes | ||
RECOVERY: yes | ||
EXPERIMENTAL: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
# Use a MinGW-w64 host to tell ./configure we're building for Windows. | ||
# This will detect some MinGW-w64 tools but then make will need only | ||
# the MSVC tools CC, AR and NM as specified below. | ||
HOST: x86_64-w64-mingw32 | ||
CC: /opt/msvc/bin/x64/cl | ||
AR: /opt/msvc/bin/x64/lib | ||
NM: /opt/msvc/bin/x64/dumpbin -symbols -headers | ||
# Set non-essential options that affect the CLI messages here. | ||
# (They depend on the user's taste, so we don't want to set them automatically in configure.ac.) | ||
CFLAGS: -nologo -diagnostics:caret | ||
LDFLAGS: -Xlinker -Xlinker -Xlinker -nologo | ||
matrix: | ||
- name: "x86_64 (MSVC): Windows (Debian stable, Wine)" | ||
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct)" | ||
env: | ||
WIDEMUL: int128_struct | ||
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct with __(u)mulh)" | ||
env: | ||
WIDEMUL: int128_struct | ||
CPPFLAGS: -DSECP256K1_MSVC_MULH_TEST_OVERRIDE | ||
- name: "i686 (MSVC): Windows (Debian stable, Wine)" | ||
env: | ||
HOST: i686-w64-mingw32 | ||
CC: /opt/msvc/bin/x86/cl | ||
AR: /opt/msvc/bin/x86/lib | ||
NM: /opt/msvc/bin/x86/dumpbin -symbols -headers | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
|
@@ -264,7 +286,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
matrix: | ||
- name: "Valgrind (memcheck)" | ||
container: | ||
|
@@ -301,14 +323,40 @@ task: | |
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
# Memory sanitizers | ||
task: | ||
name: "C++ -fpermissive" | ||
<< : *LINUX_CONTAINER | ||
name: "MSan" | ||
env: | ||
# ./configure correctly errors out when given CC=g++. | ||
# We hack around this by passing CC=g++ only to make. | ||
CC: gcc | ||
MAKEFLAGS: -j4 CC=g++ CFLAGS=-fpermissive\ -g | ||
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETESTS: yes | ||
CC: clang | ||
SECP256K1_TEST_ITERS: 32 | ||
ASM: no | ||
WITH_VALGRIND: no | ||
container: | ||
memory: 2G | ||
matrix: | ||
- env: | ||
CFLAGS: "-fsanitize=memory -g" | ||
- env: | ||
ECMULTGENPRECISION: 2 | ||
ECMULTWINDOW: 2 | ||
CFLAGS: "-fsanitize=memory -g -O3" | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
task: | ||
name: "C++ -fpermissive (entire project)" | ||
<< : *LINUX_CONTAINER | ||
env: | ||
CC: g++ | ||
CFLAGS: -fpermissive -g | ||
CPPFLAGS: -DSECP256K1_CPLUSPLUS_TEST_OVERRIDE | ||
WERROR_CFLAGS: | ||
ECDH: yes | ||
RECOVERY: yes | ||
|
@@ -318,9 +366,44 @@ task: | |
- ./ci/cirrus.sh | ||
<< : *CAT_LOGS | ||
|
||
task: | ||
name: "C++ (public headers)" | ||
<< : *LINUX_CONTAINER | ||
test_script: | ||
- g++ -Werror include/*.h | ||
- clang -Werror -x c++-header include/*.h | ||
- /opt/msvc/bin/x64/cl.exe -c -WX -TP include/*.h | ||
|
||
task: | ||
name: "sage prover" | ||
<< : *LINUX_CONTAINER | ||
test_script: | ||
- cd sage | ||
- sage prove_group_implementations.sage | ||
|
||
task: | ||
name: "x86_64: Windows (VS 2022)" | ||
windows_container: | ||
image: cirrusci/windowsservercore:visualstudio2022 | ||
cpu: 4 | ||
memory: 3840MB | ||
env: | ||
PATH: '%CIRRUS_WORKING_DIR%\build\src\RelWithDebInfo;%PATH%' | ||
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"' | ||
# Ignore MSBuild warning MSB8029. | ||
# See: https://learn.microsoft.com/en-us/visualstudio/msbuild/errors/msb8029?view=vs-2022 | ||
IgnoreWarnIntDirInTempDetected: 'true' | ||
merge_script: | ||
- PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL pull/$env:CIRRUS_PR/merge; git reset --hard FETCH_HEAD; } | ||
configure_script: | ||
- '%x64_NATIVE_TOOLS%' | ||
- cmake -G "Visual Studio 17 2022" -A x64 -S . -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON | ||
build_script: | ||
- '%x64_NATIVE_TOOLS%' | ||
- cmake --build build --config RelWithDebInfo -- -property:UseMultiToolTask=true;CL_MPcount=5 | ||
check_script: | ||
- '%x64_NATIVE_TOOLS%' | ||
- ctest --test-dir build -j 5 | ||
- build\src\RelWithDebInfo\bench_ecmult.exe | ||
- build\src\RelWithDebInfo\bench_internal.exe | ||
- build\src\RelWithDebInfo\bench.exe |
Oops, something went wrong.