Skip to content

Commit 1344d3b

Browse files
committed
Merge bitcoin#32136: [29.x] backports and 29.0rc3
f80ab9a [doc] update man pages for 29.0rc3 (glozow) 7c05ef5 [build] bump to 29.0rc3 (glozow) c0756b7 depends: set CMAKE_*_COMPILER_TARGET in toolchain (fanquake) 4773452 cmake: Add `NO_CACHE_IF_FAILED` option for checking linker flags (Hennadii Stepanov) 7bc7af9 fuzz: extract unsequenced operations with side-effects (Lőrinc) 288163e fuzz: Fix off-by-one in package_rbf target (MarcoFalke) a306048 test: avoid disk space warning for non-regtest (Sjors Provoost) Pull request description: Backports + final changes for 29.0rc3. Backports: - bitcoin#32057 - bitcoin#32122 - bitcoin#32141 - bitcoin#32027 - bitcoin#31849 ACKs for top commit: hebasto: ACK f80ab9a, I've verified back-ports locally and reviewed release related changes. fanquake: ACK f80ab9a Tree-SHA512: 15c882eac98825c41859859af1621e63a5b9d98f3b492c451c14f2d2232220dfa8d1ef933adae773918e188c6ade085f254f2853ff078bf1f99b8cd77facb182
2 parents d6db871 + f80ab9a commit 1344d3b

14 files changed

+49
-45
lines changed

CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ set(CLIENT_NAME "Bitcoin Core")
2626
set(CLIENT_VERSION_MAJOR 29)
2727
set(CLIENT_VERSION_MINOR 0)
2828
set(CLIENT_VERSION_BUILD 0)
29-
set(CLIENT_VERSION_RC 2)
29+
set(CLIENT_VERSION_RC 3)
3030
set(CLIENT_VERSION_IS_RELEASE "true")
3131
set(COPYRIGHT_YEAR "2025")
3232

@@ -376,6 +376,7 @@ if(SANITIZERS)
376376
int main() { return 0; }
377377
"
378378
RESULT_VAR linker_supports_sanitizers
379+
NO_CACHE_IF_FAILED
379380
)
380381
if(NOT linker_supports_sanitizers)
381382
message(FATAL_ERROR "Linker did not accept requested flags, you are missing required libraries.")

cmake/module/TryAppendLinkerFlag.cmake

+5-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ In configuration output, this function prints a string by the following pattern:
2020
function(try_append_linker_flag flag)
2121
cmake_parse_arguments(PARSE_ARGV 1
2222
TALF # prefix
23-
"" # options
23+
"NO_CACHE_IF_FAILED" # options
2424
"TARGET;VAR;SOURCE;RESULT_VAR" # one_value_keywords
2525
"IF_CHECK_PASSED" # multi_value_keywords
2626
)
@@ -68,6 +68,10 @@ function(try_append_linker_flag flag)
6868
if(DEFINED TALF_RESULT_VAR)
6969
set(${TALF_RESULT_VAR} "${${result}}" PARENT_SCOPE)
7070
endif()
71+
72+
if(NOT ${result} AND TALF_NO_CACHE_IF_FAILED)
73+
unset(${result} CACHE)
74+
endif()
7175
endfunction()
7276

7377
if(MSVC)

depends/Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ endif
206206
$(host_prefix)/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id)
207207
@mkdir -p $(@D)
208208
sed -e 's|@depends_crosscompiling@|$(crosscompiling)|' \
209+
-e 's|@host@|$(host)|' \
209210
-e 's|@host_system_name@|$($(host_os)_cmake_system_name)|' \
210211
-e 's|@host_system_version@|$($(host_os)_cmake_system_version)|' \
211212
-e 's|@host_arch@|$(host_arch)|' \

depends/toolchain.cmake.in

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ if(@depends_crosscompiling@)
1313
set(CMAKE_SYSTEM_NAME @host_system_name@)
1414
set(CMAKE_SYSTEM_VERSION @host_system_version@)
1515
set(CMAKE_SYSTEM_PROCESSOR @host_arch@)
16+
17+
set(CMAKE_C_COMPILER_TARGET @host@)
18+
set(CMAKE_CXX_COMPILER_TARGET @host@)
19+
set(CMAKE_OBJCXX_COMPILER_TARGET @host@)
1620
endif()
1721

1822
if(NOT DEFINED CMAKE_C_FLAGS_INIT)

