Commit graph

54 commits

Author SHA1 Message Date
Tom Trevethan
713da86406 add linter check to CI 2026-07-07 15:03:16 +01:00
Tom Trevethan
bd2dbdcceb Fix: linter errors 2026-07-06 01:42:43 +01:00
Tom Trevethan
13398037b6
set Wno-error for simplicity keep warning but dont error on it
fuzz test fixes

set -DPRODUCTION for simplicity in fuzz tests

set UNDEBUG for simplicity in fuzz tests

update wallet fuzz tests

update test script

fix msvc conversion issues

more msvc vector conversion fixes and substitution of boost libs

fix more hexstr calls

fix hexstr calls in init.cpp

default CMAKE_GENERATOR to Unix Makefiles

more span fixes

specify build bin directory

fix executable locations

fix fuzz tests for c11 and functional test fixes

fix fuzz test executable path

specify legacy wallet for elements functional tests

remove assertion for static initialization order issue

use elements fuzz corpus

print debug log on failure

use heap for blind and asset_blind

test: avoid disk space warning for non-regtest

feature_config_args.py incorrectly assumed that its testnet4 node
would not log a disk space warning.

0683b8ebf3 increased m_assumed_blockchain_size
on testnet4 from 1 to 11 GiB which triggers this bug on more
systems, e.g. a RAM disk.

Prevent the warning by setting -prune for these nodes.

Fix the same issue in feature_signet.py

