2 # - system libevent2: https://github.com/facebook/hiphop-php/pull/421
3 # - system libmbfl, system xhp, sqlite3
4 %define githash 78394ee
6 Summary: Virtual Machine, Runtime, and JIT for PHP
9 Release: 0.%{githash}.%{rel}
11 Group: Development/Languages
12 Source0: https://github.com/facebook/hiphop-php/archive/%{githash}/HPHP-%{version}.%{githash}.tar.gz
13 # Source0-md5: 81742a0535a6bab906208d3756b206d1
14 # need fb.changes.patch, which is available for 1.4 only
15 Source1: http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
16 # Source1-md5: a00e037e4d3f9e4fe9893e8a2d27918c
17 Source2: get-source.sh
18 Patch0: cmake-missing-library.patch
19 Patch1: libevent14.patch
20 Patch3: system-xhp.patch
21 Patch4: system-libafdt.patch
22 Patch5: system-folly.patch
23 Patch6: boost-system-category.patch
24 URL: http://wiki.github.com/facebook/hiphop-php/
25 BuildRequires: binutils-devel
26 BuildRequires: bison >= 2.3
27 BuildRequires: boost-devel >= 1.50
28 BuildRequires: cmake >= 2.8.5
29 BuildRequires: curl-devel >= 7.29.0
30 BuildRequires: elfutils-devel
31 BuildRequires: expat-devel
32 BuildRequires: flex >= 2.5.35
33 BuildRequires: gd-devel
34 BuildRequires: glog-devel >= 0.3.2
35 BuildRequires: imap-devel >= 1:2007
36 #BuildRequires: jemalloc-devel
37 BuildRequires: libafdt-devel >= 0.1.0
38 BuildRequires: libcap-devel
39 BuildRequires: libdwarf-devel
40 #BuildRequires: libevent-devel >= 1.4.14
41 BuildRequires: libicu-devel >= 4.2
42 #BuildRequires: libmbfl-devel
43 BuildRequires: libmcrypt-devel
44 BuildRequires: libmemcached-devel >= 1.0.4
45 BuildRequires: libstdc++-devel >= 6:4.3
46 BuildRequires: libunwind-devel
47 BuildRequires: libxml2-devel
48 BuildRequires: mysql-devel
49 BuildRequires: oniguruma-devel
50 BuildRequires: openssl-devel
51 BuildRequires: pcre-devel
52 #BuildRequires: php-xhp-devel >= 1.3.9-6
53 BuildRequires: re2c >= 0.13.0
54 BuildRequires: readline-devel
55 BuildRequires: rpmbuild(macros) >= 1.600
56 BuildRequires: tbb-devel >= 4.0.6000
57 BuildRequires: zlib-devel
58 ExclusiveArch: %{x8664}
59 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
61 # strip would remove systemlib.php copied into binary
62 # see CMake/HPHPFunctions.cmake embed_systemlib function
63 %define _noautostrip .*%{_bindir}/hhvm
66 HipHop VM (HHVM) is a new open-source virtual machine designed for
67 executing programs written in PHP. HHVM uses a just-in-time
68 compilation approach to achieve superior performance while maintaining
69 the flexibility that PHP developers are accustomed to. HipHop VM (and
70 before it HPHPc) has realized > 5x increase in throughput for Facebook
71 compared with Zend PHP 5.2.
73 HipHop is most commonly run as a standalone server, replacing both
78 mv %{name}-%{githash}*/* .
82 ln -s libevent-1.4.*-stable libevent
83 %{__patch} -d libevent -p1 < hphp/third_party/libevent-1.4.14.fb-changes.diff
92 #rm -rf src/third_party/libmbfl
93 #sed -i -e '/add_subdirectory(third_party\/libmbfl)/d' src/CMakeLists.txt
95 rm -rf src/third_party/xhp
96 rm -rf src/third_party/libafdt
100 # build libevent 1.4 with fb patches
101 if [ ! -d libevent/.libs ]; then
103 # TODO: should use static linking, but then it fails to detect libraries due missing -lrt
105 %{?0:--enable-static} \
106 %{?0:--disable-shared}
113 export HPHP_HOME=$(pwd)
114 export HPHP_LIB=$HPHP_HOME/bin
117 export LIBEVENT_PREFIX=$HPHP_HOME/libevent
119 -DLibEvent_LIB=$HPHP_HOME/libevent/libevent.so \
120 -DLibEvent_INCLUDE_PATHS=$HPHP_HOME/libevent \
121 -DLibEvent_LIB_PATHS=$HPHP_HOME/libevent/.libs \
125 # out of dir build broken (can't find it's tools)
130 CPPFLAGS="%{rpmcppflags} -fno-permissive"
132 -DLIBEVENT_LIB=$HPHP_HOME/libevent/lib/libevent.so \
133 -DLIBEVENT_INCLUDE_DIR=$HPHP_HOME/libevent \
134 -DCMAKE_PREFIX_PATH=%{_prefix} \
135 -DSKIP_BUNDLED_XHP=ON \
142 rm -rf $RPM_BUILD_ROOT
144 DESTDIR=$RPM_BUILD_ROOT
146 install -d $RPM_BUILD_ROOT%{_datadir}/%{name}/hdf
147 cp -p hphp/doc/mime.hdf $RPM_BUILD_ROOT%{_datadir}/%{name}/hdf/static.mime-types.hdf
149 # install our libevent for now
150 install -d $RPM_BUILD_ROOT%{_libdir}
151 libtool --mode=install install -p libevent/libevent.la $RPM_BUILD_ROOT%{_libdir}
152 %{__rm} $RPM_BUILD_ROOT%{_libdir}/libevent.{a,la,so}
155 rm -rf $RPM_BUILD_ROOT
157 %post -p /sbin/ldconfig
158 %postun -p /sbin/ldconfig
161 %defattr(644,root,root,755)
162 %doc README.md hphp/NEWS
163 %attr(755,root,root) %{_bindir}/hhvm
164 %attr(755,root,root) %{_libdir}/libevent-1.4.so.*.*.*
165 %ghost %{_libdir}/libevent-1.4.so.2
167 %dir %{_datadir}/%{name}
168 %dir %{_datadir}/%{name}/hdf
169 %{_datadir}/%{name}/hdf/static.mime-types.hdf