44313 Commits

Author SHA1 Message Date
will
4e8b64b181
ci: fix annoying docker warning
Github-Pull: #32989
Rebased-From: 2aa288efdda

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-23 15:26:07 +01:00
will
773e4cda94
ci: add ccache hit-rate warning when < 75%
Github-Pull: #32989
Rebased-From: dd1c5903e8d

Print the ccache hit-rate for the job using a GitHub annotation if it
was below 75%.
2025-09-23 15:26:06 +01:00
will
4339787379
doc: Detail configuration of hosted CI runners
Github-Pull: #32989
Rebased-From: f4272844833dd660c2b9db587856baa408889302
2025-09-23 15:26:06 +01:00
will
c7f290b826
ci: dynamically match makejobs with cores
Github-Pull: #32989
Rebased-From: 3f339e99e00

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-23 15:26:05 +01:00
will
a08c3cc51c
ci: remove .cirrus.yml
Github-Pull: #32989
Rebased-From: 4393ffdd837

Removed as unused.
2025-09-23 15:26:04 +01:00
will
06424fb004
ci: port lint
Github-Pull: #32989
Rebased-From: bc41848d00f

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:26:03 +01:00
will
0f0378fe3c
ci: port msan-depends
Github-Pull: #32989
Rebased-From: d290a8e6eab

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:26:02 +01:00
will
643385b22d
ci: port tsan-depends
Github-Pull: #32989
Rebased-From: 9bbae61e3b4

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:26:01 +01:00
will
3b2dcc8b9a
ci: port tidy
Github-Pull: #32989
Rebased-From: bf7d5364527

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:26:00 +01:00
will
b4286cf354
ci: port centos-depends-gui
Github-Pull: #32989
Rebased-From: 549074bc643

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:59 +01:00
will
5057b9a6ff
ci: port previous-releases-depends-debug
Github-Pull: #32989
Rebased-From: 58e38c3a042

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:58 +01:00
will
85ec6c6882
ci: port fuzzer-address-undefined-integer-nodepends
Github-Pull: #32989
Rebased-From: 341196d75c3

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:57 +01:00
will
544f902b2a
ci: port i686-multiprocess-DEBUG
Github-Pull: #32989
Rebased-From: f2068f26c12

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:56 +01:00
will
e826c3daa5
ci: port nowallet-libbitcoinkernel
Github-Pull: #32989
Rebased-From: 2a00b12d73b

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:55 +01:00
will
835b5b8bb1
ci: port mac-cross-gui-notests
Github-Pull: #32989
Rebased-From: 9c2514de534

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:54 +01:00
will
a91567a980
ci: force reinstall of kernel headers in asan
Github-Pull: #32989
Rebased-From: 2c990d84a3d

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-23 15:25:53 +01:00
will
819ee09af3
ci: update asan-lsan-ubsan
Github-Pull: #32989
Rebased-From: 884251441bb

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:52 +01:00
will
894a3cbe42
ci: update windows-cross job
Github-Pull: #32989
Rebased-From: 04e7bfbceb0

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:51 +01:00
will
82c60a3151
ci: port arm 32-bit job
Github-Pull: #32989
Rebased-From: f253031cb8e

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-23 15:25:50 +01:00
will
849993377d
ci: add job to determine runner type
Github-Pull: #32989
Rebased-From: cc1735d7771

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-23 15:25:49 +01:00
will
f9f3e8b686
ci: add Cirrus cache host
Github-Pull: #32989
Rebased-From: 020069e6b71

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-23 15:25:48 +01:00
will
af086431e8
ci: have base install run in right dir
Github-Pull: #32989
Rebased-From: 9c2b96e0d03

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-23 15:25:47 +01:00
will
0a649d07c9
ci: use docker build cache arg directly
Github-Pull: #32989
Rebased-From: 18f6be09d02

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-23 15:25:46 +01:00
will
f3089fb2cf
ci: use buildx in ci
Github-Pull: #32989
Rebased-From: 94a09325475

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-23 15:25:45 +01:00
will
1faf918a16
ci: add configure-docker action
Github-Pull: #32989
Rebased-From: fdf64e55324

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-23 15:25:44 +01:00
will
954c1a55e4
ci: add REPO_USE_CIRRUS_RUNNERS
Github-Pull: #32989
Rebased-From: 33ba073df7a

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-23 15:25:43 +01:00
will
301aa5d814
ci: add caching actions
Github-Pull: #32989
Rebased-From: b232b0fa5e9

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-23 15:25:42 +01:00
will
f63b8e960d
ci: add configure environment action
Github-Pull: #32989
Rebased-From: b8fcc9fcbcd
2025-09-23 15:25:41 +01:00
merge-script
7e1eca4882
Merge bitcoin/bitcoin#33344: [29.x] Backports
f2bd79f80c74a2b77f14954ac65679417697a332 doc: update manual pages for v29.2rc1 (fanquake)
461dd13fafa6f8175e2be4d96e8728e667ba4d69 build: bump version to v29.2rc1 (fanquake)
9bc4afb62cf04a41b62fe279f0db3d87e700cb3d doc: update release notes for 29.x (fanquake)
61cdc04a832cc5dfe98c48f8592c4de513258304 net: Do not apply whitelist permission to onion inbounds (Martin Zumsande)
1288d44804cd6ecd8601d0aef55e6fbf500d2f31 test: send duplicate blocktxn message in p2p_compactblocks.py (Eugene Siegel)
569ceb0df46fc619eed33f56b5b36f617c37bae7 net: check for empty header before calling FillBlock (Eugene Siegel)
4c940d47897bc380d3387dd6663c37c46b4020ec p2p: remove vestigial READ_STATUS_CHECKBLOCK_FAILED (Greg Sanders)
9b95ab5e9db1691be5f26fc5bc1c186777d2dc5b p2p: Add witness mutation check inside FillBlock (Greg Sanders)
e97588fc3d1e1a02382312ade7d529c5b4b60016 trace: Workaround GCC bug compiling with old systemtap (Luke Dashjr)
324caa84977cc74ac19df605503483e59739773e ci: always use tag for LLVM checkout (fanquake)
2717331981ec94fd616a08f31e643391a2118639 Fix benchmark CSV output (Hennadii Stepanov)