Github-Pull: #32057
Rebased-From: 20fe41e9e83d510fd467f5a999d55a614b16ef89
2026-06-17 14:15:49 +01:00
Tom Trevethan
17c1e0dc97
Merge remote-tracking branch 'myfork/merged-master' into merged-master-ci 2026-06-01 16:41:54 +01:00
Tom Trevethan
0916a2acfb
rename test_bitcoin to test_elements 2026-05-26 14:15:17 +01:00
Tom Trevethan
dc51ca8e4d
ci fixes: wip 2026-05-04 16:45:31 +01:00
ivanlele
78f938415e
Merge f0ac24846f into merged_master (Bitcoin PR bitcoin/bitcoin#31928) 2026-04-16 12:51:34 +00:00
ikripaka
018fa782c1
Merge eb243ff06c into merged_master (Bitcoin PR bitcoin/bitcoin#31593) 2026-04-10 09:51:44 +00:00
Tom Trevethan
f9d3de15a2 Merge 78f1bff709 into merged_master (Bitcoin PR bitcoin/bitcoin#31477) 2026-04-09 01:13:28 +01:00
ivanlele
20b716315d
Merge 5acd5e7f87 into merged_master (Bitcoin PR bitcoin/bitcoin#31257) 2026-04-02 15:25:11 +00:00
ivanlele
0b7945f2b0
Merge 2c90f8e08c into merged_master (Bitcoin PR bitcoin/bitcoin#31232) 2026-04-02 13:30:20 +00:00
ivanlele
9124c0ba02
Merge 03696bb1bd into merged_master (Bitcoin PR bitcoin/bitcoin#31045) 2026-03-30 09:50:42 +00:00
ivanlele
89aa577ada
Merge 3fecf36c7b into merged_master (Bitcoin PR bitcoin/bitcoin#31056) 2026-03-27 14:59:08 +00:00
ivanlele
5a8fbe17ba
Merge 62e4516722 into merged_master (Bitcoin PR bitcoin/bitcoin#31026) 2026-03-27 14:31:47 +00:00
ivanlele
33e8126e10
Merge 9ba56884f6 into merged_master (Bitcoin PR bitcoin/bitcoin#30869) 2026-03-26 15:38:02 +00:00
ivanlele
78ac6e646e
Merge f0eb63399a into merged_master (Bitcoin PR bitcoin/bitcoin#30841) 2026-03-25 14:35:37 +00:00
ivanlele
c42b12642f
Merge 0e5cd608da into merged_master (Bitcoin PR bitcoin/bitcoin#30415) 2026-03-25 10:24:21 +00:00
ivanlele
f06b686c8c
Merge 93e48240bf into merged_master (Bitcoin PR bitcoin/bitcoin#30244) 2026-03-25 09:02:54 +00:00
ivanlele
c9b157ccbf
Merge ab317ad2ef into merged_master (Bitcoin PR bitcoin/bitcoin#30804) 2026-03-24 14:35:57 +00:00
ivanlele
26176c3cd4
Migrate elements build to Cmake 2026-03-24 11:11:11 +00:00
ikripaka
e667e1c50b
Merge 338bc2cd26 into merged_master (Bitcoin PR bitcoin/bitcoin#30454) 2026-03-20 13:12:00 +00:00
Tom Trevethan
3252ef36d8 Merge c81c6bf65b into merged_master (Bitcoin PR bitcoin/bitcoin#30665) 2026-03-13 14:16:19 +00:00
ivanlele
89f5f6b6f0
Merge f61ede574c into merged_master (Bitcoin PR bitcoin/bitcoin#30049) 2026-02-24 13:01:48 +00:00
Tom Trevethan
d78589ec2d Merge b8b0d64765 into merged_master (Bitcoin PR bitcoin/bitcoin#29740) 2026-02-17 00:09:22 +00:00
ivanlele
546a9f3586
Merge 8e95a9cd7a into merged_master (Bitcoin PR bitcoin/bitcoin#29094) 2026-02-16 15:20:18 +00:00
Byron Hambly
9434c1cfaf
Merge bd1c66f3a8 into merged_master (Bitcoin PR bitcoin/bitcoin#29461) 2025-12-04 09:51:09 +02:00
Byron Hambly
bebe593731
Merge d80318d211 into merged_master (Bitcoin PR bitcoin/bitcoin#28954) 2025-11-11 11:26:03 +02:00
Hennadii Stepanov
d82dc10415
ci: Fix filtering out Qt generated files from compile_commands.json 2025-02-21 13:27:18 +00:00
MarcoFalke
faaabfaea7
ci: Bump centos stream 10 2025-01-17 15:34:11 +01:00
MarcoFalke
fa47baa03b
ci: Bump centos gcc 2024-12-12 09:39:17 +01:00
furszy
36a22e5683
ci: make ctest stop on failure
Wastes less resources and notifies the developer faster when
a failure occurs.
2024-11-08 13:06:51 -05:00
fanquake
5161c2618c
ci: add second_deadlock_stack=1 to TSAN options
This is mentioned in the developer notes, but isn't present in
`TSAN_OPTIONS`, resulting in:
```bash
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=60508)
  Cycle in lock order graph: M0 (0xffff98e02208) => M1 (0xffff98e0cbe8) => M2 (0xffff98e0cd98) => M0
<snip>

  Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message
```

Add it, for (potentially) more informative output, when failures
occur. Checked that adding does output more information.
2024-11-06 11:03:41 +00:00
merge-script
03696bb1bd
Merge bitcoin/bitcoin#31045: ci: Add missing -DWERROR=ON to test-each-commit
fa1cffacae ci: Install missing nproc in macos task (MarcoFalke)
faf7a2bccc ci: Add missing -DWERROR=ON to test-each-commit (MarcoFalke)

Pull request description:

  Found by in Sjors in https://github.com/bitcoin/bitcoin/pull/27260#discussion_r1785860610 (Thanks!)

  Also, includes an unrelated commit to simplify the ci scripts, by assuming nproc exists on macos as well. (Having more than one commit is also required to trigger the `test-each-commit` task)

ACKs for top commit:
  theuni:
    utACK fa1cffacae.

Tree-SHA512: 881df6964da31c3f7161b763bdf74029743567272c7a4db24ded10909a8cedad39b494a9f486f0b059bbeb0beb190dcd91369650d014e1fc3b5f7ae07cd54771
2024-10-08 15:36:30 +01:00
MarcoFalke
fa5ebc9920
ci: Double ctest timeout 2024-10-08 10:39:05 +02:00
MarcoFalke
fa1cffacae
ci: Install missing nproc in macos task
This avoids special-casing macos
2024-10-07 12:28:23 +02:00
fanquake
56aad83307
ci: set a ctest timeout of 1200 (20 minutes)
This should be long enough (with headroom) for our longest running tests,
which even under MSAN, TSAN, Valgrind, etc max out at about 800s.

i.e under Valgrind I see the longer runtimes as:
```bash
135/136 Test   #8: bench_sanity_check_high_priority .....   Passed  371.19 sec
136/136 Test #122: coinselector_tests ...................   Passed  343.39 sec
```

In the CI `tests` under TSAN:
```bash
tests ................................   Passed  795.20 sec
```
and MSAN:
```bash
tests ................................   Passed  658.48 sec
```

This will also prevent the current issue we are seeing of `ctest`
running until it reaches the CI timeout, see #30969.

However, we still need to figure out what underlying issue is causing
the tests to (sometimes) run for so long, but in the mean time, this
will stop `ctest` wasting our CI CPU.
2024-10-07 11:01:34 +01:00
MarcoFalke
fa7ca182a9
ci: Print inner env 2024-09-12 12:28:23 +02:00
Hennadii Stepanov
c45186ca54
ci: Switch from make to cmake --build 2024-09-07 14:38:16 +01:00
Hennadii Stepanov
6e5f33af58
ci: Handle log files regardless of CMake's version 2024-09-07 14:38:14 +01:00
merge-script
0e5cd608da
Merge bitcoin/bitcoin#30415: contrib: fix check-deps.sh to check for weak symbols
3ae35b427f ci: run check-deps.sh as part of clang-tidy job (Ryan Ofsky)
0aaa1298a0 contrib: fix check-deps.sh when libraries do not import symbols (Ryan Ofsky)
3c99f5a38a contrib: fix check-deps.sh to check for weak symbols (Ryan Ofsky)
86c80e9cf2 contrib: make check-deps.sh script work with cmake (Ryan Ofsky)

Pull request description:

  Fix check-deps.sh to check for weak symbols so it can detect when an exported template function like is used from another library.

  Also update the script to work with cmake and configure it to run as part of CI.

  Problem was reported by hebasto in https://github.com/bitcoin/bitcoin/pull/29015#issuecomment-2209258843

ACKs for top commit:
  TheCharlatan:
    Re-ACK 3ae35b427f
  hebasto:
    ACK 3ae35b427f, I have reviewed the code and it looks OK. Also I've tested it locally.

Tree-SHA512: c3b58175450b675e6e848549b81bcfe42930ea9bcd693063867ce3f0ac3999c98cd2c3e961f163ff06641e8288f3a4e81530936a296a83d45d33364f27489521
2024-09-06 10:51:34 +01:00
Ava Chow
93e48240bf
Merge bitcoin/bitcoin#30244: ci: parse TEST_RUNNER_EXTRA into an array
8131bf7483 ci: parse TEST_RUNNER_EXTRA into an array (Max Edwards)
c4762b0aa0 test: allow excluding func test by name and arg (Max Edwards)

Pull request description:

  While working on CI I wanted to disable some functional tests so I used the `TEST_RUNNER_EXTRA` var. The problem I had was tests that have flags such as `rpc_bind.py --ipv6` must be passed in quotes otherwise the `--ipv6` portion will be considered an argument to `test_runner.py` rather than a test name.

  This change allows proper parsing of quotes and complex values such as:

  ```shell
  TEST_RUNNER_EXTRA='--exclude "rpc_bind.py --ipv6,feature_proxy.py"'
  ```

  Update:

  While testing this it was noticed that `test_runner.py` when given `--exclude "rpc_bind.py --ipv6"` will exclude all `rpc_bind.py` tests so this PR has been updated to include a change to the test runner to only exclude the specific test if you pass an arg or exclude all tests of that name if you do not pass an arg. `--exclude rpc_bind.py` will exclude all three variants and `--exclude rpc_bind --ipv6` will only exclude the IPV6 variant.

ACKs for top commit:
  maflcko:
    ACK 8131bf7483
  achow101:
    ACK 8131bf7483
  hebasto:
    ACK 8131bf7483, tested on Ubuntu 23.10 and Windows 11.

Tree-SHA512: 82b73f12d627f533d8e5be4a518d455ef4427a755bbe03ccd11d0bb70c7ff3cee76220b0264fcfb236661c4cf5deba034cbfc2372b96d5861f3436c21eae8264
2024-09-04 15:55:42 -04:00
Ryan Ofsky
3ae35b427f ci: run check-deps.sh as part of clang-tidy job 2024-09-04 15:30:58 -04:00
MarcoFalke
8888beea8d
scripted-diff: fuzz: Rename fuzz_seed_corpus to fuzz_corpora
-BEGIN VERIFY SCRIPT-
 ren() { sed -i "s:\<$1\>:$2:g" $( git grep -l "$1" ) ; }
 ren fuzz_seed_corpus     fuzz_corpora
 ren FUZZ_SEED_CORPUS_DIR FUZZ_CORPORA_DIR
-END VERIFY SCRIPT-
2024-09-03 20:40:35 +02:00
Hennadii Stepanov
faa382ae76
ci, doc: Drop reference to src/.bear-tidy-config 2024-08-30 21:31:40 +01:00
merge-script
338bc2cd26
Merge bitcoin/bitcoin#30454: build: Introduce CMake-based build system
41051290ab cmake: Ignore build subdirectories within source directory (Hennadii Stepanov)
6ce50fd9d0 doc: Update for CMake-based build system (Hennadii Stepanov)
9730288a0c ci: Migrate CI scripts to CMake (Hennadii Stepanov)
c360837ca5 cmake, lint: Adjust `lint_includes_build_config` (Hennadii Stepanov)
3885441ee0 cmake: Add presets for native Windows builds (Hennadii Stepanov)
7681746b20 cmake: Add vcpkg manifest file (Hennadii Stepanov)
8b6f1c4353 cmake: Add `Coverage` and `CoverageFuzz` scripts (Hennadii Stepanov)
65bdbc1ff2 cmake: Add `docs` build target (Hennadii Stepanov)
fb75ebbc33 cmake: Add compiler diagnostic flags (Hennadii Stepanov)
e821f0a37a cmake: Migrate Guix build scripts to CMake (Hennadii Stepanov)
747adb6ffe cmake: Add `Maintenance` module (Hennadii Stepanov)
1f60b30df0 cmake: Add `APPEND_{CPP,C,CXX,LD}FLAGS` cache variables (Hennadii Stepanov)
2b43c45b13 cmake: Add `AddWindowsResources` module (Hennadii Stepanov)
973a3b0c5d cmake: Implement `install` build target (Hennadii Stepanov)
84ac35cfd4 cmake: Add cross-compiling support (Hennadii Stepanov)
0d01c228a7 build: Generate `toolchain.cmake` in depends (Hennadii Stepanov)
91a799247d depends: Add host-specific `cmake_system_version` variables (Hennadii Stepanov)
9b31209b4c depends: Rename `cmake_system` -> `cmake_system_name` (Hennadii Stepanov)
4a5208a81d Revert "build, qt: Do not install *.prl files" (Hennadii Stepanov)
6522af62af depends: Amend handling flags environment variables (Hennadii Stepanov)
90cec4d251 cmake: Add `MULTIPROCESS` option (Hennadii Stepanov)
bb1a450dcb cmake: Build `bitcoin-chainstate` executable (Hennadii Stepanov)
aed38ea58c cmake: Build `bitcoinkernel` library (Hennadii Stepanov)
975d67369b cmake: Build `test_bitcoin-qt` executable (Hennadii Stepanov)
10fcc668a3 cmake: Add `WITH_DBUS` option (Hennadii Stepanov)
5bb5a4bc75 cmake: Add `libqrencode` optional package support (Hennadii Stepanov)
57a6e2ef4a cmake: Build `bitcoin-qt` executable (Hennadii Stepanov)
30f642952c cmake: Add `WERROR` option (Hennadii Stepanov)
c98d4a4c34 cmake: Add `REDUCE_EXPORTS` option (Hennadii Stepanov)
a01cb6e63f cmake: Add `HARDENING` option (Hennadii Stepanov)
a8a2e364ac cmake: Add Python-based tests (Hennadii Stepanov)
3d85379570 cmake: Add fuzzing options (Hennadii Stepanov)
908530e312 cmake: Add `SANITIZERS` option (Hennadii Stepanov)
8bb0e85631 cmake: Build `bench_bitcoin` executable (Hennadii Stepanov)
801735163a cmake: Add external signer support (Hennadii Stepanov)
353e0c9e96 cmake: Add `systemtap-sdt` optional package support (Hennadii Stepanov)
d2fda82b49 cmake: Add `libzmq` optional package support (Hennadii Stepanov)
ae7b39a0e1 cmake: Add `libminiupnpc` optional package support (Hennadii Stepanov)
6480e1dcdb cmake: Add `libnatpmp` optional package support (Hennadii Stepanov)
e73e9304a1 cmake: Build `bitcoin-util` executable (Hennadii Stepanov)
027c6d7caa cmake: Build `bitcoin-tx` executable (Hennadii Stepanov)
d10c5c34c3 cmake: Add wallet functionality (Hennadii Stepanov)
ab2e99b0d9 cmake: Create test suite for `ctest` (Hennadii Stepanov)
959370bd76 cmake: Build `test_bitcoin` executable (Hennadii Stepanov)
b27bf9700d cmake: Build `bitcoin-cli` executable (Hennadii Stepanov)
a9813df826 cmake: Build `bitcoind` executable (Hennadii Stepanov)
97829ce2d5 cmake: Add `FindLibevent` module (Hennadii Stepanov)
3118e40c61 cmake: Build `bitcoin_consensus` library (Hennadii Stepanov)
809a2f1929 cmake: Build `bitcoin_util` static library (Hennadii Stepanov)
0a9a521a70 cmake: Build `bitcoin_crypto` library (Hennadii Stepanov)
958971f476 cmake: Build `univalue` static library (Hennadii Stepanov)
752747fda8 cmake: Generate `obj/build.h` header (Hennadii Stepanov)
1f0a78edf3 cmake: Build `minisketch` static library (Hennadii Stepanov)
12bfbc8154 cmake: Build `leveldb` static library (Hennadii Stepanov)
51985c5304 cmake: Build `crc32c` static library (Hennadii Stepanov)
db7a198f29 cmake: Build `secp256k1` subtree (Hennadii Stepanov)
dbb7ed14e8 cmake: Add `ccache` support (Hennadii Stepanov)
cedfdf6c72 cmake: Redefine/adjust per-configuration flags (Hennadii Stepanov)
b6b5e732c8 cmake: Add global compiler and linker flags (Hennadii Stepanov)
f98327931b cmake: Add `TryAppendLinkerFlag` module (Hennadii Stepanov)
4a0af29697 cmake: Add `TryAppendCXXFlags` module (Hennadii Stepanov)
35cffc497d cmake: Add POSIX threads support (Hennadii Stepanov)
fd72d00ffe cmake: Add position independent code support (Hennadii Stepanov)
07069e2bb0 cmake: Add introspection module (Hennadii Stepanov)
27d687fc1f cmake: Add `config/bitcoin-config.h` support (Hennadii Stepanov)
fe5cdace5f cmake: Print compiler and linker flags in summary (Hennadii Stepanov)
70683884c5 cmake: Introduce interface libraries to encapsulate common flags (Hennadii Stepanov)
a2317e27b7 cmake: Add root `CMakeLists.txt` file (Hennadii Stepanov)

Pull request description:

  This PR introduces a new CMake-based build system, which is a drop-in replacement for the current Autotools-based build system.

  ML announcement: https://groups.google.com/g/bitcoindev/c/hgKkfQWzrTo

  As discussed during the recent CoreDev meetup in April, the switch from Autotools to CMake is intended to happen as soon as possible after branching 28.x off, which means that 29.0 will be built using CMake.

  This PR branch is essentially the [staging branch](https://github.com/hebasto/bitcoin/tree/cmake-staging), with every change reviewed and tested by a group of contributors, including (in alphabetical order):
  - [**achow101**](https://github.com/achow101)
  - [**fanquake**](https://github.com/fanquake)
  - [**maflcko**](https://github.com/maflcko)
  - [**m3dwards**](https://github.com/m3dwards)
  - [**pablomartin4btc**](https://github.com/pablomartin4btc)
  - [**real-or-random**](https://github.com/real-or-random)
  - [**ryanofsky**](https://github.com/ryanofsky)
  - [**sipsorcery**](https://github.com/sipsorcery)
  - [**TheCharlatan**](https://github.com/TheCharlatan)
  - [**theStack**](https://github.com/theStack)
  - [**theuni**](https://github.com/theuni)
  - [**vasild**](https://github.com/vasild)

  Reviewing in a separate staging repo was suggested in https://github.com/bitcoin/bitcoin/pull/27060#issuecomment-1431798320.

  The accompanying changes to the OSS-Fuzz project are available in https://github.com/hebasto/oss-fuzz/pull/8.

  Please refer to the [build options parity table](https://gist.github.com/hebasto/2ef97d3a726bfce08ded9df07f7dab5e). The "auto" value is no longer available; non-default values must be specified explicitly. Additionally, the new default values have been chosen to suit the everyday build experience for the majority of developers.

  System requirements for using the CMake-based build system:
  - CMake >= 3.22 (if not available in your system's repository, it can be downloaded from https://cmake.org/download/)
  - a build tool of your choice:
  - any Make (GNU Make is no longer a requirement); GNU Make is still required to build depends
  - Ninja (https://ninja-build.org/)
  - MSBuild
  - Xcode

  A note for Windows users: The default installation of the latest version of MSVC 17.10.4 includes both CMake 3.28.3 and the vcpkg package manager).

  ---

  We, the build system developers, kindly ask reviewers to refrain from making suggestions that are not directly related to the migration process or can be implemented separately. Bugs in the scripts and errors in the updated documentation should be the focus of this PR. Please be advised that comments not aligned with this PR's goal may be ignored.

  Thank you all for your understanding.

ACKs for top commit:
  maflcko:
    review ACK 41051290ab 🐥
  sipsorcery:
    ACK 41051290ab.
  vasild:
    ACK 41051290ab
  TheCharlatan:
    ACK 41051290ab
  pablomartin4btc:
    tACK 41051290ab
  i-am-yuvi:
    tACK [`4105129`](41051290ab)
  theuni:
    ACK 41051290ab.
  fanquake:
    ACK 41051290ab

Tree-SHA512: 6c1445054436c6c00ad63bfa0f19d64091a2b25c9bd694f85bf2218ac358ffb774d6c000685b3ca1e9b50401babed989fa2a0694b774c211d226bfd1944c9b39
2024-08-28 10:51:24 +01:00
Hennadii Stepanov
9730288a0c
ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
MarcoFalke
cccc5bfd35
test: Enable detect_leaks=1 in ASAN_OPTIONS explicitly 2024-08-16 15:31:54 +02:00
Max Edwards
8131bf7483 ci: parse TEST_RUNNER_EXTRA into an array
Allows for parsing quotes and multiple arguments such as TEST_RUNNER_EXTRA='--exclude "rpc_bind.py --ipv6,feature_proxy.py"'
2024-06-12 16:51:02 +01:00
Hennadii Stepanov
5deb0b024e
build, test, doc: Temporarily remove Android-related stuff
Previously, our Android builds were geared towards generating APKs,
which relied on Qt. However, after migrating to C++20, compiling for
Android became unfeasible due to Qt 5.15's compatibility limitations
with NDK only up to r25, which includes an outdated embedded libc++.

All removed stuff will be reinstated after migrating the build system to
CMake and upgrading Qt to version 6.x."
2024-05-06 11:29:14 +01:00
MarcoFalke
fa22a438fa
ci: Print tsan errors to stderr 2024-03-26 19:19:28 +01:00