Skip to content

Commit 7334556

Browse files
Squashed 'libbitcoinkernel-sys/bitcoin/' changes from 3789215f7346..6356041e58d1
6356041e58d1 Merge bitcoin/bitcoin#33972: cmake: Make `BUILD_KERNEL_TEST` depend on `BUILD_KERNEL_LIB` 7d7cb1bb48f1 Merge bitcoin/bitcoin#33971: cmake: Set `WITH_ZMQ` to `ON` in Windows presets fe1815d48f0c cmake: Make `BUILD_KERNEL_TEST` depend on `BUILD_KERNEL_LIB` 49c672853503 cmake: Set `WITH_ZMQ` to `ON` in Windows presets f6acbef1084e Merge bitcoin/bitcoin#33764: ci: Add Windows + UCRT jobs for cross-compiling and native testing 808f1d972be3 Merge bitcoin/bitcoin#32009: contrib: turn off compression of macOS SDK to fix determinism (across distros) 4de26b111f4d Merge bitcoin/bitcoin#33514: ci: clear out space on CentOS, depends, gui GHA job 38c8474d0d77 Merge bitcoin/bitcoin#33914: Change Parse descriptor argument to string_view 4b25b274de66 Merge bitcoin/bitcoin#33951: test: check for output to stdout in `TestShell` test 52230a7f697f test: check for output to stdout in `TestShell` test 85d058dc537e Merge bitcoin/bitcoin#33946: interfaces: remove redundant mempool lock in ChainImpl::isInMempool() e07e57368e9f ci: clear out space on centos job 79d6e874e1da Merge bitcoin/bitcoin#32587: test: Fix reorg patterns in tests to use proper fork-based approach e249ea7da6c2 Merge bitcoin/bitcoin#33945: depends: latest config.guess & config.sub 3e01b5d0e7be contrib: rename gen-sdk to gen-sdk.py c1213a35abed macdeploy: disable compression in macOS gen-sdk script a33d03454508 contrib: more selectively pick files for macOS SDK 70d9e8f0a15d fix: reorg behaviour in mempool tests to match real one 540ed333f6c8 Move the create_empty_fork method to the test framework's blocktools.py module to enable reuse across multiple tests. 2909655fba91 fix: remove redundant mempool lock in ChainImpl::isInMempool() d5ed4ba9d862 Merge bitcoin/bitcoin#33906: depends: Add patch for Windows11Style plugin 3e4355314b1a depends: latest config.sub 04eb84fe3f73 depends: latest config.guess b30262dcaa28 Merge bitcoin/bitcoin#33903: ci: Remove redundant busybox option 1a5f1eb08067 Merge bitcoin/bitcoin#33921: doc: clarify and cleanup macOS fuzzing notes 72cb8cef9778 Merge bitcoin/bitcoin#33862: txgraph: drop move assignment operator ade0397f59f2 txgraph: drop move assignment operator 5336bcd57849 Merge bitcoin/bitcoin#33855: kernel: add btck_block_tree_entry_equals 4f65a1c5db84 Merge bitcoin/bitcoin#33917: clang-format: Set Bitcoin Core IncludeCategories 902717b66dc1 Merge bitcoin/bitcoin#33918: depends: Update Qt download link 68ab2b65bfac Merge bitcoin/bitcoin#33919: ci: Run GUI unit tests in cross-Windows task 7e129b644ec9 Merge bitcoin/bitcoin#33893: test: add `-alertnotify` test for large work invalid chain warning 5fe753b56f45 Merge bitcoin/bitcoin#32655: depends: sqlite 3.50.4; switch to autosetup ff8c2f37497f Merge bitcoin/bitcoin#33932: ci: Use latest Xcode that the minimum macOS version allows fa283d28e261 Merge bitcoin/bitcoin#33629: Cluster mempool 2e27bd9c3af9 ci: Add Windows + UCRT jobs for cross-compiling and native testing 238c1c8933b1 Merge bitcoin-core/gui#914: Revert "gui, qt: brintToFront workaround for Wayland" 8343a9ffcc75 test: add `-alertnotify` test for large work invalid chain warning c34bc01b2ff2 doc: clarify and cleanup macOS fuzzing notes fa9537cde101 ci: Use latest Xcode that the minimum macOS version allows 17cf9ff7efdb Use cluster size limit for -maxmempool bound, and allow -maxmempool=0 in general 315e43e5d86c Sanity check `GetFeerateDiagram()` in CTxMemPool::check() de2e9a24c40e test: extend package rbf functional test to larger clusters 4ef4ddb504e5 doc: update policy/packages.md for new package acceptance logic 79f73ad713a8 Add check that GetSortedScoreWithTopology() agrees with CompareMiningScoreWithTopology() a86ac1176817 Update comments for CTxMemPool class 9567eaa66da8 Invoke TxGraph::DoWork() at appropriate times 0690514d4f72 Merge bitcoin/bitcoin#33770: init: Require explicit -asmap filename b2f88b53e0ec Merge bitcoin/bitcoin#33286: doc: update multisig tutorial to use multipath descriptors 313cdd2bfb71 Merge bitcoin/bitcoin#33915: test: Retry download in get_previous_releases.py bd130db994e2 ci: Rename items specific to Windows + MSVCRT 0672e727bf1d Revert "gui, qt: brintToFront workaround for Wayland" 17072f70051d Merge bitcoin/bitcoin#33912: clang-format: Set PackConstructorInitializers: CurrentLine fa7ea497c3ef ci: Run GUI unit tests in cross-Windows task fa0fee44a89c ci: Remove redundant busybox option fa102ec69fae doc: Shorten ci name fa7e222a2326 clang-format: Set Bitcoin Core IncludeCategories 222222378048 doc: Remove bash -c wrapper 6b2d17b13220 Merge bitcoin/bitcoin#33888: ci: Re-enable LINT_CI_SANITY_CHECK_COMMIT_SIG ac71df43383a Merge bitcoin/bitcoin#33870: refactor: remove incorrect lifetimebounds 6cdb51c14eba Merge bitcoin/bitcoin#33887: doc: Improve CI docs on env and qemu-user-static 50cbde3295b4 depends: Update Qt download link 29c37651c74b Merge bitcoin/bitcoin#33880: test: Fix race condition in IPC interface block progation test 32368cd3e9f3 Merge bitcoin/bitcoin#33905: ci: Consistenly only cache on the default branch e55c49f85143 Merge bitcoin/bitcoin#33851: depends: update xcb-util packages to latest versions a07bd8415df4 Merge bitcoin/bitcoin#33824: ci: Enable experimental kernel stuff in most CI tasks via `dev-mode` c0bfe72f6e1f Change Parse descriptor argument to string_view f541b92cf2bb depends: expat 2.7.3 fad06f3bb436 test: retry download in get_previous_releases.py 2ebf4356e63d depends: libxcb 1.17.0 ba7ac870a32a depends: xcb_proto 1.17.0 fad0c76d0a10 clang-format: Set PackConstructorInitializers: CurrentLine 42d0692f9131 depends: libxcb-util-cursor 0.1.6 25b85919ab62 depends: libxcb 1.15 d129384ca97f depends: libxcb-util-wm 0.4.2 0b857ae9e555 depends: libxcb-util-renderutil 0.3.10 35e50488b25a depends: libxcb-util-keysyms 0.4.1 74b68ad28ba2 depends: libxcb-util-image 0.4.1 5bc0dde85d74 depends: libxcb-util 0.4.1 8d07292c286f depends: libXau 1.0.12 1af46cff9478 Merge bitcoin/bitcoin#33896: clang-format: Set InsertNewlineAtEOF: true 27ac11ea0a27 Merge bitcoin/bitcoin#33867: kernel: handle null or empty directories in implementation 2578e6fc0f4a test: Fix race condition in IPC interface block propagation test 288b8c30be42 doc: Drop (default: none) from -i2psam description 509dc91db143 Merge bitcoin/bitcoin#33026: test, refactor: Embedded ASMap [1/3]: Selected minor preparatory work b126f981943d Merge bitcoin-core/gui#910: Added test coverage for qt gui#901 console history filter 7d7b829c36b7 Merge bitcoin-core/gui#908: Remove HD seed reference from blank wallet tooltip 8558902e576e depends: Add patch for Windows11Style plugin 53b72372da91 Merge bitcoin/bitcoin#31734: miniscript: account for all `StringType` variants in `Miniscriptdescriptor::ToString()` a7f9bbe4c5e7 Merge bitcoin/bitcoin#32821: rpc: Handle -named argument parsing where '=' character is used 55555db055b5 doc: Add missing --platform=linux to docker build command fa0ce4c1486b ci: Re-enable LINT_CI_SANITY_CHECK_COMMIT_SIG faa0973de296 ci: [refactor] Rename CIRRUS_PR env var to LINT_CI_IS_PR fa411f938e47 ci: Consistenly only cache on the default branch 6c5c44f77405 test: add functional test for new cluster mempool RPCs 72f60c877e00 doc: Update mempool_replacements.md to reflect feerate diagram checks 21693f031a53 Expose cluster information via rpc 72e74e0d4228 fuzz: try to add more code coverage for mempool fuzzing f107417490ab bench: add more mempool benchmarks 7976eb1ae77a Avoid violating mempool policy limits in tests 84de685cf7ee Stop tracking parents/children outside of txgraph 88672e205ba1 Rewrite GatherClusters to use the txgraph implementation 1ca4f01090cf Fix miniminer_tests to work with cluster limits 1902111e0f20 Eliminate CheckPackageLimits, which no longer does anything 3a646ec46264 Rework RBF and TRUC validation 19b8479868e5 Make getting parents/children a function of the mempool, not a mempool entry 5560913e51af Rework truc_policy to use descendants, not children a4458d6c4062 Use txgraph to calculate descendants c8b6f70d6492 Use txgraph to calculate ancestors 241a3e666b59 Simplify ancestor calculation functions b9cec7f0a1e0 Make removeConflicts private 0402e6c78080 Remove unused limits from CalculateMemPoolAncestors 08be765ac26a Remove mempool logic designed to maintain ancestor/descendant state fc4e3e6bc122 Remove unused members from CTxMemPoolEntry ff3b398d124b mempool: eliminate accessors to mempool entry ancestor/descendant cached state b9a2039f5122 Eliminate use of cached ancestor data in miniminer_tests and truc_policy ba09fc9774d5 mempool: Remove unused function CalculateDescendantMaximum 8e49477e86b3 wallet: Replace max descendant count with cluster_count e031085fd464 Eliminate Single-Conflict RBF Carve Out cf3ab8e1d0a2 Stop enforcing descendant size/count limits 89ae38f48965 test: remove rbf carveout test from mempool_limit.py c0bd04d18fdf Calculate descendant information for mempool RPC output on-the-fly bdcefb8a8b06 Use mempool/txgraph to determine if a tx has descendants 69e1eaa6ed22 Add test case for cluster size limits to TRUC logic 9cda64b86c59 Stop enforcing ancestor size/count limits 1f93227a84a5 Remove dependency on cached ancestor data in mini-miner 9fbe0a4ac26c rpc: Calculate ancestor data from scratch for mempool rpc calls 7961496dda2e Reimplement GetTransactionAncestry() to not rely on cached data feceaa42e8eb Remove CTxMemPool::GetSortedDepthAndScore 21b5cea588a7 Use cluster linearization for transaction relay sort order 6445aa7d9755 Remove the ancestor and descendant indices from the mempool 216e69372903 Implement new RBF logic for cluster mempool ff8f115dec6e policy: Remove CPFP carveout rule c3f1afc934e6 test: rewrite PopulateMempool to not violate mempool policy (cluster size) limits 47ab32fdb158 Select transactions for blocks based on chunk feerate dec138d1ddc7 fuzz: remove comparison between mini_miner block construction and miner 6c2bceb200aa bench: rewrite ComplexMemPool to not create oversized clusters 1ad4590f6385 Limit mempool size based on chunk feerate b11c89cab210 Rework miner_tests to not require large cluster limit 95a8297d481e Check cluster limits when using -walletrejectlongchains 95762e675959 Do not allow mempool clusters to exceed configured limits edb3e7cdf636 [test] rework/delete feature_rbf tests requiring large clusters 435fd5671116 test: update feature_rbf.py replacement test 34e32985e811 Add new (unused) limits for cluster size/count 838d7e355366 Add transactions to txgraph, but without cluster dependencies 552eb90071fd doc: CI - Describe qemu-user-static usage 2afbbddee550 doc: CI - Clarify how important `env -i` is and why 2444488f6ad3 Merge bitcoin/bitcoin#33894: net: Remove unused `local_socket_bytes` variable in `CConnman::GetAddresses()` fa1bf6818f09 clang-format: Set InsertNewlineAtEOF: true 115d298a9fa3 Merge bitcoin/bitcoin#33872: init: completely remove `-maxorphantx` option a90f3922ff7d Merge bitcoin/bitcoin#32419: psbt: clarify PSBT, PSBTInput, PSBTOutput unserialization flows 4d893c0f4605 net: Remove unused `local_socket_bytes` variable in `CConnman::GetAddresses()` fa1dacaebe5d ci: Move lint exec snippet to stand-alone py file ead849c9f177 Merge bitcoin/bitcoin#33886: test: Remove tests violating hardened std::span c03081fdb467 Merge bitcoin/bitcoin#33776: ci: Lint follow-ups fadb4f63cb0f test: Remove tests violating hardened std::span 6e2155816058 Merge bitcoin/bitcoin#33869: refactor: Avoid -W*-whitespace in git archive c8715aca95d0 Merge bitcoin/bitcoin#33247: build: Remove CMAKE_SKIP_BUILD_RPATH and SKIP_BUILD_RPATH settings ee5de407e369 Merge bitcoin/bitcoin#33537: guix: build `bitcoin-qt` with static libxcb & utils 024a7873500e Merge bitcoin/bitcoin#33876: doc: Update NetBSD Build Guide c66e98875439 Merge bitcoin/bitcoin#33865: cmake: Specify Windows plugin path in `test_bitcoin-qt` property c29eaeeaf937 doc: Update NetBSD Build Guide 7f318e1dd049 test: Add better coverage for Autofile size() e221b2524659 Merge bitcoin/bitcoin#33860: depends: drop Qt patches b7af960eb82f refactor: Add AutoFile::size ec0f75862e67 refactor: Modernize logging in util/asmap.cpp 606a251e0a31 tests: add unit test vectors for asmap interpreter 6657bcbdb4d0 kernel: allow null data_directory 0aebdac95da9 init: completely remove `-maxorphantx` option 99d012ec80a4 refactor: return reference instead of pointer f743e6c5dd38 refactor: add missing LIFETIMEBOUND annotation for parameter fa95353902b7 ci: Run macos tasks in a git archive, not git checkout 141117f5e8b4 refactor: remove incorrect LIFETIMEBOUND annotations fae3618fd6c8 ci: Annotate all check runs with the pull request number faf05d637d67 ci: Retry lint image building once after failure 96963b888e5a depends: static libxcb ad06843fab06 depends: avoid qdbusviewer in Qt build 6848ed56dc5f depends: apply Qt patches to fix static libxcb use dfde31f2ec1f Merge bitcoin/bitcoin#33864: scripted-diff: fix leftover references to `policy/fees.h` 5f1b016bebd2 depends: static libxcb-util-image 98a2fbbe70b8 depends: static libxkbcommon 1412baf77295 depends: static libxcb-util-wm a4009dadf466 depends: static libxcb-keysyms bcfb8679b3ba depends: static libxcb-render-util faf99ae37963 refactor: Avoid -W*-whitespace in git archive 2594d5a189e5 build: Remove CMAKE_SKIP_BUILD_RPATH and SKIP_BUILD_RPATH settings 310e4979b36c qt: Added test coverage for qt gui#901 console history filter 0dd8d5c237e2 cmake: Specify Windows plugin path in `test_bitcoin-qt` property b0a38871546d scripted-diff: fix leftover references to `policy/fees.h` 48d4b936e09f Merge bitcoin/bitcoin#33511: init: Fix Ctrl-C shutdown hangs during wait calls 3c3c6adb7260 Merge bitcoin/bitcoin#33745: mining: check witness commitment in submitBlock e652b69b8da4 Merge bitcoin/bitcoin#33003: test: add option to skip large re-org test in feature_block 3e9aca6f1b52 depends: drop qtbase-moc-ignore-gcc-macro.patch qt patch fac4f6de28e7 ci: Rewrite lint task Bash snippet to Python fa0d37a57985 ci: Rewrite Bash to check inputs to Python 0da5a82700e9 depends: drop unused qt patch fae83611b8ef ci: [refactor] Use --preset=dev-mode in mac_native task fadb67b4b4e1 ci: [refactor] Base nowallet task on --preset=dev-mode 6666980e8653 ci: Enable bitcoin-chainstate and test_bitcoin-qt in win64 task 096924d39d64 kernel: add btck_block_tree_entry_equals faff7b231246 ci: Enable experimental kernel stuff in i686 task fa1632eecf58 ci: Enable experimental kernel stuff in mac-cross tasks fad10ff7c923 ci: Enable experimental kernel stuff in armhf task fa9d67c13d0d ci: Enable experimental kernel stuff in Alpine task fab3fb83026e ci: Enable experimental kernel stuff in s390x task fa7da8a646ed ci: Enable experimental kernel stuff in valgrind task fa9c2973d60b ci: Enable experimental kernel stuff in TSan task fad30d439502 ci: Enable experimental kernel stuff in MSan task d5ed9cb3eb52 Add accessor for sigops-adjusted weight 1bf3b513966e Add sigops adjusted weight calculator c18c68a950d3 Create a txgraph inside CTxMemPool 29a94d5b2f26 Make CTxMemPoolEntry derive from TxGraph::Ref 92b0079fe386 Allow moving CTxMemPoolEntry objects, disallow copying f6ec3519a330 init: Require explicit -asmap filename 6eaa00fe2020 test: clarify submitBlock() mutates the template 862bd432837e mining: ensure witness commitment check in submitBlock 00d1b6ef4b12 doc: clarify UpdateUncommittedBlockStructures 929f69d0ff29 qt: Remove HD seed reference from blank wallet tooltip 1db74914706f depends: sqlite 3.50.4 286f3e49c84c guix: sqlite wants tcl de7c3587cd45 doc: Update add checksum instructions in tutorial 6c73e4744837 mempool: Store iterators into mapTx in mapNextTx 51430680ecb7 Allow moving an Epoch::Marker 2a46e94a1600 doc: Update multisig-tutorial.md to use multipath descriptors c25a5e670b27 init: Signal m_tip_block_cv on Ctrl-C f53dbbc5057b test: Add functional tests for named argument parsing 694f04e2bd34 rpc: Handle -named argument parsing where '=' character is used 6a29f79006a9 test: Test SIGTERM handling during waitforblockheight call 8810642b571e test: add option to skip large re-org test in feature_block d31158d3646f psbt: clarify PSBT, PSBTInput, PSBTOutput unserialization flows 28a4fcb03c0f test: check listdescriptors do not return a mix of hardened derivation marker 975783cb79e9 descriptor: account for all StringType in MiniscriptDescriptor::ToStringHelper() git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: 6356041e58d1ba86695e2e7c219c68ee5abe583f
1 parent 7f93626 commit 7334556

