mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
901336eee7
705ce7ed8c Merge bitcoin-core/secp256k1#1129: ElligatorSwift + integrated x-only DH 0702ecb061 Merge bitcoin-core/secp256k1#1338: Drop no longer needed `#include "../include/secp256k1.h"` 90e360acc2 Add doc/ellswift.md with ElligatorSwift explanation 4f091847c2 Add ellswift testing to CI 1bcea8c57f Add benchmarks for ellswift module 2d1d41acf8 Add ctime tests for ellswift module df633cdeba Add _prefix and _bip324 ellswift_xdh hash functions 9695deb351 Add tests for ellswift module c47917bbd6 Add ellswift module implementing ElligatorSwift 79e5b2a8b8 Add functions to test if X coordinate is valid a597a5a9ce Add benchmark for key generation 30574f22ea Merge bitcoin-core/secp256k1#1349: Normalize ge produced from secp256k1_pubkey_load 45c5ca7675 Merge bitcoin-core/secp256k1#1350: scalar: introduce and use `secp256k1_{read,write}_be64` helpers f1652528be Normalize ge produced from secp256k1_pubkey_load 7067ee54b4 tests: add tests for `secp256k1_{read,write}_be64` 740528caad scalar: use newly introduced `secp256k1_{read,write}_be64` helpers (4x64 impl.) 67214f5f7d Merge bitcoin-core/secp256k1#1339: scalar: refactor: use `secp256k1_{read,write}_be32` helpers cb1a59275c Merge bitcoin-core/secp256k1#1341: docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub` f3644287b1 docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub` 887183e7de scalar: use `secp256k1_{read,write}_be32` helpers (4x64 impl.) 52b84238de scalar: use `secp256k1_{read,write}_be32` helpers (8x32 impl.) e449af6872 Drop no longer needed `#include "../include/secp256k1.h"` 60556c9f49 Merge bitcoin-core/secp256k1#1337: ci: Fix error D8037 in `cl.exe` (attempt 2) db29bf220c ci: Remove quirk that runs dummy command after wineserver c7db4942b3 ci: Fix error D8037 in `cl.exe` 7dae115861 Revert "ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe" bf29f8d0a6 Merge bitcoin-core/secp256k1#1334: fix input range comment for `secp256k1_fe_add_int` 605e07e365 fix input range comment for `secp256k1_fe_add_int` debf3e5c08 Merge bitcoin-core/secp256k1#1330: refactor: take use of `secp256k1_scalar_{zero,one}` constants d75dc59b58 Merge bitcoin-core/secp256k1#1333: test: Warn if both `VERIFY` and `COVERAGE` are defined ade5b36701 tests: add checks for scalar constants `secp256k1_scalar_{zero,one}` e83801f5db test: Warn if both `VERIFY` and `COVERAGE` are defined 654246c635 refactor: take use of `secp256k1_scalar_{zero,one}` constants 908e02d596 Merge bitcoin-core/secp256k1#1328: build: Bump MSVC warning level up to W3 1549db0ca5 build: Level up MSVC warnings 20a5da5fb1 Merge bitcoin-core/secp256k1#1310: Refine release process ad84603297 release process: clarify change log updates 6348bc7eee release process: fix process for maintenance release 79fa50b082 release process: mention targeted release schedule 165206789b release process: add sanity checks 09df0bfb23 Merge bitcoin-core/secp256k1#1327: ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe 27504d5c94 ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe d373a7215b Merge bitcoin-core/secp256k1#1316: Do not invoke fe_is_zero on failed set_b32_limit 6433175ffe Do not invoke fe_is_zero on failed set_b32_limit 5f7903c73c Merge bitcoin-core/secp256k1#1318: build: Enable -DVERIFY for precomputation binaries e9e4526a4e Merge bitcoin-core/secp256k1#1317: Make fe_cmov take max of magnitudes 5768b50229 build: Enable -DVERIFY for precomputation binaries 31b4bbee1e Make fe_cmov take max of magnitudes 83186db34a Merge bitcoin-core/secp256k1#1314: release cleanup: bump version after 0.3.2 95448ef2f8 release cleanup: bump version after 0.3.2 acf5c55ae6 Merge bitcoin-core/secp256k1#1312: release: Prepare for 0.3.2 d490ca2046 release: Prepare for 0.3.2 3e3d125b83 Merge bitcoin-core/secp256k1#1309: changelog: Catch up e8295d07ab Merge bitcoin-core/secp256k1#1311: Revert "Remove unused scratch space from API" 697e1ccf4a changelog: Catch up 3ad1027a40 Revert "Remove unused scratch space from API" 76b43f3443 changelog: Add entry for #1303 7d4f86d242 Merge bitcoin-core/secp256k1#1307: Mark more assembly outputs as early clobber b54a0672ef Merge bitcoin-core/secp256k1#1304: build: Rename arm to arm32 and check if it's really supported c6bb29b303 build: Rename `64bit` to `x86_64` 8c9ae37a5a Add release note 03246457a8 autotools: Add `SECP_ARM32_ASM_CHECK` macro ed4ba238e2 cmake: Add `check_arm32_assembly` function 350b4bd6e6 Mark stack variables as early clobber for technical correctness 0c729ba70d Bugfix: mark outputs as early clobber in scalar x86_64 asm 3353d3c753 Merge bitcoin-core/secp256k1#1207: Split fe_set_b32 into reducing and normalizing variants 5b32602295 Split fe_set_b32 into reducing and normalizing variants 006ddc1f42 Merge bitcoin-core/secp256k1#1306: build: Make tests work with external default callbacks 1907f0f166 build: Make tests work with external default callbacks fb3a806365 Merge bitcoin-core/secp256k1#1133: schnorrsig: Add test vectors for variable-length messages cd54ac7c1c schnorrsig: Improve docs of schnorrsig_sign_custom 28687b0312 schnorrsig: Add BIP340 varlen test vectors 97a98bed1e schnorrsig: Refactor test vector code to allow varlen messages ab5a917128 Merge bitcoin-core/secp256k1#1303: ct: Use more volatile 9eb6934f69 Merge bitcoin-core/secp256k1#1305: Remove unused scratch space from API 073d98a076 Merge bitcoin-core/secp256k1#1292: refactor: Make 64-bit shift explicit 17fa21733a ct: Be cautious and use volatile trick in more "conditional" paths 5fb336f9ce ct: Use volatile trick in scalar_cond_negate 712e7f8722 Remove unused scratch space from API 54d34b6c24 Merge bitcoin-core/secp256k1#1300: Avoid normalize conditional on VERIFY c63ec88ebf Merge bitcoin-core/secp256k1#1066: Abstract out and merge all the magnitude/normalized logic 7fc642fa25 Simplify secp256k1_fe_{impl_,}verify 4e176ad5b9 Abstract out verify logic for fe_is_square_var 4371f98346 Abstract out verify logic for fe_add_int 89e324c6b9 Abstract out verify logic for fe_half 283cd80ab4 Abstract out verify logic for fe_get_bounds d5aa2f0358 Abstract out verify logic for fe_inv{,_var} 3167646072 Abstract out verify logic for fe_from_storage 76d31e5047 Abstract out verify logic for fe_to_storage 1e6894bdd7 Abstract out verify logic for fe_cmov be82bd8e03 Improve comments/checks for fe_sqrt 6ab35082ef Abstract out verify logic for fe_sqr 4c25f6efbd Abstract out verify logic for fe_mul e179e651cb Abstract out verify logic for fe_add 7e7ad7ff57 Abstract out verify logic for fe_mul_int 65d82a3445 Abstract out verify logic for fe_negate 144670893e Abstract out verify logic for fe_get_b32 f7a7666aeb Abstract out verify logic for fe_set_b32 ce4d2093e8 Abstract out verify logic for fe_cmp_var 7d7d43c6dd Improve comments/check for fe_equal{,_var} c5e788d672 Abstract out verify logic for fe_is_odd d3f3fe8616 Abstract out verify logic for fe_is_zero c701d9a471 Abstract out verify logic for fe_clear 19a2bfeeea Abstract out verify logic for fe_set_int 864f9db491 Abstract out verify logic for fe_normalizes_to_zero{,_var} 6c31371120 Abstract out verify logic for fe_normalize_var e28b51f522 Abstract out verify logic for fe_normalize_weak b6b6f9cb97 Abstract out verify logic for fe_normalize 7fa5195559 Bugfix: correct SECP256K1_FE_CONST mag/norm fields e5cf4bf3ff build: Rename `arm` to `arm32` b29566c51b Merge magnitude/normalized fields, move/improve comments 97c63b9039 Avoid normalize conditional on VERIFY 341cc19726 Merge bitcoin-core/secp256k1#1299: Infinity handling: ecmult_const(infinity) works, and group verification bbc834467c Avoid secp256k1_ge_set_gej_zinv with uninitialized z 0a2e0b2ae4 Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY f20266722a Add invariant checking to group elements a18821d5b1 Always initialize output coordinates in secp256k1_ge_set_gej 3086cb90ac Expose secp256k1_fe_verify to other modules a0e696fd4d Make secp256k1_ecmult_const handle infinity 24c768ae09 Merge bitcoin-core/secp256k1#1301: Avoid using bench_verify_data as bench_sign_data; merge them 2e65f1fdbc Avoid using bench_verify_data as bench_sign_data; merge them 1cf15ebd94 Merge bitcoin-core/secp256k1#1296: docs: complete interface description for `secp256k1_schnorrsig_sign_custom` 149c41cee1 docs: complete interface description for `secp256k1_schnorrsig_sign_custom` f30c74866b Merge bitcoin-core/secp256k1#1270: cmake: Fix library ABI versioning d1e48e5474 refactor: Make 64-bit shift explicit b2e29e43d0 ci: Treat all compiler warnings as errors in "Windows (VS 2022)" task 3c81838856 Merge bitcoin-core/secp256k1#1289: cmake: Use full signature of `add_test()` command 755629bc03 cmake: Use full signature of `add_test()` command bef448f9af cmake: Fix library ABI versioning 4b0f711d46 Merge bitcoin-core/secp256k1#1277: autotools: Clean up after adding Wycheproof 222ecaf661 Merge bitcoin-core/secp256k1#1284: cmake: Some improvements using `PROJECT_IS_TOP_LEVEL` variable 71f746c057 cmake: Include `include` directory for subtree builds 024a409484 Merge bitcoin-core/secp256k1#1240: cmake: Improve and document compiler flag checks a8d059f76c cmake, doc: Document compiler flags 6ece1507cb cmake, refactor: Rename `try_add_compile_option` to `try_append_cflags` 19516ed3e9 cmake: Use `add_compile_options()` in `try_add_compile_option()` 4b84f4bf0f Merge bitcoin-core/secp256k1#1239: cmake: Bugfix and other improvements after bumping CMake up to 3.13 596b336ff6 Merge bitcoin-core/secp256k1#1234: cmake: Add dev-mode 6b7e5b717d Merge bitcoin-core/secp256k1#1275: build: Fix C4005 "macro redefinition" MSVC warnings in examples 1c89536718 Merge bitcoin-core/secp256k1#1286: tests: remove extra semicolon in macro c4062d6b5d debug: move helper for printing buffers into util.h 7e977b3c50 autotools: Take VPATH builds into account when generating testvectors 2418d3260a autotools: Create src/wycheproof dir before creating file in it 8764034ed5 autotools: Make all "pregenerated" targets .PHONY e1b9ce8811 autotools: Use same conventions for all pregenerated files 3858bad2c6 tests: remove extra semicolon in macro 1f33bb2b1c Merge bitcoin-core/secp256k1#1205: field: Improve docs +tests of secp256k1_fe_set_b32 162da73e9a tests: Add debug helper for printing buffers e9fd3dff76 field: Improve docs and tests of secp256k1_fe_set_b32 f6bef03c0a Merge bitcoin-core/secp256k1#1283: Get rid of secp256k1_fe_const_b 5431b9decd cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL` 5ec1333d4f Merge bitcoin-core/secp256k1#1285: bench: Make sys/time.h a system include 68b16a1662 bench: Make sys/time.h a system include 162608cc98 cmake: Emulate `PROJECT_IS_TOP_LEVEL` for CMake<3.21 69e1ec0331 Get rid of secp256k1_fe_const_b ce5ba9e24d gitignore: Add CMakeUserPresets.json 0a446a312f cmake: Add dev-mode CMake preset a6f4bcf6e1 Merge bitcoin-core/secp256k1#1231: Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h` a273d74b2e cmake: Improve version comparison 6a58b483ef cmake: Use `if(... IN_LIST ...)` command 2445808c02 cmake: Use dedicated `GENERATOR_IS_MULTI_CONFIG` property 9f8703ef17 cmake: Use dedicated `CMAKE_HOST_APPLE` variable 8c2017035a cmake: Use recommended `add_compile_definitions` command 04d4cc071a cmake: Add `DESCRIPTION` and `HOMEPAGE_URL` options to `project` command 8a8b6536ef cmake: Use `SameMinorVersion` compatibility mode 5b0444a3b5 Merge bitcoin-core/secp256k1#1263: cmake: Make installation optional 47ac3d63cd cmake: Make installation optional 2e035af251 Merge bitcoin-core/secp256k1#1273: build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS` 5be353d658 Merge bitcoin-core/secp256k1#1279: tests: lint wycheproof's python script 08f4b1632d autotools: Move code around to tidy Makefile 04bf3f6778 Merge bitcoin-core/secp256k1#1230: Build: allow static or shared but not both 9ce9984f32 Merge bitcoin-core/secp256k1#1265: Remove bits argument from secp256k1_wnaf_const{_xonly} 566faa17d3 Merge bitcoin-core/secp256k1#1267: doc: clarify process for patch releases ef49a11d29 build: allow static or shared but not both 35ada3b954 tests: lint wycheproof's python script 529b54d922 autotools: Move Wycheproof header from EXTRA_DIST to noinst_HEADERS dc0657c762 build: Fix C4005 "macro redefinition" MSVC warnings in examples 1ecb94ebe9 build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS` 1b6fb5593c doc: clarify process for patch releases a575339c02 Remove bits argument from secp256k1_wnaf_const (always 256) 36b0adf1b9 build: remove warning until it's reproducible 8e142ca410 Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h` 77445898a5 Remove `SECP256K1_INLINE` usage from examples ca92a35d01 field: Simplify code in secp256k1_fe_set_b32 d93f62e369 field: Verify field element even after secp256k1_fe_set_b32 fails git-subtree-dir: src/secp256k1 git-subtree-split: 705ce7ed8c1557a31e1bfc99be06082c5098d9f5
347 lines
14 KiB
YAML
347 lines
14 KiB
YAML
env: # Global defaults
|
|
CIRRUS_CLONE_DEPTH: 1
|
|
PACKAGE_MANAGER_INSTALL: "apt-get update && apt-get install -y"
|
|
MAKEJOBS: "-j10"
|
|
TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache
|
|
CI_FAILFAST_TEST_LEAVE_DANGLING: "1" # Cirrus CI does not care about dangling process and setting this variable avoids killing the CI script itself on error
|
|
CCACHE_SIZE: "200M"
|
|
CCACHE_DIR: "/tmp/ccache_dir"
|
|
CCACHE_NOHASHDIR: "1" # Debug info might contain a stale path if the build dir changes, but this is fine
|
|
|
|
cirrus_ephemeral_worker_template_env: &CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
DANGER_RUN_CI_ON_HOST: "1" # Containers will be discarded after the run, so there is no risk that the ci scripts modify the system
|
|
|
|
persistent_worker_template_env: &PERSISTENT_WORKER_TEMPLATE_ENV
|
|
RESTART_CI_DOCKER_BEFORE_RUN: "1"
|
|
|
|
persistent_worker_template: &PERSISTENT_WORKER_TEMPLATE
|
|
persistent_worker: {} # https://cirrus-ci.org/guide/persistent-workers/
|
|
|
|
# https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
|
|
filter_template: &FILTER_TEMPLATE
|
|
skip: $CIRRUS_REPO_FULL_NAME == "bitcoin-core/gui" && $CIRRUS_PR == "" # No need to run on the read-only mirror, unless it is a PR. https://cirrus-ci.org/guide/writing-tasks/#conditional-task-execution
|
|
stateful: false # https://cirrus-ci.org/guide/writing-tasks/#stateful-tasks
|
|
|
|
base_template: &BASE_TEMPLATE
|
|
<< : *FILTER_TEMPLATE
|
|
merge_base_script:
|
|
# Unconditionally install git (used in fingerprint_script).
|
|
- bash -c "$PACKAGE_MANAGER_INSTALL git"
|
|
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
|
|
- git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
|
|
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts
|
|
# Also, the merge commit is used to lint COMMIT_RANGE="HEAD~..HEAD"
|
|
|
|
main_template: &MAIN_TEMPLATE
|
|
timeout_in: 120m # https://cirrus-ci.org/faq/#instance-timed-out
|
|
ccache_cache:
|
|
folder: "/tmp/ccache_dir"
|
|
ci_script:
|
|
- ./ci/test_run_all.sh
|
|
|
|
container_depends_template: &CONTAINER_DEPENDS_TEMPLATE
|
|
<< : *BASE_TEMPLATE
|
|
container:
|
|
# https://cirrus-ci.org/faq/#are-there-any-limits
|
|
# Each project has 16 CPU in total, assign 2 to each container, so that 8 tasks run in parallel
|
|
cpu: 2
|
|
greedy: true
|
|
memory: 8G # Set to 8GB to avoid OOM. https://cirrus-ci.org/guide/linux/#linux-containers
|
|
dockerfile: ci/test_imagefile # https://cirrus-ci.org/guide/docker-builder-vm/#dockerfile-as-a-ci-environment
|
|
depends_built_cache:
|
|
folder: "depends/built"
|
|
fingerprint_script: echo $CIRRUS_TASK_NAME $(git rev-parse HEAD:depends)
|
|
|
|
global_task_template: &GLOBAL_TASK_TEMPLATE
|
|
<< : *CONTAINER_DEPENDS_TEMPLATE
|
|
<< : *MAIN_TEMPLATE
|
|
|
|
compute_credits_template: &CREDITS_TEMPLATE
|
|
# https://cirrus-ci.org/pricing/#compute-credits
|
|
# Only use credits for pull requests to the main repo
|
|
use_compute_credits: $CIRRUS_REPO_FULL_NAME == 'bitcoin/bitcoin' && $CIRRUS_PR != ""
|
|
|
|
task:
|
|
name: 'lint [bookworm]'
|
|
<< : *BASE_TEMPLATE
|
|
container:
|
|
image: debian:bookworm
|
|
cpu: 1
|
|
memory: 1G
|
|
# For faster CI feedback, immediately schedule the linters
|
|
<< : *CREDITS_TEMPLATE
|
|
python_cache:
|
|
folder: "/tmp/python"
|
|
fingerprint_script: cat .python-version /etc/os-release
|
|
unshallow_script:
|
|
- git fetch --unshallow --no-tags
|
|
lint_script:
|
|
- ./ci/lint_run_all.sh
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: 'tidy [lunar]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
cpu: 2
|
|
memory: 5G
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:lunar
|
|
FILE_ENV: "./ci/test/00_setup_env_native_tidy.sh"
|
|
# For faster CI feedback, immediately schedule the linters
|
|
<< : *CREDITS_TEMPLATE
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: "Win64 native [vs2022]"
|
|
<< : *FILTER_TEMPLATE
|
|
windows_container:
|
|
cpu: 6
|
|
memory: 12G
|
|
image: cirrusci/windowsservercore:visualstudio2022
|
|
timeout_in: 120m
|
|
env:
|
|
PATH: 'C:\jom;C:\Python39;C:\Python39\Scripts;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin;%PATH%'
|
|
PYTHONUTF8: 1
|
|
CI_VCPKG_TAG: '2023.01.09'
|
|
VCPKG_DOWNLOADS: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\downloads'
|
|
VCPKG_DEFAULT_BINARY_CACHE: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\archives'
|
|
CCACHE_DIR: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
|
|
WRAPPED_CL: 'C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\ci\test\wrapped-cl.bat'
|
|
QT_DOWNLOAD_URL: 'https://download.qt.io/official_releases/qt/5.15/5.15.5/single/qt-everywhere-opensource-src-5.15.5.zip'
|
|
QT_LOCAL_PATH: 'C:\qt-everywhere-opensource-src-5.15.5.zip'
|
|
QT_SOURCE_DIR: 'C:\qt-everywhere-src-5.15.5'
|
|
QTBASEDIR: 'C:\Qt_static'
|
|
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"'
|
|
QT_CONFIGURE_COMMAND: '..\configure -release -silent -opensource -confirm-license -opengl desktop -static -static-runtime -mp -qt-zlib -qt-pcre -qt-libpng -nomake examples -nomake tests -nomake tools -no-angle -no-dbus -no-gif -no-gtk -no-ico -no-icu -no-libjpeg -no-libudev -no-sql-sqlite -no-sql-odbc -no-sqlite -no-vulkan -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip doc -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtlottie -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquick3d -skip qtquickcontrols -skip qtquickcontrols2 -skip qtquicktimeline -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsvg -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtx11extras -skip qtxmlpatterns -no-openssl -no-feature-bearermanagement -no-feature-printdialog -no-feature-printer -no-feature-printpreviewdialog -no-feature-printpreviewwidget -no-feature-sql -no-feature-sqlmodel -no-feature-textbrowser -no-feature-textmarkdownwriter -no-feature-textodfwriter -no-feature-xml'
|
|
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; }
|
|
msvc_qt_built_cache:
|
|
folder: "%QTBASEDIR%"
|
|
reupload_on_changes: false
|
|
fingerprint_script:
|
|
- echo %QT_DOWNLOAD_URL% %QT_CONFIGURE_COMMAND%
|
|
- msbuild -version
|
|
populate_script:
|
|
- curl -L -o C:\jom.zip http://download.qt.io/official_releases/jom/jom.zip
|
|
- mkdir C:\jom
|
|
- tar -xf C:\jom.zip -C C:\jom
|
|
- curl -L -o %QT_LOCAL_PATH% %QT_DOWNLOAD_URL%
|
|
- tar -xf %QT_LOCAL_PATH% -C C:\
|
|
- '%x64_NATIVE_TOOLS%'
|
|
- cd %QT_SOURCE_DIR%
|
|
- mkdir build
|
|
- cd build
|
|
- '%QT_CONFIGURE_COMMAND% -prefix %QTBASEDIR%'
|
|
- jom
|
|
- jom install
|
|
vcpkg_tools_cache:
|
|
folder: '%VCPKG_DOWNLOADS%\tools'
|
|
reupload_on_changes: false
|
|
fingerprint_script:
|
|
- echo %CI_VCPKG_TAG%
|
|
- msbuild -version
|
|
vcpkg_binary_cache:
|
|
folder: '%VCPKG_DEFAULT_BINARY_CACHE%'
|
|
reupload_on_changes: true
|
|
fingerprint_script:
|
|
- echo %CI_VCPKG_TAG%
|
|
- type build_msvc\vcpkg.json
|
|
- msbuild -version
|
|
populate_script:
|
|
- mkdir %VCPKG_DEFAULT_BINARY_CACHE%
|
|
ccache_cache:
|
|
folder: '%CCACHE_DIR%'
|
|
install_tools_script:
|
|
- choco install --yes --no-progress ccache --version=4.7.4
|
|
- choco install --yes --no-progress python3 --version=3.9.6
|
|
- pip install zmq
|
|
- ccache --version
|
|
- python -VV
|
|
install_vcpkg_script:
|
|
- cd ..
|
|
- git clone --quiet https://github.com/microsoft/vcpkg.git
|
|
- cd vcpkg
|
|
- git -c advice.detachedHead=false checkout %CI_VCPKG_TAG%
|
|
- .\bootstrap-vcpkg -disableMetrics
|
|
- echo set(VCPKG_BUILD_TYPE release) >> triplets\x64-windows-static.cmake
|
|
- .\vcpkg integrate install
|
|
- .\vcpkg version
|
|
build_script:
|
|
- '%x64_NATIVE_TOOLS%'
|
|
- cd %CIRRUS_WORKING_DIR%
|
|
- ccache --zero-stats --max-size=%CCACHE_SIZE%
|
|
- python build_msvc\msvc-autogen.py
|
|
- msbuild build_msvc\bitcoin.sln -property:CLToolExe=%WRAPPED_CL%;UseMultiToolTask=true;Configuration=Release -maxCpuCount -verbosity:minimal -noLogo
|
|
- ccache --show-stats
|
|
check_script:
|
|
- src\test_bitcoin.exe -l test_suite
|
|
- src\bench_bitcoin.exe --sanity-check
|
|
- python test\util\test_runner.py
|
|
- python test\util\rpcauth-test.py
|
|
functional_tests_script:
|
|
# Increase the dynamic port range to the maximum allowed value to mitigate "OSError: [WinError 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted".
|
|
# See: https://learn.microsoft.com/en-us/biztalk/technical-guides/settings-that-can-be-modified-to-improve-network-performance
|
|
- netsh int ipv4 set dynamicport tcp start=1025 num=64511
|
|
- netsh int ipv6 set dynamicport tcp start=1025 num=64511
|
|
# Exclude feature_dbcrash for now due to timeout
|
|
- python test\functional\test_runner.py --nocleanup --ci --quiet --combinedlogslen=99999999 --jobs=6 --timeout-factor=8 --extended --exclude feature_dbcrash
|
|
|
|
task:
|
|
name: 'ARM [unit tests, no functional tests] [bullseye]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: debian:bullseye
|
|
FILE_ENV: "./ci/test/00_setup_env_arm.sh"
|
|
<< : *CREDITS_TEMPLATE
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: 'Win64 [unit tests, no gui tests, no boost::process, no functional tests] [jammy]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:jammy
|
|
FILE_ENV: "./ci/test/00_setup_env_win64.sh"
|
|
<< : *CREDITS_TEMPLATE
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: '32-bit + dash [gui] [CentOS 9]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: quay.io/centos/centos:stream9
|
|
FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh"
|
|
# For faster CI feedback, immediately schedule one task that runs all tests
|
|
<< : *CREDITS_TEMPLATE
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
PACKAGE_MANAGER_INSTALL: "yum install -y"
|
|
|
|
task:
|
|
name: '[previous releases, qt5 dev package and depends packages, DEBUG] [focal]'
|
|
previous_releases_cache:
|
|
folder: "releases"
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
<< : *PERSISTENT_WORKER_TEMPLATE
|
|
env:
|
|
<< : *PERSISTENT_WORKER_TEMPLATE_ENV
|
|
FILE_ENV: "./ci/test/00_setup_env_native_qt5.sh"
|
|
|
|
task:
|
|
name: '[TSan, depends, gui] [lunar]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
cpu: 4
|
|
memory: 16G # The default memory is too small, so double everything
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:lunar
|
|
FILE_ENV: "./ci/test/00_setup_env_native_tsan.sh"
|
|
<< : *CREDITS_TEMPLATE
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: '[MSan, depends] [jammy]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:jammy
|
|
FILE_ENV: "./ci/test/00_setup_env_native_msan.sh"
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
MAKEJOBS: "-j4" # Avoid excessive memory use due to MSan
|
|
|
|
task:
|
|
name: '[ASan + LSan + UBSan + integer, no depends, USDT] [lunar]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
# We can't use a 'container' for the USDT interface tests as the CirrusCI
|
|
# containers don't have privileges to hook into bitcoind. CirrusCI uses
|
|
# Google Compute Engine instances: https://cirrus-ci.org/guide/custom-vms/
|
|
# Images can be found here: https://cloud.google.com/compute/docs/images/os-details
|
|
compute_engine_instance:
|
|
image_project: ubuntu-os-cloud
|
|
image: family/ubuntu-2304-amd64 # https://cirrus-ci.org/guide/custom-vms/#custom-compute-engine-vms
|
|
cpu: 4
|
|
disk: 100
|
|
memory: 12G
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
HOME: /root/ # Only needed for compute_engine_instance
|
|
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"
|
|
MAKEJOBS: "-j4" # Avoid excessive memory use
|
|
|
|
task:
|
|
name: '[fuzzer,address,undefined,integer, no depends] [lunar]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
cpu: 4 # Increase CPU and memory to avoid timeout
|
|
memory: 16G
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:lunar
|
|
FILE_ENV: "./ci/test/00_setup_env_native_fuzz.sh"
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: '[multiprocess, i686, DEBUG] [focal]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
cpu: 4
|
|
memory: 16G # The default memory is too small, so double everything
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:focal
|
|
FILE_ENV: "./ci/test/00_setup_env_i686_multiprocess.sh"
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: '[no wallet, libbitcoinkernel] [focal]'
|
|
<< : *GLOBAL_TASK_TEMPLATE
|
|
container:
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:focal
|
|
FILE_ENV: "./ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh"
|
|
<< : *CREDITS_TEMPLATE
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: 'macOS 10.15 [gui, no tests] [jammy]'
|
|
<< : *CONTAINER_DEPENDS_TEMPLATE
|
|
container:
|
|
docker_arguments:
|
|
CI_IMAGE_NAME_TAG: ubuntu:jammy
|
|
FILE_ENV: "./ci/test/00_setup_env_mac.sh"
|
|
<< : *CREDITS_TEMPLATE
|
|
macos_sdk_cache:
|
|
folder: "depends/SDKs/$MACOS_SDK"
|
|
fingerprint_key: "$MACOS_SDK"
|
|
<< : *MAIN_TEMPLATE
|
|
env:
|
|
MACOS_SDK: "Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
|
|
task:
|
|
name: 'macOS 13 native arm64 [gui, sqlite only] [no depends]'
|
|
macos_instance:
|
|
# Use latest image, but hardcode version to avoid silent upgrades (and breaks)
|
|
image: ghcr.io/cirruslabs/macos-ventura-xcode:14.3.1 # https://cirrus-ci.org/guide/macOS
|
|
<< : *BASE_TEMPLATE
|
|
check_clang_script:
|
|
- clang --version
|
|
brew_install_script:
|
|
- brew install boost libevent qt@5 miniupnpc libnatpmp ccache zeromq qrencode libtool automake gnu-getopt
|
|
<< : *MAIN_TEMPLATE
|
|
env:
|
|
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
|
CI_USE_APT_INSTALL: "no"
|
|
PACKAGE_MANAGER_INSTALL: "echo" # Nothing to do
|
|
FILE_ENV: "./ci/test/00_setup_env_mac_native_arm64.sh"
|