#!/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

