46016 Commits

Author SHA1 Message Date
will
2aa288efdd
ci: fix annoying docker warning
Docker currently warns that we are missing a default value.

Set this to scratch which will error if an appropriate image tag is not
passed in to silence the warning.
2025-09-01 16:22:34 +01:00
will
dd1c5903e8
ci: add ccache hit-rate warning when < 75%
Print the ccache hit-rate for the job using a GitHub annotation if it
was below 75%.
2025-09-01 16:22:33 +01:00
will
f427284483
doc: Detail configuration of hosted CI runners 2025-09-01 16:22:32 +01:00
will
3f339e99e0
ci: dynamically match makejobs with cores
Previously jobs were running on a large multi-core server where 10 jobs
as default made sense (or may even have been on the low side).

Using hosted runners with fixed (and lower) numbers of vCPUs we should
adapt compilation to match the number of cpus we have dynamically.

This is cross-platform compatible with macos and linux only.
2025-09-01 16:22:31 +01:00
will
4393ffdd83
ci: remove .cirrus.yml
Removed as unused.
2025-09-01 16:22:30 +01:00
will
bc41848d00
ci: port lint
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:29 +01:00
will
d290a8e6ea
ci: port msan-depends
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:28 +01:00
will
9bbae61e3b
ci: port tsan-depends
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:27 +01:00
will
bf7d536452
ci: port tidy
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:26 +01:00
will
549074bc64
ci: port centos-depends-gui
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:25 +01:00
will
58e38c3a04
ci: port previous-releases-depends-debug
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:24 +01:00
will
341196d75c
ci: port fuzzer-address-undefined-integer-nodepends
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:23 +01:00
will
f2068f26c1
ci: port no-IPC-i686-DEBUG
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:22 +01:00
will
2a00b12d73
ci: port nowallet-libbitcoinkernel
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:21 +01:00
will
9c2514de53
ci: port mac-cross-gui-notests
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:20 +01:00
will
2c990d84a3
ci: force reinstall of kernel headers in asan
When using hosted runners in combination with cached docker images,
there is the possibility that the host runner image is updated,
rendering the linux-headers package (stored in the cached docker image)
incompatible.

Fix this by doing a re-install of the headers package in
03_test_script.sh.

If the underlying runner kernel has not changed thie has no effect, but
prevents the job from failing if it has.
2025-09-01 16:22:19 +01:00
will
884251441b
ci: update asan-lsan-ubsan
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:18 +01:00
will
f253031cb8
ci: port arm 32-bit job
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 16:22:17 +01:00
will
04e7bfbceb
ci: update windows-cross job
Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 10:32:06 +01:00
will
cc1735d777
ci: add job to determine runner type
To remove multiple occurances of the respository name, against which we
compare `${{ github.repository }}` to check if we should use Cirrus
Runners, introduce a helper job which can check a single environment
variable and output this as an input to subsequent jobs.

Forks can maintain a trivial patch of their repo name against the
`REPO_USE_CIRRUS_RUNNERS` variable in ci.yml if they have Cirrus Runners
of their own, which will then enable cache actions and docker build
cache to use Cirrus Cache.

It's not possible to use `${{ env.USE_CIRRUS_RUNNERS }}` in the
`runs-on:` directive as the context is not supported by GitHub.

If it was, this job would no longer be necessary.
2025-09-01 10:32:05 +01:00
will
020069e6b7
ci: add Cirrus cache host
Whilst the action cirruslabs/actions/cache will automatically set this
host, the docker `gha` build cache backend will not be aware of it.

Set the value here, which will later be used in the docker build args to
enable docker build cache on the cirrus cache.
2025-09-01 10:32:04 +01:00
will
9c2b96e0d0
ci: have base install run in right dir
This sets the build dir at build time so that Apple SDK gets installed
in the correct/expected location for the runtime to find it.

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-01 10:32:03 +01:00
will
18f6be09d0
ci: use docker build cache arg directly
Reverts: e87429a2d0f23eb59526d335844fa5ff5b50b21f

This was added in PR #31545 with the intention that self-hosted runners
might use it to save build cache.

As we are not using hosted runners with a registry build cache, the bulk
of this commit can be reverted, simply using the value of
$DOCKER_BUILD_CACHE_ARG in the script.

