diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-01-05 06:08:15 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-01-05 06:08:15 +0000 |
commit | 083bdfbef9bc532b72cf116591025916eebaf676 (patch) | |
tree | 04da8a6f58a6ef6f05ebafc0a86b3a27c00ba283 /net-p2p/bitcoin-qt | |
parent | e84469d1a99031578172f7c064945ba5114c5263 (diff) |
gentoo auto-resync : 05:01:2023 - 06:08:15
Diffstat (limited to 'net-p2p/bitcoin-qt')
-rw-r--r-- | net-p2p/bitcoin-qt/Manifest | 3 | ||||
-rw-r--r-- | net-p2p/bitcoin-qt/bitcoin-qt-24.0.1.ebuild | 159 | ||||
-rw-r--r-- | net-p2p/bitcoin-qt/files/24.0.1-syslibs.patch | 281 |
3 files changed, 443 insertions, 0 deletions
diff --git a/net-p2p/bitcoin-qt/Manifest b/net-p2p/bitcoin-qt/Manifest index cf18777a07d6..4ae745fa700e 100644 --- a/net-p2p/bitcoin-qt/Manifest +++ b/net-p2p/bitcoin-qt/Manifest @@ -1,10 +1,13 @@ +AUX 24.0.1-syslibs.patch 9037 BLAKE2B fa634a8f18d1f1c32d1c3cb18bdfcafc89838a7f5b3a075a40ad3354d1253f1d637351d2661475eb86110db470a7b29c9cfb6266a7f61623c0865939c9e74453 SHA512 fcf8114174e69c5385058b190fa2c0b0ef105869d5d6a40a3cc6bb8e8ef1518cb8bc1fb7cc3a7ec28f361d91f66e4253420c2b50a0004a2dc0978910254cae3d AUX bitcoin-qt-0.20.1-boost-1.77-compat.patch 2255 BLAKE2B 9a65c1640fd4090840070865265b7529324e850a7f34cc13c6e6a940f0a706cf5b3849497044233f3cf5b3fde177afb4d160ded2ed3a8adfc0ae8d488724539f SHA512 f1326a67749949efee07e01175b227ff16fda8f88e0a956598013399ad3b0ae652bb3206a0ce08edfbf4a712d523f2018de684d4c747c9d234d1fab6088e42ad AUX bitcoin-qt.protocol 150 BLAKE2B b18645f52a6884fc0e475a85809d5b79e207adc346307623c5f1edececcb4564ac17bdb9a0deeb5c12c41409a34f83c1f22ab89f32852c58d948affa1de57edb SHA512 6b71d9d3fc9e05e6c6595aaaa307be9b5007c25f4b11162c5d873e200576d35156c2c660f229799400a3fba6dc8a9663ff8824371d83242d52ee6472687118ab AUX org.bitcoin.bitcoin-qt.desktop 468 BLAKE2B e00d41612be14770d1f34b83f98a104aed197eb62707382a0189c5b9559f572336e8d236dcd290e1a4a43df041bfdef23209e1533401659228af8b004c9b3d76 SHA512 0cecb04d7813bcc0e5c9f1a5dfc32859708d3524548f6dcee33ba9fd600a7000f64b3d5f2dbdc1dcfce0a68fd82ea932b338da77ad495ebc03b097f462a75d88 DIST bitcoin-0.21.0.knots20210130.patches.tar.xz 505040 BLAKE2B c8999de4158b8781bba6ad014ae14859f1e0bab3080c59a18910cf7447eb56da4b17a0e1843fdd3669d22636df9e4ddcc4526e4293bfd86dc884983a29a5f76c SHA512 7ee27da3d26be0e93ecddff7bb21ef1746bcdb07f9a2b0ea48065367b4c44391e974e04a21e511c05fca8f55971ab8e3c3ac01a3775cc52a537d9e10966d9871 DIST bitcoin-22.0.knots20211108.patches.tar.xz 1318256 BLAKE2B d6e56bc0ca1d706e99e7f42d8f335f016335b6bf3637c733d993696872f0a4c655cc58fc0394dfdf9916e13f0d7fbdcebf25fbdc9a165227e3c59133033644c0 SHA512 daab5860b7c7e137b6bf350cdc153e6e19172e49935640d1f6fe1f1be1e4df805b1db7fd30b0f95a560106956adab70cc6282fe933ae9de153cb971dd280f83d +DIST bitcoin-24.0.1.tar.gz 11412628 BLAKE2B 2a8c83aecd12d8d40305d78ede1f389884ee62cfe4af39a9b416b8887a595f3393d599ebe9ddeb576bba5896923feb7ee45ba32d7d4cb0ce9e6d0ef39ecf83c7 SHA512 de1ddb543429f70b0b55a46500e0bc4807cca1b1655a28f8ab186d6f6e620f8cf82420bbdf412976ffed9bc6d742926b19933429c734edaf7430a4f8c37e1685 DIST bitcoin-v0.21.0.tar.gz 7533957 BLAKE2B 01247cbb9fca2381a8c08ab1c88c479c640963caef22e4207aab46b05813dbf2a5286ac9e98132fb34db0e9ac6c18c79e45a89de166f5c6d480d8ac6e14ecca2 SHA512 c58187996932b0151432a65885b7e8a7b216fb1ab0576fb7d4b5e9620d957594b05e181153e2e0e50bcd5ce764861ec11019ffbb1095d3e704f441e61ac6a04f DIST bitcoin-v22.0.tar.gz 7977783 BLAKE2B ba212037bc8efcfbbbf6340c48ed886c4a5aa93e4a34097eafea39734a6f4e25fa6b174f894655f63c504380d8761657771795bfcc641018bf1f1661deef9321 SHA512 1b4b17360e97f390ae678adb7a239c359d3a1288799710683e26f09fc53341b6fca3211465fa3e4fdee37324d85ec1a31ffd1a3714e969df13441f755fa4b7ad EBUILD bitcoin-qt-0.21.0.ebuild 4935 BLAKE2B 5483b44409cac50b71ee0298be28538e25ebc3e40ac50730a1d31575f9f82c165edca17ae0b43da6c9023c3e0f0088b18df0fa7f0d9a83ccacb6380b04620bab SHA512 c04215777cd7ac8a27c965151bad35ce89b4d7f1d4eb5b9c2a120ca053af6be640516c810d3f42c9c1fa1c6b6c0cb7a5d030ba5bba00757dcbcf6a47c230b61b EBUILD bitcoin-qt-22.0.ebuild 6217 BLAKE2B 38dd68fb740efd51c131edbdc1b1bd59aa91c4a3fca89bd1510b7ee59953a021f9504c94967c75ea09db128c7d0d07bfcba5534e623b813f2e516ab9ac4c8d4b SHA512 14a190c28acc6fa618a341220a51d86f0f8c648a6f9f05f88e8593471678285016ba3444e93c261d5e3736df434977577e23bcf869aab406e26c3e01d4ae04bd +EBUILD bitcoin-qt-24.0.1.ebuild 3881 BLAKE2B bd0a8155afb55c5c3f6b355460da406a1e92fe19ee908742ee7d49e7db9ae2c6e13bb6d7355c2a8718fca3f419f3a86c9d5df36ec45e523189a4d9c878e0c77b SHA512 9f82b1c9078bf94d3a8f05941968a1d07dfa8444c6f972b5561bc105dd29d3a2db383cfcb1a9fcbd822db816f748848f6b8c472bbf371cfde0fd24f8cab907eb MISC metadata.xml 1434 BLAKE2B e6e1f0ffac2e6be3bc19fe8bb8e9b18b5b50da6255d70d92fdc28a6e040b54ed4d5b94643835043eb64eae0273111f73c30e93a6d9b7203368aeedb880961c8a SHA512 5e7f2f044b27e4ac21d1e18d177bb1bd493feaad5598ad44abed8a0053403565100877498da29aa4f35e59d570d2a499daea58285dd59f3e62eafba7ee3460e7 diff --git a/net-p2p/bitcoin-qt/bitcoin-qt-24.0.1.ebuild b/net-p2p/bitcoin-qt/bitcoin-qt-24.0.1.ebuild new file mode 100644 index 000000000000..76fdba8ff317 --- /dev/null +++ b/net-p2p/bitcoin-qt/bitcoin-qt-24.0.1.ebuild @@ -0,0 +1,159 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DB_VER="4.8" +inherit autotools bash-completion-r1 db-use desktop xdg + +DESCRIPTION="An end-user Qt GUI for the Bitcoin crypto-currency" +HOMEPAGE="https://bitcoincore.org/" +SRC_URI=" + https://bitcoincore.org/bin/bitcoin-core-${PV}/${P/-qt}.tar.gz +" +S="${WORKDIR}"/${P/-qt} + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux" +IUSE="+asm +berkdb dbus +external-signer kde nat-pmp +qrcode sqlite systemtap test upnp +wallet zeromq" +RESTRICT="!test? ( test )" + +REQUIRED_USE=" + sqlite? ( wallet ) + berkdb? ( wallet ) + wallet? ( || ( berkdb sqlite ) ) +" +# dev-libs/univalue is now bundled as upstream dropped support for system copy +# and their version in the Bitcoin repo has deviated a fair bit from upstream. +# Upstream also seems very inactive. +RDEPEND=" + dev-libs/boost:= + >=dev-libs/libsecp256k1-0.2.0:=[recovery,schnorr] + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtwidgets:5 + virtual/bitcoin-leveldb + dbus? ( dev-qt/qtdbus:5 ) + dev-libs/libevent:= + nat-pmp? ( net-libs/libnatpmp ) + qrcode? ( + media-gfx/qrencode:= + ) + sqlite? ( >=dev-db/sqlite-3.7.17:= ) + upnp? ( >=net-libs/miniupnpc-1.9.20150916:= ) + berkdb? ( sys-libs/db:$(db_ver_to_slot "${DB_VER}")=[cxx] ) + zeromq? ( net-libs/zeromq:= ) +" +DEPEND=" + ${RDEPEND} + systemtap? ( dev-util/systemtap ) +" +BDEPEND="dev-qt/linguist-tools:5" + +DOCS=( + doc/bips.md + doc/bitcoin-conf.md + doc/descriptors.md + doc/files.md + doc/JSON-RPC-interface.md + doc/psbt.md + doc/reduce-memory.md + doc/reduce-traffic.md + doc/release-notes.md + doc/REST-interface.md + doc/tor.md +) + +PATCHES=( + "${FILESDIR}"/24.0.1-syslibs.patch +) + +pkg_pretend() { + elog "You are building ${PN} from Bitcoin Core." + elog "For more information, see:" + elog "https://bitcoincore.org/en/releases/${PV}/" +} + +src_prepare() { + sed -i 's/^\(complete -F _bitcoind \)bitcoind \(bitcoin-qt\)$/\1\2/' contrib/bitcoind.bash-completion || die + + # Save the generic icon for later + cp src/qt/res/src/bitcoin.svg bitcoin128.svg || die + + default + + eautoreconf + + rm -r src/leveldb src/secp256k1 || die +} + +src_configure() { + local myeconfargs=( + $(use_enable asm) + $(use_with dbus qtdbus) + $(use_enable systemtap ebpf) + $(use_enable external-signer) + $(use_with nat-pmp natpmp) + $(use_with nat-pmp natpmp-default) + $(use_with qrcode qrencode) + $(use_with upnp miniupnpc) + $(use_enable upnp upnp-default) + $(use_enable test tests) + $(use_enable wallet) + $(use_enable zeromq zmq) + --with-gui=qt5 + --disable-util-cli + --disable-util-tx + --disable-util-util + --disable-util-wallet + --disable-bench + --without-libs + --without-daemon + --disable-fuzz + --disable-fuzz-binary + --disable-ccache + --disable-static + $(use_with berkdb bdb) + $(use_with sqlite) + --with-system-leveldb + --with-system-libsecp256k1 + ) + + econf "${myeconfargs[@]}" +} + +src_install() { + default + + if use test; then + rm -f "${ED}/usr/bin/test_bitcoin" || die + rm -f "${ED}/usr/bin/test_bitcoin-qt" || die + fi + + insinto /usr/share/icons/hicolor/scalable/apps/ + doins bitcoin128.svg + + cp "${FILESDIR}/org.bitcoin.bitcoin-qt.desktop" "${T}" || die + sed -i 's/Knots/Core/;s/^\(Icon=\).*$/\1bitcoin128/' "${T}/org.bitcoin.bitcoin-qt.desktop" || die + domenu "${T}/org.bitcoin.bitcoin-qt.desktop" + + use zeromq && dodoc doc/zmq.md + + newbashcomp contrib/bitcoind.bash-completion ${PN} + + if use kde; then + insinto /usr/share/kservices5 + doins "${FILESDIR}/bitcoin-qt.protocol" + dosym "../../kservices5/bitcoin-qt.protocol" "/usr/share/kde4/services/bitcoin-qt.protocol" + fi +} + +pkg_postinst() { + xdg_pkg_postinst + + elog "To have ${PN} automatically use Tor when it's running, be sure your" + elog "'torrc' config file has 'ControlPort' and 'CookieAuthentication' setup" + elog "correctly, and add your user to the 'tor' user group." +} diff --git a/net-p2p/bitcoin-qt/files/24.0.1-syslibs.patch b/net-p2p/bitcoin-qt/files/24.0.1-syslibs.patch new file mode 100644 index 000000000000..00404a2ff021 --- /dev/null +++ b/net-p2p/bitcoin-qt/files/24.0.1-syslibs.patch @@ -0,0 +1,281 @@ +Originally based on 22.0-fix_build_without_leveldb.patch. + +- Allow system libsecp256k1 +- Allow system leveldb +- Abort if runtime leveldb != compiled-against leveldb +- Handle berkdb support being disabled better +--- a/configure.ac ++++ b/configure.ac +@@ -1362,6 +1362,23 @@ if test "$enable_fuzz_binary" = "yes"; then + CHECK_RUNTIME_LIB + fi + ++dnl Check for libsecp256k1, only if explicitly requested ++AC_ARG_WITH([system-libsecp256k1], ++ [AS_HELP_STRING([--with-system-libsecp256k1], ++ [Build with system libsecp256k1 (default is no; DANGEROUS; NOT SUPPORTED)])], ++ [system_libsecp256k1=$withval], ++ [system_libsecp256k1=no] ++) ++if test x$system_libsecp256k1 != xno; then ++ PKG_CHECK_MODULES([libsecp256k1],[libsecp256k1],,[true]) ++else ++ libsecp256k1_CFLAGS='-I$(srcdir)/secp256k1/include' ++ libsecp256k1_LIBS='secp256k1/libsecp256k1.la' ++fi ++AM_CONDITIONAL([EMBEDDED_LIBSECP256K1],[test x$system_libsecp256k1 = xno]) ++AC_SUBST(libsecp256k1_CFLAGS) ++AC_SUBST(libsecp256k1_LIBS) ++ + if test "$enable_wallet" != "no"; then + dnl Check for libdb_cxx only if wallet enabled + if test "$use_bdb" != "no"; then +@@ -1413,11 +1430,76 @@ if test "$use_usdt" != "no"; then + fi + AM_CONDITIONAL([ENABLE_USDT_TRACEPOINTS], [test "$use_usdt" = "yes"]) + ++build_leveldb=yes + if test "$build_bitcoin_cli$build_bitcoin_tx$build_bitcoin_util$build_bitcoind$bitcoin_enable_qt$use_bench$use_tests" = "nonononononono"; then + use_upnp=no + use_natpmp=no + use_zmq=no ++ build_leveldb=no ++fi ++ ++if test x$build_leveldb = xno; then ++ system_leveldb=no ++fi ++dnl Check for leveldb, only if explicitly requested ++if test x$system_leveldb != xno; then ++ build_leveldb=no ++ LEVELDB_CPPFLAGS= ++ AC_CHECK_LIB([leveldb],[main],[ ++ LIBLEVELDB=-lleveldb ++ ],[ ++ AC_MSG_ERROR([leveldb library not found; using --with-system-leveldb is not supported anyway]) ++ ]) ++ AC_CHECK_HEADER([leveldb/filter_policy.h],[],[ ++ AC_MSG_ERROR([LevelDB headers not found; using --with-system-leveldb is not supported anyway]) ++ ]) ++ AC_CHECK_HEADER([leveldb/helpers/memenv.h],[ ++ AC_MSG_CHECKING([for memenv.h path]) ++ BITCOIN_SUBDIR_TO_INCLUDE([LEVELDB_CPPFLAGS],[leveldb/helpers/],[memenv]) ++ ],[ ++ AC_CHECK_HEADER([memenv.h],[],[ ++ AC_MSG_ERROR([LevelDB headers not found; using --with-system-leveldb is not supported anyway]) ++ ]) ++ ]) ++ ++ AC_MSG_CHECKING([library containing leveldb::NewMemEnv]) ++ TEMP_LIBS="$LIBS" ++ TEMP_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS $LEVELDB_CPPFLAGS" ++ for searchlib in "" "-lmemenv" ERR; do ++ if test "x$searchlib" = "xERR"; then ++ AC_MSG_RESULT([no]) ++ AC_MSG_ERROR([LevelDB's memenv helper not found; using --with-system-leveldb is not supported anyway]) ++ fi ++ searchlib="$searchlib $LIBLEVELDB" ++ LIBS="$searchlib $TEMP_LIBS" ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ ++ #include <leveldb/env.h> ++ #include <leveldb/helpers/memenv.h> ++ ++ int main() { ++ leveldb::Env *myenv = leveldb::NewMemEnv(leveldb::Env::Default()); ++ delete myenv; ++ } ++ ])],[ ++ AC_MSG_RESULT([$searchlib]) ++ LIBMEMENV="$searchlib" ++ break ++ ]) ++ done ++ LIBS="$TEMP_LIBS" ++ CPPFLAGS="$TEMP_CPPFLAGS" + fi ++AM_CONDITIONAL([EMBEDDED_LEVELDB],[test x$build_leveldb = xyes]) ++AC_SUBST(LEVELDB_CPPFLAGS) ++AC_SUBST(LIBLEVELDB) ++AC_SUBST(LIBMEMENV) ++AC_ARG_WITH([system-leveldb], ++ [AS_HELP_STRING([--with-system-leveldb], ++ [Build with system LevelDB (default is no; DANGEROUS; NOT SUPPORTED)])], ++ [system_leveldb=$withval], ++ [system_leveldb=no] ++) + + dnl Check for libminiupnpc (optional) + if test "$use_upnp" != "no"; then +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -23,7 +23,7 @@ noinst_PROGRAMS = + TESTS = + BENCHMARKS = + +-BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) -I$(srcdir)/secp256k1/include -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) $(LEVELDB_CPPFLAGS) ++BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) $(libsecp256k1_CFLAGS) -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) + + LIBBITCOIN_NODE=libbitcoin_node.a + LIBBITCOIN_COMMON=libbitcoin_common.a +@@ -32,7 +32,11 @@ LIBBITCOIN_CLI=libbitcoin_cli.a + LIBBITCOIN_UTIL=libbitcoin_util.a + LIBBITCOIN_CRYPTO_BASE=crypto/libbitcoin_crypto_base.la + LIBBITCOINQT=qt/libbitcoinqt.a ++if EMBEDDED_LIBSECP256K1 + LIBSECP256K1=secp256k1/libsecp256k1.la ++else ++LIBSECP256K1=$(libsecp256k1_LIBS) ++endif + + if ENABLE_ZMQ + LIBBITCOIN_ZMQ=libbitcoin_zmq.a +@@ -67,8 +71,10 @@ LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_ARM_SHANI) + endif + noinst_LTLIBRARIES += $(LIBBITCOIN_CRYPTO) + ++if EMBEDDED_LIBSECP256K1 + $(LIBSECP256K1): $(wildcard secp256k1/src/*.h) $(wildcard secp256k1/src/*.c) $(wildcard secp256k1/include/*) + $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) ++endif + + # Make is not made aware of per-object dependencies to avoid limiting building parallelization + # But to build the less dependent modules first, we manually select their order here: +@@ -1080,7 +1086,9 @@ endif + include Makefile.minisketch.include + + include Makefile.crc32c.include ++if EMBEDDED_LEVELDB + include Makefile.leveldb.include ++endif + + include Makefile.test_util.include + include Makefile.test_fuzz.include +--- a/src/Makefile.test.include ++++ b/src/Makefile.test.include +@@ -377,8 +377,9 @@ if ENABLE_BENCH + $(BENCH_BINARY) --sanity-check > /dev/null + endif + endif ++if EMBEDDED_LIBSECP256K1 + $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check +- ++endif + if ENABLE_TESTS + UNIVALUE_TESTS = univalue/test/object univalue/test/unitester + noinst_PROGRAMS += $(UNIVALUE_TESTS) +--- a/src/dbwrapper.cpp ++++ b/src/dbwrapper.cpp +@@ -7,26 +7,45 @@ + #include <fs.h> + #include <logging.h> + #include <random.h> ++#include <node/interface_ui.h> + #include <tinyformat.h> + #include <util/strencodings.h> + #include <util/system.h> ++#include <util/translation.h> + + #include <algorithm> + #include <cassert> + #include <cstdarg> + #include <cstdint> + #include <cstdio> ++#include <leveldb/c.h> + #include <leveldb/cache.h> + #include <leveldb/db.h> + #include <leveldb/env.h> + #include <leveldb/filter_policy.h> +-#include <leveldb/helpers/memenv/memenv.h> ++#include <leveldb/helpers/memenv.h> + #include <leveldb/iterator.h> + #include <leveldb/options.h> + #include <leveldb/status.h> + #include <memory> + #include <optional> + ++bool dbwrapper_SanityCheck() ++{ ++ unsigned long header_version = (leveldb::kMajorVersion << 16) | leveldb::kMinorVersion; ++ unsigned long library_version = (leveldb_major_version() << 16) | leveldb_minor_version(); ++ ++ if (header_version != library_version) { ++ InitError(Untranslated(strprintf("Compiled with LevelDB %d.%d, but linked with LevelDB %d.%d (incompatible).", ++ leveldb::kMajorVersion, leveldb::kMinorVersion, ++ leveldb_major_version(), leveldb_minor_version() ++ ))); ++ return false; ++ } ++ ++ return true; ++} ++ + class CBitcoinLevelDBLogger : public leveldb::Logger { + public: + // This code is adapted from posix_logger.h, which is why it is using vsprintf. +--- a/src/dbwrapper.h ++++ b/src/dbwrapper.h +@@ -31,6 +31,8 @@ class Env; + static const size_t DBWRAPPER_PREALLOC_KEY_SIZE = 64; + static const size_t DBWRAPPER_PREALLOC_VALUE_SIZE = 1024; + ++bool dbwrapper_SanityCheck(); ++ + class dbwrapper_error : public std::runtime_error + { + public: +--- a/src/kernel/checks.cpp ++++ b/src/kernel/checks.cpp +@@ -3,9 +3,10 @@ + // file COPYING or http://www.opensource.org/licenses/mit-license.php. + + #include <kernel/checks.h> +- ++#include <dbwrapper.h> + #include <key.h> + #include <random.h> ++#include <node/interface_ui.h> + #include <util/time.h> + #include <util/translation.h> + +@@ -15,6 +16,10 @@ namespace kernel { + + std::optional<bilingual_str> SanityChecks(const Context&) + { ++ if (!dbwrapper_SanityCheck()) { ++ return Untranslated("Database sanity check failure. Aborting."); ++ } ++ + if (!ECC_InitSanityCheck()) { + return Untranslated("Elliptic curve cryptography sanity check failure. Aborting."); + } +--- a/src/qt/createwalletdialog.cpp ++++ b/src/qt/createwalletdialog.cpp +@@ -12,6 +12,7 @@ + + #include <qt/guiutil.h> + ++#include <QMessageBox> + #include <QPushButton> + + CreateWalletDialog::CreateWalletDialog(QWidget* parent) : +@@ -94,9 +95,16 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) : + ui->external_signer_checkbox->setChecked(false); + #endif + +-#ifndef USE_BDB +- ui->descriptor_checkbox->setEnabled(false); +- ui->descriptor_checkbox->setChecked(true); ++#ifdef USE_BDB ++ connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); ++#else ++ connect(ui->buttonBox, &QDialogButtonBox::accepted, [this]() { ++ if (!this->isDescriptorWalletChecked()) { ++ QMessageBox::critical(this, tr("Cannot create wallet"), tr("This build was compiled without BDB support, so only experimental descriptor wallets are supported.")); ++ return; ++ } ++ this->accept(); ++ }); + #endif + + #ifndef ENABLE_EXTERNAL_SIGNER |