File tree

182 files changed

+3571
-4016
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

182 files changed

+3571
-4016
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: 'Clear unnecessary files'
2+
description: 'Clear out unnecessary files to make space on the VM'
3+
runs:
4+
using: 'composite'
5+
steps:
6+
- name: Clear unnecessary files
7+
shell: bash
8+
env:
9+
DEBIAN_FRONTEND: noninteractive
10+
run: |
11+
set +o errexit
12+
sudo bash -c '(ionice -c 3 nice -n 19 rm -rf /usr/share/dotnet/ /usr/local/graalvm/ /usr/local/.ghcup/ /usr/local/share/powershell /usr/local/share/chromium /usr/local/lib/android /usr/local/lib/node_modules)&'

.github/actions/configure-docker/action.yml

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,11 @@ runs:
88
using: 'composite'
99
steps:
1010
- name: Check inputs
11-
shell: bash
11+
shell: python
1212
run: |
1313
# We expect only gha or cirrus as inputs to cache-provider
14-
case "${{ inputs.cache-provider }}" in
15-
gha|cirrus)
16-
;;
17-
*)
18-
echo "::warning title=Unknown input to configure docker action::Provided value was ${{ inputs.cache-provider }}"
19-
;;
20-
esac
14+
if "${{ inputs.cache-provider }}" not in ("gha", "cirrus"):
15+
print("::warning title=Unknown input to configure docker action::Provided value was ${{ inputs.cache-provider }}")
2116
2217
- name: Set up Docker Buildx
2318
uses: docker/setup-buildx-action@v3

