Skip to content

Building and installing HHVM on Debian 6

claudiocastro edited this page Apr 24, 2013 · 26 revisions

(This page is a work in progress. Instructions are for building the HipHop VM, or HHVM for Debian 6 64bit.)

Packages installation

echo "deb http://ftp.nl.debian.org/debian testing main" >> /etc/apt/sources.list
echo 'APT::Default-release "stable";' > /etc/apt/apt.conf.d/51stable
apt-get update

apt-get install git-core cmake libmysqlclient-dev \
  libxml2-dev libmcrypt-dev libicu-dev openssl build-essential binutils-dev \
  libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev \
  autoconf libtool libcurl4-openssl-dev wget memcached \
  libreadline-dev libncurses-dev libmemcached-dev libbz2-dev \
  libc-client2007e-dev php5-mcrypt php5-imagick libgoogle-perftools-dev \
  libcloog-ppl0 libelf-dev libdwarf-dev libunwind7-dev subversion \
  libtbb2/wheezy libtbb-dev/wheezy g++-4.7/wheezy gcc-4.7/wheezy \
  libc6-dev/wheezy libmpfr4/wheezy libgcc1/wheezy binutils/wheezy \
  libc6/wheezy libc-dev-bin/wheezy libc-bin/wheezy libgomp1/wheezy \
  libstdc++6-4.7-dev/wheezy libstdc++6/wheezy cmake/wheezy \
  libarchive12/wheezy cmake-data/wheezy libacl1/wheezy libattr1/wheezy \
  g++/wheezy cpp/wheezy gcc/wheezy make/wheezy libboost-thread1.49.0/wheezy \
  libboost-thread-dev/wheezy libgd2-xpm-dev/squeeze libfontconfig1-dev/squeeze \
  pkg-config/wheezy libdwarf-dev/wheezy binutils-dev/wheezy libboost-system1.49-dev/wheezy \
  libboost-program-options1.49-dev/wheezy libboost-filesystem1.49-dev/wheezy libboost-regex1.49-dev/wheezy

Getting HipHop source-code

mkdir dev
cd dev
git clone git://github.com/facebook/hiphop-php.git
cd hiphop-php
export CMAKE_PREFIX_PATH=`/bin/pwd`/..
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
export USE_HHVM=1
cd ..

Building third-party libraries

libevent

git clone git://github.com/libevent/libevent.git
cd libevent
git checkout release-1.4.14b-stable
cat ../hiphop-php/hphp/third_party/libevent-1.4.14.fb-changes.diff | patch -p1
./autogen.sh
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

libCurl

Make sure that your system time is correct, otherwise ./configure will fail.

git clone git://github.com/bagder/curl.git
cd curl
./buildconf
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

Note: If you're building a version of cURL older than 7.28.0 (for whatever reason), you'll need to apply the patch in src/third_party to update it prior to the make step.

cat ../hiphop-php/src/third_party/libcurl-7.22.1.fb-changes.diff | patch -p1

Google glog

svn checkout http://google-glog.googlecode.com/svn/trunk/ google-glog
cd google-glog
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

(optional) JEMalloc 3.0

wget http://www.canonware.com/download/jemalloc/jemalloc-3.0.0.tar.bz2
tar xjvf jemalloc-3.0.0.tar.bz2
cd jemalloc-3.0.0
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

Building HipHop

cd hiphop-php
git submodule init
git submodule update
export HPHP_HOME=`pwd`
export HPHP_LIB=`pwd`/bin
export CMAKE_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu
cmake .
make

hphp binary can be found in src/hphp folder and is called hphp hhvm binary can be found in src/hhvm folder and is called hhvm

If any errors occur, it may be required to remove the CMakeCache.txt directory in the checkout.

If your failure was on the @make@ command, try to correct the error and run @make@ again, it should restart from the point it stops. If don't, try to remove as explained above.

Clone this wiki locally