Skip to content

build: Drop ZeroMQ patch for glibc < 2.12 (Hennadii Stepanov) 079df96 build: Drop ZeroMQ patch for Mingw-w64 < 4.0 (Hennadii Stepanov)#3

Open
ryihan wants to merge 10000 commits intoNetboxGlobal:masterfrom
bitcoin:master
Open

build: Drop ZeroMQ patch for glibc < 2.12 (Hennadii Stepanov) 079df96 build: Drop ZeroMQ patch for Mingw-w64 < 4.0 (Hennadii Stepanov)#3
ryihan wants to merge 10000 commits intoNetboxGlobal:masterfrom
bitcoin:master

Conversation

@ryihan
Copy link

@ryihan ryihan commented Oct 7, 2022

build: Drop ZeroMQ patch for glibc < 2.12 (Hennadii Stepanov)
079df96 build: Drop ZeroMQ patch for Mingw-w64 < 4.0 (Hennadii Stepanov)

ismaelsadeeq and others added 30 commits March 2, 2026 22:33
The sentinel pattern was necessary to collect conflicted transactions
before their associated block was recorded, but that tracking was
removed in 5613f98.
…ust IPC client

8fe91f3 test: Updates needed after bitcoin-core/libmultiprocess#240 (Ryan Ofsky)
b7ca3bf Squashed 'src/ipc/libmultiprocess/' changes from 1fc65008f7d..1868a84451f (Ryan Ofsky)
1fea3ba ipc, test: Add tests for unclean disconnect and thread busy behavior (Ryan Ofsky)

Pull request description:

  Includes:

  - bitcoin-core/libmultiprocess#241
  - bitcoin-core/libmultiprocess#240
  - bitcoin-core/libmultiprocess#244
  - bitcoin-core/libmultiprocess#245

  The main change is bitcoin-core/libmultiprocess#240 which fixes issues with asynchronous requests (#33923) and unclean disconnects (#34250) that happen with the rust mining client. It also adds tests for these fixes which had some previous review in #34284 (that PR was closed to simplify dependencies between PRs).

  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)

  Resolves #33923 and #34250

ACKs for top commit:
  Sjors:
    re-ACK 8fe91f3
  janb84:
    reACK 8fe91f3
  Eunovo:
    ACK 8fe91f3

Tree-SHA512: 7e8923610502ebd8603bbea703f82178ab9e956874d394da3451f5268afda2b964d0eeb399a74d49c4123e728a14c27c0296118577a6063ff03b2b8203a257ce
Otherwise this check will "pass", like:
```bash
-- Detecting CXX compile features - done
-- Found LLVM 21.1.8
-- Found clang-tidy: CLANG_TIDY_EXE-NOTFOUND
-- Configuring done (0.5s)
```
```bash
   15 | #warning The ClangTidyModuleRegistry.h header is deprecated and will be removed in LLVM 24. All of the symbols it used to define have been moved into ClangTidyModule.h.
      |  ^~~~~~~
[100%] Linking CXX shared module libbitcoin-tidy.so
```
Added -config-file as otherwise run-clang-tidy no-longer seemed able to
find the config file.
5e35a90 interpreter: remove clang-tidy suppression (fanquake)
4089682 ci: use Clang 22 in tidy task (fanquake)
7ea076f tidy: remove deprecated header (fanquake)
eb17f29 tidy: clang-tidy is required (fanquake)

Pull request description:

  Changes needed for moving to Clang 22 in the tidy job.

ACKs for top commit:
  maflcko:
    lgtm ACK 5e35a90
  hebasto:
    ACK 5e35a90, I have reviewed the code and it looks OK.

Tree-SHA512: 9ca6e841f7480b8abd78d5621d08a5bf80c2ff4facd7a0d76038ac1771bbf3d37dc2df19fa27583679177e4618db6294e2f2bb2129d9c25a53338b49ed71aac2
fa7612f ci: Download script_assets_test.json for Windows CI (MarcoFalke)
7777a13 test: Move Fetching-print to download_from_url util (MarcoFalke)
faf9628 test: move-only download_from_url to stand-alone util file (MarcoFalke)
fa0cc1c test: [doc] Remove outdated comment (MarcoFalke)

Pull request description:

  Fixes #34670 by adding a new `download_script_assets` Python helper and calling it.

ACKs for top commit:
  hebasto:
    re-ACK fa7612f.
  janb84:
    re ACK fa7612f
  hodlinator:
    utACK fa7612f

Tree-SHA512: 73c2cb3a31f231174566fb880b82de92734b1679ef000f8d793d774b7e5f5a7b8c7994a3998ca78821115bdc80c16aada69cf596e92c083cf9b9a95c7cee16ea
The `find_package(Qt .. MODULE REQUIRED COMPONENTS ...)` call must treat
any missing component as a fatal error.
Cross-compiling Qt 6.8 for Windows requires GCC 13.1 or newer, which
exceeds the currently documented minimum.
See https://doc.qt.io/qt-6.8/windows.html.
b87a1c2 doc: Improve dependencies.md IPC documentation (Ryan Ofsky)