Pull request description:

  Backports:
  * #32646
  * #33296
  * #33310
  * #33340
  * #33364
  * #33395

  Plus changes for 29.2rc1.

ACKs for top commit:
  darosior:
    utACK f2bd79f80c74a2b77f14954ac65679417697a332
  mzumsande:
    utACK f2bd79f80c74a2b77f14954ac65679417697a332

Tree-SHA512: 346a92032b7a069e2941056c6273ff65e360c5834832b106350a9cd42b634518cc75b807da6e51a6292e3a33342bb7b145777d3538a2792e03c63962d747a025
v29.2rc1
2025-09-17 14:00:10 -04:00
fanquake
f2bd79f80c
doc: update manual pages for v29.2rc1 2025-09-17 15:54:29 +01:00
fanquake
461dd13faf
build: bump version to v29.2rc1 2025-09-17 15:47:34 +01:00
fanquake
9bc4afb62c
doc: update release notes for 29.x 2025-09-17 15:45:45 +01:00
Martin Zumsande
61cdc04a83
net: Do not apply whitelist permission to onion inbounds
Tor inbound connections do not reveal the peer's actual network address.
Therefore do not apply whitelist permissions to them.

Co-authored-by: Vasil Dimov <vd@FreeBSD.org>

Github-Pull: #33395
Rebased-From: f563ce90818d486d2a199439d2f6ba39cd106352
2025-09-17 10:12:08 +01:00
Eugene Siegel
1288d44804
test: send duplicate blocktxn message in p2p_compactblocks.py
Add test_multiple_blocktxn_response that checks that the peer is
disconnected.

Github-Pull: #33296
Rebased-From: 8b6264768030db1840041abeeaeefd6c227a2644
2025-09-12 15:44:07 +01:00
Eugene Siegel
569ceb0df4
net: check for empty header before calling FillBlock
Previously in debug builds, this would cause an Assume crash if
FillBlock had been called previously. This could happen when multiple
blocktxn messages were received.

Co-Authored-By: Greg Sanders <gsanders87@gmail.com>

Github-Pull: #33296
Rebased-From: 5e585a0fc4fd68dd7b4982054b34deae2e7aeb89
2025-09-12 15:44:03 +01:00
Greg Sanders
4c940d4789
p2p: remove vestigial READ_STATUS_CHECKBLOCK_FAILED
Github-Pull: #32646
Rebased-From: 28299ce77636d7563ec545d043cf1b61bd2f01c1
2025-09-12 15:44:00 +01:00
Greg Sanders
9b95ab5e9d
p2p: Add witness mutation check inside FillBlock
Since #29412, we have not allowed mutated blocks to continue
being processed immediately the block is received, but this
is only done for the legacy BLOCK message.

Extend these checks as belt-and-suspenders to not allow
similar mutation strategies to affect relay by honest peers
by applying the check inside
PartiallyDownloadedBlock::FillBlock, immediately before
returning READ_STATUS_OK.

This also removes the extraneous CheckBlock call.

Github-Pull: #32646
Rebased-From: bac9ee4830664c86c1cb3d38a5b19c722aae2f54
2025-09-12 15:43:53 +01:00
Luke Dashjr
e97588fc3d
trace: Workaround GCC bug compiling with old systemtap
Github-Pull: #33310
Rebased-From: 93a29ff2830162c8129d35c7b9beb43fab984503
2025-09-12 11:52:26 +01:00
fanquake
324caa8497
ci: always use tag for LLVM checkout
Rather than trying to match the apt installed clang version, which is
prone to intermittent issues. i.e #33345.

