Repository: bitcoin/bitcoin (language: cpp)

Issue:
depends: capnp build ignores config_opts
### Is there an existing issue for this?

- [x] I have searched the existing issues

### Current behaviour

It seems that when building capnp via depends the `config_opts` in `capnp.mk` are ignored, i.e. `-DBUILD_TESTING=OFF`, `-DWITH_OPENSSL=OFF` and `-DWITH_ZLIB=OFF`.

This can be seen in the depends build log by e.g. `Built target capnp-heavy-tests`, a target that should be skipped entirely. It becomes a problem during the `cmake -B build --toolchain ...` step, because it will complain about not finding OpenSSL and zlib, both of which it shouldn't need. 

### Expected behaviour

Don't build test target and, more importantly, don't look for OpenSSL.

### Steps to reproduce

```sh
git clean -dfx
make -C depends NO_QT=1 NO_USDT=1 NO_ZMQ=1 NO_BDB=1 MULTIPROCESS=1
cmake -B build --toolchain /Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/toolchain.cmake
...
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
```

### Relevant log output

Depends build with `V=1`: https://gist.github.com/Sjors/4e851f2455c67372ad40a8382432acf5

It looks like it does set `-DBUILD_TESTING=OFF -DWITH_OPENSSL=OFF -DWITH_ZLIB=OFF` for the native build:

```
{ cd /Users/sjors/dev/bitcoin/depends/work/build/aarch64-apple-darwin24.3.0/native_capnp/1.1.0-c8c5a5f0b88/.; export     PKG_CONFIG_LIBDIR=/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/lib/pkgconfig PKG_CONFIG_PATH=/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/share/pkgconfig PKG_CONFIG_SYSROOT_DIR=/ CMAKE_MODULE_PATH=/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/lib/cmake PATH="/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/bin:/opt/homebrew/opt/gnu-sed/libexec/gnubin:/opt/homebrew/opt/grep/libexec/gnubin:/Users/sjors/.nvm/versions/node/v16.20.2/bin:/Users/sjors/.local/bin:/Users/sjors/.pyenv/shims:/Users/sjors/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/Users/sjors/.rbenv/shims:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/MacGPG2/bin:/opt/podman/bin:/Users/sjors/.cargo/bin:/Applications/iTerm.app/Contents/Resources/utilities";   env CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" CFLAGS="  -I/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/include          " CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" CXXFLAGS="  -I/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/include          " LDFLAGS="  -L/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/lib    " cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX:PATH="/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native" -DCMAKE_AR=`which /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar` -DCMAKE_NM=`which /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm` -DCMAKE_RANLIB=`which /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib` -DCMAKE_INSTALL_LIBDIR=lib/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_VERBOSE_MAKEFILE:BOOL=1 -DBUILD_TESTING=OFF -DWITH_OPENSSL=OFF -DWITH_ZLIB=OFF        -DCMAKE_INSTALL_RPATH:PATH="/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/lib" .; }
```

But not for the non-native(?) one:

```
{ cd /Users/sjors/dev/bitcoin/depends/work/build/aarch64-apple-darwin24.3.0/capnp/1.1.0-31298932310/.; export     PKG_CONFIG_LIBDIR=/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/lib/pkgconfig PKG_CONFIG_PATH=/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/share/pkgconfig PKG_CONFIG_SYSROOT_DIR=/ CMAKE_MODULE_PATH=/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/lib/cmake PATH="/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/native/bin:/opt/homebrew/opt/gnu-sed/libexec/gnubin:/opt/homebrew/opt/grep/libexec/gnubin:/Users/sjors/.nvm/versions/node/v16.20.2/bin:/Users/sjors/.local/bin:/Users/sjors/.pyenv/shims:/Users/sjors/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/Users/sjors/.rbenv/shims:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/MacGPG2/bin:/opt/podman/bin:/Users/sjors/.cargo/bin:/Applications/iTerm.app/Contents/Resources/utilities";   env CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" CFLAGS="  -I/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/include     -pipe -std=c11 -mmacos-version-min=13.0 -arch arm64 -O2    " CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -stdlib=libc++ -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" CXXFLAGS="  -I/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/include     -pipe -std=c++20 -mmacos-version-min=13.0 -arch arm64 -O2    " LDFLAGS="-Wl,-platform_version,macos,13.0,14.0  -L/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0/lib    " cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX:PATH="/Users/sjors/dev/bitcoin/depends/aarch64-apple-darwin24.3.0" -DCMAKE_AR=`which /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar` -DCMAKE_NM=`which /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm` -DCMAKE_RANLIB=`which /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib` -DCMAKE_INSTALL_LIBDIR=lib/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_VERBOSE_MAKEFILE:BOOL=1        .; }
```

