mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-03 17:54:19 +02:00
Merge bitcoin/bitcoin#31961: Require sqlite when building the wallet
36b6f36ac4build: require sqlite when building the wallet (Sjors Provoost) Pull request description: Require that sqlite is available in order to compile the wallet. Removes instances of `USE_SQLITE` since it is no longer possible to not have sqlite available. The `NO_SQLITE` option is dropped from depends. This is another step towards dropping the legacy wallet, extracted from #31250. ACKs for top commit: m3dwards: ACK36b6f36ac4davidgumberg: crACK36b6f36ac4hebasto: re-ACK36b6f36ac4. Tree-SHA512: 870a0135671c80c4f28602119eb8637a1ed43b51b1673bfe88425782fb62ec6ef0f3d6baf0d5984d6a243779b0f63423fd4c4dc324ef87bffba13d63e05ad793
This commit is contained in:
@@ -16,7 +16,6 @@ function(create_test_config)
|
||||
endmacro()
|
||||
|
||||
set_configure_variable(ENABLE_WALLET ENABLE_WALLET)
|
||||
set_configure_variable(WITH_SQLITE USE_SQLITE)
|
||||
set_configure_variable(WITH_BDB USE_BDB)
|
||||
set_configure_variable(BUILD_CLI BUILD_BITCOIN_CLI)
|
||||
set_configure_variable(BUILD_UTIL BUILD_BITCOIN_UTIL)
|
||||
|
||||
@@ -16,7 +16,6 @@ RPCAUTH=@abs_top_srcdir@/share/rpcauth/rpcauth.py
|
||||
[components]
|
||||
# Which components are enabled. These are commented out by `configure` if they were disabled when running config.
|
||||
@ENABLE_WALLET_TRUE@ENABLE_WALLET=true
|
||||
@USE_SQLITE_TRUE@USE_SQLITE=true
|
||||
@USE_BDB_TRUE@USE_BDB=true
|
||||
@BUILD_BITCOIN_CLI_TRUE@ENABLE_CLI=true
|
||||
@BUILD_BITCOIN_UTIL_TRUE@ENABLE_BITCOIN_UTIL=true
|
||||
|
||||
@@ -59,8 +59,7 @@ class FilelockTest(BitcoinTestFramework):
|
||||
|
||||
if self.is_bdb_compiled():
|
||||
check_wallet_filelock(False)
|
||||
if self.is_sqlite_compiled():
|
||||
check_wallet_filelock(True)
|
||||
check_wallet_filelock(True)
|
||||
|
||||
if __name__ == '__main__':
|
||||
FilelockTest(__file__).main()
|
||||
|
||||
@@ -59,7 +59,7 @@ class MempoolPersistTest(BitcoinTestFramework):
|
||||
|
||||
def run_test(self):
|
||||
self.mini_wallet = MiniWallet(self.nodes[2])
|
||||
if self.is_sqlite_compiled():
|
||||
if self.is_wallet_compiled():
|
||||
self.nodes[2].createwallet(
|
||||
wallet_name="watch",
|
||||
descriptors=True,
|
||||
@@ -73,7 +73,7 @@ class MempoolPersistTest(BitcoinTestFramework):
|
||||
tx_creation_time_lower = int(time.time())
|
||||
for _ in range(5):
|
||||
last_txid = self.mini_wallet.send_self_transfer(from_node=self.nodes[2])["txid"]
|
||||
if self.is_sqlite_compiled():
|
||||
if self.is_wallet_compiled():
|
||||
self.nodes[2].syncwithvalidationinterfacequeue() # Flush mempool to wallet
|
||||
node2_balance = wallet_watch.getbalance()
|
||||
self.sync_all()
|
||||
@@ -137,7 +137,7 @@ class MempoolPersistTest(BitcoinTestFramework):
|
||||
assert_equal(entry_prioritised_before_restart['fees']['base'] + Decimal('0.00009999'), entry_prioritised_before_restart['fees']['modified'])
|
||||
|
||||
# Verify accounting of mempool transactions after restart is correct
|
||||
if self.is_sqlite_compiled():
|
||||
if self.is_wallet_compiled():
|
||||
self.nodes[2].loadwallet("watch")
|
||||
wallet_watch = self.nodes[2].get_wallet_rpc("watch")
|
||||
self.nodes[2].syncwithvalidationinterfacequeue() # Flush mempool to wallet
|
||||
|
||||
@@ -229,14 +229,10 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
# So set it to None to force -disablewallet, because the wallet is not needed.
|
||||
self.options.descriptors = None
|
||||
elif self.options.descriptors is None:
|
||||
# Some wallet is either required or optionally used by the test.
|
||||
# Prefer SQLite unless it isn't available
|
||||
if self.is_sqlite_compiled():
|
||||
if self.is_wallet_compiled():
|
||||
self.options.descriptors = True
|
||||
elif self.is_bdb_compiled():
|
||||
self.options.descriptors = False
|
||||
else:
|
||||
# If neither are compiled, tests requiring a wallet will be skipped and the value of self.options.descriptors won't matter
|
||||
# Tests requiring a wallet will be skipped and the value of self.options.descriptors won't matter
|
||||
# It still needs to exist and be None in order for tests to work however.
|
||||
# So set it to None, which will also set -disablewallet.
|
||||
self.options.descriptors = None
|
||||
@@ -966,16 +962,9 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
self._requires_wallet = True
|
||||
if not self.is_wallet_compiled():
|
||||
raise SkipTest("wallet has not been compiled.")
|
||||
if self.options.descriptors:
|
||||
self.skip_if_no_sqlite()
|
||||
else:
|
||||
if not self.options.descriptors:
|
||||
self.skip_if_no_bdb()
|
||||
|
||||
def skip_if_no_sqlite(self):
|
||||
"""Skip the running test if sqlite has not been compiled."""
|
||||
if not self.is_sqlite_compiled():
|
||||
raise SkipTest("sqlite has not been compiled.")
|
||||
|
||||
def skip_if_no_bdb(self):
|
||||
"""Skip the running test if BDB has not been compiled."""
|
||||
if not self.is_bdb_compiled():
|
||||
@@ -1030,7 +1019,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
"""Checks whether wallet support for the specified type
|
||||
(legacy or descriptor wallet) was compiled."""
|
||||
if self.options.descriptors:
|
||||
return self.is_sqlite_compiled()
|
||||
return self.is_wallet_compiled()
|
||||
else:
|
||||
return self.is_bdb_compiled()
|
||||
|
||||
@@ -1050,10 +1039,6 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
"""Checks whether the USDT tracepoints were compiled."""
|
||||
return self.config["components"].getboolean("ENABLE_USDT_TRACEPOINTS")
|
||||
|
||||
def is_sqlite_compiled(self):
|
||||
"""Checks whether the wallet module was compiled with Sqlite support."""
|
||||
return self.config["components"].getboolean("USE_SQLITE")
|
||||
|
||||
def is_bdb_compiled(self):
|
||||
"""Checks whether the wallet module was compiled with BDB support."""
|
||||
return self.config["components"].getboolean("USE_BDB")
|
||||
|
||||
@@ -367,8 +367,7 @@ class ToolWalletTest(BitcoinTestFramework):
|
||||
self.do_tool_createfromdump("load", "wallet.dump")
|
||||
if self.is_bdb_compiled():
|
||||
self.do_tool_createfromdump("load-bdb", "wallet.dump", "bdb")
|
||||
if self.is_sqlite_compiled():
|
||||
self.do_tool_createfromdump("load-sqlite", "wallet.dump", "sqlite")
|
||||
self.do_tool_createfromdump("load-sqlite", "wallet.dump", "sqlite")
|
||||
|
||||
self.log.info('Checking createfromdump handling of magic and versions')
|
||||
bad_ver_wallet_dump = self.nodes[0].datadir_path / "wallet-bad_ver1.dump"
|
||||
|
||||
@@ -127,7 +127,6 @@ class AddressInputTypeGrouping(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
def make_payment(self, A, B, v, addr_type):
|
||||
fee_rate = random.randint(1, 20)
|
||||
|
||||
@@ -33,7 +33,6 @@ class WalletDescriptorTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
self.skip_if_no_py_sqlite3()
|
||||
|
||||
def test_concurrent_writes(self):
|
||||
|
||||
@@ -28,7 +28,6 @@ class WalletFastRescanTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
def get_wallet_txids(self, node: TestNode, wallet_name: str) -> list[str]:
|
||||
w = node.get_wallet_rpc(wallet_name)
|
||||
|
||||
@@ -47,7 +47,6 @@ class ImportDescriptorsTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
def test_importdesc(self, req, success, error_code=None, error_message=None, warnings=None, wallet=None):
|
||||
"""Run importdescriptors and assert success"""
|
||||
|
||||
@@ -26,7 +26,6 @@ class ListDescriptorsTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
# do not create any wallet by default
|
||||
def init_wallet(self, *, node):
|
||||
|
||||
@@ -212,7 +212,6 @@ class WalletMiniscriptTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
def watchonly_test(self, desc):
|
||||
self.log.info(f"Importing descriptor '{desc}'")
|
||||
|
||||
@@ -29,7 +29,6 @@ class WalletMiniscriptDecayingMultisigDescriptorPSBTTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
@staticmethod
|
||||
def _get_xpub(wallet, internal):
|
||||
|
||||
@@ -26,7 +26,6 @@ class WalletMultisigDescriptorPSBTTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
@staticmethod
|
||||
def _get_xpub(wallet, internal):
|
||||
|
||||
@@ -24,7 +24,6 @@ class WalletRescanUnconfirmed(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
def run_test(self):
|
||||
self.log.info("Create wallets and mine initial chain")
|
||||
|
||||
@@ -198,7 +198,6 @@ class WalletTaprootTest(BitcoinTestFramework):
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
self.skip_if_no_sqlite()
|
||||
|
||||
def setup_network(self):
|
||||
self.setup_nodes()
|
||||
|
||||
@@ -343,16 +343,15 @@ class UpgradeWalletTest(BitcoinTestFramework):
|
||||
v16_3_kvs = dump_bdb_kv(v16_3_wallet)
|
||||
assert b'\x0adefaultkey' not in v16_3_kvs
|
||||
|
||||
if self.is_sqlite_compiled():
|
||||
self.log.info("Checking that descriptor wallets do nothing, successfully")
|
||||
self.nodes[0].createwallet(wallet_name="desc_upgrade", descriptors=True)
|
||||
desc_wallet = self.nodes[0].get_wallet_rpc("desc_upgrade")
|
||||
self.test_upgradewallet(desc_wallet, previous_version=169900, expected_version=169900)
|
||||
self.log.info("Checking that descriptor wallets do nothing, successfully")
|
||||
self.nodes[0].createwallet(wallet_name="desc_upgrade", descriptors=True)
|
||||
desc_wallet = self.nodes[0].get_wallet_rpc("desc_upgrade")
|
||||
self.test_upgradewallet(desc_wallet, previous_version=169900, expected_version=169900)
|
||||
|
||||
self.log.info("Checking that descriptor wallets without privkeys do nothing, successfully")
|
||||
self.nodes[0].createwallet(wallet_name="desc_upgrade_nopriv", descriptors=True, disable_private_keys=True)
|
||||
desc_wallet = self.nodes[0].get_wallet_rpc("desc_upgrade_nopriv")
|
||||
self.test_upgradewallet(desc_wallet, previous_version=169900, expected_version=169900)
|
||||
self.log.info("Checking that descriptor wallets without privkeys do nothing, successfully")
|
||||
self.nodes[0].createwallet(wallet_name="desc_upgrade_nopriv", descriptors=True, disable_private_keys=True)
|
||||
desc_wallet = self.nodes[0].get_wallet_rpc("desc_upgrade_nopriv")
|
||||
self.test_upgradewallet(desc_wallet, previous_version=169900, expected_version=169900)
|
||||
|
||||
if self.is_bdb_compiled():
|
||||
self.log.info("Upgrading a wallet with private keys disabled")
|
||||
|
||||
Reference in New Issue
Block a user