From 4bbd20258c44c145ccc0fbf092150780d0790c8e Mon Sep 17 00:00:00 2001 From: Justin Wind Date: Tue, 23 Feb 2021 18:47:21 -0800 Subject: [PATCH] dogecoind-1.14.2-r2.ebuild for boost >= 1.74 --- net-p2p/dogecoind/Manifest | 3 + net-p2p/dogecoind/dogecoind-1.14.2-r2.ebuild | 108 +++ .../files/0001-Fix-for-Boost-1.74.patch | 614 ++++++++++++++++++ .../files/0002-httpserver-include-deque.patch | 60 ++ 4 files changed, 785 insertions(+) create mode 100644 net-p2p/dogecoind/dogecoind-1.14.2-r2.ebuild create mode 100644 net-p2p/dogecoind/files/0001-Fix-for-Boost-1.74.patch create mode 100644 net-p2p/dogecoind/files/0002-httpserver-include-deque.patch diff --git a/net-p2p/dogecoind/Manifest b/net-p2p/dogecoind/Manifest index 02f19fe..c69880a 100644 --- a/net-p2p/dogecoind/Manifest +++ b/net-p2p/dogecoind/Manifest @@ -1,3 +1,5 @@ +AUX 0001-Fix-for-Boost-1.74.patch 35988 BLAKE2B 89dbd3111c915057f6b1d1828eacb8c16c7f1e9d244d21251baa3a20d6cb5b1b3f1d13c2df80bde6dc082a71f72d1ccde84f87439ce15c2e0aafd518627c128a SHA512 7206804cc04d2db38209d8dbe88dc512aecb73546a3c5b57cb8b71520d3db50f83f777315f714b6ac4e6b219de4fa10ba8574b4c113070f971617e1cad2c7cea +AUX 0002-httpserver-include-deque.patch 2921 BLAKE2B ca0df5913ff1b4f9b5000a2f0107626ed53eb2e68035050edb91a1d3a75499b7be0f966c01905ca1ee33dbcdb19a0d9d1f2fed8334619e57cd3ad5f6a08802f1 SHA512 a89f03d2df936d08ae5bb7e218e18e087f471d034eb04581ac86ea065f7978d9b6c2c2258d58a788d992aac8e4e2e4e2cfbcddca68cdc53bbc7521491355b8b8 AUX dogecoin.conf 80 BLAKE2B be9f776453fce1081dfa95fd844089d51e8212731d7bb460256a3b258b5369fe14b0bd19af15d9c360fbc07232e8718056acd829e03138a326faba32ac42e4da SHA512 43bef890505a1fac88887bb39e9fdd4ec673ae8838a40279b33711e970551f5a75ac25171c41f8c83de2c953b157f7a3f57171e868fd9f626007d9909331a19f AUX dogecoin.confd 415 BLAKE2B e799f10642a3df2b97ebecd7d527dea813736c1688bf01adfb59a838df0c1abdc9de679929385066143971965fe88710abadfda086da97220267c962a43dc6dd SHA512 7bc8c86f6bdf8687ca7b4d292865c75575e2dca2fe98ff4f002e690ef7552c32be949d85d69797c99282f68357601bd3d8f84d8d8f27158865ee0bb52b1e6124 AUX dogecoin.initd 2980 BLAKE2B b3d3b304ee1b3da41f000cd6f1fad5c24a6cc1a8e3de5b40da5ca927c7b14924d737fbca70b4a791dbcb5463283b0b9741af775372b63d8a0e30929cb3f0530f SHA512 d92d2b5f492f7b5fdea31d36f12a26ce1acbce94793d9f11f6613ad872ecc1b74a64463ac881a717ad7a092e4e296bc6022318c844201788bc90b7d5e6d52c22 @@ -8,6 +10,7 @@ DIST dogecoin-v1.14.0.tgz 7208252 BLAKE2B 0060dcffaf0c81e7931a49ee85146d37e8c663 DIST dogecoin-v1.14.2.tgz 7207891 BLAKE2B 00de81aba4daec91ff55d0c8642fc6e633b2601f37659605621685c3f3a8fcf8df1a7947b2d3218dd0eea240a6d9b8816e3be5a1b8895aa6ad3a85713ab49290 SHA512 8d931269302675b4df8f2bcab31622897c14514ca5c70c65a410fc39af5bcdb992aaa9ee91b158b70fa0ca0853b14746b94c677d12390c5787f55291a6d0ce5c EBUILD dogecoind-1.10.0.ebuild 2313 BLAKE2B 9a6cebe7d69982958f7cd92fa9619410f71ae2c632b9c2bc2db58d07f9609c029ba4b923faae70c254464135de6519b0b28459651f6f730891e5367533a4e320 SHA512 163ed0def9d53d8dc5c542ce90d0cdf34b856b6af5f424962b1f21a61668a4639135fe91849b5654deb452af1986c5e3ffe78dc59beba27804cfd78abecc1e28 EBUILD dogecoind-1.14.0.ebuild 2313 BLAKE2B 9a6cebe7d69982958f7cd92fa9619410f71ae2c632b9c2bc2db58d07f9609c029ba4b923faae70c254464135de6519b0b28459651f6f730891e5367533a4e320 SHA512 163ed0def9d53d8dc5c542ce90d0cdf34b856b6af5f424962b1f21a61668a4639135fe91849b5654deb452af1986c5e3ffe78dc59beba27804cfd78abecc1e28 +EBUILD dogecoind-1.14.2-r2.ebuild 2436 BLAKE2B af5a1db1e6b8d35229e7e8c1c4ba26abbab14345fa5d06458742e6faec3f6439b46765f0bd62725cf3ec488a3df33558687e4aed767cb8e80945a94950271e59 SHA512 c97e59b1fbf7fa494df8189bb255ffd05102db2447350b0f34a3745281393cbec33a025ced82e956dde539ac90230df5a305fee7b8b9b2872caab5e195558179 EBUILD dogecoind-1.14.2.ebuild 2313 BLAKE2B 9a6cebe7d69982958f7cd92fa9619410f71ae2c632b9c2bc2db58d07f9609c029ba4b923faae70c254464135de6519b0b28459651f6f730891e5367533a4e320 SHA512 163ed0def9d53d8dc5c542ce90d0cdf34b856b6af5f424962b1f21a61668a4639135fe91849b5654deb452af1986c5e3ffe78dc59beba27804cfd78abecc1e28 MISC ChangeLog 35 BLAKE2B c179e242ef417bc09182174c7b53268bac6bb2f34854ea57d98a6dccd65bf5837f39bf932a1014663d5a5a57ab1ae00cab2b95d08fcf359bf34c5b6c253bfb3b SHA512 6849adb7ba7996356171b259f1e7d428a27e5168c035787a86a2dc8e37c595bcd4a9887f5cadebeee4aefdce61e1dd6ffc8f924ff1fdda7729b75dcd2a404f43 MISC Manifest.old 6402 BLAKE2B 5f6804d1c0068db8f9d0b9485a6e744f25ef05a49d2e895635f2b55cf1271786be72da7ff288352361a43d37bd1cd705dc8e980ce100427337411a2e5b6e84c5 SHA512 9b26de814ce6f6bf9c430c44b31551a6ca5ce82311a254eff8444209c762f3f1850d3ea10ac2a3682948a35569c0db08ffc41e5c82acca2b2771298aed6a5dde diff --git a/net-p2p/dogecoind/dogecoind-1.14.2-r2.ebuild b/net-p2p/dogecoind/dogecoind-1.14.2-r2.ebuild new file mode 100644 index 0000000..8bb8352 --- /dev/null +++ b/net-p2p/dogecoind/dogecoind-1.14.2-r2.ebuild @@ -0,0 +1,108 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +DB_VER="5.1" + +inherit autotools db-use eutils flag-o-matic versionator systemd user + +MyPV="${PV/_/}" +MyPN="dogecoin" +MyP="${MyPN}-${MyPV}" + +DESCRIPTION="P2P Internet currency based on Bitcoin but wow such doge" +HOMEPAGE="https://dogecoin.com/" +SRC_URI="https://github.com/${MyPN}/${MyPN}/archive/v${MyPV}.tar.gz -> ${MyPN}-v${PV}.tgz" + +LICENSE="MIT ISC GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="debug examples logrotate upnp +wallet test" + +RDEPEND=" + >=dev-libs/boost-1.48.0[threads(+)] + dev-libs/openssl:0[-bindist] + logrotate? ( + app-admin/logrotate + ) + upnp? ( + net-libs/miniupnpc + ) + wallet? ( + sys-libs/db:$(db_ver_to_slot "${DB_VER}")[cxx] + ) +" +DEPEND="${RDEPEND} + >=app-shells/bash-4.1 + sys-apps/sed +" + +S="${WORKDIR}/${MyP}" + +pkg_setup() { + local UG='dogecoin' + enewgroup "${UG}" + enewuser "${UG}" -1 -1 /var/lib/dogecoin "${UG}" +} + +src_prepare() { + epatch "${FILESDIR}/0001-Fix-for-Boost-1.74.patch" + epatch "${FILESDIR}/0002-httpserver-include-deque.patch" + epatch_user + eautoreconf +} + +src_configure() { + append-cppflags "-I/usr/include/db${DB_VER}" + econf \ + $(use_enable wallet) \ + $(use_enable test tests) \ + --disable-hardening \ + $(use_enable debug) \ + $(use_with upnp miniupnpc) \ + --with-gui=no +} + +src_test() { + emake check +} + +src_install() { + dobin "src/${PN}" + dobin "src/dogecoin-cli" + + insinto /etc/dogecoin + newins "${FILESDIR}/dogecoin.conf" dogecoin.conf + fowners dogecoin:dogecoin /etc/dogecoin/dogecoin.conf + fperms 600 /etc/dogecoin/dogecoin.conf + + newconfd "${FILESDIR}/dogecoin.confd" "${PN}" + newinitd "${FILESDIR}/dogecoin.initd" "${PN}" +# systemd_dounit "${FILESDIR}/dogecoind.service" + + keepdir /var/lib/dogecoin/.dogecoin + fperms 700 /var/lib/dogecoin + fowners dogecoin:dogecoin /var/lib/dogecoin/ + fowners dogecoin:dogecoin /var/lib/dogecoin/.dogecoin + dosym /etc/dogecoin/dogecoin.conf /var/lib/dogecoin/.dogecoin/dogecoin.conf + + dodoc doc/README.md + # dodoc RELEASE_NOTES_1_8.2.md +# doman contrib/debian/manpages/{dogecoind.1,dogecoin.conf.5} + +# if use bash-completion; then +# newbashcomp "contrib/${PN}.bash-completion" "${PN}" +# fi + + if use examples; then + docinto examples + dodoc -r contrib/{README.md,bitrpc,pyminer,spendfrom,linearize,qos} + fi + + if use logrotate; then + insinto /etc/logrotate.d + newins "${FILESDIR}/dogecoind.logrotate" dogecoind + fi +} diff --git a/net-p2p/dogecoind/files/0001-Fix-for-Boost-1.74.patch b/net-p2p/dogecoind/files/0001-Fix-for-Boost-1.74.patch new file mode 100644 index 0000000..1244011 --- /dev/null +++ b/net-p2p/dogecoind/files/0001-Fix-for-Boost-1.74.patch @@ -0,0 +1,614 @@ +From 283bc86d0ef816a018a77396baacdc89152be5ae Mon Sep 17 00:00:00 2001 +From: John-Gee +Date: Tue, 22 Dec 2020 06:25:23 -0800 +Subject: [PATCH 1/2] Fix for Boost 1.74 + +--- + src/init.cpp | 2 +- + src/qt/bitcoingui.cpp | 22 ++++++++-- + src/qt/clientmodel.cpp | 46 +++++++++++++++----- + src/qt/splashscreen.cpp | 26 ++++++++--- + src/qt/transactiontablemodel.cpp | 19 ++++++-- + src/qt/walletmodel.cpp | 46 +++++++++++++++----- + src/rpc/server.cpp | 9 ++-- + src/scheduler.cpp | 2 +- + src/test/scheduler_tests.cpp | 2 +- + src/torcontrol.cpp | 36 ++++++++++----- + src/validation.cpp | 9 +++- + src/validationinterface.cpp | 75 +++++++++++++++++++++++--------- + 12 files changed, 217 insertions(+), 77 deletions(-) + +diff --git a/src/init.cpp b/src/init.cpp +index 0b7777fa0..f06c1811f 100644 +--- a/src/init.cpp ++++ b/src/init.cpp +@@ -54,7 +54,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp +index 670e4f2c6..80b18059b 100644 +--- a/src/qt/bitcoingui.cpp ++++ b/src/qt/bitcoingui.cpp +@@ -75,6 +75,8 @@ const std::string BitcoinGUI::DEFAULT_UIPLATFORM = + #endif + ; + ++#include ++ + /** Display name for default wallet name. Uses tilde to avoid name + * collisions in the future with additional wallets */ + const QString BitcoinGUI::DEFAULT_WALLET = "~Default"; +@@ -1196,15 +1198,27 @@ static bool ThreadSafeMessageBox(BitcoinGUI *gui, const std::string& message, co + void BitcoinGUI::subscribeToCoreSignals() + { + // Connect signals to client +- uiInterface.ThreadSafeMessageBox.connect(boost::bind(ThreadSafeMessageBox, this, _1, _2, _3)); +- uiInterface.ThreadSafeQuestion.connect(boost::bind(ThreadSafeMessageBox, this, _1, _3, _4)); ++ uiInterface.ThreadSafeMessageBox.connect(boost::bind(ThreadSafeMessageBox, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ uiInterface.ThreadSafeQuestion.connect(boost::bind(ThreadSafeMessageBox, this, ++ boost::placeholders::_1, ++ boost::placeholders::_3, ++ boost::placeholders::_4)); + } + + void BitcoinGUI::unsubscribeFromCoreSignals() + { + // Disconnect signals from client +- uiInterface.ThreadSafeMessageBox.disconnect(boost::bind(ThreadSafeMessageBox, this, _1, _2, _3)); +- uiInterface.ThreadSafeQuestion.disconnect(boost::bind(ThreadSafeMessageBox, this, _1, _3, _4)); ++ uiInterface.ThreadSafeMessageBox.disconnect(boost::bind(ThreadSafeMessageBox, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ uiInterface.ThreadSafeQuestion.disconnect(boost::bind(ThreadSafeMessageBox, this, ++ boost::placeholders::_1, ++ boost::placeholders::_3, ++ boost::placeholders::_4)); + } + + void BitcoinGUI::toggleNetworkActive() +diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp +index 538bd9518..f134b04bb 100644 +--- a/src/qt/clientmodel.cpp ++++ b/src/qt/clientmodel.cpp +@@ -24,6 +24,8 @@ + #include + #include + ++#include ++ + class CBlockIndex; + + static const int64_t nClientStartupTime = GetTime(); +@@ -330,23 +332,43 @@ static void BlockTipChanged(ClientModel *clientmodel, bool initialSync, const CB + void ClientModel::subscribeToCoreSignals() + { + // Connect signals to client +- uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); +- uiInterface.NotifyNumConnectionsChanged.connect(boost::bind(NotifyNumConnectionsChanged, this, _1)); +- uiInterface.NotifyNetworkActiveChanged.connect(boost::bind(NotifyNetworkActiveChanged, this, _1)); +- uiInterface.NotifyAlertChanged.connect(boost::bind(NotifyAlertChanged, this, _1, _2)); ++ uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); ++ uiInterface.NotifyNumConnectionsChanged.connect(boost::bind(NotifyNumConnectionsChanged, this, ++ boost::placeholders::_1)); ++ uiInterface.NotifyNetworkActiveChanged.connect(boost::bind(NotifyNetworkActiveChanged, this, ++ boost::placeholders::_1)); ++ uiInterface.NotifyAlertChanged.connect(boost::bind(NotifyAlertChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + uiInterface.BannedListChanged.connect(boost::bind(BannedListChanged, this)); +- uiInterface.NotifyBlockTip.connect(boost::bind(BlockTipChanged, this, _1, _2, false)); +- uiInterface.NotifyHeaderTip.connect(boost::bind(BlockTipChanged, this, _1, _2, true)); ++ uiInterface.NotifyBlockTip.connect(boost::bind(BlockTipChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, false)); ++ uiInterface.NotifyHeaderTip.connect(boost::bind(BlockTipChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, true)); + } + + void ClientModel::unsubscribeFromCoreSignals() + { + // Disconnect signals from client +- uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); +- uiInterface.NotifyNumConnectionsChanged.disconnect(boost::bind(NotifyNumConnectionsChanged, this, _1)); +- uiInterface.NotifyNetworkActiveChanged.disconnect(boost::bind(NotifyNetworkActiveChanged, this, _1)); +- uiInterface.NotifyAlertChanged.disconnect(boost::bind(NotifyAlertChanged, this, _1, _2)); ++ uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); ++ uiInterface.NotifyNumConnectionsChanged.disconnect(boost::bind(NotifyNumConnectionsChanged, this, ++ boost::placeholders::_1)); ++ uiInterface.NotifyNetworkActiveChanged.disconnect(boost::bind(NotifyNetworkActiveChanged, this, ++ boost::placeholders::_1)); ++ uiInterface.NotifyAlertChanged.disconnect(boost::bind(NotifyAlertChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + uiInterface.BannedListChanged.disconnect(boost::bind(BannedListChanged, this)); +- uiInterface.NotifyBlockTip.disconnect(boost::bind(BlockTipChanged, this, _1, _2, false)); +- uiInterface.NotifyHeaderTip.disconnect(boost::bind(BlockTipChanged, this, _1, _2, true)); ++ uiInterface.NotifyBlockTip.disconnect(boost::bind(BlockTipChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, false)); ++ uiInterface.NotifyHeaderTip.disconnect(boost::bind(BlockTipChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, true)); + } +diff --git a/src/qt/splashscreen.cpp b/src/qt/splashscreen.cpp +index 656a2875c..c271c7fb9 100644 +--- a/src/qt/splashscreen.cpp ++++ b/src/qt/splashscreen.cpp +@@ -26,6 +26,8 @@ + #include + #include + ++#include ++ + SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) : + QWidget(0, f), curAlignment(0) + { +@@ -167,7 +169,9 @@ static void ShowProgress(SplashScreen *splash, const std::string &title, int nPr + #ifdef ENABLE_WALLET + void SplashScreen::ConnectWallet(CWallet* wallet) + { +- wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); ++ wallet->ShowProgress.connect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + connectedWallets.push_back(wallet); + } + #endif +@@ -175,21 +179,29 @@ void SplashScreen::ConnectWallet(CWallet* wallet) + void SplashScreen::subscribeToCoreSignals() + { + // Connect signals to client +- uiInterface.InitMessage.connect(boost::bind(InitMessage, this, _1)); +- uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); ++ uiInterface.InitMessage.connect(boost::bind(InitMessage, this, ++ boost::placeholders::_1)); ++ uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1,boost::placeholders::_2)); + #ifdef ENABLE_WALLET +- uiInterface.LoadWallet.connect(boost::bind(&SplashScreen::ConnectWallet, this, _1)); ++ uiInterface.LoadWallet.connect(boost::bind(&SplashScreen::ConnectWallet, this, ++ boost::placeholders::_1)); + #endif + } + + void SplashScreen::unsubscribeFromCoreSignals() + { + // Disconnect signals from client +- uiInterface.InitMessage.disconnect(boost::bind(InitMessage, this, _1)); +- uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); ++ uiInterface.InitMessage.disconnect(boost::bind(InitMessage, this, ++ boost::placeholders::_1)); ++ uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + #ifdef ENABLE_WALLET + Q_FOREACH(CWallet* const & pwallet, connectedWallets) { +- pwallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); ++ pwallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } + #endif + } +diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp +index 61466c8ed..57d6787c2 100644 +--- a/src/qt/transactiontablemodel.cpp ++++ b/src/qt/transactiontablemodel.cpp +@@ -26,6 +26,7 @@ + #include + #include + ++#include + #include + + // Amount column is right-aligned it contains numbers +@@ -777,13 +778,23 @@ static void ShowProgress(TransactionTableModel *ttm, const std::string &title, i + void TransactionTableModel::subscribeToCoreSignals() + { + // Connect signals to wallet +- wallet->NotifyTransactionChanged.connect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); +- wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); ++ wallet->NotifyTransactionChanged.connect(boost::bind(NotifyTransactionChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ wallet->ShowProgress.connect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } + + void TransactionTableModel::unsubscribeFromCoreSignals() + { + // Disconnect signals from wallet +- wallet->NotifyTransactionChanged.disconnect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); +- wallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); ++ wallet->NotifyTransactionChanged.disconnect(boost::bind(NotifyTransactionChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ wallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } +diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp +index 0a5a7c3e9..fb893ae25 100644 +--- a/src/qt/walletmodel.cpp ++++ b/src/qt/walletmodel.cpp +@@ -28,6 +28,7 @@ + #include + #include + ++#include + #include + + WalletModel::WalletModel(const PlatformStyle *platformStyle, CWallet *_wallet, OptionsModel *_optionsModel, QObject *parent) : +@@ -502,21 +503,46 @@ static void NotifyWatchonlyChanged(WalletModel *walletmodel, bool fHaveWatchonly + void WalletModel::subscribeToCoreSignals() + { + // Connect signals to wallet +- wallet->NotifyStatusChanged.connect(boost::bind(&NotifyKeyStoreStatusChanged, this, _1)); +- wallet->NotifyAddressBookChanged.connect(boost::bind(NotifyAddressBookChanged, this, _1, _2, _3, _4, _5, _6)); +- wallet->NotifyTransactionChanged.connect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); +- wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); +- wallet->NotifyWatchonlyChanged.connect(boost::bind(NotifyWatchonlyChanged, this, _1)); ++ wallet->NotifyStatusChanged.connect(boost::bind(&NotifyKeyStoreStatusChanged, this, ++ boost::placeholders::_1)); ++ wallet->NotifyAddressBookChanged.connect(boost::bind(NotifyAddressBookChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3, ++ boost::placeholders::_4, ++ boost::placeholders::_5, ++ boost::placeholders::_6)); ++ wallet->NotifyTransactionChanged.connect(boost::bind(NotifyTransactionChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ wallet->ShowProgress.connect(boost::bind(ShowProgress, this, boost::placeholders::_1, ++ boost::placeholders::_2)); ++ wallet->NotifyWatchonlyChanged.connect(boost::bind(NotifyWatchonlyChanged, this, ++ boost::placeholders::_1)); + } + + void WalletModel::unsubscribeFromCoreSignals() + { + // Disconnect signals from wallet +- wallet->NotifyStatusChanged.disconnect(boost::bind(&NotifyKeyStoreStatusChanged, this, _1)); +- wallet->NotifyAddressBookChanged.disconnect(boost::bind(NotifyAddressBookChanged, this, _1, _2, _3, _4, _5, _6)); +- wallet->NotifyTransactionChanged.disconnect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); +- wallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); +- wallet->NotifyWatchonlyChanged.disconnect(boost::bind(NotifyWatchonlyChanged, this, _1)); ++ wallet->NotifyStatusChanged.disconnect(boost::bind(&NotifyKeyStoreStatusChanged, this, ++ boost::placeholders::_1)); ++ wallet->NotifyAddressBookChanged.disconnect(boost::bind(NotifyAddressBookChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3, ++ boost::placeholders::_4, ++ boost::placeholders::_5, ++ boost::placeholders::_6)); ++ wallet->NotifyTransactionChanged.disconnect(boost::bind(NotifyTransactionChanged, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ wallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); ++ wallet->NotifyWatchonlyChanged.disconnect(boost::bind(NotifyWatchonlyChanged, this, ++ boost::placeholders::_1)); + } + + // WalletModel::UnlockContext implementation +diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp +index 6ab5f834f..303806b99 100644 +--- a/src/rpc/server.cpp ++++ b/src/rpc/server.cpp +@@ -15,7 +15,7 @@ + + #include + +-#include ++#include + #include + #include + #include +@@ -58,12 +58,12 @@ void RPCServer::OnStopped(boost::function slot) + + void RPCServer::OnPreCommand(boost::function slot) + { +- g_rpcSignals.PreCommand.connect(boost::bind(slot, _1)); ++ g_rpcSignals.PreCommand.connect(boost::bind(slot, boost::placeholders::_1)); + } + + void RPCServer::OnPostCommand(boost::function slot) + { +- g_rpcSignals.PostCommand.connect(boost::bind(slot, _1)); ++ g_rpcSignals.PostCommand.connect(boost::bind(slot, boost::placeholders::_1)); + } + + void RPCTypeCheck(const UniValue& params, +@@ -516,7 +516,8 @@ std::vector CRPCTable::listCommands() const + + std::transform( mapCommands.begin(), mapCommands.end(), + std::back_inserter(commandList), +- boost::bind(&commandMap::value_type::first,_1) ); ++ boost::bind(&commandMap::value_type::first, ++ boost::placeholders::_1) ); + return commandList; + } + +diff --git a/src/scheduler.cpp b/src/scheduler.cpp +index b01170074..f2b41024f 100644 +--- a/src/scheduler.cpp ++++ b/src/scheduler.cpp +@@ -7,7 +7,7 @@ + #include "reverselock.h" + + #include +-#include ++#include + #include + + CScheduler::CScheduler() : nThreadsServicingQueue(0), stopRequested(false), stopWhenEmpty(false) +diff --git a/src/test/scheduler_tests.cpp b/src/test/scheduler_tests.cpp +index e4ddf9d61..c76adfe8a 100644 +--- a/src/test/scheduler_tests.cpp ++++ b/src/test/scheduler_tests.cpp +@@ -7,7 +7,7 @@ + + #include "test/test_bitcoin.h" + +-#include ++#include + #include + #include + #include +diff --git a/src/torcontrol.cpp b/src/torcontrol.cpp +index c49c5d9eb..d1299edf3 100644 +--- a/src/torcontrol.cpp ++++ b/src/torcontrol.cpp +@@ -15,7 +15,7 @@ + #include + + #include +-#include ++#include + #include + #include + #include +@@ -403,8 +403,9 @@ TorController::TorController(struct event_base* _base, const std::string& _targe + if (!reconnect_ev) + LogPrintf("tor: Failed to create event for reconnection: out of memory?\n"); + // Start connection attempts immediately +- if (!conn.Connect(_target, boost::bind(&TorController::connected_cb, this, _1), +- boost::bind(&TorController::disconnected_cb, this, _1) )) { ++ if (!conn.Connect(_target, boost::bind(&TorController::connected_cb, this, ++ boost::placeholders::_1), ++ boost::bind(&TorController::disconnected_cb, this,boost::placeholders::_1) )) { + LogPrintf("tor: Initiating connection to Tor control port %s failed\n", _target); + } + // Read service private key if cached +@@ -475,7 +476,9 @@ void TorController::auth_cb(TorControlConnection& _conn, const TorControlReply& + // Note that the 'virtual' port doesn't have to be the same as our internal port, but this is just a convenient + // choice. TODO; refactor the shutdown sequence some day. + _conn.Command(strprintf("ADD_ONION %s Port=%i,127.0.0.1:%i", private_key, GetListenPort(), GetListenPort()), +- boost::bind(&TorController::add_onion_cb, this, _1, _2)); ++ boost::bind(&TorController::add_onion_cb, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } else { + LogPrintf("tor: Authentication failed\n"); + } +@@ -530,7 +533,9 @@ void TorController::authchallenge_cb(TorControlConnection& _conn, const TorContr + } + + std::vector computedClientHash = ComputeResponse(TOR_SAFE_CLIENTKEY, cookie, clientNonce, serverNonce); +- _conn.Command("AUTHENTICATE " + HexStr(computedClientHash), boost::bind(&TorController::auth_cb, this, _1, _2)); ++ _conn.Command("AUTHENTICATE " + HexStr(computedClientHash), boost::bind(&TorController::auth_cb, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } else { + LogPrintf("tor: Invalid reply to AUTHCHALLENGE\n"); + } +@@ -579,13 +584,17 @@ void TorController::protocolinfo_cb(TorControlConnection& _conn, const TorContro + if (methods.count("HASHEDPASSWORD")) { + LogPrint("tor", "tor: Using HASHEDPASSWORD authentication\n"); + boost::replace_all(torpassword, "\"", "\\\""); +- _conn.Command("AUTHENTICATE \"" + torpassword + "\"", boost::bind(&TorController::auth_cb, this, _1, _2)); ++ _conn.Command("AUTHENTICATE \"" + torpassword + "\"", boost::bind(&TorController::auth_cb, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } else { + LogPrintf("tor: Password provided with -torpassword, but HASHEDPASSWORD authentication is not available\n"); + } + } else if (methods.count("NULL")) { + LogPrint("tor", "tor: Using NULL authentication\n"); +- _conn.Command("AUTHENTICATE", boost::bind(&TorController::auth_cb, this, _1, _2)); ++ _conn.Command("AUTHENTICATE", boost::bind(&TorController::auth_cb, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } else if (methods.count("SAFECOOKIE")) { + // Cookie: hexdump -e '32/1 "%02x""\n"' ~/.tor/control_auth_cookie + LogPrint("tor", "tor: Using SAFECOOKIE authentication, reading cookie authentication from %s\n", cookiefile); +@@ -595,7 +604,9 @@ void TorController::protocolinfo_cb(TorControlConnection& _conn, const TorContro + cookie = std::vector(status_cookie.second.begin(), status_cookie.second.end()); + clientNonce = std::vector(TOR_NONCE_SIZE, 0); + GetRandBytes(&clientNonce[0], TOR_NONCE_SIZE); +- _conn.Command("AUTHCHALLENGE SAFECOOKIE " + HexStr(clientNonce), boost::bind(&TorController::authchallenge_cb, this, _1, _2)); ++ _conn.Command("AUTHCHALLENGE SAFECOOKIE " + HexStr(clientNonce), boost::bind(&TorController::authchallenge_cb, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2)); + } else { + if (status_cookie.first) { + LogPrintf("tor: Authentication cookie %s is not exactly %i bytes, as is required by the spec\n", cookiefile, TOR_COOKIE_SIZE); +@@ -617,7 +628,9 @@ void TorController::connected_cb(TorControlConnection& _conn) + { + reconnect_timeout = RECONNECT_TIMEOUT_START; + // First send a PROTOCOLINFO command to figure out what authentication is expected +- if (!_conn.Command("PROTOCOLINFO 1", boost::bind(&TorController::protocolinfo_cb, this, _1, _2))) ++ if (!_conn.Command("PROTOCOLINFO 1", boost::bind(&TorController::protocolinfo_cb, this, ++ boost::placeholders::_1, ++ boost::placeholders::_2))) + LogPrintf("tor: Error sending initial protocolinfo command\n"); + } + +@@ -644,8 +657,9 @@ void TorController::Reconnect() + /* Try to reconnect and reestablish if we get booted - for example, Tor + * may be restarting. + */ +- if (!conn.Connect(target, boost::bind(&TorController::connected_cb, this, _1), +- boost::bind(&TorController::disconnected_cb, this, _1) )) { ++ if (!conn.Connect(target, boost::bind(&TorController::connected_cb, this, ++ boost::placeholders::_1), ++ boost::bind(&TorController::disconnected_cb, this, boost::placeholders::_1) )) { + LogPrintf("tor: Re-initiating connection to Tor control port %s failed\n", target); + } + } +diff --git a/src/validation.cpp b/src/validation.cpp +index 5b27b9ec5..2202d732d 100644 +--- a/src/validation.cpp ++++ b/src/validation.cpp +@@ -44,6 +44,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -179,7 +180,9 @@ private: + + public: + MemPoolConflictRemovalTracker(CTxMemPool &_pool) : pool(_pool) { +- pool.NotifyEntryRemoved.connect(boost::bind(&MemPoolConflictRemovalTracker::NotifyEntryRemoved, this, _1, _2)); ++ pool.NotifyEntryRemoved.connect(boost::bind(&MemPoolConflictRemovalTracker::NotifyEntryRemoved, ++ this, boost::placeholders::_1, ++ boost::placeholders::_2)); + } + + void NotifyEntryRemoved(CTransactionRef txRemoved, MemPoolRemovalReason reason) { +@@ -189,7 +192,9 @@ public: + } + + ~MemPoolConflictRemovalTracker() { +- pool.NotifyEntryRemoved.disconnect(boost::bind(&MemPoolConflictRemovalTracker::NotifyEntryRemoved, this, _1, _2)); ++ pool.NotifyEntryRemoved.disconnect(boost::bind(&MemPoolConflictRemovalTracker::NotifyEntryRemoved, ++ this, boost::placeholders::_1, ++ boost::placeholders::_2)); + for (const auto& tx : conflictedTxs) { + GetMainSignals().SyncTransaction(*tx, NULL, CMainSignals::SYNC_TRANSACTION_NOT_IN_BLOCK); + } +diff --git a/src/validationinterface.cpp b/src/validationinterface.cpp +index d4121a28b..c34d7d326 100644 +--- a/src/validationinterface.cpp ++++ b/src/validationinterface.cpp +@@ -5,6 +5,8 @@ + + #include "validationinterface.h" + ++#include ++ + static CMainSignals g_signals; + + CMainSignals& GetMainSignals() +@@ -13,29 +15,62 @@ CMainSignals& GetMainSignals() + } + + void RegisterValidationInterface(CValidationInterface* pwalletIn) { +- g_signals.UpdatedBlockTip.connect(boost::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3)); +- g_signals.SyncTransaction.connect(boost::bind(&CValidationInterface::SyncTransaction, pwalletIn, _1, _2, _3)); +- g_signals.UpdatedTransaction.connect(boost::bind(&CValidationInterface::UpdatedTransaction, pwalletIn, _1)); +- g_signals.SetBestChain.connect(boost::bind(&CValidationInterface::SetBestChain, pwalletIn, _1)); +- g_signals.Inventory.connect(boost::bind(&CValidationInterface::Inventory, pwalletIn, _1)); +- g_signals.Broadcast.connect(boost::bind(&CValidationInterface::ResendWalletTransactions, pwalletIn, _1, _2)); +- g_signals.BlockChecked.connect(boost::bind(&CValidationInterface::BlockChecked, pwalletIn, _1, _2)); +- g_signals.ScriptForMining.connect(boost::bind(&CValidationInterface::GetScriptForMining, pwalletIn, _1)); +- g_signals.BlockFound.connect(boost::bind(&CValidationInterface::ResetRequestCount, pwalletIn, _1)); +- g_signals.NewPoWValidBlock.connect(boost::bind(&CValidationInterface::NewPoWValidBlock, pwalletIn, _1, _2)); ++ g_signals.UpdatedBlockTip.connect(boost::bind(&CValidationInterface::UpdatedBlockTip, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ g_signals.SyncTransaction.connect(boost::bind(&CValidationInterface::SyncTransaction, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ g_signals.UpdatedTransaction.connect(boost::bind(&CValidationInterface::UpdatedTransaction, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.SetBestChain.connect(boost::bind(&CValidationInterface::SetBestChain, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.Inventory.connect(boost::bind(&CValidationInterface::Inventory, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.Broadcast.connect(boost::bind(&CValidationInterface::ResendWalletTransactions, ++ pwalletIn, boost::placeholders::_1, boost::placeholders::_2)); ++ g_signals.BlockChecked.connect(boost::bind(&CValidationInterface::BlockChecked, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2)); ++ g_signals.ScriptForMining.connect(boost::bind(&CValidationInterface::GetScriptForMining, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.BlockFound.connect(boost::bind(&CValidationInterface::ResetRequestCount, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.NewPoWValidBlock.connect(boost::bind(&CValidationInterface::NewPoWValidBlock, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2)); + } + + void UnregisterValidationInterface(CValidationInterface* pwalletIn) { +- g_signals.BlockFound.disconnect(boost::bind(&CValidationInterface::ResetRequestCount, pwalletIn, _1)); +- g_signals.ScriptForMining.disconnect(boost::bind(&CValidationInterface::GetScriptForMining, pwalletIn, _1)); +- g_signals.BlockChecked.disconnect(boost::bind(&CValidationInterface::BlockChecked, pwalletIn, _1, _2)); +- g_signals.Broadcast.disconnect(boost::bind(&CValidationInterface::ResendWalletTransactions, pwalletIn, _1, _2)); +- g_signals.Inventory.disconnect(boost::bind(&CValidationInterface::Inventory, pwalletIn, _1)); +- g_signals.SetBestChain.disconnect(boost::bind(&CValidationInterface::SetBestChain, pwalletIn, _1)); +- g_signals.UpdatedTransaction.disconnect(boost::bind(&CValidationInterface::UpdatedTransaction, pwalletIn, _1)); +- g_signals.SyncTransaction.disconnect(boost::bind(&CValidationInterface::SyncTransaction, pwalletIn, _1, _2, _3)); +- g_signals.UpdatedBlockTip.disconnect(boost::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3)); +- g_signals.NewPoWValidBlock.disconnect(boost::bind(&CValidationInterface::NewPoWValidBlock, pwalletIn, _1, _2)); ++ g_signals.BlockFound.disconnect(boost::bind(&CValidationInterface::ResetRequestCount, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.ScriptForMining.disconnect(boost::bind(&CValidationInterface::GetScriptForMining, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.BlockChecked.disconnect(boost::bind(&CValidationInterface::BlockChecked, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2)); ++ g_signals.Broadcast.disconnect(boost::bind(&CValidationInterface::ResendWalletTransactions, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2)); ++ g_signals.Inventory.disconnect(boost::bind(&CValidationInterface::Inventory, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.SetBestChain.disconnect(boost::bind(&CValidationInterface::SetBestChain, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.UpdatedTransaction.disconnect(boost::bind(&CValidationInterface::UpdatedTransaction, ++ pwalletIn, boost::placeholders::_1)); ++ g_signals.SyncTransaction.disconnect(boost::bind(&CValidationInterface::SyncTransaction, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ g_signals.UpdatedBlockTip.disconnect(boost::bind(&CValidationInterface::UpdatedBlockTip, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2, ++ boost::placeholders::_3)); ++ g_signals.NewPoWValidBlock.disconnect(boost::bind(&CValidationInterface::NewPoWValidBlock, ++ pwalletIn, boost::placeholders::_1, ++ boost::placeholders::_2)); + } + + void UnregisterAllValidationInterfaces() { +-- +2.26.2 + diff --git a/net-p2p/dogecoind/files/0002-httpserver-include-deque.patch b/net-p2p/dogecoind/files/0002-httpserver-include-deque.patch new file mode 100644 index 0000000..f6e726b --- /dev/null +++ b/net-p2p/dogecoind/files/0002-httpserver-include-deque.patch @@ -0,0 +1,60 @@ +From 075cc97d089d38df6f2b4767db5290e9d7e995a9 Mon Sep 17 00:00:00 2001 +From: Bertrand Jacquin +Date: Fri, 24 Jan 2020 20:16:27 +0000 +Subject: [PATCH 2/2] httpserver: include deque +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It seems gcc 9.2.0 requires deque to be included: + + x86_64-pc-linux-gnu-g++ -std=c++11 -DHAVE_CONFIG_H -I. -I../src/config -I. -I./obj -I/usr/include/db5.1/ -pthread -I/usr/include -I./leveldb/include -I./leveldb/helpers/memenv -I./secp256k1/include -pthread -I/usr/include/db5.1 -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS -march=native -O2 -pipe -fomit-frame-pointer -c -o libdogecoin_server_a-httpserver.o `test -f 'httpserver.cpp' || echo './'`httpserver.cpp + httpserver.cpp:71:10: error: ‘deque’ in namespace ‘std’ does not name a template type + 71 | std::deque> queue; + | ^~~~~ + httpserver.cpp:30:1: note: ‘std::deque’ is defined in header ‘’; did you forget to ‘#include ’? + 29 | #include + +++ |+#include + 30 | + httpserver.cpp: In member function ‘bool WorkQueue::Enqueue(WorkItem*)’: + httpserver.cpp:110:13: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’? + 110 | if (queue.size() >= maxDepth) { + | ^~~~~ + | Enqueue + httpserver.cpp:113:9: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’? + 113 | queue.emplace_back(std::unique_ptr(item)); + | ^~~~~ + | Enqueue + httpserver.cpp: In member function ‘void WorkQueue::Run()’: + httpserver.cpp:125:35: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’? + 125 | while (running && queue.empty()) + | ^~~~~ + | Enqueue + httpserver.cpp:129:31: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’? + 129 | i = std::move(queue.front()); + | ^~~~~ + | Enqueue + httpserver.cpp: In member function ‘size_t WorkQueue::Depth()’: + httpserver.cpp:154:16: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’? + 154 | return queue.size(); + | ^~~~~ + | Enqueue +--- + src/httpserver.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/httpserver.cpp b/src/httpserver.cpp +index dba952730..5c08e676d 100644 +--- a/src/httpserver.cpp ++++ b/src/httpserver.cpp +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + + #include +-- +2.26.2 + -- 2.43.2