doc/man/bitcoin-cli.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc2" "User Commands"
2+
.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc3" "User Commands"
33
.SH NAME
4-
bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc2
4+
bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc3
55
.SH SYNOPSIS
66
.B bitcoin-cli
77
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR]
@@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc2
1515
.B bitcoin-cli
1616
[\fI\,options\/\fR] \fI\,help <command>\/\fR
1717
.SH DESCRIPTION
18-
Bitcoin Core RPC client version v29.0.0rc2
18+
Bitcoin Core RPC client version v29.0.0rc3
1919
.PP
2020
The bitcoin\-cli utility provides a command line interface to interact with a Bitcoin Core RPC server.
2121
.PP

doc/man/bitcoin-qt.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc2" "User Commands"
2+
.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc3" "User Commands"
33
.SH NAME
4-
bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc2
4+
bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc3
55
.SH SYNOPSIS
66
.B bitcoin-qt
77
[\fI\,options\/\fR] [\fI\,URI\/\fR]
88
.SH DESCRIPTION
9-
Bitcoin Core version v29.0.0rc2
9+
Bitcoin Core version v29.0.0rc3
1010
.PP
1111
The bitcoin\-qt application provides a graphical interface for interacting with Bitcoin Core.
1212
.PP

doc/man/bitcoin-tx.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc2" "User Commands"
2+
.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc3" "User Commands"
33
.SH NAME
4-
bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc2
4+
bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc3
55
.SH SYNOPSIS
66
.B bitcoin-tx
77
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR]
88
.br
99
.B bitcoin-tx
1010
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR]
1111
.SH DESCRIPTION
12-
Bitcoin Core bitcoin\-tx utility version v29.0.0rc2
12+
Bitcoin Core bitcoin\-tx utility version v29.0.0rc3
1313
.PP
1414
The bitcoin\-tx tool is used for creating and modifying bitcoin transactions.
1515
.PP

doc/man/bitcoin-util.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc2" "User Commands"
2+
.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc3" "User Commands"
33
.SH NAME
4-
bitcoin-util \- manual page for bitcoin-util v29.0.0rc2
4+
bitcoin-util \- manual page for bitcoin-util v29.0.0rc3
55
.SH SYNOPSIS
66
.B bitcoin-util
77
[\fI\,options\/\fR] [\fI\,command\/\fR]
88
.br
99
.B bitcoin-util
1010
[\fI\,options\/\fR] \fI\,grind <hex-block-header>\/\fR
1111
.SH DESCRIPTION
12-
Bitcoin Core bitcoin\-util utility version v29.0.0rc2
12+
Bitcoin Core bitcoin\-util utility version v29.0.0rc3
1313
.PP
1414
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.
1515
.SH OPTIONS

doc/man/bitcoin-wallet.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc2" "User Commands"
2+
.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc3" "User Commands"
33
.SH NAME
4-
bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc2
4+
bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc3
55
.SH SYNOPSIS
66
.B bitcoin-wallet
77
[\fI\,options\/\fR] \fI\,<command>\/\fR
88
.SH DESCRIPTION
9-
Bitcoin Core bitcoin\-wallet utility version v29.0.0rc2
9+
Bitcoin Core bitcoin\-wallet utility version v29.0.0rc3
1010
.PP
1111
bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
1212
.PP

doc/man/bitcoind.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc2" "User Commands"
2+
.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc3" "User Commands"
33
.SH NAME
4-
bitcoind \- manual page for bitcoind v29.0.0rc2
4+
bitcoind \- manual page for bitcoind v29.0.0rc3
55
.SH SYNOPSIS
66
.B bitcoind
77
[\fI\,options\/\fR]
88
.SH DESCRIPTION
9-
Bitcoin Core daemon version v29.0.0rc2
9+
Bitcoin Core daemon version v29.0.0rc3
1010
.PP
1111
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.
1212
.PP

src/test/fuzz/base_encode_decode.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,6 @@ FUZZ_TARGET(psbt_base64_decode)
9292

9393
PartiallySignedTransaction psbt;
9494
std::string error;
95-
assert(DecodeBase64PSBT(psbt, random_string, error) == error.empty());
95+
const bool ok{DecodeBase64PSBT(psbt, random_string, error)};
96+
assert(ok == error.empty());
9697
}

src/test/fuzz/rbf.cpp

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2020-2022 The Bitcoin Core developers
1+
// Copyright (c) 2020-present The Bitcoin Core developers
22
// Distributed under the MIT software license, see the accompanying
33
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
44

@@ -108,31 +108,30 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
108108

109109
// Add a bunch of parent-child pairs to the mempool, and remember them.
110110
std::vector<CTransaction> mempool_txs;
111-
size_t iter{0};
111+
uint32_t iter{0};
112112

