summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Bowling <kbowling@FreeBSD.org>2025-05-09 20:31:15 -0700
committerKevin Bowling <kbowling@FreeBSD.org>2025-05-10 01:00:07 -0700
commit1813f80d00439fc904940b154e3fb5bb44cddd9f (patch)
treed554a48e4dcbe32a55056683c584e50a1be1c19f
parenttextproc/p5-Perl-MinimumVersion: update to 1.44 (diff)
net-p2p/bitcoin[-daemon,-utils]: Update to 29.0
IMPORTANT: 29.x is the last release series that will support the legacy BDB wallet format. We are already doing this awkwardly since the format is BDB 4.8 and we are building with BDB 5. This will be removed in 30.0 later this year. Instructions: https://github.com/bitcoin/bitcoin/blob/29.x/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets This release switches to CMake which results in a major refacoring of the port and underlying build. The result seems good, but please provide feedback if there are any unexpected changes or problems. This release dropped UPnP support due to security concerns. NAT-PMP is implemented as an alternative. Reviewed by: arrowd (previous revision) Differential Revision: https://reviews.freebsd.org/D50265
-rw-r--r--UPDATING21
-rw-r--r--net-p2p/bitcoin-daemon/Makefile29
-rw-r--r--net-p2p/bitcoin-utils/Makefile32
-rw-r--r--net-p2p/bitcoin/Makefile107
-rw-r--r--net-p2p/bitcoin/distinfo6
-rw-r--r--net-p2p/bitcoin/files/patch-CMakeLists.txt11
-rw-r--r--net-p2p/bitcoin/files/patch-src_qt_trafficgraphwidget.h10
7 files changed, 114 insertions, 102 deletions
diff --git a/UPDATING b/UPDATING
index 617d0f1646a9..c2183a0d2ac6 100644
--- a/UPDATING
+++ b/UPDATING
@@ -5,6 +5,27 @@ they are unavoidable.
You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.
+20250510:
+ AFFECTS: users of net-p2p/bitcoin and/or net-p2p/bitcoin-daemon
+ AUTHOR: kbowling@FreeBSD.org
+
+ 29.x is the last release series that will support the legacy BDB wallet
+ format. We are already doing this awkwardly since the format is BDB 4.8
+ and we are building with BDB 5. This will be removed in 30.0 later this
+ year.
+
+ You should upgrade your wallet now if you are still using a legacy wallet.
+
+ Instructions:
+ https://github.com/bitcoin/bitcoin/blob/29.x/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets
+
+ This release switches to CMake which results in a major refacoring of
+ the port and underlying build. The result seems good, but please
+ provide feedback if there are any unexpected changes or problems.
+
+ This release dropped UPnP support due to security concerns. NAT-PMP is
+ implemented as an alternative.
+
20250506:
AFFECTS: users of databases/postgresql* and other software using PostgreSQL to run
AUTHOR: kbowling@FreeBSD.org
diff --git a/net-p2p/bitcoin-daemon/Makefile b/net-p2p/bitcoin-daemon/Makefile
index 48b7037240c2..6d5b32515f90 100644
--- a/net-p2p/bitcoin-daemon/Makefile
+++ b/net-p2p/bitcoin-daemon/Makefile
@@ -1,27 +1,30 @@
-MASTERDIR= ${.CURDIR}/../bitcoin
PKGNAMESUFFIX= -daemon
COMMENT= Virtual Peer-to-Peer Currency (Daemon)
SLAVE_PORT= yes
-OPTIONS_DEFINE= DEBUG HARDENING TESTS UPNP WALLET ZMQ
-OPTIONS_DEFAULT= HARDENING UPNP WALLET ZMQ
+USE_RC_SUBR= bitcoind
+
+CMAKE_ARGS= -DBUILD_DAEMON=ON \
+ -DBUILD_CLI=OFF \
+ -DBUILD_GUI=OFF \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TX=OFF \
+ -DBUILD_UTIL=OFF \
+ -DBUILD_WALLET_TOOL=OFF
+
+MASTERDIR= ${.CURDIR}/../bitcoin
USERS= bitcoin
GROUPS= bitcoin
-CONFIGURE_ARGS= --with-daemon \
- --without-gui \
- --without-libs \
- --without-qrencode \
- --without-utils
-
-PLIST_FILES= bin/bitcoind \
- share/man/man1/bitcoind.1.gz \
- "@sample %%ETCDIR%%.conf.sample"
+PLIST_FILES= "@sample %%ETCDIR%%.conf.sample" \
+ bin/bitcoind \
+ share/man/man1/bitcoind.1.gz
-USE_RC_SUBR= bitcoind
+OPTIONS_DEFINE= DEBUG HARDENING TESTS WALLET ZMQ
+OPTIONS_DEFAULT= HARDENING WALLET ZMQ
post-install:
${INSTALL_DATA} ${FILESDIR}/bitcoin.conf ${STAGEDIR}${PREFIX}/etc/bitcoin.conf.sample
diff --git a/net-p2p/bitcoin-utils/Makefile b/net-p2p/bitcoin-utils/Makefile
index c9e58a91c339..2ea5b0eb7303 100644
--- a/net-p2p/bitcoin-utils/Makefile
+++ b/net-p2p/bitcoin-utils/Makefile
@@ -1,22 +1,30 @@
-MASTERDIR= ${.CURDIR}/../bitcoin
PKGNAMESUFFIX= -utils
COMMENT= Virtual Peer-to-Peer Currency (CLI and Utilities)
+
SLAVE_PORT= yes
-OPTIONS_DEFINE= DEBUG HARDENING TESTS
-OPTIONS_DEFAULT= HARDENING TESTS
+CMAKE_ARGS= -DBUILD_CLI=ON \
+ -DBUILD_TX=ON \
+ -DBUILD_UTIL=ON \
+ -DBUILD_DAEMON=OFF \
+ -DBUILD_GUI=OFF \
+ -DBUILD_SHARED_LIBS=OFF
-CONFIGURE_ARGS= --without-daemon \
- --without-gui \
- --without-libs \
- --without-qrencode \
- --without-miniupnpc \
- --with-utils \
- --disable-wallet
+MASTERDIR= ${.CURDIR}/../bitcoin
-PLIST_FILES= bin/bitcoin-cli bin/bitcoin-tx bin/bitcoin-util \
- share/man/man1/bitcoin-cli.1.gz share/man/man1/bitcoin-tx.1.gz \
+PLIST_FILES= bin/bitcoin-cli \
+ bin/bitcoin-tx \
+ bin/bitcoin-util \
+ share/man/man1/bitcoin-cli.1.gz \
+ share/man/man1/bitcoin-tx.1.gz \
share/man/man1/bitcoin-util.1.gz
+OPTIONS_DEFINE= DEBUG HARDENING TESTS WALLET
+OPTIONS_DEFAULT= HARDENING TESTS WALLET
+
+WALLET_CMAKE_BOOL+= ENABLE_WALLET_TOOL
+WALLET_PLIST_FILES+= bin/bitcoin-wallet \
+ share/man/man1/bitcoin-wallet.1.gz
+
.include "${MASTERDIR}/Makefile"
diff --git a/net-p2p/bitcoin/Makefile b/net-p2p/bitcoin/Makefile
index 30cc6a5930e4..76c1f2562dda 100644
--- a/net-p2p/bitcoin/Makefile
+++ b/net-p2p/bitcoin/Makefile
@@ -1,10 +1,10 @@
PORTNAME= bitcoin
-PORTVERSION= 28.1
-PORTREVISION= 1
+PORTVERSION= 29.0
CATEGORIES= net-p2p finance
MASTER_SITES= https://bitcoincore.org/bin/bitcoin-core-${PORTVERSION}/ \
LOCAL/swills:icon
-DISTFILES= ${DISTNAME}${EXTRACT_SUFX} bitcoin128.png:icon
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
+ bitcoin128.png:icon
DIST_SUBDIR= ${PORTNAME}
EXTRACT_ONLY= ${_DISTFILES:N*.png}
@@ -19,28 +19,31 @@ LICENSE= MIT
LIB_DEPENDS= libboost_date_time.so:devel/boost-libs \
libevent.so:devel/libevent
-USES= autoreconf compiler:c++20-lang cpe gmake libtool pkgconfig qt:5 shebangfix
-
-GNU_CONFIGURE= yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
-
SLAVE_PORT?= no
+USES= cmake compiler:c++20-lang cpe pkgconfig
.if defined(SLAVE_PORT) && ${SLAVE_PORT} == "no"
-USES+= desktop-file-utils
-USE_QT= core gui network widgets \
- buildtools:build linguisttools:build qmake:build
-
-BUILD_DEPENDS+= protoc:devel/protobuf
-LIB_DEPENDS+= libprotobuf.so:devel/protobuf
-
-TESTS_USE= QT=testlib
-TESTS_PLIST_FILES= bin/test_bitcoin-qt \
- bin/test_bitcoin
+USES+= desktop-file-utils qt:5
+USE_QT= core gui network widgets buildtools:build linguisttools:build \
+ qmake:build
.endif
+GH_ACCOUNT= bitcoin
-OPTIONS_DEFINE?= DBUS DEBUG HARDENING QRCODES TESTS UPNP WALLET ZMQ
-OPTIONS_DEFAULT?= DBUS HARDENING QRCODES UPNP WALLET ZMQ
+CMAKE_ARGS?= -DBUILD_GUI=ON \
+ -DBUILD_CLI=OFF \
+ -DBUILD_DAEMON=OFF \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TX=OFF \
+ -DBUILD_UTIL=OFF \
+ -DBUILD_WALLET_TOOL=OFF
+
+PLIST_FILES?= bin/bitcoin-qt \
+ share/applications/bitcoin-qt.desktop \
+ share/man/man1/bitcoin-qt.1.gz \
+ share/pixmaps/bitcoin128.png
+
+OPTIONS_DEFINE?= DBUS DEBUG HARDENING QRCODES TESTS WALLET ZMQ
+OPTIONS_DEFAULT?= DBUS HARDENING QRCODES WALLET ZMQ
OPTIONS_SUB= yes
HARDENING_DESC= Attempt to harden binaries (PIE for ASLR, NX Stack)
@@ -49,54 +52,36 @@ TESTS_DESC= Build test binary and unit tests
WALLET_DESC= Wallet Management Support
ZMQ_DESC= Block and transaction broadcasting with ZeroMQ
-DBUS_CONFIGURE_WITH= dbus
DBUS_USE= QT=dbus
+DBUS_CMAKE_BOOL= WITH_DBUS
-DEBUG_CONFIGURE_ENABLE= debug
-DEBUG_INSTALL_TARGET_OFF= install-strip
-
-HARDENING_CONFIGURE_ENABLE= hardening
-
-TESTS_CONFIGURE_ENABLE= tests bench
-.if defined(SLAVE_PORT) && ${SLAVE_PORT} == "yes"
-TESTS_PLIST_FILES= bin/test_bitcoin
-.endif
-TESTS_PLIST_FILES+= bin/bench_bitcoin
+DEBUG_CMAKE_ON= -DCMAKE_BUILD_TYPE=Debug
+DEBUG_CMAKE_OFF= -DCMAKE_BUILD_TYPE=Release
-UPNP_CONFIGURE_WITH= miniupnpc
-UPNP_LIB_DEPENDS= libminiupnpc.so:net/miniupnpc
-UPNP_CPPFLAGS= -I${LOCALBASE}/include
-UPNP_LIBS= -L${LOCALBASE}/lib
+HARDENING_CMAKE_BOOL= ENABLE_HARDENING
-QRCODES_CONFIGURE_WITH= qrencode
QRCODES_LIB_DEPENDS= libqrencode.so:graphics/libqrencode
+QRCODES_CMAKE_BOOL= WITH_QRENCODE
+
+.if defined(SLAVE_PORT) && ${SLAVE_PORT} == "no"
+TESTS_USE= QT=testlib
+.endif
+TESTS_CMAKE_BOOL= BUILD_BENCH BUILD_TESTS SECP256K1_BUILD_TESTS
+TESTS_PLIST_FILES= bin/bench_bitcoin \
+ bin/test_bitcoin
+.if defined(SLAVE_PORT) && ${SLAVE_PORT} == "no"
+TESTS_PLIST_FILES+= bin/test_bitcoin-qt
+.endif
-WALLET_CONFIGURE_OFF= --disable-wallet
-WALLET_CONFIGURE_ON= --enable-wallet \
- --with-incompatible-bdb \
- --with-sqlite=yes \
- BDB_CFLAGS=-I${BDB_INCLUDE_DIR} \
- BDB_LIBS="-L${BDB_LIB_DIR} \
- -Wl,-rpath=${BDB_LIB_DIR} \
- -l${BDB_LIB_CXX_NAME}"
WALLET_USES= bdb:5+ sqlite:3
+WALLET_CMAKE_ON= -DENABLE_WALLET=ON \
+ -DWARN_INCOMPATIBLE_BDB=OFF \
+ -DWITH_BDB=ON
+WALLET_CMAKE_OFF= -DENABLE_WALLET=OFF
-ZMQ_CONFIGURE_ENABLE= zmq
ZMQ_BUILD_DEPENDS= libzmq4>0:net/libzmq4
ZMQ_RUN_DEPENDS= libzmq4>0:net/libzmq4
-
-GH_ACCOUNT= bitcoin
-
-CONFIGURE_ARGS?= --without-libs \
- --with-gui=qt5 \
- --without-daemon \
- --without-utils
-
-CONFIGURE_ENV= OBJCXX="${CXX}" OBJCXXFLAGS="${CXXFLAGS}"
-MAKE_ENV+= V=1
-
-PLIST_FILES?= bin/bitcoin-qt share/man/man1/bitcoin-qt.1.gz \
- share/applications/bitcoin-qt.desktop share/pixmaps/bitcoin128.png
+ZMQ_CMAKE_BOOL= WITH_ZMQ
.include <bsd.port.pre.mk>
@@ -110,10 +95,4 @@ post-install:
.endif
-regression-test: build
- # To use this sucessfully, remove --without-daemon and --without-utils
- # from CONFIGURE_ARGS above.
-
- @cd ${WRKSRC} && ${GMAKE} check
-
.include <bsd.port.post.mk>
diff --git a/net-p2p/bitcoin/distinfo b/net-p2p/bitcoin/distinfo
index 0754292984f4..35bb005936ac 100644
--- a/net-p2p/bitcoin/distinfo
+++ b/net-p2p/bitcoin/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1744000680
-SHA256 (bitcoin/bitcoin-28.1.tar.gz) = c5ae2dd041c7f9d9b7c722490ba5a9d624f7e9a089c67090615e1ba4ad0883ba
-SIZE (bitcoin/bitcoin-28.1.tar.gz) = 12596371
+TIMESTAMP = 1745116296
+SHA256 (bitcoin/bitcoin-29.0.tar.gz) = 882c782c34a3bf2eacd1fae5cdc58b35b869883512f197f7d6dc8f195decfdaa
+SIZE (bitcoin/bitcoin-29.0.tar.gz) = 12935061
SHA256 (bitcoin/bitcoin128.png) = ad880c8459ecfdb96abe6a4689af06bdd27906e0edcd39d0915482f2da91e722
SIZE (bitcoin/bitcoin128.png) = 10639
diff --git a/net-p2p/bitcoin/files/patch-CMakeLists.txt b/net-p2p/bitcoin/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..7c47fb838701
--- /dev/null
+++ b/net-p2p/bitcoin/files/patch-CMakeLists.txt
@@ -0,0 +1,11 @@
+--- CMakeLists.txt.orig 2025-05-09 20:40:59 UTC
++++ CMakeLists.txt
+@@ -153,7 +153,7 @@ endif()
+ set(USE_QRCODE TRUE)
+ endif()
+
+-cmake_dependent_option(WITH_DBUS "Enable DBus support." ON "CMAKE_SYSTEM_NAME STREQUAL \"Linux\" AND BUILD_GUI" OFF)
++cmake_dependent_option(WITH_DBUS "Enable DBus support." ON "CMAKE_SYSTEM_NAME STREQUAL \"FreeBSD\" AND BUILD_GUI" OFF)
+
+ option(WITH_MULTIPROCESS "Build multiprocess bitcoin-node and bitcoin-gui executables in addition to monolithic bitcoind and bitcoin-qt executables. Requires libmultiprocess library. Experimental." OFF)
+ if(WITH_MULTIPROCESS)
diff --git a/net-p2p/bitcoin/files/patch-src_qt_trafficgraphwidget.h b/net-p2p/bitcoin/files/patch-src_qt_trafficgraphwidget.h
deleted file mode 100644
index 94030b4e20bb..000000000000
--- a/net-p2p/bitcoin/files/patch-src_qt_trafficgraphwidget.h
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/qt/trafficgraphwidget.h.orig 2020-05-18 18:05:29 UTC
-+++ src/qt/trafficgraphwidget.h
-@@ -7,6 +7,7 @@
-
- #include <QWidget>
- #include <QQueue>
-+#include <QPainterPath>
-
- class ClientModel;
-