Skip to content

Latest commit

 

History

History
215 lines (165 loc) · 6.24 KB

build-from-source.md

File metadata and controls

215 lines (165 loc) · 6.24 KB

Build dPay's Jefferson Dev Network From Source

Docker

Build the image from source with docker

Docker isn't just for downloading already built images, it can be used to build from source the same way you would otherwise build. By doing this you ensure that your build environment is identical to what we use to develop the software. Use the below command to start the build:

docker build -t=dpay/franklin .

Don't forget the . at the end of the line which indicates the build target is in the current directory.

This will build everything including running our full suite of tests during the build process. It will anywhere from thirty minutes to a couple hours depending on how fast your equipment is.

When the build completes you will see a message indicating that it is 'successfully built'.

From Source Build

Building on Ubuntu 16.04

For Ubuntu 16.04 users, after installing the right packages with apt dPay will build out of the box without further effort:

# Required packages
sudo apt-get install -y \
    autoconf \
    automake \
    cmake \
    g++ \
    git \
    libssl-dev \
    libtool \
    make \
    pkg-config \
    python3 \
    python3-jinja2

# Boost packages (also required)
sudo apt-get install -y \
    libboost-chrono-dev \
    libboost-context-dev \
    libboost-coroutine-dev \
    libboost-date-time-dev \
    libboost-filesystem-dev \
    libboost-iostreams-dev \
    libboost-locale-dev \
    libboost-program-options-dev \
    libboost-serialization-dev \
    libboost-signals-dev \
    libboost-system-dev \
    libboost-test-dev \
    libboost-thread-dev

# Optional packages (not required, but will make a nicer experience)
sudo apt-get install -y \
    doxygen \
    libncurses5-dev \
    libreadline-dev \
    perl

git clone https://github.com/dpays/dpay
cd dpay
git checkout stable
git submodule update --init --recursive
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DPAY_JEFFERSON=ON ..
make -j$(nproc) dpayd
make -j$(nproc) cli_wallet
# optional
make install  # defaults to /usr/local

Building on Ubuntu 14.04

(It is strongly advised to use Ubuntu 16.04 LTS instead)

Here are the required packages:

# Required packages
sudo apt-get install -y \
    autoconf \
    cmake3 \
    g++ \
    git \
    libssl-dev \
    libtool \
    make \
    pkg-config \
    doxygen \
    libncurses5-dev \
    libreadline-dev \
    libbz2-dev \
    python-dev \
    perl \
    python3 \
    python3-jinja2

The Boost provided in the Ubuntu 14.04 package manager (Boost 1.55) is too old. dPay requires Boost 1.58 (as in Ubuntu 16.04) and works with versions up to 1.60 (including). So building dPay on Ubuntu 14.04 requires downloading and installing a more recent version of Boost.

According to this mailing list post, Boost 1.58 is not compatible with gcc 4.8 (the default C++ compiler for Ubuntu 14.04) when compiling in C++11 mode (which dPay does). So we will use Boost 1.60.

Here is how to build and install Boost 1.60 into your user's home directory (make sure you install all the packages above first):

export BOOST_ROOT=$HOME/opt/boost_1_60_0
URL='http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.bz2/download'
wget -c "$URL" -O boost_1_60_0.tar.bz2
[ $( sha256sum boost_1_60_0.tar.bz2 | cut -d ' ' -f 1 ) == \
    "686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b" ] \
    || ( echo 'Corrupt download' ; exit 1 )
tar xjf boost_1_60_0.tar.bz2
cd boost_1_60_0
./bootstrap.sh "--prefix=$BOOST_ROOT"
./b2 install

Then the instructions are the same as for dpay:

git clone https://github.com/dpays/dpay
cd dpay
git checkout stable
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DPAY_JEFFERSON=ON ..
make -j$(nproc) dpayd
make -j$(nproc) cli_wallet

Building on macOS X

Install Xcode and its command line tools by following the instructions here: https://guide.macports.org/#installing.xcode. In OS X 10.11 (El Capitan) and newer, you will be prompted to install developer tools when running a developer command in the terminal.

Accept the Xcode license if you have not already:

sudo xcodebuild -license accept

Install Homebrew by following the instructions here: http://brew.sh/

Initialize Homebrew:

brew doctor brew update

Install dPay dependencies:

brew install \
    autoconf \
    automake \
    cmake \
    git \
    boost160 \
    libtool \
    openssl \
    python3 \
    python3-jinja2

Note: brew recently updated to boost 1.61.0, which is not yet supported by dpay. Until then, this will allow you to install boost 1.60.0.

Optional. To use TCMalloc in LevelDB:

brew install google-perftools

Optional. To use cli_wallet and override macOS's default readline installation:

brew install --force readline
brew link --force readline

Clone the Repository

git clone https://github.com/dpays/dpay.git
cd dpay
git checkout stable

Compile

export OPENSSL_ROOT_DIR=$(brew --prefix)/Cellar/openssl/1.0.2h_1/
export BOOST_ROOT=$(brew --prefix)/Cellar/boost@1.60/1.60.0/
git submodule update --init --recursive
mkdir build && cd build
cmake -DBOOST_ROOT="$BOOST_ROOT" -DCMAKE_BUILD_TYPE=Release -DBUILD_DPAY_JEFFERSON=ON ..
make -j$(sysctl -n hw.logicalcpu)

Also, some useful build targets for make are:

dpayd
chain_test
cli_wallet

e.g.:

make -j$(sysctl -n hw.logicalcpu) dpayd

This will only build dpayd.

Building on Other Platforms

  • Windows build instructions do not yet exist.

  • The developers normally compile with gcc and clang. These compilers should be well-supported.

  • Community members occasionally attempt to compile the code with mingw, Intel and Microsoft compilers. These compilers may work, but the developers do not use them. Pull requests fixing warnings / errors from these compilers are accepted.