### How did you obtain Bitcoin Core

Compiled from source

### What version of Bitcoin Core are you using?

master@698f86964c68041d938aaf54fdd39466266c371c

### Operating system and version

macOS 15.3.2

### Machine specifications

M4 Mac

XCode 16.2
cmake version 3.31.4

```
xcode-select -p
/Applications/Xcode.app/Contents/Developer
```


Discussion / hints:

Fix patch:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ad29249e9500..8b7e663134866 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,7 +26,7 @@ set(CLIENT_NAME "Bitcoin Core")
 set(CLIENT_VERSION_MAJOR 29)
 set(CLIENT_VERSION_MINOR 0)
 set(CLIENT_VERSION_BUILD 0)
-set(CLIENT_VERSION_RC 1)
+set(CLIENT_VERSION_RC 2)
 set(CLIENT_VERSION_IS_RELEASE "true")
 set(COPYRIGHT_YEAR "2025")
 
diff --git a/cmake/module/Maintenance.cmake b/cmake/module/Maintenance.cmake
index a1ae7c9e8f6c4..59e26d1bc110d 100644
--- a/cmake/module/Maintenance.cmake
+++ b/cmake/module/Maintenance.cmake
@@ -83,6 +83,7 @@ function(add_macos_deploy_target)
       COMMAND ${CMAKE_COMMAND} --install ${PROJECT_BINARY_DIR} --config $<CONFIG> --component bitcoin-qt --prefix ${macos_app}/Contents/MacOS --strip
       COMMAND ${CMAKE_COMMAND} -E rename ${macos_app}/Contents/MacOS/bin/$<TARGET_FILE_NAME:bitcoin-qt> ${macos_app}/Contents/MacOS/Bitcoin-Qt
       COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/bin
+      COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/share
       VERBATIM
     )
 
diff --git a/contrib/devtools/gen-bitcoin-conf.sh b/contrib/devtools/gen-bitcoin-conf.sh
index 234318e1a143f..d31f54629561b 100755
--- a/contrib/devtools/gen-bitcoin-conf.sh
+++ b/contrib/devtools/gen-bitcoin-conf.sh
@@ -50,7 +50,8 @@ EOF
 # adding newlines is a bit funky to ensure portability for BSD
 # see here for more details: https://stackoverflow.com/a/24575385
 ${BITCOIND} --help \
-    | sed '1,/Print this help message and exit/d' \
+    | sed '1,/Options:/d' \
+    | sed -E '/^[[:space:]]{2}-help/,/^[[:space:]]*$/d' \
     | sed -E 's/^[[:space:]]{2}\-/#/' \
     | sed -E 's/^[[:space:]]{7}/# /' \
     | sed -E '/[=[:space:]]/!s/#.*$/&=1/' \
diff --git a/depends/packages/capnp.mk b/depends/packages/capnp.mk
index 7f41d3b5a4ed3..542bf12629743 100644
--- a/depends/packages/capnp.mk
+++ b/depends/packages/capnp.mk
@@ -5,7 +5,7 @@ $(package)_download_file=$(native_$(package)_download_file)
 $(package)_file_name=$(native_$(package)_file_name)
 $(package)_sha256_hash=$(native_$(package)_sha256_hash)
 
-define $(package)_set_vars :=
+define $(package)_set_vars
   $(package)_config_opts := -DBUILD_TESTING=OFF
   $(package)_config_opts += -DWITH_OPENSSL=OFF
   $(package)_config_opts += -DWITH_ZLIB=OFF
