diff --git a/UPDATING b/UPDATING --- a/UPDATING +++ b/UPDATING @@ -5,6 +5,27 @@ 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 --- 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 --- 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 --- 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 @@ 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 @@ 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 @@ -110,10 +95,4 @@ .endif -regression-test: build - # To use this sucessfully, remove --without-daemon and --without-utils - # from CONFIGURE_ARGS above. - - @cd ${WRKSRC} && ${GMAKE} check - .include diff --git a/net-p2p/bitcoin/distinfo b/net-p2p/bitcoin/distinfo --- 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 --- /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 --- 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 - #include -+#include - - class ClientModel; -