mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-19 05:12:03 +02:00
Merge bitcoin/bitcoin#24104: fs: Make compatible with boost 1.78
dc5d6b0d4793ca978f71f69ef7d6b818794676c2 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](https://github.com/boostorg/filesystem/issues/223#issuecomment-1000230207) 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 dc5d6b0d4793ca978f71f69ef7d6b818794676c2
vincenzopalazzo:
ACK dc5d6b0d47
Tree-SHA512: d4d8e7b49b8dfbf0ced9bfe9a2b3827841227fc755fc799f19159076b0ccf882432cc8b6ad93cdeda98fb58b942b9ba50a9e0a6b4f6b1e0097e80f1074ae5682
This commit is contained in:
commit
a541e5d519
2
src/fs.h
2
src/fs.h
@ -88,7 +88,7 @@ static inline auto quoted(const std::string& s)
|
|||||||
// Allow safe path append operations.
|
// Allow safe path append operations.
|
||||||
static inline path operator+(path p1, path p2)
|
static inline path operator+(path p1, path p2)
|
||||||
{
|
{
|
||||||
p1 += std::move(p2);
|
p1 += static_cast<boost::filesystem::path&&>(p2);
|
||||||
return p1;
|
return p1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ bool VerifyWallets(WalletContext& context)
|
|||||||
fs::path wallet_dir = fs::PathFromString(args.GetArg("-walletdir", ""));
|
fs::path wallet_dir = fs::PathFromString(args.GetArg("-walletdir", ""));
|
||||||
boost::system::error_code error;
|
boost::system::error_code error;
|
||||||
// The canonical path cleans the path, preventing >1 Berkeley environment instances for the same directory
|
// The canonical path cleans the path, preventing >1 Berkeley environment instances for the same directory
|
||||||
fs::path canonical_wallet_dir = fs::canonical(wallet_dir, error);
|
fs::path canonical_wallet_dir = fs::canonical(wallet_dir, error).remove_trailing_separator();
|
||||||
if (error || !fs::exists(wallet_dir)) {
|
if (error || !fs::exists(wallet_dir)) {
|
||||||
chain.initError(strprintf(_("Specified -walletdir \"%s\" does not exist"), fs::PathToString(wallet_dir)));
|
chain.initError(strprintf(_("Specified -walletdir \"%s\" does not exist"), fs::PathToString(wallet_dir)));
|
||||||
return false;
|
return false;
|
||||||
|
@ -141,7 +141,7 @@ class MultiWalletTest(BitcoinTestFramework):
|
|||||||
|
|
||||||
# should raise rpc error if wallet path can't be created
|
# should raise rpc error if wallet path can't be created
|
||||||
err_code = -4 if self.options.descriptors else -1
|
err_code = -4 if self.options.descriptors else -1
|
||||||
assert_raises_rpc_error(err_code, "boost::filesystem::create_directory:", self.nodes[0].createwallet, "w8/bad")
|
assert_raises_rpc_error(err_code, "boost::filesystem::create_director", self.nodes[0].createwallet, "w8/bad")
|
||||||
|
|
||||||
# check that all requested wallets were created
|
# check that all requested wallets were created
|
||||||
self.stop_node(0)
|
self.stop_node(0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user