aboutsummaryrefslogtreecommitdiffstats
path: root/net-p2p
diff options
context:
space:
mode:
authorvd <vd@FreeBSD.org>2018-03-30 01:52:54 +0800
committervd <vd@FreeBSD.org>2018-03-30 01:52:54 +0800
commit68892c74876772806eaca3a9ecc1308e9459acea (patch)
treee213787bfe03f03f92c06faa67e83c1ed85cbf8c /net-p2p
parentee90e60ee187452ec001c80503183a4c7993e9be (diff)
downloadfreebsd-ports-gnome-68892c74876772806eaca3a9ecc1308e9459acea.tar.gz
freebsd-ports-gnome-68892c74876772806eaca3a9ecc1308e9459acea.tar.zst
freebsd-ports-gnome-68892c74876772806eaca3a9ecc1308e9459acea.zip
net-p2p/bitcoin: Add an option to use newer BDB
Make the new option the default, so that when the port is recompiled it will link against BDB 5.x or 6.x (whichever is the default in the system). This will keep old wallet files readable and will not automatically convert them in an incompatible with BDB 4.8 way. Newly created wallet files will not be readable by Bitcoin Core versions linked with BDB 4.8. Next thing to consider is to remove the option to link against BDB 4.8 as this will remove the net-p2p/bitcoin -> databases/db48 dependency and will make it possible to ditch the latter, which is scheduled for removal from the ports collection on Apr 30 2018. PR: 226527 Approved by: kbowling (maintainer), antoine
Diffstat (limited to 'net-p2p')
-rw-r--r--net-p2p/bitcoin-daemon/Makefile6
-rw-r--r--net-p2p/bitcoin-utils/Makefile3
-rw-r--r--net-p2p/bitcoin/Makefile32
-rw-r--r--net-p2p/bitcoin/pkg-help18
4 files changed, 49 insertions, 10 deletions
diff --git a/net-p2p/bitcoin-daemon/Makefile b/net-p2p/bitcoin-daemon/Makefile
index 15fc32728a79..fecbd84c8df2 100644
--- a/net-p2p/bitcoin-daemon/Makefile
+++ b/net-p2p/bitcoin-daemon/Makefile
@@ -10,8 +10,10 @@ SLAVE_PORT= yes
NOT_FOR_ARCHS= powerpc powerpc64 sparc64
NOT_FOR_ARCHS_REASON= does not support big-endian architectures
-OPTIONS_DEFINE= DEBUG HARDENING TESTS UPNP WALLET ZMQ
-OPTIONS_DEFAULT= HARDENING UPNP WALLET
+OPTIONS_DEFINE= DEBUG HARDENING TESTS UPNP ZMQ
+# WALLET_BDBMODERN is a choice for WALLET, introduced via OPTIONS_RADIO=WALLET
+# from ${MASTERDIR}/Makefile
+OPTIONS_DEFAULT= HARDENING UPNP WALLET_BDBMODERN
USERS= bitcoin
GROUPS= bitcoin
diff --git a/net-p2p/bitcoin-utils/Makefile b/net-p2p/bitcoin-utils/Makefile
index 3830afccd4fe..801248cf1659 100644
--- a/net-p2p/bitcoin-utils/Makefile
+++ b/net-p2p/bitcoin-utils/Makefile
@@ -10,8 +10,11 @@ NOT_FOR_ARCHS= powerpc powerpc64 sparc64
NOT_FOR_ARCHS_REASON= does not support big-endian architectures
OPTIONS_DEFINE= DEBUG HARDENING TESTS
+OPTIONS_RADIO=
OPTIONS_DEFAULT= HARDENING TESTS
+PKGHELP= ${NONEXISTENT}
+
CONFIGURE_ARGS= --without-daemon \
--without-gui \
--without-libs \
diff --git a/net-p2p/bitcoin/Makefile b/net-p2p/bitcoin/Makefile
index af38d71a3823..ea2dac11a769 100644
--- a/net-p2p/bitcoin/Makefile
+++ b/net-p2p/bitcoin/Makefile
@@ -4,7 +4,7 @@
PORTNAME= bitcoin
PORTVERSION= 0.16.0
DISTVERSIONPREFIX= v
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= net-p2p finance
MAINTAINER= kbowling@FreeBSD.org
@@ -36,14 +36,18 @@ TESTS_PLIST_FILES= bin/test_bitcoin-qt \
bin/test_bitcoin
.endif
-OPTIONS_DEFINE?= DBUS DEBUG HARDENING QRCODES TESTS UPNP WALLET ZMQ
-OPTIONS_DEFAULT?= DBUS HARDENING QRCODES UPNP WALLET
+OPTIONS_DEFINE?= DBUS DEBUG HARDENING QRCODES TESTS UPNP ZMQ
+OPTIONS_RADIO?= WALLET
+OPTIONS_RADIO_WALLET?= WALLET_BDB48 WALLET_BDBMODERN
+OPTIONS_DEFAULT?= DBUS HARDENING QRCODES UPNP WALLET_BDBMODERN
OPTIONS_SUB= yes
HARDENING_DESC= Attempt to harden binaries (PIE for ASLR, NX Stack)
QRCODES_DESC= Display QR Codes
TESTS_DESC= Build test binary and unit tests
WALLET_DESC= Wallet Management Support
+WALLET_BDB48_DESC= Wallet using BDB 4.8
+WALLET_BDBMODERN_DESC= Wallet using modern BDB 5.x or 6.x
ZMQ_DESC= Block and transaction broadcasting with ZeroMQ
DBUS_CONFIGURE_WITH= dbus
@@ -68,11 +72,6 @@ UPNP_LIBS= -L${LOCALBASE}/lib
QRCODES_CONFIGURE_WITH= qrencode
QRCODES_LIB_DEPENDS= libqrencode.so:graphics/libqrencode
-WALLET_CONFIGURE_ENABLE= wallet
-WALLET_CXXFLAGS= -I${BDB_INCLUDE_DIR}
-WALLET_LIBS= -L${BDB_LIB_DIR}
-WALLET_USES= bdb:48
-
ZMQ_CONFIGURE_ENABLE= zmq
ZMQ_BUILD_DEPENDS= libzmq4>0:net/libzmq4
ZMQ_RUN_DEPENDS= libzmq4>0:net/libzmq4
@@ -92,8 +91,25 @@ MAKE_ENV+= V=1
PLIST_FILES?= bin/bitcoin-qt man/man1/bitcoin-qt.1.gz \
share/applications/bitcoin-qt.desktop share/pixmaps/bitcoin128.png
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MWALLET_BDB48}
+CONFIGURE_ARGS+= --enable-wallet
+USES+= bdb:48
+.elif ${PORT_OPTIONS:MWALLET_BDBMODERN}
+CONFIGURE_ARGS+= --enable-wallet --with-incompatible-bdb
+USES+= bdb:5+
+.else
+CONFIGURE_ARGS+= --disable-wallet
+.endif
+
.include <bsd.port.pre.mk>
+.if ${PORT_OPTIONS:MWALLET_BDB48} || ${PORT_OPTIONS:MWALLET_BDBMODERN}
+CPPFLAGS+= -I${BDB_INCLUDE_DIR}
+LIBS+= -L${BDB_LIB_DIR}
+.endif
+
.if ${OSVERSION} < 1100000
CONFIGURE_ARGS+=--disable-asm
.endif
diff --git a/net-p2p/bitcoin/pkg-help b/net-p2p/bitcoin/pkg-help
new file mode 100644
index 000000000000..e73a63038c07
--- /dev/null
+++ b/net-p2p/bitcoin/pkg-help
@@ -0,0 +1,18 @@
+The wallet is stored in a Berkeley database file (BDB) (usually
+~/.bitcoin/wallets/wallet.dat).
+
+Bitcoin Core can use either BDB 4.8, 5.x or 6.x to create and access the
+wallet file.
+
+Wallets created using BDB 4.8 are also accessible by BDB 5.x and 6.x.
+
+Wallets created using BDB 5.x or 6.x are not accessible by BDB 4.8.
+
+Opening and using a wallet created by 4.8 with a higher major version (5.x
+or 6.x) does not change its format, so it will still be accessible to 4.8
+afterwards. But encrypting an unencrypted wallet recreates it, so encrypting
+a 4.8 wallet with Bitcoin Core linked against BDB 5.x or 6.x will render it
+unreadable for Bitcoin Core linked against BDB 4.8.
+
+If you do not plan on copying the wallet file to another machine that uses
+BDB 4.8 then it is recommended to use the modern versions of BDB 5.x or 6.x.