diff --git a/pkgs/development/interpreters/hiphopvm/default.nix b/pkgs/development/interpreters/hiphopvm/default.nix new file mode 100644 index 00000000000..15cf4edc4af --- /dev/null +++ b/pkgs/development/interpreters/hiphopvm/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchurl, fetchgit, cmake, boost, libunwind, mysql, libmemcached, pcre +, libevent, gd, curl, libxml2, icu, flex, bison, openssl, zlib, php, re2c +, expat, libcap, oniguruma, libdwarf, libmcrypt, inteltbb, google_perftools +, bzip2, openldap, readline, libelf, uwimap, binutils, cyrus_sasl, pam +}: + +assert stdenv.system == "x86_64-linux"; +let + src = fetchgit { + url = "git://github.com/facebook/hiphop-php.git"; + rev = "73f1c0ebd9b313f6b3baecd8c8046e0b595b1157"; + sha256 = "104133c6054bc9ab0288eaa0cea168b6699e537b3ea76ecdc38ee833d93dca09"; + }; + + libxml2_280 = stdenv.lib.overrideDerivation libxml2 (args: rec { + name = "libxml2-2.8.0"; + + src = fetchurl { + url = "ftp://xmlsoft.org/libxml2/${name}.tar.gz"; + sha256 = "0ak2mjwvanz91nwxf1kkgbhrkm85vhhkpj7ymz8r6lb84bix1qpj"; + }; + + patches = []; + }); + + curlFB = stdenv.lib.overrideDerivation curl (args: { patches = [ "${src}/src/third_party/libcurl-7.22.1.fb-changes.diff" ]; }); + + fbPatch = "${src}/src/third_party/libevent-1.4.14.fb-changes.diff"; + libeventFB = stdenv.lib.overrideDerivation libevent (args: { patches = [fbPatch]; }); +in +stdenv.mkDerivation { + name = "hiphop-php-73f1c0ebd9"; + inherit src; + dontUseCmakeBuildDir = true; + dontUseCmakeConfigure = true; + USE_HHVM=1; + preConfigure = '' + export HPHP_HOME=$PWD + export HPHP_LIB=$PWD/bin + export TBB_INSTALL_DIR=${inteltbb} + export TBB_ARCH_PLATFORM="intel64/cc4.1.0_libc2.4_kernel2.6.16.21" + sed -i 's| DEPRECATED | DEPRECATED_ |' src/runtime/base/runtime_error.h + ''; + NIX_LDFLAGS = "-lpam -L${pam}/lib"; + MYSQL_DIR=mysql; + buildInputs = [ + cmake boost libunwind mysql libmemcached pcre libeventFB gd curlFB + libxml2_280 icu flex bison openssl zlib php expat libcap oniguruma + libdwarf libmcrypt inteltbb google_perftools bzip2 openldap readline + libelf uwimap binutils cyrus_sasl pam + ]; + installPhase = '' + mkdir -p $out/bin + cp src/hhvm/hhvm $out/bin + cp bin/systemlib.php $out/bin + ''; + patches = [./tbb.patch]; + + meta = { + description = "HipHop is a high performance PHP toolchain."; + homepage = https://github.com/facebook/hiphop-php; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/development/interpreters/hiphopvm/tbb.patch b/pkgs/development/interpreters/hiphopvm/tbb.patch new file mode 100644 index 00000000000..0dee06d00fd --- /dev/null +++ b/pkgs/development/interpreters/hiphopvm/tbb.patch @@ -0,0 +1,13 @@ +diff --git a/CMake/FindTBB.cmake b/CMake/FindTBB.cmake +index 6a09c85..977418c 100644 +--- a/CMake/FindTBB.cmake ++++ b/CMake/FindTBB.cmake +@@ -164,7 +164,7 @@ mark_as_advanced(TBB_INCLUDE_DIR) + #-- Look for libraries + # GvdB: $ENV{TBB_ARCH_PLATFORM} is set by the build script tbbvars[.bat|.sh|.csh] + if (NOT $ENV{TBB_ARCH_PLATFORM} STREQUAL "") +- set (TBB_LIBRARY_DIR "${_TBB_INSTALL_DIR}/$ENV{TBB_ARCH_PLATFORM}/lib") ++ set (TBB_LIBRARY_DIR "${_TBB_INSTALL_DIR}/lib/$ENV{TBB_ARCH_PLATFORM}") + else (NOT $ENV{TBB_ARCH_PLATFORM} STREQUAL "") + # HH: deprecated + message(STATUS "[Warning] FindTBB.cmake: The use of TBB_ARCHITECTURE and TBB_COMPILER is deprecated and may not be supported in future versions. Please set $ENV{TBB_ARCH_PLATFORM} (using tbbvars.[bat|csh|sh]).") diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 60d1a38d0e8..86400e716cc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2369,6 +2369,11 @@ let haxe = callPackage ../development/compilers/haxe { }; + hiphopvm = callPackage ../development/interpreters/hiphopvm { + libevent = libevent14; + boost = boost149; + }; + falcon = builderDefsPackage (import ../development/interpreters/falcon) { inherit cmake; };