Merge bitcoin/bitcoin#32136: [29.x] backports and 29.0rc3

f80ab9a5d8 [doc] update man pages for 29.0rc3 (glozow)
7c05ef5673 [build] bump to 29.0rc3 (glozow)
c0756b758f depends: set CMAKE_*_COMPILER_TARGET in toolchain (fanquake)
477345207b cmake: Add `NO_CACHE_IF_FAILED` option for checking linker flags (Hennadii Stepanov)
7bc7af9951 fuzz: extract unsequenced operations with side-effects (Lőrinc)
288163ea0f fuzz: Fix off-by-one in package_rbf target (MarcoFalke)
a3060483fa test: avoid disk space warning for non-regtest (Sjors Provoost)

Pull request description:

  Backports + final changes for 29.0rc3.

  Backports:
  - #32057
  - #32122
  - #32141
  - #32027
  - #31849

ACKs for top commit:
  hebasto:
    ACK f80ab9a5d8, I've verified back-ports locally and reviewed release related changes.
  fanquake:
    ACK f80ab9a5d8

Tree-SHA512: 15c882eac98825c41859859af1621e63a5b9d98f3b492c451c14f2d2232220dfa8d1ef933adae773918e188c6ade085f254f2853ff078bf1f99b8cd77facb182
This commit is contained in:
merge-script
2025-04-01 19:59:46 +08:00
14 changed files with 49 additions and 45 deletions

View File

@@ -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 2)
set(CLIENT_VERSION_RC 3)
set(CLIENT_VERSION_IS_RELEASE "true")
set(COPYRIGHT_YEAR "2025")
@@ -376,6 +376,7 @@ if(SANITIZERS)
int main() { return 0; }
"
RESULT_VAR linker_supports_sanitizers
NO_CACHE_IF_FAILED
)
if(NOT linker_supports_sanitizers)
message(FATAL_ERROR "Linker did not accept requested flags, you are missing required libraries.")

View File

@@ -20,7 +20,7 @@ In configuration output, this function prints a string by the following pattern:
function(try_append_linker_flag flag)
cmake_parse_arguments(PARSE_ARGV 1
TALF # prefix
"" # options
"NO_CACHE_IF_FAILED" # options
"TARGET;VAR;SOURCE;RESULT_VAR" # one_value_keywords
"IF_CHECK_PASSED" # multi_value_keywords
)
@@ -68,6 +68,10 @@ function(try_append_linker_flag flag)
if(DEFINED TALF_RESULT_VAR)
set(${TALF_RESULT_VAR} "${${result}}" PARENT_SCOPE)
endif()
if(NOT ${result} AND TALF_NO_CACHE_IF_FAILED)
unset(${result} CACHE)
endif()
endfunction()
if(MSVC)

View File

@@ -206,6 +206,7 @@ endif
$(host_prefix)/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id)
@mkdir -p $(@D)
sed -e 's|@depends_crosscompiling@|$(crosscompiling)|' \
-e 's|@host@|$(host)|' \
-e 's|@host_system_name@|$($(host_os)_cmake_system_name)|' \
-e 's|@host_system_version@|$($(host_os)_cmake_system_version)|' \
-e 's|@host_arch@|$(host_arch)|' \

View File

@@ -13,6 +13,10 @@ if(@depends_crosscompiling@)
set(CMAKE_SYSTEM_NAME @host_system_name@)
set(CMAKE_SYSTEM_VERSION @host_system_version@)
set(CMAKE_SYSTEM_PROCESSOR @host_arch@)
set(CMAKE_C_COMPILER_TARGET @host@)
set(CMAKE_CXX_COMPILER_TARGET @host@)
set(CMAKE_OBJCXX_COMPILER_TARGET @host@)
endif()
if(NOT DEFINED CMAKE_C_FLAGS_INIT)

View File

