setup-ekam.sh (2919B)
1 #! /usr/bin/env bash 2 3 set -euo pipefail 4 5 if ! uname | grep -iq Linux; then 6 echo "Sorry, Ekam only works on Linux right now." >&2 7 exit 1 8 fi 9 10 echo -n "Looking for compiler... " 11 if [ "x${CXX:-}" == "x" ]; then 12 if ! (g++ --version | grep -q ' 4[.][789][.]'); then 13 if which g++-4.7 > /dev/null; then 14 CXX=g++-4.7 15 elif which g++-4.8 > /dev/null; then 16 CXX=g++-4.8 17 else 18 echo "none" 19 echo "Please install G++ 4.7 or better. Or, set the environment variable CXX " >&2 20 echo "to a compiler that you think will work." >&2 21 exit 1 22 fi 23 else 24 CXX=g++ 25 fi 26 fi 27 28 echo "$CXX" 29 export CXX 30 31 if [ ! -e .ekam ]; then 32 echo "================================================================================" 33 echo "Fetching Ekam and Protobuf code..." 34 echo "================================================================================" 35 hg clone https://code.google.com/p/kentons-code/ .ekam 36 37 # You don't want these. 38 rm -rf .ekam/src/modc .ekam/src/evlan 39 fi 40 41 if [ ! -e .ekam/src/protobuf ]; then 42 echo "================================================================================" 43 echo "Fetching Protobuf code..." 44 echo "================================================================================" 45 svn checkout http://protobuf.googlecode.com/svn/tags/2.5.0/ .ekam/src/protobuf 46 fi 47 48 if [ ! -e .ekam/src/protobuf/src/config.h ]; then 49 echo "================================================================================" 50 echo "Configuring Protobuf..." 51 echo "================================================================================" 52 pushd .ekam/src/protobuf > /dev/null 53 ./autogen.sh 54 ./configure 55 cp config.h src 56 make maintainer-clean 57 popd 58 fi 59 60 if ! which ekam > /dev/null; then 61 if [ ! -e .ekam/bin/ekam ]; then 62 echo "================================================================================" 63 echo "Bootstrapping Ekam..." 64 echo "================================================================================" 65 pushd .ekam > /dev/null 66 ./bootstrap.sh 67 popd 68 fi 69 else 70 echo "================================================================================" 71 echo "Using already-installed ekam binary: $(which ekam)" 72 echo "================================================================================" 73 fi 74 75 if [ ! -e src/base ]; then 76 ln -s ../.ekam/src/base src/base 77 fi 78 if [ ! -e src/os ]; then 79 ln -s ../.ekam/src/os src/os 80 fi 81 if [ ! -e src/ekam ]; then 82 ln -s ../.ekam/src/ekam src/ekam 83 fi 84 if [ ! -e src/protobuf ]; then 85 ln -s ../.ekam/src/protobuf src/protobuf 86 fi 87 88 echo "================================================================================" 89 echo "All done..." 90 echo "================================================================================" 91 echo "Try:" 92 echo " make -f Makefile.ekam once" 93 echo " make -f Makefile.ekam continuous" 94 echo " make -f Makefile.ekam continuous-opt"