Fix nested ArrayObject assignment
[hiphop-php.git] / configure_ubuntu_12.04.sh
blob1ac19dda6c725385cb03153d1556ebdf0f3913fc
1 #########################################
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 \
43 libmagickwand-dev libxslt1-dev &
45 git clone git://github.com/libevent/libevent.git --quiet &
46 git clone git://github.com/bagder/curl.git --quiet &
47 svn checkout http://google-glog.googlecode.com/svn/trunk/ google-glog --quiet &
48 wget http://www.canonware.com/download/jemalloc/jemalloc-3.0.0.tar.bz2 --quiet &
50 # init submodules
51 git submodule update --init
53 # wait until all background processes finished
54 FAIL=0
56 for job in `jobs -p`
58 echo "waiting for background job $job"
59 wait $job || let "FAIL+=1"
60 done
62 if [ "$FAIL" == "0" ];
63 then
64 echo "all downloads finished"
65 else
66 echo "$FAIL errors while downloading!"
67 exit 100
70 # Leave this install till after the main parallel package install above
71 # since it adds a non-12.04 package repo and we don't want to
72 # pull EVERYTHING in, just the newer gcc compiler (and toolchain)
73 GCC_VER=4.7
74 if [ "x${TRAVIS}" != "x" ]; then
75 GCC_VER=4.8
77 sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
78 sudo apt-get -y update
79 sudo apt-get -y install gcc-${GCC_VER} g++-${GCC_VER}
80 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_VER} 60 \
81 --slave /usr/bin/g++ g++ /usr/bin/g++-${GCC_VER}
82 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 \
83 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
84 sudo update-alternatives --set gcc /usr/bin/gcc-${GCC_VER}
86 # libevent
87 cd libevent
88 git checkout release-1.4.14b-stable
89 cat ../hphp/third_party/libevent-1.4.14.fb-changes.diff | patch -p1
90 ./autogen.sh
91 ./configure --prefix=$CMAKE_PREFIX_PATH
92 make -j $CPUS
93 make install
94 cd ..
96 # curl
97 cd curl
98 ./buildconf
99 ./configure --prefix=$CMAKE_PREFIX_PATH
100 make -j $CPUS
101 make install
102 cd ..
104 # glog
105 cd google-glog
106 ./configure --prefix=$CMAKE_PREFIX_PATH
107 make -j $CPUS
108 make install
109 cd ..
111 # jemaloc
112 tar xjvf jemalloc-3.0.0.tar.bz2
113 cd jemalloc-3.0.0
114 ./configure --prefix=$CMAKE_PREFIX_PATH
115 make -j $CPUS
116 make install
117 cd ..
119 # cleanup
120 rm -rf libevent curl google-glog jemalloc-3.0.0.tar.bz2 jemalloc-3.0.0
122 # hphp
123 cmake .
125 echo "-------------------------------------------------------------------------"
126 echo "Done. Now run:"
127 echo " CMAKE_PREFIX_PATH=\`pwd\`/.. make"