HipHop for PHP インストールログ

Amazon EC2 CentOS 64bit 版にインストール

インストールの準備(yum 系)

cd /usr/local/src
mkdir hiphop
cd hiphop
yum --enablerepo=rpmforge -y install git
yum install gcc44 cmake g++ libboost-dev flex bison re2c libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev git-core autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev
yum remove libevent
yum install boost boost-devel
yum install mcrypt
yum install php-mcrypt libmcrypt mysql-libs php-mysql mysql libmemcached
yum install pcre-devel pcre
yum install libxml2-devel
yum install expat expat-devel
yum install bzip2

rpm -e mcrypt-2.6.8-1.el5.x86_64
rpm -e php-mcrypt-5.3.3-1.el5.remi.x86_64
rpm -e libmcrypt-2.5.8-4.el5.centos
yum install mcrypt libmcrypt bzip2-devel
yum install openldap-servers openldap-clients openldap-devel
yum install readline-devel
yum install libcap-devel libmcrypt-devel libssh2 openssl-devel re2c
yum install binutils-devel ncurses-devel

.bashrc_profile の設定

LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/lib64
export LD_LIBRARY_PATH

export TBB20_INSTALL_DIR=/usr/local/tbb22_012oss
source $TBB20_INSTALL_DIR/intel64/cc4.1.0_libc2.4_kernel2.6.16.21/bin/tbbvars.sh

boost インストール

yum で入れられる boost が古すぎるため、入れる前に古いバージョンを削除すること /usr/local/include, /usr/local/lib, /usr/local/lib64 など

wget ftp://ftp.pbone.net/mirror/ftp.sourceforge.net/pub/sourceforge/h/project/hp/hphp/CentOS%205%2064bit/RPM/boost-1.37.0-1.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/ftp.sourceforge.net/pub/sourceforge/h/project/hp/hphp/CentOS%205%2064bit/RPM/boost-devel-1.37.0-1.x86_64.rpm
rpm -Uvh boost-1.37.0-1.x86_64.rpm
rpm -Uvh boost-devel-1.37.0-1.x86_64.rpm

libevent インストール

wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar -xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
cp ../hiphop-php/src/third_party/libevent.1.4.13.fb-changes.diff .
patch < libevent.1.4.13.fb-changes.diff

## patch はパスが通らないときは diff ファイルの中に書いてあるパスを変えたりする

./configure
make
make install
cd ..

鬼車インストール

wget http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.2.tar.gz
tar xvfz onig-5.9.2.tar.gz
cd onig-5.9.2
./configure && make && sudo make install

libCurl インストール

wget http://curl.haxx.se/download/curl-7.20.0.tar.gz
tar -xvzf curl-7.20.0.tar.gz
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .

## libcurl.fb-changes.diff を修正ここから
curl-old/include/curl/multi.h       20 May 2008 10:21:50 -0000      1.45
curl-new/include/curl/multi.h       29 Jan 2010 23:45:18 -0000
を
include/curl/multi.h        20 May 2008 10:21:50 -0000      1.45
include/curl/multi.h        29 Jan 2010 23:45:18 -0000
に。

curl-old/lib/multi.c        28 Jan 2010 15:34:18 -0000      1.210
curl-new/lib/multi.c        29 Jan 2010 23:45:19 -0000
を
lib/multi.c 28 Jan 2010 15:34:18 -0000      1.210
lib/multi.c 29 Jan 2010 23:45:19 -0000
に。
##

patch -p0 < libcurl.fb-changes.diff
./configure
make
make install
cd ..

TBB の設定

参考:http://www.threadingbuildingblocks.org/ver.php?fid=161

wget http://www.threadingbuildingblocks.org/uploads/78/146/2.2%20update%202/tbb22_012oss_lin.tgz
tar zxvf tbb22_012oss_lin.tgz
mv tbb22_012oss /usr/local/.
export TBB_INSTALL_DIR="/usr/local/tbb22_012oss"
export TBB_ARCH_PLATFORM="$TBB_INSTALL_DIR/intel64/cc4.1.0_libc2.4_kernel2.6.16.21"

パス設定および Hiphop for PHP のビルド (hiphop アカウント)

cd hiphop-php
git clone git://github.com/facebook/hiphop-php
cd hiphop-php/
git submodule init
git submodule update
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
export CC=gcc44
export TBB_INSTALL_DIR="/usr/local/tbb22_012oss"
export TBB_ARCH_PLATFORM="$TBB_INSTALL_DIR/intel64/cc4.1.0_libc2.4_kernel2.6.16.21"
cmake .
make

export の設定がよくわからないけど一度 source .bash_profile を cmake する前にやり直したりしてた。cmake は一度失敗すると CMakeFilters や *.cmake を削除しないと中間ファイルが邪魔してエラーが取れないので、該当ファイルを削除するかいったんすべて削除して git clone しなおすのがよい。