link: https://github.com/bitcoin/bitcoin/pull/31545
2025-09-01 10:32:02 +01:00
will
94a0932547
ci: use buildx in ci
Using buildx is required to properly load the correct driver, for use
with registry caching. Neither build, nor BUILDKIT=1 currently do this
properly.

Use of `docker buildx build` is compatible with podman.
2025-09-01 10:32:01 +01:00
will
fdf64e5532
ci: add configure-docker action
Another action to reduce boilerplate in the main ci.yml file.

This action will set up a docker builder compatible with caching build
layers to a container registry using the `gha` build driver.

It will then configure the docker build cache args.
2025-09-01 10:32:00 +01:00
will
33ba073df7
ci: add REPO_USE_CIRRUS_RUNNERS
If set, Cirrus runners will be used on pushes to, and pull requests
against, this repository.

Forks can set this if they have their own cirrus runners.
2025-09-01 10:31:59 +01:00
will
b232b0fa5e
ci: add caching actions
Add "Restore" and "Save" caching actions.

These actions reduce boilerplate in the main ci.yml configuration file.

These actions are implemented so that caches will be saved on `push`
only.

When a pull request is opened it will cache hit on the caches from the
lastest push, or in the case of depends will hit on any matching depends
hash, falling back to partial matches.

Depends caches are hashed using
`$(git ls-tree HEAD depends "ci/test/$FILE_ENV" | sha256sum | cut -d' ' -f1)`
and this hash is passed in as an input to the actions. This means we
direct cache hit in cases where depends would not be re-built, otherwise
falling back to a partial match.

Previous releases cache is hashed similarly to depends, but using the
test/get_previous_releases.py file.

The cirruslabs cache action will fallback transparently to GitHub's
cache in the case that the job is not being run on a Cirrus Runner,
making these compatible with running on forks (on free GH hardware).
2025-09-01 10:31:58 +01:00
will
b8fcc9fcbc
ci: add configure environment action 2025-09-01 10:31:58 +01:00
Ava Chow
7cc9a08706
Merge bitcoin/bitcoin#33253: Revert compact block cache inefficiencies
b7b249d3adfbd3c7b0c4d0499a86300f57982972 Revert "[refactor] rewrite vTxHashes as a vector of CTransactionRef" (Anthony Towns)
b9300d8d0a74b15a220a2ce529d5157d109c7ed3 Revert "refactor: Simplify `extra_txn` to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef>" (Anthony Towns)
df5a50e5de204013ba56e1c4967a249ca07ba086 bench/blockencodings: add compact block reconstruction benchmark (Anthony Towns)

Pull request description:

  Reconstructing compact blocks is on the hot path for block relay, so revert changes from #28391 and #29752 that made it slower. Also add a benchmark to validate reconstruction performance, and a comment giving some background as to the approach.

ACKs for top commit:
  achow101:
    ACK b7b249d3adfbd3c7b0c4d0499a86300f57982972
  polespinasa:
    lgtm code review and tested ACK b7b249d3adfbd3c7b0c4d0499a86300f57982972
  cedwies:
    code-review ACK b7b249d
  davidgumberg:
    crACK b7b249d3adfbd3c
  instagibbs:
    ACK b7b249d3adfbd3c7b0c4d0499a86300f57982972

Tree-SHA512: dc266e7ac08281a5899fb1d8d0ad43eb4085f8ec42606833832800a568f4a43e3931f942d4dc53cf680af620b7e893e80c9fe9220f83894b4609184b1b3b3b42
2025-08-28 16:10:42 -07:00
merge-script
084fd68fda
Merge bitcoin/bitcoin#33258: ci: use LLVM 21
4cf0ae474ba03830c86653f1abae4ab4d38c94e4 ci: use LLVM 21 (fanquake)

Pull request description:

  Use LLVM 21 in the *san & fuzz CIs.

ACKs for top commit:
  maflcko:
    lgtm ACK 4cf0ae474ba03830c86653f1abae4ab4d38c94e4
  janb84:
    ACK 4cf0ae474ba03830c86653f1abae4ab4d38c94e4
  l0rinc:
    utACK 4cf0ae474ba03830c86653f1abae4ab4d38c94e4

