diff --git a/doc/build-osx.md b/doc/build-osx.md index 271f8f55..dd14715d 100644 --- a/doc/build-osx.md +++ b/doc/build-osx.md @@ -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. 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 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. 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 - 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 \ No newline at end of file