-# NOTES
-# - mysqlnd driver doesn't support reconnect: https://bugs.php.net/bug.php?id=52561
-# TODO 7.2:
-# - https://github.com/php/php-src/blob/php-7.2.0/UPGRADING
-# TODO 5.6:
-# - enable --with-fpm-systemd, but ensure it checks for sd_booted()
-# TODO 5.4:
-# - update imap annotations patch (needs api porting)
-# - update imap myrights patch (needs api porting)
-# --with-libmbfl=DIR MBSTRING: Use external libmbfl. DIR is the libmbfl base install directory BUNDLED
-# TODO:
-# - fileinfo extension bundles magic db in library: data_file.c (dump of magic.mgc) is 14M
-# - 2.3M fileinfo.so php54-fileinfo-5.4.6-0.15.x86_64
-# - 2.3M fileinfo.so php-fileinfo-5.3.16-1.x86_64
-# - 13K fileinfo.so php-pecl-fileinfo-1.0.4-8.amd64
-# - ttyname_r() misdetected http://bugs.php.net/bug.php?id=48820
-# - wddx: restore session support (not compiled in due DL extension check)
-# - modularize standard (output from pure php -m)?
-# - some mods should be shared:
-#$ php -m
-# [PHP Modules]
-# Core
-# date
-# libxml
-# Reflection
-# standard
-#
# Conditional build:
# - General options:
%bcond_without embed # disable building Embedded API
%bcond_with gcov # Enable Code coverage reporting
%bcond_without kerberos5 # without Kerberos5 support
-%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 systemtap # systemtap/DTrace support
%bcond_with tests # default off; test process very often hangs on builders, approx run time 45m; perform "make test"
%bcond_with zts # Zend Thread Safety
+%bcond_with debug # Zend Debug Build
# - SAPI
%bcond_without apache2 # disable building Apache 2.x SAPI
%bcond_without cgi # disable CGI/FCGI SAPI
%bcond_without wddx # without WDDX extension module
%bcond_without xmlrpc # without XML-RPC extension module
%bcond_without xsl # without xsl extension module
+%bcond_without zip # without zip extension module
# extensions options
%bcond_without argon2 # argon2 password hashing
%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_without system_gd # system gd
-%bcond_without system_libzip # system libzip
%bcond_without webp # Without WebP support in GD extension (imagecreatefromwebp)
%define apxs1 /usr/sbin/apxs1
%endif
%define orgname php
-%define php_suffix 72
+%define php_suffix 73
Summary: PHP: Hypertext Preprocessor
Summary(fr.UTF-8): Le langage de script embarque-HTML PHP
Summary(pl.UTF-8): Język skryptowy PHP
Summary(ru.UTF-8): PHP Версии 7 - язык препроцессирования HTML-файлов, выполняемый на сервере
Summary(uk.UTF-8): PHP Версії 7 - мова препроцесування HTML-файлів, виконувана на сервері
Name: %{orgname}%{php_suffix}
-Version: 7.2.9
-Release: 4
+Version: 7.3.12
+Release: 1
Epoch: 4
# All files licensed under PHP version 3.01, except
# Zend is licensed under Zend
License: PHP 3.01 and Zend and BSD
Group: Libraries
Source0: http://php.net/distributions/%{orgname}-%{version}.tar.xz
-# Source0-md5: d529efc4017840e3db970b0bc25aef9c
+# Source0-md5: e52a0dc6e7d94024989d0a3746070487
Source1: opcache.ini
Source2: %{orgname}-mod_php.conf
Source3: %{orgname}-cgi-fcgi.ini
Patch3: %{orgname}-link-libs.patch
Patch4: intl-stdc++.patch
Patch5: %{orgname}-filter-shared.patch
-Patch6: %{orgname}-build_modules.patch
Patch7: %{orgname}-sapi-ini-file.patch
Patch8: milter.patch
Patch9: libtool-tag.patch
Patch42: %{orgname}-fpm-shared.patch
Patch43: %{orgname}-silent-session-cleanup.patch
Patch44: %{orgname}-include_path.patch
-Patch47: suhosin.patch
Patch50: extension-shared-optional-dep.patch
Patch51: spl-shared.patch
Patch52: pcre-shared.patch
Patch70: mysqlnd-ssl.patch
Patch71: libdb-info.patch
Patch72: phar-hash-shared.patch
-Patch73: revert-mysql-8-auth-fix.patch
URL: http://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: automake >= 1.4d
BuildRequires: bison
BuildRequires: bzip2-devel >= 1.0.0
-%{?with_curl:BuildRequires: curl-devel >= 7.12.0}
+%{?with_curl:BuildRequires: curl-devel >= 7.15.5}
BuildRequires: cyrus-sasl-devel >= 2
BuildRequires: db-devel >= 4.0
BuildRequires: elfutils-devel
BuildRequires: libtool >= 2:2.4.6
BuildRequires: libxml2-devel >= 1:2.7.6-4
%{?with_xsl:BuildRequires: libxslt-devel >= 1.1.0}
-%{?with_system_libzip:BuildRequires: libzip-devel >= 1.2.0}
+%{?with_zip:BuildRequires: libzip-devel >= 1.3.1}
%{?with_snmp:%{?with_tests:BuildRequires: mibs-net-snmp}}
%{?with_mm:BuildRequires: mm-devel >= 1.3.0}
-%{!?with_pdo_mysql:BuildRequires: mysql-devel}
%{!?with_mysqli:BuildRequires: mysql-devel >= 4.1.13}
+%{!?with_pdo_mysql:BuildRequires: mysql-devel}
%{?with_snmp:BuildRequires: net-snmp-devel >= 5.3}
BuildRequires: oniguruma-devel
%{?with_ldap:BuildRequires: openldap-devel >= 2.3.0}
%endif
%{?with_oci:%{?with_instantclient:BuildRequires: oracle-instantclient-devel}}
BuildRequires: pam-devel
-%{?with_pcre:BuildRequires: pcre-devel >= 8.10}
+%{?with_pcre:BuildRequires: pcre2-8-devel >= 10.30}
BuildRequires: pkgconfig
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: readline-devel
%define _sysconfdir %{php_sysconfdir}
# must be in sync with source. extra check ensuring that it is so is done in %%build
-%define php_api_version 20170718
-%define zend_module_api 20170718
-%define zend_extension_api 320170718
+%define php_api_version 20180731
+%define zend_module_api 20180731
+%define zend_extension_api 320180731
%define php_pdo_api_version 20170320
# Extension versions
-%define bz2ver 1.0
+%define bz2ver %{version}
%define enchantver %{version}
-%define fileinfover 1.0.5
-%define hashver 1.0
-%define intlver 1.1.0
-%define jsonver 1.6.0
-%define pharver 2.0.2
+%define fileinfover %{version}
+%define hashver %{version}
+%define intlver %{version}
+%define jsonver 1.7.0
+%define pharver %{version}
%define sqlite3ver %{version}
-%define zipver 1.15.3
+%define zipver 1.15.4
%define phpdbgver 0.5.0
%define sodiumver %{version}
%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
Provides: php(reflection)
Provides: php(standard)
%{!?with_mysqlnd:Obsoletes: %{name}-mysqlnd}
-%{?with_pcre:%requires_ge_to pcre pcre-devel}
+%{?with_pcre:%requires_ge_to pcre2-8 pcre2-8-devel}
Suggests: browscap
Obsoletes: php-common < 4:5.3.28-7
# withdrawn modules
Requires: autoconf >= 2.13
Requires: automake
Requires: libtool >= 2:2.4.6
-%{?with_pcre:Requires: pcre-devel >= 8.10}
+%{?with_pcre:Requires: pcre2-8-devel >= 10.30}
Requires: shtool
Provides: php-devel = %{epoch}:%{version}-%{release}
+Obsoletes: php-devel
Obsoletes: php-pear-devel
Obsoletes: php4-devel
Obsoletes: php52-devel
Obsoletes: php53-devel
Obsoletes: php54-devel
Obsoletes: php55-devel
+Obsoletes: php56-devel
%description devel
The php-devel package lets you compile dynamic extensions to PHP.
Group: Libraries
URL: http://php.net/manual/en/book.zip.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
-%{?with_system_libzip:Requires: libzip >= 1.2.0}
+%{?with_zip:Requires: libzip >= 1.3.1}
Provides: php(zip) = %{zipver}
Obsoletes: php-pecl-zip < %{zipver}
Obsoletes: php-zip < 4:5.3.28-7
%patch1 -p1
%patch3 -p1
%patch5 -p1
-%patch6 -p1
%patch7 -p1
%{?with_milter:%patch8 -p1}
%patch9 -p1
%endif
%patch43 -p1
%patch44 -p1
-%if %{with suhosin}
-%patch47 -p1
-%endif
%patch50 -p1
%patch51 -p1 -b .spl-shared
%patch52 -p1 -b .pcre-shared
%patch70 -p1
%patch71 -p1
%patch72 -p1 -b .phar-shared
-%patch73 -p1
%{__sed} -i -e '/PHP_ADD_LIBRARY_WITH_PATH/s#xmlrpc,#xmlrpc-epi,#' ext/xmlrpc/config.m4
#%{__rm} -r ext/gd/libgd
#%{__rm} -r ext/mbstring/libmbfl
%{__rm} -r ext/mbstring/oniguruma
-%{__rm} -r ext/pcre/pcrelib
+%{__rm} -r ext/pcre/pcre2lib
#%{__rm} -r ext/soap/interop
%{__rm} -r ext/xmlrpc/libxmlrpc
#%{__rm} -r ext/zip/lib
fi
# Check for some extension version
-ver=$(sed -n '/#define PHP_FILEINFO_VERSION /{s/.* "//;s/".*$//;p}' ext/fileinfo/php_fileinfo.h)
-if test "$ver" != "%{fileinfover}"; then
+ver=$(awk '/#define PHP_FILEINFO_VERSION/ {print $3}' ext/fileinfo/php_fileinfo.h | xargs)
+if test "$ver" != "PHP_VERSION"; then
: Error: Upstream FILEINFO version is now ${ver}, expecting %{fileinfover}.
: Update the fileinfover macro and rebuild.
exit 1
fi
-ver=$(sed -n '/#define PHP_PHAR_VERSION /{s/.* "//;s/".*$//;p}' ext/phar/php_phar.h)
-if test "$ver" != "%{pharver}"; then
+ver=$(awk '/#define PHP_PHAR_VERSION/ {print $3}' ext/phar/php_phar.h | xargs)
+if test "$ver" != "PHP_VERSION"; then
: Error: Upstream PHAR version is now ${ver}, expecting %{pharver}.
: Update the pharver macro and rebuild.
exit 1
fi
ver=$(awk '/#define PHP_SQLITE3_VERSION/ {print $3}' ext/sqlite3/php_sqlite3.h | xargs)
if test "$ver" != "PHP_VERSION"; then
+ : Error: Upstream Sqlite3 version is now ${ver}, expecting %{sqlite3ver}.
+ : Update the sqlite3ver macro and rebuild.
exit 1
fi
ver=$(awk '/#define PHP_SODIUM_VERSION/ {print $3}' ext/sodium/php_libsodium.h | xargs)
: Update the phpdbgver macro and rebuild.
exit 1
fi
-ver=$(sed -rne 's,.*<version>(.+)</version>,\1,p' ext/bz2/package.xml)
-if test "$ver" != "%{bz2ver}"; then
+ver=$(awk '/#define PHP_BZ2_VERSION/ {print $3}' ext/bz2/php_bz2.h | xargs)
+if test "$ver" != "PHP_VERSION"; then
: Error: Upstream BZIP2 version is now ${ver}, expecting %{bz2ver}.
: Update the bz2ver macro and rebuild.
exit 1
exit 1
fi
ver=$(awk '/#define PHP_HASH_VERSION/ {print $3}' ext/hash/php_hash.h | xargs)
-if test "$ver" != "%{hashver}"; then
+if test "$ver" != "PHP_VERSION"; then
: Error: Upstream HASH version is now ${ver}, expecting %{hashver}.
: Update the hashver macro and rebuild.
exit 1
fi
-ver=$(sed -n '/#define PHP_INTL_VERSION /{s/.* "//;s/".*$//;p}' ext/intl/php_intl.h)
-if test "$ver" != "%{intlver}"; then
+ver=$(awk '/#define PHP_INTL_VERSION/ {print $3}' ext/intl/php_intl.h | xargs)
+if test "$ver" != "PHP_VERSION"; then
: Error: Upstream Intl version is now ${ver}, expecting %{intlver}.
: Update the intlver macro and rebuild.
exit 1
export CPPFLAGS="-DDEBUG_FASTCGI -DHAVE_STRNDUP %{rpmcppflags} \
-I%{_includedir}/xmlrpc-epi"
+# This should be detected by configure and set there,
+# but looks like the build system is hosed on 7.3
+export CXXFLAGS="%{rpmcxxflags} -fPIC -DPIC"
+export CFLAGS="%{rpmcflags} -fPIC -DPIC"
+
+%if %{with intl}
+# icu 59+ C++ API requires C++ >= 11
+CXXFLAGS="$CXXFLAGS -std=c++11"
+%endif
+
sapis="
cli
%if %{with cgi}
--with-config-file-scan-dir=%{_sysconfdir}/conf.d \
--with-system-tzdata \
%{?with_argon2:--with-password-argon2} \
- --%{!?debug:dis}%{?debug:en}able-debug \
+ --%{!?with_debug:dis}%{?with_debug:en}able-debug \
%{?with_zts:--enable-maintainer-zts} \
--enable-inline-optimization \
%{__enable_disable bcmath bcmath shared} \
%{?with_xsl:--with-xsl=shared} \
--with-zlib=shared \
--with-zlib-dir=shared,/usr \
- %{?with_system_libzip:--with-libzip} \
- --enable-zip=shared,/usr \
+ %{?with_zip:--enable-zip=shared,/usr --with-libzip} \
# save for debug
cp -f Makefile Makefile.$sapi
[ "$mod" = "spl" ] && conf="SPL.ini"
# session needs to be loaded before php-pecl-http, php-pecl-memcache, php-pecl-session_mysql
[ "$mod" = "session" ] && conf="Session.ini"
+ # hash needs to be loaded before mysqlnd
+ [ "$mod" = "hash" ] && conf="hash.ini"
# mysqlnd needs to be loaded before mysqli,pdo_mysqli
[ "$mod" = "mysqlnd" ] && conf="MySQLND.ini"
echo "+ $conf"
%files devel
%defattr(644,root,root,755)
-%doc CODING_STANDARDS README.{EXT_SKEL,PARAMETER_PARSING_API,SELF-CONTAINED-EXTENSIONS,STREAMS,SUBMITTING_PATCH,TESTING,TESTING2,UNIX-BUILD-SYSTEM,input_filter}
+%doc CODING_STANDARDS README.{EXT_SKEL,PARAMETER_PARSING_API,SELF-CONTAINED-EXTENSIONS,STREAMS,SUBMITTING_PATCH,TESTING,UNIX-BUILD-SYSTEM,input_filter}
%attr(755,root,root) %{_bindir}/phpize%{php_suffix}
%attr(755,root,root) %{_bindir}/php-config%{php_suffix}
%ghost %{_bindir}/phpize
%if %{with dom}
%files dom
%defattr(644,root,root,755)
-%doc ext/dom/{CREDITS,TODO}
-%doc ext/dom/examples
+%doc ext/dom/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/dom.ini
%attr(755,root,root) %{php_extensiondir}/dom.so
%endif
%if %{with enchant}
%files enchant
%defattr(644,root,root,755)
-%doc ext/enchant/{CREDITS,docs/examples}
+%doc ext/enchant/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/enchant.ini
%attr(755,root,root) %{php_extensiondir}/enchant.so
%endif
%if %{with filter}
%files filter
%defattr(644,root,root,755)
-%doc ext/filter/{CREDITS,docs/*}
+%doc ext/filter/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/filter.ini
%attr(755,root,root) %{php_extensiondir}/filter.so
%endif
%if %{with gmp}
%files gmp
%defattr(644,root,root,755)
-%doc ext/gmp/{CREDITS,README,TODO}
+%doc ext/gmp/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/gmp.ini
%attr(755,root,root) %{php_extensiondir}/gmp.so
%endif
%if %{with intl}
%files intl
%defattr(644,root,root,755)
-%doc ext/intl/{CREDITS,TODO}
+%doc ext/intl/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/intl.ini
%attr(755,root,root) %{php_extensiondir}/intl.so
%endif
%if %{with mbstring}
%files mbstring
%defattr(644,root,root,755)
-%doc ext/mbstring/{CREDITS,README*}
+%doc ext/mbstring/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mbstring.ini
%attr(755,root,root) %{php_extensiondir}/mbstring.so
%endif
%if %{with mysqli}
%files mysqli
%defattr(644,root,root,755)
-%doc ext/mysqli/{CREDITS,TODO}
+%doc ext/mysqli/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mysqli.ini
%attr(755,root,root) %{php_extensiondir}/mysqli.so
%endif
%if %{with pdo}
%files pdo
%defattr(644,root,root,755)
-%doc ext/pdo/{CREDITS,README,TODO}
+%doc ext/pdo/{CREDITS,README}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo.ini
%attr(755,root,root) %{php_extensiondir}/pdo.so
%endif
%if %{with phar}
%files phar
%defattr(644,root,root,755)
-%doc ext/phar/{CREDITS,TODO}
+%doc ext/phar/CREDITS
%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%{php_suffix}.phar
%files simplexml
%defattr(644,root,root,755)
%doc ext/simplexml/{CREDITS,README}
-%doc ext/simplexml/examples
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/simplexml.ini
%attr(755,root,root) %{php_extensiondir}/simplexml.so
%files soap
%defattr(644,root,root,755)
-%doc ext/soap/{CREDITS,TODO*}
+%doc ext/soap/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/soap.ini
%attr(755,root,root) %{php_extensiondir}/soap.so
%files spl
%defattr(644,root,root,755)
-%doc ext/spl/{CREDITS,README,TODO}
-%doc ext/spl/examples
+%doc ext/spl/{CREDITS,README,examples}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/SPL.ini
%attr(755,root,root) %{php_extensiondir}/spl.so
%if %{with tidy}
%files tidy
%defattr(644,root,root,755)
-%doc ext/tidy/{CREDITS,README}
-%doc ext/tidy/examples
+%doc ext/tidy/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/tidy.ini
%attr(755,root,root) %{php_extensiondir}/tidy.so
%endif
%files xmlreader
%defattr(644,root,root,755)
-%doc ext/xmlreader/{CREDITS,README,TODO}
-%doc ext/xmlreader/examples
+%doc ext/xmlreader/{CREDITS,README}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xmlreader.ini
%attr(755,root,root) %{php_extensiondir}/xmlreader.so
%files xmlwriter
%defattr(644,root,root,755)
-%doc ext/xmlwriter/{CREDITS,TODO}
-%doc ext/xmlwriter/examples
+%doc ext/xmlwriter/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xmlwriter.ini
%attr(755,root,root) %{php_extensiondir}/xmlwriter.so
%attr(755,root,root) %{php_extensiondir}/xsl.so
%endif
+%if %{with zip}
%files zip
%defattr(644,root,root,755)
-%doc ext/zip/{CREDITS,TODO}
-%doc ext/zip/examples
+%doc ext/zip/{CREDITS,examples}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/zip.ini
%attr(755,root,root) %{php_extensiondir}/zip.so
+%endif
%files zlib
%defattr(644,root,root,755)