.github/ci-lint-exec.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/usr/bin/env python3
2+
# Copyright (c) The Bitcoin Core developers
3+
# Distributed under the MIT software license, see the accompanying
4+
# file COPYING or https://opensource.org/license/mit.
5+
6+
import os
7+
import shlex
8+
import subprocess
9+
import sys
10+
import time
11+
12+
13+
def run(cmd, **kwargs):
14+
print("+ " + shlex.join(cmd), flush=True)
15+
kwargs.setdefault("check", True)
16+
try:
17+
return subprocess.run(cmd, **kwargs)
18+
except Exception as e:
19+
sys.exit(e)
20+
21+
22+
def main():
23+
CONTAINER_NAME = os.environ["CONTAINER_NAME"]
24+
25+
build_cmd = [
26+
"docker", "buildx", "build",
27+
f"--tag={CONTAINER_NAME}",
28+
*shlex.split(os.getenv("DOCKER_BUILD_CACHE_ARG", "")),
29+
"--file=./ci/lint_imagefile",
30+
"."
31+
]
32+
33+
if run(build_cmd, check=False).returncode != 0:
34+
print("Retry building image tag after failure")
35+
time.sleep(3)
36+
run(build_cmd)
37+
38+
extra_env = []
39+
if os.environ["GITHUB_EVENT_NAME"] == "pull_request":
40+
extra_env = ["--env", "LINT_CI_IS_PR=1"]
41+
if os.environ["GITHUB_EVENT_NAME"] != "pull_request" and os.environ["GITHUB_REPOSITORY"] == "bitcoin/bitcoin":
42+
extra_env = ["--env", "LINT_CI_SANITY_CHECK_COMMIT_SIG=1"]
43+
44+
run([
45+
"docker",
46+
"run",
47+
"--rm",
48+
*extra_env,
49+
f"--volume={os.getcwd()}:/bitcoin",
50+
CONTAINER_NAME,
51+
])
52+
53+
54+
if __name__ == "__main__":
55+
main()