@@ -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.0rc2" "User Commands"
.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc3" "User Commands"
.SH NAME
bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc2
bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc3
.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.0rc2
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,help <command>\/\fR
.SH DESCRIPTION
Bitcoin Core RPC client version v29.0.0rc2
Bitcoin Core RPC client version v29.0.0rc3
.PP
The bitcoin\-cli utility provides a command line interface to interact with a Bitcoin Core RPC server.
.PP

View File

@@ -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.0rc2" "User Commands"
.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc3" "User Commands"
.SH NAME
bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc2
bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc3
.SH SYNOPSIS
.B bitcoin-qt
[\fI\,options\/\fR] [\fI\,URI\/\fR]
.SH DESCRIPTION
Bitcoin Core version v29.0.0rc2
Bitcoin Core version v29.0.0rc3
.PP
The bitcoin\-qt application provides a graphical interface for interacting with Bitcoin Core.
.PP

View File

@@ -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.0rc2" "User Commands"
.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc3" "User Commands"
.SH NAME
bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc2
bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc3
.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.0rc2
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR]
.SH DESCRIPTION
Bitcoin Core bitcoin\-tx utility version v29.0.0rc2
Bitcoin Core bitcoin\-tx utility version v29.0.0rc3
.PP
The bitcoin\-tx tool is used for creating and modifying bitcoin transactions.
.PP

View File

@@ -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.0rc2" "User Commands"
.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc3" "User Commands"
.SH NAME
bitcoin-util \- manual page for bitcoin-util v29.0.0rc2
bitcoin-util \- manual page for bitcoin-util v29.0.0rc3
.SH SYNOPSIS
.B bitcoin-util
[\fI\,options\/\fR] [\fI\,command\/\fR]
@@ -9,7 +9,7 @@ bitcoin-util \- manual page for bitcoin-util v29.0.0rc2
.B bitcoin-util
[\fI\,options\/\fR] \fI\,grind <hex-block-header>\/\fR
.SH DESCRIPTION
Bitcoin Core bitcoin\-util utility version v29.0.0rc2
Bitcoin Core bitcoin\-util utility version v29.0.0rc3
.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

View File

@@ -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.0rc2" "User Commands"
.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc3" "User Commands"
.SH NAME
bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc2
bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc3
.SH SYNOPSIS
.B bitcoin-wallet
[\fI\,options\/\fR] \fI\,<command>\/\fR
.SH DESCRIPTION
Bitcoin Core bitcoin\-wallet utility version v29.0.0rc2
Bitcoin Core bitcoin\-wallet utility version v29.0.0rc3
.PP
bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
.PP

View File

@@ -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.0rc2" "User Commands"
.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc3" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind v29.0.0rc2
bitcoind \- manual page for bitcoind v29.0.0rc3
.SH SYNOPSIS
.B bitcoind
[\fI\,options\/\fR]
.SH DESCRIPTION
Bitcoin Core daemon version v29.0.0rc2
Bitcoin Core daemon version v29.0.0rc3
.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

View File

