@ -1,13 +1,11 @@
Mac OS X Build Instructions and Notes
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
Notes
-----
-----
* See [readme-qt.md ](readme-qt.md ) for instructions on building Bitcoin-Qt, the
* Tested on OS X 10.9.1 on Intel processors only. PPC is not
graphical user interface.
* Tested on OS X 10.5 through 10.8 on Intel processors only. PPC is not
supported because it is big-endian.
supported because it is big-endian.
* All of the commands should be executed in a Terminal application. The
* All of the commands should be executed in a Terminal application. The
built-in one is located in `/Applications/Utilities` .
built-in one is located in `/Applications/Utilities` .
@ -31,39 +29,12 @@ available via Homebrew or MacPorts.
You will also need to install [Homebrew ](http://mxcl.github.io/homebrew/ )
You will also need to install [Homebrew ](http://mxcl.github.io/homebrew/ )
or [MacPorts ](https://www.macports.org/ ) in order to install library
or [MacPorts ](https://www.macports.org/ ) in order to install library
dependencies. It's largely a religious decision which to choose, but, as of
dependencies. It's largely a religious decision which to choose, but I tested only with
December 2012, MacPorts is a little easier because you can just install the
Homebrew.
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.
The installation of the actual dependencies is covered in the Instructions
The installation of the actual dependencies is covered in the Instructions
sections below.
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
Instructions: HomeBrew
----------------------
----------------------
@ -72,91 +43,109 @@ Instructions: HomeBrew
brew install boost miniupnpc openssl berkeley-db4
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
openssl version
into Terminal. You should see OpenSSL 1.0.1e 11 Feb 2013.
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
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:
brew link openssl --force
Rerunning "openssl version" should now return the correct version.
export PATH=/usr/local/opt/openssl/bin:$PATH
### Building `bitcoin d`
### Building `twister d`
1. Clone the github tree to get the source code and go into the directory.
1. Clone the github tree to get the source code and go into the directory.
git clone git@github.com:bitcoin/bitcoin.git bitcoin
git clone git@github.com:miguelfreitas/twister-core.git
cd bitcoin
cd twister-core
2. Modify source in order to pick up the `openssl` library.
2. Set system variables to match your environment. THIS IS IMPORTANT!
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
3. Build libtorrent
diff in `contrib/homebrew/makefile.osx.patch` that shows what you need to
change, or you can just patch by doing
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
cd src
make -f makefile.osx
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
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
make -f makefile.osx clean
this section if you are building `bitcoind` for your own use.
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
### Install dependencies
`macosx_deployment_target` and `build_arch` :
macosx_deployment_target=10.5
Installing the dependencies using MacPorts is very straightforward.
build_arch=i386
... 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` .
1. Clone the github tree to get the source code and go into the directory.
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.
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
Running
-------
-------
It's now available at `./bitcoind` , provided that you are still in the `src`
It's now available at `./twister d` , provided that you are still in the `src`
directory. We have to first create the RPC configuration file, though.
directory. We have to first create the RPC configuration file, though.
Run `./bitcoin d` to get the filename where it should be put, or just try these
Run `./twister d` to get the filename where it should be put, or just try these
commands:
commands:
echo -e "rpcuser=bitcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/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}/Library/Application Support/Bitcoin/bitcoin .conf"
chmod 600 "/Users/${USER}/.twister/twister .conf"
When next you run it, it will start downloading the blockchain, but it won't
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:
Other commands:
./bitcoind --help # for a list of command-line options.
./twisterd --help # for a list of command-line options.
./bitcoind -daemon # to start the bitcoin daemon.
./twisterd -daemon # to start the daemon.
./bitcoind help # When the daemon is running, to get a list of RPC commands
./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