Browse Source

updated build doc for OSX

miguelfreitas
toyg 11 years ago
parent
commit
ac5444d3fe
  1. 143
      doc/build-osx.md

143
doc/build-osx.md

@ -1,13 +1,11 @@ @@ -1,13 +1,11 @@
Mac OS X Build Instructions and Notes
====================================
This guide will show you how to build bitcoind(headless client) for OSX.
This guide will show you how to build twisterd for OSX.
Notes
-----
* See [readme-qt.md](readme-qt.md) for instructions on building Bitcoin-Qt, the
graphical user interface.
* Tested on OS X 10.5 through 10.8 on Intel processors only. PPC is not
* Tested on OS X 10.9.1 on Intel processors only. PPC is not
supported because it is big-endian.
* All of the commands should be executed in a Terminal application. The
built-in one is located in `/Applications/Utilities`.
@ -31,39 +29,12 @@ available via Homebrew or MacPorts. @@ -31,39 +29,12 @@ available via Homebrew or MacPorts.
You will also need to install [Homebrew](http://mxcl.github.io/homebrew/)
or [MacPorts](https://www.macports.org/) in order to install library
dependencies. It's largely a religious decision which to choose, but, as of
December 2012, MacPorts is a little easier because you can just install the
dependencies immediately - no other work required. If you're unsure, read
the instructions through first in order to assess what you want to do.
Homebrew is a little more popular among those newer to OS X.
dependencies. It's largely a religious decision which to choose, but I tested only with
Homebrew.
The installation of the actual dependencies is covered in the Instructions
sections below.
Instructions: MacPorts
----------------------
### Install dependencies
Installing the dependencies using MacPorts is very straightforward.
sudo port install boost db48@+no_java openssl miniupnpc
### Building `bitcoind`
1. Clone the github tree to get the source code and go into the directory.
git clone git@github.com:bitcoin/bitcoin.git bitcoin
cd bitcoin
2. Build bitcoind:
cd src
make -f makefile.osx
3. It is a good idea to build and run the unit tests, too:
make -f makefile.osx test
Instructions: HomeBrew
----------------------
@ -72,91 +43,109 @@ Instructions: HomeBrew @@ -72,91 +43,109 @@ Instructions: HomeBrew
brew install boost miniupnpc openssl berkeley-db4
Note: After you have installed the dependencies, you should check that the Brew installed version of OpenSSL is the one available for compilation. You can check this by typing
Note: After you have installed the dependencies, you should check that the Brew-installed
version of OpenSSL is the one available for compilation. You can check this by typing
openssl version
into Terminal. You should see OpenSSL 1.0.1e 11 Feb 2013.
If not, you can ensure that the Brew OpenSSL is correctly linked by running
brew link openssl --force
If that's not the case, you *could* `brew link --force openssl` but it's a bad idea.
Instead, it's enough to make sure the right openssl binary is on your $PATH:
Rerunning "openssl version" should now return the correct version.
export PATH=/usr/local/opt/openssl/bin:$PATH
### Building `bitcoind`
### Building `twisterd`
1. Clone the github tree to get the source code and go into the directory.
git clone git@github.com:bitcoin/bitcoin.git bitcoin
cd bitcoin
git clone git@github.com:miguelfreitas/twister-core.git
cd twister-core
2. Set system variables to match your environment. THIS IS IMPORTANT!
2. Modify source in order to pick up the `openssl` library.
export OPENSSL_INCLUDE_PATH=/usr/local/opt/openssl/include
export OPENSSL_LIB_PATH=/usr/local/opt/openssl/lib
export BDB_INCLUDE_PATH=/usr/local/opt/berkeley-db4/include
export BDB_LIB_PATH=/usr/local/opt/berkeley-db4/lib
export BOOST_INCLUDE_PATH=/usr/local/opt/boost/include
export BOOST_LIB_PATH=/usr/local/opt/boost/lib
export BOOST_LIB_SUFFIX=-mt
Edit `makefile.osx` to account for library location differences. There's a
diff in `contrib/homebrew/makefile.osx.patch` that shows what you need to
change, or you can just patch by doing
3. Build libtorrent
patch -p1 < contrib/homebrew/makefile.osx.patch
cd libtorrent
./bootstrap.sh
./configure --enable-logging --enable-debug --enable-dht
make
make install
3. Build bitcoind:
4. Build twisterd. Note: it *will* emit a lot of warnings, but as long as you don't get
actual `error` messages, it should be fine:
cd src
make -f makefile.osx
4. It is a good idea to build and run the unit tests, too:
5. It is a good idea to build and run the unit tests, too:
make -f makefile.osx test
Creating a release build
------------------------
6. If things go south, before trying again, make sure you clean it up:
A bitcoind binary is not included in the Bitcoin-Qt.app bundle. You can ignore
this section if you are building `bitcoind` for your own use.
make -f makefile.osx clean
If you are building `bitcoind` for others, your build machine should be set up
as follows for maximum compatibility:
All dependencies should be compiled with these flags:
If all went well, you should now have a twisterd executable in the src directory.
See the Running instructions below.
-mmacosx-version-min=10.5 -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk
Instructions: MacPorts (UNTESTED!!)
---------------------------------
For MacPorts, that means editing your macports.conf and setting
`macosx_deployment_target` and `build_arch`:
### Install dependencies
macosx_deployment_target=10.5
build_arch=i386
Installing the dependencies using MacPorts is very straightforward.
... and then uninstalling and re-installing, or simply rebuilding, all ports.
sudo port install boost db48@+no_java openssl miniupnpc
### Building `twisterd`
As of December 2012, the `boost` port does not obey `macosx_deployment_target`.
Download `http://gavinandresen-bitcoin.s3.amazonaws.com/boost_macports_fix.zip`
for a fix. Some ports also seem to obey either `build_arch` or
`macosx_deployment_target`, but not both at the same time. For example, building
on an OS X 10.6 64-bit machine fails. Official release builds of Bitcoin-Qt are
compiled on an OS X 10.6 32-bit machine to workaround that problem.
1. Clone the github tree to get the source code and go into the directory.
Once dependencies are compiled, creating `Bitcoin-Qt.app` is easy:
git clone git@github.com:miguelfreitas/twister-core.git
cd twister-core
make -f Makefile.osx RELEASE=1
2. Build twisterd:
cd src
make -f makefile.osx
3. It is a good idea to build and run the unit tests, too:
make -f makefile.osx test
Running
-------
It's now available at `./bitcoind`, provided that you are still in the `src`
It's now available at `./twisterd`, provided that you are still in the `src`
directory. We have to first create the RPC configuration file, though.
Run `./bitcoind` to get the filename where it should be put, or just try these
Run `./twisterd` to get the filename where it should be put, or just try these
commands:
echo -e "rpcuser=bitcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
echo -e "rpcuser=twisterrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/.twister/twister.conf"
chmod 600 "/Users/${USER}/.twister/twister.conf"
When next you run it, it will start downloading the blockchain, but it won't
output anything while it's doing this. This process may take several hours.
output anything while it's doing this. This process may take several hours. If you see a lonely
`connect: Operation timed out`, don't freak out, it seems to work fine.
Other commands:
./bitcoind --help # for a list of command-line options.
./bitcoind -daemon # to start the bitcoin daemon.
./bitcoind help # When the daemon is running, to get a list of RPC commands
./twisterd --help # for a list of command-line options.
./twisterd -daemon # to start the daemon.
./twisterd help # When the daemon is running, to get a list of RPC commands
In order to get the HTML interface, you'll have to download it and link it in .twister:
git clone git@github.com:miguelfreitas/twister-html.git
ln -s twister-html /Users/${USER}/.twister/html
Loading…
Cancel
Save