Tree-SHA512: bc91982060fd0cdf0fb3b2cc895a53ca374bd76f4d75c493087e23309d3f5ea870a12d9c29ac3309b338d9508dd3f0045ae524965d2875ec9174da04e13436a0
2025-08-28 19:45:06 +01:00
merge-script
6ff2d42362
Merge bitcoin/bitcoin#33189: rpc: followups for 33106
daa40a3ff97346face9dcc64564010a66c91ccb2 doc fixups for 33106 (glozow)
c568511e8ced011103ef6e3616409fa0ac54408c test fixup for incremental feerate (glozow)
636fa219d37f86067d996c86fada286cedc0d78e test fixups (glozow)
9169a50d529efeae465e55947978f5e470d7f7d0 [rpc] expose blockmintxfee via getmininginfo (glozow)

Pull request description:

  Followups from #33106:
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2271855287
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2271909132
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2274373368
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275327727
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275120698
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275470140
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2271864670
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275120698
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2277786375
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2277669475
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2279251263

ACKs for top commit:
  ajtowns:
    ACK daa40a3ff97346face9dcc64564010a66c91ccb2 ; cursory review, seems reasonable
  davidgumberg:
    ACK daa40a3ff9
  instagibbs:
    ACK daa40a3ff97346face9dcc64564010a66c91ccb2

Tree-SHA512: d6f0ae5d00dadfbaf0998ac332c8536c997628de4f2b9947eb57712f05d3afa19a823c9cc007435be320640cd13a4c500db20c9606988cdd371934496dec009d
2025-08-28 19:44:31 +01:00
merge-script
4d54bb2b92
Merge bitcoin/bitcoin#33264: threading: reduce the scope of lock in getblocktemplate
493ba0f688311280056491986068cd4a9ad2be66 threading: reduce the scope of lock in getblocktemplate (kevkevinpal)

Pull request description:

  This change was motivated by https://github.com/bitcoin/bitcoin/pull/32592#discussion_r2294770722

  It does exactly what is said in the comment. Reducing the scope of the lock by a bit before it is needed

ACKs for top commit:
  stickies-v:
    re-ACK 493ba0f688311280056491986068cd4a9ad2be66
  maflcko:
    lgtm ACK 493ba0f688311280056491986068cd4a9ad2be66

Tree-SHA512: aa3a21ef3da6be6c0af78aa2dda61ee21c3f6d4d9c897413dba9e7d7d2a91e9e069bbc6b6684b45aadaa28d8603dd310f2c2d2e58c31bb4d864204e468fefaf1
2025-08-28 19:35:48 +01:00
merge-script
9ae23950ef
Merge bitcoin/bitcoin#33261: ci: return to using dash in CentOS job
509ffea40abbc706ef8b8fc449b7de8677fc5096 ci: return to using dash in CentOS job (fanquake)

Pull request description:

  `dash` is available again: https://bugzilla.redhat.com/show_bug.cgi?id=2335416.

ACKs for top commit:
  maflcko:
    lgtm ACK 509ffea40abbc706ef8b8fc449b7de8677fc5096
  davidgumberg:
    ACK 509ffea40a
  janb84:
    crACK 509ffea40abbc706ef8b8fc449b7de8677fc5096

Tree-SHA512: c57194b6158f6453cadb2487be232af5e37aa2234852f04a76fc80909fbfa48c7f8dd30e7be41be67dedb7ec4886930e165fdbaf746d358bb94c6ccc49d6bde6
2025-08-28 19:28:01 +01:00
kevkevinpal
493ba0f688
threading: reduce the scope of lock in getblocktemplate 2025-08-28 08:43:21 -04:00
fanquake
509ffea40a
ci: return to using dash in CentOS job 2025-08-27 11:56:44 +01:00
Anthony Towns
b7b249d3ad Revert "[refactor] rewrite vTxHashes as a vector of CTransactionRef"
This reverts commit a03aef9cec35b0d03aa63d7e8093f0420cd4b40b.
2025-08-27 03:33:32 +10:00
Anthony Towns
b9300d8d0a Revert "refactor: Simplify extra_txn to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef>"
This reverts commit a8203e94123b6ea6e4f4a6320e3ad20457f44a28.
2025-08-27 03:33:32 +10:00
Anthony Towns
df5a50e5de bench/blockencodings: add compact block reconstruction benchmark 2025-08-27 03:33:32 +10:00
fanquake
4cf0ae474b
ci: use LLVM 21 2025-08-26 17:11:45 +01:00
Ava Chow
6ca6f3b37b
Merge bitcoin/bitcoin#33241: Update libmultiprocess subtree to fix build issues
dd68d0f40b614474f24469fbe1ba02f8f9146b31 Squashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a6f1e54 (Ryan Ofsky)