.github/workflows/ci.yml

Lines changed: 78 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@ jobs:
3535
outputs:
3636
provider: ${{ steps.runners.outputs.provider }}
3737
steps:
38-
- name: Annotate with pull request number
38+
- &ANNOTATION_PR_NUMBER
39+
name: Annotate with pull request number
3940
# This annotation is machine-readable and can be used to assign a check
40-
# run to its corresponding pull request. Running in one check run is
41-
# sufficient for each check suite.
41+
# run to its corresponding pull request. Running in all check runs is
42+
# required, because check re-runs discard the annotations of other
43+
# tasks in the test suite.
4244
run: |
4345
if [ "${{ github.event_name }}" = "pull_request" ]; then
4446
echo "::notice title=debug_pull_request_number_str::${{ github.event.number }}"
@@ -63,6 +65,7 @@ jobs:
6365
steps:
6466
- name: Determine fetch depth
6567
run: echo "FETCH_DEPTH=$((${{ github.event.pull_request.commits }} + 2))" >> "$GITHUB_ENV"
68+
- *ANNOTATION_PR_NUMBER
6669
- uses: actions/checkout@v5
6770
with:
6871
ref: ${{ github.event.pull_request.head.sha }}
@@ -131,16 +134,18 @@ jobs:
131134
include:
132135
- job-type: standard
133136
file-env: './ci/test/00_setup_env_mac_native.sh'
134-
job-name: 'macOS native, no depends, sqlite only, gui'
137+
job-name: 'macOS native'
135138
- job-type: fuzz
136139
file-env: './ci/test/00_setup_env_mac_native_fuzz.sh'
137140
job-name: 'macOS native, fuzz'
138141

