Skip to content

Building and installing HHVM on Debian 6

steelbrain edited this page Oct 3, 2014 · 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 \
  libxslt1.1 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 \
  libmagickwand-dev libevent-dev

Getting HipHop source-code

mkdir dev
cd dev
git clone git://github.com/facebook/hhvm.git --depth=1
cd hhvm
git submodule update --init --recursive
export CMAKE_PREFIX_PATH=`pwd`/..
cd ..

Building third-party libraries

libCurl

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

git clone git://github.com/bagder/curl.git --depth=1
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 third-party to update it prior to the make step.

cat ../hhvm/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 ..

JEMalloc 3.0

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

Building HipHop

cd hhvm
export CMAKE_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu
cmake .
make

Running programs

The hhvm binary can be found in hphp/hhvm/hhvm.

The Hack language

See https://github.com/facebook/hhvm/wiki/Building-the-Hack-Typechecker. Note the Debian 6 does not have a new enough version of OCaml by default. You will have to install a newer version yourself: http://caml.inria.fr/download.en.html.

Errors

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