%bcond_without system_sqlite # system sqlite3
%bcond_without system_lz4 # system lz4
%bcond_without system_fastlz # system fastlz
-%bcond_without system_libafdt # system libafdt
+%bcond_with system_libafdt # system libafdt
%bcond_without system_libzip # system libzip
+# cotire breaks sqlite3 on builders: https://github.com/facebook/hhvm/issues/4524
+%bcond_with cotire # cotire (compile time reducer): Speed up the build by precompiling headers
# TODO
# - system xhp
# hphp/system/idl/constants.idl.json defines it as 5.6.99-hhvm, but use some saner value
%define php_version 5.6.0
-# git show HHVM-3.3.2
-%define githash 9046034b8d82b06e9feb75b72e2b0106a2707c2c
+# git show HHVM-3.3.5
+%define githash b2856c601e317b6d66fd1861c4cc889ae91d9f6f
# these hashes are git submodules (be sure to check them on proper branch)
-%define thirdparty fdef620
+# GIT_DIR=third-party/.git git log -1
+%define thirdparty bf581f8
+# 6e46d468cf2876dd59c7a4dddcb4e37abf070b7a
+# GIT_DIR=third-party/folly/src/.git git log -1
%define folly 6e46d46
Summary: Virtual Machine, Runtime, and JIT for PHP
Name: hhvm
# we prefer LTS versions
# see http://hhvm.com/blog/6083/hhvm-long-term-support
-Version: 3.3.2
-Release: 1
+Version: 3.3.5
+Release: 3
License: PHP 3.01 and BSD
Group: Development/Languages
Source0: https://github.com/facebook/hhvm/archive/HHVM-%{version}.tar.gz
-# Source0-md5: f515560490ece6cbad5d433502c14943
+# Source0-md5: 57af76be5b4a10e35cb6eb705e0ff663
Source2: https://github.com/facebook/folly/archive/%{folly}/folly-3.2-%{folly}.tar.gz
# Source2-md5: c4bdbea4c0ffe0650d12d9ff370b8255
Source3: https://github.com/hhvm/hhvm-third-party/archive/%{thirdparty}/third_party-%{thirdparty}.tar.gz
-# Source3-md5: 63858096c50c172d6c45ddb3d9b6d721
+# Source3-md5: 17210db0b2211c63d911076e02aab487
Source5: %{name}-fcgi.init
Source6: %{name}-fcgi.sysconfig
Source7: php.ini
Patch2: hphpize.patch
Patch3: MAX.patch
Patch4: system-thirdparty.patch
+Patch5: cmake.patch
+Patch6: libvpx2.patch
URL: https://github.com/facebook/hhvm/wiki
BuildRequires: ImageMagick-devel
BuildRequires: a52dec-libs-devel
BuildRequires: imap-devel >= 1:2007
#BuildRequires: jemalloc-devel >= 3.0.0
%{?with_system_libafdt:BuildRequires: libafdt-devel >= 0.1.0}
-%{?with_system_libzip:BuildRequires: libzip-devel >= 0.11.2}
BuildRequires: libcap-devel
BuildRequires: libdwarf-devel >= 20130729
BuildRequires: libicu-devel >= 4.2
BuildRequires: libunwind-devel
BuildRequires: libxml2-devel
BuildRequires: libxslt-devel
+%{?with_system_libzip:BuildRequires: libzip-devel >= 0.11.2}
%{?with_system_lz4:BuildRequires: lz4-devel >= 0.0-1.r119}
BuildRequires: mysql-devel
BuildRequires: ocaml-findlib
# check later, seem unused
#BuildRequires: bison >= 2.3
#BuildRequires: flex >= 2.5.35
-#BuildRequires: libafdt-devel >= 0.1.0
+BuildRequires: libafdt-devel >= 0.1.0
#BuildRequires: re2c >= 0.13.0
Provides: %{name}(api) = %{hhvm_api_version}
Provides: php(core) = %{php_version}
%patch2 -p1
%patch3 -p1
%patch4 -p1
+#%patch5 -p1
+%patch6 -p1
# prefer ones from system
rm CMake/FindBISON.cmake
rm CMake/FindFreetype.cmake
# ensure system libs get used
-# NOTE: keep sqlite dir, build breaks with 3.8.5.0
-
cd third-party
rm -r pcre \
+ %{?with_system_sqlite:libsqlite3} \
%{?with_system_lz4:lz4} \
%{?with_system_dconv:double-conversion} \
%{?with_system_fastlz:fastlz} \
-DHHVM_DYNAMIC_EXTENSION_DIR=%{hhvm_extensiondir} \
-DUSE_JEMALLOC=OFF \
-DUSE_TCMALLOC=OFF \
- -DHPHP_NOTEST=ON \
- -DSYSTEM_PCRE=ON \
- %{?with_system_sqlite:-DSYSTEM_SQLITE3=ON} \
- %{?with_system_lz4:-DSYSTEM_LZ4=ON} \
- %{?with_system_dconv:-DSYSTEM_DOUBLE_CONVERSION=ON} \
- %{?with_system_fastlz:-DSYSTEM_FASTLZ=ON} \
- %{?with_system_libafdt:-DSYSTEM_LIBAFDT=ON} \
- %{?with_system_libzip:-DSYSTEM_LIBZIP=ON} \
- -DENABLE_COTIRE=ON \
+ -DTEST_BIN=OFF \
+ -DENABLE_COTIRE=%{!?with_cotire:OFF}%{?with_cotire:ON} \
.
# setup COMPILER_ID/HHVM_REPO_SCHEMA so it doesn't look it up from our package git repo
if [ ! -f installed.stamp ]; then
# begin install block
+# fix broken cmake rules
+# TODO: fix cmake rules
+if [ -d $RPM_BUILD_ROOT%{_prefix}/usr ]; then
+ cp -a $RPM_BUILD_ROOT%{_prefix}/usr/* $RPM_BUILD_ROOT%{_prefix}
+ rm -rf $RPM_BUILD_ROOT%{_prefix}/usr
+fi
+
install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}}
cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
install -p hphp/hack/bin/hh_{server,client} $RPM_BUILD_ROOT%{_bindir}
-%if 0
-# setup -devel
-install -d $RPM_BUILD_ROOT%{_datadir}/cmake/Modules
-cp -p CMake/*.cmake $RPM_BUILD_ROOT%{_datadir}/cmake/Modules
-
-HPHP_HOME=$(pwd)
-sed -e "
- /HHVM_INCLUDE_DIRS/ s,$HPHP_HOME,%{_includedir},g
-" hphp/tools/hphpize/hphpize.cmake > $RPM_BUILD_ROOT%{_datadir}/cmake/Modules/hphpize.cmake
-
-oIFS=$IFS
-IFS=";"
-set -- $(sed -ne 's/set(HHVM_INCLUDE_DIRS "\(.*\)")/\1/p' hphp/tools/hphpize/hphpize.cmake)
-IFS=$oIFS
-set -- $(
- for dir in "$@"; do
- [[ "$dir" = $HPHP_HOME/hphp/* ]] && echo $dir
- done
-)
-
-set +x
-for dir in "$@" \
- $HPHP_HOME/hphp/runtime \
- $HPHP_HOME/hphp/util \
- $HPHP_HOME/hphp/neo \
- $HPHP_HOME/hphp/system \
- $HPHP_HOME/hphp/parser \
-; do
- echo "D %{_includedir}${dir#$HPHP_HOME}"
- find $dir -name '*.h' | while read path; do
- file=%{_includedir}${path#$HPHP_HOME}
- echo "F $file"
- install -Dp $path $RPM_BUILD_ROOT$file
- done
-done
-set -x
-%endif
-
# end of install block
touch installed.stamp; fi