139142
env:
140143
DANGER_RUN_CI_ON_HOST: 1
141-
BASE_ROOT_DIR: ${{ github.workspace }}
144+
BASE_ROOT_DIR: ${{ github.workspace }}/repo_archive
142145

143146
steps:
147+
- *ANNOTATION_PR_NUMBER
148+
144149
- &CHECKOUT
145150
name: Checkout
146151
uses: actions/checkout@v5
@@ -150,11 +155,11 @@ jobs:
150155

151156
- name: Clang version
152157
run: |
153-
# Use the earliest Xcode supported by the version of macOS denoted in
158+
# Use the latest Xcode supported by the version of macOS denoted in
154159
# doc/release-notes-empty-template.md and providing at least the
155160
# minimum clang version denoted in doc/dependencies.md.
156-
# See: https://developer.apple.com/documentation/xcode-release-notes/xcode-16-release-notes
157-
sudo xcode-select --switch /Applications/Xcode_16.0.app
161+
# See: https://developer.apple.com/documentation/xcode-release-notes/xcode-16_2-release-notes
162+
sudo xcode-select --switch /Applications/Xcode_16.2.app
158163
clang --version
159164
160165
- name: Install Homebrew packages
@@ -176,14 +181,22 @@ jobs:
176181
key: ${{ github.job }}-${{ matrix.job-type }}-ccache-${{ github.run_id }}
177182
restore-keys: ${{ github.job }}-${{ matrix.job-type }}-ccache-
178183