diff --git a/depends/packages/libmultiprocess.mk b/depends/packages/libmultiprocess.mk
index afbd315e38806..47064a9bb6c30 100644
--- a/depends/packages/libmultiprocess.mk
+++ b/depends/packages/libmultiprocess.mk
@@ -8,7 +8,7 @@ ifneq ($(host),$(build))
 $(package)_dependencies += native_capnp
 endif
 
-define $(package)_set_vars :=
+define $(package)_set_vars
 ifneq ($(host),$(build))
 $(package)_config_opts := -DCAPNP_EXECUTABLE="$$(native_capnp_prefixbin)/capnp"
 $(package)_config_opts += -DCAPNPC_CXX_EXECUTABLE="$$(native_capnp_prefixbin)/capnpc-c++"
diff --git a/doc/man/bitcoin-cli.1 b/doc/man/bitcoin-cli.1
index 2eb89ffa0853c..94d06025c3aef 100644
--- a/doc/man/bitcoin-cli.1
+++ b/doc/man/bitcoin-cli.1
@@ -1,7 +1,7 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc1" "User Commands"
+.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc2" "User Commands"
 .SH NAME
-bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc1
+bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc2
 .SH SYNOPSIS
 .B bitcoin-cli
 [\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR]
@@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc1
 .B bitcoin-cli
 [\fI\,options\/\fR] \fI\,help <command>\/\fR
 .SH DESCRIPTION
-Bitcoin Core RPC client version v29.0.0rc1
+Bitcoin Core RPC client version v29.0.0rc2
 .PP
 The bitcoin\-cli utility provides a command line interface to interact with a Bitcoin Core RPC server.
 .PP
diff --git a/doc/man/bitcoin-qt.1 b/doc/man/bitcoin-qt.1
index 20b7b96e3e3bc..58640975b8c3d 100644
--- a/doc/man/bitcoin-qt.1
+++ b/doc/man/bitcoin-qt.1
@@ -1,12 +1,12 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc1" "User Commands"
+.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc2" "User Commands"
 .SH NAME
-bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc1
+bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc2
 .SH SYNOPSIS
 .B bitcoin-qt
 [\fI\,options\/\fR] [\fI\,URI\/\fR]
 .SH DESCRIPTION
-Bitcoin Core version v29.0.0rc1
+Bitcoin Core version v29.0.0rc2
 .PP
 The bitcoin\-qt application provides a graphical interface for interacting with Bitcoin Core.
 .PP
diff --git a/doc/man/bitcoin-tx.1 b/doc/man/bitcoin-tx.1
index b493f916b0f82..7d4f7de5a3950 100644
--- a/doc/man/bitcoin-tx.1
+++ b/doc/man/bitcoin-tx.1
@@ -1,7 +1,7 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc1" "User Commands"
+.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc2" "User Commands"
 .SH NAME
-bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc1
+bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc2
 .SH SYNOPSIS
 .B bitcoin-tx
 [\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR]
@@ -9,7 +9,7 @@ bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc1
 .B bitcoin-tx
 [\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR]
 .SH DESCRIPTION
-Bitcoin Core bitcoin\-tx utility version v29.0.0rc1
+Bitcoin Core bitcoin\-tx utility version v29.0.0rc2
 .PP
 The bitcoin\-tx tool is used for creating and modifying bitcoin transactions.
 .PP
diff --git a/doc/man/bitcoin-util.1 b/doc/man/bitcoin-util.1
index 74cf2329ed190..44ff8e860a6d4 100644
--- a/doc/man/bitcoin-util.1
+++ b/doc/man/bitcoin-util.1
@@ -1,7 +1,7 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc1" "User Commands"
+.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc2" "User Commands"
 .SH NAME
-bitcoin-util \- manual page for bitcoin-util v29.0.0rc1
+bitcoin-util \- manual page for bitcoin-util v29.0.0rc2
 .SH SYNOPSIS
 .B bitcoin-util
 [\fI\,options\/\fR] [\fI\,command\/\fR]