Pull request description:

  Improve dependencies.md to document IPC dependencies better ([preview](https://github.com/ryanofsky/bitcoin/blob/pr/ipc-depdoc/doc/dependencies.md#build-1)). Specific changes are listed in the commit message.

  This PR is based on #33623 by willcl-ark which made similar changes in the 29.x branch. This PR could also be backported to 30.x (it merges cleanly, and master and 30.x both have the same version requirements).

ACKs for top commit:
  l0rinc:
    ACK b87a1c2
  sedited:
    ACK b87a1c2

Tree-SHA512: 566b5372d189f0ad04f978ddefbd8c200dcc19b25af02c73275c5faf7529943680ec59703bda11640cf7920466b4cdd46305cac4d3770e2303de37694ae78909
…ference

1c1de33 test: avoid interface_ipc.py race and null pointer dereference (Ryan Ofsky)

Pull request description:

  Avoid race condition in `run_deprecated_mining_test` caused by creating and immediately destroying an unused worker thread. This is leading to test failures reported by maflcko in #34711

ACKs for top commit:
  optout21:
    utACK 1c1de33
  l0rinc:
    Tested ACK 1c1de33
  w0xlt:
    ACK 1c1de33
  enirox001:
    ACK 1c1de33

Tree-SHA512: d0af9676a46e991a3f4fda3795c02d1998d30de24991436b8ada425585c6699ff32a7057ca7a0ef2925f782fd3bf73e0381f5d4325e4f1c09f487fce1de49e45
Add support for unicode characters in paths to the kernel tests by using
our fs:: wrappers for std::filesystem calls and adding the windows
application manifest to the binary. This exercises their handling
through the kernel API.
…eserialization

f51665b psbt: validate pubkeys in MuSig2 pubnonce/partial sig deserialization (tboy1337)

Pull request description:

  The previous fix for invalid MuSig2 pubkeys (#34010) only
  addressed the PSBT_IN_MUSIG2_PARTICIPANT_PUBKEYS field. However, the
  PSBT_IN_MUSIG2_PUB_NONCE and PSBT_IN_MUSIG2_PARTIAL_SIG fields also
  deserialize pubkeys without validation, which could lead to crashes when
  invalid pubkeys are processed.

  This commit adds validation to the DeserializeMuSig2ParticipantDataIdentifier
  function to ensure all pubkeys in MuSig2 pubnonce and partial signature
  fields are fully valid elliptic curve points.

  The fix:
  - Validates both aggregate and participant pubkeys in MuSig2 pubnonce and
    partial signature deserialization
  - Throws std::ios_base::failure with descriptive error messages for invalid
    pubkeys
  - Prevents potential crashes from invalid elliptic curve points
  - Maintains backward compatibility for valid PSBTs

  This completes the fix for issues [#33999](#33999) and [#34201](#34201).

ACKs for top commit:
  rkrux:
    lgtm ACK f51665b
  w0xlt:
    ACK f51665b
  darosior:
    utACK f51665b

Tree-SHA512: 8454d77a05aa003a3121b0a5975e8a000125ee0d62343bfa625a75db113358ba7a210ae0376ca1666957b7de7005e06e5a54c95170430ee5e9e1416719b8af53
This will prevent us from creating a serialization we do not accept
going forward.
This call is a no-op. PopulateAndValidateSnapshot already sets both
the chain tip and the coins cache best block to the snapshot block,
so LoadChainTip always hits the early return when it finds that the
two match (tip->GetBlockHash() == coins_cache.GetBestBlock()).
The removal of the chain tip from setBlockIndexCandidates was
happening after nSequenceId was modified. Since the set uses
nSequenceId as a sort key, modifying it while the element is in the
set is undefined behavior, which can cause the erase to fail.

With assumeutxo, a second form of UB exists: two chainstates each
have their own candidate set, but share the same CBlockIndex
objects. Calling LoadChainTip on one chainstate mutates nSequenceIds
that are also in the other chainstate's set.

Fix by populating setBlockIndexCandidates after all changes to
nSequenceId.
faa68ed test: Fix intermittent issue in wallet_assumeutxo.py (MarcoFalke)

Pull request description:

  The test has many issues:

  * It fails intermittently, due to the use of `-stopatheight` (#34710)
  * Using `-stopatheight` is expensive, because it requires two restarts, making the test slow
  * The overwritten `def setup_network` does not store the extra args via the `add_nodes` call, so if code is added in the future to restart a node, it may not pick up its global extra args.

  Fix all issues by:

  * Adding and using a fast `dumb_sync_blocks` util helper to achieve what `-stopatheight` doesn't achieve
  * Calling `self.add_nodes(self.num_nodes, self.extra_args)` in the overridden `setup_network`

  Can be tested via this diff:

  ```diff
  diff --git a/src/node/kernel_notifications.cpp b/src/node/kernel_notifications.cpp
  index ab0e5cc..49384c10b8 100644
  --- a/src/node/kernel_notifications.cpp
  +++ b/src/node/kernel_notifications.cpp
  @@ -61,2 +61,3 @@ kernel::InterruptResult KernelNotifications::blockTip(SynchronizationState state
       if (m_stop_at_height && index.nHeight >= m_stop_at_height) {
  +        LogInfo("Send shutdown signal after reaching stop height");
           if (!m_shutdown_request()) {
  diff --git a/src/util/tokenpipe.cpp b/src/util/tokenpipe.cpp
  index c982fa6..a5565ebd36 100644
  --- a/src/util/tokenpipe.cpp
  +++ b/src/util/tokenpipe.cpp
  @@ -4,2 +4,3 @@
   #include <util/tokenpipe.h>
  +#include <util/time.h>

  @@ -60,2 +61,3 @@ int TokenPipeEnd::TokenRead()
           ssize_t result = read(m_fd, &token, 1);
  +        UninterruptibleSleep(500ms);
           if (result < 0) {
  ```

  On master: The test fails
  On this pull: The test passes

  Fixes #34710

ACKs for top commit:
  kevkevinpal:
    ACK [faa68ed](faa68ed)
  achow101:
    ACK faa68ed
  w0xlt:
    ACK faa68ed

Tree-SHA512: 6fcd52b6f6a5fa5a5e41e7b3cf5c733af62af9c60271e7d22c266aca90f2af67f91ffe80a3ed8b8d1a91d001700870f493207998bac988c4e3671a3a0dba7ba7
Fix the from-disk subtest to use a separate node so it builds on a
clean genesis block, rather than the leftover chain from the
in-memory subtest.

Change from a two-way to a three-way block race. The UB in the old
LoadChainTip (mutating nSequenceId, a sort key, while the block is
in setBlockIndexCandidates) corrupts the internal tree structure,
resulting in a failed erase that leaves stale blocks in the set
alongside the tip. With only two competing blocks, this is caught
by libstdc++ but not by libc++. A three-way split triggers the bug
on both implementations.

To trigger CheckBlockIndex (where the crashing assertion is), replace
the restart loop with sending a new block after a single restart.
d76ec4d fuzz: make sure PSBT serialization roundtrips (Antoine Poinsot)

Pull request description:

  ~~Invalid public keys were accepted in Musig2 partial signatures. Because we serialize invalid keys as the empty byte string, this would lead us to creating an invalid PSBT serializations.~~

  ~~This can be checked by reverting the first commit with the fix and simply running the target against the existing qa-assets corpus for the `psbt` harness.~~

  This patch found the issue fixed in #34219 with a single run against the existing qa-assets corpus. It is useful to make sure there are no similar bugs, and we don't introduce roundtrip regressions outside of the specifc instance of accepting invalid public keys in Musig2 fields.

  *(Edited on March 4 to only contain the fuzz harness patch)*

ACKs for top commit:
  davidgumberg:
    crACK d76ec4d
  achow101:
    ACK d76ec4d
  dergoegge:
    utACK d76ec4d
  brunoerg:
    code review ACK d76ec4d

Tree-SHA512: ab5f8d4e6a1781ecdef825e1a0e2793a6b553f36c923a4a35cb1af4070eead9d9780f6cc9a76235aa03462e52a129d15e61f631490b43651dc4395f3f1c005f3
Replace ConnectTrace with a plain std::vector<ConnectedBlock>, and
rename PerBlockConnectTrace to ConnectedBlock and connectTrace to
connected_blocks.
fanquake and others added 30 commits March 19, 2026 21:49
d6f680b validation: Move block into BlockDisconnected signal (sedited)
4d02d2b validation: Move block into BlockConnected signal (sedited)
8b0fb64 validation: Move validation signal events to task runner (sedited)

Pull request description:

  This enforces behaviour that is currently already implicit: The destructor for blocks runs mostly in the [scheduler thread](https://bitcoin-dev-tools.github.io/benchcoin/results/pr-176/20472174834/mainnet-default-instrumented-head-flamegraph.svg?x=2762391536960&y=684). The change should make it a bit clearer what the ownership semantics for these validation signals are.

  `BlockConnected` already takes a reference to a block that is emplaced in `connected_blocks`. Once `connected_blocks` is iterated through, it is not reused. Similarly `BlockDisconnected` currently takes a reference to a block that is discarded after the call to it. Note that this does not give the guarantee that blocks' lifetimes are extended by other means once they are connected. For example after IBD, the block's lifetime is extended in net_processing's `m_most_recent_block` and `ActivateBestChain` itself takes a copy of the block's shared pointer, meaning its caller may delay de-allocation.

ACKs for top commit:
  maflcko:
    re-review ACK d6f680b 🔌
  stickies-v:
    re-ACK d6f680b
  frankomosh:
    Re-ACK d6f680b

Tree-SHA512: 9209a7d23e7af0d76fa70dff958b1329f38ef29ccc49b5a32bcf9f349d59cc2bf70464ebdb130d26077c0ff9362ce9211472231d375ff1c9c89c0ec3020eac80
On Windows, the `winerror.h` header defines `WAIT_TIMEOUT` as a macro.

This introduces a fragile dependency on header inclusion order: if
Windows headers happen to be included before using `WAIT_TIMEOUT`, the
preprocessor expands it into a numeric literal, causing syntax errors.

Rename the variable to `TEST_WAIT_TIMEOUT` to remove this fragility and
avoid the collision entirely.

-BEGIN VERIFY SCRIPT-
sed -i 's/\<WAIT_TIMEOUT\>/TEST_WAIT_TIMEOUT/g' $(git grep -l 'WAIT_TIMEOUT' ./src/)
-END VERIFY SCRIPT-
…nLockTime`, `nSequence`)

9f28120 kernel: Add API function for getting a tx input's nSequence (Sebastian Falbesoner)
6b64b18 kernel: Add API function for getting a tx's nLockTime (Sebastian Falbesoner)

Pull request description:

  This PR introduces two new C API functions to libbitcoinkernel:
  * `btck_transaction_get_locktime` to access a transaction's `nLockTime` value
  * `btck_transaction_input_get_sequence` to access a transaction input's `nSequence` value

  Inspired by https://bnoc.xyz/t/forward-compatible-coinbase-locktimes-for-bip-54. After reading this I thought it would be a nice/useful showcase to check BIP54 compliance of (historical) blocks using bitcoinkernel, without having to manually deserialize the transaction (this is just about one of the four BIP54 rules though, especially the sigops limit is much more involved).

ACKs for top commit:
  sedited:
    ACK 9f28120
  yuvicc:
    ACK 9f28120
  stickies-v:
    ACK 9f28120

Tree-SHA512: 9eae795d6e4b9b367bbfe2665b916121ef64031e8d10667c71741344b5eea4c2562862a937bdf1363cc66b67bb5d48392c9f44e52f0d92d2a5a65e10d061b703
…w-ups)

39e3295 test(miniscript): Check for depth rather than script size (Hodlinator)
5af5e87 test(miniscript): Make tested script valid (Hodlinator)
fd7c494 doc(miniscript): Explain why we operate on vectors (Hodlinator)
da51b5e refactor(miniscript): Move keys to avoid copy (Hodlinator)

Pull request description:

  * Add missing move #31713 (comment)
  * Document reason behind moving entire `vector`s #31713 (comment)
  * Make miniscript valid and improve test name #31713 (comment)
  * Check for miniscript node depth rather than script size #31713 (comment)

ACKs for top commit:
  l0rinc:
    ACK 39e3295
  sedited:
    ACK 39e3295
  darosior:
    Github light ACK 39e3295. Code looks correct to me. I don't understand why i'm co-author of the last commit, since i did not author any code in there. 🤷

Tree-SHA512: 88c240183d7ebe93e3a1d3d65969b435775190f15d2845b58dbd16938553bb6490ab57400544f90a5a3f9a73245dce769ffc4868ae6fb7513f7db46743bfb9e1
Including the missing `<span>` header in `serialize.h` allows IWYU to
correctly evaluate its redundancy elsewhere.
…le -Wcovered-switch-default

fa4ec13 build: Enable -Wcovered-switch-default (MarcoFalke)
fa2670b refactor: Enable -Wswitch in exhaustive switch (MarcoFalke)

Pull request description:

  The compiler flag `-Wswitch` is enabled. However, it can not fire when a `default:` case exists. Fix that by removing the default case where a switch is already handling all cases exhaustively.

  Also, enable `-Wcovered-switch-default` to catch those cases at compile time in the future.

  Also, apply the comment according to the dev notes.

  Can be reviewed via `--ignore-all-space`

ACKs for top commit:
  stickies-v:
    re-ACK fa4ec13, no changes except for addressing silent merge conflict from d339884
  l0rinc:
    ACK fa4ec13
  achow101:
    ACK fa4ec13
  sedited:
    ACK fa4ec13

Tree-SHA512: 8dd9e71a8cd338255f43448a59a1a4d40a9fc16e19a707cc10fb71442d4df9f82a0e5fae77868ef49cd0ea27fdd972687572c1a50b6aba7e08c6ce87576afc6a
d8f4e7c doc: add release notes (ismaelsadeeq)
248c175 test: ensure `ValidateInputsStandardness` optionally returns debug string (ismaelsadeeq)
d2716e9 policy: update `AreInputsStandard` to return error string (ismaelsadeeq)

Pull request description:

  This PR is another attempt at  #13525.

  Transactions that fail `PreChecks` Validation due to non-standard inputs now  returns invalid validation state`TxValidationResult::TX_INPUTS_NOT_STANDARD` along with a debug error message.

  Previously, the debug error message for non-standard inputs do not specify why the inputs were considered non-standard.
  Instead, the same error string, `bad-txns-nonstandard-inputs`, used for all types of non-standard input scriptSigs.

  This PR updates the `AreInputsStandard`  to include the reason why inputs are non-standard in the debug message.
  This improves the `Precheck` debug message to be more descriptive.

  Furthermore, I have addressed all remaining comments from #13525 in this PR.

ACKs for top commit:
  instagibbs:
    ACK d8f4e7c
  achow101:
    ACK d8f4e7c
  sedited:
    Re-ACK d8f4e7c

Tree-SHA512: 19b1a73c68584522f863b9ee2c8d3a735348667f3628dc51e36be3ba59158509509fcc1ffc5683555112c09c8b14da3ad140bb879eac629b6f60b8313cfd8b91
…2809c3451624d3

3293e9a guix: document when GCC SSA gen patch can be removed (fanquake)
978023f guix: use latest glibc 2.31 (fanquake)
ab9a98b guix: combine gcc-libgcc-patches with base-gcc (fanquake)
2276426 guix: switch to upstream python-oscrypto package (fanquake)
feea2a8 ci: use LIEF 0.17.5 in lint job (fanquake)
a7524f5 guix: switch to upstream python-lief package (fanquake)
2bf97e8 guix: switch to upstream osslsigncode package (fanquake)
dc0ddab guix: drop CMake workaround (fanquake)
31eb46f guix: update to c5eee3336cc1d10a3cc1c97fde2809c3451624d3 (fanquake)
0f323e1 guix: add --no-same-owner to TAR_OPTIONS (fanquake)

Pull request description:

  Update the Guix time-machine to [c5eee3336cc1d10a3cc1c97fde2809c3451624d3](https://codeberg.org/guix/guix/commit/c5eee3336cc1d10a3cc1c97fde2809c3451624d3).

  Package updates:
  binutils 2.41 -> 2.44
  cmake-minimal 3.24.2 -> 3.31.10
  diffutils 3.10 -> 3.12
  file 5.45 -> 5.46
  git-minimal 2.46.0 -> 2.52.0
  (base) glibc 2.39 -> 2.41
  gzip 1.13 -> 1.14
  linux-headers 6.1.119 -> 6.1.166
  LLVM/Clang 19.1.4 -> 19.1.7
  mingw-w64 12.0.0 -> 13.0.0
  nsis 3.10 -> 3.11
  python-minimal 3.10 -> 3.11

  CMake 4.x becomes available.
  Clang/LLVM 20 & 21 become available.

  Switch to upstream `osslsigncode` (2.13, `python-lief` (0.17.5) and `python-oscrypto` (1.3.0) packages.

  Update glibc to the latest commit on the `2.31` branch.

  Could be used for #32764.

ACKs for top commit:
  pinheadmz:
    ACK 3293e9a
  achow101:
    ACK 3293e9a
  sedited:
    ACK 3293e9a
  willcl-ark:
    ACK 3293e9a

Tree-SHA512: 46fe11281911be44ef34d9f19b4c2678f2e4628b4badc12ea4cc17cf3e1d693060cc70f0030b0ac53efae1172ceb61af447368dc4d69f5b2707c06e99206d6cf
e76e886 guix: doc: zdiff3 doesn't work (David Gumberg)
ea1be38 guix: doc: Suggest guix-install.sh --uninstall (David Gumberg)

Pull request description:

  Add a note about guix issues with git `merge.conflictstyle` being set to `zdiff3`, and add information about how to uninstall for users of `guix-install.sh`

ACKs for top commit:
  achow101:
    ACK e76e886
  hebasto:
    ACK e76e886.
  sedited:
    utACK e76e886

Tree-SHA512: e9edc49851579c52e7ac762221d0bb51c928da4dff5566ece766af7f7eb75466831a76f885ccc5a26207c84b846e3f42bae26e80ddece3df1611de2c2320c28a
ddf2a06 Fix compatibility with `-debuglogfile` command-line option (Hennadii Stepanov)

Pull request description:

  This PR avoids hardcoding the "debug.log" filename, ensuring compatibility with custom filenames provided via the `-debuglogfile` command-line option.

ACKs for top commit:
  maflcko:
    review ACK ddf2a06 🐪
  achow101:
    ACK ddf2a06
  sedited:
    ACK ddf2a06

Tree-SHA512: bcf8f4e9407ed6108dbb7bfee673a6a486cd0afaaf1dcfb7aaa2d2c6a85488f9c57557b53033efa5eed723ec842c87c4616b6c078f049787e634cc02cbb740ea
…lures

fa71c6e ci: Avoid intermittent Windows generate download failures (MarcoFalke)

Pull request description:

  The CI Windows step to generate the build system is problematic, because with a clean cache, it will download artifacts over the network. This may intermittently fail due to intermittent network issues.

  Fix this issue, like all other network issues in CI, by retrying once.

ACKs for top commit:
  hodlinator:
    ACK fa71c6e
  hebasto:
    ACK fa71c6e, I have reviewed the code and it looks OK.

Tree-SHA512: 9915e84b6015116cce86a25b4f77e545baef1f26fabe767c8bb07a009b075f76c27f9172dd23f78aa8017fd611cea850b1e985a357bd0b24543e63e1fd85cb6d
…OUT`

658e68f scripted-diff: Rename `WAIT_TIMEOUT` to `TEST_WAIT_TIMEOUT` (Hennadii Stepanov)

Pull request description:

  On Windows, the `winerror.h` header defines `WAIT_TIMEOUT` as a macro.

  This introduces a fragile dependency on header inclusion order: if Windows headers happen to be included before using `WAIT_TIMEOUT`, the preprocessor expands it into a numeric literal, causing syntax errors.

  Rename the variable to `TEST_WAIT_TIMEOUT` to remove this fragility and avoid the collision entirely.

  Split from #34448.

  Similar to #34454.

ACKs for top commit:
  w0xlt:
    ACK 658e68f

Tree-SHA512: 90cf8927e4e41dee24d51fb2ea3335526ff5da4180c24d776d59b642794715b3c6558628088fbc28236d6ac4fffb9a27167fe309cb94ebf04f04c6e5cf957ad5
b14f2c7 tests: applied PYTHON_GIL to the env for every test (kevkevinpal)

Pull request description:

  ## Summay
  If a user is running python3.14.0t they would see a warning log that would fail the integration test suite.

  This change adds `PYTHON_GIL=1` to the env when running our functional test suite to ensure that the tests pass for users running python3.14.0t and are not manually setting `PYTHON_GIL=1`.

  This resolves #33582

  ### Tests before and after
  #### Before
  ```
  ./build/test/functional/test_runner.py interface_ipc.py
  Temporary test directory at /tmp/test_runner_₿_🏃_20260319_142327
  Remaining jobs: [interface_ipc.py]
  1/1 - interface_ipc.py failed, Duration: 2 s

  stdout:
  2026-03-19T18:23:27.330123Z TestFramework (INFO): PRNG seed is: 4933091336597497631
  2026-03-19T18:23:27.380917Z TestFramework (INFO): Initializing test directory /tmp/test_runner_₿_🏃_20260319_142327/interface_ipc_0
  2026-03-19T18:23:28.625944Z TestFramework (INFO): Running echo test
  2026-03-19T18:23:28.635856Z TestFramework (INFO): Running mining test
  2026-03-19T18:23:28.648965Z TestFramework (INFO): Running deprecated mining interface test
  2026-03-19T18:23:28.653589Z TestFramework (INFO): Running disconnect during BlockTemplate.waitNext
  2026-03-19T18:23:28.821124Z TestFramework (INFO): Running thread busy test
  2026-03-19T18:23:29.195589Z TestFramework (INFO): Stopping nodes
  2026-03-19T18:23:29.299135Z TestFramework (INFO): Cleaning up /tmp/test_runner_₿_🏃_20260319_142327/interface_ipc_0 on exit
  2026-03-19T18:23:29.299329Z TestFramework (INFO): Tests successful

  stderr:
  <frozen importlib._bootstrap>:491: RuntimeWarning: The global interpreter lock (GIL) has been enabled to load module 'capnp.lib.capnp', which has not declared that it can run safely without the GIL. To override this behavior and keep the GIL disabled (at your own risk), run with PYTHON_GIL=0 or -Xgil=0.

  TEST             | STATUS    | DURATION

  interface_ipc.py | ✖ Failed  | 2 s

  ALL              | ✖ Failed  | 2 s (accumulated)
  Runtime: 2 s

  ```
  #### After
  ```
  ./build/test/functional/test_runner.py interface_ipc.py
  Temporary test directory at /tmp/test_runner_₿_🏃_20260319_142221
  Remaining jobs: [interface_ipc.py]
  1/1 - interface_ipc.py passed, Duration: 2 s

  TEST             | STATUS    | DURATION

  interface_ipc.py | ✓ Passed  | 2 s

  ALL              | ✓ Passed  | 2 s (accumulated)
  Runtime: 2 s
  ```

ACKs for top commit:
  maflcko:
    review ACK b14f2c7
  fanquake:
    ACK b14f2c7

Tree-SHA512: e5862d2e9211154d4834c88864e8c4e35de195986511ba151871d39266d177e0718960b28020e815ef6b353a0d82800b7cb68e9a6dee82fc85f12d8705e787a8
This refactor makes the field a bit more type-safe.
This also better reflects the meaning and use.
…mestamp

faaea78 refactor: Use current_time over redundant call to Now() (MarcoFalke)
3333c50 refactor: Use NodeClock::time_point for m_addr_token_timestamp (MarcoFalke)
fa55723 move-only: Extract ProcessAddrs() helper (MarcoFalke)

Pull request description:

  It is a bit confusing to have some code use the deprecated `GetTime`, which returns a duration and not a time point, and other code to use `NodeClock` time points.

  Fix one place `m_addr_token_timestamp` to use `NodeClock::time_point`.

  Also:

  * Extract a `ProcessAddrs` helper, similar to the other `Process*()` helpers, to cut down the `ProcessMessage` with a massive scope.
  * Rename the confusing `current_a_time` to `now_seconds`. (The `a` in this context refers to the removed "adjusted" time, see commit fadd8b2, which removed adjusted time here)

ACKs for top commit:
  l0rinc:
    ACK faaea78
  ajtowns:
    reACK faaea78
  sedited:
    Re-ACK faaea78

Tree-SHA512: 67ad13e9d7b88e08e3d723e6b7cd598b38df2a004f5c2338b24f2992e25ae9d8fb8e5325c9c94171e551fe86d87e3e3ec1fe6baae64edbf6b5c125f408ee64e4
1. Use `build_os` instead of `host_os` for native packages.
2. `XCODE_VERSION` is available only for `darwin` hosts. Therefore,
   simply disable the Xcode version check for `native_qt`.
a1f22a0 test: Suppress another unsolicited `mock_process/*` output (Hennadii Stepanov)

Pull request description:

  This is a follow-up to #33929.

  The[ `mock_process/*`](https://github.com/bitcoin/bitcoin/blob/390e7d61bd531505bb3d13f38316c282b85ed1dd/src/test/mock_process.cpp#L10) test cases, which serve as helpers for [`system_tests`](https://github.com/bitcoin/bitcoin/blob/390e7d61bd531505bb3d13f38316c282b85ed1dd/src/test/system_tests.cpp#L23) rather than actual tests, are invoked in a way that suppresses unsolicited output to stdout or stderr to keep the test results reproducible.

  However, in debug builds, the Windows CRT still prints false-positive memory leak dumps to stderr.

  This PR handles this specific case and documents the other suppressions.

ACKs for top commit:
  maflcko:
    lgtm ACK a1f22a0
  sedited:
    ACK a1f22a0

Tree-SHA512: 480f0f74ce50b6fb315bfeb6f6d3a4a4791557a6177aa995197c002bf871f878573df0f313344206f82e4d54c7a62d7cea2fdcb8cd96475b4b6cc7d4ffaf0538
This makes `threadsafety.h` agnostic to the actual implementation.
74f71c5 Remove Taproot activation height (Sjors Provoost)

Pull request description:

  Drop `DEPLOYMENT_TAPROOT` from `consensus.vDeployments`.

  Now that the commit (7c08d81) which changes taproot to be enforced for all blocks is included in v24.0, it seems a good time to remove no longer needed non-consensus code.

  Clarify what is considered a `BuriedDeployment`.

  We drop taproot from `getdeploymentinfo` RPC, rather than mark it as `buried`, because this is not a buried deployment in the sense of [BIP 90](https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki). This is because the activation height has been completely removed from the code, unlike the hardcoded `DEPLOYMENT_SEGWIT` height which is still relied on.[^1]

  See discussion in #24737 and #26162.

  [^1]: `DEPLOYMENT_SEGWIT` is used in `IsBlockMutated` to determine if witness data is allowed, it's used for [BIP147](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki), to trigger `NeedsRedownload()` for users who upgraded after a decade, and for a few other things.

ACKs for top commit:
  ajtowns:
    reACK 74f71c5
  achow101:
    ACK 74f71c5
  sedited:
    Re-ACK 74f71c5
  darosior:
    utACK 74f71c5

Tree-SHA512: 217e0ee2e144ccfb04cf012f45b75d08f8541287a5531bd18aa81e38bad2f38d28b772137f471c46b63875840ec044cb61a2a832e3a9e89a6183e8ab36b1b9c9
…rivacy mode is set during wallet selection

0dc337f gui: Fix TransactionsView on setCurrentWallet (pablomartin4btc)

Pull request description:

  <details>
  <summary>Currenlty on <code>master</code>, when the "mask values" checkbox is ticked if the user selects a different wallet, the history action is enable and if the user clicks on it can see all the transactions in the transaction view.</summary>

  ![Peek 2024-04-09 17-37](https://github.com/bitcoin-core/gui/assets/110166421/d8e2fdd1-aaa6-4506-acde-51fa45a74910)

  </details>
  <details>
  <summary>This PR fixes it.</summary>

  ![Peek 2024-04-09 17-45](https://github.com/bitcoin-core/gui/assets/110166421/78c30dc5-42a6-4829-981d-6b9aaa03f014)

  </details>

  Note for maintainers: this needs to be backported to 25.x and 26.x.

ACKs for top commit:
  hebasto:
    ACK 0dc337f, tested on Fedora 43.

Tree-SHA512: 54581546917f87b4c1db0ff1eaa1962ee6eb078285dbb205b4c8d027c3e350f3dc46409b376948c10e668f9487b7a5a70bab0dff5faf510deab1a54452f7f0e5
7a9304f depends: Fix cross-compiling on macOS for Windows (Hennadii Stepanov)

Pull request description:

  1. Use `build_os` instead of `host_os` for native packages.

  2. `XCODE_VERSION` is available only for `darwin` hosts. Therefore, simply disable the Xcode version check for `native_qt`.

  Fixes #34874.

ACKs for top commit:
  fanquake:
    ACK 7a9304f

Tree-SHA512: ef3349de19f3cdb6f445d44f8650815ded5dbe359faafc02941b2f2f0296905aaaac67a4916372b17de58bebabcbcdcbc21af6fe255ebb8f4cdfab00ff257602
…r improvements

0fe6fcc doc: Document rationale for using `IWYU pragma: export` (Hennadii Stepanov)
cfa3b10 iwyu, doc: Document `IWYU pragma: export` for `<logging/categories.h>` (Hennadii Stepanov)
015bea0 iwyu, doc: Document `IWYU pragma: export` for `<chrono>` (Hennadii Stepanov)
48bfcfe iwyu, doc: Document `IWYU pragma: export` for `<threadsafety.h>` (Hennadii Stepanov)
179abb3 refactor: Move `StdMutex` to its own header (Hennadii Stepanov)
6d2952c serialize: Add missing `<span>` header (Hennadii Stepanov)

Pull request description:

  This PR is a prerequisite for #34448. It was split into a separate PR to limit the scope and minimize potential merge conflicts.

  The first commit improves the accuracy of IWYU suggestions within our heavily templated code. Note that, for now, the `serialize.h` header itself is excluded from IWYU inspection because it lacks a corresponding source file.

  The remaining commits follow the Developer Notes [guidance](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#using-iwyu):
  > Use `IWYU pragma: export` very sparingly, as this enforces transitive inclusion of headers and undermines the specific purpose of IWYU.

ACKs for top commit:
  maflcko:
    review ACK 0fe6fcc 👤
  ajtowns:
    utACK 0fe6fcc

Tree-SHA512: dc2d4e3ff78b9707a1a26cb9b1c0a456de0d33c59e773bbf692344c2fceaff8936317479c5e898038f29134bc0e5d9d1ef7350e53512dd8e262f46ede578c4f9
578525d depends: Remove no longer necessary `dsymutil` (Hennadii Stepanov)

Pull request description:

  I can't see where `dsymutil` is used. For example, a shared library under LTO builds fine:
  ```
  cmake -B build --toolchain depends/arm64-apple-darwin/toolchain.cmake -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DBUILD_KERNEL_LIB=ON -DBUILD_SHARED_LIBS=ON
  cmake --build build -t libbitcoinkernel
  ```

ACKs for top commit:
  fanquake:
    ACK 578525d

Tree-SHA512: 41e7601e26f639383bfa78ceb97e45d03e6cf098cf636bc4f3274360516bb78753aacfd89c8541b38ee4f39cbbf7c7b7a6eb8dc9a653f4438392cd61678e80ce
fa70b9e ci: Temporarily use clang in valgrind tasks (MarcoFalke)
faf3ef4 ci: Clarify why valgrind task has gui disabled (MarcoFalke)
fadb771 test: Scale feature_dbcrash.py timeout with factor (MarcoFalke)

Pull request description:

  valgrind currently does not work on GCC compiled executables, due to an upstream bug. https://bugs.kde.org/show_bug.cgi?id=472329

  So temporarily switch to clang, so that a long term solution can be figured out in the meantime.

ACKs for top commit:
  l0rinc:
    ACK fa70b9e
  fanquake:
    ACK fa70b9e - also checked that it doesn't currently work under aarch64.

Tree-SHA512: 2e7c7a709311efa7bf29c3f9b1db60886b189b2d2bfebb516062163d65f0d7e8de3b6fc21c94cd62f6bd7e786e9c36fba55c4bae956b849851eb8b08e772c03e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.