Skip to content

Commit a541e5d

Browse files
committed
Merge bitcoin/bitcoin#24104: fs: Make compatible with boost 1.78
dc5d6b0 fs: Make compatible with boost 1.78 (Andrew Chow) Pull request description: Boost 1.78 removed `operator+` in a way that breaks our usage of it in a subclass. A [proposed workaround](boostorg/filesystem#223 (comment)) for this is to cast the argument to `boost::filesystem::path`, and this is backwards compatible with older versions of boost. Additionally, it appears that `fs::canonical` no longer removes trailing slashes. This was causing a test to fail. The solution is to explicitly remove the trailing separator in the one place that `fs::canonical` is used. Lastly, `fs::create_directories` now has an error message saying `create_directories` instead of `create_directory`. This caused wallet_multiwallet.py to fail. The error message check has been updated to be able accept either string. Fixes #23846 ACKs for top commit: ryanofsky: Code review ACK dc5d6b0 vincenzopalazzo: ACK bitcoin/bitcoin@dc5d6b0 Tree-SHA512: d4d8e7b49b8dfbf0ced9bfe9a2b3827841227fc755fc799f19159076b0ccf882432cc8b6ad93cdeda98fb58b942b9ba50a9e0a6b4f6b1e0097e80f1074ae5682
2 parents 7102f7d + dc5d6b0 commit a541e5d

File tree

3 files changed

+3
-3
lines changed

3 files changed

+3
-3
lines changed

src/fs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ static inline auto quoted(const std::string& s)
8888
// Allow safe path append operations.
8989
static inline path operator+(path p1, path p2)
9090
{
91-
p1 += std::move(p2);
91+
p1 += static_cast<boost::filesystem::path&&>(p2);
9292
return p1;
9393
}
9494

src/wallet/load.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ bool VerifyWallets(WalletContext& context)
2929
fs::path wallet_dir = fs::PathFromString(args.GetArg("-walletdir", ""));
3030
boost::system::error_code error;
3131
// The canonical path cleans the path, preventing >1 Berkeley environment instances for the same directory
32-
fs::path canonical_wallet_dir = fs::canonical(wallet_dir, error);
32+
fs::path canonical_wallet_dir = fs::canonical(wallet_dir, error).remove_trailing_separator();
3333
if (error || !fs::exists(wallet_dir)) {
3434
chain.initError(strprintf(_("Specified -walletdir \"%s\" does not exist"), fs::PathToString(wallet_dir)));
3535
return false;

test/functional/wallet_multiwallet.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def wallet_file(name):
141141

142142
# should raise rpc error if wallet path can't be created
143143
err_code = -4 if self.options.descriptors else -1
144-
assert_raises_rpc_error(err_code, "boost::filesystem::create_directory:", self.nodes[0].createwallet, "w8/bad")
144+
assert_raises_rpc_error(err_code, "boost::filesystem::create_director", self.nodes[0].createwallet, "w8/bad")
145145

146146
# check that all requested wallets were created
147147
self.stop_node(0)

0 commit comments

Comments
 (0)