mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 19:42:46 +01:00
merge bitcoin#11702: Add a script for installing db4
This commit is contained in:
parent
014488041a
commit
cb5ac0d292
@ -48,8 +48,9 @@ OSX_QT_TRANSLATIONS = ar,bg,ca,cs,da,de,es,fa,fi,fr,gd,gl,he,hu,it,ja,ko,lt,lv,p
|
||||
|
||||
DIST_CONTRIB = \
|
||||
$(top_srcdir)/contrib/debian/copyright \
|
||||
$(top_srcdir)/contrib/linearize/linearize-data.py \
|
||||
$(top_srcdir)/contrib/linearize/linearize-hashes.py
|
||||
$(top_srcdir)/contrib/install_db4.sh \
|
||||
$(top_srcdir)/contrib/linearize/linearize-data.py \
|
||||
$(top_srcdir)/contrib/linearize/linearize-hashes.py
|
||||
DIST_SHARE = \
|
||||
$(top_srcdir)/share/genbuild.sh \
|
||||
$(top_srcdir)/share/rpcauth
|
||||
|
87
contrib/install_db4.sh
Executable file
87
contrib/install_db4.sh
Executable file
@ -0,0 +1,87 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Install libdb4.8 (Berkeley DB).
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "${1}" ]; then
|
||||
echo "Usage: ./install_db4.sh <base-dir> [<extra-bdb-configure-flag> ...]"
|
||||
echo
|
||||
echo "Must specify a single argument: the directory in which db5 will be built."
|
||||
echo "This is probably \`pwd\` if you're at the root of the dash repository."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
expand_path() {
|
||||
echo "$(cd "${1}" && pwd -P)"
|
||||
}
|
||||
|
||||
BDB_PREFIX="$(expand_path ${1})/db4"; shift;
|
||||
BDB_EXTRA_CONFIGURE_FLAGS="${@}"
|
||||
BDB_VERSION='db-4.8.30.NC'
|
||||
BDB_HASH='12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef'
|
||||
BDB_URL="https://download.oracle.com/berkeley-db/${BDB_VERSION}.tar.gz"
|
||||
|
||||
check_exists() {
|
||||
which "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
sha256_check() {
|
||||
# Args: <sha256_hash> <filename>
|
||||
#
|
||||
if check_exists sha256sum; then
|
||||
echo "${1} ${2}" | sha256sum -c
|
||||
elif check_exists sha256; then
|
||||
echo "${1} ${2}" | sha256 -c
|
||||
else
|
||||
echo "${1} ${2}" | shasum -a 256 -c
|
||||
fi
|
||||
}
|
||||
|
||||
http_get() {
|
||||
# Args: <url> <filename> <sha256_hash>
|
||||
#
|
||||
# It's acceptable that we don't require SSL here because we manually verify
|
||||
# content hashes below.
|
||||
#
|
||||
if [ -f "${2}" ]; then
|
||||
echo "File ${2} already exists; not downloading again"
|
||||
elif check_exists curl; then
|
||||
curl --insecure "${1}" -o "${2}"
|
||||
else
|
||||
wget --no-check-certificate "${1}" -O "${2}"
|
||||
fi
|
||||
|
||||
sha256_check "${3}" "${2}"
|
||||
}
|
||||
|
||||
mkdir -p "${BDB_PREFIX}"
|
||||
http_get "${BDB_URL}" "${BDB_VERSION}.tar.gz" "${BDB_HASH}"
|
||||
tar -xzvf ${BDB_VERSION}.tar.gz -C "$BDB_PREFIX"
|
||||
cd "${BDB_PREFIX}/${BDB_VERSION}/"
|
||||
|
||||
# Apply a patch when building on OS X to make the build work with Xcode.
|
||||
#
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
BDB_OSX_ATOMIC_PATCH_URL='https://raw.githubusercontent.com/narkoleptik/os-x-berkeleydb-patch/0007e2846ae3fc9757849f5277018f4179ad17ef/atomic.patch'
|
||||
BDB_OSX_ATOMIC_PATCH_HASH='ba0e2b4f53e9cb0ec58f60a979b53b8567b4565f0384886196f1fc1ef111d151'
|
||||
|
||||
http_get "${BDB_OSX_ATOMIC_PATCH_URL}" atomic.patch "${BDB_OSX_ATOMIC_PATCH_HASH}"
|
||||
patch -p1 < atomic.patch
|
||||
fi
|
||||
|
||||
cd build_unix/
|
||||
|
||||
"${BDB_PREFIX}/${BDB_VERSION}/dist/configure" \
|
||||
--enable-cxx --disable-shared --with-pic --prefix="${BDB_PREFIX}" \
|
||||
"${BDB_EXTRA_CONFIGURE_FLAGS}"
|
||||
|
||||
make install
|
||||
|
||||
echo
|
||||
echo "db4 build complete."
|
||||
echo
|
||||
echo 'When compiling dashd, run `./configure` in the following way:'
|
||||
echo
|
||||
echo " export BDB_PREFIX='${BDB_PREFIX}'"
|
||||
echo ' ./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" ...'
|
@ -39,28 +39,17 @@ This compiler will not overwrite the system compiler, it will be installed as `e
|
||||
|
||||
BerkeleyDB is only necessary for the wallet functionality. To skip this, pass `--disable-wallet` to `./configure`.
|
||||
|
||||
See "Berkeley DB" in [build-unix.md](build-unix.md#berkeley-db) for instructions on how to build BerkeleyDB 4.8.
|
||||
You cannot use the BerkeleyDB library from ports, for the same reason as boost above (g++/libstd++ incompatibility).
|
||||
It is recommended to use Berkeley DB 4.8. You cannot use the BerkeleyDB library
|
||||
from ports, for the same reason as boost above (g++/libstd++ incompatibility).
|
||||
If you have to build it yourself, you can use [the installation script included
|
||||
in contrib/](contrib/install_db4.sh) like so:
|
||||
|
||||
```bash
|
||||
# Pick some path to install BDB to, here we create a directory within the dash directory
|
||||
BITCOIN_ROOT=$(pwd)
|
||||
BDB_PREFIX="${BITCOIN_ROOT}/db4"
|
||||
mkdir -p $BDB_PREFIX
|
||||
|
||||
# Fetch the source and verify that it is not tampered with
|
||||
curl -o db-4.8.30.NC.tar.gz 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
|
||||
echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256 -c
|
||||
# MUST output: (SHA256) db-4.8.30.NC.tar.gz: OK
|
||||
tar -xzf db-4.8.30.NC.tar.gz
|
||||
|
||||
# Build the library and install to specified prefix
|
||||
cd db-4.8.30.NC/build_unix/
|
||||
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX CC=egcc CXX=eg++ CPP=ecpp
|
||||
make install # do NOT use -jX, this is broken
|
||||
```shell
|
||||
./contrib/install_db4.sh `pwd` CC=egcc CXX=eg++ CPP=ecpp
|
||||
```
|
||||
|
||||
from the root of the repository.
|
||||
|
||||
### Resource limits
|
||||
|
||||
The standard ulimit restrictions in OpenBSD are very strict:
|
||||
|
@ -30,7 +30,19 @@ If you want to build the disk image with `make deploy` (.dmg / optional), you ne
|
||||
brew install librsvg
|
||||
```
|
||||
|
||||
**Note**: You only need Berkeley DB if the wallet is enabled (see [*Disable-wallet mode*](/doc/build-osx.md#disable-wallet-mode)).
|
||||
## Berkeley DB
|
||||
|
||||
It is recommended to use Berkeley DB 4.8. If you have to build it yourself,
|
||||
you can use [the installation script included in contrib/](contrib/install_db4.sh)
|
||||
like so:
|
||||
|
||||
```shell
|
||||
./contrib/install_db4.sh .
|
||||
```
|
||||
|
||||
from the root of the repository.
|
||||
|
||||
**Note**: You only need Berkeley DB if the wallet is enabled (see the section *Disable-Wallet mode* below).
|
||||
|
||||
## Build Dash Core
|
||||
|
||||
|
@ -99,8 +99,6 @@ SQLite is required for the wallet:
|
||||
|
||||
sudo apt install libsqlite3-dev
|
||||
|
||||
To build Dash Core without wallet, see [*Disable-wallet mode*](/doc/build-unix.md#disable-wallet-mode)
|
||||
|
||||
Optional port mapping libraries (see: `--with-miniupnpc`, `--enable-upnp-default`, and `--with-natpmp`, `--enable-natpmp-default`):
|
||||
|
||||
sudo apt install libminiupnpc-dev libnatpmp-dev
|
||||
@ -198,33 +196,18 @@ turned off by default. See the configure options for NAT-PMP behavior desired:
|
||||
|
||||
Berkeley DB
|
||||
-----------
|
||||
It is recommended to use Berkeley DB 4.8. If you have to build it yourself:
|
||||
It is recommended to use Berkeley DB 4.8. If you have to build it yourself,
|
||||
you can use [the installation script included in contrib/](contrib/install_db4.sh)
|
||||
like so:
|
||||
|
||||
```bash
|
||||
DASH_ROOT=$(pwd)
|
||||
|
||||
# Pick some path to install BDB to, here we create a directory within the dash directory
|
||||
BDB_PREFIX="${DASH_ROOT}/db4"
|
||||
mkdir -p $BDB_PREFIX
|
||||
|
||||
# Fetch the source and verify that it is not tampered with
|
||||
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
|
||||
echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256sum -c
|
||||
# -> db-4.8.30.NC.tar.gz: OK
|
||||
tar -xzvf db-4.8.30.NC.tar.gz
|
||||
|
||||
# Build the library and install to our prefix
|
||||
cd db-4.8.30.NC/build_unix/
|
||||
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
||||
make install
|
||||
|
||||
# Configure Dash Core to use our own-built instance of BDB
|
||||
cd $DASH_ROOT
|
||||
./autogen.sh
|
||||
./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" # (other args...)
|
||||
```shell
|
||||
./contrib/install_db4.sh `pwd`
|
||||
```
|
||||
|
||||
from the root of the repository.
|
||||
|
||||
**Note**: You only need Berkeley DB if the wallet is enabled (see [*Disable-wallet mode*](/doc/build-unix.md#disable-wallet-mode)).
|
||||
|
||||
Boost
|
||||
-----
|
||||
If you need to build Boost yourself:
|
||||
|
Loading…
Reference in New Issue
Block a user