@@ -92,5 +92,6 @@ FUZZ_TARGET(psbt_base64_decode)
PartiallySignedTransaction psbt;
std::string error;
assert(DecodeBase64PSBT(psbt, random_string, error) == error.empty());
const bool ok{DecodeBase64PSBT(psbt, random_string, error)};
assert(ok == error.empty());
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2020-2022 The Bitcoin Core developers
// Copyright (c) 2020-present The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -108,7 +108,7 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
// Add a bunch of parent-child pairs to the mempool, and remember them.
std::vector<CTransaction> mempool_txs;
size_t iter{0};
uint32_t iter{0};
// Keep track of the total vsize of CTxMemPoolEntry's being added to the mempool to avoid overflow
// Add replacement_vsize since this is added to new diagram during RBF check
@@ -116,9 +116,8 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
if (!replacement_tx) {
return;
}
assert(iter <= g_outpoints.size());
replacement_tx->vin.resize(1);
replacement_tx->vin[0].prevout = g_outpoints[iter++];
replacement_tx->vin[0].prevout = g_outpoints.at(iter++);
CTransaction replacement_tx_final{*replacement_tx};
auto replacement_entry = ConsumeTxMemPoolEntry(fuzzed_data_provider, replacement_tx_final);
int32_t replacement_vsize = replacement_entry.GetTxSize();
@@ -126,13 +125,13 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
LOCK2(cs_main, pool.cs);
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), NUM_ITERS)
{
while (fuzzed_data_provider.ConsumeBool()) {
if (iter >= NUM_ITERS) break;
// Make sure txns only have one input, and that a unique input is given to avoid circular references
CMutableTransaction parent;
assert(iter <= g_outpoints.size());
parent.vin.resize(1);
parent.vin[0].prevout = g_outpoints[iter++];
parent.vin[0].prevout = g_outpoints.at(iter++);
parent.vout.emplace_back(0, CScript());
mempool_txs.emplace_back(parent);

View File

@@ -24,6 +24,9 @@ class ConfArgsTest(BitcoinTestFramework):
def set_test_params(self):
self.setup_clean_chain = True
self.num_nodes = 1
# Prune to prevent disk space warning on CI systems with limited space,
# when using networks other than regtest.
self.extra_args = [["-prune=550"]]
self.supports_cli = False
self.wallet_names = []
self.disable_autoconnect = False
@@ -471,32 +474,21 @@ class ConfArgsTest(BitcoinTestFramework):
self.log.info("Test testnet3 deprecation warning")
t3_warning_log = "Warning: Support for testnet3 is deprecated and will be removed in an upcoming release. Consider switching to testnet4."
def warning_msg(node, approx_size):
return f'Warning: Disk space for "{node.datadir_path / node.chain / "blocks" }" may not accommodate the block files. Approximately {approx_size} GB of data will be stored in this directory.'
# Testnet3 node will log the warning
self.log.debug("Testnet3 node will log the deprecation warning")
self.nodes[0].chain = 'testnet3'
self.nodes[0].replace_in_config([('regtest=', 'testnet='), ('[regtest]', '[test]')])
with self.nodes[0].assert_debug_log([t3_warning_log]):
self.start_node(0)
# Some CI environments will have limited space and some others won't
# so we need to handle both cases as a valid result.
self.nodes[0].stderr.seek(0)
err = self.nodes[0].stdout.read()
self.nodes[0].stderr.seek(0)
self.nodes[0].stderr.truncate()
if err != b'' and err != warning_msg(self.nodes[0], 42):
raise AssertionError("Unexpected stderr after shutdown of Testnet3 node")
self.stop_node(0)
# Testnet4 node will not log the warning
self.log.debug("Testnet4 node will not log the deprecation warning")
self.nodes[0].chain = 'testnet4'
self.nodes[0].replace_in_config([('testnet=', 'testnet4='), ('[test]', '[testnet4]')])
with self.nodes[0].assert_debug_log([], unexpected_msgs=[t3_warning_log]):
self.start_node(0)
self.stop_node(0)
# Reset to regtest
self.log.debug("Reset to regtest")
self.nodes[0].chain = 'regtest'
self.nodes[0].replace_in_config([('testnet4=', 'regtest='), ('[testnet4]', '[regtest]')])

View File

@@ -26,12 +26,14 @@ signet_blocks = [
class SignetParams:
def __init__(self, challenge=None):
# Prune to prevent disk space warning on CI systems with limited space,
# when using networks other than regtest.
if challenge is None:
self.challenge = SIGNET_DEFAULT_CHALLENGE
self.shared_args = []
self.shared_args = ["-prune=550"]
else:
self.challenge = challenge
self.shared_args = [f"-signetchallenge={challenge}"]
self.shared_args = ["-prune=550", f"-signetchallenge={challenge}"]
class SignetBasicTest(BitcoinTestFramework):
def set_test_params(self):