blob: 9a91cc280324633e779da86f31749453d49ec4ba [file] [log] [blame]
#!/bin/bash
# fail on command error
set -e
# echo back each command
set -x
export ONOS_HOME=${ONOS_HOME:-$(cd `dirname $0`; pwd)}
export RAMCLOUD_HOME=${RAMCLOUD_HOME:-~/ramcloud}
source ${ONOS_HOME}/scripts/common/utils.sh
confirm-if-root
if [ -d ${RAMCLOUD_HOME} ]; then
echo "${RAMCLOUD_HOME} already exist, please rename or remove them."
exit 1
fi
# install dependencies
sudo apt-get -y install build-essential git-core libcppunit-dev libboost-all-dev libpcre3-dev protobuf-compiler libprotobuf-dev libcrypto++-dev libevent-dev scons libssl-dev libzookeeper-mt-dev
# clone ramcloud
git clone git://fiz.stanford.edu/git/ramcloud.git ${RAMCLOUD_HOME}
cd ${RAMCLOUD_HOME}
git checkout master
# Switch to release 1.0 + fix for newer gcc
git reset --hard 6a3eb98ae14ec6f732f06775220287c7245f5ff0
# bug fix for MultiWrite, make zookeeper path configurable. (TODO send this patch to upstream)
git apply ${ONOS_HOME}/ramcloud-build-scripts/ramcloud.patch
git apply ${ONOS_HOME}/ramcloud-build-scripts/increment_fix.patch
mkdir ${RAMCLOUD_HOME}/private
cp -vf ${ONOS_HOME}/ramcloud-build-scripts/MakefragPrivateTop ${RAMCLOUD_HOME}/private/MakefragPrivateTop
# download submodule (logcabin, gtest)
git submodule update --init --recursive
# cherry-pick logcabin bug fix
cd logcabin
git cherry-pick --no-commit 77f0ea2da82e7abe71bb4caf084aa527de6dea50 3862499f477d0e371950aebcb829ddd8ee194962
git apply ${ONOS_HOME}/ramcloud-build-scripts/logcabin.patch
cd ..
# compile logcabin
make logcabin
# compile ramcloud
make DEBUG=no "$@"
# build ramcloud JNI lib
${ONOS_HOME}/build-ramcloud-java-bindings.sh