Update to Berkeley DB 5.3
Old BerkeleyDB version such as 5.1 are being removed from most Linux distribution. See: https://bugs.gentoo.org/792222 See: https://fedoraproject.org/wiki/Changes/Libdb_deprecated
This commit is contained in:
parent
4c93783ab6
commit
1a6738f920
|
@ -1,11 +1,11 @@
|
||||||
AC_DEFUN([BITCOIN_FIND_BDB51],[
|
AC_DEFUN([BITCOIN_FIND_BDB53],[
|
||||||
AC_MSG_CHECKING([for Berkeley DB C++ headers])
|
AC_MSG_CHECKING([for Berkeley DB C++ headers])
|
||||||
BDB_CPPFLAGS=
|
BDB_CPPFLAGS=
|
||||||
BDB_LIBS=
|
BDB_LIBS=
|
||||||
bdbpath=X
|
bdbpath=X
|
||||||
bdb51path=X
|
bdb53path=X
|
||||||
bdbdirlist=
|
bdbdirlist=
|
||||||
for _vn in 5.1 51 5 ''; do
|
for _vn in 5.3 53 5 ''; do
|
||||||
for _pfx in b lib ''; do
|
for _pfx in b lib ''; do
|
||||||
bdbdirlist="$bdbdirlist ${_pfx}db${_vn}"
|
bdbdirlist="$bdbdirlist ${_pfx}db${_vn}"
|
||||||
done
|
done
|
||||||
|
@ -15,8 +15,8 @@ AC_DEFUN([BITCOIN_FIND_BDB51],[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||||
#include <${searchpath}db_cxx.h>
|
#include <${searchpath}db_cxx.h>
|
||||||
]],[[
|
]],[[
|
||||||
#if !((DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR > 5)
|
#if !((DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR >= 3) || DB_VERSION_MAJOR > 5)
|
||||||
#error "failed to find bdb 5.1+"
|
#error "failed to find bdb 5.3+"
|
||||||
#endif
|
#endif
|
||||||
]])],[
|
]])],[
|
||||||
if test "x$bdbpath" = "xX"; then
|
if test "x$bdbpath" = "xX"; then
|
||||||
|
@ -28,32 +28,32 @@ AC_DEFUN([BITCOIN_FIND_BDB51],[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||||
#include <${searchpath}db_cxx.h>
|
#include <${searchpath}db_cxx.h>
|
||||||
]],[[
|
]],[[
|
||||||
#if !(DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR == 1)
|
#if !(DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR == 3)
|
||||||
#error "failed to find bdb 5.1"
|
#error "failed to find bdb 5.3"
|
||||||
#endif
|
#endif
|
||||||
]])],[
|
]])],[
|
||||||
bdb51path="${searchpath}"
|
bdb53path="${searchpath}"
|
||||||
break
|
break
|
||||||
],[])
|
],[])
|
||||||
done
|
done
|
||||||
if test "x$bdbpath" = "xX"; then
|
if test "x$bdbpath" = "xX"; then
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
AC_MSG_ERROR([libdb_cxx headers missing, Dogecoin Core requires this library for wallet functionality (--disable-wallet to disable wallet functionality)])
|
AC_MSG_ERROR([libdb_cxx headers missing, Dogecoin Core requires this library for wallet functionality (--disable-wallet to disable wallet functionality)])
|
||||||
elif test "x$bdb51path" = "xX"; then
|
elif test "x$bdb53path" = "xX"; then
|
||||||
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdbpath}],db_cxx)
|
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdbpath}],db_cxx)
|
||||||
AC_ARG_WITH([incompatible-bdb],[AS_HELP_STRING([--with-incompatible-bdb], [allow using a bdb version other than 4.8])],[
|
AC_ARG_WITH([incompatible-bdb],[AS_HELP_STRING([--with-incompatible-bdb], [allow using a bdb version other than 4.8])],[
|
||||||
AC_MSG_WARN([Found Berkeley DB other than 5.1; wallets opened by this build will not be portable!])
|
AC_MSG_WARN([Found Berkeley DB other than 5.3; wallets opened by this build will not be portable!])
|
||||||
],[
|
],[
|
||||||
AC_MSG_ERROR([Found Berkeley DB other than 5.1, required for portable wallets (--with-incompatible-bdb to ignore or --disable-wallet to disable wallet functionality)])
|
AC_MSG_ERROR([Found Berkeley DB other than 5.3, required for portable wallets (--with-incompatible-bdb to ignore or --disable-wallet to disable wallet functionality)])
|
||||||
])
|
])
|
||||||
else
|
else
|
||||||
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdb51path}],db_cxx)
|
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdb53path}],db_cxx)
|
||||||
bdbpath="${bdb51path}"
|
bdbpath="${bdb53path}"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(BDB_CPPFLAGS)
|
AC_SUBST(BDB_CPPFLAGS)
|
||||||
|
|
||||||
# TODO: Ideally this could find the library version and make sure it matches the headers being used
|
# TODO: Ideally this could find the library version and make sure it matches the headers being used
|
||||||
for searchlib in db_cxx-5.1 db_cxx; do
|
for searchlib in db_cxx-5.3 db_cxx; do
|
||||||
AC_CHECK_LIB([$searchlib],[main],[
|
AC_CHECK_LIB([$searchlib],[main],[
|
||||||
BDB_LIBS="-l${searchlib}"
|
BDB_LIBS="-l${searchlib}"
|
||||||
break
|
break
|
|
@ -597,7 +597,7 @@ AC_SUBST(LIBMEMENV)
|
||||||
|
|
||||||
if test x$enable_wallet != xno; then
|
if test x$enable_wallet != xno; then
|
||||||
dnl Check for libdb_cxx only if wallet enabled
|
dnl Check for libdb_cxx only if wallet enabled
|
||||||
BITCOIN_FIND_BDB51
|
BITCOIN_FIND_BDB53
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Check for libminiupnpc (optional)
|
dnl Check for libminiupnpc (optional)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package=bdb
|
package=bdb
|
||||||
$(package)_version=5.1.29
|
$(package)_version=5.3.28
|
||||||
$(package)_download_path=http://download.oracle.com/berkeley-db
|
$(package)_download_path=http://download.oracle.com/berkeley-db
|
||||||
$(package)_file_name=db-$($(package)_version).NC.tar.gz
|
$(package)_file_name=db-$($(package)_version).NC.tar.gz
|
||||||
$(package)_sha256_hash=08238e59736d1aacdd47cfb8e68684c695516c37f4fbe1b8267dde58dc3a576c
|
$(package)_sha256_hash=76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013ef
|
||||||
$(package)_build_subdir=build_unix
|
$(package)_build_subdir=build_unix
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
|
@ -24,7 +24,7 @@ define $(package)_config_cmds
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
$(MAKE) libdb_cxx-5.1.a libdb-5.1.a
|
$(MAKE) libdb_cxx-5.3.a libdb-5.3.a
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
These patches are to allow bdb-5.1.29 to compile using clang / c++11 under later MacOSX versions (Sierra+).
|
|
||||||
These patches must be applied to the bdb-5.1.29 source from Oracle, and then compiled, for the Mac client to build.
|
|
||||||
|
|
||||||
Note some of these exist in bdb.mk but we don't want to use the -stdlib=libstd++ flag that's indicated in there on OSX.
|
|
|
@ -1,38 +0,0 @@
|
||||||
--- old-bdb/src/dbinc/atomic.h 2011-10-25 14:39:34.000000000 -0600
|
|
||||||
+++ new-bdb/src/dbinc/atomic.h 2018-06-01 19:59:37.000000000 -0600
|
|
||||||
@@ -70,7 +70,7 @@
|
|
||||||
* These have no memory barriers; the caller must include them when necessary.
|
|
||||||
*/
|
|
||||||
#define atomic_read(p) ((p)->value)
|
|
||||||
-#define atomic_init(p, val) ((p)->value = (val))
|
|
||||||
+#define atomic_init_db(p, val) ((p)->value = (val))
|
|
||||||
|
|
||||||
#ifdef HAVE_ATOMIC_SUPPORT
|
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@
|
|
||||||
#define atomic_inc(env, p) __atomic_inc(p)
|
|
||||||
#define atomic_dec(env, p) __atomic_dec(p)
|
|
||||||
#define atomic_compare_exchange(env, p, o, n) \
|
|
||||||
- __atomic_compare_exchange((p), (o), (n))
|
|
||||||
+ __atomic_compare_exchange_db((p), (o), (n))
|
|
||||||
static inline int __atomic_inc(db_atomic_t *p)
|
|
||||||
{
|
|
||||||
int temp;
|
|
||||||
@@ -176,7 +176,7 @@
|
|
||||||
* http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
|
|
||||||
* which configure could be changed to use.
|
|
||||||
*/
|
|
||||||
-static inline int __atomic_compare_exchange(
|
|
||||||
+static inline int __atomic_compare_exchange_db(
|
|
||||||
db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
|
|
||||||
{
|
|
||||||
atomic_value_t was;
|
|
||||||
@@ -206,7 +206,7 @@
|
|
||||||
#define atomic_dec(env, p) (--(p)->value)
|
|
||||||
#define atomic_compare_exchange(env, p, oldval, newval) \
|
|
||||||
(DB_ASSERT(env, atomic_read(p) == (oldval)), \
|
|
||||||
- atomic_init(p, (newval)), 1)
|
|
||||||
+ atomic_init_db(p, (newval)), 1)
|
|
||||||
#else
|
|
||||||
#define atomic_inc(env, p) __atomic_inc(env, p)
|
|
||||||
#define atomic_dec(env, p) __atomic_dec(env, p)
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- old-bdb/src/mp/mp_fget.c 2011-10-25 14:39:35.000000000 -0600
|
|
||||||
+++ new-bdb/src/mp/mp_fget.c 2018-06-01 20:01:48.000000000 -0600
|
|
||||||
@@ -629,7 +629,7 @@
|
|
||||||
|
|
||||||
/* Initialize enough so we can call __memp_bhfree. */
|
|
||||||
alloc_bhp->flags = 0;
|
|
||||||
- atomic_init(&alloc_bhp->ref, 1);
|
|
||||||
+ atomic_init_db(&alloc_bhp->ref, 1);
|
|
||||||
#ifdef DIAGNOSTIC
|
|
||||||
if ((uintptr_t)alloc_bhp->buf & (sizeof(size_t) - 1)) {
|
|
||||||
__db_errx(env,
|
|
||||||
@@ -931,7 +931,7 @@
|
|
||||||
MVCC_MPROTECT(bhp->buf, mfp->pagesize,
|
|
||||||
PROT_READ);
|
|
||||||
|
|
||||||
- atomic_init(&alloc_bhp->ref, 1);
|
|
||||||
+ atomic_init_db(&alloc_bhp->ref, 1);
|
|
||||||
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
|
|
||||||
alloc_bhp->priority = bhp->priority;
|
|
||||||
alloc_bhp->pgno = bhp->pgno;
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- old-bdb/src/mp/mp_mvcc.c 2011-10-25 14:39:35.000000000 -0600
|
|
||||||
+++ new-bdb/src/mp/mp_mvcc.c 2018-06-01 20:02:45.000000000 -0600
|
|
||||||
@@ -276,7 +276,7 @@
|
|
||||||
#else
|
|
||||||
memcpy(frozen_bhp, bhp, SSZA(BH, buf));
|
|
||||||
#endif
|
|
||||||
- atomic_init(&frozen_bhp->ref, 0);
|
|
||||||
+ atomic_init_db(&frozen_bhp->ref, 0);
|
|
||||||
if (mutex != MUTEX_INVALID)
|
|
||||||
frozen_bhp->mtx_buf = mutex;
|
|
||||||
else if ((ret = __mutex_alloc(env, MTX_MPOOL_BH,
|
|
||||||
@@ -428,7 +428,7 @@
|
|
||||||
#endif
|
|
||||||
alloc_bhp->mtx_buf = mutex;
|
|
||||||
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
|
|
||||||
- atomic_init(&alloc_bhp->ref, 1);
|
|
||||||
+ atomic_init_db(&alloc_bhp->ref, 1);
|
|
||||||
F_CLR(alloc_bhp, BH_FROZEN);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- old-bdb/src/mp/mp_region.c 2011-10-25 14:39:35.000000000 -0600
|
|
||||||
+++ new-bdb/src/mp/mp_region.c 2018-06-01 20:03:28.000000000 -0600
|
|
||||||
@@ -229,7 +229,7 @@
|
|
||||||
MTX_MPOOL_FILE_BUCKET, 0, &htab[i].mtx_hash)) != 0)
|
|
||||||
return (ret);
|
|
||||||
SH_TAILQ_INIT(&htab[i].hash_bucket);
|
|
||||||
- atomic_init(&htab[i].hash_page_dirty, 0);
|
|
||||||
+ atomic_init_db(&htab[i].hash_page_dirty, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -275,7 +275,7 @@
|
|
||||||
hp->mtx_hash = (mtx_base == MUTEX_INVALID) ? MUTEX_INVALID :
|
|
||||||
mtx_base + (i % dbenv->mp_mtxcount);
|
|
||||||
SH_TAILQ_INIT(&hp->hash_bucket);
|
|
||||||
- atomic_init(&hp->hash_page_dirty, 0);
|
|
||||||
+ atomic_init_db(&hp->hash_page_dirty, 0);
|
|
||||||
#ifdef HAVE_STATISTICS
|
|
||||||
hp->hash_io_wait = 0;
|
|
||||||
hp->hash_frozen = hp->hash_thawed = hp->hash_frozen_freed = 0;
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- old-bdb/src/mutex/mut_method.c 2011-10-25 14:39:35.000000000 -0600
|
|
||||||
+++ new-bdb/src/mutex/mut_method.c 2018-06-01 20:04:05.000000000 -0600
|
|
||||||
@@ -428,7 +428,7 @@
|
|
||||||
MUTEX_LOCK(env, mtx);
|
|
||||||
ret = atomic_read(v) == oldval;
|
|
||||||
if (ret)
|
|
||||||
- atomic_init(v, newval);
|
|
||||||
+ atomic_init_db(v, newval);
|
|
||||||
MUTEX_UNLOCK(env, mtx);
|
|
||||||
|
|
||||||
return (ret);
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- old-bdb/src/mutex/mut_tas.c 2011-10-25 14:39:35.000000000 -0600
|
|
||||||
+++ new-bdb/src/mutex/mut_tas.c 2018-06-01 20:04:25.000000000 -0600
|
|
||||||
@@ -48,7 +48,7 @@
|
|
||||||
|
|
||||||
#ifdef HAVE_SHARED_LATCHES
|
|
||||||
if (F_ISSET(mutexp, DB_MUTEX_SHARED))
|
|
||||||
- atomic_init(&mutexp->sharecount, 0);
|
|
||||||
+ atomic_init_db(&mutexp->sharecount, 0);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (MUTEX_INIT(&mutexp->tas)) {
|
|
||||||
@@ -521,7 +521,7 @@
|
|
||||||
F_CLR(mutexp, DB_MUTEX_LOCKED);
|
|
||||||
/* Flush flag update before zeroing count */
|
|
||||||
MEMBAR_EXIT();
|
|
||||||
- atomic_init(&mutexp->sharecount, 0);
|
|
||||||
+ atomic_init_db(&mutexp->sharecount, 0);
|
|
||||||
} else {
|
|
||||||
DB_ASSERT(env, sharecount > 0);
|
|
||||||
MEMBAR_EXIT();
|
|
|
@ -40,49 +40,34 @@ Install Boost lib via Brew from source, and link it to be sure:
|
||||||
$brew install boost --build-from-source --HEAD
|
$brew install boost --build-from-source --HEAD
|
||||||
$brew link boost167
|
$brew link boost167
|
||||||
|
|
||||||
### Get, Patch And Compile BDB 5.1 ###
|
### Get, Patch And Compile BDB 5.3 ###
|
||||||
|
|
||||||
Download bdb 5.1.29 source from Oracle.
|
Download bdb 5.3.28 source from Oracle.
|
||||||
|
|
||||||
$curl -o db-5.1.29.tar.gz http://download.oracle.com/berkeley-db/db-5.1.29.tar.gz
|
$curl -o db-5.3.28.tar.gz http://download.oracle.com/berkeley-db/db-5.3.28.tar.gz
|
||||||
$tar xvfz db-5.1.29.tar.gz
|
$tar xvfz db-5.3.28.tar.gz
|
||||||
$cd db-5.1.29
|
$cd db-5.3.28
|
||||||
|
|
||||||
Patch bdb 5.1.29 from our patchfiles
|
Build BDB 5.3.28
|
||||||
|
|
||||||
$cd src
|
|
||||||
$cd dbinc
|
|
||||||
$patch -b atomic.h ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/atomic.h.patch
|
|
||||||
$cd ..
|
|
||||||
$cd mp
|
|
||||||
$patch -b mp_fget.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mp_fget.c.patch
|
|
||||||
$patch -b mp_mvcc.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mp_mvcc.c.patch
|
|
||||||
$patch -b mp_region.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mp_region.c.patch
|
|
||||||
$cd ..
|
|
||||||
$cd mutex
|
|
||||||
$patch -b mut_method.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mut_method.c.patch
|
|
||||||
$patch -b mut_tas.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mut_tas.c.patch
|
|
||||||
|
|
||||||
Build BDB 5.1.29
|
|
||||||
|
|
||||||
$cd ../..
|
$cd ../..
|
||||||
$cd build_unix
|
$cd build_unix
|
||||||
$../dist/configure CXX=clang++ --enable-cxx
|
$../dist/configure CXX=clang++ --enable-cxx
|
||||||
$make
|
$make
|
||||||
$sudo mkdir /usr/local/BerkeleyDB.5.1
|
$sudo mkdir /usr/local/BerkeleyDB.5.3
|
||||||
$sudo chown $(whoami):admin /usr/local/BerkeleyDB.5.1
|
$sudo chown $(whoami):admin /usr/local/BerkeleyDB.5.3
|
||||||
$sudo make install
|
$sudo make install
|
||||||
|
|
||||||
### Set some environment variables and links for bdb and openssl ###
|
### Set some environment variables and links for bdb and openssl ###
|
||||||
|
|
||||||
$export LDFLAGS=-L/usr/local/BerkeleyDB.5.1/lib
|
$export LDFLAGS=-L/usr/local/BerkeleyDB.5.3/lib
|
||||||
$export CPPFLAGS=-I/usr/local/BerkeleyDB.5.1/include
|
$export CPPFLAGS=-I/usr/local/BerkeleyDB.5.3/include
|
||||||
|
|
||||||
_**NOTE:** for MacOS BigSur (11.1) or later, and possibly Catalina (10.15) you will also have to include the "OBJC_OLD_DISPATCH_PROTOTYPES=1" flag._
|
_**NOTE:** for MacOS BigSur (11.1) or later, and possibly Catalina (10.15) you will also have to include the "OBJC_OLD_DISPATCH_PROTOTYPES=1" flag._
|
||||||
|
|
||||||
_So in this case you want the above export to be:_
|
_So in this case you want the above export to be:_
|
||||||
|
|
||||||
$export CPPFLAGS="-I/usr/local/BerkeleyDB.5.1/include -DOBJC_OLD_DISPATCH_PROTOTYPES=1"
|
$export CPPFLAGS="-I/usr/local/BerkeleyDB.5.3/include -DOBJC_OLD_DISPATCH_PROTOTYPES=1"
|
||||||
|
|
||||||
_(Note that the quotes are required.)_
|
_(Note that the quotes are required.)_
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ Dependencies
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
brew install automake libtool boost miniupnpc openssl pkg-config protobuf qt5 libevent
|
brew install automake libtool boost miniupnpc openssl pkg-config protobuf qt5 libevent
|
||||||
brew install berkeley-db # You need to make sure you install a version >= 5.1.29, but as close to 5.1.29 as possible. Check the homebrew docs to find out how to install older versions.
|
brew install berkeley-db # You need to make sure you install a version >= 5.3.28, but as close to 5.3.28 as possible. Check the homebrew docs to find out how to install older versions.
|
||||||
|
|
||||||
If you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG
|
If you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ Wallet is optional to run a node, see [Wallet](#wallet) section to enable them.
|
||||||
Library | Purpose | Description
|
Library | Purpose | Description
|
||||||
------------|------------------|----------------------
|
------------|------------------|----------------------
|
||||||
miniupnpc | UPnP Support | Firewall-jumping support
|
miniupnpc | UPnP Support | Firewall-jumping support
|
||||||
libdb5.1 | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
libdb5.3 | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
||||||
qt | GUI | GUI toolkit (only needed when GUI enabled)
|
qt | GUI | GUI toolkit (only needed when GUI enabled)
|
||||||
protobuf | Payments in GUI | Data interchange format used for payment protocol (only needed when GUI enabled)
|
protobuf | Payments in GUI | Data interchange format used for payment protocol (only needed when GUI enabled)
|
||||||
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled)
|
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled)
|
||||||
|
@ -108,24 +108,24 @@ Create `dogecoin-qt`, the core wallet GUI.
|
||||||
#### Wallet
|
#### Wallet
|
||||||
BerkeleyDB is required for wallet functionality and use the `wallet.dat` file.
|
BerkeleyDB is required for wallet functionality and use the `wallet.dat` file.
|
||||||
|
|
||||||
By default, **Dogecoin Core expect BerkeleyDB 5.1**.
|
By default, **Dogecoin Core expect BerkeleyDB 5.3**.
|
||||||
You can use a different version by specifying `--with-incompatible-bdb` flag.
|
You can use a different version by specifying `--with-incompatible-bdb` flag.
|
||||||
|
|
||||||
If no package is available for your distribution in optional dependencies, you can build BerkeleyDB from source :
|
If no package is available for your distribution in optional dependencies, you can build BerkeleyDB from source :
|
||||||
```bash
|
```bash
|
||||||
# Install script for BerkeleyDB 5.1
|
# Install script for BerkeleyDB 5.3
|
||||||
|
|
||||||
# BerkeleyDB installation directory
|
# BerkeleyDB installation directory
|
||||||
BDB_PREFIX=$(pwd)/bdb
|
BDB_PREFIX=$(pwd)/bdb
|
||||||
mkdir $BDB_PREFIX
|
mkdir $BDB_PREFIX
|
||||||
|
|
||||||
# Fetch the source and verify shasum
|
# Fetch the source and verify shasum
|
||||||
wget 'http://download.oracle.com/berkeley-db/db-5.1.29.NC.tar.gz'
|
wget 'http://download.oracle.com/berkeley-db/db-5.3.28.NC.tar.gz'
|
||||||
echo '08238e59736d1aacdd47cfb8e68684c695516c37f4fbe1b8267dde58dc3a576c db-5.1.29.NC.tar.gz' | sha256sum -c
|
echo '76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013efdb-5.3.28.NC.tar.gz' | sha256sum -c
|
||||||
|
|
||||||
# Extract sources
|
# Extract sources
|
||||||
tar -xzvf db-5.1.29.NC.tar.gz
|
tar -xzvf db-5.3.28.NC.tar.gz
|
||||||
cd db-5.1.29.NC/build_unix/
|
cd db-5.3.28.NC/build_unix/
|
||||||
|
|
||||||
# Apply patch (see https://gist.github.com/danieldk/5700533)
|
# Apply patch (see https://gist.github.com/danieldk/5700533)
|
||||||
sed -i 's/__atomic_compare_exchange/__atomic_compare_exchange_db/g' ../src/dbinc/atomic.h
|
sed -i 's/__atomic_compare_exchange/__atomic_compare_exchange_db/g' ../src/dbinc/atomic.h
|
||||||
|
|
Loading…
Reference in a new issue