# Reflection
#
# Conditional build:
-%bcond_with interbase_inst # use InterBase install., not Firebird (BR: proprietary libs)
-%bcond_with oci # with Oracle oci8 extension module (BR: proprietary libs)
-%bcond_without instantclient # build Oracle oci8 extension module against oracle-instantclient package
-%bcond_with system_gd # with system gd (we prefer internal since it enables few more features)
-%bcond_with system_libzip # with system libzip (reported broken currently)
-%bcond_with default_php # use this PHP as default PHP in distro
+# - packaging options
+%bcond_without alternatives # use alternatives system to select default phar and php-fpm
+%bcond_with default_php # build this PHP as default PHP in system (disables alternatives)
+# - General options:
+%bcond_without embed # disable building Embedded API
+%bcond_with gcov # Enable Code coverage reporting
+%bcond_without kerberos5 # without Kerberos5 support
+%bcond_with lfs # Build with FILE_OFFSET_BITS=64
+%bcond_with suhosin # with suhosin patch, has little point in PHP>=5.3, see https://github.com/stefanesser/suhosin/issues/42#issuecomment-41728178
+%bcond_with tests # default off; test process very often hangs on builders, approx run time 45m; perform "make test"
+%bcond_with type_hints # experimental support for strict typing/casting
+%bcond_with zts # Zend Thread Safety
+%bcond_with debug # Zend Debug Build
+# - SAPI
+%bcond_without apache1 # disable building Apache 1.3.x SAPI
+%bcond_without apache2 # disable building Apache 2.x SAPI
+%bcond_without cgi # disable CGI/FCGI SAPI
+%bcond_without fpm # disable FPM SAPI
+%bcond_without litespeed # build litespeed SAPI
+# - Extensions
+%bcond_without bcmath # without bcmath extension module
+%bcond_without bz2 # without bz2 extension module
+%bcond_without calendar # without calendar extension module
+%bcond_without ctype # without ctype extension module
%bcond_without curl # without CURL extension module
%bcond_without filter # without filter extension module
%bcond_without enchant # without Enchant extension module
%bcond_without imap # without IMAP extension module
%bcond_without interbase # without InterBase extension module
-%bcond_without kerberos5 # without Kerberos5 support
-%bcond_without litespeed # build litespeed module
+%bcond_without intl # without Intl extension module
%bcond_without ldap # without LDAP extension module
%bcond_without mhash # without mhash extension (supported by hash extension)
-%bcond_with mm # without mm support for session storage
%bcond_without mssql # without MS SQL extension module
%bcond_with mysqlnd # with mysqlnd support in mysql related extensions
%bcond_without mysqli # without mysqli support (Requires mysql > 4.1)
+%bcond_with oci # with Oracle oci8 extension module (BR: proprietary libs)
%bcond_without odbc # without ODBC extension module
%bcond_without openssl # without OpenSSL support and OpenSSL extension (module)
%bcond_without pcre # without PCRE extension module
%bcond_without tidy # without Tidy extension module
%bcond_without wddx # without WDDX extension module
%bcond_without xmlrpc # without XML-RPC extension module
-%bcond_without apache1 # disable building Apache 1.3.x SAPI
-%bcond_without apache2 # disable building Apache 2.x SAPI
-%bcond_with zts # Zend Thread Safety
-%bcond_with lfs # Build with FILE_OFFSET_BITS=64
-%bcond_without cgi # disable CGI/FCGI SAPI
-%bcond_without fpm # disable FPM
-%bcond_without embed # disable Embedded API
-%bcond_without alternatives # disable alternatives support
-%bcond_with suhosin # with suhosin patch
-%bcond_with tests # default off; test process very often hangs on builders, approx run time 45m; perform "make test"
-%bcond_with gcov # Enable Code coverage reporting
-%bcond_with type_hints # experimental support for strict typing/casting
+# extensions options
+%bcond_without instantclient # build Oracle oci8 extension module against oracle-instantclient package
+%bcond_with interbase_inst # use InterBase install., not Firebird (BR: proprietary libs)
+%bcond_with mm # without mm support for session storage
+%bcond_with system_gd # with system gd (imageantialias function is missing then)
+%bcond_with system_libzip # with system libzip (reported broken currently)
%define apxs1 /usr/sbin/apxs1
%define apxs2 /usr/sbin/apxs
%undefine with_lfs
%endif
+%if %{with default_php}
+%undefine with_alternatives
+%endif
+
# mm is not thread safe
%if %{with zts}
%undefine with_mm
%undefine with_alternatives
%endif
-%define rel 26
+%define rel 49
%define orgname php
%define ver_suffix 53
%define php_suffix %{!?with_default_php:%{ver_suffix}}
# Patch71-md5: 771e4934132c5f5c968248c954d1ef6e
Patch72: x32-suhosin.patch
Patch73: php-bug-68486.patch
+Patch74: mysqli-err.patch
+Patch75: openssl.patch
+Patch76: php-bug-61930.patch
+Patch77: php-icu64.patch
# Fixes for security bugs
# https://repo.webtatic.com/yum/centos/5/SRPMS/repoview/php.html
# also from RHEL6/CentOS7
URL: http://www.php.net/
%{?with_interbase:%{!?with_interbase_inst:BuildRequires: Firebird-devel >= 1.0.2.908-2}}
%{?with_pspell:BuildRequires: aspell-devel >= 2:0.50.0}
+BuildRequires: apache-base
BuildRequires: autoconf >= 2.53
BuildRequires: automake >= 1.4d
BuildRequires: bison
%{?with_enchant:BuildRequires: enchant-devel >= 1.1.3}
BuildRequires: file
%{?with_kerberos5:BuildRequires: heimdal-devel}
+BuildRequires: libatomic-devel
%{?with_system_libzip:BuildRequires: libzip-devel >= 0.10-3}
BuildRequires: mysql-devel
BuildRequires: pkgconfig
+BuildRequires: re2c
BuildRequires: sed >= 4.0
%if %{with mssql} || %{with sybase_ct}
BuildRequires: freetds-devel >= 0.82
%define zipver 1.11.0
%define zend_zts %{!?with_zts:0}%{?with_zts:1}
-%define php_debug %{!?debug:0}%{?debug:1}
+%define php_debug %{!?with_debug:0}%{?with_debug:1}
%if %{with gcov}
%undefine with_ccache
PHP jako moduł DSO (Dynamic Shared Object) dla Apache 1.3.x.
%package -n apache-mod_%{name}
-Summary: PHP DSO module for Apache 2.x
-Summary(pl.UTF-8): Moduł DSO (Dynamic Shared Object) PHP dla Apache 2.x
+Summary: PHP support for Apache 2.x
+Summary(pl.UTF-8): Wsparcie PHP dla Apache 2.x
Group: Development/Languages/PHP
+Requires: apache-mod_%{name}-core = %{epoch}:%{version}-%{release}
Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Requires: apache(modules-api) = %{apache_modules_api}
-Requires: apache-mod_mime
Provides: webserver(php) = %{version}
Obsoletes: apache-mod_php < 4:5.3.28-7
Obsoletes: phpfi
%description -n apache-mod_%{name}
-PHP as DSO module for Apache 2.x.
+PHP support for Apache 2.x.
%description -n apache-mod_%{name} -l pl.UTF-8
+Wsparcie PHP dla Apache 2.x.
+
+%package -n apache-mod_%{name}-core
+Summary: PHP DSO module for Apache 2.x
+Summary(pl.UTF-8): Moduł DSO (Dynamic Shared Object) PHP dla Apache 2.x
+Group: Development/Languages/PHP
+Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: apache(modules-api) = %{apache_modules_api}
+Requires: apache-mod_mime
+
+%description -n apache-mod_%{name}-core
+PHP as DSO module for Apache 2.x.
+
+%description -n apache-mod_%{name}-core -l pl.UTF-8
PHP jako moduł DSO (Dynamic Shared Object) dla Apache 2.x.
%package litespeed
Requires(pre): /bin/id
Requires(pre): /usr/sbin/useradd
Requires: %{name}-common = %{epoch}:%{version}-%{release}
+%{?with_alternatives:Requires: alternatives}
+Requires: php-dirs >= 1.4-2
Requires: rc-scripts
Provides: php(fcgi)
Provides: php(fpm)
Obsoletes: php55-devel
Obsoletes: php56-devel
Obsoletes: php70-devel
+Obsoletes: php71-devel
+Obsoletes: php72-devel
+Obsoletes: php73-devel
%description devel
The php-devel package lets you compile dynamic extensions to PHP.
URL: http://www.php.net/manual/en/ref.pdo-dblib.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
-Provides: php(dblib)
+Provides: php(pdo_dblib)
Obsoletes: php-pdo-dblib < 4:5.3.28-7
%description pdo-dblib
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
Provides: php(pdo-firebird)
+Provides: php(pdo_firebird)
Obsoletes: php-pdo-firebird < 4:5.3.28-7
Obsoletes: php-pecl-PDO_FIREBIRD
%{?with_mysqlnd:Requires: %{name}-mysqlnd = %{epoch}:%{version}-%{release}}
Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
Provides: php(pdo-mysql)
+Provides: php(pdo_mysql)
Obsoletes: php-pdo-mysql < 4:5.3.28-7
Obsoletes: php-pecl-PDO_MYSQL
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
Provides: php(pdo-oci)
+Provides: php(pdo_oci)
Obsoletes: php-pdo-oci < 4:5.3.28-7
Obsoletes: php-pecl-PDO_OCI
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
Provides: php(pdo-odbc)
+Provides: php(pdo_odbc)
Obsoletes: php-pdo-odbc < 4:5.3.28-7
Obsoletes: php-pecl-PDO_ODBC
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
Provides: php(pdo-pgsql)
-Provides: php-pecl-PDO_PGSQL = 4:5.3.28-7
+Provides: php(pdo_pgsql)
Obsoletes: php-pdo-pgsql < 4:5.3.28-7
Obsoletes: php-pecl-PDO_PGSQL < 4:5.2.1-2
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
Provides: php(pdo-sqlite)
+Provides: php(pdo_sqlite)
Obsoletes: php-pdo-sqlite < 4:5.3.28-7
Obsoletes: php-pecl-PDO_SQLITE
%patch70 -p1
%patch71 -p1
%patch73 -p1
+%patch74 -p1
+%patch75 -p1
+%patch76 -p1
+%patch77 -p1
%patch220 -p1
%patch257 -p1
%patch258 -p1
-sed -i -e '/PHP_ADD_LIBRARY_WITH_PATH/s#xmlrpc,#xmlrpc-epi,#' ext/xmlrpc/config.m4
+%{__sed} -i -e '/PHP_ADD_LIBRARY_WITH_PATH/s#xmlrpc,#xmlrpc-epi,#' ext/xmlrpc/config.m4
# cleanup backups after patching
find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
# disable broken tests
# says just "Terminated" twice and fails
-mv sapi/cli/tests/022.phpt{,.broken}
+%{__mv} sapi/cli/tests/022.phpt{,.broken}
# php-5.3.3/ext/standard/tests/file/statpage.phpt
%{__rm} ext/standard/tests/file/statpage.phpt
touch _built-conf
fi
export PROG_SENDMAIL="/usr/lib/sendmail"
-export CPPFLAGS="-DDEBUG_FASTCGI -DHAVE_STRNDUP %{rpmcppflags} -I%{_includedir}/xmlrpc-epi"
+export CPPFLAGS="-DDEBUG_FASTCGI -DHAVE_STRNDUP -DOPENSSL_NO_SSL2=1 -DOPENSSL_NO_SSL3=1 %{rpmcppflags} -I%{_includedir}/xmlrpc-epi"
%if %{with lfs}
CPPFLAGS="$CPPFLAGS $(getconf LFS_CFLAGS)"
%endif
esac
%configure \
+ EXTRA_LDFLAGS="%{rpmldflags}" \
$sapi_args \
%if "%{!?configure_cache:0}%{?configure_cache}" == "0"
--cache-file=config.cache \
--with-config-file-scan-dir=%{_sysconfdir}/conf.d \
--with-exec-dir=%{_bindir} \
--with-system-tzdata \
- --%{!?debug:dis}%{?debug:en}able-debug \
+ --%{!?with_debug:dis}%{?with_debug:en}able-debug \
%{?with_zts:--enable-maintainer-zts} \
--enable-inline-optimization \
--enable-bcmath=shared \
phpbuilddir=%{_libdir}/%{name}/build \
INSTALL_ROOT=$RPM_BUILD_ROOT
+%if %{without default_php}
# version the .phar files
-mv $RPM_BUILD_ROOT%{_bindir}/phar{,%{ver_suffix}}.phar
+%{__mv} $RPM_BUILD_ROOT%{_bindir}/phar{,%{php_suffix}}.phar
+%endif
%if %{with alternatives}
# touch for ghost
%{__rm} $RPM_BUILD_ROOT%{_bindir}/phar
touch $RPM_BUILD_ROOT%{_bindir}/phar
%else
# make link relative
-ln -sfn phar%{ver_suffix}.phar $RPM_BUILD_ROOT%{_bindir}/phar
+ln -sfn phar%{php_suffix}.phar $RPM_BUILD_ROOT%{_bindir}/phar
%endif
# version suffix
# install Apache1 DSO module
%if %{with apache1}
libtool --mode=install install -p sapi/apache/libphp5.la $RPM_BUILD_ROOT%{_libdir}/apache1
-mv $RPM_BUILD_ROOT%{_libdir}/apache1/libphp5{,-$v}.so
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/apache1/libphp5{,-$v}.so
ln -s libphp5-$v.so $RPM_BUILD_ROOT%{_libdir}/apache1/mod_php.so
%endif
# install Apache2 DSO module
%if %{with apache2}
libtool --mode=install install -p sapi/apache2handler/libphp5.la $RPM_BUILD_ROOT%{_libdir}/apache
-mv $RPM_BUILD_ROOT%{_libdir}/apache/libphp5{,-$v}.so
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/apache/libphp5{,-$v}.so
ln -s libphp5-$v.so $RPM_BUILD_ROOT%{_libdir}/apache/mod_php.so
%endif
%{__sed} -i -e '/su/d' $RPM_BUILD_ROOT/etc/logrotate.d/%{name}-fpm
%endif
+%if %{with alternatives}
+# touch for ghost for alternatives
+touch $RPM_BUILD_ROOT%{_sbindir}/php-fpm
+%endif
+
%{__sed} -i -e '
s#/usr/lib/php#%{php_extensiondir}#
s#/etc/php#%{_sysconfdir}#
install -d $RPM_BUILD_ROOT%{_sysconfdir}/{cgi-fcgi,cli,apache,apache2handler}.d
# for CLI SAPI only
-mv $RPM_BUILD_ROOT%{_sysconfdir}/{conf.d/readline.ini,cli.d}
+%{__mv} $RPM_BUILD_ROOT%{_sysconfdir}/{conf.d/readline.ini,cli.d}
# use system automake and {lib,sh}tool
ln -snf /usr/share/automake/config.{guess,sub} $RPM_BUILD_ROOT%{_libdir}/%{name}/build
%post fpm
/sbin/chkconfig --add %{name}-fpm
%service %{name}-fpm restart
+%if %{with alternatives}
+update-alternatives --install %{_sbindir}/php-fpm php-fpm %{_sbindir}/php%{ver_suffix}-fpm %{ver_suffix} || :
+%endif
%preun fpm
if [ "$1" = "0" ]; then
%service %{name}-fpm stop
/sbin/chkconfig --del %{name}-fpm
+%if %{with alternatives}
+ update-alternatives --remove php-fpm %{_sbindir}/php-fpm || :
+%endif
fi
%postun fpm
%post embedded -p /sbin/ldconfig
%postun embedded -p /sbin/ldconfig
-%post common
+%posttrans common
# PHP 5.3 requires timezone being setup, try setup it from tzdata
if ! grep -q '^date.timezone[[:space:]]*=' %{_sysconfdir}/php.ini && [ -f /etc/sysconfig/timezone ]; then
TIMEZONE=
fi
fi
-%posttrans common
# minimizing apache restarts logics. we restart webserver:
#
# 1. at the end of transaction. (posttrans, feature from rpm 4.4.2)
%files -n apache-mod_%{name}
%defattr(644,root,root,755)
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/httpd/conf.d/*_mod_php.conf
+%attr(755,root,root) %{_libdir}/apache/mod_php.so
+
+%files -n apache-mod_%{name}-core
+%defattr(644,root,root,755)
%dir %{_sysconfdir}/apache2handler.d
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-apache2handler.ini
-%attr(755,root,root) %{_libdir}/apache/mod_php.so
%attr(755,root,root) %{_libdir}/apache/libphp5-*.*.so
%endif
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-fpm.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fpm.d/www.conf
%attr(755,root,root) %{_sbindir}/%{name}-fpm
+%if %{with alternatives}
+%ghost %{_sbindir}/php-fpm
+%endif
%{_mandir}/man8/%{name}-fpm.8*
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}-fpm
%attr(754,root,root) /etc/rc.d/init.d/%{name}-fpm
%doc ext/phar/{CREDITS,TODO}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/phar.ini
%attr(755,root,root) %{php_extensiondir}/phar.so
-%attr(755,root,root) %{_bindir}/phar%{ver_suffix}.phar
-%{?with_alternatives:%ghost} %{_bindir}/phar
+%attr(755,root,root) %{_bindir}/phar%{php_suffix}.phar
+%if %{with alternatives}
+%ghost %{_bindir}/phar
+%else
+%attr(755,root,root) %{_bindir}/phar
+%endif
%endif
%files posix