113113
// Keep track of the total vsize of CTxMemPoolEntry's being added to the mempool to avoid overflow
114114
// Add replacement_vsize since this is added to new diagram during RBF check
115115
std::optional<CMutableTransaction> replacement_tx = ConsumeDeserializable<CMutableTransaction>(fuzzed_data_provider, TX_WITH_WITNESS);
116116
if (!replacement_tx) {
117117
return;
118118
}
119-
assert(iter <= g_outpoints.size());
120119
replacement_tx->vin.resize(1);
121-
replacement_tx->vin[0].prevout = g_outpoints[iter++];
120+
replacement_tx->vin[0].prevout = g_outpoints.at(iter++);
122121
CTransaction replacement_tx_final{*replacement_tx};
123122
auto replacement_entry = ConsumeTxMemPoolEntry(fuzzed_data_provider, replacement_tx_final);
124123
int32_t replacement_vsize = replacement_entry.GetTxSize();
125124
int64_t running_vsize_total{replacement_vsize};
126125

127126
LOCK2(cs_main, pool.cs);
128127

129-
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), NUM_ITERS)
130-
{
128+
while (fuzzed_data_provider.ConsumeBool()) {
129+
if (iter >= NUM_ITERS) break;
130+
131131
// Make sure txns only have one input, and that a unique input is given to avoid circular references
132132
CMutableTransaction parent;
133-
assert(iter <= g_outpoints.size());
134133
parent.vin.resize(1);
135-
parent.vin[0].prevout = g_outpoints[iter++];
134+
parent.vin[0].prevout = g_outpoints.at(iter++);
136135
parent.vout.emplace_back(0, CScript());
137136

138137
mempool_txs.emplace_back(parent);

test/functional/feature_config_args.py

+6-14
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ def add_options(self, parser):
2424
def set_test_params(self):
2525
self.setup_clean_chain = True
2626
self.num_nodes = 1
27+
# Prune to prevent disk space warning on CI systems with limited space,
28+
# when using networks other than regtest.
29+
self.extra_args = [["-prune=550"]]
2730
self.supports_cli = False
2831
self.wallet_names = []
2932
self.disable_autoconnect = False
@@ -471,32 +474,21 @@ def test_testnet3_deprecation_msg(self):
471474
self.log.info("Test testnet3 deprecation warning")
472475
t3_warning_log = "Warning: Support for testnet3 is deprecated and will be removed in an upcoming release. Consider switching to testnet4."
473476

474-
def warning_msg(node, approx_size):
475-
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.'
476-
477-
# Testnet3 node will log the warning
477+
self.log.debug("Testnet3 node will log the deprecation warning")
478478
self.nodes[0].chain = 'testnet3'
479479
self.nodes[0].replace_in_config([('regtest=', 'testnet='), ('[regtest]', '[test]')])
480480
with self.nodes[0].assert_debug_log([t3_warning_log]):
481481
self.start_node(0)
482-
# Some CI environments will have limited space and some others won't
483-
# so we need to handle both cases as a valid result.
484-
self.nodes[0].stderr.seek(0)
485-
err = self.nodes[0].stdout.read()
486-
self.nodes[0].stderr.seek(0)
487-
self.nodes[0].stderr.truncate()
488-
if err != b'' and err != warning_msg(self.nodes[0], 42):
489-
raise AssertionError("Unexpected stderr after shutdown of Testnet3 node")
490482
self.stop_node(0)
491483

492-
# Testnet4 node will not log the warning
484+
self.log.debug("Testnet4 node will not log the deprecation warning")
493485
self.nodes[0].chain = 'testnet4'
494486
self.nodes[0].replace_in_config([('testnet=', 'testnet4='), ('[test]', '[testnet4]')])
495487
with self.nodes[0].assert_debug_log([], unexpected_msgs=[t3_warning_log]):
496488
self.start_node(0)
497489
self.stop_node(0)
498490

499-
# Reset to regtest
491+
self.log.debug("Reset to regtest")
500492
self.nodes[0].chain = 'regtest'
501493
self.nodes[0].replace_in_config([('testnet4=', 'regtest='), ('[testnet4]', '[regtest]')])
502494

test/functional/feature_signet.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@
2626

2727
class SignetParams:
2828
def __init__(self, challenge=None):
29+
# Prune to prevent disk space warning on CI systems with limited space,
30+
# when using networks other than regtest.
2931
if challenge is None:
3032
self.challenge = SIGNET_DEFAULT_CHALLENGE
31-
self.shared_args = []
33+
self.shared_args = ["-prune=550"]
3234
else:
3335
self.challenge = challenge
34-
self.shared_args = [f"-signetchallenge={challenge}"]
36+
self.shared_args = ["-prune=550", f"-signetchallenge={challenge}"]
3537

3638
class SignetBasicTest(BitcoinTestFramework):
3739
def set_test_params(self):

0 commit comments

Comments
 (0)