@@ -9,7 +9,7 @@ bitcoin-util \- manual page for bitcoin-util v29.0.0rc1
 .B bitcoin-util
 [\fI\,options\/\fR] \fI\,grind <hex-block-header>\/\fR
 .SH DESCRIPTION
-Bitcoin Core bitcoin\-util utility version v29.0.0rc1
+Bitcoin Core bitcoin\-util utility version v29.0.0rc2
 .PP
 The bitcoin\-util tool provides bitcoin related functionality that does not rely on the ability to access a running node. Available [commands] are listed below.
 .SH OPTIONS
diff --git a/doc/man/bitcoin-wallet.1 b/doc/man/bitcoin-wallet.1
index dbf301007052d..b41d5e965e071 100644
--- a/doc/man/bitcoin-wallet.1
+++ b/doc/man/bitcoin-wallet.1
@@ -1,12 +1,12 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc1" "User Commands"
+.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc2" "User Commands"
 .SH NAME
-bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc1
+bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc2
 .SH SYNOPSIS
 .B bitcoin-wallet
 [\fI\,options\/\fR] \fI\,<command>\/\fR
 .SH DESCRIPTION
-Bitcoin Core bitcoin\-wallet utility version v29.0.0rc1
+Bitcoin Core bitcoin\-wallet utility version v29.0.0rc2
 .PP
 bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
 .PP
diff --git a/doc/man/bitcoind.1 b/doc/man/bitcoind.1
index 865a59e87cb28..b5993a052ad40 100644
--- a/doc/man/bitcoind.1
+++ b/doc/man/bitcoind.1
@@ -1,12 +1,12 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc1" "User Commands"
+.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc2" "User Commands"
 .SH NAME
-bitcoind \- manual page for bitcoind v29.0.0rc1
+bitcoind \- manual page for bitcoind v29.0.0rc2
 .SH SYNOPSIS
 .B bitcoind
 [\fI\,options\/\fR]
 .SH DESCRIPTION
-Bitcoin Core daemon version v29.0.0rc1
+Bitcoin Core daemon version v29.0.0rc2
 .PP
 The Bitcoin Core daemon (bitcoind) is a headless program that connects to the Bitcoin network to validate and relay transactions and blocks, as well as relaying addresses.
 .PP
diff --git a/share/examples/bitcoin.conf b/share/examples/bitcoin.conf
index 5b0003b72334f..d3999ecb4ac22 100644
--- a/share/examples/bitcoin.conf
+++ b/share/examples/bitcoin.conf
@@ -12,6 +12,82 @@
 ### Options
 
 
+# Execute command when an alert is raised (%s in cmd is replaced by
+# message)
+#alertnotify=<cmd>
+
+# For backwards compatibility, treat an unused bitcoin.conf file in the
+# datadir as a warning, not an error.
+#allowignoredconf=1
+
+# If this block is in the chain assume that it and its ancestors are valid
+# and potentially skip their script verification (0 to verify all,
+# default:
+# 00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77,
+# testnet3:
+# 00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57,
+# testnet4:
+# 0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3,
+# signet:
+# 000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a)
+#assumevalid=<hex>
+
+# Maintain an index of compact filters by block (default: 0, values:
+# basic). If <type> is not supplied or if <type> = 1, indexes for
+# all known types are enabled.
+#blockfilterindex=<type>
+
+# Execute command when the best block changes (%s in cmd is replaced by
+# block hash)
+#blocknotify=<cmd>
+
+# Extra transactions to keep in memory for compact block reconstructions
+# (default: 100)
+#blockreconstructionextratxn=<n>
+
+# Specify directory to hold blocks subdirectory for *.dat files (default:
+# <datadir>)
+#blocksdir=<dir>
+
+# Whether to reject transactions from network peers. Disables automatic
+# broadcast and rebroadcast of transactions, unless the source peer
+# has the 'forcerelay' permission. RPC transactions are not
+# affected. (default: 0)
+#blocksonly=1
+
+# Whether an XOR-key applies to blocksdir *.dat files. The created XOR-key
+# will be zeros for an existing blocksdir or when `-blocksxor=0` is
+# set, and random for a freshly initialized blocksdir. (default: 1)
+#blocksxor=1
+
+# Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0)
+#coinstatsindex=1
+
+# Specify path to read-only configuration file. Relative paths will be
+# prefixed by datadir location (only useable from command line, not
+# configuration file) (default: bitcoin.conf)
+#conf=<file>
+
+# Run in the background as a daemon and accept commands (default: 0)
+#daemon=1
+
+# Wait for initialization to be finished before exiting. This implies
+# -daemon (default: 0)
+#daemonwait=1
+
+# Specify data directory
+#datadir=<dir>
+
+# Maximum database cache size <n> MiB (minimum 4, default: 450). Make sure
+# you have enough RAM. In addition, unused memory allocated to the
+# mempool is shared with this cache (see -maxmempool).
+#dbcache=<n>
+
+# Specify location of debug log file (default: debug.log). Relative paths
+# will be prefixed by a net-specific datadir location. Pass
+# -nodebuglogfile to disable writing the log to a file.
+#debuglogfile=<file>
+
 # Specify additional configuration file, relative to the -datadir path
 # (only useable from configuration file, not command line)
 #includeconf=<file>
