diff options
Diffstat (limited to 'install_dependencies.sh')
-rwxr-xr-x | install_dependencies.sh | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/install_dependencies.sh b/install_dependencies.sh new file mode 100755 index 00000000..8f0332e0 --- /dev/null +++ b/install_dependencies.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +#------------------------------------------------------------------------------ +# Bash script for installing pre-requisite packages for cpp-ethereum. +# +# The documentation for cpp-ethereum is hosted at: +# +# http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/ +# +# (c) 2016 cpp-ethereum contributors. +#------------------------------------------------------------------------------ + +if [[ "$OSTYPE" == "darwin"* ]]; then + + if echo `sw_vers` | grep "10.11"; then + echo OS X El Capitan detected + elif echo `sw_vers` | grep "10.10"; then + echo OS X Yosemite detected + else + echo Unsupported OS X version. We only support Yosemite and El Capitan. + exit 1 + fi + + brew update + brew upgrade + + brew install boost + brew install cmake + brew install cryptopp + brew install miniupnpc + brew install leveldb + brew install gmp + brew install jsoncpp + brew install libmicrohttpd + brew install libjson-rpc-cpp + brew install homebrew/versions/llvm37 + +elif [[ "$OSTYPE" == "linux-gnu" ]]; then + + # NOTE - These steps are ONLY correct for Ubuntu Trusty. We need to add + # further conditionals in here for the other Ubuntu versions, and carry on + # from there if we then want to get this pattern working for Debian, + # OpenSUSE, Fedora, Arch Linux, Raspian, FreeBSD, etc. + + # Add additional PPAs which we need to be able to build cpp-ethereum on + # Ubuntu Trusty. That includes our own PPAs and a PPA for getting CMake 3.x + # on Trusty. + sudo add-apt-repository -y ppa:ethereum/ethereum + sudo add-apt-repository -y ppa:ethereum/ethereum-dev + sudo apt-add-repository -y ppa:george-edison55/cmake-3.x + sudo apt-get -y update + + # Install binaries for nearly all of our dependencies + sudo apt-get -y install \ + python-sphinx \ + build-essential \ + cmake \ + git \ + libboost-all-dev \ + libcurl4-openssl-dev \ + libcryptopp-dev \ + libgmp-dev \ + libjsoncpp-dev \ + libleveldb-dev \ + libmicrohttpd-dev \ + libminiupnpc-dev \ + libz-dev \ + opencl-headers + + # The exception is libjson-rpc-cpp, which we have to build from source for + # reliable results. The only binaries available for this package are those + # we made ourselves against the (now very old) v0.4.2 release, which are unreliable, + # so instead we build the latest release label (v0.6.0) from source, which works just + # fine. We should update our PPA. + # + # See https://github.com/ethereum/webthree-umbrella/issues/513 + # + # Hmm. Arachnid is still getting this issue on OS X, which already has v0.6.0, so + # it isn't as simple as just updating all our builds to that version, though that is + # sufficient for us to get CircleCI and TravisCI working. We still haven't got to + # the bottom of this issue, and are going to need to debug it in some scenario where + # we can reproduce it 100%, which MIGHT end up being within our automation here, but + # against a build-from-source-with-extra-printfs() of v0.4.2. + sudo apt-get -y install libargtable2-dev libedit-dev + git clone git://github.com/cinemast/libjson-rpc-cpp.git + cd libjson-rpc-cpp + git checkout v0.6.0 + mkdir build + cd build + cmake .. -DCOMPILE_TESTS=NO + make + sudo make install + sudo ldconfig + cd ../.. + + # And install the English language package and reconfigure the locales. + # We really shouldn't need to do this, and should instead force our locales to "C" + # within our application runtimes, because this issue shows up on multiple Linux distros, + # and each will need fixing in the install steps, where we should really just fix it once + # in the code. + # + # See https://github.com/ethereum/webthree-umbrella/issues/169 + sudo apt-get -y install language-pack-en-base + sudo dpkg-reconfigure locales + +fi |