]> git.pld-linux.org Git - packages/hhvm.git/blob - hhvm.spec
update php modules list (exclude 'intl.not-done')
[packages/hhvm.git] / hhvm.spec
1 # NOTES:
2 # - hphp/runtime/base/runtime-option.cpp evalJitDefault enables jit if /.hhvm-jit exists (yes, in filesystem root)
3 # TODO
4 # - system libevent2: https://github.com/facebook/hiphop-php/pull/421
5 # - system libmbfl, system xhp, sqlite3
6 # - libdwarf>20120410 issue: https://github.com/facebook/hhvm/issues/1337
7 # git show HHVM-2.4.1
8 %define         githash 072ec429a4c42b481aabaa8bca0210b288a8d55e
9 %define         folly   18bedc2
10 Summary:        Virtual Machine, Runtime, and JIT for PHP
11 Name:           hhvm
12 Version:        2.4.1
13 Release:        0.1
14 License:        PHP 3.01
15 Group:          Development/Languages
16 Source0:        https://github.com/facebook/hhvm/archive/HHVM-%{version}.tar.gz
17 # Source0-md5:  a18dde8a30f8293963e6641ee8cb04c8
18 # need fb.changes.patch, which is available for 1.4 only
19 Source1:        http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
20 # Source1-md5:  a00e037e4d3f9e4fe9893e8a2d27918c
21 Source2:        https://github.com/facebook/folly/archive/%{folly}/folly-0.1-%{folly}.tar.gz
22 # Source2-md5:  5de02fa81641c66a93c2f57094c7aa72
23 Source3:        %{name}-fcgi.init
24 Source4:        %{name}-fcgi.sysconfig
25 Source100:      get-source.sh
26 Patch0:         cmake-missing-library.patch
27 Patch1:         libevent14.patch
28 Patch3:         system-xhp.patch
29 Patch4:         system-libafdt.patch
30 Patch5:         system-folly.patch
31 Patch8:         hphpize.patch
32 Patch9:         notest.patch
33 Patch10:        no-debug.patch
34 URL:            http://wiki.github.com/facebook/hiphop-php/
35 BuildRequires:  apr-devel
36 BuildRequires:  autoconf
37 BuildRequires:  binutils-devel
38 BuildRequires:  boost-devel >= 1.50
39 BuildRequires:  cmake >= 2.8.7
40 BuildRequires:  curl-devel >= 7.29.0
41 BuildRequires:  elfutils-devel
42 BuildRequires:  expat-devel
43 BuildRequires:  gcc >= 6:4.6.0
44 BuildRequires:  gd-devel
45 BuildRequires:  glog-devel >= 0.3.2
46 BuildRequires:  imap-devel >= 1:2007
47 #BuildRequires: jemalloc-devel >= 3.0.0
48 BuildRequires:  libcap-devel
49 BuildRequires:  libdwarf-devel <= 20120410
50 #BuildRequires: libevent-devel >= 1.4.14
51 BuildRequires:  libicu-devel >= 4.2
52 #BuildRequires: libmbfl-devel
53 BuildRequires:  libmcrypt-devel
54 BuildRequires:  libmemcached-devel >= 1.0.4
55 BuildRequires:  libstdc++-devel >= 6:4.3
56 BuildRequires:  libunwind-devel
57 BuildRequires:  libxml2-devel
58 BuildRequires:  mysql-devel
59 BuildRequires:  oniguruma-devel
60 BuildRequires:  openssl-devel
61 BuildRequires:  pcre-devel
62 #BuildRequires: php-xhp-devel >= 1.3.9-6
63 BuildRequires:  readline-devel
64 BuildRequires:  rpmbuild(macros) >= 1.675
65 BuildRequires:  tbb-devel >= 4.0.6000
66 BuildRequires:  zlib-devel
67 # check later, seem unused
68 #BuildRequires: bison >= 2.3
69 #BuildRequires: flex >= 2.5.35
70 #BuildRequires: libafdt-devel >= 0.1.0
71 #BuildRequires: re2c >= 0.13.0
72 Provides:       php(apc)
73 Provides:       php(bcmath)
74 Provides:       php(bz2)
75 Provides:       php(ctype)
76 Provides:       php(curl)
77 Provides:       php(date)
78 Provides:       php(dom)
79 Provides:       php(exif)
80 Provides:       php(fb)
81 Provides:       php(fileinfo)
82 Provides:       php(filter)
83 Provides:       php(gd)
84 Provides:       php(hash)
85 Provides:       php(hotprofiler)
86 Provides:       php(iconv)
87 Provides:       php(icu_ucsdet)
88 Provides:       php(icu_uspoof)
89 Provides:       php(idn)
90 Provides:       php(imap)
91 Provides:       php(json)
92 Provides:       php(ldap)
93 Provides:       php(mbstring)
94 Provides:       php(mcrypt)
95 Provides:       php(memcache)
96 Provides:       php(memcached)
97 Provides:       php(mysql)
98 Provides:       php(openssl)
99 Provides:       php(pcntl)
100 Provides:       php(pcre)
101 Provides:       php(pdo)
102 Provides:       php(pdo_mysql)
103 Provides:       php(pdo_sqlite)
104 Provides:       php(phar)
105 Provides:       php(posix)
106 Provides:       php(reflection)
107 Provides:       php(server)
108 Provides:       php(session)
109 Provides:       php(simplexml)
110 Provides:       php(soap)
111 Provides:       php(sockets)
112 Provides:       php(spl)
113 Provides:       php(sqlite3)
114 Provides:       php(sysvmsg)
115 Provides:       php(sysvsem)
116 Provides:       php(sysvshm)
117 Provides:       php(thread)
118 Provides:       php(thrift_protocol)
119 Provides:       php(tokenizer)
120 Provides:       php(xhprof)
121 Provides:       php(xml)
122 Provides:       php(xmlreader)
123 Provides:       php(xmlwriter)
124 Provides:       php(zip)
125 Provides:       php(zlib)
126 Obsoletes:      hiphop-php < 2.3.2-0.2
127 ExclusiveArch:  %{x8664}
128 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
129
130 %description
131 HHVM (aka the HipHop Virtual Machine) is a new open-source virtual
132 machine designed for executing programs written in PHP. HHVM uses a
133 just-in-time compilation approach to achieve superior performance
134 while maintaining the flexibility that PHP developers are accustomed
135 to. To date, HHVM (and its predecessor HPHPc before it) has realized
136 over a 9x increase in web request throughput and over a 5x reduction
137 in memory consumption for Facebook compared with the Zend PHP 5.2
138 engine + APC.
139
140 HHVM can be run as a standalone webserver (i.e. without the Apache
141 webserver and the "mod_php" extension). HHVM can also be used together
142 with a FastCGI-based webserver, and work is in progress to make HHVM
143 work smoothly with Apache.
144
145 %package fcgi
146 Summary:        Init script to start HHVM as FastCGI daemon
147 Group:          Development/Languages/PHP
148 Requires:       %{name} = %{version}-%{release}
149 Provides:       php(fcgi)
150 Requires(post,preun):   /sbin/chkconfig
151 Requires:       rc-scripts
152
153 %description fcgi
154 Init script to start HHVM as FastCGI daemon
155
156 %package program
157 Summary:        /usr/bin/php symlink
158 Summary(pl.UTF-8):      Dowiązanie symboliczne /usr/bin/php
159 Group:          Development/Languages/PHP
160 Requires:       %{name} = %{version}-%{release}
161 Obsoletes:      /usr/bin/php
162
163 %description program
164 Package providing /usr/bin/php symlink to PHP CLI.
165
166 %description program -l pl.UTF-8
167 Pakiet dostarczający dowiązanie symboliczne /usr/bin/php do PHP CLI.
168
169 %package devel
170 Summary:        Files for HHVM modules development
171 Group:          Development/Languages/PHP
172 URL:            https://github.com/facebook/hhvm/wiki/Extension-API
173 Requires:       boost-devel >= 1.50
174 Requires:       cmake >= 2.8.5
175 Requires:       glog-devel >= 0.3.2
176 Requires:       libstdc++-devel >= 6:4.3
177 Requires:       tbb-devel >= 4.0.6000
178 Requires:       zlib-devel
179
180 %description devel
181 HHVM provides a set of APIs for adding built-in functionality to the
182 runtime either by way of pure PHP code, or a combination of PHP and
183 C++.
184
185 %prep
186 %setup -q -a1 -a2 -n %{name}-HHVM-%{version}
187
188 mv folly-*/* hphp/submodules/folly
189
190 %patch8 -p1
191 %patch9 -p1
192 %patch10 -p1
193 #%patch5 -p1
194
195 # prefer ones from system
196 rm CMake/FindBISON.cmake
197 rm CMake/FindBoost.cmake
198 rm CMake/FindFLEX.cmake
199 rm CMake/FindFreetype.cmake
200
201 ln -s libevent-1.4.*-stable libevent
202 %{__patch} -d libevent -p1 < hphp/third_party/libevent-1.4.14.fb-changes.diff
203
204 %if 0
205 %patch0 -p1
206 %patch1 -p1
207 #%patch3 -p1
208 %patch4 -p1
209
210 #rm -rf src/third_party/libmbfl
211 #sed -i -e '/add_subdirectory(third_party\/libmbfl)/d' src/CMakeLists.txt
212
213 rm -rf src/third_party/xhp
214 rm -rf src/third_party/libafdt
215 %endif
216
217 %build
218 # build libevent 1.4 with fb patches
219 if [ ! -d libevent/.libs ]; then
220         cd libevent
221         # TODO: should use static linking, but then it fails to detect libraries due missing -lrt
222         %configure \
223                 %{?0:--enable-static} \
224                 %{?0:--disable-shared}
225         %{__make}
226         ln -s .libs lib
227         ln -s . include
228         cd ..
229 fi
230
231 export HPHP_HOME=$(pwd)
232 export HPHP_LIB=$HPHP_HOME/bin
233 install -d $HPHP_LIB
234
235 # asm linking breaks on $CC containing spaces
236 if [[ "%{__cc}" = *ccache* ]]; then
237         cat <<-'EOF' > $HPHP_LIB/gcc
238         #!/bin/sh
239         exec %{__cc} "$@"
240         EOF
241         chmod +x $HPHP_LIB/gcc
242         CC=$HPHP_LIB/gcc
243 fi
244
245 %if 0
246 # out of dir build broken (can't find it's tools)
247 install -d build
248 cd build
249 %endif
250
251 %cmake \
252         -DLIBEVENT_LIB=$HPHP_HOME/libevent/lib/libevent.so \
253         -DLIBEVENT_INCLUDE_DIR=$HPHP_HOME/libevent \
254         -DCMAKE_PREFIX_PATH=%{_prefix} \
255         -DUSE_JEMALLOC=OFF \
256         -DUSE_TCMALLOC=OFF \
257         -DHPHP_NOTEST=ON \
258         ./
259
260 # setup COMPILER_ID/HHVM_REPO_SCHEMA so it doesn't look it up from our package git repo
261 # see hphp/util/generate-buildinfo.sh
262 export COMPILER_ID=HHVM-%{version}-%{release}-%{githash}
263 export HHVM_REPO_SCHEMA=$(date +%N_%s)
264
265 %{__make}
266
267 %install
268 rm -rf $RPM_BUILD_ROOT
269 install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
270 %{__make} install \
271         HPHP_HOME=$(pwd) \
272         DESTDIR=$RPM_BUILD_ROOT
273
274 ln -s hhvm $RPM_BUILD_ROOT%{_bindir}/php
275 ln -s hhvm $RPM_BUILD_ROOT%{_bindir}/hphp
276
277 install -d $RPM_BUILD_ROOT%{_datadir}/%{name}/hdf
278 cp -p hphp/doc/mime.hdf $RPM_BUILD_ROOT%{_datadir}/%{name}/hdf/static.mime-types.hdf
279
280 # install fastcgi initscript
281 install -d $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d}
282 cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-fcgi
283 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-fcgi
284
285 # install our libevent for now
286 install -d $RPM_BUILD_ROOT%{_libdir}
287 libtool --mode=install install -p libevent/libevent.la $RPM_BUILD_ROOT%{_libdir}
288 %{__rm} $RPM_BUILD_ROOT%{_libdir}/libevent.{a,la,so}
289
290 # setup -devel
291 install -d $RPM_BUILD_ROOT%{_datadir}/cmake/Modules
292 cp -a CMake/* $RPM_BUILD_ROOT%{_datadir}/cmake/Modules
293
294 HPHP_HOME=$(pwd)
295 sed -e "
296         /HHVM_INCLUDE_DIRS/ s,$HPHP_HOME,%{_includedir},g
297 " hphp/tools/hphpize/hphpize.cmake > $RPM_BUILD_ROOT%{_datadir}/cmake/Modules/hphpize.cmake
298
299 oIFS=$IFS
300 IFS=";"
301 set -- $(sed -ne 's/set(HHVM_INCLUDE_DIRS "\(.*\)")/\1/p' hphp/tools/hphpize/hphpize.cmake)
302 IFS=$oIFS
303 set -- $(
304         for dir in "$@"; do
305                 [[ "$dir" = $HPHP_HOME/hphp/* ]] && echo $dir
306         done
307 )
308
309 set +x
310 for dir in "$@" \
311         $HPHP_HOME/hphp/runtime \
312         $HPHP_HOME/hphp/util \
313         $HPHP_HOME/hphp/neo \
314         $HPHP_HOME/hphp/system \
315         $HPHP_HOME/hphp/parser \
316 ; do
317         echo "D %{_includedir}${dir#$HPHP_HOME}"
318         find $dir -name '*.h' | while read path; do
319                 file=%{_includedir}${path#$HPHP_HOME}
320                 echo "F $file"
321                 install -Dp $path $RPM_BUILD_ROOT$file
322         done
323 done
324 set -x
325
326 %clean
327 rm -rf $RPM_BUILD_ROOT
328
329 %post   -p /sbin/ldconfig
330 %postun -p /sbin/ldconfig
331
332 %post fcgi
333 /sbin/chkconfig --add %{name}-fcgi
334 %service %{name}-fcgi restart
335
336 %preun fcgi
337 if [ "$1" = "0" ]; then
338         %service -q %{name}-fcgi stop
339         /sbin/chkconfig --del %{name}-fcgi
340 fi
341
342 %files
343 %defattr(644,root,root,755)
344 %doc README.md hphp/NEWS
345 %dir %{_sysconfdir}/%{name}
346 %attr(755,root,root) %{_bindir}/hhvm
347 %attr(755,root,root) %{_bindir}/hphp
348 %attr(755,root,root) %{_libdir}/libevent-1.4.so.*.*.*
349 %ghost %{_libdir}/libevent-1.4.so.2
350
351 %dir %{_datadir}/%{name}
352 %dir %{_datadir}/%{name}/hdf
353 %{_datadir}/%{name}/hdf/static.mime-types.hdf
354
355 %files fcgi
356 %defattr(644,root,root,755)
357 %attr(754,root,root) /etc/rc.d/init.d/%{name}-fcgi
358 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-fcgi
359
360 %files program
361 %defattr(644,root,root,755)
362 %attr(755,root,root) %{_bindir}/php
363
364 %files devel
365 %defattr(644,root,root,755)
366 %attr(755,root,root) %{_bindir}/hphpize
367 %{_includedir}/hphp
368 %{_datadir}/cmake/Modules/ExtZendCompat.cmake
369 %{_datadir}/cmake/Modules/FindCClient.cmake
370 %{_datadir}/cmake/Modules/FindEditline.cmake
371 %{_datadir}/cmake/Modules/FindGlog.cmake
372 %{_datadir}/cmake/Modules/FindICU.cmake
373 %{_datadir}/cmake/Modules/FindLdap.cmake
374 %{_datadir}/cmake/Modules/FindLibAfdt.cmake
375 %{_datadir}/cmake/Modules/FindLibCh.cmake
376 %{_datadir}/cmake/Modules/FindLibDL.cmake
377 %{_datadir}/cmake/Modules/FindLibDwarf.cmake
378 %{_datadir}/cmake/Modules/FindLibElf.cmake
379 %{_datadir}/cmake/Modules/FindLibEvent.cmake
380 %{_datadir}/cmake/Modules/FindLibEvent.cmake.bak
381 %{_datadir}/cmake/Modules/FindLibJpeg.cmake
382 %{_datadir}/cmake/Modules/FindLibNuma.cmake
383 %{_datadir}/cmake/Modules/FindLibPng.cmake
384 %{_datadir}/cmake/Modules/FindLibUODBC.cmake
385 %{_datadir}/cmake/Modules/FindLibVpx.cmake
386 %{_datadir}/cmake/Modules/FindLibXed.cmake
387 %{_datadir}/cmake/Modules/FindLibYaml.cmake
388 %{_datadir}/cmake/Modules/FindLibiconv.cmake
389 %{_datadir}/cmake/Modules/FindLibinotify.cmake
390 %{_datadir}/cmake/Modules/FindLibmemcached.cmake
391 %{_datadir}/cmake/Modules/FindLibpam.cmake
392 %{_datadir}/cmake/Modules/FindMcrypt.cmake
393 %{_datadir}/cmake/Modules/FindMySQL.cmake
394 %{_datadir}/cmake/Modules/FindNcurses.cmake
395 %{_datadir}/cmake/Modules/FindONIGURUMA.cmake
396 %{_datadir}/cmake/Modules/FindPCRE.cmake
397 %{_datadir}/cmake/Modules/FindPThread.cmake
398 %{_datadir}/cmake/Modules/FindReadline.cmake
399 %{_datadir}/cmake/Modules/FindTBB.cmake
400 %{_datadir}/cmake/Modules/FollySetup.cmake
401 %{_datadir}/cmake/Modules/HPHPCompiler.cmake
402 %{_datadir}/cmake/Modules/HPHPFindLibs.cmake
403 %{_datadir}/cmake/Modules/HPHPFunctions.cmake
404 %{_datadir}/cmake/Modules/HPHPSetup.cmake
405 %{_datadir}/cmake/Modules/Options.cmake
406 %{_datadir}/cmake/Modules/hphpize.cmake
This page took 0.055992 seconds and 4 git commands to generate.