@@ -428,9 +504,6 @@
 # takes priority over "-debug"
 #debugexclude=<category>
 
-# Print help message with debugging options and exit
-#help-debug=1
-
 # Include IP addresses in debug output (default: 0)
 #logips=1
 
diff --git a/src/qt/README.md b/src/qt/README.md
index 1fcac5414f548..4a662b2a12d77 100644
--- a/src/qt/README.md
+++ b/src/qt/README.md
@@ -120,5 +120,5 @@ sudo apt-get install qtcreator
  - Under `Debuggers`: select `"GDB"` as debugger
 
 8. While in the `Projects` tab, ensure that you have the `bitcoin-qt` executable specified under `Run`
- - If the executable is not specified: click `"Choose..."`, navigate to `src/qt`, and select `bitcoin-qt`
+ - If the executable is not specified: click `"Choose..."`, navigate to `build/bin`, and select `bitcoin-qt`
 9. You're all set! Start developing, building, and debugging the Bitcoin Core GUI


Test patch:
diff --git a/src/qt/test/wallettests.cpp b/src/qt/test/wallettests.cpp
index 98dfe12f084ec..816d47fed4604 100644
--- a/src/qt/test/wallettests.cpp
+++ b/src/qt/test/wallettests.cpp
@@ -268,9 +268,9 @@ struct MiniGUI {
 //
 // This also requires overriding the default minimal Qt platform:
 //
-//     QT_QPA_PLATFORM=xcb     src/qt/test/test_bitcoin-qt  # Linux
-//     QT_QPA_PLATFORM=windows src/qt/test/test_bitcoin-qt  # Windows
-//     QT_QPA_PLATFORM=cocoa   src/qt/test/test_bitcoin-qt  # macOS
+//     QT_QPA_PLATFORM=xcb     build/bin/test_bitcoin-qt  # Linux
+//     QT_QPA_PLATFORM=windows build/bin/test_bitcoin-qt  # Windows
+//     QT_QPA_PLATFORM=cocoa   build/bin/test_bitcoin-qt  # macOS
 void TestGUI(interfaces::Node& node, const std::shared_ptr<CWallet>& wallet)
 {
     // Create widgets for sending coins and listing transactions.
diff --git a/src/test/fuzz/base_encode_decode.cpp b/src/test/fuzz/base_encode_decode.cpp
index 06b249fb8d379..2ffcbdf7207ac 100644
--- a/src/test/fuzz/base_encode_decode.cpp
+++ b/src/test/fuzz/base_encode_decode.cpp
@@ -6,6 +6,7 @@
 
 #include <base58.h>
 #include <psbt.h>
+#include <span.h>
 #include <test/fuzz/FuzzedDataProvider.h>
 #include <util/strencodings.h>
 #include <util/string.h>
@@ -19,42 +20,40 @@ using util::TrimStringView;
 
 FUZZ_TARGET(base58_encode_decode)
 {
-    FuzzedDataProvider provider(buffer.data(), buffer.size());
-    const std::string random_string{provider.ConsumeRandomLengthString(1000)};
-    const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)};
+    FuzzedDataProvider provider{buffer.data(), buffer.size()};
+    const auto random_string{provider.ConsumeRandomLengthString(100)};
 
-    // Decode/Encode roundtrip
-    std::vector<unsigned char> decoded;
-    if (DecodeBase58(random_string, decoded, max_ret_len)) {
+    const auto encoded{EncodeBase58(MakeUCharSpan(random_string))};
+    const auto decode_input{provider.ConsumeBool() ? random_string : encoded};
+    const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, decode_input.size() + 1)};
+    if (std::vector<unsigned char> decoded; DecodeBase58(decode_input, decoded, max_ret_len)) {
         const auto encoded_string{EncodeBase58(decoded)};
-        assert(encoded_string == TrimStringView(random_string));
-        assert(encoded_string.empty() || !DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
+        assert(encoded_string == TrimStringView(decode_input));
+        if (decoded.size() > 0) {
+            assert(max_ret_len > 0);
+            assert(decoded.size() <= static_cast<size_t>(max_ret_len));
+            assert(!DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
+        }
     }
-    // Encode/Decode roundtrip
-    const auto encoded{EncodeBase58(buffer)};
-    std::vector<unsigned char> roundtrip_decoded;
-    assert(DecodeBase58(encoded, roundtrip_decoded, buffer.size())
-        && std::ranges::equal(roundtrip_decoded, buffer));
 }
 
 FUZZ_TARGET(base58check_encode_decode)
 {
-    FuzzedDataProvider provider(buffer.data(), buffer.size());
-    const std::string random_string{provider.ConsumeRandomLengthString(1000)};
-    const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)};
+    FuzzedDataProvider provider{buffer.data(), buffer.size()};
+    const auto random_string{provider.ConsumeRandomLengthString(100)};
 
