2 # - hphp/runtime/base/runtime-option.cpp evalJitDefault enables jit if /.hhvm-jit exists (yes, in filesystem root)
4 # - system libevent2: https://github.com/facebook/hiphop-php/pull/421
5 # - system libmbfl, system xhp, sqlite3
6 %define githash f951cb8d8812c59344d5322454853b584b668636
7 Summary: Virtual Machine, Runtime, and JIT for PHP
12 Group: Development/Languages
13 Source0: https://github.com/facebook/hhvm/archive/HHVM-%{version}.tar.gz
14 # Source0-md5: 471961d38ba52c66b7038c556b2b7bd8
15 # need fb.changes.patch, which is available for 1.4 only
16 Source1: http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
17 # Source1-md5: a00e037e4d3f9e4fe9893e8a2d27918c
18 Source2: https://github.com/facebook/folly/archive/4d6d659/folly-%{version}-4d6d659.tar.gz
19 Source100: get-source.sh
20 Patch0: cmake-missing-library.patch
21 Patch1: libevent14.patch
22 Patch3: system-xhp.patch
23 Patch4: system-libafdt.patch
24 Patch5: system-folly.patch
25 Patch6: checksum.patch
26 Patch7: imap-gss.patch
28 URL: http://wiki.github.com/facebook/hiphop-php/
29 BuildRequires: binutils-devel
30 BuildRequires: bison >= 2.3
31 BuildRequires: boost-devel >= 1.50
32 BuildRequires: cmake >= 2.8.7
33 BuildRequires: curl-devel >= 7.29.0
34 BuildRequires: elfutils-devel
35 BuildRequires: expat-devel
36 BuildRequires: flex >= 2.5.35
37 BuildRequires: gcc >= 6:4.6.0
38 BuildRequires: gd-devel
39 BuildRequires: glog-devel >= 0.3.2
40 BuildRequires: imap-devel >= 1:2007
41 #BuildRequires: jemalloc-devel >= 3.0.0
42 BuildRequires: libafdt-devel >= 0.1.0
43 BuildRequires: libcap-devel
44 BuildRequires: libdwarf-devel
45 #BuildRequires: libevent-devel >= 1.4.14
46 BuildRequires: libicu-devel >= 4.2
47 #BuildRequires: libmbfl-devel
48 BuildRequires: libmcrypt-devel
49 BuildRequires: libmemcached-devel >= 1.0.4
50 BuildRequires: libstdc++-devel >= 6:4.3
51 BuildRequires: libunwind-devel
52 BuildRequires: libxml2-devel
53 BuildRequires: mysql-devel
54 BuildRequires: oniguruma-devel
55 BuildRequires: openssl-devel
56 BuildRequires: pcre-devel
57 #BuildRequires: php-xhp-devel >= 1.3.9-6
58 BuildRequires: re2c >= 0.13.0
59 BuildRequires: readline-devel
60 BuildRequires: rpmbuild(macros) >= 1.675
61 BuildRequires: tbb-devel >= 4.0.6000
62 BuildRequires: zlib-devel
72 Provides: php(fileinfo)
76 Provides: php(hotprofiler)
78 Provides: php(icu_num_fmt)
79 Provides: php(icu_ucsdet)
80 Provides: php(icu_uspoof)
85 Provides: php(mbstring)
87 Provides: php(memcache)
88 Provides: php(memcached)
90 Provides: php(openssl)
94 Provides: php(pdo_mysql)
95 Provides: php(pdo_sqlite)
98 Provides: php(reflection)
100 Provides: php(session)
101 Provides: php(simplexml)
103 Provides: php(sockets)
105 Provides: php(sqlite3)
106 Provides: php(sysvmsg)
107 Provides: php(sysvsem)
108 Provides: php(sysvshm)
109 Provides: php(thread)
110 Provides: php(thrift_protocol)
111 Provides: php(tokenizer)
112 Provides: php(xhprof)
114 Provides: php(xmlreader)
115 Provides: php(xmlwriter)
118 Obsoletes: hiphop-php < 2.3.2-0.2
119 ExclusiveArch: %{x8664}
120 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
123 HHVM (aka the HipHop Virtual Machine) is a new open-source virtual
124 machine designed for executing programs written in PHP. HHVM uses a
125 just-in-time compilation approach to achieve superior performance
126 while maintaining the flexibility that PHP developers are accustomed
127 to. To date, HHVM (and its predecessor HPHPc before it) has realized
128 over a 9x increase in web request throughput and over a 5x reduction
129 in memory consumption for Facebook compared with the Zend PHP 5.2
132 HHVM can be run as a standalone webserver (i.e. without the Apache
133 webserver and the "mod_php" extension). HHVM can also be used together
134 with a FastCGI-based webserver, and work is in progress to make HHVM
135 work smoothly with Apache.
138 Summary: /usr/bin/php symlink
139 Summary(pl.UTF-8): Dowiązanie symboliczne /usr/bin/php
140 Group: Development/Languages/PHP
141 Requires: %{name} = %{version}-%{release}
142 Obsoletes: /usr/bin/php
145 Package providing /usr/bin/php symlink to PHP CLI.
147 %description program -l pl.UTF-8
148 Pakiet dostarczający dowiązanie symboliczne /usr/bin/php do PHP CLI.
151 Summary: Files for HHVM modules development
152 Group: Development/Languages/PHP
153 URL: https://github.com/facebook/hhvm/wiki/Extension-API
154 Requires: boost-devel >= 1.50
155 Requires: cmake >= 2.8.5
156 Requires: glog-devel >= 0.3.2
157 Requires: libstdc++-devel >= 6:4.3
158 Requires: tbb-devel >= 4.0.6000
162 HHVM provides a set of APIs for adding built-in functionality to the
163 runtime either by way of pure PHP code, or a combination of PHP and
167 %setup -q -a1 -a2 -n %{name}-HHVM-%{version}
169 mv folly-*/* hphp/submodules/folly
170 # https://github.com/facebook/folly/pull/44
171 sed -i -e '21 d' hphp/third_party/folly/folly/detail/Malloc.h
178 # prefer ones from system
179 rm CMake/FindBISON.cmake
180 rm CMake/FindBoost.cmake
181 rm CMake/FindFLEX.cmake
183 ln -s libevent-1.4.*-stable libevent
184 %{__patch} -d libevent -p1 < hphp/third_party/libevent-1.4.14.fb-changes.diff
193 #rm -rf src/third_party/libmbfl
194 #sed -i -e '/add_subdirectory(third_party\/libmbfl)/d' src/CMakeLists.txt
196 rm -rf src/third_party/xhp
197 rm -rf src/third_party/libafdt
201 # build libevent 1.4 with fb patches
202 if [ ! -d libevent/.libs ]; then
204 # TODO: should use static linking, but then it fails to detect libraries due missing -lrt
206 %{?0:--enable-static} \
207 %{?0:--disable-shared}
214 export HPHP_HOME=$(pwd)
215 export HPHP_LIB=$HPHP_HOME/bin
218 # asm linking breaks on $CC containing spaces
219 if [[ "%{__cc}" = *ccache* ]]; then
220 cat <<-'EOF' > $HPHP_LIB/gcc
224 chmod +x $HPHP_LIB/gcc
229 export LIBEVENT_PREFIX=$HPHP_HOME/libevent
231 -DLibEvent_LIB=$HPHP_HOME/libevent/libevent.so \
232 -DLibEvent_INCLUDE_PATHS=$HPHP_HOME/libevent \
233 -DLibEvent_LIB_PATHS=$HPHP_HOME/libevent/.libs \
237 # out of dir build broken (can't find it's tools)
243 -DLIBEVENT_LIB=$HPHP_HOME/libevent/lib/libevent.so \
244 -DLIBEVENT_INCLUDE_DIR=$HPHP_HOME/libevent \
245 -DCMAKE_PREFIX_PATH=%{_prefix} \
246 -DSKIP_BUNDLED_XHP=ON \
251 # setup COMPILER_ID/HHVM_REPO_SCHEMA so it doesn't look it up from our package git repo
252 # see hphp/util/generate-buildinfo.sh
253 export COMPILER_ID=HPHP-%{version}-%{release}-%{githash}
254 export HHVM_REPO_SCHEMA=$(date +%N_%s)
259 rm -rf $RPM_BUILD_ROOT
262 DESTDIR=$RPM_BUILD_ROOT
264 ln -s hhvm $RPM_BUILD_ROOT%{_bindir}/php
265 ln -s hhvm $RPM_BUILD_ROOT%{_bindir}/hphp
267 install -d $RPM_BUILD_ROOT%{_datadir}/%{name}/hdf
268 cp -p hphp/doc/mime.hdf $RPM_BUILD_ROOT%{_datadir}/%{name}/hdf/static.mime-types.hdf
270 # install our libevent for now
271 install -d $RPM_BUILD_ROOT%{_libdir}
272 libtool --mode=install install -p libevent/libevent.la $RPM_BUILD_ROOT%{_libdir}
273 %{__rm} $RPM_BUILD_ROOT%{_libdir}/libevent.{a,la,so}
276 install -d $RPM_BUILD_ROOT%{_datadir}/cmake/Modules
277 cp -a CMake/* $RPM_BUILD_ROOT%{_datadir}/cmake/Modules
281 /HHVM_INCLUDE_DIRS/ s,$HPHP_HOME,%{_includedir},g
282 " hphp/tools/hphpize/hphpize.cmake > $RPM_BUILD_ROOT%{_datadir}/cmake/Modules/hphpize.cmake
286 set -- $(sed -ne 's/set(HHVM_INCLUDE_DIRS "\(.*\)")/\1/p' hphp/tools/hphpize/hphpize.cmake)
290 [[ "$dir" = $HPHP_HOME/hphp/* ]] && echo $dir
296 $HPHP_HOME/hphp/runtime \
297 $HPHP_HOME/hphp/util \
298 $HPHP_HOME/hphp/neo \
299 $HPHP_HOME/hphp/system \
300 $HPHP_HOME/hphp/parser \
302 echo "D %{_includedir}${dir#$HPHP_HOME}"
303 find $dir -name '*.h' | while read path; do
304 file=%{_includedir}${path#$HPHP_HOME}
306 install -Dp $path $RPM_BUILD_ROOT$file
312 rm -rf $RPM_BUILD_ROOT
314 %post -p /sbin/ldconfig
315 %postun -p /sbin/ldconfig
318 %defattr(644,root,root,755)
319 %doc README.md hphp/NEWS
320 %attr(755,root,root) %{_bindir}/hhvm
321 %attr(755,root,root) %{_bindir}/hphp
322 %attr(755,root,root) %{_libdir}/libevent-1.4.so.*.*.*
323 %ghost %{_libdir}/libevent-1.4.so.2
325 %dir %{_datadir}/%{name}
326 %dir %{_datadir}/%{name}/hdf
327 %{_datadir}/%{name}/hdf/static.mime-types.hdf
330 %defattr(644,root,root,755)
331 %attr(755,root,root) %{_bindir}/php
334 %defattr(644,root,root,755)
335 %attr(755,root,root) %{_bindir}/hphpize
337 %{_datadir}/cmake/Modules/hphpize.cmake
338 %{_datadir}/cmake/Modules/FindCClient.cmake
339 %{_datadir}/cmake/Modules/FindEditline.cmake
340 %{_datadir}/cmake/Modules/FindGD.cmake
341 %{_datadir}/cmake/Modules/FindGlog.cmake
342 %{_datadir}/cmake/Modules/FindICU.cmake
343 %{_datadir}/cmake/Modules/FindLdap.cmake
344 %{_datadir}/cmake/Modules/FindLibAfdt.cmake
345 %{_datadir}/cmake/Modules/FindLibCh.cmake
346 %{_datadir}/cmake/Modules/FindLibDL.cmake
347 %{_datadir}/cmake/Modules/FindLibDwarf.cmake
348 %{_datadir}/cmake/Modules/FindLibElf.cmake
349 %{_datadir}/cmake/Modules/FindLibEvent.cmake
350 %{_datadir}/cmake/Modules/FindLibEvent.cmake.bak
351 %{_datadir}/cmake/Modules/FindLibNuma.cmake
352 %{_datadir}/cmake/Modules/FindLibXed.cmake
353 %{_datadir}/cmake/Modules/FindLibiconv.cmake
354 %{_datadir}/cmake/Modules/FindLibinotify.cmake
355 %{_datadir}/cmake/Modules/FindLibmemcached.cmake
356 %{_datadir}/cmake/Modules/FindLibpam.cmake
357 %{_datadir}/cmake/Modules/FindMcrypt.cmake
358 %{_datadir}/cmake/Modules/FindMySQL.cmake
359 %{_datadir}/cmake/Modules/FindNcurses.cmake
360 %{_datadir}/cmake/Modules/FindONIGURUMA.cmake
361 %{_datadir}/cmake/Modules/FindPCRE.cmake
362 %{_datadir}/cmake/Modules/FindPThread.cmake
363 %{_datadir}/cmake/Modules/FindReadline.cmake
364 %{_datadir}/cmake/Modules/FindTBB.cmake
365 %{_datadir}/cmake/Modules/FollySetup.cmake
366 %{_datadir}/cmake/Modules/HPHPCompiler.cmake
367 %{_datadir}/cmake/Modules/HPHPFindLibs.cmake
368 %{_datadir}/cmake/Modules/HPHPFunctions.cmake
369 %{_datadir}/cmake/Modules/HPHPSetup.cmake
370 %{_datadir}/cmake/Modules/Options.cmake