Github-Pull: #33364
Rebased-From: b736052e39f1f466f63f261ace3dd2deba171e8a
2025-09-12 09:48:59 +01:00
Hennadii Stepanov
2717331981
Fix benchmark CSV output
The `SHA256AutoDetect` return output is used, among other use cases, to
name benchmarks. Using a comma breaks the CSV output.

This change replaces the comma with a semicolon, which fixes the issue.

Github-Pull: #33340
Rebased-From: 790b440197bde322432a5bab161f1869b667e681
2025-09-09 10:13:49 +01:00
merge-script
a0e438bd49
Merge bitcoin/bitcoin#33294: [29.x] *san CI backports
7c6be9acae5a16956a7f8e53ae3f944a187a6713 doc: update release notes for 29.x (fanquake)
ea40fa95d9af004d85187bee9d8efe278c888d8f ci: use LLVM 21 (fanquake)
5513516241463333548600f691a861dba4c1d5c5 ci: remove DEBUG_LOCKORDER from TSAN job (fanquake)
f9939cdbe01fa090bd2ece90f5cbfb17120c2f24 ci: instrument libc++ in TSAN job (fanquake)
0fba5ae02101b358aa4938d35471356b75e0e615 ci: allow libc++ instrumentation other than msan (fanquake)
10cbf2255d9e74166f5f41e82fefa4a7f890e73f ci: Use APT_LLVM_V in msan task (MarcoFalke)

Pull request description:

  Backports:
  * #32999
  * #33099 (added `ninja-build`)
  * #33258

ACKs for top commit:
  marcofleon:
    ACK 7c6be9acae5a16956a7f8e53ae3f944a187a6713, looks okay to me

Tree-SHA512: 928882d505ed8101a6d4123947252a84d40bd350383408926b5c37aed56dc3359067d1d14c443c51351a6958a8dd9e141bb7713665295ff1f1ad86c5f8a36df0
2025-09-08 17:16:58 +01:00
fanquake
7c6be9acae
doc: update release notes for 29.x 2025-09-05 12:04:09 +01:00
fanquake
ea40fa95d9
ci: use LLVM 21
Github-Pull: #33258
Rebased-From: 4cf0ae474ba03830c86653f1abae4ab4d38c94e4
2025-09-03 16:51:18 +01:00
fanquake
5513516241
ci: remove DEBUG_LOCKORDER from TSAN job
Github-Pull: #33099
Rebased-From: 7aa5b67132dfb71e915675a3dbcb806284e08197
2025-09-03 16:51:18 +01:00
fanquake
f9939cdbe0
ci: instrument libc++ in TSAN job
Qt is disabled, as the build is now taking a very long time.

Github-Pull: #33099
Rebased-From: b09af2ce508185086bb551bfeb1409355c897e7b
2025-09-03 16:51:14 +01:00
fanquake
0fba5ae021
ci: allow libc++ instrumentation other than msan
Github-Pull: #33099
Rebased-From: 6653cafd0b70b0e7a29c6cfe236d3bf9d1bce91e
2025-09-03 16:16:08 +01:00
MarcoFalke
10cbf2255d
ci: Use APT_LLVM_V in msan task
Also, use update-alternatives to avoid having to manually specify
clang-${APT_LLVM_V} or llvm-symbolizer-${APT_LLVM_V} everywhere.

Github-Pull: #32999
Rebased-From: fad040a5787a8ac0a13aef5c54e5a675de239e92
2025-09-03 16:14:25 +01:00
merge-script
fd784f2774
Merge bitcoin/bitcoin#33271: [29.x] finalise v29.1
084c95a18c9978c0a047ffe219a9eef8ab327ea6 doc: update manual pages for v29.1 (fanquake)
37d115c67eafec68128649651a7e921c3e2635ce build: bump version to v29.1 final (fanquake)
b0d88bcc501bf0fc06e64c2f0a295b99a1101073 doc: finalise release notes for 29.1 (fanquake)
99ab2e70e782bf5ca753ad636f69642da6054283 ci: return to using dash in CentOS job (fanquake)
6448ebb5a7c942949a70ffc4a1d2a93338fac130 doc: Remove wrong and redundant doxygen tag (MarcoFalke)

Pull request description:

  Backports:
  * #33236
  * #33261

  Since `rc2`, #33212 was also backported in #33251.

ACKs for top commit:
  glozow:
    ACK 084c95a18c9978c0a047ffe219a9eef8ab327ea6
  willcl-ark:
    ACK 084c95a18c9978c0a047ffe219a9eef8ab327ea6

Tree-SHA512: 0698e5b2d12f7328bf5af8dbbd92b0049de401c0a4af27fda2209f9aab35d827c5ac65eb9268aa1fae241e3adf0d3dd89324bb288655ead8af2b5584aae1f6d2
v29.1
2025-09-03 10:49:29 -04:00
fanquake
084c95a18c
doc: update manual pages for v29.1 2025-09-03 13:41:57 +01:00
fanquake
37d115c67e
build: bump version to v29.1 final 2025-09-03 13:23:31 +01:00