184+
- name: Create git archive
185+
run: |
186+
git log -1
187+
git archive --format=tar --prefix=repo_archive/ --output=repo.tar HEAD
188+
tar -xf repo.tar
189+
179190
- name: CI script
180-
run: ./ci/test_run_all.sh
191+
run: |
192+
cd repo_archive
193+
./ci/test_run_all.sh
181194
env:
182195
FILE_ENV: ${{ matrix.file-env }}
183196

184197
- name: Save Ccache cache
185198
uses: actions/cache/save@v4
186-
if: github.event_name != 'pull_request' && steps.ccache-cache.outputs.cache-hit != 'true'
199+
if: github.event_name != 'pull_request' && github.ref_name == github.event.repository.default_branch && steps.ccache-cache.outputs.cache-hit != 'true'
187200
with:
188201
path: ${{ env.CCACHE_DIR }}
189202
# https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache
@@ -205,13 +218,15 @@ jobs:
205218
job-type: [standard, fuzz]
206219
include:
207220
- job-type: standard
208-
generate-options: '-DBUILD_GUI=ON -DWITH_ZMQ=ON -DBUILD_BENCH=ON -DBUILD_KERNEL_LIB=ON -DBUILD_UTIL_CHAINSTATE=ON -DWERROR=ON'
221+
generate-options: '-DBUILD_BENCH=ON -DBUILD_KERNEL_LIB=ON -DBUILD_UTIL_CHAINSTATE=ON -DWERROR=ON'
209222
job-name: 'Windows native, VS 2022'
210223
- job-type: fuzz
211-
generate-options: '-DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON -DVCPKG_MANIFEST_FEATURES="wallet" -DBUILD_GUI=OFF -DBUILD_FOR_FUZZING=ON -DWERROR=ON'
224+
generate-options: '-DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON -DVCPKG_MANIFEST_FEATURES="wallet" -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DBUILD_FOR_FUZZING=ON -DWERROR=ON'
212225
job-name: 'Windows native, fuzz, VS 2022'
213226

214227
steps:
228+
- *ANNOTATION_PR_NUMBER
229+
215230
- *CHECKOUT
216231

