Skip to content

Commit 7a11ba7

Browse files
committed
Merge #11945: Improve BSD compatibility of contrib/install_db4.sh
2712742 doc: Update FreeBSD build instructions to use bdb4 (Wladimir J. van der Laan) d95c83d contrib: FreeBSD compatibility in install_db4.sh (Wladimir J. van der Laan) c0298b0 contrib: Make X=Y arguments work in install_db4 (Wladimir J. van der Laan) b798f9b contrib: New clang patch for install_db4 (Wladimir J. van der Laan) Pull request description: This PR improves the BSD compatibility of the bdb4 installer script. See #11921, #11868. I've tested this on OpenBSD 6.2 (clang) and Ubuntu 16.04 (gcc). This needs testing on OSX at least, ~~and on gcc/Linux to make sure that applying the patch unconditionally doesn't negatively affect gcc~~. ~~NB: this is not yet sufficient to make `install_db4.sh` work on FreeBSD, as we need to use yet another `sha256` tool there. But it's a step in the right direction.~~ ### contrib: New clang patch for install_db4 Replace the clang patch with a new and improved version that also fixes the build issues with OpenBSD and FreeBSD's clang, and apply it unconditionally. Thanks to @fanquake for finding the patch. ### contrib: Make X=Y arguments work in install_db4 Trailing X=Y arguments are supposed to be passed through unchanged to bdb's configure. This was not the case, at least with OpenBSD 6.2's shell. Fix this by not storing the arguments in a temporary variable but passing "$@" through directly. ### contrib: FreeBSD compatibility in install_db4.sh Unfortunately, FreeBSD uses yet another syntax for `sha256`. Support FreeBSD's syntax too. Using `uname` is a bit of a hack but it works and I found no way to distinguish the two. Tree-SHA512: 12461a58dfeb4834701891762efc747c8187d834f41d98c8451edee1402a3958c4842bbc02c61bacbc7b0d90cc6b020a2ca158b65304d9760c9f0d2052ff36d4
2 parents 604e08c + 2712742 commit 7a11ba7

File tree

2 files changed

+14
-19
lines changed

2 files changed

+14
-19
lines changed

contrib/install_db4.sh

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ expand_path() {
1717
}
1818

1919
BDB_PREFIX="$(expand_path ${1})/db4"; shift;
20-
BDB_EXTRA_CONFIGURE_FLAGS="${@}"
2120
BDB_VERSION='db-4.8.30.NC'
2221
BDB_HASH='12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef'
2322
BDB_URL="https://download.oracle.com/berkeley-db/${BDB_VERSION}.tar.gz"
@@ -32,7 +31,11 @@ sha256_check() {
3231
if check_exists sha256sum; then
3332
echo "${1} ${2}" | sha256sum -c
3433
elif check_exists sha256; then
35-
echo "${1} ${2}" | sha256 -c
34+
if [ "$(uname)" = "FreeBSD" ]; then
35+
sha256 -c "${1}" "${2}"
36+
else
37+
echo "${1} ${2}" | sha256 -c
38+
fi
3639
else
3740
echo "${1} ${2}" | shasum -a 256 -c
3841
fi
@@ -60,21 +63,17 @@ http_get "${BDB_URL}" "${BDB_VERSION}.tar.gz" "${BDB_HASH}"
6063
tar -xzvf ${BDB_VERSION}.tar.gz -C "$BDB_PREFIX"
6164
cd "${BDB_PREFIX}/${BDB_VERSION}/"
6265

63-
# Apply a patch when building on OS X to make the build work with Xcode.
64-
#
65-
if [ "$(uname)" = "Darwin" ]; then
66-
BDB_OSX_ATOMIC_PATCH_URL='https://raw.githubusercontent.com/narkoleptik/os-x-berkeleydb-patch/0007e2846ae3fc9757849f5277018f4179ad17ef/atomic.patch'
67-
BDB_OSX_ATOMIC_PATCH_HASH='ba0e2b4f53e9cb0ec58f60a979b53b8567b4565f0384886196f1fc1ef111d151'
68-
69-
http_get "${BDB_OSX_ATOMIC_PATCH_URL}" atomic.patch "${BDB_OSX_ATOMIC_PATCH_HASH}"
70-
patch -p1 < atomic.patch
71-
fi
66+
# Apply a patch necessary when building with clang and c++11 (see https://community.oracle.com/thread/3952592)
67+
CLANG_CXX11_PATCH_URL='https://gist.githubusercontent.com/LnL7/5153b251fd525fe15de69b67e63a6075/raw/7778e9364679093a32dec2908656738e16b6bdcb/clang.patch'
68+
CLANG_CXX11_PATCH_HASH='7a9a47b03fd5fb93a16ef42235fa9512db9b0829cfc3bdf90edd3ec1f44d637c'
69+
http_get "${CLANG_CXX11_PATCH_URL}" clang.patch "${CLANG_CXX11_PATCH_HASH}"
70+
patch -p2 < clang.patch
7271

7372
cd build_unix/
7473

7574
"${BDB_PREFIX}/${BDB_VERSION}/dist/configure" \
7675
--enable-cxx --disable-shared --with-pic --prefix="${BDB_PREFIX}" \
77-
"${BDB_EXTRA_CONFIGURE_FLAGS}"
76+
"${@}"
7877

7978
make install
8079

doc/build-unix.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -312,17 +312,13 @@ You need to use GNU make (`gmake`) instead of `make`.
312312

313313
For the wallet (optional):
314314

315-
pkg install db5
316-
317-
This will give a warning "configure: WARNING: Found Berkeley DB other
318-
than 4.8; wallets opened by this build will not be portable!", but as FreeBSD never
319-
had a binary release, this may not matter. If backwards compatibility
320-
with 4.8-built Bitcoin Core is needed follow the steps under "Berkeley DB" above.
315+
./contrib/install_db4.sh `pwd`
316+
setenv BDB_PREFIX $PWD/db4
321317

322318
Then build using:
323319

324320
./autogen.sh
325-
./configure --with-incompatible-bdb BDB_CFLAGS="-I/usr/local/include/db5" BDB_LIBS="-L/usr/local/lib -ldb_cxx-5"
321+
./configure BDB_CFLAGS="-I${BDB_PREFIX}/include" BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx"
326322
gmake
327323

328324
*Note on debugging*: The version of `gdb` installed by default is [ancient and considered harmful](https://wiki.freebsd.org/GdbRetirement).

0 commit comments

Comments
 (0)