Make sure we don't throw without catch blocks
[hiphop-php.git] / configure_ubuntu_12.04.sh
blob21fa1243dd744778d4b9f91622117f79a8ea84dd
1 #########################################
2 #
3 # Install all the dependencies for HipHop
5 #########################################
7 SCRIPT_NAME='./configure_ubuntu_12.04.sh'
8 if [ "$0" != "$SCRIPT_NAME" ]; then
9 echo "Run the script from the hiphop-php directory like:"
10 echo " $SCRIPT_NAME"
11 exit 1
14 if [ "x${TRAVIS}" != "x" ]; then
15 # Collect some stats for use in tuning build later on
16 free
17 CPUS=`cat /proc/cpuinfo | grep -E '^processor' | tail -1 | cut -d : -f 2`
18 CPUS=`expr ${CPUS} + 1`
19 echo "CPUs: ${CPUS}"
22 export CMAKE_PREFIX_PATH=`/bin/pwd`/..
24 # install python-software-properties before trying to add a PPA
25 sudo apt-get -y update
26 sudo apt-get install -y python-software-properties
28 # install apt-fast to speed up later dependency installation
29 sudo add-apt-repository -y ppa:apt-fast/stable
30 sudo apt-get -y update
31 sudo apt-get -y install apt-fast
33 # install the actual dependencies
34 sudo apt-fast -y update
35 sudo apt-fast -y install git-core cmake g++ libboost1.48-dev libmysqlclient-dev \
36 libxml2-dev libmcrypt-dev libicu-dev openssl build-essential binutils-dev \
37 libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev \
38 autoconf libtool libcurl4-openssl-dev libboost-regex1.48-dev libboost-system1.48-dev \
39 libboost-program-options1.48-dev libboost-filesystem1.48-dev libboost-thread1.48-dev \
40 wget memcached libreadline-dev libncurses-dev libmemcached-dev libbz2-dev \
41 libc-client2007e-dev php5-mcrypt php5-imagick libgoogle-perftools-dev \
42 libcloog-ppl0 libelf-dev libdwarf-dev libunwind7-dev subversion &
44 git clone git://github.com/libevent/libevent.git --quiet &
45 git clone git://github.com/bagder/curl.git --quiet &
46 svn checkout http://google-glog.googlecode.com/svn/trunk/ google-glog --quiet &
47 wget http://www.canonware.com/download/jemalloc/jemalloc-3.0.0.tar.bz2 --quiet &
49 # init submodules
50 git submodule update --init
52 # wait until all background processes finished
53 FAIL=0
55 for job in `jobs -p`
57 echo "waiting for background job $job"
58 wait $job || let "FAIL+=1"
59 done
61 if [ "$FAIL" == "0" ];
62 then
63 echo "all downloads finished"
64 else
65 echo "$FAIL errors while downloading!"
66 exit 100
67 fi
69 # Leave this install till after the main parallel package install above
70 # since it adds a non-12.04 package repo and we don't want to
71 # pull EVERYTHING in, just the newer gcc compiler (and toolchain)
72 GCC_VER=4.7
73 if [ "x${TRAVIS}" != "x" ]; then
74 GCC_VER=4.8
76 sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
77 sudo apt-get -y update
78 sudo apt-get -y install gcc-${GCC_VER} g++-${GCC_VER}
79 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_VER} 60 \
80 --slave /usr/bin/g++ g++ /usr/bin/g++-${GCC_VER}
81 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 \
82 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
83 sudo update-alternatives --set gcc /usr/bin/gcc-${GCC_VER}
85 # libevent
86 cd libevent
87 git checkout release-1.4.14b-stable
88 cat ../hphp/third_party/libevent-1.4.14.fb-changes.diff | patch -p1
89 ./autogen.sh
90 ./configure --prefix=$CMAKE_PREFIX_PATH
91 make
92 make install
93 cd ..
95 # curl
96 cd curl
97 ./buildconf
98 ./configure --prefix=$CMAKE_PREFIX_PATH
99 make
100 make install
101 cd ..
103 # glog
104 cd google-glog
105 ./configure --prefix=$CMAKE_PREFIX_PATH
106 make
107 make install
108 cd ..
110 # jemaloc
111 tar xjvf jemalloc-3.0.0.tar.bz2
112 cd jemalloc-3.0.0
113 ./configure --prefix=$CMAKE_PREFIX_PATH
114 make
115 make install
116 cd ..
118 # cleanup
119 rm -rf libevent curl google-glog jemalloc-3.0.0.tar.bz2 jemalloc-3.0.0
121 # hphp
122 cmake .
124 echo "-------------------------------------------------------------------------"
125 echo "Done. Now run:"
126 echo " CMAKE_PREFIX_PATH=\`pwd\`/.. make"