summaryrefslogtreecommitdiff
path: root/net-p2p/bitcoin-cli
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-01-05 06:08:15 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-01-05 06:08:15 +0000
commit083bdfbef9bc532b72cf116591025916eebaf676 (patch)
tree04da8a6f58a6ef6f05ebafc0a86b3a27c00ba283 /net-p2p/bitcoin-cli
parente84469d1a99031578172f7c064945ba5114c5263 (diff)
gentoo auto-resync : 05:01:2023 - 06:08:15
Diffstat (limited to 'net-p2p/bitcoin-cli')
-rw-r--r--net-p2p/bitcoin-cli/Manifest3
-rw-r--r--net-p2p/bitcoin-cli/bitcoin-cli-24.0.1.ebuild77
-rw-r--r--net-p2p/bitcoin-cli/files/24.0.1-syslibs.patch281
3 files changed, 361 insertions, 0 deletions
diff --git a/net-p2p/bitcoin-cli/Manifest b/net-p2p/bitcoin-cli/Manifest
index 7bc2e5f14d59..e0b809ea94ec 100644
--- a/net-p2p/bitcoin-cli/Manifest
+++ b/net-p2p/bitcoin-cli/Manifest
@@ -1,7 +1,10 @@
+AUX 24.0.1-syslibs.patch 9037 BLAKE2B fa634a8f18d1f1c32d1c3cb18bdfcafc89838a7f5b3a075a40ad3354d1253f1d637351d2661475eb86110db470a7b29c9cfb6266a7f61623c0865939c9e74453 SHA512 fcf8114174e69c5385058b190fa2c0b0ef105869d5d6a40a3cc6bb8e8ef1518cb8bc1fb7cc3a7ec28f361d91f66e4253420c2b50a0004a2dc0978910254cae3d
DIST bitcoin-0.21.0.knots20210130.patches.tar.xz 505040 BLAKE2B c8999de4158b8781bba6ad014ae14859f1e0bab3080c59a18910cf7447eb56da4b17a0e1843fdd3669d22636df9e4ddcc4526e4293bfd86dc884983a29a5f76c SHA512 7ee27da3d26be0e93ecddff7bb21ef1746bcdb07f9a2b0ea48065367b4c44391e974e04a21e511c05fca8f55971ab8e3c3ac01a3775cc52a537d9e10966d9871
DIST bitcoin-22.0.knots20211108.patches.tar.xz 1318256 BLAKE2B d6e56bc0ca1d706e99e7f42d8f335f016335b6bf3637c733d993696872f0a4c655cc58fc0394dfdf9916e13f0d7fbdcebf25fbdc9a165227e3c59133033644c0 SHA512 daab5860b7c7e137b6bf350cdc153e6e19172e49935640d1f6fe1f1be1e4df805b1db7fd30b0f95a560106956adab70cc6282fe933ae9de153cb971dd280f83d
+DIST bitcoin-24.0.1.tar.gz 11412628 BLAKE2B 2a8c83aecd12d8d40305d78ede1f389884ee62cfe4af39a9b416b8887a595f3393d599ebe9ddeb576bba5896923feb7ee45ba32d7d4cb0ce9e6d0ef39ecf83c7 SHA512 de1ddb543429f70b0b55a46500e0bc4807cca1b1655a28f8ab186d6f6e620f8cf82420bbdf412976ffed9bc6d742926b19933429c734edaf7430a4f8c37e1685
DIST bitcoin-v0.21.0.tar.gz 7533957 BLAKE2B 01247cbb9fca2381a8c08ab1c88c479c640963caef22e4207aab46b05813dbf2a5286ac9e98132fb34db0e9ac6c18c79e45a89de166f5c6d480d8ac6e14ecca2 SHA512 c58187996932b0151432a65885b7e8a7b216fb1ab0576fb7d4b5e9620d957594b05e181153e2e0e50bcd5ce764861ec11019ffbb1095d3e704f441e61ac6a04f
DIST bitcoin-v22.0.tar.gz 7977783 BLAKE2B ba212037bc8efcfbbbf6340c48ed886c4a5aa93e4a34097eafea39734a6f4e25fa6b174f894655f63c504380d8761657771795bfcc641018bf1f1661deef9321 SHA512 1b4b17360e97f390ae678adb7a239c359d3a1288799710683e26f09fc53341b6fca3211465fa3e4fdee37324d85ec1a31ffd1a3714e969df13441f755fa4b7ad
EBUILD bitcoin-cli-0.21.0.ebuild 2392 BLAKE2B 814a5a4e662a5d6f4f382535b57137404361a460f8d88130677d574c7ce54926b147a5d3cba2775393f10a41a826b77b3ea612ff599dace61bc1c2eb07511ce7 SHA512 078f07ea656c7db87b4266d188c5394cf45266c40a5ee63fb070b7a3abfd83366df5ca18549ca3b2af5261cdce1cb208a8fc8a232277c7b8e394fc1b6889f95f
EBUILD bitcoin-cli-22.0.ebuild 2596 BLAKE2B 05c1d22d1b33fdabb77b289591fb8b8fa85f520a8361dbcc648193f476cbd29d3e976d2245b075bb1c62be362d394cfa5bd3ad7e0ac3afae7cefc0787e86a57b SHA512 9522cf5e9543902e609b8022ae657b489014c3d98f6065a0348f0c38aeb0389d12908ff38482cb469c62a8a549419aa687844d28cb2a221ebea03786bb25c761
+EBUILD bitcoin-cli-24.0.1.ebuild 1425 BLAKE2B 6128dab65d8dea1ec8265fed55e0defb4ce11652cc6bdddb422d847b0d0389cfbdc96e2e99e63786d6aa90e652a1a065449cef87c028bea1dd8e16a8e41071b0 SHA512 4f82520d3a14c7118c212cd189132217d506a712c8e886e4ff96d76a950dc519077354430f3012eee7fa08643b45bfb2b5389d42fc7ecceb2e002e9ddfa3ada9
MISC metadata.xml 794 BLAKE2B d7258cb6e38b7f95f72212b3d67f2a6c4f69b8a94a55d46189b970bca6c56ba23ec44b1c36a6b4bce19ba65be0b8879fd8240a48324c296d72d0d87e52e41568 SHA512 ef417ee4a492db03efa50d88b16b35a1b1768b7b04aaecd8676539572f25b96a427caab6dae9f5568241e5f1eda06159bd9a52b12a9002c0611b349ad2656470
diff --git a/net-p2p/bitcoin-cli/bitcoin-cli-24.0.1.ebuild b/net-p2p/bitcoin-cli/bitcoin-cli-24.0.1.ebuild
new file mode 100644
index 000000000000..cbf563fcda34
--- /dev/null
+++ b/net-p2p/bitcoin-cli/bitcoin-cli-24.0.1.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools bash-completion-r1
+
+DESCRIPTION="Command-line JSON-RPC client specifically for interfacing with bitcoind"
+HOMEPAGE="https://bitcoincore.org/"
+SRC_URI="
+ https://bitcoincore.org/bin/bitcoin-core-${PV}/${P/-cli}.tar.gz
+"
+S="${WORKDIR}"/${P/-cli}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ dev-libs/boost:=
+ dev-libs/libevent:=
+"
+DEPEND="${RDEPEND}"
+
+DOCS=( doc/release-notes.md )
+
+PATCHES=(
+ "${FILESDIR}"/24.0.1-syslibs.patch
+)
+
+pkg_pretend() {
+ elog "You are building ${PN} from Bitcoin Core."
+ elog "For more information, see:"
+ elog "https://bitcoincore.org/en/releases/${PV}/"
+}
+
+src_prepare() {
+ default
+
+ eautoreconf
+
+ rm -r src/leveldb src/secp256k1 || die
+}
+
+src_configure() {
+ local myeconfargs=(
+ --disable-asm
+ --without-qtdbus
+ --disable-ebpf
+ --without-natpmp
+ --without-qrencode
+ --without-miniupnpc
+ --disable-tests
+ --disable-wallet
+ --disable-zmq
+ --enable-util-cli
+ --disable-util-tx
+ --disable-util-util
+ --disable-util-wallet
+ --disable-bench
+ --without-libs
+ --without-daemon
+ --without-gui
+ --disable-fuzz
+ --disable-fuzz-binary
+ --disable-ccache
+ --disable-static
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ newbashcomp contrib/bitcoin-cli.bash-completion ${PN}
+}
diff --git a/net-p2p/bitcoin-cli/files/24.0.1-syslibs.patch b/net-p2p/bitcoin-cli/files/24.0.1-syslibs.patch
new file mode 100644
index 000000000000..00404a2ff021
--- /dev/null
+++ b/net-p2p/bitcoin-cli/files/24.0.1-syslibs.patch
@@ -0,0 +1,281 @@
+Originally based on 22.0-fix_build_without_leveldb.patch.
+
+- Allow system libsecp256k1
+- Allow system leveldb
+- Abort if runtime leveldb != compiled-against leveldb
+- Handle berkdb support being disabled better
+--- a/configure.ac
++++ b/configure.ac
+@@ -1362,6 +1362,23 @@ if test "$enable_fuzz_binary" = "yes"; then
+ CHECK_RUNTIME_LIB
+ fi
+
++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 "$enable_wallet" != "no"; then
+ dnl Check for libdb_cxx only if wallet enabled
+ if test "$use_bdb" != "no"; then
+@@ -1413,11 +1430,76 @@ if test "$use_usdt" != "no"; then
+ fi
+ AM_CONDITIONAL([ENABLE_USDT_TRACEPOINTS], [test "$use_usdt" = "yes"])
+
++build_leveldb=yes
+ if test "$build_bitcoin_cli$build_bitcoin_tx$build_bitcoin_util$build_bitcoind$bitcoin_enable_qt$use_bench$use_tests" = "nonononononono"; then
+ use_upnp=no
+ use_natpmp=no
+ use_zmq=no
++ build_leveldb=no
++fi
++
++if test x$build_leveldb = xno; then
++ system_leveldb=no
++fi
++dnl Check for leveldb, only if explicitly requested
++if test x$system_leveldb != xno; then
++ build_leveldb=no
++ LEVELDB_CPPFLAGS=
++ AC_CHECK_LIB([leveldb],[main],[
++ LIBLEVELDB=-lleveldb
++ ],[
++ AC_MSG_ERROR([leveldb library not found; using --with-system-leveldb is not supported anyway])
++ ])
++ 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])
++ ])
++ ])
++
++ AC_MSG_CHECKING([library containing leveldb::NewMemEnv])
++ TEMP_LIBS="$LIBS"
++ TEMP_CPPFLAGS="$CPPFLAGS"
++ CPPFLAGS="$CPPFLAGS $LEVELDB_CPPFLAGS"
++ for searchlib in "" "-lmemenv" ERR; do
++ if test "x$searchlib" = "xERR"; then
++ AC_MSG_RESULT([no])
++ AC_MSG_ERROR([LevelDB's memenv helper not found; using --with-system-leveldb is not supported anyway])
++ fi
++ searchlib="$searchlib $LIBLEVELDB"
++ LIBS="$searchlib $TEMP_LIBS"
++ AC_LINK_IFELSE([AC_LANG_SOURCE([
++ #include <leveldb/env.h>
++ #include <leveldb/helpers/memenv.h>
++
++ int main() {
++ leveldb::Env *myenv = leveldb::NewMemEnv(leveldb::Env::Default());
++ delete myenv;
++ }
++ ])],[
++ AC_MSG_RESULT([$searchlib])
++ LIBMEMENV="$searchlib"
++ break
++ ])
++ done
++ LIBS="$TEMP_LIBS"
++ CPPFLAGS="$TEMP_CPPFLAGS"
+ fi
++AM_CONDITIONAL([EMBEDDED_LEVELDB],[test x$build_leveldb = xyes])
++AC_SUBST(LEVELDB_CPPFLAGS)
++AC_SUBST(LIBLEVELDB)
++AC_SUBST(LIBMEMENV)
++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]
++)
+
+ dnl Check for libminiupnpc (optional)
+ if test "$use_upnp" != "no"; then
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -23,7 +23,7 @@ noinst_PROGRAMS =
+ TESTS =
+ BENCHMARKS =
+
+-BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) -I$(srcdir)/secp256k1/include -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) $(LEVELDB_CPPFLAGS)
++BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) $(libsecp256k1_CFLAGS) -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
+
+ LIBBITCOIN_NODE=libbitcoin_node.a
+ LIBBITCOIN_COMMON=libbitcoin_common.a
+@@ -32,7 +32,11 @@ LIBBITCOIN_CLI=libbitcoin_cli.a
+ LIBBITCOIN_UTIL=libbitcoin_util.a
+ LIBBITCOIN_CRYPTO_BASE=crypto/libbitcoin_crypto_base.la
+ LIBBITCOINQT=qt/libbitcoinqt.a
++if EMBEDDED_LIBSECP256K1
+ LIBSECP256K1=secp256k1/libsecp256k1.la
++else
++LIBSECP256K1=$(libsecp256k1_LIBS)
++endif
+
+ if ENABLE_ZMQ
+ LIBBITCOIN_ZMQ=libbitcoin_zmq.a
+@@ -67,8 +71,10 @@ LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_ARM_SHANI)
+ endif
+ noinst_LTLIBRARIES += $(LIBBITCOIN_CRYPTO)
+
++if EMBEDDED_LIBSECP256K1
+ $(LIBSECP256K1): $(wildcard secp256k1/src/*.h) $(wildcard secp256k1/src/*.c) $(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:
+@@ -1080,7 +1086,9 @@ endif
+ include Makefile.minisketch.include
+
+ include Makefile.crc32c.include
++if EMBEDDED_LEVELDB
+ include Makefile.leveldb.include
++endif
+
+ include Makefile.test_util.include
+ include Makefile.test_fuzz.include
+--- a/src/Makefile.test.include
++++ b/src/Makefile.test.include
+@@ -377,8 +377,9 @@ if ENABLE_BENCH
+ $(BENCH_BINARY) --sanity-check > /dev/null
+ endif
+ endif
++if EMBEDDED_LIBSECP256K1
+ $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
+-
++endif
+ if ENABLE_TESTS
+ UNIVALUE_TESTS = univalue/test/object univalue/test/unitester
+ noinst_PROGRAMS += $(UNIVALUE_TESTS)
+--- a/src/dbwrapper.cpp
++++ b/src/dbwrapper.cpp
+@@ -7,26 +7,45 @@
+ #include <fs.h>
+ #include <logging.h>
+ #include <random.h>
++#include <node/interface_ui.h>
+ #include <tinyformat.h>
+ #include <util/strencodings.h>
+ #include <util/system.h>
++#include <util/translation.h>
+
+ #include <algorithm>
+ #include <cassert>
+ #include <cstdarg>
+ #include <cstdint>
+ #include <cstdio>
++#include <leveldb/c.h>
+ #include <leveldb/cache.h>
+ #include <leveldb/db.h>
+ #include <leveldb/env.h>
+ #include <leveldb/filter_policy.h>
+-#include <leveldb/helpers/memenv/memenv.h>
++#include <leveldb/helpers/memenv.h>
+ #include <leveldb/iterator.h>
+ #include <leveldb/options.h>
+ #include <leveldb/status.h>
+ #include <memory>
+ #include <optional>
+
++bool dbwrapper_SanityCheck()
++{
++ unsigned long header_version = (leveldb::kMajorVersion << 16) | leveldb::kMinorVersion;
++ unsigned long library_version = (leveldb_major_version() << 16) | leveldb_minor_version();
++
++ if (header_version != library_version) {
++ InitError(Untranslated(strprintf("Compiled with LevelDB %d.%d, but linked with LevelDB %d.%d (incompatible).",
++ leveldb::kMajorVersion, leveldb::kMinorVersion,
++ leveldb_major_version(), leveldb_minor_version()
++ )));
++ return false;
++ }
++
++ return true;
++}
++
+ class CBitcoinLevelDBLogger : public leveldb::Logger {
+ public:
+ // This code is adapted from posix_logger.h, which is why it is using vsprintf.
+--- a/src/dbwrapper.h
++++ b/src/dbwrapper.h
+@@ -31,6 +31,8 @@ class Env;
+ static const size_t DBWRAPPER_PREALLOC_KEY_SIZE = 64;
+ static const size_t DBWRAPPER_PREALLOC_VALUE_SIZE = 1024;
+
++bool dbwrapper_SanityCheck();
++
+ class dbwrapper_error : public std::runtime_error
+ {
+ public:
+--- a/src/kernel/checks.cpp
++++ b/src/kernel/checks.cpp
+@@ -3,9 +3,10 @@
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+ #include <kernel/checks.h>
+-
++#include <dbwrapper.h>
+ #include <key.h>
+ #include <random.h>
++#include <node/interface_ui.h>
+ #include <util/time.h>
+ #include <util/translation.h>
+
+@@ -15,6 +16,10 @@ namespace kernel {
+
+ std::optional<bilingual_str> SanityChecks(const Context&)
+ {
++ if (!dbwrapper_SanityCheck()) {
++ return Untranslated("Database sanity check failure. Aborting.");
++ }
++
+ if (!ECC_InitSanityCheck()) {
+ return Untranslated("Elliptic curve cryptography sanity check failure. Aborting.");
+ }
+--- a/src/qt/createwalletdialog.cpp
++++ b/src/qt/createwalletdialog.cpp
+@@ -12,6 +12,7 @@
+
+ #include <qt/guiutil.h>
+
++#include <QMessageBox>
+ #include <QPushButton>
+
+ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
+@@ -94,9 +95,16 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
+ ui->external_signer_checkbox->setChecked(false);
+ #endif
+
+-#ifndef USE_BDB
+- ui->descriptor_checkbox->setEnabled(false);
+- ui->descriptor_checkbox->setChecked(true);
++#ifdef USE_BDB
++ connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
++#else
++ connect(ui->buttonBox, &QDialogButtonBox::accepted, [this]() {
++ if (!this->isDescriptorWalletChecked()) {
++ QMessageBox::critical(this, tr("Cannot create wallet"), tr("This build was compiled without BDB support, so only experimental descriptor wallets are supported."));
++ return;
++ }
++ this->accept();
++ });
+ #endif
+
+ #ifndef ENABLE_EXTERNAL_SIGNER