217232
- &SET_UP_VS
@@ -261,7 +276,7 @@ jobs:
261276
262277
- name: Save vcpkg binary cache
263278
uses: actions/cache/save@v4
264-
if: github.event_name != 'pull_request' && steps.vcpkg-binary-cache.outputs.cache-hit != 'true' && matrix.job-type == 'standard'
279+
if: github.event_name != 'pull_request' && github.ref_name == github.event.repository.default_branch && steps.vcpkg-binary-cache.outputs.cache-hit != 'true' && matrix.job-type == 'standard'
265280
with:
266281
path: ~/AppData/Local/vcpkg/archives
267282
key: ${{ github.job }}-vcpkg-binary-${{ hashFiles('cmake_version', 'msbuild_version', 'toolset_version', 'vcpkg.json') }}
@@ -295,8 +310,6 @@ jobs:
295310
- name: Run test suite
296311
if: matrix.job-type == 'standard'
297312
working-directory: build
298-
env:
299-
QT_PLUGIN_PATH: '${{ github.workspace }}\build\vcpkg_installed\x64-windows\Qt6\plugins'
300313
run: |
301314
ctest --output-on-failure --stop-on-failure -j $NUMBER_OF_PROCESSORS -C Release
302315
@@ -331,16 +344,30 @@ jobs:
331344
py -3 test/fuzz/test_runner.py --par $NUMBER_OF_PROCESSORS --loglevel DEBUG "${RUNNER_TEMP}/qa-assets/fuzz_corpora"
332345
333346
windows-cross:
334-
name: 'Linux->Windows cross, no tests'
347+
name: 'Windows-cross to x86_64, ${{ matrix.crt }}'
335348
needs: runners
336349
runs-on: ${{ needs.runners.outputs.provider == 'cirrus' && 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm' || 'ubuntu-24.04' }}
337350
if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
338351

352+
strategy:
353+
fail-fast: false
354+
matrix:
355+
crt: [msvcrt, ucrt]
356+
include:
357+
- crt: msvcrt
358+
file-env: './ci/test/00_setup_env_win64_msvcrt.sh'
359+
artifact-name: 'x86_64-w64-mingw32-executables'
360+
- crt: ucrt
361+
file-env: './ci/test/00_setup_env_win64.sh'
362+
artifact-name: 'x86_64-w64-mingw32ucrt-executables'
363+
339364
env:
340-
FILE_ENV: './ci/test/00_setup_env_win64.sh'
365+
FILE_ENV: ${{ matrix.file-env }}
341366
DANGER_CI_ON_HOST_FOLDERS: 1
342367

343368
steps:
369+
- *ANNOTATION_PR_NUMBER
370+
344371
- *CHECKOUT
345372

346373
- name: Configure environment
@@ -364,29 +391,42 @@ jobs:
364391
- name: Upload built executables
365392
uses: actions/upload-artifact@v4
366393
with:
367-
name: x86_64-w64-mingw32-executables-${{ github.run_id }}
394+
name: ${{ matrix.artifact-name }}-${{ github.run_id }}
368395
path: |
396+
${{ env.BASE_BUILD_DIR }}/bin/*.dll
369397
${{ env.BASE_BUILD_DIR }}/bin/*.exe
370398
${{ env.BASE_BUILD_DIR }}/src/secp256k1/bin/*.exe
371399
${{ env.BASE_BUILD_DIR }}/src/univalue/*.exe
372400
${{ env.BASE_BUILD_DIR }}/test/config.ini
373401
374402
windows-native-test:
375-
name: 'Windows, test cross-built'
403+
name: 'Windows, ${{ matrix.crt }}, test cross-built'
376404
runs-on: windows-2022
377405
needs: windows-cross
378406

407+
strategy:
408+
fail-fast: false
409+
matrix:
410+
crt: [msvcrt, ucrt]
411+
include:
412+
- crt: msvcrt
413+
artifact-name: 'x86_64-w64-mingw32-executables'
414+
- crt: ucrt
415+
artifact-name: 'x86_64-w64-mingw32ucrt-executables'
416+
379417
env:
380418
PYTHONUTF8: 1
381419
TEST_RUNNER_TIMEOUT_FACTOR: 40
382420

383421
steps:
422+
- *ANNOTATION_PR_NUMBER
423+
384424
- *CHECKOUT
385425

386426
- name: Download built executables
387427
uses: actions/download-artifact@v5
388428
with:
389-
name: x86_64-w64-mingw32-executables-${{ github.run_id }}
429+
name: ${{ matrix.artifact-name }}-${{ github.run_id }}
390430

391431
- name: Run bitcoind.exe
392432
run: ./bin/bitcoind.exe -version
@@ -415,6 +455,7 @@ jobs:
415455
- name: Run unit tests
416456
# Can't use ctest here like other jobs as we don't have a CMake build tree.
417457
run: |
458+
./bin/test_bitcoin-qt.exe
418459
./bin/test_bitcoin.exe -l test_suite # Intentionally run sequentially here, to catch test case failures caused by dirty global state from prior test cases.
419460
./src/secp256k1/bin/exhaustive_tests.exe
420461
./src/secp256k1/bin/noverify_tests.exe
@@ -461,7 +502,7 @@ jobs:
461502
fail-fast: false
462503
matrix:
463504
include:
464-
- name: '32 bit ARM, unit tests, no functional tests'
505+
- name: '32 bit ARM'
465506
cirrus-runner: 'ubuntu-24.04-arm' # Cirrus' Arm runners are Apple (with virtual Linux aarch64), which doesn't support 32-bit mode
466507
fallback-runner: 'ubuntu-24.04-arm'
467508
timeout-minutes: 120
@@ -486,19 +527,19 @@ jobs:
486527
timeout-minutes: 120
487528
file-env: './ci/test/00_setup_env_mac_cross_intel.sh'
488529

489-
- name: 'No wallet, libbitcoinkernel'
530+
- name: 'No wallet'
490531
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm'
491532
fallback-runner: 'ubuntu-24.04'
492533
timeout-minutes: 120
493-
file-env: './ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh'
534+
file-env: './ci/test/00_setup_env_native_nowallet.sh'
494535

495-
- name: 'no IPC, i686, DEBUG'
536+
- name: 'i686, no IPC'
496537
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md'
497538
fallback-runner: 'ubuntu-24.04'
498539
timeout-minutes: 120
499540
file-env: './ci/test/00_setup_env_i686_no_ipc.sh'
500541

501-
- name: 'fuzzer,address,undefined,integer, no depends'
542+
- name: 'fuzzer,address,undefined,integer'
502543
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-lg'
503544
fallback-runner: 'ubuntu-24.04'
504545
timeout-minutes: 240
@@ -516,7 +557,7 @@ jobs:
516557
timeout-minutes: 120
517558
file-env: './ci/test/00_setup_env_native_previous_releases.sh'
518559

519-
- name: 'Alpine (musl), depends, gui'
560+
- name: 'Alpine (musl)'
520561
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md'
521562
fallback-runner: 'ubuntu-24.04'
522563
timeout-minutes: 120
@@ -528,7 +569,7 @@ jobs:
528569
timeout-minutes: 120
529570
file-env: './ci/test/00_setup_env_native_tidy.sh'
530571

531-
- name: 'TSan, depends, no gui'
572+
- name: 'TSan'
532573
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md'
533574
fallback-runner: 'ubuntu-24.04'
534575
timeout-minutes: 120
@@ -540,13 +581,15 @@ jobs:
540581
timeout-minutes: 150
541582
file-env: './ci/test/00_setup_env_native_fuzz_with_msan.sh'
542583

543-
- name: 'MSan, depends'
584+
- name: 'MSan'
544585
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-lg'
545586
fallback-runner: 'ubuntu-24.04'
546587
timeout-minutes: 120
547588
file-env: './ci/test/00_setup_env_native_msan.sh'
548589

549590
steps:
591+
- *ANNOTATION_PR_NUMBER
592+
550593
- *CHECKOUT
551594

552595
- name: Configure environment
@@ -561,6 +604,10 @@ jobs:
561604
with:
562605
cache-provider: ${{ matrix.provider || needs.runners.outputs.provider }}
563606

607+
- name: Clear unnecessary files
608+
if: ${{ needs.runners.outputs.provider == 'gha' && true || false }} # Only needed on GHA runners
609+
uses: ./.github/actions/clear-files
610+
564611
- name: Enable bpfcc script
565612
if: ${{ env.CONTAINER_NAME == 'ci_native_asan' }}
566613
# In the image build step, no external environment variables are available,
@@ -587,6 +634,8 @@ jobs:
587634
env:
588635
CONTAINER_NAME: "bitcoin-linter"
589636
steps:
637+
- *ANNOTATION_PR_NUMBER
638+
590639
- name: Checkout
591640
uses: actions/checkout@v5
592641
with:
@@ -599,11 +648,4 @@ jobs:
599648
cache-provider: ${{ needs.runners.outputs.provider }}
600649

601650
- name: CI script
602-
run: |
603-
set -o xtrace
604-
docker buildx build -t "$CONTAINER_NAME" $DOCKER_BUILD_CACHE_ARG --file "./ci/lint_imagefile" .
605-
CIRRUS_PR_FLAG=""
606-
if [ "${{ github.event_name }}" = "pull_request" ]; then
607-
CIRRUS_PR_FLAG="-e CIRRUS_PR=1"
608-
fi
609-
docker run --rm $CIRRUS_PR_FLAG -v "$(pwd)":/bitcoin "$CONTAINER_NAME"
651+
run: python .github/ci-lint-exec.py

0 commit comments

Comments
 (0)