-    // Decode/Encode roundtrip
-    std::vector<unsigned char> decoded;
-    if (DecodeBase58Check(random_string, decoded, max_ret_len)) {
+    const auto encoded{EncodeBase58Check(MakeUCharSpan(random_string))};
+    const auto decode_input{provider.ConsumeBool() ? random_string : encoded};
+    const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, decode_input.size() + 1)};
+    if (std::vector<unsigned char> decoded; DecodeBase58Check(decode_input, decoded, max_ret_len)) {
         const auto encoded_string{EncodeBase58Check(decoded)};
-        assert(encoded_string == TrimStringView(random_string));
-        assert(encoded_string.empty() || !DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
+        assert(encoded_string == TrimStringView(decode_input));
+        if (decoded.size() > 0) {
+            assert(max_ret_len > 0);
+            assert(decoded.size() <= static_cast<size_t>(max_ret_len));
+            assert(!DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
+        }
     }
-    // Encode/Decode roundtrip
-    const auto encoded{EncodeBase58Check(buffer)};
-    std::vector<unsigned char> roundtrip_decoded;
-    assert(DecodeBase58Check(encoded, roundtrip_decoded, buffer.size())
-        && std::ranges::equal(roundtrip_decoded, buffer));
 }
 
 FUZZ_TARGET(base32_encode_decode)
diff --git a/test/functional/p2p_orphan_handling.py b/test/functional/p2p_orphan_handling.py
index 370caad880097..d74a866ae5a49 100755
--- a/test/functional/p2p_orphan_handling.py
+++ b/test/functional/p2p_orphan_handling.py
@@ -788,6 +788,7 @@ def test_parents_change(self):
 
         # Disconnect peer1. peer2 should become the new candidate for orphan resolution.
         peer1.peer_disconnect()
+        self.wait_until(lambda: node.num_test_p2p_connections() == 1)
         node.bumpmocktime(TXREQUEST_TIME_SKIP)
         self.wait_until(lambda: len(node.getorphantxs(verbosity=2)[0]["from"]) == 1)
         # Both parents should be requested, now that they are both missing.