summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-p2p/bitcoind')
-rw-r--r--net-p2p/bitcoind/Manifest9
-rw-r--r--net-p2p/bitcoind/bitcoind-0.10.2-r1.ebuild79
-rw-r--r--net-p2p/bitcoind/bitcoind-0.10.2.ebuild77
-rw-r--r--net-p2p/bitcoind/bitcoind-0.11.0.ebuild75
-rw-r--r--net-p2p/bitcoind/bitcoind-9999.ebuild72
-rw-r--r--net-p2p/bitcoind/files/0.10.0-openrc-compat.patch24
-rw-r--r--net-p2p/bitcoind/files/0.8-openssl-101k.patch31
-rw-r--r--net-p2p/bitcoind/files/0.8.2-sys_leveldb.patch185
-rw-r--r--net-p2p/bitcoind/files/0.9-openssl-101k.patch31
-rw-r--r--net-p2p/bitcoind/files/0.9.0-sys_leveldb.patch34
-rw-r--r--net-p2p/bitcoind/files/0.9.x-ljr_noblacklist.patch12
-rw-r--r--net-p2p/bitcoind/files/9999-syslibs.patch243
-rw-r--r--net-p2p/bitcoind/files/bitcoin.conf8
-rw-r--r--net-p2p/bitcoind/files/bitcoin.confd10
-rw-r--r--net-p2p/bitcoind/files/bitcoin.initd-r129
-rw-r--r--net-p2p/bitcoind/files/bitcoind.logrotate7
-rw-r--r--net-p2p/bitcoind/files/bitcoind.logrotate-r18
-rw-r--r--net-p2p/bitcoind/files/bitcoind.service30
-rw-r--r--net-p2p/bitcoind/metadata.xml26
19 files changed, 990 insertions, 0 deletions
diff --git a/net-p2p/bitcoind/Manifest b/net-p2p/bitcoind/Manifest
new file mode 100644
index 000000000000..2b26496b593c
--- /dev/null
+++ b/net-p2p/bitcoind/Manifest
@@ -0,0 +1,9 @@
+DIST bitcoin-0.10.1.ljr20150428.patches.tar.xz 34980 SHA256 f3770c478bd541fcc75c1f64664ae810aa67da7535f11859034dcc7067546713 SHA512 edf7c8aa81c8890da61224eddde61cec62058514fa76a50ab25cc7db272f6c656f5c46f8b9468f6059eb7c1be624de834867c0a7c1c2559a5231b763e40c13a2 WHIRLPOOL 2b8d878bf3d599393da177403e2199e63bb2634d14438079b5c8821c07441e26fb8b5cd150281c9923534f474763d9f3c2cab9424ab7a319de059c1b3bb49c4e
+DIST bitcoin-0.11.0.ljr20150711.patches.tar.xz 79740 SHA256 2f9608ee18f10fccaeda239baf82fd74180a562eb92aec72f7959c7211228bbb SHA512 cafa5cf0b7a56894b07e949bb401016c46456f6043da86f54023f930e9836a420c88ca9e94067edcf2150495cb637b1938478332f7f7669394ea90351f3b4623 WHIRLPOOL 1bab46c50b7bc8709359ea98a9a75f4b476dd81540421f6696b4085f4acf8fd3d040e591230df1f83625ada89d0d178040f747ae02f76d1dd73787c86e73dac4
+DIST bitcoin-rbf-v0.10.2-r1.patch 26987 SHA256 a5dcd50134fe9872c0460746da2d743864525a775150304473a5588aa6c516e6 SHA512 2e88d185dd8d5845a7286dda130ab6d73328a09f7623387d68437be5e655e9657a1e392e9c6a0004856127738f340a77283206a0a8183f2ee9407ddf43328e7f WHIRLPOOL 39ffca7486964eb25f5de4ccfc4a1aff4078b1a08d907300ea06f51189bdb0c6514dbd9565ce615de6d776bf01faa1dabae5cb0c4628ef8d3dd686f6300c037a
+DIST bitcoin-rbf-v0.10.2.patch 25171 SHA256 2610cca0d758c502b71a13184643fe00c9dcb7a2b258f943f33a4534ec1f6cd5 SHA512 855e5e497a371b1e503ab5a0c1fbdb7cb3c30c318b19c32c220d8e6e0b2ae06ca6e63ac27fcb23b51b01c5573c6ea94417ec9d395174ae4f01ad9a0ed4c28c51 WHIRLPOOL 9e67a1d03eb7e40431623818230f2c94e811402a5da6f36dd950cc8a92cc76797ba770c3586ff88477d74b7ee21c9b93704ccead7b489678911dda1394f34fda
+DIST bitcoin-rbf-v0.11.0rc3.patch 27178 SHA256 976e3007121a69630b74c6106f41ebc48b97476ac647e0872d3aaa08a64ec52f SHA512 dc1c46b731dd78bbcb2e7b066dd74aaf0adf39c672847349ed7ebf00012481d3105cebc753dd3bccbe0c35c49bf9dc1546cc8e4d0cc5509d449115e53e91fcc2 WHIRLPOOL de7bd2c1a45369baeac8e311fcd3f9b37e6ab84b99362bb05a5f3f8d6990ea2ad5f509b389b0962bf679ced9dca70c0825e35ae02d97b389101108d2d80be589
+DIST bitcoin-v0.10.2-r1.tgz 5076702 SHA256 9bee2b9fe0c236f9f75bfc05c59df238c9424cbcffe4483db5009c5aaff8881b SHA512 5650dc281c749a6057d2dc29d61909619d680ace8c74c41df1581ef56e98950cb42bf4ea2c37264f00090cfa7762f2539f433c8117228484cd7628d397aa69fa WHIRLPOOL 02c2e74748c7572fa3968fc132d561323e33e6aadc07744bd06567abdddd3c7871afe6b46d30fc3389d92246c705454db708dd05946e93e3a93ad5d3b89a327b
+DIST bitcoin-v0.10.2.tgz 5053846 SHA256 51bff5ba2372ca53782c5fec3d9b4b4226e94b5ac0b1b4b2b5949b97082af256 SHA512 f89330b93f22ba5f393c9a7a48ce28196be0e16468e5d99c459e889c458cc3a7c3f6e4537996571aa8ccb0ebb2eedf80ad028da136a2e08e2f8631f69ac5f2fc WHIRLPOOL 0cfb182f355151cde75601d2260cc92801e2dc1231ae2fca67610e699bb5f0cae826b09f456ca8afa283730954f11a8b180f43ae5a5297d129093fc0f9f53b4e
+DIST bitcoin-v0.11.0.tgz 5898627 SHA256 a52cb63e96a13626243c78662ea659c90277728b8f40d27846e82fdf81ce58e3 SHA512 bf1e05e115ecc375bfe9e342bf65db74784926e599a05f42f33b43781775d0469826228876269fcdc8a469bce45cb3dd4513e1f9dda5d36cc40adbb9aaf6f054 WHIRLPOOL ca2f3feb9815ad9bfac0b573bc0a3a7bb55bb7467724d84a6baf6a469983625727bb0fd01722a0be74e2df0a29833aadc152d036819be660270733b57089e9bf
+DIST bitcoinxt-v0.10.2.patch 72007 SHA256 f2694f976803dfd8cba11cddd6ee2bdd441737d9b82c9d7550f0f362603223b5 SHA512 6b993859b07d28ed8eac79711c0580d29267c1158838772970fe22e88d68f42f46758494e4430b9470ad529e05b24a936052bbb6747c04b54aa8a95694442747 WHIRLPOOL bbf0904cb06f547976edca2f36f49b1352d4c3e99798b19d45f5c34a74167c8db86017c9fdbaca90f3b7de38ece5f3c527e67e97ccbffdd99abd840f6cd335e4
diff --git a/net-p2p/bitcoind/bitcoind-0.10.2-r1.ebuild b/net-p2p/bitcoind/bitcoind-0.10.2-r1.ebuild
new file mode 100644
index 000000000000..dcac723e3ef3
--- /dev/null
+++ b/net-p2p/bitcoind/bitcoind-0.10.2-r1.ebuild
@@ -0,0 +1,79 @@
+# Copyright 2010-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+BITCOINCORE_COMMITHASH="16f45600c8c372a738ffef544292864256382601"
+BITCOINCORE_SRC_SUFFIX="-r1"
+BITCOINCORE_LJR_PV="0.10.1"
+BITCOINCORE_LJR_DATE="20150428"
+BITCOINCORE_IUSE="examples ljr logrotate test upnp +wallet xt zeromq"
+BITCOINCORE_POLICY_PATCHES="cpfp dcmp rbf spamfilter"
+BITCOINCORE_NEED_LEVELDB=1
+BITCOINCORE_NEED_LIBSECP256K1=1
+inherit bash-completion-r1 bitcoincore user systemd
+
+DESCRIPTION="Original Bitcoin crypto-currency wallet for automated services"
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ logrotate? (
+ app-admin/logrotate
+ )
+"
+DEPEND="${RDEPEND}"
+
+pkg_setup() {
+ local UG='bitcoin'
+ enewgroup "${UG}"
+ enewuser "${UG}" -1 -1 /var/lib/bitcoin "${UG}"
+}
+
+src_prepare() {
+ sed -i 's/have bitcoind &&//;s/^\(complete -F _bitcoind bitcoind\) bitcoin-cli$/\1/' contrib/${PN}.bash-completion
+ epatch "${FILESDIR}/0.10.0-openrc-compat.patch"
+ bitcoincore_src_prepare
+}
+
+src_configure() {
+ # NOTE: --enable-zmq actually disables it
+ bitcoincore_conf \
+ --with-daemon
+}
+
+src_install() {
+ bitcoincore_src_install
+
+ insinto /etc/bitcoin
+ newins "${FILESDIR}/bitcoin.conf" bitcoin.conf
+ fowners bitcoin:bitcoin /etc/bitcoin/bitcoin.conf
+ fperms 600 /etc/bitcoin/bitcoin.conf
+
+ newconfd "contrib/init/bitcoind.openrcconf" ${PN}
+ newinitd "contrib/init/bitcoind.openrc" ${PN}
+ systemd_dounit "${FILESDIR}/bitcoind.service"
+
+ keepdir /var/lib/bitcoin/.bitcoin
+ fperms 700 /var/lib/bitcoin
+ fowners bitcoin:bitcoin /var/lib/bitcoin/
+ fowners bitcoin:bitcoin /var/lib/bitcoin/.bitcoin
+ dosym /etc/bitcoin/bitcoin.conf /var/lib/bitcoin/.bitcoin/bitcoin.conf
+
+ dodoc doc/assets-attribution.md doc/tor.md
+ doman contrib/debian/manpages/{bitcoind.1,bitcoin.conf.5}
+
+ newbashcomp contrib/${PN}.bash-completion ${PN}
+
+ if use examples; then
+ docinto examples
+ dodoc -r contrib/{bitrpc,qos,spendfrom,tidy_datadir.sh}
+ fi
+
+ if use logrotate; then
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/bitcoind.logrotate-r1" bitcoind
+ fi
+}
diff --git a/net-p2p/bitcoind/bitcoind-0.10.2.ebuild b/net-p2p/bitcoind/bitcoind-0.10.2.ebuild
new file mode 100644
index 000000000000..90f110d072a4
--- /dev/null
+++ b/net-p2p/bitcoind/bitcoind-0.10.2.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2010-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+BITCOINCORE_COMMITHASH="d8ac90184254fea3a7f4991fd0529dfbd750aea0"
+BITCOINCORE_LJR_PV="0.10.1"
+BITCOINCORE_LJR_DATE="20150428"
+BITCOINCORE_IUSE="examples ljr logrotate test upnp +wallet xt zeromq"
+BITCOINCORE_POLICY_PATCHES="cpfp dcmp rbf spamfilter"
+BITCOINCORE_NEED_LEVELDB=1
+BITCOINCORE_NEED_LIBSECP256K1=1
+inherit bash-completion-r1 bitcoincore user systemd
+
+DESCRIPTION="Original Bitcoin crypto-currency wallet for automated services"
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64 arm ~arm64 x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ logrotate? (
+ app-admin/logrotate
+ )
+"
+DEPEND="${RDEPEND}"
+
+pkg_setup() {
+ local UG='bitcoin'
+ enewgroup "${UG}"
+ enewuser "${UG}" -1 -1 /var/lib/bitcoin "${UG}"
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/0.10.0-openrc-compat.patch"
+ bitcoincore_src_prepare
+}
+
+src_configure() {
+ # NOTE: --enable-zmq actually disables it
+ bitcoincore_conf \
+ --with-daemon
+}
+
+src_install() {
+ bitcoincore_src_install
+
+ insinto /etc/bitcoin
+ newins "${FILESDIR}/bitcoin.conf" bitcoin.conf
+ fowners bitcoin:bitcoin /etc/bitcoin/bitcoin.conf
+ fperms 600 /etc/bitcoin/bitcoin.conf
+
+ newconfd "contrib/init/bitcoind.openrcconf" ${PN}
+ newinitd "contrib/init/bitcoind.openrc" ${PN}
+ systemd_dounit "${FILESDIR}/bitcoind.service"
+
+ keepdir /var/lib/bitcoin/.bitcoin
+ fperms 700 /var/lib/bitcoin
+ fowners bitcoin:bitcoin /var/lib/bitcoin/
+ fowners bitcoin:bitcoin /var/lib/bitcoin/.bitcoin
+ dosym /etc/bitcoin/bitcoin.conf /var/lib/bitcoin/.bitcoin/bitcoin.conf
+
+ dodoc doc/assets-attribution.md doc/tor.md
+ doman contrib/debian/manpages/{bitcoind.1,bitcoin.conf.5}
+
+ newbashcomp contrib/${PN}.bash-completion ${PN}
+
+ if use examples; then
+ docinto examples
+ dodoc -r contrib/{bitrpc,qos,spendfrom,tidy_datadir.sh}
+ fi
+
+ if use logrotate; then
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/bitcoind.logrotate-r1" bitcoind
+ fi
+}
diff --git a/net-p2p/bitcoind/bitcoind-0.11.0.ebuild b/net-p2p/bitcoind/bitcoind-0.11.0.ebuild
new file mode 100644
index 000000000000..616e33c5d2d3
--- /dev/null
+++ b/net-p2p/bitcoind/bitcoind-0.11.0.ebuild
@@ -0,0 +1,75 @@
+# Copyright 2010-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+BITCOINCORE_COMMITHASH="d26f951802c762de04fb68e1a112d611929920ba"
+BITCOINCORE_LJR_DATE="20150711"
+BITCOINCORE_IUSE="examples ljr logrotate test upnp +wallet zeromq"
+BITCOINCORE_POLICY_PATCHES="cltv cpfp rbf spamfilter"
+BITCOINCORE_NEED_LEVELDB=1
+BITCOINCORE_NEED_LIBSECP256K1=1
+inherit bash-completion-r1 bitcoincore user systemd
+
+DESCRIPTION="Original Bitcoin crypto-currency wallet for automated services"
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ logrotate? (
+ app-admin/logrotate
+ )
+"
+DEPEND="${RDEPEND}"
+
+pkg_setup() {
+ local UG='bitcoin'
+ enewgroup "${UG}"
+ enewuser "${UG}" -1 -1 /var/lib/bitcoin "${UG}"
+}
+
+src_prepare() {
+ sed -i 's/have bitcoind &&//;s/^\(complete -F _bitcoind bitcoind\) bitcoin-cli$/\1/' contrib/${PN}.bash-completion
+ bitcoincore_src_prepare
+}
+
+src_configure() {
+ bitcoincore_conf \
+ --with-daemon
+}
+
+src_install() {
+ bitcoincore_src_install
+
+ insinto /etc/bitcoin
+ newins "${FILESDIR}/bitcoin.conf" bitcoin.conf
+ fowners bitcoin:bitcoin /etc/bitcoin/bitcoin.conf
+ fperms 600 /etc/bitcoin/bitcoin.conf
+
+ newconfd "contrib/init/bitcoind.openrcconf" ${PN}
+ newinitd "contrib/init/bitcoind.openrc" ${PN}
+ systemd_dounit "${FILESDIR}/bitcoind.service"
+
+ keepdir /var/lib/bitcoin/.bitcoin
+ fperms 700 /var/lib/bitcoin
+ fowners bitcoin:bitcoin /var/lib/bitcoin/
+ fowners bitcoin:bitcoin /var/lib/bitcoin/.bitcoin
+ dosym /etc/bitcoin/bitcoin.conf /var/lib/bitcoin/.bitcoin/bitcoin.conf
+
+ dodoc doc/assets-attribution.md doc/bips.md doc/tor.md
+ doman contrib/debian/manpages/{bitcoind.1,bitcoin.conf.5}
+
+ newbashcomp contrib/${PN}.bash-completion ${PN}
+
+ if use examples; then
+ docinto examples
+ dodoc -r contrib/{bitrpc,qos,spendfrom,tidy_datadir.sh}
+ fi
+
+ if use logrotate; then
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/bitcoind.logrotate-r1" bitcoind
+ fi
+}
diff --git a/net-p2p/bitcoind/bitcoind-9999.ebuild b/net-p2p/bitcoind/bitcoind-9999.ebuild
new file mode 100644
index 000000000000..5c38561fd52b
--- /dev/null
+++ b/net-p2p/bitcoind/bitcoind-9999.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2010-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+BITCOINCORE_IUSE="examples logrotate test upnp +wallet"
+BITCOINCORE_NEED_LEVELDB=1
+BITCOINCORE_NEED_LIBSECP256K1=1
+inherit bash-completion-r1 bitcoincore user systemd
+
+DESCRIPTION="Original Bitcoin crypto-currency wallet for automated services"
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS=""
+
+RDEPEND="
+ logrotate? (
+ app-admin/logrotate
+ )
+"
+DEPEND="${RDEPEND}"
+
+pkg_setup() {
+ local UG='bitcoin'
+ enewgroup "${UG}"
+ enewuser "${UG}" -1 -1 /var/lib/bitcoin "${UG}"
+}
+
+src_prepare() {
+ sed -i 's/have bitcoind &&//;s/^\(complete -F _bitcoind bitcoind\) bitcoin-cli$/\1/' contrib/${PN}.bash-completion
+ bitcoincore_src_prepare
+}
+
+src_configure() {
+ bitcoincore_conf \
+ --with-daemon
+}
+
+src_install() {
+ bitcoincore_src_install
+
+ insinto /etc/bitcoin
+ newins "${FILESDIR}/bitcoin.conf" bitcoin.conf
+ fowners bitcoin:bitcoin /etc/bitcoin/bitcoin.conf
+ fperms 600 /etc/bitcoin/bitcoin.conf
+
+ newconfd "contrib/init/bitcoind.openrcconf" ${PN}
+ newinitd "contrib/init/bitcoind.openrc" ${PN}
+ systemd_dounit "${FILESDIR}/bitcoind.service"
+
+ keepdir /var/lib/bitcoin/.bitcoin
+ fperms 700 /var/lib/bitcoin
+ fowners bitcoin:bitcoin /var/lib/bitcoin/
+ fowners bitcoin:bitcoin /var/lib/bitcoin/.bitcoin
+ dosym /etc/bitcoin/bitcoin.conf /var/lib/bitcoin/.bitcoin/bitcoin.conf
+
+ dodoc doc/assets-attribution.md doc/bips.md doc/tor.md
+ doman contrib/debian/manpages/{bitcoind.1,bitcoin.conf.5}
+
+ newbashcomp contrib/${PN}.bash-completion ${PN}
+
+ if use examples; then
+ docinto examples
+ dodoc -r contrib/{bitrpc,qos,spendfrom,tidy_datadir.sh}
+ fi
+
+ if use logrotate; then
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/bitcoind.logrotate-r1" bitcoind
+ fi
+}
diff --git a/net-p2p/bitcoind/files/0.10.0-openrc-compat.patch b/net-p2p/bitcoind/files/0.10.0-openrc-compat.patch
new file mode 100644
index 000000000000..a7c31d680ba8
--- /dev/null
+++ b/net-p2p/bitcoind/files/0.10.0-openrc-compat.patch
@@ -0,0 +1,24 @@
+--- contrib/init/bitcoind.openrc 2015-03-03 09:37:59.919728713 +0000
++++ contrib/init/bitcoind.openrc 2015-03-03 09:38:08.109757531 +0000
+@@ -12,9 +12,11 @@
+ BITCOIND_PIDDIR=${BITCOIND_PIDDIR:-/var/run/bitcoind}
+ BITCOIND_PIDFILE=${BITCOIND_PIDFILE:-${BITCOIND_PIDDIR}/bitcoind.pid}
+ BITCOIND_DATADIR=${BITCOIND_DATADIR:-${BITCOIND_DEFAULT_DATADIR}}
+-BITCOIND_USER=${BITCOIND_USER:-bitcoin}
++BITCOIND_USER=${BITCOIND_USER:-${BITCOIN_USER:-bitcoin}}
+ BITCOIND_GROUP=${BITCOIND_GROUP:-bitcoin}
+ BITCOIND_BIN=${BITCOIND_BIN:-/usr/bin/bitcoind}
++BITCOIND_NICE=${BITCOIND_NICE:-${NICELEVEL:-0}}
++BITCOIND_OPTS="${BITCOIND_OPTS:-${BITCOIN_OPTS}}"
+
+ name="Bitcoin Core Daemon"
+ description="Bitcoin crypto-currency p2p network daemon"
+@@ -28,7 +30,7 @@
+
+ required_files="${BITCOIND_CONFIGFILE}"
+ start_stop_daemon_args="-u ${BITCOIND_USER} \
+- -N ${BITCOIND_NICE:-0} -w 2000"
++ -N ${BITCOIND_NICE} -w 2000"
+ pidfile="${BITCOIND_PIDFILE}"
+ retry=60
+
diff --git a/net-p2p/bitcoind/files/0.8-openssl-101k.patch b/net-p2p/bitcoind/files/0.8-openssl-101k.patch
new file mode 100644
index 000000000000..5eaaba9a5788
--- /dev/null
+++ b/net-p2p/bitcoind/files/0.8-openssl-101k.patch
@@ -0,0 +1,31 @@
+diff --git a/src/key.cpp b/src/key.cpp
+index 75114c6..7fcb17d 100644
+--- a/src/key.cpp
++++ b/src/key.cpp
+@@ -376,11 +376,23 @@ bool CKey::SetCompactSignature(uint256 hash, const std::vector<unsigned char>& v
+
+ bool CKey::Verify(uint256 hash, const std::vector<unsigned char>& vchSig)
+ {
+- // -1 = error, 0 = bad sig, 1 = good
+- if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1)
++ if (vchSig.empty())
+ return false;
+
+- return true;
++ // New versions of OpenSSL will reject non-canonical DER signatures. de/re-serialize first.
++ unsigned char *norm_der = NULL;
++ ECDSA_SIG *norm_sig = ECDSA_SIG_new();
++ const unsigned char* sigptr = &vchSig[0];
++ d2i_ECDSA_SIG(&norm_sig, &sigptr, vchSig.size());
++ int derlen = i2d_ECDSA_SIG(norm_sig, &norm_der);
++ ECDSA_SIG_free(norm_sig);
++ if (derlen <= 0)
++ return false;
++
++ // -1 = error, 0 = bad sig, 1 = good
++ bool ret = ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), norm_der, derlen, pkey) == 1;
++ OPENSSL_free(norm_der);
++ return ret;
+ }
+
+ bool CKey::VerifyCompact(uint256 hash, const std::vector<unsigned char>& vchSig)
diff --git a/net-p2p/bitcoind/files/0.8.2-sys_leveldb.patch b/net-p2p/bitcoind/files/0.8.2-sys_leveldb.patch
new file mode 100644
index 000000000000..2b9ab1a6d67e
--- /dev/null
+++ b/net-p2p/bitcoind/files/0.8.2-sys_leveldb.patch
@@ -0,0 +1,185 @@
+diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro
+index cf80986..520b5df 100644
+--- a/bitcoin-qt.pro
++++ b/bitcoin-qt.pro
+@@ -4,7 +4,7 @@ macx:TARGET = "Bitcoin-Qt"
+ VERSION = 0.8.0
+ INCLUDEPATH += src src/json src/qt
+ QT += network
+-DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE
++DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE LEVELDB_WITHOUT_MEMENV
+ CONFIG += no_include_pwd
+ CONFIG += thread
+
+@@ -98,25 +98,29 @@ contains(BITCOIN_NEED_QT_PLUGINS, 1) {
+ QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
+ }
+
++contains(USE_SYSTEM_LEVELDB, 1) {
++ LIBS += -lleveldb
++} else {
+ INCLUDEPATH += src/leveldb/include src/leveldb/helpers
+-LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
++LIBS += $$PWD/src/leveldb/libleveldb.a
+ !win32 {
+ # we use QMAKE_CXXFLAGS_RELEASE even without RELEASE=1 because we use RELEASE to indicate linking preferences not -O preferences
+- genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a
++ genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a
+ } else {
+ # make an educated guess about what the ranlib command is called
+ isEmpty(QMAKE_RANLIB) {
+ QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
+ }
+ LIBS += -lshlwapi
+- genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
++ genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a
+ }
+ genleveldb.target = $$PWD/src/leveldb/libleveldb.a
+ genleveldb.depends = FORCE
+ PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
+ QMAKE_EXTRA_TARGETS += genleveldb
++}
+ # Gross ugly hack that depends on qmake internals, unfortunately there is no other way to do it.
+-QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean
++QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb && $(MAKE) clean || true
+
+ # regenerate src/build.h
+ !win32|contains(USE_BUILD_INFO, 1) {
+diff --git a/src/leveldb.cpp b/src/leveldb.cpp
+index b41764f..30c524d 100644
+--- a/src/leveldb.cpp
++++ b/src/leveldb.cpp
+@@ -8,7 +8,9 @@
+ #include <leveldb/env.h>
+ #include <leveldb/cache.h>
+ #include <leveldb/filter_policy.h>
+-#include <memenv/memenv.h>
++#ifndef LEVELDB_WITHOUT_MEMENV
++#include <memenv.h>
++#endif
+
+ #include <boost/filesystem.hpp>
+
+@@ -42,8 +44,12 @@ CLevelDB::CLevelDB(const boost::filesystem::path &path, size_t nCacheSize, bool
+ options = GetOptions(nCacheSize);
+ options.create_if_missing = true;
+ if (fMemory) {
++#ifndef LEVELDB_WITHOUT_MEMENV
+ penv = leveldb::NewMemEnv(leveldb::Env::Default());
+ options.env = penv;
++#else
++ throw std::runtime_error("CLevelDB(): compiled without memenv support");
++#endif
+ } else {
+ if (fWipe) {
+ printf("Wiping LevelDB in %s\n", path.string().c_str());
+diff --git a/src/makefile.unix b/src/makefile.unix
+index 081edaf..27f2199 100644
+--- a/src/makefile.unix
++++ b/src/makefile.unix
+@@ -104,8 +104,7 @@ xCXXFLAGS=-O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-para
+ # adds some defaults in front. Unfortunately, LDFLAGS=... $(LDFLAGS) does not work.
+ xLDFLAGS=$(LDHARDENING) $(LDFLAGS)
+
+-OBJS= \
+- leveldb/libleveldb.a \
++BASEOBJS := \
+ obj/alert.o \
+ obj/version.o \
+ obj/checkpoints.o \
+@@ -114,7 +113,6 @@ OBJS= \
+ obj/crypter.o \
+ obj/key.o \
+ obj/db.o \
+- obj/init.o \
+ obj/keystore.o \
+ obj/main.o \
+ obj/net.o \
+@@ -134,24 +132,43 @@ OBJS= \
+ obj/hash.o \
+ obj/bloom.o \
+ obj/noui.o \
+- obj/leveldb.o \
+ obj/txdb.o
+
++OBJS := \
++ obj/leveldb.o \
++ obj/init.o \
++ $(BASEOBJS)
++
++TESTOBJS := \
++ obj-test/leveldb.o \
++ $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp)) \
++ $(BASEOBJS)
++
+
+ all: bitcoind
+
+ test check: test_bitcoin FORCE
+ ./test_bitcoin
+
++ifdef USE_SYSTEM_LEVELDB
++ LIBS += -lleveldb
++ TESTLIBS += -lmemenv
++else
+ #
+ # LevelDB support
+ #
+ MAKEOVERRIDES =
+-LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
++LIBS += $(CURDIR)/leveldb/libleveldb.a
++TESTLIBS += $(CURDIR)/leveldb/libmemenv.a
+ DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
+-DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
++DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers/memenv)
+ leveldb/libleveldb.a:
+- @echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a libmemenv.a && cd ..
++ @echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a && cd ..
++leveldb/libmemenv.a:
++ @echo "Building LevelDB memenv ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libmemenv.a && cd ..
++OBJS += leveldb/libleveldb.a
++TESTOBJS += leveldb/libmemenv.a
++endif
+
+ # auto-generated dependencies:
+ -include obj/*.P
+@@ -162,26 +179,28 @@ obj/build.h: FORCE
+ version.cpp: obj/build.h
+ DEFS += -DHAVE_BUILD_INFO
+
+-obj/%.o: %.cpp
+- $(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
++P_TO_D = \
+ @cp $(@:%.o=%.d) $(@:%.o=%.P); \
+- sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
++ sed -e 's/\#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
+ -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
+ rm -f $(@:%.o=%.d)
+
+-bitcoind: $(OBJS:obj/%=obj/%)
+- $(LINK) $(xCXXFLAGS) -o $@ $^ $(xLDFLAGS) $(LIBS)
++obj/%.o: %.cpp
++ $(CXX) -c $(xCXXFLAGS) -DLEVELDB_WITHOUT_MEMENV -MMD -MF $(@:%.o=%.d) -o $@ $<
++ $(P_TO_D)
+
+-TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp))
++bitcoind: $(OBJS)
++ $(LINK) $(xCXXFLAGS) -o $@ $^ $(xLDFLAGS) $(LIBS)
+
+ obj-test/%.o: test/%.cpp
+ $(CXX) -c $(TESTDEFS) $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
+- @cp $(@:%.o=%.d) $(@:%.o=%.P); \
+- sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
+- -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
+- rm -f $(@:%.o=%.d)
++ $(P_TO_D)
++
++obj-test/leveldb.o: leveldb.cpp
++ $(CXX) -c $(TESTDEFS) $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
++ $(P_TO_D)
+
+-test_bitcoin: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
++test_bitcoin: $(TESTOBJS)
+ $(LINK) $(xCXXFLAGS) -o $@ $(LIBPATHS) $^ $(TESTLIBS) $(xLDFLAGS) $(LIBS)
+
+ clean:
diff --git a/net-p2p/bitcoind/files/0.9-openssl-101k.patch b/net-p2p/bitcoind/files/0.9-openssl-101k.patch
new file mode 100644
index 000000000000..80f64887425b
--- /dev/null
+++ b/net-p2p/bitcoind/files/0.9-openssl-101k.patch
@@ -0,0 +1,31 @@
+diff --git a/src/key.cpp b/src/key.cpp
+index 5b261bb..a845ba1 100644
+--- a/src/key.cpp
++++ b/src/key.cpp
+@@ -227,10 +227,23 @@ public:
+ }
+
+ bool Verify(const uint256 &hash, const std::vector<unsigned char>& vchSig) {
+- // -1 = error, 0 = bad sig, 1 = good
+- if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1)
++ if (vchSig.empty())
+ return false;
+- return true;
++
++ // New versions of OpenSSL will reject non-canonical DER signatures. de/re-serialize first.
++ unsigned char *norm_der = NULL;
++ ECDSA_SIG *norm_sig = ECDSA_SIG_new();
++ const unsigned char* sigptr = &vchSig[0];
++ d2i_ECDSA_SIG(&norm_sig, &sigptr, vchSig.size());
++ int derlen = i2d_ECDSA_SIG(norm_sig, &norm_der);
++ ECDSA_SIG_free(norm_sig);
++ if (derlen <= 0)
++ return false;
++
++ // -1 = error, 0 = bad sig, 1 = good
++ bool ret = ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), norm_der, derlen, pkey) == 1;
++ OPENSSL_free(norm_der);
++ return ret;
+ }
+
+ bool SignCompact(const uint256 &hash, unsigned char *p64, int &rec) {
diff --git a/net-p2p/bitcoind/files/0.9.0-sys_leveldb.patch b/net-p2p/bitcoind/files/0.9.0-sys_leveldb.patch
new file mode 100644
index 000000000000..60e9f2b20941
--- /dev/null
+++ b/net-p2p/bitcoind/files/0.9.0-sys_leveldb.patch
@@ -0,0 +1,34 @@
+commit c38e0af3e021eb0b2aba846c77b06ca71de06b11 (personal-github/sys_leveldb, sys_leveldb)
+Author: Luke Dashjr <luke-jr+git@utopios.org>
+Date: Mon Sep 9 03:06:17 2013 +0000
+
+ configure: Add unsupported --with-system-leveldb configure flag
+
+diff --git a/configure.ac b/configure.ac
+index 3ed4549..5a5852d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -332,10 +332,22 @@ AC_TRY_COMPILE([#include <sys/socket.h>],
+ [ AC_MSG_RESULT(no)]
+ )
+
++dnl Check for leveldb, only if explicitly requested
+ LEVELDB_CPPFLAGS=
+ LIBLEVELDB=
+ LIBMEMENV=
+-AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
++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]
++)
++if test x$system_leveldb != xno; then
++ LEVELDB_CPPFLAGS=
++ LIBLEVELDB=-lleveldb
++ LIBMEMENV=-lmemenv
++fi
++AM_CONDITIONAL([EMBEDDED_LEVELDB],[test x$system_leveldb = xno])
+ AC_SUBST(LEVELDB_CPPFLAGS)
+ AC_SUBST(LIBLEVELDB)
+ AC_SUBST(LIBMEMENV)
diff --git a/net-p2p/bitcoind/files/0.9.x-ljr_noblacklist.patch b/net-p2p/bitcoind/files/0.9.x-ljr_noblacklist.patch
new file mode 100644
index 000000000000..35194662ecd2
--- /dev/null
+++ b/net-p2p/bitcoind/files/0.9.x-ljr_noblacklist.patch
@@ -0,0 +1,12 @@
+diff --git a/src/script.cpp b/src/script.cpp
+index 24bbbad..a60d8b6 100644
+--- a/src/script.cpp
++++ b/src/script.cpp
+@@ -1870,6 +1870,7 @@ bool fIsBareMultisigStd = false;
+
+ const char *CScript::IsBlacklisted() const
+ {
++ return false;
+ if (this->size() >= 7 && this->at(0) == OP_DUP)
+ {
+ // pay-to-pubkeyhash
diff --git a/net-p2p/bitcoind/files/9999-syslibs.patch b/net-p2p/bitcoind/files/9999-syslibs.patch
new file mode 100644
index 000000000000..2cdf2ab9837b
--- /dev/null
+++ b/net-p2p/bitcoind/files/9999-syslibs.patch
@@ -0,0 +1,243 @@
+diff --git a/build-aux/m4/bitcoin_subdir_to_include.m4 b/build-aux/m4/bitcoin_subdir_to_include.m4
+index 66f106c..5f0a3b1 100644
+--- a/build-aux/m4/bitcoin_subdir_to_include.m4
++++ b/build-aux/m4/bitcoin_subdir_to_include.m4
+@@ -5,7 +5,7 @@ AC_DEFUN([BITCOIN_SUBDIR_TO_INCLUDE],[
+ AC_MSG_RESULT([default])
+ else
+ echo "#include <$2$3.h>" >conftest.cpp
+- newinclpath=`${CXXCPP} ${CPPFLAGS} -M conftest.cpp 2>/dev/null | [ tr -d '\\n\\r\\\\' | sed -e 's/^.*[[:space:]:]\(\/[^[:space:]]*\)]$3[\.h[[:space:]].*$/\1/' -e t -e d`]
++ newinclpath=$(${CXXCPP} ${CPPFLAGS} -M conftest.cpp 2>/dev/null | sed [-E -e ':a' -e '/\\$/!b b' -e N -e 's/\\\n/ /' -e 't a' -e ':b' -e 's/^[^:]*:[[:space:]]*(([^[:space:]\]|\\.)*[[:space:]])*(([^[:space:]\]|\\.)*)]$3\.h[([[:space:]].*)?$/\3/' -e 't' -e d])
+ AC_MSG_RESULT([${newinclpath}])
+ if test "x${newinclpath}" != "x"; then
+ eval "$1=\"\$$1\"' -I${newinclpath}'"
+diff --git a/configure.ac b/configure.ac
+index 37fe47e..14e5c34 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -170,6 +170,18 @@ AC_ARG_WITH([utils],
+ [build_bitcoin_utils=$withval],
+ [build_bitcoin_utils=yes])
+
++AC_ARG_ENABLE([util-cli],
++ [AS_HELP_STRING([--enable-util-cli],
++ [build bitcoin-cli])],
++ [build_bitcoin_cli=$enableval],
++ [build_bitcoin_cli=$build_bitcoin_utils])
++
++AC_ARG_ENABLE([util-tx],
++ [AS_HELP_STRING([--enable-util-tx],
++ [build bitcoin-tx])],
++ [build_bitcoin_tx=$enableval],
++ [build_bitcoin_tx=$build_bitcoin_utils])
++
+ AC_ARG_WITH([libs],
+ [AS_HELP_STRING([--with-libs],
+ [build libraries (default=yes)])],
+@@ -488,14 +500,65 @@ if test x$use_reduce_exports = xyes; then
+ [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
+ fi
+
++dnl Check for leveldb, only if explicitly requested
+ LEVELDB_CPPFLAGS=
+ LIBLEVELDB=
+ LIBMEMENV=
+-AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
++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]
++)
++if test x$system_leveldb != xno; then
++ LEVELDB_CPPFLAGS=
++ AC_CHECK_LIB([leveldb],[main],[
++ LIBLEVELDB=-lleveldb
++ ],[
++ AC_MSG_ERROR([leveldb library not found; using --with-system-leveldb is not supported anyway])
++ ])
++ TEMP_LIBS="$LIBS"
++ LIBS="$LIBS $LIBLEVELDB"
++ AC_CHECK_LIB([memenv],[main],[
++ LIBMEMENV=-lmemenv
++ ],[
++ AC_MSG_ERROR([LevelDB's memenv library not found; using --with-system-leveldb is not supported anyway])
++ ])
++ LIBS="$TEMP_LIBS"
++ 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])
++ ])
++ ])
++fi
++AM_CONDITIONAL([EMBEDDED_LEVELDB],[test x$system_leveldb = xno])
+ AC_SUBST(LEVELDB_CPPFLAGS)
+ AC_SUBST(LIBLEVELDB)
+ AC_SUBST(LIBMEMENV)
+
++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 x$enable_wallet != xno; then
+ dnl Check for libdb_cxx only if wallet enabled
+ BITCOIN_FIND_BDB48
+@@ -515,7 +578,7 @@ BITCOIN_QT_INIT
+ dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
+ BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt4])
+
+-if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
++if test x$build_bitcoin_cli$build_bitcoin_tx$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then
+ use_boost=no
+ else
+ use_boost=yes
+@@ -701,9 +764,13 @@ AC_MSG_CHECKING([whether to build bitcoind])
+ AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
+ AC_MSG_RESULT($build_bitcoind)
+
+-AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
+-AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
+-AC_MSG_RESULT($build_bitcoin_utils)
++AC_MSG_CHECKING([whether to build bitcoin-cli])
++AM_CONDITIONAL([BUILD_BITCOIN_CLI], [test x$build_bitcoin_cli = xyes])
++AC_MSG_RESULT($build_bitcoin_cli)
++
++AC_MSG_CHECKING([whether to build bitcoin-tx])
++AM_CONDITIONAL([BUILD_BITCOIN_TX], [test x$build_bitcoin_tx = xyes])
++AC_MSG_RESULT($build_bitcoin_tx)
+
+ AC_MSG_CHECKING([whether to build libraries])
+ AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
+@@ -826,7 +893,7 @@ else
+ AC_MSG_RESULT([no])
+ fi
+
+-if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then
++if test x$build_bitcoin_cli$build_bitcoin_tx$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnononononono; then
+ AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests])
+ fi
+
+@@ -895,8 +962,10 @@ PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
+ unset PKG_CONFIG_LIBDIR
+ PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
+
++if test x$system_libsecp256k1 = xno; then
+ ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no"
+ AC_CONFIG_SUBDIRS([src/secp256k1])
++fi
+
+ AC_OUTPUT
+
+diff --git a/qa/pull-tester/rpc-tests.sh b/qa/pull-tester/rpc-tests.sh
+index 9b31865..5bb187c 100755
+--- a/qa/pull-tester/rpc-tests.sh
++++ b/qa/pull-tester/rpc-tests.sh
+@@ -57,7 +57,7 @@ testScriptsExt=(
+ extArg="-extended"
+ passOn=${@#$extArg}
+
+-if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
++if [ "x${ENABLE_BITCOIND}${ENABLE_CLI}${ENABLE_WALLET}" = "x111" ]; then
+ for (( i = 0; i < ${#testScripts[@]}; i++ ))
+ do
+ if [ -z "$1" ] || [ "${1:0:1}" == "-" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ]
+diff --git a/qa/pull-tester/tests-config.sh.in b/qa/pull-tester/tests-config.sh.in
+index 10f4d33..e0e407d 100755
+--- a/qa/pull-tester/tests-config.sh.in
++++ b/qa/pull-tester/tests-config.sh.in
+@@ -8,7 +8,7 @@ EXEEXT="@EXEEXT@"
+
+ # These will turn into comments if they were disabled when configuring.
+ @ENABLE_WALLET_TRUE@ENABLE_WALLET=1
+-@BUILD_BITCOIN_UTILS_TRUE@ENABLE_UTILS=1
++@BUILD_BITCOIN_CLI_TRUE@ENABLE_CLI=1
+ @BUILD_BITCOIND_TRUE@ENABLE_BITCOIND=1
+
+ REAL_BITCOIND="$BUILDDIR/src/bitcoind${EXEEXT}"
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 1c2f770..4d60ddf 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1,4 +1,6 @@
++if EMBEDDED_LIBSECP256K1
+ DIST_SUBDIRS = secp256k1
++endif
+ AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS)
+
+
+@@ -20,7 +22,7 @@ endif
+ BITCOIN_CONFIG_INCLUDES=-I$(builddir)/config
+ BITCOIN_INCLUDES=-I$(builddir) -I$(builddir)/obj $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) $(CRYPTO_CFLAGS) $(SSL_CFLAGS)
+
+-BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include
++BITCOIN_INCLUDES += $(libsecp256k1_CFLAGS)
+
+ LIBBITCOIN_SERVER=libbitcoin_server.a
+ LIBBITCOIN_WALLET=libbitcoin_wallet.a
+@@ -30,10 +32,16 @@ LIBBITCOIN_UTIL=libbitcoin_util.a
+ LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
+ LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a
+ LIBBITCOINQT=qt/libbitcoinqt.a
++if EMBEDDED_LIBSECP256K1
+ LIBSECP256K1=secp256k1/libsecp256k1.la
++else
++LIBSECP256K1=$(libsecp256k1_LIBS)
++endif
+
++if EMBEDDED_LIBSECP256K1
+ $(LIBSECP256K1): $(wildcard secp256k1/src/*) $(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:
+@@ -63,8 +71,11 @@ if BUILD_BITCOIND
+ bin_PROGRAMS += bitcoind
+ endif
+
+-if BUILD_BITCOIN_UTILS
+- bin_PROGRAMS += bitcoin-cli bitcoin-tx
++if BUILD_BITCOIN_CLI
++ bin_PROGRAMS += bitcoin-cli
++endif
++if BUILD_BITCOIN_TX
++ bin_PROGRAMS += bitcoin-tx
+ endif
+
+ .PHONY: FORCE
+diff --git a/src/Makefile.test.include b/src/Makefile.test.include
+index 0997148..14b4deb 100644
+--- a/src/Makefile.test.include
++++ b/src/Makefile.test.include
+@@ -111,10 +111,12 @@ bitcoin_test_check: $(TEST_BINARY) FORCE
+ bitcoin_test_clean : FORCE
+ rm -f $(CLEAN_BITCOIN_TEST) $(test_test_bitcoin_OBJECTS) $(TEST_BINARY)
+
++if EMBEDDED_LIBSECP256K1
+ check-local:
+ @echo "Running test/bitcoin-util-test.py..."
+ $(AM_V_at)srcdir=$(srcdir) PYTHONPATH=$(builddir)/test $(srcdir)/test/bitcoin-util-test.py
+ $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
++endif
+
+ %.json.h: %.json
+ @$(MKDIR_P) $(@D)
diff --git a/net-p2p/bitcoind/files/bitcoin.conf b/net-p2p/bitcoind/files/bitcoin.conf
new file mode 100644
index 000000000000..c6a55f3d9133
--- /dev/null
+++ b/net-p2p/bitcoind/files/bitcoin.conf
@@ -0,0 +1,8 @@
+# http://www.bitcoin.org/smf/index.php?topic=644.0
+#rpcuser=
+#rpcpassword=
+
+
+
+
+
diff --git a/net-p2p/bitcoind/files/bitcoin.confd b/net-p2p/bitcoind/files/bitcoin.confd
new file mode 100644
index 000000000000..7c0868c3f535
--- /dev/null
+++ b/net-p2p/bitcoind/files/bitcoin.confd
@@ -0,0 +1,10 @@
+# Config file for /etc/init.d/bitcoin
+
+# owner of bitcoind process (don't change, must be existing)
+BITCOIN_USER="bitcoin"
+
+# See http://www.bitcoin.org/smf/index.php?topic=1063
+BITCOIN_OPTS="${BITCOIN_OPTS}"
+
+# nice level
+NICELEVEL="19"
diff --git a/net-p2p/bitcoind/files/bitcoin.initd-r1 b/net-p2p/bitcoind/files/bitcoin.initd-r1
new file mode 100644
index 000000000000..79ae6afec2e0
--- /dev/null
+++ b/net-p2p/bitcoind/files/bitcoin.initd-r1
@@ -0,0 +1,29 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+vardir="/var/lib/bitcoin"
+conffile="${vardir}/.bitcoin/bitcoin.conf"
+bitcoind_user="${BITCOIN_USER:-nobody:nobody}"
+
+description="Bitcoin crypto-currency wallet for automated services"
+pidfile="/run/${SVCNAME}.pid"
+command="/usr/bin/bitcoind"
+command_args="${BITCOIN_OPTS}"
+command_background="true"
+start_stop_daemon_args="-u ${bitcoind_user} -e HOME=${vardir} -N ${NICELEVEL:-0} -w 2000"
+
+depend() {
+ need net
+}
+
+start_pre() {
+ checkpath -f -o ${bitcoind_user} -m 0400 ${conffile} || return 1
+
+ if ! grep -q '^rpcpassword=' "${conffile}"; then
+ eerror "Please edit `readlink -f ${conffile}`"
+ eerror "There must be at least a line assigning rpcpassword=something-secure"
+ return 1
+ fi
+}
diff --git a/net-p2p/bitcoind/files/bitcoind.logrotate b/net-p2p/bitcoind/files/bitcoind.logrotate
new file mode 100644
index 000000000000..36d8dc2b1344
--- /dev/null
+++ b/net-p2p/bitcoind/files/bitcoind.logrotate
@@ -0,0 +1,7 @@
+/var/lib/bitcoin/.bitcoin/debug.log {
+ weekly
+ sharedscripts
+ postrotate
+ killall -HUP bitcoind
+ endscript
+}
diff --git a/net-p2p/bitcoind/files/bitcoind.logrotate-r1 b/net-p2p/bitcoind/files/bitcoind.logrotate-r1
new file mode 100644
index 000000000000..f9a4702720ab
--- /dev/null
+++ b/net-p2p/bitcoind/files/bitcoind.logrotate-r1
@@ -0,0 +1,8 @@
+/var/lib/bitcoin/.bitcoin/debug.log {
+ missingok
+ weekly
+ sharedscripts
+ postrotate
+ killall -HUP bitcoind
+ endscript
+}
diff --git a/net-p2p/bitcoind/files/bitcoind.service b/net-p2p/bitcoind/files/bitcoind.service
new file mode 100644
index 000000000000..97747009294d
--- /dev/null
+++ b/net-p2p/bitcoind/files/bitcoind.service
@@ -0,0 +1,30 @@
+# It's not recommended to modify this file in-place, because it will be
+# overwritten during package upgrades. If you want to customize, the
+# best way is to create file
+# "/etc/systemd/system/bitcoind.service.d/*.conf"
+# containing your changes
+
+# For example, if you want to change some daemon and/or unit options,
+# create a file named
+# "/etc/systemd/system/bitcoind.service.d/myopts.conf"
+# containing:
+# [Service]
+# Environment="BITCOIN_OPTS=-debug -logtimestamps"
+# Nice=10
+# This will override the setting appearing below.
+
+# Note that almost all daemon options could be specified in
+# /etc/bitcoin/bitcoin.conf
+
+[Unit]
+Description=Bitcoin Daemon
+After=network.target
+
+[Service]
+User=bitcoin
+Environment=BITCOIN_OPTS=
+ExecStart=/usr/bin/bitcoind -daemon=0 $BITCOIN_OPTS
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-p2p/bitcoind/metadata.xml b/net-p2p/bitcoind/metadata.xml
new file mode 100644
index 000000000000..288a5b532901
--- /dev/null
+++ b/net-p2p/bitcoind/metadata.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>proxy-maintainers</herd>
+ <maintainer>
+ <email>blueness@gentoo.org</email>
+ <name>Anthony G. Basile</name>
+ </maintainer>
+ <maintainer>
+ <email>luke-jr+gentoobugs@utopios.org</email>
+ <name>Luke Dashjr</name>
+ </maintainer>
+ <use>
+ <flag name='bitcoin_policy_cltv'>Check LockTime Verify policy: Your node will recognise and assist OP_CHECKLOCKTIMEVERIFY (BIP65) transactions</flag>
+ <flag name='bitcoin_policy_cpfp'>Child-Pays-For-Parent policy: If you mine, you will give consideration to child transaction fees to pay for their parents</flag>
+ <flag name='bitcoin_policy_dcmp'>Data Carrier Multi-Push policy: Your node will assist transactions with multiple pushes in their data carrier (if any)</flag>
+ <flag name='bitcoin_policy_rbf'>Replace By Fee policy: Your node will preferentially mine and relay transactions paying the highest fee, regardless of receive order</flag>
+ <flag name='bitcoin_policy_spamfilter'>Enhanced spam filter policy: Notorious spammers will not be assisted by your node</flag>
+ <flag name='ljr'>Enable Luke Dashjr's patches</flag>
+ <flag name='logrotate'>Use app-admin/logrotate for rotating logs</flag>
+ <flag name='upnp'>Enable Universal Plug and Play</flag>
+ <flag name='wallet'>Enable wallet support</flag>
+ <flag name='xt'>Enable Mike Hearn's Bitcoin XT patches</flag>
+ <flag name='zeromq'>Report blocks and transactions via zeromq</flag>
+ </use>
+</pkgmetadata>