Pull request description:

  Includes:

  - https://github.com/bitcoin-core/libmultiprocess/pull/193
  - https://github.com/bitcoin-core/libmultiprocess/pull/195
  - https://github.com/bitcoin-core/libmultiprocess/pull/194

  These changes are needed to build fix libmultiprocess build issue that happens on OpenBSD and work around an incompatibility between GCC versions <14 and cap'nproto versions  <0.9 when compiling with c++20 that was fixed upstream in https://github.com/capnproto/capnproto/pull/1170. The issues were reported:

  - https://github.com/bitcoin/bitcoin/issues/33219
  - https://github.com/bitcoin/bitcoin/issues/33176
  - https://github.com/willcl-ark/bitcoin-core-docker/pull/43

  The fixes added CI jobs upstream to catch these issues earlier.

  The changes can be verified by running `test/lint/git-subtree-check.sh src/ipc/libmultiprocess` as described in [developer notes](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#subtrees) and [lint instructions](https://github.com/bitcoin/bitcoin/tree/master/test/lint#git-subtree-checksh)

ACKs for top commit:
  Sjors:
    ACK 323b3fd27283282f2f8eb1096f56f23d8230f2d6
  achow101:
    ACK 323b3fd27283282f2f8eb1096f56f23d8230f2d6
  hebasto:
    ACK 323b3fd27283282f2f8eb1096f56f23d8230f2d6, I've reproduced the subtree update locally. The two issues noted in this PR are unrelated to its changes and can be addressed separately.

Tree-SHA512: 3d03693d269c04d9ed10e8dd03e8059062929f37616d974c6fdf346ee62737c990ec550e013575e7474bfa4efcead3938bf9b259d62c073d76e720ebafe4ff66
2025-08-25 14:11:42 -07:00
merge-script
9703b7e6d5
Merge bitcoin/bitcoin#32592: threading: remove ancient CRITICAL_SECTION macros
46ca7712cb5fcf759cfc9f4f32d74215c8c83763 threading: remove unused template instantiations (Cory Fields)
b537a6a6dbd3b2a6725ccfafd57c9cc50cd617b0 threading: remove obsolete critsect macros (Cory Fields)
0d0e0a39b4a58fc48d2f0107e8c08bece58130bc threading: use a reverse lock rather than manual critsect macros (Cory Fields)
3ddd554d318110e8270498760340854929c59405 tests: Add Assertions in reverse_lock tests to exercise thread-safety annotations (Cory Fields)
c88b1cbf57a333261dbb8cf2eae91cf76e056d96 tests: get rid of remaining manual critsect usage (Cory Fields)

Pull request description:

  Now that #32467 is merged, the only remaining usage of our old `CRITICAL_SECTION` macros (other than tests) is in `getblocktemplate()` and it can safely be replaced with a `REVERSE_LOCK`.

  This PR makes that replacement, replaces the old `CRITICAL_SECTION` macro usage in tests, then deletes the macros themselves.

  ~While testing this a few weeks ago, I noticed that `REVERSE_LOCK` does not currently work properly with our thread-safety annotations as after the `REVERSE_LOCK` is acquired, clang still believes that the mutex is locked. #32465 fixes this problem. Without that fix, this PR would potentially allow a false-negative if code were added in the future to this chunk of `getblocktemplate` which required `cs_main` to be locked.~

  ~I added a test for the reverse lock here in the form of a compiler warning in `reverselock_tests.cpp` to simulate that possibility. This PR will therefore cause a new warning (and should fail a warnings-as-errors ci check) until #32465 is merged and this is rebased on top of it.~

  Edit: Rebased on top of #32465, so this should now pass tests.

ACKs for top commit:
  maflcko:
    review ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763 📌
  fjahr:
    Code review ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763
  TheCharlatan:
    ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763
  furszy:
    ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763

Tree-SHA512: 5e423c8539ed5ddd784f5c3657bbd63be509d54942c25149f04e3764bcdf897bebf655553338d5af7b8c4f546fc1d4dd4176c2bce6f4683e76ae4bb91ba2ec80
2025-08-23 17:18:29 +01:00
Ryan Ofsky
323b3fd272 Merge commit 'dd68d0f40b614474f24469fbe1ba02f8f9146b31' into pr/subtree-3 2025-08-22 17:15:44 -04:00
Ryan Ofsky
dd68d0f40b Squashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a6f1e54
1b8d4a6f1e54 Merge bitcoin-core/libmultiprocess#194: mpgen: Work around c++20 / capnproto 0.8 incompatibility
f1fad396bf5f Merge bitcoin-core/libmultiprocess#195: ci: Add openbsd
eed42f210d17 ci: Bump all tasks to actions/checkout@v5
486a510bbeff ci: Remove ancient and problematic -lstdc++fs in mpexample
dd40897efe79 Add missing thread include
98414e7d2867 ci: Add openbsd
dc3ba2204606 cmake, doc: Add check for CVE-2022-46149
cb170d4913a2 Merge bitcoin-core/libmultiprocess#193: build: require CapnProto 0.7.0 or better
8ceeaa6ae401 ci: Add olddeps job to test old dependencies versions
c4cb758eccb5 mpgen: Work around c++20 / capnproto 0.8 incompatibility
30930dff7b06 build: require CapnProto 0.7.0 or better

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 1b8d4a6f1e54b92708bd2ad627ec6d440a1daf3d
2025-08-22 17:15:44 -04:00
merge-script
73220fc0f9
Merge bitcoin/bitcoin#33212: index: Don't commit state in BaseIndex::Rewind
a602f6fb7bf5f9e57299f4d6e246c82379fad8d2 test: index with an unclean restart after a reorg (Martin Zumsande)
01b95ac6f496e24e525b2fc9d69ee8b543da65ff index: don't commit state in BaseIndex::Rewind (Martin Zumsande)

Pull request description:

  The committed state of an index should never be ahead of the flushed chainstate.
  Otherwise, in the case of an unclean shutdown, the blocks necessary to revert
  from the prematurely committed state are not be available, which would corrupt the coinstatsindex in particular.
  Instead, the index state will be committed with the next ChainStateFlushed notification.

  Fixes #33208

ACKs for top commit:
  achow101:
    ACK a602f6fb7bf5f9e57299f4d6e246c82379fad8d2
  stickies-v:
    re-ACK a602f6fb7bf5f9e57299f4d6e246c82379fad8d2

Tree-SHA512: 2559ea3fe066caf746a54ad7daac5031332f3976848e937c3dc8b35fa2ce925674115d8742458bf3703b3916f04f851c26523b6b94aeb1da651ba5a1b167a419
2025-08-22 15:51:41 +01:00
Cory Fields
46ca7712cb threading: remove unused template instantiations
These were only required for the ENTER_CRITICAL_SECTION macro.
2025-08-22 14:25:39 +00:00
Cory Fields
b537a6a6db threading: remove obsolete critsect macros 2025-08-22 14:25:39 +00:00
Cory Fields
0d0e0a39b4 threading: use a reverse lock rather than manual critsect macros
No functional change.
2025-08-22 14:25:39 +00:00
Cory Fields
3ddd554d31 tests: Add Assertions in reverse_lock tests to exercise thread-safety annotations 2025-08-22 14:25:39 +00:00
Cory Fields
c88b1cbf57 tests: get rid of remaining manual critsect usage 2025-08-22 14:25:39 +00:00
merge-script
2c223de2af
Merge bitcoin/bitcoin#33237: doc: use new block_to_connect parameter name
1c3db0ed8e6f51d66facf4820a9225f6c617ac53 doc: use new block_to_connect parameter name (stickies-v)

Pull request description:

  The parameter name was previously changed from `pblock` to `block_to_connect` in 9ba1fff29e4794615c599e59ef453848a9bdb880, without updating the documentation.

  Addresses https://github.com/bitcoin/bitcoin/pull/33078#discussion_r2279914775.

ACKs for top commit:
  purpleKarrot:
    ACK 1c3db0ed8e6f51d66facf4820a9225f6c617ac53
  janb84:
    ACK 1c3db0ed8e6f51d66facf4820a9225f6c617ac53
  musaHaruna:
    ACK [1c3db0e](1c3db0ed8e)

Tree-SHA512: 8b12243f1d9e5586e487dd705dc5b40ff12025bb5539eb4195f7fde4df38a9fe8eb0a9570a72f9463a2420f7307358409804fcb23bb73e32ff691ac4ef5bc35a
2025-08-22 14:13:20 +01:00