9d30f54 [Docs] Update OpenBSD Build Instructions for OpenBSD 6.2 (fanquake)
Pull request description:
This updates the OpenBSD build docs to reflect building [master](8ddf60db7a) on a OpenBSD 6.2 VM (using VirtualBox 5.1.28 r117968 on macOS 10.12.6).
Versions of installed packages were:
```
gmake 4.2.1
g++ 4.9.4
git 2.12.2
libevent 2.0.22
libtool 2.4.2
autoconf 2.69p2
automake 1.15p0
python 3.6.0
boost 1.58.0p3
llvm 4.0.0p2
```
The boost package installed via pkg_add now seems to work correctly. So we shouldn't require manual building + patching.
I also wasn't required to make adjustments to any resource limits.
Building with g++ and Clang was successful, using:
```
./configure --disable-wallet --with-gui=no CC=egcc CXX=eg++ CPP=ecpp
```
and
```
./configure --disable-wallet --with-gui=no CC=clang CXX=clang++
```
Running ``` make check ``` worked for ```test/test_bitcoin``` but ```test/util/bitcoin-util-test.py``` failed with:
```
Running test/util/bitcoin-util-test.py...
../test/util/bitcoin-util-test.py
env: python3: No such file or directory
```
So that seems like a configuration issue, Python 3.6 is installed.
Still todo:
- [ ] Check if a manual installation of Berkeley DB is required
- [x] Fix running ```test/util/bitcoin-util-test.py```
- [x] Have someone else verify building
cc @laanwj
Tree-SHA512: 34b176de4865b36dab9d66e74a15c37152e4b6c9784152c30dabbb515d6d9ae9cdbdc7a7b4d777876f91269a6a78cc277ec87775fc6c17dd509f7cf46e89a2b3
This guide describes how to build bitcoind and command-line utilities on OpenBSD.
As OpenBSD is most common as a server OS, we will not bother with the GUI.
OpenBSD is most commonly used as a server OS, so this guide does not contain instructions for building the GUI.
Preparation
-------------
@ -12,10 +12,13 @@ Preparation
Run the following as root to install the base dependencies for building:
```bash
pkg_add gmake libtool libevent
pkg_add git gmake libevent libtool
pkg_add autoconf # (select highest version, e.g. 2.69)
pkg_add automake # (select highest version, e.g. 1.15)
pkg_add python # (select highest version, e.g. 3.5)
pkg_add python # (select highest version, e.g. 3.6)
pkg_add boost
git clone https://github.com/bitcoin/bitcoin.git
```
See [dependencies.md](dependencies.md) for a complete overview.
@ -23,54 +26,19 @@ See [dependencies.md](dependencies.md) for a complete overview.
GCC
-------
The default C++ compiler that comes with OpenBSD 5.9 is g++ 4.2. This version is old (from 2007), and is not able to compile the current version of Bitcoin Core, primarily as it has no C++11 support, but even before there were issues. So here we will be installing a newer compiler:
The default C++ compiler that comes with OpenBSD 6.2 is g++ 4.2.1. This version is old (from 2007), and is not able to compile the current version of Bitcoin Core because it has no C++11 support. We'll install a newer version of GCC:
```bash
pkg_add g++ # (select newest 4.x version, e.g. 4.9.3)
```
This compiler will not overwrite the system compiler, it will be installed as `egcc` and `eg++` in `/usr/local/bin`.
### Building boost
Do not use `pkg_add boost`! The boost version installed thus is compiled using the `g++` compiler not `eg++`, which will result in a conflict between `/usr/local/lib/libestdc++.so.XX.0` and `/usr/lib/libstdc++.so.XX.0`, resulting in a test crash:
test_bitcoin:/usr/lib/libstdc++.so.57.0: /usr/local/lib/libestdc++.so.17.0 : WARNING: symbol(_ZN11__gnu_debug17_S_debug_me ssagesE) size mismatch, relink your program
...
Segmentation fault (core dumped)
pkg_add g++
```
This makes it necessary to build boost, or at least the parts used by Bitcoin Core, manually:
```
# Pick some path to install boost to, here we create a directory within the bitcoin directory
BITCOIN_ROOT=$(pwd)
BOOST_PREFIX="${BITCOIN_ROOT}/boost"
mkdir -p $BOOST_PREFIX
# Fetch the source and verify that it is not tampered with
# Also here: https://gist.githubusercontent.com/laanwj/bf359281dc319b8ff2e1/raw/92250de8404b97bb99d72ab898f4a8cb35ae1ea3/patch-boost_test_impl_execution_monitor_ipp.patch
However, this does not appear to work. Compilation succeeds, but link fails
with many 'local symbol discarded' errors:
local symbol 150: discarded in section `.text._ZN10tinyformat6detail14FormatIterator6finishEv' from libbitcoin_util.a(libbitcoin_util_a-random.o)
local symbol 151: discarded in section `.text._ZN10tinyformat6detail14FormatIterator21streamStateFromFormatERSoRjPKcii' from libbitcoin_util.a(libbitcoin_util_a-random.o)
local symbol 152: discarded in section `.text._ZN10tinyformat6detail12convertToIntIA13_cLb0EE6invokeERA13_Kc' from libbitcoin_util.a(libbitcoin_util_a-random.o)
According to similar reported errors this is a binutils (ld) issue in 2.15, the