Page MenuHomePhabricator

[backport#15450 4/5] Expose wallet creation to the GUI via WalletController
ClosedPublic

Authored by majcosta on Jul 31 2020, 13:09.

Details

Summary

Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>

https://github.com/bitcoin/bitcoin/pull/15450/commits/9b41cbb28f603f4f71f5854d6ae2527932bba3cb


Depends on D7104

Partial backport of Core PR15450

Test Plan
ninja check

Event Timeline

[Bot Message]
One or more PR numbers were detected in the summary.
Links to those PRs have been inserted into the summary for reference.

Snippet of first build failure:

[370/423] Generating forms/ui_overviewpage.h
[371/423] Generating forms/ui_receivecoinsdialog.h
[372/423] Generating forms/ui_receiverequestdialog.h
[373/423] Generating forms/ui_sendcoinsdialog.h
[374/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench_bitcoin.cpp.o
[375/423] Generating forms/ui_signverifymessagedialog.h
[376/423] Generating forms/ui_transactiondescdialog.h
[377/423] Generating forms/ui_sendcoinsentry.h
[378/423] Generating temp_bitcoin_locale.qrc
[379/423] Generating qrc_bitcoin.cpp
[380/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/prevector.cpp.o
[381/423] Generating qrc_bitcoin_locale.cpp
[382/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/ccoins_caching.cpp.o
[383/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/data.cpp.o
[384/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkqueue.cpp.o
[385/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_blockchain.cpp.o
[386/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/block_assemble.cpp.o
[387/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/duplicate_inputs.cpp.o
[388/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinunits.cpp.o
[389/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_eviction.cpp.o
[390/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_mempool.cpp.o
[391/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinaddressvalidator.cpp.o
[392/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/csvmodelwriter.cpp.o
[393/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinamountfield.cpp.o
[394/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bantablemodel.cpp.o
[395/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/__/test/util.cpp.o
[396/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/networkstyle.cpp.o
[397/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[398/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/modaloverlay.cpp.o
[399/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[400/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[401/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/notificator.cpp.o
[402/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[403/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[404/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[405/423] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench.cpp.o
[406/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[407/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[408/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/intro.cpp.o
[409/423] Linking CXX executable src/bench/bitcoin-bench
[410/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[411/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[412/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[413/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[414/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[415/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[416/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[417/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[418/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[419/423] Linking CXX static library src/qt/libbitcoin-qt-base.a
[420/423] Automatic MOC for target bitcoin-qt
[421/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[422/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[423/423] Linking CXX executable src/qt/bitcoin-qt
FAILED: src/qt/bitcoin-qt 
: && /usr/bin/c++  -Werror -g -O2  -fuse-ld=gold -Wl,-z,relro -Wl,-z,now -fPIE -pie src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o  -o src/qt/bitcoin-qt  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  src/qt/libbitcoin-qt-base.a  src/libserver.a  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/libscript.a  src/libcommon.a  src/secp256k1/libsecp256k1.a  src/leveldb/libleveldb.a  src/leveldb/libleveldb-sse4.2.a  src/leveldb/libmemenv.a  /usr/lib/x86_64-linux-gnu/libevent_pthreads.so  /usr/lib/x86_64-linux-gnu/libminiupnpc.so  src/zmq/libzmq.a  /usr/lib/x86_64-linux-gnu/libzmq.so  src/librpcclient.a  src/libutil.a  /usr/lib/x86_64-linux-gnu/libevent.so  src/univalue/libunivalue.a  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  /usr/lib/x86_64-linux-gnu/libboost_filesystem.so  /usr/lib/x86_64-linux-gnu/libboost_thread.so  /usr/lib/x86_64-linux-gnu/libboost_chrono.so  /usr/lib/x86_64-linux-gnu/libboost_system.so  /usr/lib/x86_64-linux-gnu/libboost_date_time.so  /usr/lib/x86_64-linux-gnu/libboost_atomic.so  /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3  /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -ldl  -pthread  /usr/lib/x86_64-linux-gnu/libprotobuf.so && :
../../src/interfaces/node.cpp:293: error: undefined reference to 'CreateWallet(CChainParams const&, interfaces::Chain&, std::__cxx11::basic_string<char, std::char_traits<char>, secure_allocator<char> > const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::shared_ptr<CWallet>&)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Build build-without-wallet failed with exit code 1

Snippet of first build failure:

[370/423] Automatic MOC for target bitcoin-qt-base
[371/423] Generating forms/ui_openuridialog.h
[372/423] Generating forms/ui_addressbookpage.h
[373/423] Generating forms/ui_askpassphrasedialog.h
[374/423] Generating forms/ui_createwalletdialog.h
[375/423] Generating forms/ui_editaddressdialog.h
[376/423] Generating forms/ui_coincontroldialog.h
[377/423] Generating forms/ui_helpmessagedialog.h
[378/423] Generating forms/ui_optionsdialog.h
[379/423] Generating forms/ui_intro.h
[380/423] Generating forms/ui_debugwindow.h
[381/423] Generating forms/ui_modaloverlay.h
[382/423] Generating forms/ui_overviewpage.h
[383/423] Generating forms/ui_receivecoinsdialog.h
[384/423] Generating forms/ui_receiverequestdialog.h
[385/423] Generating forms/ui_signverifymessagedialog.h
[386/423] Generating forms/ui_transactiondescdialog.h
[387/423] Generating forms/ui_sendcoinsentry.h
[388/423] Generating forms/ui_sendcoinsdialog.h
[389/423] Generating temp_bitcoin_locale.qrc
[390/423] Generating qrc_bitcoin.cpp
[391/423] Linking CXX executable src/bench/bitcoin-bench
[392/423] Generating qrc_bitcoin_locale.cpp
[393/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/csvmodelwriter.cpp.o
[394/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/notificator.cpp.o
[395/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[396/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinaddressvalidator.cpp.o
[397/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinunits.cpp.o
[398/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/modaloverlay.cpp.o
[399/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[400/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[401/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[402/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/networkstyle.cpp.o
[403/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinamountfield.cpp.o
[404/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[405/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[406/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bantablemodel.cpp.o
[407/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[408/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/intro.cpp.o
[409/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[410/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[411/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[412/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[413/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[414/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[415/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[416/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[417/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[418/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[419/423] Linking CXX static library src/qt/libbitcoin-qt-base.a
[420/423] Automatic MOC for target bitcoin-qt
[421/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[422/423] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[423/423] Linking CXX executable src/qt/bitcoin-qt
FAILED: src/qt/bitcoin-qt 
: && /usr/bin/c++  -Werror -g -O2  -fuse-ld=gold -Wl,-z,relro -Wl,-z,now -fPIE -pie src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o  -o src/qt/bitcoin-qt  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  src/qt/libbitcoin-qt-base.a  src/libserver.a  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/libscript.a  src/libcommon.a  src/secp256k1/libsecp256k1.a  src/leveldb/libleveldb.a  src/leveldb/libleveldb-sse4.2.a  src/leveldb/libmemenv.a  /usr/lib/x86_64-linux-gnu/libevent_pthreads.so  /usr/lib/x86_64-linux-gnu/libminiupnpc.so  src/zmq/libzmq.a  /usr/lib/x86_64-linux-gnu/libzmq.so  src/librpcclient.a  src/libutil.a  /usr/lib/x86_64-linux-gnu/libevent.so  src/univalue/libunivalue.a  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  /usr/lib/x86_64-linux-gnu/libboost_filesystem.so  /usr/lib/x86_64-linux-gnu/libboost_thread.so  /usr/lib/x86_64-linux-gnu/libboost_chrono.so  /usr/lib/x86_64-linux-gnu/libboost_system.so  /usr/lib/x86_64-linux-gnu/libboost_date_time.so  /usr/lib/x86_64-linux-gnu/libboost_atomic.so  /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.11.3  /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.11.3  /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -ldl  -pthread  /usr/lib/x86_64-linux-gnu/libprotobuf.so && :
../../src/interfaces/node.cpp:293: error: undefined reference to 'CreateWallet(CChainParams const&, interfaces::Chain&, std::__cxx11::basic_string<char, std::char_traits<char>, secure_allocator<char> > const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::shared_ptr<CWallet>&)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Build build-without-wallet failed with exit code 1

fixed DummyWallet for the nowallet build

Fabien requested changes to this revision.Aug 3 2020, 08:54
Fabien added a subscriber: Fabien.

See D7104, the backport seems OK but there is no evidence this has been tested

This revision now requires changes to proceed.Aug 3 2020, 08:54

Just seen the test plan from D7106

This revision is now accepted and ready to land.Aug 3 2020, 08:56